From 8515ff9587bfb5a741f61f5ffbfdf3e3626a8bfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20N=C3=B6thlich?= Date: Wed, 11 Sep 2019 19:08:46 +0200 Subject: [PATCH] Sync plugins from current page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adrian Nöthlich --- wp-content/plugins/PT-kandidaten | 1 + .../plugins/advanced-custom-fields/README.md | 25 + .../plugins/advanced-custom-fields/acf.php | 680 + .../assets/build/css/_dark.scss | 437 + .../assets/build/css/_field-group.scss | 600 + .../assets/build/css/_fields.scss | 2778 +++ .../assets/build/css/_forms.scss | 306 + .../assets/build/css/_global.scss | 1812 ++ .../assets/build/css/_gutenberg.scss | 123 + .../assets/build/css/_input.scss | 61 + .../assets/build/css/_media.scss | 505 + .../assets/build/css/_mixins.scss | 39 + .../assets/build/css/_postbox.scss | 50 + .../assets/build/css/_variables.scss | 24 + .../assets/build/css/acf-dark.scss | 1 + .../assets/build/css/acf-field-group.scss | 3 + .../assets/build/css/acf-global.scss | 3 + .../assets/build/css/acf-input.scss | 7 + .../assets/build/images/acf-logo.psd | Bin 0 -> 65312 bytes .../assets/build/js/_acf-compatibility.js | 761 + .../assets/build/js/_acf-condition-types.js | 447 + .../assets/build/js/_acf-condition.js | 249 + .../assets/build/js/_acf-conditions.js | 306 + .../assets/build/js/_acf-field-accordion.js | 232 + .../build/js/_acf-field-button-group.js | 45 + .../assets/build/js/_acf-field-checkbox.js | 97 + .../build/js/_acf-field-color-picker.js | 64 + .../assets/build/js/_acf-field-date-picker.js | 157 + .../build/js/_acf-field-date-time-picker.js | 99 + .../assets/build/js/_acf-field-file.js | 120 + .../assets/build/js/_acf-field-google-map.js | 553 + .../assets/build/js/_acf-field-image.js | 198 + .../assets/build/js/_acf-field-link.js | 191 + .../assets/build/js/_acf-field-oembed.js | 163 + .../assets/build/js/_acf-field-page-link.js | 9 + .../assets/build/js/_acf-field-post-object.js | 9 + .../assets/build/js/_acf-field-radio.js | 68 + .../assets/build/js/_acf-field-range.js | 42 + .../build/js/_acf-field-relationship.js | 380 + .../assets/build/js/_acf-field-select.js | 57 + .../assets/build/js/_acf-field-tab.js | 505 + .../assets/build/js/_acf-field-taxonomy.js | 321 + .../assets/build/js/_acf-field-time-picker.js | 77 + .../assets/build/js/_acf-field-true-false.js | 95 + .../assets/build/js/_acf-field-url.js | 64 + .../assets/build/js/_acf-field-user.js | 9 + .../assets/build/js/_acf-field-wysiwyg.js | 102 + .../assets/build/js/_acf-field.js | 524 + .../assets/build/js/_acf-fields.js | 372 + .../assets/build/js/_acf-helpers.js | 361 + .../assets/build/js/_acf-hooks.js | 252 + .../assets/build/js/_acf-media.js | 832 + .../assets/build/js/_acf-model.js | 908 + .../assets/build/js/_acf-notice.js | 146 + .../assets/build/js/_acf-panel.js | 34 + .../assets/build/js/_acf-popup.js | 121 + .../assets/build/js/_acf-postbox.js | 212 + .../assets/build/js/_acf-screen.js | 593 + .../assets/build/js/_acf-select2.js | 793 + .../assets/build/js/_acf-tinymce.js | 398 + .../assets/build/js/_acf-tooltip.js | 324 + .../assets/build/js/_acf-unload.js | 62 + .../assets/build/js/_acf-validation.js | 1006 + .../assets/build/js/_acf.js | 2188 ++ .../build/js/_field-group-compatibility.js | 281 + .../build/js/_field-group-conditions.js | 403 + .../assets/build/js/_field-group-field.js | 808 + .../assets/build/js/_field-group-fields.js | 468 + .../assets/build/js/_field-group-locations.js | 104 + .../assets/build/js/_field-group-settings.js | 248 + .../assets/build/js/_field-group.js | 182 + .../assets/build/js/acf-field-group.js | 7 + .../assets/build/js/acf-field-group.min.js | 7 + .../assets/build/js/acf-input.js | 45 + .../assets/build/js/acf-input.min.js | 45 + .../assets/css/acf-dark.css | 1 + .../assets/css/acf-field-group.css | 1 + .../assets/css/acf-global.css | 1 + .../assets/css/acf-input.css | 1 + .../assets/font/LICENSE.txt | 48 + .../assets/font/README.txt | 75 + .../assets/font/acf.eot | Bin 0 -> 8212 bytes .../assets/font/acf.svg | 48 + .../assets/font/acf.ttf | Bin 0 -> 8064 bytes .../assets/font/acf.woff | Bin 0 -> 5008 bytes .../assets/font/acf.woff2 | Bin 0 -> 4160 bytes .../assets/font/config.json | 124 + .../assets/images/acf-logo.png | Bin 0 -> 3478 bytes .../assets/images/spinner.gif | Bin 0 -> 4777 bytes .../assets/images/spinner@2x.gif | Bin 0 -> 8654 bytes .../ui-bg_highlight-soft_0_ffffff_1x100.png | Bin 0 -> 84 bytes .../images/ui-icons_444444_256x240.png | Bin 0 -> 3771 bytes .../images/ui-icons_DDDDDD_256x240.png | Bin 0 -> 3771 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 3771 bytes .../assets/inc/datepicker/jquery-ui.css | 650 + .../assets/inc/datepicker/jquery-ui.min.css | 7 + .../assets/inc/select2/3/select2-spinner.gif | Bin 0 -> 1434 bytes .../assets/inc/select2/3/select2.css | 704 + .../assets/inc/select2/3/select2.js | 3541 +++ .../assets/inc/select2/3/select2.min.js | 23 + .../assets/inc/select2/3/select2.png | Bin 0 -> 525 bytes .../assets/inc/select2/3/select2x2.png | Bin 0 -> 653 bytes .../assets/inc/select2/4/select2.css | 484 + .../assets/inc/select2/4/select2.full.js | 6436 ++++++ .../assets/inc/select2/4/select2.full.min.js | 3 + .../assets/inc/select2/4/select2.js | 5725 +++++ .../assets/inc/select2/4/select2.min.css | 1 + .../assets/inc/select2/4/select2.min.js | 3 + .../timepicker/jquery-ui-timepicker-addon.css | 30 + .../timepicker/jquery-ui-timepicker-addon.js | 2295 ++ .../jquery-ui-timepicker-addon.min.css | 5 + .../jquery-ui-timepicker-addon.min.js | 2 + .../assets/js/acf-field-group.js | 2508 +++ .../assets/js/acf-field-group.min.js | 1 + .../assets/js/acf-input.js | 14636 ++++++++++++ .../assets/js/acf-input.min.js | 4 + .../includes/acf-data-functions.php | 106 + .../includes/acf-field-functions.php | 1571 ++ .../includes/acf-field-group-functions.php | 1068 + .../includes/acf-form-functions.php | 163 + .../includes/acf-helper-functions.php | 365 + .../includes/acf-hook-functions.php | 220 + .../includes/acf-input-functions.php | 472 + .../includes/acf-meta-functions.php | 439 + .../includes/acf-post-functions.php | 34 + .../includes/acf-user-functions.php | 116 + .../includes/acf-utility-functions.php | 158 + .../includes/acf-value-functions.php | 326 + .../includes/admin/admin-field-group.php | 838 + .../includes/admin/admin-field-groups.php | 830 + .../includes/admin/admin-notices.php | 146 + .../includes/admin/admin-tools.php | 354 + .../includes/admin/admin-upgrade.php | 225 + .../includes/admin/admin.php | 89 + .../includes/admin/settings-info.php | 102 + .../tools/class-acf-admin-tool-export.php | 596 + .../tools/class-acf-admin-tool-import.php | 157 + .../admin/tools/class-acf-admin-tool.php | 195 + .../field-group-field-conditional-logic.php | 158 + .../admin/views/field-group-field.php | 184 + .../admin/views/field-group-fields.php | 52 + .../admin/views/field-group-locations.php | 45 + .../admin/views/field-group-options.php | 155 + .../views/html-admin-page-upgrade-network.php | 216 + .../admin/views/html-admin-page-upgrade.php | 119 + .../includes/admin/views/html-admin-tools.php | 27 + .../admin/views/html-location-group.php | 25 + .../admin/views/html-location-rule.php | 91 + .../admin/views/html-notice-upgrade.php | 43 + .../includes/admin/views/settings-addons.php | 54 + .../includes/admin/views/settings-info.php | 160 + .../ajax/class-acf-ajax-check-screen.php | 98 + .../includes/ajax/class-acf-ajax-upgrade.php | 54 + .../ajax/class-acf-ajax-user-setting.php | 41 + .../includes/ajax/class-acf-ajax.php | 184 + .../includes/api/api-helpers.php | 4848 ++++ .../includes/api/api-template.php | 1539 ++ .../includes/api/api-term.php | 501 + .../includes/assets.php | 482 + .../includes/class-acf-data.php | 354 + .../includes/compatibility.php | 484 + .../includes/deprecated.php | 149 + .../includes/fields.php | 378 + .../fields/class-acf-field-accordion.php | 167 + .../fields/class-acf-field-button-group.php | 292 + .../fields/class-acf-field-checkbox.php | 572 + .../fields/class-acf-field-color_picker.php | 148 + .../fields/class-acf-field-date_picker.php | 276 + .../class-acf-field-date_time_picker.php | 257 + .../includes/fields/class-acf-field-email.php | 161 + .../includes/fields/class-acf-field-file.php | 438 + .../fields/class-acf-field-google-map.php | 314 + .../includes/fields/class-acf-field-group.php | 706 + .../includes/fields/class-acf-field-image.php | 429 + .../includes/fields/class-acf-field-link.php | 287 + .../fields/class-acf-field-message.php | 198 + .../fields/class-acf-field-number.php | 304 + .../fields/class-acf-field-oembed.php | 320 + .../fields/class-acf-field-output.php | 77 + .../fields/class-acf-field-page_link.php | 663 + .../fields/class-acf-field-password.php | 104 + .../fields/class-acf-field-post_object.php | 603 + .../includes/fields/class-acf-field-radio.php | 491 + .../includes/fields/class-acf-field-range.php | 214 + .../fields/class-acf-field-relationship.php | 786 + .../fields/class-acf-field-select.php | 637 + .../fields/class-acf-field-separator.php | 91 + .../includes/fields/class-acf-field-tab.php | 164 + .../fields/class-acf-field-taxonomy.php | 992 + .../includes/fields/class-acf-field-text.php | 171 + .../fields/class-acf-field-textarea.php | 229 + .../fields/class-acf-field-time_picker.php | 169 + .../fields/class-acf-field-true_false.php | 279 + .../includes/fields/class-acf-field-url.php | 169 + .../includes/fields/class-acf-field-user.php | 583 + .../fields/class-acf-field-wysiwyg.php | 489 + .../includes/fields/class-acf-field.php | 277 + .../includes/forms/form-attachment.php | 243 + .../includes/forms/form-comment.php | 353 + .../includes/forms/form-customizer.php | 478 + .../includes/forms/form-front.php | 707 + .../includes/forms/form-gutenberg.php | 177 + .../includes/forms/form-nav-menu.php | 395 + .../includes/forms/form-post.php | 329 + .../includes/forms/form-taxonomy.php | 415 + .../includes/forms/form-user.php | 370 + .../includes/forms/form-widget.php | 329 + .../advanced-custom-fields/includes/json.php | 280 + .../advanced-custom-fields/includes/l10n.php | 153 + .../includes/local-fields.php | 574 + .../includes/local-meta.php | 254 + .../includes/locations.php | 372 + .../class-acf-location-attachment.php | 127 + .../locations/class-acf-location-comment.php | 95 + .../class-acf-location-current-user-role.php | 128 + .../class-acf-location-current-user.php | 111 + .../class-acf-location-nav-menu-item.php | 104 + .../locations/class-acf-location-nav-menu.php | 138 + .../class-acf-location-page-parent.php | 100 + .../class-acf-location-page-template.php | 107 + .../class-acf-location-page-type.php | 162 + .../locations/class-acf-location-page.php | 99 + .../class-acf-location-post-category.php | 88 + .../class-acf-location-post-format.php | 143 + .../class-acf-location-post-status.php | 161 + .../class-acf-location-post-taxonomy.php | 130 + .../class-acf-location-post-template.php | 152 + .../class-acf-location-post-type.php | 132 + .../locations/class-acf-location-post.php | 128 + .../locations/class-acf-location-taxonomy.php | 95 + .../class-acf-location-user-form.php | 116 + .../class-acf-location-user-role.php | 127 + .../locations/class-acf-location-widget.php | 110 + .../includes/locations/class-acf-location.php | 263 + .../advanced-custom-fields/includes/loop.php | 355 + .../advanced-custom-fields/includes/media.php | 204 + .../includes/revisions.php | 476 + .../includes/third-party.php | 214 + .../includes/updates.php | 489 + .../includes/upgrades.php | 534 + .../includes/validation.php | 417 + .../class-acf-walker-nav-menu-edit.php | 74 + .../class-acf-walker-taxonomy-field.php | 55 + .../advanced-custom-fields/includes/wpml.php | 302 + .../advanced-custom-fields/lang/acf-ar.mo | Bin 0 -> 58483 bytes .../advanced-custom-fields/lang/acf-ar.po | 2911 +++ .../advanced-custom-fields/lang/acf-bg_BG.mo | Bin 0 -> 54773 bytes .../advanced-custom-fields/lang/acf-bg_BG.po | 3336 +++ .../advanced-custom-fields/lang/acf-cs_CZ.mo | Bin 0 -> 51946 bytes .../advanced-custom-fields/lang/acf-cs_CZ.po | 4029 ++++ .../advanced-custom-fields/lang/acf-de_CH.mo | Bin 0 -> 53137 bytes .../advanced-custom-fields/lang/acf-de_CH.po | 4281 ++++ .../advanced-custom-fields/lang/acf-de_DE.mo | Bin 0 -> 53663 bytes .../advanced-custom-fields/lang/acf-de_DE.po | 4318 ++++ .../lang/acf-de_DE_formal.mo | Bin 0 -> 53848 bytes .../lang/acf-de_DE_formal.po | 4319 ++++ .../advanced-custom-fields/lang/acf-es_ES.mo | Bin 0 -> 51561 bytes .../advanced-custom-fields/lang/acf-es_ES.po | 3592 +++ .../advanced-custom-fields/lang/acf-fa_IR.mo | Bin 0 -> 61563 bytes .../advanced-custom-fields/lang/acf-fa_IR.po | 4308 ++++ .../advanced-custom-fields/lang/acf-fi.mo | Bin 0 -> 51204 bytes .../advanced-custom-fields/lang/acf-fi.po | 3438 +++ .../advanced-custom-fields/lang/acf-fr_CA.mo | Bin 0 -> 54213 bytes .../advanced-custom-fields/lang/acf-fr_CA.po | 3571 +++ .../advanced-custom-fields/lang/acf-fr_FR.mo | Bin 0 -> 54218 bytes .../advanced-custom-fields/lang/acf-fr_FR.po | 3571 +++ .../advanced-custom-fields/lang/acf-he_IL.mo | Bin 0 -> 41502 bytes .../advanced-custom-fields/lang/acf-he_IL.po | 3403 +++ .../advanced-custom-fields/lang/acf-hr_HR.mo | Bin 0 -> 50022 bytes .../advanced-custom-fields/lang/acf-hr_HR.po | 3293 +++ .../advanced-custom-fields/lang/acf-hu_HU.mo | Bin 0 -> 37028 bytes .../advanced-custom-fields/lang/acf-hu_HU.po | 2715 +++ .../advanced-custom-fields/lang/acf-id_ID.mo | Bin 0 -> 42502 bytes .../advanced-custom-fields/lang/acf-id_ID.po | 2462 ++ .../advanced-custom-fields/lang/acf-it_IT.mo | Bin 0 -> 51485 bytes .../advanced-custom-fields/lang/acf-it_IT.po | 3626 +++ .../advanced-custom-fields/lang/acf-ja.mo | Bin 0 -> 45131 bytes .../advanced-custom-fields/lang/acf-ja.po | 3238 +++ .../advanced-custom-fields/lang/acf-nb_NO.mo | Bin 0 -> 47744 bytes .../advanced-custom-fields/lang/acf-nb_NO.po | 3371 +++ .../advanced-custom-fields/lang/acf-nl_NL.mo | Bin 0 -> 49688 bytes .../advanced-custom-fields/lang/acf-nl_NL.po | 3875 ++++ .../advanced-custom-fields/lang/acf-pl_PL.mo | Bin 0 -> 52299 bytes .../advanced-custom-fields/lang/acf-pl_PL.po | 4112 ++++ .../advanced-custom-fields/lang/acf-pt_BR.mo | Bin 0 -> 52235 bytes .../advanced-custom-fields/lang/acf-pt_BR.po | 3367 +++ .../advanced-custom-fields/lang/acf-pt_PT.mo | Bin 0 -> 52552 bytes .../advanced-custom-fields/lang/acf-pt_PT.po | 3136 +++ .../advanced-custom-fields/lang/acf-ro_RO.mo | Bin 0 -> 43147 bytes .../advanced-custom-fields/lang/acf-ro_RO.po | 3527 +++ .../advanced-custom-fields/lang/acf-ru_RU.mo | Bin 0 -> 65754 bytes .../advanced-custom-fields/lang/acf-ru_RU.po | 4335 ++++ .../advanced-custom-fields/lang/acf-sk_SK.mo | Bin 0 -> 40673 bytes .../advanced-custom-fields/lang/acf-sk_SK.po | 2601 +++ .../advanced-custom-fields/lang/acf-sv_SE.mo | Bin 0 -> 48648 bytes .../advanced-custom-fields/lang/acf-sv_SE.po | 3228 +++ .../advanced-custom-fields/lang/acf-tr_TR.mo | Bin 0 -> 51705 bytes .../advanced-custom-fields/lang/acf-tr_TR.po | 3680 +++ .../advanced-custom-fields/lang/acf-uk.mo | Bin 0 -> 33358 bytes .../advanced-custom-fields/lang/acf-uk.po | 3588 +++ .../advanced-custom-fields/lang/acf-zh_CN.mo | Bin 0 -> 40386 bytes .../advanced-custom-fields/lang/acf-zh_CN.po | 3322 +++ .../advanced-custom-fields/lang/acf.pot | 3192 +++ .../plugins/advanced-custom-fields/readme.txt | 221 + .../amr-ical-events-list/admin/add-ons.php | 79 + .../admin/class-amr-license-handler.php | 157 + .../admin/plugin-updater.php | 326 + .../admin/updates-page.php | 464 + .../amr-ical-custom-style-file-example.php | 53 + .../amr-ical-events-list.php | 89 + .../amr-ical-events-list/css/icaladmin.css | 45 + .../css/icalistcss_for_old_themes.css | 33 + .../amr-ical-events-list/css/icallist.css | 462 + .../amr-ical-events-list/css/icallist2017.css | 207 + .../amr-ical-events-list/css/icalprint.css | 7 + .../amr-ical-events-list/css/index.php | 3 + .../amr-ical-events-list/images/accept_16.png | Bin 0 -> 712 bytes .../amr-ical-events-list/images/accept_32.png | Bin 0 -> 1863 bytes .../images/addtogoogle.png | Bin 0 -> 792 bytes .../images/addtogoogle_16.png | Bin 0 -> 957 bytes .../images/addtogoogle_32.png | Bin 0 -> 2888 bytes .../images/arrow_refresh_16.png | Bin 0 -> 558 bytes .../images/arrow_refresh_32.png | Bin 0 -> 1307 bytes .../amr-ical-events-list/images/calendar.png | Bin 0 -> 675 bytes .../images/calendar_16.png | Bin 0 -> 675 bytes .../images/calendar_32.png | Bin 0 -> 1672 bytes .../images/calendar_add.png | Bin 0 -> 723 bytes .../images/calendar_add_16.png | Bin 0 -> 723 bytes .../images/calendar_add_32.png | Bin 0 -> 1733 bytes .../images/calendar_link_16.png | Bin 0 -> 795 bytes .../images/calendar_link_32.png | Bin 0 -> 1954 bytes .../images/calendar_view_day_16.png | Bin 0 -> 572 bytes .../images/calendar_view_day_32.png | Bin 0 -> 1354 bytes .../images/calendar_view_month_16.png | Bin 0 -> 595 bytes .../images/calendar_view_month_32.png | Bin 0 -> 1352 bytes .../images/calendar_view_week_16.png | Bin 0 -> 480 bytes .../images/calendar_view_week_32.png | Bin 0 -> 1005 bytes .../amr-ical-events-list/images/clock_add.png | Bin 0 -> 925 bytes .../images/clock_add_32.png | Bin 0 -> 2659 bytes .../images/csg-4b5e5f37d6e41.png | Bin 0 -> 10167 bytes .../images/csg-4da543d948061.png | Bin 0 -> 55546 bytes .../images/csg-4da5455767b51.png | Bin 0 -> 18701 bytes .../amr-ical-events-list/images/css_16.css | 29 + .../amr-ical-events-list/images/css_32.css | 29 + .../images/date_add_16.png | Bin 0 -> 792 bytes .../images/date_add_32.png | Bin 0 -> 1766 bytes .../amr-ical-events-list/images/delete_32.png | Bin 0 -> 1886 bytes .../amr-ical-events-list/images/email_16.png | Bin 0 -> 608 bytes .../amr-ical-events-list/images/email_32.png | Bin 0 -> 1182 bytes .../images/extras/accept.png | Bin 0 -> 785 bytes .../images/extras/accept_16.png | Bin 0 -> 465 bytes .../images/extras/accept_32.png | Bin 0 -> 830 bytes .../images/extras/addtogoogle.png | Bin 0 -> 797 bytes .../images/extras/arrow_refresh.png | Bin 0 -> 1668 bytes .../images/extras/blinklist.png | Bin 0 -> 588 bytes .../images/extras/brightkite.png | Bin 0 -> 576 bytes .../images/extras/csg-4b5e5f37d6e41.png | Bin 0 -> 10211 bytes .../images/extras/css-sprite1.png | Bin 0 -> 7927 bytes .../images/extras/decline.png | Bin 0 -> 788 bytes .../images/extras/delicious.png | Bin 0 -> 400 bytes .../images/extras/design_float.png | Bin 0 -> 831 bytes .../images/extras/digg.png | Bin 0 -> 422 bytes .../images/extras/dopplr.png | Bin 0 -> 452 bytes .../images/extras/email.png | Bin 0 -> 507 bytes .../images/extras/facebook.png | Bin 0 -> 486 bytes .../images/extras/feed.png | Bin 0 -> 727 bytes .../images/extras/flickr.png | Bin 0 -> 469 bytes .../images/extras/friendfeed.png | Bin 0 -> 632 bytes .../images/extras/furl.png | Bin 0 -> 680 bytes .../images/extras/gamespot.png | Bin 0 -> 803 bytes .../images/extras/information.png | Bin 0 -> 782 bytes .../images/extras/lastfm.png | Bin 0 -> 856 bytes .../images/extras/linkedin.png | Bin 0 -> 640 bytes .../images/extras/magnolia.png | Bin 0 -> 673 bytes .../images/extras/map.png | Bin 0 -> 985 bytes .../images/extras/map_go.png | Bin 0 -> 2001 bytes .../images/extras/mixx.png | Bin 0 -> 430 bytes .../images/extras/myspace.png | Bin 0 -> 516 bytes .../images/extras/newsvine.png | Bin 0 -> 418 bytes .../images/extras/posterous.png | Bin 0 -> 689 bytes .../images/extras/reddit.png | Bin 0 -> 845 bytes .../images/extras/refresh.png | Bin 0 -> 1069 bytes .../images/extras/refresh_16.png | Bin 0 -> 936 bytes .../images/extras/refresh_32.png | Bin 0 -> 2191 bytes .../images/extras/sphere.png | Bin 0 -> 555 bytes .../images/extras/sphinn.png | Bin 0 -> 670 bytes .../images/extras/stumble.png | Bin 0 -> 611 bytes .../images/extras/technorati.png | Bin 0 -> 742 bytes .../images/extras/timezone.png | Bin 0 -> 928 bytes .../images/extras/tripadvisor.png | Bin 0 -> 774 bytes .../images/extras/tumblr.png | Bin 0 -> 588 bytes .../images/extras/twitter.png | Bin 0 -> 661 bytes .../images/extras/twitter_16.png | Bin 0 -> 611 bytes .../images/extras/twitter_32.png | Bin 0 -> 1092 bytes .../images/extras/vimeo.png | Bin 0 -> 614 bytes .../images/extras/yellowmap.png | Bin 0 -> 790 bytes .../images/extras/youtube.png | Bin 0 -> 473 bytes .../images/facebook_16.png | Bin 0 -> 502 bytes .../images/facebook_32.png | Bin 0 -> 888 bytes .../images/feed_add_16.png | Bin 0 -> 742 bytes .../images/feed_add_32.png | Bin 0 -> 1753 bytes .../amr-ical-events-list/images/google_16.png | Bin 0 -> 419 bytes .../amr-ical-events-list/images/google_32.png | Bin 0 -> 731 bytes .../amr-ical-events-list/images/html_16.html | 3 + .../amr-ical-events-list/images/html_32.html | 3 + .../amr-ical-events-list/images/images_16.zip | Bin 0 -> 19009 bytes .../amr-ical-events-list/images/images_32.zip | Bin 0 -> 39891 bytes .../amr-ical-events-list/images/index.php | 3 + .../amr-ical-events-list/images/info_16.png | Bin 0 -> 583 bytes .../amr-ical-events-list/images/info_32.png | Bin 0 -> 1153 bytes .../images/information.png | Bin 0 -> 778 bytes .../images/linkedin_16.png | Bin 0 -> 624 bytes .../images/linkedin_32.png | Bin 0 -> 1057 bytes .../amr-ical-events-list/images/map.png | Bin 0 -> 983 bytes .../amr-ical-events-list/images/map_16.png | Bin 0 -> 686 bytes .../amr-ical-events-list/images/map_32.png | Bin 0 -> 1771 bytes .../images/med/arrow_refresh.png | Bin 0 -> 1668 bytes .../images/med/calendar_add.png | Bin 0 -> 1740 bytes .../images/med/calendar_view_day.png | Bin 0 -> 1359 bytes .../images/med/calendar_view_month.png | Bin 0 -> 1360 bytes .../images/med/calendar_view_week.png | Bin 0 -> 1010 bytes .../images/med/date_add.png | Bin 0 -> 1782 bytes .../images/med/feed_add.png | Bin 0 -> 1759 bytes .../amr-ical-events-list/images/med/index.php | 3 + .../images/med/map_go.png | Bin 0 -> 2001 bytes .../amr-ical-events-list/images/music_16.png | Bin 0 -> 554 bytes .../amr-ical-events-list/images/music_32.png | Bin 0 -> 1378 bytes .../amr-ical-events-list/images/refresh.png | Bin 0 -> 1066 bytes .../images/stumbleupon_16.png | Bin 0 -> 698 bytes .../images/stumbleupon_32.png | Bin 0 -> 1329 bytes .../amr-ical-events-list/images/timezone.png | Bin 0 -> 923 bytes .../images/timezone_16.png | Bin 0 -> 867 bytes .../images/timezone_32.png | Bin 0 -> 2069 bytes .../images/twitter_1_16.png | Bin 0 -> 610 bytes .../images/twitter_1_32.png | Bin 0 -> 1220 bytes .../amr-ical-events-list/images/yellowmap.png | Bin 0 -> 787 bytes .../images/youtube_16.png | Bin 0 -> 537 bytes .../images/youtube_32.png | Bin 0 -> 1297 bytes .../amr-ical-admin-import-export-list.php | 229 + .../includes/amr-ical-calendar.php | 806 + .../includes/amr-ical-config.php | 1264 ++ .../includes/amr-ical-events-list-main.php | 2513 +++ .../includes/amr-ical-fields-admin.php | 143 + .../includes/amr-ical-groupings.php | 410 + .../includes/amr-ical-list-admin.php | 1533 ++ .../includes/amr-ical-plugin-form-html.php | 189 + .../includes/amr-ical-post-type.php | 75 + .../includes/amr-ical-pretty-print.php | 228 + .../includes/amr-import-ical.php | 1288 ++ .../includes/amr-pluggable.php | 2050 ++ .../includes/amr-rrule.php | 1168 + .../includes/amr-upcoming-events-widget.php | 321 + .../includes/amr_date_i18n.php | 32 + .../includes/functions-examples.php | 21 + .../includes/functions.php | 400 + .../amr-ical-events-list/includes/index.php | 3 + .../timezones/WindowsZonesToTimeZones.txt | 101 + .../includes/timezones/amr-windows-zones.php | 22 + .../includes/timezones/index.php | 3 + .../includes/timezones/windowszonemap.txt | 47 + .../plugins/amr-ical-events-list/index.php | 3 + .../amr-ical-events-list/js/amr-ical.js | 48 + .../plugins/amr-ical-events-list/js/index.php | 3 + .../lang/amr-ical-events-list-af_AF.po | 2465 ++ .../lang/amr-ical-events-list-be_BY.mo | Bin 0 -> 1777 bytes .../lang/amr-ical-events-list-be_BY.po | 2465 ++ .../lang/amr-ical-events-list-da_DK.mo | Bin 0 -> 51910 bytes .../lang/amr-ical-events-list-da_DK.po | 2790 +++ .../Amr iCal Events List-da_DK.txt | 23 + .../lang/amr-ical-events-list-de_DE.po | 2465 ++ .../lang/amr-ical-events-list-en_AU.mo | Bin 0 -> 760 bytes .../lang/amr-ical-events-list-en_AU.po | 2465 ++ .../lang/amr-ical-events-list-es_ES.mo | Bin 0 -> 21305 bytes .../lang/amr-ical-events-list-es_ES.po | 2472 ++ .../lang/amr-ical-events-list-fr_FR.mo | Bin 0 -> 47603 bytes .../lang/amr-ical-events-list-fr_FR.po | 2465 ++ .../lang/amr-ical-events-list-hi_IN.mo | Bin 0 -> 5508 bytes .../lang/amr-ical-events-list-hi_IN.po | 2465 ++ .../lang/amr-ical-events-list-it_IT.mo | Bin 0 -> 43672 bytes .../lang/amr-ical-events-list-it_IT.po | 2465 ++ .../lang/amr-ical-events-list-lt_LT.mo | Bin 0 -> 3906 bytes .../lang/amr-ical-events-list-lt_LT.po | 2465 ++ .../lang/amr-ical-events-list-nl_NL.mo | Bin 0 -> 41499 bytes .../lang/amr-ical-events-list-nl_NL.po | 2465 ++ .../lang/amr-ical-events-list-no_NO.mo | Bin 0 -> 41436 bytes .../lang/amr-ical-events-list-no_NO.po | 2811 +++ .../lang/amr-ical-events-list-pl_PL.mo | Bin 0 -> 21807 bytes .../lang/amr-ical-events-list-pl_PL.po | 2472 ++ .../lang/amr-ical-events-list-ro_RO.mo | Bin 0 -> 36681 bytes .../lang/amr-ical-events-list-ro_RO.po | 2465 ++ .../lang/amr-ical-events-list-ru_RU.mo | Bin 0 -> 3660 bytes .../lang/amr-ical-events-list-ru_RU.po | 2472 ++ .../lang/amr-ical-events-list-uk_UA.mo | Bin 0 -> 37361 bytes .../lang/amr-ical-events-list-uk_UA.po | 2460 ++ .../lang/amr-ical-events-list.mo | Bin 0 -> 499 bytes .../lang/amr-ical-events-list.pot | 1987 ++ .../amr-ical-events-list/lang/index.php | 3 + .../plugins/amr-ical-events-list/readme.txt | 936 + .../amr-ical-events-list/uninstall.php | 34 + .../amr-admin-form-html.php | 246 + .../amr-shortcode-any-widget.php | 400 + .../amr-utilities.php | 156 + .../amr-shortcode-any-widget/index.php | 3 + .../amr-shortcode-any-widget-id_ID.po | 118 + .../amr-shortcode-any-widget-sr_RS.mo | Bin 0 -> 2822 bytes .../amr-shortcode-any-widget-sr_RS.po | 113 + .../languages/amr-shortcode-any-widget.pot | 138 + .../amr_shortcode_any_widget_id_ID.mo | Bin 0 -> 3595 bytes .../amr-shortcode-any-widget/readme.txt | 285 + wp-content/plugins/antispam-bee/LICENSE.txt | 339 + .../plugins/antispam-bee/antispam_bee.php | 2852 +++ .../plugins/antispam-bee/css/dashboard.css | 18 + .../antispam-bee/css/dashboard.min.css | 1 + .../plugins/antispam-bee/css/styles.css | 268 + .../plugins/antispam-bee/css/styles.min.css | 1 + .../antispam-bee/inc/columns.class.php | 105 + .../plugins/antispam-bee/inc/gui.class.php | 576 + .../plugins/antispam-bee/js/dashboard.js | 111 + .../plugins/antispam-bee/js/dashboard.min.js | 5 + .../plugins/antispam-bee/js/raphael.helper.js | 142 + .../antispam-bee/js/raphael.helper.min.js | 5 + .../plugins/antispam-bee/js/raphael.min.js | 3 + wp-content/plugins/antispam-bee/js/scripts.js | 20 + .../plugins/antispam-bee/js/scripts.min.js | 1 + wp-content/plugins/antispam-bee/readme.txt | 209 + wp-content/plugins/classic-editor/LICENSE.md | 400 + .../plugins/classic-editor/classic-editor.php | 941 + .../classic-editor/js/block-editor-plugin.js | 23 + wp-content/plugins/classic-editor/readme.txt | 119 + .../plugins/contact-form-7/admin/admin.php | 603 + .../admin/css/styles-dark-mode.css | 72 + .../contact-form-7/admin/css/styles-rtl.css | 62 + .../contact-form-7/admin/css/styles.css | 439 + .../admin/edit-contact-form.php | 296 + .../admin/includes/admin-functions.php | 22 + .../class-contact-forms-list-table.php | 253 + .../admin/includes/config-validator.php | 135 + .../contact-form-7/admin/includes/editor.php | 258 + .../admin/includes/help-tabs.php | 98 + .../admin/includes/tag-generator.php | 80 + .../admin/includes/welcome-panel.php | 78 + .../contact-form-7/admin/js/scripts.js | 291 + .../contact-form-7/admin/js/tag-generator.js | 249 + .../contact-form-7/images/ajax-loader.gif | Bin 0 -> 847 bytes .../contact-form-7/includes/capabilities.php | 26 + .../includes/config-validator.php | 647 + .../includes/contact-form-functions.php | 270 + .../includes/contact-form-template.php | 201 + .../contact-form-7/includes/contact-form.php | 946 + .../contact-form-7/includes/controller.php | 104 + .../includes/css/styles-rtl.css | 12 + .../contact-form-7/includes/css/styles.css | 110 + .../contact-form-7/includes/form-tag.php | 367 + .../includes/form-tags-manager.php | 368 + .../contact-form-7/includes/formatting.php | 381 + .../contact-form-7/includes/functions.php | 434 + .../contact-form-7/includes/integration.php | 345 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 212 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 208 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 335 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 207 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 280 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 6992 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 6999 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes .../jquery-ui/themes/smoothness/jquery-ui.css | 1225 + .../themes/smoothness/jquery-ui.min.css | 7 + .../js/jquery-ui/themes/smoothness/theme.css | 410 + .../contact-form-7/includes/js/scripts.js | 526 + .../plugins/contact-form-7/includes/l10n.php | 98 + .../plugins/contact-form-7/includes/mail.php | 448 + .../plugins/contact-form-7/includes/pipe.php | 78 + .../contact-form-7/includes/rest-api.php | 323 + .../contact-form-7/includes/shortcodes.php | 101 + .../includes/special-mail-tags.php | 168 + .../contact-form-7/includes/submission.php | 441 + .../contact-form-7/includes/upgrade.php | 85 + .../contact-form-7/includes/validation.php | 84 + .../contact-form-7/languages/readme.txt | 4 + wp-content/plugins/contact-form-7/license.txt | 358 + .../contact-form-7/modules/acceptance.php | 294 + .../contact-form-7/modules/akismet.php | 151 + .../contact-form-7/modules/checkbox.php | 349 + .../modules/constant-contact.php | 943 + .../plugins/contact-form-7/modules/count.php | 65 + .../plugins/contact-form-7/modules/date.php | 225 + .../plugins/contact-form-7/modules/file.php | 465 + .../contact-form-7/modules/flamingo.php | 278 + .../plugins/contact-form-7/modules/hidden.php | 36 + .../plugins/contact-form-7/modules/listo.php | 30 + .../plugins/contact-form-7/modules/number.php | 233 + .../plugins/contact-form-7/modules/quiz.php | 238 + .../modules/really-simple-captcha.php | 655 + .../contact-form-7/modules/recaptcha.php | 576 + .../contact-form-7/modules/response.php | 19 + .../plugins/contact-form-7/modules/select.php | 227 + .../plugins/contact-form-7/modules/submit.php | 92 + .../plugins/contact-form-7/modules/text.php | 320 + .../contact-form-7/modules/textarea.php | 198 + wp-content/plugins/contact-form-7/readme.txt | 170 + .../plugins/contact-form-7/settings.php | 158 + .../plugins/contact-form-7/uninstall.php | 28 + .../contact-form-7/wp-contact-form-7.php | 67 + wp-content/plugins/imsanity/.travis.yml | 26 + wp-content/plugins/imsanity/ajax.php | 248 + wp-content/plugins/imsanity/changelog.txt | 74 + .../plugins/imsanity/images/ajax-loader.gif | Bin 0 -> 3741 bytes wp-content/plugins/imsanity/imsanity.php | 269 + .../imsanity/languages/imsanity-es_MX.mo | Bin 0 -> 6875 bytes .../imsanity/languages/imsanity-es_MX.po | 223 + .../imsanity/languages/imsanity-sv_SE.mo | Bin 0 -> 6580 bytes .../imsanity/languages/imsanity-sv_SE.po | 225 + .../plugins/imsanity/languages/readme.txt | 11 + .../imsanity/libs/imagecreatefrombmp.php | 315 + wp-content/plugins/imsanity/libs/utils.php | 181 + wp-content/plugins/imsanity/license.txt | 782 + wp-content/plugins/imsanity/phpcs.ruleset.xml | 15 + wp-content/plugins/imsanity/readme.txt | 160 + .../plugins/imsanity/scripts/imsanity.js | 123 + wp-content/plugins/imsanity/settings.php | 601 + .../really-simple-captcha/gentium/FONTLOG.txt | 156 + .../gentium/GENTIUM-FAQ.txt | 249 + .../really-simple-captcha/gentium/GenBasB.ttf | Bin 0 -> 266840 bytes .../gentium/GenBasBI.ttf | Bin 0 -> 245852 bytes .../really-simple-captcha/gentium/GenBasI.ttf | Bin 0 -> 258680 bytes .../really-simple-captcha/gentium/GenBasR.ttf | Bin 0 -> 264216 bytes .../gentium/GenBkBasB.ttf | Bin 0 -> 267024 bytes .../gentium/GenBkBasBI.ttf | Bin 0 -> 245096 bytes .../gentium/GenBkBasI.ttf | Bin 0 -> 261328 bytes .../gentium/GenBkBasR.ttf | Bin 0 -> 267604 bytes .../really-simple-captcha/gentium/OFL-FAQ.txt | 425 + .../really-simple-captcha/gentium/OFL.txt | 94 + .../plugins/really-simple-captcha/license.txt | 366 + .../plugins/really-simple-captcha/readme.txt | 112 + .../really-simple-captcha.php | 335 + .../really-simple-captcha/tmp/index.php | 2 + wp-content/plugins/redirection/README.md | 60 + .../plugins/redirection/actions/error.php | 43 + .../plugins/redirection/actions/nothing.php | 11 + .../plugins/redirection/actions/pass.php | 63 + .../plugins/redirection/actions/random.php | 21 + .../plugins/redirection/actions/url.php | 31 + .../plugins/redirection/api/api-404.php | 112 + .../plugins/redirection/api/api-export.php | 41 + .../plugins/redirection/api/api-group.php | 112 + .../plugins/redirection/api/api-import.php | 52 + .../plugins/redirection/api/api-log.php | 81 + .../plugins/redirection/api/api-plugin.php | 165 + .../plugins/redirection/api/api-redirect.php | 109 + .../plugins/redirection/api/api-settings.php | 63 + .../redirection/database/database-status.php | 371 + .../database/database-upgrader.php | 124 + .../plugins/redirection/database/database.php | 165 + .../redirection/database/schema/201.php | 14 + .../redirection/database/schema/216.php | 26 + .../redirection/database/schema/220.php | 26 + .../redirection/database/schema/231.php | 37 + .../redirection/database/schema/232.php | 15 + .../redirection/database/schema/233.php | 17 + .../redirection/database/schema/240.php | 88 + .../redirection/database/schema/400.php | 68 + .../redirection/database/schema/410.php | 17 + .../redirection/database/schema/latest.php | 251 + .../plugins/redirection/fileio/apache.php | 182 + wp-content/plugins/redirection/fileio/csv.php | 124 + .../plugins/redirection/fileio/json.php | 82 + .../plugins/redirection/fileio/nginx.php | 112 + wp-content/plugins/redirection/fileio/rss.php | 47 + .../redirection/images/GitHub-Mark-64px.png | Bin 0 -> 2625 bytes .../plugins/redirection/images/donate.gif | Bin 0 -> 2923 bytes wp-content/plugins/redirection/license.txt | 674 + .../locale/json/redirection-de_DE.json | 1 + .../locale/json/redirection-en_AU.json | 1 + .../locale/json/redirection-en_CA.json | 1 + .../locale/json/redirection-en_GB.json | 1 + .../locale/json/redirection-en_NZ.json | 1 + .../locale/json/redirection-es_ES.json | 1 + .../locale/json/redirection-fa_IR.json | 1 + .../locale/json/redirection-fr_FR.json | 1 + .../locale/json/redirection-it_IT.json | 1 + .../locale/json/redirection-ja.json | 1 + .../locale/json/redirection-lv.json | 1 + .../locale/json/redirection-nl_NL.json | 1 + .../locale/json/redirection-pt_BR.json | 1 + .../locale/json/redirection-ru_RU.json | 1 + .../locale/json/redirection-sv_SE.json | 1 + .../locale/json/redirection-zh_TW.json | 1 + .../redirection/locale/redirection-de_DE.mo | Bin 0 -> 17447 bytes .../redirection/locale/redirection-de_DE.po | 2059 ++ .../redirection/locale/redirection-en_AU.mo | Bin 0 -> 48416 bytes .../redirection/locale/redirection-en_AU.po | 2059 ++ .../redirection/locale/redirection-en_CA.mo | Bin 0 -> 46610 bytes .../redirection/locale/redirection-en_CA.po | 2059 ++ .../redirection/locale/redirection-en_GB.mo | Bin 0 -> 26945 bytes .../redirection/locale/redirection-en_GB.po | 2059 ++ .../redirection/locale/redirection-en_NZ.mo | Bin 0 -> 48416 bytes .../redirection/locale/redirection-en_NZ.po | 2059 ++ .../redirection/locale/redirection-es_ES.mo | Bin 0 -> 52544 bytes .../redirection/locale/redirection-es_ES.po | 2059 ++ .../redirection/locale/redirection-fa_IR.mo | Bin 0 -> 17383 bytes .../redirection/locale/redirection-fa_IR.po | 2057 ++ .../redirection/locale/redirection-fr_FR.mo | Bin 0 -> 51770 bytes .../redirection/locale/redirection-fr_FR.po | 2059 ++ .../redirection/locale/redirection-it_IT.mo | Bin 0 -> 28604 bytes .../redirection/locale/redirection-it_IT.po | 2059 ++ .../redirection/locale/redirection-ja.mo | Bin 0 -> 29640 bytes .../redirection/locale/redirection-ja.po | 2059 ++ .../redirection/locale/redirection-lv.mo | Bin 0 -> 13023 bytes .../redirection/locale/redirection-lv.po | 1828 ++ .../redirection/locale/redirection-nl_NL.mo | Bin 0 -> 29882 bytes .../redirection/locale/redirection-nl_NL.po | 2059 ++ .../redirection/locale/redirection-pt_BR.mo | Bin 0 -> 52143 bytes .../redirection/locale/redirection-pt_BR.po | 2059 ++ .../redirection/locale/redirection-ru_RU.mo | Bin 0 -> 41158 bytes .../redirection/locale/redirection-ru_RU.po | 2061 ++ .../redirection/locale/redirection-sv_SE.mo | Bin 0 -> 30658 bytes .../redirection/locale/redirection-sv_SE.po | 2059 ++ .../redirection/locale/redirection-zh_TW.mo | Bin 0 -> 6272 bytes .../redirection/locale/redirection-zh_TW.po | 1300 ++ .../redirection/locale/redirection.pot | 1986 ++ .../plugins/redirection/matches/cookie.php | 18 + .../redirection/matches/custom-filter.php | 40 + .../redirection/matches/http-header.php | 59 + wp-content/plugins/redirection/matches/ip.php | 60 + .../plugins/redirection/matches/login.php | 54 + .../plugins/redirection/matches/page.php | 36 + .../plugins/redirection/matches/referrer.php | 47 + .../plugins/redirection/matches/server.php | 48 + .../plugins/redirection/matches/url.php | 50 + .../redirection/matches/user-agent.php | 47 + .../plugins/redirection/matches/user-role.php | 32 + .../plugins/redirection/models/action.php | 58 + .../plugins/redirection/models/file-io.php | 101 + .../plugins/redirection/models/fixer.php | 164 + .../plugins/redirection/models/flusher.php | 69 + .../plugins/redirection/models/group.php | 255 + .../plugins/redirection/models/htaccess.php | 301 + .../plugins/redirection/models/importer.php | 372 + wp-content/plugins/redirection/models/log.php | 375 + .../plugins/redirection/models/match.php | 191 + .../plugins/redirection/models/module.php | 91 + .../plugins/redirection/models/monitor.php | 147 + .../redirection/models/redirect-sanitizer.php | 230 + .../plugins/redirection/models/redirect.php | 537 + .../plugins/redirection/models/regex.php | 55 + .../plugins/redirection/models/request.php | 87 + .../plugins/redirection/models/url-flags.php | 138 + .../plugins/redirection/models/url-match.php | 50 + .../plugins/redirection/models/url-path.php | 84 + .../plugins/redirection/models/url-query.php | 191 + wp-content/plugins/redirection/models/url.php | 44 + .../plugins/redirection/modules/apache.php | 89 + .../plugins/redirection/modules/nginx.php | 32 + .../plugins/redirection/modules/wordpress.php | 224 + wp-content/plugins/redirection/readme.txt | 699 + .../plugins/redirection/redirection-admin.php | 547 + .../plugins/redirection/redirection-api.php | 123 + .../plugins/redirection/redirection-cli.php | 206 + .../plugins/redirection/redirection-front.php | 103 + .../redirection/redirection-settings.php | 249 + .../redirection/redirection-strings.php | 544 + .../redirection/redirection-version.php | 5 + .../plugins/redirection/redirection.css | 68 + wp-content/plugins/redirection/redirection.js | 76 + .../plugins/redirection/redirection.php | 97 + .../plugins/scripts-n-styles/README.txt | 204 + .../scripts-n-styles/css/code-editor.css | 3 + .../plugins/scripts-n-styles/css/meta-box.css | 42 + .../scripts-n-styles/css/options-styles.css | 26 + .../scripts-n-styles/images/icon32.png | Bin 0 -> 1759 bytes .../plugins/scripts-n-styles/images/menu.png | Bin 0 -> 1404 bytes .../includes/class-sns-admin.php | 202 + .../includes/class-sns-ajax.php | 452 + .../includes/class-sns-form.php | 185 + .../includes/class-sns-global-page.php | 252 + .../includes/class-sns-hoops-page.php | 193 + .../includes/class-sns-list-usage.php | 176 + .../includes/class-sns-meta-box.php | 451 + .../includes/class-sns-settings-page.php | 186 + .../includes/class-sns-theme-page.php | 170 + .../includes/class-sns-usage-page.php | 89 + .../scripts-n-styles/js/code-editor.js | 114 + .../scripts-n-styles/js/global-page.js | 134 + .../plugins/scripts-n-styles/js/hoops-page.js | 105 + .../plugins/scripts-n-styles/js/meta-box.js | 666 + .../scripts-n-styles/js/settings-page.js | 18 + .../plugins/scripts-n-styles/js/theme-page.js | 276 + .../languages/scripts-n-styles.pot | 398 + .../plugins/scripts-n-styles/license.txt | 674 + .../scripts-n-styles/scripts-n-styles.php | 527 + .../plugins/scripts-n-styles/uninstall.php | 26 + .../vendor/chosen/chosen-sprite.png | Bin 0 -> 646 bytes .../vendor/chosen/chosen-sprite@2x.png | Bin 0 -> 872 bytes .../vendor/chosen/chosen.jquery.min.js | 2 + .../vendor/chosen/chosen.min.css | 3 + .../codemirror/codemirror-compressed.css | 659 + .../codemirror/codemirror-compressed.js | 9 + .../scripts-n-styles/vendor/coffee-script.js | 12 + .../plugins/scripts-n-styles/vendor/less.js | 5837 +++++ .../scripts-n-styles/vendor/less.min.js | 11 + .../plugins/shariff/admin/admin-menu.php | 2504 +++ .../plugins/shariff/admin/admin-metabox.php | 162 + .../plugins/shariff/admin/admin-notices.php | 51 + wp-content/plugins/shariff/bitcoin.php | 22 + wp-content/plugins/shariff/changelog.txt | 670 + wp-content/plugins/shariff/css/shariff.css | 377 + .../plugins/shariff/css/shariff.min.css | 1 + .../plugins/shariff/images/borderradius.png | Bin 0 -> 9236 bytes .../plugins/shariff/images/defaultHint.png | Bin 0 -> 16137 bytes .../shariff/images/shariff_designs.png | Bin 0 -> 23224 bytes .../shariff/includes/class-shariff-widget.php | 179 + .../plugins/shariff/includes/phpqrcode.php | 3624 +++ .../plugins/shariff/js/shariff-media.js | 20 + .../plugins/shariff/js/shariff-media.min.js | 1 + .../plugins/shariff/js/shariff-popup.js | 29 + .../plugins/shariff/js/shariff-popup.min.js | 1 + wp-content/plugins/shariff/js/shariff.js | 100 + wp-content/plugins/shariff/js/shariff.min.js | 1 + wp-content/plugins/shariff/license.txt | 47 + wp-content/plugins/shariff/readme.txt | 220 + .../shariff/services/shariff-addthis.php | 71 + .../shariff/services/shariff-bitcoin.php | 51 + .../shariff/services/shariff-buffer.php | 75 + .../shariff/services/shariff-diaspora.php | 57 + .../shariff/services/shariff-facebook.php | 97 + .../shariff/services/shariff-flattr.php | 48 + .../shariff/services/shariff-flipboard.php | 60 + .../plugins/shariff/services/shariff-info.php | 77 + .../shariff/services/shariff-linkedin.php | 88 + .../shariff/services/shariff-mailto.php | 86 + .../plugins/shariff/services/shariff-mewe.php | 59 + .../plugins/shariff/services/shariff-mix.php | 56 + .../services/shariff-odnoklassniki.php | 72 + .../shariff/services/shariff-patreon.php | 49 + .../shariff/services/shariff-paypal.php | 51 + .../shariff/services/shariff-paypalme.php | 51 + .../shariff/services/shariff-pinterest.php | 121 + .../shariff/services/shariff-pocket.php | 66 + .../shariff/services/shariff-printer.php | 53 + .../shariff/services/shariff-qzone.php | 57 + .../shariff/services/shariff-reddit.php | 75 + .../plugins/shariff/services/shariff-rss.php | 46 + .../plugins/shariff/services/shariff-sms.php | 60 + .../shariff/services/shariff-telegram.php | 61 + .../shariff/services/shariff-tencentweibo.php | 57 + .../shariff/services/shariff-threema.php | 60 + .../shariff/services/shariff-tumblr.php | 80 + .../shariff/services/shariff-twitter.php | 91 + .../plugins/shariff/services/shariff-vk.php | 73 + .../shariff/services/shariff-wallabag.php | 40 + .../shariff/services/shariff-weibo.php | 57 + .../shariff/services/shariff-whatsapp.php | 64 + .../plugins/shariff/services/shariff-xing.php | 87 + wp-content/plugins/shariff/shariff.php | 1612 ++ wp-content/plugins/shariff/uninstall.php | 80 + wp-content/plugins/shariff/updates.php | 343 + wp-content/plugins/shariff/wpml-config.xml | 12 + .../languages/UCE-da_DK.mo | Bin 0 -> 717 bytes .../languages/UCE-da_DK.po | 67 + .../languages/UCE-de_DE.mo | Bin 0 -> 1368 bytes .../languages/UCE-de_DE.po | 55 + .../languages/UCE-en_EN.mo | Bin 0 -> 1254 bytes .../languages/UCE-en_EN.po | 55 + .../languages/UCE-pt_BR.mo | Bin 0 -> 1290 bytes .../languages/UCE-pt_BR.po | 57 + .../languages/UCE.pot | 52 + .../ultimate-category-excluder/readme.txt | 93 + .../ultimate-category-excluder.php | 199 + wp-content/plugins/version-info/LICENSE | 21 + wp-content/plugins/version-info/VERSION | 1 + wp-content/plugins/version-info/readme.txt | 36 + .../plugins/version-info/version-info.php | 46 + .../class-webdados-fb-open-graph-admin.php | 476 + .../admin/css/index.php | 1 + .../css/webdados-fb-open-graph-admin.css | 126 + .../admin/index.php | 1 + .../admin/js/index.php | 1 + .../admin/js/webdados-fb-open-graph-admin.js | 309 + .../admin/options-page-3rdparty.php | 291 + .../admin/options-page-facebook.php | 422 + .../admin/options-page-general.php | 333 + .../admin/options-page-right.php | 95 + .../admin/options-page-schema.php | 178 + .../admin/options-page-seo.php | 90 + .../admin/options-page-tools.php | 36 + .../admin/options-page-twitter.php | 131 + .../admin/options-page.php | 137 + .../admin/webdados.svg | 17 + .../fbimg.php | 109 + .../includes/FacebookLocales.xml | 1631 ++ .../includes/class-webdados-fb-open-graph.php | 417 + .../includes/index.php | 1 + .../index.php | 1 + .../lang/index.php | 1 + ...rm00ns-simple-facebook-open-graph-tags.pot | 1080 + .../class-webdados-fb-open-graph-public.php | 1182 + .../public/index.php | 1 + .../readme.txt | 662 + .../wonderm00n-open-graph.php | 51 + .../wp-statistics/assets/css/admin.css | 417 + .../wp-statistics/assets/css/frontend.css | 4 + .../assets/css/jquery-ui-smoothness.min.css | 5 + .../plugins/wp-statistics/assets/css/log.css | 430 + .../wp-statistics/assets/css/pagination.css | 51 + .../plugins/wp-statistics/assets/css/rtl.css | 98 + .../wp-statistics/assets/images/Air.png | Bin 0 -> 640 bytes .../wp-statistics/assets/images/Android.png | Bin 0 -> 350 bytes .../wp-statistics/assets/images/Chrome.png | Bin 0 -> 508 bytes .../wp-statistics/assets/images/Edge.png | Bin 0 -> 466 bytes .../wp-statistics/assets/images/Firefox.png | Bin 0 -> 895 bytes .../wp-statistics/assets/images/Friendica.png | Bin 0 -> 715 bytes .../wp-statistics/assets/images/Ipad.png | Bin 0 -> 727 bytes .../wp-statistics/assets/images/MSIE.png | Bin 0 -> 855 bytes .../assets/images/Opera Next.png | Bin 0 -> 597 bytes .../wp-statistics/assets/images/Opera.png | Bin 0 -> 597 bytes .../wp-statistics/assets/images/Safari.png | Bin 0 -> 796 bytes .../assets/images/TRAVOD-logo.png | Bin 0 -> 8832 bytes .../wp-statistics/assets/images/ask.png | Bin 0 -> 358 bytes .../wp-statistics/assets/images/baidu.png | Bin 0 -> 289 bytes .../wp-statistics/assets/images/bing.png | Bin 0 -> 483 bytes .../wp-statistics/assets/images/clearch.png | Bin 0 -> 496 bytes .../assets/images/duckduckgo.png | Bin 0 -> 438 bytes .../wp-statistics/assets/images/flags/000.png | Bin 0 -> 484 bytes .../wp-statistics/assets/images/flags/AD.png | Bin 0 -> 540 bytes .../wp-statistics/assets/images/flags/AE.png | Bin 0 -> 645 bytes .../wp-statistics/assets/images/flags/AF.png | Bin 0 -> 534 bytes .../wp-statistics/assets/images/flags/AG.png | Bin 0 -> 535 bytes .../wp-statistics/assets/images/flags/AI.png | Bin 0 -> 609 bytes .../wp-statistics/assets/images/flags/AL.png | Bin 0 -> 535 bytes .../wp-statistics/assets/images/flags/AM.png | Bin 0 -> 414 bytes .../wp-statistics/assets/images/flags/AN.png | Bin 0 -> 477 bytes .../wp-statistics/assets/images/flags/AO.png | Bin 0 -> 424 bytes .../wp-statistics/assets/images/flags/AQ.png | Bin 0 -> 586 bytes .../wp-statistics/assets/images/flags/AR.png | Bin 0 -> 439 bytes .../wp-statistics/assets/images/flags/AS.png | Bin 0 -> 661 bytes .../wp-statistics/assets/images/flags/AT.png | Bin 0 -> 363 bytes .../wp-statistics/assets/images/flags/AU.png | Bin 0 -> 614 bytes .../wp-statistics/assets/images/flags/AW.png | Bin 0 -> 453 bytes .../wp-statistics/assets/images/flags/AX.png | Bin 0 -> 399 bytes .../wp-statistics/assets/images/flags/AZ.png | Bin 0 -> 472 bytes .../wp-statistics/assets/images/flags/BA.png | Bin 0 -> 627 bytes .../wp-statistics/assets/images/flags/BB.png | Bin 0 -> 573 bytes .../wp-statistics/assets/images/flags/BD.png | Bin 0 -> 577 bytes .../wp-statistics/assets/images/flags/BE.png | Bin 0 -> 452 bytes .../wp-statistics/assets/images/flags/BF.png | Bin 0 -> 445 bytes .../wp-statistics/assets/images/flags/BG.png | Bin 0 -> 352 bytes .../wp-statistics/assets/images/flags/BH.png | Bin 0 -> 529 bytes .../wp-statistics/assets/images/flags/BI.png | Bin 0 -> 740 bytes .../wp-statistics/assets/images/flags/BJ.png | Bin 0 -> 422 bytes .../wp-statistics/assets/images/flags/BL.png | Bin 0 -> 574 bytes .../wp-statistics/assets/images/flags/BM.png | Bin 0 -> 606 bytes .../wp-statistics/assets/images/flags/BN.png | Bin 0 -> 654 bytes .../wp-statistics/assets/images/flags/BO.png | Bin 0 -> 461 bytes .../wp-statistics/assets/images/flags/BR.png | Bin 0 -> 687 bytes .../wp-statistics/assets/images/flags/BS.png | Bin 0 -> 494 bytes .../wp-statistics/assets/images/flags/BT.png | Bin 0 -> 607 bytes .../wp-statistics/assets/images/flags/BW.png | Bin 0 -> 425 bytes .../wp-statistics/assets/images/flags/BY.png | Bin 0 -> 441 bytes .../wp-statistics/assets/images/flags/BZ.png | Bin 0 -> 615 bytes .../wp-statistics/assets/images/flags/CA.png | Bin 0 -> 570 bytes .../wp-statistics/assets/images/flags/CD.png | Bin 0 -> 621 bytes .../wp-statistics/assets/images/flags/CF.png | Bin 0 -> 514 bytes .../wp-statistics/assets/images/flags/CG.png | Bin 0 -> 556 bytes .../wp-statistics/assets/images/flags/CH.png | Bin 0 -> 434 bytes .../wp-statistics/assets/images/flags/CI.png | Bin 0 -> 428 bytes .../wp-statistics/assets/images/flags/CK.png | Bin 0 -> 630 bytes .../wp-statistics/assets/images/flags/CL.png | Bin 0 -> 424 bytes .../wp-statistics/assets/images/flags/CM.png | Bin 0 -> 502 bytes .../wp-statistics/assets/images/flags/CN.png | Bin 0 -> 469 bytes .../wp-statistics/assets/images/flags/CO.png | Bin 0 -> 387 bytes .../wp-statistics/assets/images/flags/CR.png | Bin 0 -> 364 bytes .../wp-statistics/assets/images/flags/CS.png | Bin 0 -> 555 bytes .../wp-statistics/assets/images/flags/CU.png | Bin 0 -> 513 bytes .../wp-statistics/assets/images/flags/CV.png | Bin 0 -> 492 bytes .../wp-statistics/assets/images/flags/CW.png | Bin 0 -> 332 bytes .../wp-statistics/assets/images/flags/CY.png | Bin 0 -> 456 bytes .../wp-statistics/assets/images/flags/CZ.png | Bin 0 -> 492 bytes .../wp-statistics/assets/images/flags/DE.png | Bin 0 -> 391 bytes .../wp-statistics/assets/images/flags/DJ.png | Bin 0 -> 514 bytes .../wp-statistics/assets/images/flags/DK.png | Bin 0 -> 416 bytes .../wp-statistics/assets/images/flags/DM.png | Bin 0 -> 668 bytes .../wp-statistics/assets/images/flags/DO.png | Bin 0 -> 432 bytes .../wp-statistics/assets/images/flags/DZ.png | Bin 0 -> 532 bytes .../wp-statistics/assets/images/flags/EC.png | Bin 0 -> 564 bytes .../wp-statistics/assets/images/flags/EE.png | Bin 0 -> 380 bytes .../wp-statistics/assets/images/flags/EG.png | Bin 0 -> 408 bytes .../wp-statistics/assets/images/flags/EH.png | Bin 0 -> 536 bytes .../wp-statistics/assets/images/flags/ER.png | Bin 0 -> 645 bytes .../wp-statistics/assets/images/flags/ES.png | Bin 0 -> 493 bytes .../wp-statistics/assets/images/flags/ET.png | Bin 0 -> 566 bytes .../wp-statistics/assets/images/flags/FI.png | Bin 0 -> 405 bytes .../wp-statistics/assets/images/flags/FJ.png | Bin 0 -> 575 bytes .../wp-statistics/assets/images/flags/FK.png | Bin 0 -> 595 bytes .../wp-statistics/assets/images/flags/FM.png | Bin 0 -> 565 bytes .../wp-statistics/assets/images/flags/FO.png | Bin 0 -> 462 bytes .../wp-statistics/assets/images/flags/FR.png | Bin 0 -> 446 bytes .../wp-statistics/assets/images/flags/GA.png | Bin 0 -> 400 bytes .../wp-statistics/assets/images/flags/GB.png | Bin 0 -> 707 bytes .../wp-statistics/assets/images/flags/GD.png | Bin 0 -> 683 bytes .../wp-statistics/assets/images/flags/GE.png | Bin 0 -> 509 bytes .../wp-statistics/assets/images/flags/GF.png | Bin 0 -> 508 bytes .../wp-statistics/assets/images/flags/GG.png | Bin 0 -> 570 bytes .../wp-statistics/assets/images/flags/GH.png | Bin 0 -> 453 bytes .../wp-statistics/assets/images/flags/GI.png | Bin 0 -> 516 bytes .../wp-statistics/assets/images/flags/GL.png | Bin 0 -> 521 bytes .../wp-statistics/assets/images/flags/GM.png | Bin 0 -> 398 bytes .../wp-statistics/assets/images/flags/GN.png | Bin 0 -> 453 bytes .../wp-statistics/assets/images/flags/GP.png | Bin 0 -> 509 bytes .../wp-statistics/assets/images/flags/GQ.png | Bin 0 -> 536 bytes .../wp-statistics/assets/images/flags/GR.png | Bin 0 -> 433 bytes .../wp-statistics/assets/images/flags/GT.png | Bin 0 -> 549 bytes .../wp-statistics/assets/images/flags/GU.png | Bin 0 -> 532 bytes .../wp-statistics/assets/images/flags/GW.png | Bin 0 -> 465 bytes .../wp-statistics/assets/images/flags/GY.png | Bin 0 -> 686 bytes .../wp-statistics/assets/images/flags/HK.png | Bin 0 -> 469 bytes .../wp-statistics/assets/images/flags/HN.png | Bin 0 -> 432 bytes .../wp-statistics/assets/images/flags/HR.png | Bin 0 -> 553 bytes .../wp-statistics/assets/images/flags/HT.png | Bin 0 -> 392 bytes .../wp-statistics/assets/images/flags/HU.png | Bin 0 -> 369 bytes .../wp-statistics/assets/images/flags/ID.png | Bin 0 -> 333 bytes .../wp-statistics/assets/images/flags/IE.png | Bin 0 -> 432 bytes .../wp-statistics/assets/images/flags/IL.png | Bin 0 -> 468 bytes .../wp-statistics/assets/images/flags/IM.png | Bin 0 -> 632 bytes .../wp-statistics/assets/images/flags/IN.png | Bin 0 -> 431 bytes .../wp-statistics/assets/images/flags/IQ.png | Bin 0 -> 475 bytes .../wp-statistics/assets/images/flags/IR.png | Bin 0 -> 471 bytes .../wp-statistics/assets/images/flags/IS.png | Bin 0 -> 494 bytes .../wp-statistics/assets/images/flags/IT.png | Bin 0 -> 440 bytes .../wp-statistics/assets/images/flags/JE.png | Bin 0 -> 624 bytes .../wp-statistics/assets/images/flags/JM.png | Bin 0 -> 711 bytes .../wp-statistics/assets/images/flags/JO.png | Bin 0 -> 521 bytes .../wp-statistics/assets/images/flags/JP.png | Bin 0 -> 471 bytes .../wp-statistics/assets/images/flags/KE.png | Bin 0 -> 631 bytes .../wp-statistics/assets/images/flags/KG.png | Bin 0 -> 525 bytes .../wp-statistics/assets/images/flags/KH.png | Bin 0 -> 535 bytes .../wp-statistics/assets/images/flags/KI.png | Bin 0 -> 679 bytes .../wp-statistics/assets/images/flags/KM.png | Bin 0 -> 561 bytes .../wp-statistics/assets/images/flags/KN.png | Bin 0 -> 662 bytes .../wp-statistics/assets/images/flags/KP.png | Bin 0 -> 397 bytes .../wp-statistics/assets/images/flags/KR.png | Bin 0 -> 658 bytes .../wp-statistics/assets/images/flags/KW.png | Bin 0 -> 476 bytes .../wp-statistics/assets/images/flags/KY.png | Bin 0 -> 600 bytes .../wp-statistics/assets/images/flags/KZ.png | Bin 0 -> 601 bytes .../wp-statistics/assets/images/flags/LA.png | Bin 0 -> 530 bytes .../wp-statistics/assets/images/flags/LB.png | Bin 0 -> 491 bytes .../wp-statistics/assets/images/flags/LC.png | Bin 0 -> 474 bytes .../wp-statistics/assets/images/flags/LI.png | Bin 0 -> 462 bytes .../wp-statistics/assets/images/flags/LK.png | Bin 0 -> 586 bytes .../wp-statistics/assets/images/flags/LR.png | Bin 0 -> 457 bytes .../wp-statistics/assets/images/flags/LS.png | Bin 0 -> 639 bytes .../wp-statistics/assets/images/flags/LT.png | Bin 0 -> 395 bytes .../wp-statistics/assets/images/flags/LU.png | Bin 0 -> 367 bytes .../wp-statistics/assets/images/flags/LV.png | Bin 0 -> 367 bytes .../wp-statistics/assets/images/flags/LY.png | Bin 0 -> 383 bytes .../wp-statistics/assets/images/flags/MA.png | Bin 0 -> 479 bytes .../wp-statistics/assets/images/flags/MC.png | Bin 0 -> 333 bytes .../wp-statistics/assets/images/flags/MD.png | Bin 0 -> 548 bytes .../wp-statistics/assets/images/flags/ME.png | Bin 0 -> 492 bytes .../wp-statistics/assets/images/flags/MF.png | Bin 0 -> 409 bytes .../wp-statistics/assets/images/flags/MG.png | Bin 0 -> 380 bytes .../wp-statistics/assets/images/flags/MH.png | Bin 0 -> 698 bytes .../wp-statistics/assets/images/flags/MK.png | Bin 0 -> 690 bytes .../wp-statistics/assets/images/flags/ML.png | Bin 0 -> 463 bytes .../wp-statistics/assets/images/flags/MM.png | Bin 0 -> 451 bytes .../wp-statistics/assets/images/flags/MN.png | Bin 0 -> 546 bytes .../wp-statistics/assets/images/flags/MO.png | Bin 0 -> 647 bytes .../wp-statistics/assets/images/flags/MP.png | Bin 0 -> 425 bytes .../wp-statistics/assets/images/flags/MQ.png | Bin 0 -> 604 bytes .../wp-statistics/assets/images/flags/MR.png | Bin 0 -> 567 bytes .../wp-statistics/assets/images/flags/MS.png | Bin 0 -> 592 bytes .../wp-statistics/assets/images/flags/MT.png | Bin 0 -> 410 bytes .../wp-statistics/assets/images/flags/MU.png | Bin 0 -> 416 bytes .../wp-statistics/assets/images/flags/MV.png | Bin 0 -> 537 bytes .../wp-statistics/assets/images/flags/MW.png | Bin 0 -> 485 bytes .../wp-statistics/assets/images/flags/MX.png | Bin 0 -> 526 bytes .../wp-statistics/assets/images/flags/MY.png | Bin 0 -> 509 bytes .../wp-statistics/assets/images/flags/MZ.png | Bin 0 -> 539 bytes .../wp-statistics/assets/images/flags/NA.png | Bin 0 -> 717 bytes .../assets/images/flags/NATO.png | Bin 0 -> 545 bytes .../wp-statistics/assets/images/flags/NC.png | Bin 0 -> 608 bytes .../wp-statistics/assets/images/flags/NE.png | Bin 0 -> 442 bytes .../wp-statistics/assets/images/flags/NF.png | Bin 0 -> 480 bytes .../wp-statistics/assets/images/flags/NG.png | Bin 0 -> 441 bytes .../wp-statistics/assets/images/flags/NI.png | Bin 0 -> 431 bytes .../wp-statistics/assets/images/flags/NL.png | Bin 0 -> 367 bytes .../wp-statistics/assets/images/flags/NO.png | Bin 0 -> 485 bytes .../wp-statistics/assets/images/flags/NP.png | Bin 0 -> 634 bytes .../wp-statistics/assets/images/flags/NR.png | Bin 0 -> 465 bytes .../wp-statistics/assets/images/flags/NZ.png | Bin 0 -> 623 bytes .../wp-statistics/assets/images/flags/OM.png | Bin 0 -> 446 bytes .../assets/images/flags/OPEC.png | Bin 0 -> 633 bytes .../wp-statistics/assets/images/flags/PA.png | Bin 0 -> 514 bytes .../wp-statistics/assets/images/flags/PE.png | Bin 0 -> 536 bytes .../wp-statistics/assets/images/flags/PF.png | Bin 0 -> 508 bytes .../wp-statistics/assets/images/flags/PG.png | Bin 0 -> 629 bytes .../wp-statistics/assets/images/flags/PH.png | Bin 0 -> 516 bytes .../wp-statistics/assets/images/flags/PK.png | Bin 0 -> 600 bytes .../wp-statistics/assets/images/flags/PL.png | Bin 0 -> 316 bytes .../wp-statistics/assets/images/flags/PR.png | Bin 0 -> 498 bytes .../wp-statistics/assets/images/flags/PS.png | Bin 0 -> 393 bytes .../wp-statistics/assets/images/flags/PT.png | Bin 0 -> 591 bytes .../wp-statistics/assets/images/flags/PW.png | Bin 0 -> 610 bytes .../wp-statistics/assets/images/flags/PY.png | Bin 0 -> 442 bytes .../wp-statistics/assets/images/flags/QA.png | Bin 0 -> 458 bytes .../wp-statistics/assets/images/flags/RE.png | Bin 0 -> 488 bytes .../wp-statistics/assets/images/flags/RO.png | Bin 0 -> 461 bytes .../wp-statistics/assets/images/flags/RS.png | Bin 0 -> 458 bytes .../wp-statistics/assets/images/flags/RU.png | Bin 0 -> 350 bytes .../wp-statistics/assets/images/flags/RW.png | Bin 0 -> 437 bytes .../wp-statistics/assets/images/flags/SA.png | Bin 0 -> 560 bytes .../wp-statistics/assets/images/flags/SB.png | Bin 0 -> 649 bytes .../wp-statistics/assets/images/flags/SC.png | Bin 0 -> 714 bytes .../wp-statistics/assets/images/flags/SD.png | Bin 0 -> 498 bytes .../wp-statistics/assets/images/flags/SE.png | Bin 0 -> 472 bytes .../wp-statistics/assets/images/flags/SG.png | Bin 0 -> 409 bytes .../wp-statistics/assets/images/flags/SI.png | Bin 0 -> 468 bytes .../wp-statistics/assets/images/flags/SK.png | Bin 0 -> 495 bytes .../wp-statistics/assets/images/flags/SL.png | Bin 0 -> 377 bytes .../wp-statistics/assets/images/flags/SM.png | Bin 0 -> 552 bytes .../wp-statistics/assets/images/flags/SN.png | Bin 0 -> 512 bytes .../wp-statistics/assets/images/flags/SO.png | Bin 0 -> 514 bytes .../wp-statistics/assets/images/flags/SR.png | Bin 0 -> 470 bytes .../wp-statistics/assets/images/flags/SS.png | Bin 0 -> 450 bytes .../wp-statistics/assets/images/flags/ST.png | Bin 0 -> 568 bytes .../wp-statistics/assets/images/flags/SV.png | Bin 0 -> 450 bytes .../wp-statistics/assets/images/flags/SY.png | Bin 0 -> 422 bytes .../wp-statistics/assets/images/flags/SZ.png | Bin 0 -> 594 bytes .../wp-statistics/assets/images/flags/TC.png | Bin 0 -> 553 bytes .../wp-statistics/assets/images/flags/TD.png | Bin 0 -> 461 bytes .../wp-statistics/assets/images/flags/TG.png | Bin 0 -> 494 bytes .../wp-statistics/assets/images/flags/TH.png | Bin 0 -> 356 bytes .../wp-statistics/assets/images/flags/TJ.png | Bin 0 -> 436 bytes .../wp-statistics/assets/images/flags/TL.png | Bin 0 -> 569 bytes .../wp-statistics/assets/images/flags/TM.png | Bin 0 -> 577 bytes .../wp-statistics/assets/images/flags/TN.png | Bin 0 -> 578 bytes .../wp-statistics/assets/images/flags/TO.png | Bin 0 -> 427 bytes .../wp-statistics/assets/images/flags/TR.png | Bin 0 -> 575 bytes .../wp-statistics/assets/images/flags/TT.png | Bin 0 -> 690 bytes .../wp-statistics/assets/images/flags/TV.png | Bin 0 -> 601 bytes .../wp-statistics/assets/images/flags/TW.png | Bin 0 -> 461 bytes .../wp-statistics/assets/images/flags/TZ.png | Bin 0 -> 655 bytes .../wp-statistics/assets/images/flags/UA.png | Bin 0 -> 399 bytes .../wp-statistics/assets/images/flags/UG.png | Bin 0 -> 536 bytes .../wp-statistics/assets/images/flags/US.png | Bin 0 -> 488 bytes .../wp-statistics/assets/images/flags/UY.png | Bin 0 -> 479 bytes .../wp-statistics/assets/images/flags/UZ.png | Bin 0 -> 462 bytes .../wp-statistics/assets/images/flags/VA.png | Bin 0 -> 483 bytes .../wp-statistics/assets/images/flags/VC.png | Bin 0 -> 610 bytes .../wp-statistics/assets/images/flags/VE.png | Bin 0 -> 464 bytes .../wp-statistics/assets/images/flags/VG.png | Bin 0 -> 618 bytes .../wp-statistics/assets/images/flags/VI.png | Bin 0 -> 612 bytes .../wp-statistics/assets/images/flags/VN.png | Bin 0 -> 520 bytes .../wp-statistics/assets/images/flags/VU.png | Bin 0 -> 570 bytes .../wp-statistics/assets/images/flags/WS.png | Bin 0 -> 492 bytes .../wp-statistics/assets/images/flags/XK.png | Bin 0 -> 557 bytes .../wp-statistics/assets/images/flags/YE.png | Bin 0 -> 362 bytes .../wp-statistics/assets/images/flags/YT.png | Bin 0 -> 647 bytes .../wp-statistics/assets/images/flags/ZA.png | Bin 0 -> 600 bytes .../wp-statistics/assets/images/flags/ZM.png | Bin 0 -> 527 bytes .../wp-statistics/assets/images/flags/ZW.png | Bin 0 -> 591 bytes .../wp-statistics/assets/images/google.png | Bin 0 -> 787 bytes .../wp-statistics/assets/images/icon.png | Bin 0 -> 741 bytes .../wp-statistics/assets/images/link.png | Bin 0 -> 922 bytes .../wp-statistics/assets/images/loading.gif | Bin 0 -> 1737 bytes .../wp-statistics/assets/images/loading.svg | 5 + .../assets/images/logo-250-white.png | Bin 0 -> 4434 bytes .../wp-statistics/assets/images/logo-250.png | Bin 0 -> 5366 bytes .../wp-statistics/assets/images/map.png | Bin 0 -> 514 bytes .../wp-statistics/assets/images/marker.png | Bin 0 -> 1206 bytes .../wp-statistics/assets/images/qwant.png | Bin 0 -> 723 bytes .../wp-statistics/assets/images/stars.png | Bin 0 -> 375 bytes .../assets/images/title-logo.png | Bin 0 -> 673 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 86 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 86 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 92 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 97 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 105 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 132 bytes .../assets/images/ui-icons_222222_256x240.png | Bin 0 -> 3581 bytes .../assets/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 3588 bytes .../assets/images/ui-icons_454545_256x240.png | Bin 0 -> 3571 bytes .../assets/images/ui-icons_888888_256x240.png | Bin 0 -> 3539 bytes .../assets/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 3585 bytes .../wp-statistics/assets/images/unknown.png | Bin 0 -> 541 bytes .../assets/images/veronalabs.svg | 19 + .../assets/images/welcome/icon-github.png | Bin 0 -> 916 bytes .../assets/images/welcome/icon-instagram.png | Bin 0 -> 740 bytes .../assets/images/welcome/icon-linkedin.png | Bin 0 -> 579 bytes .../assets/images/welcome/icon-twitter.png | Bin 0 -> 687 bytes .../welcome/what-is-new/coupon-code.png | Bin 0 -> 14212 bytes .../what-is-new/wp-telegram-channels.png | Bin 0 -> 44594 bytes .../what-is-new/wp-telegram-chatbox.gif | Bin 0 -> 52827 bytes .../what-is-new/wp-telegram-iphone-2.png | Bin 0 -> 180171 bytes .../welcome/what-is-new/wp-telegram-send.png | Bin 0 -> 21760 bytes .../what-is-new/wp-telegram-settings.png | Bin 0 -> 59751 bytes .../wp-statistics/assets/images/yahoo.png | Bin 0 -> 425 bytes .../wp-statistics/assets/images/yandex.png | Bin 0 -> 484 bytes .../plugins/wp-statistics/assets/index.php | 2 + .../assets/jqvmap/jquery.vmap.js | 1281 ++ .../assets/jqvmap/jquery.vmap.min.js | 10 + .../wp-statistics/assets/jqvmap/jqvmap.css | 50 + .../assets/jqvmap/jqvmap.min.css | 1 + .../assets/jqvmap/maps/jquery.vmap.world.js | 2 + .../jqvmap/maps/jquery.vmap.world.min.js | 2 + .../assets/js/Chart.bundle.min.js | 10 + .../wp-statistics/assets/js/Chart.min.js | 10 + .../plugins/wp-statistics/assets/js/admin.js | 63 + .../wp-statistics/assets/js/dashboard.js | 75 + .../plugins/wp-statistics/assets/js/editor.js | 66 + .../plugins/wp-statistics/assets/js/log.js | 69 + .../wp-statistics/assets/js/moment.min.js | 1 + .../wp-statistics/assets/js/tinymce.js | 101 + .../class-wp-statistics-admin-pages.php | 653 + .../classes/class-wp-statistics-admin.php | 702 + .../classes/class-wp-statistics-ajax.php | 435 + .../classes/class-wp-statistics-dashboard.php | 341 + .../classes/class-wp-statistics-editor.php | 201 + .../classes/class-wp-statistics-export.php | 343 + .../classes/class-wp-statistics-frontend.php | 303 + .../class-wp-statistics-geo-ip-hits.php | 73 + .../classes/class-wp-statistics-hits.php | 814 + .../classes/class-wp-statistics-install.php | 741 + .../class-wp-statistics-network-admin.php | 127 + .../classes/class-wp-statistics-rest.php | 156 + .../classes/class-wp-statistics-schedule.php | 251 + .../classes/class-wp-statistics-shortcode.php | 223 + .../classes/class-wp-statistics-tinymce.php | 150 + .../classes/class-wp-statistics-uninstall.php | 58 + .../classes/class-wp-statistics-updates.php | 299 + .../classes/class-wp-statistics-welcome.php | 102 + .../classes/class-wp-statistics-widget.php | 435 + .../includes/classes/class-wp-statistics.php | 1558 ++ .../includes/classes/important.txt | 2 + .../includes/functions/country-codes.php | 287 + .../functions/country-coordinates.php | 249 + .../includes/functions/functions.php | 2264 ++ .../includes/functions/purge-hits.php | 67 + .../includes/functions/purge.php | 154 + .../includes/functions/tinymce.php | 10 + .../plugins/wp-statistics/includes/index.php | 2 + .../includes/log/all-browsers.php | 313 + .../wp-statistics/includes/log/authors.php | 261 + .../wp-statistics/includes/log/categories.php | 248 + .../wp-statistics/includes/log/exclusions.php | 269 + .../includes/log/hit-statistics.php | 166 + .../includes/log/last-search.php | 223 + .../includes/log/last-visitor.php | 208 + .../wp-statistics/includes/log/log.php | 140 + .../wp-statistics/includes/log/online.php | 169 + .../includes/log/page-statistics.php | 95 + .../includes/log/search-statistics.php | 127 + .../wp-statistics/includes/log/tags.php | 264 + .../includes/log/top-countries.php | 221 + .../wp-statistics/includes/log/top-pages.php | 177 + .../includes/log/top-referring.php | 291 + .../includes/log/top-visitors.php | 75 + .../includes/log/widgets/about.php | 30 + .../includes/log/widgets/browsers.php | 86 + .../includes/log/widgets/countries.php | 29 + .../includes/log/widgets/hits.php | 78 + .../includes/log/widgets/jqv.map.php | 124 + .../includes/log/widgets/page.php | 104 + .../includes/log/widgets/pages.php | 49 + .../includes/log/widgets/quickstats.php | 235 + .../includes/log/widgets/recent.php | 86 + .../includes/log/widgets/referring.php | 73 + .../includes/log/widgets/search.php | 96 + .../includes/log/widgets/summary.php | 222 + .../includes/log/widgets/top.visitors.php | 91 + .../includes/log/widgets/users_online.php | 41 + .../includes/log/widgets/words.php | 119 + .../tabs/wps-optimization-database.php | 123 + .../tabs/wps-optimization-export.php | 63 + .../tabs/wps-optimization-historical.php | 78 + .../tabs/wps-optimization-purging.php | 341 + .../tabs/wps-optimization-resources.php | 294 + .../tabs/wps-optimization-updates.php | 58 + .../optimization/wps-optimization.php | 270 + .../wp-statistics/includes/robotslist.php | 181 + .../includes/settings/tabs/wps-about.php | 163 + .../settings/tabs/wps-access-level.php | 94 + .../includes/settings/tabs/wps-exclusions.php | 466 + .../includes/settings/tabs/wps-externals.php | 315 + .../includes/settings/tabs/wps-general.php | 450 + .../settings/tabs/wps-maintenance.php | 139 + .../settings/tabs/wps-notifications.php | 293 + .../settings/tabs/wps-overview-display.php | 106 + .../includes/settings/tabs/wps-privacy.php | 89 + .../includes/settings/tabs/wps-removal.php | 129 + .../includes/settings/tabs/wps-visitor-ip.php | 168 + .../includes/settings/wps-settings.php | 96 + .../includes/templates/add-ons.php | 65 + .../includes/templates/index.php | 2 + .../includes/templates/plugins.php | 6 + .../includes/templates/postbox.php | 41 + .../includes/templates/welcome.php | 187 + .../includes/vendor/autoload.php | 7 + .../includes/vendor/composer/ClassLoader.php | 445 + .../includes/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 9 + .../vendor/composer/autoload_namespaces.php | 10 + .../vendor/composer/autoload_psr4.php | 18 + .../vendor/composer/autoload_real.php | 52 + .../vendor/composer/autoload_static.php | 101 + .../vendor/composer/ca-bundle/LICENSE | 19 + .../vendor/composer/ca-bundle/README.md | 85 + .../vendor/composer/ca-bundle/composer.json | 54 + .../vendor/composer/ca-bundle/res/cacert.pem | 3401 +++ .../composer/ca-bundle/src/CaBundle.php | 308 + .../includes/vendor/composer/installed.json | 481 + .../vendor/erusev/parsedown/LICENSE.txt | 20 + .../vendor/erusev/parsedown/Parsedown.php | 1693 ++ .../vendor/erusev/parsedown/README.md | 86 + .../vendor/erusev/parsedown/composer.json | 33 + .../includes/vendor/geoip2/geoip2/.gitmodules | 3 + .../includes/vendor/geoip2/geoip2/.php_cs | 35 + .../vendor/geoip2/geoip2/CHANGELOG.md | 262 + .../includes/vendor/geoip2/geoip2/LICENSE | 202 + .../includes/vendor/geoip2/geoip2/README.md | 401 + .../vendor/geoip2/geoip2/composer.json | 30 + .../geoip2/geoip2/src/Database/Reader.php | 283 + .../Exception/AddressNotFoundException.php | 10 + .../src/Exception/AuthenticationException.php | 10 + .../geoip2/src/Exception/GeoIp2Exception.php | 10 + .../geoip2/src/Exception/HttpException.php | 24 + .../src/Exception/InvalidRequestException.php | 26 + .../src/Exception/OutOfQueriesException.php | 10 + .../geoip2/geoip2/src/Model/AbstractModel.php | 67 + .../geoip2/geoip2/src/Model/AnonymousIp.php | 46 + .../vendor/geoip2/geoip2/src/Model/Asn.php | 35 + .../vendor/geoip2/geoip2/src/Model/City.php | 133 + .../geoip2/src/Model/ConnectionType.php | 31 + .../geoip2/geoip2/src/Model/Country.php | 71 + .../vendor/geoip2/geoip2/src/Model/Domain.php | 31 + .../geoip2/geoip2/src/Model/Enterprise.php | 47 + .../geoip2/geoip2/src/Model/Insights.php | 47 + .../vendor/geoip2/geoip2/src/Model/Isp.php | 44 + .../geoip2/geoip2/src/ProviderInterface.php | 20 + .../geoip2/src/Record/AbstractPlaceRecord.php | 66 + .../geoip2/src/Record/AbstractRecord.php | 61 + .../vendor/geoip2/geoip2/src/Record/City.php | 29 + .../geoip2/geoip2/src/Record/Continent.php | 32 + .../geoip2/geoip2/src/Record/Country.php | 41 + .../geoip2/geoip2/src/Record/Location.php | 52 + .../geoip2/geoip2/src/Record/MaxMind.php | 19 + .../geoip2/geoip2/src/Record/Postal.php | 26 + .../geoip2/src/Record/RepresentedCountry.php | 39 + .../geoip2/geoip2/src/Record/Subdivision.php | 40 + .../geoip2/geoip2/src/Record/Traits.php | 114 + .../geoip2/geoip2/src/WebService/Client.php | 239 + .../vendor/jaybizzle/crawler-detect/LICENSE | 22 + .../vendor/jaybizzle/crawler-detect/README.md | 72 + .../jaybizzle/crawler-detect/composer.json | 30 + .../jaybizzle/crawler-detect/export.php | 41 + .../crawler-detect/raw/Crawlers.json | 1 + .../jaybizzle/crawler-detect/raw/Crawlers.txt | 1203 + .../crawler-detect/raw/Exclusions.json | 1 + .../crawler-detect/raw/Exclusions.txt | 47 + .../jaybizzle/crawler-detect/raw/Headers.json | 1 + .../jaybizzle/crawler-detect/raw/Headers.txt | 10 + .../crawler-detect/src/CrawlerDetect.php | 193 + .../src/Fixtures/AbstractProvider.php | 32 + .../crawler-detect/src/Fixtures/Crawlers.php | 1226 + .../src/Fixtures/Exclusions.php | 71 + .../crawler-detect/src/Fixtures/Headers.php | 37 + .../vendor/maxmind-db/reader/CHANGELOG.md | 149 + .../includes/vendor/maxmind-db/reader/LICENSE | 202 + .../vendor/maxmind-db/reader/README.md | 156 + .../vendor/maxmind-db/reader/autoload.php | 45 + .../vendor/maxmind-db/reader/composer.json | 34 + .../vendor/maxmind-db/reader/ext/config.m4 | 40 + .../vendor/maxmind-db/reader/ext/maxminddb.c | 623 + .../maxmind-db/reader/ext/php_maxminddb.h | 24 + .../maxmind-db/reader/ext/tests/001-load.phpt | 12 + .../reader/ext/tests/002-final.phpt | 13 + .../reader/ext/tests/003-open-basedir.phpt | 12 + .../reader/src/MaxMind/Db/Reader.php | 309 + .../reader/src/MaxMind/Db/Reader/Decoder.php | 341 + .../Db/Reader/InvalidDatabaseException.php | 10 + .../reader/src/MaxMind/Db/Reader/Metadata.php | 69 + .../reader/src/MaxMind/Db/Reader/Util.php | 26 + .../maxmind/web-service-common/CHANGELOG.md | 79 + .../vendor/maxmind/web-service-common/LICENSE | 202 + .../maxmind/web-service-common/README.md | 26 + .../maxmind/web-service-common/composer.json | 31 + .../web-service-common/dev-bin/release.sh | 60 + .../src/Exception/AuthenticationException.php | 10 + .../src/Exception/HttpException.php | 40 + .../Exception/InsufficientFundsException.php | 10 + .../src/Exception/InvalidInputException.php | 12 + .../src/Exception/InvalidRequestException.php | 37 + .../Exception/IpAddressNotFoundException.php | 7 + .../Exception/PermissionRequiredException.php | 10 + .../src/Exception/WebServiceException.php | 10 + .../src/WebService/Client.php | 472 + .../src/WebService/Http/CurlRequest.php | 110 + .../src/WebService/Http/Request.php | 29 + .../src/WebService/Http/RequestFactory.php | 26 + .../includes/vendor/psr/cache/CHANGELOG.md | 16 + .../includes/vendor/psr/cache/LICENSE.txt | 19 + .../includes/vendor/psr/cache/README.md | 9 + .../includes/vendor/psr/cache/composer.json | 25 + .../vendor/psr/cache/src/CacheException.php | 10 + .../psr/cache/src/CacheItemInterface.php | 105 + .../psr/cache/src/CacheItemPoolInterface.php | 138 + .../cache/src/InvalidArgumentException.php | 13 + .../vendor/s1lentium/iptools/.codeclimate.yml | 4 + .../vendor/s1lentium/iptools/.gitignore | 32 + .../vendor/s1lentium/iptools/.travis.yml | 17 + .../includes/vendor/s1lentium/iptools/LICENSE | 20 + .../vendor/s1lentium/iptools/README.md | 206 + .../vendor/s1lentium/iptools/composer.json | 25 + .../vendor/s1lentium/iptools/src/IP.php | 286 + .../vendor/s1lentium/iptools/src/Network.php | 365 + .../s1lentium/iptools/src/PropertyTrait.php | 45 + .../vendor/s1lentium/iptools/src/Range.php | 228 + .../vendor/s1lentium/iptools/tests/IPTest.php | 255 + .../s1lentium/iptools/tests/NetworkTest.php | 305 + .../s1lentium/iptools/tests/RangeTest.php | 146 + .../s1lentium/iptools/tests/bootstrap.php | 10 + .../vendor/whichbrowser/parser/.coveralls.yml | 7 + .../vendor/whichbrowser/parser/.gitignore | 12 + .../vendor/whichbrowser/parser/.travis.yml | 39 + .../whichbrowser/parser/CONTRIBUTING.md | 125 + .../vendor/whichbrowser/parser/LICENSE | 20 + .../vendor/whichbrowser/parser/README.md | 510 + .../whichbrowser/parser/bin/bootstrap.php | 10 + .../vendor/whichbrowser/parser/bin/query.php | 42 + .../vendor/whichbrowser/parser/bin/runner.php | 101 + .../parser/bin/update-browser-ids.php | 34 + .../whichbrowser/parser/bin/update-chrome.php | 58 + .../parser/bin/update-indices.php | 199 + .../parser/bin/update-profiles.php | 47 + .../parser/bin/update-regexes.php | 118 + .../vendor/whichbrowser/parser/bootstrap.php | 30 + .../vendor/whichbrowser/parser/composer.json | 47 + .../parser/data/applications-bots.php | 293 + .../parser/data/applications-browsers.php | 253 + .../parser/data/applications-others.php | 146 + .../parser/data/browsers-chrome.php | 127 + .../parser/data/build-android.php | 244 + .../whichbrowser/parser/data/id-android.php | 323 + .../parser/data/indices/models-android.php | 8273 +++++++ .../parser/data/indices/models-asha.php | 24 + .../parser/data/indices/models-bada.php | 27 + .../parser/data/indices/models-brew.php | 180 + .../parser/data/indices/models-feature.php | 231 + .../parser/data/indices/models-firefoxos.php | 72 + .../parser/data/indices/models-kddi.php | 393 + .../parser/data/indices/models-palmos.php | 115 + .../parser/data/indices/models-s30plus.php | 20 + .../parser/data/indices/models-s40.php | 249 + .../parser/data/indices/models-symbian.php | 344 + .../parser/data/indices/models-tizen.php | 120 + .../parser/data/indices/models-touchwiz.php | 55 + .../parser/data/indices/models-wm.php | 535 + .../parser/data/indices/models-wp.php | 548 + .../parser/data/manufacturer-names.php | 40 + .../parser/data/models-android.php | 18691 ++++++++++++++++ .../whichbrowser/parser/data/models-asha.php | 18 + .../whichbrowser/parser/data/models-bada.php | 18 + .../parser/data/models-blackberry.php | 52 + .../whichbrowser/parser/data/models-brew.php | 96 + .../parser/data/models-feature.php | 116 + .../parser/data/models-firefoxos.php | 43 + .../whichbrowser/parser/data/models-ios.php | 103 + .../whichbrowser/parser/data/models-kddi.php | 353 + .../parser/data/models-palmos.php | 94 + .../parser/data/models-s30plus.php | 13 + .../whichbrowser/parser/data/models-s40.php | 135 + .../parser/data/models-symbian.php | 182 + .../whichbrowser/parser/data/models-tizen.php | 69 + .../parser/data/models-touchwiz.php | 46 + .../whichbrowser/parser/data/models-wm.php | 323 + .../whichbrowser/parser/data/models-wp.php | 333 + .../whichbrowser/parser/data/os-cfnetwork.php | 97 + .../whichbrowser/parser/data/os-darwin.php | 27 + .../whichbrowser/parser/data/profiles.php | 10044 +++++++++ .../parser/data/regexes/applications-bots.php | 5 + .../data/regexes/applications-browsers.php | 5 + .../data/regexes/applications-others.php | 5 + .../vendor/whichbrowser/parser/phpunit.xml | 32 + .../whichbrowser/parser/src/Analyser.php | 48 + .../parser/src/Analyser/Camouflage.php | 314 + .../parser/src/Analyser/Corrections.php | 174 + .../parser/src/Analyser/Derive.php | 486 + .../parser/src/Analyser/Header.php | 148 + .../parser/src/Analyser/Header/Baidu.php | 17 + .../parser/src/Analyser/Header/BrowserId.php | 69 + .../parser/src/Analyser/Header/OperaMini.php | 72 + .../parser/src/Analyser/Header/Puffin.php | 50 + .../src/Analyser/Header/UCBrowserNew.php | 182 + .../src/Analyser/Header/UCBrowserOld.php | 39 + .../parser/src/Analyser/Header/Useragent.php | 45 + .../Analyser/Header/Useragent/Application.php | 497 + .../src/Analyser/Header/Useragent/Bot.php | 47 + .../src/Analyser/Header/Useragent/Browser.php | 2431 ++ .../src/Analyser/Header/Useragent/Device.php | 29 + .../Header/Useragent/Device/Appliance.php | 46 + .../Analyser/Header/Useragent/Device/Cars.php | 35 + .../Header/Useragent/Device/Ereader.php | 218 + .../Header/Useragent/Device/Gaming.php | 279 + .../Analyser/Header/Useragent/Device/Gps.php | 34 + .../Header/Useragent/Device/Media.php | 119 + .../Header/Useragent/Device/Mobile.php | 1303 ++ .../Analyser/Header/Useragent/Device/Pda.php | 290 + .../Header/Useragent/Device/Phone.php | 46 + .../Header/Useragent/Device/Printer.php | 66 + .../Header/Useragent/Device/Signage.php | 41 + .../Header/Useragent/Device/Tablet.php | 37 + .../Header/Useragent/Device/Television.php | 1192 + .../src/Analyser/Header/Useragent/Engine.php | 174 + .../src/Analyser/Header/Useragent/Os.php | 2439 ++ .../src/Analyser/Header/Useragent/Using.php | 59 + .../parser/src/Analyser/Header/Wap.php | 41 + .../vendor/whichbrowser/parser/src/Cache.php | 110 + .../parser/src/Constants/BrowserType.php | 28 + .../parser/src/Constants/DeviceSubType.php | 13 + .../parser/src/Constants/DeviceType.php | 33 + .../parser/src/Constants/EngineType.php | 14 + .../parser/src/Constants/Feature.php | 15 + .../parser/src/Constants/Flag.php | 17 + .../whichbrowser/parser/src/Constants/Id.php | 13 + .../parser/src/Data/Applications.php | 99 + .../parser/src/Data/BrowserIds.php | 17 + .../whichbrowser/parser/src/Data/BuildIds.php | 23 + .../parser/src/Data/CFNetwork.php | 27 + .../whichbrowser/parser/src/Data/Chrome.php | 31 + .../whichbrowser/parser/src/Data/Darwin.php | 29 + .../parser/src/Data/DeviceModels.php | 353 + .../parser/src/Data/DeviceProfiles.php | 19 + .../parser/src/Data/Manufacturers.php | 30 + .../whichbrowser/parser/src/Model/Browser.php | 181 + .../whichbrowser/parser/src/Model/Device.php | 251 + .../whichbrowser/parser/src/Model/Engine.php | 35 + .../whichbrowser/parser/src/Model/Family.php | 35 + .../whichbrowser/parser/src/Model/Main.php | 373 + .../whichbrowser/parser/src/Model/Os.php | 140 + .../parser/src/Model/Primitive/Base.php | 81 + .../src/Model/Primitive/NameVersion.php | 121 + .../whichbrowser/parser/src/Model/Using.php | 35 + .../whichbrowser/parser/src/Model/Version.php | 301 + .../vendor/whichbrowser/parser/src/Parser.php | 58 + .../parser/tests/data/appliance/amstrad.yaml | 4 + .../tests/data/appliance/familyhub.yaml | 4 + .../parser/tests/data/appliance/i-opener.yaml | 4 + .../parser/tests/data/appliance/weblight.yaml | 8 + .../parser/tests/data/bots/disabled.yaml | 25 + .../tests/data/bots/false-positive.yaml | 8 + .../parser/tests/data/bots/generic.yaml | 508 + .../parser/tests/data/camera/os-android.yaml | 4 + .../parser/tests/data/camera/os-tizen.yaml | 8 + .../parser/tests/data/car/tesla.yaml | 8 + .../parser/tests/data/car/volvo.yaml | 9 + .../parser/tests/data/desktop/app-editor.yaml | 28 + .../tests/data/desktop/app-mediaplayer.yaml | 4 + .../tests/data/desktop/browser-arachne.yaml | 8 + .../tests/data/desktop/browser-brave.yaml | 12 + .../tests/data/desktop/browser-chrome.yaml | 64 + .../tests/data/desktop/browser-chromium.yaml | 52 + .../tests/data/desktop/browser-edge.yaml | 32 + .../tests/data/desktop/browser-firefox.yaml | 256 + .../tests/data/desktop/browser-icab.yaml | 40 + .../parser/tests/data/desktop/browser-ie.yaml | 104 + .../tests/data/desktop/browser-konqueror.yaml | 80 + .../tests/data/desktop/browser-maxthon.yaml | 136 + .../tests/data/desktop/browser-midori.yaml | 60 + .../tests/data/desktop/browser-mosaic.yaml | 96 + .../tests/data/desktop/browser-netfront.yaml | 20 + .../tests/data/desktop/browser-netscape.yaml | 76 + .../tests/data/desktop/browser-omniweb.yaml | 92 + .../tests/data/desktop/browser-opera.yaml | 431 + .../tests/data/desktop/browser-other.yaml | 160 + .../parser/tests/data/desktop/browser-qq.yaml | 68 + .../tests/data/desktop/browser-safari.yaml | 220 + .../tests/data/desktop/browser-seamonkey.yaml | 88 + .../tests/data/desktop/browser-text.yaml | 48 + .../parser/tests/data/desktop/browser-uc.yaml | 101 + .../tests/data/desktop/engine-goanna.yaml | 28 + .../tests/data/desktop/engine-servo.yaml | 12 + .../parser/tests/data/desktop/os-amigaos.yaml | 56 + .../parser/tests/data/desktop/os-aros.yaml | 8 + .../parser/tests/data/desktop/os-beos.yaml | 12 + .../parser/tests/data/desktop/os-bsd.yaml | 148 + .../tests/data/desktop/os-chromeos.yaml | 32 + .../parser/tests/data/desktop/os-haiku.yaml | 44 + .../parser/tests/data/desktop/os-irix.yaml | 20 + .../parser/tests/data/desktop/os-joli.yaml | 8 + .../parser/tests/data/desktop/os-linux.yaml | 420 + .../parser/tests/data/desktop/os-morphos.yaml | 32 + .../parser/tests/data/desktop/os-os2.yaml | 64 + .../parser/tests/data/desktop/os-osx.yaml | 4 + .../parser/tests/data/desktop/os-redstar.yaml | 8 + .../parser/tests/data/desktop/os-remix.yaml | 12 + .../parser/tests/data/desktop/os-riscos.yaml | 32 + .../parser/tests/data/desktop/os-solaris.yaml | 76 + .../tests/data/desktop/os-syllable.yaml | 16 + .../parser/tests/data/desktop/os-unix.yaml | 72 + .../parser/tests/data/desktop/os-windows.yaml | 88 + .../parser/tests/data/desktop/other.yaml | 16 + .../tests/data/desktop/platform-electron.yaml | 16 + .../tests/data/desktop/platform-qt.yaml | 8 + .../parser/tests/data/ereader/amazon.yaml | 24 + .../parser/tests/data/ereader/kobo.yaml | 8 + .../parser/tests/data/ereader/nook.yaml | 32 + .../parser/tests/data/ereader/other.yaml | 8 + .../parser/tests/data/ereader/pocketbook.yaml | 52 + .../parser/tests/data/ereader/sony.yaml | 16 + .../parser/tests/data/gaming/microsoft.yaml | 20 + .../parser/tests/data/gaming/nintendo.yaml | 140 + .../parser/tests/data/gaming/other.yaml | 12 + .../parser/tests/data/gaming/sega.yaml | 36 + .../parser/tests/data/gaming/sony.yaml | 204 + .../tests/data/headset/device-gear.yaml | 16 + .../tests/data/headset/device-glass.yaml | 20 + .../tests/data/headset/device-oculus.yaml | 4 + .../tests/data/media/device-archos.yaml | 36 + .../tests/data/media/device-walkman.yaml | 4 + .../parser/tests/data/media/device-zune.yaml | 4 + .../parser/tests/data/mobile/app-chat.yaml | 84 + .../tests/data/mobile/app-download.yaml | 4 + .../parser/tests/data/mobile/app-email.yaml | 36 + .../parser/tests/data/mobile/app-media.yaml | 8 + .../parser/tests/data/mobile/app-news.yaml | 8 + .../parser/tests/data/mobile/app-other.yaml | 76 + .../parser/tests/data/mobile/app-search.yaml | 16 + .../tests/data/mobile/app-shopping.yaml | 12 + .../parser/tests/data/mobile/app-social.yaml | 88 + .../tests/data/mobile/browser-2345.yaml | 8 + .../parser/tests/data/mobile/browser-360.yaml | 204 + .../parser/tests/data/mobile/browser-au.yaml | 24 + .../tests/data/mobile/browser-baidu.yaml | 36 + .../tests/data/mobile/browser-chrome.yaml | 292 + .../tests/data/mobile/browser-dolfin.yaml | 64 + .../tests/data/mobile/browser-dolphin.yaml | 60 + .../tests/data/mobile/browser-edge.yaml | 40 + .../parser/tests/data/mobile/browser-eui.yaml | 12 + .../data/mobile/browser-firefox-ios.yaml | 20 + .../tests/data/mobile/browser-ibrowser.yaml | 60 + .../tests/data/mobile/browser-iris.yaml | 24 + .../parser/tests/data/mobile/browser-jig.yaml | 156 + .../parser/tests/data/mobile/browser-lg.yaml | 16 + .../tests/data/mobile/browser-maxthon.yaml | 72 + .../parser/tests/data/mobile/browser-mib.yaml | 8 + .../data/mobile/browser-minibrowser.yaml | 28 + .../parser/tests/data/mobile/browser-mme.yaml | 36 + .../tests/data/mobile/browser-netfront.yaml | 132 + .../tests/data/mobile/browser-ninesky.yaml | 40 + .../data/mobile/browser-nokiaxpress.yaml | 64 + .../tests/data/mobile/browser-novarra.yaml | 16 + .../tests/data/mobile/browser-obigo.yaml | 188 + .../tests/data/mobile/browser-openwave.yaml | 124 + .../tests/data/mobile/browser-opera.yaml | 124 + .../tests/data/mobile/browser-other.yaml | 48 + .../tests/data/mobile/browser-polaris.yaml | 8 + .../tests/data/mobile/browser-puffin.yaml | 92 + .../parser/tests/data/mobile/browser-qq.yaml | 92 + .../tests/data/mobile/browser-samsung.yaml | 36 + .../tests/data/mobile/browser-skyfire.yaml | 12 + .../tests/data/mobile/browser-sogou.yaml | 72 + .../parser/tests/data/mobile/browser-uc.yaml | 560 + .../tests/data/mobile/browser-webview.yaml | 28 + .../tests/data/mobile/carrier-docomo.yaml | 140 + .../tests/data/mobile/carrier-emobile.yaml | 44 + .../tests/data/mobile/carrier-kddi.yaml | 92 + .../tests/data/mobile/carrier-softbank.yaml | 124 + .../tests/data/mobile/carrier-willcom.yaml | 72 + .../parser/tests/data/mobile/device-kin.yaml | 8 + .../tests/data/mobile/device-nokiax.yaml | 72 + .../tests/data/mobile/engine-servo.yaml | 8 + .../data/mobile/header-requestedwith.yaml | 48 + .../parser/tests/data/mobile/header-wap.yaml | 72 + .../tests/data/mobile/manufacturer-lg.yaml | 852 + .../data/mobile/manufacturer-microsoft.yaml | 48 + .../data/mobile/manufacturer-motorola.yaml | 504 + .../data/mobile/manufacturer-nokia-asha.yaml | 20 + .../mobile/manufacturer-nokia-series40.yaml | 240 + .../mobile/manufacturer-nokia-series60.yaml | 284 + .../mobile/manufacturer-nokia-windows.yaml | 132 + .../mobile/manufacturer-samsung-android.yaml | 1100 + .../mobile/manufacturer-samsung-bada.yaml | 36 + .../data/mobile/manufacturer-siemens.yaml | 8 + .../tests/data/mobile/manufacturer-sony.yaml | 316 + .../mobile/manufacturer-sonyericsson.yaml | 88 + .../data/mobile/manufacturer-xiaomi.yaml | 36 + .../parser/tests/data/mobile/os-aliyun.yaml | 236 + .../parser/tests/data/mobile/os-android.yaml | 336 + .../parser/tests/data/mobile/os-asha.yaml | 148 + .../parser/tests/data/mobile/os-bada.yaml | 208 + .../parser/tests/data/mobile/os-baiduyi.yaml | 16 + .../tests/data/mobile/os-blackberry-10.yaml | 112 + .../tests/data/mobile/os-blackberry.yaml | 364 + .../parser/tests/data/mobile/os-brew.yaml | 232 + .../parser/tests/data/mobile/os-cos.yaml | 72 + .../parser/tests/data/mobile/os-ezxlinux.yaml | 20 + .../parser/tests/data/mobile/os-feature.yaml | 640 + .../tests/data/mobile/os-firefoxos.yaml | 84 + .../parser/tests/data/mobile/os-fireos.yaml | 12 + .../parser/tests/data/mobile/os-geos.yaml | 8 + .../parser/tests/data/mobile/os-ios.yaml | 468 + .../parser/tests/data/mobile/os-kaios.yaml | 52 + .../parser/tests/data/mobile/os-limo.yaml | 12 + .../parser/tests/data/mobile/os-maemo.yaml | 80 + .../parser/tests/data/mobile/os-meego.yaml | 40 + .../parser/tests/data/mobile/os-mre.yaml | 52 + .../parser/tests/data/mobile/os-s30.yaml | 8 + .../parser/tests/data/mobile/os-s40.yaml | 28 + .../parser/tests/data/mobile/os-s80.yaml | 20 + .../parser/tests/data/mobile/os-sailfish.yaml | 32 + .../tests/data/mobile/os-spreadtrum.yaml | 8 + .../parser/tests/data/mobile/os-symbian.yaml | 224 + .../parser/tests/data/mobile/os-threadx.yaml | 12 + .../parser/tests/data/mobile/os-tizen.yaml | 184 + .../parser/tests/data/mobile/os-ubuntu.yaml | 8 + .../parser/tests/data/mobile/os-vre.yaml | 4 + .../parser/tests/data/mobile/os-webos.yaml | 140 + .../tests/data/mobile/os-windowsce.yaml | 60 + .../tests/data/mobile/os-windowsmobile.yaml | 732 + .../tests/data/mobile/os-windowsphone.yaml | 1176 + .../parser/tests/data/mobile/os-wophone.yaml | 8 + .../tests/data/mobile/platform-air.yaml | 8 + .../parser/tests/data/mobile/wap.yaml | 156 + .../parser/tests/data/other/camouflage.yaml | 167 + .../parser/tests/data/other/reported.yaml | 4 + .../tests/data/other/xmlhttprequest.yaml | 4 + .../parser/tests/data/pda/airboard.yaml | 16 + .../parser/tests/data/pda/casio.yaml | 8 + .../parser/tests/data/pda/generic.yaml | 32 + .../parser/tests/data/pda/mylo.yaml | 8 + .../parser/tests/data/pda/oasys.yaml | 4 + .../parser/tests/data/pda/palm.yaml | 100 + .../parser/tests/data/pda/psion.yaml | 20 + .../parser/tests/data/pda/zaurus.yaml | 72 + .../parser/tests/data/phone/snom.yaml | 4 + .../parser/tests/data/printer/canon.yaml | 32 + .../parser/tests/data/printer/hp.yaml | 8 + .../parser/tests/data/printer/other.yaml | 16 + .../parser/tests/data/printer/taskalfa.yaml | 4 + .../parser/tests/data/signage/other.yaml | 48 + .../tests/data/tablet/browser-opera.yaml | 20 + .../data/tablet/manufacturer-samsung.yaml | 192 + .../data/tablet/manufacturer-webtab.yaml | 4 + .../parser/tests/data/tablet/os-android.yaml | 8 + .../tests/data/tablet/os-blackberry.yaml | 36 + .../tests/data/tablet/os-firefoxos.yaml | 16 + .../parser/tests/data/tablet/os-fireos.yaml | 124 + .../parser/tests/data/tablet/os-ios.yaml | 4 + .../parser/tests/data/tablet/os-leos.yaml | 8 + .../parser/tests/data/tablet/os-ubuntu.yaml | 4 + .../parser/tests/data/tablet/os-webos.yaml | 12 + .../parser/tests/data/television/appletv.yaml | 8 + .../tests/data/television/browser-espial.yaml | 32 + .../data/television/browser-machblue.yaml | 16 + .../tests/data/television/browser-nx.yaml | 44 + .../tests/data/television/browser-opera.yaml | 144 + .../parser/tests/data/television/firetv.yaml | 4 + .../parser/tests/data/television/google.yaml | 156 + .../parser/tests/data/television/hitachi.yaml | 4 + .../parser/tests/data/television/kreatv.yaml | 28 + .../parser/tests/data/television/lg.yaml | 324 + .../tests/data/television/mitsubishi.yaml | 4 + .../parser/tests/data/television/nvidia.yaml | 4 + .../parser/tests/data/television/opentv.yaml | 68 + .../parser/tests/data/television/other.yaml | 616 + .../tests/data/television/panasonic.yaml | 176 + .../parser/tests/data/television/philips.yaml | 240 + .../parser/tests/data/television/pioneer.yaml | 8 + .../parser/tests/data/television/roku.yaml | 20 + .../parser/tests/data/television/samsung.yaml | 168 + .../parser/tests/data/television/sanyo.yaml | 8 + .../parser/tests/data/television/sharp.yaml | 156 + .../parser/tests/data/television/sony.yaml | 308 + .../parser/tests/data/television/toshiba.yaml | 116 + .../tests/data/watch/os-android-wear.yaml | 32 + .../parser/tests/data/watch/os-android.yaml | 12 + .../parser/tests/data/watch/os-tizen.yaml | 12 + .../parser/tests/src/Testrunner.php | 244 + .../whichbrowser/parser/tests/src/Tests.php | 16 + .../parser/tests/src/polyfills.php | 35 + .../parser/tests/unit/AnalyserTest.php | 44 + .../parser/tests/unit/CacheTest.php | 62 + .../parser/tests/unit/Model/BrowserTest.php | 237 + .../parser/tests/unit/Model/DeviceTest.php | 298 + .../parser/tests/unit/Model/EngineTest.php | 138 + .../parser/tests/unit/Model/FamilyTest.php | 72 + .../parser/tests/unit/Model/MainTest.php | 356 + .../parser/tests/unit/Model/OsTest.php | 272 + .../tests/unit/Model/Primitive/BaseTest.php | 48 + .../unit/Model/Primitive/NameVersionTest.php | 128 + .../parser/tests/unit/Model/UsingTest.php | 72 + .../parser/tests/unit/Model/VersionTest.php | 292 + .../parser/tests/unit/ParserTest.php | 55 + wp-content/plugins/wp-statistics/index.php | 2 + .../plugins/wp-statistics/languages/index.php | 2 + .../wp-statistics/languages/readme.txt | 5 + wp-content/plugins/wp-statistics/license.txt | 674 + wp-content/plugins/wp-statistics/readme.txt | 570 + .../plugins/wp-statistics/uninstall.php | 10 + .../plugins/wp-statistics/wp-statistics.php | 17 + .../external/do_not_donate_smallest.png | Bin 0 -> 9585 bytes .../wp-youtube-lyte/external/index.html | 1 + .../wp-youtube-lyte/external/jquery.cookie.js | 89 + .../external/jquery.cookie.min.js | 1 + .../external/unslider-dots.css | 33 + .../wp-youtube-lyte/external/unslider-min.js | 1 + .../wp-youtube-lyte/external/unslider.css | 1 + wp-content/plugins/wp-youtube-lyte/index.html | 1 + .../wp-youtube-lyte/languages/index.html | 1 + .../languages/wp-youtube-lyte-ca_ES.mo | Bin 0 -> 1504 bytes .../languages/wp-youtube-lyte-ca_ES.po | 203 + .../languages/wp-youtube-lyte-de_DE.mo | Bin 0 -> 7416 bytes .../languages/wp-youtube-lyte-de_DE.po | 304 + .../languages/wp-youtube-lyte-es_ES.mo | Bin 0 -> 6537 bytes .../languages/wp-youtube-lyte-es_ES.po | 205 + .../languages/wp-youtube-lyte-he_IL.mo | Bin 0 -> 6907 bytes .../languages/wp-youtube-lyte-he_IL.po | 207 + .../languages/wp-youtube-lyte-ro_RO.mo | Bin 0 -> 6130 bytes .../languages/wp-youtube-lyte-ro_RO.po | 202 + .../languages/wp-youtube-lyte-sl_SI.mo | Bin 0 -> 7467 bytes .../languages/wp-youtube-lyte-sl_SI.po | 485 + .../languages/wp-youtube-lyte-sr_RS.mo | Bin 0 -> 6194 bytes .../languages/wp-youtube-lyte-sr_RS.po | 242 + .../languages/wp-youtube-lyte-uk_UA.mo | Bin 0 -> 7168 bytes .../languages/wp-youtube-lyte-uk_UA.po | 228 + .../languages/wp-youtube-lyte.pot | 380 + .../plugins/wp-youtube-lyte/lyte/index.html | 1 + .../plugins/wp-youtube-lyte/lyte/lyte-min.js | 1 + .../plugins/wp-youtube-lyte/lyte/lyte.js | 191 + .../wp-youtube-lyte/lyte/lytesprite.png | Bin 0 -> 4839 bytes .../wp-youtube-lyte/lyte/lytesprite_2014.png | Bin 0 -> 3873 bytes .../wp-youtube-lyte/lyte/lytesprite_claes.png | Bin 0 -> 10072 bytes .../plugins/wp-youtube-lyte/lytePartners.php | 122 + .../plugins/wp-youtube-lyte/lyteThumbs.php | 203 + .../wp-youtube-lyte/lyte_helper.php_example | 113 + .../plugins/wp-youtube-lyte/options.php | 512 + .../wp-youtube-lyte/player_sizes.inc.php | 99 + wp-content/plugins/wp-youtube-lyte/readme.txt | 519 + .../plugins/wp-youtube-lyte/screenshot-1.png | Bin 0 -> 26171 bytes wp-content/plugins/wp-youtube-lyte/widget.php | 178 + .../wp-youtube-lyte/wp-youtube-lyte.php | 729 + 1847 files changed, 505469 insertions(+) create mode 160000 wp-content/plugins/PT-kandidaten create mode 100644 wp-content/plugins/advanced-custom-fields/README.md create mode 100644 wp-content/plugins/advanced-custom-fields/acf.php create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_dark.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_field-group.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_fields.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_forms.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_global.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_gutenberg.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_input.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_media.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_mixins.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_postbox.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/_variables.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/acf-dark.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/acf-field-group.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/acf-global.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/css/acf-input.scss create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/images/acf-logo.psd create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-compatibility.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-condition-types.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-condition.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-conditions.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-accordion.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-button-group.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-checkbox.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-color-picker.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-date-picker.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-date-time-picker.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-file.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-google-map.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-image.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-link.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-oembed.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-page-link.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-post-object.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-radio.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-range.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-relationship.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-select.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-tab.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-taxonomy.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-time-picker.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-true-false.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-url.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-user.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-wysiwyg.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-fields.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-helpers.js create mode 100755 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-hooks.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-media.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-model.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-notice.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-panel.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-popup.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-postbox.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-screen.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-select2.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-tinymce.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-tooltip.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-unload.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-validation.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_acf.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_field-group-compatibility.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_field-group-conditions.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_field-group-field.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_field-group-fields.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_field-group-locations.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_field-group-settings.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/_field-group.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/acf-field-group.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/acf-field-group.min.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/acf-input.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/build/js/acf-input.min.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/css/acf-dark.css create mode 100644 wp-content/plugins/advanced-custom-fields/assets/css/acf-field-group.css create mode 100644 wp-content/plugins/advanced-custom-fields/assets/css/acf-global.css create mode 100644 wp-content/plugins/advanced-custom-fields/assets/css/acf-input.css create mode 100755 wp-content/plugins/advanced-custom-fields/assets/font/LICENSE.txt create mode 100755 wp-content/plugins/advanced-custom-fields/assets/font/README.txt create mode 100755 wp-content/plugins/advanced-custom-fields/assets/font/acf.eot create mode 100755 wp-content/plugins/advanced-custom-fields/assets/font/acf.svg create mode 100755 wp-content/plugins/advanced-custom-fields/assets/font/acf.ttf create mode 100755 wp-content/plugins/advanced-custom-fields/assets/font/acf.woff create mode 100755 wp-content/plugins/advanced-custom-fields/assets/font/acf.woff2 create mode 100755 wp-content/plugins/advanced-custom-fields/assets/font/config.json create mode 100644 wp-content/plugins/advanced-custom-fields/assets/images/acf-logo.png create mode 100644 wp-content/plugins/advanced-custom-fields/assets/images/spinner.gif create mode 100644 wp-content/plugins/advanced-custom-fields/assets/images/spinner@2x.gif create mode 100644 wp-content/plugins/advanced-custom-fields/assets/inc/datepicker/images/ui-bg_highlight-soft_0_ffffff_1x100.png create mode 100644 wp-content/plugins/advanced-custom-fields/assets/inc/datepicker/images/ui-icons_444444_256x240.png create mode 100644 wp-content/plugins/advanced-custom-fields/assets/inc/datepicker/images/ui-icons_DDDDDD_256x240.png create mode 100644 wp-content/plugins/advanced-custom-fields/assets/inc/datepicker/images/ui-icons_ffffff_256x240.png create mode 100644 wp-content/plugins/advanced-custom-fields/assets/inc/datepicker/jquery-ui.css create mode 100644 wp-content/plugins/advanced-custom-fields/assets/inc/datepicker/jquery-ui.min.css create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/3/select2-spinner.gif create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/3/select2.css create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/3/select2.js create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/3/select2.min.js create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/3/select2.png create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/3/select2x2.png create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/4/select2.css create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/4/select2.full.js create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/4/select2.full.min.js create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/4/select2.js create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/4/select2.min.css create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/select2/4/select2.min.js create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/timepicker/jquery-ui-timepicker-addon.css create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/timepicker/jquery-ui-timepicker-addon.js create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/timepicker/jquery-ui-timepicker-addon.min.css create mode 100755 wp-content/plugins/advanced-custom-fields/assets/inc/timepicker/jquery-ui-timepicker-addon.min.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/js/acf-field-group.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/js/acf-field-group.min.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/js/acf-input.js create mode 100644 wp-content/plugins/advanced-custom-fields/assets/js/acf-input.min.js create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-data-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-field-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-field-group-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-form-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-helper-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-hook-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-input-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-meta-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-post-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-user-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-utility-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/acf-value-functions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/admin-field-group.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/admin-field-groups.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/admin-notices.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/admin-tools.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/admin-upgrade.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/admin.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/settings-info.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool-export.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool-import.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-field-conditional-logic.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-field.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-fields.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-locations.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-options.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-page-upgrade-network.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-page-upgrade.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-tools.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/html-location-group.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/html-location-rule.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/html-notice-upgrade.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/settings-addons.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/admin/views/settings-info.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-check-screen.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-upgrade.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-user-setting.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/api/api-helpers.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/api/api-template.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/api/api-term.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/assets.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/class-acf-data.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/compatibility.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/deprecated.php create mode 100755 wp-content/plugins/advanced-custom-fields/includes/fields.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-accordion.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-button-group.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-checkbox.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-color_picker.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-date_picker.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-date_time_picker.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-email.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-file.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-google-map.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-group.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-image.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-link.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-message.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-number.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-oembed.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-output.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-page_link.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-password.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-post_object.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-radio.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-range.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-relationship.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-select.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-separator.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-tab.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-taxonomy.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-text.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-textarea.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-time_picker.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-true_false.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-url.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-user.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-wysiwyg.php create mode 100755 wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-attachment.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-comment.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-customizer.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-front.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-gutenberg.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-nav-menu.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-post.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-taxonomy.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-user.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/forms/form-widget.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/json.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/l10n.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/local-fields.php create mode 100755 wp-content/plugins/advanced-custom-fields/includes/local-meta.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-attachment.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-comment.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-current-user-role.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-current-user.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-nav-menu-item.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-nav-menu.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-parent.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-template.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-type.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-category.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-format.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-status.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-taxonomy.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-template.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-type.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-taxonomy.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-user-form.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-user-role.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-widget.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/loop.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/media.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/revisions.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/third-party.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/updates.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/upgrades.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/validation.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/walkers/class-acf-walker-nav-menu-edit.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/walkers/class-acf-walker-taxonomy-field.php create mode 100644 wp-content/plugins/advanced-custom-fields/includes/wpml.php create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-ar.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-ar.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-bg_BG.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-bg_BG.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-cs_CZ.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-cs_CZ.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-de_CH.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-de_CH.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-de_DE.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-de_DE.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-de_DE_formal.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-de_DE_formal.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-es_ES.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-es_ES.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-fa_IR.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-fa_IR.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-fi.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-fi.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-fr_CA.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-fr_CA.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-fr_FR.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-fr_FR.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-he_IL.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-he_IL.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-hr_HR.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-hr_HR.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-hu_HU.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-hu_HU.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-id_ID.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-id_ID.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-it_IT.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-it_IT.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-ja.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-ja.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-nb_NO.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-nb_NO.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-nl_NL.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-nl_NL.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-pl_PL.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-pl_PL.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-pt_BR.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-pt_BR.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-pt_PT.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-pt_PT.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-ro_RO.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-ro_RO.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-ru_RU.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-ru_RU.po create mode 100755 wp-content/plugins/advanced-custom-fields/lang/acf-sk_SK.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-sk_SK.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-sv_SE.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-sv_SE.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-tr_TR.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-tr_TR.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-uk.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-uk.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-zh_CN.mo create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf-zh_CN.po create mode 100644 wp-content/plugins/advanced-custom-fields/lang/acf.pot create mode 100644 wp-content/plugins/advanced-custom-fields/readme.txt create mode 100644 wp-content/plugins/amr-ical-events-list/admin/add-ons.php create mode 100644 wp-content/plugins/amr-ical-events-list/admin/class-amr-license-handler.php create mode 100644 wp-content/plugins/amr-ical-events-list/admin/plugin-updater.php create mode 100644 wp-content/plugins/amr-ical-events-list/admin/updates-page.php create mode 100644 wp-content/plugins/amr-ical-events-list/amr-ical-custom-style-file-example.php create mode 100644 wp-content/plugins/amr-ical-events-list/amr-ical-events-list.php create mode 100644 wp-content/plugins/amr-ical-events-list/css/icaladmin.css create mode 100644 wp-content/plugins/amr-ical-events-list/css/icalistcss_for_old_themes.css create mode 100644 wp-content/plugins/amr-ical-events-list/css/icallist.css create mode 100644 wp-content/plugins/amr-ical-events-list/css/icallist2017.css create mode 100644 wp-content/plugins/amr-ical-events-list/css/icalprint.css create mode 100644 wp-content/plugins/amr-ical-events-list/css/index.php create mode 100644 wp-content/plugins/amr-ical-events-list/images/accept_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/accept_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/addtogoogle.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/addtogoogle_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/addtogoogle_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/arrow_refresh_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/arrow_refresh_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_add.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_add_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_add_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_link_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_link_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_view_day_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_view_day_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_view_month_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_view_month_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_view_week_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/calendar_view_week_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/clock_add.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/clock_add_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/csg-4b5e5f37d6e41.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/csg-4da543d948061.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/csg-4da5455767b51.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/css_16.css create mode 100644 wp-content/plugins/amr-ical-events-list/images/css_32.css create mode 100644 wp-content/plugins/amr-ical-events-list/images/date_add_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/date_add_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/delete_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/email_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/email_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/accept.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/accept_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/accept_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/addtogoogle.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/arrow_refresh.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/blinklist.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/brightkite.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/csg-4b5e5f37d6e41.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/css-sprite1.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/decline.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/delicious.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/design_float.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/digg.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/dopplr.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/email.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/facebook.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/feed.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/flickr.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/friendfeed.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/furl.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/gamespot.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/information.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/lastfm.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/linkedin.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/magnolia.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/map.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/map_go.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/mixx.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/myspace.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/newsvine.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/posterous.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/reddit.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/refresh.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/refresh_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/refresh_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/sphere.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/sphinn.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/stumble.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/technorati.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/timezone.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/tripadvisor.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/tumblr.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/twitter.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/twitter_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/twitter_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/vimeo.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/yellowmap.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/extras/youtube.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/facebook_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/facebook_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/feed_add_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/feed_add_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/google_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/google_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/html_16.html create mode 100644 wp-content/plugins/amr-ical-events-list/images/html_32.html create mode 100644 wp-content/plugins/amr-ical-events-list/images/images_16.zip create mode 100644 wp-content/plugins/amr-ical-events-list/images/images_32.zip create mode 100644 wp-content/plugins/amr-ical-events-list/images/index.php create mode 100644 wp-content/plugins/amr-ical-events-list/images/info_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/info_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/information.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/linkedin_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/linkedin_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/map.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/map_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/map_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/arrow_refresh.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/calendar_add.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/calendar_view_day.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/calendar_view_month.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/calendar_view_week.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/date_add.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/feed_add.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/index.php create mode 100644 wp-content/plugins/amr-ical-events-list/images/med/map_go.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/music_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/music_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/refresh.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/stumbleupon_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/stumbleupon_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/timezone.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/timezone_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/timezone_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/twitter_1_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/twitter_1_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/yellowmap.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/youtube_16.png create mode 100644 wp-content/plugins/amr-ical-events-list/images/youtube_32.png create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-ical-admin-import-export-list.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-ical-calendar.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-ical-config.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-ical-events-list-main.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-ical-fields-admin.php create mode 100755 wp-content/plugins/amr-ical-events-list/includes/amr-ical-groupings.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-ical-list-admin.php create mode 100755 wp-content/plugins/amr-ical-events-list/includes/amr-ical-plugin-form-html.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-ical-post-type.php create mode 100755 wp-content/plugins/amr-ical-events-list/includes/amr-ical-pretty-print.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-import-ical.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-pluggable.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-rrule.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr-upcoming-events-widget.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/amr_date_i18n.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/functions-examples.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/functions.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/index.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/timezones/WindowsZonesToTimeZones.txt create mode 100644 wp-content/plugins/amr-ical-events-list/includes/timezones/amr-windows-zones.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/timezones/index.php create mode 100644 wp-content/plugins/amr-ical-events-list/includes/timezones/windowszonemap.txt create mode 100644 wp-content/plugins/amr-ical-events-list/index.php create mode 100644 wp-content/plugins/amr-ical-events-list/js/amr-ical.js create mode 100644 wp-content/plugins/amr-ical-events-list/js/index.php create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-af_AF.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-be_BY.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-be_BY.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK/Amr iCal Events List-da_DK.txt create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-de_DE.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-en_AU.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-en_AU.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-es_ES.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-es_ES.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-fr_FR.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-fr_FR.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-hi_IN.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-hi_IN.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-it_IT.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-it_IT.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-lt_LT.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-lt_LT.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-nl_NL.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-nl_NL.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-no_NO.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-no_NO.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-pl_PL.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-pl_PL.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-ro_RO.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-ro_RO.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-ru_RU.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-ru_RU.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-uk_UA.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-uk_UA.po create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list.mo create mode 100644 wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list.pot create mode 100644 wp-content/plugins/amr-ical-events-list/lang/index.php create mode 100644 wp-content/plugins/amr-ical-events-list/readme.txt create mode 100644 wp-content/plugins/amr-ical-events-list/uninstall.php create mode 100644 wp-content/plugins/amr-shortcode-any-widget/amr-admin-form-html.php create mode 100644 wp-content/plugins/amr-shortcode-any-widget/amr-shortcode-any-widget.php create mode 100644 wp-content/plugins/amr-shortcode-any-widget/amr-utilities.php create mode 100644 wp-content/plugins/amr-shortcode-any-widget/index.php create mode 100644 wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget-id_ID.po create mode 100644 wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget-sr_RS.mo create mode 100644 wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget-sr_RS.po create mode 100644 wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget.pot create mode 100644 wp-content/plugins/amr-shortcode-any-widget/languages/amr_shortcode_any_widget_id_ID.mo create mode 100644 wp-content/plugins/amr-shortcode-any-widget/readme.txt create mode 100644 wp-content/plugins/antispam-bee/LICENSE.txt create mode 100755 wp-content/plugins/antispam-bee/antispam_bee.php create mode 100644 wp-content/plugins/antispam-bee/css/dashboard.css create mode 100644 wp-content/plugins/antispam-bee/css/dashboard.min.css create mode 100644 wp-content/plugins/antispam-bee/css/styles.css create mode 100755 wp-content/plugins/antispam-bee/css/styles.min.css create mode 100644 wp-content/plugins/antispam-bee/inc/columns.class.php create mode 100644 wp-content/plugins/antispam-bee/inc/gui.class.php create mode 100644 wp-content/plugins/antispam-bee/js/dashboard.js create mode 100644 wp-content/plugins/antispam-bee/js/dashboard.min.js create mode 100644 wp-content/plugins/antispam-bee/js/raphael.helper.js create mode 100644 wp-content/plugins/antispam-bee/js/raphael.helper.min.js create mode 100644 wp-content/plugins/antispam-bee/js/raphael.min.js create mode 100644 wp-content/plugins/antispam-bee/js/scripts.js create mode 100644 wp-content/plugins/antispam-bee/js/scripts.min.js create mode 100755 wp-content/plugins/antispam-bee/readme.txt create mode 100644 wp-content/plugins/classic-editor/LICENSE.md create mode 100644 wp-content/plugins/classic-editor/classic-editor.php create mode 100644 wp-content/plugins/classic-editor/js/block-editor-plugin.js create mode 100644 wp-content/plugins/classic-editor/readme.txt create mode 100644 wp-content/plugins/contact-form-7/admin/admin.php create mode 100644 wp-content/plugins/contact-form-7/admin/css/styles-dark-mode.css create mode 100644 wp-content/plugins/contact-form-7/admin/css/styles-rtl.css create mode 100644 wp-content/plugins/contact-form-7/admin/css/styles.css create mode 100644 wp-content/plugins/contact-form-7/admin/edit-contact-form.php create mode 100644 wp-content/plugins/contact-form-7/admin/includes/admin-functions.php create mode 100644 wp-content/plugins/contact-form-7/admin/includes/class-contact-forms-list-table.php create mode 100644 wp-content/plugins/contact-form-7/admin/includes/config-validator.php create mode 100644 wp-content/plugins/contact-form-7/admin/includes/editor.php create mode 100644 wp-content/plugins/contact-form-7/admin/includes/help-tabs.php create mode 100644 wp-content/plugins/contact-form-7/admin/includes/tag-generator.php create mode 100644 wp-content/plugins/contact-form-7/admin/includes/welcome-panel.php create mode 100644 wp-content/plugins/contact-form-7/admin/js/scripts.js create mode 100644 wp-content/plugins/contact-form-7/admin/js/tag-generator.js create mode 100644 wp-content/plugins/contact-form-7/images/ajax-loader.gif create mode 100644 wp-content/plugins/contact-form-7/includes/capabilities.php create mode 100644 wp-content/plugins/contact-form-7/includes/config-validator.php create mode 100644 wp-content/plugins/contact-form-7/includes/contact-form-functions.php create mode 100644 wp-content/plugins/contact-form-7/includes/contact-form-template.php create mode 100644 wp-content/plugins/contact-form-7/includes/contact-form.php create mode 100644 wp-content/plugins/contact-form-7/includes/controller.php create mode 100644 wp-content/plugins/contact-form-7/includes/css/styles-rtl.css create mode 100644 wp-content/plugins/contact-form-7/includes/css/styles.css create mode 100644 wp-content/plugins/contact-form-7/includes/form-tag.php create mode 100644 wp-content/plugins/contact-form-7/includes/form-tags-manager.php create mode 100644 wp-content/plugins/contact-form-7/includes/formatting.php create mode 100644 wp-content/plugins/contact-form-7/includes/functions.php create mode 100644 wp-content/plugins/contact-form-7/includes/integration.php create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_888888_256x240.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/jquery-ui.css create mode 100644 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css create mode 100755 wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/theme.css create mode 100644 wp-content/plugins/contact-form-7/includes/js/scripts.js create mode 100644 wp-content/plugins/contact-form-7/includes/l10n.php create mode 100644 wp-content/plugins/contact-form-7/includes/mail.php create mode 100644 wp-content/plugins/contact-form-7/includes/pipe.php create mode 100644 wp-content/plugins/contact-form-7/includes/rest-api.php create mode 100644 wp-content/plugins/contact-form-7/includes/shortcodes.php create mode 100644 wp-content/plugins/contact-form-7/includes/special-mail-tags.php create mode 100644 wp-content/plugins/contact-form-7/includes/submission.php create mode 100644 wp-content/plugins/contact-form-7/includes/upgrade.php create mode 100644 wp-content/plugins/contact-form-7/includes/validation.php create mode 100644 wp-content/plugins/contact-form-7/languages/readme.txt create mode 100644 wp-content/plugins/contact-form-7/license.txt create mode 100644 wp-content/plugins/contact-form-7/modules/acceptance.php create mode 100644 wp-content/plugins/contact-form-7/modules/akismet.php create mode 100644 wp-content/plugins/contact-form-7/modules/checkbox.php create mode 100644 wp-content/plugins/contact-form-7/modules/constant-contact.php create mode 100644 wp-content/plugins/contact-form-7/modules/count.php create mode 100644 wp-content/plugins/contact-form-7/modules/date.php create mode 100644 wp-content/plugins/contact-form-7/modules/file.php create mode 100644 wp-content/plugins/contact-form-7/modules/flamingo.php create mode 100644 wp-content/plugins/contact-form-7/modules/hidden.php create mode 100644 wp-content/plugins/contact-form-7/modules/listo.php create mode 100644 wp-content/plugins/contact-form-7/modules/number.php create mode 100644 wp-content/plugins/contact-form-7/modules/quiz.php create mode 100644 wp-content/plugins/contact-form-7/modules/really-simple-captcha.php create mode 100644 wp-content/plugins/contact-form-7/modules/recaptcha.php create mode 100644 wp-content/plugins/contact-form-7/modules/response.php create mode 100644 wp-content/plugins/contact-form-7/modules/select.php create mode 100644 wp-content/plugins/contact-form-7/modules/submit.php create mode 100644 wp-content/plugins/contact-form-7/modules/text.php create mode 100644 wp-content/plugins/contact-form-7/modules/textarea.php create mode 100644 wp-content/plugins/contact-form-7/readme.txt create mode 100644 wp-content/plugins/contact-form-7/settings.php create mode 100644 wp-content/plugins/contact-form-7/uninstall.php create mode 100644 wp-content/plugins/contact-form-7/wp-contact-form-7.php create mode 100644 wp-content/plugins/imsanity/.travis.yml create mode 100644 wp-content/plugins/imsanity/ajax.php create mode 100644 wp-content/plugins/imsanity/changelog.txt create mode 100644 wp-content/plugins/imsanity/images/ajax-loader.gif create mode 100644 wp-content/plugins/imsanity/imsanity.php create mode 100644 wp-content/plugins/imsanity/languages/imsanity-es_MX.mo create mode 100644 wp-content/plugins/imsanity/languages/imsanity-es_MX.po create mode 100644 wp-content/plugins/imsanity/languages/imsanity-sv_SE.mo create mode 100644 wp-content/plugins/imsanity/languages/imsanity-sv_SE.po create mode 100644 wp-content/plugins/imsanity/languages/readme.txt create mode 100644 wp-content/plugins/imsanity/libs/imagecreatefrombmp.php create mode 100644 wp-content/plugins/imsanity/libs/utils.php create mode 100644 wp-content/plugins/imsanity/license.txt create mode 100644 wp-content/plugins/imsanity/phpcs.ruleset.xml create mode 100644 wp-content/plugins/imsanity/readme.txt create mode 100644 wp-content/plugins/imsanity/scripts/imsanity.js create mode 100644 wp-content/plugins/imsanity/settings.php create mode 100644 wp-content/plugins/really-simple-captcha/gentium/FONTLOG.txt create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GENTIUM-FAQ.txt create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GenBasB.ttf create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GenBasBI.ttf create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GenBasI.ttf create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GenBasR.ttf create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GenBkBasB.ttf create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GenBkBasBI.ttf create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GenBkBasI.ttf create mode 100644 wp-content/plugins/really-simple-captcha/gentium/GenBkBasR.ttf create mode 100644 wp-content/plugins/really-simple-captcha/gentium/OFL-FAQ.txt create mode 100644 wp-content/plugins/really-simple-captcha/gentium/OFL.txt create mode 100644 wp-content/plugins/really-simple-captcha/license.txt create mode 100644 wp-content/plugins/really-simple-captcha/readme.txt create mode 100644 wp-content/plugins/really-simple-captcha/really-simple-captcha.php create mode 100644 wp-content/plugins/really-simple-captcha/tmp/index.php create mode 100644 wp-content/plugins/redirection/README.md create mode 100644 wp-content/plugins/redirection/actions/error.php create mode 100644 wp-content/plugins/redirection/actions/nothing.php create mode 100644 wp-content/plugins/redirection/actions/pass.php create mode 100644 wp-content/plugins/redirection/actions/random.php create mode 100644 wp-content/plugins/redirection/actions/url.php create mode 100644 wp-content/plugins/redirection/api/api-404.php create mode 100644 wp-content/plugins/redirection/api/api-export.php create mode 100644 wp-content/plugins/redirection/api/api-group.php create mode 100644 wp-content/plugins/redirection/api/api-import.php create mode 100644 wp-content/plugins/redirection/api/api-log.php create mode 100644 wp-content/plugins/redirection/api/api-plugin.php create mode 100644 wp-content/plugins/redirection/api/api-redirect.php create mode 100644 wp-content/plugins/redirection/api/api-settings.php create mode 100644 wp-content/plugins/redirection/database/database-status.php create mode 100644 wp-content/plugins/redirection/database/database-upgrader.php create mode 100644 wp-content/plugins/redirection/database/database.php create mode 100644 wp-content/plugins/redirection/database/schema/201.php create mode 100644 wp-content/plugins/redirection/database/schema/216.php create mode 100644 wp-content/plugins/redirection/database/schema/220.php create mode 100644 wp-content/plugins/redirection/database/schema/231.php create mode 100644 wp-content/plugins/redirection/database/schema/232.php create mode 100644 wp-content/plugins/redirection/database/schema/233.php create mode 100644 wp-content/plugins/redirection/database/schema/240.php create mode 100644 wp-content/plugins/redirection/database/schema/400.php create mode 100644 wp-content/plugins/redirection/database/schema/410.php create mode 100644 wp-content/plugins/redirection/database/schema/latest.php create mode 100644 wp-content/plugins/redirection/fileio/apache.php create mode 100644 wp-content/plugins/redirection/fileio/csv.php create mode 100644 wp-content/plugins/redirection/fileio/json.php create mode 100644 wp-content/plugins/redirection/fileio/nginx.php create mode 100644 wp-content/plugins/redirection/fileio/rss.php create mode 100644 wp-content/plugins/redirection/images/GitHub-Mark-64px.png create mode 100644 wp-content/plugins/redirection/images/donate.gif create mode 100644 wp-content/plugins/redirection/license.txt create mode 100644 wp-content/plugins/redirection/locale/json/redirection-de_DE.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-en_AU.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-en_CA.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-en_GB.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-en_NZ.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-es_ES.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-fa_IR.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-fr_FR.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-it_IT.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-ja.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-lv.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-nl_NL.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-pt_BR.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-ru_RU.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-sv_SE.json create mode 100644 wp-content/plugins/redirection/locale/json/redirection-zh_TW.json create mode 100644 wp-content/plugins/redirection/locale/redirection-de_DE.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-de_DE.po create mode 100644 wp-content/plugins/redirection/locale/redirection-en_AU.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-en_AU.po create mode 100644 wp-content/plugins/redirection/locale/redirection-en_CA.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-en_CA.po create mode 100644 wp-content/plugins/redirection/locale/redirection-en_GB.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-en_GB.po create mode 100644 wp-content/plugins/redirection/locale/redirection-en_NZ.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-en_NZ.po create mode 100644 wp-content/plugins/redirection/locale/redirection-es_ES.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-es_ES.po create mode 100644 wp-content/plugins/redirection/locale/redirection-fa_IR.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-fa_IR.po create mode 100644 wp-content/plugins/redirection/locale/redirection-fr_FR.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-fr_FR.po create mode 100644 wp-content/plugins/redirection/locale/redirection-it_IT.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-it_IT.po create mode 100644 wp-content/plugins/redirection/locale/redirection-ja.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-ja.po create mode 100644 wp-content/plugins/redirection/locale/redirection-lv.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-lv.po create mode 100644 wp-content/plugins/redirection/locale/redirection-nl_NL.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-nl_NL.po create mode 100644 wp-content/plugins/redirection/locale/redirection-pt_BR.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-pt_BR.po create mode 100644 wp-content/plugins/redirection/locale/redirection-ru_RU.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-ru_RU.po create mode 100644 wp-content/plugins/redirection/locale/redirection-sv_SE.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-sv_SE.po create mode 100644 wp-content/plugins/redirection/locale/redirection-zh_TW.mo create mode 100644 wp-content/plugins/redirection/locale/redirection-zh_TW.po create mode 100644 wp-content/plugins/redirection/locale/redirection.pot create mode 100644 wp-content/plugins/redirection/matches/cookie.php create mode 100644 wp-content/plugins/redirection/matches/custom-filter.php create mode 100644 wp-content/plugins/redirection/matches/http-header.php create mode 100644 wp-content/plugins/redirection/matches/ip.php create mode 100644 wp-content/plugins/redirection/matches/login.php create mode 100644 wp-content/plugins/redirection/matches/page.php create mode 100644 wp-content/plugins/redirection/matches/referrer.php create mode 100644 wp-content/plugins/redirection/matches/server.php create mode 100644 wp-content/plugins/redirection/matches/url.php create mode 100644 wp-content/plugins/redirection/matches/user-agent.php create mode 100644 wp-content/plugins/redirection/matches/user-role.php create mode 100644 wp-content/plugins/redirection/models/action.php create mode 100644 wp-content/plugins/redirection/models/file-io.php create mode 100644 wp-content/plugins/redirection/models/fixer.php create mode 100644 wp-content/plugins/redirection/models/flusher.php create mode 100644 wp-content/plugins/redirection/models/group.php create mode 100644 wp-content/plugins/redirection/models/htaccess.php create mode 100644 wp-content/plugins/redirection/models/importer.php create mode 100644 wp-content/plugins/redirection/models/log.php create mode 100644 wp-content/plugins/redirection/models/match.php create mode 100644 wp-content/plugins/redirection/models/module.php create mode 100644 wp-content/plugins/redirection/models/monitor.php create mode 100644 wp-content/plugins/redirection/models/redirect-sanitizer.php create mode 100644 wp-content/plugins/redirection/models/redirect.php create mode 100644 wp-content/plugins/redirection/models/regex.php create mode 100644 wp-content/plugins/redirection/models/request.php create mode 100644 wp-content/plugins/redirection/models/url-flags.php create mode 100644 wp-content/plugins/redirection/models/url-match.php create mode 100644 wp-content/plugins/redirection/models/url-path.php create mode 100644 wp-content/plugins/redirection/models/url-query.php create mode 100644 wp-content/plugins/redirection/models/url.php create mode 100644 wp-content/plugins/redirection/modules/apache.php create mode 100644 wp-content/plugins/redirection/modules/nginx.php create mode 100644 wp-content/plugins/redirection/modules/wordpress.php create mode 100644 wp-content/plugins/redirection/readme.txt create mode 100644 wp-content/plugins/redirection/redirection-admin.php create mode 100644 wp-content/plugins/redirection/redirection-api.php create mode 100644 wp-content/plugins/redirection/redirection-cli.php create mode 100644 wp-content/plugins/redirection/redirection-front.php create mode 100644 wp-content/plugins/redirection/redirection-settings.php create mode 100644 wp-content/plugins/redirection/redirection-strings.php create mode 100644 wp-content/plugins/redirection/redirection-version.php create mode 100644 wp-content/plugins/redirection/redirection.css create mode 100644 wp-content/plugins/redirection/redirection.js create mode 100644 wp-content/plugins/redirection/redirection.php create mode 100644 wp-content/plugins/scripts-n-styles/README.txt create mode 100644 wp-content/plugins/scripts-n-styles/css/code-editor.css create mode 100644 wp-content/plugins/scripts-n-styles/css/meta-box.css create mode 100644 wp-content/plugins/scripts-n-styles/css/options-styles.css create mode 100644 wp-content/plugins/scripts-n-styles/images/icon32.png create mode 100644 wp-content/plugins/scripts-n-styles/images/menu.png create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-admin.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-ajax.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-form.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-global-page.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-hoops-page.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-list-usage.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-meta-box.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-settings-page.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-theme-page.php create mode 100644 wp-content/plugins/scripts-n-styles/includes/class-sns-usage-page.php create mode 100644 wp-content/plugins/scripts-n-styles/js/code-editor.js create mode 100644 wp-content/plugins/scripts-n-styles/js/global-page.js create mode 100644 wp-content/plugins/scripts-n-styles/js/hoops-page.js create mode 100644 wp-content/plugins/scripts-n-styles/js/meta-box.js create mode 100644 wp-content/plugins/scripts-n-styles/js/settings-page.js create mode 100644 wp-content/plugins/scripts-n-styles/js/theme-page.js create mode 100644 wp-content/plugins/scripts-n-styles/languages/scripts-n-styles.pot create mode 100644 wp-content/plugins/scripts-n-styles/license.txt create mode 100644 wp-content/plugins/scripts-n-styles/scripts-n-styles.php create mode 100644 wp-content/plugins/scripts-n-styles/uninstall.php create mode 100644 wp-content/plugins/scripts-n-styles/vendor/chosen/chosen-sprite.png create mode 100644 wp-content/plugins/scripts-n-styles/vendor/chosen/chosen-sprite@2x.png create mode 100644 wp-content/plugins/scripts-n-styles/vendor/chosen/chosen.jquery.min.js create mode 100644 wp-content/plugins/scripts-n-styles/vendor/chosen/chosen.min.css create mode 100644 wp-content/plugins/scripts-n-styles/vendor/codemirror/codemirror-compressed.css create mode 100644 wp-content/plugins/scripts-n-styles/vendor/codemirror/codemirror-compressed.js create mode 100644 wp-content/plugins/scripts-n-styles/vendor/coffee-script.js create mode 100644 wp-content/plugins/scripts-n-styles/vendor/less.js create mode 100644 wp-content/plugins/scripts-n-styles/vendor/less.min.js create mode 100644 wp-content/plugins/shariff/admin/admin-menu.php create mode 100644 wp-content/plugins/shariff/admin/admin-metabox.php create mode 100644 wp-content/plugins/shariff/admin/admin-notices.php create mode 100644 wp-content/plugins/shariff/bitcoin.php create mode 100644 wp-content/plugins/shariff/changelog.txt create mode 100644 wp-content/plugins/shariff/css/shariff.css create mode 100644 wp-content/plugins/shariff/css/shariff.min.css create mode 100644 wp-content/plugins/shariff/images/borderradius.png create mode 100644 wp-content/plugins/shariff/images/defaultHint.png create mode 100644 wp-content/plugins/shariff/images/shariff_designs.png create mode 100644 wp-content/plugins/shariff/includes/class-shariff-widget.php create mode 100644 wp-content/plugins/shariff/includes/phpqrcode.php create mode 100644 wp-content/plugins/shariff/js/shariff-media.js create mode 100644 wp-content/plugins/shariff/js/shariff-media.min.js create mode 100644 wp-content/plugins/shariff/js/shariff-popup.js create mode 100644 wp-content/plugins/shariff/js/shariff-popup.min.js create mode 100644 wp-content/plugins/shariff/js/shariff.js create mode 100644 wp-content/plugins/shariff/js/shariff.min.js create mode 100644 wp-content/plugins/shariff/license.txt create mode 100644 wp-content/plugins/shariff/readme.txt create mode 100644 wp-content/plugins/shariff/services/shariff-addthis.php create mode 100644 wp-content/plugins/shariff/services/shariff-bitcoin.php create mode 100644 wp-content/plugins/shariff/services/shariff-buffer.php create mode 100644 wp-content/plugins/shariff/services/shariff-diaspora.php create mode 100644 wp-content/plugins/shariff/services/shariff-facebook.php create mode 100644 wp-content/plugins/shariff/services/shariff-flattr.php create mode 100644 wp-content/plugins/shariff/services/shariff-flipboard.php create mode 100644 wp-content/plugins/shariff/services/shariff-info.php create mode 100644 wp-content/plugins/shariff/services/shariff-linkedin.php create mode 100644 wp-content/plugins/shariff/services/shariff-mailto.php create mode 100644 wp-content/plugins/shariff/services/shariff-mewe.php create mode 100644 wp-content/plugins/shariff/services/shariff-mix.php create mode 100644 wp-content/plugins/shariff/services/shariff-odnoklassniki.php create mode 100644 wp-content/plugins/shariff/services/shariff-patreon.php create mode 100644 wp-content/plugins/shariff/services/shariff-paypal.php create mode 100644 wp-content/plugins/shariff/services/shariff-paypalme.php create mode 100644 wp-content/plugins/shariff/services/shariff-pinterest.php create mode 100644 wp-content/plugins/shariff/services/shariff-pocket.php create mode 100644 wp-content/plugins/shariff/services/shariff-printer.php create mode 100644 wp-content/plugins/shariff/services/shariff-qzone.php create mode 100644 wp-content/plugins/shariff/services/shariff-reddit.php create mode 100644 wp-content/plugins/shariff/services/shariff-rss.php create mode 100644 wp-content/plugins/shariff/services/shariff-sms.php create mode 100644 wp-content/plugins/shariff/services/shariff-telegram.php create mode 100644 wp-content/plugins/shariff/services/shariff-tencentweibo.php create mode 100644 wp-content/plugins/shariff/services/shariff-threema.php create mode 100644 wp-content/plugins/shariff/services/shariff-tumblr.php create mode 100644 wp-content/plugins/shariff/services/shariff-twitter.php create mode 100644 wp-content/plugins/shariff/services/shariff-vk.php create mode 100644 wp-content/plugins/shariff/services/shariff-wallabag.php create mode 100644 wp-content/plugins/shariff/services/shariff-weibo.php create mode 100644 wp-content/plugins/shariff/services/shariff-whatsapp.php create mode 100644 wp-content/plugins/shariff/services/shariff-xing.php create mode 100644 wp-content/plugins/shariff/shariff.php create mode 100644 wp-content/plugins/shariff/uninstall.php create mode 100644 wp-content/plugins/shariff/updates.php create mode 100644 wp-content/plugins/shariff/wpml-config.xml create mode 100644 wp-content/plugins/ultimate-category-excluder/languages/UCE-da_DK.mo create mode 100644 wp-content/plugins/ultimate-category-excluder/languages/UCE-da_DK.po create mode 100755 wp-content/plugins/ultimate-category-excluder/languages/UCE-de_DE.mo create mode 100755 wp-content/plugins/ultimate-category-excluder/languages/UCE-de_DE.po create mode 100755 wp-content/plugins/ultimate-category-excluder/languages/UCE-en_EN.mo create mode 100755 wp-content/plugins/ultimate-category-excluder/languages/UCE-en_EN.po create mode 100644 wp-content/plugins/ultimate-category-excluder/languages/UCE-pt_BR.mo create mode 100644 wp-content/plugins/ultimate-category-excluder/languages/UCE-pt_BR.po create mode 100755 wp-content/plugins/ultimate-category-excluder/languages/UCE.pot create mode 100644 wp-content/plugins/ultimate-category-excluder/readme.txt create mode 100644 wp-content/plugins/ultimate-category-excluder/ultimate-category-excluder.php create mode 100644 wp-content/plugins/version-info/LICENSE create mode 100644 wp-content/plugins/version-info/VERSION create mode 100644 wp-content/plugins/version-info/readme.txt create mode 100644 wp-content/plugins/version-info/version-info.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/class-webdados-fb-open-graph-admin.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/css/index.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/css/webdados-fb-open-graph-admin.css create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/index.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/js/index.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/js/webdados-fb-open-graph-admin.js create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-3rdparty.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-facebook.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-general.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-right.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-schema.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-seo.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-tools.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-twitter.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/webdados.svg create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/fbimg.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/FacebookLocales.xml create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/class-webdados-fb-open-graph.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/index.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/index.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/lang/index.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/lang/wonderm00ns-simple-facebook-open-graph-tags.pot create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/public/class-webdados-fb-open-graph-public.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/public/index.php create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/readme.txt create mode 100644 wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/wonderm00n-open-graph.php create mode 100644 wp-content/plugins/wp-statistics/assets/css/admin.css create mode 100644 wp-content/plugins/wp-statistics/assets/css/frontend.css create mode 100644 wp-content/plugins/wp-statistics/assets/css/jquery-ui-smoothness.min.css create mode 100644 wp-content/plugins/wp-statistics/assets/css/log.css create mode 100644 wp-content/plugins/wp-statistics/assets/css/pagination.css create mode 100644 wp-content/plugins/wp-statistics/assets/css/rtl.css create mode 100644 wp-content/plugins/wp-statistics/assets/images/Air.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Android.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Chrome.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Edge.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Firefox.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Friendica.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Ipad.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/MSIE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Opera Next.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Opera.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/Safari.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/TRAVOD-logo.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ask.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/baidu.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/bing.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/clearch.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/duckduckgo.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/000.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AD.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AF.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AQ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AU.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AX.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/AZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BB.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BD.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BF.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BH.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BJ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/BZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CD.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CF.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CH.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CU.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CV.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/CZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/DE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/DJ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/DK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/DM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/DO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/DZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/EC.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/EE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/EG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/EH.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ER.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ES.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ET.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/FI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/FJ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/FK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/FM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/FO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/FR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GB.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GD.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GF.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GH.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GP.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GQ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GU.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/GY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/HK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/HN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/HR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/HT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/HU.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ID.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/IE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/IL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/IM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/IN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/IQ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/IR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/IS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/IT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/JE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/JM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/JO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/JP.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KH.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KP.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/KZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LB.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LC.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LU.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LV.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/LY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MC.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MD.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ME.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MF.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MH.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ML.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MP.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MQ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MU.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MV.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MX.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/MZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NATO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NC.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NF.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NP.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/NZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/OM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/OPEC.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PF.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PH.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/PY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/QA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/RE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/RO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/RS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/RU.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/RW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SB.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SC.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SD.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ST.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SV.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/SZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TC.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TD.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TH.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TJ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TL.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TO.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TR.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TV.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/TZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/UA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/UG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/US.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/UY.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/UZ.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/VA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/VC.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/VE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/VG.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/VI.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/VN.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/VU.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/WS.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/XK.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/YE.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/YT.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ZA.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ZM.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/flags/ZW.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/google.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/icon.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/link.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/loading.gif create mode 100644 wp-content/plugins/wp-statistics/assets/images/loading.svg create mode 100644 wp-content/plugins/wp-statistics/assets/images/logo-250-white.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/logo-250.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/map.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/marker.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/qwant.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/stars.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/title-logo.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-icons_222222_256x240.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-icons_2e83ff_256x240.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-icons_454545_256x240.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-icons_888888_256x240.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/ui-icons_cd0a0a_256x240.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/unknown.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/veronalabs.svg create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/icon-github.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/icon-instagram.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/icon-linkedin.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/icon-twitter.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/coupon-code.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-channels.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-chatbox.gif create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-iphone-2.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-send.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-settings.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/yahoo.png create mode 100644 wp-content/plugins/wp-statistics/assets/images/yandex.png create mode 100644 wp-content/plugins/wp-statistics/assets/index.php create mode 100644 wp-content/plugins/wp-statistics/assets/jqvmap/jquery.vmap.js create mode 100644 wp-content/plugins/wp-statistics/assets/jqvmap/jquery.vmap.min.js create mode 100644 wp-content/plugins/wp-statistics/assets/jqvmap/jqvmap.css create mode 100644 wp-content/plugins/wp-statistics/assets/jqvmap/jqvmap.min.css create mode 100644 wp-content/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.js create mode 100644 wp-content/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.min.js create mode 100644 wp-content/plugins/wp-statistics/assets/js/Chart.bundle.min.js create mode 100644 wp-content/plugins/wp-statistics/assets/js/Chart.min.js create mode 100644 wp-content/plugins/wp-statistics/assets/js/admin.js create mode 100644 wp-content/plugins/wp-statistics/assets/js/dashboard.js create mode 100644 wp-content/plugins/wp-statistics/assets/js/editor.js create mode 100644 wp-content/plugins/wp-statistics/assets/js/log.js create mode 100644 wp-content/plugins/wp-statistics/assets/js/moment.min.js create mode 100644 wp-content/plugins/wp-statistics/assets/js/tinymce.js create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-admin-pages.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-admin.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-ajax.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-dashboard.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-editor.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-export.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-frontend.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-geo-ip-hits.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-hits.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-install.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-network-admin.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-rest.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-schedule.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-shortcode.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-tinymce.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-uninstall.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-updates.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-welcome.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-widget.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics.php create mode 100644 wp-content/plugins/wp-statistics/includes/classes/important.txt create mode 100644 wp-content/plugins/wp-statistics/includes/functions/country-codes.php create mode 100644 wp-content/plugins/wp-statistics/includes/functions/country-coordinates.php create mode 100644 wp-content/plugins/wp-statistics/includes/functions/functions.php create mode 100644 wp-content/plugins/wp-statistics/includes/functions/purge-hits.php create mode 100644 wp-content/plugins/wp-statistics/includes/functions/purge.php create mode 100644 wp-content/plugins/wp-statistics/includes/functions/tinymce.php create mode 100644 wp-content/plugins/wp-statistics/includes/index.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/all-browsers.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/authors.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/categories.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/exclusions.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/hit-statistics.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/last-search.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/last-visitor.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/log.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/online.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/page-statistics.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/search-statistics.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/tags.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/top-countries.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/top-pages.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/top-referring.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/top-visitors.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/about.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/browsers.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/countries.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/hits.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/jqv.map.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/page.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/pages.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/quickstats.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/recent.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/referring.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/search.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/summary.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/top.visitors.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/users_online.php create mode 100644 wp-content/plugins/wp-statistics/includes/log/widgets/words.php create mode 100644 wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-database.php create mode 100644 wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-export.php create mode 100644 wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-historical.php create mode 100644 wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-purging.php create mode 100644 wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-resources.php create mode 100644 wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-updates.php create mode 100644 wp-content/plugins/wp-statistics/includes/optimization/wps-optimization.php create mode 100644 wp-content/plugins/wp-statistics/includes/robotslist.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-about.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-access-level.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-exclusions.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-externals.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-general.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-maintenance.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-notifications.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-overview-display.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-privacy.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-removal.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/tabs/wps-visitor-ip.php create mode 100644 wp-content/plugins/wp-statistics/includes/settings/wps-settings.php create mode 100644 wp-content/plugins/wp-statistics/includes/templates/add-ons.php create mode 100644 wp-content/plugins/wp-statistics/includes/templates/index.php create mode 100644 wp-content/plugins/wp-statistics/includes/templates/plugins.php create mode 100644 wp-content/plugins/wp-statistics/includes/templates/postbox.php create mode 100644 wp-content/plugins/wp-statistics/includes/templates/welcome.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/autoload.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/ClassLoader.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/LICENSE create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_classmap.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_namespaces.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_psr4.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_real.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_static.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/LICENSE create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/res/cacert.pem create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/src/CaBundle.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/composer/installed.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/LICENSE.txt create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/Parsedown.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/.gitmodules create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/.php_cs create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/CHANGELOG.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/LICENSE create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Database/Reader.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/AuthenticationException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/GeoIp2Exception.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/HttpException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/AbstractModel.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/AnonymousIp.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Asn.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/City.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/ConnectionType.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Country.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Domain.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Enterprise.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Insights.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Isp.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/ProviderInterface.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/AbstractPlaceRecord.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/AbstractRecord.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/City.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Continent.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Country.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Location.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/MaxMind.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Postal.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/RepresentedCountry.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Subdivision.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Traits.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/WebService/Client.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/LICENSE create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/export.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Crawlers.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Exclusions.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Headers.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Headers.txt create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/CHANGELOG.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/LICENSE create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/autoload.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/config.m4 create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/maxminddb.c create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/php_maxminddb.h create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/001-load.phpt create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/002-final.phpt create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/003-open-basedir.phpt create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Metadata.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/CHANGELOG.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/LICENSE create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/dev-bin/release.sh create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/HttpException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InvalidInputException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InvalidRequestException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/PermissionRequiredException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/WebServiceException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Client.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/Request.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/psr/cache/CHANGELOG.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/psr/cache/LICENSE.txt create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/psr/cache/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/psr/cache/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheItemInterface.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheItemPoolInterface.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/InvalidArgumentException.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.codeclimate.yml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.gitignore create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.travis.yml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/LICENSE create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/IP.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/Network.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/PropertyTrait.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/Range.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/IPTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/NetworkTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/RangeTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/bootstrap.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.coveralls.yml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.gitignore create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.travis.yml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/CONTRIBUTING.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/LICENSE create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/README.md create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/bootstrap.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/query.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/runner.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-browser-ids.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-chrome.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-indices.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-profiles.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-regexes.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bootstrap.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/composer.json create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-bots.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-browsers.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-others.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/browsers-chrome.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/build-android.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/id-android.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-android.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-asha.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-bada.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-brew.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-feature.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-firefoxos.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-kddi.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-palmos.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s30plus.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s40.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-symbian.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-tizen.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-touchwiz.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wm.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wp.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/manufacturer-names.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-android.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-asha.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-bada.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-blackberry.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-brew.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-feature.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-firefoxos.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-ios.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-kddi.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-palmos.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s30plus.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s40.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-symbian.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-tizen.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-touchwiz.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wm.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wp.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-cfnetwork.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-darwin.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/profiles.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-bots.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-browsers.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-others.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/phpunit.xml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Camouflage.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Corrections.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Derive.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Baidu.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/BrowserId.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/OperaMini.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Puffin.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/UCBrowserNew.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/UCBrowserOld.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Application.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Bot.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Browser.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Appliance.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Cars.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Ereader.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Gaming.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Gps.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Media.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Mobile.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Pda.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Phone.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Printer.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Signage.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Tablet.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Television.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Engine.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Os.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Using.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Wap.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Cache.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/BrowserType.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/DeviceSubType.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/DeviceType.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/EngineType.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Feature.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Flag.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Id.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Applications.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/BrowserIds.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/BuildIds.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/CFNetwork.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Chrome.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Darwin.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/DeviceModels.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/DeviceProfiles.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Manufacturers.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Browser.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Device.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Engine.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Family.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Main.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Os.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Primitive/Base.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Primitive/NameVersion.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Using.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Version.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Parser.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/amstrad.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/familyhub.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/i-opener.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/weblight.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/disabled.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/false-positive.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/generic.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/camera/os-android.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/camera/os-tizen.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/car/tesla.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/car/volvo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/app-editor.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/app-mediaplayer.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-arachne.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-brave.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-chrome.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-chromium.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-edge.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-firefox.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-icab.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-ie.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-konqueror.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-maxthon.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-midori.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-mosaic.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-netfront.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-netscape.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-omniweb.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-opera.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-qq.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-safari.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-seamonkey.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-text.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-uc.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/engine-goanna.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/engine-servo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-amigaos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-aros.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-beos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-bsd.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-chromeos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-haiku.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-irix.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-joli.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-linux.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-morphos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-os2.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-osx.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-redstar.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-remix.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-riscos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-solaris.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-syllable.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-unix.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-windows.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/platform-electron.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/platform-qt.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/amazon.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/kobo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/nook.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/pocketbook.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/sony.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/microsoft.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/nintendo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/sega.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/sony.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-gear.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-glass.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-oculus.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-archos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-walkman.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-zune.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-chat.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-download.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-email.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-media.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-news.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-search.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-shopping.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-social.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-2345.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-360.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-au.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-baidu.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-chrome.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-dolfin.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-dolphin.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-edge.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-eui.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-firefox-ios.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-ibrowser.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-iris.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-jig.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-lg.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-maxthon.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-mib.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-minibrowser.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-mme.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-netfront.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-ninesky.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-nokiaxpress.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-novarra.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-obigo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-openwave.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-opera.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-polaris.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-puffin.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-qq.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-samsung.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-skyfire.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-sogou.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-uc.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-webview.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-docomo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-emobile.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-kddi.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-softbank.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-willcom.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/device-kin.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/device-nokiax.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/engine-servo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/header-requestedwith.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/header-wap.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-lg.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-microsoft.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-motorola.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-asha.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-series40.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-series60.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-windows.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-samsung-android.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-samsung-bada.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-siemens.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-sony.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-sonyericsson.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-xiaomi.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-aliyun.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-android.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-asha.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-bada.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-baiduyi.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-blackberry-10.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-blackberry.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-brew.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-cos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ezxlinux.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-feature.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-firefoxos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-fireos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-geos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ios.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-kaios.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-limo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-maemo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-meego.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-mre.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s30.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s40.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s80.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-sailfish.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-spreadtrum.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-symbian.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-threadx.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-tizen.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ubuntu.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-vre.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-webos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsce.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsmobile.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsphone.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-wophone.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/platform-air.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/wap.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/camouflage.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/reported.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/xmlhttprequest.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/airboard.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/casio.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/generic.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/mylo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/oasys.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/palm.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/psion.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/zaurus.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/phone/snom.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/canon.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/hp.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/taskalfa.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/signage/other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/browser-opera.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/manufacturer-samsung.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/manufacturer-webtab.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-android.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-blackberry.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-firefoxos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-fireos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-ios.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-leos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-ubuntu.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-webos.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/appletv.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-espial.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-machblue.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-nx.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-opera.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/firetv.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/google.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/hitachi.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/kreatv.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/lg.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/mitsubishi.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/nvidia.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/opentv.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/other.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/panasonic.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/philips.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/pioneer.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/roku.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/samsung.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sanyo.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sharp.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sony.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/toshiba.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-android-wear.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-android.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-tizen.yaml create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/Testrunner.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/Tests.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/polyfills.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/AnalyserTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/CacheTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/BrowserTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/DeviceTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/EngineTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/FamilyTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/MainTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/OsTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/Primitive/BaseTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/Primitive/NameVersionTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/UsingTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/VersionTest.php create mode 100644 wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/ParserTest.php create mode 100644 wp-content/plugins/wp-statistics/index.php create mode 100644 wp-content/plugins/wp-statistics/languages/index.php create mode 100644 wp-content/plugins/wp-statistics/languages/readme.txt create mode 100644 wp-content/plugins/wp-statistics/license.txt create mode 100644 wp-content/plugins/wp-statistics/readme.txt create mode 100644 wp-content/plugins/wp-statistics/uninstall.php create mode 100644 wp-content/plugins/wp-statistics/wp-statistics.php create mode 100644 wp-content/plugins/wp-youtube-lyte/external/do_not_donate_smallest.png create mode 100644 wp-content/plugins/wp-youtube-lyte/external/index.html create mode 100644 wp-content/plugins/wp-youtube-lyte/external/jquery.cookie.js create mode 100644 wp-content/plugins/wp-youtube-lyte/external/jquery.cookie.min.js create mode 100644 wp-content/plugins/wp-youtube-lyte/external/unslider-dots.css create mode 100644 wp-content/plugins/wp-youtube-lyte/external/unslider-min.js create mode 100644 wp-content/plugins/wp-youtube-lyte/external/unslider.css create mode 100644 wp-content/plugins/wp-youtube-lyte/index.html create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/index.html create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ca_ES.mo create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ca_ES.po create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-de_DE.mo create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-de_DE.po create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-es_ES.mo create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-es_ES.po create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-he_IL.mo create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-he_IL.po create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ro_RO.mo create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ro_RO.po create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sl_SI.mo create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sl_SI.po create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sr_RS.mo create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sr_RS.po create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-uk_UA.mo create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-uk_UA.po create mode 100644 wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte.pot create mode 100644 wp-content/plugins/wp-youtube-lyte/lyte/index.html create mode 100644 wp-content/plugins/wp-youtube-lyte/lyte/lyte-min.js create mode 100644 wp-content/plugins/wp-youtube-lyte/lyte/lyte.js create mode 100644 wp-content/plugins/wp-youtube-lyte/lyte/lytesprite.png create mode 100644 wp-content/plugins/wp-youtube-lyte/lyte/lytesprite_2014.png create mode 100644 wp-content/plugins/wp-youtube-lyte/lyte/lytesprite_claes.png create mode 100644 wp-content/plugins/wp-youtube-lyte/lytePartners.php create mode 100644 wp-content/plugins/wp-youtube-lyte/lyteThumbs.php create mode 100644 wp-content/plugins/wp-youtube-lyte/lyte_helper.php_example create mode 100644 wp-content/plugins/wp-youtube-lyte/options.php create mode 100644 wp-content/plugins/wp-youtube-lyte/player_sizes.inc.php create mode 100644 wp-content/plugins/wp-youtube-lyte/readme.txt create mode 100644 wp-content/plugins/wp-youtube-lyte/screenshot-1.png create mode 100644 wp-content/plugins/wp-youtube-lyte/widget.php create mode 100644 wp-content/plugins/wp-youtube-lyte/wp-youtube-lyte.php diff --git a/wp-content/plugins/PT-kandidaten b/wp-content/plugins/PT-kandidaten new file mode 160000 index 0000000..8d8f7e5 --- /dev/null +++ b/wp-content/plugins/PT-kandidaten @@ -0,0 +1 @@ +Subproject commit 8d8f7e5ead6d3d292593f412953fadbe84131c21 diff --git a/wp-content/plugins/advanced-custom-fields/README.md b/wp-content/plugins/advanced-custom-fields/README.md new file mode 100644 index 0000000..5322b70 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/README.md @@ -0,0 +1,25 @@ +# Advanced Custom Fields + +Welcome to the official Advanced Custom Fields repository on GitHub. ACF is a WordPress plugin used to take full control of your edit screens & custom field data. + +Looking for ACF version 4? Please use the [previous ACF repository](https://github.com/elliotcondon/acf). + +Upgrading from ACF version 4? Please read our [Upgrading from v4 to v5 guide](https://www.advancedcustomfields.com/resources/upgrading-v4-v5/). + +## Documentation + +Do you need help getting started with ACF, or do you have questions about one of the ACF features? You can [search through our documentation here](https://www.advancedcustomfields.com/resources). If you don't find the answers you're looking for, you can [submit a support ticket](https://support.advancedcustomfields.com/new-ticket/) or start a new forum thread in the [support forum](https://support.advancedcustomfields.com/). + +## Support + +This repository is not suitable for support. Please don't use our issue tracker for support requests, but for core issues only. +Support can take place in the appropriate channels: + +* Email based ticket system +* Community forum + +These channels can be accessed from our [support website](https://support.advancedcustomfields.com/). + +## Contributing + +If you have a patch, or stumbled upon an issue with ACF core, you can contribute this back to the code. Please create a new github issue with as much information as possible. \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/acf.php b/wp-content/plugins/advanced-custom-fields/acf.php new file mode 100644 index 0000000..62c8df7 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/acf.php @@ -0,0 +1,680 @@ +version; + $basename = plugin_basename( __FILE__ ); + $path = plugin_dir_path( __FILE__ ); + $url = plugin_dir_url( __FILE__ ); + $slug = dirname($basename); + + + // settings + $this->settings = array( + + // basic + 'name' => __('Advanced Custom Fields', 'acf'), + 'version' => $version, + + // urls + 'file' => __FILE__, + 'basename' => $basename, + 'path' => $path, + 'url' => $url, + 'slug' => $slug, + + // options + 'show_admin' => true, + 'show_updates' => true, + 'stripslashes' => false, + 'local' => true, + 'json' => true, + 'save_json' => '', + 'load_json' => array(), + 'default_language' => '', + 'current_language' => '', + 'capability' => 'manage_options', + 'uploader' => 'wp', + 'autoload' => false, + 'l10n' => true, + 'l10n_textdomain' => '', + 'google_api_key' => '', + 'google_api_client' => '', + 'enqueue_google_maps' => true, + 'enqueue_select2' => true, + 'enqueue_datepicker' => true, + 'enqueue_datetimepicker' => true, + 'select2_version' => 4, + 'row_index_offset' => 1, + 'remove_wp_meta_box' => true + ); + + + // constants + $this->define( 'ACF', true ); + $this->define( 'ACF_VERSION', $version ); + $this->define( 'ACF_PATH', $path ); + + // Include utility functions. + include_once( ACF_PATH . 'includes/acf-utility-functions.php'); + + // Include previous API functions. + acf_include('includes/api/api-helpers.php'); + acf_include('includes/api/api-template.php'); + acf_include('includes/api/api-term.php'); + + // Include classes. + acf_include('includes/class-acf-data.php'); + + // Include functions. + acf_include('includes/acf-helper-functions.php'); + acf_include('includes/acf-hook-functions.php'); + acf_include('includes/acf-field-functions.php'); + acf_include('includes/acf-field-group-functions.php'); + acf_include('includes/acf-form-functions.php'); + acf_include('includes/acf-meta-functions.php'); + acf_include('includes/acf-post-functions.php'); + acf_include('includes/acf-user-functions.php'); + acf_include('includes/acf-value-functions.php'); + acf_include('includes/acf-input-functions.php'); + + // fields + acf_include('includes/fields.php'); + acf_include('includes/fields/class-acf-field.php'); + + + // locations + acf_include('includes/locations.php'); + acf_include('includes/locations/class-acf-location.php'); + + + // core + acf_include('includes/assets.php'); + acf_include('includes/compatibility.php'); + acf_include('includes/deprecated.php'); + acf_include('includes/json.php'); + acf_include('includes/l10n.php'); + acf_include('includes/local-fields.php'); + acf_include('includes/local-meta.php'); + acf_include('includes/loop.php'); + acf_include('includes/media.php'); + acf_include('includes/revisions.php'); + acf_include('includes/updates.php'); + acf_include('includes/upgrades.php'); + acf_include('includes/validation.php'); + + // ajax + acf_include('includes/ajax/class-acf-ajax.php'); + acf_include('includes/ajax/class-acf-ajax-check-screen.php'); + acf_include('includes/ajax/class-acf-ajax-user-setting.php'); + acf_include('includes/ajax/class-acf-ajax-upgrade.php'); + + // forms + acf_include('includes/forms/form-attachment.php'); + acf_include('includes/forms/form-comment.php'); + acf_include('includes/forms/form-customizer.php'); + acf_include('includes/forms/form-front.php'); + acf_include('includes/forms/form-nav-menu.php'); + acf_include('includes/forms/form-post.php'); + acf_include('includes/forms/form-gutenberg.php'); + acf_include('includes/forms/form-taxonomy.php'); + acf_include('includes/forms/form-user.php'); + acf_include('includes/forms/form-widget.php'); + + + // admin + if( is_admin() ) { + acf_include('includes/admin/admin.php'); + acf_include('includes/admin/admin-field-group.php'); + acf_include('includes/admin/admin-field-groups.php'); + acf_include('includes/admin/admin-notices.php'); + acf_include('includes/admin/admin-tools.php'); + acf_include('includes/admin/admin-upgrade.php'); + acf_include('includes/admin/settings-info.php'); + } + + + // pro + acf_include('pro/acf-pro.php'); + + // Include tests. + if( defined('ACF_DEV') && ACF_DEV ) { + acf_include('tests/tests.php'); + } + + // actions + add_action('init', array($this, 'init'), 5); + add_action('init', array($this, 'register_post_types'), 5); + add_action('init', array($this, 'register_post_status'), 5); + + + // filters + add_filter('posts_where', array($this, 'posts_where'), 10, 2 ); + //add_filter('posts_request', array($this, 'posts_request'), 10, 1 ); + } + + + /* + * init + * + * This function will run after all plugins and theme functions have been included + * + * @type action (init) + * @date 28/09/13 + * @since 5.0.0 + * + * @param N/A + * @return N/A + */ + + function init() { + + // bail early if too early + // ensures all plugins have a chance to add fields, etc + if( !did_action('plugins_loaded') ) return; + + + // bail early if already init + if( acf_has_done('init') ) return; + + + // vars + $major = intval( acf_get_setting('version') ); + + + // update url + // - allow another plugin to modify dir (maybe force SSL) + acf_update_setting('url', plugin_dir_url( __FILE__ )); + + + // textdomain + acf_load_textdomain(); + + // include 3rd party support + acf_include('includes/third-party.php'); + + // include wpml support + if( defined('ICL_SITEPRESS_VERSION') ) { + acf_include('includes/wpml.php'); + } + + // fields + acf_include('includes/fields/class-acf-field-text.php'); + acf_include('includes/fields/class-acf-field-textarea.php'); + acf_include('includes/fields/class-acf-field-number.php'); + acf_include('includes/fields/class-acf-field-range.php'); + acf_include('includes/fields/class-acf-field-email.php'); + acf_include('includes/fields/class-acf-field-url.php'); + acf_include('includes/fields/class-acf-field-password.php'); + + acf_include('includes/fields/class-acf-field-image.php'); + acf_include('includes/fields/class-acf-field-file.php'); + acf_include('includes/fields/class-acf-field-wysiwyg.php'); + acf_include('includes/fields/class-acf-field-oembed.php'); + + acf_include('includes/fields/class-acf-field-select.php'); + acf_include('includes/fields/class-acf-field-checkbox.php'); + acf_include('includes/fields/class-acf-field-radio.php'); + acf_include('includes/fields/class-acf-field-button-group.php'); + acf_include('includes/fields/class-acf-field-true_false.php'); + + acf_include('includes/fields/class-acf-field-link.php'); + acf_include('includes/fields/class-acf-field-post_object.php'); + acf_include('includes/fields/class-acf-field-page_link.php'); + acf_include('includes/fields/class-acf-field-relationship.php'); + acf_include('includes/fields/class-acf-field-taxonomy.php'); + acf_include('includes/fields/class-acf-field-user.php'); + + acf_include('includes/fields/class-acf-field-google-map.php'); + acf_include('includes/fields/class-acf-field-date_picker.php'); + acf_include('includes/fields/class-acf-field-date_time_picker.php'); + acf_include('includes/fields/class-acf-field-time_picker.php'); + acf_include('includes/fields/class-acf-field-color_picker.php'); + + acf_include('includes/fields/class-acf-field-message.php'); + acf_include('includes/fields/class-acf-field-accordion.php'); + acf_include('includes/fields/class-acf-field-tab.php'); + acf_include('includes/fields/class-acf-field-group.php'); + do_action('acf/include_field_types', $major); + + + // locations + acf_include('includes/locations/class-acf-location-post-type.php'); + acf_include('includes/locations/class-acf-location-post-template.php'); + acf_include('includes/locations/class-acf-location-post-status.php'); + acf_include('includes/locations/class-acf-location-post-format.php'); + acf_include('includes/locations/class-acf-location-post-category.php'); + acf_include('includes/locations/class-acf-location-post-taxonomy.php'); + acf_include('includes/locations/class-acf-location-post.php'); + acf_include('includes/locations/class-acf-location-page-template.php'); + acf_include('includes/locations/class-acf-location-page-type.php'); + acf_include('includes/locations/class-acf-location-page-parent.php'); + acf_include('includes/locations/class-acf-location-page.php'); + acf_include('includes/locations/class-acf-location-current-user.php'); + acf_include('includes/locations/class-acf-location-current-user-role.php'); + acf_include('includes/locations/class-acf-location-user-form.php'); + acf_include('includes/locations/class-acf-location-user-role.php'); + acf_include('includes/locations/class-acf-location-taxonomy.php'); + acf_include('includes/locations/class-acf-location-attachment.php'); + acf_include('includes/locations/class-acf-location-comment.php'); + acf_include('includes/locations/class-acf-location-widget.php'); + acf_include('includes/locations/class-acf-location-nav-menu.php'); + acf_include('includes/locations/class-acf-location-nav-menu-item.php'); + do_action('acf/include_location_rules', $major); + + + // local fields + do_action('acf/include_fields', $major); + + + // action for 3rd party + do_action('acf/init'); + } + + + /* + * register_post_types + * + * This function will register post types and statuses + * + * @type function + * @date 22/10/2015 + * @since 5.3.2 + * + * @param n/a + * @return n/a + */ + + function register_post_types() { + + // vars + $cap = acf_get_setting('capability'); + + + // register post type 'acf-field-group' + register_post_type('acf-field-group', array( + 'labels' => array( + 'name' => __( 'Field Groups', 'acf' ), + 'singular_name' => __( 'Field Group', 'acf' ), + 'add_new' => __( 'Add New' , 'acf' ), + 'add_new_item' => __( 'Add New Field Group' , 'acf' ), + 'edit_item' => __( 'Edit Field Group' , 'acf' ), + 'new_item' => __( 'New Field Group' , 'acf' ), + 'view_item' => __( 'View Field Group', 'acf' ), + 'search_items' => __( 'Search Field Groups', 'acf' ), + 'not_found' => __( 'No Field Groups found', 'acf' ), + 'not_found_in_trash' => __( 'No Field Groups found in Trash', 'acf' ), + ), + 'public' => false, + 'show_ui' => true, + '_builtin' => false, + 'capability_type' => 'post', + 'capabilities' => array( + 'edit_post' => $cap, + 'delete_post' => $cap, + 'edit_posts' => $cap, + 'delete_posts' => $cap, + ), + 'hierarchical' => true, + 'rewrite' => false, + 'query_var' => false, + 'supports' => array('title'), + 'show_in_menu' => false, + )); + + + // register post type 'acf-field' + register_post_type('acf-field', array( + 'labels' => array( + 'name' => __( 'Fields', 'acf' ), + 'singular_name' => __( 'Field', 'acf' ), + 'add_new' => __( 'Add New' , 'acf' ), + 'add_new_item' => __( 'Add New Field' , 'acf' ), + 'edit_item' => __( 'Edit Field' , 'acf' ), + 'new_item' => __( 'New Field' , 'acf' ), + 'view_item' => __( 'View Field', 'acf' ), + 'search_items' => __( 'Search Fields', 'acf' ), + 'not_found' => __( 'No Fields found', 'acf' ), + 'not_found_in_trash' => __( 'No Fields found in Trash', 'acf' ), + ), + 'public' => false, + 'show_ui' => false, + '_builtin' => false, + 'capability_type' => 'post', + 'capabilities' => array( + 'edit_post' => $cap, + 'delete_post' => $cap, + 'edit_posts' => $cap, + 'delete_posts' => $cap, + ), + 'hierarchical' => true, + 'rewrite' => false, + 'query_var' => false, + 'supports' => array('title'), + 'show_in_menu' => false, + )); + + } + + + /* + * register_post_status + * + * This function will register custom post statuses + * + * @type function + * @date 22/10/2015 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function register_post_status() { + + // acf-disabled + register_post_status('acf-disabled', array( + 'label' => __( 'Inactive', 'acf' ), + 'public' => true, + 'exclude_from_search' => false, + 'show_in_admin_all_list' => true, + 'show_in_admin_status_list' => true, + 'label_count' => _n_noop( 'Inactive (%s)', 'Inactive (%s)', 'acf' ), + )); + + } + + + /* + * posts_where + * + * This function will add in some new parameters to the WP_Query args allowing fields to be found via key / name + * + * @type filter + * @date 5/12/2013 + * @since 5.0.0 + * + * @param $where (string) + * @param $wp_query (object) + * @return $where (string) + */ + + function posts_where( $where, $wp_query ) { + + // global + global $wpdb; + + + // acf_field_key + if( $field_key = $wp_query->get('acf_field_key') ) { + $where .= $wpdb->prepare(" AND {$wpdb->posts}.post_name = %s", $field_key ); + } + + // acf_field_name + if( $field_name = $wp_query->get('acf_field_name') ) { + $where .= $wpdb->prepare(" AND {$wpdb->posts}.post_excerpt = %s", $field_name ); + } + + // acf_group_key + if( $group_key = $wp_query->get('acf_group_key') ) { + $where .= $wpdb->prepare(" AND {$wpdb->posts}.post_name = %s", $group_key ); + } + + + // return + return $where; + + } + + + /* + * define + * + * This function will safely define a constant + * + * @type function + * @date 3/5/17 + * @since 5.5.13 + * + * @param $name (string) + * @param $value (mixed) + * @return n/a + */ + + function define( $name, $value = true ) { + + if( !defined($name) ) { + define( $name, $value ); + } + + } + + /** + * has_setting + * + * Returns true if has setting. + * + * @date 2/2/18 + * @since 5.6.5 + * + * @param string $name + * @return boolean + */ + + function has_setting( $name ) { + return isset($this->settings[ $name ]); + } + + /** + * get_setting + * + * Returns a setting. + * + * @date 28/09/13 + * @since 5.0.0 + * + * @param string $name + * @return mixed + */ + + function get_setting( $name ) { + return isset($this->settings[ $name ]) ? $this->settings[ $name ] : null; + } + + /** + * update_setting + * + * Updates a setting. + * + * @date 28/09/13 + * @since 5.0.0 + * + * @param string $name + * @param mixed $value + * @return n/a + */ + + function update_setting( $name, $value ) { + $this->settings[ $name ] = $value; + return true; + } + + /** + * get_data + * + * Returns data. + * + * @date 28/09/13 + * @since 5.0.0 + * + * @param string $name + * @return mixed + */ + + function get_data( $name ) { + return isset($this->data[ $name ]) ? $this->data[ $name ] : null; + } + + + /** + * set_data + * + * Sets data. + * + * @date 28/09/13 + * @since 5.0.0 + * + * @param string $name + * @param mixed $value + * @return n/a + */ + + function set_data( $name, $value ) { + $this->data[ $name ] = $value; + } + + + /** + * get_instance + * + * Returns an instance. + * + * @date 13/2/18 + * @since 5.6.9 + * + * @param string $class The instance class name. + * @return object + */ + + function get_instance( $class ) { + $name = strtolower($class); + return isset($this->instances[ $name ]) ? $this->instances[ $name ] : null; + } + + /** + * new_instance + * + * Creates and stores an instance. + * + * @date 13/2/18 + * @since 5.6.9 + * + * @param string $class The instance class name. + * @return object + */ + + function new_instance( $class ) { + $instance = new $class(); + $name = strtolower($class); + $this->instances[ $name ] = $instance; + return $instance; + } + +} + + +/* +* acf +* +* The main function responsible for returning the one true acf Instance to functions everywhere. +* Use this function like you would a global variable, except without needing to declare the global. +* +* Example: +* +* @type function +* @date 4/09/13 +* @since 4.3.0 +* +* @param N/A +* @return (object) +*/ + +function acf() { + + // globals + global $acf; + + + // initialize + if( !isset($acf) ) { + $acf = new ACF(); + $acf->initialize(); + } + + + // return + return $acf; + +} + + +// initialize +acf(); + + +endif; // class_exists check + +?> diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_dark.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_dark.scss new file mode 100644 index 0000000..d66128c --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_dark.scss @@ -0,0 +1,437 @@ +/*-------------------------------------------------------------------------------------------- +* +* Dark mode +* +* WordPress plugin: https://en-au.wordpress.org/plugins/dark-mode/ +* Github Documentation: https://github.com/danieltj27/Dark-Mode/wiki/Help:-Plugin-Compatibility-Guide +* +*--------------------------------------------------------------------------------------------*/ + +// Dark Mode Colours. +$white: #ffffff; +$black: #000000; +$blue: #0073aa; +$medium-blue: #00a0d2; +$clear: transparent; + +$accent-red: #dc3232; +$accent-orange: #f56e28; +$accent-yellow: #ffb900; +$accent-green: #46b450; +$accent-blue: $blue; +$accent-purple: #826eb4; + +$base-grey: #23282d; +$light-grey: #bbc8d4; +$heavy-grey: #37444c; +$dark-grey: #32373c; +$ultra-grey: #191f25; +$dark-silver: #50626f; +$base-blue: #2e74aa; +$light-blue: #4092d2; +$dark-blue: #2c5f88; +$ultra-blue: #1f3f58; +$bright-blue: #30ceff; + +$editor-lavender: #c678dd; +$editor-sunglo: #e06c75; +$editor-olivine: #98c379; + +// Custom variables. +$body_text: #bbc8d4; +$body_background: #23282d; +$body_background2: #191f25; +$postbox_background: #32373c; +$postbox_border: #191f25; +$postbox_divider: #23282d; +$input_background: #50626f; +$input_text: #fff; +$input_border: #191f25; + +// Mixins. +@mixin dark-text() { + color: $body_text; +} +@mixin dark-heading() { + color: $body_text; +} +@mixin dark-border() { + border-color: $postbox_border; +} +@mixin dark-background() { + background: $body_background; +} +@mixin darker-background() { + background: darken($body_background, 5%); +} +@mixin dark-postbox() { + background-color: $postbox_background; + border-color: $postbox_border; + color: $body_text; +} +@mixin dark-postbox-block() { + background-color: #2d3136; + border-color: $postbox_divider; +} +@mixin dark-divider() { + border-color: $postbox_divider; +} +@mixin dark-input() { + background-color: $input_background; + border-color: $input_border; + color: $input_text; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Global +* +*---------------------------------------------------------------------------------------------*/ + +// acf-box +.acf-box { + @include dark-postbox(); + + .title, + .footer { + @include dark-divider(); + } + + h2 { + @include dark-heading(); + } + + table, tbody, tr { + background: transparent !important; + } +} + +// thead +.acf-thead { + @include dark-heading(); + @include dark-border(); +} +.acf-tfoot { + @include dark-postbox-block(); +} + +// table clear +.acf-table.-clear, +.acf-table.-clear tr { + background: transparent !important; +} + +// loading overlay +.acf-loading-overlay { + background: rgba(0,0,0,0.5); +} + + +/*--------------------------------------------------------------------------------------------- +* +* Fields +* +*---------------------------------------------------------------------------------------------*/ + +// fields +.acf-fields { + + // field + > .acf-field { + @include dark-divider(); + } +} + +// fields (left) +.acf-fields.-left { + + > .acf-field { + &:before { + background: rgba(0,0,0,0.1); + @include dark-divider(); + } + } +} + +// fields (border) +.acf-fields.-border { + @include dark-postbox(); +} + +// width +.acf-field[data-width] + .acf-field[data-width] { + @include dark-divider(); +} + +// text +.acf-input-prepend, +.acf-input-append { + @include dark-postbox(); +} + +// tab +.acf-tab-wrap { + +} + +.acf-fields > .acf-tab-wrap { + @include dark-postbox(); + + .acf-tab-group { + @include dark-postbox-block(); + + li { + a { + @include dark-postbox-block(); + + &:hover { + @include dark-postbox-block(); + @include dark-text(); + } + } + + &.active a { + @include dark-postbox(); + } + } + } +} + +.acf-fields.-sidebar { + &:before { + @include dark-postbox-block(); + } +} + +.acf-fields.-sidebar.-left { + &:before { + @include dark-postbox-block(); + background: $body_background; + } + > .acf-tab-wrap.-left { + .acf-tab-group li a { + @include dark-postbox-block(); + } + + .acf-tab-group li.active a { + @include dark-postbox-block(); + } + } +} + +// file +.acf-file-uploader { + + .show-if-value { + @include dark-postbox(); + + .file-icon { + @include dark-postbox-block(); + } + } +} + +// acf-oembed +.acf-oembed { + @include dark-postbox-block(); + + .title { + @include dark-input(); + } +} + +// gallery +.acf-gallery { + @include dark-postbox-block(); + + .acf-gallery-main { + @include dark-background(); + } + + .acf-gallery-attachment { + .margin { + @include dark-postbox-block(); + } + } + + .acf-gallery-side { + @include dark-postbox-block(); + + .acf-gallery-side-info { + @include dark-postbox-block(); + } + } + + .acf-gallery-toolbar { + @include dark-postbox-block(); + } +} + +// button group +.acf-button-group { + + label:not(.selected) { + @include dark-postbox-block(); + } +} + +// switch +.acf-switch:not(.-on) { + @include dark-postbox-block(); + .acf-switch-slider { + @include dark-input(); + } +} + +// link +.acf-link .link-wrap { + @include dark-postbox-block(); +} + +// relationship +.acf-relationship { + .filters { + @include dark-postbox(); + } + .selection { + @include dark-postbox-block(); + .choices, + .choices-list, + .values { + @include dark-postbox-block(); + } + } +} + +// checkbox +.acf-taxonomy-field .categorychecklist-holder { + @include dark-postbox-block(); +} + +// google map +.acf-google-map { + @include dark-postbox-block(); + + .title { + @include dark-input(); + } +} + +// accordion +.acf-accordion { + @include dark-postbox(); +} +.acf-field.acf-accordion .acf-accordion-content > .acf-fields { + @include dark-border(); +} + +// flexible content +.acf-flexible-content { + .layout { + @include dark-postbox(); + + .acf-fc-layout-handle { + @include dark-postbox-block(); + + .acf-fc-layout-order { + @include dark-postbox(); + } + } + } +} + +// repeater +#wpbody .acf-table { + @include dark-postbox-block(); + + > tbody, + > thead { + > tr { + background: transparent; + + > td, + > th { + @include dark-border(); + } + } + } +} + +// Select +.acf-field select { + optgroup, optgroup:nth-child(2n) { + background: $input_background; + } +} + +/*--------------------------------------------------------------------------------------------- +* +* Field Group +* +*---------------------------------------------------------------------------------------------*/ + +// fields +#acf-field-group-fields { + + // field list + .acf-field-list-wrap { + @include dark-postbox(); + } + + .acf-field-list { + .no-fields-message { + @include dark-postbox(); + } + } + + // field + .acf-field-object { + @include dark-postbox(); + @include dark-divider(); + + + table, tbody, tr, td, th { + background: transparent; + @include dark-divider(); + } + + .acf-field { + .acf-label { + @include dark-postbox-block(); + } + } + + // sortable + &.ui-sortable-helper { + @include dark-border(); + box-shadow: none; + } + + &.ui-sortable-placeholder { + @include dark-postbox-block(); + box-shadow: none; + } + } + + .acf-field-object + .acf-field-object-tab::before, + .acf-field-object + .acf-field-object-accordion::before { + @include dark-postbox-block(); + } +} + + +/*--------------------------------------------------------------------------------------------- +* +* Admin: Tools +* +*---------------------------------------------------------------------------------------------*/ + +// tools +.acf-meta-box-wrap { + + .acf-fields { + @include dark-input(); + background: transparent; + } +} \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_field-group.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_field-group.scss new file mode 100644 index 0000000..22daff3 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_field-group.scss @@ -0,0 +1,600 @@ +/*--------------------------------------------------------------------------------------------- +* +* Global +* +*---------------------------------------------------------------------------------------------*/ + +#adv-settings .show-field-keys label { + padding: 0 5px; +} + + +#acf-field-group-fields > .inside, +#acf-field-group-locations > .inside, +#acf-field-group-options > .inside { + padding: 0; + margin: 0; +} + +.acf-field { + + p.description { + font-style: normal; + font-size: 12px; + color: #777777; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Postbox: Publish +* +*---------------------------------------------------------------------------------------------*/ + +#minor-publishing-actions, +#misc-publishing-actions #visibility { + display: none; +} + +#minor-publishing { + border-bottom: 0 none; +} + +#misc-pub-section { + border-bottom: 0 none; +} + +#misc-publishing-actions .misc-pub-section { + border-bottom-color: #F5F5F5; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Postbox: Fields +* +*---------------------------------------------------------------------------------------------*/ + +#acf-field-group-fields { + border: 0 none; + box-shadow: none; + + + /* metabox */ + > .handlediv, + > .hndle { + display: none; + } + + + /* links */ + a { + text-decoration: none; + + &:active, + &:focus { + outline: none; + box-shadow: none; + } + } + + + /* table header */ + .li-field-order { width: 20%; } + .li-field-label { width: 30%; } + .li-field-name { width: 25%; } + .li-field-type { width: 25%; } + .li-field-key { display: none; } + + + /* show keys */ + &.show-field-keys { + + .li-field-label, + .li-field-name, + .li-field-type, + .li-field-key { width: 20%; } + .li-field-key { display: block; } + } + + + /* fields */ + .acf-field-list-wrap { + border: #DFDFDF solid 1px; + } + + .acf-field-list { + background: #F9F9F9; + margin-top: -1px; + + /* no fields */ + .no-fields-message { + padding: 15px 15px; + background: #fff; + display: none; + } + + /* empty */ + &.-empty { + .no-fields-message { + display: block; + } + } + } + +} + + +/* field object */ +.acf-field-object { + border-top: #F0F0F0 solid 1px; + background: #fff; + + /* sortable */ + &.ui-sortable-helper { + border-top-color: #fff; + box-shadow: 0 0 0 1px #DFDFDF, 0 1px 4px rgba(0,0,0,0.1); + } + + &.ui-sortable-placeholder { + box-shadow: 0 -1px 0 0 #DFDFDF; + visibility: visible !important; + background: #F9F9F9; + border-top-color: transparent; + min-height: 54px; + + // hide tab field separator + &:after, &:before { + visibility: hidden; + } + } + + + /* meta */ + > .meta { + display: none; + } + + + /* handle */ + > .handle { + + a { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + } + + li { + padding-top: 10px; + padding-bottom: 10px; + word-wrap: break-word; + } + + .acf-icon { + margin: 1px 0 0; + cursor: move; + background: transparent; + float: left; + + height: 28px; + line-height: 28px; + width: 28px; + font-size: 13px; + color: #444; + position: relative; + z-index: 1; + } + + strong { + display: block; + padding-bottom: 6px; + font-size: 14px; + line-height: 14px; + min-height: 14px; + } + + .row-options { + visibility: hidden; + + a { + margin-right: 4px; + } + + a.delete-field { + color: #a00; + + &:hover { color: #f00; } + } + } + + } + + /* open */ + &.open { + + + .acf-field-object { + border-top-color: #E1E1E1; + } + + > .handle { + background: $acf_blue; + border: darken($acf_blue, 2%) solid 1px; + text-shadow: #268FBB 0 1px 0; + color: #fff; + position: relative; + margin: -1px -1px 0 -1px; + + a { + color: #fff !important; + + &:hover { + text-decoration: underline !important; + } + } + + .acf-icon { + border-color: #fff; + color: #fff; + } + + .acf-required { + color: #fff; + } + } + } + + +/* + // debug + &[data-save="meta"] { + > .handle { + border-left: #ffb700 solid 5px !important; + } + } + + &[data-save="settings"] { + > .handle { + border-left: #0ec563 solid 5px !important; + } + } +*/ + + + /* hover */ + &:hover, &.-hover { + + > .handle { + + .row-options { + visibility: visible; + } + + } + } + + + /* settings */ + > .settings { + display: none; + width: 100%; + + > .acf-table { + border: none; + } + } + + + /* conditional logic */ + .rule-groups { + margin-top: 20px; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Postbox: Locations +* +*---------------------------------------------------------------------------------------------*/ + +.rule-groups { + + h4 { + margin: 15px 0 5px; + } + + .rule-group { + margin: 0 0 5px; + + h4 { + margin: 0 0 3px; + } + + td.param { + width: 35%; + } + + td.operator { + width: 20%; + } + + td.add { + width: 40px; + } + + td.remove { + width: 28px; + vertical-align: middle; + + a { + visibility: hidden; + } + } + + tr:hover td.remove a { + visibility: visible; + } + + /* Don't allow user to delete the first field group */ + &:first-child tr:first-child td.remove a { + visibility: hidden !important; + } + + // empty select + select:empty { + background: #f8f8f8; + } + } +} + + +/*--------------------------------------------------------------------------------------------- +* +* Options +* +*---------------------------------------------------------------------------------------------*/ + +#acf-field-group-options tr[data-name="hide_on_screen"] li { + float: left; + width: 33%; +} + +@media (max-width: 1100px) { + + #acf-field-group-options tr[data-name="hide_on_screen"] li { + width: 50%; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Conditional Logic +* +*---------------------------------------------------------------------------------------------*/ + +table.conditional-logic-rules { + background: transparent; + border: 0 none; + border-radius: 0; +} + +table.conditional-logic-rules tbody td { + background: transparent; + border: 0 none !important; + padding: 5px 2px !important; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Field: Tab +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field-object-tab { + + // hide setting + .acf-field-setting-name, + .acf-field-setting-instructions, + .acf-field-setting-required, + .acf-field-setting-warning, + .acf-field-setting-wrapper { + display: none; + } + + // hide name + .li-field-name { + visibility: hidden; + } + + // add spacer + .acf-field-object + & { + + &:before { + display: block; + content: ""; + height: 5px; + width: 100%; + background: #f9f9f9; + border-bottom: #f0f0f0 solid 1px; + } + } + + p:first-child { + margin: 0.5em 0; + } +} + + +/*--------------------------------------------------------------------------------------------- +* +* Field: Accordion +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field-object-accordion { + @extend .acf-field-object-tab; + + // show settings + .acf-field-setting-instructions { + display: table-row; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Field: Message +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field-object-message tr[data-name="name"], +.acf-field-object-message tr[data-name="instructions"], +.acf-field-object-message tr[data-name="required"] { + display: none !important; +} + +.acf-field-object-message .li-field-name { + visibility: hidden; +} + +.acf-field-object-message textarea { + height: 175px !important; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Field: Separator +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field-object-separator tr[data-name="name"], +.acf-field-object-separator tr[data-name="instructions"], +.acf-field-object-separator tr[data-name="required"] { + display: none !important; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Field: Date Picker +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field-object-date-picker, +.acf-field-object-time-picker, +.acf-field-object-date-time-picker { + + .acf-radio-list { + + li { + line-height: 25px; + } + + span { + display: inline-block; + min-width: 10em; + } + + input[type="text"] { + width: 100px; + } + } + +} + +.acf-field-object-date-time-picker { + + .acf-radio-list { + + span { + min-width: 15em; + } + + input[type="text"] { + width: 200px; + } + } + +} + + +/*-------------------------------------------------------------------------------------------- +* +* Slug +* +*--------------------------------------------------------------------------------------------*/ + +#slugdiv { + + .inside { + padding: 12px; + margin: 0; + } + + input[type="text"] { + width: 100%; + height: 28px; + font-size: 14px; + } +} + + +/*-------------------------------------------------------------------------------------------- +* +* RTL +* +*--------------------------------------------------------------------------------------------*/ + +html[dir="rtl"] .acf-field-object.open > .handle { + margin: -1px -1px 0; +} + +html[dir="rtl"] .acf-field-object.open > .handle .acf-icon { + float: right; +} + +html[dir="rtl"] .acf-field-object.open > .handle .li-field-order { + padding-left: 0 !important; + padding-right: 15px !important; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Device +* +*---------------------------------------------------------------------------------------------*/ + +@media only screen and (max-width: 850px) { + + tr.acf-field, + td.acf-label, + td.acf-input { + display: block !important; + width: auto !important; + border: 0 none !important; + } + + tr.acf-field { + border-top: #ededed solid 1px !important; + margin-bottom: 0 !important; + } + + td.acf-label { + background: transparent !important; + padding-bottom: 0 !important; + + } + +} + diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_fields.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_fields.scss new file mode 100644 index 0000000..5a150fa --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_fields.scss @@ -0,0 +1,2778 @@ +/*-------------------------------------------------------------------------------------------- +* +* acf-field +* +*--------------------------------------------------------------------------------------------*/ + +.acf-field, +.acf-field .acf-label, +.acf-field .acf-input { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: relative; +} + +.acf-field { + margin: 15px 0; + + // clear is important as it will avoid any layout issues with floating fields + // do not delete (you have tried this) + clear: both; + + // description + p.description { + display: block; + margin: 0; + padding: 0; + } + + // label + .acf-label { + vertical-align: top; + margin: 0 0 10px; + + label { + display: block; + font-weight: bold; + margin: 0 0 3px; + padding: 0; + } + + &:empty { + margin-bottom: 0; + } + } + + // input + .acf-input { + vertical-align: top; + + > p.description { + margin-top: 5px; + } + } + + // notice + .acf-notice { + margin: 0 0 15px; + background: #edf2ff; + color: #2183b9; + border: none; + + .acf-notice-dismiss { + background: transparent; + color: inherit; + + &:hover { + background: #fff; + } + } + + // dismiss + &.-dismiss { + padding-right: 40px; + } + + // error + &.-error { + background: #ffe6e6; + color: #d12626; + } + + // success + &.-success { + background: #eefbe8; + color: #32a23b; + } + + // warning + &.-warning { + background: #fff3e6; + color: #d16226; + } + } + + // table + @at-root td#{&}, tr#{&} { + margin: 0; + } +} + +// width +.acf-field[data-width] { + float: left; + clear: none; + + // next + + .acf-field[data-width] { + border-left: 1px solid #eeeeee; + } + + // rtl + html[dir="rtl"] & { + float: right; + + + .acf-field[data-width] { + border-left: none; + border-right: 1px solid #eeeeee; + } + } + + // table + @at-root td#{&}, tr#{&} { + float: none; + } + + // mobile +/* + @media screen and (max-width: $sm) { + float: none; + width: auto; + border-left-width: 0; + border-right-width: 0; + } +*/ +} + + +// float helpers +.acf-field.-c0 { + clear: both; + border-left-width: 0 !important; + + // rtl + html[dir="rtl"] & { + border-left-width: 1px !important; + border-right-width: 0 !important; + } +} + +.acf-field.-r0 { + border-top-width: 0 !important; +} + + +/*-------------------------------------------------------------------------------------------- +* +* acf-fields +* +*--------------------------------------------------------------------------------------------*/ + +.acf-fields { + position: relative; + + // clearifx + @include clearfix(); + + // border + &.-border { + border: #dfdfdf solid 1px; + background: #fff; + } + + // field + > .acf-field { + position: relative; + margin: 0; + padding: $field_padding; + border-top: #EEEEEE solid 1px; + + // first + &:first-child { + border-top-width: 0; + } + } + + // table + @at-root td#{&} { + padding: 0 !important; + } +} + + + +/*-------------------------------------------------------------------------------------------- +* +* acf-fields (clear) +* +*--------------------------------------------------------------------------------------------*/ + +.acf-fields.-clear > .acf-field { + border: none; + padding: 0; + margin: 15px 0; + + // width + &[data-width] { + border: none !important; + } + + // label + > .acf-label { + padding: 0; + } + + // input + > .acf-input { + padding: 0; + } +} + + +/*-------------------------------------------------------------------------------------------- +* +* acf-fields (left) +* +*--------------------------------------------------------------------------------------------*/ + +.acf-fields.-left > .acf-field { + padding: $fy 0; + + // clearifx + @include clearfix(); + + // sidebar + &:before { + content: ""; + display: block; + position: absolute; + z-index: 0; + background: #F9F9F9; + border-color: #E1E1E1; + border-style: solid; + border-width: 0 1px 0 0; + top: 0; + bottom: 0; + left: 0; + width: 20%; + } + + // width + &[data-width] { + float: none; + width: auto !important; + border-left-width: 0 !important; + border-right-width: 0 !important; + } + + // label + > .acf-label { + float: left; + width: 20%; + margin: 0; + padding: 0 $fx; + } + + // input + > .acf-input { + float: left; + width: 80%; + margin: 0; + padding: 0 $fx; + } + + // rtl + html[dir="rtl"] & { + + // sidebar + &:before { + border-width: 0 0 0 1px; + left: auto; + right: 0; + } + + // label + > .acf-label { + float: right; + } + + // input + > .acf-input { + float: right; + } + } + + // mobile + @media screen and (max-width: $sm) { + + // sidebar + &:before { + display: none; + } + + // label + > .acf-label { + width: 100%; + margin-bottom: 10px; + } + + // input + > .acf-input { + width: 100%; + } + } +} + +/* clear + left */ +.acf-fields.-clear.-left > .acf-field { + padding: 0; + border: none; + + // sidebar + &:before { + display: none; + } + + // label + > .acf-label { + padding: 0; + } + + // input + > .acf-input { + padding: 0; + } +} + + +/*-------------------------------------------------------------------------------------------- +* +* acf-table +* +*--------------------------------------------------------------------------------------------*/ + +.acf-table tr.acf-field { + + // label + > td.acf-label { + padding: $fp; + margin: 0; + background: #F9F9F9; + width: 20%; + } + + // input + > td.acf-input { + padding: $fp; + margin: 0; + border-left-color: #E1E1E1; + } +} + +.acf-sortable-tr-helper { + position: relative !important; + display: table-row !important; +} + + +/*-------------------------------------------------------------------------------------------- +* +* acf-postbox +* +*--------------------------------------------------------------------------------------------*/ + +.acf-postbox { + position: relative; + + // inside + > .inside { + margin: 0 !important; /* override WP style - do not delete - you have tried this before */ + padding: 0 !important; /* override WP style - do not delete - you have tried this before */ + } + + // hndle + > .hndle { + + /* edit field group */ + .acf-hndle-cog { + color: #AAAAAA; + font-size: 16px; + line-height: 20px; + padding: 0 2px; + float: right; + position: relative; + display: none; + + &:hover { + color: #777777; + } + } + } + + // hover + &:hover > .hndle .acf-hndle-cog { + display: block; + } + + // replace + .acf-replace-with-fields { + padding: 15px; + text-align: center; + } +} + +// Correct margin around #acf_after_title +#post-body-content #acf_after_title-sortables { + margin: 20px 0 -20px; +} + +/* seamless */ +.acf-postbox.seamless { + border: 0 none; + background: transparent; + box-shadow: none; + + + /* hide hndle */ + > .hndle, + > .handlediv { + display: none !important; + } + + + /* inside */ + > .inside { + display: block !important; /* stop metabox from hiding when closed */ + margin-left: -$field_padding_x !important; + margin-right: -$field_padding_x !important; + + > .acf-field { + border-color: transparent; + } + } +} + + +/* seamless (left) */ +.acf-postbox.seamless > .acf-fields.-left { + + /* hide sidebar bg */ + > .acf-field:before { + display: none; + } + + + /* mobile */ + @media screen and (max-width: 782px) { + + /* remove padding */ + & > .acf-field > .acf-label, + & > .acf-field > .acf-input { + padding: 0; + } + } +} + +/*--------------------------------------------------------------------------------------------- +* +* Inputs +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field { + + // inputs + input[type="text"], + input[type="password"], + input[type="number"], + input[type="search"], + input[type="email"], + input[type="url"], + textarea, + select { + width: 100%; + padding: 3px 5px; + resize: none; + margin: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + + font-size: 14px; + line-height: 1.4; + + // disabled + &:disabled { + background: #f8f8f8; + } + + // readonly + &[readonly] { + background: #f8f8f8; + } + } + + // textarea + textarea { + resize: vertical; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Text +* +*---------------------------------------------------------------------------------------------*/ +.acf-input-prepend, +.acf-input-append, +.acf-input-wrap { + box-sizing: border-box; +} + +.acf-input-prepend, +.acf-input-append { + font-size: 13px; + line-height: 20px; + padding: 3px 7px; + background: #F4F4F4; + border: #DFDFDF solid 1px; +} + +.acf-input-prepend { + float: left; + border-right-width: 0; + border-radius: 3px 0 0 3px; +} + +.acf-input-append { + float: right; + border-left-width: 0; + border-radius: 0 3px 3px 0; +} + +.acf-input-wrap { + position: relative; + overflow: hidden; + + input { + height: 28px; + margin: 0; + } +} + +input.acf-is-prepended { + border-radius: 0 3px 3px 0 !important; +} + +input.acf-is-appended { + border-radius: 3px 0 0 3px !important; +} + +input.acf-is-prepended.acf-is-appended { + border-radius: 0 !important; +} + + +/* rtl */ +html[dir="rtl"] .acf-input-prepend { + border-left-width: 0; + border-right-width: 1px; + border-radius: 0 3px 3px 0; + + float: right; +} + +html[dir="rtl"] .acf-input-append { + border-left-width: 1px; + border-right-width: 0; + border-radius: 3px 0 0 3px; + float: left; +} + +html[dir="rtl"] input.acf-is-prepended { + border-radius: 3px 0 0 3px !important; +} + +html[dir="rtl"] input.acf-is-appended { + border-radius: 0 3px 3px 0 !important; +} + +html[dir="rtl"] input.acf-is-prepended.acf-is-appended { + border-radius: 0 !important; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Color Picker +* +*---------------------------------------------------------------------------------------------*/ + +.acf-color-picker { + + .wp-picker-active { + position: relative; + z-index: 1; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Url +* +*---------------------------------------------------------------------------------------------*/ + +.acf-url { + + i { + position: absolute; + top: 4px; + left: 4px; + opacity: 0.5; + color: #A9A9A9; + } + + input[type="url"] { + padding-left: 25px; + } + + &.-valid i { + opacity: 1; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Select +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field select { + padding: 2px; +} + +.acf-field select optgroup { + padding: 5px; + background: #fff; +} + +.acf-field select option { + padding: 3px; +} + +.acf-field select optgroup option { + padding-left: 5px; +} + +.acf-field select optgroup:nth-child(2n) { + background: #F9F9F9; +} + +.acf-field .select2-input { + max-width: 200px; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Select2 (v3) +* +*---------------------------------------------------------------------------------------------*/ + +.select2-container.-acf { + + .select2-choices { + background: #fff; + border-color: #ddd; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07) inset; + min-height: 31px; + + .select2-search-choice { + margin: 5px 0 5px 5px; + padding: 3px 5px 3px 18px; + border-color: #bbb; + background: #f9f9f9; + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25) inset; + + /* sortable item*/ + &.ui-sortable-helper { + background: #5897fb; + border-color: darken(#5897fb, 5%); + color: #fff; + box-shadow: 0 0 3px rgba(0,0,0,0.1); + + a { + visibility: hidden; + } + } + + + /* sortable shadow */ + &.ui-sortable-placeholder { + background-color: #f7f7f7; + border-color: #f7f7f7; + visibility: visible !important; + } + } + + .select2-search-choice-focus { + border-color: #999; + } + + .select2-search-field input { + height: 31px; + line-height: 22px; + margin: 0; + padding: 5px 5px 5px 7px; + } + } + + .select2-choice { + border-color: #BBBBBB; + + .select2-arrow { + background: transparent; + border-left-color: #DFDFDF; + padding-left: 1px; + } + + .select2-result-description { + display: none; + } + } + + + + /* open */ + &.select2-container-active .select2-choices, + &.select2-dropdown-open .select2-choices { + border-color: #5B9DD9; + border-radius: 3px 3px 0 0; + } + + + /* single open */ + &.select2-dropdown-open .select2-choice { + background: #fff; + border-color: #5B9DD9; + } + +} + +/* rtl */ +html[dir="rtl"] .select2-container.-acf { + + .select2-search-choice-close { + left: 24px; + } + + .select2-choice > .select2-chosen { + margin-left: 42px; + } + + .select2-choice .select2-arrow { + padding-left: 0; + padding-right: 1px; + } +} + + +/* description */ +.select2-drop { + + /* search*/ + .select2-search { + padding: 4px 4px 0; + } + + + /* result */ + .select2-result { + + .select2-result-description { + color: #999; + font-size: 12px; + margin-left: 5px; + } + + + /* hover*/ + &.select2-highlighted { + + .select2-result-description { + color: #fff; + opacity: 0.75; + } + + } + + } + +} + + + +/*--------------------------------------------------------------------------------------------- +* +* Select2 (v4) +* +*---------------------------------------------------------------------------------------------*/ + +// Fix unneeded bottom margin. +.select2-container.-acf { + + // Reset WP default style. + li{ + margin-bottom: 0; + } + + // Multiple wrap. + .select2-selection--multiple { + + // If no value, increase hidden search input full width. + // Overrides calculated px width issues. + .select2-search--inline:first-child { + float: none; + input { + width: 100% !important; + } + } + + // ul: Remove padding because li already has margin-right. + .select2-selection__rendered { + padding-right: 0; + } + + // li + .select2-selection__choice { + background-color: #f7f7f7; + border-color: #cccccc; + + // Allow choice to wrap multiple lines. + max-width: 100%; + overflow: hidden; + word-wrap: normal !important; + white-space: normal; + + // Sortable. + &.ui-sortable-helper { + background: #5897fb; + border-color: darken(#5897fb, 5%); + color: #fff; + box-shadow: 0 0 3px rgba(0,0,0,0.1); + + span { + visibility: hidden; + } + } + + // Sortable shadow + &.ui-sortable-placeholder { + background-color: #f7f7f7; + border-color: #f7f7f7; + visibility: visible !important; + } + } + + // search + .select2-search__field { + box-shadow: none !important; + } + } + + // Single choice. + .select2-selection--single { + + } + + // Fix single select pushing out repeater field table width. + .acf-row & .select2-selection--single { + overflow: hidden; + .select2-selection__rendered { + white-space: normal; + } + } +} + +// z-index helper. +.select2-container { + .select2-dropdown { + z-index: 900000; + } +} + +/*--------------------------------------------------------------------------------------------- +* +* Link +* +*---------------------------------------------------------------------------------------------*/ + +.link-wrap { + border: #dddddd solid 1px; + border-radius: 3px; + padding: 5px; + line-height: 26px; + background: #fff; + + word-wrap: break-word; + word-break: break-all; + + .link-title { + padding: 0 5px; + } + +} + +.acf-link { + + .link-wrap, + .acf-icon.-link-ext { display: none; } + + /* value */ + &.-value { + + .button { display: none; } + .link-wrap { display: inline-block; } + + } + + + /* external */ + &.-external { + + .acf-icon.-link-ext { display: inline-block; } + + } + +} + +#wp-link-backdrop { z-index: 900000 !important; } +#wp-link-wrap { z-index: 900001 !important; } + + + +/*--------------------------------------------------------------------------------------------- +* +* Radio +* +*---------------------------------------------------------------------------------------------*/ + +ul.acf-radio-list, +ul.acf-checkbox-list { + background: transparent; + position: relative; + padding: 1px; + margin: 0; + + li { + font-size: 13px; + line-height: 22px; + margin: 0; + position: relative; + word-wrap: break-word; + + label { + display: inline; + } + + input[type="checkbox"], + input[type="radio"] { + margin: -1px 4px 0 0; + vertical-align: middle; + } + + input[type="text"] { + width: auto; + vertical-align: middle; + margin: 2px 0; + } + + + /* attachment sidebar fix*/ + span { + float: none; + } + + i { + vertical-align: middle; + } + } + + + /* hl */ + &.acf-hl { + + li { + margin-right: 20px; + clear: none; + } + } + + + /* rtl */ + html[dir="rtl"] & { + + input[type="checkbox"], + input[type="radio"] { + margin-left: 4px; + margin-right: 0; + } + } + + + + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Button Group +* +*---------------------------------------------------------------------------------------------*/ + +.acf-button-group { + display: inline-block; + + label { + display: inline-block; + border: #ccc solid 1px; + position: relative; + z-index: 1; + padding: 5px 10px; + background: #fff; + + &:hover { + border-color: darken(#ccc, 20%); + z-index: 2; + } + + &.selected { + border-color: darken(#309cf3, 1%); + background: #309cf3; + color: #fff; + z-index: 2; + + &:hover { + background: lighten(#309cf3, 5%); + } + } + } + + input { + display: none !important; + } + + + /* default (horizontal) */ + & { + padding-left: 1px; + display: inline-flex; + flex-direction: row; + flex-wrap: nowrap; + + label { + margin: 0 0 0 -1px; + flex: 1; + text-align: center; + white-space: nowrap; + + // corners + &:first-child { + border-radius: 3px 0 0 3px; + html[dir="rtl"] & { border-radius: 0 3px 3px 0; } + } + &:last-child { + border-radius: 0 3px 3px 0; + html[dir="rtl"] & { border-radius: 3px 0 0 3px; } + } + &:only-child { border-radius: 3px; } + } + } + + + /* vertical */ + &.-vertical { + padding-left: 0; + padding-top: 1px; + flex-direction: column; + + label { + margin: -1px 0 0 0; + + // corners + &:first-child { border-radius: 3px 3px 0 0; } + &:last-child { border-radius: 0 0 3px 3px; } + &:only-child { border-radius: 3px; } + + } + } + + +} + + + +/*--------------------------------------------------------------------------------------------- +* +* Checkbox +* +*---------------------------------------------------------------------------------------------*/ + +.acf-checkbox-list { + + .button { + margin: 10px 0 0; + } + +} + + + +/*--------------------------------------------------------------------------------------------- +* +* True / False +* +*---------------------------------------------------------------------------------------------*/ + +.acf-switch { + display: inline-block; + border-radius: 5px; + cursor: pointer; + position: relative; + background: #f8f8f8; + height: 30px; + vertical-align: middle; + //box-shadow: inset 0 0 1px rgba(0,0,0,0.2); + border: #ccc solid 1px; + + -webkit-transition: background 0.25s ease; + -moz-transition: background 0.25s ease; + -o-transition: background 0.25s ease; + transition: background 0.25s ease; + + span { + display: inline-block; + float: left; + text-align: center; + + font-size: 13px; + line-height: 22px; + + padding: 4px 10px; + min-width: 15px; + + i { + vertical-align: middle; + } + } + + .acf-switch-on { + color: #fff; + text-shadow: darken($acf_blue, 10%) 0 1px 0; + } + + .acf-switch-off { + + } + + .acf-switch-slider { + position: absolute; + top: 2px; + left: 2px; + bottom: 2px; + right: 50%; + z-index: 1; + background: #fff; + border-radius: 3px; + border: #ccc solid 1px; + + -webkit-transition: all 0.25s ease; + -moz-transition: all 0.25s ease; + -o-transition: all 0.25s ease; + transition: all 0.25s ease; + + transition-property: left, right; + } + + + /* hover */ + &:hover { + .acf-switch-slider{ + border-color: darken(#ccc, 10%); + } + } + + + /* active */ + &.-on { + background: #309cf3; + border-color: darken(#309cf3, 1%); + + .acf-switch-slider { + left: 50%; + right: 2px; + border-color: darken(#309cf3, 10%); + } + + /* hover */ + &:hover { + background: lighten(#309cf3, 5%); + } + } + + + /* focus */ + &.-focus { + + .acf-switch-slider { + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba(30, 140, 190, 0.5); + } + + + &.-on { + + .acf-switch-slider { + border-color: darken($acf_blue, 20%); + box-shadow: 0 0 2px darken($acf_blue, 10%); + } + } + + } + + + /* message */ + + span { + margin-left: 6px; + } + +} + + +/* checkbox */ +.acf-switch-input { + opacity: 0; + position: absolute; + margin: 0; +} + + +/* in media modal */ +.compat-item .acf-true-false { + + .message { + float: none; + padding: 0; + vertical-align: middle; + } + +} + + +/*-------------------------------------------------------------------------- +* +* Google Map +* +*-------------------------------------------------------------------------*/ + +.acf-google-map { + position: relative; + border: #DFDFDF solid 1px; + background: #fff; + + .title { + position: relative; + border-bottom: #DFDFDF solid 1px; + + .search { + margin: 0; + font-size: 14px; + line-height: 30px; + height: 40px; + padding: 5px 10px; + border: 0 none; + box-shadow: none; + border-radius: 0; + font-family: inherit; + cursor: text; + } + + .acf-actions { + + } + + .acf-loading { + position: absolute; + top: 10px; + right: 11px; + display: none; + } + + &:hover { + .acf-actions { display: block; } + } + } + + .canvas { + height: 400px; + } + + + /* default is focused */ + .title { + .acf-icon.-location { + display: inline-block; + } + .acf-icon.-cancel { + display: none; + } + .acf-icon.-search { + display: none; + } + } + + + /* -search */ + &.-search .title { + .acf-icon.-location { + display: none; + } + .acf-icon.-cancel { + display: inline-block; + } + .acf-icon.-search { + display: inline-block; + } + } + + + + /* -value */ + &.-value .title { + .search { + font-weight: bold; + } + .acf-icon.-location { + display: none; + } + .acf-icon.-cancel { + display: inline-block; + } + .acf-icon.-search { + display: none; + } + } + + + /* -loading */ + &.-loading .title { + a { + display: none !important; + } + i { + display: inline-block; + } + } + +} + + + +/* autocomplete */ +.pac-container { + border-width: 1px 0; + box-shadow: none; +} + +.pac-container:after { + display: none; +} + +.pac-container .pac-item:first-child { + border-top: 0 none; +} +.pac-container .pac-item { + padding: 5px 10px; + cursor: pointer; +} + + +html[dir="rtl"] .pac-container .pac-item { + text-align: right; +} + + +/*-------------------------------------------------------------------------- +* +* Relationship +* +*-------------------------------------------------------------------------*/ + +.acf-relationship { + background: #fff; + + /* filters (top) */ + .filters { + @include clearfix(); + border: #DFDFDF solid 1px; + background: #fff; + + + .filter { + margin: 0; + padding: 0; + float: left; + width: 100%; + + + /* inner padding */ + span { + display: block; + padding: 7px 7px 7px 0; + } + + &:first-child span { + padding-left: 7px; + } + + + // inputs + input, select { + height: 28px; + line-height: 28px; + padding: 2px; + width: 100%; + margin: 0; + float: none; /* potential fix for media popup? */ + + &:focus, + &:active { + outline: none; + box-shadow: none; + } + } + + input { + border-color: transparent; + box-shadow: none; + } + + } + + + /* widths */ + &.-f2 { + .filter { width: 50%; } + } + &.-f3 { + .filter { width: 25%; } + .filter.-search { width: 50%; } + } + + } + + + /* list */ + .list { + margin: 0; + padding: 5px; + height: 160px; + overflow: auto; + + .acf-rel-label, + .acf-rel-item, + p { + padding: 5px 7px; + margin: 0; + display: block; + position: relative; + min-height: 18px; + } + + .acf-rel-label { + font-weight: bold; + } + + .acf-rel-item { + cursor: pointer; + + b { + text-decoration: underline; + font-weight: normal; + } + + .thumbnail { + background: darken(#f9f9f9, 10%); + width: 22px; + height: 22px; + float: left; + margin: -2px 5px 0 0; + + img { + max-width: 22px; + max-height: 22px; + margin: 0 auto; + display: block; + } + + &.-icon { + background: #fff; + + img { + max-height: 20px; + margin-top: 1px; + } + } + } + + /* hover */ + &:hover { + background: #3875D7; + color: #fff; + + .thumbnail { + background: lighten(#3875D7, 25%); + + &.-icon { + background: #fff; + } + } + } + + + /* disabled */ + &.disabled { + opacity: 0.5; + + &:hover { + background: transparent; + color: #333; + cursor: default; + + .thumbnail { + background: darken(#f9f9f9, 10%); + + &.-icon { + background: #fff; + } + } + } + } + } + + ul { + padding-bottom: 5px; + + .acf-rel-label, + .acf-rel-item, + p { + padding-left: 20px; + } + + } + + } + + + /* selection (bottom) */ + .selection { + @include clearfix(); + border: #DFDFDF solid 1px; + position: relative; + margin-top: -1px; + + .values, + .choices { + width: 50%; + background: #fff; + float: left + } + + /* choices */ + .choices { + background: #F9F9F9; + + .list { + border-right: #DFDFDF solid 1px; + } + + } + + + /* values */ + .values { + + .acf-icon { + position: absolute; + top: 4px; + right: 7px; + display: none; + + /* rtl */ + html[dir="rtl"] & { + right: auto; + left: 7px; + } + + } + + .acf-rel-item:hover .acf-icon { + display: block; + } + + .acf-rel-item { + cursor: move; + + b { + text-decoration: none; + } + + } + + } + + } + + +} + +/* menu item fix */ +.menu-item { + + .acf-relationship { + + ul { + width: auto; + } + + li { + display: block; + } + } +} + + +/*-------------------------------------------------------------------------- +* +* WYSIWYG +* +*-------------------------------------------------------------------------*/ + +.acf-editor-wrap { + + // Delay. + &.delay { + + .acf-editor-toolbar { + content: ""; + display: block; + background: #f5f5f5; + border-bottom: #dddddd solid 1px; + color: #555d66; + padding: 10px; + } + + .wp-editor-area { + padding: 10px; + border: none; + color: inherit !important; // Fixes white text bug. + } + } + + iframe{ + min-height: 200px; + } + + .wp-editor-container{ + border: 1px solid #E5E5E5; + box-shadow: none !important; + } + + .wp-editor-tabs { + box-sizing: content-box; + } +} + +// Full Screen Mode. +#mce_fullscreen_container { + z-index: 900000 !important; +} + +/*--------------------------------------------------------------------------------------------- +* +* Tab +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field-tab { + display: none !important; +} + +// class to hide fields +.hidden-by-tab { + display: none !important; +} + +// ensure floating fields do not disturb tab wrap +.acf-tab-wrap { + clear: both; + z-index: 1; +} + +// tab group +.acf-tab-group { + border-bottom: #ccc solid 1px; + padding: 10px 10px 0; + + li { + margin: 0 0.5em 0 0; + + a { + padding: 5px 10px; + display: block; + + color: #555; + font-size: 14px; + font-weight: 600; + line-height: 24px; + + border: #ccc solid 1px; + border-bottom: 0 none; + text-decoration: none; + background: #e5e5e5; + transition: none; + + &:hover { + background: #FFF; + } + + &:focus { + outline: none; + box-shadow: none; + } + + &:empty { + display: none; + } + + } + + + // rtl + html[dir="rtl"] & { + margin: 0 0 0 0.5em; + } + + + // active + &.active a { + background: #F1F1F1; + color: #000; + padding-bottom: 6px; + margin-bottom: -1px; + position: relative; + z-index: 1; + } + } +} + + +// inside acf-fields +.acf-fields > .acf-tab-wrap { + background: #F9F9F9; + + // group + .acf-tab-group { + position: relative; + z-index: 1; + margin-bottom: -1px; + border-top: #DFDFDF solid 1px; + border-bottom: #DFDFDF solid 1px; + + li a { + background: #f1f1f1; + + &:hover { + background: #FFF; + } + } + + li.active a { + background: #FFFFFF; + } + } + + // first child + // fixes issue causing double border-top due to WP postbox .handlediv + &:first-child .acf-tab-group { + border-top: none; + } + +} + + +// inside acf-fields.-left +.acf-fields.-left > .acf-tab-wrap { + + // group + .acf-tab-group { + padding-left: 20%; + + /* mobile */ + @media screen and (max-width: $sm) { + padding-left: 10px; + } + + + /* rtl */ + html[dir="rtl"] & { + padding-left: 0; + padding-right: 20%; + + /* mobile */ + @media screen and (max-width: 850px) { + padding-right: 10px; + } + } + } +} + + +// left +.acf-tab-wrap.-left { + + // group + .acf-tab-group { + position: absolute; + left: 0; + width: 20%; + border: 0 none; + padding: 0 !important; /* important overrides 'left aligned labels' */ + margin: 1px 0 0; + + // li + li { + float: none; + margin: -1px 0 0; + + a { + border: 1px solid #ededed; + font-size: 13px; + line-height: 18px; + color: #0073aa; + padding: 10px; + margin: 0; + font-weight: normal; + border-width: 1px 0; + border-radius: 0; + background: transparent; + + &:hover { + color: #00a0d2; + } + } + + &.active a { + border-color:#DFDFDF; + color: #000; + margin-right: -1px; + background: #fff; + } + } + + // rtl + html[dir="rtl"] & { + left: auto; + right: 0; + + li.active a { + margin-right: 0; + margin-left: -1px; + } + } + } + + // space before field + .acf-field + &:before { + content: ""; + display: block; + position: relative; + z-index: 1; + height: 10px; + border-top: #DFDFDF solid 1px; + border-bottom: #DFDFDF solid 1px; + margin-bottom: -1px; + } + + + // first child has negative margin issues + &:first-child { + + .acf-tab-group { + + li:first-child a { + border-top: none; + } + } + } +} + + +/* sidebar */ +.acf-fields.-sidebar { + padding: 0 0 0 20% !important; + position: relative; + + /* before */ + &:before { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + width: 20%; + bottom: 0; + border-right: #DFDFDF solid 1px; + background: #F9F9F9; + z-index: 1; + } + + + /* rtl */ + html[dir="rtl"] & { + padding: 0 20% 0 0 !important; + + &:before { + border-left: #DFDFDF solid 1px; + border-right-width: 0; + left: auto; + right: 0; + } + } + + + // left + &.-left { + padding: 0 0 0 180px !important; + + /* rtl */ + html[dir="rtl"] & { + padding: 0 180px 0 0 !important; + } + + &:before { + background: #F1F1F1; + border-color: #dfdfdf; + width: 180px; + } + + > .acf-tab-wrap.-left .acf-tab-group { + width: 180px; + + li a { + border-color: #e4e4e4; + } + + li.active a { + background: #F9F9F9; + } + + } + } + + // fix double border + > .acf-field-tab + .acf-field { + border-top: none; + } +} + + +// clear +.acf-fields.-clear > .acf-tab-wrap { + background: transparent; + + // group + .acf-tab-group { + margin-top: 0; + border-top: none; + padding-left: 0; + padding-right: 0; + + li a { + background: #e5e5e5; + + &:hover { + background: #fff; + } + } + + li.active a { + background: #f1f1f1; + } + } +} + + +/* seamless */ +.acf-postbox.seamless { + + // sidebar + > .acf-fields.-sidebar { + margin-left: 0 !important; + + &:before { + background: transparent; + } + } + + // default + > .acf-fields > .acf-tab-wrap { + background: transparent; + margin-bottom: 10px; + padding-left: $fx; + padding-right: $fx; + + .acf-tab-group { + border-top: 0 none; + + li a { + background: #e5e5e5; + + &:hover { + background: #fff; + } + } + + li.active a { + background: #f1f1f1; + } + } + } + + // left tabs + > .acf-fields > .acf-tab-wrap.-left { + + &:before { + border-top: none; + height: auto; + } + + .acf-tab-group { + margin-bottom: 0; + + li a { + border-width: 1px 0 1px 1px !important; + border-color: #cccccc; + background: #e5e5e5; + } + + li.active a { + background: #f1f1f1; + } + } + + } +} + + +// menu +.menu-edit, +.widget { + .acf-fields.-clear > .acf-tab-wrap .acf-tab-group li { + a { background: #f1f1f1; } + a:hover, &.active a { background: #fff; } + } +} + +.compat-item .acf-tab-wrap td { + display: block; +} + + + +/* within gallery sidebar */ +.acf-gallery-side .acf-tab-wrap { + border-top: 0 none !important; +} + +.acf-gallery-side .acf-tab-wrap .acf-tab-group { + margin: 10px 0 !important; + padding: 0 !important; +} + +.acf-gallery-side .acf-tab-group li.active a { + background: #F9F9F9 !important; +} + + + +/* withing widget */ +.widget .acf-tab-group { + border-bottom-color: #e8e8e8; +} + +.widget .acf-tab-group li a { + background: #F1F1F1; +} + +.widget .acf-tab-group li.active a { + background: #fff; +} + + +/* media popup (edit image) */ +.media-modal.acf-expanded .compat-attachment-fields > tbody > tr.acf-tab-wrap .acf-tab-group { + padding-left: 23%; + border-bottom-color: #DDDDDD; +} + + +/* table */ + + +.form-table > tbody > tr.acf-tab-wrap .acf-tab-group { + padding: 0 5px 0 210px; +} + +/* rtl */ + html[dir="rtl"] .form-table > tbody > tr.acf-tab-wrap .acf-tab-group { + padding: 0 210px 0 5px; + } + + +/*-------------------------------------------------------------------------------------------- +* +* oembed +* +*--------------------------------------------------------------------------------------------*/ + +.acf-oembed { + position: relative; + border: #DFDFDF solid 1px; + background: #fff; + + .title { + position: relative; + border-bottom: #DFDFDF solid 1px; + padding: 5px 10px; + + .input-search { + margin: 0; + font-size: 14px; + line-height: 30px; + height: 30px; + padding: 0; + border: 0 none; + box-shadow: none; + border-radius: 0; + font-family: inherit; + cursor: text; + } + + .acf-actions { + padding: 6px; + } + } + + .canvas { + position: relative; + min-height: 250px; + background: #F9F9F9; + + .canvas-media { + position: relative; + z-index: 1; + } + + iframe { + display: block; + margin: 0; + padding: 0; + width: 100%; + } + + .acf-icon.-picture { + @include centered(); + z-index: 0; + + height: 42px; + width: 42px; + font-size: 42px; + color: #999; + } + + .acf-loading-overlay { + background: rgba(255,255,255,0.9); + } + + .canvas-error { + position: absolute; + top: 50%; + left: 0%; + right: 0%; + margin: -9px 0 0 0; + text-align: center; + display: none; + + p { + padding: 8px; + margin: 0; + display: inline; + } + } + } + + // has value + &.has-value { + .canvas { + min-height: 50px; + } + + .input-search { + font-weight: bold; + } + + .title:hover .acf-actions { + display: block; + } + } + +} + +/*-------------------------------------------------------------------------------------------- +* +* Image +* +*--------------------------------------------------------------------------------------------*/ + +.acf-image-uploader { + @include clearfix(); + position: relative; + + + p { + margin: 0; + } + + + /* image wrap*/ + .image-wrap { + position: relative; + float: left; + + img { + max-width: 100%; + width: auto; + height: auto; + display: block; + min-width: 30px; + min-height: 30px; + background: #f1f1f1; + margin: 0; + padding: 0; + + + /* svg */ + &[src$=".svg"] { + min-height: 100px; + min-width: 100px; + } + } + + + /* hover */ + &:hover .acf-actions { + display: block; + } + } + + + /* input */ + input.button { + width: auto; + } + + + /* rtl */ + html[dir="rtl"] & { + + .image-wrap { + float: right; + } + + } + +} + + +/*-------------------------------------------------------------------------------------------- +* +* File +* +*--------------------------------------------------------------------------------------------*/ + +.acf-file-uploader { + position: relative; + + p { + margin: 0; + } + + .file-wrap { + border: #DFDFDF solid 1px; + min-height: 84px; + position: relative; + background: #fff; + } + + .file-icon { + position: absolute; + top: 0; + left: 0; + bottom: 0; + padding: 10px; + background: #F1F1F1; + border-right: #E5E5E5 solid 1px; + + img { + display: block; + padding: 0; + margin: 0; + max-width: 48px; + } + } + + .file-info { + padding: 10px; + margin-left: 69px; + + p { + margin: 0 0 2px; + font-size: 13px; + line-height: 1.4em; + word-break: break-all; + } + + a { + text-decoration: none; + } + } + + /* hover */ + &:hover .acf-actions { + display: block; + } + + + /* rtl */ + html[dir="rtl"] & { + + .file-icon { + left: auto; + right: 0; + border-left: #E5E5E5 solid 1px; + border-right: none; + } + + .file-info { + margin-right: 69px; + margin-left: 0; + } + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Date Picker +* +*---------------------------------------------------------------------------------------------*/ + +.acf-ui-datepicker .ui-datepicker { + z-index: 900000 !important; + + .ui-widget-header a { + cursor: pointer; + transition: none; + } +} + + +/* fix highlight state overriding hover / active */ +.acf-ui-datepicker .ui-state-highlight.ui-state-hover { + border: 1px solid #98b7e8 !important; + background: #98b7e8 !important; + font-weight: normal !important; + color: #ffffff !important; +} + +.acf-ui-datepicker .ui-state-highlight.ui-state-active { + border: 1px solid #3875d7 !important; + background: #3875d7 !important; + font-weight: normal !important; + color: #ffffff !important; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Separator field +* +*---------------------------------------------------------------------------------------------*/ + +.acf-field-separator { + + .acf-label { + margin-bottom: 0; + + label { + font-weight: normal; + } + } + + .acf-input { + display: none; + } + + + /* fields */ + .acf-fields > & { + background: #f9f9f9; + border-bottom: 1px solid #dfdfdf; + border-top: 1px solid #dfdfdf; + margin-bottom: -1px; + z-index: 2; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Taxonomy +* +*---------------------------------------------------------------------------------------------*/ + +.acf-taxonomy-field { + position: relative; + + .categorychecklist-holder { + border: #DFDFDF solid 1px; + border-radius: 3px; + max-height: 200px; + overflow: auto; + } + + .acf-checkbox-list { + margin: 0; + padding: 10px; + + ul.children { + padding-left: 18px; + } + } + + + /* hover */ + &:hover { + .acf-actions { + display: block; + } + } + + + /* select */ + &[data-ftype="select"] { + .acf-actions { + padding: 0; + margin: -9px; + } + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Range +* +*---------------------------------------------------------------------------------------------*/ + +.acf-range-wrap { + + .acf-append, + .acf-prepend { + display: inline-block; + vertical-align: middle; + line-height: 28px; + margin: 0 7px 0 0; + } + + .acf-append { + margin: 0 0 0 7px; + } + + input[type="range"] { + display: inline-block; + padding: 0; + margin: 0; + vertical-align: middle; + height: 28px; + + &:focus { + outline: none; + } + + } + + input[type="number"] { + display: inline-block; + min-width: 3em; + margin-left: 10px; + vertical-align: middle; + } + + + /* rtl */ + html[dir="rtl"] & { + + input[type="number"] { + margin-right: 10px; + margin-left: 0; + } + + .acf-append { margin: 0 7px 0 0; } + .acf-prepend { margin: 0 0 0 7px; } + + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* acf-accordion +* +*---------------------------------------------------------------------------------------------*/ + +.acf-accordion { + margin: 0; + padding: 0; + background: #fff; + + /* title */ + .acf-accordion-title { + margin: 0; + padding: 12px; + font-weight: bold; + cursor: pointer; + font-size: inherit; + font-size: 13px; + line-height: 1.4em; + + label { + margin: 0; + padding: 0; + font-size: 13px; + line-height: 1.4em; + } + + p { + font-weight: normal; + } + + .acf-accordion-icon { + float: right; + } + } + + .acf-accordion-content { + margin: 0; + padding: 0 12px 12px; + display: none; + } + + + /* open */ + &.-open { + + > .acf-accordion-content { + display: block; + } + + } +} + + +/* field specific */ +.acf-field.acf-accordion { + padding: 0 !important; + border-color: #dfdfdf; + + .acf-accordion-title { + padding: 12px; + width: auto !important; + float: none !important; + width: auto !important; + } + + .acf-accordion-content { + padding: 0; + float: none !important; + width: auto !important; + + > .acf-fields { + border-top: #EEEEEE solid 1px; + + &.-clear { + padding: 0 $fx $fy; + } + } + } +} + + +/* field specific (left) */ +.acf-fields.-left > .acf-field.acf-accordion { + padding: 0 !important; + + &:before { + display: none; + } + + .acf-accordion-title { + width: auto; + margin: 0 !important; + padding: 12px; + float: none !important; + } + + .acf-accordion-content { + padding: 0 !important; + } +} + + +/* field specific (clear) */ +.acf-fields.-clear > .acf-field.acf-accordion { + border: #cccccc solid 1px; + background: transparent; + + + .acf-field.acf-accordion { + margin-top: -16px; + } +} + + +/* table */ +tr.acf-field.acf-accordion { + background: transparent; + + > .acf-input { + padding: 0 !important; + border: #cccccc solid 1px; + } + + .acf-accordion-content { + padding: 0 12px 12px; + } +} + + +/* #addtag */ +#addtag div.acf-field.error { + border: 0 none; + padding: 8px 0; +} + + +#addtag > .acf-field.acf-accordion { + padding-right: 0; + margin-right: 5%; + + + p.submit { + margin-top: 0; + } +} + + + +/* border */ +tr.acf-accordion { + margin: 15px 0 !important; + + + tr.acf-accordion { + margin-top: -16px !important; + } +} + + +/* seamless */ +.acf-postbox.seamless > .acf-fields > .acf-accordion { + margin-left: $field_padding_x !important; + margin-right: $field_padding_x !important; +} + + +/* rtl */ +html[dir="rtl"] .acf-accordion { + +} + + +/* menu item */ +/* +.menu-item-settings > .field-acf > .acf-field.acf-accordion { + border: #dfdfdf solid 1px; + margin: 10px -13px 10px -11px; + + + .acf-field.acf-accordion { + margin-top: -11px; + } +} +*/ + + +/* widget */ +.widget .widget-content > .acf-field.acf-accordion { + border: #dfdfdf solid 1px; + margin-bottom: 10px; + + .acf-accordion-title { + margin-bottom: 0; + } + + + .acf-field.acf-accordion { + margin-top: -11px; + } +} + + +// seamless +.acf-postbox.seamless > .acf-fields > .acf-field.acf-accordion { + border: #e5e5e5 solid 1px; + + // siblings + + .acf-field.acf-accordion { + margin-top: -1px; + } +} + + +// media modal +.media-modal .compat-attachment-fields .acf-field.acf-accordion { + + // siblings + + .acf-field.acf-accordion { + margin-top: -1px; + } + + // input + > .acf-input { + width: 100%; + } + + // table + .compat-attachment-fields > tbody > tr > td { + padding-bottom: 5px; + } +} \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_forms.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_forms.scss new file mode 100644 index 0000000..9ad2a0e --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_forms.scss @@ -0,0 +1,306 @@ +/*-------------------------------------------------------------------------------------------- +* +* User +* +*--------------------------------------------------------------------------------------------*/ + +.form-table > tbody { + + /* field */ + > .acf-field { + + /* label */ + > .acf-label { + padding: 20px 10px 20px 0; + width: 210px; + + /* rtl */ + html[dir="rtl"] & { + padding: 20px 0 20px 10px; + } + + label { + font-size: 14px; + color: #23282d; + } + + } + + + /* input */ + > .acf-input { + padding: 15px 10px; + + /* rtl */ + html[dir="rtl"] & { + padding: 15px 10px 15px 5%; + } + } + + } + + + /* tab wrap */ + > .acf-tab-wrap td { + padding: 15px 5% 15px 0; + + /* rtl */ + html[dir="rtl"] & { + padding: 15px 0 15px 5%; + } + + } + + + /* misc */ + .form-table th.acf-th { + width: auto; + } + +} + +#your-profile, +#createuser { + + /* override for user css */ + .acf-field input[type="text"], + .acf-field input[type="password"], + .acf-field input[type="number"], + .acf-field input[type="search"], + .acf-field input[type="email"], + .acf-field input[type="url"], + .acf-field select { + max-width: 25em; + } + + .acf-field textarea { + max-width: 500px; + } + + + /* allow sub fields to display correctly */ + .acf-field .acf-field input[type="text"], + .acf-field .acf-field input[type="password"], + .acf-field .acf-field input[type="number"], + .acf-field .acf-field input[type="search"], + .acf-field .acf-field input[type="email"], + .acf-field .acf-field input[type="url"], + .acf-field .acf-field textarea, + .acf-field .acf-field select { + max-width: none; + } +} + +#registerform { + + h2 { + margin: 1em 0; + } + + .acf-field { + margin-top: 0; + + .acf-label { + margin-bottom: 0; + + label { + font-weight: normal; + line-height: 1.5; + } + } + +/* + .acf-input { + input { + font-size: 24px; + padding: 5px; + height: auto; + } + } +*/ + } + + p.submit { + text-align: right; + } + +} + +/*-------------------------------------------------------------------------------------------- +* +* Term +* +*--------------------------------------------------------------------------------------------*/ + +// add term +#acf-term-fields { + padding-right: 5%; + + > .acf-field { + + > .acf-label { + margin: 0; + + label { + font-size: 12px; + font-weight: normal; + } + } + } + +} + +p.submit .spinner, +p.submit .acf-spinner { + vertical-align: top; + float: none; + margin: 4px 4px 0; +} + + +// edit term +#edittag .acf-fields.-left { + + > .acf-field { + padding-left: 220px; + + &:before { + width: 209px; + } + + > .acf-label { + width: 220px; + margin-left: -220px; + padding: 0 10px; + } + + > .acf-input { + padding: 0; + } + } +} + +#edittag > .acf-fields.-left { + width: 96%; + + > .acf-field { + + > .acf-label { + padding-left: 0; + } + } +} + + +/*-------------------------------------------------------------------------------------------- +* +* Comment +* +*--------------------------------------------------------------------------------------------*/ + +.editcomment td:first-child { + white-space: nowrap; + width: 131px; +} + + +/*-------------------------------------------------------------------------------------------- +* +* Widget +* +*--------------------------------------------------------------------------------------------*/ + +#widgets-right .widget .acf-field .description { + padding-left: 0; + padding-right: 0; +} + +.acf-widget-fields { + + > .acf-field { + + .acf-label { + margin-bottom: 5px; + + label { + font-weight: normal; + margin: 0; + } + } + } +} + +/*-------------------------------------------------------------------------------------------- +* +* Nav Menu +* +*--------------------------------------------------------------------------------------------*/ + +.acf-menu-settings { + border-top: 1px solid #eee; + margin-top: 2em; + + // seamless + &.-seamless { + border-top: none; + margin-top: 15px; + + > h2 { display: none; } + } + + // Fix relationship conflict. + .list li { + display: block; + margin-bottom: 0; + } +} + +.acf-menu-item-fields { + margin-right: 10px; + float: left; +} + +/*--------------------------------------------------------------------------------------------- +* +* Attachment Form (single) +* +*---------------------------------------------------------------------------------------------*/ + +#post .compat-attachment-fields { + + .compat-field-acf-form-data { + display: none; + } + + &, + > tbody, + > tbody > tr, + > tbody > tr > th, + > tbody > tr > td { + display: block; + } + + > tbody > .acf-field { + margin: 15px 0; + + > .acf-label { + margin: 0; + + label { + margin: 0; + padding: 0; + + p { + margin: 0 0 3px !important; + } + } + } + + > .acf-input { + margin: 0; + } + } +} + + + diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_global.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_global.scss new file mode 100644 index 0000000..0cddab3 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_global.scss @@ -0,0 +1,1812 @@ +/*-------------------------------------------------------------------------------------------- +* +* Global +* +*--------------------------------------------------------------------------------------------*/ + +/* Horizontal List */ +.acf-hl { padding: 0; margin: 0; list-style: none; display: block; position: relative; } +.acf-hl > li { float: left; display: block; margin: 0; padding: 0; } +.acf-hl > li.acf-fr { float: right; } + + +/* Horizontal List: Clearfix */ +.acf-hl:before, .acf-hl:after, +.acf-bl:before, .acf-bl:after, +.acf-cf:before, .acf-cf:after { + content: ""; + display: block; + line-height: 0; +} +.acf-hl:after, +.acf-bl:after, +.acf-cf:after { + clear: both; +} + + +/* Block List */ +.acf-bl { padding: 0; margin: 0; list-style: none; display: block; position: relative; } +.acf-bl > li { display: block; margin: 0; padding: 0; float: none; } + + +/* Visibility */ +.acf-hidden { + display: none !important; +} +.acf-empty { + display: table-cell !important; + * { display: none !important; } +} + +/* Float */ +.acf-fl { float: left; } +.acf-fr { float: right; } +.acf-fn { float: none; } + + +/* Align */ +.acf-al { text-align: left; } +.acf-ar { text-align: right; } +.acf-ac { text-align: center; } + + +/* loading */ +.acf-loading, +.acf-spinner { + display: inline-block; + height: 20px; + width: 20px; + vertical-align: text-top; + background: transparent url(../images/spinner.gif) no-repeat 50% 50%; +} + + +/* spinner */ +.acf-spinner { + display: none; +} + +.acf-spinner.is-active { + display: inline-block; +} + + +/* WP < 4.2 */ +.spinner.is-active { + display: inline-block; +} + + +/* required */ +.acf-required { + color: #f00; +} + + +/* show on hover */ +.acf-soh .acf-soh-target { + -webkit-transition: opacity 0.25s 0s ease-in-out, visibility 0s linear 0.25s; + -moz-transition: opacity 0.25s 0s ease-in-out, visibility 0s linear 0.25s; + -o-transition: opacity 0.25s 0s ease-in-out, visibility 0s linear 0.25s; + transition: opacity 0.25s 0s ease-in-out, visibility 0s linear 0.25s; + + visibility: hidden; + opacity: 0; +} + +.acf-soh:hover .acf-soh-target { + -webkit-transition-delay:0s; + -moz-transition-delay:0s; + -o-transition-delay:0s; + transition-delay:0s; + + visibility: visible; + opacity: 1; +} + + +/* show if value */ +.show-if-value { display: none; } +.hide-if-value { display: block; } + +.has-value .show-if-value { display: block; } +.has-value .hide-if-value { display: none; } + + +/* select2 WP animation fix */ +.select2-search-choice-close { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + + +/*--------------------------------------------------------------------------------------------- +* +* tooltip +* +*---------------------------------------------------------------------------------------------*/ + +/* tooltip */ +.acf-tooltip { + background: #2F353E; + border-radius: 5px; + color: #fff; + padding: 5px 10px; + position: absolute; + font-size: 12px; + line-height: 1.4em; + z-index: 900000; + + + /* tip */ + &:before { + border: solid; + border-color: transparent; + border-width: 6px; + content: ""; + position: absolute; + } + + + /* positions */ + &.top { + margin-top: -8px; + + &:before { + top: 100%; + left: 50%; + margin-left: -6px; + border-top-color: #2F353E; + border-bottom-width: 0; + } + } + + &.right { + margin-left: 8px; + + &:before { + top: 50%; + margin-top: -6px; + right: 100%; + border-right-color: #2F353E; + border-left-width: 0; + } + } + + &.bottom { + margin-top: 8px; + + &:before { + bottom: 100%; + left: 50%; + margin-left: -6px; + border-bottom-color: #2F353E; + border-top-width: 0; + } + } + + &.left { + margin-left: -8px; + + &:before { + top: 50%; + margin-top: -6px; + left: 100%; + border-left-color: #2F353E; + border-right-width: 0; + } + } + + .acf-overlay { + z-index: -1; + } + +} + + +/* confirm */ +.acf-tooltip.-confirm { + z-index: 900001; // +1 higher than .acf-tooltip + + a { + text-decoration: none; + color: #9ea3a8; + + &:hover { + text-decoration: underline; + } + + &[data-event="confirm"] { + color: #F55E4F; + } + } +} + +.acf-overlay { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + cursor: default; +} + +.acf-tooltip-target { + position: relative; + z-index: 900002; // +1 higher than .acf-tooltip +} + + +/*--------------------------------------------------------------------------------------------- +* +* loading +* +*---------------------------------------------------------------------------------------------*/ +.acf-loading-overlay { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + cursor: default; + z-index: 99; + background: rgba(249, 249, 249, 0.5); + + i { + @include centered(); + } +} + + +/*--------------------------------------------------------------------------------------------- +* +* callout +* +*---------------------------------------------------------------------------------------------*/ + +.acf-callout { + margin: 20px 0; + padding: 20px; + + background-color: #FCF8F2; + border-left: 3px solid #F0AD4E; +} + +.acf-callout h4 { + color: #F0AD4E; + margin: 0 !important; +} + +.acf-callout p { + margin-bottom: 0; +} + +.acf-callout.danger { + border-color: #D9534F; + background-color: #FDF7F7; +} + +.acf-callout.danger h4 { + color: #D9534F; +} + +.acf-callout.success { + background-color: #f4faf6; + border-color: #bcf1c5; +} + +.acf-callout.success h4 { + color: #3aad60; +} + + +/*-------------------------------------------------------------------------------------------- +* +* acf-icon +* +*--------------------------------------------------------------------------------------------*/ + +@font-face { + font-family: 'acf'; + src: url('../font/acf.eot?57601716'); + src: url('../font/acf.eot?57601716#iefix') format('embedded-opentype'), + url('../font/acf.woff2?57601716') format('woff2'), + url('../font/acf.woff?57601716') format('woff'), + url('../font/acf.ttf?57601716') format('truetype'), + url('../font/acf.svg?57601716#acf') format('svg'); + font-weight: normal; + font-style: normal; +} + +.acf-icon:before { + font-family: "acf"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + // margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Font smoothing. That was taken from TWBS */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /* more consistent vertical align */ + position: relative; +} + +.acf-icon.-plus:before { content: '\e800'; } /* 'î €' */ +.acf-icon.-minus:before { content: '\e801'; } /* 'î ' */ +.acf-icon.-cancel:before { content: '\e802'; } /* 'î ‚' */ +.acf-icon.-pencil:before { content: '\e803'; top: -1px; } /* 'î ƒ' */ +.acf-icon.-location:before { content: '\e804'; } /* 'î „' */ +.acf-icon.-down:before { content: '\e805'; top: 1px; } /* 'î …' */ +.acf-icon.-left:before { content: '\e806'; left: -1px; } /* 'î †' */ +.acf-icon.-right:before { content: '\e807'; left: 1px; } /* 'î ‡' */ +.acf-icon.-up:before { content: '\e808'; top: -1px; } /* 'î ˆ' */ +.acf-icon.-sync:before { content: '\e809'; } /* 'î ‰' */ +.acf-icon.-globe:before { content: '\e80a'; } /* 'î Š' */ +.acf-icon.-picture:before { content: '\e80b'; } /* 'î ‹' */ +.acf-icon.-check:before { content: '\e80c'; } /* 'î Œ' */ +.acf-icon.-dot-3:before { content: '\e80d'; } /* 'î ' */ +.acf-icon.-arrow-combo:before { content: '\e80e'; } /* 'î Ž' */ +.acf-icon.-arrow-up:before { content: '\e810'; top: -1px; } /* 'î ' */ +.acf-icon.-arrow-down:before { content: '\e80f'; top: 1px; } /* 'î ' */ +.acf-icon.-search:before { content: '\e811'; } /* 'î ‘' */ +.acf-icon.-link-ext:before { content: '\f08e'; } /* '' */ + + +/* collapse */ +.acf-icon.-collapse:before { content: '\e810'; top: -1px; } /* arrow-up */ +.-collapsed .acf-icon.-collapse:before { content: '\e80f'; top: 1px; } /* arrow-down */ + + +/* default */ +.acf-icon { + display: inline-block; + height: 26px; + width: 26px; + border: transparent solid 1px; + border-radius: 100%; + + font-size: 16px; + line-height: 26px; + text-align: center; + text-decoration: none; + vertical-align: top; + box-sizing: content-box; +} + + +/* elements */ +span.acf-icon { + color: #999; + border-color: #BBB; + background-color: #fff; +} + + +/* icon */ +a.acf-icon { + color: #999; + border-color: #BBB; + background-color: #fff; + + position: relative; + overflow: hidden; + transition: none; + + + /* clear */ + &.-clear { + color: #444; + background: transparent; + border: none; + } + + + /* light*/ + &.light { + border: none; + padding: 1px; + background: #F5F5F5; + color: #72777c; + } + + + /* states */ + &:hover { + border-color: transparent; + background: $acf_blue; + color: #fff; + } + + &:active { + color: #fff; + background-color: darken($acf_blue, 5%); + } + + + /* remove WP outline box-shadow */ + &:active, + &:focus { + outline: none; + box-shadow: none; + } + + + /* red */ + &.-minus, + &.-cancel { + + &:hover { + background-color: #F55E4F; + } + + &:active { + background-color: darken(#F55E4F, 5%); + } + + } + +} + + +/* minor tweaks */ +.acf-icon.-pencil { + font-size: 15px; +} + +.acf-icon.-location { + font-size: 18px; +} + + +/* sizes */ +.acf-icon.small, +.acf-icon.-small { + width: 18px; + height: 18px; + line-height: 18px; + font-size: 14px; +} + + +/* dark */ +.acf-icon.dark { + border-color: transparent; + background: #23282D; + color: #eee; +} + +a.acf-icon.dark:hover { + border-color: transparent; + background: #191E23; + color: #00b9eb; +} + +a.acf-icon.-minus.dark:hover, +a.acf-icon.-cancel.dark:hover { + color: #D54E21; +} + + +/* grey */ +.acf-icon.grey { + border-color: transparent; + background: #b4b9be; + color: #fff; +} + +a.acf-icon.grey:hover { + border-color: transparent; + background: #00A0D2; + color: #fff; +} + +a.acf-icon.-minus.grey:hover, +a.acf-icon.-cancel.grey:hover { + background: #32373C; +} + + +/* red */ +.acf-icon.red { + border-color: transparent; + background-color: #F55E4F; + color: #fff; +} + + +/* yellow */ +.acf-icon.yellow { + border-color: transparent; + background-color: #FDBC40; + color: #fff; +} + + +/* logo */ +.acf-icon.logo { + width: 150px; + height: 150px; + background: #5EE8BF; + + border: 0 none; + position: absolute; + right: 0; + top: 0; +} + + +/*-------------------------------------------------------------------------------------------- +* +* acf-box +* +*--------------------------------------------------------------------------------------------*/ + +.acf-box { + background: #FFFFFF; + border: 1px solid #E5E5E5; + position: relative; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + + /* title */ + .title { + border-bottom: 1px solid #EEEEEE; + margin: 0; + padding: 15px; + + h3 { + font-size: 14px; + line-height: 1em; + margin: 0; + padding: 0; + } + } + + + .inner { + padding: 15px; + } + + h2 { + color: #333333; + font-size: 26px; + line-height: 1.25em; + margin: 0.25em 0 0.75em; + padding: 0; + } + + h3 { + margin: 1.5em 0 0; + } + + p { + margin-top: 0.5em; + } + + a { + text-decoration: none; + } + + i { + &.dashicons-external { + margin-top: -1px; + } + } + + /* footer */ + .footer { + border-top: 1px solid #eee; + padding: 12px; + font-size: 13px; + line-height: 1.5; + + p { + margin: 0; + } + } +} + +/*-------------------------------------------------------------------------------------------- +* +* acf-notice +* +*--------------------------------------------------------------------------------------------*/ + +.acf-notice { + position: relative; + display: block; + color: #fff; + margin: 5px 0 15px; + padding: 3px 12px; + background: $acf_notice; + border-left: darken($acf_notice, 8%) solid 4px; + + p { + font-size: 13px; + line-height: 1.5; + margin: 0.5em 0; + text-shadow: none; + color: inherit; + } + + a.acf-notice-dismiss { + position: absolute; + border-color: transparent; + top: 9px; + right: 12px; + color: #fff; + background: rgba(0,0,0,0.1); + + &:hover { + background: rgba(0,0,0,0.2); + } + } + + // dismiss + &.-dismiss { + padding-right: 40px; + } + + // error + &.-error { + background: $acf_error; + border-color: darken($acf_error, 8%); + } + + // success + &.-success { + background: $acf_success; + border-color: darken($acf_success, 8%); + } + + // warning + &.-warning { + background: $acf_warning; + border-color: darken($acf_warning, 8%); + } +} + + +/*-------------------------------------------------------------------------------------------- +* +* acf-table +* +*--------------------------------------------------------------------------------------------*/ + +.acf-table { + border: #DFDFDF solid 1px; + background: #fff; + border-spacing: 0; + border-radius: 0; + table-layout: auto; + padding: 0; + margin: 0; + width: 100%; + clear: both; + box-sizing: content-box; + + /* defaults */ + > tbody > tr, + > thead > tr { + + > th, > td { + padding: 8px; + vertical-align: top; + background: #fff; + text-align: left; + border-style: solid; + font-weight: normal; + } + + > th { + position: relative; + color: #333333; + } + + } + + + /* thead */ + > thead { + + > tr { + + > th { + border-color: #E1E1E1; + border-width: 0 0 1px 1px; + + &:first-child { + border-left-width: 0; + } + } + + } + + } + + + /* tbody */ + > tbody { + + > tr { + z-index: 1; + + > td { + border-color: #EDEDED; + border-width: 1px 0 0 1px; + + &:first-child { + border-left-width: 0; + } + } + + &:first-child > td { + border-top-width: 0; + } + } + + } + + + /* -clear */ + &.-clear { + border: 0 none; + + > tbody > tr, + > thead > tr { + + > td, >th { + border: 0 none; + padding: 4px; + } + } + } +} + + +/* remove tr */ +.acf-remove-element { + -webkit-transition: all 0.25s ease-out; + -moz-transition: all 0.25s ease-out; + -o-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + + transform: translate(50px, 0); + opacity: 0; +} + + +/* fade-up */ +.acf-fade-up { + -webkit-transition: all 0.25s ease-out; + -moz-transition: all 0.25s ease-out; + -o-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + + transform: translate(0, -10px); + opacity: 0; +} + + +/*--------------------------------------------------------------------------------------------- +* +* wp-admin +* +*---------------------------------------------------------------------------------------------*/ + +/* Menu */ +#adminmenu a[href="edit.php?post_type=acf-field-group&page=acf-settings-info"] { + display: none; +} + + +/*--------------------------------------------------------------------------------------------- +* +* Field Group List +* +*---------------------------------------------------------------------------------------------*/ + +#icon-edit.icon32-posts-acf-field-group { + background-position: -11px -5px; +} + +#acf-field-group-wrap { + + .tablenav, + p.search-box { + display: none; + } + + .wp-list-table { + + .column-acf-fg-description, + .column-acf-fg-description:before { + display: none !important; /* important needed to override mobile */ + } + + .column-acf-fg-count { + width: 10%; + } + + .column-acf-fg-status { + width: 10%; + } + + } + + .tablenav.bottom { + display: block; + } + + .acf-description { + font-weight: normal; + font-size: 13px; + color: #999; + margin-left: 7px; + font-style: italic; + } + +} + + + + +/* subsubsub */ +#acf-field-group-wrap .subsubsub { + + /* WPML */ + margin-bottom: 3px; + + ul { + margin: 0; + } + + + .subsubsub { + margin-top: 0; + } + + /* search */ + a:focus { + box-shadow: none; + } + +} + + + +/* columns (replicate post edit layout) */ +.acf-columns-2 { + margin-right: 300px; + clear: both; + @include clearfix(); + + /* rtl */ + html[dir="rtl"] & { + margin-right: 0; + margin-left: 300px; + } + + .acf-column-1 { + float: left; + width: 100%; + + /* rtl */ + html[dir="rtl"] & { + float: right; + } + } + + .acf-column-2 { + float: right; + margin-right: -300px; + width: 280px; + + /* rtl */ + html[dir="rtl"] & { + float: left; + margin-right: 0; + margin-left: -300px; + } + } + +} + + +/* search */ +#acf-field-group-wrap .search-box { + + &:after { + display: block; + content: ""; + height: 5px; + } + +} + +.acf-clear { + clear: both; +} + + +/* mobile compatibilty */ +@media screen and (max-width: 782px) { + + #acf-field-group-wrap #the-list .acf-icon:after { + content: attr(title); + position: absolute; + margin-left: 5px; + font-size: 13px; + line-height: 18px; + font-style: normal; + color: #444; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Fake table +* +*---------------------------------------------------------------------------------------------*/ + +.acf-thead, +.acf-tbody, +.acf-tfoot { + width: 100%; + padding: 0; + margin: 0; +} + +.acf-thead > li, +.acf-tbody > li, +.acf-tfoot > li { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + + padding: 8px 15px; + font-size: 12px; + line-height: 14px; +} + + +.acf-thead { + border-bottom: #E1E1E1 solid 1px; + color: #23282d; +} + +.acf-thead > li { + font-size: 14px; + line-height: 1.4em; + font-family: "Open Sans",sans-serif; + font-weight: bold; +} + +.acf-tfoot { + background: #f5f5f5; + border-top: #dddddd solid 1px; +} + +.acf-tfoot > li { + color: #7A9BBE; + font-size: 12px; + line-height: 27px; +} + +/*-------------------------------------------------------------------------------------------- +* +* Settings +* +*--------------------------------------------------------------------------------------------*/ + +.acf-settings-wrap { + + #poststuff { + padding-top: 15px; + } + + .acf-box { + margin: 20px 0; + } + + table { + margin: 0; + + .button { + vertical-align: middle; + } + } +} + + +/*-------------------------------------------------------------------------------------------- +* +* Settings: Add-ons +* +*--------------------------------------------------------------------------------------------*/ + +.add-ons-list { + margin: 20px 0 0 -18px; + max-width: 960px; +} + +.add-ons-list .add-on { + width: 220px; + margin: 0 0 20px 18px; + float: left; +} + +.add-ons-list .add-on .inner { + min-height: 90px; +} + +.add-ons-list .add-on-acf-pro { + width: 940px; +} + +.add-ons-list .add-on .thumbnail { + +} + +.add-ons-list .add-on .thumbnail img { + display: block; +} + +.add-ons-list .add-on h3 a { + color: inherit; + text-decoration: none; +} + +.add-ons-list .add-on h3 { + margin: 0.5em 0; +} + + +/*-------------------------------------------------------------------------------------------- +* +* acf-popup +* +*--------------------------------------------------------------------------------------------*/ + +#acf-popup { + position: fixed; + z-index: 900000; + top: 0; + left: 0; + right: 0; + bottom: 0; + text-align: center; + + // bg + .bg { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 0; + background: rgba(0,0,0,0.25); + } + + &:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; + } + + // box + .acf-popup-box { + display: inline-block; + vertical-align: middle; + z-index: 1; + min-width: 300px; + min-height: 160px; + border-color: #aaaaaa; + box-shadow: 0 5px 30px -5px rgba(0, 0, 0, 0.25); + text-align: left; + @include rtl(); + + // title + .title { + min-height: 15px; + line-height: 15px; + + // icon + .acf-icon { + position: absolute; + top: 10px; + right: 10px; + + // rtl + html[dir="rtl"] & { + right: auto; + left: 10px; + } + } + } + + .inner { + min-height: 50px; + + // use margin instead of padding to allow inner elements marin to overlap and avoid large hitespace at top/bottom + padding: 0; + margin: 15px; + } + + // loading + .loading { + position: absolute; + top: 45px; + left: 0; + right: 0; + bottom: 0; + z-index: 2; + background: rgba(0,0,0,0.1); + display: none; + + i { + @include centered(); + } + } + + } +} + + +// acf-submit +.acf-submit { + margin-bottom: 0; + line-height: 28px; // .button height + + // message + span { + float: right; + color: #999; + + &.-error { + color: #dd4232; + } + } + + // button (allow margin between loading) + .button { + margin-right: 5px; + } +} + +/*-------------------------------------------------------------------------------------------- +* +* upgrade notice +* +*--------------------------------------------------------------------------------------------*/ + +#acf-upgrade-notice { + position: relative; + background: #fff; + border-left: 4px solid #00a0d2; + padding: 20px; + @include clearfix(); + + .col-content { + float: left; + width: 55%; + padding-left: 90px; + } + + .col-actions { + float: right; + text-align: center; + padding: 10px; + } + + img { + float: left; + width: 70px; + height: 70px; + margin: 0 0 0 -90px; + } + + h2 { + font-size: 16px; + margin: 2px 0 6.5px; + } + + p { + padding: 0; + margin: 0; + } + + .button:before { + margin-top: 11px; + } + + // mobile + @media screen and (max-width: $sm) { + + .col-content, + .col-actions { + float: none; + padding-left: 90px; + width: auto; + text-align: left; + } + } +} + + +/*-------------------------------------------------------------------------------------------- +* +* Welcome +* +*--------------------------------------------------------------------------------------------*/ + +.acf-wrap { + + h1 { + margin-top: 0; + padding-top: 20px; + } + + .about-text { + margin-top: 0.5em; + min-height: 50px; + } + + .about-headline-callout { + font-size: 2.4em; + font-weight: 300; + line-height: 1.3; + margin: 1.1em 0 0.2em; + text-align: center; + } + + .feature-section { + padding: 40px 0; + + h2 { + margin-top: 20px; + } + } + + .changelog { + list-style: disc; + padding-left: 15px; + + li { + margin: 0 0 0.75em; + } + } + + .acf-three-col { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + > div { + flex: 1; + align-self: flex-start; + min-width: 31%; + max-width: 31%; + + @media screen and (max-width: $md) { + min-width: 48%; + } + + @media screen and (max-width: $sm) { + min-width: 100%; + } + } + + h3 .badge { + display: inline-block; + vertical-align: top; + border-radius: 5px; + background: #fc9700; + color: #fff; + font-weight: normal; + font-size: 12px; + padding: 2px 5px; + } + + img + h3 { + margin-top: 0.5em; + } + } +} + +/*-------------------------------------------------------------------------------------------- +* +* acf-hl cols +* +*--------------------------------------------------------------------------------------------*/ + +.acf-hl[data-cols] { + margin-left: -10px; + margin-right: -10px; + + > li { + padding: 0 10px; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + +} + + +/* sizes */ +.acf-hl[data-cols="2"] > li { width: 50%; } +.acf-hl[data-cols="3"] > li { width: 33.333%; } +.acf-hl[data-cols="4"] > li { width: 25%; } + + +/* mobile */ +@media screen and (max-width: $sm) { + + .acf-hl[data-cols] { + margin-left: 0; + margin-right: 0; + margin-top: -10px; + + > li { + width: 100% !important; + padding: 10px 0 0; + } + + } + +} + + + +/*-------------------------------------------------------------------------------------------- +* +* misc +* +*--------------------------------------------------------------------------------------------*/ + +.acf-actions { + text-align: right; + z-index: 1; + + a { + margin-left: 4px; + } + + + /* hover */ + &.-hover { + position: absolute; + display: none; + top: 0; + right: 0; + padding: 5px; + } + + + /* rtl */ + html[dir="rtl"] & { + + a { + margin-left: 0; + margin-right: 4px; + } + + &.-hover { + right: auto; + left: 0; + } + + } +} + + +/* ul compatibility */ +ul.acf-actions { + li { float: right; margin-left: 4px; } +} + + +/*-------------------------------------------------------------------------------------------- +* +* Plugins +* +*--------------------------------------------------------------------------------------------*/ + +.acf-plugin-upgrade-notice { + font-weight: normal; + color: #fff; + background: #d54d21; + padding: 1em; + margin: 9px 0; + + &:before { + content: "\f348"; + display: inline-block; + font: 400 18px/1 dashicons; + speak: none; + margin: 0 8px 0 -2px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; + } + + h4 { + display: none; + } + + ul, + li { + display: inline; + color: inherit; + list-style: none; + } + + li:after { + content: '. '; + display: inline; + } + +} + + +/*-------------------------------------------------------------------------------------------- +* +* RTL +* +*--------------------------------------------------------------------------------------------*/ + +html[dir="rtl"] .acf-fl { float: right; } +html[dir="rtl"] .acf-fr { float: left; } + +html[dir="rtl"] .acf-hl > li { + float: right; +} + +html[dir="rtl"] .acf-hl > li.acf-fr { + float: left; +} + +html[dir="rtl"] .acf-icon.logo { + left: 0; + right: auto; +} + + +html[dir="rtl"] .acf-table thead th { + text-align: right; + border-right-width: 1px; + border-left-width: 0px; +} + +html[dir="rtl"] .acf-table > tbody > tr > td { + text-align: right; + border-right-width: 1px; + border-left-width: 0px; +} + +html[dir="rtl"] .acf-table > thead > tr > th:first-child, +html[dir="rtl"] .acf-table > tbody > tr > td:first-child { + border-right-width: 0; +} + +html[dir="rtl"] .acf-table > tbody > tr > td.order + td { + border-right-color: #e1e1e1; +} + + +/*--------------------------------------------------------------------------------------------- +* +* acf-postbox-columns +* +*---------------------------------------------------------------------------------------------*/ + +.acf-postbox-columns { + @include clearfix(); + position: relative; + margin-top: -11px; + margin-bottom: -11px; + margin-left: -12px; + margin-right: (280px - 12px); + + .acf-postbox-main, + .acf-postbox-side { + @include border-box(); + padding: 0 12px 12px; + } + + .acf-postbox-main { + float: left; + width: 100%; + } + + .acf-postbox-side { + float: right; + width: 280px; + margin-right: -280px; + + &:before { + content: ""; + display: block; + position: absolute; + width: 1px; + height: 100%; + top: 0; + right: 0; + background: #ebebeb; + } + } +} + + +/* mobile */ +@media only screen and (max-width: 850px) { + + .acf-postbox-columns { + margin: 0; + + .acf-postbox-main, + .acf-postbox-side { + float: none; + width: auto; + margin: 0; + padding: 0; + } + + .acf-postbox-side { + margin-top: 1em; + + &:before { + display: none; + } + } + } +} + + +/*--------------------------------------------------------------------------------------------- +* +* acf-panel +* +*---------------------------------------------------------------------------------------------*/ + +.acf-panel { + margin-top: -1px; + border-top: 1px solid #e2e4e7; + border-bottom: 1px solid #e2e4e7; + + .acf-panel-title { + margin: 0; + padding: 12px; + font-weight: bold; + cursor: pointer; + font-size: inherit; + + i { + float: right; + } + } + + .acf-panel-inside { + margin: 0; + padding: 0 12px 12px; + display: none; + } + + /* open */ + &.-open { + + .acf-panel-inside { + display: block; + } + + } + + + /* inside postbox */ + .postbox & { + margin-left: -12px; + margin-right: -12px; + } + + + /* fields */ + .acf-field { + margin: 20px 0 0; + + .acf-label label { + color: #555d66; + font-weight: normal; + } + + &:first-child { + margin-top: 0; + } + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Admin Tools +* +*---------------------------------------------------------------------------------------------*/ + +#acf-admin-tools { + + .notice { + margin-top: 10px; + } +} + +.acf-meta-box-wrap { + margin-top: 10px; + + .postbox { + @include border-box(); + + .inside { + margin-bottom: 0; + } + + .hndle { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; + } + + .handlediv { + display: none; + } + } + + + /* acf-fields */ + .acf-fields { + border: #ebebeb solid 1px; + background: #fafafa; + border-radius: 3px; + } +} + + +/* grid */ +.acf-meta-box-wrap.-grid { + margin-left: 8px; + margin-right: 8px; + + .postbox { + float: left; + clear: left; + width: 50%; + margin: 0 0 16px; + + &:nth-child(odd) { + margin-left: -8px; + } + + &:nth-child(even) { + float: right; + clear: right; + margin-right: -8px; + } + } +} + + +/* mobile */ +@media only screen and (max-width: 850px) { + + .acf-meta-box-wrap.-grid { + margin-left: 0; + margin-right: 0; + + .postbox { + margin-left: 0 !important; + margin-right: 0 !important; + width: 100%; + } + } +} + + +/* export tool */ +#acf-admin-tool-export { + + p { + max-width: 800px; + } + + ul { + column-width: 200px; + } + + .acf-postbox-side .button { + margin: 0; + width: 100%; + } + + textarea { + display: block; + width: 100%; + min-height: 500px; + + background: #fafafa; + box-shadow: none; + padding: 7px; + border-radius: 3px; + } + + /* panel: selection */ + .acf-panel-selection { + .acf-label { + display: none; + } + } +} + +/*--------------------------------------------------------------------------------------------- +* +* Retina +* +*---------------------------------------------------------------------------------------------*/ + +@media +only screen and (-webkit-min-device-pixel-ratio: 2), +only screen and ( min--moz-device-pixel-ratio: 2), +only screen and ( -o-min-device-pixel-ratio: 2/1), +only screen and ( min-device-pixel-ratio: 2), +only screen and ( min-resolution: 192dpi), +only screen and ( min-resolution: 2dppx) { + + .acf-loading, + .acf-spinner { + background-image: url(../images/spinner@2x.gif); + background-size: 20px 20px; + } + +} + + +/*--------------------------------------------------------------------------------------------- +* +* Device +* +*---------------------------------------------------------------------------------------------*/ + +@media only screen and (max-width: 850px) { + + .acf-columns-2 { + margin-right: 0; + } + + .acf-columns-2 .acf-column-1, + .acf-columns-2 .acf-column-2 { + float: none; + width: auto; + margin: 0; + } + +} \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_gutenberg.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_gutenberg.scss new file mode 100644 index 0000000..ab7466b --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_gutenberg.scss @@ -0,0 +1,123 @@ +/*-------------------------------------------------------------------------------------------- +* +* Gutenberg +* +*--------------------------------------------------------------------------------------------*/ +#editor { + + // main column is split into "editor" and "metaboxes". + // remove WP flex that pushed metaboxes to bottom. + .edit-post-visual-editor, + .edit-post-layout__metaboxes { + flex-basis: 0%; + flex-grow: 0; + } + + // metabox wrap + .edit-post-layout__metaboxes { + background: transparent; + border-top: 0 none; + margin-top: 0; + padding: 30px; + + @media screen and (min-width: 600px) { + padding: 46px; + } + + .edit-post-meta-boxes-area { + margin: 0; + } + + // make postbox look like a classic box. + .postbox { + border: #e2e4e7 solid 1px; + border-bottom: none; + margin: 0 0 20px; + } + } + + // improve handle style + .postbox { + .handlediv { + height: 46px; + width: auto; + padding: 0 14px 0 5px; + } + .hndle { + color: #191e23 !important; + font-size: 13px; + line-height: 16px; + + .acf-hndle-cog { + line-height: 16px; + } + } + + // change icons to match gutenberg sidebar accordions + .handlediv .toggle-indicator { + color: #191e23; + } + .handlediv .toggle-indicator:before { + content: "\f343"; + font-size: 18px; + width: auto; + } + &.closed .handlediv .toggle-indicator:before { + content: "\f347"; + } + } + + // acf-input-wrap + .acf-input-prepend, + .acf-input-append { + box-sizing: border-box; + height: 28px; + } + + // accordion + .acf-accordion { + padding: 0 !important; + + .acf-accordion-title { + color: #191e23; + font-weight: 600; + + &:hover { + background: #f8f9f9; + } + + label { + font-weight: inherit; + } + } + } + + // table + .acf-table { + box-sizing: border-box; + + .acf-row-handle { + width: 32px; + } + } + + // main error message + .components-notice-list .acf-notice.-error { + margin: 0 0 5px; + min-height: 50px; + padding: 6px 12px; + border-left: 4px solid #00a0d2; + color: #191e23; + background-color: #f9e2e2; + border-left-color: #d94f4f; + + p { + margin: 1em 0; + } + + .acf-notice-dismiss { + top: 15px; + right: 15px; + } + } +} diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_input.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_input.scss new file mode 100644 index 0000000..bb3b558 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_input.scss @@ -0,0 +1,61 @@ +/*-------------------------------------------------------------------------------------------- +* +* Confirm remove +* +*--------------------------------------------------------------------------------------------*/ + +.acf-temp-remove { + position: relative; + opacity: 1; + -webkit-transition: all 0.25s ease; + -moz-transition: all 0.25s ease; + -o-transition: all 0.25s ease; + transition: all 0.25s ease; + overflow: hidden; + + /* overlay prevents hover */ + &:after { + display: block; + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 99; + } +} + + +/*-------------------------------------------------------------------------- +* +* Conditional Logic +* +*-------------------------------------------------------------------------*/ + +/* Hide */ +.hidden-by-conditional-logic { + display: none !important; +} + + +/* Hide (appear empty) */ +.hidden-by-conditional-logic.appear-empty { + display: table-cell !important; +} + +.hidden-by-conditional-logic.appear-empty .acf-input { + display: none !important; +} + + +/*-------------------------------------------------------------------------- +* +* 3rd Party +* +*-------------------------------------------------------------------------*/ + +/* Tabify shows hidden postboxes */ +.acf-postbox.acf-hidden { + display: none !important; +} \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_media.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_media.scss new file mode 100644 index 0000000..f68bf95 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_media.scss @@ -0,0 +1,505 @@ +/*--------------------------------------------------------------------------------------------- +* +* Media Model +* +*---------------------------------------------------------------------------------------------*/ + +/* WP sets tables to act as divs. ACF uses tables, so these muct be reset */ +.media-modal .compat-attachment-fields td.acf-input { + + table { + display: table; + table-layout: auto; + + tbody { + display: table-row-group; + } + + tr { + display: table-row; + } + + td, th { + display: table-cell; + } + + } + +} + + +/* field widths floats */ +.media-modal .compat-attachment-fields > tbody > .acf-field { + margin: 5px 0; + + > .acf-label { + min-width: 30%; + margin: 0; + padding: 0; + float: left; + text-align: right; + display: block; + float: left; + + > label { + padding-top: 6px; + margin: 0; + color: #666666; + font-weight: 400; + line-height: 16px; + } + } + + > .acf-input { + width: 65%; + margin: 0; + padding: 0; + float: right; + display: block; + } + + p.description { + margin: 0; + } +} + + +/* restricted selection (copy of WP .upload-errors)*/ +.acf-selection-error { + background: #ffebe8; + border: 1px solid #c00; + border-radius: 3px; + padding: 8px; + margin: 20px 0 0; + + .selection-error-label { + background: #CC0000; + border-radius: 3px; + color: #fff; + font-weight: bold; + margin-right: 8px; + padding: 2px 4px; + } + + .selection-error-message { + color: #b44; + display: block; + padding-top: 8px; + word-wrap: break-word; + white-space: pre-wrap; + } +} + + +/* disabled attachment */ +.media-modal .attachment.acf-disabled { + + .thumbnail { + opacity: 0.25 !important; + } + + .attachment-preview:before { + background: rgba(0,0,0,0.15); + z-index: 1; + position: relative; + } + +} + + +/* misc */ +.media-modal { + + /* compat-item */ + .compat-field-acf-form-data, + .compat-field-acf-blank { + display: none !important; + } + + + /* allow line breaks in upload error */ + .upload-error-message { + white-space: pre-wrap; + } + + + /* fix required span */ + .acf-required { + padding: 0 !important; + margin: 0 !important; + float: none !important; + color: #f00 !important; + } + + + /* sidebar */ + .media-sidebar { + + .compat-item{ + padding-bottom: 20px; + } + + } + + + /* mobile md */ + @media (max-width: 900px) { + + /* label */ + .setting span, + .compat-attachment-fields > tbody > .acf-field > .acf-label { + width: 98%; + float: none; + text-align: left; + min-height: 0; + padding: 0; + } + + + /* field */ + .setting input, + .setting textarea, + .compat-attachment-fields > tbody > .acf-field > .acf-input { + float: none; + height: auto; + max-width: none; + width: 98%; + } + + } + + +} + + + +/*--------------------------------------------------------------------------------------------- +* +* Media Model (expand details) +* +*---------------------------------------------------------------------------------------------*/ + +.media-modal .acf-expand-details { + float: right; + padding: 1px 10px; + margin-right: 6px; + height: 18px; + line-height: 18px; + color: #AAAAAA; + font-size: 12px; + + &:focus, &:active { + outline: 0 none; + box-shadow: none; + color: #AAAAAA; + } + + &:hover { + color: #666666 !important; + } + + span { + display: block; + float: left; + } + + .acf-icon { + margin: 0 4px 0 0; + } + + &:hover .acf-icon { + border-color: #AAAAAA; + } + + .is-open { display: none; } + .is-closed { display: block; } + + + /* mobile sm */ + @media (max-width: $sm) { + display: none; + } +} + + +/* expanded */ +.media-modal.acf-expanded { + + /* toggle */ + .acf-expand-details { + .is-open { display: block; } + .is-closed { display: none; } + + } + + // Components. + .attachments-browser .media-toolbar, + .attachments-browser .attachments { right: 740px; } + .media-sidebar { width: 708px; } + + // Sidebar. + .media-sidebar { + + // Attachment info. + .attachment-info { + .thumbnail { + float: left; + max-height: none; + + img { + max-width: 100%; + max-height: 200px; + } + } + + .details { + float: right; + } + } + + // Label + .attachment-info .thumbnail, + .attachment-details .setting span, + .compat-attachment-fields > tbody > .acf-field > .acf-label { + min-width: 20%; + margin-right: 0; + } + + // Input + .attachment-info .details, + .attachment-details .setting input, + .attachment-details .setting textarea, + .attachment-details .setting + .description, + .compat-attachment-fields > tbody > .acf-field > .acf-input { + min-width: 77%; + } + } + + // Screen: Medium. + @media (max-width: 900px) { + + // Components. + .attachments-browser .media-toolbar { display: none; } + .attachments { display: none; } + .media-sidebar { width: auto; max-width: none !important; bottom: 0 !important; } + + // Sidebar. + .media-sidebar { + + // Attachment info. + .attachment-info { + .thumbnail { + min-width: 0; + max-width: none; + width: 30%; + } + + .details { + min-width: 0; + max-width: none; + width: 67%; + } + + } + } + } + + // Screen: small. + @media (max-width: 640px) { + + // Sidebar. + .media-sidebar { + + // Attachment info. + .attachment-info { + .thumbnail, .details { + width: 100%; + } + } + } + } +} + + + +/*--------------------------------------------------------------------------------------------- +* +* ACF Media Model +* +*---------------------------------------------------------------------------------------------*/ + +.acf-media-modal { + + /* hide embed settings */ + .media-embed { + + .setting.align, + .setting.link-to { + display: none; + } + + } + + // only allow for devices larger than mobile + @media screen and (min-width: 1024px) { + + // - requires long selector to override WP core + .media-modal-content .media-frame .media-toolbar-secondary { + max-width: none; + + select.attachment-filters { + width: auto; + min-width: 150px; + max-width: none; + margin: 11px 6px 0 0; + vertical-align: middle; + } + } + } +} + + +/*--------------------------------------------------------------------------------------------- +* +* ACF Media Model (Select Mode) +* +*---------------------------------------------------------------------------------------------*/ + +.acf-media-modal.-select { + + + +} + + +/*--------------------------------------------------------------------------------------------- +* +* ACF Media Model (Edit Mode) +* +*---------------------------------------------------------------------------------------------*/ + +.acf-media-modal.-edit { + + /* resize modal */ + left: 15%; + right: 15%; + top: 100px; + bottom: 100px; + + + /* hide elements */ + .media-frame-menu, + .media-frame-router, + .media-frame-content .attachments, + .media-frame-content .media-toolbar { + display: none; + } + + + /* full width */ + .media-frame-title, + .media-frame-content, + .media-frame-toolbar, + .media-sidebar { + width: auto; + left: 0; + right: 0; + } + + + /* tidy up incorrect distance */ + .media-frame-content { + top: 50px; + } + + + /* title box shadow (to match media grid) */ + .media-frame-title { + border-bottom: 1px solid #DFDFDF; + box-shadow: 0 4px 4px -4px rgba(0, 0, 0, 0.1); + } + + + /* sidebar */ + .media-sidebar { + + padding: 0 16px; + + /* WP details */ + .attachment-details { + + overflow: visible; + + /* hide 'Attachment Details' heading */ + > h3, > h2 { + display: none; + } + + + /* remove overflow */ + .attachment-info { + background: #fff; + border-bottom: #dddddd solid 1px; + padding: 16px; + margin: 0 -16px 16px; + } + + /* move thumbnail */ + .thumbnail { + margin: 0 16px 0 0; + } + + .setting { + margin: 0 0 5px; + + span { + margin: 0; + } + } + + } + + + /* ACF fields */ + .compat-attachment-fields { + + > tbody > .acf-field { + margin: 0 0 5px; + + p.description { + margin-top: 3px; + } + } + + } + + + /* WP required message */ + .media-types-required-info { display: none; } + + } + + + /* mobile md */ + @media (max-width: 900px) { + top: 30px; + right: 30px; + bottom: 30px; + left: 30px; + } + + + /* mobile sm */ + @media (max-width: 640px) { + top: 0; + right: 0; + bottom: 0; + left: 0; + } + + @media (max-width: 480px) { + .media-frame-content { + top: 40px; + } + } +} diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_mixins.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_mixins.scss new file mode 100644 index 0000000..a4c2ddd --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_mixins.scss @@ -0,0 +1,39 @@ +/*-------------------------------------------------------------------------------------------- +* +* Mixins +* +*--------------------------------------------------------------------------------------------*/ +@mixin clearfix() { + &:after { + display: block; + clear: both; + content: ""; + } +} + +@mixin border-box() { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +@mixin centered() { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +@mixin animate( $properties: 'all' ) { + -webkit-transition: $properties 0.3s ease; // Safari 3.2+, Chrome + -moz-transition: $properties 0.3s ease; // Firefox 4-15 + -o-transition: $properties 0.3s ease; // Opera 10.5–12.00 + transition: $properties 0.3s ease; // Firefox 16+, Opera 12.50+ +} + +@mixin rtl() { + html[dir="rtl"] & { + text-align: right; + @content; + } +} diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_postbox.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_postbox.scss new file mode 100644 index 0000000..9e3b920 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_postbox.scss @@ -0,0 +1,50 @@ +// Postbox. + +// Gutenberg specific styles. +#editor { + + // Postbox container. + .edit-post-layout__metaboxes { + padding: 0; + } + + // Alter postbox to look like panel component. + .postbox { + color: #444; + + .handlediv { + color: #191e23 !important; + height: 46px; + width: auto; + padding: 0 14px 0 5px; + position: relative; + z-index: 2; + } + .hndle { + color: #191e23 !important; + font-size: 13px; + line-height: normal; + padding: 15px; + + &:hover { + background: #f2f4f5; + } + .acf-hndle-cog { + line-height: 16px; + } + } + + // change icons to match gutenberg sidebar accordions + .handlediv .toggle-indicator { + color: inherit; + &:before { + content: "\f343"; + font-size: 18px; + width: auto; + } + } + &.closed .handlediv .toggle-indicator:before { + content: "\f347"; + } + } +} \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/_variables.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/_variables.scss new file mode 100644 index 0000000..968cad0 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/_variables.scss @@ -0,0 +1,24 @@ +/*-------------------------------------------------------------------------------------------- +* +* Vars +* +*--------------------------------------------------------------------------------------------*/ + +/* colors */ +$acf_blue: #2a9bd9; +$acf_notice: #2a9bd9; +$acf_error: #F55E4F; +$acf_success: #46b450; +$acf_warning: #fd8d3b; + +/* acf-field */ +$field_padding: 15px 12px; +$field_padding_x: 12px; +$field_padding_y: 15px; +$fp: 15px 12px; +$fy: 15px; +$fx: 12px; + +/* responsive */ +$md: 880px; +$sm: 640px; \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-dark.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-dark.scss new file mode 100644 index 0000000..7dac47f --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-dark.scss @@ -0,0 +1 @@ +@import "dark"; \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-field-group.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-field-group.scss new file mode 100644 index 0000000..d386eb3 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-field-group.scss @@ -0,0 +1,3 @@ +@import "variables"; +@import "mixins"; +@import "field-group"; \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-global.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-global.scss new file mode 100644 index 0000000..1a5a5b8 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-global.scss @@ -0,0 +1,3 @@ +@import "variables"; +@import "mixins"; +@import "global"; \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-input.scss b/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-input.scss new file mode 100644 index 0000000..26abf66 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/css/acf-input.scss @@ -0,0 +1,7 @@ +@import "variables"; +@import "mixins"; +@import "fields"; +@import "forms"; +@import "media"; +@import "input"; +@import "postbox"; \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/images/acf-logo.psd b/wp-content/plugins/advanced-custom-fields/assets/build/images/acf-logo.psd new file mode 100644 index 0000000000000000000000000000000000000000..0e54e17837d807d81f650b95c9381c048d68eafb GIT binary patch literal 65312 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
B${TPwq5-!*u8zrbFjIheE%~ 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 SW3rz|Zvy-Nw=x~WzW)MfH}s1D literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-compatibility.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-compatibility.js new file mode 100644 index 0000000..d86140d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-compatibility.js @@ -0,0 +1,761 @@ +(function($, undefined){ + + /** + * acf.newCompatibility + * + * Inserts a new __proto__ object compatibility layer + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param object instance The object to modify. + * @param object compatibilty Optional. The compatibilty layer. + * @return object compatibilty + */ + + acf.newCompatibility = function( instance, compatibilty ){ + + // defaults + compatibilty = compatibilty || {}; + + // inherit __proto_- + compatibilty.__proto__ = instance.__proto__; + + // inject + instance.__proto__ = compatibilty; + + // reference + instance.compatibility = compatibilty; + + // return + return compatibilty; + }; + + /** + * acf.getCompatibility + * + * Returns the compatibility layer for a given instance + * + * @date 13/3/18 + * @since 5.6.9 + * + * @param object instance The object to look in. + * @return object|null compatibility The compatibility object or null on failure. + */ + + acf.getCompatibility = function( instance ) { + return instance.compatibility || null; + }; + + /** + * acf (compatibility) + * + * Compatibility layer for the acf object + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var _acf = acf.newCompatibility(acf, { + + // storage + l10n: {}, + o: {}, + fields: {}, + + // changed function names + update: acf.set, + add_action: acf.addAction, + remove_action: acf.removeAction, + do_action: acf.doAction, + add_filter: acf.addFilter, + remove_filter: acf.removeFilter, + apply_filters: acf.applyFilters, + parse_args: acf.parseArgs, + disable_el: acf.disable, + disable_form: acf.disable, + enable_el: acf.enable, + enable_form: acf.enable, + update_user_setting: acf.updateUserSetting, + prepare_for_ajax: acf.prepareForAjax, + is_ajax_success: acf.isAjaxSuccess, + remove_el: acf.remove, + remove_tr: acf.remove, + str_replace: acf.strReplace, + render_select: acf.renderSelect, + get_uniqid: acf.uniqid, + serialize_form: acf.serialize, + esc_html: acf.strEscape, + str_sanitize: acf.strSanitize, + + }); + + _acf._e = function( k1, k2 ){ + + // defaults + k1 = k1 || ''; + k2 = k2 || ''; + + // compability + var compatKey = k2 ? k1 + '.' + k2 : k1; + var compats = { + 'image.select': 'Select Image', + 'image.edit': 'Edit Image', + 'image.update': 'Update Image' + }; + if( compats[compatKey] ) { + return acf.__(compats[compatKey]); + } + + // try k1 + var string = this.l10n[ k1 ] || ''; + + // try k2 + if( k2 ) { + string = string[ k2 ] || ''; + } + + // return + return string; + }; + + _acf.get_selector = function( s ) { + + // vars + var selector = '.acf-field'; + + // bail early if no search + if( !s ) { + return selector; + } + + // compatibility with object + if( $.isPlainObject(s) ) { + if( $.isEmptyObject(s) ) { + return selector; + } else { + for( var k in s ) { s = s[k]; break; } + } + } + + // append + selector += '-' + s; + + // replace underscores (split/join replaces all and is faster than regex!) + selector = acf.strReplace('_', '-', selector); + + // remove potential double up + selector = acf.strReplace('field-field-', 'field-', selector); + + // return + return selector; + }; + + _acf.get_fields = function( s, $el, all ){ + + // args + var args = { + is: s || '', + parent: $el || false, + suppressFilters: all || false, + }; + + // change 'field_123' to '.acf-field-123' + if( args.is ) { + args.is = this.get_selector( args.is ); + } + + // return + return acf.findFields(args); + }; + + _acf.get_field = function( s, $el ){ + + // get fields + var $fields = this.get_fields.apply(this, arguments); + + // return + if( $fields.length ) { + return $fields.first(); + } else { + return false; + } + }; + + _acf.get_closest_field = function( $el, s ){ + return $el.closest( this.get_selector(s) ); + }; + + _acf.get_field_wrap = function( $el ){ + return $el.closest( this.get_selector() ); + }; + + _acf.get_field_key = function( $field ){ + return $field.data('key'); + }; + + _acf.get_field_type = function( $field ){ + return $field.data('type'); + }; + + _acf.get_data = function( $el, defaults ){ + return acf.parseArgs( $el.data(), defaults ); + }; + + _acf.maybe_get = function( obj, key, value ){ + + // default + if( value === undefined ) { + value = null; + } + + // get keys + keys = String(key).split('.'); + + // acf.isget + for( var i = 0; i < keys.length; i++ ) { + if( !obj.hasOwnProperty(keys[i]) ) { + return value; + } + obj = obj[ keys[i] ]; + } + return obj; + }; + + + /** + * hooks + * + * Modify add_action and add_filter functions to add compatibility with changed $field parameter + * Using the acf.add_action() or acf.add_filter() functions will interpret new field parameters as jQuery $field + * + * @date 12/5/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var compatibleArgument = function( arg ){ + return ( arg instanceof acf.Field ) ? arg.$el : arg; + }; + + var compatibleArguments = function( args ){ + return acf.arrayArgs( args ).map( compatibleArgument ); + } + + var compatibleCallback = function( origCallback ){ + return function(){ + + // convert to compatible arguments + if( arguments.length ) { + var args = compatibleArguments(arguments); + + // add default argument for 'ready', 'append' and 'load' events + } else { + var args = [ $(document) ]; + } + + // return + return origCallback.apply(this, args); + } + } + + _acf.add_action = function( action, callback, priority, context ){ + + // handle multiple actions + var actions = action.split(' '); + var length = actions.length; + if( length > 1 ) { + for( var i = 0; i < length; i++) { + action = actions[i]; + _acf.add_action.apply(this, arguments); + } + return this; + } + + // single + var callback = compatibleCallback(callback); + return acf.addAction.apply(this, arguments); + }; + + _acf.add_filter = function( action, callback, priority, context ){ + var callback = compatibleCallback(callback); + return acf.addFilter.apply(this, arguments); + }; + + /* + * acf.model + * + * This model acts as a scafold for action.event driven modules + * + * @type object + * @date 8/09/2014 + * @since 5.0.0 + * + * @param (object) + * @return (object) + */ + + _acf.model = { + actions: {}, + filters: {}, + events: {}, + extend: function( args ){ + + // extend + var model = $.extend( {}, this, args ); + + // setup actions + $.each(model.actions, function( name, callback ){ + model._add_action( name, callback ); + }); + + // setup filters + $.each(model.filters, function( name, callback ){ + model._add_filter( name, callback ); + }); + + // setup events + $.each(model.events, function( name, callback ){ + model._add_event( name, callback ); + }); + + // return + return model; + }, + + _add_action: function( name, callback ) { + + // split + var model = this, + data = name.split(' '); + + // add missing priority + var name = data[0] || '', + priority = data[1] || 10; + + // add action + acf.add_action(name, model[ callback ], priority, model); + + }, + + _add_filter: function( name, callback ) { + + // split + var model = this, + data = name.split(' '); + + // add missing priority + var name = data[0] || '', + priority = data[1] || 10; + + // add action + acf.add_filter(name, model[ callback ], priority, model); + }, + + _add_event: function( name, callback ) { + + // vars + var model = this, + i = name.indexOf(' '), + event = (i > 0) ? name.substr(0,i) : name, + selector = (i > 0) ? name.substr(i+1) : ''; + + // event + var fn = function( e ){ + + // append $el to event object + e.$el = $(this); + + // append $field to event object (used in field group) + if( acf.field_group ) { + e.$field = e.$el.closest('.acf-field-object'); + } + + // event + if( typeof model.event === 'function' ) { + e = model.event( e ); + } + + // callback + model[ callback ].apply(model, arguments); + + }; + + // add event + if( selector ) { + $(document).on(event, selector, fn); + } else { + $(document).on(event, fn); + } + }, + + get: function( name, value ){ + + // defaults + value = value || null; + + // get + if( typeof this[ name ] !== 'undefined' ) { + value = this[ name ]; + } + + // return + return value; + }, + + set: function( name, value ){ + + // set + this[ name ] = value; + + // function for 3rd party + if( typeof this[ '_set_' + name ] === 'function' ) { + this[ '_set_' + name ].apply(this); + } + + // return for chaining + return this; + } + }; + + /* + * field + * + * This model sets up many of the field's interactions + * + * @type function + * @date 21/02/2014 + * @since 3.5.1 + * + * @param n/a + * @return n/a + */ + + _acf.field = acf.model.extend({ + type: '', + o: {}, + $field: null, + _add_action: function( name, callback ) { + + // vars + var model = this; + + // update name + name = name + '_field/type=' + model.type; + + // add action + acf.add_action(name, function( $field ){ + + // focus + model.set('$field', $field); + + // callback + model[ callback ].apply(model, arguments); + }); + }, + + _add_filter: function( name, callback ) { + + // vars + var model = this; + + // update name + name = name + '_field/type=' + model.type; + + // add action + acf.add_filter(name, function( $field ){ + + // focus + model.set('$field', $field); + + // callback + model[ callback ].apply(model, arguments); + }); + }, + + _add_event: function( name, callback ) { + + // vars + var model = this, + event = name.substr(0,name.indexOf(' ')), + selector = name.substr(name.indexOf(' ')+1), + context = acf.get_selector(model.type); + + // add event + $(document).on(event, context + ' ' + selector, function( e ){ + + // vars + var $el = $(this); + var $field = acf.get_closest_field( $el, model.type ); + + // bail early if no field + if( !$field.length ) return; + + // focus + if( !$field.is(model.$field) ) { + model.set('$field', $field); + } + + // append to event + e.$el = $el; + e.$field = $field; + + // callback + model[ callback ].apply(model, [e]); + }); + }, + + _set_$field: function(){ + + // callback + if( typeof this.focus === 'function' ) { + this.focus(); + } + }, + + // depreciated + doFocus: function( $field ){ + return this.set('$field', $field); + } + }); + + + /** + * validation + * + * description + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var _validation = acf.newCompatibility(acf.validation, { + remove_error: function( $field ){ + acf.getField( $field ).removeError(); + }, + add_warning: function( $field, message ){ + acf.getField( $field ).showNotice({ + text: message, + type: 'warning', + timeout: 1000 + }); + }, + fetch: acf.validateForm, + enableSubmit: acf.enableSubmit, + disableSubmit: acf.disableSubmit, + showSpinner: acf.showSpinner, + hideSpinner: acf.hideSpinner, + unlockForm: acf.unlockForm, + lockForm: acf.lockForm + }); + + + /** + * tooltip + * + * description + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + _acf.tooltip = { + + tooltip: function( text, $el ){ + + var tooltip = acf.newTooltip({ + text: text, + target: $el + }); + + // return + return tooltip.$el; + }, + + temp: function( text, $el ){ + + var tooltip = acf.newTooltip({ + text: text, + target: $el, + timeout: 250 + }); + }, + + confirm: function( $el, callback, text, button_y, button_n ){ + + var tooltip = acf.newTooltip({ + confirm: true, + text: text, + target: $el, + confirm: function(){ + callback(true); + }, + cancel: function(){ + callback(false); + } + }); + }, + + confirm_remove: function( $el, callback ){ + + var tooltip = acf.newTooltip({ + confirmRemove: true, + target: $el, + confirm: function(){ + callback(true); + }, + cancel: function(){ + callback(false); + } + }); + }, + }; + + /** + * tooltip + * + * description + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + _acf.media = new acf.Model({ + activeFrame: false, + actions: { + 'new_media_popup': 'onNewMediaPopup' + }, + + frame: function(){ + return this.activeFrame; + }, + + onNewMediaPopup: function( popup ){ + this.activeFrame = popup.frame; + }, + + popup: function( props ){ + + // update props + if( props.mime_types ) { + props.allowedTypes = props.mime_types; + } + if( props.id ) { + props.attachment = props.id; + } + + // new + var popup = acf.newMediaPopup( props ); + + // append +/* + if( props.selected ) { + popup.selected = props.selected; + } +*/ + + // return + return popup.frame; + } + }); + + + /** + * Select2 + * + * description + * + * @date 11/6/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + _acf.select2 = { + init: function( $select, args, $field ){ + + // compatible args + if( args.allow_null ) { + args.allowNull = args.allow_null; + } + if( args.ajax_action ) { + args.ajaxAction = args.ajax_action; + } + if( $field ) { + args.field = acf.getField($field); + } + + // return + return acf.newSelect2( $select, args ); + }, + + destroy: function( $select ){ + return acf.getInstance( $select ).destroy(); + + }, + }; + + /** + * postbox + * + * description + * + * @date 11/6/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + _acf.postbox = { + render: function( args ){ + + // compatible args + if( args.edit_url ) { + args.editLink = args.edit_url; + } + if( args.edit_title ) { + args.editTitle = args.edit_title; + } + + // return + return acf.newPostbox( args ); + } + }; + + /** + * acf.screen + * + * description + * + * @date 11/6/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newCompatibility(acf.screen, { + update: function(){ + return this.set.apply(this, arguments); + }, + fetch: acf.screen.check + }); + _acf.ajax = acf.screen; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-condition-types.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-condition-types.js new file mode 100644 index 0000000..6c44df4 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-condition-types.js @@ -0,0 +1,447 @@ +(function($, undefined){ + + var __ = acf.__; + + var parseString = function( val ){ + return val ? '' + val : ''; + }; + + var isEqualTo = function( v1, v2 ){ + return ( parseString(v1).toLowerCase() === parseString(v2).toLowerCase() ); + }; + + var isEqualToNumber = function( v1, v2 ){ + return ( parseFloat(v1) === parseFloat(v2) ); + }; + + var isGreaterThan = function( v1, v2 ){ + return ( parseFloat(v1) > parseFloat(v2) ); + }; + + var isLessThan = function( v1, v2 ){ + return ( parseFloat(v1) < parseFloat(v2) ); + }; + + var inArray = function( v1, array ){ + + // cast all values as string + array = array.map(function(v2){ + return parseString(v2); + }); + + return (array.indexOf( v1 ) > -1); + } + + var containsString = function( haystack, needle ){ + return ( parseString(haystack).indexOf( parseString(needle) ) > -1 ); + }; + + var matchesPattern = function( v1, pattern ){ + var regexp = new RegExp(parseString(pattern), 'gi'); + return parseString(v1).match( regexp ); + }; + + /** + * hasValue + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var HasValue = acf.Condition.extend({ + type: 'hasValue', + operator: '!=empty', + label: __('Has any value'), + fieldTypes: [ 'text', 'textarea', 'number', 'range', 'email', 'url', 'password', 'image', 'file', 'wysiwyg', 'oembed', 'select', 'checkbox', 'radio', 'button_group', 'link', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user', 'google_map', 'date_picker', 'date_time_picker', 'time_picker', 'color_picker' ], + match: function( rule, field ){ + return (field.val() ? true : false); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( HasValue ); + + /** + * hasValue + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var HasNoValue = HasValue.extend({ + type: 'hasNoValue', + operator: '==empty', + label: __('Has no value'), + match: function( rule, field ){ + return !HasValue.prototype.match.apply(this, arguments); + } + }); + + acf.registerConditionType( HasNoValue ); + + + + /** + * EqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var EqualTo = acf.Condition.extend({ + type: 'equalTo', + operator: '==', + label: __('Value is equal to'), + fieldTypes: [ 'text', 'textarea', 'number', 'range', 'email', 'url', 'password' ], + match: function( rule, field ){ + if( $.isNumeric(rule.value) ) { + return isEqualToNumber( rule.value, field.val() ); + } else { + return isEqualTo( rule.value, field.val() ); + } + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( EqualTo ); + + /** + * NotEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var NotEqualTo = EqualTo.extend({ + type: 'notEqualTo', + operator: '!=', + label: __('Value is not equal to'), + match: function( rule, field ){ + return !EqualTo.prototype.match.apply(this, arguments); + } + }); + + acf.registerConditionType( NotEqualTo ); + + /** + * PatternMatch + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var PatternMatch = acf.Condition.extend({ + type: 'patternMatch', + operator: '==pattern', + label: __('Value matches pattern'), + fieldTypes: [ 'text', 'textarea', 'email', 'url', 'password', 'wysiwyg' ], + match: function( rule, field ){ + return matchesPattern( field.val(), rule.value ); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( PatternMatch ); + + /** + * Contains + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var Contains = acf.Condition.extend({ + type: 'contains', + operator: '==contains', + label: __('Value contains'), + fieldTypes: [ 'text', 'textarea', 'number', 'email', 'url', 'password', 'wysiwyg', 'oembed', 'select' ], + match: function( rule, field ){ + return containsString( field.val(), rule.value ); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( Contains ); + + /** + * TrueFalseEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var TrueFalseEqualTo = EqualTo.extend({ + type: 'trueFalseEqualTo', + choiceType: 'select', + fieldTypes: [ 'true_false' ], + choices: function( field ){ + return [ + { + id: 1, + text: __('Checked') + } + ]; + }, + }); + + acf.registerConditionType( TrueFalseEqualTo ); + + /** + * TrueFalseNotEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var TrueFalseNotEqualTo = NotEqualTo.extend({ + type: 'trueFalseNotEqualTo', + choiceType: 'select', + fieldTypes: [ 'true_false' ], + choices: function( field ){ + return [ + { + id: 1, + text: __('Checked') + } + ]; + }, + }); + + acf.registerConditionType( TrueFalseNotEqualTo ); + + /** + * SelectEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var SelectEqualTo = acf.Condition.extend({ + type: 'selectEqualTo', + operator: '==', + label: __('Value is equal to'), + fieldTypes: [ 'select', 'checkbox', 'radio', 'button_group' ], + match: function( rule, field ){ + var val = field.val(); + if( val instanceof Array ) { + return inArray( rule.value, val ); + } else { + return isEqualTo( rule.value, val ); + } + }, + choices: function( fieldObject ){ + + // vars + var choices = []; + var lines = fieldObject.$setting('choices textarea').val().split("\n"); + + // allow null + if( fieldObject.$input('allow_null').prop('checked') ) { + choices.push({ + id: '', + text: __('Null') + }); + } + + // loop + lines.map(function( line ){ + + // split + line = line.split(':'); + + // default label to value + line[1] = line[1] || line[0]; + + // append + choices.push({ + id: $.trim( line[0] ), + text: $.trim( line[1] ) + }); + }); + + // return + return choices; + }, + }); + + acf.registerConditionType( SelectEqualTo ); + + /** + * SelectNotEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var SelectNotEqualTo = SelectEqualTo.extend({ + type: 'selectNotEqualTo', + operator: '!=', + label: __('Value is not equal to'), + match: function( rule, field ){ + return !SelectEqualTo.prototype.match.apply(this, arguments); + } + }); + + acf.registerConditionType( SelectNotEqualTo ); + + /** + * GreaterThan + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var GreaterThan = acf.Condition.extend({ + type: 'greaterThan', + operator: '>', + label: __('Value is greater than'), + fieldTypes: [ 'number', 'range' ], + match: function( rule, field ){ + var val = field.val(); + if( val instanceof Array ) { + val = val.length; + } + return isGreaterThan( val, rule.value ); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( GreaterThan ); + + + /** + * LessThan + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var LessThan = GreaterThan.extend({ + type: 'lessThan', + operator: '<', + label: __('Value is less than'), + match: function( rule, field ){ + var val = field.val(); + if( val instanceof Array ) { + val = val.length; + } + return isLessThan( val, rule.value ); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( LessThan ); + + /** + * SelectedGreaterThan + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var SelectionGreaterThan = GreaterThan.extend({ + type: 'selectionGreaterThan', + label: __('Selection is greater than'), + fieldTypes: [ 'checkbox', 'select', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user' ], + }); + + acf.registerConditionType( SelectionGreaterThan ); + + /** + * SelectedGreaterThan + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var SelectionLessThan = LessThan.extend({ + type: 'selectionLessThan', + label: __('Selection is less than'), + fieldTypes: [ 'checkbox', 'select', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user' ], + }); + + acf.registerConditionType( SelectionLessThan ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-condition.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-condition.js new file mode 100644 index 0000000..c5fd722 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-condition.js @@ -0,0 +1,249 @@ +(function($, undefined){ + + // vars + var storage = []; + + /** + * acf.Condition + * + * description + * + * @date 23/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.Condition = acf.Model.extend({ + + type: '', // used for model name + operator: '==', // rule operator + label: '', // label shown when editing fields + choiceType: 'input', // input, select + fieldTypes: [], // auto connect this conditions with these field types + + data: { + conditions: false, // the parent instance + field: false, // the field which we query against + rule: {} // the rule [field, operator, value] + }, + + events: { + 'change': 'change', + 'keyup': 'change', + 'enableField': 'change', + 'disableField': 'change' + }, + + setup: function( props ){ + $.extend(this.data, props); + }, + + getEventTarget: function( $el, event ){ + return $el || this.get('field').$el; + }, + + change: function( e, $el ){ + this.get('conditions').change( e ); + }, + + match: function( rule, field ){ + return false; + }, + + calculate: function(){ + return this.match( this.get('rule'), this.get('field') ); + }, + + choices: function( field ){ + return ''; + } + }); + + /** + * acf.newCondition + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newCondition = function( rule, conditions ){ + + // currently setting up conditions for fieldX, this field is the 'target' + var target = conditions.get('field'); + + // use the 'target' to find the 'trigger' field. + // - this field is used to setup the conditional logic events + var field = target.getField( rule.field ); + + // bail ealry if no target or no field (possible if field doesn't exist due to HTML error) + if( !target || !field ) { + return false; + } + + // vars + var args = { + rule: rule, + target: target, + conditions: conditions, + field: field + }; + + // vars + var fieldType = field.get('type'); + var operator = rule.operator; + + // get avaibale conditions + var conditionTypes = acf.getConditionTypes({ + fieldType: fieldType, + operator: operator, + }); + + // instantiate + var model = conditionTypes[0] || acf.Condition; + + // instantiate + var condition = new model( args ); + + // return + return condition; + }; + + /** + * mid + * + * Calculates the model ID for a field type + * + * @date 15/12/17 + * @since 5.6.5 + * + * @param string type + * @return string + */ + + var modelId = function( type ) { + return acf.strPascalCase( type || '' ) + 'Condition'; + }; + + /** + * acf.registerConditionType + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.registerConditionType = function( model ){ + + // vars + var proto = model.prototype; + var type = proto.type; + var mid = modelId( type ); + + // store model + acf.models[ mid ] = model; + + // store reference + storage.push( type ); + }; + + /** + * acf.getConditionType + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getConditionType = function( type ){ + var mid = modelId( type ); + return acf.models[ mid ] || false; + } + + /** + * acf.registerConditionForFieldType + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.registerConditionForFieldType = function( conditionType, fieldType ){ + + // get model + var model = acf.getConditionType( conditionType ); + + // append + if( model ) { + model.prototype.fieldTypes.push( fieldType ); + } + }; + + /** + * acf.getConditionTypes + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getConditionTypes = function( args ){ + + // defaults + args = acf.parseArgs(args, { + fieldType: '', + operator: '' + }); + + // clonse available types + var types = []; + + // loop + storage.map(function( type ){ + + // vars + var model = acf.getConditionType(type); + var ProtoFieldTypes = model.prototype.fieldTypes; + var ProtoOperator = model.prototype.operator; + + // check fieldType + if( args.fieldType && ProtoFieldTypes.indexOf( args.fieldType ) === -1 ) { + return; + } + + // check operator + if( args.operator && ProtoOperator !== args.operator ) { + return; + } + + // append + types.push( model ); + }); + + // return + return types; + }; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-conditions.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-conditions.js new file mode 100644 index 0000000..087ea81 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-conditions.js @@ -0,0 +1,306 @@ +(function($, undefined){ + + // vars + var CONTEXT = 'conditional_logic'; + + /** + * conditionsManager + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var conditionsManager = new acf.Model({ + + id: 'conditionsManager', + + priority: 20, // run actions later + + actions: { + 'new_field': 'onNewField', + }, + + onNewField: function( field ){ + if( field.has('conditions') ) { + field.getConditions().render(); + } + }, + }); + + /** + * acf.Field.prototype.getField + * + * Finds a field that is related to another field + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var getSiblingField = function( field, key ){ + + // find sibling (very fast) + var fields = acf.getFields({ + key: key, + sibling: field.$el, + suppressFilters: true, + }); + + // find sibling-children (fast) + // needed for group fields, accordions, etc + if( !fields.length ) { + fields = acf.getFields({ + key: key, + parent: field.$el.parent(), + suppressFilters: true, + }); + } + + // return + if( fields.length ) { + return fields[0]; + } + return false; + }; + + acf.Field.prototype.getField = function( key ){ + + // get sibling field + var field = getSiblingField( this, key ); + + // return early + if( field ) { + return field; + } + + // move up through each parent and try again + var parents = this.parents(); + for( var i = 0; i < parents.length; i++ ) { + + // get sibling field + field = getSiblingField( parents[i], key ); + + // return early + if( field ) { + return field; + } + } + + // return + return false; + }; + + + /** + * acf.Field.prototype.getConditions + * + * Returns the field's conditions instance + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.Field.prototype.getConditions = function(){ + + // instantiate + if( !this.conditions ) { + this.conditions = new Conditions( this ); + } + + // return + return this.conditions; + }; + + + /** + * Conditions + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + var timeout = false; + var Conditions = acf.Model.extend({ + + id: 'Conditions', + + data: { + field: false, // The field with "data-conditions" (target). + timeStamp: false, // Reference used during "change" event. + groups: [], // The groups of condition instances. + }, + + setup: function( field ){ + + // data + this.data.field = field; + + // vars + var conditions = field.get('conditions'); + + // detect groups + if( conditions instanceof Array ) { + + // detect groups + if( conditions[0] instanceof Array ) { + + // loop + conditions.map(function(rules, i){ + this.addRules( rules, i ); + }, this); + + // detect rules + } else { + this.addRules( conditions ); + } + + // detect rule + } else { + this.addRule( conditions ); + } + }, + + change: function( e ){ + + // this function may be triggered multiple times per event due to multiple condition classes + // compare timestamp to allow only 1 trigger per event + if( this.get('timeStamp') === e.timeStamp ) { + return false; + } else { + this.set('timeStamp', e.timeStamp, true); + } + + // render condition and store result + var changed = this.render(); + }, + + render: function(){ + return this.calculate() ? this.show() : this.hide(); + }, + + show: function(){ + return this.get('field').showEnable(this.cid, CONTEXT); + }, + + hide: function(){ + return this.get('field').hideDisable(this.cid, CONTEXT); + }, + + calculate: function(){ + + // vars + var pass = false; + + // loop + this.getGroups().map(function( group ){ + + // igrnore this group if another group passed + if( pass ) return; + + // find passed + var passed = group.filter(function(condition){ + return condition.calculate(); + }); + + // if all conditions passed, update the global var + if( passed.length == group.length ) { + pass = true; + } + }); + + return pass; + }, + + hasGroups: function(){ + return this.data.groups != null; + }, + + getGroups: function(){ + return this.data.groups; + }, + + addGroup: function(){ + var group = []; + this.data.groups.push( group ); + return group; + }, + + hasGroup: function( i ){ + return this.data.groups[i] != null; + }, + + getGroup: function( i ){ + return this.data.groups[i]; + }, + + removeGroup: function( i ){ + this.data.groups[i].delete; + return this; + }, + + addRules: function( rules, group ){ + rules.map(function( rule ){ + this.addRule( rule, group ); + }, this); + }, + + addRule: function( rule, group ){ + + // defaults + group = group || 0; + + // vars + var groupArray; + + // get group + if( this.hasGroup(group) ) { + groupArray = this.getGroup(group); + } else { + groupArray = this.addGroup(); + } + + // instantiate + var condition = acf.newCondition( rule, this ); + + // bail ealry if condition failed (field did not exist) + if( !condition ) { + return false; + } + + // add rule + groupArray.push(condition); + }, + + hasRule: function(){ + + }, + + getRule: function( rule, group ){ + + // defaults + rule = rule || 0; + group = group || 0; + + return this.data.groups[ group ][ rule ]; + }, + + removeRule: function(){ + + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-accordion.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-accordion.js new file mode 100644 index 0000000..0f10ba5 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-accordion.js @@ -0,0 +1,232 @@ +(function($, undefined){ + + var i = 0; + + var Field = acf.Field.extend({ + + type: 'accordion', + + wait: '', + + $control: function(){ + return this.$('.acf-fields:first'); + }, + + initialize: function(){ + + // bail early if is cell + if( this.$el.is('td') ) return; + + // enpoint + if( this.get('endpoint') ) { + return this.remove(); + } + + // vars + var $field = this.$el; + var $label = this.$labelWrap() + var $input = this.$inputWrap(); + var $wrap = this.$control(); + var $instructions = $input.children('.description'); + + // force description into label + if( $instructions.length ) { + $label.append( $instructions ); + } + + // table + if( this.$el.is('tr') ) { + + // vars + var $table = this.$el.closest('table'); + var $newLabel = $('
'); + var $newInput = $('
'); + var $newTable = $(''); + var $newWrap = $(''); + + // dom + $newLabel.append( $label.html() ); + $newTable.append( $newWrap ); + $newInput.append( $newTable ); + $input.append( $newLabel ); + $input.append( $newInput ); + + // modify + $label.remove(); + $wrap.remove(); + $input.attr('colspan', 2); + + // update vars + $label = $newLabel; + $input = $newInput; + $wrap = $newWrap; + } + + // add classes + $field.addClass('acf-accordion'); + $label.addClass('acf-accordion-title'); + $input.addClass('acf-accordion-content'); + + // index + i++; + + // multi-expand + if( this.get('multi_expand') ) { + $field.attr('multi-expand', 1); + } + + // open + var order = acf.getPreference('this.accordions') || []; + if( order[i-1] !== undefined ) { + this.set('open', order[i-1]); + } + + if( this.get('open') ) { + $field.addClass('-open'); + $input.css('display', 'block'); // needed for accordion to close smoothly + } + + // add icon + $label.prepend( accordionManager.iconHtml({ open: this.get('open') }) ); + + // classes + // - remove 'inside' which is a #poststuff WP class + var $parent = $field.parent(); + $wrap.addClass( $parent.hasClass('-left') ? '-left' : '' ); + $wrap.addClass( $parent.hasClass('-clear') ? '-clear' : '' ); + + // append + $wrap.append( $field.nextUntil('.acf-field-accordion', '.acf-field') ); + + // clean up + $wrap.removeAttr('data-open data-multi_expand data-endpoint'); + }, + + }); + + acf.registerFieldType( Field ); + + + /** + * accordionManager + * + * Events manager for the acf accordion + * + * @date 14/2/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var accordionManager = new acf.Model({ + + actions: { + 'unload': 'onUnload' + }, + + events: { + 'click .acf-accordion-title': 'onClick', + 'invalidField .acf-accordion': 'onInvalidField' + }, + + isOpen: function( $el ) { + return $el.hasClass('-open'); + }, + + toggle: function( $el ){ + if( this.isOpen($el) ) { + this.close( $el ); + } else { + this.open( $el ); + } + }, + + iconHtml: function( props ){ + + // Determine icon. + //if( acf.isGutenberg() ) { + // var icon = props.open ? 'arrow-up-alt2' : 'arrow-down-alt2'; + //} else { + var icon = props.open ? 'arrow-down' : 'arrow-right'; + //} + + // Return HTML. + return ''; + }, + + open: function( $el ){ + + // open + $el.find('.acf-accordion-content:first').slideDown().css('display', 'block'); + $el.find('.acf-accordion-icon:first').replaceWith( this.iconHtml({ open: true }) ); + $el.addClass('-open'); + + // action + acf.doAction('show', $el); + + // close siblings + if( !$el.attr('multi-expand') ) { + $el.siblings('.acf-accordion.-open').each(function(){ + accordionManager.close( $(this) ); + }); + } + }, + + close: function( $el ){ + + // close + $el.find('.acf-accordion-content:first').slideUp(); + $el.find('.acf-accordion-icon:first').replaceWith( this.iconHtml({ open: false }) ); + $el.removeClass('-open'); + + // action + acf.doAction('hide', $el); + }, + + onClick: function( e, $el ){ + + // prevent Defailt + e.preventDefault(); + + // open close + this.toggle( $el.parent() ); + + }, + + onInvalidField: function( e, $el ){ + + // bail early if already focused + if( this.busy ) { + return; + } + + // disable functionality for 1sec (allow next validation to work) + this.busy = true; + this.setTimeout(function(){ + this.busy = false; + }, 1000); + + // open accordion + this.open( $el ); + }, + + onUnload: function( e ){ + + // vars + var order = []; + + // loop + $('.acf-accordion').each(function(){ + var open = $(this).hasClass('-open') ? 1 : 0; + order.push(open); + }); + + // set + if( order.length ) { + acf.setPreference('this.accordions', order); + } + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-button-group.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-button-group.js new file mode 100644 index 0000000..13f178d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-button-group.js @@ -0,0 +1,45 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'button_group', + + events: { + 'click input[type="radio"]': 'onClick' + }, + + $control: function(){ + return this.$('.acf-button-group'); + }, + + $input: function(){ + return this.$('input:checked'); + }, + + setValue: function( val ){ + this.$('input[value="' + val + '"]').prop('checked', true).trigger('change'); + }, + + onClick: function( e, $el ){ + + // vars + var $label = $el.parent('label'); + var selected = $label.hasClass('selected'); + + // remove previous selected + this.$('.selected').removeClass('selected'); + + // add active class + $label.addClass('selected'); + + // allow null + if( this.get('allow_null') && selected ) { + $label.removeClass('selected'); + $el.prop('checked', false).trigger('change'); + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-checkbox.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-checkbox.js new file mode 100644 index 0000000..d8778d9 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-checkbox.js @@ -0,0 +1,97 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'checkbox', + + events: { + 'change input': 'onChange', + 'click .acf-add-checkbox': 'onClickAdd', + 'click .acf-checkbox-toggle': 'onClickToggle', + 'click .acf-checkbox-custom': 'onClickCustom' + }, + + $control: function(){ + return this.$('.acf-checkbox-list'); + }, + + $toggle: function(){ + return this.$('.acf-checkbox-toggle'); + }, + + $input: function(){ + return this.$('input[type="hidden"]'); + }, + + $inputs: function(){ + return this.$('input[type="checkbox"]').not('.acf-checkbox-toggle'); + }, + + getValue: function(){ + var val = []; + this.$(':checked').each(function(){ + val.push( $(this).val() ); + }); + return val.length ? val : false; + }, + + onChange: function( e, $el ){ + + // vars + var checked = $el.prop('checked'); + var $toggle = this.$toggle(); + + // selected + if( checked ) { + $el.parent().addClass('selected'); + } else { + $el.parent().removeClass('selected'); + } + + // determine if all inputs are checked + if( $toggle.length ) { + var $inputs = this.$inputs(); + + // all checked + if( $inputs.not(':checked').length == 0 ) { + $toggle.prop('checked', true); + } else { + $toggle.prop('checked', false); + } + } + }, + + onClickAdd: function( e, $el ){ + var html = '
  • '; + $el.parent('li').before( html ); + }, + + onClickToggle: function( e, $el ){ + var checked = $el.prop('checked'); + var $inputs = this.$inputs(); + $inputs.prop('checked', checked); + }, + + onClickCustom: function( e, $el ){ + var checked = $el.prop('checked'); + var $text = $el.next('input[type="text"]'); + + // checked + if( checked ) { + $text.prop('disabled', false); + + // not checked + } else { + $text.prop('disabled', true); + + // remove + if( $text.val() == '' ) { + $el.parent('li').remove(); + } + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-color-picker.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-color-picker.js new file mode 100644 index 0000000..7d59719 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-color-picker.js @@ -0,0 +1,64 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'color_picker', + + wait: 'load', + + $control: function(){ + return this.$('.acf-color-picker'); + }, + + $input: function(){ + return this.$('input[type="hidden"]'); + }, + + $inputText: function(){ + return this.$('input[type="text"]'); + }, + + setValue: function( val ){ + + // update input (with change) + acf.val( this.$input(), val ); + + // update iris + this.$inputText().iris('color', val); + }, + + initialize: function(){ + + // vars + var $input = this.$input(); + var $inputText = this.$inputText(); + + // event + var onChange = function( e ){ + + // timeout is required to ensure the $input val is correct + setTimeout(function(){ + acf.val( $input, $inputText.val() ); + }, 1); + } + + // args + var args = { + defaultColor: false, + palettes: true, + hide: true, + change: onChange, + clear: onChange + }; + + // filter + var args = acf.applyFilters('color_picker_args', args, this); + + // initialize + $inputText.wpColorPicker( args ); + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-date-picker.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-date-picker.js new file mode 100644 index 0000000..7efdb60 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-date-picker.js @@ -0,0 +1,157 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'date_picker', + + events: { + 'blur input[type="text"]': 'onBlur' + }, + + $control: function(){ + return this.$('.acf-date-picker'); + }, + + $input: function(){ + return this.$('input[type="hidden"]'); + }, + + $inputText: function(){ + return this.$('input[type="text"]'); + }, + + initialize: function(){ + + // save_format: compatibility with ACF < 5.0.0 + if( this.has('save_format') ) { + return this.initializeCompatibility(); + } + + // vars + var $input = this.$input(); + var $inputText = this.$inputText(); + + // args + var args = { + dateFormat: this.get('date_format'), + altField: $input, + altFormat: 'yymmdd', + changeYear: true, + yearRange: "-100:+100", + changeMonth: true, + showButtonPanel: true, + firstDay: this.get('first_day') + }; + + // filter + args = acf.applyFilters('date_picker_args', args, this); + + // add date picker + acf.newDatePicker( $inputText, args ); + + // action + acf.doAction('date_picker_init', $inputText, args, this); + + }, + + initializeCompatibility: function(){ + + // vars + var $input = this.$input(); + var $inputText = this.$inputText(); + + // get and set value from alt field + $inputText.val( $input.val() ); + + // args + var args = { + dateFormat: this.get('date_format'), + altField: $input, + altFormat: this.get('save_format'), + changeYear: true, + yearRange: "-100:+100", + changeMonth: true, + showButtonPanel: true, + firstDay: this.get('first_day') + }; + + // filter for 3rd party customization + args = acf.applyFilters('date_picker_args', args, this); + + // backup + var dateFormat = args.dateFormat; + + // change args.dateFormat + args.dateFormat = this.get('save_format'); + + // add date picker + acf.newDatePicker( $inputText, args ); + + // now change the format back to how it should be. + $inputText.datepicker( 'option', 'dateFormat', dateFormat ); + + // action for 3rd party customization + acf.doAction('date_picker_init', $inputText, args, this); + }, + + onBlur: function(){ + if( !this.$inputText().val() ) { + acf.val( this.$input(), '' ); + } + } + }); + + acf.registerFieldType( Field ); + + + // manager + var datePickerManager = new acf.Model({ + priority: 5, + wait: 'ready', + initialize: function(){ + + // vars + var locale = acf.get('locale'); + var rtl = acf.get('rtl'); + var l10n = acf.get('datePickerL10n'); + + // bail ealry if no l10n + if( !l10n ) { + return false; + } + + // bail ealry if no datepicker library + if( typeof $.datepicker === 'undefined' ) { + return false; + } + + // rtl + l10n.isRTL = rtl; + + // append + $.datepicker.regional[ locale ] = l10n; + $.datepicker.setDefaults(l10n); + } + }); + + // add + acf.newDatePicker = function( $input, args ){ + + // bail ealry if no datepicker library + if( typeof $.datepicker === 'undefined' ) { + return false; + } + + // defaults + args = args || {}; + + // initialize + $input.datepicker( args ); + + // wrap the datepicker (only if it hasn't already been wrapped) + if( $('body > #ui-datepicker-div').exists() ) { + $('body > #ui-datepicker-div').wrap('
    '); + } + }; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-date-time-picker.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-date-time-picker.js new file mode 100644 index 0000000..8cae782 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-date-time-picker.js @@ -0,0 +1,99 @@ +(function($, undefined){ + + var Field = acf.models.DatePickerField.extend({ + + type: 'date_time_picker', + + $control: function(){ + return this.$('.acf-date-time-picker'); + }, + + initialize: function(){ + + // vars + var $input = this.$input(); + var $inputText = this.$inputText(); + + // args + var args = { + dateFormat: this.get('date_format'), + timeFormat: this.get('time_format'), + altField: $input, + altFieldTimeOnly: false, + altFormat: 'yy-mm-dd', + altTimeFormat: 'HH:mm:ss', + changeYear: true, + yearRange: "-100:+100", + changeMonth: true, + showButtonPanel: true, + firstDay: this.get('first_day'), + controlType: 'select', + oneLine: true + }; + + // filter + args = acf.applyFilters('date_time_picker_args', args, this); + + // add date time picker + acf.newDateTimePicker( $inputText, args ); + + // action + acf.doAction('date_time_picker_init', $inputText, args, this); + } + }); + + acf.registerFieldType( Field ); + + + // manager + var dateTimePickerManager = new acf.Model({ + priority: 5, + wait: 'ready', + initialize: function(){ + + // vars + var locale = acf.get('locale'); + var rtl = acf.get('rtl'); + var l10n = acf.get('dateTimePickerL10n'); + + // bail ealry if no l10n + if( !l10n ) { + return false; + } + + // bail ealry if no datepicker library + if( typeof $.timepicker === 'undefined' ) { + return false; + } + + // rtl + l10n.isRTL = rtl; + + // append + $.timepicker.regional[ locale ] = l10n; + $.timepicker.setDefaults(l10n); + } + }); + + + // add + acf.newDateTimePicker = function( $input, args ){ + + // bail ealry if no datepicker library + if( typeof $.timepicker === 'undefined' ) { + return false; + } + + // defaults + args = args || {}; + + // initialize + $input.datetimepicker( args ); + + // wrap the datepicker (only if it hasn't already been wrapped) + if( $('body > #ui-datepicker-div').exists() ) { + $('body > #ui-datepicker-div').wrap('
    '); + } + }; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-file.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-file.js new file mode 100644 index 0000000..476764b --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-file.js @@ -0,0 +1,120 @@ +(function($, undefined){ + + var Field = acf.models.ImageField.extend({ + + type: 'file', + + $control: function(){ + return this.$('.acf-file-uploader'); + }, + + $input: function(){ + return this.$('input[type="hidden"]'); + }, + + validateAttachment: function( attachment ){ + + // defaults + attachment = attachment || {}; + + // WP attachment + if( attachment.id !== undefined ) { + attachment = attachment.attributes; + } + + // args + attachment = acf.parseArgs(attachment, { + url: '', + alt: '', + title: '', + filename: '', + filesizeHumanReadable: '', + icon: '/wp-includes/images/media/default.png' + }); + + // return + return attachment; + }, + + render: function( attachment ){ + + // vars + attachment = this.validateAttachment( attachment ); + + // update image + this.$('img').attr({ + src: attachment.icon, + alt: attachment.alt, + title: attachment.title + }); + + // update elements + this.$('[data-name="title"]').text( attachment.title ); + this.$('[data-name="filename"]').text( attachment.filename ).attr( 'href', attachment.url ); + this.$('[data-name="filesize"]').text( attachment.filesizeHumanReadable ); + + // vars + var val = attachment.id || ''; + + // update val + acf.val( this.$input(), val ); + + // update class + if( val ) { + this.$control().addClass('has-value'); + } else { + this.$control().removeClass('has-value'); + } + }, + + selectAttachment: function(){ + + // vars + var parent = this.parent(); + var multiple = (parent && parent.get('type') === 'repeater'); + + // new frame + var frame = acf.newMediaPopup({ + mode: 'select', + title: acf.__('Select File'), + field: this.get('key'), + multiple: multiple, + library: this.get('library'), + allowedTypes: this.get('mime_types'), + select: $.proxy(function( attachment, i ) { + if( i > 0 ) { + this.append( attachment, parent ); + } else { + this.render( attachment ); + } + }, this) + }); + }, + + editAttachment: function(){ + + // vars + var val = this.val(); + + // bail early if no val + if( !val ) { + return false; + } + + // popup + var frame = acf.newMediaPopup({ + mode: 'edit', + title: acf.__('Edit File'), + button: acf.__('Update File'), + attachment: val, + field: this.get('key'), + select: $.proxy(function( attachment, i ) { + this.render( attachment ); + }, this) + }); + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-google-map.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-google-map.js new file mode 100644 index 0000000..a04cc70 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-google-map.js @@ -0,0 +1,553 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'google_map', + + map: false, + + wait: 'load', + + events: { + 'click a[data-name="clear"]': 'onClickClear', + 'click a[data-name="locate"]': 'onClickLocate', + 'click a[data-name="search"]': 'onClickSearch', + 'keydown .search': 'onKeydownSearch', + 'keyup .search': 'onKeyupSearch', + 'focus .search': 'onFocusSearch', + 'blur .search': 'onBlurSearch', + 'showField': 'onShow' + }, + + $control: function(){ + return this.$('.acf-google-map'); + }, + + $input: function( name ){ + return this.$('input[data-name="' + (name || 'address') + '"]'); + }, + + $search: function(){ + return this.$('.search'); + }, + + $canvas: function(){ + return this.$('.canvas'); + }, + + addClass: function( name ){ + this.$control().addClass( name ); + }, + + removeClass: function( name ){ + this.$control().removeClass( name ); + }, + + getValue: function(){ + + // defaults + var val = { + lat: '', + lng: '', + address: '' + }; + + // loop + this.$('input[type="hidden"]').each(function(){ + val[ $(this).data('name') ] = $(this).val(); + }); + + // return false if no lat/lng + if( !val.lat || !val.lng ) { + val = false; + } + + // return + return val; + }, + + setValue: function( val ){ + + // defaults + val = acf.parseArgs(val, { + lat: '', + lng: '', + address: '' + }); + + // loop + for( var name in val ) { + acf.val( this.$input(name), val[name] ); + } + + // return false if no lat/lng + if( !val.lat || !val.lng ) { + val = false; + } + + // render + this.renderVal( val ); + + // action + var latLng = this.newLatLng( val.lat, val.lng ); + acf.doAction('google_map_change', latLng, this.map, this); + }, + + renderVal: function( val ){ + + // has value + if( val ) { + this.addClass('-value'); + this.setPosition( val.lat, val.lng ); + this.map.marker.setVisible( true ); + + // no value + } else { + this.removeClass('-value'); + this.map.marker.setVisible( false ); + } + + // search + this.$search().val( val.address ); + }, + + setPosition: function( lat, lng ){ + + // vars + var latLng = this.newLatLng( lat, lng ); + + // update marker + this.map.marker.setPosition( latLng ); + + // show marker + this.map.marker.setVisible( true ); + + // center + this.center(); + + // return + return this; + }, + + center: function(){ + + // vars + var position = this.map.marker.getPosition(); + var lat = this.get('lat'); + var lng = this.get('lng'); + + // if marker exists, center on the marker + if( position ) { + lat = position.lat(); + lng = position.lng(); + } + + // latlng + var latLng = this.newLatLng( lat, lng ); + + // set center of map + this.map.setCenter( latLng ); + }, + + getSearchVal: function(){ + return this.$search().val(); + }, + + initialize: function(){ + + // Ensure Google API is loaded and then initialize map. + withAPI( this.initializeMap.bind(this) ); + }, + + newLatLng: function( lat, lng ){ + return new google.maps.LatLng( parseFloat(lat), parseFloat(lng) ); + }, + + initializeMap: function(){ + + // vars + var zoom = this.get('zoom'); + var lat = this.get('lat'); + var lng = this.get('lng'); + + // Create Map. + var mapArgs = { + scrollwheel: false, + zoom: parseInt( zoom ), + center: this.newLatLng(lat, lng), + mapTypeId: google.maps.MapTypeId.ROADMAP, + marker: { + draggable: true, + raiseOnDrag: true + }, + autocomplete: {} + }; + mapArgs = acf.applyFilters('google_map_args', mapArgs, this); + var map = new google.maps.Map( this.$canvas()[0], mapArgs ); + + // Create Marker. + var markerArgs = acf.parseArgs(mapArgs.marker, { + draggable: true, + raiseOnDrag: true, + map: map + }); + markerArgs = acf.applyFilters('google_map_marker_args', markerArgs, this); + var marker = new google.maps.Marker( markerArgs ); + + // Maybe Create Autocomplete. + var autocomplete = false; + if( acf.isset(google, 'maps', 'places', 'Autocomplete') ) { + var autocompleteArgs = mapArgs.autocomplete || {}; + autocompleteArgs = acf.applyFilters('google_map_autocomplete_args', autocompleteArgs, this); + autocomplete = new google.maps.places.Autocomplete( this.$search()[0], autocompleteArgs ); + autocomplete.bindTo('bounds', map); + } + + // Add map events. + this.addMapEvents( this, map, marker, autocomplete ); + + // Append references. + map.acf = this; + map.marker = marker; + map.autocomplete = autocomplete; + this.map = map; + + // action for 3rd party customization + acf.doAction('google_map_init', map, marker, this); + + // set position + var val = this.getValue(); + this.renderVal( val ); + }, + + addMapEvents: function( field, map, marker, autocomplete ){ + + // Click map. + google.maps.event.addListener( map, 'click', function( e ) { + + // vars + var lat = e.latLng.lat(); + var lng = e.latLng.lng(); + + // search + field.searchPosition( lat, lng ); + }); + + // Drag marker. + google.maps.event.addListener( marker, 'dragend', function(){ + + // vars + var position = this.getPosition(); + var lat = position.lat(); + var lng = position.lng(); + + // search + field.searchPosition( lat, lng ); + }); + + // Autocomplete search. + if( autocomplete ) { + + // autocomplete event place_changed is triggered each time the input changes + // customize the place object with the current "search value" to allow users controll over the address text + google.maps.event.addListener(autocomplete, 'place_changed', function() { + var place = this.getPlace(); + place.address = field.getSearchVal(); + field.setPlace( place ); + }); + } + }, + + searchPosition: function( lat, lng ){ + + // vars + var latLng = this.newLatLng( lat, lng ); + var $wrap = this.$control(); + + // set position + this.setPosition( lat, lng ); + + // add class + $wrap.addClass('-loading'); + + // callback + var callback = $.proxy(function( results, status ){ + + // remove class + $wrap.removeClass('-loading'); + + // vars + var address = ''; + + // validate + if( status != google.maps.GeocoderStatus.OK ) { + console.log('Geocoder failed due to: ' + status); + } else if( !results[0] ) { + console.log('No results found'); + } else { + address = results[0].formatted_address; + } + + // update val + this.val({ + lat: lat, + lng: lng, + address: address + }); + + }, this); + + // query + geocoder.geocode({ 'latLng' : latLng }, callback); + }, + + setPlace: function( place ){ + + // bail if no place + if( !place ) return this; + + // search name if no geometry + // - possible when hitting enter in search address + if( place.name && !place.geometry ) { + this.searchAddress(place.name); + return this; + } + + // vars + var lat = place.geometry.location.lat(); + var lng = place.geometry.location.lng(); + var address = place.address || place.formatted_address; + + // update + this.setValue({ + lat: lat, + lng: lng, + address: address + }); + + // return + return this; + }, + + searchAddress: function( address ){ + + // is address latLng? + var latLng = address.split(','); + if( latLng.length == 2 ) { + + // vars + var lat = latLng[0]; + var lng = latLng[1]; + + // check + if( $.isNumeric(lat) && $.isNumeric(lng) ) { + return this.searchPosition( lat, lng ); + } + } + + // vars + var $wrap = this.$control(); + + // add class + $wrap.addClass('-loading'); + + // callback + var callback = this.proxy(function( results, status ){ + + // remove class + $wrap.removeClass('-loading'); + + // vars + var lat = ''; + var lng = ''; + + // validate + if( status != google.maps.GeocoderStatus.OK ) { + console.log('Geocoder failed due to: ' + status); + } else if( !results[0] ) { + console.log('No results found'); + } else { + lat = results[0].geometry.location.lat(); + lng = results[0].geometry.location.lng(); + //address = results[0].formatted_address; + } + + // update val + this.val({ + lat: lat, + lng: lng, + address: address + }); + + //acf.doAction('google_map_geocode_results', results, status, this.$el, this); + + }); + + // query + geocoder.geocode({ 'address' : address }, callback); + }, + + searchLocation: function(){ + + // Try HTML5 geolocation + if( !navigator.geolocation ) { + return alert( acf.__('Sorry, this browser does not support geolocation') ); + } + + // vars + var $wrap = this.$control(); + + // add class + $wrap.addClass('-loading'); + + // callback + var onSuccess = $.proxy(function( results, status ){ + + // remove class + $wrap.removeClass('-loading'); + + // vars + var lat = results.coords.latitude; + var lng = results.coords.longitude; + + // search; + this.searchPosition( lat, lng ); + + }, this); + + var onFailure = function( error ){ + $wrap.removeClass('-loading'); + } + + // try query + navigator.geolocation.getCurrentPosition( onSuccess, onFailure ); + }, + + onClickClear: function( e, $el ){ + this.val( false ); + }, + + onClickLocate: function( e, $el ){ + this.searchLocation(); + }, + + onClickSearch: function( e, $el ){ + this.searchAddress( this.$search().val() ); + }, + + onFocusSearch: function( e, $el ){ + this.removeClass('-value'); + this.onKeyupSearch.apply(this, arguments); + }, + + onBlurSearch: function( e, $el ){ + + // timeout to allow onClickLocate event + this.setTimeout(function(){ + this.removeClass('-search'); + if( $el.val() ) { + this.addClass('-value'); + } + }, 100); + }, + + onKeyupSearch: function( e, $el ){ + if( $el.val() ) { + this.addClass('-search'); + } else { + this.removeClass('-search'); + } + }, + + onKeydownSearch: function( e, $el ){ + + // prevent form from submitting + if( e.which == 13 ) { + e.preventDefault(); + } + }, + + onMousedown: function(){ + +/* + // clear timeout in 1ms (onMousedown will run before onBlurSearch) + this.setTimeout(function(){ + clearTimeout( this.get('timeout') ); + }, 1); +*/ + }, + + onShow: function(){ + + // bail early if no map + // - possible if JS API was not loaded + if( !this.map ) { + return false; + } + + // center map when it is shown (by a tab / collapsed row) + // - use delay to avoid rendering issues with browsers (ensures div is visible) + this.setTimeout( this.center, 10 ); + } + }); + + acf.registerFieldType( Field ); + + // Vars. + var loading = false; + var geocoder = false; + + /** + * withAPI + * + * Loads the Google Maps API library and troggers callback. + * + * @date 28/3/19 + * @since 5.7.14 + * + * @param function callback The callback to excecute. + * @return void + */ + + function withAPI( callback ) { + + // Check if geocoder exists. + if( geocoder ) { + return callback(); + } + + // Check if geocoder API exists. + if( acf.isset(window, 'google', 'maps', 'Geocoder') ) { + geocoder = new google.maps.Geocoder(); + return callback(); + } + + // Geocoder will need to be loaded. Hook callback to action. + acf.addAction( 'google_map_api_loaded', callback ); + + // Bail early if already loading API. + if( loading ) { + return; + } + + // load api + var url = acf.get('google_map_api'); + if( url ) { + + // Set loading status. + loading = true; + + // Load API + $.ajax({ + url: url, + dataType: 'script', + cache: true, + success: function(){ + geocoder = new google.maps.Geocoder(); + acf.doAction('google_map_api_loaded'); + } + }); + } + } + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-image.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-image.js new file mode 100644 index 0000000..36fc71f --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-image.js @@ -0,0 +1,198 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'image', + + $control: function(){ + return this.$('.acf-image-uploader'); + }, + + $input: function(){ + return this.$('input[type="hidden"]'); + }, + + events: { + 'click a[data-name="add"]': 'onClickAdd', + 'click a[data-name="edit"]': 'onClickEdit', + 'click a[data-name="remove"]': 'onClickRemove', + 'change input[type="file"]': 'onChange' + }, + + initialize: function(){ + + // add attribute to form + if( this.get('uploader') === 'basic' ) { + this.$el.closest('form').attr('enctype', 'multipart/form-data'); + } + }, + + validateAttachment: function( attachment ){ + + // defaults + attachment = attachment || {}; + + // WP attachment + if( attachment.id !== undefined ) { + attachment = attachment.attributes; + } + + // args + attachment = acf.parseArgs(attachment, { + url: '', + alt: '', + title: '', + caption: '', + description: '', + width: 0, + height: 0 + }); + + // preview size + var url = acf.isget(attachment, 'sizes', this.get('preview_size'), 'url'); + if( url !== null ) { + attachment.url = url; + } + + // return + return attachment; + }, + + render: function( attachment ){ + + // vars + attachment = this.validateAttachment( attachment ); + + // update image + this.$('img').attr({ + src: attachment.url, + alt: attachment.alt, + title: attachment.title + }); + + // vars + var val = attachment.id || ''; + + // update val + this.val( val ); + + // update class + if( val ) { + this.$control().addClass('has-value'); + } else { + this.$control().removeClass('has-value'); + } + }, + + // create a new repeater row and render value + append: function( attachment, parent ){ + + // create function to find next available field within parent + var getNext = function( field, parent ){ + + // find existing file fields within parent + var fields = acf.getFields({ + key: field.get('key'), + parent: parent.$el + }); + + // find the first field with no value + for( var i = 0; i < fields.length; i++ ) { + if( !fields[i].val() ) { + return fields[i]; + } + } + + // return + return false; + } + + // find existing file fields within parent + var field = getNext( this, parent ); + + // add new row if no available field + if( !field ) { + parent.$('.acf-button:last').trigger('click'); + field = getNext( this, parent ); + } + + // render + if( field ) { + field.render( attachment ); + } + }, + + selectAttachment: function(){ + + // vars + var parent = this.parent(); + var multiple = (parent && parent.get('type') === 'repeater'); + + // new frame + var frame = acf.newMediaPopup({ + mode: 'select', + type: 'image', + title: acf.__('Select Image'), + field: this.get('key'), + multiple: multiple, + library: this.get('library'), + allowedTypes: this.get('mime_types'), + select: $.proxy(function( attachment, i ) { + if( i > 0 ) { + this.append( attachment, parent ); + } else { + this.render( attachment ); + } + }, this) + }); + }, + + editAttachment: function(){ + + // vars + var val = this.val(); + + // bail early if no val + if( !val ) return; + + // popup + var frame = acf.newMediaPopup({ + mode: 'edit', + title: acf.__('Edit Image'), + button: acf.__('Update Image'), + attachment: val, + field: this.get('key'), + select: $.proxy(function( attachment, i ) { + this.render( attachment ); + }, this) + }); + }, + + removeAttachment: function(){ + this.render( false ); + }, + + onClickAdd: function( e, $el ){ + this.selectAttachment(); + }, + + onClickEdit: function( e, $el ){ + this.editAttachment(); + }, + + onClickRemove: function( e, $el ){ + this.removeAttachment(); + }, + + onChange: function( e, $el ){ + var $hiddenInput = this.$input(); + + acf.getFileInputData($el, function( data ){ + $hiddenInput.val( $.param(data) ); + }); + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-link.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-link.js new file mode 100644 index 0000000..4d4fc1d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-link.js @@ -0,0 +1,191 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'link', + + events: { + 'click a[data-name="add"]': 'onClickEdit', + 'click a[data-name="edit"]': 'onClickEdit', + 'click a[data-name="remove"]': 'onClickRemove', + 'change .link-node': 'onChange', + }, + + $control: function(){ + return this.$('.acf-link'); + }, + + $node: function(){ + return this.$('.link-node'); + }, + + getValue: function(){ + + // vars + var $node = this.$node(); + + // return false if empty + if( !$node.attr('href') ) { + return false; + } + + // return + return { + title: $node.html(), + url: $node.attr('href'), + target: $node.attr('target') + }; + }, + + setValue: function( val ){ + + // default + val = acf.parseArgs(val, { + title: '', + url: '', + target: '' + }); + + // vars + var $div = this.$control(); + var $node = this.$node(); + + // remove class + $div.removeClass('-value -external'); + + // add class + if( val.url ) $div.addClass('-value'); + if( val.target === '_blank' ) $div.addClass('-external'); + + // update text + this.$('.link-title').html( val.title ); + this.$('.link-url').attr('href', val.url).html( val.url ); + + // update node + $node.html(val.title); + $node.attr('href', val.url); + $node.attr('target', val.target); + + // update inputs + this.$('.input-title').val( val.title ); + this.$('.input-target').val( val.target ); + this.$('.input-url').val( val.url ).trigger('change'); + }, + + onClickEdit: function( e, $el ){ + acf.wpLink.open( this.$node() ); + }, + + onClickRemove: function( e, $el ){ + this.setValue( false ); + }, + + onChange: function( e, $el ){ + + // get the changed value + var val = this.getValue(); + + // update inputs + this.setValue(val); + } + + }); + + acf.registerFieldType( Field ); + + + // manager + acf.wpLink = new acf.Model({ + + getNodeValue: function(){ + var $node = this.get('node'); + return { + title: $node.html(), + url: $node.attr('href'), + target: $node.attr('target') + }; + }, + + setNodeValue: function( val ){ + var $node = this.get('node'); + $node.html( val.title ); + $node.attr('href', val.url); + $node.attr('target', val.target); + $node.trigger('change'); + }, + + getInputValue: function(){ + return { + title: $('#wp-link-text').val(), + url: $('#wp-link-url').val(), + target: $('#wp-link-target').prop('checked') ? '_blank' : '' + }; + }, + + setInputValue: function( val ){ + $('#wp-link-text').val( val.title ); + $('#wp-link-url').val( val.url ); + $('#wp-link-target').prop('checked', val.target === '_blank' ); + }, + + open: function( $node ){ + + // add events + this.on('wplink-open', 'onOpen'); + this.on('wplink-close', 'onClose'); + + // set node + this.set('node', $node); + + // create textarea + var $textarea = $(''); + $('body').append( $textarea ); + + // vars + var val = this.getNodeValue(); + + // open popup + wpLink.open( 'acf-link-textarea', val.url, val.title, null ); + + }, + + onOpen: function(){ + + // always show title (WP will hide title if empty) + $('#wp-link-wrap').addClass('has-text-field'); + + // set inputs + var val = this.getNodeValue(); + this.setInputValue( val ); + }, + + close: function(){ + wpLink.close(); + }, + + onClose: function(){ + + // bail early if no node + // needed due to WP triggering this event twice + if( !this.has('node') ) { + return false; + } + + // remove events + this.off('wplink-open'); + this.off('wplink-close'); + + // set value + var val = this.getInputValue(); + this.setNodeValue( val ); + + // remove textarea + $('#acf-link-textarea').remove(); + + // reset + this.set('node', null); + + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-oembed.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-oembed.js new file mode 100644 index 0000000..840e1d5 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-oembed.js @@ -0,0 +1,163 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'oembed', + + events: { + 'click [data-name="clear-button"]': 'onClickClear', + 'keypress .input-search': 'onKeypressSearch', + 'keyup .input-search': 'onKeyupSearch', + 'change .input-search': 'onChangeSearch' + }, + + $control: function(){ + return this.$('.acf-oembed'); + }, + + $input: function(){ + return this.$('.input-value'); + }, + + $search: function(){ + return this.$('.input-search'); + }, + + getValue: function(){ + return this.$input().val(); + }, + + getSearchVal: function(){ + return this.$search().val(); + }, + + setValue: function( val ){ + + // class + if( val ) { + this.$control().addClass('has-value'); + } else { + this.$control().removeClass('has-value'); + } + + acf.val( this.$input(), val ); + }, + + showLoading: function( show ){ + acf.showLoading( this.$('.canvas') ); + }, + + hideLoading: function(){ + acf.hideLoading( this.$('.canvas') ); + }, + + maybeSearch: function(){ + + // vars + var prevUrl = this.val(); + var url = this.getSearchVal(); + + // no value + if( !url ) { + return this.clear(); + } + + // fix missing 'http://' - causes the oembed code to error and fail + if( url.substr(0, 4) != 'http' ) { + url = 'http://' + url; + } + + // bail early if no change + if( url === prevUrl ) return; + + // clear existing timeout + var timeout = this.get('timeout'); + if( timeout ) { + clearTimeout( timeout ); + } + + // set new timeout + var callback = $.proxy(this.search, this, url); + this.set('timeout', setTimeout(callback, 300)); + + }, + + search: function( url ){ + + // ajax + var ajaxData = { + action: 'acf/fields/oembed/search', + s: url, + field_key: this.get('key') + }; + + // clear existing timeout + var xhr = this.get('xhr'); + if( xhr ) { + xhr.abort(); + } + + // loading + this.showLoading(); + + // query + var xhr = $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax(ajaxData), + type: 'post', + dataType: 'json', + context: this, + success: function( json ){ + + // error + if( !json || !json.html ) { + json = { + url: false, + html: '' + } + } + + // update vars + this.val( json.url ); + this.$('.canvas-media').html( json.html ); + }, + complete: function(){ + this.hideLoading(); + } + }); + + this.set('xhr', xhr); + }, + + clear: function(){ + this.val(''); + this.$search().val(''); + this.$('.canvas-media').html(''); + }, + + onClickClear: function( e, $el ){ + this.clear(); + }, + + onKeypressSearch: function( e, $el ){ + if( e.which == 13 ) { + e.preventDefault(); + this.maybeSearch(); + } + }, + + onKeyupSearch: function( e, $el ){ + if( $el.val() ) { + this.maybeSearch(); + } + }, + + onChangeSearch: function( e, $el ){ + this.maybeSearch(); + } + + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-page-link.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-page-link.js new file mode 100644 index 0000000..2910455 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-page-link.js @@ -0,0 +1,9 @@ +(function($, undefined){ + + var Field = acf.models.SelectField.extend({ + type: 'page_link', + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-post-object.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-post-object.js new file mode 100644 index 0000000..7704bef --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-post-object.js @@ -0,0 +1,9 @@ +(function($, undefined){ + + var Field = acf.models.SelectField.extend({ + type: 'post_object', + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-radio.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-radio.js new file mode 100644 index 0000000..d51de77 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-radio.js @@ -0,0 +1,68 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'radio', + + events: { + 'click input[type="radio"]': 'onClick', + }, + + $control: function(){ + return this.$('.acf-radio-list'); + }, + + $input: function(){ + return this.$('input:checked'); + }, + + $inputText: function(){ + return this.$('input[type="text"]'); + }, + + getValue: function(){ + var val = this.$input().val(); + if( val === 'other' && this.get('other_choice') ) { + val = this.$inputText().val(); + } + return val; + }, + + onClick: function( e, $el ){ + + // vars + var $label = $el.parent('label'); + var selected = $label.hasClass('selected'); + var val = $el.val(); + + // remove previous selected + this.$('.selected').removeClass('selected'); + + // add active class + $label.addClass('selected'); + + // allow null + if( this.get('allow_null') && selected ) { + $label.removeClass('selected'); + $el.prop('checked', false).trigger('change'); + val = false; + } + + // other + if( this.get('other_choice') ) { + + // enable + if( val === 'other' ) { + this.$inputText().prop('disabled', false); + + // disable + } else { + this.$inputText().prop('disabled', true); + } + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-range.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-range.js new file mode 100644 index 0000000..cf9d416 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-range.js @@ -0,0 +1,42 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'range', + + events: { + 'input input[type="range"]': 'onChange', + 'change input': 'onChange' + }, + + $input: function(){ + return this.$('input[type="range"]'); + }, + + $inputAlt: function(){ + return this.$('input[type="number"]'); + }, + + setValue: function( val ){ + this.busy = true; + + // Update range input (with change). + acf.val( this.$input(), val ); + + // Update alt input (without change). + // Read in input value to inherit min/max validation. + acf.val( this.$inputAlt(), this.$input().val(), true ); + + this.busy = false; + }, + + onChange: function( e, $el ){ + if( !this.busy ) { + this.setValue( $el.val() ); + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-relationship.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-relationship.js new file mode 100644 index 0000000..13d535c --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-relationship.js @@ -0,0 +1,380 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'relationship', + + events: { + 'keypress [data-filter]': 'onKeypressFilter', + 'change [data-filter]': 'onChangeFilter', + 'keyup [data-filter]': 'onChangeFilter', + 'click .choices-list .acf-rel-item': 'onClickAdd', + 'click [data-name="remove_item"]': 'onClickRemove', + 'mouseover': 'onHover' + }, + + $control: function(){ + return this.$('.acf-relationship'); + }, + + $list: function( list ) { + return this.$('.' + list + '-list'); + }, + + $listItems: function( list ) { + return this.$list( list ).find('.acf-rel-item'); + }, + + $listItem: function( list, id ) { + return this.$list( list ).find('.acf-rel-item[data-id="' + id + '"]'); + }, + + getValue: function(){ + var val = []; + this.$listItems('values').each(function(){ + val.push( $(this).data('id') ); + }); + return val.length ? val : false; + }, + + newChoice: function( props ){ + return [ + '
  • ', + '' + props.text + '', + '
  • ' + ].join(''); + }, + + newValue: function( props ){ + return [ + '
  • ', + '', + '' + props.text, + '', + '', + '
  • ' + ].join(''); + }, + + addSortable: function( self ){ + + // sortable + this.$list('values').sortable({ + items: 'li', + forceHelperSize: true, + forcePlaceholderSize: true, + scroll: true, + update: function(){ + self.$input().trigger('change'); + } + }); + }, + + initialize: function(){ + + // scroll + var onScroll = this.proxy(function(e){ + + // bail early if no more results + if( this.get('loading') || !this.get('more') ) { + return; + } + + // Scrolled to bottom + var $list = this.$list('choices'); + var scrollTop = Math.ceil( $list.scrollTop() ); + var scrollHeight = Math.ceil( $list[0].scrollHeight ); + var innerHeight = Math.ceil( $list.innerHeight() ); + var paged = this.get('paged') || 1; + if( (scrollTop + innerHeight) >= scrollHeight ) { + + // update paged + this.set('paged', (paged+1)); + + // fetch + this.fetch(); + } + + }); + + this.$list('choices').scrollTop(0).on('scroll', onScroll); + + // fetch + this.fetch(); + }, + + onHover: function( e ){ + + // only once + $().off(e); + + // add sortable + this.addSortable( this ); + }, + + onKeypressFilter: function( e, $el ){ + + // don't submit form + if( e.which == 13 ) { + e.preventDefault(); + } + }, + + onChangeFilter: function( e, $el ){ + + // vars + var val = $el.val(); + var filter = $el.data('filter'); + + // Bail early if filter has not changed + if( this.get(filter) === val ) { + return; + } + + // update attr + this.set(filter, val); + + // reset paged + this.set('paged', 1); + + // fetch + if( $el.is('select') ) { + this.fetch(); + + // search must go through timeout + } else { + this.maybeFetch(); + } + }, + + onClickAdd: function( e, $el ){ + + // vars + var val = this.val(); + var max = parseInt( this.get('max') ); + + // can be added? + if( $el.hasClass('disabled') ) { + return false; + } + + // validate + if( max > 0 && val && val.length >= max ) { + + // add notice + this.showNotice({ + text: acf.__('Maximum values reached ( {max} values )').replace('{max}', max), + type: 'warning' + }); + return false; + } + + // disable + $el.addClass('disabled'); + + // add + var html = this.newValue({ + id: $el.data('id'), + text: $el.html() + }); + this.$list('values').append( html ) + + // trigger change + this.$input().trigger('change'); + }, + + onClickRemove: function( e, $el ){ + + // Prevent default here because generic handler wont be triggered. + e.preventDefault(); + + // vars + var $span = $el.parent(); + var $li = $span.parent(); + var id = $span.data('id'); + + // remove value + $li.remove(); + + // show choice + this.$listItem('choices', id).removeClass('disabled'); + + // trigger change + this.$input().trigger('change'); + }, + + maybeFetch: function(){ + + // vars + var timeout = this.get('timeout'); + + // abort timeout + if( timeout ) { + clearTimeout( timeout ); + } + + // fetch + timeout = this.setTimeout(this.fetch, 300); + this.set('timeout', timeout); + }, + + getAjaxData: function(){ + + // load data based on element attributes + var ajaxData = this.$control().data(); + for( var name in ajaxData ) { + ajaxData[ name ] = this.get( name ); + } + + // extra + ajaxData.action = 'acf/fields/relationship/query'; + ajaxData.field_key = this.get('key'); + + // Filter. + ajaxData = acf.applyFilters( 'relationship_ajax_data', ajaxData, this ); + + // return + return ajaxData; + }, + + fetch: function(){ + + // abort XHR if this field is already loading AJAX data + var xhr = this.get('xhr'); + if( xhr ) { + xhr.abort(); + } + + // add to this.o + var ajaxData = this.getAjaxData(); + + // clear html if is new query + var $choiceslist = this.$list( 'choices' ); + if( ajaxData.paged == 1 ) { + $choiceslist.html(''); + } + + // loading + var $loading = $('
  • ' + acf.__('Loading') + '
  • '); + $choiceslist.append($loading); + this.set('loading', true); + + // callback + var onComplete = function(){ + this.set('loading', false); + $loading.remove(); + }; + + var onSuccess = function( json ){ + + // no results + if( !json || !json.results || !json.results.length ) { + + // prevent pagination + this.set('more', false); + + // add message + if( this.get('paged') == 1 ) { + this.$list('choices').append('
  • ' + acf.__('No matches found') + '
  • '); + } + + // return + return; + } + + // set more (allows pagination scroll) + this.set('more', json.more ); + + // get new results + var html = this.walkChoices(json.results); + var $html = $( html ); + + // apply .disabled to left li's + var val = this.val(); + if( val && val.length ) { + val.map(function( id ){ + $html.find('.acf-rel-item[data-id="' + id + '"]').addClass('disabled'); + }); + } + + // append + $choiceslist.append( $html ); + + // merge together groups + var $prevLabel = false; + var $prevList = false; + + $choiceslist.find('.acf-rel-label').each(function(){ + + var $label = $(this); + var $list = $label.siblings('ul'); + + if( $prevLabel && $prevLabel.text() == $label.text() ) { + $prevList.append( $list.children() ); + $(this).parent().remove(); + return; + } + + // update vars + $prevLabel = $label; + $prevList = $list; + }); + }; + + // get results + var xhr = $.ajax({ + url: acf.get('ajaxurl'), + dataType: 'json', + type: 'post', + data: acf.prepareForAjax(ajaxData), + context: this, + success: onSuccess, + complete: onComplete + }); + + // set + this.set('xhr', xhr); + }, + + walkChoices: function( data ){ + + // walker + var walk = function( data ){ + + // vars + var html = ''; + + // is array + if( $.isArray(data) ) { + data.map(function(item){ + html += walk( item ); + }); + + // is item + } else if( $.isPlainObject(data) ) { + + // group + if( data.children !== undefined ) { + + html += '
  • ' + data.text + '
      '; + html += walk( data.children ); + html += '
  • '; + + // single + } else { + html += '
  • ' + data.text + '
  • '; + } + } + + // return + return html; + }; + + return walk( data ); + } + + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-select.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-select.js new file mode 100644 index 0000000..cb555c6 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-select.js @@ -0,0 +1,57 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'select', + + select2: false, + + wait: 'load', + + events: { + 'removeField': 'onRemove' + }, + + $input: function(){ + return this.$('select'); + }, + + initialize: function(){ + + // vars + var $select = this.$input(); + + // inherit data + this.inherit( $select ); + + // select2 + if( this.get('ui') ) { + + // populate ajax_data (allowing custom attribute to already exist) + var ajaxAction = this.get('ajax_action'); + if( !ajaxAction ) { + ajaxAction = 'acf/fields/' + this.get('type') + '/query'; + } + + // select2 + this.select2 = acf.newSelect2($select, { + field: this, + ajax: this.get('ajax'), + multiple: this.get('multiple'), + placeholder: this.get('placeholder'), + allowNull: this.get('allow_null'), + ajaxAction: ajaxAction, + }); + } + }, + + onRemove: function(){ + if( this.select2 ) { + this.select2.destroy(); + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-tab.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-tab.js new file mode 100644 index 0000000..8483f1b --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-tab.js @@ -0,0 +1,505 @@ +(function($, undefined){ + + // vars + var CONTEXT = 'tab'; + + var Field = acf.Field.extend({ + + type: 'tab', + + wait: '', + + tabs: false, + + tab: false, + + findFields: function(){ + return this.$el.nextUntil('.acf-field-tab', '.acf-field'); + }, + + getFields: function(){ + return acf.getFields( this.findFields() ); + }, + + findTabs: function(){ + return this.$el.prevAll('.acf-tab-wrap:first'); + }, + + findTab: function(){ + return this.$('.acf-tab-button'); + }, + + initialize: function(){ + + // bail early if is td + if( this.$el.is('td') ) { + this.events = {}; + return false; + } + + // vars + var $tabs = this.findTabs(); + var $tab = this.findTab(); + var settings = acf.parseArgs($tab.data(), { + endpoint: false, + placement: '', + before: this.$el + }); + + // create wrap + if( !$tabs.length || settings.endpoint ) { + this.tabs = new Tabs( settings ); + } else { + this.tabs = $tabs.data('acf'); + } + + // add tab + this.tab = this.tabs.addTab($tab, this); + }, + + isActive: function(){ + return this.tab.isActive(); + }, + + showFields: function(){ + + // show fields + this.getFields().map(function( field ){ + field.show( this.cid, CONTEXT ); + field.hiddenByTab = false; + }, this); + + }, + + hideFields: function(){ + + // hide fields + this.getFields().map(function( field ){ + field.hide( this.cid, CONTEXT ); + field.hiddenByTab = this.tab; + }, this); + + }, + + show: function( lockKey ){ + + // show field and store result + var visible = acf.Field.prototype.show.apply(this, arguments); + + // check if now visible + if( visible ) { + + // show tab + this.tab.show(); + + // check active tabs + this.tabs.refresh(); + } + + // return + return visible; + }, + + hide: function( lockKey ){ + + // hide field and store result + var hidden = acf.Field.prototype.hide.apply(this, arguments); + + // check if now hidden + if( hidden ) { + + // hide tab + this.tab.hide(); + + // reset tabs if this was active + if( this.isActive() ) { + this.tabs.reset(); + } + } + + // return + return hidden; + }, + + enable: function( lockKey ){ + + // enable fields + this.getFields().map(function( field ){ + field.enable( CONTEXT ); + }); + }, + + disable: function( lockKey ){ + + // disable fields + this.getFields().map(function( field ){ + field.disable( CONTEXT ); + }); + } + }); + + acf.registerFieldType( Field ); + + + /** + * tabs + * + * description + * + * @date 8/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var i = 0; + var Tabs = acf.Model.extend({ + + tabs: [], + + active: false, + + actions: { + 'refresh': 'onRefresh' + }, + + data: { + before: false, + placement: 'top', + index: 0, + initialized: false, + }, + + setup: function( settings ){ + + // data + $.extend(this.data, settings); + + // define this prop to avoid scope issues + this.tabs = []; + this.active = false; + + // vars + var placement = this.get('placement'); + var $before = this.get('before'); + var $parent = $before.parent(); + + // add sidebar for left placement + if( placement == 'left' && $parent.hasClass('acf-fields') ) { + $parent.addClass('-sidebar'); + } + + // create wrap + if( $before.is('tr') ) { + this.$el = $('
    '); + } else { + this.$el = $('
      '); + } + + // append + $before.before( this.$el ); + + // set index + this.set('index', i, true); + i++; + }, + + initializeTabs: function(){ + + // find first visible tab + var tab = this.getVisible().shift(); + + // remember previous tab state + var order = acf.getPreference('this.tabs') || []; + var groupIndex = this.get('index'); + var tabIndex = order[ groupIndex ]; + + if( this.tabs[ tabIndex ] && this.tabs[ tabIndex ].isVisible() ) { + tab = this.tabs[ tabIndex ]; + } + + // select + if( tab ) { + this.selectTab( tab ); + } else { + this.closeTabs(); + } + + // set local variable used by tabsManager + this.set('initialized', true); + }, + + getVisible: function(){ + return this.tabs.filter(function( tab ){ + return tab.isVisible(); + }); + }, + + getActive: function(){ + return this.active; + }, + + setActive: function( tab ){ + return this.active = tab; + }, + + hasActive: function(){ + return (this.active !== false); + }, + + isActive: function( tab ){ + var active = this.getActive(); + return (active && active.cid === tab.cid); + }, + + closeActive: function(){ + if( this.hasActive() ) { + this.closeTab( this.getActive() ); + } + }, + + openTab: function( tab ){ + + // close existing tab + this.closeActive(); + + // open + tab.open(); + + // set active + this.setActive( tab ); + }, + + closeTab: function( tab ){ + + // close + tab.close(); + + // set active + this.setActive( false ); + }, + + closeTabs: function(){ + this.tabs.map( this.closeTab, this ); + }, + + selectTab: function( tab ){ + + // close other tabs + this.tabs.map(function( t ){ + if( tab.cid !== t.cid ) { + this.closeTab( t ); + } + }, this); + + // open + this.openTab( tab ); + + }, + + addTab: function( $a, field ){ + + // create
    • + var $li = $('
    • '); + + // append + $li.append( $a ); + + // append + this.$('ul').append( $li ); + + // initialize + var tab = new Tab({ + $el: $li, + field: field, + group: this, + }); + + // store + this.tabs.push( tab ); + + // return + return tab; + }, + + reset: function(){ + + // close existing tab + this.closeActive(); + + // find and active a tab + return this.refresh(); + }, + + refresh: function(){ + + // bail early if active already exists + if( this.hasActive() ) { + return false; + } + + // find next active tab + var tab = this.getVisible().shift(); + + // open tab + if( tab ) { + this.openTab( tab ); + } + + // return + return tab; + }, + + onRefresh: function(){ + + // only for left placements + if( this.get('placement') !== 'left' ) { + return; + } + + // vars + var $parent = this.$el.parent(); + var $list = this.$el.children('ul'); + var attribute = $parent.is('td') ? 'height' : 'min-height'; + + // find height (minus 1 for border-bottom) + var height = $list.position().top + $list.outerHeight(true) - 1; + + // add css + $parent.css(attribute, height); + } + }); + + var Tab = acf.Model.extend({ + + group: false, + + field: false, + + events: { + 'click a': 'onClick' + }, + + index: function(){ + return this.$el.index(); + }, + + isVisible: function(){ + return acf.isVisible( this.$el ); + }, + + isActive: function(){ + return this.$el.hasClass('active'); + }, + + open: function(){ + + // add class + this.$el.addClass('active'); + + // show field + this.field.showFields(); + }, + + close: function(){ + + // remove class + this.$el.removeClass('active'); + + // hide field + this.field.hideFields(); + }, + + onClick: function( e, $el ){ + + // prevent default + e.preventDefault(); + + // toggle + this.toggle(); + }, + + toggle: function(){ + + // bail early if already active + if( this.isActive() ) { + return; + } + + // toggle this tab + this.group.openTab( this ); + } + }); + + var tabsManager = new acf.Model({ + + priority: 50, + + actions: { + 'prepare': 'render', + 'append': 'render', + 'unload': 'onUnload', + 'invalid_field': 'onInvalidField' + }, + + findTabs: function(){ + return $('.acf-tab-wrap'); + }, + + getTabs: function(){ + return acf.getInstances( this.findTabs() ); + }, + + render: function( $el ){ + this.getTabs().map(function( tabs ){ + if( !tabs.get('initialized') ) { + tabs.initializeTabs(); + } + }); + }, + + onInvalidField: function( field ){ + + // bail early if busy + if( this.busy ) { + return; + } + + // ignore if not hidden by tab + if( !field.hiddenByTab ) { + return; + } + + // toggle tab + field.hiddenByTab.toggle(); + + // ignore other invalid fields + this.busy = true; + this.setTimeout(function(){ + this.busy = false; + }, 100); + }, + + onUnload: function(){ + + // vars + var order = []; + + // loop + this.getTabs().map(function( group ){ + var active = group.hasActive() ? group.getActive().index() : 0; + order.push(active); + }); + + // bail if no tabs + if( !order.length ) { + return; + } + + // update + acf.setPreference('this.tabs', order); + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-taxonomy.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-taxonomy.js new file mode 100644 index 0000000..2cbd76d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-taxonomy.js @@ -0,0 +1,321 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'taxonomy', + + data: { + 'ftype': 'select' + }, + + select2: false, + + wait: 'load', + + events: { + 'click a[data-name="add"]': 'onClickAdd', + 'click input[type="radio"]': 'onClickRadio', + }, + + $control: function(){ + return this.$('.acf-taxonomy-field'); + }, + + $input: function(){ + return this.getRelatedPrototype().$input.apply(this, arguments); + }, + + getRelatedType: function(){ + + // vars + var fieldType = this.get('ftype'); + + // normalize + if( fieldType == 'multi_select' ) { + fieldType = 'select'; + } + + // return + return fieldType; + + }, + + getRelatedPrototype: function(){ + return acf.getFieldType( this.getRelatedType() ).prototype; + }, + + getValue: function(){ + return this.getRelatedPrototype().getValue.apply(this, arguments); + }, + + setValue: function(){ + return this.getRelatedPrototype().setValue.apply(this, arguments); + }, + + initialize: function(){ + this.getRelatedPrototype().initialize.apply(this, arguments); + }, + + onRemove: function(){ + if( this.select2 ) { + this.select2.destroy(); + } + }, + + onClickAdd: function( e, $el ){ + + // vars + var field = this; + var popup = false; + var $form = false; + var $name = false; + var $parent = false; + var $button = false; + var $message = false; + var notice = false; + + // step 1. + var step1 = function(){ + + // popup + popup = acf.newPopup({ + title: $el.attr('title'), + loading: true, + width: '300px' + }); + + // ajax + var ajaxData = { + action: 'acf/fields/taxonomy/add_term', + field_key: field.get('key') + }; + + // get HTML + $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax(ajaxData), + type: 'post', + dataType: 'html', + success: step2 + }); + }; + + // step 2. + var step2 = function( html ){ + + // update popup + popup.loading(false); + popup.content(html); + + // vars + $form = popup.$('form'); + $name = popup.$('input[name="term_name"]'); + $parent = popup.$('select[name="term_parent"]'); + $button = popup.$('.acf-submit-button'); + + // focus + $name.focus(); + + // submit form + popup.on('submit', 'form', step3); + }; + + // step 3. + var step3 = function( e, $el ){ + + // prevent + e.preventDefault(); + e.stopImmediatePropagation(); + + // basic validation + if( $name.val() === '' ) { + $name.focus(); + return false; + } + + // disable + acf.startButtonLoading( $button ); + + // ajax + var ajaxData = { + action: 'acf/fields/taxonomy/add_term', + field_key: field.get('key'), + term_name: $name.val(), + term_parent: $parent.length ? $parent.val() : 0 + }; + + $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax(ajaxData), + type: 'post', + dataType: 'json', + success: step4 + }); + }; + + // step 4. + var step4 = function( json ){ + + // enable + acf.stopButtonLoading( $button ); + + // remove prev notice + if( notice ) { + notice.remove(); + } + + // success + if( acf.isAjaxSuccess(json) ) { + + // clear name + $name.val(''); + + // update term lists + step5( json.data ); + + // notice + notice = acf.newNotice({ + type: 'success', + text: acf.getAjaxMessage(json), + target: $form, + timeout: 2000, + dismiss: false + }); + + } else { + + // notice + notice = acf.newNotice({ + type: 'error', + text: acf.getAjaxError(json), + target: $form, + timeout: 2000, + dismiss: false + }); + } + + // focus + $name.focus(); + }; + + // step 5. + var step5 = function( term ){ + + // update parent dropdown + var $option = $(''); + if( term.term_parent ) { + $parent.children('option[value="' + term.term_parent + '"]').after( $option ); + } else { + $parent.append( $option ); + } + + // add this new term to all taxonomy field + var fields = acf.getFields({ + type: 'taxonomy' + }); + + fields.map(function( otherField ){ + if( otherField.get('taxonomy') == field.get('taxonomy') ) { + otherField.appendTerm( term ); + } + }); + + // select + field.selectTerm( term.term_id ); + }; + + // run + step1(); + }, + + appendTerm: function( term ){ + + if( this.getRelatedType() == 'select' ) { + this.appendTermSelect( term ); + } else { + this.appendTermCheckbox( term ); + } + }, + + appendTermSelect: function( term ){ + + this.select2.addOption({ + id: term.term_id, + text: term.term_label + }); + + }, + + appendTermCheckbox: function( term ){ + + // vars + var name = this.$('[name]:first').attr('name'); + var $ul = this.$('ul:first'); + + // allow multiple selection + if( this.getRelatedType() == 'checkbox' ) { + name += '[]'; + } + + // create new li + var $li = $([ + '
    • ', + '', + '
    • ' + ].join('')); + + // find parent + if( term.term_parent ) { + + // vars + var $parent = $ul.find('li[data-id="' + term.term_parent + '"]'); + + // update vars + $ul = $parent.children('ul'); + + // create ul + if( !$ul.exists() ) { + $ul = $('
        '); + $parent.append( $ul ); + } + } + + // append + $ul.append( $li ); + }, + + selectTerm: function( id ){ + if( this.getRelatedType() == 'select' ) { + this.select2.selectOption( id ); + } else { + var $input = this.$('input[value="' + id + '"]'); + $input.prop('checked', true).trigger('change'); + } + }, + + onClickRadio: function( e, $el ){ + + // vars + var $label = $el.parent('label'); + var selected = $label.hasClass('selected'); + + // remove previous selected + this.$('.selected').removeClass('selected'); + + // add active class + $label.addClass('selected'); + + // allow null + if( this.get('allow_null') && selected ) { + $label.removeClass('selected'); + $el.prop('checked', false).trigger('change'); + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-time-picker.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-time-picker.js new file mode 100644 index 0000000..b5caf56 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-time-picker.js @@ -0,0 +1,77 @@ +(function($, undefined){ + + var Field = acf.models.DatePickerField.extend({ + + type: 'time_picker', + + $control: function(){ + return this.$('.acf-time-picker'); + }, + + initialize: function(){ + + // vars + var $input = this.$input(); + var $inputText = this.$inputText(); + + // args + var args = { + timeFormat: this.get('time_format'), + altField: $input, + altFieldTimeOnly: false, + altTimeFormat: 'HH:mm:ss', + showButtonPanel: true, + controlType: 'select', + oneLine: true, + closeText: acf.get('dateTimePickerL10n').selectText, + timeOnly: true, + }; + + // add custom 'Close = Select' functionality + args.onClose = function( value, dp_instance, t_instance ){ + + // vars + var $close = dp_instance.dpDiv.find('.ui-datepicker-close'); + + // if clicking close button + if( !value && $close.is(':hover') ) { + t_instance._updateDateTime(); + } + }; + + + // filter + args = acf.applyFilters('time_picker_args', args, this); + + // add date time picker + acf.newTimePicker( $inputText, args ); + + // action + acf.doAction('time_picker_init', $inputText, args, this); + } + }); + + acf.registerFieldType( Field ); + + + // add + acf.newTimePicker = function( $input, args ){ + + // bail ealry if no datepicker library + if( typeof $.timepicker === 'undefined' ) { + return false; + } + + // defaults + args = args || {}; + + // initialize + $input.timepicker( args ); + + // wrap the datepicker (only if it hasn't already been wrapped) + if( $('body > #ui-datepicker-div').exists() ) { + $('body > #ui-datepicker-div').wrap('
        '); + } + }; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-true-false.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-true-false.js new file mode 100644 index 0000000..435cce6 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-true-false.js @@ -0,0 +1,95 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'true_false', + + events: { + 'change .acf-switch-input': 'onChange', + 'focus .acf-switch-input': 'onFocus', + 'blur .acf-switch-input': 'onBlur', + 'keypress .acf-switch-input': 'onKeypress' + }, + + $input: function(){ + return this.$('input[type="checkbox"]'); + }, + + $switch: function(){ + return this.$('.acf-switch'); + }, + + getValue: function(){ + return this.$input().prop('checked') ? 1 : 0; + }, + + initialize: function(){ + this.render(); + }, + + render: function(){ + + // vars + var $switch = this.$switch(); + + // bail ealry if no $switch + if( !$switch.length ) return; + + // vars + var $on = $switch.children('.acf-switch-on'); + var $off = $switch.children('.acf-switch-off'); + var width = Math.max( $on.width(), $off.width() ); + + // bail ealry if no width + if( !width ) return; + + // set widths + $on.css( 'min-width', width ); + $off.css( 'min-width', width ); + + }, + + switchOn: function() { + this.$input().prop('checked', true); + this.$switch().addClass('-on'); + }, + + switchOff: function() { + this.$input().prop('checked', false); + this.$switch().removeClass('-on'); + }, + + onChange: function( e, $el ){ + if( $el.prop('checked') ) { + this.switchOn(); + } else { + this.switchOff(); + } + }, + + onFocus: function( e, $el ){ + this.$switch().addClass('-focus'); + }, + + onBlur: function( e, $el ){ + this.$switch().removeClass('-focus'); + }, + + onKeypress: function( e, $el ){ + + // left + if( e.keyCode === 37 ) { + return this.switchOff(); + } + + // right + if( e.keyCode === 39 ) { + return this.switchOn(); + } + + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-url.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-url.js new file mode 100644 index 0000000..55c0538 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-url.js @@ -0,0 +1,64 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'url', + + events: { + 'keyup input[type="url"]': 'onkeyup' + }, + + $control: function(){ + return this.$('.acf-input-wrap'); + }, + + $input: function(){ + return this.$('input[type="url"]'); + }, + + initialize: function(){ + this.render(); + }, + + isValid: function(){ + + // vars + var val = this.val(); + + // bail early if no val + if( !val ) { + return false; + } + + // url + if( val.indexOf('://') !== -1 ) { + return true; + } + + // protocol relative url + if( val.indexOf('//') === 0 ) { + return true; + } + + // return + return false; + }, + + render: function(){ + + // add class + if( this.isValid() ) { + this.$control().addClass('-valid'); + } else { + this.$control().removeClass('-valid'); + } + }, + + onkeyup: function( e, $el ){ + this.render(); + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-user.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-user.js new file mode 100644 index 0000000..3677b33 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-user.js @@ -0,0 +1,9 @@ +(function($, undefined){ + + var Field = acf.models.SelectField.extend({ + type: 'user', + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-wysiwyg.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-wysiwyg.js new file mode 100644 index 0000000..b8ec69d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field-wysiwyg.js @@ -0,0 +1,102 @@ +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'wysiwyg', + + wait: 'load', + + events: { + 'mousedown .acf-editor-wrap.delay': 'onMousedown', + 'unmountField': 'disableEditor', + 'remountField': 'enableEditor', + 'removeField': 'disableEditor' + }, + + $control: function(){ + return this.$('.acf-editor-wrap'); + }, + + $input: function(){ + return this.$('textarea'); + }, + + getMode: function(){ + return this.$control().hasClass('tmce-active') ? 'visual' : 'text'; + }, + + initialize: function(){ + + // initializeEditor if no delay + if( !this.$control().hasClass('delay') ) { + this.initializeEditor(); + } + }, + + initializeEditor: function(){ + + // vars + var $wrap = this.$control(); + var $textarea = this.$input(); + var args = { + tinymce: true, + quicktags: true, + toolbar: this.get('toolbar'), + mode: this.getMode(), + field: this + }; + + // generate new id + var oldId = $textarea.attr('id'); + var newId = acf.uniqueId('acf-editor-'); + + // store copy of textarea data + var data = $textarea.data(); + + // rename + acf.rename({ + target: $wrap, + search: oldId, + replace: newId, + destructive: true + }); + + // update id + this.set('id', newId, true); + + // initialize + acf.tinymce.initialize( newId, args ); + + // apply data to new textarea (acf.rename creates a new textarea element due to destructive mode) + // fixes bug where conditional logic "disabled" is lost during "screen_check" + this.$input().data(data); + }, + + onMousedown: function( e ){ + + // prevent default + e.preventDefault(); + + // remove delay class + var $wrap = this.$control(); + $wrap.removeClass('delay'); + $wrap.find('.acf-editor-toolbar').remove(); + + // initialize + this.initializeEditor(); + }, + + enableEditor: function(){ + if( this.getMode() == 'visual' ) { + acf.tinymce.enable( this.get('id') ); + } + }, + + disableEditor: function(){ + acf.tinymce.destroy( this.get('id') ); + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field.js new file mode 100644 index 0000000..63cd830 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-field.js @@ -0,0 +1,524 @@ +(function($, undefined){ + + // vars + var storage = []; + + /** + * acf.Field + * + * description + * + * @date 23/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.Field = acf.Model.extend({ + + // field type + type: '', + + // class used to avoid nested event triggers + eventScope: '.acf-field', + + // initialize events on 'ready' + wait: 'ready', + + /** + * setup + * + * Called during the constructor function to setup this field ready for initialization + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param jQuery $field The field element. + * @return void + */ + + setup: function( $field ){ + + // set $el + this.$el = $field; + + // inherit $field data + this.inherit( $field ); + + // inherit controll data + this.inherit( this.$control() ); + }, + + /** + * val + * + * Sets or returns the field's value + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param mixed val Optional. The value to set + * @return mixed + */ + + val: function( val ){ + if( val !== undefined ) { + return this.setValue( val ); + } else { + return this.prop('disabled') ? null : this.getValue(); + } + }, + + /** + * getValue + * + * returns the field's value + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param void + * @return mixed + */ + + getValue: function(){ + return this.$input().val(); + }, + + /** + * setValue + * + * sets the field's value and returns true if changed + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param mixed val + * @return boolean. True if changed. + */ + + setValue: function( val ){ + return acf.val( this.$input(), val ); + }, + + /** + * __ + * + * i18n helper to be removed + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + __: function( string ){ + return acf._e( this.type, string ); + }, + + /** + * $control + * + * returns the control jQuery element used for inheriting data. Uses this.control setting. + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param void + * @return jQuery + */ + + $control: function(){ + return false; + }, + + /** + * $input + * + * returns the input jQuery element used for saving values. Uses this.input setting. + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param void + * @return jQuery + */ + + $input: function(){ + return this.$('[name]:first'); + }, + + /** + * $inputWrap + * + * description + * + * @date 12/5/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + $inputWrap: function(){ + return this.$('.acf-input:first'); + }, + + /** + * $inputWrap + * + * description + * + * @date 12/5/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + $labelWrap: function(){ + return this.$('.acf-label:first'); + }, + + /** + * getInputName + * + * Returns the field's input name + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param void + * @return string + */ + + getInputName: function(){ + return this.$input().attr('name') || ''; + }, + + /** + * parent + * + * returns the field's parent field or false on failure. + * + * @date 8/5/18 + * @since 5.6.9 + * + * @param void + * @return object|false + */ + + parent: function() { + + // vars + var parents = this.parents(); + + // return + return parents.length ? parents[0] : false; + }, + + /** + * parents + * + * description + * + * @date 9/7/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + parents: function(){ + + // vars + var $parents = this.$el.parents('.acf-field'); + + // convert + var parents = acf.getFields( $parents ); + + // return + return parents; + }, + + show: function( lockKey, context ){ + + // show field and store result + var changed = acf.show( this.$el, lockKey ); + + // do action if visibility has changed + if( changed ) { + this.prop('hidden', false); + acf.doAction('show_field', this, context); + } + + // return + return changed; + }, + + hide: function( lockKey, context ){ + + // hide field and store result + var changed = acf.hide( this.$el, lockKey ); + + // do action if visibility has changed + if( changed ) { + this.prop('hidden', true); + acf.doAction('hide_field', this, context); + } + + // return + return changed; + }, + + enable: function( lockKey, context ){ + + // enable field and store result + var changed = acf.enable( this.$el, lockKey ); + + // do action if disabled has changed + if( changed ) { + this.prop('disabled', false); + acf.doAction('enable_field', this, context); + } + + // return + return changed; + }, + + disable: function( lockKey, context ){ + + // disabled field and store result + var changed = acf.disable( this.$el, lockKey ); + + // do action if disabled has changed + if( changed ) { + this.prop('disabled', true); + acf.doAction('disable_field', this, context); + } + + // return + return changed; + }, + + showEnable: function( lockKey, context ){ + + // enable + this.enable.apply(this, arguments); + + // show and return true if changed + return this.show.apply(this, arguments); + }, + + hideDisable: function( lockKey, context ){ + + // disable + this.disable.apply(this, arguments); + + // hide and return true if changed + return this.hide.apply(this, arguments); + }, + + showNotice: function( props ){ + + // ensure object + if( typeof props !== 'object' ) { + props = { text: props }; + } + + // remove old notice + if( this.notice ) { + this.notice.remove(); + } + + // create new notice + props.target = this.$inputWrap(); + this.notice = acf.newNotice( props ); + }, + + removeNotice: function( timeout ){ + if( this.notice ) { + this.notice.away( timeout || 0 ); + this.notice = false; + } + }, + + showError: function( message ){ + + // add class + this.$el.addClass('acf-error'); + + // add message + if( message !== undefined ) { + this.showNotice({ + text: message, + type: 'error', + dismiss: false + }); + } + + // action + acf.doAction('invalid_field', this); + + // add event + this.$el.one('focus change', 'input, select, textarea', $.proxy( this.removeError, this )); + }, + + removeError: function(){ + + // remove class + this.$el.removeClass('acf-error'); + + // remove notice + this.removeNotice( 250 ); + + // action + acf.doAction('valid_field', this); + }, + + trigger: function( name, args, bubbles ){ + + // allow some events to bubble + if( name == 'invalidField' ) { + bubbles = true; + } + + // return + return acf.Model.prototype.trigger.apply(this, [name, args, bubbles]); + }, + }); + + /** + * newField + * + * description + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newField = function( $field ){ + + // vars + var type = $field.data('type'); + var mid = modelId( type ); + var model = acf.models[ mid ] || acf.Field; + + // instantiate + var field = new model( $field ); + + // actions + acf.doAction('new_field', field); + + // return + return field; + }; + + /** + * mid + * + * Calculates the model ID for a field type + * + * @date 15/12/17 + * @since 5.6.5 + * + * @param string type + * @return string + */ + + var modelId = function( type ) { + return acf.strPascalCase( type || '' ) + 'Field'; + }; + + /** + * registerFieldType + * + * description + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.registerFieldType = function( model ){ + + // vars + var proto = model.prototype; + var type = proto.type; + var mid = modelId( type ); + + // store model + acf.models[ mid ] = model; + + // store reference + storage.push( type ); + }; + + /** + * acf.getFieldType + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getFieldType = function( type ){ + var mid = modelId( type ); + return acf.models[ mid ] || false; + } + + /** + * acf.getFieldTypes + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getFieldTypes = function( args ){ + + // defaults + args = acf.parseArgs(args, { + category: '', + // hasValue: true + }); + + // clonse available types + var types = []; + + // loop + storage.map(function( type ){ + + // vars + var model = acf.getFieldType(type); + var proto = model.prototype; + + // check operator + if( args.category && proto.category !== args.category ) { + return; + } + + // append + types.push( model ); + }); + + // return + return types; + }; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-fields.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-fields.js new file mode 100644 index 0000000..0cea0bf --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-fields.js @@ -0,0 +1,372 @@ +(function($, undefined){ + + /** + * findFields + * + * Returns a jQuery selection object of acf fields. + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object $args { + * Optional. Arguments to find fields. + * + * @type string key The field's key (data-attribute). + * @type string name The field's name (data-attribute). + * @type string type The field's type (data-attribute). + * @type string is jQuery selector to compare against. + * @type jQuery parent jQuery element to search within. + * @type jQuery sibling jQuery element to search alongside. + * @type limit int The number of fields to find. + * @type suppressFilters bool Whether to allow filters to add/remove results. Default behaviour will ignore clone fields. + * } + * @return jQuery + */ + + acf.findFields = function( args ){ + + // vars + var selector = '.acf-field'; + var $fields = false; + + // args + args = acf.parseArgs(args, { + key: '', + name: '', + type: '', + is: '', + parent: false, + sibling: false, + limit: false, + visible: false, + suppressFilters: false, + }); + + // filter args + if( !args.suppressFilters ) { + args = acf.applyFilters('find_fields_args', args); + } + + // key + if( args.key ) { + selector += '[data-key="' + args.key + '"]'; + } + + // type + if( args.type ) { + selector += '[data-type="' + args.type + '"]'; + } + + // name + if( args.name ) { + selector += '[data-name="' + args.name + '"]'; + } + + // is + if( args.is ) { + selector += args.is; + } + + // visibility + if( args.visible ) { + selector += ':visible'; + } + + // query + if( args.parent ) { + $fields = args.parent.find( selector ); + } else if( args.sibling ) { + $fields = args.sibling.siblings( selector ); + } else { + $fields = $( selector ); + } + + // filter + if( !args.suppressFilters ) { + $fields = $fields.not('.acf-clone .acf-field'); + $fields = acf.applyFilters('find_fields', $fields); + } + + // limit + if( args.limit ) { + $fields = $fields.slice( 0, args.limit ); + } + + // return + return $fields; + + }; + + /** + * findField + * + * Finds a specific field with jQuery + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string key The field's key. + * @param jQuery $parent jQuery element to search within. + * @return jQuery + */ + + acf.findField = function( key, $parent ){ + return acf.findFields({ + key: key, + limit: 1, + parent: $parent, + suppressFilters: true + }); + }; + + /** + * getField + * + * Returns a field instance + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param jQuery|string $field jQuery element or field key. + * @return object + */ + + acf.getField = function( $field ){ + + // allow jQuery + if( $field instanceof jQuery ) { + + // find fields + } else { + $field = acf.findField( $field ); + } + + // instantiate + var field = $field.data('acf'); + if( !field ) { + field = acf.newField( $field ); + } + + // return + return field; + }; + + /** + * getFields + * + * Returns multiple field instances + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param jQuery|object $fields jQuery elements or query args. + * @return array + */ + + acf.getFields = function( $fields ){ + + // allow jQuery + if( $fields instanceof jQuery ) { + + // find fields + } else { + $fields = acf.findFields( $fields ); + } + + // loop + var fields = []; + $fields.each(function(){ + var field = acf.getField( $(this) ); + fields.push( field ); + }); + + // return + return fields; + }; + + /** + * findClosestField + * + * Returns the closest jQuery field element + * + * @date 9/4/18 + * @since 5.6.9 + * + * @param jQuery $el + * @return jQuery + */ + + acf.findClosestField = function( $el ){ + return $el.closest('.acf-field'); + }; + + /** + * getClosestField + * + * Returns the closest field instance + * + * @date 22/1/18 + * @since 5.6.5 + * + * @param jQuery $el + * @return object + */ + + acf.getClosestField = function( $el ){ + var $field = acf.findClosestField( $el ); + return this.getField( $field ); + }; + + /** + * addGlobalFieldAction + * + * Sets up callback logic for global field actions + * + * @date 15/6/18 + * @since 5.6.9 + * + * @param string action + * @return void + */ + + var addGlobalFieldAction = function( action ){ + + // vars + var globalAction = action; + var pluralAction = action + '_fields'; // ready_fields + var singleAction = action + '_field'; // ready_field + + // global action + var globalCallback = function( $el /*, arg1, arg2, etc*/ ){ + //console.log( action, arguments ); + + // get args [$el, ...] + var args = acf.arrayArgs( arguments ); + var extraArgs = args.slice(1); + + // find fields + var fields = acf.getFields({ parent: $el }); + + // check + if( fields.length ) { + + // pluralAction + var pluralArgs = [ pluralAction, fields ].concat( extraArgs ); + acf.doAction.apply(null, pluralArgs); + } + }; + + // plural action + var pluralCallback = function( fields /*, arg1, arg2, etc*/ ){ + //console.log( pluralAction, arguments ); + + // get args [fields, ...] + var args = acf.arrayArgs( arguments ); + var extraArgs = args.slice(1); + + // loop + fields.map(function( field, i ){ + //setTimeout(function(){ + // singleAction + var singleArgs = [ singleAction, field ].concat( extraArgs ); + acf.doAction.apply(null, singleArgs); + //}, i * 100); + }); + }; + + // add actions + acf.addAction(globalAction, globalCallback); + acf.addAction(pluralAction, pluralCallback); + + // also add single action + addSingleFieldAction( action ); + } + + /** + * addSingleFieldAction + * + * Sets up callback logic for single field actions + * + * @date 15/6/18 + * @since 5.6.9 + * + * @param string action + * @return void + */ + + var addSingleFieldAction = function( action ){ + + // vars + var singleAction = action + '_field'; // ready_field + var singleEvent = action + 'Field'; // readyField + + // single action + var singleCallback = function( field /*, arg1, arg2, etc*/ ){ + //console.log( singleAction, arguments ); + + // get args [field, ...] + var args = acf.arrayArgs( arguments ); + var extraArgs = args.slice(1); + + // action variations (ready_field/type=image) + var variations = ['type', 'name', 'key']; + variations.map(function( variation ){ + + // vars + var prefix = '/' + variation + '=' + field.get(variation); + + // singleAction + args = [ singleAction + prefix , field ].concat( extraArgs ); + acf.doAction.apply(null, args); + }); + + // event + if( singleFieldEvents.indexOf(action) > -1 ) { + field.trigger(singleEvent, extraArgs); + } + }; + + // add actions + acf.addAction(singleAction, singleCallback); + } + + // vars + var globalFieldActions = [ 'prepare', 'ready', 'load', 'append', 'remove', 'unmount', 'remount', 'sortstart', 'sortstop', 'show', 'hide', 'unload' ]; + var singleFieldActions = [ 'valid', 'invalid', 'enable', 'disable', 'new' ]; + var singleFieldEvents = [ 'remove', 'unmount', 'remount', 'sortstart', 'sortstop', 'show', 'hide', 'unload', 'valid', 'invalid', 'enable', 'disable' ]; + + // add + globalFieldActions.map( addGlobalFieldAction ); + singleFieldActions.map( addSingleFieldAction ); + + /** + * fieldsEventManager + * + * Manages field actions and events + * + * @date 15/12/17 + * @since 5.6.5 + * + * @param void + * @param void + */ + + var fieldsEventManager = new acf.Model({ + id: 'fieldsEventManager', + events: { + 'click .acf-field a[href="#"]': 'onClick', + 'change .acf-field': 'onChange' + }, + onClick: function( e ){ + + // prevent default of any link with an href of # + e.preventDefault(); + }, + onChange: function(){ + + // preview hack allows post to save with no title or content + $('#_acf_changed').val(1); + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-helpers.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-helpers.js new file mode 100644 index 0000000..c54010a --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-helpers.js @@ -0,0 +1,361 @@ +(function($, undefined){ + + /** + * refreshHelper + * + * description + * + * @date 1/7/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var refreshHelper = new acf.Model({ + priority: 90, + timeout: 0, + actions: { + 'new_field': 'refresh', + 'show_field': 'refresh', + 'hide_field': 'refresh', + 'remove_field': 'refresh' + }, + refresh: function(){ + clearTimeout( this.timeout ); + this.timeout = setTimeout(function(){ + acf.doAction('refresh'); + }, 0); + } + }); + + /** + * mountHelper + * + * Adds compatiblity for the 'unmount' and 'remount' actions added in 5.8.0 + * + * @date 7/3/19 + * @since 5.7.14 + * + * @param void + * @return void + */ + var mountHelper = new acf.Model({ + priority: 1, + actions: { + 'sortstart': 'onSortstart', + 'sortstop': 'onSortstop' + }, + onSortstart: function( $item ){ + acf.doAction('unmount', $item); + }, + onSortstop: function( $item ){ + acf.doAction('remount', $item); + } + }); + + /** + * sortableHelper + * + * Adds compatibility for sorting a
        element + * + * @date 6/3/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var sortableHelper = new acf.Model({ + actions: { + 'sortstart': 'onSortstart' + }, + onSortstart: function( $item, $placeholder ){ + + // if $item is a tr, apply some css to the elements + if( $item.is('tr') ) { + + // replace $placeholder children with a single td + // fixes "width calculation issues" due to conditional logic hiding some children + $placeholder.html(''); + + // add helper class to remove absolute positioning + $item.addClass('acf-sortable-tr-helper'); + + // set fixed widths for children + $item.children().each(function(){ + $(this).width( $(this).width() ); + }); + + // mimic height + $placeholder.height( $item.height() + 'px' ); + + // remove class + $item.removeClass('acf-sortable-tr-helper'); + } + } + }); + + /** + * duplicateHelper + * + * Fixes browser bugs when duplicating an element + * + * @date 6/3/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var duplicateHelper = new acf.Model({ + actions: { + 'after_duplicate': 'onAfterDuplicate' + }, + onAfterDuplicate: function( $el, $el2 ){ + + // get original values + var vals = []; + $el.find('select').each(function(i){ + vals.push( $(this).val() ); + }); + + // set duplicate values + $el2.find('select').each(function(i){ + $(this).val( vals[i] ); + }); + } + }); + + /** + * tableHelper + * + * description + * + * @date 6/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var tableHelper = new acf.Model({ + + id: 'tableHelper', + + priority: 20, + + actions: { + 'refresh': 'renderTables' + }, + + renderTables: function( $el ){ + + // loop + var self = this; + $('.acf-table:visible').each(function(){ + self.renderTable( $(this) ); + }); + }, + + renderTable: function( $table ){ + + // vars + var $ths = $table.find('> thead > tr:visible > th[data-key]'); + var $tds = $table.find('> tbody > tr:visible > td[data-key]'); + + // bail early if no thead + if( !$ths.length || !$tds.length ) { + return false; + } + + + // visiblity + $ths.each(function( i ){ + + // vars + var $th = $(this); + var key = $th.data('key'); + var $cells = $tds.filter('[data-key="' + key + '"]'); + var $hidden = $cells.filter('.acf-hidden'); + + // always remove empty and allow cells to be hidden + $cells.removeClass('acf-empty'); + + // hide $th if all cells are hidden + if( $cells.length === $hidden.length ) { + acf.hide( $th ); + + // force all hidden cells to appear empty + } else { + acf.show( $th ); + $hidden.addClass('acf-empty'); + } + }); + + + // clear width + $ths.css('width', 'auto'); + + // get visible + $ths = $ths.not('.acf-hidden'); + + // vars + var availableWidth = 100; + var colspan = $ths.length; + + // set custom widths first + var $fixedWidths = $ths.filter('[data-width]'); + $fixedWidths.each(function(){ + var width = $(this).data('width'); + $(this).css('width', width + '%'); + availableWidth -= width; + }); + + // set auto widths + var $auoWidths = $ths.not('[data-width]'); + if( $auoWidths.length ) { + var width = availableWidth / $auoWidths.length; + $auoWidths.css('width', width + '%'); + availableWidth = 0; + } + + // avoid stretching issue + if( availableWidth > 0 ) { + $ths.last().css('width', 'auto'); + } + + + // update colspan on collapsed + $tds.filter('.-collapsed-target').each(function(){ + + // vars + var $td = $(this); + + // check if collapsed + if( $td.parent().hasClass('-collapsed') ) { + $td.attr('colspan', $ths.length); + } else { + $td.removeAttr('colspan'); + } + }); + } + }); + + + /** + * fieldsHelper + * + * description + * + * @date 6/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var fieldsHelper = new acf.Model({ + + id: 'fieldsHelper', + + priority: 30, + + actions: { + 'refresh': 'renderGroups' + }, + + renderGroups: function(){ + + // loop + var self = this; + $('.acf-fields:visible').each(function(){ + self.renderGroup( $(this) ); + }); + }, + + renderGroup: function( $el ){ + + // vars + var top = 0; + var height = 0; + var $row = $(); + + // get fields + var $fields = $el.children('.acf-field[data-width]:visible'); + + // bail early if no fields + if( !$fields.length ) { + return false; + } + + // bail ealry if is .-left + if( $el.hasClass('-left') ) { + $fields.removeAttr('data-width'); + $fields.css('width', 'auto'); + return false; + } + + // reset fields + $fields.removeClass('-r0 -c0').css({'min-height': 0}); + + // loop + $fields.each(function( i ){ + + // vars + var $field = $(this); + var position = $field.position(); + var thisTop = Math.ceil( position.top ); + var thisLeft = Math.ceil( position.left ); + + // detect change in row + if( $row.length && thisTop > top ) { + + // set previous heights + $row.css({'min-height': height+'px'}); + + // update position due to change in row above + position = $field.position(); + thisTop = Math.ceil( position.top ); + thisLeft = Math.ceil( position.left ); + + // reset vars + top = 0; + height = 0; + $row = $(); + } + + // rtl + if( acf.get('rtl') ) { + thisLeft = Math.ceil( $field.parent().width() - (position.left + $field.outerWidth()) ); + } + + // add classes + if( thisTop == 0 ) { + $field.addClass('-r0'); + } else if( thisLeft == 0 ) { + $field.addClass('-c0'); + } + + // get height after class change + // - add 1 for subpixel rendering + var thisHeight = Math.ceil( $field.outerHeight() ) + 1; + + // set height + height = Math.max( height, thisHeight ); + + // set y + top = Math.max( top, thisTop ); + + // append + $row = $row.add( $field ); + }); + + // clean up + if( $row.length ) { + $row.css({'min-height': height+'px'}); + } + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-hooks.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-hooks.js new file mode 100755 index 0000000..45bc849 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-hooks.js @@ -0,0 +1,252 @@ +( function( window, undefined ) { + "use strict"; + + /** + * Handles managing all events for whatever you plug it into. Priorities for hooks are based on lowest to highest in + * that, lowest priority hooks are fired first. + */ + var EventManager = function() { + /** + * Maintain a reference to the object scope so our public methods never get confusing. + */ + var MethodsAvailable = { + removeFilter : removeFilter, + applyFilters : applyFilters, + addFilter : addFilter, + removeAction : removeAction, + doAction : doAction, + addAction : addAction, + storage : getStorage + }; + + /** + * Contains the hooks that get registered with this EventManager. The array for storage utilizes a "flat" + * object literal such that looking up the hook utilizes the native object literal hash. + */ + var STORAGE = { + actions : {}, + filters : {} + }; + + function getStorage() { + + return STORAGE; + + }; + + /** + * Adds an action to the event manager. + * + * @param action Must contain namespace.identifier + * @param callback Must be a valid callback function before this action is added + * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook + * @param [context] Supply a value to be used for this + */ + function addAction( action, callback, priority, context ) { + if( typeof action === 'string' && typeof callback === 'function' ) { + priority = parseInt( ( priority || 10 ), 10 ); + _addHook( 'actions', action, callback, priority, context ); + } + + return MethodsAvailable; + } + + /** + * Performs an action if it exists. You can pass as many arguments as you want to this function; the only rule is + * that the first argument must always be the action. + */ + function doAction( /* action, arg1, arg2, ... */ ) { + var args = Array.prototype.slice.call( arguments ); + var action = args.shift(); + + if( typeof action === 'string' ) { + _runHook( 'actions', action, args ); + } + + return MethodsAvailable; + } + + /** + * Removes the specified action if it contains a namespace.identifier & exists. + * + * @param action The action to remove + * @param [callback] Callback function to remove + */ + function removeAction( action, callback ) { + if( typeof action === 'string' ) { + _removeHook( 'actions', action, callback ); + } + + return MethodsAvailable; + } + + /** + * Adds a filter to the event manager. + * + * @param filter Must contain namespace.identifier + * @param callback Must be a valid callback function before this action is added + * @param [priority=10] Used to control when the function is executed in relation to other callbacks bound to the same hook + * @param [context] Supply a value to be used for this + */ + function addFilter( filter, callback, priority, context ) { + if( typeof filter === 'string' && typeof callback === 'function' ) { + priority = parseInt( ( priority || 10 ), 10 ); + _addHook( 'filters', filter, callback, priority, context ); + } + + return MethodsAvailable; + } + + /** + * Performs a filter if it exists. You should only ever pass 1 argument to be filtered. The only rule is that + * the first argument must always be the filter. + */ + function applyFilters( /* filter, filtered arg, arg2, ... */ ) { + var args = Array.prototype.slice.call( arguments ); + var filter = args.shift(); + + if( typeof filter === 'string' ) { + return _runHook( 'filters', filter, args ); + } + + return MethodsAvailable; + } + + /** + * Removes the specified filter if it contains a namespace.identifier & exists. + * + * @param filter The action to remove + * @param [callback] Callback function to remove + */ + function removeFilter( filter, callback ) { + if( typeof filter === 'string') { + _removeHook( 'filters', filter, callback ); + } + + return MethodsAvailable; + } + + /** + * Removes the specified hook by resetting the value of it. + * + * @param type Type of hook, either 'actions' or 'filters' + * @param hook The hook (namespace.identifier) to remove + * @private + */ + function _removeHook( type, hook, callback, context ) { + if ( !STORAGE[ type ][ hook ] ) { + return; + } + if ( !callback ) { + STORAGE[ type ][ hook ] = []; + } else { + var handlers = STORAGE[ type ][ hook ]; + var i; + if ( !context ) { + for ( i = handlers.length; i--; ) { + if ( handlers[i].callback === callback ) { + handlers.splice( i, 1 ); + } + } + } + else { + for ( i = handlers.length; i--; ) { + var handler = handlers[i]; + if ( handler.callback === callback && handler.context === context) { + handlers.splice( i, 1 ); + } + } + } + } + } + + /** + * Adds the hook to the appropriate storage container + * + * @param type 'actions' or 'filters' + * @param hook The hook (namespace.identifier) to add to our event manager + * @param callback The function that will be called when the hook is executed. + * @param priority The priority of this hook. Must be an integer. + * @param [context] A value to be used for this + * @private + */ + function _addHook( type, hook, callback, priority, context ) { + var hookObject = { + callback : callback, + priority : priority, + context : context + }; + + // Utilize 'prop itself' : http://jsperf.com/hasownproperty-vs-in-vs-undefined/19 + var hooks = STORAGE[ type ][ hook ]; + if( hooks ) { + hooks.push( hookObject ); + hooks = _hookInsertSort( hooks ); + } + else { + hooks = [ hookObject ]; + } + + STORAGE[ type ][ hook ] = hooks; + } + + /** + * Use an insert sort for keeping our hooks organized based on priority. This function is ridiculously faster + * than bubble sort, etc: http://jsperf.com/javascript-sort + * + * @param hooks The custom array containing all of the appropriate hooks to perform an insert sort on. + * @private + */ + function _hookInsertSort( hooks ) { + var tmpHook, j, prevHook; + for( var i = 1, len = hooks.length; i < len; i++ ) { + tmpHook = hooks[ i ]; + j = i; + while( ( prevHook = hooks[ j - 1 ] ) && prevHook.priority > tmpHook.priority ) { + hooks[ j ] = hooks[ j - 1 ]; + --j; + } + hooks[ j ] = tmpHook; + } + + return hooks; + } + + /** + * Runs the specified hook. If it is an action, the value is not modified but if it is a filter, it is. + * + * @param type 'actions' or 'filters' + * @param hook The hook ( namespace.identifier ) to be ran. + * @param args Arguments to pass to the action/filter. If it's a filter, args is actually a single parameter. + * @private + */ + function _runHook( type, hook, args ) { + var handlers = STORAGE[ type ][ hook ]; + + if ( !handlers ) { + return (type === 'filters') ? args[0] : false; + } + + var i = 0, len = handlers.length; + if ( type === 'filters' ) { + for ( ; i < len; i++ ) { + args[ 0 ] = handlers[ i ].callback.apply( handlers[ i ].context, args ); + } + } else { + for ( ; i < len; i++ ) { + handlers[ i ].callback.apply( handlers[ i ].context, args ); + } + } + + return ( type === 'filters' ) ? args[ 0 ] : true; + } + + // return all of the publicly available methods + return MethodsAvailable; + + }; + + // instantiate + acf.hooks = new EventManager(); + +} )( window ); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-media.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-media.js new file mode 100644 index 0000000..0606ef2 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-media.js @@ -0,0 +1,832 @@ +(function($, undefined){ + + /** + * acf.newMediaPopup + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newMediaPopup = function( args ){ + + // args + var popup = null; + var args = acf.parseArgs(args, { + mode: 'select', // 'select', 'edit' + title: '', // 'Upload Image' + button: '', // 'Select Image' + type: '', // 'image', '' + field: false, // field instance + allowedTypes: '', // '.jpg, .png, etc' + library: 'all', // 'all', 'uploadedTo' + multiple: false, // false, true, 'add' + attachment: 0, // the attachment to edit + autoOpen: true, // open the popup automatically + open: function(){}, // callback after close + select: function(){}, // callback after select + close: function(){} // callback after close + }); + + // initialize + if( args.mode == 'edit' ) { + popup = new acf.models.EditMediaPopup( args ); + } else { + popup = new acf.models.SelectMediaPopup( args ); + } + + // open popup (allow frame customization before opening) + if( args.autoOpen ) { + setTimeout(function(){ + popup.open(); + }, 1); + } + + // action + acf.doAction('new_media_popup', popup); + + // return + return popup; + }; + + + /** + * getPostID + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var getPostID = function() { + var postID = acf.get('post_id'); + return $.isNumeric(postID) ? postID : 0; + } + + + /** + * acf.getMimeTypes + * + * description + * + * @date 11/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getMimeTypes = function(){ + return this.get('mimeTypes'); + }; + + acf.getMimeType = function( name ){ + + // vars + var allTypes = acf.getMimeTypes(); + + // search + if( allTypes[name] !== undefined ) { + return allTypes[name]; + } + + // some types contain a mixed key such as "jpg|jpeg|jpe" + for( var key in allTypes ) { + if( key.indexOf(name) !== -1 ) { + return allTypes[key]; + } + } + + // return + return false; + }; + + + /** + * MediaPopup + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var MediaPopup = acf.Model.extend({ + + id: 'MediaPopup', + data: {}, + defaults: {}, + frame: false, + + setup: function( props ){ + $.extend(this.data, props); + }, + + initialize: function(){ + + // vars + var options = this.getFrameOptions(); + + // add states + this.addFrameStates( options ); + + // create frame + var frame = wp.media( options ); + + // add args reference + frame.acf = this; + + // add events + this.addFrameEvents( frame, options ); + + // strore frame + this.frame = frame; + }, + + open: function(){ + this.frame.open(); + }, + + close: function(){ + this.frame.close(); + }, + + remove: function(){ + this.frame.detach(); + this.frame.remove(); + }, + + getFrameOptions: function(){ + + // vars + var options = { + title: this.get('title'), + multiple: this.get('multiple'), + library: {}, + states: [] + }; + + // type + if( this.get('type') ) { + options.library.type = this.get('type'); + } + + // type + if( this.get('library') === 'uploadedTo' ) { + options.library.uploadedTo = getPostID(); + } + + // attachment + if( this.get('attachment') ) { + options.library.post__in = [ this.get('attachment') ]; + } + + // button + if( this.get('button') ) { + options.button = { + text: this.get('button') + }; + } + + // return + return options; + }, + + addFrameStates: function( options ){ + + // create query + var Query = wp.media.query( options.library ); + + // add _acfuploader + // this is super wack! + // if you add _acfuploader to the options.library args, new uploads will not be added to the library view. + // this has been traced back to the wp.media.model.Query initialize function (which can't be overriden) + // Adding any custom args will cause the Attahcments to not observe the uploader queue + // To bypass this security issue, we add in the args AFTER the Query has been initialized + // options.library._acfuploader = settings.field; + if( this.get('field') && acf.isset(Query, 'mirroring', 'args') ) { + Query.mirroring.args._acfuploader = this.get('field'); + } + + // add states + options.states.push( + + // main state + new wp.media.controller.Library({ + library: Query, + multiple: this.get('multiple'), + title: this.get('title'), + priority: 20, + filterable: 'all', + editable: true, + allowLocalEdits: true + }) + + ); + + // edit image functionality (added in WP 3.9) + if( acf.isset(wp, 'media', 'controller', 'EditImage') ) { + options.states.push( new wp.media.controller.EditImage() ); + } + }, + + addFrameEvents: function( frame, options ){ + + // log all events + //frame.on('all', function( e ) { + // console.log( 'frame all: %o', e ); + //}); + + // add class + frame.on('open',function() { + this.$el.closest('.media-modal').addClass('acf-media-modal -' + this.acf.get('mode') ); + }, frame); + + // edit image view + // source: media-views.js:2410 editImageContent() + frame.on('content:render:edit-image', function(){ + + var image = this.state().get('image'); + var view = new wp.media.view.EditImage({ model: image, controller: this }).render(); + this.content.set( view ); + + // after creating the wrapper view, load the actual editor via an ajax call + view.loadEditor(); + + }, frame); + + // update toolbar button + //frame.on( 'toolbar:create:select', function( toolbar ) { + // toolbar.view = new wp.media.view.Toolbar.Select({ + // text: frame.options._button, + // controller: this + // }); + //}, frame ); + + // on select + frame.on('select', function() { + + // vars + var selection = frame.state().get('selection'); + + // if selecting images + if( selection ) { + + // loop + selection.each(function( attachment, i ){ + frame.acf.get('select').apply( frame.acf, [attachment, i] ); + }); + } + }); + + // on close + frame.on('close',function(){ + + // callback and remove + setTimeout(function(){ + frame.acf.get('close').apply( frame.acf ); + frame.acf.remove(); + }, 1); + }); + } + }); + + + /** + * acf.models.SelectMediaPopup + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.models.SelectMediaPopup = MediaPopup.extend({ + id: 'SelectMediaPopup', + setup: function( props ){ + + // default button + if( !props.button ) { + props.button = acf._x('Select', 'verb'); + } + + // parent + MediaPopup.prototype.setup.apply(this, arguments); + }, + + addFrameEvents: function( frame, options ){ + + // plupload + // adds _acfuploader param to validate uploads + if( acf.isset(_wpPluploadSettings, 'defaults', 'multipart_params') ) { + + // add _acfuploader so that Uploader will inherit + _wpPluploadSettings.defaults.multipart_params._acfuploader = this.get('field'); + + // remove acf_field so future Uploaders won't inherit + frame.on('open', function(){ + delete _wpPluploadSettings.defaults.multipart_params._acfuploader; + }); + } + + // browse + frame.on('content:activate:browse', function(){ + + // vars + var toolbar = false; + + // populate above vars making sure to allow for failure + // perhaps toolbar does not exist because the frame open is Upload Files + try { + toolbar = frame.content.get().toolbar; + } catch(e) { + console.log(e); + return; + } + + // callback + frame.acf.customizeFilters.apply(frame.acf, [toolbar]); + }); + + // parent + MediaPopup.prototype.addFrameEvents.apply(this, arguments); + + }, + + customizeFilters: function( toolbar ){ + + // vars + var filters = toolbar.get('filters'); + + // image + if( this.get('type') == 'image' ) { + + // update all + filters.filters.all.text = acf.__('All images'); + + // remove some filters + delete filters.filters.audio; + delete filters.filters.video; + delete filters.filters.image; + + // update all filters to show images + $.each(filters.filters, function( i, filter ){ + filter.props.type = filter.props.type || 'image'; + }); + } + + // specific types + if( this.get('allowedTypes') ) { + + // convert ".jpg, .png" into ["jpg", "png"] + var allowedTypes = this.get('allowedTypes').split(' ').join('').split('.').join('').split(','); + + // loop + allowedTypes.map(function( name ){ + + // get type + var mimeType = acf.getMimeType( name ); + + // bail early if no type + if( !mimeType ) return; + + // create new filter + var newFilter = { + text: mimeType, + props: { + status: null, + type: mimeType, + uploadedTo: null, + orderby: 'date', + order: 'DESC' + }, + priority: 20 + }; + + // append + filters.filters[ mimeType ] = newFilter; + + }); + } + + + + // uploaded to post + if( this.get('library') === 'uploadedTo' ) { + + // vars + var uploadedTo = this.frame.options.library.uploadedTo; + + // remove some filters + delete filters.filters.unattached; + delete filters.filters.uploaded; + + // add uploadedTo to filters + $.each(filters.filters, function( i, filter ){ + filter.text += ' (' + acf.__('Uploaded to this post') + ')'; + filter.props.uploadedTo = uploadedTo; + }); + } + + // add _acfuploader to filters + var field = this.get('field'); + $.each(filters.filters, function( k, filter ){ + filter.props._acfuploader = field; + }); + + // add _acfuplaoder to search + var search = toolbar.get('search'); + search.model.attributes._acfuploader = field; + + // render (custom function added to prototype) + if( filters.renderFilters ) { + filters.renderFilters(); + } + } + }); + + + /** + * acf.models.EditMediaPopup + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.models.EditMediaPopup = MediaPopup.extend({ + id: 'SelectMediaPopup', + setup: function( props ){ + + // default button + if( !props.button ) { + props.button = acf._x('Update', 'verb'); + } + + // parent + MediaPopup.prototype.setup.apply(this, arguments); + }, + + addFrameEvents: function( frame, options ){ + + // add class + frame.on('open',function() { + + // add class + this.$el.closest('.media-modal').addClass('acf-expanded'); + + // set to browse + if( this.content.mode() != 'browse' ) { + this.content.mode('browse'); + } + + // set selection + var state = this.state(); + var selection = state.get('selection'); + var attachment = wp.media.attachment( frame.acf.get('attachment') ); + selection.add( attachment ); + + }, frame); + + // parent + MediaPopup.prototype.addFrameEvents.apply(this, arguments); + + } + }); + + + /** + * customizePrototypes + * + * description + * + * @date 11/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var customizePrototypes = new acf.Model({ + id: 'customizePrototypes', + wait: 'ready', + + initialize: function(){ + + // bail early if no media views + if( !acf.isset(window, 'wp', 'media', 'view') ) { + return; + } + + // fix bug where CPT without "editor" does not set post.id setting which then prevents uploadedTo from working + var postID = getPostID(); + if( postID && acf.isset(wp, 'media', 'view', 'settings', 'post') ) { + wp.media.view.settings.post.id = postID; + } + + // customize + this.customizeAttachmentsButton(); + this.customizeAttachmentsRouter(); + this.customizeAttachmentFilters(); + this.customizeAttachmentCompat(); + this.customizeAttachmentLibrary(); + }, + + customizeAttachmentsButton: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'Button') ) { + return; + } + + // Extend + var Button = wp.media.view.Button; + wp.media.view.Button = Button.extend({ + + // Fix bug where "Select" button appears blank after editing an image. + // Do this by simplifying Button initialize function and avoid deleting this.options. + initialize: function() { + var options = _.defaults( this.options, this.defaults ); + this.model = new Backbone.Model( options ); + this.listenTo( this.model, 'change', this.render ); + } + }); + + }, + + customizeAttachmentsRouter: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'Router') ) { + return; + } + + // vars + var Parent = wp.media.view.Router; + + // extend + wp.media.view.Router = Parent.extend({ + + addExpand: function(){ + + // vars + var $a = $([ + '', + '' + acf.__('Expand Details') + '', + '' + acf.__('Collapse Details') + '', + '' + ].join('')); + + // add events + $a.on('click', function( e ){ + e.preventDefault(); + var $div = $(this).closest('.media-modal'); + if( $div.hasClass('acf-expanded') ) { + $div.removeClass('acf-expanded'); + } else { + $div.addClass('acf-expanded'); + } + }); + + // append + this.$el.append( $a ); + }, + + initialize: function(){ + + // initialize + Parent.prototype.initialize.apply( this, arguments ); + + // add buttons + this.addExpand(); + + // return + return this; + } + }); + }, + + customizeAttachmentFilters: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'AttachmentFilters', 'All') ) { + return; + } + + // vars + var Parent = wp.media.view.AttachmentFilters.All; + + // renderFilters + // copied from media-views.js:6939 + Parent.prototype.renderFilters = function(){ + + // Build `' ).val( value ).html( filter.text )[0], + priority: filter.priority || 50 + }; + }, this ).sortBy('priority').pluck('el').value() ); + + }; + }, + + customizeAttachmentCompat: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'AttachmentCompat') ) { + return; + } + + // vars + var AttachmentCompat = wp.media.view.AttachmentCompat; + var timeout = false; + + // extend + wp.media.view.AttachmentCompat = AttachmentCompat.extend({ + + render: function() { + + // WP bug + // When multiple media frames exist on the same page (WP content, WYSIWYG, image, file ), + // WP creates multiple instances of this AttachmentCompat view. + // Each instance will attempt to render when a new modal is created. + // Use a property to avoid this and only render once per instance. + if( this.rendered ) { + return this; + } + + // render HTML + AttachmentCompat.prototype.render.apply( this, arguments ); + + // when uploading, render is called twice. + // ignore first render by checking for #acf-form-data element + if( !this.$('#acf-form-data').length ) { + return this; + } + + // clear timeout + clearTimeout( timeout ); + + // setTimeout + timeout = setTimeout($.proxy(function(){ + this.rendered = true; + acf.doAction('append', this.$el); + }, this), 50); + + // return + return this; + }, + + save: function( event ) { + var data = {}; + + if ( event ) { + event.preventDefault(); + } + + //_.each( this.$el.serializeArray(), function( pair ) { + // data[ pair.name ] = pair.value; + //}); + + // Serialize data more thoroughly to allow chckbox inputs to save. + data = acf.serializeForAjax(this.$el); + + this.controller.trigger( 'attachment:compat:waiting', ['waiting'] ); + this.model.saveCompat( data ).always( _.bind( this.postSave, this ) ); + } + }); + + }, + + customizeAttachmentLibrary: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'Attachment', 'Library') ) { + return; + } + + // vars + var AttachmentLibrary = wp.media.view.Attachment.Library; + + // extend + wp.media.view.Attachment.Library = AttachmentLibrary.extend({ + + render: function() { + + // vars + var popup = acf.isget(this, 'controller', 'acf'); + var attributes = acf.isget(this, 'model', 'attributes'); + + // check vars exist to avoid errors + if( popup && attributes ) { + + // show errors + if( attributes.acf_errors ) { + this.$el.addClass('acf-disabled'); + } + + // disable selected + var selected = popup.get('selected'); + if( selected && selected.indexOf(attributes.id) > -1 ) { + this.$el.addClass('acf-selected'); + } + } + + // render + return AttachmentLibrary.prototype.render.apply( this, arguments ); + + }, + + + /* + * toggleSelection + * + * This function is called before an attachment is selected + * A good place to check for errors and prevent the 'select' function from being fired + * + * @type function + * @date 29/09/2016 + * @since 5.4.0 + * + * @param options (object) + * @return n/a + */ + + toggleSelection: function( options ) { + + // vars + // source: wp-includes/js/media-views.js:2880 + var collection = this.collection, + selection = this.options.selection, + model = this.model, + single = selection.single(); + + + // vars + var frame = this.controller; + var errors = acf.isget(this, 'model', 'attributes', 'acf_errors'); + var $sidebar = frame.$el.find('.media-frame-content .media-sidebar'); + + // remove previous error + $sidebar.children('.acf-selection-error').remove(); + + // show attachment details + $sidebar.children().removeClass('acf-hidden'); + + // add message + if( frame && errors ) { + + // vars + var filename = acf.isget(this, 'model', 'attributes', 'filename'); + + // hide attachment details + // Gallery field continues to show previously selected attachment... + $sidebar.children().addClass('acf-hidden'); + + // append message + $sidebar.prepend([ + '
        ', + '' + acf.__('Restricted') +'', + '' + filename + '', + '' + errors + '', + '
        ' + ].join('')); + + // reset selection (unselects all attachments) + selection.reset(); + + // set single (attachment displayed in sidebar) + selection.single( model ); + + // return and prevent 'select' form being fired + return; + + } + + // return + return AttachmentLibrary.prototype.toggleSelection.apply( this, arguments ); + } + }); + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-model.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-model.js new file mode 100644 index 0000000..cd0690a --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-model.js @@ -0,0 +1,908 @@ +(function($, undefined){ + + // Cached regex to split keys for `addEvent`. + var delegateEventSplitter = /^(\S+)\s*(.*)$/; + + /** + * extend + * + * Helper function to correctly set up the prototype chain for subclasses + * Heavily inspired by backbone.js + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object protoProps New properties for this object. + * @return function. + */ + + var extend = function( protoProps ) { + + // vars + var Parent = this; + var Child; + + // The constructor function for the new subclass is either defined by you + // (the "constructor" property in your `extend` definition), or defaulted + // by us to simply call the parent constructor. + if( protoProps && protoProps.hasOwnProperty('constructor') ) { + Child = protoProps.constructor; + } else { + Child = function(){ return Parent.apply(this, arguments); }; + } + + // Add static properties to the constructor function, if supplied. + $.extend(Child, Parent); + + // Set the prototype chain to inherit from `parent`, without calling + // `parent`'s constructor function and add the prototype properties. + Child.prototype = Object.create(Parent.prototype); + $.extend(Child.prototype, protoProps); + Child.prototype.constructor = Child; + + // Set a convenience property in case the parent's prototype is needed later. + //Child.prototype.__parent__ = Parent.prototype; + + // return + return Child; + + }; + + + /** + * Model + * + * Base class for all inheritence + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object props + * @return function. + */ + + var Model = acf.Model = function(){ + + // generate uique client id + this.cid = acf.uniqueId('acf'); + + // set vars to avoid modifying prototype + this.data = $.extend(true, {}, this.data); + + // pass props to setup function + this.setup.apply(this, arguments); + + // store on element (allow this.setup to create this.$el) + if( this.$el && !this.$el.data('acf') ) { + this.$el.data('acf', this); + } + + // initialize + var initialize = function(){ + this.initialize(); + this.addEvents(); + this.addActions(); + this.addFilters(); + }; + + // initialize on action + if( this.wait && !acf.didAction(this.wait) ) { + this.addAction(this.wait, initialize); + + // initialize now + } else { + initialize.apply(this); + } + }; + + // Attach all inheritable methods to the Model prototype. + $.extend(Model.prototype, { + + // Unique model id + id: '', + + // Unique client id + cid: '', + + // jQuery element + $el: null, + + // Data specific to this instance + data: {}, + + // toggle used when changing data + busy: false, + changed: false, + + // Setup events hooks + events: {}, + actions: {}, + filters: {}, + + // class used to avoid nested event triggers + eventScope: '', + + // action to wait until initialize + wait: false, + + // action priority default + priority: 10, + + /** + * get + * + * Gets a specific data value + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @return mixed + */ + + get: function( name ) { + return this.data[name]; + }, + + /** + * has + * + * Returns `true` if the data exists and is not null + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @return boolean + */ + + has: function( name ) { + return this.get(name) != null; + }, + + /** + * set + * + * Sets a specific data value + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param mixed value + * @return this + */ + + set: function( name, value, silent ) { + + // bail if unchanged + var prevValue = this.get(name); + if( prevValue == value ) { + return this; + } + + // set data + this.data[ name ] = value; + + // trigger events + if( !silent ) { + this.changed = true; + this.trigger('changed:' + name, [value, prevValue]); + this.trigger('changed', [name, value, prevValue]); + } + + // return + return this; + }, + + /** + * inherit + * + * Inherits the data from a jQuery element + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param jQuery $el + * @return this + */ + + inherit: function( data ){ + + // allow jQuery + if( data instanceof jQuery ) { + data = data.data(); + } + + // extend + $.extend(this.data, data); + + // return + return this; + }, + + /** + * prop + * + * mimics the jQuery prop function + * + * @date 4/6/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + prop: function(){ + return this.$el.prop.apply(this.$el, arguments); + }, + + /** + * setup + * + * Run during constructor function + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param n/a + * @return n/a + */ + + setup: function( props ){ + $.extend(this, props); + }, + + /** + * initialize + * + * Also run during constructor function + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param n/a + * @return n/a + */ + + initialize: function(){}, + + /** + * addElements + * + * Adds multiple jQuery elements to this object + * + * @date 9/5/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + addElements: function( elements ){ + elements = elements || this.elements || null; + if( !elements || !Object.keys(elements).length ) return false; + for( var i in elements ) { + this.addElement( i, elements[i] ); + } + }, + + /** + * addElement + * + * description + * + * @date 9/5/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + addElement: function( name, selector){ + this[ '$' + name ] = this.$( selector ); + }, + + /** + * addEvents + * + * Adds multiple event handlers + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object events {event1 : callback, event2 : callback, etc } + * @return n/a + */ + + addEvents: function( events ){ + events = events || this.events || null; + if( !events ) return false; + for( var key in events ) { + var match = key.match(delegateEventSplitter); + this.on(match[1], match[2], events[key]); + } + }, + + /** + * removeEvents + * + * Removes multiple event handlers + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object events {event1 : callback, event2 : callback, etc } + * @return n/a + */ + + removeEvents: function( events ){ + events = events || this.events || null; + if( !events ) return false; + for( var key in events ) { + var match = key.match(delegateEventSplitter); + this.off(match[1], match[2], events[key]); + } + }, + + /** + * getEventTarget + * + * Returns a jQUery element to tigger an event on + * + * @date 5/6/18 + * @since 5.6.9 + * + * @param jQuery $el The default jQuery element. Optional. + * @param string event The event name. Optional. + * @return jQuery + */ + + getEventTarget: function( $el, event ){ + return $el || this.$el || $(document); + }, + + /** + * validateEvent + * + * Returns true if the event target's closest $el is the same as this.$el + * Requires both this.el and this.$el to be defined + * + * @date 5/6/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + validateEvent: function( e ){ + if( this.eventScope ) { + return $( e.target ).closest( this.eventScope ).is( this.$el ); + } else { + return true; + } + }, + + /** + * proxyEvent + * + * Returns a new event callback function scoped to this model + * + * @date 29/3/18 + * @since 5.6.9 + * + * @param function callback + * @return function + */ + + proxyEvent: function( callback ){ + return this.proxy(function(e){ + + // validate + if( !this.validateEvent(e) ) { + return; + } + + // construct args + var args = acf.arrayArgs( arguments ); + var extraArgs = args.slice(1); + var eventArgs = [ e, $(e.currentTarget) ].concat( extraArgs ); + + // callback + callback.apply(this, eventArgs); + }); + }, + + /** + * on + * + * Adds an event handler similar to jQuery + * Uses the instance 'cid' to namespace event + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param string callback + * @return n/a + */ + + on: function( a1, a2, a3, a4 ){ + + // vars + var $el, event, selector, callback, args; + + // find args + if( a1 instanceof jQuery ) { + + // 1. args( $el, event, selector, callback ) + if( a4 ) { + $el = a1; event = a2; selector = a3; callback = a4; + + // 2. args( $el, event, callback ) + } else { + $el = a1; event = a2; callback = a3; + } + } else { + + // 3. args( event, selector, callback ) + if( a3 ) { + event = a1; selector = a2; callback = a3; + + // 4. args( event, callback ) + } else { + event = a1; callback = a2; + } + } + + // element + $el = this.getEventTarget( $el ); + + // modify callback + if( typeof callback === 'string' ) { + callback = this.proxyEvent( this[callback] ); + } + + // modify event + event = event + '.' + this.cid; + + // args + if( selector ) { + args = [ event, selector, callback ]; + } else { + args = [ event, callback ]; + } + + // on() + $el.on.apply($el, args); + }, + + /** + * off + * + * Removes an event handler similar to jQuery + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param string callback + * @return n/a + */ + + off: function( a1, a2 ,a3 ){ + + // vars + var $el, event, selector, args; + + // find args + if( a1 instanceof jQuery ) { + + // 1. args( $el, event, selector ) + if( a3 ) { + $el = a1; event = a2; selector = a3; + + // 2. args( $el, event ) + } else { + $el = a1; event = a2; + } + } else { + + // 3. args( event, selector ) + if( a2 ) { + event = a1; selector = a2; + + // 4. args( event ) + } else { + event = a1; + } + } + + // element + $el = this.getEventTarget( $el ); + + // modify event + event = event + '.' + this.cid; + + // args + if( selector ) { + args = [ event, selector ]; + } else { + args = [ event ]; + } + + // off() + $el.off.apply($el, args); + }, + + /** + * trigger + * + * Triggers an event similar to jQuery + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param string callback + * @return n/a + */ + + trigger: function( name, args, bubbles ){ + var $el = this.getEventTarget(); + if( bubbles ) { + $el.trigger.apply( $el, arguments ); + } else { + $el.triggerHandler.apply( $el, arguments ); + } + return this; + }, + + /** + * addActions + * + * Adds multiple action handlers + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object actions {action1 : callback, action2 : callback, etc } + * @return n/a + */ + + addActions: function( actions ){ + actions = actions || this.actions || null; + if( !actions ) return false; + for( var i in actions ) { + this.addAction( i, actions[i] ); + } + }, + + /** + * removeActions + * + * Removes multiple action handlers + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object actions {action1 : callback, action2 : callback, etc } + * @return n/a + */ + + removeActions: function( actions ){ + actions = actions || this.actions || null; + if( !actions ) return false; + for( var i in actions ) { + this.removeAction( i, actions[i] ); + } + }, + + /** + * addAction + * + * Adds an action using the wp.hooks library + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param string callback + * @return n/a + */ + + addAction: function( name, callback, priority ){ + //console.log('addAction', name, priority); + // defaults + priority = priority || this.priority; + + // modify callback + if( typeof callback === 'string' ) { + callback = this[ callback ]; + } + + // add + acf.addAction(name, callback, priority, this); + + }, + + /** + * removeAction + * + * Remove an action using the wp.hooks library + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param string callback + * @return n/a + */ + + removeAction: function( name, callback ){ + acf.removeAction(name, this[ callback ]); + }, + + /** + * addFilters + * + * Adds multiple filter handlers + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object filters {filter1 : callback, filter2 : callback, etc } + * @return n/a + */ + + addFilters: function( filters ){ + filters = filters || this.filters || null; + if( !filters ) return false; + for( var i in filters ) { + this.addFilter( i, filters[i] ); + } + }, + + /** + * addFilter + * + * Adds a filter using the wp.hooks library + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param string callback + * @return n/a + */ + + addFilter: function( name, callback, priority ){ + + // defaults + priority = priority || this.priority; + + // modify callback + if( typeof callback === 'string' ) { + callback = this[ callback ]; + } + + // add + acf.addFilter(name, callback, priority, this); + + }, + + /** + * removeFilters + * + * Removes multiple filter handlers + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param object filters {filter1 : callback, filter2 : callback, etc } + * @return n/a + */ + + removeFilters: function( filters ){ + filters = filters || this.filters || null; + if( !filters ) return false; + for( var i in filters ) { + this.removeFilter( i, filters[i] ); + } + }, + + /** + * removeFilter + * + * Remove a filter using the wp.hooks library + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param string callback + * @return n/a + */ + + removeFilter: function( name, callback ){ + acf.removeFilter(name, this[ callback ]); + }, + + /** + * $ + * + * description + * + * @date 16/12/17 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + $: function( selector ){ + return this.$el.find( selector ); + }, + + /** + * remove + * + * Removes the element and listenters + * + * @date 19/12/17 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + remove: function(){ + this.removeEvents(); + this.removeActions(); + this.removeFilters(); + this.$el.remove(); + }, + + /** + * setTimeout + * + * description + * + * @date 16/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + setTimeout: function( callback, milliseconds ){ + return setTimeout( this.proxy(callback), milliseconds ); + }, + + /** + * time + * + * used for debugging + * + * @date 7/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + time: function(){ + console.time( this.id || this.cid ); + }, + + /** + * timeEnd + * + * used for debugging + * + * @date 7/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + timeEnd: function(){ + console.timeEnd( this.id || this.cid ); + }, + + /** + * show + * + * description + * + * @date 15/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + show: function(){ + acf.show( this.$el ); + }, + + + /** + * hide + * + * description + * + * @date 15/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + hide: function(){ + acf.hide( this.$el ); + }, + + /** + * proxy + * + * Returns a new function scoped to this model + * + * @date 29/3/18 + * @since 5.6.9 + * + * @param function callback + * @return function + */ + + proxy: function( callback ){ + return $.proxy( callback, this ); + } + + + }); + + // Set up inheritance for the model + Model.extend = extend; + + // Global model storage + acf.models = {}; + + /** + * acf.getInstance + * + * This function will get an instance from an element + * + * @date 5/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getInstance = function( $el ){ + return $el.data('acf'); + }; + + /** + * acf.getInstances + * + * This function will get an array of instances from multiple elements + * + * @date 5/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getInstances = function( $el ){ + var instances = []; + $el.each(function(){ + instances.push( acf.getInstance( $(this) ) ); + }); + return instances; + }; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-notice.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-notice.js new file mode 100644 index 0000000..ea2de79 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-notice.js @@ -0,0 +1,146 @@ +(function($, undefined){ + + var Notice = acf.Model.extend({ + + data: { + text: '', + type: '', + timeout: 0, + dismiss: true, + target: false, + close: function(){} + }, + + events: { + 'click .acf-notice-dismiss': 'onClickClose', + }, + + tmpl: function(){ + return '
        '; + }, + + setup: function( props ){ + $.extend(this.data, props); + this.$el = $(this.tmpl()); + }, + + initialize: function(){ + + // render + this.render(); + + // show + this.show(); + }, + + render: function(){ + + // class + this.type( this.get('type') ); + + // text + this.html( '

        ' + this.get('text') + '

        ' ); + + // close + if( this.get('dismiss') ) { + this.$el.append(''); + this.$el.addClass('-dismiss'); + } + + // timeout + var timeout = this.get('timeout'); + if( timeout ) { + this.away( timeout ); + } + }, + + update: function( props ){ + + // update + $.extend(this.data, props); + + // re-initialize + this.initialize(); + + // refresh events + this.removeEvents(); + this.addEvents(); + }, + + show: function(){ + var $target = this.get('target'); + if( $target ) { + $target.prepend( this.$el ); + } + }, + + hide: function(){ + this.$el.remove(); + }, + + away: function( timeout ){ + this.setTimeout(function(){ + acf.remove( this.$el ); + }, timeout ); + }, + + type: function( type ){ + + // remove prev type + var prevType = this.get('type'); + if( prevType ) { + this.$el.removeClass('-' + prevType); + } + + // add new type + this.$el.addClass('-' + type); + + // backwards compatibility + if( type == 'error' ) { + this.$el.addClass('acf-error-message'); + } + }, + + html: function( html ){ + this.$el.html( html ); + }, + + text: function( text ){ + this.$('p').html( text ); + }, + + onClickClose: function( e, $el ){ + e.preventDefault(); + this.get('close').apply(this, arguments); + this.remove(); + } + }); + + acf.newNotice = function( props ){ + + // ensure object + if( typeof props !== 'object' ) { + props = { text: props }; + } + + // instantiate + return new Notice( props ); + }; + + var noticeManager = new acf.Model({ + wait: 'prepare', + priority: 1, + initialize: function(){ + + // vars + var $notice = $('.acf-admin-notice'); + + // move to avoid WP flicker + if( $notice.length ) { + $('h1:first').after( $notice ); + } + } + }); + + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-panel.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-panel.js new file mode 100644 index 0000000..8584eca --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-panel.js @@ -0,0 +1,34 @@ +(function($, undefined){ + + var panel = new acf.Model({ + + events: { + 'click .acf-panel-title': 'onClick', + }, + + onClick: function( e, $el ){ + e.preventDefault(); + this.toggle( $el.parent() ); + }, + + isOpen: function( $el ) { + return $el.hasClass('-open'); + }, + + toggle: function( $el ){ + this.isOpen($el) ? this.close( $el ) : this.open( $el ); + }, + + open: function( $el ){ + $el.addClass('-open'); + $el.find('.acf-panel-title i').attr('class', 'dashicons dashicons-arrow-down'); + }, + + close: function( $el ){ + $el.removeClass('-open'); + $el.find('.acf-panel-title i').attr('class', 'dashicons dashicons-arrow-right'); + } + + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-popup.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-popup.js new file mode 100644 index 0000000..e0d807e --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-popup.js @@ -0,0 +1,121 @@ +(function($, undefined){ + + acf.models.Popup = acf.Model.extend({ + + data: { + title: '', + content: '', + width: 0, + height: 0, + loading: false, + }, + + events: { + 'click [data-event="close"]': 'onClickClose', + 'click .acf-close-popup': 'onClickClose', + }, + + setup: function( props ){ + $.extend(this.data, props); + this.$el = $(this.tmpl()); + }, + + initialize: function(){ + this.render(); + this.open(); + }, + + tmpl: function(){ + return [ + '
        ', + '
        ', + '

        ', + '
        ', + '
        ', + '
        ', + '
        ', + '
        ' + ].join(''); + }, + + render: function(){ + + // vars + var title = this.get('title'); + var content = this.get('content'); + var loading = this.get('loading'); + var width = this.get('width'); + var height = this.get('height'); + + // html + this.title( title ); + this.content( content ); + + // width + if( width ) { + this.$('.acf-popup-box').css('width', width); + } + + // height + if( height ) { + this.$('.acf-popup-box').css('min-height', height); + } + + // loading + this.loading( loading ); + + // action + acf.doAction('append', this.$el); + + }, + + update: function( props ){ + this.data = acf.parseArgs(props, this.data); + this.render(); + }, + + title: function( title ){ + this.$('.title:first h3').html( title ); + }, + + content: function( content ){ + this.$('.inner:first').html( content ); + }, + + loading: function( show ){ + var $loading = this.$('.loading:first'); + show ? $loading.show() : $loading.hide(); + }, + + open: function(){ + $('body').append( this.$el ); + }, + + close: function(){ + this.remove(); + }, + + onClickClose: function( e, $el ){ + e.preventDefault(); + this.close(); + } + + }); + + /** + * newPopup + * + * Creates a new Popup with the supplied props + * + * @date 17/12/17 + * @since 5.6.5 + * + * @param object props + * @return object + */ + + acf.newPopup = function( props ){ + return new acf.models.Popup( props ); + }; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-postbox.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-postbox.js new file mode 100644 index 0000000..4870390 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-postbox.js @@ -0,0 +1,212 @@ +(function($, undefined){ + + /** + * postboxManager + * + * Manages postboxes on the screen. + * + * @date 25/5/19 + * @since 5.8.1 + * + * @param void + * @return void + */ + var postboxManager = new acf.Model({ + wait: 'prepare', + priority: 1, + initialize: function(){ + (acf.get('postboxes') || []).map( acf.newPostbox ); + }, + }); + + /** + * acf.getPostbox + * + * Returns a postbox instance. + * + * @date 23/9/18 + * @since 5.7.7 + * + * @param mixed $el Either a jQuery element or the postbox id. + * @return object + */ + acf.getPostbox = function( $el ){ + + // allow string parameter + if( typeof arguments[0] == 'string' ) { + $el = $('#' + arguments[0]); + } + + // return instance + return acf.getInstance( $el ); + }; + + /** + * acf.getPostboxes + * + * Returns an array of postbox instances. + * + * @date 23/9/18 + * @since 5.7.7 + * + * @param void + * @return array + */ + acf.getPostboxes = function(){ + return acf.getInstances( $('.acf-postbox') ); + }; + + /** + * acf.newPostbox + * + * Returns a new postbox instance for the given props. + * + * @date 20/9/18 + * @since 5.7.6 + * + * @param object props The postbox properties. + * @return object + */ + acf.newPostbox = function( props ){ + return new acf.models.Postbox( props ); + }; + + /** + * acf.models.Postbox + * + * The postbox model. + * + * @date 20/9/18 + * @since 5.7.6 + * + * @param void + * @return void + */ + acf.models.Postbox = acf.Model.extend({ + + data: { + id: '', + key: '', + style: 'default', + label: 'top', + edit: '' + }, + + setup: function( props ){ + + // compatibilty + if( props.editLink ) { + props.edit = props.editLink; + } + + // extend data + $.extend(this.data, props); + + // set $el + this.$el = this.$postbox(); + }, + + $postbox: function(){ + return $('#' + this.get('id')); + }, + + $hide: function(){ + return $('#' + this.get('id') + '-hide'); + }, + + $hideLabel: function(){ + return this.$hide().parent(); + }, + + $hndle: function(){ + return this.$('> .hndle'); + }, + + $inside: function(){ + return this.$('> .inside'); + }, + + isVisible: function(){ + return this.$el.hasClass('acf-hidden'); + }, + + initialize: function(){ + + // Add default class. + this.$el.addClass('acf-postbox'); + + // Remove 'hide-if-js class. + // This class is added by WP to postboxes that are hidden via the "Screen Options" tab. + this.$el.removeClass('hide-if-js'); + + // Add field group style class (ignore in block editor). + if( acf.get('editor') !== 'block' ) { + var style = this.get('style'); + if( style !== 'default' ) { + this.$el.addClass( style ); + } + } + + // Add .inside class. + this.$inside().addClass('acf-fields').addClass('-' + this.get('label')); + + // Append edit link. + var edit = this.get('edit'); + if( edit ) { + this.$hndle().append(''); + } + + // Show postbox. + this.show(); + }, + + show: function(){ + + // Show label. + this.$hideLabel().show(); + + // toggle on checkbox + this.$hide().prop('checked', true); + + // Show postbox + this.$el.show().removeClass('acf-hidden'); + }, + + enable: function(){ + acf.enable( this.$el, 'postbox' ); + }, + + showEnable: function(){ + this.show(); + this.enable(); + }, + + hide: function(){ + + // Hide label. + this.$hideLabel().hide(); + + // Hide postbox + this.$el.hide().addClass('acf-hidden'); + }, + + disable: function(){ + acf.disable( this.$el, 'postbox' ); + }, + + hideDisable: function(){ + this.hide(); + this.disable(); + }, + + html: function( html ){ + + // Update HTML. + this.$inside().html( html ); + + // Do action. + acf.doAction('append', this.$el); + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-screen.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-screen.js new file mode 100644 index 0000000..0b1a857 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-screen.js @@ -0,0 +1,593 @@ +(function($, undefined){ + + acf.screen = new acf.Model({ + + active: true, + + xhr: false, + + timeout: false, + + wait: 'load', + + events: { + 'change #page_template': 'onChange', + 'change #parent_id': 'onChange', + 'change #post-formats-select': 'onChange', + 'change .categorychecklist': 'onChange', + 'change .tagsdiv': 'onChange', + 'change .acf-taxonomy-field[data-save="1"]': 'onChange', + 'change #product-type': 'onChange' + }, + + isPost: function(){ + return acf.get('screen') === 'post'; + }, + + isUser: function(){ + return acf.get('screen') === 'user'; + }, + + isTaxonomy: function(){ + return acf.get('screen') === 'taxonomy'; + }, + + isAttachment: function(){ + return acf.get('screen') === 'attachment'; + }, + + isNavMenu: function(){ + return acf.get('screen') === 'nav_menu'; + }, + + isWidget: function(){ + return acf.get('screen') === 'widget'; + }, + + isComment: function(){ + return acf.get('screen') === 'comment'; + }, + + getPageTemplate: function(){ + var $el = $('#page_template'); + return $el.length ? $el.val() : null; + }, + + getPageParent: function( e, $el ){ + var $el = $('#parent_id'); + return $el.length ? $el.val() : null; + }, + + getPageType: function( e, $el ){ + return this.getPageParent() ? 'child' : 'parent'; + }, + + getPostType: function(){ + return $('#post_type').val(); + }, + + getPostFormat: function( e, $el ){ + var $el = $('#post-formats-select input:checked'); + if( $el.length ) { + var val = $el.val(); + return (val == '0') ? 'standard' : val; + } + return null; + }, + + getPostCoreTerms: function(){ + + // vars + var terms = {}; + + // serialize WP taxonomy postboxes + var data = acf.serialize( $('.categorydiv, .tagsdiv') ); + + // use tax_input (tag, custom-taxonomy) when possible. + // this data is already formatted in taxonomy => [terms]. + if( data.tax_input ) { + terms = data.tax_input; + } + + // append "category" which uses a different name + if( data.post_category ) { + terms.category = data.post_category; + } + + // convert any string values (tags) into array format + for( var tax in terms ) { + if( !acf.isArray(terms[tax]) ) { + terms[tax] = terms[tax].split(/,[\s]?/); + } + } + + // return + return terms; + }, + + getPostTerms: function(){ + + // Get core terms. + var terms = this.getPostCoreTerms(); + + // loop over taxonomy fields and add their values + acf.getFields({type: 'taxonomy'}).map(function( field ){ + + // ignore fields that don't save + if( !field.get('save') ) { + return; + } + + // vars + var val = field.val(); + var tax = field.get('taxonomy'); + + // check val + if( val ) { + + // ensure terms exists + terms[ tax ] = terms[ tax ] || []; + + // ensure val is an array + val = acf.isArray(val) ? val : [val]; + + // append + terms[ tax ] = terms[ tax ].concat( val ); + } + }); + + // add WC product type + if( (productType = this.getProductType()) !== null ) { + terms.product_type = [productType]; + } + + // remove duplicate values + for( var tax in terms ) { + terms[tax] = acf.uniqueArray(terms[tax]); + } + + // return + return terms; + }, + + getProductType: function(){ + var $el = $('#product-type'); + return $el.length ? $el.val() : null; + }, + + check: function(){ + + // bail early if not for post + if( acf.get('screen') !== 'post' ) { + return; + } + + // abort XHR if is already loading AJAX data + if( this.xhr ) { + this.xhr.abort(); + } + + // vars + var ajaxData = acf.parseArgs(this.data, { + action: 'acf/ajax/check_screen', + screen: acf.get('screen'), + exists: [] + }); + + // post id + if( this.isPost() ) { + ajaxData.post_id = acf.get('post_id'); + } + + // post type + if( (postType = this.getPostType()) !== null ) { + ajaxData.post_type = postType; + } + + // page template + if( (pageTemplate = this.getPageTemplate()) !== null ) { + ajaxData.page_template = pageTemplate; + } + + // page parent + if( (pageParent = this.getPageParent()) !== null ) { + ajaxData.page_parent = pageParent; + } + + // page type + if( (pageType = this.getPageType()) !== null ) { + ajaxData.page_type = pageType; + } + + // post format + if( (postFormat = this.getPostFormat()) !== null ) { + ajaxData.post_format = postFormat; + } + + // post terms + if( (postTerms = this.getPostTerms()) !== null ) { + ajaxData.post_terms = postTerms; + } + + // add array of existing postboxes to increase performance and reduce JSON HTML + acf.getPostboxes().map(function( postbox ){ + ajaxData.exists.push( postbox.get('key') ); + }); + + // filter + ajaxData = acf.applyFilters('check_screen_args', ajaxData); + + // success + var onSuccess = function( json ){ + + // Check success. + if( acf.isAjaxSuccess(json) ) { + + // Render post screen. + if( acf.get('screen') == 'post' ) { + this.renderPostScreen( json.data ); + + // Render user screen. + } else if( acf.get('screen') == 'user' ) { + this.renderUserScreen( json.data ); + } + } + + // action + acf.doAction('check_screen_complete', json.data, ajaxData); + }; + + // ajax + this.xhr = $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax( ajaxData ), + type: 'post', + dataType: 'json', + context: this, + success: onSuccess + }); + }, + + onChange: function( e, $el ){ + this.setTimeout(this.check, 1); + }, + + renderPostScreen: function( data ){ + + // vars + var visible = []; + + // Helper function to copy events + var copyEvents = function( $from, $to ){ + var events = $._data($from[0]).events; + for( var type in events ) { + for( var i = 0; i < events[type].length; i++ ) { + $to.on( type, events[type][i].handler ); + } + } + } + + // Helper function to sort metabox. + var sortMetabox = function( id, ids ){ + + // Find position of id within ids. + var index = ids.indexOf( id ); + + // Bail early if index not found. + if( index == -1 ) { + return false; + } + + // Loop over metaboxes behind (in reverse order). + for( var i = index-1; i >= 0; i-- ) { + if( $('#'+ids[i]).length ) { + return $('#'+ids[i]).after( $('#'+id) ); + } + } + + // Loop over metaboxes infront. + for( var i = index+1; i < ids.length; i++ ) { + if( $('#'+ids[i]).length ) { + return $('#'+ids[i]).before( $('#'+id) ); + } + } + + // Return false if not sorted. + return false; + }; + + // Show these postboxes. + data.results.map(function( result, i ){ + + // vars + var postbox = acf.getPostbox( result.id ); + + // Create postbox if doesn't exist. + if( !postbox ) { + + // Create it. + var $postbox = $([ + '
        ', + '', + '

        ', + '' + result.title + '', + '

        ', + '
        ', + result.html, + '
        ', + '
        ' + ].join('')); + + // Create new hide toggle. + if( $('#adv-settings').length ) { + var $prefs = $('#adv-settings .metabox-prefs'); + var $label = $([ + '' + ].join('')); + + // Copy default WP events onto checkbox. + copyEvents( $prefs.find('input').first(), $label.find('input') ); + + // Append hide label + $prefs.append( $label ); + } + + // Append metabox to the bottom of "side-sortables". + if( result.position === 'side' ) { + $('#' + result.position + '-sortables').append( $postbox ); + + // Prepend metabox to the top of "normal-sortbables". + } else { + $('#' + result.position + '-sortables').prepend( $postbox ); + } + + // Position metabox amongst existing ACF metaboxes within the same location. + var order = []; + data.results.map(function( _result ){ + if( result.position === _result.position && $('#' + result.position + '-sortables #' + _result.id).length ) { + order.push( _result.id ); + } + }); + sortMetabox(result.id, order) + + // Check 'sorted' for user preference. + if( data.sorted ) { + + // Loop over each position (acf_after_title, side, normal). + for( var position in data.sorted ) { + + // Explode string into array of ids. + var order = data.sorted[position].split(','); + + // Position metabox relative to order. + if( sortMetabox(result.id, order) ) { + break; + } + } + } + + // Copy default WP events onto metabox. + var $submitdiv = $('#submitdiv'); + if( $('#submitdiv').length ) { + copyEvents( $submitdiv.children('.handlediv'), $postbox.children('.handlediv') ); + copyEvents( $submitdiv.children('.hndle'), $postbox.children('.hndle') ); + } + + // Initalize it (modifies HTML). + postbox = acf.newPostbox( result ); + + // Trigger action. + acf.doAction('append', $postbox); + acf.doAction('append_postbox', postbox); + } + + // show postbox + postbox.showEnable(); + + // Do action. + acf.doAction('show_postbox', postbox); + + // append + visible.push( result.id ); + }); + + // Hide these postboxes. + acf.getPostboxes().map(function( postbox ){ + if( visible.indexOf( postbox.get('id') ) === -1 ) { + postbox.hideDisable(); + + // Do action. + acf.doAction('hide_postbox', postbox); + } + }); + + // Update style. + $('#acf-style').html( data.style ); + }, + + renderUserScreen: function( json ){ + + } + }); + + /** + * gutenScreen + * + * Adds compatibility with the Gutenberg edit screen. + * + * @date 11/12/18 + * @since 5.8.0 + * + * @param void + * @return void + */ + var gutenScreen = new acf.Model({ + + // Wait until load to avoid 'core' issues when loading taxonomies. + wait: 'load', + + initialize: function(){ + + // Bail early if not Gutenberg. + if( !acf.isGutenberg() ) { + return; + } + + // Listen for changes. + wp.data.subscribe(this.proxy(this.onChange)); + + // Customize "acf.screen.get" functions. + acf.screen.getPageTemplate = this.getPageTemplate; + acf.screen.getPageParent = this.getPageParent; + acf.screen.getPostType = this.getPostType; + acf.screen.getPostFormat = this.getPostFormat; + acf.screen.getPostCoreTerms = this.getPostCoreTerms; + + // Disable unload + acf.unload.disable(); + + // Add actions. + //this.addAction( 'append_postbox', acf.screen.refreshAvailableMetaBoxesPerLocation ); + }, + + onChange: function(){ + + // Get edits. + var edits = wp.data.select( 'core/editor' ).getPostEdits(); + + // Check specific attributes. + var attributes = [ + 'template', + 'parent', + 'format' + ]; + + // Append taxonomy attributes. + var taxonomies = wp.data.select( 'core' ).getTaxonomies() || []; + taxonomies.map(function( taxonomy ){ + attributes.push( taxonomy.rest_base ); + }); + + // Filter out attributes that have not changed. + attributes = attributes.filter(this.proxy(function( attr ){ + return ( edits[attr] !== undefined && edits[attr] !== this.get(attr) ); + })); + + // Trigger change if has attributes. + if( attributes.length ) { + this.triggerChange( edits ) + } + }, + + triggerChange: function( edits ){ + + // Update this.data if edits are provided. + if( edits !== undefined ) { + this.data = edits; + } + + // Check screen. + acf.screen.check(); + }, + + getPageTemplate: function(){ + return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'template' ); + }, + + getPageParent: function( e, $el ){ + return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'parent' ); + }, + + getPostType: function(){ + return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'type' ); + }, + + getPostFormat: function( e, $el ){ + return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'format' ); + }, + + getPostCoreTerms: function(){ + + // vars + var terms = {}; + + // Loop over taxonomies. + var taxonomies = wp.data.select( 'core' ).getTaxonomies() || []; + taxonomies.map(function( taxonomy ){ + + // Append selected taxonomies to terms object. + var postTerms = wp.data.select( 'core/editor' ).getEditedPostAttribute( taxonomy.rest_base ); + if( postTerms ) { + terms[ taxonomy.slug ] = postTerms; + } + }); + + // return + return terms; + } + }); + + /** + * acf.screen.refreshAvailableMetaBoxesPerLocation + * + * Refreshes the WP data state based on metaboxes found in the DOM. + * + * Caution. Not safe to use. + * Causes duplicate dispatch listeners when saving post resulting in duplicate postmeta. + * + * @date 6/3/19 + * @since 5.7.13 + * + * @param void + * @return void + */ + acf.screen.refreshAvailableMetaBoxesPerLocation = function() { + + // Extract vars. + var select = wp.data.select( 'core/edit-post' ); + var dispatch = wp.data.dispatch( 'core/edit-post' ); + + // Load current metabox locations and data. + var data = {}; + select.getActiveMetaBoxLocations().map(function( location ){ + data[ location ] = select.getMetaBoxesPerLocation( location ); + }); + + // Generate flat array of existing ids. + var ids = []; + for( var k in data ) { + ids = ids.concat( data[k].map(function(m){ return m.id; }) ); + } + + // Append ACF metaboxes. + acf.getPostboxes().map(function( postbox ){ + + // Ignore if already exists in data. + if( ids.indexOf( postbox.get('id') ) !== -1 ) { + return; + } + + // Get metabox location looking at parent form. + var location = postbox.$el.closest('form').attr('class').replace('metabox-location-', ''); + + // Ensure location exists. + data[ location ] = data[ location ] || []; + + // Append. + data[ location ].push({ + id: postbox.get('id'), + title: postbox.get('title') + }); + }); + + // Update state. + dispatch.setAvailableMetaBoxesPerLocation(data); + }; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-select2.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-select2.js new file mode 100644 index 0000000..87e640f --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-select2.js @@ -0,0 +1,793 @@ +(function($, undefined){ + + /** + * acf.newSelect2 + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newSelect2 = function( $select, props ){ + + // defaults + props = acf.parseArgs(props, { + allowNull: false, + placeholder: '', + multiple: false, + field: false, + ajax: false, + ajaxAction: '', + ajaxData: function( data ){ return data; }, + ajaxResults: function( json ){ return json; }, + }); + + // initialize + if( getVersion() == 4 ) { + var select2 = new Select2_4( $select, props ); + } else { + var select2 = new Select2_3( $select, props ); + } + + // actions + acf.doAction('new_select2', select2); + + // return + return select2; + }; + + /** + * getVersion + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function getVersion() { + + // v4 + if( acf.isset(window, 'jQuery', 'fn', 'select2', 'amd') ) { + return 4; + } + + // v3 + if( acf.isset(window, 'Select2') ) { + return 3; + } + + // return + return false; + } + + /** + * Select2 + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var Select2 = acf.Model.extend({ + + setup: function( $select, props ){ + $.extend(this.data, props); + this.$el = $select; + }, + + initialize: function(){ + + }, + + selectOption: function( value ){ + var $option = this.getOption( value ); + if( !$option.prop('selected') ) { + $option.prop('selected', true).trigger('change'); + } + }, + + unselectOption: function( value ){ + var $option = this.getOption( value ); + if( $option.prop('selected') ) { + $option.prop('selected', false).trigger('change'); + } + }, + + getOption: function( value ){ + return this.$('option[value="' + value + '"]'); + }, + + addOption: function( option ){ + + // defaults + option = acf.parseArgs(option, { + id: '', + text: '', + selected: false + }); + + // vars + var $option = this.getOption( option.id ); + + // append + if( !$option.length ) { + $option = $(''); + $option.html( option.text ); + $option.attr('value', option.id); + $option.prop('selected', option.selected); + this.$el.append($option); + } + + // chain + return $option; + }, + + getValue: function(){ + + // vars + var val = []; + var $options = this.$el.find('option:selected'); + + // bail early if no selected + if( !$options.exists() ) { + return val; + } + + // sort by attribute + $options = $options.sort(function(a, b) { + return +a.getAttribute('data-i') - +b.getAttribute('data-i'); + }); + + // loop + $options.each(function(){ + var $el = $(this); + val.push({ + $el: $el, + id: $el.attr('value'), + text: $el.text(), + }); + }); + + // return + return val; + + }, + + mergeOptions: function(){ + + }, + + getChoices: function(){ + + // callback + var crawl = function( $parent ){ + + // vars + var choices = []; + + // loop + $parent.children().each(function(){ + + // vars + var $child = $(this); + + // optgroup + if( $child.is('optgroup') ) { + + choices.push({ + text: $child.attr('label'), + children: crawl( $child ) + }); + + // option + } else { + + choices.push({ + id: $child.attr('value'), + text: $child.text() + }); + } + }); + + // return + return choices; + }; + + // crawl + return crawl( this.$el ); + }, + + decodeChoices: function( choices ){ + + // callback + var crawl = function( items ){ + items.map(function( item ){ + item.text = acf.decode( item.text ); + if( item.children ) { + item.children = crawl( item.children ); + } + return item; + }); + return items; + }; + + // crawl + return crawl( choices ); + }, + + getAjaxData: function( params ){ + + // vars + var ajaxData = { + action: this.get('ajaxAction'), + s: params.term || '', + paged: params.page || 1 + }; + + // field helper + var field = this.get('field'); + if( field ) { + ajaxData.field_key = field.get('key'); + } + + // callback + var callback = this.get('ajaxData'); + if( callback ) { + ajaxData = callback.apply( this, [ajaxData, params] ); + } + + // filter + ajaxData = acf.applyFilters( 'select2_ajax_data', ajaxData, this.data, this.$el, (field || false), this ); + + // return + return acf.prepareForAjax(ajaxData); + }, + + getAjaxResults: function( json, params ){ + + // defaults + json = acf.parseArgs(json, { + results: false, + more: false, + }); + + // decode + if( json.results ) { + json.results = this.decodeChoices(json.results); + } + + // callback + var callback = this.get('ajaxResults'); + if( callback ) { + json = callback.apply( this, [json, params] ); + } + + // filter + json = acf.applyFilters( 'select2_ajax_results', json, params, this ); + + // return + return json; + }, + + processAjaxResults: function( json, params ){ + + // vars + var json = this.getAjaxResults( json, params ); + + // change more to pagination + if( json.more ) { + json.pagination = { more: true }; + } + + // merge together groups + setTimeout($.proxy(this.mergeOptions, this), 1); + + // return + return json; + }, + + destroy: function(){ + + // destroy via api + if( this.$el.data('select2') ) { + this.$el.select2('destroy'); + } + + // destory via HTML (duplicating HTML does not contain data) + this.$el.siblings('.select2-container').remove(); + } + + }); + + + /** + * Select2_4 + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var Select2_4 = Select2.extend({ + + initialize: function(){ + + // vars + var $select = this.$el; + var options = { + width: '100%', + allowClear: this.get('allowNull'), + placeholder: this.get('placeholder'), + multiple: this.get('multiple'), + data: [], + escapeMarkup: function( m ){ return m; } + }; + + // multiple + if( options.multiple ) { + + // reorder options + this.getValue().map(function( item ){ + item.$el.detach().appendTo( $select ); + }); + } + + // remove conflicting atts + $select.removeData('ajax'); + $select.removeAttr('data-ajax'); + + // ajax + if( this.get('ajax') ) { + + options.ajax = { + url: acf.get('ajaxurl'), + delay: 250, + dataType: 'json', + type: 'post', + cache: false, + data: $.proxy(this.getAjaxData, this), + processResults: $.proxy(this.processAjaxResults, this), + }; + } + + // filter for 3rd party customization + //options = acf.applyFilters( 'select2_args', options, $select, this ); + var field = this.get('field'); + options = acf.applyFilters( 'select2_args', options, $select, this.data, (field || false), this ); + + // add select2 + $select.select2( options ); + + // get container (Select2 v4 does not return this from constructor) + var $container = $select.next('.select2-container'); + + // multiple + if( options.multiple ) { + + // vars + var $ul = $container.find('ul'); + + // sortable + $ul.sortable({ + stop: function( e ) { + + // loop + $ul.find('.select2-selection__choice').each(function() { + + // vars + var $option = $( $(this).data('data').element ); + + // detach and re-append to end + $option.detach().appendTo( $select ); + }); + + // trigger change on input (JS error if trigger on select) + $select.trigger('change'); + } + }); + + // on select, move to end + $select.on('select2:select', this.proxy(function( e ){ + this.getOption( e.params.data.id ).detach().appendTo( this.$el ); + })); + } + + // add class + $container.addClass('-acf'); + + // action for 3rd party customization + acf.doAction('select2_init', $select, options, this.data, (field || false), this); + }, + + mergeOptions: function(){ + + // vars + var $prevOptions = false; + var $prevGroup = false; + + // loop + $('.select2-results__option[role="group"]').each(function(){ + + // vars + var $options = $(this).children('ul'); + var $group = $(this).children('strong'); + + // compare to previous + if( $prevGroup && $prevGroup.text() === $group.text() ) { + $prevOptions.append( $options.children() ); + $(this).remove(); + return; + } + + // update vars + $prevOptions = $options; + $prevGroup = $group; + + }); + }, + + }); + + /** + * Select2_3 + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var Select2_3 = Select2.extend({ + + initialize: function(){ + + // vars + var $select = this.$el; + var value = this.getValue(); + var multiple = this.get('multiple'); + var options = { + width: '100%', + allowClear: this.get('allowNull'), + placeholder: this.get('placeholder'), + separator: '||', + multiple: this.get('multiple'), + data: this.getChoices(), + escapeMarkup: function( m ){ return m; }, + dropdownCss: { + 'z-index': '999999999' + }, + initSelection: function( element, callback ) { + if( multiple ) { + callback( value ); + } else { + callback( value.shift() ); + } + } + }; + + // get hidden input + var $input = $select.siblings('input'); + if( !$input.length ) { + $input = $(''); + $select.before( $input ); + } + + // set input value + inputValue = value.map(function(item){ return item.id }).join('||'); + $input.val( inputValue ); + + // multiple + if( options.multiple ) { + + // reorder options + value.map(function( item ){ + item.$el.detach().appendTo( $select ); + }); + } + + // remove blank option as we have a clear all button + if( options.allowClear ) { + options.data = options.data.filter(function(item){ + return item.id !== ''; + }); + } + + // remove conflicting atts + $select.removeData('ajax'); + $select.removeAttr('data-ajax'); + + // ajax + if( this.get('ajax') ) { + + options.ajax = { + url: acf.get('ajaxurl'), + quietMillis: 250, + dataType: 'json', + type: 'post', + cache: false, + data: $.proxy(this.getAjaxData, this), + results: $.proxy(this.processAjaxResults, this), + }; + } + + // filter for 3rd party customization + var field = this.get('field'); + options = acf.applyFilters( 'select2_args', options, $select, this.data, (field || false), this ); + + // add select2 + $input.select2( options ); + + // get container + var $container = $input.select2('container'); + + // helper to find this select's option + var getOption = $.proxy(this.getOption, this); + + // multiple + if( options.multiple ) { + + // vars + var $ul = $container.find('ul'); + + // sortable + $ul.sortable({ + stop: function() { + + // loop + $ul.find('.select2-search-choice').each(function() { + + // vars + var data = $(this).data('select2Data'); + var $option = getOption( data.id ); + + // detach and re-append to end + $option.detach().appendTo( $select ); + }); + + // trigger change on input (JS error if trigger on select) + $select.trigger('change'); + } + }); + } + + // on select, create option and move to end + $input.on('select2-selecting', function( e ){ + + // vars + var item = e.choice; + var $option = getOption( item.id ); + + // create if doesn't exist + if( !$option.length ) { + $option = $(''); + } + + // detach and re-append to end + $option.detach().appendTo( $select ); + }); + + // add class + $container.addClass('-acf'); + + // action for 3rd party customization + acf.doAction('select2_init', $select, options, this.data, (field || false), this); + + // change + $input.on('change', function(){ + var val = $input.val(); + if( val.indexOf('||') ) { + val = val.split('||'); + } + $select.val( val ).trigger('change'); + }); + + // hide select + $select.hide(); + }, + + mergeOptions: function(){ + + // vars + var $prevOptions = false; + var $prevGroup = false; + + // loop + $('#select2-drop .select2-result-with-children').each(function(){ + + // vars + var $options = $(this).children('ul'); + var $group = $(this).children('.select2-result-label'); + + // compare to previous + if( $prevGroup && $prevGroup.text() === $group.text() ) { + $prevGroup.append( $options.children() ); + $(this).remove(); + return; + } + + // update vars + $prevOptions = $options; + $prevGroup = $group; + + }); + + }, + + getAjaxData: function( term, page ){ + + // create Select2 v4 params + var params = { + term: term, + page: page + } + + // return + return Select2.prototype.getAjaxData.apply(this, [params]); + }, + + }); + + + // manager + var select2Manager = new acf.Model({ + priority: 5, + wait: 'prepare', + initialize: function(){ + + // vars + var locale = acf.get('locale'); + var rtl = acf.get('rtl'); + var l10n = acf.get('select2L10n'); + var version = getVersion(); + + // bail ealry if no l10n + if( !l10n ) { + return false; + } + + // bail early if 'en' + if( locale.indexOf('en') === 0 ) { + return false; + } + + // initialize + if( version == 4 ) { + this.addTranslations4(); + } else if( version == 3 ) { + this.addTranslations3(); + } + }, + + addTranslations4: function(){ + + // vars + var l10n = acf.get('select2L10n'); + var locale = acf.get('locale'); + + // modify local to match html[lang] attribute (used by Select2) + locale = locale.replace('_', '-'); + + // select2L10n + var select2L10n = { + errorLoading: function () { + return l10n.load_fail; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + if( overChars > 1 ) { + return l10n.input_too_long_n.replace( '%d', overChars ); + } + return l10n.input_too_long_1; + }, + inputTooShort: function( args ){ + var remainingChars = args.minimum - args.input.length; + if( remainingChars > 1 ) { + return l10n.input_too_short_n.replace( '%d', remainingChars ); + } + return l10n.input_too_short_1; + }, + loadingMore: function () { + return l10n.load_more; + }, + maximumSelected: function( args ) { + var maximum = args.maximum; + if( maximum > 1 ) { + return l10n.selection_too_long_n.replace( '%d', maximum ); + } + return l10n.selection_too_long_1; + }, + noResults: function () { + return l10n.matches_0; + }, + searching: function () { + return l10n.searching; + } + }; + + // append + jQuery.fn.select2.amd.define('select2/i18n/' + locale, [], function(){ + return select2L10n; + }); + }, + + addTranslations3: function(){ + + // vars + var l10n = acf.get('select2L10n'); + var locale = acf.get('locale'); + + // modify local to match html[lang] attribute (used by Select2) + locale = locale.replace('_', '-'); + + // select2L10n + var select2L10n = { + formatMatches: function( matches ) { + if( matches > 1 ) { + return l10n.matches_n.replace( '%d', matches ); + } + return l10n.matches_1; + }, + formatNoMatches: function() { + return l10n.matches_0; + }, + formatAjaxError: function() { + return l10n.load_fail; + }, + formatInputTooShort: function( input, min ) { + var remainingChars = min - input.length; + if( remainingChars > 1 ) { + return l10n.input_too_short_n.replace( '%d', remainingChars ); + } + return l10n.input_too_short_1; + }, + formatInputTooLong: function( input, max ) { + var overChars = input.length - max; + if( overChars > 1 ) { + return l10n.input_too_long_n.replace( '%d', overChars ); + } + return l10n.input_too_long_1; + }, + formatSelectionTooBig: function( maximum ) { + if( maximum > 1 ) { + return l10n.selection_too_long_n.replace( '%d', maximum ); + } + return l10n.selection_too_long_1; + }, + formatLoadMore: function() { + return l10n.load_more; + }, + formatSearching: function() { + return l10n.searching; + } + }; + + // ensure locales exists + $.fn.select2.locales = $.fn.select2.locales || {}; + + // append + $.fn.select2.locales[ locale ] = select2L10n; + $.extend($.fn.select2.defaults, select2L10n); + } + + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-tinymce.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-tinymce.js new file mode 100644 index 0000000..4dbaa7d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-tinymce.js @@ -0,0 +1,398 @@ +(function($, undefined){ + + acf.tinymce = { + + /* + * defaults + * + * This function will return default mce and qt settings + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + defaults: function(){ + + // bail early if no tinyMCEPreInit + if( typeof tinyMCEPreInit === 'undefined' ) return false; + + // vars + var defaults = { + tinymce: tinyMCEPreInit.mceInit.acf_content, + quicktags: tinyMCEPreInit.qtInit.acf_content + }; + + // return + return defaults; + }, + + + /* + * initialize + * + * This function will initialize the tinymce and quicktags instances + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + initialize: function( id, args ){ + + // defaults + args = acf.parseArgs(args, { + tinymce: true, + quicktags: true, + toolbar: 'full', + mode: 'visual', // visual,text + field: false + }); + + // tinymce + if( args.tinymce ) { + this.initializeTinymce( id, args ); + } + + // quicktags + if( args.quicktags ) { + this.initializeQuicktags( id, args ); + } + }, + + + /* + * initializeTinymce + * + * This function will initialize the tinymce instance + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + initializeTinymce: function( id, args ){ + + // vars + var $textarea = $('#'+id); + var defaults = this.defaults(); + var toolbars = acf.get('toolbars'); + var field = args.field || false; + var $field = field.$el || false; + + // bail early + if( typeof tinymce === 'undefined' ) return false; + if( !defaults ) return false; + + // check if exists + if( tinymce.get(id) ) { + return this.enable( id ); + } + + // settings + var init = $.extend( {}, defaults.tinymce, args.tinymce ); + init.id = id; + init.selector = '#' + id; + + // toolbar + var toolbar = args.toolbar; + if( toolbar && toolbars && toolbars[toolbar] ) { + + for( var i = 1; i <= 4; i++ ) { + init[ 'toolbar' + i ] = toolbars[toolbar][i] || ''; + } + } + + // event + init.setup = function( ed ){ + + ed.on('change', function(e) { + ed.save(); // save to textarea + $textarea.trigger('change'); + }); + + // Fix bug where Gutenberg does not hear "mouseup" event and tries to select multiple blocks. + ed.on('mouseup', function(e) { + var event = new MouseEvent('mouseup'); + window.dispatchEvent(event); + }); + + // Temporarily comment out. May not be necessary due to wysiwyg field actions. + //ed.on('unload', function(e) { + // acf.tinymce.remove( id ); + //}); + }; + + // disable wp_autoresize_on (no solution yet for fixed toolbar) + init.wp_autoresize_on = false; + + // Enable wpautop allowing value to save without

        tags. + // Only if the "TinyMCE Advanced" plugin hasn't already set this functionality. + if( !init.tadv_noautop ) { + init.wpautop = true; + } + + // hook for 3rd party customization + init = acf.applyFilters('wysiwyg_tinymce_settings', init, id, field); + + // z-index fix (caused too many conflicts) + //if( acf.isset(tinymce,'ui','FloatPanel') ) { + // tinymce.ui.FloatPanel.zIndex = 900000; + //} + + // store settings + tinyMCEPreInit.mceInit[ id ] = init; + + // visual tab is active + if( args.mode == 'visual' ) { + + // init + var result = tinymce.init( init ); + + // get editor + var ed = tinymce.get( id ); + + // validate + if( !ed ) { + return false; + } + + // add reference + ed.acf = args.field; + + // action + acf.doAction('wysiwyg_tinymce_init', ed, ed.id, init, field); + } + }, + + /* + * initializeQuicktags + * + * This function will initialize the quicktags instance + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + initializeQuicktags: function( id, args ){ + + // vars + var defaults = this.defaults(); + + // bail early + if( typeof quicktags === 'undefined' ) return false; + if( !defaults ) return false; + + // settings + var init = $.extend( {}, defaults.quicktags, args.quicktags ); + init.id = id; + + // filter + var field = args.field || false; + var $field = field.$el || false; + init = acf.applyFilters('wysiwyg_quicktags_settings', init, init.id, field); + + // store settings + tinyMCEPreInit.qtInit[ id ] = init; + + // init + var ed = quicktags( init ); + + // validate + if( !ed ) { + return false; + } + + // generate HTML + this.buildQuicktags( ed ); + + // action for 3rd party customization + acf.doAction('wysiwyg_quicktags_init', ed, ed.id, init, field); + }, + + + /* + * buildQuicktags + * + * This function will build the quicktags HTML + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + buildQuicktags: function( ed ){ + + var canvas, name, settings, theButtons, html, ed, id, i, use, instanceId, + defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,'; + + canvas = ed.canvas; + name = ed.name; + settings = ed.settings; + html = ''; + theButtons = {}; + use = ''; + instanceId = ed.id; + + // set buttons + if ( settings.buttons ) { + use = ','+settings.buttons+','; + } + + for ( i in edButtons ) { + if ( ! edButtons[i] ) { + continue; + } + + id = edButtons[i].id; + if ( use && defaults.indexOf( ',' + id + ',' ) !== -1 && use.indexOf( ',' + id + ',' ) === -1 ) { + continue; + } + + if ( ! edButtons[i].instance || edButtons[i].instance === instanceId ) { + theButtons[id] = edButtons[i]; + + if ( edButtons[i].html ) { + html += edButtons[i].html( name + '_' ); + } + } + } + + if ( use && use.indexOf(',dfw,') !== -1 ) { + theButtons.dfw = new QTags.DFWButton(); + html += theButtons.dfw.html( name + '_' ); + } + + if ( 'rtl' === document.getElementsByTagName( 'html' )[0].dir ) { + theButtons.textdirection = new QTags.TextDirectionButton(); + html += theButtons.textdirection.html( name + '_' ); + } + + ed.toolbar.innerHTML = html; + ed.theButtons = theButtons; + + if ( typeof jQuery !== 'undefined' ) { + jQuery( document ).triggerHandler( 'quicktags-init', [ ed ] ); + } + + }, + + disable: function( id ){ + this.destroyTinymce( id ); + }, + + remove: function( id ){ + this.destroyTinymce( id ); + }, + + destroy: function( id ){ + this.destroyTinymce( id ); + }, + + destroyTinymce: function( id ){ + + // bail early + if( typeof tinymce === 'undefined' ) return false; + + // get editor + var ed = tinymce.get( id ); + + // bail early if no editor + if( !ed ) return false; + + // save + ed.save(); + + // destroy editor + ed.destroy(); + + // return + return true; + }, + + enable: function( id ){ + this.enableTinymce( id ); + }, + + enableTinymce: function( id ){ + + // bail early + if( typeof switchEditors === 'undefined' ) return false; + + // bail ealry if not initialized + if( typeof tinyMCEPreInit.mceInit[ id ] === 'undefined' ) return false; + + // toggle + switchEditors.go( id, 'tmce'); + + // return + return true; + } + }; + + var editorManager = new acf.Model({ + + // hook in before fieldsEventManager, conditions, etc + priority: 5, + + actions: { + 'prepare': 'onPrepare', + 'ready': 'onReady', + }, + onPrepare: function(){ + + // find hidden editor which may exist within a field + var $div = $('#acf-hidden-wp-editor'); + + // move to footer + if( $div.exists() ) { + $div.appendTo('body'); + } + }, + onReady: function(){ + + // Restore wp.editor functions used by tinymce removed in WP5. + if( acf.isset(window,'wp','oldEditor') ) { + wp.editor.autop = wp.oldEditor.autop; + wp.editor.removep = wp.oldEditor.removep; + } + + // bail early if no tinymce + if( !acf.isset(window,'tinymce','on') ) return; + + // restore default activeEditor + tinymce.on('AddEditor', function( data ){ + + // vars + var editor = data.editor; + + // bail early if not 'acf' + if( editor.id.substr(0, 3) !== 'acf' ) return; + + // override if 'content' exists + editor = tinymce.editors.content || editor; + + // update vars + tinymce.activeEditor = editor; + wpActiveEditor = editor.id; + }); + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-tooltip.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-tooltip.js new file mode 100644 index 0000000..c4977c1 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-tooltip.js @@ -0,0 +1,324 @@ +(function($, undefined){ + + acf.newTooltip = function( props ){ + + // ensure object + if( typeof props !== 'object' ) { + props = { text: props }; + } + + // confirmRemove + if( props.confirmRemove !== undefined ) { + + props.textConfirm = acf.__('Remove'); + props.textCancel = acf.__('Cancel'); + return new TooltipConfirm( props ); + + // confirm + } else if( props.confirm !== undefined ) { + + return new TooltipConfirm( props ); + + // default + } else { + return new Tooltip( props ); + } + + }; + + var Tooltip = acf.Model.extend({ + + data: { + text: '', + timeout: 0, + target: null + }, + + tmpl: function(){ + return '

        '; + }, + + setup: function( props ){ + $.extend(this.data, props); + this.$el = $(this.tmpl()); + }, + + initialize: function(){ + + // render + this.render(); + + // append + this.show(); + + // position + this.position(); + + // timeout + var timeout = this.get('timeout'); + if( timeout ) { + setTimeout( $.proxy(this.fade, this), timeout ); + } + }, + + update: function( props ){ + $.extend(this.data, props); + this.initialize(); + }, + + render: function(){ + this.html( this.get('text') ); + }, + + show: function(){ + $('body').append( this.$el ); + }, + + hide: function(){ + this.$el.remove(); + }, + + fade: function(){ + + // add class + this.$el.addClass('acf-fade-up'); + + // remove + this.setTimeout(function(){ + this.remove(); + }, 250); + }, + + html: function( html ){ + this.$el.html( html ); + }, + + position: function(){ + + // vars + var $tooltip = this.$el; + var $target = this.get('target'); + if( !$target ) return; + + // Reset position. + $tooltip.removeClass('right left bottom top').css({ top: 0, left: 0 }); + + // Declare tollerance to edge of screen. + var tolerance = 10; + + // Find target position. + var targetWidth = $target.outerWidth(); + var targetHeight = $target.outerHeight(); + var targetTop = $target.offset().top; + var targetLeft = $target.offset().left; + + // Find tooltip position. + var tooltipWidth = $tooltip.outerWidth(); + var tooltipHeight = $tooltip.outerHeight(); + var tooltipTop = $tooltip.offset().top; // Should be 0, but WP media grid causes this to be 32 (toolbar padding). + + // Assume default top alignment. + var top = targetTop - tooltipHeight - tooltipTop; + var left = targetLeft + (targetWidth / 2) - (tooltipWidth / 2); + + // Check if too far left. + if( left < tolerance ) { + $tooltip.addClass('right'); + left = targetLeft + targetWidth; + top = targetTop + (targetHeight / 2) - (tooltipHeight / 2) - tooltipTop; + + // Check if too far right. + } else if( (left + tooltipWidth + tolerance) > $(window).width() ) { + $tooltip.addClass('left'); + left = targetLeft - tooltipWidth; + top = targetTop + (targetHeight / 2) - (tooltipHeight / 2) - tooltipTop; + + // Check if too far up. + } else if( top - $(window).scrollTop() < tolerance ) { + $tooltip.addClass('bottom'); + top = targetTop + targetHeight - tooltipTop; + + // No colision with edges. + } else { + $tooltip.addClass('top'); + } + + // update css + $tooltip.css({ 'top': top, 'left': left }); + } + }); + + var TooltipConfirm = Tooltip.extend({ + + data: { + text: '', + textConfirm: '', + textCancel: '', + target: null, + targetConfirm: true, + confirm: function(){}, + cancel: function(){}, + context: false + }, + + events: { + 'click [data-event="cancel"]': 'onCancel', + 'click [data-event="confirm"]': 'onConfirm', + }, + + addEvents: function(){ + + // add events + acf.Model.prototype.addEvents.apply(this); + + // vars + var $document = $(document); + var $target = this.get('target'); + + // add global 'cancel' click event + // - use timeout to avoid the current 'click' event triggering the onCancel function + this.setTimeout(function(){ + this.on( $document, 'click', 'onCancel' ); + }); + + // add target 'confirm' click event + // - allow setting to control this feature + if( this.get('targetConfirm') ) { + this.on( $target, 'click', 'onConfirm' ); + } + }, + + removeEvents: function(){ + + // remove events + acf.Model.prototype.removeEvents.apply(this); + + // vars + var $document = $(document); + var $target = this.get('target'); + + // remove custom events + this.off( $document, 'click' ); + this.off( $target, 'click' ); + }, + + render: function(){ + + // defaults + var text = this.get('text') || acf.__('Are you sure?'); + var textConfirm = this.get('textConfirm') || acf.__('Yes'); + var textCancel = this.get('textCancel') || acf.__('No'); + + // html + var html = [ + text, + '' + textConfirm + '', + '' + textCancel + '' + ].join(' '); + + // html + this.html( html ); + + // class + this.$el.addClass('-confirm'); + }, + + onCancel: function( e, $el ){ + + // prevent default + e.preventDefault(); + e.stopImmediatePropagation(); + + // callback + var callback = this.get('cancel'); + var context = this.get('context') || this; + callback.apply( context, arguments ); + + //remove + this.remove(); + }, + + onConfirm: function( e, $el ){ + + // prevent default + e.preventDefault(); + e.stopImmediatePropagation(); + + // callback + var callback = this.get('confirm'); + var context = this.get('context') || this; + callback.apply( context, arguments ); + + //remove + this.remove(); + } + }); + + // storage + acf.models.Tooltip = Tooltip; + acf.models.TooltipConfirm = TooltipConfirm; + + + /** + * tooltipManager + * + * description + * + * @date 17/4/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var tooltipHoverHelper = new acf.Model({ + + tooltip: false, + + events: { + 'mouseenter .acf-js-tooltip': 'showTitle', + 'mouseup .acf-js-tooltip': 'hideTitle', + 'mouseleave .acf-js-tooltip': 'hideTitle' + }, + + showTitle: function( e, $el ){ + + // vars + var title = $el.attr('title'); + + // bail ealry if no title + if( !title ) { + return; + } + + // clear title to avoid default browser tooltip + $el.attr('title', ''); + + // create + if( !this.tooltip ) { + this.tooltip = acf.newTooltip({ + text: title, + target: $el + }); + + // update + } else { + this.tooltip.update({ + text: title, + target: $el + }); + } + + }, + + hideTitle: function( e, $el ){ + + // hide tooltip + this.tooltip.hide(); + + // restore title + $el.attr('title', this.tooltip.get('text')); + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-unload.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-unload.js new file mode 100644 index 0000000..d7a1c0f --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-unload.js @@ -0,0 +1,62 @@ +(function($, undefined){ + + acf.unload = new acf.Model({ + + wait: 'load', + active: true, + changed: false, + + actions: { + 'validation_failure': 'startListening', + 'validation_success': 'stopListening' + }, + + events: { + 'change form .acf-field': 'startListening', + 'submit form': 'stopListening' + }, + + enable: function(){ + this.active = true; + }, + + disable: function(){ + this.active = false; + }, + + reset: function(){ + this.stopListening(); + }, + + startListening: function(){ + + // bail ealry if already changed, not active + if( this.changed || !this.active ) { + return; + } + + // update + this.changed = true; + + // add event + $(window).on('beforeunload', this.onUnload); + + }, + + stopListening: function(){ + + // update + this.changed = false; + + // remove event + $(window).off('beforeunload', this.onUnload); + + }, + + onUnload: function(){ + return acf.__('The changes you made will be lost if you navigate away from this page'); + } + + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-validation.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-validation.js new file mode 100644 index 0000000..26f4213 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf-validation.js @@ -0,0 +1,1006 @@ +(function($, undefined){ + + /** + * Validator + * + * The model for validating forms + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + var Validator = acf.Model.extend({ + + /** @var string The model identifier. */ + id: 'Validator', + + /** @var object The model data. */ + data: { + + /** @var array The form errors. */ + errors: [], + + /** @var object The form notice. */ + notice: null, + + /** @var string The form status. loading, invalid, valid */ + status: '' + }, + + /** @var object The model events. */ + events: { + 'changed:status': 'onChangeStatus' + }, + + /** + * addErrors + * + * Adds errors to the form. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param array errors An array of errors. + * @return void + */ + addErrors: function( errors ){ + errors.map( this.addError, this ); + }, + + /** + * addError + * + * Adds and error to the form. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object error An error object containing input and message. + * @return void + */ + addError: function( error ){ + this.data.errors.push( error ); + }, + + /** + * hasErrors + * + * Returns true if the form has errors. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return bool + */ + hasErrors: function(){ + return this.data.errors.length; + }, + + /** + * clearErrors + * + * Removes any errors. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + clearErrors: function(){ + return this.data.errors = []; + }, + + /** + * getErrors + * + * Returns the forms errors. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return array + */ + getErrors: function(){ + return this.data.errors; + }, + + /** + * getFieldErrors + * + * Returns the forms field errors. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return array + */ + getFieldErrors: function(){ + + // vars + var errors = []; + var inputs = []; + + // loop + this.getErrors().map(function(error){ + + // bail early if global + if( !error.input ) return; + + // update if exists + var i = inputs.indexOf(error.input); + if( i > -1 ) { + errors[ i ] = error; + + // update + } else { + errors.push( error ); + inputs.push( error.input ); + } + }); + + // return + return errors; + }, + + /** + * getGlobalErrors + * + * Returns the forms global errors (errors without a specific input). + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return array + */ + getGlobalErrors: function(){ + + // return array of errors that contain no input + return this.getErrors().filter(function(error){ + return !error.input; + }); + }, + + /** + * showErrors + * + * Displays all errors for this form. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + showErrors: function(){ + + // bail early if no errors + if( !this.hasErrors() ) { + return; + } + + // vars + var fieldErrors = this.getFieldErrors(); + var globalErrors = this.getGlobalErrors(); + + // vars + var errorCount = 0; + var $scrollTo = false; + + // loop + fieldErrors.map(function( error ){ + + // get input + var $input = this.$('[name="' + error.input + '"]').first(); + + // if $_POST value was an array, this $input may not exist + if( !$input.length ) { + $input = this.$('[name^="' + error.input + '"]').first(); + } + + // bail early if input doesn't exist + if( !$input.length ) { + return; + } + + // increase + errorCount++; + + // get field + var field = acf.getClosestField( $input ); + + // show error + field.showError( error.message ); + + // set $scrollTo + if( !$scrollTo ) { + $scrollTo = field.$el; + } + }, this); + + // errorMessage + var errorMessage = acf.__('Validation failed'); + globalErrors.map(function( error ){ + errorMessage += '. ' + error.message; + }); + if( errorCount == 1 ) { + errorMessage += '. ' + acf.__('1 field requires attention'); + } else if( errorCount > 1 ) { + errorMessage += '. ' + acf.__('%d fields require attention').replace('%d', errorCount); + } + + // notice + if( this.has('notice') ) { + this.get('notice').update({ + type: 'error', + text: errorMessage + }); + } else { + var notice = acf.newNotice({ + type: 'error', + text: errorMessage, + target: this.$el + }); + this.set('notice', notice); + } + + // if no $scrollTo, set to message + if( !$scrollTo ) { + $scrollTo = this.get('notice').$el; + } + + // timeout + setTimeout(function(){ + $("html, body").animate({ scrollTop: $scrollTo.offset().top - ( $(window).height() / 2 ) }, 500); + }, 10); + }, + + /** + * onChangeStatus + * + * Update the form class when changing the 'status' data + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The form element. + * @param string value The new status. + * @param string prevValue The old status. + * @return void + */ + onChangeStatus: function( e, $el, value, prevValue ){ + this.$el.removeClass('is-'+prevValue).addClass('is-'+value); + }, + + /** + * validate + * + * Vaildates the form via AJAX. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object args A list of settings to customize the validation process. + * @return bool True if the form is valid. + */ + validate: function( args ){ + + // default args + args = acf.parseArgs(args, { + + // trigger event + event: false, + + // reset the form after submit + reset: false, + + // loading callback + loading: function(){}, + + // complete callback + complete: function(){}, + + // failure callback + failure: function(){}, + + // success callback + success: function( $form ){ + $form.submit(); + } + }); + + // return true if is valid - allows form submit + if( this.get('status') == 'valid' ) { + return true; + } + + // return false if is currently validating - prevents form submit + if( this.get('status') == 'validating' ) { + return false; + } + + // return true if no ACF fields exist (no need to validate) + if( !this.$('.acf-field').length ) { + return true; + } + + // if event is provided, create a new success callback. + if( args.event ) { + var event = $.Event(null, args.event); + args.success = function(){ + acf.enableSubmit( $(event.target) ).trigger( event ); + } + } + + // action for 3rd party + acf.doAction('validation_begin', this.$el); + + // lock form + acf.lockForm( this.$el ); + + // loading callback + args.loading( this.$el, this ); + + // update status + this.set('status', 'validating'); + + // success callback + var onSuccess = function( json ){ + + // validate + if( !acf.isAjaxSuccess(json) ) { + return; + } + + // filter + var data = acf.applyFilters('validation_complete', json.data, this.$el, this); + + // add errors + if( !data.valid ) { + this.addErrors( data.errors ); + } + }; + + // complete + var onComplete = function(){ + + // unlock form + acf.unlockForm( this.$el ); + + // failure + if( this.hasErrors() ) { + + // update status + this.set('status', 'invalid'); + + // action + acf.doAction('validation_failure', this.$el, this); + + // display errors + this.showErrors(); + + // failure callback + args.failure( this.$el, this ); + + // success + } else { + + // update status + this.set('status', 'valid'); + + // remove previous error message + if( this.has('notice') ) { + this.get('notice').update({ + type: 'success', + text: acf.__('Validation successful'), + timeout: 1000 + }); + } + + // action + acf.doAction('validation_success', this.$el, this); + acf.doAction('submit', this.$el); + + // success callback (submit form) + args.success( this.$el, this ); + + // lock form + acf.lockForm( this.$el ); + + // reset + if( args.reset ) { + this.reset(); + } + } + + // complete callback + args.complete( this.$el, this ); + + // clear errors + this.clearErrors(); + }; + + // serialize form data + var data = acf.serialize( this.$el ); + data.action = 'acf/validate_save_post'; + + // ajax + $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax(data), + type: 'post', + dataType: 'json', + context: this, + success: onSuccess, + complete: onComplete + }); + + // return false to fail validation and allow AJAX + return false + }, + + /** + * setup + * + * Called during the constructor function to setup this instance + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return void + */ + setup: function( $form ){ + + // set $el + this.$el = $form; + }, + + /** + * reset + * + * Rests the validation to be used again. + * + * @date 6/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + reset: function(){ + + // reset data + this.set('errors', []); + this.set('notice', null); + this.set('status', ''); + + // unlock form + acf.unlockForm( this.$el ); + } + }); + + /** + * getValidator + * + * Returns the instance for a given form element. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $el The form element. + * @return object + */ + var getValidator = function( $el ){ + + // instantiate + var validator = $el.data('acf'); + if( !validator ) { + validator = new Validator( $el ); + } + + // return + return validator; + }; + + /** + * acf.validateForm + * + * A helper function for the Validator.validate() function. + * Returns true if form is valid, or fetches a validation request and returns false. + * + * @date 4/4/18 + * @since 5.6.9 + * + * @param object args A list of settings to customize the validation process. + * @return bool + */ + + acf.validateForm = function( args ){ + return getValidator( args.form ).validate( args ); + }; + + /** + * acf.enableSubmit + * + * Enables a submit button and returns the element. + * + * @date 30/8/18 + * @since 5.7.4 + * + * @param jQuery $submit The submit button. + * @return jQuery + */ + acf.enableSubmit = function( $submit ){ + return $submit.removeClass('disabled'); + }; + + /** + * acf.disableSubmit + * + * Disables a submit button and returns the element. + * + * @date 30/8/18 + * @since 5.7.4 + * + * @param jQuery $submit The submit button. + * @return jQuery + */ + acf.disableSubmit = function( $submit ){ + return $submit.addClass('disabled'); + }; + + /** + * acf.showSpinner + * + * Shows the spinner element. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $spinner The spinner element. + * @return jQuery + */ + acf.showSpinner = function( $spinner ){ + $spinner.addClass('is-active'); // add class (WP > 4.2) + $spinner.css('display', 'inline-block'); // css (WP < 4.2) + return $spinner; + }; + + /** + * acf.hideSpinner + * + * Hides the spinner element. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $spinner The spinner element. + * @return jQuery + */ + acf.hideSpinner = function( $spinner ){ + $spinner.removeClass('is-active'); // add class (WP > 4.2) + $spinner.css('display', 'none'); // css (WP < 4.2) + return $spinner; + }; + + /** + * acf.lockForm + * + * Locks a form by disabeling its primary inputs and showing a spinner. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return jQuery + */ + acf.lockForm = function( $form ){ + + // vars + var $wrap = findSubmitWrap( $form ); + var $submit = $wrap.find('.button, [type="submit"]'); + var $spinner = $wrap.find('.spinner, .acf-spinner'); + + // hide all spinners (hides the preview spinner) + acf.hideSpinner( $spinner ); + + // lock + acf.disableSubmit( $submit ); + acf.showSpinner( $spinner.last() ); + return $form; + }; + + /** + * acf.unlockForm + * + * Unlocks a form by enabeling its primary inputs and hiding all spinners. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return jQuery + */ + acf.unlockForm = function( $form ){ + + // vars + var $wrap = findSubmitWrap( $form ); + var $submit = $wrap.find('.button, [type="submit"]'); + var $spinner = $wrap.find('.spinner, .acf-spinner'); + + // unlock + acf.enableSubmit( $submit ); + acf.hideSpinner( $spinner ); + return $form; + }; + + /** + * findSubmitWrap + * + * An internal function to find the 'primary' form submit wrapping element. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return jQuery + */ + var findSubmitWrap = function( $form ){ + + // default post submit div + var $wrap = $form.find('#submitdiv'); + if( $wrap.length ) { + return $wrap; + } + + // 3rd party publish box + var $wrap = $form.find('#submitpost'); + if( $wrap.length ) { + return $wrap; + } + + // term, user + var $wrap = $form.find('p.submit').last(); + if( $wrap.length ) { + return $wrap; + } + + // front end form + var $wrap = $form.find('.acf-form-submit'); + if( $wrap.length ) { + return $wrap; + } + + // default + return $form; + }; + + /** + * acf.validation + * + * Global validation logic + * + * @date 4/4/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + acf.validation = new acf.Model({ + + /** @var string The model identifier. */ + id: 'validation', + + /** @var bool The active state. Set to false before 'prepare' to prevent validation. */ + active: true, + + /** @var string The model initialize time. */ + wait: 'prepare', + + /** @var object The model actions. */ + actions: { + 'ready': 'addInputEvents', + 'append': 'addInputEvents' + }, + + /** @var object The model events. */ + events: { + 'click input[type="submit"]': 'onClickSubmit', + 'click button[type="submit"]': 'onClickSubmit', + //'click #editor .editor-post-publish-button': 'onClickSubmitGutenberg', + 'click #save-post': 'onClickSave', + 'submit form#post': 'onSubmitPost', + 'submit form': 'onSubmit', + }, + + /** + * initialize + * + * Called when initializing the model. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + initialize: function(){ + + // check 'validation' setting + if( !acf.get('validation') ) { + this.active = false; + this.actions = {}; + this.events = {}; + } + }, + + /** + * enable + * + * Enables validation. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + enable: function(){ + this.active = true; + }, + + /** + * disable + * + * Disables validation. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + disable: function(){ + this.active = false; + }, + + /** + * reset + * + * Rests the form validation to be used again + * + * @date 6/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return void + */ + reset: function( $form ){ + getValidator( $form ).reset(); + }, + + /** + * addInputEvents + * + * Adds 'invalid' event listeners to HTML inputs. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $el The element being added / readied. + * @return void + */ + addInputEvents: function( $el ){ + + // vars + var $inputs = $('.acf-field [name]', $el); + + // check + if( $inputs.length ) { + this.on( $inputs, 'invalid', 'onInvalid' ); + } + }, + + /** + * onInvalid + * + * Callback for the 'invalid' event. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onInvalid: function( e, $el ){ + + // prevent default + // - prevents browser error message + // - also fixes chrome bug where 'hidden-by-tab' field throws focus error + e.preventDefault(); + + // vars + var $form = $el.closest('form'); + + // check form exists + if( $form.length ) { + + // add error to validator + getValidator( $form ).addError({ + input: $el.attr('name'), + message: e.target.validationMessage + }); + + // trigger submit on $form + // - allows for "save", "preview" and "publish" to work + $form.submit(); + } + }, + + /** + * onClickSubmit + * + * Callback when clicking submit. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onClickSubmit: function( e, $el ){ + + // store the "click event" for later use in this.onSubmit() + this.set('originalEvent', e); + }, + + /** + * onClickSave + * + * Set ignore to true when saving a draft. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onClickSave: function( e, $el ) { + this.set('ignore', true); + }, + + /** + * onClickSubmitGutenberg + * + * Custom validation event for the gutenberg editor. + * + * @date 29/10/18 + * @since 5.8.0 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onClickSubmitGutenberg: function( e, $el ){ + + // validate + var valid = acf.validateForm({ + form: $('#editor'), + event: e, + reset: true, + failure: function( $form, validator ){ + var $notice = validator.get('notice').$el; + $notice.appendTo('.components-notice-list'); + $notice.find('.acf-notice-dismiss').removeClass('small'); + } + }); + + // if not valid, stop event and allow validation to continue + if( !valid ) { + e.preventDefault(); + e.stopImmediatePropagation(); + } + }, + + /** + * onSubmitPost + * + * Callback when the 'post' form is submit. + * + * @date 5/3/19 + * @since 5.7.13 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onSubmitPost: function( e, $el ) { + + // Check if is preview. + if( $('input#wp-preview').val() === 'dopreview' ) { + + // Ignore validation. + this.set('ignore', true); + + // Unlock form to fix conflict with core "submit.edit-post" event causing all submit buttons to be disabled. + acf.unlockForm( $el ) + } + }, + + /** + * onSubmit + * + * Callback when the form is submit. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onSubmit: function( e, $el ){ + + // Allow form to submit if... + if( + // Validation has been disabled. + !this.active + + // Or this event is to be ignored. + || this.get('ignore') + + // Or this event has already been prevented. + || e.isDefaultPrevented() + ) { + // Return early and call reset function. + return this.allowSubmit(); + } + + // Validate form. + var valid = acf.validateForm({ + form: $el, + event: this.get('originalEvent') + }); + + // If not valid, stop event to prevent form submit. + if( !valid ) { + e.preventDefault(); + } + }, + + /** + * allowSubmit + * + * Resets data during onSubmit when the form is allowed to submit. + * + * @date 5/3/19 + * @since 5.7.13 + * + * @param void + * @return void + */ + allowSubmit: function(){ + + // Reset "ignore" state. + this.set('ignore', false); + + // Reset "originalEvent" object. + this.set('originalEvent', false); + + // Return true + return true; + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf.js b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf.js new file mode 100644 index 0000000..a233e13 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/build/js/_acf.js @@ -0,0 +1,2188 @@ +(function($, undefined){ + + /** + * acf + * + * description + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + // The global acf object + var acf = {}; + + // Set as a browser global + window.acf = acf; + + /** @var object Data sent from PHP */ + acf.data = {}; + + + /** + * get + * + * Gets a specific data value + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @return mixed + */ + + acf.get = function( name ){ + return this.data[name] || null; + }; + + + /** + * has + * + * Returns `true` if the data exists and is not null + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @return boolean + */ + + acf.has = function( name ){ + return this.get(name) !== null; + }; + + + /** + * set + * + * Sets a specific data value + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string name + * @param mixed value + * @return this + */ + + acf.set = function( name, value ){ + this.data[ name ] = value; + return this; + }; + + + /** + * uniqueId + * + * Returns a unique ID + * + * @date 9/11/17 + * @since 5.6.3 + * + * @param string prefix Optional prefix. + * @return string + */ + + var idCounter = 0; + acf.uniqueId = function(prefix){ + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + /** + * acf.uniqueArray + * + * Returns a new array with only unique values + * Credit: https://stackoverflow.com/questions/1960473/get-all-unique-values-in-an-array-remove-duplicates + * + * @date 23/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.uniqueArray = function( array ){ + function onlyUnique(value, index, self) { + return self.indexOf(value) === index; + } + return array.filter( onlyUnique ); + }; + + /** + * uniqid + * + * Returns a unique ID (PHP version) + * + * @date 9/11/17 + * @since 5.6.3 + * @source http://locutus.io/php/misc/uniqid/ + * + * @param string prefix Optional prefix. + * @return string + */ + + var uniqidSeed = ''; + acf.uniqid = function(prefix, moreEntropy){ + // discuss at: http://locutus.io/php/uniqid/ + // original by: Kevin van Zonneveld (http://kvz.io) + // revised by: Kankrelune (http://www.webfaktory.info/) + // note 1: Uses an internal counter (in locutus global) to avoid collision + // example 1: var $id = uniqid() + // example 1: var $result = $id.length === 13 + // returns 1: true + // example 2: var $id = uniqid('foo') + // example 2: var $result = $id.length === (13 + 'foo'.length) + // returns 2: true + // example 3: var $id = uniqid('bar', true) + // example 3: var $result = $id.length === (23 + 'bar'.length) + // returns 3: true + if (typeof prefix === 'undefined') { + prefix = ''; + } + + var retId; + var formatSeed = function(seed, reqWidth) { + seed = parseInt(seed, 10).toString(16); // to hex str + if (reqWidth < seed.length) { // so long we split + return seed.slice(seed.length - reqWidth); + } + if (reqWidth > seed.length) { // so short we pad + return Array(1 + (reqWidth - seed.length)).join('0') + seed; + } + return seed; + }; + + if (!uniqidSeed) { // init seed with big random int + uniqidSeed = Math.floor(Math.random() * 0x75bcd15); + } + uniqidSeed++; + + retId = prefix; // start with prefix, add current milliseconds hex string + retId += formatSeed(parseInt(new Date().getTime() / 1000, 10), 8); + retId += formatSeed(uniqidSeed, 5); // add seed hex string + if (moreEntropy) { + // for more entropy we add a float lower to 10 + retId += (Math.random() * 10).toFixed(8).toString(); + } + + return retId; + }; + + + /** + * strReplace + * + * Performs a string replace + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string search + * @param string replace + * @param string subject + * @return string + */ + + acf.strReplace = function( search, replace, subject ){ + return subject.split(search).join(replace); + }; + + + /** + * strCamelCase + * + * Converts a string into camelCase + * Thanks to https://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string str + * @return string + */ + + acf.strCamelCase = function( str ){ + + // replace [_-] characters with space + str = str.replace(/[_-]/g, ' '); + + // camelCase + str = str.replace(/(?:^\w|\b\w|\s+)/g, function(match, index) { + if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces + return index == 0 ? match.toLowerCase() : match.toUpperCase(); + }); + + // return + return str; + }; + + /** + * strPascalCase + * + * Converts a string into PascalCase + * Thanks to https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript + * + * @date 14/12/17 + * @since 5.6.5 + * + * @param string str + * @return string + */ + + acf.strPascalCase = function( str ){ + var camel = acf.strCamelCase( str ); + return camel.charAt(0).toUpperCase() + camel.slice(1); + }; + + /** + * acf.strSlugify + * + * Converts a string into a HTML class friendly slug + * + * @date 21/3/18 + * @since 5.6.9 + * + * @param string str + * @return string + */ + + acf.strSlugify = function( str ){ + return acf.strReplace( '_', '-', str.toLowerCase() ); + }; + + + acf.strSanitize = function( str ){ + + // chars (https://jsperf.com/replace-foreign-characters) + var map = { + "À": "A", + "Ã": "A", + "Â": "A", + "Ã": "A", + "Ä": "A", + "Ã…": "A", + "Æ": "AE", + "Ç": "C", + "È": "E", + "É": "E", + "Ê": "E", + "Ë": "E", + "ÃŒ": "I", + "Ã": "I", + "ÃŽ": "I", + "Ã": "I", + "Ã": "D", + "Ñ": "N", + "Ã’": "O", + "Ó": "O", + "Ô": "O", + "Õ": "O", + "Ö": "O", + "Ø": "O", + "Ù": "U", + "Ú": "U", + "Û": "U", + "Ü": "U", + "Ã": "Y", + "ß": "s", + "à": "a", + "á": "a", + "â": "a", + "ã": "a", + "ä": "a", + "Ã¥": "a", + "æ": "ae", + "ç": "c", + "è": "e", + "é": "e", + "ê": "e", + "ë": "e", + "ì": "i", + "í": "i", + "î": "i", + "ï": "i", + "ñ": "n", + "ò": "o", + "ó": "o", + "ô": "o", + "õ": "o", + "ö": "o", + "ø": "o", + "ù": "u", + "ú": "u", + "û": "u", + "ü": "u", + "ý": "y", + "ÿ": "y", + "Ä€": "A", + "Ä": "a", + "Ä‚": "A", + "ă": "a", + "Ä„": "A", + "Ä…": "a", + "Ć": "C", + "ć": "c", + "Ĉ": "C", + "ĉ": "c", + "ÄŠ": "C", + "Ä‹": "c", + "ÄŒ": "C", + "Ä": "c", + "ÄŽ": "D", + "Ä": "d", + "Ä": "D", + "Ä‘": "d", + "Ä’": "E", + "Ä“": "e", + "Ä”": "E", + "Ä•": "e", + "Ä–": "E", + "Ä—": "e", + "Ę": "E", + "Ä™": "e", + "Äš": "E", + "Ä›": "e", + "Äœ": "G", + "Ä": "g", + "Äž": "G", + "ÄŸ": "g", + "Ä ": "G", + "Ä¡": "g", + "Ä¢": "G", + "Ä£": "g", + "Ĥ": "H", + "Ä¥": "h", + "Ħ": "H", + "ħ": "h", + "Ĩ": "I", + "Ä©": "i", + "Ī": "I", + "Ä«": "i", + "Ĭ": "I", + "Ä­": "i", + "Ä®": "I", + "į": "i", + "İ": "I", + "ı": "i", + "IJ": "IJ", + "ij": "ij", + "Ä´": "J", + "ĵ": "j", + "Ķ": "K", + "Ä·": "k", + "Ĺ": "L", + "ĺ": "l", + "Ä»": "L", + "ļ": "l", + "Ľ": "L", + "ľ": "l", + "Ä¿": "L", + "Å€": "l", + "Å": "l", + "Å‚": "l", + "Ń": "N", + "Å„": "n", + "Å…": "N", + "ņ": "n", + "Ň": "N", + "ň": "n", + "ʼn": "n", + "ÅŒ": "O", + "Å": "o", + "ÅŽ": "O", + "Å": "o", + "Å": "O", + "Å‘": "o", + "Å’": "OE", + "Å“": "oe", + "Å”": "R", + "Å•": "r", + "Å–": "R", + "Å—": "r", + "Ř": "R", + "Å™": "r", + "Åš": "S", + "Å›": "s", + "Åœ": "S", + "Å": "s", + "Åž": "S", + "ÅŸ": "s", + "Å ": "S", + "Å¡": "s", + "Å¢": "T", + "Å£": "t", + "Ť": "T", + "Å¥": "t", + "Ŧ": "T", + "ŧ": "t", + "Ũ": "U", + "Å©": "u", + "Ū": "U", + "Å«": "u", + "Ŭ": "U", + "Å­": "u", + "Å®": "U", + "ů": "u", + "Ű": "U", + "ű": "u", + "Ų": "U", + "ų": "u", + "Å´": "W", + "ŵ": "w", + "Ŷ": "Y", + "Å·": "y", + "Ÿ": "Y", + "Ź": "Z", + "ź": "z", + "Å»": "Z", + "ż": "z", + "Ž": "Z", + "ž": "z", + "Å¿": "s", + "Æ’": "f", + "Æ ": "O", + "Æ¡": "o", + "Ư": "U", + "ư": "u", + "Ç": "A", + "ÇŽ": "a", + "Ç": "I", + "Ç": "i", + "Ç‘": "O", + "Ç’": "o", + "Ç“": "U", + "Ç”": "u", + "Ç•": "U", + "Ç–": "u", + "Ç—": "U", + "ǘ": "u", + "Ç™": "U", + "Çš": "u", + "Ç›": "U", + "Çœ": "u", + "Ǻ": "A", + "Ç»": "a", + "Ǽ": "AE", + "ǽ": "ae", + "Ǿ": "O", + "Ç¿": "o", + + // extra + ' ': '_', + "'": '', + '?': '', + '/': '', + '\\': '', + '.': '', + ',': '', + '`': '', + '>': '', + '<': '', + '"': '', + '[': '', + ']': '', + '|': '', + '{': '', + '}': '', + '(': '', + ')': '' + }; + + // vars + var nonWord = /\W/g; + var mapping = function (c) { + return (map[c] !== undefined) ? map[c] : c; + }; + + // replace + str = str.replace(nonWord, mapping); + + // lowercase + str = str.toLowerCase(); + + // return + return str; + }; + + /** + * acf.strMatch + * + * Returns the number of characters that match between two strings + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.strMatch = function( s1, s2 ){ + + // vars + var val = 0; + var min = Math.min( s1.length, s2.length ); + + // loop + for( var i = 0; i < min; i++ ) { + if( s1[i] !== s2[i] ) { + break; + } + val++; + } + + // return + return val; + }; + + /** + * acf.decode + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.decode = function( string ){ + return $(''); + $('body').append( $textarea ); + + // vars + var val = this.getNodeValue(); + + // open popup + wpLink.open( 'acf-link-textarea', val.url, val.title, null ); + + }, + + onOpen: function(){ + + // always show title (WP will hide title if empty) + $('#wp-link-wrap').addClass('has-text-field'); + + // set inputs + var val = this.getNodeValue(); + this.setInputValue( val ); + }, + + close: function(){ + wpLink.close(); + }, + + onClose: function(){ + + // bail early if no node + // needed due to WP triggering this event twice + if( !this.has('node') ) { + return false; + } + + // remove events + this.off('wplink-open'); + this.off('wplink-close'); + + // set value + var val = this.getInputValue(); + this.setNodeValue( val ); + + // remove textarea + $('#acf-link-textarea').remove(); + + // reset + this.set('node', null); + + } + }); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'oembed', + + events: { + 'click [data-name="clear-button"]': 'onClickClear', + 'keypress .input-search': 'onKeypressSearch', + 'keyup .input-search': 'onKeyupSearch', + 'change .input-search': 'onChangeSearch' + }, + + $control: function(){ + return this.$('.acf-oembed'); + }, + + $input: function(){ + return this.$('.input-value'); + }, + + $search: function(){ + return this.$('.input-search'); + }, + + getValue: function(){ + return this.$input().val(); + }, + + getSearchVal: function(){ + return this.$search().val(); + }, + + setValue: function( val ){ + + // class + if( val ) { + this.$control().addClass('has-value'); + } else { + this.$control().removeClass('has-value'); + } + + acf.val( this.$input(), val ); + }, + + showLoading: function( show ){ + acf.showLoading( this.$('.canvas') ); + }, + + hideLoading: function(){ + acf.hideLoading( this.$('.canvas') ); + }, + + maybeSearch: function(){ + + // vars + var prevUrl = this.val(); + var url = this.getSearchVal(); + + // no value + if( !url ) { + return this.clear(); + } + + // fix missing 'http://' - causes the oembed code to error and fail + if( url.substr(0, 4) != 'http' ) { + url = 'http://' + url; + } + + // bail early if no change + if( url === prevUrl ) return; + + // clear existing timeout + var timeout = this.get('timeout'); + if( timeout ) { + clearTimeout( timeout ); + } + + // set new timeout + var callback = $.proxy(this.search, this, url); + this.set('timeout', setTimeout(callback, 300)); + + }, + + search: function( url ){ + + // ajax + var ajaxData = { + action: 'acf/fields/oembed/search', + s: url, + field_key: this.get('key') + }; + + // clear existing timeout + var xhr = this.get('xhr'); + if( xhr ) { + xhr.abort(); + } + + // loading + this.showLoading(); + + // query + var xhr = $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax(ajaxData), + type: 'post', + dataType: 'json', + context: this, + success: function( json ){ + + // error + if( !json || !json.html ) { + json = { + url: false, + html: '' + } + } + + // update vars + this.val( json.url ); + this.$('.canvas-media').html( json.html ); + }, + complete: function(){ + this.hideLoading(); + } + }); + + this.set('xhr', xhr); + }, + + clear: function(){ + this.val(''); + this.$search().val(''); + this.$('.canvas-media').html(''); + }, + + onClickClear: function( e, $el ){ + this.clear(); + }, + + onKeypressSearch: function( e, $el ){ + if( e.which == 13 ) { + e.preventDefault(); + this.maybeSearch(); + } + }, + + onKeyupSearch: function( e, $el ){ + if( $el.val() ) { + this.maybeSearch(); + } + }, + + onChangeSearch: function( e, $el ){ + this.maybeSearch(); + } + + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'radio', + + events: { + 'click input[type="radio"]': 'onClick', + }, + + $control: function(){ + return this.$('.acf-radio-list'); + }, + + $input: function(){ + return this.$('input:checked'); + }, + + $inputText: function(){ + return this.$('input[type="text"]'); + }, + + getValue: function(){ + var val = this.$input().val(); + if( val === 'other' && this.get('other_choice') ) { + val = this.$inputText().val(); + } + return val; + }, + + onClick: function( e, $el ){ + + // vars + var $label = $el.parent('label'); + var selected = $label.hasClass('selected'); + var val = $el.val(); + + // remove previous selected + this.$('.selected').removeClass('selected'); + + // add active class + $label.addClass('selected'); + + // allow null + if( this.get('allow_null') && selected ) { + $label.removeClass('selected'); + $el.prop('checked', false).trigger('change'); + val = false; + } + + // other + if( this.get('other_choice') ) { + + // enable + if( val === 'other' ) { + this.$inputText().prop('disabled', false); + + // disable + } else { + this.$inputText().prop('disabled', true); + } + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'range', + + events: { + 'input input[type="range"]': 'onChange', + 'change input': 'onChange' + }, + + $input: function(){ + return this.$('input[type="range"]'); + }, + + $inputAlt: function(){ + return this.$('input[type="number"]'); + }, + + setValue: function( val ){ + this.busy = true; + + // Update range input (with change). + acf.val( this.$input(), val ); + + // Update alt input (without change). + // Read in input value to inherit min/max validation. + acf.val( this.$inputAlt(), this.$input().val(), true ); + + this.busy = false; + }, + + onChange: function( e, $el ){ + if( !this.busy ) { + this.setValue( $el.val() ); + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'relationship', + + events: { + 'keypress [data-filter]': 'onKeypressFilter', + 'change [data-filter]': 'onChangeFilter', + 'keyup [data-filter]': 'onChangeFilter', + 'click .choices-list .acf-rel-item': 'onClickAdd', + 'click [data-name="remove_item"]': 'onClickRemove', + 'mouseover': 'onHover' + }, + + $control: function(){ + return this.$('.acf-relationship'); + }, + + $list: function( list ) { + return this.$('.' + list + '-list'); + }, + + $listItems: function( list ) { + return this.$list( list ).find('.acf-rel-item'); + }, + + $listItem: function( list, id ) { + return this.$list( list ).find('.acf-rel-item[data-id="' + id + '"]'); + }, + + getValue: function(){ + var val = []; + this.$listItems('values').each(function(){ + val.push( $(this).data('id') ); + }); + return val.length ? val : false; + }, + + newChoice: function( props ){ + return [ + '
      • ', + '' + props.text + '', + '
      • ' + ].join(''); + }, + + newValue: function( props ){ + return [ + '
      • ', + '', + '' + props.text, + '', + '', + '
      • ' + ].join(''); + }, + + addSortable: function( self ){ + + // sortable + this.$list('values').sortable({ + items: 'li', + forceHelperSize: true, + forcePlaceholderSize: true, + scroll: true, + update: function(){ + self.$input().trigger('change'); + } + }); + }, + + initialize: function(){ + + // scroll + var onScroll = this.proxy(function(e){ + + // bail early if no more results + if( this.get('loading') || !this.get('more') ) { + return; + } + + // Scrolled to bottom + var $list = this.$list('choices'); + var scrollTop = Math.ceil( $list.scrollTop() ); + var scrollHeight = Math.ceil( $list[0].scrollHeight ); + var innerHeight = Math.ceil( $list.innerHeight() ); + var paged = this.get('paged') || 1; + if( (scrollTop + innerHeight) >= scrollHeight ) { + + // update paged + this.set('paged', (paged+1)); + + // fetch + this.fetch(); + } + + }); + + this.$list('choices').scrollTop(0).on('scroll', onScroll); + + // fetch + this.fetch(); + }, + + onHover: function( e ){ + + // only once + $().off(e); + + // add sortable + this.addSortable( this ); + }, + + onKeypressFilter: function( e, $el ){ + + // don't submit form + if( e.which == 13 ) { + e.preventDefault(); + } + }, + + onChangeFilter: function( e, $el ){ + + // vars + var val = $el.val(); + var filter = $el.data('filter'); + + // Bail early if filter has not changed + if( this.get(filter) === val ) { + return; + } + + // update attr + this.set(filter, val); + + // reset paged + this.set('paged', 1); + + // fetch + if( $el.is('select') ) { + this.fetch(); + + // search must go through timeout + } else { + this.maybeFetch(); + } + }, + + onClickAdd: function( e, $el ){ + + // vars + var val = this.val(); + var max = parseInt( this.get('max') ); + + // can be added? + if( $el.hasClass('disabled') ) { + return false; + } + + // validate + if( max > 0 && val && val.length >= max ) { + + // add notice + this.showNotice({ + text: acf.__('Maximum values reached ( {max} values )').replace('{max}', max), + type: 'warning' + }); + return false; + } + + // disable + $el.addClass('disabled'); + + // add + var html = this.newValue({ + id: $el.data('id'), + text: $el.html() + }); + this.$list('values').append( html ) + + // trigger change + this.$input().trigger('change'); + }, + + onClickRemove: function( e, $el ){ + + // Prevent default here because generic handler wont be triggered. + e.preventDefault(); + + // vars + var $span = $el.parent(); + var $li = $span.parent(); + var id = $span.data('id'); + + // remove value + $li.remove(); + + // show choice + this.$listItem('choices', id).removeClass('disabled'); + + // trigger change + this.$input().trigger('change'); + }, + + maybeFetch: function(){ + + // vars + var timeout = this.get('timeout'); + + // abort timeout + if( timeout ) { + clearTimeout( timeout ); + } + + // fetch + timeout = this.setTimeout(this.fetch, 300); + this.set('timeout', timeout); + }, + + getAjaxData: function(){ + + // load data based on element attributes + var ajaxData = this.$control().data(); + for( var name in ajaxData ) { + ajaxData[ name ] = this.get( name ); + } + + // extra + ajaxData.action = 'acf/fields/relationship/query'; + ajaxData.field_key = this.get('key'); + + // Filter. + ajaxData = acf.applyFilters( 'relationship_ajax_data', ajaxData, this ); + + // return + return ajaxData; + }, + + fetch: function(){ + + // abort XHR if this field is already loading AJAX data + var xhr = this.get('xhr'); + if( xhr ) { + xhr.abort(); + } + + // add to this.o + var ajaxData = this.getAjaxData(); + + // clear html if is new query + var $choiceslist = this.$list( 'choices' ); + if( ajaxData.paged == 1 ) { + $choiceslist.html(''); + } + + // loading + var $loading = $('
      • ' + acf.__('Loading') + '
      • '); + $choiceslist.append($loading); + this.set('loading', true); + + // callback + var onComplete = function(){ + this.set('loading', false); + $loading.remove(); + }; + + var onSuccess = function( json ){ + + // no results + if( !json || !json.results || !json.results.length ) { + + // prevent pagination + this.set('more', false); + + // add message + if( this.get('paged') == 1 ) { + this.$list('choices').append('
      • ' + acf.__('No matches found') + '
      • '); + } + + // return + return; + } + + // set more (allows pagination scroll) + this.set('more', json.more ); + + // get new results + var html = this.walkChoices(json.results); + var $html = $( html ); + + // apply .disabled to left li's + var val = this.val(); + if( val && val.length ) { + val.map(function( id ){ + $html.find('.acf-rel-item[data-id="' + id + '"]').addClass('disabled'); + }); + } + + // append + $choiceslist.append( $html ); + + // merge together groups + var $prevLabel = false; + var $prevList = false; + + $choiceslist.find('.acf-rel-label').each(function(){ + + var $label = $(this); + var $list = $label.siblings('ul'); + + if( $prevLabel && $prevLabel.text() == $label.text() ) { + $prevList.append( $list.children() ); + $(this).parent().remove(); + return; + } + + // update vars + $prevLabel = $label; + $prevList = $list; + }); + }; + + // get results + var xhr = $.ajax({ + url: acf.get('ajaxurl'), + dataType: 'json', + type: 'post', + data: acf.prepareForAjax(ajaxData), + context: this, + success: onSuccess, + complete: onComplete + }); + + // set + this.set('xhr', xhr); + }, + + walkChoices: function( data ){ + + // walker + var walk = function( data ){ + + // vars + var html = ''; + + // is array + if( $.isArray(data) ) { + data.map(function(item){ + html += walk( item ); + }); + + // is item + } else if( $.isPlainObject(data) ) { + + // group + if( data.children !== undefined ) { + + html += '
      • ' + data.text + '
          '; + html += walk( data.children ); + html += '
      • '; + + // single + } else { + html += '
      • ' + data.text + '
      • '; + } + } + + // return + return html; + }; + + return walk( data ); + } + + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'select', + + select2: false, + + wait: 'load', + + events: { + 'removeField': 'onRemove' + }, + + $input: function(){ + return this.$('select'); + }, + + initialize: function(){ + + // vars + var $select = this.$input(); + + // inherit data + this.inherit( $select ); + + // select2 + if( this.get('ui') ) { + + // populate ajax_data (allowing custom attribute to already exist) + var ajaxAction = this.get('ajax_action'); + if( !ajaxAction ) { + ajaxAction = 'acf/fields/' + this.get('type') + '/query'; + } + + // select2 + this.select2 = acf.newSelect2($select, { + field: this, + ajax: this.get('ajax'), + multiple: this.get('multiple'), + placeholder: this.get('placeholder'), + allowNull: this.get('allow_null'), + ajaxAction: ajaxAction, + }); + } + }, + + onRemove: function(){ + if( this.select2 ) { + this.select2.destroy(); + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + // vars + var CONTEXT = 'tab'; + + var Field = acf.Field.extend({ + + type: 'tab', + + wait: '', + + tabs: false, + + tab: false, + + findFields: function(){ + return this.$el.nextUntil('.acf-field-tab', '.acf-field'); + }, + + getFields: function(){ + return acf.getFields( this.findFields() ); + }, + + findTabs: function(){ + return this.$el.prevAll('.acf-tab-wrap:first'); + }, + + findTab: function(){ + return this.$('.acf-tab-button'); + }, + + initialize: function(){ + + // bail early if is td + if( this.$el.is('td') ) { + this.events = {}; + return false; + } + + // vars + var $tabs = this.findTabs(); + var $tab = this.findTab(); + var settings = acf.parseArgs($tab.data(), { + endpoint: false, + placement: '', + before: this.$el + }); + + // create wrap + if( !$tabs.length || settings.endpoint ) { + this.tabs = new Tabs( settings ); + } else { + this.tabs = $tabs.data('acf'); + } + + // add tab + this.tab = this.tabs.addTab($tab, this); + }, + + isActive: function(){ + return this.tab.isActive(); + }, + + showFields: function(){ + + // show fields + this.getFields().map(function( field ){ + field.show( this.cid, CONTEXT ); + field.hiddenByTab = false; + }, this); + + }, + + hideFields: function(){ + + // hide fields + this.getFields().map(function( field ){ + field.hide( this.cid, CONTEXT ); + field.hiddenByTab = this.tab; + }, this); + + }, + + show: function( lockKey ){ + + // show field and store result + var visible = acf.Field.prototype.show.apply(this, arguments); + + // check if now visible + if( visible ) { + + // show tab + this.tab.show(); + + // check active tabs + this.tabs.refresh(); + } + + // return + return visible; + }, + + hide: function( lockKey ){ + + // hide field and store result + var hidden = acf.Field.prototype.hide.apply(this, arguments); + + // check if now hidden + if( hidden ) { + + // hide tab + this.tab.hide(); + + // reset tabs if this was active + if( this.isActive() ) { + this.tabs.reset(); + } + } + + // return + return hidden; + }, + + enable: function( lockKey ){ + + // enable fields + this.getFields().map(function( field ){ + field.enable( CONTEXT ); + }); + }, + + disable: function( lockKey ){ + + // disable fields + this.getFields().map(function( field ){ + field.disable( CONTEXT ); + }); + } + }); + + acf.registerFieldType( Field ); + + + /** + * tabs + * + * description + * + * @date 8/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var i = 0; + var Tabs = acf.Model.extend({ + + tabs: [], + + active: false, + + actions: { + 'refresh': 'onRefresh' + }, + + data: { + before: false, + placement: 'top', + index: 0, + initialized: false, + }, + + setup: function( settings ){ + + // data + $.extend(this.data, settings); + + // define this prop to avoid scope issues + this.tabs = []; + this.active = false; + + // vars + var placement = this.get('placement'); + var $before = this.get('before'); + var $parent = $before.parent(); + + // add sidebar for left placement + if( placement == 'left' && $parent.hasClass('acf-fields') ) { + $parent.addClass('-sidebar'); + } + + // create wrap + if( $before.is('tr') ) { + this.$el = $(''); + } else { + this.$el = $('
          '); + } + + // append + $before.before( this.$el ); + + // set index + this.set('index', i, true); + i++; + }, + + initializeTabs: function(){ + + // find first visible tab + var tab = this.getVisible().shift(); + + // remember previous tab state + var order = acf.getPreference('this.tabs') || []; + var groupIndex = this.get('index'); + var tabIndex = order[ groupIndex ]; + + if( this.tabs[ tabIndex ] && this.tabs[ tabIndex ].isVisible() ) { + tab = this.tabs[ tabIndex ]; + } + + // select + if( tab ) { + this.selectTab( tab ); + } else { + this.closeTabs(); + } + + // set local variable used by tabsManager + this.set('initialized', true); + }, + + getVisible: function(){ + return this.tabs.filter(function( tab ){ + return tab.isVisible(); + }); + }, + + getActive: function(){ + return this.active; + }, + + setActive: function( tab ){ + return this.active = tab; + }, + + hasActive: function(){ + return (this.active !== false); + }, + + isActive: function( tab ){ + var active = this.getActive(); + return (active && active.cid === tab.cid); + }, + + closeActive: function(){ + if( this.hasActive() ) { + this.closeTab( this.getActive() ); + } + }, + + openTab: function( tab ){ + + // close existing tab + this.closeActive(); + + // open + tab.open(); + + // set active + this.setActive( tab ); + }, + + closeTab: function( tab ){ + + // close + tab.close(); + + // set active + this.setActive( false ); + }, + + closeTabs: function(){ + this.tabs.map( this.closeTab, this ); + }, + + selectTab: function( tab ){ + + // close other tabs + this.tabs.map(function( t ){ + if( tab.cid !== t.cid ) { + this.closeTab( t ); + } + }, this); + + // open + this.openTab( tab ); + + }, + + addTab: function( $a, field ){ + + // create
        • + var $li = $('
        • '); + + // append + $li.append( $a ); + + // append + this.$('ul').append( $li ); + + // initialize + var tab = new Tab({ + $el: $li, + field: field, + group: this, + }); + + // store + this.tabs.push( tab ); + + // return + return tab; + }, + + reset: function(){ + + // close existing tab + this.closeActive(); + + // find and active a tab + return this.refresh(); + }, + + refresh: function(){ + + // bail early if active already exists + if( this.hasActive() ) { + return false; + } + + // find next active tab + var tab = this.getVisible().shift(); + + // open tab + if( tab ) { + this.openTab( tab ); + } + + // return + return tab; + }, + + onRefresh: function(){ + + // only for left placements + if( this.get('placement') !== 'left' ) { + return; + } + + // vars + var $parent = this.$el.parent(); + var $list = this.$el.children('ul'); + var attribute = $parent.is('td') ? 'height' : 'min-height'; + + // find height (minus 1 for border-bottom) + var height = $list.position().top + $list.outerHeight(true) - 1; + + // add css + $parent.css(attribute, height); + } + }); + + var Tab = acf.Model.extend({ + + group: false, + + field: false, + + events: { + 'click a': 'onClick' + }, + + index: function(){ + return this.$el.index(); + }, + + isVisible: function(){ + return acf.isVisible( this.$el ); + }, + + isActive: function(){ + return this.$el.hasClass('active'); + }, + + open: function(){ + + // add class + this.$el.addClass('active'); + + // show field + this.field.showFields(); + }, + + close: function(){ + + // remove class + this.$el.removeClass('active'); + + // hide field + this.field.hideFields(); + }, + + onClick: function( e, $el ){ + + // prevent default + e.preventDefault(); + + // toggle + this.toggle(); + }, + + toggle: function(){ + + // bail early if already active + if( this.isActive() ) { + return; + } + + // toggle this tab + this.group.openTab( this ); + } + }); + + var tabsManager = new acf.Model({ + + priority: 50, + + actions: { + 'prepare': 'render', + 'append': 'render', + 'unload': 'onUnload', + 'invalid_field': 'onInvalidField' + }, + + findTabs: function(){ + return $('.acf-tab-wrap'); + }, + + getTabs: function(){ + return acf.getInstances( this.findTabs() ); + }, + + render: function( $el ){ + this.getTabs().map(function( tabs ){ + if( !tabs.get('initialized') ) { + tabs.initializeTabs(); + } + }); + }, + + onInvalidField: function( field ){ + + // bail early if busy + if( this.busy ) { + return; + } + + // ignore if not hidden by tab + if( !field.hiddenByTab ) { + return; + } + + // toggle tab + field.hiddenByTab.toggle(); + + // ignore other invalid fields + this.busy = true; + this.setTimeout(function(){ + this.busy = false; + }, 100); + }, + + onUnload: function(){ + + // vars + var order = []; + + // loop + this.getTabs().map(function( group ){ + var active = group.hasActive() ? group.getActive().index() : 0; + order.push(active); + }); + + // bail if no tabs + if( !order.length ) { + return; + } + + // update + acf.setPreference('this.tabs', order); + } + }); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.models.SelectField.extend({ + type: 'post_object', + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.models.SelectField.extend({ + type: 'page_link', + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.models.SelectField.extend({ + type: 'user', + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'taxonomy', + + data: { + 'ftype': 'select' + }, + + select2: false, + + wait: 'load', + + events: { + 'click a[data-name="add"]': 'onClickAdd', + 'click input[type="radio"]': 'onClickRadio', + }, + + $control: function(){ + return this.$('.acf-taxonomy-field'); + }, + + $input: function(){ + return this.getRelatedPrototype().$input.apply(this, arguments); + }, + + getRelatedType: function(){ + + // vars + var fieldType = this.get('ftype'); + + // normalize + if( fieldType == 'multi_select' ) { + fieldType = 'select'; + } + + // return + return fieldType; + + }, + + getRelatedPrototype: function(){ + return acf.getFieldType( this.getRelatedType() ).prototype; + }, + + getValue: function(){ + return this.getRelatedPrototype().getValue.apply(this, arguments); + }, + + setValue: function(){ + return this.getRelatedPrototype().setValue.apply(this, arguments); + }, + + initialize: function(){ + this.getRelatedPrototype().initialize.apply(this, arguments); + }, + + onRemove: function(){ + if( this.select2 ) { + this.select2.destroy(); + } + }, + + onClickAdd: function( e, $el ){ + + // vars + var field = this; + var popup = false; + var $form = false; + var $name = false; + var $parent = false; + var $button = false; + var $message = false; + var notice = false; + + // step 1. + var step1 = function(){ + + // popup + popup = acf.newPopup({ + title: $el.attr('title'), + loading: true, + width: '300px' + }); + + // ajax + var ajaxData = { + action: 'acf/fields/taxonomy/add_term', + field_key: field.get('key') + }; + + // get HTML + $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax(ajaxData), + type: 'post', + dataType: 'html', + success: step2 + }); + }; + + // step 2. + var step2 = function( html ){ + + // update popup + popup.loading(false); + popup.content(html); + + // vars + $form = popup.$('form'); + $name = popup.$('input[name="term_name"]'); + $parent = popup.$('select[name="term_parent"]'); + $button = popup.$('.acf-submit-button'); + + // focus + $name.focus(); + + // submit form + popup.on('submit', 'form', step3); + }; + + // step 3. + var step3 = function( e, $el ){ + + // prevent + e.preventDefault(); + e.stopImmediatePropagation(); + + // basic validation + if( $name.val() === '' ) { + $name.focus(); + return false; + } + + // disable + acf.startButtonLoading( $button ); + + // ajax + var ajaxData = { + action: 'acf/fields/taxonomy/add_term', + field_key: field.get('key'), + term_name: $name.val(), + term_parent: $parent.length ? $parent.val() : 0 + }; + + $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax(ajaxData), + type: 'post', + dataType: 'json', + success: step4 + }); + }; + + // step 4. + var step4 = function( json ){ + + // enable + acf.stopButtonLoading( $button ); + + // remove prev notice + if( notice ) { + notice.remove(); + } + + // success + if( acf.isAjaxSuccess(json) ) { + + // clear name + $name.val(''); + + // update term lists + step5( json.data ); + + // notice + notice = acf.newNotice({ + type: 'success', + text: acf.getAjaxMessage(json), + target: $form, + timeout: 2000, + dismiss: false + }); + + } else { + + // notice + notice = acf.newNotice({ + type: 'error', + text: acf.getAjaxError(json), + target: $form, + timeout: 2000, + dismiss: false + }); + } + + // focus + $name.focus(); + }; + + // step 5. + var step5 = function( term ){ + + // update parent dropdown + var $option = $(''); + if( term.term_parent ) { + $parent.children('option[value="' + term.term_parent + '"]').after( $option ); + } else { + $parent.append( $option ); + } + + // add this new term to all taxonomy field + var fields = acf.getFields({ + type: 'taxonomy' + }); + + fields.map(function( otherField ){ + if( otherField.get('taxonomy') == field.get('taxonomy') ) { + otherField.appendTerm( term ); + } + }); + + // select + field.selectTerm( term.term_id ); + }; + + // run + step1(); + }, + + appendTerm: function( term ){ + + if( this.getRelatedType() == 'select' ) { + this.appendTermSelect( term ); + } else { + this.appendTermCheckbox( term ); + } + }, + + appendTermSelect: function( term ){ + + this.select2.addOption({ + id: term.term_id, + text: term.term_label + }); + + }, + + appendTermCheckbox: function( term ){ + + // vars + var name = this.$('[name]:first').attr('name'); + var $ul = this.$('ul:first'); + + // allow multiple selection + if( this.getRelatedType() == 'checkbox' ) { + name += '[]'; + } + + // create new li + var $li = $([ + '
        • ', + '', + '
        • ' + ].join('')); + + // find parent + if( term.term_parent ) { + + // vars + var $parent = $ul.find('li[data-id="' + term.term_parent + '"]'); + + // update vars + $ul = $parent.children('ul'); + + // create ul + if( !$ul.exists() ) { + $ul = $('
            '); + $parent.append( $ul ); + } + } + + // append + $ul.append( $li ); + }, + + selectTerm: function( id ){ + if( this.getRelatedType() == 'select' ) { + this.select2.selectOption( id ); + } else { + var $input = this.$('input[value="' + id + '"]'); + $input.prop('checked', true).trigger('change'); + } + }, + + onClickRadio: function( e, $el ){ + + // vars + var $label = $el.parent('label'); + var selected = $label.hasClass('selected'); + + // remove previous selected + this.$('.selected').removeClass('selected'); + + // add active class + $label.addClass('selected'); + + // allow null + if( this.get('allow_null') && selected ) { + $label.removeClass('selected'); + $el.prop('checked', false).trigger('change'); + } + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.models.DatePickerField.extend({ + + type: 'time_picker', + + $control: function(){ + return this.$('.acf-time-picker'); + }, + + initialize: function(){ + + // vars + var $input = this.$input(); + var $inputText = this.$inputText(); + + // args + var args = { + timeFormat: this.get('time_format'), + altField: $input, + altFieldTimeOnly: false, + altTimeFormat: 'HH:mm:ss', + showButtonPanel: true, + controlType: 'select', + oneLine: true, + closeText: acf.get('dateTimePickerL10n').selectText, + timeOnly: true, + }; + + // add custom 'Close = Select' functionality + args.onClose = function( value, dp_instance, t_instance ){ + + // vars + var $close = dp_instance.dpDiv.find('.ui-datepicker-close'); + + // if clicking close button + if( !value && $close.is(':hover') ) { + t_instance._updateDateTime(); + } + }; + + + // filter + args = acf.applyFilters('time_picker_args', args, this); + + // add date time picker + acf.newTimePicker( $inputText, args ); + + // action + acf.doAction('time_picker_init', $inputText, args, this); + } + }); + + acf.registerFieldType( Field ); + + + // add + acf.newTimePicker = function( $input, args ){ + + // bail ealry if no datepicker library + if( typeof $.timepicker === 'undefined' ) { + return false; + } + + // defaults + args = args || {}; + + // initialize + $input.timepicker( args ); + + // wrap the datepicker (only if it hasn't already been wrapped) + if( $('body > #ui-datepicker-div').exists() ) { + $('body > #ui-datepicker-div').wrap('
            '); + } + }; + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'true_false', + + events: { + 'change .acf-switch-input': 'onChange', + 'focus .acf-switch-input': 'onFocus', + 'blur .acf-switch-input': 'onBlur', + 'keypress .acf-switch-input': 'onKeypress' + }, + + $input: function(){ + return this.$('input[type="checkbox"]'); + }, + + $switch: function(){ + return this.$('.acf-switch'); + }, + + getValue: function(){ + return this.$input().prop('checked') ? 1 : 0; + }, + + initialize: function(){ + this.render(); + }, + + render: function(){ + + // vars + var $switch = this.$switch(); + + // bail ealry if no $switch + if( !$switch.length ) return; + + // vars + var $on = $switch.children('.acf-switch-on'); + var $off = $switch.children('.acf-switch-off'); + var width = Math.max( $on.width(), $off.width() ); + + // bail ealry if no width + if( !width ) return; + + // set widths + $on.css( 'min-width', width ); + $off.css( 'min-width', width ); + + }, + + switchOn: function() { + this.$input().prop('checked', true); + this.$switch().addClass('-on'); + }, + + switchOff: function() { + this.$input().prop('checked', false); + this.$switch().removeClass('-on'); + }, + + onChange: function( e, $el ){ + if( $el.prop('checked') ) { + this.switchOn(); + } else { + this.switchOff(); + } + }, + + onFocus: function( e, $el ){ + this.$switch().addClass('-focus'); + }, + + onBlur: function( e, $el ){ + this.$switch().removeClass('-focus'); + }, + + onKeypress: function( e, $el ){ + + // left + if( e.keyCode === 37 ) { + return this.switchOff(); + } + + // right + if( e.keyCode === 39 ) { + return this.switchOn(); + } + + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'url', + + events: { + 'keyup input[type="url"]': 'onkeyup' + }, + + $control: function(){ + return this.$('.acf-input-wrap'); + }, + + $input: function(){ + return this.$('input[type="url"]'); + }, + + initialize: function(){ + this.render(); + }, + + isValid: function(){ + + // vars + var val = this.val(); + + // bail early if no val + if( !val ) { + return false; + } + + // url + if( val.indexOf('://') !== -1 ) { + return true; + } + + // protocol relative url + if( val.indexOf('//') === 0 ) { + return true; + } + + // return + return false; + }, + + render: function(){ + + // add class + if( this.isValid() ) { + this.$control().addClass('-valid'); + } else { + this.$control().removeClass('-valid'); + } + }, + + onkeyup: function( e, $el ){ + this.render(); + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + var Field = acf.Field.extend({ + + type: 'wysiwyg', + + wait: 'load', + + events: { + 'mousedown .acf-editor-wrap.delay': 'onMousedown', + 'unmountField': 'disableEditor', + 'remountField': 'enableEditor', + 'removeField': 'disableEditor' + }, + + $control: function(){ + return this.$('.acf-editor-wrap'); + }, + + $input: function(){ + return this.$('textarea'); + }, + + getMode: function(){ + return this.$control().hasClass('tmce-active') ? 'visual' : 'text'; + }, + + initialize: function(){ + + // initializeEditor if no delay + if( !this.$control().hasClass('delay') ) { + this.initializeEditor(); + } + }, + + initializeEditor: function(){ + + // vars + var $wrap = this.$control(); + var $textarea = this.$input(); + var args = { + tinymce: true, + quicktags: true, + toolbar: this.get('toolbar'), + mode: this.getMode(), + field: this + }; + + // generate new id + var oldId = $textarea.attr('id'); + var newId = acf.uniqueId('acf-editor-'); + + // store copy of textarea data + var data = $textarea.data(); + + // rename + acf.rename({ + target: $wrap, + search: oldId, + replace: newId, + destructive: true + }); + + // update id + this.set('id', newId, true); + + // initialize + acf.tinymce.initialize( newId, args ); + + // apply data to new textarea (acf.rename creates a new textarea element due to destructive mode) + // fixes bug where conditional logic "disabled" is lost during "screen_check" + this.$input().data(data); + }, + + onMousedown: function( e ){ + + // prevent default + e.preventDefault(); + + // remove delay class + var $wrap = this.$control(); + $wrap.removeClass('delay'); + $wrap.find('.acf-editor-toolbar').remove(); + + // initialize + this.initializeEditor(); + }, + + enableEditor: function(){ + if( this.getMode() == 'visual' ) { + acf.tinymce.enable( this.get('id') ); + } + }, + + disableEditor: function(){ + acf.tinymce.destroy( this.get('id') ); + } + }); + + acf.registerFieldType( Field ); + +})(jQuery); + +(function($, undefined){ + + // vars + var storage = []; + + /** + * acf.Condition + * + * description + * + * @date 23/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.Condition = acf.Model.extend({ + + type: '', // used for model name + operator: '==', // rule operator + label: '', // label shown when editing fields + choiceType: 'input', // input, select + fieldTypes: [], // auto connect this conditions with these field types + + data: { + conditions: false, // the parent instance + field: false, // the field which we query against + rule: {} // the rule [field, operator, value] + }, + + events: { + 'change': 'change', + 'keyup': 'change', + 'enableField': 'change', + 'disableField': 'change' + }, + + setup: function( props ){ + $.extend(this.data, props); + }, + + getEventTarget: function( $el, event ){ + return $el || this.get('field').$el; + }, + + change: function( e, $el ){ + this.get('conditions').change( e ); + }, + + match: function( rule, field ){ + return false; + }, + + calculate: function(){ + return this.match( this.get('rule'), this.get('field') ); + }, + + choices: function( field ){ + return ''; + } + }); + + /** + * acf.newCondition + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newCondition = function( rule, conditions ){ + + // currently setting up conditions for fieldX, this field is the 'target' + var target = conditions.get('field'); + + // use the 'target' to find the 'trigger' field. + // - this field is used to setup the conditional logic events + var field = target.getField( rule.field ); + + // bail ealry if no target or no field (possible if field doesn't exist due to HTML error) + if( !target || !field ) { + return false; + } + + // vars + var args = { + rule: rule, + target: target, + conditions: conditions, + field: field + }; + + // vars + var fieldType = field.get('type'); + var operator = rule.operator; + + // get avaibale conditions + var conditionTypes = acf.getConditionTypes({ + fieldType: fieldType, + operator: operator, + }); + + // instantiate + var model = conditionTypes[0] || acf.Condition; + + // instantiate + var condition = new model( args ); + + // return + return condition; + }; + + /** + * mid + * + * Calculates the model ID for a field type + * + * @date 15/12/17 + * @since 5.6.5 + * + * @param string type + * @return string + */ + + var modelId = function( type ) { + return acf.strPascalCase( type || '' ) + 'Condition'; + }; + + /** + * acf.registerConditionType + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.registerConditionType = function( model ){ + + // vars + var proto = model.prototype; + var type = proto.type; + var mid = modelId( type ); + + // store model + acf.models[ mid ] = model; + + // store reference + storage.push( type ); + }; + + /** + * acf.getConditionType + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getConditionType = function( type ){ + var mid = modelId( type ); + return acf.models[ mid ] || false; + } + + /** + * acf.registerConditionForFieldType + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.registerConditionForFieldType = function( conditionType, fieldType ){ + + // get model + var model = acf.getConditionType( conditionType ); + + // append + if( model ) { + model.prototype.fieldTypes.push( fieldType ); + } + }; + + /** + * acf.getConditionTypes + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getConditionTypes = function( args ){ + + // defaults + args = acf.parseArgs(args, { + fieldType: '', + operator: '' + }); + + // clonse available types + var types = []; + + // loop + storage.map(function( type ){ + + // vars + var model = acf.getConditionType(type); + var ProtoFieldTypes = model.prototype.fieldTypes; + var ProtoOperator = model.prototype.operator; + + // check fieldType + if( args.fieldType && ProtoFieldTypes.indexOf( args.fieldType ) === -1 ) { + return; + } + + // check operator + if( args.operator && ProtoOperator !== args.operator ) { + return; + } + + // append + types.push( model ); + }); + + // return + return types; + }; + +})(jQuery); + +(function($, undefined){ + + // vars + var CONTEXT = 'conditional_logic'; + + /** + * conditionsManager + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var conditionsManager = new acf.Model({ + + id: 'conditionsManager', + + priority: 20, // run actions later + + actions: { + 'new_field': 'onNewField', + }, + + onNewField: function( field ){ + if( field.has('conditions') ) { + field.getConditions().render(); + } + }, + }); + + /** + * acf.Field.prototype.getField + * + * Finds a field that is related to another field + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var getSiblingField = function( field, key ){ + + // find sibling (very fast) + var fields = acf.getFields({ + key: key, + sibling: field.$el, + suppressFilters: true, + }); + + // find sibling-children (fast) + // needed for group fields, accordions, etc + if( !fields.length ) { + fields = acf.getFields({ + key: key, + parent: field.$el.parent(), + suppressFilters: true, + }); + } + + // return + if( fields.length ) { + return fields[0]; + } + return false; + }; + + acf.Field.prototype.getField = function( key ){ + + // get sibling field + var field = getSiblingField( this, key ); + + // return early + if( field ) { + return field; + } + + // move up through each parent and try again + var parents = this.parents(); + for( var i = 0; i < parents.length; i++ ) { + + // get sibling field + field = getSiblingField( parents[i], key ); + + // return early + if( field ) { + return field; + } + } + + // return + return false; + }; + + + /** + * acf.Field.prototype.getConditions + * + * Returns the field's conditions instance + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.Field.prototype.getConditions = function(){ + + // instantiate + if( !this.conditions ) { + this.conditions = new Conditions( this ); + } + + // return + return this.conditions; + }; + + + /** + * Conditions + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + var timeout = false; + var Conditions = acf.Model.extend({ + + id: 'Conditions', + + data: { + field: false, // The field with "data-conditions" (target). + timeStamp: false, // Reference used during "change" event. + groups: [], // The groups of condition instances. + }, + + setup: function( field ){ + + // data + this.data.field = field; + + // vars + var conditions = field.get('conditions'); + + // detect groups + if( conditions instanceof Array ) { + + // detect groups + if( conditions[0] instanceof Array ) { + + // loop + conditions.map(function(rules, i){ + this.addRules( rules, i ); + }, this); + + // detect rules + } else { + this.addRules( conditions ); + } + + // detect rule + } else { + this.addRule( conditions ); + } + }, + + change: function( e ){ + + // this function may be triggered multiple times per event due to multiple condition classes + // compare timestamp to allow only 1 trigger per event + if( this.get('timeStamp') === e.timeStamp ) { + return false; + } else { + this.set('timeStamp', e.timeStamp, true); + } + + // render condition and store result + var changed = this.render(); + }, + + render: function(){ + return this.calculate() ? this.show() : this.hide(); + }, + + show: function(){ + return this.get('field').showEnable(this.cid, CONTEXT); + }, + + hide: function(){ + return this.get('field').hideDisable(this.cid, CONTEXT); + }, + + calculate: function(){ + + // vars + var pass = false; + + // loop + this.getGroups().map(function( group ){ + + // igrnore this group if another group passed + if( pass ) return; + + // find passed + var passed = group.filter(function(condition){ + return condition.calculate(); + }); + + // if all conditions passed, update the global var + if( passed.length == group.length ) { + pass = true; + } + }); + + return pass; + }, + + hasGroups: function(){ + return this.data.groups != null; + }, + + getGroups: function(){ + return this.data.groups; + }, + + addGroup: function(){ + var group = []; + this.data.groups.push( group ); + return group; + }, + + hasGroup: function( i ){ + return this.data.groups[i] != null; + }, + + getGroup: function( i ){ + return this.data.groups[i]; + }, + + removeGroup: function( i ){ + this.data.groups[i].delete; + return this; + }, + + addRules: function( rules, group ){ + rules.map(function( rule ){ + this.addRule( rule, group ); + }, this); + }, + + addRule: function( rule, group ){ + + // defaults + group = group || 0; + + // vars + var groupArray; + + // get group + if( this.hasGroup(group) ) { + groupArray = this.getGroup(group); + } else { + groupArray = this.addGroup(); + } + + // instantiate + var condition = acf.newCondition( rule, this ); + + // bail ealry if condition failed (field did not exist) + if( !condition ) { + return false; + } + + // add rule + groupArray.push(condition); + }, + + hasRule: function(){ + + }, + + getRule: function( rule, group ){ + + // defaults + rule = rule || 0; + group = group || 0; + + return this.data.groups[ group ][ rule ]; + }, + + removeRule: function(){ + + } + }); + +})(jQuery); + +(function($, undefined){ + + var __ = acf.__; + + var parseString = function( val ){ + return val ? '' + val : ''; + }; + + var isEqualTo = function( v1, v2 ){ + return ( parseString(v1).toLowerCase() === parseString(v2).toLowerCase() ); + }; + + var isEqualToNumber = function( v1, v2 ){ + return ( parseFloat(v1) === parseFloat(v2) ); + }; + + var isGreaterThan = function( v1, v2 ){ + return ( parseFloat(v1) > parseFloat(v2) ); + }; + + var isLessThan = function( v1, v2 ){ + return ( parseFloat(v1) < parseFloat(v2) ); + }; + + var inArray = function( v1, array ){ + + // cast all values as string + array = array.map(function(v2){ + return parseString(v2); + }); + + return (array.indexOf( v1 ) > -1); + } + + var containsString = function( haystack, needle ){ + return ( parseString(haystack).indexOf( parseString(needle) ) > -1 ); + }; + + var matchesPattern = function( v1, pattern ){ + var regexp = new RegExp(parseString(pattern), 'gi'); + return parseString(v1).match( regexp ); + }; + + /** + * hasValue + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var HasValue = acf.Condition.extend({ + type: 'hasValue', + operator: '!=empty', + label: __('Has any value'), + fieldTypes: [ 'text', 'textarea', 'number', 'range', 'email', 'url', 'password', 'image', 'file', 'wysiwyg', 'oembed', 'select', 'checkbox', 'radio', 'button_group', 'link', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user', 'google_map', 'date_picker', 'date_time_picker', 'time_picker', 'color_picker' ], + match: function( rule, field ){ + return (field.val() ? true : false); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( HasValue ); + + /** + * hasValue + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var HasNoValue = HasValue.extend({ + type: 'hasNoValue', + operator: '==empty', + label: __('Has no value'), + match: function( rule, field ){ + return !HasValue.prototype.match.apply(this, arguments); + } + }); + + acf.registerConditionType( HasNoValue ); + + + + /** + * EqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var EqualTo = acf.Condition.extend({ + type: 'equalTo', + operator: '==', + label: __('Value is equal to'), + fieldTypes: [ 'text', 'textarea', 'number', 'range', 'email', 'url', 'password' ], + match: function( rule, field ){ + if( $.isNumeric(rule.value) ) { + return isEqualToNumber( rule.value, field.val() ); + } else { + return isEqualTo( rule.value, field.val() ); + } + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( EqualTo ); + + /** + * NotEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var NotEqualTo = EqualTo.extend({ + type: 'notEqualTo', + operator: '!=', + label: __('Value is not equal to'), + match: function( rule, field ){ + return !EqualTo.prototype.match.apply(this, arguments); + } + }); + + acf.registerConditionType( NotEqualTo ); + + /** + * PatternMatch + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var PatternMatch = acf.Condition.extend({ + type: 'patternMatch', + operator: '==pattern', + label: __('Value matches pattern'), + fieldTypes: [ 'text', 'textarea', 'email', 'url', 'password', 'wysiwyg' ], + match: function( rule, field ){ + return matchesPattern( field.val(), rule.value ); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( PatternMatch ); + + /** + * Contains + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var Contains = acf.Condition.extend({ + type: 'contains', + operator: '==contains', + label: __('Value contains'), + fieldTypes: [ 'text', 'textarea', 'number', 'email', 'url', 'password', 'wysiwyg', 'oembed', 'select' ], + match: function( rule, field ){ + return containsString( field.val(), rule.value ); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( Contains ); + + /** + * TrueFalseEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var TrueFalseEqualTo = EqualTo.extend({ + type: 'trueFalseEqualTo', + choiceType: 'select', + fieldTypes: [ 'true_false' ], + choices: function( field ){ + return [ + { + id: 1, + text: __('Checked') + } + ]; + }, + }); + + acf.registerConditionType( TrueFalseEqualTo ); + + /** + * TrueFalseNotEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var TrueFalseNotEqualTo = NotEqualTo.extend({ + type: 'trueFalseNotEqualTo', + choiceType: 'select', + fieldTypes: [ 'true_false' ], + choices: function( field ){ + return [ + { + id: 1, + text: __('Checked') + } + ]; + }, + }); + + acf.registerConditionType( TrueFalseNotEqualTo ); + + /** + * SelectEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var SelectEqualTo = acf.Condition.extend({ + type: 'selectEqualTo', + operator: '==', + label: __('Value is equal to'), + fieldTypes: [ 'select', 'checkbox', 'radio', 'button_group' ], + match: function( rule, field ){ + var val = field.val(); + if( val instanceof Array ) { + return inArray( rule.value, val ); + } else { + return isEqualTo( rule.value, val ); + } + }, + choices: function( fieldObject ){ + + // vars + var choices = []; + var lines = fieldObject.$setting('choices textarea').val().split("\n"); + + // allow null + if( fieldObject.$input('allow_null').prop('checked') ) { + choices.push({ + id: '', + text: __('Null') + }); + } + + // loop + lines.map(function( line ){ + + // split + line = line.split(':'); + + // default label to value + line[1] = line[1] || line[0]; + + // append + choices.push({ + id: $.trim( line[0] ), + text: $.trim( line[1] ) + }); + }); + + // return + return choices; + }, + }); + + acf.registerConditionType( SelectEqualTo ); + + /** + * SelectNotEqualTo + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var SelectNotEqualTo = SelectEqualTo.extend({ + type: 'selectNotEqualTo', + operator: '!=', + label: __('Value is not equal to'), + match: function( rule, field ){ + return !SelectEqualTo.prototype.match.apply(this, arguments); + } + }); + + acf.registerConditionType( SelectNotEqualTo ); + + /** + * GreaterThan + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var GreaterThan = acf.Condition.extend({ + type: 'greaterThan', + operator: '>', + label: __('Value is greater than'), + fieldTypes: [ 'number', 'range' ], + match: function( rule, field ){ + var val = field.val(); + if( val instanceof Array ) { + val = val.length; + } + return isGreaterThan( val, rule.value ); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( GreaterThan ); + + + /** + * LessThan + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var LessThan = GreaterThan.extend({ + type: 'lessThan', + operator: '<', + label: __('Value is less than'), + match: function( rule, field ){ + var val = field.val(); + if( val instanceof Array ) { + val = val.length; + } + return isLessThan( val, rule.value ); + }, + choices: function( fieldObject ){ + return ''; + } + }); + + acf.registerConditionType( LessThan ); + + /** + * SelectedGreaterThan + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var SelectionGreaterThan = GreaterThan.extend({ + type: 'selectionGreaterThan', + label: __('Selection is greater than'), + fieldTypes: [ 'checkbox', 'select', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user' ], + }); + + acf.registerConditionType( SelectionGreaterThan ); + + /** + * SelectedGreaterThan + * + * description + * + * @date 1/2/18 + * @since 5.6.5 + * + * @param void + * @return void + */ + + var SelectionLessThan = LessThan.extend({ + type: 'selectionLessThan', + label: __('Selection is less than'), + fieldTypes: [ 'checkbox', 'select', 'post_object', 'page_link', 'relationship', 'taxonomy', 'user' ], + }); + + acf.registerConditionType( SelectionLessThan ); + +})(jQuery); + +(function($, undefined){ + + /** + * acf.newMediaPopup + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newMediaPopup = function( args ){ + + // args + var popup = null; + var args = acf.parseArgs(args, { + mode: 'select', // 'select', 'edit' + title: '', // 'Upload Image' + button: '', // 'Select Image' + type: '', // 'image', '' + field: false, // field instance + allowedTypes: '', // '.jpg, .png, etc' + library: 'all', // 'all', 'uploadedTo' + multiple: false, // false, true, 'add' + attachment: 0, // the attachment to edit + autoOpen: true, // open the popup automatically + open: function(){}, // callback after close + select: function(){}, // callback after select + close: function(){} // callback after close + }); + + // initialize + if( args.mode == 'edit' ) { + popup = new acf.models.EditMediaPopup( args ); + } else { + popup = new acf.models.SelectMediaPopup( args ); + } + + // open popup (allow frame customization before opening) + if( args.autoOpen ) { + setTimeout(function(){ + popup.open(); + }, 1); + } + + // action + acf.doAction('new_media_popup', popup); + + // return + return popup; + }; + + + /** + * getPostID + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var getPostID = function() { + var postID = acf.get('post_id'); + return $.isNumeric(postID) ? postID : 0; + } + + + /** + * acf.getMimeTypes + * + * description + * + * @date 11/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.getMimeTypes = function(){ + return this.get('mimeTypes'); + }; + + acf.getMimeType = function( name ){ + + // vars + var allTypes = acf.getMimeTypes(); + + // search + if( allTypes[name] !== undefined ) { + return allTypes[name]; + } + + // some types contain a mixed key such as "jpg|jpeg|jpe" + for( var key in allTypes ) { + if( key.indexOf(name) !== -1 ) { + return allTypes[key]; + } + } + + // return + return false; + }; + + + /** + * MediaPopup + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var MediaPopup = acf.Model.extend({ + + id: 'MediaPopup', + data: {}, + defaults: {}, + frame: false, + + setup: function( props ){ + $.extend(this.data, props); + }, + + initialize: function(){ + + // vars + var options = this.getFrameOptions(); + + // add states + this.addFrameStates( options ); + + // create frame + var frame = wp.media( options ); + + // add args reference + frame.acf = this; + + // add events + this.addFrameEvents( frame, options ); + + // strore frame + this.frame = frame; + }, + + open: function(){ + this.frame.open(); + }, + + close: function(){ + this.frame.close(); + }, + + remove: function(){ + this.frame.detach(); + this.frame.remove(); + }, + + getFrameOptions: function(){ + + // vars + var options = { + title: this.get('title'), + multiple: this.get('multiple'), + library: {}, + states: [] + }; + + // type + if( this.get('type') ) { + options.library.type = this.get('type'); + } + + // type + if( this.get('library') === 'uploadedTo' ) { + options.library.uploadedTo = getPostID(); + } + + // attachment + if( this.get('attachment') ) { + options.library.post__in = [ this.get('attachment') ]; + } + + // button + if( this.get('button') ) { + options.button = { + text: this.get('button') + }; + } + + // return + return options; + }, + + addFrameStates: function( options ){ + + // create query + var Query = wp.media.query( options.library ); + + // add _acfuploader + // this is super wack! + // if you add _acfuploader to the options.library args, new uploads will not be added to the library view. + // this has been traced back to the wp.media.model.Query initialize function (which can't be overriden) + // Adding any custom args will cause the Attahcments to not observe the uploader queue + // To bypass this security issue, we add in the args AFTER the Query has been initialized + // options.library._acfuploader = settings.field; + if( this.get('field') && acf.isset(Query, 'mirroring', 'args') ) { + Query.mirroring.args._acfuploader = this.get('field'); + } + + // add states + options.states.push( + + // main state + new wp.media.controller.Library({ + library: Query, + multiple: this.get('multiple'), + title: this.get('title'), + priority: 20, + filterable: 'all', + editable: true, + allowLocalEdits: true + }) + + ); + + // edit image functionality (added in WP 3.9) + if( acf.isset(wp, 'media', 'controller', 'EditImage') ) { + options.states.push( new wp.media.controller.EditImage() ); + } + }, + + addFrameEvents: function( frame, options ){ + + // log all events + //frame.on('all', function( e ) { + // console.log( 'frame all: %o', e ); + //}); + + // add class + frame.on('open',function() { + this.$el.closest('.media-modal').addClass('acf-media-modal -' + this.acf.get('mode') ); + }, frame); + + // edit image view + // source: media-views.js:2410 editImageContent() + frame.on('content:render:edit-image', function(){ + + var image = this.state().get('image'); + var view = new wp.media.view.EditImage({ model: image, controller: this }).render(); + this.content.set( view ); + + // after creating the wrapper view, load the actual editor via an ajax call + view.loadEditor(); + + }, frame); + + // update toolbar button + //frame.on( 'toolbar:create:select', function( toolbar ) { + // toolbar.view = new wp.media.view.Toolbar.Select({ + // text: frame.options._button, + // controller: this + // }); + //}, frame ); + + // on select + frame.on('select', function() { + + // vars + var selection = frame.state().get('selection'); + + // if selecting images + if( selection ) { + + // loop + selection.each(function( attachment, i ){ + frame.acf.get('select').apply( frame.acf, [attachment, i] ); + }); + } + }); + + // on close + frame.on('close',function(){ + + // callback and remove + setTimeout(function(){ + frame.acf.get('close').apply( frame.acf ); + frame.acf.remove(); + }, 1); + }); + } + }); + + + /** + * acf.models.SelectMediaPopup + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.models.SelectMediaPopup = MediaPopup.extend({ + id: 'SelectMediaPopup', + setup: function( props ){ + + // default button + if( !props.button ) { + props.button = acf._x('Select', 'verb'); + } + + // parent + MediaPopup.prototype.setup.apply(this, arguments); + }, + + addFrameEvents: function( frame, options ){ + + // plupload + // adds _acfuploader param to validate uploads + if( acf.isset(_wpPluploadSettings, 'defaults', 'multipart_params') ) { + + // add _acfuploader so that Uploader will inherit + _wpPluploadSettings.defaults.multipart_params._acfuploader = this.get('field'); + + // remove acf_field so future Uploaders won't inherit + frame.on('open', function(){ + delete _wpPluploadSettings.defaults.multipart_params._acfuploader; + }); + } + + // browse + frame.on('content:activate:browse', function(){ + + // vars + var toolbar = false; + + // populate above vars making sure to allow for failure + // perhaps toolbar does not exist because the frame open is Upload Files + try { + toolbar = frame.content.get().toolbar; + } catch(e) { + console.log(e); + return; + } + + // callback + frame.acf.customizeFilters.apply(frame.acf, [toolbar]); + }); + + // parent + MediaPopup.prototype.addFrameEvents.apply(this, arguments); + + }, + + customizeFilters: function( toolbar ){ + + // vars + var filters = toolbar.get('filters'); + + // image + if( this.get('type') == 'image' ) { + + // update all + filters.filters.all.text = acf.__('All images'); + + // remove some filters + delete filters.filters.audio; + delete filters.filters.video; + delete filters.filters.image; + + // update all filters to show images + $.each(filters.filters, function( i, filter ){ + filter.props.type = filter.props.type || 'image'; + }); + } + + // specific types + if( this.get('allowedTypes') ) { + + // convert ".jpg, .png" into ["jpg", "png"] + var allowedTypes = this.get('allowedTypes').split(' ').join('').split('.').join('').split(','); + + // loop + allowedTypes.map(function( name ){ + + // get type + var mimeType = acf.getMimeType( name ); + + // bail early if no type + if( !mimeType ) return; + + // create new filter + var newFilter = { + text: mimeType, + props: { + status: null, + type: mimeType, + uploadedTo: null, + orderby: 'date', + order: 'DESC' + }, + priority: 20 + }; + + // append + filters.filters[ mimeType ] = newFilter; + + }); + } + + + + // uploaded to post + if( this.get('library') === 'uploadedTo' ) { + + // vars + var uploadedTo = this.frame.options.library.uploadedTo; + + // remove some filters + delete filters.filters.unattached; + delete filters.filters.uploaded; + + // add uploadedTo to filters + $.each(filters.filters, function( i, filter ){ + filter.text += ' (' + acf.__('Uploaded to this post') + ')'; + filter.props.uploadedTo = uploadedTo; + }); + } + + // add _acfuploader to filters + var field = this.get('field'); + $.each(filters.filters, function( k, filter ){ + filter.props._acfuploader = field; + }); + + // add _acfuplaoder to search + var search = toolbar.get('search'); + search.model.attributes._acfuploader = field; + + // render (custom function added to prototype) + if( filters.renderFilters ) { + filters.renderFilters(); + } + } + }); + + + /** + * acf.models.EditMediaPopup + * + * description + * + * @date 10/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.models.EditMediaPopup = MediaPopup.extend({ + id: 'SelectMediaPopup', + setup: function( props ){ + + // default button + if( !props.button ) { + props.button = acf._x('Update', 'verb'); + } + + // parent + MediaPopup.prototype.setup.apply(this, arguments); + }, + + addFrameEvents: function( frame, options ){ + + // add class + frame.on('open',function() { + + // add class + this.$el.closest('.media-modal').addClass('acf-expanded'); + + // set to browse + if( this.content.mode() != 'browse' ) { + this.content.mode('browse'); + } + + // set selection + var state = this.state(); + var selection = state.get('selection'); + var attachment = wp.media.attachment( frame.acf.get('attachment') ); + selection.add( attachment ); + + }, frame); + + // parent + MediaPopup.prototype.addFrameEvents.apply(this, arguments); + + } + }); + + + /** + * customizePrototypes + * + * description + * + * @date 11/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var customizePrototypes = new acf.Model({ + id: 'customizePrototypes', + wait: 'ready', + + initialize: function(){ + + // bail early if no media views + if( !acf.isset(window, 'wp', 'media', 'view') ) { + return; + } + + // fix bug where CPT without "editor" does not set post.id setting which then prevents uploadedTo from working + var postID = getPostID(); + if( postID && acf.isset(wp, 'media', 'view', 'settings', 'post') ) { + wp.media.view.settings.post.id = postID; + } + + // customize + this.customizeAttachmentsButton(); + this.customizeAttachmentsRouter(); + this.customizeAttachmentFilters(); + this.customizeAttachmentCompat(); + this.customizeAttachmentLibrary(); + }, + + customizeAttachmentsButton: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'Button') ) { + return; + } + + // Extend + var Button = wp.media.view.Button; + wp.media.view.Button = Button.extend({ + + // Fix bug where "Select" button appears blank after editing an image. + // Do this by simplifying Button initialize function and avoid deleting this.options. + initialize: function() { + var options = _.defaults( this.options, this.defaults ); + this.model = new Backbone.Model( options ); + this.listenTo( this.model, 'change', this.render ); + } + }); + + }, + + customizeAttachmentsRouter: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'Router') ) { + return; + } + + // vars + var Parent = wp.media.view.Router; + + // extend + wp.media.view.Router = Parent.extend({ + + addExpand: function(){ + + // vars + var $a = $([ + '', + '' + acf.__('Expand Details') + '', + '' + acf.__('Collapse Details') + '', + '' + ].join('')); + + // add events + $a.on('click', function( e ){ + e.preventDefault(); + var $div = $(this).closest('.media-modal'); + if( $div.hasClass('acf-expanded') ) { + $div.removeClass('acf-expanded'); + } else { + $div.addClass('acf-expanded'); + } + }); + + // append + this.$el.append( $a ); + }, + + initialize: function(){ + + // initialize + Parent.prototype.initialize.apply( this, arguments ); + + // add buttons + this.addExpand(); + + // return + return this; + } + }); + }, + + customizeAttachmentFilters: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'AttachmentFilters', 'All') ) { + return; + } + + // vars + var Parent = wp.media.view.AttachmentFilters.All; + + // renderFilters + // copied from media-views.js:6939 + Parent.prototype.renderFilters = function(){ + + // Build `' ).val( value ).html( filter.text )[0], + priority: filter.priority || 50 + }; + }, this ).sortBy('priority').pluck('el').value() ); + + }; + }, + + customizeAttachmentCompat: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'AttachmentCompat') ) { + return; + } + + // vars + var AttachmentCompat = wp.media.view.AttachmentCompat; + var timeout = false; + + // extend + wp.media.view.AttachmentCompat = AttachmentCompat.extend({ + + render: function() { + + // WP bug + // When multiple media frames exist on the same page (WP content, WYSIWYG, image, file ), + // WP creates multiple instances of this AttachmentCompat view. + // Each instance will attempt to render when a new modal is created. + // Use a property to avoid this and only render once per instance. + if( this.rendered ) { + return this; + } + + // render HTML + AttachmentCompat.prototype.render.apply( this, arguments ); + + // when uploading, render is called twice. + // ignore first render by checking for #acf-form-data element + if( !this.$('#acf-form-data').length ) { + return this; + } + + // clear timeout + clearTimeout( timeout ); + + // setTimeout + timeout = setTimeout($.proxy(function(){ + this.rendered = true; + acf.doAction('append', this.$el); + }, this), 50); + + // return + return this; + }, + + save: function( event ) { + var data = {}; + + if ( event ) { + event.preventDefault(); + } + + //_.each( this.$el.serializeArray(), function( pair ) { + // data[ pair.name ] = pair.value; + //}); + + // Serialize data more thoroughly to allow chckbox inputs to save. + data = acf.serializeForAjax(this.$el); + + this.controller.trigger( 'attachment:compat:waiting', ['waiting'] ); + this.model.saveCompat( data ).always( _.bind( this.postSave, this ) ); + } + }); + + }, + + customizeAttachmentLibrary: function(){ + + // validate + if( !acf.isset(wp, 'media', 'view', 'Attachment', 'Library') ) { + return; + } + + // vars + var AttachmentLibrary = wp.media.view.Attachment.Library; + + // extend + wp.media.view.Attachment.Library = AttachmentLibrary.extend({ + + render: function() { + + // vars + var popup = acf.isget(this, 'controller', 'acf'); + var attributes = acf.isget(this, 'model', 'attributes'); + + // check vars exist to avoid errors + if( popup && attributes ) { + + // show errors + if( attributes.acf_errors ) { + this.$el.addClass('acf-disabled'); + } + + // disable selected + var selected = popup.get('selected'); + if( selected && selected.indexOf(attributes.id) > -1 ) { + this.$el.addClass('acf-selected'); + } + } + + // render + return AttachmentLibrary.prototype.render.apply( this, arguments ); + + }, + + + /* + * toggleSelection + * + * This function is called before an attachment is selected + * A good place to check for errors and prevent the 'select' function from being fired + * + * @type function + * @date 29/09/2016 + * @since 5.4.0 + * + * @param options (object) + * @return n/a + */ + + toggleSelection: function( options ) { + + // vars + // source: wp-includes/js/media-views.js:2880 + var collection = this.collection, + selection = this.options.selection, + model = this.model, + single = selection.single(); + + + // vars + var frame = this.controller; + var errors = acf.isget(this, 'model', 'attributes', 'acf_errors'); + var $sidebar = frame.$el.find('.media-frame-content .media-sidebar'); + + // remove previous error + $sidebar.children('.acf-selection-error').remove(); + + // show attachment details + $sidebar.children().removeClass('acf-hidden'); + + // add message + if( frame && errors ) { + + // vars + var filename = acf.isget(this, 'model', 'attributes', 'filename'); + + // hide attachment details + // Gallery field continues to show previously selected attachment... + $sidebar.children().addClass('acf-hidden'); + + // append message + $sidebar.prepend([ + '
            ', + '' + acf.__('Restricted') +'', + '' + filename + '', + '' + errors + '', + '
            ' + ].join('')); + + // reset selection (unselects all attachments) + selection.reset(); + + // set single (attachment displayed in sidebar) + selection.single( model ); + + // return and prevent 'select' form being fired + return; + + } + + // return + return AttachmentLibrary.prototype.toggleSelection.apply( this, arguments ); + } + }); + } + }); + +})(jQuery); + +(function($, undefined){ + + acf.screen = new acf.Model({ + + active: true, + + xhr: false, + + timeout: false, + + wait: 'load', + + events: { + 'change #page_template': 'onChange', + 'change #parent_id': 'onChange', + 'change #post-formats-select': 'onChange', + 'change .categorychecklist': 'onChange', + 'change .tagsdiv': 'onChange', + 'change .acf-taxonomy-field[data-save="1"]': 'onChange', + 'change #product-type': 'onChange' + }, + + isPost: function(){ + return acf.get('screen') === 'post'; + }, + + isUser: function(){ + return acf.get('screen') === 'user'; + }, + + isTaxonomy: function(){ + return acf.get('screen') === 'taxonomy'; + }, + + isAttachment: function(){ + return acf.get('screen') === 'attachment'; + }, + + isNavMenu: function(){ + return acf.get('screen') === 'nav_menu'; + }, + + isWidget: function(){ + return acf.get('screen') === 'widget'; + }, + + isComment: function(){ + return acf.get('screen') === 'comment'; + }, + + getPageTemplate: function(){ + var $el = $('#page_template'); + return $el.length ? $el.val() : null; + }, + + getPageParent: function( e, $el ){ + var $el = $('#parent_id'); + return $el.length ? $el.val() : null; + }, + + getPageType: function( e, $el ){ + return this.getPageParent() ? 'child' : 'parent'; + }, + + getPostType: function(){ + return $('#post_type').val(); + }, + + getPostFormat: function( e, $el ){ + var $el = $('#post-formats-select input:checked'); + if( $el.length ) { + var val = $el.val(); + return (val == '0') ? 'standard' : val; + } + return null; + }, + + getPostCoreTerms: function(){ + + // vars + var terms = {}; + + // serialize WP taxonomy postboxes + var data = acf.serialize( $('.categorydiv, .tagsdiv') ); + + // use tax_input (tag, custom-taxonomy) when possible. + // this data is already formatted in taxonomy => [terms]. + if( data.tax_input ) { + terms = data.tax_input; + } + + // append "category" which uses a different name + if( data.post_category ) { + terms.category = data.post_category; + } + + // convert any string values (tags) into array format + for( var tax in terms ) { + if( !acf.isArray(terms[tax]) ) { + terms[tax] = terms[tax].split(/,[\s]?/); + } + } + + // return + return terms; + }, + + getPostTerms: function(){ + + // Get core terms. + var terms = this.getPostCoreTerms(); + + // loop over taxonomy fields and add their values + acf.getFields({type: 'taxonomy'}).map(function( field ){ + + // ignore fields that don't save + if( !field.get('save') ) { + return; + } + + // vars + var val = field.val(); + var tax = field.get('taxonomy'); + + // check val + if( val ) { + + // ensure terms exists + terms[ tax ] = terms[ tax ] || []; + + // ensure val is an array + val = acf.isArray(val) ? val : [val]; + + // append + terms[ tax ] = terms[ tax ].concat( val ); + } + }); + + // add WC product type + if( (productType = this.getProductType()) !== null ) { + terms.product_type = [productType]; + } + + // remove duplicate values + for( var tax in terms ) { + terms[tax] = acf.uniqueArray(terms[tax]); + } + + // return + return terms; + }, + + getProductType: function(){ + var $el = $('#product-type'); + return $el.length ? $el.val() : null; + }, + + check: function(){ + + // bail early if not for post + if( acf.get('screen') !== 'post' ) { + return; + } + + // abort XHR if is already loading AJAX data + if( this.xhr ) { + this.xhr.abort(); + } + + // vars + var ajaxData = acf.parseArgs(this.data, { + action: 'acf/ajax/check_screen', + screen: acf.get('screen'), + exists: [] + }); + + // post id + if( this.isPost() ) { + ajaxData.post_id = acf.get('post_id'); + } + + // post type + if( (postType = this.getPostType()) !== null ) { + ajaxData.post_type = postType; + } + + // page template + if( (pageTemplate = this.getPageTemplate()) !== null ) { + ajaxData.page_template = pageTemplate; + } + + // page parent + if( (pageParent = this.getPageParent()) !== null ) { + ajaxData.page_parent = pageParent; + } + + // page type + if( (pageType = this.getPageType()) !== null ) { + ajaxData.page_type = pageType; + } + + // post format + if( (postFormat = this.getPostFormat()) !== null ) { + ajaxData.post_format = postFormat; + } + + // post terms + if( (postTerms = this.getPostTerms()) !== null ) { + ajaxData.post_terms = postTerms; + } + + // add array of existing postboxes to increase performance and reduce JSON HTML + acf.getPostboxes().map(function( postbox ){ + ajaxData.exists.push( postbox.get('key') ); + }); + + // filter + ajaxData = acf.applyFilters('check_screen_args', ajaxData); + + // success + var onSuccess = function( json ){ + + // Check success. + if( acf.isAjaxSuccess(json) ) { + + // Render post screen. + if( acf.get('screen') == 'post' ) { + this.renderPostScreen( json.data ); + + // Render user screen. + } else if( acf.get('screen') == 'user' ) { + this.renderUserScreen( json.data ); + } + } + + // action + acf.doAction('check_screen_complete', json.data, ajaxData); + }; + + // ajax + this.xhr = $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax( ajaxData ), + type: 'post', + dataType: 'json', + context: this, + success: onSuccess + }); + }, + + onChange: function( e, $el ){ + this.setTimeout(this.check, 1); + }, + + renderPostScreen: function( data ){ + + // vars + var visible = []; + + // Helper function to copy events + var copyEvents = function( $from, $to ){ + var events = $._data($from[0]).events; + for( var type in events ) { + for( var i = 0; i < events[type].length; i++ ) { + $to.on( type, events[type][i].handler ); + } + } + } + + // Helper function to sort metabox. + var sortMetabox = function( id, ids ){ + + // Find position of id within ids. + var index = ids.indexOf( id ); + + // Bail early if index not found. + if( index == -1 ) { + return false; + } + + // Loop over metaboxes behind (in reverse order). + for( var i = index-1; i >= 0; i-- ) { + if( $('#'+ids[i]).length ) { + return $('#'+ids[i]).after( $('#'+id) ); + } + } + + // Loop over metaboxes infront. + for( var i = index+1; i < ids.length; i++ ) { + if( $('#'+ids[i]).length ) { + return $('#'+ids[i]).before( $('#'+id) ); + } + } + + // Return false if not sorted. + return false; + }; + + // Show these postboxes. + data.results.map(function( result, i ){ + + // vars + var postbox = acf.getPostbox( result.id ); + + // Create postbox if doesn't exist. + if( !postbox ) { + + // Create it. + var $postbox = $([ + '
            ', + '', + '

            ', + '' + result.title + '', + '

            ', + '
            ', + result.html, + '
            ', + '
            ' + ].join('')); + + // Create new hide toggle. + if( $('#adv-settings').length ) { + var $prefs = $('#adv-settings .metabox-prefs'); + var $label = $([ + '' + ].join('')); + + // Copy default WP events onto checkbox. + copyEvents( $prefs.find('input').first(), $label.find('input') ); + + // Append hide label + $prefs.append( $label ); + } + + // Append metabox to the bottom of "side-sortables". + if( result.position === 'side' ) { + $('#' + result.position + '-sortables').append( $postbox ); + + // Prepend metabox to the top of "normal-sortbables". + } else { + $('#' + result.position + '-sortables').prepend( $postbox ); + } + + // Position metabox amongst existing ACF metaboxes within the same location. + var order = []; + data.results.map(function( _result ){ + if( result.position === _result.position && $('#' + result.position + '-sortables #' + _result.id).length ) { + order.push( _result.id ); + } + }); + sortMetabox(result.id, order) + + // Check 'sorted' for user preference. + if( data.sorted ) { + + // Loop over each position (acf_after_title, side, normal). + for( var position in data.sorted ) { + + // Explode string into array of ids. + var order = data.sorted[position].split(','); + + // Position metabox relative to order. + if( sortMetabox(result.id, order) ) { + break; + } + } + } + + // Copy default WP events onto metabox. + var $submitdiv = $('#submitdiv'); + if( $('#submitdiv').length ) { + copyEvents( $submitdiv.children('.handlediv'), $postbox.children('.handlediv') ); + copyEvents( $submitdiv.children('.hndle'), $postbox.children('.hndle') ); + } + + // Initalize it (modifies HTML). + postbox = acf.newPostbox( result ); + + // Trigger action. + acf.doAction('append', $postbox); + acf.doAction('append_postbox', postbox); + } + + // show postbox + postbox.showEnable(); + + // Do action. + acf.doAction('show_postbox', postbox); + + // append + visible.push( result.id ); + }); + + // Hide these postboxes. + acf.getPostboxes().map(function( postbox ){ + if( visible.indexOf( postbox.get('id') ) === -1 ) { + postbox.hideDisable(); + + // Do action. + acf.doAction('hide_postbox', postbox); + } + }); + + // Update style. + $('#acf-style').html( data.style ); + }, + + renderUserScreen: function( json ){ + + } + }); + + /** + * gutenScreen + * + * Adds compatibility with the Gutenberg edit screen. + * + * @date 11/12/18 + * @since 5.8.0 + * + * @param void + * @return void + */ + var gutenScreen = new acf.Model({ + + // Wait until load to avoid 'core' issues when loading taxonomies. + wait: 'load', + + initialize: function(){ + + // Bail early if not Gutenberg. + if( !acf.isGutenberg() ) { + return; + } + + // Listen for changes. + wp.data.subscribe(this.proxy(this.onChange)); + + // Customize "acf.screen.get" functions. + acf.screen.getPageTemplate = this.getPageTemplate; + acf.screen.getPageParent = this.getPageParent; + acf.screen.getPostType = this.getPostType; + acf.screen.getPostFormat = this.getPostFormat; + acf.screen.getPostCoreTerms = this.getPostCoreTerms; + + // Disable unload + acf.unload.disable(); + + // Add actions. + //this.addAction( 'append_postbox', acf.screen.refreshAvailableMetaBoxesPerLocation ); + }, + + onChange: function(){ + + // Get edits. + var edits = wp.data.select( 'core/editor' ).getPostEdits(); + + // Check specific attributes. + var attributes = [ + 'template', + 'parent', + 'format' + ]; + + // Append taxonomy attributes. + var taxonomies = wp.data.select( 'core' ).getTaxonomies() || []; + taxonomies.map(function( taxonomy ){ + attributes.push( taxonomy.rest_base ); + }); + + // Filter out attributes that have not changed. + attributes = attributes.filter(this.proxy(function( attr ){ + return ( edits[attr] !== undefined && edits[attr] !== this.get(attr) ); + })); + + // Trigger change if has attributes. + if( attributes.length ) { + this.triggerChange( edits ) + } + }, + + triggerChange: function( edits ){ + + // Update this.data if edits are provided. + if( edits !== undefined ) { + this.data = edits; + } + + // Check screen. + acf.screen.check(); + }, + + getPageTemplate: function(){ + return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'template' ); + }, + + getPageParent: function( e, $el ){ + return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'parent' ); + }, + + getPostType: function(){ + return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'type' ); + }, + + getPostFormat: function( e, $el ){ + return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'format' ); + }, + + getPostCoreTerms: function(){ + + // vars + var terms = {}; + + // Loop over taxonomies. + var taxonomies = wp.data.select( 'core' ).getTaxonomies() || []; + taxonomies.map(function( taxonomy ){ + + // Append selected taxonomies to terms object. + var postTerms = wp.data.select( 'core/editor' ).getEditedPostAttribute( taxonomy.rest_base ); + if( postTerms ) { + terms[ taxonomy.slug ] = postTerms; + } + }); + + // return + return terms; + } + }); + + /** + * acf.screen.refreshAvailableMetaBoxesPerLocation + * + * Refreshes the WP data state based on metaboxes found in the DOM. + * + * Caution. Not safe to use. + * Causes duplicate dispatch listeners when saving post resulting in duplicate postmeta. + * + * @date 6/3/19 + * @since 5.7.13 + * + * @param void + * @return void + */ + acf.screen.refreshAvailableMetaBoxesPerLocation = function() { + + // Extract vars. + var select = wp.data.select( 'core/edit-post' ); + var dispatch = wp.data.dispatch( 'core/edit-post' ); + + // Load current metabox locations and data. + var data = {}; + select.getActiveMetaBoxLocations().map(function( location ){ + data[ location ] = select.getMetaBoxesPerLocation( location ); + }); + + // Generate flat array of existing ids. + var ids = []; + for( var k in data ) { + ids = ids.concat( data[k].map(function(m){ return m.id; }) ); + } + + // Append ACF metaboxes. + acf.getPostboxes().map(function( postbox ){ + + // Ignore if already exists in data. + if( ids.indexOf( postbox.get('id') ) !== -1 ) { + return; + } + + // Get metabox location looking at parent form. + var location = postbox.$el.closest('form').attr('class').replace('metabox-location-', ''); + + // Ensure location exists. + data[ location ] = data[ location ] || []; + + // Append. + data[ location ].push({ + id: postbox.get('id'), + title: postbox.get('title') + }); + }); + + // Update state. + dispatch.setAvailableMetaBoxesPerLocation(data); + }; + +})(jQuery); + +(function($, undefined){ + + /** + * acf.newSelect2 + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newSelect2 = function( $select, props ){ + + // defaults + props = acf.parseArgs(props, { + allowNull: false, + placeholder: '', + multiple: false, + field: false, + ajax: false, + ajaxAction: '', + ajaxData: function( data ){ return data; }, + ajaxResults: function( json ){ return json; }, + }); + + // initialize + if( getVersion() == 4 ) { + var select2 = new Select2_4( $select, props ); + } else { + var select2 = new Select2_3( $select, props ); + } + + // actions + acf.doAction('new_select2', select2); + + // return + return select2; + }; + + /** + * getVersion + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function getVersion() { + + // v4 + if( acf.isset(window, 'jQuery', 'fn', 'select2', 'amd') ) { + return 4; + } + + // v3 + if( acf.isset(window, 'Select2') ) { + return 3; + } + + // return + return false; + } + + /** + * Select2 + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var Select2 = acf.Model.extend({ + + setup: function( $select, props ){ + $.extend(this.data, props); + this.$el = $select; + }, + + initialize: function(){ + + }, + + selectOption: function( value ){ + var $option = this.getOption( value ); + if( !$option.prop('selected') ) { + $option.prop('selected', true).trigger('change'); + } + }, + + unselectOption: function( value ){ + var $option = this.getOption( value ); + if( $option.prop('selected') ) { + $option.prop('selected', false).trigger('change'); + } + }, + + getOption: function( value ){ + return this.$('option[value="' + value + '"]'); + }, + + addOption: function( option ){ + + // defaults + option = acf.parseArgs(option, { + id: '', + text: '', + selected: false + }); + + // vars + var $option = this.getOption( option.id ); + + // append + if( !$option.length ) { + $option = $(''); + $option.html( option.text ); + $option.attr('value', option.id); + $option.prop('selected', option.selected); + this.$el.append($option); + } + + // chain + return $option; + }, + + getValue: function(){ + + // vars + var val = []; + var $options = this.$el.find('option:selected'); + + // bail early if no selected + if( !$options.exists() ) { + return val; + } + + // sort by attribute + $options = $options.sort(function(a, b) { + return +a.getAttribute('data-i') - +b.getAttribute('data-i'); + }); + + // loop + $options.each(function(){ + var $el = $(this); + val.push({ + $el: $el, + id: $el.attr('value'), + text: $el.text(), + }); + }); + + // return + return val; + + }, + + mergeOptions: function(){ + + }, + + getChoices: function(){ + + // callback + var crawl = function( $parent ){ + + // vars + var choices = []; + + // loop + $parent.children().each(function(){ + + // vars + var $child = $(this); + + // optgroup + if( $child.is('optgroup') ) { + + choices.push({ + text: $child.attr('label'), + children: crawl( $child ) + }); + + // option + } else { + + choices.push({ + id: $child.attr('value'), + text: $child.text() + }); + } + }); + + // return + return choices; + }; + + // crawl + return crawl( this.$el ); + }, + + decodeChoices: function( choices ){ + + // callback + var crawl = function( items ){ + items.map(function( item ){ + item.text = acf.decode( item.text ); + if( item.children ) { + item.children = crawl( item.children ); + } + return item; + }); + return items; + }; + + // crawl + return crawl( choices ); + }, + + getAjaxData: function( params ){ + + // vars + var ajaxData = { + action: this.get('ajaxAction'), + s: params.term || '', + paged: params.page || 1 + }; + + // field helper + var field = this.get('field'); + if( field ) { + ajaxData.field_key = field.get('key'); + } + + // callback + var callback = this.get('ajaxData'); + if( callback ) { + ajaxData = callback.apply( this, [ajaxData, params] ); + } + + // filter + ajaxData = acf.applyFilters( 'select2_ajax_data', ajaxData, this.data, this.$el, (field || false), this ); + + // return + return acf.prepareForAjax(ajaxData); + }, + + getAjaxResults: function( json, params ){ + + // defaults + json = acf.parseArgs(json, { + results: false, + more: false, + }); + + // decode + if( json.results ) { + json.results = this.decodeChoices(json.results); + } + + // callback + var callback = this.get('ajaxResults'); + if( callback ) { + json = callback.apply( this, [json, params] ); + } + + // filter + json = acf.applyFilters( 'select2_ajax_results', json, params, this ); + + // return + return json; + }, + + processAjaxResults: function( json, params ){ + + // vars + var json = this.getAjaxResults( json, params ); + + // change more to pagination + if( json.more ) { + json.pagination = { more: true }; + } + + // merge together groups + setTimeout($.proxy(this.mergeOptions, this), 1); + + // return + return json; + }, + + destroy: function(){ + + // destroy via api + if( this.$el.data('select2') ) { + this.$el.select2('destroy'); + } + + // destory via HTML (duplicating HTML does not contain data) + this.$el.siblings('.select2-container').remove(); + } + + }); + + + /** + * Select2_4 + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var Select2_4 = Select2.extend({ + + initialize: function(){ + + // vars + var $select = this.$el; + var options = { + width: '100%', + allowClear: this.get('allowNull'), + placeholder: this.get('placeholder'), + multiple: this.get('multiple'), + data: [], + escapeMarkup: function( m ){ return m; } + }; + + // multiple + if( options.multiple ) { + + // reorder options + this.getValue().map(function( item ){ + item.$el.detach().appendTo( $select ); + }); + } + + // remove conflicting atts + $select.removeData('ajax'); + $select.removeAttr('data-ajax'); + + // ajax + if( this.get('ajax') ) { + + options.ajax = { + url: acf.get('ajaxurl'), + delay: 250, + dataType: 'json', + type: 'post', + cache: false, + data: $.proxy(this.getAjaxData, this), + processResults: $.proxy(this.processAjaxResults, this), + }; + } + + // filter for 3rd party customization + //options = acf.applyFilters( 'select2_args', options, $select, this ); + var field = this.get('field'); + options = acf.applyFilters( 'select2_args', options, $select, this.data, (field || false), this ); + + // add select2 + $select.select2( options ); + + // get container (Select2 v4 does not return this from constructor) + var $container = $select.next('.select2-container'); + + // multiple + if( options.multiple ) { + + // vars + var $ul = $container.find('ul'); + + // sortable + $ul.sortable({ + stop: function( e ) { + + // loop + $ul.find('.select2-selection__choice').each(function() { + + // vars + var $option = $( $(this).data('data').element ); + + // detach and re-append to end + $option.detach().appendTo( $select ); + }); + + // trigger change on input (JS error if trigger on select) + $select.trigger('change'); + } + }); + + // on select, move to end + $select.on('select2:select', this.proxy(function( e ){ + this.getOption( e.params.data.id ).detach().appendTo( this.$el ); + })); + } + + // add class + $container.addClass('-acf'); + + // action for 3rd party customization + acf.doAction('select2_init', $select, options, this.data, (field || false), this); + }, + + mergeOptions: function(){ + + // vars + var $prevOptions = false; + var $prevGroup = false; + + // loop + $('.select2-results__option[role="group"]').each(function(){ + + // vars + var $options = $(this).children('ul'); + var $group = $(this).children('strong'); + + // compare to previous + if( $prevGroup && $prevGroup.text() === $group.text() ) { + $prevOptions.append( $options.children() ); + $(this).remove(); + return; + } + + // update vars + $prevOptions = $options; + $prevGroup = $group; + + }); + }, + + }); + + /** + * Select2_3 + * + * description + * + * @date 13/1/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var Select2_3 = Select2.extend({ + + initialize: function(){ + + // vars + var $select = this.$el; + var value = this.getValue(); + var multiple = this.get('multiple'); + var options = { + width: '100%', + allowClear: this.get('allowNull'), + placeholder: this.get('placeholder'), + separator: '||', + multiple: this.get('multiple'), + data: this.getChoices(), + escapeMarkup: function( m ){ return m; }, + dropdownCss: { + 'z-index': '999999999' + }, + initSelection: function( element, callback ) { + if( multiple ) { + callback( value ); + } else { + callback( value.shift() ); + } + } + }; + + // get hidden input + var $input = $select.siblings('input'); + if( !$input.length ) { + $input = $(''); + $select.before( $input ); + } + + // set input value + inputValue = value.map(function(item){ return item.id }).join('||'); + $input.val( inputValue ); + + // multiple + if( options.multiple ) { + + // reorder options + value.map(function( item ){ + item.$el.detach().appendTo( $select ); + }); + } + + // remove blank option as we have a clear all button + if( options.allowClear ) { + options.data = options.data.filter(function(item){ + return item.id !== ''; + }); + } + + // remove conflicting atts + $select.removeData('ajax'); + $select.removeAttr('data-ajax'); + + // ajax + if( this.get('ajax') ) { + + options.ajax = { + url: acf.get('ajaxurl'), + quietMillis: 250, + dataType: 'json', + type: 'post', + cache: false, + data: $.proxy(this.getAjaxData, this), + results: $.proxy(this.processAjaxResults, this), + }; + } + + // filter for 3rd party customization + var field = this.get('field'); + options = acf.applyFilters( 'select2_args', options, $select, this.data, (field || false), this ); + + // add select2 + $input.select2( options ); + + // get container + var $container = $input.select2('container'); + + // helper to find this select's option + var getOption = $.proxy(this.getOption, this); + + // multiple + if( options.multiple ) { + + // vars + var $ul = $container.find('ul'); + + // sortable + $ul.sortable({ + stop: function() { + + // loop + $ul.find('.select2-search-choice').each(function() { + + // vars + var data = $(this).data('select2Data'); + var $option = getOption( data.id ); + + // detach and re-append to end + $option.detach().appendTo( $select ); + }); + + // trigger change on input (JS error if trigger on select) + $select.trigger('change'); + } + }); + } + + // on select, create option and move to end + $input.on('select2-selecting', function( e ){ + + // vars + var item = e.choice; + var $option = getOption( item.id ); + + // create if doesn't exist + if( !$option.length ) { + $option = $(''); + } + + // detach and re-append to end + $option.detach().appendTo( $select ); + }); + + // add class + $container.addClass('-acf'); + + // action for 3rd party customization + acf.doAction('select2_init', $select, options, this.data, (field || false), this); + + // change + $input.on('change', function(){ + var val = $input.val(); + if( val.indexOf('||') ) { + val = val.split('||'); + } + $select.val( val ).trigger('change'); + }); + + // hide select + $select.hide(); + }, + + mergeOptions: function(){ + + // vars + var $prevOptions = false; + var $prevGroup = false; + + // loop + $('#select2-drop .select2-result-with-children').each(function(){ + + // vars + var $options = $(this).children('ul'); + var $group = $(this).children('.select2-result-label'); + + // compare to previous + if( $prevGroup && $prevGroup.text() === $group.text() ) { + $prevGroup.append( $options.children() ); + $(this).remove(); + return; + } + + // update vars + $prevOptions = $options; + $prevGroup = $group; + + }); + + }, + + getAjaxData: function( term, page ){ + + // create Select2 v4 params + var params = { + term: term, + page: page + } + + // return + return Select2.prototype.getAjaxData.apply(this, [params]); + }, + + }); + + + // manager + var select2Manager = new acf.Model({ + priority: 5, + wait: 'prepare', + initialize: function(){ + + // vars + var locale = acf.get('locale'); + var rtl = acf.get('rtl'); + var l10n = acf.get('select2L10n'); + var version = getVersion(); + + // bail ealry if no l10n + if( !l10n ) { + return false; + } + + // bail early if 'en' + if( locale.indexOf('en') === 0 ) { + return false; + } + + // initialize + if( version == 4 ) { + this.addTranslations4(); + } else if( version == 3 ) { + this.addTranslations3(); + } + }, + + addTranslations4: function(){ + + // vars + var l10n = acf.get('select2L10n'); + var locale = acf.get('locale'); + + // modify local to match html[lang] attribute (used by Select2) + locale = locale.replace('_', '-'); + + // select2L10n + var select2L10n = { + errorLoading: function () { + return l10n.load_fail; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + if( overChars > 1 ) { + return l10n.input_too_long_n.replace( '%d', overChars ); + } + return l10n.input_too_long_1; + }, + inputTooShort: function( args ){ + var remainingChars = args.minimum - args.input.length; + if( remainingChars > 1 ) { + return l10n.input_too_short_n.replace( '%d', remainingChars ); + } + return l10n.input_too_short_1; + }, + loadingMore: function () { + return l10n.load_more; + }, + maximumSelected: function( args ) { + var maximum = args.maximum; + if( maximum > 1 ) { + return l10n.selection_too_long_n.replace( '%d', maximum ); + } + return l10n.selection_too_long_1; + }, + noResults: function () { + return l10n.matches_0; + }, + searching: function () { + return l10n.searching; + } + }; + + // append + jQuery.fn.select2.amd.define('select2/i18n/' + locale, [], function(){ + return select2L10n; + }); + }, + + addTranslations3: function(){ + + // vars + var l10n = acf.get('select2L10n'); + var locale = acf.get('locale'); + + // modify local to match html[lang] attribute (used by Select2) + locale = locale.replace('_', '-'); + + // select2L10n + var select2L10n = { + formatMatches: function( matches ) { + if( matches > 1 ) { + return l10n.matches_n.replace( '%d', matches ); + } + return l10n.matches_1; + }, + formatNoMatches: function() { + return l10n.matches_0; + }, + formatAjaxError: function() { + return l10n.load_fail; + }, + formatInputTooShort: function( input, min ) { + var remainingChars = min - input.length; + if( remainingChars > 1 ) { + return l10n.input_too_short_n.replace( '%d', remainingChars ); + } + return l10n.input_too_short_1; + }, + formatInputTooLong: function( input, max ) { + var overChars = input.length - max; + if( overChars > 1 ) { + return l10n.input_too_long_n.replace( '%d', overChars ); + } + return l10n.input_too_long_1; + }, + formatSelectionTooBig: function( maximum ) { + if( maximum > 1 ) { + return l10n.selection_too_long_n.replace( '%d', maximum ); + } + return l10n.selection_too_long_1; + }, + formatLoadMore: function() { + return l10n.load_more; + }, + formatSearching: function() { + return l10n.searching; + } + }; + + // ensure locales exists + $.fn.select2.locales = $.fn.select2.locales || {}; + + // append + $.fn.select2.locales[ locale ] = select2L10n; + $.extend($.fn.select2.defaults, select2L10n); + } + + }); + +})(jQuery); + +(function($, undefined){ + + acf.tinymce = { + + /* + * defaults + * + * This function will return default mce and qt settings + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + defaults: function(){ + + // bail early if no tinyMCEPreInit + if( typeof tinyMCEPreInit === 'undefined' ) return false; + + // vars + var defaults = { + tinymce: tinyMCEPreInit.mceInit.acf_content, + quicktags: tinyMCEPreInit.qtInit.acf_content + }; + + // return + return defaults; + }, + + + /* + * initialize + * + * This function will initialize the tinymce and quicktags instances + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + initialize: function( id, args ){ + + // defaults + args = acf.parseArgs(args, { + tinymce: true, + quicktags: true, + toolbar: 'full', + mode: 'visual', // visual,text + field: false + }); + + // tinymce + if( args.tinymce ) { + this.initializeTinymce( id, args ); + } + + // quicktags + if( args.quicktags ) { + this.initializeQuicktags( id, args ); + } + }, + + + /* + * initializeTinymce + * + * This function will initialize the tinymce instance + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + initializeTinymce: function( id, args ){ + + // vars + var $textarea = $('#'+id); + var defaults = this.defaults(); + var toolbars = acf.get('toolbars'); + var field = args.field || false; + var $field = field.$el || false; + + // bail early + if( typeof tinymce === 'undefined' ) return false; + if( !defaults ) return false; + + // check if exists + if( tinymce.get(id) ) { + return this.enable( id ); + } + + // settings + var init = $.extend( {}, defaults.tinymce, args.tinymce ); + init.id = id; + init.selector = '#' + id; + + // toolbar + var toolbar = args.toolbar; + if( toolbar && toolbars && toolbars[toolbar] ) { + + for( var i = 1; i <= 4; i++ ) { + init[ 'toolbar' + i ] = toolbars[toolbar][i] || ''; + } + } + + // event + init.setup = function( ed ){ + + ed.on('change', function(e) { + ed.save(); // save to textarea + $textarea.trigger('change'); + }); + + // Fix bug where Gutenberg does not hear "mouseup" event and tries to select multiple blocks. + ed.on('mouseup', function(e) { + var event = new MouseEvent('mouseup'); + window.dispatchEvent(event); + }); + + // Temporarily comment out. May not be necessary due to wysiwyg field actions. + //ed.on('unload', function(e) { + // acf.tinymce.remove( id ); + //}); + }; + + // disable wp_autoresize_on (no solution yet for fixed toolbar) + init.wp_autoresize_on = false; + + // Enable wpautop allowing value to save without

            tags. + // Only if the "TinyMCE Advanced" plugin hasn't already set this functionality. + if( !init.tadv_noautop ) { + init.wpautop = true; + } + + // hook for 3rd party customization + init = acf.applyFilters('wysiwyg_tinymce_settings', init, id, field); + + // z-index fix (caused too many conflicts) + //if( acf.isset(tinymce,'ui','FloatPanel') ) { + // tinymce.ui.FloatPanel.zIndex = 900000; + //} + + // store settings + tinyMCEPreInit.mceInit[ id ] = init; + + // visual tab is active + if( args.mode == 'visual' ) { + + // init + var result = tinymce.init( init ); + + // get editor + var ed = tinymce.get( id ); + + // validate + if( !ed ) { + return false; + } + + // add reference + ed.acf = args.field; + + // action + acf.doAction('wysiwyg_tinymce_init', ed, ed.id, init, field); + } + }, + + /* + * initializeQuicktags + * + * This function will initialize the quicktags instance + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + initializeQuicktags: function( id, args ){ + + // vars + var defaults = this.defaults(); + + // bail early + if( typeof quicktags === 'undefined' ) return false; + if( !defaults ) return false; + + // settings + var init = $.extend( {}, defaults.quicktags, args.quicktags ); + init.id = id; + + // filter + var field = args.field || false; + var $field = field.$el || false; + init = acf.applyFilters('wysiwyg_quicktags_settings', init, init.id, field); + + // store settings + tinyMCEPreInit.qtInit[ id ] = init; + + // init + var ed = quicktags( init ); + + // validate + if( !ed ) { + return false; + } + + // generate HTML + this.buildQuicktags( ed ); + + // action for 3rd party customization + acf.doAction('wysiwyg_quicktags_init', ed, ed.id, init, field); + }, + + + /* + * buildQuicktags + * + * This function will build the quicktags HTML + * + * @type function + * @date 18/8/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + buildQuicktags: function( ed ){ + + var canvas, name, settings, theButtons, html, ed, id, i, use, instanceId, + defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,'; + + canvas = ed.canvas; + name = ed.name; + settings = ed.settings; + html = ''; + theButtons = {}; + use = ''; + instanceId = ed.id; + + // set buttons + if ( settings.buttons ) { + use = ','+settings.buttons+','; + } + + for ( i in edButtons ) { + if ( ! edButtons[i] ) { + continue; + } + + id = edButtons[i].id; + if ( use && defaults.indexOf( ',' + id + ',' ) !== -1 && use.indexOf( ',' + id + ',' ) === -1 ) { + continue; + } + + if ( ! edButtons[i].instance || edButtons[i].instance === instanceId ) { + theButtons[id] = edButtons[i]; + + if ( edButtons[i].html ) { + html += edButtons[i].html( name + '_' ); + } + } + } + + if ( use && use.indexOf(',dfw,') !== -1 ) { + theButtons.dfw = new QTags.DFWButton(); + html += theButtons.dfw.html( name + '_' ); + } + + if ( 'rtl' === document.getElementsByTagName( 'html' )[0].dir ) { + theButtons.textdirection = new QTags.TextDirectionButton(); + html += theButtons.textdirection.html( name + '_' ); + } + + ed.toolbar.innerHTML = html; + ed.theButtons = theButtons; + + if ( typeof jQuery !== 'undefined' ) { + jQuery( document ).triggerHandler( 'quicktags-init', [ ed ] ); + } + + }, + + disable: function( id ){ + this.destroyTinymce( id ); + }, + + remove: function( id ){ + this.destroyTinymce( id ); + }, + + destroy: function( id ){ + this.destroyTinymce( id ); + }, + + destroyTinymce: function( id ){ + + // bail early + if( typeof tinymce === 'undefined' ) return false; + + // get editor + var ed = tinymce.get( id ); + + // bail early if no editor + if( !ed ) return false; + + // save + ed.save(); + + // destroy editor + ed.destroy(); + + // return + return true; + }, + + enable: function( id ){ + this.enableTinymce( id ); + }, + + enableTinymce: function( id ){ + + // bail early + if( typeof switchEditors === 'undefined' ) return false; + + // bail ealry if not initialized + if( typeof tinyMCEPreInit.mceInit[ id ] === 'undefined' ) return false; + + // toggle + switchEditors.go( id, 'tmce'); + + // return + return true; + } + }; + + var editorManager = new acf.Model({ + + // hook in before fieldsEventManager, conditions, etc + priority: 5, + + actions: { + 'prepare': 'onPrepare', + 'ready': 'onReady', + }, + onPrepare: function(){ + + // find hidden editor which may exist within a field + var $div = $('#acf-hidden-wp-editor'); + + // move to footer + if( $div.exists() ) { + $div.appendTo('body'); + } + }, + onReady: function(){ + + // Restore wp.editor functions used by tinymce removed in WP5. + if( acf.isset(window,'wp','oldEditor') ) { + wp.editor.autop = wp.oldEditor.autop; + wp.editor.removep = wp.oldEditor.removep; + } + + // bail early if no tinymce + if( !acf.isset(window,'tinymce','on') ) return; + + // restore default activeEditor + tinymce.on('AddEditor', function( data ){ + + // vars + var editor = data.editor; + + // bail early if not 'acf' + if( editor.id.substr(0, 3) !== 'acf' ) return; + + // override if 'content' exists + editor = tinymce.editors.content || editor; + + // update vars + tinymce.activeEditor = editor; + wpActiveEditor = editor.id; + }); + } + }); + +})(jQuery); + +(function($, undefined){ + + /** + * Validator + * + * The model for validating forms + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + var Validator = acf.Model.extend({ + + /** @var string The model identifier. */ + id: 'Validator', + + /** @var object The model data. */ + data: { + + /** @var array The form errors. */ + errors: [], + + /** @var object The form notice. */ + notice: null, + + /** @var string The form status. loading, invalid, valid */ + status: '' + }, + + /** @var object The model events. */ + events: { + 'changed:status': 'onChangeStatus' + }, + + /** + * addErrors + * + * Adds errors to the form. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param array errors An array of errors. + * @return void + */ + addErrors: function( errors ){ + errors.map( this.addError, this ); + }, + + /** + * addError + * + * Adds and error to the form. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object error An error object containing input and message. + * @return void + */ + addError: function( error ){ + this.data.errors.push( error ); + }, + + /** + * hasErrors + * + * Returns true if the form has errors. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return bool + */ + hasErrors: function(){ + return this.data.errors.length; + }, + + /** + * clearErrors + * + * Removes any errors. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + clearErrors: function(){ + return this.data.errors = []; + }, + + /** + * getErrors + * + * Returns the forms errors. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return array + */ + getErrors: function(){ + return this.data.errors; + }, + + /** + * getFieldErrors + * + * Returns the forms field errors. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return array + */ + getFieldErrors: function(){ + + // vars + var errors = []; + var inputs = []; + + // loop + this.getErrors().map(function(error){ + + // bail early if global + if( !error.input ) return; + + // update if exists + var i = inputs.indexOf(error.input); + if( i > -1 ) { + errors[ i ] = error; + + // update + } else { + errors.push( error ); + inputs.push( error.input ); + } + }); + + // return + return errors; + }, + + /** + * getGlobalErrors + * + * Returns the forms global errors (errors without a specific input). + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return array + */ + getGlobalErrors: function(){ + + // return array of errors that contain no input + return this.getErrors().filter(function(error){ + return !error.input; + }); + }, + + /** + * showErrors + * + * Displays all errors for this form. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + showErrors: function(){ + + // bail early if no errors + if( !this.hasErrors() ) { + return; + } + + // vars + var fieldErrors = this.getFieldErrors(); + var globalErrors = this.getGlobalErrors(); + + // vars + var errorCount = 0; + var $scrollTo = false; + + // loop + fieldErrors.map(function( error ){ + + // get input + var $input = this.$('[name="' + error.input + '"]').first(); + + // if $_POST value was an array, this $input may not exist + if( !$input.length ) { + $input = this.$('[name^="' + error.input + '"]').first(); + } + + // bail early if input doesn't exist + if( !$input.length ) { + return; + } + + // increase + errorCount++; + + // get field + var field = acf.getClosestField( $input ); + + // show error + field.showError( error.message ); + + // set $scrollTo + if( !$scrollTo ) { + $scrollTo = field.$el; + } + }, this); + + // errorMessage + var errorMessage = acf.__('Validation failed'); + globalErrors.map(function( error ){ + errorMessage += '. ' + error.message; + }); + if( errorCount == 1 ) { + errorMessage += '. ' + acf.__('1 field requires attention'); + } else if( errorCount > 1 ) { + errorMessage += '. ' + acf.__('%d fields require attention').replace('%d', errorCount); + } + + // notice + if( this.has('notice') ) { + this.get('notice').update({ + type: 'error', + text: errorMessage + }); + } else { + var notice = acf.newNotice({ + type: 'error', + text: errorMessage, + target: this.$el + }); + this.set('notice', notice); + } + + // if no $scrollTo, set to message + if( !$scrollTo ) { + $scrollTo = this.get('notice').$el; + } + + // timeout + setTimeout(function(){ + $("html, body").animate({ scrollTop: $scrollTo.offset().top - ( $(window).height() / 2 ) }, 500); + }, 10); + }, + + /** + * onChangeStatus + * + * Update the form class when changing the 'status' data + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The form element. + * @param string value The new status. + * @param string prevValue The old status. + * @return void + */ + onChangeStatus: function( e, $el, value, prevValue ){ + this.$el.removeClass('is-'+prevValue).addClass('is-'+value); + }, + + /** + * validate + * + * Vaildates the form via AJAX. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object args A list of settings to customize the validation process. + * @return bool True if the form is valid. + */ + validate: function( args ){ + + // default args + args = acf.parseArgs(args, { + + // trigger event + event: false, + + // reset the form after submit + reset: false, + + // loading callback + loading: function(){}, + + // complete callback + complete: function(){}, + + // failure callback + failure: function(){}, + + // success callback + success: function( $form ){ + $form.submit(); + } + }); + + // return true if is valid - allows form submit + if( this.get('status') == 'valid' ) { + return true; + } + + // return false if is currently validating - prevents form submit + if( this.get('status') == 'validating' ) { + return false; + } + + // return true if no ACF fields exist (no need to validate) + if( !this.$('.acf-field').length ) { + return true; + } + + // if event is provided, create a new success callback. + if( args.event ) { + var event = $.Event(null, args.event); + args.success = function(){ + acf.enableSubmit( $(event.target) ).trigger( event ); + } + } + + // action for 3rd party + acf.doAction('validation_begin', this.$el); + + // lock form + acf.lockForm( this.$el ); + + // loading callback + args.loading( this.$el, this ); + + // update status + this.set('status', 'validating'); + + // success callback + var onSuccess = function( json ){ + + // validate + if( !acf.isAjaxSuccess(json) ) { + return; + } + + // filter + var data = acf.applyFilters('validation_complete', json.data, this.$el, this); + + // add errors + if( !data.valid ) { + this.addErrors( data.errors ); + } + }; + + // complete + var onComplete = function(){ + + // unlock form + acf.unlockForm( this.$el ); + + // failure + if( this.hasErrors() ) { + + // update status + this.set('status', 'invalid'); + + // action + acf.doAction('validation_failure', this.$el, this); + + // display errors + this.showErrors(); + + // failure callback + args.failure( this.$el, this ); + + // success + } else { + + // update status + this.set('status', 'valid'); + + // remove previous error message + if( this.has('notice') ) { + this.get('notice').update({ + type: 'success', + text: acf.__('Validation successful'), + timeout: 1000 + }); + } + + // action + acf.doAction('validation_success', this.$el, this); + acf.doAction('submit', this.$el); + + // success callback (submit form) + args.success( this.$el, this ); + + // lock form + acf.lockForm( this.$el ); + + // reset + if( args.reset ) { + this.reset(); + } + } + + // complete callback + args.complete( this.$el, this ); + + // clear errors + this.clearErrors(); + }; + + // serialize form data + var data = acf.serialize( this.$el ); + data.action = 'acf/validate_save_post'; + + // ajax + $.ajax({ + url: acf.get('ajaxurl'), + data: acf.prepareForAjax(data), + type: 'post', + dataType: 'json', + context: this, + success: onSuccess, + complete: onComplete + }); + + // return false to fail validation and allow AJAX + return false + }, + + /** + * setup + * + * Called during the constructor function to setup this instance + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return void + */ + setup: function( $form ){ + + // set $el + this.$el = $form; + }, + + /** + * reset + * + * Rests the validation to be used again. + * + * @date 6/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + reset: function(){ + + // reset data + this.set('errors', []); + this.set('notice', null); + this.set('status', ''); + + // unlock form + acf.unlockForm( this.$el ); + } + }); + + /** + * getValidator + * + * Returns the instance for a given form element. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $el The form element. + * @return object + */ + var getValidator = function( $el ){ + + // instantiate + var validator = $el.data('acf'); + if( !validator ) { + validator = new Validator( $el ); + } + + // return + return validator; + }; + + /** + * acf.validateForm + * + * A helper function for the Validator.validate() function. + * Returns true if form is valid, or fetches a validation request and returns false. + * + * @date 4/4/18 + * @since 5.6.9 + * + * @param object args A list of settings to customize the validation process. + * @return bool + */ + + acf.validateForm = function( args ){ + return getValidator( args.form ).validate( args ); + }; + + /** + * acf.enableSubmit + * + * Enables a submit button and returns the element. + * + * @date 30/8/18 + * @since 5.7.4 + * + * @param jQuery $submit The submit button. + * @return jQuery + */ + acf.enableSubmit = function( $submit ){ + return $submit.removeClass('disabled'); + }; + + /** + * acf.disableSubmit + * + * Disables a submit button and returns the element. + * + * @date 30/8/18 + * @since 5.7.4 + * + * @param jQuery $submit The submit button. + * @return jQuery + */ + acf.disableSubmit = function( $submit ){ + return $submit.addClass('disabled'); + }; + + /** + * acf.showSpinner + * + * Shows the spinner element. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $spinner The spinner element. + * @return jQuery + */ + acf.showSpinner = function( $spinner ){ + $spinner.addClass('is-active'); // add class (WP > 4.2) + $spinner.css('display', 'inline-block'); // css (WP < 4.2) + return $spinner; + }; + + /** + * acf.hideSpinner + * + * Hides the spinner element. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $spinner The spinner element. + * @return jQuery + */ + acf.hideSpinner = function( $spinner ){ + $spinner.removeClass('is-active'); // add class (WP > 4.2) + $spinner.css('display', 'none'); // css (WP < 4.2) + return $spinner; + }; + + /** + * acf.lockForm + * + * Locks a form by disabeling its primary inputs and showing a spinner. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return jQuery + */ + acf.lockForm = function( $form ){ + + // vars + var $wrap = findSubmitWrap( $form ); + var $submit = $wrap.find('.button, [type="submit"]'); + var $spinner = $wrap.find('.spinner, .acf-spinner'); + + // hide all spinners (hides the preview spinner) + acf.hideSpinner( $spinner ); + + // lock + acf.disableSubmit( $submit ); + acf.showSpinner( $spinner.last() ); + return $form; + }; + + /** + * acf.unlockForm + * + * Unlocks a form by enabeling its primary inputs and hiding all spinners. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return jQuery + */ + acf.unlockForm = function( $form ){ + + // vars + var $wrap = findSubmitWrap( $form ); + var $submit = $wrap.find('.button, [type="submit"]'); + var $spinner = $wrap.find('.spinner, .acf-spinner'); + + // unlock + acf.enableSubmit( $submit ); + acf.hideSpinner( $spinner ); + return $form; + }; + + /** + * findSubmitWrap + * + * An internal function to find the 'primary' form submit wrapping element. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return jQuery + */ + var findSubmitWrap = function( $form ){ + + // default post submit div + var $wrap = $form.find('#submitdiv'); + if( $wrap.length ) { + return $wrap; + } + + // 3rd party publish box + var $wrap = $form.find('#submitpost'); + if( $wrap.length ) { + return $wrap; + } + + // term, user + var $wrap = $form.find('p.submit').last(); + if( $wrap.length ) { + return $wrap; + } + + // front end form + var $wrap = $form.find('.acf-form-submit'); + if( $wrap.length ) { + return $wrap; + } + + // default + return $form; + }; + + /** + * acf.validation + * + * Global validation logic + * + * @date 4/4/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + acf.validation = new acf.Model({ + + /** @var string The model identifier. */ + id: 'validation', + + /** @var bool The active state. Set to false before 'prepare' to prevent validation. */ + active: true, + + /** @var string The model initialize time. */ + wait: 'prepare', + + /** @var object The model actions. */ + actions: { + 'ready': 'addInputEvents', + 'append': 'addInputEvents' + }, + + /** @var object The model events. */ + events: { + 'click input[type="submit"]': 'onClickSubmit', + 'click button[type="submit"]': 'onClickSubmit', + //'click #editor .editor-post-publish-button': 'onClickSubmitGutenberg', + 'click #save-post': 'onClickSave', + 'submit form#post': 'onSubmitPost', + 'submit form': 'onSubmit', + }, + + /** + * initialize + * + * Called when initializing the model. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + initialize: function(){ + + // check 'validation' setting + if( !acf.get('validation') ) { + this.active = false; + this.actions = {}; + this.events = {}; + } + }, + + /** + * enable + * + * Enables validation. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + enable: function(){ + this.active = true; + }, + + /** + * disable + * + * Disables validation. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param void + * @return void + */ + disable: function(){ + this.active = false; + }, + + /** + * reset + * + * Rests the form validation to be used again + * + * @date 6/9/18 + * @since 5.7.5 + * + * @param jQuery $form The form element. + * @return void + */ + reset: function( $form ){ + getValidator( $form ).reset(); + }, + + /** + * addInputEvents + * + * Adds 'invalid' event listeners to HTML inputs. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param jQuery $el The element being added / readied. + * @return void + */ + addInputEvents: function( $el ){ + + // vars + var $inputs = $('.acf-field [name]', $el); + + // check + if( $inputs.length ) { + this.on( $inputs, 'invalid', 'onInvalid' ); + } + }, + + /** + * onInvalid + * + * Callback for the 'invalid' event. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onInvalid: function( e, $el ){ + + // prevent default + // - prevents browser error message + // - also fixes chrome bug where 'hidden-by-tab' field throws focus error + e.preventDefault(); + + // vars + var $form = $el.closest('form'); + + // check form exists + if( $form.length ) { + + // add error to validator + getValidator( $form ).addError({ + input: $el.attr('name'), + message: e.target.validationMessage + }); + + // trigger submit on $form + // - allows for "save", "preview" and "publish" to work + $form.submit(); + } + }, + + /** + * onClickSubmit + * + * Callback when clicking submit. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onClickSubmit: function( e, $el ){ + + // store the "click event" for later use in this.onSubmit() + this.set('originalEvent', e); + }, + + /** + * onClickSave + * + * Set ignore to true when saving a draft. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onClickSave: function( e, $el ) { + this.set('ignore', true); + }, + + /** + * onClickSubmitGutenberg + * + * Custom validation event for the gutenberg editor. + * + * @date 29/10/18 + * @since 5.8.0 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onClickSubmitGutenberg: function( e, $el ){ + + // validate + var valid = acf.validateForm({ + form: $('#editor'), + event: e, + reset: true, + failure: function( $form, validator ){ + var $notice = validator.get('notice').$el; + $notice.appendTo('.components-notice-list'); + $notice.find('.acf-notice-dismiss').removeClass('small'); + } + }); + + // if not valid, stop event and allow validation to continue + if( !valid ) { + e.preventDefault(); + e.stopImmediatePropagation(); + } + }, + + /** + * onSubmitPost + * + * Callback when the 'post' form is submit. + * + * @date 5/3/19 + * @since 5.7.13 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onSubmitPost: function( e, $el ) { + + // Check if is preview. + if( $('input#wp-preview').val() === 'dopreview' ) { + + // Ignore validation. + this.set('ignore', true); + + // Unlock form to fix conflict with core "submit.edit-post" event causing all submit buttons to be disabled. + acf.unlockForm( $el ) + } + }, + + /** + * onSubmit + * + * Callback when the form is submit. + * + * @date 4/9/18 + * @since 5.7.5 + * + * @param object e The event object. + * @param jQuery $el The input element. + * @return void + */ + onSubmit: function( e, $el ){ + + // Allow form to submit if... + if( + // Validation has been disabled. + !this.active + + // Or this event is to be ignored. + || this.get('ignore') + + // Or this event has already been prevented. + || e.isDefaultPrevented() + ) { + // Return early and call reset function. + return this.allowSubmit(); + } + + // Validate form. + var valid = acf.validateForm({ + form: $el, + event: this.get('originalEvent') + }); + + // If not valid, stop event to prevent form submit. + if( !valid ) { + e.preventDefault(); + } + }, + + /** + * allowSubmit + * + * Resets data during onSubmit when the form is allowed to submit. + * + * @date 5/3/19 + * @since 5.7.13 + * + * @param void + * @return void + */ + allowSubmit: function(){ + + // Reset "ignore" state. + this.set('ignore', false); + + // Reset "originalEvent" object. + this.set('originalEvent', false); + + // Return true + return true; + } + }); + +})(jQuery); + +(function($, undefined){ + + /** + * refreshHelper + * + * description + * + * @date 1/7/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var refreshHelper = new acf.Model({ + priority: 90, + timeout: 0, + actions: { + 'new_field': 'refresh', + 'show_field': 'refresh', + 'hide_field': 'refresh', + 'remove_field': 'refresh' + }, + refresh: function(){ + clearTimeout( this.timeout ); + this.timeout = setTimeout(function(){ + acf.doAction('refresh'); + }, 0); + } + }); + + /** + * mountHelper + * + * Adds compatiblity for the 'unmount' and 'remount' actions added in 5.8.0 + * + * @date 7/3/19 + * @since 5.7.14 + * + * @param void + * @return void + */ + var mountHelper = new acf.Model({ + priority: 1, + actions: { + 'sortstart': 'onSortstart', + 'sortstop': 'onSortstop' + }, + onSortstart: function( $item ){ + acf.doAction('unmount', $item); + }, + onSortstop: function( $item ){ + acf.doAction('remount', $item); + } + }); + + /** + * sortableHelper + * + * Adds compatibility for sorting a

            element + * + * @date 6/3/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var sortableHelper = new acf.Model({ + actions: { + 'sortstart': 'onSortstart' + }, + onSortstart: function( $item, $placeholder ){ + + // if $item is a tr, apply some css to the elements + if( $item.is('tr') ) { + + // replace $placeholder children with a single td + // fixes "width calculation issues" due to conditional logic hiding some children + $placeholder.html(''); + + // add helper class to remove absolute positioning + $item.addClass('acf-sortable-tr-helper'); + + // set fixed widths for children + $item.children().each(function(){ + $(this).width( $(this).width() ); + }); + + // mimic height + $placeholder.height( $item.height() + 'px' ); + + // remove class + $item.removeClass('acf-sortable-tr-helper'); + } + } + }); + + /** + * duplicateHelper + * + * Fixes browser bugs when duplicating an element + * + * @date 6/3/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var duplicateHelper = new acf.Model({ + actions: { + 'after_duplicate': 'onAfterDuplicate' + }, + onAfterDuplicate: function( $el, $el2 ){ + + // get original values + var vals = []; + $el.find('select').each(function(i){ + vals.push( $(this).val() ); + }); + + // set duplicate values + $el2.find('select').each(function(i){ + $(this).val( vals[i] ); + }); + } + }); + + /** + * tableHelper + * + * description + * + * @date 6/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var tableHelper = new acf.Model({ + + id: 'tableHelper', + + priority: 20, + + actions: { + 'refresh': 'renderTables' + }, + + renderTables: function( $el ){ + + // loop + var self = this; + $('.acf-table:visible').each(function(){ + self.renderTable( $(this) ); + }); + }, + + renderTable: function( $table ){ + + // vars + var $ths = $table.find('> thead > tr:visible > th[data-key]'); + var $tds = $table.find('> tbody > tr:visible > td[data-key]'); + + // bail early if no thead + if( !$ths.length || !$tds.length ) { + return false; + } + + + // visiblity + $ths.each(function( i ){ + + // vars + var $th = $(this); + var key = $th.data('key'); + var $cells = $tds.filter('[data-key="' + key + '"]'); + var $hidden = $cells.filter('.acf-hidden'); + + // always remove empty and allow cells to be hidden + $cells.removeClass('acf-empty'); + + // hide $th if all cells are hidden + if( $cells.length === $hidden.length ) { + acf.hide( $th ); + + // force all hidden cells to appear empty + } else { + acf.show( $th ); + $hidden.addClass('acf-empty'); + } + }); + + + // clear width + $ths.css('width', 'auto'); + + // get visible + $ths = $ths.not('.acf-hidden'); + + // vars + var availableWidth = 100; + var colspan = $ths.length; + + // set custom widths first + var $fixedWidths = $ths.filter('[data-width]'); + $fixedWidths.each(function(){ + var width = $(this).data('width'); + $(this).css('width', width + '%'); + availableWidth -= width; + }); + + // set auto widths + var $auoWidths = $ths.not('[data-width]'); + if( $auoWidths.length ) { + var width = availableWidth / $auoWidths.length; + $auoWidths.css('width', width + '%'); + availableWidth = 0; + } + + // avoid stretching issue + if( availableWidth > 0 ) { + $ths.last().css('width', 'auto'); + } + + + // update colspan on collapsed + $tds.filter('.-collapsed-target').each(function(){ + + // vars + var $td = $(this); + + // check if collapsed + if( $td.parent().hasClass('-collapsed') ) { + $td.attr('colspan', $ths.length); + } else { + $td.removeAttr('colspan'); + } + }); + } + }); + + + /** + * fieldsHelper + * + * description + * + * @date 6/3/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var fieldsHelper = new acf.Model({ + + id: 'fieldsHelper', + + priority: 30, + + actions: { + 'refresh': 'renderGroups' + }, + + renderGroups: function(){ + + // loop + var self = this; + $('.acf-fields:visible').each(function(){ + self.renderGroup( $(this) ); + }); + }, + + renderGroup: function( $el ){ + + // vars + var top = 0; + var height = 0; + var $row = $(); + + // get fields + var $fields = $el.children('.acf-field[data-width]:visible'); + + // bail early if no fields + if( !$fields.length ) { + return false; + } + + // bail ealry if is .-left + if( $el.hasClass('-left') ) { + $fields.removeAttr('data-width'); + $fields.css('width', 'auto'); + return false; + } + + // reset fields + $fields.removeClass('-r0 -c0').css({'min-height': 0}); + + // loop + $fields.each(function( i ){ + + // vars + var $field = $(this); + var position = $field.position(); + var thisTop = Math.ceil( position.top ); + var thisLeft = Math.ceil( position.left ); + + // detect change in row + if( $row.length && thisTop > top ) { + + // set previous heights + $row.css({'min-height': height+'px'}); + + // update position due to change in row above + position = $field.position(); + thisTop = Math.ceil( position.top ); + thisLeft = Math.ceil( position.left ); + + // reset vars + top = 0; + height = 0; + $row = $(); + } + + // rtl + if( acf.get('rtl') ) { + thisLeft = Math.ceil( $field.parent().width() - (position.left + $field.outerWidth()) ); + } + + // add classes + if( thisTop == 0 ) { + $field.addClass('-r0'); + } else if( thisLeft == 0 ) { + $field.addClass('-c0'); + } + + // get height after class change + // - add 1 for subpixel rendering + var thisHeight = Math.ceil( $field.outerHeight() ) + 1; + + // set height + height = Math.max( height, thisHeight ); + + // set y + top = Math.max( top, thisTop ); + + // append + $row = $row.add( $field ); + }); + + // clean up + if( $row.length ) { + $row.css({'min-height': height+'px'}); + } + } + }); + +})(jQuery); + +(function($, undefined){ + + /** + * acf.newCompatibility + * + * Inserts a new __proto__ object compatibility layer + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param object instance The object to modify. + * @param object compatibilty Optional. The compatibilty layer. + * @return object compatibilty + */ + + acf.newCompatibility = function( instance, compatibilty ){ + + // defaults + compatibilty = compatibilty || {}; + + // inherit __proto_- + compatibilty.__proto__ = instance.__proto__; + + // inject + instance.__proto__ = compatibilty; + + // reference + instance.compatibility = compatibilty; + + // return + return compatibilty; + }; + + /** + * acf.getCompatibility + * + * Returns the compatibility layer for a given instance + * + * @date 13/3/18 + * @since 5.6.9 + * + * @param object instance The object to look in. + * @return object|null compatibility The compatibility object or null on failure. + */ + + acf.getCompatibility = function( instance ) { + return instance.compatibility || null; + }; + + /** + * acf (compatibility) + * + * Compatibility layer for the acf object + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var _acf = acf.newCompatibility(acf, { + + // storage + l10n: {}, + o: {}, + fields: {}, + + // changed function names + update: acf.set, + add_action: acf.addAction, + remove_action: acf.removeAction, + do_action: acf.doAction, + add_filter: acf.addFilter, + remove_filter: acf.removeFilter, + apply_filters: acf.applyFilters, + parse_args: acf.parseArgs, + disable_el: acf.disable, + disable_form: acf.disable, + enable_el: acf.enable, + enable_form: acf.enable, + update_user_setting: acf.updateUserSetting, + prepare_for_ajax: acf.prepareForAjax, + is_ajax_success: acf.isAjaxSuccess, + remove_el: acf.remove, + remove_tr: acf.remove, + str_replace: acf.strReplace, + render_select: acf.renderSelect, + get_uniqid: acf.uniqid, + serialize_form: acf.serialize, + esc_html: acf.strEscape, + str_sanitize: acf.strSanitize, + + }); + + _acf._e = function( k1, k2 ){ + + // defaults + k1 = k1 || ''; + k2 = k2 || ''; + + // compability + var compatKey = k2 ? k1 + '.' + k2 : k1; + var compats = { + 'image.select': 'Select Image', + 'image.edit': 'Edit Image', + 'image.update': 'Update Image' + }; + if( compats[compatKey] ) { + return acf.__(compats[compatKey]); + } + + // try k1 + var string = this.l10n[ k1 ] || ''; + + // try k2 + if( k2 ) { + string = string[ k2 ] || ''; + } + + // return + return string; + }; + + _acf.get_selector = function( s ) { + + // vars + var selector = '.acf-field'; + + // bail early if no search + if( !s ) { + return selector; + } + + // compatibility with object + if( $.isPlainObject(s) ) { + if( $.isEmptyObject(s) ) { + return selector; + } else { + for( var k in s ) { s = s[k]; break; } + } + } + + // append + selector += '-' + s; + + // replace underscores (split/join replaces all and is faster than regex!) + selector = acf.strReplace('_', '-', selector); + + // remove potential double up + selector = acf.strReplace('field-field-', 'field-', selector); + + // return + return selector; + }; + + _acf.get_fields = function( s, $el, all ){ + + // args + var args = { + is: s || '', + parent: $el || false, + suppressFilters: all || false, + }; + + // change 'field_123' to '.acf-field-123' + if( args.is ) { + args.is = this.get_selector( args.is ); + } + + // return + return acf.findFields(args); + }; + + _acf.get_field = function( s, $el ){ + + // get fields + var $fields = this.get_fields.apply(this, arguments); + + // return + if( $fields.length ) { + return $fields.first(); + } else { + return false; + } + }; + + _acf.get_closest_field = function( $el, s ){ + return $el.closest( this.get_selector(s) ); + }; + + _acf.get_field_wrap = function( $el ){ + return $el.closest( this.get_selector() ); + }; + + _acf.get_field_key = function( $field ){ + return $field.data('key'); + }; + + _acf.get_field_type = function( $field ){ + return $field.data('type'); + }; + + _acf.get_data = function( $el, defaults ){ + return acf.parseArgs( $el.data(), defaults ); + }; + + _acf.maybe_get = function( obj, key, value ){ + + // default + if( value === undefined ) { + value = null; + } + + // get keys + keys = String(key).split('.'); + + // acf.isget + for( var i = 0; i < keys.length; i++ ) { + if( !obj.hasOwnProperty(keys[i]) ) { + return value; + } + obj = obj[ keys[i] ]; + } + return obj; + }; + + + /** + * hooks + * + * Modify add_action and add_filter functions to add compatibility with changed $field parameter + * Using the acf.add_action() or acf.add_filter() functions will interpret new field parameters as jQuery $field + * + * @date 12/5/18 + * @since 5.6.9 + * + * @param void + * @return void + */ + + var compatibleArgument = function( arg ){ + return ( arg instanceof acf.Field ) ? arg.$el : arg; + }; + + var compatibleArguments = function( args ){ + return acf.arrayArgs( args ).map( compatibleArgument ); + } + + var compatibleCallback = function( origCallback ){ + return function(){ + + // convert to compatible arguments + if( arguments.length ) { + var args = compatibleArguments(arguments); + + // add default argument for 'ready', 'append' and 'load' events + } else { + var args = [ $(document) ]; + } + + // return + return origCallback.apply(this, args); + } + } + + _acf.add_action = function( action, callback, priority, context ){ + + // handle multiple actions + var actions = action.split(' '); + var length = actions.length; + if( length > 1 ) { + for( var i = 0; i < length; i++) { + action = actions[i]; + _acf.add_action.apply(this, arguments); + } + return this; + } + + // single + var callback = compatibleCallback(callback); + return acf.addAction.apply(this, arguments); + }; + + _acf.add_filter = function( action, callback, priority, context ){ + var callback = compatibleCallback(callback); + return acf.addFilter.apply(this, arguments); + }; + + /* + * acf.model + * + * This model acts as a scafold for action.event driven modules + * + * @type object + * @date 8/09/2014 + * @since 5.0.0 + * + * @param (object) + * @return (object) + */ + + _acf.model = { + actions: {}, + filters: {}, + events: {}, + extend: function( args ){ + + // extend + var model = $.extend( {}, this, args ); + + // setup actions + $.each(model.actions, function( name, callback ){ + model._add_action( name, callback ); + }); + + // setup filters + $.each(model.filters, function( name, callback ){ + model._add_filter( name, callback ); + }); + + // setup events + $.each(model.events, function( name, callback ){ + model._add_event( name, callback ); + }); + + // return + return model; + }, + + _add_action: function( name, callback ) { + + // split + var model = this, + data = name.split(' '); + + // add missing priority + var name = data[0] || '', + priority = data[1] || 10; + + // add action + acf.add_action(name, model[ callback ], priority, model); + + }, + + _add_filter: function( name, callback ) { + + // split + var model = this, + data = name.split(' '); + + // add missing priority + var name = data[0] || '', + priority = data[1] || 10; + + // add action + acf.add_filter(name, model[ callback ], priority, model); + }, + + _add_event: function( name, callback ) { + + // vars + var model = this, + i = name.indexOf(' '), + event = (i > 0) ? name.substr(0,i) : name, + selector = (i > 0) ? name.substr(i+1) : ''; + + // event + var fn = function( e ){ + + // append $el to event object + e.$el = $(this); + + // append $field to event object (used in field group) + if( acf.field_group ) { + e.$field = e.$el.closest('.acf-field-object'); + } + + // event + if( typeof model.event === 'function' ) { + e = model.event( e ); + } + + // callback + model[ callback ].apply(model, arguments); + + }; + + // add event + if( selector ) { + $(document).on(event, selector, fn); + } else { + $(document).on(event, fn); + } + }, + + get: function( name, value ){ + + // defaults + value = value || null; + + // get + if( typeof this[ name ] !== 'undefined' ) { + value = this[ name ]; + } + + // return + return value; + }, + + set: function( name, value ){ + + // set + this[ name ] = value; + + // function for 3rd party + if( typeof this[ '_set_' + name ] === 'function' ) { + this[ '_set_' + name ].apply(this); + } + + // return for chaining + return this; + } + }; + + /* + * field + * + * This model sets up many of the field's interactions + * + * @type function + * @date 21/02/2014 + * @since 3.5.1 + * + * @param n/a + * @return n/a + */ + + _acf.field = acf.model.extend({ + type: '', + o: {}, + $field: null, + _add_action: function( name, callback ) { + + // vars + var model = this; + + // update name + name = name + '_field/type=' + model.type; + + // add action + acf.add_action(name, function( $field ){ + + // focus + model.set('$field', $field); + + // callback + model[ callback ].apply(model, arguments); + }); + }, + + _add_filter: function( name, callback ) { + + // vars + var model = this; + + // update name + name = name + '_field/type=' + model.type; + + // add action + acf.add_filter(name, function( $field ){ + + // focus + model.set('$field', $field); + + // callback + model[ callback ].apply(model, arguments); + }); + }, + + _add_event: function( name, callback ) { + + // vars + var model = this, + event = name.substr(0,name.indexOf(' ')), + selector = name.substr(name.indexOf(' ')+1), + context = acf.get_selector(model.type); + + // add event + $(document).on(event, context + ' ' + selector, function( e ){ + + // vars + var $el = $(this); + var $field = acf.get_closest_field( $el, model.type ); + + // bail early if no field + if( !$field.length ) return; + + // focus + if( !$field.is(model.$field) ) { + model.set('$field', $field); + } + + // append to event + e.$el = $el; + e.$field = $field; + + // callback + model[ callback ].apply(model, [e]); + }); + }, + + _set_$field: function(){ + + // callback + if( typeof this.focus === 'function' ) { + this.focus(); + } + }, + + // depreciated + doFocus: function( $field ){ + return this.set('$field', $field); + } + }); + + + /** + * validation + * + * description + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + var _validation = acf.newCompatibility(acf.validation, { + remove_error: function( $field ){ + acf.getField( $field ).removeError(); + }, + add_warning: function( $field, message ){ + acf.getField( $field ).showNotice({ + text: message, + type: 'warning', + timeout: 1000 + }); + }, + fetch: acf.validateForm, + enableSubmit: acf.enableSubmit, + disableSubmit: acf.disableSubmit, + showSpinner: acf.showSpinner, + hideSpinner: acf.hideSpinner, + unlockForm: acf.unlockForm, + lockForm: acf.lockForm + }); + + + /** + * tooltip + * + * description + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + _acf.tooltip = { + + tooltip: function( text, $el ){ + + var tooltip = acf.newTooltip({ + text: text, + target: $el + }); + + // return + return tooltip.$el; + }, + + temp: function( text, $el ){ + + var tooltip = acf.newTooltip({ + text: text, + target: $el, + timeout: 250 + }); + }, + + confirm: function( $el, callback, text, button_y, button_n ){ + + var tooltip = acf.newTooltip({ + confirm: true, + text: text, + target: $el, + confirm: function(){ + callback(true); + }, + cancel: function(){ + callback(false); + } + }); + }, + + confirm_remove: function( $el, callback ){ + + var tooltip = acf.newTooltip({ + confirmRemove: true, + target: $el, + confirm: function(){ + callback(true); + }, + cancel: function(){ + callback(false); + } + }); + }, + }; + + /** + * tooltip + * + * description + * + * @date 15/2/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + _acf.media = new acf.Model({ + activeFrame: false, + actions: { + 'new_media_popup': 'onNewMediaPopup' + }, + + frame: function(){ + return this.activeFrame; + }, + + onNewMediaPopup: function( popup ){ + this.activeFrame = popup.frame; + }, + + popup: function( props ){ + + // update props + if( props.mime_types ) { + props.allowedTypes = props.mime_types; + } + if( props.id ) { + props.attachment = props.id; + } + + // new + var popup = acf.newMediaPopup( props ); + + // append +/* + if( props.selected ) { + popup.selected = props.selected; + } +*/ + + // return + return popup.frame; + } + }); + + + /** + * Select2 + * + * description + * + * @date 11/6/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + _acf.select2 = { + init: function( $select, args, $field ){ + + // compatible args + if( args.allow_null ) { + args.allowNull = args.allow_null; + } + if( args.ajax_action ) { + args.ajaxAction = args.ajax_action; + } + if( $field ) { + args.field = acf.getField($field); + } + + // return + return acf.newSelect2( $select, args ); + }, + + destroy: function( $select ){ + return acf.getInstance( $select ).destroy(); + + }, + }; + + /** + * postbox + * + * description + * + * @date 11/6/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + _acf.postbox = { + render: function( args ){ + + // compatible args + if( args.edit_url ) { + args.editLink = args.edit_url; + } + if( args.edit_title ) { + args.editTitle = args.edit_title; + } + + // return + return acf.newPostbox( args ); + } + }; + + /** + * acf.screen + * + * description + * + * @date 11/6/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + acf.newCompatibility(acf.screen, { + update: function(){ + return this.set.apply(this, arguments); + }, + fetch: acf.screen.check + }); + _acf.ajax = acf.screen; + +})(jQuery); + +// @codekit-prepend "_acf.js"; +// @codekit-prepend "_acf-hooks.js"; +// @codekit-prepend "_acf-model.js"; +// @codekit-prepend "_acf-popup.js"; +// @codekit-prepend "_acf-unload.js"; +// @codekit-prepend "_acf-panel.js"; +// @codekit-prepend "_acf-notice.js"; +// @codekit-prepend "_acf-postbox.js"; +// @codekit-prepend "_acf-tooltip.js"; +// @codekit-prepend "_acf-field.js"; +// @codekit-prepend "_acf-fields.js"; +// @codekit-prepend "_acf-field-accordion.js"; +// @codekit-prepend "_acf-field-button-group.js"; +// @codekit-prepend "_acf-field-checkbox.js"; +// @codekit-prepend "_acf-field-color-picker.js"; +// @codekit-prepend "_acf-field-date-picker.js"; +// @codekit-prepend "_acf-field-date-time-picker.js"; +// @codekit-prepend "_acf-field-google-map.js"; +// @codekit-prepend "_acf-field-image.js"; +// @codekit-prepend "_acf-field-file.js"; +// @codekit-prepend "_acf-field-link.js"; +// @codekit-prepend "_acf-field-oembed.js"; +// @codekit-prepend "_acf-field-radio.js"; +// @codekit-prepend "_acf-field-range.js"; +// @codekit-prepend "_acf-field-relationship.js"; +// @codekit-prepend "_acf-field-select.js"; +// @codekit-prepend "_acf-field-tab.js"; +// @codekit-prepend "_acf-field-post-object.js"; +// @codekit-prepend "_acf-field-page-link.js"; +// @codekit-prepend "_acf-field-user.js"; +// @codekit-prepend "_acf-field-taxonomy.js"; +// @codekit-prepend "_acf-field-time-picker.js"; +// @codekit-prepend "_acf-field-true-false.js"; +// @codekit-prepend "_acf-field-url.js"; +// @codekit-prepend "_acf-field-wysiwyg.js"; +// @codekit-prepend "_acf-condition.js"; +// @codekit-prepend "_acf-conditions.js"; +// @codekit-prepend "_acf-condition-types.js"; +// @codekit-prepend "_acf-media.js"; +// @codekit-prepend "_acf-screen.js"; +// @codekit-prepend "_acf-select2.js"; +// @codekit-prepend "_acf-tinymce.js"; +// @codekit-prepend "_acf-validation.js"; +// @codekit-prepend "_acf-helpers.js"; +// @codekit-prepend "_acf-compatibility"; diff --git a/wp-content/plugins/advanced-custom-fields/assets/js/acf-input.min.js b/wp-content/plugins/advanced-custom-fields/assets/js/acf-input.min.js new file mode 100644 index 0000000..81b2fe2 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/assets/js/acf-input.min.js @@ -0,0 +1,4 @@ +!function(t,e){var i={};window.acf=i,i.data={},i.get=function(t){return this.data[t]||null},i.has=function(t){return null!==this.get(t)},i.set=function(t,e){return this.data[t]=e,this};var n=0;i.uniqueId=function(t){var e=++n+"";return t?t+e:e},i.uniqueArray=function(t){function e(t,e,i){return i.indexOf(t)===e}return t.filter(e)};var a="";i.uniqid=function(t,e){var i;void 0===t&&(t="");var n=function(t,e){return e<(t=parseInt(t,10).toString(16)).length?t.slice(t.length-e):e>t.length?Array(e-t.length+1).join("0")+t:t};return a||(a=Math.floor(123456789*Math.random())),a++,i=t,i+=n(parseInt((new Date).getTime()/1e3,10),8),i+=n(a,5),e&&(i+=(10*Math.random()).toFixed(8).toString()),i},i.strReplace=function(t,e,i){return i.split(t).join(e)},i.strCamelCase=function(t){return t=(t=t.replace(/[_-]/g," ")).replace(/(?:^\w|\b\w|\s+)/g,function(t,e){return 0==+t?"":0==e?t.toLowerCase():t.toUpperCase()})},i.strPascalCase=function(t){var e=i.strCamelCase(t);return e.charAt(0).toUpperCase()+e.slice(1)},i.strSlugify=function(t){return i.strReplace("_","-",t.toLowerCase())},i.strSanitize=function(t){var e={"À":"A","Ã":"A","Â":"A","Ã":"A","Ä":"A","Ã…":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","ÃŒ":"I","Ã":"I","ÃŽ":"I","Ã":"I","Ã":"D","Ñ":"N","Ã’":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ã":"Y","ß":"s","à":"a","á":"a","â":"a","ã":"a","ä":"a","Ã¥":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","ÿ":"y","Ä€":"A","Ä":"a","Ä‚":"A","ă":"a","Ä„":"A","Ä…":"a","Ć":"C","ć":"c","Ĉ":"C","ĉ":"c","ÄŠ":"C","Ä‹":"c","ÄŒ":"C","Ä":"c","ÄŽ":"D","Ä":"d","Ä":"D","Ä‘":"d","Ä’":"E","Ä“":"e","Ä”":"E","Ä•":"e","Ä–":"E","Ä—":"e","Ę":"E","Ä™":"e","Äš":"E","Ä›":"e","Äœ":"G","Ä":"g","Äž":"G","ÄŸ":"g","Ä ":"G","Ä¡":"g","Ä¢":"G","Ä£":"g","Ĥ":"H","Ä¥":"h","Ħ":"H","ħ":"h","Ĩ":"I","Ä©":"i","Ī":"I","Ä«":"i","Ĭ":"I","Ä­":"i","Ä®":"I","į":"i","İ":"I","ı":"i","IJ":"IJ","ij":"ij","Ä´":"J","ĵ":"j","Ķ":"K","Ä·":"k","Ĺ":"L","ĺ":"l","Ä»":"L","ļ":"l","Ľ":"L","ľ":"l","Ä¿":"L","Å€":"l","Å":"l","Å‚":"l","Ń":"N","Å„":"n","Å…":"N","ņ":"n","Ň":"N","ň":"n","ʼn":"n","ÅŒ":"O","Å":"o","ÅŽ":"O","Å":"o","Å":"O","Å‘":"o","Å’":"OE","Å“":"oe","Å”":"R","Å•":"r","Å–":"R","Å—":"r","Ř":"R","Å™":"r","Åš":"S","Å›":"s","Åœ":"S","Å":"s","Åž":"S","ÅŸ":"s","Å ":"S","Å¡":"s","Å¢":"T","Å£":"t","Ť":"T","Å¥":"t","Ŧ":"T","ŧ":"t","Ũ":"U","Å©":"u","Ū":"U","Å«":"u","Ŭ":"U","Å­":"u","Å®":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Å´":"W","ŵ":"w","Ŷ":"Y","Å·":"y","Ÿ":"Y","Ź":"Z","ź":"z","Å»":"Z","ż":"z","Ž":"Z","ž":"z","Å¿":"s","Æ’":"f","Æ ":"O","Æ¡":"o","Ư":"U","ư":"u","Ç":"A","ÇŽ":"a","Ç":"I","Ç":"i","Ç‘":"O","Ç’":"o","Ç“":"U","Ç”":"u","Ç•":"U","Ç–":"u","Ç—":"U","ǘ":"u","Ç™":"U","Çš":"u","Ç›":"U","Çœ":"u","Ǻ":"A","Ç»":"a","Ǽ":"AE","ǽ":"ae","Ǿ":"O","Ç¿":"o"," ":"_","'":"","?":"","/":"","\\":"",".":"",",":"","`":"",">":"","<":"",'"':"","[":"","]":"","|":"","{":"","}":"","(":"",")":""},i=/\W/g,n=function(t){return void 0!==e[t]?e[t]:t};return t=(t=t.replace(i,n)).toLowerCase()},i.strMatch=function(t,e){for(var i=0,n=Math.min(t.length,e.length),a=0;a").html(e).text()},i.strEscape=function(e){return t("
            ").text(e).html()},i.parseArgs=function(e,i){return"object"!=typeof e&&(e={}),"object"!=typeof i&&(i={}),t.extend({},i,e)},null==window.acfL10n&&(acfL10n={}),i.__=function(t){return acfL10n[t]||t},i._x=function(t,e){return acfL10n[t+"."+e]||acfL10n[t]||t},i._n=function(t,e,n){return 1==n?i.__(t):i.__(e)},i.isArray=function(t){return Array.isArray(t)},i.isObject=function(t){return"object"==typeof t};var r=function(t,e,n){var a=(e=e.replace("[]","[%%index%%]")).match(/([^\[\]])+/g);if(a)for(var r=a.length,o=t,s=0;s
            ');var s=e.parent();e.css({height:i,width:n,margin:a,position:"absolute"}),setTimeout(function(){s.css({opacity:0,height:t.endHeight})},50),setTimeout(function(){e.attr("style",o),s.remove(),t.complete()},301)},u=function(e){var i=e.target,n=i.height(),a=i.children().length,r=t('
            ');i.addClass("acf-remove-element"),setTimeout(function(){i.html(r)},251),setTimeout(function(){i.removeClass("acf-remove-element"),r.css({height:e.endHeight})},300),setTimeout(function(){i.remove(),e.complete()},451)};i.duplicate=function(t){t instanceof jQuery&&(t={target:t});var e=0;(t=i.parseArgs(t,{target:!1,search:"",replace:"",before:function(t){},after:function(t,e){},append:function(t,i){t.after(i),e=1}})).target=t.target||t.$el;var n=t.target;t.search=t.search||n.attr("data-id"),t.replace=t.replace||i.uniqid(),t.before(n),i.doAction("before_duplicate",n);var a=n.clone();return i.rename({target:a,search:t.search,replace:t.replace}),a.removeClass("acf-clone"),a.find(".ui-sortable").removeClass("ui-sortable"),t.after(n,a),i.doAction("after_duplicate",n,a),t.append(n,a),i.doAction("append",a),a},i.rename=function(t){t instanceof jQuery&&(t={target:t});var e=(t=i.parseArgs(t,{target:!1,destructive:!1,search:"",replace:""})).target,n=t.search||e.attr("data-id"),a=t.replace||i.uniqid("acf"),r=function(t,e){return e.replace(n,a)};if(t.destructive){var o=e.outerHTML();o=i.strReplace(n,a,o),e.replaceWith(o)}else e.attr("data-id",a),e.find('[id*="'+n+'"]').attr("id",r),e.find('[for*="'+n+'"]').attr("for",r),e.find('[name*="'+n+'"]').attr("name",r);return e},i.prepareForAjax=function(t){return t.nonce=i.get("nonce"),t.post_id=i.get("post_id"),i.has("language")&&(t.lang=i.get("language")),t=i.applyFilters("prepare_for_ajax",t)},i.startButtonLoading=function(t){t.prop("disabled",!0),t.after(' ')},i.stopButtonLoading=function(t){t.prop("disabled",!1),t.next(".acf-loading").remove()},i.showLoading=function(t){t.append('
            ')},i.hideLoading=function(t){t.children(".acf-loading-overlay").remove()},i.updateUserSetting=function(e,n){var a={action:"acf/ajax/user_setting",name:e,value:n};t.ajax({url:i.get("ajaxurl"),data:i.prepareForAjax(a),type:"post",dataType:"html"})},i.val=function(t,e,i){var n=t.val();return e!==n&&(t.val(e),t.is("select")&&null===t.val()?(t.val(n),!1):(!0!==i&&t.trigger("change"),!0))},i.show=function(t,e){return e&&i.unlock(t,"hidden",e),!i.isLocked(t,"hidden")&&(!!t.hasClass("acf-hidden")&&(t.removeClass("acf-hidden"),!0))},i.hide=function(t,e){return e&&i.lock(t,"hidden",e),!t.hasClass("acf-hidden")&&(t.addClass("acf-hidden"),!0)},i.isHidden=function(t){return t.hasClass("acf-hidden")},i.isVisible=function(t){return!i.isHidden(t)};var d=function(t,e){return!t.hasClass("acf-disabled")&&(e&&i.unlock(t,"disabled",e),!i.isLocked(t,"disabled")&&(!!t.prop("disabled")&&(t.prop("disabled",!1),!0)))};i.enable=function(e,i){if(e.attr("name"))return d(e,i);var n=!1;return e.find("[name]").each(function(){var e;d(t(this),i)&&(n=!0)}),n};var f=function(t,e){return e&&i.lock(t,"disabled",e),!t.prop("disabled")&&(t.prop("disabled",!0),!0)};i.disable=function(e,i){if(e.attr("name"))return f(e,i);var n=!1;return e.find("[name]").each(function(){var e;f(t(this),i)&&(n=!0)}),n},i.isset=function(t){for(var e=1;e-1){var o=window.URL||window.webkitURL,s=new Image;s.onload=function(){a.width=this.width,a.height=this.height,e(a)},s.src=o.createObjectURL(r)}else e(a);else e(a)},i.isAjaxSuccess=function(t){return t&&t.success},i.getAjaxMessage=function(t){return i.isget(t,"data","message")},i.getAjaxError=function(t){return i.isget(t,"data","error")},i.renderSelect=function(t,e){var n=t.val(),a=[],r=function(t){var e="";return t.map(function(t){var n=t.text||t.label||"",o=t.id||t.value||"";a.push(o),t.children?e+=''+r(t.children)+"":e+='"}),e};return t.html(r(e)),a.indexOf(n)>-1&&t.val(n),t.val()};var h=function(t,e){return t.data("acf-lock-"+e)||[]},p=function(t,e,i){t.data("acf-lock-"+e,i)};i.lock=function(t,e,i){var n=h(t,e),a;n.indexOf(i)<0&&(n.push(i),p(t,e,n))},i.unlock=function(t,e,i){var n=h(t,e),a=n.indexOf(i);return a>-1&&(n.splice(a,1),p(t,e,n)),0===n.length},i.isLocked=function(t,e){return h(t,e).length>0},i.isGutenberg=function(){return window.wp&&wp.data&&wp.data.select&&wp.data.select("core/editor")},i.objectToArray=function(t){return Object.keys(t).map(function(e){return t[e]})},t.fn.exists=function(){return t(this).length>0},t.fn.outerHTML=function(){return t(this).get(0).outerHTML},Array.prototype.indexOf||(Array.prototype.indexOf=function(e){return t.inArray(e,this)}),t(document).ready(function(){i.doAction("ready")}),t(window).on("load",function(){i.doAction("load")}),t(window).on("beforeunload",function(){i.doAction("unload")}),t(window).on("resize",function(){i.doAction("resize")}),t(document).on("sortstart",function(t,e){i.doAction("sortstart",e.item,e.placeholder)}),t(document).on("sortstop",function(t,e){i.doAction("sortstop",e.item,e.placeholder)})}(jQuery),function(t,e){"use strict";var i=function(){function t(){return f}function e(t,e,i,n){return"string"==typeof t&&"function"==typeof e&&c("actions",t,e,i=parseInt(i||10,10),n),d}function i(){var t=Array.prototype.slice.call(arguments),e=t.shift();return"string"==typeof e&&u("actions",e,t),d}function n(t,e){return"string"==typeof t&&s("actions",t,e),d}function a(t,e,i,n){return"string"==typeof t&&"function"==typeof e&&c("filters",t,e,i=parseInt(i||10,10),n),d}function r(){var t=Array.prototype.slice.call(arguments),e=t.shift();return"string"==typeof e?u("filters",e,t):d}function o(t,e){return"string"==typeof t&&s("filters",t,e),d}function s(t,e,i,n){if(f[t][e])if(i){var a=f[t][e],r;if(n)for(r=a.length;r--;){var o=a[r];o.callback===i&&o.context===n&&a.splice(r,1)}else for(r=a.length;r--;)a[r].callback===i&&a.splice(r,1)}else f[t][e]=[]}function c(t,e,i,n,a){var r={callback:i,priority:n,context:a},o=f[t][e];o?(o.push(r),o=l(o)):o=[r],f[t][e]=o}function l(t){for(var e,i,n,a=1,r=t.length;ae.priority;)t[i]=t[i-1],--i;t[i]=e}return t}function u(t,e,i){var n=f[t][e];if(!n)return"filters"===t&&i[0];var a=0,r=n.length;if("filters"===t)for(;a','
            ','

            ','
            ','
            ',"
            ",'
            ',""].join("")},render:function(){var t=this.get("title"),e=this.get("content"),i=this.get("loading"),n=this.get("width"),a=this.get("height");this.title(t),this.content(e),n&&this.$(".acf-popup-box").css("width",n),a&&this.$(".acf-popup-box").css("min-height",a),this.loading(i),acf.doAction("append",this.$el)},update:function(t){this.data=acf.parseArgs(t,this.data),this.render()},title:function(t){this.$(".title:first h3").html(t)},content:function(t){this.$(".inner:first").html(t)},loading:function(t){var e=this.$(".loading:first");t?e.show():e.hide()},open:function(){t("body").append(this.$el)},close:function(){this.remove()},onClickClose:function(t,e){t.preventDefault(),this.close()}}),acf.newPopup=function(t){return new acf.models.Popup(t)}}(jQuery),function(t,e){acf.unload=new acf.Model({wait:"load",active:!0,changed:!1,actions:{validation_failure:"startListening",validation_success:"stopListening"},events:{"change form .acf-field":"startListening","submit form":"stopListening"},enable:function(){this.active=!0},disable:function(){this.active=!1},reset:function(){this.stopListening()},startListening:function(){!this.changed&&this.active&&(this.changed=!0,t(window).on("beforeunload",this.onUnload))},stopListening:function(){this.changed=!1,t(window).off("beforeunload",this.onUnload)},onUnload:function(){return acf.__("The changes you made will be lost if you navigate away from this page")}})}(jQuery),function(t,e){var i=new acf.Model({events:{"click .acf-panel-title":"onClick"},onClick:function(t,e){t.preventDefault(),this.toggle(e.parent())},isOpen:function(t){return t.hasClass("-open")},toggle:function(t){this.isOpen(t)?this.close(t):this.open(t)},open:function(t){t.addClass("-open"),t.find(".acf-panel-title i").attr("class","dashicons dashicons-arrow-down")},close:function(t){t.removeClass("-open"),t.find(".acf-panel-title i").attr("class","dashicons dashicons-arrow-right")}})}(jQuery),function(t,e){var i=acf.Model.extend({data:{text:"",type:"",timeout:0,dismiss:!0,target:!1,close:function(){}},events:{"click .acf-notice-dismiss":"onClickClose"},tmpl:function(){return'
            '},setup:function(e){t.extend(this.data,e),this.$el=t(this.tmpl())},initialize:function(){this.render(),this.show()},render:function(){this.type(this.get("type")),this.html("

            "+this.get("text")+"

            "),this.get("dismiss")&&(this.$el.append(''),this.$el.addClass("-dismiss"));var t=this.get("timeout");t&&this.away(t)},update:function(e){t.extend(this.data,e),this.initialize(),this.removeEvents(),this.addEvents()},show:function(){var t=this.get("target");t&&t.prepend(this.$el)},hide:function(){this.$el.remove()},away:function(t){this.setTimeout(function(){acf.remove(this.$el)},t)},type:function(t){var e=this.get("type");e&&this.$el.removeClass("-"+e),this.$el.addClass("-"+t),"error"==t&&this.$el.addClass("acf-error-message")},html:function(t){this.$el.html(t)},text:function(t){this.$("p").html(t)},onClickClose:function(t,e){t.preventDefault(),this.get("close").apply(this,arguments),this.remove()}});acf.newNotice=function(t){return"object"!=typeof t&&(t={text:t}),new i(t)};var n=new acf.Model({wait:"prepare",priority:1,initialize:function(){var e=t(".acf-admin-notice");e.length&&t("h1:first").after(e)}})}(jQuery),function(t,e){var i=new acf.Model({wait:"prepare",priority:1,initialize:function(){(acf.get("postboxes")||[]).map(acf.newPostbox)}});acf.getPostbox=function(e){return"string"==typeof e&&(e=t("#"+e)),acf.getInstance(e)},acf.getPostboxes=function(){return acf.getInstances(t(".acf-postbox"))},acf.newPostbox=function(t){return new acf.models.Postbox(t)},acf.models.Postbox=acf.Model.extend({data:{id:"",key:"",style:"default",label:"top",edit:""},setup:function(e){e.editLink&&(e.edit=e.editLink),t.extend(this.data,e),this.$el=this.$postbox()},$postbox:function(){return t("#"+this.get("id"))},$hide:function(){return t("#"+this.get("id")+"-hide")},$hideLabel:function(){return this.$hide().parent()},$hndle:function(){return this.$("> .hndle")},$inside:function(){return this.$("> .inside")},isVisible:function(){return this.$el.hasClass("acf-hidden")},initialize:function(){if(this.$el.addClass("acf-postbox"),this.$el.removeClass("hide-if-js"),"block"!==acf.get("editor")){var t=this.get("style");"default"!==t&&this.$el.addClass(t)}this.$inside().addClass("acf-fields").addClass("-"+this.get("label"));var e=this.get("edit");e&&this.$hndle().append(''),this.show()},show:function(){this.$hideLabel().show(),this.$hide().prop("checked",!0),this.$el.show().removeClass("acf-hidden")},enable:function(){acf.enable(this.$el,"postbox")},showEnable:function(){this.show(),this.enable()},hide:function(){this.$hideLabel().hide(),this.$el.hide().addClass("acf-hidden")},disable:function(){acf.disable(this.$el,"postbox")},hideDisable:function(){this.hide(),this.disable()},html:function(t){this.$inside().html(t),acf.doAction("append",this.$el)}})}(jQuery),function(t,e){acf.newTooltip=function(t){return"object"!=typeof t&&(t={text:t}),void 0!==t.confirmRemove?(t.textConfirm=acf.__("Remove"),t.textCancel=acf.__("Cancel"),new n(t)):void 0!==t.confirm?new n(t):new i(t)};var i=acf.Model.extend({data:{text:"",timeout:0,target:null},tmpl:function(){return'
            '},setup:function(e){t.extend(this.data,e),this.$el=t(this.tmpl())},initialize:function(){this.render(),this.show(),this.position();var e=this.get("timeout");e&&setTimeout(t.proxy(this.fade,this),e)},update:function(e){t.extend(this.data,e),this.initialize()},render:function(){this.html(this.get("text"))},show:function(){t("body").append(this.$el)},hide:function(){this.$el.remove()},fade:function(){this.$el.addClass("acf-fade-up"),this.setTimeout(function(){this.remove()},250)},html:function(t){this.$el.html(t)},position:function(){var e=this.$el,i=this.get("target");if(i){e.removeClass("right left bottom top").css({top:0,left:0});var n=10,a=i.outerWidth(),r=i.outerHeight(),o=i.offset().top,s=i.offset().left,c=e.outerWidth(),l=e.outerHeight(),u=e.offset().top,d=o-l-u,f=s+a/2-c/2;f<10?(e.addClass("right"),f=s+a,d=o+r/2-l/2-u):f+c+10>t(window).width()?(e.addClass("left"),f=s-c,d=o+r/2-l/2-u):d-t(window).scrollTop()<10?(e.addClass("bottom"),d=o+r-u):e.addClass("top"),e.css({top:d,left:f})}}}),n=i.extend({data:{text:"",textConfirm:"",textCancel:"",target:null,targetConfirm:!0,confirm:function(){},cancel:function(){},context:!1},events:{'click [data-event="cancel"]':"onCancel",'click [data-event="confirm"]':"onConfirm"},addEvents:function(){acf.Model.prototype.addEvents.apply(this);var e=t(document),i=this.get("target");this.setTimeout(function(){this.on(e,"click","onCancel")}),this.get("targetConfirm")&&this.on(i,"click","onConfirm")},removeEvents:function(){acf.Model.prototype.removeEvents.apply(this);var e=t(document),i=this.get("target");this.off(e,"click"),this.off(i,"click")},render:function(){var t,e,i,n=[this.get("text")||acf.__("Are you sure?"),''+(this.get("textConfirm")||acf.__("Yes"))+"",''+(this.get("textCancel")||acf.__("No"))+""].join(" ");this.html(n),this.$el.addClass("-confirm")},onCancel:function(t,e){t.preventDefault(),t.stopImmediatePropagation();var i=this.get("cancel"),n=this.get("context")||this;i.apply(n,arguments),this.remove()},onConfirm:function(t,e){t.preventDefault(),t.stopImmediatePropagation();var i=this.get("confirm"),n=this.get("context")||this;i.apply(n,arguments),this.remove()}});acf.models.Tooltip=i,acf.models.TooltipConfirm=n;var a=new acf.Model({tooltip:!1,events:{"mouseenter .acf-js-tooltip":"showTitle","mouseup .acf-js-tooltip":"hideTitle","mouseleave .acf-js-tooltip":"hideTitle"},showTitle:function(t,e){var i=e.attr("title");i&&(e.attr("title",""),this.tooltip?this.tooltip.update({text:i,target:e}):this.tooltip=acf.newTooltip({text:i,target:e}))},hideTitle:function(t,e){this.tooltip.hide(),e.attr("title",this.tooltip.get("text"))}})}(jQuery),function(t,e){var i=[];acf.Field=acf.Model.extend({type:"",eventScope:".acf-field",wait:"ready",setup:function(t){this.$el=t,this.inherit(t),this.inherit(this.$control())},val:function(t){return void 0!==t?this.setValue(t):this.prop("disabled")?null:this.getValue()},getValue:function(){return this.$input().val()},setValue:function(t){return acf.val(this.$input(),t)},__:function(t){return acf._e(this.type,t)},$control:function(){return!1},$input:function(){return this.$("[name]:first")},$inputWrap:function(){return this.$(".acf-input:first")},$labelWrap:function(){return this.$(".acf-label:first")},getInputName:function(){return this.$input().attr("name")||""},parent:function(){var t=this.parents();return!!t.length&&t[0]},parents:function(){var t=this.$el.parents(".acf-field"),e;return acf.getFields(t)},show:function(t,e){var i=acf.show(this.$el,t);return i&&(this.prop("hidden",!1),acf.doAction("show_field",this,e)),i},hide:function(t,e){var i=acf.hide(this.$el,t);return i&&(this.prop("hidden",!0),acf.doAction("hide_field",this,e)),i},enable:function(t,e){var i=acf.enable(this.$el,t);return i&&(this.prop("disabled",!1),acf.doAction("enable_field",this,e)),i},disable:function(t,e){var i=acf.disable(this.$el,t);return i&&(this.prop("disabled",!0),acf.doAction("disable_field",this,e)),i},showEnable:function(t,e){return this.enable.apply(this,arguments),this.show.apply(this,arguments)},hideDisable:function(t,e){return this.disable.apply(this,arguments),this.hide.apply(this,arguments)},showNotice:function(t){"object"!=typeof t&&(t={text:t}),this.notice&&this.notice.remove(),t.target=this.$inputWrap(),this.notice=acf.newNotice(t)},removeNotice:function(t){this.notice&&(this.notice.away(t||0),this.notice=!1)},showError:function(e){this.$el.addClass("acf-error"),void 0!==e&&this.showNotice({text:e,type:"error",dismiss:!1}),acf.doAction("invalid_field",this),this.$el.one("focus change","input, select, textarea",t.proxy(this.removeError,this))},removeError:function(){this.$el.removeClass("acf-error"),this.removeNotice(250),acf.doAction("valid_field",this)},trigger:function(t,e,i){return"invalidField"==t&&(i=!0),acf.Model.prototype.trigger.apply(this,[t,e,i])}}),acf.newField=function(t){var e=t.data("type"),i=n(e),a,r=new(acf.models[i]||acf.Field)(t);return acf.doAction("new_field",r),r};var n=function(t){return acf.strPascalCase(t||"")+"Field"};acf.registerFieldType=function(t){var e,a=t.prototype.type,r=n(a);acf.models[r]=t,i.push(a)},acf.getFieldType=function(t){var e=n(t);return acf.models[e]||!1},acf.getFieldTypes=function(t){t=acf.parseArgs(t,{category:""});var e=[];return i.map(function(i){var n=acf.getFieldType(i),a=n.prototype;t.category&&a.category!==t.category||e.push(n)}),e}}(jQuery),function(t,e){acf.findFields=function(e){var i=".acf-field",n=!1;return(e=acf.parseArgs(e,{key:"",name:"",type:"",is:"",parent:!1,sibling:!1,limit:!1,visible:!1,suppressFilters:!1})).suppressFilters||(e=acf.applyFilters("find_fields_args",e)),e.key&&(i+='[data-key="'+e.key+'"]'),e.type&&(i+='[data-type="'+e.type+'"]'),e.name&&(i+='[data-name="'+e.name+'"]'),e.is&&(i+=e.is),e.visible&&(i+=":visible"),n=e.parent?e.parent.find(i):e.sibling?e.sibling.siblings(i):t(i),e.suppressFilters||(n=n.not(".acf-clone .acf-field"),n=acf.applyFilters("find_fields",n)),e.limit&&(n=n.slice(0,e.limit)),n},acf.findField=function(t,e){return acf.findFields({key:t,limit:1,parent:e,suppressFilters:!0})},acf.getField=function(t){t instanceof jQuery||(t=acf.findField(t));var e=t.data("acf");return e||(e=acf.newField(t)),e},acf.getFields=function(e){e instanceof jQuery||(e=acf.findFields(e));var i=[];return e.each(function(){var e=acf.getField(t(this));i.push(e)}),i},acf.findClosestField=function(t){return t.closest(".acf-field")},acf.getClosestField=function(t){var e=acf.findClosestField(t);return this.getField(e)};var i=function(t){var e=t,i=t+"_fields",a=t+"_field",r=function(t){var e=acf.arrayArgs(arguments),n=e.slice(1),a=acf.getFields({parent:t});if(a.length){var r=[i,a].concat(n);acf.doAction.apply(null,r)}},o=function(t){var e=acf.arrayArgs(arguments),i=e.slice(1);t.map(function(t,e){var n=[a,t].concat(i);acf.doAction.apply(null,n)})};acf.addAction(e,r),acf.addAction(i,o),n(t)},n=function(t){var e=t+"_field",i=t+"Field",n=function(n){var a=acf.arrayArgs(arguments),r=a.slice(1),s=["type","name","key"];s.map(function(t){var i="/"+t+"="+n.get(t);a=[e+i,n].concat(r),acf.doAction.apply(null,a)}),o.indexOf(t)>-1&&n.trigger(i,r)};acf.addAction(e,n)},a,r=["valid","invalid","enable","disable","new"],o=["remove","unmount","remount","sortstart","sortstop","show","hide","unload","valid","invalid","enable","disable"];["prepare","ready","load","append","remove","unmount","remount","sortstart","sortstop","show","hide","unload"].map(i),r.map(n);var s=new acf.Model({id:"fieldsEventManager",events:{'click .acf-field a[href="#"]':"onClick","change .acf-field":"onChange"},onClick:function(t){t.preventDefault()},onChange:function(){t("#_acf_changed").val(1)}})}(jQuery),function(t,e){var i=0,n=acf.Field.extend({type:"accordion",wait:"",$control:function(){return this.$(".acf-fields:first")},initialize:function(){if(!this.$el.is("td")){if(this.get("endpoint"))return this.remove();var e=this.$el,n=this.$labelWrap(),r=this.$inputWrap(),o=this.$control(),s=r.children(".description");if(s.length&&n.append(s),this.$el.is("tr")){var c=this.$el.closest("table"),l=t('
            '),u=t('
            '),d=t('
                '),f=t("");l.append(n.html()),d.append(f),u.append(d),r.append(l),r.append(u),n.remove(),o.remove(),r.attr("colspan",2),n=l,r=u,o=f}e.addClass("acf-accordion"),n.addClass("acf-accordion-title"),r.addClass("acf-accordion-content"),i++,this.get("multi_expand")&&e.attr("multi-expand",1);var h=acf.getPreference("this.accordions")||[];void 0!==h[i-1]&&this.set("open",h[i-1]),this.get("open")&&(e.addClass("-open"),r.css("display","block")),n.prepend(a.iconHtml({open:this.get("open")}));var p=e.parent();o.addClass(p.hasClass("-left")?"-left":""),o.addClass(p.hasClass("-clear")?"-clear":""),o.append(e.nextUntil(".acf-field-accordion",".acf-field")),o.removeAttr("data-open data-multi_expand data-endpoint")}}});acf.registerFieldType(n);var a=new acf.Model({actions:{unload:"onUnload"},events:{ +"click .acf-accordion-title":"onClick","invalidField .acf-accordion":"onInvalidField"},isOpen:function(t){return t.hasClass("-open")},toggle:function(t){this.isOpen(t)?this.close(t):this.open(t)},iconHtml:function(t){var e;return''},open:function(e){e.find(".acf-accordion-content:first").slideDown().css("display","block"),e.find(".acf-accordion-icon:first").replaceWith(this.iconHtml({open:!0})),e.addClass("-open"),acf.doAction("show",e),e.attr("multi-expand")||e.siblings(".acf-accordion.-open").each(function(){a.close(t(this))})},close:function(t){t.find(".acf-accordion-content:first").slideUp(),t.find(".acf-accordion-icon:first").replaceWith(this.iconHtml({open:!1})),t.removeClass("-open"),acf.doAction("hide",t)},onClick:function(t,e){t.preventDefault(),this.toggle(e.parent())},onInvalidField:function(t,e){this.busy||(this.busy=!0,this.setTimeout(function(){this.busy=!1},1e3),this.open(e))},onUnload:function(e){var i=[];t(".acf-accordion").each(function(){var e=t(this).hasClass("-open")?1:0;i.push(e)}),i.length&&acf.setPreference("this.accordions",i)}})}(jQuery),function(t,e){var i=acf.Field.extend({type:"button_group",events:{'click input[type="radio"]':"onClick"},$control:function(){return this.$(".acf-button-group")},$input:function(){return this.$("input:checked")},setValue:function(t){this.$('input[value="'+t+'"]').prop("checked",!0).trigger("change")},onClick:function(t,e){var i=e.parent("label"),n=i.hasClass("selected");this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"))}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"checkbox",events:{"change input":"onChange","click .acf-add-checkbox":"onClickAdd","click .acf-checkbox-toggle":"onClickToggle","click .acf-checkbox-custom":"onClickCustom"},$control:function(){return this.$(".acf-checkbox-list")},$toggle:function(){return this.$(".acf-checkbox-toggle")},$input:function(){return this.$('input[type="hidden"]')},$inputs:function(){return this.$('input[type="checkbox"]').not(".acf-checkbox-toggle")},getValue:function(){var e=[];return this.$(":checked").each(function(){e.push(t(this).val())}),!!e.length&&e},onChange:function(t,e){var i=e.prop("checked"),n=this.$toggle(),a;(i?e.parent().addClass("selected"):e.parent().removeClass("selected"),n.length)&&(0==this.$inputs().not(":checked").length?n.prop("checked",!0):n.prop("checked",!1))},onClickAdd:function(t,e){var i='
              • ';e.parent("li").before(i)},onClickToggle:function(t,e){var i=e.prop("checked"),n;this.$inputs().prop("checked",i)},onClickCustom:function(t,e){var i=e.prop("checked"),n=e.next('input[type="text"]');i?n.prop("disabled",!1):(n.prop("disabled",!0),""==n.val()&&e.parent("li").remove())}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"color_picker",wait:"load",$control:function(){return this.$(".acf-color-picker")},$input:function(){return this.$('input[type="hidden"]')},$inputText:function(){return this.$('input[type="text"]')},setValue:function(t){acf.val(this.$input(),t),this.$inputText().iris("color",t)},initialize:function(){var t=this.$input(),e=this.$inputText(),i=function(i){setTimeout(function(){acf.val(t,e.val())},1)},n={defaultColor:!1,palettes:!0,hide:!0,change:i,clear:i},n=acf.applyFilters("color_picker_args",n,this);e.wpColorPicker(n)}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"date_picker",events:{'blur input[type="text"]':"onBlur"},$control:function(){return this.$(".acf-date-picker")},$input:function(){return this.$('input[type="hidden"]')},$inputText:function(){return this.$('input[type="text"]')},initialize:function(){if(this.has("save_format"))return this.initializeCompatibility();var t=this.$input(),e=this.$inputText(),i={dateFormat:this.get("date_format"),altField:t,altFormat:"yymmdd",changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day")};i=acf.applyFilters("date_picker_args",i,this),acf.newDatePicker(e,i),acf.doAction("date_picker_init",e,i,this)},initializeCompatibility:function(){var t=this.$input(),e=this.$inputText();e.val(t.val());var i={dateFormat:this.get("date_format"),altField:t,altFormat:this.get("save_format"),changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day")},n=(i=acf.applyFilters("date_picker_args",i,this)).dateFormat;i.dateFormat=this.get("save_format"),acf.newDatePicker(e,i),e.datepicker("option","dateFormat",n),acf.doAction("date_picker_init",e,i,this)},onBlur:function(){this.$inputText().val()||acf.val(this.$input(),"")}});acf.registerFieldType(i);var n=new acf.Model({priority:5,wait:"ready",initialize:function(){var e=acf.get("locale"),i=acf.get("rtl"),n=acf.get("datePickerL10n");return!!n&&(void 0!==t.datepicker&&(n.isRTL=i,t.datepicker.regional[e]=n,void t.datepicker.setDefaults(n)))}});acf.newDatePicker=function(e,i){if(void 0===t.datepicker)return!1;i=i||{},e.datepicker(i),t("body > #ui-datepicker-div").exists()&&t("body > #ui-datepicker-div").wrap('
                ')}}(jQuery),function(t,e){var i=acf.models.DatePickerField.extend({type:"date_time_picker",$control:function(){return this.$(".acf-date-time-picker")},initialize:function(){var t=this.$input(),e=this.$inputText(),i={dateFormat:this.get("date_format"),timeFormat:this.get("time_format"),altField:t,altFieldTimeOnly:!1,altFormat:"yy-mm-dd",altTimeFormat:"HH:mm:ss",changeYear:!0,yearRange:"-100:+100",changeMonth:!0,showButtonPanel:!0,firstDay:this.get("first_day"),controlType:"select",oneLine:!0};i=acf.applyFilters("date_time_picker_args",i,this),acf.newDateTimePicker(e,i),acf.doAction("date_time_picker_init",e,i,this)}});acf.registerFieldType(i);var n=new acf.Model({priority:5,wait:"ready",initialize:function(){var e=acf.get("locale"),i=acf.get("rtl"),n=acf.get("dateTimePickerL10n");return!!n&&(void 0!==t.timepicker&&(n.isRTL=i,t.timepicker.regional[e]=n,void t.timepicker.setDefaults(n)))}});acf.newDateTimePicker=function(e,i){if(void 0===t.timepicker)return!1;i=i||{},e.datetimepicker(i),t("body > #ui-datepicker-div").exists()&&t("body > #ui-datepicker-div").wrap('
                ')}}(jQuery),function(t,e){function i(e){if(r)return e();if(acf.isset(window,"google","maps","Geocoder"))return r=new google.maps.Geocoder,e();if(acf.addAction("google_map_api_loaded",e),!a){var i=acf.get("google_map_api");i&&(a=!0,t.ajax({url:i,dataType:"script",cache:!0,success:function(){r=new google.maps.Geocoder,acf.doAction("google_map_api_loaded")}}))}}var n=acf.Field.extend({type:"google_map",map:!1,wait:"load",events:{'click a[data-name="clear"]':"onClickClear",'click a[data-name="locate"]':"onClickLocate",'click a[data-name="search"]':"onClickSearch","keydown .search":"onKeydownSearch","keyup .search":"onKeyupSearch","focus .search":"onFocusSearch","blur .search":"onBlurSearch",showField:"onShow"},$control:function(){return this.$(".acf-google-map")},$input:function(t){return this.$('input[data-name="'+(t||"address")+'"]')},$search:function(){return this.$(".search")},$canvas:function(){return this.$(".canvas")},addClass:function(t){this.$control().addClass(t)},removeClass:function(t){this.$control().removeClass(t)},getValue:function(){var e={lat:"",lng:"",address:""};return this.$('input[type="hidden"]').each(function(){e[t(this).data("name")]=t(this).val()}),e.lat&&e.lng||(e=!1),e},setValue:function(t){for(var e in t=acf.parseArgs(t,{lat:"",lng:"",address:""}))acf.val(this.$input(e),t[e]);t.lat&&t.lng||(t=!1),this.renderVal(t);var i=this.newLatLng(t.lat,t.lng);acf.doAction("google_map_change",i,this.map,this)},renderVal:function(t){t?(this.addClass("-value"),this.setPosition(t.lat,t.lng),this.map.marker.setVisible(!0)):(this.removeClass("-value"),this.map.marker.setVisible(!1)),this.$search().val(t.address)},setPosition:function(t,e){var i=this.newLatLng(t,e);return this.map.marker.setPosition(i),this.map.marker.setVisible(!0),this.center(),this},center:function(){var t=this.map.marker.getPosition(),e=this.get("lat"),i=this.get("lng");t&&(e=t.lat(),i=t.lng());var n=this.newLatLng(e,i);this.map.setCenter(n)},getSearchVal:function(){return this.$search().val()},initialize:function(){i(this.initializeMap.bind(this))},newLatLng:function(t,e){return new google.maps.LatLng(parseFloat(t),parseFloat(e))},initializeMap:function(){var t=this.get("zoom"),e=this.get("lat"),i=this.get("lng"),n={scrollwheel:!1,zoom:parseInt(t),center:this.newLatLng(e,i),mapTypeId:google.maps.MapTypeId.ROADMAP,marker:{draggable:!0,raiseOnDrag:!0},autocomplete:{}};n=acf.applyFilters("google_map_args",n,this);var a=new google.maps.Map(this.$canvas()[0],n),r=acf.parseArgs(n.marker,{draggable:!0,raiseOnDrag:!0,map:a});r=acf.applyFilters("google_map_marker_args",r,this);var o=new google.maps.Marker(r),s=!1;if(acf.isset(google,"maps","places","Autocomplete")){var c=n.autocomplete||{};c=acf.applyFilters("google_map_autocomplete_args",c,this),(s=new google.maps.places.Autocomplete(this.$search()[0],c)).bindTo("bounds",a)}this.addMapEvents(this,a,o,s),a.acf=this,a.marker=o,a.autocomplete=s,this.map=a,acf.doAction("google_map_init",a,o,this);var l=this.getValue();this.renderVal(l)},addMapEvents:function(t,e,i,n){google.maps.event.addListener(e,"click",function(e){var i=e.latLng.lat(),n=e.latLng.lng();t.searchPosition(i,n)}),google.maps.event.addListener(i,"dragend",function(){var e=this.getPosition(),i=e.lat(),n=e.lng();t.searchPosition(i,n)}),n&&google.maps.event.addListener(n,"place_changed",function(){var e=this.getPlace();e.address=t.getSearchVal(),t.setPlace(e)})},searchPosition:function(e,i){var n=this.newLatLng(e,i),a=this.$control();this.setPosition(e,i),a.addClass("-loading");var o=t.proxy(function(t,n){a.removeClass("-loading");var r="";n!=google.maps.GeocoderStatus.OK?console.log("Geocoder failed due to: "+n):t[0]?r=t[0].formatted_address:console.log("No results found"),this.val({lat:e,lng:i,address:r})},this);r.geocode({latLng:n},o)},setPlace:function(t){if(!t)return this;if(t.name&&!t.geometry)return this.searchAddress(t.name),this;var e=t.geometry.location.lat(),i=t.geometry.location.lng(),n=t.address||t.formatted_address;return this.setValue({lat:e,lng:i,address:n}),this},searchAddress:function(e){var i=e.split(",");if(2==i.length){var n=i[0],a=i[1];if(t.isNumeric(n)&&t.isNumeric(a))return this.searchPosition(n,a)}var o=this.$control();o.addClass("-loading");var s=this.proxy(function(t,i){o.removeClass("-loading");var n="",a="";i!=google.maps.GeocoderStatus.OK?console.log("Geocoder failed due to: "+i):t[0]?(n=t[0].geometry.location.lat(),a=t[0].geometry.location.lng()):console.log("No results found"),this.val({lat:n,lng:a,address:e})});r.geocode({address:e},s)},searchLocation:function(){if(!navigator.geolocation)return alert(acf.__("Sorry, this browser does not support geolocation"));var e=this.$control();e.addClass("-loading");var i=t.proxy(function(t,i){e.removeClass("-loading");var n=t.coords.latitude,a=t.coords.longitude;this.searchPosition(n,a)},this),n=function(t){e.removeClass("-loading")};navigator.geolocation.getCurrentPosition(i,n)},onClickClear:function(t,e){this.val(!1)},onClickLocate:function(t,e){this.searchLocation()},onClickSearch:function(t,e){this.searchAddress(this.$search().val())},onFocusSearch:function(t,e){this.removeClass("-value"),this.onKeyupSearch.apply(this,arguments)},onBlurSearch:function(t,e){this.setTimeout(function(){this.removeClass("-search"),e.val()&&this.addClass("-value")},100)},onKeyupSearch:function(t,e){e.val()?this.addClass("-search"):this.removeClass("-search")},onKeydownSearch:function(t,e){13==t.which&&t.preventDefault()},onMousedown:function(){},onShow:function(){if(!this.map)return!1;this.setTimeout(this.center,10)}});acf.registerFieldType(n);var a=!1,r=!1}(jQuery),function(t,e){var i=acf.Field.extend({type:"image",$control:function(){return this.$(".acf-image-uploader")},$input:function(){return this.$('input[type="hidden"]')},events:{'click a[data-name="add"]':"onClickAdd",'click a[data-name="edit"]':"onClickEdit",'click a[data-name="remove"]':"onClickRemove",'change input[type="file"]':"onChange"},initialize:function(){"basic"===this.get("uploader")&&this.$el.closest("form").attr("enctype","multipart/form-data")},validateAttachment:function(t){void 0!==(t=t||{}).id&&(t=t.attributes),t=acf.parseArgs(t,{url:"",alt:"",title:"",caption:"",description:"",width:0,height:0});var e=acf.isget(t,"sizes",this.get("preview_size"),"url");return null!==e&&(t.url=e),t},render:function(t){t=this.validateAttachment(t),this.$("img").attr({src:t.url,alt:t.alt,title:t.title});var e=t.id||"";this.val(e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")},append:function(t,e){var i=function(t,e){for(var i=acf.getFields({key:t.get("key"),parent:e.$el}),n=0;n0?this.append(t,e):this.render(t)},this)})},editAttachment:function(){var e=this.val();if(e)var i=acf.newMediaPopup({mode:"edit",title:acf.__("Edit Image"),button:acf.__("Update Image"),attachment:e,field:this.get("key"),select:t.proxy(function(t,e){this.render(t)},this)})},removeAttachment:function(){this.render(!1)},onClickAdd:function(t,e){this.selectAttachment()},onClickEdit:function(t,e){this.editAttachment()},onClickRemove:function(t,e){this.removeAttachment()},onChange:function(e,i){var n=this.$input();acf.getFileInputData(i,function(e){n.val(t.param(e))})}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.models.ImageField.extend({type:"file",$control:function(){return this.$(".acf-file-uploader")},$input:function(){return this.$('input[type="hidden"]')},validateAttachment:function(t){return void 0!==(t=t||{}).id&&(t=t.attributes),t=acf.parseArgs(t,{url:"",alt:"",title:"",filename:"",filesizeHumanReadable:"",icon:"/wp-includes/images/media/default.png"})},render:function(t){t=this.validateAttachment(t),this.$("img").attr({src:t.icon,alt:t.alt,title:t.title}),this.$('[data-name="title"]').text(t.title),this.$('[data-name="filename"]').text(t.filename).attr("href",t.url),this.$('[data-name="filesize"]').text(t.filesizeHumanReadable);var e=t.id||"";acf.val(this.$input(),e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")},selectAttachment:function(){var e=this.parent(),i=e&&"repeater"===e.get("type"),n=acf.newMediaPopup({mode:"select",title:acf.__("Select File"),field:this.get("key"),multiple:i,library:this.get("library"),allowedTypes:this.get("mime_types"),select:t.proxy(function(t,i){i>0?this.append(t,e):this.render(t)},this)})},editAttachment:function(){var e=this.val();if(!e)return!1;var i=acf.newMediaPopup({mode:"edit",title:acf.__("Edit File"),button:acf.__("Update File"),attachment:e,field:this.get("key"),select:t.proxy(function(t,e){this.render(t)},this)})}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"link",events:{'click a[data-name="add"]':"onClickEdit",'click a[data-name="edit"]':"onClickEdit",'click a[data-name="remove"]':"onClickRemove","change .link-node":"onChange"},$control:function(){return this.$(".acf-link")},$node:function(){return this.$(".link-node")},getValue:function(){var t=this.$node();return!!t.attr("href")&&{title:t.html(),url:t.attr("href"),target:t.attr("target")}},setValue:function(t){t=acf.parseArgs(t,{title:"",url:"",target:""});var e=this.$control(),i=this.$node();e.removeClass("-value -external"),t.url&&e.addClass("-value"),"_blank"===t.target&&e.addClass("-external"),this.$(".link-title").html(t.title),this.$(".link-url").attr("href",t.url).html(t.url),i.html(t.title),i.attr("href",t.url),i.attr("target",t.target),this.$(".input-title").val(t.title),this.$(".input-target").val(t.target),this.$(".input-url").val(t.url).trigger("change")},onClickEdit:function(t,e){acf.wpLink.open(this.$node())},onClickRemove:function(t,e){this.setValue(!1)},onChange:function(t,e){var i=this.getValue();this.setValue(i)}});acf.registerFieldType(i),acf.wpLink=new acf.Model({getNodeValue:function(){var t=this.get("node");return{title:t.html(),url:t.attr("href"),target:t.attr("target")}},setNodeValue:function(t){var e=this.get("node");e.html(t.title),e.attr("href",t.url),e.attr("target",t.target),e.trigger("change")},getInputValue:function(){return{title:t("#wp-link-text").val(),url:t("#wp-link-url").val(),target:t("#wp-link-target").prop("checked")?"_blank":""}},setInputValue:function(e){t("#wp-link-text").val(e.title),t("#wp-link-url").val(e.url),t("#wp-link-target").prop("checked","_blank"===e.target)},open:function(e){this.on("wplink-open","onOpen"),this.on("wplink-close","onClose"),this.set("node",e);var i=t('');t("body").append(i);var n=this.getNodeValue();wpLink.open("acf-link-textarea",n.url,n.title,null)},onOpen:function(){t("#wp-link-wrap").addClass("has-text-field");var e=this.getNodeValue();this.setInputValue(e)},close:function(){wpLink.close()},onClose:function(){if(!this.has("node"))return!1;this.off("wplink-open"),this.off("wplink-close");var e=this.getInputValue();this.setNodeValue(e),t("#acf-link-textarea").remove(),this.set("node",null)}})}(jQuery),function(t,e){var i=acf.Field.extend({type:"oembed",events:{'click [data-name="clear-button"]':"onClickClear","keypress .input-search":"onKeypressSearch","keyup .input-search":"onKeyupSearch","change .input-search":"onChangeSearch"},$control:function(){return this.$(".acf-oembed")},$input:function(){return this.$(".input-value")},$search:function(){return this.$(".input-search")},getValue:function(){return this.$input().val()},getSearchVal:function(){return this.$search().val()},setValue:function(t){t?this.$control().addClass("has-value"):this.$control().removeClass("has-value"),acf.val(this.$input(),t)},showLoading:function(t){acf.showLoading(this.$(".canvas"))},hideLoading:function(){acf.hideLoading(this.$(".canvas"))},maybeSearch:function(){var e=this.val(),i=this.getSearchVal();if(!i)return this.clear();if("http"!=i.substr(0,4)&&(i="http://"+i),i!==e){var n=this.get("timeout");n&&clearTimeout(n);var a=t.proxy(this.search,this,i);this.set("timeout",setTimeout(a,300))}},search:function(e){var i={action:"acf/fields/oembed/search",s:e,field_key:this.get("key")},n;(n=this.get("xhr"))&&n.abort(),this.showLoading();var n=t.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(i),type:"post",dataType:"json",context:this,success:function(t){t&&t.html||(t={url:!1,html:""}),this.val(t.url),this.$(".canvas-media").html(t.html)},complete:function(){this.hideLoading()}});this.set("xhr",n)},clear:function(){this.val(""),this.$search().val(""),this.$(".canvas-media").html("")},onClickClear:function(t,e){this.clear()},onKeypressSearch:function(t,e){13==t.which&&(t.preventDefault(),this.maybeSearch())},onKeyupSearch:function(t,e){e.val()&&this.maybeSearch()},onChangeSearch:function(t,e){this.maybeSearch()}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"radio",events:{'click input[type="radio"]':"onClick"},$control:function(){return this.$(".acf-radio-list")},$input:function(){return this.$("input:checked")},$inputText:function(){return this.$('input[type="text"]')},getValue:function(){var t=this.$input().val();return"other"===t&&this.get("other_choice")&&(t=this.$inputText().val()),t},onClick:function(t,e){var i=e.parent("label"),n=i.hasClass("selected"),a=e.val();this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"),a=!1),this.get("other_choice")&&("other"===a?this.$inputText().prop("disabled",!1):this.$inputText().prop("disabled",!0))}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"range",events:{'input input[type="range"]':"onChange","change input":"onChange"},$input:function(){return this.$('input[type="range"]')},$inputAlt:function(){return this.$('input[type="number"]')},setValue:function(t){this.busy=!0,acf.val(this.$input(),t),acf.val(this.$inputAlt(),this.$input().val(),!0),this.busy=!1},onChange:function(t,e){this.busy||this.setValue(e.val())}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"relationship",events:{"keypress [data-filter]":"onKeypressFilter","change [data-filter]":"onChangeFilter","keyup [data-filter]":"onChangeFilter","click .choices-list .acf-rel-item":"onClickAdd",'click [data-name="remove_item"]':"onClickRemove",mouseover:"onHover"},$control:function(){return this.$(".acf-relationship")},$list:function(t){return this.$("."+t+"-list")},$listItems:function(t){return this.$list(t).find(".acf-rel-item")},$listItem:function(t,e){return this.$list(t).find('.acf-rel-item[data-id="'+e+'"]')},getValue:function(){var e=[];return this.$listItems("values").each(function(){e.push(t(this).data("id"))}),!!e.length&&e},newChoice:function(t){return["
              • ",''+t.text+"","
              • "].join("")},newValue:function(t){return["
              • ",'',''+t.text,'',"","
              • "].join("")},addSortable:function(t){this.$list("values").sortable({items:"li",forceHelperSize:!0,forcePlaceholderSize:!0,scroll:!0,update:function(){t.$input().trigger("change")}})},initialize:function(){var t=this.proxy(function(t){if(!this.get("loading")&&this.get("more")){var e=this.$list("choices"),i=Math.ceil(e.scrollTop()),n=Math.ceil(e[0].scrollHeight),a=Math.ceil(e.innerHeight()),r=this.get("paged")||1;i+a>=n&&(this.set("paged",r+1),this.fetch())}});this.$list("choices").scrollTop(0).on("scroll",t),this.fetch()},onHover:function(e){t().off(e),this.addSortable(this)},onKeypressFilter:function(t,e){13==t.which&&t.preventDefault()},onChangeFilter:function(t,e){var i=e.val(),n=e.data("filter");this.get(n)!==i&&(this.set(n,i),this.set("paged",1),e.is("select")?this.fetch():this.maybeFetch())},onClickAdd:function(t,e){var i=this.val(),n=parseInt(this.get("max"));if(e.hasClass("disabled"))return!1;if(n>0&&i&&i.length>=n)return this.showNotice({text:acf.__("Maximum values reached ( {max} values )").replace("{max}",n),type:"warning"}),!1;e.addClass("disabled");var a=this.newValue({id:e.data("id"),text:e.html()});this.$list("values").append(a),this.$input().trigger("change")},onClickRemove:function(t,e){t.preventDefault();var i=e.parent(),n=i.parent(),a=i.data("id");n.remove(),this.$listItem("choices",a).removeClass("disabled"),this.$input().trigger("change")},maybeFetch:function(){var t=this.get("timeout");t&&clearTimeout(t),t=this.setTimeout(this.fetch,300),this.set("timeout",t)},getAjaxData:function(){var t=this.$control().data();for(var e in t)t[e]=this.get(e);return t.action="acf/fields/relationship/query",t.field_key=this.get("key"),t=acf.applyFilters("relationship_ajax_data",t,this)},fetch:function(){var e;(e=this.get("xhr"))&&e.abort();var i=this.getAjaxData(),n=this.$list("choices");1==i.paged&&n.html("");var a=t('
              • '+acf.__("Loading")+"
              • ");n.append(a),this.set("loading",!0);var r=function(){this.set("loading",!1),a.remove()},o=function(e){if(!e||!e.results||!e.results.length)return this.set("more",!1),void(1==this.get("paged")&&this.$list("choices").append("
              • "+acf.__("No matches found")+"
              • "));this.set("more",e.more);var i=this.walkChoices(e.results),a=t(i),r=this.val();r&&r.length&&r.map(function(t){a.find('.acf-rel-item[data-id="'+t+'"]').addClass("disabled")}),n.append(a);var o=!1,s=!1;n.find(".acf-rel-label").each(function(){var e=t(this),i=e.siblings("ul");if(o&&o.text()==e.text())return s.append(i.children()),void t(this).parent().remove();o=e,s=i})},e=t.ajax({url:acf.get("ajaxurl"),dataType:"json",type:"post",data:acf.prepareForAjax(i),context:this,success:o,complete:r});this.set("xhr",e)},walkChoices:function(e){var i=function(e){var n="";return t.isArray(e)?e.map(function(t){n+=i(t)}):t.isPlainObject(e)&&(void 0!==e.children?(n+='
              • '+e.text+'
                  ',n+=i(e.children),n+="
              • "):n+='
              • '+e.text+"
              • "),n};return i(e)}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"select",select2:!1,wait:"load",events:{removeField:"onRemove"},$input:function(){return this.$("select")},initialize:function(){var t=this.$input();if(this.inherit(t),this.get("ui")){var e=this.get("ajax_action");e||(e="acf/fields/"+this.get("type")+"/query"),this.select2=acf.newSelect2(t,{field:this,ajax:this.get("ajax"),multiple:this.get("multiple"),placeholder:this.get("placeholder"),allowNull:this.get("allow_null"),ajaxAction:e})}},onRemove:function(){this.select2&&this.select2.destroy()}});acf.registerFieldType(i)}(jQuery),function(t,e){var i="tab",n=acf.Field.extend({type:"tab",wait:"",tabs:!1,tab:!1,findFields:function(){return this.$el.nextUntil(".acf-field-tab",".acf-field")},getFields:function(){return acf.getFields(this.findFields())},findTabs:function(){return this.$el.prevAll(".acf-tab-wrap:first")},findTab:function(){return this.$(".acf-tab-button")},initialize:function(){if(this.$el.is("td"))return this.events={},!1;var t=this.findTabs(),e=this.findTab(),i=acf.parseArgs(e.data(),{endpoint:!1,placement:"",before:this.$el});!t.length||i.endpoint?this.tabs=new r(i):this.tabs=t.data("acf"),this.tab=this.tabs.addTab(e,this)},isActive:function(){return this.tab.isActive()},showFields:function(){this.getFields().map(function(t){t.show(this.cid,"tab"),t.hiddenByTab=!1},this)},hideFields:function(){this.getFields().map(function(t){t.hide(this.cid,"tab"),t.hiddenByTab=this.tab},this)},show:function(t){var e=acf.Field.prototype.show.apply(this,arguments);return e&&(this.tab.show(),this.tabs.refresh()),e},hide:function(t){var e=acf.Field.prototype.hide.apply(this,arguments);return e&&(this.tab.hide(),this.isActive()&&this.tabs.reset()),e},enable:function(t){this.getFields().map(function(t){t.enable("tab")})},disable:function(t){this.getFields().map(function(t){t.disable("tab")})}});acf.registerFieldType(n);var a=0,r=acf.Model.extend({tabs:[],active:!1,actions:{refresh:"onRefresh"},data:{before:!1,placement:"top",index:0,initialized:!1},setup:function(e){t.extend(this.data,e),this.tabs=[],this.active=!1;var i=this.get("placement"),n=this.get("before"),r=n.parent();"left"==i&&r.hasClass("acf-fields")&&r.addClass("-sidebar"),n.is("tr")?this.$el=t('
                '):this.$el=t('
                  '),n.before(this.$el),this.set("index",a,!0),a++},initializeTabs:function(){var t=this.getVisible().shift(),e,i,n=(acf.getPreference("this.tabs")||[])[this.get("index")];this.tabs[n]&&this.tabs[n].isVisible()&&(t=this.tabs[n]),t?this.selectTab(t):this.closeTabs(),this.set("initialized",!0)},getVisible:function(){return this.tabs.filter(function(t){return t.isVisible()})},getActive:function(){return this.active},setActive:function(t){return this.active=t},hasActive:function(){return!1!==this.active},isActive:function(t){var e=this.getActive();return e&&e.cid===t.cid},closeActive:function(){this.hasActive()&&this.closeTab(this.getActive())},openTab:function(t){this.closeActive(),t.open(),this.setActive(t)},closeTab:function(t){t.close(),this.setActive(!1)},closeTabs:function(){this.tabs.map(this.closeTab,this)},selectTab:function(t){this.tabs.map(function(e){t.cid!==e.cid&&this.closeTab(e)},this),this.openTab(t)},addTab:function(e,i){var n=t("
                • ");n.append(e),this.$("ul").append(n);var a=new o({$el:n,field:i,group:this});return this.tabs.push(a),a},reset:function(){return this.closeActive(),this.refresh()},refresh:function(){if(this.hasActive())return!1;var t=this.getVisible().shift();return t&&this.openTab(t),t},onRefresh:function(){if("left"===this.get("placement")){var t=this.$el.parent(),e=this.$el.children("ul"),i=t.is("td")?"height":"min-height",n=e.position().top+e.outerHeight(!0)-1;t.css(i,n)}}}),o=acf.Model.extend({group:!1,field:!1,events:{"click a":"onClick"},index:function(){return this.$el.index()},isVisible:function(){return acf.isVisible(this.$el)},isActive:function(){return this.$el.hasClass("active")},open:function(){this.$el.addClass("active"),this.field.showFields()},close:function(){this.$el.removeClass("active"),this.field.hideFields()},onClick:function(t,e){t.preventDefault(),this.toggle()},toggle:function(){this.isActive()||this.group.openTab(this)}}),s=new acf.Model({priority:50,actions:{prepare:"render",append:"render",unload:"onUnload",invalid_field:"onInvalidField"},findTabs:function(){return t(".acf-tab-wrap")},getTabs:function(){return acf.getInstances(this.findTabs())},render:function(t){this.getTabs().map(function(t){t.get("initialized")||t.initializeTabs()})},onInvalidField:function(t){this.busy||t.hiddenByTab&&(t.hiddenByTab.toggle(),this.busy=!0,this.setTimeout(function(){this.busy=!1},100))},onUnload:function(){var t=[];this.getTabs().map(function(e){var i=e.hasActive()?e.getActive().index():0;t.push(i)}),t.length&&acf.setPreference("this.tabs",t)}})}(jQuery),function(t,e){var i=acf.models.SelectField.extend({type:"post_object"});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.models.SelectField.extend({type:"page_link"});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.models.SelectField.extend({type:"user"});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"taxonomy",data:{ftype:"select"},select2:!1,wait:"load",events:{'click a[data-name="add"]':"onClickAdd",'click input[type="radio"]':"onClickRadio"},$control:function(){return this.$(".acf-taxonomy-field")},$input:function(){return this.getRelatedPrototype().$input.apply(this,arguments)},getRelatedType:function(){var t=this.get("ftype");return"multi_select"==t&&(t="select"),t},getRelatedPrototype:function(){return acf.getFieldType(this.getRelatedType()).prototype},getValue:function(){return this.getRelatedPrototype().getValue.apply(this,arguments)},setValue:function(){return this.getRelatedPrototype().setValue.apply(this,arguments)},initialize:function(){this.getRelatedPrototype().initialize.apply(this,arguments)},onRemove:function(){this.select2&&this.select2.destroy()},onClickAdd:function(e,i){var n=this,a=!1,r=!1,o=!1,s=!1,c=!1,l=!1,u=!1,d=function(){a=acf.newPopup({title:i.attr("title"),loading:!0,width:"300px"});var e={action:"acf/fields/taxonomy/add_term",field_key:n.get("key")};t.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(e),type:"post",dataType:"html",success:f})},f=function(t){a.loading(!1),a.content(t),r=a.$("form"),o=a.$('input[name="term_name"]'),s=a.$('select[name="term_parent"]'),c=a.$(".acf-submit-button"),o.focus(),a.on("submit","form",h)},h=function(e,i){if(e.preventDefault(),e.stopImmediatePropagation(),""===o.val())return o.focus(),!1;acf.startButtonLoading(c);var a={action:"acf/fields/taxonomy/add_term",field_key:n.get("key"),term_name:o.val(),term_parent:s.length?s.val():0};t.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(a),type:"post",dataType:"json",success:p})},p=function(t){acf.stopButtonLoading(c),u&&u.remove(),acf.isAjaxSuccess(t)?(o.val(""),g(t.data), +u=acf.newNotice({type:"success",text:acf.getAjaxMessage(t),target:r,timeout:2e3,dismiss:!1})):u=acf.newNotice({type:"error",text:acf.getAjaxError(t),target:r,timeout:2e3,dismiss:!1}),o.focus()},g=function(e){var i=t('"),a;e.term_parent?s.children('option[value="'+e.term_parent+'"]').after(i):s.append(i),acf.getFields({type:"taxonomy"}).map(function(t){t.get("taxonomy")==n.get("taxonomy")&&t.appendTerm(e)}),n.selectTerm(e.term_id)};d()},appendTerm:function(t){"select"==this.getRelatedType()?this.appendTermSelect(t):this.appendTermCheckbox(t)},appendTermSelect:function(t){this.select2.addOption({id:t.term_id,text:t.term_label})},appendTermCheckbox:function(e){var i=this.$("[name]:first").attr("name"),n=this.$("ul:first");"checkbox"==this.getRelatedType()&&(i+="[]");var a=t(['
                • ',"","
                • "].join(""));if(e.term_parent){var r=n.find('li[data-id="'+e.term_parent+'"]');(n=r.children("ul")).exists()||(n=t('
                    '),r.append(n))}n.append(a)},selectTerm:function(t){var e;"select"==this.getRelatedType()?this.select2.selectOption(t):this.$('input[value="'+t+'"]').prop("checked",!0).trigger("change")},onClickRadio:function(t,e){var i=e.parent("label"),n=i.hasClass("selected");this.$(".selected").removeClass("selected"),i.addClass("selected"),this.get("allow_null")&&n&&(i.removeClass("selected"),e.prop("checked",!1).trigger("change"))}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.models.DatePickerField.extend({type:"time_picker",$control:function(){return this.$(".acf-time-picker")},initialize:function(){var t=this.$input(),e=this.$inputText(),i={timeFormat:this.get("time_format"),altField:t,altFieldTimeOnly:!1,altTimeFormat:"HH:mm:ss",showButtonPanel:!0,controlType:"select",oneLine:!0,closeText:acf.get("dateTimePickerL10n").selectText,timeOnly:!0,onClose:function(t,e,i){var n=e.dpDiv.find(".ui-datepicker-close");!t&&n.is(":hover")&&i._updateDateTime()}};i=acf.applyFilters("time_picker_args",i,this),acf.newTimePicker(e,i),acf.doAction("time_picker_init",e,i,this)}});acf.registerFieldType(i),acf.newTimePicker=function(e,i){if(void 0===t.timepicker)return!1;i=i||{},e.timepicker(i),t("body > #ui-datepicker-div").exists()&&t("body > #ui-datepicker-div").wrap('
                    ')}}(jQuery),function(t,e){var i=acf.Field.extend({type:"true_false",events:{"change .acf-switch-input":"onChange","focus .acf-switch-input":"onFocus","blur .acf-switch-input":"onBlur","keypress .acf-switch-input":"onKeypress"},$input:function(){return this.$('input[type="checkbox"]')},$switch:function(){return this.$(".acf-switch")},getValue:function(){return this.$input().prop("checked")?1:0},initialize:function(){this.render()},render:function(){var t=this.$switch();if(t.length){var e=t.children(".acf-switch-on"),i=t.children(".acf-switch-off"),n=Math.max(e.width(),i.width());n&&(e.css("min-width",n),i.css("min-width",n))}},switchOn:function(){this.$input().prop("checked",!0),this.$switch().addClass("-on")},switchOff:function(){this.$input().prop("checked",!1),this.$switch().removeClass("-on")},onChange:function(t,e){e.prop("checked")?this.switchOn():this.switchOff()},onFocus:function(t,e){this.$switch().addClass("-focus")},onBlur:function(t,e){this.$switch().removeClass("-focus")},onKeypress:function(t,e){return 37===t.keyCode?this.switchOff():39===t.keyCode?this.switchOn():void 0}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"url",events:{'keyup input[type="url"]':"onkeyup"},$control:function(){return this.$(".acf-input-wrap")},$input:function(){return this.$('input[type="url"]')},initialize:function(){this.render()},isValid:function(){var t=this.val();return!!t&&(-1!==t.indexOf("://")||0===t.indexOf("//"))},render:function(){this.isValid()?this.$control().addClass("-valid"):this.$control().removeClass("-valid")},onkeyup:function(t,e){this.render()}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=acf.Field.extend({type:"wysiwyg",wait:"load",events:{"mousedown .acf-editor-wrap.delay":"onMousedown",unmountField:"disableEditor",remountField:"enableEditor",removeField:"disableEditor"},$control:function(){return this.$(".acf-editor-wrap")},$input:function(){return this.$("textarea")},getMode:function(){return this.$control().hasClass("tmce-active")?"visual":"text"},initialize:function(){this.$control().hasClass("delay")||this.initializeEditor()},initializeEditor:function(){var t=this.$control(),e=this.$input(),i={tinymce:!0,quicktags:!0,toolbar:this.get("toolbar"),mode:this.getMode(),field:this},n=e.attr("id"),a=acf.uniqueId("acf-editor-"),r=e.data();acf.rename({target:t,search:n,replace:a,destructive:!0}),this.set("id",a,!0),acf.tinymce.initialize(a,i),this.$input().data(r)},onMousedown:function(t){t.preventDefault();var e=this.$control();e.removeClass("delay"),e.find(".acf-editor-toolbar").remove(),this.initializeEditor()},enableEditor:function(){"visual"==this.getMode()&&acf.tinymce.enable(this.get("id"))},disableEditor:function(){acf.tinymce.destroy(this.get("id"))}});acf.registerFieldType(i)}(jQuery),function(t,e){var i=[];acf.Condition=acf.Model.extend({type:"",operator:"==",label:"",choiceType:"input",fieldTypes:[],data:{conditions:!1,field:!1,rule:{}},events:{change:"change",keyup:"change",enableField:"change",disableField:"change"},setup:function(e){t.extend(this.data,e)},getEventTarget:function(t,e){return t||this.get("field").$el},change:function(t,e){this.get("conditions").change(t)},match:function(t,e){return!1},calculate:function(){return this.match(this.get("rule"),this.get("field"))},choices:function(t){return''}}),acf.newCondition=function(t,e){var i=e.get("field"),n=i.getField(t.field);if(!i||!n)return!1;var a={rule:t,target:i,conditions:e,field:n},r=n.get("type"),o=t.operator,s,c,l;return new(acf.getConditionTypes({fieldType:r,operator:o})[0]||acf.Condition)(a)};var n=function(t){return acf.strPascalCase(t||"")+"Condition"};acf.registerConditionType=function(t){var e,a=t.prototype.type,r=n(a);acf.models[r]=t,i.push(a)},acf.getConditionType=function(t){var e=n(t);return acf.models[e]||!1},acf.registerConditionForFieldType=function(t,e){var i=acf.getConditionType(t);i&&i.prototype.fieldTypes.push(e)},acf.getConditionTypes=function(t){t=acf.parseArgs(t,{fieldType:"",operator:""});var e=[];return i.map(function(i){var n=acf.getConditionType(i),a=n.prototype.fieldTypes,r=n.prototype.operator;t.fieldType&&-1===a.indexOf(t.fieldType)||t.operator&&r!==t.operator||e.push(n)}),e}}(jQuery),function(t,e){var i="conditional_logic",n=new acf.Model({id:"conditionsManager",priority:20,actions:{new_field:"onNewField"},onNewField:function(t){t.has("conditions")&&t.getConditions().render()}}),a=function(t,e){var i=acf.getFields({key:e,sibling:t.$el,suppressFilters:!0});return i.length||(i=acf.getFields({key:e,parent:t.$el.parent(),suppressFilters:!0})),!!i.length&&i[0]};acf.Field.prototype.getField=function(t){var e=a(this,t);if(e)return e;for(var i=this.parents(),n=0;nparseFloat(e)},s=function(t,e){return parseFloat(t)-1},l=function(t,e){return n(t).indexOf(n(e))>-1},u=function(t,e){var i=new RegExp(n(e),"gi");return n(t).match(i)},d=acf.Condition.extend({type:"hasValue",operator:"!=empty",label:i("Has any value"),fieldTypes:["text","textarea","number","range","email","url","password","image","file","wysiwyg","oembed","select","checkbox","radio","button_group","link","post_object","page_link","relationship","taxonomy","user","google_map","date_picker","date_time_picker","time_picker","color_picker"],match:function(t,e){return!!e.val()},choices:function(t){return''}});acf.registerConditionType(d);var f=d.extend({type:"hasNoValue",operator:"==empty",label:i("Has no value"),match:function(t,e){return!d.prototype.match.apply(this,arguments)}});acf.registerConditionType(f);var h=acf.Condition.extend({type:"equalTo",operator:"==",label:i("Value is equal to"),fieldTypes:["text","textarea","number","range","email","url","password"],match:function(e,i){return t.isNumeric(e.value)?r(e.value,i.val()):a(e.value,i.val())},choices:function(t){return''}});acf.registerConditionType(h);var p=h.extend({type:"notEqualTo",operator:"!=",label:i("Value is not equal to"),match:function(t,e){return!h.prototype.match.apply(this,arguments)}});acf.registerConditionType(p);var g=acf.Condition.extend({type:"patternMatch",operator:"==pattern",label:i("Value matches pattern"),fieldTypes:["text","textarea","email","url","password","wysiwyg"],match:function(t,e){return u(e.val(),t.value)},choices:function(t){return''}});acf.registerConditionType(g);var m=acf.Condition.extend({type:"contains",operator:"==contains",label:i("Value contains"),fieldTypes:["text","textarea","number","email","url","password","wysiwyg","oembed","select"],match:function(t,e){return l(e.val(),t.value)},choices:function(t){return''}});acf.registerConditionType(m);var v=h.extend({type:"trueFalseEqualTo",choiceType:"select",fieldTypes:["true_false"],choices:function(t){return[{id:1,text:i("Checked")}]}});acf.registerConditionType(v);var y=p.extend({type:"trueFalseNotEqualTo",choiceType:"select",fieldTypes:["true_false"],choices:function(t){return[{id:1,text:i("Checked")}]}});acf.registerConditionType(y);var b=acf.Condition.extend({type:"selectEqualTo",operator:"==",label:i("Value is equal to"),fieldTypes:["select","checkbox","radio","button_group"],match:function(t,e){var i=e.val();return i instanceof Array?c(t.value,i):a(t.value,i)},choices:function(e){var n=[],a=e.$setting("choices textarea").val().split("\n");return e.$input("allow_null").prop("checked")&&n.push({id:"",text:i("Null")}),a.map(function(e){(e=e.split(":"))[1]=e[1]||e[0],n.push({id:t.trim(e[0]),text:t.trim(e[1])})}),n}});acf.registerConditionType(b);var w=b.extend({type:"selectNotEqualTo",operator:"!=",label:i("Value is not equal to"),match:function(t,e){return!b.prototype.match.apply(this,arguments)}});acf.registerConditionType(w);var x=acf.Condition.extend({type:"greaterThan",operator:">",label:i("Value is greater than"),fieldTypes:["number","range"],match:function(t,e){var i=e.val();return i instanceof Array&&(i=i.length),o(i,t.value)},choices:function(t){return''}});acf.registerConditionType(x);var _=x.extend({type:"lessThan",operator:"<",label:i("Value is less than"),match:function(t,e){var i=e.val();return i instanceof Array&&(i=i.length),s(i,t.value)},choices:function(t){return''}});acf.registerConditionType(_);var $=x.extend({type:"selectionGreaterThan",label:i("Selection is greater than"),fieldTypes:["checkbox","select","post_object","page_link","relationship","taxonomy","user"]});acf.registerConditionType($);var k=_.extend({type:"selectionLessThan",label:i("Selection is less than"),fieldTypes:["checkbox","select","post_object","page_link","relationship","taxonomy","user"]});acf.registerConditionType(k)}(jQuery),function(t,e){acf.newMediaPopup=function(t){var e=null,t=acf.parseArgs(t,{mode:"select",title:"",button:"",type:"",field:!1,allowedTypes:"",library:"all",multiple:!1,attachment:0,autoOpen:!0,open:function(){},select:function(){},close:function(){}});return e="edit"==t.mode?new acf.models.EditMediaPopup(t):new acf.models.SelectMediaPopup(t),t.autoOpen&&setTimeout(function(){e.open()},1),acf.doAction("new_media_popup",e),e};var i=function(){var e=acf.get("post_id");return t.isNumeric(e)?e:0};acf.getMimeTypes=function(){return this.get("mimeTypes")},acf.getMimeType=function(t){var e=acf.getMimeTypes();if(void 0!==e[t])return e[t];for(var i in e)if(-1!==i.indexOf(t))return e[i];return!1};var n=acf.Model.extend({id:"MediaPopup",data:{},defaults:{},frame:!1,setup:function(e){t.extend(this.data,e)},initialize:function(){var t=this.getFrameOptions();this.addFrameStates(t);var e=wp.media(t);e.acf=this,this.addFrameEvents(e,t),this.frame=e},open:function(){this.frame.open()},close:function(){this.frame.close()},remove:function(){this.frame.detach(),this.frame.remove()},getFrameOptions:function(){var t={title:this.get("title"),multiple:this.get("multiple"),library:{},states:[]};return this.get("type")&&(t.library.type=this.get("type")),"uploadedTo"===this.get("library")&&(t.library.uploadedTo=i()),this.get("attachment")&&(t.library.post__in=[this.get("attachment")]),this.get("button")&&(t.button={text:this.get("button")}),t},addFrameStates:function(t){var e=wp.media.query(t.library);this.get("field")&&acf.isset(e,"mirroring","args")&&(e.mirroring.args._acfuploader=this.get("field")),t.states.push(new wp.media.controller.Library({library:e,multiple:this.get("multiple"),title:this.get("title"),priority:20,filterable:"all",editable:!0,allowLocalEdits:!0})),acf.isset(wp,"media","controller","EditImage")&&t.states.push(new wp.media.controller.EditImage)},addFrameEvents:function(t,e){t.on("open",function(){this.$el.closest(".media-modal").addClass("acf-media-modal -"+this.acf.get("mode"))},t),t.on("content:render:edit-image",function(){var t=this.state().get("image"),e=new wp.media.view.EditImage({model:t,controller:this}).render();this.content.set(e),e.loadEditor()},t),t.on("select",function(){var e=t.state().get("selection");e&&e.each(function(e,i){t.acf.get("select").apply(t.acf,[e,i])})}),t.on("close",function(){setTimeout(function(){t.acf.get("close").apply(t.acf),t.acf.remove()},1)})}});acf.models.SelectMediaPopup=n.extend({id:"SelectMediaPopup",setup:function(t){t.button||(t.button=acf._x("Select","verb")),n.prototype.setup.apply(this,arguments)},addFrameEvents:function(t,e){acf.isset(_wpPluploadSettings,"defaults","multipart_params")&&(_wpPluploadSettings.defaults.multipart_params._acfuploader=this.get("field"),t.on("open",function(){delete _wpPluploadSettings.defaults.multipart_params._acfuploader})),t.on("content:activate:browse",function(){var e=!1;try{e=t.content.get().toolbar}catch(t){return void console.log(t)}t.acf.customizeFilters.apply(t.acf,[e])}),n.prototype.addFrameEvents.apply(this,arguments)},customizeFilters:function(e){var i=e.get("filters"),n;("image"==this.get("type")&&(i.filters.all.text=acf.__("All images"),delete i.filters.audio,delete i.filters.video,delete i.filters.image,t.each(i.filters,function(t,e){e.props.type=e.props.type||"image"})),this.get("allowedTypes"))&&this.get("allowedTypes").split(" ").join("").split(".").join("").split(",").map(function(t){var e=acf.getMimeType(t);if(e){var n={text:e,props:{status:null,type:e,uploadedTo:null,orderby:"date",order:"DESC"},priority:20};i.filters[e]=n}});if("uploadedTo"===this.get("library")){var a=this.frame.options.library.uploadedTo;delete i.filters.unattached,delete i.filters.uploaded,t.each(i.filters,function(t,e){e.text+=" ("+acf.__("Uploaded to this post")+")",e.props.uploadedTo=a})}var r=this.get("field"),o;t.each(i.filters,function(t,e){e.props._acfuploader=r}),e.get("search").model.attributes._acfuploader=r,i.renderFilters&&i.renderFilters()}}),acf.models.EditMediaPopup=n.extend({id:"SelectMediaPopup",setup:function(t){t.button||(t.button=acf._x("Update","verb")),n.prototype.setup.apply(this,arguments)},addFrameEvents:function(t,e){t.on("open",function(){this.$el.closest(".media-modal").addClass("acf-expanded"),"browse"!=this.content.mode()&&this.content.mode("browse");var e,i=this.state().get("selection"),n=wp.media.attachment(t.acf.get("attachment"));i.add(n)},t),n.prototype.addFrameEvents.apply(this,arguments)}});var a=new acf.Model({id:"customizePrototypes",wait:"ready",initialize:function(){if(acf.isset(window,"wp","media","view")){var t=i();t&&acf.isset(wp,"media","view","settings","post")&&(wp.media.view.settings.post.id=t),this.customizeAttachmentsButton(),this.customizeAttachmentsRouter(),this.customizeAttachmentFilters(),this.customizeAttachmentCompat(),this.customizeAttachmentLibrary()}},customizeAttachmentsButton:function(){if(acf.isset(wp,"media","view","Button")){var t=wp.media.view.Button;wp.media.view.Button=t.extend({initialize:function(){var t=_.defaults(this.options,this.defaults);this.model=new Backbone.Model(t),this.listenTo(this.model,"change",this.render)}})}},customizeAttachmentsRouter:function(){if(acf.isset(wp,"media","view","Router")){var e=wp.media.view.Router;wp.media.view.Router=e.extend({addExpand:function(){var e=t(['',''+acf.__("Expand Details")+"",''+acf.__("Collapse Details")+"",""].join(""));e.on("click",function(e){e.preventDefault();var i=t(this).closest(".media-modal");i.hasClass("acf-expanded")?i.removeClass("acf-expanded"):i.addClass("acf-expanded")}),this.$el.append(e)},initialize:function(){return e.prototype.initialize.apply(this,arguments),this.addExpand(),this}})}},customizeAttachmentFilters:function(){var e;acf.isset(wp,"media","view","AttachmentFilters","All")&&(wp.media.view.AttachmentFilters.All.prototype.renderFilters=function(){this.$el.html(_.chain(this.filters).map(function(e,i){return{el:t("").val(i).html(e.text)[0],priority:e.priority||50}},this).sortBy("priority").pluck("el").value())})},customizeAttachmentCompat:function(){if(acf.isset(wp,"media","view","AttachmentCompat")){var e=wp.media.view.AttachmentCompat,i=!1;wp.media.view.AttachmentCompat=e.extend({render:function(){return this.rendered?this:(e.prototype.render.apply(this,arguments),this.$("#acf-form-data").length?(clearTimeout(i),i=setTimeout(t.proxy(function(){this.rendered=!0,acf.doAction("append",this.$el)},this),50),this):this)},save:function(t){var e={};t&&t.preventDefault(),e=acf.serializeForAjax(this.$el),this.controller.trigger("attachment:compat:waiting",["waiting"]),this.model.saveCompat(e).always(_.bind(this.postSave,this))}})}},customizeAttachmentLibrary:function(){if(acf.isset(wp,"media","view","Attachment","Library")){var t=wp.media.view.Attachment.Library;wp.media.view.Attachment.Library=t.extend({render:function(){var e=acf.isget(this,"controller","acf"),i=acf.isget(this,"model","attributes");if(e&&i){i.acf_errors&&this.$el.addClass("acf-disabled");var n=e.get("selected");n&&n.indexOf(i.id)>-1&&this.$el.addClass("acf-selected")}return t.prototype.render.apply(this,arguments)},toggleSelection:function(e){var i=this.collection,n=this.options.selection,a=this.model,r=n.single(),o=this.controller,s=acf.isget(this,"model","attributes","acf_errors"),c=o.$el.find(".media-frame-content .media-sidebar");if(c.children(".acf-selection-error").remove(),c.children().removeClass("acf-hidden"),o&&s){var l=acf.isget(this,"model","attributes","filename");return c.children().addClass("acf-hidden"),c.prepend(['
                    ',''+acf.__("Restricted")+"",''+l+"",''+s+"","
                    "].join("")),n.reset(),void n.single(a)}return t.prototype.toggleSelection.apply(this,arguments)}})}}})}(jQuery),function(t,e){acf.screen=new acf.Model({active:!0,xhr:!1,timeout:!1,wait:"load",events:{"change #page_template":"onChange","change #parent_id":"onChange","change #post-formats-select":"onChange","change .categorychecklist":"onChange","change .tagsdiv":"onChange",'change .acf-taxonomy-field[data-save="1"]':"onChange","change #product-type":"onChange"},isPost:function(){return"post"===acf.get("screen")},isUser:function(){return"user"===acf.get("screen")},isTaxonomy:function(){return"taxonomy"===acf.get("screen")},isAttachment:function(){return"attachment"===acf.get("screen")},isNavMenu:function(){return"nav_menu"===acf.get("screen")},isWidget:function(){return"widget"===acf.get("screen")},isComment:function(){return"comment"===acf.get("screen")},getPageTemplate:function(){var e=t("#page_template");return e.length?e.val():null},getPageParent:function(e,i){var i;return(i=t("#parent_id")).length?i.val():null},getPageType:function(t,e){return this.getPageParent()?"child":"parent"},getPostType:function(){return t("#post_type").val()},getPostFormat:function(e,i){var i;if((i=t("#post-formats-select input:checked")).length){var n=i.val();return"0"==n?"standard":n}return null},getPostCoreTerms:function(){var e={},i=acf.serialize(t(".categorydiv, .tagsdiv"));for(var n in i.tax_input&&(e=i.tax_input),i.post_category&&(e.category=i.post_category),e)acf.isArray(e[n])||(e[n]=e[n].split(/,[\s]?/));return e},getPostTerms:function(){var t=this.getPostCoreTerms();for(var e in acf.getFields({type:"taxonomy"}).map(function(e){if(e.get("save")){var i=e.val(),n=e.get("taxonomy");i&&(t[n]=t[n]||[],i=acf.isArray(i)?i:[i],t[n]=t[n].concat(i))}}),null!==(productType=this.getProductType())&&(t.product_type=[productType]),t)t[e]=acf.uniqueArray(t[e]);return t},getProductType:function(){var e=t("#product-type");return e.length?e.val():null},check:function(){if("post"===acf.get("screen")){this.xhr&&this.xhr.abort();var e=acf.parseArgs(this.data,{action:"acf/ajax/check_screen",screen:acf.get("screen"),exists:[]});this.isPost()&&(e.post_id=acf.get("post_id")),null!==(postType=this.getPostType())&&(e.post_type=postType),null!==(pageTemplate=this.getPageTemplate())&&(e.page_template=pageTemplate),null!==(pageParent=this.getPageParent())&&(e.page_parent=pageParent),null!==(pageType=this.getPageType())&&(e.page_type=pageType),null!==(postFormat=this.getPostFormat())&&(e.post_format=postFormat),null!==(postTerms=this.getPostTerms())&&(e.post_terms=postTerms),acf.getPostboxes().map(function(t){e.exists.push(t.get("key"))}),e=acf.applyFilters("check_screen_args",e);var i=function(t){acf.isAjaxSuccess(t)&&("post"==acf.get("screen")?this.renderPostScreen(t.data):"user"==acf.get("screen")&&this.renderUserScreen(t.data)),acf.doAction("check_screen_complete",t.data,e)};this.xhr=t.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(e),type:"post",dataType:"json",context:this,success:i})}},onChange:function(t,e){this.setTimeout(this.check,1)},renderPostScreen:function(e){var i=[],n=function(e,i){var n=t._data(e[0]).events;for(var a in n)for(var r=0;r=0;a--)if(t("#"+i[a]).length)return t("#"+i[a]).after(t("#"+e));for(var a=n+1;a','",'

                    ',""+r.title+"","

                    ",'
                    ',r.html,"
                    ","
                    "].join(""));if(t("#adv-settings").length){var l=t("#adv-settings .metabox-prefs"),u=t(['"].join(""));n(l.find("input").first(),u.find("input")),l.append(u)}"side"===r.position?t("#"+r.position+"-sortables").append(c):t("#"+r.position+"-sortables").prepend(c);var d=[];if(e.results.map(function(e){r.position===e.position&&t("#"+r.position+"-sortables #"+e.id).length&&d.push(e.id)}),a(r.id,d),e.sorted)for(var f in e.sorted){var d=e.sorted[f].split(",");if(a(r.id,d))break}var h=t("#submitdiv");t("#submitdiv").length&&(n(h.children(".handlediv"),c.children(".handlediv")),n(h.children(".hndle"),c.children(".hndle"))),s=acf.newPostbox(r),acf.doAction("append",c),acf.doAction("append_postbox",s)}s.showEnable(),acf.doAction("show_postbox",s),i.push(r.id)}),acf.getPostboxes().map(function(t){-1===i.indexOf(t.get("id"))&&(t.hideDisable(),acf.doAction("hide_postbox",t))}),t("#acf-style").html(e.style)},renderUserScreen:function(t){}});var i=new acf.Model({wait:"load",initialize:function(){acf.isGutenberg()&&(wp.data.subscribe(this.proxy(this.onChange)),acf.screen.getPageTemplate=this.getPageTemplate,acf.screen.getPageParent=this.getPageParent,acf.screen.getPostType=this.getPostType,acf.screen.getPostFormat=this.getPostFormat,acf.screen.getPostCoreTerms=this.getPostCoreTerms,acf.unload.disable())},onChange:function(){var t=wp.data.select("core/editor").getPostEdits(),e=["template","parent","format"],i;(wp.data.select("core").getTaxonomies()||[]).map(function(t){e.push(t.rest_base)}),(e=e.filter(this.proxy(function(e){return void 0!==t[e]&&t[e]!==this.get(e)}))).length&&this.triggerChange(t)},triggerChange:function(t){void 0!==t&&(this.data=t),acf.screen.check()},getPageTemplate:function(){return wp.data.select("core/editor").getEditedPostAttribute("template")},getPageParent:function(t,e){return wp.data.select("core/editor").getEditedPostAttribute("parent")},getPostType:function(){return wp.data.select("core/editor").getEditedPostAttribute("type")},getPostFormat:function(t,e){return wp.data.select("core/editor").getEditedPostAttribute("format")},getPostCoreTerms:function(){var t={},e;return(wp.data.select("core").getTaxonomies()||[]).map(function(e){var i=wp.data.select("core/editor").getEditedPostAttribute(e.rest_base);i&&(t[e.slug]=i)}),t}});acf.screen.refreshAvailableMetaBoxesPerLocation=function(){var t=wp.data.select("core/edit-post"),e=wp.data.dispatch("core/edit-post"),i={};t.getActiveMetaBoxLocations().map(function(e){i[e]=t.getMetaBoxesPerLocation(e)});var n=[];for(var a in i)n=n.concat(i[a].map(function(t){return t.id}));acf.getPostboxes().map(function(t){if(-1===n.indexOf(t.get("id"))){var e=t.$el.closest("form").attr("class").replace("metabox-location-","");i[e]=i[e]||[],i[e].push({id:t.get("id"),title:t.get("title")})}}),e.setAvailableMetaBoxesPerLocation(i)}}(jQuery),function(t,e){function i(){return acf.isset(window,"jQuery","fn","select2","amd")?4:!!acf.isset(window,"Select2")&&3}acf.newSelect2=function(t,e){if(e=acf.parseArgs(e,{allowNull:!1,placeholder:"",multiple:!1,field:!1,ajax:!1,ajaxAction:"",ajaxData:function(t){return t},ajaxResults:function(t){return t}}),4==i())var n=new a(t,e);else var n=new r(t,e);return acf.doAction("new_select2",n),n};var n=acf.Model.extend({setup:function(e,i){t.extend(this.data,i),this.$el=e},initialize:function(){},selectOption:function(t){var e=this.getOption(t);e.prop("selected")||e.prop("selected",!0).trigger("change")},unselectOption:function(t){var e=this.getOption(t);e.prop("selected")&&e.prop("selected",!1).trigger("change")},getOption:function(t){return this.$('option[value="'+t+'"]')},addOption:function(e){e=acf.parseArgs(e,{id:"",text:"",selected:!1});var i=this.getOption(e.id);return i.length||((i=t("")).html(e.text),i.attr("value",e.id),i.prop("selected",e.selected),this.$el.append(i)),i},getValue:function(){var e=[],i=this.$el.find("option:selected");return i.exists()?((i=i.sort(function(t,e){return+t.getAttribute("data-i")-+e.getAttribute("data-i")})).each(function(){var i=t(this);e.push({$el:i,id:i.attr("value"),text:i.text()})}),e):e},mergeOptions:function(){},getChoices:function(){var e=function(i){var n=[];return i.children().each(function(){var i=t(this);i.is("optgroup")?n.push({text:i.attr("label"),children:e(i)}):n.push({id:i.attr("value"),text:i.text()})}),n};return e(this.$el)},decodeChoices:function(t){var e=function(t){return t.map(function(t){return t.text=acf.decode(t.text),t.children&&(t.children=e(t.children)),t}),t};return e(t)},getAjaxData:function(t){var e={action:this.get("ajaxAction"),s:t.term||"",paged:t.page||1},i=this.get("field");i&&(e.field_key=i.get("key"));var n=this.get("ajaxData");return n&&(e=n.apply(this,[e,t])),e=acf.applyFilters("select2_ajax_data",e,this.data,this.$el,i||!1,this),acf.prepareForAjax(e)},getAjaxResults:function(t,e){(t=acf.parseArgs(t,{results:!1,more:!1})).results&&(t.results=this.decodeChoices(t.results));var i=this.get("ajaxResults");return i&&(t=i.apply(this,[t,e])),t=acf.applyFilters("select2_ajax_results",t,e,this)},processAjaxResults:function(e,i){var e;return(e=this.getAjaxResults(e,i)).more&&(e.pagination={more:!0}),setTimeout(t.proxy(this.mergeOptions,this),1),e},destroy:function(){this.$el.data("select2")&&this.$el.select2("destroy"),this.$el.siblings(".select2-container").remove()}}),a=n.extend({initialize:function(){var e=this.$el,i={width:"100%",allowClear:this.get("allowNull"),placeholder:this.get("placeholder"),multiple:this.get("multiple"),data:[],escapeMarkup:function(t){return t}};i.multiple&&this.getValue().map(function(t){t.$el.detach().appendTo(e)}),e.removeData("ajax"),e.removeAttr("data-ajax"),this.get("ajax")&&(i.ajax={url:acf.get("ajaxurl"),delay:250,dataType:"json",type:"post",cache:!1,data:t.proxy(this.getAjaxData,this),processResults:t.proxy(this.processAjaxResults,this)});var n=this.get("field");i=acf.applyFilters("select2_args",i,e,this.data,n||!1,this),e.select2(i);var a=e.next(".select2-container");if(i.multiple){var r=a.find("ul");r.sortable({stop:function(i){r.find(".select2-selection__choice").each(function(){var i;t(t(this).data("data").element).detach().appendTo(e)}),e.trigger("change")}}),e.on("select2:select",this.proxy(function(t){this.getOption(t.params.data.id).detach().appendTo(this.$el)}))}a.addClass("-acf"),acf.doAction("select2_init",e,i,this.data,n||!1,this)},mergeOptions:function(){var e=!1,i=!1;t('.select2-results__option[role="group"]').each(function(){var n=t(this).children("ul"),a=t(this).children("strong");if(i&&i.text()===a.text())return e.append(n.children()),void t(this).remove();e=n,i=a})}}),r=n.extend({initialize:function(){var e=this.$el,i=this.getValue(),n=this.get("multiple"),a={width:"100%",allowClear:this.get("allowNull"),placeholder:this.get("placeholder"),separator:"||",multiple:this.get("multiple"),data:this.getChoices(),escapeMarkup:function(t){return t},dropdownCss:{"z-index":"999999999"}, +initSelection:function(t,e){e(n?i:i.shift())}},r=e.siblings("input");r.length||(r=t(''),e.before(r)),inputValue=i.map(function(t){return t.id}).join("||"),r.val(inputValue),a.multiple&&i.map(function(t){t.$el.detach().appendTo(e)}),a.allowClear&&(a.data=a.data.filter(function(t){return""!==t.id})),e.removeData("ajax"),e.removeAttr("data-ajax"),this.get("ajax")&&(a.ajax={url:acf.get("ajaxurl"),quietMillis:250,dataType:"json",type:"post",cache:!1,data:t.proxy(this.getAjaxData,this),results:t.proxy(this.processAjaxResults,this)});var o=this.get("field");a=acf.applyFilters("select2_args",a,e,this.data,o||!1,this),r.select2(a);var s=r.select2("container"),c=t.proxy(this.getOption,this);if(a.multiple){var l=s.find("ul");l.sortable({stop:function(){l.find(".select2-search-choice").each(function(){var i=t(this).data("select2Data"),n;c(i.id).detach().appendTo(e)}),e.trigger("change")}})}r.on("select2-selecting",function(i){var n=i.choice,a=c(n.id);a.length||(a=t('")),a.detach().appendTo(e)}),s.addClass("-acf"),acf.doAction("select2_init",e,a,this.data,o||!1,this),r.on("change",function(){var t=r.val();t.indexOf("||")&&(t=t.split("||")),e.val(t).trigger("change")}),e.hide()},mergeOptions:function(){var e=!1,i=!1;t("#select2-drop .select2-result-with-children").each(function(){var n=t(this).children("ul"),a=t(this).children(".select2-result-label");if(i&&i.text()===a.text())return i.append(n.children()),void t(this).remove();e=n,i=a})},getAjaxData:function(t,e){var i={term:t,page:e};return n.prototype.getAjaxData.apply(this,[i])}}),o=new acf.Model({priority:5,wait:"prepare",initialize:function(){var t=acf.get("locale"),e=acf.get("rtl"),n=acf.get("select2L10n"),a=i();return!!n&&(0!==t.indexOf("en")&&void(4==a?this.addTranslations4():3==a&&this.addTranslations3()))},addTranslations4:function(){var t=acf.get("select2L10n"),e=acf.get("locale");e=e.replace("_","-");var i={errorLoading:function(){return t.load_fail},inputTooLong:function(e){var i=e.input.length-e.maximum;return i>1?t.input_too_long_n.replace("%d",i):t.input_too_long_1},inputTooShort:function(e){var i=e.minimum-e.input.length;return i>1?t.input_too_short_n.replace("%d",i):t.input_too_short_1},loadingMore:function(){return t.load_more},maximumSelected:function(e){var i=e.maximum;return i>1?t.selection_too_long_n.replace("%d",i):t.selection_too_long_1},noResults:function(){return t.matches_0},searching:function(){return t.searching}};jQuery.fn.select2.amd.define("select2/i18n/"+e,[],function(){return i})},addTranslations3:function(){var e=acf.get("select2L10n"),i=acf.get("locale");i=i.replace("_","-");var n={formatMatches:function(t){return t>1?e.matches_n.replace("%d",t):e.matches_1},formatNoMatches:function(){return e.matches_0},formatAjaxError:function(){return e.load_fail},formatInputTooShort:function(t,i){var n=i-t.length;return n>1?e.input_too_short_n.replace("%d",n):e.input_too_short_1},formatInputTooLong:function(t,i){var n=t.length-i;return n>1?e.input_too_long_n.replace("%d",n):e.input_too_long_1},formatSelectionTooBig:function(t){return t>1?e.selection_too_long_n.replace("%d",t):e.selection_too_long_1},formatLoadMore:function(){return e.load_more},formatSearching:function(){return e.searching}};t.fn.select2.locales=t.fn.select2.locales||{},t.fn.select2.locales[i]=n,t.extend(t.fn.select2.defaults,n)}})}(jQuery),function(t,e){acf.tinymce={defaults:function(){return"undefined"!=typeof tinyMCEPreInit&&{tinymce:tinyMCEPreInit.mceInit.acf_content,quicktags:tinyMCEPreInit.qtInit.acf_content};var t},initialize:function(t,e){(e=acf.parseArgs(e,{tinymce:!0,quicktags:!0,toolbar:"full",mode:"visual",field:!1})).tinymce&&this.initializeTinymce(t,e),e.quicktags&&this.initializeQuicktags(t,e)},initializeTinymce:function(e,i){var n=t("#"+e),a=this.defaults(),r=acf.get("toolbars"),o=i.field||!1,s=o.$el||!1;if("undefined"==typeof tinymce)return!1;if(!a)return!1;if(tinymce.get(e))return this.enable(e);var c=t.extend({},a.tinymce,i.tinymce);c.id=e,c.selector="#"+e;var l=i.toolbar;if(l&&r&&r[l])for(var u=1;u<=4;u++)c["toolbar"+u]=r[l][u]||"";if(c.setup=function(t){t.on("change",function(e){t.save(),n.trigger("change")}),t.on("mouseup",function(t){var e=new MouseEvent("mouseup");window.dispatchEvent(e)})},c.wp_autoresize_on=!1,c.tadv_noautop||(c.wpautop=!0),c=acf.applyFilters("wysiwyg_tinymce_settings",c,e,o),tinyMCEPreInit.mceInit[e]=c,"visual"==i.mode){var d=tinymce.init(c),f=tinymce.get(e);if(!f)return!1;f.acf=i.field,acf.doAction("wysiwyg_tinymce_init",f,f.id,c,o)}},initializeQuicktags:function(e,i){var n=this.defaults();if("undefined"==typeof quicktags)return!1;if(!n)return!1;var a=t.extend({},n.quicktags,i.quicktags);a.id=e;var r=i.field||!1,o=r.$el||!1;a=acf.applyFilters("wysiwyg_quicktags_settings",a,a.id,r),tinyMCEPreInit.qtInit[e]=a;var s=quicktags(a);if(!s)return!1;this.buildQuicktags(s),acf.doAction("wysiwyg_quicktags_init",s,s.id,a,r)},buildQuicktags:function(t){var e,i,n,a,r,t,o,s,c,l,u=",strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,";for(s in e=t.canvas,i=t.name,n=t.settings,r="",a={},c="",l=t.id,n.buttons&&(c=","+n.buttons+","),edButtons)edButtons[s]&&(o=edButtons[s].id,c&&-1!==u.indexOf(","+o+",")&&-1===c.indexOf(","+o+",")||edButtons[s].instance&&edButtons[s].instance!==l||(a[o]=edButtons[s],edButtons[s].html&&(r+=edButtons[s].html(i+"_"))));c&&-1!==c.indexOf(",dfw,")&&(a.dfw=new QTags.DFWButton,r+=a.dfw.html(i+"_")),"rtl"===document.getElementsByTagName("html")[0].dir&&(a.textdirection=new QTags.TextDirectionButton,r+=a.textdirection.html(i+"_")),t.toolbar.innerHTML=r,t.theButtons=a,"undefined"!=typeof jQuery&&jQuery(document).triggerHandler("quicktags-init",[t])},disable:function(t){this.destroyTinymce(t)},remove:function(t){this.destroyTinymce(t)},destroy:function(t){this.destroyTinymce(t)},destroyTinymce:function(t){if("undefined"==typeof tinymce)return!1;var e=tinymce.get(t);return!!e&&(e.save(),e.destroy(),!0)},enable:function(t){this.enableTinymce(t)},enableTinymce:function(t){return"undefined"!=typeof switchEditors&&(void 0!==tinyMCEPreInit.mceInit[t]&&(switchEditors.go(t,"tmce"),!0))}};var i=new acf.Model({priority:5,actions:{prepare:"onPrepare",ready:"onReady"},onPrepare:function(){var e=t("#acf-hidden-wp-editor");e.exists()&&e.appendTo("body")},onReady:function(){acf.isset(window,"wp","oldEditor")&&(wp.editor.autop=wp.oldEditor.autop,wp.editor.removep=wp.oldEditor.removep),acf.isset(window,"tinymce","on")&&tinymce.on("AddEditor",function(t){var e=t.editor;"acf"===e.id.substr(0,3)&&(e=tinymce.editors.content||e,tinymce.activeEditor=e,wpActiveEditor=e.id)})}})}(jQuery),function(t,e){var i=acf.Model.extend({id:"Validator",data:{errors:[],notice:null,status:""},events:{"changed:status":"onChangeStatus"},addErrors:function(t){t.map(this.addError,this)},addError:function(t){this.data.errors.push(t)},hasErrors:function(){return this.data.errors.length},clearErrors:function(){return this.data.errors=[]},getErrors:function(){return this.data.errors},getFieldErrors:function(){var t=[],e=[];return this.getErrors().map(function(i){if(i.input){var n=e.indexOf(i.input);n>-1?t[n]=i:(t.push(i),e.push(i.input))}}),t},getGlobalErrors:function(){return this.getErrors().filter(function(t){return!t.input})},showErrors:function(){if(this.hasErrors()){var e=this.getFieldErrors(),i=this.getGlobalErrors(),n=0,a=!1;e.map(function(t){var e=this.$('[name="'+t.input+'"]').first();if(e.length||(e=this.$('[name^="'+t.input+'"]').first()),e.length){n++;var i=acf.getClosestField(e);i.showError(t.message),a||(a=i.$el)}},this);var r=acf.__("Validation failed");if(i.map(function(t){r+=". "+t.message}),1==n?r+=". "+acf.__("1 field requires attention"):n>1&&(r+=". "+acf.__("%d fields require attention").replace("%d",n)),this.has("notice"))this.get("notice").update({type:"error",text:r});else{var o=acf.newNotice({type:"error",text:r,target:this.$el});this.set("notice",o)}a||(a=this.get("notice").$el),setTimeout(function(){t("html, body").animate({scrollTop:a.offset().top-t(window).height()/2},500)},10)}},onChangeStatus:function(t,e,i,n){this.$el.removeClass("is-"+n).addClass("is-"+i)},validate:function(e){if(e=acf.parseArgs(e,{event:!1,reset:!1,loading:function(){},complete:function(){},failure:function(){},success:function(t){t.submit()}}),"valid"==this.get("status"))return!0;if("validating"==this.get("status"))return!1;if(!this.$(".acf-field").length)return!0;if(e.event){var i=t.Event(null,e.event);e.success=function(){acf.enableSubmit(t(i.target)).trigger(i)}}acf.doAction("validation_begin",this.$el),acf.lockForm(this.$el),e.loading(this.$el,this),this.set("status","validating");var n=function(t){if(acf.isAjaxSuccess(t)){var e=acf.applyFilters("validation_complete",t.data,this.$el,this);e.valid||this.addErrors(e.errors)}},a=function(){acf.unlockForm(this.$el),this.hasErrors()?(this.set("status","invalid"),acf.doAction("validation_failure",this.$el,this),this.showErrors(),e.failure(this.$el,this)):(this.set("status","valid"),this.has("notice")&&this.get("notice").update({type:"success",text:acf.__("Validation successful"),timeout:1e3}),acf.doAction("validation_success",this.$el,this),acf.doAction("submit",this.$el),e.success(this.$el,this),acf.lockForm(this.$el),e.reset&&this.reset()),e.complete(this.$el,this),this.clearErrors()},r=acf.serialize(this.$el);return r.action="acf/validate_save_post",t.ajax({url:acf.get("ajaxurl"),data:acf.prepareForAjax(r),type:"post",dataType:"json",context:this,success:n,complete:a}),!1},setup:function(t){this.$el=t},reset:function(){this.set("errors",[]),this.set("notice",null),this.set("status",""),acf.unlockForm(this.$el)}}),n=function(t){var e=t.data("acf");return e||(e=new i(t)),e};acf.validateForm=function(t){return n(t.form).validate(t)},acf.enableSubmit=function(t){return t.removeClass("disabled")},acf.disableSubmit=function(t){return t.addClass("disabled")},acf.showSpinner=function(t){return t.addClass("is-active"),t.css("display","inline-block"),t},acf.hideSpinner=function(t){return t.removeClass("is-active"),t.css("display","none"),t},acf.lockForm=function(t){var e=a(t),i=e.find('.button, [type="submit"]'),n=e.find(".spinner, .acf-spinner");return acf.hideSpinner(n),acf.disableSubmit(i),acf.showSpinner(n.last()),t},acf.unlockForm=function(t){var e=a(t),i=e.find('.button, [type="submit"]'),n=e.find(".spinner, .acf-spinner");return acf.enableSubmit(i),acf.hideSpinner(n),t};var a=function(t){var e,e,e,e;return(e=t.find("#submitdiv")).length?e:(e=t.find("#submitpost")).length?e:(e=t.find("p.submit").last()).length?e:(e=t.find(".acf-form-submit")).length?e:t};acf.validation=new acf.Model({id:"validation",active:!0,wait:"prepare",actions:{ready:"addInputEvents",append:"addInputEvents"},events:{'click input[type="submit"]':"onClickSubmit",'click button[type="submit"]':"onClickSubmit","click #save-post":"onClickSave","submit form#post":"onSubmitPost","submit form":"onSubmit"},initialize:function(){acf.get("validation")||(this.active=!1,this.actions={},this.events={})},enable:function(){this.active=!0},disable:function(){this.active=!1},reset:function(t){n(t).reset()},addInputEvents:function(e){var i=t(".acf-field [name]",e);i.length&&this.on(i,"invalid","onInvalid")},onInvalid:function(t,e){t.preventDefault();var i=e.closest("form");i.length&&(n(i).addError({input:e.attr("name"),message:t.target.validationMessage}),i.submit())},onClickSubmit:function(t,e){this.set("originalEvent",t)},onClickSave:function(t,e){this.set("ignore",!0)},onClickSubmitGutenberg:function(e,i){var n;acf.validateForm({form:t("#editor"),event:e,reset:!0,failure:function(t,e){var i=e.get("notice").$el;i.appendTo(".components-notice-list"),i.find(".acf-notice-dismiss").removeClass("small")}})||(e.preventDefault(),e.stopImmediatePropagation())},onSubmitPost:function(e,i){"dopreview"===t("input#wp-preview").val()&&(this.set("ignore",!0),acf.unlockForm(i))},onSubmit:function(t,e){if(!this.active||this.get("ignore")||t.isDefaultPrevented())return this.allowSubmit();var i;acf.validateForm({form:e,event:this.get("originalEvent")})||t.preventDefault()},allowSubmit:function(){return this.set("ignore",!1),this.set("originalEvent",!1),!0}})}(jQuery),function(t,e){var i=new acf.Model({priority:90,timeout:0,actions:{new_field:"refresh",show_field:"refresh",hide_field:"refresh",remove_field:"refresh"},refresh:function(){clearTimeout(this.timeout),this.timeout=setTimeout(function(){acf.doAction("refresh")},0)}}),n=new acf.Model({priority:1,actions:{sortstart:"onSortstart",sortstop:"onSortstop"},onSortstart:function(t){acf.doAction("unmount",t)},onSortstop:function(t){acf.doAction("remount",t)}}),a=new acf.Model({actions:{sortstart:"onSortstart"},onSortstart:function(e,i){e.is("tr")&&(i.html(''),e.addClass("acf-sortable-tr-helper"),e.children().each(function(){t(this).width(t(this).width())}),i.height(e.height()+"px"),e.removeClass("acf-sortable-tr-helper"))}}),r=new acf.Model({actions:{after_duplicate:"onAfterDuplicate"},onAfterDuplicate:function(e,i){var n=[];e.find("select").each(function(e){n.push(t(this).val())}),i.find("select").each(function(e){t(this).val(n[e])})}}),o=new acf.Model({id:"tableHelper",priority:20,actions:{refresh:"renderTables"},renderTables:function(e){var i=this;t(".acf-table:visible").each(function(){i.renderTable(t(this))})},renderTable:function(e){var i=e.find("> thead > tr:visible > th[data-key]"),n=e.find("> tbody > tr:visible > td[data-key]");if(!i.length||!n.length)return!1;i.each(function(e){var i=t(this),a=i.data("key"),r=n.filter('[data-key="'+a+'"]'),o=r.filter(".acf-hidden");r.removeClass("acf-empty"),r.length===o.length?acf.hide(i):(acf.show(i),o.addClass("acf-empty"))}),i.css("width","auto"),i=i.not(".acf-hidden");var a=100,r=i.length,o;i.filter("[data-width]").each(function(){var e=t(this).data("width");t(this).css("width",e+"%"),a-=e});var s=i.not("[data-width]");if(s.length){var c=a/s.length;s.css("width",c+"%"),a=0}a>0&&i.last().css("width","auto"),n.filter(".-collapsed-target").each(function(){var e=t(this);e.parent().hasClass("-collapsed")?e.attr("colspan",i.length):e.removeAttr("colspan")})}}),s=new acf.Model({id:"fieldsHelper",priority:30,actions:{refresh:"renderGroups"},renderGroups:function(){var e=this;t(".acf-fields:visible").each(function(){e.renderGroup(t(this))})},renderGroup:function(e){var i=0,n=0,a=t(),r=e.children(".acf-field[data-width]:visible");return!!r.length&&(e.hasClass("-left")?(r.removeAttr("data-width"),r.css("width","auto"),!1):(r.removeClass("-r0 -c0").css({"min-height":0}),r.each(function(e){var r=t(this),o=r.position(),s=Math.ceil(o.top),c=Math.ceil(o.left);a.length&&s>i&&(a.css({"min-height":n+"px"}),o=r.position(),s=Math.ceil(o.top),c=Math.ceil(o.left),i=0,n=0,a=t()),acf.get("rtl")&&(c=Math.ceil(r.parent().width()-(o.left+r.outerWidth()))),0==s?r.addClass("-r0"):0==c&&r.addClass("-c0");var l=Math.ceil(r.outerHeight())+1;n=Math.max(n,l),i=Math.max(i,s),a=a.add(r)}),void(a.length&&a.css({"min-height":n+"px"}))))}})}(jQuery),function(t,e){acf.newCompatibility=function(t,e){return(e=e||{}).__proto__=t.__proto__,t.__proto__=e,t.compatibility=e,e},acf.getCompatibility=function(t){return t.compatibility||null};var i=acf.newCompatibility(acf,{l10n:{},o:{},fields:{},update:acf.set,add_action:acf.addAction,remove_action:acf.removeAction,do_action:acf.doAction,add_filter:acf.addFilter,remove_filter:acf.removeFilter,apply_filters:acf.applyFilters,parse_args:acf.parseArgs,disable_el:acf.disable,disable_form:acf.disable,enable_el:acf.enable,enable_form:acf.enable,update_user_setting:acf.updateUserSetting,prepare_for_ajax:acf.prepareForAjax,is_ajax_success:acf.isAjaxSuccess,remove_el:acf.remove,remove_tr:acf.remove,str_replace:acf.strReplace,render_select:acf.renderSelect,get_uniqid:acf.uniqid,serialize_form:acf.serialize,esc_html:acf.strEscape,str_sanitize:acf.strSanitize});i._e=function(t,e){t=t||"";var i=(e=e||"")?t+"."+e:t,n={"image.select":"Select Image","image.edit":"Edit Image","image.update":"Update Image"};if(n[i])return acf.__(n[i]);var a=this.l10n[t]||"";return e&&(a=a[e]||""),a},i.get_selector=function(e){var i=".acf-field";if(!e)return i;if(t.isPlainObject(e)){if(t.isEmptyObject(e))return i;for(var n in e){e=e[n];break}}return i+="-"+e,i=acf.strReplace("_","-",i),i=acf.strReplace("field-field-","field-",i)},i.get_fields=function(t,e,i){var n={is:t||"",parent:e||!1,suppressFilters:i||!1};return n.is&&(n.is=this.get_selector(n.is)),acf.findFields(n)},i.get_field=function(t,e){var i=this.get_fields.apply(this,arguments);return!!i.length&&i.first()},i.get_closest_field=function(t,e){return t.closest(this.get_selector(e))},i.get_field_wrap=function(t){return t.closest(this.get_selector())},i.get_field_key=function(t){return t.data("key")},i.get_field_type=function(t){return t.data("type")},i.get_data=function(t,e){return acf.parseArgs(t.data(),e)},i.maybe_get=function(t,e,i){void 0===i&&(i=null),keys=String(e).split(".");for(var n=0;n1){for(var c=0;c0?e.substr(0,a):e,o=a>0?e.substr(a+1):"",s=function(e){e.$el=t(this),acf.field_group&&(e.$field=e.$el.closest(".acf-field-object")),"function"==typeof n.event&&(e=n.event(e)),n[i].apply(n,arguments)};o?t(document).on(r,o,s):t(document).on(r,s)},get:function(t,e){return e=e||null,void 0!==this[t]&&(e=this[t]),e},set:function(t,e){return this[t]=e,"function"==typeof this["_set_"+t]&&this["_set_"+t].apply(this),this}},i.field=acf.model.extend({type:"",o:{},$field:null,_add_action:function(t,e){var i=this;t=t+"_field/type="+i.type,acf.add_action(t,function(t){i.set("$field",t),i[e].apply(i,arguments)})},_add_filter:function(t,e){var i=this;t=t+"_field/type="+i.type,acf.add_filter(t,function(t){i.set("$field",t),i[e].apply(i,arguments)})},_add_event:function(e,i){var n=this,a=e.substr(0,e.indexOf(" ")),r=e.substr(e.indexOf(" ")+1),o=acf.get_selector(n.type);t(document).on(a,o+" "+r,function(e){var a=t(this),r=acf.get_closest_field(a,n.type);r.length&&(r.is(n.$field)||n.set("$field",r),e.$el=a,e.$field=r,n[i].apply(n,[e]))})},_set_$field:function(){"function"==typeof this.focus&&this.focus()},doFocus:function(t){return this.set("$field",t)}});var o=acf.newCompatibility(acf.validation,{remove_error:function(t){acf.getField(t).removeError()},add_warning:function(t,e){acf.getField(t).showNotice({text:e,type:"warning",timeout:1e3})},fetch:acf.validateForm,enableSubmit:acf.enableSubmit,disableSubmit:acf.disableSubmit,showSpinner:acf.showSpinner,hideSpinner:acf.hideSpinner,unlockForm:acf.unlockForm,lockForm:acf.lockForm});i.tooltip={tooltip:function(t,e){var i;return acf.newTooltip({text:t,target:e}).$el},temp:function(t,e){var i=acf.newTooltip({text:t,target:e,timeout:250})},confirm:function(t,e,i,n,a){var r=acf.newTooltip({confirm:!0,text:i,target:t,confirm:function(){e(!0)},cancel:function(){e(!1)}})},confirm_remove:function(t,e){var i=acf.newTooltip({confirmRemove:!0,target:t,confirm:function(){e(!0)},cancel:function(){e(!1)}})}},i.media=new acf.Model({activeFrame:!1,actions:{new_media_popup:"onNewMediaPopup"},frame:function(){return this.activeFrame},onNewMediaPopup:function(t){this.activeFrame=t.frame},popup:function(t){var e;return t.mime_types&&(t.allowedTypes=t.mime_types),t.id&&(t.attachment=t.id),acf.newMediaPopup(t).frame}}),i.select2={init:function(t,e,i){return e.allow_null&&(e.allowNull=e.allow_null),e.ajax_action&&(e.ajaxAction=e.ajax_action),i&&(e.field=acf.getField(i)),acf.newSelect2(t,e)},destroy:function(t){return acf.getInstance(t).destroy()}},i.postbox={render:function(t){return t.edit_url&&(t.editLink=t.edit_url),t.edit_title&&(t.editTitle=t.edit_title),acf.newPostbox(t)}},acf.newCompatibility(acf.screen,{update:function(){return this.set.apply(this,arguments)},fetch:acf.screen.check}),i.ajax=acf.screen}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/acf-data-functions.php b/wp-content/plugins/advanced-custom-fields/includes/acf-data-functions.php new file mode 100644 index 0000000..89b6878 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/acf-data-functions.php @@ -0,0 +1,106 @@ +switch_site( $site_id, $prev_site_id ); + } +} +add_action( 'switch_blog', 'acf_switch_stores', 10, 2 ); diff --git a/wp-content/plugins/advanced-custom-fields/includes/acf-field-functions.php b/wp-content/plugins/advanced-custom-fields/includes/acf-field-functions.php new file mode 100644 index 0000000..0fb114d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/acf-field-functions.php @@ -0,0 +1,1571 @@ +prop( 'multisite', true ); + +/** + * acf_get_field + * + * Retrieves a field for the given identifier. + * + * @date 17/1/19 + * @since 5.7.10 + * + * @param (int|string) $id The field ID, key or name. + * @return (array|false) The field array. + */ +function acf_get_field( $id = 0 ) { + + // Allow WP_Post to be passed. + if( is_object($id) ) { + $id = $id->ID; + } + + // Check store. + $store = acf_get_store( 'fields' ); + if( $store->has( $id ) ) { + return $store->get( $id ); + } + + // Check local fields first. + if( acf_is_local_field($id) ) { + $field = acf_get_local_field( $id ); + + // Then check database. + } else { + $field = acf_get_raw_field( $id ); + } + + // Bail early if no field. + if( !$field ) { + return false; + } + + // Validate field. + $field = acf_validate_field( $field ); + + // Set input prefix. + $field['prefix'] = 'acf'; + + /** + * Filters the $field array after it has been loaded. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array The field array. + */ + $field = apply_filters( "acf/load_field", $field ); + + // Store field using aliasses to also find via key, ID and name. + $store->set( $field['key'], $field ); + $store->alias( $field['key'], $field['ID'], $field['name'] ); + + // Return. + return $field; +} + +// Register variation. +acf_add_filter_variations( 'acf/load_field', array('type', 'name', 'key'), 0 ); + +/** + * acf_get_raw_field + * + * Retrieves raw field data for the given identifier. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param (int|string) $id The field ID, key or name. + * @return (array|false) The field array. + */ +function acf_get_raw_field( $id = 0 ) { + + // Get raw field from database. + $post = acf_get_field_post( $id ); + if( !$post ) { + return false; + } + + // Bail early if incorrect post type. + if( $post->post_type !== 'acf-field' ) { + return false; + } + + // Unserialize post_content. + $field = (array) maybe_unserialize( $post->post_content ); + + // update attributes + $field['ID'] = $post->ID; + $field['key'] = $post->post_name; + $field['label'] = $post->post_title; + $field['name'] = $post->post_excerpt; + $field['menu_order'] = $post->menu_order; + $field['parent'] = $post->post_parent; + + // Return field. + return $field; +} + +/** + * acf_get_field_post + * + * Retrieves the field's WP_Post object. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param (int|string) $id The field ID, key or name. + * @return (array|false) The field array. + */ +function acf_get_field_post( $id = 0 ) { + + // Get post if numeric. + if( is_numeric($id) ) { + return get_post( $id ); + + // Search posts if is string. + } elseif( is_string($id) ) { + + // Determine id type. + $type = acf_is_field_key($id) ? 'key' : 'name'; + + // Try cache. + $cache_key = acf_cache_key( "acf_get_field_post:$type:$id" ); + $post_id = wp_cache_get( $cache_key, 'acf' ); + if( $post_id === false ) { + + // Query posts. + $posts = get_posts(array( + 'posts_per_page' => 1, + 'post_type' => 'acf-field', + 'orderby' => 'menu_order title', + 'order' => 'ASC', + 'suppress_filters' => false, + 'cache_results' => true, + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false, + "acf_field_$type" => $id + )); + + // Update $post_id with a non false value. + $post_id = $posts ? $posts[0]->ID : 0; + + // Update cache. + wp_cache_set( $cache_key, $post_id, 'acf' ); + } + + // Check $post_id and return the post when possible. + if( $post_id ) { + return get_post( $post_id ); + } + } + + // Return false by default. + return false; +} + +/** + * acf_is_field_key + * + * Returns true if the given identifier is a field key. + * + * @date 6/12/2013 + * @since 5.0.0 + * + * @param string $id The identifier. + * @return bool + */ +function acf_is_field_key( $id = '' ) { + + // Check if $id is a string starting with "field_". + if( is_string($id) && substr($id, 0, 6) === 'field_' ) { + return true; + } + + /** + * Filters whether the $id is a field key. + * + * @date 23/1/19 + * @since 5.7.10 + * + * @param bool $bool The result. + * @param string $id The identifier. + */ + return apply_filters( 'acf/is_field_key', false, $id ); +} + +/** + * acf_validate_field + * + * Ensures the given field valid. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + * @return array + */ +function acf_validate_field( $field = array() ) { + + // Bail early if already valid. + if( is_array($field) && !empty($field['_valid']) ) { + return $field; + } + + // Apply defaults. + $field = wp_parse_args($field, array( + 'ID' => 0, + 'key' => '', + 'label' => '', + 'name' => '', + 'prefix' => '', + 'type' => 'text', + 'value' => null, + 'menu_order' => 0, + 'instructions' => '', + 'required' => false, + 'id' => '', + 'class' => '', + 'conditional_logic' => false, + 'parent' => 0, + 'wrapper' => array() + //'attributes' => array() + )); + + // Add backwards compatibility for wrapper attributes. + // Todo: Remove need for this. + $field['wrapper'] = wp_parse_args($field['wrapper'], array( + 'width' => '', + 'class' => '', + 'id' => '' + )); + + // Store backups. + $field['_name'] = $field['name']; + $field['_valid'] = 1; + + /** + * Filters the $field array to validate settings. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + $field = apply_filters( "acf/validate_field", $field ); + + // return + return $field; +} + +// Register variation. +acf_add_filter_variations( 'acf/validate_field', array('type'), 0 ); + +/** + * acf_get_valid_field + * + * Ensures the given field valid. + * + * @date 28/09/13 + * @since 5.0.0 + * + * @param array $field The field array. + * @return array + */ +function acf_get_valid_field( $field = false ) { + return acf_validate_field( $field ); +} + +/** + * acf_translate_field + * + * Translates a field's settings. + * + * @date 8/03/2016 + * @since 5.3.2 + * + * @param array $field The field array. + * @return array + */ +function acf_translate_field( $field = array() ) { + + // Get settings. + $l10n = acf_get_setting('l10n'); + $l10n_textdomain = acf_get_setting('l10n_textdomain'); + + // Translate field settings if textdomain is set. + if( $l10n && $l10n_textdomain ) { + + $field['label'] = acf_translate( $field['label'] ); + $field['instructions'] = acf_translate( $field['instructions'] ); + + /** + * Filters the $field array to translate strings. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + $field = apply_filters( "acf/translate_field", $field ); + } + + // Return field. + return $field; +} + +// Register variation. +acf_add_filter_variations( 'acf/translate_field', array('type'), 0 ); + +// Translate fields passing through validation. +add_action('acf/validate_field', 'acf_translate_field'); + +/** + * acf_get_fields + * + * Returns and array of fields for the given $parent. + * + * @date 30/09/13 + * @since 5.0.0 + * + * @param (int|string|array) $parent The field group or field settings. Also accepts the field group ID or key. + * @return array + */ +function acf_get_fields( $parent ) { + + // Allow field group selector as $parent. + if( !is_array($parent) ) { + $parent = acf_get_field_group( $parent ); + if( !$parent ) { + return array(); + } + } + + // Vars. + $fields = array(); + + // Check local fields first. + if( acf_have_local_fields($parent['key']) ) { + $raw_fields = acf_get_local_fields( $parent['key'] ); + foreach( $raw_fields as $raw_field ) { + $fields[] = acf_get_field( $raw_field['key'] ); + } + + // Then check database. + } else { + $raw_fields = acf_get_raw_fields( $parent['ID'] ); + foreach( $raw_fields as $raw_field ) { + $fields[] = acf_get_field( $raw_field['ID'] ); + } + } + + /** + * Filters the $fields array. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $fields The array of fields. + */ + $fields = apply_filters( 'acf/load_fields', $fields, $parent ); + + // Return fields + return $fields; +} + +/** + * acf_get_raw_fields + * + * Returns and array of raw field data for the given parent id. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param int $id The field group or field id. + * @return array + */ +function acf_get_raw_fields( $id = 0 ) { + + // Try cache. + $cache_key = acf_cache_key( "acf_get_field_posts:$id" ); + $post_ids = wp_cache_get( $cache_key, 'acf' ); + if( $post_ids === false ) { + + // Query posts. + $posts = get_posts(array( + 'posts_per_page' => -1, + 'post_type' => 'acf-field', + 'orderby' => 'menu_order', + 'order' => 'ASC', + 'suppress_filters' => true, // DO NOT allow WPML to modify the query + 'cache_results' => true, + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false, + 'post_parent' => $id, + 'post_status' => array('publish', 'trash'), + )); + + // Update $post_ids with a non false value. + $post_ids = array(); + foreach( $posts as $post ) { + $post_ids[] = $post->ID; + } + + // Update cache. + wp_cache_set( $cache_key, $post_ids, 'acf' ); + } + + // Loop over ids and populate array of fields. + $fields = array(); + foreach( $post_ids as $post_id ) { + $fields[] = acf_get_raw_field( $post_id ); + } + + // Return fields. + return $fields; +} + +/** + * acf_get_field_count + * + * Return the number of fields for the given field group. + * + * @date 17/10/13 + * @since 5.0.0 + * + * @param array $parent The field group or field array. + * @return int + */ +function acf_get_field_count( $parent ) { + + // Check local fields first. + if( acf_have_local_fields($parent['key']) ) { + $raw_fields = acf_get_local_fields( $parent['key'] ); + + // Then check database. + } else { + $raw_fields = acf_get_raw_fields( $parent['ID'] ); + } + + /** + * Filters the counted number of fields. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param int $count The number of fields. + * @param array $parent The field group or field array. + */ + return apply_filters( 'acf/get_field_count', count($raw_fields), $parent ); +} + +/** + * acf_clone_field + * + * Allows customization to a field when it is cloned. Used by the clone field. + * + * @date 8/03/2016 + * @since 5.3.2 + * + * @param array $field The field being cloned. + * @param array $clone_field The clone field. + * @return array + */ +function acf_clone_field( $field, $clone_field ) { + + // Add reference to the clone field. + $field['_clone'] = $clone_field['key']; + + /** + * Filters the $field array when it is being cloned. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + * @param array $clone_field The clone field array. + */ + $field = apply_filters( "acf/clone_field", $field, $clone_field ); + + // Return field. + return $field; +} + +// Register variation. +acf_add_filter_variations( 'acf/clone_field', array('type'), 0 ); + +/** + * acf_prepare_field + * + * Prepare a field for input. + * + * @date 20/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + * @return array + */ +function acf_prepare_field( $field ) { + + // Bail early if already prepared. + if( !empty($field['_prepare']) ) { + return $field; + } + + // Use field key to override input name. + if( $field['key'] ) { + $field['name'] = $field['key']; + } + + // Use field prefix to modify input name. + if( $field['prefix'] ) { + $field['name'] = "{$field['prefix']}[{$field['name']}]"; + } + + // Generate id attribute from name. + $field['id'] = acf_idify( $field['name'] ); + + // Add state to field. + $field['_prepare'] = true; + + /** + * Filters the $field array. + * + * Allows developers to modify field settings or return false to remove field. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + $field = apply_filters( "acf/prepare_field", $field ); + + // return + return $field; +} + +// Register variation. +acf_add_filter_variations( 'acf/prepare_field', array('type', 'name', 'key'), 0 ); + +/** + * acf_render_fields + * + * Renders an array of fields. Also loads the field's value. + * + * @date 8/10/13 + * @since 5.0.0 + * @since 5.6.9 Changed parameter order. + * + * @param array $fields An array of fields. + * @param (int|string) $post_id The post ID to load values from. + * @param string $element The wrapping element type. + * @param string $instruction The instruction render position (label|field). + * @return void + */ +function acf_render_fields( $fields, $post_id = 0, $el = 'div', $instruction = 'label' ) { + + // Parameter order changed in ACF 5.6.9. + if( is_array($post_id) ) { + $args = func_get_args(); + $fields = $args[1]; + $post_id = $args[0]; + } + + /** + * Filters the $fields array before they are rendered. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $fields An array of fields. + * @param (int|string) $post_id The post ID to load values from. + */ + $fields = apply_filters( 'acf/pre_render_fields', $fields, $post_id ); + + // Filter our false results. + $fields = array_filter( $fields ); + + // Loop over and render fields. + if( $fields ) { + foreach( $fields as $field ) { + + // Load value if not already loaded. + if( $field['value'] === null ) { + $field['value'] = acf_get_value( $post_id, $field ); + } + + // Render wrap. + acf_render_field_wrap( $field, $el, $instruction ); + } + } + + /** + * Fires after fields have been rendered. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $fields An array of fields. + * @param (int|string) $post_id The post ID to load values from. + */ + do_action( 'acf/render_fields', $fields, $post_id ); +} + +/** + * acf_render_field_wrap + * + * Render the wrapping element for a given field. + * + * @date 28/09/13 + * @since 5.0.0 + * + * @param array $field The field array. + * @param string $element The wrapping element type. + * @param string $instruction The instruction render position (label|field). + * @return void + */ +function acf_render_field_wrap( $field, $element = 'div', $instruction = 'label' ) { + + // Ensure field is complete (adds all settings). + $field = acf_validate_field( $field ); + + // Prepare field for input (modifies settings). + $field = acf_prepare_field( $field ); + + // Allow filters to cancel render. + if( !$field ) { + return; + } + + // Determine wrapping element. + $elements = array( + 'div' => 'div', + 'tr' => 'td', + 'td' => 'div', + 'ul' => 'li', + 'ol' => 'li', + 'dl' => 'dt', + ); + + if( isset($elements[$element]) ) { + $inner_element = $elements[$element]; + } else { + $element = $inner_element = 'div'; + } + + // Generate wrapper attributes. + $wrapper = array( + 'id' => '', + 'class' => 'acf-field', + 'width' => '', + 'style' => '', + 'data-name' => $field['_name'], + 'data-type' => $field['type'], + 'data-key' => $field['key'], + ); + + // Add field type attributes. + $wrapper['class'] .= " acf-field-{$field['type']}"; + + // add field key attributes + if( $field['key'] ) { + $wrapper['class'] .= " acf-field-{$field['key']}"; + } + + // Add required attributes. + // Todo: Remove data-required + if( $field['required'] ) { + $wrapper['class'] .= ' is-required'; + $wrapper['data-required'] = 1; + } + + // Clean up class attribute. + $wrapper['class'] = str_replace( '_', '-', $wrapper['class'] ); + $wrapper['class'] = str_replace( 'field-field-', 'field-', $wrapper['class'] ); + + // Merge in field 'wrapper' setting without destroying class and style. + if( $field['wrapper'] ) { + $wrapper = acf_merge_attributes( $wrapper, $field['wrapper'] ); + } + + // Extract wrapper width and generate style. + // Todo: Move from $wrapper out into $field. + $width = acf_extract_var( $wrapper, 'width' ); + if( $width ) { + $width = acf_numval( $width ); + if( $element !== 'tr' && $element !== 'td' ) { + $wrapper['data-width'] = $width; + $wrapper['style'] .= " width:{$width}%;"; + } + } + + // Clean up all attributes. + $wrapper = array_map( 'trim', $wrapper ); + $wrapper = array_filter( $wrapper ); + + /** + * Filters the $wrapper array before rendering. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param array $wrapper The wrapper attributes array. + * @param array $field The field array. + */ + $wrapper = apply_filters( 'acf/field_wrapper_attributes', $wrapper, $field ); + + // Append conditional logic attributes. + if( !empty($field['conditional_logic']) ) { + $wrapper['data-conditions'] = $field['conditional_logic']; + } + if( !empty($field['conditions']) ) { + $wrapper['data-conditions'] = $field['conditions']; + } + + // Vars for render. + $attributes_html = acf_esc_attr( $wrapper ); + + // Render HTML + echo "<$element $attributes_html>" . "\n"; + if( $element !== 'td' ) { + echo "<$inner_element class=\"acf-label\">" . "\n"; + acf_render_field_label( $field ); + if( $instruction == 'label' ) { + acf_render_field_instructions( $field ); + } + echo "" . "\n"; + } + echo "<$inner_element class=\"acf-input\">" . "\n"; + acf_render_field( $field ); + if( $instruction == 'field' ) { + acf_render_field_instructions( $field ); + } + echo "" . "\n"; + echo "" . "\n"; +} + +/** + * acf_render_field + * + * Render the input element for a given field. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + * @return void + */ +function acf_render_field( $field ) { + + // Ensure field is complete (adds all settings). + $field = acf_validate_field( $field ); + + // Prepare field for input (modifies settings). + $field = acf_prepare_field( $field ); + + // Allow filters to cancel render. + if( !$field ) { + return; + } + + /** + * Fires when rendering a field. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + do_action( "acf/render_field", $field ); +} + +// Register variation. +acf_add_action_variations( 'acf/render_field', array('type', 'name', 'key'), 0 ); + +/** + * acf_render_field_label + * + * Renders the field's label. + * + * @date 19/9/17 + * @since 5.6.3 + * + * @param array $field The field array. + * @return void + */ +function acf_render_field_label( $field ) { + + // Get label. + $label = acf_get_field_label( $field ); + + // Output label. + if( $label ) { + echo '' . acf_esc_html($label) . ''; + } +} + +/** + * acf_get_field_label + * + * Returns the field's label with appropriate required label. + * + * @date 4/11/2013 + * @since 5.0.0 + * + * @param array $field The field array. + * @param string $context The output context (admin). + * @return void + */ +function acf_get_field_label( $field, $context = '' ) { + + // Get label. + $label = $field['label']; + + // Display empty text when editing field. + if( $context == 'admin' && $label === '' ) { + $label = __('(no label)', 'acf'); + } + + // Add required HTML. + if( $field['required'] ) { + $label .= ' *'; + } + + /** + * Filters the field's label HTML. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param string The label HTML. + * @param array $field The field array. + * @param string $context The output context (admin). + */ + $label = apply_filters( "acf/get_field_label", $label, $field, $context ); + + // Return label. + return $label; +} + +/** + * acf_render_field_instructions + * + * Renders the field's instructions. + * + * @date 19/9/17 + * @since 5.6.3 + * + * @param array $field The field array. + * @return void + */ +function acf_render_field_instructions( $field ) { + + // Output instructions. + if( $field['instructions'] ) { + echo '

                    ' . acf_esc_html($field['instructions']) . '

                    '; + } +} + +/** + * acf_render_field_setting + * + * Renders a field setting used in the admin edit screen. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + * @param array $setting The settings field array. + * @param bool $global Whether this setting is a global or field type specific one. + * @return void + */ +function acf_render_field_setting( $field, $setting, $global = false ) { + + // Validate field. + $setting = acf_validate_field( $setting ); + + // Add custom attributes to setting wrapper. + $setting['wrapper']['data-key'] = $setting['name']; + $setting['wrapper']['class'] .= ' acf-field-setting-' . $setting['name']; + if( !$global ) { + $setting['wrapper']['data-setting'] = $field['type']; + } + + // Copy across prefix. + $setting['prefix'] = $field['prefix']; + + // Find setting value from field. + if( $setting['value'] === null ) { + + // Name. + if( isset($field[ $setting['name'] ]) ) { + $setting['value'] = $field[ $setting['name'] ]; + + // Default value. + } elseif( isset($setting['default_value']) ) { + $setting['value'] = $setting['default_value']; + } + } + + // Add append attribute used by JS to join settings. + if( isset($setting['_append']) ) { + $setting['wrapper']['data-append'] = $setting['_append']; + } + + // Render setting. + acf_render_field_wrap( $setting, 'tr', 'label' ); +} + +/** + * acf_update_field + * + * Updates a field in the database. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + * @param array $specific An array of specific field attributes to update. + * @return void + */ +function acf_update_field( $field, $specific = array() ) { + + // Validate field. + $field = acf_validate_field( $field ); + + // May have been posted. Remove slashes. + $field = wp_unslash( $field ); + + // Parse types (converts string '0' to int 0). + $field = acf_parse_types( $field ); + + // Clean up conditional logic keys. + if( $field['conditional_logic'] ) { + + // Remove empty values and convert to associated array. + $field['conditional_logic'] = array_filter( $field['conditional_logic'] ); + $field['conditional_logic'] = array_values( $field['conditional_logic'] ); + $field['conditional_logic'] = array_map( 'array_filter', $field['conditional_logic'] ); + $field['conditional_logic'] = array_map( 'array_values', $field['conditional_logic'] ); + } + + // Parent may be provided as a field key. + if( $field['parent'] && !is_numeric($field['parent']) ) { + $parent = acf_get_field_post( $field['parent'] ); + $field['parent'] = $parent ? $parent->ID : 0; + } + + /** + * Filters the $field array before it is updated. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + $field = apply_filters( "acf/update_field", $field ); + + // Make a backup of field data and remove some args. + $_field = $field; + acf_extract_vars( $_field, array( 'ID', 'key', 'label', 'name', 'prefix', 'value', 'menu_order', 'id', 'class', 'parent', '_name', '_prepare', '_valid' ) ); + + // Create array of data to save. + $save = array( + 'ID' => $field['ID'], + 'post_status' => 'publish', + 'post_type' => 'acf-field', + 'post_title' => $field['label'], + 'post_name' => $field['key'], + 'post_excerpt' => $field['name'], + 'post_content' => maybe_serialize( $_field ), + 'post_parent' => $field['parent'], + 'menu_order' => $field['menu_order'], + ); + + // Reduce save data if specific key list is provided. + if( $specific ) { + $specific[] = 'ID'; + $save = acf_get_sub_array( $save, $specific ); + } + + // Unhook wp_targeted_link_rel() filter from WP 5.1 corrupting serialized data. + remove_filter( 'content_save_pre', 'wp_targeted_link_rel' ); + + // Slash data. + // WP expects all data to be slashed and will unslash it (fixes '\' character issues). + $save = wp_slash( $save ); + + // Update or Insert. + if( $field['ID'] ) { + wp_update_post( $save ); + } else { + $field['ID'] = wp_insert_post( $save ); + } + + // Flush field cache. + acf_flush_field_cache( $field ); + + /** + * Fires after a field has been updated, and the field cache has been cleaned. + * + * @date 24/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + */ + do_action( "acf/updated_field", $field ); + + // Return field. + return $field; +} + +// Register variation. +acf_add_filter_variations( 'acf/update_field', array('type', 'name', 'key'), 0 ); + +/** + * _acf_apply_unique_field_slug + * + * Allows full control over 'acf-field' slugs. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param string $slug The post slug. + * @param int $post_ID Post ID. + * @param string $post_status The post status. + * @param string $post_type Post type. + * @param int $post_parent Post parent ID + * @param string $original_slug The original post slug. + */ +function _acf_apply_unique_field_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) { + + // Check post type and reset to original value. + if( $post_type === 'acf-field' ) { + return $original_slug; + } + + // Return slug. + return $slug; +} + +// Hook into filter. +add_filter( 'wp_unique_post_slug', '_acf_apply_unique_field_slug', 999, 6 ); + +/** + * acf_flush_field_cache + * + * Deletes all caches for this field. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + * @return void + */ +function acf_flush_field_cache( $field ) { + + // Delete stored data. + acf_get_store( 'fields' )->remove( $field['key'] ); + + // Flush cached post_id for this field's name and key. + wp_cache_delete( acf_cache_key("acf_get_field_post:name:{$field['name']}"), 'acf' ); + wp_cache_delete( acf_cache_key("acf_get_field_post:key:{$field['key']}"), 'acf' ); + + // Flush cached array of post_ids for this field's parent. + wp_cache_delete( acf_cache_key("acf_get_field_posts:{$field['parent']}"), 'acf' ); +} + +/** + * acf_delete_field + * + * Deletes a field from the database. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param (int|string) $id The field ID, key or name. + * @return bool True if field was deleted. + */ +function acf_delete_field( $id = 0 ) { + + // Get the field. + $field = acf_get_field( $id ); + + // Bail early if field was not found. + if( !$field || !$field['ID'] ) { + return false; + } + + // Delete post. + wp_delete_post( $field['ID'], true ); + + // Flush field cache. + acf_flush_field_cache( $field ); + + /** + * Fires immediately after a field has been deleted. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + do_action( "acf/delete_field", $field ); + + // Return true. + return true; +} + +// Register variation. +acf_add_action_variations( 'acf/delete_field', array('type', 'name', 'key'), 0 ); + +/** + * acf_trash_field + * + * Trashes a field from the database. + * + * @date 2/10/13 + * @since 5.0.0 + * + * @param (int|string) $id The field ID, key or name. + * @return bool True if field was trashed. + */ +function acf_trash_field( $id = 0 ) { + + // Get the field. + $field = acf_get_field( $id ); + + // Bail early if field was not found. + if( !$field || !$field['ID'] ) { + return false; + } + + // Trash post. + wp_trash_post( $field['ID'], true ); + + /** + * Fires immediately after a field has been trashed. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + do_action( 'acf/trash_field', $field ); + + // Return true. + return true; +} + +/** + * acf_untrash_field + * + * Restores a field from the trash. + * + * @date 2/10/13 + * @since 5.0.0 + * + * @param (int|string) $id The field ID, key or name. + * @return bool True if field was trashed. + */ +function acf_untrash_field( $id = 0 ) { + + // Get the field. + $field = acf_get_field( $id ); + + // Bail early if field was not found. + if( !$field || !$field['ID'] ) { + return false; + } + + // Untrash post. + wp_untrash_post( $field['ID'], true ); + + // Flush field cache. + acf_flush_field_cache( $field ); + + /** + * Fires immediately after a field has been trashed. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + do_action( 'acf/untrash_field', $field ); + + // Return true. + return true; +} + +/** + * acf_prefix_fields + * + * Changes the prefix for an array of fields by reference. + * + * @date 5/9/17 + * @since 5.6.0 + * + * @param array $fields An array of fields. + * @param string $prefix The new prefix. + * @return void + */ +function acf_prefix_fields( &$fields, $prefix = 'acf' ) { + + // Loopover fields. + foreach( $fields as &$field ) { + + // Replace 'acf' with $prefix. + $field['prefix'] = $prefix . substr($field['prefix'], 3); + } +} + +/** + * acf_get_sub_field + * + * Searches a field for sub fields matching the given selector. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param (int|string) $id The field ID, key or name. + * @param array $field The parent field array. + * @return (array|false) + */ +function acf_get_sub_field( $id, $field ) { + + // Vars. + $sub_field = false; + + // Search sub fields. + if( isset($field['sub_fields']) ) { + $sub_field = acf_search_fields( $id, $field['sub_fields'] ); + } + + /** + * Filters the $sub_field found. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $sub_field The found sub field array. + * @param string $selector The selector used to search. + * @param array $field The parent field array. + */ + $sub_field = apply_filters( "acf/get_sub_field", $sub_field, $id, $field ); + + // return + return $sub_field; + +} + +// Register variation. +acf_add_filter_variations( 'acf/get_sub_field', array('type'), 2 ); + +/** + * acf_search_fields + * + * Searches an array of fields for one that matches the given identifier. + * + * @date 12/2/19 + * @since 5.7.11 + * + * @param (int|string) $id The field ID, key or name. + * @param array $haystack The array of fields. + * @return (int|false) + */ +function acf_search_fields( $id, $fields ) { + + // Loop over searchable keys in order of priority. + // Important to search "name" on all fields before "_name" backup. + foreach( array( 'key', 'name', '_name', '__name' ) as $key ) { + + // Loop over fields and compare. + foreach( $fields as $field ) { + if( isset($field[$key]) && $field[$key] === $id ) { + return $field; + } + } + } + + // Return not found. + return false; +} + +/** + * acf_is_field + * + * Returns true if the given params match a field. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + * @param mixed $id An optional identifier to search for. + * @return bool + */ +function acf_is_field( $field = false, $id = '' ) { + return ( + is_array($field) + && isset($field['key']) + && isset($field['name']) + ); +} + +/** + * acf_get_field_ancestors + * + * Returns an array of ancestor field ID's or keys. + * + * @date 22/06/2016 + * @since 5.3.8 + * + * @param array $field The field array. + * @return array + */ +function acf_get_field_ancestors( $field ) { + + // Vars. + $ancestors = array(); + + // Loop over parents. + while( $field['parent'] && $field = acf_get_field($field['parent']) ) { + $ancestors[] = $field['ID'] ? $field['ID'] : $field['key']; + } + + // return + return $ancestors; +} + +/** + * acf_duplicate_fields + * + * Duplicate an array of fields. + * + * @date 16/06/2014 + * @since 5.0.0 + * + * @param array $fields An array of fields. + * @param int $parent_id The new parent ID. + * @return array + */ +function acf_duplicate_fields( $fields = array(), $parent_id = 0 ) { + + // Vars. + $duplicates = array(); + + // Loop over fields and pre-generate new field keys (needed for conditional logic). + $keys = array(); + foreach( $fields as $field ) { + + // Delay for a microsecond to ensure a unique ID. + usleep(1); + $keys[ $field['key'] ] = uniqid('field_'); + } + + // Store these keys for later use. + acf_set_data( 'duplicates', $keys ); + + // Duplicate fields. + foreach( $fields as $field ) { + $field_id = $field['ID'] ? $field['ID'] : $field['key']; + $duplicates[] = acf_duplicate_field( $field_id, $parent_id ); + } + + // Return. + return $duplicates; +} + +/** + * acf_duplicate_field + * + * Duplicates a field. + * + * @date 16/06/2014 + * @since 5.0.0 + * + * @param (int|string) $id The field ID, key or name. + * @param int $parent_id The new parent ID. + * @return bool True if field was duplicated. + */ +function acf_duplicate_field( $id = 0, $parent_id = 0 ){ + + // Get the field. + $field = acf_get_field( $id ); + + // Bail early if field was not found. + if( !$field ) { + return false; + } + + // Remove ID to avoid update. + $field['ID'] = 0; + + // Generate key. + $keys = acf_get_data( 'duplicates' ); + $field['key'] = isset($keys[ $field['key'] ]) ? $keys[ $field['key'] ] : uniqid('field_'); + + // Set parent. + if( $parent_id ) { + $field['parent'] = $parent_id; + } + + // Update conditional logic references because field keys have changed. + if( $field['conditional_logic'] ) { + + // Loop over groups + foreach( $field['conditional_logic'] as $group_i => $group ) { + + // Loop over rules + foreach( $group as $rule_i => $rule ) { + $field['conditional_logic'][ $group_i ][ $rule_i ]['field'] = isset($keys[ $rule['field'] ]) ? $keys[ $rule['field'] ] : $rule['field']; + } + } + } + + /** + * Filters the $field array after it has been duplicated. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + $field = apply_filters( "acf/duplicate_field", $field); + + // Update and return. + return acf_update_field( $field ); +} + +// Register variation. +acf_add_filter_variations( 'acf/duplicate_field', array('type'), 0 ); + +/** + * acf_prepare_fields_for_export + * + * Returns a modified array of fields ready for export. + * + * @date 11/03/2014 + * @since 5.0.0 + * + * @param array $fields An array of fields. + * @return array + */ +function acf_prepare_fields_for_export( $fields = array() ) { + + // Map function and return. + return array_map( 'acf_prepare_field_for_export', $fields ); +} + +/** + * acf_prepare_field_for_export + * + * Returns a modified field ready for export. + * + * @date 11/03/2014 + * @since 5.0.0 + * + * @param array $field The field array. + * @return array + */ +function acf_prepare_field_for_export( $field ) { + + // Remove args. + acf_extract_vars( $field, array( 'ID', 'prefix', 'value', 'menu_order', 'id', 'class', 'parent', '_name', '_prepare', '_valid' ) ); + + /** + * Filters the $field array before being returned to the export tool. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + $field = apply_filters( "acf/prepare_field_for_export", $field ); + + // Return field. + return $field; +} + +// Register variation. +acf_add_filter_variations( 'acf/prepare_field_for_export', array('type'), 0 ); + +/** + * acf_prepare_field_for_import + * + * Returns a modified array of fields ready for import. + * + * @date 11/03/2014 + * @since 5.0.0 + * + * @param array $fields An array of fields. + * @return array + */ +function acf_prepare_fields_for_import( $fields = array() ) { + + // Ensure array indexes are clean. + $fields = array_values($fields); + + // Loop through fields allowing for growth. + $i = 0; + while( $i < count($fields) ) { + + // Prepare for import. + $field = acf_prepare_field_for_import( $fields[ $i ] ); + + // Allow multiple fields to be returned (parent + children). + if( is_array($field) && !isset($field['key']) ) { + + // Replace this field ($i) with all returned fields. + array_splice( $fields, $i, 1, $field ); + } + + // Iterate. + $i++; + } + + /** + * Filters the $fields array before being returned to the import tool. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + $fields = apply_filters( 'acf/prepare_fields_for_import', $fields ); + + // Return. + return $fields; +} + +/** + * acf_prepare_field_for_import + * + * Returns a modified field ready for import. + * Allows parent fields to modify themselves and also return sub fields. + * + * @date 11/03/2014 + * @since 5.0.0 + * + * @param array $field The field array. + * @return array + */ +function acf_prepare_field_for_import( $field ) { + + /** + * Filters the $field array before being returned to the import tool. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field The field array. + */ + $field = apply_filters( "acf/prepare_field_for_import", $field ); + + // Return field. + return $field; +} + +// Register variation. +acf_add_filter_variations( 'acf/prepare_field_for_import', array('type'), 0 ); \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/acf-field-group-functions.php b/wp-content/plugins/advanced-custom-fields/includes/acf-field-group-functions.php new file mode 100644 index 0000000..23fa259 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/acf-field-group-functions.php @@ -0,0 +1,1068 @@ +prop( 'multisite', true ); + +/** + * acf_get_field_group + * + * Retrieves a field group for the given identifier. + * + * @date 30/09/13 + * @since 5.0.0 + * + * @param (int|string) $id The field group ID, key or name. + * @return (array|false) The field group array. + */ +function acf_get_field_group( $id = 0 ) { + + // Allow WP_Post to be passed. + if( is_object($id) ) { + $id = $id->ID; + } + + // Check store. + $store = acf_get_store( 'field-groups' ); + if( $store->has( $id ) ) { + return $store->get( $id ); + } + + // Check local fields first. + if( acf_is_local_field_group($id) ) { + $field_group = acf_get_local_field_group( $id ); + + // Then check database. + } else { + $field_group = acf_get_raw_field_group( $id ); + } + + // Bail early if no field group. + if( !$field_group ) { + return false; + } + + // Validate field group. + $field_group = acf_validate_field_group( $field_group ); + + /** + * Filters the $field_group array after it has been loaded. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array The field_group array. + */ + $field_group = apply_filters( 'acf/load_field_group', $field_group ); + + // Store field group using aliasses to also find via key, ID and name. + $store->set( $field_group['key'], $field_group ); + $store->alias( $field_group['key'], $field_group['ID'] ); + + // Return. + return $field_group; +} + +/** + * acf_get_raw_field_group + * + * Retrieves raw field group data for the given identifier. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param (int|string) $id The field ID, key or name. + * @return (array|false) The field group array. + */ +function acf_get_raw_field_group( $id = 0 ) { + + // Get raw field group from database. + $post = acf_get_field_group_post( $id ); + if( !$post ) { + return false; + } + + // Bail early if incorrect post type. + if( $post->post_type !== 'acf-field-group' ) { + return false; + } + + // Unserialize post_content. + $field_group = (array) maybe_unserialize( $post->post_content ); + + // update attributes + $field_group['ID'] = $post->ID; + $field_group['title'] = $post->post_title; + $field_group['key'] = $post->post_name; + $field_group['menu_order'] = $post->menu_order; + $field_group['active'] = in_array($post->post_status, array('publish', 'auto-draft')); + + // Return field. + return $field_group; +} + +/** + * acf_get_field_group_post + * + * Retrieves the field group's WP_Post object. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param (int|string) $id The field group's ID, key or name. + * @return (array|false) The field group's array. + */ +function acf_get_field_group_post( $id = 0 ) { + + // Get post if numeric. + if( is_numeric($id) ) { + return get_post( $id ); + + // Search posts if is string. + } elseif( is_string($id) ) { + + // Try cache. + $cache_key = acf_cache_key( "acf_get_field_group_post:key:$id" ); + $post_id = wp_cache_get( $cache_key, 'acf' ); + if( $post_id === false ) { + + // Query posts. + $posts = get_posts(array( + 'posts_per_page' => 1, + 'post_type' => 'acf-field-group', + 'post_status' => array('publish', 'acf-disabled', 'trash'), + 'orderby' => 'menu_order title', + 'order' => 'ASC', + 'suppress_filters' => false, + 'cache_results' => true, + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false, + 'acf_group_key' => $id + )); + + // Update $post_id with a non false value. + $post_id = $posts ? $posts[0]->ID : 0; + + // Update cache. + wp_cache_set( $cache_key, $post_id, 'acf' ); + } + + // Check $post_id and return the post when possible. + if( $post_id ) { + return get_post( $post_id ); + } + } + + // Return false by default. + return false; +} + +/** + * acf_is_field_group_key + * + * Returns true if the given identifier is a field group key. + * + * @date 6/12/2013 + * @since 5.0.0 + * + * @param string $id The identifier. + * @return bool + */ +function acf_is_field_group_key( $id = '' ) { + + // Check if $id is a string starting with "group_". + if( is_string($id) && substr($id, 0, 6) === 'group_' ) { + return true; + } + + /** + * Filters whether the $id is a field group key. + * + * @date 23/1/19 + * @since 5.7.10 + * + * @param bool $bool The result. + * @param string $id The identifier. + */ + return apply_filters( 'acf/is_field_group_key', false, $id ); +} + +/** + * acf_validate_field_group + * + * Ensures the given field group is valid. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param array $field The field group array. + * @return array + */ +function acf_validate_field_group( $field_group = array() ) { + + // Bail early if already valid. + if( is_array($field_group) && !empty($field_group['_valid']) ) { + return $field_group; + } + + // Apply defaults. + $field_group = wp_parse_args($field_group, array( + 'ID' => 0, + 'key' => '', + 'title' => '', + 'fields' => array(), + 'location' => array(), + 'menu_order' => 0, + 'position' => 'normal', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => array(), + 'active' => true, + 'description' => '', + )); + + // Field group is now valid. + $field_group['_valid'] = 1; + + /** + * Filters the $field_group array to validate settings. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The field group array. + */ + $field_group = apply_filters( 'acf/validate_field_group', $field_group ); + + // return + return $field_group; +} + +/** + * acf_get_valid_field_group + * + * Ensures the given field group is valid. + * + * @date 28/09/13 + * @since 5.0.0 + * + * @param array $field_group The field group array. + * @return array + */ +function acf_get_valid_field_group( $field_group = false ) { + return acf_validate_field_group( $field_group ); +} + +/** + * acf_translate_field_group + * + * Translates a field group's settings. + * + * @date 8/03/2016 + * @since 5.3.2 + * + * @param array $field_group The field group array. + * @return array + */ +function acf_translate_field_group( $field_group = array() ) { + + // Get settings. + $l10n = acf_get_setting('l10n'); + $l10n_textdomain = acf_get_setting('l10n_textdomain'); + + // Translate field settings if textdomain is set. + if( $l10n && $l10n_textdomain ) { + + $field_group['title'] = acf_translate( $field_group['title'] ); + + /** + * Filters the $field group array to translate strings. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The field group array. + */ + $field_group = apply_filters( "acf/translate_field_group", $field_group ); + } + + // Return field. + return $field_group; +} + +// Translate field groups passing through validation. +add_action('acf/validate_field_group', 'acf_translate_field_group'); + + +/** + * acf_get_field_groups + * + * Returns and array of field_groups for the given $filter. + * + * @date 30/09/13 + * @since 5.0.0 + * + * @param array $filter An array of args to filter results by. + * @return array + */ +function acf_get_field_groups( $filter = array() ) { + + // Vars. + $field_groups = array(); + + // Check database. + $raw_field_groups = acf_get_raw_field_groups(); + if( $raw_field_groups ) { + foreach( $raw_field_groups as $raw_field_group ) { + $field_groups[] = acf_get_field_group( $raw_field_group['ID'] ); + } + } + + /** + * Filters the $field_groups array. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_groups The array of field_groups. + */ + $field_groups = apply_filters( 'acf/load_field_groups', $field_groups ); + + // Filter results. + if( $filter ) { + return acf_filter_field_groups( $field_groups, $filter ); + } + + // Return field groups. + return $field_groups; +} + +/** + * acf_get_raw_field_groups + * + * Returns and array of raw field_group data. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param void + * @return array + */ +function acf_get_raw_field_groups() { + + // Try cache. + $cache_key = acf_cache_key( "acf_get_field_group_posts" ); + $post_ids = wp_cache_get( $cache_key, 'acf' ); + if( $post_ids === false ) { + + // Query posts. + $posts = get_posts(array( + 'posts_per_page' => -1, + 'post_type' => 'acf-field-group', + 'orderby' => 'menu_order title', + 'order' => 'ASC', + 'suppress_filters' => false, // Allow WPML to modify the query + 'cache_results' => true, + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false, + 'post_status' => array('publish', 'acf-disabled'), + )); + + // Update $post_ids with a non false value. + $post_ids = array(); + foreach( $posts as $post ) { + $post_ids[] = $post->ID; + } + + // Update cache. + wp_cache_set( $cache_key, $post_ids, 'acf' ); + } + + // Loop over ids and populate array of field groups. + $field_groups = array(); + foreach( $post_ids as $post_id ) { + $field_groups[] = acf_get_raw_field_group( $post_id ); + } + + // Return field groups. + return $field_groups; +} + +/** + * acf_filter_field_groups + * + * Returns a filtered aray of field groups based on the given $args. + * + * @date 29/11/2013 + * @since 5.0.0 + * + * @param array $field_groups An array of field groups. + * @param array $args An array of location args. + * @return array + */ +function acf_filter_field_groups( $field_groups, $args = array() ) { + + // Loop over field groups and check visibility. + $filtered = array(); + if( $field_groups ) { + foreach( $field_groups as $field_group ) { + if( acf_get_field_group_visibility( $field_group, $args ) ) { + $filtered[] = $field_group; + } + } + } + + // Return filtered. + return $filtered; +} + +/** + * acf_get_field_group_visibility + * + * Returns true if the given field group's location rules match the given $args. + * + * @date 7/10/13 + * @since 5.0.0 + * + * @param array $field_groups An array of field groups. + * @param array $args An array of location args. + * @return bool + */ +function acf_get_field_group_visibility( $field_group, $args = array() ) { + + // Check if active. + if( !$field_group['active'] ) { + return false; + } + + // Check if location rules exist + if( $field_group['location'] ) { + + // Get the current screen. + $screen = acf_get_location_screen( $args ); + + // Loop through location groups. + foreach( $field_group['location'] as $group ) { + + // ignore group if no rules. + if( empty($group) ) { + continue; + } + + // Loop over rules and determine if all rules match. + $match_group = true; + foreach( $group as $rule ) { + if( !acf_match_location_rule( $rule, $screen, $field_group ) ) { + $match_group = false; + break; + } + } + + // If this group matches, show the field group. + if( $match_group ) { + return true; + } + } + } + + // Return default. + return false; +} + +/** + * acf_update_field_group + * + * Updates a field group in the database. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param array $field_group The field group array. + * @return array + */ +function acf_update_field_group( $field_group ) { + + // Validate field group. + $field_group = acf_get_valid_field_group( $field_group ); + + // May have been posted. Remove slashes. + $field_group = wp_unslash( $field_group ); + + // Parse types (converts string '0' to int 0). + $field_group = acf_parse_types( $field_group ); + + // Clean up location keys. + if( $field_group['location'] ) { + + // Remove empty values and convert to associated array. + $field_group['location'] = array_filter( $field_group['location'] ); + $field_group['location'] = array_values( $field_group['location'] ); + $field_group['location'] = array_map( 'array_filter', $field_group['location'] ); + $field_group['location'] = array_map( 'array_values', $field_group['location'] ); + } + + // Make a backup of field group data and remove some args. + $_field_group = $field_group; + acf_extract_vars( $_field_group, array( 'ID', 'key', 'title', 'menu_order', 'fields', 'active', '_valid' ) ); + + // Create array of data to save. + $save = array( + 'ID' => $field_group['ID'], + 'post_status' => $field_group['active'] ? 'publish' : 'acf-disabled', + 'post_type' => 'acf-field-group', + 'post_title' => $field_group['title'], + 'post_name' => $field_group['key'], + 'post_excerpt' => sanitize_title( $field_group['title'] ), + 'post_content' => maybe_serialize( $_field_group ), + 'menu_order' => $field_group['menu_order'], + ); + + // Unhook wp_targeted_link_rel() filter from WP 5.1 corrupting serialized data. + remove_filter( 'content_save_pre', 'wp_targeted_link_rel' ); + + // Slash data. + // WP expects all data to be slashed and will unslash it (fixes '\' character issues). + $save = wp_slash( $save ); + + // Update or Insert. + if( $field_group['ID'] ) { + wp_update_post( $save ); + } else { + $field_group['ID'] = wp_insert_post( $save ); + } + + // Flush field group cache. + acf_flush_field_group_cache( $field_group ); + + /** + * Fires immediately after a field group has been updated. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The field group array. + */ + do_action( 'acf/update_field_group', $field_group ); + + // Return field group. + return $field_group; +} + +/** + * _acf_apply_unique_field_group_slug + * + * Allows full control over 'acf-field-group' slugs. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param string $slug The post slug. + * @param int $post_ID Post ID. + * @param string $post_status The post status. + * @param string $post_type Post type. + * @param int $post_parent Post parent ID + * @param string $original_slug The original post slug. + */ +function _acf_apply_unique_field_group_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) { + + // Check post type and reset to original value. + if( $post_type === 'acf-field-group' ) { + return $original_slug; + } + + // Return slug. + return $slug; +} + +// Hook into filter. +add_filter( 'wp_unique_post_slug', '_acf_apply_unique_field_group_slug', 999, 6 ); + +/** + * acf_flush_field_group_cache + * + * Deletes all caches for this field group. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param array $field_group The field group array. + * @return void + */ +function acf_flush_field_group_cache( $field_group ) { + + // Delete stored data. + acf_get_store( 'field-groups' )->remove( $field_group['key'] ); + + // Flush cached post_id for this field group's key. + wp_cache_delete( acf_cache_key( "acf_get_field_group_post:key:{$field_group['key']}" ), 'acf' ); + + // Flush cached array of post_ids for collection of field groups. + wp_cache_delete( acf_cache_key( "acf_get_field_group_posts" ), 'acf' ); +} + +/** + * acf_delete_field_group + * + * Deletes a field group from the database. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param (int|string) $id The field group ID, key or name. + * @return bool True if field group was deleted. + */ +function acf_delete_field_group( $id = 0 ) { + + // Disable filters to ensure ACF loads data from DB. + acf_disable_filters(); + + // Get the field_group. + $field_group = acf_get_field_group( $id ); + + // Bail early if field group was not found. + if( !$field_group || !$field_group['ID'] ) { + return false; + } + + // Delete fields. + $fields = acf_get_fields( $field_group ); + if( $fields ) { + foreach( $fields as $field ) { + acf_delete_field( $field['ID'] ); + } + } + + // Delete post. + wp_delete_post( $field_group['ID'], true ); + + // Flush field group cache. + acf_flush_field_group_cache( $field_group ); + + /** + * Fires immediately after a field group has been deleted. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The field group array. + */ + do_action( 'acf/delete_field_group', $field_group ); + + // Return true. + return true; +} + +/** + * acf_trash_field_group + * + * Trashes a field group from the database. + * + * @date 2/10/13 + * @since 5.0.0 + * + * @param (int|string) $id The field group ID, key or name. + * @return bool True if field group was trashed. + */ +function acf_trash_field_group( $id = 0 ) { + + // Disable filters to ensure ACF loads data from DB. + acf_disable_filters(); + + // Get the field_group. + $field_group = acf_get_field_group( $id ); + + // Bail early if field_group was not found. + if( !$field_group || !$field_group['ID'] ) { + return false; + } + + // Trash fields. + $fields = acf_get_fields( $field_group ); + if( $fields ) { + foreach( $fields as $field ) { + acf_trash_field( $field['ID'] ); + } + } + + // Trash post. + wp_trash_post( $field_group['ID'], true ); + + // Flush field group cache. + acf_flush_field_group_cache( $field_group ); + + /** + * Fires immediately after a field_group has been trashed. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The field_group array. + */ + do_action( 'acf/trash_field_group', $field_group ); + + // Return true. + return true; +} + +/** + * acf_untrash_field_group + * + * Restores a field_group from the trash. + * + * @date 2/10/13 + * @since 5.0.0 + * + * @param (int|string) $id The field_group ID, key or name. + * @return bool True if field_group was trashed. + */ +function acf_untrash_field_group( $id = 0 ) { + + // Disable filters to ensure ACF loads data from DB. + acf_disable_filters(); + + // Get the field_group. + $field_group = acf_get_field_group( $id ); + + // Bail early if field_group was not found. + if( !$field_group || !$field_group['ID'] ) { + return false; + } + + // Untrash fields. + $fields = acf_get_fields( $field_group ); + if( $fields ) { + foreach( $fields as $field ) { + acf_untrash_field( $field['ID'] ); + } + } + + // Untrash post. + wp_untrash_post( $field_group['ID'], true ); + + // Flush field group cache. + acf_flush_field_group_cache( $field_group ); + + /** + * Fires immediately after a field_group has been trashed. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The field_group array. + */ + do_action( 'acf/untrash_field_group', $field_group ); + + // Return true. + return true; +} + +/** + * acf_is_field_group + * + * Returns true if the given params match a field group. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param array $field_group The field group array. + * @param mixed $id An optional identifier to search for. + * @return bool + */ +function acf_is_field_group( $field_group = false ) { + return ( + is_array($field_group) + && isset($field_group['key']) + && isset($field_group['title']) + ); +} + +/** + * acf_duplicate_field_group + * + * Duplicates a field group. + * + * @date 16/06/2014 + * @since 5.0.0 + * + * @param (int|string) $id The field_group ID, key or name. + * @param int $new_post_id Optional post ID to override. + * @return array The new field group. + */ +function acf_duplicate_field_group( $id = 0, $new_post_id = 0 ){ + + // Disable filters to ensure ACF loads data from DB. + acf_disable_filters(); + + // Get the field_group. + $field_group = acf_get_field_group( $id ); + + // Bail early if field_group was not found. + if( !$field_group || !$field_group['ID'] ) { + return false; + } + + // Get fields. + $fields = acf_get_fields( $field_group ); + + // Update attributes. + $field_group['ID'] = $new_post_id; + $field_group['key'] = uniqid('group_'); + + // Add (copy) to title when apropriate. + if( !$new_post_id ) { + $field_group['title'] .= ' (' . __("copy", 'acf') . ')'; + } + + // When importing a new field group, insert a temporary post and set the field group's ID. + // This allows fields to be updated before the field group (field group ID is needed for field parent setting). + if( !$field_group['ID'] ) { + $field_group['ID'] = wp_insert_post( array( 'post_title' => $field_group['key'] ) ); + } + + // Duplicate fields. + $duplicates = acf_duplicate_fields( $fields, $field_group['ID'] ); + + // Save field group. + $field_group = acf_update_field_group( $field_group ); + + /** + * Fires immediately after a field_group has been duplicated. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The field_group array. + */ + do_action( 'acf/duplicate_field_group', $field_group ); + + // return + return $field_group; +} + +/** + * acf_get_field_group_style + * + * Returns the CSS styles generated from field group settings. + * + * @date 20/10/13 + * @since 5.0.0 + * + * @param array $field_group The field group array. + * @return string. + */ +function acf_get_field_group_style( $field_group ) { + + // Vars. + $style = ''; + $elements = array( + 'permalink' => '#edit-slug-box', + 'the_content' => '#postdivrich', + 'excerpt' => '#postexcerpt', + 'custom_fields' => '#postcustom', + 'discussion' => '#commentstatusdiv', + 'comments' => '#commentsdiv', + 'slug' => '#slugdiv', + 'author' => '#authordiv', + 'format' => '#formatdiv', + 'page_attributes' => '#pageparentdiv', + 'featured_image' => '#postimagediv', + 'revisions' => '#revisionsdiv', + 'categories' => '#categorydiv', + 'tags' => '#tagsdiv-post_tag', + 'send-trackbacks' => '#trackbacksdiv' + ); + + // Loop over field group settings and generate list of selectors to hide. + if( is_array($field_group['hide_on_screen']) ) { + $hide = array(); + foreach( $field_group['hide_on_screen'] as $k ) { + if( isset($elements[ $k ]) ) { + $id = $elements[ $k ]; + $hide[] = $id; + $hide[] = '#screen-meta label[for=' . substr($id, 1) . '-hide]'; + } + } + $style = implode(', ', $hide) . ' {display: none;}'; + } + + /** + * Filters the generated CSS styles. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param string $style The CSS styles. + * @param array $field_group The field group array. + */ + return apply_filters('acf/get_field_group_style', $style, $field_group); +} + +/** + * acf_get_field_group_edit_link + * + * Checks if the current user can edit the field group and returns the edit url. + * + * @date 23/9/18 + * @since 5.7.7 + * + * @param int $post_id The field group ID. + * @return string + */ +function acf_get_field_group_edit_link( $post_id ) { + if( $post_id && acf_current_user_can_admin() ) { + return admin_url('post.php?post=' . $post_id . '&action=edit'); + } + return ''; +} + +/** + * acf_prepare_field_group_for_export + * + * Returns a modified field group ready for export. + * + * @date 11/03/2014 + * @since 5.0.0 + * + * @param array $field_group The field group array. + * @return array + */ +function acf_prepare_field_group_for_export( $field_group = array() ) { + + // Remove args. + acf_extract_vars( $field_group, array( 'ID', 'local', '_valid' ) ); + + // Prepare fields. + $field_group['fields'] = acf_prepare_fields_for_export( $field_group['fields'] ); + + /** + * Filters the $field_group array before being returned to the export tool. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The $field group array. + */ + return apply_filters( 'acf/prepare_field_group_for_export', $field_group ); +} + +/** + * acf_import_field_group + * + * Imports a field group into the databse. + * + * @date 11/03/2014 + * @since 5.0.0 + * + * @param array $field_group The field group array. + * @return array The new field group. + */ +function acf_import_field_group( $field_group ) { + + // Disable filters to ensure data is not modified by local, clone, etc. + $filters = acf_disable_filters(); + + // Validate field group. + $field_group = acf_get_valid_field_group( $field_group ); + + // Stores a map of field "key" => "ID". + $ids = array(); + + // Stores a map of field "parent_key" => "child_count". + $count = array(); + + // Prepare fields for import. + $fields = acf_prepare_fields_for_import( $field_group['fields'] ); + + // If the field group has an ID, review and delete stale fields in the databse. + if( $field_group['ID'] ) { + + // Load database fields. + $db_fields = acf_get_fields( $field_group ); + $db_fields = acf_prepare_fields_for_import( $db_fields ); + + // Generate map of "index" => "key" data. + $keys = wp_list_pluck( $fields, 'key' ); + + // Loop over db fields and delete those who don't exist in $new_fields. + foreach( $db_fields as $field ) { + + // Add field data to $ids map. + $ids[ $field['key'] ] = $field['ID']; + + // Delete field if not in $keys. + if( !in_array($field['key'], $keys) ) { + acf_delete_field( $field['ID'] ); + } + } + } + + // When importing a new field group, insert a temporary post and set the field group's ID. + // This allows fields to be updated before the field group (field group ID is needed for field parent setting). + if( !$field_group['ID'] ) { + $field_group['ID'] = wp_insert_post( array( 'post_title' => $field_group['key'] ) ); + } + + // Add field group data to $ids map. + $ids[ $field_group['key'] ] = $field_group['ID']; + + // Add count to map. + $count[ $field_group['ID'] ] = 0; + + // Loop over and add fields. + if( $fields ) { + foreach( $fields as $field ) { + + // Check $ids map for existing ID for this key. + if( isset($ids[ $field['key'] ]) ) { + $field['ID'] = $ids[ $field['key'] ]; + } + + // Add field group as parent. + if( empty($field['parent']) ) { + $field['parent'] = $field_group['ID']; + + // Check $ids map for existing parent + } elseif( isset($ids[ $field['parent'] ]) ) { + $field['parent'] = $ids[ $field['parent'] ]; + } + + // Add field menu_order. + if( !isset($count[ $field['parent'] ]) ) { + $count[ $field['parent'] ] = 1; + } else { + $count[ $field['parent'] ]++; + } + + // Only add menu order if doesn't already exist. + // Allows Flexible Content field to set custom order. + if( !isset($field['menu_order']) ) { + $field['menu_order'] = ($count[ $field['parent'] ] - 1); + } + + // Save field. + $field = acf_update_field( $field ); + + // Add field data to $ids map. + $ids[ $field['key'] ] = $field['ID']; + } + } + + // Save field group. + $field_group = acf_update_field_group( $field_group ); + + // Enable filters again. + acf_enable_filters( $filters ); + + /** + * Fires immediately after a field_group has been imported. + * + * @date 12/02/2014 + * @since 5.0.0 + * + * @param array $field_group The field_group array. + */ + do_action( 'acf/import_field_group', $field_group ); + + // return new field group. + return $field_group; +} diff --git a/wp-content/plugins/advanced-custom-fields/includes/acf-form-functions.php b/wp-content/plugins/advanced-custom-fields/includes/acf-form-functions.php new file mode 100644 index 0000000..e430b74 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/acf-form-functions.php @@ -0,0 +1,163 @@ +set( $name, $data ); +} + +/** + * acf_get_form_data + * + * Gets data about the current form. + * + * @date 6/10/13 + * @since 5.0.0 + * + * @param string $name The store name. + * @return mixed + */ +function acf_get_form_data( $name = '' ) { + return acf_get_store( 'form' )->get( $name ); +} + +/** + * acf_form_data + * + * Called within a form to set important information and render hidden inputs. + * + * @date 15/10/13 + * @since 5.0.0 + * + * @param void + * @return void + */ +function acf_form_data( $data = array() ) { + + // Apply defaults. + $data = wp_parse_args($data, array( + + /** @type string The current screen (post, user, taxonomy, etc). */ + 'screen' => 'post', + + /** @type int|string The ID of current post being edited. */ + 'post_id' => 0, + + /** @type bool Enables AJAX validation. */ + 'validation' => true, + )); + + // Create nonce using screen. + $data['nonce'] = wp_create_nonce( $data['screen'] ); + + // Append "changed" input used within "_wp_post_revision_fields" action. + $data['changed'] = 0; + + // Set data. + acf_set_form_data( $data ); + + // Render HTML. + ?> +
                    + $value ) { + acf_hidden_input(array( + 'id' => '_acf_' . $name, + 'name' => '_acf_' . $name, + 'value' => $value + )); + } + + /** + * Fires within the #acf-form-data element to add extra HTML. + * + * @date 15/10/13 + * @since 5.0.0 + * + * @param array $data The form data. + */ + do_action( 'acf/form_data', $data ); + do_action( 'acf/input/form_data', $data ); + + ?> +
                    + $v ) { + $args[ $k ] = isset($_REQUEST[ $k ]) ? $_REQUEST[ $k ] : $args[ $k ]; + } + return $args; +} + +// Register store. +acf_register_store( 'filters' ); + +/** + * acf_enable_filter + * + * Enables a filter with the given name. + * + * @date 14/7/16 + * @since 5.4.0 + * + * @param string name The modifer name. + * @return void + */ +function acf_enable_filter( $name = '' ) { + acf_get_store( 'filters' )->set( $name, true ); +} + +/** + * acf_disable_filter + * + * Disables a filter with the given name. + * + * @date 14/7/16 + * @since 5.4.0 + * + * @param string name The modifer name. + * @return void + */ +function acf_disable_filter( $name = '' ) { + acf_get_store( 'filters' )->set( $name, false ); +} + +/** + * acf_is_filter_enabled + * + * Returns the state of a filter for the given name. + * + * @date 14/7/16 + * @since 5.4.0 + * + * @param string name The modifer name. + * @return array + */ +function acf_is_filter_enabled( $name = '' ) { + return acf_get_store( 'filters' )->get( $name ); +} + +/** + * acf_get_filters + * + * Returns an array of filters in their current state. + * + * @date 14/7/16 + * @since 5.4.0 + * + * @param void + * @return array + */ +function acf_get_filters() { + return acf_get_store( 'filters' )->get(); +} + +/** + * acf_set_filters + * + * Sets an array of filter states. + * + * @date 14/7/16 + * @since 5.4.0 + * + * @param array $filters An Array of modifers + * @return array + */ +function acf_set_filters( $filters = array() ) { + acf_get_store( 'filters' )->set( $filters ); +} + +/** + * acf_disable_filters + * + * Disables all filters and returns the previous state. + * + * @date 14/7/16 + * @since 5.4.0 + * + * @param void + * @return array + */ +function acf_disable_filters() { + + // Get state. + $prev_state = acf_get_filters(); + + // Set all modifers as false. + acf_set_filters( array_map('__return_false', $prev_state) ); + + // Return prev state. + return $prev_state; +} + +/** + * acf_enable_filters + * + * Enables all or an array of specific filters and returns the previous state. + * + * @date 14/7/16 + * @since 5.4.0 + * + * @param array $filters An Array of modifers + * @return array + */ +function acf_enable_filters( $filters = array() ) { + + // Get state. + $prev_state = acf_get_filters(); + + // Allow specific filters to be enabled. + if( $filters ) { + acf_set_filters( $filters ); + + // Set all modifers as true. + } else { + acf_set_filters( array_map('__return_true', $prev_state) ); + } + + // Return prev state. + return $prev_state; +} + +/** + * acf_idval + * + * Parses the provided value for an ID. + * + * @date 29/3/19 + * @since 5.7.14 + * + * @param mixed $value A value to parse. + * @return int + */ +function acf_idval( $value ) { + + // Check if value is numeric. + if( is_numeric($value) ) { + return (int) $value; + + // Check if value is array. + } elseif( is_array($value) ) { + return (int) isset($value['ID']) ? $value['ID'] : 0; + + // Check if value is object. + } elseif( is_object($value) ) { + return (int) isset($value->ID) ? $value->ID : 0; + } + + // Return default. + return 0; +} + +/** + * acf_maybe_idval + * + * Checks value for potential id value. + * + * @date 6/4/19 + * @since 5.7.14 + * + * @param mixed $value A value to parse. + * @return mixed + */ +function acf_maybe_idval( $value ) { + if( $id = acf_idval( $value ) ) { + return $id; + } + return $value; +} + +/** + * acf_numericval + * + * Casts the provided value as eiter an int or float using a simple hack. + * + * @date 11/4/19 + * @since 5.7.14 + * + * @param mixed $value A value to parse. + * @return (int|float) + */ +function acf_numval( $value ) { + return ( intval($value) == floatval($value) ) ? intval($value) : floatval($value); +} + +/** + * acf_idify + * + * Returns an id attribute friendly string. + * + * @date 24/12/17 + * @since 5.6.5 + * + * @param string $str The string to convert. + * @return string + */ +function acf_idify( $str = '' ) { + return str_replace(array('][', '[', ']'), array('-', '-', ''), strtolower($str)); +} + +/** + * acf_slugify + * + * Returns a slug friendly string. + * + * @date 24/12/17 + * @since 5.6.5 + * + * @param string $str The string to convert. + * @return string + */ +function acf_slugify( $str = '' ) { + return str_replace(array('_', '/', ' '), '-', strtolower($str)); +} + +/** + * acf_punctify + * + * Returns a string with correct full stop puctuation. + * + * @date 12/7/19 + * @since 5.8.2 + * + * @param string $str The string to format. + * @return string + */ +function acf_punctify( $str = '' ) { + return trim($str, '.') . '.'; +} + + diff --git a/wp-content/plugins/advanced-custom-fields/includes/acf-hook-functions.php b/wp-content/plugins/advanced-custom-fields/includes/acf-hook-functions.php new file mode 100644 index 0000000..128c3f7 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/acf-hook-functions.php @@ -0,0 +1,220 @@ +set( $filter, array( + 'type' => 'filter', + 'variations' => $variations, + 'index' => $index, + )); + + // Add generic handler. + // Use a priotiry of 10, and accepted args of 10 (ignored by WP). + add_filter( $filter, '_acf_apply_hook_variations', 10, 10 ); +} + +/** + * acf_add_action_variations + * + * Registers variations for the given action. + * + * @date 26/1/19 + * @since 5.7.11 + * + * @param string $action The action name. + * @param array $variations An array variation keys. + * @param int $index The param index to find variation values. + * @return void + */ +function acf_add_action_variations( $action = '', $variations = array(), $index = 0 ) { + + // Store replacement data. + acf_get_store('hook-variations')->set( $action, array( + 'type' => 'action', + 'variations' => $variations, + 'index' => $index, + )); + + // Add generic handler. + // Use a priotiry of 10, and accepted args of 10 (ignored by WP). + add_action( $action, '_acf_apply_hook_variations', 10, 10 ); +} + +/** + * _acf_apply_hook_variations + * + * Applys hook variations during apply_filters() or do_action(). + * + * @date 25/1/19 + * @since 5.7.11 + * + * @param mixed + * @return mixed + */ +function _acf_apply_hook_variations() { + + // Get current filter. + $filter = current_filter(); + + // Get args provided. + $args = func_get_args(); + + // Get variation information. + $variations = acf_get_store('hook-variations')->get( $filter ); + extract( $variations ); + + // Find field in args using index. + $field = $args[ $index ]; + + // Loop over variations and apply filters. + foreach( $variations as $variation ) { + + // Get value from field. + // First look for "backup" value ("_name", "_key"). + if( isset($field[ "_$variation" ]) ) { + $value = $field[ "_$variation" ]; + } elseif( isset($field[ $variation ]) ) { + $value = $field[ $variation ]; + } else { + continue; + } + + // Apply filters. + if( $type === 'filter' ) { + $args[0] = apply_filters_ref_array( "$filter/$variation=$value", $args ); + + // Or do action. + } else { + do_action_ref_array( "$filter/$variation=$value", $args ); + } + } + + // Return first arg. + return $args[0]; +} + +// Register store. +acf_register_store( 'deprecated-hooks' ); + +/** + * acf_add_deprecated_filter + * + * Registers a deprecated filter to run during the replacement. + * + * @date 25/1/19 + * @since 5.7.11 + * + * @param string $deprecated The deprecated hook. + * @param string $version The version this hook was deprecated. + * @param string $replacement The replacement hook. + * @return void + */ +function acf_add_deprecated_filter( $deprecated, $version, $replacement ) { + + // Store replacement data. + acf_get_store('deprecated-hooks')->append(array( + 'type' => 'filter', + 'deprecated' => $deprecated, + 'replacement' => $replacement, + 'version' => $version + )); + + // Add generic handler. + // Use a priotiry of 10, and accepted args of 10 (ignored by WP). + add_filter( $replacement, '_acf_apply_deprecated_hook', 10, 10 ); +} + +/** + * acf_add_deprecated_action + * + * Registers a deprecated action to run during the replacement. + * + * @date 25/1/19 + * @since 5.7.11 + * + * @param string $deprecated The deprecated hook. + * @param string $version The version this hook was deprecated. + * @param string $replacement The replacement hook. + * @return void + */ +function acf_add_deprecated_action( $deprecated, $version, $replacement ) { + + // Store replacement data. + acf_get_store('deprecated-hooks')->append(array( + 'type' => 'action', + 'deprecated' => $deprecated, + 'replacement' => $replacement, + 'version' => $version + )); + + // Add generic handler. + // Use a priotiry of 10, and accepted args of 10 (ignored by WP). + add_filter( $replacement, '_acf_apply_deprecated_hook', 10, 10 ); +} + +/** + * _acf_apply_deprecated_hook + * + * Applys a deprecated filter during apply_filters() or do_action(). + * + * @date 25/1/19 + * @since 5.7.11 + * + * @param mixed + * @return mixed + */ +function _acf_apply_deprecated_hook() { + + // Get current hook. + $hook = current_filter(); + + // Get args provided. + $args = func_get_args(); + + // Get deprecated items for this hook. + $items = acf_get_store('deprecated-hooks')->query(array( 'replacement' => $hook )); + + // Loop over results. + foreach( $items as $item ) { + + // Extract data. + extract( $item ); + + // Check if anyone is hooked into this deprecated hook. + if( has_filter($deprecated) ) { + + // Log warning. + //_deprecated_hook( $deprecated, $version, $hook ); + + // Apply filters. + if( $type === 'filter' ) { + $args[0] = apply_filters_ref_array( $deprecated, $args ); + + // Or do action. + } else { + do_action_ref_array( $deprecated, $args ); + } + } + } + + // Return first arg. + return $args[0]; +} + diff --git a/wp-content/plugins/advanced-custom-fields/includes/acf-input-functions.php b/wp-content/plugins/advanced-custom-fields/includes/acf-input-functions.php new file mode 100644 index 0000000..702da04 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/acf-input-functions.php @@ -0,0 +1,472 @@ + $v ) { + + // String (but don't trim value). + if( is_string($v) && ($k !== 'value') ) { + $v = trim($v); + + // Boolean + } elseif( is_bool($v) ) { + $v = $v ? 1 : 0; + + // Object + } elseif( is_array($v) || is_object($v) ) { + $v = json_encode($v); + } + + // Generate HTML. + $html .= sprintf( ' %s="%s"', esc_attr($k), esc_attr($v) ); + } + + // Return trimmed. + return trim( $html ); +} + +/** + * acf_esc_html + * + * Encodes +post_type !== 'acf-field-group' ) { + return $post_id; + } + + // only save once! WordPress save's a revision as well. + if( wp_is_post_revision($post_id) ) { + return $post_id; + } + + // verify nonce + if( !acf_verify_nonce('field_group') ) { + return $post_id; + } + + // Bail early if request came from an unauthorised user. + if( !current_user_can(acf_get_setting('capability')) ) { + return $post_id; + } + + + // disable filters to ensure ACF loads raw data from DB + acf_disable_filters(); + + + // save fields + if( !empty($_POST['acf_fields']) ) { + + // loop + foreach( $_POST['acf_fields'] as $field ) { + + // vars + $specific = false; + $save = acf_extract_var( $field, 'save' ); + + + // only saved field if has changed + if( $save == 'meta' ) { + $specific = array( + 'menu_order', + 'post_parent', + ); + } + + // set parent + if( !$field['parent'] ) { + $field['parent'] = $post_id; + } + + // save field + acf_update_field( $field, $specific ); + + } + } + + + // delete fields + if( $_POST['_acf_delete_fields'] ) { + + // clean + $ids = explode('|', $_POST['_acf_delete_fields']); + $ids = array_map( 'intval', $ids ); + + + // loop + foreach( $ids as $id ) { + + // bai early if no id + if( !$id ) continue; + + + // delete + acf_delete_field( $id ); + + } + + } + + + // add args + $_POST['acf_field_group']['ID'] = $post_id; + $_POST['acf_field_group']['title'] = $_POST['post_title']; + + + // save field group + acf_update_field_group( $_POST['acf_field_group'] ); + + + // return + return $post_id; + } + + + /* + * mb_fields + * + * This function will render the HTML for the medtabox 'acf-field-group-fields' + * + * @type function + * @date 28/09/13 + * @since 5.0.0 + * + * @param N/A + * @return N/A + */ + + function mb_fields() { + + // global + global $field_group; + + + // get fields + $view = array( + 'fields' => acf_get_fields( $field_group ), + 'parent' => 0 + ); + + + // load view + acf_get_view('field-group-fields', $view); + + } + + + /* + * mb_options + * + * This function will render the HTML for the medtabox 'acf-field-group-options' + * + * @type function + * @date 28/09/13 + * @since 5.0.0 + * + * @param N/A + * @return N/A + */ + + function mb_options() { + + // global + global $field_group; + + + // field key (leave in for compatibility) + if( !acf_is_field_group_key( $field_group['key']) ) { + + $field_group['key'] = uniqid('group_'); + + } + + + // view + acf_get_view('field-group-options'); + + } + + + /* + * mb_locations + * + * This function will render the HTML for the medtabox 'acf-field-group-locations' + * + * @type function + * @date 28/09/13 + * @since 5.0.0 + * + * @param N/A + * @return N/A + */ + + function mb_locations() { + + // global + global $field_group; + + + // UI needs at lease 1 location rule + if( empty($field_group['location']) ) { + + $field_group['location'] = array( + + // group 0 + array( + + // rule 0 + array( + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'post', + ) + ) + + ); + } + + + // view + acf_get_view('field-group-locations'); + + } + + + /* + * ajax_render_location_rule + * + * This function can be accessed via an AJAX action and will return the result from the render_location_value function + * + * @type function (ajax) + * @date 30/09/13 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function ajax_render_location_rule() { + + // validate + if( !acf_verify_ajax() ) die(); + + // validate rule + $rule = acf_validate_location_rule($_POST['rule']); + + // view + acf_get_view( 'html-location-rule', array( + 'rule' => $rule + )); + + // die + die(); + } + + + /* + * ajax_render_field_settings + * + * This function will return HTML containing the field's settings based on it's new type + * + * @type function (ajax) + * @date 30/09/13 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function ajax_render_field_settings() { + + // validate + if( !acf_verify_ajax() ) die(); + + // vars + $field = acf_maybe_get_POST('field'); + + // check + if( !$field ) die(); + + // set prefix + $field['prefix'] = acf_maybe_get_POST('prefix'); + + // validate + $field = acf_get_valid_field( $field ); + + // render + do_action("acf/render_field_settings/type={$field['type']}", $field); + + // return + die(); + + } + + /* + * ajax_move_field + * + * description + * + * @type function + * @date 20/01/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function ajax_move_field() { + + // disable filters to ensure ACF loads raw data from DB + acf_disable_filters(); + + + $args = acf_parse_args($_POST, array( + 'nonce' => '', + 'post_id' => 0, + 'field_id' => 0, + 'field_group_id' => 0 + )); + + + // verify nonce + if( !wp_verify_nonce($args['nonce'], 'acf_nonce') ) die(); + + + // confirm? + if( $args['field_id'] && $args['field_group_id'] ) { + + // vars + $field = acf_get_field($args['field_id']); + $field_group = acf_get_field_group($args['field_group_id']); + + + // update parent + $field['parent'] = $field_group['ID']; + + + // remove conditional logic + $field['conditional_logic'] = 0; + + + // update field + acf_update_field($field); + + + // message + $a = '' . $field_group['title'] . ''; + echo '

                    ' . __('Move Complete.', 'acf') . '

                    '; + echo '

                    ' . sprintf( __('The %s field can now be found in the %s field group', 'acf'), $field['label'], $a ). '

                    '; + echo '' . __("Close Window",'acf') . ''; + die(); + + } + + + // get all field groups + $field_groups = acf_get_field_groups(); + $choices = array(); + + + // check + if( !empty($field_groups) ) { + + // loop + foreach( $field_groups as $field_group ) { + + // bail early if no ID + if( !$field_group['ID'] ) continue; + + + // bail ealry if is current + if( $field_group['ID'] == $args['post_id'] ) continue; + + + // append + $choices[ $field_group['ID'] ] = $field_group['title']; + + } + + } + + + // render options + $field = acf_get_valid_field(array( + 'type' => 'select', + 'name' => 'acf_field_group', + 'choices' => $choices + )); + + + echo '

                    ' . __('Please select the destination for this field', 'acf') . '

                    '; + + echo '
                    '; + + // render + acf_render_field_wrap( $field ); + + echo ''; + + echo ''; + + + // die + die(); + + } + +} + +// initialize +new acf_admin_field_group(); + +endif; + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/admin-field-groups.php b/wp-content/plugins/advanced-custom-fields/includes/admin/admin-field-groups.php new file mode 100644 index 0000000..f9ac7d7 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/admin-field-groups.php @@ -0,0 +1,830 @@ +url) ); + exit; + } + } + + /* + * current_screen + * + * This function is fired when loading the admin page before HTML has been rendered. + * + * @type action (current_screen) + * @date 21/07/2014 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function current_screen() { + + // validate screen + if( !acf_is_screen('edit-acf-field-group') ) { + return; + } + + + // customize post_status + global $wp_post_statuses; + + + // modify publish post status + $wp_post_statuses['publish']->label_count = _n_noop( 'Active (%s)', 'Active (%s)', 'acf' ); + + + // reorder trash to end + $wp_post_statuses['trash'] = acf_extract_var( $wp_post_statuses, 'trash' ); + + + // check stuff + $this->check_duplicate(); + $this->check_sync(); + + + // actions + add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts')); + add_action('admin_footer', array($this, 'admin_footer')); + + + // columns + add_filter('manage_edit-acf-field-group_columns', array($this, 'field_group_columns'), 10, 1); + add_action('manage_acf-field-group_posts_custom_column', array($this, 'field_group_columns_html'), 10, 2); + + } + + + /* + * admin_enqueue_scripts + * + * This function will add the already registered css + * + * @type function + * @date 28/09/13 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function admin_enqueue_scripts() { + + wp_enqueue_script('acf-input'); + + } + + + /* + * check_duplicate + * + * This function will check for any $_GET data to duplicate + * + * @type function + * @date 17/10/13 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function check_duplicate() { + + // Display notice + if( $ids = acf_maybe_get_GET('acfduplicatecomplete') ) { + + // explode + $ids = explode(',', $ids); + $total = count($ids); + + // Generate text. + $text = sprintf( _n( 'Field group duplicated.', '%s field groups duplicated.', $total, 'acf' ), $total ); + + // Add links to text. + $links = array(); + foreach( $ids as $id ) { + $links[] = '' . get_the_title( $id ) . ''; + } + $text .= ' ' . implode( ', ', $links ); + + // Add notice + acf_add_admin_notice( $text, 'success' ); + } + + + // vars + $ids = array(); + + + // check single + if( $id = acf_maybe_get_GET('acfduplicate') ) { + + $ids[] = $id; + + // check multiple + } elseif( acf_maybe_get_GET('action2') === 'acfduplicate' ) { + + $ids = acf_maybe_get_GET('post'); + + } + + + // sync + if( !empty($ids) ) { + + // validate + check_admin_referer('bulk-posts'); + + + // vars + $new_ids = array(); + + + // loop + foreach( $ids as $id ) { + + // duplicate + $field_group = acf_duplicate_field_group( $id ); + + + // increase counter + $new_ids[] = $field_group['ID']; + + } + + + // redirect + wp_redirect( admin_url( $this->url . '&acfduplicatecomplete=' . implode(',', $new_ids)) ); + exit; + + } + + } + + + /* + * check_sync + * + * This function will check for any $_GET data to sync + * + * @type function + * @date 9/12/2014 + * @since 5.1.5 + * + * @param n/a + * @return n/a + */ + + function check_sync() { + + // Display notice + if( $ids = acf_maybe_get_GET('acfsynccomplete') ) { + + // explode + $ids = explode(',', $ids); + $total = count($ids); + + // Generate text. + $text = sprintf( _n( 'Field group synchronised.', '%s field groups synchronised.', $total, 'acf' ), $total ); + + // Add links to text. + $links = array(); + foreach( $ids as $id ) { + $links[] = '' . get_the_title( $id ) . ''; + } + $text .= ' ' . implode( ', ', $links ); + + // Add notice + acf_add_admin_notice( $text, 'success' ); + } + + + // vars + $groups = acf_get_field_groups(); + + + // bail early if no field groups + if( empty($groups) ) return; + + + // find JSON field groups which have not yet been imported + foreach( $groups as $group ) { + + // vars + $local = acf_maybe_get($group, 'local', false); + $modified = acf_maybe_get($group, 'modified', 0); + $private = acf_maybe_get($group, 'private', false); + + // Ignore if is private. + if( $private ) { + continue; + + // Ignore not local "json". + } elseif( $local !== 'json' ) { + continue; + + // Append to sync if not yet in database. + } elseif( !$group['ID'] ) { + $this->sync[ $group['key'] ] = $group; + + // Append to sync if "json" modified time is newer than database. + } elseif( $modified && $modified > get_post_modified_time('U', true, $group['ID'], true) ) { + $this->sync[ $group['key'] ] = $group; + } + } + + + // bail if no sync needed + if( empty($this->sync) ) return; + + + // maybe sync + $sync_keys = array(); + + + // check single + if( $key = acf_maybe_get_GET('acfsync') ) { + + $sync_keys[] = $key; + + // check multiple + } elseif( acf_maybe_get_GET('action2') === 'acfsync' ) { + + $sync_keys = acf_maybe_get_GET('post'); + + } + + + // sync + if( !empty($sync_keys) ) { + + // validate + check_admin_referer('bulk-posts'); + + + // disable filters to ensure ACF loads raw data from DB + acf_disable_filters(); + acf_enable_filter('local'); + + + // disable JSON + // - this prevents a new JSON file being created and causing a 'change' to theme files - solves git anoyance + acf_update_setting('json', false); + + + // vars + $new_ids = array(); + + + // loop + foreach( $sync_keys as $key ) { + + // Bail early if not found. + if( !isset($this->sync[ $key ]) ) { + continue; + } + + // Get field group. + $field_group = $this->sync[ $key ]; + + // Append fields. + $field_group['fields'] = acf_get_fields( $field_group ); + + // Import field group. + $field_group = acf_import_field_group( $field_group ); + + // Append imported ID. + $new_ids[] = $field_group['ID']; + } + + + // redirect + wp_redirect( admin_url( $this->url . '&acfsynccomplete=' . implode(',', $new_ids)) ); + exit; + + } + + + // filters + add_filter('views_edit-acf-field-group', array($this, 'list_table_views')); + + } + + + /* + * list_table_views + * + * This function will add an extra link for JSON in the field group list table + * + * @type function + * @date 3/12/2014 + * @since 5.1.5 + * + * @param $views (array) + * @return $views + */ + + function list_table_views( $views ) { + + // vars + $class = ''; + $total = count($this->sync); + + // active + if( acf_maybe_get_GET('post_status') === 'sync' ) { + + // actions + add_action('admin_footer', array($this, 'sync_admin_footer'), 5); + + + // set active class + $class = ' class="current"'; + + + // global + global $wp_list_table; + + + // update pagination + $wp_list_table->set_pagination_args( array( + 'total_items' => $total, + 'total_pages' => 1, + 'per_page' => $total + )); + + } + + + // add view + $views['json'] = '' . __('Sync available', 'acf') . ' (' . $total . ')'; + + + // return + return $views; + + } + + + /* + * trashed_post + * + * This function is run when a post object is sent to the trash + * + * @type action (trashed_post) + * @date 8/01/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return n/a + */ + + function trashed_post( $post_id ) { + + // validate post type + if( get_post_type($post_id) != 'acf-field-group' ) { + + return; + + } + + + // trash field group + acf_trash_field_group( $post_id ); + + } + + + /* + * untrashed_post + * + * This function is run when a post object is restored from the trash + * + * @type action (untrashed_post) + * @date 8/01/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return n/a + */ + + function untrashed_post( $post_id ) { + + // validate post type + if( get_post_type($post_id) != 'acf-field-group' ) { + + return; + + } + + + // trash field group + acf_untrash_field_group( $post_id ); + + } + + + /* + * deleted_post + * + * This function is run when a post object is deleted from the trash + * + * @type action (deleted_post) + * @date 8/01/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return n/a + */ + + function deleted_post( $post_id ) { + + // validate post type + if( get_post_type($post_id) != 'acf-field-group' ) { + + return; + + } + + + // trash field group + acf_delete_field_group( $post_id ); + + } + + + /* + * field_group_columns + * + * This function will customize the columns for the field group table + * + * @type filter (manage_edit-acf-field-group_columns) + * @date 28/09/13 + * @since 5.0.0 + * + * @param $columns (array) + * @return $columns (array) + */ + + function field_group_columns( $columns ) { + + return array( + 'cb' => '', + 'title' => __('Title', 'acf'), + 'acf-fg-description' => __('Description', 'acf'), + 'acf-fg-status' => '', + 'acf-fg-count' => __('Fields', 'acf'), + ); + + } + + + /* + * field_group_columns_html + * + * This function will render the HTML for each table cell + * + * @type action (manage_acf-field-group_posts_custom_column) + * @date 28/09/13 + * @since 5.0.0 + * + * @param $column (string) + * @param $post_id (int) + * @return n/a + */ + + function field_group_columns_html( $column, $post_id ) { + + // vars + $field_group = acf_get_field_group( $post_id ); + + + // render + $this->render_column( $column, $field_group ); + + } + + function render_column( $column, $field_group ) { + + // description + if( $column == 'acf-fg-description' ) { + + if( $field_group['description'] ) { + + echo '' . acf_esc_html($field_group['description']) . ''; + + } + + // status + } elseif( $column == 'acf-fg-status' ) { + + if( isset($this->sync[ $field_group['key'] ]) ) { + + echo ' '; + + } + + if( $field_group['active'] ) { + + //echo ' '; + + } else { + + echo ' '; + + } + + // fields + } elseif( $column == 'acf-fg-count' ) { + + echo esc_html( acf_get_field_count( $field_group ) ); + + } + + } + + + /* + * admin_footer + * + * This function will render extra HTML onto the page + * + * @type action (admin_footer) + * @date 23/06/12 + * @since 3.1.8 + * + * @param n/a + * @return n/a + */ + + function admin_footer() { + + // vars + $url_home = 'https://www.advancedcustomfields.com'; + $icon = ''; + +?> + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/admin-notices.php b/wp-content/plugins/advanced-custom-fields/includes/admin/admin-notices.php new file mode 100644 index 0000000..b6ffdf5 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/admin-notices.php @@ -0,0 +1,146 @@ + '', + + /** @type string Optional HTML alternative to text. + 'html' => '', */ + + /** @type string The type of notice (warning, error, success, info). */ + 'type' => 'info', + + /** @type bool If the notice can be dismissed. */ + 'dismissible' => true, + ); + + /** + * render + * + * Renders the notice HTML. + * + * @date 27/12/18 + * @since 5.8.0 + * + * @param void + * @return void + */ + function render() { + + // Ensure text contains punctuation. + // todo: Remove this after updating translations. + $text = $this->get('text'); + if( substr($text, -1) !== '.' && substr($text, -1) !== '>' ) { + $text .= '.'; + } + + // Print HTML. + printf('
                    %s
                    ', + + // Type class. + $this->get('type'), + + // Dismissible class. + $this->get('dismissible') ? 'is-dismissible' : '', + + // InnerHTML + $this->has('html') ? $this->get('html') : wpautop($text) + ); + } +} + +endif; // class_exists check + +/** +* acf_new_admin_notice +* +* Instantiates and returns a new model. +* +* @date 23/12/18 +* @since 5.8.0 +* +* @param array $data Optional data to set. +* @return ACF_Admin_Notice +*/ +function acf_new_admin_notice( $data = false ) { + + // Create notice. + $instance = new ACF_Admin_Notice( $data ); + + // Register notice. + acf_get_store( 'notices' )->set( $instance->cid, $instance ); + + // Return notice. + return $instance; +} + +/** + * acf_render_admin_notices + * + * Renders all admin notices HTML. + * + * @date 10/1/19 + * @since 5.7.10 + * + * @param void + * @return void + */ +function acf_render_admin_notices() { + + // Get notices. + $notices = acf_get_store( 'notices' )->get_data(); + + // Loop over notices and render. + if( $notices ) { + foreach( $notices as $notice ) { + $notice->render(); + } + } +} + +// Render notices during admin action. +add_action('admin_notices', 'acf_render_admin_notices', 99); + +/** + * acf_add_admin_notice + * + * Creates and returns a new notice. + * + * @date 17/10/13 + * @since 5.0.0 + * + * @param string $text The admin notice text. + * @param string $class The type of notice (warning, error, success, info). + * @return ACF_Admin_Notice + */ +function acf_add_admin_notice( $text = '', $type = 'info' ) { + return acf_new_admin_notice( array( 'text' => $text, 'type' => $type ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/admin-tools.php b/wp-content/plugins/advanced-custom-fields/includes/admin/admin-tools.php new file mode 100644 index 0000000..c081fb0 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/admin-tools.php @@ -0,0 +1,354 @@ +tools[ $instance->name ] = $instance; + + } + + + /** + * get_tool + * + * This function will return a tool tool class + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param string $name + * @return n/a + */ + + function get_tool( $name ) { + + return isset( $this->tools[$name] ) ? $this->tools[$name] : null; + + } + + + /** + * get_tools + * + * This function will return an array of all tools + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return array + */ + + function get_tools() { + + return $this->tools; + + } + + + /* + * admin_menu + * + * This function will add the ACF menu item to the WP admin + * + * @type action (admin_menu) + * @date 28/09/13 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function admin_menu() { + + // bail early if no show_admin + if( !acf_get_setting('show_admin') ) return; + + + // add page + $page = add_submenu_page('edit.php?post_type=acf-field-group', __('Tools','acf'), __('Tools','acf'), acf_get_setting('capability'), 'acf-tools', array($this, 'html')); + + + // actions + add_action('load-' . $page, array($this, 'load')); + + } + + + /** + * load + * + * description + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function load() { + + // disable filters (default to raw data) + acf_disable_filters(); + + + // include tools + $this->include_tools(); + + + // check submit + $this->check_submit(); + + + // load acf scripts + acf_enqueue_scripts(); + + } + + + /** + * include_tools + * + * description + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function include_tools() { + + // include + acf_include('includes/admin/tools/class-acf-admin-tool.php'); + acf_include('includes/admin/tools/class-acf-admin-tool-export.php'); + acf_include('includes/admin/tools/class-acf-admin-tool-import.php'); + + + // action + do_action('acf/include_admin_tools'); + + } + + + /** + * check_submit + * + * description + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function check_submit() { + + // loop + foreach( $this->get_tools() as $tool ) { + + // load + $tool->load(); + + + // submit + if( acf_verify_nonce($tool->name) ) { + $tool->submit(); + } + + } + + } + + + /** + * html + * + * description + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function html() { + + // vars + $screen = get_current_screen(); + $active = acf_maybe_get_GET('tool'); + + + // view + $view = array( + 'screen_id' => $screen->id, + 'active' => $active + ); + + + // register metaboxes + foreach( $this->get_tools() as $tool ) { + + // check active + if( $active && $active !== $tool->name ) continue; + + + // add metabox + add_meta_box( 'acf-admin-tool-' . $tool->name, $tool->title, array($this, 'metabox_html'), $screen->id, 'normal', 'default', array('tool' => $tool->name) ); + + } + + + // view + acf_get_view( 'html-admin-tools', $view ); + + } + + + /** + * meta_box_html + * + * description + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function metabox_html( $post, $metabox ) { + + // vars + $tool = $this->get_tool($metabox['args']['tool']); + + + ?> +
                    + html(); ?> + name ); ?> + + admin_tools = new acf_admin_tools(); + +endif; // class_exists check + + +/* +* acf_register_admin_tool +* +* alias of acf()->admin_tools->register_tool() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_register_admin_tool( $class ) { + + return acf()->admin_tools->register_tool( $class ); + +} + + +/* +* acf_get_admin_tools_url +* +* This function will return the admin URL to the tools page +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_admin_tools_url() { + + return admin_url('edit.php?post_type=acf-field-group&page=acf-tools'); + +} + + +/* +* acf_get_admin_tool_url +* +* This function will return the admin URL to the tools page +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_admin_tool_url( $tool = '' ) { + + return acf_get_admin_tools_url() . '&tool='.$tool; + +} + + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/admin-upgrade.php b/wp-content/plugins/advanced-custom-fields/includes/admin/admin-upgrade.php new file mode 100644 index 0000000..4e535a9 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/admin-upgrade.php @@ -0,0 +1,225 @@ + __("Upgrade Database", 'acf'), + 'button_url' => admin_url('index.php?page=acf-upgrade'), + 'confirm' => true + ); + + // view + acf_get_view('html-notice-upgrade', $view); + } + + /** + * network_admin_notices + * + * Displays the DB Upgrade prompt on a multi site. + * + * @date 23/8/18 + * @since 5.7.3 + * + * @param void + * @return void + */ + function network_admin_notices() { + + // vars + $view = array( + 'button_text' => __("Review sites & upgrade", 'acf'), + 'button_url' => network_admin_url('index.php?page=acf-upgrade-network'), + 'confirm' => false + ); + + // view + acf_get_view('html-notice-upgrade', $view); + } + + /** + * admin_html + * + * Displays the HTML for the admin page. + * + * @date 24/8/18 + * @since 5.7.4 + * + * @param void + * @return void + */ + function admin_html() { + acf_get_view('html-admin-page-upgrade'); + } + + /** + * network_admin_html + * + * Displays the HTML for the network upgrade admin page. + * + * @date 24/8/18 + * @since 5.7.4 + * + * @param void + * @return void + */ + function network_admin_html() { + acf_get_view('html-admin-page-upgrade-network'); + } +} + +// instantiate +acf_new_instance('ACF_Admin_Upgrade'); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/admin.php b/wp-content/plugins/advanced-custom-fields/includes/admin/admin.php new file mode 100644 index 0000000..31f147d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/admin.php @@ -0,0 +1,89 @@ +admin = new acf_admin(); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/settings-info.php b/wp-content/plugins/advanced-custom-fields/includes/admin/settings-info.php new file mode 100644 index 0000000..563a2d4 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/settings-info.php @@ -0,0 +1,102 @@ + acf_get_setting('version'), + 'have_pro' => acf_get_setting('pro'), + 'tabs' => array( + 'new' => __("What's New", 'acf'), + 'changelog' => __("Changelog", 'acf') + ), + 'active' => 'new' + ); + + + // set active tab + $tab = acf_maybe_get_GET('tab'); + if( $tab && isset($view['tabs'][ $tab ]) ) { + + $view['active'] = $tab; + + } + + + // load view + acf_get_view('settings-info', $view); + + } + +} + + +// initialize +new acf_settings_info(); + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool-export.php b/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool-export.php new file mode 100644 index 0000000..f506dc6 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool-export.php @@ -0,0 +1,596 @@ +name = 'export'; + $this->title = __("Export Field Groups", 'acf'); + + + // active + if( $this->is_active() ) { + $this->title .= ' - ' . __('Generate PHP', 'acf'); + } + + } + + + /** + * submit + * + * This function will run when the tool's form has been submit + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function submit() { + + // vars + $action = acf_maybe_get_POST('action'); + + + // download + if( $action === 'download' ) { + + $this->submit_download(); + + // generate + } elseif( $action === 'generate' ) { + + $this->submit_generate(); + + } + + } + + + /** + * submit_download + * + * description + * + * @date 17/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function submit_download() { + + // vars + $json = $this->get_selected(); + + + // validate + if( $json === false ) { + return acf_add_admin_notice( __("No field groups selected", 'acf'), 'warning' ); + } + + + // headers + $file_name = 'acf-export-' . date('Y-m-d') . '.json'; + header( "Content-Description: File Transfer" ); + header( "Content-Disposition: attachment; filename={$file_name}" ); + header( "Content-Type: application/json; charset=utf-8" ); + + + // return + echo acf_json_encode( $json ); + die; + + } + + + /** + * submit_generate + * + * description + * + * @date 17/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function submit_generate() { + + // vars + $keys = $this->get_selected_keys(); + + + // validate + if( !$keys ) { + return acf_add_admin_notice( __("No field groups selected", 'acf'), 'warning' ); + } + + + // url + $url = add_query_arg( 'keys', implode('+', $keys), $this->get_url() ); + + + // redirect + wp_redirect( $url ); + exit; + + } + + + /** + * load + * + * description + * + * @date 21/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function load() { + + // active + if( $this->is_active() ) { + + // get selected keys + $selected = $this->get_selected_keys(); + + + // add notice + if( $selected ) { + $count = count($selected); + $text = sprintf( _n( 'Exported 1 field group.', 'Exported %s field groups.', $count, 'acf' ), $count ); + acf_add_admin_notice( $text, 'success' ); + } + } + + } + + + /** + * html + * + * This function will output the metabox HTML + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function html() { + + // single (generate PHP) + if( $this->is_active() ) { + + $this->html_single(); + + // archive + } else { + + $this->html_archive(); + + } + + } + + + /** + * html_field_selection + * + * description + * + * @date 24/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function html_field_selection() { + + // vars + $choices = array(); + $selected = $this->get_selected_keys(); + $field_groups = acf_get_field_groups(); + + + // loop + if( $field_groups ) { + foreach( $field_groups as $field_group ) { + $choices[ $field_group['key'] ] = esc_html( $field_group['title'] ); + } + } + + + // render + acf_render_field_wrap(array( + 'label' => __('Select Field Groups', 'acf'), + 'type' => 'checkbox', + 'name' => 'keys', + 'prefix' => false, + 'value' => $selected, + 'toggle' => true, + 'choices' => $choices, + )); + + } + + + /** + * html_panel_selection + * + * description + * + * @date 21/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function html_panel_selection() { + + ?> +
                    +

                    +
                    + html_field_selection(); ?> +
                    +
                    + +
                    +

                    +
                    + __('Empty settings', 'acf'), + 'type' => 'select', + 'name' => 'minimal', + 'prefix' => false, + 'value' => '', + 'choices' => array( + 'all' => __('Include all settings', 'acf'), + 'minimal' => __('Ignore empty settings', 'acf'), + ) + )); +*/ + + ?> +
                    +
                    + +

                    +
                    + html_field_selection(); ?> +
                    +

                    + + +

                    + +
                    +
                    + html_generate(); ?> +
                    +
                    + html_panel_selection(); ?> +

                    + +

                    +
                    +
                    + get_selected(); + $str_replace = array( + " " => "\t", + "'!!__(!!\'" => "__('", + "!!\', !!\'" => "', '", + "!!\')!!'" => "')", + "array (" => "array(" + ); + $preg_replace = array( + '/([\t\r\n]+?)array/' => 'array', + '/[0-9]+ => array/' => 'array' + ); + + + ?> +

                    + +

                    + +

                    + + get_selected_keys(); + $json = array(); + + + // bail early if no keys + if( !$selected ) return false; + + + // construct JSON + foreach( $selected as $key ) { + + // load field group + $field_group = acf_get_field_group( $key ); + + + // validate field group + if( empty($field_group) ) continue; + + + // load fields + $field_group['fields'] = acf_get_fields( $field_group ); + + + // prepare for export + $field_group = acf_prepare_field_group_for_export( $field_group ); + + + // add to json array + $json[] = $field_group; + + } + + + // return + return $json; + + } +} + +// initialize +acf_register_admin_tool( 'ACF_Admin_Tool_Export' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool-import.php b/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool-import.php new file mode 100644 index 0000000..1faaccd --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool-import.php @@ -0,0 +1,157 @@ +name = 'import'; + $this->title = __("Import Field Groups", 'acf'); + $this->icon = 'dashicons-upload'; + + } + + + /** + * html + * + * This function will output the metabox HTML + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function html() { + + ?> +

                    +
                    + __('Select File', 'acf'), + 'type' => 'file', + 'name' => 'acf_import_file', + 'value' => false, + 'uploader' => 'basic', + )); + + ?> +
                    +

                    + +

                    + ID; + } + + // Import field group. + $field_group = acf_import_field_group( $field_group ); + + // append message + $ids[] = $field_group['ID']; + } + + // Count number of imported field groups. + $total = count($ids); + + // Generate text. + $text = sprintf( _n( 'Imported 1 field group', 'Imported %s field groups', $total, 'acf' ), $total ); + + // Add links to text. + $links = array(); + foreach( $ids as $id ) { + $links[] = '' . get_the_title( $id ) . ''; + } + $text .= ' ' . implode( ', ', $links ); + + // Add notice + acf_add_admin_notice( $text, 'success' ); + } +} + +// initialize +acf_register_admin_tool( 'ACF_Admin_Tool_Import' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool.php b/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool.php new file mode 100644 index 0000000..9f4c683 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/tools/class-acf-admin-tool.php @@ -0,0 +1,195 @@ +name; + } + + + /** + * get_title + * + * This function will return the Tool's title + * + * @date 19/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function get_title() { + return $this->title; + } + + + /** + * get_url + * + * This function will return the Tool's title + * + * @date 19/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function get_url() { + return acf_get_admin_tool_url( $this->name ); + } + + + /** + * is_active + * + * This function will return true if the tool is active + * + * @date 19/10/17 + * @since 5.6.3 + * + * @param n/a + * @return bool + */ + + function is_active() { + return acf_maybe_get_GET('tool') === $this->name; + } + + + /* + * __construct + * + * This function will setup the class functionality + * + * @type function + * @date 27/6/17 + * @since 5.6.0 + * + * @param n/a + * @return n/a + */ + + function __construct() { + + // initialize + $this->initialize(); + + } + + + /** + * initialize + * + * This function will initialize the admin tool + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function initialize() { + + /* do nothing */ + + } + + + + /** + * load + * + * This function is called during the admin page load + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function load() { + + /* do nothing */ + + } + + + /** + * html + * + * This function will output the metabox HTML + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function html() { + + + + } + + + /** + * submit + * + * This function will run when the tool's form has been submit + * + * @date 10/10/17 + * @since 5.6.3 + * + * @param n/a + * @return n/a + */ + + function submit() { + + + } + + +} + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-field-conditional-logic.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-field-conditional-logic.php new file mode 100644 index 0000000..a49f761 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-field-conditional-logic.php @@ -0,0 +1,158 @@ + +
                    + + + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-field.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-field.php new file mode 100644 index 0000000..0c6657e --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-field.php @@ -0,0 +1,184 @@ + 'acf-field-object acf-field-object-' . acf_slugify($field['type']), + 'data-id' => $field['ID'], + 'data-key' => $field['key'], + 'data-type' => $field['type'], +); + +$meta = array( + 'ID' => $field['ID'], + 'key' => $field['key'], + 'parent' => $field['parent'], + 'menu_order' => $i, + 'save' => '' +); + +?> +
                    > + +
                    + $v ): + acf_hidden_input(array( 'name' => $prefix . '[' . $k . ']', 'value' => $v, 'id' => $id . '-' . $k )); + endforeach; ?> +
                    + +
                    + +
                    + +
                    +
                      + + + 'true_false', + 'name' => 'conditional_logic', + 'prefix' => $field['prefix'], + 'value' => $disabled ? 0 : 1, + 'ui' => 1, + 'class' => 'conditions-toggle', + )); + + ?> +
                      style="display:none;"> + + $group ): + + // validate + if( empty($group) ) continue; + + + // vars + // $group_id must be completely different to $rule_id to avoid JS issues + $group_id = "group_{$group_id}"; + $h4 = ($group_id == "group_0") ? __("Show this field if",'acf') : __("or",'acf'); + + ?> +
                      + +

                      + + + + $rule ): + + // valid rule + $rule = wp_parse_args( $rule, array( + 'field' => '', + 'operator' => '', + 'value' => '', + )); + + + // vars + // $group_id must be completely different to $rule_id to avoid JS issues + $rule_id = "rule_{$rule_id}"; + $prefix = "{$field['prefix']}[conditional_logic][{$group_id}][{$rule_id}]"; + + // data attributes + $attributes = array( + 'data-id' => $rule_id, + 'data-field' => $rule['field'], + 'data-operator' => $rule['operator'], + 'data-value' => $rule['value'] + ); + + ?> + > + + + + + + + + +
                      + 'select', + 'prefix' => $prefix, + 'name' => 'field', + 'class' => 'condition-rule-field', + 'disabled' => $disabled, + 'value' => $rule['field'], + 'choices' => array( + $rule['field'] => $rule['field'] + ) + )); + + ?> + + 'select', + 'prefix' => $prefix, + 'name' => 'operator', + 'class' => 'condition-rule-operator', + 'disabled' => $disabled, + 'value' => $rule['operator'], + 'choices' => array( + $rule['operator'] => $rule['operator'] + ) + )); + + ?> + + 'select', + 'prefix' => $prefix, + 'name' => 'value', + 'class' => 'condition-rule-value', + 'disabled' => $disabled, + 'value' => $rule['value'], + 'choices' => array( + $rule['value'] => $rule['value'] + ) + )); + + ?> + + + + +
                      + +
                      + + +

                      + + + +
                      + +
                      + + __('Field Label','acf'), + 'instructions' => __('This is the name which will appear on the EDIT page','acf'), + 'name' => 'label', + 'type' => 'text', + 'class' => 'field-label' + ), true); + + + // name + acf_render_field_setting($field, array( + 'label' => __('Field Name','acf'), + 'instructions' => __('Single word, no spaces. Underscores and dashes allowed','acf'), + 'name' => 'name', + 'type' => 'text', + 'class' => 'field-name' + ), true); + + + // type + acf_render_field_setting($field, array( + 'label' => __('Field Type','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'type', + 'choices' => acf_get_grouped_field_types(), + 'class' => 'field-type' + ), true); + + + // instructions + acf_render_field_setting($field, array( + 'label' => __('Instructions','acf'), + 'instructions' => __('Instructions for authors. Shown when submitting data','acf'), + 'type' => 'textarea', + 'name' => 'instructions', + 'rows' => 5 + ), true); + + + // required + acf_render_field_setting($field, array( + 'label' => __('Required?','acf'), + 'instructions' => '', + 'type' => 'true_false', + 'name' => 'required', + 'ui' => 1, + 'class' => 'field-required' + ), true); + + + // 3rd party settings + do_action('acf/render_field_settings', $field); + + + // type specific settings + do_action("acf/render_field_settings/type={$field['type']}", $field); + + + // conditional logic + acf_get_view('field-group-field-conditional-logic', array( 'field' => $field )); + + + // wrapper + acf_render_field_wrap(array( + 'label' => __('Wrapper Attributes','acf'), + 'instructions' => '', + 'type' => 'number', + 'name' => 'width', + 'prefix' => $field['prefix'] . '[wrapper]', + 'value' => $field['wrapper']['width'], + 'prepend' => __('width', 'acf'), + 'append' => '%', + 'wrapper' => array( + 'data-name' => 'wrapper', + 'class' => 'acf-field-setting-wrapper' + ) + ), 'tr'); + + acf_render_field_wrap(array( + 'label' => '', + 'instructions' => '', + 'type' => 'text', + 'name' => 'class', + 'prefix' => $field['prefix'] . '[wrapper]', + 'value' => $field['wrapper']['class'], + 'prepend' => __('class', 'acf'), + 'wrapper' => array( + 'data-append' => 'wrapper' + ) + ), 'tr'); + + acf_render_field_wrap(array( + 'label' => '', + 'instructions' => '', + 'type' => 'text', + 'name' => 'id', + 'prefix' => $field['prefix'] . '[wrapper]', + 'value' => $field['wrapper']['id'], + 'prepend' => __('id', 'acf'), + 'wrapper' => array( + 'data-append' => 'wrapper' + ) + ), 'tr'); + + ?> + + + + + +
                      + +
                      +
                      + +
                      \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-fields.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-fields.php new file mode 100644 index 0000000..e4a9e50 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-fields.php @@ -0,0 +1,52 @@ +
                      + +
                        +
                      • +
                      • +
                      • +
                      • +
                      • +
                      + +
                      + +
                      + + Add Field button to create your first field.",'acf'); ?> +
                      + + $field ): + + acf_get_view('field-group-field', array( 'field' => $field, 'i' => $i )); + + endforeach; + + endif; ?> + +
                      + +
                        +
                      • + +
                      • +
                      + + 'acfcloneindex', + 'key' => 'acfcloneindex', + 'label' => __('New Field','acf'), + 'name' => 'new_field', + 'type' => 'text' + )); + + ?> + + + +
                      \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-locations.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-locations.php new file mode 100644 index 0000000..12c76a8 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-locations.php @@ -0,0 +1,45 @@ + +
                      +
                      + +

                      +
                      +
                      +
                      + + $group ): + + // bail ealry if no group + if( empty($group) ) return; + + + // view + acf_get_view('html-location-group', array( + 'group' => $group, + 'group_id' => "group_{$i}" + )); + + endforeach; ?> + +

                      + + + +
                      +
                      +
                      + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-options.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-options.php new file mode 100644 index 0000000..e72cd08 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/field-group-options.php @@ -0,0 +1,155 @@ + __('Active','acf'), + 'instructions' => '', + 'type' => 'true_false', + 'name' => 'active', + 'prefix' => 'acf_field_group', + 'value' => $field_group['active'], + 'ui' => 1, + //'ui_on_text' => __('Active', 'acf'), + //'ui_off_text' => __('Inactive', 'acf'), +)); + + +// style +acf_render_field_wrap(array( + 'label' => __('Style','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'style', + 'prefix' => 'acf_field_group', + 'value' => $field_group['style'], + 'choices' => array( + 'default' => __("Standard (WP metabox)",'acf'), + 'seamless' => __("Seamless (no metabox)",'acf'), + ) +)); + + +// position +acf_render_field_wrap(array( + 'label' => __('Position','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'position', + 'prefix' => 'acf_field_group', + 'value' => $field_group['position'], + 'choices' => array( + 'acf_after_title' => __("High (after title)",'acf'), + 'normal' => __("Normal (after content)",'acf'), + 'side' => __("Side",'acf'), + ), + 'default_value' => 'normal' +)); + + +// label_placement +acf_render_field_wrap(array( + 'label' => __('Label placement','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'label_placement', + 'prefix' => 'acf_field_group', + 'value' => $field_group['label_placement'], + 'choices' => array( + 'top' => __("Top aligned",'acf'), + 'left' => __("Left aligned",'acf'), + ) +)); + + +// instruction_placement +acf_render_field_wrap(array( + 'label' => __('Instruction placement','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'instruction_placement', + 'prefix' => 'acf_field_group', + 'value' => $field_group['instruction_placement'], + 'choices' => array( + 'label' => __("Below labels",'acf'), + 'field' => __("Below fields",'acf'), + ) +)); + + +// menu_order +acf_render_field_wrap(array( + 'label' => __('Order No.','acf'), + 'instructions' => __('Field groups with a lower order will appear first','acf'), + 'type' => 'number', + 'name' => 'menu_order', + 'prefix' => 'acf_field_group', + 'value' => $field_group['menu_order'], +)); + + +// description +acf_render_field_wrap(array( + 'label' => __('Description','acf'), + 'instructions' => __('Shown in field group list','acf'), + 'type' => 'text', + 'name' => 'description', + 'prefix' => 'acf_field_group', + 'value' => $field_group['description'], +)); + + +// hide on screen +$choices = array( + 'permalink' => __("Permalink", 'acf'), + 'the_content' => __("Content Editor",'acf'), + 'excerpt' => __("Excerpt", 'acf'), + 'custom_fields' => __("Custom Fields", 'acf'), + 'discussion' => __("Discussion", 'acf'), + 'comments' => __("Comments", 'acf'), + 'revisions' => __("Revisions", 'acf'), + 'slug' => __("Slug", 'acf'), + 'author' => __("Author", 'acf'), + 'format' => __("Format", 'acf'), + 'page_attributes' => __("Page Attributes", 'acf'), + 'featured_image' => __("Featured Image", 'acf'), + 'categories' => __("Categories", 'acf'), + 'tags' => __("Tags", 'acf'), + 'send-trackbacks' => __("Send Trackbacks", 'acf'), +); +if( acf_get_setting('remove_wp_meta_box') ) { + unset( $choices['custom_fields'] ); +} + +acf_render_field_wrap(array( + 'label' => __('Hide on screen','acf'), + 'instructions' => __('Select items to hide them from the edit screen.','acf') . '

                      ' . __("If multiple field groups appear on an edit screen, the first field group's options will be used (the one with the lowest order number)",'acf'), + 'type' => 'checkbox', + 'name' => 'hide_on_screen', + 'prefix' => 'acf_field_group', + 'value' => $field_group['hide_on_screen'], + 'toggle' => true, + 'choices' => $choices +)); + + +// 3rd party settings +do_action('acf/render_field_group_settings', $field_group); + +?> +
                      + +
                      + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-page-upgrade-network.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-page-upgrade-network.php new file mode 100644 index 0000000..ae00943 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-page-upgrade-network.php @@ -0,0 +1,216 @@ + + +
                      + +

                      + +

                      +

                      + + + + + + + + + + + + + + + + + + $site ): + + // switch blog + switch_to_blog( $site['blog_id'] ); + + ?> + class="alternate"> + + + + + + +
                      + + + +
                      + + + +
                      + + + + +
                      +
                      + + + + + +
                      + +

                      +

                      Return to network dashboard', 'acf'), network_admin_url() ); ?>

                      + + +
                      \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-page-upgrade.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-page-upgrade.php new file mode 100644 index 0000000..545c0b0 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-page-upgrade.php @@ -0,0 +1,119 @@ + + +
                      + +

                      + + + +

                      +

                      +

                      +

                      See what\'s new', 'acf' ), admin_url('edit.php?post_type=acf-field-group&page=acf-settings-info') ); ?>

                      + + + + + +

                      + + +
                      \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-tools.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-tools.php new file mode 100644 index 0000000..145ac6c --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-admin-tools.php @@ -0,0 +1,27 @@ + +
                      + +

                      + +
                      + +
                      + +
                      \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-location-group.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-location-group.php new file mode 100644 index 0000000..14dc961 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-location-group.php @@ -0,0 +1,25 @@ +
                      + +

                      + + + + $rule ): + + // validate rule + $rule = acf_validate_location_rule($rule); + + // append id and group + $rule['id'] = "rule_{$i}"; + $rule['group'] = $group_id; + + // view + acf_get_view('html-location-rule', array( + 'rule' => $rule + )); + + endforeach; ?> + +
                      + +
                      \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-location-rule.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-location-rule.php new file mode 100644 index 0000000..1171133 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-location-rule.php @@ -0,0 +1,91 @@ + + + + 'select', + 'name' => 'param', + 'prefix' => $prefix, + 'value' => $rule['param'], + 'choices' => $choices, + 'class' => 'refresh-location-rule' + )); + + } + + ?> + + + 'select', + 'name' => 'operator', + 'prefix' => $prefix, + 'value' => $rule['operator'], + 'choices' => $choices + )); + + // custom + } else { + + echo $choices; + + } + + ?> + + + 'select', + 'name' => 'value', + 'prefix' => $prefix, + 'value' => $rule['value'], + 'choices' => $choices + )); + + // custom + } else { + + echo $choices; + + } + + ?> + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-notice-upgrade.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-notice-upgrade.php new file mode 100644 index 0000000..11f40fd --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/html-notice-upgrade.php @@ -0,0 +1,43 @@ + +
                      + +
                      + + +

                      +


                      + +

                      + +
                      + +
                      + +
                      + +
                      + + + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/settings-addons.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/settings-addons.php new file mode 100644 index 0000000..73df28f --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/settings-addons.php @@ -0,0 +1,54 @@ +
                      + +

                      + +
                      + + + + "", + "slug" => "", + "description" => "", + "thumbnail" => "", + "url" => "", + "btn" => __("Download & Install",'acf'), + "btn_color" => "" + )); + + ?> + +
                      + +
                      + + + +
                      +
                      +

                      +

                      +
                      + + +
                      + + + + + +
                      + +
                      \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/admin/views/settings-info.php b/wp-content/plugins/advanced-custom-fields/includes/admin/views/settings-info.php new file mode 100644 index 0000000..1758c42 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/admin/views/settings-info.php @@ -0,0 +1,160 @@ +
                      + +

                      +
                      + + + + + +
                      +

                      +
                      +
                      +

                      +

                      +

                      +
                      +
                      +

                      +

                      +

                      +
                      +
                      +

                      +

                      +

                      +
                      +
                      +
                      + +
                      + +
                      +

                      👋

                      +
                      +
                      +

                      +

                      +

                      Pro version of ACF. With both personal and developer licenses available, premium functionality is more affordable and accessible than ever before!', 'acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?>

                      +
                      + +
                      +

                      +

                      +

                      ACF PRO features.', 'acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?>

                      +
                      + +
                      +

                      +

                      +

                      upgrade guide to answer any questions, but if you do have one, please contact our support team via the help desk.', 'acf'), esc_url('https://www.advancedcustomfields.com/resources/upgrade-guide-acf-pro/'), esc_url('https://www.advancedcustomfields.com/support/')); ?>

                      +
                      +
                      +
                      + +
                      + +
                      + +

                      🎉

                      + +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      +

                      +

                      +
                      + +
                      + +
                      + +
                      + + + +

                      + + + +
                      \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-check-screen.php b/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-check-screen.php new file mode 100644 index 0000000..c56eb56 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-check-screen.php @@ -0,0 +1,98 @@ +request, array( + 'screen' => '', + 'post_id' => 0, + 'ajax' => true, + 'exists' => array() + )); + + // vars + $response = array( + 'results' => array(), + 'style' => '' + ); + + // get field groups + $field_groups = acf_get_field_groups( $args ); + + // loop through field groups + if( $field_groups ) { + foreach( $field_groups as $i => $field_group ) { + + // vars + $item = array( + 'id' => 'acf-' . $field_group['key'], + 'key' => $field_group['key'], + 'title' => $field_group['title'], + 'position' => $field_group['position'], + 'style' => $field_group['style'], + 'label' => $field_group['label_placement'], + 'edit' => acf_get_field_group_edit_link( $field_group['ID'] ), + 'html' => '' + ); + + // append html if doesnt already exist on page + if( !in_array($field_group['key'], $args['exists']) ) { + + // load fields + $fields = acf_get_fields( $field_group ); + + // get field HTML + ob_start(); + + // render + acf_render_fields( $fields, $args['post_id'], 'div', $field_group['instruction_placement'] ); + + $item['html'] = ob_get_clean(); + } + + // append + $response['results'][] = $item; + } + + // Get style from first field group. + $response['style'] = acf_get_field_group_style( $field_groups[0] ); + } + + // Custom metabox order. + if( $this->get('screen') == 'post' ) { + $response['sorted'] = get_user_option('meta-box-order_' . $this->get('post_type')); + } + + // return + return $response; + } +} + +acf_new_instance('ACF_Ajax_Check_Screen'); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-upgrade.php b/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-upgrade.php new file mode 100644 index 0000000..2f08e53 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax-upgrade.php @@ -0,0 +1,54 @@ +has('value') ) { + return acf_update_user_setting( $this->get('name'), $this->get('value') ); + + // get + } else { + return acf_get_user_setting( $this->get('name') ); + } + } +} + +acf_new_instance('ACF_Ajax_User_Setting'); + +endif; // class_exists check diff --git a/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax.php b/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax.php new file mode 100644 index 0000000..46b4f5a --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/ajax/class-acf-ajax.php @@ -0,0 +1,184 @@ +initialize(); + $this->add_actions(); + } + + /** + * has + * + * Returns true if the request has data for the given key. + * + * @date 31/7/18 + * @since 5.7.2 + * + * @param string $key The data key. + * @return boolean + */ + function has( $key = '' ) { + return isset($this->request[$key]); + } + + /** + * get + * + * Returns request data for the given key. + * + * @date 31/7/18 + * @since 5.7.2 + * + * @param string $key The data key. + * @return mixed + */ + function get( $key = '' ) { + return isset($this->request[$key]) ? $this->request[$key] : null; + } + + /** + * set + * + * Sets request data for the given key. + * + * @date 31/7/18 + * @since 5.7.2 + * + * @param string $key The data key. + * @param mixed $value The data value. + * @return ACF_Ajax + */ + function set( $key = '', $value ) { + $this->request[$key] = $value; + return $this; + } + + /** + * initialize + * + * Allows easy access to modifying properties without changing constructor. + * + * @date 31/7/18 + * @since 5.7.2 + * + * @param void + * @return void + */ + function initialize() { + /* do nothing */ + } + + /** + * add_actions + * + * Adds the ajax actions for this response. + * + * @date 31/7/18 + * @since 5.7.2 + * + * @param void + * @return void + */ + function add_actions() { + + // add action for logged-in users + add_action( "wp_ajax_{$this->action}", array($this, 'request') ); + + // add action for non logged-in users + if( $this->public ) { + add_action( "wp_ajax_nopriv_{$this->action}", array($this, 'request') ); + } + } + + /** + * request + * + * Callback for ajax action. Sets up properties and calls the get_response() function. + * + * @date 1/8/18 + * @since 5.7.2 + * + * @param void + * @return void + */ + function request() { + + // Verify ajax request + if( !acf_verify_ajax() ) { + wp_send_json_error(); + } + + // Store data for has() and get() functions. + $this->request = wp_unslash($_REQUEST); + + // Send response. + $this->send( $this->get_response( $this->request ) ); + } + + /** + * get_response + * + * Returns the response data to sent back. + * + * @date 31/7/18 + * @since 5.7.2 + * + * @param array $request The request args. + * @return mixed The response data or WP_Error. + */ + function get_response( $request ) { + return true; + } + + /** + * send + * + * Sends back JSON based on the $response as either success or failure. + * + * @date 31/7/18 + * @since 5.7.2 + * + * @param mixed $response The response to send back. + * @return void + */ + function send( $response ) { + + // Return error. + if( is_wp_error($response) ) { + wp_send_json_error(array( 'error' => $response->get_error_message() )); + + // Return success. + } else { + wp_send_json_success($response); + } + } +} + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/api/api-helpers.php b/wp-content/plugins/advanced-custom-fields/includes/api/api-helpers.php new file mode 100644 index 0000000..1366953 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/api/api-helpers.php @@ -0,0 +1,4848 @@ +has_setting() +* +* @date 2/2/18 +* @since 5.6.5 +* +* @param n/a +* @return n/a +*/ + +function acf_has_setting( $name = '' ) { + return acf()->has_setting( $name ); +} + + +/** +* acf_raw_setting +* +* alias of acf()->get_setting() +* +* @date 2/2/18 +* @since 5.6.5 +* +* @param n/a +* @return n/a +*/ + +function acf_raw_setting( $name = '' ) { + return acf()->get_setting( $name ); +} + + +/* +* acf_update_setting +* +* alias of acf()->update_setting() +* +* @type function +* @date 28/09/13 +* @since 5.0.0 +* +* @param $name (string) +* @param $value (mixed) +* @return n/a +*/ + +function acf_update_setting( $name, $value ) { + + // validate name + $name = acf_validate_setting( $name ); + + // update + return acf()->update_setting( $name, $value ); +} + + +/** +* acf_validate_setting +* +* Returns the changed setting name if available. +* +* @date 2/2/18 +* @since 5.6.5 +* +* @param n/a +* @return n/a +*/ + +function acf_validate_setting( $name = '' ) { + return apply_filters( "acf/validate_setting", $name ); +} + + +/* +* acf_get_setting +* +* alias of acf()->get_setting() +* +* @type function +* @date 28/09/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_setting( $name, $value = null ) { + + // validate name + $name = acf_validate_setting( $name ); + + // check settings + if( acf_has_setting($name) ) { + $value = acf_raw_setting( $name ); + } + + // filter + $value = apply_filters( "acf/settings/{$name}", $value ); + + // return + return $value; +} + + +/* +* acf_append_setting +* +* This function will add a value into the settings array found in the acf object +* +* @type function +* @date 28/09/13 +* @since 5.0.0 +* +* @param $name (string) +* @param $value (mixed) +* @return n/a +*/ + +function acf_append_setting( $name, $value ) { + + // vars + $setting = acf_raw_setting( $name ); + + // bail ealry if not array + if( !is_array($setting) ) { + $setting = array(); + } + + // append + $setting[] = $value; + + // update + return acf_update_setting( $name, $setting ); +} + + +/** +* acf_get_data +* +* Returns data. +* +* @date 28/09/13 +* @since 5.0.0 +* +* @param string $name +* @return mixed +*/ + +function acf_get_data( $name ) { + return acf()->get_data( $name ); +} + + +/** +* acf_set_data +* +* Sets data. +* +* @date 28/09/13 +* @since 5.0.0 +* +* @param string $name +* @param mixed $value +* @return n/a +*/ + +function acf_set_data( $name, $value ) { + return acf()->set_data( $name, $value ); +} + +/* +* acf_init +* +* alias of acf()->init() +* +* @type function +* @date 28/09/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_init() { + + acf()->init(); + +} + + +/* +* acf_has_done +* +* This function will return true if this action has already been done +* +* @type function +* @date 16/12/2015 +* @since 5.3.2 +* +* @param $name (string) +* @return (boolean) +*/ + +function acf_has_done( $name ) { + + // return true if already done + if( acf_raw_setting("has_done_{$name}") ) { + return true; + } + + // update setting and return + acf_update_setting("has_done_{$name}", true); + return false; +} + + + + +/* +* acf_get_external_path +* +* This function will return the path to a file within an external folder +* +* @type function +* @date 22/2/17 +* @since 5.5.8 +* +* @param $file (string) +* @param $path (string) +* @return (string) +*/ + +function acf_get_external_path( $file, $path = '' ) { + + return plugin_dir_path( $file ) . $path; + +} + + +/* +* acf_get_external_dir +* +* This function will return the url to a file within an external folder +* +* @type function +* @date 22/2/17 +* @since 5.5.8 +* +* @param $file (string) +* @param $path (string) +* @return (string) +*/ + +function acf_get_external_dir( $file, $path = '' ) { + + return acf_plugin_dir_url( $file ) . $path; + +} + + +/** +* acf_plugin_dir_url +* +* This function will calculate the url to a plugin folder. +* Different to the WP plugin_dir_url(), this function can calculate for urls outside of the plugins folder (theme include). +* +* @date 13/12/17 +* @since 5.6.8 +* +* @param type $var Description. Default. +* @return type Description. +*/ + +function acf_plugin_dir_url( $file ) { + + // vars + $path = plugin_dir_path( $file ); + $path = wp_normalize_path( $path ); + + + // check plugins + $check_path = wp_normalize_path( realpath(WP_PLUGIN_DIR) ); + if( strpos($path, $check_path) === 0 ) { + return str_replace( $check_path, plugins_url(), $path ); + } + + // check wp-content + $check_path = wp_normalize_path( realpath(WP_CONTENT_DIR) ); + if( strpos($path, $check_path) === 0 ) { + return str_replace( $check_path, content_url(), $path ); + } + + // check root + $check_path = wp_normalize_path( realpath(ABSPATH) ); + if( strpos($path, $check_path) === 0 ) { + return str_replace( $check_path, site_url('/'), $path ); + } + + + // return + return plugin_dir_url( $file ); + +} + + +/* +* acf_parse_args +* +* This function will merge together 2 arrays and also convert any numeric values to ints +* +* @type function +* @date 18/10/13 +* @since 5.0.0 +* +* @param $args (array) +* @param $defaults (array) +* @return $args (array) +*/ + +function acf_parse_args( $args, $defaults = array() ) { + + // parse args + $args = wp_parse_args( $args, $defaults ); + + + // parse types + $args = acf_parse_types( $args ); + + + // return + return $args; + +} + + +/* +* acf_parse_types +* +* This function will convert any numeric values to int and trim strings +* +* @type function +* @date 18/10/13 +* @since 5.0.0 +* +* @param $var (mixed) +* @return $var (mixed) +*/ + +function acf_parse_types( $array ) { + return array_map( 'acf_parse_type', $array ); +} + + +/* +* acf_parse_type +* +* description +* +* @type function +* @date 11/11/2014 +* @since 5.0.9 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_parse_type( $v ) { + + // Check if is string. + if( is_string($v) ) { + + // Trim ("Word " = "Word"). + $v = trim( $v ); + + // Convert int strings to int ("123" = 123). + if( is_numeric($v) && strval(intval($v)) === $v ) { + $v = intval( $v ); + } + } + + // return. + return $v; +} + + +/* +* acf_get_view +* +* This function will load in a file from the 'admin/views' folder and allow variables to be passed through +* +* @type function +* @date 28/09/13 +* @since 5.0.0 +* +* @param $view_name (string) +* @param $args (array) +* @return n/a +*/ + +function acf_get_view( $path = '', $args = array() ) { + + // allow view file name shortcut + if( substr($path, -4) !== '.php' ) { + + $path = acf_get_path("includes/admin/views/{$path}.php"); + + } + + + // include + if( file_exists($path) ) { + + extract( $args ); + include( $path ); + + } + +} + + +/* +* acf_merge_atts +* +* description +* +* @type function +* @date 2/11/2014 +* @since 5.0.9 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_merge_atts( $atts, $extra = array() ) { + + // bail ealry if no $extra + if( empty($extra) ) return $atts; + + + // trim + $extra = array_map('trim', $extra); + $extra = array_filter($extra); + + + // merge in new atts + foreach( $extra as $k => $v ) { + + // append + if( $k == 'class' || $k == 'style' ) { + + $atts[ $k ] .= ' ' . $v; + + // merge + } else { + + $atts[ $k ] = $v; + + } + + } + + + // return + return $atts; + +} + + +/* +* acf_nonce_input +* +* This function will create a basic nonce input +* +* @type function +* @date 24/5/17 +* @since 5.6.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_nonce_input( $nonce = '' ) { + + echo ''; + +} + + +/* +* acf_extract_var +* +* This function will remove the var from the array, and return the var +* +* @type function +* @date 2/10/13 +* @since 5.0.0 +* +* @param $array (array) +* @param $key (string) +* @return (mixed) +*/ + +function acf_extract_var( &$array, $key, $default = null ) { + + // check if exists + // - uses array_key_exists to extract NULL values (isset will fail) + if( is_array($array) && array_key_exists($key, $array) ) { + + // store value + $v = $array[ $key ]; + + + // unset + unset( $array[ $key ] ); + + + // return + return $v; + + } + + + // return + return $default; +} + + +/* +* acf_extract_vars +* +* This function will remove the vars from the array, and return the vars +* +* @type function +* @date 8/10/13 +* @since 5.0.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_extract_vars( &$array, $keys ) { + + $r = array(); + + foreach( $keys as $key ) { + + $r[ $key ] = acf_extract_var( $array, $key ); + + } + + return $r; +} + + +/* +* acf_get_sub_array +* +* This function will return a sub array of data +* +* @type function +* @date 15/03/2016 +* @since 5.3.2 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_get_sub_array( $array, $keys ) { + + $r = array(); + + foreach( $keys as $key ) { + + $r[ $key ] = $array[ $key ]; + + } + + return $r; + +} + + +/** +* acf_get_post_types +* +* Returns an array of post type names. +* +* @date 7/10/13 +* @since 5.0.0 +* +* @param array $args Optional. An array of key => value arguments to match against the post type objects. Default empty array. +* @return array A list of post type names. +*/ + +function acf_get_post_types( $args = array() ) { + + // vars + $post_types = array(); + + // extract special arg + $exclude = acf_extract_var( $args, 'exclude', array() ); + $exclude[] = 'acf-field'; + $exclude[] = 'acf-field-group'; + + // get post type objects + $objects = get_post_types( $args, 'objects' ); + + // loop + foreach( $objects as $i => $object ) { + + // bail early if is exclude + if( in_array($i, $exclude) ) continue; + + // bail early if is builtin (WP) private post type + // - nav_menu_item, revision, customize_changeset, etc + if( $object->_builtin && !$object->public ) continue; + + // append + $post_types[] = $i; + } + + // filter + $post_types = apply_filters('acf/get_post_types', $post_types, $args); + + // return + return $post_types; +} + +function acf_get_pretty_post_types( $post_types = array() ) { + + // get post types + if( empty($post_types) ) { + + // get all custom post types + $post_types = acf_get_post_types(); + + } + + + // get labels + $ref = array(); + $r = array(); + + foreach( $post_types as $post_type ) { + + // vars + $label = acf_get_post_type_label($post_type); + + + // append to r + $r[ $post_type ] = $label; + + + // increase counter + if( !isset($ref[ $label ]) ) { + + $ref[ $label ] = 0; + + } + + $ref[ $label ]++; + } + + + // get slugs + foreach( array_keys($r) as $i ) { + + // vars + $post_type = $r[ $i ]; + + if( $ref[ $post_type ] > 1 ) { + + $r[ $i ] .= ' (' . $i . ')'; + + } + + } + + + // return + return $r; + +} + + + +/* +* acf_get_post_type_label +* +* This function will return a pretty label for a specific post_type +* +* @type function +* @date 5/07/2016 +* @since 5.4.0 +* +* @param $post_type (string) +* @return (string) +*/ + +function acf_get_post_type_label( $post_type ) { + + // vars + $label = $post_type; + + + // check that object exists + // - case exists when importing field group from another install and post type does not exist + if( post_type_exists($post_type) ) { + + $obj = get_post_type_object($post_type); + $label = $obj->labels->singular_name; + + } + + + // return + return $label; + +} + + +/* +* acf_verify_nonce +* +* This function will look at the $_POST['_acf_nonce'] value and return true or false +* +* @type function +* @date 15/10/13 +* @since 5.0.0 +* +* @param $nonce (string) +* @return (boolean) +*/ + +function acf_verify_nonce( $value) { + + // vars + $nonce = acf_maybe_get_POST('_acf_nonce'); + + + // bail early nonce does not match (post|user|comment|term) + if( !$nonce || !wp_verify_nonce($nonce, $value) ) return false; + + + // reset nonce (only allow 1 save) + $_POST['_acf_nonce'] = false; + + + // return + return true; + +} + + +/* +* acf_verify_ajax +* +* This function will return true if the current AJAX request is valid +* It's action will also allow WPML to set the lang and avoid AJAX get_posts issues +* +* @type function +* @date 7/08/2015 +* @since 5.2.3 +* +* @param n/a +* @return (boolean) +*/ + +function acf_verify_ajax() { + + // vars + $nonce = isset($_REQUEST['nonce']) ? $_REQUEST['nonce'] : ''; + + // bail early if not acf nonce + if( !$nonce || !wp_verify_nonce($nonce, 'acf_nonce') ) { + return false; + } + + // action for 3rd party customization + do_action('acf/verify_ajax'); + + // return + return true; +} + + +/* +* acf_get_image_sizes +* +* This function will return an array of available image sizes +* +* @type function +* @date 23/10/13 +* @since 5.0.0 +* +* @param n/a +* @return (array) +*/ + +function acf_get_image_sizes() { + + // vars + $sizes = array( + 'thumbnail' => __("Thumbnail",'acf'), + 'medium' => __("Medium",'acf'), + 'large' => __("Large",'acf') + ); + + + // find all sizes + $all_sizes = get_intermediate_image_sizes(); + + + // add extra registered sizes + if( !empty($all_sizes) ) { + + foreach( $all_sizes as $size ) { + + // bail early if already in array + if( isset($sizes[ $size ]) ) { + + continue; + + } + + + // append to array + $label = str_replace('-', ' ', $size); + $label = ucwords( $label ); + $sizes[ $size ] = $label; + + } + + } + + + // add sizes + foreach( array_keys($sizes) as $s ) { + + // vars + $data = acf_get_image_size($s); + + + // append + if( $data['width'] && $data['height'] ) { + + $sizes[ $s ] .= ' (' . $data['width'] . ' x ' . $data['height'] . ')'; + + } + + } + + + // add full end + $sizes['full'] = __("Full Size",'acf'); + + + // filter for 3rd party customization + $sizes = apply_filters( 'acf/get_image_sizes', $sizes ); + + + // return + return $sizes; + +} + +function acf_get_image_size( $s = '' ) { + + // global + global $_wp_additional_image_sizes; + + + // rename for nicer code + $_sizes = $_wp_additional_image_sizes; + + + // vars + $data = array( + 'width' => isset($_sizes[$s]['width']) ? $_sizes[$s]['width'] : get_option("{$s}_size_w"), + 'height' => isset($_sizes[$s]['height']) ? $_sizes[$s]['height'] : get_option("{$s}_size_h") + ); + + + // return + return $data; + +} + +/** + * acf_version_compare + * + * Similar to the version_compare() function but with extra functionality. + * + * @date 21/11/16 + * @since 5.5.0 + * + * @param string $left The left version number. + * @param string $compare The compare operator. + * @param string $right The right version number. + * @return bool + */ +function acf_version_compare( $left = '', $compare = '>', $right = '' ) { + + // Detect 'wp' placeholder. + if( $left === 'wp' ) { + global $wp_version; + $left = $wp_version; + } + + // Return result. + return version_compare( $left, $right, $compare ); +} + + +/* +* acf_get_full_version +* +* This function will remove any '-beta1' or '-RC1' strings from a version +* +* @type function +* @date 24/11/16 +* @since 5.5.0 +* +* @param $version (string) +* @return (string) +*/ + +function acf_get_full_version( $version = '1' ) { + + // remove '-beta1' or '-RC1' + if( $pos = strpos($version, '-') ) { + + $version = substr($version, 0, $pos); + + } + + + // return + return $version; + +} + + +/* +* acf_get_terms +* +* This function is a wrapper for the get_terms() function +* +* @type function +* @date 28/09/2016 +* @since 5.4.0 +* +* @param $args (array) +* @return (array) +*/ + +function acf_get_terms( $args ) { + + // defaults + $args = wp_parse_args($args, array( + 'taxonomy' => null, + 'hide_empty' => false, + 'update_term_meta_cache' => false, + )); + + // parameters changed in version 4.5 + if( acf_version_compare('wp', '<', '4.5') ) { + return get_terms( $args['taxonomy'], $args ); + } + + // return + return get_terms( $args ); +} + + +/* +* acf_get_taxonomy_terms +* +* This function will return an array of available taxonomy terms +* +* @type function +* @date 7/10/13 +* @since 5.0.0 +* +* @param $taxonomies (array) +* @return (array) +*/ + +function acf_get_taxonomy_terms( $taxonomies = array() ) { + + // force array + $taxonomies = acf_get_array( $taxonomies ); + + + // get pretty taxonomy names + $taxonomies = acf_get_pretty_taxonomies( $taxonomies ); + + + // vars + $r = array(); + + + // populate $r + foreach( array_keys($taxonomies) as $taxonomy ) { + + // vars + $label = $taxonomies[ $taxonomy ]; + $is_hierarchical = is_taxonomy_hierarchical( $taxonomy ); + $terms = acf_get_terms(array( + 'taxonomy' => $taxonomy, + 'hide_empty' => false + )); + + + // bail early i no terms + if( empty($terms) ) continue; + + + // sort into hierachial order! + if( $is_hierarchical ) { + + $terms = _get_term_children( 0, $terms, $taxonomy ); + + } + + + // add placeholder + $r[ $label ] = array(); + + + // add choices + foreach( $terms as $term ) { + + $k = "{$taxonomy}:{$term->slug}"; + $r[ $label ][ $k ] = acf_get_term_title( $term ); + + } + + } + + + // return + return $r; + +} + + +/* +* acf_decode_taxonomy_terms +* +* This function decodes the $taxonomy:$term strings into a nested array +* +* @type function +* @date 27/02/2014 +* @since 5.0.0 +* +* @param $terms (array) +* @return (array) +*/ + +function acf_decode_taxonomy_terms( $strings = false ) { + + // bail early if no terms + if( empty($strings) ) return false; + + + // vars + $terms = array(); + + + // loop + foreach( $strings as $string ) { + + // vars + $data = acf_decode_taxonomy_term( $string ); + $taxonomy = $data['taxonomy']; + $term = $data['term']; + + + // create empty array + if( !isset($terms[ $taxonomy ]) ) { + + $terms[ $taxonomy ] = array(); + + } + + + // append + $terms[ $taxonomy ][] = $term; + + } + + + // return + return $terms; + +} + + +/* +* acf_decode_taxonomy_term +* +* This function will return the taxonomy and term slug for a given value +* +* @type function +* @date 31/03/2014 +* @since 5.0.0 +* +* @param $string (string) +* @return (array) +*/ + +function acf_decode_taxonomy_term( $value ) { + + // vars + $data = array( + 'taxonomy' => '', + 'term' => '' + ); + + + // int + if( is_numeric($value) ) { + + $data['term'] = $value; + + // string + } elseif( is_string($value) ) { + + $value = explode(':', $value); + $data['taxonomy'] = isset($value[0]) ? $value[0] : ''; + $data['term'] = isset($value[1]) ? $value[1] : ''; + + // error + } else { + + return false; + + } + + + // allow for term_id (Used by ACF v4) + if( is_numeric($data['term']) ) { + + // global + global $wpdb; + + + // find taxonomy + if( !$data['taxonomy'] ) { + + $data['taxonomy'] = $wpdb->get_var( $wpdb->prepare("SELECT taxonomy FROM $wpdb->term_taxonomy WHERE term_id = %d LIMIT 1", $data['term']) ); + + } + + + // find term (may have numeric slug '123') + $term = get_term_by( 'slug', $data['term'], $data['taxonomy'] ); + + + // attempt get term via ID (ACF4 uses ID) + if( !$term ) $term = get_term( $data['term'], $data['taxonomy'] ); + + + // bail early if no term + if( !$term ) return false; + + + // update + $data['taxonomy'] = $term->taxonomy; + $data['term'] = $term->slug; + + } + + + // return + return $data; + +} + +/** + * acf_array + * + * Casts the value into an array. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param mixed $val The value to cast. + * @return array + */ +function acf_array( $val = array() ) { + return (array) $val; +} + +/* +* acf_get_array +* +* This function will force a variable to become an array +* +* @type function +* @date 4/02/2014 +* @since 5.0.0 +* +* @param $var (mixed) +* @return (array) +*/ + +function acf_get_array( $var = false, $delimiter = '' ) { + + // array + if( is_array($var) ) { + return $var; + } + + + // bail early if empty + if( acf_is_empty($var) ) { + return array(); + } + + + // string + if( is_string($var) && $delimiter ) { + return explode($delimiter, $var); + } + + + // place in array + return (array) $var; + +} + + +/* +* acf_get_numeric +* +* This function will return numeric values +* +* @type function +* @date 15/07/2016 +* @since 5.4.0 +* +* @param $value (mixed) +* @return (mixed) +*/ + +function acf_get_numeric( $value = '' ) { + + // vars + $numbers = array(); + $is_array = is_array($value); + + + // loop + foreach( (array) $value as $v ) { + + if( is_numeric($v) ) $numbers[] = (int) $v; + + } + + + // bail early if is empty + if( empty($numbers) ) return false; + + + // convert array + if( !$is_array ) $numbers = $numbers[0]; + + + // return + return $numbers; + +} + + +/** + * acf_get_posts + * + * Similar to the get_posts() function but with extra functionality. + * + * @date 3/03/15 + * @since 5.1.5 + * + * @param array $args The query args. + * @return array + */ +function acf_get_posts( $args = array() ) { + + // Vars. + $posts = array(); + + // Apply default args. + $args = wp_parse_args($args, array( + 'posts_per_page' => -1, + 'post_type' => '', + 'post_status' => 'any', + 'update_post_meta_cache' => false, + 'update_post_term_cache' => false + )); + + // Avoid default 'post' post_type by providing all public types. + if( !$args['post_type'] ) { + $args['post_type'] = acf_get_post_types(); + } + + // Check if specifc post ID's have been provided. + if( $args['post__in'] ) { + + // Clean value into an array of IDs. + $args['post__in'] = array_map('intval', acf_array($args['post__in'])); + } + + // Query posts. + $posts = get_posts( $args ); + + // Remove any potential empty results. + $posts = array_filter( $posts ); + + // Manually order results. + if( $posts && $args['post__in'] ) { + $order = array(); + foreach( $posts as $i => $post ) { + $order[ $i ] = array_search( $post->ID, $args['post__in'] ); + } + array_multisort($order, $posts); + } + + // Return posts. + return $posts; +} + + +/* +* _acf_query_remove_post_type +* +* This function will remove the 'wp_posts.post_type' WHERE clause completely +* When using 'post__in', this clause is unneccessary and slow. +* +* @type function +* @date 4/03/2015 +* @since 5.1.5 +* +* @param $sql (string) +* @return $sql +*/ + +function _acf_query_remove_post_type( $sql ) { + + // global + global $wpdb; + + + // bail ealry if no 'wp_posts.ID IN' + if( strpos($sql, "$wpdb->posts.ID IN") === false ) { + + return $sql; + + } + + + // get bits + $glue = 'AND'; + $bits = explode($glue, $sql); + + + // loop through $where and remove any post_type queries + foreach( $bits as $i => $bit ) { + + if( strpos($bit, "$wpdb->posts.post_type") !== false ) { + + unset( $bits[ $i ] ); + + } + + } + + + // join $where back together + $sql = implode($glue, $bits); + + + // return + return $sql; + +} + + +/* +* acf_get_grouped_posts +* +* This function will return all posts grouped by post_type +* This is handy for select settings +* +* @type function +* @date 27/02/2014 +* @since 5.0.0 +* +* @param $args (array) +* @return (array) +*/ + +function acf_get_grouped_posts( $args ) { + + // vars + $data = array(); + + + // defaults + $args = wp_parse_args( $args, array( + 'posts_per_page' => -1, + 'paged' => 0, + 'post_type' => 'post', + 'orderby' => 'menu_order title', + 'order' => 'ASC', + 'post_status' => 'any', + 'suppress_filters' => false, + 'update_post_meta_cache' => false, + )); + + + // find array of post_type + $post_types = acf_get_array( $args['post_type'] ); + $post_types_labels = acf_get_pretty_post_types($post_types); + $is_single_post_type = ( count($post_types) == 1 ); + + + // attachment doesn't work if it is the only item in an array + if( $is_single_post_type ) { + $args['post_type'] = reset($post_types); + } + + + // add filter to orderby post type + if( !$is_single_post_type ) { + add_filter('posts_orderby', '_acf_orderby_post_type', 10, 2); + } + + + // get posts + $posts = get_posts( $args ); + + + // remove this filter (only once) + if( !$is_single_post_type ) { + remove_filter('posts_orderby', '_acf_orderby_post_type', 10, 2); + } + + + // loop + foreach( $post_types as $post_type ) { + + // vars + $this_posts = array(); + $this_group = array(); + + + // populate $this_posts + foreach( $posts as $post ) { + if( $post->post_type == $post_type ) { + $this_posts[] = $post; + } + } + + + // bail early if no posts for this post type + if( empty($this_posts) ) continue; + + + // sort into hierachial order! + // this will fail if a search has taken place because parents wont exist + if( is_post_type_hierarchical($post_type) && empty($args['s'])) { + + // vars + $post_id = $this_posts[0]->ID; + $parent_id = acf_maybe_get($args, 'post_parent', 0); + $offset = 0; + $length = count($this_posts); + + + // get all posts from this post type + $all_posts = get_posts(array_merge($args, array( + 'posts_per_page' => -1, + 'paged' => 0, + 'post_type' => $post_type + ))); + + + // find starting point (offset) + foreach( $all_posts as $i => $post ) { + if( $post->ID == $post_id ) { + $offset = $i; + break; + } + } + + + // order posts + $ordered_posts = get_page_children($parent_id, $all_posts); + + + // compare aray lengths + // if $ordered_posts is smaller than $all_posts, WP has lost posts during the get_page_children() function + // this is possible when get_post( $args ) filter out parents (via taxonomy, meta and other search parameters) + if( count($ordered_posts) == count($all_posts) ) { + $this_posts = array_slice($ordered_posts, $offset, $length); + } + + } + + + // populate $this_posts + foreach( $this_posts as $post ) { + $this_group[ $post->ID ] = $post; + } + + + // group by post type + $label = $post_types_labels[ $post_type ]; + $data[ $label ] = $this_group; + + } + + + // return + return $data; + +} + + +function _acf_orderby_post_type( $ordeby, $wp_query ) { + + // global + global $wpdb; + + + // get post types + $post_types = $wp_query->get('post_type'); + + + // prepend SQL + if( is_array($post_types) ) { + + $post_types = implode("','", $post_types); + $ordeby = "FIELD({$wpdb->posts}.post_type,'$post_types')," . $ordeby; + + } + + + // return + return $ordeby; + +} + + +function acf_get_post_title( $post = 0, $is_search = false ) { + + // vars + $post = get_post($post); + $title = ''; + $prepend = ''; + $append = ''; + + + // bail early if no post + if( !$post ) return ''; + + + // title + $title = get_the_title( $post->ID ); + + + // empty + if( $title === '' ) { + + $title = __('(no title)', 'acf'); + + } + + + // status + if( get_post_status( $post->ID ) != "publish" ) { + + $append .= ' (' . get_post_status( $post->ID ) . ')'; + + } + + + // ancestors + if( $post->post_type !== 'attachment' ) { + + // get ancestors + $ancestors = get_ancestors( $post->ID, $post->post_type ); + $prepend .= str_repeat('- ', count($ancestors)); + + + // add parent +/* + removed in 5.6.5 as not used by the UI + if( $is_search && !empty($ancestors) ) { + + // reverse + $ancestors = array_reverse($ancestors); + + + // convert id's into titles + foreach( $ancestors as $i => $id ) { + + $ancestors[ $i ] = get_the_title( $id ); + + } + + + // append + $append .= ' | ' . __('Parent', 'acf') . ': ' . implode(' / ', $ancestors); + + } +*/ + + } + + + // merge + $title = $prepend . $title . $append; + + + // return + return $title; + +} + + +function acf_order_by_search( $array, $search ) { + + // vars + $weights = array(); + $needle = strtolower( $search ); + + + // add key prefix + foreach( array_keys($array) as $k ) { + + $array[ '_' . $k ] = acf_extract_var( $array, $k ); + + } + + + // add search weight + foreach( $array as $k => $v ) { + + // vars + $weight = 0; + $haystack = strtolower( $v ); + $strpos = strpos( $haystack, $needle ); + + + // detect search match + if( $strpos !== false ) { + + // set eright to length of match + $weight = strlen( $search ); + + + // increase weight if match starts at begining of string + if( $strpos == 0 ) { + + $weight++; + + } + + } + + + // append to wights + $weights[ $k ] = $weight; + + } + + + // sort the array with menu_order ascending + array_multisort( $weights, SORT_DESC, $array ); + + + // remove key prefix + foreach( array_keys($array) as $k ) { + + $array[ substr($k,1) ] = acf_extract_var( $array, $k ); + + } + + + // return + return $array; +} + + +/* +* acf_get_pretty_user_roles +* +* description +* +* @type function +* @date 23/02/2016 +* @since 5.3.2 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_get_pretty_user_roles( $allowed = false ) { + + // vars + $editable_roles = get_editable_roles(); + $allowed = acf_get_array($allowed); + $roles = array(); + + + // loop + foreach( $editable_roles as $role_name => $role_details ) { + + // bail early if not allowed + if( !empty($allowed) && !in_array($role_name, $allowed) ) continue; + + + // append + $roles[ $role_name ] = translate_user_role( $role_details['name'] ); + + } + + + // return + return $roles; + +} + + +/* +* acf_get_grouped_users +* +* This function will return all users grouped by role +* This is handy for select settings +* +* @type function +* @date 27/02/2014 +* @since 5.0.0 +* +* @param $args (array) +* @return (array) +*/ + +function acf_get_grouped_users( $args = array() ) { + + // vars + $r = array(); + + + // defaults + $args = wp_parse_args( $args, array( + 'users_per_page' => -1, + 'paged' => 0, + 'role' => '', + 'orderby' => 'login', + 'order' => 'ASC', + )); + + + // offset + $i = 0; + $min = 0; + $max = 0; + $users_per_page = acf_extract_var($args, 'users_per_page'); + $paged = acf_extract_var($args, 'paged'); + + if( $users_per_page > 0 ) { + + // prevent paged from being -1 + $paged = max(0, $paged); + + + // set min / max + $min = (($paged-1) * $users_per_page) + 1; // 1, 11 + $max = ($paged * $users_per_page); // 10, 20 + + } + + + // find array of post_type + $user_roles = acf_get_pretty_user_roles($args['role']); + + + // fix role + if( is_array($args['role']) ) { + + // global + global $wp_version, $wpdb; + + + // vars + $roles = acf_extract_var($args, 'role'); + + + // new WP has role__in + if( version_compare($wp_version, '4.4', '>=' ) ) { + + $args['role__in'] = $roles; + + // old WP doesn't have role__in + } else { + + // vars + $blog_id = get_current_blog_id(); + $meta_query = array( 'relation' => 'OR' ); + + + // loop + foreach( $roles as $role ) { + + $meta_query[] = array( + 'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities', + 'value' => '"' . $role . '"', + 'compare' => 'LIKE', + ); + + } + + + // append + $args['meta_query'] = $meta_query; + + } + + } + + + // get posts + $users = get_users( $args ); + + + // loop + foreach( $user_roles as $user_role_name => $user_role_label ) { + + // vars + $this_users = array(); + $this_group = array(); + + + // populate $this_posts + foreach( array_keys($users) as $key ) { + + // bail ealry if not correct role + if( !in_array($user_role_name, $users[ $key ]->roles) ) continue; + + + // extract user + $user = acf_extract_var( $users, $key ); + + + // increase + $i++; + + + // bail ealry if too low + if( $min && $i < $min ) continue; + + + // bail early if too high (don't bother looking at any more users) + if( $max && $i > $max ) break; + + + // group by post type + $this_users[ $user->ID ] = $user; + + + } + + + // bail early if no posts for this post type + if( empty($this_users) ) continue; + + + // append + $r[ $user_role_label ] = $this_users; + + } + + + // return + return $r; + +} + +/** + * acf_json_encode + * + * Returns json_encode() ready for file / database use. + * + * @date 29/4/19 + * @since 5.0.0 + * + * @param array $json The array of data to encode. + * @return string + */ +function acf_json_encode( $json ) { + return json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); +} + + +/* +* acf_str_exists +* +* This function will return true if a sub string is found +* +* @type function +* @date 1/05/2014 +* @since 5.0.0 +* +* @param $needle (string) +* @param $haystack (string) +* @return (boolean) +*/ + +function acf_str_exists( $needle, $haystack ) { + + // return true if $haystack contains the $needle + if( is_string($haystack) && strpos($haystack, $needle) !== false ) { + + return true; + + } + + + // return + return false; +} + + +/* +* acf_debug +* +* description +* +* @type function +* @date 2/05/2014 +* @since 5.0.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_debug() { + + // vars + $args = func_get_args(); + $s = array_shift($args); + $o = ''; + $nl = "\r\n"; + + + // start script + $o .= '' . $nl; + + + // echo + echo $o; +} + +function acf_debug_start() { + + acf_update_setting( 'debug_start', memory_get_usage()); + +} + +function acf_debug_end() { + + $start = acf_get_setting( 'debug_start' ); + $end = memory_get_usage(); + + return $end - $start; + +} + + +/* +* acf_encode_choices +* +* description +* +* @type function +* @date 4/06/2014 +* @since 5.0.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_encode_choices( $array = array(), $show_keys = true ) { + + // bail early if not array (maybe a single string) + if( !is_array($array) ) return $array; + + + // bail early if empty array + if( empty($array) ) return ''; + + + // vars + $string = ''; + + + // if allowed to show keys (good for choices, not for default values) + if( $show_keys ) { + + // loop + foreach( $array as $k => $v ) { + + // ignore if key and value are the same + if( strval($k) == strval($v) ) continue; + + + // show key in the value + $array[ $k ] = $k . ' : ' . $v; + + } + + } + + + // implode + $string = implode("\n", $array); + + + // return + return $string; + +} + +function acf_decode_choices( $string = '', $array_keys = false ) { + + // bail early if already array + if( is_array($string) ) { + + return $string; + + // allow numeric values (same as string) + } elseif( is_numeric($string) ) { + + // do nothing + + // bail early if not a string + } elseif( !is_string($string) ) { + + return array(); + + // bail early if is empty string + } elseif( $string === '' ) { + + return array(); + + } + + + // vars + $array = array(); + + + // explode + $lines = explode("\n", $string); + + + // key => value + foreach( $lines as $line ) { + + // vars + $k = trim($line); + $v = trim($line); + + + // look for ' : ' + if( acf_str_exists(' : ', $line) ) { + + $line = explode(' : ', $line); + + $k = trim($line[0]); + $v = trim($line[1]); + + } + + + // append + $array[ $k ] = $v; + + } + + + // return only array keys? (good for checkbox default_value) + if( $array_keys ) { + + return array_keys($array); + + } + + + // return + return $array; + +} + + +/* +* acf_str_replace +* +* This function will replace an array of strings much like str_replace +* The difference is the extra logic to avoid replacing a string that has alread been replaced +* This is very useful for replacing date characters as they overlap with eachother +* +* @type function +* @date 21/06/2016 +* @since 5.3.8 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_str_replace( $string = '', $search_replace = array() ) { + + // vars + $ignore = array(); + + + // remove potential empty search to avoid PHP error + unset($search_replace['']); + + + // loop over conversions + foreach( $search_replace as $search => $replace ) { + + // ignore this search, it was a previous replace + if( in_array($search, $ignore) ) continue; + + + // bail early if subsctring not found + if( strpos($string, $search) === false ) continue; + + + // replace + $string = str_replace($search, $replace, $string); + + + // append to ignore + $ignore[] = $replace; + + } + + + // return + return $string; + +} + + +/* +* date & time formats +* +* These settings contain an association of format strings from PHP => JS +* +* @type function +* @date 21/06/2016 +* @since 5.3.8 +* +* @param n/a +* @return n/a +*/ + +acf_update_setting('php_to_js_date_formats', array( + + // Year + 'Y' => 'yy', // Numeric, 4 digits 1999, 2003 + 'y' => 'y', // Numeric, 2 digits 99, 03 + + + // Month + 'm' => 'mm', // Numeric, with leading zeros 01–12 + 'n' => 'm', // Numeric, without leading zeros 1–12 + 'F' => 'MM', // Textual full January – December + 'M' => 'M', // Textual three letters Jan - Dec + + + // Weekday + 'l' => 'DD', // Full name (lowercase 'L') Sunday – Saturday + 'D' => 'D', // Three letter name Mon – Sun + + + // Day of Month + 'd' => 'dd', // Numeric, with leading zeros 01–31 + 'j' => 'd', // Numeric, without leading zeros 1–31 + 'S' => '', // The English suffix for the day of the month st, nd or th in the 1st, 2nd or 15th. + +)); + +acf_update_setting('php_to_js_time_formats', array( + + 'a' => 'tt', // Lowercase Ante meridiem and Post meridiem am or pm + 'A' => 'TT', // Uppercase Ante meridiem and Post meridiem AM or PM + 'h' => 'hh', // 12-hour format of an hour with leading zeros 01 through 12 + 'g' => 'h', // 12-hour format of an hour without leading zeros 1 through 12 + 'H' => 'HH', // 24-hour format of an hour with leading zeros 00 through 23 + 'G' => 'H', // 24-hour format of an hour without leading zeros 0 through 23 + 'i' => 'mm', // Minutes with leading zeros 00 to 59 + 's' => 'ss', // Seconds, with leading zeros 00 through 59 + +)); + + +/* +* acf_split_date_time +* +* This function will split a format string into seperate date and time +* +* @type function +* @date 26/05/2016 +* @since 5.3.8 +* +* @param $date_time (string) +* @return $formats (array) +*/ + +function acf_split_date_time( $date_time = '' ) { + + // vars + $php_date = acf_get_setting('php_to_js_date_formats'); + $php_time = acf_get_setting('php_to_js_time_formats'); + $chars = str_split($date_time); + $type = 'date'; + + + // default + $data = array( + 'date' => '', + 'time' => '' + ); + + + // loop + foreach( $chars as $i => $c ) { + + // find type + // - allow misc characters to append to previous type + if( isset($php_date[ $c ]) ) { + + $type = 'date'; + + } elseif( isset($php_time[ $c ]) ) { + + $type = 'time'; + + } + + + // append char + $data[ $type ] .= $c; + + } + + + // trim + $data['date'] = trim($data['date']); + $data['time'] = trim($data['time']); + + + // return + return $data; + +} + + +/* +* acf_convert_date_to_php +* +* This fucntion converts a date format string from JS to PHP +* +* @type function +* @date 20/06/2014 +* @since 5.0.0 +* +* @param $date (string) +* @return (string) +*/ + +function acf_convert_date_to_php( $date = '' ) { + + // vars + $php_to_js = acf_get_setting('php_to_js_date_formats'); + $js_to_php = array_flip($php_to_js); + + + // return + return acf_str_replace( $date, $js_to_php ); + +} + +/* +* acf_convert_date_to_js +* +* This fucntion converts a date format string from PHP to JS +* +* @type function +* @date 20/06/2014 +* @since 5.0.0 +* +* @param $date (string) +* @return (string) +*/ + +function acf_convert_date_to_js( $date = '' ) { + + // vars + $php_to_js = acf_get_setting('php_to_js_date_formats'); + + + // return + return acf_str_replace( $date, $php_to_js ); + +} + + +/* +* acf_convert_time_to_php +* +* This fucntion converts a time format string from JS to PHP +* +* @type function +* @date 20/06/2014 +* @since 5.0.0 +* +* @param $time (string) +* @return (string) +*/ + +function acf_convert_time_to_php( $time = '' ) { + + // vars + $php_to_js = acf_get_setting('php_to_js_time_formats'); + $js_to_php = array_flip($php_to_js); + + + // return + return acf_str_replace( $time, $js_to_php ); + +} + + +/* +* acf_convert_time_to_js +* +* This fucntion converts a date format string from PHP to JS +* +* @type function +* @date 20/06/2014 +* @since 5.0.0 +* +* @param $time (string) +* @return (string) +*/ + +function acf_convert_time_to_js( $time = '' ) { + + // vars + $php_to_js = acf_get_setting('php_to_js_time_formats'); + + + // return + return acf_str_replace( $time, $php_to_js ); + +} + + +/* +* acf_update_user_setting +* +* description +* +* @type function +* @date 15/07/2014 +* @since 5.0.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_update_user_setting( $name, $value ) { + + // get current user id + $user_id = get_current_user_id(); + + + // get user settings + $settings = get_user_meta( $user_id, 'acf_user_settings', true ); + + + // ensure array + $settings = acf_get_array($settings); + + + // delete setting (allow 0 to save) + if( acf_is_empty($value) ) { + + unset($settings[ $name ]); + + // append setting + } else { + + $settings[ $name ] = $value; + + } + + + // update user data + return update_metadata('user', $user_id, 'acf_user_settings', $settings); + +} + + +/* +* acf_get_user_setting +* +* description +* +* @type function +* @date 15/07/2014 +* @since 5.0.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_get_user_setting( $name = '', $default = false ) { + + // get current user id + $user_id = get_current_user_id(); + + + // get user settings + $settings = get_user_meta( $user_id, 'acf_user_settings', true ); + + + // ensure array + $settings = acf_get_array($settings); + + + // bail arly if no settings + if( !isset($settings[$name]) ) return $default; + + + // return + return $settings[$name]; + +} + + +/* +* acf_in_array +* +* description +* +* @type function +* @date 22/07/2014 +* @since 5.0.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_in_array( $value = '', $array = false ) { + + // bail early if not array + if( !is_array($array) ) return false; + + + // find value in array + return in_array($value, $array); + +} + + +/* +* acf_get_valid_post_id +* +* This function will return a valid post_id based on the current screen / parameter +* +* @type function +* @date 8/12/2013 +* @since 5.0.0 +* +* @param $post_id (mixed) +* @return $post_id (mixed) +*/ + +function acf_get_valid_post_id( $post_id = 0 ) { + + // allow filter to short-circuit load_value logic + $preload = apply_filters( "acf/pre_load_post_id", null, $post_id ); + if( $preload !== null ) { + return $preload; + } + + // vars + $_post_id = $post_id; + + + // if not $post_id, load queried object + if( !$post_id ) { + + // try for global post (needed for setup_postdata) + $post_id = (int) get_the_ID(); + + + // try for current screen + if( !$post_id ) { + + $post_id = get_queried_object(); + + } + + } + + + // $post_id may be an object + if( is_object($post_id) ) { + + // post + if( isset($post_id->post_type, $post_id->ID) ) { + + $post_id = $post_id->ID; + + // user + } elseif( isset($post_id->roles, $post_id->ID) ) { + + $post_id = 'user_' . $post_id->ID; + + // term + } elseif( isset($post_id->taxonomy, $post_id->term_id) ) { + + $post_id = acf_get_term_post_id( $post_id->taxonomy, $post_id->term_id ); + + // comment + } elseif( isset($post_id->comment_ID) ) { + + $post_id = 'comment_' . $post_id->comment_ID; + + // default + } else { + + $post_id = 0; + + } + + } + + + // allow for option == options + if( $post_id === 'option' ) { + + $post_id = 'options'; + + } + + + // append language code + if( $post_id == 'options' ) { + + $dl = acf_get_setting('default_language'); + $cl = acf_get_setting('current_language'); + + if( $cl && $cl !== $dl ) { + + $post_id .= '_' . $cl; + + } + + } + + + + // filter for 3rd party + $post_id = apply_filters('acf/validate_post_id', $post_id, $_post_id); + + + // return + return $post_id; + +} + + + +/* +* acf_get_post_id_info +* +* This function will return the type and id for a given $post_id string +* +* @type function +* @date 2/07/2016 +* @since 5.4.0 +* +* @param $post_id (mixed) +* @return $info (array) +*/ + +function acf_get_post_id_info( $post_id = 0 ) { + + // vars + $info = array( + 'type' => 'post', + 'id' => 0 + ); + + // bail early if no $post_id + if( !$post_id ) return $info; + + + // check cache + // - this function will most likely be called multiple times (saving loading fields from post) + //$cache_key = "get_post_id_info/post_id={$post_id}"; + + //if( acf_isset_cache($cache_key) ) return acf_get_cache($cache_key); + + + // numeric + if( is_numeric($post_id) ) { + + $info['id'] = (int) $post_id; + + // string + } elseif( is_string($post_id) ) { + + // vars + $glue = '_'; + $type = explode($glue, $post_id); + $id = array_pop($type); + $type = implode($glue, $type); + $meta = array('post', 'user', 'comment', 'term'); + + + // check if is taxonomy (ACF < 5.5) + // - avoid scenario where taxonomy exists with name of meta type + if( !in_array($type, $meta) && acf_isset_termmeta($type) ) $type = 'term'; + + + // meta + if( is_numeric($id) && in_array($type, $meta) ) { + + $info['type'] = $type; + $info['id'] = (int) $id; + + // option + } else { + + $info['type'] = 'option'; + $info['id'] = $post_id; + + } + + } + + + // update cache + //acf_set_cache($cache_key, $info); + + + // filter + $info = apply_filters("acf/get_post_id_info", $info, $post_id); + + // return + return $info; + +} + + +/* + +acf_log( acf_get_post_id_info(4) ); + +acf_log( acf_get_post_id_info('post_4') ); + +acf_log( acf_get_post_id_info('user_123') ); + +acf_log( acf_get_post_id_info('term_567') ); + +acf_log( acf_get_post_id_info('category_204') ); + +acf_log( acf_get_post_id_info('comment_6') ); + +acf_log( acf_get_post_id_info('options_lol!') ); + +acf_log( acf_get_post_id_info('option') ); + +acf_log( acf_get_post_id_info('options') ); + +*/ + + +/* +* acf_isset_termmeta +* +* This function will return true if the termmeta table exists +* https://developer.wordpress.org/reference/functions/get_term_meta/ +* +* @type function +* @date 3/09/2016 +* @since 5.4.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_isset_termmeta( $taxonomy = '' ) { + + // bail ealry if no table + if( get_option('db_version') < 34370 ) return false; + + + // check taxonomy + if( $taxonomy && !taxonomy_exists($taxonomy) ) return false; + + + // return + return true; + +} + + +/* +* acf_get_term_post_id +* +* This function will return a valid post_id string for a given term and taxonomy +* +* @type function +* @date 6/2/17 +* @since 5.5.6 +* +* @param $taxonomy (string) +* @param $term_id (int) +* @return (string) +*/ + +function acf_get_term_post_id( $taxonomy, $term_id ) { + + // WP < 4.4 + if( !acf_isset_termmeta() ) { + + return $taxonomy . '_' . $term_id; + + } + + + // return + return 'term_' . $term_id; + +} + + +/* +* acf_upload_files +* +* This function will walk througfh the $_FILES data and upload each found +* +* @type function +* @date 25/10/2014 +* @since 5.0.9 +* +* @param $ancestors (array) an internal parameter, not required +* @return n/a +*/ + +function acf_upload_files( $ancestors = array() ) { + + // vars + $file = array( + 'name' => '', + 'type' => '', + 'tmp_name' => '', + 'error' => '', + 'size' => '' + ); + + + // populate with $_FILES data + foreach( array_keys($file) as $k ) { + + $file[ $k ] = $_FILES['acf'][ $k ]; + + } + + + // walk through ancestors + if( !empty($ancestors) ) { + + foreach( $ancestors as $a ) { + + foreach( array_keys($file) as $k ) { + + $file[ $k ] = $file[ $k ][ $a ]; + + } + + } + + } + + + // is array? + if( is_array($file['name']) ) { + + foreach( array_keys($file['name']) as $k ) { + + $_ancestors = array_merge($ancestors, array($k)); + + acf_upload_files( $_ancestors ); + + } + + return; + + } + + + // bail ealry if file has error (no file uploaded) + if( $file['error'] ) { + + return; + + } + + + // assign global _acfuploader for media validation + $_POST['_acfuploader'] = end($ancestors); + + + // file found! + $attachment_id = acf_upload_file( $file ); + + + // update $_POST + array_unshift($ancestors, 'acf'); + acf_update_nested_array( $_POST, $ancestors, $attachment_id ); + +} + + +/* +* acf_upload_file +* +* This function will uploade a $_FILE +* +* @type function +* @date 27/10/2014 +* @since 5.0.9 +* +* @param $uploaded_file (array) array found from $_FILE data +* @return $id (int) new attachment ID +*/ + +function acf_upload_file( $uploaded_file ) { + + // required + //require_once( ABSPATH . "/wp-load.php" ); // WP should already be loaded + require_once( ABSPATH . "/wp-admin/includes/media.php" ); // video functions + require_once( ABSPATH . "/wp-admin/includes/file.php" ); + require_once( ABSPATH . "/wp-admin/includes/image.php" ); + + + // required for wp_handle_upload() to upload the file + $upload_overrides = array( 'test_form' => false ); + + + // upload + $file = wp_handle_upload( $uploaded_file, $upload_overrides ); + + + // bail ealry if upload failed + if( isset($file['error']) ) { + + return $file['error']; + + } + + + // vars + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename($file); + + + // Construct the object array + $object = array( + 'post_title' => $filename, + 'post_mime_type' => $type, + 'guid' => $url + ); + + // Save the data + $id = wp_insert_attachment($object, $file); + + // Add the meta-data + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + + /** This action is documented in wp-admin/custom-header.php */ + do_action( 'wp_create_file_in_uploads', $file, $id ); // For replication + + // return new ID + return $id; + +} + + +/* +* acf_update_nested_array +* +* This function will update a nested array value. Useful for modifying the $_POST array +* +* @type function +* @date 27/10/2014 +* @since 5.0.9 +* +* @param $array (array) target array to be updated +* @param $ancestors (array) array of keys to navigate through to find the child +* @param $value (mixed) The new value +* @return (boolean) +*/ + +function acf_update_nested_array( &$array, $ancestors, $value ) { + + // if no more ancestors, update the current var + if( empty($ancestors) ) { + + $array = $value; + + // return + return true; + + } + + + // shift the next ancestor from the array + $k = array_shift( $ancestors ); + + + // if exists + if( isset($array[ $k ]) ) { + + return acf_update_nested_array( $array[ $k ], $ancestors, $value ); + + } + + + // return + return false; +} + + +/* +* acf_is_screen +* +* This function will return true if all args are matched for the current screen +* +* @type function +* @date 9/12/2014 +* @since 5.1.5 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_is_screen( $id = '' ) { + + // bail early if not defined + if( !function_exists('get_current_screen') ) { + return false; + } + + // vars + $current_screen = get_current_screen(); + + // no screen + if( !$current_screen ) { + return false; + + // array + } elseif( is_array($id) ) { + return in_array($current_screen->id, $id); + + // string + } else { + return ($id === $current_screen->id); + } +} + + +/* +* acf_maybe_get +* +* This function will return a var if it exists in an array +* +* @type function +* @date 9/12/2014 +* @since 5.1.5 +* +* @param $array (array) the array to look within +* @param $key (key) the array key to look for. Nested values may be found using '/' +* @param $default (mixed) the value returned if not found +* @return $post_id (int) +*/ + +function acf_maybe_get( $array = array(), $key = 0, $default = null ) { + + return isset( $array[$key] ) ? $array[$key] : $default; + +} + +function acf_maybe_get_POST( $key = '', $default = null ) { + + return isset( $_POST[$key] ) ? $_POST[$key] : $default; + +} + +function acf_maybe_get_GET( $key = '', $default = null ) { + + return isset( $_GET[$key] ) ? $_GET[$key] : $default; + +} + + +/* +* acf_get_attachment +* +* This function will return an array of attachment data +* +* @type function +* @date 5/01/2015 +* @since 5.1.5 +* +* @param $post (mixed) either post ID or post object +* @return (array) +*/ + +function acf_get_attachment( $attachment ) { + + // get post + if( !$attachment = get_post($attachment) ) { + return false; + } + + // validate post_type + if( $attachment->post_type !== 'attachment' ) { + return false; + } + + // vars + $sizes_id = 0; + $meta = wp_get_attachment_metadata( $attachment->ID ); + $attached_file = get_attached_file( $attachment->ID ); + $attachment_url = wp_get_attachment_url( $attachment->ID ); + + // get mime types + if( strpos( $attachment->post_mime_type, '/' ) !== false ) { + list( $type, $subtype ) = explode( '/', $attachment->post_mime_type ); + } else { + list( $type, $subtype ) = array( $attachment->post_mime_type, '' ); + } + + // vars + $response = array( + 'ID' => $attachment->ID, + 'id' => $attachment->ID, + 'title' => $attachment->post_title, + 'filename' => wp_basename( $attached_file ), + 'filesize' => 0, + 'url' => $attachment_url, + 'link' => get_attachment_link( $attachment->ID ), + 'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ), + 'author' => $attachment->post_author, + 'description' => $attachment->post_content, + 'caption' => $attachment->post_excerpt, + 'name' => $attachment->post_name, + 'status' => $attachment->post_status, + 'uploaded_to' => $attachment->post_parent, + 'date' => $attachment->post_date_gmt, + 'modified' => $attachment->post_modified_gmt, + 'menu_order' => $attachment->menu_order, + 'mime_type' => $attachment->post_mime_type, + 'type' => $type, + 'subtype' => $subtype, + 'icon' => wp_mime_type_icon( $attachment->ID ) + ); + + // filesize + if( isset($meta['filesize']) ) { + $response['filesize'] = $meta['filesize']; + } elseif( file_exists($attached_file) ) { + $response['filesize'] = filesize( $attached_file ); + } + + // image + if( $type === 'image' ) { + + $sizes_id = $attachment->ID; + $src = wp_get_attachment_image_src( $attachment->ID, 'full' ); + + $response['url'] = $src[0]; + $response['width'] = $src[1]; + $response['height'] = $src[2]; + + // video + } elseif( $type === 'video' ) { + + // dimentions + $response['width'] = acf_maybe_get($meta, 'width', 0); + $response['height'] = acf_maybe_get($meta, 'height', 0); + + // featured image + if( $featured_id = get_post_thumbnail_id($attachment->ID) ) { + $sizes_id = $featured_id; + } + + // audio + } elseif( $type === 'audio' ) { + + // featured image + if( $featured_id = get_post_thumbnail_id($attachment->ID) ) { + $sizes_id = $featured_id; + } + } + + + // sizes + if( $sizes_id ) { + + // vars + $sizes = get_intermediate_image_sizes(); + $data = array(); + + // loop + foreach( $sizes as $size ) { + $src = wp_get_attachment_image_src( $sizes_id, $size ); + $data[ $size ] = $src[0]; + $data[ $size . '-width' ] = $src[1]; + $data[ $size . '-height' ] = $src[2]; + } + + // append + $response['sizes'] = $data; + } + + // return + return $response; + +} + + +/* +* acf_get_truncated +* +* This function will truncate and return a string +* +* @type function +* @date 8/08/2014 +* @since 5.0.0 +* +* @param $text (string) +* @param $length (int) +* @return (string) +*/ + +function acf_get_truncated( $text, $length = 64 ) { + + // vars + $text = trim($text); + $the_length = strlen( $text ); + + + // cut + $return = substr( $text, 0, ($length - 3) ); + + + // ... + if( $the_length > ($length - 3) ) { + + $return .= '...'; + + } + + + // return + return $return; + +} + + +/* +* acf_get_current_url +* +* This function will return the current URL. +* +* @date 23/01/2015 +* @since 5.1.5 +* +* @param void +* @return string +*/ + +function acf_get_current_url() { + return ( is_ssl() ? 'https' : 'http' ) . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; +} + +/* +* acf_current_user_can_admin +* +* This function will return true if the current user can administrate the ACF field groups +* +* @type function +* @date 9/02/2015 +* @since 5.1.5 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_current_user_can_admin() { + + if( acf_get_setting('show_admin') && current_user_can(acf_get_setting('capability')) ) { + + return true; + + } + + + // return + return false; + +} + + +/* +* acf_get_filesize +* +* This function will return a numeric value of bytes for a given filesize string +* +* @type function +* @date 18/02/2015 +* @since 5.1.5 +* +* @param $size (mixed) +* @return (int) +*/ + +function acf_get_filesize( $size = 1 ) { + + // vars + $unit = 'MB'; + $units = array( + 'TB' => 4, + 'GB' => 3, + 'MB' => 2, + 'KB' => 1, + ); + + + // look for $unit within the $size parameter (123 KB) + if( is_string($size) ) { + + // vars + $custom = strtoupper( substr($size, -2) ); + + foreach( $units as $k => $v ) { + + if( $custom === $k ) { + + $unit = $k; + $size = substr($size, 0, -2); + + } + + } + + } + + + // calc bytes + $bytes = floatval($size) * pow(1024, $units[$unit]); + + + // return + return $bytes; + +} + + +/* +* acf_format_filesize +* +* This function will return a formatted string containing the filesize and unit +* +* @type function +* @date 18/02/2015 +* @since 5.1.5 +* +* @param $size (mixed) +* @return (int) +*/ + +function acf_format_filesize( $size = 1 ) { + + // convert + $bytes = acf_get_filesize( $size ); + + + // vars + $units = array( + 'TB' => 4, + 'GB' => 3, + 'MB' => 2, + 'KB' => 1, + ); + + + // loop through units + foreach( $units as $k => $v ) { + + $result = $bytes / pow(1024, $v); + + if( $result >= 1 ) { + + return $result . ' ' . $k; + + } + + } + + + // return + return $bytes . ' B'; + +} + + +/* +* acf_get_valid_terms +* +* This function will replace old terms with new split term ids +* +* @type function +* @date 27/02/2015 +* @since 5.1.5 +* +* @param $terms (int|array) +* @param $taxonomy (string) +* @return $terms +*/ + +function acf_get_valid_terms( $terms = false, $taxonomy = 'category' ) { + + // force into array + $terms = acf_get_array($terms); + + + // force ints + $terms = array_map('intval', $terms); + + + // bail early if function does not yet exist or + if( !function_exists('wp_get_split_term') || empty($terms) ) { + + return $terms; + + } + + + // attempt to find new terms + foreach( $terms as $i => $term_id ) { + + $new_term_id = wp_get_split_term($term_id, $taxonomy); + + if( $new_term_id ) { + + $terms[ $i ] = $new_term_id; + + } + + } + + + // return + return $terms; + +} + + +/* +* acf_esc_html_deep +* +* Navigates through an array and escapes html from the values. +* +* @type function +* @date 10/06/2015 +* @since 5.2.7 +* +* @param $value (mixed) +* @return $value +*/ + +/* +function acf_esc_html_deep( $value ) { + + // array + if( is_array($value) ) { + + $value = array_map('acf_esc_html_deep', $value); + + // object + } elseif( is_object($value) ) { + + $vars = get_object_vars( $value ); + + foreach( $vars as $k => $v ) { + + $value->{$k} = acf_esc_html_deep( $v ); + + } + + // string + } elseif( is_string($value) ) { + + $value = esc_html($value); + + } + + + // return + return $value; + +} +*/ + + +/* +* acf_validate_attachment +* +* This function will validate an attachment based on a field's resrictions and return an array of errors +* +* @type function +* @date 3/07/2015 +* @since 5.2.3 +* +* @param $attachment (array) attachment data. Cahnges based on context +* @param $field (array) field settings containing restrictions +* @param $context (string) $file is different when uploading / preparing +* @return $errors (array) +*/ + +function acf_validate_attachment( $attachment, $field, $context = 'prepare' ) { + + // vars + $errors = array(); + $file = array( + 'type' => '', + 'width' => 0, + 'height' => 0, + 'size' => 0 + ); + + + // upload + if( $context == 'upload' ) { + + // vars + $file['type'] = pathinfo($attachment['name'], PATHINFO_EXTENSION); + $file['size'] = filesize($attachment['tmp_name']); + + if( strpos($attachment['type'], 'image') !== false ) { + + $size = getimagesize($attachment['tmp_name']); + $file['width'] = acf_maybe_get($size, 0); + $file['height'] = acf_maybe_get($size, 1); + + } + + // prepare + } elseif( $context == 'prepare' ) { + + $file['type'] = pathinfo($attachment['url'], PATHINFO_EXTENSION); + $file['size'] = acf_maybe_get($attachment, 'filesizeInBytes', 0); + $file['width'] = acf_maybe_get($attachment, 'width', 0); + $file['height'] = acf_maybe_get($attachment, 'height', 0); + + // custom + } else { + + $file = array_merge($file, $attachment); + $file['type'] = pathinfo($attachment['url'], PATHINFO_EXTENSION); + + } + + + // image + if( $file['width'] || $file['height'] ) { + + // width + $min_width = (int) acf_maybe_get($field, 'min_width', 0); + $max_width = (int) acf_maybe_get($field, 'max_width', 0); + + if( $file['width'] ) { + + if( $min_width && $file['width'] < $min_width ) { + + // min width + $errors['min_width'] = sprintf(__('Image width must be at least %dpx.', 'acf'), $min_width ); + + } elseif( $max_width && $file['width'] > $max_width ) { + + // min width + $errors['max_width'] = sprintf(__('Image width must not exceed %dpx.', 'acf'), $max_width ); + + } + + } + + + // height + $min_height = (int) acf_maybe_get($field, 'min_height', 0); + $max_height = (int) acf_maybe_get($field, 'max_height', 0); + + if( $file['height'] ) { + + if( $min_height && $file['height'] < $min_height ) { + + // min height + $errors['min_height'] = sprintf(__('Image height must be at least %dpx.', 'acf'), $min_height ); + + } elseif( $max_height && $file['height'] > $max_height ) { + + // min height + $errors['max_height'] = sprintf(__('Image height must not exceed %dpx.', 'acf'), $max_height ); + + } + + } + + } + + + // file size + if( $file['size'] ) { + + $min_size = acf_maybe_get($field, 'min_size', 0); + $max_size = acf_maybe_get($field, 'max_size', 0); + + if( $min_size && $file['size'] < acf_get_filesize($min_size) ) { + + // min width + $errors['min_size'] = sprintf(__('File size must be at least %s.', 'acf'), acf_format_filesize($min_size) ); + + } elseif( $max_size && $file['size'] > acf_get_filesize($max_size) ) { + + // min width + $errors['max_size'] = sprintf(__('File size must must not exceed %s.', 'acf'), acf_format_filesize($max_size) ); + + } + + } + + + // file type + if( $file['type'] ) { + + $mime_types = acf_maybe_get($field, 'mime_types', ''); + + // lower case + $file['type'] = strtolower($file['type']); + $mime_types = strtolower($mime_types); + + + // explode + $mime_types = str_replace(array(' ', '.'), '', $mime_types); + $mime_types = explode(',', $mime_types); // split pieces + $mime_types = array_filter($mime_types); // remove empty pieces + + if( !empty($mime_types) && !in_array($file['type'], $mime_types) ) { + + // glue together last 2 types + if( count($mime_types) > 1 ) { + + $last1 = array_pop($mime_types); + $last2 = array_pop($mime_types); + + $mime_types[] = $last2 . ' ' . __('or', 'acf') . ' ' . $last1; + + } + + $errors['mime_types'] = sprintf(__('File type must be %s.', 'acf'), implode(', ', $mime_types) ); + + } + + } + + + /** + * Filters the errors for a file before it is uploaded or displayed in the media modal. + * + * @date 3/07/2015 + * @since 5.2.3 + * + * @param array $errors An array of errors. + * @param array $file An array of data for a single file. + * @param array $attachment An array of attachment data which differs based on the context. + * @param array $field The field array. + * @param string $context The curent context (uploading, preparing) + */ + $errors = apply_filters( "acf/validate_attachment/type={$field['type']}", $errors, $file, $attachment, $field, $context ); + $errors = apply_filters( "acf/validate_attachment/name={$field['_name']}", $errors, $file, $attachment, $field, $context ); + $errors = apply_filters( "acf/validate_attachment/key={$field['key']}", $errors, $file, $attachment, $field, $context ); + $errors = apply_filters( "acf/validate_attachment", $errors, $file, $attachment, $field, $context ); + + + // return + return $errors; + +} + + +/* +* _acf_settings_uploader +* +* Dynamic logic for uploader setting +* +* @type function +* @date 7/05/2015 +* @since 5.2.3 +* +* @param $uploader (string) +* @return $uploader +*/ + +add_filter('acf/settings/uploader', '_acf_settings_uploader'); + +function _acf_settings_uploader( $uploader ) { + + // if can't upload files + if( !current_user_can('upload_files') ) { + + $uploader = 'basic'; + + } + + + // return + return $uploader; +} + + +/* +* acf_translate_keys +* +* description +* +* @type function +* @date 7/12/2015 +* @since 5.3.2 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +/* +function acf_translate_keys( $array, $keys ) { + + // bail early if no keys + if( empty($keys) ) return $array; + + + // translate + foreach( $keys as $k ) { + + // bail ealry if not exists + if( !isset($array[ $k ]) ) continue; + + + // translate + $array[ $k ] = acf_translate( $array[ $k ] ); + + } + + + // return + return $array; + +} +*/ + + +/* +* acf_translate +* +* This function will translate a string using the new 'l10n_textdomain' setting +* Also works for arrays which is great for fields - select -> choices +* +* @type function +* @date 4/12/2015 +* @since 5.3.2 +* +* @param $string (mixed) string or array containins strings to be translated +* @return $string +*/ + +function acf_translate( $string ) { + + // vars + $l10n = acf_get_setting('l10n'); + $textdomain = acf_get_setting('l10n_textdomain'); + + + // bail early if not enabled + if( !$l10n ) return $string; + + + // bail early if no textdomain + if( !$textdomain ) return $string; + + + // is array + if( is_array($string) ) { + + return array_map('acf_translate', $string); + + } + + + // bail early if not string + if( !is_string($string) ) return $string; + + + // bail early if empty + if( $string === '' ) return $string; + + + // allow for var_export export + if( acf_get_setting('l10n_var_export') ){ + + // bail early if already translated + if( substr($string, 0, 7) === '!!__(!!' ) return $string; + + + // return + return "!!__(!!'" . $string . "!!', !!'" . $textdomain . "!!')!!"; + + } + + + // vars + return __( $string, $textdomain ); + +} + + +/* +* acf_maybe_add_action +* +* This function will determine if the action has already run before adding / calling the function +* +* @type function +* @date 13/01/2016 +* @since 5.3.2 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_maybe_add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) { + + // if action has already run, execute it + // - if currently doing action, allow $tag to be added as per usual to allow $priority ordering needed for 3rd party asset compatibility + if( did_action($tag) && !doing_action($tag) ) { + + call_user_func( $function_to_add ); + + // if action has not yet run, add it + } else { + + add_action( $tag, $function_to_add, $priority, $accepted_args ); + + } + +} + + +/* +* acf_is_row_collapsed +* +* This function will return true if the field's row is collapsed +* +* @type function +* @date 2/03/2016 +* @since 5.3.2 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_is_row_collapsed( $field_key = '', $row_index = 0 ) { + + // collapsed + $collapsed = acf_get_user_setting('collapsed_' . $field_key, ''); + + + // cookie fallback ( version < 5.3.2 ) + if( $collapsed === '' ) { + + $collapsed = acf_extract_var($_COOKIE, "acf_collapsed_{$field_key}", ''); + $collapsed = str_replace('|', ',', $collapsed); + + + // update + acf_update_user_setting( 'collapsed_' . $field_key, $collapsed ); + + } + + + // explode + $collapsed = explode(',', $collapsed); + $collapsed = array_filter($collapsed, 'is_numeric'); + + + // collapsed class + return in_array($row_index, $collapsed); + +} + + +/* +* acf_get_attachment_image +* +* description +* +* @type function +* @date 24/10/16 +* @since 5.5.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_get_attachment_image( $attachment_id = 0, $size = 'thumbnail' ) { + + // vars + $url = wp_get_attachment_image_src($attachment_id, 'thumbnail'); + $alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true); + + + // bail early if no url + if( !$url ) return ''; + + + // return + $value = '' . $alt . ''; + +} + + +/* +* acf_get_post_thumbnail +* +* This function will return a thumbail image url for a given post +* +* @type function +* @date 3/05/2016 +* @since 5.3.8 +* +* @param $post (obj) +* @param $size (mixed) +* @return (string) +*/ + +function acf_get_post_thumbnail( $post = null, $size = 'thumbnail' ) { + + // vars + $data = array( + 'url' => '', + 'type' => '', + 'html' => '' + ); + + + // post + $post = get_post($post); + + + // bail early if no post + if( !$post ) return $data; + + + // vars + $thumb_id = $post->ID; + $mime_type = acf_maybe_get(explode('/', $post->post_mime_type), 0); + + + // attachment + if( $post->post_type === 'attachment' ) { + + // change $thumb_id + if( $mime_type === 'audio' || $mime_type === 'video' ) { + + $thumb_id = get_post_thumbnail_id($post->ID); + + } + + // post + } else { + + $thumb_id = get_post_thumbnail_id($post->ID); + + } + + + // try url + $data['url'] = wp_get_attachment_image_src($thumb_id, $size); + $data['url'] = acf_maybe_get($data['url'], 0); + + + // default icon + if( !$data['url'] && $post->post_type === 'attachment' ) { + + $data['url'] = wp_mime_type_icon($post->ID); + $data['type'] = 'icon'; + + } + + + // html + $data['html'] = ''; + + + // return + return $data; + +} + +/** + * acf_get_browser + * + * Returns the name of the current browser. + * + * @date 17/01/2014 + * @since 5.0.0 + * + * @param void + * @return string + */ +function acf_get_browser() { + + // Check server var. + if( isset($_SERVER['HTTP_USER_AGENT']) ) { + $agent = $_SERVER['HTTP_USER_AGENT']; + + // Loop over search terms. + $browsers = array( + 'Firefox' => 'firefox', + 'Trident' => 'msie', + 'MSIE' => 'msie', + 'Edge' => 'edge', + 'Chrome' => 'chrome', + 'Safari' => 'safari', + ); + foreach( $browsers as $k => $v ) { + if( strpos($agent, $k) !== false ) { + return $v; + } + } + } + + // Return default. + return ''; +} + + +/* +* acf_is_ajax +* +* This function will reutrn true if performing a wp ajax call +* +* @type function +* @date 7/06/2016 +* @since 5.3.8 +* +* @param n/a +* @return (boolean) +*/ + +function acf_is_ajax( $action = '' ) { + + // vars + $is_ajax = false; + + + // check if is doing ajax + if( defined('DOING_AJAX') && DOING_AJAX ) { + + $is_ajax = true; + + } + + + // check $action + if( $action && acf_maybe_get($_POST, 'action') !== $action ) { + + $is_ajax = false; + + } + + + // return + return $is_ajax; + +} + + + + +/* +* acf_format_date +* +* This function will accept a date value and return it in a formatted string +* +* @type function +* @date 16/06/2016 +* @since 5.3.8 +* +* @param $value (string) +* @return $format (string) +*/ + +function acf_format_date( $value, $format ) { + + // bail early if no value + if( !$value ) return $value; + + + // vars + $unixtimestamp = 0; + + + // numeric (either unix or YYYYMMDD) + if( is_numeric($value) && strlen($value) !== 8 ) { + + $unixtimestamp = $value; + + } else { + + $unixtimestamp = strtotime($value); + + } + + + // return + return date_i18n($format, $unixtimestamp); + +} + +/** + * acf_clear_log + * + * Deletes the debug.log file. + * + * @date 21/1/19 + * @since 5.7.10 + * + * @param type $var Description. Default. + * @return type Description. + */ +function acf_clear_log() { + unlink( WP_CONTENT_DIR . '/debug.log' ); +} + +/* +* acf_log +* +* description +* +* @type function +* @date 24/06/2016 +* @since 5.3.8 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_log() { + + // vars + $args = func_get_args(); + + // loop + foreach( $args as $i => $arg ) { + + // array | object + if( is_array($arg) || is_object($arg) ) { + $arg = print_r($arg, true); + + // bool + } elseif( is_bool($arg) ) { + $arg = 'bool(' . ( $arg ? 'true' : 'false' ) . ')'; + } + + // update + $args[ $i ] = $arg; + } + + // log + error_log( implode(' ', $args) ); +} + +/** +* acf_dev_log +* +* Used to log variables only if ACF_DEV is defined +* +* @date 25/8/18 +* @since 5.7.4 +* +* @param mixed +* @return void +*/ +function acf_dev_log() { + if( defined('ACF_DEV') && ACF_DEV ) { + call_user_func_array('acf_log', func_get_args()); + } +} + +/* +* acf_doing +* +* This function will tell ACF what task it is doing +* +* @type function +* @date 28/06/2016 +* @since 5.3.8 +* +* @param $event (string) +* @param context (string) +* @return n/a +*/ + +function acf_doing( $event = '', $context = '' ) { + + acf_update_setting( 'doing', $event ); + acf_update_setting( 'doing_context', $context ); + +} + + +/* +* acf_is_doing +* +* This function can be used to state what ACF is doing, or to check +* +* @type function +* @date 28/06/2016 +* @since 5.3.8 +* +* @param $event (string) +* @param context (string) +* @return (boolean) +*/ + +function acf_is_doing( $event = '', $context = '' ) { + + // vars + $doing = false; + + + // task + if( acf_get_setting('doing') === $event ) { + + $doing = true; + + } + + + // context + if( $context && acf_get_setting('doing_context') !== $context ) { + + $doing = false; + + } + + + // return + return $doing; + +} + + +/* +* acf_is_plugin_active +* +* This function will return true if the ACF plugin is active +* - May be included within a theme or other plugin +* +* @type function +* @date 13/07/2016 +* @since 5.4.0 +* +* @param $basename (int) +* @return $post_id (int) +*/ + + +function acf_is_plugin_active() { + + // vars + $basename = acf_get_setting('basename'); + + + // ensure is_plugin_active() exists (not on frontend) + if( !function_exists('is_plugin_active') ) { + + include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); + + } + + + // return + return is_plugin_active($basename); + +} + +/* +* acf_send_ajax_results +* +* This function will print JSON data for a Select2 AJAX query +* +* @type function +* @date 19/07/2016 +* @since 5.4.0 +* +* @param $response (array) +* @return n/a +*/ + +function acf_send_ajax_results( $response ) { + + // validate + $response = wp_parse_args($response, array( + 'results' => array(), + 'more' => false, + 'limit' => 0 + )); + + + // limit + if( $response['limit'] && $response['results']) { + + // vars + $total = 0; + + foreach( $response['results'] as $result ) { + + // parent + $total++; + + + // children + if( !empty($result['children']) ) { + + $total += count( $result['children'] ); + + } + + } + + + // calc + if( $total >= $response['limit'] ) { + + $response['more'] = true; + + } + + } + + + // return + wp_send_json( $response ); + +} + + +/* +* acf_is_sequential_array +* +* This function will return true if the array contains only numeric keys +* +* @source http://stackoverflow.com/questions/173400/how-to-check-if-php-array-is-associative-or-sequential +* @type function +* @date 9/09/2016 +* @since 5.4.0 +* +* @param $array (array) +* @return (boolean) +*/ + +function acf_is_sequential_array( $array ) { + + // bail ealry if not array + if( !is_array($array) ) return false; + + + // loop + foreach( $array as $key => $value ) { + + // bail ealry if is string + if( is_string($key) ) return false; + + } + + + // return + return true; + +} + + +/* +* acf_is_associative_array +* +* This function will return true if the array contains one or more string keys +* +* @source http://stackoverflow.com/questions/173400/how-to-check-if-php-array-is-associative-or-sequential +* @type function +* @date 9/09/2016 +* @since 5.4.0 +* +* @param $array (array) +* @return (boolean) +*/ + +function acf_is_associative_array( $array ) { + + // bail ealry if not array + if( !is_array($array) ) return false; + + + // loop + foreach( $array as $key => $value ) { + + // bail ealry if is string + if( is_string($key) ) return true; + + } + + + // return + return false; + +} + + +/* +* acf_add_array_key_prefix +* +* This function will add a prefix to all array keys +* Useful to preserve numeric keys when performing array_multisort +* +* @type function +* @date 15/09/2016 +* @since 5.4.0 +* +* @param $array (array) +* @param $prefix (string) +* @return (array) +*/ + +function acf_add_array_key_prefix( $array, $prefix ) { + + // vars + $array2 = array(); + + + // loop + foreach( $array as $k => $v ) { + + $k2 = $prefix . $k; + $array2[ $k2 ] = $v; + + } + + + // return + return $array2; + +} + + +/* +* acf_remove_array_key_prefix +* +* This function will remove a prefix to all array keys +* Useful to preserve numeric keys when performing array_multisort +* +* @type function +* @date 15/09/2016 +* @since 5.4.0 +* +* @param $array (array) +* @param $prefix (string) +* @return (array) +*/ + +function acf_remove_array_key_prefix( $array, $prefix ) { + + // vars + $array2 = array(); + $l = strlen($prefix); + + + // loop + foreach( $array as $k => $v ) { + + $k2 = (substr($k, 0, $l) === $prefix) ? substr($k, $l) : $k; + $array2[ $k2 ] = $v; + + } + + + // return + return $array2; + +} + + +/* +* acf_strip_protocol +* +* This function will remove the proticol from a url +* Used to allow licences to remain active if a site is switched to https +* +* @type function +* @date 10/01/2017 +* @since 5.5.4 +* @author Aaron +* +* @param $url (string) +* @return (string) +*/ + +function acf_strip_protocol( $url ) { + + // strip the protical + return str_replace(array('http://','https://'), '', $url); + +} + + +/* +* acf_connect_attachment_to_post +* +* This function will connect an attacment (image etc) to the post +* Used to connect attachements uploaded directly to media that have not been attaced to a post +* +* @type function +* @date 11/01/2017 +* @since 5.8.0 Added filter to prevent connection. +* @since 5.5.4 +* +* @param int $attachment_id The attachment ID. +* @param int $post_id The post ID. +* @return bool True if attachment was connected. +*/ +function acf_connect_attachment_to_post( $attachment_id = 0, $post_id = 0 ) { + + // Bail ealry if $attachment_id is not valid. + if( !$attachment_id || !is_numeric($attachment_id) ) { + return false; + } + + // Bail ealry if $post_id is not valid. + if( !$post_id || !is_numeric($post_id) ) { + return false; + } + + /** + * Filters whether or not to connect the attachment. + * + * @date 8/11/18 + * @since 5.8.0 + * + * @param bool $bool Returning false will prevent the connection. Default true. + * @param int $attachment_id The attachment ID. + * @param int $post_id The post ID. + */ + if( !apply_filters('acf/connect_attachment_to_post', true, $attachment_id, $post_id) ) { + return false; + } + + // vars + $post = get_post( $attachment_id ); + + // Check if is valid post. + if( $post && $post->post_type == 'attachment' && $post->post_parent == 0 ) { + + // update + wp_update_post( array('ID' => $post->ID, 'post_parent' => $post_id) ); + + // return + return true; + } + + // return + return true; +} + + +/* +* acf_encrypt +* +* This function will encrypt a string using PHP +* https://bhoover.com/using-php-openssl_encrypt-openssl_decrypt-encrypt-decrypt-data/ +* +* @type function +* @date 27/2/17 +* @since 5.5.8 +* +* @param $data (string) +* @return (string) +*/ + + +function acf_encrypt( $data = '' ) { + + // bail ealry if no encrypt function + if( !function_exists('openssl_encrypt') ) return base64_encode($data); + + + // generate a key + $key = wp_hash('acf_encrypt'); + + + // Generate an initialization vector + $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc')); + + + // Encrypt the data using AES 256 encryption in CBC mode using our encryption key and initialization vector. + $encrypted_data = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv); + + + // The $iv is just as important as the key for decrypting, so save it with our encrypted data using a unique separator (::) + return base64_encode($encrypted_data . '::' . $iv); + +} + + +/* +* acf_decrypt +* +* This function will decrypt an encrypted string using PHP +* https://bhoover.com/using-php-openssl_encrypt-openssl_decrypt-encrypt-decrypt-data/ +* +* @type function +* @date 27/2/17 +* @since 5.5.8 +* +* @param $data (string) +* @return (string) +*/ + +function acf_decrypt( $data = '' ) { + + // bail ealry if no decrypt function + if( !function_exists('openssl_decrypt') ) return base64_decode($data); + + + // generate a key + $key = wp_hash('acf_encrypt'); + + + // To decrypt, split the encrypted data from our IV - our unique separator used was "::" + list($encrypted_data, $iv) = explode('::', base64_decode($data), 2); + + + // decrypt + return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv); + +} + +/** +* acf_parse_markdown +* +* A very basic regex-based Markdown parser function based off [slimdown](https://gist.github.com/jbroadway/2836900). +* +* @date 6/8/18 +* @since 5.7.2 +* +* @param string $text The string to parse. +* @return string +*/ + +function acf_parse_markdown( $text = '' ) { + + // trim + $text = trim($text); + + // rules + $rules = array ( + '/=== (.+?) ===/' => '

                      $1

                      ', // headings + '/== (.+?) ==/' => '

                      $1

                      ', // headings + '/= (.+?) =/' => '

                      $1

                      ', // headings + '/\[([^\[]+)\]\(([^\)]+)\)/' => '$1', // links + '/(\*\*)(.*?)\1/' => '$2', // bold + '/(\*)(.*?)\1/' => '$2', // intalic + '/`(.*?)`/' => '$1', // inline code + '/\n\*(.*)/' => "\n
                        \n\t
                      • $1
                      • \n
                      ", // ul lists + '/\n[0-9]+\.(.*)/' => "\n
                        \n\t
                      1. $1
                      2. \n
                      ", // ol lists + '/<\/ul>\s?
                        /' => '', // fix extra ul + '/<\/ol>\s?
                          /' => '', // fix extra ol + ); + foreach( $rules as $k => $v ) { + $text = preg_replace($k, $v, $text); + } + + // autop + $text = wpautop($text); + + // return + return $text; +} + +/** +* acf_get_sites +* +* Returns an array of sites for a network. +* +* @date 29/08/2016 +* @since 5.4.0 +* +* @param void +* @return array +*/ +function acf_get_sites() { + $results = array(); + $sites = get_sites( array( 'number' => 0 ) ); + if( $sites ) { + foreach( $sites as $site ) { + $results[] = get_site( $site )->to_array(); + } + } + return $results; +} + +/** +* acf_convert_rules_to_groups +* +* Converts an array of rules from ACF4 to an array of groups for ACF5 +* +* @date 25/8/18 +* @since 5.7.4 +* +* @param array $rules An array of rules. +* @param string $anyorall The anyorall setting used in ACF4. Defaults to 'any'. +* @return array +*/ +function acf_convert_rules_to_groups( $rules, $anyorall = 'any' ) { + + // vars + $groups = array(); + $index = 0; + + // loop + foreach( $rules as $rule ) { + + // extract vars + $group = acf_extract_var( $rule, 'group_no' ); + $order = acf_extract_var( $rule, 'order_no' ); + + // calculate group if not defined + if( $group === null ) { + $group = $index; + + // use $anyorall to determine if a new group is needed + if( $anyorall == 'any' ) { + $index++; + } + } + + // calculate order if not defined + if( $order === null ) { + $order = isset($groups[ $group ]) ? count($groups[ $group ]) : 0; + } + + // append to group + $groups[ $group ][ $order ] = $rule; + + // sort groups + ksort( $groups[ $group ] ); + } + + // sort groups + ksort( $groups ); + + // return + return $groups; +} + +/** +* acf_register_ajax +* +* Regsiters an ajax callback. +* +* @date 5/10/18 +* @since 5.7.7 +* +* @param string $name The ajax action name. +* @param array $callback The callback function or array. +* @param bool $public Whether to allow access to non logged in users. +* @return void +*/ +function acf_register_ajax( $name = '', $callback = false, $public = false ) { + + // vars + $action = "acf/ajax/$name"; + + // add action for logged-in users + add_action( "wp_ajax_$action", $callback ); + + // add action for non logged-in users + if( $public ) { + add_action( "wp_ajax_nopriv_$action", $callback ); + } +} + +/** +* acf_str_camel_case +* +* Converts a string into camelCase. +* Thanks to https://stackoverflow.com/questions/31274782/convert-array-keys-from-underscore-case-to-camelcase-recursively +* +* @date 24/10/18 +* @since 5.8.0 +* +* @param string $string The string ot convert. +* @return string +*/ +function acf_str_camel_case( $string = '' ) { + return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $string)))); +} + +/** +* acf_array_camel_case +* +* Converts all aray keys to camelCase. +* +* @date 24/10/18 +* @since 5.8.0 +* +* @param array $array The array to convert. +* @return array +*/ +function acf_array_camel_case( $array = array() ) { + $array2 = array(); + foreach( $array as $k => $v ) { + $array2[ acf_str_camel_case($k) ] = $v; + } + return $array2; +} + +/** + * acf_is_block_editor + * + * Returns true if the current screen uses the block editor. + * + * @date 13/12/18 + * @since 5.8.0 + * + * @param void + * @return bool + */ +function acf_is_block_editor() { + if( function_exists('get_current_screen') ) { + $screen = get_current_screen(); + if( method_exists($screen, 'is_block_editor') ) { + return $screen->is_block_editor(); + } + } + return false; +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/api/api-template.php b/wp-content/plugins/advanced-custom-fields/includes/api/api-template.php new file mode 100644 index 0000000..bfd0fd2 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/api/api-template.php @@ -0,0 +1,1539 @@ + $selector, + 'key' => '', + 'type' => '', + )); + + + // prevent formatting + $format_value = false; + + } + + + // get value for field + $value = acf_get_value( $post_id, $field ); + + + // format value + if( $format_value ) { + + // get value for field + $value = acf_format_value( $value, $post_id, $field ); + + } + + + // return + return $value; + +} + + +/* +* the_field() +* +* This function is the same as echo get_field(). +* +* @type function +* @since 1.0.3 +* @date 29/01/13 +* +* @param $selector (string) the field name or key +* @param $post_id (mixed) the post_id of which the value is saved against +* @return n/a +*/ + +function the_field( $selector, $post_id = false, $format_value = true ) { + + $value = get_field($selector, $post_id, $format_value); + + if( is_array($value) ) { + + $value = @implode( ', ', $value ); + + } + + echo $value; + +} + + +/* +* get_field_object() +* +* This function will return an array containing all the field data for a given field_name +* +* @type function +* @since 3.6 +* @date 3/02/13 +* +* @param $selector (string) the field name or key +* @param $post_id (mixed) the post_id of which the value is saved against +* @param $format_value (boolean) whether or not to format the field value +* @param $load_value (boolean) whether or not to load the field value +* @return $field (array) +*/ + +function get_field_object( $selector, $post_id = false, $format_value = true, $load_value = true ) { + + // compatibilty + if( is_array($format_value) ) extract( $format_value ); + + + // get valid post_id + $post_id = acf_get_valid_post_id( $post_id ); + + + // get field key + $field = acf_maybe_get_field( $selector, $post_id ); + + + // bail early if no field found + if( !$field ) return false; + + + // load value + if( $load_value ) { + + $field['value'] = acf_get_value( $post_id, $field ); + + } + + + // format value + if( $format_value ) { + + // get value for field + $field['value'] = acf_format_value( $field['value'], $post_id, $field ); + + } + + + // return + return $field; + +} + +/* +* acf_get_object_field +* +* This function will return a field for the given selector. +* It will also review the field_reference to ensure the correct field is returned which makes it useful for the template API +* +* @type function +* @date 4/08/2015 +* @since 5.2.3 +* +* @param $selector (mixed) identifyer of field. Can be an ID, key, name or post object +* @param $post_id (mixed) the post_id of which the value is saved against +* @param $strict (boolean) if true, return a field only when a field key is found. +* @return $field (array) +*/ +function acf_maybe_get_field( $selector, $post_id = false, $strict = true ) { + + // init + acf_init(); + + // Check if field key was given. + if( acf_is_field_key($selector) ) { + return acf_get_field( $selector ); + } + + // Lookup field via reference. + $post_id = acf_get_valid_post_id( $post_id ); + $field = acf_get_meta_field( $selector, $post_id ); + if( $field ) { + return $field; + } + + // Lookup field loosely via name. + if( !$strict ) { + return acf_get_field( $selector ); + } + + // Return no result. + return false; +} + +/* +* acf_maybe_get_sub_field +* +* This function will attempt to find a sub field +* +* @type function +* @date 3/10/2016 +* @since 5.4.0 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_maybe_get_sub_field( $selectors, $post_id = false, $strict = true ) { + + // bail ealry if not enough selectors + if( !is_array($selectors) || count($selectors) < 3 ) return false; + + + // vars + $offset = acf_get_setting('row_index_offset'); + $selector = acf_extract_var( $selectors, 0 ); + $selectors = array_values( $selectors ); // reset keys + + + // attempt get field + $field = acf_maybe_get_field( $selector, $post_id, $strict ); + + + // bail early if no field + if( !$field ) return false; + + + // loop + for( $j = 0; $j < count($selectors); $j+=2 ) { + + // vars + $sub_i = $selectors[ $j ]; + $sub_s = $selectors[ $j+1 ]; + $field_name = $field['name']; + + + // find sub field + $field = acf_get_sub_field( $sub_s, $field ); + + + // bail early if no sub field + if( !$field ) return false; + + + // add to name + $field['name'] = $field_name . '_' . ($sub_i-$offset) . '_' . $field['name']; + + } + + + // return + return $field; +} + +/* +* get_fields() +* +* This function will return an array containing all the custom field values for a specific post_id. +* The function is not very elegant and wastes a lot of PHP memory / SQL queries if you are not using all the values. +* +* @type function +* @since 3.6 +* @date 29/01/13 +* +* @param $post_id (mixed) the post_id of which the value is saved against +* @param $format_value (boolean) whether or not to format the field value +* @return (array) associative array where field name => field value +*/ + +function get_fields( $post_id = false, $format_value = true ) { + + // vars + $fields = get_field_objects( $post_id, $format_value ); + $meta = array(); + + + // bail early + if( !$fields ) return false; + + + // populate + foreach( $fields as $k => $field ) { + + $meta[ $k ] = $field['value']; + + } + + + // return + return $meta; + +} + + +/* +* get_field_objects() +* +* This function will return an array containing all the custom field objects for a specific post_id. +* The function is not very elegant and wastes a lot of PHP memory / SQL queries if you are not using all the fields / values. +* +* @type function +* @since 3.6 +* @date 29/01/13 +* +* @param $post_id (mixed) the post_id of which the value is saved against +* @param $format_value (boolean) whether or not to format the field value +* @param $load_value (boolean) whether or not to load the field value +* @return (array) associative array where field name => field +*/ + +function get_field_objects( $post_id = false, $format_value = true, $load_value = true ) { + + // init + acf_init(); + + // validate post_id + $post_id = acf_get_valid_post_id( $post_id ); + + // get meta + $meta = acf_get_meta( $post_id ); + + // bail early if no meta + if( empty($meta) ) return false; + + // populate vars + $fields = array(); + foreach( $meta as $key => $value ) { + + // bail if reference key does not exist + if( !isset($meta["_$key"]) ) continue; + + // get field + $field = acf_get_field($meta["_$key"]); + + // bail early if no field, or if the field's name is different to $key + // - solves problem where sub fields (and clone fields) are incorrectly allowed + if( !$field || $field['name'] !== $key ) continue; + + // load value + if( $load_value ) { + $field['value'] = acf_get_value( $post_id, $field ); + } + + // format value + if( $format_value ) { + $field['value'] = acf_format_value( $field['value'], $post_id, $field ); + } + + // append to $value + $fields[ $key ] = $field; + } + + // no value + if( empty($fields) ) return false; + + // return + return $fields; +} + + +/* +* have_rows +* +* This function will instantiate a global variable containing the rows of a repeater or flexible content field, +* after which, it will determine if another row exists to loop through +* +* @type function +* @date 2/09/13 +* @since 4.3.0 +* +* @param $field_name (string) the field name +* @param $post_id (mixed) the post_id of which the value is saved against +* @return (boolean) +*/ + +function have_rows( $selector, $post_id = false ) { + + // reference + $_post_id = $post_id; + + + // filter post_id + $post_id = acf_get_valid_post_id( $post_id ); + + + // vars + $key = "selector={$selector}/post_id={$post_id}"; + $active_loop = acf_get_loop('active'); + $previous_loop = acf_get_loop('previous'); + $new_parent_loop = false; + $new_child_loop = false; + $sub_field = false; + $sub_exists = false; + $change = false; + + + // no active loops + if( !$active_loop ) { + + // create a new loop + $new_parent_loop = true; + + // loop has changed + } elseif( $active_loop['key'] != $key ) { + + // detect change + if( $post_id != $active_loop['post_id'] ) { + + $change = 'post_id'; + + } elseif( $selector != $active_loop['selector'] ) { + + $change = 'selector'; + + } else { + + // key has changed due to a technicallity, however, the post_id and selector are the same + + } + + + // attempt to find sub field + $sub_field = acf_get_sub_field($selector, $active_loop['field']); + + if( $sub_field ) { + + $sub_exists = isset( $active_loop['value'][ $active_loop['i'] ][ $sub_field['key'] ] ); + + } + + + // If post_id has changed, this is most likely an archive loop + if( $change == 'post_id' ) { + + if( empty($_post_id) && $sub_exists ) { + + // case: Change in $post_id was due to this being a nested loop and not specifying the $post_id + // action: move down one level into a new loop + $new_child_loop = true; + + } elseif( $previous_loop && $previous_loop['post_id'] == $post_id ) { + + // case: Change in $post_id was due to a nested loop ending + // action: move up one level through the loops + acf_remove_loop('active'); + $active_loop = $previous_loop; + + } else { + + // case: Chang in $post_id is the most obvious, used in an WP_Query loop with multiple $post objects + // action: leave this current loop alone and create a new parent loop + $new_parent_loop = true; + + } + + } elseif( $change == 'selector' ) { + + if( $sub_exists ) { + + // case: Change in $field_name was due to this being a nested loop + // action: move down one level into a new loop + $new_child_loop = true; + + } elseif( $previous_loop && $previous_loop['selector'] == $selector && $previous_loop['post_id'] == $post_id ) { + + // case: Change in $field_name was due to a nested loop ending + // action: move up one level through the loops + acf_remove_loop('active'); + $active_loop = $previous_loop; + + } else { + + // case: Chang in $field_name is the most obvious, this is a new loop for a different field within the $post + // action: leave this current loop alone and create a new parent loop + $new_parent_loop = true; + + } + + } + + // loop is the same + } else { + + // do nothing + + } + + + // add loop + if( $new_parent_loop || $new_child_loop ) { + + // vars + $field = null; + $value = null; + $name = ''; + + + // parent loop + if( $new_parent_loop ) { + + $field = get_field_object( $selector, $post_id, false ); + $value = acf_extract_var( $field, 'value' ); + $name = $field['name']; + + // child loop + } else { + + $field = $sub_field; + $value = $active_loop['value'][ $active_loop['i'] ][ $sub_field['key'] ]; + $name = $active_loop['name'] . '_' . $active_loop['i'] . '_' . $sub_field['name']; + $post_id = $active_loop['post_id']; + + } + + + // bail early if value is either empty or a non array + if( !acf_is_array($value) ) return false; + + + // allow for non repeatable data (group) + if( acf_get_field_type_prop($field['type'], 'have_rows') === 'single' ) { + $value = array( $value ); + } + + + // add loop + $active_loop = acf_add_loop(array( + 'selector' => $selector, + 'name' => $name, // used by update_sub_field + 'value' => $value, + 'field' => $field, + 'i' => -1, + 'post_id' => $post_id, + 'key' => $key + )); + + } + + + // return true if next row exists + if( $active_loop && isset($active_loop['value'][ $active_loop['i']+1 ]) ) { + + return true; + + } + + + // no next row! + acf_remove_loop('active'); + + + // return + return false; + +} + + +/* +* the_row +* +* This function will progress the global repeater or flexible content value 1 row +* +* @type function +* @date 2/09/13 +* @since 4.3.0 +* +* @param N/A +* @return (array) the current row data +*/ + +function the_row( $format = false ) { + + // vars + $i = acf_get_loop('active', 'i'); + + + // increase + $i++; + + + // update + acf_update_loop('active', 'i', $i); + + + // return + return get_row( $format ); + +} + +function get_row( $format = false ) { + + // vars + $loop = acf_get_loop('active'); + + + // bail early if no loop + if( !$loop ) return false; + + + // get value + $value = acf_maybe_get( $loop['value'], $loop['i'] ); + + + // bail early if no current value + // possible if get_row_layout() is called before the_row() + if( !$value ) return false; + + + // format + if( $format ) { + + // vars + $field = $loop['field']; + + + // single row + if( acf_get_field_type_prop($field['type'], 'have_rows') === 'single' ) { + + // format value + $value = acf_format_value( $value, $loop['post_id'], $field ); + + // multiple rows + } else { + + // format entire value + // - solves problem where cached value is incomplete + // - no performance issues here thanks to cache + $value = acf_format_value( $loop['value'], $loop['post_id'], $field ); + $value = acf_maybe_get( $value, $loop['i'] ); + + } + + } + + + // return + return $value; + +} + +function get_row_index() { + + // vars + $i = acf_get_loop('active', 'i'); + $offset = acf_get_setting('row_index_offset'); + + + // return + return $offset + $i; + +} + +function the_row_index() { + + echo get_row_index(); + +} + + +/* +* get_row_sub_field +* +* This function is used inside a 'has_sub_field' while loop to return a sub field object +* +* @type function +* @date 16/05/2016 +* @since 5.3.8 +* +* @param $selector (string) +* @return (array) +*/ + +function get_row_sub_field( $selector ) { + + // vars + $row = acf_get_loop('active'); + + + // bail early if no row + if( !$row ) return false; + + + // attempt to find sub field + $sub_field = acf_get_sub_field($selector, $row['field']); + + + // bail early if no field + if( !$sub_field ) return false; + + + // update field's name based on row data + $sub_field['name'] = "{$row['name']}_{$row['i']}_{$sub_field['name']}"; + + + // return + return $sub_field; + +} + + +/* +* get_row_sub_value +* +* This function is used inside a 'has_sub_field' while loop to return a sub field value +* +* @type function +* @date 16/05/2016 +* @since 5.3.8 +* +* @param $selector (string) +* @return (mixed) +*/ + +function get_row_sub_value( $selector ) { + + // vars + $row = acf_get_loop('active'); + + + // bail early if no row + if( !$row ) return null; + + + // return value + if( isset($row['value'][ $row['i'] ][ $selector ]) ) { + + return $row['value'][ $row['i'] ][ $selector ]; + + } + + + // return + return null; + +} + + +/* +* reset_rows +* +* This function will find the current loop and unset it from the global array. +* To bo used when loop finishes or a break is used +* +* @type function +* @date 26/10/13 +* @since 5.0.0 +* +* @param $hard_reset (boolean) completely wipe the global variable, or just unset the active row +* @return (boolean) +*/ + +function reset_rows() { + + // remove last loop + acf_remove_loop('active'); + + + // return + return true; + +} + + +/* +* has_sub_field() +* +* This function is used inside a while loop to return either true or false (loop again or stop). +* When using a repeater or flexible content field, it will loop through the rows until +* there are none left or a break is detected +* +* @type function +* @since 1.0.3 +* @date 29/01/13 +* +* @param $field_name (string) the field name +* @param $post_id (mixed) the post_id of which the value is saved against +* @return (boolean) +*/ + +function has_sub_field( $field_name, $post_id = false ) { + + // vars + $r = have_rows( $field_name, $post_id ); + + + // if has rows, progress through 1 row for the while loop to work + if( $r ) { + + the_row(); + + } + + + // return + return $r; + +} + +function has_sub_fields( $field_name, $post_id = false ) { + + return has_sub_field( $field_name, $post_id ); + +} + + +/* +* get_sub_field() +* +* This function is used inside a 'has_sub_field' while loop to return a sub field value +* +* @type function +* @since 1.0.3 +* @date 29/01/13 +* +* @param $field_name (string) the field name +* @return (mixed) +*/ + +function get_sub_field( $selector = '', $format_value = true ) { + + // get sub field + $sub_field = get_sub_field_object( $selector, $format_value ); + + + // bail early if no sub field + if( !$sub_field ) return false; + + + // return + return $sub_field['value']; + +} + + +/* +* the_sub_field() +* +* This function is the same as echo get_sub_field +* +* @type function +* @since 1.0.3 +* @date 29/01/13 +* +* @param $field_name (string) the field name +* @return n/a +*/ + +function the_sub_field( $field_name, $format_value = true ) { + + $value = get_sub_field( $field_name, $format_value ); + + if( is_array($value) ) { + + $value = implode(', ',$value); + + } + + echo $value; +} + + +/* +* get_sub_field_object() +* +* This function is used inside a 'has_sub_field' while loop to return a sub field object +* +* @type function +* @since 3.5.8.1 +* @date 29/01/13 +* +* @param $child_name (string) the field name +* @return (array) +*/ + +function get_sub_field_object( $selector, $format_value = true, $load_value = true ) { + + // vars + $row = acf_get_loop('active'); + + + // bail early if no row + if( !$row ) return false; + + + // attempt to find sub field + $sub_field = get_row_sub_field($selector); + + + // bail early if no sub field + if( !$sub_field ) return false; + + + // load value + if( $load_value ) { + + $sub_field['value'] = get_row_sub_value( $sub_field['key'] ); + + } + + + // format value + if( $format_value ) { + + // get value for field + $sub_field['value'] = acf_format_value( $sub_field['value'], $row['post_id'], $sub_field ); + + } + + + // return + return $sub_field; + +} + + +/* +* get_row_layout() +* +* This function will return a string representation of the current row layout within a 'have_rows' loop +* +* @type function +* @since 3.0.6 +* @date 29/01/13 +* +* @param n/a +* @return (string) +*/ + +function get_row_layout() { + + // vars + $row = get_row(); + + + // return + if( isset($row['acf_fc_layout']) ) { + + return $row['acf_fc_layout']; + + } + + + // return + return false; + +} + + +/* +* acf_shortcode() +* +* This function is used to add basic shortcode support for the ACF plugin +* eg. [acf field="heading" post_id="123" format_value="1"] +* +* @type function +* @since 1.1.1 +* @date 29/01/13 +* +* @param $field (string) the field name or key +* @param $post_id (mixed) the post_id of which the value is saved against +* @param $format_value (boolean) whether or not to format the field value +* @return (string) +*/ + +function acf_shortcode( $atts ) { + + // extract attributs + extract( shortcode_atts( array( + 'field' => '', + 'post_id' => false, + 'format_value' => true + ), $atts ) ); + + + // get value and return it + $value = get_field( $field, $post_id, $format_value ); + + + // array + if( is_array($value) ) { + + $value = @implode( ', ', $value ); + + } + + + // return + return $value; + +} + +add_shortcode('acf', 'acf_shortcode'); + + +/* +* update_field() +* +* This function will update a value in the database +* +* @type function +* @since 3.1.9 +* @date 29/01/13 +* +* @param $selector (string) the field name or key +* @param $value (mixed) the value to save in the database +* @param $post_id (mixed) the post_id of which the value is saved against +* @return (boolean) +*/ + +function update_field( $selector, $value, $post_id = false ) { + + // filter post_id + $post_id = acf_get_valid_post_id( $post_id ); + + + // get field + $field = acf_maybe_get_field( $selector, $post_id, false ); + + + // create dummy field + if( !$field ) { + + $field = acf_get_valid_field(array( + 'name' => $selector, + 'key' => '', + 'type' => '', + )); + + } + + + // save + return acf_update_value( $value, $post_id, $field ); + +} + + +/* +* update_sub_field +* +* This function will update a value of a sub field in the database +* +* @type function +* @date 2/04/2014 +* @since 5.0.0 +* +* @param $selector (mixed) the sub field name or key, or an array of ancestors +* @param $value (mixed) the value to save in the database +* @param $post_id (mixed) the post_id of which the value is saved against +* @return (boolean) +*/ + +function update_sub_field( $selector, $value, $post_id = false ) { + + // vars + $sub_field = false; + + + // get sub field + if( is_array($selector) ) { + + $post_id = acf_get_valid_post_id( $post_id ); + $sub_field = acf_maybe_get_sub_field( $selector, $post_id, false ); + + } else { + + $post_id = acf_get_loop('active', 'post_id'); + $sub_field = get_row_sub_field( $selector ); + + } + + + // bail early if no sub field + if( !$sub_field ) return false; + + + // update + return acf_update_value( $value, $post_id, $sub_field ); + +} + + +/* +* delete_field() +* +* This function will remove a value from the database +* +* @type function +* @since 3.1.9 +* @date 29/01/13 +* +* @param $selector (string) the field name or key +* @param $post_id (mixed) the post_id of which the value is saved against +* @return (boolean) +*/ + +function delete_field( $selector, $post_id = false ) { + + // filter post_id + $post_id = acf_get_valid_post_id( $post_id ); + + + // get field + $field = acf_maybe_get_field( $selector, $post_id ); + + + // delete + return acf_delete_value( $post_id, $field ); + +} + + +/* +* delete_sub_field +* +* This function will delete a value of a sub field in the database +* +* @type function +* @date 2/04/2014 +* @since 5.0.0 +* +* @param $selector (mixed) the sub field name or key, or an array of ancestors +* @param $value (mixed) the value to save in the database +* @param $post_id (mixed) the post_id of which the value is saved against +* @return (boolean) +*/ + +function delete_sub_field( $selector, $post_id = false ) { + + return update_sub_field( $selector, null, $post_id ); + +} + + +/* +* add_row +* +* This function will add a row of data to a field +* +* @type function +* @date 16/10/2015 +* @since 5.2.3 +* +* @param $selector (string) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) +*/ + +function add_row( $selector, $row = false, $post_id = false ) { + + // filter post_id + $post_id = acf_get_valid_post_id( $post_id ); + + + // get field + $field = acf_maybe_get_field( $selector, $post_id, false ); + + + // bail early if no field + if( !$field ) return false; + + + // get raw value + $value = acf_get_value( $post_id, $field ); + + + // ensure array + $value = acf_get_array($value); + + + // append + $value[] = $row; + + + // update value + acf_update_value( $value, $post_id, $field ); + + + // return + return count($value); + +} + + +/* +* add_sub_row +* +* This function will add a row of data to a field +* +* @type function +* @date 16/10/2015 +* @since 5.2.3 +* +* @param $selector (string) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) +*/ + +function add_sub_row( $selector, $row = false, $post_id = false ) { + + // vars + $sub_field = false; + + + // get sub field + if( is_array($selector) ) { + + $post_id = acf_get_valid_post_id( $post_id ); + $sub_field = acf_maybe_get_sub_field( $selector, $post_id, false ); + + } else { + + $post_id = acf_get_loop('active', 'post_id'); + $sub_field = get_row_sub_field( $selector ); + + } + + + // bail early if no sub field + if( !$sub_field ) return false; + + + // get raw value + $value = acf_get_value( $post_id, $sub_field ); + + + // ensure array + $value = acf_get_array( $value ); + + + // append + $value[] = $row; + + + // update + acf_update_value( $value, $post_id, $sub_field ); + + + // return + return count($value); + +} + + +/* +* update_row +* +* This function will update a row of data to a field +* +* @type function +* @date 19/10/2015 +* @since 5.2.3 +* +* @param $selector (string) +* @param $i (int) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) +*/ + +function update_row( $selector, $i = 1, $row = false, $post_id = false ) { + + // vars + $offset = acf_get_setting('row_index_offset'); + $i = $i - $offset; + + + // filter post_id + $post_id = acf_get_valid_post_id( $post_id ); + + + // get field + $field = acf_maybe_get_field( $selector, $post_id, false ); + + + // bail early if no field + if( !$field ) return false; + + + // get raw value + $value = acf_get_value( $post_id, $field ); + + + // ensure array + $value = acf_get_array($value); + + + // update + $value[ $i ] = $row; + + + // update value + acf_update_value( $value, $post_id, $field ); + + + // return + return true; + +} + + +/* +* update_sub_row +* +* This function will add a row of data to a field +* +* @type function +* @date 16/10/2015 +* @since 5.2.3 +* +* @param $selector (string) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) +*/ + +function update_sub_row( $selector, $i = 1, $row = false, $post_id = false ) { + + // vars + $sub_field = false; + $offset = acf_get_setting('row_index_offset'); + $i = $i - $offset; + + + // get sub field + if( is_array($selector) ) { + + $post_id = acf_get_valid_post_id( $post_id ); + $sub_field = acf_maybe_get_sub_field( $selector, $post_id, false ); + + } else { + + $post_id = acf_get_loop('active', 'post_id'); + $sub_field = get_row_sub_field( $selector ); + + } + + + // bail early if no sub field + if( !$sub_field ) return false; + + + // get raw value + $value = acf_get_value( $post_id, $sub_field ); + + + // ensure array + $value = acf_get_array( $value ); + + + // append + $value[ $i ] = $row; + + + // update + acf_update_value( $value, $post_id, $sub_field ); + + + // return + return true; + +} + + +/* +* delete_row +* +* This function will delete a row of data from a field +* +* @type function +* @date 19/10/2015 +* @since 5.2.3 +* +* @param $selector (string) +* @param $i (int) +* @param $post_id (mixed) +* @return (boolean) +*/ + +function delete_row( $selector, $i = 1, $post_id = false ) { + + // vars + $offset = acf_get_setting('row_index_offset'); + $i = $i - $offset; + + + // filter post_id + $post_id = acf_get_valid_post_id( $post_id ); + + + // get field + $field = acf_maybe_get_field( $selector, $post_id ); + + + // bail early if no field + if( !$field ) return false; + + + // get value + $value = acf_get_value( $post_id, $field ); + + + // ensure array + $value = acf_get_array($value); + + + // bail early if index doesn't exist + if( !isset($value[ $i ]) ) return false; + + + // unset + unset( $value[ $i ] ); + + + // update + acf_update_value( $value, $post_id, $field ); + + + // return + return true; + +} + + +/* +* delete_sub_row +* +* This function will add a row of data to a field +* +* @type function +* @date 16/10/2015 +* @since 5.2.3 +* +* @param $selector (string) +* @param $row (array) +* @param $post_id (mixed) +* @return (boolean) +*/ + +function delete_sub_row( $selector, $i = 1, $post_id = false ) { + + // vars + $sub_field = false; + $offset = acf_get_setting('row_index_offset'); + $i = $i - $offset; + + + // get sub field + if( is_array($selector) ) { + + $post_id = acf_get_valid_post_id( $post_id ); + $sub_field = acf_maybe_get_sub_field( $selector, $post_id, false ); + + } else { + + $post_id = acf_get_loop('active', 'post_id'); + $sub_field = get_row_sub_field( $selector ); + + } + + + // bail early if no sub field + if( !$sub_field ) return false; + + + // get raw value + $value = acf_get_value( $post_id, $sub_field ); + + + // ensure array + $value = acf_get_array( $value ); + + + // bail early if index doesn't exist + if( !isset($value[ $i ]) ) return false; + + + // append + unset( $value[ $i ] ); + + + // update + acf_update_value( $value, $post_id, $sub_field ); + + + // return + return true; + +} + + +/* +* Depreceated Functions +* +* These functions are outdated +* +* @type function +* @date 4/03/2014 +* @since 1.0.0 +* +* @param n/a +* @return n/a +*/ + +function create_field( $field ) { + + acf_render_field( $field ); + +} + +function render_field( $field ) { + + acf_render_field( $field ); + +} + +function reset_the_repeater_field() { + + return reset_rows(); + +} + +function the_repeater_field( $field_name, $post_id = false ) { + + return has_sub_field( $field_name, $post_id ); + +} + +function the_flexible_field( $field_name, $post_id = false ) { + + return has_sub_field( $field_name, $post_id ); + +} + +function acf_filter_post_id( $post_id ) { + + return acf_get_valid_post_id( $post_id ); + +} + +?> diff --git a/wp-content/plugins/advanced-custom-fields/includes/api/api-term.php b/wp-content/plugins/advanced-custom-fields/includes/api/api-term.php new file mode 100644 index 0000000..0eef7fd --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/api/api-term.php @@ -0,0 +1,501 @@ + $object ) { + + // bail early if is builtin (WP) private post type + // - nav_menu_item, revision, customize_changeset, etc + if( $object->_builtin && !$object->public ) continue; + + // append + $taxonomies[] = $i; + } + + // custom post_type arg which does not yet exist in core + if( isset($args['post_type']) ) { + $taxonomies = acf_get_taxonomies_for_post_type($args['post_type']); + } + + // filter + $taxonomies = apply_filters('acf/get_taxonomies', $taxonomies, $args); + + // return + return $taxonomies; +} + +/** +* acf_get_taxonomies_for_post_type +* +* Returns an array of taxonomies for a given post type(s) +* +* @date 7/9/18 +* @since 5.7.5 +* +* @param string|array $post_types The post types to compare against. +* @return array +*/ +function acf_get_taxonomies_for_post_type( $post_types = 'post' ) { + + // vars + $taxonomies = array(); + + // loop + foreach( (array) $post_types as $post_type ) { + $object_taxonomies = get_object_taxonomies( $post_type ); + foreach( (array) $object_taxonomies as $taxonomy ) { + $taxonomies[] = $taxonomy; + } + } + + // remove duplicates + $taxonomies = array_unique($taxonomies); + + // return + return $taxonomies; +} + +/* +* acf_get_taxonomy_labels +* +* Returns an array of taxonomies in the format "name => label" for use in a select field. +* +* @date 3/8/18 +* @since 5.7.2 +* +* @param array $taxonomies Optional. An array of specific taxonomies to return. +* @return array +*/ + +function acf_get_taxonomy_labels( $taxonomies = array() ) { + + // default + if( empty($taxonomies) ) { + $taxonomies = acf_get_taxonomies(); + } + + // vars + $ref = array(); + $data = array(); + + // loop + foreach( $taxonomies as $taxonomy ) { + + // vars + $object = get_taxonomy( $taxonomy ); + $label = $object->labels->singular_name; + + // append + $data[ $taxonomy ] = $label; + + // increase counter + if( !isset($ref[ $label ]) ) { + $ref[ $label ] = 0; + } + $ref[ $label ]++; + } + + // show taxonomy name next to label for shared labels + foreach( $data as $taxonomy => $label ) { + if( $ref[$label] > 1 ) { + $data[ $taxonomy ] .= ' (' . $taxonomy . ')'; + } + } + + // return + return $data; +} + +/** +* acf_get_term_title +* +* Returns the title for this term object. +* +* @date 10/9/18 +* @since 5.0.0 +* +* @param object $term The WP_Term object. +* @return string +*/ + +function acf_get_term_title( $term ) { + + // set to term name + $title = $term->name; + + // allow for empty name + if( $title === '' ) { + $title = __('(no title)', 'acf'); + } + + // prepent ancestors indentation + if( is_taxonomy_hierarchical($term->taxonomy) ) { + $ancestors = get_ancestors( $term->term_id, $term->taxonomy ); + $title = str_repeat('- ', count($ancestors)) . $title; + } + + // return + return $title; +} + +/** +* acf_get_grouped_terms +* +* Returns an array of terms for the given query $args and groups by taxonomy name. +* +* @date 2/8/18 +* @since 5.7.2 +* +* @param array $args An array of args used in the get_terms() function. +* @return array +*/ + +function acf_get_grouped_terms( $args ) { + + // vars + $data = array(); + + // defaults + $args = wp_parse_args($args, array( + 'taxonomy' => null, + 'hide_empty' => false, + 'update_term_meta_cache' => false, + )); + + // vars + $taxonomies = acf_get_taxonomy_labels( acf_get_array($args['taxonomy']) ); + $is_single = (count($taxonomies) == 1); + + // specify exact taxonomies required for _acf_terms_clauses() to work. + $args['taxonomy'] = array_keys($taxonomies); + + // add filter to group results by taxonomy + if( !$is_single ) { + add_filter('terms_clauses', '_acf_terms_clauses', 10, 3); + } + + // get terms + $terms = get_terms( $args ); + + // remove this filter (only once) + if( !$is_single ) { + remove_filter('terms_clauses', '_acf_terms_clauses', 10, 3); + } + + // loop + foreach( $taxonomies as $taxonomy => $label ) { + + // vars + $this_terms = array(); + + // populate $this_terms + foreach( $terms as $term ) { + if( $term->taxonomy == $taxonomy ) { + $this_terms[] = $term; + } + } + + // bail early if no $items + if( empty($this_terms) ) continue; + + // sort into hierachial order + // this will fail if a search has taken place because parents wont exist + if( is_taxonomy_hierarchical($taxonomy) && empty($args['s'])) { + + // get all terms from this taxonomy + $all_terms = get_terms(array_merge($args, array( + 'number' => 0, + 'offset' => 0, + 'taxonomy' => $taxonomy + ))); + + // vars + $length = count($this_terms); + $offset = 0; + + // find starting point (offset) + foreach( $all_terms as $i => $term ) { + if( $term->term_id == $this_terms[0]->term_id ) { + $offset = $i; + break; + } + } + + // order terms + $parent = acf_maybe_get( $args, 'parent', 0 ); + $parent = acf_maybe_get( $args, 'child_of', $parent ); + $ordered_terms = _get_term_children( $parent, $all_terms, $taxonomy ); + + // compare aray lengths + // if $ordered_posts is smaller than $all_posts, WP has lost posts during the get_page_children() function + // this is possible when get_post( $args ) filter out parents (via taxonomy, meta and other search parameters) + if( count($ordered_terms) == count($all_terms) ) { + $this_terms = array_slice($ordered_terms, $offset, $length); + } + } + + // populate group + $data[ $label ] = array(); + foreach( $this_terms as $term ) { + $data[ $label ][ $term->term_id ] = $term; + } + } + + // return + return $data; +} + +/** +* _acf_terms_clauses +* +* Used in the 'terms_clauses' filter to order terms by taxonomy name. +* +* @date 2/8/18 +* @since 5.7.2 +* +* @param array $pieces Terms query SQL clauses. +* @param array $taxonomies An array of taxonomies. +* @param array $args An array of terms query arguments. +* @return array $pieces +*/ + +function _acf_terms_clauses( $pieces, $taxonomies, $args ) { + + // prepend taxonomy to 'orderby' SQL + if( is_array($taxonomies) ) { + $sql = "FIELD(tt.taxonomy,'" . implode("', '", array_map('esc_sql', $taxonomies)) . "')"; + $pieces['orderby'] = str_replace("ORDER BY", "ORDER BY $sql,", $pieces['orderby']); + } + + // return + return $pieces; +} + +/** +* acf_get_pretty_taxonomies +* +* Deprecated in favor of acf_get_taxonomy_labels() function. +* +* @date 7/10/13 +* @since 5.0.0 +* @deprecated 5.7.2 +*/ + +function acf_get_pretty_taxonomies( $taxonomies = array() ) { + return acf_get_taxonomy_labels( $taxonomies ); +} + +/** +* acf_get_term +* +* Similar to get_term() but with some extra functionality. +* +* @date 19/8/18 +* @since 5.7.3 +* +* @param mixed $term_id The term ID or a string of "taxonomy:slug". +* @param string $taxonomy The taxonomyname. +* @return WP_Term +*/ + +function acf_get_term( $term_id, $taxonomy = '' ) { + + // allow $term_id parameter to be a string of "taxonomy:slug" or "taxonomy:id" + if( is_string($term_id) && strpos($term_id, ':') ) { + list( $taxonomy, $term_id ) = explode(':', $term_id); + $term = get_term_by( 'slug', $term_id, $taxonomy ); + if( $term ) return $term; + } + + // return + return get_term( $term_id, $taxonomy ); +} + +/** +* acf_encode_term +* +* Returns a "taxonomy:slug" string for a given WP_Term. +* +* @date 27/8/18 +* @since 5.7.4 +* +* @param WP_Term $term The term object. +* @return string +*/ +function acf_encode_term( $term ) { + return "{$term->taxonomy}:{$term->slug}"; +} + +/** +* acf_decode_term +* +* Decodes a "taxonomy:slug" string into an array of taxonomy and slug. +* +* @date 27/8/18 +* @since 5.7.4 +* +* @param WP_Term $term The term object. +* @return string +*/ +function acf_decode_term( $string ) { + if( is_string($string) && strpos($string, ':') ) { + list( $taxonomy, $slug ) = explode(':', $string); + return array( + 'taxonomy' => $taxonomy, + 'slug' => $slug + ); + } + return false; +} + +/** +* acf_get_encoded_terms +* +* Returns an array of WP_Term objects from an array of encoded strings +* +* @date 9/9/18 +* @since 5.7.5 +* +* @param array $values The array of encoded strings. +* @return array +*/ +function acf_get_encoded_terms( $values ) { + + // vars + $terms = array(); + + // loop over values + foreach( (array) $values as $value ) { + + // find term from string + $term = acf_get_term( $value ); + + // append + if( $term instanceof WP_Term ) { + $terms[] = $term; + } + } + + // return + return $terms; +} + +/** +* acf_get_choices_from_terms +* +* Returns an array of choices from the terms provided. +* +* @date 8/9/18 +* @since 5.7.5 +* +* @param array $values and array of WP_Terms objects or encoded strings. +* @param string $format The value format (term_id, slug). +* @return array +*/ +function acf_get_choices_from_terms( $terms, $format = 'term_id' ) { + + // vars + $groups = array(); + + // get taxonomy lables + $labels = acf_get_taxonomy_labels(); + + // convert array of encoded strings to terms + $term = reset($terms); + if( !$term instanceof WP_Term ) { + $terms = acf_get_encoded_terms( $terms ); + } + + // loop over terms + foreach( $terms as $term ) { + $group = $labels[ $term->taxonomy ]; + $choice = acf_get_choice_from_term( $term, $format ); + $groups[ $group ][ $choice['id'] ] = $choice['text']; + } + + // return + return $groups; +} + +/** +* acf_get_choices_from_grouped_terms +* +* Returns an array of choices from the grouped terms provided. +* +* @date 8/9/18 +* @since 5.7.5 +* +* @param array $value A grouped array of WP_Terms objects. +* @param string $format The value format (term_id, slug). +* @return array +*/ +function acf_get_choices_from_grouped_terms( $value, $format = 'term_id' ) { + + // vars + $groups = array(); + + // loop over values + foreach( $value as $group => $terms ) { + $groups[ $group ] = array(); + foreach( $terms as $term_id => $term ) { + $choice = acf_get_choice_from_term( $term, $format ); + $groups[ $group ][ $choice['id'] ] = $choice['text']; + } + } + + // return + return $groups; +} + +/** +* acf_get_choice_from_term +* +* Returns an array containing the id and text for this item. +* +* @date 10/9/18 +* @since 5.7.6 +* +* @param object $item The item object such as WP_Post or WP_Term. +* @param string $format The value format (term_id, slug) +* @return array +*/ +function acf_get_choice_from_term( $term, $format = 'term_id' ) { + + // vars + $id = $term->term_id; + $text = acf_get_term_title( $term ); + + // return format + if( $format == 'slug' ) { + $id = acf_encode_term($term); + } + + // return + return array( + 'id' => $id, + 'text' => $text + ); +} + + + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/assets.php b/wp-content/plugins/advanced-custom-fields/includes/assets.php new file mode 100644 index 0000000..00c2668 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/assets.php @@ -0,0 +1,482 @@ + $v ) { + $this->text[ $k ] = $v; + } + } + + + /** + * add_data + * + * description + * + * @date 13/4/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function add_data( $data ) { + foreach( (array) $data as $k => $v ) { + $this->data[ $k ] = $v; + } + } + + + /** + * register_scripts + * + * description + * + * @date 13/4/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function register_scripts() { + + // vars + $version = acf_get_setting('version'); + $min = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; + + // scripts + wp_register_script('acf-input', acf_get_url("assets/js/acf-input{$min}.js"), array('jquery', 'jquery-ui-sortable', 'jquery-ui-resizable'), $version ); + wp_register_script('acf-field-group', acf_get_url("assets/js/acf-field-group{$min}.js"), array('acf-input'), $version ); + + // styles + wp_register_style('acf-global', acf_get_url('assets/css/acf-global.css'), array(), $version ); + wp_register_style('acf-input', acf_get_url('assets/css/acf-input.css'), array('acf-global'), $version ); + wp_register_style('acf-field-group', acf_get_url('assets/css/acf-field-group.css'), array('acf-input'), $version ); + + // action + do_action('acf/register_scripts', $version, $min); + } + + + /** + * enqueue_scripts + * + * Enqueue scripts for input + * + * @date 13/4/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function enqueue_scripts( $args = array() ) { + + // run only once + if( acf_has_done('enqueue_scripts') ) { + return; + } + + // defaults + $args = wp_parse_args($args, array( + + // force tinymce editor to be enqueued + 'uploader' => false, + + // priority used for action callbacks, defaults to 20 which runs after defaults + 'priority' => 20, + + // action prefix + 'context' => is_admin() ? 'admin' : 'wp' + )); + + // define actions + $actions = array( + 'admin_enqueue_scripts' => $args['context'] . '_enqueue_scripts', + 'admin_print_scripts' => $args['context'] . '_print_scripts', + 'admin_head' => $args['context'] . '_head', + 'admin_footer' => $args['context'] . '_footer', + 'admin_print_footer_scripts' => $args['context'] . '_print_footer_scripts', + ); + + // fix customizer actions where head and footer are not available + if( $args['context'] == 'customize_controls' ) { + $actions['admin_head'] = $actions['admin_print_scripts']; + $actions['admin_footer'] = $actions['admin_print_footer_scripts']; + } + + // add actions + foreach( $actions as $function => $action ) { + acf_maybe_add_action( $action, array($this, $function), $args['priority'] ); + } + + // enqueue uploader + // WP requires a lot of JS + inline scripes to create the media modal and should be avoioded when possible. + // - priority must be less than 10 to allow WP to enqueue + if( $args['uploader'] ) { + add_action($actions['admin_footer'], 'acf_enqueue_uploader', 5); + } + + // localize text + acf_localize_text(array( + + // unload + 'The changes you made will be lost if you navigate away from this page' => __('The changes you made will be lost if you navigate away from this page', 'acf'), + + // media + 'Select.verb' => _x('Select', 'verb', 'acf'), + 'Edit.verb' => _x('Edit', 'verb', 'acf'), + 'Update.verb' => _x('Update', 'verb', 'acf'), + 'Uploaded to this post' => __('Uploaded to this post', 'acf'), + 'Expand Details' => __('Expand Details', 'acf'), + 'Collapse Details' => __('Collapse Details', 'acf'), + 'Restricted' => __('Restricted', 'acf'), + 'All images' => __('All images', 'acf'), + + // validation + 'Validation successful' => __('Validation successful', 'acf'), + 'Validation failed' => __('Validation failed', 'acf'), + '1 field requires attention' => __('1 field requires attention', 'acf'), + '%d fields require attention' => __('%d fields require attention', 'acf'), + + // tooltip + 'Are you sure?' => __('Are you sure?','acf'), + 'Yes' => __('Yes','acf'), + 'No' => __('No','acf'), + 'Remove' => __('Remove','acf'), + 'Cancel' => __('Cancel','acf'), + + // conditions + 'Has any value' => __('Has any value', 'acf'), + 'Has no value' => __('Has no value', 'acf'), + 'Value is equal to' => __('Value is equal to', 'acf'), + 'Value is not equal to' => __('Value is not equal to', 'acf'), + 'Value matches pattern' => __('Value matches pattern', 'acf'), + 'Value contains' => __('Value contains', 'acf'), + 'Value is greater than' => __('Value is greater than', 'acf'), + 'Value is less than' => __('Value is less than', 'acf'), + 'Selection is greater than' => __('Selection is greater than', 'acf'), + 'Selection is less than' => __('Selection is less than', 'acf'), + + // misc + 'Edit field group' => __('Edit field group', 'acf'), + )); + } + + + /** + * admin_enqueue_scripts + * + * description + * + * @date 16/4/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function admin_enqueue_scripts() { + + // enqueue + wp_enqueue_script('acf-input'); + wp_enqueue_style('acf-input'); + + // vars + $text = array(); + + // actions + do_action('acf/enqueue_scripts'); + do_action('acf/admin_enqueue_scripts'); + do_action('acf/input/admin_enqueue_scripts'); + + // only include translated strings + foreach( $this->text as $k => $v ) { + if( str_replace('.verb', '', $k) !== $v ) { + $text[ $k ] = $v; + } + } + + // localize text + if( $text ) { + wp_localize_script( 'acf-input', 'acfL10n', $text ); + } + } + + + /** + * admin_print_scripts + * + * description + * + * @date 18/4/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function admin_print_scripts() { + do_action('acf/admin_print_scripts'); + } + + + /** + * admin_head + * + * description + * + * @date 16/4/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function admin_head() { + + // actions + do_action('acf/admin_head'); + do_action('acf/input/admin_head'); + } + + + /** + * admin_footer + * + * description + * + * @date 16/4/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function admin_footer() { + + // global + global $wp_version; + + // get data + $data = wp_parse_args($this->data, array( + 'screen' => acf_get_form_data('screen'), + 'post_id' => acf_get_form_data('post_id'), + 'nonce' => wp_create_nonce( 'acf_nonce' ), + 'admin_url' => admin_url(), + 'ajaxurl' => admin_url( 'admin-ajax.php' ), + 'validation' => acf_get_form_data('validation'), + 'wp_version' => $wp_version, + 'acf_version' => acf_get_setting('version'), + 'browser' => acf_get_browser(), + 'locale' => acf_get_locale(), + 'rtl' => is_rtl(), + 'editor' => acf_is_block_editor() ? 'block' : 'classic' + )); + + // get l10n (old) + $l10n = apply_filters( 'acf/input/admin_l10n', array() ); + + // todo: force 'acf-input' script enqueue if not yet included + // - fixes potential timing issue if acf_enqueue_assest() was called during body + + // localize data + ?> + + + + +
                          + +
                          + add_text( $text ); +} + + +/** +* acf_localize_data +* +* description +* +* @date 13/4/18 +* @since 5.6.9 +* +* @param type $var Description. Default. +* @return type Description. +*/ + +function acf_localize_data( $data ) { + return acf_get_instance('ACF_Assets')->add_data( $data ); +} + + +/* +* acf_enqueue_scripts +* +* +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_enqueue_scripts( $args = array() ) { + return acf_get_instance('ACF_Assets')->enqueue_scripts( $args ); +} + + +/* +* acf_enqueue_uploader +* +* This function will render a WP WYSIWYG and enqueue media +* +* @type function +* @date 27/10/2014 +* @since 5.0.9 +* +* @param n/a +* @return n/a +*/ + +function acf_enqueue_uploader() { + return acf_get_instance('ACF_Assets')->enqueue_uploader(); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/class-acf-data.php b/wp-content/plugins/advanced-custom-fields/includes/class-acf-data.php new file mode 100644 index 0000000..455410b --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/class-acf-data.php @@ -0,0 +1,354 @@ +cid = acf_uniqid(); + + // Set data. + if( $data ) { + $this->set( $data ); + } + + // Initialize. + $this->initialize(); + } + + /** + * initialize + * + * Called during constructor to setup class functionality. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param void + * @return void + */ + function initialize() { + // Do nothing. + } + + /** + * prop + * + * Sets a property for the given name and returns $this for chaining. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param (string|array) $name The data name or an array of data. + * @param mixed $value The data value. + * @return ACF_Data + */ + function prop( $name = '', $value = null ) { + + // Update property. + $this->{$name} = $value; + + // Return this for chaining. + return $this; + } + + /** + * _key + * + * Returns a key for the given name allowing aliasses to work. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param type $var Description. Default. + * @return type Description. + */ + function _key( $name = '' ) { + return isset($this->aliases[ $name ]) ? $this->aliases[ $name ] : $name; + } + + /** + * has + * + * Returns true if this has data for the given name. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param string $name The data name. + * @return boolean + */ + function has( $name = '' ) { + $key = $this->_key($name); + return isset($this->data[ $key ]); + } + + /** + * is + * + * Similar to has() but does not check aliases. + * + * @date 7/2/19 + * @since 5.7.11 + * + * @param type $var Description. Default. + * @return type Description. + */ + function is( $key = '' ) { + return isset($this->data[ $key ]); + } + + /** + * get + * + * Returns data for the given name of null if doesn't exist. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param string $name The data name. + * @return mixed + */ + function get( $name = false ) { + + // Get all. + if( $name === false ) { + return $this->data; + + // Get specific. + } else { + $key = $this->_key($name); + return isset($this->data[ $key ]) ? $this->data[ $key ] : null; + } + } + + /** + * get_data + * + * Returns an array of all data. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param void + * @return array + */ + function get_data() { + return $this->data; + } + + /** + * set + * + * Sets data for the given name and returns $this for chaining. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param (string|array) $name The data name or an array of data. + * @param mixed $value The data value. + * @return ACF_Data + */ + function set( $name = '', $value = null ) { + + // Set multiple. + if( is_array($name) ) { + $this->data = array_merge($this->data, $name); + + // Set single. + } else { + $this->data[ $name ] = $value; + } + + // Return this for chaining. + return $this; + } + + /** + * append + * + * Appends data for the given name and returns $this for chaining. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param mixed $value The data value. + * @return ACF_Data + */ + function append( $value = null ) { + + // Append. + $this->data[] = $value; + + // Return this for chaining. + return $this; + } + + /** + * remove + * + * Removes data for the given name. + * + * @date 9/1/19 + * @since 5.7.10 + * + * @param string $name The data name. + * @return ACF_Data + */ + function remove( $name = '' ) { + + // Remove data. + unset( $this->data[ $name ] ); + + // Return this for chaining. + return $this; + } + + /** + * reset + * + * Resets the data. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param void + * @return void + */ + function reset() { + $this->data = array(); + $this->aliases = array(); + } + + /** + * count + * + * Returns the data count. + * + * @date 23/1/19 + * @since 5.7.10 + * + * @param void + * @return int + */ + function count() { + return count( $this->data ); + } + + /** + * query + * + * Returns a filtered array of data based on the set of key => value arguments. + * + * @date 23/1/19 + * @since 5.7.10 + * + * @param void + * @return int + */ + function query( $args, $operator = 'AND' ) { + return wp_list_filter( $this->data, $args, $operator ); + } + + /** + * alias + * + * Sets an alias for the given name allowing data to be found via multiple identifiers. + * + * @date 18/1/19 + * @since 5.7.10 + * + * @param type $var Description. Default. + * @return type Description. + */ + function alias( $name = '' /*, $alias, $alias2, etc */ ) { + + // Get all aliases. + $args = func_get_args(); + array_shift( $args ); + + // Loop over aliases and add to data. + foreach( $args as $alias ) { + $this->aliases[ $alias ] = $name; + } + + // Return this for chaining. + return $this; + } + + /** + * switch_site + * + * Triggered when switching between sites on a multisite installation. + * + * @date 13/2/19 + * @since 5.7.11 + * + * @param int $site_id New blog ID. + * @param int prev_blog_id Prev blog ID. + * @return void + */ + function switch_site( $site_id, $prev_site_id ) { + + // Bail early if not multisite compatible. + if( !$this->multisite ) { + return; + } + + // Bail early if no change in blog ID. + if( $site_id === $prev_site_id ) { + return; + } + + // Create storage. + if( !isset($this->site_data) ) { + $this->site_data = array(); + $this->site_aliases = array(); + } + + // Save state. + $this->site_data[ $prev_site_id ] = $this->data; + $this->site_aliases[ $prev_site_id ] = $this->aliases; + + // Reset state. + $this->data = array(); + $this->aliases = array(); + + // Load state. + if( isset($this->site_data[ $site_id ]) ) { + $this->data = $this->site_data[ $site_id ]; + $this->aliases = $this->site_aliases[ $site_id ]; + unset( $this->site_data[ $site_id ] ); + unset( $this->site_aliases[ $site_id ] ); + } + } +} + +endif; // class_exists check diff --git a/wp-content/plugins/advanced-custom-fields/includes/compatibility.php b/wp-content/plugins/advanced-custom-fields/includes/compatibility.php new file mode 100644 index 0000000..8078133 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/compatibility.php @@ -0,0 +1,484 @@ + 'post_taxonomy', + 'ef_media' => 'attachment', + 'ef_taxonomy' => 'taxonomy', + 'ef_user' => 'user_role', + 'user_type' => 'current_user_role' // 5.2.0 + ); + + // only replace 'taxonomy' rule if is an ACF4 field group + if( $version > 4 ) { + unset($replace['taxonomy']); + } + + // loop over location groups + if( $field_group['location'] ) { + foreach( $field_group['location'] as $i => $group ) { + + // loop over group rules + if( $group ) { + foreach( $group as $j => $rule ) { + + // migrate param + if( isset($replace[ $rule['param'] ]) ) { + $field_group['location'][ $i ][ $j ]['param'] = $replace[ $rule['param'] ]; + } + }} + }} + + // change layout to style (v5.0.0) + if( isset($field_group['layout']) ) { + $field_group['style'] = acf_extract_var($field_group, 'layout'); + } + + // change no_box to seamless (v5.0.0) + if( $field_group['style'] === 'no_box' ) { + $field_group['style'] = 'seamless'; + } + + //return + return $field_group; + } + + /** + * validate_post_taxonomy_location_rule + * + * description + * + * @date 27/8/18 + * @since 5.7.4 + * + * @param type $var Description. Default. + * @return type Description. + */ + function validate_post_taxonomy_location_rule( $rule ) { + + // previous versions of ACF (v4.4.12) saved value as term_id + // convert term_id into "taxonomy:slug" string + if( is_numeric($rule['value']) ) { + $term = acf_get_term( $rule['value'] ); + if( $term ) { + $rule['value'] = acf_encode_term($term); + } + } + + // return + return $rule; + } + +} + +acf_new_instance('ACF_Compatibility'); + +endif; // class_exists check + +/* + * acf_get_compatibility + * + * Returns true if compatibility is enabled for the given component. + * + * @date 20/1/15 + * @since 5.1.5 + * + * @param string $name The name of the component to check. + * @return bool + */ +function acf_get_compatibility( $name ) { + return apply_filters( "acf/compatibility/{$name}", false ); +} \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/deprecated.php b/wp-content/plugins/advanced-custom-fields/includes/deprecated.php new file mode 100644 index 0000000..8137580 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/deprecated.php @@ -0,0 +1,149 @@ + $parent_id, 'key' => "group_$parent_id" )); +} + +/** + * acf_update_option + * + * A wrapper for the WP update_option but provides logic for a 'no' autoload + * + * @date 4/01/2014 + * @since 5.0.0 + * @deprecated 5.7.11 + * + * @param string $option The option name. + * @param string $value The option value. + * @param string $autoload An optional autoload value. + * @return bool + */ +function acf_update_option( $option = '', $value = '', $autoload = null ) { + + // Warning. + _deprecated_function( __FUNCTION__, '5.7.11', 'update_option()' ); + + // Update. + if( $autoload === null ) { + $autoload = (bool) acf_get_setting('autoload'); + } + return update_option( $option, $value, $autoload ); +} + +/** + * acf_get_field_reference + * + * Finds the field key for a given field name and post_id. + * + * @date 26/1/18 + * @since 5.6.5 + * @deprecated 5.6.8 + * + * @param string $field_name The name of the field. eg 'sub_heading' + * @param mixed $post_id The post_id of which the value is saved against + * @return string $reference The field key + */ +function acf_get_field_reference( $field_name, $post_id ) { + + // Warning. + _deprecated_function( __FUNCTION__, '5.6.8', 'acf_get_reference()' ); + + // Return reference. + return acf_get_reference( $field_name, $post_id ); +} + +/** + * acf_get_dir + * + * Returns the plugin url to a specified file. + * + * @date 28/09/13 + * @since 5.0.0 + * @deprecated 5.6.8 + * + * @param string $filename The specified file. + * @return string + */ +function acf_get_dir( $filename = '' ) { + + // Warning. + _deprecated_function( __FUNCTION__, '5.6.8', 'acf_get_url()' ); + + // Return. + return acf_get_url( $filename ); +} diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields.php b/wp-content/plugins/advanced-custom-fields/includes/fields.php new file mode 100755 index 0000000..2aa9424 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields.php @@ -0,0 +1,378 @@ +types[ $class->name ] = $class; + + // allow class name + } else { + $instance = new $class(); + $this->types[ $instance->name ] = $instance; + } + } + + + /* + * get_field_type + * + * This function will return a field type instance + * + * @type function + * @date 6/07/2016 + * @since 5.4.0 + * + * @param $name (string) + * @return (mixed) + */ + + function get_field_type( $name ) { + return isset( $this->types[$name] ) ? $this->types[$name] : null; + } + + + /* + * is_field_type + * + * This function will return true if a field type exists + * + * @type function + * @date 6/07/2016 + * @since 5.4.0 + * + * @param $name (string) + * @return (mixed) + */ + + function is_field_type( $name ) { + return isset( $this->types[$name] ); + } + + + /* + * register_field_type_info + * + * This function will store a basic array of info about the field type + * to later be overriden by the above register_field_type function + * + * @type function + * @date 29/5/17 + * @since 5.6.0 + * + * @param $info (array) + * @return n/a + */ + + function register_field_type_info( $info ) { + + // convert to object + $instance = (object) $info; + $this->types[ $instance->name ] = $instance; + } + + + /* + * get_field_types + * + * This function will return an array of all field types + * + * @type function + * @date 6/07/2016 + * @since 5.4.0 + * + * @param $name (string) + * @return (mixed) + */ + + function get_field_types() { + return $this->types; + } +} + + +// initialize +acf()->fields = new acf_fields(); + +endif; // class_exists check + + +/* +* acf_register_field_type +* +* alias of acf()->fields->register_field_type() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_register_field_type( $class ) { + return acf()->fields->register_field_type( $class ); +} + + +/* +* acf_register_field_type_info +* +* alias of acf()->fields->register_field_type_info() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_register_field_type_info( $info ) { + return acf()->fields->register_field_type_info( $info ); +} + + +/* +* acf_get_field_type +* +* alias of acf()->fields->get_field_type() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_field_type( $name ) { + return acf()->fields->get_field_type( $name ); +} + + +/* +* acf_get_field_types +* +* alias of acf()->fields->get_field_types() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_field_types( $args = array() ) { + + // default + $args = wp_parse_args($args, array( + 'public' => true, // true, false + )); + + // get field types + $field_types = acf()->fields->get_field_types(); + + // filter + return wp_filter_object_list( $field_types, $args ); +} + + +/** +* acf_get_field_types_info +* +* Returns an array containing information about each field type +* +* @date 18/6/18 +* @since 5.6.9 +* +* @param type $var Description. Default. +* @return type Description. +*/ + +function acf_get_field_types_info( $args = array() ) { + + // vars + $data = array(); + $field_types = acf_get_field_types(); + + // loop + foreach( $field_types as $type ) { + $data[ $type->name ] = array( + 'label' => $type->label, + 'name' => $type->name, + 'category' => $type->category, + 'public' => $type->public + ); + } + + // return + return $data; +} + + +/* +* acf_is_field_type +* +* alias of acf()->fields->is_field_type() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_is_field_type( $name = '' ) { + return acf()->fields->is_field_type( $name ); +} + + +/* +* acf_get_field_type_prop +* +* This function will return a field type's property +* +* @type function +* @date 1/10/13 +* @since 5.0.0 +* +* @param n/a +* @return (array) +*/ + +function acf_get_field_type_prop( $name = '', $prop = '' ) { + $type = acf_get_field_type( $name ); + return ($type && isset($type->$prop)) ? $type->$prop : null; +} + + +/* +* acf_get_field_type_label +* +* This function will return the label of a field type +* +* @type function +* @date 1/10/13 +* @since 5.0.0 +* +* @param n/a +* @return (array) +*/ + +function acf_get_field_type_label( $name = '' ) { + $label = acf_get_field_type_prop( $name, 'label' ); + return $label ? $label : ''.__('Unknown', 'acf').''; +} + + +/* +* acf_field_type_exists (deprecated) +* +* deprecated in favour of acf_is_field_type() +* +* @type function +* @date 1/10/13 +* @since 5.0.0 +* +* @param $type (string) +* @return (boolean) +*/ + +function acf_field_type_exists( $type = '' ) { + return acf_is_field_type( $type ); +} + + +/* +* acf_get_grouped_field_types +* +* Returns an multi-dimentional array of field types "name => label" grouped by category +* +* @type function +* @date 1/10/13 +* @since 5.0.0 +* +* @param n/a +* @return (array) +*/ + +function acf_get_grouped_field_types() { + + // vars + $types = acf_get_field_types(); + $groups = array(); + $l10n = array( + 'basic' => __('Basic', 'acf'), + 'content' => __('Content', 'acf'), + 'choice' => __('Choice', 'acf'), + 'relational' => __('Relational', 'acf'), + 'jquery' => __('jQuery', 'acf'), + 'layout' => __('Layout', 'acf'), + ); + + + // loop + foreach( $types as $type ) { + + // translate + $cat = $type->category; + $cat = isset( $l10n[$cat] ) ? $l10n[$cat] : $cat; + + // append + $groups[ $cat ][ $type->name ] = $type->label; + } + + + // filter + $groups = apply_filters('acf/get_field_types', $groups); + + + // return + return $groups; +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-accordion.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-accordion.php new file mode 100644 index 0000000..e149e04 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-accordion.php @@ -0,0 +1,167 @@ +name = 'accordion'; + $this->label = __("Accordion",'acf'); + $this->category = 'layout'; + $this->defaults = array( + 'open' => 0, + 'multi_expand' => 0, + 'endpoint' => 0 + ); + + } + + + /** + * render_field + * + * Create the HTML interface for your field + * + * @date 30/10/17 + * @since 5.6.3 + * + * @param array $field + * @return n/a + */ + + function render_field( $field ) { + + // vars + $atts = array( + 'class' => 'acf-fields', + 'data-open' => $field['open'], + 'data-multi_expand' => $field['multi_expand'], + 'data-endpoint' => $field['endpoint'] + ); + + ?> +
                          >
                          + ' . __( 'Accordions help you organize fields into panels that open and close.', 'acf') . '

                          '; + $message .= '

                          ' . __( 'All fields following this accordion (or until another accordion is defined) will be grouped together.','acf') . '

                          '; + + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Instructions','acf'), + 'instructions' => '', + 'name' => 'notes', + 'type' => 'message', + 'message' => $message, + )); +*/ + + // active + acf_render_field_setting( $field, array( + 'label' => __('Open','acf'), + 'instructions' => __('Display this accordion as open on page load.','acf'), + 'name' => 'open', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // multi_expand + acf_render_field_setting( $field, array( + 'label' => __('Multi-expand','acf'), + 'instructions' => __('Allow this accordion to open without closing others.','acf'), + 'name' => 'multi_expand', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // endpoint + acf_render_field_setting( $field, array( + 'label' => __('Endpoint','acf'), + 'instructions' => __('Define an endpoint for the previous accordion to stop. This accordion will not be visible.','acf'), + 'name' => 'endpoint', + 'type' => 'true_false', + 'ui' => 1, + )); + + } + + + /* + * load_field() + * + * This filter is appied to the $field after it is loaded from the database + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $field - the field array holding all the field options + * + * @return $field - the field array holding all the field options + */ + + function load_field( $field ) { + + // remove name to avoid caching issue + $field['name'] = ''; + + // remove required to avoid JS issues + $field['required'] = 0; + + // set value other than 'null' to avoid ACF loading / caching issue + $field['value'] = false; + + // return + return $field; + + } + +} + + +// initialize +acf_register_field_type( 'acf_field__accordion' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-button-group.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-button-group.php new file mode 100644 index 0000000..db1dd95 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-button-group.php @@ -0,0 +1,292 @@ +name = 'button_group'; + $this->label = __("Button Group",'acf'); + $this->category = 'choice'; + $this->defaults = array( + 'choices' => array(), + 'default_value' => '', + 'allow_null' => 0, + 'return_format' => 'value', + 'layout' => 'horizontal', + ); + + } + + + /** + * render_field() + * + * Creates the field's input HTML + * + * @date 18/9/17 + * @since 5.6.3 + * + * @param array $field The field settings array + * @return n/a + */ + + function render_field( $field ) { + + // vars + $html = ''; + $selected = null; + $buttons = array(); + $value = esc_attr( $field['value'] ); + + + // bail ealrly if no choices + if( empty($field['choices']) ) return; + + + // buttons + foreach( $field['choices'] as $_value => $_label ) { + + // checked + $checked = ( $value === esc_attr($_value) ); + if( $checked ) $selected = true; + + + // append + $buttons[] = array( + 'name' => $field['name'], + 'value' => $_value, + 'label' => $_label, + 'checked' => $checked + ); + + } + + + // maybe select initial value + if( !$field['allow_null'] && $selected === null ) { + $buttons[0]['checked'] = true; + } + + + // div + $div = array( 'class' => 'acf-button-group' ); + + if( $field['layout'] == 'vertical' ) { $div['class'] .= ' -vertical'; } + if( $field['class'] ) { $div['class'] .= ' ' . $field['class']; } + if( $field['allow_null'] ) { $div['data-allow_null'] = 1; } + + + // hdden input + $html .= acf_get_hidden_input( array('name' => $field['name']) ); + + + // open + $html .= '
                          '; + + // loop + foreach( $buttons as $button ) { + + // checked + if( $button['checked'] ) { + $button['checked'] = 'checked'; + } else { + unset($button['checked']); + } + + + // append + $html .= acf_get_radio_input( $button ); + + } + + + // close + $html .= '
                          '; + + + // return + echo $html; + + } + + + /** + * render_field_settings() + * + * Creates the field's settings HTML + * + * @date 18/9/17 + * @since 5.6.3 + * + * @param array $field The field settings array + * @return n/a + */ + + function render_field_settings( $field ) { + + // encode choices (convert from array) + $field['choices'] = acf_encode_choices($field['choices']); + + + // choices + acf_render_field_setting( $field, array( + 'label' => __('Choices','acf'), + 'instructions' => __('Enter each choice on a new line.','acf') . '

                          ' . __('For more control, you may specify both a value and label like this:','acf'). '

                          ' . __('red : Red','acf'), + 'type' => 'textarea', + 'name' => 'choices', + )); + + + // allow_null + acf_render_field_setting( $field, array( + 'label' => __('Allow Null?','acf'), + 'instructions' => '', + 'name' => 'allow_null', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Default Value','acf'), + 'instructions' => __('Appears when creating a new post','acf'), + 'type' => 'text', + 'name' => 'default_value', + )); + + + // layout + acf_render_field_setting( $field, array( + 'label' => __('Layout','acf'), + 'instructions' => '', + 'type' => 'radio', + 'name' => 'layout', + 'layout' => 'horizontal', + 'choices' => array( + 'horizontal' => __("Horizontal",'acf'), + 'vertical' => __("Vertical",'acf'), + ) + )); + + + // return_format + acf_render_field_setting( $field, array( + 'label' => __('Return Value','acf'), + 'instructions' => __('Specify the returned value on front end','acf'), + 'type' => 'radio', + 'name' => 'return_format', + 'layout' => 'horizontal', + 'choices' => array( + 'value' => __('Value','acf'), + 'label' => __('Label','acf'), + 'array' => __('Both (Array)','acf') + ) + )); + + } + + + /* + * update_field() + * + * This filter is appied to the $field before it is saved to the database + * + * @date 18/9/17 + * @since 5.6.3 + * + * @param array $field The field array holding all the field options + * @return $field + */ + + function update_field( $field ) { + + return acf_get_field_type('radio')->update_field( $field ); + } + + + /* + * load_value() + * + * This filter is appied to the $value after it is loaded from the db + * + * @date 18/9/17 + * @since 5.6.3 + * + * @param mixed $value The value found in the database + * @param mixed $post_id The post ID from which the value was loaded from + * @param array $field The field array holding all the field options + * @return $value + */ + + function load_value( $value, $post_id, $field ) { + + return acf_get_field_type('radio')->load_value( $value, $post_id, $field ); + + } + + + /* + * translate_field + * + * This function will translate field settings + * + * @date 18/9/17 + * @since 5.6.3 + * + * @param array $field The field array holding all the field options + * @return $field + */ + + function translate_field( $field ) { + + return acf_get_field_type('radio')->translate_field( $field ); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @date 18/9/17 + * @since 5.6.3 + * + * @param mixed $value The value found in the database + * @param mixed $post_id The post ID from which the value was loaded from + * @param array $field The field array holding all the field options + * @return $value + */ + + function format_value( $value, $post_id, $field ) { + + return acf_get_field_type('radio')->format_value( $value, $post_id, $field ); + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_button_group' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-checkbox.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-checkbox.php new file mode 100644 index 0000000..e9dd7a2 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-checkbox.php @@ -0,0 +1,572 @@ +name = 'checkbox'; + $this->label = __("Checkbox",'acf'); + $this->category = 'choice'; + $this->defaults = array( + 'layout' => 'vertical', + 'choices' => array(), + 'default_value' => '', + 'allow_custom' => 0, + 'save_custom' => 0, + 'toggle' => 0, + 'return_format' => 'value' + ); + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field (array) the $field being rendered + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field (array) the $field being edited + * @return n/a + */ + + function render_field( $field ) { + + // reset vars + $this->_values = array(); + $this->_all_checked = true; + + + // ensure array + $field['value'] = acf_get_array($field['value']); + $field['choices'] = acf_get_array($field['choices']); + + + // hiden input + acf_hidden_input( array('name' => $field['name']) ); + + + // vars + $li = ''; + $ul = array( + 'class' => 'acf-checkbox-list', + ); + + + // append to class + $ul['class'] .= ' ' . ($field['layout'] == 'horizontal' ? 'acf-hl' : 'acf-bl'); + $ul['class'] .= ' ' . $field['class']; + + + // checkbox saves an array + $field['name'] .= '[]'; + + + // choices + if( !empty($field['choices']) ) { + + // choices + $li .= $this->render_field_choices( $field ); + + + // toggle + if( $field['toggle'] ) { + $li = $this->render_field_toggle( $field ) . $li; + } + + } + + + // custom + if( $field['allow_custom'] ) { + $li .= $this->render_field_custom( $field ); + } + + + // return + echo '
                            ' . "\n" . $li . '
                          ' . "\n"; + + } + + + /* + * render_field_choices + * + * description + * + * @type function + * @date 15/7/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function render_field_choices( $field ) { + + // walk + return $this->walk( $field['choices'], $field ); + + } + + + /* + * render_field_toggle + * + * description + * + * @type function + * @date 15/7/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function render_field_toggle( $field ) { + + // vars + $atts = array( + 'type' => 'checkbox', + 'class' => 'acf-checkbox-toggle', + 'label' => __("Toggle All", 'acf') + ); + + + // custom label + if( is_string($field['toggle']) ) { + $atts['label'] = $field['toggle']; + } + + + // checked + if( $this->_all_checked ) { + $atts['checked'] = 'checked'; + } + + + // return + return '
                        1. ' . acf_get_checkbox_input($atts) . '
                        2. ' . "\n"; + + } + + + /* + * render_field_custom + * + * description + * + * @type function + * @date 15/7/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function render_field_custom( $field ) { + + // vars + $html = ''; + + + // loop + foreach( $field['value'] as $value ) { + + // ignore if already eixsts + if( isset($field['choices'][ $value ]) ) continue; + + + // vars + $esc_value = esc_attr($value); + $text_input = array( + 'name' => $field['name'], + 'value' => $value, + ); + + + // bail ealry if choice already exists + if( in_array( $esc_value, $this->_values ) ) continue; + + + // append + $html .= '
                        3. ' . acf_get_text_input($text_input) . '
                        4. ' . "\n"; + + } + + + // append button + $html .= '
                        5. ' . esc_attr__('Add new choice', 'acf') . '
                        6. ' . "\n"; + + + // return + return $html; + + } + + + function walk( $choices = array(), $args = array(), $depth = 0 ) { + + // bail ealry if no choices + if( empty($choices) ) return ''; + + + // defaults + $args = wp_parse_args($args, array( + 'id' => '', + 'type' => 'checkbox', + 'name' => '', + 'value' => array(), + 'disabled' => array(), + )); + + + // vars + $html = ''; + + + // sanitize values for 'selected' matching + if( $depth == 0 ) { + $args['value'] = array_map('esc_attr', $args['value']); + $args['disabled'] = array_map('esc_attr', $args['disabled']); + } + + + // loop + foreach( $choices as $value => $label ) { + + // open + $html .= '
                        7. '; + + + // optgroup + if( is_array($label) ){ + + $html .= '
                            ' . "\n"; + $html .= $this->walk( $label, $args, $depth+1 ); + $html .= '
                          '; + + // option + } else { + + // vars + $esc_value = esc_attr($value); + $atts = array( + 'id' => $args['id'] . '-' . str_replace(' ', '-', $value), + 'type' => $args['type'], + 'name' => $args['name'], + 'value' => $value, + 'label' => $label, + ); + + + // selected + if( in_array( $esc_value, $args['value'] ) ) { + $atts['checked'] = 'checked'; + } else { + $this->_all_checked = false; + } + + + // disabled + if( in_array( $esc_value, $args['disabled'] ) ) { + $atts['disabled'] = 'disabled'; + } + + + // store value added + $this->_values[] = $esc_value; + + + // append + $html .= acf_get_checkbox_input($atts); + + } + + + // close + $html .= '
                        8. ' . "\n"; + + } + + + // return + return $html; + + } + + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field_settings( $field ) { + + // encode choices (convert from array) + $field['choices'] = acf_encode_choices($field['choices']); + $field['default_value'] = acf_encode_choices($field['default_value'], false); + + + // choices + acf_render_field_setting( $field, array( + 'label' => __('Choices','acf'), + 'instructions' => __('Enter each choice on a new line.','acf') . '

                          ' . __('For more control, you may specify both a value and label like this:','acf'). '

                          ' . __('red : Red','acf'), + 'type' => 'textarea', + 'name' => 'choices', + )); + + + // other_choice + acf_render_field_setting( $field, array( + 'label' => __('Allow Custom','acf'), + 'instructions' => '', + 'name' => 'allow_custom', + 'type' => 'true_false', + 'ui' => 1, + 'message' => __("Allow 'custom' values to be added", 'acf'), + )); + + + // save_other_choice + acf_render_field_setting( $field, array( + 'label' => __('Save Custom','acf'), + 'instructions' => '', + 'name' => 'save_custom', + 'type' => 'true_false', + 'ui' => 1, + 'message' => __("Save 'custom' values to the field's choices", 'acf'), + 'conditions' => array( + 'field' => 'allow_custom', + 'operator' => '==', + 'value' => 1 + ) + )); + + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Default Value','acf'), + 'instructions' => __('Enter each default value on a new line','acf'), + 'type' => 'textarea', + 'name' => 'default_value', + )); + + + // layout + acf_render_field_setting( $field, array( + 'label' => __('Layout','acf'), + 'instructions' => '', + 'type' => 'radio', + 'name' => 'layout', + 'layout' => 'horizontal', + 'choices' => array( + 'vertical' => __("Vertical",'acf'), + 'horizontal' => __("Horizontal",'acf') + ) + )); + + + // layout + acf_render_field_setting( $field, array( + 'label' => __('Toggle','acf'), + 'instructions' => __('Prepend an extra checkbox to toggle all choices','acf'), + 'name' => 'toggle', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // return_format + acf_render_field_setting( $field, array( + 'label' => __('Return Value','acf'), + 'instructions' => __('Specify the returned value on front end','acf'), + 'type' => 'radio', + 'name' => 'return_format', + 'layout' => 'horizontal', + 'choices' => array( + 'value' => __('Value','acf'), + 'label' => __('Label','acf'), + 'array' => __('Both (Array)','acf') + ) + )); + + } + + + /* + * update_field() + * + * This filter is appied to the $field before it is saved to the database + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $field - the field array holding all the field options + * @param $post_id - the field group ID (post_type = acf) + * + * @return $field - the modified field + */ + + function update_field( $field ) { + + return acf_get_field_type('select')->update_field( $field ); + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $post_id - the $post_id of which the value will be saved + * @param $field - the field array holding all the field options + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // bail early if is empty + if( empty($value) ) return $value; + + + // select -> update_value() + $value = acf_get_field_type('select')->update_value( $value, $post_id, $field ); + + + // save_other_choice + if( $field['save_custom'] ) { + + // get raw $field (may have been changed via repeater field) + // if field is local, it won't have an ID + $selector = $field['ID'] ? $field['ID'] : $field['key']; + $field = acf_get_field( $selector, true ); + + + // bail early if no ID (JSON only) + if( !$field['ID'] ) return $value; + + + // loop + foreach( $value as $v ) { + + // ignore if already eixsts + if( isset($field['choices'][ $v ]) ) continue; + + + // unslash (fixes serialize single quote issue) + $v = wp_unslash($v); + + + // sanitize (remove tags) + $v = sanitize_text_field($v); + + + // append + $field['choices'][ $v ] = $v; + + } + + + // save + acf_update_field( $field ); + + } + + + // return + return $value; + + } + + + /* + * translate_field + * + * This function will translate field settings + * + * @type function + * @date 8/03/2016 + * @since 5.3.2 + * + * @param $field (array) + * @return $field + */ + + function translate_field( $field ) { + + return acf_get_field_type('select')->translate_field( $field ); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + return acf_get_field_type('select')->format_value( $value, $post_id, $field ); + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_checkbox' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-color_picker.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-color_picker.php new file mode 100644 index 0000000..6b6657f --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-color_picker.php @@ -0,0 +1,148 @@ +name = 'color_picker'; + $this->label = __("Color Picker",'acf'); + $this->category = 'jquery'; + $this->defaults = array( + 'default_value' => '', + ); + + } + + + /* + * input_admin_enqueue_scripts + * + * description + * + * @type function + * @date 16/12/2015 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function input_admin_enqueue_scripts() { + + // globals + global $wp_scripts; + + + // register if not already (on front end) + // http://wordpress.stackexchange.com/questions/82718/how-do-i-implement-the-wordpress-iris-picker-into-my-plugin-on-the-front-end + if( !isset($wp_scripts->registered['iris']) ) { + + // styles + wp_register_style('wp-color-picker', admin_url('css/color-picker.css'), array(), '', true); + + + // scripts + wp_register_script('iris', admin_url('js/iris.min.js'), array('jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch'), '1.0.7', true); + wp_register_script('wp-color-picker', admin_url('js/color-picker.min.js'), array('iris'), '', true); + + + // localize + wp_localize_script('wp-color-picker', 'wpColorPickerL10n', array( + 'clear' => __('Clear', 'acf' ), + 'defaultString' => __('Default', 'acf' ), + 'pick' => __('Select Color', 'acf' ), + 'current' => __('Current Color', 'acf' ) + )); + + } + + + // enqueue + wp_enqueue_style('wp-color-picker'); + wp_enqueue_script('wp-color-picker'); + + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // vars + $text_input = acf_get_sub_array( $field, array('id', 'class', 'name', 'value') ); + $hidden_input = acf_get_sub_array( $field, array('name', 'value') ); + + + // html + ?> +
                          + + +
                          + __('Default Value','acf'), + 'instructions' => '', + 'type' => 'text', + 'name' => 'default_value', + 'placeholder' => '#FFFFFF' + )); + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_color_picker' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-date_picker.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-date_picker.php new file mode 100644 index 0000000..7f2e43c --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-date_picker.php @@ -0,0 +1,276 @@ +name = 'date_picker'; + $this->label = __("Date Picker",'acf'); + $this->category = 'jquery'; + $this->defaults = array( + 'display_format' => 'd/m/Y', + 'return_format' => 'd/m/Y', + 'first_day' => 1 + ); + } + + + /* + * input_admin_enqueue_scripts + * + * description + * + * @type function + * @date 16/12/2015 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function input_admin_enqueue_scripts() { + + // bail ealry if no enqueue + if( !acf_get_setting('enqueue_datepicker') ) { + return; + } + + // localize + global $wp_locale; + acf_localize_data(array( + 'datePickerL10n' => array( + 'closeText' => _x('Done', 'Date Picker JS closeText', 'acf'), + 'currentText' => _x('Today', 'Date Picker JS currentText', 'acf'), + 'nextText' => _x('Next', 'Date Picker JS nextText', 'acf'), + 'prevText' => _x('Prev', 'Date Picker JS prevText', 'acf'), + 'weekHeader' => _x('Wk', 'Date Picker JS weekHeader', 'acf'), + 'monthNames' => array_values( $wp_locale->month ), + 'monthNamesShort' => array_values( $wp_locale->month_abbrev ), + 'dayNames' => array_values( $wp_locale->weekday ), + 'dayNamesMin' => array_values( $wp_locale->weekday_initial ), + 'dayNamesShort' => array_values( $wp_locale->weekday_abbrev ) + ) + )); + + // script + wp_enqueue_script('jquery-ui-datepicker'); + + // style + wp_enqueue_style('acf-datepicker', acf_get_url('assets/inc/datepicker/jquery-ui.min.css'), array(), '1.11.4' ); + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // vars + $hidden_value = ''; + $display_value = ''; + + // format value + if( $field['value'] ) { + $hidden_value = acf_format_date( $field['value'], 'Ymd' ); + $display_value = acf_format_date( $field['value'], $field['display_format'] ); + } + + // elements + $div = array( + 'class' => 'acf-date-picker acf-input-wrap', + 'data-date_format' => acf_convert_date_to_js($field['display_format']), + 'data-first_day' => $field['first_day'], + ); + $hidden_input = array( + 'id' => $field['id'], + 'name' => $field['name'], + 'value' => $hidden_value, + ); + $text_input = array( + 'class' => 'input', + 'value' => $display_value, + ); + + // special attributes + foreach( array( 'readonly', 'disabled' ) as $k ) { + if( !empty($field[ $k ]) ) { + $text_input[ $k ] = $k; + } + } + + // save_format - compatibility with ACF < 5.0.0 + if( !empty($field['save_format']) ) { + + // add custom JS save format + $div['data-save_format'] = $field['save_format']; + + // revert hidden input value to raw DB value + $hidden_input['value'] = $field['value']; + + // remove formatted value (will do this via JS) + $text_input['value'] = ''; + } + + // html + ?> +
                          > + + +
                          + __('Display Format','acf'), + 'instructions' => __('The format displayed when editing a post','acf'), + 'type' => 'radio', + 'name' => 'display_format', + 'other_choice' => 1, + 'choices' => array( + 'd/m/Y' => '' . $d_m_Y . 'd/m/Y', + 'm/d/Y' => '' . $m_d_Y . 'm/d/Y', + 'F j, Y' => '' . $F_j_Y . 'F j, Y', + 'other' => '' . __('Custom:','acf') . '' + ) + )); + + + // save_format - compatibility with ACF < 5.0.0 + if( !empty($field['save_format']) ) { + + // save_format + acf_render_field_setting( $field, array( + 'label' => __('Save Format','acf'), + 'instructions' => __('The format used when saving a value','acf'), + 'type' => 'text', + 'name' => 'save_format', + //'readonly' => 1 // this setting was not readonly in v4 + )); + + } else { + + // return_format + acf_render_field_setting( $field, array( + 'label' => __('Return Format','acf'), + 'instructions' => __('The format returned via template functions','acf'), + 'type' => 'radio', + 'name' => 'return_format', + 'other_choice' => 1, + 'choices' => array( + 'd/m/Y' => '' . $d_m_Y . 'd/m/Y', + 'm/d/Y' => '' . $m_d_Y . 'm/d/Y', + 'F j, Y' => '' . $F_j_Y . 'F j, Y', + 'Ymd' => '' . $Ymd . 'Ymd', + 'other' => '' . __('Custom:','acf') . '' + ) + )); + + } + + + // first_day + acf_render_field_setting( $field, array( + 'label' => __('Week Starts On','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'first_day', + 'choices' => array_values( $wp_locale->weekday ) + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // save_format - compatibility with ACF < 5.0.0 + if( !empty($field['save_format']) ) { + + return $value; + + } + + + // return + return acf_format_date( $value, $field['return_format'] ); + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_date_picker' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-date_time_picker.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-date_time_picker.php new file mode 100644 index 0000000..06b4415 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-date_time_picker.php @@ -0,0 +1,257 @@ +name = 'date_time_picker'; + $this->label = __("Date Time Picker",'acf'); + $this->category = 'jquery'; + $this->defaults = array( + 'display_format' => 'd/m/Y g:i a', + 'return_format' => 'd/m/Y g:i a', + 'first_day' => 1 + ); + } + + + /* + * input_admin_enqueue_scripts + * + * description + * + * @type function + * @date 16/12/2015 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function input_admin_enqueue_scripts() { + + // bail ealry if no enqueue + if( !acf_get_setting('enqueue_datetimepicker') ) return; + + + // vars + $version = '1.6.1'; + + + // script + wp_enqueue_script('acf-timepicker', acf_get_url('assets/inc/timepicker/jquery-ui-timepicker-addon.min.js'), array('jquery-ui-datepicker'), $version); + + + // style + wp_enqueue_style('acf-timepicker', acf_get_url('assets/inc/timepicker/jquery-ui-timepicker-addon.min.css'), '', $version); + + // localize + acf_localize_data(array( + 'dateTimePickerL10n' => array( + 'timeOnlyTitle' => _x('Choose Time', 'Date Time Picker JS timeOnlyTitle', 'acf'), + 'timeText' => _x('Time', 'Date Time Picker JS timeText', 'acf'), + 'hourText' => _x('Hour', 'Date Time Picker JS hourText', 'acf'), + 'minuteText' => _x('Minute', 'Date Time Picker JS minuteText', 'acf'), + 'secondText' => _x('Second', 'Date Time Picker JS secondText', 'acf'), + 'millisecText' => _x('Millisecond', 'Date Time Picker JS millisecText', 'acf'), + 'microsecText' => _x('Microsecond', 'Date Time Picker JS microsecText', 'acf'), + 'timezoneText' => _x('Time Zone', 'Date Time Picker JS timezoneText', 'acf'), + 'currentText' => _x('Now', 'Date Time Picker JS currentText', 'acf'), + 'closeText' => _x('Done', 'Date Time Picker JS closeText', 'acf'), + 'selectText' => _x('Select', 'Date Time Picker JS selectText', 'acf'), + 'amNames' => array( + _x('AM', 'Date Time Picker JS amText', 'acf'), + _x('A', 'Date Time Picker JS amTextShort', 'acf'), + ), + 'pmNames' => array( + _x('PM', 'Date Time Picker JS pmText', 'acf'), + _x('P', 'Date Time Picker JS pmTextShort', 'acf'), + ) + ) + )); + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // format value + $hidden_value = ''; + $display_value = ''; + + if( $field['value'] ) { + + $hidden_value = acf_format_date( $field['value'], 'Y-m-d H:i:s' ); + $display_value = acf_format_date( $field['value'], $field['display_format'] ); + + } + + + // convert display_format to date and time + // the letter 'm' is used for date and minute in JS, so this must be done here in PHP + $formats = acf_split_date_time($field['display_format']); + + + // vars + $div = array( + 'class' => 'acf-date-time-picker acf-input-wrap', + 'data-date_format' => acf_convert_date_to_js($formats['date']), + 'data-time_format' => acf_convert_time_to_js($formats['time']), + 'data-first_day' => $field['first_day'], + ); + + $hidden_input = array( + 'id' => $field['id'], + 'class' => 'input-alt', + 'name' => $field['name'], + 'value' => $hidden_value, + ); + + $text_input = array( + 'class' => 'input', + 'value' => $display_value, + ); + + + // html + ?> +
                          > + + +
                          + __('Display Format','acf'), + 'instructions' => __('The format displayed when editing a post','acf'), + 'type' => 'radio', + 'name' => 'display_format', + 'other_choice' => 1, + 'choices' => array( + 'd/m/Y g:i a' => '' . $d_m_Y . 'd/m/Y g:i a', + 'm/d/Y g:i a' => '' . $m_d_Y . 'm/d/Y g:i a', + 'F j, Y g:i a' => '' . $F_j_Y . 'F j, Y g:i a', + 'Y-m-d H:i:s' => '' . $Ymd . 'Y-m-d H:i:s', + 'other' => '' . __('Custom:','acf') . '' + ) + )); + + + // return_format + acf_render_field_setting( $field, array( + 'label' => __('Return Format','acf'), + 'instructions' => __('The format returned via template functions','acf'), + 'type' => 'radio', + 'name' => 'return_format', + 'other_choice' => 1, + 'choices' => array( + 'd/m/Y g:i a' => '' . $d_m_Y . 'd/m/Y g:i a', + 'm/d/Y g:i a' => '' . $m_d_Y . 'm/d/Y g:i a', + 'F j, Y g:i a' => '' . $F_j_Y . 'F j, Y g:i a', + 'Y-m-d H:i:s' => '' . $Ymd . 'Y-m-d H:i:s', + 'other' => '' . __('Custom:','acf') . '' + ) + )); + + + // first_day + acf_render_field_setting( $field, array( + 'label' => __('Week Starts On','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'first_day', + 'choices' => array_values( $wp_locale->weekday ) + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + return acf_format_date( $value, $field['return_format'] ); + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_date_and_time_picker' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-email.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-email.php new file mode 100644 index 0000000..ee3c264 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-email.php @@ -0,0 +1,161 @@ +name = 'email'; + $this->label = __("Email",'acf'); + $this->defaults = array( + 'default_value' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '' + ); + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // vars + $atts = array(); + $keys = array( 'type', 'id', 'class', 'name', 'value', 'placeholder', 'pattern' ); + $keys2 = array( 'readonly', 'disabled', 'required', 'multiple' ); + $html = ''; + + + // prepend + if( $field['prepend'] !== '' ) { + + $field['class'] .= ' acf-is-prepended'; + $html .= '
                          ' . acf_esc_html($field['prepend']) . '
                          '; + + } + + + // append + if( $field['append'] !== '' ) { + + $field['class'] .= ' acf-is-appended'; + $html .= '
                          ' . acf_esc_html($field['append']) . '
                          '; + + } + + + // atts (value="123") + foreach( $keys as $k ) { + if( isset($field[ $k ]) ) $atts[ $k ] = $field[ $k ]; + } + + + // atts2 (disabled="disabled") + foreach( $keys2 as $k ) { + if( !empty($field[ $k ]) ) $atts[ $k ] = $k; + } + + + // remove empty atts + $atts = acf_clean_atts( $atts ); + + + // render + $html .= '
                          ' . acf_get_text_input( $atts ) . '
                          '; + + + // return + echo $html; + + } + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field_settings( $field ) { + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Default Value','acf'), + 'instructions' => __('Appears when creating a new post','acf'), + 'type' => 'text', + 'name' => 'default_value', + )); + + + // placeholder + acf_render_field_setting( $field, array( + 'label' => __('Placeholder Text','acf'), + 'instructions' => __('Appears within the input','acf'), + 'type' => 'text', + 'name' => 'placeholder', + )); + + + // prepend + acf_render_field_setting( $field, array( + 'label' => __('Prepend','acf'), + 'instructions' => __('Appears before the input','acf'), + 'type' => 'text', + 'name' => 'prepend', + )); + + + // append + acf_render_field_setting( $field, array( + 'label' => __('Append','acf'), + 'instructions' => __('Appears after the input','acf'), + 'type' => 'text', + 'name' => 'append', + )); + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_email' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-file.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-file.php new file mode 100644 index 0000000..7e081d2 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-file.php @@ -0,0 +1,438 @@ +name = 'file'; + $this->label = __("File",'acf'); + $this->category = 'content'; + $this->defaults = array( + 'return_format' => 'array', + 'library' => 'all', + 'min_size' => 0, + 'max_size' => 0, + 'mime_types' => '' + ); + + // filters + add_filter('get_media_item_args', array($this, 'get_media_item_args')); + } + + + /* + * input_admin_enqueue_scripts + * + * description + * + * @type function + * @date 16/12/2015 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function input_admin_enqueue_scripts() { + + // localize + acf_localize_text(array( + 'Select File' => __('Select File', 'acf'), + 'Edit File' => __('Edit File', 'acf'), + 'Update File' => __('Update File', 'acf'), + )); + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // vars + $uploader = acf_get_setting('uploader'); + + + // allow custom uploader + $uploader = acf_maybe_get($field, 'uploader', $uploader); + + + // enqueue + if( $uploader == 'wp' ) { + acf_enqueue_uploader(); + } + + + // vars + $o = array( + 'icon' => '', + 'title' => '', + 'url' => '', + 'filename' => '', + 'filesize' => '' + ); + + $div = array( + 'class' => 'acf-file-uploader', + 'data-library' => $field['library'], + 'data-mime_types' => $field['mime_types'], + 'data-uploader' => $uploader + ); + + + // has value? + if( $field['value'] ) { + + $attachment = acf_get_attachment($field['value']); + if( $attachment ) { + + // has value + $div['class'] .= ' has-value'; + + // update + $o['icon'] = $attachment['icon']; + $o['title'] = $attachment['title']; + $o['url'] = $attachment['url']; + $o['filename'] = $attachment['filename']; + if( $attachment['filesize'] ) { + $o['filesize'] = size_format($attachment['filesize']); + } + } + } + +?> +
                          > + $field['name'], 'value' => $field['value'], 'data-name' => 'id' )); ?> +
                          +
                          + +
                          +
                          +

                          + +

                          +

                          + : + +

                          +

                          + : + +

                          +
                          +
                          + +
                          +
                          +
                          + + + +

                          + + + + + + +

                          + + + +
                          +
                          + __('Return Value','acf'), + 'instructions' => __('Specify the returned value on front end','acf'), + 'type' => 'radio', + 'name' => 'return_format', + 'layout' => 'horizontal', + 'choices' => array( + 'array' => __("File Array",'acf'), + 'url' => __("File URL",'acf'), + 'id' => __("File ID",'acf') + ) + )); + + + // library + acf_render_field_setting( $field, array( + 'label' => __('Library','acf'), + 'instructions' => __('Limit the media library choice','acf'), + 'type' => 'radio', + 'name' => 'library', + 'layout' => 'horizontal', + 'choices' => array( + 'all' => __('All', 'acf'), + 'uploadedTo' => __('Uploaded to post', 'acf') + ) + )); + + + // min + acf_render_field_setting( $field, array( + 'label' => __('Minimum','acf'), + 'instructions' => __('Restrict which files can be uploaded','acf'), + 'type' => 'text', + 'name' => 'min_size', + 'prepend' => __('File size', 'acf'), + 'append' => 'MB', + )); + + + // max + acf_render_field_setting( $field, array( + 'label' => __('Maximum','acf'), + 'instructions' => __('Restrict which files can be uploaded','acf'), + 'type' => 'text', + 'name' => 'max_size', + 'prepend' => __('File size', 'acf'), + 'append' => 'MB', + )); + + + // allowed type + acf_render_field_setting( $field, array( + 'label' => __('Allowed file types','acf'), + 'instructions' => __('Comma separated list. Leave blank for all types','acf'), + 'type' => 'text', + 'name' => 'mime_types', + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // bail early if no value + if( empty($value) ) return false; + + + // bail early if not numeric (error message) + if( !is_numeric($value) ) return false; + + + // convert to int + $value = intval($value); + + + // format + if( $field['return_format'] == 'url' ) { + + return wp_get_attachment_url($value); + + } elseif( $field['return_format'] == 'array' ) { + + return acf_get_attachment( $value ); + } + + + // return + return $value; + } + + + /* + * get_media_item_args + * + * description + * + * @type function + * @date 27/01/13 + * @since 3.6.0 + * + * @param $vars (array) + * @return $vars + */ + + function get_media_item_args( $vars ) { + + $vars['send'] = true; + return($vars); + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $post_id - the $post_id of which the value will be saved + * @param $field - the field array holding all the field options + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // Bail early if no value. + if( empty($value) ) { + return $value; + } + + // Parse value for id. + $attachment_id = acf_idval( $value ); + + // Connect attacment to post. + acf_connect_attachment_to_post( $attachment_id, $post_id ); + + // Return id. + return $attachment_id; + } + + + + /* + * validate_value + * + * This function will validate a basic file input + * + * @type function + * @date 11/02/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_value( $valid, $value, $field, $input ){ + + // bail early if empty + if( empty($value) ) return $valid; + + + // bail ealry if is numeric + if( is_numeric($value) ) return $valid; + + + // bail ealry if not basic string + if( !is_string($value) ) return $valid; + + + // decode value + $file = null; + parse_str($value, $file); + + + // bail early if no attachment + if( empty($file) ) return $valid; + + + // get errors + $errors = acf_validate_attachment( $file, $field, 'basic_upload' ); + + + // append error + if( !empty($errors) ) { + + $valid = implode("\n", $errors); + + } + + + // return + return $valid; + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_file' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-google-map.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-google-map.php new file mode 100644 index 0000000..c9c4add --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-google-map.php @@ -0,0 +1,314 @@ +name = 'google_map'; + $this->label = __("Google Map",'acf'); + $this->category = 'jquery'; + $this->defaults = array( + 'height' => '', + 'center_lat' => '', + 'center_lng' => '', + 'zoom' => '' + ); + $this->default_values = array( + 'height' => '400', + 'center_lat' => '-37.81411', + 'center_lng' => '144.96328', + 'zoom' => '14' + ); + } + + + /* + * input_admin_enqueue_scripts + * + * description + * + * @type function + * @date 16/12/2015 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function input_admin_enqueue_scripts() { + + // localize + acf_localize_text(array( + 'Sorry, this browser does not support geolocation' => __('Sorry, this browser does not support geolocation', 'acf'), + )); + + + // bail ealry if no enqueue + if( !acf_get_setting('enqueue_google_maps') ) { + return; + } + + + // vars + $api = array( + 'key' => acf_get_setting('google_api_key'), + 'client' => acf_get_setting('google_api_client'), + 'libraries' => 'places', + 'ver' => 3, + 'callback' => '', + 'language' => acf_get_locale() + ); + + + // filter + $api = apply_filters('acf/fields/google_map/api', $api); + + + // remove empty + if( empty($api['key']) ) unset($api['key']); + if( empty($api['client']) ) unset($api['client']); + + + // construct url + $url = add_query_arg($api, 'https://maps.googleapis.com/maps/api/js'); + + + // localize + acf_localize_data(array( + 'google_map_api' => $url + )); + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // validate value + if( empty($field['value']) ) { + $field['value'] = array(); + } + + + // value + $field['value'] = wp_parse_args($field['value'], array( + 'address' => '', + 'lat' => '', + 'lng' => '' + )); + + + // default options + foreach( $this->default_values as $k => $v ) { + + if( empty($field[ $k ]) ) { + $field[ $k ] = $v; + } + + } + + + // vars + $atts = array( + 'id' => $field['id'], + 'class' => "acf-google-map {$field['class']}", + 'data-lat' => $field['center_lat'], + 'data-lng' => $field['center_lng'], + 'data-zoom' => $field['zoom'], + ); + + + // has value + if( $field['value']['address'] ) { + $atts['class'] .= ' -value'; + } + +?> +
                          > + +
                          + $v ): + acf_hidden_input(array( 'name' => $field['name'].'['.$k.']', 'value' => $v, 'data-name' => $k )); + endforeach; ?> +
                          + +
                          + +
                          + ">">"> +
                          + + " value="" /> + + +
                          + +
                          + +
                          + __('Center','acf'), + 'instructions' => __('Center the initial map','acf'), + 'type' => 'text', + 'name' => 'center_lat', + 'prepend' => 'lat', + 'placeholder' => $this->default_values['center_lat'] + )); + + + // center_lng + acf_render_field_setting( $field, array( + 'label' => __('Center','acf'), + 'instructions' => __('Center the initial map','acf'), + 'type' => 'text', + 'name' => 'center_lng', + 'prepend' => 'lng', + 'placeholder' => $this->default_values['center_lng'], + '_append' => 'center_lat' + )); + + + // zoom + acf_render_field_setting( $field, array( + 'label' => __('Zoom','acf'), + 'instructions' => __('Set the initial zoom level','acf'), + 'type' => 'text', + 'name' => 'zoom', + 'placeholder' => $this->default_values['zoom'] + )); + + + // allow_null + acf_render_field_setting( $field, array( + 'label' => __('Height','acf'), + 'instructions' => __('Customize the map height','acf'), + 'type' => 'text', + 'name' => 'height', + 'append' => 'px', + 'placeholder' => $this->default_values['height'] + )); + + } + + + /* + * validate_value + * + * description + * + * @type function + * @date 11/02/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_value( $valid, $value, $field, $input ){ + + // bail early if not required + if( ! $field['required'] ) { + + return $valid; + + } + + + if( empty($value) || empty($value['lat']) || empty($value['lng']) ) { + + return false; + + } + + + // return + return $valid; + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $post_id - the $post_id of which the value will be saved + * @param $field - the field array holding all the field options + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // Check if value is an empty array and convert to empty string. + if( empty($value) || empty($value['lat']) ) { + $value = ""; + } + + // return + return $value; + } +} + + +// initialize +acf_register_field_type( 'acf_field_google_map' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-group.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-group.php new file mode 100644 index 0000000..4e2cc5f --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-group.php @@ -0,0 +1,706 @@ +name = 'group'; + $this->label = __("Group",'acf'); + $this->category = 'layout'; + $this->defaults = array( + 'sub_fields' => array(), + 'layout' => 'block' + ); + $this->have_rows = 'single'; + + + // field filters + $this->add_field_filter('acf/prepare_field_for_export', array($this, 'prepare_field_for_export')); + $this->add_field_filter('acf/prepare_field_for_import', array($this, 'prepare_field_for_import')); + + } + + + /* + * load_field() + * + * This filter is appied to the $field after it is loaded from the database + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $field - the field array holding all the field options + * + * @return $field - the field array holding all the field options + */ + + function load_field( $field ) { + + // vars + $sub_fields = acf_get_fields( $field ); + + + // append + if( $sub_fields ) { + + $field['sub_fields'] = $sub_fields; + + } + + + // return + return $field; + + } + + + /* + * load_value() + * + * This filter is applied to the $value after it is loaded from the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value found in the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * @return $value + */ + + function load_value( $value, $post_id, $field ) { + + // bail early if no sub fields + if( empty($field['sub_fields']) ) return $value; + + + // modify names + $field = $this->prepare_field_for_db( $field ); + + + // load sub fields + $value = array(); + + + // loop + foreach( $field['sub_fields'] as $sub_field ) { + + // load + $value[ $sub_field['key'] ] = acf_get_value( $post_id, $sub_field ); + + } + + + // return + return $value; + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // bail early if no value + if( empty($value) ) return false; + + + // modify names + $field = $this->prepare_field_for_db( $field ); + + + // loop + foreach( $field['sub_fields'] as $sub_field ) { + + // extract value + $sub_value = acf_extract_var( $value, $sub_field['key'] ); + + + // format value + $sub_value = acf_format_value( $sub_value, $post_id, $sub_field ); + + + // append to $row + $value[ $sub_field['_name'] ] = $sub_value; + + } + + + // return + return $value; + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $field - the field array holding all the field options + * @param $post_id - the $post_id of which the value will be saved + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // bail early if no value + if( !acf_is_array($value) ) return null; + + + // bail ealry if no sub fields + if( empty($field['sub_fields']) ) return null; + + + // modify names + $field = $this->prepare_field_for_db( $field ); + + + // loop + foreach( $field['sub_fields'] as $sub_field ) { + + // vars + $v = false; + + + // key (backend) + if( isset($value[ $sub_field['key'] ]) ) { + + $v = $value[ $sub_field['key'] ]; + + // name (frontend) + } elseif( isset($value[ $sub_field['_name'] ]) ) { + + $v = $value[ $sub_field['_name'] ]; + + // empty + } else { + + // input is not set (hidden by conditioanl logic) + continue; + + } + + + // update value + acf_update_value( $v, $post_id, $sub_field ); + + } + + + // return + return ''; + + } + + + /* + * prepare_field_for_db + * + * This function will modify sub fields ready for update / load + * + * @type function + * @date 4/11/16 + * @since 5.5.0 + * + * @param $field (array) + * @return $field + */ + + function prepare_field_for_db( $field ) { + + // bail early if no sub fields + if( empty($field['sub_fields']) ) return $field; + + + // loop + foreach( $field['sub_fields'] as &$sub_field ) { + + // prefix name + $sub_field['name'] = $field['name'] . '_' . $sub_field['_name']; + + } + + + // return + return $field; + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // bail early if no sub fields + if( empty($field['sub_fields']) ) return; + + + // load values + foreach( $field['sub_fields'] as &$sub_field ) { + + // add value + if( isset($field['value'][ $sub_field['key'] ]) ) { + + // this is a normal value + $sub_field['value'] = $field['value'][ $sub_field['key'] ]; + + } elseif( isset($sub_field['default_value']) ) { + + // no value, but this sub field has a default value + $sub_field['value'] = $sub_field['default_value']; + + } + + + // update prefix to allow for nested values + $sub_field['prefix'] = $field['name']; + + + // restore required + if( $field['required'] ) $sub_field['required'] = 0; + + } + + + // render + if( $field['layout'] == 'table' ) { + + $this->render_field_table( $field ); + + } else { + + $this->render_field_block( $field ); + + } + + } + + + /* + * render_field_block + * + * description + * + * @type function + * @date 12/07/2016 + * @since 5.4.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function render_field_block( $field ) { + + // vars + $label_placement = ($field['layout'] == 'block') ? 'top' : 'left'; + + + // html + echo '
                          '; + + foreach( $field['sub_fields'] as $sub_field ) { + + acf_render_field_wrap( $sub_field ); + + } + + echo '
                          '; + + } + + + /* + * render_field_table + * + * description + * + * @type function + * @date 12/07/2016 + * @since 5.4.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function render_field_table( $field ) { + +?> + + + + + + + + + + + + + +
                          > + + +
                          + $field['sub_fields'], + 'parent' => $field['ID'] + ); + + + ?> + + + + + + + + __('Layout','acf'), + 'instructions' => __('Specify the style used to render the selected fields', 'acf'), + 'type' => 'radio', + 'name' => 'layout', + 'layout' => 'horizontal', + 'choices' => array( + 'block' => __('Block','acf'), + 'table' => __('Table','acf'), + 'row' => __('Row','acf') + ) + )); + + } + + + /* + * validate_value + * + * description + * + * @type function + * @date 11/02/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_value( $valid, $value, $field, $input ){ + + // bail early if no $value + if( empty($value) ) return $valid; + + + // bail early if no sub fields + if( empty($field['sub_fields']) ) return $valid; + + + // loop + foreach( $field['sub_fields'] as $sub_field ) { + + // get sub field + $k = $sub_field['key']; + + + // bail early if value not set (conditional logic?) + if( !isset($value[ $k ]) ) continue; + + + // required + if( $field['required'] ) { + $sub_field['required'] = 1; + } + + + // validate + acf_validate_value( $value[ $k ], $sub_field, "{$input}[{$k}]" ); + + } + + + // return + return $valid; + + } + + + /* + * duplicate_field() + * + * This filter is appied to the $field before it is duplicated and saved to the database + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $field - the field array holding all the field options + * + * @return $field - the modified field + */ + + function duplicate_field( $field ) { + + // get sub fields + $sub_fields = acf_extract_var( $field, 'sub_fields' ); + + + // save field to get ID + $field = acf_update_field( $field ); + + + // duplicate sub fields + acf_duplicate_fields( $sub_fields, $field['ID'] ); + + + // return + return $field; + + } + + + /* + * prepare_field_for_export + * + * description + * + * @type function + * @date 11/03/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function prepare_field_for_export( $field ) { + + // bail early if no sub fields + if( empty($field['sub_fields']) ) return $field; + + + // prepare + $field['sub_fields'] = acf_prepare_fields_for_export( $field['sub_fields'] ); + + + // return + return $field; + + } + + + /* + * prepare_field_for_import + * + * description + * + * @type function + * @date 11/03/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function prepare_field_for_import( $field ) { + + // bail early if no sub fields + if( empty($field['sub_fields']) ) return $field; + + + // vars + $sub_fields = $field['sub_fields']; + + + // reset field setting + $field['sub_fields'] = array(); + + + // loop + foreach( $sub_fields as &$sub_field ) { + + $sub_field['parent'] = $field['key']; + + } + + + // merge + array_unshift($sub_fields, $field); + + + // return + return $sub_fields; + + } + + + /* + * delete_value + * + * Called when deleting this field's value. + * + * @date 1/07/2015 + * @since 5.2.3 + * + * @param mixed $post_id The post ID being saved + * @param string $meta_key The field name as seen by the DB + * @param array $field The field settings + * @return void + */ + + function delete_value( $post_id, $meta_key, $field ) { + + // bail ealry if no sub fields + if( empty($field['sub_fields']) ) return null; + + // modify names + $field = $this->prepare_field_for_db( $field ); + + // loop + foreach( $field['sub_fields'] as $sub_field ) { + acf_delete_value( $post_id, $sub_field ); + } + } + + /** + * delete_field + * + * Called when deleting a field of this type. + * + * @date 8/11/18 + * @since 5.8.0 + * + * @param arra $field The field settings. + * @return void + */ + function delete_field( $field ) { + + // loop over sub fields and delete them + if( $field['sub_fields'] ) { + foreach( $field['sub_fields'] as $sub_field ) { + acf_delete_field( $sub_field['ID'] ); + } + } + } + +} + + +// initialize +acf_register_field_type( 'acf_field__group' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-image.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-image.php new file mode 100644 index 0000000..46dbcc1 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-image.php @@ -0,0 +1,429 @@ +name = 'image'; + $this->label = __("Image",'acf'); + $this->category = 'content'; + $this->defaults = array( + 'return_format' => 'array', + 'preview_size' => 'medium', + 'library' => 'all', + 'min_width' => 0, + 'min_height' => 0, + 'min_size' => 0, + 'max_width' => 0, + 'max_height' => 0, + 'max_size' => 0, + 'mime_types' => '' + ); + + // filters + add_filter('get_media_item_args', array($this, 'get_media_item_args')); + + } + + + /* + * input_admin_enqueue_scripts + * + * description + * + * @type function + * @date 16/12/2015 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function input_admin_enqueue_scripts() { + + // localize + acf_localize_text(array( + 'Select Image' => __('Select Image', 'acf'), + 'Edit Image' => __('Edit Image', 'acf'), + 'Update Image' => __('Update Image', 'acf'), + 'All images' => __('All images', 'acf'), + )); + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // vars + $uploader = acf_get_setting('uploader'); + + + // enqueue + if( $uploader == 'wp' ) { + acf_enqueue_uploader(); + } + + + // vars + $url = ''; + $alt = ''; + $div = array( + 'class' => 'acf-image-uploader', + 'data-preview_size' => $field['preview_size'], + 'data-library' => $field['library'], + 'data-mime_types' => $field['mime_types'], + 'data-uploader' => $uploader + ); + + + // has value? + if( $field['value'] ) { + + // update vars + $url = wp_get_attachment_image_src($field['value'], $field['preview_size']); + $alt = get_post_meta($field['value'], '_wp_attachment_image_alt', true); + + + // url exists + if( $url ) $url = $url[0]; + + + // url exists + if( $url ) { + $div['class'] .= ' has-value'; + } + + } + + + // get size of preview value + $size = acf_get_image_size($field['preview_size']); + +?> +
                          > + $field['name'], 'value' => $field['value'] )); ?> +
                          style=""> + <?php echo esc_attr($alt); ?> +
                          + +
                          +
                          +
                          + + + +

                          + + + + + + +

                          + + +
                          +
                          + __('Return Format','acf'), + 'instructions' => '', + 'type' => 'radio', + 'name' => 'return_format', + 'layout' => 'horizontal', + 'choices' => array( + 'array' => __("Image Array",'acf'), + 'url' => __("Image URL",'acf'), + 'id' => __("Image ID",'acf') + ) + )); + + + // preview_size + acf_render_field_setting( $field, array( + 'label' => __('Preview Size','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'preview_size', + 'choices' => acf_get_image_sizes() + )); + + + // library + acf_render_field_setting( $field, array( + 'label' => __('Library','acf'), + 'instructions' => __('Limit the media library choice','acf'), + 'type' => 'radio', + 'name' => 'library', + 'layout' => 'horizontal', + 'choices' => array( + 'all' => __('All', 'acf'), + 'uploadedTo' => __('Uploaded to post', 'acf') + ) + )); + + + // min + acf_render_field_setting( $field, array( + 'label' => __('Minimum','acf'), + 'instructions' => __('Restrict which images can be uploaded','acf'), + 'type' => 'text', + 'name' => 'min_width', + 'prepend' => __('Width', 'acf'), + 'append' => 'px', + )); + + acf_render_field_setting( $field, array( + 'label' => '', + 'type' => 'text', + 'name' => 'min_height', + 'prepend' => __('Height', 'acf'), + 'append' => 'px', + '_append' => 'min_width' + )); + + acf_render_field_setting( $field, array( + 'label' => '', + 'type' => 'text', + 'name' => 'min_size', + 'prepend' => __('File size', 'acf'), + 'append' => 'MB', + '_append' => 'min_width' + )); + + + // max + acf_render_field_setting( $field, array( + 'label' => __('Maximum','acf'), + 'instructions' => __('Restrict which images can be uploaded','acf'), + 'type' => 'text', + 'name' => 'max_width', + 'prepend' => __('Width', 'acf'), + 'append' => 'px', + )); + + acf_render_field_setting( $field, array( + 'label' => '', + 'type' => 'text', + 'name' => 'max_height', + 'prepend' => __('Height', 'acf'), + 'append' => 'px', + '_append' => 'max_width' + )); + + acf_render_field_setting( $field, array( + 'label' => '', + 'type' => 'text', + 'name' => 'max_size', + 'prepend' => __('File size', 'acf'), + 'append' => 'MB', + '_append' => 'max_width' + )); + + + // allowed type + acf_render_field_setting( $field, array( + 'label' => __('Allowed file types','acf'), + 'instructions' => __('Comma separated list. Leave blank for all types','acf'), + 'type' => 'text', + 'name' => 'mime_types', + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // bail early if no value + if( empty($value) ) return false; + + + // bail early if not numeric (error message) + if( !is_numeric($value) ) return false; + + + // convert to int + $value = intval($value); + + + // format + if( $field['return_format'] == 'url' ) { + + return wp_get_attachment_url( $value ); + + } elseif( $field['return_format'] == 'array' ) { + + return acf_get_attachment( $value ); + + } + + + // return + return $value; + + } + + + /* + * get_media_item_args + * + * description + * + * @type function + * @date 27/01/13 + * @since 3.6.0 + * + * @param $vars (array) + * @return $vars + */ + + function get_media_item_args( $vars ) { + + $vars['send'] = true; + return($vars); + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $post_id - the $post_id of which the value will be saved + * @param $field - the field array holding all the field options + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + return acf_get_field_type('file')->update_value( $value, $post_id, $field ); + + } + + + /* + * validate_value + * + * This function will validate a basic file input + * + * @type function + * @date 11/02/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_value( $valid, $value, $field, $input ){ + + return acf_get_field_type('file')->validate_value( $valid, $value, $field, $input ); + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_image' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-link.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-link.php new file mode 100644 index 0000000..d5bfb55 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-link.php @@ -0,0 +1,287 @@ +name = 'link'; + $this->label = __("Link",'acf'); + $this->category = 'relational'; + $this->defaults = array( + 'return_format' => 'array', + ); + + } + + + /* + * get_link + * + * description + * + * @type function + * @date 16/5/17 + * @since 5.5.13 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function get_link( $value = '' ) { + + // vars + $link = array( + 'title' => '', + 'url' => '', + 'target' => '' + ); + + + // array (ACF 5.6.0) + if( is_array($value) ) { + + $link = array_merge($link, $value); + + // post id (ACF < 5.6.0) + } elseif( is_numeric($value) ) { + + $link['title'] = get_the_title( $value ); + $link['url'] = get_permalink( $value ); + + // string (ACF < 5.6.0) + } elseif( is_string($value) ) { + + $link['url'] = $value; + + } + + + // return + return $link; + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ){ + + // vars + $div = array( + 'id' => $field['id'], + 'class' => $field['class'] . ' acf-link', + ); + + + // render scripts/styles + acf_enqueue_uploader(); + + + // get link + $link = $this->get_link( $field['value'] ); + + + // classes + if( $link['url'] ) { + $div['class'] .= ' -value'; + } + + if( $link['target'] === '_blank' ) { + $div['class'] .= ' -external'; + } + + /**/ +?> +
                          > + +
                          + + $v ): ?> + "input-$k", 'name' => $field['name'] . "[$k]", 'value' => $v )); ?> + +
                          + + + + + +
                          + __('Return Value','acf'), + 'instructions' => __('Specify the returned value on front end','acf'), + 'type' => 'radio', + 'name' => 'return_format', + 'layout' => 'horizontal', + 'choices' => array( + 'array' => __("Link Array",'acf'), + 'url' => __("Link URL",'acf'), + ) + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // bail early if no value + if( empty($value) ) return $value; + + + // get link + $link = $this->get_link( $value ); + + + // format value + if( $field['return_format'] == 'url' ) { + + return $link['url']; + + } + + + // return link + return $link; + + } + + + /* + * validate_value + * + * description + * + * @type function + * @date 11/02/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_value( $valid, $value, $field, $input ){ + + // bail early if not required + if( !$field['required'] ) return $valid; + + + // URL is required + if( empty($value) || empty($value['url']) ) { + + return false; + + } + + + // return + return $valid; + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $post_id - the $post_id of which the value will be saved + * @param $field - the field array holding all the field options + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // Check if value is an empty array and convert to empty string. + if( empty($value) || empty($value['url']) ) { + $value = ""; + } + + // return + return $value; + } +} + + +// initialize +acf_register_field_type( 'acf_field_link' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-message.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-message.php new file mode 100644 index 0000000..3fd2118 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-message.php @@ -0,0 +1,198 @@ +name = 'message'; + $this->label = __("Message",'acf'); + $this->category = 'layout'; + $this->defaults = array( + 'message' => '', + 'esc_html' => 0, + 'new_lines' => 'wpautop', + ); + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // vars + $m = $field['message']; + + + // wptexturize (improves "quotes") + $m = wptexturize( $m ); + + + // esc_html + if( $field['esc_html'] ) { + + $m = esc_html( $m ); + + } + + + // new lines + if( $field['new_lines'] == 'wpautop' ) { + + $m = wpautop($m); + + } elseif( $field['new_lines'] == 'br' ) { + + $m = nl2br($m); + + } + + + // return + echo acf_esc_html( $m ); + + } + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field_settings( $field ) { + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Message','acf'), + 'instructions' => '', + 'type' => 'textarea', + 'name' => 'message', + )); + + + // formatting + acf_render_field_setting( $field, array( + 'label' => __('New Lines','acf'), + 'instructions' => __('Controls how new lines are rendered','acf'), + 'type' => 'select', + 'name' => 'new_lines', + 'choices' => array( + 'wpautop' => __("Automatically add paragraphs",'acf'), + 'br' => __("Automatically add <br>",'acf'), + '' => __("No Formatting",'acf') + ) + )); + + + // HTML + acf_render_field_setting( $field, array( + 'label' => __('Escape HTML','acf'), + 'instructions' => __('Allow HTML markup to display as visible text instead of rendering','acf'), + 'name' => 'esc_html', + 'type' => 'true_false', + 'ui' => 1, + )); + + } + + + /* + * translate_field + * + * This function will translate field settings + * + * @type function + * @date 8/03/2016 + * @since 5.3.2 + * + * @param $field (array) + * @return $field + */ + + function translate_field( $field ) { + + // translate + $field['message'] = acf_translate( $field['message'] ); + + + // return + return $field; + + } + + + /* + * load_field() + * + * This filter is appied to the $field after it is loaded from the database + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $field - the field array holding all the field options + * + * @return $field - the field array holding all the field options + */ + function load_field( $field ) { + + // remove name to avoid caching issue + $field['name'] = ''; + + // remove instructions + $field['instructions'] = ''; + + // remove required to avoid JS issues + $field['required'] = 0; + + // set value other than 'null' to avoid ACF loading / caching issue + $field['value'] = false; + + // return + return $field; + } + +} + + +// initialize +acf_register_field_type( 'acf_field_message' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-number.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-number.php new file mode 100644 index 0000000..0395471 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-number.php @@ -0,0 +1,304 @@ +name = 'number'; + $this->label = __("Number",'acf'); + $this->defaults = array( + 'default_value' => '', + 'min' => '', + 'max' => '', + 'step' => '', + 'placeholder' => '', + 'prepend' => '', + 'append' => '' + ); + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // vars + $atts = array(); + $keys = array( 'type', 'id', 'class', 'name', 'value', 'min', 'max', 'step', 'placeholder', 'pattern' ); + $keys2 = array( 'readonly', 'disabled', 'required' ); + $html = ''; + + + // step + if( !$field['step'] ) { + $field['step'] = 'any'; + } + + + // prepend + if( $field['prepend'] !== '' ) { + + $field['class'] .= ' acf-is-prepended'; + $html .= '
                          ' . acf_esc_html($field['prepend']) . '
                          '; + + } + + + // append + if( $field['append'] !== '' ) { + + $field['class'] .= ' acf-is-appended'; + $html .= '
                          ' . acf_esc_html($field['append']) . '
                          '; + + } + + + // atts (value="123") + foreach( $keys as $k ) { + if( isset($field[ $k ]) ) $atts[ $k ] = $field[ $k ]; + } + + + // atts2 (disabled="disabled") + foreach( $keys2 as $k ) { + if( !empty($field[ $k ]) ) $atts[ $k ] = $k; + } + + + // remove empty atts + $atts = acf_clean_atts( $atts ); + + + // render + $html .= '
                          ' . acf_get_text_input( $atts ) . '
                          '; + + + // return + echo $html; + + } + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field_settings( $field ) { + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Default Value','acf'), + 'instructions' => __('Appears when creating a new post','acf'), + 'type' => 'text', + 'name' => 'default_value', + )); + + + // placeholder + acf_render_field_setting( $field, array( + 'label' => __('Placeholder Text','acf'), + 'instructions' => __('Appears within the input','acf'), + 'type' => 'text', + 'name' => 'placeholder', + )); + + + // prepend + acf_render_field_setting( $field, array( + 'label' => __('Prepend','acf'), + 'instructions' => __('Appears before the input','acf'), + 'type' => 'text', + 'name' => 'prepend', + )); + + + // append + acf_render_field_setting( $field, array( + 'label' => __('Append','acf'), + 'instructions' => __('Appears after the input','acf'), + 'type' => 'text', + 'name' => 'append', + )); + + + // min + acf_render_field_setting( $field, array( + 'label' => __('Minimum Value','acf'), + 'instructions' => '', + 'type' => 'number', + 'name' => 'min', + )); + + + // max + acf_render_field_setting( $field, array( + 'label' => __('Maximum Value','acf'), + 'instructions' => '', + 'type' => 'number', + 'name' => 'max', + )); + + + // max + acf_render_field_setting( $field, array( + 'label' => __('Step Size','acf'), + 'instructions' => '', + 'type' => 'number', + 'name' => 'step', + )); + + } + + + /* + * validate_value + * + * description + * + * @type function + * @date 11/02/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_value( $valid, $value, $field, $input ){ + + // remove ',' + if( acf_str_exists(',', $value) ) { + + $value = str_replace(',', '', $value); + + } + + + // if value is not numeric... + if( !is_numeric($value) ) { + + // allow blank to be saved + if( !empty($value) ) { + + $valid = __('Value must be a number', 'acf'); + + } + + + // return early + return $valid; + + } + + + // convert + $value = floatval($value); + + + // min + if( is_numeric($field['min']) && $value < floatval($field['min'])) { + + $valid = sprintf(__('Value must be equal to or higher than %d', 'acf'), $field['min'] ); + + } + + + // max + if( is_numeric($field['max']) && $value > floatval($field['max']) ) { + + $valid = sprintf(__('Value must be equal to or lower than %d', 'acf'), $field['max'] ); + + } + + + // return + return $valid; + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $field - the field array holding all the field options + * @param $post_id - the $post_id of which the value will be saved + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // no formatting needed for empty value + if( empty($value) ) { + + return $value; + + } + + + // remove ',' + if( acf_str_exists(',', $value) ) { + + $value = str_replace(',', '', $value); + + } + + + // return + return $value; + + } + + +} + + +// initialize +acf_register_field_type( 'acf_field_number' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-oembed.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-oembed.php new file mode 100644 index 0000000..6e59465 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-oembed.php @@ -0,0 +1,320 @@ +name = 'oembed'; + $this->label = __("oEmbed",'acf'); + $this->category = 'content'; + $this->defaults = array( + 'width' => '', + 'height' => '', + ); + $this->width = 640; + $this->height = 390; + + + // extra + add_action('wp_ajax_acf/fields/oembed/search', array($this, 'ajax_query')); + add_action('wp_ajax_nopriv_acf/fields/oembed/search', array($this, 'ajax_query')); + + } + + + /* + * prepare_field + * + * This function will prepare the field for input + * + * @type function + * @date 14/2/17 + * @since 5.5.8 + * + * @param $field (array) + * @return (int) + */ + + function prepare_field( $field ) { + + // defaults + if( !$field['width'] ) $field['width'] = $this->width; + if( !$field['height'] ) $field['height'] = $this->height; + + + // return + return $field; + + } + + + /* + * wp_oembed_get + * + * description + * + * @type function + * @date 24/01/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function wp_oembed_get( $url = '', $width = 0, $height = 0 ) { + + // vars + $embed = ''; + $res = array( + 'width' => $width, + 'height' => $height + ); + + + // get emebed + $embed = @wp_oembed_get( $url, $res ); + + + // try shortcode + if( !$embed ) { + + // global + global $wp_embed; + + + // get emebed + $embed = $wp_embed->shortcode($res, $url); + + } + + + // return + return $embed; + } + + + /* + * ajax_query + * + * description + * + * @type function + * @date 24/10/13 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function ajax_query() { + + // validate + if( !acf_verify_ajax() ) die(); + + + // get choices + $response = $this->get_ajax_query( $_POST ); + + + // return + wp_send_json($response); + + } + + + /* + * get_ajax_query + * + * This function will return an array of data formatted for use in a select2 AJAX response + * + * @type function + * @date 15/10/2014 + * @since 5.0.9 + * + * @param $options (array) + * @return (array) + */ + + function get_ajax_query( $args = array() ) { + + // defaults + $args = acf_parse_args($args, array( + 's' => '', + 'field_key' => '', + )); + + + // load field + $field = acf_get_field( $args['field_key'] ); + if( !$field ) return false; + + + // prepare field to correct width and height + $field = $this->prepare_field($field); + + + // vars + $response = array( + 'url' => $args['s'], + 'html' => $this->wp_oembed_get($args['s'], $field['width'], $field['height']) + ); + + + // return + return $response; + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // atts + $atts = array( + 'class' => 'acf-oembed', + ); + + // _e("No embed found for the given URL.", 'acf'); + + // value + if( $field['value'] ) $atts['class'] .= ' has-value'; + +?> +
                          > + + 'input-value', 'name' => $field['name'], 'value' => $field['value'] )); ?> + +
                          + 'input-search', 'value' => $field['value'], 'placeholder' => __("Enter URL", 'acf'), 'autocomplete' => 'off' )); ?> +
                          + +
                          +
                          + +
                          +
                          + wp_oembed_get($field['value'], $field['width'], $field['height']); + } ?> +
                          + +
                          + +
                          + __('Embed Size','acf'), + 'type' => 'text', + 'name' => 'width', + 'prepend' => __('Width', 'acf'), + 'append' => 'px', + 'placeholder' => $this->width + )); + + + // height + acf_render_field_setting( $field, array( + 'label' => __('Embed Size','acf'), + 'type' => 'text', + 'name' => 'height', + 'prepend' => __('Height', 'acf'), + 'append' => 'px', + 'placeholder' => $this->height, + '_append' => 'width' + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // bail early if no value + if( empty($value) ) return $value; + + + // prepare field to correct width and height + $field = $this->prepare_field($field); + + + // get oembed + $value = $this->wp_oembed_get($value, $field['width'], $field['height']); + + + // return + return $value; + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_oembed' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-output.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-output.php new file mode 100644 index 0000000..25ff37c --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-output.php @@ -0,0 +1,77 @@ +name = 'output'; + $this->label = 'output'; + $this->public = false; + $this->defaults = array( + 'html' => false + ); + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field (array) the $field being rendered + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field (array) the $field being edited + * @return n/a + */ + + function render_field( $field ) { + + // bail early if no html + if( !$field['html'] ) return; + + + // html + if( is_string($field['html']) && !function_exists($field['html']) ) { + + echo $field['html']; + + // function + } else { + + call_user_func_array($field['html'], array($field)); + + } + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_output' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-page_link.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-page_link.php new file mode 100644 index 0000000..1521b56 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-page_link.php @@ -0,0 +1,663 @@ +name = 'page_link'; + $this->label = __("Page Link",'acf'); + $this->category = 'relational'; + $this->defaults = array( + 'post_type' => array(), + 'taxonomy' => array(), + 'allow_null' => 0, + 'multiple' => 0, + 'allow_archives' => 1 + ); + + + // extra + add_action('wp_ajax_acf/fields/page_link/query', array($this, 'ajax_query')); + add_action('wp_ajax_nopriv_acf/fields/page_link/query', array($this, 'ajax_query')); + + } + + + /* + * ajax_query + * + * description + * + * @type function + * @date 24/10/13 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function ajax_query() { + + // validate + if( !acf_verify_ajax() ) die(); + + + // defaults + $options = acf_parse_args($_POST, array( + 'post_id' => 0, + 's' => '', + 'field_key' => '', + 'paged' => 1 + )); + + + // vars + $results = array(); + $args = array(); + $s = false; + $is_search = false; + + + // paged + $args['posts_per_page'] = 20; + $args['paged'] = $options['paged']; + + + // search + if( $options['s'] !== '' ) { + + // strip slashes (search may be integer) + $s = wp_unslash( strval($options['s']) ); + + + // update vars + $args['s'] = $s; + $is_search = true; + + } + + + // load field + $field = acf_get_field( $options['field_key'] ); + if( !$field ) die(); + + + // update $args + if( !empty($field['post_type']) ) { + + $args['post_type'] = acf_get_array( $field['post_type'] ); + + } else { + + $args['post_type'] = acf_get_post_types(); + + } + + // create tax queries + if( !empty($field['taxonomy']) ) { + + // append to $args + $args['tax_query'] = array(); + + + // decode terms + $taxonomies = acf_decode_taxonomy_terms( $field['taxonomy'] ); + + + // now create the tax queries + foreach( $taxonomies as $taxonomy => $terms ) { + + $args['tax_query'][] = array( + 'taxonomy' => $taxonomy, + 'field' => 'slug', + 'terms' => $terms, + ); + + } + } + + + // filters + $args = apply_filters('acf/fields/page_link/query', $args, $field, $options['post_id']); + $args = apply_filters('acf/fields/page_link/query/name=' . $field['name'], $args, $field, $options['post_id'] ); + $args = apply_filters('acf/fields/page_link/query/key=' . $field['key'], $args, $field, $options['post_id'] ); + + + // add archives to $results + if( $field['allow_archives'] && $args['paged'] == 1 ) { + + $archives = array(); + $archives[] = array( + 'id' => home_url(), + 'text' => home_url() + ); + + foreach( $args['post_type'] as $post_type ) { + + // vars + $archive_link = get_post_type_archive_link( $post_type ); + + + // bail ealry if no link + if( !$archive_link ) continue; + + + // bail early if no search match + if( $is_search && stripos($archive_link, $s) === false ) continue; + + + // append + $archives[] = array( + 'id' => $archive_link, + 'text' => $archive_link + ); + + } + + + // append + $results[] = array( + 'text' => __('Archives', 'acf'), + 'children' => $archives + ); + + } + + + // get posts grouped by post type + $groups = acf_get_grouped_posts( $args ); + + + // loop + if( !empty($groups) ) { + + foreach( array_keys($groups) as $group_title ) { + + // vars + $posts = acf_extract_var( $groups, $group_title ); + + + // data + $data = array( + 'text' => $group_title, + 'children' => array() + ); + + + // convert post objects to post titles + foreach( array_keys($posts) as $post_id ) { + + $posts[ $post_id ] = $this->get_post_title( $posts[ $post_id ], $field, $options['post_id'], $is_search ); + + } + + + // order posts by search + if( $is_search && empty($args['orderby']) ) { + + $posts = acf_order_by_search( $posts, $args['s'] ); + + } + + + // append to $data + foreach( array_keys($posts) as $post_id ) { + + $data['children'][] = $this->get_post_result( $post_id, $posts[ $post_id ]); + + } + + + // append to $results + $results[] = $data; + + } + + } + + + // return + acf_send_ajax_results(array( + 'results' => $results, + 'limit' => $args['posts_per_page'] + )); + + } + + + /* + * get_post_result + * + * This function will return an array containing id, text and maybe description data + * + * @type function + * @date 7/07/2016 + * @since 5.4.0 + * + * @param $id (mixed) + * @param $text (string) + * @return (array) + */ + + function get_post_result( $id, $text ) { + + // vars + $result = array( + 'id' => $id, + 'text' => $text + ); + + + // look for parent + $search = '| ' . __('Parent', 'acf') . ':'; + $pos = strpos($text, $search); + + if( $pos !== false ) { + + $result['description'] = substr($text, $pos+2); + $result['text'] = substr($text, 0, $pos); + + } + + + // return + return $result; + + } + + + /* + * get_post_title + * + * This function returns the HTML for a result + * + * @type function + * @date 1/11/2013 + * @since 5.0.0 + * + * @param $post (object) + * @param $field (array) + * @param $post_id (int) the post_id to which this value is saved to + * @return (string) + */ + + function get_post_title( $post, $field, $post_id = 0, $is_search = 0 ) { + + // get post_id + if( !$post_id ) $post_id = acf_get_form_data('post_id'); + + + // vars + $title = acf_get_post_title( $post, $is_search ); + + + // filters + $title = apply_filters('acf/fields/page_link/result', $title, $post, $field, $post_id); + $title = apply_filters('acf/fields/page_link/result/name=' . $field['_name'], $title, $post, $field, $post_id); + $title = apply_filters('acf/fields/page_link/result/key=' . $field['key'], $title, $post, $field, $post_id); + + + // return + return $title; + + } + + + /* + * get_posts + * + * This function will return an array of posts for a given field value + * + * @type function + * @date 13/06/2014 + * @since 5.0.0 + * + * @param $value (array) + * @return $value + */ + + function get_posts( $value, $field ) { + + // force value to array + $value = acf_get_array( $value ); + + + // get selected post ID's + $post__in = array(); + + foreach( $value as $k => $v ) { + + if( is_numeric($v) ) { + + // append to $post__in + $post__in[] = (int) $v; + + } + + } + + + // bail early if no posts + if( empty($post__in) ) { + + return $value; + + } + + + // get posts + $posts = acf_get_posts(array( + 'post__in' => $post__in, + 'post_type' => $field['post_type'] + )); + + + // override value with post + $return = array(); + + + // append to $return + foreach( $value as $k => $v ) { + + if( is_numeric($v) ) { + + // extract first post + $post = array_shift( $posts ); + + + // append + if( $post ) { + + $return[] = $post; + + } + + } else { + + $return[] = $v; + + } + + } + + + // return + return $return; + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ){ + + // Change Field into a select + $field['type'] = 'select'; + $field['ui'] = 1; + $field['ajax'] = 1; + $field['choices'] = array(); + + + // populate choices if value exists + if( !empty($field['value']) ) { + + // get posts + $posts = $this->get_posts( $field['value'], $field ); + + + // set choices + if( !empty($posts) ) { + + foreach( array_keys($posts) as $i ) { + + // vars + $post = acf_extract_var( $posts, $i ); + + + if( is_object($post) ) { + + // append to choices + $field['choices'][ $post->ID ] = $this->get_post_title( $post, $field ); + + } else { + + // append to choices + $field['choices'][ $post ] = $post; + + } + + } + + } + + } + + + // render + acf_render_field( $field ); + } + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field_settings( $field ) { + + // post_type + acf_render_field_setting( $field, array( + 'label' => __('Filter by Post Type','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'post_type', + 'choices' => acf_get_pretty_post_types(), + 'multiple' => 1, + 'ui' => 1, + 'allow_null' => 1, + 'placeholder' => __("All post types",'acf'), + )); + + + // taxonomy + acf_render_field_setting( $field, array( + 'label' => __('Filter by Taxonomy','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'taxonomy', + 'choices' => acf_get_taxonomy_terms(), + 'multiple' => 1, + 'ui' => 1, + 'allow_null' => 1, + 'placeholder' => __("All taxonomies",'acf'), + )); + + + // allow_null + acf_render_field_setting( $field, array( + 'label' => __('Allow Null?','acf'), + 'instructions' => '', + 'name' => 'allow_null', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // allow_archives + acf_render_field_setting( $field, array( + 'label' => __('Allow Archives URLs','acf'), + 'instructions' => '', + 'name' => 'allow_archives', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // multiple + acf_render_field_setting( $field, array( + 'label' => __('Select multiple values?','acf'), + 'instructions' => '', + 'name' => 'multiple', + 'type' => 'true_false', + 'ui' => 1, + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // ACF4 null + if( $value === 'null' ) { + + return false; + + } + + + // bail early if no value + if( empty($value) ) { + + return $value; + + } + + + // get posts + $value = $this->get_posts( $value, $field ); + + + // set choices + foreach( array_keys($value) as $i ) { + + // vars + $post = acf_extract_var( $value, $i ); + + + // convert $post to permalink + if( is_object($post) ) { + + $post = get_permalink( $post ); + + } + + + // append back to $value + $value[ $i ] = $post; + + } + + + // convert back from array if neccessary + if( !$field['multiple'] ) { + + $value = array_shift($value); + + } + + + // return value + return $value; + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $post_id - the $post_id of which the value will be saved + * @param $field - the field array holding all the field options + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // Bail early if no value. + if( empty($value) ) { + return $value; + } + + // Format array of values. + // - ensure each value is an id. + // - Parse each id as string for SQL LIKE queries. + if( acf_is_sequential_array($value) ) { + $value = array_map('acf_maybe_idval', $value); + $value = array_map('strval', $value); + + // Parse single value for id. + } else { + $value = acf_maybe_idval( $value ); + } + + // Return value. + return $value; + } + +} + + +// initialize +acf_register_field_type( 'acf_field_page_link' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-password.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-password.php new file mode 100644 index 0000000..cb0efe2 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-password.php @@ -0,0 +1,104 @@ +name = 'password'; + $this->label = __("Password",'acf'); + $this->defaults = array( + 'placeholder' => '', + 'prepend' => '', + 'append' => '', + ); + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + acf_get_field_type('text')->render_field( $field ); + + } + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field_settings( $field ) { + + // placeholder + acf_render_field_setting( $field, array( + 'label' => __('Placeholder Text','acf'), + 'instructions' => __('Appears within the input','acf'), + 'type' => 'text', + 'name' => 'placeholder', + )); + + + // prepend + acf_render_field_setting( $field, array( + 'label' => __('Prepend','acf'), + 'instructions' => __('Appears before the input','acf'), + 'type' => 'text', + 'name' => 'prepend', + )); + + + // append + acf_render_field_setting( $field, array( + 'label' => __('Append','acf'), + 'instructions' => __('Appears after the input','acf'), + 'type' => 'text', + 'name' => 'append', + )); + } + +} + + +// initialize +acf_register_field_type( 'acf_field_password' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-post_object.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-post_object.php new file mode 100644 index 0000000..529b943 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-post_object.php @@ -0,0 +1,603 @@ +name = 'post_object'; + $this->label = __("Post Object",'acf'); + $this->category = 'relational'; + $this->defaults = array( + 'post_type' => array(), + 'taxonomy' => array(), + 'allow_null' => 0, + 'multiple' => 0, + 'return_format' => 'object', + 'ui' => 1, + ); + + + // extra + add_action('wp_ajax_acf/fields/post_object/query', array($this, 'ajax_query')); + add_action('wp_ajax_nopriv_acf/fields/post_object/query', array($this, 'ajax_query')); + + } + + + /* + * ajax_query + * + * description + * + * @type function + * @date 24/10/13 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function ajax_query() { + + // validate + if( !acf_verify_ajax() ) die(); + + + // get choices + $response = $this->get_ajax_query( $_POST ); + + + // return + acf_send_ajax_results($response); + + } + + + /* + * get_ajax_query + * + * This function will return an array of data formatted for use in a select2 AJAX response + * + * @type function + * @date 15/10/2014 + * @since 5.0.9 + * + * @param $options (array) + * @return (array) + */ + + function get_ajax_query( $options = array() ) { + + // defaults + $options = acf_parse_args($options, array( + 'post_id' => 0, + 's' => '', + 'field_key' => '', + 'paged' => 1 + )); + + + // load field + $field = acf_get_field( $options['field_key'] ); + if( !$field ) return false; + + + // vars + $results = array(); + $args = array(); + $s = false; + $is_search = false; + + + // paged + $args['posts_per_page'] = 20; + $args['paged'] = $options['paged']; + + + // search + if( $options['s'] !== '' ) { + + // strip slashes (search may be integer) + $s = wp_unslash( strval($options['s']) ); + + + // update vars + $args['s'] = $s; + $is_search = true; + + } + + + // post_type + if( !empty($field['post_type']) ) { + + $args['post_type'] = acf_get_array( $field['post_type'] ); + + } else { + + $args['post_type'] = acf_get_post_types(); + + } + + + // taxonomy + if( !empty($field['taxonomy']) ) { + + // vars + $terms = acf_decode_taxonomy_terms( $field['taxonomy'] ); + + + // append to $args + $args['tax_query'] = array(); + + + // now create the tax queries + foreach( $terms as $k => $v ) { + + $args['tax_query'][] = array( + 'taxonomy' => $k, + 'field' => 'slug', + 'terms' => $v, + ); + + } + + } + + + // filters + $args = apply_filters('acf/fields/post_object/query', $args, $field, $options['post_id']); + $args = apply_filters('acf/fields/post_object/query/name=' . $field['name'], $args, $field, $options['post_id'] ); + $args = apply_filters('acf/fields/post_object/query/key=' . $field['key'], $args, $field, $options['post_id'] ); + + + // get posts grouped by post type + $groups = acf_get_grouped_posts( $args ); + + + // bail early if no posts + if( empty($groups) ) return false; + + + // loop + foreach( array_keys($groups) as $group_title ) { + + // vars + $posts = acf_extract_var( $groups, $group_title ); + + + // data + $data = array( + 'text' => $group_title, + 'children' => array() + ); + + + // convert post objects to post titles + foreach( array_keys($posts) as $post_id ) { + + $posts[ $post_id ] = $this->get_post_title( $posts[ $post_id ], $field, $options['post_id'], $is_search ); + + } + + + // order posts by search + if( $is_search && empty($args['orderby']) ) { + + $posts = acf_order_by_search( $posts, $args['s'] ); + + } + + + // append to $data + foreach( array_keys($posts) as $post_id ) { + + $data['children'][] = $this->get_post_result( $post_id, $posts[ $post_id ]); + + } + + + // append to $results + $results[] = $data; + + } + + + // optgroup or single + $post_type = acf_get_array( $args['post_type'] ); + if( count($post_type) == 1 ) { + $results = $results[0]['children']; + } + + + // vars + $response = array( + 'results' => $results, + 'limit' => $args['posts_per_page'] + ); + + + // return + return $response; + + } + + + /* + * get_post_result + * + * This function will return an array containing id, text and maybe description data + * + * @type function + * @date 7/07/2016 + * @since 5.4.0 + * + * @param $id (mixed) + * @param $text (string) + * @return (array) + */ + + function get_post_result( $id, $text ) { + + // vars + $result = array( + 'id' => $id, + 'text' => $text + ); + + + // look for parent + $search = '| ' . __('Parent', 'acf') . ':'; + $pos = strpos($text, $search); + + if( $pos !== false ) { + + $result['description'] = substr($text, $pos+2); + $result['text'] = substr($text, 0, $pos); + + } + + + // return + return $result; + + } + + + /* + * get_post_title + * + * This function returns the HTML for a result + * + * @type function + * @date 1/11/2013 + * @since 5.0.0 + * + * @param $post (object) + * @param $field (array) + * @param $post_id (int) the post_id to which this value is saved to + * @return (string) + */ + + function get_post_title( $post, $field, $post_id = 0, $is_search = 0 ) { + + // get post_id + if( !$post_id ) $post_id = acf_get_form_data('post_id'); + + + // vars + $title = acf_get_post_title( $post, $is_search ); + + + // filters + $title = apply_filters('acf/fields/post_object/result', $title, $post, $field, $post_id); + $title = apply_filters('acf/fields/post_object/result/name=' . $field['_name'], $title, $post, $field, $post_id); + $title = apply_filters('acf/fields/post_object/result/key=' . $field['key'], $title, $post, $field, $post_id); + + + // return + return $title; + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // Change Field into a select + $field['type'] = 'select'; + $field['ui'] = 1; + $field['ajax'] = 1; + $field['choices'] = array(); + + + // load posts + $posts = $this->get_posts( $field['value'], $field ); + + if( $posts ) { + + foreach( array_keys($posts) as $i ) { + + // vars + $post = acf_extract_var( $posts, $i ); + + + // append to choices + $field['choices'][ $post->ID ] = $this->get_post_title( $post, $field ); + + } + + } + + + // render + acf_render_field( $field ); + + } + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field_settings( $field ) { + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Filter by Post Type','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'post_type', + 'choices' => acf_get_pretty_post_types(), + 'multiple' => 1, + 'ui' => 1, + 'allow_null' => 1, + 'placeholder' => __("All post types",'acf'), + )); + + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Filter by Taxonomy','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'taxonomy', + 'choices' => acf_get_taxonomy_terms(), + 'multiple' => 1, + 'ui' => 1, + 'allow_null' => 1, + 'placeholder' => __("All taxonomies",'acf'), + )); + + + // allow_null + acf_render_field_setting( $field, array( + 'label' => __('Allow Null?','acf'), + 'instructions' => '', + 'name' => 'allow_null', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // multiple + acf_render_field_setting( $field, array( + 'label' => __('Select multiple values?','acf'), + 'instructions' => '', + 'name' => 'multiple', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // return_format + acf_render_field_setting( $field, array( + 'label' => __('Return Format','acf'), + 'instructions' => '', + 'type' => 'radio', + 'name' => 'return_format', + 'choices' => array( + 'object' => __("Post Object",'acf'), + 'id' => __("Post ID",'acf'), + ), + 'layout' => 'horizontal', + )); + + } + + + /* + * load_value() + * + * This filter is applied to the $value after it is loaded from the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value found in the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * @return $value + */ + + function load_value( $value, $post_id, $field ) { + + // ACF4 null + if( $value === 'null' ) return false; + + + // return + return $value; + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // numeric + $value = acf_get_numeric($value); + + + // bail early if no value + if( empty($value) ) return false; + + + // load posts if needed + if( $field['return_format'] == 'object' ) { + + $value = $this->get_posts( $value, $field ); + + } + + + // convert back from array if neccessary + if( !$field['multiple'] && is_array($value) ) { + + $value = current($value); + + } + + + // return value + return $value; + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $post_id - the $post_id of which the value will be saved + * @param $field - the field array holding all the field options + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // Bail early if no value. + if( empty($value) ) { + return $value; + } + + // Format array of values. + // - ensure each value is an id. + // - Parse each id as string for SQL LIKE queries. + if( acf_is_sequential_array($value) ) { + $value = array_map('acf_idval', $value); + $value = array_map('strval', $value); + + // Parse single value for id. + } else { + $value = acf_idval( $value ); + } + + // Return value. + return $value; + } + + + /* + * get_posts + * + * This function will return an array of posts for a given field value + * + * @type function + * @date 13/06/2014 + * @since 5.0.0 + * + * @param $value (array) + * @return $value + */ + + function get_posts( $value, $field ) { + + // numeric + $value = acf_get_numeric($value); + + + // bail early if no value + if( empty($value) ) return false; + + + // get posts + $posts = acf_get_posts(array( + 'post__in' => $value, + 'post_type' => $field['post_type'] + )); + + + // return + return $posts; + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_post_object' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-radio.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-radio.php new file mode 100644 index 0000000..0850bf3 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-radio.php @@ -0,0 +1,491 @@ +name = 'radio'; + $this->label = __("Radio Button",'acf'); + $this->category = 'choice'; + $this->defaults = array( + 'layout' => 'vertical', + 'choices' => array(), + 'default_value' => '', + 'other_choice' => 0, + 'save_other_choice' => 0, + 'allow_null' => 0, + 'return_format' => 'value' + ); + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field (array) the $field being rendered + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field (array) the $field being edited + * @return n/a + */ + + function render_field( $field ) { + + // vars + $i = 0; + $e = ''; + $ul = array( + 'class' => 'acf-radio-list', + 'data-allow_null' => $field['allow_null'], + 'data-other_choice' => $field['other_choice'] + ); + + + // append to class + $ul['class'] .= ' ' . ($field['layout'] == 'horizontal' ? 'acf-hl' : 'acf-bl'); + $ul['class'] .= ' ' . $field['class']; + + + // select value + $checked = ''; + $value = strval($field['value']); + + + // selected choice + if( isset($field['choices'][ $value ]) ) { + + $checked = $value; + + // custom choice + } elseif( $field['other_choice'] && $value !== '' ) { + + $checked = 'other'; + + // allow null + } elseif( $field['allow_null'] ) { + + // do nothing + + // select first input by default + } else { + + $checked = key($field['choices']); + + } + + + // ensure $checked is a string (could be an int) + $checked = strval($checked); + + + // other choice + if( $field['other_choice'] ) { + + // vars + $input = array( + 'type' => 'text', + 'name' => $field['name'], + 'value' => '', + 'disabled' => 'disabled', + 'class' => 'acf-disabled' + ); + + + // select other choice if value is not a valid choice + if( $checked === 'other' ) { + + unset($input['disabled']); + $input['value'] = $field['value']; + + } + + + // allow custom 'other' choice to be defined + if( !isset($field['choices']['other']) ) { + + $field['choices']['other'] = ''; + + } + + + // append other choice + $field['choices']['other'] .= ' + + __('Message','acf'), + 'instructions' => __('Displays text alongside the checkbox','acf'), + 'type' => 'text', + 'name' => 'message', + )); + + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Default Value','acf'), + 'instructions' => '', + 'type' => 'true_false', + 'name' => 'default_value', + )); + + + // ui + acf_render_field_setting( $field, array( + 'label' => __('Stylised UI','acf'), + 'instructions' => '', + 'type' => 'true_false', + 'name' => 'ui', + 'ui' => 1, + 'class' => 'acf-field-object-true-false-ui' + )); + + + // on_text + acf_render_field_setting( $field, array( + 'label' => __('On Text','acf'), + 'instructions' => __('Text shown when active','acf'), + 'type' => 'text', + 'name' => 'ui_on_text', + 'placeholder' => __('Yes', 'acf'), + 'conditions' => array( + 'field' => 'ui', + 'operator' => '==', + 'value' => 1 + ) + )); + + + // on_text + acf_render_field_setting( $field, array( + 'label' => __('Off Text','acf'), + 'instructions' => __('Text shown when inactive','acf'), + 'type' => 'text', + 'name' => 'ui_off_text', + 'placeholder' => __('No', 'acf'), + 'conditions' => array( + 'field' => 'ui', + 'operator' => '==', + 'value' => 1 + ) + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + return empty($value) ? false : true; + + } + + + /* + * validate_value + * + * description + * + * @type function + * @date 11/02/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_value( $valid, $value, $field, $input ){ + + // bail early if not required + if( ! $field['required'] ) { + + return $valid; + + } + + + // value may be '0' + if( !$value ) { + + return false; + + } + + + // return + return $valid; + + } + + + /* + * translate_field + * + * This function will translate field settings + * + * @type function + * @date 8/03/2016 + * @since 5.3.2 + * + * @param $field (array) + * @return $field + */ + + function translate_field( $field ) { + + // translate + $field['message'] = acf_translate( $field['message'] ); + $field['ui_on_text'] = acf_translate( $field['ui_on_text'] ); + $field['ui_off_text'] = acf_translate( $field['ui_off_text'] ); + + + // return + return $field; + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_true_false' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-url.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-url.php new file mode 100644 index 0000000..aac378e --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-url.php @@ -0,0 +1,169 @@ +name = 'url'; + $this->label = __("Url",'acf'); + $this->defaults = array( + 'default_value' => '', + 'placeholder' => '', + ); + + } + + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // vars + $atts = array(); + $keys = array( 'type', 'id', 'class', 'name', 'value', 'placeholder', 'pattern' ); + $keys2 = array( 'readonly', 'disabled', 'required' ); + $html = ''; + + + // atts (value="123") + foreach( $keys as $k ) { + if( isset($field[ $k ]) ) $atts[ $k ] = $field[ $k ]; + } + + + // atts2 (disabled="disabled") + foreach( $keys2 as $k ) { + if( !empty($field[ $k ]) ) $atts[ $k ] = $k; + } + + + // remove empty atts + $atts = acf_clean_atts( $atts ); + + + // render + $html .= '
                          '; + $html .= '' . acf_get_text_input( $atts ) ; + $html .= '
                          '; + + + // return + echo $html; + + } + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field_settings( $field ) { + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Default Value','acf'), + 'instructions' => __('Appears when creating a new post','acf'), + 'type' => 'text', + 'name' => 'default_value', + )); + + + // placeholder + acf_render_field_setting( $field, array( + 'label' => __('Placeholder Text','acf'), + 'instructions' => __('Appears within the input','acf'), + 'type' => 'text', + 'name' => 'placeholder', + )); + + } + + + /* + * validate_value + * + * description + * + * @type function + * @date 11/02/2014 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_value( $valid, $value, $field, $input ){ + + // bail early if empty + if( empty($value) ) { + + return $valid; + + } + + + if( strpos($value, '://') !== false ) { + + // url + + } elseif( strpos($value, '//') === 0 ) { + + // protocol relative url + + } else { + + $valid = __('Value must be a valid URL', 'acf'); + + } + + + // return + return $valid; + + } + +} + + +// initialize +acf_register_field_type( 'acf_field_url' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-user.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-user.php new file mode 100644 index 0000000..46b0808 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-user.php @@ -0,0 +1,583 @@ +name = 'user'; + $this->label = __("User",'acf'); + $this->category = 'relational'; + $this->defaults = array( + 'role' => '', + 'multiple' => 0, + 'allow_null' => 0, + 'return_format' => 'array', + ); + + + // extra + add_action('wp_ajax_acf/fields/user/query', array($this, 'ajax_query')); + add_action('wp_ajax_nopriv_acf/fields/user/query', array($this, 'ajax_query')); + + } + + + /* + * ajax_query + * + * description + * + * @type function + * @date 24/10/13 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function ajax_query() { + + // validate + if( !acf_verify_ajax() ) die(); + + + // get choices + $response = $this->get_ajax_query( $_POST ); + + + // return + acf_send_ajax_results($response); + + } + + + /* + * get_ajax_query + * + * This function will return an array of data formatted for use in a select2 AJAX response + * + * @type function + * @date 15/10/2014 + * @since 5.0.9 + * + * @param $options (array) + * @return (array) + */ + + function get_ajax_query( $options = array() ) { + + // defaults + $options = acf_parse_args($options, array( + 'post_id' => 0, + 's' => '', + 'field_key' => '', + 'paged' => 1 + )); + + + // load field + $field = acf_get_field( $options['field_key'] ); + if( !$field ) return false; + + + // vars + $results = array(); + $args = array(); + $s = false; + $is_search = false; + + + // paged + $args['users_per_page'] = 20; + $args['paged'] = $options['paged']; + + + // search + if( $options['s'] !== '' ) { + + // strip slashes (search may be integer) + $s = wp_unslash( strval($options['s']) ); + + + // update vars + $args['s'] = $s; + $is_search = true; + + } + + + // role + if( !empty($field['role']) ) { + + $args['role'] = acf_get_array( $field['role'] ); + + } + + + // search + if( $is_search ) { + + // append to $args + $args['search'] = '*' . $options['s'] . '*'; + + + // add reference + $this->field = $field; + + + // add filter to modify search colums + add_filter('user_search_columns', array($this, 'user_search_columns'), 10, 3); + + } + + + // filters + $args = apply_filters("acf/fields/user/query", $args, $field, $options['post_id']); + $args = apply_filters("acf/fields/user/query/name={$field['_name']}", $args, $field, $options['post_id']); + $args = apply_filters("acf/fields/user/query/key={$field['key']}", $args, $field, $options['post_id']); + + + // get users + $groups = acf_get_grouped_users( $args ); + + + // loop + if( !empty($groups) ) { + + foreach( array_keys($groups) as $group_title ) { + + // vars + $users = acf_extract_var( $groups, $group_title ); + $data = array( + 'text' => $group_title, + 'children' => array() + ); + + + // append users + foreach( array_keys($users) as $user_id ) { + + $users[ $user_id ] = $this->get_result( $users[ $user_id ], $field, $options['post_id'] ); + + }; + + + // order by search + if( $is_search && empty($args['orderby']) ) { + + $users = acf_order_by_search( $users, $args['s'] ); + + } + + + // append to $data + foreach( $users as $id => $title ) { + + $data['children'][] = array( + 'id' => $id, + 'text' => $title + ); + + } + + + // append to $r + $results[] = $data; + + } + + // optgroup or single + if( !empty($args['role']) && count($args['role']) == 1 ) { + $results = $results[0]['children']; + } + } + + + // vars + $response = array( + 'results' => $results, + 'limit' => $args['users_per_page'] + ); + + + // return + return $response; + + } + + + + /* + * get_result + * + * This function returns the HTML for a result + * + * @type function + * @date 1/11/2013 + * @since 5.0.0 + * + * @param $post (object) + * @param $field (array) + * @param $post_id (int) the post_id to which this value is saved to + * @return (string) + */ + + function get_result( $user, $field, $post_id = 0 ) { + + // get post_id + if( !$post_id ) $post_id = acf_get_form_data('post_id'); + + + // vars + $result = $user->user_login; + + + // append name + if( $user->first_name ) { + + $result .= ' (' . $user->first_name; + + if( $user->last_name ) { + + $result .= ' ' . $user->last_name; + + } + + $result .= ')'; + + } + + + // filters + $result = apply_filters("acf/fields/user/result", $result, $user, $field, $post_id); + $result = apply_filters("acf/fields/user/result/name={$field['_name']}", $result, $user, $field, $post_id); + $result = apply_filters("acf/fields/user/result/key={$field['key']}", $result, $user, $field, $post_id); + + + // return + return $result; + + } + + + /* + * user_search_columns + * + * This function will modify the columns which the user AJAX search looks in + * + * @type function + * @date 17/06/2014 + * @since 5.0.0 + * + * @param $columns (array) + * @return $columns + */ + + function user_search_columns( $columns, $search, $WP_User_Query ) { + + // bail early if no field + if( empty($this->field) ) { + + return $columns; + + } + + + // vars + $field = $this->field; + + + // filter for 3rd party customization + $columns = apply_filters("acf/fields/user/search_columns", $columns, $search, $WP_User_Query, $field); + $columns = apply_filters("acf/fields/user/search_columns/name={$field['_name']}", $columns, $search, $WP_User_Query, $field); + $columns = apply_filters("acf/fields/user/search_columns/key={$field['key']}", $columns, $search, $WP_User_Query, $field); + + + // return + return $columns; + + } + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field( $field ) { + + // Change Field into a select. + $field['type'] = 'select'; + $field['ui'] = 1; + $field['ajax'] = 1; + $field['choices'] = array(); + + // Populate choices. + if( $field['value'] ) { + + // Clean value into an array of IDs. + $user_ids = array_map('intval', acf_array($field['value'])); + + // Find users in database (ensures all results are real). + $users = acf_get_users(array( + 'include' => $user_ids + )); + + // Append. + if( $users ) { + foreach( $users as $user ) { + $field['choices'][ $user->ID ] = $this->get_result( $user, $field ); + } + } + } + + // Render. + acf_render_field( $field ); + } + + + /* + * render_field_settings() + * + * Create extra options for your field. This is rendered when editing a field. + * The value of $field['name'] can be used (like bellow) to save extra data to the $field + * + * @type action + * @since 3.6 + * @date 23/01/13 + * + * @param $field - an array holding all the field's data + */ + + function render_field_settings( $field ) { + + acf_render_field_setting( $field, array( + 'label' => __('Filter by role','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'role', + 'choices' => acf_get_pretty_user_roles(), + 'multiple' => 1, + 'ui' => 1, + 'allow_null' => 1, + 'placeholder' => __("All user roles",'acf'), + )); + + + + // allow_null + acf_render_field_setting( $field, array( + 'label' => __('Allow Null?','acf'), + 'instructions' => '', + 'name' => 'allow_null', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // multiple + acf_render_field_setting( $field, array( + 'label' => __('Select multiple values?','acf'), + 'instructions' => '', + 'name' => 'multiple', + 'type' => 'true_false', + 'ui' => 1, + )); + + // return_format + acf_render_field_setting( $field, array( + 'label' => __('Return Format','acf'), + 'instructions' => '', + 'type' => 'radio', + 'name' => 'return_format', + 'choices' => array( + 'array' => __("User Array",'acf'), + 'object' => __("User Object",'acf'), + 'id' => __("User ID",'acf'), + ), + 'layout' => 'horizontal', + )); + + + } + + + /* + * update_value() + * + * This filter is appied to the $value before it is updated in the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value - the value which will be saved in the database + * @param $post_id - the $post_id of which the value will be saved + * @param $field - the field array holding all the field options + * + * @return $value - the modified value + */ + + function update_value( $value, $post_id, $field ) { + + // Bail early if no value. + if( empty($value) ) { + return $value; + } + + // Format array of values. + // - ensure each value is an id. + // - Parse each id as string for SQL LIKE queries. + if( acf_is_sequential_array($value) ) { + $value = array_map('acf_idval', $value); + $value = array_map('strval', $value); + + // Parse single value for id. + } else { + $value = acf_idval( $value ); + } + + // Return value. + return $value; + } + + + /* + * load_value() + * + * This filter is applied to the $value after it is loaded from the db + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value found in the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * @return $value + */ + + function load_value( $value, $post_id, $field ) { + + // ACF4 null + if( $value === 'null' ) { + + return false; + + } + + + // return + return $value; + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // Bail early if no value. + if( !$value ) { + return false; + } + + // Clean value into an array of IDs. + $user_ids = array_map('intval', acf_array($value)); + + // Find users in database (ensures all results are real). + $users = acf_get_users(array( + 'include' => $user_ids + )); + + // Bail early if no users found. + if( !$users ) { + return false; + } + + // Format values using field settings. + $value = array(); + foreach( $users as $user ) { + + // Return object. + if( $field['return_format'] == 'object' ) { + $item = $user; + + // Return array. + } elseif( $field['return_format'] == 'array' ) { + $item = array( + 'ID' => $user->ID, + 'user_firstname' => $user->user_firstname, + 'user_lastname' => $user->user_lastname, + 'nickname' => $user->nickname, + 'user_nicename' => $user->user_nicename, + 'display_name' => $user->display_name, + 'user_email' => $user->user_email, + 'user_url' => $user->user_url, + 'user_registered' => $user->user_registered, + 'user_description' => $user->user_description, + 'user_avatar' => get_avatar( $user->ID ), + ); + + // Return ID. + } else { + $item = $user->ID; + } + + // Append item + $value[] = $item; + } + + // Convert to single. + if( !$field['multiple'] ) { + $value = array_shift( $value ); + } + + // Return. + return $value; + } +} + + +// initialize +acf_register_field_type( 'acf_field_user' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-wysiwyg.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-wysiwyg.php new file mode 100644 index 0000000..71a0c5c --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field-wysiwyg.php @@ -0,0 +1,489 @@ +name = 'wysiwyg'; + $this->label = __("Wysiwyg Editor",'acf'); + $this->category = 'content'; + $this->defaults = array( + 'tabs' => 'all', + 'toolbar' => 'full', + 'media_upload' => 1, + 'default_value' => '', + 'delay' => 0 + ); + + + // add acf_the_content filters + $this->add_filters(); + + // actions + add_action('acf/enqueue_uploader', array($this, 'acf_enqueue_uploader')); + } + + + /* + * add_filters + * + * This function will add filters to 'acf_the_content' + * + * @type function + * @date 20/09/2016 + * @since 5.4.0 + * + * @param n/a + * @return n/a + */ + + function add_filters() { + + // wp-includes/class-wp-embed.php + if( !empty($GLOBALS['wp_embed']) ) { + + add_filter( 'acf_the_content', array( $GLOBALS['wp_embed'], 'run_shortcode' ), 8 ); + add_filter( 'acf_the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 ); + + } + + + // wp-includes/default-filters.php + add_filter( 'acf_the_content', 'capital_P_dangit', 11 ); + add_filter( 'acf_the_content', 'wptexturize' ); + add_filter( 'acf_the_content', 'convert_smilies', 20 ); + + // Removed in 4.4 + if( acf_version_compare('wp', '<', '4.4') ) { + add_filter( 'acf_the_content', 'convert_chars' ); + } + + add_filter( 'acf_the_content', 'wpautop' ); + add_filter( 'acf_the_content', 'shortcode_unautop' ); + + + // should only be for the_content (causes double image on attachment page) + //add_filter( 'acf_the_content', 'prepend_attachment' ); + + + // Added in 4.4 + if( function_exists('wp_make_content_images_responsive') ) { + add_filter( 'acf_the_content', 'wp_make_content_images_responsive' ); + } + + add_filter( 'acf_the_content', 'do_shortcode', 11); + + } + + + /* + * get_toolbars + * + * This function will return an array of toolbars for the WYSIWYG field + * + * @type function + * @date 18/04/2014 + * @since 5.0.0 + * + * @param n/a + * @return (array) + */ + + function get_toolbars() { + + // vars + $editor_id = 'acf_content'; + $toolbars = array(); + + + // mce buttons (Full) + $mce_buttons = array( 'formatselect', 'bold', 'italic', 'bullist', 'numlist', 'blockquote', 'alignleft', 'aligncenter', 'alignright', 'link', 'wp_more', 'spellchecker', 'fullscreen', 'wp_adv' ); + $mce_buttons_2 = array( 'strikethrough', 'hr', 'forecolor', 'pastetext', 'removeformat', 'charmap', 'outdent', 'indent', 'undo', 'redo', 'wp_help' ); + + // mce buttons (Basic) + $teeny_mce_buttons = array('bold', 'italic', 'underline', 'blockquote', 'strikethrough', 'bullist', 'numlist', 'alignleft', 'aligncenter', 'alignright', 'undo', 'redo', 'link', 'fullscreen'); + + + // WP < 4.7 + if( acf_version_compare('wp', '<', '4.7') ) { + + $mce_buttons = array( 'bold', 'italic', 'strikethrough', 'bullist', 'numlist', 'blockquote', 'hr', 'alignleft', 'aligncenter', 'alignright', 'link', 'unlink', 'wp_more', 'spellchecker', 'fullscreen', 'wp_adv' ); + $mce_buttons_2 = array( 'formatselect', 'underline', 'alignjustify', 'forecolor', 'pastetext', 'removeformat', 'charmap', 'outdent', 'indent', 'undo', 'redo', 'wp_help' ); + } + + + // Full + $toolbars['Full'] = array( + 1 => apply_filters('mce_buttons', $mce_buttons, $editor_id), + 2 => apply_filters('mce_buttons_2', $mce_buttons_2, $editor_id), + 3 => apply_filters('mce_buttons_3', array(), $editor_id), + 4 => apply_filters('mce_buttons_4', array(), $editor_id) + ); + + + // Basic + $toolbars['Basic'] = array( + 1 => apply_filters('teeny_mce_buttons', $teeny_mce_buttons, $editor_id) + ); + + + // Filter for 3rd party + $toolbars = apply_filters( 'acf/fields/wysiwyg/toolbars', $toolbars ); + + + // return + return $toolbars; + + } + + + /* + * acf_enqueue_uploader + * + * Registers toolbars data for the WYSIWYG field. + * + * @type function + * @date 16/12/2015 + * @since 5.3.2 + * + * @param void + * @return void + */ + + function acf_enqueue_uploader() { + + // vars + $data = array(); + $toolbars = $this->get_toolbars(); + + // loop + if( $toolbars ) { + foreach( $toolbars as $label => $rows ) { + + // vars + $key = $label; + $key = sanitize_title( $key ); + $key = str_replace('-', '_', $key); + + + // append + $data[ $key ] = array(); + + if( $rows ) { + foreach( $rows as $i => $row ) { + $data[ $key ][ $i ] = implode(',', $row); + } + } + }} + + // localize + acf_localize_data(array( + 'toolbars' => $data + )); + } + + /* + * render_field() + * + * Create the HTML interface for your field + * + * @param $field - an array holding all the field's data + * + * @type action + * @since 3.6 + * @date 23/01/13 + */ + + function render_field( $field ) { + + // enqueue + acf_enqueue_uploader(); + + + // vars + $id = uniqid('acf-editor-'); + $default_editor = 'html'; + $show_tabs = true; + $button = ''; + + + // get height + $height = acf_get_user_setting('wysiwyg_height', 300); + $height = max( $height, 300 ); // minimum height is 300 + + + // detect mode + if( !user_can_richedit() ) { + + $show_tabs = false; + + } elseif( $field['tabs'] == 'visual' ) { + + // case: visual tab only + $default_editor = 'tinymce'; + $show_tabs = false; + + } elseif( $field['tabs'] == 'text' ) { + + // case: text tab only + $show_tabs = false; + + } elseif( wp_default_editor() == 'tinymce' ) { + + // case: both tabs + $default_editor = 'tinymce'; + + } + + + // must be logged in tp upload + if( !current_user_can('upload_files') ) { + + $field['media_upload'] = 0; + + } + + + // mode + $switch_class = ($default_editor === 'html') ? 'html-active' : 'tmce-active'; + + + // filter value for editor + remove_filter( 'acf_the_editor_content', 'format_for_editor', 10, 2 ); + remove_filter( 'acf_the_editor_content', 'wp_htmledit_pre', 10, 1 ); + remove_filter( 'acf_the_editor_content', 'wp_richedit_pre', 10, 1 ); + + + // WP 4.3 + if( acf_version_compare('wp', '>=', '4.3') ) { + + add_filter( 'acf_the_editor_content', 'format_for_editor', 10, 2 ); + + $button = 'data-wp-editor-id="' . $id . '"'; + + // WP < 4.3 + } else { + + $function = ($default_editor === 'html') ? 'wp_htmledit_pre' : 'wp_richedit_pre'; + + add_filter('acf_the_editor_content', $function, 10, 1); + + $button = 'onclick="switchEditors.switchto(this);"'; + + } + + + // filter + $field['value'] = apply_filters( 'acf_the_editor_content', $field['value'], $default_editor ); + + + // attr + $wrap = array( + 'id' => 'wp-' . $id . '-wrap', + 'class' => 'acf-editor-wrap wp-core-ui wp-editor-wrap ' . $switch_class, + 'data-toolbar' => $field['toolbar'] + ); + + + // delay + if( $field['delay'] ) { + $wrap['class'] .= ' delay'; + } + + + // vars + $textarea = acf_get_textarea_input(array( + 'id' => $id, + 'class' => 'wp-editor-area', + 'name' => $field['name'], + 'style' => $height ? "height:{$height}px;" : '', + 'value' => '%s' + )); + + ?> +
                          > +
                          + +
                          + +
                          + + +
                          + + +
                          + +
                          +
                          + +
                          + + +
                          +
                          + get_toolbars(); + $choices = array(); + + if( !empty($toolbars) ) { + + foreach( $toolbars as $k => $v ) { + + $label = $k; + $name = sanitize_title( $label ); + $name = str_replace('-', '_', $name); + + $choices[ $name ] = $label; + } + } + + + // default_value + acf_render_field_setting( $field, array( + 'label' => __('Default Value','acf'), + 'instructions' => __('Appears when creating a new post','acf'), + 'type' => 'textarea', + 'name' => 'default_value', + )); + + + // tabs + acf_render_field_setting( $field, array( + 'label' => __('Tabs','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'tabs', + 'choices' => array( + 'all' => __("Visual & Text",'acf'), + 'visual' => __("Visual Only",'acf'), + 'text' => __("Text Only",'acf'), + ) + )); + + + // toolbar + acf_render_field_setting( $field, array( + 'label' => __('Toolbar','acf'), + 'instructions' => '', + 'type' => 'select', + 'name' => 'toolbar', + 'choices' => $choices, + 'conditions' => array( + 'field' => 'tabs', + 'operator' => '!=', + 'value' => 'text' + ) + )); + + + // media_upload + acf_render_field_setting( $field, array( + 'label' => __('Show Media Upload Buttons?','acf'), + 'instructions' => '', + 'name' => 'media_upload', + 'type' => 'true_false', + 'ui' => 1, + )); + + + // delay + acf_render_field_setting( $field, array( + 'label' => __('Delay initialization?','acf'), + 'instructions' => __('TinyMCE will not be initalized until field is clicked','acf'), + 'name' => 'delay', + 'type' => 'true_false', + 'ui' => 1, + 'conditions' => array( + 'field' => 'tabs', + 'operator' => '!=', + 'value' => 'text' + ) + )); + + } + + + /* + * format_value() + * + * This filter is appied to the $value after it is loaded from the db and before it is returned to the template + * + * @type filter + * @since 3.6 + * @date 23/01/13 + * + * @param $value (mixed) the value which was loaded from the database + * @param $post_id (mixed) the $post_id from which the value was loaded + * @param $field (array) the field array holding all the field options + * + * @return $value (mixed) the modified value + */ + + function format_value( $value, $post_id, $field ) { + + // bail early if no value + if( empty($value) ) { + + return $value; + + } + + + // apply filters + $value = apply_filters( 'acf_the_content', $value ); + + + // follow the_content function in /wp-includes/post-template.php + $value = str_replace(']]>', ']]>', $value); + + + return $value; + } + +} + + +// initialize +acf_register_field_type( 'acf_field_wysiwyg' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field.php b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field.php new file mode 100755 index 0000000..117f019 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/fields/class-acf-field.php @@ -0,0 +1,277 @@ +initialize(); + + + // register info + acf_register_field_type_info(array( + 'label' => $this->label, + 'name' => $this->name, + 'category' => $this->category, + 'public' => $this->public + )); + + + // value + $this->add_field_filter('acf/load_value', array($this, 'load_value'), 10, 3); + $this->add_field_filter('acf/update_value', array($this, 'update_value'), 10, 3); + $this->add_field_filter('acf/format_value', array($this, 'format_value'), 10, 3); + $this->add_field_filter('acf/validate_value', array($this, 'validate_value'), 10, 4); + $this->add_field_action('acf/delete_value', array($this, 'delete_value'), 10, 3); + + + // field + $this->add_field_filter('acf/validate_field', array($this, 'validate_field'), 10, 1); + $this->add_field_filter('acf/load_field', array($this, 'load_field'), 10, 1); + $this->add_field_filter('acf/update_field', array($this, 'update_field'), 10, 1); + $this->add_field_filter('acf/duplicate_field', array($this, 'duplicate_field'), 10, 1); + $this->add_field_action('acf/delete_field', array($this, 'delete_field'), 10, 1); + $this->add_field_action('acf/render_field', array($this, 'render_field'), 9, 1); + $this->add_field_action('acf/render_field_settings', array($this, 'render_field_settings'), 9, 1); + $this->add_field_filter('acf/prepare_field', array($this, 'prepare_field'), 10, 1); + $this->add_field_filter('acf/translate_field', array($this, 'translate_field'), 10, 1); + + + // input actions + $this->add_action("acf/input/admin_enqueue_scripts", array($this, 'input_admin_enqueue_scripts'), 10, 0); + $this->add_action("acf/input/admin_head", array($this, 'input_admin_head'), 10, 0); + $this->add_action("acf/input/form_data", array($this, 'input_form_data'), 10, 1); + $this->add_filter("acf/input/admin_l10n", array($this, 'input_admin_l10n'), 10, 1); + $this->add_action("acf/input/admin_footer", array($this, 'input_admin_footer'), 10, 1); + + + // field group actions + $this->add_action("acf/field_group/admin_enqueue_scripts", array($this, 'field_group_admin_enqueue_scripts'), 10, 0); + $this->add_action("acf/field_group/admin_head", array($this, 'field_group_admin_head'), 10, 0); + $this->add_action("acf/field_group/admin_footer", array($this, 'field_group_admin_footer'), 10, 0); + + } + + + /* + * initialize + * + * This function will initialize the field type + * + * @type function + * @date 27/6/17 + * @since 5.6.0 + * + * @param n/a + * @return n/a + */ + + function initialize() { + + /* do nothing */ + + } + + + /* + * add_filter + * + * This function checks if the function is_callable before adding the filter + * + * @type function + * @date 5/03/2014 + * @since 5.0.0 + * + * @param $tag (string) + * @param $function_to_add (string) + * @param $priority (int) + * @param $accepted_args (int) + * @return n/a + */ + + function add_filter( $tag = '', $function_to_add = '', $priority = 10, $accepted_args = 1 ) { + + // bail early if no callable + if( !is_callable($function_to_add) ) return; + + + // add + add_filter( $tag, $function_to_add, $priority, $accepted_args ); + + } + + + /* + * add_field_filter + * + * This function will add a field type specific filter + * + * @type function + * @date 29/09/2016 + * @since 5.4.0 + * + * @param $tag (string) + * @param $function_to_add (string) + * @param $priority (int) + * @param $accepted_args (int) + * @return n/a + */ + + function add_field_filter( $tag = '', $function_to_add = '', $priority = 10, $accepted_args = 1 ) { + + // append + $tag .= '/type=' . $this->name; + + + // add + $this->add_filter( $tag, $function_to_add, $priority, $accepted_args ); + + } + + + /* + * add_action + * + * This function checks if the function is_callable before adding the action + * + * @type function + * @date 5/03/2014 + * @since 5.0.0 + * + * @param $tag (string) + * @param $function_to_add (string) + * @param $priority (int) + * @param $accepted_args (int) + * @return n/a + */ + + function add_action( $tag = '', $function_to_add = '', $priority = 10, $accepted_args = 1 ) { + + // bail early if no callable + if( !is_callable($function_to_add) ) return; + + + // add + add_action( $tag, $function_to_add, $priority, $accepted_args ); + + } + + + /* + * add_field_action + * + * This function will add a field type specific filter + * + * @type function + * @date 29/09/2016 + * @since 5.4.0 + * + * @param $tag (string) + * @param $function_to_add (string) + * @param $priority (int) + * @param $accepted_args (int) + * @return n/a + */ + + function add_field_action( $tag = '', $function_to_add = '', $priority = 10, $accepted_args = 1 ) { + + // append + $tag .= '/type=' . $this->name; + + + // add + $this->add_action( $tag, $function_to_add, $priority, $accepted_args ); + + } + + + /* + * validate_field + * + * This function will append default settings to a field + * + * @type filter ("acf/validate_field/type={$this->name}") + * @since 3.6 + * @date 23/01/13 + * + * @param $field (array) + * @return $field (array) + */ + + function validate_field( $field ) { + + // bail early if no defaults + if( !is_array($this->defaults) ) return $field; + + + // merge in defaults but keep order of $field keys + foreach( $this->defaults as $k => $v ) { + + if( !isset($field[ $k ]) ) $field[ $k ] = $v; + + } + + + // return + return $field; + + } + + + /* + * admin_l10n + * + * This function will append l10n text translations to an array which is later passed to JS + * + * @type filter ("acf/input/admin_l10n") + * @since 3.6 + * @date 23/01/13 + * + * @param $l10n (array) + * @return $l10n (array) + */ + + function input_admin_l10n( $l10n ) { + + // bail early if no defaults + if( empty($this->l10n) ) return $l10n; + + + // append + $l10n[ $this->name ] = $this->l10n; + + + // return + return $l10n; + + } + +} + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-attachment.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-attachment.php new file mode 100644 index 0000000..e3ec790 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-attachment.php @@ -0,0 +1,243 @@ + true, + )); + + // actions + if( acf_is_screen('upload') ) { + add_action('admin_footer', array($this, 'admin_footer'), 0); + } + } + + + /* + * admin_footer + * + * This function will add acf_form_data to the WP 4.0 attachment grid + * + * @type action (admin_footer) + * @date 11/09/2014 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function admin_footer() { + + // render post data + acf_form_data(array( + 'screen' => 'attachment', + 'post_id' => 0, + )); + +?> + +ID; + $el = 'tr'; + $args = array( + 'attachment' => $post_id + ); + + + // get field groups + $field_groups = acf_get_field_groups( $args ); + + + // render + if( !empty($field_groups) ) { + + // get acf_form_data + ob_start(); + + + acf_form_data(array( + 'screen' => 'attachment', + 'post_id' => $post_id, + )); + + + // open + echo ''; + + + // loop + foreach( $field_groups as $field_group ) { + + // load fields + $fields = acf_get_fields( $field_group ); + + + // override instruction placement for modal + if( !$is_page ) { + + $field_group['instruction_placement'] = 'field'; + } + + + // render + acf_render_fields( $fields, $post_id, $el, $field_group['instruction_placement'] ); + + } + + + // close + echo ''; + + + + $html = ob_get_contents(); + + + ob_end_clean(); + + + $form_fields[ 'acf-form-data' ] = array( + 'label' => '', + 'input' => 'html', + 'html' => $html + ); + + } + + + // return + return $form_fields; + + } + + + /* + * save_attachment + * + * description + * + * @type function + * @date 8/10/13 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function save_attachment( $post, $attachment ) { + + // bail early if not valid nonce + if( !acf_verify_nonce('attachment') ) { + return $post; + } + + // bypass validation for ajax + if( acf_is_ajax('save-attachment-compat') ) { + acf_save_post( $post['ID'] ); + + // validate and save + } elseif( acf_validate_save_post(true) ) { + acf_save_post( $post['ID'] ); + } + + // return + return $post; + } + + +} + +new acf_form_attachment(); + +endif; + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-comment.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-comment.php new file mode 100644 index 0000000..b911722 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-comment.php @@ -0,0 +1,353 @@ +validate_page() ) { + + return; + + } + + + // load acf scripts + acf_enqueue_scripts(); + + + // actions + add_action('admin_footer', array($this, 'admin_footer'), 10, 1); + add_action('add_meta_boxes_comment', array($this, 'edit_comment'), 10, 1); + + } + + + /* + * edit_comment + * + * This function is run on the admin comment.php page and will render the ACF fields within custom metaboxes to look native + * + * @type function + * @date 19/10/13 + * @since 5.0.0 + * + * @param $comment (object) + * @return n/a + */ + + function edit_comment( $comment ) { + + // vars + $post_id = "comment_{$comment->comment_ID}"; + + + // get field groups + $field_groups = acf_get_field_groups(array( + 'comment' => get_post_type( $comment->comment_post_ID ) + )); + + + // render + if( !empty($field_groups) ) { + + // render post data + acf_form_data(array( + 'screen' => 'comment', + 'post_id' => $post_id + )); + + + foreach( $field_groups as $field_group ) { + + // load fields + $fields = acf_get_fields( $field_group ); + + + // vars + $o = array( + 'id' => 'acf-'.$field_group['ID'], + 'key' => $field_group['key'], + //'style' => $field_group['style'], + 'label' => $field_group['label_placement'], + 'edit_url' => '', + 'edit_title' => __('Edit field group', 'acf'), + //'visibility' => $visibility + ); + + + // edit_url + if( $field_group['ID'] && acf_current_user_can_admin() ) { + + $o['edit_url'] = admin_url('post.php?post=' . $field_group['ID'] . '&action=edit'); + + } + + ?> +
                          +

                          +
                          + + +
                          +
                          + $post->post_type + )); + + + // bail early if no field groups + if( !$field_groups ) return $html; + + + // enqueue scripts + acf_enqueue_scripts(); + + + // ob + ob_start(); + + // render post data + acf_form_data(array( + 'screen' => 'comment', + 'post_id' => $post_id + )); + + echo '
                          '; + + foreach( $field_groups as $field_group ) { + + $fields = acf_get_fields( $field_group ); + + acf_render_fields( $fields, $post_id, 'p', $field_group['instruction_placement'] ); + + } + + echo '
                          '; + + + // append + $html .= ob_get_contents(); + ob_end_clean(); + + + // return + return $html; + + } + + + /* + * save_comment + * + * This function will save the comment data + * + * @type function + * @date 19/10/13 + * @since 5.0.0 + * + * @param comment_id (int) + * @return n/a + */ + + function save_comment( $comment_id ) { + + // bail early if not valid nonce + if( !acf_verify_nonce('comment') ) { + return $comment_id; + } + + + // kses + if( isset($_POST['acf']) ) { + $_POST['acf'] = wp_kses_post_deep( $_POST['acf'] ); + } + + + // validate and save + if( acf_validate_save_post(true) ) { + acf_save_post( "comment_{$comment_id}" ); + } + + } + + + /* + * admin_footer + * + * description + * + * @type function + * @date 27/03/2015 + * @since 5.1.5 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function admin_footer() { + +?> + + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-customizer.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-customizer.php new file mode 100644 index 0000000..5f32ad8 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-customizer.php @@ -0,0 +1,478 @@ +preview_values = array(); + $this->preview_fields = array(); + $this->preview_errors = array(); + + + // actions + add_action('customize_controls_init', array($this, 'customize_controls_init')); + add_action('customize_preview_init', array($this, 'customize_preview_init'), 1, 1); + add_action('customize_save', array($this, 'customize_save'), 1, 1); + + + // save + add_filter('widget_update_callback', array($this, 'save_widget'), 10, 4); + + } + + + /* + * admin_enqueue_scripts + * + * This action is run after post query but before any admin script / head actions. + * It is a good place to register all actions. + * + * @type action (admin_enqueue_scripts) + * @date 26/01/13 + * @since 3.6.0 + * + * @param N/A + * @return N/A + */ + + function customize_controls_init() { + + // load acf scripts + acf_enqueue_scripts(array( + 'context' => 'customize_controls' + )); + + + // actions + add_action('acf/input/admin_footer', array($this, 'admin_footer'), 1); + + } + + + /* + * save_widget + * + * This function will hook into the widget update filter and save ACF data + * + * @type function + * @date 27/05/2015 + * @since 5.2.3 + * + * @param $instance (array) widget settings + * @param $new_instance (array) widget settings + * @param $old_instance (array) widget settings + * @param $widget (object) widget info + * @return $instance + */ + + function save_widget( $instance, $new_instance, $old_instance, $widget ) { + + // bail ealry if not valid (customize + acf values + nonce) + if( !isset($_POST['wp_customize']) || !isset($new_instance['acf']) || !acf_verify_nonce('widget') ) return $instance; + + + // vars + $data = array( + 'post_id' => "widget_{$widget->id}", + 'values' => array(), + 'fields' => array() + ); + + + // append values + $data['values'] = $new_instance['acf']; + + + // append fields (name => key relationship) - used later in 'acf/get_field_reference' for customizer previews + foreach( $data['values'] as $k => $v ) { + + // get field + $field = acf_get_field( $k ); + + + // continue if no field + if( !$field ) continue; + + + // update + $data['fields'][ $field['name'] ] = $field['key']; + + } + + + // append data to instance + $instance['acf'] = $data; + + + + // return + return $instance; + + } + + + /* + * settings + * + * This function will return an array of cutomizer settings that include ACF data + * similar to `$customizer->settings();` + * + * @type function + * @date 22/03/2016 + * @since 5.3.2 + * + * @param $customizer (object) + * @return $value (mixed) + */ + + function settings( $customizer ) { + + // vars + $data = array(); + $settings = $customizer->settings(); + + + // bail ealry if no settings + if( empty($settings) ) return false; + + + // loop over settings + foreach( $settings as $setting ) { + + // vars + $id = $setting->id; + + + // verify settings type + if( substr($id, 0, 6) == 'widget' || substr($id, 0, 7) == 'nav_menu' ) { + // allow + } else { + continue; + } + + + // get value + $value = $setting->post_value(); + + + // bail early if no acf + if( !is_array($value) || !isset($value['acf']) ) continue; + + + // set data + $setting->acf = $value['acf']; + + + // append + $data[] = $setting; + + } + + + // bail ealry if no settings + if( empty($data) ) return false; + + + // return + return $data; + + } + + + /* + * customize_preview_init + * + * This function is called when customizer preview is initialized + * + * @type function + * @date 22/03/2016 + * @since 5.3.2 + * + * @param $customizer (object) + * @return n/a + */ + + function customize_preview_init( $customizer ) { + + // get customizer settings (widgets) + $settings = $this->settings( $customizer ); + + + // bail ealry if no settings + if( empty($settings) ) return; + + + // append values + foreach( $settings as $setting ) { + + // get acf data + $data = $setting->acf; + + + // append acf_value to preview_values + $this->preview_values[ $data['post_id'] ] = $data['values']; + $this->preview_fields[ $data['post_id'] ] = $data['fields']; + + } + + + // bail ealry if no preview_values + if( empty($this->preview_values) ) return; + + + // add filters + add_filter('acf/pre_load_value', array($this, 'pre_load_value'), 10, 3); + add_filter('acf/pre_load_reference', array($this, 'pre_load_reference'), 10, 3); + + } + + /** + * pre_load_value + * + * Used to inject preview value + * + * @date 2/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function pre_load_value( $value, $post_id, $field ) { + + // check + if( isset($this->preview_values[ $post_id ][ $field['key'] ]) ) { + return $this->preview_values[ $post_id ][ $field['key'] ]; + } + + // return + return $value; + } + + /** + * pre_load_reference + * + * Used to inject preview value + * + * @date 2/2/18 + * @since 5.6.5 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function pre_load_reference( $field_key, $field_name, $post_id ) { + + // check + if( isset($this->preview_fields[ $post_id ][ $field_name ]) ) { + return $this->preview_fields[ $post_id ][ $field_name ]; + } + + // return + return $field_key; + } + + + /* + * customize_save + * + * This function is called when customizer saves a widget. + * Normally, the widget_update_callback filter would be used, but the customizer disables this and runs a custom action + * class-customizer-settings.php will save the widget data via the function set_root_value which uses update_option + * + * @type function + * @date 22/03/2016 + * @since 5.3.2 + * + * @param $customizer (object) + * @return n/a + */ + + function customize_save( $customizer ) { + + // get customizer settings (widgets) + $settings = $this->settings( $customizer ); + + + // bail ealry if no settings + if( empty($settings) ) return; + + + // append values + foreach( $settings as $setting ) { + + // get acf data + $data = $setting->acf; + + + // save acf data + acf_save_post( $data['post_id'], $data['values'] ); + + + // remove [acf] data from saved widget array + $id_data = $setting->id_data(); + add_filter('pre_update_option_' . $id_data['base'], array($this, 'pre_update_option'), 10, 3); + + } + + } + + + /* + * pre_update_option + * + * this function will remove the [acf] data from widget insance + * + * @type function + * @date 22/03/2016 + * @since 5.3.2 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function pre_update_option( $value, $option, $old_value ) { + + // bail ealry if no value + if( empty($value) ) return $value; + + + // loop over widgets + // WP saves all widgets (of the same type) as an array of widgets + foreach( $value as $i => $widget ) { + + // bail ealry if no acf + if( !isset($widget['acf']) ) continue; + + + // remove widget + unset($value[ $i ]['acf']); + + } + + + // return + return $value; + + } + + + /* + * admin_footer + * + * This function will add some custom HTML to the footer of the edit page + * + * @type function + * @date 11/06/2014 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function admin_footer() { + +?> + + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-front.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-front.php new file mode 100644 index 0000000..3c25cf9 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-front.php @@ -0,0 +1,707 @@ +fields = array( + + '_post_title' => array( + 'prefix' => 'acf', + 'name' => '_post_title', + 'key' => '_post_title', + 'label' => __('Title', 'acf'), + 'type' => 'text', + 'required' => true, + ), + + '_post_content' => array( + 'prefix' => 'acf', + 'name' => '_post_content', + 'key' => '_post_content', + 'label' => __('Content', 'acf'), + 'type' => 'wysiwyg', + ), + + '_validate_email' => array( + 'prefix' => 'acf', + 'name' => '_validate_email', + 'key' => '_validate_email', + 'label' => __('Validate Email', 'acf'), + 'type' => 'text', + 'value' => '', + 'wrapper' => array('style' => 'display:none !important;') + ) + + ); + + + // actions + add_action('acf/validate_save_post', array($this, 'validate_save_post'), 1); + + + // filters + add_filter('acf/pre_save_post', array($this, 'pre_save_post'), 5, 2); + + } + + + /* + * validate_form + * + * description + * + * @type function + * @date 28/2/17 + * @since 5.5.8 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_form( $args ) { + + // defaults + $args = wp_parse_args( $args, array( + 'id' => 'acf-form', + 'post_id' => false, + 'new_post' => false, + 'field_groups' => false, + 'fields' => false, + 'post_title' => false, + 'post_content' => false, + 'form' => true, + 'form_attributes' => array(), + 'return' => add_query_arg( 'updated', 'true', acf_get_current_url() ), + 'html_before_fields' => '', + 'html_after_fields' => '', + 'submit_value' => __("Update", 'acf'), + 'updated_message' => __("Post updated", 'acf'), + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'field_el' => 'div', + 'uploader' => 'wp', + 'honeypot' => true, + 'html_updated_message' => '

                          %s

                          ', // 5.5.10 + 'html_submit_button' => '', // 5.5.10 + 'html_submit_spinner' => '', // 5.5.10 + 'kses' => true // 5.6.5 + )); + + $args['form_attributes'] = wp_parse_args( $args['form_attributes'], array( + 'id' => $args['id'], + 'class' => 'acf-form', + 'action' => '', + 'method' => 'post', + )); + + + // filter post_id + $args['post_id'] = acf_get_valid_post_id( $args['post_id'] ); + + + // new post? + if( $args['post_id'] === 'new_post' ) { + + $args['new_post'] = wp_parse_args( $args['new_post'], array( + 'post_type' => 'post', + 'post_status' => 'draft', + )); + + } + + + // filter + $args = apply_filters('acf/validate_form', $args); + + + // return + return $args; + + } + + + /* + * add_form + * + * description + * + * @type function + * @date 28/2/17 + * @since 5.5.8 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function add_form( $args = array() ) { + + // validate + $args = $this->validate_form( $args ); + + + // append + $this->forms[ $args['id'] ] = $args; + + } + + + /* + * get_form + * + * description + * + * @type function + * @date 28/2/17 + * @since 5.5.8 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function get_form( $id = '' ) { + + // bail early if not set + if( !isset($this->forms[ $id ]) ) return false; + + + // return + return $this->forms[ $id ]; + + } + + + /* + * validate_save_post + * + * This function will validate fields from the above array + * + * @type function + * @date 7/09/2016 + * @since 5.4.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function validate_save_post() { + + // register field if isset in $_POST + foreach( $this->fields as $k => $field ) { + + // bail early if no in $_POST + if( !isset($_POST['acf'][ $k ]) ) continue; + + + // register + acf_add_local_field($field); + + } + + + // honeypot + if( !empty($_POST['acf']['_validate_email']) ) { + + acf_add_validation_error( '', __('Spam Detected', 'acf') ); + + } + + } + + + /* + * pre_save_post + * + * description + * + * @type function + * @date 7/09/2016 + * @since 5.4.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function pre_save_post( $post_id, $form ) { + + // vars + $save = array( + 'ID' => 0 + ); + + + // determine save data + if( is_numeric($post_id) ) { + + // update post + $save['ID'] = $post_id; + + } elseif( $post_id == 'new_post' ) { + + // merge in new post data + $save = array_merge($save, $form['new_post']); + + } else { + + // not post + return $post_id; + + } + + + // save post_title + if( isset($_POST['acf']['_post_title']) ) { + + $save['post_title'] = acf_extract_var($_POST['acf'], '_post_title'); + + } + + + // save post_content + if( isset($_POST['acf']['_post_content']) ) { + + $save['post_content'] = acf_extract_var($_POST['acf'], '_post_content'); + + } + + + // honeypot + if( !empty($_POST['acf']['_validate_email']) ) return false; + + + // validate + if( count($save) == 1 ) { + + return $post_id; + + } + + + // save + if( $save['ID'] ) { + + wp_update_post( $save ); + + } else { + + $post_id = wp_insert_post( $save ); + + } + + + // return + return $post_id; + + } + + + /* + * enqueue + * + * This function will enqueue a form + * + * @type function + * @date 7/09/2016 + * @since 5.4.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function enqueue_form() { + + // check + $this->check_submit_form(); + + + // load acf scripts + acf_enqueue_scripts(); + + } + + + /* + * check_submit_form + * + * This function will maybe submit form data + * + * @type function + * @date 3/3/17 + * @since 5.5.10 + * + * @param n/a + * @return n/a + */ + + function check_submit_form() { + + // verify nonce + if( !acf_verify_nonce('acf_form') ) return; + + + // bail ealry if form not submit + if( empty($_POST['_acf_form']) ) return; + + + // load form + $form = json_decode( acf_decrypt($_POST['_acf_form']), true ); + + + // bail ealry if form is corrupt + if( empty($form) ) return; + + + // kses + if( $form['kses'] && isset($_POST['acf']) ) { + $_POST['acf'] = wp_kses_post_deep( $_POST['acf'] ); + } + + + // validate data + acf_validate_save_post(true); + + + // submit + $this->submit_form( $form ); + + } + + + /* + * submit_form + * + * This function will submit form data + * + * @type function + * @date 3/3/17 + * @since 5.5.10 + * + * @param n/a + * @return n/a + */ + + function submit_form( $form ) { + + // filter + $form = apply_filters('acf/pre_submit_form', $form); + + + // vars + $post_id = acf_maybe_get($form, 'post_id', 0); + + + // add global for backwards compatibility + $GLOBALS['acf_form'] = $form; + + + // allow for custom save + $post_id = apply_filters('acf/pre_save_post', $post_id, $form); + + + // save + acf_save_post( $post_id ); + + + // restore form (potentially modified) + $form = $GLOBALS['acf_form']; + + + // action + do_action('acf/submit_form', $form, $post_id); + + + // vars + $return = acf_maybe_get($form, 'return', ''); + + + // redirect + if( $return ) { + + // update %placeholders% + $return = str_replace('%post_id%', $post_id, $return); + $return = str_replace('%post_url%', get_permalink($post_id), $return); + + + // redirect + wp_redirect( $return ); + exit; + + } + + } + + + /* + * render + * + * description + * + * @type function + * @date 7/09/2016 + * @since 5.4.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function render_form( $args = array() ) { + + // array + if( is_array($args) ) { + + $args = $this->validate_form( $args ); + + // id + } else { + + $args = $this->get_form( $args ); + + } + + + // bail early if no args + if( !$args ) return false; + + + // load values from this post + $post_id = $args['post_id']; + + + // dont load values for 'new_post' + if( $post_id === 'new_post' ) $post_id = false; + + + // register local fields + foreach( $this->fields as $k => $field ) { + + acf_add_local_field($field); + + } + + + // vars + $field_groups = array(); + $fields = array(); + + + // post_title + if( $args['post_title'] ) { + + // load local field + $_post_title = acf_get_field('_post_title'); + $_post_title['value'] = $post_id ? get_post_field('post_title', $post_id) : ''; + + + // append + $fields[] = $_post_title; + + } + + + // post_content + if( $args['post_content'] ) { + + // load local field + $_post_content = acf_get_field('_post_content'); + $_post_content['value'] = $post_id ? get_post_field('post_content', $post_id) : ''; + + + // append + $fields[] = $_post_content; + + } + + + // specific fields + if( $args['fields'] ) { + + foreach( $args['fields'] as $selector ) { + + // append field ($strict = false to allow for better compatibility with field names) + $fields[] = acf_maybe_get_field( $selector, $post_id, false ); + + } + + } elseif( $args['field_groups'] ) { + + foreach( $args['field_groups'] as $selector ) { + + $field_groups[] = acf_get_field_group( $selector ); + + } + + } elseif( $args['post_id'] == 'new_post' ) { + + $field_groups = acf_get_field_groups( $args['new_post'] ); + + } else { + + $field_groups = acf_get_field_groups(array( + 'post_id' => $args['post_id'] + )); + + } + + + //load fields based on field groups + if( !empty($field_groups) ) { + + foreach( $field_groups as $field_group ) { + + $field_group_fields = acf_get_fields( $field_group ); + + if( !empty($field_group_fields) ) { + + foreach( array_keys($field_group_fields) as $i ) { + + $fields[] = acf_extract_var($field_group_fields, $i); + } + + } + + } + + } + + + // honeypot + if( $args['honeypot'] ) { + + $fields[] = acf_get_field('_validate_email'); + + } + + + // updated message + if( !empty($_GET['updated']) && $args['updated_message'] ) { + + printf( $args['html_updated_message'], $args['updated_message'] ); + + } + + + // uploader (always set incase of multiple forms on the page) + acf_update_setting('uploader', $args['uploader']); + + + // display form + if( $args['form'] ): ?> + +
                          > + + 'acf_form', + 'post_id' => $args['post_id'], + 'form' => acf_encrypt(json_encode($args)) + )); + + ?> + +
                          + +
                          + + + +
                          + + + + +
                          + +
                          + form_front = new acf_form_front(); + +endif; // class_exists check + + +/* +* Functions +* +* alias of acf()->form->functions +* +* @type function +* @date 11/06/2014 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + + +function acf_form_head() { + + acf()->form_front->enqueue_form(); + +} + +function acf_form( $args = array() ) { + + acf()->form_front->render_form( $args ); + +} + +function acf_get_form( $id = '' ) { + + acf()->form_front->get_form( $id ); + +} + +function acf_register_form( $args ) { + + acf()->form_front->add_form( $args ); + +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-gutenberg.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-gutenberg.php new file mode 100644 index 0000000..7422409 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-gutenberg.php @@ -0,0 +1,177 @@ +edit_form_after_title(); + } + + /** + * filter_block_editor_meta_boxes + * + * description + * + * @date 5/4/19 + * @since 5.7.14 + * + * @param type $var Description. Default. + * @return type Description. + */ + function filter_block_editor_meta_boxes( $wp_meta_boxes ) { + + // Globals + global $current_screen; + + // Move 'acf_after_title' metaboxes into 'normal' location. + if( isset($wp_meta_boxes[ $current_screen->id ][ 'acf_after_title' ]) ) { + + // Extract locations. + $locations = $wp_meta_boxes[ $current_screen->id ]; + + // Ensure normal location exists. + if( !isset($locations['normal']) ) $locations['normal'] = array(); + if( !isset($locations['normal']['high']) ) $locations['normal']['high'] = array(); + + // Append metaboxes. + foreach( $locations['acf_after_title'] as $priority => $meta_boxes ) { + $locations['normal']['high'] = array_merge( $meta_boxes, $locations['normal']['high'] ); + } + + // Update original data. + $wp_meta_boxes[ $current_screen->id ] = $locations; + unset( $wp_meta_boxes[ $current_screen->id ]['acf_after_title'] ); + + // Avoid conflicts with saved metabox order. + add_filter( 'get_user_option_meta-box-order_' . $current_screen->id, array($this, 'modify_user_option_meta_box_order') ); + } + + // Return + return $wp_meta_boxes; + } + + /** + * modify_user_option_meta_box_order + * + * Filters the `meta-box-order_{$post_type}` value by prepending "acf_after_title" data to "normal". + * Fixes a bug where metaboxes with position "acf_after_title" do not appear in the block editor. + * + * @date 11/7/19 + * @since 5.8.2 + * + * @param array $stored_meta_box_order User's existing meta box order. + * @return array Modified array with meta boxes moved around. + */ + function modify_user_option_meta_box_order( $locations ) { + if( !empty($locations['acf_after_title']) ) { + if( !empty($locations['normal']) ) { + $locations['normal'] = $locations['acf_after_title'] . ',' . $locations['normal']; + } else { + $locations['normal'] = $locations['acf_after_title']; + } + unset($locations['acf_after_title']); + } + return $locations; + } + + /** + * acf_validate_save_post + * + * Ignore errors during the Gutenberg "save metaboxes" AJAX request. + * Allows data to save and prevent UX issues. + * + * @date 16/12/18 + * @since 5.8.0 + * + * @param void + * @return void + */ + function acf_validate_save_post() { + + // Check if current request came from Gutenberg. + if( isset($_GET['meta-box-loader']) ) { + acf_reset_validation_errors(); + } + } +} + +acf_new_instance('ACF_Form_Gutenberg'); + +endif; diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-nav-menu.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-nav-menu.php new file mode 100644 index 0000000..5bdc53e --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-nav-menu.php @@ -0,0 +1,395 @@ + $item->type, + 'nav_menu_item_id' => $item_id, + 'nav_menu_item_depth' => $depth + )); + + // render + if( !empty($field_groups) ) { + + // open + echo '
                          '; + + // loop + foreach( $field_groups as $field_group ) { + + // load fields + $fields = acf_get_fields( $field_group ); + + // bail if not fields + if( empty($fields) ) continue; + + // change prefix + acf_prefix_fields( $fields, $prefix ); + + // render + acf_render_fields( $fields, $item_id, 'div', $field_group['instruction_placement'] ); + } + + // close + echo '
                          '; + + // Trigger append for newly created menu item (via AJAX) + if( acf_is_ajax('add-menu-item') ): ?> + + update_nav_menu_items( $menu_id ); + + } + + + /* + * update_nav_menu_items + * + * description + * + * @type function + * @date 26/5/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function update_nav_menu_items( $menu_id ) { + + // bail ealry if not set + if( empty($_POST['menu-item-acf']) ) return; + + + // loop + foreach( $_POST['menu-item-acf'] as $post_id => $values ) { + + acf_save_post( $post_id, $values ); + + } + + } + + + /** + * wp_get_nav_menu_items + * + * WordPress does not provide an easy way to find the current menu being edited. + * This function listens to when a menu's items are loaded and stores the menu. + * Needed on nav-menus.php page for new menu with no items + * + * @date 23/2/18 + * @since 5.6.9 + * + * @param type $var Description. Default. + * @return type Description. + */ + + function wp_get_nav_menu_items( $items, $menu, $args ) { + acf_set_data('nav_menu_id', $menu->term_id); + return $items; + } + + + /* + * wp_edit_nav_menu_walker + * + * description + * + * @type function + * @date 26/5/17 + * @since 5.6.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function wp_edit_nav_menu_walker( $class, $menu_id = 0 ) { + + // update data (needed for ajax location rules to work) + acf_set_data('nav_menu_id', $menu_id); + + // include walker + if( class_exists('Walker_Nav_Menu_Edit') ) { + acf_include('includes/walkers/class-acf-walker-nav-menu-edit.php'); + } + + // return + return 'ACF_Walker_Nav_Menu_Edit'; + } + + + /* + * acf_validate_save_post + * + * This function will loop over $_POST data and validate + * + * @type action 'acf/validate_save_post' 5 + * @date 7/09/2016 + * @since 5.4.0 + * + * @param n/a + * @return n/a + */ + + function acf_validate_save_post() { + + // bail ealry if not set + if( empty($_POST['menu-item-acf']) ) return; + + + // loop + foreach( $_POST['menu-item-acf'] as $post_id => $values ) { + + // vars + $prefix = 'menu-item-acf['.$post_id.']'; + + + // validate + acf_validate_values( $values, $prefix ); + + } + + } + + + /* + * admin_footer + * + * This function will add some custom HTML to the footer of the edit page + * + * @type function + * @date 11/06/2014 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function admin_footer() { + + // vars + $nav_menu_id = acf_get_data('nav_menu_id'); + $post_id = acf_get_term_post_id( 'nav_menu', $nav_menu_id ); + + + // get field groups + $field_groups = acf_get_field_groups(array( + 'nav_menu' => $nav_menu_id + )); + +?> + + + \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-post.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-post.php new file mode 100644 index 0000000..055f685 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-post.php @@ -0,0 +1,329 @@ + true, + )); + + // actions + add_action('add_meta_boxes', array($this, 'add_meta_boxes'), 10, 2); + } + + /** + * add_meta_boxes + * + * Adds ACF metaboxes for the given $post_type and $post. + * + * @date 19/9/18 + * @since 5.7.6 + * + * @param string $post_type The post type. + * @param WP_Post $post The post being edited. + * @return void + */ + function add_meta_boxes( $post_type, $post ) { + + // Storage for localized postboxes. + $postboxes = array(); + + // Get field groups for this screen. + $field_groups = acf_get_field_groups(array( + 'post_id' => $post->ID, + 'post_type' => $post_type + )); + + // Loop over field groups. + if( $field_groups ) { + foreach( $field_groups as $field_group ) { + + // vars + $id = "acf-{$field_group['key']}"; // acf-group_123 + $title = $field_group['title']; // Group 1 + $context = $field_group['position']; // normal, side, acf_after_title + $priority = 'high'; // high, core, default, low + + // Reduce priority for sidebar metaboxes for best position. + if( $context == 'side' ) { + $priority = 'core'; + } + + /** + * Filters the metabox priority. + * + * @date 23/06/12 + * @since 3.1.8 + * + * @param string $priority The metabox priority (high, core, default, low). + * @param array $field_group The field group array. + */ + $priority = apply_filters('acf/input/meta_box_priority', $priority, $field_group); + + // Localize data + $postboxes[] = array( + 'id' => $id, + 'key' => $field_group['key'], + 'style' => $field_group['style'], + 'label' => $field_group['label_placement'], + 'edit' => acf_get_field_group_edit_link( $field_group['ID'] ) + ); + + // Add the meta box. + add_meta_box( $id, $title, array($this, 'render_meta_box'), $post_type, $context, $priority, array('field_group' => $field_group) ); + + } + + // Set style from first field group. + $this->style = acf_get_field_group_style( $field_groups[0] ); + + // Localize postboxes. + acf_localize_data(array( + 'postboxes' => $postboxes + )); + } + + // remove postcustom metabox (removes expensive SQL query) + if( acf_get_setting('remove_wp_meta_box') ) { + remove_meta_box( 'postcustom', false, 'normal' ); + } + + // Add hidden input fields. + add_action('edit_form_after_title', array($this, 'edit_form_after_title')); + + /** + * Fires after metaboxes have been added. + * + * @date 13/12/18 + * @since 5.8.0 + * + * @param string $post_type The post type. + * @param WP_Post $post The post being edited. + * @param array $field_groups The field groups added. + */ + do_action('acf/add_meta_boxes', $post_type, $post, $field_groups); + } + + /** + * edit_form_after_title + * + * Called after the title adn before the content editor. + * + * @date 19/9/18 + * @since 5.7.6 + * + * @param void + * @return void + */ + function edit_form_after_title() { + + // globals + global $post, $wp_meta_boxes; + + // render post data + acf_form_data(array( + 'screen' => 'post', + 'post_id' => $post->ID + )); + + // render 'acf_after_title' metaboxes + do_meta_boxes( get_current_screen(), 'acf_after_title', $post ); + + // render dynamic field group style + echo ''; + } + + /** + * render_meta_box + * + * Renders the ACF metabox HTML. + * + * @date 19/9/18 + * @since 5.7.6 + * + * @param WP_Post $post The post being edited. + * @param array metabox The add_meta_box() args. + * @return void + */ + function render_meta_box( $post, $metabox ) { + + // vars + $id = $metabox['id']; + $field_group = $metabox['args']['field_group']; + + // Render fields. + $fields = acf_get_fields( $field_group ); + acf_render_fields( $fields, $post->ID, 'div', $field_group['instruction_placement'] ); + } + + /** + * wp_insert_post_empty_content + * + * Allows WP to insert a new post without title or post_content if ACF data exists. + * + * @date 16/07/2014 + * @since 5.0.1 + * + * @param bool $maybe_empty Whether the post should be considered "empty". + * @param array $postarr Array of post data. + * @return bool + */ + function wp_insert_post_empty_content( $maybe_empty, $postarr ) { + + // return false and allow insert if '_acf_changed' exists + if( $maybe_empty && acf_maybe_get_POST('_acf_changed') ) { + return false; + } + + // return + return $maybe_empty; + } + + /* + * allow_save_post + * + * Checks if the $post is allowed to be saved. + * Used to avoid triggering "acf/save_post" on dynamically created posts during save. + * + * @type function + * @date 26/06/2016 + * @since 5.3.8 + * + * @param WP_Post $post The post to check. + * @return bool + */ + function allow_save_post( $post ) { + + // vars + $allow = true; + + // restrict post types + $restrict = array( 'auto-draft', 'revision', 'acf-field', 'acf-field-group' ); + if( in_array($post->post_type, $restrict) ) { + $allow = false; + } + + // disallow if the $_POST ID value does not match the $post->ID + $form_post_id = (int) acf_maybe_get_POST('post_ID'); + if( $form_post_id && $form_post_id !== $post->ID ) { + $allow = false; + } + + // revision (preview) + if( $post->post_type == 'revision' ) { + + // allow if doing preview and this $post is a child of the $_POST ID + if( acf_maybe_get_POST('wp-preview') == 'dopreview' && $form_post_id === $post->post_parent) { + $allow = true; + } + } + + // return + return $allow; + } + + /* + * save_post + * + * Triggers during the 'save_post' action to save the $_POST data. + * + * @type function + * @date 23/06/12 + * @since 1.0.0 + * + * @param int $post_id The post ID + * @param WP_POST $post the post object. + * @return int + */ + + function save_post( $post_id, $post ) { + + // bail ealry if no allowed to save this post type + if( !$this->allow_save_post($post) ) { + return $post_id; + } + + // verify nonce + if( !acf_verify_nonce('post') ) { + return $post_id; + } + + // validate for published post (allow draft to save without validation) + if( $post->post_status == 'publish' ) { + + // bail early if validation fails + if( !acf_validate_save_post() ) { + return; + } + } + + // save + acf_save_post( $post_id ); + + // save revision + if( post_type_supports($post->post_type, 'revisions') ) { + acf_save_post_revision( $post_id ); + } + + // return + return $post_id; + } +} + +acf_new_instance('ACF_Form_Post'); + +endif; + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-taxonomy.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-taxonomy.php new file mode 100644 index 0000000..f931fb0 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-taxonomy.php @@ -0,0 +1,415 @@ +validate_page() ) { + + return; + + } + + + // vars + $screen = get_current_screen(); + $taxonomy = $screen->taxonomy; + + + // load acf scripts + acf_enqueue_scripts(); + + + // actions + add_action('admin_footer', array($this, 'admin_footer'), 10, 1); + add_action("{$taxonomy}_add_form_fields", array($this, 'add_term'), 10, 1); + add_action("{$taxonomy}_edit_form", array($this, 'edit_term'), 10, 2); + + } + + + /* + * add_term + * + * description + * + * @type function + * @date 8/10/13 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function add_term( $taxonomy ) { + + // vars + $post_id = acf_get_term_post_id( $taxonomy, 0 ); + + + // update vars + $this->view = 'add'; + + + // get field groups + $field_groups = acf_get_field_groups(array( + 'taxonomy' => $taxonomy + )); + + + // render + if( !empty($field_groups) ) { + + // data + acf_form_data(array( + 'screen' => 'taxonomy', + 'post_id' => $post_id, + )); + + // wrap + echo '
                          '; + + // loop + foreach( $field_groups as $field_group ) { + $fields = acf_get_fields( $field_group ); + acf_render_fields( $fields, $post_id, 'div', 'field' ); + } + + // wrap + echo '
                          '; + + } + + } + + + /* + * edit_term + * + * description + * + * @type function + * @date 8/10/13 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function edit_term( $term, $taxonomy ) { + + // vars + $post_id = acf_get_term_post_id( $term->taxonomy, $term->term_id ); + + + // update vars + $this->view = 'edit'; + + + // get field groups + $field_groups = acf_get_field_groups(array( + 'taxonomy' => $taxonomy + )); + + + // render + if( !empty($field_groups) ) { + + acf_form_data(array( + 'screen' => 'taxonomy', + 'post_id' => $post_id, + )); + + foreach( $field_groups as $field_group ) { + + // title + if( $field_group['style'] == 'default' ) { + echo '

                          ' . $field_group['title'] . '

                          '; + } + + // fields + echo ''; + $fields = acf_get_fields( $field_group ); + acf_render_fields( $fields, $post_id, 'tr', 'field' ); + echo '
                          '; + + } + + } + + } + + + /* + * admin_footer + * + * description + * + * @type function + * @date 27/03/2015 + * @since 5.1.5 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function admin_footer() { + +?> + +query($wpdb->prepare( + "DELETE FROM $wpdb->options WHERE option_name LIKE %s OR option_name LIKE %s", + $search, + $_search + )); + + } + +} + +new acf_form_taxonomy(); + +endif; + + +?> diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-user.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-user.php new file mode 100644 index 0000000..c2e448b --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-user.php @@ -0,0 +1,370 @@ + 'login' + )); + } + + + /* + * register_user + * + * Called during the user register form + * + * @type function + * @date 8/10/13 + * @since 5.0.0 + * + * @param void + * @return void + */ + + function render_register() { + + // render + $this->render(array( + 'user_id' => 0, + 'view' => 'register', + 'el' => 'div' + )); + } + + + /* + * render_edit + * + * Called during the user edit form + * + * @type function + * @date 8/10/13 + * @since 5.0.0 + * + * @param void + * @return void + */ + + function render_edit( $user ) { + + // add compatibility with front-end user profile edit forms such as bbPress + if( !is_admin() ) { + acf_enqueue_scripts(); + } + + // render + $this->render(array( + 'user_id' => $user->ID, + 'view' => 'edit', + 'el' => 'tr' + )); + } + + + /* + * user_new_form + * + * description + * + * @type function + * @date 8/10/13 + * @since 5.0.0 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function render_new() { + + // Multisite uses a different 'user-new.php' form. Don't render fields here + if( is_multisite() ) { + return; + } + + // render + $this->render(array( + 'user_id' => 0, + 'view' => 'add', + 'el' => 'tr' + )); + } + + + /* + * render + * + * This function will render ACF fields for a given $post_id parameter + * + * @type function + * @date 7/10/13 + * @since 5.0.0 + * + * @param $user_id (int) this can be set to 0 for a new user + * @param $user_form (string) used for location rule matching. edit | add | register + * @param $el (string) + * @return n/a + */ + + function render( $args = array() ) { + + // Allow $_POST data to persist across form submission attempts. + if( isset($_POST['acf']) ) { + add_filter('acf/pre_load_value', array($this, 'filter_pre_load_value'), 10, 3); + } + + // defaults + $args = wp_parse_args($args, array( + 'user_id' => 0, + 'view' => 'edit', + 'el' => 'tr', + )); + + // vars + $post_id = 'user_' . $args['user_id']; + + // get field groups + $field_groups = acf_get_field_groups(array( + 'user_id' => $args['user_id'] ? $args['user_id'] : 'new', + 'user_form' => $args['view'] + )); + + // bail early if no field groups + if( empty($field_groups) ) { + return; + } + + // form data + acf_form_data(array( + 'screen' => 'user', + 'post_id' => $post_id, + 'validation' => ($args['view'] == 'register') ? 0 : 1 + )); + + // elements + $before = ''; + $after = '
                          '; + + if( $args['el'] == 'div') { + $before = '
                          '; + $after = '
                          '; + } + + // loop + foreach( $field_groups as $field_group ) { + + // vars + $fields = acf_get_fields( $field_group ); + + // title + if( $field_group['style'] === 'default' ) { + echo '

                          ' . $field_group['title'] . '

                          '; + } + + // render + echo $before; + acf_render_fields( $fields, $post_id, $args['el'], $field_group['instruction_placement'] ); + echo $after; + } + + // actions + add_action('acf/input/admin_footer', array($this, 'admin_footer'), 10, 1); + } + + + /* + * admin_footer + * + * description + * + * @type function + * @date 27/03/2015 + * @since 5.1.5 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function admin_footer() { + + // script + ?> + +add( + acf_idify( $acf_error['input'] ), + acf_punctify( sprintf( __('ERROR: %s', 'acf'), $acf_error['message'] ) ) + ); + } + } + return $errors; + } + + /** + * filter_pre_load_value + * + * Checks if a $_POST value exists for this field to allow persistent values. + * + * @date 12/7/19 + * @since 5.8.2 + * + * @param null $null A null placeholder. + * @param (int|string) $post_id The post id. + * @param array $field The field array. + * @return mixed + */ + function filter_pre_load_value( $null, $post_id, $field ) { + $field_key = $field['key']; + if( isset( $_POST['acf'][ $field_key ] )) { + return $_POST['acf'][ $field_key ]; + } + return $null; + } +} + +// instantiate +acf_new_instance('ACF_Form_User'); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/forms/form-widget.php b/wp-content/plugins/advanced-custom-fields/includes/forms/form-widget.php new file mode 100644 index 0000000..489a7e8 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/forms/form-widget.php @@ -0,0 +1,329 @@ +preview_values = array(); + $this->preview_reference = array(); + $this->preview_errors = array(); + + + // actions + add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts')); + add_action('in_widget_form', array($this, 'edit_widget'), 10, 3); + add_action('acf/validate_save_post', array($this, 'acf_validate_save_post'), 5); + + + // filters + add_filter('widget_update_callback', array($this, 'save_widget'), 10, 4); + + } + + + /* + * admin_enqueue_scripts + * + * This action is run after post query but before any admin script / head actions. + * It is a good place to register all actions. + * + * @type action (admin_enqueue_scripts) + * @date 26/01/13 + * @since 3.6.0 + * + * @param N/A + * @return N/A + */ + + function admin_enqueue_scripts() { + + // validate screen + if( acf_is_screen('widgets') || acf_is_screen('customize') ) { + + // valid + + } else { + + return; + + } + + + // load acf scripts + acf_enqueue_scripts(); + + + // actions + add_action('acf/input/admin_footer', array($this, 'admin_footer'), 1); + + } + + + /* + * acf_validate_save_post + * + * This function will loop over $_POST data and validate + * + * @type action 'acf/validate_save_post' 5 + * @date 7/09/2016 + * @since 5.4.0 + * + * @param n/a + * @return n/a + */ + + function acf_validate_save_post() { + + // bail ealry if not widget + if( !isset($_POST['_acf_widget_id']) ) return; + + + // vars + $id = $_POST['_acf_widget_id']; + $number = $_POST['_acf_widget_number']; + $prefix = $_POST['_acf_widget_prefix']; + + + // validate + acf_validate_values( $_POST[ $id ][ $number ]['acf'], $prefix ); + + } + + + /* + * edit_widget + * + * This function will render the fields for a widget form + * + * @type function + * @date 11/06/2014 + * @since 5.0.0 + * + * @param $widget (object) + * @param $return (null) + * @param $instance (object) + * @return $post_id (int) + */ + + function edit_widget( $widget, $return, $instance ) { + + // vars + $post_id = 0; + $prefix = 'widget-' . $widget->id_base . '[' . $widget->number . '][acf]'; + + + // get id + if( $widget->number !== '__i__' ) { + + $post_id = "widget_{$widget->id}"; + + } + + + // get field groups + $field_groups = acf_get_field_groups(array( + 'widget' => $widget->id_base + )); + + + // render + if( !empty($field_groups) ) { + + // render post data + acf_form_data(array( + 'screen' => 'widget', + 'post_id' => $post_id, + 'widget_id' => 'widget-' . $widget->id_base, + 'widget_number' => $widget->number, + 'widget_prefix' => $prefix + )); + + + // wrap + echo '
                          '; + + // loop + foreach( $field_groups as $field_group ) { + + // load fields + $fields = acf_get_fields( $field_group ); + + + // bail if not fields + if( empty($fields) ) continue; + + + // change prefix + acf_prefix_fields( $fields, $prefix ); + + + // render + acf_render_fields( $fields, $post_id, 'div', $field_group['instruction_placement'] ); + + } + + //wrap + echo '
                          '; + + + // jQuery selector looks odd, but is necessary due to WP adding an incremental number into the ID + // - not possible to find number via PHP parameters + if( $widget->updated ): ?> + + id}", $new_instance['acf'] ); + + + // return + return $instance; + + } + + + /* + * admin_footer + * + * This function will add some custom HTML to the footer of the edit page + * + * @type function + * @date 11/06/2014 + * @since 5.0.0 + * + * @param n/a + * @return n/a + */ + + function admin_footer() { +?> + + diff --git a/wp-content/plugins/advanced-custom-fields/includes/json.php b/wp-content/plugins/advanced-custom-fields/includes/json.php new file mode 100644 index 0000000..95be114 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/json.php @@ -0,0 +1,280 @@ +include_json_folder( $path ); + + } + + } + + + /* + * include_json_folder + * + * This function will include all .json files within a folder + * + * @type function + * @date 1/5/17 + * @since 5.5.13 + * + * @param n/a + * @return n/a + */ + + function include_json_folder( $path = '' ) { + + // remove trailing slash + $path = untrailingslashit( $path ); + + + // bail early if path does not exist + if( !is_dir($path) ) return false; + + + // open + $dir = opendir( $path ); + + // bail early if not valid + if( !$dir ) return false; + + // loop over files + while(false !== ( $file = readdir($dir)) ) { + + // validate type + if( pathinfo($file, PATHINFO_EXTENSION) !== 'json' ) continue; + + + // read json + $json = file_get_contents("{$path}/{$file}"); + + + // validate json + if( empty($json) ) continue; + + + // decode + $json = json_decode($json, true); + + + // add local + $json['local'] = 'json'; + + + // add field group + acf_add_local_field_group( $json ); + + } + + + // return + return true; + + } + +} + + +// initialize +acf()->json = new acf_json(); + +endif; // class_exists check + + +/* +* acf_write_json_field_group +* +* This function will save a field group to a json file within the current theme +* +* @type function +* @date 5/12/2014 +* @since 5.1.5 +* +* @param $field_group (array) +* @return (boolean) +*/ + +function acf_write_json_field_group( $field_group ) { + + // vars + $path = acf_get_setting('save_json'); + $file = $field_group['key'] . '.json'; + + + // remove trailing slash + $path = untrailingslashit( $path ); + + + // bail early if dir does not exist + if( !is_writable($path) ) return false; + + + // prepare for export + $id = acf_extract_var( $field_group, 'ID' ); + $field_group = acf_prepare_field_group_for_export( $field_group ); + + + // add modified time + $field_group['modified'] = get_post_modified_time('U', true, $id, true); + + + // write file + $f = fopen("{$path}/{$file}", 'w'); + fwrite($f, acf_json_encode( $field_group )); + fclose($f); + + + // return + return true; + +} + + +/* +* acf_delete_json_field_group +* +* This function will delete a json field group file +* +* @type function +* @date 5/12/2014 +* @since 5.1.5 +* +* @param $key (string) +* @return (boolean) +*/ + +function acf_delete_json_field_group( $key ) { + + // vars + $path = acf_get_setting('save_json'); + $file = $key . '.json'; + + + // remove trailing slash + $path = untrailingslashit( $path ); + + + // bail early if file does not exist + if( !is_readable("{$path}/{$file}") ) { + + return false; + + } + + + // remove file + unlink("{$path}/{$file}"); + + + // return + return true; + +} + + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/l10n.php b/wp-content/plugins/advanced-custom-fields/includes/l10n.php new file mode 100644 index 0000000..0c197d8 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/l10n.php @@ -0,0 +1,153 @@ + 'az', // Azerbaijani (Turkey) + 'zh_HK' => 'zh_CN', // Chinese (Hong Kong) + 'nl_BE' => 'nl_NL', // Dutch (Belgium) + 'fr_BE' => 'fr_FR', // French (Belgium) + 'nn_NO' => 'nb_NO', // Norwegian (Nynorsk) + 'fa_AF' => 'fa_IR', // Persian (Afghanistan) + 'ru_UA' => 'ru_RU', // Russian (Ukraine) + ); + if( isset($langs[ $locale ]) ) { + $locale = $langs[ $locale ]; + } + + /** + * Filters the determined local. + * + * @date 8/1/19 + * @since 5.7.10 + * + * @param string $locale The local. + */ + return apply_filters( 'acf/get_locale', $locale ); +} + +/** + * acf_load_textdomain + * + * Loads the plugin's translated strings similar to load_plugin_textdomain(). + * + * @date 8/1/19 + * @since 5.7.10 + * + * @param string $locale The plugin's current locale. + * @return void + */ +function acf_load_textdomain( $domain = 'acf' ) { + + /** + * Filters a plugin's locale. + * + * @date 8/1/19 + * @since 5.7.10 + * + * @param string $locale The plugin's current locale. + * @param string $domain Text domain. Unique identifier for retrieving translated strings. + */ + $locale = apply_filters( 'plugin_locale', acf_get_locale(), $domain ); + $mofile = $domain . '-' . $locale . '.mo'; + + // Try to load from the languages directory first. + if( load_textdomain( $domain, WP_LANG_DIR . '/plugins/' . $mofile ) ) { + return true; + } + + // Load from plugin lang folder. + return load_textdomain( $domain, acf_get_path( 'lang/' . $mofile ) ); +} + + /** + * _acf_apply_language_cache_key + * + * Applies the current language to the cache key. + * + * @date 23/1/19 + * @since 5.7.11 + * + * @param string $key The cache key. + * @return string + */ +function _acf_apply_language_cache_key( $key ) { + + // Get current language. + $current_language = acf_get_setting('current_language'); + if( $current_language ) { + $key = "{$key}:{$current_language}"; + } + + // Return key. + return $key; +} + +// Hook into filter. +add_filter( 'acf/get_cache_key', '_acf_apply_language_cache_key' ); diff --git a/wp-content/plugins/advanced-custom-fields/includes/local-fields.php b/wp-content/plugins/advanced-custom-fields/includes/local-fields.php new file mode 100644 index 0000000..9e6e480 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/local-fields.php @@ -0,0 +1,574 @@ +reset(); + acf_get_local_store( 'groups' )->reset(); +} + +/** + * acf_get_local_field_groups + * + * Returns all local field groups. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param void + * @return array + */ +function acf_get_local_field_groups() { + return acf_get_local_store( 'groups' )->get(); +} + +/** + * acf_have_local_field_groups + * + * description + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param type $var Description. Default. + * @return type Description. + */ +function acf_have_local_field_groups() { + return acf_get_local_store( 'groups' )->count() ? true : false; +} + +/** + * acf_count_local_field_groups + * + * description + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param type $var Description. Default. + * @return type Description. + */ +function acf_count_local_field_groups() { + return acf_get_local_store( 'groups' )->count(); +} + +/** + * acf_add_local_field_group + * + * Adds a local field group. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param array $field_group The field group array. + * @return void + */ +function acf_add_local_field_group( $field_group ) { + + // Validate field group. + $field_group = acf_get_valid_field_group( $field_group ); + + // Bail early if field group already exists. + if( acf_is_local_field_group($field_group['key']) ) { + return; + } + + // Extract fields from group. + $fields = acf_extract_var( $field_group, 'fields' ); + + // Add local reference (may be set to "json"). + if( empty($field_group['local']) ) { + $field_group['local'] = 'php'; + } + + // Add to store + acf_get_local_store( 'groups' )->set( $field_group['key'], $field_group ); + + // Add fields + if( $fields ) { + + // Add parent reference + foreach( $fields as $i => $field ) { + $fields[ $i ]['parent'] = $field_group['key']; + } + + // Add fields. + acf_add_local_fields( $fields ); + } +} + +/** + * register_field_group + * + * See acf_add_local_field_group(). + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param array $field_group The field group array. + * @return void + */ +function register_field_group( $field_group ) { + acf_add_local_field_group( $field_group ); +} + +/** + * acf_remove_local_field_group + * + * Removes a field group for the given key. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field group key. + * @return bool + */ +function acf_remove_local_field_group( $key = '' ) { + return acf_get_local_store( 'groups' )->remove( $key ); +} + +/** + * acf_is_local_field_group + * + * Returns true if a field group exists for the given key. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field group key. + * @return bool + */ +function acf_is_local_field_group( $key = '' ) { + return acf_get_local_store( 'groups' )->has( $key ); +} + +/** + * acf_is_local_field_group_key + * + * Returns true if a field group exists for the given key. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field group group key. + * @return bool + */ +function acf_is_local_field_group_key( $key = '' ) { + return acf_get_local_store( 'groups' )->is( $key ); +} + +/** + * acf_get_local_field_group + * + * Returns a field group for the given key. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field group key. + * @return (array|null) + */ +function acf_get_local_field_group( $key = '' ) { + return acf_get_local_store( 'groups' )->get( $key ); +} + +/** + * acf_add_local_fields + * + * Adds an array of local fields. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param array $fields An array of un prepared fields. + * @return array + */ +function acf_add_local_fields( $fields = array() ) { + + // Prepare for import (allows parent fields to offer up children). + $fields = acf_prepare_fields_for_import( $fields ); + + // Add each field. + foreach( $fields as $field ) { + acf_add_local_field( $field, true ); + } +} + +/** + * acf_get_local_fields + * + * Returns all local fields for the given parent. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $parent The parent key. + * @return array + */ +function acf_get_local_fields( $parent = '' ) { + + // Return children + if( $parent ) { + return acf_get_local_store( 'fields' )->query(array( + 'parent' => $parent + )); + + // Return all. + } else { + return acf_get_local_store( 'fields' )->get(); + } +} + +/** + * acf_have_local_fields + * + * Returns true if local fields exist. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $parent The parent key. + * @return bool + */ +function acf_have_local_fields( $parent = '' ) { + return acf_get_local_fields($parent) ? true : false; +} + +/** + * acf_count_local_fields + * + * Returns the number of local fields for the given parent. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $parent The parent key. + * @return int + */ +function acf_count_local_fields( $parent = '' ) { + return count( acf_get_local_fields($parent) ); +} + +/** + * acf_add_local_field + * + * Adds a local field. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param array $field The field array. + * @param bool $prepared Whether or not the field has already been prepared for import. + * @return void + */ +function acf_add_local_field( $field, $prepared = false ) { + + // Apply default args needed for import. + $field = wp_parse_args($field, array( + 'key' => '', + 'name' => '', + 'type' => '', + 'parent' => '' + )); + + // Ensure field has a key. + if( !$field['key'] ) { + $field['key'] = "field_{$field['name']}"; + } + + // If called directly, allow sub fields to be correctly prepared. + if( !$prepared ) { + return acf_add_local_fields( array( $field ) ); + } + + // Extract attributes. + $key = $field['key']; + $name = $field['name']; + + // Allow sub field to be added multipel times to different parents. + $store = acf_get_local_store( 'fields' ); + if( $store->is($key) ) { + $old_key = _acf_generate_local_key( $store->get($key) ); + $new_key = _acf_generate_local_key( $field ); + if( $old_key !== $new_key ) { + $key = $new_key; + } + } + + // Add field. + $store->set( $key, $field )->alias( $key, $name ); +} + +/** + * _acf_generate_local_key + * + * Generates a unique key based on the field's parent. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field key. + * @return bool + */ +function _acf_generate_local_key( $field ) { + return "{$field['key']}:{$field['parent']}"; +} + +/** + * acf_remove_local_field + * + * Removes a field for the given key. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field key. + * @return bool + */ +function acf_remove_local_field( $key = '' ) { + return acf_get_local_store( 'fields' )->remove( $key ); +} + +/** + * acf_is_local_field + * + * Returns true if a field exists for the given key or name. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field group key. + * @return bool + */ +function acf_is_local_field( $key = '' ) { + return acf_get_local_store( 'fields' )->has( $key ); +} + +/** + * acf_is_local_field_key + * + * Returns true if a field exists for the given key. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field group key. + * @return bool + */ +function acf_is_local_field_key( $key = '' ) { + return acf_get_local_store( 'fields' )->is( $key ); +} + +/** + * acf_get_local_field + * + * Returns a field for the given key. + * + * @date 22/1/19 + * @since 5.7.10 + * + * @param string $key The field group key. + * @return (array|null) + */ +function acf_get_local_field( $key = '' ) { + return acf_get_local_store( 'fields' )->get( $key ); +} + +/** + * _acf_apply_get_local_field_groups + * + * Appends local field groups to the provided array. + * + * @date 23/1/19 + * @since 5.7.10 + * + * @param array $field_groups An array of field groups. + * @return array + */ +function _acf_apply_get_local_field_groups( $groups = array() ) { + + // Get local groups + $local = acf_get_local_field_groups(); + if( $local ) { + + // Generate map of "index" => "key" data. + $map = wp_list_pluck($groups, 'key'); + + // Loop over groups and update/append local. + foreach( $local as $group ) { + + // Get group allowing cache and filters to run. + //$group = acf_get_field_group( $group['key'] ); + + // Update. + $i = array_search($group['key'], $map); + if( $i !== false ) { + unset($group['ID']); + $groups[ $i ] = array_merge($groups[ $i ], $group); + + // Append + } else { + $groups[] = acf_get_field_group( $group['key'] ); + } + } + + // Sort list via menu_order and title. + $groups = wp_list_sort( $groups, array('menu_order' => 'ASC', 'title' => 'ASC') ); + } + + // Return groups. + return $groups; +} + +// Hook into filter. +add_filter( 'acf/get_field_groups', '_acf_apply_get_local_field_groups', 20, 1 ); + +/** + * _acf_apply_is_local_field_key + * + * Returns true if is a local key. + * + * @date 23/1/19 + * @since 5.7.10 + * + * @param bool $bool The result. + * @param string $id The identifier. + * @return bool + */ +function _acf_apply_is_local_field_key( $bool, $id ) { + return acf_is_local_field_key( $id ); +} + +// Hook into filter. +add_filter( 'acf/is_field_key', '_acf_apply_is_local_field_key', 20, 2 ); + +/** + * _acf_apply_is_local_field_group_key + * + * Returns true if is a local key. + * + * @date 23/1/19 + * @since 5.7.10 + * + * @param bool $bool The result. + * @param string $id The identifier. + * @return bool + */ +function _acf_apply_is_local_field_group_key( $bool, $id ) { + return acf_is_local_field_group_key( $id ); +} + +// Hook into filter. +add_filter( 'acf/is_field_group_key', '_acf_apply_is_local_field_group_key', 20, 2 ); + +/** + * _acf_do_prepare_local_fields + * + * Local fields that are added too early will not be correctly prepared by the field type class. + * + * @date 23/1/19 + * @since 5.7.10 + * + * @param void + * @return void + */ +function _acf_do_prepare_local_fields() { + + // Get fields. + $fields = acf_get_local_fields(); + + // If fields have been registered early, re-add to correctly prepare them. + if( $fields ) { + acf_add_local_fields( $fields ); + } +} + +// Hook into action. +add_action( 'acf/include_fields', '_acf_do_prepare_local_fields', 0, 1 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/local-meta.php b/wp-content/plugins/advanced-custom-fields/includes/local-meta.php new file mode 100755 index 0000000..657b88a --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/local-meta.php @@ -0,0 +1,254 @@ +is_request($meta) ) { + $meta = $this->capture( $meta, $post_id ); + } + + // Add to storage. + $this->meta[ $post_id ] = $meta; + + // Set $post_id reference when is the "main" postmeta. + if( $is_main ) { + $this->post_id = $post_id; + } + + // Return meta. + return $meta; + } + + /** + * is_request + * + * Returns true if the supplied $meta is from a REQUEST (serialized
                          data). + * + * @date 11/3/19 + * @since 5.7.14 + * + * @param array $meta An array of metdata to check. + * @return bool + */ + function is_request( $meta = array() ) { + return acf_is_field_key( key( $meta ) ); + } + + /** + * capture + * + * Returns a flattened array of meta for the given postdata. + * This is achieved by simulating a save whilst capturing all meta changes. + * + * @date 26/2/19 + * @since 5.7.13 + * + * @param array $values An array of raw values. + * @param mixed $post_id The post_id for this data. + * @return array + */ + function capture( $values = array(), $post_id = 0 ) { + + // Reset meta. + $this->meta[ $post_id ] = array(); + + // Listen for any added meta. + add_filter('acf/pre_update_metadata', array($this, 'capture_update_metadata'), 1, 5); + + // Simulate update. + if( $values ) { + acf_update_values( $values, $post_id ); + } + + // Remove listener filter. + remove_filter('acf/pre_update_metadata', array($this, 'capture_update_metadata'), 1, 5); + + // Return meta. + return $this->meta[ $post_id ]; + } + + /** + * capture_update_metadata + * + * Records all meta activity and returns a non null value to bypass DB updates. + * + * @date 26/2/19 + * @since 5.7.13 + * + * @param null $null . + * @param (int|string) $post_id The post id. + * @param string $name The meta name. + * @param mixed $value The meta value. + * @param bool $hidden If the meta is hidden (starts with an underscore). + * @return false. + */ + function capture_update_metadata( $null, $post_id, $name, $value, $hidden ) { + $name = ($hidden ? '_' : '') . $name; + $this->meta[ $post_id ][ $name ] = $value; + + // Return non null value to escape update process. + return true; + } + + /** + * remove + * + * Removes postmeta from storage. + * + * @date 8/10/18 + * @since 5.8.0 + * + * @param mixed $post_id The post_id for this data. + * @return void + */ + function remove( $post_id = 0 ) { + + // unset meta + unset( $this->meta[ $post_id ] ); + + // reset post_id + if( $post_id === $this->post_id ) { + $this->post_id = 0; + } + } + + /** + * pre_load_meta + * + * Injects the local meta. + * + * @date 8/10/18 + * @since 5.8.0 + * + * @param null $null An empty parameter. Return a non null value to short-circuit the function. + * @param mixed $post_id The post_id for this data. + * @return mixed + */ + function pre_load_meta( $null, $post_id ) { + if( isset($this->meta[ $post_id ]) ) { + return $this->meta[ $post_id ]; + } + return $null; + } + + /** + * pre_load_metadata + * + * Injects the local meta. + * + * @date 8/10/18 + * @since 5.8.0 + * + * @param null $null An empty parameter. Return a non null value to short-circuit the function. + * @param (int|string) $post_id The post id. + * @param string $name The meta name. + * @param bool $hidden If the meta is hidden (starts with an underscore). + * @return mixed + */ + function pre_load_metadata( $null, $post_id, $name, $hidden ) { + $name = ($hidden ? '_' : '') . $name; + if( isset($this->meta[ $post_id ]) ) { + if( isset($this->meta[ $post_id ][ $name ]) ) { + return $this->meta[ $post_id ][ $name ]; + } + return '__return_null'; + } + return $null; + } + + /** + * pre_load_post_id + * + * Injects the local post_id. + * + * @date 8/10/18 + * @since 5.8.0 + * + * @param null $null An empty parameter. Return a non null value to short-circuit the function. + * @param mixed $post_id The post_id for this data. + * @return mixed + */ + function pre_load_post_id( $null, $post_id ) { + if( !$post_id && $this->post_id ) { + return $this->post_id; + } + return $null; + } +} + +endif; // class_exists check + +/** + * acf_setup_meta + * + * Adds postmeta to storage. + * + * @date 8/10/18 + * @since 5.8.0 + * @see ACF_Local_Meta::add() for list of parameters. + * + * @return array + */ +function acf_setup_meta( $meta = array(), $post_id = 0, $is_main = false ) { + return acf_get_instance('ACF_Local_Meta')->add( $meta, $post_id, $is_main ); +} + +/** + * acf_reset_meta + * + * Removes postmeta to storage. + * + * @date 8/10/18 + * @since 5.8.0 + * @see ACF_Local_Meta::remove() for list of parameters. + * + * @return void + */ +function acf_reset_meta( $post_id = 0 ) { + return acf_get_instance('ACF_Local_Meta')->remove( $post_id ); +} diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations.php b/wp-content/plugins/advanced-custom-fields/includes/locations.php new file mode 100644 index 0000000..c18d623 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations.php @@ -0,0 +1,372 @@ +locations[ $instance->name ] = $instance; + + } + + + /* + * get_rule + * + * This function will return a location rule class + * + * @type function + * @date 6/07/2016 + * @since 5.4.0 + * + * @param $name (string) + * @return (mixed) + */ + + function get_location( $name ) { + + return isset( $this->locations[$name] ) ? $this->locations[$name] : null; + + } + + + /* + * get_rules + * + * This function will return a grouped array of location rules (category => name => label) + * + * @type function + * @date 6/07/2016 + * @since 5.4.0 + * + * @param n/a + * @return (array) + */ + + function get_locations() { + + // vars + $groups = array(); + $l10n = array( + 'post' => __('Post', 'acf'), + 'page' => __('Page', 'acf'), + 'user' => __('User', 'acf'), + 'forms' => __('Forms', 'acf'), + ); + + + // loop + foreach( $this->locations as $location ) { + + // bail ealry if not public + if( !$location->public ) continue; + + + // translate + $cat = $location->category; + $cat = isset( $l10n[$cat] ) ? $l10n[$cat] : $cat; + + + // append + $groups[ $cat ][ $location->name ] = $location->label; + + } + + + // filter + $groups = apply_filters('acf/location/rule_types', $groups); + + + // return + return $groups; + + } + +} + +// initialize +acf()->locations = new acf_locations(); + +endif; // class_exists check + + +/* +* acf_register_location_rule +* +* alias of acf()->locations->register_location() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_register_location_rule( $class ) { + + return acf()->locations->register_location( $class ); + +} + + +/* +* acf_get_location_rule +* +* alias of acf()->locations->get_location() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_location_rule( $name ) { + + return acf()->locations->get_location( $name ); + +} + + +/* +* acf_get_location_rule_types +* +* alias of acf()->locations->get_locations() +* +* @type function +* @date 31/5/17 +* @since 5.6.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_location_rule_types() { + + return acf()->locations->get_locations(); + +} + + +/** +* acf_validate_location_rule +* +* Returns a valid location rule array. +* +* @date 28/8/18 +* @since 5.7.4 +* +* @param $rule array The rule array. +* @return array +*/ + +function acf_validate_location_rule( $rule = false ) { + + // defaults + $rule = wp_parse_args( $rule, array( + 'id' => '', + 'group' => '', + 'param' => '', + 'operator' => '==', + 'value' => '', + )); + + // filter + $rule = apply_filters( "acf/location/validate_rule/type={$rule['param']}", $rule ); + $rule = apply_filters( "acf/location/validate_rule", $rule); + + // return + return $rule; +} + +/* +* acf_get_location_rule_operators +* +* This function will return the operators for a given rule +* +* @type function +* @date 30/5/17 +* @since 5.6.0 +* +* @param $rule (array) +* @return (array) +*/ + +function acf_get_location_rule_operators( $rule ) { + + // vars + $operators = array( + '==' => __("is equal to",'acf'), + '!=' => __("is not equal to",'acf'), + ); + + + // filter + $operators = apply_filters( "acf/location/rule_operators/type={$rule['param']}", $operators, $rule ); + $operators = apply_filters( "acf/location/rule_operators/{$rule['param']}", $operators, $rule ); + $operators = apply_filters( "acf/location/rule_operators", $operators, $rule ); + + + // return + return $operators; + +} + + +/* +* acf_get_location_rule_values +* +* This function will return the values for a given rule +* +* @type function +* @date 30/5/17 +* @since 5.6.0 +* +* @param $rule (array) +* @return (array) +*/ + +function acf_get_location_rule_values( $rule ) { + + // vars + $values = array(); + + + // filter + $values = apply_filters( "acf/location/rule_values/type={$rule['param']}", $values, $rule ); + $values = apply_filters( "acf/location/rule_values/{$rule['param']}", $values, $rule ); + $values = apply_filters( "acf/location/rule_values", $values, $rule ); + + + // return + return $values; + +} + + +/* +* acf_match_location_rule +* +* This function will match a given rule to the $screen +* +* @type function +* @date 30/5/17 +* @since 5.6.0 +* +* @param $rule (array) +* @param $screen (array) +* @return (boolean) +*/ + +function acf_match_location_rule( $rule, $screen, $field_group ) { + + // vars + $result = false; + + + // filter + $result = apply_filters( "acf/location/match_rule/type={$rule['param']}", $result, $rule, $screen, $field_group ); + $result = apply_filters( "acf/location/match_rule", $result, $rule, $screen, $field_group ); + $result = apply_filters( "acf/location/rule_match/{$rule['param']}", $result, $rule, $screen, $field_group ); + $result = apply_filters( "acf/location/rule_match", $result, $rule, $screen, $field_group ); + + + // return + return $result; + +} + + +/* +* acf_get_location_screen +* +* This function will return a valid location screen array +* +* @type function +* @date 30/5/17 +* @since 5.6.0 +* +* @param $screen (array) +* @param $field_group (array) +* @return (array) +*/ + +function acf_get_location_screen( $screen = array(), $field_group = false ) { + + // vars + $screen = wp_parse_args($screen, array( + 'lang' => acf_get_setting('current_language'), + 'ajax' => false + )); + + + // filter for 3rd party customization + $screen = apply_filters('acf/location/screen', $screen, $field_group); + + + // return + return $screen; + +} + +/** +* acf_get_valid_location_rule +* +* Deprecated in 5.7.4. Use acf_validate_location_rule() instead. +* +* @date 30/5/17 +* @since 5.6.0 +* +* @param $rule array The rule array. +* @return array +*/ + +function acf_get_valid_location_rule( $rule ) { + return acf_validate_location_rule( $rule ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-attachment.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-attachment.php new file mode 100644 index 0000000..9abb20d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-attachment.php @@ -0,0 +1,127 @@ +name = 'attachment'; + $this->label = __("Attachment",'acf'); + $this->category = 'forms'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $attachment = acf_maybe_get( $screen, 'attachment' ); + + + // validate + if( !$attachment ) return false; + + + // get attachment mime type + $mime_type = get_post_mime_type( $attachment ); + + + // no specific mime + if( !strpos($rule['value'], '/') ) { + + // explode into [0] => type, [1] => mime + $bits = explode('/', $mime_type); + + + // if type matches, fake the $mime_type to match + if( $rule['value'] === $bits[0] ) { + + $mime_type = $rule['value']; + + } + } + + + // match + return $this->compare( $mime_type, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // vars + $mimes = get_allowed_mime_types(); + $choices = array( + 'all' => __('All', 'acf') + ); + + + // loop + foreach( $mimes as $type => $mime ) { + + $group = current( explode('/', $mime) ); + $choices[ $group ][ $group ] = sprintf( __('All %s formats', 'acf'), $group); + $choices[ $group ][ $mime ] = "$type ($mime)"; + + } + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_attachment' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-comment.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-comment.php new file mode 100644 index 0000000..b4a353e --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-comment.php @@ -0,0 +1,95 @@ +name = 'comment'; + $this->label = __("Comment",'acf'); + $this->category = 'forms'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $comment = acf_maybe_get( $screen, 'comment' ); + + + // bail early if not comment + if( !$comment ) return false; + + + // return + return $this->compare( $comment, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // vars + $choices = array( 'all' => __('All', 'acf') ); + $choices = array_merge( $choices, acf_get_pretty_post_types() ); + // change this to post types that support comments + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_comment' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-current-user-role.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-current-user-role.php new file mode 100644 index 0000000..8cc38d5 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-current-user-role.php @@ -0,0 +1,128 @@ +name = 'current_user_role'; + $this->label = __("Current User Role",'acf'); + $this->category = 'user'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // bail early if not logged in + if( !is_user_logged_in() ) return false; + + + // vars + $user = wp_get_current_user(); + + + // super_admin + if( $rule['value'] == 'super_admin' ) { + + $result = is_super_admin( $user->ID ); + + // role + } else { + + $result = in_array( $rule['value'], $user->roles ); + + } + + + // reverse if 'not equal to' + if( $rule['operator'] == '!=' ) { + + $result = !$result; + + } + + + // return + return $result; + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // global + global $wp_roles; + + + // specific roles + $choices = $wp_roles->get_names(); + + + // multi-site + if( is_multisite() ) { + + $prepend = array( 'super_admin' => __('Super Admin', 'acf') ); + $choices = array_merge( $prepend, $choices ); + + } + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_current_user_role' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-current-user.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-current-user.php new file mode 100644 index 0000000..c6753c3 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-current-user.php @@ -0,0 +1,111 @@ +name = 'current_user'; + $this->label = __("Current User",'acf'); + $this->category = 'user'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // logged in + if( $rule['value'] == 'logged_in' ) { + + $result = is_user_logged_in(); + + // viewing_front + } elseif( $rule['value'] == 'viewing_front' ) { + + $result = !is_admin(); + + // viewing_back + } elseif( $rule['value'] == 'viewing_back' ) { + + $result = is_admin(); + + } + + + // reverse if 'not equal to' + if( $rule['operator'] == '!=' ) { + + $result = !$result; + + } + + + // return + return $result; + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + return array( + 'logged_in' => __('Logged in', 'acf'), + 'viewing_front' => __('Viewing front end', 'acf'), + 'viewing_back' => __('Viewing back end', 'acf') + ); + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_current_user' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-nav-menu-item.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-nav-menu-item.php new file mode 100644 index 0000000..b37df29 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-nav-menu-item.php @@ -0,0 +1,104 @@ +name = 'nav_menu_item'; + $this->label = __("Menu Item",'acf'); + $this->category = 'forms'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $nav_menu_item = acf_maybe_get( $screen, 'nav_menu_item' ); + + + // bail early if not nav_menu_item + if( !$nav_menu_item ) return false; + + + // append nav_menu data + if( !isset($screen['nav_menu']) ) { + $screen['nav_menu'] = acf_get_data('nav_menu_id'); + } + + + // return + return acf_get_location_rule('nav_menu')->rule_match( $result, $rule, $screen ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // get menu choices + $choices = acf_get_location_rule('nav_menu')->rule_values( $choices, $rule ); + + + // append item types? + // dificult to get these details + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_nav_menu_item' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-nav-menu.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-nav-menu.php new file mode 100644 index 0000000..1e873f9 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-nav-menu.php @@ -0,0 +1,138 @@ +name = 'nav_menu'; + $this->label = __("Menu",'acf'); + $this->category = 'forms'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $nav_menu = acf_maybe_get( $screen, 'nav_menu' ); + + + // bail early if not nav_menu + if( !$nav_menu ) return false; + + + // location + if( substr($rule['value'], 0, 9) === 'location/' ) { + + // vars + $location = substr($rule['value'], 9); + $menu_locations = get_nav_menu_locations(); + + + // bail ealry if no location + if( !isset($menu_locations[$location]) ) return false; + + + // if location matches, update value + if( $menu_locations[$location] == $nav_menu ) { + + $nav_menu = $rule['value']; + + } + + } + + + // return + return $this->compare( $nav_menu, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // all + $choices = array( + 'all' => __('All', 'acf'), + ); + + + // locations + $nav_locations = get_registered_nav_menus(); + if( !empty($nav_locations) ) { + $cat = __('Menu Locations', 'acf'); + foreach( $nav_locations as $slug => $title ) { + $choices[ $cat ][ 'location/'.$slug ] = $title; + } + } + + + // specific menus + $nav_menus = wp_get_nav_menus(); + if( !empty($nav_menus) ) { + $cat = __('Menus', 'acf'); + foreach( $nav_menus as $nav_menu ) { + $choices[ $cat ][ $nav_menu->term_id ] = $nav_menu->name; + } + } + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_nav_menu' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-parent.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-parent.php new file mode 100644 index 0000000..8420dfa --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-parent.php @@ -0,0 +1,100 @@ +name = 'page_parent'; + $this->label = __("Page Parent",'acf'); + $this->category = 'page'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $post_id = acf_maybe_get( $screen, 'post_id' ); + $page_parent = acf_maybe_get( $screen, 'page_parent' ); + + + // no page parent + if( $page_parent === null ) { + + // bail early if no post id + if( !$post_id ) return false; + + + // get post parent + $post = get_post( $post_id ); + $page_parent = $post->post_parent; + + } + + + // compare + return $this->compare( $page_parent, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + return acf_get_location_rule('page')->rule_values( $choices, $rule ); + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_page_parent' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-template.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-template.php new file mode 100644 index 0000000..605346a --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-template.php @@ -0,0 +1,107 @@ +name = 'page_template'; + $this->label = __("Page Template",'acf'); + $this->category = 'page'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // Check if this rule is relevant to the current screen. + // Find $post_id in the process. + if( isset($screen['post_type']) ) { + $post_type = $screen['post_type']; + } elseif( isset($screen['post_id']) ) { + $post_type = get_post_type( $screen['post_id'] ); + } else { + return false; + } + + // If this rule is set to "default" template, avoid matching on non "page" post types. + // Fixes issue where post templates were added in WP 4.7 and field groups appeared on all post type edit screens. + if( $rule['value'] === 'default' && $post_type !== 'page' ) { + return false; + } + + // Return. + return acf_get_location_rule('post_template')->rule_match( $result, $rule, $screen ); + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // Default choices. + $choices = array( + 'default' => apply_filters( 'default_page_template_title', __('Default Template', 'acf') ) + ); + + // Load all templates, and merge in 'page' templates. + $post_templates = acf_get_post_templates(); + if( isset($post_templates['page']) ) { + $choices = array_merge($choices, $post_templates['page']); + } + + // Return choices. + return $choices; + } + +} + +// initialize +acf_register_location_rule( 'acf_location_page_template' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-type.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-type.php new file mode 100644 index 0000000..0526ab3 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page-type.php @@ -0,0 +1,162 @@ +name = 'page_type'; + $this->label = __("Page Type",'acf'); + $this->category = 'page'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $post_id = acf_maybe_get( $screen, 'post_id' ); + + // bail early if no post id + if( !$post_id ) return false; + + // get post + $post = get_post( $post_id ); + + // bail early if no post + if( !$post ) return false; + + + // compare + if( $rule['value'] == 'front_page') { + + // vars + $front_page = (int) get_option('page_on_front'); + + + // compare + $result = ( $front_page === $post->ID ); + + } elseif( $rule['value'] == 'posts_page') { + + // vars + $posts_page = (int) get_option('page_for_posts'); + + + // compare + $result = ( $posts_page === $post->ID ); + + } elseif( $rule['value'] == 'top_level') { + + // vars + $page_parent = acf_maybe_get( $screen, 'page_parent', $post->post_parent ); + + + // compare + $result = ( $page_parent == 0 ); + + } elseif( $rule['value'] == 'parent' ) { + + // get children + $children = get_posts(array( + 'post_type' => $post->post_type, + 'post_parent' => $post->ID, + 'posts_per_page' => 1, + 'fields' => 'ids', + )); + + + // compare + $result = !empty( $children ); + + } elseif( $rule['value'] == 'child') { + + // vars + $page_parent = acf_maybe_get( $screen, 'page_parent', $post->post_parent ); + + + // compare + $result = ( $page_parent > 0 ); + + } + + + // reverse if 'not equal to' + if( $rule['operator'] == '!=' ) { + + $result = !$result; + + } + + + // return + return $result; + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + return array( + 'front_page' => __("Front Page",'acf'), + 'posts_page' => __("Posts Page",'acf'), + 'top_level' => __("Top Level Page (no parent)",'acf'), + 'parent' => __("Parent Page (has children)",'acf'), + 'child' => __("Child Page (has parent)",'acf'), + ); + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_page_type' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page.php new file mode 100644 index 0000000..732fee9 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-page.php @@ -0,0 +1,99 @@ +name = 'page'; + $this->label = __("Page",'acf'); + $this->category = 'page'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + return acf_get_location_rule('post')->rule_match( $result, $rule, $screen ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // get posts grouped by post type + $groups = acf_get_grouped_posts(array( + 'post_type' => 'page' + )); + + + // pop + $choices = array_pop( $groups ); + + + // convert posts to titles + foreach( $choices as &$item ) { + + $item = acf_get_post_title( $item ); + + } + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_page' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-category.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-category.php new file mode 100644 index 0000000..a88146a --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-category.php @@ -0,0 +1,88 @@ +name = 'post_category'; + $this->label = __("Post Category",'acf'); + $this->category = 'post'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + return acf_get_location_rule('post_taxonomy')->rule_match( $result, $rule, $screen ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + $terms = acf_get_taxonomy_terms( 'category' ); + + if( !empty($terms) ) { + + $choices = array_pop($terms); + + } + + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_post_category' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-format.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-format.php new file mode 100644 index 0000000..0508533 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-format.php @@ -0,0 +1,143 @@ +name = 'post_format'; + $this->label = __("Post Format",'acf'); + $this->category = 'post'; + + } + + + /* + * get_post_type + * + * This function will return the current post_type + * + * @type function + * @date 25/11/16 + * @since 5.5.0 + * + * @param $options (int) + * @return (mixed) + */ + + function get_post_type( $screen ) { + + // vars + $post_id = acf_maybe_get( $screen, 'post_id' ); + $post_type = acf_maybe_get( $screen, 'post_type' ); + + + // post_type + if( $post_type ) return $post_type; + + + // $post_id + if( $post_id ) return get_post_type( $post_id ); + + + // return + return false; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $post_format = acf_maybe_get( $screen, 'post_format' ); + + + // find post format + if( !$post_format ) { + + // get post id + $post_id = acf_maybe_get( $screen, 'post_id' ); + $post_type = $this->get_post_type( $screen ); + + + // bail early if not a post + if( !$post_id || !$post_type ) return false; + + + // does post_type support 'post-format' + if( post_type_supports($post_type, 'post-formats') ) { + + // update + $post_format = get_post_format($post_id); + $post_format = $post_format ? $post_format : 'standard'; + + } + + } + + + // compare + return $this->compare( $post_format, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + return get_post_format_strings(); + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_post_format' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-status.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-status.php new file mode 100644 index 0000000..52a998a --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-status.php @@ -0,0 +1,161 @@ +name = 'post_status'; + $this->label = __("Post Status",'acf'); + $this->category = 'post'; + + } + + + /* + * get_post_type + * + * This function will return the current post_type + * + * @type function + * @date 25/11/16 + * @since 5.5.0 + * + * @param $options (int) + * @return (mixed) + */ + + function get_post_type( $screen ) { + + // vars + $post_id = acf_maybe_get( $screen, 'post_id' ); + $post_type = acf_maybe_get( $screen, 'post_type' ); + + + // post_type + if( $post_type ) return $post_type; + + + // $post_id + if( $post_id ) return get_post_type( $post_id ); + + + // return + return false; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $post_status = acf_maybe_get( $screen, 'post_status' ); + + + // find post format + if( !$post_status ) { + + // get post id + $post_id = acf_maybe_get( $screen, 'post_id' ); + + + // bail early if not a post + if( !$post_id ) return false; + + + // update + $post_status = get_post_status( $post_id ); + + } + + + // auto-draft = draft + if( $post_status == 'auto-draft' ) { + + $post_status = 'draft'; + + } + + + // match + return $this->compare( $post_status, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // globals + global $wp_post_statuses; + + + // append + if( !empty($wp_post_statuses) ) { + + foreach( $wp_post_statuses as $status ) { + + $choices[ $status->name ] = $status->label; + + } + + } + + + // return choices + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_post_status' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-taxonomy.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-taxonomy.php new file mode 100644 index 0000000..33836ae --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-taxonomy.php @@ -0,0 +1,130 @@ +name = 'post_taxonomy'; + $this->label = __("Post Taxonomy",'acf'); + $this->category = 'post'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $post_id = acf_maybe_get( $screen, 'post_id' ); + $post_terms = acf_maybe_get( $screen, 'post_terms' ); + + // bail early if not a post + if( !$post_id ) return false; + + // get selected term from rule + $term = acf_get_term( $rule['value'] ); + + // bail early if no term + if( !$term || is_wp_error($term) ) return false; + + // if ajax, find the terms for the correct category + if( $post_terms !== null ) { + $post_terms = acf_maybe_get( $post_terms, $term->taxonomy, array() ); + + // if not ajax, load post's terms + } else { + $post_terms = wp_get_post_terms( $post_id, $term->taxonomy, array('fields' => 'ids') ); + } + + // If no terms, this is a new post and should be treated as if it has the "Uncategorized" (1) category ticked + if( !$post_terms && $term->taxonomy == 'category' ) { + $post_terms = array( 1 ); + } + + // compare term IDs and slugs + if( in_array($term->term_id, $post_terms) || in_array($term->slug, $post_terms) ) { + $result = true; + } + + // reverse if 'not equal to' + if( $rule['operator'] == '!=' ) { + $result = !$result; + } + + // return + return $result; + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // get + $choices = acf_get_taxonomy_terms(); + + + // unset post_format + if( isset($choices['post_format']) ) { + + unset( $choices['post_format']) ; + + } + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_post_taxonomy' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-template.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-template.php new file mode 100644 index 0000000..c04b533 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-template.php @@ -0,0 +1,152 @@ +name = 'post_template'; + $this->label = __("Post Template",'acf'); + $this->category = 'post'; + $this->public = acf_version_compare('wp', '>=', '4.7'); + + } + + + /* + * get_post_type + * + * This function will return the current post_type + * + * @type function + * @date 25/11/16 + * @since 5.5.0 + * + * @param $options (int) + * @return (mixed) + */ + + function get_post_type( $screen ) { + + // vars + $post_id = acf_maybe_get( $screen, 'post_id' ); + $post_type = acf_maybe_get( $screen, 'post_type' ); + + + // post_type + if( $post_type ) return $post_type; + + + // $post_id + if( $post_id ) return get_post_type( $post_id ); + + + // return + return false; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // Check if this rule is relevant to the current screen. + // Find $post_id in the process. + if( isset($screen['post_type']) ) { + $post_type = $screen['post_type']; + } elseif( isset($screen['post_id']) ) { + $post_type = get_post_type( $screen['post_id'] ); + } else { + return false; + } + + // Check if this post type has templates. + $post_templates = acf_get_post_templates(); + if( !isset($post_templates[ $post_type ]) ) { + return false; + } + + // get page template allowing for screen or database value. + $page_template = acf_maybe_get( $screen, 'page_template' ); + $post_id = acf_maybe_get( $screen, 'post_id' ); + if( $page_template === null ) { + $page_template = get_post_meta( $post_id, '_wp_page_template', true ); + } + + // Treat empty value as default template. + if( $page_template === '' ) { + $page_template = 'default'; + } + + // Compare. + return $this->compare( $page_template, $rule ); + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // Default choices. + $choices = array( + 'default' => apply_filters( 'default_page_template_title', __('Default Template', 'acf') ) + ); + + // Merge in all post templates. + $post_templates = acf_get_post_templates(); + $choices = array_merge($choices, $post_templates); + + // Return choices. + return $choices; + } + +} + +// initialize +acf_register_location_rule( 'acf_location_post_template' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-type.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-type.php new file mode 100644 index 0000000..698b4c0 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post-type.php @@ -0,0 +1,132 @@ +name = 'post_type'; + $this->label = __("Post Type",'acf'); + $this->category = 'post'; + + } + + + /* + * get_post_type + * + * This function will return the current post_type + * + * @type function + * @date 25/11/16 + * @since 5.5.0 + * + * @param $options (int) + * @return (mixed) + */ + + function get_post_type( $screen ) { + + // vars + $post_id = acf_maybe_get( $screen, 'post_id' ); + $post_type = acf_maybe_get( $screen, 'post_type' ); + + + // post_type + if( $post_type ) return $post_type; + + + // $post_id + if( $post_id ) return get_post_type( $post_id ); + + + // return + return false; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $post_type = $this->get_post_type( $screen ); + + + // bail early if no post_type found (not a post) + if( !$post_type ) return false; + + + // match + return $this->compare( $post_type, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // get post types + // - removed show_ui to allow 3rd party code to register a post type using a custom admin edit page + $post_types = acf_get_post_types(array( + 'show_ui' => 1, + 'exclude' => array('attachment') + )); + + + // return choices + return acf_get_pretty_post_types( $post_types ); + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_post_type' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post.php new file mode 100644 index 0000000..5fcfeed --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-post.php @@ -0,0 +1,128 @@ +name = 'post'; + $this->label = __("Post",'acf'); + $this->category = 'post'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $post_id = acf_maybe_get( $screen, 'post_id' ); + + + // bail early if not post + if( !$post_id ) return false; + + + // compare + return $this->compare( $post_id, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // get post types + $post_types = acf_get_post_types(array( + 'show_ui' => 1, + 'exclude' => array('page', 'attachment') + )); + + + // get posts grouped by post type + $groups = acf_get_grouped_posts(array( + 'post_type' => $post_types + )); + + + if( !empty($groups) ) { + + foreach( array_keys($groups) as $group_title ) { + + // vars + $posts = acf_extract_var( $groups, $group_title ); + + + // override post data + foreach( array_keys($posts) as $post_id ) { + + // update + $posts[ $post_id ] = acf_get_post_title( $posts[ $post_id ] ); + + }; + + + // append to $choices + $choices[ $group_title ] = $posts; + + } + + } + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_post' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-taxonomy.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-taxonomy.php new file mode 100644 index 0000000..8985bbf --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-taxonomy.php @@ -0,0 +1,95 @@ +name = 'taxonomy'; + $this->label = __("Taxonomy",'acf'); + $this->category = 'forms'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $taxonomy = acf_maybe_get( $screen, 'taxonomy' ); + + + // bail early if not taxonomy + if( !$taxonomy ) return false; + + + // return + return $this->compare( $taxonomy, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // vars + $choices = array( 'all' => __('All', 'acf') ); + $choices = array_merge( $choices, acf_get_taxonomy_labels() ); + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_taxonomy' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-user-form.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-user-form.php new file mode 100644 index 0000000..cf24a44 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-user-form.php @@ -0,0 +1,116 @@ +name = 'user_form'; + $this->label = __("User Form",'acf'); + $this->category = 'user'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $user_form = acf_maybe_get( $screen, 'user_form' ); + + + // bail early if no user form + if( !$user_form ) return false; + + + // add is treated the same as edit + if( $user_form === 'add' ) { + + $user_form = 'edit'; + + } + + + // match + return $this->compare( $user_form, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + return array( + 'all' => __('All', 'acf'), + 'edit' => __('Add / Edit', 'acf'), + 'register' => __('Register', 'acf') + ); + +/* + + // global + global $wp_roles; + + + // vars + $choices = array( 'all' => __('All', 'acf') ); + $choices = array_merge( $choices, $wp_roles->get_names() ); + + + // return + return $choices; +*/ + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_user_form' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-user-role.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-user-role.php new file mode 100644 index 0000000..72b0ab0 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-user-role.php @@ -0,0 +1,127 @@ +name = 'user_role'; + $this->label = __("User Role",'acf'); + $this->category = 'user'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $user_id = acf_maybe_get( $screen, 'user_id' ); + $user_role = acf_maybe_get( $screen, 'user_role' ); + + + // if user_role is supplied (3rd party compatibility) + if( $user_role ) { + + // do nothing + + // user_id (expected) + } elseif( $user_id ) { + + // new user + if( $user_id == 'new' ) { + + // set to default role + $user_role = get_option('default_role'); + + // existing user + } elseif( user_can($user_id, $rule['value']) ) { + + // set to value and allow match + $user_role = $rule['value']; + + } + + // else + } else { + + // not a user + return false; + + } + + + // match + return $this->compare( $user_role, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // global + global $wp_roles; + + + // vars + $choices = array( 'all' => __('All', 'acf') ); + $choices = array_merge( $choices, $wp_roles->get_names() ); + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_user_role' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-widget.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-widget.php new file mode 100644 index 0000000..4b02040 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location-widget.php @@ -0,0 +1,110 @@ +name = 'widget'; + $this->label = __("Widget",'acf'); + $this->category = 'forms'; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + + function rule_match( $result, $rule, $screen ) { + + // vars + $widget = acf_maybe_get( $screen, 'widget' ); + + + // bail early if not widget + if( !$widget ) return false; + + + // return + return $this->compare( $widget, $rule ); + + } + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + + function rule_values( $choices, $rule ) { + + // global + global $wp_widget_factory; + + + // vars + $choices = array( 'all' => __('All', 'acf') ); + + + // loop + if( !empty( $wp_widget_factory->widgets ) ) { + + foreach( $wp_widget_factory->widgets as $widget ) { + + $choices[ $widget->id_base ] = $widget->name; + + } + + } + + + // return + return $choices; + + } + +} + +// initialize +acf_register_location_rule( 'acf_location_widget' ); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location.php b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location.php new file mode 100644 index 0000000..0e853e8 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/locations/class-acf-location.php @@ -0,0 +1,263 @@ +initialize(); + + + // filters + $this->add_filter('acf/location/rule_match', true, array($this, 'rule_match'), 5, 3); + $this->add_filter('acf/location/rule_operators', true, array($this, 'rule_operators'), 5, 2); + $this->add_filter('acf/location/rule_values', true, array($this, 'rule_values'), 5, 2); + + } + + + /* + * initialize + * + * This function will initialize the location rule + * + * @type function + * @date 27/6/17 + * @since 5.6.0 + * + * @param n/a + * @return n/a + */ + + function initialize() { + + /* do nothing */ + + } + + + /* + * add_filter + * + * This function checks if the function is_callable before adding the filter + * + * @type function + * @date 5/03/2014 + * @since 5.0.0 + * + * @param $tag (string) + * @param $function_to_add (string) + * @param $priority (int) + * @param $accepted_args (int) + * @return n/a + */ + + function add_filter( $tag = '', $specific = false, $function_to_add = '', $priority = 10, $accepted_args = 1 ) { + + // specific + if( $specific ) { + + $tag .= '/' . $this->name; + + } + + + // add + if( is_callable($function_to_add) ) { + + add_filter( $tag, $function_to_add, $priority, $accepted_args ); + + } + + } + + + /* + * add_action + * + * This function checks if the function is_callable before adding the action + * + * @type function + * @date 5/03/2014 + * @since 5.0.0 + * + * @param $tag (string) + * @param $function_to_add (string) + * @param $priority (int) + * @param $accepted_args (int) + * @return n/a + */ + + function add_action( $tag = '', $specific = false, $function_to_add = '', $priority = 10, $accepted_args = 1 ) { + + // specific + if( $specific ) { + + $tag .= '/' . $this->name; + + } + + + // add + if( is_callable($function_to_add) ) { + + add_action( $tag, $function_to_add, $priority, $accepted_args ); + + } + + } + + + /* + * compare + * + * This function will compare a value to a location rule and return a boolean result + * + * @type function + * @date 25/11/16 + * @since 5.5.0 + * + * @param $value (mixed) + * @param rule (array) + * @return (boolean) + */ + + function compare( $value, $rule ) { + + // match + $match = ( $value == $rule['value'] ); + + + // override for "all" + if( $rule['value'] == 'all' ) $match = true; + + + // reverse if 'not equal to' + if( $rule['operator'] == '!=' ) { + + $match = !$match; + + } + + + // return + return $match; + + } + + + /* + * rule_match + * + * This function is used to match this location $rule to the current $screen + * + * @type function + * @date 3/01/13 + * @since 3.5.7 + * + * @param $match (boolean) + * @param $rule (array) + * @return $options (array) + */ + +/* + function rule_match( $result, $rule, $screen ) { + + return $result; + + } +*/ + + + /* + * rule_operators + * + * This function returns the available operators for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + +/* + function rule_operators( $operators, $rule ) { + + return $operators; + + } +*/ + + + /* + * rule_operators + * + * This function returns the available values for this rule type + * + * @type function + * @date 30/5/17 + * @since 5.6.0 + * + * @param n/a + * @return (array) + */ + +/* + function rule_values( $values, $rule ) { + + return $values; + + } +*/ + + +/* + function rule_listeners() { + + // js + + } +*/ + + +} + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/loop.php b/wp-content/plugins/advanced-custom-fields/includes/loop.php new file mode 100644 index 0000000..9ca3e86 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/loop.php @@ -0,0 +1,355 @@ +loops = array(); + + } + + + /* + * is_empty + * + * This function will return true if no loops exist + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param n/a + * @return (boolean) + */ + + function is_empty() { + + return empty( $this->loops ); + + } + + + /* + * is_loop + * + * This function will return true if a loop exists for the given array index + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (int) + * @return (boolean) + */ + + function is_loop( $i = 0 ) { + + return isset( $this->loops[ $i ] ); + + } + + + /* + * get_i + * + * This function will return a valid array index for the given $i + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (mixed) + * @return (int) + */ + + function get_i( $i = 0 ) { + + // 'active' + if( $i === 'active' ) $i = -1; + + + // 'previous' + if( $i === 'previous' ) $i = -2; + + + // allow negative to look at end of loops + if( $i < 0 ) { + + $i = count($this->loops) + $i; + + } + + + // return + return $i; + + } + + + /* + * add_loop + * + * This function will add a new loop + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $loop (array) + * @return n/a + */ + + function add_loop( $loop = array() ) { + + // defaults + $loop = wp_parse_args( $loop, array( + 'selector' => '', + 'name' => '', + 'value' => false, + 'field' => false, + 'i' => -1, + 'post_id' => 0, + 'key' => '' + )); + + + // ensure array + $loop['value'] = acf_get_array( $loop['value'] ); + + + // Re-index values if this loop starts from index 0. + // This allows ajax previews to work ($_POST data contains random unique array keys) + if( $loop['i'] == -1 ) { + + $loop['value'] = array_values($loop['value']); + + } + + + // append + $this->loops[] = $loop; + + + // return + return $loop; + + } + + + /* + * update_loop + * + * This function will update a loop's setting + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (mixed) + * @param $key (string) the loop setting name + * @param $value (mixed) the loop setting value + * @return (boolean) true on success + */ + + function update_loop( $i = 'active', $key = null, $value = null ) { + + // i + $i = $this->get_i( $i ); + + + // bail early if no set + if( !$this->is_loop($i) ) return false; + + + // set + $this->loops[ $i ][ $key ] = $value; + + + // return + return true; + + } + + + /* + * get_loop + * + * This function will return a loop, or loop's setting for a given index & key + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (mixed) + * @param $key (string) the loop setting name + * @return (mixed) false on failure + */ + + function get_loop( $i = 'active', $key = null ) { + + // i + $i = $this->get_i( $i ); + + + // bail early if no set + if( !$this->is_loop($i) ) return false; + + + // check for key + if( $key !== null ) { + + return $this->loops[ $i ][ $key ]; + + } + + + // return + return $this->loops[ $i ]; + + } + + + /* + * remove_loop + * + * This function will remove a loop + * + * @type function + * @date 3/03/2016 + * @since 5.3.2 + * + * @param $i (mixed) + * @return (boolean) true on success + */ + + function remove_loop( $i = 'active' ) { + + // i + $i = $this->get_i( $i ); + + + // bail early if no set + if( !$this->is_loop($i) ) return false; + + + // remove + unset($this->loops[ $i ]); + + + // reset keys + $this->loops = array_values( $this->loops ); + + // PHP 7.2 no longer resets array keys for empty value + if( $this->is_empty() ) { + $this->loops = array(); + } + } + +} + +// initialize +acf()->loop = new acf_loop(); + +endif; // class_exists check + + + +/* +* acf_add_loop +* +* alias of acf()->loop->add_loop() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_add_loop( $loop = array() ) { + + return acf()->loop->add_loop( $loop ); + +} + + +/* +* acf_update_loop +* +* alias of acf()->loop->update_loop() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_update_loop( $i = 'active', $key = null, $value = null ) { + + return acf()->loop->update_loop( $i, $key, $value ); + +} + + +/* +* acf_get_loop +* +* alias of acf()->loop->get_loop() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_get_loop( $i = 'active', $key = null ) { + + return acf()->loop->get_loop( $i, $key ); + +} + + +/* +* acf_remove_loop +* +* alias of acf()->loop->remove_loop() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_remove_loop( $i = 'active' ) { + + return acf()->loop->remove_loop( $i ); + +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/media.php b/wp-content/plugins/advanced-custom-fields/includes/media.php new file mode 100644 index 0000000..8b88bc6 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/media.php @@ -0,0 +1,204 @@ + wp_mime_type_icon(), + 'mimeTypes' => get_allowed_mime_types() + )); + } + + + /* + * handle_upload_prefilter + * + * description + * + * @type function + * @date 16/02/2015 + * @since 5.1.5 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function handle_upload_prefilter( $file ) { + + // bail early if no acf field + if( empty($_POST['_acfuploader']) ) { + return $file; + } + + + // load field + $field = acf_get_field( $_POST['_acfuploader'] ); + if( !$field ) { + return $file; + } + + + // get errors + $errors = acf_validate_attachment( $file, $field, 'upload' ); + + + /** + * Filters the errors for a file before it is uploaded to WordPress. + * + * @date 16/02/2015 + * @since 5.1.5 + * + * @param array $errors An array of errors. + * @param array $file An array of data for a single file. + * @param array $field The field array. + */ + $errors = apply_filters( "acf/upload_prefilter/type={$field['type']}", $errors, $file, $field ); + $errors = apply_filters( "acf/upload_prefilter/name={$field['_name']}", $errors, $file, $field ); + $errors = apply_filters( "acf/upload_prefilter/key={$field['key']}", $errors, $file, $field ); + $errors = apply_filters( "acf/upload_prefilter", $errors, $file, $field ); + + + // append error + if( !empty($errors) ) { + $file['error'] = implode("\n", $errors); + } + + + // return + return $file; + } + + + /* + * save_files + * + * This function will save the $_FILES data + * + * @type function + * @date 24/10/2014 + * @since 5.0.9 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function save_files( $post_id = 0 ) { + + // bail early if no $_FILES data + if( empty($_FILES['acf']['name']) ) { + return; + } + + + // upload files + acf_upload_files(); + } + + + /* + * wp_ajax_query_attachments + * + * description + * + * @type function + * @date 26/06/2015 + * @since 5.2.3 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function wp_ajax_query_attachments() { + + add_filter('wp_prepare_attachment_for_js', array($this, 'wp_prepare_attachment_for_js'), 10, 3); + + } + + function wp_prepare_attachment_for_js( $response, $attachment, $meta ) { + + // append attribute + $response['acf_errors'] = false; + + + // bail early if no acf field + if( empty($_POST['query']['_acfuploader']) ) { + return $response; + } + + + // load field + $field = acf_get_field( $_POST['query']['_acfuploader'] ); + if( !$field ) { + return $response; + } + + + // get errors + $errors = acf_validate_attachment( $response, $field, 'prepare' ); + + + // append errors + if( !empty($errors) ) { + $response['acf_errors'] = implode('
                          ', $errors); + } + + + // return + return $response; + } +} + +// instantiate +acf_new_instance('ACF_Media'); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/revisions.php b/wp-content/plugins/advanced-custom-fields/includes/revisions.php new file mode 100644 index 0000000..4dcb8e7 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/revisions.php @@ -0,0 +1,476 @@ +ID; + + } + + + // get all postmeta + $meta = get_post_meta( $post_id ); + + + // bail early if no meta + if( !$meta ) return $fields; + + + // loop + foreach( $meta as $name => $value ) { + + // attempt to find key value + $key = acf_maybe_get( $meta, '_'.$name ); + + + // bail ealry if no key + if( !$key ) continue; + + + // update vars + $value = $value[0]; + $key = $key[0]; + + + // bail early if $key is a not a field_key + if( !acf_is_field_key($key) ) continue; + + + // get field + $field = acf_get_field( $key ); + $field_title = $field['label'] . ' (' . $name . ')'; + $field_order = $field['menu_order']; + $ancestors = acf_get_field_ancestors( $field ); + + + // ancestors + if( !empty($ancestors) ) { + + // vars + $count = count($ancestors); + $oldest = acf_get_field( $ancestors[$count-1] ); + + + // update vars + $field_title = str_repeat('- ', $count) . $field_title; + $field_order = $oldest['menu_order'] . '.1'; + + } + + + // append + $append[ $name ] = $field_title; + $order[ $name ] = $field_order; + + + // hook into specific revision field filter and return local value + add_filter("_wp_post_revision_field_{$name}", array($this, 'wp_post_revision_field'), 10, 4); + + } + + + // append + if( !empty($append) ) { + + // vars + $prefix = '_'; + + + // add prefix + $append = acf_add_array_key_prefix($append, $prefix); + $order = acf_add_array_key_prefix($order, $prefix); + + + // sort by name (orders sub field values correctly) + array_multisort($order, $append); + + + // remove prefix + $append = acf_remove_array_key_prefix($append, $prefix); + + + // append + $fields = $fields + $append; + + } + + + // return + return $fields; + + } + + + /* + * wp_post_revision_field + * + * This filter will load the value for the given field and return it for rendering + * + * @type filter + * @date 11/08/13 + * + * @param $value (mixed) should be false as it has not yet been loaded + * @param $field_name (string) The name of the field + * @param $post (mixed) Holds the $post object to load from - in WP 3.5, this is not passed! + * @param $direction (string) to / from - not used + * @return $value (string) + */ + + function wp_post_revision_field( $value, $field_name, $post = null, $direction = false) { + + // bail ealry if is empty + if( empty($value) ) return $value; + + + // value has not yet been 'maybe_unserialize' + $value = maybe_unserialize( $value ); + + + // vars + $post_id = $post->ID; + + + // load field + $field = acf_maybe_get_field( $field_name, $post_id ); + + + // default formatting + if( is_array($value) ) { + + $value = implode(', ', $value); + + } elseif( is_object($value) ) { + + $value = serialize($value); + + } + + + // image + if( $field['type'] == 'image' || $field['type'] == 'file' ) { + + $url = wp_get_attachment_url($value); + $value = $value . ' (' . $url . ')'; + + } + + + // return + return $value; + + } + + + /* + * wp_restore_post_revision + * + * This action will copy and paste the metadata from a revision to the post + * + * @type action + * @date 11/08/13 + * + * @param $parent_id (int) the destination post + * @return $revision_id (int) the source post + */ + + function wp_restore_post_revision( $post_id, $revision_id ) { + + // copy postmeta from revision to post (restore from revision) + acf_copy_postmeta( $revision_id, $post_id ); + + + // Make sure the latest revision is also updated to match the new $post data + // get latest revision + $revision = acf_get_post_latest_revision( $post_id ); + + + // save + if( $revision ) { + + // copy postmeta from revision to latest revision (potentialy may be the same, but most likely are different) + acf_copy_postmeta( $revision_id, $revision->ID ); + + } + + } + + + /* + * acf_validate_post_id + * + * This function will modify the $post_id and allow loading values from a revision + * + * @type function + * @date 6/3/17 + * @since 5.5.10 + * + * @param $post_id (int) + * @param $_post_id (int) + * @return $post_id (int) + */ + + function acf_validate_post_id( $post_id, $_post_id ) { + + // bail early if no preview in URL + if( !isset($_GET['preview']) ) return $post_id; + + + // bail early if $post_id is not numeric + if( !is_numeric($post_id) ) return $post_id; + + + // vars + $k = $post_id; + $preview_id = 0; + + + // check cache + if( isset($this->cache[$k]) ) return $this->cache[$k]; + + + // validate + if( isset($_GET['preview_id']) ) { + + $preview_id = (int) $_GET['preview_id']; + + } elseif( isset($_GET['p']) ) { + + $preview_id = (int) $_GET['p']; + + } elseif( isset($_GET['page_id']) ) { + + $preview_id = (int) $_GET['page_id']; + + } + + + // bail early id $preview_id does not match $post_id + if( $preview_id != $post_id ) return $post_id; + + + // attempt find revision + $revision = acf_get_post_latest_revision( $post_id ); + + + // save + if( $revision && $revision->post_parent == $post_id) { + + $post_id = (int) $revision->ID; + + } + + + // set cache + $this->cache[$k] = $post_id; + + + // return + return $post_id; + + } + +} + +// initialize +acf()->revisions = new acf_revisions(); + +endif; // class_exists check + + +/* +* acf_save_post_revision +* +* This function will copy meta from a post to it's latest revision +* +* @type function +* @date 26/09/2016 +* @since 5.4.0 +* +* @param $post_id (int) +* @return n/a +*/ + +function acf_save_post_revision( $post_id = 0 ) { + + // get latest revision + $revision = acf_get_post_latest_revision( $post_id ); + + + // save + if( $revision ) { + + acf_copy_postmeta( $post_id, $revision->ID ); + + } + +} + + +/* +* acf_get_post_latest_revision +* +* This function will return the latest revision for a given post +* +* @type function +* @date 25/06/2016 +* @since 5.3.8 +* +* @param $post_id (int) +* @return $post_id (int) +*/ + +function acf_get_post_latest_revision( $post_id ) { + + // vars + $revisions = wp_get_post_revisions( $post_id ); + + + // shift off and return first revision (will return null if no revisions) + $revision = array_shift($revisions); + + + // return + return $revision; + +} + + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/third-party.php b/wp-content/plugins/advanced-custom-fields/includes/third-party.php new file mode 100644 index 0000000..70b9a6b --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/third-party.php @@ -0,0 +1,214 @@ + 1)); + $ee_post_types = array_keys($ee_post_types); + $post_types = array_merge($post_types, $ee_post_types); + $post_types = array_unique($post_types); + } + + // return + return $post_types; + } + + + /* + * tabify_posttypes + * + * This function removes ACF post types from the tabify edit screen (post type selection sidebar) + * + * @type function + * @date 9/10/12 + * @since 3.5.1 + * + * @param $post_id (int) + * @return $post_id (int) + */ + + function tabify_posttypes( $posttypes ) { + + // unset + unset( $posttypes['acf-field-group'] ); + unset( $posttypes['acf-field'] ); + + + // return + return $posttypes; + } + + + /* + * tabify_add_meta_boxes + * + * This function creates dummy metaboxes on the tabify edit screen page + * + * @type function + * @date 9/10/12 + * @since 3.5.1 + * + * @param $post_type (string) + * @return n/a + */ + + function tabify_add_meta_boxes( $post_type ) { + + // get field groups + $field_groups = acf_get_field_groups(); + + + if( !empty($field_groups) ) { + + foreach( $field_groups as $field_group ) { + + // vars + $id = "acf-{$field_group['key']}"; + $title = 'ACF: ' . $field_group['title']; + + + + // add meta box + add_meta_box( $id, $title, '__return_true', $post_type ); + + } + + } + + } + + + /* + * pts_allowed_pages + * + * This filter will prevent PTS from running on the field group page! + * + * @type function + * @date 25/09/2014 + * @since 5.0.0 + * + * @param $pages (array) + * @return $pages + */ + + function pts_allowed_pages( $pages ) { + + // vars + $post_type = ''; + + + // check $_GET becuase it is too early to use functions / global vars + if( !empty($_GET['post_type']) ) { + + $post_type = $_GET['post_type']; + + } elseif( !empty($_GET['post']) ) { + + $post_type = get_post_type( $_GET['post'] ); + + } + + + // check post type + if( $post_type == 'acf-field-group' ) { + + $pages = array(); + + } + + + // return + return $pages; + + } + + /** + * doing_dark_mode + * + * Runs during 'admin_enqueue_scripts' if dark mode is enabled + * + * @date 13/8/18 + * @since 5.7.3 + * + * @param void + * @return void + */ + + function doing_dark_mode() { + wp_enqueue_style('acf-dark', acf_get_url('assets/css/acf-dark.css'), array(), ACF_VERSION ); + } + +} + +new acf_third_party(); + +endif; + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/updates.php b/wp-content/plugins/advanced-custom-fields/includes/updates.php new file mode 100644 index 0000000..fbaea46 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/updates.php @@ -0,0 +1,489 @@ + '', + 'key' => '', + 'slug' => '', + 'basename' => '', + 'version' => '', + )); + + // Check if is_plugin_active() function exists. This is required on the front end of the + // site, since it is in a file that is normally only loaded in the admin. + if( !function_exists( 'is_plugin_active' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + // add if is active plugin (not included in theme) + if( is_plugin_active($plugin['basename']) ) { + $this->plugins[ $plugin['basename'] ] = $plugin; + } + } + + /** + * get_plugin_by + * + * Returns a registered plugin for the give key and value. + * + * @date 3/8/18 + * @since 5.7.2 + * + * @param string $key The array key to compare + * @param string $value The value to compare against + * @return array|false + */ + + function get_plugin_by( $key = '', $value = null ) { + foreach( $this->plugins as $plugin ) { + if( $plugin[$key] === $value ) { + return $plugin; + } + } + return false; + } + + /* + * request + * + * Makes a request to the ACF connect server. + * + * @date 8/4/17 + * @since 5.5.10 + * + * @param string $query The api path. Defaults to 'index.php' + * @param array $body The body to post + * @return array|string|WP_Error + */ + + function request( $query = 'index.php', $body = null ) { + + // vars + $url = 'https://connect.advancedcustomfields.com/' . $query; + + // development mode + if( $this->dev ) { + $url = 'http://connect/' . $query; + acf_log('acf connect: '. $url, $body); + } + + // post + $raw_response = wp_remote_post( $url, array( + 'timeout' => 10, + 'body' => $body + )); + + // wp error + if( is_wp_error($raw_response) ) { + return $raw_response; + + // http error + } elseif( wp_remote_retrieve_response_code($raw_response) != 200 ) { + return new WP_Error( 'server_error', wp_remote_retrieve_response_message($raw_response) ); + } + + // decode response + $json = json_decode( wp_remote_retrieve_body($raw_response), true ); + + // allow non json value + if( $json === null ) { + return wp_remote_retrieve_body($raw_response); + } + + // return + return $json; + } + + /* + * get_plugin_info + * + * Returns update information for the given plugin id. + * + * @date 9/4/17 + * @since 5.5.10 + * + * @param string $id The plugin id such as 'pro'. + * @param boolean $force_check Bypasses cached result. Defaults to false. + * @return array|WP_Error + */ + + function get_plugin_info( $id = '', $force_check = false ) { + + // var + $transient_name = 'acf_plugin_info_' . $id; + + // check cache but allow for $force_check override + if( !$force_check ) { + $transient = get_transient( $transient_name ); + if( $transient !== false ) { + return $transient; + } + } + + // connect + $response = $this->request('v2/plugins/get-info?p='.$id); + + // convert string (misc error) to WP_Error object + if( is_string($response) ) { + $response = new WP_Error( 'server_error', esc_html($response) ); + } + + // allow json to include expiration but force minimum and max for safety + $expiration = $this->get_expiration($response, DAY_IN_SECONDS, MONTH_IN_SECONDS); + + // update transient + set_transient( $transient_name, $response, $expiration ); + + // return + return $response; + } + + /** + * get_plugin_update + * + * Returns specific data from the 'update-check' response. + * + * @date 3/8/18 + * @since 5.7.2 + * + * @param string $basename The plugin basename. + * @param boolean $force_check Bypasses cached result. Defaults to false + * @return array + */ + + function get_plugin_update( $basename = '', $force_check = false ) { + + // get updates + $updates = $this->get_plugin_updates( $force_check ); + + // check for and return update + if( is_array($updates) && isset($updates['plugins'][ $basename ]) ) { + return $updates['plugins'][ $basename ]; + } + return false; + } + + + /** + * get_plugin_updates + * + * Checks for plugin updates. + * + * @date 8/7/18 + * @since 5.6.9 + * @since 5.7.2 Added 'checked' comparison + * + * @param boolean $force_check Bypasses cached result. Defaults to false. + * @return array|WP_Error. + */ + + function get_plugin_updates( $force_check = false ) { + + // var + $transient_name = 'acf_plugin_updates'; + + // construct array of 'checked' plugins + // sort by key to avoid detecting change due to "include order" + $checked = array(); + foreach( $this->plugins as $basename => $plugin ) { + $checked[ $basename ] = $plugin['version']; + } + ksort($checked); + + // $force_check prevents transient lookup + if( !$force_check ) { + $transient = get_transient($transient_name); + + // if cached response was found, compare $transient['checked'] against $checked and ignore if they don't match (plugins/versions have changed) + if( is_array($transient) ) { + $transient_checked = isset($transient['checked']) ? $transient['checked'] : array(); + if( wp_json_encode($checked) !== wp_json_encode($transient_checked) ) { + $transient = false; + } + } + if( $transient !== false ) { + return $transient; + } + } + + // vars + $post = array( + 'plugins' => wp_json_encode($this->plugins), + 'wp' => wp_json_encode(array( + 'wp_name' => get_bloginfo('name'), + 'wp_url' => home_url(), + 'wp_version' => get_bloginfo('version'), + 'wp_language' => get_bloginfo('language'), + 'wp_timezone' => get_option('timezone_string'), + )), + 'acf' => wp_json_encode(array( + 'acf_version' => get_option('acf_version'), + 'acf_pro' => (defined('ACF_PRO') && ACF_PRO), + )), + ); + + // request + $response = $this->request('v2/plugins/update-check', $post); + + // append checked reference + if( is_array($response) ) { + $response['checked'] = $checked; + } + + // allow json to include expiration but force minimum and max for safety + $expiration = $this->get_expiration($response, DAY_IN_SECONDS, MONTH_IN_SECONDS); + + // update transient + set_transient($transient_name, $response, $expiration ); + + // return + return $response; + } + + /** + * get_expiration + * + * This function safely gets the expiration value from a response. + * + * @date 8/7/18 + * @since 5.6.9 + * + * @param mixed $response The response from the server. Default false. + * @param int $min The minimum expiration limit. Default 0. + * @param int $max The maximum expiration limit. Default 0. + * @return int + */ + + function get_expiration( $response = false, $min = 0, $max = 0 ) { + + // vars + $expiration = 0; + + // check + if( is_array($response) && isset($response['expiration']) ) { + $expiration = (int) $response['expiration']; + } + + // min + if( $expiration < $min ) { + return $min; + } + + // max + if( $expiration > $max ) { + return $max; + } + + // return + return $expiration; + } + + /* + * refresh_plugins_transient + * + * Deletes transients and allows a fresh lookup. + * + * @date 11/4/17 + * @since 5.5.10 + * + * @param void + * @return void + */ + + function refresh_plugins_transient() { + delete_site_transient('update_plugins'); + delete_transient('acf_plugin_updates'); + } + + /* + * modify_plugins_transient + * + * Called when WP updates the 'update_plugins' site transient. Used to inject ACF plugin update info. + * + * @date 16/01/2014 + * @since 5.0.0 + * + * @param object $transient + * @return $transient + */ + + function modify_plugins_transient( $transient ) { + + // bail early if no response (error) + if( !isset($transient->response) ) { + return $transient; + } + + // force-check (only once) + $force_check = ($this->checked == 0) ? !empty($_GET['force-check']) : false; + + // fetch updates (this filter is called multiple times during a single page load) + $updates = $this->get_plugin_updates( $force_check ); + + // append + if( is_array($updates) ) { + foreach( $updates['plugins'] as $basename => $update ) { + $transient->response[ $basename ] = (object) $update; + } + } + + // increase + $this->checked++; + + // return + return $transient; + } + + /* + * modify_plugin_details + * + * Returns the plugin data visible in the 'View details' popup + * + * @date 17/01/2014 + * @since 5.0.0 + * + * @param object $result + * @param string $action + * @param object $args + * @return $result + */ + + function modify_plugin_details( $result, $action = null, $args = null ) { + + // vars + $plugin = false; + + // only for 'plugin_information' action + if( $action !== 'plugin_information' ) return $result; + + // find plugin via slug + $plugin = $this->get_plugin_by('slug', $args->slug); + if( !$plugin ) return $result; + + // connect + $response = $this->get_plugin_info($plugin['id']); + + // bail early if no response + if( !is_array($response) ) return $result; + + // remove tags (different context) + unset($response['tags']); + + // convert to object + $response = (object) $response; + + // sections + $sections = array( + 'description' => '', + 'installation' => '', + 'changelog' => '', + 'upgrade_notice' => '' + ); + foreach( $sections as $k => $v ) { + $sections[ $k ] = $response->$k; + } + $response->sections = $sections; + + // return + return $response; + } +} + + +/* +* acf_updates +* +* The main function responsible for returning the one true acf_updates instance to functions everywhere. +* Use this function like you would a global variable, except without needing to declare the global. +* +* Example: +* +* @date 9/4/17 +* @since 5.5.12 +* +* @param void +* @return object +*/ + +function acf_updates() { + global $acf_updates; + if( !isset($acf_updates) ) { + $acf_updates = new ACF_Updates(); + } + return $acf_updates; +} + + +/* +* acf_register_plugin_update +* +* Alias of acf_updates()->add_plugin(). +* +* @type function +* @date 12/4/17 +* @since 5.5.10 +* +* @param array $plugin +* @return void +*/ + +function acf_register_plugin_update( $plugin ) { + acf_updates()->add_plugin( $plugin ); +} + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/upgrades.php b/wp-content/plugins/advanced-custom-fields/includes/upgrades.php new file mode 100644 index 0000000..b6acec8 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/upgrades.php @@ -0,0 +1,534 @@ +num_queries, timer_stop(0)); +} + +/** +* acf_get_db_version +* +* Returns the ACF DB version. +* +* @date 10/09/2016 +* @since 5.4.0 +* +* @param void +* @return string +*/ +function acf_get_db_version() { + return get_option('acf_version'); +} + +/* +* acf_update_db_version +* +* Updates the ACF DB version. +* +* @date 10/09/2016 +* @since 5.4.0 +* +* @param string $version The new version. +* @return void +*/ +function acf_update_db_version( $version = '' ) { + update_option('acf_version', $version ); +} + +/** +* acf_upgrade_500 +* +* Version 5 introduces new post types for field groups and fields. +* +* @date 23/8/18 +* @since 5.7.4 +* +* @param void +* @return void +*/ +function acf_upgrade_500() { + + // log + acf_dev_log('ACF Upgrade 5.0.0.'); + + // action + do_action('acf/upgrade_500'); + + // do tasks + acf_upgrade_500_field_groups(); + + // update version + acf_update_db_version('5.0.0'); +} + +/** +* acf_upgrade_500_field_groups +* +* Upgrades all ACF4 field groups to ACF5 +* +* @date 23/8/18 +* @since 5.7.4 +* +* @param void +* @return void +*/ +function acf_upgrade_500_field_groups() { + + // log + acf_dev_log('ACF Upgrade 5.0.0 Field Groups.'); + + // get old field groups + $ofgs = get_posts(array( + 'numberposts' => -1, + 'post_type' => 'acf', + 'orderby' => 'menu_order title', + 'order' => 'asc', + 'suppress_filters' => true, + )); + + // loop + if( $ofgs ) { + foreach( $ofgs as $ofg ){ + acf_upgrade_500_field_group( $ofg ); + } + } +} + +/** +* acf_upgrade_500_field_group +* +* Upgrades a ACF4 field group to ACF5 +* +* @date 23/8/18 +* @since 5.7.4 +* +* @param object $ofg The old field group post object. +* @return array $nfg The new field group array. +*/ +function acf_upgrade_500_field_group( $ofg ) { + + // log + acf_dev_log('ACF Upgrade 5.0.0 Field Group.', $ofg); + + // vars + $nfg = array( + 'ID' => 0, + 'title' => $ofg->post_title, + 'menu_order' => $ofg->menu_order, + ); + + // construct the location rules + $rules = get_post_meta($ofg->ID, 'rule', false); + $anyorall = get_post_meta($ofg->ID, 'allorany', true); + if( is_array($rules) ) { + + // if field group was duplicated, rules may be a serialized string! + $rules = array_map('maybe_unserialize', $rules); + + // convert rules to groups + $nfg['location'] = acf_convert_rules_to_groups( $rules, $anyorall ); + } + + // settings + if( $position = get_post_meta($ofg->ID, 'position', true) ) { + $nfg['position'] = $position; + } + + if( $layout = get_post_meta($ofg->ID, 'layout', true) ) { + $nfg['layout'] = $layout; + } + + if( $hide_on_screen = get_post_meta($ofg->ID, 'hide_on_screen', true) ) { + $nfg['hide_on_screen'] = maybe_unserialize($hide_on_screen); + } + + // save field group + // acf_upgrade_field_group will call the acf_get_valid_field_group function and apply 'compatibility' changes + $nfg = acf_update_field_group( $nfg ); + + // log + acf_dev_log('> Complete.', $nfg); + + // action for 3rd party + do_action('acf/upgrade_500_field_group', $nfg, $ofg); + + // upgrade fields + acf_upgrade_500_fields( $ofg, $nfg ); + + // trash? + if( $ofg->post_status == 'trash' ) { + acf_trash_field_group( $nfg['ID'] ); + } + + // return + return $nfg; +} + +/** +* acf_upgrade_500_fields +* +* Upgrades all ACF4 fields to ACF5 from a specific field group +* +* @date 23/8/18 +* @since 5.7.4 +* +* @param object $ofg The old field group post object. +* @param array $nfg The new field group array. +* @return void +*/ +function acf_upgrade_500_fields( $ofg, $nfg ) { + + // log + acf_dev_log('ACF Upgrade 5.0.0 Fields.'); + + // global + global $wpdb; + + // get field from postmeta + $rows = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE post_id = %d AND meta_key LIKE %s", $ofg->ID, 'field_%'), ARRAY_A); + + // check + if( $rows ) { + + // vars + $checked = array(); + + // loop + foreach( $rows as $row ) { + + // vars + $field = $row['meta_value']; + $field = maybe_unserialize( $field ); + $field = maybe_unserialize( $field ); // run again for WPML + + // bail early if key already migrated (potential duplicates in DB) + if( isset($checked[ $field['key'] ]) ) continue; + $checked[ $field['key'] ] = 1; + + // add parent + $field['parent'] = $nfg['ID']; + + // migrate field + $field = acf_upgrade_500_field( $field ); + } + } +} + +/** +* acf_upgrade_500_field +* +* Upgrades a ACF4 field to ACF5 +* +* @date 23/8/18 +* @since 5.7.4 +* +* @param array $field The old field. +* @return array $field The new field. +*/ +function acf_upgrade_500_field( $field ) { + + // log + acf_dev_log('ACF Upgrade 5.0.0 Field.', $field); + + // order_no is now menu_order + $field['menu_order'] = acf_extract_var( $field, 'order_no', 0 ); + + // correct very old field keys (field2 => field_2) + if( substr($field['key'], 0, 6) !== 'field_' ) { + $field['key'] = 'field_' . str_replace('field', '', $field['key']); + } + + // extract sub fields + $sub_fields = array(); + if( $field['type'] == 'repeater' ) { + + // loop over sub fields + if( !empty($field['sub_fields']) ) { + foreach( $field['sub_fields'] as $sub_field ) { + $sub_fields[] = $sub_field; + } + } + + // remove sub fields from field + unset( $field['sub_fields'] ); + + } elseif( $field['type'] == 'flexible_content' ) { + + // loop over layouts + if( is_array($field['layouts']) ) { + foreach( $field['layouts'] as $i => $layout ) { + + // generate key + $layout['key'] = uniqid('layout_'); + + // loop over sub fields + if( !empty($layout['sub_fields']) ) { + foreach( $layout['sub_fields'] as $sub_field ) { + $sub_field['parent_layout'] = $layout['key']; + $sub_fields[] = $sub_field; + } + } + + // remove sub fields from layout + unset( $layout['sub_fields'] ); + + // update + $field['layouts'][ $i ] = $layout; + + } + } + } + + // save field + $field = acf_update_field( $field ); + + // log + acf_dev_log('> Complete.', $field); + + // sub fields + if( $sub_fields ) { + foreach( $sub_fields as $sub_field ) { + $sub_field['parent'] = $field['ID']; + acf_upgrade_500_field($sub_field); + } + } + + // action for 3rd party + do_action('acf/update_500_field', $field); + + // return + return $field; +} + +/** +* acf_upgrade_550 +* +* Version 5.5 adds support for the wp_termmeta table added in WP 4.4. +* +* @date 23/8/18 +* @since 5.7.4 +* +* @param void +* @return void +*/ +function acf_upgrade_550() { + + // log + acf_dev_log('ACF Upgrade 5.5.0.'); + + // action + do_action('acf/upgrade_550'); + + // do tasks + acf_upgrade_550_termmeta(); + + // update version + acf_update_db_version('5.5.0'); +} + +/** +* acf_upgrade_550_termmeta +* +* Upgrades all ACF4 termmeta saved in wp_options to the wp_termmeta table. +* +* @date 23/8/18 +* @since 5.7.4 +* +* @param void +* @return void +*/ +function acf_upgrade_550_termmeta() { + + // log + acf_dev_log('ACF Upgrade 5.5.0 Termmeta.'); + + // bail early if no wp_termmeta table + if( get_option('db_version') < 34370 ) { + return; + } + + // get all taxonomies + $taxonomies = get_taxonomies(false, 'objects'); + + // loop + if( $taxonomies ) { + foreach( $taxonomies as $taxonomy ) { + acf_upgrade_550_taxonomy( $taxonomy->name ); + }} + + // action for 3rd party + do_action('acf/upgrade_550_termmeta'); +} + +/* +* acf_wp_upgrade_550_termmeta +* +* When the database is updated to support term meta, migrate ACF term meta data across. +* +* @date 23/8/18 +* @since 5.7.4 +* +* @param string $wp_db_version The new $wp_db_version. +* @param string $wp_current_db_version The old (current) $wp_db_version. +* @return void +*/ +function acf_wp_upgrade_550_termmeta( $wp_db_version, $wp_current_db_version ) { + if( $wp_db_version >= 34370 && $wp_current_db_version < 34370 ) { + if( acf_version_compare(acf_get_db_version(), '>', '5.5.0') ) { + acf_upgrade_550_termmeta(); + } + } +} +add_action( 'wp_upgrade', 'acf_wp_upgrade_550_termmeta', 10, 2 ); + +/** +* acf_upgrade_550_taxonomy +* +* Upgrades all ACF4 termmeta for a specific taxonomy. +* +* @date 24/8/18 +* @since 5.7.4 +* +* @param string $taxonomy The taxonomy name. +* @return void +*/ +function acf_upgrade_550_taxonomy( $taxonomy ) { + + // log + acf_dev_log('ACF Upgrade 5.5.0 Taxonomy.', $taxonomy); + + // global + global $wpdb; + + // vars + $search = $taxonomy . '_%'; + $_search = '_' . $search; + + // escape '_' + // http://stackoverflow.com/questions/2300285/how-do-i-escape-in-sql-server + $search = str_replace('_', '\_', $search); + $_search = str_replace('_', '\_', $_search); + + // search + // results show faster query times using 2 LIKE vs 2 wildcards + $rows = $wpdb->get_results($wpdb->prepare( + "SELECT * + FROM $wpdb->options + WHERE option_name LIKE %s + OR option_name LIKE %s", + $search, + $_search + ), ARRAY_A); + + // loop + if( $rows ) { + foreach( $rows as $row ) { + + /* + Use regex to find "(_)taxonomy_(term_id)_(field_name)" and populate $matches: + Array + ( + [0] => _category_3_color + [1] => _ + [2] => 3 + [3] => color + ) + */ + if( !preg_match("/^(_?){$taxonomy}_(\d+)_(.+)/", $row['option_name'], $matches) ) { + continue; + } + + // vars + $term_id = $matches[2]; + $meta_key = $matches[1] . $matches[3]; + $meta_value = $row['option_value']; + + // update + // memory usage reduced by 50% by using a manual insert vs update_metadata() function. + //update_metadata( 'term', $term_id, $meta_name, $meta_value ); + $wpdb->insert( $wpdb->termmeta, array( + 'term_id' => $term_id, + 'meta_key' => $meta_key, + 'meta_value' => $meta_value + )); + + // log + acf_dev_log('ACF Upgrade 5.5.0 Term.', $term_id, $meta_key); + + // action + do_action('acf/upgrade_550_taxonomy_term', $term_id); + }} + + // action for 3rd party + do_action('acf/upgrade_550_taxonomy', $taxonomy); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/validation.php b/wp-content/plugins/advanced-custom-fields/includes/validation.php new file mode 100644 index 0000000..070453f --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/validation.php @@ -0,0 +1,417 @@ +errors = array(); + + + // ajax + add_action('wp_ajax_acf/validate_save_post', array($this, 'ajax_validate_save_post')); + add_action('wp_ajax_nopriv_acf/validate_save_post', array($this, 'ajax_validate_save_post')); + add_action('acf/validate_save_post', array($this, 'acf_validate_save_post'), 5); + + } + + + /* + * add_error + * + * This function will add an error message for a field + * + * @type function + * @date 25/11/2013 + * @since 5.0.0 + * + * @param $input (string) name attribute of DOM elmenet + * @param $message (string) error message + * @return $post_id (int) + */ + + function add_error( $input, $message ) { + + // add to array + $this->errors[] = array( + 'input' => $input, + 'message' => $message + ); + + } + + + /* + * get_error + * + * This function will return an error for a given input + * + * @type function + * @date 5/03/2016 + * @since 5.3.2 + * + * @param $input (string) name attribute of DOM elmenet + * @return (mixed) + */ + + function get_error( $input ) { + + // bail early if no errors + if( empty($this->errors) ) return false; + + + // loop + foreach( $this->errors as $error ) { + + if( $error['input'] === $input ) return $error; + + } + + + // return + return false; + + } + + + /* + * get_errors + * + * This function will return validation errors + * + * @type function + * @date 25/11/2013 + * @since 5.0.0 + * + * @param n/a + * @return (array|boolean) + */ + + function get_errors() { + + // bail early if no errors + if( empty($this->errors) ) return false; + + + // return + return $this->errors; + + } + + + /* + * reset_errors + * + * This function will remove all errors + * + * @type function + * @date 4/03/2016 + * @since 5.3.2 + * + * @param n/a + * @return n/a + */ + + function reset_errors() { + + $this->errors = array(); + + } + + + /* + * ajax_validate_save_post + * + * This function will validate the $_POST data via AJAX + * + * @type function + * @date 27/10/2014 + * @since 5.0.9 + * + * @param n/a + * @return n/a + */ + + function ajax_validate_save_post() { + + // validate + if( !acf_verify_ajax() ) die(); + + + // vars + $json = array( + 'valid' => 1, + 'errors' => 0 + ); + + + // success + if( acf_validate_save_post() ) { + + wp_send_json_success($json); + + } + + + // update vars + $json['valid'] = 0; + $json['errors'] = acf_get_validation_errors(); + + + // return + wp_send_json_success($json); + + } + + + /* + * acf_validate_save_post + * + * This function will loop over $_POST data and validate + * + * @type function + * @date 7/09/2016 + * @since 5.4.0 + * + * @param n/a + * @return n/a + */ + + function acf_validate_save_post() { + + // bail early if no $_POST + if( empty($_POST['acf']) ) return; + + + // validate + acf_validate_values( $_POST['acf'], 'acf' ); + + } + +} + +// initialize +acf()->validation = new acf_validation(); + +endif; // class_exists check + + +/* +* Public functions +* +* alias of acf()->validation->function() +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_add_validation_error( $input, $message = '' ) { + + return acf()->validation->add_error( $input, $message ); + +} + +function acf_get_validation_errors() { + + return acf()->validation->get_errors(); + +} + +function acf_get_validation_error() { + + return acf()->validation->get_error( $input ); + +} + +function acf_reset_validation_errors() { + + return acf()->validation->reset_errors(); + +} + + +/* +* acf_validate_save_post +* +* This function will validate $_POST data and add errors +* +* @type function +* @date 25/11/2013 +* @since 5.0.0 +* +* @param $show_errors (boolean) if true, errors will be shown via a wp_die screen +* @return (boolean) +*/ + +function acf_validate_save_post( $show_errors = false ) { + + // action + do_action('acf/validate_save_post'); + + + // vars + $errors = acf_get_validation_errors(); + + + // bail ealry if no errors + if( !$errors ) return true; + + + // show errors + if( $show_errors ) { + + $message = '

                          ' . __('Validation failed', 'acf') . '

                          '; + $message .= '
                            '; + foreach( $errors as $error ) { + + $message .= '
                          • ' . $error['message'] . '
                          • '; + + } + $message .= '
                          '; + + + // die + wp_die( $message, __('Validation failed', 'acf') ); + + } + + + // return + return false; + +} + + +/* +* acf_validate_values +* +* This function will validate an array of field values +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param values (array) +* @param $input_prefix (string) +* @return n/a +*/ + +function acf_validate_values( $values, $input_prefix = '' ) { + + // bail early if empty + if( empty($values) ) return; + + + // loop + foreach( $values as $key => $value ) { + + // vars + $field = acf_get_field( $key ); + $input = $input_prefix . '[' . $key . ']'; + + + // bail early if not found + if( !$field ) continue; + + + // validate + acf_validate_value( $value, $field, $input ); + + } + +} + + +/* +* acf_validate_value +* +* This function will validate a field's value +* +* @type function +* @date 6/10/13 +* @since 5.0.0 +* +* @param n/a +* @return n/a +*/ + +function acf_validate_value( $value, $field, $input ) { + + // vars + $valid = true; + $message = sprintf( __( '%s value is required', 'acf' ), $field['label'] ); + + + // valid + if( $field['required'] ) { + + // valid is set to false if the value is empty, but allow 0 as a valid value + if( empty($value) && !is_numeric($value) ) { + + $valid = false; + + } + + } + + + /** + * Filters whether the value is valid. + * + * @date 28/09/13 + * @since 5.0.0 + * + * @param bool $valid The valid status. Return a string to display a custom error message. + * @param mixed $value The value. + * @param array $field The field array. + * @param string $input The input element's name attribute. + */ + $valid = apply_filters( "acf/validate_value/type={$field['type']}", $valid, $value, $field, $input ); + $valid = apply_filters( "acf/validate_value/name={$field['_name']}", $valid, $value, $field, $input ); + $valid = apply_filters( "acf/validate_value/key={$field['key']}", $valid, $value, $field, $input ); + $valid = apply_filters( "acf/validate_value", $valid, $value, $field, $input ); + + + // allow $valid to be a custom error message + if( !empty($valid) && is_string($valid) ) { + + $message = $valid; + $valid = false; + + } + + + if( !$valid ) { + + acf_add_validation_error( $input, $message ); + return false; + + } + + + // return + return true; + +} diff --git a/wp-content/plugins/advanced-custom-fields/includes/walkers/class-acf-walker-nav-menu-edit.php b/wp-content/plugins/advanced-custom-fields/includes/walkers/class-acf-walker-nav-menu-edit.php new file mode 100644 index 0000000..e77e20a --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/walkers/class-acf-walker-nav-menu-edit.php @@ -0,0 +1,74 @@ +]+class="[^"]*field-move)/', + $this->get_fields( $item, $depth, $args, $id ), + $item_output + ); + } + + + /** + * Get custom fields HTML + * + * @since 5.0.0 + * @since 5.7.2 Added action based on https://github.com/ineagu/wp-menu-item-custom-fields + * + * @param object $item Menu item data object. + * @param int $depth Depth of menu item. Used for padding. + * @param array $args Menu item args. + * @param int $id Nav menu ID. + * @return string + */ + function get_fields( $item, $depth, $args = array(), $id = 0 ) { + ob_start(); + + /** + * Get menu item custom fields from plugins/themes + * + * @since 5.7.2 + * + * @param int $item_id post ID of menu + * @param object $item Menu item data object. + * @param int $depth Depth of menu item. Used for padding. + * @param array $args Menu item args. + * @param int $id Nav menu ID. + */ + do_action( 'wp_nav_menu_item_custom_fields', $item->ID, $item, $depth, $args, $id ); + return ob_get_clean(); + } +} + +endif; + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/walkers/class-acf-walker-taxonomy-field.php b/wp-content/plugins/advanced-custom-fields/includes/walkers/class-acf-walker-taxonomy-field.php new file mode 100644 index 0000000..62a95e7 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/walkers/class-acf-walker-taxonomy-field.php @@ -0,0 +1,55 @@ + 'parent', 'id' => 'term_id' ); + + function __construct( $field ) { + + $this->field = $field; + + } + + function start_el( &$output, $term, $depth = 0, $args = array(), $current_object_id = 0) { + + // vars + $selected = in_array( $term->term_id, $this->field['value'] ); + + + // append + $output .= '
                        9. ' . $term->name . ''; + + } + + function end_el( &$output, $term, $depth = 0, $args = array() ) { + + // append + $output .= '
                        10. ' . "\n"; + + } + + function start_lvl( &$output, $depth = 0, $args = array() ) { + + // append + $output .= '
                            ' . "\n"; + + } + + function end_lvl( &$output, $depth = 0, $args = array() ) { + + // append + $output .= '
                          ' . "\n"; + + } + +} + +endif; + + ?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/includes/wpml.php b/wp-content/plugins/advanced-custom-fields/includes/wpml.php new file mode 100644 index 0000000..940a9f7 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/includes/wpml.php @@ -0,0 +1,302 @@ +get_default_language()); + acf_update_setting('current_language', $sitepress->get_current_language()); + + // localize data + acf_localize_data(array( + 'language' => $sitepress->get_current_language() + )); + + // switch lang during AJAX action + add_action('acf/verify_ajax', array($this, 'verify_ajax')); + + // prevent 'acf-field' from being translated + add_filter('get_translatable_documents', array($this, 'get_translatable_documents')); + + // check if 'acf-field-group' is translatable + if( $this->is_translatable() ) { + + // actions + add_action('acf/upgrade_500_field_group', array($this, 'upgrade_500_field_group'), 10, 2); + add_action('icl_make_duplicate', array($this, 'icl_make_duplicate'), 10, 4); + + // filters + add_filter('acf/settings/save_json', array($this, 'settings_save_json')); + add_filter('acf/settings/load_json', array($this, 'settings_load_json')); + } + } + + /** + * is_translatable + * + * Returns true if the acf-field-group post type is translatable. + * Also adds compatibility with ACF4 settings + * + * @date 10/04/2015 + * @since 5.2.3 + * + * @param void + * @return bool + */ + function is_translatable() { + + // global + global $sitepress; + + // vars + $post_types = $sitepress->get_setting('custom_posts_sync_option'); + + // return false if no post types + if( !acf_is_array($post_types) ) { + return false; + } + + // prevent 'acf-field' from being translated + if( !empty($post_types['acf-field']) ) { + $post_types['acf-field'] = 0; + $sitepress->set_setting('custom_posts_sync_option', $post_types); + } + + // when upgrading to version 5, review 'acf' setting + // update 'acf-field-group' if 'acf' is translatable, and 'acf-field-group' does not yet exist + if( !empty($post_types['acf']) && !isset($post_types['acf-field-group']) ) { + $post_types['acf-field-group'] = 1; + $sitepress->set_setting('custom_posts_sync_option', $post_types); + } + + // return true if acf-field-group is translatable + if( !empty($post_types['acf-field-group']) ) { + return true; + } + + // return + return false; + } + + /** + * upgrade_500_field_group + * + * Update the icl_translations table data when creating the field groups. + * + * @date 10/04/2015 + * @since 5.2.3 + * + * @param array $field_group The new field group array. + * @param object $ofg The old field group WP_Post object. + * @return void + */ + function upgrade_500_field_group($field_group, $ofg) { + + // global + global $wpdb; + + // get translation rows (old acf4 and new acf5) + $old_row = $wpdb->get_row($wpdb->prepare( + "SELECT * FROM {$wpdb->prefix}icl_translations WHERE element_type=%s AND element_id=%d", + 'post_acf', $ofg->ID + ), ARRAY_A); + + $new_row = $wpdb->get_row($wpdb->prepare( + "SELECT * FROM {$wpdb->prefix}icl_translations WHERE element_type=%s AND element_id=%d", + 'post_acf-field-group', $field_group['ID'] + ), ARRAY_A); + + // bail ealry if no rows + if( !$old_row || !$new_row ) { + return; + } + + // create reference of old trid to new trid + // trid is a simple int used to find associated objects + if( empty($this->trid_ref) ) { + $this->trid_ref = array(); + } + + // update trid + if( isset($this->trid_ref[ $old_row['trid'] ]) ) { + + // this field group is a translation of another, update it's trid to match the previously inserted group + $new_row['trid'] = $this->trid_ref[ $old_row['trid'] ]; + } else { + + // this field group is the first of it's translations, update the reference for future groups + $this->trid_ref[ $old_row['trid'] ] = $new_row['trid']; + } + + // update icl_translations + // Row is created by WPML, and much easier to tweak it here due to the very complicated and nonsensical WPML logic + $table = "{$wpdb->prefix}icl_translations"; + $data = array( 'trid' => $new_row['trid'], 'language_code' => $old_row['language_code'] ); + $where = array( 'translation_id' => $new_row['translation_id'] ); + $data_format = array( '%d', '%s' ); + $where_format = array( '%d' ); + + // allow source_language_code to equal NULL + if( $old_row['source_language_code'] ) { + + $data['source_language_code'] = $old_row['source_language_code']; + $data_format[] = '%s'; + } + + // update wpdb + $result = $wpdb->update( $table, $data, $where, $data_format, $where_format ); + } + + /** + * settings_save_json + * + * Modifies the json path. + * + * @date 19/05/2014 + * @since 5.0.0 + * + * @param string $path The json save path. + * @return string + */ + function settings_save_json( $path ) { + + // bail early if dir does not exist + if( !is_writable($path) ) { + return $path; + } + + // ammend + $path = untrailingslashit($path) . '/' . acf_get_setting('current_language'); + + // make dir if does not exist + if( !file_exists($path) ) { + mkdir($path, 0777, true); + } + + // return + return $path; + } + + /** + * settings_load_json + * + * Modifies the json path. + * + * @date 19/05/2014 + * @since 5.0.0 + * + * @param string $path The json save path. + * @return string + */ + function settings_load_json( $paths ) { + + // loop + if( $paths ) { + foreach( $paths as $i => $path ) { + $paths[ $i ] = untrailingslashit($path) . '/' . acf_get_setting('current_language'); + }} + + // return + return $paths; + } + + /** + * icl_make_duplicate + * + * description + * + * @date 26/02/2014 + * @since 5.0.0 + * + * @param void + * @return void + */ + function icl_make_duplicate( $master_post_id, $lang, $postarr, $id ) { + + // bail early if not acf-field-group + if( $postarr['post_type'] != 'acf-field-group' ) { + return; + } + + // update the lang + acf_update_setting('current_language', $lang); + + // duplicate field group specifying the $post_id + acf_duplicate_field_group( $master_post_id, $id ); + + // always translate independately to avoid many many bugs! + // - translation post gets a new key (post_name) when origional post is saved + // - local json creates new files due to changed key + global $iclTranslationManagement; + $iclTranslationManagement->reset_duplicate_flag( $id ); + } + + + /** + * verify_ajax + * + * Sets the correct language during AJAX requests. + * + * @type function + * @date 7/08/2015 + * @since 5.2.3 + * + * @param void + * @return void + */ + function verify_ajax() { + + // set the language for this AJAX request + // this will allow get_posts to work as expected (load posts from the correct language) + if( isset($_REQUEST['lang']) ) { + global $sitepress; + $sitepress->switch_lang( $_REQUEST['lang'] ); + } + } + + /** + * get_translatable_documents + * + * Removes 'acf-field' from the available post types for translation. + * + * @type function + * @date 17/8/17 + * @since 5.6.0 + * + * @param array $icl_post_types The array of post types. + * @return array + */ + function get_translatable_documents( $icl_post_types ) { + + // unset + unset( $icl_post_types['acf-field'] ); + + // return + return $icl_post_types; + } +} + +acf_new_instance('ACF_WPML_Compatibility'); + +endif; // class_exists check + +?> \ No newline at end of file diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-ar.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-ar.mo new file mode 100755 index 0000000000000000000000000000000000000000..fe7edddd2140c873c061f5b4ba9f0ef4f2c52225 GIT binary patch literal 58483 zcmd_T37ni&mG}REktN8!$RhA0lBFT(By3_50wEy~3`rn?2%@3VT}hYeu4=2g69OVj z$O?)J?xTVsBs5EiVGEApf(#-q<1$u*I4Ta#jJxBmgYWlu?zvAr)!hO7zyJBX@8|Ot zJpFs_e(t&Fo^$R}mG2)k?EML!n|Du=*MPSik|bTPNRn5zC^ktxcWROx1%4jf3w#zl z5PTlw|KyMSnG8;NU6RZM-wIMivJD&#J_hasejPj#dZs#or8$ z1V0Df4n7A?0oT7iNe%!X1NQ*G1D+3l4}{$0c!(Gewt{N+GEnp`1NR2ILD6+3xF>is zxG(rY@L+H=xF5LF)1LrU&o?~&8IS)@5C6t-H;7Yx2Y`oxhl69l3E+|7B2e^ILDjzk z{4Tf#6yx7KHA#*E{|i)m2f+;GJKAxa;}mcN@#le}w-bC7cr7>`d?#pp2FDS820RGd zYg*vLQK0HS4tzB@0X!T$2TZ}sJ$xM~{(c11INt`o65IibpF2U-^94}(z6wfizU}yH zQ2F;eBT3r8LqO4ah2t7fe0nda@wgLIJD>IVZ-6TQ6Hw)T?)YcNJp_*f6;yp&K+&-c)Ob7qB5KKF;8EZU zpz1pk<}2Uvpz56niteePCdHPR4wf{@- zwcrb&>K}PllDr9=07{N;1Qq{bQ1#paioSj;dg^7{~)OH-}d<5JHBRCnCEAKO78}b2j2@y-aiAXpWgsQPaPD0{sTM|`~$cL zxG$Ym{2`$66I6dEfRdvr;GW%w8{2n|f$j_;u z_%R0*otJ~+Qw>yo*MpL?jiAQ!R`3LHJIEADo&`~5$%yj;Oeq85A9>K-ISz zRR3-S#gAJ-<@+?Ka*uSo&!PAmx9WF61Wze2CCebz8^tBvA8hA!vLBTM1tciXV4_(mS66CxG7s_XT&KALhjYpwR=Wy_3KTz^UME z;JZN8Gm%J*(@aq9%mzi*d{BJ76nquf4W0~M4XWIyz*XSm;48p05gPS#Cb&O%9;orW z)Z%e*vg`mpK+e^|K7#3SI%KA4e<<<&Fl`k5QoLI|V!tJPQ<`7dkEhHBQ~2 z=D~ZxG2q?ciQu@#U0^R$8YWHAJ{5TpE-^PKW_e4;1O!n|JP;|@!MaRXU=x75) zN3Y{*P;|TpRQo$Xwet)(75q0)d>eUjXm<>#dQJr;ujhi|+X7JYy#lKKn?SYu5m0n& z0aedK;3V)LLACP>PyeHb_gWOj?I2L;$AIU7V?otd11Esjf{1={A1L|$8+ZZO`o@6Q zg1Zy`CU`mc9q>@_)JuXq%mGE$a`15QDo}La0*W7>^!Ud>h9Y?uJODiL($N1Ipu!h{ zhk;AMBf+adweulR{k<1d`VJ3232I!w4oa^61=RTcD|iI>6A$l()1dzD4T{dgK#lik zP<$EZ;Zs4iGZj?6>7IT8DEWUAsD3T;_+C)$UjrTquJ!cWK+&@eRQ(Tw>faYU{4EgD zl4rqFz|$@ZenA;jxsQUP<91N(-3hAwhd}l3iyr=p<99*jdk$24zXsLczkrgfz1|%7 zd@y)0;Zfj0;OjxvHwTm)ECe-vH-IYtF;MfM4^+N;J^n#Z?R^o{{Q755<%Ycl*#wUU z)sHWMYX57X>gxy9?(?Ad_9syFB#T{-fNJLmQ1fyGsCp)X>euTXXMo2MJ|7$fRzbD% zAyD;g0@dDjQ1bIxP;&EaQ1$#2RKI=)iqC%nB@ZuvCxF8)5B}9e(8k?y8K`z@j_&|f z{|4|R@Drf=^(|0*ei{@#zW|l*ub|pLs1WAaYe0qH0E*s=K$Tkps@)YHf4zrq1}75# zQSjB^Q=sVmF(~;uU`deM5#Y^)CxNd8KM(G=8~Vq?zikV0cX&HK7wL1sY2aG$4Dd^! z%Du7}^h*mUKEDY(2fPkM#Ux(_M}z6o;6I-OP9=OjD7knP)I9nPsDAFgEX(~8zZ{et z6hZOv?V!fx9>*_&8n1rGpMYZs{|;3Cqf5d5&IL8!SA$CbIH-Ca2loKK2ks3%2fh;g zIjHgcFHrLHHxCbgYmoQDz(a^X1{9qqf$HaJpvL(eQ1ZGMRDErr@|7IR;9i7lpy+=) zxF@&~RJ-p5mH*@5-ry$3dqDByAyDJ-HBk2CC*TP1h~+^~O#vm}9{|q=p9H5PPX}}+ z2~#+^unU_4ZU>JCp9W2S%3)kuz%z-z9IS%3fs&I$Dq(ys04ETB2Pk>G7gT%CgQEAy z?jWznf$IOIAS5K0gW~s7;BfF;p!)rNQ2Cw*HBLVR_W}2OTacH7LGdF6_X9_PDt9s{ z{!Iln56=Tt|69NVz#^!6R)CVb>p{us&7jJC5>!3+fy)0dsQSO`>2;5P9()b)fAH`j zFh%k+3e-4H0WSd00FMFR1Bzewfuj58p!o6|$G?J_CwtUFdntGz;R&GXoeqj0i$IO{ zn?dF80X1�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

                          2ntEr-45J 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\n" +"Language-Team: Adil el hallaoui \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "الحقول المخصصة المتقدمة" + +#: acf.php:355 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "مجموعات الحقول" + +#: acf.php:356 +msgid "Field Group" +msgstr "مجموعة الحقول" + +#: acf.php:357 acf.php:389 includes/admin/admin.php:118 pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New" +msgstr "Ø¥Ø¶Ø§ÙØ© جديد" + +#: acf.php:358 +msgid "Add New Field Group" +msgstr "Ø¥Ø¶Ø§ÙØ© مجموعة حقول جديدة" + +#: acf.php:359 +msgid "Edit Field Group" +msgstr "تحرير مجموعة الحقول" + +#: acf.php:360 +msgid "New Field Group" +msgstr "مجموعة حقول جديدة" + +#: acf.php:361 +msgid "View Field Group" +msgstr "عرض مجموعة الحقول" + +#: acf.php:362 +msgid "Search Field Groups" +msgstr "بحث ÙÙŠ مجموعات الحقول" + +#: acf.php:363 +msgid "No Field Groups found" +msgstr "لم يتم العثور على نتائج" + +#: acf.php:364 +msgid "No Field Groups found in Trash" +msgstr "لا توجد مجموعات حقول ÙÙŠ سلة المهملات" + +#: acf.php:387 includes/admin/admin-field-group.php:182 includes/admin/admin-field-group.php:275 includes/admin/admin-field-groups.php:510 pro/fields/class-acf-field-clone.php:857 +msgid "Fields" +msgstr "حقول" + +#: acf.php:388 +msgid "Field" +msgstr "حقل" + +#: acf.php:390 +msgid "Add New Field" +msgstr "Ø¥Ø¶Ø§ÙØ© حقل جديد" + +#: acf.php:391 +msgid "Edit Field" +msgstr "تحرير الحقل" + +#: acf.php:392 includes/admin/views/field-group-fields.php:41 includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "حقل جديد" + +#: acf.php:393 +msgid "View Field" +msgstr "عرض الحقل" + +#: acf.php:394 +msgid "Search Fields" +msgstr "بحث ÙÙŠ الحقول" + +#: acf.php:395 +msgid "No Fields found" +msgstr "لم يتم العثور على أية حقول" + +#: acf.php:396 +msgid "No Fields found in Trash" +msgstr "لم يتم العثور على أية حقول ÙÙŠ سلة المهملات" + +#: acf.php:435 includes/admin/admin-field-group.php:390 includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "غير نشط" + +#: acf.php:440 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "غير نشطة (%s)" +msgstr[1] "غير نشط (%s)" +msgstr[2] "غير نشطة (%s)" +msgstr[3] "غير نشطة (%s)" +msgstr[4] "غير نشطة (%s)" +msgstr[5] "غير نشطة (%s)" + +#: includes/admin/admin-field-group.php:68 includes/admin/admin-field-group.php:69 includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "تم تحديث مجموعة الحقول" + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "تم حذ٠مجموعة الحقول." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "تم نشر مجموعة الحقول." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "تم Ø­ÙØ¸ مجموعة الحقول." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "تم تقديم مجموعة الحقول." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "تم جدولة مجموعة الحقول لـ." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "تم تحديث مسودة مجموعة الحقول." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "الموقع" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "الإعدادات" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "ارسال إلى سلة المهملات. هل أنت متأكد؟" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "Ù…ÙØ­ÙˆØµ" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "تبديل الحقول غير Ù…ØªÙˆÙØ±" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "عنوان مجموعة الحقول مطلوب" + +#: includes/admin/admin-field-group.php:273 includes/api/api-field-group.php:732 +msgid "copy" +msgstr "انسخ" + +#: includes/admin/admin-field-group.php:274 includes/admin/views/field-group-field-conditional-logic.php:54 includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 includes/admin/views/html-location-group.php:3 includes/api/api-helpers.php:3970 +msgid "or" +msgstr "او" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "الحقول الأصلية" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "الحقول Ø§Ù„ÙØ±Ø¹ÙŠØ©" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "نقل الحقل المخصص" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "لا يمكن نقل هذا الحقل حتى يتم Ø­ÙØ¸ تغييراته" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "لا شيء" + +#: includes/admin/admin-field-group.php:281 includes/input.php:257 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "سيتم Ùقدان التغييرات التي أجريتها إذا غادرت هذه Ø§Ù„ØµÙØ­Ø©" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "لا يجوز استخدام المقطع \"field_\" ÙÙŠ بداية اسم الحقل" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Ù…ÙØ§ØªÙŠØ­ الحقل" + +#: includes/admin/admin-field-group.php:390 includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "نشط" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "تم النقل." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "الحقل %s يمكن الآن إيجاده ÙÙŠ مجموعة الحقول %s" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "إغلاق Ø§Ù„Ù†Ø§ÙØ°Ø©" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "الرجاء تحديد الوجهة لهذا الحقل" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "نقل الحقل" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "نشط (%s)" +msgstr[1] "نشط (%s)" +msgstr[2] "نشطة (%s)" +msgstr[3] "نشطة (%s)" +msgstr[4] "نشطة (%s)" +msgstr[5] "نشطة (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "تم تكرار مجموعة الحقول %s." + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "تم تكرار مجموعة الحقول. %s" +msgstr[1] "تم تكرار مجموعة الحقول. %s" +msgstr[2] "تم تكرار مجموعة الحقول. %s" +msgstr[3] "تم تكرار مجموعة الحقول. %s" +msgstr[4] "تم تكرار مجموعة الحقول. %s" +msgstr[5] "تم تكرار مجموعة الحقول. %s" + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "تمت مزامنة مجموعة الحقول %s." + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "تمت مزامنة مجموعة الحقول. %s" +msgstr[1] "تمت مزامنة مجموعة الحقول. %s" +msgstr[2] "تمت مزامنة مجموعة الحقول. %s" +msgstr[3] "تمت مزامنة مجموعة الحقول. %s" +msgstr[4] "تمت مزامنة مجموعة الحقول. %s" +msgstr[5] "تمت مزامنة مجموعة الحقول. %s" + +#: includes/admin/admin-field-groups.php:394 includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "المزامنة Ù…ØªÙˆÙØ±Ø©" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 pro/fields/class-acf-field-gallery.php:370 +msgid "Title" +msgstr "العنوان" + +#: includes/admin/admin-field-groups.php:508 includes/admin/views/field-group-options.php:96 includes/admin/views/install-network.php:21 includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:397 +msgid "Description" +msgstr "الوصÙ" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "الحالة" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "خصص ووردبرس بحقول قوية، مهنية، وبديهية‪.‬" + +#: includes/admin/admin-field-groups.php:609 includes/admin/settings-info.php:76 pro/admin/views/html-settings-updates.php:111 +msgid "Changelog" +msgstr "سجل التغييرات" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "اطلع على الجديد ÙÙŠ النسخة %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "الموارد" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "الموقع الإليكتروني" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "التوثيق" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "الدعم" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "احتراÙÙŠ" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "شكرا لك لاستخدامك ACF." + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "تكرار هذا العنصر" + +#: includes/admin/admin-field-groups.php:668 includes/admin/admin-field-groups.php:684 includes/admin/views/field-group-field.php:49 pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate" +msgstr "تكرار" + +#: includes/admin/admin-field-groups.php:701 includes/fields/class-acf-field-google-map.php:132 includes/fields/class-acf-field-relationship.php:737 +msgid "Search" +msgstr "بحث" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "اختيار %s" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "مزامنة مجموعة الحقول" + +#: includes/admin/admin-field-groups.php:768 includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "مزامنة" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "تطبيق" + +#: includes/admin/admin-field-groups.php:798 +msgid "Bulk Actions" +msgstr "اجراءات جماعية" + +#: includes/admin/admin.php:113 includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "الحقول المخصصة" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "ترقية قاعدة البيانات" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "استعراض المواقع والترقية" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "حدث خطأ أثناء التحقق من صحة الطلب" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "لا توجد تحديثات Ù…ØªÙˆÙØ±Ø©." + +#: includes/admin/settings-addons.php:51 includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "خطأ. لا يمكن تحميل قائمة Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "معلومات" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "ما الجديد" + +#: includes/admin/settings-tools.php:50 includes/admin/views/settings-tools-export.php:19 includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "أدوات" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "لم يتم تحديد مجموعات الحقول" + +#: includes/admin/settings-tools.php:184 includes/fields/class-acf-field-file.php:174 +msgid "No file selected" +msgstr "لم يتم إختيار ملÙ" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "خطأ ÙÙŠ تحميل المل٠. حاول مرة أخرى" + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "نوع المل٠غير صحيح" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "المل٠المستورد ÙØ§Ø±Øº" + +#: includes/admin/settings-tools.php:331 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "تم استيراد مجموعة حقول واحدة" +msgstr[1] "تم استيراد مجموعة حقول واحدة" +msgstr[2] "تم استيراد مجموعتي حقول" +msgstr[3] "تم استيراد %s مجموعات حقول" +msgstr[4] "تم استيراد %s مجموعات حقول" +msgstr[5] "تم استيراد %s مجموعات حقول" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "المنطق الشرطي" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "إظهار هذا الحقل إذا" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 includes/locations.php:243 +msgid "is equal to" +msgstr "يساوي" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 includes/locations.php:244 +msgid "is not equal to" +msgstr "لا يساوي" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "Ùˆ" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Ø¥Ø¶Ø§ÙØ© مجموعة قاعدة" + +#: includes/admin/views/field-group-field.php:41 pro/fields/class-acf-field-flexible-content.php:420 pro/fields/class-acf-field-repeater.php:358 +msgid "Drag to reorder" +msgstr "اسحب لإعادة الترتيب" + +#: includes/admin/views/field-group-field.php:45 includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "تحرير الحقل" + +#: includes/admin/views/field-group-field.php:48 includes/fields/class-acf-field-image.php:140 includes/fields/class-acf-field-link.php:152 pro/fields/class-acf-field-gallery.php:357 +msgid "Edit" +msgstr "تحرير" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "تكرار الحقل" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "نقل الحقل إلى مجموعة أخرى" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "نقل" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "حذ٠الحقل" + +#: includes/admin/views/field-group-field.php:51 pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete" +msgstr "حذÙ" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "تسمية الحقل" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "هذا هو الاسم الذي سيظهر ÙÙŠ ØµÙØ­Ø© التحرير" + +#: includes/admin/views/field-group-field.php:78 +msgid "Field Name" +msgstr "اسم الحقل" + +#: includes/admin/views/field-group-field.php:79 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "كلمة واحدة، بدون Ù…Ø³Ø§ÙØ§Øª. مسموح بالشرطات والشرطات السÙلية" + +#: includes/admin/views/field-group-field.php:89 +msgid "Field Type" +msgstr "نوع الحقل" + +#: includes/admin/views/field-group-field.php:101 includes/fields/class-acf-field-tab.php:102 +msgid "Instructions" +msgstr "التعليمات" + +#: includes/admin/views/field-group-field.php:102 +msgid "Instructions for authors. Shown when submitting data" +msgstr "تعليمات للكتاب. سيظهر عند إرسال البيانات" + +#: includes/admin/views/field-group-field.php:111 +msgid "Required?" +msgstr "مطلوب؟" + +#: includes/admin/views/field-group-field.php:134 +msgid "Wrapper Attributes" +msgstr "سمات المجمع" + +#: includes/admin/views/field-group-field.php:140 +msgid "width" +msgstr "العرض" + +#: includes/admin/views/field-group-field.php:155 +msgid "class" +msgstr "class (Ø§Ù„ÙØ¦Ø©)" + +#: includes/admin/views/field-group-field.php:168 +msgid "id" +msgstr "id (المعرÙ)" + +#: includes/admin/views/field-group-field.php:180 +msgid "Close Field" +msgstr "أغلق الحقل" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "ترتيب" + +#: includes/admin/views/field-group-fields.php:5 includes/fields/class-acf-field-checkbox.php:317 includes/fields/class-acf-field-radio.php:321 includes/fields/class-acf-field-select.php:530 +#: pro/fields/class-acf-field-flexible-content.php:599 +msgid "Label" +msgstr "تسمية" + +#: includes/admin/views/field-group-fields.php:6 includes/fields/class-acf-field-taxonomy.php:970 pro/fields/class-acf-field-flexible-content.php:612 +msgid "Name" +msgstr "الاسم" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Ø§Ù„Ù…ÙØªØ§Ø­" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "النوع" + +#: includes/admin/views/field-group-fields.php:14 +msgid "No fields. Click the + Add Field button to create your first field." +msgstr "لا توجد حقول. انقر على زر + Ø¥Ø¶Ø§ÙØ© حقل لإنشاء أول حقل." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ اض٠حقل" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "القواعد" + +#: includes/admin/views/field-group-locations.php:10 +msgid "Create a set of rules to determine which edit screens will use these advanced custom fields" +msgstr "إنشىء مجموعة من القواعد لتحديد أي شاشات التحرير ستستخدم هذه الحقول المخصصة" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "نمط" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "قياسي (WP metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "سلس (بدون metabox)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "الموضع" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "عالي (بعد العنوان)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "عادي (بعد المحتوى)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "الجانب" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "تعيين مكان التسمية" + +#: includes/admin/views/field-group-options.php:62 includes/fields/class-acf-field-tab.php:116 +msgid "Top aligned" +msgstr "محاذاة إلى الأعلى" + +#: includes/admin/views/field-group-options.php:63 includes/fields/class-acf-field-tab.php:117 +msgid "Left aligned" +msgstr "محاذاة لليسار" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "تعيين مكان التعليمات" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "أسÙÙ„ التسميات" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "بعد الحقول" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "رقم الترتيب" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "مجموعات الحقول ذات الترتيب الأدنى ستظهر أولا" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "اظهار ÙÙŠ قائمة مجموعة الحقول" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Ø¥Ø®ÙØ§Ø¡ على الشاشة" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "تحديد العناصر Ù„Ø¥Ø®ÙØ§Ø¦Ù‡Ø§ من شاشة التحرير." + +#: includes/admin/views/field-group-options.php:108 +msgid "If multiple field groups appear on an edit screen, the first field group's options will be used (the one with the lowest order number)" +msgstr "إذا ظهرت مجموعات حقول متعددة ÙÙŠ شاشة التحرير. سيتم استخدام خيارات المجموعة الأولى (تلك التي تحتوي على أقل رقم ترتيب)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "الرابط الدائم" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "محرر المحتوى" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "مختصر الموضوع" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "النقاش" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "التعليقات" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "المراجعة" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "الاسم اللطيÙ" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "الكاتب" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "الشكل" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "سمات Ø§Ù„ØµÙØ­Ø©" + +#: includes/admin/views/field-group-options.php:126 includes/fields/class-acf-field-relationship.php:751 +msgid "Featured Image" +msgstr "صورة بارزة" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Ø§Ù„ØªØµÙ†ÙŠÙØ§Øª" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "الوسوم" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "إرسال Trackbacks" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "إظهار هذه المجموعة إذا" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "ترقية المواقع" + +#: includes/admin/views/install-network.php:9 includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr " ترقية قاعدة بيانات الحقول المخصصة المتقدمة" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "The following sites require a DB upgrade. Check the ones you want to update and then click %s." +msgstr "تتطلب المواقع التالية ترقية قاعدة البيانات. تحقق من تلك التي تحتاج إلى ترقيتها ومن ثم انقر على %s." + +#: includes/admin/views/install-network.php:20 includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "الموقع" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "يتطلب الموقع ترقية قاعدة البيانات من %s إلى %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "الموقع محدث" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "Database Upgrade complete. Return to network dashboard" +msgstr "تمت ترقية قاعدة البيانات. العودة إلى لوحة معلومات الشبكة" + +#: includes/admin/views/install-network.php:102 includes/admin/views/install-notice.php:42 +msgid "It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?" +msgstr "يوصى بشدة أن تقوم بأخذ نسخة احتياطية من قاعدة البيانات قبل المتابعة. هل أنت متأكد أنك ترغب ÙÙŠ تشغيل التحديث الآن؟" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "اكتملت عملية الترقية" + +#: includes/admin/views/install-network.php:162 includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "ترقية البيانات إلى الإصدار %s" + +#: includes/admin/views/install-notice.php:8 pro/fields/class-acf-field-repeater.php:36 +msgid "Repeater" +msgstr "المكرر" + +#: includes/admin/views/install-notice.php:9 pro/fields/class-acf-field-flexible-content.php:36 +msgid "Flexible Content" +msgstr "المحتوى المرن" + +#: includes/admin/views/install-notice.php:10 pro/fields/class-acf-field-gallery.php:36 +msgid "Gallery" +msgstr "الالبوم" + +#: includes/admin/views/install-notice.php:11 pro/locations/class-acf-location-options-page.php:13 +msgid "Options Page" +msgstr "خيارات Ø§Ù„ØµÙØ­Ø©" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "ترقية قاعدة البيانات مطلوبة" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "شكرا لك على تحديث %s إلى الإصدار %s!" + +#: includes/admin/views/install-notice.php:28 +msgid "Before you start using the new awesome features, please update your database to the newest version." +msgstr "قبل البدء باستخدام الميزات الجديدة، الرجاء تحديث قاعدة البيانات الخاصة بك إلى الإصدار الأحدث." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "Please also ensure any premium add-ons (%s) have first been updated to the latest version." +msgstr "يرجى أيضا التأكد من تحديث أي Ø¥Ø¶Ø§ÙØ§Øª مدÙوعة (%s) أولا إلى أحدث إصدار." + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "قراءة مهام الترقية..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "تمت ترقية قاعدة البيانات. اطلع على الجديد" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "تحميل وتثبيت" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "تم التثبيت" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "مرحبا بك ÙÙŠ الحقول المخصصة المتقدمة" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it." +msgstr "شكرا لك للتحديث! ACF %s أكبر ÙˆØ£ÙØ¶Ù„ من أي وقت مضى." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "حقول مخصصة أكثر سلاسة" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "تحسين قابلية الاستخدام" + +#: includes/admin/views/settings-info.php:23 +msgid "Including the popular Select2 library has improved both usability and speed across a number of field types including post object, page link, taxonomy and select." +msgstr "دمج مكتبة Select2 حسن قابلية الاستخدام والسرعة عبر عدد من أنواع الحقول بما ÙÙŠ ذلك موضوع المنشور، رابط Ø§Ù„ØµÙØ­Ø©ØŒ التصني٠والتحديد" + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "تصميم محسّن" + +#: includes/admin/views/settings-info.php:28 +msgid "Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are seen on the gallery, relationship and oEmbed (new) fields!" +msgstr "شهدت العديد من الحقول تحديث مرئي جعل ACF تبدو Ø£ÙØ¶Ù„ من أي وقت مضى! تلاحظ التغييرات ÙÙŠ المعرض، العلاقة وحقول oEmbed (جديد)!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "بيانات محسّنة" + +#: includes/admin/views/settings-info.php:33 +msgid "Redesigning the data architecture has allowed sub fields to live independently from their parents. This allows you to drag and drop fields in and out of parent fields!" +msgstr "إعادة تصميم هيكل البيانات سمحت للحقول Ø§Ù„ÙØ±Ø¹ÙŠØ© للعمل بشكل مستقل عن الحقول الأصلية. هذا يسمح لك بسحب واÙلات الحقول داخل وخارج الحقول الأصلية!" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "وداعا للوظائ٠الإضاÙية. مرحبا برو" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "نقدم ACF برو" + +#: includes/admin/views/settings-info.php:45 +msgid "We're changing the way premium functionality is delivered in an exciting way!" +msgstr "نحن نغير الطريقة التي يتم بها تقديم الأداء المتميز بطريقة مثيرة!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro version of ACF. With both personal and developer licenses available, premium functionality is more affordable and " +"accessible than ever before!" +msgstr "" +"تم دمج Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª المدÙوعة الأربعة ÙÙŠ النسخة الإحتراÙية من ACF. مع توÙير رخص شخصية واخرى للمطورين، لتصبح الوظائ٠المميزة بأسعار معقولة ويمكن الوصول إليها أكثر من أي وقت مضى!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "ميزات قوية" + +#: includes/admin/views/settings-info.php:51 +msgid "ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field and the ability to create extra admin options pages!" +msgstr "يحتوي ACF PRO على ميزات قوية مثل البيانات القابلة للتكرار، والمحتوى المرن، وحقل المعرض الجميل والقدرة على إنشاء ØµÙØ­Ø§Øª خيارات إضاÙية للمشرÙين!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "اقرأ المزيد حول ميزات ACF PRO." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "ترقية سهلة" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +msgstr "للمساعدة ÙÙŠ جعل الترقية سهلة، سجل الدخول إلى حسابك ÙÙŠ المتجر واحصل على نسخة مجانية من ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "We also wrote an upgrade guide to answer any questions, but if you do have one, please contact our support team via the help desk" +msgstr "نحن كتبنا أيضا دليل للتحديث للرد على أية أسئلة، ولكن إذا كان إذا كان لديك اي سؤال، الرجاء الاتصال Ø¨ÙØ±ÙŠÙ‚ الدعم الخاص بنا عن طريق مكتب المساعدة" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "تحت الغطاء" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "إعدادات حقول أكثر ذكاء" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF الآن ÙŠØ­ÙØ¸ إعدادات الحقول كـ post object Ù…Ù†ÙØµÙ„" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "اجاكس أكثر" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "حقول اكثر تستخدم بحث أجاكس لتسريع تحميل Ø§Ù„ØµÙØ­Ø©" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "JSON محلي" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "تصدير اتوماتيكي الى JSON يحسن السرعة" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "تحكم Ø£ÙØ¶Ù„ ÙÙŠ الإصدارات" + +#: includes/admin/views/settings-info.php:89 +msgid "New auto export to JSON feature allows field settings to be version controlled" +msgstr "يسمح التصدير الاتوماتيكي الجديدة إلى JSON لإعدادات الحقول بأن تكون قابلة لتحكم الإصدارات" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "استبدال XML بـ JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "الاستيراد والتصدير الآن يستخدم JSON عوضا عن XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "أشكال جديدة" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "يمكن الآن تعيين الحقول إلى التعليقات، الودجات وجميع نماذج المستخدم!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "تم Ø¥Ø¶Ø§ÙØ© حقل جديد لتضمين المحتوى" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "معرض صور جديد" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "شهد حقل المعرض عملية تغيير جذرية" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "إعدادات جديدة" + +#: includes/admin/views/settings-info.php:116 +msgid "Field group settings have been added for label placement and instruction placement" +msgstr "تمت Ø¥Ø¶Ø§ÙØ© إعدادات لموضع التسمية والتعليمات بمجموعة الحقول " + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "نماذج Ø§ÙØ¶Ù„" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() يمكن الآن إنشاء مشاركة جديدة عند الإرسال" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "تحقق Ø§ÙØ¶Ù„" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "يتم الآن التحقق من صحة النموذج عن طريق PHP + AJAX بدلا من Ø¬Ø§ÙØ§ سكريبت Ùقط" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "حقل العلاقة" + +#: includes/admin/views/settings-info.php:133 +msgid "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "إعداد جديد لحقل العلاقة خاص بالÙلاتر (البحث، نوع المقالة، التصنيÙ)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "نقل الحقول" + +#: includes/admin/views/settings-info.php:140 +msgid "New field group functionality allows you to move a field between groups & parents" +msgstr "يمكن الان نقل الحقل بين المجموعات Ùˆ المجموعات الأصلية" + +#: includes/admin/views/settings-info.php:144 includes/fields/class-acf-field-page_link.php:36 +msgid "Page Link" +msgstr "رابط Ø§Ù„ØµÙØ­Ø©" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "مجموعة المحÙوظات الجديدة ÙÙŠ تحديد الحقل page_link" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "ØµÙØ­Ø§Øª خيارات Ø£ÙØ¶Ù„" + +#: includes/admin/views/settings-info.php:150 +msgid "New functions for options page allow creation of both parent and child menu pages" +msgstr "مهام جديدة Ù„ØµÙØ­Ø© الخيارات تسمح بإنشاء كل من ØµÙØ­Ø§Øª القائمة الأصلية ÙˆØ§Ù„ÙØ±Ø¹ÙŠØ©" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "نعتقد أنك ستحب هذه التغييرات ÙÙŠ %s." + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "تصدير مجموعات الحقول لـ PHP" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected field group(s). A local field group can provide many benefits such as faster load times, version control & dynamic " +"fields/settings. Simply copy and paste the following code to your theme's functions.php file or include it within an external file." +msgstr "" +"يمكن استخدام الكود التالي لتسجيل نسخة محلية من مجموعة الحقول المحددة. مجموعة الحقول المحلية يمكن أن ØªÙˆÙØ± العديد من المزايا مثل التحميل بشكل أسرع، والتحكم ÙÙŠ الإصدار والإعدادات والحقول " +"الديناميكية. ببساطة أنسخ وألصق الكود التالي إلى مل٠functions.php بالقالب الخاص بك أو إدراجه ضمن مل٠خارجي." + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "حدد مجموعات الحقول" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "تصدير مجموعات الحقول" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export method. Use the download button to export to a .json file which you can then import to another ACF installation. " +"Use the generate button to export to PHP code which you can place in your theme." +msgstr "" +"حدد مجموعات الحقول التي ترغب ÙÙŠ تصديرها ومن ثم حدد طريقة التصدير. استخدام زر التحميل للتصدير إلى مل٠.json الذي يمكنك من ثم استيراده إلى تثبيت ACF آخر. استخدم زر التوليد للتصدير بصيغة PHP " +"الذي يمكنك ادراجه ÙÙŠ القالب الخاص بك." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "تنزيل مل٠التصدير" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "توليد كود التصدير" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "استيراد مجموعات الحقول" + +#: includes/admin/views/settings-tools.php:67 +msgid "Select the Advanced Custom Fields JSON file you would like to import. When you click the import button below, ACF will import the field groups." +msgstr "حدد مل٠JSON الذي ترغب ÙÙŠ استيراده. عند النقر على زر استيراد أدناه، ACF ستقوم باستيراد مجموعات الحقول." + +#: includes/admin/views/settings-tools.php:77 includes/fields/class-acf-field-file.php:46 +msgid "Select File" +msgstr "إختر ملÙ" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "استيراد" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "الصورة المصغرة" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "متوسط" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "كبير" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "العرض الكامل" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1837 pro/fields/class-acf-field-clone.php:1042 +msgid "(no title)" +msgstr "(بدون عنوان)" + +#: includes/api/api-helpers.php:1874 includes/fields/class-acf-field-page_link.php:284 includes/fields/class-acf-field-post_object.php:283 includes/fields/class-acf-field-taxonomy.php:992 +msgid "Parent" +msgstr "الأب" + +#: includes/api/api-helpers.php:3891 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "يجب أن يكون عرض الصورة على الأقل %dpx." + +#: includes/api/api-helpers.php:3896 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "يجب إلا يتجاوز عرض الصورة %dpx." + +#: includes/api/api-helpers.php:3912 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "يجب أن يكون Ø§Ø±ØªÙØ§Ø¹ الصورة على الأقل %dpx." + +#: includes/api/api-helpers.php:3917 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "يجب إلا يتجاوز Ø§Ø±ØªÙØ§Ø¹ الصورة %dpx." + +#: includes/api/api-helpers.php:3935 +#, php-format +msgid "File size must be at least %s." +msgstr "يجب إلا يقل حجم المل٠عن %s." + +#: includes/api/api-helpers.php:3940 +#, php-format +msgid "File size must must not exceed %s." +msgstr "حجم المل٠يجب يجب أن لا يتجاوز %s." + +#: includes/api/api-helpers.php:3974 +#, php-format +msgid "File type must be %s." +msgstr "يجب أن يكون نوع المل٠%s." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "أساسية" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "المحتوى" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "خيار" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "ذو علاقة" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 includes/fields/class-acf-field-checkbox.php:286 includes/fields/class-acf-field-group.php:485 includes/fields/class-acf-field-radio.php:300 +#: pro/fields/class-acf-field-clone.php:889 pro/fields/class-acf-field-flexible-content.php:569 pro/fields/class-acf-field-flexible-content.php:618 pro/fields/class-acf-field-repeater.php:514 +msgid "Layout" +msgstr "المخطط" + +#: includes/fields.php:305 +msgid "Field type does not exist" +msgstr "نوع الحقل غير موجود" + +#: includes/fields.php:305 +msgid "Unknown" +msgstr "غير معروÙ" + +#: includes/fields/class-acf-field-checkbox.php:36 includes/fields/class-acf-field-taxonomy.php:786 +msgid "Checkbox" +msgstr "مربع اختيار" + +#: includes/fields/class-acf-field-checkbox.php:150 +msgid "Toggle All" +msgstr "تبديل الكل" + +#: includes/fields/class-acf-field-checkbox.php:207 +msgid "Add new choice" +msgstr "Ø¥Ø¶Ø§ÙØ© اختيار جديد" + +#: includes/fields/class-acf-field-checkbox.php:246 includes/fields/class-acf-field-radio.php:250 includes/fields/class-acf-field-select.php:466 +msgid "Choices" +msgstr "خيارات" + +#: includes/fields/class-acf-field-checkbox.php:247 includes/fields/class-acf-field-radio.php:251 includes/fields/class-acf-field-select.php:467 +msgid "Enter each choice on a new line." +msgstr "أدخل كل خيار ÙÙŠ سطر جديد." + +#: includes/fields/class-acf-field-checkbox.php:247 includes/fields/class-acf-field-radio.php:251 includes/fields/class-acf-field-select.php:467 +msgid "For more control, you may specify both a value and label like this:" +msgstr "لمزيد من التحكم، يمكنك تحديد كل من القيمة والتسمية كما يلي:" + +#: includes/fields/class-acf-field-checkbox.php:247 includes/fields/class-acf-field-radio.php:251 includes/fields/class-acf-field-select.php:467 +msgid "red : Red" +msgstr "أحمر : أحمر" + +#: includes/fields/class-acf-field-checkbox.php:255 +msgid "Allow Custom" +msgstr "اسمح بالتخصيص" + +#: includes/fields/class-acf-field-checkbox.php:260 +msgid "Allow 'custom' values to be added" +msgstr "السماح Ø¨Ø¥Ø¶Ø§ÙØ© قيم \"مخصصة\"" + +#: includes/fields/class-acf-field-checkbox.php:266 +msgid "Save Custom" +msgstr "Ø­ÙØ¸ المخصص" + +#: includes/fields/class-acf-field-checkbox.php:271 +msgid "Save 'custom' values to the field's choices" +msgstr "Ø­ÙØ¸ القيم \"المخصصة\" لخيارات الحقل" + +#: includes/fields/class-acf-field-checkbox.php:277 includes/fields/class-acf-field-color_picker.php:146 includes/fields/class-acf-field-email.php:133 +#: includes/fields/class-acf-field-number.php:145 includes/fields/class-acf-field-radio.php:291 includes/fields/class-acf-field-select.php:475 includes/fields/class-acf-field-text.php:142 +#: includes/fields/class-acf-field-textarea.php:139 includes/fields/class-acf-field-true_false.php:150 includes/fields/class-acf-field-url.php:114 +#: includes/fields/class-acf-field-wysiwyg.php:436 +msgid "Default Value" +msgstr "قيمة Ø¥ÙØªØ±Ø§Ø¶ÙŠØ©" + +#: includes/fields/class-acf-field-checkbox.php:278 includes/fields/class-acf-field-select.php:476 +msgid "Enter each default value on a new line" +msgstr "قم بإدخال كل قيمة Ø§ÙØªØ±Ø§Ø¶ÙŠØ© ÙÙŠ سطر جديد" + +#: includes/fields/class-acf-field-checkbox.php:292 includes/fields/class-acf-field-radio.php:306 +msgid "Vertical" +msgstr "عمودي" + +#: includes/fields/class-acf-field-checkbox.php:293 includes/fields/class-acf-field-radio.php:307 +msgid "Horizontal" +msgstr "Ø£Ùقي" + +#: includes/fields/class-acf-field-checkbox.php:300 +msgid "Toggle" +msgstr "تبديل" + +#: includes/fields/class-acf-field-checkbox.php:301 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "أض٠مربع اختيار إضاÙÙŠ ÙÙŠ البداية لتبديل جميع الخيارات" + +#: includes/fields/class-acf-field-checkbox.php:310 includes/fields/class-acf-field-file.php:219 includes/fields/class-acf-field-image.php:206 includes/fields/class-acf-field-link.php:180 +#: includes/fields/class-acf-field-radio.php:314 includes/fields/class-acf-field-taxonomy.php:839 +msgid "Return Value" +msgstr "القيمة المرجعة" + +#: includes/fields/class-acf-field-checkbox.php:311 includes/fields/class-acf-field-file.php:220 includes/fields/class-acf-field-image.php:207 includes/fields/class-acf-field-link.php:181 +#: includes/fields/class-acf-field-radio.php:315 +msgid "Specify the returned value on front end" +msgstr "حدد القيمة التي سيتم إرجاعها ÙÙŠ الواجهة الأمامية" + +#: includes/fields/class-acf-field-checkbox.php:316 includes/fields/class-acf-field-radio.php:320 includes/fields/class-acf-field-select.php:529 +msgid "Value" +msgstr "قيمة" + +#: includes/fields/class-acf-field-checkbox.php:318 includes/fields/class-acf-field-radio.php:322 includes/fields/class-acf-field-select.php:531 +msgid "Both (Array)" +msgstr "كلاهما (Array)" + +#: includes/fields/class-acf-field-color_picker.php:36 +msgid "Color Picker" +msgstr "محدد اللون" + +#: includes/fields/class-acf-field-color_picker.php:83 +msgid "Clear" +msgstr "مسح" + +#: includes/fields/class-acf-field-color_picker.php:84 +msgid "Default" +msgstr "Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ" + +#: includes/fields/class-acf-field-color_picker.php:85 +msgid "Select Color" +msgstr "اختر اللون" + +#: includes/fields/class-acf-field-color_picker.php:86 +msgid "Current Color" +msgstr "اللون الحالي" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgid "Date Picker" +msgstr "عنصر إختيار التاريخ" + +#: includes/fields/class-acf-field-date_picker.php:44 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "تم" + +#: includes/fields/class-acf-field-date_picker.php:45 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "اليوم" + +#: includes/fields/class-acf-field-date_picker.php:46 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "التالي" + +#: includes/fields/class-acf-field-date_picker.php:47 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "السابق" + +#: includes/fields/class-acf-field-date_picker.php:48 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "اسبوع" + +#: includes/fields/class-acf-field-date_picker.php:223 includes/fields/class-acf-field-date_time_picker.php:197 includes/fields/class-acf-field-time_picker.php:127 +msgid "Display Format" +msgstr "تنسيق العرض" + +#: includes/fields/class-acf-field-date_picker.php:224 includes/fields/class-acf-field-date_time_picker.php:198 includes/fields/class-acf-field-time_picker.php:128 +msgid "The format displayed when editing a post" +msgstr "تنسيق العرض عند تحرير المقال" + +#: includes/fields/class-acf-field-date_picker.php:232 includes/fields/class-acf-field-date_picker.php:263 includes/fields/class-acf-field-date_time_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:224 includes/fields/class-acf-field-time_picker.php:135 includes/fields/class-acf-field-time_picker.php:150 +msgid "Custom:" +msgstr "مخصص:" + +#: includes/fields/class-acf-field-date_picker.php:242 +msgid "Save Format" +msgstr "Ø­ÙØ¸ التنسيق" + +#: includes/fields/class-acf-field-date_picker.php:243 +msgid "The format used when saving a value" +msgstr "التنسيق المستخدم عند Ø­ÙØ¸ القيمة" + +#: includes/fields/class-acf-field-date_picker.php:253 includes/fields/class-acf-field-date_time_picker.php:214 includes/fields/class-acf-field-post_object.php:447 +#: includes/fields/class-acf-field-relationship.php:778 includes/fields/class-acf-field-select.php:524 includes/fields/class-acf-field-time_picker.php:142 +msgid "Return Format" +msgstr "التنسيق المسترجع" + +#: includes/fields/class-acf-field-date_picker.php:254 includes/fields/class-acf-field-date_time_picker.php:215 includes/fields/class-acf-field-time_picker.php:143 +msgid "The format returned via template functions" +msgstr "التنسيق عاد عن طريق وظائ٠القالب" + +#: includes/fields/class-acf-field-date_picker.php:272 includes/fields/class-acf-field-date_time_picker.php:231 +msgid "Week Starts On" +msgstr "يبدأ الأسبوع ÙÙŠ" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgid "Date Time Picker" +msgstr "عنصر إختيار التاريخ والوقت" + +#: includes/fields/class-acf-field-date_time_picker.php:44 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "اختر الوقت" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "الوقت" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "الساعة" + +#: includes/fields/class-acf-field-date_time_picker.php:47 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "الدقيقة" + +#: includes/fields/class-acf-field-date_time_picker.php:48 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "الثانية" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "ميلي ثانية" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "ميكرو ثانية" + +#: includes/fields/class-acf-field-date_time_picker.php:51 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "المنطقة الزمنية" + +#: includes/fields/class-acf-field-date_time_picker.php:52 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "الان" + +#: includes/fields/class-acf-field-date_time_picker.php:53 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "تم" + +#: includes/fields/class-acf-field-date_time_picker.php:54 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "اختر" + +#: includes/fields/class-acf-field-date_time_picker.php:56 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "صباحا" + +#: includes/fields/class-acf-field-date_time_picker.php:57 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "ص" + +#: includes/fields/class-acf-field-date_time_picker.php:60 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "مساء" + +#: includes/fields/class-acf-field-date_time_picker.php:61 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "Ù…" + +#: includes/fields/class-acf-field-email.php:36 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: includes/fields/class-acf-field-email.php:134 includes/fields/class-acf-field-number.php:146 includes/fields/class-acf-field-radio.php:292 includes/fields/class-acf-field-text.php:143 +#: includes/fields/class-acf-field-textarea.php:140 includes/fields/class-acf-field-url.php:115 includes/fields/class-acf-field-wysiwyg.php:437 +msgid "Appears when creating a new post" +msgstr "يظهر عند إنشاء مقالة جديدة" + +#: includes/fields/class-acf-field-email.php:142 includes/fields/class-acf-field-number.php:154 includes/fields/class-acf-field-password.php:134 includes/fields/class-acf-field-text.php:151 +#: includes/fields/class-acf-field-textarea.php:148 includes/fields/class-acf-field-url.php:123 +msgid "Placeholder Text" +msgstr "نص الـ placeholder" + +#: includes/fields/class-acf-field-email.php:143 includes/fields/class-acf-field-number.php:155 includes/fields/class-acf-field-password.php:135 includes/fields/class-acf-field-text.php:152 +#: includes/fields/class-acf-field-textarea.php:149 includes/fields/class-acf-field-url.php:124 +msgid "Appears within the input" +msgstr "سيظهر داخل مربع الإدخال." + +#: includes/fields/class-acf-field-email.php:151 includes/fields/class-acf-field-number.php:163 includes/fields/class-acf-field-password.php:143 includes/fields/class-acf-field-text.php:160 +msgid "Prepend" +msgstr "بادئة" + +#: includes/fields/class-acf-field-email.php:152 includes/fields/class-acf-field-number.php:164 includes/fields/class-acf-field-password.php:144 includes/fields/class-acf-field-text.php:161 +msgid "Appears before the input" +msgstr "يظهر قبل الإدخال" + +#: includes/fields/class-acf-field-email.php:160 includes/fields/class-acf-field-number.php:172 includes/fields/class-acf-field-password.php:152 includes/fields/class-acf-field-text.php:169 +msgid "Append" +msgstr "إلحاق" + +#: includes/fields/class-acf-field-email.php:161 includes/fields/class-acf-field-number.php:173 includes/fields/class-acf-field-password.php:153 includes/fields/class-acf-field-text.php:170 +msgid "Appears after the input" +msgstr "يظهر بعد الإدخال" + +#: includes/fields/class-acf-field-file.php:36 +msgid "File" +msgstr "ملÙ" + +#: includes/fields/class-acf-field-file.php:47 +msgid "Edit File" +msgstr "تعديل الملÙ" + +#: includes/fields/class-acf-field-file.php:48 +msgid "Update File" +msgstr "تحديث الملÙ" + +#: includes/fields/class-acf-field-file.php:49 includes/fields/class-acf-field-image.php:54 includes/media.php:57 pro/fields/class-acf-field-gallery.php:55 +msgid "Uploaded to this post" +msgstr "مرÙوع الى هذه المقالة" + +#: includes/fields/class-acf-field-file.php:145 +msgid "File name" +msgstr "إسم الملÙ" + +#: includes/fields/class-acf-field-file.php:149 includes/fields/class-acf-field-file.php:252 includes/fields/class-acf-field-file.php:263 includes/fields/class-acf-field-image.php:266 +#: includes/fields/class-acf-field-image.php:295 pro/fields/class-acf-field-gallery.php:705 pro/fields/class-acf-field-gallery.php:734 +msgid "File size" +msgstr "حجم الملÙ" + +#: includes/fields/class-acf-field-file.php:174 +msgid "Add File" +msgstr "Ø¥Ø¶Ø§ÙØ© ملÙ" + +#: includes/fields/class-acf-field-file.php:225 +msgid "File Array" +msgstr "مصÙÙˆÙØ© الملÙ" + +#: includes/fields/class-acf-field-file.php:226 +msgid "File URL" +msgstr "رابط المل٠URL" + +#: includes/fields/class-acf-field-file.php:227 +msgid "File ID" +msgstr "معر٠الملÙ" + +#: includes/fields/class-acf-field-file.php:234 includes/fields/class-acf-field-image.php:231 pro/fields/class-acf-field-gallery.php:670 +msgid "Library" +msgstr "المكتبة" + +#: includes/fields/class-acf-field-file.php:235 includes/fields/class-acf-field-image.php:232 pro/fields/class-acf-field-gallery.php:671 +msgid "Limit the media library choice" +msgstr "الحد من اختيار مكتبة الوسائط" + +#: includes/fields/class-acf-field-file.php:240 includes/fields/class-acf-field-image.php:237 includes/locations/class-acf-location-attachment.php:105 +#: includes/locations/class-acf-location-comment.php:83 includes/locations/class-acf-location-nav-menu.php:106 includes/locations/class-acf-location-taxonomy.php:83 +#: includes/locations/class-acf-location-user-form.php:91 includes/locations/class-acf-location-user-role.php:108 includes/locations/class-acf-location-widget.php:87 +#: pro/fields/class-acf-field-gallery.php:676 +msgid "All" +msgstr "الكل" + +#: includes/fields/class-acf-field-file.php:241 includes/fields/class-acf-field-image.php:238 pro/fields/class-acf-field-gallery.php:677 +msgid "Uploaded to post" +msgstr "مرÙوع الى المقالة" + +#: includes/fields/class-acf-field-file.php:248 includes/fields/class-acf-field-image.php:245 pro/fields/class-acf-field-gallery.php:684 +msgid "Minimum" +msgstr "الحد الأدنى" + +#: includes/fields/class-acf-field-file.php:249 includes/fields/class-acf-field-file.php:260 +msgid "Restrict which files can be uploaded" +msgstr "تقييد Ø§Ù„Ù…Ù„ÙØ§Øª التي يمكن Ø±ÙØ¹Ù‡Ø§" + +#: includes/fields/class-acf-field-file.php:259 includes/fields/class-acf-field-image.php:274 pro/fields/class-acf-field-gallery.php:713 +msgid "Maximum" +msgstr "الحد الأقصى" + +#: includes/fields/class-acf-field-file.php:270 includes/fields/class-acf-field-image.php:303 pro/fields/class-acf-field-gallery.php:742 +msgid "Allowed file types" +msgstr "أنواع Ø§Ù„Ù…Ù„ÙØ§Øª المسموح بها" + +#: includes/fields/class-acf-field-file.php:271 includes/fields/class-acf-field-image.php:304 pro/fields/class-acf-field-gallery.php:743 +msgid "Comma separated list. Leave blank for all types" +msgstr "قائمة Ù…ÙØµÙˆÙ„Ø© بÙواصل. اترك المساحة ÙØ§Ø±ØºØ© للسماح بالكل" + +#: includes/fields/class-acf-field-google-map.php:36 +msgid "Google Map" +msgstr "خرائط جوجل" + +#: includes/fields/class-acf-field-google-map.php:51 +msgid "Locating" +msgstr "تحديد الموقع" + +#: includes/fields/class-acf-field-google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "عذراً، هذا Ø§Ù„Ù…ØªØµÙØ­ لا يدعم تحديد الموقع الجغراÙÙŠ" + +#: includes/fields/class-acf-field-google-map.php:133 +msgid "Clear location" +msgstr "مسح الموقع" + +#: includes/fields/class-acf-field-google-map.php:134 +msgid "Find current location" +msgstr "البحث عن الموقع الحالي" + +#: includes/fields/class-acf-field-google-map.php:137 +msgid "Search for address..." +msgstr "البحث عن عنوان..." + +#: includes/fields/class-acf-field-google-map.php:167 includes/fields/class-acf-field-google-map.php:178 +msgid "Center" +msgstr "منتصÙ" + +#: includes/fields/class-acf-field-google-map.php:168 includes/fields/class-acf-field-google-map.php:179 +msgid "Center the initial map" +msgstr "مركز الخريطة الأولية" + +#: includes/fields/class-acf-field-google-map.php:190 +msgid "Zoom" +msgstr "التكبير" + +#: includes/fields/class-acf-field-google-map.php:191 +msgid "Set the initial zoom level" +msgstr "ضبط مستوى التكبير" + +#: includes/fields/class-acf-field-google-map.php:200 includes/fields/class-acf-field-image.php:257 includes/fields/class-acf-field-image.php:286 +#: includes/fields/class-acf-field-oembed.php:297 pro/fields/class-acf-field-gallery.php:696 pro/fields/class-acf-field-gallery.php:725 +msgid "Height" +msgstr "Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹" + +#: includes/fields/class-acf-field-google-map.php:201 +msgid "Customise the map height" +msgstr "تخصيص Ø§Ø±ØªÙØ§Ø¹ الخريطة" + +#: includes/fields/class-acf-field-group.php:36 +msgid "Group" +msgstr "مجموعة" + +#: includes/fields/class-acf-field-group.php:469 pro/fields/class-acf-field-repeater.php:453 +msgid "Sub Fields" +msgstr "الحقول Ø§Ù„ÙØ±Ø¹ÙŠØ©" + +#: includes/fields/class-acf-field-group.php:486 pro/fields/class-acf-field-clone.php:890 +msgid "Specify the style used to render the selected fields" +msgstr "حدد النمط المستخدم لعرض الحقول المحددة" + +#: includes/fields/class-acf-field-group.php:491 pro/fields/class-acf-field-clone.php:895 pro/fields/class-acf-field-flexible-content.php:629 pro/fields/class-acf-field-repeater.php:522 +msgid "Block" +msgstr "كتلة" + +#: includes/fields/class-acf-field-group.php:492 pro/fields/class-acf-field-clone.php:896 pro/fields/class-acf-field-flexible-content.php:628 pro/fields/class-acf-field-repeater.php:521 +msgid "Table" +msgstr "جدول" + +#: includes/fields/class-acf-field-group.php:493 pro/fields/class-acf-field-clone.php:897 pro/fields/class-acf-field-flexible-content.php:630 pro/fields/class-acf-field-repeater.php:523 +msgid "Row" +msgstr "سطر" + +#: includes/fields/class-acf-field-image.php:36 +msgid "Image" +msgstr "صورة" + +#: includes/fields/class-acf-field-image.php:51 +msgid "Select Image" +msgstr "إختر صورة" + +#: includes/fields/class-acf-field-image.php:52 pro/fields/class-acf-field-gallery.php:53 +msgid "Edit Image" +msgstr "تحرير الصورة" + +#: includes/fields/class-acf-field-image.php:53 pro/fields/class-acf-field-gallery.php:54 +msgid "Update Image" +msgstr "تحديث الصورة" + +#: includes/fields/class-acf-field-image.php:55 +msgid "All images" +msgstr "جميع الصور" + +#: includes/fields/class-acf-field-image.php:142 includes/fields/class-acf-field-link.php:153 includes/input.php:267 pro/fields/class-acf-field-gallery.php:358 +#: pro/fields/class-acf-field-gallery.php:546 +msgid "Remove" +msgstr "ازالة" + +#: includes/fields/class-acf-field-image.php:158 +msgid "No image selected" +msgstr "لم يتم اختيار صورة" + +#: includes/fields/class-acf-field-image.php:158 +msgid "Add Image" +msgstr "Ø§Ø¶Ø§ÙØ© صورة" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image Array" +msgstr "مصÙÙˆÙØ© الصور" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image URL" +msgstr "رابط الصورة" + +#: includes/fields/class-acf-field-image.php:214 +msgid "Image ID" +msgstr "معر٠الصورة" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Preview Size" +msgstr "حجم المعاينة" + +#: includes/fields/class-acf-field-image.php:222 +msgid "Shown when entering data" +msgstr "تظهر عند إدخال البيانات" + +#: includes/fields/class-acf-field-image.php:246 includes/fields/class-acf-field-image.php:275 pro/fields/class-acf-field-gallery.php:685 pro/fields/class-acf-field-gallery.php:714 +msgid "Restrict which images can be uploaded" +msgstr "تقييد الصور التي يمكن Ø±ÙØ¹Ù‡Ø§" + +#: includes/fields/class-acf-field-image.php:249 includes/fields/class-acf-field-image.php:278 includes/fields/class-acf-field-oembed.php:286 pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Width" +msgstr "العرض" + +#: includes/fields/class-acf-field-link.php:36 +msgid "Link" +msgstr "الرابط" + +#: includes/fields/class-acf-field-link.php:146 +msgid "Select Link" +msgstr "إختر رابط" + +#: includes/fields/class-acf-field-link.php:151 +msgid "Opens in a new window/tab" +msgstr "ÙØªØ­ ÙÙŠ Ù†Ø§ÙØ°Ø© / علامة تبويب جديدة" + +#: includes/fields/class-acf-field-link.php:186 +msgid "Link Array" +msgstr "مصÙÙˆÙØ© الرابط" + +#: includes/fields/class-acf-field-link.php:187 +msgid "Link URL" +msgstr "رابط URL" + +#: includes/fields/class-acf-field-message.php:36 includes/fields/class-acf-field-message.php:115 includes/fields/class-acf-field-true_false.php:141 +msgid "Message" +msgstr "الرسالة" + +#: includes/fields/class-acf-field-message.php:124 includes/fields/class-acf-field-textarea.php:176 +msgid "New Lines" +msgstr "سطور جديدة" + +#: includes/fields/class-acf-field-message.php:125 includes/fields/class-acf-field-textarea.php:177 +msgid "Controls how new lines are rendered" +msgstr "تحكم ÙÙŠ طريقة عرض السطور الجديدة" + +#: includes/fields/class-acf-field-message.php:129 includes/fields/class-acf-field-textarea.php:181 +msgid "Automatically add paragraphs" +msgstr "Ø¥Ø¶Ø§ÙØ© الÙقرات تلقائيا" + +#: includes/fields/class-acf-field-message.php:130 includes/fields/class-acf-field-textarea.php:182 +msgid "Automatically add <br>" +msgstr "اض٠<br> تلقائياً" + +#: includes/fields/class-acf-field-message.php:131 includes/fields/class-acf-field-textarea.php:183 +msgid "No Formatting" +msgstr "بدون تنسيق" + +#: includes/fields/class-acf-field-message.php:138 +msgid "Escape HTML" +msgstr "استبعاد كود HTML" + +#: includes/fields/class-acf-field-message.php:139 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "السماح بعرض كود HTML كنص" + +#: includes/fields/class-acf-field-number.php:36 +msgid "Number" +msgstr "رقم" + +#: includes/fields/class-acf-field-number.php:181 +msgid "Minimum Value" +msgstr "قيمة الحد الأدنى" + +#: includes/fields/class-acf-field-number.php:190 +msgid "Maximum Value" +msgstr "قيمة الحد الأقصى" + +#: includes/fields/class-acf-field-number.php:199 +msgid "Step Size" +msgstr "حجم الخطوة" + +#: includes/fields/class-acf-field-number.php:237 +msgid "Value must be a number" +msgstr "يجب أن تكون القيمة رقماً" + +#: includes/fields/class-acf-field-number.php:255 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "يجب أن تكون القيمة مساوية أو أكبر من %d" + +#: includes/fields/class-acf-field-number.php:263 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "يجب أن تكون القيمة مساوية أو أقل من %d" + +#: includes/fields/class-acf-field-oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:237 +msgid "Enter URL" +msgstr "قم بإدخال عنوان URL" + +#: includes/fields/class-acf-field-oembed.php:250 includes/fields/class-acf-field-taxonomy.php:904 +msgid "Error." +msgstr "خطأ." + +#: includes/fields/class-acf-field-oembed.php:250 +msgid "No embed found for the given URL." +msgstr "لم يتم العثور على تضمين لعنوان URL المحدد." + +#: includes/fields/class-acf-field-oembed.php:283 includes/fields/class-acf-field-oembed.php:294 +msgid "Embed Size" +msgstr "حجم المضمن" + +#: includes/fields/class-acf-field-page_link.php:192 +msgid "Archives" +msgstr "Ø§Ù„Ø£Ø±Ø´ÙŠÙØ§Øª" + +#: includes/fields/class-acf-field-page_link.php:500 includes/fields/class-acf-field-post_object.php:399 includes/fields/class-acf-field-relationship.php:704 +msgid "Filter by Post Type" +msgstr "ÙØ±Ø² حسب نوع المقالة" + +#: includes/fields/class-acf-field-page_link.php:508 includes/fields/class-acf-field-post_object.php:407 includes/fields/class-acf-field-relationship.php:712 +msgid "All post types" +msgstr "أنواع المقالات" + +#: includes/fields/class-acf-field-page_link.php:514 includes/fields/class-acf-field-post_object.php:413 includes/fields/class-acf-field-relationship.php:718 +msgid "Filter by Taxonomy" +msgstr "تصÙية حسب التصنيÙ" + +#: includes/fields/class-acf-field-page_link.php:522 includes/fields/class-acf-field-post_object.php:421 includes/fields/class-acf-field-relationship.php:726 +msgid "All taxonomies" +msgstr "ÙƒØ§ÙØ© Ø§Ù„ØªØµÙ†ÙŠÙØ§Øª" + +#: includes/fields/class-acf-field-page_link.php:528 includes/fields/class-acf-field-post_object.php:427 includes/fields/class-acf-field-radio.php:259 +#: includes/fields/class-acf-field-select.php:484 includes/fields/class-acf-field-taxonomy.php:799 includes/fields/class-acf-field-user.php:423 +msgid "Allow Null?" +msgstr "السماح Ø¨Ø§Ù„ÙØ§Ø±ØºØŸ" + +#: includes/fields/class-acf-field-page_link.php:538 +msgid "Allow Archives URLs" +msgstr "السماح بالعناوين Ø§Ù„Ù…Ø¤Ø±Ø´ÙØ©" + +#: includes/fields/class-acf-field-page_link.php:548 includes/fields/class-acf-field-post_object.php:437 includes/fields/class-acf-field-select.php:494 +#: includes/fields/class-acf-field-user.php:433 +msgid "Select multiple values?" +msgstr "تحديد قيم متعددة؟" + +#: includes/fields/class-acf-field-password.php:36 +msgid "Password" +msgstr "كلمة السر" + +#: includes/fields/class-acf-field-post_object.php:36 includes/fields/class-acf-field-post_object.php:452 includes/fields/class-acf-field-relationship.php:783 +msgid "Post Object" +msgstr "Post Object" + +#: includes/fields/class-acf-field-post_object.php:453 includes/fields/class-acf-field-relationship.php:784 +msgid "Post ID" +msgstr "معر٠المقال" + +#: includes/fields/class-acf-field-radio.php:36 +msgid "Radio Button" +msgstr "زر الراديو" + +#: includes/fields/class-acf-field-radio.php:269 +msgid "Other" +msgstr "أخرى" + +#: includes/fields/class-acf-field-radio.php:274 +msgid "Add 'other' choice to allow for custom values" +msgstr "Ø¥Ø¶Ø§ÙØ© خيار 'آخر' للسماح بقيم مخصصة" + +#: includes/fields/class-acf-field-radio.php:280 +msgid "Save Other" +msgstr "Ø­ÙØ¸ الأخرى" + +#: includes/fields/class-acf-field-radio.php:285 +msgid "Save 'other' values to the field's choices" +msgstr "Ø­ÙØ¸ القيم الأخرى لخيارات الحقل" + +#: includes/fields/class-acf-field-relationship.php:36 +msgid "Relationship" +msgstr "علاقة" + +#: includes/fields/class-acf-field-relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "تم الوصول الى الحد الأدنى من القيم ( {min} قيمة )" + +#: includes/fields/class-acf-field-relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "وصلت إلى الحد الأقصى للقيم ( {max} قيمة )" + +#: includes/fields/class-acf-field-relationship.php:50 +msgid "Loading" +msgstr "تحميل" + +#: includes/fields/class-acf-field-relationship.php:51 +msgid "No matches found" +msgstr "لم يتم العثور على مطابقات" + +#: includes/fields/class-acf-field-relationship.php:585 +msgid "Search..." +msgstr "بحث..." + +#: includes/fields/class-acf-field-relationship.php:594 +msgid "Select post type" +msgstr "اختر نوع المقال" + +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Select taxonomy" +msgstr "اختر التصنيÙ" + +#: includes/fields/class-acf-field-relationship.php:732 +msgid "Filters" +msgstr "ÙØ±Ø²" + +#: includes/fields/class-acf-field-relationship.php:738 includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "نوع المقال" + +#: includes/fields/class-acf-field-relationship.php:739 includes/fields/class-acf-field-taxonomy.php:36 includes/fields/class-acf-field-taxonomy.php:769 +msgid "Taxonomy" +msgstr "التصنيÙ" + +#: includes/fields/class-acf-field-relationship.php:746 +msgid "Elements" +msgstr "العناصر" + +#: includes/fields/class-acf-field-relationship.php:747 +msgid "Selected elements will be displayed in each result" +msgstr "سيتم عرض العناصر المحددة ÙÙŠ كل نتيجة" + +#: includes/fields/class-acf-field-relationship.php:758 +msgid "Minimum posts" +msgstr "الحد الأدنى للمقالات" + +#: includes/fields/class-acf-field-relationship.php:767 +msgid "Maximum posts" +msgstr "الحد الأقصى للمقالات" + +#: includes/fields/class-acf-field-relationship.php:871 pro/fields/class-acf-field-gallery.php:815 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s يتطلب على الأقل %s تحديد" +msgstr[1] "%s يتطلب على الأقل %s تحديد" +msgstr[2] "%s يتطلب على الأقل %s تحديدان" +msgstr[3] "%s يتطلب على الأقل %s تحديد" +msgstr[4] "%s يتطلب على الأقل %s تحديد" +msgstr[5] "%s يتطلب على الأقل %s تحديد" + +#: includes/fields/class-acf-field-select.php:36 includes/fields/class-acf-field-taxonomy.php:791 +msgctxt "noun" +msgid "Select" +msgstr "اختار" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "نتيجة واحدة متاحة، اضغط على زر الإدخال لتحديدها." + +#: includes/fields/class-acf-field-select.php:50 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d نتيجة متاحة، استخدم Ù…ÙØ§ØªÙŠØ­ الأسهم للتنقل." + +#: includes/fields/class-acf-field-select.php:51 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "لم يتم العثور على مطابقات" + +#: includes/fields/class-acf-field-select.php:52 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "الرجاء إدخال حر٠واحد أو أكثر" + +#: includes/fields/class-acf-field-select.php:53 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "الرجاء إدخال %d حر٠أو أكثر" + +#: includes/fields/class-acf-field-select.php:54 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "الرجاء حذ٠حر٠واحد" + +#: includes/fields/class-acf-field-select.php:55 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "الرجاء حذ٠%d حرÙ" + +#: includes/fields/class-acf-field-select.php:56 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "يمكنك تحديد عنصر واحد Ùقط" + +#: includes/fields/class-acf-field-select.php:57 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "يمكنك تحديد %d عنصر Ùقط" + +#: includes/fields/class-acf-field-select.php:58 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "تحميل نتائج أكثر…" + +#: includes/fields/class-acf-field-select.php:59 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "بحث …" + +#: includes/fields/class-acf-field-select.php:60 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "عملية التحميل ÙØ´Ù„ت" + +#: includes/fields/class-acf-field-select.php:270 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "اختار" + +#: includes/fields/class-acf-field-select.php:504 includes/fields/class-acf-field-true_false.php:159 +msgid "Stylised UI" +msgstr "واجهة المستخدم الأنيقة" + +#: includes/fields/class-acf-field-select.php:514 +msgid "Use AJAX to lazy load choices?" +msgstr "استخدام AJAX لخيارات التحميل الكسول؟" + +#: includes/fields/class-acf-field-select.php:525 +msgid "Specify the value returned" +msgstr "حدد القيمة التي سيتم إرجاعها" + +#: includes/fields/class-acf-field-separator.php:36 +msgid "Separator" +msgstr "ÙØ§ØµÙ„" + +#: includes/fields/class-acf-field-tab.php:36 +msgid "Tab" +msgstr "تبويب" + +#: includes/fields/class-acf-field-tab.php:96 +msgid "The tab field will display incorrectly when added to a Table style repeater field or flexible content field layout" +msgstr "سيتم عرض حقل علامة التبويب بشكل غير صحيح عند Ø¥Ø¶Ø§ÙØªÙ‡ إلى حقل مكرر بتنسيق جدول أو محتوى مرن" + +#: includes/fields/class-acf-field-tab.php:97 +msgid "Use \"Tab Fields\" to better organize your edit screen by grouping fields together." +msgstr "استخدم \"حقل علامة التبويب\" لتنظيم Ø£ÙØ¶Ù„ لشاشة التحرير الخاصة بك عن طريق تجميع الحقول معا." + +#: includes/fields/class-acf-field-tab.php:98 +msgid "All fields following this \"tab field\" (or until another \"tab field\" is defined) will be grouped together using this field's label as the tab heading." +msgstr "ÙƒØ§ÙØ© الحقول بعد \"حقل علامة التبويب\" هذة (أو حتى Ø¥Ø¶Ø§ÙØ© \"حقل علامة تبويب آخر\") سو٠يتم تجميعها معا باستخدام تسمية هذا الحقل كعنوان للتبويب." + +#: includes/fields/class-acf-field-tab.php:112 +msgid "Placement" +msgstr "الوضع" + +#: includes/fields/class-acf-field-tab.php:124 +msgid "End-point" +msgstr "نقطة النهاية" + +#: includes/fields/class-acf-field-tab.php:125 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "استخدم هذا الحقل كنقطة نهاية وابدأ مجموعة جديدة من علامات التبويب" + +#: includes/fields/class-acf-field-taxonomy.php:719 includes/fields/class-acf-field-true_false.php:95 includes/fields/class-acf-field-true_false.php:184 includes/input.php:266 +#: pro/admin/views/html-settings-updates.php:103 +msgid "No" +msgstr "لا" + +#: includes/fields/class-acf-field-taxonomy.php:738 +msgid "None" +msgstr "لا شيء" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Select the taxonomy to be displayed" +msgstr "حدد التصني٠الذي سيتم عرضه" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Appearance" +msgstr "المظهر" + +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Select the appearance of this field" +msgstr "حدد مظهر هذا الحقل" + +#: includes/fields/class-acf-field-taxonomy.php:785 +msgid "Multiple Values" +msgstr "قيم متعددة" + +#: includes/fields/class-acf-field-taxonomy.php:787 +msgid "Multi Select" +msgstr "متعددة الاختيار" + +#: includes/fields/class-acf-field-taxonomy.php:789 +msgid "Single Value" +msgstr "قيمة Ù…ÙØ±Ø¯Ø©" + +#: includes/fields/class-acf-field-taxonomy.php:790 +msgid "Radio Buttons" +msgstr "ازرار الراديو" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Create Terms" +msgstr "إنشاء شروط" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Allow new terms to be created whilst editing" +msgstr "السماح بإنشاء شروط جديدة أثناء التحرير" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Save Terms" +msgstr "Ø­ÙØ¸ الشروط" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Connect selected terms to the post" +msgstr "وصل الشروط المحددة بالمقالة" + +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Load Terms" +msgstr "تحميل الشروط" + +#: includes/fields/class-acf-field-taxonomy.php:830 +msgid "Load value from posts terms" +msgstr "تحميل قيمة من شروط المقالة" + +#: includes/fields/class-acf-field-taxonomy.php:844 +msgid "Term Object" +msgstr "Term Object" + +#: includes/fields/class-acf-field-taxonomy.php:845 +msgid "Term ID" +msgstr "Term ID" + +#: includes/fields/class-acf-field-taxonomy.php:904 +#, php-format +msgid "User unable to add new %s" +msgstr "المستخدم غير قادر على Ø¥Ø¶Ø§ÙØ© %s جديد" + +#: includes/fields/class-acf-field-taxonomy.php:917 +#, php-format +msgid "%s already exists" +msgstr "%s موجود Ø¨Ø§Ù„ÙØ¹Ù„" + +#: includes/fields/class-acf-field-taxonomy.php:958 +#, php-format +msgid "%s added" +msgstr "تمت Ø§Ø¶Ø§ÙØ© %s" + +#: includes/fields/class-acf-field-taxonomy.php:1003 +msgid "Add" +msgstr "Ø¥Ø¶Ø§ÙØ©" + +#: includes/fields/class-acf-field-text.php:36 +msgid "Text" +msgstr "نص" + +#: includes/fields/class-acf-field-text.php:178 includes/fields/class-acf-field-textarea.php:157 +msgid "Character Limit" +msgstr "الحد الأقصى للحروÙ" + +#: includes/fields/class-acf-field-text.php:179 includes/fields/class-acf-field-textarea.php:158 +msgid "Leave blank for no limit" +msgstr "اتركه ÙØ§Ø±ØºØ§ لبدون حد." + +#: includes/fields/class-acf-field-textarea.php:36 +msgid "Text Area" +msgstr "مربع النص" + +#: includes/fields/class-acf-field-textarea.php:166 +msgid "Rows" +msgstr "صÙÙˆÙ" + +#: includes/fields/class-acf-field-textarea.php:167 +msgid "Sets the textarea height" +msgstr "تعيين Ø§Ø±ØªÙØ§Ø¹ مربع النص" + +#: includes/fields/class-acf-field-time_picker.php:36 +#, fuzzy +msgid "Time Picker" +msgstr "عنصر إختيار التاريخ:" + +#: includes/fields/class-acf-field-true_false.php:36 +msgid "True / False" +msgstr "صح / خطأ" + +#: includes/fields/class-acf-field-true_false.php:94 includes/fields/class-acf-field-true_false.php:174 includes/input.php:265 pro/admin/views/html-settings-updates.php:93 +msgid "Yes" +msgstr "نعم" + +#: includes/fields/class-acf-field-true_false.php:142 +msgid "Displays text alongside the checkbox" +msgstr "عرض النص بجانب مربع الاختيار" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "On Text" +msgstr "النص اثناء Ø§Ù„ØªÙØ¹ÙŠÙ„" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when active" +msgstr "النص المعروض عند التنشيط" + +#: includes/fields/class-acf-field-true_false.php:180 +msgid "Off Text" +msgstr "النص اثناء عدم Ø§Ù„ØªÙØ¹ÙŠÙ„" + +#: includes/fields/class-acf-field-true_false.php:181 +msgid "Text shown when inactive" +msgstr "النص المعروض عند عدم النشاط" + +#: includes/fields/class-acf-field-url.php:36 +msgid "Url" +msgstr "الرابط" + +#: includes/fields/class-acf-field-url.php:165 +msgid "Value must be a valid URL" +msgstr "القيمة يجب أن تكون عنوان رابط صحيح" + +#: includes/fields/class-acf-field-user.php:36 includes/locations.php:95 +msgid "User" +msgstr "المستخدم" + +#: includes/fields/class-acf-field-user.php:408 +msgid "Filter by role" +msgstr "ÙØ±Ø² حسب:" + +#: includes/fields/class-acf-field-user.php:416 +msgid "All user roles" +msgstr "جميع رتب المستخدم" + +#: includes/fields/class-acf-field-wysiwyg.php:36 +msgid "Wysiwyg Editor" +msgstr "محرر Wysiwyg" + +#: includes/fields/class-acf-field-wysiwyg.php:385 +msgid "Visual" +msgstr "مرئي" + +#: includes/fields/class-acf-field-wysiwyg.php:386 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "نص" + +#: includes/fields/class-acf-field-wysiwyg.php:392 +msgid "Click to initialize TinyMCE" +msgstr "انقر لبدء تهيئة TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:445 +msgid "Tabs" +msgstr "علامات التبويب" + +#: includes/fields/class-acf-field-wysiwyg.php:450 +msgid "Visual & Text" +msgstr "نص Ùˆ مرئي" + +#: includes/fields/class-acf-field-wysiwyg.php:451 +msgid "Visual Only" +msgstr "المرئي Ùقط" + +#: includes/fields/class-acf-field-wysiwyg.php:452 +msgid "Text Only" +msgstr "النص Ùقط" + +#: includes/fields/class-acf-field-wysiwyg.php:459 +msgid "Toolbar" +msgstr "شريط الأدوات" + +#: includes/fields/class-acf-field-wysiwyg.php:469 +msgid "Show Media Upload Buttons?" +msgstr "اظهار زر Ø¥Ø¶Ø§ÙØ© Ù…Ù„ÙØ§Øª الوسائط؟" + +#: includes/fields/class-acf-field-wysiwyg.php:479 +msgid "Delay initialization?" +msgstr "تأخير التهيئة؟" + +#: includes/fields/class-acf-field-wysiwyg.php:480 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "لن يتم تهيئة TinyMCE حتى يتم النقر Ùوق الحقل" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 pro/admin/admin-options-page.php:304 +msgid "Edit field group" +msgstr "تحرير مجموعة الحقول" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "التحقق من البريد الإليكتروني" + +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:588 pro/options-page.php:81 +msgid "Update" +msgstr "تحديث" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "تم تحديث المنشور ." + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "تم الكش٠عن البريد المزعج" + +#: includes/input.php:258 +msgid "Expand Details" +msgstr "توسيع Ø§Ù„ØªÙØ§ØµÙŠÙ„" + +#: includes/input.php:259 +msgid "Collapse Details" +msgstr "طي Ø§Ù„ØªÙØ§ØµÙŠÙ„" + +#: includes/input.php:260 +msgid "Validation successful" +msgstr "عملية التحقق تمت بنجاح" + +#: includes/input.php:261 includes/validation.php:285 includes/validation.php:296 +msgid "Validation failed" +msgstr "ÙØ´Ù„ ÙÙŠ عملية التحقق" + +#: includes/input.php:262 +msgid "1 field requires attention" +msgstr "حقل واحد يتطلب الاهتمام" + +#: includes/input.php:263 +#, php-format +msgid "%d fields require attention" +msgstr "%d حقول تتطلب الاهتمام" + +#: includes/input.php:264 +msgid "Restricted" +msgstr "محظور" + +#: includes/input.php:268 +msgid "Cancel" +msgstr "الغاء" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "مقالة" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "ØµÙØ­Ø©" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "نماذج" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "مرÙقات" + +#: includes/locations/class-acf-location-attachment.php:113 +#, php-format +msgid "All %s formats" +msgstr "كل صيغ %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "تعليق" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "رتبة المستخدم الحالي" + +#: includes/locations/class-acf-location-current-user-role.php:114 +msgid "Super Admin" +msgstr "مدير" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "المستخدم الحالي" + +#: includes/locations/class-acf-location-current-user.php:101 +msgid "Logged in" +msgstr "مسجل الدخول" + +#: includes/locations/class-acf-location-current-user.php:102 +msgid "Viewing front end" +msgstr "عرض الواجهة الأمامية" + +#: includes/locations/class-acf-location-current-user.php:103 +msgid "Viewing back end" +msgstr "عرض الواجهة الخلÙية" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "عنصر القائمة" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "القائمة" + +#: includes/locations/class-acf-location-nav-menu.php:113 +msgid "Menu Locations" +msgstr "مواقع القائمة" + +#: includes/locations/class-acf-location-nav-menu.php:123 +msgid "Menus" +msgstr "القوائم" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "أب Ø§Ù„ØµÙØ­Ø©" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "قالب Ø§Ù„ØµÙØ­Ø©:" + +#: includes/locations/class-acf-location-page-template.php:102 includes/locations/class-acf-location-post-template.php:156 +msgid "Default Template" +msgstr "قالب Ø§ÙØªØ±Ø§Ø¶ÙŠ" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "نوع Ø§Ù„ØµÙØ­Ø©" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Front Page" +msgstr "Ø§Ù„ØµÙØ­Ø© الرئسية" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Posts Page" +msgstr "ØµÙØ­Ø© المقالات" + +#: includes/locations/class-acf-location-page-type.php:151 +msgid "Top Level Page (no parent)" +msgstr "أعلى مستوى Ù„Ù„ØµÙØ­Ø© (بدون أب)" + +#: includes/locations/class-acf-location-page-type.php:152 +msgid "Parent Page (has children)" +msgstr "ØµÙØ­Ø© أب (لديها ÙØ±ÙˆØ¹)" + +#: includes/locations/class-acf-location-page-type.php:153 +msgid "Child Page (has parent)" +msgstr "ØµÙØ­Ø© ÙØ±Ø¹ÙŠØ© (لديها أب)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "تصني٠المقالة" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "تنسيق المقالة" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "حالة المقالة" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "تصني٠المقالة" + +#: includes/locations/class-acf-location-post-template.php:29 +#, fuzzy +msgid "Post Template" +msgstr "قالب Ø§Ù„ØµÙØ­Ø©:" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "شروط التصنيÙ" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "نموذج المستخدم" + +#: includes/locations/class-acf-location-user-form.php:92 +msgid "Add / Edit" +msgstr "Ø¥Ø¶Ø§ÙØ© / تعديل" + +#: includes/locations/class-acf-location-user-form.php:93 +msgid "Register" +msgstr "التسجيل" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "رتبة المستخدم" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "ودجت" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "تحرير" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "تحديث" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "قيمة %s مطلوبة" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "الحقول المخصصة المتقدمة للمحترÙين" + +#: pro/admin/admin-options-page.php:196 +msgid "Publish" +msgstr "نشر" + +#: pro/admin/admin-options-page.php:202 +#, php-format +msgid "No Custom Field Groups found for this options page. Create a Custom Field Group" +msgstr "لم يتم العثور على أية \"مجموعات حقول مخصصة Ù„ØµÙØ­Ø© الخيارات هذة. أنشئ مجموعة حقول مخصصة" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "خطأ. تعذر الاتصال بخادم التحديث" + +#: pro/admin/admin-settings-updates.php:162 pro/admin/views/html-settings-updates.php:17 +msgid "Updates" +msgstr "تحديثات" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Deactivate License" +msgstr "تعطيل الترخيص" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Activate License" +msgstr "ØªÙØ¹ÙŠÙ„ الترخيص" + +#: pro/admin/views/html-settings-updates.php:21 +msgid "License Information" +msgstr "معلومات الترخيص" + +#: pro/admin/views/html-settings-updates.php:24 +#, fuzzy, php-format +msgid "To unlock updates, please enter your license key below. If you don't have a licence key, please see details & pricing." +msgstr "لتمكين التحديثات، الرجاء إدخال Ù…ÙØªØ§Ø­ الترخيص الخاص بك على ØµÙØ­Ø© التحديثات . إذا لم يكن لديك Ù…ÙØªØ§Ø­ ترخيص، يرجى الاطلاع على ØªÙØ§ØµÙŠÙ„ & التسعير" + +#: pro/admin/views/html-settings-updates.php:33 +msgid "License Key" +msgstr "Ù…ÙØªØ§Ø­ الترخيص" + +#: pro/admin/views/html-settings-updates.php:65 +msgid "Update Information" +msgstr "معلومات التحديث" + +#: pro/admin/views/html-settings-updates.php:72 +msgid "Current Version" +msgstr "النسخة الحالية" + +#: pro/admin/views/html-settings-updates.php:80 +msgid "Latest Version" +msgstr "آخر نسخة" + +#: pro/admin/views/html-settings-updates.php:88 +msgid "Update Available" +msgstr "هنالك تحديث متاح" + +#: pro/admin/views/html-settings-updates.php:96 +msgid "Update Plugin" +msgstr "تحديث Ø§Ù„Ø§Ø¶Ø§ÙØ©" + +#: pro/admin/views/html-settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "يرجى إدخال Ù…ÙØªØ§Ø­ الترخيص أعلاه لإلغاء تأمين التحديثات" + +#: pro/admin/views/html-settings-updates.php:104 +msgid "Check Again" +msgstr "الاختيار مرة أخرى" + +#: pro/admin/views/html-settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "إشعار الترقية" + +#: pro/fields/class-acf-field-clone.php:36 +msgctxt "noun" +msgid "Clone" +msgstr "استنساخ" + +#: pro/fields/class-acf-field-clone.php:858 +msgid "Select one or more fields you wish to clone" +msgstr "حدد حقل واحد أو أكثر ترغب ÙÙŠ استنساخه" + +#: pro/fields/class-acf-field-clone.php:875 +msgid "Display" +msgstr "عرض" + +#: pro/fields/class-acf-field-clone.php:876 +msgid "Specify the style used to render the clone field" +msgstr "حدد النمط المستخدم لعرض حقل الاستنساخ" + +#: pro/fields/class-acf-field-clone.php:881 +msgid "Group (displays selected fields in a group within this field)" +msgstr "المجموعة (تعرض الحقول المحددة ÙÙŠ مجموعة ضمن هذا الحقل)" + +#: pro/fields/class-acf-field-clone.php:882 +msgid "Seamless (replaces this field with selected fields)" +msgstr "سلس (يستبدل هذا الحقل بالحقول المحددة)" + +#: pro/fields/class-acf-field-clone.php:903 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "سيتم عرض التسمية كـ %s" + +#: pro/fields/class-acf-field-clone.php:906 +msgid "Prefix Field Labels" +msgstr "بادئة تسمية الحقول" + +#: pro/fields/class-acf-field-clone.php:917 +#, php-format +msgid "Values will be saved as %s" +msgstr "سيتم Ø­ÙØ¸ القيم كـ %s" + +#: pro/fields/class-acf-field-clone.php:920 +msgid "Prefix Field Names" +msgstr "بادئة أسماء الحقول" + +#: pro/fields/class-acf-field-clone.php:1038 +msgid "Unknown field" +msgstr "حقل غير معروÙ" + +#: pro/fields/class-acf-field-clone.php:1077 +msgid "Unknown field group" +msgstr "مجموعة حقول غير Ù…Ø¹Ø±ÙˆÙØ©" + +#: pro/fields/class-acf-field-clone.php:1081 +#, php-format +msgid "All fields from %s field group" +msgstr "جميع الحقول من مجموعة الحقول %s" + +#: pro/fields/class-acf-field-flexible-content.php:42 pro/fields/class-acf-field-repeater.php:230 pro/fields/class-acf-field-repeater.php:534 +msgid "Add Row" +msgstr "Ø¥Ø¶Ø§ÙØ© صÙ" + +#: pro/fields/class-acf-field-flexible-content.php:45 +msgid "layout" +msgstr "التخطيط" + +#: pro/fields/class-acf-field-flexible-content.php:46 +msgid "layouts" +msgstr "التخطيطات" + +#: pro/fields/class-acf-field-flexible-content.php:47 +msgid "remove {layout}?" +msgstr "إزالة {layout}ØŸ" + +#: pro/fields/class-acf-field-flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "يتطلب هذا الحقل على الأقل {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "يحتوي هذا الحقل حد {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "يتطلب هذا الحقل على الأقل {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "تم الوصول إلى حد أقصى ({max} {identifier}) لـ {label}" + +#: pro/fields/class-acf-field-flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} متاح (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} مطلوب (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:54 +msgid "Flexible Content requires at least 1 layout" +msgstr "يتطلب المحتوى المرن تخطيط واحد على الأقل" + +#: pro/fields/class-acf-field-flexible-content.php:288 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "انقر Ùوق الزر \"%s\" أدناه لبدء إنشاء التخطيط الخاص بك" + +#: pro/fields/class-acf-field-flexible-content.php:423 +msgid "Add layout" +msgstr "Ø¥Ø¶Ø§ÙØ© تنسيق جديد" + +#: pro/fields/class-acf-field-flexible-content.php:424 +msgid "Remove layout" +msgstr "إزالة التنسيق" + +#: pro/fields/class-acf-field-flexible-content.php:425 pro/fields/class-acf-field-repeater.php:360 +msgid "Click to toggle" +msgstr "انقر للتبديل" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder Layout" +msgstr "إعادة ترتيب التخطيط" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder" +msgstr "إعادة ترتيب" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete Layout" +msgstr "حذ٠التخطيط" + +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate Layout" +msgstr "تكرار التخطيط " + +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New Layout" +msgstr "Ø¥Ø¶Ø§ÙØ© تخطيط جديد" + +#: pro/fields/class-acf-field-flexible-content.php:645 +msgid "Min" +msgstr "الحد الأدنى" + +#: pro/fields/class-acf-field-flexible-content.php:658 +msgid "Max" +msgstr "الحد أقصى" + +#: pro/fields/class-acf-field-flexible-content.php:685 pro/fields/class-acf-field-repeater.php:530 +msgid "Button Label" +msgstr "تسمية الزر" + +#: pro/fields/class-acf-field-flexible-content.php:694 +msgid "Minimum Layouts" +msgstr "الحد الأدنى للتخطيطات" + +#: pro/fields/class-acf-field-flexible-content.php:703 +msgid "Maximum Layouts" +msgstr "الحد الأقصى للتخطيطات" + +#: pro/fields/class-acf-field-gallery.php:52 +msgid "Add Image to Gallery" +msgstr "Ø§Ø¶Ø§ÙØ© صورة للمعرض" + +#: pro/fields/class-acf-field-gallery.php:56 +msgid "Maximum selection reached" +msgstr "وصلت للحد الأقصى" + +#: pro/fields/class-acf-field-gallery.php:336 +msgid "Length" +msgstr "الطول" + +#: pro/fields/class-acf-field-gallery.php:379 +msgid "Caption" +msgstr "كلمات توضيحية" + +#: pro/fields/class-acf-field-gallery.php:388 +msgid "Alt Text" +msgstr "النص البديل" + +#: pro/fields/class-acf-field-gallery.php:559 +msgid "Add to gallery" +msgstr "Ø§Ø¶Ø§ÙØ© الى المعرض" + +#: pro/fields/class-acf-field-gallery.php:563 +msgid "Bulk actions" +msgstr "- اجراءات جماعية -" + +#: pro/fields/class-acf-field-gallery.php:564 +msgid "Sort by date uploaded" +msgstr "ترتيب حسب تاريخ Ø§Ù„Ø±ÙØ¹" + +#: pro/fields/class-acf-field-gallery.php:565 +msgid "Sort by date modified" +msgstr "ترتيب حسب تاريخ التعديل" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Sort by title" +msgstr "ترتيب ÙØ±Ø² حسب العنوان" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Reverse current order" +msgstr "عكس الترتيب الحالي" + +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Close" +msgstr "إغلاق" + +#: pro/fields/class-acf-field-gallery.php:639 +msgid "Minimum Selection" +msgstr "الحد الأدنى للاختيار" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Maximum Selection" +msgstr "الحد الأقصى للاختيار" + +#: pro/fields/class-acf-field-gallery.php:657 +msgid "Insert" +msgstr "إدراج" + +#: pro/fields/class-acf-field-gallery.php:658 +msgid "Specify where new attachments are added" +msgstr "حدد مكان Ø¥Ø¶Ø§ÙØ© المرÙقات الجديدة" + +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Append to the end" +msgstr "إلحاق بالنهاية" + +#: pro/fields/class-acf-field-gallery.php:663 +msgid "Prepend to the beginning" +msgstr "إلحاق بالبداية" + +#: pro/fields/class-acf-field-repeater.php:47 +msgid "Minimum rows reached ({min} rows)" +msgstr "وصلت للحد الأدنى من الصÙÙˆÙ ({min} صÙ)" + +#: pro/fields/class-acf-field-repeater.php:48 +msgid "Maximum rows reached ({max} rows)" +msgstr "بلغت الحد الأقصى من الصÙÙˆÙ ({max} صÙ)" + +#: pro/fields/class-acf-field-repeater.php:405 +msgid "Add row" +msgstr "Ø¥Ø¶Ø§ÙØ© صÙ" + +#: pro/fields/class-acf-field-repeater.php:406 +msgid "Remove row" +msgstr "إزالة صÙ" + +#: pro/fields/class-acf-field-repeater.php:483 +msgid "Collapsed" +msgstr "طي" + +#: pro/fields/class-acf-field-repeater.php:484 +msgid "Select a sub field to show when row is collapsed" +msgstr "حدد حقل ÙØ±Ø¹ÙŠ Ù„Ø¥Ø¸Ù‡Ø§Ø± عند طي الصÙ" + +#: pro/fields/class-acf-field-repeater.php:494 +msgid "Minimum Rows" +msgstr "الحد الأدنى من الصÙÙˆÙ" + +#: pro/fields/class-acf-field-repeater.php:504 +msgid "Maximum Rows" +msgstr "الحد الأقصى من الصÙÙˆÙ" + +#: pro/locations/class-acf-location-options-page.php:70 +msgid "No options pages exist" +msgstr "لا توجد ØµÙØ­Ø© خيارات" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "خيارات" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "تم تحديث الإعدادات" + +#: pro/updates.php:97 +#, fuzzy, php-format +msgid "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "لتمكين التحديثات، الرجاء إدخال Ù…ÙØªØ§Ø­ الترخيص الخاص بك على ØµÙØ­Ø© التحديثات . إذا لم يكن لديك Ù…ÙØªØ§Ø­ ترخيص، يرجى الاطلاع على ØªÙØ§ØµÙŠÙ„ & التسعير" + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "http://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "إليوت كوندون" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Disabled" +#~ msgstr "تعطيل" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "تعطيل (%s)" +#~ msgstr[1] "تعطيل (%s)" +#~ msgstr[2] "تعطيل (%s)" +#~ msgstr[3] "تعطيل (%s)" +#~ msgstr[4] "تعطيل (%s)" +#~ msgstr[5] "تعطيل (%s)" + +#~ msgid "See what's new in" +#~ msgstr "أنظر ما هو الجديد ÙÙŠ" + +#~ msgid "version" +#~ msgstr "النسخة" + +#~ msgid "Getting Started" +#~ msgstr "بدء العمل" + +#~ msgid "Field Types" +#~ msgstr "أنواع بيانات الحقول" + +#~ msgid "Functions" +#~ msgstr "الدالات" + +#~ msgid "Actions" +#~ msgstr "الإجراءات" + +#~ msgid "'How to' guides" +#~ msgstr "'كيÙ' أدلة" + +#~ msgid "Tutorials" +#~ msgstr "الدروس التعليمية" + +#~ msgid "Created by" +#~ msgstr "أنشئ بواسطة" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "تم بنجاح أداة استيراد Ø£Ø¶Ø§ÙØª %s جماعات الحقل %s" + +#~ msgid "Warning. Import tool detected %s field groups already exist and have been ignored: %s" +#~ msgstr "تحذير. الكش٠عن أداة استيراد مجموعة الحقول %s موجودة Ø¨Ø§Ù„ÙØ¹Ù„ØŒ وتم تجاهل %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "ترقية ACF" + +#~ msgid "Upgrade" +#~ msgstr "ترقية" + +#~ msgid "Error" +#~ msgstr "خطأ" + +#~ msgid "Upgrading data to" +#~ msgstr "تحديث البيانات" + +#~ msgid "See what's new" +#~ msgstr "أنظر ما هو الجديد ÙÙŠ" + +#~ msgid "Show a different month" +#~ msgstr "عرض شهر مختلÙ" + +#~ msgid "Return format" +#~ msgstr "إعادة تنسيق" + +#~ msgid "uploaded to this post" +#~ msgstr "Ø§Ø¶Ø§ÙØ© Ù„Ù„ØµÙØ­Ø©" + +#~ msgid "File Size" +#~ msgstr "حجم الملÙ" + +#~ msgid "No File selected" +#~ msgstr "لا يوجد مل٠محدد." + +#~ msgid "eg. Show extra content" +#~ msgstr "على سبيل المثال. إظهار محتوى إضاÙÙŠ" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "خطأ ÙÙŠ الاتصال. Ø¢Ø³ÙØŒ الرجاء المحاولة مرة أخرى" + +#~ msgid "Save Options" +#~ msgstr "Ø­ÙØ¸ الإعدادات" + +#~ msgid "License" +#~ msgstr "الترخيص" + +#~ msgid "To unlock updates, please enter your license key below. If you don't have a licence key, please see" +#~ msgstr "لللحصول على التحديثات، الرجاء إدخال Ù…ÙØªØ§Ø­ الترخيص الخاص بك أدناه. إذا لم يكن لديك Ù…ÙØªØ§Ø­ ترخيص، الرجاء مراجعة" + +#~ msgid "details & pricing" +#~ msgstr "Ø§Ù„ØªÙØ§ØµÙŠÙ„ & الأسعار" + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "حقول مخصصة متقدمة برو" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-bg_BG.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-bg_BG.mo new file mode 100644 index 0000000000000000000000000000000000000000..994be7a78a18de3d57b4e26b9f8b13fed7b0ff11 GIT binary patch literal 54773 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 GmHs~!rjVlm literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-bg_BG.po b/wp-content/plugins/advanced-custom-fields/lang/acf-bg_BG.po new file mode 100644 index 0000000..59456c4 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-bg_BG.po @@ -0,0 +1,3336 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2017-06-27 15:36+1000\n" +"PO-Revision-Date: 2018-02-06 10:03+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Elliot Condon \n" +"Language: bg_BG\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "Модерни потребителÑки полета" + +#: acf.php:355 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Групи полета" + +#: acf.php:356 +msgid "Field Group" +msgstr "Групa полета" + +#: acf.php:357 acf.php:389 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New" +msgstr "Създаване" + +#: acf.php:358 +msgid "Add New Field Group" +msgstr "Създаване на нова група полета" + +#: acf.php:359 +msgid "Edit Field Group" +msgstr "Редактиране на група полета" + +#: acf.php:360 +msgid "New Field Group" +msgstr "Ðова група полета" + +#: acf.php:361 +msgid "View Field Group" +msgstr "Преглед на група полета" + +#: acf.php:362 +msgid "Search Field Groups" +msgstr "ТърÑене на групи полета" + +#: acf.php:363 +msgid "No Field Groups found" +msgstr "ÐÑма открити групи полета" + +#: acf.php:364 +msgid "No Field Groups found in Trash" +msgstr "ÐÑма открити групи полета в кошчето" + +#: acf.php:387 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:857 +msgid "Fields" +msgstr "Полета" + +#: acf.php:388 +msgid "Field" +msgstr "Поле" + +#: acf.php:390 +msgid "Add New Field" +msgstr "ДобавÑне на ново поле" + +#: acf.php:391 +msgid "Edit Field" +msgstr "Редактиране на поле" + +#: acf.php:392 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Ðово поле" + +#: acf.php:393 +msgid "View Field" +msgstr "Преглед на поле" + +#: acf.php:394 +msgid "Search Fields" +msgstr "ТърÑене на полета" + +#: acf.php:395 +msgid "No Fields found" +msgstr "ÐÑма открити полета" + +#: acf.php:396 +msgid "No Fields found in Trash" +msgstr "ÐÑма открити полета в кошчето" + +#: acf.php:435 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +#, fuzzy +msgid "Inactive" +msgstr "Ðктивно" + +#: acf.php:440 +#, fuzzy, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Ðктивно (%s)" +msgstr[1] "Ðктивни (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Групата полета бе обновена." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Групата полета бе изтрита." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Групата полета бе публикувана." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Групата полета бе запазена." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Групата полета бе изпратена." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Групата полета бе планирана." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Черновата на групата полета бе обновена." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "МеÑтоположение" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "ÐаÑтройки" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "ПремеÑтване в кошчето. Сигурни ли Ñте?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "избрано" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "ÐÑма налични полета за превключване" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "Заглавието на групата полета е задължително" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:732 +msgid "copy" +msgstr "копиране" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3970 +msgid "or" +msgstr "или" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "РодителÑки полета" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "СъÑедни полета" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "ПремеÑтване на поле" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Това поле не може да бъде премеÑтено докато не го запазите." + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "Ðищо" + +#: includes/admin/admin-field-group.php:281 includes/input.php:257 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Промените, които Ñте направили, ще бъдат загубени ако излезете от тази " +"Ñтраница" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Ðизът \"field_\" не може да бъде използван в началото на името на поле" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Ключове на полетата" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Ðктивно" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "ПремеÑтването бе завършено." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Полето %s Ñега може да бъде открито в групата полета %s" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "ЗатварÑне на прозореца" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "МолÑ, изберете деÑÑ‚Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð·Ð° това поле" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "ПремеÑтване на поле" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Ðктивно (%s)" +msgstr[1] "Ðктивни (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Групата полета %s бе дублирана." + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s група полета беше дублирана." +msgstr[1] "%s групи полета бÑха дублирани." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Групата полета %s бе Ñинхронизирана." + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s група полета беше Ñинхронизирана." +msgstr[1] "%s групи полета бÑха Ñинхронизирани." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Ðалична е ÑинхронизациÑ" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:370 +msgid "Title" +msgstr "Заглавие" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:397 +msgid "Description" +msgstr "ОпиÑание" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "СтатуÑ" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "ПерÑонализирайте WordPress Ñ Ð¼Ð¾Ñ‰Ð½Ð¸, профеÑионални и интуитивни полета." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:111 +msgid "Changelog" +msgstr "Дневник Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð¸" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "" + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "РеÑурÑи" + +#: includes/admin/admin-field-groups.php:619 +#, fuzzy +msgid "Website" +msgstr "Следните Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð±Ñха намерени като активирани на този уебÑайт." + +#: includes/admin/admin-field-groups.php:620 +#, fuzzy +msgid "Documentation" +msgstr "МеÑтоположение" + +#: includes/admin/admin-field-groups.php:621 +#, fuzzy +msgid "Support" +msgstr "Импортиране" + +#: includes/admin/admin-field-groups.php:623 +#, fuzzy +msgid "Pro" +msgstr "Сбогом на добавките. Здравей, PRO" + +#: includes/admin/admin-field-groups.php:628 +#, fuzzy, php-format +msgid "Thank you for creating with ACF." +msgstr "Благодарим ви за обновÑването към %s v%s!" + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "Дублиране на този елемент" + +#: includes/admin/admin-field-groups.php:668 +#: includes/admin/admin-field-groups.php:684 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate" +msgstr "Дублиране" + +#: includes/admin/admin-field-groups.php:701 +#: includes/fields/class-acf-field-google-map.php:132 +#: includes/fields/class-acf-field-relationship.php:737 +msgid "Search" +msgstr "ТърÑене" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "Избор на %s" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "Синхронизиране на групата полета" + +#: includes/admin/admin-field-groups.php:768 +#: includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "СинхронизациÑ" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "" + +#: includes/admin/admin-field-groups.php:798 +#, fuzzy +msgid "Bulk Actions" +msgstr "Групови дейÑтвиÑ" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "ПотребителÑки полета" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "ОбновÑване на базата данни" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Преглед на Ñайтове и обновÑване" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "ÐÑма налични актуализации." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Добавки" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Грешка. СпиÑъкът Ñ Ð´Ð¾Ð±Ð°Ð²ÐºÐ¸ не може да бъде зареден" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "ИнформациÑ" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Какво ново" + +#: includes/admin/settings-tools.php:50 +#: includes/admin/views/settings-tools-export.php:19 +#: includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "ИнÑтрументи" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "ÐÑма избрани групи полета" + +#: includes/admin/settings-tools.php:184 +#: includes/fields/class-acf-field-file.php:174 +msgid "No file selected" +msgstr "ÐÑма избран файл" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "Грешка при качване на файл. МолÑ, опитайте отново" + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "Грешен тип файл" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "Файлът за импортиране е празен" + +#: includes/admin/settings-tools.php:331 +#, fuzzy, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Импортиране на групи полета" +msgstr[1] "Импортиране на групи полета" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "УÑловна логика" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Показване на това поле ако" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:243 +msgid "is equal to" +msgstr "е равно на" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "не е равно на" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "и" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "ДобавÑне на група правила" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:420 +#: pro/fields/class-acf-field-repeater.php:358 +msgid "Drag to reorder" +msgstr "Плъзнете, за да пренаредите" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Редактиране на поле" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-image.php:140 +#: includes/fields/class-acf-field-link.php:152 +#: pro/fields/class-acf-field-gallery.php:357 +msgid "Edit" +msgstr "Редактиране" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Дублиране на поле" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "ПремеÑтване на поле в друга група" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "ПремеÑтване" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "Изтриване на поле" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete" +msgstr "Изтриване" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "Етикет на полето" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "Това е името, което ще Ñе покаже на Ñтраницата за редакциÑ" + +#: includes/admin/views/field-group-field.php:78 +msgid "Field Name" +msgstr "Име на полето" + +#: includes/admin/views/field-group-field.php:79 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Една дума, без интервали. Долни черти и тирета Ñа позволени" + +#: includes/admin/views/field-group-field.php:89 +msgid "Field Type" +msgstr "Тип на полето" + +#: includes/admin/views/field-group-field.php:101 +#: includes/fields/class-acf-field-tab.php:102 +msgid "Instructions" +msgstr "ИнÑтрукции" + +#: includes/admin/views/field-group-field.php:102 +msgid "Instructions for authors. Shown when submitting data" +msgstr "ИнÑтрукции за автори. Показват Ñе когато Ñе изпращат данни" + +#: includes/admin/views/field-group-field.php:111 +msgid "Required?" +msgstr "Задължително?" + +#: includes/admin/views/field-group-field.php:134 +msgid "Wrapper Attributes" +msgstr "Ðтрибути" + +#: includes/admin/views/field-group-field.php:140 +msgid "width" +msgstr "широчина" + +#: includes/admin/views/field-group-field.php:155 +msgid "class" +msgstr "клаÑ" + +#: includes/admin/views/field-group-field.php:168 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:180 +msgid "Close Field" +msgstr "ЗатварÑне на полето" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Ред" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-checkbox.php:317 +#: includes/fields/class-acf-field-radio.php:321 +#: includes/fields/class-acf-field-select.php:530 +#: pro/fields/class-acf-field-flexible-content.php:599 +msgid "Label" +msgstr "Етикет" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:970 +#: pro/fields/class-acf-field-flexible-content.php:612 +msgid "Name" +msgstr "Име" + +#: includes/admin/views/field-group-fields.php:7 +#, fuzzy +msgid "Key" +msgstr "Ключ на полето" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Тип" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"ÐÑма полета. ÐатиÑнете бутона + ДобавÑне на поле за да " +"Ñъздадете първото Ñи поле." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ ДобавÑне на поле" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Правила" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Създаване на група правила, определÑщи кои екрани за редактиране ще " +"използват тези модерни потребителÑки полета" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Стил" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Стандартен (WordPress кутиÑ)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Без WordPress кутиÑ" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "ПозициÑ" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "ВиÑоко (Ñлед заглавието)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Ðормално (Ñлед Ñъдържанието)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "ОтÑтрани" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° етикета" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:116 +msgid "Top aligned" +msgstr "Отгоре" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:117 +msgid "Left aligned" +msgstr "ОтлÑво" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° инÑтрукциите" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Под етикетите" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Под полетата" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Пореден â„–" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Групите полета Ñ Ð¿Ð¾-малък пореден номер ще бъдат показани първи" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Показани в ÑпиÑъка Ñ Ð³Ñ€ÑƒÐ¿Ð¸ полета" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Скриване от екрана" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "Изберете елементи, които да Ñкриете от екрана." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Ðко множеÑтво групи полета Ñа показани на екрана, опциите на първата група " +"полета ще бъдат използвани (тази Ñ Ð½Ð°Ð¹-Ð¼Ð°Ð»ÐºÐ¸Ñ Ð¿Ð¾Ñ€ÐµÐ´ÐµÐ½ номер)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "ПоÑтоÑнна връзка" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Редактор на Ñъдържание" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "ОткъÑ" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "ДиÑкуÑиÑ" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Коментари" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Ревизии" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Кратко име" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Ðвтор" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Формат" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Ðтрибути на Ñтраницата" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:751 +msgid "Featured Image" +msgstr "Главна Ñнимка" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Категории" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Етикети" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Изпращане на проÑледÑващи връзки" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Показване на тази група полета ако" + +#: includes/admin/views/install-network.php:4 +#, fuzzy +msgid "Upgrade Sites" +msgstr "Забележки за обновÑването" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Модерни потребителÑки полета - ОбновÑване на базата данни" + +#: includes/admin/views/install-network.php:11 +#, fuzzy, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Следните Ñайтове имат нужда от обновÑване на базата данни. Изберете тези, " +"които иÑкате да обновите и натиÑнете на \"ОбновÑване на базата данни\"." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Сайт" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Сайтът изиÑква обновÑване на базата данни от %s до %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Сайтът нÑма нужда от обновÑване" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"ОбновÑването на базата данни бе завършено. Връщане към " +"мрежовото табло" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Силно Ви препоръчваме да архивирате вашата база данни преди да продължите. " +"Сигурни ли Ñте, че иÑкате да продължите Ñ Ð¾Ð±Ð½Ð¾Ð²Ñването?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "ОбновÑването завърши" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "ОбновÑване на данните до верÑÐ¸Ñ %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Repeater" +msgstr "Повторител" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "Flexible Content" +msgstr "Гъвкаво Ñъдържание" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:36 +msgid "Gallery" +msgstr "ГалериÑ" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:13 +msgid "Options Page" +msgstr "Страница Ñ Ð¾Ð¿Ñ†Ð¸Ð¸" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "ИзиÑква Ñе обновÑване на базата данни" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Благодарим ви за обновÑването към %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Преди да започнете да използвате новите Ñтрахотни функции, Ð¼Ð¾Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²ÐµÑ‚Ðµ " +"базата данни до поÑледната верÑиÑ." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Прочитане на задачите за обновÑване..." + +#: includes/admin/views/install.php:11 +#, fuzzy, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" +"ОбновÑването на базата данни бе завършено. Връщане към " +"мрежовото табло" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "СвалÑне и инÑталиране" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "ИнÑталирано" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Добре дошли в Модерни потребителÑки полета" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Благодарим, че обновихте! Модерни потребителÑки полета %s Ñега е по-голÑм и " +"по-добър от вÑÑкога. ÐадÑваме Ñе че ще Ви хареÑа." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "По-удобна работа Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñки полета" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Подобрена ползваемоÑÑ‚" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Включването на популÑрната библиотека Select2 подобри използването и " +"ÑкороÑтта на множеÑтво полета, включително обект-публикациÑ, връзка към " +"Ñтраница, такÑÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ð¸ поле за избор." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Подобрен дизайн" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Много от полетата претърпÑха визуални Ð¿Ð¾Ð´Ð¾Ð±Ñ€ÐµÐ½Ð¸Ñ Ð¸ Ñега изглеждат по-добре " +"от вÑÑкога! Забележими промени могат да Ñе видÑÑ‚ по галериÑта, полето за " +"връзка и oEmbed полето!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Подобрени данни" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"ПодобрÑването на архитектурата на данните позволи вложените полета да " +"ÑъщеÑтвуват незавиÑимо от Ñвоите родители. Това позволÑва да ги меÑтите " +"извън родителите Ñи!" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Сбогом на добавките. Здравей, PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "ПредÑтавÑме Ви Модерни потребителÑки полета PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"ПроменÑме начина по който Ви предоÑтавÑме платената функционалноÑÑ‚ по " +"вълнуващ начин!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Ð’Ñички 4 платени добавки бÑха обединени в една нова PRO " +"верÑиÑ. С наличните личен лиценз и този за разработчици, платената " +"функционалноÑÑ‚ е по-доÑтъпна от вÑÑкога!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Мощни функции" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"PRO верÑиÑта Ñъдържа мощни функции като повторÑеми полета, гъвкави " +"Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ñъдържанието, краÑиво поле за Ð³Ð°Ð»ÐµÑ€Ð¸Ñ Ð¸ възможноÑтта да " +"Ñъздавате допълнителни Ñтраници Ñ Ð¾Ð¿Ñ†Ð¸Ð¸ в админиÑтрациÑта." + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Ðаучете повече за PRO функциите." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "ЛеÑно обновÑване" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"За да направите обновÑването леÑно, влезте в профила Ñи и " +"вземете вашето безплатно PRO копие!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Също така напиÑахме Ñъветник по обновÑването за да " +"отговорим на вÑÑкакви въпроÑи, но ако имате нÑкакви други въпроÑи, Ð¼Ð¾Ð»Ñ " +"Ñвържете Ñе Ñ Ð½Ð°ÑˆÐ¸Ñ Ð¾Ñ‚Ð´ÐµÐ» Поддръжка" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Под капака" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "По-умни наÑтройки на полетата" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "Вече запиÑваме наÑтройките на полетата като индивидуални публикации" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Повече AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" +"Още повече полета използват AJAX-базирано търÑене, за да уÑкорÑÑ‚ зареждането " +"на Ñтраниците" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "Локален JSON" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "ÐÐ¾Ð²Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÐ½ екÑпорт към JSON увеличава ÑкороÑтта" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "По-добър контрол на верÑиите" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" +"ÐÐ¾Ð²Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÐ½ екÑпорт към JSON позволÑва наÑтройките на полетата да " +"бъдат под контрол на верÑиите" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "Заменихме XML Ñ JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Импортирането и екÑпортирането вече използват JSON вмеÑто XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Ðови формулÑри" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Полетата вече могат да бъдат закачени към коментари, джаджи и " +"потребителÑките формулÑри!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Ðово поле за вграждане на Ñъдържание бе добавено" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Ðова галериÑ" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Полето за Ð³Ð°Ð»ÐµÑ€Ð¸Ñ Ð¿Ñ€ÐµÑ‚ÑŠÑ€Ð¿Ñ Ñериозни визуални подобрениÑ" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Ðови наÑтройки" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"БÑха добавени наÑтройки на групите полета за поÑтавÑне на етикет и инÑтрукции" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "По-добри форми в Ñайта" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() вече може да Ñъздава нови публикации при изпращане" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "По-добра валидациÑ" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "ВалидациÑта на формулÑрите вече Ñе прави Ñ PHP + AJAX вмеÑто Ñамо Ñ JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Поле за връзка" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Ðови наÑтройки на полето за връзка за 'Филтри' (търÑене, тип публикациÑ, " +"такÑономиÑ)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "МеÑтене на полета" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"Ðовата функционалноÑÑ‚ на групите полета Ви позволÑва да меÑтите полета " +"измежду групите и родителите" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:36 +msgid "Page Link" +msgstr "Връзка към Ñтраница" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Ðова група архиви в page_link полето" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "По-добри Ñтраници Ñ Ð¾Ð¿Ñ†Ð¸Ð¸" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Ðовите функции за Ñтраници Ñ Ð¾Ð¿Ñ†Ð¸Ð¸ позволÑват Ñъздаването както на " +"родителÑки Ñтраници, така и на Ñтраници-деца." + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "СмÑтаме, че ще хареÑате промените в %s." + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "ЕкÑпортиране на групите полета към PHP" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Ð¡Ð»ÐµÐ´Ð½Ð¸Ñ ÐºÐ¾Ð´ може да Ñе използва, за да региÑтрирате локална верÑÐ¸Ñ Ð½Ð° " +"избраните групи полета. Локалната група полета може да помогне Ñ Ð¿Ð¾-бързо " +"зареждане, контрол на верÑиите и динамични наÑтройки. ПроÑто копирайте и " +"Ñложете кода във файла functions.php на темата Ñи или го Ñложете във външен " +"файл." + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Избор на групи полета" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "ЕкÑпортиране на групи полета" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Изберете групите полета които иÑкате да екÑпортирате и поÑле изберете " +"Ð¶ÐµÐ»Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´. Използвайте бутона за ÑвалÑне за да Ñъздадете .json файл, " +"които можете да импортирате в друга инÑталациÑ. Използвайте бутона за " +"генериране за да екÑпортирате към PHP код, които можете да поÑтавите в " +"темата Ñи." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "СвалÑне на екÑÐ¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Генериране на код" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "Импортиране на групи полета" + +#: includes/admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Изберете JSON файла, който иÑкате да импортирате. Когато натиÑнете бутона за " +"импортиране, групите полета ще бъдат импортирани." + +#: includes/admin/views/settings-tools.php:77 +#: includes/fields/class-acf-field-file.php:46 +msgid "Select File" +msgstr "Избор на файл" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Импортиране" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "Картинка" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "Средна" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "ГолÑма" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "Пълен размер" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1837 +#: pro/fields/class-acf-field-clone.php:1042 +msgid "(no title)" +msgstr "(без заглавие)" + +#: includes/api/api-helpers.php:1874 +#: includes/fields/class-acf-field-page_link.php:284 +#: includes/fields/class-acf-field-post_object.php:283 +#: includes/fields/class-acf-field-taxonomy.php:992 +#, fuzzy +msgid "Parent" +msgstr "Горно ниво Ñтраница (родител)" + +#: includes/api/api-helpers.php:3891 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Ширината на изображението трÑбва да бъде поне %d пикÑела." + +#: includes/api/api-helpers.php:3896 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Ширината на изображението не трÑбва да надвишава %d пикÑела." + +#: includes/api/api-helpers.php:3912 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "ВиÑочината на изображението трÑбва да бъде поне %d пикÑела." + +#: includes/api/api-helpers.php:3917 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "ВиÑочината на изображението не трÑбва да надвишава %d пикÑела." + +#: includes/api/api-helpers.php:3935 +#, php-format +msgid "File size must be at least %s." +msgstr "Размерът на файла трÑбва да бъде поне %s." + +#: includes/api/api-helpers.php:3940 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Размерът на файла трÑбва да не надвишава %s." + +#: includes/api/api-helpers.php:3974 +#, php-format +msgid "File type must be %s." +msgstr "Типът на файла трÑбва да бъде %s." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "ОÑновен" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Съдържание" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Избор" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Релационен" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 includes/fields/class-acf-field-checkbox.php:286 +#: includes/fields/class-acf-field-group.php:485 +#: includes/fields/class-acf-field-radio.php:300 +#: pro/fields/class-acf-field-clone.php:889 +#: pro/fields/class-acf-field-flexible-content.php:569 +#: pro/fields/class-acf-field-flexible-content.php:618 +#: pro/fields/class-acf-field-repeater.php:514 +msgid "Layout" +msgstr "Шаблон" + +#: includes/fields.php:305 +msgid "Field type does not exist" +msgstr "Типът поле не ÑъщеÑтвува" + +#: includes/fields.php:305 +msgid "Unknown" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:36 +#: includes/fields/class-acf-field-taxonomy.php:786 +msgid "Checkbox" +msgstr "Отметка" + +#: includes/fields/class-acf-field-checkbox.php:150 +msgid "Toggle All" +msgstr "Превключване на вÑички" + +#: includes/fields/class-acf-field-checkbox.php:207 +#, fuzzy +msgid "Add new choice" +msgstr "ДобавÑне на ново поле" + +#: includes/fields/class-acf-field-checkbox.php:246 +#: includes/fields/class-acf-field-radio.php:250 +#: includes/fields/class-acf-field-select.php:466 +msgid "Choices" +msgstr "Опции" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "Enter each choice on a new line." +msgstr "Въведете вÑÑка Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° нов ред." + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "For more control, you may specify both a value and label like this:" +msgstr "За повече контрол, можете да уточните и ÑтойноÑÑ‚ и етикет, например:" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "red : Red" +msgstr "red : Red" + +#: includes/fields/class-acf-field-checkbox.php:255 +#, fuzzy +msgid "Allow Custom" +msgstr "ПозволÑване на празна ÑтойноÑÑ‚?" + +#: includes/fields/class-acf-field-checkbox.php:260 +msgid "Allow 'custom' values to be added" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:266 +#, fuzzy +msgid "Save Custom" +msgstr "ПремеÑтване на поле" + +#: includes/fields/class-acf-field-checkbox.php:271 +#, fuzzy +msgid "Save 'custom' values to the field's choices" +msgstr "Запазване на ÑтойноÑтите 'друго' към опциите на полето" + +#: includes/fields/class-acf-field-checkbox.php:277 +#: includes/fields/class-acf-field-color_picker.php:146 +#: includes/fields/class-acf-field-email.php:133 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-radio.php:291 +#: includes/fields/class-acf-field-select.php:475 +#: includes/fields/class-acf-field-text.php:142 +#: includes/fields/class-acf-field-textarea.php:139 +#: includes/fields/class-acf-field-true_false.php:150 +#: includes/fields/class-acf-field-url.php:114 +#: includes/fields/class-acf-field-wysiwyg.php:436 +msgid "Default Value" +msgstr "СтойноÑÑ‚ по подразбиране" + +#: includes/fields/class-acf-field-checkbox.php:278 +#: includes/fields/class-acf-field-select.php:476 +msgid "Enter each default value on a new line" +msgstr "Въведете вÑÑка ÑтойноÑÑ‚ по подразбиране на нов ред" + +#: includes/fields/class-acf-field-checkbox.php:292 +#: includes/fields/class-acf-field-radio.php:306 +msgid "Vertical" +msgstr "Вертикален" + +#: includes/fields/class-acf-field-checkbox.php:293 +#: includes/fields/class-acf-field-radio.php:307 +msgid "Horizontal" +msgstr "Хоризонтален" + +#: includes/fields/class-acf-field-checkbox.php:300 +msgid "Toggle" +msgstr "Превключване" + +#: includes/fields/class-acf-field-checkbox.php:301 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Прибавете допълнителна отметка за да превключите вÑички опции" + +#: includes/fields/class-acf-field-checkbox.php:310 +#: includes/fields/class-acf-field-file.php:219 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:180 +#: includes/fields/class-acf-field-radio.php:314 +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Return Value" +msgstr "Върната ÑтойноÑÑ‚" + +#: includes/fields/class-acf-field-checkbox.php:311 +#: includes/fields/class-acf-field-file.php:220 +#: includes/fields/class-acf-field-image.php:207 +#: includes/fields/class-acf-field-link.php:181 +#: includes/fields/class-acf-field-radio.php:315 +msgid "Specify the returned value on front end" +msgstr "УточнÑва върнатата ÑтойноÑÑ‚ в Ñайта" + +#: includes/fields/class-acf-field-checkbox.php:316 +#: includes/fields/class-acf-field-radio.php:320 +#: includes/fields/class-acf-field-select.php:529 +#, fuzzy +msgid "Value" +msgstr "%s ÑтойноÑÑ‚ е задължителна" + +#: includes/fields/class-acf-field-checkbox.php:318 +#: includes/fields/class-acf-field-radio.php:322 +#: includes/fields/class-acf-field-select.php:531 +msgid "Both (Array)" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:36 +msgid "Color Picker" +msgstr "Избор на цвÑÑ‚" + +#: includes/fields/class-acf-field-color_picker.php:83 +msgid "Clear" +msgstr "ИзчиÑтване" + +#: includes/fields/class-acf-field-color_picker.php:84 +msgid "Default" +msgstr "По подразбиране" + +#: includes/fields/class-acf-field-color_picker.php:85 +msgid "Select Color" +msgstr "Избор на цвÑÑ‚" + +#: includes/fields/class-acf-field-color_picker.php:86 +msgid "Current Color" +msgstr "Текущ цвÑÑ‚" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgid "Date Picker" +msgstr "Избор на дата" + +#: includes/fields/class-acf-field-date_picker.php:44 +#, fuzzy +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Готово" + +#: includes/fields/class-acf-field-date_picker.php:45 +#, fuzzy +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "ДнеÑ" + +#: includes/fields/class-acf-field-date_picker.php:46 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:47 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:48 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:223 +#: includes/fields/class-acf-field-date_time_picker.php:197 +#: includes/fields/class-acf-field-time_picker.php:127 +msgid "Display Format" +msgstr "Формат на показване" + +#: includes/fields/class-acf-field-date_picker.php:224 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-time_picker.php:128 +msgid "The format displayed when editing a post" +msgstr "Форматът, показан при Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° публикациÑ" + +#: includes/fields/class-acf-field-date_picker.php:232 +#: includes/fields/class-acf-field-date_picker.php:263 +#: includes/fields/class-acf-field-date_time_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:224 +#: includes/fields/class-acf-field-time_picker.php:135 +#: includes/fields/class-acf-field-time_picker.php:150 +#, fuzzy +msgid "Custom:" +msgstr "Модерни потребителÑки полета" + +#: includes/fields/class-acf-field-date_picker.php:242 +#, fuzzy +msgid "Save Format" +msgstr "Запази формата" + +#: includes/fields/class-acf-field-date_picker.php:243 +#, fuzzy +msgid "The format used when saving a value" +msgstr "Форматът, показан при Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° публикациÑ" + +#: includes/fields/class-acf-field-date_picker.php:253 +#: includes/fields/class-acf-field-date_time_picker.php:214 +#: includes/fields/class-acf-field-post_object.php:447 +#: includes/fields/class-acf-field-relationship.php:778 +#: includes/fields/class-acf-field-select.php:524 +#: includes/fields/class-acf-field-time_picker.php:142 +msgid "Return Format" +msgstr "Формат на върнатите данни" + +#: includes/fields/class-acf-field-date_picker.php:254 +#: includes/fields/class-acf-field-date_time_picker.php:215 +#: includes/fields/class-acf-field-time_picker.php:143 +msgid "The format returned via template functions" +msgstr "Форматът, който Ñе връща от шаблонните функции" + +#: includes/fields/class-acf-field-date_picker.php:272 +#: includes/fields/class-acf-field-date_time_picker.php:231 +msgid "Week Starts On" +msgstr "Седмицата започва Ñ" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +#, fuzzy +msgid "Date Time Picker" +msgstr "Избор на дата и чаÑ" + +#: includes/fields/class-acf-field-date_time_picker.php:44 +#, fuzzy +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "ЗатварÑне на полето" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:47 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:48 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:51 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:52 +#, fuzzy +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Импортирането и екÑпортирането вече използват JSON вмеÑто XML" + +#: includes/fields/class-acf-field-date_time_picker.php:53 +#, fuzzy +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Готово" + +#: includes/fields/class-acf-field-date_time_picker.php:54 +#, fuzzy +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Избор" + +#: includes/fields/class-acf-field-date_time_picker.php:56 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:57 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:60 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:61 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "" + +#: includes/fields/class-acf-field-email.php:36 +msgid "Email" +msgstr "Email" + +#: includes/fields/class-acf-field-email.php:134 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-radio.php:292 +#: includes/fields/class-acf-field-text.php:143 +#: includes/fields/class-acf-field-textarea.php:140 +#: includes/fields/class-acf-field-url.php:115 +#: includes/fields/class-acf-field-wysiwyg.php:437 +msgid "Appears when creating a new post" +msgstr "ПоÑвÑва Ñе при Ñъздаване на нова публикациÑ" + +#: includes/fields/class-acf-field-email.php:142 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:134 +#: includes/fields/class-acf-field-text.php:151 +#: includes/fields/class-acf-field-textarea.php:148 +#: includes/fields/class-acf-field-url.php:123 +msgid "Placeholder Text" +msgstr "ТекÑÑ‚ при липÑа на ÑтойноÑÑ‚" + +#: includes/fields/class-acf-field-email.php:143 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:135 +#: includes/fields/class-acf-field-text.php:152 +#: includes/fields/class-acf-field-textarea.php:149 +#: includes/fields/class-acf-field-url.php:124 +msgid "Appears within the input" +msgstr "Показва Ñе в полето при липÑа на ÑтойноÑÑ‚" + +#: includes/fields/class-acf-field-email.php:151 +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-password.php:143 +#: includes/fields/class-acf-field-text.php:160 +msgid "Prepend" +msgstr "ПоÑтавÑне в началото" + +#: includes/fields/class-acf-field-email.php:152 +#: includes/fields/class-acf-field-number.php:164 +#: includes/fields/class-acf-field-password.php:144 +#: includes/fields/class-acf-field-text.php:161 +msgid "Appears before the input" +msgstr "Показва Ñе преди полето" + +#: includes/fields/class-acf-field-email.php:160 +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-password.php:152 +#: includes/fields/class-acf-field-text.php:169 +msgid "Append" +msgstr "ПоÑтавÑне в краÑ" + +#: includes/fields/class-acf-field-email.php:161 +#: includes/fields/class-acf-field-number.php:173 +#: includes/fields/class-acf-field-password.php:153 +#: includes/fields/class-acf-field-text.php:170 +msgid "Appears after the input" +msgstr "Показва Ñе Ñлед полето" + +#: includes/fields/class-acf-field-file.php:36 +msgid "File" +msgstr "Файл" + +#: includes/fields/class-acf-field-file.php:47 +msgid "Edit File" +msgstr "Редактиране на файл" + +#: includes/fields/class-acf-field-file.php:48 +msgid "Update File" +msgstr "ÐÐºÑ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° файла" + +#: includes/fields/class-acf-field-file.php:49 +#: includes/fields/class-acf-field-image.php:54 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:55 +msgid "Uploaded to this post" +msgstr "Прикачени към тази публикациÑ" + +#: includes/fields/class-acf-field-file.php:145 +#, fuzzy +msgid "File name" +msgstr "Име на файла" + +#: includes/fields/class-acf-field-file.php:149 +#: includes/fields/class-acf-field-file.php:252 +#: includes/fields/class-acf-field-file.php:263 +#: includes/fields/class-acf-field-image.php:266 +#: includes/fields/class-acf-field-image.php:295 +#: pro/fields/class-acf-field-gallery.php:705 +#: pro/fields/class-acf-field-gallery.php:734 +msgid "File size" +msgstr "Размер на файла" + +#: includes/fields/class-acf-field-file.php:174 +msgid "Add File" +msgstr "ДобавÑне на файл" + +#: includes/fields/class-acf-field-file.php:225 +msgid "File Array" +msgstr "МаÑив от файлове" + +#: includes/fields/class-acf-field-file.php:226 +msgid "File URL" +msgstr "URL на файла" + +#: includes/fields/class-acf-field-file.php:227 +msgid "File ID" +msgstr "ID на файла" + +#: includes/fields/class-acf-field-file.php:234 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:670 +msgid "Library" +msgstr "Библиотека" + +#: includes/fields/class-acf-field-file.php:235 +#: includes/fields/class-acf-field-image.php:232 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Limit the media library choice" +msgstr "Ограничаване на избора на файлове" + +#: includes/fields/class-acf-field-file.php:240 +#: includes/fields/class-acf-field-image.php:237 +#: includes/locations/class-acf-location-attachment.php:105 +#: includes/locations/class-acf-location-comment.php:83 +#: includes/locations/class-acf-location-nav-menu.php:106 +#: includes/locations/class-acf-location-taxonomy.php:83 +#: includes/locations/class-acf-location-user-form.php:91 +#: includes/locations/class-acf-location-user-role.php:108 +#: includes/locations/class-acf-location-widget.php:87 +#: pro/fields/class-acf-field-gallery.php:676 +msgid "All" +msgstr "Ð’Ñички" + +#: includes/fields/class-acf-field-file.php:241 +#: includes/fields/class-acf-field-image.php:238 +#: pro/fields/class-acf-field-gallery.php:677 +msgid "Uploaded to post" +msgstr "Прикачени към публикациÑ" + +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-image.php:245 +#: pro/fields/class-acf-field-gallery.php:684 +msgid "Minimum" +msgstr "Минимум" + +#: includes/fields/class-acf-field-file.php:249 +#: includes/fields/class-acf-field-file.php:260 +msgid "Restrict which files can be uploaded" +msgstr "Ограничаване какви файлове могат да бъдат качени" + +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:713 +msgid "Maximum" +msgstr "МакÑимум" + +#: includes/fields/class-acf-field-file.php:270 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:742 +msgid "Allowed file types" +msgstr "Позволени файлови типове" + +#: includes/fields/class-acf-field-file.php:271 +#: includes/fields/class-acf-field-image.php:304 +#: pro/fields/class-acf-field-gallery.php:743 +msgid "Comma separated list. Leave blank for all types" +msgstr "СпиÑък, разделен ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸. ОÑтавете празно за вÑички типове" + +#: includes/fields/class-acf-field-google-map.php:36 +msgid "Google Map" +msgstr "Google карта" + +#: includes/fields/class-acf-field-google-map.php:51 +msgid "Locating" +msgstr "Ðамиране" + +#: includes/fields/class-acf-field-google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "За Ñъжаление този браузър не поддържа геолокациÑ" + +#: includes/fields/class-acf-field-google-map.php:133 +msgid "Clear location" +msgstr "ИзчиÑтване на меÑтоположение" + +#: includes/fields/class-acf-field-google-map.php:134 +msgid "Find current location" +msgstr "Ðамерете текущото меÑтоположение" + +#: includes/fields/class-acf-field-google-map.php:137 +msgid "Search for address..." +msgstr "ТърÑене на адреÑ..." + +#: includes/fields/class-acf-field-google-map.php:167 +#: includes/fields/class-acf-field-google-map.php:178 +msgid "Center" +msgstr "Центриране" + +#: includes/fields/class-acf-field-google-map.php:168 +#: includes/fields/class-acf-field-google-map.php:179 +msgid "Center the initial map" +msgstr "Центриране на първоначалната карта" + +#: includes/fields/class-acf-field-google-map.php:190 +msgid "Zoom" +msgstr "Увеличаване" + +#: includes/fields/class-acf-field-google-map.php:191 +msgid "Set the initial zoom level" +msgstr "Задаване на ниво на първоначалното увеличение" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-image.php:257 +#: includes/fields/class-acf-field-image.php:286 +#: includes/fields/class-acf-field-oembed.php:297 +#: pro/fields/class-acf-field-gallery.php:696 +#: pro/fields/class-acf-field-gallery.php:725 +msgid "Height" +msgstr "ВиÑочина" + +#: includes/fields/class-acf-field-google-map.php:201 +msgid "Customise the map height" +msgstr "ПерÑонализиране на виÑочината на картата" + +#: includes/fields/class-acf-field-group.php:36 +#, fuzzy +msgid "Group" +msgstr "Създай нова група от полета" + +#: includes/fields/class-acf-field-group.php:469 +#: pro/fields/class-acf-field-repeater.php:453 +msgid "Sub Fields" +msgstr "Вложени полета" + +#: includes/fields/class-acf-field-group.php:486 +#: pro/fields/class-acf-field-clone.php:890 +msgid "Specify the style used to render the selected fields" +msgstr "" + +#: includes/fields/class-acf-field-group.php:491 +#: pro/fields/class-acf-field-clone.php:895 +#: pro/fields/class-acf-field-flexible-content.php:629 +#: pro/fields/class-acf-field-repeater.php:522 +msgid "Block" +msgstr "Блок" + +#: includes/fields/class-acf-field-group.php:492 +#: pro/fields/class-acf-field-clone.php:896 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:521 +msgid "Table" +msgstr "Таблица" + +#: includes/fields/class-acf-field-group.php:493 +#: pro/fields/class-acf-field-clone.php:897 +#: pro/fields/class-acf-field-flexible-content.php:630 +#: pro/fields/class-acf-field-repeater.php:523 +msgid "Row" +msgstr "Ред" + +#: includes/fields/class-acf-field-image.php:36 +msgid "Image" +msgstr "Изображение" + +#: includes/fields/class-acf-field-image.php:51 +msgid "Select Image" +msgstr "Избор на изображение" + +#: includes/fields/class-acf-field-image.php:52 +#: pro/fields/class-acf-field-gallery.php:53 +msgid "Edit Image" +msgstr "Редактиране на изображение" + +#: includes/fields/class-acf-field-image.php:53 +#: pro/fields/class-acf-field-gallery.php:54 +msgid "Update Image" +msgstr "ÐÐºÑ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° изображението" + +#: includes/fields/class-acf-field-image.php:55 +msgid "All images" +msgstr "Ð’Ñички изображениÑ" + +#: includes/fields/class-acf-field-image.php:142 +#: includes/fields/class-acf-field-link.php:153 includes/input.php:267 +#: pro/fields/class-acf-field-gallery.php:358 +#: pro/fields/class-acf-field-gallery.php:546 +msgid "Remove" +msgstr "Премахване" + +#: includes/fields/class-acf-field-image.php:158 +msgid "No image selected" +msgstr "ÐÑма избрано изображение" + +#: includes/fields/class-acf-field-image.php:158 +msgid "Add Image" +msgstr "ДобавÑне на изображение" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image Array" +msgstr "МаÑив от изображениÑ" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image URL" +msgstr "URL на изображението" + +#: includes/fields/class-acf-field-image.php:214 +msgid "Image ID" +msgstr "ID на изображението" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Preview Size" +msgstr "Размер на визуализациÑ" + +#: includes/fields/class-acf-field-image.php:222 +msgid "Shown when entering data" +msgstr "Показва Ñе при въвеждане на данни" + +#: includes/fields/class-acf-field-image.php:246 +#: includes/fields/class-acf-field-image.php:275 +#: pro/fields/class-acf-field-gallery.php:685 +#: pro/fields/class-acf-field-gallery.php:714 +msgid "Restrict which images can be uploaded" +msgstr "Ограничаване какви Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³Ð°Ñ‚ да бъдат качени" + +#: includes/fields/class-acf-field-image.php:249 +#: includes/fields/class-acf-field-image.php:278 +#: includes/fields/class-acf-field-oembed.php:286 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Width" +msgstr "Ширина" + +#: includes/fields/class-acf-field-link.php:36 +#, fuzzy +msgid "Link" +msgstr "Връзка към Ñтраница" + +#: includes/fields/class-acf-field-link.php:146 +#, fuzzy +msgid "Select Link" +msgstr "Избор на файл" + +#: includes/fields/class-acf-field-link.php:151 +msgid "Opens in a new window/tab" +msgstr "" + +#: includes/fields/class-acf-field-link.php:186 +#, fuzzy +msgid "Link Array" +msgstr "МаÑив от файлове" + +#: includes/fields/class-acf-field-link.php:187 +#, fuzzy +msgid "Link URL" +msgstr "URL на файла" + +#: includes/fields/class-acf-field-message.php:36 +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-true_false.php:141 +msgid "Message" +msgstr "Съобщение" + +#: includes/fields/class-acf-field-message.php:124 +#: includes/fields/class-acf-field-textarea.php:176 +msgid "New Lines" +msgstr "Ðови редове" + +#: includes/fields/class-acf-field-message.php:125 +#: includes/fields/class-acf-field-textarea.php:177 +msgid "Controls how new lines are rendered" +msgstr "Контролира как Ñе извеждат новите редове" + +#: includes/fields/class-acf-field-message.php:129 +#: includes/fields/class-acf-field-textarea.php:181 +msgid "Automatically add paragraphs" +msgstr "Ðвтоматично добавÑне на параграфи" + +#: includes/fields/class-acf-field-message.php:130 +#: includes/fields/class-acf-field-textarea.php:182 +msgid "Automatically add <br>" +msgstr "Ðвтоматично добавÑне на <br>" + +#: includes/fields/class-acf-field-message.php:131 +#: includes/fields/class-acf-field-textarea.php:183 +msgid "No Formatting" +msgstr "Без форматиране" + +#: includes/fields/class-acf-field-message.php:138 +msgid "Escape HTML" +msgstr "ИзчиÑтване на HTML" + +#: includes/fields/class-acf-field-message.php:139 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "ПозволÑване на HTML-а да Ñе показва като видим текÑÑ‚" + +#: includes/fields/class-acf-field-number.php:36 +msgid "Number" +msgstr "ЧиÑло" + +#: includes/fields/class-acf-field-number.php:181 +msgid "Minimum Value" +msgstr "Минимална ÑтойноÑÑ‚" + +#: includes/fields/class-acf-field-number.php:190 +msgid "Maximum Value" +msgstr "МакÑимална ÑтойноÑÑ‚" + +#: includes/fields/class-acf-field-number.php:199 +msgid "Step Size" +msgstr "Размер на Ñтъпката" + +#: includes/fields/class-acf-field-number.php:237 +msgid "Value must be a number" +msgstr "СтойноÑтта трÑбва да е чиÑло" + +#: includes/fields/class-acf-field-number.php:255 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "СтойноÑтта трÑбва да е равна на или по-голÑма от %d" + +#: includes/fields/class-acf-field-number.php:263 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "СтойноÑтта трÑбва да е равна на или по-малка от %d" + +#: includes/fields/class-acf-field-oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:237 +msgid "Enter URL" +msgstr "Въведете URL адреÑ" + +#: includes/fields/class-acf-field-oembed.php:250 +#: includes/fields/class-acf-field-taxonomy.php:904 +msgid "Error." +msgstr "Грешка." + +#: includes/fields/class-acf-field-oembed.php:250 +msgid "No embed found for the given URL." +msgstr "ÐÑма открито вграждане за поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ URL адреÑ." + +#: includes/fields/class-acf-field-oembed.php:283 +#: includes/fields/class-acf-field-oembed.php:294 +msgid "Embed Size" +msgstr "Размери за вграждане" + +#: includes/fields/class-acf-field-page_link.php:192 +msgid "Archives" +msgstr "Ðрхиви" + +#: includes/fields/class-acf-field-page_link.php:500 +#: includes/fields/class-acf-field-post_object.php:399 +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Filter by Post Type" +msgstr "Филтриране по тип публикациÑ" + +#: includes/fields/class-acf-field-page_link.php:508 +#: includes/fields/class-acf-field-post_object.php:407 +#: includes/fields/class-acf-field-relationship.php:712 +msgid "All post types" +msgstr "Ð’Ñички типове публикации" + +#: includes/fields/class-acf-field-page_link.php:514 +#: includes/fields/class-acf-field-post_object.php:413 +#: includes/fields/class-acf-field-relationship.php:718 +msgid "Filter by Taxonomy" +msgstr "Филтриране по такÑономиÑ" + +#: includes/fields/class-acf-field-page_link.php:522 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-relationship.php:726 +msgid "All taxonomies" +msgstr "Ð’Ñички такÑономии" + +#: includes/fields/class-acf-field-page_link.php:528 +#: includes/fields/class-acf-field-post_object.php:427 +#: includes/fields/class-acf-field-radio.php:259 +#: includes/fields/class-acf-field-select.php:484 +#: includes/fields/class-acf-field-taxonomy.php:799 +#: includes/fields/class-acf-field-user.php:423 +msgid "Allow Null?" +msgstr "ПозволÑване на празна ÑтойноÑÑ‚?" + +#: includes/fields/class-acf-field-page_link.php:538 +msgid "Allow Archives URLs" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:548 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-select.php:494 +#: includes/fields/class-acf-field-user.php:433 +msgid "Select multiple values?" +msgstr "Избиране на нÑколко ÑтойноÑти?" + +#: includes/fields/class-acf-field-password.php:36 +msgid "Password" +msgstr "Парола" + +#: includes/fields/class-acf-field-post_object.php:36 +#: includes/fields/class-acf-field-post_object.php:452 +#: includes/fields/class-acf-field-relationship.php:783 +msgid "Post Object" +msgstr "Обект-публикациÑ" + +#: includes/fields/class-acf-field-post_object.php:453 +#: includes/fields/class-acf-field-relationship.php:784 +msgid "Post ID" +msgstr "ID на публикациÑ" + +#: includes/fields/class-acf-field-radio.php:36 +msgid "Radio Button" +msgstr "Радио бутон" + +#: includes/fields/class-acf-field-radio.php:269 +msgid "Other" +msgstr "Друго" + +#: includes/fields/class-acf-field-radio.php:274 +msgid "Add 'other' choice to allow for custom values" +msgstr "ДобавÑне на избор 'друго' като възможноÑÑ‚ за потребителÑките ÑтойноÑти" + +#: includes/fields/class-acf-field-radio.php:280 +msgid "Save Other" +msgstr "Запазване" + +#: includes/fields/class-acf-field-radio.php:285 +msgid "Save 'other' values to the field's choices" +msgstr "Запазване на ÑтойноÑтите 'друго' към опциите на полето" + +#: includes/fields/class-acf-field-relationship.php:36 +msgid "Relationship" +msgstr "Връзка" + +#: includes/fields/class-acf-field-relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ð±Ñ€Ð¾Ð¹ ÑтойноÑти бе доÑтигнат ( {min} ÑтойноÑти )" + +#: includes/fields/class-acf-field-relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "МакÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ð±Ñ€Ð¾Ð¹ ÑтойноÑти бе доÑтигнат ( {min} ÑтойноÑти )" + +#: includes/fields/class-acf-field-relationship.php:50 +msgid "Loading" +msgstr "Зареждане" + +#: includes/fields/class-acf-field-relationship.php:51 +msgid "No matches found" +msgstr "ÐÑма намерени ÑъвпадениÑ" + +#: includes/fields/class-acf-field-relationship.php:585 +msgid "Search..." +msgstr "ТърÑене…" + +#: includes/fields/class-acf-field-relationship.php:594 +msgid "Select post type" +msgstr "Изберете тип на публикациÑта" + +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Select taxonomy" +msgstr "Изберете такÑономиÑ" + +#: includes/fields/class-acf-field-relationship.php:732 +msgid "Filters" +msgstr "Филтри" + +#: includes/fields/class-acf-field-relationship.php:738 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Вид на публикациÑ" + +#: includes/fields/class-acf-field-relationship.php:739 +#: includes/fields/class-acf-field-taxonomy.php:36 +#: includes/fields/class-acf-field-taxonomy.php:769 +msgid "Taxonomy" +msgstr "ТакÑономиÑ" + +#: includes/fields/class-acf-field-relationship.php:746 +msgid "Elements" +msgstr "Елементи" + +#: includes/fields/class-acf-field-relationship.php:747 +msgid "Selected elements will be displayed in each result" +msgstr "Избраните елементи ще бъдат показани във вÑеки резултат" + +#: includes/fields/class-acf-field-relationship.php:758 +msgid "Minimum posts" +msgstr "Минимален брой публикации" + +#: includes/fields/class-acf-field-relationship.php:767 +msgid "Maximum posts" +msgstr "МакÑимален брой публикации" + +#: includes/fields/class-acf-field-relationship.php:871 +#: pro/fields/class-acf-field-gallery.php:815 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s изиÑква поне %s избор" +msgstr[1] "%s изиÑква поне %s избора" + +#: includes/fields/class-acf-field-select.php:36 +#: includes/fields/class-acf-field-taxonomy.php:791 +#, fuzzy +msgctxt "noun" +msgid "Select" +msgstr "Избор" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "" + +#: includes/fields/class-acf-field-select.php:50 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" + +#: includes/fields/class-acf-field-select.php:51 +#, fuzzy +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "ÐÑма намерени ÑъвпадениÑ" + +#: includes/fields/class-acf-field-select.php:52 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:53 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:54 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "" + +#: includes/fields/class-acf-field-select.php:55 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:56 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "" + +#: includes/fields/class-acf-field-select.php:57 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "" + +#: includes/fields/class-acf-field-select.php:58 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "" + +#: includes/fields/class-acf-field-select.php:59 +#, fuzzy +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "ТърÑене на полета" + +#: includes/fields/class-acf-field-select.php:60 +#, fuzzy +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Провалена валидациÑ" + +#: includes/fields/class-acf-field-select.php:270 includes/media.php:54 +#, fuzzy +msgctxt "verb" +msgid "Select" +msgstr "Избор" + +#: includes/fields/class-acf-field-select.php:504 +#: includes/fields/class-acf-field-true_false.php:159 +msgid "Stylised UI" +msgstr "Стилизиран интерфейÑ" + +#: includes/fields/class-acf-field-select.php:514 +msgid "Use AJAX to lazy load choices?" +msgstr "Използване на AJAX за зареждане на опциите?" + +#: includes/fields/class-acf-field-select.php:525 +#, fuzzy +msgid "Specify the value returned" +msgstr "УточнÑва върнатата ÑтойноÑÑ‚ в Ñайта" + +#: includes/fields/class-acf-field-separator.php:36 +msgid "Separator" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:36 +msgid "Tab" +msgstr "Раздел" + +#: includes/fields/class-acf-field-tab.php:96 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "" +"Полето за раздел ще Ñе покаже грешно когато Ñе добави към поле-повторител Ñ " +"табличен Ñтил, или поле за гъвкаво Ñъдържание" + +#: includes/fields/class-acf-field-tab.php:97 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "" +"Използвайте \"Полета Раздел\" за да организирате по-добре екраните за " +"редактиране чрез групиране на полетата." + +#: includes/fields/class-acf-field-tab.php:98 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" +"Ð’Ñички полета Ñлед това \"раздел поле\" (или до Ñледващото такова) ще бъдат " +"групирани заедно в този раздел." + +#: includes/fields/class-acf-field-tab.php:112 +msgid "Placement" +msgstr "Положение" + +#: includes/fields/class-acf-field-tab.php:124 +msgid "End-point" +msgstr "Крайна точка" + +#: includes/fields/class-acf-field-tab.php:125 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "" +"Използване на това поле като крайна точка и започване на нова група раздели" + +#: includes/fields/class-acf-field-taxonomy.php:719 +#: includes/fields/class-acf-field-true_false.php:95 +#: includes/fields/class-acf-field-true_false.php:184 includes/input.php:266 +#: pro/admin/views/html-settings-updates.php:103 +msgid "No" +msgstr "Ðе" + +#: includes/fields/class-acf-field-taxonomy.php:738 +msgid "None" +msgstr "Ðикакъв" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Select the taxonomy to be displayed" +msgstr "Избор на такÑономиÑ" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Appearance" +msgstr "Външен вид" + +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Select the appearance of this field" +msgstr "Избор на Ð²ÑŠÐ½ÑˆÐ½Ð¸Ñ Ð²Ð¸Ð´ на това поле" + +#: includes/fields/class-acf-field-taxonomy.php:785 +msgid "Multiple Values" +msgstr "МножеÑтво ÑтойноÑти" + +#: includes/fields/class-acf-field-taxonomy.php:787 +msgid "Multi Select" +msgstr "МножеÑтво избрани ÑтойноÑти" + +#: includes/fields/class-acf-field-taxonomy.php:789 +msgid "Single Value" +msgstr "Единична ÑтойноÑÑ‚" + +#: includes/fields/class-acf-field-taxonomy.php:790 +msgid "Radio Buttons" +msgstr "Радио бутони" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Create Terms" +msgstr "Създаване на термини" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Allow new terms to be created whilst editing" +msgstr "ПозволÑване нови термини да Ñе Ñъздават при редактиране" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Save Terms" +msgstr "Запазване на термини" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Connect selected terms to the post" +msgstr "Свързване на избраните термини към тази публикациÑ" + +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Load Terms" +msgstr "Зареждане на термини" + +#: includes/fields/class-acf-field-taxonomy.php:830 +msgid "Load value from posts terms" +msgstr "Зареждане на ÑтойноÑÑ‚ от термините на публикациите" + +#: includes/fields/class-acf-field-taxonomy.php:844 +msgid "Term Object" +msgstr "Обект-термин" + +#: includes/fields/class-acf-field-taxonomy.php:845 +msgid "Term ID" +msgstr "ID на термин" + +#: includes/fields/class-acf-field-taxonomy.php:904 +#, php-format +msgid "User unable to add new %s" +msgstr "ПотребителÑÑ‚ не може да добави %s" + +#: includes/fields/class-acf-field-taxonomy.php:917 +#, php-format +msgid "%s already exists" +msgstr "%s вече ÑъщеÑтвува" + +#: includes/fields/class-acf-field-taxonomy.php:958 +#, php-format +msgid "%s added" +msgstr "уÑпешно добавÑне на %s" + +#: includes/fields/class-acf-field-taxonomy.php:1003 +msgid "Add" +msgstr "ДобавÑне" + +#: includes/fields/class-acf-field-text.php:36 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: includes/fields/class-acf-field-text.php:178 +#: includes/fields/class-acf-field-textarea.php:157 +msgid "Character Limit" +msgstr "МакÑимален брой Ñимволи" + +#: includes/fields/class-acf-field-text.php:179 +#: includes/fields/class-acf-field-textarea.php:158 +msgid "Leave blank for no limit" +msgstr "ОÑтавете празно за да премахнете ограничението" + +#: includes/fields/class-acf-field-textarea.php:36 +msgid "Text Area" +msgstr "ТекÑтова облаÑÑ‚" + +#: includes/fields/class-acf-field-textarea.php:166 +msgid "Rows" +msgstr "Редове" + +#: includes/fields/class-acf-field-textarea.php:167 +msgid "Sets the textarea height" +msgstr "Задава виÑочината на текÑтовото поле" + +#: includes/fields/class-acf-field-time_picker.php:36 +#, fuzzy +msgid "Time Picker" +msgstr "Избор на дата и чаÑ" + +#: includes/fields/class-acf-field-true_false.php:36 +msgid "True / False" +msgstr "Ð’Ñрно / невÑрно" + +#: includes/fields/class-acf-field-true_false.php:94 +#: includes/fields/class-acf-field-true_false.php:174 includes/input.php:265 +#: pro/admin/views/html-settings-updates.php:93 +msgid "Yes" +msgstr "Да" + +#: includes/fields/class-acf-field-true_false.php:142 +msgid "Displays text alongside the checkbox" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:170 +#, fuzzy +msgid "On Text" +msgstr "ТекÑÑ‚" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when active" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:180 +#, fuzzy +msgid "Off Text" +msgstr "ТекÑÑ‚" + +#: includes/fields/class-acf-field-true_false.php:181 +msgid "Text shown when inactive" +msgstr "" + +#: includes/fields/class-acf-field-url.php:36 +msgid "Url" +msgstr "Url" + +#: includes/fields/class-acf-field-url.php:165 +msgid "Value must be a valid URL" +msgstr "СтойноÑтта трÑбва да е валиден URL" + +#: includes/fields/class-acf-field-user.php:36 includes/locations.php:95 +msgid "User" +msgstr "Потребител" + +#: includes/fields/class-acf-field-user.php:408 +msgid "Filter by role" +msgstr "Филтриране по ролÑ" + +#: includes/fields/class-acf-field-user.php:416 +msgid "All user roles" +msgstr "Ð’Ñички потребителÑки роли" + +#: includes/fields/class-acf-field-wysiwyg.php:36 +msgid "Wysiwyg Editor" +msgstr "Редактор на Ñъдържание" + +#: includes/fields/class-acf-field-wysiwyg.php:385 +msgid "Visual" +msgstr "Визуален" + +#: includes/fields/class-acf-field-wysiwyg.php:386 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "ТекÑтов" + +#: includes/fields/class-acf-field-wysiwyg.php:392 +msgid "Click to initialize TinyMCE" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:445 +msgid "Tabs" +msgstr "Раздели" + +#: includes/fields/class-acf-field-wysiwyg.php:450 +msgid "Visual & Text" +msgstr "Визуален и текÑтов" + +#: includes/fields/class-acf-field-wysiwyg.php:451 +msgid "Visual Only" +msgstr "Само визуален" + +#: includes/fields/class-acf-field-wysiwyg.php:452 +msgid "Text Only" +msgstr "Само текÑтов" + +#: includes/fields/class-acf-field-wysiwyg.php:459 +msgid "Toolbar" +msgstr "Лента Ñ Ð¸Ð½Ñтрументи" + +#: includes/fields/class-acf-field-wysiwyg.php:469 +msgid "Show Media Upload Buttons?" +msgstr "Показване на бутоните за качване на файлове?" + +#: includes/fields/class-acf-field-wysiwyg.php:479 +msgid "Delay initialization?" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:480 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:304 +msgid "Edit field group" +msgstr "Редактиране на група полета" + +#: includes/forms/form-front.php:55 +#, fuzzy +msgid "Validate Email" +msgstr "Провалена валидациÑ" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:588 pro/options-page.php:81 +msgid "Update" +msgstr "ОбновÑване" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "ПубликациÑта бе актуализирана" + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "Открит Ñпам" + +#: includes/input.php:258 +msgid "Expand Details" +msgstr "Разпъване на детайлите" + +#: includes/input.php:259 +msgid "Collapse Details" +msgstr "Свиване на детайлите" + +#: includes/input.php:260 +msgid "Validation successful" +msgstr "УÑпешна валидациÑ" + +#: includes/input.php:261 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Провалена валидациÑ" + +#: includes/input.php:262 +msgid "1 field requires attention" +msgstr "1 поле изиÑква внимание" + +#: includes/input.php:263 +#, php-format +msgid "%d fields require attention" +msgstr "%d полета изиÑкват внимание" + +#: includes/input.php:264 +msgid "Restricted" +msgstr "Ограничен" + +#: includes/input.php:268 +msgid "Cancel" +msgstr "" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "ПубликациÑ" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Страница" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "ФормулÑри" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Файл" + +#: includes/locations/class-acf-location-attachment.php:113 +#, php-format +msgid "All %s formats" +msgstr "" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Коментар" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Ð Ð¾Ð»Ñ Ð½Ð° Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»" + +#: includes/locations/class-acf-location-current-user-role.php:114 +msgid "Super Admin" +msgstr "Супер админиÑтратор" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Текущ потребител" + +#: includes/locations/class-acf-location-current-user.php:101 +msgid "Logged in" +msgstr "Влезли Ñте" + +#: includes/locations/class-acf-location-current-user.php:102 +msgid "Viewing front end" +msgstr "Преглеждане на Ñайта" + +#: includes/locations/class-acf-location-current-user.php:103 +msgid "Viewing back end" +msgstr "Преглеждане на админиÑтрациÑта" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:113 +#, fuzzy +msgid "Menu Locations" +msgstr "МеÑтоположение" + +#: includes/locations/class-acf-location-nav-menu.php:123 +msgid "Menus" +msgstr "" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Страница родител" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Шаблон на Ñтраница" + +#: includes/locations/class-acf-location-page-template.php:102 +#: includes/locations/class-acf-location-post-template.php:156 +msgid "Default Template" +msgstr "Шаблон по подразбиране" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Тип Ñтраница" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Front Page" +msgstr "Първа Ñтраница" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Posts Page" +msgstr "Страница Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸" + +#: includes/locations/class-acf-location-page-type.php:151 +msgid "Top Level Page (no parent)" +msgstr "Горно ниво Ñтраница (родител)" + +#: includes/locations/class-acf-location-page-type.php:152 +msgid "Parent Page (has children)" +msgstr "РодителÑка Ñтраница (има деца)" + +#: includes/locations/class-acf-location-page-type.php:153 +msgid "Child Page (has parent)" +msgstr "Дете Ñтраница (има родител)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð½Ð° публикациÑ" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Формат на публикациÑ" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð½Ð° публикациÑ" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "ТакÑÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ð½Ð° публикациÑ" + +#: includes/locations/class-acf-location-post-template.php:29 +#, fuzzy +msgid "Post Template" +msgstr "Шаблон на Ñтраница" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Термин" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "ПотребителÑки формулÑÑ€" + +#: includes/locations/class-acf-location-user-form.php:92 +msgid "Add / Edit" +msgstr "ДобавÑне / редактиране" + +#: includes/locations/class-acf-location-user-form.php:93 +msgid "Register" +msgstr "РегиÑтрациÑ" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "ПотребителÑка ролÑ" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Джаджa" + +#: includes/media.php:55 +#, fuzzy +msgctxt "verb" +msgid "Edit" +msgstr "Редактиране" + +#: includes/media.php:56 +#, fuzzy +msgctxt "verb" +msgid "Update" +msgstr "ОбновÑване" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s ÑтойноÑÑ‚ е задължителна" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Модерни потребителÑки полета PRO" + +#: pro/admin/admin-options-page.php:196 +msgid "Publish" +msgstr "Публикуване" + +#: pro/admin/admin-options-page.php:202 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"ÐÑма намерени групи полета за тази Ñтраница Ñ Ð¾Ð¿Ñ†Ð¸Ð¸. Създаване на група полета" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Грешка. ÐеуÑпешно Ñвързване ÑÑŠÑ Ñървъра" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:17 +msgid "Updates" +msgstr "Ðктуализации" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Deactivate License" +msgstr "Деактивиране на лиценз" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Activate License" +msgstr "Ðктивиране на лиценз" + +#: pro/admin/views/html-settings-updates.php:21 +#, fuzzy +msgid "License Information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° обновÑването" + +#: pro/admin/views/html-settings-updates.php:24 +#, fuzzy, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"За да включите обновÑваниÑта, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ Ð²Ð°ÑˆÐ¸Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ð¾Ð½ÐµÐ½ ключ на " +"Ñтраницата Ðктуализации. Ðко нÑмате лицензионен ключ, " +"Ð¼Ð¾Ð»Ñ Ð¿Ð¾Ñетете детайли и цени" + +#: pro/admin/views/html-settings-updates.php:33 +msgid "License Key" +msgstr "Лицензионен ключ" + +#: pro/admin/views/html-settings-updates.php:65 +msgid "Update Information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° обновÑването" + +#: pro/admin/views/html-settings-updates.php:72 +msgid "Current Version" +msgstr "Текуща верÑиÑ" + +#: pro/admin/views/html-settings-updates.php:80 +msgid "Latest Version" +msgstr "ПоÑледна верÑиÑ" + +#: pro/admin/views/html-settings-updates.php:88 +msgid "Update Available" +msgstr "Ðалице е обновÑване" + +#: pro/admin/views/html-settings-updates.php:96 +msgid "Update Plugin" +msgstr "ОбновÑване" + +#: pro/admin/views/html-settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ Ð²Ð°ÑˆÐ¸Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ð¾Ð½ÐµÐ½ ключ за да отключите обновÑваниÑта" + +#: pro/admin/views/html-settings-updates.php:104 +msgid "Check Again" +msgstr "Проверка" + +#: pro/admin/views/html-settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "Забележки за обновÑването" + +#: pro/fields/class-acf-field-clone.php:36 +msgctxt "noun" +msgid "Clone" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:858 +msgid "Select one or more fields you wish to clone" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:875 +#, fuzzy +msgid "Display" +msgstr "Формат на показване" + +#: pro/fields/class-acf-field-clone.php:876 +msgid "Specify the style used to render the clone field" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:881 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:882 +msgid "Seamless (replaces this field with selected fields)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:903 +#, fuzzy, php-format +msgid "Labels will be displayed as %s" +msgstr "Избраните елементи ще бъдат показани във вÑеки резултат" + +#: pro/fields/class-acf-field-clone.php:906 +#, fuzzy +msgid "Prefix Field Labels" +msgstr "Етикет на полето" + +#: pro/fields/class-acf-field-clone.php:917 +#, php-format +msgid "Values will be saved as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:920 +#, fuzzy +msgid "Prefix Field Names" +msgstr "Име на полето" + +#: pro/fields/class-acf-field-clone.php:1038 +#, fuzzy +msgid "Unknown field" +msgstr "Под полетата" + +#: pro/fields/class-acf-field-clone.php:1077 +#, fuzzy +msgid "Unknown field group" +msgstr "Синхронизиране на групата полета" + +#: pro/fields/class-acf-field-clone.php:1081 +#, php-format +msgid "All fields from %s field group" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:42 +#: pro/fields/class-acf-field-repeater.php:230 +#: pro/fields/class-acf-field-repeater.php:534 +msgid "Add Row" +msgstr "ДобавÑне на ред" + +#: pro/fields/class-acf-field-flexible-content.php:45 +msgid "layout" +msgstr "шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:46 +msgid "layouts" +msgstr "шаблони" + +#: pro/fields/class-acf-field-flexible-content.php:47 +msgid "remove {layout}?" +msgstr "премахване?" + +#: pro/fields/class-acf-field-flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "Това поле изиÑква поне {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "Това поле има лимит от {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Това поле изиÑква поне {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "МакÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ð»Ð¸Ð¼Ð¸Ñ‚ на {label} бе доÑтигнат ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} налични (макÑимум {max})" + +#: pro/fields/class-acf-field-flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} задължителни (минимум {min})" + +#: pro/fields/class-acf-field-flexible-content.php:54 +msgid "Flexible Content requires at least 1 layout" +msgstr "Полето за гъвкаво Ñъдържание изиÑква поне 1 шаблон полета" + +#: pro/fields/class-acf-field-flexible-content.php:288 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "ÐатиÑнете бутона \"%s\" за да започнете да Ñъздавате Ð²Ð°ÑˆÐ¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½" + +#: pro/fields/class-acf-field-flexible-content.php:423 +msgid "Add layout" +msgstr "Създаване на шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:424 +msgid "Remove layout" +msgstr "Премахване на шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:425 +#: pro/fields/class-acf-field-repeater.php:360 +msgid "Click to toggle" +msgstr "Кликнете за да превключите" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder Layout" +msgstr "Пренареждане на шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder" +msgstr "Пренареждане" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete Layout" +msgstr "Изтриване на шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate Layout" +msgstr "Дублиране на шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New Layout" +msgstr "ДобавÑне на нов шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:645 +msgid "Min" +msgstr "Минимум" + +#: pro/fields/class-acf-field-flexible-content.php:658 +msgid "Max" +msgstr "МакÑимум" + +#: pro/fields/class-acf-field-flexible-content.php:685 +#: pro/fields/class-acf-field-repeater.php:530 +msgid "Button Label" +msgstr "Етикет на бутона" + +#: pro/fields/class-acf-field-flexible-content.php:694 +msgid "Minimum Layouts" +msgstr "Минимален брой шаблони" + +#: pro/fields/class-acf-field-flexible-content.php:703 +msgid "Maximum Layouts" +msgstr "МакÑимален брой шаблони" + +#: pro/fields/class-acf-field-gallery.php:52 +msgid "Add Image to Gallery" +msgstr "ДобавÑне на изображение към галериÑ" + +#: pro/fields/class-acf-field-gallery.php:56 +msgid "Maximum selection reached" +msgstr "МакÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ð±Ñ€Ð¾Ð¹ избори бе доÑтигнат" + +#: pro/fields/class-acf-field-gallery.php:336 +msgid "Length" +msgstr "Размер" + +#: pro/fields/class-acf-field-gallery.php:379 +#, fuzzy +msgid "Caption" +msgstr "Опции" + +#: pro/fields/class-acf-field-gallery.php:388 +#, fuzzy +msgid "Alt Text" +msgstr "ТекÑÑ‚" + +#: pro/fields/class-acf-field-gallery.php:559 +msgid "Add to gallery" +msgstr "ДобавÑне към галериÑ" + +#: pro/fields/class-acf-field-gallery.php:563 +msgid "Bulk actions" +msgstr "Групови дейÑтвиÑ" + +#: pro/fields/class-acf-field-gallery.php:564 +msgid "Sort by date uploaded" +msgstr "Сортиране по дата на качване" + +#: pro/fields/class-acf-field-gallery.php:565 +msgid "Sort by date modified" +msgstr "Сортиране по дата на поÑледна промÑна" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Sort by title" +msgstr "Сортиране по заглавие" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Reverse current order" +msgstr "Обръщане на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´" + +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Close" +msgstr "ЗатварÑне" + +#: pro/fields/class-acf-field-gallery.php:639 +msgid "Minimum Selection" +msgstr "Минимална ÑелекциÑ" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Maximum Selection" +msgstr "МакÑимална ÑелекциÑ" + +#: pro/fields/class-acf-field-gallery.php:657 +msgid "Insert" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:658 +msgid "Specify where new attachments are added" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:662 +#, fuzzy +msgid "Append to the end" +msgstr "Показва Ñе Ñлед полето" + +#: pro/fields/class-acf-field-gallery.php:663 +msgid "Prepend to the beginning" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:47 +msgid "Minimum rows reached ({min} rows)" +msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ð±Ñ€Ð¾Ð¹ редове бе доÑтигнат ({min} реда)" + +#: pro/fields/class-acf-field-repeater.php:48 +msgid "Maximum rows reached ({max} rows)" +msgstr "МакÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ð±Ñ€Ð¾Ð¹ редове бе доÑтигнат ({max} реда)" + +#: pro/fields/class-acf-field-repeater.php:405 +msgid "Add row" +msgstr "ДобавÑне на ред" + +#: pro/fields/class-acf-field-repeater.php:406 +msgid "Remove row" +msgstr "Премахване на ред" + +#: pro/fields/class-acf-field-repeater.php:483 +msgid "Collapsed" +msgstr "Свит" + +#: pro/fields/class-acf-field-repeater.php:484 +msgid "Select a sub field to show when row is collapsed" +msgstr "Изберете вложено поле, което да Ñе показва когато реда е Ñвит" + +#: pro/fields/class-acf-field-repeater.php:494 +msgid "Minimum Rows" +msgstr "Минимален брой редове" + +#: pro/fields/class-acf-field-repeater.php:504 +msgid "Maximum Rows" +msgstr "МакÑимален брой редове" + +#: pro/locations/class-acf-location-options-page.php:70 +msgid "No options pages exist" +msgstr "ÐÑма Ñъздадени Ñтраници Ñ Ð¾Ð¿Ñ†Ð¸Ð¸" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Опции" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Опциите бÑха актуализирани" + +#: pro/updates.php:97 +#, fuzzy, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"За да включите обновÑваниÑта, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ Ð²Ð°ÑˆÐ¸Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ð¾Ð½ÐµÐ½ ключ на " +"Ñтраницата Ðктуализации. Ðко нÑмате лицензионен ключ, " +"Ð¼Ð¾Ð»Ñ Ð¿Ð¾Ñетете детайли и цени" + +#. Plugin URI of the plugin/theme +#, fuzzy +msgid "https://www.advancedcustomfields.com/" +msgstr "http://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +#, fuzzy +msgid "Elliot Condon" +msgstr "Елиът Кондън" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Disabled" +#~ msgstr "Изключено" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Изключено (%s)" +#~ msgstr[1] "Изключени (%s)" + +#~ msgid "See what's new in" +#~ msgstr "Вижте какво е новото в" + +#~ msgid "version" +#~ msgstr "верÑиÑ" + +#~ msgid "Getting Started" +#~ msgstr "Как да започнете" + +#~ msgid "Field Types" +#~ msgstr "Типове полета" + +#~ msgid "Functions" +#~ msgstr "Функции" + +#~ msgid "Actions" +#~ msgstr "ДейÑтвиÑ" + +#~ msgid "'How to' guides" +#~ msgstr "РъководÑтва" + +#~ msgid "Tutorials" +#~ msgstr "Уроци" + +#~ msgid "Created by" +#~ msgstr "Създадено от" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "" +#~ "УÑпех. ИнÑтрументът за импортиране добави %s групи полета: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Внимание. ИнÑтрументът за импортиране откри, че %s групи полета " +#~ "вече ÑъщеÑтвуват и бÑха игнорирани: %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "ОбновÑване" + +#~ msgid "Upgrade" +#~ msgstr "ОбновÑване" + +#~ msgid "Error" +#~ msgstr "Грешка" + +#~ msgid "Upgrading data to" +#~ msgstr "ОбновÑване на данните към" + +#~ msgid "See what's new" +#~ msgstr "Вижте какво е новото" + +#~ msgid "Show a different month" +#~ msgstr "Показване на различен меÑец" + +#~ msgid "Return format" +#~ msgstr "Формат при връщане" + +#~ msgid "uploaded to this post" +#~ msgstr "прикачен към тази публикациÑ" + +#~ msgid "File Size" +#~ msgstr "Размер на файла" + +#~ msgid "No File selected" +#~ msgstr "ÐÑма избран файл" + +#~ msgid "eg. Show extra content" +#~ msgstr "напр. Покажи допълнително Ñъдържание" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Грешка при Ñвързване. МолÑ, опитайте отново" + +#~ msgid "Save Options" +#~ msgstr "Запазване на опциите" + +#~ msgid "License" +#~ msgstr "Лиценз" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "За да отключите обновÑваниÑта, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ Ð²Ð°ÑˆÐ¸Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·ÐµÐ½ код в " +#~ "Ñъответното поле. Ðко нÑмате такъв, Ð¼Ð¾Ð»Ñ Ð²Ð¸Ð¶Ñ‚Ðµ" + +#~ msgid "details & pricing" +#~ msgstr "детайли и цени" + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Модерни потребителÑки полета PRO" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-cs_CZ.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-cs_CZ.mo new file mode 100755 index 0000000000000000000000000000000000000000..2f4462a8ca37108312450019b1f72462feef0796 GIT binary patch literal 51946 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

                          y29=hRdLF8 z01q%M5qC6%STNl{HTp+sWVJiLOC3I0pH`;Zo_eftLv2Lb3q?prwxRZ)ftImK$dNK8 zId0IyX+@s<490d42I|N<0`m!+kg-8K_ib4DMDq!p61DAFi$~@|9A#QJ%x)=%(RZPZ zSNsG8EUx7l*6CD;4$75{aw@d-vcWVe0Ha5hort0aMf z5gc-u$7r+hR_e|zC`qGqY~$d)My1Gd>I{@~lHiQc<|4b2xhy(_FV3@1${<4umG`G_ zx+oWI&MH@5_Sw5w#R&rGQhRqq&?NlbePqt-6OW7aG6Gtl{Q77;#hQ3Up;42Muz`Ug zJ-Z+I!lart7S8l?95}Tt(;H83DJWSEsM+5kWS&x;M4KE4-f)(47+EO|6A|e;8EWv+NVo1 zpDVyadC@M~%uMM{BBTlBmEcE3y`(y7AYN58DgK3>ufY92k4tP20s+Afc*I|}o748;tvB$)Q6P!@Iy%N)}C0p8mo|bPZ@~&d9ts*u9U9tg)$L*e`OcvHJrro0i3LCP>`fwvA=Rs6V5{)C9py%@kcI~-!>y;Rp~ zy>F3~lSx*R9&IfOYAxZb{$m(7DiIcr%-! zL+M)^CO$P*Im5C6p?hBUaMLM zAkfk=PJO`h?$!y>s&j%996OWD&YpCikv(wK{HwgSBN5&PE>zi2&2LCSco-bEA8jX=BxKU>!m*#L zM(E>6Ew3{BM-qkw-b=zp@|Qh~U!c5;Loid!b?(@{k3&us$4TS=5s7^xj`t*`A@uWA zqe1KrX{Go>vbrb-Z{XE9JC+@^c^uE}j|h~*f9BSbmFb6I7BB3G!<$U5H8xs=6%4U- zt&3`9h2V*W@Al#tDSNa&)w?JrF2yi}UB~I@ z(OT$CtF75^HWy_`YPzrTTygdiP)qevnteYm{S4fg@5g0NOD8+$KYpg~$Eln+p&eb$ z%+S29O%I)tu={*c5owh21?syS;_um!Cvy)5ElkF1`mu*Vd;AAQY*Ay?A&66z-Ct2j zzZz!)qyPILyryP6r!{Iuf;!zo%WSBjd)O!k*>&b+hF~oA4-cFC? z9q+0y>uI}0YYEo zz!uFaO`p5-7Nw?9`gE!kA4y+U3wixWX_1XC6z_6J_E5_W6XXG@BQYyMT-XZ`Cor}- zvZo_PLC3_!4EE324JUm%lf-|v>Zh(CUDTBD=8tz5VQ=OtTzAa7lp&sIcJu7LoxDdc zoJiGsE?3aP^z9_pFmgH56YK~{IsFJ8AHPfA;BaLyGYFu=EQ!s?J-GuD(!jHPxa3_8 z&&A{mhPNEEDEPIc4)1PO`LAls(wCdp?HZKK)jFwlHv?3(w|hM3MS@2t7d7&zUNap< zj_uN0c=~8diebZ;ErXDtSwYR?rMO%~yN4r}(B|Pt&Sn@08K^^`1F3PJK(1b3f<8RcL z_QGMioDV~sVNGV=r)Nrnv!s<``nJBm=l=;&@CR6IYJW$U+4;L9MHYZrXlu+^^TT;E z1ogFtt#!_I@@`F?BmM2h)c_}72df1ZZ)>5C?3Mt~+8nk?k=CJ+<)o#QYnexbto24R ztoLZ-w=f?MAI~tQf;APxRV_C@A|w)WTpwYC?a4QcjbJ`dxZ>zeT&f%xcNd4YzsJ5! z&?c$)FNX)>#eBZ6=@M$?5bxydrfYQ!4%ud|tZ*(t?^nrL)L-IVd89Bx-Z&b0Q^U&5 zE|cZ-E!%jP^^j_RgTs2WKfKwB!Rh|)BH!)c8-6Mo#v?X9L?^h?j4w+=W|+0@`!nTKx7r~MYN(}qaQd--x7`3nY!zw;AJNmzoJ zNt&&&jbU$$>AZlw<0P)an8N9F?$a|fD(PWnd2Ex2kB7LSO!^vx(1!rXZ8 st#-@IhPN!!qB#K=Nv+UZ2G9Pfz*Nxh`Col15Dv-zCx#5ke=6|*0\n" +"Language-Team: webees.cz s.r.o. \n" +"Language: cs_CZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:385 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Skupiny polí" + +#: acf.php:386 +msgid "Field Group" +msgstr "Skupina polí" + +#: acf.php:387 acf.php:419 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New" +msgstr "PÅ™idat nové" + +#: acf.php:388 +msgid "Add New Field Group" +msgstr "PÅ™idat novou skupinu polí" + +#: acf.php:389 +msgid "Edit Field Group" +msgstr "Upravit skupinu polí" + +#: acf.php:390 +msgid "New Field Group" +msgstr "Nová skupina polí" + +#: acf.php:391 +msgid "View Field Group" +msgstr "Prohlížet skupinu polí" + +#: acf.php:392 +msgid "Search Field Groups" +msgstr "Hledat skupiny polí" + +#: acf.php:393 +msgid "No Field Groups found" +msgstr "Nebyly nalezeny žádné skupiny polí" + +#: acf.php:394 +msgid "No Field Groups found in Trash" +msgstr "V koÅ¡i nebyly nalezeny žádné skupiny polí" + +#: acf.php:417 includes/admin/admin-field-group.php:202 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Pole" + +#: acf.php:418 +msgid "Field" +msgstr "Pole" + +#: acf.php:420 +msgid "Add New Field" +msgstr "PÅ™idat nové pole" + +#: acf.php:421 +msgid "Edit Field" +msgstr "Upravit pole" + +#: acf.php:422 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Nové pole" + +#: acf.php:423 +msgid "View Field" +msgstr "Zobrazit pole" + +#: acf.php:424 +msgid "Search Fields" +msgstr "Vyhledat pole" + +#: acf.php:425 +msgid "No Fields found" +msgstr "Nenalezeno žádné pole" + +#: acf.php:426 +msgid "No Fields found in Trash" +msgstr "V koÅ¡i nenalezeno žádné pole" + +#: acf.php:465 includes/admin/admin-field-group.php:384 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Neaktivní" + +#: acf.php:470 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Neaktivní (%s)" +msgstr[1] "Neaktivní (%s)" +msgstr[2] "Neaktivních (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Skupina polí aktualizována." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Skupina polí smazána." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Skupina polí publikována." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Skupina polí uložena." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Skupina polí odeslána." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Skupina polí naplánována." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Koncept skupiny polí aktualizován." + +#: includes/admin/admin-field-group.php:153 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "ŘetÄ›zec \"pole_\" nesmí být použit na zaÄátku názvu pole" + +#: includes/admin/admin-field-group.php:154 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Toto pole nelze pÅ™esunout, dokud nebudou uloženy jeho zmÄ›ny" + +#: includes/admin/admin-field-group.php:155 +msgid "Field group title is required" +msgstr "Vyžadován nadpis pro skupinu polí" + +#: includes/admin/admin-field-group.php:156 +msgid "Move to trash. Are you sure?" +msgstr "PÅ™esunout do koÅ¡e. Jste si jistí?" + +#: includes/admin/admin-field-group.php:157 +msgid "No toggle fields available" +msgstr "Žádné zapínatelné pole není k dispozici" + +#: includes/admin/admin-field-group.php:158 +msgid "Move Custom Field" +msgstr "PÅ™esunout vlastní pole" + +#: includes/admin/admin-field-group.php:159 +msgid "Checked" +msgstr "ZaÅ¡krtnuto" + +#: includes/admin/admin-field-group.php:160 includes/api/api-field.php:289 +msgid "(no label)" +msgstr "(bez Å¡títku)" + +#: includes/admin/admin-field-group.php:161 +msgid "(this field)" +msgstr "(toto pole)" + +#: includes/admin/admin-field-group.php:162 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "kopírovat" + +#: includes/admin/admin-field-group.php:163 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:4073 +msgid "or" +msgstr "nebo" + +#: includes/admin/admin-field-group.php:164 +msgid "Null" +msgstr "Nula" + +#: includes/admin/admin-field-group.php:203 +msgid "Location" +msgstr "UmístÄ›ní" + +#: includes/admin/admin-field-group.php:204 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Nastavení" + +#: includes/admin/admin-field-group.php:354 +msgid "Field Keys" +msgstr "KlíÄe polí" + +#: includes/admin/admin-field-group.php:384 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Aktivní" + +#: includes/admin/admin-field-group.php:746 +msgid "Move Complete." +msgstr "PÅ™esun hotov." + +#: includes/admin/admin-field-group.php:747 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Pole %s lze nyní najít ve skupinÄ› polí %s" + +#: includes/admin/admin-field-group.php:748 +msgid "Close Window" +msgstr "Zavřít okno" + +#: includes/admin/admin-field-group.php:789 +msgid "Please select the destination for this field" +msgstr "Prosím zvolte umístÄ›ní pro toto pole" + +#: includes/admin/admin-field-group.php:796 +msgid "Move Field" +msgstr "PÅ™esunout pole" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Aktivní (%s)" +msgstr[1] "Aktivní (%s)" +msgstr[2] "Aktivních (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Skupina polí duplikována. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s skupina polí duplikována." +msgstr[1] "%s skupiny polí duplikovány." +msgstr[2] "%s skupin polí duplikováno." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Skupina polí synchronizována. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s skupina polí synchronizována." +msgstr[1] "%s skupiny polí synchronizovány." +msgstr[2] "%s skupin polí synchronizováno." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Synchronizace je k dispozici" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:370 +msgid "Title" +msgstr "Název" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:397 +msgid "Description" +msgstr "Popis" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Stav" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"Upravte si WordPress pomocí výkonných, profesionálních a intuitivnÄ› " +"použitelných polí." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Seznam zmÄ›n" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Podívejte se, co je nového ve verzi %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Zdroje" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Webová stránka" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Dokumentace" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Podpora" + +#: includes/admin/admin-field-groups.php:623 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "DÄ›kujeme, že používáte ACF." + +#: includes/admin/admin-field-groups.php:667 +msgid "Duplicate this item" +msgstr "Duplikovat tuto položku" + +#: includes/admin/admin-field-groups.php:667 +#: includes/admin/admin-field-groups.php:683 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate" +msgstr "Duplikovat" + +#: includes/admin/admin-field-groups.php:700 +#: includes/fields/class-acf-field-google-map.php:164 +#: includes/fields/class-acf-field-relationship.php:674 +msgid "Search" +msgstr "Hledat" + +#: includes/admin/admin-field-groups.php:759 +#, php-format +msgid "Select %s" +msgstr "Zvolit %s" + +#: includes/admin/admin-field-groups.php:767 +msgid "Synchronise field group" +msgstr "Synchronizujte skupinu polí" + +#: includes/admin/admin-field-groups.php:767 +#: includes/admin/admin-field-groups.php:797 +msgid "Sync" +msgstr "Synchronizace" + +#: includes/admin/admin-field-groups.php:779 +msgid "Apply" +msgstr "Použít" + +#: includes/admin/admin-field-groups.php:797 +msgid "Bulk Actions" +msgstr "Hromadné akce" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Nástroje" + +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Aktualizovat databázi" + +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Zkontrolujte stránky a aktualizujte" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "Vlastní pole" + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Doplňky" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Chyba. Nelze naÄíst seznam doplňků" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informace" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Co je nového" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Exportovat skupiny polí" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "VytvoÅ™it PHP" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Nebyly vybrány žádné skupiny polí" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Exportovaná 1 skupina polí." +msgstr[1] "Exportované %s skupiny polí." +msgstr[2] "Exportovaných %s skupin polí." + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Zvolit skupiny polí" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Vyberte skupiny polí, které chcete exportovat, a vyberte způsob exportu. " +"Použijte tlaÄítko pro stažení pro exportování do souboru .json, který pak " +"můžete importovat do jiné instalace ACF. Pomocí tlaÄítka generovat můžete " +"exportovat do kódu PHP, který můžete umístit do vaÅ¡eho tématu." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Exportovat soubor" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Následující kód lze použít k registraci lokální verze vybrané skupiny polí. " +"Místní skupina polí může poskytnout mnoho výhod, jako jsou rychlejší doby " +"naÄítání, řízení verzí a dynamická pole / nastavení. JednoduÅ¡e zkopírujte a " +"vložte následující kód do souboru functions.php svého motivu nebo jej vložte " +"do externího souboru." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Zkopírovat od schránky" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Zkopírováno" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Importovat skupiny polí" + +#: includes/admin/tools/class-acf-admin-tool-import.php:61 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Vyberte Advanced Custom Fields JSON soubor, který chcete importovat. Po " +"klepnutí na tlaÄítko importu níže bude ACF importovat skupiny polí." + +#: includes/admin/tools/class-acf-admin-tool-import.php:66 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Vybrat soubor" + +#: includes/admin/tools/class-acf-admin-tool-import.php:76 +msgid "Import File" +msgstr "Importovat soubor" + +#: includes/admin/tools/class-acf-admin-tool-import.php:100 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Dokument nevybrán" + +#: includes/admin/tools/class-acf-admin-tool-import.php:113 +msgid "Error uploading file. Please try again" +msgstr "Chyba pÅ™i nahrávání souboru. Prosím zkuste to znovu" + +#: includes/admin/tools/class-acf-admin-tool-import.php:122 +msgid "Incorrect file type" +msgstr "Nesprávný typ souboru" + +#: includes/admin/tools/class-acf-admin-tool-import.php:139 +msgid "Import file empty" +msgstr "Importovaný soubor je prázdný" + +#: includes/admin/tools/class-acf-admin-tool-import.php:247 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Importovaná 1 skupina polí" +msgstr[1] "Importované %s skupiny polí" +msgstr[2] "Importovaných %s skupin polí" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "PodmínÄ›ná logika" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Zobrazit toto pole, pokud" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "a" + +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "PÅ™idat skupinu pravidel" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:424 +#: pro/fields/class-acf-field-repeater.php:294 +msgid "Drag to reorder" +msgstr "PÅ™etažením zmÄ›níte poÅ™adí" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Upravit pole" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:357 +msgid "Edit" +msgstr "Upravit" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Duplikovat pole" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "PÅ™esunout pole do jiné skupiny" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "PÅ™esunout" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Smazat pole" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete" +msgstr "Smazat" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Å títek pole" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Toto je jméno, které se zobrazí na stránce úprav" + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Jméno pole" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Jedno slovo, bez mezer. Podtržítka a pomlÄky jsou povoleny" + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Typ pole" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Instrukce" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instrukce pro autory. Jsou zobrazeny pÅ™i zadávání dat" + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Požadováno?" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Atributy obalového pole" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "šířka" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "třída" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "identifikátor" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Zavřít pole" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "PoÅ™adí" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:428 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Label" +msgstr "Å títek" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:610 +msgid "Name" +msgstr "Jméno" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "KlíÄ" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Typ" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Žádná pole. KliknÄ›te na tlaÄítko+ PÅ™idat pole pro vytvoÅ™ení " +"prvního pole." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ PÅ™idat pole" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Pravidla" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Vytváří sadu pravidel pro urÄení, na kterých stránkách úprav budou použita " +"tato vlastní pole" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Styl" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standardní (WP metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Bezokrajové (bez metaboxu)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Pozice" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Vysoko (po nadpisu)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normální (po obsahu)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Na stranÄ›" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "UmístÄ›ní Å¡títků" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Zarovnat shora" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Zarovnat zleva" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "UmístÄ›ní instrukcí" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Pod Å¡títky" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Pod poli" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "PoÅ™adové Ä." + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Skupiny polí s nižším poÅ™adím se zobrazí první" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Zobrazit v seznamu skupin polí" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "Trvalý odkaz" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "Editor obsahu" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "StruÄný výpis" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Diskuze" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Komentáře" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Revize" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Adresa" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Autor" + +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Formát" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Atributy stránky" + +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:688 +msgid "Featured Image" +msgstr "Uživatelský obrázek" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Kategorie" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Å títky" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Odesílat zpÄ›tné linkování odkazů" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Skrýt na obrazovce" + +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "Zvolte položky, které budou na obrazovce úprav skryté." + +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Pokud se na obrazovce úprav objeví více skupin polí, použije se nastavení " +"dle první skupiny polí (té s nejnižším poÅ™adovým Äíslem)" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Následující stránky vyžadují upgrade DB. ZaÅ¡krtnÄ›te ty, které chcete " +"aktualizovat, a poté kliknÄ›te na %s." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Upgradovat stránky" + +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Stránky" + +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Stránky vyžadují aktualizaci databáze z %s na %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "Stránky jsou aktuální" + +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Aktualizace databáze je dokonÄena. Návrat na nástÄ›nku sítÄ›" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "Vyberte alespoň jednu stránku, kterou chcete upgradovat." + +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"DůraznÄ› doporuÄujeme zálohovat databázi pÅ™ed pokraÄováním. Opravdu chcete " +"aktualizaci spustit?" + +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Aktualizace dat na verzi %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Aktualizace dokonÄena." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Upgrade se nezdaÅ™il." + +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "ÄŒtení úkolů aktualizace..." + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "" +"Upgrade databáze byl dokonÄen. Podívejte se, co je nového" + +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "K dispozici nejsou žádné aktualizace." + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Zobrazit tuto skupinu polí, pokud" + +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "OpakovaÄ" + +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Flexibilní obsah" + +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerie" + +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Stránka konfigurace" + +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Vyžadován upgrade databáze" + +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "DÄ›kujeme vám za aktualizaci na %s v%s!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "Tato verze obsahuje vylepÅ¡ení databáze a vyžaduje upgrade." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"Zkontrolujte také, zda jsou vÅ¡echny prémiové doplňky ( %s) nejprve " +"aktualizovány na nejnovÄ›jší verzi." + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Stáhnout a instalovat" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Instalováno" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Vítejte v Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"DÄ›kujeme za aktualizaci! ACF %s je vÄ›tší a lepší než kdykoli pÅ™edtím. " +"Doufáme, že se vám bude líbit." + +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Plynulejší zážitek" + +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "VylepÅ¡ená použitelnost" + +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Zahrnutí oblíbené knihovny Select2 zlepÅ¡ilo jak použitelnost, tak i rychlost " +"v různých typech polí, vÄetnÄ› objektu příspÄ›vku, odkazu na stránku, " +"taxonomie a možnosti výbÄ›ru." + +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "ZlepÅ¡ený design" + +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Mnoho polí podstoupilo osvěžení grafiky, aby ACF vypadalo lépe než kdy " +"jindy! Znatelné zmÄ›ny jsou vidÄ›t na polích galerie, vztahů a oEmbed " +"(novinka)!" + +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "VylepÅ¡ené údaje" + +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"PÅ™epracování datové architektury umožnilo, aby podÅ™azená pole žila nezávisle " +"na rodiÄích. To umožňuje jejich pÅ™etahování mezi rodiÄovskými poli!" + +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Sbohem doplňkům. Pozdrav verzi PRO" + +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "PÅ™edstavujeme ACF PRO" + +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "MÄ›níme způsob poskytování prémiových funkcí vzruÅ¡ujícím způsobem!" + +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"VÅ¡echny 4 prémiové doplňky byly spojeny do nové verze Pro pro " +"ACF. Se svými osobními i vývojovými licencemi je prémiová funkÄnost " +"cenovÄ› dostupná a přístupnÄ›jší než kdykoli pÅ™edtím!" + +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Výkonné funkce" + +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO obsahuje výkonné funkce, jako jsou opakovatelná data, flexibilní " +"rozložení obsahu, krásné pole galerie a možnost vytvářet další stránky " +"administrátorských voleb!" + +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "PÅ™eÄtÄ›te si další informace o funkcích ACF PRO." + +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Snadná aktualizace" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" +"Upgrade na ACF PRO je snadný. StaÄí online zakoupit licenci a stáhnout " +"plugin!" + +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" +"Také jsme napsali průvodce aktualizací na zodpovÄ›zení " +"jakýchkoliv dotazů, ale pokud i pÅ™es to nÄ›jaký máte, kontaktujte prosím náš " +"tým podpory prostÅ™ednictvím Help Desku." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Nové funkce" + +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "Odkaz pole" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"Pole odkazu poskytuje jednoduchý způsob, jak vybrat nebo definovat odkaz " +"(URL, název, cíl)." + +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Skupinové pole" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "Skupina polí poskytuje jednoduchý způsob vytvoÅ™ení skupiny polí." + +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "oEmbed pole" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" +"oEmbed pole umožňuje snadno vkládat videa, obrázky, tweety, audio a další " +"obsah." + +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Klonovat pole" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "Klonované pole umožňuje vybrat a zobrazit existující pole." + +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "Více AJAXu" + +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "Více polí využívá vyhledávání pomocí AJAX pro rychlé naÄítání stránky." + +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "Lokální JSON" + +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"Nová funkce automatického exportu do JSONu zvyÅ¡uje rychlost a umožňuje " +"synchronizaci." + +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Snadný import/export" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "Import i export lze snadno provést pomocí nové stránky nástroje." + +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "UmístÄ›ní nového formuláře" + +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" +"Pole lze nyní mapovat na nabídky, položky nabídky, komentáře, widgety a " +"vÅ¡echny uživatelské formuláře!" + +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Další úpravy" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" +"Byly pÅ™idány nové akce a filtry PHP (a JS), které umožňují další úpravy." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Svěží uživatelské rozhraní" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "Celý plugin je redesignován vÄetnÄ› nových typů polí a nastavení!" + +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Nová nastavení" + +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" +"Bylo pÅ™idáno nastavení skupiny polí bylo pÅ™idáno pro aktivní, umístÄ›ní " +"Å¡títků, umístÄ›ní instrukcí a popis." + +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "Lepší vizuální stránka formulářů" + +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"acf_form() může nyní vytvoÅ™it nový příspÄ›vek po odeslání se spoustou nových " +"možností." + +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Lepší validace" + +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "" +"Validace formuláře nyní probíhá prostÅ™ednictvím PHP + AJAX a to ve prospÄ›ch " +"pouze JS." + +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Pohyblivá pole" + +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"Nová funkÄnost skupiny polí umožňuje pÅ™esouvání pole mezi skupinami a rodiÄi." + +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Myslíme si, že zmÄ›ny v %s si zamilujete." + +#: includes/api/api-helpers.php:1046 +msgid "Thumbnail" +msgstr "Miniatura" + +#: includes/api/api-helpers.php:1047 +msgid "Medium" +msgstr "StÅ™ední" + +#: includes/api/api-helpers.php:1048 +msgid "Large" +msgstr "Velký" + +#: includes/api/api-helpers.php:1097 +msgid "Full Size" +msgstr "Plná velikost" + +#: includes/api/api-helpers.php:1339 includes/api/api-helpers.php:1912 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(bez názvu)" + +#: includes/api/api-helpers.php:3994 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Šířka obrázku musí být alespoň %dpx." + +#: includes/api/api-helpers.php:3999 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Šířka obrázku nesmí pÅ™esáhnout %dpx." + +#: includes/api/api-helpers.php:4015 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Výška obrázku musí být alespoň %dpx." + +#: includes/api/api-helpers.php:4020 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Výška obrázku nesmí pÅ™esáhnout %dpx." + +#: includes/api/api-helpers.php:4038 +#, php-format +msgid "File size must be at least %s." +msgstr "Velikost souboru musí být alespoň %s." + +#: includes/api/api-helpers.php:4043 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Velikost souboru nesmí pÅ™esáhnout %s." + +#: includes/api/api-helpers.php:4077 +#, php-format +msgid "File type must be %s." +msgstr "Typ souboru musí být %s." + +#: includes/assets.php:172 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Pokud opustíte tuto stránku, zmÄ›ny, které jste provedli, budou ztraceny" + +#: includes/assets.php:175 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Vybrat" + +#: includes/assets.php:176 +msgctxt "verb" +msgid "Edit" +msgstr "Upravit" + +#: includes/assets.php:177 +msgctxt "verb" +msgid "Update" +msgstr "Aktualizace" + +#: includes/assets.php:178 +msgid "Uploaded to this post" +msgstr "Nahrán k tomuto příspÄ›vku" + +#: includes/assets.php:179 +msgid "Expand Details" +msgstr "Rozbalit podrobnosti" + +#: includes/assets.php:180 +msgid "Collapse Details" +msgstr "Sbalit podrobnosti" + +#: includes/assets.php:181 +msgid "Restricted" +msgstr "Omezeno" + +#: includes/assets.php:182 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "VÅ¡echny obrázky" + +#: includes/assets.php:185 +msgid "Validation successful" +msgstr "Ověření úspěšné" + +#: includes/assets.php:186 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Ověření selhalo" + +#: includes/assets.php:187 +msgid "1 field requires attention" +msgstr "1 pole vyžaduje pozornost" + +#: includes/assets.php:188 +#, php-format +msgid "%d fields require attention" +msgstr "NÄ›kolik polí vyžaduje pozornost (%d)" + +#: includes/assets.php:191 +msgid "Are you sure?" +msgstr "Jste si jistí?" + +#: includes/assets.php:192 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Ano" + +#: includes/assets.php:193 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Ne" + +#: includes/assets.php:194 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:358 +#: pro/fields/class-acf-field-gallery.php:546 +msgid "Remove" +msgstr "Odstranit" + +#: includes/assets.php:195 +msgid "Cancel" +msgstr "ZruÅ¡it" + +#: includes/assets.php:198 +msgid "Has any value" +msgstr "Má libovolnou hodnotu" + +#: includes/assets.php:199 +msgid "Has no value" +msgstr "Nemá hodnotu" + +#: includes/assets.php:200 +msgid "Value is equal to" +msgstr "Hodnota je rovna" + +#: includes/assets.php:201 +msgid "Value is not equal to" +msgstr "Hodnota není rovna" + +#: includes/assets.php:202 +msgid "Value matches pattern" +msgstr "Hodnota odpovídá masce" + +#: includes/assets.php:203 +msgid "Value contains" +msgstr "Hodnota obsahuje" + +#: includes/assets.php:204 +msgid "Value is greater than" +msgstr "Hodnota je vÄ›tší než" + +#: includes/assets.php:205 +msgid "Value is less than" +msgstr "Hodnota je menší než" + +#: includes/assets.php:206 +msgid "Selection is greater than" +msgstr "VýbÄ›r je vÄ›tší než" + +#: includes/assets.php:207 +msgid "Selection is less than" +msgstr "VýbÄ›r je menší než" + +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Typ pole neexistuje" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Neznámý" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "Základní" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Obsah" + +#: includes/fields.php:351 +msgid "Choice" +msgstr "Volba" + +#: includes/fields.php:352 +msgid "Relational" +msgstr "RelaÄní" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:567 +#: pro/fields/class-acf-field-flexible-content.php:616 +#: pro/fields/class-acf-field-repeater.php:443 +msgid "Layout" +msgstr "Typ zobrazení" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Akordeon" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Otevřít" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Zobrazit tento akordeon jako otevÅ™ený pÅ™i naÄtení stránky." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Vícenásobné rozbalení" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Povolit otevÅ™ení tohoto akordeonu bez zavÅ™ení ostatních." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Koncový bod" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Definujte koncový bod pro pÅ™edchozí akordeon. Tento akordeon nebude " +"viditelný." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Skupina tlaÄítek" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:359 +msgid "Choices" +msgstr "Možnosti" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "Enter each choice on a new line." +msgstr "Zadejte každou volbu na nový řádek." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "For more control, you may specify both a value and label like this:" +msgstr "Pro vÄ›tší kontrolu můžete zadat jak hodnotu, tak Å¡títek:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "red : Red" +msgstr "cervena : ÄŒervená" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:409 +msgid "Allow Null?" +msgstr "Povolit prázdné?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:368 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "Výchozí hodnota" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "Objeví se pÅ™i vytváření nového příspÄ›vku" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Horizontální" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Vertikální" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Vrátit hodnotu" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Zadat konkrétní návratovou hodnotu na frontendu" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:427 +msgid "Value" +msgstr "Hodnota" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:429 +msgid "Both (Array)" +msgstr "ObÄ› (pole)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "ZaÅ¡krtávátko" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "PÅ™epnout vÅ¡e" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "PÅ™idat novou volbu" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Povolit vlastní" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Povolit pÅ™idání 'vlastních' hodnot" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Uložit vlastní" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Uložit 'vlastní' hodnoty do voleb polí" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each default value on a new line" +msgstr "Zadejte každou výchozí hodnotu na nový řádek" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "PÅ™epnout" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "PÅ™idat zaÅ¡krtávátko navíc pro pÅ™epnutí vÅ¡ech možností" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "VýbÄ›r barvy" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Vymazat" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Výchozí nastavení" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "VýbÄ›r barvy" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Aktuální barva" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "VýbÄ›r data" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Hotovo" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Dnes" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Následující" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "PÅ™edchozí" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Týden" + +#: includes/fields/class-acf-field-date_picker.php:180 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Formát zobrazení" + +#: includes/fields/class-acf-field-date_picker.php:181 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Formát zobrazený pÅ™i úpravÄ› příspÄ›vku" + +#: includes/fields/class-acf-field-date_picker.php:189 +#: includes/fields/class-acf-field-date_picker.php:220 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Vlastní:" + +#: includes/fields/class-acf-field-date_picker.php:199 +msgid "Save Format" +msgstr "Uložit formát" + +#: includes/fields/class-acf-field-date_picker.php:200 +msgid "The format used when saving a value" +msgstr "Formát použitý pÅ™i ukládání hodnoty" + +#: includes/fields/class-acf-field-date_picker.php:210 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:715 +#: includes/fields/class-acf-field-select.php:422 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:428 +msgid "Return Format" +msgstr "Formát návratové hodnoty" + +#: includes/fields/class-acf-field-date_picker.php:211 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Formát vrácen pomocí funkcí Å¡ablony" + +#: includes/fields/class-acf-field-date_picker.php:229 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "Týden zaÄíná" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "VýbÄ›r data a Äasu" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Zvolit Äas" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "ÄŒas" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Hodina" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minuta" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "VteÅ™ina" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milisekunda" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosekunda" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "ÄŒasové pásmo" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Nyní" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Hotovo" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Vybrat" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "dop" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "od" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "odp" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "do" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "Email" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Zástupný text" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Zobrazí se v inputu" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Zobrazit pÅ™ed" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Zobrazí se pÅ™ed inputem" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Zobrazit po" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Zobrazí se za inputem" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Soubor" + +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Upravit soubor" + +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Aktualizovat soubor" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Jméno souboru" + +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:705 +#: pro/fields/class-acf-field-gallery.php:734 +msgid "File size" +msgstr "Velikost souboru" + +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "PÅ™idat soubor" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Pole souboru" + +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "Adresa souboru" + +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "ID souboru" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:670 +msgid "Library" +msgstr "Knihovna" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Limit the media library choice" +msgstr "Omezit výbÄ›r knihovny médií" + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:676 +msgid "All" +msgstr "VÅ¡e" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:677 +msgid "Uploaded to post" +msgstr "Nahráno k příspÄ›vku" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:684 +msgid "Minimum" +msgstr "Minimum" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "Omezte, které typy souborů lze nahrát" + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:713 +msgid "Maximum" +msgstr "Maximum" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:742 +msgid "Allowed file types" +msgstr "Povolené typy souborů" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:743 +msgid "Comma separated list. Leave blank for all types" +msgstr "Seznam oddÄ›lený Äárkami. Nechte prázdné pro povolení vÅ¡ech typů" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Mapa Google" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Je nám líto, ale tento prohlížeÄ nepodporuje geolokaci" + +#: includes/fields/class-acf-field-google-map.php:165 +msgid "Clear location" +msgstr "Vymazat polohu" + +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Find current location" +msgstr "Najít aktuální umístÄ›ní" + +#: includes/fields/class-acf-field-google-map.php:169 +msgid "Search for address..." +msgstr "Vyhledat adresu..." + +#: includes/fields/class-acf-field-google-map.php:199 +#: includes/fields/class-acf-field-google-map.php:210 +msgid "Center" +msgstr "Vycentrovat" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center the initial map" +msgstr "Vycentrovat poÄáteÄní zobrazení mapy" + +#: includes/fields/class-acf-field-google-map.php:222 +msgid "Zoom" +msgstr "PÅ™iblížení" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Set the initial zoom level" +msgstr "Nastavit poÄáteÄní úroveň pÅ™iblížení" + +#: includes/fields/class-acf-field-google-map.php:232 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:696 +#: pro/fields/class-acf-field-gallery.php:725 +msgid "Height" +msgstr "Výška" + +#: includes/fields/class-acf-field-google-map.php:233 +msgid "Customise the map height" +msgstr "Upravit výšku mapy" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Skupina" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:379 +msgid "Sub Fields" +msgstr "PodÅ™azená pole" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "UrÄení stylu použitého pro vykreslení vybraných polí" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:627 +#: pro/fields/class-acf-field-repeater.php:451 +msgid "Block" +msgstr "Blok" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:626 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Table" +msgstr "Tabulka" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:452 +msgid "Row" +msgstr "Řádek" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Obrázek" + +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "Vybrat obrázek" + +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "Upravit obrázek" + +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "Aktualizovat obrázek" + +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "Není vybrán žádný obrázek" + +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "PÅ™idat obrázek" + +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "Pole obrázku" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "Adresa obrázku" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "ID obrázku" + +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "Velikost náhledu" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "Zobrazit pÅ™i zadávání dat" + +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:685 +#: pro/fields/class-acf-field-gallery.php:714 +msgid "Restrict which images can be uploaded" +msgstr "Omezte, které typy obrázků je možné nahrát" + +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Width" +msgstr "Šířka" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Odkaz" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Vybrat odkaz" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Otevřít v novém oknÄ›/záložce" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Pole odkazů" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "URL adresa odkazu" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Zpráva" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Nové řádky" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Řídí, jak se vykreslují nové řádky" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Automaticky pÅ™idávat odstavce" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Automaticky pÅ™idávat <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Žádné formátování" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Escapovat HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Nevykreslovat efekt, ale zobrazit znaÄky HTML jako prostý text" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Číslo" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "Minimální hodnota" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "Maximální hodnota" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Velikost kroku" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Hodnota musí být Äíslo" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Hodnota musí být rovna nebo vÄ›tší než %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Hodnota musí být rovna nebo menší než %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "Vložte URL" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Velikost pro Embed" + +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Odkaz stránky" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archivy" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "RodiÄ" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:641 +msgid "Filter by Post Type" +msgstr "Filtrovat dle typu příspÄ›vku" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:649 +msgid "All post types" +msgstr "VÅ¡echny typy příspÄ›vků" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:655 +msgid "Filter by Taxonomy" +msgstr "Filtrovat dle taxonomie" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:663 +msgid "All taxonomies" +msgstr "VÅ¡echny taxonomie" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Umožnit URL adresy archivu" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:387 +#: includes/fields/class-acf-field-user.php:419 +msgid "Select multiple values?" +msgstr "Vybrat více hodnot?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Heslo" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:720 +msgid "Post Object" +msgstr "Objekt příspÄ›vku" + +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:721 +msgid "Post ID" +msgstr "ID příspÄ›vku" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "PÅ™epínaÄ" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Jiné" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "PÅ™idat volbu 'jiné', která umožňuje vlastní hodnoty" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Uložit Jiné" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Uložit 'jiné' hodnoty do voleb polí" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Rozmezí" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Vztah" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "Dosaženo maximálního množství hodnot ( {max} hodnot )" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "NaÄítání" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Nebyly nalezeny žádné výsledky" + +#: includes/fields/class-acf-field-relationship.php:441 +msgid "Select post type" +msgstr "Zvolit typ příspÄ›vku" + +#: includes/fields/class-acf-field-relationship.php:467 +msgid "Select taxonomy" +msgstr "Zvolit taxonomii" + +#: includes/fields/class-acf-field-relationship.php:557 +msgid "Search..." +msgstr "Hledat..." + +#: includes/fields/class-acf-field-relationship.php:669 +msgid "Filters" +msgstr "Filtry" + +#: includes/fields/class-acf-field-relationship.php:675 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Typ příspÄ›vku" + +#: includes/fields/class-acf-field-relationship.php:676 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taxonomie" + +#: includes/fields/class-acf-field-relationship.php:683 +msgid "Elements" +msgstr "Prvky" + +#: includes/fields/class-acf-field-relationship.php:684 +msgid "Selected elements will be displayed in each result" +msgstr "Vybrané prvky se zobrazí v každém výsledku" + +#: includes/fields/class-acf-field-relationship.php:695 +msgid "Minimum posts" +msgstr "Minimum příspÄ›vků" + +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Maximum posts" +msgstr "Maximum příspÄ›vků" + +#: includes/fields/class-acf-field-relationship.php:808 +#: pro/fields/class-acf-field-gallery.php:815 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s vyžaduje alespoň %s volbu" +msgstr[1] "%s vyžaduje alespoň %s volby" +msgstr[2] "%s vyžaduje alespoň %s voleb" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Vybrat" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "" +"Jeden výsledek je k dispozici, stisknÄ›te klávesu enter pro jeho vybrání." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d výsledků je k dispozici, použijte Å¡ipky nahoru a dolů pro navigaci." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Nebyly nalezeny žádné výsledky" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Prosím zadejte 1 nebo více znaků" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Prosím zadejte %d nebo více znaků" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Prosím odstraňte 1 znak" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Prosím odstraňte %d znaků" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Můžete vybrat pouze 1 položku" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Můžete vybrat pouze %d položek" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "NaÄítání dalších výsledků…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Vyhledávání…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "NaÄítání selhalo" + +#: includes/fields/class-acf-field-select.php:397 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Stylizované uživatelské rozhraní" + +#: includes/fields/class-acf-field-select.php:407 +msgid "Use AJAX to lazy load choices?" +msgstr "K naÄtení volby použít AJAX lazy load?" + +#: includes/fields/class-acf-field-select.php:423 +msgid "Specify the value returned" +msgstr "Zadat konkrétní návratovou hodnotu" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "OddÄ›lovaÄ" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Záložka" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "UmístÄ›ní" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Definujte koncový bod pro pÅ™edchozí záložky. Tím se zaÄne nová skupina " +"záložek." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Nic pro %s" + +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Zvolit zobrazovanou taxonomii" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Vzhled" + +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Vyberte vzhled tohoto pole" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Více hodnot" + +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Vícenásobný výbÄ›r" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Jednotlivá hodnota" + +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Radio pÅ™epínaÄe" + +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "VytvoÅ™it pojmy" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Povolit vytvoÅ™ení nových pojmů bÄ›hem editace" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Uložit pojmy" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "PÅ™ipojte vybrané pojmy k příspÄ›vku" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Nahrát pojmy" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Nahrát pojmy z příspÄ›vků" + +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Objekt pojmu" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "ID pojmu" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "Uživatel není schopen pÅ™idat nové %s" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s již existuje" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s pÅ™idán" + +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "PÅ™idat" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Limit znaků" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Nechte prázdné pro nastavení bez omezení" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Textové pole" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Řádky" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Nastavuje výšku textového pole" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "VýbÄ›r Äasu" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Pravda / Nepravda" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Zobrazí text vedle zaÅ¡krtávacího políÄka" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Text (aktivní)" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Text zobrazený pÅ™i aktivním poli" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Text (neaktivní)" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Text zobrazený pÅ™i neaktivním poli" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "Adresa URL" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Hodnota musí být validní adresa URL" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Uživatel" + +#: includes/fields/class-acf-field-user.php:394 +msgid "Filter by role" +msgstr "Filtrovat podle role" + +#: includes/fields/class-acf-field-user.php:402 +msgid "All user roles" +msgstr "VÅ¡echny uživatelské role" + +#: includes/fields/class-acf-field-user.php:433 +msgid "User Array" +msgstr "Pole uživatelů" + +#: includes/fields/class-acf-field-user.php:434 +msgid "User Object" +msgstr "Objekt uživatele" + +#: includes/fields/class-acf-field-user.php:435 +msgid "User ID" +msgstr "ID uživatele" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Wysiwyg Editor" + +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Grafika" + +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "KliknÄ›te pro inicializaci TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "Záložky" + +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Grafika a text" + +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Pouze grafika" + +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Pouze text" + +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "LiÅ¡ta nástrojů" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "Zobrazit tlaÄítka nahrávání médií?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "ZpoždÄ›ní inicializace?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE nebude inicializován, dokud nekliknete na pole" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:301 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Editovat skupinu polí" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Ověřit email" + +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:588 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Aktualizace" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "PříspÄ›vek aktualizován" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "ZjiÅ¡tÄ›n spam" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "PříspÄ›vek" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Stránka" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formuláře" + +#: includes/locations.php:243 +msgid "is equal to" +msgstr "je rovno" + +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "není rovno" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Příloha" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "VÅ¡echny formáty %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Komentář" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Aktuální uživatelská role" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Admin" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Aktuální uživatel" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "PÅ™ihlášen" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Prohlížíte frontend" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Prohlížíte backend" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Položka nabídky" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Nabídka" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "UmístÄ›ní nabídky" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Nabídky" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "RodiÄovská stránka" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Å ablona stránky" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Výchozí Å¡ablona" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Typ stránky" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Hlavní stránka" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Stránka příspÄ›vku" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Stránka nejvyšší úrovnÄ› (žádný nadÅ™azený)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "RodiÄovská stránka (má potomky)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "PodÅ™azená stránka (má rodiÄe)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Rubrika příspÄ›vku" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Formát příspÄ›vku" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Stav příspÄ›vku" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taxonomie příspÄ›vku" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Å ablona příspÄ›vku" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Uživatelský formulář" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "PÅ™idat / Editovat" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registrovat" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Uživatelská role" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s hodnota je vyžadována" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Publikovat" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Nebyly nalezeny žádné vlastní skupiny polí. VytvoÅ™it vlastní " +"skupinu polí" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Chyba. Nelze se pÅ™ipojit k serveru a aktualizovat" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Aktualizace" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Deaktivujte licenci" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Aktivujte licenci" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Informace o licenci" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Chcete-li povolit aktualizace, zadejte prosím licenÄní klíÄ. Pokud nemáte " +"licenÄní klíÄ, pÅ™eÄtÄ›te si podrobnosti a ceny." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "LicenÄní klíÄ" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Aktualizovat informace" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "SouÄasná verze" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "NejnovÄ›jší verze" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Aktualizace je dostupná" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Aktualizovat plugin" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Pro odemÄení aktualizací zadejte prosím výše svůj licenÄní klíÄ" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Zkontrolujte znovu" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "UpozornÄ›ní na aktualizaci" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Klonovat" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Vyberte jedno nebo více polí, které chcete klonovat" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Zobrazovat" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "UrÄení stylu použitého pro vykreslení klonovaných polí" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Skupina (zobrazuje vybrané pole ve skupinÄ› v tomto poli)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "BezeÅ¡vé (nahradí toto pole vybranými poli)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Å títky budou zobrazeny jako %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Prefix Å¡títku pole" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Hodnoty budou uloženy jako %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Prefix jména pole" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Neznámé pole" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Skupina neznámých polí" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "VÅ¡echna pole z skupiny polí %s" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:463 +msgid "Add Row" +msgstr "PÅ™idat řádek" + +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:938 +#: pro/fields/class-acf-field-flexible-content.php:1020 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "typ zobrazení" +msgstr[1] "typ zobrazení" +msgstr[2] "typ zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "typy zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:937 +#: pro/fields/class-acf-field-flexible-content.php:1019 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Toto pole vyžaduje alespoň {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Toto pole má limit {max}{label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} dostupný (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} povinný (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Flexibilní obsah vyžaduje minimálnÄ› jedno rozložení obsahu" + +#: pro/fields/class-acf-field-flexible-content.php:302 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "" +"KliknÄ›te na tlaÄítko \"%s\" níže pro vytvoÅ™ení vlastního typu zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:427 +msgid "Add layout" +msgstr "PÅ™idat typ zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:428 +msgid "Remove layout" +msgstr "Odstranit typ zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:429 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Click to toggle" +msgstr "KliknÄ›te pro pÅ™epnutí" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder Layout" +msgstr "ZmÄ›nit poÅ™adí typu zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder" +msgstr "ZmÄ›nit poÅ™adí" + +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete Layout" +msgstr "Smazat typ zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate Layout" +msgstr "Duplikovat typ zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New Layout" +msgstr "PÅ™idat nový typ zobrazení" + +#: pro/fields/class-acf-field-flexible-content.php:643 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:656 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:683 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Button Label" +msgstr "Nápis tlaÄítka" + +#: pro/fields/class-acf-field-flexible-content.php:692 +msgid "Minimum Layouts" +msgstr "Minimální rozložení" + +#: pro/fields/class-acf-field-flexible-content.php:701 +msgid "Maximum Layouts" +msgstr "Maximální rozložení" + +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "PÅ™idat obrázek do galerie" + +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "Maximální výbÄ›r dosažen" + +#: pro/fields/class-acf-field-gallery.php:336 +msgid "Length" +msgstr "Délka" + +#: pro/fields/class-acf-field-gallery.php:379 +msgid "Caption" +msgstr "Popisek" + +#: pro/fields/class-acf-field-gallery.php:388 +msgid "Alt Text" +msgstr "Alternativní text" + +#: pro/fields/class-acf-field-gallery.php:559 +msgid "Add to gallery" +msgstr "PÅ™idat do galerie" + +#: pro/fields/class-acf-field-gallery.php:563 +msgid "Bulk actions" +msgstr "Hromadné akce" + +#: pro/fields/class-acf-field-gallery.php:564 +msgid "Sort by date uploaded" +msgstr "Řadit dle data nahrání" + +#: pro/fields/class-acf-field-gallery.php:565 +msgid "Sort by date modified" +msgstr "Řadit dle data zmÄ›ny" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Sort by title" +msgstr "Řadit dle názvu" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Reverse current order" +msgstr "PÅ™evrátit aktuální poÅ™adí" + +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Close" +msgstr "Zavřít" + +#: pro/fields/class-acf-field-gallery.php:639 +msgid "Minimum Selection" +msgstr "Minimální výbÄ›r" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Maximum Selection" +msgstr "Maximální výbÄ›r" + +#: pro/fields/class-acf-field-gallery.php:657 +msgid "Insert" +msgstr "Vložit" + +#: pro/fields/class-acf-field-gallery.php:658 +msgid "Specify where new attachments are added" +msgstr "UrÄete, kde budou pÅ™idány nové přílohy" + +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Append to the end" +msgstr "PÅ™idat na konec" + +#: pro/fields/class-acf-field-gallery.php:663 +msgid "Prepend to the beginning" +msgstr "PÅ™idat na zaÄátek" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:656 +msgid "Minimum rows reached ({min} rows)" +msgstr "Minimální poÄet řádků dosažen ({min} řádků)" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "Maximální poÄet řádků dosažen ({max} řádků)" + +#: pro/fields/class-acf-field-repeater.php:333 +msgid "Add row" +msgstr "PÅ™idat řádek" + +#: pro/fields/class-acf-field-repeater.php:334 +msgid "Remove row" +msgstr "Odebrat řádek" + +#: pro/fields/class-acf-field-repeater.php:412 +msgid "Collapsed" +msgstr "Sbaleno" + +#: pro/fields/class-acf-field-repeater.php:413 +msgid "Select a sub field to show when row is collapsed" +msgstr "Zvolte dílÄí pole, které se zobrazí pÅ™i sbalení řádku" + +#: pro/fields/class-acf-field-repeater.php:423 +msgid "Minimum Rows" +msgstr "Minimum řádků" + +#: pro/fields/class-acf-field-repeater.php:433 +msgid "Maximum Rows" +msgstr "Maximum řádků" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Neexistuje stránka nastavení" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Konfigurace" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Nastavení aktualizováno" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Chcete-li povolit aktualizace, zadejte prosím licenÄní klÃ­Ä na stránce Aktualizace. Pokud nemáte licenÄní klíÄ, pÅ™eÄtÄ›te si podrobnosti a ceny." + +#. Plugin URI of the plugin/theme +#| msgid "http://www.advancedcustomfields.com/" +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +#| msgid "elliot condon" +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Disabled" +#~ msgstr "Zakázáno" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "(%s) zakázán" +#~ msgstr[1] "(%s) zakázány" +#~ msgstr[2] "(%s) zakázáno" + +#~ msgid "Parent fields" +#~ msgstr "RodiÄovské pole" + +#~ msgid "Sibling fields" +#~ msgstr "Sesterské pole" + +#~ msgid "See what's new in" +#~ msgstr "Co je nového v" + +#~ msgid "version" +#~ msgstr "verze" + +#~ msgid "Getting Started" +#~ msgstr "ZaÄínáme" + +#~ msgid "Field Types" +#~ msgstr "Typy polí" + +#~ msgid "Functions" +#~ msgstr "Funkce" + +#~ msgid "Actions" +#~ msgstr "Akce" + +#~ msgid "'How to' guides" +#~ msgstr "Průvodce \"jak na to\"" + +#~ msgid "Tutorials" +#~ msgstr "Tutoriál" + +#~ msgid "Created by" +#~ msgstr "VytvoÅ™il/a" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "ÚspÄ›ch. Nástroj pro import pÅ™idal %s skupin polí: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "UpozornÄ›ní. Nástroj pro import rozpoznal %s již existujících " +#~ "skupin polí a ty byly ignorovány: %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "Aktualizovat ACF" + +#~ msgid "Upgrade" +#~ msgstr "Aktualizovat" + +#~ msgid "Error" +#~ msgstr "Chyba" + +#~ msgid "Error." +#~ msgstr "Chyba." + +#~ msgid "Drag and drop to reorder" +#~ msgstr "ChytnÄ›te a táhnÄ›te pro zmÄ›nu poÅ™adí" + +#~ msgid "Taxonomy Term" +#~ msgstr "Taxonomie" + +#~ msgid "" +#~ "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +#~ msgstr "" +#~ "Pro usnadnÄ›ní aktualizace se pÅ™ihlaste do svého obchodu a požádejte o bezplatnou kopii ACF PRO!" + +#~ msgid "Under the Hood" +#~ msgstr "Pod kapotou" + +#~ msgid "Smarter field settings" +#~ msgstr "ChytÅ™ejší nastavení pole" + +#~ msgid "ACF now saves its field settings as individual post objects" +#~ msgstr "ACF nyní ukládá nastavení polí jako individuální objekty" + +#~ msgid "Better version control" +#~ msgstr "Lepší verzování" + +#~ msgid "" +#~ "New auto export to JSON feature allows field settings to be version " +#~ "controlled" +#~ msgstr "" +#~ "Nový automatický export do formátu JSON umožňuje, aby nastavení polí bylo " +#~ "verzovatelné" + +#~ msgid "Swapped XML for JSON" +#~ msgstr "XML vymÄ›nÄ›no za JSON" + +#~ msgid "Import / Export now uses JSON in favour of XML" +#~ msgstr "Import / Export nyní používá JSON místo XML" + +#~ msgid "A new field for embedding content has been added" +#~ msgstr "Bylo pÅ™idáno nové pole pro vkládání obsahu" + +#~ msgid "New Gallery" +#~ msgstr "Nová galerie" + +#~ msgid "The gallery field has undergone a much needed facelift" +#~ msgstr "Pole pro galerii proÅ¡lo potÅ™ebovaným vylepÅ¡ením vzhledu" + +#~ msgid "Relationship Field" +#~ msgstr "Vztahová pole" + +#~ msgid "" +#~ "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +#~ msgstr "" +#~ "Nastavení nových polí pro \"Filtry\" (vyhledávání, typ příspÄ›vku, " +#~ "taxonomie)" + +#~ msgid "New archives group in page_link field selection" +#~ msgstr "Nová skupina archivů v poli pro výbÄ›r page_link" + +#~ msgid "Better Options Pages" +#~ msgstr "VylepÅ¡ená stránka nastavení" + +#~ msgid "" +#~ "New functions for options page allow creation of both parent and child " +#~ "menu pages" +#~ msgstr "" +#~ "Nové funkce pro stránku nastavení umožňují vytvoÅ™ení stránek obou " +#~ "rodiÄovských i podřízených menu" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Exportujte skupiny polí do PHP" + +#~ msgid "Download export file" +#~ msgstr "Stáhnout soubor s exportem" + +#~ msgid "Generate export code" +#~ msgstr "Generovat kód pro exportu" + +#~ msgid "Advanced Custom Fields Database Upgrade" +#~ msgstr "Aktualizace databáze Advanced Custom Fields" + +#~ msgid "Upgrading data to" +#~ msgstr "Aktualizace dat na" + +#~ msgid "" +#~ "Before you start using the new awesome features, please update your " +#~ "database to the newest version." +#~ msgstr "" +#~ "Než zaÄnete používat nové úžasné funkce, aktualizujte databázi na " +#~ "nejnovÄ›jší verzi." + +#~ msgid "See what's new" +#~ msgstr "Podívejte se, co je nového" + +#~ msgid "Show a different month" +#~ msgstr "Zobrazit jiný mÄ›síc" + +#~ msgid "Return format" +#~ msgstr "Formát návratu" + +#~ msgid "uploaded to this post" +#~ msgstr "nahrán k tomuto příspÄ›vku" + +#~ msgid "File Size" +#~ msgstr "Velikost souboru" + +#~ msgid "No File selected" +#~ msgstr "Nebyl vybrán žádný soubor" + +#~ msgid "Locating" +#~ msgstr "UrÄování polohy" + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "Berte prosím na vÄ›domí, že veÅ¡kerý text musí projít pÅ™es funkce " +#~ "wordpressu " + +#~ msgid "No embed found for the given URL." +#~ msgstr "Pro danou adresu URL nebyl nalezen žádný embed." + +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "Dosaženo minimálního množství hodnot ( {min} hodnot )" + +#~ msgid "Warning" +#~ msgstr "Varování" + +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Pole záložky se zobrazí nesprávnÄ›, pokud je pÅ™idáno do opakovaÄe v " +#~ "tabulkovém stylu nebo do flexibilního pole" + +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "Chcete-li lépe uspořádat obrazovku úprav, použijte seskupování polí " +#~ "pomocí Záložek." + +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "VÅ¡echna pole následující po této záložce (až po další záložku nebo konec " +#~ "výpisu) budou seskupena a jako nadpis bude použit Å¡títek záložky." + +#~ msgid "Add new %s " +#~ msgstr "PÅ™idat novou %s " + +#~ msgid "None" +#~ msgstr "Žádný" + +#~ msgid "eg. Show extra content" +#~ msgstr "napÅ™. Zobrazit dodateÄný obsah" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Chyba pÅ™ipojení. Omlouváme se, zkuste to znovu" + +#~ msgid "Save Options" +#~ msgstr "Uložit nastavení" + +#~ msgid "License" +#~ msgstr "Licence" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Pro odemÄení aktualizací prosím zadejte níže svůj licenÄní klíÄ. Pokud " +#~ "nemáte licenÄní klíÄ, prosím navÅ¡tivte" + +#~ msgid "details & pricing" +#~ msgstr "detaily a ceny" + +#~ msgid "remove {layout}?" +#~ msgstr "odstranit {layout}?" + +#~ msgid "This field requires at least {min} {identifier}" +#~ msgstr "Toto pole vyžaduje alespoň {min} {identifier}" + +#~ msgid "Maximum {label} limit reached ({max} {identifier})" +#~ msgstr "Maximální {label} limit dosažen ({max} {identifier})" + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +#~ msgid "Custom field updated." +#~ msgstr "Vlastní pole aktualizováno." + +#~ msgid "Custom field deleted." +#~ msgstr "Vlastní pole smazáno." + +#~ msgid "Field group restored to revision from %s" +#~ msgstr "Skupina polí obnovena z revize %s" + +#~ msgid "Error: Field Type does not exist!" +#~ msgstr "Chyba: Typ pole neexistuje!" + +#~ msgid "Full" +#~ msgstr "Plný" + +#~ msgid "No ACF groups selected" +#~ msgstr "Nejsou vybrány žádné ACF skupiny" + +#~ msgid "Add Fields to Edit Screens" +#~ msgstr "PÅ™idat pole na obrazovky úprav" + +#~ msgid "Customise the edit page" +#~ msgstr "PÅ™izpůsobit stránku úprav" + +#~ msgid "Parent Page" +#~ msgstr "RodiÄovská stránka" + +#~ msgid "Child Page" +#~ msgstr "Podstránka" + +#~ msgid "Normal" +#~ msgstr "Normální" + +#~ msgid "Standard Metabox" +#~ msgstr "Standardní metabox" + +#~ msgid "No Metabox" +#~ msgstr "Žádný metabox" + +#~ msgid "" +#~ "Read documentation, learn the functions and find some tips & tricks " +#~ "for your next web project." +#~ msgstr "" +#~ "PÅ™eÄtÄ›te si dokumentaci, nauÄte se funkce a objevte zajímavé tipy & " +#~ "triky pro váš další webový projekt." + +#~ msgid "Visit the ACF website" +#~ msgstr "NavÅ¡tívit web ACF" + +#~ msgid "Vote" +#~ msgstr "Hlasujte" + +#~ msgid "Follow" +#~ msgstr "Následujte" + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "Ověřování selhalo. Jedno nebo více polí níže je povinné." + +#~ msgid "Add File to Field" +#~ msgstr "+ PÅ™idat soubor do pole" + +#~ msgid "Add Image to Field" +#~ msgstr "PÅ™idat obrázek do pole" + +#~ msgid "Attachment updated" +#~ msgstr "Příloha aktualizována." + +#~ msgid "No Custom Field Group found for the options page" +#~ msgstr "Žádná vlastní skupina polí nebyla pro stránku konfigurace nalezena" + +#~ msgid "Repeater field deactivated" +#~ msgstr "Opakovací pole deaktivováno" + +#~ msgid "Options page deactivated" +#~ msgstr "Stránka konfigurace deaktivována" + +#~ msgid "Flexible Content field deactivated" +#~ msgstr "Pole flexibilního pole deaktivováno" + +#~ msgid "Gallery field deactivated" +#~ msgstr "Pole galerie deaktivováno" + +#~ msgid "Repeater field activated" +#~ msgstr "Opakovací pole aktivováno" + +#~ msgid "Options page activated" +#~ msgstr "Stránka konfigurace aktivována" + +#~ msgid "Flexible Content field activated" +#~ msgstr "Pole flexibilního obsahu aktivováno" + +#~ msgid "Gallery field activated" +#~ msgstr "Pole galerie aktivováno" + +#~ msgid "License key unrecognised" +#~ msgstr "LicenÄní klÃ­Ä nebyl rozpoznán" + +#~ msgid "Activate Add-ons." +#~ msgstr "Aktivovat přídavky." + +#~ msgid "" +#~ "Add-ons can be unlocked by purchasing a license key. Each key can be used " +#~ "on multiple sites." +#~ msgstr "" +#~ "Přídavky mohou být odemÄeny zakoupením licenÄního klíÄe. Každý klÃ­Ä může " +#~ "být použit na více webech." + +#~ msgid "Find Add-ons" +#~ msgstr "Hledat přídavky" + +#~ msgid "Activation Code" +#~ msgstr "AktivaÄní kód" + +#~ msgid "Repeater Field" +#~ msgstr "Opakovací pole" + +#~ msgid "Deactivate" +#~ msgstr "Deaktivovat" + +#~ msgid "Activate" +#~ msgstr "Aktivovat" + +#~ msgid "Flexible Content Field" +#~ msgstr "Pole flexibilního obsahu" + +#~ msgid "Gallery Field" +#~ msgstr "Pole galerie" + +#~ msgid "Export Field Groups to XML" +#~ msgstr "Exportovat skupiny polí do XML" + +#~ msgid "" +#~ "ACF will create a .xml export file which is compatible with the native WP " +#~ "import plugin." +#~ msgstr "" +#~ "ACF vytvoří soubor .xml exportu, který je kompatibilní s originálním " +#~ "importním pluginem WP." + +#~ msgid "" +#~ "Imported field groups will appear in the list of editable field " +#~ "groups. This is useful for migrating fields groups between Wp websites." +#~ msgstr "" +#~ "Importované skupiny polí budou zobrazeny v seznamu upravitelných " +#~ "skupin polí. Toto je užiteÄné pro pÅ™esouvání skupin polí mezi WP weby." + +#~ msgid "Select field group(s) from the list and click \"Export XML\"" +#~ msgstr "Vyberte skupinu(y) polí ze seznamu a kliknÄ›te na \"Export XML\"" + +#~ msgid "Save the .xml file when prompted" +#~ msgstr "Uložte .xml soubor pÅ™i požádání" + +#~ msgid "Navigate to Tools » Import and select WordPress" +#~ msgstr "OtevÅ™ete Nástroje » Import a vyberte WordPress" + +#~ msgid "Install WP import plugin if prompted" +#~ msgstr "Nainstalujte importní WP plugin, pokud jste o to požádáni" + +#~ msgid "Upload and import your exported .xml file" +#~ msgstr "Nahrajte a importujte váš exportovaný .xml soubor" + +#~ msgid "Select your user and ignore Import Attachments" +#~ msgstr "Vyberte vaÅ¡eho uživatele a ignorujte možnost Importovat přílohy" + +#~ msgid "That's it! Happy WordPressing" +#~ msgstr "To je vÅ¡e! Veselé WordPressování!" + +#~ msgid "Export XML" +#~ msgstr "Exportovat XML" + +#~ msgid "ACF will create the PHP code to include in your theme." +#~ msgstr "ACF vytvoří PHP kód pro vložení do vaší Å¡ablony." + +#~ msgid "Register Field Groups" +#~ msgstr "Registrovat skupiny polí" + +#~ msgid "" +#~ "Registered field groups will not appear in the list of editable " +#~ "field groups. This is useful for including fields in themes." +#~ msgstr "" +#~ "Registrované skupiny polí nebudou zobrazeny v seznamu " +#~ "upravitelných skupin polí. Toto je užiteÄné pÅ™i používání polí v " +#~ "Å¡ablonách." + +#~ msgid "" +#~ "Please note that if you export and register field groups within the same " +#~ "WP, you will see duplicate fields on your edit screens. To fix this, " +#~ "please move the original field group to the trash or remove the code from " +#~ "your functions.php file." +#~ msgstr "" +#~ "MÄ›jte prosím na pamÄ›ti, že pokud exportujete a registrujete skupiny polí " +#~ "v rámci stejného WordPressu, uvidíte na obrazovkách úprav duplikovaná " +#~ "pole. Pro nápravu prosím pÅ™esuňte původní skupinu polí do koÅ¡e nebo " +#~ "odstraňte kód ze souboru functions.php." + +#~ msgid "Select field group(s) from the list and click \"Create PHP\"" +#~ msgstr "Vyberte skupinu(y) polí ze seznamu a kliknÄ›te na \"VytvoÅ™it PHP\"" + +#~ msgid "Copy the PHP code generated" +#~ msgstr "Zkopírujte vygenerovaný PHP kód" + +#~ msgid "Paste into your functions.php file" +#~ msgstr "Vložte jej do vaÅ¡eho souboru functions.php" + +#~ msgid "" +#~ "To activate any Add-ons, edit and use the code in the first few lines." +#~ msgstr "" +#~ "K aktivací kteréhokoli přídavku upravte a použijte kód na prvních " +#~ "nÄ›kolika řádcích." + +#~ msgid "Back to settings" +#~ msgstr "ZpÄ›t na nastavení" + +#~ msgid "" +#~ "/**\n" +#~ " * Activate Add-ons\n" +#~ " * Here you can enter your activation codes to unlock Add-ons to use in " +#~ "your theme. \n" +#~ " * Since all activation codes are multi-site licenses, you are allowed to " +#~ "include your key in premium themes. \n" +#~ " * Use the commented out code to update the database with your activation " +#~ "code. \n" +#~ " * You may place this code inside an IF statement that only runs on theme " +#~ "activation.\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * Aktivovat přídavky\n" +#~ " * Zde můžete vložit váš aktivaÄní kód pro odemÄení přídavků k použití ve " +#~ "vaší Å¡ablonÄ›. \n" +#~ " * Jelikož jsou vÅ¡echny aktivaÄní kódy licencovány pro použití na více " +#~ "webech, můžete je použít ve vaší premium Å¡ablonÄ›. \n" +#~ " * Použijte zakomentovaný kód pro aktualizaci databáze s vaším aktivaÄním " +#~ "kódem. \n" +#~ " * Tento kód můžete vložit dovnitÅ™ IF konstrukce, která probÄ›hne pouze po " +#~ "aktivaci Å¡ablony.\n" +#~ " */" + +#~ msgid "" +#~ "/**\n" +#~ " * Register field groups\n" +#~ " * The register_field_group function accepts 1 array which holds the " +#~ "relevant data to register a field group\n" +#~ " * You may edit the array as you see fit. However, this may result in " +#~ "errors if the array is not compatible with ACF\n" +#~ " * This code must run every time the functions.php file is read\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * Registrace skupiny polí\n" +#~ " * Funkce register_field_group akceptuje pole, které obsahuje relevatní " +#~ "data k registraci skupiny polí\n" +#~ " * Pole můžete upravit podle potÅ™eb. Může to ovÅ¡em vyústit v pole " +#~ "nekompatibilní s ACF\n" +#~ " * Tento kód musí probÄ›hnout pÅ™i každém Ätení souboru functions.php\n" +#~ " */" + +#~ msgid "No field groups were selected" +#~ msgstr "Nebyly vybrány žádné skupiny polí" + +#~ msgid "Advanced Custom Fields Settings" +#~ msgstr "Nastavení PokroÄilých vlastních polí" + +#~ msgid "requires a database upgrade" +#~ msgstr "vyžaduje aktualizaci databáze" + +#~ msgid "why?" +#~ msgstr "proÄ?" + +#~ msgid "Please" +#~ msgstr "Prosím" + +#~ msgid "backup your database" +#~ msgstr "zálohujte svou databázi" + +#~ msgid "then click" +#~ msgstr "a pak kliknÄ›te" + +#~ msgid "Modifying field group options 'show on page'" +#~ msgstr "Úprava možnosti skupiny polí 'zobrazit na stránce'" + +#~ msgid "Modifying field option 'taxonomy'" +#~ msgstr "Úprava možností pole 'taxonomie'" + +#~ msgid "No choices to choose from" +#~ msgstr "Žádné možnosti, z nichž by bylo možné vybírat" + +#~ msgid "Enter your choices one per line" +#~ msgstr "Vložte vaÅ¡e možnosti po jedné na řádek" + +#~ msgid "Red" +#~ msgstr "ÄŒervená" + +#~ msgid "Blue" +#~ msgstr "Modrá" + +#~ msgid "blue : Blue" +#~ msgstr "modra: Modrá" + +#~ msgid "eg. dd/mm/yy. read more about" +#~ msgstr "napÅ™. dd/mm/yy. pÅ™eÄtÄ›te si více" + +#~ msgid "File Updated." +#~ msgstr "Soubor aktualizován." + +#~ msgid "No File Selected" +#~ msgstr "Nebyl vybrán žádný soubor" + +#~ msgid "Attachment ID" +#~ msgstr "ID přílohy" + +#~ msgid "Media attachment updated." +#~ msgstr "Příloha aktualizována." + +#~ msgid "No files selected" +#~ msgstr "Nebyly vybrány žádné soubory." + +#~ msgid "Add Selected Files" +#~ msgstr "PÅ™idat vybrané soubory" + +#~ msgid "+ Add Row" +#~ msgstr "+ PÅ™idat řádek" + +#~ msgid "Field Order" +#~ msgstr "PoÅ™adí pole" + +#~ msgid "" +#~ "No fields. Click the \"+ Add Sub Field button\" to create your first " +#~ "field." +#~ msgstr "" +#~ "Žádná pole. KliknÄ›te na tlaÄítko \"+ PÅ™idat podpole\" pro vytvoÅ™ení " +#~ "prvního pole." + +#~ msgid "Edit this Field" +#~ msgstr "Upravit toto pole" + +#~ msgid "Read documentation for this field" +#~ msgstr "PÅ™eÄtÄ›te si dokumentaci pro toto pole" + +#~ msgid "Docs" +#~ msgstr "Dokumenty" + +#~ msgid "Duplicate this Field" +#~ msgstr "Duplikovat toto pole" + +#~ msgid "Delete this Field" +#~ msgstr "Smazat toto pole" + +#~ msgid "Save Field" +#~ msgstr "Uložit pole" + +#~ msgid "Close Sub Field" +#~ msgstr "Zavřít podpole" + +#~ msgid "+ Add Sub Field" +#~ msgstr "+ PÅ™idat podpole" + +#~ msgid "Thumbnail is advised" +#~ msgstr "Je doporuÄen náhled" + +#~ msgid "Image Updated" +#~ msgstr "Obrázek aktualizován" + +#~ msgid "Grid" +#~ msgstr "Mřížka" + +#~ msgid "List" +#~ msgstr "Seznam" + +#~ msgid "No images selected" +#~ msgstr "Není vybrán žádný obrázek" + +#~ msgid "1 image selected" +#~ msgstr "1 vybraný obrázek" + +#~ msgid "{count} images selected" +#~ msgstr "{count} vybraných obrázků" + +#~ msgid "Image already exists in gallery" +#~ msgstr "Obrázek v galerii už existuje" + +#~ msgid "Image Added" +#~ msgstr "Obrázek pÅ™idán" + +#~ msgid "Image Updated." +#~ msgstr "Obrázek aktualizován." + +#~ msgid "Image Object" +#~ msgstr "Objekt obrázku" + +#~ msgid "Add selected Images" +#~ msgstr "PÅ™idat vybrané obrázky" + +#~ msgid "Filter from Taxonomy" +#~ msgstr "Filtrovat z taxonomie" + +#~ msgid "Repeater Fields" +#~ msgstr "Opakovací pole" + +#~ msgid "Table (default)" +#~ msgstr "Tabulka (výchozí)" + +#~ msgid "Formatting" +#~ msgstr "Formátování" + +#~ msgid "Define how to render html tags" +#~ msgstr "Definujte způsob vypisování HTML tagů" + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Define how to render html tags / new lines" +#~ msgstr "Definujte způsob výpisu HTML tagů / nových řádků" + +#~ msgid "auto <br />" +#~ msgstr "auto <br />" + +#~ msgid "new_field" +#~ msgstr "nove_pole" + +#~ msgid "Field Instructions" +#~ msgstr "Instrukce pole" + +#~ msgid "Logged in User Type" +#~ msgstr "Typ pÅ™ihlášeného uživatele" + +#~ msgid "Page Specific" +#~ msgstr "Specifická stránka" + +#~ msgid "Post Specific" +#~ msgstr "Specifický příspÄ›vek" + +#~ msgid "Taxonomy (Add / Edit)" +#~ msgstr "Taxonomie (pÅ™idat / upravit)" + +#~ msgid "User (Add / Edit)" +#~ msgstr "Uživatel (pÅ™idat / upravit)" + +#~ msgid "Media (Edit)" +#~ msgstr "Media (upravit)" + +#~ msgid "match" +#~ msgstr "souhlasí" + +#~ msgid "all" +#~ msgstr "vÅ¡e" + +#~ msgid "any" +#~ msgstr "libovolné" + +#~ msgid "of the above" +#~ msgstr "z uvedeného" + +#~ msgid "Unlock options add-on with an activation code" +#~ msgstr "OdemknÄ›te přídavek konfigurace s aktivaÄním kódem" + +#~ msgid "Field groups are created in order
                          from lowest to highest." +#~ msgstr "" +#~ "Skupiny polí jsou vytvořeny v pořadí
                          od nejnižšího k nejvyššímu." + +#~ msgid "Select items to hide them from the edit screen" +#~ msgstr "Vybrat položky pro skrytí z obrazovky úprav" + +#~ msgid "" +#~ "If multiple field groups appear on an edit screen, the first field " +#~ "group's options will be used. (the one with the lowest order number)" +#~ msgstr "" +#~ "Pokud se na obrazovce úprav objeví nÄ›kolik skupin polí, bude použito " +#~ "nastavení první skupiny. (s nejnižším poÅ™adovým Äíslem)" + +#~ msgid "Everything Fields deactivated" +#~ msgstr "VÅ¡echna pole deaktivována" + +#~ msgid "Everything Fields activated" +#~ msgstr "VÅ¡echna pole aktivována" + +#~ msgid "Navigate to the" +#~ msgstr "Běžte na" + +#~ msgid "and select WordPress" +#~ msgstr "a vyberte WordPress" + +#~ msgid "" +#~ "Filter posts by selecting a post type
                          \n" +#~ "\t\t\t\tTip: deselect all post types to show all post type's posts" +#~ msgstr "" +#~ "Filtrovat příspěvky výběrem typu příspěvku
                          \n" +#~ "\t\t\t\tTip: zruÅ¡te výbÄ›r vÅ¡ech typů příspÄ›vku pro zobrazení příspÄ›vků " +#~ "vÅ¡ech typů příspÄ›vků" + +#~ msgid "Set to -1 for infinite" +#~ msgstr "Nastavte na -1 pro nekoneÄno" + +#~ msgid "Row Limit" +#~ msgstr "Limit řádků" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-de_CH.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-de_CH.mo new file mode 100755 index 0000000000000000000000000000000000000000..65bf9213881a071a04e834f198bd0ba1d56ea0bd GIT binary patch literal 53137 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-de_CH.po b/wp-content/plugins/advanced-custom-fields/lang/acf-de_CH.po new file mode 100644 index 0000000..b7a0def --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-de_CH.po @@ -0,0 +1,4281 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.7.10\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2019-01-15 11:15+1000\n" +"PO-Revision-Date: 2019-02-06 15:35+0100\n" +"Last-Translator: Werbelinie AG \n" +"Language-Team: Raphael Hüni \n" +"Language: de_CH\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.2\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +# @ acf +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +# @ acf +#: acf.php:362 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "Feld-Gruppen" + +# @ acf +#: acf.php:363 +msgid "Field Group" +msgstr "Feld-Gruppe" + +# @ acf +#: acf.php:364 acf.php:396 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New" +msgstr "Erstellen" + +# @ acf +#: acf.php:365 +msgid "Add New Field Group" +msgstr "Neue Feld-Gruppe erstellen" + +# @ acf +#: acf.php:366 +msgid "Edit Field Group" +msgstr "Feld-Gruppe bearbeiten" + +# @ acf +#: acf.php:367 +msgid "New Field Group" +msgstr "Neue Feld-Gruppe" + +# @ acf +#: acf.php:368 +msgid "View Field Group" +msgstr "Feld-Gruppe anzeigen" + +# @ acf +#: acf.php:369 +msgid "Search Field Groups" +msgstr "Feld-Gruppen suchen" + +# @ acf +#: acf.php:370 +msgid "No Field Groups found" +msgstr "Keine Feld-Gruppen gefunden" + +# @ acf +#: acf.php:371 +msgid "No Field Groups found in Trash" +msgstr "Keine Feld-Gruppen im Papierkorb gefunden" + +# @ acf +#: acf.php:394 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:529 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Felder" + +# @ acf +#: acf.php:395 +msgid "Field" +msgstr "Feld" + +# @ acf +#: acf.php:397 +msgid "Add New Field" +msgstr "Feld hinzufügen" + +# @ acf +#: acf.php:398 +msgid "Edit Field" +msgstr "Feld bearbeiten" + +# @ acf +#: acf.php:399 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Neues Feld" + +# @ acf +#: acf.php:400 +msgid "View Field" +msgstr "Feld anzeigen" + +# @ acf +#: acf.php:401 +msgid "Search Fields" +msgstr "Felder suchen" + +# @ acf +#: acf.php:402 +msgid "No Fields found" +msgstr "Keine Felder gefunden" + +# @ acf +#: acf.php:403 +msgid "No Fields found in Trash" +msgstr "Keine Feld-Gruppen im Papierkorb gefunden" + +#: acf.php:442 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:586 +msgid "Inactive" +msgstr "Inaktiv" + +#: acf.php:447 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inaktiv (%s)" +msgstr[1] "Inaktiv (%s)" + +# @ acf +#: includes/admin/admin-field-group.php:86 +#: includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "Feld-Gruppe aktualisiert." + +# @ acf +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "Feld-Gruppe gelöscht." + +# @ acf +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "Feld-Gruppe veröffentlicht." + +# @ acf +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "Feld-Gruppe gesichert." + +# @ acf +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "Feld-Gruppe übertragen." + +# @ acf +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "Feld-Gruppe geplant für." + +# @ acf +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "Entwurf der Feld-Gruppe aktualisiert." + +# @ acf +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Der Feldname darf nicht mit \"field_\" beginnen" + +# @ acf +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Diese Feld kann nicht verschoben werden, bevor es gesichert wurde" + +# @ acf +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "Es ist ein Titel für die Feld-Gruppe erforderlich" + +# @ acf +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "Wirklich in den Papierkorb verschieben?" + +# @ acf +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "Es liegen keine Auswahl-Feld-Typen vor" + +# @ acf +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "Benutzerdefiniertes Feld verschieben" + +# @ acf +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "Ausgewählt" + +# @ acf +#: includes/admin/admin-field-group.php:178 includes/api/api-field.php:320 +msgid "(no label)" +msgstr "(ohne Beschreibung)" + +# @ acf +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "(Dieses Feld)" + +# @ acf +#: includes/admin/admin-field-group.php:180 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "kopieren" + +# @ acf +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3998 +msgid "or" +msgstr "oder" + +# @ acf +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "Null" + +# @ acf +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "Position" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Einstellungen" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "Feldschlüssel" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Aktiviert" + +# @ acf +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "Verschieben erfolgreich abgeschlossen." + +# @ acf +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Das Feld \"%s\" wurde in die %s Feld-Gruppe verschoben" + +# @ acf +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "Schliessen" + +# @ acf +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "In welche Feld-Gruppe solle dieses Feld verschoben werden" + +# @ acf +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "Feld verschieben" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Veröffentlicht (%s)" +msgstr[1] "Veröffentlicht (%s)" + +# @ acf +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Feld-Gruppe dupliziert." +msgstr[1] "%s Feld-Gruppen dupliziert." + +# @ acf +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "Feld-Gruppe synchronisiert." +msgstr[1] "%s Feld-Gruppen synchronisiert." + +# @ acf +#: includes/admin/admin-field-groups.php:413 +#: includes/admin/admin-field-groups.php:576 +msgid "Sync available" +msgstr "Synchronisierung verfügbar" + +# @ acf +#: includes/admin/admin-field-groups.php:526 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:372 +msgid "Title" +msgstr "Titel" + +# @ acf +#: includes/admin/admin-field-groups.php:527 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:399 +msgid "Description" +msgstr "Beschreibung" + +#: includes/admin/admin-field-groups.php:528 +msgid "Status" +msgstr "Status" + +# @ acf +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "" +"Passen Sie WordPress mit leistungsstarken, professionellen und intuitiven " +"Feldern an." + +# @ acf +#: includes/admin/admin-field-groups.php:628 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Versionshinweise" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in
                          version %s." +msgstr "Sieh dir die Neuerungen in Version%s an." + +# @ acf +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "Dokumentation (engl.)" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "Webseite" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "Dokumentation" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "Hilfe" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Danke für die Verwendung von ACF." + +# @ acf +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "Dieses Element duplizieren" + +# @ acf +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate" +msgstr "Duplizieren" + +# @ acf +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "Suchen" + +# @ acf +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "%s auswählen" + +# @ acf +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "Synchronisiere Feld-Gruppe" + +# @ acf +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "Synchronisieren" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "Anwenden" + +# @ acf +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "Massenverarbeitung" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Werkzeuge" + +# @ acf +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Aktualisiere Datenbank" + +# @ acf +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Übersicht Seiten & Aktualisierungen" + +# @ acf +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "Eigene Felder" + +# @ acf +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Info" + +# @ acf +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Was gibt es Neues" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Feld-Gruppen exportieren" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "PHP generieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Keine Feld-Gruppe ausgewählt" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Eine Feldgruppe exportiert." +msgstr[1] "%s Feldgruppen exportiert." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Felder-Gruppen auswählen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Entscheide zuerst welche Felder-Gruppen Du exportieren möchtest und wähle im " +"Anschluss das Format in das exportiert werden soll. Klicke den \"JSON-Datei " +"exportieren\"-Button, um eine JSON-Datei zu erhalten, welche Du dann in " +"einer anderen ACF-Installation importieren kannst. Wähle den \"Erstelle PHP-" +"Code\"-Button, um PHP-Code zu erhalten, den Du im Anschluss in der functions." +"php Deines Themes einfügen kannst." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Datei exportieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Der nachfolgende Code kann dazu verwendet werden eine lokale Version der " +"ausgewählten Feld-Gruppe(n) zu registrieren. Eine lokale Feld-Gruppe bietet " +"viele Vorteile; schnellere Ladezeiten, Versionskontrolle sowie dynamische " +"Felder und Einstellungen. Kopiere einfach folgenden Code und füge ihn in die " +"functions.php oder eine externe Datei in Deinem Theme ein." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "In Zwischenablage kopieren" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Kopiert" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Feld-Gruppen importieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:61 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Wähle die Advanced Custom Fields JSON-Datei aus, welche Du importieren " +"möchtest. Nach dem Klicken des Importieren-Buttons wird ACF die Felder-" +"Gruppen hinzufügen." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:66 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Datei auswählen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:76 +msgid "Import File" +msgstr "Datei importieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:99 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Keine Datei ausgewählt" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:109 +msgid "Error uploading file. Please try again" +msgstr "Fehler beim Upload. Bitte erneut versuchen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:115 +msgid "Incorrect file type" +msgstr "Falscher Dateityp" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:129 +msgid "Import file empty" +msgstr "Die importierte Datei ist leer" + +#: includes/admin/tools/class-acf-admin-tool-import.php:235 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Eine Feldgruppe importiert" +msgstr[1] "%s Feldgruppen importiert" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "Bedingungen für die Anzeige" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Zeige dieses Feld, wenn" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "und" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Regel-Gruppe hinzufügen" + +# @ acf +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:424 +#: pro/fields/class-acf-field-repeater.php:294 +msgid "Drag to reorder" +msgstr "Ziehen zum Sortieren" + +# @ acf +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Feld bearbeiten" + +# @ acf +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:359 +msgid "Edit" +msgstr "Bearbeiten" + +# @ acf +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Feld duplizieren" + +# @ acf +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Feld in eine andere Gruppe verschieben" + +# @ acf +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Verschieben" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Feld löschen" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete" +msgstr "Löschen" + +# @ acf +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Bezeichnung" + +# @ acf +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Dieser Name wird in der Bearbeitungs-Ansicht eines Beitrags angezeigt" + +# @ acf +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Feld-Name" + +# @ acf +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "" +"Nur ein Wort ohne Leerzeichen; es sind nur Unterstriche und Bindestriche als " +"Sonderzeichen erlaubt" + +# @ acf +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Feld-Typ" + +# @ acf +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Anweisungen" + +# @ acf +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Anweisungen für Autoren werden in der Bearbeitungs-Ansicht angezeigt" + +# @ acf +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Erforderlich?" + +# @ acf +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Wrapper-Attribute" + +# @ acf +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "Breite" + +# @ acf +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "Klasse" + +# @ acf +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "ID" + +# @ acf +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Feld schliessen" + +# @ acf +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Reihenfolge" + +# @ acf +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Label" +msgstr "Name" + +# @ acf +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:610 +msgid "Name" +msgstr "Feld-Name" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Feld-Schlüssel" + +# @ acf +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Typ" + +# @ acf +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Es sind noch keine Felder angelegt. Klicke den + Feld hinzufügen-" +"Button und erstelle Dein erstes Feld." + +# @ acf +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Feld hinzufügen" + +# @ acf +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regeln" + +# @ acf +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Erstelle ein Regelwerk das festlegt welche Bearbeitungs-Ansichten diese Feld-" +"Gruppe nutzen dürfen" + +# @ acf +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stil" + +# @ acf +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "WP-Metabox (Standard)" + +# @ acf +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Übergangslos ohne Metabox" + +# @ acf +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Position" + +# @ acf +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Nach dem Titel vor dem Inhalt" + +# @ acf +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Nach dem Inhalt (Standard)" + +# @ acf +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Seitlich neben dem Inhalt" + +# @ acf +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Platzierung Beschriftung" + +# @ acf +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Über dem Feld" + +# @ acf +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Links neben dem Feld" + +# @ acf +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Platzierung der Hinweise" + +# @ acf +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Unterhalb der Beschriftung" + +# @ acf +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Unterhalb der Felder" + +# @ acf +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Sortiernr." + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Feld-Gruppen mit einem niedrigeren Wert werden zuerst angezeigt" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Wird in der Feld-Gruppen-Liste angezeigt" + +# @ acf +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "Permalink" + +# @ acf +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "Inhalts-Editor" + +# @ acf +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Kurzfassung" + +# @ acf +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Diskussion" + +# @ acf +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Kommentare" + +# @ acf +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Revisionen" + +# @ acf +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Kurzlink" + +# @ acf +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Autor" + +# @ acf +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Format" + +# @ acf +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Seiten-Attribute" + +# @ acf +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "Beitragsbild" + +# @ acf +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Kategorien" + +# @ acf +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Schlagworte" + +# @ acf +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Sende Trackbacks" + +# @ acf +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Verstecken" + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Ausgewählte Elemente werden versteckt." + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Sind für einen Bearbeiten-Dialog mehrere Felder-Gruppen definiert, werden " +"die Optionen der ersten Felder-Gruppe angewendet (die mit der niedrigsten " +"Nummer für die Reihenfolge)." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Die folgenden Seiten benötigen ein DB Upgrade. Wähle jene aus, die " +"du aktualisieren willst und klicke dann %s." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Seiten aktualisieren" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Seite" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Die Seite erfordert eine Datenbank-Aktualisierung von %s auf %s" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "Seite ist aktuell" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Datenbank-Aktualisierung fertiggestellt. Zum Netzwerk " +"Dashboard" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "" +"Bitte wählen Sie mindestens eine Seite aus, um ein Upgrade durchzuführen." + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Es wird dringend dazu angeraten, dass Du Deine Datenbank sicherst, bevor Du " +"fortfährst. Bist Du sicher, dass Du die Aktualisierung jetzt durchführen " +"willst?" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Aktualisiere Daten auf Version %s" + +# @ default +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Upgrade abgeschlossen" + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Upgrade gescheitert." + +# @ acf +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "Lese anstehende Aufgaben für die Aktualisierung..." + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "Datenbank-Upgrade abgeschlossen. Schau was neu ist" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "Keine Aktualisierungen verfügbar." + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "Zurück zu allen Werkzeugen" + +# @ acf +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Zeige diese Felder, wenn" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Wiederholung" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Flexible Inhalte" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerie" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Options-Seite" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Es ist eine Datenbank-Aktualisierung notwendig" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Danke für die Aktualisierung auf %s v%s!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "" +"Diese Version enthält Verbesserungen an Ihrer Datenbank und erfordert ein " +"Upgrade." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "" +"Stelle bitte ebenfalls sicher, dass alle Premium-Add-ons (%s) vorab auf die " +"neueste Version aktualisiert wurden." + +# @ acf +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Zusatz-Module" + +# @ acf +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Download & Installieren" + +# @ acf +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Installiert" + +# @ acf +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Willkommen bei Advanced Custom Fields" + +# @ acf +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Danke fürs Aktualisieren! ACF %s ist besser denn je. Wir hoffen es wird Dir " +"genauso gut gefallen wie uns." + +# @ acf +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Eine reibungslosere Erfahrung" + +# @ acf +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "Verbesserte Benutzerfreundlichkeit" + +# @ acf +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Durch die Einführung der beliebten Select2 Bibliothek wurde sowohl die " +"Benutzerfreundlichkeit als auch die Geschwindigkeit einiger Feldtypen wie " +"Beitrags-Objekte, Seiten-Links, Taxonomien sowie von Auswahl-Feldern " +"signifikant verbessert." + +# @ acf +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "Verbessertes Design" + +# @ acf +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Viele Felder wurden visuell überarbeitet, damit ACF besser denn je aussieht! " +"Die markantesten Änderungen erfuhren das Galerie-, Beziehungs- sowie das " +"nagelneue oEmbed-Feld!" + +# @ acf +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "Verbesserte Datenstruktur" + +# @ acf +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Die Neugestaltung der Datenarchitektur erlaubt es, dass Felder unabhängig " +"von ihren übergeordneten Feldern existieren können. Dies ermöglicht, dass " +"Felder per Drag-and-Drop, in und aus ihren übergeordneten Feldern verschoben " +"werden können!" + +# @ acf +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Macht's gut Add-ons… Hallo PRO" + +# @ acf +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "Wir dürfen vorstellen… ACF PRO" + +# @ acf +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Wir haben die Art und Weise mit der die Premium-Funktionalität zur Verfügung " +"gestellt wird geändert - das \"wie\" dürfte Dich begeistern!" + +# @ acf +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Alle vier, vormals separat erhältlichen, Premium-Add-ons wurden in der neuen " +"Pro-Version von ACF zusammengefasst. Besagte Premium-" +"Funktionalität, erhältlich in einer Einzel- sowie einer Entwickler-Lizenz, " +"ist somit erschwinglicher denn je!" + +# @ acf +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Leistungsstarke Funktionen" + +# @ acf +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO enthält leistungsstarke Funktionen wie wiederholbare Daten, Flexible " +"Inhalte-Layouts, ein wunderschönes Galerie-Feld sowie die Möglichkeit " +"zusätzliche Options-Seiten im Admin-Bereich anzulegen!" + +# @ acf +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Lies mehr über die ACF PRO Funktionen." + +# @ acf +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Kinderleichte Aktualisierung" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" +"Die Aktualisierung auf ACF PRO ist einfach. Kaufen Sie einfach eine Lizenz " +"online und laden Sie das Plugin herunter!" + +# @ acf +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" +"Um möglichen Fragen vorzubeugen haben wir haben eine " +"Anleitung für den Aktualisierungs-Prozess (Engl.) verfasst. Sollten " +"dennoch Fragen aufgeworfen werden, kontaktiere bitte unser " +"Support-Team ." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Neue Features" + +# @ acf +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "Link Feld" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"Das Link-Feld bietet eine einfache Möglichkeit, einen Link auszuwählen oder " +"zu definieren (URL, Titel, Ziel)." + +# @ acf +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Gruppenfeld" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "" +"Das Gruppenfeld bietet eine einfache Möglichkeit, eine Gruppe von Feldern zu " +"schaffen." + +# @ acf +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "oEmbed Feld" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" +"Das oEmbed-Feld ermöglicht eine einfache Möglichkeit, Videos, Bilder, " +"Tweets, Audio und andere Inhalte einzubetten." + +# @ acf +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Klonen Feld" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "" +"Das Klon-Feld ermöglicht es Ihnen, bestehende Felder auszuwählen und " +"anzuzeigen." + +# @ acf +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "Mehr AJAX" + +# @ acf +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "" +"Mehr Felder verwenden nun eine AJAX-basierte Suche, die die Ladezeiten von " +"Seiten deutlich verringert." + +# @ acf +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "Lokales JSON" + +# @ acf +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"Der neue automatische Export in JSON verbessert die Geschwindigkeit und " +"ermöglicht eine Synchronisierung." + +# @ acf +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Einfacher Import / Export" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "" +"Sowohl der Import als auch der Export können einfach über eine neue " +"Werkzeugseite erfolgen." + +# @ acf +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "Neue Positionen für Formulare" + +# @ acf +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" +"Felder können nun auch Menüs, Menüpunkten, Kommentaren, Widgets und allen " +"Benutzer-Formularen zugeordnet werden!" + +# @ acf +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Weitere Anpassungen" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" +"Neue PHP (und JS)-Aktionen und Filter wurden hinzugefügt, um mehr " +"Anpassungen zu ermöglichen." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Frisches UI" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "" +"Ein Design-Refresh für das gesamte Plugin, inklusive neue Feldtypen, " +"Einstellungen und Design wurde eingeführt!" + +# @ acf +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Neue Einstellungen" + +# @ acf +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" +"Die Feldgruppen wurden um die Einstellungen für das Aktivieren und " +"Deaktivieren der Gruppe, die Platzierung von Beschriftungen und Anweisungen " +"sowie eine Beschreibung erweitert." + +# @ acf +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "Verbesserte Front-End-Formulare" + +# @ acf +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"acf_form() kann jetzt einen neuen Beitrag direkt beim Senden erstellen " +"inklusive vieler neuer Einstellungsmöglichkeiten." + +# @ acf +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Bessere Validierung" + +# @ acf +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "" +"Die Formular-Validierung wird nun mit Hilfe von PHP + AJAX erledigt, anstatt " +"nur JS zu verwenden." + +# @ acf +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Verschiebbare Felder" + +# @ acf +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"Die neue Feld-Gruppen-Funktionalität erlaubt es ein Feld zwischen Gruppen " +"und übergeordneten Gruppen frei zu verschieben." + +# @ acf +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Wir glauben Du wirst die Änderungen in %s lieben." + +# @ acf +#: includes/api/api-helpers.php:1011 +msgid "Thumbnail" +msgstr "Miniaturbild" + +# @ acf +#: includes/api/api-helpers.php:1012 +msgid "Medium" +msgstr "Mittel" + +# @ acf +#: includes/api/api-helpers.php:1013 +msgid "Large" +msgstr "Gross" + +# @ acf +#: includes/api/api-helpers.php:1062 +msgid "Full Size" +msgstr "Volle Grösse" + +# @ acf +#: includes/api/api-helpers.php:1831 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(ohne Titel)" + +# @ acf +#: includes/api/api-helpers.php:3919 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Die Breite des Bildes muss mindestens %dpx sein." + +# @ acf +#: includes/api/api-helpers.php:3924 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Die Breite des Bildes darf %dpx nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:3940 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Die Höhe des Bildes muss mindestens %dpx sein." + +# @ acf +#: includes/api/api-helpers.php:3945 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Die Höhe des Bild darf %dpx nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:3963 +#, php-format +msgid "File size must be at least %s." +msgstr "Die Dateigrösse muss mindestens %s sein." + +# @ acf +#: includes/api/api-helpers.php:3968 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Die Dateigrösse darf %s nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:4002 +#, php-format +msgid "File type must be %s." +msgstr "Der Dateityp muss %s sein." + +# @ acf +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Die vorgenommenen Änderungen gehen verloren wenn diese Seite verlassen wird" + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Auswählen" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "Bearbeiten" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "Aktualisieren" + +# @ acf +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "Zu diesem Beitrag hochgeladen" + +# @ acf +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "Details einblenden" + +# @ acf +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "Details ausblenden" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "Eingeschränkt" + +# @ acf +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "Alle Bilder" + +# @ acf +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "Überprüfung erfolgreich" + +# @ acf +#: includes/assets.php:182 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Überprüfung fehlgeschlagen" + +# @ acf +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "Für 1 Feld ist eine Aktualisierung notwendig" + +# @ acf +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "Für %d Felder ist eine Aktualisierung notwendig" + +# @ acf +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "Sind Sie sicher?" + +# @ acf +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Ja" + +# @ acf +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Nein" + +# @ acf +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:360 +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Remove" +msgstr "Entfernen" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "Abbrechen" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "Hat beliebigen Wert" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "Hat keinen Wert" + +# @ acf +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "Wert entspricht" + +# @ acf +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "Wert entspricht nicht" + +# @ acf +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "Wert entspricht regulärem Ausdruck" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "Wert enthält" + +# @ acf +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "Wert ist grösser als" + +# @ acf +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "Wert ist geringer als" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "Die Auswahl ist grösser als" + +# @ acf +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "Auswahl ist geringer als" + +# @ acf +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "Feld-Gruppen bearbeiten" + +# @ acf +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Feld-Typ existiert nicht" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Unbekannt" + +# @ acf +#: includes/fields.php:349 +msgid "Basic" +msgstr "Grundlage" + +# @ acf +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Inhalt" + +# @ acf +#: includes/fields.php:351 +msgid "Choice" +msgstr "Auswahl" + +# @ acf +#: includes/fields.php:352 +msgid "Relational" +msgstr "Relational" + +# @ acf +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +# @ acf +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:567 +#: pro/fields/class-acf-field-flexible-content.php:616 +#: pro/fields/class-acf-field-repeater.php:443 +msgid "Layout" +msgstr "Layout" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Akkordeon" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Offen" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Zeigen Sie dieses Akkordeon geöffnet an, wenn die Seite lädt." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Multi-expandieren" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Lassen Sie dieses Akkordeon öffnen, ohne andere zu schliessen." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Endpunkt" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Definieren Sie einen Endpunkt für das bisherige Akkordeon zu stoppen. Dieses " +"Akkordeon wird nicht zu sehen sein." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Button Gruppe" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "Auswahlmöglichkeiten" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "Jede Auswahlmöglichkeit in separater Zeile eingeben." + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Für eine bessere Darstellung, kannst Du auch einen Wert und dazu dessen " +"Beschriftung definieren:" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "rot : Rot" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "NULL-Werte zulassen?" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "Standardwert" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "Erscheint bei der Erstellung eines neuen Beitrags" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Horizontal" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Vertikal" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Rückgabewert" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Legt den Rückgabewert für das Front-End fest" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "Wert" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "Beide (Array)" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "Checkbox" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Alle auswählen" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Neue Auswahlmöglichkeit hinzufügen" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Erlaube benutzerdefinierte Felder" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Erlaube das Hinzufügen benutzerdefinierter Werte" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Benutzerdefinierte Werte sichern" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "" +"Sichere benutzerdefinierte Werte zu den Auswahlmöglichkeiten des Feldes" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "Jeden Standardwert in einer neuen Zeile eingeben" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Auswählen" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" +"Hänge eine zusätzliche Checkbox an mit der man alle Optionen auswählen kann" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Farbe" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Leeren" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Standard" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Farbe auswählen" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Aktuelle Farbe" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Datum" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Schliessen" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Heute" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Weiter" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Zurück" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "KW" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Darstellungs-Format" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Das Datums-Format für die Anzeige in der Bearbeitungs-Ansicht" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Benutzerdefiniert:" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "Format sichern" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "Das verwendete Format, wenn der Wert gesichert wird" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +msgid "Return Format" +msgstr "Rückgabewert" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Das Datums-Format für die Ausgabe in den Template-Funktionen" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "Die Woche beginnt am" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Datum/Uhrzeit" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Zeit setzen" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Zeit" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Stunde" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minute" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Sekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Millisekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Zeitzone" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Jetzt" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Schliessen" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Auswählen" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +# @ acf +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "E-Mail" + +# @ acf +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Platzhalter-Text" + +# @ acf +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Platzhalter-Text solange keine Eingabe im Feld vorgenommen wurde" + +# @ acf +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Voranstellen" + +# @ acf +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Wird dem Eingabefeld vorangestellt" + +# @ acf +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Anhängen" + +# @ acf +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Wird dem Eingabefeld hinten angestellt" + +# @ acf +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Datei" + +# @ acf +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Datei bearbeiten" + +# @ acf +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Datei aktualisieren" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Dateiname" + +# @ acf +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:708 +#: pro/fields/class-acf-field-gallery.php:737 +msgid "File size" +msgstr "Dateigrösse" + +# @ acf +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Datei hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Datei-Array" + +# @ acf +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "Datei-URL" + +# @ acf +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "Datei-ID" + +# @ acf +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:673 +msgid "Library" +msgstr "Medienübersicht" + +# @ acf +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:674 +msgid "Limit the media library choice" +msgstr "Beschränkt die Auswahl in der Medienübersicht" + +# @ acf +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:679 +msgid "All" +msgstr "Alle" + +# @ acf +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:680 +msgid "Uploaded to post" +msgstr "Für den Beitrag hochgeladen" + +# @ acf +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:687 +msgid "Minimum" +msgstr "Minimum" + +# @ acf +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "" +"Erlaubt nur das Hochladen von Dateien die die angegebenen Eigenschaften " +"erfüllen" + +# @ acf +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:716 +msgid "Maximum" +msgstr "Maximum" + +# @ acf +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:745 +msgid "Allowed file types" +msgstr "Erlaubte Datei-Formate" + +# @ acf +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:746 +msgid "Comma separated list. Leave blank for all types" +msgstr "" +"Komma separierte Liste; ein leeres Feld bedeutet alle Dateiformate sind " +"erlaubt" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google Maps" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Dieser Browser unterstützt keine Geo-Lokation" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "Position löschen" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "Aktuelle Position finden" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "Nach der Adresse suchen..." + +# @ acf +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "Kartenmittelpunkt" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "Der Mittelpunkt der Ausgangskarte" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "Zoom" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "Legt die Zoomstufe der Karte fest" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:699 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Height" +msgstr "Höhe" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "Passt die Höhe der Karte an" + +# @ acf +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Gruppe" + +# @ acf +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:379 +msgid "Sub Fields" +msgstr "Wiederholungsfelder" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Gib an, wie die ausgewählten Felder angezeigt werden sollen" + +# @ acf +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:627 +#: pro/fields/class-acf-field-repeater.php:451 +msgid "Block" +msgstr "Block" + +# @ acf +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:626 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Table" +msgstr "Tabelle" + +# @ acf +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:452 +msgid "Row" +msgstr "Reihe" + +# @ acf +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Bild" + +# @ acf +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "Bild auswählen" + +# @ acf +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "Bild bearbeiten" + +# @ acf +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "Bild aktualisieren" + +# @ acf +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "Kein Bild ausgewählt" + +# @ acf +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "Bild hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "Bild-Array" + +# @ acf +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "Bild-URL" + +# @ acf +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "Bild-ID" + +# @ acf +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "Masse der Vorschau" + +# @ acf +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "Legt fest welche Masse die Vorschau in der Bearbeitungs-Ansicht hat" + +# @ acf +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Restrict which images can be uploaded" +msgstr "" +"Erlaubt nur das Hochladen von Bildern, die die angegebenen Eigenschaften " +"erfüllen" + +# @ acf +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:691 +#: pro/fields/class-acf-field-gallery.php:720 +msgid "Width" +msgstr "Breite" + +# @ acf +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Link" + +# @ acf +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Link auswählen" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Öffnet in einem neuen Fenster/Tab" + +# @ acf +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Link Array" + +# @ acf +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "Link URL" + +# @ acf +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Nachricht" + +# @ acf +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Neue Zeilen" + +# @ acf +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Legt fest wie Zeilenumbrüche gehandhabt werden" + +# @ acf +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Absätze automatisch hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Zeilenumbrüche ( <br> ) automatisch hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Keine Formatierung" + +# @ acf +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "HTML enkodieren" + +# @ acf +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" +"Bei aktiver Option wird HTML Code als solcher angezeigt und nicht " +"interpretiert" + +# @ acf +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Numerisch" + +# @ acf +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "Mindestwert" + +# @ acf +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "Maximalwert" + +# @ acf +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Schrittweite" + +# @ acf +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Wert muss eine Zahl sein" + +# @ acf +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Wert muss grösser oder gleich %d sein" + +# @ acf +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Wert muss kleiner oder gleich %d sein" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "URL eingeben" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Masse" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Seiten-Link" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archive" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Eltern" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "Nach Post Types filtern" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "Alle verfügbaren Post Types" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "Nach Taxonomien filtern" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "Alle Taxonomien" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Archiv URLs erlauben" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "Mehrere Werte auswählbar?" + +# @ acf +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Passwort" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "Beitrags-Objekt" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "Beitrags-ID" + +# @ acf +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Radio-Button" + +# @ acf +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Sonstige" + +# @ acf +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "" +"Fügt die Option 'Sonstige' hinzu, welche erlaubt, benutzerdefinierte Werte " +"hinzuzufügen" + +# @ acf +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "'Sonstige' speichern" + +# @ acf +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Füge 'Sonstige'-Werte zu den Auswahl Optionen hinzu" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Range" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Beziehung" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "Maximum der Einträge mit ({max} Einträge) erreicht" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "Lade" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Keine Übereinstimmung gefunden" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "Beitrag-Typ auswählen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "Taxonomie auswählen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "Suchen..." + +# @ acf +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "Filter" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Beitrags-Typ" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taxonomie" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "Elemente" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "Die ausgewählten Elemente werden in jedem Ergebnis mit angezeigt" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "Min. Anzahl der Beiträge" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "Max. Anzahl der Beiträge" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:818 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s benötigt mindestens %s Selektion" +msgstr[1] "%s benötigt mindestens %s Selektionen" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Auswahlmenü" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Ein Resultat gefunden, mit Enter auswählen." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d Resultate gefunden, benutze die Pfeiltasten um zu navigieren." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Keine Übereinstimmungen gefunden" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Bitte eins oder mehrere Zeichen eingeben" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Bitte %d mehr Zeichen eingeben" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Bitte ein Zeichen löschen" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Bitte %d Zeichen löschen" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Du kannst du ein Resultat wählen" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Du kannst nur %d Resultate auswählen" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Lade weitere Resultate…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Suche…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Fehler beim Laden" + +# @ acf +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Modernes Auswahlfeld" + +# @ acf +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "AJAX zum Laden der Einträge aktivieren?" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "Rückgabewert festlegen" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Trennelement" + +# @ acf +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Tab" + +# @ acf +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Platzierung Tabs" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Definiert einen Endpunkt an dem die vorangegangenen Tabs enden. Das ist der " +"Startpunkt für eine neue Gruppe an Tabs." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Keine %s" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Wähle die Taxonomie, welche angezeigt werden soll" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Anzeige" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Wähle das Aussehen für dieses Feld" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Mehrere Werte" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Auswahlmenü" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Einzelne Werte" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Radio Button" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Neue Einträge erlauben" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Erlaube das Erstellen neuer Einträge beim Editieren" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Einträge speichern" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "Speichert die ausgewählten Einträge auch im Beitrag" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Einträge laden" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Den Wert von den Einträgen des Beitrags laden" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Begriffs-Objekt" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "Begriffs-ID" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "Der Benutzer kann keine neue %s hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s ist bereits vorhanden" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s hinzugefügt" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Text einzeilig" + +# @ acf +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Zeichenbegrenzung" + +# @ acf +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Ein leeres Eingabefeld bedeutet keine Begrenzung" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Text mehrzeilig" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Zeilenanzahl" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Definiert die Höhe des Textfelds" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Uhrzeit" + +# @ acf +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Ja/Nein" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Zeigt Text neben der Checkbox" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Wenn aktiv" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Angezeigter Text im aktiven Zustand" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Wenn inaktiv" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Angezeigter Text im inaktiven Zustand" + +# @ acf +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "URL" + +# @ acf +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Bitte eine gültige URL eingeben" + +# @ acf +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Benutzer" + +# @ acf +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "Filtere nach Benutzerrollen" + +# @ acf +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "Alle Benutzerrollen" + +# @ acf +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "Benutzer-Array" + +# @ acf +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "Benutzer-Objekt" + +# @ acf +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "Benutzer ID" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "WYSIWYG-Editor" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Visuell" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "Klicken um TinyMCE zu initialisieren" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "Tabs" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Visuell & Text" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Nur Visuell" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Nur Text" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "Werkzeugleiste" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "Button zum Hochladen von Medien anzeigen?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "Initialisierung verzögern?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE wird nicht initialisiert bis das Feld geklickt wird" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "E-Mail bestätigen" + +# @ acf +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:591 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Aktualisieren" + +# @ acf +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Beitrag aktualisiert" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Spam erkannt" + +# @ acf +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Beitrag" + +# @ acf +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Seite" + +# @ acf +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulare" + +# @ acf +#: includes/locations.php:243 +msgid "is equal to" +msgstr "ist gleich" + +# @ acf +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "ist ungleich" + +# @ acf +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Dateianhang" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Alle %s Formate" + +# @ acf +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Kommentar" + +# @ acf +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Aktuelle Benutzer-Rolle" + +# @ acf +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super-Admin" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Aktueller Benutzer" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Ist angemeldet" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Ist im Front-End" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Ist im Back-End" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Menüelement" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menü" + +# @ acf +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Menüpositionen" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menüs" + +# @ acf +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Übergeordnete Seite" + +# @ acf +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Seiten-Template" + +# @ acf +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Standard-Template" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Seitentyp" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Startseite" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Beitrags-Seite" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Seite ohne übergeordnete Seiten" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Übergeordnete Seite (mit Unterseiten)" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Unterseite (mit übergeordneter Seite)" + +# @ acf +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Beitrags-Kategorie" + +# @ acf +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Beitrags-Format" + +# @ acf +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Beitrags-Status" + +# @ acf +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Beitrags-Taxonomie" + +# @ acf +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Beitrags-Vorlage" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Benutzer-Formular" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Hinzufügen / Bearbeiten" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registrieren" + +# @ acf +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Benutzerrolle" + +# @ acf +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +# @ acf +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s Wert ist notwendig" + +# @ acf +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +# @ acf +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "Veröffentlichen" + +# @ acf +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Keine Feld-Gruppen für die Options-Seite gefunden. Erstelle " +"eine Feld-Gruppe" + +# @ acf +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr "" +"Fehler. Verbindung zum Update-Server konnte nicht hergestellt werden" + +# @ acf +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Aktualisierungen" + +#: pro/admin/admin-updates.php:191 +msgid "" +"Error. Could not authenticate update package. Please check again or " +"deactivate and reactivate your ACF PRO license." +msgstr "" +"Fehler. Konnte das Update-Paket nicht authentifizieren. Bitte " +"überprüfen Sie noch einmal oder reaktivieren Sie Ihre ACF PRO-Lizenz." + +# @ acf +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Lizenz deaktivieren" + +# @ acf +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Lizenz aktivieren" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Lizenzinformationen" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Bitte gib unten deinen Lizenzschlüssel ein, um Updates freizuschalten. " +"Solltest du keinen Lizenzschlüssel haben, findest du hier Details & Preise." + +# @ acf +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Lizenzschlüssel" + +# @ acf +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Aktualisierungsinformationen" + +# @ acf +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Installierte Version" + +# @ acf +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Aktuellste Version" + +# @ acf +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Aktualisierung verfügbar" + +# @ acf +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Plugin aktualisieren" + +# @ acf +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "" +"Bitte gib oben Deinen Lizenzschlüssel ein um die Update-Fähigkeit " +"freizuschalten" + +# @ acf +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Erneut suchen" + +# @ acf +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Aktualisierungs-Hinweis" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Klonen" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Wähle eines oder mehrere Felder aus, das/die du klonen willst" + +# @ acf +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Anzeige" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Gib an, wie die geklonten Felder ausgegeben werden sollen" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Gruppe (zeigt die ausgewählten Felder in einer Gruppe innerhalb dieses Felds " +"an)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Nahtlos (ersetzt dieses Feld mit den ausgewählten Feldern)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Bezeichnungen werden angezeigt als %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Präfix für Feld Bezeichnungen" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Werte werden gespeichert als %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Präfix für Feld Namen" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Unbekanntes Feld" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Unbekannte Feld-Gruppe" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Alle Felder der %s Feld-Gruppe" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:463 +msgid "Add Row" +msgstr "Eintrag hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:938 +#: pro/fields/class-acf-field-flexible-content.php:1020 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "Layout" +msgstr[1] "Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "Einträge" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:937 +#: pro/fields/class-acf-field-flexible-content.php:1019 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Dieses Feld erfordert mindestens {min} {label} {identifier}" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Dieses Feld erlaubt höchstens {max} {label} {identifier}" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} möglich (max {max})" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} erforderlich (min {min})" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Flexibler Inhalt benötigt mindestens ein Layout" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:302 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Klicke \"%s\" zum Erstellen des Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:427 +msgid "Add layout" +msgstr "Layout hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:428 +msgid "Remove layout" +msgstr "Layout entfernen" + +#: pro/fields/class-acf-field-flexible-content.php:429 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Click to toggle" +msgstr "Zum Auswählen anklicken" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder Layout" +msgstr "Layout sortieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder" +msgstr "Sortieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete Layout" +msgstr "Layout löschen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate Layout" +msgstr "Layout duplizieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New Layout" +msgstr "Neues Layout hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:643 +msgid "Min" +msgstr "Min" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:656 +msgid "Max" +msgstr "Max" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:683 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Button Label" +msgstr "Button-Beschriftung" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:692 +msgid "Minimum Layouts" +msgstr "Minimum Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:701 +msgid "Maximum Layouts" +msgstr "Maximum Layouts" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "Bild zur Galerie hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "Maximale Auswahl erreicht" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:338 +msgid "Length" +msgstr "Länge" + +#: pro/fields/class-acf-field-gallery.php:381 +msgid "Caption" +msgstr "Beschriftung" + +#: pro/fields/class-acf-field-gallery.php:390 +msgid "Alt Text" +msgstr "Alt Text" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:562 +msgid "Add to gallery" +msgstr "Zur Galerie hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Bulk actions" +msgstr "Massenverarbeitung" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Sort by date uploaded" +msgstr "Sortiere nach Upload-Datum" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:568 +msgid "Sort by date modified" +msgstr "Sortiere nach Änderungs-Datum" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:569 +msgid "Sort by title" +msgstr "Sortiere nach Titel" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Reverse current order" +msgstr "Aktuelle Sortierung umkehren" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:588 +msgid "Close" +msgstr "Schliessen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum Selection" +msgstr "Minimale Auswahl" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:651 +msgid "Maximum Selection" +msgstr "Maximale Auswahl" + +#: pro/fields/class-acf-field-gallery.php:660 +msgid "Insert" +msgstr "Einfügen" + +#: pro/fields/class-acf-field-gallery.php:661 +msgid "Specify where new attachments are added" +msgstr "Gib an, wo neue Anhänge eingefügt werden sollen" + +#: pro/fields/class-acf-field-gallery.php:665 +msgid "Append to the end" +msgstr "Am Schluss anhängen" + +#: pro/fields/class-acf-field-gallery.php:666 +msgid "Prepend to the beginning" +msgstr "Vor Beginn einfügen" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:656 +msgid "Minimum rows reached ({min} rows)" +msgstr "Minimum der Einträge mit ({min} Reihen) erreicht" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "Maximum der Einträge mit ({max} Reihen) erreicht" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:333 +msgid "Add row" +msgstr "Eintrag hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:334 +msgid "Remove row" +msgstr "Eintrag löschen" + +#: pro/fields/class-acf-field-repeater.php:412 +msgid "Collapsed" +msgstr "Zugeklappt" + +#: pro/fields/class-acf-field-repeater.php:413 +msgid "Select a sub field to show when row is collapsed" +msgstr "" +"Wähle welches der Wiederholungsfelder im zugeklappten Zustand angezeigt " +"werden soll" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:423 +msgid "Minimum Rows" +msgstr "Minimum der Einträge" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:433 +msgid "Maximum Rows" +msgstr "Maximum der Einträge" + +# @ acf +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Keine Options-Seiten vorhanden" + +# @ acf +#: pro/options-page.php:51 +msgid "Options" +msgstr "Optionen" + +# @ acf +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Optionen aktualisiert" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Bitte gib auf der Seite Aktualisierungen deinen " +"Lizenzschlüssel ein, um Updates zu aktivieren. Solltest du keinen " +"Lizenzschlüssel haben, findest du hier Details & Preise." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +# @ acf +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +# @ acf +#~ msgid "Parent fields" +#~ msgstr "Übergeordnete Felder" + +# @ acf +#~ msgid "Sibling fields" +#~ msgstr "Geschwister-Felder" + +# @ acf +#~ msgid "%s field group duplicated." +#~ msgid_plural "%s field groups duplicated." +#~ msgstr[0] "%s Feld-Gruppe dupliziert." +#~ msgstr[1] "%s Feld-Gruppen dupliziert." + +# @ acf +#~ msgid "%s field group synchronised." +#~ msgid_plural "%s field groups synchronised." +#~ msgstr[0] "%s Feld-Gruppe synchronisiert." +#~ msgstr[1] "%s Feld-Gruppen synchronisiert." + +#~ msgid "Error validating request" +#~ msgstr "Fehler beim Überprüfen der Anfrage" + +# @ acf +#~ msgid "Error. Could not load add-ons list" +#~ msgstr "" +#~ "Fehler. Die Liste der Zusatz-Module kann nicht geladen werden" + +# @ acf +#~ msgid "Advanced Custom Fields Database Upgrade" +#~ msgstr "Advanced Custom Fields Datenbank Aktualisierung" + +# @ acf +#~ msgid "" +#~ "Before you start using the new awesome features, please update your " +#~ "database to the newest version." +#~ msgstr "" +#~ "Bevor Du die tollen neuen Funktionen nutzen kannst muss die Datenbank " +#~ "aktualisiert werden." + +# @ acf +#~ msgid "" +#~ "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +#~ msgstr "" +#~ "Wir haben den Aktualisierungsprozess so einfach wie möglich gehalten; melde Dich mit Deinem Store-Account an und fordere ein " +#~ "Gratisexemplar von ACF PRO an!" + +# @ acf +#~ msgid "Under the Hood" +#~ msgstr "Unter der Haube" + +# @ acf +#~ msgid "Smarter field settings" +#~ msgstr "Intelligentere Feld-Einstellungen" + +# @ acf +#~ msgid "ACF now saves its field settings as individual post objects" +#~ msgstr "" +#~ "ACF speichert nun die Feld-Einstellungen als individuelle Beitrags-Objekte" + +# @ acf +#~ msgid "Better version control" +#~ msgstr "Verbesserte Versionskontrolle" + +# @ acf +#~ msgid "" +#~ "New auto export to JSON feature allows field settings to be version " +#~ "controlled" +#~ msgstr "" +#~ "Die neue JSON Export Funktionalität erlaubt die Versionskontrolle von " +#~ "Feld-Einstellungen" + +# @ acf +#~ msgid "Swapped XML for JSON" +#~ msgstr "JSON ersetzt XML" + +# @ acf +#~ msgid "Import / Export now uses JSON in favour of XML" +#~ msgstr "Das Import- und Export-Modul nutzt nun JSON anstelle XML" + +# @ acf +#~ msgid "New Forms" +#~ msgstr "Neue Formulare" + +# @ acf +#~ msgid "A new field for embedding content has been added" +#~ msgstr "Ein neues Feld für das Einbetten von Inhalten wurde hinzugefügt" + +# @ acf +#~ msgid "New Gallery" +#~ msgstr "Neue Galerie" + +# @ acf +#~ msgid "The gallery field has undergone a much needed facelift" +#~ msgstr "" +#~ "Das Galerie-Feld wurde einem längst überfälligen Face-Lifting unterzogen" + +# @ acf +#~ msgid "Relationship Field" +#~ msgstr "Beziehungs-Feld" + +# @ acf +#~ msgid "" +#~ "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +#~ msgstr "" +#~ "Neue Einstellungen innerhalb des Beziehungs-Feldes um nach Suche, " +#~ "Beitrags-Typ und oder Taxonomie filtern zu können" + +# @ acf +#~ msgid "New archives group in page_link field selection" +#~ msgstr "" +#~ "Im neuen Seitenlink-Feld werden alle Archiv-URL's der verfügbaren Custom " +#~ "Post Types in einer Options-Gruppe zusammengefasst" + +# @ acf +#~ msgid "Better Options Pages" +#~ msgstr "Verbesserte Options-Seiten" + +# @ acf +#~ msgid "" +#~ "New functions for options page allow creation of both parent and child " +#~ "menu pages" +#~ msgstr "" +#~ "Neue Funktionen für die Options-Seite erlauben die Erstellung von Menüs " +#~ "für übergeordnete Seiten sowie Unterseiten" + +# @ acf +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Exportieren der Feld-Gruppen nach PHP" + +# @ acf +#~ msgid "Download export file" +#~ msgstr "JSON-Datei exportieren" + +# @ acf +#~ msgid "Generate export code" +#~ msgstr "Erstelle PHP-Code" + +# @ acf +#~ msgid "Import" +#~ msgstr "Importieren" + +# @ acf +#~ msgid "Locating" +#~ msgstr "Lokalisiere" + +#~ msgid "Error." +#~ msgstr "Fehler." + +# @ acf +#~ msgid "No embed found for the given URL." +#~ msgstr "Keine Inhalte für die eingegebene URL gefunden." + +# @ acf +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "Minimum der Einträge mit ({min} Einträge) erreicht" + +# @ acf +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Ein Tab-Feld wird nicht korrekt dargestellt, wenn es zu einem " +#~ "Wiederholung- oder Flexible-Inhalte-Feld im Tabellen-Layout eingebunden " +#~ "ist" + +# @ acf +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "Mit \"Tab Feldern\" können Felder für eine bessere Struktur im Editor in " +#~ "Tabs zusammengefasst werden." + +# @ acf +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Alle Felder, die auf dieses \"Tab Feld\" folgen (oder bis ein weiteres " +#~ "\"Tab Feld\" definiert ist), werden in einem Tab mit dem Namen dieses " +#~ "Felds zusammengefasst." + +# @ acf +#~ msgid "None" +#~ msgstr "Nur Text" + +# @ acf +#~ msgid "Taxonomy Term" +#~ msgstr "Taxonomie" + +# @ acf +#~ msgid "remove {layout}?" +#~ msgstr "{layout} löschen?" + +# @ acf +#~ msgid "This field requires at least {min} {identifier}" +#~ msgstr "Dieses Feld erfordert mindestens {min} {identifier}" + +# @ acf +#~ msgid "Maximum {label} limit reached ({max} {identifier})" +#~ msgstr "Maximale {label}-Anzahl erreicht ({max} {identifier})" + +# @ acf +#~ msgid "Getting Started" +#~ msgstr "Erste Schritte" + +# @ acf +#~ msgid "Field Types" +#~ msgstr "Feld-Typen" + +# @ acf +#~ msgid "Functions" +#~ msgstr "Funktionen" + +# @ acf +#~ msgid "Actions" +#~ msgstr "Aktionen" + +#~ msgid "How to" +#~ msgstr "Kurzanleitungen" + +# @ acf +#~ msgid "Tutorials" +#~ msgstr "Tutorials" + +#~ msgid "FAQ" +#~ msgstr "FAQ" + +#~ msgid "Term meta upgrade not possible (termmeta table does not exist)" +#~ msgstr "" +#~ "Begriff Meta-Upgrade nicht möglich (termmeta Tabelle nicht existiert)" + +# @ acf +#~ msgid "Error" +#~ msgstr "Fehler" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "Für 1 Feld ist eine Aktualisierung notwendig" +#~ msgstr[1] "Für %d Felder ist eine Aktualisierung notwendig" + +#~ msgid "" +#~ "Error validating ACF PRO license URL (website does not match). Please re-" +#~ "activate your license" +#~ msgstr "" +#~ "Fehler bei der Validierung der ACF PRO Lizenz URL (Webseite stimmt nicht " +#~ "überein). Bitte Lizenz reaktivieren" + +#~ msgid "Disabled" +#~ msgstr "Deaktiviert" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Deaktiviert (%s)" +#~ msgstr[1] "Deaktiviert (%s)" + +# @ acf +#~ msgid "'How to' guides" +#~ msgstr "Kurzanleitungen" + +# @ acf +#~ msgid "Created by" +#~ msgstr "Erstellt von" + +#~ msgid "Error loading update" +#~ msgstr "Fehler beim Laden des Update" + +# @ acf +#~ msgid "See what's new" +#~ msgstr "Was ist neu" + +# @ acf +#~ msgid "eg. Show extra content" +#~ msgstr "z.B. Zeige zusätzliche Inhalte" + +#~ msgid "" +#~ "Error validating license URL (website does not match). Please re-activate " +#~ "your license" +#~ msgstr "" +#~ "Fehler bei der Überprüfung der Lizenz URL (Webseite stimmt nicht " +#~ "überein). Bitte reaktiviere deine Lizenz" + +# @ acf +#~ msgid "Select" +#~ msgstr "Auswählen" + +# @ acf +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "" +#~ "Verbindungsfehler. Entschuldige, versuche es bitte später noch " +#~ "einmal" + +# @ acf +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "Erfolgreich. Der Import hat %s Feld-Gruppen hinzugefügt: %s" + +# @ acf +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Warnung. Der Import hat %s Feld-Gruppen erkannt, die schon " +#~ "vorhanden sind und diese ignoriert: %s" + +# @ acf +#~ msgid "Upgrade ACF" +#~ msgstr "Aktualisiere ACF" + +# @ acf +#~ msgid "Upgrade" +#~ msgstr "Aktualisieren" + +# @ acf +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to " +#~ "update and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "Die folgenden Seiten erfordern eine Datenbank-Aktualisierung. Markiere " +#~ "die gewünschten Seiten und klicke \\\"Aktualisiere Datenbank\\\"." + +# @ acf +#~ msgid "Done" +#~ msgstr "Fertig" + +# @ acf +#~ msgid "Today" +#~ msgstr "Heute" + +# @ acf +#~ msgid "Show a different month" +#~ msgstr "Zeige einen anderen Monat" + +# @ acf +#~ msgid "See what's new in" +#~ msgstr "Neuerungen in" + +# @ acf +#~ msgid "version" +#~ msgstr "Version" + +#~ msgid "Upgrading data to" +#~ msgstr "Aktualisiere Daten auf" + +# @ acf +#~ msgid "Return format" +#~ msgstr "Rückgabe-Format" + +# @ acf +#~ msgid "uploaded to this post" +#~ msgstr "zu diesem Beitrag hochgeladen" + +# @ acf +#~ msgid "File Name" +#~ msgstr "Dateiname" + +# @ acf +#~ msgid "File Size" +#~ msgstr "Dateigrösse" + +# @ acf +#~ msgid "No File selected" +#~ msgstr "Keine Datei ausgewählt" + +# @ acf +#~ msgid "Save Options" +#~ msgstr "Optionen speichern" + +# @ acf +#~ msgid "License" +#~ msgstr "Lizenz" + +# @ acf +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Um die Aktualisierungs-Fähigkeit freizuschalten, trage bitte Deinen " +#~ "Lizenzschlüssel im darunterliegenden Feld ein. Solltest Du noch keinen " +#~ "Lizenzschlüssel besitzen, informiere Dich bitte hier über die" + +# @ acf +#~ msgid "details & pricing" +#~ msgstr "Details und Preise." + +# @ acf +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "Um die Aktualisierungen freizuschalten, trage bitte Deinen " +#~ "Lizenzschlüssel auf der Aktualisierungen-Seite ein. " +#~ "Solltest Du noch keinen Lizenzschlüssel besitzen, informiere Dich bitte " +#~ "hier über die Details und Preise" + +# @ acf +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +# @ acf +#~ msgid "http://www.advancedcustomfields.com/" +#~ msgstr "http://www.advancedcustomfields.com/" + +# @ acf +#~ msgid "elliot condon" +#~ msgstr "elliot condon" + +# @ acf +#~ msgid "Drag and drop to reorder" +#~ msgstr "Mittels Drag-and-Drop die Reihenfolge ändern" + +# @ acf +#~ msgid "Add new %s " +#~ msgstr "Neue %s " + +#~ msgid "Sync Available" +#~ msgstr "Synchronisierung verfügbar" + +# @ acf +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "Bitte beachte, dass der gesamte Text zuerst durch eine WordPress Funktion " +#~ "gefiltert wird. Siehe: " + +# @ acf +#~ msgid "Warning" +#~ msgstr "Warnung" + +# @ acf +#~ msgid "Show Field Keys" +#~ msgstr "Zeige Feld-Schlüssel" + +# @ acf +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "" +#~ "Felder-Gruppen werden nach diesem Wert sortiert, vom niedrigsten zum " +#~ "höchsten Wert." + +# @ acf +#~ msgid "Hide / Show All" +#~ msgstr "Alle Verstecken" + +# @ acf +#~ msgid "5.2.6" +#~ msgstr "5.2.6" + +# @ acf +#~ msgid "Sync Terms" +#~ msgstr "Einträge synchronisieren" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-de_DE.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-de_DE.mo new file mode 100755 index 0000000000000000000000000000000000000000..b27aaeff6d60efe713826e4127d4fdad494c0b7e GIT binary patch literal 53663 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\n" +"Language-Team: Ralf Koller \n" +"Language: de_DE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.2.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +# @ acf +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +# @ acf +#: acf.php:363 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "Feldgruppen" + +# @ acf +#: acf.php:364 +msgid "Field Group" +msgstr "Feldgruppe" + +# @ acf +#: acf.php:365 acf.php:397 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New" +msgstr "Erstellen" + +# @ acf +#: acf.php:366 +msgid "Add New Field Group" +msgstr "Neue Feldgruppe erstellen" + +# @ acf +#: acf.php:367 +msgid "Edit Field Group" +msgstr "Feldgruppe bearbeiten" + +# @ acf +#: acf.php:368 +msgid "New Field Group" +msgstr "Neue Feldgruppe" + +# @ acf +#: acf.php:369 +msgid "View Field Group" +msgstr "Feldgruppe anzeigen" + +# @ acf +#: acf.php:370 +msgid "Search Field Groups" +msgstr "Feldgruppen durchsuchen" + +# @ acf +#: acf.php:371 +msgid "No Field Groups found" +msgstr "Keine Feldgruppen gefunden" + +# @ acf +#: acf.php:372 +msgid "No Field Groups found in Trash" +msgstr "Keine Feldgruppen im Papierkorb gefunden" + +# @ acf +#: acf.php:395 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:530 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Felder" + +# @ acf +#: acf.php:396 +msgid "Field" +msgstr "Feld" + +# @ acf +#: acf.php:398 +msgid "Add New Field" +msgstr "Feld hinzufügen" + +# @ acf +#: acf.php:399 +msgid "Edit Field" +msgstr "Feld bearbeiten" + +# @ acf +#: acf.php:400 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Neues Feld" + +# @ acf +#: acf.php:401 +msgid "View Field" +msgstr "Feld anzeigen" + +# @ acf +#: acf.php:402 +msgid "Search Fields" +msgstr "Felder suchen" + +# @ acf +#: acf.php:403 +msgid "No Fields found" +msgstr "Keine Felder gefunden" + +# @ acf +#: acf.php:404 +msgid "No Fields found in Trash" +msgstr "Keine Felder im Papierkorb gefunden" + +#: acf.php:443 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:587 +msgid "Inactive" +msgstr "Inaktiv" + +#: acf.php:448 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inaktiv (%s)" +msgstr[1] "Inaktiv (%s)" + +# @ acf +#: includes/acf-field-functions.php:828 +#: includes/admin/admin-field-group.php:178 +msgid "(no label)" +msgstr "(keine Beschriftung)" + +# @ acf +#: includes/acf-field-group-functions.php:816 +#: includes/admin/admin-field-group.php:180 +msgid "copy" +msgstr "Kopie" + +# @ acf +#: includes/admin/admin-field-group.php:86 +#: includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "Feldgruppe aktualisiert." + +# @ acf +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "Feldgruppe gelöscht." + +# @ acf +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "Feldgruppe veröffentlicht." + +# @ acf +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "Feldgruppe gespeichert." + +# @ acf +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "Feldgruppe übertragen." + +# @ acf +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "Feldgruppe geplant für." + +# @ acf +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "Entwurf der Feldgruppe aktualisiert." + +# @ acf +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Der Feldname darf nicht mit \"field_\" beginnen" + +# @ acf +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "" +"Diese Feld kann erst verschoben werden, wenn die Änderungen gespeichert " +"wurden" + +# @ acf +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "Es ist ein Titel für die Feldgruppe erforderlich" + +# @ acf +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "Wirklich in den Papierkorb verschieben?" + +# @ acf +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "Es liegen keine Auswahl-Feldtypen vor" + +# @ acf +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "Individuelles Feld verschieben" + +# @ acf +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "Ausgewählt" + +# @ acf +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "(dieses Feld)" + +# @ acf +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3862 +msgid "or" +msgstr "oder" + +# @ acf +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "Null" + +# @ acf +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "Position" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Einstellungen" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "Feldschlüssel" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Aktiviert" + +# @ acf +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "Verschieben erfolgreich abgeschlossen." + +# @ acf +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Das Feld \"%s\" wurde in die %s Feldgruppe verschoben" + +# @ acf +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "Schließen" + +# @ acf +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "In welche Feldgruppe solle dieses Feld verschoben werden" + +# @ acf +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "Feld verschieben" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Veröffentlicht (%s)" +msgstr[1] "Veröffentlicht (%s)" + +# @ acf +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Feldgruppe dupliziert." +msgstr[1] "%s Feldgruppen dupliziert." + +# @ acf +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "Field group synchronised." +msgstr[1] "%s Feldgruppen synchronisiert." + +# @ acf +#: includes/admin/admin-field-groups.php:414 +#: includes/admin/admin-field-groups.php:577 +msgid "Sync available" +msgstr "Synchronisierung verfügbar" + +# @ acf +#: includes/admin/admin-field-groups.php:527 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:372 +msgid "Title" +msgstr "Titel" + +# @ acf +#: includes/admin/admin-field-groups.php:528 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:399 +msgid "Description" +msgstr "Beschreibung" + +#: includes/admin/admin-field-groups.php:529 +msgid "Status" +msgstr "Status" + +# @ acf +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "" +"WordPress durch leistungsfähige, professionelle und zugleich intuitive " +"Felder erweitern." + +# @ acf +#: includes/admin/admin-field-groups.php:628 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Änderungsprotokoll" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in version %s." +msgstr "Schau nach was es Neues in Version %s gibt." + +# @ acf +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "Dokumentation (engl.)" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "Website" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "Dokumentation" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "Hilfe" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Danke für das Vertrauen in ACF." + +# @ acf +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "Dieses Element duplizieren" + +# @ acf +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate" +msgstr "Duplizieren" + +# @ acf +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "Suchen" + +# @ acf +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "%s auswählen" + +# @ acf +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "Synchronisiere Feldgruppe" + +# @ acf +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "Synchronisieren" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "Anwenden" + +# @ acf +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "Massenverarbeitung" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Werkzeuge" + +# @ acf +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Datenbank upgraden" + +# @ acf +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Übersicht Websites & Upgrades" + +# @ acf +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "Individuelle Felder" + +# @ acf +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Info" + +# @ acf +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Was gibt es Neues" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Feldgruppen exportieren" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "PHP erstellen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Keine Feldgruppen ausgewählt" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Eine Feldgruppe wurde exportiert." +msgstr[1] "%s Feldgruppen wurden exportiert." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Feldgruppen auswählen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Entscheide welche Feldgruppen Du exportieren möchtest und wähle dann das " +"Exportformat. Benutze den \"Datei exportieren\"-Button, um eine JSON-Datei " +"zu generieren, welche Du im Anschluss in eine andere ACF-Installation " +"importieren kannst. Verwende den \"PHP erstellen“-Button, um den " +"resultierenden PHP-Code in dein Theme einfügen zu können." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Datei exportieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Der nachfolgende Code kann dazu verwendet werden eine lokale Version der " +"ausgewählten Feldgruppe(n) zu registrieren. Eine lokale Feldgruppe bietet " +"viele Vorteile; schnellere Ladezeiten, Versionskontrolle sowie dynamische " +"Felder und Einstellungen. Kopiere einfach folgenden Code und füge ihn in die " +"functions.php oder eine externe Datei in Deinem Theme ein." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "In die Zwischenablage kopieren" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Kopiert" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Feldgruppen importieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:47 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Wähle die Advanced Custom Fields JSON-Datei aus, welche Du importieren " +"möchtest. Nach dem Klicken des „Datei importieren“-Buttons wird ACF die " +"Feldgruppen hinzufügen." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:52 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Datei auswählen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:62 +msgid "Import File" +msgstr "Datei importieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:85 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Keine Datei ausgewählt" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:93 +msgid "Error uploading file. Please try again" +msgstr "Fehler beim Upload der Datei. Bitte erneut versuchen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:98 +msgid "Incorrect file type" +msgstr "Falscher Dateityp" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:107 +msgid "Import file empty" +msgstr "Die importierte Datei ist leer" + +#: includes/admin/tools/class-acf-admin-tool-import.php:138 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Eine Feldgruppe importiert" +msgstr[1] "%s Feldgruppen importiert" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "Bedingungen für die Anzeige" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Zeige dieses Feld, wenn" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "und" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Regelgruppe hinzufügen" + +# @ acf +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:410 +#: pro/fields/class-acf-field-repeater.php:299 +msgid "Drag to reorder" +msgstr "Ziehen zum Sortieren" + +# @ acf +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Feld bearbeiten" + +# @ acf +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:359 +msgid "Edit" +msgstr "Bearbeiten" + +# @ acf +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Feld duplizieren" + +# @ acf +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Feld in eine andere Gruppe verschieben" + +# @ acf +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Verschieben" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Feld löschen" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete" +msgstr "Löschen" + +# @ acf +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Feldbeschriftung" + +# @ acf +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Dieser Name wird in der Bearbeitungsansicht eines Beitrags angezeigt" + +# @ acf +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Feldname" + +# @ acf +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "" +"Einzelnes Wort ohne Leerzeichen. Es sind nur Unter- und Bindestriche als " +"Sonderzeichen erlaubt" + +# @ acf +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Feldtyp" + +# @ acf +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Anweisungen" + +# @ acf +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "" +"Anweisungen für die Autoren. Sie werden in der Bearbeitungsansicht angezeigt" + +# @ acf +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Erforderlich?" + +# @ acf +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Wrapper-Attribute" + +# @ acf +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "Breite" + +# @ acf +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "Klasse" + +# @ acf +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "ID" + +# @ acf +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Feld schließen" + +# @ acf +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Reihenfolge" + +# @ acf +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Beschriftung" + +# @ acf +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Name" +msgstr "Name" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Schlüssel" + +# @ acf +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Typ" + +# @ acf +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Es sind noch keine Felder angelegt. Klicke den + Feld hinzufügen-" +"Button und erstelle Dein erstes Feld." + +# @ acf +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Feld hinzufügen" + +# @ acf +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regeln" + +# @ acf +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Erstelle ein Regelwerk das festlegt welche Bearbeitungsansichten diese " +"Advanced Custom Fields nutzen" + +# @ acf +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stil" + +# @ acf +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "WP-Metabox (Standard)" + +# @ acf +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Übergangslos ohne Metabox" + +# @ acf +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Position" + +# @ acf +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Nach dem Titel vor dem Inhalt" + +# @ acf +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Nach dem Inhalt" + +# @ acf +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Seitlich neben dem Inhalt" + +# @ acf +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Platzierung der Beschriftung" + +# @ acf +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Über dem Feld" + +# @ acf +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Links neben dem Feld" + +# @ acf +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Platzierung der Anweisungen" + +# @ acf +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Unterhalb der Beschriftungen" + +# @ acf +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Unterhalb der Felder" + +# @ acf +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Reihenfolge" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Feldgruppen mit einem niedrigeren Wert werden zuerst angezeigt" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "In der Feldgruppen-Liste anzeigen" + +# @ acf +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "Permalink" + +# @ acf +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "Inhalts-Editor" + +# @ acf +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Textauszug" + +# @ acf +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Diskussion" + +# @ acf +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Kommentare" + +# @ acf +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Revisionen" + +# @ acf +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Titelform" + +# @ acf +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Autor" + +# @ acf +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Format" + +# @ acf +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Seiten-Attribute" + +# @ acf +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "Beitragsbild" + +# @ acf +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Kategorien" + +# @ acf +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Schlagwörter" + +# @ acf +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Sende Trackbacks" + +# @ acf +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Verstecken" + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Wähle die Elemente, welche in der Bearbeitungsansicht " +"verborgen werden sollen." + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Werden in der Bearbeitungsansicht mehrere Feldgruppen angezeigt, werden die " +"Optionen der ersten Feldgruppe verwendet (die mit der niedrigsten Nummer in " +"der Reihe)" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Folgende Websites erfordern ein Upgrade der Datenbank. Markiere die, die du " +"aktualisieren willst und klicke dann %s." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Websites upgraden" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Website" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Die Website erfordert ein Upgrade der Datenbank von %s auf %s" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "Die Website ist aktuell" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Upgrade der Datenbank fertiggestellt. Zum Netzwerk Dashboard" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "Bitte zumindest eine Website zum Upgrade auswählen." + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Es wird dringend empfohlen, dass du deine Datenbank sicherst, bevor Du " +"fortfährst. Bist du sicher, dass du jetzt die Aktualisierung durchführen " +"willst?" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Daten auf Version %s upgraden" + +# @ default +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Upgrade abgeschlossen." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Upgrade fehlgeschlagen." + +# @ acf +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "Aufgaben für das Upgrade einlesen…" + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "" +"Datenbank-Upgrade abgeschlossen. Schau nach was es Neues " +"gibt" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "Keine Aktualisierungen verfügbar." + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "Zurück zur Werkzeugübersicht" + +# @ acf +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Zeige diese Felder, wenn" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Wiederholung" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Flexible Inhalte" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerie" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Options-Seite" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Es ist ein Upgrade der Datenbank erforderlich" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Danke für die Aktualisierung auf %s v%s!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "" +"Die vorliegende Version enthält Verbesserungen für deine Datenbank und " +"erfordert ein Upgrade." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "" +"Stelle bitte ebenfalls sicher, dass alle Premium-Add-ons (%s) auf die " +"neueste Version aktualisiert wurden." + +# @ acf +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Zusatz-Module" + +# @ acf +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Download & Installieren" + +# @ acf +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Installiert" + +# @ acf +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Willkommen bei Advanced Custom Fields" + +# @ acf +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Vielen Dank fürs Aktualisieren! ACF %s ist größer und besser als je zuvor. " +"Wir hoffen es wird dir gefallen." + +# @ acf +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Eine reibungslosere Erfahrung" + +# @ acf +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "Verbesserte Benutzerfreundlichkeit" + +# @ acf +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Durch die Einführung der beliebten Select2 Bibliothek wurde sowohl die " +"Benutzerfreundlichkeit als auch die Geschwindigkeit einiger Feldtypen wie " +"Beitrags-Objekte, Seiten-Links, Taxonomien sowie von Auswahl-Feldern " +"signifikant verbessert." + +# @ acf +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "Verbessertes Design" + +# @ acf +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Viele Felder wurden visuell überarbeitet, damit ACF besser denn je aussieht! " +"Die markantesten Änderungen erfuhren das Galerie-, Beziehungs- sowie das " +"nagelneue oEmbed-Feld!" + +# @ acf +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "Verbesserte Datenstruktur" + +# @ acf +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Die Neugestaltung der Datenarchitektur erlaubt es, dass Unterfelder " +"unabhängig von ihren übergeordneten Feldern existieren können. Dies " +"ermöglicht, dass Felder per Drag-and-Drop, in und aus ihren übergeordneten " +"Feldern verschoben werden können!" + +# @ acf +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Macht's gut Add-ons… Hallo PRO" + +# @ acf +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "Wir dürfen vorstellen… ACF PRO" + +# @ acf +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Wir haben die Art und Weise mit der die Premium-Funktionalität zur Verfügung " +"gestellt wird geändert - das \"wie\" dürfte Dich begeistern!" + +# @ acf +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Alle vier, vormals separat erhältlichen, Premium-Add-ons wurden in der neuen " +"Pro-Version von ACF zusammengefasst. Besagte Premium-" +"Funktionalität, erhältlich in einer Einzel- sowie einer Entwickler-Lizenz, " +"ist somit erschwinglicher denn je!" + +# @ acf +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Leistungsstarke Funktionen" + +# @ acf +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO enthält leistungsstarke Funktionen wie wiederholbare Daten, Flexible " +"Inhalte-Layouts, ein wunderschönes Galerie-Feld sowie die Möglichkeit " +"zusätzliche Options-Seiten im Admin-Bereich zu erstellen!" + +# @ acf +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Lies mehr über die ACF PRO Funktionen." + +# @ acf +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Kinderleichte Aktualisierung" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" +"Das Upgrade auf ACF PRO ist leicht. Einfach online eine Lizenz erwerben und " +"das Plugin herunterladen!" + +# @ acf +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" +"Um möglichen Fragen zu begegnen haben wir haben einen Upgrade-" +"Leitfaden (Engl.) erstellt. Sollten dennoch Fragen auftreten, " +"kontaktiere bitte unser Support-Team ." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Neue Funktionen" + +# @ acf +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "Link-Feld" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"Das Link-Feld bietet einen einfachen Weg um einen Link (URL, Titel, Ziel) " +"entweder auszuwählen oder zu definieren." + +# @ acf +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Gruppen-Feld" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "" +"Das Gruppen-Feld bietet einen einfachen Weg eine Gruppe von Feldern zu " +"erstellen." + +# @ acf +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "oEmbed-Feld" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" +"Das oEmbed-Feld erlaubt auf eine einfache Weise Videos, Bilder, Tweets, " +"Audio und weitere Inhalte einzubetten." + +# @ acf +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Klon-Feld" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "" +"Das Klon-Feld erlaubt es dir bestehende Felder auszuwählen und anzuzeigen." + +# @ acf +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "Mehr AJAX" + +# @ acf +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "" +"Mehr Felder verwenden nun eine AJAX-basierte Suche, die die Ladezeiten von " +"Seiten deutlich verringert." + +# @ acf +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "Lokales JSON" + +# @ acf +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"Ein neuer automatischer Export nach JSON verbessert die Geschwindigkeit und " +"erlaubt die Synchronisation." + +# @ acf +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Einfacher Import / Export" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "" +"Importe sowie Exporte können beide einfach auf der neuen Werkzeug-Seite " +"durchgeführt werden." + +# @ acf +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "Neue Positionen für Formulare" + +# @ acf +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" +"Felder können nun auch Menüs, Menüpunkten, Kommentaren, Widgets und allen " +"Benutzer-Formularen zugeordnet werden!" + +# @ acf +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Weitere Anpassungen" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" +"Neue Aktionen und Filter für PHP und JS wurden hinzugefügt um noch mehr " +"Anpassungen zu erlauben." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Eine modernisierte Benutzeroberfläche" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "" +"Das Design des kompletten Plugins wurde modernisiert, inklusive neuer " +"Feldtypen, Einstellungen und Aussehen!" + +# @ acf +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Neue Einstellungen" + +# @ acf +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" +"Die Feldgruppen wurden um die Einstellungen für das Aktivieren und " +"Deaktivieren der Gruppe, die Platzierung von Beschriftungen und Anweisungen " +"sowie eine Beschreibung erweitert." + +# @ acf +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "Verbesserte Frontend-Formulare" + +# @ acf +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"acf_form() kann jetzt einen neuen Beitrag direkt beim Senden erstellen " +"inklusive vieler neuer Einstellungsmöglichkeiten." + +# @ acf +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Bessere Validierung" + +# @ acf +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "" +"Die Formular-Validierung wird nun mit Hilfe von PHP + AJAX erledigt, " +"anstelle nur JS zu verwenden." + +# @ acf +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Verschiebbare Felder" + +# @ acf +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"Die neue Feldgruppen-Funktionalität erlaubt es ein Feld zwischen Gruppen und " +"übergeordneten Gruppen frei zu verschieben." + +# @ acf +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Wir glauben Du wirst die Änderungen in %s lieben." + +# @ acf +#: includes/api/api-helpers.php:1003 +msgid "Thumbnail" +msgstr "Vorschaubild" + +# @ acf +#: includes/api/api-helpers.php:1004 +msgid "Medium" +msgstr "Mittel" + +# @ acf +#: includes/api/api-helpers.php:1005 +msgid "Large" +msgstr "Groß" + +# @ acf +#: includes/api/api-helpers.php:1054 +msgid "Full Size" +msgstr "Volle Größe" + +# @ acf +#: includes/api/api-helpers.php:1775 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(ohne Titel)" + +# @ acf +#: includes/api/api-helpers.php:3783 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Die Breite des Bildes muss mindestens %dpx sein." + +# @ acf +#: includes/api/api-helpers.php:3788 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Die Breite des Bildes darf %dpx nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:3804 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Die Höhe des Bildes muss mindestens %dpx sein." + +# @ acf +#: includes/api/api-helpers.php:3809 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Die Höhe des Bild darf %dpx nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:3827 +#, php-format +msgid "File size must be at least %s." +msgstr "Die Dateigröße muss mindestens %s sein." + +# @ acf +#: includes/api/api-helpers.php:3832 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Die Dateigröße darf %s nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:3866 +#, php-format +msgid "File type must be %s." +msgstr "Der Dateityp muss %s sein." + +# @ acf +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Die vorgenommenen Änderungen gehen verloren wenn diese Seite verlassen wird" + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Auswählen" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "Bearbeiten" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "Aktualisieren" + +# @ acf +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "Zu diesem Beitrag hochgeladen" + +# @ acf +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "Details einblenden" + +# @ acf +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "Details ausblenden" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "Eingeschränkt" + +# @ acf +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "Alle Bilder" + +# @ acf +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "Überprüfung erfolgreich" + +# @ acf +#: includes/assets.php:182 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Überprüfung fehlgeschlagen" + +# @ acf +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "Für 1 Feld ist eine Aktualisierung notwendig" + +# @ acf +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "Für %d Felder ist eine Aktualisierung notwendig" + +# @ acf +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "Wirklich entfernen?" + +# @ acf +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Ja" + +# @ acf +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Nein" + +# @ acf +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:360 +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Remove" +msgstr "Entfernen" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "Abbrechen" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "Hat einen Wert" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "Hat keinen Wert" + +# @ acf +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "Wert ist gleich" + +# @ acf +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "Wert ist ungleich" + +# @ acf +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "Wert entspricht regulärem Ausdruck" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "Wert enthält" + +# @ acf +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "Wert ist größer als" + +# @ acf +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "Wert ist kleiner als" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "Auswahl ist größer als" + +# @ acf +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "Auswahl ist kleiner als" + +# @ acf +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "Feldgruppe bearbeiten" + +# @ acf +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Feldtyp existiert nicht" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Unbekannt" + +# @ acf +#: includes/fields.php:349 +msgid "Basic" +msgstr "Grundlage" + +# @ acf +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Inhalt" + +# @ acf +#: includes/fields.php:351 +msgid "Choice" +msgstr "Auswahl" + +# @ acf +#: includes/fields.php:352 +msgid "Relational" +msgstr "Relational" + +# @ acf +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +# @ acf +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:553 +#: pro/fields/class-acf-field-flexible-content.php:602 +#: pro/fields/class-acf-field-repeater.php:448 +msgid "Layout" +msgstr "Layout" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Akkordeon" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Geöffnet" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Dieses Akkordeon beim Laden der Seite als geöffnet anzeigen." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Gleichzeitig geöffnet" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Erlaubt dieses Akkordeon zu öffnen ohne andere zu schließen." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Endpunkt" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Definiert einen Endpunkt an dem das vorangegangene Akkordeon endet. Dieses " +"abschließende Akkordeon wird nicht sichtbar sein." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Button-Gruppe" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "Auswahlmöglichkeiten" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "Jede Auswahlmöglichkeit in eine neue Zeile eingeben." + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Für mehr Kontrolle, kannst Du sowohl einen Wert als auch eine Beschriftung " +"wie folgt angeben:" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "rot : Rot" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "NULL-Werte zulassen?" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "Standardwert" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "Erscheint bei der Erstellung eines neuen Beitrags" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Horizontal" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Vertikal" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Rückgabewert" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Legt den Rückgabewert für das Frontend fest" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "Wert" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "Beide (Array)" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "Checkbox" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Alle auswählen" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Neue Auswahlmöglichkeit hinzufügen" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Individuelle Werte erlauben" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Erlaubt das Hinzufügen individueller Werte" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Individuelle Werte speichern" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Individuelle Werte unter den Auswahlmöglichkeiten des Feldes speichern" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "Jeden Standardwert in einer neuen Zeile eingeben" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Alle Auswählen" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" +"Hängt eine zusätzliche Checkbox an mit der alle Optionen ausgewählt werden " +"können" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Farbauswahl" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Leeren" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Standard" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Farbe auswählen" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Aktuelle Farbe" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Datumsauswahl" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Fertig" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Heute" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Nächstes" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Vorheriges" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "W" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Darstellungsformat" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Das Format für die Anzeige in der Bearbeitungsansicht" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Individuelles Format:" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "Speicherformat" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "Das Format das beim Speichern eines Wertes verwendet wird" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +msgid "Return Format" +msgstr "Rückgabeformat" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Das Format für die Ausgabe in den Template-Funktionen" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "Die Woche beginnt am" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Datums- und Zeitauswahl" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Zeit auswählen" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Zeit" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Stunde" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minute" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Sekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Millisekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Zeitzone" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Jetzt" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Fertig" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Auswählen" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "Vorm." + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "Vorm." + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "Nachm." + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "Nachm." + +# @ acf +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "E-Mail" + +# @ acf +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Platzhaltertext" + +# @ acf +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Platzhaltertext solange keine Eingabe im Feld vorgenommen wurde" + +# @ acf +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Voranstellen" + +# @ acf +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Wird dem Eingabefeld vorangestellt" + +# @ acf +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Anhängen" + +# @ acf +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Wird dem Eingabefeld hinten angestellt" + +# @ acf +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Datei" + +# @ acf +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Datei bearbeiten" + +# @ acf +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Datei aktualisieren" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Dateiname" + +# @ acf +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:708 +#: pro/fields/class-acf-field-gallery.php:737 +msgid "File size" +msgstr "Dateigröße" + +# @ acf +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Datei hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Datei-Array" + +# @ acf +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "Datei-URL" + +# @ acf +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "Datei-ID" + +# @ acf +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:673 +msgid "Library" +msgstr "Mediathek" + +# @ acf +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:674 +msgid "Limit the media library choice" +msgstr "Beschränkt die Auswahl in der Mediathek" + +# @ acf +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:679 +#: pro/locations/class-acf-location-block.php:79 +msgid "All" +msgstr "Alle" + +# @ acf +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:680 +msgid "Uploaded to post" +msgstr "Für den Beitrag hochgeladen" + +# @ acf +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:687 +msgid "Minimum" +msgstr "Minimum" + +# @ acf +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "Beschränkt welche Dateien hochgeladen werden können" + +# @ acf +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:716 +msgid "Maximum" +msgstr "Maximum" + +# @ acf +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:745 +msgid "Allowed file types" +msgstr "Erlaubte Dateiformate" + +# @ acf +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:746 +msgid "Comma separated list. Leave blank for all types" +msgstr "" +"Eine durch Komma getrennte Liste. Leer lassen um alle Dateiformate zu " +"erlauben" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google Maps" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Dieser Browser unterstützt keine Geo-Lokation" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "Position löschen" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "Aktuelle Position finden" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "Nach der Adresse suchen..." + +# @ acf +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "Mittelpunkt" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "Mittelpunkt der Ausgangskarte" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "Zoom" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "Legt die anfängliche Zoomstufe der Karte fest" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:699 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Height" +msgstr "Höhe" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "Passt die Höhe der Karte an" + +# @ acf +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Gruppe" + +# @ acf +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:384 +msgid "Sub Fields" +msgstr "Unterfelder" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Gibt die Art an wie die ausgewählten Felder ausgegeben werden sollen" + +# @ acf +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:456 +#: pro/locations/class-acf-location-block.php:27 +msgid "Block" +msgstr "Block" + +# @ acf +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:455 +msgid "Table" +msgstr "Tabelle" + +# @ acf +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:614 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Row" +msgstr "Reihe" + +# @ acf +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Bild" + +# @ acf +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "Bild auswählen" + +# @ acf +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "Bild bearbeiten" + +# @ acf +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "Bild aktualisieren" + +# @ acf +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "Kein Bild ausgewählt" + +# @ acf +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "Bild hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "Bild-Array" + +# @ acf +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "Bild-URL" + +# @ acf +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "Bild-ID" + +# @ acf +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "Maße der Vorschau" + +# @ acf +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "Legt fest welche Maße die Vorschau in der Bearbeitungsansicht hat" + +# @ acf +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Restrict which images can be uploaded" +msgstr "Beschränkt welche Bilder hochgeladen werden können" + +# @ acf +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:691 +#: pro/fields/class-acf-field-gallery.php:720 +msgid "Width" +msgstr "Breite" + +# @ acf +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Link" + +# @ acf +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Link auswählen" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "In einem neuen Fenster/Tab öffnen" + +# @ acf +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Link-Array" + +# @ acf +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "Link-URL" + +# @ acf +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Mitteilung" + +# @ acf +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Neue Zeilen" + +# @ acf +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Legt fest wie Zeilenumbrüche gerendert werden" + +# @ acf +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Automatisches hinzufügen von Absätzen" + +# @ acf +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Automatisches hinzufügen von <br>" + +# @ acf +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Keine Formatierung" + +# @ acf +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Escape HTML" + +# @ acf +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" +"Erlaubt HTML-Markup als sichtbaren Text anzuzeigen anstelle diesen zu rendern" + +# @ acf +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Numerisch" + +# @ acf +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "Mindestwert" + +# @ acf +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "Maximalwert" + +# @ acf +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Schrittweite" + +# @ acf +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Wert muss eine Zahl sein" + +# @ acf +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Wert muss größer oder gleich %d sein" + +# @ acf +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Wert muss kleiner oder gleich %d sein" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "URL eingeben" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Maße" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Seiten-Link" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archive" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Übergeordnet" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "Nach Inhaltstyp filtern" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "Alle Inhaltstypen" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "Nach Taxonomien filtern" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "Alle Taxonomien" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Archiv-URL's zulassen" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "Mehrere Werte auswählbar?" + +# @ acf +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Passwort" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "Beitrags-Objekt" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "Beitrags-ID" + +# @ acf +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Radio-Button" + +# @ acf +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Weitere" + +# @ acf +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "" +"Das Hinzufügen der Auswahlmöglichkeit 'Weitere‘ erlaubt benutzerdefinierte " +"Werte" + +# @ acf +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Weitere speichern" + +# @ acf +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Weitere Werte unter den Auswahlmöglichkeiten des Feldes speichern" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Numerischer Bereich" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Beziehung" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "Maximum der Einträge mit ({max} Einträge) erreicht" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "Lade" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Keine Übereinstimmung gefunden" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "Inhaltstyp auswählen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "Taxonomie auswählen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "Suchen..." + +# @ acf +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "Filter" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Inhaltstyp" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taxonomie" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "Elemente" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "Die ausgewählten Elemente werden in jedem Ergebnis angezeigt" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "Mindestzahl an Beiträgen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "Höchstzahl an Beiträgen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:818 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s benötigt mindestens %s Selektion" +msgstr[1] "%s benötigt mindestens %s Selektionen" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Auswahl" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "" +"Es ist ein Ergebnis verfügbar, drücke die Eingabetaste um es auszuwählen." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"Es sind %d Ergebnisse verfügbar, benutze die Pfeiltasten um nach oben und " +"unten zu navigieren." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Keine Übereinstimmungen gefunden" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Gib bitte ein oder mehr Zeichen ein" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Gib bitte %d oder mehr Zeichen ein" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Lösche bitte ein Zeichen" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Lösche bitte %d Zeichen" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Du kannst nur ein Element auswählen" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Du kannst nur %d Elemente auswählen" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Mehr Ergebnisse laden…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Suchen…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Laden fehlgeschlagen" + +# @ acf +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Select2-Library aktivieren" + +# @ acf +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "AJAX verwenden um die Auswahl mittels Lazy Loading zu laden?" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "Lege den Rückgabewert fest" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Trennelement" + +# @ acf +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Tab" + +# @ acf +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Platzierung" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Definiert einen Endpunkt an dem die vorangegangenen Tabs enden. Das ist der " +"Startpunkt für eine neue Gruppe an Tabs." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Keine %s" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Wähle die Taxonomie, welche angezeigt werden soll" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Anzeige" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Wähle das Aussehen für dieses Feld" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Mehrere Werte" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Auswahlmenü" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Einzelne Werte" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Radio Button" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Begriffe erstellen" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Erlaubt das Erstellen neuer Begriffe während des Bearbeitens" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Begriffe speichern" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "Verbindet die ausgewählten Begriffe mit dem Beitrag" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Begriffe laden" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Den Wert aus den Begriffen des Beitrags laden" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Begriffs-Objekt" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "Begriffs-ID" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "Der Benutzer kann keine neue %s hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s ist bereits vorhanden" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s hinzugefügt" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Text einzeilig" + +# @ acf +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Zeichenbegrenzung" + +# @ acf +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Leer lassen für keine Begrenzung" + +#: includes/fields/class-acf-field-text.php:181 +#: includes/fields/class-acf-field-textarea.php:213 +#, php-format +msgid "Value must not exceed %d characters" +msgstr "Wert darf %d Zeichen nicht überschreiten" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Text mehrzeilig" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Zeilenanzahl" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Definiert die Höhe des Textfelds" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Zeitauswahl" + +# @ acf +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Wahr / Falsch" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Zeigt den Text neben der Checkbox an" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Wenn aktiv" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Der Text der im aktiven Zustand angezeigt wird" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Wenn inaktiv" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Der Text der im inaktiven Zustand angezeigt wird" + +# @ acf +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "URL" + +# @ acf +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Bitte eine gültige URL eingeben" + +# @ acf +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Benutzer" + +# @ acf +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "Nach Rolle filtern" + +# @ acf +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "Alle Benutzerrollen" + +# @ acf +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "Benutzer-Array" + +# @ acf +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "Benutzer-Objekt" + +# @ acf +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "Benutzer-ID" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "WYSIWYG-Editor" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Visuell" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "Klicke um TinyMCE zu initialisieren" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "Tabs" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Visuell & Text" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Nur Visuell" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Nur Text" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "Werkzeugleiste" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "Button zum Hochladen von Medien anzeigen?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "Initialisierung verzögern?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE wird nicht initialisiert solange das Feld nicht geklickt wurde" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "E-Mail bestätigen" + +# @ acf +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:591 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Aktualisieren" + +# @ acf +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Beitrag aktualisiert" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Spam entdeckt" + +# @ acf +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Beitrag" + +# @ acf +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Seite" + +# @ acf +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulare" + +# @ acf +#: includes/locations.php:243 +msgid "is equal to" +msgstr "ist gleich" + +# @ acf +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "ist ungleich" + +# @ acf +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Dateianhang" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Alle %s Formate" + +# @ acf +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Kommentar" + +# @ acf +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Aktuelle Benutzerrolle" + +# @ acf +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super-Administrator" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Aktueller Benutzer" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Angemeldet" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Frontend anzeigen" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Backend anzeigen" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Menüelement" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menü" + +# @ acf +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Menüpositionen" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menüs" + +# @ acf +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Übergeordnete Seite" + +# @ acf +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Seiten-Template" + +# @ acf +#: includes/locations/class-acf-location-page-template.php:87 +#: includes/locations/class-acf-location-post-template.php:134 +msgid "Default Template" +msgstr "Standard-Template" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Seitentyp" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Startseite" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Beitrags-Seite" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Seite ohne übergeordnete Seiten" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Übergeordnete Seite (mit Unterseiten)" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Unterseite (mit übergeordneter Seite)" + +# @ acf +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Beitragskategorie" + +# @ acf +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Beitragsformat" + +# @ acf +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Beitragsstatus" + +# @ acf +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Beitrags-Taxonomie" + +# @ acf +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Beitrags-Template" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Benutzerformular" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Hinzufügen / Bearbeiten" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registrieren" + +# @ acf +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Benutzerrolle" + +# @ acf +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +# @ acf +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s Wert ist erforderlich" + +# @ acf +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +# @ acf +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "Veröffentlichen" + +# @ acf +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Keine Feldgruppen für diese Options-Seite gefunden. Eine " +"Feldgruppe erstellen" + +# @ acf +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr "" +"Fehler. Es konnte keine Verbindung zum Aktualisierungsserver " +"hergestellt werden" + +# @ acf +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Aktualisierungen" + +#: pro/admin/admin-updates.php:191 +msgid "" +"Error. Could not authenticate update package. Please check again or " +"deactivate and reactivate your ACF PRO license." +msgstr "" +"Fehler. Das Aktualisierungspaket konnte nicht authentifiziert werden. " +"Bitte probiere es nochmal oder deaktiviere und reaktiviere deine ACF PRO-" +"Lizenz." + +# @ acf +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Lizenz deaktivieren" + +# @ acf +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Lizenz aktivieren" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Lizenzinformation" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Um die Aktualisierungsfähigkeit freizuschalten gib bitte unten Deinen " +"Lizenzschlüssel ein. Falls Du keinen besitzen solltest informiere Dich bitte " +"hier hinsichtlich Preisen und aller " +"weiteren Details." + +# @ acf +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Lizenzschlüssel" + +# @ acf +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Aktualisierungsinformationen" + +# @ acf +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Installierte Version" + +# @ acf +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Aktuellste Version" + +# @ acf +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Aktualisierung verfügbar" + +# @ acf +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Plugin aktualisieren" + +# @ acf +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "" +"Bitte gib oben Deinen Lizenzschlüssel ein um die Aktualisierungsfähigkeit " +"freizuschalten" + +# @ acf +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Erneut suchen" + +# @ acf +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Hinweis zum Upgrade" + +#: pro/blocks.php:371 +msgid "Switch to Edit" +msgstr "Zum Bearbeiten wechseln" + +#: pro/blocks.php:372 +msgid "Switch to Preview" +msgstr "Zur Vorschau wechseln" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Klon" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Wähle ein oder mehrere Felder aus die Du klonen möchtest" + +# @ acf +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Anzeige" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Gib den Stil an mit dem das Klon-Feld angezeigt werden soll" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Gruppe (zeigt die ausgewählten Felder in einer Gruppe innerhalb dieses " +"Feldes an)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Nahtlos (ersetzt dieses Feld mit den ausgewählten Feldern)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Beschriftungen werden als %s angezeigt" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Präfix für Feldbeschriftungen" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Werte werden als %s gespeichert" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Präfix für Feldnamen" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Unbekanntes Feld" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Unbekannte Feldgruppe" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Alle Felder der Feldgruppe %s" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:468 +msgid "Add Row" +msgstr "Eintrag hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:924 +#: pro/fields/class-acf-field-flexible-content.php:1006 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "Layout" +msgstr[1] "Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "Einträge" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:923 +#: pro/fields/class-acf-field-flexible-content.php:1005 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Dieses Feld erfordert mindestens {min} {label} {identifier}" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Dieses Feld erlaubt höchstens {max} {label} {identifier}" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} möglich (max {max})" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} erforderlich (min {min})" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Flexibler Inhalt benötigt mindestens ein Layout" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:287 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Klicke \"%s\" zum Erstellen des Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:413 +msgid "Add layout" +msgstr "Layout hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:414 +msgid "Remove layout" +msgstr "Layout entfernen" + +#: pro/fields/class-acf-field-flexible-content.php:415 +#: pro/fields/class-acf-field-repeater.php:301 +msgid "Click to toggle" +msgstr "Zum Auswählen anklicken" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder Layout" +msgstr "Layout sortieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder" +msgstr "Sortieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete Layout" +msgstr "Layout löschen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate Layout" +msgstr "Layout duplizieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New Layout" +msgstr "Neues Layout hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:629 +msgid "Min" +msgstr "Min" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:642 +msgid "Max" +msgstr "Max" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:669 +#: pro/fields/class-acf-field-repeater.php:464 +msgid "Button Label" +msgstr "Button-Beschriftung" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:678 +msgid "Minimum Layouts" +msgstr "Mindestzahl an Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:687 +msgid "Maximum Layouts" +msgstr "Höchstzahl an Layouts" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "Bild zur Galerie hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "Maximale Auswahl erreicht" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:338 +msgid "Length" +msgstr "Länge" + +#: pro/fields/class-acf-field-gallery.php:381 +msgid "Caption" +msgstr "Bildunterschrift" + +#: pro/fields/class-acf-field-gallery.php:390 +msgid "Alt Text" +msgstr "Alt Text" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:562 +msgid "Add to gallery" +msgstr "Zur Galerie hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Bulk actions" +msgstr "Massenverarbeitung" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Sort by date uploaded" +msgstr "Sortiere nach Upload-Datum" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:568 +msgid "Sort by date modified" +msgstr "Sortiere nach Änderungs-Datum" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:569 +msgid "Sort by title" +msgstr "Sortiere nach Titel" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Reverse current order" +msgstr "Aktuelle Sortierung umkehren" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:588 +msgid "Close" +msgstr "Schließen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum Selection" +msgstr "Minimale Auswahl" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:651 +msgid "Maximum Selection" +msgstr "Maximale Auswahl" + +#: pro/fields/class-acf-field-gallery.php:660 +msgid "Insert" +msgstr "Einfügen" + +#: pro/fields/class-acf-field-gallery.php:661 +msgid "Specify where new attachments are added" +msgstr "Gibt an wo neue Anhänge hinzugefügt werden" + +#: pro/fields/class-acf-field-gallery.php:665 +msgid "Append to the end" +msgstr "Anhängen" + +#: pro/fields/class-acf-field-gallery.php:666 +msgid "Prepend to the beginning" +msgstr "Voranstellen" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:661 +msgid "Minimum rows reached ({min} rows)" +msgstr "Mindestzahl der Einträge hat ({min} Reihen) erreicht" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "Höchstzahl der Einträge hat ({max} Reihen) erreicht" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:338 +msgid "Add row" +msgstr "Eintrag hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:339 +msgid "Remove row" +msgstr "Eintrag entfernen" + +#: pro/fields/class-acf-field-repeater.php:417 +msgid "Collapsed" +msgstr "Zugeklappt" + +#: pro/fields/class-acf-field-repeater.php:418 +msgid "Select a sub field to show when row is collapsed" +msgstr "" +"Wähle ein Unterfelder welches im zugeklappten Zustand angezeigt werden soll" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:428 +msgid "Minimum Rows" +msgstr "Mindestzahl der Einträge" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:438 +msgid "Maximum Rows" +msgstr "Höchstzahl der Einträge" + +# @ acf +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Keine Options-Seiten vorhanden" + +# @ acf +#: pro/options-page.php:51 +msgid "Options" +msgstr "Optionen" + +# @ acf +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Optionen aktualisiert" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Um die Aktualisierungsfähigkeit freizuschalten gib bitte Deinen " +"Lizenzschlüssel auf der Aktualisierungen Seite ein. Falls " +"Du keinen besitzt informiere Dich bitte hier hinsichtlich der Preise und Einzelheiten." + +#: tests/basic/test-blocks.php:13 +msgid "Testimonial" +msgstr "Testimonial" + +#: tests/basic/test-blocks.php:14 +msgid "A custom testimonial block." +msgstr "Ein individueller Testimonial-Block." + +#: tests/basic/test-blocks.php:40 +msgid "Slider" +msgstr "Slider" + +# @ acf +#: tests/basic/test-blocks.php:41 +msgid "A custom gallery slider." +msgstr "Ein individueller Galerie-Slider." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +# @ acf +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +# @ acf +#~ msgid "%s field group duplicated." +#~ msgid_plural "%s field groups duplicated." +#~ msgstr[0] "%s Feldgruppe dupliziert." +#~ msgstr[1] "%s Feldgruppen dupliziert." + +# @ acf +#~ msgid "%s field group synchronised." +#~ msgid_plural "%s field groups synchronised." +#~ msgstr[0] "%s Feldgruppe synchronisiert." +#~ msgstr[1] "%s Feldgruppen synchronisiert." + +# @ acf +#~ msgid "Error. Could not load add-ons list" +#~ msgstr "" +#~ "Fehler. Die Liste der Zusatz-Module kann nicht geladen werden" + +#~ msgid "Error validating request" +#~ msgstr "Fehler bei der Überprüfung der Anfrage" + +# @ acf +#~ msgid "Advanced Custom Fields Database Upgrade" +#~ msgstr "Advanced Custom Fields Datenbank-Upgrade" + +# @ acf +#~ msgid "" +#~ "Before you start using the new awesome features, please update your " +#~ "database to the newest version." +#~ msgstr "" +#~ "Bevor du die großartigen neuen Funktionen nutzen kannst ist ein Upgrade " +#~ "der Datenbank notwendig." + +# @ acf +#~ msgid "" +#~ "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +#~ msgstr "" +#~ "Wir haben den Aktualisierungsprozess so einfach wie möglich gehalten; melde Dich mit Deinem Store-Account an und fordere ein " +#~ "Gratisexemplar von ACF PRO an!" + +# @ acf +#~ msgid "Under the Hood" +#~ msgstr "Unter der Haube" + +# @ acf +#~ msgid "Smarter field settings" +#~ msgstr "Intelligentere Feld-Einstellungen" + +# @ acf +#~ msgid "ACF now saves its field settings as individual post objects" +#~ msgstr "" +#~ "ACF speichert nun die Feld-Einstellungen als individuelle Beitrags-Objekte" + +# @ acf +#~ msgid "Better version control" +#~ msgstr "Verbesserte Versionskontrolle" + +# @ acf +#~ msgid "" +#~ "New auto export to JSON feature allows field settings to be version " +#~ "controlled" +#~ msgstr "" +#~ "Die neue JSON Export Funktionalität erlaubt die Versionskontrolle von " +#~ "Feld-Einstellungen" + +# @ acf +#~ msgid "Swapped XML for JSON" +#~ msgstr "JSON ersetzt XML" + +# @ acf +#~ msgid "Import / Export now uses JSON in favour of XML" +#~ msgstr "Das Import- und Export-Modul nutzt nun JSON anstelle XML" + +# @ acf +#~ msgid "New Forms" +#~ msgstr "Neue Formulare" + +# @ acf +#~ msgid "A new field for embedding content has been added" +#~ msgstr "Ein neues Feld für das Einbetten von Inhalten wurde hinzugefügt" + +# @ acf +#~ msgid "New Gallery" +#~ msgstr "Neue Galerie" + +# @ acf +#~ msgid "The gallery field has undergone a much needed facelift" +#~ msgstr "" +#~ "Das Galerie-Feld wurde einem längst überfälligen Face-Lifting unterzogen" + +# @ acf +#~ msgid "Relationship Field" +#~ msgstr "Beziehungs-Feld" + +# @ acf +#~ msgid "" +#~ "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +#~ msgstr "" +#~ "Neue Einstellungen innerhalb des Beziehungs-Feldes um nach Suche, " +#~ "Beitrags-Typ und oder Taxonomie filtern zu können" + +# @ acf +#~ msgid "New archives group in page_link field selection" +#~ msgstr "" +#~ "Im neuen Seitenlink-Feld werden alle Archiv-URL's der verfügbaren Custom " +#~ "Post Types in einer Options-Gruppe zusammengefasst" + +# @ acf +#~ msgid "Better Options Pages" +#~ msgstr "Verbesserte Options-Seiten" + +# @ acf +#~ msgid "" +#~ "New functions for options page allow creation of both parent and child " +#~ "menu pages" +#~ msgstr "" +#~ "Neue Funktionen für die Options-Seite erlauben die Erstellung von Menüs " +#~ "für übergeordnete Seiten sowie Unterseiten" + +# @ acf +#~ msgid "None" +#~ msgstr "Nur Text" + +#~ msgid "Error." +#~ msgstr "Fehler." + +# @ acf +#~ msgid "remove {layout}?" +#~ msgstr "{layout} entfernen?" + +# @ acf +#~ msgid "This field requires at least {min} {identifier}" +#~ msgstr "Dieses Feld erfordert mindestens {min} {identifier}" + +# @ acf +#~ msgid "Maximum {label} limit reached ({max} {identifier})" +#~ msgstr "Maximale {label}-Anzahl erreicht ({max} {identifier})" + +# @ acf +#~ msgid "Parent fields" +#~ msgstr "Übergeordnete Felder" + +# @ acf +#~ msgid "Sibling fields" +#~ msgstr "Geschwister-Felder" + +# @ acf +#~ msgid "Locating" +#~ msgstr "Lokalisiere" + +# @ acf +#~ msgid "No embed found for the given URL." +#~ msgstr "Keine Inhalte für die eingegebene URL gefunden." + +# @ acf +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "Minimum der Einträge mit ({min} Einträge) erreicht" + +# @ acf +#~ msgid "Taxonomy Term" +#~ msgstr "Taxonomie" + +# @ acf +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Exportieren der Feld-Gruppen nach PHP" + +# @ acf +#~ msgid "Download export file" +#~ msgstr "JSON-Datei exportieren" + +# @ acf +#~ msgid "Generate export code" +#~ msgstr "Erstelle PHP-Code" + +# @ acf +#~ msgid "Import" +#~ msgstr "Importieren" + +# @ acf +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Ein Tab-Feld wird nicht korrekt dargestellt, wenn es zu einem " +#~ "Wiederholung- oder Flexible-Inhalte-Feld im Tabellen-Layout eingebunden " +#~ "ist" + +# @ acf +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "Mit \"Tab Feldern\" können Felder für eine bessere Struktur im Editor in " +#~ "Tabs zusammengefasst werden." + +# @ acf +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Alle Felder, die auf dieses \"Tab Feld\" folgen (oder bis ein weiteres " +#~ "\"Tab Feld\" definiert ist), werden in einem Tab mit dem Namen dieses " +#~ "Felds zusammengefasst." + +# @ acf +#~ msgid "Getting Started" +#~ msgstr "Erste Schritte" + +# @ acf +#~ msgid "Field Types" +#~ msgstr "Feld-Typen" + +# @ acf +#~ msgid "Functions" +#~ msgstr "Funktionen" + +# @ acf +#~ msgid "Actions" +#~ msgstr "Aktionen" + +#~ msgid "How to" +#~ msgstr "Kurzanleitungen" + +# @ acf +#~ msgid "Tutorials" +#~ msgstr "Ausführliche Anleitungen" + +#~ msgid "FAQ" +#~ msgstr "Häufig gestellte Fragen" + +#~ msgid "Term meta upgrade not possible (termmeta table does not exist)" +#~ msgstr "" +#~ "Term Meta-Aktualisierung war nicht möglich (die termmeta-Tabelle " +#~ "existiert nicht)" + +# @ acf +#~ msgid "Error" +#~ msgstr "Fehler" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "Ein Feld bedarf Deiner Aufmerksamkeit." +#~ msgstr[1] "%d Felder bedürfen Deiner Aufmerksamkeit." + +#~ msgid "" +#~ "Error validating ACF PRO license URL (website does not match). Please re-" +#~ "activate your license" +#~ msgstr "" +#~ "Fehler bei der Überprüfung der ACF PRO Lizenz URL (Webseiten stimmen " +#~ "nicht überein). Bitte reaktiviere deine Lizenz" + +#~ msgid "Disabled" +#~ msgstr "Deaktiviert" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Deaktiviert (%s)" +#~ msgstr[1] "Deaktiviert (%s)" + +# @ acf +#~ msgid "'How to' guides" +#~ msgstr "Kurzanleitungen" + +# @ acf +#~ msgid "Created by" +#~ msgstr "Erstellt von" + +#~ msgid "Error loading update" +#~ msgstr "Fehler beim Laden der Aktualisierung" + +# @ acf +#~ msgid "See what's new" +#~ msgstr "Was ist neu" + +# @ acf +#~ msgid "eg. Show extra content" +#~ msgstr "z.B. Zeige zusätzliche Inhalte" + +#~ msgid "" +#~ "Error validating license URL (website does not match). Please re-activate " +#~ "your license" +#~ msgstr "" +#~ "Fehler bei der Überprüfung der Lizenz-URL (Webseite stimmt nicht " +#~ "überein). Bitte reaktiviere Deine Lizenz" + +# @ acf +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "Erfolgreich. Der Import hat %s Feld-Gruppen hinzugefügt: %s" + +# @ acf +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Warnung. Der Import hat %s Feld-Gruppen erkannt, die schon " +#~ "vorhanden sind und diese ignoriert: %s" + +# @ acf +#~ msgid "Upgrade ACF" +#~ msgstr "Aktualisiere ACF" + +# @ acf +#~ msgid "Upgrade" +#~ msgstr "Aktualisieren" + +# @ acf +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to " +#~ "update and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "Die folgenden Seiten erfordern eine Datenbank- Aktualisierung. Markiere " +#~ "die gewünschten Seiten und klicke \\\"Aktualisiere Datenbank\\\"." + +# @ acf +#~ msgid "Select" +#~ msgstr "Auswahlmenü" + +# @ acf +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "" +#~ "Verbindungsfehler. Entschuldige, versuche es bitte später noch " +#~ "einmal" + +# @ acf +#~ msgid "Done" +#~ msgstr "Fertig" + +# @ acf +#~ msgid "Today" +#~ msgstr "Heute" + +# @ acf +#~ msgid "Show a different month" +#~ msgstr "Zeige einen anderen Monat" + +# @ acf +#~ msgid "See what's new in" +#~ msgstr "Neuerungen in" + +# @ acf +#~ msgid "version" +#~ msgstr "Version" + +#~ msgid "Upgrading data to" +#~ msgstr "Aktualisiere Daten auf" + +# @ acf +#~ msgid "Return format" +#~ msgstr "Rückgabe-Format" + +# @ acf +#~ msgid "uploaded to this post" +#~ msgstr "zu diesem Beitrag hochgeladen" + +# @ acf +#~ msgid "File Name" +#~ msgstr "Dateiname" + +# @ acf +#~ msgid "File Size" +#~ msgstr "Dateigröße" + +# @ acf +#~ msgid "No File selected" +#~ msgstr "Keine Datei ausgewählt" + +# @ acf +#~ msgid "License" +#~ msgstr "Lizenz" + +# @ acf +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Um die Aktualisierungs-Fähigkeit freizuschalten, trage bitte Deinen " +#~ "Lizenzschlüssel im darunterliegenden Feld ein. Solltest Du noch keinen " +#~ "Lizenzschlüssel besitzen, informiere Dich bitte hier über die" + +# @ acf +#~ msgid "details & pricing" +#~ msgstr "Details und Preise." + +# @ acf +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "Um die Aktualisierungen freizuschalten, trage bitte Deinen " +#~ "Lizenzschlüssel auf der Aktualisierungen-Seite ein. " +#~ "Solltest Du noch keinen Lizenzschlüssel besitzen, informiere Dich bitte " +#~ "hier über die Details und Preise" + +# @ acf +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +# @ acf +#~ msgid "http://www.advancedcustomfields.com/" +#~ msgstr "http://www.advancedcustomfields.com/" + +# @ acf +#~ msgid "elliot condon" +#~ msgstr "elliot condon" + +# @ acf +#~ msgid "Drag and drop to reorder" +#~ msgstr "Mittels Drag-and-Drop die Reihenfolge ändern" + +# @ acf +#~ msgid "Add new %s " +#~ msgstr "Neue %s " + +# @ acf +#~ msgid "Save Options" +#~ msgstr "Optionen speichern" + +#~ msgid "Sync Available" +#~ msgstr "Synchronisierung verfügbar" + +# @ acf +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "Bitte beachte, dass der gesamte Text zuerst durch eine WordPress Funktion " +#~ "gefiltert wird. Siehe: " + +# @ acf +#~ msgid "Warning" +#~ msgstr "Warnung" + +# @ acf +#~ msgid "Show Field Keys" +#~ msgstr "Zeige Feld-Schlüssel" + +# @ acf +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "" +#~ "Felder-Gruppen werden nach diesem Wert sortiert, vom niedrigsten zum " +#~ "höchsten Wert." + +# @ acf +#~ msgid "Hide / Show All" +#~ msgstr "Alle Verstecken" + +# @ acf +#~ msgid "5.2.6" +#~ msgstr "5.2.6" + +# @ acf +#~ msgid "Sync Terms" +#~ msgstr "Einträge synchronisieren" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-de_DE_formal.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-de_DE_formal.mo new file mode 100755 index 0000000000000000000000000000000000000000..701e5a3639cdb36c23e397c4c57c151b8853fd21 GIT binary patch literal 53848 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 bq;(jJr#+B1?U{e;Jla$fH#IVUChh+L(EPG2 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-de_DE_formal.po b/wp-content/plugins/advanced-custom-fields/lang/acf-de_DE_formal.po new file mode 100644 index 0000000..a0262b3 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-de_DE_formal.po @@ -0,0 +1,4319 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.8 Formal\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2019-05-09 15:54+0200\n" +"PO-Revision-Date: 2019-05-09 17:23+0200\n" +"Last-Translator: Ralf Koller \n" +"Language-Team: Ralf Koller \n" +"Language: de_DE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.2.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +# @ acf +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +# @ acf +#: acf.php:363 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "Feldgruppen" + +# @ acf +#: acf.php:364 +msgid "Field Group" +msgstr "Feldgruppe" + +# @ acf +#: acf.php:365 acf.php:397 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New" +msgstr "Erstellen" + +# @ acf +#: acf.php:366 +msgid "Add New Field Group" +msgstr "Neue Feldgruppe erstellen" + +# @ acf +#: acf.php:367 +msgid "Edit Field Group" +msgstr "Feldgruppe bearbeiten" + +# @ acf +#: acf.php:368 +msgid "New Field Group" +msgstr "Neue Feldgruppe" + +# @ acf +#: acf.php:369 +msgid "View Field Group" +msgstr "Feldgruppe anzeigen" + +# @ acf +#: acf.php:370 +msgid "Search Field Groups" +msgstr "Feldgruppen durchsuchen" + +# @ acf +#: acf.php:371 +msgid "No Field Groups found" +msgstr "Keine Feldgruppen gefunden" + +# @ acf +#: acf.php:372 +msgid "No Field Groups found in Trash" +msgstr "Keine Feldgruppen im Papierkorb gefunden" + +# @ acf +#: acf.php:395 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:530 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Felder" + +# @ acf +#: acf.php:396 +msgid "Field" +msgstr "Feld" + +# @ acf +#: acf.php:398 +msgid "Add New Field" +msgstr "Feld hinzufügen" + +# @ acf +#: acf.php:399 +msgid "Edit Field" +msgstr "Feld bearbeiten" + +# @ acf +#: acf.php:400 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Neues Feld" + +# @ acf +#: acf.php:401 +msgid "View Field" +msgstr "Feld anzeigen" + +# @ acf +#: acf.php:402 +msgid "Search Fields" +msgstr "Felder suchen" + +# @ acf +#: acf.php:403 +msgid "No Fields found" +msgstr "Keine Felder gefunden" + +# @ acf +#: acf.php:404 +msgid "No Fields found in Trash" +msgstr "Keine Felder im Papierkorb gefunden" + +#: acf.php:443 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:587 +msgid "Inactive" +msgstr "Inaktiv" + +#: acf.php:448 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inaktiv (%s)" +msgstr[1] "Inaktiv (%s)" + +# @ acf +#: includes/acf-field-functions.php:828 +#: includes/admin/admin-field-group.php:178 +msgid "(no label)" +msgstr "(keine Beschriftung)" + +# @ acf +#: includes/acf-field-group-functions.php:816 +#: includes/admin/admin-field-group.php:180 +msgid "copy" +msgstr "Kopie" + +# @ acf +#: includes/admin/admin-field-group.php:86 +#: includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "Feldgruppe aktualisiert." + +# @ acf +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "Feldgruppe gelöscht." + +# @ acf +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "Feldgruppe veröffentlicht." + +# @ acf +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "Feldgruppe gespeichert." + +# @ acf +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "Feldgruppe übertragen." + +# @ acf +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "Feldgruppe geplant für." + +# @ acf +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "Entwurf der Feldgruppe aktualisiert." + +# @ acf +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Der Feldname darf nicht mit \"field_\" beginnen" + +# @ acf +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "" +"Diese Feld kann erst verschoben werden, wenn die Änderungen gespeichert " +"wurden" + +# @ acf +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "Es ist ein Titel für die Feldgruppe erforderlich" + +# @ acf +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "Wirklich in den Papierkorb verschieben?" + +# @ acf +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "Es liegen keine Auswahl-Feldtypen vor" + +# @ acf +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "Individuelles Feld verschieben" + +# @ acf +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "Ausgewählt" + +# @ acf +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "(dieses Feld)" + +# @ acf +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3862 +msgid "or" +msgstr "oder" + +# @ acf +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "Null" + +# @ acf +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "Position" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Einstellungen" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "Feldschlüssel" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Aktiviert" + +# @ acf +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "Verschieben erfolgreich abgeschlossen." + +# @ acf +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Das Feld \"%s\" wurde in die %s Feldgruppe verschoben" + +# @ acf +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "Schließen" + +# @ acf +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "In welche Feldgruppe solle dieses Feld verschoben werden" + +# @ acf +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "Feld verschieben" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Veröffentlicht (%s)" +msgstr[1] "Veröffentlicht (%s)" + +# @ acf +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Feldgruppe dupliziert." +msgstr[1] "%s Feldgruppen dupliziert." + +# @ acf +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "Feldgruppe synchronisiert." +msgstr[1] "%s Feldgruppen synchronisiert." + +# @ acf +#: includes/admin/admin-field-groups.php:414 +#: includes/admin/admin-field-groups.php:577 +msgid "Sync available" +msgstr "Synchronisierung verfügbar" + +# @ acf +#: includes/admin/admin-field-groups.php:527 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:372 +msgid "Title" +msgstr "Titel" + +# @ acf +#: includes/admin/admin-field-groups.php:528 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:399 +msgid "Description" +msgstr "Beschreibung" + +#: includes/admin/admin-field-groups.php:529 +msgid "Status" +msgstr "Status" + +# @ acf +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "" +"WordPress durch leistungsfähige, professionelle und zugleich intuitive " +"Felder erweitern." + +# @ acf +#: includes/admin/admin-field-groups.php:628 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Änderungsprotokoll" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in version %s." +msgstr "Was gibt es Neues in Version %s." + +# @ acf +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "Dokumentation (engl.)" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "Website" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "Dokumentation" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "Hilfe" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Danke für das Vertrauen in ACF." + +# @ acf +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "Dieses Element duplizieren" + +# @ acf +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate" +msgstr "Duplizieren" + +# @ acf +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "Suchen" + +# @ acf +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "%s auswählen" + +# @ acf +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "Synchronisiere Feldgruppe" + +# @ acf +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "Synchronisieren" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "Anwenden" + +# @ acf +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "Massenverarbeitung" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Werkzeuge" + +# @ acf +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Datenbank upgraden" + +# @ acf +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Übersicht Websites & Upgrades" + +# @ acf +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "Individuelle Felder" + +# @ acf +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Info" + +# @ acf +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Was gibt es Neues" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Feldgruppen exportieren" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "PHP erstellen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Keine Feldgruppen ausgewählt" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Eine Feldgruppe wurde exportiert." +msgstr[1] "%s Feldgruppen wurden exportiert." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Feldgruppen auswählen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Entscheiden Sie welche Feldgruppen Sie exportieren möchten und wählen dann " +"das Exportformat. Benutzen Sie den „Datei exportieren“-Button, um eine JSON-" +"Datei zu generieren, welche Sie im Anschluss in eine andere ACF-Installation " +"importieren können. Verwenden Sie den „PHP erstellen“-Button, um den " +"resultierenden PHP-Code in ihr Theme einfügen zu können." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Datei exportieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Der nachfolgende Code kann dazu verwendet werden eine lokale Version der " +"ausgewählten Feldgruppe(n) zu registrieren. Eine lokale Feldgruppe bietet " +"viele Vorteile; schnellere Ladezeiten, Versionskontrolle sowie dynamische " +"Felder und Einstellungen. Kopieren Sie einfach folgenden Code und füge ihn " +"in die functions.php oder eine externe Datei in Ihrem Theme ein." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "In die Zwischenablage kopieren" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Kopiert" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Feldgruppen importieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:47 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Wählen Sie die Advanced Custom Fields JSON-Datei aus, welche Sie importieren " +"möchten. Nach dem Klicken des „Datei importieren“-Buttons wird ACF die " +"Feldgruppen hinzufügen." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:52 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Datei auswählen" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:62 +msgid "Import File" +msgstr "Datei importieren" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:85 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Keine Datei ausgewählt" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:93 +msgid "Error uploading file. Please try again" +msgstr "Fehler beim Upload der Datei. Bitte versuchen Sie es erneut" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:98 +msgid "Incorrect file type" +msgstr "Falscher Dateityp" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:107 +msgid "Import file empty" +msgstr "Die importierte Datei ist leer" + +#: includes/admin/tools/class-acf-admin-tool-import.php:138 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Eine Feldgruppe importiert" +msgstr[1] "%s Feldgruppen importiert" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "Bedingungen für die Anzeige" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Zeige dieses Feld, wenn" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "und" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Regelgruppe hinzufügen" + +# @ acf +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:410 +#: pro/fields/class-acf-field-repeater.php:299 +msgid "Drag to reorder" +msgstr "Ziehen zum Sortieren" + +# @ acf +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Feld bearbeiten" + +# @ acf +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:359 +msgid "Edit" +msgstr "Bearbeiten" + +# @ acf +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Feld duplizieren" + +# @ acf +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Feld in eine andere Gruppe verschieben" + +# @ acf +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Verschieben" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Feld löschen" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete" +msgstr "Löschen" + +# @ acf +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Feldbeschriftung" + +# @ acf +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Dieser Name wird in der Bearbeitungsansicht eines Beitrags angezeigt" + +# @ acf +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Feldname" + +# @ acf +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "" +"Einzelnes Wort ohne Leerzeichen. Es sind nur Unter- und Bindestriche als " +"Sonderzeichen erlaubt" + +# @ acf +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Feldtyp" + +# @ acf +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Anweisungen" + +# @ acf +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "" +"Anweisungen für die Autoren. Sie werden in der Bearbeitungsansicht angezeigt" + +# @ acf +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Erforderlich?" + +# @ acf +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Wrapper-Attribute" + +# @ acf +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "Breite" + +# @ acf +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "Klasse" + +# @ acf +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "ID" + +# @ acf +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Feld schließen" + +# @ acf +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Reihenfolge" + +# @ acf +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Beschriftung" + +# @ acf +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Name" +msgstr "Name" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Schlüssel" + +# @ acf +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Typ" + +# @ acf +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Es sind noch keine Felder angelegt. Klicken Sie den + Feld " +"hinzufügen-Button und erstellen Sie Ihr erstes Feld." + +# @ acf +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Feld hinzufügen" + +# @ acf +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regeln" + +# @ acf +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Erstellen Sie ein Regelwerk das festlegt welche Bearbeitungs-Ansichten diese " +"Advanced Custom Fields nutzen" + +# @ acf +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stil" + +# @ acf +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "WP-Metabox (Standard)" + +# @ acf +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Übergangslos ohne Metabox" + +# @ acf +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Position" + +# @ acf +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Nach dem Titel vor dem Inhalt" + +# @ acf +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Nach dem Inhalt" + +# @ acf +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Seitlich neben dem Inhalt" + +# @ acf +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Platzierung der Beschriftung" + +# @ acf +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Über dem Feld" + +# @ acf +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Links neben dem Feld" + +# @ acf +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Platzierung der Anweisungen" + +# @ acf +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Unterhalb der Beschriftungen" + +# @ acf +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Unterhalb der Felder" + +# @ acf +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Reihenfolge" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Feldgruppen mit einem niedrigeren Wert werden zuerst angezeigt" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "In der Feldgruppen-Liste anzeigen" + +# @ acf +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "Permalink" + +# @ acf +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "Inhalts-Editor" + +# @ acf +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Textauszug" + +# @ acf +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Diskussion" + +# @ acf +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Kommentare" + +# @ acf +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Revisionen" + +# @ acf +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Titelform" + +# @ acf +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Autor" + +# @ acf +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Format" + +# @ acf +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Seiten-Attribute" + +# @ acf +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "Beitragsbild" + +# @ acf +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Kategorien" + +# @ acf +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Schlagworte" + +# @ acf +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Sende Trackbacks" + +# @ acf +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Verstecken" + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Wählen Sie die Elemente, welche in der Bearbeitungsansicht " +"verborgen werden sollen." + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Werden in der Bearbeitungsansicht mehrere Feldgruppen angezeigt, werden die " +"Optionen der ersten Feldgruppe verwendet (die mit der niedrigsten Nummer in " +"der Reihe)" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Folgende Websites erfordern ein Upgrade der Datenbank. Markieren Sie die " +"gewünschten Seiten und klicken Sie dann %s." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Websites upgraden" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Website" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Die Website erfordert ein Upgrade der Datenbank von %s auf %s" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "Die Website ist aktuell" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Upgrade der Datenbank fertiggestellt. Zum Netzwerk Dashboard" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "Bitte zumindest eine Website zum Upgrade auswählen." + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Es wird dringend empfohlen, dass Sie ihre Datenbank sichern, bevor Sie " +"fortfahren. Sind sie sicher, dass Sie jetzt die Aktualisierung durchführen " +"wollen?" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Daten auf Version %s upgraden" + +# @ default +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Upgrade abgeschlossen." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Upgrade fehlgeschlagen." + +# @ acf +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "Aufgaben für das Upgrade einlesen…" + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "" +"Datenbank-Upgrade abgeschlossen. Schauen Sie nach was es " +"Neues gibt" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "Keine Aktualisierungen verfügbar." + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "Zurück zur Werkzeugübersicht" + +# @ acf +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Zeige diese Felder, wenn" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Wiederholung" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Flexible Inhalte" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerie" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Options-Seite" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Es ist ein Upgrade der Datenbank erforderlich" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Danke für die Aktualisierung auf %s v%s!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "" +"Die vorliegende Version enthält Verbesserungen für deine Datenbank und " +"erfordert ein Upgrade." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "" +"Stellen Sie bitte ebenfalls sicher, dass alle Premium-Add-ons (%s) auf die " +"neueste Version aktualisiert wurden." + +# @ acf +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Zusatz-Module" + +# @ acf +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Download & Installieren" + +# @ acf +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Installiert" + +# @ acf +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Willkommen bei Advanced Custom Fields" + +# @ acf +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Vielen Dank fürs Aktualisieren! ACF %s ist größer und besser als je zuvor. " +"Wir hoffen es wird ihnen gefallen." + +# @ acf +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Eine reibungslosere Erfahrung" + +# @ acf +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "Verbesserte Benutzerfreundlichkeit" + +# @ acf +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Durch die Einführung der beliebten Select2 Bibliothek wurde sowohl die " +"Benutzerfreundlichkeit als auch die Geschwindigkeit einiger Feldtypen wie " +"Beitrags-Objekte, Seiten-Links, Taxonomien sowie von Auswahl-Feldern " +"signifikant verbessert." + +# @ acf +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "Verbessertes Design" + +# @ acf +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Viele Felder wurden visuell überarbeitet, damit ACF besser denn je aussieht! " +"Die markantesten Änderungen erfuhren das Galerie-, Beziehungs- sowie das " +"nagelneue oEmbed-Feld!" + +# @ acf +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "Verbesserte Datenstruktur" + +# @ acf +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Die Neugestaltung der Datenarchitektur erlaubt es, dass Unterfelder " +"unabhängig von ihren übergeordneten Feldern existieren können. Dies " +"ermöglicht, dass Felder per Drag-and-Drop, in und aus ihren übergeordneten " +"Feldern verschoben werden können!" + +# @ acf +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Macht's gut Add-ons… Hallo PRO" + +# @ acf +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "Wir dürfen vorstellen… ACF PRO" + +# @ acf +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Wir haben die Art und Weise mit der die Premium-Funktionalität zur Verfügung " +"gestellt wird geändert - das \"wie\" dürfte Sie begeistern!" + +# @ acf +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Alle vier, vormals separat erhältlichen, Premium-Add-ons wurden in der neuen " +"Pro-Version von ACF zusammengefasst. Besagte Premium-" +"Funktionalität, erhältlich in einer Einzel- sowie einer Entwickler-Lizenz, " +"ist somit erschwinglicher denn je!" + +# @ acf +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Leistungsstarke Funktionen" + +# @ acf +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO enthält leistungsstarke Funktionen wie wiederholbare Daten, Flexible " +"Inhalte-Layouts, ein wunderschönes Galerie-Feld sowie die Möglichkeit " +"zusätzliche Options-Seiten im Admin-Bereich zu erstellen!" + +# @ acf +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Lesen Sie mehr über die ACF PRO Funktionen." + +# @ acf +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Kinderleichte Aktualisierung" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" +"Das Upgrade auf ACF PRO ist leicht. Einfach online eine Lizenz erwerben und " +"das Plugin herunterladen!" + +# @ acf +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" +"Um möglichen Fragen zu begegnen haben wir haben einen Upgrade-" +"Leitfaden (Engl.) erstellt. Sollten dennoch Fragen auftreten, " +"kontaktieren Sie bitte unser Support-Team ." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Neue Funktionen" + +# @ acf +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "Link-Feld" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"Das Link-Feld bietet einen einfachen Weg um einen Link (URL, Titel, Ziel) " +"entweder auszuwählen oder zu definieren." + +# @ acf +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Gruppen-Feld" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "" +"Das Gruppen-Feld bietet einen einfachen Weg eine Gruppe von Feldern zu " +"erstellen." + +# @ acf +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "oEmbed-Feld" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" +"Das oEmbed-Feld erlaubt auf eine einfache Weise Videos, Bilder, Tweets, " +"Audio und weitere Inhalte einzubetten." + +# @ acf +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Klon-Feld" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "" +"Das Klon-Feld erlaubt es ihnen bestehende Felder auszuwählen und anzuzeigen." + +# @ acf +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "Mehr AJAX" + +# @ acf +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "" +"Mehr Felder verwenden nun eine AJAX-basierte Suche, die die Ladezeiten von " +"Seiten deutlich verringert." + +# @ acf +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "Lokales JSON" + +# @ acf +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"Ein neuer automatischer Export nach JSON verbessert die Geschwindigkeit und " +"erlaubt die Synchronisation." + +# @ acf +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Einfacher Import / Export" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "" +"Importe sowie Exporte können beide einfach auf der neuen Werkzeug-Seite " +"durchgeführt werden." + +# @ acf +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "Neue Positionen für Formulare" + +# @ acf +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" +"Felder können nun auch Menüs, Menüpunkten, Kommentaren, Widgets und allen " +"Benutzer-Formularen zugeordnet werden!" + +# @ acf +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Weitere Anpassungen" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" +"Neue Aktionen und Filter für PHP und JS wurden hinzugefügt um noch mehr " +"Anpassungen zu erlauben." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Eine modernisierte Benutzeroberfläche" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "" +"Das Design des kompletten Plugins wurde modernisiert, inklusive neuer " +"Feldtypen, Einstellungen und Aussehen!" + +# @ acf +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Neue Einstellungen" + +# @ acf +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" +"Die Feldgruppen wurden um die Einstellungen für das Aktivieren und " +"Deaktivieren der Gruppe, die Platzierung von Beschriftungen und Anweisungen " +"sowie eine Beschreibung erweitert." + +# @ acf +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "Verbesserte Frontend-Formulare" + +# @ acf +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"acf_form() kann jetzt einen neuen Beitrag direkt beim Senden erstellen " +"inklusive vieler neuer Einstellungsmöglichkeiten." + +# @ acf +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Bessere Validierung" + +# @ acf +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "" +"Die Formular-Validierung wird nun mit Hilfe von PHP + AJAX erledigt, " +"anstelle nur JS zu verwenden." + +# @ acf +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Verschiebbare Felder" + +# @ acf +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"Die neue Feldgruppen-Funktionalität erlaubt es ein Feld zwischen Gruppen und " +"übergeordneten Gruppen frei zu verschieben." + +# @ acf +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Wir glauben Sie werden die Änderungen in %s lieben." + +# @ acf +#: includes/api/api-helpers.php:1003 +msgid "Thumbnail" +msgstr "Vorschaubild" + +# @ acf +#: includes/api/api-helpers.php:1004 +msgid "Medium" +msgstr "Mittel" + +# @ acf +#: includes/api/api-helpers.php:1005 +msgid "Large" +msgstr "Groß" + +# @ acf +#: includes/api/api-helpers.php:1054 +msgid "Full Size" +msgstr "Volle Größe" + +# @ acf +#: includes/api/api-helpers.php:1775 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(ohne Titel)" + +# @ acf +#: includes/api/api-helpers.php:3783 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Die Breite des Bildes muss mindestens %dpx sein." + +# @ acf +#: includes/api/api-helpers.php:3788 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Die Breite des Bildes darf %dpx nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:3804 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Die Höhe des Bildes muss mindestens %dpx sein." + +# @ acf +#: includes/api/api-helpers.php:3809 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Die Höhe des Bild darf %dpx nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:3827 +#, php-format +msgid "File size must be at least %s." +msgstr "Die Dateigröße muss mindestens %s sein." + +# @ acf +#: includes/api/api-helpers.php:3832 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Die Dateigröße darf %s nicht überschreiten." + +# @ acf +#: includes/api/api-helpers.php:3866 +#, php-format +msgid "File type must be %s." +msgstr "Der Dateityp muss %s sein." + +# @ acf +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Die vorgenommenen Änderungen gehen verloren wenn diese Seite verlassen wird" + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Auswählen" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "Bearbeiten" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "Aktualisieren" + +# @ acf +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "Zu diesem Beitrag hochgeladen" + +# @ acf +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "Details einblenden" + +# @ acf +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "Details ausblenden" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "Eingeschränkt" + +# @ acf +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "Alle Bilder" + +# @ acf +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "Überprüfung erfolgreich" + +# @ acf +#: includes/assets.php:182 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Überprüfung fehlgeschlagen" + +# @ acf +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "Für 1 Feld ist eine Aktualisierung notwendig" + +# @ acf +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "Für %d Felder ist eine Aktualisierung notwendig" + +# @ acf +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "Wirklich entfernen?" + +# @ acf +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Ja" + +# @ acf +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Nein" + +# @ acf +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:360 +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Remove" +msgstr "Entfernen" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "Abbrechen" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "Hat einen Wert" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "Hat keinen Wert" + +# @ acf +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "Wert ist gleich" + +# @ acf +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "Wert ist ungleich" + +# @ acf +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "Wert entspricht regulärem Ausdruck" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "Wert enthält" + +# @ acf +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "Wert ist größer als" + +# @ acf +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "Wert ist kleiner als" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "Auswahl ist größer als" + +# @ acf +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "Auswahl ist kleiner als" + +# @ acf +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "Feldgruppe bearbeiten" + +# @ acf +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Feldtyp existiert nicht" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Unbekannt" + +# @ acf +#: includes/fields.php:349 +msgid "Basic" +msgstr "Grundlage" + +# @ acf +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Inhalt" + +# @ acf +#: includes/fields.php:351 +msgid "Choice" +msgstr "Auswahl" + +# @ acf +#: includes/fields.php:352 +msgid "Relational" +msgstr "Relational" + +# @ acf +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +# @ acf +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:553 +#: pro/fields/class-acf-field-flexible-content.php:602 +#: pro/fields/class-acf-field-repeater.php:448 +msgid "Layout" +msgstr "Layout" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Akkordeon" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Geöffnet" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Dieses Akkordeon beim Laden der Seite als geöffnet anzeigen." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Gleichzeitig geöffnet" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Erlaubt dieses Akkordeon zu öffnen ohne andere zu schließen." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Endpunkt" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Definiert einen Endpunkt an dem das vorangegangene Akkordeon endet. Dieses " +"abschließende Akkordeon wird nicht sichtbar sein." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Button-Gruppe" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "Auswahlmöglichkeiten" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "Jede Auswahlmöglichkeit in eine neue Zeile eingeben." + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Für mehr Kontrolle, können Sie sowohl einen Wert als auch eine Beschriftung " +"wie folgt angeben:" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "rot : Rot" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "NULL-Werte zulassen?" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "Standardwert" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "Erscheint bei der Erstellung eines neuen Beitrags" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Horizontal" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Vertikal" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Rückgabewert" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Legt den Rückgabewert für das Frontend fest" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "Wert" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "Beide (Array)" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "Checkbox" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Alle auswählen" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Neue Auswahlmöglichkeit hinzufügen" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Individuelle Werte erlauben" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Erlaubt das Hinzufügen individueller Werte" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Individuelle Werte speichern" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Individuelle Werte unter den Auswahlmöglichkeiten des Feldes speichern" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "Jeden Standardwert in einer neuen Zeile eingeben" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Alle Auswählen" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" +"Hängt eine zusätzliche Checkbox an mit der alle Optionen ausgewählt werden " +"können" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Farbauswahl" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Leeren" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Standard" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Farbe auswählen" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Aktuelle Farbe" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Datumsauswahl" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Fertig" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Heute" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Nächstes" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Vorheriges" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "W" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Darstellungsformat" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Das Format für die Anzeige in der Bearbeitungsansicht" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Individuelles Format:" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "Speicherformat" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "Das Format das beim Speichern eines Wertes verwendet wird" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +msgid "Return Format" +msgstr "Rückgabeformat" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Das Format für die Ausgabe in den Template-Funktionen" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "Die Woche beginnt am" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Datums- und Zeitauswahl" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Zeit auswählen" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Zeit" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Stunde" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minute" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Sekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Millisekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosekunde" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Zeitzone" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Jetzt" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Fertig" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Auswählen" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "Vorm." + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "Vorm." + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "Nachm." + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "Nachm." + +# @ acf +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "E-Mail" + +# @ acf +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Platzhaltertext" + +# @ acf +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Platzhaltertext solange keine Eingabe im Feld vorgenommen wurde" + +# @ acf +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Voranstellen" + +# @ acf +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Wird dem Eingabefeld vorangestellt" + +# @ acf +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Anhängen" + +# @ acf +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Wird dem Eingabefeld hinten angestellt" + +# @ acf +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Datei" + +# @ acf +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Datei bearbeiten" + +# @ acf +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Datei aktualisieren" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Dateiname" + +# @ acf +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:708 +#: pro/fields/class-acf-field-gallery.php:737 +msgid "File size" +msgstr "Dateigröße" + +# @ acf +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Datei hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Datei-Array" + +# @ acf +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "Datei-URL" + +# @ acf +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "Datei-ID" + +# @ acf +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:673 +msgid "Library" +msgstr "Mediathek" + +# @ acf +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:674 +msgid "Limit the media library choice" +msgstr "Beschränkt die Auswahl in der Mediathek" + +# @ acf +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:679 +#: pro/locations/class-acf-location-block.php:79 +msgid "All" +msgstr "Alle" + +# @ acf +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:680 +msgid "Uploaded to post" +msgstr "Für den Beitrag hochgeladen" + +# @ acf +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:687 +msgid "Minimum" +msgstr "Minimum" + +# @ acf +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "Beschränkt welche Dateien hochgeladen werden können" + +# @ acf +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:716 +msgid "Maximum" +msgstr "Maximum" + +# @ acf +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:745 +msgid "Allowed file types" +msgstr "Erlaubte Dateiformate" + +# @ acf +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:746 +msgid "Comma separated list. Leave blank for all types" +msgstr "" +"Eine durch Komma getrennte Liste. Leer lassen um alle Dateiformate zu " +"erlauben" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google Maps" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Dieser Browser unterstützt keine Geo-Lokation" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "Position löschen" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "Aktuelle Position finden" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "Nach der Adresse suchen..." + +# @ acf +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "Mittelpunkt" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "Mittelpunkt der Ausgangskarte" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "Zoom" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "Legt die anfängliche Zoomstufe der Karte fest" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:699 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Height" +msgstr "Höhe" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "Passt die Höhe der Karte an" + +# @ acf +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Gruppe" + +# @ acf +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:384 +msgid "Sub Fields" +msgstr "Unterfelder" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Gibt die Art an wie die ausgewählten Felder ausgegeben werden sollen" + +# @ acf +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:456 +#: pro/locations/class-acf-location-block.php:27 +msgid "Block" +msgstr "Block" + +# @ acf +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:455 +msgid "Table" +msgstr "Tabelle" + +# @ acf +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:614 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Row" +msgstr "Reihe" + +# @ acf +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Bild" + +# @ acf +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "Bild auswählen" + +# @ acf +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "Bild bearbeiten" + +# @ acf +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "Bild aktualisieren" + +# @ acf +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "Kein Bild ausgewählt" + +# @ acf +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "Bild hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "Bild-Array" + +# @ acf +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "Bild-URL" + +# @ acf +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "Bild-ID" + +# @ acf +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "Maße der Vorschau" + +# @ acf +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "Legt fest welche Maße die Vorschau in der Bearbeitungsansicht hat" + +# @ acf +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Restrict which images can be uploaded" +msgstr "Beschränkt welche Bilder hochgeladen werden können" + +# @ acf +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:691 +#: pro/fields/class-acf-field-gallery.php:720 +msgid "Width" +msgstr "Breite" + +# @ acf +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Link" + +# @ acf +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Link auswählen" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "In einem neuen Fenster/Tab öffnen" + +# @ acf +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Link-Array" + +# @ acf +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "Link-URL" + +# @ acf +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Mitteilung" + +# @ acf +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Neue Zeilen" + +# @ acf +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Legt fest wie Zeilenumbrüche gerendert werden" + +# @ acf +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Automatisches hinzufügen von Absätzen" + +# @ acf +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Automatisches hinzufügen von <br>" + +# @ acf +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Keine Formatierung" + +# @ acf +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Escape HTML" + +# @ acf +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" +"Erlaubt HTML-Markup als sichtbaren Text anzuzeigen anstelle diesen zu rendern" + +# @ acf +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Numerisch" + +# @ acf +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "Mindestwert" + +# @ acf +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "Maximalwert" + +# @ acf +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Schrittweite" + +# @ acf +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Wert muss eine Zahl sein" + +# @ acf +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Wert muss größer oder gleich %d sein" + +# @ acf +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Wert muss kleiner oder gleich %d sein" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "URL eingeben" + +# @ acf +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Maße" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Seiten-Link" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archive" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Übergeordnet" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "Nach Inhaltstyp filtern" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "Alle Inhaltstypen" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "Nach Taxonomien filtern" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "Alle Taxonomien" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Archiv-URL's zulassen" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "Mehrere Werte auswählbar?" + +# @ acf +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Passwort" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "Beitrags-Objekt" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "Beitrags-ID" + +# @ acf +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Radio-Button" + +# @ acf +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Weitere" + +# @ acf +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "" +"Das Hinzufügen der Auswahlmöglichkeit ‚Weitere‘ erlaubt benutzerdefinierte " +"Werte" + +# @ acf +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Weitere speichern" + +# @ acf +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Weitere Werte unter den Auswahlmöglichkeiten des Feldes speichern" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Numerischer Bereich" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Beziehung" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "Maximum der Einträge mit ({max} Einträge) erreicht" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "Lade" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Keine Übereinstimmung gefunden" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "Inhaltstyp auswählen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "Taxonomie auswählen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "Suchen..." + +# @ acf +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "Filter" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Inhaltstyp" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taxonomie" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "Elemente" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "Die ausgewählten Elemente werden in jedem Ergebnis angezeigt" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "Mindestzahl an Beiträgen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "Höchstzahl an Beiträgen" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:818 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s benötigt mindestens %s Selektion" +msgstr[1] "%s benötigt mindestens %s Selektionen" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Auswahl" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "" +"Es ist ein Ergebnis verfügbar, drücken Sie die Eingabetaste um es " +"auszuwählen." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"Es sind %d Ergebnisse verfügbar, benutzen Sie die Pfeiltasten um nach oben " +"und unten zu navigieren." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Keine Übereinstimmungen gefunden" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Geben Sie bitte ein oder mehr Zeichen ein" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Geben Sie bitte %d oder mehr Zeichen ein" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Löschen Sie bitte ein Zeichen" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Löschen Sie bitte %d Zeichen" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Sie können nur ein Element auswählen" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Sie können nur %d Elemente auswählen" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Mehr Ergebnisse laden…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Suchen…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Laden fehlgeschlagen" + +# @ acf +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Select2-Library aktivieren" + +# @ acf +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "AJAX verwenden um die Auswahl mittels Lazy Loading zu laden?" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "Legen Sie den Rückgabewert fest" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Trennelement" + +# @ acf +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Tab" + +# @ acf +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Platzierung" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Definiert einen Endpunkt an dem die vorangegangenen Tabs enden. Das ist der " +"Startpunkt für eine neue Gruppe an Tabs." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Keine %s" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Wählen Sie die Taxonomie, welche angezeigt werden soll" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Anzeige" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Wählen Sie das Aussehen für dieses Feld" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Mehrere Werte" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Auswahlmenü" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Einzelne Werte" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Radio Button" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Begriffe erstellen" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Erlaubt das Erstellen neuer Begriffe während des Bearbeitens" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Begriffe speichern" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "Verbindet die ausgewählten Begriffe mit dem Beitrag" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Begriffe laden" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Den Wert aus den Begriffen des Beitrags laden" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Begriffs-Objekt" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "Begriffs-ID" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "Der Benutzer kann keine neue %s hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s ist bereits vorhanden" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s hinzugefügt" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Hinzufügen" + +# @ acf +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Text einzeilig" + +# @ acf +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Zeichenbegrenzung" + +# @ acf +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Leer lassen für keine Begrenzung" + +#: includes/fields/class-acf-field-text.php:181 +#: includes/fields/class-acf-field-textarea.php:213 +#, php-format +msgid "Value must not exceed %d characters" +msgstr "Wert darf %d Zeichen nicht überschreiten" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Text mehrzeilig" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Zeilenanzahl" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Definiert die Höhe des Textfelds" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Zeitauswahl" + +# @ acf +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Wahr / Falsch" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Zeigt den Text neben der Checkbox an" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Wenn aktiv" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Der Text der im aktiven Zustand angezeigt wird" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Wenn inaktiv" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Der Text der im inaktiven Zustand angezeigt wird" + +# @ acf +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "URL" + +# @ acf +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Bitte eine gültige URL eingeben" + +# @ acf +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Benutzer" + +# @ acf +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "Nach Rolle filtern" + +# @ acf +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "Alle Benutzerrollen" + +# @ acf +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "Benutzer-Array" + +# @ acf +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "Benutzer-Objekt" + +# @ acf +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "Benutzer-ID" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "WYSIWYG-Editor" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Visuell" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "Klicken um TinyMCE zu initialisieren" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "Tabs" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Visuell & Text" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Nur Visuell" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Nur Text" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "Werkzeugleiste" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "Button zum Hochladen von Medien anzeigen?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "Initialisierung verzögern?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE wird nicht initialisiert solange das Feld nicht geklickt wurde" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "E-Mail bestätigen" + +# @ acf +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:591 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Aktualisieren" + +# @ acf +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Beitrag aktualisiert" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Spam entdeckt" + +# @ acf +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Beitrag" + +# @ acf +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Seite" + +# @ acf +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulare" + +# @ acf +#: includes/locations.php:243 +msgid "is equal to" +msgstr "ist gleich" + +# @ acf +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "ist ungleich" + +# @ acf +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Dateianhang" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Alle %s Formate" + +# @ acf +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Kommentar" + +# @ acf +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Aktuelle Benutzerrolle" + +# @ acf +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super-Administrator" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Aktueller Benutzer" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Angemeldet" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Frontend anzeigen" + +# @ acf +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Backend anzeigen" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Menüelement" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menü" + +# @ acf +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Menüpositionen" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menüs" + +# @ acf +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Übergeordnete Seite" + +# @ acf +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Seiten-Template" + +# @ acf +#: includes/locations/class-acf-location-page-template.php:87 +#: includes/locations/class-acf-location-post-template.php:134 +msgid "Default Template" +msgstr "Standard-Template" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Seitentyp" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Startseite" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Beitrags-Seite" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Seite ohne übergeordnete Seiten" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Übergeordnete Seite (mit Unterseiten)" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Unterseite (mit übergeordneter Seite)" + +# @ acf +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Beitragskategorie" + +# @ acf +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Beitragsformat" + +# @ acf +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Beitragsstatus" + +# @ acf +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Beitrags-Taxonomie" + +# @ acf +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Beitrags-Template" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Benutzerformular" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Hinzufügen / Bearbeiten" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registrieren" + +# @ acf +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Benutzerrolle" + +# @ acf +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +# @ acf +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s Wert ist erforderlich" + +# @ acf +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +# @ acf +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "Veröffentlichen" + +# @ acf +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Keine Feldgruppen für diese Options-Seite gefunden. Eine " +"Feldgruppe erstellen" + +# @ acf +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr "" +"Fehler. Es konnte keine Verbindung zum Aktualisierungsserver " +"hergestellt werden" + +# @ acf +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Aktualisierungen" + +#: pro/admin/admin-updates.php:191 +msgid "" +"Error. Could not authenticate update package. Please check again or " +"deactivate and reactivate your ACF PRO license." +msgstr "" +"Fehler. Das Aktualisierungspaket konnte nicht authentifiziert werden. " +"Bitte probieren Sie es nochmal oder deaktivieren und reaktivieren Sie ihre " +"ACF PRO-Lizenz." + +# @ acf +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Lizenz deaktivieren" + +# @ acf +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Lizenz aktivieren" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Lizenzinformation" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Um die Aktualisierungsfähigkeit freizuschalten geben Sie bitte unten Ihren " +"Lizenzschlüssel ein. Falls Sie keinen besitzen sollten informieren Sie sich " +"bitte hier hinsichtlich Preisen und aller " +"weiteren Details." + +# @ acf +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Lizenzschlüssel" + +# @ acf +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Aktualisierungsinformationen" + +# @ acf +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Installierte Version" + +# @ acf +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Aktuellste Version" + +# @ acf +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Aktualisierung verfügbar" + +# @ acf +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Plugin aktualisieren" + +# @ acf +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "" +"Bitte geben Sie oben Ihren Lizenzschlüssel ein um die " +"Aktualisierungsfähigkeit freizuschalten" + +# @ acf +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Erneut suchen" + +# @ acf +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Hinweis zum Upgrade" + +#: pro/blocks.php:371 +msgid "Switch to Edit" +msgstr "Zum Bearbeiten wechseln" + +#: pro/blocks.php:372 +msgid "Switch to Preview" +msgstr "Zur Vorschau wechseln" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Klon" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Wählen Sie ein oder mehrere Felder aus die Sie klonen möchten" + +# @ acf +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Anzeige" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Geben Sie den Stil an mit dem das Klon-Feld angezeigt werden soll" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Gruppe (zeigt die ausgewählten Felder in einer Gruppe innerhalb dieses " +"Feldes an)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Nahtlos (ersetzt dieses Feld mit den ausgewählten Feldern)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Beschriftungen werden als %s angezeigt" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Präfix für Feldbeschriftungen" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Werte werden als %s gespeichert" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Präfix für Feldnamen" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Unbekanntes Feld" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Unbekannte Feldgruppe" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Alle Felder der Feldgruppe %s" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:468 +msgid "Add Row" +msgstr "Eintrag hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:924 +#: pro/fields/class-acf-field-flexible-content.php:1006 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "Layout" +msgstr[1] "Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "Einträge" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:923 +#: pro/fields/class-acf-field-flexible-content.php:1005 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Dieses Feld erfordert mindestens {min} {label} {identifier}" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Dieses Feld erlaubt höchstens {max} {label} {identifier}" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} möglich (max {max})" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} erforderlich (min {min})" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Flexibler Inhalt benötigt mindestens ein Layout" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:287 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Klicke \"%s\" zum Erstellen des Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:413 +msgid "Add layout" +msgstr "Layout hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:414 +msgid "Remove layout" +msgstr "Layout entfernen" + +#: pro/fields/class-acf-field-flexible-content.php:415 +#: pro/fields/class-acf-field-repeater.php:301 +msgid "Click to toggle" +msgstr "Zum Auswählen anklicken" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder Layout" +msgstr "Layout sortieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder" +msgstr "Sortieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete Layout" +msgstr "Layout löschen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate Layout" +msgstr "Layout duplizieren" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New Layout" +msgstr "Neues Layout hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:629 +msgid "Min" +msgstr "Min" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:642 +msgid "Max" +msgstr "Max" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:669 +#: pro/fields/class-acf-field-repeater.php:464 +msgid "Button Label" +msgstr "Button-Beschriftung" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:678 +msgid "Minimum Layouts" +msgstr "Mindestzahl an Layouts" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:687 +msgid "Maximum Layouts" +msgstr "Höchstzahl an Layouts" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "Bild zur Galerie hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "Maximale Auswahl erreicht" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:338 +msgid "Length" +msgstr "Länge" + +#: pro/fields/class-acf-field-gallery.php:381 +msgid "Caption" +msgstr "Bildunterschrift" + +#: pro/fields/class-acf-field-gallery.php:390 +msgid "Alt Text" +msgstr "Alt Text" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:562 +msgid "Add to gallery" +msgstr "Zur Galerie hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Bulk actions" +msgstr "Massenverarbeitung" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Sort by date uploaded" +msgstr "Sortiere nach Upload-Datum" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:568 +msgid "Sort by date modified" +msgstr "Sortiere nach Änderungs-Datum" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:569 +msgid "Sort by title" +msgstr "Sortiere nach Titel" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Reverse current order" +msgstr "Aktuelle Sortierung umkehren" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:588 +msgid "Close" +msgstr "Schließen" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum Selection" +msgstr "Minimale Auswahl" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:651 +msgid "Maximum Selection" +msgstr "Maximale Auswahl" + +#: pro/fields/class-acf-field-gallery.php:660 +msgid "Insert" +msgstr "Einfügen" + +#: pro/fields/class-acf-field-gallery.php:661 +msgid "Specify where new attachments are added" +msgstr "Gibt an wo neue Anhänge hinzugefügt werden" + +#: pro/fields/class-acf-field-gallery.php:665 +msgid "Append to the end" +msgstr "Anhängen" + +#: pro/fields/class-acf-field-gallery.php:666 +msgid "Prepend to the beginning" +msgstr "Voranstellen" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:661 +msgid "Minimum rows reached ({min} rows)" +msgstr "Mindestzahl der Einträge hat ({min} Reihen) erreicht" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "Höchstzahl der Einträge hat ({max} Reihen) erreicht" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:338 +msgid "Add row" +msgstr "Eintrag hinzufügen" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:339 +msgid "Remove row" +msgstr "Eintrag löschen" + +#: pro/fields/class-acf-field-repeater.php:417 +msgid "Collapsed" +msgstr "Zugeklappt" + +#: pro/fields/class-acf-field-repeater.php:418 +msgid "Select a sub field to show when row is collapsed" +msgstr "" +"Wähle ein Unterfelder welches im zugeklappten Zustand angezeigt werden soll" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:428 +msgid "Minimum Rows" +msgstr "Mindestzahl der Einträge" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:438 +msgid "Maximum Rows" +msgstr "Höchstzahl der Einträge" + +# @ acf +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Keine Options-Seiten vorhanden" + +# @ acf +#: pro/options-page.php:51 +msgid "Options" +msgstr "Optionen" + +# @ acf +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Optionen aktualisiert" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Um die Aktualisierungsfähigkeit freizuschalten geben Sie bitte Ihren " +"Lizenzschlüssel auf der Aktualisierungen Seite ein. Falls " +"Sie keinen besitzen informieren Sie sich bitte hier hinsichtlich der Preise und Einzelheiten." + +#: tests/basic/test-blocks.php:13 +msgid "Testimonial" +msgstr "Testimonial" + +#: tests/basic/test-blocks.php:14 +msgid "A custom testimonial block." +msgstr "Ein individueller Testimonial-Block." + +#: tests/basic/test-blocks.php:40 +msgid "Slider" +msgstr "Slider" + +# @ acf +#: tests/basic/test-blocks.php:41 +msgid "A custom gallery slider." +msgstr "Ein individueller Galerie-Slider." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +# @ acf +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +# @ acf +#~ msgid "%s field group duplicated." +#~ msgid_plural "%s field groups duplicated." +#~ msgstr[0] "%s Feldgruppe dupliziert." +#~ msgstr[1] "%s Feldgruppen dupliziert." + +# @ acf +#~ msgid "%s field group synchronised." +#~ msgid_plural "%s field groups synchronised." +#~ msgstr[0] "%s Feldgruppe synchronisiert." +#~ msgstr[1] "%s Feldgruppen synchronisiert." + +# @ acf +#~ msgid "Error. Could not load add-ons list" +#~ msgstr "" +#~ "Fehler. Die Liste der Zusatz-Module kann nicht geladen werden" + +#~ msgid "Error validating request" +#~ msgstr "Fehler bei der Überprüfung der Anfrage" + +# @ acf +#~ msgid "Advanced Custom Fields Database Upgrade" +#~ msgstr "Advanced Custom Fields Datenbank-Upgrade" + +# @ acf +#~ msgid "" +#~ "Before you start using the new awesome features, please update your " +#~ "database to the newest version." +#~ msgstr "" +#~ "Bevor Sie die großartigen neuen Funktionen nutzen können ist ein Upgrade " +#~ "der Datenbank notwendig." + +# @ acf +#~ msgid "" +#~ "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +#~ msgstr "" +#~ "Wir haben den Aktualisierungsprozess so einfach wie möglich gehalten; melden Sie sich mit Ihrem Store-Account an und fordern " +#~ "Sie ein Gratisexemplar von ACF PRO an!" + +# @ acf +#~ msgid "Under the Hood" +#~ msgstr "Unter der Haube" + +# @ acf +#~ msgid "Smarter field settings" +#~ msgstr "Intelligentere Feld-Einstellungen" + +# @ acf +#~ msgid "ACF now saves its field settings as individual post objects" +#~ msgstr "" +#~ "ACF speichert nun die Feld-Einstellungen als individuelle Beitrags-Objekte" + +# @ acf +#~ msgid "Better version control" +#~ msgstr "Verbesserte Versionskontrolle" + +# @ acf +#~ msgid "" +#~ "New auto export to JSON feature allows field settings to be version " +#~ "controlled" +#~ msgstr "" +#~ "Die neue JSON Export Funktionalität erlaubt die Versionskontrolle von " +#~ "Feld-Einstellungen" + +# @ acf +#~ msgid "Swapped XML for JSON" +#~ msgstr "JSON ersetzt XML" + +# @ acf +#~ msgid "Import / Export now uses JSON in favour of XML" +#~ msgstr "Das Import- und Export-Modul nutzt nun JSON anstelle XML" + +# @ acf +#~ msgid "New Forms" +#~ msgstr "Neue Formulare" + +# @ acf +#~ msgid "A new field for embedding content has been added" +#~ msgstr "Ein neues Feld für das Einbetten von Inhalten wurde hinzugefügt" + +# @ acf +#~ msgid "New Gallery" +#~ msgstr "Neue Galerie" + +# @ acf +#~ msgid "The gallery field has undergone a much needed facelift" +#~ msgstr "" +#~ "Das Galerie-Feld wurde einem längst überfälligen Face-Lifting unterzogen" + +# @ acf +#~ msgid "Relationship Field" +#~ msgstr "Beziehungs-Feld" + +# @ acf +#~ msgid "" +#~ "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +#~ msgstr "" +#~ "Neue Einstellungen innerhalb des Beziehungs-Feldes um nach Suche, " +#~ "Beitrags-Typ und oder Taxonomie filtern zu können" + +# @ acf +#~ msgid "New archives group in page_link field selection" +#~ msgstr "" +#~ "Im neuen Seitenlink-Feld werden alle Archiv-URL's der verfügbaren Custom " +#~ "Post Types in einer Options-Gruppe zusammengefasst" + +# @ acf +#~ msgid "Better Options Pages" +#~ msgstr "Verbesserte Options-Seiten" + +# @ acf +#~ msgid "" +#~ "New functions for options page allow creation of both parent and child " +#~ "menu pages" +#~ msgstr "" +#~ "Neue Funktionen für die Options-Seite erlauben die Erstellung von Menüs " +#~ "für übergeordnete Seiten sowie Unterseiten" + +# @ acf +#~ msgid "None" +#~ msgstr "Nur Text" + +#~ msgid "Error." +#~ msgstr "Fehler." + +# @ acf +#~ msgid "remove {layout}?" +#~ msgstr "{layout} löschen?" + +# @ acf +#~ msgid "This field requires at least {min} {identifier}" +#~ msgstr "Dieses Feld erfordert mindestens {min} {identifier}" + +# @ acf +#~ msgid "Maximum {label} limit reached ({max} {identifier})" +#~ msgstr "Maximale {label}-Anzahl erreicht ({max} {identifier})" + +# @ acf +#~ msgid "Parent fields" +#~ msgstr "Übergeordnete Felder" + +# @ acf +#~ msgid "Sibling fields" +#~ msgstr "Geschwister-Felder" + +# @ acf +#~ msgid "Locating" +#~ msgstr "Lokalisiere" + +# @ acf +#~ msgid "No embed found for the given URL." +#~ msgstr "Keine Inhalte für die eingegebene URL gefunden." + +# @ acf +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "Minimum der Einträge mit ({min} Einträge) erreicht" + +# @ acf +#~ msgid "Taxonomy Term" +#~ msgstr "Taxonomie" + +# @ acf +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Exportieren der Feld-Gruppen nach PHP" + +# @ acf +#~ msgid "Download export file" +#~ msgstr "JSON-Datei exportieren" + +# @ acf +#~ msgid "Generate export code" +#~ msgstr "Erstelle PHP-Code" + +# @ acf +#~ msgid "Import" +#~ msgstr "Importieren" + +# @ acf +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Ein Tab-Feld wird nicht korrekt dargestellt, wenn es zu einem " +#~ "Wiederholung- oder Flexible-Inhalte-Feld im Tabellen-Layout eingebunden " +#~ "ist" + +# @ acf +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "Mit \"Tab Feldern\" können Felder für eine bessere Struktur im Editor in " +#~ "Tabs zusammengefasst werden." + +# @ acf +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Alle Felder, die auf dieses \"Tab Feld\" folgen (oder bis ein weiteres " +#~ "\"Tab Feld\" definiert ist), werden in einem Tab mit dem Namen dieses " +#~ "Felds zusammengefasst." + +# @ acf +#~ msgid "Getting Started" +#~ msgstr "Erste Schritte" + +# @ acf +#~ msgid "Field Types" +#~ msgstr "Feld-Typen" + +# @ acf +#~ msgid "Functions" +#~ msgstr "Funktionen" + +# @ acf +#~ msgid "Actions" +#~ msgstr "Aktionen" + +#~ msgid "How to" +#~ msgstr "Kurzanleitungen" + +# @ acf +#~ msgid "Tutorials" +#~ msgstr "Ausführliche Anleitungen" + +#~ msgid "FAQ" +#~ msgstr "Häufig gestellte Fragen" + +#~ msgid "Term meta upgrade not possible (termmeta table does not exist)" +#~ msgstr "" +#~ "Term Meta-Aktualisierung war nicht möglich (die termmeta-Tabelle " +#~ "existiert nicht)" + +# @ acf +#~ msgid "Error" +#~ msgstr "Fehler" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "Ein Feld bedarf Ihrer Aufmerksamkeit." +#~ msgstr[1] "%d Felder bedürfen Ihrer Aufmerksamkeit." + +#~ msgid "" +#~ "Error validating ACF PRO license URL (website does not match). Please re-" +#~ "activate your license" +#~ msgstr "" +#~ "Fehler bei der Überprüfung der ACF PRO Lizenz URL (Webseiten stimmen " +#~ "nicht überein). Bitte reaktivieren sie ihre Lizenz" + +#~ msgid "Disabled" +#~ msgstr "Deaktiviert" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Deaktiviert (%s)" +#~ msgstr[1] "Deaktiviert (%s)" + +# @ acf +#~ msgid "'How to' guides" +#~ msgstr "Kurzanleitungen" + +# @ acf +#~ msgid "Created by" +#~ msgstr "Erstellt von" + +#~ msgid "Error loading update" +#~ msgstr "Fehler beim Laden der Aktualisierung" + +# @ acf +#~ msgid "See what's new" +#~ msgstr "Was ist neu" + +# @ acf +#~ msgid "eg. Show extra content" +#~ msgstr "z.B. Zeige zusätzliche Inhalte" + +#~ msgid "" +#~ "Error validating license URL (website does not match). Please re-activate " +#~ "your license" +#~ msgstr "" +#~ "Fehler bei der Überprüfung der Lizenz-URL (Webseite stimmt nicht " +#~ "überein). Bitte reaktivieren Sie ihre Lizenz" + +# @ acf +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "Erfolgreich. Der Import hat %s Feld-Gruppen hinzugefügt: %s" + +# @ acf +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Warnung. Der Import hat %s Feld-Gruppen erkannt, die schon " +#~ "vorhanden sind und diese ignoriert: %s" + +# @ acf +#~ msgid "Upgrade ACF" +#~ msgstr "Aktualisiere ACF" + +# @ acf +#~ msgid "Upgrade" +#~ msgstr "Aktualisieren" + +# @ acf +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to " +#~ "update and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "Die folgenden Seiten erfordern eine Datenbank- Aktualisierung. Markieren " +#~ "Sie die gewünschten Seiten und klicken \\\"Aktualisiere Datenbank\\\"." + +# @ acf +#~ msgid "Select" +#~ msgstr "Auswahlmenü" + +# @ acf +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "" +#~ "Verbindungsfehler. Entschuldigung, versuchen Sie es bitte später " +#~ "noch einmal" + +# @ acf +#~ msgid "Done" +#~ msgstr "Fertig" + +# @ acf +#~ msgid "Today" +#~ msgstr "Heute" + +# @ acf +#~ msgid "Show a different month" +#~ msgstr "Zeige einen anderen Monat" + +# @ acf +#~ msgid "See what's new in" +#~ msgstr "Neuerungen in" + +# @ acf +#~ msgid "version" +#~ msgstr "Version" + +#~ msgid "Upgrading data to" +#~ msgstr "Aktualisiere Daten auf" + +# @ acf +#~ msgid "Return format" +#~ msgstr "Rückgabe-Format" + +# @ acf +#~ msgid "uploaded to this post" +#~ msgstr "zu diesem Beitrag hochgeladen" + +# @ acf +#~ msgid "File Name" +#~ msgstr "Dateiname" + +# @ acf +#~ msgid "File Size" +#~ msgstr "Dateigröße" + +# @ acf +#~ msgid "No File selected" +#~ msgstr "Keine Datei ausgewählt" + +# @ acf +#~ msgid "License" +#~ msgstr "Lizenz" + +# @ acf +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Um die Aktualisierungs-Fähigkeit freizuschalten, tragen Sie bitte Ihren " +#~ "Lizenzschlüssel im darunterliegenden Feld ein. Sollten Sie noch keinen " +#~ "Lizenzschlüssel besitzen, informieren Sie sich bitte hier über die" + +# @ acf +#~ msgid "details & pricing" +#~ msgstr "Details und Preise." + +# @ acf +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "Um die Aktualisierungen freizuschalten, tragen Sie bitte Ihren " +#~ "Lizenzschlüssel auf der Aktualisierungen-Seite ein. " +#~ "Sollten Sie noch keinen Lizenzschlüssel besitzen, informieren Sie sich " +#~ "bitte hier über die Details und Preise" + +# @ acf +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +# @ acf +#~ msgid "http://www.advancedcustomfields.com/" +#~ msgstr "http://www.advancedcustomfields.com/" + +# @ acf +#~ msgid "elliot condon" +#~ msgstr "elliot condon" + +# @ acf +#~ msgid "Drag and drop to reorder" +#~ msgstr "Mittels Drag-and-Drop die Reihenfolge ändern" + +# @ acf +#~ msgid "Add new %s " +#~ msgstr "Neue %s " + +# @ acf +#~ msgid "Save Options" +#~ msgstr "Optionen speichern" + +#~ msgid "Sync Available" +#~ msgstr "Synchronisierung verfügbar" + +# @ acf +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "Bitte beachten Sie, dass der gesamte Text zuerst durch eine WordPress " +#~ "Funktion gefiltert wird. Siehe: " + +# @ acf +#~ msgid "Warning" +#~ msgstr "Warnung" + +# @ acf +#~ msgid "Show Field Keys" +#~ msgstr "Zeige Feld-Schlüssel" + +# @ acf +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "" +#~ "Felder-Gruppen werden nach diesem Wert sortiert, vom niedrigsten zum " +#~ "höchsten Wert." + +# @ acf +#~ msgid "Hide / Show All" +#~ msgstr "Alle Verstecken" + +# @ acf +#~ msgid "5.2.6" +#~ msgstr "5.2.6" + +# @ acf +#~ msgid "Sync Terms" +#~ msgstr "Einträge synchronisieren" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-es_ES.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..29ff1f7c1d6aae9805a143a54729f7b954866228 GIT binary patch literal 51561 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 LdvMd_(!l=%wTEin literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-es_ES.po b/wp-content/plugins/advanced-custom-fields/lang/acf-es_ES.po new file mode 100644 index 0000000..55ec866 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-es_ES.po @@ -0,0 +1,3592 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2017-06-27 15:35+1000\n" +"PO-Revision-Date: 2018-02-06 10:05+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Héctor Garrofé \n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:355 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Grupos de Campos" + +#: acf.php:356 +msgid "Field Group" +msgstr "Grupo de Campos" + +#: acf.php:357 acf.php:389 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New" +msgstr "Añadir nuevo" + +#: acf.php:358 +msgid "Add New Field Group" +msgstr "Añadir nuevo Field Group" + +#: acf.php:359 +msgid "Edit Field Group" +msgstr "Editar Grupo de Campos" + +#: acf.php:360 +msgid "New Field Group" +msgstr "Nuevo Grupo de Campos" + +#: acf.php:361 +msgid "View Field Group" +msgstr "Ver Grupo de Campos" + +#: acf.php:362 +msgid "Search Field Groups" +msgstr "Buscar Grupo de Campos" + +#: acf.php:363 +msgid "No Field Groups found" +msgstr "No se han encontrado Grupos de Campos" + +#: acf.php:364 +msgid "No Field Groups found in Trash" +msgstr "No se han encontrado Grupos de Campos en la Papelera" + +#: acf.php:387 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:857 +msgid "Fields" +msgstr "Campos" + +#: acf.php:388 +msgid "Field" +msgstr "Campo" + +#: acf.php:390 +msgid "Add New Field" +msgstr "Agregar Nuevo Campo" + +#: acf.php:391 +msgid "Edit Field" +msgstr "Editar Campo" + +#: acf.php:392 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Nuevo Campo" + +#: acf.php:393 +msgid "View Field" +msgstr "Ver Campo" + +#: acf.php:394 +msgid "Search Fields" +msgstr "Buscar Campos" + +#: acf.php:395 +msgid "No Fields found" +msgstr "No se encontraron campos" + +#: acf.php:396 +msgid "No Fields found in Trash" +msgstr "No se encontraron Campos en Papelera" + +#: acf.php:435 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Inactivo" + +#: acf.php:440 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Activo (%s)" +msgstr[1] "Activos (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Grupo de campos actualizado." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Grupo de campos eliminado." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Grupo de campos publicado." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Grupo de campos guardado." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Grupo de campos enviado." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Grupo de Campos programado." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Borrador del Grupo de Campos actualizado." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "Ubicación" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "Ajustes" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "Mover a papelera. Estás seguro?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "Chequeado" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "No hay campos de conmutación disponibles" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "El título del grupo de campos es requerido" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:732 +msgid "copy" +msgstr "copiar" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3970 +msgid "or" +msgstr "o" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "Campos Padre" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "Campos de mismo nivel" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "Mover Campo Personalizado" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Este campo no puede ser movido hasta que sus cambios se hayan guardado" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "Vacío" + +#: includes/admin/admin-field-group.php:281 includes/input.php:257 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "Los cambios que has realizado se perderán si navegas hacia otra página" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "" +"La cadena \"_field\" no se debe utilizar al comienzo de un nombre de campo" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Claves de Campo" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Activo" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "Movimiento Completo." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "El campo %s puede ser ahora encontrado en el grupo de campos %s" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "Cerrar Ventana" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "Por favor selecciona el destino para este campo" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "Mover Campo" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Activo (%s)" +msgstr[1] "Activos (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Grupo de campos duplicado. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s grupo de campos duplicado." +msgstr[1] "%s grupos de campos duplicado." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Grupo de campos sincronizado. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s grupo de campos sincronizado." +msgstr[1] "%s grupos de campos sincronizado." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Sincronización disponible" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:370 +msgid "Title" +msgstr "Título" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:397 +msgid "Description" +msgstr "Descripción" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Estado" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"Personaliza Wordpress con campos poderosos, profesionales e intuitivos." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:111 +msgid "Changelog" +msgstr "Changelog" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Ver las novedades de la versión %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Recursos" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Sitio web" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Documentación" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Soporte" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Gracias por crear con ACF." + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "Duplicar este ítem" + +#: includes/admin/admin-field-groups.php:668 +#: includes/admin/admin-field-groups.php:684 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate" +msgstr "Duplicar" + +#: includes/admin/admin-field-groups.php:701 +#: includes/fields/class-acf-field-google-map.php:132 +#: includes/fields/class-acf-field-relationship.php:737 +msgid "Search" +msgstr "Buscar" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "Selecciona %s" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "Sincronizar grupo de campos" + +#: includes/admin/admin-field-groups.php:768 +#: includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "Sincronizar" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "Aplicar" + +#: includes/admin/admin-field-groups.php:798 +msgid "Bulk Actions" +msgstr "Acciones en lote" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Campos Personalizados" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Actualizar Base de datos" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Revisar sitios y actualizar" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "¡Error al validar la solicitud!" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "No hay actualizaciones disponibles." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Agregados" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Error. No se pudo cargar la lista de agregados" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Info" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Qué hay de nuevo" + +#: includes/admin/settings-tools.php:50 +#: includes/admin/views/settings-tools-export.php:19 +#: includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "Herramientas" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "No se seleccionaron grupos de campos" + +#: includes/admin/settings-tools.php:184 +#: includes/fields/class-acf-field-file.php:174 +msgid "No file selected" +msgstr "No se seleccionó archivo" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "Error subiendo archivo. Por favor intente nuevamente" + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "Tipo de campo incorrecto" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "Archivo de imporación vacío" + +#: includes/admin/settings-tools.php:331 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Importar un grupo de campos" +msgstr[1] "Importar %s grupos de campos" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "Lógica Condicional" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Mostrar este campo si" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:243 +msgid "is equal to" +msgstr "es igual a" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "no es igual a" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "y" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Agregar grupo de reglas" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:420 +#: pro/fields/class-acf-field-repeater.php:358 +msgid "Drag to reorder" +msgstr "Arrastra para reordenar" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Editar campo" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-image.php:140 +#: includes/fields/class-acf-field-link.php:152 +#: pro/fields/class-acf-field-gallery.php:357 +msgid "Edit" +msgstr "Editar" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Duplicar campo" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "Mover campo a otro grupo" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "Mover" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "Borrar campo" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete" +msgstr "Borrar" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "Etiqueta del campo" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "Este es el nombre que aparecerá en la página EDITAR" + +#: includes/admin/views/field-group-field.php:78 +msgid "Field Name" +msgstr "Nombre del campo" + +#: includes/admin/views/field-group-field.php:79 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "" +"Una sola palabra, sin espacios. Guiones bajos y barras están permitidos." + +#: includes/admin/views/field-group-field.php:89 +msgid "Field Type" +msgstr "Tipo de campo" + +#: includes/admin/views/field-group-field.php:101 +#: includes/fields/class-acf-field-tab.php:102 +msgid "Instructions" +msgstr "Instrucciones" + +#: includes/admin/views/field-group-field.php:102 +msgid "Instructions for authors. Shown when submitting data" +msgstr "" +"Instrucciones para los autores. Se muestra a la hora de introducir los datos." + +#: includes/admin/views/field-group-field.php:111 +msgid "Required?" +msgstr "¿Requerido?" + +#: includes/admin/views/field-group-field.php:134 +msgid "Wrapper Attributes" +msgstr "Atributos del Contenedor" + +#: includes/admin/views/field-group-field.php:140 +msgid "width" +msgstr "ancho" + +#: includes/admin/views/field-group-field.php:155 +msgid "class" +msgstr "class" + +#: includes/admin/views/field-group-field.php:168 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:180 +msgid "Close Field" +msgstr "Cerrar Campo" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Orden" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-checkbox.php:317 +#: includes/fields/class-acf-field-radio.php:321 +#: includes/fields/class-acf-field-select.php:530 +#: pro/fields/class-acf-field-flexible-content.php:599 +msgid "Label" +msgstr "Etiqueta" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:970 +#: pro/fields/class-acf-field-flexible-content.php:612 +msgid "Name" +msgstr "Nombre" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Clave" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Tipo" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"No hay campos. Haz Click en el botón + Añadir campo para " +"crear tu primer campo." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Añadir Campo" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Reglas" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Crea un conjunto de reglas para determinar qué pantallas de edición " +"utilizarán estos campos personalizados" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Estilo" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Estándar (WP metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Directo (sin metabox)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Posición" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Alta (después del título)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (después del contenido)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Lateral" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Ubicación de la etiqueta" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:116 +msgid "Top aligned" +msgstr "Alineada arriba" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:117 +msgid "Left aligned" +msgstr "Alineada a la izquierda" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Ubicación de la instrucción" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Debajo de las etiquetas" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Debajo de los campos" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Número de orden" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Los grupos de campos con menor orden aparecerán primero" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Mostrado en lista de grupos de campos" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Esconder en pantalla" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Selecciona los items para esconderlos en la pantalla de " +"edición." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Si múltiples grupos de campos aparecen en una pantalla de edición, las " +"opciones del primer grupo serán utilizadas (el que tiene el menor número de " +"orden)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Enlace Permanente" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Editor de Contenido" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Extracto" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "Discusión" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Comentarios" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Revisiones" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Slug" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Autor" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Formato" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Atributos de Página" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:751 +msgid "Featured Image" +msgstr "Imagen Destacada" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Categorías" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Etiquetas" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Enviar Trackbacks" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Mostrar este grupo de campos si" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Mejorar los sitios" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Actualización de Base de Datos de Advanced Custom Fields" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Los siguientes sitios requieren una actualización de la base de datos. Marca " +"los que desea actualizar y haga clic en %s." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Sitio" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "El sitio requiere actualización de base de datos de %s a %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "El sitio está actualizado" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Actualización de base de datos completa. Regresar al " +"Escritorio de Red" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Es fuertemente recomendado que hagas un backup de tu base de datos antes de " +"continuar. Estás seguro que quieres ejecutar la actualización ahora?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Actualización completa" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Actualizando datos a la versión %s." + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Repeater" +msgstr "Repeater" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "Flexible Content" +msgstr "Contenido Flexible" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:36 +msgid "Gallery" +msgstr "Galería" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:13 +msgid "Options Page" +msgstr "Página de Opciones" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Actualización de Base de Datos Requerida" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Gracias por actualizar a %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Antes de comenzar a utilizar las nuevas y excelentes características, por " +"favor actualizar tu base de datos a la versión más nueva." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"También asegúrate de que todas las extensiones premium (%s) se hayan " +"actualizado a la última versión." + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Leyendo tareas de actualización..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" +"Actualización de la base de datos completada. Vea las " +"novedades" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Descargar e Instalar" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Instalado" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Bienvenido a Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Gracias por actualizar! ACF %s es más grande y poderoso que nunca. " +"Esperamos que te guste." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "Una experiencia de campos personalizados más fluida" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Usabilidad Mejorada" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Incluir la popular librería Select2 ha mejorado tanto la usabilidad como la " +"velocidad a través de varios tipos de campos, incluyendo el objeto post , " +"link a página, taxonomía y selección." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Diseño Mejorado" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Muchos campos han experimentado un mejorado visual para hacer que ACF luzca " +"mejor que nunca! Hay cambios notables en los campos de galería, relación y " +"oEmbed (nuevo)!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Datos Mejorados" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Rediseñar la arquitectura de datos ha permitido que los sub campos vivan " +"independientemente de sus padres. Esto permite arrastrar y soltar campos " +"desde y hacia otros campos padres!" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Adiós Agregados. Hola PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "Presentando ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Estamos cambiando la manera en que las funcionalidades premium son brindadas " +"de un modo muy interesante!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Todos los 4 agregados premium han sido combinados en una nueva version Pro de ACF. Con lincencias personales y para desarrolladores " +"disponibles, la funcionalidad premium es más acequible que nunca!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Características Poderosas" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO contiene poderosas características como campo de repetición, " +"contenido con disposición flexible, un hermoso campo de galería y la " +"habilidad de crear páginas de opciones extra en el panel de administración." + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Lee más acerca de las características de ACF PRO." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Fácil Actualización" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"Para facilitar la actualización, accede a tu cuenta en " +"nuestra tienda y solicita una copia gratis de ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Nosotros también escribimos una guía de actualización " +"para responder cualquier pregunta, pero si tienes una, por favor contacta " +"nuestro equipo de soporte via mesa de ayuda" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Debajo del Capó" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Ajustes de campos más inteligentes" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "" +"ACF ahora guarda los ajustes de los campos como objetos post individuales" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Más AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" +"Más campos utilizan búsqueda manejada por AJAX para acelerar la carga de " +"página" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "JSON Local" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "La nueva funcionalidad de exportar a JSON mejora la velocidad" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Mejor Control por Versiones" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" +"La nueva funcionalidad de exporta a JSON permite que los ajustes de los " +"campos se controlen por versiones" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "Reemplazamos XML por JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Importar / Exportar ahora utilizan JSON en vez de XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Nuevos Formularios" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Los campos ahora pueden ser mapeados a comentarios, widgets y todos los " +"formularios de usuario!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Se agregó un nuevo campo para embeber contenido." + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Nueva Galería" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "El campo galería ha experimentado un muy necesario lavado de cara" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Nuevos Ajustes" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Se agregaron ajustes de grupos de campos para posicionamiento de las " +"etiquetas y las instrucciones" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Mejores formularios para Front End" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() ahora puede crear nuevos post" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Mejor Validación" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "" +"La validación de los formularios es ahora realizada via PHP + AJAX en vez de " +"sólo JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Campod de Relación" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Nuevos ajustes para 'Filtros' en camp de Relación (Búsqueda, Tipo de Post, " +"Taxonomía)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Moviendo Campos" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"Nueva funcionalidad de grupos permite mover campos entre grupos y padres" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:36 +msgid "Page Link" +msgstr "Link de página" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Nuevo grupo archivos en el campo de selección de page_link" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Mejores Páginas de Opciones" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Nuevas funciones para las páginas de opciones permiten crear tanto páginas " +"de menú hijas como superiores." + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Creemos que te encantarán los cambios en %s." + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "Exportar Field Groups a PHP" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"El siguiente código puede ser utilizado para registrar una versión local del " +"o los grupos seleccionados. Un grupo de campos local puede brindar muchos " +"beneficios como tiempos de carga más cortos, control por versiones y campos/" +"ajustes dinámicos. Simplemente copia y pega el siguiente código en el " +"archivo functions.php de tu tema o inclúyelo como un archivo externo." + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Selleciona Grupos de Campos" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "Exportar Grupos de Campos" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Selecciona los grupos de campos que te gustaría exportar y luego elige tu " +"método de exportación. Utiliza el boton de descarga para exportar a un " +"archivo .json el cual luego puedes importar en otra instalación de ACF. " +"Utiliza el botón de generación para exportar a código PHP que puedes incluir " +"en tu tema." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "Descargar archivo de exportación" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Generar código de exportación" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "Importar Field Group" + +#: includes/admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Selecciona el archivo JSON de Advanced Custom Fields que te gustaría " +"importar. Cuando hagas click en el botón importar debajo, ACF importará los " +"grupos de campos." + +#: includes/admin/views/settings-tools.php:77 +#: includes/fields/class-acf-field-file.php:46 +msgid "Select File" +msgstr "Seleccionar archivo" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Importar" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "Miniatura" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "Medio" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "GRande" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "Tamaño Completo" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1837 +#: pro/fields/class-acf-field-clone.php:1042 +msgid "(no title)" +msgstr "(sin título)" + +#: includes/api/api-helpers.php:1874 +#: includes/fields/class-acf-field-page_link.php:284 +#: includes/fields/class-acf-field-post_object.php:283 +#: includes/fields/class-acf-field-taxonomy.php:992 +msgid "Parent" +msgstr "Superior" + +#: includes/api/api-helpers.php:3891 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "El ancho de la imagen debe ser al menos %dpx." + +#: includes/api/api-helpers.php:3896 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "El ancho de la imagen no debe exceder %dpx." + +#: includes/api/api-helpers.php:3912 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "La altura de la imagen debe ser al menos %dpx." + +#: includes/api/api-helpers.php:3917 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "La altura de la imagen no debe exceder %dpx." + +#: includes/api/api-helpers.php:3935 +#, php-format +msgid "File size must be at least %s." +msgstr "El tamaño de archivo debe ser al menos %s." + +#: includes/api/api-helpers.php:3940 +#, php-format +msgid "File size must must not exceed %s." +msgstr "El tamaño de archivo no debe exceder %s." + +#: includes/api/api-helpers.php:3974 +#, php-format +msgid "File type must be %s." +msgstr "El tipo de archivo debe ser %s." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Básico" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Contenido" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Elección" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Relación" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 includes/fields/class-acf-field-checkbox.php:286 +#: includes/fields/class-acf-field-group.php:485 +#: includes/fields/class-acf-field-radio.php:300 +#: pro/fields/class-acf-field-clone.php:889 +#: pro/fields/class-acf-field-flexible-content.php:569 +#: pro/fields/class-acf-field-flexible-content.php:618 +#: pro/fields/class-acf-field-repeater.php:514 +msgid "Layout" +msgstr "Layout" + +#: includes/fields.php:305 +msgid "Field type does not exist" +msgstr "Tipo de campo inexistente" + +#: includes/fields.php:305 +msgid "Unknown" +msgstr "Desconocido" + +#: includes/fields/class-acf-field-checkbox.php:36 +#: includes/fields/class-acf-field-taxonomy.php:786 +msgid "Checkbox" +msgstr "Checkbox" + +#: includes/fields/class-acf-field-checkbox.php:150 +msgid "Toggle All" +msgstr "Invertir Todos" + +#: includes/fields/class-acf-field-checkbox.php:207 +msgid "Add new choice" +msgstr "Agregar nueva opción" + +#: includes/fields/class-acf-field-checkbox.php:246 +#: includes/fields/class-acf-field-radio.php:250 +#: includes/fields/class-acf-field-select.php:466 +msgid "Choices" +msgstr "Opciones" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "Enter each choice on a new line." +msgstr "Ingresa cada opción en una nueva línea" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Para más control, puedes especificar tanto un valor como una etiqueta, así:" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "red : Red" +msgstr "rojo : Rojo" + +#: includes/fields/class-acf-field-checkbox.php:255 +msgid "Allow Custom" +msgstr "Permitir personalización" + +#: includes/fields/class-acf-field-checkbox.php:260 +msgid "Allow 'custom' values to be added" +msgstr "Permite añadir valores personalizados" + +#: includes/fields/class-acf-field-checkbox.php:266 +msgid "Save Custom" +msgstr "Guardar personalización" + +#: includes/fields/class-acf-field-checkbox.php:271 +msgid "Save 'custom' values to the field's choices" +msgstr "Guardar los valores \"personalizados\" a las opciones del campo" + +#: includes/fields/class-acf-field-checkbox.php:277 +#: includes/fields/class-acf-field-color_picker.php:146 +#: includes/fields/class-acf-field-email.php:133 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-radio.php:291 +#: includes/fields/class-acf-field-select.php:475 +#: includes/fields/class-acf-field-text.php:142 +#: includes/fields/class-acf-field-textarea.php:139 +#: includes/fields/class-acf-field-true_false.php:150 +#: includes/fields/class-acf-field-url.php:114 +#: includes/fields/class-acf-field-wysiwyg.php:436 +msgid "Default Value" +msgstr "Valor por defecto" + +#: includes/fields/class-acf-field-checkbox.php:278 +#: includes/fields/class-acf-field-select.php:476 +msgid "Enter each default value on a new line" +msgstr "Ingresa cada valor en una nueva línea" + +#: includes/fields/class-acf-field-checkbox.php:292 +#: includes/fields/class-acf-field-radio.php:306 +msgid "Vertical" +msgstr "Vertical" + +#: includes/fields/class-acf-field-checkbox.php:293 +#: includes/fields/class-acf-field-radio.php:307 +msgid "Horizontal" +msgstr "Horizontal" + +#: includes/fields/class-acf-field-checkbox.php:300 +msgid "Toggle" +msgstr "Invertir" + +#: includes/fields/class-acf-field-checkbox.php:301 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Anteponer un checkbox extra para invertir todas las opciones" + +#: includes/fields/class-acf-field-checkbox.php:310 +#: includes/fields/class-acf-field-file.php:219 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:180 +#: includes/fields/class-acf-field-radio.php:314 +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Return Value" +msgstr "Retornar valor" + +#: includes/fields/class-acf-field-checkbox.php:311 +#: includes/fields/class-acf-field-file.php:220 +#: includes/fields/class-acf-field-image.php:207 +#: includes/fields/class-acf-field-link.php:181 +#: includes/fields/class-acf-field-radio.php:315 +msgid "Specify the returned value on front end" +msgstr "Especifica el valor retornado en el front end" + +#: includes/fields/class-acf-field-checkbox.php:316 +#: includes/fields/class-acf-field-radio.php:320 +#: includes/fields/class-acf-field-select.php:529 +msgid "Value" +msgstr "Valor" + +#: includes/fields/class-acf-field-checkbox.php:318 +#: includes/fields/class-acf-field-radio.php:322 +#: includes/fields/class-acf-field-select.php:531 +msgid "Both (Array)" +msgstr "Ambos (Array)" + +#: includes/fields/class-acf-field-color_picker.php:36 +msgid "Color Picker" +msgstr "Selector de color" + +#: includes/fields/class-acf-field-color_picker.php:83 +msgid "Clear" +msgstr "Limpiar" + +#: includes/fields/class-acf-field-color_picker.php:84 +msgid "Default" +msgstr "Por defecto" + +#: includes/fields/class-acf-field-color_picker.php:85 +msgid "Select Color" +msgstr "Selecciona Color" + +#: includes/fields/class-acf-field-color_picker.php:86 +msgid "Current Color" +msgstr "Color actual" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgid "Date Picker" +msgstr "Selector de Fecha" + +#: includes/fields/class-acf-field-date_picker.php:44 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Hecho" + +#: includes/fields/class-acf-field-date_picker.php:45 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Hoy" + +#: includes/fields/class-acf-field-date_picker.php:46 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Siguiente" + +#: includes/fields/class-acf-field-date_picker.php:47 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Anterior" + +#: includes/fields/class-acf-field-date_picker.php:48 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Se" + +#: includes/fields/class-acf-field-date_picker.php:223 +#: includes/fields/class-acf-field-date_time_picker.php:197 +#: includes/fields/class-acf-field-time_picker.php:127 +msgid "Display Format" +msgstr "Formato de Visualización" + +#: includes/fields/class-acf-field-date_picker.php:224 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-time_picker.php:128 +msgid "The format displayed when editing a post" +msgstr "El formato mostrado cuando se edita un post" + +#: includes/fields/class-acf-field-date_picker.php:232 +#: includes/fields/class-acf-field-date_picker.php:263 +#: includes/fields/class-acf-field-date_time_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:224 +#: includes/fields/class-acf-field-time_picker.php:135 +#: includes/fields/class-acf-field-time_picker.php:150 +msgid "Custom:" +msgstr "Personalizado:" + +#: includes/fields/class-acf-field-date_picker.php:242 +msgid "Save Format" +msgstr "Guardar formato" + +#: includes/fields/class-acf-field-date_picker.php:243 +msgid "The format used when saving a value" +msgstr "El formato utilizado cuando se guarda un valor" + +#: includes/fields/class-acf-field-date_picker.php:253 +#: includes/fields/class-acf-field-date_time_picker.php:214 +#: includes/fields/class-acf-field-post_object.php:447 +#: includes/fields/class-acf-field-relationship.php:778 +#: includes/fields/class-acf-field-select.php:524 +#: includes/fields/class-acf-field-time_picker.php:142 +msgid "Return Format" +msgstr "Formato de Retorno" + +#: includes/fields/class-acf-field-date_picker.php:254 +#: includes/fields/class-acf-field-date_time_picker.php:215 +#: includes/fields/class-acf-field-time_picker.php:143 +msgid "The format returned via template functions" +msgstr "El formato retornado a través de las funciones del tema" + +#: includes/fields/class-acf-field-date_picker.php:272 +#: includes/fields/class-acf-field-date_time_picker.php:231 +msgid "Week Starts On" +msgstr "La semana comenza en " + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgid "Date Time Picker" +msgstr "Selector de fecha y hora" + +#: includes/fields/class-acf-field-date_time_picker.php:44 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Elegir tiempo" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Tiempo" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Hora" + +#: includes/fields/class-acf-field-date_time_picker.php:47 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "minuto" + +#: includes/fields/class-acf-field-date_time_picker.php:48 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Segundo" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milisegundo" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Microsegundo" + +#: includes/fields/class-acf-field-date_time_picker.php:51 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Zona horaria" + +#: includes/fields/class-acf-field-date_time_picker.php:52 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Ahora" + +#: includes/fields/class-acf-field-date_time_picker.php:53 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Hecho" + +#: includes/fields/class-acf-field-date_time_picker.php:54 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Elige" + +#: includes/fields/class-acf-field-date_time_picker.php:56 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:57 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:60 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:61 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:36 +msgid "Email" +msgstr "Email" + +#: includes/fields/class-acf-field-email.php:134 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-radio.php:292 +#: includes/fields/class-acf-field-text.php:143 +#: includes/fields/class-acf-field-textarea.php:140 +#: includes/fields/class-acf-field-url.php:115 +#: includes/fields/class-acf-field-wysiwyg.php:437 +msgid "Appears when creating a new post" +msgstr "Aparece cuando se está creando un nuevo post" + +#: includes/fields/class-acf-field-email.php:142 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:134 +#: includes/fields/class-acf-field-text.php:151 +#: includes/fields/class-acf-field-textarea.php:148 +#: includes/fields/class-acf-field-url.php:123 +msgid "Placeholder Text" +msgstr "Marcador de Texto" + +#: includes/fields/class-acf-field-email.php:143 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:135 +#: includes/fields/class-acf-field-text.php:152 +#: includes/fields/class-acf-field-textarea.php:149 +#: includes/fields/class-acf-field-url.php:124 +msgid "Appears within the input" +msgstr "Aparece en el campo" + +#: includes/fields/class-acf-field-email.php:151 +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-password.php:143 +#: includes/fields/class-acf-field-text.php:160 +msgid "Prepend" +msgstr "Anteponer" + +#: includes/fields/class-acf-field-email.php:152 +#: includes/fields/class-acf-field-number.php:164 +#: includes/fields/class-acf-field-password.php:144 +#: includes/fields/class-acf-field-text.php:161 +msgid "Appears before the input" +msgstr "Aparece antes del campo" + +#: includes/fields/class-acf-field-email.php:160 +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-password.php:152 +#: includes/fields/class-acf-field-text.php:169 +msgid "Append" +msgstr "Anexar" + +#: includes/fields/class-acf-field-email.php:161 +#: includes/fields/class-acf-field-number.php:173 +#: includes/fields/class-acf-field-password.php:153 +#: includes/fields/class-acf-field-text.php:170 +msgid "Appears after the input" +msgstr "Aparece luego del campo" + +#: includes/fields/class-acf-field-file.php:36 +msgid "File" +msgstr "Archivo" + +#: includes/fields/class-acf-field-file.php:47 +msgid "Edit File" +msgstr "Editar Archivo" + +#: includes/fields/class-acf-field-file.php:48 +msgid "Update File" +msgstr "Actualizar Archivo" + +#: includes/fields/class-acf-field-file.php:49 +#: includes/fields/class-acf-field-image.php:54 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:55 +msgid "Uploaded to this post" +msgstr "Subidos a este post" + +#: includes/fields/class-acf-field-file.php:145 +msgid "File name" +msgstr "Nombre del archivo" + +#: includes/fields/class-acf-field-file.php:149 +#: includes/fields/class-acf-field-file.php:252 +#: includes/fields/class-acf-field-file.php:263 +#: includes/fields/class-acf-field-image.php:266 +#: includes/fields/class-acf-field-image.php:295 +#: pro/fields/class-acf-field-gallery.php:705 +#: pro/fields/class-acf-field-gallery.php:734 +msgid "File size" +msgstr "Tamaño de Archivo" + +#: includes/fields/class-acf-field-file.php:174 +msgid "Add File" +msgstr "Añadir archivo" + +#: includes/fields/class-acf-field-file.php:225 +msgid "File Array" +msgstr "Array de Archivo" + +#: includes/fields/class-acf-field-file.php:226 +msgid "File URL" +msgstr "URL de Archivo" + +#: includes/fields/class-acf-field-file.php:227 +msgid "File ID" +msgstr "ID de Archivo" + +#: includes/fields/class-acf-field-file.php:234 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:670 +msgid "Library" +msgstr "Librería" + +#: includes/fields/class-acf-field-file.php:235 +#: includes/fields/class-acf-field-image.php:232 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Limit the media library choice" +msgstr "Limitar las opciones de la librería de medios" + +#: includes/fields/class-acf-field-file.php:240 +#: includes/fields/class-acf-field-image.php:237 +#: includes/locations/class-acf-location-attachment.php:105 +#: includes/locations/class-acf-location-comment.php:83 +#: includes/locations/class-acf-location-nav-menu.php:106 +#: includes/locations/class-acf-location-taxonomy.php:83 +#: includes/locations/class-acf-location-user-form.php:91 +#: includes/locations/class-acf-location-user-role.php:108 +#: includes/locations/class-acf-location-widget.php:87 +#: pro/fields/class-acf-field-gallery.php:676 +msgid "All" +msgstr "Todos" + +#: includes/fields/class-acf-field-file.php:241 +#: includes/fields/class-acf-field-image.php:238 +#: pro/fields/class-acf-field-gallery.php:677 +msgid "Uploaded to post" +msgstr "Subidos al post" + +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-image.php:245 +#: pro/fields/class-acf-field-gallery.php:684 +msgid "Minimum" +msgstr "Mínimo" + +#: includes/fields/class-acf-field-file.php:249 +#: includes/fields/class-acf-field-file.php:260 +msgid "Restrict which files can be uploaded" +msgstr "Restringir qué archivos pueden ser subidos" + +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:713 +msgid "Maximum" +msgstr "Máximo" + +#: includes/fields/class-acf-field-file.php:270 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:742 +msgid "Allowed file types" +msgstr "Tipos de archivos permitidos" + +#: includes/fields/class-acf-field-file.php:271 +#: includes/fields/class-acf-field-image.php:304 +#: pro/fields/class-acf-field-gallery.php:743 +msgid "Comma separated list. Leave blank for all types" +msgstr "Lista separada por comas. Deja en blanco para todos los tipos" + +#: includes/fields/class-acf-field-google-map.php:36 +msgid "Google Map" +msgstr "Mapa de Google" + +#: includes/fields/class-acf-field-google-map.php:51 +msgid "Locating" +msgstr "Ubicando" + +#: includes/fields/class-acf-field-google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "Disculpas, este navegador no soporta geolocalización" + +#: includes/fields/class-acf-field-google-map.php:133 +msgid "Clear location" +msgstr "Borrar ubicación" + +#: includes/fields/class-acf-field-google-map.php:134 +msgid "Find current location" +msgstr "Encontrar ubicación actual" + +#: includes/fields/class-acf-field-google-map.php:137 +msgid "Search for address..." +msgstr "Buscar dirección..." + +#: includes/fields/class-acf-field-google-map.php:167 +#: includes/fields/class-acf-field-google-map.php:178 +msgid "Center" +msgstr "Centro" + +#: includes/fields/class-acf-field-google-map.php:168 +#: includes/fields/class-acf-field-google-map.php:179 +msgid "Center the initial map" +msgstr "Centrar inicialmente el mapa" + +#: includes/fields/class-acf-field-google-map.php:190 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:191 +msgid "Set the initial zoom level" +msgstr "Setear el nivel inicial de zoom" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-image.php:257 +#: includes/fields/class-acf-field-image.php:286 +#: includes/fields/class-acf-field-oembed.php:297 +#: pro/fields/class-acf-field-gallery.php:696 +#: pro/fields/class-acf-field-gallery.php:725 +msgid "Height" +msgstr "Altura" + +#: includes/fields/class-acf-field-google-map.php:201 +msgid "Customise the map height" +msgstr "Personalizar altura de mapa" + +#: includes/fields/class-acf-field-group.php:36 +msgid "Group" +msgstr "Grupo" + +#: includes/fields/class-acf-field-group.php:469 +#: pro/fields/class-acf-field-repeater.php:453 +msgid "Sub Fields" +msgstr "Sub Campos" + +#: includes/fields/class-acf-field-group.php:486 +#: pro/fields/class-acf-field-clone.php:890 +msgid "Specify the style used to render the selected fields" +msgstr "" +"Especifique el estilo utilizado para representar los campos seleccionados" + +#: includes/fields/class-acf-field-group.php:491 +#: pro/fields/class-acf-field-clone.php:895 +#: pro/fields/class-acf-field-flexible-content.php:629 +#: pro/fields/class-acf-field-repeater.php:522 +msgid "Block" +msgstr "Bloque" + +#: includes/fields/class-acf-field-group.php:492 +#: pro/fields/class-acf-field-clone.php:896 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:521 +msgid "Table" +msgstr "Tabla" + +#: includes/fields/class-acf-field-group.php:493 +#: pro/fields/class-acf-field-clone.php:897 +#: pro/fields/class-acf-field-flexible-content.php:630 +#: pro/fields/class-acf-field-repeater.php:523 +msgid "Row" +msgstr "Fila" + +#: includes/fields/class-acf-field-image.php:36 +msgid "Image" +msgstr "Imagen" + +#: includes/fields/class-acf-field-image.php:51 +msgid "Select Image" +msgstr "Seleccionar Imagen" + +#: includes/fields/class-acf-field-image.php:52 +#: pro/fields/class-acf-field-gallery.php:53 +msgid "Edit Image" +msgstr "Editar Imagen" + +#: includes/fields/class-acf-field-image.php:53 +#: pro/fields/class-acf-field-gallery.php:54 +msgid "Update Image" +msgstr "Actualizar Imagen" + +#: includes/fields/class-acf-field-image.php:55 +msgid "All images" +msgstr "Todas las imágenes" + +#: includes/fields/class-acf-field-image.php:142 +#: includes/fields/class-acf-field-link.php:153 includes/input.php:267 +#: pro/fields/class-acf-field-gallery.php:358 +#: pro/fields/class-acf-field-gallery.php:546 +msgid "Remove" +msgstr "Remover" + +#: includes/fields/class-acf-field-image.php:158 +msgid "No image selected" +msgstr "No hay ninguna imagen seleccionada" + +#: includes/fields/class-acf-field-image.php:158 +msgid "Add Image" +msgstr "Añadir Imagen" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image Array" +msgstr "Array de Imagen" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image URL" +msgstr "URL de Imagen" + +#: includes/fields/class-acf-field-image.php:214 +msgid "Image ID" +msgstr "ID de Imagen" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Preview Size" +msgstr "Tamaño del Preview" + +#: includes/fields/class-acf-field-image.php:222 +msgid "Shown when entering data" +msgstr "Mostrado cuando se ingresan datos" + +#: includes/fields/class-acf-field-image.php:246 +#: includes/fields/class-acf-field-image.php:275 +#: pro/fields/class-acf-field-gallery.php:685 +#: pro/fields/class-acf-field-gallery.php:714 +msgid "Restrict which images can be uploaded" +msgstr "Restringir cuáles imágenes pueden ser subidas" + +#: includes/fields/class-acf-field-image.php:249 +#: includes/fields/class-acf-field-image.php:278 +#: includes/fields/class-acf-field-oembed.php:286 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Width" +msgstr "Ancho" + +#: includes/fields/class-acf-field-link.php:36 +msgid "Link" +msgstr "Enlace" + +#: includes/fields/class-acf-field-link.php:146 +msgid "Select Link" +msgstr "Elige el enlace" + +#: includes/fields/class-acf-field-link.php:151 +msgid "Opens in a new window/tab" +msgstr "Abrir en una nueva ventana/pestaña" + +#: includes/fields/class-acf-field-link.php:186 +msgid "Link Array" +msgstr "Matriz de enlace" + +#: includes/fields/class-acf-field-link.php:187 +msgid "Link URL" +msgstr "URL del enlace" + +#: includes/fields/class-acf-field-message.php:36 +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-true_false.php:141 +msgid "Message" +msgstr "Mensaje" + +#: includes/fields/class-acf-field-message.php:124 +#: includes/fields/class-acf-field-textarea.php:176 +msgid "New Lines" +msgstr "Nuevas Líneas" + +#: includes/fields/class-acf-field-message.php:125 +#: includes/fields/class-acf-field-textarea.php:177 +msgid "Controls how new lines are rendered" +msgstr "Controla cómo se muestran las nuevas líneas" + +#: includes/fields/class-acf-field-message.php:129 +#: includes/fields/class-acf-field-textarea.php:181 +msgid "Automatically add paragraphs" +msgstr "Agregar párrafos automáticamente" + +#: includes/fields/class-acf-field-message.php:130 +#: includes/fields/class-acf-field-textarea.php:182 +msgid "Automatically add <br>" +msgstr "Agregar <br> automáticamente" + +#: includes/fields/class-acf-field-message.php:131 +#: includes/fields/class-acf-field-textarea.php:183 +msgid "No Formatting" +msgstr "Sin Formato" + +#: includes/fields/class-acf-field-message.php:138 +msgid "Escape HTML" +msgstr "Escapar HTML" + +#: includes/fields/class-acf-field-message.php:139 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" +"Permitir que el maquetado HTML se muestre como texto visible en vez de " +"interpretarlo" + +#: includes/fields/class-acf-field-number.php:36 +msgid "Number" +msgstr "Número" + +#: includes/fields/class-acf-field-number.php:181 +msgid "Minimum Value" +msgstr "Valor Mínimo" + +#: includes/fields/class-acf-field-number.php:190 +msgid "Maximum Value" +msgstr "Valor Máximo" + +#: includes/fields/class-acf-field-number.php:199 +msgid "Step Size" +msgstr "Tamaño del Paso" + +#: includes/fields/class-acf-field-number.php:237 +msgid "Value must be a number" +msgstr "El valor debe ser un número" + +#: includes/fields/class-acf-field-number.php:255 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "El valor debe ser mayor o igual a %d" + +#: includes/fields/class-acf-field-number.php:263 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "El valor debe ser menor o igual a %d" + +#: includes/fields/class-acf-field-oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:237 +msgid "Enter URL" +msgstr "Ingresa URL" + +#: includes/fields/class-acf-field-oembed.php:250 +#: includes/fields/class-acf-field-taxonomy.php:904 +msgid "Error." +msgstr "Error." + +#: includes/fields/class-acf-field-oembed.php:250 +msgid "No embed found for the given URL." +msgstr "No se encontró embed para la URL proporcionada." + +#: includes/fields/class-acf-field-oembed.php:283 +#: includes/fields/class-acf-field-oembed.php:294 +msgid "Embed Size" +msgstr "Tamaño del Embed" + +#: includes/fields/class-acf-field-page_link.php:192 +msgid "Archives" +msgstr "Archivos" + +#: includes/fields/class-acf-field-page_link.php:500 +#: includes/fields/class-acf-field-post_object.php:399 +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Filter by Post Type" +msgstr "Filtrar por Tipo de Post" + +#: includes/fields/class-acf-field-page_link.php:508 +#: includes/fields/class-acf-field-post_object.php:407 +#: includes/fields/class-acf-field-relationship.php:712 +msgid "All post types" +msgstr "Todos los Tipos de Post" + +#: includes/fields/class-acf-field-page_link.php:514 +#: includes/fields/class-acf-field-post_object.php:413 +#: includes/fields/class-acf-field-relationship.php:718 +msgid "Filter by Taxonomy" +msgstr "Filtrar por Taxonomía" + +#: includes/fields/class-acf-field-page_link.php:522 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-relationship.php:726 +msgid "All taxonomies" +msgstr "Todas las taxonomías" + +#: includes/fields/class-acf-field-page_link.php:528 +#: includes/fields/class-acf-field-post_object.php:427 +#: includes/fields/class-acf-field-radio.php:259 +#: includes/fields/class-acf-field-select.php:484 +#: includes/fields/class-acf-field-taxonomy.php:799 +#: includes/fields/class-acf-field-user.php:423 +msgid "Allow Null?" +msgstr "Permitir Vacío?" + +#: includes/fields/class-acf-field-page_link.php:538 +msgid "Allow Archives URLs" +msgstr "Permitir las URLs de los archivos" + +#: includes/fields/class-acf-field-page_link.php:548 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-select.php:494 +#: includes/fields/class-acf-field-user.php:433 +msgid "Select multiple values?" +msgstr "¿Seleccionar valores múltiples?" + +#: includes/fields/class-acf-field-password.php:36 +msgid "Password" +msgstr "Contraseña" + +#: includes/fields/class-acf-field-post_object.php:36 +#: includes/fields/class-acf-field-post_object.php:452 +#: includes/fields/class-acf-field-relationship.php:783 +msgid "Post Object" +msgstr "Objecto Post" + +#: includes/fields/class-acf-field-post_object.php:453 +#: includes/fields/class-acf-field-relationship.php:784 +msgid "Post ID" +msgstr "ID de Post" + +#: includes/fields/class-acf-field-radio.php:36 +msgid "Radio Button" +msgstr "Radio Button" + +#: includes/fields/class-acf-field-radio.php:269 +msgid "Other" +msgstr "Otro" + +#: includes/fields/class-acf-field-radio.php:274 +msgid "Add 'other' choice to allow for custom values" +msgstr "Agregar la opción 'otros' para permitir valores personalizados" + +#: includes/fields/class-acf-field-radio.php:280 +msgid "Save Other" +msgstr "Guardar Otro" + +#: includes/fields/class-acf-field-radio.php:285 +msgid "Save 'other' values to the field's choices" +msgstr "Guardar 'otros' valores a las opciones del campo" + +#: includes/fields/class-acf-field-relationship.php:36 +msgid "Relationship" +msgstr "Relación" + +#: includes/fields/class-acf-field-relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "Valores mínimos alcanzados ( {min} valores )" + +#: includes/fields/class-acf-field-relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "Valores máximos alcanzados ( {max} valores )" + +#: includes/fields/class-acf-field-relationship.php:50 +msgid "Loading" +msgstr "Cargando" + +#: includes/fields/class-acf-field-relationship.php:51 +msgid "No matches found" +msgstr "No se encontraron resultados" + +#: includes/fields/class-acf-field-relationship.php:585 +msgid "Search..." +msgstr "Buscar..." + +#: includes/fields/class-acf-field-relationship.php:594 +msgid "Select post type" +msgstr "Selecciona Tipo de Post" + +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Select taxonomy" +msgstr "Selecciona Taxonomía" + +#: includes/fields/class-acf-field-relationship.php:732 +msgid "Filters" +msgstr "Filtros" + +#: includes/fields/class-acf-field-relationship.php:738 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Post Type" + +#: includes/fields/class-acf-field-relationship.php:739 +#: includes/fields/class-acf-field-taxonomy.php:36 +#: includes/fields/class-acf-field-taxonomy.php:769 +msgid "Taxonomy" +msgstr "Taxonomía" + +#: includes/fields/class-acf-field-relationship.php:746 +msgid "Elements" +msgstr "Elementos" + +#: includes/fields/class-acf-field-relationship.php:747 +msgid "Selected elements will be displayed in each result" +msgstr "Los elementos seleccionados serán mostrados en cada resultado" + +#: includes/fields/class-acf-field-relationship.php:758 +msgid "Minimum posts" +msgstr "Mínimos posts" + +#: includes/fields/class-acf-field-relationship.php:767 +msgid "Maximum posts" +msgstr "Máximos posts" + +#: includes/fields/class-acf-field-relationship.php:871 +#: pro/fields/class-acf-field-gallery.php:815 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s requiere al menos %s selección" +msgstr[1] "%s requiere al menos %s selecciones" + +#: includes/fields/class-acf-field-select.php:36 +#: includes/fields/class-acf-field-taxonomy.php:791 +msgctxt "noun" +msgid "Select" +msgstr "Elige" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Hay un resultado disponible, pulse Enter para seleccionarlo." + +#: includes/fields/class-acf-field-select.php:50 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"%d resultados disponibles, utilice las flechas arriba y abajo para navegar " +"por los resultados." + +#: includes/fields/class-acf-field-select.php:51 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "No se encontraron coincidencias" + +#: includes/fields/class-acf-field-select.php:52 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Por favor, introduce 1 o más caracteres" + +#: includes/fields/class-acf-field-select.php:53 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Por favor escribe %d o más caracteres" + +#: includes/fields/class-acf-field-select.php:54 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Por favor, borra 1 carácter" + +#: includes/fields/class-acf-field-select.php:55 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Por favor, elimina %d caracteres" + +#: includes/fields/class-acf-field-select.php:56 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Sólo puede seleccionar 1 elemento" + +#: includes/fields/class-acf-field-select.php:57 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Sólo puede seleccionar %d elementos" + +#: includes/fields/class-acf-field-select.php:58 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Cargando más resultados…" + +#: includes/fields/class-acf-field-select.php:59 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Buscando…" + +#: includes/fields/class-acf-field-select.php:60 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Error al cargar" + +#: includes/fields/class-acf-field-select.php:270 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "Elige" + +#: includes/fields/class-acf-field-select.php:504 +#: includes/fields/class-acf-field-true_false.php:159 +msgid "Stylised UI" +msgstr "UI estilizada" + +#: includes/fields/class-acf-field-select.php:514 +msgid "Use AJAX to lazy load choices?" +msgstr "Usar AJAX para hacer lazy load de las opciones?" + +#: includes/fields/class-acf-field-select.php:525 +msgid "Specify the value returned" +msgstr "Especifique el valor devuelto" + +#: includes/fields/class-acf-field-separator.php:36 +msgid "Separator" +msgstr "Separador" + +#: includes/fields/class-acf-field-tab.php:36 +msgid "Tab" +msgstr "Pestaña" + +#: includes/fields/class-acf-field-tab.php:96 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "" +"El campo pestaña se visualizará incorrectamente cuando sea agregado a un " +"campo de repetición con estilo Tabla o a un layout de contenido flexible" + +#: includes/fields/class-acf-field-tab.php:97 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "" +"Usa \"Campos Pestaña\" para organizar mejor tu pantalla de edición agrupando " +"campos." + +#: includes/fields/class-acf-field-tab.php:98 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" +"Todos los campos que siguen de este \"campo pestaña\" (o hasta que otro " +"\"campo pestaña\" sea definido) serán agrepados la etiqueta de este campo " +"como título de la pestaña." + +#: includes/fields/class-acf-field-tab.php:112 +msgid "Placement" +msgstr "Ubicación" + +#: includes/fields/class-acf-field-tab.php:124 +msgid "End-point" +msgstr "Punto de Terminación" + +#: includes/fields/class-acf-field-tab.php:125 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "" +"Usar este campo como un punto de terminación y comenzar un nuevo grupo de " +"pestañas" + +#: includes/fields/class-acf-field-taxonomy.php:719 +#: includes/fields/class-acf-field-true_false.php:95 +#: includes/fields/class-acf-field-true_false.php:184 includes/input.php:266 +#: pro/admin/views/html-settings-updates.php:103 +msgid "No" +msgstr "No" + +#: includes/fields/class-acf-field-taxonomy.php:738 +msgid "None" +msgstr "Ninguno" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Select the taxonomy to be displayed" +msgstr "Selecciona taxonomía a ser mostrada" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Appearance" +msgstr "Apariencia" + +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Select the appearance of this field" +msgstr "Selecciona la apariencia de este campo" + +#: includes/fields/class-acf-field-taxonomy.php:785 +msgid "Multiple Values" +msgstr "Múltiples Valores" + +#: includes/fields/class-acf-field-taxonomy.php:787 +msgid "Multi Select" +msgstr "Selección Múltiple" + +#: includes/fields/class-acf-field-taxonomy.php:789 +msgid "Single Value" +msgstr "Valor Individual" + +#: includes/fields/class-acf-field-taxonomy.php:790 +msgid "Radio Buttons" +msgstr "Botones Radio" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Create Terms" +msgstr "Crear Términos" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Allow new terms to be created whilst editing" +msgstr "Permitir la creación de nuevos términos mientras se edita" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Save Terms" +msgstr "Guardar Términos" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Connect selected terms to the post" +msgstr "Conectar los términos seleccionados al post" + +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Load Terms" +msgstr "Cargar Términos" + +#: includes/fields/class-acf-field-taxonomy.php:830 +msgid "Load value from posts terms" +msgstr "Cargar valor de los términos del post" + +#: includes/fields/class-acf-field-taxonomy.php:844 +msgid "Term Object" +msgstr "Objeto de Término" + +#: includes/fields/class-acf-field-taxonomy.php:845 +msgid "Term ID" +msgstr "ID de Término" + +#: includes/fields/class-acf-field-taxonomy.php:904 +#, php-format +msgid "User unable to add new %s" +msgstr "El usuario no puede agregar nuevos %s" + +#: includes/fields/class-acf-field-taxonomy.php:917 +#, php-format +msgid "%s already exists" +msgstr "%s ya existe" + +#: includes/fields/class-acf-field-taxonomy.php:958 +#, php-format +msgid "%s added" +msgstr "%s agregados" + +#: includes/fields/class-acf-field-taxonomy.php:1003 +msgid "Add" +msgstr "Agregar" + +#: includes/fields/class-acf-field-text.php:36 +msgid "Text" +msgstr "Texto" + +#: includes/fields/class-acf-field-text.php:178 +#: includes/fields/class-acf-field-textarea.php:157 +msgid "Character Limit" +msgstr "Límite de Caractéres" + +#: includes/fields/class-acf-field-text.php:179 +#: includes/fields/class-acf-field-textarea.php:158 +msgid "Leave blank for no limit" +msgstr "Deja en blanco para ilimitado" + +#: includes/fields/class-acf-field-textarea.php:36 +msgid "Text Area" +msgstr "Area de Texto" + +#: includes/fields/class-acf-field-textarea.php:166 +msgid "Rows" +msgstr "Filas" + +#: includes/fields/class-acf-field-textarea.php:167 +msgid "Sets the textarea height" +msgstr "Setea el alto del área de texto" + +#: includes/fields/class-acf-field-time_picker.php:36 +msgid "Time Picker" +msgstr "Selector de hora" + +#: includes/fields/class-acf-field-true_false.php:36 +msgid "True / False" +msgstr "Verdadero / Falso" + +#: includes/fields/class-acf-field-true_false.php:94 +#: includes/fields/class-acf-field-true_false.php:174 includes/input.php:265 +#: pro/admin/views/html-settings-updates.php:93 +msgid "Yes" +msgstr "Sí" + +#: includes/fields/class-acf-field-true_false.php:142 +msgid "Displays text alongside the checkbox" +msgstr "Muestra el texto junto a la casilla de verificación" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "On Text" +msgstr "Sobre texto" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when active" +msgstr "Texto mostrado cuando está activo" + +#: includes/fields/class-acf-field-true_false.php:180 +msgid "Off Text" +msgstr "Sin texto" + +#: includes/fields/class-acf-field-true_false.php:181 +msgid "Text shown when inactive" +msgstr "Texto mostrado cuando está inactivo" + +#: includes/fields/class-acf-field-url.php:36 +msgid "Url" +msgstr "Url" + +#: includes/fields/class-acf-field-url.php:165 +msgid "Value must be a valid URL" +msgstr "El valor debe ser una URL válida" + +#: includes/fields/class-acf-field-user.php:36 includes/locations.php:95 +msgid "User" +msgstr "Usuario" + +#: includes/fields/class-acf-field-user.php:408 +msgid "Filter by role" +msgstr "Filtrar por rol" + +#: includes/fields/class-acf-field-user.php:416 +msgid "All user roles" +msgstr "Todos los roles de usuario" + +#: includes/fields/class-acf-field-wysiwyg.php:36 +msgid "Wysiwyg Editor" +msgstr "Editor Wysiwyg" + +#: includes/fields/class-acf-field-wysiwyg.php:385 +msgid "Visual" +msgstr "Visual" + +#: includes/fields/class-acf-field-wysiwyg.php:386 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Texto" + +#: includes/fields/class-acf-field-wysiwyg.php:392 +msgid "Click to initialize TinyMCE" +msgstr "Haz clic para iniciar TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:445 +msgid "Tabs" +msgstr "Pestañas" + +#: includes/fields/class-acf-field-wysiwyg.php:450 +msgid "Visual & Text" +msgstr "Visual y Texto" + +#: includes/fields/class-acf-field-wysiwyg.php:451 +msgid "Visual Only" +msgstr "Sólo Visual" + +#: includes/fields/class-acf-field-wysiwyg.php:452 +msgid "Text Only" +msgstr "Sólo Texto" + +#: includes/fields/class-acf-field-wysiwyg.php:459 +msgid "Toolbar" +msgstr "Barra de Herramientas" + +#: includes/fields/class-acf-field-wysiwyg.php:469 +msgid "Show Media Upload Buttons?" +msgstr "¿Mostrar el botón Media Upload?" + +#: includes/fields/class-acf-field-wysiwyg.php:479 +msgid "Delay initialization?" +msgstr "¿Inicialización retrasada?" + +#: includes/fields/class-acf-field-wysiwyg.php:480 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE no se iniciará hasta que se haga clic en el campo" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:304 +msgid "Edit field group" +msgstr "Editar grupo de campos" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Validar correo electrónico" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:588 pro/options-page.php:81 +msgid "Update" +msgstr "Actualizar" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Post actualizado" + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "Spam detectado" + +#: includes/input.php:258 +msgid "Expand Details" +msgstr "Expandir Detalles" + +#: includes/input.php:259 +msgid "Collapse Details" +msgstr "Colapsar Detalles" + +#: includes/input.php:260 +msgid "Validation successful" +msgstr "Validación exitosa" + +#: includes/input.php:261 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Validación fallida" + +#: includes/input.php:262 +msgid "1 field requires attention" +msgstr "1 campo requiere atención" + +#: includes/input.php:263 +#, php-format +msgid "%d fields require attention" +msgstr "%d campos requieren atención" + +#: includes/input.php:264 +msgid "Restricted" +msgstr "Restringido" + +#: includes/input.php:268 +msgid "Cancel" +msgstr "Cancelar" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Post" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Página" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formularios" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Adjunto" + +#: includes/locations/class-acf-location-attachment.php:113 +#, php-format +msgid "All %s formats" +msgstr "%s formatos" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Comentario" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Rol del Usuario Actual" + +#: includes/locations/class-acf-location-current-user-role.php:114 +msgid "Super Admin" +msgstr "Super Administrador" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Usuario Actual" + +#: includes/locations/class-acf-location-current-user.php:101 +msgid "Logged in" +msgstr "Logueado" + +#: includes/locations/class-acf-location-current-user.php:102 +msgid "Viewing front end" +msgstr "Viendo front end" + +#: includes/locations/class-acf-location-current-user.php:103 +msgid "Viewing back end" +msgstr "Viendo back end" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Elemento del menú" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menú" + +#: includes/locations/class-acf-location-nav-menu.php:113 +msgid "Menu Locations" +msgstr "Localizaciones de menú" + +#: includes/locations/class-acf-location-nav-menu.php:123 +msgid "Menus" +msgstr "Menús" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Página Superior" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Plantilla de Página" + +#: includes/locations/class-acf-location-page-template.php:102 +#: includes/locations/class-acf-location-post-template.php:156 +msgid "Default Template" +msgstr "Plantilla por Defecto" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Tipo de Página" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Front Page" +msgstr "Página Principal" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Posts Page" +msgstr "Página de Entradas" + +#: includes/locations/class-acf-location-page-type.php:151 +msgid "Top Level Page (no parent)" +msgstr "Página de Nivel Superior" + +#: includes/locations/class-acf-location-page-type.php:152 +msgid "Parent Page (has children)" +msgstr "Página Superior (tiene hijas)" + +#: includes/locations/class-acf-location-page-type.php:153 +msgid "Child Page (has parent)" +msgstr "Página hija (tiene superior)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Categoría de Post" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Formato de Post" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Estado del Post" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taxonomía de Post" + +#: includes/locations/class-acf-location-post-template.php:29 +msgid "Post Template" +msgstr "Plantilla de entrada:" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Término de Taxonomía" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Formulario de Usuario" + +#: includes/locations/class-acf-location-user-form.php:92 +msgid "Add / Edit" +msgstr "Agregar / Editar" + +#: includes/locations/class-acf-location-user-form.php:93 +msgid "Register" +msgstr "Registrar" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Rol de Usuario" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "Editar" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "Actualizar" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "El valor %s es requerido" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:196 +msgid "Publish" +msgstr "Publicar" + +#: pro/admin/admin-options-page.php:202 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"No se encontraron grupos de campos personalizados para esta página de " +"opciones. Crear Grupo de Campos Personalizados" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "" +"Error. No se ha podido conectar con el servidor de actualización" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:17 +msgid "Updates" +msgstr "Actualizaciones" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Deactivate License" +msgstr "Desactivar Licencia" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Activate License" +msgstr "Activar Licencia" + +#: pro/admin/views/html-settings-updates.php:21 +msgid "License Information" +msgstr "Información de la licencia" + +#: pro/admin/views/html-settings-updates.php:24 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Para desbloquear las actualizaciones, por favor a continuación introduce tu " +"clave de licencia. Si no tienes una clave de licencia, consulta detalles y precios." + +#: pro/admin/views/html-settings-updates.php:33 +msgid "License Key" +msgstr "Clave de Licencia" + +#: pro/admin/views/html-settings-updates.php:65 +msgid "Update Information" +msgstr "Información de Actualización" + +#: pro/admin/views/html-settings-updates.php:72 +msgid "Current Version" +msgstr "Versión Actual" + +#: pro/admin/views/html-settings-updates.php:80 +msgid "Latest Version" +msgstr "Última Versión" + +#: pro/admin/views/html-settings-updates.php:88 +msgid "Update Available" +msgstr "Actualización Disponible" + +#: pro/admin/views/html-settings-updates.php:96 +msgid "Update Plugin" +msgstr "Actualizar Plugin" + +#: pro/admin/views/html-settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "Por favor ingresa tu clave de licencia para habilitar actualizaciones" + +#: pro/admin/views/html-settings-updates.php:104 +msgid "Check Again" +msgstr "Chequear nuevamente" + +#: pro/admin/views/html-settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "Notificación de Actualización" + +#: pro/fields/class-acf-field-clone.php:36 +msgctxt "noun" +msgid "Clone" +msgstr "Clonar" + +#: pro/fields/class-acf-field-clone.php:858 +msgid "Select one or more fields you wish to clone" +msgstr "Elige uno o más campos que quieras clonar" + +#: pro/fields/class-acf-field-clone.php:875 +msgid "Display" +msgstr "Mostrar" + +#: pro/fields/class-acf-field-clone.php:876 +msgid "Specify the style used to render the clone field" +msgstr "Especifique el estilo utilizado para procesar el campo de clonación" + +#: pro/fields/class-acf-field-clone.php:881 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Grupo (muestra los campos seleccionados en un grupo dentro de este campo)" + +#: pro/fields/class-acf-field-clone.php:882 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Transparente (reemplaza este campo con los campos seleccionados)" + +#: pro/fields/class-acf-field-clone.php:903 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Las etiquetas se mostrarán como %s" + +#: pro/fields/class-acf-field-clone.php:906 +msgid "Prefix Field Labels" +msgstr "Etiquetas del prefijo de campo" + +#: pro/fields/class-acf-field-clone.php:917 +#, php-format +msgid "Values will be saved as %s" +msgstr "Los valores se guardarán como %s" + +#: pro/fields/class-acf-field-clone.php:920 +msgid "Prefix Field Names" +msgstr "Nombres de prefijos de campos" + +#: pro/fields/class-acf-field-clone.php:1038 +msgid "Unknown field" +msgstr "Campo desconocido" + +#: pro/fields/class-acf-field-clone.php:1077 +msgid "Unknown field group" +msgstr "Grupo de campos desconocido" + +#: pro/fields/class-acf-field-clone.php:1081 +#, php-format +msgid "All fields from %s field group" +msgstr "Todos los campos del grupo de campo %s" + +#: pro/fields/class-acf-field-flexible-content.php:42 +#: pro/fields/class-acf-field-repeater.php:230 +#: pro/fields/class-acf-field-repeater.php:534 +msgid "Add Row" +msgstr "Agregar Fila" + +#: pro/fields/class-acf-field-flexible-content.php:45 +msgid "layout" +msgstr "esquema" + +#: pro/fields/class-acf-field-flexible-content.php:46 +msgid "layouts" +msgstr "esquemas" + +#: pro/fields/class-acf-field-flexible-content.php:47 +msgid "remove {layout}?" +msgstr "remover {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "Este campo requiere al menos {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "Este campo tiene un límite de {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Este campo requiere al menos {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Límite máximo de {label} alcanzado. ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} disponible (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} requerido (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:54 +msgid "Flexible Content requires at least 1 layout" +msgstr "El Contenido Flexible requiere por lo menos 1 layout" + +#: pro/fields/class-acf-field-flexible-content.php:288 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Haz click en el botón \"%s\" debajo para comenzar a crear tu esquema" + +#: pro/fields/class-acf-field-flexible-content.php:423 +msgid "Add layout" +msgstr "Agregar Esquema" + +#: pro/fields/class-acf-field-flexible-content.php:424 +msgid "Remove layout" +msgstr "Remover esquema" + +#: pro/fields/class-acf-field-flexible-content.php:425 +#: pro/fields/class-acf-field-repeater.php:360 +msgid "Click to toggle" +msgstr "Clic para mostrar" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder Layout" +msgstr "Reordenar Esquema" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder" +msgstr "Reordenar" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete Layout" +msgstr "Eliminar Esquema" + +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate Layout" +msgstr "Duplicar Esquema" + +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New Layout" +msgstr "Agregar Nuevo Esquema" + +#: pro/fields/class-acf-field-flexible-content.php:645 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:658 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:685 +#: pro/fields/class-acf-field-repeater.php:530 +msgid "Button Label" +msgstr "Etiqueta del Botón" + +#: pro/fields/class-acf-field-flexible-content.php:694 +msgid "Minimum Layouts" +msgstr "Esquemas Mínimos" + +#: pro/fields/class-acf-field-flexible-content.php:703 +msgid "Maximum Layouts" +msgstr "Esquemas Máximos" + +#: pro/fields/class-acf-field-gallery.php:52 +msgid "Add Image to Gallery" +msgstr "Agregar Imagen a Galería" + +#: pro/fields/class-acf-field-gallery.php:56 +msgid "Maximum selection reached" +msgstr "Selección máxima alcanzada" + +#: pro/fields/class-acf-field-gallery.php:336 +msgid "Length" +msgstr "Longitud" + +#: pro/fields/class-acf-field-gallery.php:379 +msgid "Caption" +msgstr "Leyenda" + +#: pro/fields/class-acf-field-gallery.php:388 +msgid "Alt Text" +msgstr "Texto Alt" + +#: pro/fields/class-acf-field-gallery.php:559 +msgid "Add to gallery" +msgstr "Agregar a galería" + +#: pro/fields/class-acf-field-gallery.php:563 +msgid "Bulk actions" +msgstr "Acciones en lote" + +#: pro/fields/class-acf-field-gallery.php:564 +msgid "Sort by date uploaded" +msgstr "Ordenar por fecha de subida" + +#: pro/fields/class-acf-field-gallery.php:565 +msgid "Sort by date modified" +msgstr "Ordenar por fecha de modificación" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Sort by title" +msgstr "Ordenar por título" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Reverse current order" +msgstr "Invertir orden actual" + +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Close" +msgstr "Cerrar" + +#: pro/fields/class-acf-field-gallery.php:639 +msgid "Minimum Selection" +msgstr "Selección Mínima" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Maximum Selection" +msgstr "Selección Máxima" + +#: pro/fields/class-acf-field-gallery.php:657 +msgid "Insert" +msgstr "Insertar" + +#: pro/fields/class-acf-field-gallery.php:658 +msgid "Specify where new attachments are added" +msgstr "Especificar dónde se agregan nuevos adjuntos" + +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Append to the end" +msgstr "Añadir al final" + +#: pro/fields/class-acf-field-gallery.php:663 +msgid "Prepend to the beginning" +msgstr "Adelantar hasta el principio" + +#: pro/fields/class-acf-field-repeater.php:47 +msgid "Minimum rows reached ({min} rows)" +msgstr "Mínimo de filas alcanzado ({min} rows)" + +#: pro/fields/class-acf-field-repeater.php:48 +msgid "Maximum rows reached ({max} rows)" +msgstr "Máximo de filas alcanzado ({max} rows)" + +#: pro/fields/class-acf-field-repeater.php:405 +msgid "Add row" +msgstr "Agregar fila" + +#: pro/fields/class-acf-field-repeater.php:406 +msgid "Remove row" +msgstr "Remover fila" + +#: pro/fields/class-acf-field-repeater.php:483 +msgid "Collapsed" +msgstr "Colapsado" + +#: pro/fields/class-acf-field-repeater.php:484 +msgid "Select a sub field to show when row is collapsed" +msgstr "Elige un subcampo para indicar cuándo se colapsa la fila" + +#: pro/fields/class-acf-field-repeater.php:494 +msgid "Minimum Rows" +msgstr "Mínimo de Filas" + +#: pro/fields/class-acf-field-repeater.php:504 +msgid "Maximum Rows" +msgstr "Máximo de Filas" + +#: pro/locations/class-acf-location-options-page.php:70 +msgid "No options pages exist" +msgstr "No existen páginas de opciones" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Opciones" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Opciones Actualizadas" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Para habilitar actualizaciones, por favor, introduzca su llave de licencia " +"en la página de actualizaciones. Si no tiene una llave de " +"licencia, por favor, consulta detalles y precios." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Disabled" +#~ msgstr "Deshabilitado" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Deshabilitado (%s)" +#~ msgstr[1] "Deshabilitados (%s)" + +#~ msgid "See what's new in" +#~ msgstr "Que hay de nuevo en" + +#~ msgid "version" +#~ msgstr "versión" + +#~ msgid "Getting Started" +#~ msgstr "Comenzando" + +#~ msgid "Field Types" +#~ msgstr "Tipos de Campos" + +#~ msgid "Functions" +#~ msgstr "Funciones" + +#~ msgid "Actions" +#~ msgstr "Acciones" + +#~ msgid "'How to' guides" +#~ msgstr "Guías 'Cómo hacer'" + +#~ msgid "Tutorials" +#~ msgstr "Tutoriales" + +#~ msgid "Created by" +#~ msgstr "Creado por" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "" +#~ "Perfecto. La herramienta de importación agregó %s grupos de " +#~ "campos: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Alerta. La herramienta de importación detectó que %s grupos de " +#~ "campos ya existen y han sido ignorados: %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "Actualizar ACF" + +#~ msgid "Upgrade" +#~ msgstr "Actualizar" + +#~ msgid "Error" +#~ msgstr "Error" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "Arrastra y suelta para reordenar" + +#~ msgid "Upgrading data to" +#~ msgstr "Actualizando datos a" + +#~ msgid "See what's new" +#~ msgstr "Mira qué hay de nuevo" + +#~ msgid "Show a different month" +#~ msgstr "Mostrar un mes diferente" + +#~ msgid "Return format" +#~ msgstr "Formato de Retorno" + +#~ msgid "uploaded to this post" +#~ msgstr "subidos a este post" + +#~ msgid "File Size" +#~ msgstr "Tamaño de Archivo" + +#~ msgid "No File selected" +#~ msgstr "No hay ningún archivo seleccionado" + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "Por favor toma en cuenta que todo el texto será pasado primero por la " +#~ "función wp" + +#~ msgid "Warning" +#~ msgstr "Alerta" + +#~ msgid "Add new %s " +#~ msgstr "Agregar nuevo %s" + +#~ msgid "eg. Show extra content" +#~ msgstr "ej. Mostrar contenido extra" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Error de Conección. Disculpa, por favor intenta nuevamente" + +#~ msgid "Save Options" +#~ msgstr "Guardar Opciones" + +#~ msgid "License" +#~ msgstr "Licencia" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Para desbloquear las actualizaciones, por favor ingresa tu clabe de " +#~ "licencia debajo. Si no tienes una clave de licencia, por favor mira" + +#~ msgid "details & pricing" +#~ msgstr "detalles y precios" + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "Fallo en la validación. Uno o más campos son requeridos." + +#~ msgid "Error: Field Type does not exist!" +#~ msgstr "Error: El tipo de campo no existe!" + +#~ msgid "No ACF groups selected" +#~ msgstr "No hay grupos de ACF seleccionados" + +#~ msgid "Field Order" +#~ msgstr "Orden de los campos" + +#~ msgid "Docs" +#~ msgstr "Docs" + +#~ msgid "Field Instructions" +#~ msgstr "Instrucciones del campo" + +#~ msgid "Save Field" +#~ msgstr "Guardar Field" + +#~ msgid "Hide this edit screen" +#~ msgstr "Ocultar esta pantalla de edición" + +#~ msgid "continue editing ACF" +#~ msgstr "continuar editando ACF" + +#~ msgid "match" +#~ msgstr "coincide" + +#~ msgid "of the above" +#~ msgstr "de los superiores" + +#~ msgid "Field groups are created in order
                          from lowest to highest." +#~ msgstr "Los Field Groups son creados en orden
                          de menor a mayor." + +#~ msgid "Show on page" +#~ msgstr "Mostrar en página" + +#~ msgid "Deselect items to hide them on the edit page" +#~ msgstr "Deselecciona items para esconderlos en la página de edición" + +#~ msgid "" +#~ "If multiple ACF groups appear on an edit page, the first ACF group's " +#~ "options will be used. The first ACF group is the one with the lowest " +#~ "order number." +#~ msgstr "" +#~ "Si aparecen multiples grupos de ACF en una página de edición, se usarán " +#~ "las opciones del primer grupo. Se considera primer grupo de ACF al que " +#~ "cuenta con el número de orden más bajo." + +#~ msgid "" +#~ "Read documentation, learn the functions and find some tips & tricks " +#~ "for your next web project." +#~ msgstr "" +#~ "Lee la documentación, aprende sobre las funciones y encuentra algunos " +#~ "trucos y consejos para tu siguiente proyecto web." + +#~ msgid "View the ACF website" +#~ msgstr "Ver la web de ACF" + +#~ msgid "Vote" +#~ msgstr "Vota" + +#~ msgid "Follow" +#~ msgstr "Sígueme" + +#~ msgid "Advanced Custom Fields Settings" +#~ msgstr "Ajustes de Advanced Custom Fields" + +#~ msgid "Activate Add-ons." +#~ msgstr "Activar Add-ons." + +#~ msgid "Activation Code" +#~ msgstr "Código de activación" + +#~ msgid "Repeater Field" +#~ msgstr "Repeater Field" + +#~ msgid "Flexible Content Field" +#~ msgstr "Flexible Content Field" + +#~ msgid "" +#~ "Add-ons can be unlocked by purchasing a license key. Each key can be used " +#~ "on multiple sites." +#~ msgstr "" +#~ "Las Add-ons pueden desbloquearse comprando una clave de licencia. Cada " +#~ "clave puede usarse en multiple sites." + +#~ msgid "Find Add-ons" +#~ msgstr "Buscar Add-ons" + +#~ msgid "Export Field Groups to XML" +#~ msgstr "Exportar Field Groups a XML" + +#~ msgid "" +#~ "ACF will create a .xml export file which is compatible with the native WP " +#~ "import plugin." +#~ msgstr "" +#~ "ACF creará un archivo .xml que es compatible con el plugin de importación " +#~ "nativo de WP." + +#~ msgid "Export XML" +#~ msgstr "Exportar XML" + +#~ msgid "Navigate to the" +#~ msgstr "Navegar a" + +#~ msgid "Import Tool" +#~ msgstr "Utilidad de importación" + +#~ msgid "and select WordPress" +#~ msgstr "y selecciona WordPress" + +#~ msgid "Install WP import plugin if prompted" +#~ msgstr "Instalar el plugin de importación de WP si se pide" + +#~ msgid "Upload and import your exported .xml file" +#~ msgstr "Subir e importar tu archivo .xml exportado" + +#~ msgid "Select your user and ignore Import Attachments" +#~ msgstr "Selecciona tu usuario e ignora Import Attachments" + +#~ msgid "That's it! Happy WordPressing" +#~ msgstr "¡Eso es todo! Feliz WordPressing" + +#~ msgid "ACF will create the PHP code to include in your theme" +#~ msgstr "ACF creará el código PHP para incluir en tu tema" + +#~ msgid "Create PHP" +#~ msgstr "Crear PHP" + +#~ msgid "Register Field Groups with PHP" +#~ msgstr "Registrar Field Groups con PHP" + +#~ msgid "Copy the PHP code generated" +#~ msgstr "Copia el código PHP generado" + +#~ msgid "Paste into your functions.php file" +#~ msgstr "Pegalo en tu archivo functions.php" + +#~ msgid "" +#~ "To activate any Add-ons, edit and use the code in the first few lines." +#~ msgstr "" +#~ "Para activar cualquier Add-on, edita y usa el código en las primeras " +#~ "pocas lineas." + +#~ msgid "Back to settings" +#~ msgstr "Volver a los ajustes" + +#~ msgid "" +#~ "/**\n" +#~ " * Activate Add-ons\n" +#~ " * Here you can enter your activation codes to unlock Add-ons to use in " +#~ "your theme. \n" +#~ " * Since all activation codes are multi-site licenses, you are allowed to " +#~ "include your key in premium themes. \n" +#~ " * Use the commented out code to update the database with your activation " +#~ "code. \n" +#~ " * You may place this code inside an IF statement that only runs on theme " +#~ "activation.\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * Activar Add-ons\n" +#~ " * Aquí puedes introducir tus códigos de activación para desbloquear Add-" +#~ "ons y utilizarlos en tu tema. \n" +#~ " * Ya que todos los códigos de activación tiene licencia multi-site, se " +#~ "te permite incluir tu clave en temas premium. \n" +#~ " * Utiliza el código comentado para actualizar la base de datos con tu " +#~ "código de activación. \n" +#~ " * Puedes colocar este código dentro de una instrucción IF para que sólo " +#~ "funcione en la activación del tema.\n" +#~ " */" + +#~ msgid "" +#~ "/**\n" +#~ " * Register field groups\n" +#~ " * The register_field_group function accepts 1 array which holds the " +#~ "relevant data to register a field group\n" +#~ " * You may edit the array as you see fit. However, this may result in " +#~ "errors if the array is not compatible with ACF\n" +#~ " * This code must run every time the functions.php file is read\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * Registrar field groups\n" +#~ " * La función register_field_group acepta un 1 array que contiene los " +#~ "datos pertinentes para registrar un Field Group\n" +#~ " * Puedes editar el array como mejor te parezca. Sin embargo, esto puede " +#~ "dar lugar a errores si la matriz no es compatible con ACF\n" +#~ " * Este código debe ejecutarse cada vez que se lee el archivo functions." +#~ "php\n" +#~ " */" + +#~ msgid "No field groups were selected" +#~ msgstr "No hay ningún Field Group seleccionado" + +#~ msgid "No choices to choose from" +#~ msgstr "No hay opciones para escojer" + +#~ msgid "" +#~ "Enter your choices one per line
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tRed
                          \n" +#~ "\t\t\t\tBlue
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tor
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tred : Red
                          \n" +#~ "\t\t\t\tblue : Blue" +#~ msgstr "" +#~ "Introduce tus opciones, una por línea
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tRojo
                          \n" +#~ "\t\t\t\tAzul
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\to
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tred : Rojo
                          \n" +#~ "\t\t\t\tblue : Azul" + +#~ msgid "eg. dd/mm/yy. read more about" +#~ msgstr "ej. dd/mm/yy. leer más sobre" + +#~ msgid "Remove File" +#~ msgstr "Eliminar Archivo" + +#~ msgid "Click the \"add row\" button below to start creating your layout" +#~ msgstr "" +#~ "Haz click sobre el botón \"añadir fila\" para empezar a crear tu Layout" + +#~ msgid "+ Add Row" +#~ msgstr "+ Añadir fila" + +#~ msgid "" +#~ "No fields. Click the \"+ Add Field button\" to create your first field." +#~ msgstr "" +#~ "No hay campos. Haz click en el botón \"+ Añadir Campo\" para crear tu " +#~ "primer campo." + +#~ msgid "" +#~ "Filter posts by selecting a post type
                          \n" +#~ "\t\t\t\tTip: deselect all post types to show all post type's posts" +#~ msgstr "" +#~ "Filtrar posts seleccionando un post type
                          \n" +#~ "\t\t\t\tConsejo: deselecciona todos los post type para mostrar todos los " +#~ "tipos de post" + +#~ msgid "Filter from Taxonomy" +#~ msgstr "Filtrar por Taxonomía" + +#~ msgid "Set to -1 for inifinit" +#~ msgstr "Se establece en -1 para inifinito" + +#~ msgid "Repeater Fields" +#~ msgstr "Repeater Fields" + +#~ msgid "Row Limit" +#~ msgstr "Limite de filas" + +#~ msgid "Formatting" +#~ msgstr "Formato" + +#~ msgid "Define how to render html tags" +#~ msgstr "Define como renderizar las etiquetas html" + +#~ msgid "Define how to render html tags / new lines" +#~ msgstr "Define como renderizar los tags html / nuevas lineas" + +#~ msgid "Save" +#~ msgstr "Guardar" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-fa_IR.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-fa_IR.mo new file mode 100644 index 0000000000000000000000000000000000000000..5d40e9ed1aecaa9ad4dbf8152644745eeb459fcc GIT binary patch literal 61563 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-fa_IR.po b/wp-content/plugins/advanced-custom-fields/lang/acf-fa_IR.po new file mode 100644 index 0000000..0a41ca0 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-fa_IR.po @@ -0,0 +1,4308 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.7.11\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2019-05-08 14:09+0430\n" +"PO-Revision-Date: 2019-05-08 14:13+0430\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Majix \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n==0 || n==1);\n" +"X-Generator: Poedit 2.2\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "زمینه‌های Ø³ÙØ§Ø±Ø´ÛŒ Ù¾ÛŒØ´Ø±ÙØªÙ‡" + +#: acf.php:363 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "گروه‌های زمینه" + +#: acf.php:364 +msgid "Field Group" +msgstr "گروه زمینه" + +#: acf.php:365 acf.php:397 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New" +msgstr "Ø§ÙØ²ÙˆØ¯Ù†" + +#: acf.php:366 +msgid "Add New Field Group" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† گروه زمینه جدید" + +#: acf.php:367 +msgid "Edit Field Group" +msgstr "ویرایش گروه زمینه" + +#: acf.php:368 +msgid "New Field Group" +msgstr "گروه زمینه جدید" + +#: acf.php:369 +msgid "View Field Group" +msgstr "مشاهده گروه زمینه" + +#: acf.php:370 +msgid "Search Field Groups" +msgstr "جستجوی گروه های زمینه" + +#: acf.php:371 +msgid "No Field Groups found" +msgstr "گروه زمینه ای ÛŒØ§ÙØª نشد" + +#: acf.php:372 +msgid "No Field Groups found in Trash" +msgstr "گروه زمینه ای در زباله دان ÛŒØ§ÙØª نشد" + +#: acf.php:395 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:530 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "زمینه ها" + +#: acf.php:396 +msgid "Field" +msgstr "زمینه" + +#: acf.php:398 +msgid "Add New Field" +msgstr "زمینه جدید" + +#: acf.php:399 +msgid "Edit Field" +msgstr "ویرایش زمینه" + +#: acf.php:400 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "زمینه جدید" + +#: acf.php:401 +msgid "View Field" +msgstr "نمایش زمینه" + +#: acf.php:402 +msgid "Search Fields" +msgstr "جستجوی گروه های زمینه" + +#: acf.php:403 +msgid "No Fields found" +msgstr "گروه زمینه ای ÛŒØ§ÙØª نشد" + +#: acf.php:404 +msgid "No Fields found in Trash" +msgstr "گروه زمینه ای در زباله دان ÛŒØ§ÙØª نشد" + +#: acf.php:443 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:587 +msgid "Inactive" +msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„" + +#: acf.php:448 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "ØºÛŒØ±ÙØ¹Ø§Ù„ (%s)" +msgstr[1] "ØºÛŒØ±ÙØ¹Ø§Ù„ (%s)" + +#: includes/acf-field-functions.php:828 includes/admin/admin-field-group.php:178 +msgid "(no label)" +msgstr "(بدون برچسب)" + +#: includes/acf-field-group-functions.php:816 +#: includes/admin/admin-field-group.php:180 +msgid "copy" +msgstr "Ú©Ù¾ÛŒ" + +#: includes/admin/admin-field-group.php:86 includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "گروه زمینه بروز شد." + +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "گروه زمینه حذ٠شد." + +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "گروه زمینه انتشار ÛŒØ§ÙØª." + +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "گروه زمینه ذخیره شد." + +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "گروه زمینه ارسال شد." + +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "گروه زمینه برنامه ریزی انتشار پیدا کرده برای." + +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "پیش نویش گروه زمینه بروز شد." + +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "کلمه متنی \"field_\" نباید در ابتدای نام Ùیلد Ø§Ø³ØªÙØ§Ø¯Ù‡ شود" + +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "این زمینه قبل از اینکه ذخیره شود نمی تواند جابجا شود" + +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "عنوان گروه زمینه ضروری است" + +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "انتقال به زباله دان، آیا شما مطمئنید؟" + +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "هیچ زمینه شرط پذیری موجود نیست" + +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "جابجایی زمینه دلخواه" + +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "انتخاب شده" + +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "(این گزینه)" + +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3862 +msgid "or" +msgstr "یا" + +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "خالی (null)" + +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "مکان" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "تنظیمات" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "کایدهای زمینه" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "ÙØ¹Ø§Ù„" + +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "انتقال کامل شد." + +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "زمینه %s اکنون در گروه زمینه %s قرار Ú¯Ø±ÙØªÙ‡ است" + +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "بستن زمینه" + +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "مقصد انتقال این زمینه را مشخص کنید" + +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "جابجایی زمینه" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "ÙØ¹Ø§Ù„ (%s)" +msgstr[1] "ÙØ¹Ø§Ù„ (%s)" + +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s گروه زمینه تکثیر شدند." +msgstr[1] "گروه زمینه تکثیر شد." + +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s گروه زمینه همگام سازی شد." +msgstr[1] "گروه زمینه همگام سازی شد." + +#: includes/admin/admin-field-groups.php:414 +#: includes/admin/admin-field-groups.php:577 +msgid "Sync available" +msgstr "هماهنگ سازی موجود است" + +#: includes/admin/admin-field-groups.php:527 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:372 +msgid "Title" +msgstr "عنوان" + +#: includes/admin/admin-field-groups.php:528 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:399 +msgid "Description" +msgstr "توضیحات" + +#: includes/admin/admin-field-groups.php:529 +msgid "Status" +msgstr "وضعیت" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "وردپرس را با زمینه‌های حرÙه‌ای Ùˆ قدرتمند Ø³ÙØ§Ø±Ø´ÛŒ کنید." + +#: includes/admin/admin-field-groups.php:628 includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "تغییرات" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in version %s." +msgstr "مشاهده موارد جدید نسخه %s." + +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "منابع" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "وب سایت" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "مستندات" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "پشتیبانی" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Ù¾ÛŒØ´Ø±ÙØªÙ‡" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "با تشکر از شما برای Ø§Ø³ØªÙØ§Ø¯Ù‡ از ACF." + +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "تکثیر این زمینه" + +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate" +msgstr "تکثیر" + +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "جستجو" + +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "انتخاب %s" + +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "هماهنگ سازی گروه زمینه" + +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "هماهنگ" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "اعمال" + +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "اعمال گروهی" + +#: includes/admin/admin-tools.php:116 includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "ابزارها" + +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "به‌روزرسانی پایگاه داده" + +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "بازبینی Ùˆ به‌روزرسانی سایت‌ها" + +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "زمینه‌های Ø³ÙØ§Ø±Ø´ÛŒ" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "اطلاعات" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Ú†Ù‡ چیز جدید است" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "برون بری گروه های زمینه" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "تولید کد PHP" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "گروه زمینه ای انتخاب نشده است" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "%s گروه زمینه برون‌بری شد." +msgstr[1] "Û± گروه زمینه برون‌بری شد." + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "انتخاب گروه های زمینه" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"گروه زمینه‌هایی Ú©Ù‡ مایل به تهیه خروجی آنها هستید را انتخاب کنید Ùˆ در ادامه روش " +"خروجی را نیز مشخص کنید. از دکمه دانلود برای خروجی ÙØ§ÛŒÙ„ .json برای وارد کردن در " +"یک سایت دیگر Ú©Ù‡ این Ø§ÙØ²ÙˆÙ†Ù‡ نصب شده است Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. از دکمه تولید Ù…ÛŒ توانید " +"برای ساخت کد PHP برای قراردادن در قالب خود Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "خروجی ÙØ§ÛŒÙ„" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within an " +"external file." +msgstr "" +"این کد Ù…ÛŒ تواند برای ثبت یک نسخه محلی (لوکال)از گروه زمینه‌های انتخاب شده " +"Ø§Ø³ØªÙØ§Ø¯Ù‡ شود. یک نسخه محلی Ùواید زیادی دارد، مثلا سرعت لود بالاتر، کنترل نسخه Ùˆ " +"پویاسازی زمینه ها Ùˆ تنظیماتشان. به راحتی Ù…ÛŒ توانید کد زیر را در ÙØ§ÛŒÙ„ function." +"php خود Ú©Ù¾ÛŒ کنید Ùˆ یا از یک ÙØ§ÛŒÙ„ دیگر انرا ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ نمایید." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "درج در Ø­Ø§ÙØ¸Ù‡ موقت" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Ú©Ù¾ÛŒ شد" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "وارد کردن گروه های زمینه" + +#: includes/admin/tools/class-acf-admin-tool-import.php:47 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When you " +"click the import button below, ACF will import the field groups." +msgstr "" +"ÙØ§ÛŒÙ„ JSON ای Ú©Ù‡ قبلا از این Ø§ÙØ²ÙˆÙ†Ù‡ خروجی Ú¯Ø±ÙØªÙ‡ اید را انتخاب کنید تا وارد شود. " +"زمانی Ú©Ù‡ دکمه وارد کردن را در زیر کلیک کنید، سیستم اقدام به ساخت گروه های زمینه " +"خواهد نمود." + +#: includes/admin/tools/class-acf-admin-tool-import.php:52 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "انتخاب پرونده" + +#: includes/admin/tools/class-acf-admin-tool-import.php:62 +msgid "Import File" +msgstr "وارد کردن ÙØ§ÛŒÙ„" + +#: includes/admin/tools/class-acf-admin-tool-import.php:85 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "هیچ پرونده ای انتخاب نشده" + +#: includes/admin/tools/class-acf-admin-tool-import.php:93 +msgid "Error uploading file. Please try again" +msgstr "خطا در آپلود ÙØ§ÛŒÙ„. Ù„Ø·ÙØ§ مجدد بررسی کنید" + +#: includes/admin/tools/class-acf-admin-tool-import.php:98 +msgid "Incorrect file type" +msgstr "نوع ÙØ§ÛŒÙ„ صحیح نیست" + +#: includes/admin/tools/class-acf-admin-tool-import.php:107 +msgid "Import file empty" +msgstr "ÙØ§ÛŒÙ„ وارد شده خالی است" + +#: includes/admin/tools/class-acf-admin-tool-import.php:138 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "%s گروه زمینه درون‌ریزی شد" +msgstr[1] "Û± گروه زمینه درون‌ریزی شد" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "منطق شرطی" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "نمایش این گروه زمینه اگر" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "Ùˆ" + +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† گروه قانون" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:410 +#: pro/fields/class-acf-field-repeater.php:299 +msgid "Drag to reorder" +msgstr "Ú¯Ø±ÙØªÙ† Ùˆ کشیدن برای مرتب سازی" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "ویرایش زمینه" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:359 +msgid "Edit" +msgstr "ویرایش" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "تکثیر زمینه" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "انتقال زمینه ها به گروه دیگر" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "انتقال" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "حذ٠زمینه" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete" +msgstr "حذÙ" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "برچسب زمینه" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "این نامی است Ú©Ù‡ در ØµÙØ­Ù‡ \"ویرایش\" نمایش داده خواهد شد" + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "نام زمینه" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "تک کلمه، بدون ÙØ§ØµÙ„Ù‡. خط زیرین Ùˆ خط تیره ها مجازاند" + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "نوع زمینه" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "دستورالعمل ها" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "دستورالعمل هایی برای نویسندگان. هنگام ارسال داده ها نمایش داده Ù…ÛŒ شوند" + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "لازم است؟" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "مشخصات پوشش Ùیلد" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "عرض" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "کلاس" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "شناسه" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "بستن زمینه" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "ترتیب" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "برچسب زمینه" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Name" +msgstr "نام" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "کلید" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "نوع زمینه" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your first " +"field." +msgstr "" +"هیچ زمینه ای وجود ندارد. روی دکمه+ Ø§ÙØ²ÙˆØ¯Ù† زمینه کلیک کنید تا " +"اولین زمینه خود را بسازید." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Ø§ÙØ²ÙˆØ¯Ù† زمینه" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "قوانین" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these advanced " +"custom fields" +msgstr "" +"مجموعه ای از قوانین را بسازید تا مشخص کنید در کدام ØµÙØ­Ù‡ ویرایش، این زمینه‌های " +"Ø³ÙØ§Ø±Ø´ÛŒ Ø³ÙØ§Ø±Ø´ÛŒ نمایش داده شوند" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "شیوه نمایش" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "استاندارد (دارای متاباکس)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "بدون متاباکس" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "موقعیت" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "بالا (بعد از عنوان)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "معمولی (بعد از ادیتور متن)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "کنار" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "مکان برچسب" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "سمت بالا" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "سمت Ú†Ù¾" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "مکان دستورالعمل ها" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "زیر برچسب ها" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "زیر زمینه ها" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "شماره ترتیب." + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "گروه ها با شماره ترتیب کمتر اول دیده Ù…ÛŒ شوند" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "نمایش لیست گروه زمینه" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "پیوند یکتا" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "ویرایش گر محتوا(ادیتور اصلی)" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "چکیده" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Ú¯ÙØªÚ¯Ùˆ" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "دیدگاه ها" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "بازنگری ها" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "نامک" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "نویسنده" + +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "ÙØ±Ù…ت" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "ØµÙØ§Øª برگه" + +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "تصویر شاخص" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "دسته ها" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "برچسب ها" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "ارسال بازتاب ها" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "مخÙÛŒ کردن در ØµÙØ­Ù‡" + +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "انتخاب آیتم ها برای پنهان کردن آن ها از ØµÙØ­Ù‡ ویرایش." + +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"اگر چندین گروه زمینه در یک ØµÙØ­Ù‡ ویرایش نمایش داده شود،اولین تنظیمات گروه زمینه " +"Ø§Ø³ØªÙØ§Ø¯Ù‡ خواهد شد. (یکی با کمترین شماره)" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update and " +"then click %s." +msgstr "این سایت ها نیاز به به روز رسانی دارند برای انجام %s کلیک کنید." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "ارتقاء سایت" + +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "سایت" + +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "سایت نیاز به به‌روزرسانی از %s به %s دارد" + +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "سایت به روز است" + +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "Database Upgrade complete. Return to network dashboard" +msgstr "به روزرسانی دیتابیس انجام شد. بازگشت به پیشخوان شبکه" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "Ù„Ø·ÙØ§ حداقل یک سایت برای ارتقا انتخاب کنید." + +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. Are " +"you sure you wish to run the updater now?" +msgstr "" +"قویا توصیه Ù…ÛŒ شود از بانک اطلاعاتی خود قبل از هر کاری پشتیبان تهیه کنید. آیا " +"مایلید به روز رسانی انجام شود؟" + +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "به روز رسانی داده ها به نسحه %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "ارتقا کامل شد." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "ارتقا با خطا مواجه شد." + +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "در حال خواندن مراحل به روزرسانی..." + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "ارتقای پایگاه داده کامل شد. تغییرات جدید را ببینید" + +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "به‌روزرسانی موجود نیست." + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "بازگشت به همه ابزارها" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "نمایش این گروه زمینه اگر" + +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "زمینه تکرار کننده" + +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "محتوای انعطا٠پذیر" + +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "گالری" + +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "برگه تنظیمات" + +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "به روزرسانی دیتابیس لازم است" + +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "از شما برای بروزرسانی به آخرین نسخه %s v%s ممنون هستیم!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "این نسخه شامل بهبودهایی در پایگاه داده است Ùˆ نیاز به ارتقا دارد." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "" +"همچنین Ù„Ø·ÙØ§ همه Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§ÛŒ پولی (%s) را بررسی کنید Ú©Ù‡ به نسخه آخر بروز شده باشند." + +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Ø§ÙØ²ÙˆØ¯Ù†ÛŒ ها" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "دانلود Ùˆ نصب" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "نصب شده" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "به Ø§ÙØ²ÙˆÙ†Ù‡ زمینه‌های Ø³ÙØ§Ø±Ø´ÛŒ Ù¾ÛŒØ´Ø±ÙØªÙ‡ خوش آمدید" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We hope " +"you like it." +msgstr "" +"از اینکه به روزرسانی کردید متشکریم! Ø§ÙØ²ÙˆÙ†Ù‡ زمینه دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡ %s بزرگتر Ùˆ " +"بهتر از قبل شده است. امیدواریم لذت ببرید." + +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "یک تجربه راحتتر" + +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "کاربری بهینه شده" + +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy and " +"select." +msgstr "" +"Ø§Ø³ØªÙØ§Ø¯Ù‡ از کتابخانه محبوب Select2 باعث سرعت در عملکرد Ùˆ کاربری بهتر در انواع " +"زمینه هاشامل آبجکت نوشته، پیوند(لینک) ØµÙØ­Ù‡ ØŒ طبقه بندی Ùˆ زمینه‌های " +"انتخاب(Select) شده است." + +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "طراحی بهینه شده" + +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than ever! " +"Noticeable changes are seen on the gallery, relationship and oEmbed (new) " +"fields!" +msgstr "" +"بسیاری از زمینه ها از نظر ظاهری باز طراحی شدند تا این Ø§ÙØ²ÙˆÙ†Ù‡ از قبل بهتر شده " +"باشد. تغییرات چشم گیر در گالری Ùˆ ارتباط Ùˆ زمینه جدید به نام oEmbed صورت Ú¯Ø±ÙØªÙ‡ " +"است!" + +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "داده ها بهینه شده اند" + +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live independently " +"from their parents. This allows you to drag and drop fields in and out of " +"parent fields!" +msgstr "" +"بازطراحی معماری داده ها این اجازه را به زمینه‌های زیرمجموعه داده است Ú©Ù‡ بدون " +"زمینه‌های والد باقی بمانند. این به شما Ú©Ù…Ú© Ù…ÛŒ کند Ú©Ù‡ زمینه ها را از یک Ùیلد اصلی " +"خارج یا به آن وارد نمایید !" + +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Ø®Ø¯Ø§Ø­Ø§ÙØ¸ Ø§ÙØ²ÙˆØ¯Ù†ÛŒ ها Ùˆ سلام به نسخه حرÙÙ‡ ای" + +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "معرÙÛŒ نسخه حرÙÙ‡ ای" + +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "ما در حال تغییر راه عملکردهای پولی Ø§ÙØ²ÙˆÙ†Ù‡ به شیوه ای هیجان انگیز هستیم!" + +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro version " +"of ACF. With both personal and developer licenses available, premium " +"functionality is more affordable and accessible than ever before!" +msgstr "" +"هر چهار Ø§ÙØ²Ø¯ÙˆÙ†ÛŒ پولی یکی شده Ùˆ تحت عنوان نسخه حرÙÙ‡ ای (Pro) " +"از Ø§ÙØ²ÙˆÙ†Ù‡ زمینه‌های Ø³ÙØ§Ø±Ø´ÛŒ معرÙÛŒ شده اند. دو نسخه شخصی Ùˆ توسعه دهنده موجود است " +"Ú©Ù‡ در هر دو این امکانات بهتر Ùˆ دسترس تر از قبل موجود است!" + +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "امکانات قدرتمند" + +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"نسخه حرÙÙ‡ دارای امکانات قدرتمندی نظیر داده های تکرارپذیر، محتوای Ù…Ù†Ø¹Ø·ÙØŒ یک " +"زمینه گالری زیبا Ùˆ امکان ساخت ØµÙØ­Ø§Øª تنظیمات Ù…ÛŒ باشد !" + +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "اطلاعات بیشتر در امکانات نسخه حرÙÙ‡ ای." + +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "به روزرسانی آسان" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download the " +"plugin!" +msgstr "" +"ارتقا به نسخه حرÙه‌ای آسان است. به سادگی لایسنس را بخرید Ùˆ Ø§ÙØ²ÙˆÙ†Ù‡ را دانلود کنید!" + +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, but " +"if you do have one, please contact our support team via the help " +"desk." +msgstr "" +"همچنین در اینجا راهنمایی برای ارتقا وجود دارد Ú©Ù‡ به سوالات " +"شما پاسخ می‌دهد. Ù„Ø·ÙØ§ از طریق میز راهنما با تیم پشتیبانی تماس " +"حاصل کنید." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "ویژگی‌های جدید" + +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "زمینه پیوند (Link)" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"با Ø§Ø³ØªÙØ§Ø¯Ù‡ از زمینه پیوند میتوانید به سادگی یک روش برای انتخاب یا تعری٠یک " +"پیوند (url-title-target) ایجاد کنید." + +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "گروه زمینه" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "با Ø§Ø³ØªÙØ§Ø¯Ù‡ از گروه زمینه می‌توانید گروهی از زمینه‌ها را ایجاد کنید." + +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "زمینه oEmbed" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, and " +"other content." +msgstr "" +"با Ø§Ø³ØªÙØ§Ø¯Ù‡ از زمینه oEmbed میتوانید به سادگی ویدیو، تصویر، توییت، صدا Ùˆ " +"محتواهای دیگر را جاسازی کنید." + +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Ùیلد Ú©Ù¾ÛŒ" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "" +"با Ø§Ø³ØªÙØ§Ø¯Ù‡ از Ùیلد Ú©Ù¾ÛŒ میتوانید Ùیلدهای موجود را انتخاب کنید یا نمایش دهید." + +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "ایجکس بیشتر" + +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "" +"بیشتر زمینه‌ها از قدرت AJAX برای جستجو Ø§Ø³ØªÙØ§Ø¯Ù‡ می‌کند تا سرعت بارگذاری را Ø§ÙØ²Ø§ÛŒØ´ " +"دهند." + +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "JSON های لوکال" + +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"ویژگی جدید برون‌بری خودکار به ÙØ§ÛŒÙ„ JSON سرعت را بهبود داده Ùˆ همگام سازی را ÙØ±Ø§Ù‡Ù… " +"می‌کند." + +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "درون‌ریزی یا برون‌بری آسان" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "درون ریزی یا برون بری به سادگی از طریق یک ابزار جدید انجام می‌شود." + +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "مکان جدید ÙØ±Ù…‌ها" + +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all user " +"forms!" +msgstr "" +"زمینه‌ها اکنون می‌توانند به Ùهرست‌ها، موارد Ùهرست، دیدگاه‌ها، ابزارک‌ها Ùˆ تمامی " +"ÙØ±Ù…‌های مرتبط با کاربر ارجاع داده شوند!" + +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Ø³ÙØ§Ø±Ø´ÛŒ سازی بیشتر" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "اکشن‌ها Ùˆ Ùیلترهای جدید PHP (Ùˆ JS) برای Ø³ÙØ§Ø±Ø´ÛŒ سازی بیشتر اضاÙÙ‡ شد‌ه‌اند." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "رابط کاربری تازه" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, settings " +"and design!" +msgstr "تمامی Ø§ÙØ²ÙˆÙ†Ù‡ با یک رابط کاربری جدید بروز شده است!" + +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "تنظیمات جدید" + +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, Instructions " +"Placement and Description." +msgstr "" +"تنظیمات گروه زمینه برای مکان برچسب، راهنمای قرارگیری Ùˆ توضیحات اضاÙÙ‡ شده است." + +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "ÙØ±Ù… های سمت کاربر بهتر شده اند" + +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"تابع acf_form() اکنون میتوانید نوشته‌های جدید را همراه با تنظیمات بیشتر ثبت کند." + +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "خطایابی بهتر" + +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "اعتبارسنجی ÙØ±Ù…‌ها اکنون از طریق PHP + AJAX صورت می‌گیرد." + +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "جابجایی زمینه ها" + +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"عملکرد جدید گروه زمینه اکنون اجازه می‌دهد تا یک زمینه را بین گروه‌ها Ùˆ والدهای " +"مختل٠جابجا کنید." + +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Ùکر Ù…ÛŒ کنیم شما تغییرات در %s را دوست خواهید داشت." + +#: includes/api/api-helpers.php:1003 +msgid "Thumbnail" +msgstr "تصویر بندانگشتی" + +#: includes/api/api-helpers.php:1004 +msgid "Medium" +msgstr "متوسط" + +#: includes/api/api-helpers.php:1005 +msgid "Large" +msgstr "بزرگ" + +#: includes/api/api-helpers.php:1054 +msgid "Full Size" +msgstr "اندازه کامل" + +#: includes/api/api-helpers.php:1775 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(بدون عنوان)" + +#: includes/api/api-helpers.php:3783 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "عرض تصویر باید حداقل %d پیکسل باشد." + +#: includes/api/api-helpers.php:3788 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "عرض تصویر نباید از %d پیکسل بیشتر باشد." + +#: includes/api/api-helpers.php:3804 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Ø§Ø±ØªÙØ§Ø¹ ÙØ§ÛŒÙ„ باید حداقل %d پیکسل باشد." + +#: includes/api/api-helpers.php:3809 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Ø§Ø±ØªÙØ§Ø¹ تصویر نباید از %d پیکسل بیشتر باشد." + +#: includes/api/api-helpers.php:3827 +#, php-format +msgid "File size must be at least %s." +msgstr "حجم ÙØ§ÛŒÙ„ باید حداقل %s باشد." + +#: includes/api/api-helpers.php:3832 +#, php-format +msgid "File size must must not exceed %s." +msgstr "حجم ÙØ§ÛŒÙ„ ها نباید از %s بیشتر باشد." + +#: includes/api/api-helpers.php:3866 +#, php-format +msgid "File type must be %s." +msgstr "نوع ÙØ§ÛŒÙ„ باید %s باشد." + +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "اگر از ØµÙØ­Ù‡ جاری خارج شوید ØŒ تغییرات شما ذخیره نخواهند شد" + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "انتخاب" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "ویرایش" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "بروزرسانی" + +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "بارگذاری شده در این نوشته" + +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "نمایش جزئیات" + +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "عدم نمایش جزئیات" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "ممنوع" + +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "تمام تصاویر" + +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "اعتبار سنجی موÙÙ‚ بود" + +#: includes/assets.php:182 includes/validation.php:285 includes/validation.php:296 +msgid "Validation failed" +msgstr "مشکل در اعتبار سنجی" + +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "یکی از گزینه ها نیاز به بررسی دارد" + +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "%d گزینه نیاز به بررسی دارد" + +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "اطمینان دارید؟" + +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "بله" + +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "خیر" + +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:360 +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Remove" +msgstr "حذÙ" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "لغو" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "هر نوع مقدار" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "بدون مقدار" + +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "مقدار برابر است با" + +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "مقدار برابر نیست با" + +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "مقدار الگوی" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "شامل Ù…ÛŒ شود" + +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "مقدار بیشتر از" + +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "مقدار کمتر از" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "انتخاب بیشتر از" + +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "انتخاب کمتر از" + +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "ویرایش گروه زمینه" + +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "نوع زمینه وجود ندارد" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "ناشناخته" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "پایه" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "محتوا" + +#: includes/fields.php:351 +msgid "Choice" +msgstr "انتخاب" + +#: includes/fields.php:352 +msgid "Relational" +msgstr "رابطه" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "جی کوئری" + +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:553 +#: pro/fields/class-acf-field-flexible-content.php:602 +#: pro/fields/class-acf-field-repeater.php:448 +msgid "Layout" +msgstr "چیدمان" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "آکاردئونی" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "باز" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "نمایش آکوردئون این به عنوان باز در بارگذاری ØµÙØ­Ø§Øª." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "چند گسترش" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "اجازه دهید این آکوردئون بدون بستن دیگر آکاردئون‌ها باز شود." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "نقطه پایانی" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will not " +"be visible." +msgstr "" +"یک نقطه پایانی برای توق٠آکاردئون قبلی تعری٠کنید. این آکاردئون مخÙÛŒ خواهد بود." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "گروه دکمه‌ها" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "انتخاب ها" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "هر انتخاب را در یک خط جدید وارد کنید." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "برای کنترل بیشتر، ممکن است هر دو مقدار Ùˆ برچسب را مانند زیر مشخص کنید:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "red : قرمز" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "آیا Null مجاز است؟" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "مقدار پیش ÙØ±Ø¶" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "هنگام ایجاد یک نوشته جدید نمایش داده Ù…ÛŒ شود" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "اÙÙ‚ÛŒ" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "عمودی" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "مقدار بازگشت" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "مقدار برگشتی در نمایش نهایی را تعیین کنید" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "مقدار" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "هر دو (آرایه)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "جعبه انتخاب (Checkbox)" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "انتخاب همه" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "درج انتخاب جدید" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "اجازه دلخواه" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "اجازه درج مقادیر دلخواه" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "ذخیره دلخواه" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "ذخیره مقادیر دلخواه در انتخاب های زمینه" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "هر مقدار پیش ÙØ±Ø¶ را در یک خط جدید وارد کنید" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "انتخاب" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "اضاÙÙ‡ کردن Ú†Ú© باکس اضاÙÛŒ برای انتخاب همه" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "انتخاب کننده رنگ" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "پاکسازی" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "پیش ÙØ±Ø¶" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "رنگ را انتخاب کنید" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "رنگ ÙØ¹Ù„ÛŒ" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "تاریخ" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "انجام شد" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "امروز" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "بعدی" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "قبلی" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Ù‡ÙØªÙ‡" + +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "ÙØ±Ù…ت نمایش" + +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "قالب در زمان نمایش نوشته دیده خواهد شد" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "دلخواه:" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "ذخیره قالب" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "قالب Ø§Ø³ØªÙØ§Ø¯Ù‡ در زمان ذخیره مقدار" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +msgid "Return Format" +msgstr "ÙØ±Ù…ت بازگشت" + +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "قالب توسط توابع پوسته نمایش داده خواهد شد" + +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "اولین روز Ù‡ÙØªÙ‡" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "انتخاب کننده زمان Ùˆ تاریخ" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "انتخاب زمان" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "زمان" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "ساعت" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "دقیقه" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "ثانیه" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "میلی ثانیه" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "میکرو ثانیه" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "منطقه زمانی" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "الان" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "انجام شد" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "انتخاب" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "صبح" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "صبح" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "عصر" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "عصر" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "پست الکترونیکی" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "نگهدارنده مکان متن" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "در داخل ورودی نمایش داده Ù…ÛŒ شود" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "پیشوند" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "قبل از ورودی نمایش داده Ù…ÛŒ شود" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "پسوند" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "بعد از ورودی نمایش داده Ù…ÛŒ شود" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "پرونده" + +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "ویرایش پرونده" + +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "بروزرسانی پرونده" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "نام ÙØ§ÛŒÙ„" + +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:708 +#: pro/fields/class-acf-field-gallery.php:737 +msgid "File size" +msgstr "اندازه ÙØ§ÛŒÙ„" + +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† پرونده" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "آرایه ÙØ§ÛŒÙ„" + +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "آدرس پرونده" + +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "شناسه(ID) پرونده" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:673 +msgid "Library" +msgstr "کتابخانه" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:674 +msgid "Limit the media library choice" +msgstr "محدود کردن انتخاب کتابخانه چندرسانه ای" + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:679 +#: pro/locations/class-acf-location-block.php:79 +msgid "All" +msgstr "همه" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:680 +msgid "Uploaded to post" +msgstr "بارگذاری شده در نوشته" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:687 +msgid "Minimum" +msgstr "کمترین" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "محدودیت در آپلود ÙØ§ÛŒÙ„ ها" + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:716 +msgid "Maximum" +msgstr "بیشترین" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:745 +msgid "Allowed file types" +msgstr "انواع مجاز ÙØ§ÛŒÙ„" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:746 +msgid "Comma separated list. Leave blank for all types" +msgstr "با کامای انگلیسی جدا کرده یا برای عدم محدودیت خالی بگذارید" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "نقشه Ú¯ÙˆÚ¯Ù„" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "با عرض پوزش، این مرورگر از موقعیت یابی جغراÙیایی پشتیبانی نمی کند" + +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "حذ٠مکان" + +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "پیدا کردن مکان ÙØ¹Ù„ÛŒ" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "جستجو برای آدرس . . ." + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "مرکز" + +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "نقشه اولیه را وسط قرار بده" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "بزرگنمایی" + +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "تعین مقدار بزرگنمایی اولیه" + +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:699 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Height" +msgstr "Ø§Ø±ØªÙØ§Ø¹" + +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "Ø³ÙØ§Ø±Ø´ÛŒ سازی Ø§Ø±ØªÙØ§Ø¹ نقشه" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "گروه" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:384 +msgid "Sub Fields" +msgstr "زمینه‌های زیرمجموعه" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "استایل جهت نمایش Ùیلد انتخابی" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:456 +#: pro/locations/class-acf-location-block.php:27 +msgid "Block" +msgstr "بلوک" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:455 +msgid "Table" +msgstr "جدول" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:614 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Row" +msgstr "سطر" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "تصویر" + +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "انتخاب تصویر" + +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "ویرایش تصویر" + +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "بروزرسانی تصویر" + +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "هیچ تصویری انتخاب نشده" + +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† تصویر" + +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "آرایه تصاویر" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "آدرس تصویر" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "شناسه(ID) تصویر" + +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "اندازه پیش نمایش" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "هنگام وارد کردن داده ها نمایش داده Ù…ÛŒ شود" + +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Restrict which images can be uploaded" +msgstr "محدودیت در آپلود تصاویر" + +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:691 +#: pro/fields/class-acf-field-gallery.php:720 +msgid "Width" +msgstr "عرض" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "لینک" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "انتخاب لینک" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "در پنجره جدید باز شود" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "آرایه لینک" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "آدرس لینک" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "پیام" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "خطوط جدید" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "تنظیم کنید Ú©Ù‡ خطوط جدید چگونه نمایش داده شوند" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "پاراگرا٠ها خودکار اضاÙÙ‡ شوند" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "اضاÙÙ‡ کردن خودکار <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "بدون قالب بندی" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "حذ٠HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "اجازه نمایش کدهای HTML به عنوان متن به جای اعمال آنها" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "عدد" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "حداقل مقدار" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "حداکثر مقدار" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "اندازه مرحله" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "مقدار باید عددی باشد" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "مقدار باید مساوی یا بیشتر از %d باشد" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "مقدار باید کوچکتر یا مساوی %d باشد" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "آدرس را وارد کنید" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "اندازه جانمایی" + +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "پیوند (لینک) برگه/نوشته" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "بایگانی ها" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "مادر" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "Ùیلتر با نوع نوشته" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "تمام انواع نوشته" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "Ùیلتر با طبقه بندی" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "تمام طبقه بندی ها" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "اجازه آدرس های آرشیو" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "آیا چندین مقدار انتخاب شوند؟" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "رمزعبور" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "آبجکت یک نوشته" + +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "شناسه(ID) نوشته" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "دکمه رادیویی" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "دیگر" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† گزینه 'دیگر' برای ثبت مقادیر دلخواه" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "ذخیره دیگر" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "ذخیره مقادیر دیگر در انتخاب های زمینه" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "محدوده" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "ارتباط" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "مقادیر به حداکثر رسیده اند ( {max} آیتم )" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "درحال خواندن" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "مطابقتی ÛŒØ§ÙØª نشد" + +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "انتحاب نوع نوشته" + +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "انتخاب طبقه بندی" + +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "جستجو . . ." + +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "Ùیلترها" + +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "نوع نوشته" + +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "طبقه بندی" + +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "عناصر" + +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "عناصر انتخاب شده در هر نتیجه نمایش داده خواهند شد" + +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "حداقل تعداد نوشته‌ها" + +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "حداکثر تعداد نوشته ها" + +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:818 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s به حداقل %s انتخاب نیاز دارد" +msgstr[1] "%s به حداقل %s انتخاب نیاز دارد" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "انتخاب (Select)" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "یک نتیجه موجود است برای انتخاب Enter را ÙØ´Ø§Ø± دهید." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "نتایج %d در دسترس است با Ø§Ø³ØªÙØ§Ø¯Ù‡ از کلید بالا Ùˆ پایین روی آنها حرکت کنید." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "مشابهی ÛŒØ§ÙØª نشد" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "یک یا چند حر٠وارد کنید" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Ù„Ø·ÙØ§ %d یا چند کاراکتر دیگر وارد کنید" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "یک حر٠را حذ٠کنید" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Ù„Ø·ÙØ§ %d کاراکتر را حذ٠کنید" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Ùقط Ù…ÛŒ توانید یک آیتم را انتخاب کنید" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "شما Ùقط Ù…ÛŒ توانید %d مورد را انتخاب کنید" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "بارگذاری نتایج بیشتر…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "جستجو …" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "خطا در ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ داده ها" + +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "ظاهر بهینه شده" + +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "از ایجکس برای خواندن گزینه های Ø§Ø³ØªÙØ§Ø¯Ù‡ شود؟" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "مقدار بازگشتی را انتخاب کنید" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "جداکننده" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "تب" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "جانمایی" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new group " +"of tabs." +msgstr "" +"یک نقطه پایانی برای توق٠زبانه قبلی تعری٠کنید. این کار باعث می‌شود گروه جدیدی " +"از زبانه‌ها ایجاد شود." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "بدون %s" + +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "طبقه‌بندی را برای برون بری انتخاب کنید" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "ظاهر" + +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "ظاهر این زمینه را مشخص کنید" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "چندین مقدار" + +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "چندین انتخاب" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "تک مقدار" + +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "دکمه‌های رادیویی" + +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "ساخت آیتم (ترم)" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "اجازه به ساخت آیتم‌ها(ترم‌ها) جدید در زمان ویرایش" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "ذخیره ترم ها" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "الصاق آیتم های انتخابی به نوشته" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "خواندن ترم ها" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "خواندن مقادیر از ترم های نوشته" + +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "به صورت آبجکت" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "شناسه(ID) آیتم(ترم)" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "کاربر قادر به اضاÙÙ‡ کردن%s جدید نیست" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s هم اکنون موجود است" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s اضاÙÙ‡ شد" + +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Ø§ÙØ²ÙˆØ¯Ù†" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "متن" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "محدودیت کاراکتر" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "برای نامحدود بودن این بخش را خالی بگذارید" + +#: includes/fields/class-acf-field-text.php:181 +#: includes/fields/class-acf-field-textarea.php:213 +#, php-format +msgid "Value must not exceed %d characters" +msgstr "مقدار نباید از %d کاراکتر بیشتر شود" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "جعبه متن (متن چند خطی)" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "سطرها" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "تعیین Ø§Ø±ØªÙØ§Ø¹ باکس متن" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "انتخاب زمان" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "صحیح / غلط" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "نمایش متن همراه انتخاب" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "با متن" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "نمایش متن در زمان ÙØ¹Ø§Ù„ بودن" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "بدون متن" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "نمایش متن در زمان غیر ÙØ¹Ø§Ù„ بودن" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "URL" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "مقدار باید یک آدرس صحیح باشد" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "کاربر" + +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "تÙکیک با نقش" + +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "تمام نقش های کاربر" + +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "آرایه کاربر" + +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "آبجکت کاربر" + +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "شناسه کاربر" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "ویرایشگر دیداری" + +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "بصری" + +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "متن" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "برای اجرای TinyMCE کلیک کنید" + +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "تب ها" + +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "بصری Ùˆ متنی" + +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Ùقط بصری" + +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Ùقط متن" + +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "نوار ابزار" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "آیا دکمه‌های بارگذاری رسانه نمایش داده شوند؟" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "نمایش با تاخیر؟" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "تا زمانی Ú©Ù‡ روی Ùیلد کلیک نشود TinyMCE اجرا نخواهد شد" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "اعتبار سنجی ایمیل" + +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:591 +#: pro/options-page.php:81 +msgid "Update" +msgstr "بروزرسانی" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "نوشته بروز شد" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "اسپم تشخیص داده شد" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "نوشته" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "برگه" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "ÙØ±Ù… ها" + +#: includes/locations.php:243 +msgid "is equal to" +msgstr "برابر شود با" + +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "برابر نشود با" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "پیوست" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "همه‌ی ÙØ±Ù…ت‌های %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "دیدگاه" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "نقش Ú©Ø§Ø±Ø¨Ø±ÙØ¹Ù„ÛŒ" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "مدیرکل" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "کاربر ÙØ¹Ù„ÛŒ" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "وارده شده" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "درحال نمایش سمت کاربر" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "درحال نمایش سمت مدیریت" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "آیتم منو" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "منو" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "محل منو" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "منوها" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "برگه مادر" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "قالب برگه" + +#: includes/locations/class-acf-location-page-template.php:87 +#: includes/locations/class-acf-location-post-template.php:134 +msgid "Default Template" +msgstr "پوسته پیش ÙØ±Ø¶" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "نوع برگه" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "برگه نخست" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "برگه ÛŒ نوشته ها" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "بالاترین سطح برگه(بدون والد)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "برگه مادر (دارای زیر مجموعه)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "برگه زیر مجموعه (دارای مادر)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "دسته بندی نوشته" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "ÙØ±Ù…ت نوشته" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "وضعیت نوشته" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "طبقه بندی نوشته" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "قالب نوشته" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "ÙØ±Ù… کاربر" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "اضاÙÙ‡ کردن/ویرایش" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "ثبت نام" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "نقش کاربر" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "ابزارک" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "مقدار %s لازم است" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "زمینه‌های Ø³ÙØ§Ø±Ø´ÛŒ Ù¾ÛŒØ´Ø±ÙØªÙ‡ نسخه حرÙÙ‡ ای" + +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "انتشار" + +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"هیچ گروه زمینه دلخواهی برای این ØµÙØ­Ù‡ تنظیمات ÛŒØ§ÙØª نشد. ساخت گروه " +"زمینه دلخواه" + +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr "خطا. امکان اتصال به سرور به روزرسانی الان ممکن نیست" + +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "بروزرسانی ها" + +#: pro/admin/admin-updates.php:191 +msgid "" +"Error. Could not authenticate update package. Please check again or " +"deactivate and reactivate your ACF PRO license." +msgstr "" +"خطا. پکیج بروزرسانی اعتبارسنجی نشد. دوباره بررسی کنید یا لایسنس ACF PRO " +"را ØºÛŒØ±ÙØ¹Ø§Ù„ Ùˆ مجددا ÙØ¹Ø§Ù„ کنید." + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ سازی لایسنس" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "ÙØ¹Ø§Ù„ سازی لایسنس" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "اطلاعات لایسنس" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"برای به روزرسانی Ù„Ø·ÙØ§ کد لایسنس را وارد کنید. قیمت ها." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "کلید لایسنس" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "اطلاعات به روز رسانی" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "نسخه ÙØ¹Ù„ÛŒ" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "آخرین نسخه" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "بروزرسانی موجود است" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "بروزرسانی Ø§ÙØ²ÙˆÙ†Ù‡" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "برای ÙØ¹Ø§Ù„سازی به روزرسانی لایسنس خود را بنویسید" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "بررسی دوباره" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "نکات به روزرسانی" + +#: pro/blocks.php:371 +msgid "Switch to Edit" +msgstr "حالت ویرایش" + +#: pro/blocks.php:372 +msgid "Switch to Preview" +msgstr "حالت پیش‌نمایش" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Ú©Ù¾ÛŒ (هیچ)" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "انتخاب Ùیلد دیگری برای Ú©Ù¾ÛŒ" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "نمایش" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "مشخص کردن استایل مورد نظر در نمایش دسته Ùیلدها" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "گروه ها(نمایش Ùیلدهای انتخابی در یک گروه با این Ùیلد)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "بدون مانند (جایگزینی این Ùیلد با Ùیلدهای انتخابی)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "برچسب ها نمایش داده شوند به صورت %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "پیشوند پرچسب Ùیلدها" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "مقادیر ذخیره خواهند شد به صورت %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "پیشوند نام ÙØ§ÛŒÙ„ ها" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Ùیلد ناشناس" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "گروه ناشناس" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "تمام Ùیلدها از %s گروه Ùیلد" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:468 +msgid "Add Row" +msgstr "سطر جدید" + +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:924 +#: pro/fields/class-acf-field-flexible-content.php:1006 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "طرح‌ها" +msgstr[1] "طرح" + +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "طرح ها" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:923 +#: pro/fields/class-acf-field-flexible-content.php:1005 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "این زمینه لازم دارد {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "این گزینه محدود است به {max} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} موجود است (حداکثر {max})" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} لازم دارد (حداقل {min})" + +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "زمینه محتوای انعطا٠پذیر حداقل به یک طرح نیاز دارد" + +#: pro/fields/class-acf-field-flexible-content.php:287 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "روی دکمه \"%s\" دز زیر کلیک کنید تا چیدمان خود را بسازید" + +#: pro/fields/class-acf-field-flexible-content.php:413 +msgid "Add layout" +msgstr "طرح جدید" + +#: pro/fields/class-acf-field-flexible-content.php:414 +msgid "Remove layout" +msgstr "حذ٠طرح" + +#: pro/fields/class-acf-field-flexible-content.php:415 +#: pro/fields/class-acf-field-repeater.php:301 +msgid "Click to toggle" +msgstr "کلیک برای انتخاب" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder Layout" +msgstr "ترتیب بندی طرح ها" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder" +msgstr "مرتب سازی" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete Layout" +msgstr "حذ٠طرح" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate Layout" +msgstr "تکثیر طرح" + +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New Layout" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† طرح جدید" + +#: pro/fields/class-acf-field-flexible-content.php:629 +msgid "Min" +msgstr "حداقل" + +#: pro/fields/class-acf-field-flexible-content.php:642 +msgid "Max" +msgstr "حداکثر" + +#: pro/fields/class-acf-field-flexible-content.php:669 +#: pro/fields/class-acf-field-repeater.php:464 +msgid "Button Label" +msgstr "متن دکمه" + +#: pro/fields/class-acf-field-flexible-content.php:678 +msgid "Minimum Layouts" +msgstr "حداقل تعداد طرح ها" + +#: pro/fields/class-acf-field-flexible-content.php:687 +msgid "Maximum Layouts" +msgstr "حداکثر تعداد طرح ها" + +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† تصویر به گالری" + +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "بیشترین حد انتخاب شده است" + +#: pro/fields/class-acf-field-gallery.php:338 +msgid "Length" +msgstr "طول" + +#: pro/fields/class-acf-field-gallery.php:381 +msgid "Caption" +msgstr "متن" + +#: pro/fields/class-acf-field-gallery.php:390 +msgid "Alt Text" +msgstr "متن جایگزین" + +#: pro/fields/class-acf-field-gallery.php:562 +msgid "Add to gallery" +msgstr "اضاÙÙ‡ به گالری" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Bulk actions" +msgstr "کارهای گروهی" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Sort by date uploaded" +msgstr "به ترتیب تاریخ آپلود" + +#: pro/fields/class-acf-field-gallery.php:568 +msgid "Sort by date modified" +msgstr "به ترتیب تاریخ اعمال تغییرات" + +#: pro/fields/class-acf-field-gallery.php:569 +msgid "Sort by title" +msgstr "به ترتیب عنوان" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Reverse current order" +msgstr "معکوس سازی ترتیب کنونی" + +#: pro/fields/class-acf-field-gallery.php:588 +msgid "Close" +msgstr "بستن" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum Selection" +msgstr "حداقل انتخاب" + +#: pro/fields/class-acf-field-gallery.php:651 +msgid "Maximum Selection" +msgstr "حداکثر انتخاب" + +#: pro/fields/class-acf-field-gallery.php:660 +msgid "Insert" +msgstr "درج" + +#: pro/fields/class-acf-field-gallery.php:661 +msgid "Specify where new attachments are added" +msgstr "مشخص کنید Ú©Ù‡ پیوست ها کجا اضاÙÙ‡ شوند" + +#: pro/fields/class-acf-field-gallery.php:665 +msgid "Append to the end" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† به انتها" + +#: pro/fields/class-acf-field-gallery.php:666 +msgid "Prepend to the beginning" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† قبل از" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:661 +msgid "Minimum rows reached ({min} rows)" +msgstr "مقادیر به حداکثر رسیده اند ( {min} سطر )" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "مقادیر به حداکثر رسیده اند ( {max} سطر )" + +#: pro/fields/class-acf-field-repeater.php:338 +msgid "Add row" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† سطر" + +#: pro/fields/class-acf-field-repeater.php:339 +msgid "Remove row" +msgstr "حذ٠سطر" + +#: pro/fields/class-acf-field-repeater.php:417 +msgid "Collapsed" +msgstr "جمع شده" + +#: pro/fields/class-acf-field-repeater.php:418 +msgid "Select a sub field to show when row is collapsed" +msgstr "یک زمینه زیرمجموعه را انتخاب کنید تا زمان بسته شدن طر نمایش داده شود" + +#: pro/fields/class-acf-field-repeater.php:428 +msgid "Minimum Rows" +msgstr "حداقل تعداد سطرها" + +#: pro/fields/class-acf-field-repeater.php:438 +msgid "Maximum Rows" +msgstr "حداکثر تعداد سطرها" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "هیچ ØµÙØ­Ù‡ تنظیماتی ÛŒØ§ÙØª نشد" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "تنظیمات" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "تنظیمات به روز شدند" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & " +"pricing." +msgstr "" +"برای به روزرسانی Ù„Ø·ÙØ§ کد لایسنس را وارد کنید. بروزرسانی. قیمت ها." + +#: tests/basic/test-blocks.php:13 +msgid "Testimonial" +msgstr "توصیه‌نامه" + +#: tests/basic/test-blocks.php:14 +msgid "A custom testimonial block." +msgstr "بلوک Ø³ÙØ§Ø±Ø´ÛŒ توصیه‌نامه (Testimonial)" + +#: tests/basic/test-blocks.php:40 +msgid "Slider" +msgstr "اسلایدر" + +#: tests/basic/test-blocks.php:41 +msgid "A custom gallery slider." +msgstr "اسلایدر گالری Ø³ÙØ§Ø±Ø´ÛŒ" + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Field group duplicated. %s" +#~ msgstr "گروه زمینه تکثیر شد. %s" + +#~ msgid "%s field group duplicated." +#~ msgid_plural "%s field groups duplicated." +#~ msgstr[0] "%s گروه زمینه تکثیر شد" + +#~ msgid "Field group synchronised. %s" +#~ msgstr "گروه زمینه هماهنگ شد. %s" + +#~ msgid "%s field group synchronised." +#~ msgid_plural "%s field groups synchronised." +#~ msgstr[0] "گروه زمینه %s هماهنگ شده است" + +#~ msgid "Customise WordPress with powerful, professional and intuitive fields." +#~ msgstr "Ø³ÙØ§Ø±Ø´ÛŒ کردن وردپرس با زمینه های قدرتمند، حرÙÙ‡ ای Ùˆ بصری." + +#~ msgid "Error validating request" +#~ msgstr "خطا در اعتبار سنجی درخواست" + +#~ msgid "Error. Could not load add-ons list" +#~ msgstr "خطا. لیست Ø§ÙØ²ÙˆÙ†Ù‡ ها قابل خواندن نیست" + +#~ msgid "Advanced Custom Fields Database Upgrade" +#~ msgstr "به‌روزرسانی پایگاه داده زمینه های دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡" + +#~ msgid "Upgrade complete" +#~ msgstr "به‌روزرسانی انجام شد" + +#~ msgid "" +#~ "Before you start using the new awesome features, please update your database " +#~ "to the newest version." +#~ msgstr "" +#~ "قبل از اینکه از تمام امکانات Ø´Ú¯ÙØª انگیز جدید Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید لازم است بانک " +#~ "اطلاعاتی را به روز کنید" + +#~ msgid "" +#~ "Please also ensure any premium add-ons (%s) have first been updated to the " +#~ "latest version." +#~ msgstr "" +#~ "Ù„Ø·ÙØ§ اطمینان حاصل کنید Ú©Ù‡ Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های تجاري (%s) ابتدا به آخرین نسخه بروز " +#~ "شده‌اند." + +#~ msgid "Database Upgrade complete. See what's new" +#~ msgstr "ارتقاء پایگاه داده کامل شد. تغییرات جدید را ببینید" + +#~ msgid "A smoother custom field experience" +#~ msgstr "احساس بهتر در Ø§Ø³ØªÙØ§Ø¯Ù‡ از زمینه دلخواه" + +#~ msgid "" +#~ "To help make upgrading easy, login to your store account " +#~ "and claim a free copy of ACF PRO!" +#~ msgstr "" +#~ "برای به روزرسانی ساده به بخش کاربری خود در ÙØ±ÙˆØ´Ú¯Ø§Ù‡ وارد شوید " +#~ " Ùˆ یک نسخه از ویرایش حرÙÙ‡ ای را دانلود کنید!" + +#~ msgid "" +#~ "We also wrote an upgrade guide to answer any questions, " +#~ "but if you do have one, please contact our support team via the help desk" +#~ msgstr "" +#~ "همچنین یک راهنمای به روزرسانی برای پاسخ به سوالات نوشته " +#~ "ایم ولی اگر هنوز سوالی دارید از تیم پشتیبانی بپرسید " + +#~ msgid "Under the Hood" +#~ msgstr "در پشت قضیه" + +#~ msgid "Smarter field settings" +#~ msgstr "تنظیمات زمینه ها هوشمندتر شدند" + +#~ msgid "ACF now saves its field settings as individual post objects" +#~ msgstr "" +#~ "Ø§ÙØ²ÙˆÙ†Ù‡ اکنون تنظیمات زمینه ها را به عنوان آبجکت ها مختل٠نوشته ذخیره Ù…ÛŒ کند" + +#~ msgid "More fields use AJAX powered search to speed up page loading" +#~ msgstr "زمینه های بیشتری از جستجوهای ایجکس برای کاهش بار ØµÙØ­Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کنند" + +#~ msgid "New auto export to JSON feature improves speed" +#~ msgstr "امکان جدید خرجی خودکار JSON سرعت را بهبود بخشیده است" + +#~ msgid "Better version control" +#~ msgstr "کنترل نسخه بهتر" + +#~ msgid "" +#~ "New auto export to JSON feature allows field settings to be version " +#~ "controlled" +#~ msgstr "اکنون با خروجی جدید JSON امکان کنترل نسخه بهتر را ÙØ±Ø§Ù‡Ù… کردیم" + +#~ msgid "Swapped XML for JSON" +#~ msgstr "جابجایی XML با JSON" + +#~ msgid "Import / Export now uses JSON in favour of XML" +#~ msgstr "اکنون خروجی Ùˆ ورودی از JSON Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کند" + +#~ msgid "New Forms" +#~ msgstr "ÙØ±Ù… های جدید" + +#~ msgid "Fields can now be mapped to comments, widgets and all user forms!" +#~ msgstr "" +#~ "گزینه ها اکنون Ù…ÛŒ توانند به نظرات، ابزارک ها Ùˆ حتی ÙØ±Ù… های مربوط به کاربران " +#~ "متصل شوند !" + +#~ msgid "A new field for embedding content has been added" +#~ msgstr "زمینه جدیدی برای جانمایی محتوا اضاÙÙ‡ شده است" + +#~ msgid "New Gallery" +#~ msgstr "گالری جدید" + +#~ msgid "The gallery field has undergone a much needed facelift" +#~ msgstr "گالری دارای بهینه سازی هایی برای ارائه امکانات جدید شده است" + +#~ msgid "" +#~ "Field group settings have been added for label placement and instruction " +#~ "placement" +#~ msgstr "تنظیماتی به گروه زمینه برای مکان برچسب ها Ùˆ توضیحات اضاÙÙ‡ شده است" + +#~ msgid "acf_form() can now create a new post on submission" +#~ msgstr "تابع acf_form Ù…ÛŒ تواند در زمان ارسال نوشته تولید کند !" + +#~ msgid "Form validation is now done via PHP + AJAX in favour of only JS" +#~ msgstr "" +#~ "خطایابی ÙØ±Ù… (validation) اکنون از طریق PHP + AJAX به جای JS انجام Ù…ÛŒ شود" + +#~ msgid "Relationship Field" +#~ msgstr "زمینه ارتباط" + +#~ msgid "" +#~ "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +#~ msgstr "تنظیمات جدید برای زمینه ارتباط Ùˆ Ùیلتر کردن اضاÙÙ‡ شده است" + +#~ msgid "" +#~ "New field group functionality allows you to move a field between groups & " +#~ "parents" +#~ msgstr "" +#~ "عملکرد جدید گروه زمینه ها به شما امکان جابجایی زمینه ها بین گروه ها Ùˆ بین " +#~ "گروه های والد را Ù…ÛŒ دهد" + +#~ msgid "New archives group in page_link field selection" +#~ msgstr "گروه بندی بایگانی جدید در انتخاب زمینه پیوند ØµÙØ­Ù‡" + +#~ msgid "Better Options Pages" +#~ msgstr "ØµÙØ­Ù‡ تنظیمات بهتر" + +#~ msgid "" +#~ "New functions for options page allow creation of both parent and child menu " +#~ "pages" +#~ msgstr "" +#~ "تنظیمات جدید برای ØµÙØ­Ù‡ تنظیمات اجازه ساخت هر دو ØµÙØ­Ù‡ منوی والد Ùˆ زیرمجموعه " +#~ "را Ù…ÛŒ دهد" + +#~ msgid "Customise the map height" +#~ msgstr "Ø³ÙØ§Ø±Ø´ÛŒ کردن Ø§Ø±ØªÙØ§Ø¹ نقشه" + +#~ msgid "checked" +#~ msgstr "انتخاب شده" + +#~ msgid "Parent fields" +#~ msgstr "زمینه های مادر" + +#~ msgid "Sibling fields" +#~ msgstr "زمینه های هدÙ" + +#~ msgid "Locating" +#~ msgstr "مکان یابی" + +#~ msgid "Error." +#~ msgstr "خطا." + +#~ msgid "No embed found for the given URL." +#~ msgstr "امکان جاسازی برای آدرس وارد شده ÛŒØ§ÙØª نشد." + +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "مقار به حداقل رسیده است ( {max} )" + +#~ msgid "None" +#~ msgstr "هیچ" + +#~ msgid "Taxonomy Term" +#~ msgstr "آیتم طبقه بندی" + +#~ msgid "remove {layout}?" +#~ msgstr "حذ٠{layout} ØŸ" + +#~ msgid "This field requires at least {min} {identifier}" +#~ msgstr "این زمینه نیازدارد به {min} {identifier}" + +#~ msgid "This field has a limit of {max} {identifier}" +#~ msgstr "این زمینه محدود است به {max} {identifier}" + +#~ msgid "Maximum {label} limit reached ({max} {identifier})" +#~ msgstr "حداکثر {label} پرشده است ({max} {identifier})" + +#~ msgid "Allow this accordion to open without closing others. " +#~ msgstr "اجاره به آکاردئون برای باز شدن بدون بستن دیگران" + +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style repeater " +#~ "field or flexible content field layout" +#~ msgstr "" +#~ "زمینه تب در زمانی Ú©Ù‡ در آن زمینه تکرارشونده Ùˆ یا زمینه محتوای انعطا٠پذیر به " +#~ "کار ببرید درست نمایش داده نخواهد شد" + +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "از (زمینه تب) برای سازماندهی بهتر ØµÙØ­Ù‡ ویرایش با گروه بندی زمینه ها زیر تب " +#~ "ها Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. " + +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" is " +#~ "defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "همه زمینه های زیر این \" زمینه تب \" (یا تا زمینه تب بعدی) با هم گروه بندی " +#~ "Ù…ÛŒ شوند Ùˆ برچسب زمینه در تب به نمایش در خواهد آمد" + +#~ msgid "End-point" +#~ msgstr "نقطه پایانی" + +#~ msgid "Use this field as an end-point and start a new group of tabs" +#~ msgstr "Ø§Ø³ØªÙØ§Ø¯Ù‡ از این زمینه به عنوان نقطه پایانی Ùˆ شروع یک گروه جدید از تب ها" + +#~ msgid "Disabled" +#~ msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "ØºÛŒØ±ÙØ¹Ø§Ù„ (%s)" + +#~ msgid "Getting Started" +#~ msgstr "راهنمای شروع" + +#~ msgid "Field Types" +#~ msgstr "انواع زمینه" + +#~ msgid "Functions" +#~ msgstr "توابع" + +#~ msgid "Actions" +#~ msgstr "اکشن ها (مربوط به کدنویسی)" + +#~ msgid "'How to' guides" +#~ msgstr "راهنماهای کوتاه" + +#~ msgid "Tutorials" +#~ msgstr "آموزش ها" + +#~ msgid "FAQ" +#~ msgstr "پرسش Ùˆ پاسخ" + +#~ msgid "Created by" +#~ msgstr "برنامه نویسی شده توسط" + +#~ msgid "Error loading update" +#~ msgstr "خطا در به روز رسانی" + +#~ msgid "Error" +#~ msgstr "خطا" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "برون بری گروه های زمینه به PHP" + +#~ msgid "Download export file" +#~ msgstr "دانلود ÙØ§ÛŒÙ„ خروجی" + +#~ msgid "Generate export code" +#~ msgstr "تولید کد خروجی" + +#~ msgid "Import" +#~ msgstr "وارد کردن" + +#~ msgid "See what's new" +#~ msgstr "ببینید Ú†Ù‡ چیزی جدید است" + +#~ msgid "eg. Show extra content" +#~ msgstr "به عنوان مثال: نمایش محتوای اضاÙÛŒ" + +#~ msgid "Customise WordPress with powerful, professional and intuitive fields" +#~ msgstr "شخصی سازی وردپرس با زمینه های قدرتمند، حرÙÙ‡ ای Ùˆ دیداری" + +#~ msgid "See what's new in" +#~ msgstr "ببینید Ú†Ù‡ چیزی جدید است" + +#~ msgid "version" +#~ msgstr "نسخه" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "انجام شد ابزار وارد سازی %s زمینه را وارد کرد: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and have " +#~ "been ignored: %s" +#~ msgstr "" +#~ "اخطار ابزار وارد سازی تشخصی داد Ú©Ù‡ گروه زمینه %s اکنون موجود Ù…ÛŒ باشد " +#~ "Ùˆ %s نادیده Ú¯Ø±ÙØªÙ‡ شد" + +#~ msgid "Upgrade ACF" +#~ msgstr "بروزرسانی " + +#~ msgid "Upgrade" +#~ msgstr "بروزرسانی" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "با Ú¯Ø±ÙØªÙ† Ùˆ کشیدن مرتب سازی کنید" + +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to update " +#~ "and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "سایت‌های زیر نیاز به به‌روزرسانی دیتابیس دارند. آن‌هایی Ú©Ù‡ تمایل دارید را " +#~ "انتخاب کنید Ùˆ دکمه به روزرسانی را کلیک کنید." + +#~ msgid "Upgrading data to" +#~ msgstr "به روزرسانی داده ها به" + +#~ msgid "Done" +#~ msgstr "انجام شده" + +#~ msgid "Today" +#~ msgstr "امروز" + +#~ msgid "Show a different month" +#~ msgstr "نمایش یک ماه دیگر" + +#~ msgid "Return format" +#~ msgstr "ÙØ±Ù…ت بازگشت" + +#~ msgid "uploaded to this post" +#~ msgstr "بارگذاری شده در این نوشته" + +#~ msgid "File Name" +#~ msgstr "نام پرونده" + +#~ msgid "File Size" +#~ msgstr "اندازه پرونده" + +#~ msgid "No File selected" +#~ msgstr "هیچ پرونده ای انتخاب نشده" + +#~ msgid "Select" +#~ msgstr "انتخاب(دراپ باکس)" + +#~ msgid "Add new %s " +#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù† %s " + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "خطا در اتصال. متاسÙیم. Ù„Ø·ÙØ§ مجددا بررسی کنید" + +#~ msgid "Save Options" +#~ msgstr "ذخیره تنظیمات" + +#~ msgid "License" +#~ msgstr "لایسنس" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have a " +#~ "licence key, please see" +#~ msgstr "" +#~ "برای به روزرسانی Ù„Ø·ÙØ§ لایسنس خود را وارد کنید. اگر لایسنس ندارید اینجا را " +#~ "ببنید:" + +#~ msgid "details & pricing" +#~ msgstr "جزئیات Ùˆ قیمت" + +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "برای به روز رسانی لایسنس خود را در قسمت به روزرسانی ها " +#~ "وارد کنید. اگر لایسنس ندارید اینجا را ببینید: جزئیات ئ قیمت" + +#~ msgid "Please note that all text will first be passed through the wp function " +#~ msgstr "دقت کنید Ú©Ù‡ نکاک متن ها اول از تابع وردپرس عبور خواهند کرد" + +#~ msgid "Warning" +#~ msgstr "اخطار" + +#~ msgid "Hide / Show All" +#~ msgstr "مخÙÛŒ کردن / نمایش همه" + +#~ msgid "Show Field Keys" +#~ msgstr "نمایش کلید های زمینه" + +#~ msgid "Import / Export" +#~ msgstr "درون ریزی/برون بری" + +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "" +#~ "گروه های زمینه به ترتیب از کوچکترین شماره تا بزرگترین شماره نمایش داده Ù…ÛŒ " +#~ "شوند" + +#~ msgid "Upgrading data to " +#~ msgstr "به روز رسانی داده ها به %s" + +#~ msgid "Sync Terms" +#~ msgstr "همگام سازی آیتم‌ها(ترم‌ها)" + +#~ msgid "Pending Review" +#~ msgstr "در انتظار بررسی" + +#~ msgid "Draft" +#~ msgstr "پیش نویس" + +#~ msgid "Future" +#~ msgstr "شاخص" + +#~ msgid "Private" +#~ msgstr "خصوصی" + +#~ msgid "Revision" +#~ msgstr "بازنگری" + +#~ msgid "Trash" +#~ msgstr "زباله دان" + +#~ msgid "ACF PRO Required" +#~ msgstr "نسخه حرÙÙ‡ ای لازم است" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website makes " +#~ "use of premium add-ons (%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "مشکلی مشاهده شده است Ú©Ù‡ نیاز به توجه شما دارد. این وب سایت مجاز به Ø§Ø³ØªÙØ§Ø¯Ù‡ " +#~ "از Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های پولی (%s) Ù…ÛŒ باشد Ú©Ù‡ دیگر سازگار نیستند" + +#~ msgid "" +#~ "Don't panic, you can simply roll back the plugin and continue using ACF as " +#~ "you know it!" +#~ msgstr "مشکلی نیست. شما Ù…ÛŒ توانید به نسخه ای Ú©Ù‡ به آن عادت دارید برگردید!" + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "بازگشت به v%s" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "یاد بگیرید Ú©Ù‡ چرا نسخه حرÙÙ‡ ای بای سایت شما لازم است" + +#~ msgid "Data Upgrade" +#~ msgstr "به روزرسانی داده ها" + +#~ msgid "Data upgraded successfully." +#~ msgstr "داده ها با موÙقیت به روز رسانی شدند" + +#~ msgid "Data is at the latest version." +#~ msgstr "داده ها آخرین نسخه Ù…ÛŒ باشند" + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "زمینه زیر خالی است" +#~ msgstr[1] "%s زمینه در زیر خالی است" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "خواندن Ùˆ ذخیره دسته(ترم)ها برای نوشته" + +#~ msgid "" +#~ "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "" +#~ "مقدار بر اساس دسته(ترم) نوشته خوانده شود Ùˆ دسته های نوشته را در هنگام ذخیره " +#~ "به روز رسانی کند" + +#~ msgid "Controls how HTML tags are rendered" +#~ msgstr "کنترل چگونگی نمایش تگ های HTML" + +#, fuzzy +#~ msgid "image" +#~ msgstr "تصویر" + +#, fuzzy +#~ msgid "expand_details" +#~ msgstr "نمایش جزئیات" + +#, fuzzy +#~ msgid "collapse_details" +#~ msgstr "عدم نمایش جزئیات" + +#, fuzzy +#~ msgid "relationship" +#~ msgstr "ارتباط" + +#, fuzzy +#~ msgid "unload" +#~ msgstr "دانلود" + +#, fuzzy +#~ msgid "title_is_required" +#~ msgstr "عنوان گروه زمینه ضروری است" + +#, fuzzy +#~ msgid "move_field" +#~ msgstr "جابجایی زمینه" + +#, fuzzy +#~ msgid "flexible_content" +#~ msgstr "محتوای انعطا٠پذیر" + +#, fuzzy +#~ msgid "gallery" +#~ msgstr "گالری" + +#, fuzzy +#~ msgid "repeater" +#~ msgstr "زمینه تکرار کننده" + +#~ msgid "Attachment Details" +#~ msgstr "جزئیات پیوست" + +#~ msgid "Custom field updated." +#~ msgstr "زمینه دلخواه بروز شد" + +#~ msgid "Custom field deleted." +#~ msgstr "زمینه دلخواه حذ٠شد" + +#~ msgid "Field group duplicated! Edit the new \"%s\" field group." +#~ msgstr "گروه زمینه تکراری است! گروه زمینه جدید \"%s\" را ویرایش کنید" + +#~ msgid "Import/Export" +#~ msgstr "درون ریزی/برون بری" + +#~ msgid "Column Width" +#~ msgstr "عرض ستون" + +#~ msgid "Field group restored to revision from %s" +#~ msgstr "گروه زمینه از %s برای تجدید نظر بازگردانده شد." + +#~ msgid "No ACF groups selected" +#~ msgstr "هیچ گروه زمینه دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡ ای انتخاب نشده است." + +#~ msgid "Create infinite rows of repeatable data with this versatile interface!" +#~ msgstr "" +#~ "ایجاد بی نهایت سطر از داده های تکرار شونده به وسیله این زمینه چند منظوره!" + +#~ msgid "Create image galleries in a simple and intuitive interface!" +#~ msgstr "ایجاد گالری های تصاویر در یک رابط کاربری ساده Ùˆ دیداری!" + +#~ msgid "Create global data to use throughout your website!" +#~ msgstr "ایجاد داده ÙØ±Ø§Ú¯ÛŒØ± برای Ø§Ø³ØªÙØ§Ø¯Ù‡ در همه جای سایت شما!" + +#~ msgid "Create unique designs with a flexible content layout manager!" +#~ msgstr "ایجاد طرح های منحصر به ÙØ±Ø¯ با زمینه محتوای انعطا٠پذیر!" + +#~ msgid "Gravity Forms Field" +#~ msgstr "زمینه Ø§ÙØ²ÙˆÙ†Ù‡ GravityForms" + +#~ msgid "Creates a select field populated with Gravity Forms!" +#~ msgstr "" +#~ "زمینه جدید از نوع انتخاب Ù…ÛŒ سازد Ú©Ù‡ Ù…ÛŒ توانید یکی از ÙØ±Ù… های GravityForms Ú©Ù‡ " +#~ "ساخته اید را از آن انتخاب کنید" + +#~ msgid "Date & Time Picker" +#~ msgstr "تاریخ Ùˆ زمان" + +#~ msgid "jQuery date & time picker" +#~ msgstr "تاریخ Ùˆ زمان جی کوئری" + +#~ msgid "Find addresses and coordinates of a desired location" +#~ msgstr "ÛŒØ§ÙØªÙ† آدرس Ùˆ مختصات مکان مورد نظر" + +#~ msgid "Contact Form 7 Field" +#~ msgstr "زمینه ÙØ±Ù… تماس (Contact Form 7)" + +#~ msgid "Assign one or more contact form 7 forms to a post" +#~ msgstr "اختصاص یک یا چند ÙØ±Ù… تماس (Contact Form 7) به یک نوشته" + +#~ msgid "Advanced Custom Fields Add-Ons" +#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های Ø§ÙØ²ÙˆÙ†Ù‡ زمینه های دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡" + +#~ msgid "" +#~ "The following Add-ons are available to increase the functionality of the " +#~ "Advanced Custom Fields plugin." +#~ msgstr "" +#~ "Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های زیر برای Ø§ÙØ²Ø§ÛŒØ´ قابلیت های Ø§ÙØ²ÙˆÙ†Ù‡ زمینه های دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡ قابل " +#~ "Ø§Ø³ØªÙØ§Ø¯Ù‡ هستند." + +#~ msgid "" +#~ "Each Add-on can be installed as a separate plugin (receives updates) or " +#~ "included in your theme (does not receive updates)." +#~ msgstr "" +#~ "هر Ø§ÙØ²ÙˆØ¯Ù†ÛŒ Ù…ÛŒ تواند به عنوان یک Ø§ÙØ²ÙˆÙ†Ù‡ جدا ( قابل بروزرسانی) نصب شود Ùˆ یا در " +#~ "پوسته شما (غیرقابل بروزرسانی) قرار گیرد." + +#~ msgid "Purchase & Install" +#~ msgstr "خرید Ùˆ نصب" + +#~ msgid "Export" +#~ msgstr "برون بری" + +#~ msgid "Export to XML" +#~ msgstr "برون بری به ÙØ±Ù…ت XML" + +#~ msgid "Export to PHP" +#~ msgstr "برون بری به ÙØ±Ù…ت PHP" + +#~ msgid "" +#~ "ACF will create a .xml export file which is compatible with the native WP " +#~ "import plugin." +#~ msgstr "" +#~ "Ø§ÙØ²ÙˆÙ†Ù‡ زمینه های دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡ یک پرونده خروجی (.xml) را ایجاد خواهد کرد Ú©Ù‡ " +#~ "با Ø§ÙØ²ÙˆÙ†Ù‡ Wordpress Importer سازگار است." + +#~ msgid "" +#~ "Imported field groups will appear in the list of editable field " +#~ "groups. This is useful for migrating fields groups between Wp websites." +#~ msgstr "" +#~ "گروه های زمینه درون ریزی شده در لیست گروه های زمینه قابل ویرایش نمایش داده " +#~ "خواهند شد. این روش برای انتقال گروه های زمینه در بین سایت های وردپرسی " +#~ "Ù…Ùید است." + +#~ msgid "Select field group(s) from the list and click \"Export XML\"" +#~ msgstr "" +#~ "گروه زمینه را از لیست انتخاب کنید Ùˆ سپس روی دکمه ((برون بری به ÙØ±Ù…ت XML)) " +#~ "کلیک کنید" + +#~ msgid "Save the .xml file when prompted" +#~ msgstr "ÙØ§ÛŒÙ„ .xml را وقتی آماده شد، ذخیره کنید" + +#~ msgid "Navigate to Tools » Import and select WordPress" +#~ msgstr "به ((ابزارها > درون ریزی)) بروید Ùˆ وردپرس را انتخاب کنید." + +#~ msgid "Install WP import plugin if prompted" +#~ msgstr "Ø§ÙØ²ÙˆÙ†Ù‡ درون ریزی وردپرس را در صورت درخواست نصب نمایید" + +#~ msgid "Upload and import your exported .xml file" +#~ msgstr "ÙØ§ÛŒÙ„ .xml خود را آپلود Ùˆ درون ریزی کنید" + +#~ msgid "Select your user and ignore Import Attachments" +#~ msgstr "کاربر خود را انتخاب کنید Ùˆ درون ریزی پیوست ها را نا دیده بگیرید" + +#~ msgid "That's it! Happy WordPressing" +#~ msgstr "همین ! از وردپرس لذت ببرید" + +#~ msgid "ACF will create the PHP code to include in your theme." +#~ msgstr "" +#~ "Ø§ÙØ²ÙˆÙ†Ù‡ زمینه های دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡ کد های PHP برای اضاÙÙ‡ کردن در پوسته در " +#~ "اختیاران قرار Ù…ÛŒ دهد" + +#~ msgid "" +#~ "Registered field groups will not appear in the list of editable field " +#~ "groups. This is useful for including fields in themes." +#~ msgstr "" +#~ "گروه های زمینه ساخته خواهند شد ولی قابل ویرایش نخواهند بود.یعنی در " +#~ "لیست Ø§ÙØ²ÙˆÙ†Ù‡ برای ویرایش دیده نمی شوند. این روش برای قرار دادن زمینه ها در " +#~ "پوسته ها (برای مشتری) Ù…Ùید است." + +#~ msgid "" +#~ "Please note that if you export and register field groups within the same WP, " +#~ "you will see duplicate fields on your edit screens. To fix this, please move " +#~ "the original field group to the trash or remove the code from your functions." +#~ "php file." +#~ msgstr "" +#~ "Ù„Ø·ÙØ§ توجه کنید Ú©Ù‡ اگر از هر دو روش ذکر شما در یک وردپرس به صورت هم زمان " +#~ "Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید، در ØµÙØ­Ù‡ ویرایش مطالب، دو بار زمینه ها را خواهید دید. واضح است " +#~ "Ú©Ù‡ برای حل این مشکل یا باید زمینه ها را از Ø§ÙØ²ÙˆÙ†Ù‡ حذ٠کنید یا کدهای php را " +#~ "از پوسته Ùˆ احتمالا functions.php حذ٠کنید." + +#~ msgid "Select field group(s) from the list and click \"Create PHP\"" +#~ msgstr "" +#~ "گروه های زمینه را از لیست انتخاب کنید Ùˆ سپس روی دکمه ((برون بری به ÙØ±Ù…ت " +#~ "PHP)) کلیک کنید" + +#~ msgid "Copy the PHP code generated" +#~ msgstr "کدهای PHP تولید شده را Ú©Ù¾ÛŒ کنید" + +#~ msgid "Paste into your functions.php file" +#~ msgstr "در ÙØ§ÛŒÙ„ functions.php پوسته خود قرار دهید" + +#~ msgid "To activate any Add-ons, edit and use the code in the first few lines." +#~ msgstr "برای ÙØ¹Ø§Ù„سازی Ø§ÙØ²ÙˆØ¯Ù†ÛŒ ها،چند سطر اول کدها را ویرایش Ùˆ Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید" + +#~ msgid "Notes" +#~ msgstr "نکته ها" + +#~ msgid "Include in theme" +#~ msgstr "قرار دادن در پوسته" + +#~ msgid "" +#~ "The Advanced Custom Fields plugin can be included within a theme. To do so, " +#~ "move the ACF plugin inside your theme and add the following code to your " +#~ "functions.php file:" +#~ msgstr "" +#~ "Ø§ÙØ²ÙˆÙ†Ù‡ زمینه های دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡ وردپرس Ù…ÛŒ تواند در داخل یک پوسته قرار بگیرد. " +#~ "برای انجام این کار، Ø§ÙØ²ÙˆÙ†Ù‡ را به کنار پوسته تان انتقال دهید Ùˆ کدهای زیر را " +#~ "به پرونده functions.php اضاÙÙ‡ کنید:" + +#~ msgid "" +#~ "To remove all visual interfaces from the ACF plugin, you can use a constant " +#~ "to enable lite mode. Add the following code to your functions.php file " +#~ "before the include_once code:" +#~ msgstr "" +#~ "برای حذ٠همه رابط های بصری از Ø§ÙØ²ÙˆÙ†Ù‡ زمینه های دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡ (دیده نشدن " +#~ "Ø§ÙØ²ÙˆÙ†Ù‡)ØŒ Ù…ÛŒ توانید از یک ثابت (کانستنت) برای ÙØ¹Ø§Ù„ سازی حالت سبک (lite) " +#~ "Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. کد زیر را به پرونده functions.php خود قبل از تابع " +#~ "include_once اضاÙÙ‡ کنید:" + +#~ msgid "Back to export" +#~ msgstr "بازگشت به برون بری" + +#~ msgid "What’s New" +#~ msgstr "Ú†Ù‡ چیزی جدید است؟" + +#~ msgid "Activation codes have grown into plugins!" +#~ msgstr "کدهای ÙØ¹Ø§Ù„سازی در Ø§ÙØ²ÙˆÙ†Ù‡ ها Ø§ÙØ²Ø§ÛŒØ´ ÛŒØ§ÙØªÙ‡ اند!" + +#~ msgid "" +#~ "Add-ons are now activated by downloading and installing individual plugins. " +#~ "Although these plugins will not be hosted on the wordpress.org repository, " +#~ "each Add-on will continue to receive updates in the usual way." +#~ msgstr "" +#~ "Ø§ÙØ²ÙˆØ¯Ù†ÛŒ ها الان با Ø¯Ø±ÛŒØ§ÙØª Ùˆ نصب Ø§ÙØ²ÙˆÙ†Ù‡ های جداگانه ÙØ¹Ø§Ù„ Ù…ÛŒ شوند. با اینکه " +#~ "این Ø§ÙØ²ÙˆÙ†Ù‡ ها در مخزن وردپرس پشتیبانی نخواهند شد، هر Ø§ÙØ²ÙˆØ¯Ù†ÛŒ به صورت معمول " +#~ "به روز رسانی را Ø¯Ø±ÛŒØ§ÙØª خواهد کرد." + +#~ msgid "All previous Add-ons have been successfully installed" +#~ msgstr "تمام Ø§ÙØ²ÙˆÙ†Ù‡ های قبلی با موÙقیت نصب شده اند" + +#~ msgid "This website uses premium Add-ons which need to be downloaded" +#~ msgstr "این سایت از Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های پولی Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کند Ú©Ù‡ لازم است دانلود شوند" + +#~ msgid "Download your activated Add-ons" +#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های ÙØ¹Ø§Ù„ شده ÛŒ خود را دانلود کنید" + +#~ msgid "" +#~ "This website does not use premium Add-ons and will not be affected by this " +#~ "change." +#~ msgstr "" +#~ "این سایت از Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های ویژه Ø§Ø³ØªÙØ§Ø¯Ù‡ نمی کند Ùˆ تحت تأثیر این تغییر قرار " +#~ "نخواهد Ú¯Ø±ÙØª" + +#~ msgid "Easier Development" +#~ msgstr "توسعه آسانتر" + +#~ msgid "New Field Types" +#~ msgstr "انواع زمینه جدید" + +#~ msgid "Taxonomy Field" +#~ msgstr "زمینه طبقه بندی" + +#~ msgid "Email Field" +#~ msgstr "زمینه پست الکترونیکی" + +#~ msgid "Password Field" +#~ msgstr "زمینه رمزعبور" + +#~ msgid "" +#~ "Creating your own field type has never been easier! Unfortunately, version 3 " +#~ "field types are not compatible with version 4." +#~ msgstr "" +#~ "ساخت نوع زمینه دلخواه برای خودتان هرگز به این آسانی نبوده! Ù…ØªØ£Ø³ÙØ§Ù†Ù‡ØŒ انواع " +#~ "زمینه های نسخه 3 با نسخه 4 سازگار نیستند." + +#~ msgid "Migrating your field types is easy, please" +#~ msgstr "انتقال انواع زمینه ها آسان است. پس Ù„Ø·ÙØ§ Ø§ÙØ²ÙˆÙ†Ù‡ خود را بروزرسانی کنید." + +#~ msgid "follow this tutorial" +#~ msgstr "این آموزش را دنبال کنید" + +#~ msgid "to learn more." +#~ msgstr "تا بیشتر بیاموزید" + +#~ msgid "Actions & Filters" +#~ msgstr "اکشن ها Ùˆ Ùیلترها" + +#~ msgid "" +#~ "All actions & filters have received a major facelift to make customizing ACF " +#~ "even easier! Please" +#~ msgstr "" +#~ "همه اکشن ها Ùˆ Ùیلترها دارای تغییرات عمده ای شدند تا دلخواه سازی ACF از قبل " +#~ "آسانتر شود" + +#~ msgid "read this guide" +#~ msgstr "Ù„Ø·ÙØ§ راهنما را مطالعه ÙØ±Ù…ایید" + +#~ msgid "to find the updated naming convention." +#~ msgstr "تا نامگذاری های جدید را متوجه شوید" + +#~ msgid "Preview draft is now working!" +#~ msgstr "پیش نمایش پیش نویس اکنون کار Ù…ÛŒ کند" + +#~ msgid "This bug has been squashed along with many other little critters!" +#~ msgstr "این مشکل همراه با بسیاری از مشکلات دیگر برطر٠شده اند!" + +#~ msgid "See the full changelog" +#~ msgstr "مشاهده تغییرات کامل" + +#~ msgid "Database Changes" +#~ msgstr "تغییرات پایگاه داده" + +#~ msgid "" +#~ "Absolutely no changes have been made to the database " +#~ "between versions 3 and 4. This means you can roll back to version 3 without " +#~ "any issues." +#~ msgstr "" +#~ "هیچ تغییری در پایگاه داده بین نسخه 3 Ùˆ 4 ایجاد نشده است. " +#~ "این بدین معنی است Ú©Ù‡ شما Ù…ÛŒ توانید بدون هیچ گونه مسئله ای به نسخه 3 برگردید." + +#~ msgid "Potential Issues" +#~ msgstr "مسائل بالقوه" + +#~ msgid "" +#~ "Do to the sizable changes surounding Add-ons, field types and action/" +#~ "filters, your website may not operate correctly. It is important that you " +#~ "read the full" +#~ msgstr "" +#~ "با توجه به تغییرات Ø§ÙØ²ÙˆØ¯Ù†ÛŒ ها، انواع زمینه ها Ùˆ اکشن ها/Ùیلترها، ممکن است " +#~ "سایت شما به درستی عمل نکند. پس لازم است راهنمای کامل " + +#~ msgid "Migrating from v3 to v4" +#~ msgstr "مهاجرت از نسخه 3 به نسخه 4 را مطالعه کنید" + +#~ msgid "guide to view the full list of changes." +#~ msgstr "راهنمایی برای مشاهده لیست کاملی از تغییرات" + +#~ msgid "Really Important!" +#~ msgstr "واقعا مهم!" + +#~ msgid "" +#~ "If you updated the ACF plugin without prior knowledge of such changes, " +#~ "please roll back to the latest" +#~ msgstr "" +#~ "اگر شما Ø§ÙØ²ÙˆÙ†Ù‡ زمینه های دلخواه Ù¾ÛŒØ´Ø±ÙØªÙ‡ وردپرس را بدون آگاهی از آخرین " +#~ "تغییرات بروزرسانی کردید، Ù„Ø·ÙØ§ به نسخه قبل برگردید " + +#~ msgid "version 3" +#~ msgstr "نسخه 3" + +#~ msgid "of this plugin." +#~ msgstr "از این Ø§ÙØ²ÙˆÙ†Ù‡." + +#~ msgid "Thank You" +#~ msgstr "از شما متشکرم" + +#~ msgid "" +#~ "A BIG thank you to everyone who has helped test the version " +#~ "4 beta and for all the support I have received." +#~ msgstr "" +#~ "یک تشکر بزرگ از شما Ùˆ همه کسانی Ú©Ù‡ در تست نسخه 4 بتا به من " +#~ "Ú©Ù…Ú© کردند میکنم. برای تمام Ú©Ù…Ú© ها Ùˆ پشتیبانی هایی Ú©Ù‡ Ø¯Ø±ÛŒØ§ÙØª کردم نیز از همه " +#~ "شما متشکرم." + +#~ msgid "Without you all, this release would not have been possible!" +#~ msgstr "بدون همه شما انتشار این نسخه امکان پذیر نبود!" + +#~ msgid "Changelog for" +#~ msgstr "تغییرات برای" + +#~ msgid "Learn more" +#~ msgstr "اطلاعات بیشتر" + +#~ msgid "Overview" +#~ msgstr "بازنگری" + +#~ msgid "" +#~ "Previously, all Add-ons were unlocked via an activation code (purchased from " +#~ "the ACF Add-ons store). New to v4, all Add-ons act as separate plugins which " +#~ "need to be individually downloaded, installed and updated." +#~ msgstr "" +#~ "پیش از این، Ù‚ÙÙ„ همه Ø§ÙØ²ÙˆØ¯Ù†ÛŒ ها از طریق یک کد ÙØ¹Ø§Ù„سازی (خریداری شده از " +#~ "ÙØ±ÙˆØ´Ú¯Ø§Ù‡ Ø§ÙØ²ÙˆØ¯Ù†ÛŒ ها) باز Ù…ÛŒ شدند.اما در نسخه 4 همه آنها به صورت Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های " +#~ "جداگانه هستند Ùˆ باید به صورت جدا Ø¯Ø±ÛŒØ§ÙØªØŒ نصب Ùˆ بروزرسانی شوند." + +#~ msgid "" +#~ "This page will assist you in downloading and installing each available Add-" +#~ "on." +#~ msgstr "این برگه به شما در Ø¯Ø±ÛŒØ§ÙØª Ùˆ نصب هر Ø§ÙØ²ÙˆØ¯Ù†ÛŒ موجود Ú©Ù…Ú© خواهد کرد." + +#~ msgid "Available Add-ons" +#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های موجود" + +#~ msgid "The following Add-ons have been detected as activated on this website." +#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù†ÛŒ های زیر به صورت ÙØ¹Ø§Ù„ در این سایت شناسایی شده اند" + +#~ msgid "Installation" +#~ msgstr "نصب" + +#~ msgid "For each Add-on available, please perform the following:" +#~ msgstr "برای هر Ø§ÙØ²ÙˆØ¯Ù†ÛŒ موجود، Ù„Ø·ÙØ§ کارهای زیر را انجام دهید:" + +#~ msgid "Download the Add-on plugin (.zip file) to your desktop" +#~ msgstr "دانلود Ø§ÙØ²ÙˆÙ†Ù‡ Ø§ÙØ²ÙˆØ¯Ù†ÛŒ (پرونده ZIP) در کامپیوتر خود" + +#~ msgid "Navigate to" +#~ msgstr "Ø±ÙØªÙ† به" + +#~ msgid "Plugins > Add New > Upload" +#~ msgstr "Ø§ÙØ²ÙˆÙ†Ù‡ ها > Ø§ÙØ²ÙˆØ¯Ù† > بارگذاری" + +#~ msgid "Use the uploader to browse, select and install your Add-on (.zip file)" +#~ msgstr "" +#~ "از بارگذار برای انتخاب ÙØ§ÛŒÙ„ Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. Ø§ÙØ²ÙˆØ¯Ù†ÛŒ خود را (پرونده ZIP) انتخاب " +#~ "Ùˆ نصب نمایید" + +#~ msgid "" +#~ "Once the plugin has been uploaded and installed, click the 'Activate Plugin' " +#~ "link" +#~ msgstr "" +#~ "هنگامی Ú©Ù‡ یک Ø§ÙØ²ÙˆÙ†Ù‡ Ø¯Ø±ÛŒØ§ÙØª Ùˆ نصب شده است، روی لینک (( ÙØ¹Ø§Ù„ کردن Ø§ÙØ²ÙˆÙ†Ù‡)) " +#~ "کلیک کنید" + +#~ msgid "The Add-on is now installed and activated!" +#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù†ÛŒ در حال حاضر نصب Ùˆ ÙØ¹Ø§Ù„ سازی شده است!" + +#~ msgid "Awesome. Let's get to work" +#~ msgstr "Ø´Ú¯ÙØª انگیزه، نه؟ پس بیا شروع به کار کنیم." + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "یک یا چند مورد از گزینه های زیر را لازم است تکمیل نمایید" + +#~ msgid "Modifying field group options 'show on page'" +#~ msgstr "اصلاح گزینه های 'نمایش در برگه' ÛŒ گروه زمینه" + +#~ msgid "Modifying field option 'taxonomy'" +#~ msgstr "اصلاح گزینه 'صبقه بندی' زمینه" + +#~ msgid "Moving user custom fields from wp_options to wp_usermeta'" +#~ msgstr "انتقال زمینه های دلخواه کاربر از wp_options به wp_usermeta" + +#~ msgid "blue : Blue" +#~ msgstr "blue : آبی" + +#~ msgid "Dummy" +#~ msgstr "ساختگی" + +#~ msgid "Size" +#~ msgstr "اندازه" + +#~ msgid "File Object" +#~ msgstr "آبجکت پرونده" + +#~ msgid "Image Object" +#~ msgstr "آبجکت تصویر" + +#~ msgid "Text & HTML entered here will appear inline with the fields" +#~ msgstr "" +#~ "متن Ùˆ کد HTML وارد شده در اینجا در خط همراه با زمینه نمایش داده خواهد شد" + +#~ msgid "Enter your choices one per line" +#~ msgstr "انتخاب ها را در هر خط وارد کنید" + +#~ msgid "Red" +#~ msgstr "قرمز" + +#~ msgid "Blue" +#~ msgstr "آبی" + +#~ msgid "Post Objects" +#~ msgstr "آبجکت های نوشته ها" + +#~ msgid "Post Type Select" +#~ msgstr "انتخاب نوع نوشته" + +#~ msgid "Use multiple tabs to divide your fields into sections." +#~ msgstr "از چندین تب برای تقسیم زمینه های خود به بخش های Ù…Ø®ØªÙ„Ù Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید." + +#~ msgid "Formatting" +#~ msgstr "قالب بندی" + +#~ msgid "Effects value on front end" +#~ msgstr "موثر بر شیوه نمایش در سایت اصلی" + +#~ msgid "Convert HTML into tags" +#~ msgstr "تبدیل HTML به تگ ها" + +#~ msgid "Convert new lines into <br /> tags" +#~ msgstr "تبدیل خط های جدید به برچسب ها" + +#~ msgid "Save format" +#~ msgstr "ÙØ±Ù…ت ذخیره" + +#~ msgid "" +#~ "This format will determin the value saved to the database and returned via " +#~ "the API" +#~ msgstr "" +#~ "این ÙØ±Ù…ت مقدار ذخیره شده در پایگاه داده را مشخص خواهد کرد Ùˆ از طریق API قابل " +#~ "خواندن است" + +#~ msgid "\"yymmdd\" is the most versatile save format. Read more about" +#~ msgstr "\"yymmdd\" بهترین Ùˆ پر Ø§Ø³ØªÙØ§Ø¯Ù‡ ترین ÙØ±Ù…ت ذخیره است. اطلاعات بیشتر" + +#~ msgid "jQuery date formats" +#~ msgstr "ÙØ±Ù…ت های تاریخ جی کوئری" + +#~ msgid "This format will be seen by the user when entering a value" +#~ msgstr "این ÙØ±Ù…ت توسط کاربر در هنگام وارد کردن یک مقدار دیده خواهد شد" + +#~ msgid "" +#~ "\"dd/mm/yy\" or \"mm/dd/yy\" are the most used Display Formats. Read more " +#~ "about" +#~ msgstr "" +#~ "\"dd/mm/yy\" یا \"mm/dd/yy\" پر Ø§Ø³ØªÙØ§Ø¯Ù‡ ترین قالب های نمایش تاریخ Ù…ÛŒ باشند. " +#~ "اطلاعات بیشتر" + +#~ msgid "Field Order" +#~ msgstr "ترتیب زمینه" + +#~ msgid "Edit this Field" +#~ msgstr "ویرایش این زمینه" + +#~ msgid "Docs" +#~ msgstr "توضیحات" + +#~ msgid "Field Instructions" +#~ msgstr "دستورالعمل های زمینه" + +#~ msgid "Show this field when" +#~ msgstr "نمایش این زمینه موقعی Ú©Ù‡" + +#~ msgid "all" +#~ msgstr "همه" + +#~ msgid "any" +#~ msgstr "هرکدام از" + +#~ msgid "these rules are met" +#~ msgstr "این قوانین تلاقی کردند" + +#~ msgid "Vote" +#~ msgstr "رأی دادن" + +#~ msgid "Follow" +#~ msgstr "دنبال کردن" + +#~ msgid "credits" +#~ msgstr "اعتبارات" + +#~ msgid "Term" +#~ msgstr "دوره" + +#~ msgid "No Metabox" +#~ msgstr "بدون متاباکس" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-fi.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-fi.mo new file mode 100755 index 0000000000000000000000000000000000000000..06e3eaed3608395ed428e7b722bfb90e984cec28 GIT binary patch literal 51204 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 Xj9g2E{#)OXV{I^1cwySVBlrIRFxjnN literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-fi.po b/wp-content/plugins/advanced-custom-fields/lang/acf-fi.po new file mode 100644 index 0000000..3566e94 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-fi.po @@ -0,0 +1,3438 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2017-09-22 14:17+0300\n" +"PO-Revision-Date: 2018-02-06 10:05+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:67 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:369 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Kenttäryhmät" + +#: acf.php:370 +msgid "Field Group" +msgstr "Kenttäryhmä" + +#: acf.php:371 acf.php:403 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New" +msgstr "Lisää uusi" + +#: acf.php:372 +msgid "Add New Field Group" +msgstr "Lisää uusi kenttäryhmä" + +#: acf.php:373 +msgid "Edit Field Group" +msgstr "Muokkaa kenttäryhmää" + +#: acf.php:374 +msgid "New Field Group" +msgstr "Lisää uusi kenttäryhmä" + +#: acf.php:375 +msgid "View Field Group" +msgstr "Katso kenttäryhmää" + +#: acf.php:376 +msgid "Search Field Groups" +msgstr "Etsi kenttäryhmiä" + +#: acf.php:377 +msgid "No Field Groups found" +msgstr "Kenttäryhmiä ei löytynyt" + +#: acf.php:378 +msgid "No Field Groups found in Trash" +msgstr "Kenttäryhmiä ei löytynyt roskakorista" + +#: acf.php:401 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:807 +msgid "Fields" +msgstr "Kentät" + +#: acf.php:402 +msgid "Field" +msgstr "Kenttä" + +#: acf.php:404 +msgid "Add New Field" +msgstr "Lisää uusi kenttä" + +#: acf.php:405 +msgid "Edit Field" +msgstr "Muokkaa kenttää" + +#: acf.php:406 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Uusi kenttä" + +#: acf.php:407 +msgid "View Field" +msgstr "Näytä kenttä" + +#: acf.php:408 +msgid "Search Fields" +msgstr "Etsi kenttiä" + +#: acf.php:409 +msgid "No Fields found" +msgstr "Kenttiä ei löytynyt" + +#: acf.php:410 +msgid "No Fields found in Trash" +msgstr "Kenttiä ei löytynyt roskakorista" + +#: acf.php:449 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Ei-aktiivinen" + +#: acf.php:454 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Ei-aktiivinen (%s)" +msgstr[1] "Ei-aktiivisia (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Kenttäryhmä päivitetty" + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Kenttäryhmä poistettu" + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Kenttäryhmä julkaistu" + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Kenttäryhmä tallennettu" + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Kenttäryhmä lähetetty." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Kenttäryhmä ajoitettu." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Luonnos kenttäryhmästä päivitetty" + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "Sijainti" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "Asetukset" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "Haluatko varmasti siirtää roskakoriin?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "valittu" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "Ei toggle kenttiä saatavilla" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "Kenttäryhmän otsikko on pakollinen" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "kopioi" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3964 +msgid "or" +msgstr "tai" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "Yläkentät" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "Serkkukentät" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "Siirrä muokattua kenttää" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Tätä kenttää ei voi siirtää ennen kuin muutokset on talletettu" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "Tyhjä" + +#: includes/admin/admin-field-group.php:281 includes/input.php:258 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "Tekemäsi muutokset menetetään, jos siirryt pois tältä sivulta" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Merkkijonoa \"field_\" ei saa käyttää kenttänimen alussa" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Kenttäavaimet" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Käytössä" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "Siirto valmis." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Kenttä %s löytyy nyt %s-kenttäryhmästä" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "Sulje ikkuna" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "Valitse kohde kenttälle" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "Siirrä kenttä" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Käytössä (%s)" +msgstr[1] "Käytössä (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Kenttäryhmä monistettu. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s kenttäryhmä monistettu." +msgstr[1] "%s kenttäryhmät monistettu." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Kenttäryhmä synkronoitu. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s kenttäryhmä synkronoitu." +msgstr[1] "%s kenttäryhmät synkronoitu." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Synkronointi saatavissa" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:355 +msgid "Title" +msgstr "Otsikko" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:382 +msgid "Description" +msgstr "Kuvaus" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Status" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"Muokkaa WordPressiä tehokkailla, ammattimaisilla ja intuitiivisilla kentillä." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Muutosloki" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Katso mitä uutta versiossa %s ." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Resurssit" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Kotisivu" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Dokumentaatio" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Tuki" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Kiitos, että luot sisältöä ACF:llä." + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "Monista tämä kohde" + +#: includes/admin/admin-field-groups.php:668 +#: includes/admin/admin-field-groups.php:684 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate" +msgstr "Monista" + +#: includes/admin/admin-field-groups.php:701 +#: includes/fields/class-acf-field-google-map.php:112 +#: includes/fields/class-acf-field-relationship.php:656 +msgid "Search" +msgstr "Etsi" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "Valitse %s" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "Synkronoi kenttäryhmä" + +#: includes/admin/admin-field-groups.php:768 +#: includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "Synkronointi" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "Käytä" + +#: includes/admin/admin-field-groups.php:798 +msgid "Bulk Actions" +msgstr "Massatoiminnot" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Lisäkentät" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Päivitä tietokanta" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Katso sivuja & päivitä" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "Virhe pyynnön käsittelyssä" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "Päivityksiä ei ole saatavilla." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Lisäosat" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Virhe. Lisäosa luetteloa ei voitu ladata" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Info" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Katso mitä uutta" + +#: includes/admin/settings-tools.php:50 +#: includes/admin/views/settings-tools-export.php:19 +#: includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "Työkalut" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "Ei kenttäryhmää valittu" + +#: includes/admin/settings-tools.php:184 +#: includes/fields/class-acf-field-file.php:155 +msgid "No file selected" +msgstr "Ei tiedostoa valittu" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "Virhe ladattaessa tiedostoa. Ole hyvä ja yritä uudelleen." + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "Virheellinen tiedostomuoto" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "Tuotu tiedosto on tyhjä" + +#: includes/admin/settings-tools.php:331 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Tuotu 1 kenttäryhmä" +msgstr[1] "Tuotu %s kenttäryhmää" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "Ehdollinen logiikka" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Näytä tämä kenttä, jos" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:247 +msgid "is equal to" +msgstr "on sama kuin" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "ei ole sama kuin" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "ja" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Lisää sääntöryhmä" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:403 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Drag to reorder" +msgstr "Muuta järjestystä vetämällä ja pudottamalla" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Muokkaa kenttää" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-file.php:137 +#: includes/fields/class-acf-field-image.php:122 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:342 +msgid "Edit" +msgstr "Muokkaa" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Monista kenttä" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "Siirrä kenttä toiseen ryhmään" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "Siirrä" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "Poista kenttä" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete" +msgstr "Poista" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "Kentän nimiö" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "Tätä nimeä käytetään Muokkaa-sivulla" + +#: includes/admin/views/field-group-field.php:77 +msgid "Field Name" +msgstr "Kentän nimi" + +#: includes/admin/views/field-group-field.php:78 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Yksi sana, ei välilyöntejä. Alaviivat ja viivamerkit ovat sallittuja." + +#: includes/admin/views/field-group-field.php:87 +msgid "Field Type" +msgstr "Kenttätyyppi" + +#: includes/admin/views/field-group-field.php:98 +#: includes/fields/class-acf-field-tab.php:88 +msgid "Instructions" +msgstr "Ohjeet" + +#: includes/admin/views/field-group-field.php:99 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Ohjeet kirjoittajille. Näytetään muokkausnäkymässä" + +#: includes/admin/views/field-group-field.php:108 +msgid "Required?" +msgstr "Pakollinen?" + +#: includes/admin/views/field-group-field.php:131 +msgid "Wrapper Attributes" +msgstr "Kääreen attribuutit" + +#: includes/admin/views/field-group-field.php:137 +msgid "width" +msgstr "leveys" + +#: includes/admin/views/field-group-field.php:152 +msgid "class" +msgstr "luokka" + +#: includes/admin/views/field-group-field.php:165 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:177 +msgid "Close Field" +msgstr "Sulje kenttä" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Järjestys" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:415 +#: includes/fields/class-acf-field-radio.php:306 +#: includes/fields/class-acf-field-select.php:432 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Nimiö" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:964 +#: pro/fields/class-acf-field-flexible-content.php:595 +msgid "Name" +msgstr "Nimi" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Avain" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Tyyppi" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Ei kenttiä. Klikkaa + Lisää kenttä painiketta luodaksesi " +"ensimmäisen kenttäsi." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Lisää kenttä" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Säännöt" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Tästä voit määrittää, missä muokkausnäkymässä tämä kenttäryhmä näytetään" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Tyyli" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standardi (WP metalaatikko)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Saumaton (ei metalaatikkoa)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Sijainti" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Korkea (otsikon jälkeen)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normaali (sisällön jälkeen)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Reuna" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Nimiön sijainti" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:102 +msgid "Top aligned" +msgstr "Tasaa ylös" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:103 +msgid "Left aligned" +msgstr "Tasaa vasemmalle" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Ohjeen sijainti" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Tasaa nimiön alapuolelle" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Tasaa kentän alapuolelle" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Järjestysnumero" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "" +"Kenttäryhmät, joilla on pienempi järjestysnumero, tulostetaan ensimmäisenä." + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Näytetään kenttäryhmien listauksessa" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Piilota näytöltä" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "Valitse kohteita piilottaaksesi ne muokkausnäkymästä." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Jos muokkausnäkymässä on useita kenttäryhmiä, ensimmäisen (pienin " +"järjestysnumero) kenttäryhmän piilotusasetuksia käytetään" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Kestolinkki" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Sisältöeditori" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Katkelma" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "Keskustelu" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Kommentit" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Tarkastettu" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Polkutunnus (slug)" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Kirjoittaja" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Muoto" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Sivun attribuutit" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:670 +msgid "Featured Image" +msgstr "Artikkelikuva" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Kategoriat" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Avainsanat" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Lähetä paluuviitteet" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Näytä tämä kenttäryhmä, jos" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Päivitä sivustot" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Advanced Custom Fields tietokantapäivitys" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Seuraavat sivut vaativat tietokantapäivityksen. Valitse ne, jotka haluat " +"päivittää ja klikkaa %s" + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Sivu" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Sivusto edellyttää tietokannan päivityksen (%s -> %s)" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Sivusto on ajan tasalla" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Tietokanta on päivitetty. Palaa verkon hallinnan " +"ohjausnäkymään" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Tietokannan varmuuskopio on erittäin suositeltavaa ennen kuin jatkat. Oletko " +"varma, että halua jatkaa päivitystä nyt?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Päivitys valmis" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Päivitetään data versioon %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Toista rivejä" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Joustava sisältö" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galleria" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Asetukset-sivu" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Tietokanta on päivitettävä" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Kiitos, että päivitit %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Ennen kuin alat käyttämään uusia mahtavia ominaisuuksia, ole hyvä ja päivitä " +"tietokantasi uuteen versioon." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"Varmista myös, että kaikki premium lisäosat (%s) on ensin päivitetty " +"uusimpaan versioon." + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Luetaan päivitys tehtäviä..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "Tietokannan päivitys on valmis. Katso mitä on uutta" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Lataa ja asenna" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Asennettu" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Tervetuloa Advanced Custom Fields -lisäosaan!" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Kiitos, että päivitit! ACF %s on suurempi ja parempi kuin koskaan ennen. " +"Toivomme, että pidät siitä." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "Sujuvampi kenttien muokkaus kokemus" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Käytettävyyttä parannettu" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Mukaan otettu Select2-kirjasto on parantanut sekä käytettävyyttä että " +"nopeutta erilaisissa kenttätyypeissä kuten artikkelioliossa, sivun linkissä, " +"taksonomiassa ja valinnassa." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Parantunut muotoilu" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Monet kentät ovat käyneet läpi visuaalisen uudistuksen ja ACF näyttää " +"paremmalta kuin koskaan ennen! Huomattavat muutokset ovat nähtävissä " +"Galleria, Suodata artikkeleita ja oEmbed (uusi) kentissä!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Parannetut data" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Data arkkitehtuurin uudelleen suunnittelu mahdollisti alakenttien " +"riippumattomuuden vanhemmistaan. Tämän muutoksen myötä voit vetää ja " +"tiputtaa kenttiä riippumatta kenttähierarkiasta" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Hyvästi lisäosat. Tervetuloa PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "Esittelyssä ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Muutamme erinomaisesti tapaa, jolla korkealuokkaiset toiminnallisuudet " +"toimitetaan!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Kaikki 4 premium lisäosaa on yhdistetty uuteen ACF:n PRO " +"versioon. Lisensseistä saatavilla on sekä henkilökohtaisia että " +"kehittäjien lisenssejä, joten korkealuokkaiset toiminnallisuudet ovat nyt " +"edullisimpia ja saavutettavampia kuin koskaan ennen!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Tehokkaat ominaisuudet" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO sisältää tehokkaita ominaisuuksia, kuten toistuva data, joustavat " +"sisältö layoutit, kaunis galleriakenttä sekä mahdollisuus luoda ylimääräisiä " +"ylläpitäjän asetussivuja!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Lue lisää ACF PRO:n ominaisuuksista." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Helppo päivitys" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"Tehdäksesi päivityksen helpoksi, Kirjaudu kauppaan ja " +"lataa ilmainen kopio ACF PRO:sta!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Kirjoitimme myös päivitysoppaan vastataksemme " +"kysymyksiin. Jos jokin asia vielä vaivaa mieltäsi, ota yhteyttä " +"asiakaspalveluumme neuvontapalvelun kautta." + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Konepellin alla" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Älykkäämmät kenttäasetukset" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF tallentaa nyt kenttäasetukset yksittäisenä artikkelioliona" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Enemmän AJAXia" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" +"Useammat kentät käyttävät AJAX käyttöistä hakua ja näin sivujen lataus " +"nopeutuu" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "Paikallinen JSON" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "Uusi automaattinen JSON-vienti parantaa nopeutta" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Parempi versionhallinta" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "Uusi automaattinen JSON-vienti sallii kenttäasetuksia versionhallinnan" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "XML vaihdettu JSON:iin" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Tuonti / Vienti käyttää nyt JSONia" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Uudet lomakkeet" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Kentät voidaan nyt linkittää kommentteihin, vimpaimiin ja kaikkiin käyttäjä " +"lomakkeisiin!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Lisättiin uusi kenttä sisällön upottamiseen" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Uusi galleria" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Galleriakenttä on käynyt läpi suuresti tarvitun kasvojenkohotuksen" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Uudet asetukset" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Kenttäryhmien asetuksiin lisättiin määritykset nimiön ja ohjeiden sijainnille" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Paremmat Front Endin lomakkeet" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() voi nyt luoda uuden artikkelin pyydettäessä" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Parempi validointi" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "" +"Lomakkeen validointi tehdään nyt PHP + AJAX sen sijaan, että käytettäisiin " +"pelkästään JS:ää" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Suodata artikkeleita -kenttä" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Uudet Suodata artikkeleita -kentän asetukset 'Suodattamille' (Etsi, " +"Artikkelityyppi, Taksonomia)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Kenttien siirtäminen" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"Uusi kenttäryhmien toiminnallisuus sallii sinun siirtää kenttiä ryhmien & " +"vanhempien välillä" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Sivun URL" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Uusi arkistoryhmä page_link -kentän valintana" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Paremmat asetukset sivut" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Uusi toiminnallisuus asetukset-sivulle, joka sallii sekä vanhempi että lapsi " +"menu-sivujen luomisen" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Uskomme, että tulet rakastamaan muutoksia %s:ssa" + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "Vie kenttäryhmä PHP:llä" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Tällä koodilla voit rekisteröidä valitut kenttäryhmät paikallisesti. " +"Paikallinen kenttäryhmä tarjoaa monia etuja, kuten nopeammat latausajat, " +"versionhallinnan & dynaamiset kentät/asetukset. Kopioi ja liitä koodi " +"teemasi functions.php tiedostoon tai sisällytä se ulkoisen tiedoston avulla." + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Valitse kenttäryhmät" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "Vie kenttäryhmiä" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Valitse kenttäryhmät, jotka haluat viedä ja valitse sitten vientimetodisi. " +"Käytä Lataa-painiketta viedäksesi .json-tiedoston, jonka voit sitten tuoda " +"toisessa ACF asennuksessa. Käytä Generoi-painiketta luodaksesi PHP koodia, " +"jonka voit sijoittaa teemaasi." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "Lataa vientitiedosto" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Generoi vientikoodi" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "Tuo kenttäryhmiä" + +#: includes/admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Valitse JSON-tiedosto, jonka haluat tuoda. Kenttäryhmät tuodaan, kun " +"klikkaat Tuo-painiketta." + +#: includes/admin/views/settings-tools.php:77 +#: includes/fields/class-acf-field-file.php:35 +msgid "Select File" +msgstr "Valitse tiedosto" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Tuo" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "Pienoiskuva" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "Keskikokoinen" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "Iso" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "Täysikokoinen" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1831 +#: pro/fields/class-acf-field-clone.php:992 +msgid "(no title)" +msgstr "(ei otsikkoa)" + +#: includes/api/api-helpers.php:1868 +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:986 +msgid "Parent" +msgstr "Vanhempi" + +#: includes/api/api-helpers.php:3885 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Kuvan leveys täytyy olla vähintään %dpx." + +#: includes/api/api-helpers.php:3890 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Kuvan leveys ei saa ylittää %dpx." + +#: includes/api/api-helpers.php:3906 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Kuvan korkeus täytyy olla vähintään %dpx." + +#: includes/api/api-helpers.php:3911 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Kuvan korkeus ei saa ylittää %dpx." + +#: includes/api/api-helpers.php:3929 +#, php-format +msgid "File size must be at least %s." +msgstr "Tiedoston koko täytyy olla vähintään %s." + +#: includes/api/api-helpers.php:3934 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Tiedoston koko ei saa ylittää %s:" + +#: includes/api/api-helpers.php:3968 +#, php-format +msgid "File type must be %s." +msgstr "Tiedoston koko täytyy olla %s." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Perus" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Sisältö" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Valinta-kentät" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Relationaalinen" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 +#: includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:384 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:285 +#: pro/fields/class-acf-field-clone.php:839 +#: pro/fields/class-acf-field-flexible-content.php:552 +#: pro/fields/class-acf-field-flexible-content.php:601 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Layout" +msgstr "Asettelu" + +#: includes/fields.php:326 +msgid "Field type does not exist" +msgstr "Kenttätyyppi ei ole olemassa" + +#: includes/fields.php:326 +msgid "Unknown" +msgstr "Tuntematon" + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Painikeryhmä" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:368 +msgid "Choices" +msgstr "Valinnat" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each choice on a new line." +msgstr "Syötä jokainen valinta uudelle riville." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "For more control, you may specify both a value and label like this:" +msgstr "Halutessasi voit määrittää sekä arvon että nimiön tähän tapaan:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "red : Red" +msgstr "koira_istuu : Koira istuu" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:386 +#: includes/fields/class-acf-field-taxonomy.php:793 +#: includes/fields/class-acf-field-user.php:408 +msgid "Allow Null?" +msgstr "Salli tyhjä?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:375 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:114 +#: includes/fields/class-acf-field-number.php:123 +#: includes/fields/class-acf-field-radio.php:276 +#: includes/fields/class-acf-field-range.php:142 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-text.php:115 +#: includes/fields/class-acf-field-textarea.php:98 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:96 +#: includes/fields/class-acf-field-wysiwyg.php:410 +msgid "Default Value" +msgstr "Oletusarvo" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:115 +#: includes/fields/class-acf-field-number.php:124 +#: includes/fields/class-acf-field-radio.php:277 +#: includes/fields/class-acf-field-range.php:143 +#: includes/fields/class-acf-field-text.php:116 +#: includes/fields/class-acf-field-textarea.php:99 +#: includes/fields/class-acf-field-url.php:97 +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Appears when creating a new post" +msgstr "Kentän oletusarvo" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:391 +#: includes/fields/class-acf-field-radio.php:292 +msgid "Horizontal" +msgstr "Vaakasuuntainen" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:390 +#: includes/fields/class-acf-field-radio.php:291 +msgid "Vertical" +msgstr "Pystysuuntainen" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:408 +#: includes/fields/class-acf-field-file.php:200 +#: includes/fields/class-acf-field-image.php:188 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:299 +#: includes/fields/class-acf-field-taxonomy.php:833 +msgid "Return Value" +msgstr "Palauta arvo" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:409 +#: includes/fields/class-acf-field-file.php:201 +#: includes/fields/class-acf-field-image.php:189 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:300 +msgid "Specify the returned value on front end" +msgstr "Määritä palautettu arvo front endiin" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-radio.php:305 +#: includes/fields/class-acf-field-select.php:431 +msgid "Value" +msgstr "Arvo" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:416 +#: includes/fields/class-acf-field-radio.php:307 +#: includes/fields/class-acf-field-select.php:433 +msgid "Both (Array)" +msgstr "Molemmat (palautusmuoto on tällöin taulukko)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Checkbox" +msgstr "Valintaruutu" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Valitse kaikki" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Lisää uusi valinta" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Salli mukautettu" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Salli käyttäjän syöttää omia arvojaan" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Tallenna mukautettu" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "" +"Tallenna 'Muu’-kentän arvo kentän valinta vaihtoehdoksi tulevaisuudessa" + +#: includes/fields/class-acf-field-checkbox.php:376 +#: includes/fields/class-acf-field-select.php:378 +msgid "Enter each default value on a new line" +msgstr "Syötä jokainen oletusarvo uudelle riville." + +#: includes/fields/class-acf-field-checkbox.php:398 +msgid "Toggle" +msgstr "Valitse kaikki?" + +#: includes/fields/class-acf-field-checkbox.php:399 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Näytetäänkö â€Valitse kaikki†valintaruutu" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Värinvalitsin" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Tyhjennä" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Oletus" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Valitse väri" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Nykyinen väri" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Päivämäärävalitsin" + +#: includes/fields/class-acf-field-date_picker.php:33 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Sulje" + +#: includes/fields/class-acf-field-date_picker.php:34 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Tänään" + +#: includes/fields/class-acf-field-date_picker.php:35 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Seuraava" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Edellinen" + +#: includes/fields/class-acf-field-date_picker.php:37 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Vk" + +#: includes/fields/class-acf-field-date_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:181 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Muokkausnäkymän muoto" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:182 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Missä muodossa haluat päivämäärän näkyvän muokkausnäkymässä?" + +#: includes/fields/class-acf-field-date_picker.php:216 +#: includes/fields/class-acf-field-date_picker.php:247 +#: includes/fields/class-acf-field-date_time_picker.php:191 +#: includes/fields/class-acf-field-date_time_picker.php:208 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Mukautettu:" + +#: includes/fields/class-acf-field-date_picker.php:226 +msgid "Save Format" +msgstr "Tallennusmuoto" + +#: includes/fields/class-acf-field-date_picker.php:227 +msgid "The format used when saving a value" +msgstr "Arvo tallennetaan tähän muotoon" + +#: includes/fields/class-acf-field-date_picker.php:237 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:697 +#: includes/fields/class-acf-field-select.php:426 +#: includes/fields/class-acf-field-time_picker.php:124 +msgid "Return Format" +msgstr "Palautusmuoto" + +#: includes/fields/class-acf-field-date_picker.php:238 +#: includes/fields/class-acf-field-date_time_picker.php:199 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "" +"Missä muodossa haluat päivämäärän näkyvän, kun sivupohjan funktiot " +"palauttavat sen?" + +#: includes/fields/class-acf-field-date_picker.php:256 +#: includes/fields/class-acf-field-date_time_picker.php:215 +msgid "Week Starts On" +msgstr "Viikon ensimmäinen päivä" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Päivämäärä- ja kellonaikavalitsin" + +#: includes/fields/class-acf-field-date_time_picker.php:33 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Valitse aika" + +#: includes/fields/class-acf-field-date_time_picker.php:34 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Aika" + +#: includes/fields/class-acf-field-date_time_picker.php:35 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Tunti" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "minuuttia" + +#: includes/fields/class-acf-field-date_time_picker.php:37 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Sekunti" + +#: includes/fields/class-acf-field-date_time_picker.php:38 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "millisekunti" + +#: includes/fields/class-acf-field-date_time_picker.php:39 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "mikrosekunti" + +#: includes/fields/class-acf-field-date_time_picker.php:40 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Aikavyöhyke" + +#: includes/fields/class-acf-field-date_time_picker.php:41 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Nyt" + +#: includes/fields/class-acf-field-date_time_picker.php:42 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Sulje" + +#: includes/fields/class-acf-field-date_time_picker.php:43 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Valitse" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "Sähköposti" + +#: includes/fields/class-acf-field-email.php:123 +#: includes/fields/class-acf-field-number.php:132 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:124 +#: includes/fields/class-acf-field-textarea.php:107 +#: includes/fields/class-acf-field-url.php:105 +msgid "Placeholder Text" +msgstr "Täyteteksti" + +#: includes/fields/class-acf-field-email.php:124 +#: includes/fields/class-acf-field-number.php:133 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:125 +#: includes/fields/class-acf-field-textarea.php:108 +#: includes/fields/class-acf-field-url.php:106 +msgid "Appears within the input" +msgstr "Näkyy input-kentän sisällä" + +#: includes/fields/class-acf-field-email.php:132 +#: includes/fields/class-acf-field-number.php:141 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:181 +#: includes/fields/class-acf-field-text.php:133 +msgid "Prepend" +msgstr "Etuliite" + +#: includes/fields/class-acf-field-email.php:133 +#: includes/fields/class-acf-field-number.php:142 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:182 +#: includes/fields/class-acf-field-text.php:134 +msgid "Appears before the input" +msgstr "Näkyy ennen input-kenttää" + +#: includes/fields/class-acf-field-email.php:141 +#: includes/fields/class-acf-field-number.php:150 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:190 +#: includes/fields/class-acf-field-text.php:142 +msgid "Append" +msgstr "Loppuliite" + +#: includes/fields/class-acf-field-email.php:142 +#: includes/fields/class-acf-field-number.php:151 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:191 +#: includes/fields/class-acf-field-text.php:143 +msgid "Appears after the input" +msgstr "Näkyy input-kentän jälkeen" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Tiedosto" + +#: includes/fields/class-acf-field-file.php:36 +msgid "Edit File" +msgstr "Muokkaa tiedostoa" + +#: includes/fields/class-acf-field-file.php:37 +msgid "Update File" +msgstr "Päivitä tiedosto" + +#: includes/fields/class-acf-field-file.php:38 +#: includes/fields/class-acf-field-image.php:43 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:44 +msgid "Uploaded to this post" +msgstr "Tähän kenttäryhmään ladatut kuvat" + +#: includes/fields/class-acf-field-file.php:126 +msgid "File name" +msgstr "Tiedoston nimi" + +#: includes/fields/class-acf-field-file.php:130 +#: includes/fields/class-acf-field-file.php:233 +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: pro/fields/class-acf-field-gallery.php:690 +#: pro/fields/class-acf-field-gallery.php:719 +msgid "File size" +msgstr "Tiedoston koko" + +#: includes/fields/class-acf-field-file.php:139 +#: includes/fields/class-acf-field-image.php:124 +#: includes/fields/class-acf-field-link.php:140 includes/input.php:269 +#: pro/fields/class-acf-field-gallery.php:343 +#: pro/fields/class-acf-field-gallery.php:531 +msgid "Remove" +msgstr "Poista" + +#: includes/fields/class-acf-field-file.php:155 +msgid "Add File" +msgstr "Lisää tiedosto" + +#: includes/fields/class-acf-field-file.php:206 +msgid "File Array" +msgstr "Tiedosto" + +#: includes/fields/class-acf-field-file.php:207 +msgid "File URL" +msgstr "Tiedoston URL" + +#: includes/fields/class-acf-field-file.php:208 +msgid "File ID" +msgstr "Tiedoston ID" + +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:213 +#: pro/fields/class-acf-field-gallery.php:655 +msgid "Library" +msgstr "Kirjasto" + +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:214 +#: pro/fields/class-acf-field-gallery.php:656 +msgid "Limit the media library choice" +msgstr "Rajoita valintaa mediakirjastosta" + +#: includes/fields/class-acf-field-file.php:221 +#: includes/fields/class-acf-field-image.php:219 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:661 +msgid "All" +msgstr "Kaikki" + +#: includes/fields/class-acf-field-file.php:222 +#: includes/fields/class-acf-field-image.php:220 +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Uploaded to post" +msgstr "Vain tähän artikkeliin ladatut" + +#: includes/fields/class-acf-field-file.php:229 +#: includes/fields/class-acf-field-image.php:227 +#: pro/fields/class-acf-field-gallery.php:669 +msgid "Minimum" +msgstr "Minimiarvo(t)" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-file.php:241 +msgid "Restrict which files can be uploaded" +msgstr "Määritä tiedoston koko" + +#: includes/fields/class-acf-field-file.php:240 +#: includes/fields/class-acf-field-image.php:256 +#: pro/fields/class-acf-field-gallery.php:698 +msgid "Maximum" +msgstr "Maksimiarvo(t)" + +#: includes/fields/class-acf-field-file.php:251 +#: includes/fields/class-acf-field-image.php:285 +#: pro/fields/class-acf-field-gallery.php:727 +msgid "Allowed file types" +msgstr "Sallitut tiedostotyypit" + +#: includes/fields/class-acf-field-file.php:252 +#: includes/fields/class-acf-field-image.php:286 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "Erota pilkulla. Jätä tyhjäksi, jos haluat sallia kaikki tiedostyypit" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google Kartta" + +#: includes/fields/class-acf-field-google-map.php:40 +msgid "Locating" +msgstr "Paikannus" + +#: includes/fields/class-acf-field-google-map.php:41 +msgid "Sorry, this browser does not support geolocation" +msgstr "Pahoittelut, mutta tämä selain ei tuo paikannusta" + +#: includes/fields/class-acf-field-google-map.php:113 +msgid "Clear location" +msgstr "Tyhjennä paikkatieto" + +#: includes/fields/class-acf-field-google-map.php:114 +msgid "Find current location" +msgstr "Etsi nykyinen sijainti" + +#: includes/fields/class-acf-field-google-map.php:117 +msgid "Search for address..." +msgstr "Etsi osoite..." + +#: includes/fields/class-acf-field-google-map.php:147 +#: includes/fields/class-acf-field-google-map.php:158 +msgid "Center" +msgstr "Sijainti" + +#: includes/fields/class-acf-field-google-map.php:148 +#: includes/fields/class-acf-field-google-map.php:159 +msgid "Center the initial map" +msgstr "Kartan oletussijainti" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Zoom" +msgstr "Zoomaus" + +#: includes/fields/class-acf-field-google-map.php:171 +msgid "Set the initial zoom level" +msgstr "Aseta oletuszoomaus" + +#: includes/fields/class-acf-field-google-map.php:180 +#: includes/fields/class-acf-field-image.php:239 +#: includes/fields/class-acf-field-image.php:268 +#: includes/fields/class-acf-field-oembed.php:281 +#: pro/fields/class-acf-field-gallery.php:681 +#: pro/fields/class-acf-field-gallery.php:710 +msgid "Height" +msgstr "Korkeus" + +#: includes/fields/class-acf-field-google-map.php:181 +msgid "Customise the map height" +msgstr "Muotoile kartan korkeus" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Ryhmä" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:389 +msgid "Sub Fields" +msgstr "Alakentät" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:840 +msgid "Specify the style used to render the selected fields" +msgstr "Määritä tyyli, jota käytetään valittujen kenttien luomisessa" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:845 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:458 +msgid "Block" +msgstr "Lohko" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:846 +#: pro/fields/class-acf-field-flexible-content.php:611 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Table" +msgstr "Taulukko" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:847 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Row" +msgstr "Rivi" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Kuva" + +#: includes/fields/class-acf-field-image.php:40 +msgid "Select Image" +msgstr "Valitse kuva" + +#: includes/fields/class-acf-field-image.php:41 +#: pro/fields/class-acf-field-gallery.php:42 +msgid "Edit Image" +msgstr "Muokkaa kuvaa" + +#: includes/fields/class-acf-field-image.php:42 +#: pro/fields/class-acf-field-gallery.php:43 +msgid "Update Image" +msgstr "Päivitä kuva" + +#: includes/fields/class-acf-field-image.php:44 +msgid "All images" +msgstr "Kaikki kuvat" + +#: includes/fields/class-acf-field-image.php:140 +msgid "No image selected" +msgstr "Ei kuvia valittu" + +#: includes/fields/class-acf-field-image.php:140 +msgid "Add Image" +msgstr "Lisää kuva" + +#: includes/fields/class-acf-field-image.php:194 +msgid "Image Array" +msgstr "Kuva" + +#: includes/fields/class-acf-field-image.php:195 +msgid "Image URL" +msgstr "Kuvan URL" + +#: includes/fields/class-acf-field-image.php:196 +msgid "Image ID" +msgstr "Kuvan ID" + +#: includes/fields/class-acf-field-image.php:203 +msgid "Preview Size" +msgstr "Esikatselukuvan koko" + +#: includes/fields/class-acf-field-image.php:204 +msgid "Shown when entering data" +msgstr "Näytetään muokkausnäkymässä" + +#: includes/fields/class-acf-field-image.php:228 +#: includes/fields/class-acf-field-image.php:257 +#: pro/fields/class-acf-field-gallery.php:670 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Restrict which images can be uploaded" +msgstr "Määritä millaisia kuvia voidaan ladata" + +#: includes/fields/class-acf-field-image.php:231 +#: includes/fields/class-acf-field-image.php:260 +#: includes/fields/class-acf-field-oembed.php:270 +#: pro/fields/class-acf-field-gallery.php:673 +#: pro/fields/class-acf-field-gallery.php:702 +msgid "Width" +msgstr "Leveys" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Linkki" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Valitse linkki" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Avaa uuteen ikkunaan/välilehteen" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Linkkitaulukko (array)" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "Linkin URL-osoite" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Viesti" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:135 +msgid "New Lines" +msgstr "Uudet rivit" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:136 +msgid "Controls how new lines are rendered" +msgstr "Määrittää kuinka uudet rivit muotoillaan" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Automatically add paragraphs" +msgstr "Lisää automaattisesti kappale" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:141 +msgid "Automatically add <br>" +msgstr "Lisää automaattisesti <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:142 +msgid "No Formatting" +msgstr "Ei muotoilua" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Escape HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Haluatko, että HTML-merkinnät näkyvät tekstinä?" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Numero" + +#: includes/fields/class-acf-field-number.php:159 +#: includes/fields/class-acf-field-range.php:151 +msgid "Minimum Value" +msgstr "Minimiarvo" + +#: includes/fields/class-acf-field-number.php:168 +#: includes/fields/class-acf-field-range.php:161 +msgid "Maximum Value" +msgstr "Maksimiarvo" + +#: includes/fields/class-acf-field-number.php:177 +#: includes/fields/class-acf-field-range.php:171 +msgid "Step Size" +msgstr "Askelluksen koko" + +#: includes/fields/class-acf-field-number.php:215 +msgid "Value must be a number" +msgstr "Arvon täytyy olla numero" + +#: includes/fields/class-acf-field-number.php:233 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Arvon täytyy olla sama tai suurempi kuin %d" + +#: includes/fields/class-acf-field-number.php:241 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Arvon täytyy olla sama tai pienempi kuin %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:219 +msgid "Enter URL" +msgstr "Syötä URL" + +#: includes/fields/class-acf-field-oembed.php:234 +#: includes/fields/class-acf-field-taxonomy.php:898 +msgid "Error." +msgstr "Virhe." + +#: includes/fields/class-acf-field-oembed.php:234 +msgid "No embed found for the given URL." +msgstr "Upotettavaa ei löytynyt annetusta URL-osoitteesta." + +#: includes/fields/class-acf-field-oembed.php:267 +#: includes/fields/class-acf-field-oembed.php:278 +msgid "Embed Size" +msgstr "Upotuksen koko" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Arkistot" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Filter by Post Type" +msgstr "Suodata tyypin mukaan" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:631 +msgid "All post types" +msgstr "Kaikki artikkelityypit" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:637 +msgid "Filter by Taxonomy" +msgstr "Suodata taksonomian mukaan" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:645 +msgid "All taxonomies" +msgstr "Kaikki taksonomiat" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Salli arkistojen URL-osoitteita" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:396 +#: includes/fields/class-acf-field-user.php:418 +msgid "Select multiple values?" +msgstr "Valitse useita arvoja?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Salasana" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:702 +msgid "Post Object" +msgstr "Artikkeliolio" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:703 +msgid "Post ID" +msgstr "Artikkelin ID" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Valintanappi" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Muu" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Lisää 'Muu' vaihtoehto salliaksesi mukautettuja arvoja" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Tallenna Muu" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Tallenna 'Muu’-kentän arvo kentän valinnaksi" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Liukusäädin" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Suodata artikkeleita" + +#: includes/fields/class-acf-field-relationship.php:37 +msgid "Minimum values reached ( {min} values )" +msgstr "Pienin määrä arvoja saavutettu ({min} arvoa)" + +#: includes/fields/class-acf-field-relationship.php:38 +msgid "Maximum values reached ( {max} values )" +msgstr "Maksimiarvo saavutettu ( {max} artikkelia )" + +#: includes/fields/class-acf-field-relationship.php:39 +msgid "Loading" +msgstr "Ladataan" + +#: includes/fields/class-acf-field-relationship.php:40 +msgid "No matches found" +msgstr "Ei yhtään osumaa" + +#: includes/fields/class-acf-field-relationship.php:423 +msgid "Select post type" +msgstr "Valitse artikkelityyppi" + +#: includes/fields/class-acf-field-relationship.php:449 +msgid "Select taxonomy" +msgstr "Valitse taksonomia" + +#: includes/fields/class-acf-field-relationship.php:539 +msgid "Search..." +msgstr "Etsi..." + +#: includes/fields/class-acf-field-relationship.php:651 +msgid "Filters" +msgstr "Suodattimet" + +#: includes/fields/class-acf-field-relationship.php:657 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Artikkelityyppi" + +#: includes/fields/class-acf-field-relationship.php:658 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:763 +msgid "Taxonomy" +msgstr "Taksonomia" + +#: includes/fields/class-acf-field-relationship.php:665 +msgid "Elements" +msgstr "Elementit" + +#: includes/fields/class-acf-field-relationship.php:666 +msgid "Selected elements will be displayed in each result" +msgstr "Valitut elementit näytetään jokaisessa tuloksessa" + +#: includes/fields/class-acf-field-relationship.php:677 +msgid "Minimum posts" +msgstr "Vähimmäismäärä artikkeleita" + +#: includes/fields/class-acf-field-relationship.php:686 +msgid "Maximum posts" +msgstr "Maksimi artikkelit" + +#: includes/fields/class-acf-field-relationship.php:790 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s vaatii vähintään %s valinnan" +msgstr[1] "%s vaatii vähintään %s valintaa" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:785 +msgctxt "noun" +msgid "Select" +msgstr "Valintalista" + +#: includes/fields/class-acf-field-select.php:38 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Yksi tulos on saatavilla. Valitse se painamalla enter-näppäintä." + +#: includes/fields/class-acf-field-select.php:39 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"%d tulosta on saatavilla. Voit navigoida tuloksian välillä käyttämällä " +"â€ylös†ja â€alas†-näppäimiä." + +#: includes/fields/class-acf-field-select.php:40 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Osumia ei löytynyt" + +#: includes/fields/class-acf-field-select.php:41 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Kirjoita yksi tai useampi merkki" + +#: includes/fields/class-acf-field-select.php:42 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Kirjoita %d tai useampi merkkiä" + +#: includes/fields/class-acf-field-select.php:43 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Poista 1 merkki" + +#: includes/fields/class-acf-field-select.php:44 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Poista %d merkkiä" + +#: includes/fields/class-acf-field-select.php:45 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Voit valita vain yhden kohteen" + +#: includes/fields/class-acf-field-select.php:46 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Voit valita vain %d kohdetta" + +#: includes/fields/class-acf-field-select.php:47 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Lataa lisää tuloksia …" + +#: includes/fields/class-acf-field-select.php:48 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Etsii…" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Lataus epäonnistui" + +#: includes/fields/class-acf-field-select.php:255 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "Valitse" + +#: includes/fields/class-acf-field-select.php:406 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Tyylikäs käyttöliittymä" + +#: includes/fields/class-acf-field-select.php:416 +msgid "Use AJAX to lazy load choices?" +msgstr "Haluatko ladata valinnat laiskasti (käyttää AJAXia)?" + +#: includes/fields/class-acf-field-select.php:427 +msgid "Specify the value returned" +msgstr "Määritä palautetun arvon muoto" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Erotusmerkki" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Välilehti" + +#: includes/fields/class-acf-field-tab.php:82 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "" +"Välilehtikentän ulkoasu rikkoutuu, jos lisätään taulukko-tyyli toistin " +"kenttä tai joustava sisältö kenttä asettelu" + +#: includes/fields/class-acf-field-tab.php:83 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "" +"Ryhmittele kenttiä käyttämällä â€välilehtikenttiäâ€. Näin saat selkeämmän " +"muokkausnäkymän." + +#: includes/fields/class-acf-field-tab.php:84 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" +"Kaikki kentät, jotka seuraavat tätä \"välilehtikenttää\" (tai kunnes toinen " +"\"välilehtikenttä\" määritellään) ryhmitellään yhteen ja välilehden " +"otsikoksi tulee tämän kentän nimiö." + +#: includes/fields/class-acf-field-tab.php:98 +msgid "Placement" +msgstr "Sijainti" + +#: includes/fields/class-acf-field-tab.php:110 +msgid "End-point" +msgstr "Välilehtiryhmän aloitus" + +#: includes/fields/class-acf-field-tab.php:111 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "Valitse â€kylläâ€, jos haluat aloittaa uuden välilehtiryhmän." + +#: includes/fields/class-acf-field-taxonomy.php:713 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Ei %s" + +#: includes/fields/class-acf-field-taxonomy.php:732 +msgid "None" +msgstr "Ei mitään" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Select the taxonomy to be displayed" +msgstr "Valitse taksonomia, joka näytetään" + +#: includes/fields/class-acf-field-taxonomy.php:773 +msgid "Appearance" +msgstr "Ulkoasu" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Select the appearance of this field" +msgstr "Valitse ulkoasu tälle kenttälle" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Multiple Values" +msgstr "Mahdollisuus valita useita arvoja" + +#: includes/fields/class-acf-field-taxonomy.php:781 +msgid "Multi Select" +msgstr "Valitse useita" + +#: includes/fields/class-acf-field-taxonomy.php:783 +msgid "Single Value" +msgstr "Mahdollisuus valita vain yksi arvo" + +#: includes/fields/class-acf-field-taxonomy.php:784 +msgid "Radio Buttons" +msgstr "Valintanappi" + +#: includes/fields/class-acf-field-taxonomy.php:803 +msgid "Create Terms" +msgstr "Uusien ehtojen luominen" + +#: includes/fields/class-acf-field-taxonomy.php:804 +msgid "Allow new terms to be created whilst editing" +msgstr "Salli uusien ehtojen luominen samalla kun muokataan" + +#: includes/fields/class-acf-field-taxonomy.php:813 +msgid "Save Terms" +msgstr "Tallenna ehdot" + +#: includes/fields/class-acf-field-taxonomy.php:814 +msgid "Connect selected terms to the post" +msgstr "Yhdistä valitut ehdot artikkeliin" + +#: includes/fields/class-acf-field-taxonomy.php:823 +msgid "Load Terms" +msgstr "Lataa ehdot" + +#: includes/fields/class-acf-field-taxonomy.php:824 +msgid "Load value from posts terms" +msgstr "Lataa arvo artikkelin ehdoista" + +#: includes/fields/class-acf-field-taxonomy.php:838 +msgid "Term Object" +msgstr "Ehto" + +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Term ID" +msgstr "Ehdon ID" + +#: includes/fields/class-acf-field-taxonomy.php:898 +#, php-format +msgid "User unable to add new %s" +msgstr "Käyttäjä ei voi lisätä uutta %s" + +#: includes/fields/class-acf-field-taxonomy.php:911 +#, php-format +msgid "%s already exists" +msgstr "%s on jo olemassa" + +#: includes/fields/class-acf-field-taxonomy.php:952 +#, php-format +msgid "%s added" +msgstr "%s lisättiin" + +#: includes/fields/class-acf-field-taxonomy.php:997 +msgid "Add" +msgstr "Lisää" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Teksti" + +#: includes/fields/class-acf-field-text.php:151 +#: includes/fields/class-acf-field-textarea.php:116 +msgid "Character Limit" +msgstr "Merkkirajoitus" + +#: includes/fields/class-acf-field-text.php:152 +#: includes/fields/class-acf-field-textarea.php:117 +msgid "Leave blank for no limit" +msgstr "Jos et halua rajoittaa, jätä tyhjäksi" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Tekstialue" + +#: includes/fields/class-acf-field-textarea.php:125 +msgid "Rows" +msgstr "Rivit" + +#: includes/fields/class-acf-field-textarea.php:126 +msgid "Sets the textarea height" +msgstr "Aseta tekstialueen koko" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Kellonaikavalitsin" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "â€Tosi / Epätosi†-valinta" + +#: includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 includes/input.php:267 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Kyllä" + +#: includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:169 includes/input.php:268 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Ei" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Näytä teksti valintaruudun rinnalla" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Päällä -teksti" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Teksti, joka näytetään kun valinta on aktiivinen" + +#: includes/fields/class-acf-field-true_false.php:165 +msgid "Off Text" +msgstr "Pois päältä -teksti" + +#: includes/fields/class-acf-field-true_false.php:166 +msgid "Text shown when inactive" +msgstr "Teksti, joka näytetään kun valinta ei ole aktiivinen" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "Url" + +#: includes/fields/class-acf-field-url.php:147 +msgid "Value must be a valid URL" +msgstr "Arvon täytyy olla validi URL" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Käyttäjä" + +#: includes/fields/class-acf-field-user.php:393 +msgid "Filter by role" +msgstr "Suodata roolin mukaan" + +#: includes/fields/class-acf-field-user.php:401 +msgid "All user roles" +msgstr "Kaikki käyttäjäroolit" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Wysiwyg-editori" + +#: includes/fields/class-acf-field-wysiwyg.php:359 +msgid "Visual" +msgstr "Graafinen" + +#: includes/fields/class-acf-field-wysiwyg.php:360 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Teksti" + +#: includes/fields/class-acf-field-wysiwyg.php:366 +msgid "Click to initialize TinyMCE" +msgstr "Klikkaa ottaaksesi käyttöön graafisen editorin" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Tabs" +msgstr "Välilehdet" + +#: includes/fields/class-acf-field-wysiwyg.php:424 +msgid "Visual & Text" +msgstr "Graafinen ja teksti" + +#: includes/fields/class-acf-field-wysiwyg.php:425 +msgid "Visual Only" +msgstr "Vain graafinen" + +#: includes/fields/class-acf-field-wysiwyg.php:426 +msgid "Text Only" +msgstr "Vain teksti" + +#: includes/fields/class-acf-field-wysiwyg.php:433 +msgid "Toolbar" +msgstr "Työkalupalkki" + +#: includes/fields/class-acf-field-wysiwyg.php:443 +msgid "Show Media Upload Buttons?" +msgstr "Näytä Lisää media -painike?" + +#: includes/fields/class-acf-field-wysiwyg.php:453 +msgid "Delay initialization?" +msgstr "Viivytä alustusta?" + +#: includes/fields/class-acf-field-wysiwyg.php:454 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "Graafista editoria ei käytetä ennen kuin kenttää klikataan" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Muokkaa kenttäryhmää" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Validoi sähköposti" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:573 pro/options-page.php:81 +msgid "Update" +msgstr "Päivitä" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Artikkeli päivitetty" + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "Roskapostia havaittu" + +#: includes/input.php:259 +msgid "Expand Details" +msgstr "Enemmän tietoja" + +#: includes/input.php:260 +msgid "Collapse Details" +msgstr "Vähemmän tietoja" + +#: includes/input.php:261 +msgid "Validation successful" +msgstr "Kenttäryhmän validointi onnistui" + +#: includes/input.php:262 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Lisäkentän validointi epäonnistui" + +#: includes/input.php:263 +msgid "1 field requires attention" +msgstr "Yksi kenttä vaatii huomiota" + +#: includes/input.php:264 +#, php-format +msgid "%d fields require attention" +msgstr "%d kenttää vaativat huomiota" + +#: includes/input.php:265 +msgid "Restricted" +msgstr "Rajoitettu" + +#: includes/input.php:266 +msgid "Are you sure?" +msgstr "Oletko varma?" + +#: includes/input.php:270 +msgid "Cancel" +msgstr "Peruuta" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Artikkeli" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Sivu" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Lomakkeet" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Liite" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Kaikki %s muodot" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Kommentti" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Nykyinen käyttäjärooli" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super pääkäyttäjä" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Nykyinen käyttäjä" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Kirjautunut sisään" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Käyttää front endiä" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Käyttää back endiä" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Valikkokohde" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Valikko" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Valikkosijainnit" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Valikot" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Sivun vanhempi" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Sivupohja" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Oletus sivupohja" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Sivun tyyppi" + +#: includes/locations/class-acf-location-page-type.php:145 +msgid "Front Page" +msgstr "Etusivu" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Posts Page" +msgstr "Artikkelit -sivu" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Top Level Page (no parent)" +msgstr "Ylätason sivu (sivu, jolla ei ole vanhempia)" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Parent Page (has children)" +msgstr "Vanhempi sivu (sivu, jolla on alasivuja)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Child Page (has parent)" +msgstr "Lapsi sivu (sivu, jolla on vanhempi)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Artikkelin kategoria" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Artikkelin muoto" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Artikkelin tila" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Artikkelin taksonomia" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Sivupohja" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Taksonomian ehto" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Käyttäjälomake" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Lisää / Muokkaa" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Rekisteröi" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Käyttäjän rooli" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Vimpain" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "Muokkaa" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "Päivitä" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s arvo on pakollinen" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO -lisäosan" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Julkaistu" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Yhtään lisäkenttäryhmää ei löytynyt tälle asetussivulle. Luo " +"lisäkenttäryhmä" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Virhe. Ei voitu yhdistää päivityspalvelimeen" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Päivitykset" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Poista lisenssi käytöstä " + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Aktivoi lisenssi" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Näytä lisenssitiedot" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Ottaaksesi käyttöön päivitykset, syötä lisenssiavaimesi alle. Jos sinulla ei " +"ole lisenssiavainta, katso tarkemmat tiedot & " +"hinnoittelu" + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Lisenssiavain" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Päivitä tiedot" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Nykyinen versio" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Uusin versio" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Päivitys saatavilla?" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Päivitä lisäosa" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Syötä lisenssiavain saadaksesi päivityksiä" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Tarkista uudelleen" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Päivitys Ilmoitus" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Klooni" + +#: pro/fields/class-acf-field-clone.php:808 +msgid "Select one or more fields you wish to clone" +msgstr "Valitse kentä(t), jotka haluat kopioida" + +#: pro/fields/class-acf-field-clone.php:825 +msgid "Display" +msgstr "Näytä" + +#: pro/fields/class-acf-field-clone.php:826 +msgid "Specify the style used to render the clone field" +msgstr "Määritä tyyli, jota käytetään kloonikentän luomisessa" + +#: pro/fields/class-acf-field-clone.php:831 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Ryhmä (valitut kentät näytetään ryhmänä tämän klooni-kentän sisällä)" + +#: pro/fields/class-acf-field-clone.php:832 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Saumaton (korvaa tämä klooni-kenttä valituilla kentillä)" + +#: pro/fields/class-acf-field-clone.php:853 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Kenttän nimiö näytetään seuraavassa muodossa: %s" + +#: pro/fields/class-acf-field-clone.php:856 +msgid "Prefix Field Labels" +msgstr "Kentän nimiön etuliite" + +#: pro/fields/class-acf-field-clone.php:867 +#, php-format +msgid "Values will be saved as %s" +msgstr "Arvot tallennetaan muodossa: %s" + +#: pro/fields/class-acf-field-clone.php:870 +msgid "Prefix Field Names" +msgstr "Kentän nimen etuliite" + +#: pro/fields/class-acf-field-clone.php:988 +msgid "Unknown field" +msgstr "Tuntematon kenttä" + +#: pro/fields/class-acf-field-clone.php:1027 +msgid "Unknown field group" +msgstr "Tuntematon kenttäryhmä" + +#: pro/fields/class-acf-field-clone.php:1031 +#, php-format +msgid "All fields from %s field group" +msgstr "Kaikki kentät kenttäryhmästä %s" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:174 +#: pro/fields/class-acf-field-repeater.php:470 +msgid "Add Row" +msgstr "Lisää rivi" + +#: pro/fields/class-acf-field-flexible-content.php:34 +msgid "layout" +msgstr "asettelu" + +#: pro/fields/class-acf-field-flexible-content.php:35 +msgid "layouts" +msgstr "asettelua" + +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "remove {layout}?" +msgstr "poista {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:37 +msgid "This field requires at least {min} {identifier}" +msgstr "Tämä kenttä vaatii vähintään {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:38 +msgid "This field has a limit of {max} {identifier}" +msgstr "Tämän kentän yläraja on {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:39 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Tämä kenttä vaatii vähintään {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:40 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Maksimi {label} saavutettu ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:41 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} saatavilla (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:42 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} vaadittu (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:43 +msgid "Flexible Content requires at least 1 layout" +msgstr "Vaaditaan vähintään yksi asettelu" + +#: pro/fields/class-acf-field-flexible-content.php:273 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Klikkaa â€%s†-painiketta luodaksesi oman asettelun" + +#: pro/fields/class-acf-field-flexible-content.php:406 +msgid "Add layout" +msgstr "Lisää asettelu" + +#: pro/fields/class-acf-field-flexible-content.php:407 +msgid "Remove layout" +msgstr "Poista asettelu" + +#: pro/fields/class-acf-field-flexible-content.php:408 +#: pro/fields/class-acf-field-repeater.php:298 +msgid "Click to toggle" +msgstr "Piilota/Näytä" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder Layout" +msgstr "Järjestä asettelu uudelleen" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder" +msgstr "Järjestä uudelleen" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete Layout" +msgstr "Poista asettelu" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate Layout" +msgstr "Monista asettelu" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New Layout" +msgstr "Lisää uusi asettelu" + +#: pro/fields/class-acf-field-flexible-content.php:628 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:641 +msgid "Max" +msgstr "Maks" + +#: pro/fields/class-acf-field-flexible-content.php:668 +#: pro/fields/class-acf-field-repeater.php:466 +msgid "Button Label" +msgstr "Painikkeen teksti" + +#: pro/fields/class-acf-field-flexible-content.php:677 +msgid "Minimum Layouts" +msgstr "Asetteluita vähintään" + +#: pro/fields/class-acf-field-flexible-content.php:686 +msgid "Maximum Layouts" +msgstr "Asetteluita enintään" + +#: pro/fields/class-acf-field-gallery.php:41 +msgid "Add Image to Gallery" +msgstr "Lisää kuva galleriaan" + +#: pro/fields/class-acf-field-gallery.php:45 +msgid "Maximum selection reached" +msgstr "Et voi valita enempää kuvia" + +#: pro/fields/class-acf-field-gallery.php:321 +msgid "Length" +msgstr "Pituus" + +#: pro/fields/class-acf-field-gallery.php:364 +msgid "Caption" +msgstr "Kuvateksti" + +#: pro/fields/class-acf-field-gallery.php:373 +msgid "Alt Text" +msgstr "Vaihtoehtoinen teksti" + +#: pro/fields/class-acf-field-gallery.php:544 +msgid "Add to gallery" +msgstr "Lisää galleriaan" + +#: pro/fields/class-acf-field-gallery.php:548 +msgid "Bulk actions" +msgstr "Massatoiminnot" + +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Sort by date uploaded" +msgstr "Lajittele latauksen päivämäärän mukaan" + +#: pro/fields/class-acf-field-gallery.php:550 +msgid "Sort by date modified" +msgstr "Lajittele viimeisimmän muokkauksen päivämäärän mukaan" + +#: pro/fields/class-acf-field-gallery.php:551 +msgid "Sort by title" +msgstr "Lajittele otsikon mukaan" + +#: pro/fields/class-acf-field-gallery.php:552 +msgid "Reverse current order" +msgstr "Käännän nykyinen järjestys" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Close" +msgstr "Sulje" + +#: pro/fields/class-acf-field-gallery.php:624 +msgid "Minimum Selection" +msgstr "Pienin määrä kuvia" + +#: pro/fields/class-acf-field-gallery.php:633 +msgid "Maximum Selection" +msgstr "Suurin määrä kuvia" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Insert" +msgstr "Lisää" + +#: pro/fields/class-acf-field-gallery.php:643 +msgid "Specify where new attachments are added" +msgstr "Määritä mihin uudet liitteet lisätään" + +#: pro/fields/class-acf-field-gallery.php:647 +msgid "Append to the end" +msgstr "Lisää loppuun" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Prepend to the beginning" +msgstr "Lisää alkuun" + +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Minimum rows reached ({min} rows)" +msgstr "Pienin määrä rivejä saavutettu ({min} riviä)" + +#: pro/fields/class-acf-field-repeater.php:37 +msgid "Maximum rows reached ({max} rows)" +msgstr "Suurin määrä rivejä saavutettu ({max} riviä)" + +#: pro/fields/class-acf-field-repeater.php:343 +msgid "Add row" +msgstr "Lisää rivi" + +#: pro/fields/class-acf-field-repeater.php:344 +msgid "Remove row" +msgstr "Poista rivi" + +#: pro/fields/class-acf-field-repeater.php:419 +msgid "Collapsed" +msgstr "Piilotettu" + +#: pro/fields/class-acf-field-repeater.php:420 +msgid "Select a sub field to show when row is collapsed" +msgstr "Valitse alakenttä, joka näytetään, kun rivi on piilotettu" + +#: pro/fields/class-acf-field-repeater.php:430 +msgid "Minimum Rows" +msgstr "Pienin määrä rivejä" + +#: pro/fields/class-acf-field-repeater.php:440 +msgid "Maximum Rows" +msgstr "Suurin määrä rivejä" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Yhtään Asetukset-sivua ei ole olemassa" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Asetukset" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Asetukset päivitetty" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Ottaaksesi käyttöön päivitykset, ole hyvä ja syötä lisenssiavaimesi Päivitykset -sivulle. jos sinulla ei ole lisenssiavainta, katso " +"tarkemmat tiedot & hinnoittelu" + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "http://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Disabled" +#~ msgstr "Poistettu käytöstä" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Poistettu käytöstä (%s)" +#~ msgstr[1] "Poistettu käytöstä (%s)" + +#~ msgid "Getting Started" +#~ msgstr "Miten pääset alkuun" + +#~ msgid "Field Types" +#~ msgstr "Kenttätyypit" + +#~ msgid "Functions" +#~ msgstr "Funktiot" + +#~ msgid "Actions" +#~ msgstr "Toiminnot" + +#~ msgid "'How to' guides" +#~ msgstr "\"Miten\" oppaat" + +#~ msgid "Tutorials" +#~ msgstr "Oppaat" + +#~ msgid "FAQ" +#~ msgstr "UKK" + +#~ msgid "Created by" +#~ msgstr "Tekijä" + +#~ msgid "Error loading update" +#~ msgstr "Virhe ladattaessa päivitystä" + +#~ msgid "Error" +#~ msgstr "Virhe" + +#~ msgid "See what's new" +#~ msgstr "Katso mitä uutta" + +#~ msgid "eg. Show extra content" +#~ msgstr "Esim. näytä ylimääräinen sisältö" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "Yksi kenttä vaatii huomiota" +#~ msgstr[1] "%d kenttää vaatii huomiota." + +#~ msgid "" +#~ "Error validating license URL (website does not match). Please re-activate " +#~ "your license" +#~ msgstr "" +#~ "Virhe lisenssin URL:n validoinnissa (websivu ei täsmää). Ole hyvä ja " +#~ "aktivoi lisenssisi uudelleen" + +#~ msgid "See what's new in" +#~ msgstr "Katso mitä uutta löytyy" + +#~ msgid "version" +#~ msgstr "versiosta" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "Onnistui! Tuontityökalu lisäsi %s kenttäryhmään: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Varoitus! Tuontityökalu havaitsi %s kenttäryhmää on jo olemassa ja " +#~ "siksi ne jätettiin huomiotta: %s\t" + +#~ msgid "Upgrade ACF" +#~ msgstr "Päivitä ACF" + +#~ msgid "Upgrade" +#~ msgstr "Päivitä" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "Vedä ja pudota muuttaaksesi järjestystä" + +#~ msgid "Show a different month" +#~ msgstr "Näytä eri kuuakusi" + +#~ msgid "Return format" +#~ msgstr "Palautusmuoto" + +#~ msgid "uploaded to this post" +#~ msgstr "ladattu tähän artikkeliin" + +#~ msgid "File Size" +#~ msgstr "Tiedoston koko" + +#~ msgid "No File selected" +#~ msgstr "Ei tiedostoa valittu" + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "Huomioithan, että teksti syötetään aina funktiolle " + +#~ msgid "Warning" +#~ msgstr "Varoitus" + +#~ msgid "Add new %s " +#~ msgstr "Lisää uusi %s " + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "" +#~ "Olemme pahoillamme, mutta tapahtui Yhteysvirhe. Ole hyvä ja yritä " +#~ "uudelleen" + +#~ msgid "Save Options" +#~ msgstr "Tallenna asetukset" + +#~ msgid "License" +#~ msgstr "lisenssi" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Saadaksesi mahdollisuuden päivityksiin, syötä lisenssiavain. Jos sinulla " +#~ "ei ole lisenssiavainta, katso" + +#~ msgid "details & pricing" +#~ msgstr "lisätiedot & hinnoittelu" + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +#~ msgid "Show Field Keys" +#~ msgstr "Näytä kenttäavain" + +#~ msgid "Import / Export" +#~ msgstr "Tuonti / vienti" + +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "" +#~ "Kenttäryhmät luodaan järjestyksessä alkaen pienimmästä järjestysnumerosta" + +#~ msgid "Upgrading data to " +#~ msgstr "Päivitetään data versioon %s" + +#~ msgid "Hide / Show All" +#~ msgstr "Piilota / Näytä kaikki" + +#~ msgid "Pending Review" +#~ msgstr "Odottaa tarkistusta" + +#~ msgid "Draft" +#~ msgstr "Luonnos" + +#~ msgid "Future" +#~ msgstr "Tuleva" + +#~ msgid "Private" +#~ msgstr "Yksityinen" + +#~ msgid "Revision" +#~ msgstr "Tarkastettu" + +#~ msgid "Trash" +#~ msgstr "Roskakori" + +#~ msgid "ACF PRO Required" +#~ msgstr "Vaaditaan ACF PRO" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website " +#~ "makes use of premium add-ons (%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "Olemme havainneet ongelman, joka vaatii huomiotasi: Tämä websivu käyttää " +#~ "premium lisäosia (%s), jotka eivät enää ole yhteensopivia ACF:n kanssa." + +#~ msgid "" +#~ "Don't panic, you can simply roll back the plugin and continue using ACF " +#~ "as you know it!" +#~ msgstr "" +#~ "Ei kuitenkaan hätää! Voit helposti palata ja jatkaa ACF:n käyttöä " +#~ "sellaisena kuin sen tunnet!" + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "Palaa takaisin ACF v%s:ään" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "Lue miksi ACF PRO vaaditaan sivustollani" + +#~ msgid "Data Upgrade" +#~ msgstr "Tietojen päivitys" + +#~ msgid "Data upgraded successfully." +#~ msgstr "Tietojen päivitys onnistui!" + +#~ msgid "Data is at the latest version." +#~ msgstr "Tiedot ovat ajan tasalla." + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "Yksi vaadittu kenttä on tyhjä" +#~ msgstr[1] "%s valittua kenttää ovat tyhjiä" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "Lataa & tallenna taksonomian ehdot artikkeliin" + +#~ msgid "" +#~ "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "" +#~ "Lataa arvo perustuen artikkelin ehtoihin ja päivitä artikkelin ehdot " +#~ "tallennettaessa" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-fr_CA.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-fr_CA.mo new file mode 100644 index 0000000000000000000000000000000000000000..39878591074129cde9af858ab22c608e9cb2c8d9 GIT binary patch literal 54213 zcmbWA37i~Nwf_qU`;P1iRDfhMn3<5UCv4dh$RuM{7B%!t_slfu=^lESWP%GSs0aum zD5xkRTR@Sgq9W=OMihOxJ{4SfD(FM>?+&id|Mz#!t?KH|1bDAMsr>3Lb?YwYo_o%@ zr|$e@ze(3e{O;I3ie3h;J|K#&*ddCpJVvom^y!nM=%wKO;4a{I!F|D>fD6Fif%}6e zoDxO5foBC=1MWfi0&sV57(5gl12==$fyaV-&yJ$gz%xOmzYe4d(T(6N@T1_Z;LpHa z!MDtbqJ6-3fIES=fIZ+AkZMQIfnDI=LDi@8RIm5(pq@VsRDBnNJAe|EO0XM=Yp!=#i082YH%+2K2ZJp6L32CEAV*mpfjRqKX4hSaa#|n9Yf$j zU=2JNyaJ5DTSNF^Q2qK7P~-d*xFh%+sB-=Zs=szR)63f*RQ@Btmw{6Q&Ik4U1)!d< zf~xnXfR};lr)xpw+X5=z1EAs`1eO1Ba6b4{2zSzG#h(~(e!yN(^>`Jiam|BjZz;rY z1Xb?qK+(bV;NIW|K=t28LACDzP|tr6R6jims@x|-{4=2H`A1OW^;Zy5j&_;n^JE^V za$gOq+%l;An?v{#Q1!nO6dm6Psy=sx_)mZ{2tNp_9=``wufKxor|s#CBf#oGhk9qpvI>Ns{Wh6qruxiJ^xiu z^>`dq|33rn3jQ5beRe#{;|~Ni|EGfDU$a4#y8@g9z8c&O><9H+8B{s15Al}=ye_1F z0NjQ2dqLIXesD+d%iwO{*FdE|4yv4=f-(3EI2GLEY{%n3wfj6!?HvGBuQI6mz82ga zdq zuLISucZc-PgGIvM59#xJm^*~e14TdAf-3J`Q1yHm6rDc@?gZ|;oV5`=7*u}`gQ`yz zRJ&gbs=qD+)n9K9cmsGi;afn>+Xq3>(UYM1=Wn3uxz`HskIA6QI~G*FlR=H=a`5Hg zdXT9bT>+j6egjnf_UZM0JqT1i4g*!csi5jJ6I8i#z&*hEp!%&BRK5+M#$^;d4SWr# z@%Rk5C-@~$&wU5f`+f@U1^zdv`acJ%oZVi*+6f*2s=W7sD(4nZ^|}XCeLe+hem@AR zU!DrM%SxZeF9+2>J)oY?f%}5P;0*Bfpz8HeaBuK);C|rOK)vU`K#Gi>20sYSS>@&Z z7}WUv9#lJ?1y!Gag6i*`8DzEdFz|Tr81N1=M>sf@<#-pvrqUsQP{qRR2B@@JpcD`K=KC0r*nF zPk}0LJD8U8?+Pm4{-D}<7SA?|F`wKLgabp8|?*mx1Zb=ltxJ!AD*sQQ-n;#|j(dZu z&&xoiPX|@*Y;Y!c2B`cOfokXLK;?fcsQTOx;_n6-lIT8A`FCeg=>ZQ0A==`u-l&cyISA z@1LDPh4%$j{z0JiZ%CgGitbMY)xLQlz86&e&I48N9H{!dCZt~ms@+$I@Xet5_b%`R z@Gs!Y!R}Z4`g^fiuA6pvLocpq_s>sQGX!sC;*Z_OB_(+yJWlQSdnMN>J_k0;qoeGN}6e5LCXWLB0Q9U^lpHzlTo-Ro{7_o?8KG-1|d( zC4^rC9!vaN!Gpm2LDlzLpy=(Npy+q6JhTTM4ju*G1MamQ{40ciT5vktalqw`IpFE! ztAS^L9|QH=A3*Vy0|&jImw<~2mqA!?^ht0kxaW||+sA{a60U%vhYy3Ak57Q=|G$E& z-#$fecMNL&90Q7O7J|EguMY8pA^we^==Hsz%DV@g1U>?)-@XQ(2>u|%?|Y%=KM1$PI(4ekd1B!r&^cP9L2Q2g(op!nk+C9mh~?CYCNt3)$ezM8s{&9lfh@f^T30Lovv%(Ji>Q?YrtQD z3&AtXuJ6AYRQ^X4hR%+vFouK+BT+OB{33V^_#04kb?`-=ekyn-;rD`~n;(Jd=R>Ma zm&-xTt2cwoz|Vkc$Idlx-@f1pgbxGNFRQ@Y!E?cPgHhebrDjo`k7?*KJV?gw86eg#Cth<*X;xzk6T?pA=RUjaNEEP|@{TS2w= zDp37(1E}}j0;+y@h4@c`nonNs^5+mdwuocs{8541y6M0@_ld$;lp3=?^^(>pI3m3zze{G z!8<_p?-xM5|LdUo>xZEF=NDiM{uR6hJoFNmA3g`3Pxv>W=yvHFT&^7ey9vJ$ydV5G zP~~lSqtnqSsCr)sE(5Ox)h|zgi@{%ldhd)kInDz`4{N}~z(G*?F9X${tH7hc_k%}* z4}trGPl1Pke*=|o|4Ti73aIjDgQDx6fc>E8cnmxgyat>E-VJL0-wSqc2Y&p;=@O`z(x1ysH61rGur2i4EN1NHu$uJHNwQc(Gi0X6P3LDAXS0bc>?J?lWd zcRjcUtbsB36;Sp66}UUN!jY!Mr-7>1tHB+> zi$K-40j>Zq1NENof-}IU!5VnT)jof(0`>gUpxW~fa8Gd3HQs;wfvVTRpvL(K@TK6< z;P&8|Ak!k659;}a;BH_KsQy0(R6o2r;0Dmz3F`URgL?jrpq{@J)cdal)&BQ@D(A!C zUf{<-_2+}2>isylH~35l{~bi-iuQU3JP|B`nomCfcLkpVHSe~&)}MbFsPUQss@`)# z{31}}d@k4pmcbd|`#{z2QBZXD126{v1giW4-s$BZ0q#e5HYmF70afn;D0+DfD0;sZ z+!uT=sCs?`d~l$ zz&YSJsCxVhRKFi^y@wA2mH#+U^;iim2M0j4?>h|6Ne^`~|4?{sq){ z?ei|L#}T0FI~^4L%m$AE*Mg^lZvZv_J`bv$kAaiHKY?T5f$#SCYruJgKLQ>H{tnc9 zIr;`hrn~dAA_3DC%)I~_W@Ajbvvl?J_hQ!M*@By zRJp$j;Xi=K65io`P6x+>YUdf?I&cxFaeqH}2zWQB`aKM)oW}w_0Ukv7m!RnWUm#0c zwA)QSu2+NV*Xu!z_s2oiYaHwbzY}nW_j`C&z#J(0xds&dd=%7pjDvH)pMz@W5g+h+ zodBwyi$T>d2lj$R@B#2MA${~_Z`U=T=FLr@=<#;&W#GM_+Wj?f5%>d8^KbG8U2ZuZ zR6jok>bakThl0NWMTfiG;{A9WX!90Sc|G9K;CZ0>@%5nI{|->~eGm9j@D@=0^m%Y9 z_;pbH^3S09;cuY&d9M$7Jq`i&o++T{_+(J|N}%#x0;;}OfU57i!Dqk^f;)g$-Rkdu z2N)B+5mY@s1B#x%2dX|#fk%OV22TVJxy{$pUT`MiO`zuSUEn0}UQq444^(}=4DJa2 z5LA1A3hMn&hwyK}nDC!Lz5l@5{r$5*y?-vK_rC(v`x~Iz^)VQw%HUEdf zgTaeI)#o};&wTvI+do0oXU`9NzjT3m?j%t0uLO4jUjwQ=Zvr)b?+@`G z0uLj67pU?d3Gq*Ys?Rgv&fvZu@p>Hs9!U5YQ2jJF;NpNipvqqbiayQ(HE%Bj_W&;i zRquC%@CQNF?;h|-@V*fLIH+-c3RM2zg1dwN0^bPkevjK5-VUBh_&cELyYEMR-kk)h z-e-clflEM*`zmm6Z~)vB90kQ^E(P_z_kbFYTLXSN;G>}0^IzaJ@DHHI@ul}VUzrW= zLU!+al<7rU!coy6Tob+$VqTm5w7nlPd0j~zt{&PO& zmlP5v-%Pybv=O%*(5IzN*53T?w zgYN{p!TUn^Nl@?E=~J{7JRH<>?*W%?M}0w+|F=(j{~mt7&$m;-4&q-4c7m6J`-As@ zGr@82An?zi`eo10AnSo^K+Vqwz~jL0fvV4L54iu*DPTyn&Q1zG#s(;pk)4>Zt_2at(-Ucop{Bcn8_%ERH{}WVy?fW^W>owp! z!b70=%-x{+`9DCt|4DFP@Xw&$v-9VDo*oaLMED}`FmMYv8~ie;`fdO3PDclUI}kn` z6rVW~R6VAFYVWC_@-G2Jf3E`f0}J3w!A+p(|2k0p`av)TKMRUZe+=rmCjMKY*g^S3c7#ly~bE(1l6w}Nj4KLef$&i|6@HJ5vbV~1$YSI4}p7up94F= zN5PkY&w_gXCI8`ke=>MD;l-fFdjQn)ZwUBaP|x27j(|^qYIpCWK5q)3>h~H@{dNhs zJNOAu_5A{<`Sl3+67UI7{q#prbpBVc3*7x{UcXa7wQDV?_mn~P)0;ri>Dxm3O`zIy zU%+n%{4IC{@q2vT+ch0LityRsiC_g3z1%xiPo`lZ;H7|QWwSNHA zxLpIPJ|6_to;ySQXTd)c{u(GgF#b)Kvv>KHmwPU#^7_D|!HYrl)6JmD`!J~f`Z%cm zdH~e>z748>e-4TsehF>>e+_OAp7U*g{(MmV+6SuqAyDa8fqQ`0fa=eiK)vr{p!)BA za4+zCpq_sU+zosNRK90H_1`~1l{fi6y?>4dwT{jLRqr{V%9$U+D?#zA^T1i)wII_n z%IQCTyMbThdK=ey6nw4<=T{Hux_>kG{{w!B>rAfWLRvq0uj5krpXK@|mwuYp+M84R zJHdxT{{0C5gzIhL9o$9@(iU-jo@*)LRb1;yKZ0vB*Ix;rP1?!e7&wJ%8uzzy{gLY< zgons?8rOwf_Y$Yyr-=VB_*YQBc@8$W))QAJZ}xWqaWjZm9U^bcBpylH8uG6VaXsL7 zh*Q674G>-SkuJXdLE<|?*(<b%V?(~L zhqPhBf8_pg^1M9cJB4tS>w*xTMxG+~{lwiA;>N)fiJuC-oA@t-?*d1OTgRoJ=K6mS z_i3&jiTi>g!|zPu^!q+IhqNINM*mK@7}7K+KEwSETtDPGoP7U9+#5sQuYeDQyr+S0 zA^Z|BAJV6iKlx40+;0re91V)^HA1Eh-T5!egyn#c(yN~(iU+Y zKt7h?=&nrsZNwc%-1WqXe^kJuLwUP$Ka*<<@xS8I?^wc*bDcq+-xGe5#WKH%`ylsu z;@5Ir%KZ;R+9>#O(*MNuC9X@kzQJ`M*9NZpN&hZb1MlQ|hWqSq55iYc=6k`9k?=@c zy7KP8^(@zG^nTLI+%Mt&?cgz>*4#5P&wYTfeltkZ?>k&OaQ_szk?RWb$~RuWo4_j9 zvD|Owx<17JnmiX0UdgqP`}?@I4{7^@Z|7P}S`F;t`XcFH;rbERQN(LqxS9B~z>BzM za&;44LwfQXA^aKw)45nWqF0hu$fQr>{utt~=hE*s!k^%Jj%y~*{sG(s>bD>FV%B#6 zi@Cos#49bw{p-0dB>wgg|4Jpa{Z1xb>qU_~UkA_NdX8%`;dP|_gM0m6!u2rM>BK$2 zwKM70a>d+l&!yi72`}JU#r1RI-X7v#Mp{4D-<65q9O5qn4+5{@x|XZUQvAPLd440; z=R({iq@TzAIpABl&gcFe;7;HIF!@QoIUxyvlPKffO!}vZdy??axX$Ieh4f3g^m`lE zZ;3mR>vH1uCj6$5_EF;Wo5S^UuARAFPTVdbouIbO?RPctH*j|(X`Nhi375If;r?GC z&ne-#g@g|wZ8?{I$Ax$g`Tr%-t{{GwkmnMjJGlQ|2viduGets zw}9*OTq_7)sR({|J4CMs9|`ww<@w#o^DC}b5O+&>ehv4hlXeW@v%oiU?aBQ=xaM+y ze0cu6kpJ`$-iPp;N!M={*FNEXHP}b^9IipGedHP24)J z5w3l>&LZEt!CvrqF8y9dKK&jfJkE6k;r|S2ihmjRf8jbQ}b6W_%BINmuBEs*j;19U2Bkf~cgFN$P@F=jtbp&a*a~;fmgX>w+-okYm_mha% z@Ba}lfWP4S8rLmcZzQglJo>$p`yX)K&GkQA72_aQXMONg&|a7V4T`N6xSyR{}bGwOTYQ#eE{4KTt?hsT#phylkjd_cX59;SN8X6 z^6bp@F48~5^-b>on+(HT-{pEW*K#iXMoGJXJo=psE&*o|_hWD=;j_Vc;PG6WxW5?8 zfqQY?!=>LW;?C!p4|9FgqoTct`xoI$z`un!!BfN?9Kvq^YlIh)=Xaofe*+&2_dgD( z_<7vFf_(bz%l+rL{^Y^vN8mfd{Tqlsf~!p4!?>mp{|Bx+h?@&u1wPI7Ca&!7BEn;# z{3QN;gbxn+zE9+P!u>D7_Y)ot=EDMwRkaW0=P@vNSkWX;kC6^B2XvD_6v&Vt=7rD|AQOdUb!LT&92GdL?;r ztxz2;RQ13r>pE37F4hafHDw}tsF*KUB$XbH2db6fn7g=;FV^E)f3;93^SWBSS}6~n zzHsHr6)R7j5kj*WkZ5kaYPeG2iE6xX(@3FOER_2T#P*dcG;n~n(G^6O2jd*|FK>v; zxnXZ*F79vC>b!5w%4OYA(ngw4r&nt6NM&Q8I?yP^1BG0@Q7tg|jsBrHr?DI%D%V#k z#B^?MdOT2qY!uYPypI8<-|DsLytA*scobF6V6IduRL8=As-M-+Twk$NtdFTTXst$| zu&G|nL7BrEn-LKkm0|E|lcTx){grB7v^zH$uVp?a9zn|$Ux-hwjpWL4e<@e1opxk@ zrBSXQdHS>|wN5&ZgwtPiwtPMkEp}KBcR)53UZ=X!mdZx!-_VIh>5K=tXT%E`J-c00 zEKw)omJZW`=ADXI?EPVp%L^M541}+Ti1kpsxLRq9q&b#Z_gZje#UJz@x2Q5tc||Q) z4LPa}252xXhYExNQLZjJ863?)J^6UP(}m5zZAEKBL~~0eUE&Oo+Heleq2TfHNVPCr zYz&LPsOWeo$Ds5<%#g@%U$M+fie+_UtlFNMi-)R(fzythQakeW-fAUg%G4O;xH6!* zcj}BB6MS8xrPwO$zC>z_#8Lh!; zhAU!)1JpWige-E*_4gNQH6!Hu5adJ2RVq!M0;ET~0w=XeswRs=C0$B#QDf{qFj9eE z*2hLdu%6pgDOZMzA=rQ`#MMg4gV0fj6H!O(R3z%?qk6`ic`-TWR{Mt_?3yO4y@EI& zCe@64jN#G==0br`*Rwpu9XjWdK2mN!bJGs3+_ z1-9W_imLe3%*PvtiX~bm?gUE-nT>bTc|JAucE+O|Z)CvW0?finP5j5^Pz_F_`a%E$ z%#E~<>hWr-7tI}kwNyog;g-=Hpd!X9isg|;lBE^~W`cx`aDT6`b3L_1>R^4&1c@WGbg-Hm8LCC|SfBJ_9t0{S#ng)Z(L87yHe)Mz2-xCDdVzJk z8ZTmDsK*Pb_97-=8od@mhc}B;&eKZZ|Hrdu$30{8G(#AoHJ_%bV3`DgXuif@U&(Vhtpfis6EE0CPEpt!jZuP&Cydgd?WB~~hQR~Z~+ z!I)oCCmZ|Kea&K!S~4-P!*U+ZKEF~bdF6EF5U~^7>#6{bMtZ zERqM5)#L)Li_8-RVSg+ObepCpf(fjRaR^LFqf{9wI=F05DvtD3a#a#sN?0xKlmyhW zy74p?Ig_mN1=WUP#j+4vGV)Xn&crl>32PwvKbNd~VJQ#OZGNLF!icRO`EtTTYvA22 zfp{g1JdIiFD;HrCt!%`oriEq))X=YkS@t4SsWMv9g0Q6(t1_TfC|%%KCmVD;>!;VN zJ5!1}nwby}6^esH^=N^lGKsfqM&K*?LcG#t{`}S{EW;xu`l!2g@m*O!)Pprv7?%3R zN_7JgUTw%aUaN4koJM%VHp*F5P{-%$9W{+_@@OHUMk<=z$7ijw6`~;iKWPDkua~r> zde2+>>PkL0)}Eovla{(%OGw+(NFt+_NNUP2+N4%qYC+;Xu^^WSD@Of%O1+4a~>~zSOx}7jrok3kuE{(00wmAt#PshN0hbOMNa$AYdn`1Min&yhnGs11^jfq;apfHeY zl&Fyn-FIY5e!?9J z*S1`n!Y?UcL8ZT;mCe`l1(l6uJseMsmm(P>enkrq%ESPx1z0q^enDe|<=KWTxl0?C zMi^^uX62O(jMV&SVXiiY_Ggk5ilK>A9_dV4VzjA?`Y){T&D$U@g$ULeyK`mIZvDm0 z+n|mtEEUwqTC|X<3_-BsBDh5hhmjHZzmL^=70XbB;Aqswjie`(i*N@e4<+g@z3e2Q zWx6|?As?vP)Rwp!yMlD{{libVwg*7c*L}-zaRl&6{e& zh5Tl`DG-^t-u9+OA7VOkXj}AHxgX7<%t|yt+iNYU+18s8vBk=mO?4As>#Ks;g-J|; z7bZYvx{HN5(?FrtDjK5~BRw9yr+_TOR5A;xrvyr<#Zr;V$g=QV#IX@N7Y4!vY+wQt zxW#X}j2|{Fr}M7-V4)84hR&t*nMr^V8OF+GM6LhO`ccd*94}qqs3~e`vg7$(O*7fz zbQcdJY^o+1yREvJ;+n~p$6M21uo)7vSX+}4rf8}ZOX3WDV{xx+8iBf#xYcghusVip zvTKB=)IYQ@$TLkXYEfb@40=J-9s%<;V>SJg7@ubbqhf@f>((2@18EV{O(h>@F{+Ie z`ilc-snTO}ZcDKaHkBDAV}sU$Vr{m{7*=}FkwrQhKGSVSi@CUWNpFl5`mDLXzzT18&%-hB;^Zrc0P*g9ce@rhWj5ppLEpZKEiPlT_xLcm1C8!ngv|xd8OZ^fwb3`AO%4q2Tv{tGY zQ6&6rUJKsgb4cp}0*%%+FK@an#WuCF51=F@c3zV@pk1azK4w!ul|hq`ill&MD@5qi zwcKDGt9C}d8ruJ1!uUNi#&0xb{Lb~H31&!sWK;J9d9pJklZDAkg_2p4lIWC)vrJHk zNdwMYY; z>vFL`;sz@Ghq7N6NHWA4p}Vlw#fYoE1ZHCy$YvHZiraQnrCRHbQFb+P1+trcc4F}T|AuI z^jh{gHr6`R9KLu_UXm?Mv5wC?9sA=Uni3dc)f#ci{)?ANy;3mNpjg{2NaZo0G3O(! z6S};$j?LDFu(vh@GOZ0Up|v3tS{p*`tu2<*)@pZ2;zQJ?_Yg~w?Rt8xKkCESTOBzxw`k_I35^~m^Xoa{))GIEl|6(>nt3|fMn06M{`s#PRELm&;S!`K21U%ZD2%XUoZ??@|06eQ-zfnP{Sx_Px$^x z`i78Kb;whLV%bkN*OeJD+9$%VZOVN7`4P{0pPXr94a%Aj__e7 zhn#(Eps>!`F!;2PQN+c#^toh^`U-=^a#_+C1&tQr_h!q)afEZt%nlZB(#9Th(K-e)V-+;nlX8mHl#K^Nzt*L60m#cvt(7fb zt&AikYJL-?7NHxl*-McjZ8G&7WY?EzyE4d%@RQ_LVj}^qDghFEi$_X~Bf&K91cNL^ zQ2t<6u32sJXAo7xWP&@5?%)jQR=y7_cIx&rY58UxhOM?`G8Vh-T=szNQwDMmyOu7i zt(4miVpU>wN~&yxqUl$|*dNA_7i*tH?g_|&y13C6ayym{S~1FR)q6ZyIpNc$EreZn99^*IZY0;!Os-wjGD1bBQZjBl+=6DZ6(Qi z6^7oPfgbg!q|5BO+!9B-J%^+dY`-WfM&TYST5sLh)q2u0a{}XJh4VSH%2aGEc;U`B z(?g)G9@@U6ZdgD6Cxj%SCneYny;$cBXI~Z(+>`A zvJ5D>pZz9xGV!EDQZYA^>83E6oh+oLbQZ)v4U%=G65JFg2OHbEOX(z=#~Pl5B#vqv}L2lI-7K!Jygt5}PxkTx$WZ9A;B1(`Cu9in6jsj*w>- zgUQplqOHgAX}xwC*Uy|3#17x>N%CRuC-Wj9oIhtcsRL>uH+D7FQSudSh+s5a#XT z$ee6v1gUxbv66^eMQ9%kD>unCbJ7Z?su!mjo=V2%;|YuOwul)xc^2!*pth7#osR zHPs<{+f)d(p6Q#$nGTrX(ek8;9;IC@ZkVe4;R619VH21&0bwdj%A$VT;q{&fkH{)R z*AAM4m0T`!<<=Bii$XL~28vw&2ALrBPGpUoe7jJMjRjyMF-N`46+FyKa?(|jmMT~T zQeTd@Bz{Y&IxQ1vEJIHY7bcNZ5aIYUJeHJM=UhWB4s4YWqG*a(OzNSFq=m@5iv11# zD{F_v#f1=%f-xQQCyKgOR9KlTcQp*dEU!ipD6P76=T*wU%|ZXE$AZf(#Nkot?p11& zO=L!s?WPz#X-zCO2BTHjp2xH^LP32HoP2}R&Bj_|#F+130cXD8gUAEy?~TcF%w}ID zU!;}H#cXUUSS7KxLmI6b$qj2)opn}EgzYkoNY(tlpcz{qWn84Dh>nuhv-xWEF?!B+ zXP9b8m(svgfUT6?-!JX~r)%Em%Wlgf;05tMj8(>_53p zZXtVFnP5;qqE*;&?7t>kvS8TD&XQrY8jYKa8t{LO{|5D+xrdKM68p5%YZ&x4({J^k ztoS*SxRWoF-%0cdn+jnE$1-H1Q6+tAXEpPAg9#Xt?ouaJ+gxiA;#h87dTV{cG(ppG zWWk6>r?6E$agNC*qmV}=UBoz!FbThCH*ga{O|UktLqo!!$LeNMk(l>tsEQ(d3THOh z-EPI?7TKj4+@7gt%rF=p(=He@o@tBXEo*7Kk$qw)H&}d1sVuH&o-SYx=OmT{wv0z0dp!fz{A87hbE;`j z1?k2SDc-7EW}-PWN)^ITBV$&ydJES`VMRa=0h)P<825=o0HuEC6-C; z`xDL0G|f0421&oTG}IDD5qpiUJ2*?Dmx4>(gWKreTaesMOK*PGo=B(S%dOy8IemL6;ITY;5vXJ zm>(kE5Ril_dwerY>%;u_}|U zZ=j@1$dkhdNZV+cjXTqtSa4-rYDh{}n(=YV z6E>rK0D~c09U$kpFeM8ZFIj(>t`$bgO#sXw?ArDr8C%E|z9(ZOd;=qxKD}8oG4RGC zt^D;zLJ(uD<>m!r)uPGjEVgl3I+^T=-JG%4tYUt7%^<4qm<%C#?0WSg-}OLL$>eQ* z$V4kyL^BU-CTR;&TavuPx34ZP$zSTV@x`=@!gx*fwb_SKQ6cprxR|Af{M&qv%Bn4@ zdQfbPk2HNQl)7-i($xvi;DIdN=g_2*eFqnV&#?ID_#NdEP(Kbb;Qc79_0iE+vX5 z`<^We)*3TXo5{f%-5uka!jp37>8QirY^%gdK@X;s^d)Siwi+<_Zh+>=L^Oic3Ze=t zVY`htEnyqgG+q7wUXQSHoOa~;K7E{VfC8bjF4@+udecy?u>X5R&$0#wqI?HuPJZ9AE2C|&ym)UTMZ%~fB^B_ zWY;2zFq@9&iQT4?1Ty>jA*$DwrSN18^e-6}Bvt95x$ag1^UBOVJt%whduwP|9r{^W`g88qZL2)&2_}4GPDyA$sJ}1&%>g9%s>3dl zr$fEcjA>CS{W0=270NV9{G;u0RxI0J8_}oh)p95_b-xPEKwCwRs%7TV?1d)}B&BOv z9>T$m9+XZSPsz6xk~rOsJYpqLUDVJ{6vpxCvOp#hYQEwO70DxIf<^%tZ{;SLsH}WuijSql24+Ib zdoc!$NZQ=syp>8a2V6Djz)(@LO*I}$)?B1i$uH{)9f++KX;YLO5*?*629SIf=JxtTLtN*d zHQ{CuturTH0X|FX_>$9f$L3Dxy0KbumOK;<}*C4GxZ!! z6%q;CW@%;ynwyw?A7MfxJwqiCEtDsfR3ldF$i8%sB&?8%KrC7#uVA6aujoYmooFbR;0tBk2 z)f#}=F?(bYgV8t1RA{>kkJ)`#K+Lf+x;U3CAQQ_$O)Wc~hKrF)TAk6wL1f8q zhad)7LuJ(i4J z$p+N~`DV`61Io7y-J}a^T)D>nb)`Bxo(I{ZYgXg)#!9*PR9RmuXW|=Rk(-GV5uDC* z<-rDuW!GxvDo>4X`CmOY8&ON4Yb}hseQ+{@{lsg$zfJWtPqSrwD~|oOJ~TV-?rz4e>-A3? zXXE!YAZ3&!tq^&>Q7@Lef^}`@j*9A>d< zN=YHIHoiq$S>f>)$RY<+888d1LV5#M6?+1yaayj?kE^RGRh%|cgWP1Jsp{w%R00;2 z;SoD{Mipee21JB$9U)X%`oA{DCecb*wAZ5q$624`by(>vLLav)U68($(zq>Sf51qvW!~YSMl$7dG4RG>B^66*b8P3@%?J zvd2G^V-ek~gKUO#H4>~FSh%peU`>!`Q2u9^+%UdH7KTdeQ8o+LG|#eOg_wf;%@z;) zgs>qy#zvDI&AcS>gfu(ThP6>LMvh&38zoNFV4+76$J9Y*G$;Ypg+nITGSrbhl1xa$ z%b$SLtNbz!e4vsjgo}Ya~nqF=t zWAnl>!ya>|%aCPRLa1u&|~Cy%+j2$)8|zl4iP z^6kZiKFfNq1DVxlzV25XjLuaSRT!;Wdx7chSAoqNrmWXO=6#( z^t(P=lbc~9rFBtt8{Kwdn5olj5je61NBn3)F)2kPbura+`n4(ph<|FRP1bxzvh{!s zq0n#hBTzjP#YxPkC>4MW+Q~m7OiZ7WWgXoU=IB;)J5duLQ*CQ$W6$|Z^VA>bY!~KO z9<{ZRbfGN(OwooLJGAMbL^%?vhuu=y%x*Sv5uSaM8TRZl`Gb3bjyFkPQ62w;isGOw zCJ+K4tj4?@S@Ff1p@^JjhD!Abmv%>(aU2OWplQXdR6${I^qkz#I5)_SpLwBa+spP- zcx4A?BT=3)aJH%CMPVlliDo;-xAY^hX`zPiVr8R>9elFRx4V!JF!9S|+U3-olzlL> z#Rp9cRvBUH;smH_sDn97*%7mr`DsLKa3fUaXyct4`5+)z7E9ppEPbpP z;!*#NFyV@DL{v9?&DBvYjb?ygHoh*gk%>`2>_IP8iL^fRqE!t>WK%o$VC%_FDJp91 zjpin!J^nVxv&$Fh@dv8Y3Y}*}i=6F-%~PZ>hJq@l?5KHGk@X2|Lxr|5L0_=KsYUdo z`YxLfM?5XhxyB~BAo_7M!@~`>Qd=ieGYr`j>kXJ~En2{Cc7ZK1QNQsmJ``i43bAAS z6JjeqpQ4_S$EHH|kfTUP8rcy?P=n6DQ-9M9b>n>b0+pJE5fSThqtl|?(FiUDLogpF z8zF4Q8Zqw0jgWEL_=RsI*0eT>dbNqn3XPou4VuZC2pK{6fg;rp2qY%O%DaM-+*E!V zLoI!^iWV!)7A^Ut$}4ec(mi579vRIom*L>mXxaD{+@BDQZ~^AFd16vkF1i>u#8!hF z28A+J{fGlm|2?reS~Yr$3|>_%Ta5j7clz!hr$2Evg9yQORnqLy;iA%`QuF zc%1c!2_#c$CXMtLyQnxaD6B$M7lbMof{op))@^HiQmQ=>I>$yZY+{7h;(Dthjj6Fh zv0+M$(GmEzKpugMjIji0&UuekD+UVX@w@13zHTz9*tjw)mY>mt`Jhy!lUBKuZF~a0 zfmfjBkP?lhZaQXR*wAwX=>UefG%vi6(TG6YHz#JB2r68%$tvWGk08wb9 z0bx)FV{#~y;bPN(}#EK zS3;fgNets2gbo;}Z6CHxNo|a1Q-EnDp#~YOD)D@%QN%f@ILg->)T_TcT2&b4zn0l- zdn&9fL-a7i*~8JlNkKiBUy!Fo8cQrSb2^hgT1-!0vM(4Jqo}us)4BZ=Bs`b=J#-BH zW{gz2u!KZ^mzTMyq5i_J22p|vETDl9sSM)cPl+xWq!cj}X2bvl!DoN@@jIPfZNqJX zEEI;^!Ap_!F-^c$=mr)HS8h#QwX=#$E|W~yj|2zv$8n)mW|P9K`Gj)?yvvTM z-Ie)l*~XGHGF_%*%;NIttLy78K5jrt_PXKs9Lxl6SV^XHN0L2)0&y8ruh4<%f?#xq z(;*&URd%{@YfSFcd#!q4GbynoA<9g6$dT-r^1f&a*Wn-u8A)zTCGKd2OR=SnjCjjf zGQDvpl0X*bnZ$e~3zz)049Py|i?NGLJ{|j8SLoIgkXA!Y43HIFW!pROAey`g8MJ`F zf`lUx$9kW!tW*bcI-w<;j0C65+-==Ec6^dDiJKaO@?(-hR6V0A%XWtSFF7TN?dX2| zV%n!W5`)Dih6U)=Ws+3%&c-AI9^TE@shR9S2gt;^-Juzg);aswR%MP~P8XUlMca8x zbL|TXTiUCvLM4ux0-wPQ=D#N?0@=M_oPHYX`*xvY>$ zKq_Y1(5+q~3!!+5nlg{~!R>v8Yil_YdC`;%Ejry>7h@+uUBr^QjUGwU=?HIES|`_} z^kjQNp}hNo^-H#Cjst9bL|sBLyvHVZwrwxEGwnqeH*WVA)Z zHVm8(LbUDU)!vzH1GsGKCorTJIe z+GJHfbhcJIZIINZ%BL;Y($Ffv^h(t=!V`O@466p-vO%>TWggV9S#Y?PX@Th`8v|dG zNsIYw%mv#aWg{J!;ypWT$0dhsiG60tL;G{uiF8p|?nXS_cKQ~zb`xWVcXO?PzGaNV zvokB&j^hf%C(8+cz5we&JQs$=A&3yUzBczAsT+~38U^_=It^hw!5NyhHd@SoEY;EC z@h$Y828Jf;$ga64A%)QjQt$9YCiL!jUZpHv?T%x7i`;&Y7iGGAhXb`lL7MN$f|A+j zG=178Bc{Q?WVCXbc*<<0a=b(%71mOjRAid)()rsD<*>dNv{R=U;zC5Uyu&4Jo((ZU z15B(Gt`TCdNo}0Q@;al;pw&C;^cp$pRwmG1!=N#pkSn8Uyy=mbSCm|lzXcl_sCE18&VUx+`I|gU;G*d&v z<}-(RsemC@l9~S@`!+blwz5Be=^TYMNKd}l($nlNDjRV&M?o|pN=Qxr-Wia5)k;paYnhd)3K|wQ4Ol!2r6!(qLWCTlx=9l&Ll%ij@>0`)^uN)Lt8{#c8HVy zfJ4~O9hGW?6+-4BaZaBOS|2jfqbw%czR)>jY#g|GAM)2;HGCa`in*bWM8Y43n6AQ` zhBe=;5Dg~l4ejuQ%IGHF*uw~5M~)e%A~x8MIN~)UVo@h)b;%)}mTkg7BHNhZQ4^d` zFN{^eI$7SETNt+gZYytCa-_6l?i!V5B4(gJ4zjdl#6?Bio z1XjP%!l2Y}wbl)|TiK9s3X=rmD-_307jU6y+vf168znJm+@_`b2W>rLqG~QVXG9tC zo?e03X(yts^CU>5Nz2p^TJMZGX?PO>%{DuYnMp01QiIvkQmjV|wArxaG+;ZFuFy)J zWB6GkUA;Ebt?^4J$V@wGjeSjk`A8}py~e~H#FJ%+$1q?t7^0|0n_~!lS&DEgX4A?u zUn-lG#ufmZS#I68mCbgpgY1W4!wRbpjo(Ql$i}%b_N^Mruu2I0Hmo<693(WmXBmQ< zso2C!teh65Q4XpsM_pi)%w)2f$^H@czx)}a7&=Kt)LLYRDlOATL)p<0Khd8cV9a{c zN$4!lG{S0O{EmiE7<++|jaYa1a~o#gHihJ(hVAi~o?_!5mllQ=jm+dB{qZ6^WE$1U zu|_^&SY{ovY<2DWpc09^g8_?pm;!Vc+!k!Tvq~`m@Xs^59aFFb_ zBzZK+7ZTJwr=m1RQh12wn7GOqRNI5PBK_aZGS)4MX=RJ1)L2%`Lb7@=9eXlI#wBgT zD){_;s|;<8PiyWEr+w>L?LA)Ti|E@4icdO7&DZBb*}m0O(B`F%pOZf&8C-C`c?4 zwk%;V40k@ulih(#4#|N&34-4TG6STNJ{Xvn%s5F|%_!$*h|kDwwBChihS0(urlXP_6*IY#|Si->LUW zCA2z7Eot-7ftuWSr(sLn3S{>%=AROp(IY#5>@CVHB2P(#9jT^DY1(l@EuQy<;cH=A z9Ie-~t<$_fRB?)B6$$jn>|oHbIS)walB(k)<6CUD$qlJ5m;0XioVJe}hb_`ERNYn} zoLE?v5+&)z;04&WOBOaboBCi%1hyac{O@_8YPj7;`z2vUga>@~h00D8mr4!ICwpZz z(ZFh-L+o@LRckVRq?&BmY~M_{?VmZwkL6gKcgc7(&-3&Cl$xJ-Oa_CQ4;&jMHXeyE zJwY9U8)9ZnqIyXqq}ejDbNXvv_!1|B792NagTrl4?i3gqtQV%p=}KP5-jno8^OYHg zwWK(+$pq)%OtMIc-pri*mn!E$Ht6I7AOuZct%47eyUgGwf&XSumE_S%b0OY!hdQEozPI!^tIF(gtZFqgV%aL3EgcB z4>Y%;Nl|RoAJQ!#SCsk@ay03}mTnx}V#K6njS_dK43oEAGz>JxdT9RVS+Wcp@ooWu za`lCj>J)fAcV*k>=WkHqzk@%zoKE1nnD){m3&oql+MT)~;h5&WZB19D%+BWxiR2$l zHi<|S=`%(hd*RRWkyhP(AY}_no(X4XV6jU{BAXiQ(L9ZsnI>P?}GgL0@&@Kv}qxm@8-DsG*a`rwJLv~JhRaLX#B5AbX}<<65~ zB#hV$lAD}GJ^|PP%plNwHnDT^YMJOzRro+tuBMO{EeHoE^5{Hwv*NFZ6)PdYrx_ON z)%K1mA7pKWOEh=0h?)=pb+AK(tGmdd)ya3OF4TT^uoL)4fXn0`qIH!=v&IU&Ph=}9 zblUsbCAVXXYdKy~4<*WJx?_lM!U&&Eq_&4qW+v3+k_*}C1`gYhO+hk>^u8`1GHYTH zQw9~$`Y$(B*YK!|dnY;TXk|=BBWwuf7n06)J8Fp16NQL=@T_!&Se=^K;k#jQ zF3i{LGUu9ZT4G2hXti@BwOI|rbUtWE3oGWQ`{Xnq)?DRh63? zVZk;M1o0PNKQd!CeA4F5qexNV zI~>|wOY5F$pLj2&k$l7@ff->+oZ5}mVI+B}9VwJ}lKGO}-0RG)oUMy~YPW8Ckuwl-xP3>`Y;5+)ziRL+PqUrr;Itba1}h)hQR%JgZj%C>T+g)OkACe za|b&V4bga*xK1aq`nxtKagM+8?1n;fY)B7qbnPw8nJDhsDQiY*|I9uJG}}HW6pf5D z#u!79@p}oTkkJOI z6>LX_$wdVoJ*=-r5!ljVbvkum$TFpvH9c+MTA6aB$x7Cx${Bu9g+yRI(gE0VZ`v25 z7kGxPk9;$?JE7QgP{+5}kHxfE?$zq%9*Sw5%pB2Y+6WnqnsqZK$e2mxLTr&_I6;PD zS>~BE!$L_Jbde-Q%EhW7J&y$u@dr{g`Dc0R!fa<&LV`NLvgswA801zao=&ZfZ{d>- z+v`rh*76M%geok7%wThZ3Nz$U}szEuRho8JBszjBp@YmjxGz>*Des4Ru%@xjCvrft4`evCu~wi8t~Pz$w)Iv6i!!%`6qF~RrD3+I-cxw@@F&5lU%kTR6>Xm zPpo8%K63vw6Q_fDVzoqTw-|A{3xrC+=7$}uNPSf)?1|r!MWzg|DdwdgIBAl}W-|~T zPk7@tvgWCtnRuYi)Swf-gvyQL@7p2~BQvZgZ$ zs-~v+Go)tmg_DbKUuYlDcE?yyP}Sr(29wX68h~3n9aNs|EWby>x_g2kyKX0GhbQTB5GxX8W-1h{c~^o zDn=~{2H>?hvyC^`v)1*N$?O|XOwQCByg7w}YlT%aVHr5qnp;JfGWg&iO)!cYLN{gk zeR2w^Du@rU{<&^p0$zS8Ux|tp-U=2x1=gUT_iVL}QciD_iRm+s{@W zV~|~w#I0qm0xEw@5BUrUhTW(@)QBTCLjEOPa!VU9uC-P_Y@T>fwXB=ADozwXk3ata+rxjD2X&Oe3WwgX3u1b>Z%LrN zNLhoX8MMySTMsconRu|sM{V*5&@QDMkui2d&*g@U5_oRQuT!BQ&@l0QvM2Ex)I|I; z@4-}B%ZRx>se6m@T-JiX`!kL&rnsjp7#>VtCL&K|2dhUq;ucaB zLx+e_=47I<#WqaQin)M()G^{F-l@hk(B1gK$tnnd8WBm ziuaqhjn=%Z9gtPNDR&_k@m0I2!3cZl`ld+9HZsX(qD3!j+|r2Zq`ygSW*?et)ttO{=*h9u&QDAiFEGMo6>xN7{zHvh_ zz9M9zG*G@RPbap;Z*4LP<>;X{b5ZjpN^JW2h?+CS;`qY4k6SOt=WFq^52rKfnNN?b zS0r+7E7{I1Q`6+j(R_cVi0}nW#`1*>lC~DR+r*D$o3`x-q_^rrDM=#mNI{Y4Hp8OScs z%qfjdAL+BB&1RuPJT-O?4(Z-WTvG)%#T3mK9^~C;vlzy~w~8X)mNn20$4z)ulR;=D z^m&LPBnn`y&_1%{dv~WB;%}?_p%5&!_Q_qM=-CP^rjcY$zpf%8vv!KW(d`)rKU!vd z3o4?2TM9AT7rb)EgwwawI7#ErybPHs&{u71wf+cbi!#o30?aJOcDN=f;~O+M*?iRM z7Cvb{eMn!{b?_f;vnt0xZu|~?#3~t6Wo)(GZ;n{FC!0wL^5S4#x~+hjVU-Mv8w-7+ z-C99jr%;KVO`_9kC@q?Y)W^q*Xc!WDCO-Jgy){^CWvmIO^4cFG$GVhpF~WjN75O_6 zM5l+7tUGtr(sk!9)+)W#>AWVKXIx>M1_tXUG)h-Z%s3Oei@kH!67$)CiMvOHt%9k_ znX1m+QK9Zf_ZA|~?!|}Y#U9=(wq&#`K4+hQ5}~=9MusDNZG}yp!4=B*hPMU%Y@4Qf z7mo4`LJGt%-+Hfs!)b6vkEgj-)frV95!M*|LpbVJC~q9|h~jDOqVb_Zi+mD=Pnll$ Vu-~SL^S?jsm%p3{+eps({r``#1Tg>r literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-fr_CA.po b/wp-content/plugins/advanced-custom-fields/lang/acf-fr_CA.po new file mode 100644 index 0000000..68844d9 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-fr_CA.po @@ -0,0 +1,3571 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.8.2\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2019-08-02 20:54-0400\n" +"PO-Revision-Date: 2019-08-02 21:08-0400\n" +"Last-Translator: Berenger Zyla \n" +"Language-Team: Bérenger Zyla \n" +"Language: fr_CA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.2.3\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +# @ acf +#: acf.php:79 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +# @ acf +#: acf.php:359 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "Groupes de champs" + +# @ acf +#: acf.php:360 +msgid "Field Group" +msgstr "Groupe de champs" + +# @ acf +#: acf.php:361 acf.php:393 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New" +msgstr "Ajouter" + +# @ acf +#: acf.php:362 +msgid "Add New Field Group" +msgstr "Ajouter un nouveau groupe de champs" + +# @ acf +#: acf.php:363 +msgid "Edit Field Group" +msgstr "Modifier le groupe de champs" + +# @ acf +#: acf.php:364 +msgid "New Field Group" +msgstr "Nouveau groupe de champs" + +# @ default +#: acf.php:365 +msgid "View Field Group" +msgstr "Voir le groupe de champs" + +# @ default +#: acf.php:366 +msgid "Search Field Groups" +msgstr "Rechercher des groupes de champs" + +# @ default +#: acf.php:367 +msgid "No Field Groups found" +msgstr "Aucun groupe de champs trouvé" + +# @ default +#: acf.php:368 +msgid "No Field Groups found in Trash" +msgstr "Aucun groupe de champs trouvé dans la corbeille" + +# @ acf +#: acf.php:391 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:530 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Champs" + +# @ acf +#: acf.php:392 +msgid "Field" +msgstr "Champ" + +# @ acf +#: acf.php:394 +msgid "Add New Field" +msgstr "Ajouter un champ" + +# @ acf +#: acf.php:395 +msgid "Edit Field" +msgstr "Modifier le champ" + +# @ acf +#: acf.php:396 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Nouveau champ" + +# @ acf +#: acf.php:397 +msgid "View Field" +msgstr "Voir le champ" + +# @ default +#: acf.php:398 +msgid "Search Fields" +msgstr "Rechercher des champs" + +# @ default +#: acf.php:399 +msgid "No Fields found" +msgstr "Aucun champ trouvé" + +# @ default +#: acf.php:400 +msgid "No Fields found in Trash" +msgstr "Aucun champ trouvé dans la corbeille" + +#: acf.php:439 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:587 +msgid "Inactive" +msgstr "Inactif" + +#: acf.php:444 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inactif (%s)" +msgstr[1] "Inactifs (%s)" + +#: includes/acf-field-functions.php:827 +#: includes/admin/admin-field-group.php:178 +msgid "(no label)" +msgstr "(aucun label)" + +#: includes/acf-field-group-functions.php:813 +#: includes/admin/admin-field-group.php:180 +msgid "copy" +msgstr "copie" + +# @ default +#: includes/admin/admin-field-group.php:86 +#: includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "Groupe de champs mis à jour." + +# @ default +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "Groupe de champs supprimé." + +# @ default +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "Groupe de champ publié." + +# @ default +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "Groupe de champ enregistré." + +# @ default +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "Groupe de champ enregistré." + +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "Groupe de champs programmé pour." + +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "Brouillon du groupe de champs mis à jour." + +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Le nom d’un champ ne peut pas commencer par « field_ »" + +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "" +"Ce champ ne peut pas être déplacé tant que ses modifications n'ont pas été " +"enregistrées" + +# @ default +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "Veuillez indiquer un titre pour le groupe de champs" + +# @ acf +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "Mettre à la corbeille. Êtes-vous sûr?" + +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "Aucun champ de sélection disponible" + +# @ acf +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "Déplacer le champ personnalisé" + +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "Coché" + +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "(ce champ)" + +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3871 +msgid "or" +msgstr "ou" + +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "Vide" + +# @ acf +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "Emplacement" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Réglages" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "Identifiants des champs" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Actif" + +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "Déplacement effectué." + +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Le champ %s a été déplacé dans le groupe %s" + +# @ acf +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "Fermer la fenêtre" + +# @ acf +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "Choisissez la destination de ce champ" + +# @ acf +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "Déplacer le champ" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Actif (%s)" +msgstr[1] "Actifs (%s)" + +# @ default +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Groupe de champs dupliqué." +msgstr[1] "%s groupes de champs dupliqués." + +# @ default +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "Groupe de champs synchronisé." +msgstr[1] "%s groupes de champs synchronisés." + +# @ acf +#: includes/admin/admin-field-groups.php:414 +#: includes/admin/admin-field-groups.php:577 +msgid "Sync available" +msgstr "Synchronisation disponible" + +#: includes/admin/admin-field-groups.php:527 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:374 +msgid "Title" +msgstr "Titre" + +# @ acf +#: includes/admin/admin-field-groups.php:528 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:401 +msgid "Description" +msgstr "Description" + +#: includes/admin/admin-field-groups.php:529 +msgid "Status" +msgstr "Statut" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "" +"Personnalisez WordPress avec des champs intuitifs, puissants et " +"professionnels." + +# @ acf +#: includes/admin/admin-field-groups.php:628 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Liste des modifications" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in version %s." +msgstr "Découvrez les nouveautés de la version %s." + +# @ acf +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "Ressources" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "Site web" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "Documentation" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "Support" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Merci de créer avec ACF." + +# @ acf +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "Dupliquer cet élément" + +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate" +msgstr "Dupliquer" + +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "Rechercher" + +# @ acf +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "Choisir %s" + +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "Synchroniser le groupe de champs" + +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "Synchroniser" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "Appliquer" + +# @ acf +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "Actions groupées" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Outils" + +# @ acf +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Mise à niveau de la base de données" + +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Examiner les sites et mettre à niveau" + +# @ acf +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "ACF" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informations" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Nouveautés" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Exporter les groupes de champs" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "Générer le PHP" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Aucun groupe de champs sélectionné" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Un groupe de champ a été exporté." +msgstr[1] "%s groupes de champs ont été exportés." + +# @ default +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Sélectionnez les groupes de champs" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Sélectionnez les groupes de champs que vous souhaitez exporter puis " +"choisissez la méthode d'export. Utilisez le bouton « télécharger » pour " +"exporter un fichier JSON que vous pourrez importer dans une autre " +"installation ACF. Utilisez le « générer » pour exporter le code PHP que vous " +"pourrez ajouter à votre thème." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Exporter le fichier" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Le code suivant peut être utilisé pour enregistrer une version locale du/des " +"groupe(s) de champs sélectionné(s). Un groupe de champ local apporte de " +"nombreux bénéfices comme des temps de chargement plus rapide, la gestion de " +"versions, ou des champs/paramètres dynamiques. Copiez-collez le code suivant " +"dans le fichier functions.php de votre thème ou incluez-le depuis un autre " +"fichier." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Copier dans le presse-papiers" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Copié" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Importer les groupes de champs" + +#: includes/admin/tools/class-acf-admin-tool-import.php:47 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Sélectionnez le fichier JSON ACF que vous souhaitez importer et cliquez sur " +"Importer. ACF importera les groupes de champs." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:52 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Sélectionner un fichier" + +#: includes/admin/tools/class-acf-admin-tool-import.php:62 +msgid "Import File" +msgstr "Importer le fichier" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:85 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Aucun fichier sélectionné" + +#: includes/admin/tools/class-acf-admin-tool-import.php:93 +msgid "Error uploading file. Please try again" +msgstr "Échec de l'import du fichier. Merci d’essayer à nouveau" + +#: includes/admin/tools/class-acf-admin-tool-import.php:98 +msgid "Incorrect file type" +msgstr "Type de fichier incorrect" + +#: includes/admin/tools/class-acf-admin-tool-import.php:107 +msgid "Import file empty" +msgstr "Le fichier à importer est vide" + +#: includes/admin/tools/class-acf-admin-tool-import.php:138 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Un groupe de champs importé" +msgstr[1] "%s groupes de champs importés" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "Logique conditionnelle" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Montrer ce champ si" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "et" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Ajouter une règle" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:410 +#: pro/fields/class-acf-field-repeater.php:299 +msgid "Drag to reorder" +msgstr "Faites glisser pour réorganiser" + +# @ acf +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Modifier ce champ" + +# @ acf +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:138 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:361 +msgid "Edit" +msgstr "Modifier" + +# @ acf +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Dupliquer ce champ" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Déplacer le champ dans un autre groupe" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Déplacer" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Supprimer ce champ" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete" +msgstr "Supprimer" + +# @ acf +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Titre du champ" + +# @ acf +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Ce nom apparaîtra sur la page d‘édition" + +# @ acf +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Nom du champ" + +# @ acf +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Un seul mot, sans espace. Les « _ » et « - » sont autorisés" + +# @ acf +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Type de champ" + +# @ acf +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Instructions" + +# @ acf +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instructions pour les auteurs. Affichées lors de la saisie du contenu" + +# @ acf +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Requis?" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Attributs du conteneur" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "largeur" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "classe" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "id" + +# @ acf +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Fermer le champ" + +# @ acf +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Ordre" + +# @ acf +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Intitulé" + +# @ acf +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Name" +msgstr "Nom" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Identifiant" + +# @ acf +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Type" + +# @ acf +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Aucun champ. Cliquez sur le bouton + Ajouter un champ pour " +"créer votre premier champ." + +# @ acf +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Ajouter un champ" + +# @ acf +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Règles" + +# @ acf +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Créez une série de règles pour déterminer les écrans sur lesquels ce groupe " +"de champs sera utilisé" + +# @ acf +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Style" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standard (boîte WP)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Sans contour (directement dans la page)" + +# @ acf +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Position" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Haute (après le titre)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (après le contenu)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Sur le côté" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Emplacement de l'intitulé" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Aligné en haut" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Aligné à gauche" + +# @ acf +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Emplacement des instructions" + +# @ acf +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Sous les intitulés" + +# @ acf +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Sous les champs" + +# @ acf +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Ordre" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "" +"Le groupe de champs qui a l’ordre le plus petit sera affiché en premier" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Affiché dans la liste des groupes de champs" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "Permalien" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "Éditeur de contenu" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Extrait" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Discussion" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Commentaires" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Révisions" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Identifiant (slug)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Auteur" + +# @ acf +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Format" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Attributs de page" + +# @ acf +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "Image à la Une" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Catégories" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Mots-clés" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Envoyer des rétroliens" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Masquer" + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Sélectionnez les champs que vous souhaitez masquer sur la page " +"d‘édition." + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Si plusieurs groupes ACF sont présents sur une page d‘édition, le groupe " +"portant le numéro le plus bas sera affiché en premier" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Les sites suivants nécessites une mise à niveau de la base de données. " +"Sélectionnez ceux que vous voulez mettre à jour et cliquez sur %s." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Mettre à niveau les sites" + +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Site" + +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Le site requiert une mise à niveau de la base données de %s à %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "Le site est à jour" + +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Mise à niveau de la base de données effectuée. Retourner au " +"panneau d'administration du réseau" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "Merci de sélectionner au moins un site à mettre à niveau." + +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Il est fortement recommandé de faire une sauvegarde de votre base de données " +"avant de continuer. Êtes-vous sûr de vouloir lancer la mise à niveau " +"maintenant?" + +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Migration des données vers la version %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Mise à niveau terminée." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Mise à niveau échouée." + +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "Lecture des instructions de mise à niveau…" + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "" +"Mise à niveau de la base de données terminée. Consulter les " +"nouveautés" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:32 +msgid "No updates available." +msgstr "Aucune mise-à-jour disponible." + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "Retour aux outils" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Montrer ce groupe si" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Répéteur" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Contenu flexible" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerie" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Page d‘options" + +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Mise-à-jour de la base de données nécessaire" + +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Merci d'avoir mis-à-jour %s v%s!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "" +"Cette version contient des améliorations de la base de données et nécessite " +"une mise à niveau." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "" +"Veuillez également vérifier que tous les modules d’extension premium (%s) " +"soient à jour à leur dernière version disponible." + +# @ acf +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Modules d’extension" + +# @ acf +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Télécharger & installer" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Installé" + +# @ acf +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Bienvenue sur Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Merci d'avoir mis à jour! ACF %s est plus performant que jamais. Nous " +"espérons que vous l'apprécierez." + +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Une expérience plus fluide" + +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "Convivialité améliorée" + +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"ACF inclue désormais la librairie populaire Select2, qui améliore " +"l'ergonomie et la vitesse sur plusieurs types de champs dont l'objet " +"article, lien vers page, taxonomie, et sélection." + +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "Design amélioré" + +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Plusieurs champs ont reçu une refonte graphique pour qu'ACF apparaisse sous " +"son plus beau jour! Les améliorations sont notamment visibles sur la " +"galerie, le champ relationnel et le petit nouveau : oEmbed (champ de contenu " +"embarqué)!" + +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "Données améliorées" + +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"L'architecture des données a été complètement revue et permet dorénavant aux " +"sous-champs de vivre indépendamment de leurs parents. Cela permet de " +"déplacer les champs en dehors de leurs parents!" + +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Au revoir modules d’extension. Bonjour ACF Pro" + +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "Découvrez ACF PRO" + +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Nous avons changé la façon dont les fonctionnalités premium sont délivrées!" + +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Les 4 modules d’extension premium (répéteur, galerie, contenu flexible et " +"pages d'options) ont été combinés en une toute nouvelle version PRO d'ACF. Avec des licences personnelles et développeur " +"disponibles, les fonctionnalités premium sont encore plus accessibles que " +"jamais!" + +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Nouvelles fonctionnalités surpuissantes" + +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO contient de nouvelles super fonctionnalités telles que les champs " +"répéteurs, les dispositions flexibles, une superbe galerie et la possibilité " +"de créer des pages d'options!" + +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "" +"En savoir plus à propos des fonctionnalités d’ACF PRO." + +# @ wp3i +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Mise à niveau facile" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" +"La mise à niveau vers ACF PRO est facile. Achetez simplement une licence en " +"ligne et téléchargez l'extension!" + +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" +"Nous avons également écrit un guide de mise à niveau pour " +"répondre aux questions habituelles, mais si vous avez une question " +"spécifique, veuillez contacter notre équipe de support via le support technique." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Nouvelles Fonctionnalités" + +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "Champ Lien" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"Le champ Lien permet de sélectionner ou définir un lien en toute simplicité " +"(URL, titre, cible)." + +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Champ Groupe" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "" +"Le champ Groupe permet de créer un groupe de champs en toute simplicité." + +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "Champ de Contenu Embarqué (oEmbed)" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" +"Le champ oEmbed vous permet d'embarquer des vidéos, des images, des tweets, " +"de l'audio ou encore d'autres médias en toute simplicité." + +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Champ Clone" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "" +"Le champ Clone vous permet de sélectionner et afficher des champs existants." + +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "Plus d'AJAX" + +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "" +"Plus de champs utilisent maintenant la recherche via AJAX afin d'améliorer " +"le temps de chargement des pages." + +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "JSON Local" + +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"La nouvelle fonctionnalité d'export automatique en JSON améliore la rapidité " +"et simplifie la synchronisation." + +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Import / Export Facile" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "" +"Les imports et exports de données d'ACF sont encore plus simples à réaliser " +"via notre nouvelle page d'outils." + +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "Nouveaux Emplacements de Champs" + +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" +"Les champs peuvent désormais être intégrés dans les menus, éléments de menu, " +"commentaires, widgets et tous les formulaires utilisateurs!" + +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Encore plus de Personnalisation" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" +"De nouveaux filtres et actions PHP (et JS) ont été ajoutés afin de vous " +"permettre plus de personnalisation." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Interface Améliorée" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "" +"Toute l'extension a été améliorée et inclut de nouveaux types de champs, " +"réglages ainsi qu'un nouveau design!" + +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Nouveaux Paramètres" + +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" +"De nouveaux réglages font leur apparition pour Actif, Emplacement du Label, " +"Emplacement des Instructions et Description." + +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "De meilleurs formulaires côté public" + +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"acf_form() peut maintenant créer un nouvel article lors de la soumission et " +"propose de nombreux réglages." + +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Meilleure validation" + +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "" +"La validation des formulaires est maintenant faite via PHP + AJAX au lieu " +"d'être seulement faite en JS." + +# @ acf +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Champs amovibles" + +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"La nouvelle fonctionnalité de Groupe de Champ vous permet de déplacer un " +"champ entre différents groupes et parents." + +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Nous pensons que vous allez adorer les nouveautés de la version %s." + +#: includes/api/api-helpers.php:1049 +msgid "Thumbnail" +msgstr "Miniature" + +#: includes/api/api-helpers.php:1050 +msgid "Medium" +msgstr "Moyen" + +#: includes/api/api-helpers.php:1051 +msgid "Large" +msgstr "Grande" + +#: includes/api/api-helpers.php:1100 +msgid "Full Size" +msgstr "Taille originale" + +# @ acf +#: includes/api/api-helpers.php:1821 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(sans titre)" + +#: includes/api/api-helpers.php:3792 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "L'image doit mesurer au moins %dpx de largeur." + +#: includes/api/api-helpers.php:3797 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "L'image ne doit pas dépasser %dpx de largeur." + +#: includes/api/api-helpers.php:3813 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "L'image doit mesurer au moins %dpx de hauteur." + +#: includes/api/api-helpers.php:3818 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "L'image ne doit pas dépasser %dpx de hauteur." + +#: includes/api/api-helpers.php:3836 +#, php-format +msgid "File size must be at least %s." +msgstr "Le poids de l'image doit être d'au moins %s." + +#: includes/api/api-helpers.php:3841 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Le poids de l'image ne doit pas dépasser %s." + +# @ acf +#: includes/api/api-helpers.php:3875 +#, php-format +msgid "File type must be %s." +msgstr "Le type de fichier doit être %s." + +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "Les modifications seront perdues si vous quittez cette page" + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Choisir" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "Modifier" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "Mettre à jour" + +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "Lié(s) à cet article" + +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "Afficher les détails" + +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "Masquer les détails" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "Limité" + +# @ acf +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:66 +msgid "All images" +msgstr "Toutes les images" + +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "Validé avec succès" + +#: includes/assets.php:182 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Échec de la validation" + +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "1 champ requiert votre attention" + +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "%d champs requièrent votre attention" + +# @ acf +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "Êtes-vous sûr(e)?" + +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Oui" + +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Non" + +# @ acf +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:140 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:362 +#: pro/fields/class-acf-field-gallery.php:499 +msgid "Remove" +msgstr "Enlever" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "Annuler" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "A n'importe quelle valeur" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "N'a pas de valeur" + +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "La valeur est égale à" + +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "La valeur est différente de" + +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "La valeur correspond au modèle" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "La valeur contient" + +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "La valeur est supérieure à" + +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "La valeur est inférieure à" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "La sélection est supérieure à" + +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "La sélection est inférieure à" + +# @ acf +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "Modifier le groupe de champs" + +# @ acf +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Ce type de champ n‘existe pas" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Inconnu" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "Commun" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Contenu" + +# @ acf +#: includes/fields.php:351 +msgid "Choice" +msgstr "Choix" + +# @ acf +#: includes/fields.php:352 +msgid "Relational" +msgstr "Relationnel" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +# @ acf +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:553 +#: pro/fields/class-acf-field-flexible-content.php:602 +#: pro/fields/class-acf-field-repeater.php:448 +msgid "Layout" +msgstr "Mise en page" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Accordéon" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Ouvert" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Ouvrir l'accordéon au chargement de la page." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Ouverture multiple" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Permettre à cet accordéon de s'ouvrir sans refermer les autres." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Extrémité" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Définir comme extrémité de l’accordéon précédent. Cet accordéon ne sera pas " +"visible." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Groupe de boutons" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "Choix" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "Indiquez une valeur par ligne." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Pour plus de contrôle, vous pouvez spécifier la valeur et le label de cette " +"manière :" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "rouge : Rouge" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "Autoriser une valeur vide?" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:95 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "Valeur par défaut" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:96 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "Valeur donnée lors de la création d’un nouvel article" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Horizontal" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Vertical" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Valeur renvoyée" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Spécifier la valeur retournée dans le code" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "Valeur" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "Les deux (tableau)" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "Case à cocher" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Tout (dé)sélectionner" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Ajouter un choix" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Autoriser une valeur personnalisée" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Permettre l’ajout de valeurs personnalisées" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Enregistrer les valeurs personnalisées" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Enregistrer les valeurs personnalisées dans les choix du champs" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "Entrez chaque valeur par défaut sur une nouvelle ligne" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Tout (dé)sélectionner" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" +"Ajouter une case à cocher au début pour tout sélectionner/désélectionner" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Sélecteur de couleur" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Effacer" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Valeur par défaut" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Choisir une couleur" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Couleur actuelle" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Sélecteur de date" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Valider" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Aujourd’hui" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Suiv." + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Préc." + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Sem." + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Format d’affichage" + +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Format affiché lors de l’édition d’un article" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Personnalisé :" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "Enregistrer le format" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "Le format enregistré" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-image.php:204 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +#: pro/fields/class-acf-field-gallery.php:578 +msgid "Return Format" +msgstr "Format de retour" + +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Valeur retournée dans le code" + +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "La semaine commencent le" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Sélecteur de date et heure" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Choisir l’heure" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Heure" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Heure" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minute" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Seconde" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milliseconde" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Microseconde" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Fuseau horaire" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Maintenant" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Valider" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Sélectionner" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "Adresse courriel" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:104 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Texte indicatif" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:105 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Apparait dans le champ" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:113 +msgid "Prepend" +msgstr "Préfixe" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:114 +msgid "Appears before the input" +msgstr "Apparait avant le champ" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:122 +msgid "Append" +msgstr "Suffixe" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:123 +msgid "Appears after the input" +msgstr "Apparait après le champ" + +# @ acf +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Modifier le fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Mettre à jour le fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Nom du fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:264 +#: includes/fields/class-acf-field-image.php:293 +#: pro/fields/class-acf-field-gallery.php:663 +#: pro/fields/class-acf-field-gallery.php:692 +msgid "File size" +msgstr "Taille du fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Ajouter un fichier" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Données du fichier (tableau)" + +# @ acf +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "URL du fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "ID du Fichier" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:229 +#: pro/fields/class-acf-field-gallery.php:613 +msgid "Library" +msgstr "Médias" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:614 +msgid "Limit the media library choice" +msgstr "Limiter le choix dans la médiathèque" + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:235 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:619 +#: pro/locations/class-acf-location-block.php:79 +msgid "All" +msgstr "Tous" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:236 +#: pro/fields/class-acf-field-gallery.php:620 +msgid "Uploaded to post" +msgstr "Liés à cet article" + +# @ acf +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:243 +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum" +msgstr "Minimum" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "Restreindre l'import de fichiers" + +# @ acf +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:272 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Maximum" +msgstr "Maximum" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:301 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Allowed file types" +msgstr "Types de fichiers autorisés" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:700 +msgid "Comma separated list. Leave blank for all types" +msgstr "" +"Extensions autorisées séparées par une virgule. Laissez vide pour autoriser " +"toutes les extensions" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google Map" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Désolé, ce navigateur ne prend pas en charge la géolocalisation" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "Effacer la position" + +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "Trouver l'emplacement actuel" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "Chercher une adresse…" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "Centre" + +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "Position initiale du centre de la carte" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "Niveau de zoom initial" + +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:255 +#: includes/fields/class-acf-field-image.php:284 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:654 +#: pro/fields/class-acf-field-gallery.php:683 +msgid "Height" +msgstr "Hauteur" + +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "Hauteur de la carte" + +# @ acf +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Groupe" + +# @ acf +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:384 +msgid "Sub Fields" +msgstr "Sous-champs" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Style utilisé pour générer les champs sélectionnés" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:456 +#: pro/locations/class-acf-location-block.php:27 +msgid "Block" +msgstr "Bloc" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:455 +msgid "Table" +msgstr "Tableau" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:614 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Row" +msgstr "Rangée" + +# @ acf +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Image" + +# acf +#: includes/fields/class-acf-field-image.php:63 +msgid "Select Image" +msgstr "Sélectionner une image" + +# @ acf +#: includes/fields/class-acf-field-image.php:64 +msgid "Edit Image" +msgstr "Modifier l'image" + +# @ acf +#: includes/fields/class-acf-field-image.php:65 +msgid "Update Image" +msgstr "Mettre à jour" + +# @ acf +#: includes/fields/class-acf-field-image.php:156 +msgid "No image selected" +msgstr "Aucune image sélectionnée" + +# @ acf +#: includes/fields/class-acf-field-image.php:156 +msgid "Add Image" +msgstr "Ajouter une image" + +# @ acf +#: includes/fields/class-acf-field-image.php:210 +#: pro/fields/class-acf-field-gallery.php:584 +msgid "Image Array" +msgstr "Données de l'image (tableau)" + +# @ acf +#: includes/fields/class-acf-field-image.php:211 +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Image URL" +msgstr "URL de l‘image" + +# @ acf +#: includes/fields/class-acf-field-image.php:212 +#: pro/fields/class-acf-field-gallery.php:586 +msgid "Image ID" +msgstr "ID de l‘image" + +# @ acf +#: includes/fields/class-acf-field-image.php:219 +#: pro/fields/class-acf-field-gallery.php:592 +msgid "Preview Size" +msgstr "Taille de prévisualisation" + +#: includes/fields/class-acf-field-image.php:244 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:643 +#: pro/fields/class-acf-field-gallery.php:672 +msgid "Restrict which images can be uploaded" +msgstr "Restreindre les images envoyées" + +#: includes/fields/class-acf-field-image.php:247 +#: includes/fields/class-acf-field-image.php:276 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:646 +#: pro/fields/class-acf-field-gallery.php:675 +msgid "Width" +msgstr "Largeur" + +# @ acf +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Lien" + +# @ acf +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Sélectionner un lien" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Ouvrir dans un nouvel onglet/fenêtre" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Tableau de données" + +# @ acf +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "URL du Lien" + +# @ acf +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Message" + +# @ acf +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Nouvelles lignes" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Comment sont interprétés les sauts de lignes" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Ajouter des paragraphes automatiquement" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Ajouter <br> automatiquement" + +# @ acf +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Pas de formatage" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Afficher le code HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Permettre l'affichage du code HTML à l'écran au lieu de l'interpréter" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Nombre" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "Valeur minimale" + +# @ acf +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "Valeur maximale" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Pas" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "La valeur doit être un nombre" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "La valeur doit être être supérieure ou égale à %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "La valeur doit être inférieure ou égale à %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "Entrez l'URL" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Dimensions" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Lien vers page ou article" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archives" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Parent" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "Filtrer par type de publication" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "Tous les types de publication" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "Filtrer par taxonomie" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "Toutes les taxonomies" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Afficher les pages d’archives" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "Autoriser la sélection multiple?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Mot de passe" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "Objet Article" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "ID de l'article" + +# @ acf +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Bouton radio" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Autre" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Ajouter un choix « autre » pour autoriser une valeur personnalisée" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Enregistrer la valeur personnalisée" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Enregistrer les valeurs personnalisées « autre » en tant que choix" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Plage de valeurs" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Relation" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "Nombre maximal de valeurs atteint ({max} valeurs)" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "Chargement en cours" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Aucun résultat" + +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "Choisissez le type de publication" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "Choisissez la taxonomie" + +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "Rechercher…" + +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "Filtres" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Type de publication" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taxonomie" + +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "Éléments" + +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "Les éléments sélectionnés seront affichés dans chaque résultat" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "Minimum d'articles sélectionnables" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "Maximum d'articles sélectionnables" + +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s requiert au moins %s sélection" +msgstr[1] "%s requiert au moins %s sélections" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Sélection" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Un résultat est disponible, appuyez sur Entrée pour le sélectionner." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"%d résultats sont disponibles, utilisez les flèches haut et bas pour " +"naviguer parmi les résultats." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Aucun résultat trouvé" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Veuillez saisir au minimum 1 caractère" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Veuillez saisir au minimum %d caractères" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Veuillez retirer 1 caractère" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Veuillez retirer %d caractères" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Vous ne pouvez sélectionner qu’un seul élément" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Vous ne pouvez sélectionner que %d éléments" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Chargement de résultats supplémentaires…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Recherche en cours…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Échec du chargement" + +# @ acf +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Interface stylisée" + +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "Utiliser AJAX pour charger les choix dynamiquement?" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "Définit la valeur retournée" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Séparateur" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Onglet" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Emplacement" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Définit une extrémité pour fermer les précédents onglets. Cela va commencer " +"un nouveau groupe d'onglets." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Pas de %s" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Choisissez la taxonomie à afficher" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Apparence" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Apparence de ce champ" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Valeurs multiples" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Sélecteur multiple" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Valeur unique" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Boutons radio" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Créer des termes" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Autoriser la création de nouveaux termes pendant l'édition" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Enregistrer les termes" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "Lier les termes sélectionnés à l'article" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Charger les termes" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Charger une valeur depuis les termes de l’article" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Objet Terme" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "ID du terme" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "Utilisateur incapable d'ajouter un nouveau %s" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s existe déjà" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s ajouté" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Ajouter" + +# @ acf +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Texte" + +#: includes/fields/class-acf-field-text.php:131 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Limite de caractères" + +#: includes/fields/class-acf-field-text.php:132 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Laisser vide ne pas donner de limite" + +#: includes/fields/class-acf-field-text.php:157 +#: includes/fields/class-acf-field-textarea.php:215 +#, php-format +msgid "Value must not exceed %d characters" +msgstr "La valeur ne doit pas dépasser %d caractères" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Zone de texte" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Lignes" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Hauteur du champ" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Sélecteur d’heure" + +# @ acf +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Oui / Non" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Affiche le texte à côté de la case à cocher" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Texte côté « Actif »" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Text affiché lorsque le bouton est actif" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Texte côté « Inactif »" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Texte affiché lorsque le bouton est désactivé" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "URL" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "La valeur doit être une URL valide" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Utilisateur" + +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "Filtrer par rôle" + +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "Tous les rôles utilisateurs" + +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "Tableau" + +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "Objet" + +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "ID de l'utilisateur" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Éditeur WYSIWYG" + +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Visuel" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Texte" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "Cliquez pour initialiser TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "Onglets" + +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Visuel & Texte brut" + +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Visuel seulement" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Texte brut seulement" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "Barre d‘outils" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "Afficher les boutons d‘ajout de médias?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "Retarder l’initialisation?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "" +"TinyMCE ne sera pas initialisé avant que l’utilisateur clique sur le champ" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Valider l’adresse courriel" + +# @ acf +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:531 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Mise à jour" + +# @ acf +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Article mis à jour" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Pourriel repéré" + +#: includes/forms/form-user.php:336 +#, php-format +msgid "ERROR: %s" +msgstr "ERREUR : %s" + +# @ acf +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Article" + +# @ acf +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Page" + +# @ acf +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulaires" + +#: includes/locations.php:243 +msgid "is equal to" +msgstr "est égal à" + +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "n‘est pas égal à" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Fichier attaché" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Tous les formats %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Commentaire" + +# @ acf +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Rôle de l’utilisateur courant" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Administrateur" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Utilisateur courant" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Connecté" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Est dans le site" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Est dans l’interface d’administration" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Élément de menu" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menu" + +# @ acf +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Emplacement de menu" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menus" + +# @ acf +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Page parente" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Modèle de page" + +# @ acf +#: includes/locations/class-acf-location-page-template.php:87 +#: includes/locations/class-acf-location-post-template.php:134 +msgid "Default Template" +msgstr "Modèle de base" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Type de page" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Page d’accueil" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Page des articles" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Page de haut niveau (sans parent)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Page parente (avec page(s) enfant)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Page enfant (avec parent)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Catégorie" + +# @ acf +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Format d‘article" + +# @ acf +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Statut de l’article" + +# @ acf +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taxonomie" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Modèle d’article" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Formulaire utilisateur" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Ajouter / Modifier" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Inscription" + +# @ acf +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Rôle utilisateur" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +# @ default +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "La valeur %s est requise" + +# @ acf +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "Publier" + +# @ default +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Aucun groupe de champs trouvé pour cette page d’options. Créer un groupe de champs" + +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr "Erreur. Impossible de joindre le serveur" + +# @ acf +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Mises-à-jour" + +#: pro/admin/admin-updates.php:191 +msgid "" +"Error. Could not authenticate update package. Please check again or " +"deactivate and reactivate your ACF PRO license." +msgstr "" +"Erreur. Impossible d'authentifier la mise-à-jour. Merci d'essayer à " +"nouveau et si le problème persiste, désactivez et réactivez votre licence " +"ACF PRO." + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Désactiver la licence" + +# @ acf +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Activer votre licence" + +# @ acf +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Informations sur la licence" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Pour débloquer les mises-à-jour, veuillez entrer votre clé de licence ci-" +"dessous. Si vous n’en avez pas, rendez-vous sur nos détails & tarifs." + +# @ acf +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Code de licence" + +# @ acf +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Informations concernant les mises-à-jour" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Version installée" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Version disponible" + +# @ acf +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Mise-à-jour disponible" + +# @ acf +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Mettre-à-jour l’extension" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Entrez votre clé de licence ci-dessus pour activer les mises-à-jour" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Vérifier à nouveau" + +# @ wp3i +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Informations de mise-à-niveau" + +#: pro/blocks.php:371 +msgid "Switch to Edit" +msgstr "Passer en Édition" + +#: pro/blocks.php:372 +msgid "Switch to Preview" +msgstr "Passer en Prévisualisation" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Clone" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Sélectionnez un ou plusieurs champs à cloner" + +# @ acf +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Format d'affichage" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Définit le style utilisé pour générer le champ dupliqué" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Groupe (affiche les champs sélectionnés dans un groupe à l’intérieur de ce " +"champ)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Remplace ce champ par les champs sélectionnés" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Les labels seront affichés en tant que %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Préfixer les labels de champs" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Les valeurs seront enregistrées en tant que %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Préfixer les noms de champs" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Champ inconnu" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Groupe de champ inconnu" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Tous les champs du groupe %s" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:468 +msgid "Add Row" +msgstr "Ajouter un élément" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:924 +#: pro/fields/class-acf-field-flexible-content.php:1006 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "mise-en-forme" +msgstr[1] "mises-en-forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "mises-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:923 +#: pro/fields/class-acf-field-flexible-content.php:1005 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Ce champ requiert au moins {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Ce champ a une limite de {max} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} disponible (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} requis (min {min})" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Le contenu flexible nécessite au moins une mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:287 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "" +"Cliquez sur le bouton « %s » ci-dessous pour créer votre première mise-en-" +"forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:413 +msgid "Add layout" +msgstr "Ajouter une mise-en-forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:414 +msgid "Remove layout" +msgstr "Retirer la mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:415 +#: pro/fields/class-acf-field-repeater.php:301 +msgid "Click to toggle" +msgstr "Cliquer pour intervertir" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder Layout" +msgstr "Réorganiser la mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder" +msgstr "Réorganiser" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete Layout" +msgstr "Supprimer la mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate Layout" +msgstr "Dupliquer la mise-en-forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New Layout" +msgstr "Ajouter une nouvelle mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:629 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:642 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:669 +#: pro/fields/class-acf-field-repeater.php:464 +msgid "Button Label" +msgstr "Intitulé du bouton" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:678 +msgid "Minimum Layouts" +msgstr "Nombre minimum de mises-en-forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:687 +msgid "Maximum Layouts" +msgstr "Nombre maximum de mises-en-forme" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:73 +msgid "Add Image to Gallery" +msgstr "Ajouter l'image à la galerie" + +#: pro/fields/class-acf-field-gallery.php:74 +msgid "Maximum selection reached" +msgstr "Nombre de sélections maximales atteint" + +#: pro/fields/class-acf-field-gallery.php:340 +msgid "Length" +msgstr "Longueur" + +#: pro/fields/class-acf-field-gallery.php:383 +msgid "Caption" +msgstr "Légende" + +#: pro/fields/class-acf-field-gallery.php:392 +msgid "Alt Text" +msgstr "Texte alternatif" + +#: pro/fields/class-acf-field-gallery.php:508 +msgid "Add to gallery" +msgstr "Ajouter à la galerie" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:512 +msgid "Bulk actions" +msgstr "Actions de groupe" + +#: pro/fields/class-acf-field-gallery.php:513 +msgid "Sort by date uploaded" +msgstr "Ranger par date d'import" + +#: pro/fields/class-acf-field-gallery.php:514 +msgid "Sort by date modified" +msgstr "Ranger par date de modification" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:515 +msgid "Sort by title" +msgstr "Ranger par titre" + +#: pro/fields/class-acf-field-gallery.php:516 +msgid "Reverse current order" +msgstr "Inverser l'ordre actuel" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:528 +msgid "Close" +msgstr "Fermer" + +#: pro/fields/class-acf-field-gallery.php:601 +msgid "Insert" +msgstr "Insérer" + +#: pro/fields/class-acf-field-gallery.php:602 +msgid "Specify where new attachments are added" +msgstr "Définir où les nouveaux fichiers attachés sont ajoutés" + +#: pro/fields/class-acf-field-gallery.php:606 +msgid "Append to the end" +msgstr "Ajouter à la fin" + +#: pro/fields/class-acf-field-gallery.php:607 +msgid "Prepend to the beginning" +msgstr "Insérer au début" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:626 +msgid "Minimum Selection" +msgstr "Nombre minimum" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:634 +msgid "Maximum Selection" +msgstr "Nombre maximum" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:661 +msgid "Minimum rows reached ({min} rows)" +msgstr "Nombre minimal d'éléments atteint ({min} éléments)" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "Nombre maximal d'éléments atteint ({max} éléments)" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:338 +msgid "Add row" +msgstr "Ajouter un élément" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:339 +msgid "Remove row" +msgstr "Retirer l'élément" + +#: pro/fields/class-acf-field-repeater.php:417 +msgid "Collapsed" +msgstr "Replié" + +#: pro/fields/class-acf-field-repeater.php:418 +msgid "Select a sub field to show when row is collapsed" +msgstr "Choisir un sous champ à afficher lorsque l’élément est replié" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:428 +msgid "Minimum Rows" +msgstr "Nombre minimal d'éléments" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:438 +msgid "Maximum Rows" +msgstr "Nombre maximal d'éléments" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Aucune page d'option n’existe" + +# @ acf +#: pro/options-page.php:51 +msgid "Options" +msgstr "Options" + +# @ acf +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Options mises à jours" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Pour activer les mises-à-jour, veuillez entrer votre clé de licence sur la " +"page Mises-à-jour. Si vous n’en avez pas, rendez-vous sur " +"nos détails & tarifs." + +#: tests/basic/test-blocks.php:116 +msgid "My Test Block" +msgstr "Mon bloc de test" + +#: tests/basic/test-blocks.php:117 +msgid "A block for entering a link name and a custom URL." +msgstr "Un bloc pour saisir un nom de lien et une URL." + +# @ acf +#: tests/basic/test-blocks.php:125 +msgid "Normal" +msgstr "Normal" + +#: tests/basic/test-blocks.php:126 +msgid "Fancy" +msgstr "Élaboré" + +#: tests/basic/test-blocks.php:135 +msgid "Block :: My Test Block" +msgstr "Bloc :: Mon bloc de test" + +#: tests/basic/test-blocks.php:155 +msgid "URL" +msgstr "URL" + +#. Plugin URI of the plugin/theme +#. Author URI of the plugin/theme +msgid "https://www.advancedcustomfields.com" +msgstr "https://www.advancedcustomfields.com" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-fr_FR.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-fr_FR.mo new file mode 100755 index 0000000000000000000000000000000000000000..aec4a1c68ccad97190c16a8a496aa21160226f5f GIT binary patch literal 54218 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 O{_^J&;Ty?;zyA+LpZeVZ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-fr_FR.po b/wp-content/plugins/advanced-custom-fields/lang/acf-fr_FR.po new file mode 100644 index 0000000..ddfe335 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-fr_FR.po @@ -0,0 +1,3571 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.8.2\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2019-08-02 20:50-0400\n" +"PO-Revision-Date: 2019-08-02 21:08-0400\n" +"Last-Translator: Berenger Zyla \n" +"Language-Team: Bérenger Zyla \n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.2.3\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +# @ acf +#: acf.php:79 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +# @ acf +#: acf.php:359 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "Groupes de champs" + +# @ acf +#: acf.php:360 +msgid "Field Group" +msgstr "Groupe de champs" + +# @ acf +#: acf.php:361 acf.php:393 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New" +msgstr "Ajouter" + +# @ acf +#: acf.php:362 +msgid "Add New Field Group" +msgstr "Ajouter un nouveau groupe de champs" + +# @ acf +#: acf.php:363 +msgid "Edit Field Group" +msgstr "Modifier le groupe de champs" + +# @ acf +#: acf.php:364 +msgid "New Field Group" +msgstr "Nouveau groupe de champs" + +# @ default +#: acf.php:365 +msgid "View Field Group" +msgstr "Voir le groupe de champs" + +# @ default +#: acf.php:366 +msgid "Search Field Groups" +msgstr "Rechercher des groupes de champs" + +# @ default +#: acf.php:367 +msgid "No Field Groups found" +msgstr "Aucun groupe de champs trouvé" + +# @ default +#: acf.php:368 +msgid "No Field Groups found in Trash" +msgstr "Aucun groupe de champs trouvé dans la corbeille" + +# @ acf +#: acf.php:391 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:530 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Champs" + +# @ acf +#: acf.php:392 +msgid "Field" +msgstr "Champ" + +# @ acf +#: acf.php:394 +msgid "Add New Field" +msgstr "Ajouter un champ" + +# @ acf +#: acf.php:395 +msgid "Edit Field" +msgstr "Modifier le champ" + +# @ acf +#: acf.php:396 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Nouveau champ" + +# @ acf +#: acf.php:397 +msgid "View Field" +msgstr "Voir le champ" + +# @ default +#: acf.php:398 +msgid "Search Fields" +msgstr "Rechercher des champs" + +# @ default +#: acf.php:399 +msgid "No Fields found" +msgstr "Aucun champ trouvé" + +# @ default +#: acf.php:400 +msgid "No Fields found in Trash" +msgstr "Aucun champ trouvé dans la corbeille" + +#: acf.php:439 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:587 +msgid "Inactive" +msgstr "Inactif" + +#: acf.php:444 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inactif (%s)" +msgstr[1] "Inactifs (%s)" + +#: includes/acf-field-functions.php:827 +#: includes/admin/admin-field-group.php:178 +msgid "(no label)" +msgstr "(aucun label)" + +#: includes/acf-field-group-functions.php:813 +#: includes/admin/admin-field-group.php:180 +msgid "copy" +msgstr "copie" + +# @ default +#: includes/admin/admin-field-group.php:86 +#: includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "Groupe de champs mis à jour." + +# @ default +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "Groupe de champs supprimé." + +# @ default +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "Groupe de champ publié." + +# @ default +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "Groupe de champ enregistré." + +# @ default +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "Groupe de champ enregistré." + +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "Groupe de champs programmé pour." + +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "Brouillon du groupe de champs mis à jour." + +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Le nom d’un champ ne peut pas commencer par « field_ »" + +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "" +"Ce champ ne peut pas être déplacé tant que ses modifications n'ont pas été " +"enregistrées" + +# @ default +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "Veuillez indiquer un titre pour le groupe de champs" + +# @ acf +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "Mettre à la corbeille. Êtes-vous sûr ?" + +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "Aucun champ de sélection disponible" + +# @ acf +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "Déplacer le champ personnalisé" + +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "Coché" + +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "(ce champ)" + +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3871 +msgid "or" +msgstr "ou" + +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "Vide" + +# @ acf +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "Emplacement" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Réglages" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "Identifiants des champs" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Actif" + +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "Déplacement effectué." + +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Le champ %s a été déplacé dans le groupe %s" + +# @ acf +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "Fermer la fenêtre" + +# @ acf +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "Choisissez la destination de ce champ" + +# @ acf +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "Déplacer le champ" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Actif (%s)" +msgstr[1] "Actifs (%s)" + +# @ default +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Groupe de champs dupliqué." +msgstr[1] "%s groupes de champs dupliqués." + +# @ default +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "Groupe de champs synchronisé." +msgstr[1] "%s groupes de champs synchronisés." + +# @ acf +#: includes/admin/admin-field-groups.php:414 +#: includes/admin/admin-field-groups.php:577 +msgid "Sync available" +msgstr "Synchronisation disponible" + +#: includes/admin/admin-field-groups.php:527 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:374 +msgid "Title" +msgstr "Titre" + +# @ acf +#: includes/admin/admin-field-groups.php:528 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:401 +msgid "Description" +msgstr "Description" + +#: includes/admin/admin-field-groups.php:529 +msgid "Status" +msgstr "Statut" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "" +"Personnalisez WordPress avec des champs intuitifs, puissants et " +"professionnels." + +# @ acf +#: includes/admin/admin-field-groups.php:628 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Liste des modifications" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in version %s." +msgstr "Découvrez les nouveautés de la version %s." + +# @ acf +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "Ressources" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "Site web" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "Documentation" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "Support" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Merci de créer avec ACF." + +# @ acf +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "Dupliquer cet élément" + +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate" +msgstr "Dupliquer" + +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "Rechercher" + +# @ acf +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "Choisir %s" + +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "Synchroniser le groupe de champs" + +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "Synchroniser" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "Appliquer" + +# @ acf +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "Actions groupées" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Outils" + +# @ acf +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Mise à niveau de la base de données" + +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Examiner les sites et mettre à niveau" + +# @ acf +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "ACF" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informations" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Nouveautés" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Exporter les groupes de champs" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "Générer le PHP" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Aucun groupe de champs sélectionné" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Un groupe de champ a été exporté." +msgstr[1] "%s groupes de champs ont été exportés." + +# @ default +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Sélectionnez les groupes de champs" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Sélectionnez les groupes de champs que vous souhaitez exporter puis " +"choisissez la méthode d'export. Utilisez le bouton « télécharger » pour " +"exporter un fichier JSON que vous pourrez importer dans une autre " +"installation ACF. Utilisez le « générer » pour exporter le code PHP que vous " +"pourrez ajouter à votre thème." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Exporter le fichier" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Le code suivant peut être utilisé pour enregistrer une version locale du/des " +"groupe(s) de champs sélectionné(s). Un groupe de champ local apporte de " +"nombreux bénéfices comme des temps de chargement plus rapide, la gestion de " +"versions, ou des champs/paramètres dynamiques. Copiez-collez le code suivant " +"dans le fichier functions.php de votre thème ou incluez-le depuis un autre " +"fichier." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Copier dans le presse-papiers" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Copié" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Importer les groupes de champs" + +#: includes/admin/tools/class-acf-admin-tool-import.php:47 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Sélectionnez le fichier JSON ACF que vous souhaitez importer et cliquez sur " +"« Importer ». ACF importera les groupes de champs." + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:52 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Sélectionner un fichier" + +#: includes/admin/tools/class-acf-admin-tool-import.php:62 +msgid "Import File" +msgstr "Importer le fichier" + +# @ acf +#: includes/admin/tools/class-acf-admin-tool-import.php:85 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Aucun fichier sélectionné" + +#: includes/admin/tools/class-acf-admin-tool-import.php:93 +msgid "Error uploading file. Please try again" +msgstr "Échec de l'import du fichier. Merci d’essayer à nouveau" + +#: includes/admin/tools/class-acf-admin-tool-import.php:98 +msgid "Incorrect file type" +msgstr "Type de fichier incorrect" + +#: includes/admin/tools/class-acf-admin-tool-import.php:107 +msgid "Import file empty" +msgstr "Le fichier à importer est vide" + +#: includes/admin/tools/class-acf-admin-tool-import.php:138 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Un groupe de champs importé" +msgstr[1] "%s groupes de champs importés" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "Logique conditionnelle" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Montrer ce champ si" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "et" + +# @ acf +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Ajouter une règle" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:410 +#: pro/fields/class-acf-field-repeater.php:299 +msgid "Drag to reorder" +msgstr "Faites glisser pour réorganiser" + +# @ acf +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Modifier ce champ" + +# @ acf +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:138 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:361 +msgid "Edit" +msgstr "Modifier" + +# @ acf +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Dupliquer ce champ" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Déplacer le champ dans un autre groupe" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Déplacer" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Supprimer ce champ" + +# @ acf +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete" +msgstr "Supprimer" + +# @ acf +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Titre du champ" + +# @ acf +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Ce nom apparaîtra sur la page d‘édition" + +# @ acf +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Nom du champ" + +# @ acf +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Un seul mot, sans espace. Les « _ » et « - » sont autorisés" + +# @ acf +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Type de champ" + +# @ acf +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Instructions" + +# @ acf +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instructions pour les auteurs. Affichées lors de la saisie du contenu" + +# @ acf +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Requis ?" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Attributs du conteneur" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "largeur" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "classe" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "id" + +# @ acf +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Fermer le champ" + +# @ acf +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Ordre" + +# @ acf +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Intitulé" + +# @ acf +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Name" +msgstr "Nom" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Identifiant" + +# @ acf +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Type" + +# @ acf +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Aucun champ. Cliquez sur le bouton + Ajouter un champ pour " +"créer votre premier champ." + +# @ acf +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Ajouter un champ" + +# @ acf +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Règles" + +# @ acf +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Créez une série de règles pour déterminer les écrans sur lesquels ce groupe " +"de champs sera utilisé" + +# @ acf +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Style" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standard (boîte WP)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Sans contour (directement dans la page)" + +# @ acf +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Position" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Haute (après le titre)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (après le contenu)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Sur le côté" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Emplacement de l'intitulé" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Aligné en haut" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Aligné à gauche" + +# @ acf +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Emplacement des instructions" + +# @ acf +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Sous les intitulés" + +# @ acf +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Sous les champs" + +# @ acf +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Ordre" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "" +"Le groupe de champs qui a l’ordre le plus petit sera affiché en premier" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Affiché dans la liste des groupes de champs" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "Permalien" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "Éditeur de contenu" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Extrait" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Discussion" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Commentaires" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Révisions" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Identifiant (slug)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Auteur" + +# @ acf +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Format" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Attributs de page" + +# @ acf +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "Image à la Une" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Catégories" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Mots-clés" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Envoyer des rétroliens" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Masquer" + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Sélectionnez les champs que vous souhaitez masquer sur la page " +"d‘édition." + +# @ acf +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Si plusieurs groupes ACF sont présents sur une page d‘édition, le groupe " +"portant le numéro le plus bas sera affiché en premier" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Les sites suivants nécessites une mise à niveau de la base de données. " +"Sélectionnez ceux que vous voulez mettre à jour et cliquez sur %s." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Mettre à niveau les sites" + +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Site" + +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Le site requiert une mise à niveau de la base données de %s à %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "Le site est à jour" + +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Mise à niveau de la base de données effectuée. Retourner au " +"panneau d'administration du réseau" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "Merci de sélectionner au moins un site à mettre à niveau." + +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Il est fortement recommandé de faire une sauvegarde de votre base de données " +"avant de continuer. Êtes-vous sûr de vouloir lancer la mise à niveau " +"maintenant ?" + +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Migration des données vers la version %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Mise à niveau terminée." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Mise à niveau échouée." + +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "Lecture des instructions de mise à niveau…" + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "" +"Mise à niveau de la base de données terminée. Consulter les " +"nouveautés" + +# @ acf +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:32 +msgid "No updates available." +msgstr "Aucune mise-à-jour disponible." + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "Retour aux outils" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Montrer ce groupe si" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Répéteur" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Contenu flexible" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerie" + +# @ acf +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Page d‘options" + +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Mise-à-jour de la base de données nécessaire" + +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Merci d'avoir mis-à-jour %s v%s !" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "" +"Cette version contient des améliorations de la base de données et nécessite " +"une mise à niveau." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "" +"Veuillez également vérifier que tous les modules d’extension premium (%s) " +"soient à jour à leur dernière version disponible." + +# @ acf +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Modules d’extension" + +# @ acf +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Télécharger & installer" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Installé" + +# @ acf +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Bienvenue sur Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Merci d'avoir mis à jour ! ACF %s est plus performant que jamais. Nous " +"espérons que vous l'apprécierez." + +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Une expérience plus fluide" + +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "Convivialité améliorée" + +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"ACF inclue désormais la librairie populaire Select2, qui améliore " +"l'ergonomie et la vitesse sur plusieurs types de champs dont l'objet " +"article, lien vers page, taxonomie, et sélection." + +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "Design amélioré" + +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Plusieurs champs ont reçu une refonte graphique pour qu'ACF apparaisse sous " +"son plus beau jour ! Les améliorations sont notamment visibles sur la " +"galerie, le champ relationnel et le petit nouveau : oEmbed (champ de contenu " +"embarqué) !" + +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "Données améliorées" + +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"L'architecture des données a été complètement revue et permet dorénavant aux " +"sous-champs de vivre indépendamment de leurs parents. Cela permet de " +"déplacer les champs en dehors de leurs parents !" + +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Au revoir modules d’extension. Bonjour ACF Pro" + +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "Découvrez ACF PRO" + +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Nous avons changé la façon dont les fonctionnalités premium sont délivrées !" + +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Les 4 modules d’extension premium (répéteur, galerie, contenu flexible et " +"pages d'options) ont été combinés en une toute nouvelle version PRO d'ACF. Avec des licences personnelles et développeur " +"disponibles, les fonctionnalités premium sont encore plus accessibles que " +"jamais !" + +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Nouvelles fonctionnalités surpuissantes" + +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO contient de nouvelles super fonctionnalités telles que les champs " +"répéteurs, les dispositions flexibles, une superbe galerie et la possibilité " +"de créer des pages d'options !" + +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "" +"En savoir plus à propos des fonctionnalités d’ACF PRO." + +# @ wp3i +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Mise à niveau facile" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" +"La mise à niveau vers ACF PRO est facile. Achetez simplement une licence en " +"ligne et téléchargez l'extension !" + +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" +"Nous avons également écrit un guide de mise à niveau pour " +"répondre aux questions habituelles, mais si vous avez une question " +"spécifique, veuillez contacter notre équipe de support via le support technique." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Nouvelles Fonctionnalités" + +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "Champ Lien" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"Le champ Lien permet de sélectionner ou définir un lien en toute simplicité " +"(URL, titre, cible)." + +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Champ Groupe" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "" +"Le champ Groupe permet de créer un groupe de champs en toute simplicité." + +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "Champ de Contenu Embarqué (oEmbed)" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" +"Le champ oEmbed vous permet d'embarquer des vidéos, des images, des tweets, " +"de l'audio ou encore d'autres médias en toute simplicité." + +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Champ Clone" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "" +"Le champ Clone vous permet de sélectionner et afficher des champs existants." + +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "Plus d'AJAX" + +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "" +"Plus de champs utilisent maintenant la recherche via AJAX afin d'améliorer " +"le temps de chargement des pages." + +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "JSON Local" + +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"La nouvelle fonctionnalité d'export automatique en JSON améliore la rapidité " +"et simplifie la synchronisation." + +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Import / Export Facile" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "" +"Les imports et exports de données d'ACF sont encore plus simples à réaliser " +"via notre nouvelle page d'outils." + +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "Nouveaux Emplacements de Champs" + +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" +"Les champs peuvent désormais être intégrés dans les menus, éléments de menu, " +"commentaires, widgets et tous les formulaires utilisateurs !" + +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Encore plus de Personnalisation" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" +"De nouveaux filtres et actions PHP (et JS) ont été ajoutés afin de vous " +"permettre plus de personnalisation." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Interface Améliorée" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "" +"Toute l'extension a été améliorée et inclut de nouveaux types de champs, " +"réglages ainsi qu'un nouveau design !" + +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Nouveaux Paramètres" + +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" +"De nouveaux réglages font leur apparition pour Actif, Emplacement du Label, " +"Emplacement des Instructions et Description." + +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "De meilleurs formulaires côté public" + +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"acf_form() peut maintenant créer un nouvel article lors de la soumission et " +"propose de nombreux réglages." + +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Meilleure validation" + +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "" +"La validation des formulaires est maintenant faite via PHP + AJAX au lieu " +"d'être seulement faite en JS." + +# @ acf +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Champs amovibles" + +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"La nouvelle fonctionnalité de Groupe de Champ vous permet de déplacer un " +"champ entre différents groupes et parents." + +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Nous pensons que vous allez adorer les nouveautés de la version %s." + +#: includes/api/api-helpers.php:1049 +msgid "Thumbnail" +msgstr "Miniature" + +#: includes/api/api-helpers.php:1050 +msgid "Medium" +msgstr "Moyen" + +#: includes/api/api-helpers.php:1051 +msgid "Large" +msgstr "Grande" + +#: includes/api/api-helpers.php:1100 +msgid "Full Size" +msgstr "Taille originale" + +# @ acf +#: includes/api/api-helpers.php:1821 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(sans titre)" + +#: includes/api/api-helpers.php:3792 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "L'image doit mesurer au moins %dpx de largeur." + +#: includes/api/api-helpers.php:3797 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "L'image ne doit pas dépasser %dpx de largeur." + +#: includes/api/api-helpers.php:3813 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "L'image doit mesurer au moins %dpx de hauteur." + +#: includes/api/api-helpers.php:3818 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "L'image ne doit pas dépasser %dpx de hauteur." + +#: includes/api/api-helpers.php:3836 +#, php-format +msgid "File size must be at least %s." +msgstr "Le poids de l'image doit être d'au moins %s." + +#: includes/api/api-helpers.php:3841 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Le poids de l'image ne doit pas dépasser %s." + +# @ acf +#: includes/api/api-helpers.php:3875 +#, php-format +msgid "File type must be %s." +msgstr "Le type de fichier doit être %s." + +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "Les modifications seront perdues si vous quittez cette page" + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Choisir" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "Modifier" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "Mettre à jour" + +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "Lié(s) à cet article" + +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "Afficher les détails" + +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "Masquer les détails" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "Limité" + +# @ acf +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:66 +msgid "All images" +msgstr "Toutes les images" + +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "Validé avec succès" + +#: includes/assets.php:182 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Échec de la validation" + +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "1 champ requiert votre attention" + +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "%d champs requièrent votre attention" + +# @ acf +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "Êtes-vous sûr(e) ?" + +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Oui" + +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Non" + +# @ acf +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:140 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:362 +#: pro/fields/class-acf-field-gallery.php:499 +msgid "Remove" +msgstr "Enlever" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "Annuler" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "A n'importe quelle valeur" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "N'a pas de valeur" + +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "La valeur est égale à" + +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "La valeur est différente de" + +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "La valeur correspond au modèle" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "La valeur contient" + +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "La valeur est supérieure à" + +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "La valeur est inférieure à" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "La sélection est supérieure à" + +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "La sélection est inférieure à" + +# @ acf +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "Modifier le groupe de champs" + +# @ acf +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Ce type de champ n‘existe pas" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Inconnu" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "Commun" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Contenu" + +# @ acf +#: includes/fields.php:351 +msgid "Choice" +msgstr "Choix" + +# @ acf +#: includes/fields.php:352 +msgid "Relational" +msgstr "Relationnel" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +# @ acf +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:553 +#: pro/fields/class-acf-field-flexible-content.php:602 +#: pro/fields/class-acf-field-repeater.php:448 +msgid "Layout" +msgstr "Mise en page" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Accordéon" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Ouvert" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Ouvrir l'accordéon au chargement de la page." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Ouverture multiple" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Permettre à cet accordéon de s'ouvrir sans refermer les autres." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Extrémité" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Définir comme extrémité de l’accordéon précédent. Cet accordéon ne sera pas " +"visible." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Groupe de boutons" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "Choix" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "Indiquez une valeur par ligne." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Pour plus de contrôle, vous pouvez spécifier la valeur et le label de cette " +"manière :" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "rouge : Rouge" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "Autoriser une valeur vide ?" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:95 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "Valeur par défaut" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:96 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "Valeur donnée lors de la création d’un nouvel article" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Horizontal" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Vertical" + +# @ acf +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Valeur renvoyée" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Spécifier la valeur retournée dans le code" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "Valeur" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "Les deux (tableau)" + +# @ acf +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "Case à cocher" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Tout (dé)sélectionner" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Ajouter un choix" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Autoriser une valeur personnalisée" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Permettre l’ajout de valeurs personnalisées" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Enregistrer les valeurs personnalisées" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Enregistrer les valeurs personnalisées dans les choix du champs" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "Entrez chaque valeur par défaut sur une nouvelle ligne" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Tout (dé)sélectionner" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" +"Ajouter une case à cocher au début pour tout sélectionner/désélectionner" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Sélecteur de couleur" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Effacer" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Valeur par défaut" + +# @ acf +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Choisir une couleur" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Couleur actuelle" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Sélecteur de date" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Valider" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Aujourd’hui" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Suiv." + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Préc." + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Sem." + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Format d’affichage" + +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Format affiché lors de l’édition d’un article" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Personnalisé :" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "Enregistrer le format" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "Le format enregistré" + +# @ acf +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-image.php:204 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +#: pro/fields/class-acf-field-gallery.php:578 +msgid "Return Format" +msgstr "Format de retour" + +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Valeur retournée dans le code" + +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "La semaine commencent le" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Sélecteur de date et heure" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Choisir l’heure" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Heure" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Heure" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minute" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Seconde" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milliseconde" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Microseconde" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Fuseau horaire" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Maintenant" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Valider" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Sélectionner" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "e-mail" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:104 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Texte indicatif" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:105 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Apparait dans le champ" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:113 +msgid "Prepend" +msgstr "Préfixe" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:114 +msgid "Appears before the input" +msgstr "Apparait avant le champ" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:122 +msgid "Append" +msgstr "Suffixe" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:123 +msgid "Appears after the input" +msgstr "Apparait après le champ" + +# @ acf +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Modifier le fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Mettre à jour le fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Nom du fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:264 +#: includes/fields/class-acf-field-image.php:293 +#: pro/fields/class-acf-field-gallery.php:663 +#: pro/fields/class-acf-field-gallery.php:692 +msgid "File size" +msgstr "Taille du fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Ajouter un fichier" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Données du fichier (tableau)" + +# @ acf +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "URL du fichier" + +# @ acf +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "ID du Fichier" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:229 +#: pro/fields/class-acf-field-gallery.php:613 +msgid "Library" +msgstr "Médias" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:614 +msgid "Limit the media library choice" +msgstr "Limiter le choix dans la médiathèque" + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:235 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:619 +#: pro/locations/class-acf-location-block.php:79 +msgid "All" +msgstr "Tous" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:236 +#: pro/fields/class-acf-field-gallery.php:620 +msgid "Uploaded to post" +msgstr "Liés à cet article" + +# @ acf +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:243 +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum" +msgstr "Minimum" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "Restreindre l'import de fichiers" + +# @ acf +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:272 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Maximum" +msgstr "Maximum" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:301 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Allowed file types" +msgstr "Types de fichiers autorisés" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:700 +msgid "Comma separated list. Leave blank for all types" +msgstr "" +"Extensions autorisées séparées par une virgule. Laissez vide pour autoriser " +"toutes les extensions" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google Map" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Désolé, ce navigateur ne prend pas en charge la géolocalisation" + +# @ acf +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "Effacer la position" + +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "Trouver l'emplacement actuel" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "Chercher une adresse…" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "Centre" + +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "Position initiale du centre de la carte" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "Niveau de zoom initial" + +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:255 +#: includes/fields/class-acf-field-image.php:284 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:654 +#: pro/fields/class-acf-field-gallery.php:683 +msgid "Height" +msgstr "Hauteur" + +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "Hauteur de la carte" + +# @ acf +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Groupe" + +# @ acf +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:384 +msgid "Sub Fields" +msgstr "Sous-champs" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Style utilisé pour générer les champs sélectionnés" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:456 +#: pro/locations/class-acf-location-block.php:27 +msgid "Block" +msgstr "Bloc" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:455 +msgid "Table" +msgstr "Tableau" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:614 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Row" +msgstr "Rangée" + +# @ acf +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Image" + +# acf +#: includes/fields/class-acf-field-image.php:63 +msgid "Select Image" +msgstr "Sélectionner une image" + +# @ acf +#: includes/fields/class-acf-field-image.php:64 +msgid "Edit Image" +msgstr "Modifier l'image" + +# @ acf +#: includes/fields/class-acf-field-image.php:65 +msgid "Update Image" +msgstr "Mettre à jour" + +# @ acf +#: includes/fields/class-acf-field-image.php:156 +msgid "No image selected" +msgstr "Aucune image sélectionnée" + +# @ acf +#: includes/fields/class-acf-field-image.php:156 +msgid "Add Image" +msgstr "Ajouter une image" + +# @ acf +#: includes/fields/class-acf-field-image.php:210 +#: pro/fields/class-acf-field-gallery.php:584 +msgid "Image Array" +msgstr "Données de l'image (tableau)" + +# @ acf +#: includes/fields/class-acf-field-image.php:211 +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Image URL" +msgstr "URL de l‘image" + +# @ acf +#: includes/fields/class-acf-field-image.php:212 +#: pro/fields/class-acf-field-gallery.php:586 +msgid "Image ID" +msgstr "ID de l‘image" + +# @ acf +#: includes/fields/class-acf-field-image.php:219 +#: pro/fields/class-acf-field-gallery.php:592 +msgid "Preview Size" +msgstr "Taille de prévisualisation" + +#: includes/fields/class-acf-field-image.php:244 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:643 +#: pro/fields/class-acf-field-gallery.php:672 +msgid "Restrict which images can be uploaded" +msgstr "Restreindre les images envoyées" + +#: includes/fields/class-acf-field-image.php:247 +#: includes/fields/class-acf-field-image.php:276 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:646 +#: pro/fields/class-acf-field-gallery.php:675 +msgid "Width" +msgstr "Largeur" + +# @ acf +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Lien" + +# @ acf +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Sélectionner un lien" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Ouvrir dans un nouvel onglet/fenêtre" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Tableau de données" + +# @ acf +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "URL du Lien" + +# @ acf +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Message" + +# @ acf +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Nouvelles lignes" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Comment sont interprétés les sauts de lignes" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Ajouter des paragraphes automatiquement" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Ajouter <br> automatiquement" + +# @ acf +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Pas de formatage" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Afficher le code HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Permettre l'affichage du code HTML à l'écran au lieu de l'interpréter" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Nombre" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "Valeur minimale" + +# @ acf +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "Valeur maximale" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Pas" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "La valeur doit être un nombre" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "La valeur doit être être supérieure ou égale à %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "La valeur doit être inférieure ou égale à %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "Entrez l'URL" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Dimensions" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Lien vers page ou article" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archives" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Parent" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "Filtrer par type de publication" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "Tous les types de publication" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "Filtrer par taxonomie" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "Toutes les taxonomies" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Afficher les pages d’archives" + +# @ acf +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "Autoriser la sélection multiple ?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Mot de passe" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "Objet Article" + +# @ acf +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "ID de l'article" + +# @ acf +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Bouton radio" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Autre" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Ajouter un choix « autre » pour autoriser une valeur personnalisée" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Enregistrer la valeur personnalisée" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Enregistrer les valeurs personnalisées « autre » en tant que choix" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Plage de valeurs" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Relation" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "Nombre maximal de valeurs atteint ({max} valeurs)" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "Chargement en cours" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Aucun résultat" + +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "Choisissez le type de publication" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "Choisissez la taxonomie" + +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "Rechercher…" + +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "Filtres" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Type de publication" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taxonomie" + +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "Éléments" + +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "Les éléments sélectionnés seront affichés dans chaque résultat" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "Minimum d'articles sélectionnables" + +# @ acf +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "Maximum d'articles sélectionnables" + +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s requiert au moins %s sélection" +msgstr[1] "%s requiert au moins %s sélections" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Sélection" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Un résultat est disponible, appuyez sur Entrée pour le sélectionner." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"%d résultats sont disponibles, utilisez les flèches haut et bas pour " +"naviguer parmi les résultats." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Aucun résultat trouvé" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Veuillez saisir au minimum 1 caractère" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Veuillez saisir au minimum %d caractères" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Veuillez retirer 1 caractère" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Veuillez retirer %d caractères" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Vous ne pouvez sélectionner qu’un seul élément" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Vous ne pouvez sélectionner que %d éléments" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Chargement de résultats supplémentaires…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Recherche en cours…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Échec du chargement" + +# @ acf +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Interface stylisée" + +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "Utiliser AJAX pour charger les choix dynamiquement ?" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "Définit la valeur retournée" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Séparateur" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Onglet" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Emplacement" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Définit une extrémité pour fermer les précédents onglets. Cela va commencer " +"un nouveau groupe d'onglets." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Pas de %s" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Choisissez la taxonomie à afficher" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Apparence" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Apparence de ce champ" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Valeurs multiples" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Sélecteur multiple" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Valeur unique" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Boutons radio" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Créer des termes" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Autoriser la création de nouveaux termes pendant l'édition" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Enregistrer les termes" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "Lier les termes sélectionnés à l'article" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Charger les termes" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Charger une valeur depuis les termes de l’article" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Objet Terme" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "ID du terme" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "Utilisateur incapable d'ajouter un nouveau %s" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s existe déjà" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s ajouté" + +# @ acf +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Ajouter" + +# @ acf +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Texte" + +#: includes/fields/class-acf-field-text.php:131 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Limite de caractères" + +#: includes/fields/class-acf-field-text.php:132 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Laisser vide ne pas donner de limite" + +#: includes/fields/class-acf-field-text.php:157 +#: includes/fields/class-acf-field-textarea.php:215 +#, php-format +msgid "Value must not exceed %d characters" +msgstr "La valeur ne doit pas dépasser %d caractères" + +# @ acf +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Zone de texte" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Lignes" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Hauteur du champ" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Sélecteur d’heure" + +# @ acf +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Oui / Non" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Affiche le texte à côté de la case à cocher" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Texte côté « Actif »" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Text affiché lorsque le bouton est actif" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Texte côté « Inactif »" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Texte affiché lorsque le bouton est désactivé" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "URL" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "La valeur doit être une URL valide" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Utilisateur" + +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "Filtrer par rôle" + +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "Tous les rôles utilisateurs" + +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "Tableau" + +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "Objet" + +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "ID de l'utilisateur" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Éditeur WYSIWYG" + +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Visuel" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Texte" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "Cliquez pour initialiser TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "Onglets" + +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Visuel & Texte brut" + +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Visuel seulement" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Texte brut seulement" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "Barre d‘outils" + +# @ acf +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "Afficher les boutons d‘ajout de médias ?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "Retarder l’initialisation ?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "" +"TinyMCE ne sera pas initialisé avant que l’utilisateur clique sur le champ" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Valider l’e-mail" + +# @ acf +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:531 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Mise à jour" + +# @ acf +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Article mis à jour" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Spam repéré" + +#: includes/forms/form-user.php:336 +#, php-format +msgid "ERROR: %s" +msgstr "ERREUR : %s" + +# @ acf +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Article" + +# @ acf +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Page" + +# @ acf +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulaires" + +#: includes/locations.php:243 +msgid "is equal to" +msgstr "est égal à" + +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "n‘est pas égal à" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Fichier attaché" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Tous les formats %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Commentaire" + +# @ acf +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Rôle de l’utilisateur courant" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Administrateur" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Utilisateur courant" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Connecté" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Est dans le site" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Est dans l’interface d’administration" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Élément de menu" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menu" + +# @ acf +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Emplacement de menu" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menus" + +# @ acf +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Page parente" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Modèle de page" + +# @ acf +#: includes/locations/class-acf-location-page-template.php:87 +#: includes/locations/class-acf-location-post-template.php:134 +msgid "Default Template" +msgstr "Modèle de base" + +# @ acf +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Type de page" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Page d’accueil" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Page des articles" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Page de haut niveau (sans parent)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Page parente (avec page(s) enfant)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Page enfant (avec parent)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Catégorie" + +# @ acf +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Format d‘article" + +# @ acf +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Statut de l’article" + +# @ acf +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taxonomie" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Modèle d’article" + +# @ acf +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Formulaire utilisateur" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Ajouter / Modifier" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Inscription" + +# @ acf +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Rôle utilisateur" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +# @ default +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "La valeur %s est requise" + +# @ acf +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "Publier" + +# @ default +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Aucun groupe de champs trouvé pour cette page d’options. Créer un groupe de champs" + +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr "Erreur. Impossible de joindre le serveur" + +# @ acf +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Mises-à-jour" + +#: pro/admin/admin-updates.php:191 +msgid "" +"Error. Could not authenticate update package. Please check again or " +"deactivate and reactivate your ACF PRO license." +msgstr "" +"Erreur. Impossible d'authentifier la mise-à-jour. Merci d'essayer à " +"nouveau et si le problème persiste, désactivez et réactivez votre licence " +"ACF PRO." + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Désactiver la licence" + +# @ acf +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Activer votre licence" + +# @ acf +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Informations sur la licence" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Pour débloquer les mises-à-jour, veuillez entrer votre clé de licence ci-" +"dessous. Si vous n’en avez pas, rendez-vous sur nos détails & tarifs." + +# @ acf +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Code de licence" + +# @ acf +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Informations concernant les mises-à-jour" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Version installée" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Version disponible" + +# @ acf +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Mise-à-jour disponible" + +# @ acf +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Mettre-à-jour l’extension" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Entrez votre clé de licence ci-dessus pour activer les mises-à-jour" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Vérifier à nouveau" + +# @ wp3i +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Informations de mise-à-niveau" + +#: pro/blocks.php:371 +msgid "Switch to Edit" +msgstr "Passer en Édition" + +#: pro/blocks.php:372 +msgid "Switch to Preview" +msgstr "Passer en Prévisualisation" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Clone" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Sélectionnez un ou plusieurs champs à cloner" + +# @ acf +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Format d'affichage" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Définit le style utilisé pour générer le champ dupliqué" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Groupe (affiche les champs sélectionnés dans un groupe à l’intérieur de ce " +"champ)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Remplace ce champ par les champs sélectionnés" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Les labels seront affichés en tant que %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Préfixer les labels de champs" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Les valeurs seront enregistrées en tant que %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Préfixer les noms de champs" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Champ inconnu" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Groupe de champ inconnu" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Tous les champs du groupe %s" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:468 +msgid "Add Row" +msgstr "Ajouter un élément" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:924 +#: pro/fields/class-acf-field-flexible-content.php:1006 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "mise-en-forme" +msgstr[1] "mises-en-forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "mises-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:923 +#: pro/fields/class-acf-field-flexible-content.php:1005 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Ce champ requiert au moins {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Ce champ a une limite de {max} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} disponible (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} requis (min {min})" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Le contenu flexible nécessite au moins une mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:287 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "" +"Cliquez sur le bouton « %s » ci-dessous pour créer votre première mise-en-" +"forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:413 +msgid "Add layout" +msgstr "Ajouter une mise-en-forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:414 +msgid "Remove layout" +msgstr "Retirer la mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:415 +#: pro/fields/class-acf-field-repeater.php:301 +msgid "Click to toggle" +msgstr "Cliquer pour intervertir" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder Layout" +msgstr "Réorganiser la mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder" +msgstr "Réorganiser" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete Layout" +msgstr "Supprimer la mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate Layout" +msgstr "Dupliquer la mise-en-forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New Layout" +msgstr "Ajouter une nouvelle mise-en-forme" + +#: pro/fields/class-acf-field-flexible-content.php:629 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:642 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:669 +#: pro/fields/class-acf-field-repeater.php:464 +msgid "Button Label" +msgstr "Intitulé du bouton" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:678 +msgid "Minimum Layouts" +msgstr "Nombre minimum de mises-en-forme" + +# @ acf +#: pro/fields/class-acf-field-flexible-content.php:687 +msgid "Maximum Layouts" +msgstr "Nombre maximum de mises-en-forme" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:73 +msgid "Add Image to Gallery" +msgstr "Ajouter l'image à la galerie" + +#: pro/fields/class-acf-field-gallery.php:74 +msgid "Maximum selection reached" +msgstr "Nombre de sélections maximales atteint" + +#: pro/fields/class-acf-field-gallery.php:340 +msgid "Length" +msgstr "Longueur" + +#: pro/fields/class-acf-field-gallery.php:383 +msgid "Caption" +msgstr "Légende" + +#: pro/fields/class-acf-field-gallery.php:392 +msgid "Alt Text" +msgstr "Texte alternatif" + +#: pro/fields/class-acf-field-gallery.php:508 +msgid "Add to gallery" +msgstr "Ajouter à la galerie" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:512 +msgid "Bulk actions" +msgstr "Actions de groupe" + +#: pro/fields/class-acf-field-gallery.php:513 +msgid "Sort by date uploaded" +msgstr "Ranger par date d'import" + +#: pro/fields/class-acf-field-gallery.php:514 +msgid "Sort by date modified" +msgstr "Ranger par date de modification" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:515 +msgid "Sort by title" +msgstr "Ranger par titre" + +#: pro/fields/class-acf-field-gallery.php:516 +msgid "Reverse current order" +msgstr "Inverser l'ordre actuel" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:528 +msgid "Close" +msgstr "Fermer" + +#: pro/fields/class-acf-field-gallery.php:601 +msgid "Insert" +msgstr "Insérer" + +#: pro/fields/class-acf-field-gallery.php:602 +msgid "Specify where new attachments are added" +msgstr "Définir où les nouveaux fichiers attachés sont ajoutés" + +#: pro/fields/class-acf-field-gallery.php:606 +msgid "Append to the end" +msgstr "Ajouter à la fin" + +#: pro/fields/class-acf-field-gallery.php:607 +msgid "Prepend to the beginning" +msgstr "Insérer au début" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:626 +msgid "Minimum Selection" +msgstr "Nombre minimum" + +# @ acf +#: pro/fields/class-acf-field-gallery.php:634 +msgid "Maximum Selection" +msgstr "Nombre maximum" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:661 +msgid "Minimum rows reached ({min} rows)" +msgstr "Nombre minimal d'éléments atteint ({min} éléments)" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "Nombre maximal d'éléments atteint ({max} éléments)" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:338 +msgid "Add row" +msgstr "Ajouter un élément" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:339 +msgid "Remove row" +msgstr "Retirer l'élément" + +#: pro/fields/class-acf-field-repeater.php:417 +msgid "Collapsed" +msgstr "Replié" + +#: pro/fields/class-acf-field-repeater.php:418 +msgid "Select a sub field to show when row is collapsed" +msgstr "Choisir un sous champ à afficher lorsque l’élément est replié" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:428 +msgid "Minimum Rows" +msgstr "Nombre minimal d'éléments" + +# @ acf +#: pro/fields/class-acf-field-repeater.php:438 +msgid "Maximum Rows" +msgstr "Nombre maximal d'éléments" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Aucune page d'option n’existe" + +# @ acf +#: pro/options-page.php:51 +msgid "Options" +msgstr "Options" + +# @ acf +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Options mises à jours" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Pour activer les mises-à-jour, veuillez entrer votre clé de licence sur la " +"page Mises-à-jour. Si vous n’en avez pas, rendez-vous sur " +"nos détails & tarifs." + +#: tests/basic/test-blocks.php:116 +msgid "My Test Block" +msgstr "Mon bloc de test" + +#: tests/basic/test-blocks.php:117 +msgid "A block for entering a link name and a custom URL." +msgstr "Un bloc pour saisir un nom de lien et une URL." + +# @ acf +#: tests/basic/test-blocks.php:125 +msgid "Normal" +msgstr "Normal" + +#: tests/basic/test-blocks.php:126 +msgid "Fancy" +msgstr "Fantaisie" + +#: tests/basic/test-blocks.php:135 +msgid "Block :: My Test Block" +msgstr "Block :: Mon bloc de test" + +#: tests/basic/test-blocks.php:155 +msgid "URL" +msgstr "URL" + +#. Plugin URI of the plugin/theme +#. Author URI of the plugin/theme +msgid "https://www.advancedcustomfields.com" +msgstr "https://www.advancedcustomfields.com" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-he_IL.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-he_IL.mo new file mode 100644 index 0000000000000000000000000000000000000000..d3d4f6e1080b97b5d5893c625bbb9c95523f327c GIT binary patch literal 41502 zcmb8131FR7mB&AJEISAY2!1V=HqfLCtDzLSLb0W_X(^ysUXqvO(US0>_;h@~;EOksbga1V0R32wr_w6der?fd_-z!G+*IgU#T7fn&g?Nl|nt zcnwcM*a;p7R=^{{+q`@TR6mc0$B`zFsn z+i?acdd&w#=Ovzh6{z|hU<~$xXMpc^{0J!eJOgUIe*m?fzk!;^f#-&K9S7=sOaPTX z3)DET0Y#7Hpy<;9iY|Sgf1{`0=6E;wQpz`j>hD92UjxN=&x4}d-#!1>^H>Y%W>Dp~ zfI1)df~SHX2G!rUKv*F9IjDU;>HM&sv%#69TS3wDCQ$Qx6R35*6BOMBLD7FRsPR7t zYMoyMRqxy2@!->-_TdHaEO7q|qG&eQ0$vPOK+*9-py=}nP~&|D)IR(RsQ$hKYTnO) zqQeWI>K)EuQTr1?jei=b`80znzXVjjuLec;*MOS;wV?X%0@c0`Yynq;TGw{)81R!I zA|v`LC_eogD83xi8pb&pRDaFjYrylst>EpT`Z*IJE;`NtHQsDcbXf@6{)4bi)Ca2m zd%(5eCqT*7v!{popATx>i#)v$)Oy=M&A%Od8CU?-@2#GHCn);e18V(SK&h_Xp8q%~ zI(-w=I-YU-DL72}x1i>6C(26WuLITp1EA>h5GcBQ-timYSkljeCxOun&H!*SI1QWy zYQFuT=5-UO{@((s|Jyd z9DNrQeV+F8PeJwfD^T_R!^@*NfnH-k&Hn^Y?Oq9LJ}sU<9~9p$_wwsN&Hs8&-w2*d z`mNw3@DWh;p9c>FUjWtrA3^QUfpf$Bj|P=~nd2)#)tdrp9y36#?=nz)vJ4d8TnB3X z6)(R5Jb?7uJpT^QUk9qcVNiVieo*`MV{ixfS5WiZHZS!5UQpwG6qJ1W0(da^B&dFV z0BRn;0yX|0LGkndfa>RnOT)ZRaEw88n0X6@dK+)?K@F4K5 z;F;hZpvL_usP>-&4+cj-$)jgMjq^J%k1q3hfa34i(~CgO<7!atxK@J{fn;F0@br_K-bTzPpY-vWwX-VchtkAsJT&w2i@JpbTV2fDrjl-!vH zs{R5{bj*WVe+|?;*Mg|N=r+%P6cpV)4^9D}0!5E83j)TV=x`o50i5IcMNss*6%@VS z4vN0(z{9`|;27{do_+{Cg!HFC>9a3_n%7gH=J_lrI{gOJz8$nM^!E}_^^S6UDJVLe z1Rep71J&;oP~%0R10F;A6j1G(LGjgWP<(j} zD0`}i2B^?x1Iyq*HJu3v&jfG>br*WbYhz{8e>_8$PXo)J*%_#vo${Vk~e zj=nPVa|$Rrj008gTu|$p18NsP)8KL7@4@52Lso?Q`l+Dy`w~#{W(ha}T$|{L?8mtPpCbL?T$uN}+e81mz;Wb%2^63G!t)R42<0(2h5U;= zT>`~-cYx}D5Y&Eb1U0|+dHH9-vq(PQh#2Puj^4T>MmC0O@w45<1)0yU5S2DSb} zuMhK>04o1g;Gy6gPcH=3?^U42FFD=@s{IzQ349b3oqq25{|Rb+$E}3l!118yGZ!2K zE(1mH>p=BW^Yl7U!KMRVle+6nj`xnD`KN*}$`ZeGT@Lo{-@+5c| z_!m&)9@HD!9Sv&SiQp^2OF@lW1hvn%f|}pkJ%6*OA9nmQcm(B7JN^P3OZrdXB=DqC z;J10;>7;u>l@EXuz=uKYd$ihhrP;*T$Z zs{aId6!>E=e*qMq{SDOkCsjlFY*6jmK+W@YU<~$w>UY3#6KMMnjwk<7@GS5rUVc=K zy&`=w7=!Jg#(Oh32OI`Z0e=drpZ)p+-A)9xU+02|%xE_FJotc@zjIZX-)>Ozc^DLb zeHuI*d=k_?{KWHHR&)0yJrC5nUI5kZui)|EL2E+(DWKA?1djt-!P(#yo_{x}_B%nf z{~)M(p90SYzv1Nvt_}L?2vGH7Q1zR@-+||VM}iX&8e0E(;7Q;T$0DeC+y;v8H-YoO zN5C_{{cjBPYXaLymq4xi^Pt9g0#yIs2TuWi0jmFlZVLDcQ2oCORKJTrox6KLSSi}( zdga1 zzt?%X59}v>8>sew10^S3`cK^9!E3<9;FI7j-~@i%3ho3o&RK85M+!~>CxXM^WbkqD zW#C`HSAfUTNatZ1I1`)$s{U=@Tfq;2CxGX^IjnyHsCjpTr-N?+r-3^?{WK^!^mp(y z@Zh(E^mtJFKM6bp-=;1w0mfo2Tys)ov>&I_w5Tug`-z7vBR#x1WL9 zkH3Ob!7)r;<_mcnZ`!f8qFdFF*cmq2H;X`fCLb2Co1$zh$0(9jNv-Q2X)@@O1F2;IF~| z09F47w}<|o2bF#S)PDXARKG{QJ&bcasQe~RUkGX+7lE2@5qt@F6L=_i8>so+399@7 z@MQ2|@C@+lpw|BfQ1y>^M;QME$FblA)K%?c47_ z$FsV5mf&Jpyv4z@Ko>{;G^Jg!BzWV*S$0B^Xcyn^S=%} zi}E$#nc#z<B=8yVZ15#_20pzARQ+qg@!;D*&Fcf;f#B!BqrfkL9pICo?ekrs z-4)<9EWZ`uE^Mu=U<>-@6^Wn)Iag z!EU+@6n{Mmwt{~ICxBBo1i5lGsC87qH-m2k&jA4? zXSagtXDj$J@O_}x`xvNpBjCy4Z#;eI#z4o@K(%iMRc`^P{ciX4?V#wm1yp|@1v%2u zSHP>m#hb#oyTRi~e*{!Nk30Slj7k3iRKF)|4s@9g&LUj}F9AOaYMp-qUkXNBf<1RU zsQo@46hF@cW3U4L8C(Zm0>1P9K##A1r;+{+sQll9hk@q|hkh;rwVp+e-Js6HKY^m> zTfoKO9iDy$6kUJf_*+o({EOrMTSNbcf#SmxLG?2cRJ+Nb__r0*x-JDZ-s?c^V-D1Q zy#Z9e?*K0a*MYOZr@{R|{X9qHm7e%6_^Xf|jU^7-*w4lM{sZAg^4h^Z!k37P2A2~K zC;nydGVoV~4-m$YK8T>7Uk8XzCjVo^ZzTMb_@xB>oCQuHbP=8pS@!!29$)MA?r=QE zQN?tgm)00^1OA#UrRWTFrU!v z`3s3BKOZOl4Zm$Q;tAX7aw`@vk{vlqs7^{r8aO*hc?Oc!KzI z;Gy7K!J9I5-${BaVL$Q?0QJ-Dg5{ta$(u}=N7(JynZ(}#-jd0irviSe-npRUqE<-@MX^EaL zuOnPc_-FD~67+Kd>8nFDy3X-J^7Qk80QP$(zwhz=|XpwcxFU*@UM(uLpdIx7|#93-Nx!zY*U>c#8NcaFf?r1OAZotHBR~KlA)1;x8c_ zMYxZ=HxY`&?+3314fe30-PLWT4+!u5nddYxu)#N*#1|AT}> zJ$)P4u+j zhop;MPwC~vUk5Jmy!V4=lK!-(?^h*$zDc@=@Nh^*U-$A?fkWiIjqokP=SlA*oJRO6 z>1#p#%qP5@_@BUE5Ec>t3fK$Q2>(iWC*f4`E(fFW)wrvWFLuV=m2!Vy+}Yn(EOg{* z`OcO-imLyhEUvCCb@Wuqr9ySIhI^H+$`$+baiJPl@^9!bRPvqC#8Nq~6>7zNQ*>55 zv$Hdvr%6TA+h@$JRLYgSSg6)ivn^kw6ZIVzYWd!(x+A-%(3!W)T2H<=?y8h~V`6c>vrvnx z9hH2()Dq2%OZnAKxvp|0&iA(GJ39-dZcVM0FV*6nTs3Z|u0~~nGvjJ+xlBKmxTC*X zqt8J0{F=UerI0UmvPQ=Wwsa0}Jythz_%YC(ih}M_u&R56UBunMhaW%J!`4nmi`&9F_8q2S0c7;-B zVO62CKUZW4)mmI`zaBbQqnRDG!YcK@pwN*oRavnz5{Rc)`*NkYqnN8!FB;cT?l0BG z&6qg8+BAK#3TAli7q15QOfX7Mh&y`945gK^a%Qcqa`GDwGAC+Jj_0zs7M)ipG9U8h z_p;u4OkG?WsArj163Gu$K{1uPuvcvV|ch)F0tR@sm}bW ze6dUx2hH{wrdX9L6veKS(s^|Cm)LzZ67L}kddro3oaf~WX)@6qX9xQ8nb^K~QbTy8n5sJpe6WMZDsi3)q^Or59a%a9vt8a=|7wE9v zw*Yd~%H4T8u>IAvXB%$OT`#8@P=+srCTzwWwef_Yc=Z7VaQn0!Q31g>LQw)2jA=8$t*&|MI zW0xi5QD0wiZ8Wpe(ZdO3sFIUNRS8{zl)o50(TIh&o*)GLMp}1PhRcdiU#k?_CZgsv|?#-v74aO+ubJctz z&uLdN+19R1_);rC=H`(n&WkOKVTW3(f?+LT8>2)`l$?i7s>O5Rq!#<_lWLw~JYId=V zytdyi??QYzvL5j@oAa0JW25HeYn*h3FBds?iy2M}FZUW}IjR&55e|R6pxh0&kRz>` zpb2D{P}xwv8uu_mY1|@5m1BaWVAY*@nGUmq&dOl|plZ5eiBVJKoq0%!3d_fys0hpxCK?aEz} zV5x9K#`d#xWN#2%E#9Yk5sSkS$dW>LPc51w4KMCr*2l@}%*RU-Yl)J4Lfkodv0sB) zos;j%^%vKkYH{xuQgSpxxFwpzp?Y; zw!#h6*P)J=Em`0(_Ms;+IFJHC7K>k7vK7!a+M76-zzy{xGj$PwBAdjy=+hD}4sx-E z-Ig;^5USCEi7V>KibgJm_KdcsBVXwwxdyYTGfs{qNfF(6H!Pk-?VYE+SbW*yXkM^6 z6HCaNMVZFgc-0fH&aX|PK?sKWSLAy0USlbm(4&6gFec=-5vqD-1x4tZV9%n22Rd8g z@yTGJRbPKQmVJ+IAlc4jsqUH8K`q2Yrwqb9YA1GV-9AG1g_^GQ;r$L{3bS@F)N7S~ z(*US2FKL`We>>9Lu2c>4%HEmwT#Ma>8g5A0rs2-hxF{DrIix+ehS&~Mka9UQBH*S9 zJQBK*K@xYCk(0Vjadk*aoTAmZ18YlmKK2kIsn5(IE*B=qxmBz#bYdJKiDjf==9par zF?+cpm<_F8@ytpEF=5g9a{}tTkfEc~zBXR0>w)t`lD9Osrd%rbT05^MgUMTIf{fYW zf;m-f^O6ftqDl75uv5ZalR4L79jRJ8l?^qahj9?h&yJvPCYjmNn_C-K`|=%yuC>9+ z&H1U-qJsfgEUc8+E>v4185k;e8$x?0`gNAkKdTBkovE0s?d3DC!nTXMa;s$Epsva# z%&W`WtUW?h-LOWpTcqTpc^HU6;3W5tOY^0CMH;}xXh*p-A6;55cebyE!DKS%*RroYVE0fwa{IvrWdlWh@L7OFvr3n5WBJH+H>% zy2((POE(sXEJf7N%1PW)!pRDKn)9QDHFuOTa&V>?$<-HmU1ffm*2cn8Y;O^l$%W?i zD!PqTVq6Z~BC0KM8>U+c3ygb8H3&kfHVkdHM#f!de}^*M`4P>p>Etk8xzx?UU}7e7 zB!RgB*6d)m=Q>v6t7^O=_!WuG?toZy*#fub!~Fx_iA7eU9?aJ04>zJ9M=Lt07e^?s zC}=JFoe|~>aup8Z0*)L)BQXWtURsd1dvq~ZT50RXk5x3|eL)@-hB)ZvZW%4em%3{` z(SoqwpxujO8&b7{>BqDY-_8@kbrCHHwgAXQ%#M*o2HC<~$(=e_%9>BVY~yZ; z9%NRbDo+fzd4!)Wzc+`}62Xh*@=7GUU6s=N_1O4|GS|MmUBWx;auO`=s=Qf94RNx2 zCMMA>mZh#jJ%v8wt8y@rCSt8Oh4YF^SeRR*Q0T=05eQdJ(|APciEuJxWG2;vt(v67 z+V$FaPUH*2@Pa)i-q@R4b2FFg)zzl7b=A0>{*r2Gi5Xy-)^TX=+4UZ7G)aGR*wv($ zWUw0%r1%y%hLxLX!Up#D0@bP{_d>31gvLdCIxN}~nMHe!FWOUkF0)Wdmnol#bV{^P zF%t(>N!*}l>>dJXs@wuGPIbjINy6a?V!@efA>xuAU>vS!+{0_wtRb1X?}Qwa)gkJ_ z2bYmMR!sheGKRv1SnX*%gcqw&r`>vCAF+fBE)7G1!DCx|H8QI)^{7Q@%nf%-o3d0a z(T$2P&>hk0FUc}zn6CRN?W|4+hDdcnJh9CvG^uWoOo|gbq{+H!bGy(IqNdy??lecA zi<~PYWnD$3d>88DOG&gfF;j-_(+!TvM1!SXRBB;)?cspHV13cX|a~cMD|QKR)iIE<^oqWdk$!rJ|Yv2De1o0q8gb^VXsU|X}i1ty;=9wOb^;{ zM&@Azm$+%j8Ho>v?K7I2o~zJ1wtg7HN8?;&M=8id*^tBR5u=%$wGLd`a5;Xr-npkE}Je|=Za}e0? z_=<8%v$ChDEHRDk{KTR|- z2T)ipscLmKSF30-o+XsK`q!PWr(8tg;%He@3mN9`@|!!0rOd1qcZkO;^IYcJb>7&x ze*7f3<(zu7H$Q0DEmO9g*d2wEsoDBruo*>Mpv;k`2t(^S<&MX-A*K5S*9t4aVmDl5 z?=d0XhP$R8dZ}e1@jN9<(DK8~STvQYMkS*DH05prdeEB`hXhpzg$rGTK0L*2t~0#~|k46SLR~7_t{bIgkTc!s5(T9K3FrZ=JzU zP7zJaJq#ntG2e!ul#S7`Qde0qRUjw!zC8=wQ0Du9qMlJzME6Pj3Cipm_t3Ti9%cSmi#JQ|`m!*mkE zIBLULu@+Z`L~y$ees!t|k$TmP&7=U-A4o0o^_@Yev81NXbz|Y!TkdXemyCl_pChUxTd=8`#rV zgBa!X1^L<7!t4pt&t*C9R*lC)FnW!#CXT41-7a)@LnHCao-PYAmZf0^5t4&<1 zy?!R&eD-p7%DdYumry%0u1nwOB;O5n;r51xCM9Zx-aMZCMAfK`qZ0EbB{%`u)2gq#isYgmcAZYM+gWQCpauIxN62aY=pk> zSi=PMC5dWPe8uG<=lxfpn)5(V|+|w zCf5)mMR3AGURzywb261@Cm4??(gSwUcVFya*mj7x*N0!B#2+@yQVlsUp3hV^WT$@< zBj!l>y#C^4PiD{wJ`Rn|WOf%A%L=Zttn({d*+1$-o+l42HzL+j`njhg<@g>Y8s+&S}?CdZIVW=YStOZB=DEiI!&i+$`Ke$ZgQYFD{-p;;OP7++;b zJ~%t`_RsZ!Z<6$FngpAj0zOzP@L3gSKd;a4I2%yNFD=Nma9y6sRd;E*Tx{o~3?YJ; zdjdB|a}O`A@Hyn75>XsHh%4)G5?KzE}in$xs2C3#( ziHlWSv0rwz39%)5N91mkywP>R6R7=64uVo&obj=wa@mz$JfJ$>$*ap=*%$-`v^j5J zjSYB{M~X2w4rvb$Y#ds1v5&X$GCgN2hPT_aUcO@AUqx5yLOoBGLMG~d&@0WoPriBi z&xlQHd&;ymIuX7q$Ez!4si{3~I(~hNyZg}^#?wqWSE}j_St`W7EYP)XlI{tK*6ZX1 z=~{<(C;f0s3WRqwuDccVO)$i2+~Vx@QwOr)WZ41aroK{RM$8d*2}Z>P-aCut8lg=h zn>dBzt1Z-P*S!s9`1U$hoj~8bR8|{V>Pq6>Q1BO zYpaFTYrB(=kFL&Fqie9lqg+SV3Z0{gP3g0^JKO3X+}U%g-nYUhGN{K0cN(8Rf%>8~ zl4OVqoe{Dt*>S}slhgF|uj%LW+{lG@fNB(8R3biy;&Z3CHO9k1%)GTcPM~OOH(wm_ zAkPESjk!cLAZ|wypLL@#p2%xS5adnKjmdY|`)HLE(};~QX^v;CQr2g^&GS2(uMD3@ zweIVFO4WGPxh>OLUNr_^1g3ZM!fJP+vw2p3ceQzGxi#*o)%sc|Pj2tdupi z$=E4{(uHDqoG!JCmMxvvd_ldQCf=2=G|w$zMqLG z<(gVrr@k`2G|l(rYCWxSOG`a>`Qpp)C+49C2Uiv+MUsl0e9u}aHT(6dHC~&qjzJr; zrOop=-PP8()Mv@+Mbj?i`Bx*cdEjf z_$>61&G8h9xBO6B^9N9F&Ke3#xG*qu<(R#(9#)@fg zR&6W&4b$UJe!obM*{bw8vW-Uf=^{kab;Nf?6G!eE*)Vc{On-Dv)^7cI29qBe*~*+5 z*;Wxfcgvmp-2{odseaeUVEA(l>fK9PYu*{Nz+LJS?hL_)=qfUpKN#%NeBKEzFM@?557fk^3VGhxl)U@hY?7LapLSEn`S5P0rA6Ds9uy3*lQa{>G?z_EY$CCp1VgQ(_YE<1 z9;6EhPKgZ@=tY@GE}Cwke24lOCQq!hX>77)rmF4NmHqSc;(C? z8O%^=cRYaYtc9^^Js*ng zpvu6=dm8d~)0J3iaP(ZwBV~eyD#q~*InFbC7i1({x@A^tk5R+9y5_cdD3?AA`^Y3IYni5bV~q~o+nmr!%R ziA(5E!`Wd=$uF2$;twuOjr#vq$CuqYm1hMMt5pGF2^(zFWgPu4$>wp)N&WY=(knLNDrTx zxM;`45mkn0X_HeWD5?If(jJ8mik_nvO41_VMHHDX>Kh8B!q)h$p|=4eim6c_$~Q4$ zaFky}he61N9buI&t;7$eTt*&HkJ9fu)hIoslKJZiTTG+d_HN4lRnm*rW!_sEP5mH8 z2S{vCh+rBgfmm+0R;Yt4hBsLexXQ^c4bz~W!)A(=OlFIY;TSRsTr|LcJD?%#5)2<0 zQ0I&Ji~l*rYB6kNV;eNMwA@BTB$9Q=jq{V%a6T**CP*jZG!sS*c@h||lOxEbg|oxk zbwXS|X?Purz?N*oI$1e;>GQObHZEOa!*nxMv{X9*VctgR*fwoIi*Sh`+M~xuc0`aw zEQP6+F^|b$d-h$Dtc}IXbXF2ZksWZiqG1$KLwts1r09kuA!19O8A*4trc^XUPHbln zi4jfH_DTAHeM&}#S_5`~&60ETOOuw727AQDT4DzbjctsFNg__TA5n!K*QS}g@`AfY z2Ab5P7!Gw;j~bs2vo!L=8#*a$qn4v6)7V5K4vlzgQ-&O|{ehP;l1>YYO^ppnG~;Yd zNamczWX6dCg4-gdZ=_5kF7`5M*|D}f30#@dbQ2VwncHF~$uyXFJL7Bx=abEH$+fH)|r1)%4-FQroVjN{x zE6ZK%VLap}L54`dVnD197}wi&>3V>1rm<6=6+@eh)fQw_mv~HN8r{TndXA-jHrfWj zE`D;uj%I2rf2Zi>fqa(-2?mVesXKZF?E$PYdZD_}34zs;C>;esmo+*Yid|cYkwrixinh*Je78{% z_KN64JHeUKDn(n%m6DPyfu-x~q;|-+i~bM^*@naFCCR6Ds{C}9QHOU0IYfstoOHR{ zspuw%E*rq|1D$q>fh0UNDTuZ!iH^S3OtG&uwHX=YXh_S7+A<9BF)l=16P zTd#MQ6x*s&SBDDis5cb*{Uno@xu0Zmz3aPJ{}yQHvL$FDQH)uMb730II=Pb%a@Yqo zXYnbAoEnnK^3v1B{NO~T*gMW%VEWsOtKoEgDv1g#r~jQDnEAYNhshx-lP8qaBi!;TpX zr+fAfi(yKKn&zieOCf~eTa*!%8k zm}SUL*>?@uc^Yn*|ClKJp4@MYPRR^YqFE%|am>ikxp8YjR7(hI)xzB_Q<{-u`&yM| zETd!JGtT-I2koyknLgvO%+ZP7toyy22FZG;nW1=QSL*X>T(arJ%u==Ix-;8$rz*N` z@X=by93DDEVmHV1BP7@8RU&X&aF= zsWmQ5>z9hLT9(ViV45&<(Za5z(o@_wb-*OHyk1?dam00tUk`=(t;1l_Fs&)gA(p^W zG7|uD#L3$IDkoZ`m2@4V#(KsIn<<;YZmXF}^`6oTs^+wHmZl9pb^wa^GoEb*iIC5WWWaJiik>Q&uku(f({hF70HN}hfqdU!2DD@FsF~MiUIO(y6 z1%gqEA0wkL#28NOM2A4s47Y3E+I4e%7*{9tko7Oh|Cze#NE3umX;kjhlrS+oh08)(+wu4ekNgDUTcaYQOL{P^k2*2jcw$lJOQgN3{Sf8I(_qOiwT!};H{ z+j^a$2#ynL4$};FN^jvx%0LTSK9DI9L%D|!wAt2ML3a~>GSbbi%BEi2-<_>Z`~QcB zoMY(%%Wl~;M%0LEItU7Zv3JMeOWSFxzJUT`K)Yf3x!r4V=?V55PgwE*oI{37KnXhE z0i=RBmfK*fUSd+hKQ$+@B3#R){9vTgT>zmY zX18}7Mc5H?Jx|ry)&`ZluY`n&?9Ol<+RRB-XWWQGLFzeDck*31%g8q5AV=it)d5pq z>)xGwy%eS-`SKne03AdVTj8w3xkmSWIk7T6weSd}n+lA<Mz+BT^Sm#ET(WRoK9TMHgaGhu_J zEVm%*QzLuVlc1K4O)10@#56FGoo7wV7G!EiZ9wwqOM18hCrIEP6wPYfZ zXf2L{D|Qlf3qrJ&lV4Xd&Q9uA5;X&ZH0wQ+Qu8v{3YnKCW3mW3>Nuep$4X~1Y3Y2O zaaTz?#u`g!&)7pp(k_1D6(_ss;R=rYWM1YJYQpFeMO0tM z#r7zZ)GW2TI=-fq8p^^IakP^3=t~IO?QpMA+@0t`C9G4|00fS<;cgn*(a@ z!rSYHY3EH<>9mRP*_Yhmv7!lj|>-j3pz|Jox?{=$>Qks}l+N!1!IGn%X~XAC`}d7yXL*82U%W|aL!HXN<@k6bib1u=pG4`R3HQ)mU=ZCDnPuX zCvQTB`q&{j7Dxm+YiCK43E83w81{`ifts!pkn5vOI-QWXL_{)EKnF-?-ZwFQM-RD> zRGrx`6Wk^PMm5BOcu+qX>)xtsW284+@?_qnGfWU_nq<)7YJ7@J1ytHri`_-Q=8Cy1 zCO0fo(IXG@V32YFGR;kix;3(w@d1}5qcVkL6q`-56Xe$4;E=sx!bbH}US{a3bE`jR zu)lAYewC4g>FEu%g%Z{7N0JbithYxx%G`dIzAJ1YNn$+eRRE9+Zzw0pxZQ+W# zVeEYmY0JruoIN5EZ9y*?NkqtDSX7pVVp@ugpU}z@Df_3CN|z%tq>puh{b9$zphi)% z2pW2mCs-20c&Tv$2~EQs@LuXkt}ZI26Kz5|#d0o z@5CZDqwc~P8A=zj&jMeO%B^X7Z)$8I;@DNXZb;a^%fPb-zrkj_%i1hX26@9KKwpfi zI%TGHWL$C*o$83geZA|||1kjLA{i1+X}-Ek{!xIsc1T&m4d?WH2Zk`0kmNnD&B%MF zoy{sN*ghi4W{U+f_v$^Vt?PvzlweHnPPZK6y3wAOwY}MetM718XHkh=23<1WsiaM| zksBnDb)TtXD`934w3WYnlYJnPdL`VdM^Nf;a2J=;ij$(A8$M=}zSdIK#e0{GawzLg z$|0Ha$bEI4+(7tuX!$0UK}`v!U8{Nd5}@Kvb}t9=3^>qfm`i)7w6rAJ_Db*3vb zG)OHY~NEjqzk_=NXtcvp@ zD&J-dhZx`M)qP=k;pPHIFkXt2<40L{iU0`2&qL%y5i%$!N<8oMX@CDkWEib~#Sdfs4%^qrT4Bz`o^RFkuG{9@CSXk_2s@Fb(c1Dscv6) zBW2x~NIwTkzbZhyruKX$Ds8)`-PBO*4APL7I>7A&q}^Hy=7<@|zEvM+G}aQgSMrZr zFmQ5*(qm?lf=&F(olMSXvvh&$?#+e{GL}N76DP8^FuAj_eXvWWPUA(Vp=eL($iCVX zWbH`{i1|1*nR|tde(jy;VVon4FD)6|V!D0pWU;c^{FF*g;~nKZ>nUe9`#Jh&R*Vv= z;tz|BAM|k*?|wSRnr(U_eE3Wk(@8x^jAP%KEy z@S#g^BvW4#+npUgOtWDE$rS>&9eo1pV*T;>K1P=VTc!Y7G?k!%%^#}(oJ~s?x)1 zbEd+FabzXzXH#-<=P1qy(B0+ zPj{B>ViS##KDB3ztjwRI+zZw1h7&Uz9R;>3Rncm{oqY@1M{a0c#ue-uV^cRTTsS^k z!pB4R(34IelhP8!7%)uu)<>_eJ85rI(|~j&V~x7$cXncH_w5BD?W0!0A%lC@O5bX= z{i)YV4NOZ*gbqPr`!gebmatB|*-aHHqA&b={EoWt*SO4C3jRYxb$YsFN5k&n??l7_ zIv_H~I3zmXIHp+6kWRj-CUj~l12S*<685Q=l7(vb2JH_XCI0MVq0HW<8rnYbQp!(Q zGOoV%uqQWt*`m+EZ30YbHzf3Hrn~UmI+U>U*Dm!Z=G>*t&~n!4JedMb)t_Xm3j%+r z3@aDQ*!1D@WWual9fTzj8Ky6@2TbuMwS3W5xuGwe5nV`-Ptq=8CsXAji1$V{@=gi9(g#Q)OAnAFZvJ|rS9OhD()n0XYTFbqGztm60~(bC(RJHS36 zPCgD`r{td)?cdVbqgilsNY+4DdoE)QyTd=j(D;w)G>m3fc*&Q&nvC)fLqxV?^siz3 zPa3oae}G6h7GkAWI-PZq{vJC)sJ)B@k%}<$1ez`mJRwaW{<(XPe`tr{#X_1j)A6t!A?p<`Hdt`U!_VT{A5o{(xe##z)Ah1J)NYs2Q4C%@(@wKjMz% zviGiV(?^HANaxybeILpUIpBL6eOsFOhmrpA{2IHEH<$gkxr?x&gS$8o`0vz{>6feo zZ_G^2JX{o%l^uRDW%_ZG&WY|U=8etdOAMtYsd1g=H1r`M>bABhr{@}5{~jhbJFbIe z=RqRaPgxLpDVv3Fu$Zx(a~EFvGR+J$%&faKSNjxACtO=>Br+vno~=-M&@3|9WcIzX z?0zPt6oj-7=_Lz|DI_!`UhFS4C5mnSn%aBDQbk1n2>e?W>J%+gjL=~v=X zFQPcqcM<9H5cjy(M6{PM;uOmxz\n" +"Language-Team: Ahrale | Atar4U.com \n" +"Language: he_IL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:67 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:369 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "קבוצות שדות" + +#: acf.php:370 +msgid "Field Group" +msgstr "קבוצת שדות" + +#: acf.php:371 acf.php:403 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New" +msgstr "הוספת חדש" + +#: acf.php:372 +msgid "Add New Field Group" +msgstr "הוספת קבוצת שדות חדשה" + +#: acf.php:373 +msgid "Edit Field Group" +msgstr "עריכת קבוצת שדות" + +#: acf.php:374 +msgid "New Field Group" +msgstr "קבוצת שדות חדשה" + +#: acf.php:375 +msgid "View Field Group" +msgstr "הצג ×ת קבוצת השדות" + +#: acf.php:376 +msgid "Search Field Groups" +msgstr "חיפוש קבוצת שדות" + +#: acf.php:377 +msgid "No Field Groups found" +msgstr "××£ קבוצת שדות ×œ× × ×ž×¦××”" + +#: acf.php:378 +msgid "No Field Groups found in Trash" +msgstr "××£ קבוצת שדות ×œ× × ×ž×¦××” בפח" + +#: acf.php:401 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:807 +msgid "Fields" +msgstr "שדות" + +#: acf.php:402 +msgid "Field" +msgstr "שדה" + +#: acf.php:404 +msgid "Add New Field" +msgstr "הוספת שדה חדש" + +#: acf.php:405 +msgid "Edit Field" +msgstr "עריכת השדה" + +#: acf.php:406 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "שדה חדש" + +#: acf.php:407 +msgid "View Field" +msgstr "הצג ×ת השדה" + +#: acf.php:408 +msgid "Search Fields" +msgstr "חיפוש שדות" + +#: acf.php:409 +msgid "No Fields found" +msgstr "×œ× × ×ž×¦×ו שדות" + +#: acf.php:410 +msgid "No Fields found in Trash" +msgstr "×œ× × ×ž×¦×ו שדות בפח" + +#: acf.php:449 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "×œ× ×¤×¢×™×œ" + +#: acf.php:454 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "×œ× ×¤×¢×™×œ (%s)" +msgstr[1] "×œ× ×¤×¢×™×œ×™× (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "קבוצת השדות עודכנה" + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "קבוצת השדות נמחקה." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "קבוצת השדות פורסמה." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "קבוצת השדות נשמרה." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "קבוצת השדות נשלחה." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "קבוצת השדות מתוכננת ל" + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "טיוטת קבוצת שדות עודכנה." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "מיקו×" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "הגדרות" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "מועבר לפח. ×”×× ×תה בטוח?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "מסומן" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "×ין שדות תיבות סימון זמיני×" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "כותרת קבוצת שדות - חובה" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "העתק" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3964 +msgid "or" +msgstr "×ו" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "שדות ×ב" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "שדות ××—×™×" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "הזזת שדות מיוחדי×" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "××™ ×פשר להזיז ×ת השדה עד לשמירת ×”×©×™× ×•×™×™× ×©× ×¢×©×• בו" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "ריק" + +#: includes/admin/admin-field-group.php:281 includes/input.php:258 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "×”×©×™× ×•×™×™× ×©×¢×©×™×ª ×™×בדו ×× ×ª×¢×‘×•×¨ לדף ×חר" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "×œ× × ×™×ª×Ÿ להשתמש במחרוזת \"field_\" בתחילת ×©× ×”×©×“×”" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "מפתחות שדה" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "פעיל" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "ההעברה הושלמה." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "×פשר עכשיו ×œ×ž×¦×•× ×ת שדה %s בתוך קבוצת השדות %s" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "סגור חלון" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "בבקשה בחר ×‘×ž×™×§×•× ×”×—×“×© עבור שדה ×–×”" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "הזזת שדה" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "פעיל (%s)" +msgstr[1] "×¤×¢×™×œ×™× (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "קבוצת השדות שוכפלה. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s קבוצת השדה שוכפלה." +msgstr[1] "%s קבוצות השדות שוכפלו." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "קבוצת השדות סונכרנה. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s קבוצת השדות סונכרנה." +msgstr[1] "%s קבוצות השדות סונכרנו." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "סנכרון זמין" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:355 +msgid "Title" +msgstr "כותרת" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:382 +msgid "Description" +msgstr "תי×ור" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "מצב" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "שדרגו ×ת וורדפרס ×¢× ×©×“×•×ª ×ž×™×•×—×“×™× ×‘×ופן מקצועי, יעל ומהיר." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "גרס×ות" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "מה חדש בגרסה %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "עזרה" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "×תר" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "הור×ות הפעלה" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "תמיכה" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "פרו" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "תודה שיצרת ×¢× ACF" + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "שכפל ×ת הפריט ×”×–×”" + +#: includes/admin/admin-field-groups.php:668 +#: includes/admin/admin-field-groups.php:684 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate" +msgstr "שיכפול" + +#: includes/admin/admin-field-groups.php:701 +#: includes/fields/class-acf-field-google-map.php:112 +#: includes/fields/class-acf-field-relationship.php:656 +msgid "Search" +msgstr "חיפוש" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "בחירה %s" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "סנכרון קבוצת שדות" + +#: includes/admin/admin-field-groups.php:768 +#: includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "סינכרון" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "החל" + +#: includes/admin/admin-field-groups.php:798 +msgid "Bulk Actions" +msgstr "עריכה קבוצתית" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "שדות מיוחדי×" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "שדרוג מסד נתוני×" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "סקירת ××ª×¨×™× ×•×©×“×¨×•×’×™×" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "שגי××” בבקשת ×”×ימות" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "×ין ×¢×–×›×•× ×™× ×–×ž×™× ×™×." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "תוספי×" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "â€×©×’×™××”. טעינת רשימת ההרחבות נכשלה" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "מידע" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "מה חדש" + +#: includes/admin/settings-tools.php:50 +#: includes/admin/views/settings-tools-export.php:19 +#: includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "כלי×" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "××£ קבוצת שדות ×œ× × ×‘×—×¨×”" + +#: includes/admin/settings-tools.php:184 +#: includes/fields/class-acf-field-file.php:155 +msgid "No file selected" +msgstr "×œ× × ×‘×—×¨ קובץ" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "שגי××” בהעל×ת הקובץ. בבקשה נסה שנית" + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "סוג קובץ ×œ× ×ª×§×™×Ÿ" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "קובץ ×”×™×™×‘×•× ×¨×™×§" + +#: includes/admin/settings-tools.php:331 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "קבוצת שדות 1 יוב××”" +msgstr[1] "%s קבוצות שדות יוב×ו" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "תנ××™ לוגי" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "הצגת השדה בתנ××™ ש" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:247 +msgid "is equal to" +msgstr "שווה ל" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "×œ× ×©×•×•×” ל" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "וג×" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "הוספת קבוצת כללי×" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:403 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Drag to reorder" +msgstr "גרור ושחרר לסידור מחדש" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "עריכת שדה" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-file.php:137 +#: includes/fields/class-acf-field-image.php:122 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:342 +msgid "Edit" +msgstr "עריכה" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "שכפול שדה" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "העברת שדה לקבוצה ×חרת" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "שינוי מיקו×" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "מחיקת שדה" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete" +msgstr "מחיקה" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "תווית השדה" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "×”×©× ×©×™×•×¤×™×¢ בדף העריכה" + +#: includes/admin/views/field-group-field.php:77 +msgid "Field Name" +msgstr "×©× ×”×©×“×”" + +#: includes/admin/views/field-group-field.php:78 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "מילה ×חת, ×œ×œ× ×¨×•×•×—×™×. ×פשר להשתמש במקף תחתי ובמקף ×מצעי" + +#: includes/admin/views/field-group-field.php:87 +msgid "Field Type" +msgstr "סוג שדה" + +#: includes/admin/views/field-group-field.php:98 +#: includes/fields/class-acf-field-tab.php:88 +msgid "Instructions" +msgstr "הור×ות" + +#: includes/admin/views/field-group-field.php:99 +msgid "Instructions for authors. Shown when submitting data" +msgstr "הור×ות למחברי×. מוצג למעדכני ×”×ª×›× ×™× ×‘×תר" + +#: includes/admin/views/field-group-field.php:108 +msgid "Required?" +msgstr "חובה?" + +#: includes/admin/views/field-group-field.php:131 +msgid "Wrapper Attributes" +msgstr "מ×פייני עוטף" + +#: includes/admin/views/field-group-field.php:137 +msgid "width" +msgstr "רוחב" + +#: includes/admin/views/field-group-field.php:152 +msgid "class" +msgstr "מחלקה" + +#: includes/admin/views/field-group-field.php:165 +msgid "id" +msgstr "מזהה" + +#: includes/admin/views/field-group-field.php:177 +msgid "Close Field" +msgstr "סגור שדה" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "סדר" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:415 +#: includes/fields/class-acf-field-radio.php:306 +#: includes/fields/class-acf-field-select.php:432 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "תווית" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:964 +#: pro/fields/class-acf-field-flexible-content.php:595 +msgid "Name" +msgstr "ש×" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "מפתח" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "סוג" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"×ין שדות. לחצו על כפתור + הוספת שדה כדי ליצור ×ת השדה " +"הר×שון שלכ×." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ הוספת שדה" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "כללי×" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "יצירת מערכת ×›×œ×œ×™× ×›×“×™ לקבוע ב×ילו מסכי עריכה יופיעו השדות המיוחדי×" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "סגנון" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "רגיל (תיבת תי×ור של וורדפרס)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "חלק (×œ×œ× ×ª×™×‘×ª תי×ור)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "מיקו×" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "גבוה (×חרי הכותרת)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "רגיל (×חרי התוכן)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "צד" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "×ž×™×§×•× ×ª×•×•×™×ª" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:102 +msgid "Top aligned" +msgstr "מיושר למעלה" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:103 +msgid "Left aligned" +msgstr "מיושר לשמ×ל" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "×ž×™×§×•× ×”×•×¨×ות" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "מתחת לתוויות" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "מתחת לשדות" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "×ž×™×§×•× (order)" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "קבוצות שדות ×¢× ×ž×™×§×•× × ×ž×•×š יופיעו ר×שונות" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "מוצג ברשימת קבוצת השדות" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "הסתרה במסך" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "בחרו ×¤×¨×™×˜×™× ×©×™×”×™×• × ×¡×ª×¨×™× ×‘×ž×¡×š העריכה." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "קישור" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "עורך תוכן" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "מוב××”" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "דיון" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "הערות" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "גרס×ות עריכה" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "מזהה הפוסט" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "מחבר" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "פורמט" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "מ×פייני עמוד" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:670 +msgid "Featured Image" +msgstr "תמונה ר×שית" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "קטגוריות" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "תגיות" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "שלח טר×קבקי×" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "הצגת קבוצת השדות הזו בתנ××™ ש" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"מומלץ ×‘×—×•× ×œ×’×‘×•×ª ×ת מ×גר ×”× ×ª×•× ×™× ×œ×¤× ×™ שממשיכי×. ×”×× ××ª× ×‘×˜×•×—×™× ×©××ª× ×¨×•×¦×™× " +"להריץ ×ת העדכון כעת?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "שדרוג × ×ª×•× ×™× ×œ×’×¨×¡×” %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "שדה חזרה" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "תוכן גמיש" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "גלריה" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "עמוד ×פשרויות" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "חובה לשדרג ×ת מסד הנתוני×" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "תודה ×©×¢×“×›× ×ª× ×œ-%s גרסה %s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"לפני ש××ª× ×ž×ª×—×™×œ×™× ×œ×”×©×ª×ž×© בתכונות המדהימות החדשות, בבקשה עדכנו ×ת מ×גר " +"×”× ×ª×•× ×™× ×©×œ×›× ×œ×’×¨×¡×” העדכנית." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "×§×•×¨× ×ž×©×™×ž×•×ª שדרוג..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "הורדה והתקנה" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "מותקן" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "×‘×¨×•×›×™× ×”×‘××™× ×œ×©×“×•×ª ×ž×™×•×—×“×™× ×ž×ª×§×“×ž×™×" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"תודה שעידכנת×! ACF %s ×”×•× ×’×“×•×œ יותר וטוב יותר מ××™ פע×. ×ž×§×•×•×™× ×©×ª×הבו ×ותו." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "חווית שדות ×ž×™×•×—×“×™× ×—×œ×§×” יותר" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "שימושיות משופרת" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"הוספה של הספרייה הפופולרית Select2 שיפרה ×’× ×ת השימושיות ו×ת המהירות בכמה " +"סוגי שדות, כולל: ×ובייקט פוסט, קישור דף, טקסונומיה ובחירה." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "עיצוב משופר" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"הרבה שדות עברו רענון ויזו×לי כדי ×œ×’×¨×•× ×œ-ACF להיר×ות טוב מ××™ פע×! ניתן לר×ות " +"×©×™× ×•×™×™× ×‘×•×œ×˜×™× ×‘×©×“×” הגלריה, שדה היחסי×, ובשדה ההטמעה (החדש)!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "× ×ª×•× ×™× ×ž×©×•×¤×¨×™×" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"עיצוב מחדש של ×רכיטקטורת המידע ×יפשר לשדות משנה להיות × ×¤×¨×“×™× ×ž×”×”×•×¨×™× ×©×œ×”×. " +"דבר ×–×” מ×פשר ×œ×›× ×œ×’×¨×•×¨ ולשחרר שדות לתוך ומחוץ לשדות ×ב." + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "להתר×ות הרחבות. ×©×œ×•× PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "הכירו ×ת ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"כל ×רבעת הרחבות ×”×¤×¨×™×ž×™×•× ×וחדו לתוך גרסת הפרו החדשה של ACF. ×¢× ×”×¨×©×™×•× ×•×ª ×”×–×ž×™× ×™× ×œ×©×™×ž×•×© ×ישי ולמפתחי×, יכולות ×”×¤×¨×™×ž×™×•× ×–×•×œ×•×ª יותר " +"ונגישות יותר מ××™ פע×." + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "תכונות עצמתיות" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"â€ACF PRO כולל תכונות עצמתיות כמו מידע שחוזר על עצמו, פריסות תוכן גמישות, שדה " +"גלריה יפה ו×ת היכולת ליצור דפי ×פשרויות × ×•×¡×¤×™× ×‘×ž×ž×©×§ הניהול!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "×§×¨× ×¢×•×“ על ×”×¤×™×¦×³×¨×™× ×©×œ ACF PRO" + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "שדרוג קל" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"כדי להקל על השידרוג, התחברו לחשבון ×©×œ×›× ×•×§×‘×œ×• ×—×™× × ×¢×•×ª×§ " +"של ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"כתבנו ×’× ×ž×“×¨×™×š שידרוג כדי לענות על כל הש×לות, ×ך ×× ×¢×“×™×™×Ÿ " +"יש ×œ×›× ×©×לה, בבקשה צרו קשר ×¢× ×¦×•×•×ª התמיכה שלנו דרך מוקד " +"התמיכה" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "מתחת למכסה המנוע" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "הגדרות חכמות יותר לשדות" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "â€ACF עכשיו שומר ×ת הגדרות השדות שלו ×›×ובייקטי פוסט בודדי×" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "עוד AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "יותר שדות ×ž×©×ª×ž×©×™× ×‘×—×™×¤×•×© מבוסס AJAX כדי לשפר ×ת מהירות טעינת הדף" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "â€JSON מקומי" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "תכונת ×™×™×¦×•× ×וטומטי חדש ל-JSON משפר ×ת המהירות" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "בקרת גרס×ות טובה יותר" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "תכונת חדש ×œ×™×™×¦×•× ×וטומטי ל-JSON מ×פשר להגדרות השדות להיות מבוקרי גרסה" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "â€JSON ×‘×ž×§×•× XML" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "×™×™×‘×•× / ×™×™×¦×•× ×ž×©×ª×ž×© עכשיו ב-JSON ×‘×ž×§×•× ×‘-XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "×˜×¤×¡×™× ×—×“×©×™×" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "ניתן כעת למפות שדות לתגובות, ×•×•×™×“×’×³×˜×™× ×•×›×œ טפסי המשתמש!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "נוסף שדה חדש להטמעת תוכן" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "גלריה חדשה" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "שדה הגלריה עבר מתיחת ×¤× ×™× ×—×™×•× ×™×ª ביותר" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "הגדרות חדשות" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "הגדרות קבוצות שדות נוספה ×œ×ž×™×§×•× ×”×ª×•×•×™×•×ª ×•×œ×ž×™×§×•× ×”×”×•×¨×ות" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "טפסי צד קדמי משופרי×" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "â€acf_form() יכול עכשיו ליצור פוסט חדש בעת השליחה" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "×ימות × ×ª×•× ×™× ×ž×©×•×¤×¨" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "×ימות ×˜×¤×¡×™× × ×¢×©×” עכשיו ×¢× PHP ו-AJAX ×‘×ž×§×•× ×œ×”×©×ª×ž×© רק ב-JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "שדה יחסי×" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "הגדרת שדה ×™×—×¡×™× ×—×“×©×” בשביל ׳סינוני×׳ (חיפוש, סוג פוסט, טקסונומיה)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "שינוי ×ž×™×§×•× ×©×“×•×ª" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "פונקציונליות קבוצות שדות חדשה מ×פשרת ×œ×›× ×œ×”×¢×‘×™×¨ שדה בין קבוצות והורי×" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "קישור לעמוד" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "קבוצת ×רכיון חדשה בשדה הבחירה של page_link" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "דף ×פשרויות משופר" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "פונקציות חדשות לדף ×”×פשרויות נותנות ×œ×›× ×œ×™×¦×•×¨ דפי תפריט ר××©×™×™× ×•×ž×©× ×™×™×" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "×נחנו ×—×•×©×‘×™× ×©×ª×הבו ×ת ×”×©×™× ×•×™×™× ×‘%s." + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "×™×¦×•× ×§×‘×•×¦×•×ª שדות לphp" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"ניתן להשתמש בקוד ×”×‘× ×›×“×™ ×œ×¨×©×•× ×’×¨×¡×” מקומית של קבוצות השדה הנבחרות. קבוצת " +"שדות מקומית יכולה ×œ×”×‘×™× ×œ×ª×•×¢×œ×•×ª רבות כמו זמני טעינה ×ž×”×™×¨×™× ×™×•×ª×¨, בקרת גרס×ות " +"ושדות/הגדרות דינמיות. פשוט העתיקו והדביקו ×ת הקוד ×”×‘× ×œ×§×•×‘×¥ functions‪.‬php " +"שבערכת העיצוב ×©×œ×›× ×ו הוסיפו ×ותו דרך קובץ חיצוני." + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "בחירת קבוצת שדות" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "×™×¦×•× ×§×‘×•×¦×•×ª שדות" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"בחרו בקבוצות השדות ×©×‘×¨×¦×•× ×›× ×œ×™×™×¦× ×•××– בחרו במתודת הייצו×. השתמש בכפתור " +"ההורדה כדי ×œ×™×™×¦× ×§×•×‘×¥ json ×ותו תוכלו ×œ×™×™×‘× ×œ×”×ª×§× ×ª ACF ×חרת. השתמשו בכפתור " +"היצירה כדי ×œ×™×™×¦× ×§×•×“ php ×ותו תוכלו להכניס לתוך ערכת העיצוב שלכ×." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "הורדת קובץ ייצו×" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "יצירת קוד ייצו×" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "×™×™×‘×•× ×§×‘×•×¦×•×ª שדות" + +#: includes/admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"בחרו בקובץ השדות ×”×ž×™×•×—×“×™× ×ž×¡×•×’ JSON ×©×‘×¨×¦×•× ×›× ×œ×™×™×‘×. כשתלחצו על כפתור ×”×™×™×‘×•× " +"שמתחת, ACF ×™×™×‘× ×ת קבוצות השדות." + +#: includes/admin/views/settings-tools.php:77 +#: includes/fields/class-acf-field-file.php:35 +msgid "Select File" +msgstr "בחר קובץ" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "ייבו×" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "תמונה ממוזערת" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "בינוני" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "גדול" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "גודל מל×" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1831 +#: pro/fields/class-acf-field-clone.php:992 +msgid "(no title)" +msgstr "(×ין כותרת)" + +#: includes/api/api-helpers.php:1868 +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:986 +msgid "Parent" +msgstr "" + +#: includes/api/api-helpers.php:3885 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3890 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3906 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3911 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3929 +#, php-format +msgid "File size must be at least %s." +msgstr "" + +#: includes/api/api-helpers.php:3934 +#, php-format +msgid "File size must must not exceed %s." +msgstr "" + +#: includes/api/api-helpers.php:3968 +#, php-format +msgid "File type must be %s." +msgstr "" + +#: includes/fields.php:144 +msgid "Basic" +msgstr "בסיסי" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "תוכן" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "בחירה" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "יחסי" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 +#: includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:384 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:285 +#: pro/fields/class-acf-field-clone.php:839 +#: pro/fields/class-acf-field-flexible-content.php:552 +#: pro/fields/class-acf-field-flexible-content.php:601 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Layout" +msgstr "פריסת תוכן" + +#: includes/fields.php:326 +msgid "Field type does not exist" +msgstr "סוג השדה ×œ× × ×ž×¦×" + +#: includes/fields.php:326 +msgid "Unknown" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:368 +msgid "Choices" +msgstr "בחירות" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each choice on a new line." +msgstr "יש להקליד כל בחירה בשורה חדשה." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "For more control, you may specify both a value and label like this:" +msgstr "לשליטה רבה יותר, ×פשר לציין ×ת הערך ו×ת התווית כך:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "red : Red" +msgstr "red : ××“×•× " + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:386 +#: includes/fields/class-acf-field-taxonomy.php:793 +#: includes/fields/class-acf-field-user.php:408 +msgid "Allow Null?" +msgstr "ל×פשר שדה ריק?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:375 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:276 +#: includes/fields/class-acf-field-range.php:148 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:410 +msgid "Default Value" +msgstr "ערך ברירת המחדל" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:277 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Appears when creating a new post" +msgstr "מופיע ×›×שר ×™×•×¦×¨×™× ×¤×•×¡×˜ חדש" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:391 +#: includes/fields/class-acf-field-radio.php:292 +msgid "Horizontal" +msgstr "×ופקי" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:390 +#: includes/fields/class-acf-field-radio.php:291 +msgid "Vertical" +msgstr "×× ×›×™" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:408 +#: includes/fields/class-acf-field-file.php:200 +#: includes/fields/class-acf-field-image.php:188 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:299 +#: includes/fields/class-acf-field-taxonomy.php:833 +msgid "Return Value" +msgstr "ערך חוזר" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:409 +#: includes/fields/class-acf-field-file.php:201 +#: includes/fields/class-acf-field-image.php:189 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:300 +msgid "Specify the returned value on front end" +msgstr "הגדרת הערך המוחזר בצד הקדמי" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-radio.php:305 +#: includes/fields/class-acf-field-select.php:431 +msgid "Value" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:416 +#: includes/fields/class-acf-field-radio.php:307 +#: includes/fields/class-acf-field-select.php:433 +msgid "Both (Array)" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Checkbox" +msgstr "תיבת סימון" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "החלפת מצב הבחירה של כל הקבוצות" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:376 +#: includes/fields/class-acf-field-select.php:378 +msgid "Enter each default value on a new line" +msgstr "יש להקליד כל ערך ברירת מחדל בשורה חדשה" + +#: includes/fields/class-acf-field-checkbox.php:398 +msgid "Toggle" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:399 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "×“×•×’× ×¦×‘×¢" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "× ×§×”" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "ברירת המחדל" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "בחירת צבע" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "בחירת ת×ריך" + +#: includes/fields/class-acf-field-date_picker.php:33 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:34 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:35 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:37 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:181 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "פורמט תצוגה" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:182 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "הפורמט המוצג בעריכת××” פוסט" + +#: includes/fields/class-acf-field-date_picker.php:216 +#: includes/fields/class-acf-field-date_picker.php:247 +#: includes/fields/class-acf-field-date_time_picker.php:191 +#: includes/fields/class-acf-field-date_time_picker.php:208 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:226 +msgid "Save Format" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:227 +msgid "The format used when saving a value" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:237 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:697 +#: includes/fields/class-acf-field-select.php:426 +#: includes/fields/class-acf-field-time_picker.php:124 +msgid "Return Format" +msgstr "פורמט חוזר" + +#: includes/fields/class-acf-field-date_picker.php:238 +#: includes/fields/class-acf-field-date_time_picker.php:199 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "הפורמט המוחזר דרך פונקציות התבנית" + +#: includes/fields/class-acf-field-date_picker.php:256 +#: includes/fields/class-acf-field-date_time_picker.php:215 +msgid "Week Starts On" +msgstr "השבוע מתחיל ביו×" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:33 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:34 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:35 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:37 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:38 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:39 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:40 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:41 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:42 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:43 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "×ימייל" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "מציין טקסט" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "מופיע בתוך השדה" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:187 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "לפני" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "מופיע לפני השדה" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:196 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "×חרי" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "מופיע ל×חר השדה" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "קובץ" + +#: includes/fields/class-acf-field-file.php:36 +msgid "Edit File" +msgstr "עריכת קובץ" + +#: includes/fields/class-acf-field-file.php:37 +msgid "Update File" +msgstr "עדכן קובץ" + +#: includes/fields/class-acf-field-file.php:38 +#: includes/fields/class-acf-field-image.php:43 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:44 +msgid "Uploaded to this post" +msgstr "משוייך לפוסט" + +#: includes/fields/class-acf-field-file.php:126 +msgid "File name" +msgstr "" + +#: includes/fields/class-acf-field-file.php:130 +#: includes/fields/class-acf-field-file.php:233 +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: pro/fields/class-acf-field-gallery.php:690 +#: pro/fields/class-acf-field-gallery.php:719 +msgid "File size" +msgstr "" + +#: includes/fields/class-acf-field-file.php:139 +#: includes/fields/class-acf-field-image.php:124 +#: includes/fields/class-acf-field-link.php:140 includes/input.php:269 +#: pro/fields/class-acf-field-gallery.php:343 +#: pro/fields/class-acf-field-gallery.php:531 +msgid "Remove" +msgstr "הסר" + +#: includes/fields/class-acf-field-file.php:155 +msgid "Add File" +msgstr "הוספת קובץ" + +#: includes/fields/class-acf-field-file.php:206 +msgid "File Array" +msgstr "מערך קבצי×" + +#: includes/fields/class-acf-field-file.php:207 +msgid "File URL" +msgstr "כתובת ×ינטרנט של הקובץ" + +#: includes/fields/class-acf-field-file.php:208 +msgid "File ID" +msgstr "מזהה הקובץ" + +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:213 +#: pro/fields/class-acf-field-gallery.php:655 +msgid "Library" +msgstr "ספריה" + +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:214 +#: pro/fields/class-acf-field-gallery.php:656 +msgid "Limit the media library choice" +msgstr "הגבלת ×פשרויות ספריית המדיה" + +#: includes/fields/class-acf-field-file.php:221 +#: includes/fields/class-acf-field-image.php:219 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:661 +msgid "All" +msgstr "הכל" + +#: includes/fields/class-acf-field-file.php:222 +#: includes/fields/class-acf-field-image.php:220 +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Uploaded to post" +msgstr "הועלה לפוסט" + +#: includes/fields/class-acf-field-file.php:229 +#: includes/fields/class-acf-field-image.php:227 +#: pro/fields/class-acf-field-gallery.php:669 +msgid "Minimum" +msgstr "" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-file.php:241 +msgid "Restrict which files can be uploaded" +msgstr "" + +#: includes/fields/class-acf-field-file.php:240 +#: includes/fields/class-acf-field-image.php:256 +#: pro/fields/class-acf-field-gallery.php:698 +msgid "Maximum" +msgstr "" + +#: includes/fields/class-acf-field-file.php:251 +#: includes/fields/class-acf-field-image.php:285 +#: pro/fields/class-acf-field-gallery.php:727 +msgid "Allowed file types" +msgstr "" + +#: includes/fields/class-acf-field-file.php:252 +#: includes/fields/class-acf-field-image.php:286 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "מפת גוגל" + +#: includes/fields/class-acf-field-google-map.php:40 +msgid "Locating" +msgstr "מ×תר" + +#: includes/fields/class-acf-field-google-map.php:41 +msgid "Sorry, this browser does not support geolocation" +msgstr "מצטערי×, דפדפן ×–×” ×ינו תומך בזיהוי ×ž×™×§×•× ×’×™×וגרפי" + +#: includes/fields/class-acf-field-google-map.php:113 +msgid "Clear location" +msgstr "ניקוי מיקו×" + +#: includes/fields/class-acf-field-google-map.php:114 +msgid "Find current location" +msgstr "מצי×ת ×”×ž×™×§×•× ×”× ×•×›×—×™" + +#: includes/fields/class-acf-field-google-map.php:117 +msgid "Search for address..." +msgstr "חיפוש כתובת..." + +#: includes/fields/class-acf-field-google-map.php:147 +#: includes/fields/class-acf-field-google-map.php:158 +msgid "Center" +msgstr "מרכוז" + +#: includes/fields/class-acf-field-google-map.php:148 +#: includes/fields/class-acf-field-google-map.php:159 +msgid "Center the initial map" +msgstr "מירכוז המפה הר×שונית" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Zoom" +msgstr "זו×" + +#: includes/fields/class-acf-field-google-map.php:171 +msgid "Set the initial zoom level" +msgstr "הגדרת רמת ×”×–×•× ×”×¨×שונית" + +#: includes/fields/class-acf-field-google-map.php:180 +#: includes/fields/class-acf-field-image.php:239 +#: includes/fields/class-acf-field-image.php:268 +#: includes/fields/class-acf-field-oembed.php:281 +#: pro/fields/class-acf-field-gallery.php:681 +#: pro/fields/class-acf-field-gallery.php:710 +msgid "Height" +msgstr "גובה" + +#: includes/fields/class-acf-field-google-map.php:181 +msgid "Customise the map height" +msgstr "הת×מת גובה המפה" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:389 +msgid "Sub Fields" +msgstr "שדות משנה" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:840 +msgid "Specify the style used to render the selected fields" +msgstr "" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:845 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:458 +msgid "Block" +msgstr "בלוק" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:846 +#: pro/fields/class-acf-field-flexible-content.php:611 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Table" +msgstr "טבלה" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:847 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Row" +msgstr "שורה" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "תמונה" + +#: includes/fields/class-acf-field-image.php:40 +msgid "Select Image" +msgstr "בחירת תמונה" + +#: includes/fields/class-acf-field-image.php:41 +#: pro/fields/class-acf-field-gallery.php:42 +msgid "Edit Image" +msgstr "עריכת תמונה" + +#: includes/fields/class-acf-field-image.php:42 +#: pro/fields/class-acf-field-gallery.php:43 +msgid "Update Image" +msgstr "עדכון תמונה" + +#: includes/fields/class-acf-field-image.php:44 +msgid "All images" +msgstr "כל פריטי המדיה" + +#: includes/fields/class-acf-field-image.php:140 +msgid "No image selected" +msgstr "×œ× × ×‘×—×¨×” תמונה" + +#: includes/fields/class-acf-field-image.php:140 +msgid "Add Image" +msgstr "הוספת תמונה" + +#: includes/fields/class-acf-field-image.php:194 +msgid "Image Array" +msgstr "מערך תמונות" + +#: includes/fields/class-acf-field-image.php:195 +msgid "Image URL" +msgstr "כתובת ×ינטרנט של התמונה" + +#: includes/fields/class-acf-field-image.php:196 +msgid "Image ID" +msgstr "מזהה ייחודי של תמונה" + +#: includes/fields/class-acf-field-image.php:203 +msgid "Preview Size" +msgstr "גודל תצוגה" + +#: includes/fields/class-acf-field-image.php:204 +msgid "Shown when entering data" +msgstr "מוצג בעת הזנת נתוני×" + +#: includes/fields/class-acf-field-image.php:228 +#: includes/fields/class-acf-field-image.php:257 +#: pro/fields/class-acf-field-gallery.php:670 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Restrict which images can be uploaded" +msgstr "" + +#: includes/fields/class-acf-field-image.php:231 +#: includes/fields/class-acf-field-image.php:260 +#: includes/fields/class-acf-field-oembed.php:270 +#: pro/fields/class-acf-field-gallery.php:673 +#: pro/fields/class-acf-field-gallery.php:702 +msgid "Width" +msgstr "" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "הודעה" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "שורות חדשות" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "שליטה על ×ופן ההצגה של שורות חדשות " + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "הוספה ×וטומטית של פסק×ות" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "הוספה ×וטומטית של <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "×œ×œ× ×¢×™×¦×•×‘" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "מספר" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:157 +msgid "Minimum Value" +msgstr "ערך מינימו×" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:167 +msgid "Maximum Value" +msgstr "ערך מקסימו×" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:177 +msgid "Step Size" +msgstr "גודל הצעד" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "הערך חייב להיות מספר" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "הערך חייב להיות שווה ×ו גדול יותר מ-%d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "הערך חייב להיות שווה ×ו קטן יותר מ-%d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "â€×©×“×” הטמעה" + +#: includes/fields/class-acf-field-oembed.php:219 +msgid "Enter URL" +msgstr "הקלד כתובת URL" + +#: includes/fields/class-acf-field-oembed.php:234 +#: includes/fields/class-acf-field-taxonomy.php:898 +msgid "Error." +msgstr "שגי××”." + +#: includes/fields/class-acf-field-oembed.php:234 +msgid "No embed found for the given URL." +msgstr "×œ× × ×ž×¦× ×§×•×“ הטמעה לכתובת ×”-URL הנתונה." + +#: includes/fields/class-acf-field-oembed.php:267 +#: includes/fields/class-acf-field-oembed.php:278 +msgid "Embed Size" +msgstr "גודל ההטמעה " + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "×רכיוני×" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Filter by Post Type" +msgstr "סינון על פי סוג פוסט" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:631 +msgid "All post types" +msgstr "כל סוגי הפוסטי×" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:637 +msgid "Filter by Taxonomy" +msgstr "סינון לפי טקסונומיה" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:645 +msgid "All taxonomies" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:396 +#: includes/fields/class-acf-field-user.php:418 +msgid "Select multiple values?" +msgstr "בחירת ×¢×¨×›×™× ×ž×¨×•×‘×™×?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "ססמה" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:702 +msgid "Post Object" +msgstr "×ובייקט פוסט" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:703 +msgid "Post ID" +msgstr "מזהה ייחודי לפוסט" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "כפתור רדיו" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "×חר" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "הוספת ×”×פשרות '×חר' כדי ל×פשר ×¢×¨×›×™× ×ž×•×ª××ž×™× ×ישית" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "שמירת ×חר" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "שמירת ערכי '×חר' ל×פשרויות השדה" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "יחסי×" + +#: includes/fields/class-acf-field-relationship.php:37 +msgid "Minimum values reached ( {min} values )" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:38 +msgid "Maximum values reached ( {max} values )" +msgstr "×”×’×¢×ª× ×œ×¢×¨×š המקסימלי ×”×פשרי ( ערכי {max} )" + +#: includes/fields/class-acf-field-relationship.php:39 +msgid "Loading" +msgstr "טוען" + +#: includes/fields/class-acf-field-relationship.php:40 +msgid "No matches found" +msgstr "×œ× × ×ž×¦×ו הת×מות" + +#: includes/fields/class-acf-field-relationship.php:423 +msgid "Select post type" +msgstr "בחירת סוג פוסט" + +#: includes/fields/class-acf-field-relationship.php:449 +msgid "Select taxonomy" +msgstr "בחירת טקסונומיה" + +#: includes/fields/class-acf-field-relationship.php:539 +msgid "Search..." +msgstr "חיפוש..." + +#: includes/fields/class-acf-field-relationship.php:651 +msgid "Filters" +msgstr "×ž×¡× × ×™× (Filters)" + +#: includes/fields/class-acf-field-relationship.php:657 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "סוג פוסט" + +#: includes/fields/class-acf-field-relationship.php:658 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:763 +msgid "Taxonomy" +msgstr "טקסונמיה" + +#: includes/fields/class-acf-field-relationship.php:665 +msgid "Elements" +msgstr "×למנטי×" + +#: includes/fields/class-acf-field-relationship.php:666 +msgid "Selected elements will be displayed in each result" +msgstr "×”××œ×ž× ×˜×™× ×”× ×‘×—×¨×™× ×™×•×¦×’×• בכל תוצ××”" + +#: includes/fields/class-acf-field-relationship.php:677 +msgid "Minimum posts" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:686 +msgid "Maximum posts" +msgstr "מספר ×¤×•×¡×˜×™× ×ž×¨×‘×™" + +#: includes/fields/class-acf-field-relationship.php:790 +#: pro/fields/class-acf-field-gallery.php:800 +#, fuzzy, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s מחייב לפחות בחירה %s" +msgstr[1] "%s מחייב לפחות בחירה %s" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:785 +msgctxt "noun" +msgid "Select" +msgstr "" + +#: includes/fields/class-acf-field-select.php:38 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "" + +#: includes/fields/class-acf-field-select.php:39 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" + +#: includes/fields/class-acf-field-select.php:40 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "" + +#: includes/fields/class-acf-field-select.php:41 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:42 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:43 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "" + +#: includes/fields/class-acf-field-select.php:44 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:45 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "" + +#: includes/fields/class-acf-field-select.php:46 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "" + +#: includes/fields/class-acf-field-select.php:47 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "" + +#: includes/fields/class-acf-field-select.php:48 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "" + +#: includes/fields/class-acf-field-select.php:255 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "" + +#: includes/fields/class-acf-field-select.php:406 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "ממשק משתמש מסוגנן" + +#: includes/fields/class-acf-field-select.php:416 +msgid "Use AJAX to lazy load choices?" +msgstr "להשתמש ב-AJAX כדי לטעון ×ת ×”×פשרויות ל×חר שהדף עולה" + +#: includes/fields/class-acf-field-select.php:427 +msgid "Specify the value returned" +msgstr "" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "לשונית" + +#: includes/fields/class-acf-field-tab.php:82 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "" +"שדה הלשונית יוצג ב×ופן שגוי ×›×©×ž×•×¡×™×¤×™× ×ותו לשדה חזרה שמוצג כטבלה ×ו לשדה " +"פריסת תוכן גמישה" + +#: includes/fields/class-acf-field-tab.php:83 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "" +"השתמשו בלשוניות כדי ל×רגן ×ת ממשק העריכה טוב יותר ב×מצעות קיבוץ השדות יחד." + +#: includes/fields/class-acf-field-tab.php:84 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" +"כל השדות ש×חרי \"שדה הלשונית\" ×”×–×” (×ו עד להגדרת שדה לשונית נוסף) יהיו " +"×ž×§×•×‘×¦×™× ×™×—×“, כשהתווית של שדה ×–×” תופיע ככותרת הלשונית." + +#: includes/fields/class-acf-field-tab.php:98 +msgid "Placement" +msgstr "מיקו×" + +#: includes/fields/class-acf-field-tab.php:110 +msgid "End-point" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:111 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:713 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:732 +msgid "None" +msgstr "לל×" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Select the taxonomy to be displayed" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:773 +msgid "Appearance" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Select the appearance of this field" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Multiple Values" +msgstr "×¢×¨×›×™× ×ž×¨×•×‘×™×" + +#: includes/fields/class-acf-field-taxonomy.php:781 +msgid "Multi Select" +msgstr "בחירה מרובה" + +#: includes/fields/class-acf-field-taxonomy.php:783 +msgid "Single Value" +msgstr "ערך יחיד" + +#: includes/fields/class-acf-field-taxonomy.php:784 +msgid "Radio Buttons" +msgstr "כפתורי רדיו" + +#: includes/fields/class-acf-field-taxonomy.php:803 +msgid "Create Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:804 +msgid "Allow new terms to be created whilst editing" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:813 +msgid "Save Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:814 +msgid "Connect selected terms to the post" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:823 +msgid "Load Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:824 +msgid "Load value from posts terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:838 +msgid "Term Object" +msgstr "×וביקט ביטוי" + +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Term ID" +msgstr "מזהה הביטוי" + +#: includes/fields/class-acf-field-taxonomy.php:898 +#, php-format +msgid "User unable to add new %s" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:911 +#, php-format +msgid "%s already exists" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:952 +#, php-format +msgid "%s added" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:997 +msgid "Add" +msgstr "" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "טקסט" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "הגבלת מספר תווי×" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "הש×ירו ×ת השדה ריק ×× ×ין מגבלת תווי×" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "×זור טקסט" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "שורות" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "קובע ×ת גובה ×זור הטקסט" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "×מת / שקר" + +#: includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 includes/input.php:267 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "כן" + +#: includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:169 includes/input.php:268 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "ל×" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:165 +msgid "Off Text" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:166 +msgid "Text shown when inactive" +msgstr "" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "כתובת â€Url" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "הערך חייב להיות כתובת URL תקנית" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "משתמש" + +#: includes/fields/class-acf-field-user.php:393 +msgid "Filter by role" +msgstr "סינון על פי תפקיד" + +#: includes/fields/class-acf-field-user.php:401 +msgid "All user roles" +msgstr "כל תפקידי המשתמשי×" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "עורך ויזו×לי" + +#: includes/fields/class-acf-field-wysiwyg.php:359 +msgid "Visual" +msgstr "ויזו×לי" + +#: includes/fields/class-acf-field-wysiwyg.php:360 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:366 +msgid "Click to initialize TinyMCE" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Tabs" +msgstr "לשוניות" + +#: includes/fields/class-acf-field-wysiwyg.php:424 +msgid "Visual & Text" +msgstr "עורך ויזו×לי ועורך טקסט" + +#: includes/fields/class-acf-field-wysiwyg.php:425 +msgid "Visual Only" +msgstr "עורך ויזו×לי בלבד" + +#: includes/fields/class-acf-field-wysiwyg.php:426 +msgid "Text Only" +msgstr "טקסט בלבד" + +#: includes/fields/class-acf-field-wysiwyg.php:433 +msgid "Toolbar" +msgstr "סרגל כלי×" + +#: includes/fields/class-acf-field-wysiwyg.php:443 +msgid "Show Media Upload Buttons?" +msgstr "להציג כפתורי העל×ת מדיה?" + +#: includes/fields/class-acf-field-wysiwyg.php:453 +msgid "Delay initialization?" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:454 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:573 pro/options-page.php:81 +msgid "Update" +msgstr "עדכון" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "הפוסט עודכן" + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "" + +#: includes/input.php:259 +msgid "Expand Details" +msgstr "×¤×¨×˜×™× × ×•×¡×¤×™×" + +#: includes/input.php:260 +msgid "Collapse Details" +msgstr "להסתיר פרטי×" + +#: includes/input.php:261 +msgid "Validation successful" +msgstr "×”×ימות עבר בהצלחה" + +#: includes/input.php:262 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "×”×ימות נכשל" + +#: includes/input.php:263 +msgid "1 field requires attention" +msgstr "" + +#: includes/input.php:264 +#, php-format +msgid "%d fields require attention" +msgstr "" + +#: includes/input.php:265 +msgid "Restricted" +msgstr "" + +#: includes/input.php:266 +msgid "Are you sure?" +msgstr "" + +#: includes/input.php:270 +msgid "Cancel" +msgstr "" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "פוסט" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "עמוד" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "שדות" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "קובץ מצורף" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "תגובה" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "מנהל על" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "עמוד ×ב" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "תבנית עמוד" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "תבנית ברירת המחדל" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "סוג עמוד" + +#: includes/locations/class-acf-location-page-type.php:145 +msgid "Front Page" +msgstr "עמוד ר×שי" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Posts Page" +msgstr "עמוד פוסטי×" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Top Level Page (no parent)" +msgstr "" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Parent Page (has children)" +msgstr "עמוד ×ב (יש לו ×¢×ž×•×“×™× ×™×œ×“×™×)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Child Page (has parent)" +msgstr "עמוד בן (יש לו עמוד ×ב)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "קטגורית פוסטי×" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "פורמט פוסט" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "סטטוס פוסט" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "טקסונומית פוסט" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "מונח טקסונומיה" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "טופס משתמש" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "הוספה / עריכה" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "הרשמה" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "תפקיד משתמש" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "ווידג׳ט" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "ערך %s נדרש" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "שדות ×ž×™×•×—×“×™× ×ž×ª×§×“×ž×™× ×¤×¨×•" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "פורס×" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"××£ קבוצת שדות ×œ× × ×ž×¦××” בפח. יצירת קבוצת שדות מיוחדי×" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "â€×©×’×™××”. החיבור לשרת העדכון נכשל" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "עדכוני×" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "ביטול הפעלת רשיון" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "הפעל ×ת הרשיון" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "מפתח רשיון" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "מידע על העדכון" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "גרסה נוכחית" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "גרסה ×חרונה" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "יש עדכון זמין" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "עדכון התוסף" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "הקלד בבקשה ×ת מפתח הרשיון שלך לעיל כדי לשחרר ×ת נעילת העדכוני×" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "בדיקה חוזרת" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "הודעת שדרוג" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:808 +msgid "Select one or more fields you wish to clone" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:825 +msgid "Display" +msgstr "תצוגה" + +#: pro/fields/class-acf-field-clone.php:826 +msgid "Specify the style used to render the clone field" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:831 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:832 +msgid "Seamless (replaces this field with selected fields)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:853 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:856 +msgid "Prefix Field Labels" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:867 +#, php-format +msgid "Values will be saved as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:870 +msgid "Prefix Field Names" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:988 +msgid "Unknown field" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:1027 +msgid "Unknown field group" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:1031 +#, php-format +msgid "All fields from %s field group" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:174 +#: pro/fields/class-acf-field-repeater.php:470 +msgid "Add Row" +msgstr "הוספת שורה חדשה" + +#: pro/fields/class-acf-field-flexible-content.php:34 +msgid "layout" +msgstr "פריסה" + +#: pro/fields/class-acf-field-flexible-content.php:35 +msgid "layouts" +msgstr "פריסות" + +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "remove {layout}?" +msgstr "מחיקת {פריסה}?" + +#: pro/fields/class-acf-field-flexible-content.php:37 +msgid "This field requires at least {min} {identifier}" +msgstr "לשדה ×–×” ×“×¨×•×©×™× ×œ×¤×—×•×ª {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:38 +msgid "This field has a limit of {max} {identifier}" +msgstr "לשדה ×–×” יש מגבלה של {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:39 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "שדה ×–×” דורש לפחות {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:40 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "×”×’×¢×ª× ×œ×¢×¨×š המקסימלי של {label} ×”×פשרי ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:41 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "â€{available} {label} {identifier} ×–×ž×™× ×™× (×ž×§×¡×™×ž×•× {max})" + +#: pro/fields/class-acf-field-flexible-content.php:42 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "â€{required} {label} {identifier} נדרש (×ž×™× ×™×ž×•× {min})" + +#: pro/fields/class-acf-field-flexible-content.php:43 +msgid "Flexible Content requires at least 1 layout" +msgstr "דרושה לפחות פריסה ×חת לתוכן הגמיש" + +#: pro/fields/class-acf-field-flexible-content.php:273 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "לחצו על כפתור \"%s\" שלמטה כדי להתחיל ביצירת הפריסה" + +#: pro/fields/class-acf-field-flexible-content.php:406 +msgid "Add layout" +msgstr "הוספת פריסה" + +#: pro/fields/class-acf-field-flexible-content.php:407 +msgid "Remove layout" +msgstr "הסרת פריסה" + +#: pro/fields/class-acf-field-flexible-content.php:408 +#: pro/fields/class-acf-field-repeater.php:298 +msgid "Click to toggle" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder Layout" +msgstr "שינוי סדר פריסה" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder" +msgstr "סידור מחדש" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete Layout" +msgstr "מחיקת פריסת תוכן" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate Layout" +msgstr "שכפול פריסת תוכן" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New Layout" +msgstr "הוספת פריסת תוכן חדשה" + +#: pro/fields/class-acf-field-flexible-content.php:628 +msgid "Min" +msgstr "מינימו×" + +#: pro/fields/class-acf-field-flexible-content.php:641 +msgid "Max" +msgstr "מקסימו×" + +#: pro/fields/class-acf-field-flexible-content.php:668 +#: pro/fields/class-acf-field-repeater.php:466 +msgid "Button Label" +msgstr "תווית כפתור" + +#: pro/fields/class-acf-field-flexible-content.php:677 +msgid "Minimum Layouts" +msgstr "×ž×™× ×™×ž×•× ×¤×¨×™×¡×•×ª" + +#: pro/fields/class-acf-field-flexible-content.php:686 +msgid "Maximum Layouts" +msgstr "×ž×§×¡×™×ž×•× ×¤×¨×™×¡×•×ª" + +#: pro/fields/class-acf-field-gallery.php:41 +msgid "Add Image to Gallery" +msgstr "הוספת תמונה לגלריה" + +#: pro/fields/class-acf-field-gallery.php:45 +msgid "Maximum selection reached" +msgstr "×”×’×¢×ª× ×œ×ž×§×¡×™×ž×•× ×‘×—×™×¨×”" + +#: pro/fields/class-acf-field-gallery.php:321 +msgid "Length" +msgstr "×ורך" + +#: pro/fields/class-acf-field-gallery.php:364 +msgid "Caption" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:373 +msgid "Alt Text" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:544 +msgid "Add to gallery" +msgstr "הוספה לגלריה" + +#: pro/fields/class-acf-field-gallery.php:548 +msgid "Bulk actions" +msgstr "עריכה קבוצתית" + +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Sort by date uploaded" +msgstr "מיון לפי ת×ריך העל××”" + +#: pro/fields/class-acf-field-gallery.php:550 +msgid "Sort by date modified" +msgstr "מיון לפי ת×ריך שינוי" + +#: pro/fields/class-acf-field-gallery.php:551 +msgid "Sort by title" +msgstr "מיון לפי כותרת" + +#: pro/fields/class-acf-field-gallery.php:552 +msgid "Reverse current order" +msgstr "הפוך סדר נוכחי" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Close" +msgstr "סגור" + +#: pro/fields/class-acf-field-gallery.php:624 +msgid "Minimum Selection" +msgstr "×ž×™× ×™×ž×•× ×‘×—×™×¨×”" + +#: pro/fields/class-acf-field-gallery.php:633 +msgid "Maximum Selection" +msgstr "×ž×§×¡×™×ž×•× ×‘×—×™×¨×”" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Insert" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:643 +msgid "Specify where new attachments are added" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:647 +msgid "Append to the end" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Prepend to the beginning" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Minimum rows reached ({min} rows)" +msgstr "×”×’×¢×ª× ×œ×ž×™× ×™×ž×•× ×©×•×¨×•×ª ×”×פשרי ({min} שורות)" + +#: pro/fields/class-acf-field-repeater.php:37 +msgid "Maximum rows reached ({max} rows)" +msgstr "×”×’×¢×ª× ×œ×ž×§×¡×™×ž×•× ×©×•×¨×•×ª ×”×פשרי ({max} שורות)" + +#: pro/fields/class-acf-field-repeater.php:343 +msgid "Add row" +msgstr "הוספת שורה" + +#: pro/fields/class-acf-field-repeater.php:344 +msgid "Remove row" +msgstr "הסרת שורה" + +#: pro/fields/class-acf-field-repeater.php:419 +msgid "Collapsed" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:420 +msgid "Select a sub field to show when row is collapsed" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:430 +msgid "Minimum Rows" +msgstr "×ž×™× ×™×ž×•× ×©×•×¨×•×ª" + +#: pro/fields/class-acf-field-repeater.php:440 +msgid "Maximum Rows" +msgstr "×ž×§×¡×™×ž×•× ×©×•×¨×•×ª" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "×œ× ×§×™×™× ×“×£ ×פשרויות" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "×פשרויות" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "×”×פשרויות עודכנו" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "" + +#~ msgid "See what's new in" +#~ msgstr "מה חדש ב" + +#~ msgid "version" +#~ msgstr "גרסה" + +#~ msgid "Getting Started" +#~ msgstr "תחילת עבודה" + +#~ msgid "Field Types" +#~ msgstr "סוגי שדות" + +#~ msgid "Functions" +#~ msgstr "פונקציות" + +#~ msgid "Actions" +#~ msgstr "פעולות (Actions)" + +#~ msgid "'How to' guides" +#~ msgstr "מדריכי ׳×יך לעשות׳" + +#~ msgid "Tutorials" +#~ msgstr "הדרכות" + +#~ msgid "Created by" +#~ msgstr "נוצר בידי" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "â€×”צלחה. כלי ×”×™×™×‘×•× ×”×•×¡×™×£ %s קבוצות שדה: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "â€×זהרה. כלי ×”×™×™×‘×•× ×–×™×”×” %s קבוצות שדה שכבר קיימות, ולפיכך הן ×œ× " +#~ "יוב×ו: %s" + +#~ msgid "Upgrade" +#~ msgstr "שדרוג" + +#~ msgid "Error" +#~ msgstr "שגי××”" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "גררו ושחררו כדי לשנות ×ת הסדר" + +#~ msgid "See what's new" +#~ msgstr "בו×ו לר×ות מה חדש" + +#~ msgid "Done" +#~ msgstr "בוצע" + +#~ msgid "Today" +#~ msgstr "היו×" + +#~ msgid "Show a different month" +#~ msgstr "הצגת חודש ×חר" + +#~ msgid "Return format" +#~ msgstr "פורמט חוזר" + +#~ msgid "uploaded to this post" +#~ msgstr "העלה לפוסט ×”×–×”" + +#~ msgid "File Name" +#~ msgstr "×©× ×§×•×‘×¥" + +#~ msgid "File Size" +#~ msgstr "גודל קובץ" + +#~ msgid "No File selected" +#~ msgstr "×œ× × ×‘×—×¨ קובץ" + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "שימו לב שכל הטקסט יועבר ×§×•×“× ×“×¨×š פונקציית וורדפרס " + +#~ msgid "Select" +#~ msgstr "בחירה" + +#~ msgid "Warning" +#~ msgstr "זהירות" + +#~ msgid "eg. Show extra content" +#~ msgstr "למשל: הצגת תוכן נוסף" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "â€×©×’×™×ת התחברות. מצטערי×, בבקשה נסה שנית" + +#~ msgid "Save Options" +#~ msgstr "שמירת ×פשרויות" + +#~ msgid "License" +#~ msgstr "רשיון" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "כדי ל×פשר קבלת עדכוני×, × × ×œ×”×§×œ×™×“ ×ת מפתח הרשיון שלך להלן. ×× ×ין לכך " +#~ "מפתח רשיון, בבקשה בקר בדף " + +#~ msgid "details & pricing" +#~ msgstr "×¤×¨×˜×™× ×•×ž×—×™×¨×™×" + +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "כדי ל×פשר עדכוני×, בבקשה הקלד ×ת מפתח הרשיון שלך בדף העדכוני×. ×× ×ין לך מפתח רשיון, בבקשה עבור לדף ×¤×¨×˜×™× ×•×ž×—×™×¨×™×" + +#~ msgid "Field Groups" +#~ msgstr "שדות וקבוצות" + +#~ msgid "" +#~ "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "טעינת ערך המבוסס על ×”×ž×•× ×—×™× ×©×œ הפוסט ועדכון ×”×ž×•× ×—×™× ×©×œ הפוסט בשמירה" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "טעינה ושמירה של תנ××™× ×œ×¤×•×¡×˜" + +#~ msgid "No taxonomy filter" +#~ msgstr "×œ×œ× ×¡×™× ×•×Ÿ טקסונומיה" + +#~ msgid "%s required fields below are empty" +#~ msgstr "%s שדות החובה שלהלן ריקי×" + +#~ msgid "1 required field below is empty" +#~ msgstr "שדה חובה ×חד שלהלן ריק" + +#~ msgid "%s requires at least %s selections" +#~ msgstr "%s מחייב לפחות %s בחירות" + +#~ msgid "Data is at the latest version." +#~ msgstr "×”× ×ª×•× ×™× ×”× ×‘×’×¨×¡×” העדכנית ביותר." + +#~ msgid "Data upgraded successfully." +#~ msgstr "שדרוג ×”× ×ª×•× ×™× ×”×¡×ª×™×™× ×‘×”×¦×œ×—×”." + +#~ msgid "Data Upgrade" +#~ msgstr "שדרוג נתוני×" + +#~ msgid "" +#~ "We're changing the way premium functionality is delivered in an exiting " +#~ "way!" +#~ msgstr "×נחנו ×ž×©× ×™× ×ת ×ופן ההפצה של יכולות ×”×¤×¨×™×ž×™×•× ×‘×¦×•×¨×” מלהיבה!" + +#~ msgid "Update Database" +#~ msgstr "עדכון מ×גר נתוני×" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "למדו מדוע ACF PRO נחוץ ל×תר שלכ×" + +#~ msgid "ACF PRO Required" +#~ msgstr "â€ACF PRO נדרש" + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "שינמוך ל-ACF גרסה %s" + +#~ msgid "" +#~ "Don't panic, you can simply roll back the plugin and continue using ACF " +#~ "as you know it!" +#~ msgstr "" +#~ "×ל תלחצו, ××ª× ×™×›×•×œ×™× ×¤×©×•×˜ לשנמך ×ת גרסת התוסיף ולהמשיך להשתמש ב-ACF ש××ª× " +#~ "מכירי×!" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website " +#~ "makes use of premium add-ons (%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "זיהינו בעיה שמחייבת ×ת תשומת הלב שלכ×: ×”×תר ×”×–×” משתמש בהרחבות ×¤×¨×™×ž×™×•× " +#~ "(%s) ש×ינן תו×מות ×¢× ACF יותר." + +#~ msgid "" +#~ "If multiple field groups appear on an edit screen, the first field " +#~ "group's options will be used. (the one with the lowest order number)" +#~ msgstr "" +#~ "×× ×§×‘×•×¦×•×ª שדות רבות מופיעות במסך העריכה של העמוד, הסדר ייקבע לפי ההגדרות " +#~ "בקבוצת השדות הר×שונה. (×–×ת ×¢× ×ž×¡×¤×¨ הסדר הנמוך ביותר)" + +#~ msgid "Select items to hide them from the edit screen" +#~ msgstr "בחרו ×¤×¨×™×˜×™× ×©×™×•×¡×ª×¨×• במסך העריכה" + +#~ msgid "Field groups are created in order
                          from lowest to highest" +#~ msgstr "קבוצות שדות יסודרו
                          מהנמוך ביותר לגבוה ביותר" + +#~ msgid "Logged in User Type" +#~ msgstr "סוג משתמש מחובר" + +#~ msgid "Top Level Page (parent of 0)" +#~ msgstr "עמוד ברמה הגבוהה ביותר (×œ×œ× ×”×•×¨×”)" + +#~ msgid "Trash" +#~ msgstr "פח" + +#~ msgid "Revision" +#~ msgstr "גרסת עריכה" + +#~ msgid "Private" +#~ msgstr "פרטי" + +#~ msgid "Future" +#~ msgstr "עתידי" + +#~ msgid "Draft" +#~ msgstr "טיוטה" + +#~ msgid "Pending Review" +#~ msgstr "ממתין לסקירה" + +#~ msgid "Show Field Keys" +#~ msgstr "הצגת מפתחות שדה:" + +#~ msgid "Hide / Show All" +#~ msgstr "הצגה/הסתרת הכל" + +#~ msgid "Import / Export" +#~ msgstr "×™×™×‘×•× / ייצו×" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-hr_HR.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-hr_HR.mo new file mode 100644 index 0000000000000000000000000000000000000000..0b278c3d2b5d93644cd25686c877a3d2a57acf97 GIT binary patch literal 50022 zcmcJY2b^71wf_$gTIjtAo&?e$nG|{m2_c1qlo>LUP(9m?dKUPd!=q@+9#Qm$SqhD!t!GBjao{#^AMiHt5b)o?Gr;$N3&H;e z$r?>PD~cwAXM+2I=Yz+B>%nR@Eq{Z;J)CQRB|x5 z6x<8k0ImZs1!->dR&WmZ4p8+!0jj;NIZ=6n+4BICvO16+93;162G9 zQ01)i@Jl?r&;3=$Yd!oX@JQ0%2F?KA2_6f69aQ^%399_xfRBT_FN&fQz;A)7=TD&G zCow3(!yKoAQ}E9R)y__Ef3Oc+3N}EE^TXh5@RQ(a;4i^L!IKt;aX1rHJ?DW(fos5{ z!5%OMuXg`kpvL!MQ1kpza8K|{pvLnXpvLVlZ-*r&*dmX6yZ}spy!MXU~2CANKf@;V2L5;_cL9L5Fd;AIKhx(_3ClY=-sC1Wt zs%H><4!9N6Jbm56p8}Qcm!R6Y+p-XU2&j6W4XyxZfTD{b@EGt0@B;8|kfjs-2vomL zTpmTogLAOBd>g2K?*NtlF>ng_TW~6PB$b{Bo((GexuEFy`Ht@dr{RAB zRQ|t#N_YIq5Wd8*2x|Sm98~-V!IQyngIWiB(FyhQ7*Oq*0&08~fR};ift$cP!6U$5 zgL{GdtP1H40yVzJgX;gupy=xiaBpxaD7sh;s{NOMCxI^pRnPsP+VKHUyP<-KOP<-@{j)$!Y>$nZnc&-2ye+jq&tb6>YLDA!PLD9`K zpvpUXExZ(*1B$*kgPP}U;8O59P~-hca5DHAQ2qQWsPX(3xG(s$J^% z8dP~Vfct~51T`Laf=c%=sC=IQ&jmjNs=s@-hxY6bs(r_SO5XCar*`U^6JJ<$Z32Gef235{Op!m?o!2`grf(L=$2i1;WfvRVZ zi=ZuVfBxJ9UID5cO|s_aa8Ug?22^`uP~&+rsBt(CJPlk2D&GshZQyIcJ-~xIL;ns3 zRsXS|=J8|?Ukx6Jza3OPSAbdvMNs8m>)|g4HU6&x4+HN2)z5c>D(^#}+WQ2k@qH3h z|9IjDLE9JhdK&x=5n_Zo0M_;(so< z9=r)`1HS`8qS1br27E5KJN^g2=YbD`M}UVRY(y8cK(%WXcryT%~~b@p$*o09D@{Q0W$U{Q029buFlVUgF`spxQAE zs@+>W{#BsbbvLN;-wvw3?{)unkRge_2%ZkkdTx-rn?dD!1*mr12CBY0K-K>?Q2l(! z{U34sEU0u}cYF#|y}tsj-=Nm--dFg#0uRG~5_l+h7N~O9fTE91Q1kjiQ2E~gYMs0t zRJwP0`1?TB`$dT336>;@MQd_gPMouIhH}yv(@p1pvr$Gcq;g2Q2qKQsPX^C-9%_@Cgu;E%vP!C!-#&p(2b!AXO`e-OAg{^P*I!4pBX z^DI#PJQvhFuLbu23!uvD2bHekSO@pPzZF#buLo7`&ES6E?V!@%3#wgjb9@lgczguZ ze0&X*y!jb81w5hb`wdX^eJ8jA{1UhndOBhVT?7Bcl_;7CJ`A1=eh)PIsfKxJ1J5J8 z2#P-L180LzgLA=yhXWm+2dbW}pxXIPa6j;2@O1E#p!)wu@ILUbAWe+{{gDp{{r_1e+6oM{sL;;cdv(hhkzQ-W5C0}8KCC(9PnW9 zd{E_df+}Y-cqmu~mGAkW>c0t8`rAO2f1k&{&%-|jK8x_LyZ?Vc(bMjYFz-i$C*Xe; zsCJ$MYJARfyb#nn=>k=L1(e*q22?pWgX;fVK+X3%K&AgAsCoMiI0M|X8OCQ0D0*52 zY8)>D)&9#Jhd`BoEvWIh1yp};2Q?mV0q+I>9aOm+M}qz98c^f$D5!RR4HTU{1=_mU z63ROWRC|vEHJ;A`m3}U$b+8!JIGhhI059CP6OW!?hbw( zRC^x>4+5VC)t}!uJ_D+}-L{7I?F%aX;h@sRpvsv6YCcW|HBP6we+8)Y?T*g@)viA9 z3~&fM4SX|LqGL~h)A296I@C7+s$EU+0`SFP2lxe0<8i_@f$rvjs%Ig19JmrZ73>C2 z2VV=W0zVH<1&_Ek@awa{`|;O7t;Z9dAKJeL)cjr!s{a-6h2RLN_CEuj0!G(`d7llc zJqtm#V>NgrxDizPGN|wxsPVZLRQ%1L#_c{(^}PqwI{GB2@GpUy|0h7@`x&Tl{|l)6 zldcbZ^EgoJdLAhHSObb4+riI)&jmFuGhYzOT@H%g)`J?~OFg^Xz&?OeCsd4wnG{XvcAVW8&i1n>lKCa7{Q09EcrP~%w! zRo*q=N#M)Cy}$=R&Bw#;|FrwR0G>nmcfsl4F*gQ04^%t)K-E(PH6GVEz5-Oc?gZ8D z`@jTz5Znhm{3W5i$AhYO1~>&g6Wj;96g(X42B(2rz@xysK&5{lxE$O8s{Y9@4fAz0 zsQ#V|D&100@fSI620QQ%ftue(K$ZVx@JjIa;00j+%R;{Qfcq*PxF`5oa5DHs4}SvO z3;)xg+WQkw{r#KcelHLCj{-IRQ@}mI1)%2P3~)bi8K`pFLA7_2V*%V7f6Z|eRKH%} z{#St-_dCGDz_)`c=cAzdx83nE5Rnl52pk5lctuG6B~ax*?f6qr_5TJGUG8>Mn2)_c zm3t7V`i=xe7t=t^TLK;cz7W(pycK*F_-1f2_z6(+@_A6>@U(~j7Sz1{4b=D^^~x|F z$2-mfRp06EU+&les+`NgeZV2`0B{6UIWO|~mw_6GJ3-CkyTCc%`@uHw2cY=K;Wr1q za}lWWs-VVsE2!~#38->zaeR~GL*PM#e;QQ1kAeGv-*NmAxIg~ix_`G@Li_=s+H(vj zx;YV4`DcOR4;O+*fIW`eK=HYo!5;8_Q0Wf5HH`BNP~*59RKCl>Gr=0D^6v-LzK?+; z;0{pzT=c3iUn{^v@LvKR3=V(?f>(L`%fMOq?*dN*KLe^gKLu6qUat=P>;&*o{0l*i z+d5F`Hi9aD7(5Mp0eCL>eo+1S9Vq&`^fjTK&jXdd7gRg8f@<%L9)1fr6aSk)jrXIV z=$@@C%_@KjLrw-D5PTm;?@UIA)ceh;di{{>ageym9d)8n<6Ms&MhwLqPHWGr+^ZOF_w_AyD&wBM9k7w}Msh*{=)pc{8Z>_fAm# z_;*nK`~awSZU@!wuYpUzC%_}XV_whLf^$LTd(iQN;6eC54#wb@J^X(_$)P{G|L{9P z{BfZAvk0_#1XbQfQ1x8y;WhAB{G*`ya~r7neBxFF=jUGoaER ze`gr?d7$R;Y;Xg(+{15oyxZ~Zpq1~q-NPRPmH&HS8~79O6!4fgptFK2z;nQtfa=$F zQ1ktHQ2qS|sP_C2RDb>is^5Fu71B?3JQP&EV?pIR(eX5oUjZurI#B%PV(@tI#h~c# zUa$*%52$o|{##hj2Z0)|nT}_HC*WTNihlYWuL8yIZU!|DcY)%=4}hYJuYelo#~q&r zH7>t&dMA89R^;2|Jk6z`@n@@6Pyda2b>3fA6y9@ayK*#UIOk8ej3~a{s(w0 z7~d1<=p68P{Fj5%!BJ4{xCc~u?*tDAzYDGhe+?c5E`3u7zZ4X`SHLOYHK6A0jo>Ws zt)S9>1yp~342sTv2WtHsbZ@}JL4_X!D*dUT=5-Bt0=NOxd|v4|3TnJx2&%oegDU?` zpvL#zpwd4CYWzP6YF@wO{_lXw{|gV_{mmi$LEwpm9}TKsi$L{f4XE-vL6x@|wDy1< z_(#E0!AHSogMah*XTK%%V+d$>N+v6W} z{|@jt!XF1U{=WfL{t@?uebkAd%DW5{oeY6{fOmm=f%kxF$J;>F^Pq=+6kLLTJE-xP z^j2sLoC#_io&c5p2jC>|SKzb2-+_C9hrTV;dkm;_vq9B!Ca82vLG|wn53hkrcQtql zcq2Fsd@rc>KLN(z&%lGh1Ku9S;{;IjF%R4aYzNi9OF*^ra&T|3A6x+rgA2fiLACS8 zpvLQ0j(-I;@B7~$$~g|yI(s&_FL)WK^#&V2EG{F{hguSmw?CZ#(D!qcOQON zSU=we&%*y3a4I-mK$wR$;K}%}1l6uL zfa>?xz{%iGK+(zXK(*r-h(+^pHmLrb4{F{Ep!$D3sD8Z$JPEuH)I2;2?hiiU_(Skq z{J(Mk{C^L8YB9K)@FFPsdjM3q4}qtHp8?gLzkuRzQyvWcSpq737pQ(*3eEy=0cV0A z0@ePf-M`0seSSdE%X#3Q;02({SqEyIHh`j!K5#$qN>Kg320R$N0aX8P2Q~h00gnbh z3W`1-b9~bAhoI{F1*r0V2Oa|M_E5-o7^wN14XQn>K&4v`9t2(ns{aGvH1L(6=IuwTL5lyq|VF=3`;qw1Y}N0;*rvJKhQ^-#wtp z{TQhBJO-*C-via2-+?!Qdwe|TO}B#U@qY|dxd(nClzR-=hJO~QdAbA?Jr_aIdl^)H z4N&9#DsXr3tsZ|r*pB}}a5r%GPlonP0yW622V58BE zxw3A?Jwn*C70z=ZkA8CqFL}NXfJOXAg3F03fW6>FJlEl#0xlwc3(q>-`rX2F4F1c6 zJU`{RgtYoy;CL_YSGoIl;4?f2xL@fs{?Dh3{|0|f_~|@X;NOb>RPZMJhkN>Og0Cb@ zznAcA=6M-mPw*V+;cGzHSu{-8`QSA?KgRuj9%|9(&Nd&17- zS2AaS{@}HH zzj8i6_~ktMy~y#=;Eiq}{fl^(5Pl6fgYcTC*$(#d{F<=efZ`7Y(rBH(8vlIU`|+&A ztzSRS>v4Yv>;^}Po6Mu%p94f^68>z$F5!8t$9>!L&nC^m9`+opvZ z|0r=o_)p;Zx~KaF_*$OZNk5J7mxJr^e+!)Cd0&bDD*V^szX$vup4ai*K==rcewXn4 z(OlS1NOv;f=i>h<_*|Z4URE9VL!R!9xWC};ONrlr|Cjjx1`gx@IQTlARi0N#hdsUE zT*6;MeEK`Z9d9D6g8PtMzH15FMA%osV{&49;9flM;@O+HXTT4E-vqme{|Y!4{3>_|;R(1D z+`)4n&qTi(fgdBTpM0xup9sDf{2pQF;7)(gu~4v_9y?tc&NQ*mFz^9S6k!7|TTxcBF|l5#$Y{|Ima&+~Cl z1y2L@o6mEsxoA7#b8x?k=jS{x$FJX$JR`XKz~_0sn{i)>`$_k=5q~l6r+GfebDHP< zBkmvaT*$M;!!86*!hbYn==V3C5@B`lHQ<5ZY~uBs0bT(9kmtV?z;92|NMBvRb3XCk z1NSBD08qa@J+Isgd7i_wH_v{AZ{hhZZvC_eSjO`XdHnY~$6u0eF=f6tSJvaWFDGn0 zkA64tJjL@3o-Y%(i055AKf$lxn|MCMvxVno!u5M)far~2jdDIm_`mVIljqMoul4vm zbh_v5;2AvaX1kb2 zToHeXX8`vbJgx_~elca}w+;LP&tt)B`d|4q0DJRAp-?QC zqg*Q{g>7+hYpLF-E5x$JeYI+HI4(4Y%cY*AQ7p8Li>m*fxVXNp($in7R!a4WGVT;R zl9ZdpxRf=u5Y4Pq<3_1bF3yThiI)}%@k;e2n(vMCF42vwPm8)2uc+0kwMBEg7q`XB zs?BmCu2dUwPqk7h_B7%~HEs?U=t*2J)<%l8Xjd7^)uf=|nNzLQ<1&Myl%2&gg{bVf z)F=+sRUE*34eeG!Qlg#1 z)h)$ZZ?hct7L!J^R;0@i!L{NrK}mPH7}NV?cHCQLs^v|qFDKio%|?B8oY0D- z*(j-;zNB0(*0y=oNu^*NOS((tQe&HXPwzCC#jTB6Lc@njmAE=A>Y_18U$H*L8d<4s ziR;M-?I|@<%BmL|4Z6?d5n3sfMoNWdQl<;_MqKS4V4UmG(w?4btsq)m+S4eFsHU~0 zo?@j=-xZKTyr@2$RN|g;Qm>yowWr#wG^Q?|Ijufx(Og9=_SFA4S)mY#%x2iQ&xm{a zt5m0cG7j`X6X%m*#7YZEJvUy#Oq+9MsZ5&)TRlYYTP_uGK^RL5TwmOhqSLf85gL5) z1zL7linTU1=G{;Y8N+N@kmxEj)VwuMQEM`}wtOv^2KZ#kE2;)Z63D0!FAMZ#i)&ZG z@p6$*QZL3Ehx=+tL7kf@y9hE`S}yB}#YU>Np+r-O_q2GpRvaodhq8s$4^af7@2L)T zmnt--RMBwTYFU)T{k3B6xl^arr!MZORbv)x9cqZHy)m@EXl}w9zqr)skGq+$m~~OF zR-hr#X`wh$ELRC)@fyWIXd_9ftR*lzYe#Rh0v#!n=o!{CR27TtrPT#nEGjDL=_%Ih zwpbedkQpV{Xf$bxkT?CZg-KVn@YQ88sdVUxE{PVx2pDxYwhgJ=#iUqT>*;45)Z>jC)>;*Wh3Qnw@T}@uw>BP1YJ;$G zvKLDAVQ5E-ZlvUWV(~KS^#%e!BU>w03UHW8pO>({SuQVew`i?VtOd?TQ^N8u#9R7H zW!9}YUMpjxp8;j?!V*^P%ts~O!i2$TSgqB%_@Aw{Ivi5%g#db4LvcDrjkt^EMN5Za zUo}yyJ1MxAh8R04Rfd~s60uNC%mfiz`l;L+tXczwX+E+N)iC&%Sa++)3LJsT#rcp$ z;_4x!ye&${9!D{TdBSXKMMkR8NP7B*VCm7)CS9!wsw@H|Xt~VLv(l%R8|QS_ruQ|@ znILkQp0dP-`|Hv9Nxjq)ogcbnRWy=XBW~KjsWqCAWJ|GL9V%u_AM!32wNhQuk*{W4 z-H||eziFPe zYFxBTBq6X?fQ@2b73o-ymNEXtnuE_N#0hs8N`|9ltm8g<+$UF!dg$QV(hyvHS%0yI zX7nLXgS)%B6-S8`tuDqhC8n7nil0Te8>DtP~Ik z%c|vaG7L#9FE(I;G}QwNav{|^C{Dvw9U4kdjYNWId#3ob#cPYkrprlX&_p0)>bk5t9Q2TKX}G(Z)CdV0NtbF#J?au#1-uQRXj)sLsAf=}SQjc%PFJhL zq39sYShL38Bo%Zn`UAUDnJQyOoN^n|VEml-6Ky6KithA-;c1qrg?L;UvCM}&Xg{0#6zK*M+C)eTiEbfV# zfrPDDLssFKFvU=*r$$vhmTH}QSiQSQTxJiHB@UilC$2Obp%3dya!y#}a2TkLi3cjg zhJossFh8xK0oM9XbM7LQc5I$X&IwaBnAG-4d0UtEnv>w_3=FJxXyTSDwUzjHQ;b5Y zS*rLlBiy1S+L&$3@?vk&EYqrhaaWOb2YqJ&h|;F{#H*xyRtm#a*1R!dEQNMgOp9G=Jloxl*mHAiRPq6)XktSS41mQZqBjWwLOI zLSZTn@!GJj34wuq5yg(V6vX-RQXQ5nUKin%-kPH6APK|f>g+gG6A^8yCQ5^Lp$Ovy z%Y`SVC-4DwbX9hr?A%Q@_ektZ)Gx30G$qo4@LpcsQZY-w^msKIGJ-E!j&ddjSS!M! z;q}W?+epimbu5ia`KGU4W{zIra zeFw6lTvUJR(F#^AbB|OlFrX`j&;$636(a6Lvxv~_jIeM>8)84Q+cb0j4{WPWBy?)R3Rr>OIMD z(RMV^img4x+AvXD+20r9RIR}aYt3(>>315&n5_(Uk#v7<;y1FtKD;@1-6Pf%x24XY zbcQtR6WBv=cCn#zXIKRVBXdYD#Cu?kEsN{q`YdctLn)=;}8QXwnH|nxk1jn>1 zZ}J=87c=FJG4SQHhTY28PPzJ%u!6B{#kS&tdY0IZ5K^i^AfXuT8RJ3~1y4NAESVw3 zN33zI7zLf^B!dm|RvHy9dCktYn%mL@d4r%2nfB-XLC1P|33?cNr5 z$Xw?1SN5>3U{$a-dXS6?st&IPgB9aSL~Eb2GBpUg79Nccu;qvanejfIJBG)XXI*Z>EzE0+evfJ^m-k+zkJ_no8YL~{kRlC(POdy^4uYmqlq1UI^sOnq9-6+@$i7yqJJqqx1lV~+| zPZlu|l|Fa~?K4rpkr;~zl9R!$JL!?>bgT`{ZH!QW7&S$E zc&mx0Es4-6qM%IJ-<*s!zndUfq|RzIF?EU4wMh+@wif2a8cmG}u1AkI({OlJHk;Pk zB8mr$wGaDxw6<93YxGBJ166=#9gj5|veZl2PQ$E~D#3Wl5Isc@J2m-H?^caSM zSTv`Y!CIZ4b(s;yoIx)%6S*iyO1Sv6;ut>=pUN z2e(SN$|UnOfp*eT(#ozvcyW3ROQ>B#7Dz%JEmoTLCtj^Bjl6L>dGr*o{?_Y~##jXO zgaHcJ8X)(F0dh}nfIP$p$bCLQ?i)WqrAjtHo??PwP@>i_==4BZMzl^Ym+Z0zn(ASe zI0nCtk(YguEV#xu;St$ZQv|&Z;b4E*aJebXy*bNY2w7=|+RBi!S`NUFXgd0}twTsg zRUER``^WN{C5jYNvr-smX$#K#gJ(|B_DI1aJ;KJX9<5KTAaCj?__?{zT`@kExF+eMJmL#A-{@jY-O6&a<^8@a2<6< zJhRgVcy>#}ogJr&?JO&*(>FEd(PY>;SlDZ!h-o%9m&KXVYGnS=LQ^{s8CA9jCiQWd zR^W%`;jA}3#>1^3bBt)Uij92th4zNggU35=|uD z0oWJz$V#dJPN#>mKZkKmO9=uoRrQP_tw=xkf-NA>!)dAIHcrOSl?yRef~JicC06+t z=WWzsid8xs*9ivMnXhP^so3rC$ppoiy_X7%jK-9#YIhEmzSbqu&!W8{{{ zR#ebIa)D|J7WMTSs&cvu5p6?QtTJ{^{LvO5YVYkuoU{JhnF~V>MWc59==z5AMOM`o zJ8hZ^?;ys6Wr}uqmU%YX6`VrUZWc8A8?UdnMeX8wQHSJ&{=^)m)=He1!92__?IO53 zjCzARvzb~N+YD#Xc0yy}c5r8uPS`ART9i$?O0U;B&L~73XeEibM${pLNPo4Aei1rs z0W6XRQFgqVlIFK*m}6Kknp&tf z90t0AHdw??)-8rW)+Sa-P8EGV(*^}{vT_TQTB?}B(ps(7*{FkKcjJRN=!*;per~!g z__Tv&BW*Ek@C@7SMow^dVjM-HTX@Qn-IrRgL!7jHb9txDQ;#(rIQ^=Uo8%}D#jUi} zmw!-$$A(E(Su!2RE6R@Lwf(i*N2v+dhBmALSf5)ivwZ2mcNhCgm5L;_4t`1yuUSF4 zWfFA+lUuX_)wCLi^X4(0IzEn%qYb(-5pIlh>qf(vqq6jJR(ci7ZmU=p3A<*vM1z>E z57yh-+K6Dv(9jhr!qBD#WfX#KAhtwe+P@hum-f-@P8T@TP}b=mOV0)b(m`OGqD?ua zS}G>m{4`*UfGNnBZP#UL)#0>6EoYd#dW5hT&M%ZHw6l-PaIDf)l4GPuol=d*c*0~7 zBthnonv6oAv{xd`+K{5_gLrjk&8o7ii-jcw)v@|;9Y-#B0~^Y4eyeR|ubOM4Vt1X>8a1uK+*o4Ep8ddaV1EL)-}9 z;A2+Q3T0)9`LRdS`H?j%*oRVi<&zNGQ83*KADk>*5|@99}1=Jzpy_uq7P|A z{$me>B~ivKrc~{kRu9W4Yzids+!YSt-7~Ho()(x|W*m<UtT&;=pDR@qpBVk|xlE z@8Ysu&|76vk;b^iuDb@4suT)ow_K2uIYiMt*-exXm1-(>7iG5Xlg&2hu^FAY#;HlN zp;SaLKkD|4ctnd%@@WF$n3n6^AJab9zQt-N5sOVI-GrXUL7V+m&P2FW5tw3n9Ot)a zn4^{spTung-2a0%8IHgetk(z#D?ja4YjY(QT?&>bla#HB`cez=L>0*p-BZPgJGK&A zGooDU0aXrhLY5n{bXrAOdCQKcS->WQ++1bb+^AMJ>vVGS{7J44gaf5`KD>dOIl8X& zcXCz6<(h`IKh2gdm~pj1>9t0yx}bi{&q(;6%bwL6vQurk1SZa}g@LfotxxaAR$m%EC!fQ$=FRh@5sy`&!(>?3(^T^(wX;-1aa!S- zx@>nuVUeLPVg`XcOO13=$COi6Z?wQ^F}0 zVg^EL@I*#RsNar@!$?pci<_MrN9#N)0&ODE-7YrowxTi0*rmMDDtBkgy0fb&Ngh@_ zdR>CCE4{vyZTMy8jb(dEI5`)ExRO?f|0=4*jsok7OT9Zqcu++PHpi&YrBI4hirbNG z{-uSfO_K?-A$owAM*9I0xAz;0H~aOah5 z+=|d2(V*Ydg(gB!_L_s5V0SoE?a{QnX+}m8h2>^n)X806*n{^ewO&M>nBTYQY>4u^ zAwS(T&W=j!&0#Zy^cA@a=r&g}aA3Jj-RAVNT9C<)m6;FC)T}hr&Ud5E;bce$@7ta&>Bb`I`n(j?0zZ*E*i!&FYd@GPhn5g*(eUjwvp&mA0qwL z+b{9P)lny^#maEMwzH{==}Yyx1i?1=QRkL$BF%A>?bsyRqfU;~?N5s_nb+T{@mV$z z8+Ebk=Al;p*7?(?KX$=_x!)rs|+S#UFe{__Q5QR&3qJj$nk*)|o#vHOqPQ1iZ8I%N%)AS_q6j09`~`tv>4H0m@UjFx)S^W{Fp!Qh zlt>%Utx*I!7x*|=>a|)@=FS~$&cc0DMr(()1y;?yXp~jVCVCBsGQ_vFfyqceY_>43 zXknH!^P}lpEo)Jp4rbP8VIlVPp;y*uD_dulI({CKy`mc>r&llJq%R5eaxsB1G>)oE zZd{2-6>qn9vc)NEt0deV^c6KXKR?}%VY{ zSPyLp#tCaO@p_9$SF3f+B218sA-Qun+Ycan%x0a03(UEMDL=6*3&>5hLPjC$V!lk9 zWh;)`JR$+V9${(x+{tHFd;k1V*N|T8s$fnQYeT}6OT7)trcE&=O|^;NJe7&wh8VJ| zCsrL@(I9Zz3VVl&QsXjnDuRSGvxVTryE%WRekKR=?5 zaL$xJIm#!_q+52ze-&);n)qK%@5fd<=c7~Vv%2UiyDin$4GP7sSiZU|U6xopE4m%0 z`<>}s->z`+KCE&d8YwRr3rDl@31dfnMnf7DUFe9qWG1vzMmN}HZ)gPV(pCdhrx)9# z7p7;AW4Pr;vzgld*V@?@b2miHhYK<@^!A_~6<8^3$|xnPgyYPyyJ;@J(>>WMhB2W) zFV2RmXjvQ90PluqAS=Bmtz0!s#eS0 zNzD*}ikWP!)Ks%#ngIosmNw6_D5${>*}H1I$vQV)iHVr$mmSm;K%>J|TsXoz$VGrk ziec4__4(OfnD;0^yficCdw|(B+#T#1sV8@!??D|Xh-e(aR|oAyKD)spwK5A>Z^z=9 zS9)nHb^2z2M~gztRtYtv!eW|IONy{C2$q3kOn_;jA+%PGHbV4vv`W%)GP*6uA2)(6 zQFP7z*qz_tvR5h;0bjCpMOMs8rnONy20L9MV^P~BSNG~n+&7rH5M-a;?&D=wW#g)~ z{cT-5@_R5l1&^o>yCpj|16NiNPqYUS*3Z>0+GrOJrWM8&kxv+IH;zfy+FcoY_3Iy- zxGbaB$f8ZMSg*8$olOHZEv!x5|m;$CZ@-x{JGDRK2#+;-q=#B zGLA^zG3!6wfAlp`CTzuP0xEUg(UfLk*LG$8oGlwustgt2FXB>2;B2)^uRw3a*jz&m z3EL1}MC2kMn>+F4G4&dI!cIP@IwRT$B?Vn`2D(?-4oAq7iYR!L#Q4R<8Sp0y)Uc>j zX=B6wE@~>9nb7bKD8?4_*c!x30j6~H1ZhvMDU{YNMFT7j#%u;^$i(&v-ZCqL7FBm) ztBWoU@4IkZ99?V|O$FSO(v9TgNZ

                          RB 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\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.7\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPath-1: acf-pro-hr/acf.pot\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:67 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:369 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Grupe polja" + +#: acf.php:370 +msgid "Field Group" +msgstr "Grupa polja" + +#: acf.php:371 acf.php:403 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:559 +msgid "Add New" +msgstr "Dodaj" + +#: acf.php:372 +msgid "Add New Field Group" +msgstr "Dodaj novo polje" + +#: acf.php:373 +msgid "Edit Field Group" +msgstr "Uredi polje" + +#: acf.php:374 +msgid "New Field Group" +msgstr "Novo polje" + +#: acf.php:375 +msgid "View Field Group" +msgstr "Pregledaj polje" + +#: acf.php:376 +msgid "Search Field Groups" +msgstr "Pretraži polja" + +#: acf.php:377 +msgid "No Field Groups found" +msgstr "Niste dodali nijedno polje" + +#: acf.php:378 +msgid "No Field Groups found in Trash" +msgstr "Nije pronaÄ‘ena nijedna stranica" + +#: acf.php:401 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Polja" + +#: acf.php:402 +msgid "Field" +msgstr "Polje" + +#: acf.php:404 +msgid "Add New Field" +msgstr "Dodaj polje" + +#: acf.php:405 +msgid "Edit Field" +msgstr "Uredi polje" + +#: acf.php:406 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Dodaj polje" + +#: acf.php:407 +msgid "View Field" +msgstr "Pregledaj polje" + +#: acf.php:408 +msgid "Search Fields" +msgstr "Pretraži polja" + +#: acf.php:409 +msgid "No Fields found" +msgstr "Nije pronaÄ‘eno nijedno polje" + +#: acf.php:410 +msgid "No Fields found in Trash" +msgstr "Nije pronaÄ‘eno nijedno polje u smeću" + +#: acf.php:449 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Neaktivno" + +#: acf.php:454 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Neaktivno (%s)" +msgstr[1] "Neaktivnih: (%s)" +msgstr[2] "Neaktivnih: (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Skup polja ažuriran." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Skup polja izbrisan." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Skup polja objavljen." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Skup polja spremljen." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Skup polja je spremljen." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Skup polja je oznaÄen za." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Skica ažurirana." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "Lokacija" + +#: includes/admin/admin-field-group.php:184 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Postavke" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "Premjesti u smeće?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "odabrano" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "Nema polja koji omoguću korisniku odabir" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "Naziv polja je obavezna" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "kopiraj" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:4048 +msgid "or" +msgstr "ili" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "MatiÄno polje" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "SliÄna polja" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "Premjesti polje" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Potrebno je spremiti izmjene prije nego možete premjestiti polje" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "Null" + +#: includes/admin/admin-field-group.php:281 includes/input.php:258 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Izmjene koje ste napravili bit će izgubljene ukoliko napustite ovu stranicu" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Polje ne može zapoÄinjati sa “field_â€, odabrite drugi naziv" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Oznaka polja" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Aktivan" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "PremjeÅ¡tanje dovrÅ¡eno." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "" +"Polje %s od sada možete naći na drugoj lokacaiji, kao dio %s skupa polja" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "Zatvori prozor" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "Odaberite lokaciju za ovo polje" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "Premjesti polje" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Aktivno (%s)" +msgstr[1] "Aktivno (%s)" +msgstr[2] "Aktivno (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Skup polja %s dupliciran" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Polja duplicirana (%s)." +msgstr[1] "Polja duplicirana (%s)." +msgstr[2] "Polja duplicirana (%s)." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Skup polja sinkroniziran. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "Polja sinkronizirana (%s)." +msgstr[1] "Polja sinkronizirana (%s)." +msgstr[2] "Polja sinkronizirana (%s)." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Sinkronizacija dostupna" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:355 +msgid "Title" +msgstr "Naziv" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:382 +msgid "Description" +msgstr "Opis" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Status" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"Prilagodite WordPress sa moćnim, profesionalnim i intuitivnim dodatnim " +"poljima." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Popis izmjena" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Pogledaj Å¡to je novo u %s verziji." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Materijali" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Web mjesto" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Dokumentacija" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "PodrÅ¡ka" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Hvala Å¡to koristite ACF." + +#: includes/admin/admin-field-groups.php:667 +msgid "Duplicate this item" +msgstr "Dupliciraj" + +#: includes/admin/admin-field-groups.php:667 +#: includes/admin/admin-field-groups.php:683 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Duplicate" +msgstr "Dupliciraj" + +#: includes/admin/admin-field-groups.php:700 +#: includes/fields/class-acf-field-google-map.php:112 +#: includes/fields/class-acf-field-relationship.php:656 +msgid "Search" +msgstr "Pretraži" + +#: includes/admin/admin-field-groups.php:759 +#, php-format +msgid "Select %s" +msgstr "Odaberi %s" + +#: includes/admin/admin-field-groups.php:767 +msgid "Synchronise field group" +msgstr "Sinkroniziraj skup polja" + +#: includes/admin/admin-field-groups.php:767 +#: includes/admin/admin-field-groups.php:797 +msgid "Sync" +msgstr "Sinkroniziraj" + +#: includes/admin/admin-field-groups.php:779 +msgid "Apply" +msgstr "Prijavi" + +#: includes/admin/admin-field-groups.php:797 +msgid "Bulk Actions" +msgstr "Skupne akcije" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Alati" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Dodatna polja" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Nadogradi bazu podataka" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Pregledaj stranice i nadogradi" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "GreÅ¡ka prilikom verifikacije" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "Nema novih nadogradnji." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Dodaci" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "GreÅ¡ka. GreÅ¡ka prilikom uÄitavanja dodataka" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Info" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Å to je novo" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Izvezi skup polja" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "Generiraj PHP kod" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Niste odabrali polje" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Odaberite skup polja" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Odaberite polja koja želite izvesti i zatim odaberite željeni format. Klikom " +"na gumb “preuzimanjeâ€, preuzmite .json datoteku sa poljima koju zatim možete " +"uvesti u drugu ACF instalaciju.\n" +"Klikom na “generiraj†gumb, izvezite PHP kod koji možete ukljuÄiti u " +"WordPress temu." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Datoteka za izvoz" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Navedeni kod možete koristiti kako bi registrirali lokalnu verziju odabranih " +"polja ili skupine polja. Lokalna polje pružaju dodatne mogućnosti kao Å¡to je " +"brže oÄitavanje, verzioniranje i dinamiÄke postavke polja. Jednostavno " +"kopirajte navedeni kod u functions.php datoteku u vaÅ¡oj temi ili ukljuÄite " +"ih kao vanjsku datoteku." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Kopiraj u meÄ‘uspremnik" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Uvoz skupa polja" + +#: includes/admin/tools/class-acf-admin-tool-import.php:61 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Odaberite ACF JSON datoteku koju želite uvesti. Nakon Å¡to kliknete ‘Uvezi’ " +"gumb, ACF će uvesti sva polja iz odabrane datoteke." + +#: includes/admin/tools/class-acf-admin-tool-import.php:66 +#: includes/fields/class-acf-field-file.php:35 +msgid "Select File" +msgstr "Odaberite datoteku" + +#: includes/admin/tools/class-acf-admin-tool-import.php:76 +msgid "Import File" +msgstr "Datoteka za uvoz" + +#: includes/admin/tools/class-acf-admin-tool-import.php:100 +#: includes/fields/class-acf-field-file.php:159 +msgid "No file selected" +msgstr "Niste odabrali datoteku" + +#: includes/admin/tools/class-acf-admin-tool-import.php:113 +msgid "Error uploading file. Please try again" +msgstr "GreÅ¡ka prilikom prijenosa datoteke, molimo pokuÅ¡aj ponovno" + +#: includes/admin/tools/class-acf-admin-tool-import.php:122 +msgid "Incorrect file type" +msgstr "Nedozvoljeni format datoteke" + +#: includes/admin/tools/class-acf-admin-tool-import.php:139 +msgid "Import file empty" +msgstr "Odabrana datoteka za uvoz ne sadrži" + +#: includes/admin/tools/class-acf-admin-tool-import.php:247 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "Uvjet za prikaz" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Prikaži polje ako" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:247 +msgid "is equal to" +msgstr "je jednako" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "je drukÄije" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "i" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Dodaj skup pravila" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:403 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Drag to reorder" +msgstr "Presloži polja povlaÄenjem" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Uredi polje" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-file.php:141 +#: includes/fields/class-acf-field-image.php:122 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:342 +msgid "Edit" +msgstr "Uredi" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Dupliciraj polje" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "Premjeti polje u drugu skupinu" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "Premjesti" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "ObriÅ¡i polje" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Delete" +msgstr "ObriÅ¡i" + +#: includes/admin/views/field-group-field.php:68 +msgid "Field Label" +msgstr "Naziv polja" + +#: includes/admin/views/field-group-field.php:69 +msgid "This is the name which will appear on the EDIT page" +msgstr "Naziv koji se prikazuje prilikom ureÄ‘ivanja stranice" + +#: includes/admin/views/field-group-field.php:78 +msgid "Field Name" +msgstr "Naziv polja" + +#: includes/admin/views/field-group-field.php:79 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Jedna rijeÄ, bez razmaka. Povlaka i donja crta su dozvoljeni" + +#: includes/admin/views/field-group-field.php:88 +msgid "Field Type" +msgstr "Tip polja" + +#: includes/admin/views/field-group-field.php:99 +msgid "Instructions" +msgstr "Upute" + +#: includes/admin/views/field-group-field.php:100 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Upute priliko ureÄ‘ivanja. Vidljivo prilikom spremanja podataka" + +#: includes/admin/views/field-group-field.php:109 +msgid "Required?" +msgstr "Obavezno?" + +#: includes/admin/views/field-group-field.php:132 +msgid "Wrapper Attributes" +msgstr "ZnaÄajke prethodnog elementa" + +#: includes/admin/views/field-group-field.php:138 +msgid "width" +msgstr "Å¡irina" + +#: includes/admin/views/field-group-field.php:153 +msgid "class" +msgstr "klasa" + +#: includes/admin/views/field-group-field.php:166 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:178 +msgid "Close Field" +msgstr "Zatvori polje" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Redni broj" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:415 +#: includes/fields/class-acf-field-radio.php:306 +#: includes/fields/class-acf-field-select.php:432 +#: pro/fields/class-acf-field-flexible-content.php:584 +msgid "Label" +msgstr "Oznaka" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:964 +#: pro/fields/class-acf-field-flexible-content.php:597 +msgid "Name" +msgstr "Naziv" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "KljuÄ" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Tip" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Nema polja. Kliknite gumb + Dodaj polje da bi kreirali " +"polje." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "Dodaj polje" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Pravila" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "Odaberite pravila koja odreÄ‘uju koji prikaz će koristiti ACF polja" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stil" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Zadano (WP metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Bez" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Pozicija" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Visoko (nakon naslova)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normalno (nakon saržaja)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Desni stupac" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Pozicija oznake" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Poravnato sa vrhom" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Lijevo poravnato" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Pozicija uputa" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Ispod oznake" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Iznad oznake" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Redni broj." + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Skup polja sa nižim brojem će biti viÅ¡e pozicioniran" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Vidljivo u popisu" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Sakrij" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "Odaberite koje grupe želite sakriti prilikom ureÄ‘ivanja." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Ukoliko je viÅ¡e skupova polja prikazano na istom ekranu, postavke prvog " +"skupa polja će biti koriÅ¡tene (postavke polja sa nižim brojem u redosljedu)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Stalna veza" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "UreÄ‘ivaÄ sadržaja" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Izvadak" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "Rasprava" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Komentari" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Revizija" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Slug" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Autor" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Format" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Atributi stranice" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:670 +msgid "Featured Image" +msgstr "Istaknuta slika" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Kategorije" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Oznake" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "PoÅ¡alji povratnu vezu" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Prikaži ovaj skup polja ako" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Ažuriraj stranice" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Nadogradnja baze ACF" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Ažuriranje baze podatak dovrÅ¡eno. Provjerite koje web stranice u svojoj " +"mreži želite nadograditi i zatim kliknite %s." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Web stranica" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "" +"Za web stranicu je potrebna nadogradnja baze podataka iz %s na verziju %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Nema novih ažuriranja za web stranica" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Baza podataka je nadograÄ‘ena. Kliknite ovdje za povratak na " +"administraciju WordPress mreže" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Prije nego nastavite preporuÄamo da napravite sigurnosnu kopiju baze " +"podataka. Jeste li sigurni da želite nastaviti ažuriranje?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Nadogradnja zavrÅ¡ena" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Nadogradnja na verziju %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Ponavljajuće polje" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Fleksibilno polje" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerija" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Postavke" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Potrebno je nadograditi bazu podataka" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Hvala Å¡to ste nadogradili %s na v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Prije nego Å¡to poÄnete koristiti nove mogućnosti, molimo ažurirajte bazu " +"podataka na posljednju verziju." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"Molimo provjerite da su svi premium dodaci (%s) ažurirani na najnoviju " +"verziju." + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "UÄitavam podatke za nadogradnju…" + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" +"Nadogradnja baze je dovrÅ¡ena. Pogledajte Å¡to je novo" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Preuzimam datoteke" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Instalirano" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Advanced Custom Fields vam želi dobrodoÅ¡licu" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Ažuriranje dovrÅ¡eno, hvala! ACF %s je veći i bolji nego ikad prije. Nadamo " +"se da će vam se svidjet." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "Bolje korisniÄko iskustvo koriÅ¡tenja prilagoÄ‘enih polja" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "PoboljÅ¡ana uporabljivost" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"UkljuÄivanje popularne biblioteke Select2 poboljÅ¡ano je korisniÄko iskustvo " +"i brzina na velikom broju polja." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "UnaprijeÄ‘en dizajn" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Mnoga polja su vizualno osvježena te time ACF sada izgleda bolje nego ikad " +"prije!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "UnaprijeÄ‘eno upravljanje podacima" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Nova arhitektura polja omogućuje pod poljima da budu koriÅ¡tena zasebno bez " +"obzira kojem skupu polja pripadaju. Ovo vam omogućuje premjeÅ¡tanje polja iz " +"jednog skupa u drugi!" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "DoviÄ‘enja dodaci, upoznajte PRO verziju" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "Predstavljamo ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Mijanjamo naÄin funkcioniranja premium dodataka, od sada mnogo jednostavnije!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Sva 4 premium dodakta od sada su ukomponiranu u novu Pro " +"verziju ACF. Sa novim osobnom i razvojnom opcijom licenciranja, premium " +"funkcionalnost je dosupnija i povoljnija nego prije!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Super mogućnosti" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO ukljuÄuje napredne funkcionalnosti kao ponavljajuća polja, modularni " +"raspored, galerija slika i mogućnost dodavanja novih stranica u postavkama " +"administracije!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "ProÄitajte viÅ¡e o mogućnostima ACF PRO." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Jednostavno ažuriranje" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"Kako bi pojednostavili ažuriranje, prijavite se s vaÅ¡im " +"raÄunom i osigurajte besplatnu verziju ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Provjeriti upute za ažuriranje ako imate dodatnih pitanja, " +"ili kontaktirajte naÅ¡u tim za podrÅ¡ku" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Ispod haube" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Pametnije postavke" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF od sada sprema postavke polja kao objekt" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "ViÅ¡e AJAX-a" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" +"ViÅ¡e polja koristi asinkrono pretraživanje kako bi uÄitavanje stranice bilo " +"brže" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "UÄitavanje polja iz JSON datoteke" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "Nova mogućnost automatskog izvoza u JSON obliku" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Bolje upravljanje verzijama" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "Nova opcija izvoza u JSON omogućuje verziranje" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "JSON umjesto XML" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Uvoz / Izvoz sada koristi JSON umjesto XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Nove forme" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Od sada je moguće dodati polja na sve stranice, ukljuÄujući komentare, " +"stranice za ureÄ‘ivanje korisnika i widgete!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Novo polje za ugnježdeni sadržaj" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Nova galerija" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Polje Galerija je dobilo novi izgled" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Nove postavke" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Postavke svakog polja ukljuÄuju dodatna polja, polje za opis i polje za " +"upute namjenjene korisniku" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Bolji prikaz formi na web stranici" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "" +"acf_form() funkcija od sada omogućuje dodavanje nove objave prilikom " +"spremanja" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Bolja verifikacija polja" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "" +"Verifikacija polja se sada obavlja asinkrono (PHP + AJAX) umjesto " +"dosadaÅ¡njeg naÄina (Javascript)" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Polje za povezivanje objekta" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Novo postavke polja Veza za filter (pretraga, tip objekta, taksonomija)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "PremjeÅ¡tanje polja" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "Nova funkcionalnost polja omogućuje premjeÅ¡tanje polja i skupa polja" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "URL stranice" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Nova skupina ‘arhiva’ prilikom odabira polja page_link" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Bolja upravljanje stranica sa postavkama" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Nova funkcionalnost kod dodavanja stranica za postavke omogućuju dodavanje " +"izvornih i pod stranica izbornika" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Mislimo da će vam se svidjeti promjene u %s." + +#: includes/api/api-helpers.php:947 +msgid "Thumbnail" +msgstr "SliÄica" + +#: includes/api/api-helpers.php:948 +msgid "Medium" +msgstr "Srednja" + +#: includes/api/api-helpers.php:949 +msgid "Large" +msgstr "Velika" + +#: includes/api/api-helpers.php:998 +msgid "Full Size" +msgstr "Puna veliÄina" + +#: includes/api/api-helpers.php:1339 includes/api/api-helpers.php:1912 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(bez naziva)" + +#: includes/api/api-helpers.php:3969 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Å irina slike mora biti najmanje %dpx." + +#: includes/api/api-helpers.php:3974 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Å irina slike ne smije biti veća od %dpx." + +#: includes/api/api-helpers.php:3990 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Visina slike mora biti najmanje %dpx." + +#: includes/api/api-helpers.php:3995 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Visina slike ne smije biti veća od %dpx." + +#: includes/api/api-helpers.php:4013 +#, php-format +msgid "File size must be at least %s." +msgstr "VeliÄina datoteke mora biti najmanje %s." + +#: includes/api/api-helpers.php:4018 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Datoteke ne smije biti veća od %s." + +#: includes/api/api-helpers.php:4052 +#, php-format +msgid "File type must be %s." +msgstr "Tip datoteke mora biti %s." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Osnovno" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Sadržaj" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Odabir" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Relacijski" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:384 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:285 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:554 +#: pro/fields/class-acf-field-flexible-content.php:603 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Layout" +msgstr "Format" + +#: includes/fields.php:326 +msgid "Field type does not exist" +msgstr "Tip polja ne postoji" + +#: includes/fields.php:326 +msgid "Unknown" +msgstr "Nepoznato polje" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Multi proÅ¡ireno" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Otvori" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Prikaži accordion polje kao otvoreno prilikom uÄitavanja." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Mulit-proÅ¡irenje" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Omogući prikaz ovog accordion polja bez zatvaranje ostalih." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Prijelomna toÄka" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Preciziraj prijelomnu toÄku za prethoda polja accordion. Ovo će omogućiti " +"novi skup polja nakon prijelomne toÄke." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Skup dugmadi" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:368 +msgid "Choices" +msgstr "Mogući odabiri" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each choice on a new line." +msgstr "Svaki odabir je potrebno dodati kao novi red." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "For more control, you may specify both a value and label like this:" +msgstr "Za bolju kontrolu unesite oboje, vrijednost i naziv, kao npr:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "red : Red" +msgstr "crvena : Crvena" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:386 +#: includes/fields/class-acf-field-taxonomy.php:793 +#: includes/fields/class-acf-field-user.php:408 +msgid "Allow Null?" +msgstr "Dozvoli null vrijednost?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:375 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:276 +#: includes/fields/class-acf-field-range.php:148 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:410 +msgid "Default Value" +msgstr "Zadana vrijednost" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:277 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Appears when creating a new post" +msgstr "Prikazuje se prilikom kreiranje nove objave" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:391 +#: includes/fields/class-acf-field-radio.php:292 +msgid "Horizontal" +msgstr "Horizontalno" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:390 +#: includes/fields/class-acf-field-radio.php:291 +msgid "Vertical" +msgstr "Vertikalno" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:408 +#: includes/fields/class-acf-field-file.php:204 +#: includes/fields/class-acf-field-image.php:188 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:299 +#: includes/fields/class-acf-field-taxonomy.php:833 +msgid "Return Value" +msgstr "Vrati vrijednost" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:409 +#: includes/fields/class-acf-field-file.php:205 +#: includes/fields/class-acf-field-image.php:189 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:300 +msgid "Specify the returned value on front end" +msgstr "Vrijednost koja će biti vraćena na pristupnom dijelu" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-radio.php:305 +#: includes/fields/class-acf-field-select.php:431 +msgid "Value" +msgstr "Vrijednost" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:416 +#: includes/fields/class-acf-field-radio.php:307 +#: includes/fields/class-acf-field-select.php:433 +msgid "Both (Array)" +msgstr "Oboje (podatkovni niz)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Checkbox" +msgstr "Skup dugmadi" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Sakrij sve" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Dodaj odabir" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Obogući dodatne" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Omogući ‘dodatne’ vrijednosti" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Spremi" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Spremi ‘dodatne’ vrijednosti i prikaži ih omogući njihov odabir" + +#: includes/fields/class-acf-field-checkbox.php:376 +#: includes/fields/class-acf-field-select.php:378 +msgid "Enter each default value on a new line" +msgstr "Unesite svaku novu vrijednost u zasebnu liniju" + +#: includes/fields/class-acf-field-checkbox.php:398 +msgid "Toggle" +msgstr "Prikaži/Sakrij" + +#: includes/fields/class-acf-field-checkbox.php:399 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Dodaj okvir za izbor koji omogućje odabir svih opcija" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Odabir boje" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Ukloni" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Zadano" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Odaberite boju" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Trenutna boja" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Odabir datuma" + +#: includes/fields/class-acf-field-date_picker.php:33 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "ZavrÅ¡eno" + +#: includes/fields/class-acf-field-date_picker.php:34 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Danas" + +#: includes/fields/class-acf-field-date_picker.php:35 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Slijedeći" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Prethodni" + +#: includes/fields/class-acf-field-date_picker.php:37 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Tjedan" + +#: includes/fields/class-acf-field-date_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:181 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Format prikaza" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:182 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Format za prikaz prilikom administracije" + +#: includes/fields/class-acf-field-date_picker.php:216 +#: includes/fields/class-acf-field-date_picker.php:247 +#: includes/fields/class-acf-field-date_time_picker.php:191 +#: includes/fields/class-acf-field-date_time_picker.php:208 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "PrilagoÄ‘eno:" + +#: includes/fields/class-acf-field-date_picker.php:226 +msgid "Save Format" +msgstr "Spremi format" + +#: includes/fields/class-acf-field-date_picker.php:227 +msgid "The format used when saving a value" +msgstr "Format koji će biti spremljen" + +#: includes/fields/class-acf-field-date_picker.php:237 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:697 +#: includes/fields/class-acf-field-select.php:426 +#: includes/fields/class-acf-field-time_picker.php:124 +msgid "Return Format" +msgstr "Format za prikaz na web stranici" + +#: includes/fields/class-acf-field-date_picker.php:238 +#: includes/fields/class-acf-field-date_time_picker.php:199 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Format koji vraća funkcija" + +#: includes/fields/class-acf-field-date_picker.php:256 +#: includes/fields/class-acf-field-date_time_picker.php:215 +msgid "Week Starts On" +msgstr "Tjedan poÄinje" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Odabir datuma i sata" + +#: includes/fields/class-acf-field-date_time_picker.php:33 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Odaberi vrijeme" + +#: includes/fields/class-acf-field-date_time_picker.php:34 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Vrijeme" + +#: includes/fields/class-acf-field-date_time_picker.php:35 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Sat" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minuta" + +#: includes/fields/class-acf-field-date_time_picker.php:37 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Sekunda" + +#: includes/fields/class-acf-field-date_time_picker.php:38 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milisekunda" + +#: includes/fields/class-acf-field-date_time_picker.php:39 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosekunda" + +#: includes/fields/class-acf-field-date_time_picker.php:40 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Vremenska zona" + +#: includes/fields/class-acf-field-date_time_picker.php:41 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Trenutno vrijeme" + +#: includes/fields/class-acf-field-date_time_picker.php:42 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "ZavrÅ¡eno" + +#: includes/fields/class-acf-field-date_time_picker.php:43 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Odaberi" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "Prije podne" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "Prije podne" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "Poslije podne" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "Poslije podne" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "Email" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Zadana vrijednost" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Prikazuje se unutar polja" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:187 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Umetni ispred" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Prijazuje se ispred polja" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:196 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Umetni na kraj" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Prikazuje se iza polja" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Datoteka" + +#: includes/fields/class-acf-field-file.php:36 +msgid "Edit File" +msgstr "Uredi datoteku" + +#: includes/fields/class-acf-field-file.php:37 +msgid "Update File" +msgstr "Ažuriraj datoteku" + +#: includes/fields/class-acf-field-file.php:38 +#: includes/fields/class-acf-field-image.php:43 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:44 +msgid "Uploaded to this post" +msgstr "Postavljeno uz ovu objavu" + +#: includes/fields/class-acf-field-file.php:130 +msgid "File name" +msgstr "Naziv datoteke" + +#: includes/fields/class-acf-field-file.php:134 +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: pro/fields/class-acf-field-gallery.php:690 +#: pro/fields/class-acf-field-gallery.php:719 +msgid "File size" +msgstr "VeliÄina datoteke" + +#: includes/fields/class-acf-field-file.php:143 +#: includes/fields/class-acf-field-image.php:124 +#: includes/fields/class-acf-field-link.php:140 includes/input.php:269 +#: pro/fields/class-acf-field-gallery.php:343 +#: pro/fields/class-acf-field-gallery.php:531 +msgid "Remove" +msgstr "Ukloni" + +#: includes/fields/class-acf-field-file.php:159 +msgid "Add File" +msgstr "Dodaj datoteku" + +#: includes/fields/class-acf-field-file.php:210 +msgid "File Array" +msgstr "Vrijednost kao niz" + +#: includes/fields/class-acf-field-file.php:211 +msgid "File URL" +msgstr "Putanja datoteke" + +#: includes/fields/class-acf-field-file.php:212 +msgid "File ID" +msgstr "Vrijednost kao ID" + +#: includes/fields/class-acf-field-file.php:219 +#: includes/fields/class-acf-field-image.php:213 +#: pro/fields/class-acf-field-gallery.php:655 +msgid "Library" +msgstr "Zbirka" + +#: includes/fields/class-acf-field-file.php:220 +#: includes/fields/class-acf-field-image.php:214 +#: pro/fields/class-acf-field-gallery.php:656 +msgid "Limit the media library choice" +msgstr "OgraniÄi odabir iz zbirke" + +#: includes/fields/class-acf-field-file.php:225 +#: includes/fields/class-acf-field-image.php:219 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:661 +msgid "All" +msgstr "Sve" + +#: includes/fields/class-acf-field-file.php:226 +#: includes/fields/class-acf-field-image.php:220 +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Uploaded to post" +msgstr "Dodani uz trenutnu objavu" + +#: includes/fields/class-acf-field-file.php:233 +#: includes/fields/class-acf-field-image.php:227 +#: pro/fields/class-acf-field-gallery.php:669 +msgid "Minimum" +msgstr "Minimum" + +#: includes/fields/class-acf-field-file.php:234 +#: includes/fields/class-acf-field-file.php:245 +msgid "Restrict which files can be uploaded" +msgstr "OgraniÄi tip datoteka koji se smije uvesti" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:256 +#: pro/fields/class-acf-field-gallery.php:698 +msgid "Maximum" +msgstr "Maksimum" + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:285 +#: pro/fields/class-acf-field-gallery.php:727 +msgid "Allowed file types" +msgstr "Dozvoljeni tipovi datoteka" + +#: includes/fields/class-acf-field-file.php:256 +#: includes/fields/class-acf-field-image.php:286 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "" +"Dodaj kao niz odvojen zarezom, npr: .txt, .jpg, ... Ukoliko je prazno, sve " +"datoteke su dozvoljene" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google mapa" + +#: includes/fields/class-acf-field-google-map.php:40 +msgid "Locating" +msgstr "Lociranje u tijeku" + +#: includes/fields/class-acf-field-google-map.php:41 +msgid "Sorry, this browser does not support geolocation" +msgstr "Nažalost, ovaj preglednik ne podržava geo lociranje" + +#: includes/fields/class-acf-field-google-map.php:113 +msgid "Clear location" +msgstr "Ukloni lokaciju" + +#: includes/fields/class-acf-field-google-map.php:114 +msgid "Find current location" +msgstr "PronaÄ‘i trenutnu lokaciju" + +#: includes/fields/class-acf-field-google-map.php:117 +msgid "Search for address..." +msgstr "Pretraži po adresi..." + +#: includes/fields/class-acf-field-google-map.php:147 +#: includes/fields/class-acf-field-google-map.php:158 +msgid "Center" +msgstr "Centriraj" + +#: includes/fields/class-acf-field-google-map.php:148 +#: includes/fields/class-acf-field-google-map.php:159 +msgid "Center the initial map" +msgstr "Centriraj prilikom uÄitavanja" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Zoom" +msgstr "Uvećaj" + +#: includes/fields/class-acf-field-google-map.php:171 +msgid "Set the initial zoom level" +msgstr "Postavi zadanu vrijednost uvećanja" + +#: includes/fields/class-acf-field-google-map.php:180 +#: includes/fields/class-acf-field-image.php:239 +#: includes/fields/class-acf-field-image.php:268 +#: includes/fields/class-acf-field-oembed.php:281 +#: pro/fields/class-acf-field-gallery.php:681 +#: pro/fields/class-acf-field-gallery.php:710 +msgid "Height" +msgstr "Visina" + +#: includes/fields/class-acf-field-google-map.php:181 +msgid "Customise the map height" +msgstr "Uredi visinu mape" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Skup polja" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:389 +msgid "Sub Fields" +msgstr "Pod polja" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Odaberite naÄin prikaza odabranih polja" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:614 +#: pro/fields/class-acf-field-repeater.php:458 +msgid "Block" +msgstr "Blok" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Table" +msgstr "Tablica" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:615 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Row" +msgstr "Red" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Slika" + +#: includes/fields/class-acf-field-image.php:40 +msgid "Select Image" +msgstr "Odaberi sliku" + +#: includes/fields/class-acf-field-image.php:41 +#: pro/fields/class-acf-field-gallery.php:42 +msgid "Edit Image" +msgstr "Uredi sliku" + +#: includes/fields/class-acf-field-image.php:42 +#: pro/fields/class-acf-field-gallery.php:43 +msgid "Update Image" +msgstr "Ažuriraj sliku" + +#: includes/fields/class-acf-field-image.php:44 +msgid "All images" +msgstr "Sve slike" + +#: includes/fields/class-acf-field-image.php:140 +msgid "No image selected" +msgstr "Nema odabranih slika" + +#: includes/fields/class-acf-field-image.php:140 +msgid "Add Image" +msgstr "Dodaj sliku" + +#: includes/fields/class-acf-field-image.php:194 +msgid "Image Array" +msgstr "Podaci kao niz" + +#: includes/fields/class-acf-field-image.php:195 +msgid "Image URL" +msgstr "Putanja slike" + +#: includes/fields/class-acf-field-image.php:196 +msgid "Image ID" +msgstr "ID slike" + +#: includes/fields/class-acf-field-image.php:203 +msgid "Preview Size" +msgstr "VeliÄina prikaza prilikom ureÄ‘ivanja stranice" + +#: includes/fields/class-acf-field-image.php:204 +msgid "Shown when entering data" +msgstr "Prikazuje se prilikom unosa podataka" + +#: includes/fields/class-acf-field-image.php:228 +#: includes/fields/class-acf-field-image.php:257 +#: pro/fields/class-acf-field-gallery.php:670 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Restrict which images can be uploaded" +msgstr "OgraniÄi koje slike mogu biti dodane" + +#: includes/fields/class-acf-field-image.php:231 +#: includes/fields/class-acf-field-image.php:260 +#: includes/fields/class-acf-field-oembed.php:270 +#: pro/fields/class-acf-field-gallery.php:673 +#: pro/fields/class-acf-field-gallery.php:702 +msgid "Width" +msgstr "Å irina" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Poveznica" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Odaberite poveznicu" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Otvori u novom prozoru/kartici" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Vrijednost kao niz" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "Putanja poveznice" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Poruka" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Broj linija" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "OdreÄ‘uje naÄin prikaza novih linija" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Dodaj paragraf" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Dodaj novi red - <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Bez obrade" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Onemogući HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Prikažite HTML kodove kao tekst umjesto iscrtavanja" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Broj" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:157 +msgid "Minimum Value" +msgstr "Minimum" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:167 +msgid "Maximum Value" +msgstr "Maksimum" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:177 +msgid "Step Size" +msgstr "Korak" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Vrijednost mora biti broj" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "UneÅ¡ena vrijednost mora biti jednaka ili viÅ¡a od %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "UneÅ¡ena vrijednost mora biti jednaka ili niža od %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:219 +msgid "Enter URL" +msgstr "Poveznica" + +#: includes/fields/class-acf-field-oembed.php:234 +#: includes/fields/class-acf-field-taxonomy.php:898 +msgid "Error." +msgstr "GreÅ¡ka." + +#: includes/fields/class-acf-field-oembed.php:234 +msgid "No embed found for the given URL." +msgstr "Nije pronaÄ‘en nijedan umetak za unesenu adresu." + +#: includes/fields/class-acf-field-oembed.php:267 +#: includes/fields/class-acf-field-oembed.php:278 +msgid "Embed Size" +msgstr "Dimenzija umetka" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Arhiva" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:986 +msgid "Parent" +msgstr "MatiÄni" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Filter by Post Type" +msgstr "Filtriraj po tipu posta" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:631 +msgid "All post types" +msgstr "Svi tipovi" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:637 +msgid "Filter by Taxonomy" +msgstr "Filtriraj prema taksonomiji" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:645 +msgid "All taxonomies" +msgstr "Sve taksonomije" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Omogući odabir arhive tipova" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:396 +#: includes/fields/class-acf-field-user.php:418 +msgid "Select multiple values?" +msgstr "Dozvoli odabir viÅ¡e vrijednosti?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Lozinka" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:702 +msgid "Post Object" +msgstr "Objekt" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:703 +msgid "Post ID" +msgstr "ID objave" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Radiogumb" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Drugo" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Dodaj odabir ’ostalo’ za slobodan unost" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Spremi ostale" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Spremi ostale vrijednosti i omogući njihov odabir" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Raspon" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Veza" + +#: includes/fields/class-acf-field-relationship.php:37 +msgid "Minimum values reached ( {min} values )" +msgstr "Minimalna vrijednost je {min}" + +#: includes/fields/class-acf-field-relationship.php:38 +msgid "Maximum values reached ( {max} values )" +msgstr "Već ste dodali najviÅ¡e dozvoljenih vrijednosti (najviÅ¡e: {max})" + +#: includes/fields/class-acf-field-relationship.php:39 +msgid "Loading" +msgstr "UÄitavanje" + +#: includes/fields/class-acf-field-relationship.php:40 +msgid "No matches found" +msgstr "Nema rezultata" + +#: includes/fields/class-acf-field-relationship.php:423 +msgid "Select post type" +msgstr "Odaberi tip posta" + +#: includes/fields/class-acf-field-relationship.php:449 +msgid "Select taxonomy" +msgstr "Odebarite taksonomiju" + +#: includes/fields/class-acf-field-relationship.php:539 +msgid "Search..." +msgstr "Pretraga…" + +#: includes/fields/class-acf-field-relationship.php:651 +msgid "Filters" +msgstr "Filteri" + +#: includes/fields/class-acf-field-relationship.php:657 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Tip objave" + +#: includes/fields/class-acf-field-relationship.php:658 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:763 +msgid "Taxonomy" +msgstr "Taksonomija" + +#: includes/fields/class-acf-field-relationship.php:665 +msgid "Elements" +msgstr "Elementi" + +#: includes/fields/class-acf-field-relationship.php:666 +msgid "Selected elements will be displayed in each result" +msgstr "Odabrani elementi bit će prikazani u svakom rezultatu" + +#: includes/fields/class-acf-field-relationship.php:677 +msgid "Minimum posts" +msgstr "Minimalno" + +#: includes/fields/class-acf-field-relationship.php:686 +msgid "Maximum posts" +msgstr "Maksimalno" + +#: includes/fields/class-acf-field-relationship.php:790 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:785 +msgctxt "noun" +msgid "Select" +msgstr "Odaberi" + +#: includes/fields/class-acf-field-select.php:38 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Jedan rezultat dostupan, pritisnite enter za odabir." + +#: includes/fields/class-acf-field-select.php:39 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d rezultata dostupno, za pomicanje koristite strelice gore/dole." + +#: includes/fields/class-acf-field-select.php:40 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Nema rezultata" + +#: includes/fields/class-acf-field-select.php:41 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Molimo unesite 1 ili viÅ¡e znakova" + +#: includes/fields/class-acf-field-select.php:42 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Molimo unesite najmanje %d ili viÅ¡e znakova" + +#: includes/fields/class-acf-field-select.php:43 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Molimo obriÅ¡ite 1 znak" + +#: includes/fields/class-acf-field-select.php:44 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Molimo obriÅ¡ite viÅ¡ak znakova - %d znak(ova) je viÅ¡ak" + +#: includes/fields/class-acf-field-select.php:45 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Moguće je odabrati samo jednu opciju" + +#: includes/fields/class-acf-field-select.php:46 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Odabir opcija je ograniÄen na najviÅ¡e %d" + +#: includes/fields/class-acf-field-select.php:47 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "UÄitavam rezultate…" + +#: includes/fields/class-acf-field-select.php:48 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Pretražujem…" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "NeuspjeÅ¡no uÄitavanje" + +#: includes/fields/class-acf-field-select.php:255 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "Odaberi" + +#: includes/fields/class-acf-field-select.php:406 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Stilizirano suÄelje" + +#: includes/fields/class-acf-field-select.php:416 +msgid "Use AJAX to lazy load choices?" +msgstr "Asinkrono uÄitaj dostupne odabire?" + +#: includes/fields/class-acf-field-select.php:427 +msgid "Specify the value returned" +msgstr "Preciziraj vrijednost za povrat" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Razdjelnik" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Kartica" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Pozicija" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Preciziraj prijelomnu toÄku za prethodne kartice. Ovo će omogućiti novi skup " +"kartica nakon prijelomne toÄke." + +#: includes/fields/class-acf-field-taxonomy.php:713 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Nema %s" + +#: includes/fields/class-acf-field-taxonomy.php:732 +msgid "None" +msgstr "Bez odabira" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Select the taxonomy to be displayed" +msgstr "Odaberite taksonomiju za prikaz" + +#: includes/fields/class-acf-field-taxonomy.php:773 +msgid "Appearance" +msgstr "Prikaz" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Select the appearance of this field" +msgstr "Odaberite izgled polja" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Multiple Values" +msgstr "Omogući odabir viÅ¡e vrijednosti" + +#: includes/fields/class-acf-field-taxonomy.php:781 +msgid "Multi Select" +msgstr "ViÅ¡e odabira" + +#: includes/fields/class-acf-field-taxonomy.php:783 +msgid "Single Value" +msgstr "Jedan odabir" + +#: includes/fields/class-acf-field-taxonomy.php:784 +msgid "Radio Buttons" +msgstr "Radiogumbi" + +#: includes/fields/class-acf-field-taxonomy.php:803 +msgid "Create Terms" +msgstr "Kreiraj pojmove" + +#: includes/fields/class-acf-field-taxonomy.php:804 +msgid "Allow new terms to be created whilst editing" +msgstr "Omogući kreiranje pojmova prilikom ureÄ‘ivanja" + +#: includes/fields/class-acf-field-taxonomy.php:813 +msgid "Save Terms" +msgstr "Spremi pojmove" + +#: includes/fields/class-acf-field-taxonomy.php:814 +msgid "Connect selected terms to the post" +msgstr "Spoji odabrane pojmove sa objavom" + +#: includes/fields/class-acf-field-taxonomy.php:823 +msgid "Load Terms" +msgstr "UÄitaj pojmove" + +#: includes/fields/class-acf-field-taxonomy.php:824 +msgid "Load value from posts terms" +msgstr "UÄitaj pojmove iz objave" + +#: includes/fields/class-acf-field-taxonomy.php:838 +msgid "Term Object" +msgstr "Vrijednost pojma kao objekt" + +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Term ID" +msgstr "Vrijednost kao: ID pojma" + +#: includes/fields/class-acf-field-taxonomy.php:898 +#, php-format +msgid "User unable to add new %s" +msgstr "Korisnik nije u mogućnosti dodati %s" + +#: includes/fields/class-acf-field-taxonomy.php:911 +#, php-format +msgid "%s already exists" +msgstr "%s već postoji" + +#: includes/fields/class-acf-field-taxonomy.php:952 +#, php-format +msgid "%s added" +msgstr "Dodano: %s" + +#: includes/fields/class-acf-field-taxonomy.php:997 +msgid "Add" +msgstr "Dodaj" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Tekst" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "OgraniÄi broj znakova" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Ostavite prazno za neograniÄeno" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Tekst polje" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Broj redova" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Podesi visinu tekstualnog polja" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Odabri vremena (sat i minute)" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "True / False" + +#: includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 includes/input.php:267 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Da" + +#: includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:169 includes/input.php:268 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Ne" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Prikazuje tekst uz odabirni okvir" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Tekst za aktivno stanje" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Tekst prikazan dok je polje aktivno" + +#: includes/fields/class-acf-field-true_false.php:165 +msgid "Off Text" +msgstr "Tekst za neaktivno stanje" + +#: includes/fields/class-acf-field-true_false.php:166 +msgid "Text shown when inactive" +msgstr "Tekst prikazan dok je polje neaktivno" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "Poveznica" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Vrijednost molja biti valjana" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Korisnik" + +#: includes/fields/class-acf-field-user.php:393 +msgid "Filter by role" +msgstr "Filtar prema ulozi" + +#: includes/fields/class-acf-field-user.php:401 +msgid "All user roles" +msgstr "Sve uloge" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Vizualno ureÄ‘ivanje" + +#: includes/fields/class-acf-field-wysiwyg.php:359 +msgid "Visual" +msgstr "Vizualno" + +#: includes/fields/class-acf-field-wysiwyg.php:360 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Tekst polje" + +#: includes/fields/class-acf-field-wysiwyg.php:366 +msgid "Click to initialize TinyMCE" +msgstr "Aktiviraj vizualno ureÄ‘ivanje na klik" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Tabs" +msgstr "Kartice" + +#: includes/fields/class-acf-field-wysiwyg.php:424 +msgid "Visual & Text" +msgstr "Vizualno i tekstualno" + +#: includes/fields/class-acf-field-wysiwyg.php:425 +msgid "Visual Only" +msgstr "Samo vizualni" + +#: includes/fields/class-acf-field-wysiwyg.php:426 +msgid "Text Only" +msgstr "Samo tekstualno" + +#: includes/fields/class-acf-field-wysiwyg.php:433 +msgid "Toolbar" +msgstr "Alatna traka" + +#: includes/fields/class-acf-field-wysiwyg.php:443 +msgid "Show Media Upload Buttons?" +msgstr "Prikaži gumb za odabir datoteka?" + +#: includes/fields/class-acf-field-wysiwyg.php:453 +msgid "Delay initialization?" +msgstr "Odgodi uÄitavanje?" + +#: includes/fields/class-acf-field-wysiwyg.php:454 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE neće biti uÄitan dok korisnik ne klikne na polje" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Uredi skup polja" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Verificiraj email" + +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:573 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Ažuriraj" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Objava ažurirana" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Spam" + +#: includes/input.php:259 +msgid "Expand Details" +msgstr "ProÅ¡ireni prikaz" + +#: includes/input.php:260 +msgid "Collapse Details" +msgstr "Sakrij detalje" + +#: includes/input.php:261 +msgid "Validation successful" +msgstr "UspjeÅ¡na verifikacija" + +#: includes/input.php:262 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Verifikacija nije uspjela" + +#: includes/input.php:263 +msgid "1 field requires attention" +msgstr "1 polje treba vaÅ¡u pažnju" + +#: includes/input.php:264 +#, php-format +msgid "%d fields require attention" +msgstr "Nekoliko polja treba vaÅ¡u pažnje: %d" + +#: includes/input.php:265 +msgid "Restricted" +msgstr "OgraniÄen pristup" + +#: includes/input.php:266 +msgid "Are you sure?" +msgstr "Jeste li sigurni?" + +#: includes/input.php:270 +msgid "Cancel" +msgstr "Otkaži" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Objava" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Stranice" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Forme" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Prilog" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Svi oblici %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Komentar" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Trenutni tip korisnika" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Admin" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Trenutni korisnik" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Prijavljen" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Prikazuje web stranicu" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Prikazuje administracijki dio" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Stavka izbornika" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Izbornik" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Lokacije izbornika" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Izbornici" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "MatiÄna stranica" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Predložak stranice" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Zadani predložak" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Tip stranice" + +#: includes/locations/class-acf-location-page-type.php:145 +msgid "Front Page" +msgstr "PoÄetna stranica" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Posts Page" +msgstr "Stranica za objave" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Top Level Page (no parent)" +msgstr "MatiÄna stranica (Nije podstranica)" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Parent Page (has children)" +msgstr "MatiÄan stranica (Ima podstranice)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Child Page (has parent)" +msgstr "Pod-stranica (Ima matiÄnu stranicu)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Kategorija objave" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Format objave" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Status objave" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taksonomija objave" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Predložak stranice" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Pojam takosnomije" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "KorisniÄki obrazac" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Dodaj / Uredi" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registriraj" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Tip korisnika" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "Uredi" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "Ažuriraj" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s je obavezno" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Objavi" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Niste dodali nijedan skup polja na ovu stranicu, Dodaj skup " +"polja" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "GreÅ¡ka. GreÅ¡ka prilikom spajanja na server" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Ažuriranja" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Deaktiviraj licencu" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Aktiviraj licencu" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Informacije o licenci" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Da bi omogućili ažuriranje, molimo unesite vaÅ¡u licencu i polje ispod. " +"Ukoliko ne posjedujete licencu, molimo posjetite detalji i cijene." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Licenca" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Ažuriraj informacije" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Trenutna vezija" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Posljednja dostupna verzija" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Dostupna nadogradnja" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Nadogradi dodatak" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Unesite licencu kako bi mogli izvrÅ¡iti nadogradnju" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Provjeri ponovno" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Obavijest od nadogradnjama" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Kloniraj" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Odaberite jedno ili viÅ¡e polja koja želite klonirati" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Prikaz" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Odaberite naÄin prikaza kloniranog polja" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Skupno (Prikazuje odabrana polja kao dodatni skup unutar trenutnog polja)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Zamjena (Prikazuje odabrana polja umjesto trenutnog polja)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Oznake će biti prikazane kao %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Dodaj prefiks ispred oznake" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Vrijednosti će biti spremljene kao %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Dodaj prefiks ispred naziva polja" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Nepoznato polje" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Nepoznat skup polja" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Sva polje iz %s skupa polja" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:174 +#: pro/fields/class-acf-field-repeater.php:470 +msgid "Add Row" +msgstr "Dodaj red" + +#: pro/fields/class-acf-field-flexible-content.php:34 +msgid "layout" +msgstr "raspored" + +#: pro/fields/class-acf-field-flexible-content.php:35 +msgid "layouts" +msgstr "rasporedi" + +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "remove {layout}?" +msgstr "ukloni {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:37 +msgid "This field requires at least {min} {identifier}" +msgstr "Polje mora sadržavati najmanje {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:38 +msgid "This field has a limit of {max} {identifier}" +msgstr "Polje je ograniÄeno na najviÅ¡e {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:39 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Polje mora sadržavati najmanje {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:40 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Polje {label} smije sadržavati najviÅ¡e {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:41 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} preostalo (najviÅ¡e {max})" + +#: pro/fields/class-acf-field-flexible-content.php:42 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} obavezno (najmanje {min})" + +#: pro/fields/class-acf-field-flexible-content.php:43 +msgid "Flexible Content requires at least 1 layout" +msgstr "Potrebno je unijeti najmanje jedno fleksibilni polje" + +#: pro/fields/class-acf-field-flexible-content.php:273 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Kliknite “%s†gumb kako bi zapoÄeki kreiranje raspored" + +#: pro/fields/class-acf-field-flexible-content.php:406 +msgid "Add layout" +msgstr "Dodaj razmjeÅ¡taj" + +#: pro/fields/class-acf-field-flexible-content.php:407 +msgid "Remove layout" +msgstr "Ukloni razmjeÅ¡taj" + +#: pro/fields/class-acf-field-flexible-content.php:408 +#: pro/fields/class-acf-field-repeater.php:298 +msgid "Click to toggle" +msgstr "Klikni za ukljuÄivanje/iskljuÄivanje" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Reorder Layout" +msgstr "Presloži polja povlaÄenjem" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Reorder" +msgstr "Presloži" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Delete Layout" +msgstr "ObriÅ¡i" + +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Duplicate Layout" +msgstr "Dupliciraj razmjeÅ¡taj" + +#: pro/fields/class-acf-field-flexible-content.php:559 +msgid "Add New Layout" +msgstr "Dodaj novi razmjeÅ¡taj" + +#: pro/fields/class-acf-field-flexible-content.php:630 +msgid "Min" +msgstr "Minimum" + +#: pro/fields/class-acf-field-flexible-content.php:643 +msgid "Max" +msgstr "Maksimum" + +#: pro/fields/class-acf-field-flexible-content.php:670 +#: pro/fields/class-acf-field-repeater.php:466 +msgid "Button Label" +msgstr "Tekst gumba" + +#: pro/fields/class-acf-field-flexible-content.php:679 +msgid "Minimum Layouts" +msgstr "Najmanje" + +#: pro/fields/class-acf-field-flexible-content.php:688 +msgid "Maximum Layouts" +msgstr "NajviÅ¡e" + +#: pro/fields/class-acf-field-gallery.php:41 +msgid "Add Image to Gallery" +msgstr "Dodaj sliku u galeriju" + +#: pro/fields/class-acf-field-gallery.php:45 +msgid "Maximum selection reached" +msgstr "Već ste dodali najviÅ¡e dozovoljenih polja" + +#: pro/fields/class-acf-field-gallery.php:321 +msgid "Length" +msgstr "Dužina" + +#: pro/fields/class-acf-field-gallery.php:364 +msgid "Caption" +msgstr "Potpis" + +#: pro/fields/class-acf-field-gallery.php:373 +msgid "Alt Text" +msgstr "Alternativni tekst" + +#: pro/fields/class-acf-field-gallery.php:544 +msgid "Add to gallery" +msgstr "Dodaj u galeriju" + +#: pro/fields/class-acf-field-gallery.php:548 +msgid "Bulk actions" +msgstr "Grupne akcije" + +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Sort by date uploaded" +msgstr "Razvrstaj po datumu dodavanja" + +#: pro/fields/class-acf-field-gallery.php:550 +msgid "Sort by date modified" +msgstr "Razvrstaj po datumu zadnje promjene" + +#: pro/fields/class-acf-field-gallery.php:551 +msgid "Sort by title" +msgstr "Razvrstaj po naslovu" + +#: pro/fields/class-acf-field-gallery.php:552 +msgid "Reverse current order" +msgstr "Obrnuti redosljed" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Close" +msgstr "Zatvori" + +#: pro/fields/class-acf-field-gallery.php:624 +msgid "Minimum Selection" +msgstr "Minimalni odabri" + +#: pro/fields/class-acf-field-gallery.php:633 +msgid "Maximum Selection" +msgstr "Maksimalni odabir" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Insert" +msgstr "Umetni" + +#: pro/fields/class-acf-field-gallery.php:643 +msgid "Specify where new attachments are added" +msgstr "Precizirajte gdje se dodaju novi prilozi" + +#: pro/fields/class-acf-field-gallery.php:647 +msgid "Append to the end" +msgstr "Umetni na kraj" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Prepend to the beginning" +msgstr "Umetni na poÄetak" + +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Minimum rows reached ({min} rows)" +msgstr "Minimalni broj redova je već odabran ({min})" + +#: pro/fields/class-acf-field-repeater.php:37 +msgid "Maximum rows reached ({max} rows)" +msgstr "Maksimalni broj redova je već odabran ({max})" + +#: pro/fields/class-acf-field-repeater.php:343 +msgid "Add row" +msgstr "Dodaj red" + +#: pro/fields/class-acf-field-repeater.php:344 +msgid "Remove row" +msgstr "Ukloni red" + +#: pro/fields/class-acf-field-repeater.php:419 +msgid "Collapsed" +msgstr "Sklopljeno" + +#: pro/fields/class-acf-field-repeater.php:420 +msgid "Select a sub field to show when row is collapsed" +msgstr "Odaberite pod polje koje će biti prikazano dok je red sklopljen" + +#: pro/fields/class-acf-field-repeater.php:430 +msgid "Minimum Rows" +msgstr "Minimalno redova" + +#: pro/fields/class-acf-field-repeater.php:440 +msgid "Maximum Rows" +msgstr "Maksimalno redova" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Ne postoji stranica sa postavkama" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Postavke" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Postavke spremljene" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Da bi omogućili automatsko ažuriranje, molimo unesite licencu na stranici ažuriranja. Ukoliko nemate licencu, pogledajte opcije i cijene." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Getting Started" +#~ msgstr "Kako poÄeti" + +#~ msgid "Field Types" +#~ msgstr "Tipovi polja" + +#~ msgid "Functions" +#~ msgstr "Funkcije" + +#~ msgid "Actions" +#~ msgstr "Akcije" + +#~ msgid "Features" +#~ msgstr "Mogućnosti" + +#~ msgid "How to" +#~ msgstr "Pomoć" + +#~ msgid "Tutorials" +#~ msgstr "Tutorijali" + +#~ msgid "FAQ" +#~ msgstr "ÄŒesta pitanja" + +#~ msgid "Error" +#~ msgstr "GreÅ¡ka" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Izvoz polja u PHP obliku" + +#~ msgid "Download export file" +#~ msgstr "Preuzmi datoteku" + +#~ msgid "Generate export code" +#~ msgstr "Stvori kod za izvoz" + +#~ msgid "Import" +#~ msgstr "Uvoz" + +#~ msgid "Term meta upgrade not possible (termmeta table does not exist)" +#~ msgstr "" +#~ "Nije moguće dovriÅ¡ti nadogradnju tablice 'termmeta', tablica ne postoji u " +#~ "bazi" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-hu_HU.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-hu_HU.mo new file mode 100644 index 0000000000000000000000000000000000000000..52f1e676f3ab9f54a8b250c5d6dce1f1f8d4677e GIT binary patch literal 37028 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 #iYXzY^*5Hp3x%s-p55SHr*7q1VOdpll@HA^VH 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 P_Hn(x(!ig8=??xsx(#fg literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-hu_HU.po b/wp-content/plugins/advanced-custom-fields/lang/acf-hu_HU.po new file mode 100644 index 0000000..12f55f7 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-hu_HU.po @@ -0,0 +1,2715 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2015-08-11 23:26+0200\n" +"PO-Revision-Date: 2018-02-06 10:06+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Elliot Condon \n" +"Language: hu_HU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;" +"esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:205 admin/admin.php:61 +msgid "Field Groups" +msgstr "" + +#: acf.php:206 +msgid "Field Group" +msgstr "MezÅ‘csoport" + +#: acf.php:207 acf.php:239 admin/admin.php:62 pro/fields/flexible-content.php:517 +msgid "Add New" +msgstr "Új hozzáadása" + +#: acf.php:208 +msgid "Add New Field Group" +msgstr "Új mezÅ‘csoport hozzáadása" + +#: acf.php:209 +msgid "Edit Field Group" +msgstr "MezÅ‘csoport szerkesztése" + +#: acf.php:210 +msgid "New Field Group" +msgstr "Új mezÅ‘csoport" + +#: acf.php:211 +msgid "View Field Group" +msgstr "MezÅ‘csoport megtekintése" + +#: acf.php:212 +msgid "Search Field Groups" +msgstr "MezÅ‘csoportok keresése" + +#: acf.php:213 +msgid "No Field Groups found" +msgstr "Nincsenek mezÅ‘csoportok" + +#: acf.php:214 +msgid "No Field Groups found in Trash" +msgstr "Nem található mezÅ‘csoport a lomtárban." + +#: acf.php:237 admin/field-group.php:182 admin/field-group.php:213 admin/field-groups.php:519 +msgid "Fields" +msgstr "MezÅ‘k" + +#: acf.php:238 +msgid "Field" +msgstr "MezÅ‘" + +#: acf.php:240 +msgid "Add New Field" +msgstr "MezÅ‘ hozzáadása" + +#: acf.php:241 +msgid "Edit Field" +msgstr "MezÅ‘ szerkesztése" + +#: acf.php:242 admin/views/field-group-fields.php:18 admin/views/settings-info.php:111 +msgid "New Field" +msgstr "Új mezÅ‘" + +#: acf.php:243 +msgid "View Field" +msgstr "MezÅ‘ megtekintése" + +#: acf.php:244 +msgid "Search Fields" +msgstr "MezÅ‘k keresése" + +#: acf.php:245 +msgid "No Fields found" +msgstr "MezÅ‘k nem találhatók" + +#: acf.php:246 +msgid "No Fields found in Trash" +msgstr "Nem található mezÅ‘csoport a lomtárban." + +#: acf.php:268 admin/field-group.php:283 admin/field-groups.php:583 +#: admin/views/field-group-options.php:18 +msgid "Disabled" +msgstr "" + +#: acf.php:273 +#, php-format +msgid "Disabled (%s)" +msgid_plural "Disabled (%s)" +msgstr[0] "" +msgstr[1] "" + +#: admin/admin.php:57 admin/views/field-group-options.php:120 +msgid "Custom Fields" +msgstr "Egyéni mezÅ‘k" + +#: admin/field-group.php:68 admin/field-group.php:69 admin/field-group.php:71 +msgid "Field group updated." +msgstr "MezÅ‘csoport frissítve." + +#: admin/field-group.php:70 +msgid "Field group deleted." +msgstr "" + +#: admin/field-group.php:73 +msgid "Field group published." +msgstr "MezÅ‘csoport közzétéve." + +#: admin/field-group.php:74 +msgid "Field group saved." +msgstr "MezÅ‘csoport elmentve." + +#: admin/field-group.php:75 +msgid "Field group submitted." +msgstr "MezÅ‘csoport elküldve." + +#: admin/field-group.php:76 +msgid "Field group scheduled for." +msgstr "Bejegyzéscsoport elÅ‘jegyezve." + +#: admin/field-group.php:77 +msgid "Field group draft updated." +msgstr "MezÅ‘csoport vázlata frissítve." + +#: admin/field-group.php:176 +msgid "Move to trash. Are you sure?" +msgstr "Ãthelyezés a lomtárba. Biztosak vagyunk benne?" + +#: admin/field-group.php:177 +msgid "checked" +msgstr "bejelölve" + +#: admin/field-group.php:178 +msgid "No toggle fields available" +msgstr "VáltómezÅ‘k nem elérhetÅ‘k" + +#: admin/field-group.php:179 +msgid "Field group title is required" +msgstr "A mezÅ‘csoport címét kötelezÅ‘ megadni" + +#: admin/field-group.php:180 api/api-field-group.php:607 +msgid "copy" +msgstr "másolat" + +#: admin/field-group.php:181 admin/views/field-group-field-conditional-logic.php:67 +#: admin/views/field-group-field-conditional-logic.php:162 admin/views/field-group-locations.php:23 +#: admin/views/field-group-locations.php:131 api/api-helpers.php:3262 +msgid "or" +msgstr "vagy" + +#: admin/field-group.php:183 +msgid "Parent fields" +msgstr "Fölérendelt mezÅ‘k" + +#: admin/field-group.php:184 +msgid "Sibling fields" +msgstr "Egyenrangú mezÅ‘k" + +#: admin/field-group.php:185 +msgid "Move Custom Field" +msgstr "Egyéni mezÅ‘ áthelyezése" + +#: admin/field-group.php:186 +msgid "This field cannot be moved until its changes have been saved" +msgstr "A mezÅ‘ nem helyezhetÅ‘ át, amíg a változtatások nincsenek elmentve" + +#: admin/field-group.php:187 +msgid "Null" +msgstr "Null" + +#: admin/field-group.php:188 core/input.php:128 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" + +#: admin/field-group.php:189 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "" + +#: admin/field-group.php:214 +msgid "Location" +msgstr "Megjelenítés helye" + +#: admin/field-group.php:215 +msgid "Settings" +msgstr "" + +#: admin/field-group.php:253 +msgid "Field Keys" +msgstr "" + +#: admin/field-group.php:283 admin/views/field-group-options.php:17 +msgid "Active" +msgstr "" + +#: admin/field-group.php:744 +msgid "Front Page" +msgstr "KezdÅ‘oldal" + +#: admin/field-group.php:745 +msgid "Posts Page" +msgstr "Bejegyzések oldala" + +#: admin/field-group.php:746 +msgid "Top Level Page (no parent)" +msgstr "" + +#: admin/field-group.php:747 +msgid "Parent Page (has children)" +msgstr "SzülÅ‘oldal (vannak gyermekei)" + +#: admin/field-group.php:748 +msgid "Child Page (has parent)" +msgstr "Gyermekoldal (van szülÅ‘oldala)" + +#: admin/field-group.php:764 +msgid "Default Template" +msgstr "Alapértelmezett sablonminta" + +#: admin/field-group.php:786 +msgid "Logged in" +msgstr "" + +#: admin/field-group.php:787 +msgid "Viewing front end" +msgstr "" + +#: admin/field-group.php:788 +msgid "Viewing back end" +msgstr "" + +#: admin/field-group.php:807 +msgid "Super Admin" +msgstr "Szuper admin" + +#: admin/field-group.php:818 admin/field-group.php:826 admin/field-group.php:840 +#: admin/field-group.php:847 admin/field-group.php:862 admin/field-group.php:872 fields/file.php:235 +#: fields/image.php:226 pro/fields/gallery.php:653 +msgid "All" +msgstr "Összes" + +#: admin/field-group.php:827 +msgid "Add / Edit" +msgstr "Hozzáadás / Szerkesztés" + +#: admin/field-group.php:828 +msgid "Register" +msgstr "Regisztrálás" + +#: admin/field-group.php:1059 +msgid "Move Complete." +msgstr "Ãthelyezés befejezÅ‘dött." + +#: admin/field-group.php:1060 +#, fuzzy, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "A(z) %s mezÅ‘ mostantól a %s mezÅ‘csoportban található." + +#: admin/field-group.php:1062 +msgid "Close Window" +msgstr "Ablak bezárása" + +#: admin/field-group.php:1097 +#, fuzzy +msgid "Please select the destination for this field" +msgstr "Válasszuk ki a mezÅ‘ áthelyezésének célját" + +#: admin/field-group.php:1104 +msgid "Move Field" +msgstr "MezÅ‘ áthelyezése" + +#: admin/field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "" +msgstr[1] "" + +#: admin/field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "" + +#: admin/field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "" +msgstr[1] "" + +#: admin/field-groups.php:228 +#, php-format +msgid "Field group synchronised. %s" +msgstr "" + +#: admin/field-groups.php:232 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "" +msgstr[1] "" + +#: admin/field-groups.php:403 admin/field-groups.php:573 +msgid "Sync available" +msgstr "" + +#: admin/field-groups.php:516 +msgid "Title" +msgstr "Cím" + +#: admin/field-groups.php:517 admin/views/field-group-options.php:98 admin/views/update-network.php:20 +#: admin/views/update-network.php:28 +msgid "Description" +msgstr "" + +#: admin/field-groups.php:518 admin/views/field-group-options.php:10 +msgid "Status" +msgstr "" + +#: admin/field-groups.php:616 admin/settings-info.php:76 pro/admin/views/settings-updates.php:111 +msgid "Changelog" +msgstr "Változások (changelog)" + +#: admin/field-groups.php:617 +msgid "See what's new in" +msgstr "Újdonságok áttekintése:" + +#: admin/field-groups.php:617 +msgid "version" +msgstr "verzió" + +#: admin/field-groups.php:619 +msgid "Resources" +msgstr "Források" + +#: admin/field-groups.php:621 +msgid "Getting Started" +msgstr "Kezdjük el" + +#: admin/field-groups.php:622 pro/admin/settings-updates.php:73 pro/admin/views/settings-updates.php:17 +msgid "Updates" +msgstr "Frissítések" + +#: admin/field-groups.php:623 +msgid "Field Types" +msgstr "MezÅ‘típusok" + +#: admin/field-groups.php:624 +msgid "Functions" +msgstr "Funkciók (functions)" + +#: admin/field-groups.php:625 +msgid "Actions" +msgstr "Műveletek (actions)" + +#: admin/field-groups.php:626 fields/relationship.php:718 +msgid "Filters" +msgstr "SzűrÅ‘k" + +#: admin/field-groups.php:627 +msgid "'How to' guides" +msgstr "'Hogyan?' útmutatók" + +#: admin/field-groups.php:628 +msgid "Tutorials" +msgstr "Oktatóanyagok" + +#: admin/field-groups.php:633 +msgid "Created by" +msgstr "SzerzÅ‘" + +#: admin/field-groups.php:673 +msgid "Duplicate this item" +msgstr "" + +#: admin/field-groups.php:673 admin/field-groups.php:685 admin/views/field-group-field.php:58 +#: pro/fields/flexible-content.php:516 +msgid "Duplicate" +msgstr "Duplikálás" + +#: admin/field-groups.php:724 +#, php-format +msgid "Select %s" +msgstr "" + +#: admin/field-groups.php:730 +msgid "Synchronise field group" +msgstr "" + +#: admin/field-groups.php:730 admin/field-groups.php:750 +msgid "Sync" +msgstr "" + +#: admin/settings-addons.php:51 admin/views/settings-addons.php:9 +msgid "Add-ons" +msgstr "KiegészítÅ‘ bÅ‘vítmények" + +#: admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Hiba. A bÅ‘vítmények listáját nem lehet betölteni." + +#: admin/settings-info.php:50 +msgid "Info" +msgstr "Információ" + +#: admin/settings-info.php:75 +msgid "What's New" +msgstr "Újdonságok" + +#: admin/settings-tools.php:54 admin/views/settings-tools-export.php:9 admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "" + +#: admin/settings-tools.php:151 admin/settings-tools.php:365 +msgid "No field groups selected" +msgstr "Nincsenek mezÅ‘csoportok kiválasztva." + +#: admin/settings-tools.php:188 +msgid "No file selected" +msgstr "Nincs fájl kiválasztva" + +#: admin/settings-tools.php:201 +msgid "Error uploading file. Please try again" +msgstr "Hiba a fájl feltöltése során. Próbáljuk meg újra." + +#: admin/settings-tools.php:210 +msgid "Incorrect file type" +msgstr "Érvénytelen fájltípus." + +#: admin/settings-tools.php:227 +msgid "Import file empty" +msgstr "Az importfájl üres." + +#: admin/settings-tools.php:323 +#, php-format +msgid "Success. Import tool added %s field groups: %s" +msgstr "Sikeres. Az importáló eszköz %s mezÅ‘csoportot adott hozzá: %s" + +#: admin/settings-tools.php:332 +#, php-format +msgid "Warning. Import tool detected %s field groups already exist and have been ignored: %s" +msgstr "" +"Figyelmeztetés. Az importáló eszköz észlelte, hogy %s mezÅ‘csoport már létezik, így ezeket " +"figyelmen kívül hagyta: %s" + +#: admin/update.php:113 +msgid "Upgrade ACF" +msgstr "" + +#: admin/update.php:143 +msgid "Review sites & upgrade" +msgstr "" + +#: admin/update.php:298 +msgid "Upgrade" +msgstr "Frissítés" + +#: admin/update.php:328 +msgid "Upgrade Database" +msgstr "" + +#: admin/views/field-group-field-conditional-logic.php:29 +msgid "Conditional Logic" +msgstr "Logikai feltételek" + +#: admin/views/field-group-field-conditional-logic.php:40 admin/views/field-group-field.php:137 +#: fields/checkbox.php:246 fields/message.php:117 fields/page_link.php:568 fields/page_link.php:582 +#: fields/post_object.php:434 fields/post_object.php:448 fields/select.php:411 fields/select.php:425 +#: fields/select.php:439 fields/select.php:453 fields/tab.php:172 fields/taxonomy.php:770 +#: fields/taxonomy.php:784 fields/taxonomy.php:798 fields/taxonomy.php:812 fields/user.php:457 +#: fields/user.php:471 fields/wysiwyg.php:384 pro/admin/views/settings-updates.php:93 +msgid "Yes" +msgstr "Igen" + +#: admin/views/field-group-field-conditional-logic.php:41 admin/views/field-group-field.php:138 +#: fields/checkbox.php:247 fields/message.php:118 fields/page_link.php:569 fields/page_link.php:583 +#: fields/post_object.php:435 fields/post_object.php:449 fields/select.php:412 fields/select.php:426 +#: fields/select.php:440 fields/select.php:454 fields/tab.php:173 fields/taxonomy.php:685 +#: fields/taxonomy.php:771 fields/taxonomy.php:785 fields/taxonomy.php:799 fields/taxonomy.php:813 +#: fields/user.php:458 fields/user.php:472 fields/wysiwyg.php:385 +#: pro/admin/views/settings-updates.php:103 +msgid "No" +msgstr "Nem" + +#: admin/views/field-group-field-conditional-logic.php:65 +msgid "Show this field if" +msgstr "MezÅ‘ megjelenítése, ha" + +#: admin/views/field-group-field-conditional-logic.php:111 admin/views/field-group-locations.php:88 +msgid "is equal to" +msgstr "egyenlÅ‘" + +#: admin/views/field-group-field-conditional-logic.php:112 admin/views/field-group-locations.php:89 +msgid "is not equal to" +msgstr "nem egyenlÅ‘" + +#: admin/views/field-group-field-conditional-logic.php:149 admin/views/field-group-locations.php:118 +msgid "and" +msgstr "és" + +#: admin/views/field-group-field-conditional-logic.php:164 admin/views/field-group-locations.php:133 +msgid "Add rule group" +msgstr "Szabálycsoport hozzáadása" + +#: admin/views/field-group-field.php:54 admin/views/field-group-field.php:57 +msgid "Edit field" +msgstr "MezÅ‘ szerkesztése" + +#: admin/views/field-group-field.php:57 pro/fields/gallery.php:355 +msgid "Edit" +msgstr "Szerkesztés" + +#: admin/views/field-group-field.php:58 +msgid "Duplicate field" +msgstr "MezÅ‘ duplikálása" + +#: admin/views/field-group-field.php:59 +msgid "Move field to another group" +msgstr "MezÅ‘ áthelyezése másik csoportba" + +#: admin/views/field-group-field.php:59 +msgid "Move" +msgstr "Ãthelyezés" + +#: admin/views/field-group-field.php:60 +msgid "Delete field" +msgstr "MezÅ‘ törlése" + +#: admin/views/field-group-field.php:60 pro/fields/flexible-content.php:515 +msgid "Delete" +msgstr "Törlés" + +#: admin/views/field-group-field.php:68 fields/oembed.php:212 fields/taxonomy.php:886 +msgid "Error" +msgstr "Hiba" + +#: fields/oembed.php:220 fields/taxonomy.php:900 +msgid "Error." +msgstr "Hiba." + +#: admin/views/field-group-field.php:68 +msgid "Field type does not exist" +msgstr "MezÅ‘típus nem létezik" + +#: admin/views/field-group-field.php:81 +msgid "Field Label" +msgstr "MezÅ‘felirat" + +#: admin/views/field-group-field.php:82 +msgid "This is the name which will appear on the EDIT page" +msgstr "Ez a felirat jelenik meg a szerkesztÅ‘oldalon" + +#: admin/views/field-group-field.php:93 +msgid "Field Name" +msgstr "MezÅ‘név" + +#: admin/views/field-group-field.php:94 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Egyetlen szó, szóközök és ékezetek nélkül, alulvonás és kötÅ‘jel használata megengedett" + +#: admin/views/field-group-field.php:105 +msgid "Field Type" +msgstr "MezÅ‘típus" + +#: admin/views/field-group-field.php:118 fields/tab.php:143 +msgid "Instructions" +msgstr "Útmutató" + +#: admin/views/field-group-field.php:119 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Útmutató a szerzÅ‘k számára, az adatok bevitelénél jelenik meg" + +#: admin/views/field-group-field.php:130 +msgid "Required?" +msgstr "KötelezÅ‘" + +#: admin/views/field-group-field.php:158 +msgid "Wrapper Attributes" +msgstr "" + +#: admin/views/field-group-field.php:164 +msgid "width" +msgstr "" + +#: admin/views/field-group-field.php:178 +msgid "class" +msgstr "" + +#: admin/views/field-group-field.php:191 +msgid "id" +msgstr "" + +#: admin/views/field-group-field.php:203 +msgid "Close Field" +msgstr "MezÅ‘ bezárása" + +#: admin/views/field-group-fields.php:29 +msgid "Order" +msgstr "Sorrend" + +#: admin/views/field-group-fields.php:30 pro/fields/flexible-content.php:541 +msgid "Label" +msgstr "Felirat" + +#: admin/views/field-group-fields.php:31 pro/fields/flexible-content.php:554 +msgid "Name" +msgstr "Név" + +#: admin/views/field-group-fields.php:32 +msgid "Type" +msgstr "Típus" + +#: admin/views/field-group-fields.php:44 +msgid "No fields. Click the + Add Field button to create your first field." +msgstr "" +"Nincsenek mezÅ‘k. Kattintsunk a +MezÅ‘ hozzáadása gombra az elsÅ‘ mezÅ‘ létrehozásához." + +#: admin/views/field-group-fields.php:51 +msgid "Drag and drop to reorder" +msgstr "Rendezéshez fogjuk meg és húzzuk a mezÅ‘t a megfelelÅ‘ helyre" + +#: admin/views/field-group-fields.php:54 +msgid "+ Add Field" +msgstr "+ MezÅ‘ hozzáadása" + +#: admin/views/field-group-locations.php:5 +msgid "Rules" +msgstr "Szabályok" + +#: admin/views/field-group-locations.php:6 +msgid "Create a set of rules to determine which edit screens will use these advanced custom fields" +msgstr "Hozzunk létre szabályokat, hogy melyik szerkesztÅ‘képernyÅ‘k használják a mezÅ‘csoportot" + +#: admin/views/field-group-locations.php:21 +msgid "Show this field group if" +msgstr "MezÅ‘csoport megjelenítése, ha" + +#: admin/views/field-group-locations.php:41 admin/views/field-group-locations.php:47 +msgid "Post" +msgstr "Bejegyzés" + +#: admin/views/field-group-locations.php:42 fields/relationship.php:724 +msgid "Post Type" +msgstr "Bejegyzés típusa" + +#: admin/views/field-group-locations.php:43 +msgid "Post Status" +msgstr "Bejegyzés-állapot" + +#: admin/views/field-group-locations.php:44 +msgid "Post Format" +msgstr "Bejegyzés-formátum" + +#: admin/views/field-group-locations.php:45 +msgid "Post Category" +msgstr "Bejegyzés-kategória" + +#: admin/views/field-group-locations.php:46 +msgid "Post Taxonomy" +msgstr "Bejegyzés-osztályozás (taxonómia)" + +#: admin/views/field-group-locations.php:49 admin/views/field-group-locations.php:53 +msgid "Page" +msgstr "Oldal" + +#: admin/views/field-group-locations.php:50 +msgid "Page Template" +msgstr "Oldal-sablonminta" + +#: admin/views/field-group-locations.php:51 +msgid "Page Type" +msgstr "Oldaltípus" + +#: admin/views/field-group-locations.php:52 +msgid "Page Parent" +msgstr "Oldal szülÅ‘" + +#: admin/views/field-group-locations.php:55 fields/user.php:36 +msgid "User" +msgstr "Felhasználó (user)" + +#: admin/views/field-group-locations.php:56 +msgid "Current User" +msgstr "" + +#: admin/views/field-group-locations.php:57 +msgid "Current User Role" +msgstr "" + +#: admin/views/field-group-locations.php:58 +msgid "User Form" +msgstr "Felhasználói adatlap" + +#: admin/views/field-group-locations.php:59 +msgid "User Role" +msgstr "Felhasználói szerepkör" + +#: admin/views/field-group-locations.php:61 pro/admin/options-page.php:48 +msgid "Forms" +msgstr "Adatlapok" + +#: admin/views/field-group-locations.php:62 +msgid "Attachment" +msgstr "Csatolmány" + +#: admin/views/field-group-locations.php:63 +msgid "Taxonomy Term" +msgstr "Osztályozási kifejezés (term)" + +#: admin/views/field-group-locations.php:64 +msgid "Comment" +msgstr "Hozzászólás" + +#: admin/views/field-group-locations.php:65 +msgid "Widget" +msgstr "Widget" + +#: admin/views/field-group-options.php:25 +msgid "Style" +msgstr "Stílus" + +#: admin/views/field-group-options.php:32 +msgid "Standard (WP metabox)" +msgstr "Hagyományos (WP doboz)" + +#: admin/views/field-group-options.php:33 +msgid "Seamless (no metabox)" +msgstr "Ãtmenet nélkül (nincs doboz)" + +#: admin/views/field-group-options.php:40 +msgid "Position" +msgstr "Pozíció" + +#: admin/views/field-group-options.php:47 +msgid "High (after title)" +msgstr "Magasan (cím után)" + +#: admin/views/field-group-options.php:48 +msgid "Normal (after content)" +msgstr "Normál (tartalom után)" + +#: admin/views/field-group-options.php:49 +msgid "Side" +msgstr "Oldalsáv" + +#: admin/views/field-group-options.php:57 +msgid "Label placement" +msgstr "MezÅ‘felirat elhelyezése" + +#: admin/views/field-group-options.php:64 fields/tab.php:159 +msgid "Top aligned" +msgstr "Fent" + +#: admin/views/field-group-options.php:65 fields/tab.php:160 +msgid "Left aligned" +msgstr "Balra" + +#: admin/views/field-group-options.php:72 +msgid "Instruction placement" +msgstr "Útmutató elhelyezése" + +#: admin/views/field-group-options.php:79 +msgid "Below labels" +msgstr "MezÅ‘feliratok alatt" + +#: admin/views/field-group-options.php:80 +msgid "Below fields" +msgstr "MezÅ‘k alatt" + +#: admin/views/field-group-options.php:87 +msgid "Order No." +msgstr "Sorrend" + +#: admin/views/field-group-options.php:88 +msgid "Field groups with a lower order will appear first" +msgstr "" + +#: admin/views/field-group-options.php:99 +msgid "Shown in field group list" +msgstr "" + +#: admin/views/field-group-options.php:109 +msgid "Hide on screen" +msgstr "Ne legyen látható" + +#: admin/views/field-group-options.php:110 +msgid "Select items to hide them from the edit screen." +msgstr "" + +#: admin/views/field-group-options.php:110 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's options will be used (the " +"one with the lowest order number)" +msgstr "" + +#: admin/views/field-group-options.php:117 +msgid "Permalink" +msgstr "Közvetlen hivatkozás" + +#: admin/views/field-group-options.php:118 +msgid "Content Editor" +msgstr "TartalomszerkesztÅ‘" + +#: admin/views/field-group-options.php:119 +msgid "Excerpt" +msgstr "Kivonat" + +#: admin/views/field-group-options.php:121 +msgid "Discussion" +msgstr "Interakció" + +#: admin/views/field-group-options.php:122 +msgid "Comments" +msgstr "Hozzászólások" + +#: admin/views/field-group-options.php:123 +msgid "Revisions" +msgstr "Változatok" + +#: admin/views/field-group-options.php:124 +msgid "Slug" +msgstr "KeresÅ‘barát név (slug)" + +#: admin/views/field-group-options.php:125 +msgid "Author" +msgstr "SzerzÅ‘" + +#: admin/views/field-group-options.php:126 +msgid "Format" +msgstr "Formátum" + +#: admin/views/field-group-options.php:127 +msgid "Page Attributes" +msgstr "Oldal tulajdonságai" + +#: admin/views/field-group-options.php:128 fields/relationship.php:737 +msgid "Featured Image" +msgstr "Kiemelt kép" + +#: admin/views/field-group-options.php:129 +msgid "Categories" +msgstr "Kategória" + +#: admin/views/field-group-options.php:130 +msgid "Tags" +msgstr "Címke" + +#: admin/views/field-group-options.php:131 +msgid "Send Trackbacks" +msgstr "Visszakövetés (trackback) küldése" + +#: admin/views/settings-addons.php:23 +msgid "Download & Install" +msgstr "Letöltés és telepítés" + +#: admin/views/settings-addons.php:42 +msgid "Installed" +msgstr "Telepítve" + +#: admin/views/settings-info.php:9 +msgid "Welcome to Advanced Custom Fields" +msgstr "Üdvözlet! Itt az Advanced Custom Fields" + +#: admin/views/settings-info.php:10 +#, php-format +msgid "Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it." +msgstr "Köszönjük a frissítést! Az ACF %s nagyobb és jobb, mint valaha. Reméljük, tetszeni fog!" + +#: admin/views/settings-info.php:23 +msgid "A smoother custom field experience" +msgstr "Az egyéni mezÅ‘k használatának élménye" + +#: admin/views/settings-info.php:28 +msgid "Improved Usability" +msgstr "Továbbfejlesztett használhatóság" + +#: admin/views/settings-info.php:29 +msgid "" +"Including the popular Select2 library has improved both usability and speed across a number of field " +"types including post object, page link, taxonomy and select." +msgstr "" +"A népszerű Select2 könyvtár bevonása számos mezÅ‘típusnál (például bejegyzés objektumok, " +"oldalhivatkozások, osztályozások és kiválasztás) javítja a használhatóságot és a sebességet." + +#: admin/views/settings-info.php:33 +msgid "Improved Design" +msgstr "Továbbfejlesztett megjelenés" + +#: admin/views/settings-info.php:34 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are " +"seen on the gallery, relationship and oEmbed (new) fields!" +msgstr "" +"Számos mezÅ‘ vizuálisan megújult, hogy az ACF jobban nézzen ki, mint valaha. ÉszrevehetÅ‘ változások " +"történtek a galéria, kapcsolat és oEmbed (új) mezÅ‘k esetében." + +#: admin/views/settings-info.php:38 +msgid "Improved Data" +msgstr "Továbbfejlesztett adatszerkezet" + +#: admin/views/settings-info.php:39 +msgid "" +"Redesigning the data architecture has allowed sub fields to live independently from their parents. This " +"allows you to drag and drop fields in and out of parent fields!" +msgstr "" +"Az adatszerkezet újratervezésének köszönhetÅ‘en az almezÅ‘k függetlenek lettek a szülÅ‘mezÅ‘ktÅ‘l. Mindez " +"lehetÅ‘vé teszi, hogy a mezÅ‘ket fogd-és-vidd módon más mezÅ‘kbe, vagy azokon kívülre helyezzük át." + +#: admin/views/settings-info.php:45 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Viszlát kiegészítÅ‘k, helló PRO" + +#: admin/views/settings-info.php:50 +msgid "Introducing ACF PRO" +msgstr "Az ACF PRO bemutatása" + +#: admin/views/settings-info.php:51 +msgid "We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" + +#: admin/views/settings-info.php:52 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro version of ACF. With both " +"personal and developer licenses available, premium functionality is more affordable and accessible than " +"ever before!" +msgstr "" +"Az új ACF PRO változat tartalmazza mind a négy korábbi prémium kiegészítÅ‘t. A " +"személyes és fejlesztÅ‘i licenceknek köszönhetÅ‘en a prémium funkcionalitás így sokkal megfizethetÅ‘bb, " +"mint korábban." + +#: admin/views/settings-info.php:56 +msgid "Powerful Features" +msgstr "Hatékony szolgáltatások" + +#: admin/views/settings-info.php:57 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful " +"gallery field and the ability to create extra admin options pages!" +msgstr "" +"Az ACF PRO változat olyan fantasztikus szolgáltatásokat kínál, mint ismételhetÅ‘ adatok, rugalmas " +"tartalomelrendezések, gyönyörű galériamezÅ‘, és segítségével egyéni beállítás-oldalak is létrehozhatók!" + +#: admin/views/settings-info.php:58 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "További információk az ACF PRO változatról." + +#: admin/views/settings-info.php:62 +msgid "Easy Upgrading" +msgstr "Egyszerű frissítés" + +#: admin/views/settings-info.php:63 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account and claim a free copy of " +"ACF PRO!" +msgstr "" +"A még könnyebb frissítés érdekében csak jelenkezzünk be a felhasználói fiókunkba és " +"igényeljünk egy ingyenes ACF PRO változatot!" + +#: admin/views/settings-info.php:64 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, but if you do have one, " +"please contact our support team via the help desk" +msgstr "" +"A felmerülÅ‘ kérdések megválaszolására egy frissítési útmutató is rendelkezésre áll. " +"Amennyiben az útmutató nem ad választ a kérdésre, vegyük fel a kapcsolatot a támogató " +"csapattal." + +#: admin/views/settings-info.php:72 +msgid "Under the Hood" +msgstr "A motorháztetÅ‘ alatt" + +#: admin/views/settings-info.php:77 +msgid "Smarter field settings" +msgstr "Okosabb mezÅ‘beállítások" + +#: admin/views/settings-info.php:78 +msgid "ACF now saves its field settings as individual post objects" +msgstr "Az ACF a mezÅ‘beállításokat már külön bejegyzésobjektumokba menti" + +#: admin/views/settings-info.php:82 +msgid "More AJAX" +msgstr "Több AJAX" + +#: admin/views/settings-info.php:83 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "Több mezÅ‘ használ AJAX-alapú keresést az oldal gyorsabb betöltésének érdekében." + +#: admin/views/settings-info.php:87 +msgid "Local JSON" +msgstr "Helyi JSON" + +#: admin/views/settings-info.php:88 +msgid "New auto export to JSON feature improves speed" +msgstr "Az új JSON autoexport szolgáltatás javítja a sebességet." + +#: admin/views/settings-info.php:94 +msgid "Better version control" +msgstr "Jobb verziókezelés" + +#: admin/views/settings-info.php:95 +msgid "New auto export to JSON feature allows field settings to be version controlled" +msgstr "Az új JSON autoexport szolgáltatás lehetÅ‘vé teszi a mezÅ‘beállítások verziókezelését." + +#: admin/views/settings-info.php:99 +msgid "Swapped XML for JSON" +msgstr "XML helyett JSON" + +#: admin/views/settings-info.php:100 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Az importálás és exportálás JSON formátumban történik a korábbi XML megoldás helyett." + +#: admin/views/settings-info.php:104 +msgid "New Forms" +msgstr "Új űrlapok" + +#: admin/views/settings-info.php:105 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "A mezÅ‘k már hozzászólásokhoz, widgetekhez és felhasználói adatlapokhoz is hozzárendelhetÅ‘k." + +#: admin/views/settings-info.php:112 +msgid "A new field for embedding content has been added" +msgstr "Új mezÅ‘típus áll rendelkezésre beágyazott tartalmak számára." + +#: admin/views/settings-info.php:116 +msgid "New Gallery" +msgstr "Új galéria" + +#: admin/views/settings-info.php:117 +msgid "The gallery field has undergone a much needed facelift" +msgstr "A galéria mezÅ‘típus jelentÅ‘s és esedékes felfrissítésen esett át." + +#: admin/views/settings-info.php:121 +msgid "New Settings" +msgstr "Új beállítások" + +#: admin/views/settings-info.php:122 +msgid "Field group settings have been added for label placement and instruction placement" +msgstr "A mezÅ‘csoport beállításai kiegészültek a mezÅ‘feliratok és útmutatók elhelyezési lehetÅ‘ségeivel." + +#: admin/views/settings-info.php:128 +msgid "Better Front End Forms" +msgstr "Jobb felhasználó oldali űrlapok" + +#: admin/views/settings-info.php:129 +msgid "acf_form() can now create a new post on submission" +msgstr "" +"Az acf_form() már képes új bejegyzést létrehozni egy felhasználó oldali (front end) űrlap elküldésekor." + +#: admin/views/settings-info.php:133 +msgid "Better Validation" +msgstr "Jobb ellenÅ‘rzés és érvényesítés" + +#: admin/views/settings-info.php:134 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "Az űrlapok érvényesítése már nem kizárólag JS által, hanem PHP + AJAX megoldással történik." + +#: admin/views/settings-info.php:138 +msgid "Relationship Field" +msgstr "Kapcsolat mezÅ‘típus" + +#: admin/views/settings-info.php:139 +msgid "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "Új mezÅ‘beállítás szűrÅ‘k számára (keresés, bejegyzéstípus, osztályozás) a kapcsolat mezÅ‘típusnál." + +#: admin/views/settings-info.php:145 +msgid "Moving Fields" +msgstr "MezÅ‘k áthelyezése" + +#: admin/views/settings-info.php:146 +msgid "New field group functionality allows you to move a field between groups & parents" +msgstr "" +"A mezÅ‘csoportok új szolgáltatásaival az egyes mezÅ‘k csoportok és szülÅ‘mezÅ‘k között is mozgathatók." + +#: admin/views/settings-info.php:150 fields/page_link.php:36 +msgid "Page Link" +msgstr "Oldalhivatkozás" + +#: admin/views/settings-info.php:151 +msgid "New archives group in page_link field selection" +msgstr "Új 'Archívumok' csoport az oldalhivatkozás mezÅ‘típus választási lehetÅ‘ségeinél." + +#: admin/views/settings-info.php:155 +msgid "Better Options Pages" +msgstr "Jobb beállítás oldalak" + +#: admin/views/settings-info.php:156 +msgid "New functions for options page allow creation of both parent and child menu pages" +msgstr "" +"A beállítás oldalakhoz kapcsolódó új funkciók segítségével szülÅ‘- és gyermekoldalak is létrehozhatók." + +#: admin/views/settings-info.php:165 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Úgy gondoljuk, tetszeni fognak a változások a(z) %s verzióban." + +#: admin/views/settings-tools-export.php:13 +msgid "Export Field Groups to PHP" +msgstr "MezÅ‘csoport exportálása PHP kódba" + +#: admin/views/settings-tools-export.php:17 +#, fuzzy +msgid "" +"The following code can be used to register a local version of the selected field group(s). A local " +"field group can provide many benefits such as faster load times, version control & dynamic fields/" +"settings. Simply copy and paste the following code to your theme's functions.php file or include it " +"within an external file." +msgstr "" +"A következÅ‘ kód segítségével regisztrálható a kiválasztott mezÅ‘csoportok helyi változata. A helyi " +"mezÅ‘csoportok számos elÅ‘nnyel rendelkeznek: rövidebb betöltési idÅ‘, verziókezelés és dinamikus mezÅ‘k/" +"beállítások lehetÅ‘sége. Alkalmazásához egyszerűen másoljuk be a kódot a sablonhoz tartozó functions.php " +"fájlba." + +#: admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "MezÅ‘csoportok kiválasztása" + +#: admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "MezÅ‘csoportok exportálása" + +#: admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export method. Use the download " +"button to export to a .json file which you can then import to another ACF installation. Use the " +"generate button to export to PHP code which you can place in your theme." +msgstr "" +"Válasszuk ki az exportálni kívánt mezÅ‘csoportokat, majd az exportálás módszerét. A letöltés gombbal egy " +"JSON fájl készíthetÅ‘, amelyet egy másik ACF telepítésbe importálhatunk. A kódgenerálás gombbal PHP kód " +"hozható létre, amelyet beilleszthetünk a sablonunkba." + +#: admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "Exportfájl letöltése" + +#: admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Kód generálása" + +#: admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "MezÅ‘csoportok importálása" + +#: admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When you click the import button " +"below, ACF will import the field groups." +msgstr "" +"Válasszuk ki az importálni kívánt Advanced Custom Fields JSON fájlt. A gombra kattintva az ACF " +"bÅ‘vítmény importálja a fájlban definiált mezÅ‘csoportokat." + +#: admin/views/settings-tools.php:77 fields/file.php:46 +msgid "Select File" +msgstr "Fájl kiválasztása" + +#: admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Importálás" + +#: admin/views/update-network.php:8 admin/views/update.php:8 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "" + +#: admin/views/update-network.php:10 +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update and then click “Upgrade " +"Databaseâ€." +msgstr "" + +#: admin/views/update-network.php:19 admin/views/update-network.php:27 +msgid "Site" +msgstr "" + +#: admin/views/update-network.php:47 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "" + +#: admin/views/update-network.php:49 +msgid "Site is up to date" +msgstr "" + +#: admin/views/update-network.php:62 admin/views/update.php:16 +msgid "Database Upgrade complete. Return to network dashboard" +msgstr "" + +#: admin/views/update-network.php:101 admin/views/update-notice.php:35 +msgid "" +"It is strongly recommended that you backup your database before proceeding. Are you sure you wish to " +"run the updater now?" +msgstr "" +"A folytatás elÅ‘tt ajánlatos biztonsági mentést készíteni az adatbázisról. Biztosan futtatni akarjuk a " +"frissítést?" + +#: admin/views/update-network.php:157 +msgid "Upgrade complete" +msgstr "" + +#: admin/views/update-network.php:161 +msgid "Upgrading data to" +msgstr "" + +#: admin/views/update-notice.php:23 +#, fuzzy +msgid "Database Upgrade Required" +msgstr "Adatbázis frissítése szükséges" + +#: admin/views/update-notice.php:25 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Köszönjük a frissítést az %s %s verzióra!" + +#: admin/views/update-notice.php:25 +msgid "" +"Before you start using the new awesome features, please update your database to the newest version." +msgstr "" +"MielÅ‘tt használni kezdenénk az elképesztÅ‘ új szolgáltatásokat, frissítsük az adatbázist a legújabb " +"verzióra." + +#: admin/views/update.php:12 +msgid "Reading upgrade tasks..." +msgstr "Frissítési feladatok beolvasása..." + +#: admin/views/update.php:14 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Adatok frissítése %s verzióra" + +#: admin/views/update.php:16 +msgid "See what's new" +msgstr "Újdonságok áttekintése" + +#: admin/views/update.php:110 +msgid "No updates available." +msgstr "" + +#: api/api-helpers.php:821 +msgid "Thumbnail" +msgstr "Bélyegkép" + +#: api/api-helpers.php:822 +msgid "Medium" +msgstr "Közepes méret" + +#: api/api-helpers.php:823 +msgid "Large" +msgstr "Nagy méret" + +#: api/api-helpers.php:871 +#, fuzzy +msgid "Full Size" +msgstr "Fájlméret" + +#: api/api-helpers.php:1581 +#, fuzzy +msgid "(no title)" +msgstr "Rendezés cím szerint" + +#: api/api-helpers.php:3183 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "" + +#: api/api-helpers.php:3188 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "" + +#: api/api-helpers.php:3204 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "" + +#: api/api-helpers.php:3209 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "" + +#: api/api-helpers.php:3227 +#, php-format +msgid "File size must be at least %s." +msgstr "" + +#: api/api-helpers.php:3232 +#, php-format +msgid "File size must must not exceed %s." +msgstr "" + +#: api/api-helpers.php:3266 +#, php-format +msgid "File type must be %s." +msgstr "" + +#: api/api-template.php:1289 pro/fields/gallery.php:564 +msgid "Update" +msgstr "Frissítés" + +#: api/api-template.php:1290 +msgid "Post updated" +msgstr "Bejegyzés frissítve" + +#: core/field.php:131 +msgid "Basic" +msgstr "AlapvetÅ‘" + +#: core/field.php:132 +msgid "Content" +msgstr "Tartalom" + +#: core/field.php:133 +msgid "Choice" +msgstr "Választás" + +#: core/field.php:134 +msgid "Relational" +msgstr "Relációs" + +#: core/field.php:135 +msgid "jQuery" +msgstr "jQuery" + +#: core/field.php:136 fields/checkbox.php:226 fields/radio.php:231 pro/fields/flexible-content.php:512 +#: pro/fields/repeater.php:392 +msgid "Layout" +msgstr "Tartalom elrendezés" + +#: core/input.php:129 +msgid "Expand Details" +msgstr "Részletek kibontása" + +#: core/input.php:130 +msgid "Collapse Details" +msgstr "Részletek bezárása" + +#: core/input.php:131 +msgid "Validation successful" +msgstr "Érvényesítés sikeres" + +#: core/input.php:132 +msgid "Validation failed" +msgstr "Érvényesítés sikertelen" + +#: core/input.php:133 +msgid "1 field requires attention" +msgstr "" + +#: core/input.php:134 +#, php-format +msgid "%d fields require attention" +msgstr "" + +#: core/input.php:135 +msgid "Restricted" +msgstr "" + +#: core/input.php:533 +#, php-format +msgid "%s value is required" +msgstr "%s kitöltése kötelezÅ‘" + +#: fields/checkbox.php:36 fields/taxonomy.php:752 +msgid "Checkbox" +msgstr "JelölÅ‘doboz (checkbox)" + +#: fields/checkbox.php:144 +msgid "Toggle All" +msgstr "" + +#: fields/checkbox.php:208 fields/radio.php:193 fields/select.php:388 +msgid "Choices" +msgstr "Választási lehetÅ‘ségek" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "Enter each choice on a new line." +msgstr "Minden választási lehetÅ‘séget új sorba kell írni" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "For more control, you may specify both a value and label like this:" +msgstr "A testreszabhatóság érdekében az érték és a felirat is meghatározható a következÅ‘ módon:" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "red : Red" +msgstr "voros : Vörös" + +#: fields/checkbox.php:217 fields/color_picker.php:158 fields/email.php:124 fields/number.php:150 +#: fields/radio.php:222 fields/select.php:397 fields/text.php:148 fields/textarea.php:145 +#: fields/true_false.php:115 fields/url.php:117 fields/wysiwyg.php:345 +msgid "Default Value" +msgstr "Alapértelmezett érték" + +#: fields/checkbox.php:218 fields/select.php:398 +msgid "Enter each default value on a new line" +msgstr "Minden alapértelmezett értéket új sorba kell írni" + +#: fields/checkbox.php:232 fields/radio.php:237 +msgid "Vertical" +msgstr "FüggÅ‘leges" + +#: fields/checkbox.php:233 fields/radio.php:238 +msgid "Horizontal" +msgstr "Vízszintes" + +#: fields/checkbox.php:240 +msgid "Toggle" +msgstr "" + +#: fields/checkbox.php:241 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" + +#: fields/color_picker.php:36 +msgid "Color Picker" +msgstr "Színválasztó" + +#: fields/color_picker.php:94 +msgid "Clear" +msgstr "Törlés" + +#: fields/color_picker.php:95 +msgid "Default" +msgstr "Alapértelmezett" + +#: fields/color_picker.php:96 +msgid "Select Color" +msgstr "Szín kiválasztása" + +#: fields/date_picker.php:36 +msgid "Date Picker" +msgstr "Dátumválasztó" + +#: fields/date_picker.php:72 +msgid "Done" +msgstr "Kész" + +#: fields/date_picker.php:73 +msgid "Today" +msgstr "Ma" + +#: fields/date_picker.php:76 +msgid "Show a different month" +msgstr "Másik hónap megjelenítése" + +#: fields/date_picker.php:149 +msgid "Display Format" +msgstr "Megjelenítési formátum" + +#: fields/date_picker.php:150 +msgid "The format displayed when editing a post" +msgstr "Megjelenítési formátum a bejegyzés szerkesztése során" + +#: fields/date_picker.php:164 +msgid "Return format" +msgstr "Visszaadott formátum" + +#: fields/date_picker.php:165 +msgid "The format returned via template functions" +msgstr "A sablonfunkciók által visszaadott formátum" + +#: fields/date_picker.php:180 +msgid "Week Starts On" +msgstr "Hét kezdÅ‘napja" + +#: fields/email.php:36 +msgid "Email" +msgstr "Email (email)" + +#: fields/email.php:125 fields/number.php:151 fields/radio.php:223 fields/text.php:149 +#: fields/textarea.php:146 fields/url.php:118 fields/wysiwyg.php:346 +msgid "Appears when creating a new post" +msgstr "Új bejegyzés létrehozásánál" + +#: fields/email.php:133 fields/number.php:159 fields/password.php:137 fields/text.php:157 +#: fields/textarea.php:154 fields/url.php:126 +msgid "Placeholder Text" +msgstr "HelyÅ‘rzÅ‘ szöveg" + +#: fields/email.php:134 fields/number.php:160 fields/password.php:138 fields/text.php:158 +#: fields/textarea.php:155 fields/url.php:127 +msgid "Appears within the input" +msgstr "Beviteli mezÅ‘ben jelenik meg" + +#: fields/email.php:142 fields/number.php:168 fields/password.php:146 fields/text.php:166 +msgid "Prepend" +msgstr "ElÅ‘tag" + +#: fields/email.php:143 fields/number.php:169 fields/password.php:147 fields/text.php:167 +msgid "Appears before the input" +msgstr "Beviteli mezÅ‘ elÅ‘tt jelenik meg" + +#: fields/email.php:151 fields/number.php:177 fields/password.php:155 fields/text.php:175 +msgid "Append" +msgstr "Utótag" + +#: fields/email.php:152 fields/number.php:178 fields/password.php:156 fields/text.php:176 +msgid "Appears after the input" +msgstr "Beviteli mezÅ‘ után jelenik meg" + +#: fields/file.php:36 +msgid "File" +msgstr "Fájl" + +#: fields/file.php:47 +msgid "Edit File" +msgstr "Fájl szerkesztése" + +#: fields/file.php:48 +msgid "Update File" +msgstr "Fájl frissítése" + +#: fields/file.php:49 pro/fields/gallery.php:55 +msgid "uploaded to this post" +msgstr "feltöltve ehhez a bejegyzéshez" + +#: fields/file.php:142 +msgid "File Name" +msgstr "Fájlnév" + +#: fields/file.php:146 +msgid "File Size" +msgstr "Fájlméret" + +#: fields/file.php:169 +msgid "No File selected" +msgstr "Nincs fájl kiválasztva" + +#: fields/file.php:169 +msgid "Add File" +msgstr "Fájl hozzáadása" + +#: fields/file.php:214 fields/image.php:195 fields/taxonomy.php:821 +msgid "Return Value" +msgstr "Visszaadott érték" + +#: fields/file.php:215 fields/image.php:196 +msgid "Specify the returned value on front end" +msgstr "Határozzuk meg a mezÅ‘ felhasználói oldalon (front end) megjelenÅ‘ értékét" + +#: fields/file.php:220 +msgid "File Array" +msgstr "Fájl adattömb (array)" + +#: fields/file.php:221 +msgid "File URL" +msgstr "Fájl URL" + +#: fields/file.php:222 +msgid "File ID" +msgstr "Fájl azonosító" + +#: fields/file.php:229 fields/image.php:220 pro/fields/gallery.php:647 +msgid "Library" +msgstr "Médiatár" + +#: fields/file.php:230 fields/image.php:221 pro/fields/gallery.php:648 +msgid "Limit the media library choice" +msgstr "Kiválasztható médiatár elemek korlátozása" + +#: fields/file.php:236 fields/image.php:227 pro/fields/gallery.php:654 +msgid "Uploaded to post" +msgstr "Feltöltve a bejegyzéshez" + +#: fields/file.php:243 fields/image.php:234 pro/fields/gallery.php:661 +msgid "Minimum" +msgstr "" + +#: fields/file.php:244 fields/file.php:255 +msgid "Restrict which files can be uploaded" +msgstr "" + +#: fields/file.php:247 fields/file.php:258 fields/image.php:257 fields/image.php:290 +#: pro/fields/gallery.php:684 pro/fields/gallery.php:717 +msgid "File size" +msgstr "" + +#: fields/file.php:254 fields/image.php:267 pro/fields/gallery.php:694 +msgid "Maximum" +msgstr "" + +#: fields/file.php:265 fields/image.php:300 pro/fields/gallery.php:727 +msgid "Allowed file types" +msgstr "" + +#: fields/file.php:266 fields/image.php:301 pro/fields/gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "" + +#: fields/google-map.php:36 +msgid "Google Map" +msgstr "Google Térkép" + +#: fields/google-map.php:51 +msgid "Locating" +msgstr "Helymeghatározás" + +#: fields/google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "Ez a böngészÅ‘ nem támogatja a helymeghatározást" + +#: fields/google-map.php:135 +msgid "Clear location" +msgstr "Hely törlése" + +#: fields/google-map.php:140 +msgid "Find current location" +msgstr "Jelenlegi hely meghatározása" + +#: fields/google-map.php:141 +msgid "Search for address..." +msgstr "Cím keresése..." + +#: fields/google-map.php:173 fields/google-map.php:184 +msgid "Center" +msgstr "Középpont" + +#: fields/google-map.php:174 fields/google-map.php:185 +msgid "Center the initial map" +msgstr "Térkép kezdÅ‘ középpontja" + +#: fields/google-map.php:198 +msgid "Zoom" +msgstr "Nagyítás" + +#: fields/google-map.php:199 +msgid "Set the initial zoom level" +msgstr "Kezdeti nagyítási szint" + +#: fields/google-map.php:208 fields/image.php:246 fields/image.php:279 fields/oembed.php:262 +#: pro/fields/gallery.php:673 pro/fields/gallery.php:706 +msgid "Height" +msgstr "Magasság" + +#: fields/google-map.php:209 +msgid "Customise the map height" +msgstr "Térkép magassága" + +#: fields/image.php:36 +msgid "Image" +msgstr "Kép" + +#: fields/image.php:51 +msgid "Select Image" +msgstr "Kép kiválasztása" + +#: fields/image.php:52 pro/fields/gallery.php:53 +msgid "Edit Image" +msgstr "Kép szerkesztése" + +#: fields/image.php:53 pro/fields/gallery.php:54 +msgid "Update Image" +msgstr "Kép frissítése" + +#: fields/image.php:54 +msgid "Uploaded to this post" +msgstr "" + +#: fields/image.php:55 +msgid "All images" +msgstr "" + +#: fields/image.php:147 +msgid "No image selected" +msgstr "Kép nincs kiválasztva" + +#: fields/image.php:147 +msgid "Add Image" +msgstr "Kép hozzáadása" + +#: fields/image.php:201 +msgid "Image Array" +msgstr "Kép adattömb (array)" + +#: fields/image.php:202 +msgid "Image URL" +msgstr "Kép URL" + +#: fields/image.php:203 +msgid "Image ID" +msgstr "Kép azonosító" + +#: fields/image.php:210 pro/fields/gallery.php:637 +msgid "Preview Size" +msgstr "ElÅ‘nézeti méret" + +#: fields/image.php:211 pro/fields/gallery.php:638 +msgid "Shown when entering data" +msgstr "Adatok bevitelénél jelenik meg" + +#: fields/image.php:235 fields/image.php:268 pro/fields/gallery.php:662 pro/fields/gallery.php:695 +msgid "Restrict which images can be uploaded" +msgstr "" + +#: fields/image.php:238 fields/image.php:271 fields/oembed.php:251 pro/fields/gallery.php:665 +#: pro/fields/gallery.php:698 +msgid "Width" +msgstr "" + +#: fields/message.php:36 fields/message.php:103 fields/true_false.php:106 +msgid "Message" +msgstr "Üzenet" + +#: fields/message.php:104 +msgid "Please note that all text will first be passed through the wp function " +msgstr "Minden szöveg elsÅ‘ként áthalad a következÅ‘ beépített WP funkción: " + +#: fields/message.php:112 +msgid "Escape HTML" +msgstr "" + +#: fields/message.php:113 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" + +#: fields/number.php:36 +msgid "Number" +msgstr "Szám (number)" + +#: fields/number.php:186 +msgid "Minimum Value" +msgstr "Minimum érték" + +#: fields/number.php:195 +msgid "Maximum Value" +msgstr "Maximum érték" + +#: fields/number.php:204 +msgid "Step Size" +msgstr "Lépésköz" + +#: fields/number.php:242 +msgid "Value must be a number" +msgstr "Az érték nem szám" + +#: fields/number.php:260 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Az értéknek nagyobbnak vagy egyenlÅ‘nek kell lennie, mint %d" + +#: fields/number.php:268 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Az értéknek kisebbnek vagy egyenlÅ‘nek kell lennie, mint %d" + +#: fields/oembed.php:36 +msgid "oEmbed" +msgstr "Beágyazott objektum (oEmbed)" + +#: fields/oembed.php:199 +msgid "Enter URL" +msgstr "URL megadása" + +#: fields/oembed.php:212 +msgid "No embed found for the given URL." +msgstr "Nem található beágyazható elem a megadott URL-en." + +#: fields/oembed.php:248 fields/oembed.php:259 +msgid "Embed Size" +msgstr "Beágyazási méret" + +#: fields/page_link.php:206 +msgid "Archives" +msgstr "Archívumok" + +#: fields/page_link.php:535 fields/post_object.php:401 fields/relationship.php:690 +msgid "Filter by Post Type" +msgstr "Szűrés bejegyzéstípusra" + +#: fields/page_link.php:543 fields/post_object.php:409 fields/relationship.php:698 +msgid "All post types" +msgstr "Minden bejegyzéstípus" + +#: fields/page_link.php:549 fields/post_object.php:415 fields/relationship.php:704 +msgid "Filter by Taxonomy" +msgstr "Szűrés osztályozásra" + +#: fields/page_link.php:557 fields/post_object.php:423 fields/relationship.php:712 +msgid "All taxonomies" +msgstr "" + +#: fields/page_link.php:563 fields/post_object.php:429 fields/select.php:406 fields/taxonomy.php:765 +#: fields/user.php:452 +msgid "Allow Null?" +msgstr "Üres mezÅ‘ engedélyezése" + +#: fields/page_link.php:577 fields/post_object.php:443 fields/select.php:420 fields/user.php:466 +msgid "Select multiple values?" +msgstr "Többszörös választás" + +#: fields/password.php:36 +msgid "Password" +msgstr "Jelszó (password)" + +#: fields/post_object.php:36 fields/post_object.php:462 fields/relationship.php:769 +msgid "Post Object" +msgstr "Bejegyzés objektum (post object)" + +#: fields/post_object.php:457 fields/relationship.php:764 +msgid "Return Format" +msgstr "Visszaadott formátum" + +#: fields/post_object.php:463 fields/relationship.php:770 +msgid "Post ID" +msgstr "Bejegyzés azonosító" + +#: fields/radio.php:36 +msgid "Radio Button" +msgstr "Választógomb (radio button)" + +#: fields/radio.php:202 +msgid "Other" +msgstr "Egyéb" + +#: fields/radio.php:206 +msgid "Add 'other' choice to allow for custom values" +msgstr "'Egyéb' választási lehetÅ‘ség hozzáadása egyéni érték megadásához" + +#: fields/radio.php:212 +msgid "Save Other" +msgstr "Sorrend mentése" + +#: fields/radio.php:216 +msgid "Save 'other' values to the field's choices" +msgstr "Egyéni értékek mentése a mezÅ‘ választási lehetÅ‘ségeihez" + +#: fields/relationship.php:36 +msgid "Relationship" +msgstr "Kapcsolat (relationship)" + +#: fields/relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "" + +#: fields/relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "Elértük a mezÅ‘ maximális értékét (legfeljebb {max})" + +#: fields/relationship.php:50 +msgid "Loading" +msgstr "Betöltés" + +#: fields/relationship.php:51 +msgid "No matches found" +msgstr "Nincs egyezés" + +#: fields/relationship.php:571 +msgid "Search..." +msgstr "Keresés..." + +#: fields/relationship.php:580 +msgid "Select post type" +msgstr "Bejegyzéstípus kiválasztása" + +#: fields/relationship.php:593 +msgid "Select taxonomy" +msgstr "Osztályozás kiválasztása" + +#: fields/relationship.php:723 +msgid "Search" +msgstr "Keresés" + +#: fields/relationship.php:725 fields/taxonomy.php:36 fields/taxonomy.php:735 +msgid "Taxonomy" +msgstr "Osztályozás (taxonomy)" + +#: fields/relationship.php:732 +msgid "Elements" +msgstr "Elemek" + +#: fields/relationship.php:733 +msgid "Selected elements will be displayed in each result" +msgstr "A kiválasztott elemek jelennek meg az eredményekben" + +#: fields/relationship.php:744 +msgid "Minimum posts" +msgstr "" + +#: fields/relationship.php:753 +msgid "Maximum posts" +msgstr "Bejegyzések maximális száma" + +#: fields/select.php:36 fields/select.php:174 fields/taxonomy.php:757 +msgid "Select" +msgstr "Választólista (select)" + +#: fields/select.php:434 +msgid "Stylised UI" +msgstr "Stílusformázott kezelÅ‘felület" + +#: fields/select.php:448 +msgid "Use AJAX to lazy load choices?" +msgstr "AJAX használata a lehetÅ‘ségek halasztott betöltéséhez" + +#: fields/tab.php:36 +msgid "Tab" +msgstr "Lap (tab)" + +#: fields/tab.php:128 +msgid "Warning" +msgstr "Figyelmeztetés" + +#: fields/tab.php:133 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater field or flexible content " +"field layout" +msgstr "" +"Táblázat stílusú ismétlÅ‘ csoportmezÅ‘höz vagy rugalmas tartalomhoz rendelve a lapok helytelenül jelennek " +"meg." + +#: fields/tab.php:146 +msgid "Use \"Tab Fields\" to better organize your edit screen by grouping fields together." +msgstr "Használjunk lapokat a szerkesztÅ‘képernyÅ‘k tartalmának rendezéséhez és a mezÅ‘k csoportosításához." + +#: fields/tab.php:148 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is defined) will be grouped " +"together using this field's label as the tab heading." +msgstr "" +"A lap típusú mezÅ‘t követÅ‘ összes mezÅ‘ egy csoportba kerül (egy újabb lap beillesztéséig), a lap címsora " +"pedig a mezÅ‘ felirata lesz." + +#: fields/tab.php:155 +msgid "Placement" +msgstr "" + +#: fields/tab.php:167 +msgid "End-point" +msgstr "" + +#: fields/tab.php:168 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "" + +#: fields/taxonomy.php:565 +#, php-format +msgid "Add new %s " +msgstr "" + +#: fields/taxonomy.php:704 +msgid "None" +msgstr "Nincs" + +#: fields/taxonomy.php:736 +msgid "Select the taxonomy to be displayed" +msgstr "" + +#: fields/taxonomy.php:745 +msgid "Appearance" +msgstr "" + +#: fields/taxonomy.php:746 +msgid "Select the appearance of this field" +msgstr "" + +#: fields/taxonomy.php:751 +msgid "Multiple Values" +msgstr "Több érték" + +#: fields/taxonomy.php:753 +msgid "Multi Select" +msgstr "Többszörös választó (multi select)" + +#: fields/taxonomy.php:755 +msgid "Single Value" +msgstr "Egyetlen érték" + +#: fields/taxonomy.php:756 +msgid "Radio Buttons" +msgstr "Választógombok (radio buttons)" + +#: fields/taxonomy.php:779 +msgid "Create Terms" +msgstr "" + +#: fields/taxonomy.php:780 +msgid "Allow new terms to be created whilst editing" +msgstr "" + +#: fields/taxonomy.php:793 +msgid "Save Terms" +msgstr "" + +#: fields/taxonomy.php:794 +msgid "Connect selected terms to the post" +msgstr "" + +#: fields/taxonomy.php:807 +msgid "Load Terms" +msgstr "" + +#: fields/taxonomy.php:808 +msgid "Load value from posts terms" +msgstr "" + +#: fields/taxonomy.php:826 +msgid "Term Object" +msgstr "Kifejezés objektum" + +#: fields/taxonomy.php:827 +msgid "Term ID" +msgstr "Kifejezés azonosító" + +#: fields/taxonomy.php:886 +#, php-format +msgid "User unable to add new %s" +msgstr "" + +#: fields/taxonomy.php:899 +#, php-format +msgid "%s already exists" +msgstr "" + +#: fields/taxonomy.php:940 +#, php-format +msgid "%s added" +msgstr "" + +#: fields/taxonomy.php:985 +msgid "Add" +msgstr "" + +#: fields/text.php:36 +msgid "Text" +msgstr "Szöveg (text)" + +#: fields/text.php:184 fields/textarea.php:163 +msgid "Character Limit" +msgstr "Karakterkorlát" + +#: fields/text.php:185 fields/textarea.php:164 +msgid "Leave blank for no limit" +msgstr "MellÅ‘zéséhez hagyjuk üresen " + +#: fields/textarea.php:36 +msgid "Text Area" +msgstr "Szövegterület (text area)" + +#: fields/textarea.php:172 +msgid "Rows" +msgstr "Sorok" + +#: fields/textarea.php:173 +msgid "Sets the textarea height" +msgstr "Szövegterület magassága (sorok)" + +#: fields/textarea.php:182 +msgid "New Lines" +msgstr "Új sorok" + +#: fields/textarea.php:183 +msgid "Controls how new lines are rendered" +msgstr "Az új sorok megjelenítésének szabályozása" + +#: fields/textarea.php:187 +msgid "Automatically add paragraphs" +msgstr "Bekezdések automatikus hozzáadása" + +#: fields/textarea.php:188 +msgid "Automatically add <br>" +msgstr "<br> címke automatikus hozzáadása" + +#: fields/textarea.php:189 +#, fuzzy +msgid "No Formatting" +msgstr "Formázás nélkül" + +#: fields/true_false.php:36 +msgid "True / False" +msgstr "Igaz / Hamis (true/false)" + +#: fields/true_false.php:107 +msgid "eg. Show extra content" +msgstr "pl. Extra tartalom megjelenítése" + +#: fields/url.php:36 +msgid "Url" +msgstr "" + +#: fields/url.php:160 +#, fuzzy +msgid "Value must be a valid URL" +msgstr "Az érték nem szám" + +#: fields/user.php:437 +msgid "Filter by role" +msgstr "Szűrés szerepkörre" + +#: fields/user.php:445 +msgid "All user roles" +msgstr "Minden felhasználói szerepkör" + +#: fields/wysiwyg.php:37 +msgid "Wysiwyg Editor" +msgstr "Wysiwyg szerkesztÅ‘" + +#: fields/wysiwyg.php:297 +msgid "Visual" +msgstr "" + +#: fields/wysiwyg.php:298 +#, fuzzy +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Szöveg (text)" + +#: fields/wysiwyg.php:354 +msgid "Tabs" +msgstr "" + +#: fields/wysiwyg.php:359 +msgid "Visual & Text" +msgstr "" + +#: fields/wysiwyg.php:360 +msgid "Visual Only" +msgstr "" + +#: fields/wysiwyg.php:361 +#, fuzzy +msgid "Text Only" +msgstr "Szöveg (text)" + +#: fields/wysiwyg.php:368 +msgid "Toolbar" +msgstr "Eszközsáv" + +#: fields/wysiwyg.php:378 +msgid "Show Media Upload Buttons?" +msgstr "'Média hozzáadása' gomb megjelenítése" + +#: forms/post.php:297 pro/admin/options-page.php:373 +msgid "Edit field group" +msgstr "" + +#: pro/acf-pro.php:24 +#, fuzzy +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/acf-pro.php:175 +msgid "Flexible Content requires at least 1 layout" +msgstr "Rugalmas tartalomnál legalább egy elrendezést definiálni kell." + +#: pro/admin/options-page.php:48 +msgid "Options Page" +msgstr "Beállítások oldal" + +#: pro/admin/options-page.php:83 +msgid "No options pages exist" +msgstr "Nincsenek beállítás oldalak" + +#: pro/admin/options-page.php:298 +msgid "Options Updated" +msgstr "Beállítások elmentve" + +#: pro/admin/options-page.php:304 +msgid "No Custom Field Groups found for this options page. Create a Custom Field Group" +msgstr "Nincsenek mezÅ‘csoportok ehhez a beállítás oldalhoz. MezÅ‘csoport hozzáadása" + +#: pro/admin/settings-updates.php:137 +msgid "Error. Could not connect to update server" +msgstr "Hiba. Nem hozható létre kapcsolat a frissítési szerverrel." + +#: pro/admin/settings-updates.php:267 pro/admin/settings-updates.php:338 +msgid "Connection Error. Sorry, please try again" +msgstr "Kapcsolódási hiba. Elnézést, próbáljuk meg újra." + +#: pro/admin/views/options-page.php:48 +msgid "Publish" +msgstr "Közzététel" + +#: pro/admin/views/options-page.php:54 +msgid "Save Options" +msgstr "Beállítások mentése" + +#: pro/admin/views/settings-updates.php:11 +msgid "Deactivate License" +msgstr "Licenc deaktiválása" + +#: pro/admin/views/settings-updates.php:11 +msgid "Activate License" +msgstr "Licenc aktiválása" + +#: pro/admin/views/settings-updates.php:21 +msgid "License" +msgstr "Licenc" + +#: pro/admin/views/settings-updates.php:24 +msgid "" +"To unlock updates, please enter your license key below. If you don't have a licence key, please see" +msgstr "" +"A frissítések engedélyezéséhez adjuk meg a licenckulcsot az alábbi beviteli mezÅ‘ben. Ha még nem " +"rendelkezünk licenckulccsal, tájékozódáshoz:" + +#: pro/admin/views/settings-updates.php:24 +msgid "details & pricing" +msgstr "részletek és árak" + +#: pro/admin/views/settings-updates.php:33 +msgid "License Key" +msgstr "Licenckulcs" + +#: pro/admin/views/settings-updates.php:65 +msgid "Update Information" +msgstr "Frissítési információ" + +#: pro/admin/views/settings-updates.php:72 +msgid "Current Version" +msgstr "Jelenlegi verzió" + +#: pro/admin/views/settings-updates.php:80 +msgid "Latest Version" +msgstr "Legújabb verzió" + +#: pro/admin/views/settings-updates.php:88 +msgid "Update Available" +msgstr "Frissítés elérhetÅ‘" + +#: pro/admin/views/settings-updates.php:96 +msgid "Update Plugin" +msgstr "BÅ‘vítmény frissítése" + +#: pro/admin/views/settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "Adjuk meg a licenckulcsot a frissítések engedélyezéséhez" + +#: pro/admin/views/settings-updates.php:104 +msgid "Check Again" +msgstr "Ismételt ellenÅ‘rzés" + +#: pro/admin/views/settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "Frissítési figyelmeztetés" + +#: pro/api/api-options-page.php:22 pro/api/api-options-page.php:23 +msgid "Options" +msgstr "Beállítások" + +#: pro/core/updates.php:186 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't " +"have a licence key, please see details & pricing" +msgstr "" +"A frissítések engedélyezéséhez adjuk meg a licenckulcsot a Frissítések oldalon. Ha " +"még nem rendelkezünk licenckulcsal, tekintsük át a licencek részleteit és árait." + +#: pro/fields/flexible-content.php:36 +msgid "Flexible Content" +msgstr "Rugalmas tartalom (flexible content)" + +#: pro/fields/flexible-content.php:42 pro/fields/repeater.php:43 +msgid "Add Row" +msgstr "Sor hozzáadása" + +# Revision suggested +#: pro/fields/flexible-content.php:45 +msgid "layout" +msgstr "elrendezés" + +# Revision suggested +#: pro/fields/flexible-content.php:46 +msgid "layouts" +msgstr "elrendezés" + +# Revision suggested +#: pro/fields/flexible-content.php:47 +msgid "remove {layout}?" +msgstr "biztosan eltávolítsuk?" + +# Revision suggested +#: pro/fields/flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "Ennél a mezÅ‘nél legalább {min} {identifier} hozzáadása kötelezÅ‘." + +# Revision suggested +#: pro/fields/flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "Ennél a mezÅ‘nél legfeljebb {max} {identifier} adható hozzá." + +# Revision suggested +#: pro/fields/flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Ennél a mezÅ‘nél legalább {min} {label} {identifier} hozzáadása szükséges" + +# Revision suggested +#: pro/fields/flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "{label} elrendezésbÅ‘l több nem adható hozzá (maximum {max})" + +# Revision suggested +#: pro/fields/flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} adható még hozzá (maximum {max})" + +# Revision suggested +#: pro/fields/flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} hozzáadása szükséges (minimum {min})" + +# Revision suggested +#: pro/fields/flexible-content.php:211 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Kattintsunk lent a \"%s\" gombra egyéni tartalom létrehozásához." + +#: pro/fields/flexible-content.php:369 +msgid "Add layout" +msgstr "Elrendezés hozzáadása" + +#: pro/fields/flexible-content.php:372 +msgid "Remove layout" +msgstr "Elrendezés eltávolítása" + +#: pro/fields/flexible-content.php:514 +msgid "Reorder Layout" +msgstr "Elrendezés sorrendjének módosítása" + +#: pro/fields/flexible-content.php:514 +msgid "Reorder" +msgstr "Ãtrendezés" + +#: pro/fields/flexible-content.php:515 +msgid "Delete Layout" +msgstr "Elrendezés törlése" + +#: pro/fields/flexible-content.php:516 +msgid "Duplicate Layout" +msgstr "Elrendezés duplikálása" + +#: pro/fields/flexible-content.php:517 +msgid "Add New Layout" +msgstr "Új elrendezés hozzáadása" + +#: pro/fields/flexible-content.php:561 +msgid "Display" +msgstr "Megjelenítés" + +#: pro/fields/flexible-content.php:572 pro/fields/repeater.php:399 +msgid "Table" +msgstr "Táblázat" + +#: pro/fields/flexible-content.php:573 pro/fields/repeater.php:400 +msgid "Block" +msgstr "Blokk" + +#: pro/fields/flexible-content.php:574 pro/fields/repeater.php:401 +#, fuzzy +msgid "Row" +msgstr "Sorok" + +#: pro/fields/flexible-content.php:589 +msgid "Min" +msgstr "Minimum" + +#: pro/fields/flexible-content.php:602 +msgid "Max" +msgstr "Maximum" + +#: pro/fields/flexible-content.php:630 pro/fields/repeater.php:408 +msgid "Button Label" +msgstr "Gomb felirata" + +#: pro/fields/flexible-content.php:639 +msgid "Minimum Layouts" +msgstr "Tartalmak minimális száma" + +#: pro/fields/flexible-content.php:648 +msgid "Maximum Layouts" +msgstr "Tartalmak maximális száma" + +#: pro/fields/gallery.php:36 +msgid "Gallery" +msgstr "Galéria" + +#: pro/fields/gallery.php:52 +msgid "Add Image to Gallery" +msgstr "Kép hozzáadása a galériához" + +#: pro/fields/gallery.php:56 +msgid "Maximum selection reached" +msgstr "Elértük a kiválasztható elemek maximális számát" + +#: pro/fields/gallery.php:335 +msgid "Length" +msgstr "" + +#: pro/fields/gallery.php:355 +msgid "Remove" +msgstr "" + +#: pro/fields/gallery.php:535 +msgid "Add to gallery" +msgstr "Hozzáadás galériához" + +#: pro/fields/gallery.php:539 +msgid "Bulk actions" +msgstr "Csoportművelet" + +#: pro/fields/gallery.php:540 +msgid "Sort by date uploaded" +msgstr "Rendezés feltöltési dátum szerint" + +#: pro/fields/gallery.php:541 +msgid "Sort by date modified" +msgstr "Rendezés módosítási dátum szerint" + +#: pro/fields/gallery.php:542 +msgid "Sort by title" +msgstr "Rendezés cím szerint" + +#: pro/fields/gallery.php:543 +msgid "Reverse current order" +msgstr "Fordított sorrend" + +#: pro/fields/gallery.php:561 +msgid "Close" +msgstr "Bezárás" + +#: pro/fields/gallery.php:619 +msgid "Minimum Selection" +msgstr "Minimális választás" + +#: pro/fields/gallery.php:628 +msgid "Maximum Selection" +msgstr "Maximális választás" + +#: pro/fields/gallery.php:809 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s mezÅ‘ esetében legalább %s értéket ki kell választani" +msgstr[1] "%s mezÅ‘ esetében legalább %s értéket ki kell választani" + +#: pro/fields/repeater.php:36 +msgid "Repeater" +msgstr "IsmétlÅ‘ csoportmezÅ‘ (repeater)" + +#: pro/fields/repeater.php:46 +msgid "Minimum rows reached ({min} rows)" +msgstr "Nem érjük el a sorok minimális számát (legalább {min} sort hozzá kell adni)" + +#: pro/fields/repeater.php:47 +msgid "Maximum rows reached ({max} rows)" +msgstr "Elértük a sorok maximális számát (legfeljebb {max} sor adható hozzá)" + +#: pro/fields/repeater.php:259 +msgid "Drag to reorder" +msgstr "Ãtrendezéshez húzzuk a megfelelÅ‘ helyre" + +#: pro/fields/repeater.php:301 +msgid "Add row" +msgstr "Sor hozzáadása" + +#: pro/fields/repeater.php:302 +msgid "Remove row" +msgstr "Sor eltávolítása" + +#: pro/fields/repeater.php:350 +msgid "Sub Fields" +msgstr "AlmezÅ‘k" + +#: pro/fields/repeater.php:372 +msgid "Minimum Rows" +msgstr "Sorok minimális száma" + +#: pro/fields/repeater.php:382 +msgid "Maximum Rows" +msgstr "Sorok maximális száma" + +#. Plugin Name of the plugin/theme +msgid "Advanced Custom Fields Pro" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://www.advancedcustomfields.com/" +msgstr "" + +#. Description of the plugin/theme +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" + +#. Author of the plugin/theme +msgid "elliot condon" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "" + +#, fuzzy +#~ msgid "Field Groups" +#~ msgstr "MezÅ‘csoportok" + +#~ msgid "Custom field updated." +#~ msgstr "Egyéni mezÅ‘ frissítve." + +#~ msgid "Custom field deleted." +#~ msgstr "Egyéni mezÅ‘ törölve." + +#~ msgid "Hide / Show All" +#~ msgstr "Minden elrejtése / megjelenítése" + +#~ msgid "Show Field Keys" +#~ msgstr "MezÅ‘kulcsok megjelenítése" + +#~ msgid "Pending Review" +#~ msgstr "FüggÅ‘ben lévÅ‘" + +#~ msgid "Draft" +#~ msgstr "Vázlat" + +#~ msgid "Future" +#~ msgstr "Ütemezve" + +#~ msgid "Private" +#~ msgstr "Magánjellegű" + +#~ msgid "Revision" +#~ msgstr "Változat" + +#~ msgid "Trash" +#~ msgstr "Lomtár" + +#~ msgid "Top Level Page (parent of 0)" +#~ msgstr "FelsÅ‘ szintű oldal (0 szülÅ‘je)" + +#~ msgid "Field group duplicated! Edit the new \"%s\" field group." +#~ msgstr "MezÅ‘csoport duplikálva. Az új \"%s\" mezÅ‘csoport szerkesztése." + +#~ msgid "Import / Export" +#~ msgstr "Importálás / Exportálás" + +#~ msgid "Import/Export" +#~ msgstr "Import/export" + +#~ msgid "Logged in User Type" +#~ msgstr "Bejelentkezett felhasználó szerepköre" + +#~ msgid "Field groups are created in order
                          from lowest to highest" +#~ msgstr "Az egyes mezÅ‘csoportok az alacsonyabbtól a magasabb érték felé haladva jönnek létre" + +#~ msgid "Select items to hide them from the edit screen" +#~ msgstr "Válasszuk ki a szerkesztÅ‘képernyÅ‘n elrejteni kívánt elemeket" + +#~ msgid "" +#~ "If multiple field groups appear on an edit screen, the first field group's options will be used. " +#~ "(the one with the lowest order number)" +#~ msgstr "" +#~ "Ha a szerkesztÅ‘képernyÅ‘n több mezÅ‘csoport is megjelenik, úgy a legelsÅ‘ csoport (legalacsonyabb " +#~ "sorszám) beállításai érvényesülnek." + +#~ msgid "We're changing the way premium functionality is delivered in an exiting way!" +#~ msgstr "A prémium szolgáltatások immár egy izgalmas, új módon érhetÅ‘k el! " + +#~ msgid "ACF PRO Required" +#~ msgstr "ACF PRO változat szükséges" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website makes use of premium add-ons " +#~ "(%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "Egy figyelmet igénylÅ‘ problémát észleltünk: A honlap olyan prémium kiegészítÅ‘ket használ (%s), " +#~ "amelyek már nem kompatibilisek az új ACF verzióval." + +#~ msgid "Don't panic, you can simply roll back the plugin and continue using ACF as you know it!" +#~ msgstr "Aggodalomra nincs ok, könnyedén visszatérhetünk a bÅ‘vítmény korábbi, már ismert verziójához!" + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "Visszatérés az ACF %s verzióhoz" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "Ismerjük meg, miért van szükség az ACF PRO változatra a honlapon" + +#~ msgid "Update Database" +#~ msgstr "Adatbázis frissítése" + +#~ msgid "Data Upgrade" +#~ msgstr "Adatfrissítés" + +#~ msgid "Data upgraded successfully." +#~ msgstr "Adatok sikeresen frissítve." + +#~ msgid "Data is at the latest version." +#~ msgstr "Az adatok megfelelnek a legújabb verziónak." + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "1 kötelezÅ‘ mezÅ‘ nincs kitöltve" +#~ msgstr[1] "%s kötelezÅ‘ mezÅ‘ nincs kitöltve" + +#~ msgid "No taxonomy filter" +#~ msgstr "Nincs szűrés osztályozásra" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "Kifejezések a bejegyzéshez kapcsolva (betöltés és mentés)" + +#~ msgid "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "" +#~ "Az érték betöltése a bejegyzéshez rendelt kifejezések alapján és a kifejezések frissítése mentéskor" + +#~ msgid "Column Width" +#~ msgstr "Oszlopszélesség" + +#~ msgid "Attachment Details" +#~ msgstr "Csatolmány részletei" + +#, fuzzy +#~ msgid "title_is_required" +#~ msgstr "A mezÅ‘csoport címét kötelezÅ‘ megadni" + +#, fuzzy +#~ msgid "move_field" +#~ msgstr "MezÅ‘ áthelyezése" + +#, fuzzy +#~ msgid "image" +#~ msgstr "Kép" + +#, fuzzy +#~ msgid "expand_details" +#~ msgstr "Részletek kibontása" + +#, fuzzy +#~ msgid "collapse_details" +#~ msgstr "Részletek bezárása" + +#, fuzzy +#~ msgid "relationship" +#~ msgstr "Kapcsolat (relationship)" + +#, fuzzy +#~ msgid "flexible_content" +#~ msgstr "Rugalmas tartalom (flexible content)" + +#, fuzzy +#~ msgid "repeater" +#~ msgstr "IsmétlÅ‘ csoportmezÅ‘ (repeater)" + +#, fuzzy +#~ msgid "gallery" +#~ msgstr "Galéria" + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "Érvényesítés sikertelen. Az alábbi mezÅ‘(k) kitöltése kötelezÅ‘." + +#~ msgid "Apply" +#~ msgstr "Alkalmaz" + +#, fuzzy +#~ msgid "Run the updater" +#~ msgstr "IsmétlÅ‘ csoportmezÅ‘ (repeater)" + +#, fuzzy +#~ msgid "Full" +#~ msgstr "Teljes méret" + +#, fuzzy +#~ msgid "Size" +#~ msgstr "Teljes méret" + +#, fuzzy +#~ msgid "Formatting" +#~ msgstr "Formázás nélkül" + +#, fuzzy +#~ msgid "Effects value on front end" +#~ msgstr "Határozzuk meg a mezÅ‘ felhasználói oldalon (front end) megjelenÅ‘ értékét" + +#, fuzzy +#~ msgid "No images selected" +#~ msgstr "Kép nincs kiválasztva" + +#, fuzzy +#~ msgid "1 image selected" +#~ msgstr "Kép nincs kiválasztva" + +#, fuzzy +#~ msgid "%d images selected" +#~ msgstr "Kép nincs kiválasztva" + +#~ msgid "" +#~ "Fully customise WordPress edit screens with powerful fields. Boasting a professional interface and a " +#~ "powerful API, it’s a must have for any web developer working with WordPress. Field types include: " +#~ "Wysiwyg, text, textarea, image, file, select, checkbox, page link, post object, date picker, color " +#~ "picker, repeater, flexible content, gallery and more!" +#~ msgstr "" +#~ "A WordPress teljes körű testreszabása egyéni mezÅ‘k segítségével. A professzionális kezelÅ‘felületet " +#~ "és hatékony API-t kínáló bÅ‘vítmény minden WordPress-fejlesztÅ‘ számára nélkülözhetetlen eszköz. " +#~ "ElérhetÅ‘ mezÅ‘típusok: Wysiwyg, szöveg, szövegterület, kép, fájl, választó, jelölÅ‘doboz, " +#~ "oldalhivatkozás, bejegyzés objektum, dátumválasztó, színválasztó, ismétlÅ‘ csoportmezÅ‘, rugalmas " +#~ "tartalom, galéria és még több más." diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-id_ID.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-id_ID.mo new file mode 100755 index 0000000000000000000000000000000000000000..51b45e796f0b5007fd06a1bef10a49bd0bdc4333 GIT binary patch literal 42502 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\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;" +"esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: Elliot Condon \n" +"Language: id_ID\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:266 admin/admin.php:61 +msgid "Field Groups" +msgstr "Grup Bidang" + +#: acf.php:267 +msgid "Field Group" +msgstr "Grup Bidang" + +#: acf.php:268 acf.php:300 admin/admin.php:62 pro/fields/flexible-content.php:505 +msgid "Add New" +msgstr "Tambah Baru" + +#: acf.php:269 +msgid "Add New Field Group" +msgstr "Tambah Grup Bidang Baru" + +#: acf.php:270 +msgid "Edit Field Group" +msgstr "Edit Grup Bidang" + +#: acf.php:271 +msgid "New Field Group" +msgstr "Grup Bidang Baru" + +#: acf.php:272 +msgid "View Field Group" +msgstr "Lihat Grup Bidang" + +#: acf.php:273 +msgid "Search Field Groups" +msgstr "Cari Grup Bidang" + +#: acf.php:274 +msgid "No Field Groups found" +msgstr "Tidak Ada Grup Bidang Ditemukan" + +#: acf.php:275 +msgid "No Field Groups found in Trash" +msgstr "Tidak Ditemukan Grup Bidang di Tong Sampah" + +#: acf.php:298 admin/field-group.php:182 admin/field-group.php:213 admin/field-groups.php:528 +msgid "Fields" +msgstr "Bidang" + +#: acf.php:299 +msgid "Field" +msgstr "Bidang" + +#: acf.php:301 +msgid "Add New Field" +msgstr "Tambah bidang baru" + +#: acf.php:302 +msgid "Edit Field" +msgstr "Edit Bidang" + +#: acf.php:303 admin/views/field-group-fields.php:18 admin/views/settings-info.php:111 +msgid "New Field" +msgstr "Bidang Baru" + +#: acf.php:304 +msgid "View Field" +msgstr "Lihat Bidang" + +#: acf.php:305 +msgid "Search Fields" +msgstr "Bidang Pencarian" + +#: acf.php:306 +msgid "No Fields found" +msgstr "Tidak ada bidang yang ditemukan" + +#: acf.php:307 +msgid "No Fields found in Trash" +msgstr "Tidak ada bidang yang ditemukan di tempat sampah" + +#: acf.php:346 admin/field-group.php:283 admin/field-groups.php:586 admin/views/field-group-options.php:13 +msgid "Disabled" +msgstr "Dimatikan" + +#: acf.php:351 +#, php-format +msgid "Disabled (%s)" +msgid_plural "Disabled (%s)" +msgstr[0] "Dimatikan (%s)" + +#: admin/admin.php:57 admin/views/field-group-options.php:115 +msgid "Custom Fields" +msgstr "Bidang Kustom" + +#: admin/field-group.php:68 admin/field-group.php:69 admin/field-group.php:71 +msgid "Field group updated." +msgstr "Grup bidang diperbarui." + +#: admin/field-group.php:70 +msgid "Field group deleted." +msgstr "Grup bidang dihapus." + +#: admin/field-group.php:73 +msgid "Field group published." +msgstr "Grup bidang diterbitkan." + +#: admin/field-group.php:74 +msgid "Field group saved." +msgstr "Grup bidang disimpan." + +#: admin/field-group.php:75 +msgid "Field group submitted." +msgstr "Grup bidang dikirim." + +#: admin/field-group.php:76 +msgid "Field group scheduled for." +msgstr "Grup bidang dijadwalkan untuk." + +#: admin/field-group.php:77 +msgid "Field group draft updated." +msgstr "Draft grup bidang diperbarui." + +#: admin/field-group.php:176 +msgid "Move to trash. Are you sure?" +msgstr "Pindahkan ke tong sampah. Yakin?" + +#: admin/field-group.php:177 +msgid "checked" +msgstr "diperiksa" + +#: admin/field-group.php:178 +msgid "No toggle fields available" +msgstr "Tidak ada bidang toggle yang tersedia" + +#: admin/field-group.php:179 +msgid "Field group title is required" +msgstr "Judul grup bidang diperlukan" + +#: admin/field-group.php:180 api/api-field-group.php:581 +msgid "copy" +msgstr "salin" + +#: admin/field-group.php:181 admin/views/field-group-field-conditional-logic.php:62 +#: admin/views/field-group-field-conditional-logic.php:162 admin/views/field-group-locations.php:59 +#: admin/views/field-group-locations.php:135 api/api-helpers.php:3401 +msgid "or" +msgstr "atau" + +#: admin/field-group.php:183 +msgid "Parent fields" +msgstr "Bidang parent" + +#: admin/field-group.php:184 +msgid "Sibling fields" +msgstr "Bidang sibling" + +#: admin/field-group.php:185 +msgid "Move Custom Field" +msgstr "Pindahkan Bidang Kustom" + +#: admin/field-group.php:186 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Bidang ini tidak dapat dipindahkan sampai perubahan sudah disimpan" + +#: admin/field-group.php:187 +msgid "Null" +msgstr "Nol" + +#: admin/field-group.php:188 core/input.php:128 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "Perubahan yang Anda buat akan hilang jika Anda menavigasi keluar dari laman ini" + +#: admin/field-group.php:189 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "String \"field_\" tidak dapat digunakan pada awal nama field" + +#: admin/field-group.php:214 +msgid "Location" +msgstr "Lokasi" + +#: admin/field-group.php:215 +msgid "Settings" +msgstr "Pengaturan" + +#: admin/field-group.php:253 +msgid "Field Keys" +msgstr "Kunci Bidang" + +#: admin/field-group.php:283 admin/views/field-group-options.php:12 +msgid "Active" +msgstr "Aktif" + +#: admin/field-group.php:752 +msgid "Front Page" +msgstr "Laman Depan" + +#: admin/field-group.php:753 +msgid "Posts Page" +msgstr "Laman Post" + +#: admin/field-group.php:754 +msgid "Top Level Page (no parent)" +msgstr "Laman Tingkat Atas (tanpa parent)" + +#: admin/field-group.php:755 +msgid "Parent Page (has children)" +msgstr "Laman Parent (memiliki anak)" + +#: admin/field-group.php:756 +msgid "Child Page (has parent)" +msgstr "Laman Anak (memiliki parent)" + +#: admin/field-group.php:772 +msgid "Default Template" +msgstr "Template Default" + +#: admin/field-group.php:794 +msgid "Logged in" +msgstr "Log masuk" + +#: admin/field-group.php:795 +msgid "Viewing front end" +msgstr "Melihat front end" + +#: admin/field-group.php:796 +msgid "Viewing back end" +msgstr "Melihat back end" + +#: admin/field-group.php:815 +msgid "Super Admin" +msgstr "Super Admin" + +#: admin/field-group.php:826 admin/field-group.php:834 admin/field-group.php:848 admin/field-group.php:855 +#: admin/field-group.php:870 admin/field-group.php:880 fields/file.php:235 fields/image.php:226 +#: pro/fields/gallery.php:661 +msgid "All" +msgstr "Semua" + +#: admin/field-group.php:835 +msgid "Add / Edit" +msgstr "Tambah / Edit" + +#: admin/field-group.php:836 +msgid "Register" +msgstr "Daftar" + +#: admin/field-group.php:1067 +msgid "Move Complete." +msgstr "Pindah yang Lengkap." + +#: admin/field-group.php:1068 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Bidang %s sekarang dapat ditemukan di bidang grup %s" + +#: admin/field-group.php:1070 +msgid "Close Window" +msgstr "Tutup window" + +#: admin/field-group.php:1105 +msgid "Please select the destination for this field" +msgstr "Silakan pilih tujuan untuk bidang ini" + +#: admin/field-group.php:1112 +msgid "Move Field" +msgstr "Pindahkan Bidang" + +#: admin/field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Aktif (%s)" + +#: admin/field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Grup bidang diduplikat. %s" + +#: admin/field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Grup bidang %s diduplikat" + +#: admin/field-groups.php:228 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Grup bidang disinkronkan. %s" + +#: admin/field-groups.php:232 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "bidang grup %s disinkronkan." + +#: admin/field-groups.php:412 admin/field-groups.php:576 +msgid "Sync available" +msgstr "Sinkronisasi tersedia" + +#: admin/field-groups.php:525 +msgid "Title" +msgstr "Judul" + +#: admin/field-groups.php:526 admin/views/field-group-options.php:93 admin/views/update-network.php:20 +#: admin/views/update-network.php:28 +msgid "Description" +msgstr "Deskripsi" + +#: admin/field-groups.php:527 admin/views/field-group-options.php:5 +msgid "Status" +msgstr "Status" + +#: admin/field-groups.php:624 admin/settings-info.php:76 pro/admin/views/settings-updates.php:111 +msgid "Changelog" +msgstr "Changelog" + +#: admin/field-groups.php:625 +msgid "See what's new in" +msgstr "Lihat apa yang baru di" + +#: admin/field-groups.php:625 +msgid "version" +msgstr "versi" + +#: admin/field-groups.php:627 +msgid "Resources" +msgstr "Sumber" + +#: admin/field-groups.php:629 +msgid "Getting Started" +msgstr "Perkenalan" + +#: admin/field-groups.php:630 pro/admin/settings-updates.php:73 pro/admin/views/settings-updates.php:17 +msgid "Updates" +msgstr "Mutakhir" + +#: admin/field-groups.php:631 +msgid "Field Types" +msgstr "Jenis Field" + +#: admin/field-groups.php:632 +msgid "Functions" +msgstr "Fungsi" + +#: admin/field-groups.php:633 +msgid "Actions" +msgstr "Tindakan" + +#: admin/field-groups.php:634 fields/relationship.php:717 +msgid "Filters" +msgstr "Saringan" + +#: admin/field-groups.php:635 +msgid "'How to' guides" +msgstr "Panduan \"Bagaimana Caranya\"" + +#: admin/field-groups.php:636 +msgid "Tutorials" +msgstr "Tutorial" + +#: admin/field-groups.php:641 +msgid "Created by" +msgstr "Dibuat oleh" + +#: admin/field-groups.php:684 +msgid "Duplicate this item" +msgstr "Duplikat item ini" + +#: admin/field-groups.php:684 admin/field-groups.php:700 admin/views/field-group-field.php:59 +#: pro/fields/flexible-content.php:504 +msgid "Duplicate" +msgstr "Duplikat" + +#: admin/field-groups.php:746 +#, php-format +msgid "Select %s" +msgstr "Pilih %s" + +#: admin/field-groups.php:754 +msgid "Synchronise field group" +msgstr "Menyinkronkan grup bidang" + +#: admin/field-groups.php:754 admin/field-groups.php:771 +msgid "Sync" +msgstr "Sinkronkan" + +#: admin/settings-addons.php:51 admin/views/settings-addons.php:9 +msgid "Add-ons" +msgstr "Add-on" + +#: admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Kesalahan. Tidak dapat memuat daftar add-on" + +#: admin/settings-info.php:50 +msgid "Info" +msgstr "Info" + +#: admin/settings-info.php:75 +msgid "What's New" +msgstr "Apa yang Baru" + +#: admin/settings-tools.php:54 admin/views/settings-tools-export.php:23 admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "Perkakas" + +#: admin/settings-tools.php:151 admin/settings-tools.php:379 +msgid "No field groups selected" +msgstr "Tidak ada grup bidang yang dipilih" + +#: admin/settings-tools.php:188 +msgid "No file selected" +msgstr "Tak ada file yang dipilih" + +#: admin/settings-tools.php:201 +msgid "Error uploading file. Please try again" +msgstr "Kesalahan mengunggah file. Silakan coba lagi" + +#: admin/settings-tools.php:210 +msgid "Incorrect file type" +msgstr "Jenis file salah" + +#: admin/settings-tools.php:227 +msgid "Import file empty" +msgstr "File yang diimpor kosong" + +#: admin/settings-tools.php:323 +#, php-format +msgid "Success. Import tool added %s field groups: %s" +msgstr "Sukses. Impor alat ditambahkan %s grup bidang: %s" + +#: admin/settings-tools.php:332 +#, php-format +msgid "Warning. Import tool detected %s field groups already exist and have been ignored: %s" +msgstr "Peringatan. Impor alat terdeteksi grup bidang %s sudah ada dan telah diabaikan: %s" + +#: admin/update.php:113 +msgid "Upgrade ACF" +msgstr "Tingkatkan ACF" + +#: admin/update.php:143 +msgid "Review sites & upgrade" +msgstr "Meninjau situs & tingkatkan" + +#: admin/update.php:298 +msgid "Upgrade" +msgstr "Tingkatkan" + +#: admin/update.php:328 +msgid "Upgrade Database" +msgstr "Tingkatkan Database" + +#: admin/views/field-group-field-conditional-logic.php:29 +msgid "Conditional Logic" +msgstr "Logika Kondisional" + +#: admin/views/field-group-field-conditional-logic.php:40 admin/views/field-group-field.php:141 +#: fields/checkbox.php:246 fields/message.php:144 fields/page_link.php:553 fields/page_link.php:567 +#: fields/post_object.php:419 fields/post_object.php:433 fields/select.php:385 fields/select.php:399 +#: fields/select.php:413 fields/select.php:427 fields/tab.php:161 fields/taxonomy.php:796 fields/taxonomy.php:810 +#: fields/taxonomy.php:824 fields/taxonomy.php:838 fields/user.php:457 fields/user.php:471 fields/wysiwyg.php:407 +#: pro/admin/views/settings-updates.php:93 +msgid "Yes" +msgstr "Ya" + +#: admin/views/field-group-field-conditional-logic.php:41 admin/views/field-group-field.php:142 +#: fields/checkbox.php:247 fields/message.php:145 fields/page_link.php:554 fields/page_link.php:568 +#: fields/post_object.php:420 fields/post_object.php:434 fields/select.php:386 fields/select.php:400 +#: fields/select.php:414 fields/select.php:428 fields/tab.php:162 fields/taxonomy.php:711 fields/taxonomy.php:797 +#: fields/taxonomy.php:811 fields/taxonomy.php:825 fields/taxonomy.php:839 fields/user.php:458 fields/user.php:472 +#: fields/wysiwyg.php:408 pro/admin/views/settings-updates.php:103 +msgid "No" +msgstr "Tidak" + +#: admin/views/field-group-field-conditional-logic.php:62 +msgid "Show this field if" +msgstr "Tampilkan bidang ini jika" + +#: admin/views/field-group-field-conditional-logic.php:111 admin/views/field-group-locations.php:34 +msgid "is equal to" +msgstr "sama dengan" + +#: admin/views/field-group-field-conditional-logic.php:112 admin/views/field-group-locations.php:35 +msgid "is not equal to" +msgstr "tidak sama dengan" + +#: admin/views/field-group-field-conditional-logic.php:149 admin/views/field-group-locations.php:122 +msgid "and" +msgstr "dan" + +#: admin/views/field-group-field-conditional-logic.php:164 admin/views/field-group-locations.php:137 +msgid "Add rule group" +msgstr "Tambahkan peraturan grup" + +#: admin/views/field-group-field.php:54 admin/views/field-group-field.php:58 +msgid "Edit field" +msgstr "Edit Bidang" + +#: admin/views/field-group-field.php:58 pro/fields/gallery.php:363 +msgid "Edit" +msgstr "Edit" + +#: admin/views/field-group-field.php:59 +msgid "Duplicate field" +msgstr "Duplikat Bidang" + +#: admin/views/field-group-field.php:60 +msgid "Move field to another group" +msgstr "Pindahkan Bidang ke grup lain" + +#: admin/views/field-group-field.php:60 +msgid "Move" +msgstr "Pindahkan" + +#: admin/views/field-group-field.php:61 +msgid "Delete field" +msgstr "Hapus bidang" + +#: admin/views/field-group-field.php:61 pro/fields/flexible-content.php:503 +msgid "Delete" +msgstr "Hapus" + +#: admin/views/field-group-field.php:69 fields/oembed.php:225 fields/taxonomy.php:912 +msgid "Error" +msgstr "Error" + +#: fields/oembed.php:220 fields/taxonomy.php:900 +msgid "Error." +msgstr "Error." + +#: admin/views/field-group-field.php:69 +msgid "Field type does not exist" +msgstr "Jenis bidang tidak ada" + +#: admin/views/field-group-field.php:82 +msgid "Field Label" +msgstr "Label Bidang" + +#: admin/views/field-group-field.php:83 +msgid "This is the name which will appear on the EDIT page" +msgstr "Ini nama yang akan muncul pada laman EDIT" + +#: admin/views/field-group-field.php:95 +msgid "Field Name" +msgstr "Nama Bidang" + +#: admin/views/field-group-field.php:96 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Satu kata, tanpa spasi. Garis bawah dan strip dibolehkan" + +#: admin/views/field-group-field.php:108 +msgid "Field Type" +msgstr "Jenis Bidang" + +#: admin/views/field-group-field.php:122 fields/tab.php:134 +msgid "Instructions" +msgstr "Instruksi" + +#: admin/views/field-group-field.php:123 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instruksi untuk author. Terlihat ketika mengirim data" + +#: admin/views/field-group-field.php:134 +msgid "Required?" +msgstr "Diperlukan?" + +#: admin/views/field-group-field.php:163 +msgid "Wrapper Attributes" +msgstr "Atribut Wrapper" + +#: admin/views/field-group-field.php:169 +msgid "width" +msgstr "lebar" + +#: admin/views/field-group-field.php:183 +msgid "class" +msgstr "class" + +#: admin/views/field-group-field.php:196 +msgid "id" +msgstr "id" + +#: admin/views/field-group-field.php:208 +msgid "Close Field" +msgstr "Tutup Bidang" + +#: admin/views/field-group-fields.php:29 +msgid "Order" +msgstr "Suruh" + +#: admin/views/field-group-fields.php:30 pro/fields/flexible-content.php:530 +msgid "Label" +msgstr "Label" + +#: admin/views/field-group-fields.php:31 pro/fields/flexible-content.php:543 +msgid "Name" +msgstr "Nama" + +#: admin/views/field-group-fields.php:32 +msgid "Type" +msgstr "Tipe" + +#: admin/views/field-group-fields.php:44 +msgid "No fields. Click the + Add Field button to create your first field." +msgstr "Tidak ada bidang. Klik tombol + Tambah Bidang untuk membuat bidang pertama Anda." + +#: admin/views/field-group-fields.php:51 +msgid "Drag and drop to reorder" +msgstr "Seret dan jatuhkan untuk mengatur ulang" + +#: admin/views/field-group-fields.php:54 +msgid "+ Add Field" +msgstr "+ Tambah Bidang" + +#: admin/views/field-group-locations.php:5 admin/views/field-group-locations.php:11 +msgid "Post" +msgstr "post" + +#: admin/views/field-group-locations.php:6 fields/relationship.php:723 +msgid "Post Type" +msgstr "Jenis Post" + +#: admin/views/field-group-locations.php:7 +msgid "Post Status" +msgstr "Status Post" + +#: admin/views/field-group-locations.php:8 +msgid "Post Format" +msgstr "Format Post" + +#: admin/views/field-group-locations.php:9 +msgid "Post Category" +msgstr "Kategori Post" + +#: admin/views/field-group-locations.php:10 +msgid "Post Taxonomy" +msgstr "Post Taksonomi" + +#: admin/views/field-group-locations.php:13 admin/views/field-group-locations.php:17 +msgid "Page" +msgstr "Laman" + +#: admin/views/field-group-locations.php:14 +msgid "Page Template" +msgstr "Template Laman" + +#: admin/views/field-group-locations.php:15 +msgid "Page Type" +msgstr "Jenis Laman" + +#: admin/views/field-group-locations.php:16 +msgid "Page Parent" +msgstr "Laman Parent" + +#: admin/views/field-group-locations.php:19 fields/user.php:36 +msgid "User" +msgstr "Pengguna" + +#: admin/views/field-group-locations.php:20 +msgid "Current User" +msgstr "Pengguna saat ini" + +#: admin/views/field-group-locations.php:21 +msgid "Current User Role" +msgstr "Peran pengguna saat ini" + +#: admin/views/field-group-locations.php:22 +msgid "User Form" +msgstr "Form Pengguna" + +#: admin/views/field-group-locations.php:23 +msgid "User Role" +msgstr "Peran pengguna" + +#: admin/views/field-group-locations.php:25 pro/admin/options-page.php:48 +msgid "Forms" +msgstr "Form" + +#: admin/views/field-group-locations.php:26 +msgid "Attachment" +msgstr "Lampiran" + +#: admin/views/field-group-locations.php:27 +msgid "Taxonomy Term" +msgstr "Taksonomi Persyaratan" + +#: admin/views/field-group-locations.php:28 +msgid "Comment" +msgstr "Komentar" + +#: admin/views/field-group-locations.php:29 +msgid "Widget" +msgstr "Widget" + +#: admin/views/field-group-locations.php:41 +msgid "Rules" +msgstr "Peraturan" + +#: admin/views/field-group-locations.php:42 +msgid "Create a set of rules to determine which edit screens will use these advanced custom fields" +msgstr "Buat pengaturan peraturan untuk menentukan layar edit yang akan menggunakan advanced custom fields ini" + +#: admin/views/field-group-locations.php:59 +msgid "Show this field group if" +msgstr "Tampilkan grup bidang jika" + +#: admin/views/field-group-options.php:20 +msgid "Style" +msgstr "Gaya" + +#: admin/views/field-group-options.php:27 +msgid "Standard (WP metabox)" +msgstr "Standar (WP metabox)" + +#: admin/views/field-group-options.php:28 +msgid "Seamless (no metabox)" +msgstr "Mulus (tanpa metabox)" + +#: admin/views/field-group-options.php:35 +msgid "Position" +msgstr "Posisi" + +#: admin/views/field-group-options.php:42 +msgid "High (after title)" +msgstr "Tinggi (setelah judul)" + +#: admin/views/field-group-options.php:43 +msgid "Normal (after content)" +msgstr "Normal (setelah konten)" + +#: admin/views/field-group-options.php:44 +msgid "Side" +msgstr "Samping" + +#: admin/views/field-group-options.php:52 +msgid "Label placement" +msgstr "Penempatan Label" + +#: admin/views/field-group-options.php:59 fields/tab.php:148 +msgid "Top aligned" +msgstr "Selaras atas" + +#: admin/views/field-group-options.php:60 fields/tab.php:149 +msgid "Left aligned" +msgstr "Selaras kiri" + +#: admin/views/field-group-options.php:67 +msgid "Instruction placement" +msgstr "Penempatan instruksi" + +#: admin/views/field-group-options.php:74 +msgid "Below labels" +msgstr "Di bawah label" + +#: admin/views/field-group-options.php:75 +msgid "Below fields" +msgstr "Di bawah bidang" + +#: admin/views/field-group-options.php:82 +msgid "Order No." +msgstr "No. Urutan" + +#: admin/views/field-group-options.php:83 +msgid "Field groups with a lower order will appear first" +msgstr "Bidang kelompok dengan urutan yang lebih rendah akan muncul pertama kali" + +#: admin/views/field-group-options.php:94 +msgid "Shown in field group list" +msgstr "Ditampilkan dalam daftar Grup bidang" + +#: admin/views/field-group-options.php:104 +msgid "Hide on screen" +msgstr "Sembunyikan pada layar" + +#: admin/views/field-group-options.php:105 +msgid "Select items to hide them from the edit screen." +msgstr "Pilih item untuk menyembunyikan mereka dari layar edit." + +#: admin/views/field-group-options.php:105 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's options will be used (the one with the " +"lowest order number)" +msgstr "" +"Jika beberapa kelompok bidang ditampilkan pada layar edit, pilihan bidang kelompok yang pertama akan digunakan " +"(pertama nomor urutan terendah)" + +#: admin/views/field-group-options.php:112 +msgid "Permalink" +msgstr "Permalink" + +#: admin/views/field-group-options.php:113 +msgid "Content Editor" +msgstr "Konten Edior" + +#: admin/views/field-group-options.php:114 +msgid "Excerpt" +msgstr "Kutipan" + +#: admin/views/field-group-options.php:116 +msgid "Discussion" +msgstr "Diskusi" + +#: admin/views/field-group-options.php:117 +msgid "Comments" +msgstr "Komentar" + +#: admin/views/field-group-options.php:118 +msgid "Revisions" +msgstr "Revisi" + +#: admin/views/field-group-options.php:119 +msgid "Slug" +msgstr "Slug" + +#: admin/views/field-group-options.php:120 +msgid "Author" +msgstr "Author" + +#: admin/views/field-group-options.php:121 +msgid "Format" +msgstr "Format" + +#: admin/views/field-group-options.php:122 +msgid "Page Attributes" +msgstr "Atribut Laman" + +#: admin/views/field-group-options.php:123 fields/relationship.php:736 +msgid "Featured Image" +msgstr "Gambar Fitur" + +#: admin/views/field-group-options.php:124 +msgid "Categories" +msgstr "Kategori" + +#: admin/views/field-group-options.php:125 +msgid "Tags" +msgstr "Tag" + +#: admin/views/field-group-options.php:126 +msgid "Send Trackbacks" +msgstr "Kirim Pelacakan" + +#: admin/views/settings-addons.php:23 +msgid "Download & Install" +msgstr "Undah dan Instal" + +#: admin/views/settings-addons.php:42 +msgid "Installed" +msgstr "Sudah Terinstall" + +#: admin/views/settings-info.php:9 +msgid "Welcome to Advanced Custom Fields" +msgstr "Selamat datang di Advanced Custom Fields" + +#: admin/views/settings-info.php:10 +#, php-format +msgid "Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it." +msgstr "" +"Terima kasih sudah memperbario! ACF %s lebih besar dan lebih baik daripada sebelumnya. Kami harap Anda menyukainya." + +#: admin/views/settings-info.php:23 +msgid "A smoother custom field experience" +msgstr "Pengalaman bidang kustom yang halus" + +#: admin/views/settings-info.php:28 +msgid "Improved Usability" +msgstr "Peningkatan kegunaan" + +#: admin/views/settings-info.php:29 +msgid "" +"Including the popular Select2 library has improved both usability and speed across a number of field types " +"including post object, page link, taxonomy and select." +msgstr "" +"Termasuk Perpustakaan Select2 populer telah meningkatkan kegunaan dan kecepatan di sejumlah bidang jenis termasuk " +"posting objek, link halaman, taksonomi, dan pilih." + +#: admin/views/settings-info.php:33 +msgid "Improved Design" +msgstr "Peningkatan Desain" + +#: admin/views/settings-info.php:34 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are seen on the " +"gallery, relationship and oEmbed (new) fields!" +msgstr "" +"Berbagai bidang telah mengalami refresh visual untuk membuat ACF terlihat lebih baik daripada sebelumnya! " +"Perubahan nyata terlihat pada galeri, hubungan dan oEmbed bidang (baru)!" + +#: admin/views/settings-info.php:38 +msgid "Improved Data" +msgstr "Peningkatan Data" + +#: admin/views/settings-info.php:39 +msgid "" +"Redesigning the data architecture has allowed sub fields to live independently from their parents. This allows you " +"to drag and drop fields in and out of parent fields!" +msgstr "" +"Mendesain ulang arsitektur data telah memungkinkan sub bidang untuk yang mandiri dari parentnya. Hal ini " +"memungkinkan Anda untuk seret dan jatuhkan bidang masuk dan keluar dari bidang parent!" + +#: admin/views/settings-info.php:45 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Selamat tinggal Add-on. Halo PRO" + +#: admin/views/settings-info.php:50 +msgid "Introducing ACF PRO" +msgstr "Memperkenalkan ACF PRO" + +#: admin/views/settings-info.php:51 +msgid "We're changing the way premium functionality is delivered in an exciting way!" +msgstr "Kami mengubah cara fungsi premium yang disampaikan dalam cara menarik!" + +#: admin/views/settings-info.php:52 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro version of ACF. With both personal and " +"developer licenses available, premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Semua 4 add-on premium sudah dikombinasikan kedalam versi Pro ACF. Dengan ketersediaan lisensi " +"personal dan pengembang, fungsi premuim lebih terjangkan dan dapat diakses keseluruhan daripada sebelumnya!" + +#: admin/views/settings-info.php:56 +msgid "Powerful Features" +msgstr "Fitur kuat" + +#: admin/views/settings-info.php:57 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field " +"and the ability to create extra admin options pages!" +msgstr "" +"ACF PRO memiliki fitur canggih seperti data yang berulang, layout konten yang fleksibel, bidang galeri yang cantik " +"dan kemampuan membuat laman opsi ekstra admin!" + +#: admin/views/settings-info.php:58 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Baca lebih tentang Fitur ACF PRO." + +#: admin/views/settings-info.php:62 +msgid "Easy Upgrading" +msgstr "Upgrade Mudah" + +#: admin/views/settings-info.php:63 +#, php-format +msgid "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +msgstr "" +"Untuk membuat peningkatan yang mudah, masuk ke akun toko dan klaim salinan gratis ACF PRO!" + +#: admin/views/settings-info.php:64 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, but if you do have one, please contact " +"our support team via the help desk" +msgstr "" +"Kami juga menulis panduan upgrade untuk menjawab pertanyaan apapun, jika Anda sudah punya, " +"silahkan hubungi tim support kami via help desk" + +#: admin/views/settings-info.php:72 +msgid "Under the Hood" +msgstr "Dibawah judul blog" + +#: admin/views/settings-info.php:77 +msgid "Smarter field settings" +msgstr "Pengaturan bidang yang pintar" + +#: admin/views/settings-info.php:78 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF sekarang menyimpan pengaturan bidang sebagai objek post individu" + +#: admin/views/settings-info.php:82 +msgid "More AJAX" +msgstr "Lebih banyak AJAX" + +#: admin/views/settings-info.php:83 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "Banyak bidang yang menggunakan pencarian AJAX untuk mempercepat loading laman" + +#: admin/views/settings-info.php:87 +msgid "Local JSON" +msgstr "JSON Lokal" + +#: admin/views/settings-info.php:88 +msgid "New auto export to JSON feature improves speed" +msgstr "Ekspor otomatis ke fitur JSON meningkatkan kecepatan" + +#: admin/views/settings-info.php:94 +msgid "Better version control" +msgstr "Kontolr versi terbaik" + +#: admin/views/settings-info.php:95 +msgid "New auto export to JSON feature allows field settings to be version controlled" +msgstr "Ekspor otomatis ke fitur JSON memungkinkan pengaturan bidang menjadi versi yang terkontrol" + +#: admin/views/settings-info.php:99 +msgid "Swapped XML for JSON" +msgstr "Swap XML untuk JSON" + +#: admin/views/settings-info.php:100 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Impor / ekspor sekarang menggunakan JSON yang mendukung XML" + +#: admin/views/settings-info.php:104 +msgid "New Forms" +msgstr "Form Baru" + +#: admin/views/settings-info.php:105 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "Bidang sekarang dapat dipetakan ke komentar, widget dan semua bentuk pengguna!" + +#: admin/views/settings-info.php:112 +msgid "A new field for embedding content has been added" +msgstr "Bidang baru untuk melekatkan konten telah ditambahkan" + +#: admin/views/settings-info.php:116 +msgid "New Gallery" +msgstr "Galeri baru" + +#: admin/views/settings-info.php:117 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Bidang Galeri telah mengalami banyak dibutuhkan facelift" + +#: admin/views/settings-info.php:121 +msgid "New Settings" +msgstr "Pengaturan baru" + +#: admin/views/settings-info.php:122 +msgid "Field group settings have been added for label placement and instruction placement" +msgstr "Pengaturan grup bidang telah ditambahkan untuk penempatan label dan penempatan instruksi" + +#: admin/views/settings-info.php:128 +msgid "Better Front End Forms" +msgstr "Form Front End Terbaik" + +#: admin/views/settings-info.php:129 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() dapat membuat post baru di oengajuan" + +#: admin/views/settings-info.php:133 +msgid "Better Validation" +msgstr "Validasi lebih baik" + +#: admin/views/settings-info.php:134 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "Validasi form sekarang dilakukan melalui PHP + AJAX dalam hanya mendukung JS" + +#: admin/views/settings-info.php:138 +msgid "Relationship Field" +msgstr "Bidang hubungan" + +#: admin/views/settings-info.php:139 +msgid "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "Pengaturan bidang hubungan untuk 'Saringan' (Pencarian, Tipe Post, Taksonomi)" + +#: admin/views/settings-info.php:145 +msgid "Moving Fields" +msgstr "Memindahkan Bidang" + +#: admin/views/settings-info.php:146 +msgid "New field group functionality allows you to move a field between groups & parents" +msgstr "Fungsionalitas grup bidang memungkinkan Anda memindahkan bidang antara grup & parent" + +#: admin/views/settings-info.php:150 fields/page_link.php:36 +msgid "Page Link" +msgstr "Link Halaman" + +#: admin/views/settings-info.php:151 +msgid "New archives group in page_link field selection" +msgstr "Grup arsip di page_link bidang seleksi" + +#: admin/views/settings-info.php:155 +msgid "Better Options Pages" +msgstr "Opsi Laman Lebih Baik" + +#: admin/views/settings-info.php:156 +msgid "New functions for options page allow creation of both parent and child menu pages" +msgstr "Fungsi baru untuk opsi laman memungkinkan pembuatan laman menu parent dan child" + +#: admin/views/settings-info.php:165 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Kami kira Anda akan menyukai perbahan di %s." + +#: admin/views/settings-tools-export.php:27 +msgid "Export Field Groups to PHP" +msgstr "Ekspor grup bidang ke PHP" + +#: admin/views/settings-tools-export.php:31 +msgid "" +"The following code can be used to register a local version of the selected field group(s). A local field group can " +"provide many benefits such as faster load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within an external file." +msgstr "" +"Kode berikutini dapat digunakan untuk mendaftar versi lokal dari bidang yang dipilih. Grup bidang lokal dapat " +"memberikan banyak manfaat sepmacam waktu loading yang cepat, kontrol versi & pengaturan bidang dinamis. Salin dan " +"tempel kode berikut ke tema Anda file function.php atau masukkan kedalam file eksternal." + +#: admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Pilih Grup Bidang" + +#: admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "Ekspor Grup Bidang" + +#: admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export method. Use the download button to " +"export to a .json file which you can then import to another ACF installation. Use the generate button to export to " +"PHP code which you can place in your theme." +msgstr "" +"Pilih grup bidang yang Anda ingin ekspor dan pilih metode ekspor. Gunakan tombol unduh untuk ekspor ke file .json " +"yang nantinya bisa Anda impor ke instalasi ACF yang lain. Gunakan tombol hasilkan untuk ekspor ke kode PHP yang " +"bisa Anda simpan di tema Anda." + +#: admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "Undih file eskpor" + +#: admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Hasilkan kode ekspor" + +#: admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "Impor grup bidang" + +#: admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When you click the import button below, ACF " +"will import the field groups." +msgstr "" +"Pilih file JSON Advanced Custom Fields yang ingin Anda impor. Ketika Anda mengklik tombol impor, ACF akan impor " +"grup bidang." + +#: admin/views/settings-tools.php:77 fields/file.php:46 +msgid "Select File" +msgstr "Pilih File" + +#: admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Impor" + +#: admin/views/update-network.php:8 admin/views/update.php:8 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Peningkatan Database Advanced Custom Fields" + +#: admin/views/update-network.php:10 +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update and then click “Upgrade Databaseâ€." +msgstr "" +"Situs berikut memerlukan peningkatan DB. Pilih salah satu yang ingin Anda update dan klik \"Tingkatkan Database\"." + +#: admin/views/update-network.php:19 admin/views/update-network.php:27 +msgid "Site" +msgstr "Situs" + +#: admin/views/update-network.php:47 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Situs memerlukan database upgrade dari %s ke %s" + +#: admin/views/update-network.php:49 +msgid "Site is up to date" +msgstr "Situs ini up-to-date" + +#: admin/views/update-network.php:62 admin/views/update.php:16 +msgid "Database Upgrade complete. Return to network dashboard" +msgstr "Upgrade database selesai. Kembali ke dasbor jaringan" + +#: admin/views/update-network.php:101 admin/views/update-notice.php:35 +msgid "" +"It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the " +"updater now?" +msgstr "" +"Ini sangan direkomendasikan Anda mencadangkan database Anda sebelum memproses. Apakah Anda yakin menjalankan " +"peningkatan sekarang?" + +#: admin/views/update-network.php:157 +msgid "Upgrade complete" +msgstr "Peningkatan selesai" + +#: admin/views/update-network.php:161 +msgid "Upgrading data to" +msgstr "Meningkatkan data ke" + +#: admin/views/update-notice.php:23 +msgid "Database Upgrade Required" +msgstr "Diperlukan Peningkatan Database" + +#: admin/views/update-notice.php:25 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Terimakasih sudah meningkatkan ke %s v%s!" + +#: admin/views/update-notice.php:25 +msgid "Before you start using the new awesome features, please update your database to the newest version." +msgstr "Sebelum Anda mula menggunakan fitur keren, silahkan tingkatkan database Anda ke versi terbaru." + +#: admin/views/update.php:12 +msgid "Reading upgrade tasks..." +msgstr "Membaca tugas upgrade..." + +#: admin/views/update.php:14 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Meningkatkan data ke versi %s" + +#: admin/views/update.php:16 +msgid "See what's new" +msgstr "Lihat apa yang baru" + +#: admin/views/update.php:110 +msgid "No updates available." +msgstr "pembaruan tidak tersedia ." + +#: api/api-helpers.php:909 +msgid "Thumbnail" +msgstr "Thumbnail" + +#: api/api-helpers.php:910 +msgid "Medium" +msgstr "Sedang" + +#: api/api-helpers.php:911 +msgid "Large" +msgstr "Besar" + +#: api/api-helpers.php:959 +msgid "Full Size" +msgstr "Ukuran Penuh" + +#: api/api-helpers.php:1149 api/api-helpers.php:1711 +msgid "(no title)" +msgstr "(tanpa judul)" + +#: api/api-helpers.php:3322 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Lebar gambar harus setidaknya %dpx." + +#: api/api-helpers.php:3327 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Lebar gambar tidak boleh melebihi %dpx." + +#: api/api-helpers.php:3343 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Tinggi gambar harus setidaknya %dpx." + +#: api/api-helpers.php:3348 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Tinggi gambar tidak boleh melebihi %dpx." + +#: api/api-helpers.php:3366 +#, php-format +msgid "File size must be at least %s." +msgstr "Ukuran file harus setidaknya %s." + +#: api/api-helpers.php:3371 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Ukuran file harus tidak boleh melebihi %s." + +#: api/api-helpers.php:3405 +#, php-format +msgid "File type must be %s." +msgstr "Jenis file harus %s." + +#: api/api-template.php:1224 pro/fields/gallery.php:572 +msgid "Update" +msgstr "Perbarui" + +#: api/api-template.php:1225 +msgid "Post updated" +msgstr "Post Diperbarui" + +#: core/field.php:131 +msgid "Basic" +msgstr "Dasar" + +#: core/field.php:132 +msgid "Content" +msgstr "Konten" + +#: core/field.php:133 +msgid "Choice" +msgstr "Pilihan" + +#: core/field.php:134 +msgid "Relational" +msgstr "Relasional" + +#: core/field.php:135 +msgid "jQuery" +msgstr "jQuery" + +#: core/field.php:136 fields/checkbox.php:226 fields/radio.php:231 pro/fields/flexible-content.php:500 +#: pro/fields/flexible-content.php:549 pro/fields/repeater.php:467 +msgid "Layout" +msgstr "Layout" + +#: core/input.php:129 +msgid "Expand Details" +msgstr "Perluas Rincian" + +#: core/input.php:130 +msgid "Collapse Details" +msgstr "Persempit Rincian" + +#: core/input.php:131 +msgid "Validation successful" +msgstr "Validasi Sukses" + +#: core/input.php:132 +msgid "Validation failed" +msgstr "Validasi Gagal" + +#: core/input.php:133 +msgid "1 field requires attention" +msgstr "1 Bidang memerlukan perhatian" + +#: core/input.php:134 +#, php-format +msgid "%d fields require attention" +msgstr "Bidang %d memerlukan perhatian" + +#: core/input.php:135 +msgid "Restricted" +msgstr "Dibatasi" + +#: core/input.php:533 +#, php-format +msgid "%s value is required" +msgstr "Nilai %s diharuskan" + +#: fields/checkbox.php:36 fields/taxonomy.php:778 +msgid "Checkbox" +msgstr "Kotak centang" + +#: fields/checkbox.php:144 +msgid "Toggle All" +msgstr "Toggle Semua" + +#: fields/checkbox.php:208 fields/radio.php:193 fields/select.php:362 +msgid "Choices" +msgstr "Pilihan" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:363 +msgid "Enter each choice on a new line." +msgstr "Masukkan setiap pilihan pada baris baru." + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:363 +msgid "For more control, you may specify both a value and label like this:" +msgstr "Untuk kontrol lebih, Anda dapat menentukan keduanya antara nilai dan bidang seperti ini:" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:363 +msgid "red : Red" +msgstr "merah : Merah" + +#: fields/checkbox.php:217 fields/color_picker.php:149 fields/email.php:124 fields/number.php:150 +#: fields/radio.php:222 fields/select.php:371 fields/text.php:148 fields/textarea.php:145 fields/true_false.php:115 +#: fields/url.php:117 fields/wysiwyg.php:368 +msgid "Default Value" +msgstr "Nilai Default" + +#: fields/checkbox.php:218 fields/select.php:372 +msgid "Enter each default value on a new line" +msgstr "Masukkan setiap nilai default pada baris baru" + +#: fields/checkbox.php:232 fields/radio.php:237 +msgid "Vertical" +msgstr "Vertikal" + +#: fields/checkbox.php:233 fields/radio.php:238 +msgid "Horizontal" +msgstr "Horizontal" + +#: fields/checkbox.php:240 +msgid "Toggle" +msgstr "Toggle" + +#: fields/checkbox.php:241 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Tambahkan sebuah kotak centang untuk toggle semua pilihan" + +#: fields/color_picker.php:36 +msgid "Color Picker" +msgstr "Pengambil Warna" + +#: fields/color_picker.php:82 +msgid "Clear" +msgstr "Bersihkan" + +#: fields/color_picker.php:83 +msgid "Default" +msgstr "Default" + +#: fields/color_picker.php:84 +msgid "Select Color" +msgstr "Pilih Warna" + +#: fields/date_picker.php:36 +msgid "Date Picker" +msgstr "Pengambil Tanggal" + +#: fields/date_picker.php:72 +msgid "Done" +msgstr "Selesai" + +#: fields/date_picker.php:73 +msgid "Today" +msgstr "Hari ini" + +#: fields/date_picker.php:76 +msgid "Show a different month" +msgstr "Tampilkan bulan berbeda" + +#: fields/date_picker.php:182 +msgid "Display Format" +msgstr "Format tampilan" + +#: fields/date_picker.php:183 +msgid "The format displayed when editing a post" +msgstr "Fromat tampilan ketika mengedit post" + +#: fields/date_picker.php:197 +msgid "Return format" +msgstr "Kembalikan format" + +#: fields/date_picker.php:198 +msgid "The format returned via template functions" +msgstr "Format dikembalikan via template function" + +#: fields/date_picker.php:213 +msgid "Week Starts On" +msgstr "Minggu Dimulai Pada" + +#: fields/email.php:36 +msgid "Email" +msgstr "Email" + +#: fields/email.php:125 fields/number.php:151 fields/radio.php:223 fields/text.php:149 fields/textarea.php:146 +#: fields/url.php:118 fields/wysiwyg.php:369 +msgid "Appears when creating a new post" +msgstr "Muncul ketika membuat sebuah post baru" + +#: fields/email.php:133 fields/number.php:159 fields/password.php:137 fields/text.php:157 fields/textarea.php:154 +#: fields/url.php:126 +msgid "Placeholder Text" +msgstr "Teks Placeholder" + +#: fields/email.php:134 fields/number.php:160 fields/password.php:138 fields/text.php:158 fields/textarea.php:155 +#: fields/url.php:127 +msgid "Appears within the input" +msgstr "Muncul didalam input" + +#: fields/email.php:142 fields/number.php:168 fields/password.php:146 fields/text.php:166 +msgid "Prepend" +msgstr "Tambahkan" + +#: fields/email.php:143 fields/number.php:169 fields/password.php:147 fields/text.php:167 +msgid "Appears before the input" +msgstr "Muncul sebelum input" + +#: fields/email.php:151 fields/number.php:177 fields/password.php:155 fields/text.php:175 +msgid "Append" +msgstr "Menambahkan" + +#: fields/email.php:152 fields/number.php:178 fields/password.php:156 fields/text.php:176 +msgid "Appears after the input" +msgstr "Muncul setelah input" + +#: fields/file.php:36 +msgid "File" +msgstr "File" + +#: fields/file.php:47 +msgid "Edit File" +msgstr "Edit File" + +#: fields/file.php:48 +msgid "Update File" +msgstr "Perbarui File" + +#: fields/file.php:49 pro/fields/gallery.php:55 +msgid "uploaded to this post" +msgstr "diunggah ke post ini" + +#: fields/file.php:142 +msgid "File Name" +msgstr "Nama file" + +#: fields/file.php:146 +msgid "File Size" +msgstr "Ukuran File" + +#: fields/file.php:169 +msgid "No File selected" +msgstr "Tak ada file yang dipilih" + +#: fields/file.php:169 +msgid "Add File" +msgstr "Tambahkan File" + +#: fields/file.php:214 fields/image.php:195 fields/taxonomy.php:847 +msgid "Return Value" +msgstr "Nilai Kembali" + +#: fields/file.php:215 fields/image.php:196 +msgid "Specify the returned value on front end" +msgstr "Tentukan nilai yang dikembalikan di front-end" + +#: fields/file.php:220 +msgid "File Array" +msgstr "File Array" + +#: fields/file.php:221 +msgid "File URL" +msgstr "URL File" + +#: fields/file.php:222 +msgid "File ID" +msgstr "ID File" + +#: fields/file.php:229 fields/image.php:220 pro/fields/gallery.php:655 +msgid "Library" +msgstr "Perpustakaan" + +#: fields/file.php:230 fields/image.php:221 pro/fields/gallery.php:656 +msgid "Limit the media library choice" +msgstr "Batasi pilihan pustaka media" + +#: fields/file.php:236 fields/image.php:227 pro/fields/gallery.php:662 +msgid "Uploaded to post" +msgstr "Diunggah ke post" + +#: fields/file.php:243 fields/image.php:234 pro/fields/gallery.php:669 +msgid "Minimum" +msgstr "Minimum" + +#: fields/file.php:244 fields/file.php:255 +msgid "Restrict which files can be uploaded" +msgstr "Batasi file mana yang dapat diunggah" + +#: fields/file.php:247 fields/file.php:258 fields/image.php:257 fields/image.php:290 pro/fields/gallery.php:692 +#: pro/fields/gallery.php:725 +msgid "File size" +msgstr "Ukuran File" + +#: fields/file.php:254 fields/image.php:267 pro/fields/gallery.php:702 +msgid "Maximum" +msgstr "Maksimum" + +#: fields/file.php:265 fields/image.php:300 pro/fields/gallery.php:735 +msgid "Allowed file types" +msgstr "Jenis file yang diperbolehkan" + +#: fields/file.php:266 fields/image.php:301 pro/fields/gallery.php:736 +msgid "Comma separated list. Leave blank for all types" +msgstr "Daftar dipisahkan koma. Kosongkan untuk semua jenis" + +#: fields/google-map.php:36 +msgid "Google Map" +msgstr "Peta Google" + +#: fields/google-map.php:51 +msgid "Locating" +msgstr "Melokasikan" + +#: fields/google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "Maaf, browser ini tidak support geolocation" + +#: fields/google-map.php:133 fields/relationship.php:722 +msgid "Search" +msgstr "Cari" + +#: fields/google-map.php:134 +msgid "Clear location" +msgstr "Bersihkan lokasi" + +#: fields/google-map.php:135 +msgid "Find current location" +msgstr "Temukan lokasi saat ini" + +#: fields/google-map.php:138 +msgid "Search for address..." +msgstr "Cari alamat..." + +#: fields/google-map.php:168 fields/google-map.php:179 +msgid "Center" +msgstr "Tengah" + +#: fields/google-map.php:169 fields/google-map.php:180 +msgid "Center the initial map" +msgstr "Pusat peta awal" + +#: fields/google-map.php:193 +msgid "Zoom" +msgstr "Zoom" + +#: fields/google-map.php:194 +msgid "Set the initial zoom level" +msgstr "Mengatur tingkat awal zoom" + +#: fields/google-map.php:203 fields/image.php:246 fields/image.php:279 fields/oembed.php:275 +#: pro/fields/gallery.php:681 pro/fields/gallery.php:714 +msgid "Height" +msgstr "Tinggi" + +#: fields/google-map.php:204 +msgid "Customise the map height" +msgstr "Sesuaikan ketinggian peta" + +#: fields/image.php:36 +msgid "Image" +msgstr "Gambar" + +#: fields/image.php:51 +msgid "Select Image" +msgstr "Pilih Gambar" + +#: fields/image.php:52 pro/fields/gallery.php:53 +msgid "Edit Image" +msgstr "Edit Gambar" + +#: fields/image.php:53 pro/fields/gallery.php:54 +msgid "Update Image" +msgstr "Perbarui Gambar" + +#: fields/image.php:54 +msgid "Uploaded to this post" +msgstr "Diunggah ke post ini" + +#: fields/image.php:55 +msgid "All images" +msgstr "Semua gambar" + +#: fields/image.php:147 +msgid "No image selected" +msgstr "Tak ada gambar yang dipilih" + +#: fields/image.php:147 +msgid "Add Image" +msgstr "Tambahkan Gambar" + +#: fields/image.php:201 +msgid "Image Array" +msgstr "Gambar Array" + +#: fields/image.php:202 +msgid "Image URL" +msgstr "URL Gambar" + +#: fields/image.php:203 +msgid "Image ID" +msgstr "ID Gambar" + +#: fields/image.php:210 pro/fields/gallery.php:645 +msgid "Preview Size" +msgstr "Ukuran Tinjauan" + +#: fields/image.php:211 pro/fields/gallery.php:646 +msgid "Shown when entering data" +msgstr "Tampilkan ketika memasukkan data" + +#: fields/image.php:235 fields/image.php:268 pro/fields/gallery.php:670 pro/fields/gallery.php:703 +msgid "Restrict which images can be uploaded" +msgstr "Batasi gambar mana yang dapat diunggah" + +#: fields/image.php:238 fields/image.php:271 fields/oembed.php:264 pro/fields/gallery.php:673 +#: pro/fields/gallery.php:706 +msgid "Width" +msgstr "Lebar" + +#: fields/message.php:36 fields/message.php:116 fields/true_false.php:106 +msgid "Message" +msgstr "Pesan" + +#: fields/message.php:125 fields/textarea.php:182 +msgid "New Lines" +msgstr "Garis baru" + +#: fields/message.php:126 fields/textarea.php:183 +msgid "Controls how new lines are rendered" +msgstr "Kontrol bagaimana baris baru diberikan" + +#: fields/message.php:130 fields/textarea.php:187 +msgid "Automatically add paragraphs" +msgstr "Tambah paragraf secara otomatis" + +#: fields/message.php:131 fields/textarea.php:188 +msgid "Automatically add <br>" +msgstr "Otomatis Tambah <br>" + +#: fields/message.php:132 fields/textarea.php:189 +msgid "No Formatting" +msgstr "Jangan format" + +#: fields/message.php:139 +msgid "Escape HTML" +msgstr "Keluar HTML" + +#: fields/message.php:140 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Memungkinkan HTML markup untuk menampilkan teks terlihat sebagai render" + +#: fields/number.php:36 +msgid "Number" +msgstr "Jumlah" + +#: fields/number.php:186 +msgid "Minimum Value" +msgstr "Nilai Minimum" + +#: fields/number.php:195 +msgid "Maximum Value" +msgstr "Nilai Maksimum" + +#: fields/number.php:204 +msgid "Step Size" +msgstr "Ukuran Langkah" + +#: fields/number.php:242 +msgid "Value must be a number" +msgstr "Nilai harus berupa angka" + +#: fields/number.php:260 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Nilai harus sama dengan atau lebih tinggi dari %d" + +#: fields/number.php:268 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Nilai harus sama dengan atau lebih rendah dari %d" + +#: fields/oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: fields/oembed.php:212 +msgid "Enter URL" +msgstr "Masukkan URL" + +#: fields/oembed.php:225 +msgid "No embed found for the given URL." +msgstr "Tidak ada embed ditemukan dari URL yang diberikan." + +#: fields/oembed.php:261 fields/oembed.php:272 +msgid "Embed Size" +msgstr "Ukuran Embed (Semat)" + +#: fields/page_link.php:197 +msgid "Archives" +msgstr "Arsip" + +#: fields/page_link.php:520 fields/post_object.php:386 fields/relationship.php:689 +msgid "Filter by Post Type" +msgstr "Saring dengan jenis post" + +#: fields/page_link.php:528 fields/post_object.php:394 fields/relationship.php:697 +msgid "All post types" +msgstr "Semua Tipe Post" + +#: fields/page_link.php:534 fields/post_object.php:400 fields/relationship.php:703 +msgid "Filter by Taxonomy" +msgstr "Filter dengan Taksonomi" + +#: fields/page_link.php:542 fields/post_object.php:408 fields/relationship.php:711 +msgid "All taxonomies" +msgstr "Semua Taksonomi" + +#: fields/page_link.php:548 fields/post_object.php:414 fields/select.php:380 fields/taxonomy.php:791 +#: fields/user.php:452 +msgid "Allow Null?" +msgstr "Izinkan Nol?" + +#: fields/page_link.php:562 fields/post_object.php:428 fields/select.php:394 fields/user.php:466 +msgid "Select multiple values?" +msgstr "Pilih beberapa nilai?" + +#: fields/password.php:36 +msgid "Password" +msgstr "Kata Sandi" + +#: fields/post_object.php:36 fields/post_object.php:447 fields/relationship.php:768 +msgid "Post Object" +msgstr "Objek Post" + +#: fields/post_object.php:442 fields/relationship.php:763 +msgid "Return Format" +msgstr "Kembalikan format" + +#: fields/post_object.php:448 fields/relationship.php:769 +msgid "Post ID" +msgstr "ID Post" + +#: fields/radio.php:36 +msgid "Radio Button" +msgstr "Tombol Radio" + +#: fields/radio.php:202 +msgid "Other" +msgstr "Lainnya" + +#: fields/radio.php:206 +msgid "Add 'other' choice to allow for custom values" +msgstr "Tambah pilihan 'lainnya' untuk mengizinkan nilai kustom" + +#: fields/radio.php:212 +msgid "Save Other" +msgstr "Simpan Lainnya" + +#: fields/radio.php:216 +msgid "Save 'other' values to the field's choices" +msgstr "Simpan nilai 'lainnya' ke bidang pilihan" + +#: fields/relationship.php:36 +msgid "Relationship" +msgstr "Hubungan" + +#: fields/relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "Nilai minimum mencapai (nilai {min})" + +#: fields/relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "Nilai maksimum mencapai ( nilai {maks} )" + +#: fields/relationship.php:50 +msgid "Loading" +msgstr "Loading..." + +#: fields/relationship.php:51 +msgid "No matches found" +msgstr "Tidak ditemukan" + +#: fields/relationship.php:570 +msgid "Search..." +msgstr "Cari ..." + +#: fields/relationship.php:579 +msgid "Select post type" +msgstr "Pilih jenis posting" + +#: fields/relationship.php:592 +msgid "Select taxonomy" +msgstr "Pilih taksonomi" + +#: fields/relationship.php:724 fields/taxonomy.php:36 fields/taxonomy.php:761 +msgid "Taxonomy" +msgstr "Taksonomi" + +#: fields/relationship.php:731 +msgid "Elements" +msgstr "Elemen" + +#: fields/relationship.php:732 +msgid "Selected elements will be displayed in each result" +msgstr "Elemen terpilih akan ditampilkan disetiap hasil" + +#: fields/relationship.php:743 +msgid "Minimum posts" +msgstr "Posting minimal" + +#: fields/relationship.php:752 +msgid "Maximum posts" +msgstr "Posting maksimum" + +#: fields/relationship.php:856 pro/fields/gallery.php:817 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s diperlukan setidaknya %s pilihan" + +#: fields/select.php:36 fields/select.php:167 fields/taxonomy.php:783 +msgid "Select" +msgstr "Pilih" + +#: fields/select.php:408 +msgid "Stylised UI" +msgstr "Stylised UI" + +#: fields/select.php:422 +msgid "Use AJAX to lazy load choices?" +msgstr "Gunakan AJAX untuk pilihan lazy load?" + +#: fields/tab.php:36 +msgid "Tab" +msgstr "Tab" + +#: fields/tab.php:128 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater field or flexible content field layout" +msgstr "" +"Bidang tab tidak akan tampil dengan baik ketika ditambahkan ke Gaya Tabel repeater atau layout bidang konten yang " +"fleksibel" + +#: fields/tab.php:129 +msgid "Use \"Tab Fields\" to better organize your edit screen by grouping fields together." +msgstr "Gunakan \"Bidang Tab\" untuk mengatur layar edit Anda dengan menggabungkan bidang bersamaan." + +#: fields/tab.php:130 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is defined) will be grouped together using " +"this field's label as the tab heading." +msgstr "" +"Semua bidang mengikuti \"bidang tab\" (atau sampai \"bidang tab\" lainnya ditemukan) akan dikelompokkan bersama-" +"sama menggunakan label bidang ini sebagai judul tab." + +#: fields/tab.php:144 +msgid "Placement" +msgstr "Penempatan" + +#: fields/tab.php:156 +msgid "End-point" +msgstr "End-point" + +#: fields/tab.php:157 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "Gunakan bidang ini sebagai end-point dan mulai grup baru dari tab" + +#: fields/taxonomy.php:730 +msgid "None" +msgstr "Tidak ada" + +#: fields/taxonomy.php:762 +msgid "Select the taxonomy to be displayed" +msgstr "Pilih taksonomi yang akan ditampilkan" + +#: fields/taxonomy.php:771 +msgid "Appearance" +msgstr "Tampilan" + +#: fields/taxonomy.php:772 +msgid "Select the appearance of this field" +msgstr "Pilih penampilan bidang ini" + +#: fields/taxonomy.php:777 +msgid "Multiple Values" +msgstr "Beberapa Nilai" + +#: fields/taxonomy.php:779 +msgid "Multi Select" +msgstr "Pilihan Multi" + +#: fields/taxonomy.php:781 +msgid "Single Value" +msgstr "Nilai Tunggal" + +#: fields/taxonomy.php:782 +msgid "Radio Buttons" +msgstr "Tombol Radio" + +#: fields/taxonomy.php:805 +msgid "Create Terms" +msgstr "Buat Ketentuan" + +#: fields/taxonomy.php:806 +msgid "Allow new terms to be created whilst editing" +msgstr "Izinkan ketentuan baru dibuat pengeditannya sementara" + +#: fields/taxonomy.php:819 +msgid "Save Terms" +msgstr "Simpan Ketentuan" + +#: fields/taxonomy.php:820 +msgid "Connect selected terms to the post" +msgstr "Hubungkan ketentuan yang dipilih ke post" + +#: fields/taxonomy.php:833 +msgid "Load Terms" +msgstr "Load Ketentuan" + +#: fields/taxonomy.php:834 +msgid "Load value from posts terms" +msgstr "Muat nilai dari ketentuan post" + +#: fields/taxonomy.php:852 +msgid "Term Object" +msgstr "Objek ketentuan" + +#: fields/taxonomy.php:853 +msgid "Term ID" +msgstr "ID Ketentuan" + +#: fields/taxonomy.php:912 +#, php-format +msgid "User unable to add new %s" +msgstr "Pengguna tidak dapat menambahkan %s" + +#: fields/taxonomy.php:925 +#, php-format +msgid "%s already exists" +msgstr "%s sudah ada" + +#: fields/taxonomy.php:966 +#, php-format +msgid "%s added" +msgstr "%s ditambahkan" + +#: fields/taxonomy.php:1011 +msgid "Add" +msgstr "Tambah" + +#: fields/text.php:36 +msgid "Text" +msgstr "Teks" + +#: fields/text.php:184 fields/textarea.php:163 +msgid "Character Limit" +msgstr "Batas Karakter" + +#: fields/text.php:185 fields/textarea.php:164 +msgid "Leave blank for no limit" +msgstr "Biarkan kosong untuk tidak terbatas" + +#: fields/textarea.php:36 +msgid "Text Area" +msgstr "Area Teks" + +#: fields/textarea.php:172 +msgid "Rows" +msgstr "Baris" + +#: fields/textarea.php:173 +msgid "Sets the textarea height" +msgstr "Atur tinggi area teks" + +#: fields/true_false.php:36 +msgid "True / False" +msgstr "Benar / Salah" + +#: fields/true_false.php:107 +msgid "eg. Show extra content" +msgstr "contoh. Tampilkan konten ekstra" + +#: fields/url.php:36 +msgid "Url" +msgstr "URL" + +#: fields/url.php:168 +msgid "Value must be a valid URL" +msgstr "Nilai harus URL yang valid" + +#: fields/user.php:437 +msgid "Filter by role" +msgstr "Saring berdasarkan peran" + +#: fields/user.php:445 +msgid "All user roles" +msgstr "Semua peran pengguna" + +#: fields/wysiwyg.php:37 +msgid "Wysiwyg Editor" +msgstr "WYSIWYG Editor" + +#: fields/wysiwyg.php:320 +msgid "Visual" +msgstr "Visual" + +#: fields/wysiwyg.php:321 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Teks" + +#: fields/wysiwyg.php:377 +msgid "Tabs" +msgstr "Tab" + +#: fields/wysiwyg.php:382 +msgid "Visual & Text" +msgstr "Visual & Teks" + +#: fields/wysiwyg.php:383 +msgid "Visual Only" +msgstr "Visual Saja" + +#: fields/wysiwyg.php:384 +msgid "Text Only" +msgstr "Teks saja" + +#: fields/wysiwyg.php:391 +msgid "Toolbar" +msgstr "Toolbar" + +#: fields/wysiwyg.php:401 +msgid "Show Media Upload Buttons?" +msgstr "Tampilkan Tombol Unggah Media?" + +#: forms/post.php:298 pro/admin/options-page.php:374 +msgid "Edit field group" +msgstr "Edit Grup Bidang" + +#: pro/acf-pro.php:24 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/acf-pro.php:191 +msgid "Flexible Content requires at least 1 layout" +msgstr "Konten fleksibel memerlukan setidaknya 1 layout" + +#: pro/admin/options-page.php:48 +msgid "Options Page" +msgstr "Opsi Laman" + +#: pro/admin/options-page.php:83 +msgid "No options pages exist" +msgstr "Tidak ada pilihan halaman yang ada" + +#: pro/admin/options-page.php:298 +msgid "Options Updated" +msgstr "Pilihan Diperbarui" + +#: pro/admin/options-page.php:304 +msgid "No Custom Field Groups found for this options page. Create a Custom Field Group" +msgstr "Tidak ada Grup Bidang Kustom ditemukan untuk halaman pilihan ini. Buat Grup Bidang Kustom" + +#: pro/admin/settings-updates.php:137 +msgid "Error. Could not connect to update server" +msgstr "Kesalahan. Tidak dapat terhubung ke server yang memperbarui" + +#: pro/admin/settings-updates.php:267 pro/admin/settings-updates.php:338 +msgid "Connection Error. Sorry, please try again" +msgstr "Error Koneksi. Maaf, silakan coba lagi" + +#: pro/admin/views/options-page.php:48 +msgid "Publish" +msgstr "Terbitkan" + +#: pro/admin/views/options-page.php:54 +msgid "Save Options" +msgstr "Simpan Pengaturan" + +#: pro/admin/views/settings-updates.php:11 +msgid "Deactivate License" +msgstr "Nonaktifkan Lisensi" + +#: pro/admin/views/settings-updates.php:11 +msgid "Activate License" +msgstr "Aktifkan Lisensi" + +#: pro/admin/views/settings-updates.php:21 +msgid "License" +msgstr "Lisensi" + +#: pro/admin/views/settings-updates.php:24 +msgid "To unlock updates, please enter your license key below. If you don't have a licence key, please see" +msgstr "" +"Untuk membuka update, masukkan kunci lisensi Anda di bawah ini. Jika Anda tidak memiliki kunci lisensi, silakan " +"lihat" + +#: pro/admin/views/settings-updates.php:24 +msgid "details & pricing" +msgstr "Rincian & harga" + +#: pro/admin/views/settings-updates.php:33 +msgid "License Key" +msgstr "Kunci lisensi" + +#: pro/admin/views/settings-updates.php:65 +msgid "Update Information" +msgstr "Informasi Pembaruan" + +#: pro/admin/views/settings-updates.php:72 +msgid "Current Version" +msgstr "Versi sekarang" + +#: pro/admin/views/settings-updates.php:80 +msgid "Latest Version" +msgstr "Versi terbaru" + +#: pro/admin/views/settings-updates.php:88 +msgid "Update Available" +msgstr "Pembaruan Tersedia" + +#: pro/admin/views/settings-updates.php:96 +msgid "Update Plugin" +msgstr "Perbarui Plugin" + +#: pro/admin/views/settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "Masukkan kunci lisensi Anda di atas untuk membuka pembaruan" + +#: pro/admin/views/settings-updates.php:104 +msgid "Check Again" +msgstr "Periksa lagi" + +#: pro/admin/views/settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "Pemberitahuan Upgrade" + +#: pro/api/api-options-page.php:22 pro/api/api-options-page.php:23 +msgid "Options" +msgstr "Pengaturan" + +#: pro/core/updates.php:198 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a " +"licence key, please see details & pricing" +msgstr "" +"Untuk mengaktifkan update, masukkan kunci lisensi Anda pada Laman pembaruan. Jika Anda tidak " +"memiliki kunci lisensi, silakan lihat rincian & harga" + +#: pro/fields/flexible-content.php:36 +msgid "Flexible Content" +msgstr "Konten Fleksibel" + +#: pro/fields/flexible-content.php:42 pro/fields/repeater.php:43 +msgid "Add Row" +msgstr "Tambah Baris" + +#: pro/fields/flexible-content.php:45 +msgid "layout" +msgstr "Layout" + +#: pro/fields/flexible-content.php:46 +msgid "layouts" +msgstr "layout" + +#: pro/fields/flexible-content.php:47 +msgid "remove {layout}?" +msgstr "singkirkan {layout}?" + +#: pro/fields/flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "Bidang ini membutuhkan setidaknya {min} {identifier}" + +#: pro/fields/flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "Bidang ini memiliki batas {max} {identifier}" + +#: pro/fields/flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Bidang ini membutuhkan setidaknya {min} {label} {identifier}" + +#: pro/fields/flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Maksimum {label} mencapai ({max} {identifier})" + +#: pro/fields/flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{tersedia} {label} {identifier} tersedia (max {max})" + +#: pro/fields/flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{diperlukan} {label} {identifier} diperlukan (min {min})" + +#: pro/fields/flexible-content.php:211 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Klik tombol\"%s\" dibawah untuk mulai membuat layout Anda" + +#: pro/fields/flexible-content.php:356 +msgid "Add layout" +msgstr "Tambah Layout" + +#: pro/fields/flexible-content.php:359 +msgid "Remove layout" +msgstr "Hapus layout" + +#: pro/fields/flexible-content.php:362 pro/fields/repeater.php:312 +msgid "Click to toggle" +msgstr "Klik untuk toggle" + +#: pro/fields/flexible-content.php:502 +msgid "Reorder Layout" +msgstr "Susun ulang Layout" + +#: pro/fields/flexible-content.php:502 +msgid "Reorder" +msgstr "Susun Ulang" + +#: pro/fields/flexible-content.php:503 +msgid "Delete Layout" +msgstr "Hapus Layout" + +#: pro/fields/flexible-content.php:504 +msgid "Duplicate Layout" +msgstr "Duplikat Layout" + +#: pro/fields/flexible-content.php:505 +msgid "Add New Layout" +msgstr "Tambah Layout Baru" + +#: pro/fields/flexible-content.php:559 pro/fields/repeater.php:474 +msgid "Table" +msgstr "Tabel" + +#: pro/fields/flexible-content.php:560 pro/fields/repeater.php:475 +msgid "Block" +msgstr "Blok" + +#: pro/fields/flexible-content.php:561 pro/fields/repeater.php:476 +msgid "Row" +msgstr "Baris" + +#: pro/fields/flexible-content.php:576 +msgid "Min" +msgstr "Min" + +#: pro/fields/flexible-content.php:589 +msgid "Max" +msgstr "Maks" + +#: pro/fields/flexible-content.php:617 pro/fields/repeater.php:483 +msgid "Button Label" +msgstr "Label tombol" + +#: pro/fields/flexible-content.php:626 +msgid "Minimum Layouts" +msgstr "Minimum Layouts" + +#: pro/fields/flexible-content.php:635 +msgid "Maximum Layouts" +msgstr "Maksimum Layout" + +#: pro/fields/gallery.php:36 +msgid "Gallery" +msgstr "Galeri" + +#: pro/fields/gallery.php:52 +msgid "Add Image to Gallery" +msgstr "Tambahkan Gambar ke Galeri" + +#: pro/fields/gallery.php:56 +msgid "Maximum selection reached" +msgstr "Batas pilihan maksimum" + +#: pro/fields/gallery.php:343 +msgid "Length" +msgstr "Panjang" + +#: pro/fields/gallery.php:363 +msgid "Remove" +msgstr "Singkirkan" + +#: pro/fields/gallery.php:543 +msgid "Add to gallery" +msgstr "Tambahkan ke galeri" + +#: pro/fields/gallery.php:547 +msgid "Bulk actions" +msgstr "Aksi besar" + +#: pro/fields/gallery.php:548 +msgid "Sort by date uploaded" +msgstr "Urutkan berdasarkan tanggal unggah" + +#: pro/fields/gallery.php:549 +msgid "Sort by date modified" +msgstr "Urutkan berdasarkan tanggal modifikasi" + +#: pro/fields/gallery.php:550 +msgid "Sort by title" +msgstr "Urutkan menurut judul" + +#: pro/fields/gallery.php:551 +msgid "Reverse current order" +msgstr "Agar arus balik" + +#: pro/fields/gallery.php:569 +msgid "Close" +msgstr "Tutup" + +#: pro/fields/gallery.php:627 +msgid "Minimum Selection" +msgstr "Seleksi Minimum" + +#: pro/fields/gallery.php:636 +msgid "Maximum Selection" +msgstr "Seleksi maksimum" + +#: pro/fields/repeater.php:36 +msgid "Repeater" +msgstr "Pengulang" + +#: pro/fields/repeater.php:47 +msgid "Minimum rows reached ({min} rows)" +msgstr "Baris minimal mencapai ({min} baris)" + +#: pro/fields/repeater.php:48 +msgid "Maximum rows reached ({max} rows)" +msgstr "Baris maksimum mencapai ({max} baris)" + +#: pro/fields/repeater.php:310 +msgid "Drag to reorder" +msgstr "Seret untuk menyusun ulang" + +#: pro/fields/repeater.php:357 +msgid "Add row" +msgstr "Tambah Baris" + +#: pro/fields/repeater.php:358 +msgid "Remove row" +msgstr "Hapus baris" + +#: pro/fields/repeater.php:406 +msgid "Sub Fields" +msgstr "Sub Bidang" + +#: pro/fields/repeater.php:436 +msgid "Collapsed" +msgstr "Disempitkan" + +#: pro/fields/repeater.php:437 +msgid "Select a sub field to show when row is collapsed" +msgstr "Pilih sub bidang untuk ditampilkan ketika baris disempitkan" + +#: pro/fields/repeater.php:447 +msgid "Minimum Rows" +msgstr "Minimum Baris" + +#: pro/fields/repeater.php:457 +msgid "Maximum Rows" +msgstr "Maksimum Baris" + +#. Plugin Name of the plugin/theme +msgid "Advanced Custom Fields Pro" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://www.advancedcustomfields.com/" +msgstr "" + +#. Description of the plugin/theme +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" + +#. Author of the plugin/theme +msgid "elliot condon" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-it_IT.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-it_IT.mo new file mode 100755 index 0000000000000000000000000000000000000000..37d5066386e96284a88f185cb6d4e02140ab8d2f GIT binary patch literal 51485 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\n" +"Language-Team: Elliot Condon \n" +"Language: it_IT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.1\n" +"X-Loco-Target-Locale: it_IT\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:81 +msgid "Advanced Custom Fields" +msgstr "Campi Personalizzati Avanzati" + +#: acf.php:388 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Field Group" + +#: acf.php:389 +msgid "Field Group" +msgstr "Field Group" + +#: acf.php:390 acf.php:422 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:551 +msgid "Add New" +msgstr "Aggiungi Nuovo" + +#: acf.php:391 +msgid "Add New Field Group" +msgstr "" +"Aggiungi Nuovo \n" +"Field Group" + +#: acf.php:392 +msgid "Edit Field Group" +msgstr "" +"Modifica \n" +"Field Group" + +#: acf.php:393 +msgid "New Field Group" +msgstr "" +"Nuovo \n" +"Field Group" + +#: acf.php:394 +msgid "View Field Group" +msgstr "" +"Visualizza \n" +"Field Group" + +#: acf.php:395 +msgid "Search Field Groups" +msgstr "" +"Cerca \n" +"Field Group" + +#: acf.php:396 +msgid "No Field Groups found" +msgstr "" +"Nessun \n" +"Field Group\n" +" Trovato" + +#: acf.php:397 +msgid "No Field Groups found in Trash" +msgstr "" +"Nessun \n" +"Field Group\n" +" trovato nel cestino" + +#: acf.php:420 includes/admin/admin-field-group.php:196 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Campi" + +#: acf.php:421 +msgid "Field" +msgstr "Campo" + +#: acf.php:423 +msgid "Add New Field" +msgstr "Aggiungi Nuovo Campo" + +#: acf.php:424 +msgid "Edit Field" +msgstr "Modifica Campo" + +#: acf.php:425 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Nuovo Campo" + +#: acf.php:426 +msgid "View Field" +msgstr "Visualizza Campo" + +#: acf.php:427 +msgid "Search Fields" +msgstr "Ricerca Campi" + +#: acf.php:428 +msgid "No Fields found" +msgstr "Nessun Campo trovato" + +#: acf.php:429 +msgid "No Fields found in Trash" +msgstr "Nessun Campo trovato nel cestino" + +#: acf.php:468 includes/admin/admin-field-group.php:377 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Inattivo" + +#: acf.php:473 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inattivo (%s)" +msgstr[1] "Inattivo (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "" +"Field Group\n" +" aggiornato." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "" +"Field Group\n" +" cancellato." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "" +"Field Group\n" +" pubblicato." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "" +"Field Group\n" +" salvato." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "" +"Field Group\n" +" inviato." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "" +"Field Group\n" +" previsto." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "" +"Bozza \n" +"Field Group\n" +" aggiornata." + +#: includes/admin/admin-field-group.php:154 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "" +"La stringa \"field_\" non può essere usata come inizio nel nome di un Campo" + +#: includes/admin/admin-field-group.php:155 +msgid "This field cannot be moved until its changes have been saved" +msgstr "" +"Questo Campo non può essere spostato fino a quando non saranno state salvate " +"le modifiche" + +#: includes/admin/admin-field-group.php:156 +msgid "Field group title is required" +msgstr "Il titolo del Field Group è richiesto" + +#: includes/admin/admin-field-group.php:157 +msgid "Move to trash. Are you sure?" +msgstr "Sposta nel cestino. Sei sicuro?" + +#: includes/admin/admin-field-group.php:158 +msgid "Move Custom Field" +msgstr "Sposta Campo Personalizzato" + +#: includes/admin/admin-field-group.php:159 +msgid "checked" +msgstr "selezionato" + +#: includes/admin/admin-field-group.php:160 +msgid "(no label)" +msgstr "(nessuna etichetta)" + +#: includes/admin/admin-field-group.php:161 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "copia" + +#: includes/admin/admin-field-group.php:162 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:139 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:4158 +msgid "or" +msgstr "o" + +#: includes/admin/admin-field-group.php:163 +msgid "Null" +msgstr "Nullo" + +#: includes/admin/admin-field-group.php:197 +msgid "Location" +msgstr "Posizione" + +#: includes/admin/admin-field-group.php:198 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Impostazioni" + +#: includes/admin/admin-field-group.php:347 +msgid "Field Keys" +msgstr "Field Key" + +#: includes/admin/admin-field-group.php:377 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Attivo" + +#: includes/admin/admin-field-group.php:753 +msgid "Move Complete." +msgstr "Spostamento Completato." + +#: includes/admin/admin-field-group.php:754 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "" +"Il Campo %s può essere trovato nel \n" +"Field Group\n" +" %s" + +#: includes/admin/admin-field-group.php:755 +msgid "Close Window" +msgstr "Chiudi Finestra" + +#: includes/admin/admin-field-group.php:796 +msgid "Please select the destination for this field" +msgstr "Per favore seleziona la destinazione per questo Campo" + +#: includes/admin/admin-field-group.php:803 +msgid "Move Field" +msgstr "Sposta Campo" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Attivo (%s)" +msgstr[1] "Attivo (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "" +"Field Group\n" +" duplicato. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s Field Group duplicato." +msgstr[1] "%s Field Group duplicati." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "" +"Field Group\n" +" sincronizzato. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s Field Group sincronizzato." +msgstr[1] "%s Field Group sincronizzati." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Sync disponibile" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:355 +msgid "Title" +msgstr "Titolo" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:382 +msgid "Description" +msgstr "Descrizione" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Stato" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "Personalizza WordPress con campi potenti, professionali e intuitivi." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Novità" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Guarda cosa c'è di nuovo nella versione %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Risorse" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Sito Web" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Documentazione" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Supporto" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "PRO" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Grazie per aver creato con ACF." + +#: includes/admin/admin-field-groups.php:667 +msgid "Duplicate this item" +msgstr "Duplica questo elemento" + +#: includes/admin/admin-field-groups.php:667 +#: includes/admin/admin-field-groups.php:683 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:550 +msgid "Duplicate" +msgstr "Duplica" + +#: includes/admin/admin-field-groups.php:700 +#: includes/fields/class-acf-field-google-map.php:113 +#: includes/fields/class-acf-field-relationship.php:657 +msgid "Search" +msgstr "Ricerca" + +#: includes/admin/admin-field-groups.php:759 +#, php-format +msgid "Select %s" +msgstr "Seleziona %s" + +#: includes/admin/admin-field-groups.php:767 +msgid "Synchronise field group" +msgstr "" +"Sincronizza \n" +"Field Group" + +#: includes/admin/admin-field-groups.php:767 +#: includes/admin/admin-field-groups.php:797 +msgid "Sync" +msgstr "Sync" + +#: includes/admin/admin-field-groups.php:779 +msgid "Apply" +msgstr "Applica" + +#: includes/admin/admin-field-groups.php:797 +msgid "Bulk Actions" +msgstr "Azioni di massa" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Strumenti" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Campi Personalizzati" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Aggiorna Database" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Rivedi siti e aggiornamenti" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "Errore di convalida richiesta" + +#: includes/admin/install.php:210 includes/admin/views/install.php:104 +msgid "No updates available." +msgstr "Nessun aggiornamento disponibile." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Add-ons" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Errore. Impossibile caricare l'elenco Add-ons" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informazioni" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Cosa c'è di nuovo" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "" +"Esporta \n" +"Field Group" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "Genera PHP" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "" +"Nessun \n" +"Field Group\n" +" selezionato" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Esportato 1 gruppo di campi." +msgstr[1] "Esportati %s gruppi di campi." + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "" +"Cerca \n" +"Field Group" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Selezionare i \n" +"Field Group\n" +" che si desidera esportare e quindi selezionare il metodo di esportazione. " +"Utilizzare il pulsante di download per esportare in un file .json che sarà " +"poi possibile importare in un'altra installazione ACF. Utilizzare il " +"pulsante generare per esportare il codice PHP che è possibile inserire nel " +"vostro tema." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Esporta file" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Il codice seguente può essere utilizzato per registrare una versione locale " +"del Field Group selezionato(i). Un Field Group locale può fornire numerosi " +"vantaggi come ad esempio i tempi di caricamento più veloci, controllo di " +"versione e campi / impostazioni dinamiche. Semplicemente copia e incolla il " +"seguente codice nel file functions.php del vostro tema." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Copia negli appunti" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Copiato" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "" +"Importa \n" +"Field Group" + +#: includes/admin/tools/class-acf-admin-tool-import.php:61 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Selezionare il file JSON di Advanced Custom Fields che si desidera " +"importare. Quando si fa clic sul pulsante di importazione di seguito, ACF " +"importerà i \n" +"Field Group\n" +"." + +#: includes/admin/tools/class-acf-admin-tool-import.php:66 +#: includes/fields/class-acf-field-file.php:37 +msgid "Select File" +msgstr "Seleziona File" + +#: includes/admin/tools/class-acf-admin-tool-import.php:76 +msgid "Import File" +msgstr "Importa file" + +#: includes/admin/tools/class-acf-admin-tool-import.php:100 +#: includes/fields/class-acf-field-file.php:154 +msgid "No file selected" +msgstr "Nessun file selezionato" + +#: includes/admin/tools/class-acf-admin-tool-import.php:113 +msgid "Error uploading file. Please try again" +msgstr "Errore caricamento file. Per favore riprova" + +#: includes/admin/tools/class-acf-admin-tool-import.php:122 +msgid "Incorrect file type" +msgstr "Tipo file non corretto" + +#: includes/admin/tools/class-acf-admin-tool-import.php:139 +msgid "Import file empty" +msgstr "File importato vuoto" + +#: includes/admin/tools/class-acf-admin-tool-import.php:247 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Importato 1 field group" +msgstr[1] "Importati %s field groups" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "Condizione Logica" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Mostra questo Campo se" + +#: includes/admin/views/field-group-field-conditional-logic.php:126 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "e" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Aggiungi gruppo di regole" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:403 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Drag to reorder" +msgstr "Trascinare per riordinare" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Modifica Campo" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:136 +#: includes/fields/class-acf-field-image.php:122 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:342 +msgid "Edit" +msgstr "Modifica" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Duplica Campo" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Sposta" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Sposta" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Cancella Campo" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:549 +msgid "Delete" +msgstr "Cancella" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Etichetta Campo" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Questo è il nome che apparirà sulla pagina Modifica" + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Nome Campo" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Singola parola, nessun spazio. Sottolineatura e trattini consentiti" + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Tipo di Campo" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Istruzioni" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "" +"Istruzioni per gli autori. Mostrato al momento della presentazione dei dati" + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Richiesto?" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Attributi Contenitore" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "larghezza" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "classe" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Chiudi Campo" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Ordinamento" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:418 +#: pro/fields/class-acf-field-flexible-content.php:576 +msgid "Label" +msgstr "Etichetta" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:964 +#: pro/fields/class-acf-field-flexible-content.php:589 +msgid "Name" +msgstr "Nome" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Chiave" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Tipo" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Nessun Campo. Clicca il bottone + Aggiungi Campo per creare " +"il primo campo." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Aggiungi Campo" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regole" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Creare un insieme di regole per determinare quale schermate in modifica " +"dovranno utilizzare i campi personalizzati avanzati" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stile" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standard (metabox WP)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Senza giunte (senza metabox)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Posizione" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Alto (dopo il titolo)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normale (dopo contenuto)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "A lato" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Posizionamento etichette" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Allineamento in alto" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Allineamento a sinistra" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Posizionamento Istruzione" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Sotto etichette" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Sotto campi" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "N. Ordinamento" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "" +"Field groups come inizialmente viene visualizzato in un ordine inferiore" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Mostrato in lista field group" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Nascondi nello schermo" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Seleziona gli elementi per nasconderli dalla pagina Modifica." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Se più gruppi di campi appaiono su una schermata di modifica, verranno usate " +"le opzioni del primo Field Group usato (quello con il numero d'ordine più " +"basso)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Permalink" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Editor Contenuto" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Estratto" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "Discussione" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Commenti" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Revisioni" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Slug" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Autore" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Formato" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Attributi di Pagina" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:671 +msgid "Featured Image" +msgstr "Immagine di presentazione" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Categorie" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Tag" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Invia Trackbacks" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "" +"Mostra questo \n" +"Field Group\n" +" se" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Aggiornamento siti" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "" +"Aggiornamento Database \n" +"Advanced Custom Fields" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"I seguenti siti hanno necessità di un aggiornamento del DB. Controlla quelli " +"che vuoi aggiornare e clicca %s." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Sito" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Il sito necessita di un aggiornamento Database da %s a %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Il sito è aggiornato" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Aggiornamento Database completato. Ritorna alla Network " +"Dashboard" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Si raccomanda vivamente di eseguire il backup del database prima di " +"procedere. Sei sicuro che si desidera eseguire il programma di aggiornamento " +"adesso?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Aggiornamento completato" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Aggiornamento dati alla versione %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Ripetitore" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Contenuto Flessibile" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galleria" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Pagina Opzioni" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Aggiornamento Database richiesto" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Grazie per aver aggiornato a %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Prima di iniziare ad utilizzare queste nuove fantastiche funzionalità, " +"aggiorna il tuo Database alla versione più attuale." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"Si prega di assicurarsi che anche i componenti premium (%s) siano prima " +"stati aggiornati all'ultima versione." + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Lettura attività di aggiornamento ..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" +"Aggiornamento del database completato. Guarda le novità" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Scarica & Installa" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Installato" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Benvenuto in Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Grazie per l'aggiornamento! ACF %s è più grande e migliore che mai. Speriamo " +"che vi piaccia." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "Campi Personalizzati come non li avete mai visti" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Migliorata Usabilità" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Inclusa la famosa biblioteca Select2, che ha migliorato sia l'usabilità, che " +"la velocità di Campi come Post, Link, Tassonomie e Select." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Miglioramento del Design" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Molti Campi hanno subito un aggiornamento visivo per rendere ACF un aspetto " +"migliore che mai! Notevoli cambiamenti li trovate nei Campi Gallery, " +"Relazioni e oEmbed (nuovo)!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Miglioramento dei dati" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Ridisegnare l'architettura dei dati ha permesso ai Sotto-Campi di vivere in " +"modo indipendente dai loro Genitori. Ciò consente di trascinare e rilasciare " +"i Campi dentro e fuori i Campi Genitore!" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Ciao, ciao Add-ons. Benvenuto PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "Introduzione ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "Stiamo cambiando in modo eccitante le funzionalità Premium!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Parallelamente ACF5 è la versione tutta nuova di ACF5 PRO! Questa versione PRO include tutti e 4 i componenti aggiuntivi premium " +"(Repeater, Gallery, Flexible Content e Pagina Opzioni) e con le licenze " +"personali e di sviluppo disponibili, funzionalità premium è più conveniente " +"che mai!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Potenti funzionalità" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO contiene caratteristiche impressionanti come i Campi Repeater, " +"Flexible Layout, Gallery e la possibilità di creare Options Page (pagine " +"opzioni di amministrazione) personalizzabili!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Scopri di più sulle funzionalità di ACF PRO." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Aggiornamento facile" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"Per rendere più semplice gli aggiornamenti, \n" +"accedi al tuo account e richiedi una copia gratuita di " +"ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Abbiamo inoltre scritto una guida all'aggiornamento per " +"rispondere alle vostre richieste, ma se ne avete di nuove, contattate il " +"nostro help desk" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Sotto il cofano" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Impostazioni dei Campi più intelligenti" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF ora salva le impostazioni dei Campi come oggetti Post individuali" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Più AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" +"Altri campi utilizzano la ricerca di AJAX per velocizzare il caricamento " +"della pagina" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "JSON locale" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "" +"Nuovo esportazione automatica di funzionalità JSON migliora la velocità" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Migliore versione di controllo" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" +"Nuova esportazione automatica di funzione JSON consente impostazioni dei " +"campi da versione controllati" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "XML scambiato per JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Importa / Esporta ora utilizza JSON a favore di XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Nuovi Forme" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"I campi possono essere mappati con i commenti, widget e tutte le forme degli " +"utenti!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "È stato aggiunto un nuovo campo per incorporare contenuti" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Nuova Galleria" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Il campo galleria ha subito un lifting tanto necessario" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Nuove Impostazioni" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Sono state aggiunte impostazioni di gruppo sul Campo per l'inserimento " +"dell'etichetta e il posizionamento di istruzioni" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Forme Anteriori migliori" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() può ora creare un nuovo post di presentazione" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Validazione Migliore" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "" +"Validazione del form ora avviene tramite PHP + AJAX in favore del solo JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Campo Relazione" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Nuove Impostazione Campo Relazione per i 'Filtri' (Ricerca, Tipo di Post, " +"Tassonomia)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Spostamento Campi" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"La nuova funzionalità di Field Group consente di spostare un campo tra i " +"gruppi e genitori" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Link Pagina" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Nuovo gruppo archivi in materia di selezione page_link" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Migliori Pagine Opzioni" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Nuove funzioni per la Pagina Opzioni consentono la creazione di pagine menu " +"genitore e figlio" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Pensiamo che amerete i cambiamenti in %s." + +#: includes/api/api-helpers.php:1039 +msgid "Thumbnail" +msgstr "Thumbnail" + +#: includes/api/api-helpers.php:1040 +msgid "Medium" +msgstr "Medio" + +#: includes/api/api-helpers.php:1041 +msgid "Large" +msgstr "Grande" + +#: includes/api/api-helpers.php:1090 +msgid "Full Size" +msgstr "Dimensione piena" + +#: includes/api/api-helpers.php:1431 includes/api/api-helpers.php:2004 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(nessun titolo)" + +#: includes/api/api-helpers.php:4079 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "La larghezza dell'immagine deve essere di almeno %dpx." + +#: includes/api/api-helpers.php:4084 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "La larghezza dell'immagine non deve superare i %dpx." + +#: includes/api/api-helpers.php:4100 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "L'altezza dell'immagine deve essere di almeno %dpx." + +#: includes/api/api-helpers.php:4105 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "L'altezza dell'immagine non deve superare i %dpx." + +#: includes/api/api-helpers.php:4123 +#, php-format +msgid "File size must be at least %s." +msgstr "La dimensione massima deve essere di almeno %s." + +#: includes/api/api-helpers.php:4128 +#, php-format +msgid "File size must must not exceed %s." +msgstr "La dimensione massima non deve superare i %s." + +#: includes/api/api-helpers.php:4162 +#, php-format +msgid "File type must be %s." +msgstr "La tipologia del File deve essere %s." + +#: includes/assets.php:164 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Le modifiche effettuate verranno cancellate se si esce da questa pagina" + +#: includes/assets.php:167 includes/fields/class-acf-field-select.php:257 +msgctxt "verb" +msgid "Select" +msgstr "Seleziona" + +#: includes/assets.php:168 +msgctxt "verb" +msgid "Edit" +msgstr "Modifica" + +#: includes/assets.php:169 +msgctxt "verb" +msgid "Update" +msgstr "Aggiorna" + +#: includes/assets.php:170 pro/fields/class-acf-field-gallery.php:44 +msgid "Uploaded to this post" +msgstr "Caricato in questo Post" + +#: includes/assets.php:171 +msgid "Expand Details" +msgstr "Espandi Dettagli" + +#: includes/assets.php:172 +msgid "Collapse Details" +msgstr "Chiudi Dettagli" + +#: includes/assets.php:173 +msgid "Restricted" +msgstr "Limitato" + +#: includes/assets.php:174 +msgid "All images" +msgstr "Tutte le immagini" + +#: includes/assets.php:177 +msgid "Validation successful" +msgstr "Validazione avvenuta con successo" + +#: includes/assets.php:178 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Validazione fallita" + +#: includes/assets.php:179 +msgid "1 field requires attention" +msgstr "1 Campo necessita di attenzioni" + +#: includes/assets.php:180 +#, php-format +msgid "%d fields require attention" +msgstr "%d Campi necessitano di attenzioni" + +#: includes/assets.php:183 +msgid "Are you sure?" +msgstr "Sei sicuro?" + +#: includes/assets.php:184 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Si" + +#: includes/assets.php:185 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "No" + +#: includes/assets.php:186 includes/fields/class-acf-field-file.php:138 +#: includes/fields/class-acf-field-image.php:124 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:343 +#: pro/fields/class-acf-field-gallery.php:531 +msgid "Remove" +msgstr "Rimuovi" + +#: includes/assets.php:187 +msgid "Cancel" +msgstr "Annulla" + +#: includes/assets.php:190 +msgid "Has any value" +msgstr "Ha qualunque valore" + +#: includes/assets.php:191 +msgid "Has no value" +msgstr "Non ha un valore" + +#: includes/assets.php:192 +msgid "Value is equal to" +msgstr "Valore è uguale a" + +#: includes/assets.php:193 +msgid "Value is not equal to" +msgstr "Valore non è uguale a" + +#: includes/assets.php:194 +msgid "Value matches pattern" +msgstr "Valore corrisponde a modello" + +#: includes/assets.php:195 +msgid "Value contains" +msgstr "Valore contiene" + +#: includes/assets.php:196 +msgid "Value is greater than" +msgstr "Valore è maggiore di" + +#: includes/assets.php:197 +msgid "Value is less than" +msgstr "Valore è meno di" + +#: includes/assets.php:198 +msgid "Selection is greater than" +msgstr "Selezione è maggiore di" + +#: includes/assets.php:199 +msgid "Selection is less than" +msgstr "Selezione è meno di" + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Base" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Contenuto" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Scegli" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Relazionale" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 +#: includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:546 +#: pro/fields/class-acf-field-flexible-content.php:595 +#: pro/fields/class-acf-field-repeater.php:442 +msgid "Layout" +msgstr "Layout" + +#: includes/fields.php:326 +msgid "Field type does not exist" +msgstr "Il tipo di Campo non esiste" + +#: includes/fields.php:326 +msgid "Unknown" +msgstr "Sconosciuto" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Fisarmonica" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Apri" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Mostra questa fisarmonica aperta sul caricamento della pagina." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Espansione multipla" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Permetti a questa fisarmonica di aprirsi senza chiudere gli altri." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Endpoint" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Definisce un endpoint per la precedente fisarmonica che deve fermarsi. " +"Questa fisarmonica non sarà visibile." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Gruppo Bottoni" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:349 +msgid "Choices" +msgstr "Scelte" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:350 +msgid "Enter each choice on a new line." +msgstr "Immettere ogni scelta su una nuova linea." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:350 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Per un maggiore controllo, è possibile specificare sia un valore ed " +"etichetta in questo modo:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:350 +msgid "red : Red" +msgstr "rosso : Rosso" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:367 +#: includes/fields/class-acf-field-taxonomy.php:793 +#: includes/fields/class-acf-field-user.php:409 +msgid "Allow Null?" +msgstr "Consenti Nullo?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:146 +#: includes/fields/class-acf-field-select.php:358 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:410 +msgid "Default Value" +msgstr "Valore di default" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:147 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Appears when creating a new post" +msgstr "Appare quando si crea un nuovo post" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Orizzontale" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Verticale" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:199 +#: includes/fields/class-acf-field-image.php:188 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:833 +msgid "Return Value" +msgstr "Valore di ritorno" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:200 +#: includes/fields/class-acf-field-image.php:189 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Specificare il valore restituito sul front-end" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:417 +msgid "Value" +msgstr "Valore" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:419 +msgid "Both (Array)" +msgstr "Entrambi (Array)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Checkbox" +msgstr "Checkbox" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Seleziona tutti" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Aggiungi nuova scelta" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Consenti Personalizzato" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Consenti valori 'personalizzati' da aggiungere" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Salva Personalizzato" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Salvare i valori 'personalizzati' per le scelte del campo" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:359 +msgid "Enter each default value on a new line" +msgstr "Immettere ogni valore di default su una nuova linea" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Toggle" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Inserisci un Checkbox extra per poter selezionare tutte le opzioni" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Selettore colore" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Chiaro" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Default" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Seleziona colore" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Colore Corrente" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Selettore data" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Fatto" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Oggi" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Prossimo" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Precedente" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Sett" + +#: includes/fields/class-acf-field-date_picker.php:180 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Formato di visualizzazione" + +#: includes/fields/class-acf-field-date_picker.php:181 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Il formato visualizzato durante la modifica di un post" + +#: includes/fields/class-acf-field-date_picker.php:189 +#: includes/fields/class-acf-field-date_picker.php:220 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Personalizzato:" + +#: includes/fields/class-acf-field-date_picker.php:199 +msgid "Save Format" +msgstr "Salva Formato" + +#: includes/fields/class-acf-field-date_picker.php:200 +msgid "The format used when saving a value" +msgstr "Il formato utilizzato durante il salvataggio di un valore" + +#: includes/fields/class-acf-field-date_picker.php:210 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:698 +#: includes/fields/class-acf-field-select.php:412 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:428 +msgid "Return Format" +msgstr "Formato di ritorno" + +#: includes/fields/class-acf-field-date_picker.php:211 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Il formato restituito tramite funzioni template" + +#: includes/fields/class-acf-field-date_picker.php:229 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "La settimana inizia il" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Selettore data/ora" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Scegli tempo" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Orario" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Ore" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minuto" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Secondo" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Millisecondo" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Microsecondo" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Fuso orario" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Ora" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Fatto" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Seleziona" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "Email" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Testo segnaposto" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Appare nella finestra di input" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:185 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Anteponi" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:186 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Appare prima dell'input" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:194 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Accodare" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:195 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Accodare dopo l'input" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "File" + +#: includes/fields/class-acf-field-file.php:38 +msgid "Edit File" +msgstr "Modifica File" + +#: includes/fields/class-acf-field-file.php:39 +msgid "Update File" +msgstr "Aggiorna File" + +#: includes/fields/class-acf-field-file.php:125 +msgid "File name" +msgstr "Nome file" + +#: includes/fields/class-acf-field-file.php:129 +#: includes/fields/class-acf-field-file.php:232 +#: includes/fields/class-acf-field-file.php:243 +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: pro/fields/class-acf-field-gallery.php:690 +#: pro/fields/class-acf-field-gallery.php:719 +msgid "File size" +msgstr "Dimensione File" + +#: includes/fields/class-acf-field-file.php:154 +msgid "Add File" +msgstr "Aggiungi file" + +#: includes/fields/class-acf-field-file.php:205 +msgid "File Array" +msgstr "File Array" + +#: includes/fields/class-acf-field-file.php:206 +msgid "File URL" +msgstr "File URL" + +#: includes/fields/class-acf-field-file.php:207 +msgid "File ID" +msgstr "File ID" + +#: includes/fields/class-acf-field-file.php:214 +#: includes/fields/class-acf-field-image.php:213 +#: pro/fields/class-acf-field-gallery.php:655 +msgid "Library" +msgstr "Libreria" + +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:214 +#: pro/fields/class-acf-field-gallery.php:656 +msgid "Limit the media library choice" +msgstr "Limitare la scelta alla libreria multimediale" + +#: includes/fields/class-acf-field-file.php:220 +#: includes/fields/class-acf-field-image.php:219 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:661 +msgid "All" +msgstr "Tutti" + +#: includes/fields/class-acf-field-file.php:221 +#: includes/fields/class-acf-field-image.php:220 +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Uploaded to post" +msgstr "Caricato al post" + +#: includes/fields/class-acf-field-file.php:228 +#: includes/fields/class-acf-field-image.php:227 +#: pro/fields/class-acf-field-gallery.php:669 +msgid "Minimum" +msgstr "Minimo" + +#: includes/fields/class-acf-field-file.php:229 +#: includes/fields/class-acf-field-file.php:240 +msgid "Restrict which files can be uploaded" +msgstr "Limita i tipi di File che possono essere caricati" + +#: includes/fields/class-acf-field-file.php:239 +#: includes/fields/class-acf-field-image.php:256 +#: pro/fields/class-acf-field-gallery.php:698 +msgid "Maximum" +msgstr "Massimo" + +#: includes/fields/class-acf-field-file.php:250 +#: includes/fields/class-acf-field-image.php:285 +#: pro/fields/class-acf-field-gallery.php:727 +msgid "Allowed file types" +msgstr "Tipologie File permesse" + +#: includes/fields/class-acf-field-file.php:251 +#: includes/fields/class-acf-field-image.php:286 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "Lista separata da virgole. Lascia bianco per tutti i tipi" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google Map" + +#: includes/fields/class-acf-field-google-map.php:43 +msgid "Sorry, this browser does not support geolocation" +msgstr "Spiacente, questo browser non supporta la geolocalizzazione" + +#: includes/fields/class-acf-field-google-map.php:114 +msgid "Clear location" +msgstr "Pulisci posizione" + +#: includes/fields/class-acf-field-google-map.php:115 +msgid "Find current location" +msgstr "Trova posizione corrente" + +#: includes/fields/class-acf-field-google-map.php:118 +msgid "Search for address..." +msgstr "Cerca per indirizzo..." + +#: includes/fields/class-acf-field-google-map.php:148 +#: includes/fields/class-acf-field-google-map.php:159 +msgid "Center" +msgstr "Centro" + +#: includes/fields/class-acf-field-google-map.php:149 +#: includes/fields/class-acf-field-google-map.php:160 +msgid "Center the initial map" +msgstr "Centrare la mappa iniziale" + +#: includes/fields/class-acf-field-google-map.php:171 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:172 +msgid "Set the initial zoom level" +msgstr "Imposta il livello di zoom iniziale" + +#: includes/fields/class-acf-field-google-map.php:181 +#: includes/fields/class-acf-field-image.php:239 +#: includes/fields/class-acf-field-image.php:268 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:681 +#: pro/fields/class-acf-field-gallery.php:710 +msgid "Height" +msgstr "Altezza" + +#: includes/fields/class-acf-field-google-map.php:182 +msgid "Customise the map height" +msgstr "Personalizza l'altezza della mappa iniziale" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Gruppo" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:381 +msgid "Sub Fields" +msgstr "Campi Sub" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Specificare lo stile utilizzato per il rendering dei campi selezionati" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:606 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Block" +msgstr "Blocco" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:605 +#: pro/fields/class-acf-field-repeater.php:449 +msgid "Table" +msgstr "Tabella" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:607 +#: pro/fields/class-acf-field-repeater.php:451 +msgid "Row" +msgstr "Riga" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Immagine" + +#: includes/fields/class-acf-field-image.php:42 +msgid "Select Image" +msgstr "Seleziona Immagine" + +#: includes/fields/class-acf-field-image.php:43 +#: pro/fields/class-acf-field-gallery.php:42 +msgid "Edit Image" +msgstr "Modifica Immagine" + +#: includes/fields/class-acf-field-image.php:44 +#: pro/fields/class-acf-field-gallery.php:43 +msgid "Update Image" +msgstr "Aggiorna Immagine" + +#: includes/fields/class-acf-field-image.php:140 +msgid "No image selected" +msgstr "Nessun immagine selezionata" + +#: includes/fields/class-acf-field-image.php:140 +msgid "Add Image" +msgstr "Aggiungi Immagine" + +#: includes/fields/class-acf-field-image.php:194 +msgid "Image Array" +msgstr "Array Immagine" + +#: includes/fields/class-acf-field-image.php:195 +msgid "Image URL" +msgstr "URL Immagine" + +#: includes/fields/class-acf-field-image.php:196 +msgid "Image ID" +msgstr "ID Immagine" + +#: includes/fields/class-acf-field-image.php:203 +msgid "Preview Size" +msgstr "Dimensione Anteprima" + +#: includes/fields/class-acf-field-image.php:204 +msgid "Shown when entering data" +msgstr "Mostrato durante l'immissione dei dati" + +#: includes/fields/class-acf-field-image.php:228 +#: includes/fields/class-acf-field-image.php:257 +#: pro/fields/class-acf-field-gallery.php:670 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Restrict which images can be uploaded" +msgstr "Limita i tipi di immagine che possono essere caricati" + +#: includes/fields/class-acf-field-image.php:231 +#: includes/fields/class-acf-field-image.php:260 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:673 +#: pro/fields/class-acf-field-gallery.php:702 +msgid "Width" +msgstr "Larghezza" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Link" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Seleziona Link" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Apri in una nuova scheda/finestra" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Link Array" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "Link URL" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Messaggio" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Nuove Linee" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Controlla come le nuove linee sono renderizzate" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Aggiungi automaticamente paragrafi" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Aggiungi automaticamente <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Nessuna formattazione" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Escape HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Visualizza HTML come testo" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Numero" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:155 +msgid "Minimum Value" +msgstr "Valore Minimo" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:165 +msgid "Maximum Value" +msgstr "Valore Massimo" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:175 +msgid "Step Size" +msgstr "Step Dimensione" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Il valore deve essere un numero" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Il valore deve essere uguale o superiore a %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Il valore deve essere uguale o inferiore a %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "Inserisci URL" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Dimensione Embed" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archivi" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:986 +msgid "Parent" +msgstr "Genitore" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:624 +msgid "Filter by Post Type" +msgstr "Filtra per tipo di Post" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:632 +msgid "All post types" +msgstr "Tutti i tipi di post" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:638 +msgid "Filter by Taxonomy" +msgstr "Fitra per tassonomia" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:646 +msgid "All taxonomies" +msgstr "Tutte le Tassonomie" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Consentire URL degli Archivi" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-user.php:419 +msgid "Select multiple values?" +msgstr "Selezionare più valori?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Password" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:703 +msgid "Post Object" +msgstr "Oggetto Post" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Post ID" +msgstr "ID Post" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Bottone Radio" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Altro" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Aggiungi scelta 'altro' per consentire valori personalizzati" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Salva Altro" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Salvare i valori 'altri' alle scelte di campo" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Intervallo" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Relazioni" + +#: includes/fields/class-acf-field-relationship.php:40 +msgid "Maximum values reached ( {max} values )" +msgstr "Valori massimi raggiunti ( valori {max} )" + +#: includes/fields/class-acf-field-relationship.php:41 +msgid "Loading" +msgstr "Caricamento" + +#: includes/fields/class-acf-field-relationship.php:42 +msgid "No matches found" +msgstr "Nessun risultato" + +#: includes/fields/class-acf-field-relationship.php:424 +msgid "Select post type" +msgstr "Seleziona Post Type" + +#: includes/fields/class-acf-field-relationship.php:450 +msgid "Select taxonomy" +msgstr "Seleziona Tassonomia" + +#: includes/fields/class-acf-field-relationship.php:540 +msgid "Search..." +msgstr "Ricerca ..." + +#: includes/fields/class-acf-field-relationship.php:652 +msgid "Filters" +msgstr "Filtri" + +#: includes/fields/class-acf-field-relationship.php:658 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Tipo Post" + +#: includes/fields/class-acf-field-relationship.php:659 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:763 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Tassonomie" + +#: includes/fields/class-acf-field-relationship.php:666 +msgid "Elements" +msgstr "Elementi" + +#: includes/fields/class-acf-field-relationship.php:667 +msgid "Selected elements will be displayed in each result" +msgstr "Gli elementi selezionati verranno visualizzati in ogni risultato" + +#: includes/fields/class-acf-field-relationship.php:678 +msgid "Minimum posts" +msgstr "Post minimi" + +#: includes/fields/class-acf-field-relationship.php:687 +msgid "Maximum posts" +msgstr "Post massimi" + +#: includes/fields/class-acf-field-relationship.php:791 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s richiede la selezione di almeno %s" +msgstr[1] "%s richiede le selezioni di almeno %s" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:785 +msgctxt "noun" +msgid "Select" +msgstr "Seleziona" + +#: includes/fields/class-acf-field-select.php:40 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Un risultato disponibile, premi invio per selezionarlo." + +#: includes/fields/class-acf-field-select.php:41 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d risultati disponibili, usa i tasti freccia su e giù per scorrere." + +#: includes/fields/class-acf-field-select.php:42 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Nessun riscontro trovato" + +#: includes/fields/class-acf-field-select.php:43 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Per favore inserire 1 o più caratteri" + +#: includes/fields/class-acf-field-select.php:44 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Inserisci %d o più caratteri" + +#: includes/fields/class-acf-field-select.php:45 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Per favore cancella 1 carattere" + +#: includes/fields/class-acf-field-select.php:46 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Cancellare %d caratteri" + +#: includes/fields/class-acf-field-select.php:47 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Puoi selezionare solo 1 elemento" + +#: includes/fields/class-acf-field-select.php:48 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "È possibile selezionare solo %d elementi" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Caricamento altri risultati…" + +#: includes/fields/class-acf-field-select.php:50 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Cercando…" + +#: includes/fields/class-acf-field-select.php:51 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Caricamento fallito" + +#: includes/fields/class-acf-field-select.php:387 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "UI stilizzata" + +#: includes/fields/class-acf-field-select.php:397 +msgid "Use AJAX to lazy load choices?" +msgstr "Usa AJAX per le scelte di carico lazy?" + +#: includes/fields/class-acf-field-select.php:413 +msgid "Specify the value returned" +msgstr "Specificare il valore restituito" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Separatore" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Scheda" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Posizione" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Definire un endpoint per le schede precedenti da interrompere. Questo " +"avvierà un nuovo gruppo di schede." + +#: includes/fields/class-acf-field-taxonomy.php:713 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Nessun %s" + +#: includes/fields/class-acf-field-taxonomy.php:732 +msgid "None" +msgstr "Nessuno" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Select the taxonomy to be displayed" +msgstr "Seleziona la Tassonomia da mostrare" + +#: includes/fields/class-acf-field-taxonomy.php:773 +msgid "Appearance" +msgstr "Aspetto" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Select the appearance of this field" +msgstr "Seleziona l'aspetto per questo Campo" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Multiple Values" +msgstr "Valori Multipli" + +#: includes/fields/class-acf-field-taxonomy.php:781 +msgid "Multi Select" +msgstr "Selezione Multipla" + +#: includes/fields/class-acf-field-taxonomy.php:783 +msgid "Single Value" +msgstr "Valore Singolo" + +#: includes/fields/class-acf-field-taxonomy.php:784 +msgid "Radio Buttons" +msgstr "Bottoni Radio" + +#: includes/fields/class-acf-field-taxonomy.php:803 +msgid "Create Terms" +msgstr "Crea Termini" + +#: includes/fields/class-acf-field-taxonomy.php:804 +msgid "Allow new terms to be created whilst editing" +msgstr "Abilita la creazione di nuovi Termini" + +#: includes/fields/class-acf-field-taxonomy.php:813 +msgid "Save Terms" +msgstr "Salva Termini" + +#: includes/fields/class-acf-field-taxonomy.php:814 +msgid "Connect selected terms to the post" +msgstr "Collega i Termini selezionati al Post" + +#: includes/fields/class-acf-field-taxonomy.php:823 +msgid "Load Terms" +msgstr "Carica Termini" + +#: includes/fields/class-acf-field-taxonomy.php:824 +msgid "Load value from posts terms" +msgstr "Carica valori dai Termini del Post" + +#: includes/fields/class-acf-field-taxonomy.php:838 +msgid "Term Object" +msgstr "Oggetto Termine" + +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Term ID" +msgstr "ID Termine" + +#: includes/fields/class-acf-field-taxonomy.php:898 +msgid "Error." +msgstr "Errore." + +#: includes/fields/class-acf-field-taxonomy.php:898 +#, php-format +msgid "User unable to add new %s" +msgstr "Utente non abilitato ad aggiungere %s" + +#: includes/fields/class-acf-field-taxonomy.php:911 +#, php-format +msgid "%s already exists" +msgstr "%s esiste già" + +#: includes/fields/class-acf-field-taxonomy.php:952 +#, php-format +msgid "%s added" +msgstr "%s aggiunto" + +#: includes/fields/class-acf-field-taxonomy.php:998 +msgid "Add" +msgstr "Aggiungi" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Testo" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Limite Carattere" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Lasciare vuoto per nessun limite" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Area di Testo" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Righe" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Imposta le righe dell'area di testo" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Selettore di tempo" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Vero / Falso" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Visualizza il testo a fianco alla casella di controllo" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Testo Attivo" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Testo visualizzato quando è attivo" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Testo Disattivo" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Testo mostrato quando inattivo" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "Url" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Il valore deve essere una URL valida" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Utente" + +#: includes/fields/class-acf-field-user.php:394 +msgid "Filter by role" +msgstr "Filtra per ruolo" + +#: includes/fields/class-acf-field-user.php:402 +msgid "All user roles" +msgstr "Tutti i ruoli utente" + +#: includes/fields/class-acf-field-user.php:433 +msgid "User Array" +msgstr "Array utente" + +#: includes/fields/class-acf-field-user.php:434 +msgid "User Object" +msgstr "Oggetto utente" + +#: includes/fields/class-acf-field-user.php:435 +msgid "User ID" +msgstr "ID Utente" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Editor Wysiwyg" + +#: includes/fields/class-acf-field-wysiwyg.php:359 +msgid "Visual" +msgstr "Visuale" + +#: includes/fields/class-acf-field-wysiwyg.php:360 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Testo" + +#: includes/fields/class-acf-field-wysiwyg.php:366 +msgid "Click to initialize TinyMCE" +msgstr "Clicca per inizializzare TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Tabs" +msgstr "Schede" + +#: includes/fields/class-acf-field-wysiwyg.php:424 +msgid "Visual & Text" +msgstr "Visuale e Testuale" + +#: includes/fields/class-acf-field-wysiwyg.php:425 +msgid "Visual Only" +msgstr "Solo Visuale" + +#: includes/fields/class-acf-field-wysiwyg.php:426 +msgid "Text Only" +msgstr "Solo Testuale" + +#: includes/fields/class-acf-field-wysiwyg.php:433 +msgid "Toolbar" +msgstr "Toolbar" + +#: includes/fields/class-acf-field-wysiwyg.php:443 +msgid "Show Media Upload Buttons?" +msgstr "Mostra Bottoni caricamento Media?" + +#: includes/fields/class-acf-field-wysiwyg.php:453 +msgid "Delay initialization?" +msgstr "Ritardo inizializzazione?" + +#: includes/fields/class-acf-field-wysiwyg.php:454 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "" +"TinyMCE non sarà inizializzato fino a quando il campo non viene cliccato" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Modifica Field Group" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Valida Email" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:573 pro/options-page.php:81 +msgid "Update" +msgstr "Aggiorna" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Post aggiornato" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Spam Rilevato" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Post" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Pagina" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Moduli" + +#: includes/locations.php:247 +msgid "is equal to" +msgstr "è uguale a" + +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "non è uguale a" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Allegato" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Tutti i formati %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Commento" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Ruolo Utente corrente" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Admin" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Utente corrente" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Autenticato" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Visualizzando Frond-end" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Visualizzando Back-end" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Menu Elemento" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menu" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Posizione Menu" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menu" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Genitore Pagina" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Template Pagina" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Template Default" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Tipo di Pagina" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Pagina Principale" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Pagina Post" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Pagina di primo livello (no Genitori)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Pagina Genitore (ha Figli)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Pagina Figlio (ha Genitore)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Categoria Post" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Formato Post" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Stato Post" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Tassonomia Post" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Template Post" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Form Utente" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Aggiungi / Modifica" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registra" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Ruolo Utente" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "Il valore %s è richiesto" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Pubblica" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Nessun Field Group personalizzato trovato in questa Pagina Opzioni. Crea un Field Group personalizzato" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Errore.Impossibile connettersi al server di aggiornamento" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Aggiornamenti" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Disattivare Licenza" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Attiva Licenza" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Informazioni Licenza" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Per sbloccare gli aggiornamenti, si prega di inserire la chiave di licenza " +"qui sotto. Se non hai una chiave di licenza, si prega di vedere Dettagli e prezzi." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Chiave di licenza" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Informazioni di aggiornamento" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Versione corrente" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Ultima versione" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Aggiornamento Disponibile" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Aggiorna Plugin" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Inserisci il tuo codice di licenza per sbloccare gli aggiornamenti" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Ricontrollare" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Avviso di Aggiornamento" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Clona" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Selezionare uno o più campi che si desidera clonare" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Visualizza" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Specificare lo stile utilizzato per il rendering del campo clona" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Gruppo (Visualizza campi selezionati in un gruppo all'interno di questo " +"campo)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Senza interruzione (sostituisce questo campo con i campi selezionati)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Etichette verranno visualizzate come %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Prefisso Etichetta Campo" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "I valori verranno salvati come %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Prefisso Nomi Campo" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Campo sconosciuto" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Field Group sconosciuto" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Tutti i campi dal %s field group" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:174 +#: pro/fields/class-acf-field-repeater.php:462 +msgid "Add Row" +msgstr "Aggiungi Riga" + +#: pro/fields/class-acf-field-flexible-content.php:34 +msgid "layout" +msgstr "layout" + +#: pro/fields/class-acf-field-flexible-content.php:35 +msgid "layouts" +msgstr "layout" + +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "remove {layout}?" +msgstr "rimuovi {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:37 +msgid "This field requires at least {min} {identifier}" +msgstr "Questo campoQuesto campo richiede almeno {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:38 +msgid "This field has a limit of {max} {identifier}" +msgstr "Questo campo ha un limite di {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:39 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Questo campo richiede almeno {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:40 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Massimo {label} limite raggiunto ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:41 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} disponibile (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:42 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} richiesto (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:43 +msgid "Flexible Content requires at least 1 layout" +msgstr "Flexible Content richiede almeno 1 layout" + +#: pro/fields/class-acf-field-flexible-content.php:273 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Clicca il bottone \"%s\" qui sotto per iniziare a creare il layout" + +#: pro/fields/class-acf-field-flexible-content.php:406 +msgid "Add layout" +msgstr "Aggiungi Layout" + +#: pro/fields/class-acf-field-flexible-content.php:407 +msgid "Remove layout" +msgstr "Rimuovi Layout" + +#: pro/fields/class-acf-field-flexible-content.php:408 +#: pro/fields/class-acf-field-repeater.php:298 +msgid "Click to toggle" +msgstr "Clicca per alternare" + +#: pro/fields/class-acf-field-flexible-content.php:548 +msgid "Reorder Layout" +msgstr "Riordina Layout" + +#: pro/fields/class-acf-field-flexible-content.php:548 +msgid "Reorder" +msgstr "Riordina" + +#: pro/fields/class-acf-field-flexible-content.php:549 +msgid "Delete Layout" +msgstr "Cancella Layout" + +#: pro/fields/class-acf-field-flexible-content.php:550 +msgid "Duplicate Layout" +msgstr "Duplica Layout" + +#: pro/fields/class-acf-field-flexible-content.php:551 +msgid "Add New Layout" +msgstr "Aggiungi Nuovo Layout" + +#: pro/fields/class-acf-field-flexible-content.php:622 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:635 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:662 +#: pro/fields/class-acf-field-repeater.php:458 +msgid "Button Label" +msgstr "Etichetta Bottone" + +#: pro/fields/class-acf-field-flexible-content.php:671 +msgid "Minimum Layouts" +msgstr "Layout Minimi" + +#: pro/fields/class-acf-field-flexible-content.php:680 +msgid "Maximum Layouts" +msgstr "Layout Massimi" + +#: pro/fields/class-acf-field-gallery.php:41 +msgid "Add Image to Gallery" +msgstr "Aggiungi Immagine alla Galleria" + +#: pro/fields/class-acf-field-gallery.php:45 +msgid "Maximum selection reached" +msgstr "Selezione massima raggiunta" + +#: pro/fields/class-acf-field-gallery.php:321 +msgid "Length" +msgstr "Lunghezza" + +#: pro/fields/class-acf-field-gallery.php:364 +msgid "Caption" +msgstr "Didascalia" + +#: pro/fields/class-acf-field-gallery.php:373 +msgid "Alt Text" +msgstr "Testo Alt" + +#: pro/fields/class-acf-field-gallery.php:544 +msgid "Add to gallery" +msgstr "Aggiungi a Galleria" + +#: pro/fields/class-acf-field-gallery.php:548 +msgid "Bulk actions" +msgstr "Azioni in blocco" + +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Sort by date uploaded" +msgstr "Ordina per aggiornamento data" + +#: pro/fields/class-acf-field-gallery.php:550 +msgid "Sort by date modified" +msgstr "Ordina per data modifica" + +#: pro/fields/class-acf-field-gallery.php:551 +msgid "Sort by title" +msgstr "Ordina per titolo" + +#: pro/fields/class-acf-field-gallery.php:552 +msgid "Reverse current order" +msgstr "Ordine corrente inversa" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Close" +msgstr "Chiudi" + +#: pro/fields/class-acf-field-gallery.php:624 +msgid "Minimum Selection" +msgstr "Seleziona Minima" + +#: pro/fields/class-acf-field-gallery.php:633 +msgid "Maximum Selection" +msgstr "Seleziona Massima" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Insert" +msgstr "Inserisci" + +#: pro/fields/class-acf-field-gallery.php:643 +msgid "Specify where new attachments are added" +msgstr "Specificare dove vengono aggiunti nuovi allegati" + +#: pro/fields/class-acf-field-gallery.php:647 +msgid "Append to the end" +msgstr "Aggiungere alla fine" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Prepend to the beginning" +msgstr "Anteporre all'inizio" + +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Minimum rows reached ({min} rows)" +msgstr "Righe minime raggiunte ({min} righe)" + +#: pro/fields/class-acf-field-repeater.php:37 +msgid "Maximum rows reached ({max} rows)" +msgstr "Righe massime raggiunte ({max} righe)" + +#: pro/fields/class-acf-field-repeater.php:335 +msgid "Add row" +msgstr "Aggiungi riga" + +#: pro/fields/class-acf-field-repeater.php:336 +msgid "Remove row" +msgstr "Rimuovi riga" + +#: pro/fields/class-acf-field-repeater.php:411 +msgid "Collapsed" +msgstr "Collassata" + +#: pro/fields/class-acf-field-repeater.php:412 +msgid "Select a sub field to show when row is collapsed" +msgstr "" +"Selezionare un campo secondario da visualizzare quando la riga è collassata" + +#: pro/fields/class-acf-field-repeater.php:422 +msgid "Minimum Rows" +msgstr "Righe Minime" + +#: pro/fields/class-acf-field-repeater.php:432 +msgid "Maximum Rows" +msgstr "Righe Massime" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Nessuna Pagina Opzioni esistente" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Opzioni" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Opzioni Aggiornate" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Per attivare gli aggiornamenti, per favore inserisci la tua chiave di " +"licenza nella pagina Aggiornamenti. Se non hai una chiave " +"di licenza, per favore vedi dettagli e prezzi." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "No conditional fields available" +#~ msgstr "Non ci sono campi condizionali disponibili" + +#~ msgid "Parent fields" +#~ msgstr "Campi genitore" + +#~ msgid "Sibling fields" +#~ msgstr "Campi di pari livello" + +#~ msgid "Left Aligned" +#~ msgstr "Allineamento a sinistra" + +#~ msgid "Locating" +#~ msgstr "Localizzazione" + +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "Valori minimi raggiunti ( valori {min} )" + +#~ msgid "Taxonomy Term" +#~ msgstr "Termine Tassonomia" + +#~ msgid "No toggle fields available" +#~ msgstr "Nessun Campo Toggle disponibile" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "" +#~ "Esporta \n" +#~ "Field Group\n" +#~ " di PHP" + +#~ msgid "Download export file" +#~ msgstr "Scarica file di esportazione" + +#~ msgid "Generate export code" +#~ msgstr "Generare codice di esportazione" + +#~ msgid "Import" +#~ msgstr "Importa" + +#~ msgid "No embed found for the given URL." +#~ msgstr "Nessun embed trovato per l'URL specificato." + +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Il campo scheda visualizzerà correttamente quando aggiunto a un campo " +#~ "ripetitore stile di tabella o disposizione flessibile in campo dei " +#~ "contenuti" + +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "Usa \"Campi Scheda\" per organizzare al meglio la vostra schermata di " +#~ "modifica raggruppando i campi insieme." + +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Tutti i campi che seguono questo \"campo scheda\" (o finché un altro " +#~ "\"campo tab \" viene definito) verranno raggruppati utilizzando " +#~ "l'etichetta di questo campo come intestazione scheda." + +#~ msgid "End-point" +#~ msgstr "Punto finale" + +#~ msgid "Use this field as an end-point and start a new group of tabs" +#~ msgstr "" +#~ "Utilizzare questo campo come un punto finale e iniziare un nuovo gruppo " +#~ "di schede" + +#~ msgid "Getting Started" +#~ msgstr "Guida introduttiva" + +#~ msgid "Field Types" +#~ msgstr "Tipi di Field" + +#~ msgid "Functions" +#~ msgstr "Funzioni" + +#~ msgid "Actions" +#~ msgstr "Azioni" + +#~ msgid "Features" +#~ msgstr "Caratteristiche" + +#~ msgid "How to" +#~ msgstr "Come fare" + +#~ msgid "Tutorials" +#~ msgstr "Tutorial" + +#~ msgid "FAQ" +#~ msgstr "FAQ" + +#~ msgid "Term meta upgrade not possible (termmeta table does not exist)" +#~ msgstr "" +#~ "Non è possibile l'aggiornamento del meta termine (la tabella termmeta non " +#~ "esiste)" + +#~ msgid "Error" +#~ msgstr "Errore" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "1 campo richiede attenzione." +#~ msgstr[1] "%d campi richiedono attenzione." + +#~ msgid "" +#~ "Error validating ACF PRO license URL (website does not match). Please re-" +#~ "activate your license" +#~ msgstr "" +#~ "Errore durante la convalida dell'URL della licenza di ACF PRO (sito web " +#~ "non corrisponde). Si prega di riattivare la licenza" + +#~ msgid "See what's new" +#~ msgstr "Guarda cosa c'è di nuovo" + +#~ msgid "Disabled" +#~ msgstr "Disabilitato" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Disabilitato (%s)" +#~ msgstr[1] "Disabilitato (%s)" + +#~ msgid "'How to' guides" +#~ msgstr "Guide del 'come si fa'" + +#~ msgid "Created by" +#~ msgstr "Creato da" + +#~ msgid "Text shown when not active" +#~ msgstr "Testo visualizzato quando non è attivo" + +#~ msgid "" +#~ "Error validating license URL (website does not match). Please re-activate " +#~ "your license" +#~ msgstr "" +#~ "Errore nella convalida licenza URL (sito Web non corrisponde). Si prega " +#~ "di ri-attivare la licenza" + +#~ msgid "Error loading update" +#~ msgstr "Errore durante il caricamento." + +#~ msgid "eg. Show extra content" +#~ msgstr "es. Mostra contenuti extra" + +#~ msgid "Select" +#~ msgstr "Seleziona" + +#~ msgctxt "Field label" +#~ msgid "Clone" +#~ msgstr "Clona" + +#~ msgctxt "Field instruction" +#~ msgid "Clone" +#~ msgstr "Clona" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Errore di connessione. Spiacenti, per favore riprova" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "" +#~ "Successo. Lo strumento di importazione ha aggiunto %s Field Group: " +#~ "%s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Attenzione. Lo strumento di importazione ha trovato %s \n" +#~ "Field Group\n" +#~ " già esistenti e sono stati ignorati: %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "Aggiorna ACF" + +#~ msgid "Upgrade" +#~ msgstr "Aggiornamento" + +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to " +#~ "update and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "I seguenti siti necessitano di un aggiornamento Database. Seleziona " +#~ "quelli da aggiornare e clicca \"Aggiorna Database\"" + +#~ msgid "Done" +#~ msgstr "Fatto" + +#~ msgid "Today" +#~ msgstr "Oggi" + +#~ msgid "Show a different month" +#~ msgstr "Mostra un altro mese" + +#~ msgid "See what's new in" +#~ msgstr "Guarda cosa c'è di nuovo" + +#~ msgid "version" +#~ msgstr "versione" + +#~ msgid "Upgrading data to" +#~ msgstr "Aggiornare i dati a" + +#~ msgid "Return format" +#~ msgstr "Formato ritorno" + +#~ msgid "uploaded to this post" +#~ msgstr "caricare a questo post" + +#~ msgid "File Name" +#~ msgstr "Nome file" + +#~ msgid "File Size" +#~ msgstr "Dimensione file" + +#~ msgid "No File selected" +#~ msgstr "Nessun file selezionato" + +#~ msgid "Save Options" +#~ msgstr "Salva Opzioni" + +#~ msgid "License" +#~ msgstr "Licenza" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Per sbloccare gli aggiornamenti, inserisci il tuo codice di licenza di " +#~ "seguito. Se non si dispone di una chiave di licenza, si prega di " +#~ "consultare" + +#~ msgid "details & pricing" +#~ msgstr "dettagli & prezzi" + +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "Per attivare gli aggiornamenti, inserisci il tuo codice di licenza sulla " +#~ "pagina Aggiornamenti. Se non si dispone di una chiave " +#~ "di licenza, si prega di consultare dettagli & prezzi" + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +#~ msgid "http://www.advancedcustomfields.com/" +#~ msgstr "http://www.advancedcustomfields.com/" + +#~ msgid "elliot condon" +#~ msgstr "elliot condon" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "Trascina per riordinare" + +#~ msgid "Add new %s " +#~ msgstr "Aggiungi %s " + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "Si prega di notare che tutto il testo viene prima passato attraverso la " +#~ "funzione wp" + +#~ msgid "Warning" +#~ msgstr "Attenzione" + +#~ msgid "Import / Export" +#~ msgstr "Importa / Esporta" + +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "I Field Group sono creati in ordine dal più basso al più alto" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-ja.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-ja.mo new file mode 100755 index 0000000000000000000000000000000000000000..72cbab11f26e5dfe85483cc4354b0cfff88aa7c4 GIT binary patch literal 45131 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\n" +"Language-Team: shogo kato \n" +"Language: ja_JP\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;" +"esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:205 admin/admin.php:61 +msgid "Field Groups" +msgstr "フィールドグループ" + +#: acf.php:206 +msgid "Field Group" +msgstr "フィールドグループ" + +#: acf.php:207 acf.php:239 admin/admin.php:62 pro/fields/flexible-content.php:517 +msgid "Add New" +msgstr "æ–°è¦è¿½åŠ " + +#: acf.php:208 +msgid "Add New Field Group" +msgstr "フィールドグループを新è¦è¿½åŠ " + +#: acf.php:209 +msgid "Edit Field Group" +msgstr "フィールドグループを編集" + +#: acf.php:210 +msgid "New Field Group" +msgstr "æ–°è¦ãƒ•ィールドグループ" + +#: acf.php:211 +msgid "View Field Group" +msgstr "フィールドグループを表示" + +#: acf.php:212 +msgid "Search Field Groups" +msgstr "フィールドグループを検索" + +#: acf.php:213 +msgid "No Field Groups found" +msgstr "フィールドグループãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: acf.php:214 +msgid "No Field Groups found in Trash" +msgstr "ゴミ箱ã®ä¸­ã«ãƒ•ィールドグループã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: acf.php:237 admin/field-group.php:182 admin/field-group.php:213 admin/field-groups.php:519 +msgid "Fields" +msgstr "フィールド" + +#: acf.php:238 +msgid "Field" +msgstr "フィールド" + +#: acf.php:240 +msgid "Add New Field" +msgstr "æ–°è¦ãƒ•ィールドを追加" + +#: acf.php:241 +msgid "Edit Field" +msgstr "フィールドを編集" + +#: acf.php:242 admin/views/field-group-fields.php:18 admin/views/settings-info.php:111 +msgid "New Field" +msgstr "æ–°è¦ãƒ•ィールド" + +#: acf.php:243 +msgid "View Field" +msgstr "フィールドを表示" + +#: acf.php:244 +msgid "Search Fields" +msgstr "フィールドを検索" + +#: acf.php:245 +msgid "No Fields found" +msgstr "フィールドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: acf.php:246 +msgid "No Fields found in Trash" +msgstr "ゴミ箱ã®ä¸­ã«ãƒ•ィールドã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: acf.php:268 admin/field-group.php:283 admin/field-groups.php:583 +#: admin/views/field-group-options.php:18 +msgid "Disabled" +msgstr "" + +#: acf.php:273 +#, php-format +msgid "Disabled (%s)" +msgid_plural "Disabled (%s)" +msgstr[0] "" + +#: admin/admin.php:57 admin/views/field-group-options.php:120 +msgid "Custom Fields" +msgstr "カスタムフィールド" + +#: admin/field-group.php:68 admin/field-group.php:69 admin/field-group.php:71 +msgid "Field group updated." +msgstr "フィールドグループを更新ã—ã¾ã—ãŸ" + +#: admin/field-group.php:70 +msgid "Field group deleted." +msgstr "フィールドグループを削除ã—ã¾ã—ãŸ" + +#: admin/field-group.php:73 +msgid "Field group published." +msgstr "フィールドグループを公開ã—ã¾ã—ãŸ" + +#: admin/field-group.php:74 +msgid "Field group saved." +msgstr "フィールドグループをä¿å­˜ã—ã¾ã—ãŸ" + +#: admin/field-group.php:75 +msgid "Field group submitted." +msgstr "フィールドグループをé€ä¿¡ã—ã¾ã—ãŸ" + +#: admin/field-group.php:76 +msgid "Field group scheduled for." +msgstr "フィールドグループを公開予約ã—ã¾ã—ãŸ" + +#: admin/field-group.php:77 +msgid "Field group draft updated." +msgstr "フィールドグループã®ä¸‹æ›¸ãã‚’æ›´æ–°ã—ã¾ã—ãŸ" + +#: admin/field-group.php:176 +msgid "Move to trash. Are you sure?" +msgstr "ゴミ箱ã«ç§»å‹•ã—ã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ" + +#: admin/field-group.php:177 +msgid "checked" +msgstr "ãƒã‚§ãƒƒã‚¯æ¸ˆã¿" + +#: admin/field-group.php:178 +msgid "No toggle fields available" +msgstr "利用ã§ãるトグルフィールドãŒã‚りã¾ã›ã‚“" + +#: admin/field-group.php:179 +msgid "Field group title is required" +msgstr "フィールドグループã®ã‚¿ã‚¤ãƒˆãƒ«ã¯å¿…é ˆã§ã™" + +#: admin/field-group.php:180 api/api-field-group.php:607 +msgid "copy" +msgstr "複製" + +#: admin/field-group.php:181 admin/views/field-group-field-conditional-logic.php:67 +#: admin/views/field-group-field-conditional-logic.php:162 admin/views/field-group-locations.php:23 +#: admin/views/field-group-locations.php:131 api/api-helpers.php:3262 +msgid "or" +msgstr "ã¾ãŸã¯" + +#: admin/field-group.php:183 +msgid "Parent fields" +msgstr "親フィールド" + +#: admin/field-group.php:184 +msgid "Sibling fields" +msgstr "兄弟フィールド" + +#: admin/field-group.php:185 +msgid "Move Custom Field" +msgstr "カスタムフィールドを移動" + +#: admin/field-group.php:186 +msgid "This field cannot be moved until its changes have been saved" +msgstr "ã“ã®ãƒ•ィールドã¯å¤‰æ›´ãŒä¿å­˜ã•れるã¾ã§ç§»å‹•ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: admin/field-group.php:187 +msgid "Null" +msgstr "空" + +#: admin/field-group.php:188 core/input.php:128 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ç§»å‹•ã—ãŸå ´åˆã€å¤‰æ›´ã¯å¤±ã‚れã¾ã™" + +#: admin/field-group.php:189 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "\"field_\" ã¯ãƒ•ィールドåã®å…ˆé ­ã«ä½¿ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: admin/field-group.php:214 +msgid "Location" +msgstr "ä½ç½®" + +#: admin/field-group.php:215 +msgid "Settings" +msgstr "" + +#: admin/field-group.php:253 +msgid "Field Keys" +msgstr "" + +#: admin/field-group.php:283 admin/views/field-group-options.php:17 +msgid "Active" +msgstr "" + +#: admin/field-group.php:744 +msgid "Front Page" +msgstr "フロントページ" + +#: admin/field-group.php:745 +msgid "Posts Page" +msgstr "投稿ページ" + +#: admin/field-group.php:746 +msgid "Top Level Page (no parent)" +msgstr "最上ä½ã®ãƒšãƒ¼ã‚¸ï¼ˆè¦ªãƒšãƒ¼ã‚¸ãŒãªã„)" + +#: admin/field-group.php:747 +msgid "Parent Page (has children)" +msgstr "親ページ(å­ãƒšãƒ¼ã‚¸ãŒã‚ã‚‹å ´åˆï¼‰" + +#: admin/field-group.php:748 +msgid "Child Page (has parent)" +msgstr "å­ãƒšãƒ¼ã‚¸ï¼ˆè¦ªãƒšãƒ¼ã‚¸ãŒã‚ã‚‹å ´åˆï¼‰" + +#: admin/field-group.php:764 +msgid "Default Template" +msgstr "デフォルトテンプレート" + +#: admin/field-group.php:786 +msgid "Logged in" +msgstr "ログイン済ã¿" + +#: admin/field-group.php:787 +msgid "Viewing front end" +msgstr "フロントエンドã§è¡¨ç¤º" + +#: admin/field-group.php:788 +msgid "Viewing back end" +msgstr "ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã§è¡¨ç¤º" + +#: admin/field-group.php:807 +msgid "Super Admin" +msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ç®¡ç†è€…" + +#: admin/field-group.php:818 admin/field-group.php:826 admin/field-group.php:840 +#: admin/field-group.php:847 admin/field-group.php:862 admin/field-group.php:872 fields/file.php:235 +#: fields/image.php:226 pro/fields/gallery.php:653 +msgid "All" +msgstr "å…¨ã¦" + +#: admin/field-group.php:827 +msgid "Add / Edit" +msgstr "追加 / 編集" + +#: admin/field-group.php:828 +msgid "Register" +msgstr "登録" + +#: admin/field-group.php:1059 +msgid "Move Complete." +msgstr "移動ãŒå®Œäº†ã—ã¾ã—ãŸã€‚" + +#: admin/field-group.php:1060 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "ã“ã® %s フィールドã¯ä»Š %s フィールドグループã«ã‚りã¾ã™" + +#: admin/field-group.php:1062 +msgid "Close Window" +msgstr "ウィンドウを閉ã˜ã‚‹" + +#: admin/field-group.php:1097 +msgid "Please select the destination for this field" +msgstr "ã“ã®ãƒ•ィールドã®ç§»å‹•å…ˆã‚’é¸æŠžã—ã¦ãã ã•ã„" + +#: admin/field-group.php:1104 +msgid "Move Field" +msgstr "フィールドを移動" + +#: admin/field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "" + +#: admin/field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "フィールドグループを複製ã—ã¾ã—ãŸã€‚ %s" + +#: admin/field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s個 ã®ãƒ•ィールドグループを複製ã—ã¾ã—ãŸ" + +#: admin/field-groups.php:228 +#, php-format +msgid "Field group synchronised. %s" +msgstr "ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚°ãƒ«ãƒ¼ãƒ—ã‚’åŒæœŸã—ã¾ã—ãŸã€‚%s" + +#: admin/field-groups.php:232 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s個 ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚°ãƒ«ãƒ¼ãƒ—ã‚’åŒæœŸã—ã¾ã—ãŸ" + +#: admin/field-groups.php:403 admin/field-groups.php:573 +msgid "Sync available" +msgstr "利用å¯èƒ½ãªåŒæœŸ" + +#: admin/field-groups.php:516 +msgid "Title" +msgstr "タイトル" + +#: admin/field-groups.php:517 admin/views/field-group-options.php:98 admin/views/update-network.php:20 +#: admin/views/update-network.php:28 +msgid "Description" +msgstr "" + +#: admin/field-groups.php:518 admin/views/field-group-options.php:10 +msgid "Status" +msgstr "" + +#: admin/field-groups.php:616 admin/settings-info.php:76 pro/admin/views/settings-updates.php:111 +msgid "Changelog" +msgstr "更新履歴" + +#: admin/field-groups.php:617 +msgid "See what's new in" +msgstr "æ–°ç€æƒ…報を見る" + +#: admin/field-groups.php:617 +msgid "version" +msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³" + +#: admin/field-groups.php:619 +msgid "Resources" +msgstr "リソース" + +#: admin/field-groups.php:621 +msgid "Getting Started" +msgstr "ã¯ã˜ã‚ã«" + +#: admin/field-groups.php:622 pro/admin/settings-updates.php:73 pro/admin/views/settings-updates.php:17 +msgid "Updates" +msgstr "アップデート" + +#: admin/field-groups.php:623 +msgid "Field Types" +msgstr "フィールドタイプ" + +#: admin/field-groups.php:624 +msgid "Functions" +msgstr "ファンクション" + +#: admin/field-groups.php:625 +msgid "Actions" +msgstr "アクション" + +#: admin/field-groups.php:626 fields/relationship.php:718 +msgid "Filters" +msgstr "フィルター" + +#: admin/field-groups.php:627 +msgid "'How to' guides" +msgstr "ä½¿ã„æ–¹ã‚¬ã‚¤ãƒ‰" + +#: admin/field-groups.php:628 +msgid "Tutorials" +msgstr "ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«" + +#: admin/field-groups.php:633 +msgid "Created by" +msgstr "作æˆ" + +#: admin/field-groups.php:673 +msgid "Duplicate this item" +msgstr "ã“ã®é …目を複製" + +#: admin/field-groups.php:673 admin/field-groups.php:685 admin/views/field-group-field.php:58 +#: pro/fields/flexible-content.php:516 +msgid "Duplicate" +msgstr "複製" + +#: admin/field-groups.php:724 +#, php-format +msgid "Select %s" +msgstr "%s ã‚’é¸æŠž" + +#: admin/field-groups.php:730 +msgid "Synchronise field group" +msgstr "ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚°ãƒ«ãƒ¼ãƒ—ã‚’åŒæœŸã™ã‚‹" + +#: admin/field-groups.php:730 admin/field-groups.php:750 +msgid "Sync" +msgstr "åŒæœŸã™ã‚‹" + +#: admin/settings-addons.php:51 admin/views/settings-addons.php:9 +msgid "Add-ons" +msgstr "アドオン" + +#: admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "エラー アドオンã®ãƒªã‚¹ãƒˆã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ" + +#: admin/settings-info.php:50 +msgid "Info" +msgstr "ãŠçŸ¥ã‚‰ã›" + +#: admin/settings-info.php:75 +msgid "What's New" +msgstr "æ–°ç€æƒ…å ±" + +#: admin/settings-tools.php:54 admin/views/settings-tools-export.php:9 admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "" + +#: admin/settings-tools.php:151 admin/settings-tools.php:365 +msgid "No field groups selected" +msgstr "フィールドグループãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#: admin/settings-tools.php:188 +msgid "No file selected" +msgstr "ファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#: admin/settings-tools.php:201 +msgid "Error uploading file. Please try again" +msgstr "ファイルã®ã‚¢ãƒƒãƒ—ロードã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。" + +#: admin/settings-tools.php:210 +msgid "Incorrect file type" +msgstr "䏿­£ãªãƒ•ァイルタイプ" + +#: admin/settings-tools.php:227 +msgid "Import file empty" +msgstr "インãƒãƒ¼ãƒˆãƒ•ァイルãŒç©ºã§ã™" + +#: admin/settings-tools.php:323 +#, php-format +msgid "Success. Import tool added %s field groups: %s" +msgstr "æˆåŠŸ インãƒãƒ¼ãƒˆãƒ„ール㯠%s個 ã®ãƒ•ィールドグループを追加ã—ã¾ã—ãŸï¼š%s" + +#: admin/settings-tools.php:332 +#, php-format +msgid "Warning. Import tool detected %s field groups already exist and have been ignored: %s" +msgstr "" +"警告 インãƒãƒ¼ãƒˆãƒ„ール㯠%s個 ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚°ãƒ«ãƒ¼ãƒ—ãŒæ—¢ã«å­˜åœ¨ã—ã¦ã„ã‚‹ã®ã‚’検出ã—ãŸãŸã‚無視ã—ã¾ã—ãŸï¼š" +"%s" + +#: admin/update.php:113 +msgid "Upgrade ACF" +msgstr "" + +#: admin/update.php:143 +msgid "Review sites & upgrade" +msgstr "" + +#: admin/update.php:298 +msgid "Upgrade" +msgstr "アップグレード" + +#: admin/update.php:328 +msgid "Upgrade Database" +msgstr "" + +#: admin/views/field-group-field-conditional-logic.php:29 +msgid "Conditional Logic" +msgstr "æ¡ä»¶åˆ¤å®š" + +#: admin/views/field-group-field-conditional-logic.php:40 admin/views/field-group-field.php:137 +#: fields/checkbox.php:246 fields/message.php:117 fields/page_link.php:568 fields/page_link.php:582 +#: fields/post_object.php:434 fields/post_object.php:448 fields/select.php:411 fields/select.php:425 +#: fields/select.php:439 fields/select.php:453 fields/tab.php:172 fields/taxonomy.php:770 +#: fields/taxonomy.php:784 fields/taxonomy.php:798 fields/taxonomy.php:812 fields/user.php:457 +#: fields/user.php:471 fields/wysiwyg.php:384 pro/admin/views/settings-updates.php:93 +msgid "Yes" +msgstr "ã¯ã„" + +#: admin/views/field-group-field-conditional-logic.php:41 admin/views/field-group-field.php:138 +#: fields/checkbox.php:247 fields/message.php:118 fields/page_link.php:569 fields/page_link.php:583 +#: fields/post_object.php:435 fields/post_object.php:449 fields/select.php:412 fields/select.php:426 +#: fields/select.php:440 fields/select.php:454 fields/tab.php:173 fields/taxonomy.php:685 +#: fields/taxonomy.php:771 fields/taxonomy.php:785 fields/taxonomy.php:799 fields/taxonomy.php:813 +#: fields/user.php:458 fields/user.php:472 fields/wysiwyg.php:385 +#: pro/admin/views/settings-updates.php:103 +msgid "No" +msgstr "ã„ã„ãˆ" + +#: admin/views/field-group-field-conditional-logic.php:65 +msgid "Show this field if" +msgstr "ã“ã®ãƒ•ィールドグループã®è¡¨ç¤ºæ¡ä»¶" + +#: admin/views/field-group-field-conditional-logic.php:111 admin/views/field-group-locations.php:88 +msgid "is equal to" +msgstr "ç­‰ã—ã„" + +#: admin/views/field-group-field-conditional-logic.php:112 admin/views/field-group-locations.php:89 +msgid "is not equal to" +msgstr "ç­‰ã—ããªã„" + +#: admin/views/field-group-field-conditional-logic.php:149 admin/views/field-group-locations.php:118 +msgid "and" +msgstr "and" + +#: admin/views/field-group-field-conditional-logic.php:164 admin/views/field-group-locations.php:133 +msgid "Add rule group" +msgstr "ルールを追加" + +#: admin/views/field-group-field.php:54 admin/views/field-group-field.php:57 +msgid "Edit field" +msgstr "フィールドを編集" + +#: admin/views/field-group-field.php:57 pro/fields/gallery.php:355 +msgid "Edit" +msgstr "編集" + +#: admin/views/field-group-field.php:58 +msgid "Duplicate field" +msgstr "フィールドを複製" + +#: admin/views/field-group-field.php:59 +msgid "Move field to another group" +msgstr "別ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ãƒ•ィールドを移動ã™ã‚‹" + +#: admin/views/field-group-field.php:59 +msgid "Move" +msgstr "移動" + +#: admin/views/field-group-field.php:60 +msgid "Delete field" +msgstr "フィールドを削除" + +#: admin/views/field-group-field.php:60 pro/fields/flexible-content.php:515 +msgid "Delete" +msgstr "削除" + +#: admin/views/field-group-field.php:68 fields/oembed.php:212 fields/taxonomy.php:886 +msgid "Error" +msgstr "エラー" + +#: fields/oembed.php:220 fields/taxonomy.php:900 +msgid "Error." +msgstr "エラー." + +#: admin/views/field-group-field.php:68 +msgid "Field type does not exist" +msgstr "フィールドタイプãŒå­˜åœ¨ã—ã¾ã›ã‚“" + +#: admin/views/field-group-field.php:81 +msgid "Field Label" +msgstr "フィールドラベル" + +#: admin/views/field-group-field.php:82 +msgid "This is the name which will appear on the EDIT page" +msgstr "編集ページã§è¡¨ç¤ºã•れるåå‰ã§ã™" + +#: admin/views/field-group-field.php:93 +msgid "Field Name" +msgstr "フィールドå" + +#: admin/views/field-group-field.php:94 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "スペースã¯ä¸å¯ã€ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã¨ãƒ€ãƒƒã‚·ãƒ¥ã¯ä½¿ç”¨å¯èƒ½ã€‚" + +#: admin/views/field-group-field.php:105 +msgid "Field Type" +msgstr "フィールドタイプ" + +#: admin/views/field-group-field.php:118 fields/tab.php:143 +msgid "Instructions" +msgstr "説明" + +#: admin/views/field-group-field.php:119 +msgid "Instructions for authors. Shown when submitting data" +msgstr "投稿者å‘ã‘ã®èª¬æ˜Žã€‚編集時ã«è¡¨ç¤ºã•れã¾ã™" + +#: admin/views/field-group-field.php:130 +msgid "Required?" +msgstr "å¿…é ˆã‹ï¼Ÿ" + +#: admin/views/field-group-field.php:158 +msgid "Wrapper Attributes" +msgstr "ラッパーã®å±žæ€§" + +#: admin/views/field-group-field.php:164 +msgid "width" +msgstr "width" + +#: admin/views/field-group-field.php:178 +msgid "class" +msgstr "class" + +#: admin/views/field-group-field.php:191 +msgid "id" +msgstr "id" + +#: admin/views/field-group-field.php:203 +msgid "Close Field" +msgstr "フィールドを閉ã˜ã‚‹" + +#: admin/views/field-group-fields.php:29 +msgid "Order" +msgstr "é †åº" + +#: admin/views/field-group-fields.php:30 pro/fields/flexible-content.php:541 +msgid "Label" +msgstr "ラベル" + +#: admin/views/field-group-fields.php:31 pro/fields/flexible-content.php:554 +msgid "Name" +msgstr "åå‰" + +#: admin/views/field-group-fields.php:32 +msgid "Type" +msgstr "タイプ" + +#: admin/views/field-group-fields.php:44 +msgid "No fields. Click the + Add Field button to create your first field." +msgstr "" +"フィールドã¯ã‚りã¾ã›ã‚“。+ æ–°è¦è¿½åŠ ãƒœã‚¿ãƒ³ã‚’ã‚¯ãƒªãƒƒã‚¯ã—ã¦æœ€åˆã®ãƒ•ィールドを作æˆã—ã¦ãã ã•" +"ã„" + +#: admin/views/field-group-fields.php:51 +msgid "Drag and drop to reorder" +msgstr "ドラッグアンドドロップã§ä¸¦ã¹æ›¿ãˆã‚‹" + +#: admin/views/field-group-fields.php:54 +msgid "+ Add Field" +msgstr "+ フィールドを追加" + +#: admin/views/field-group-locations.php:5 +msgid "Rules" +msgstr "ルール" + +#: admin/views/field-group-locations.php:6 +msgid "Create a set of rules to determine which edit screens will use these advanced custom fields" +msgstr "ã©ã®ç·¨é›†ç”»é¢ã§ã‚«ã‚¹ã‚¿ãƒ ãƒ•ィールドを表示ã™ã‚‹ã‹ã‚’決定ã™ã‚‹ãƒ«ãƒ¼ãƒ«ã‚’作æˆã—ã¾ã™ã€‚" + +#: admin/views/field-group-locations.php:21 +msgid "Show this field group if" +msgstr "ã“ã®ãƒ•ィールドグループを表示ã™ã‚‹æ¡ä»¶" + +#: admin/views/field-group-locations.php:41 admin/views/field-group-locations.php:47 +msgid "Post" +msgstr "投稿" + +#: admin/views/field-group-locations.php:42 fields/relationship.php:724 +msgid "Post Type" +msgstr "投稿タイプ" + +#: admin/views/field-group-locations.php:43 +msgid "Post Status" +msgstr "投稿ステータス" + +#: admin/views/field-group-locations.php:44 +msgid "Post Format" +msgstr "投稿フォーマット" + +#: admin/views/field-group-locations.php:45 +msgid "Post Category" +msgstr "投稿カテゴリー" + +#: admin/views/field-group-locations.php:46 +msgid "Post Taxonomy" +msgstr "投稿タクソノミー" + +#: admin/views/field-group-locations.php:49 admin/views/field-group-locations.php:53 +msgid "Page" +msgstr "ページ" + +#: admin/views/field-group-locations.php:50 +msgid "Page Template" +msgstr "ページテンプレート" + +#: admin/views/field-group-locations.php:51 +msgid "Page Type" +msgstr "ページタイプ" + +#: admin/views/field-group-locations.php:52 +msgid "Page Parent" +msgstr "親ページ" + +#: admin/views/field-group-locations.php:55 fields/user.php:36 +msgid "User" +msgstr "ユーザー" + +#: admin/views/field-group-locations.php:56 +msgid "Current User" +msgstr "ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼" + +#: admin/views/field-group-locations.php:57 +msgid "Current User Role" +msgstr "ç¾åœ¨ã®æ¨©é™ã‚°ãƒ«ãƒ¼ãƒ—" + +#: admin/views/field-group-locations.php:58 +msgid "User Form" +msgstr "ユーザーフォーム" + +#: admin/views/field-group-locations.php:59 +msgid "User Role" +msgstr "権é™ã‚°ãƒ«ãƒ¼ãƒ—" + +#: admin/views/field-group-locations.php:61 pro/admin/options-page.php:48 +msgid "Forms" +msgstr "フォーム" + +#: admin/views/field-group-locations.php:62 +msgid "Attachment" +msgstr "メディア" + +#: admin/views/field-group-locations.php:63 +msgid "Taxonomy Term" +msgstr "タクソノミーターム" + +#: admin/views/field-group-locations.php:64 +msgid "Comment" +msgstr "コメント" + +#: admin/views/field-group-locations.php:65 +msgid "Widget" +msgstr "ウィジェット" + +#: admin/views/field-group-options.php:25 +msgid "Style" +msgstr "スタイル" + +#: admin/views/field-group-options.php:32 +msgid "Standard (WP metabox)" +msgstr "標準(WPメタボックス)" + +#: admin/views/field-group-options.php:33 +msgid "Seamless (no metabox)" +msgstr "シームレス(メタボックスãªã—)" + +#: admin/views/field-group-options.php:40 +msgid "Position" +msgstr "ä½ç½®" + +#: admin/views/field-group-options.php:47 +msgid "High (after title)" +msgstr "高(タイトルã®å¾Œï¼‰" + +#: admin/views/field-group-options.php:48 +msgid "Normal (after content)" +msgstr "通常(コンテンツエディタã®å¾Œï¼‰" + +#: admin/views/field-group-options.php:49 +msgid "Side" +msgstr "サイド" + +#: admin/views/field-group-options.php:57 +msgid "Label placement" +msgstr "ラベルã®é…ç½®" + +#: admin/views/field-group-options.php:64 fields/tab.php:159 +msgid "Top aligned" +msgstr "上æƒãˆ" + +#: admin/views/field-group-options.php:65 fields/tab.php:160 +msgid "Left aligned" +msgstr "å·¦æƒãˆ" + +#: admin/views/field-group-options.php:72 +msgid "Instruction placement" +msgstr "説明ã®é…ç½®" + +#: admin/views/field-group-options.php:79 +msgid "Below labels" +msgstr "ラベルã®ä¸‹" + +#: admin/views/field-group-options.php:80 +msgid "Below fields" +msgstr "フィールドã®ä¸‹" + +#: admin/views/field-group-options.php:87 +msgid "Order No." +msgstr "順番" + +#: admin/views/field-group-options.php:88 +msgid "Field groups with a lower order will appear first" +msgstr "" + +#: admin/views/field-group-options.php:99 +msgid "Shown in field group list" +msgstr "" + +#: admin/views/field-group-options.php:109 +msgid "Hide on screen" +msgstr "ç”»é¢ã«éžè¡¨ç¤º" + +#: admin/views/field-group-options.php:110 +msgid "Select items to hide them from the edit screen." +msgstr "編集画é¢ã§è¡¨ç¤ºã—ãªã„ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠž" + +#: admin/views/field-group-options.php:110 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's options will be used (the " +"one with the lowest order number)" +msgstr "" + +#: admin/views/field-group-options.php:117 +msgid "Permalink" +msgstr "パーマリンク" + +#: admin/views/field-group-options.php:118 +msgid "Content Editor" +msgstr "コンテンツエディタ" + +#: admin/views/field-group-options.php:119 +msgid "Excerpt" +msgstr "抜粋" + +#: admin/views/field-group-options.php:121 +msgid "Discussion" +msgstr "ディスカッション" + +#: admin/views/field-group-options.php:122 +msgid "Comments" +msgstr "コメント" + +#: admin/views/field-group-options.php:123 +msgid "Revisions" +msgstr "リビジョン" + +#: admin/views/field-group-options.php:124 +msgid "Slug" +msgstr "スラッグ" + +#: admin/views/field-group-options.php:125 +msgid "Author" +msgstr "作æˆè€…" + +#: admin/views/field-group-options.php:126 +msgid "Format" +msgstr "フォーマット" + +#: admin/views/field-group-options.php:127 +msgid "Page Attributes" +msgstr "ページ属性" + +#: admin/views/field-group-options.php:128 fields/relationship.php:737 +msgid "Featured Image" +msgstr "アイキャッãƒç”»åƒ" + +#: admin/views/field-group-options.php:129 +msgid "Categories" +msgstr "カテゴリー" + +#: admin/views/field-group-options.php:130 +msgid "Tags" +msgstr "ã‚¿ã‚°" + +#: admin/views/field-group-options.php:131 +msgid "Send Trackbacks" +msgstr "トラックãƒãƒƒã‚¯" + +#: admin/views/settings-addons.php:23 +msgid "Download & Install" +msgstr "ダウンロードã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«" + +#: admin/views/settings-addons.php:42 +msgid "Installed" +msgstr "インストール済ã¿" + +#: admin/views/settings-info.php:9 +msgid "Welcome to Advanced Custom Fields" +msgstr "よã†ã“ã Advanced Custom Fields" + +#: admin/views/settings-info.php:10 +#, php-format +msgid "Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it." +msgstr "" +"アップグレードã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼ACF %s ã¯è¦æ¨¡ã€è³ªã¨ã‚‚ã«å‘上ã—ã¦ã„ã¾ã™ã€‚æ°—ã«å…¥ã£ã¦ã‚‚らãˆãŸã‚‰å¹¸ã„ã§" +"ã™ã€‚" + +#: admin/views/settings-info.php:23 +msgid "A smoother custom field experience" +msgstr "ã‚‚ã£ã¨ã‚‚å¿«é©ãªã‚«ã‚¹ã‚¿ãƒ ãƒ•ィールド体験" + +#: admin/views/settings-info.php:28 +msgid "Improved Usability" +msgstr "改良ã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ“リティ" + +#: admin/views/settings-info.php:29 +msgid "" +"Including the popular Select2 library has improved both usability and speed across a number of field " +"types including post object, page link, taxonomy and select." +msgstr "" +"内蔵ã—ãŸäººæ°—ã®Select2ライブラリã«ã‚ˆã£ã¦ã€æŠ•稿オブジェクトやページリンクã€ã‚¿ã‚¯ã‚½ãƒŽãƒŸãƒ¼ãªã©å¤šãã®ãƒ•ィール" +"ドタイプã«ãŠã‘ã‚‹é¸æŠžã®ãƒ¦ãƒ¼ã‚¶ãƒ“リティã¨é€Ÿåº¦ã®ä¸¡æ–¹ã‚’改善ã—ã¾ã—ãŸã€‚" + +#: admin/views/settings-info.php:33 +msgid "Improved Design" +msgstr "改良ã•れãŸãƒ‡ã‚¶ã‚¤ãƒ³" + +#: admin/views/settings-info.php:34 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are " +"seen on the gallery, relationship and oEmbed (new) fields!" +msgstr "" +"ACFãŒã‚ˆã‚Šè‰¯ããªã‚‹ã‚ˆã†ã€å¤šãã®ãƒ•ィールドã®ãƒ‡ã‚¶ã‚¤ãƒ³ã‚’一新ã—ã¾ã—ãŸï¼ç›®ç«‹ã£ãŸå¤‰åŒ–ã¯ã€ã‚®ãƒ£ãƒ©ãƒªãƒ¼ãƒ•ィールドや" +"関連フィールドã€ï¼ˆæ–°ã—ã„)oEmbedフィールドã§ã‚ã‹ã‚‹ã§ã—ょã†ï¼" + +#: admin/views/settings-info.php:38 +msgid "Improved Data" +msgstr "改良ã•れãŸãƒ‡ãƒ¼ã‚¿" + +#: admin/views/settings-info.php:39 +msgid "" +"Redesigning the data architecture has allowed sub fields to live independently from their parents. This " +"allows you to drag and drop fields in and out of parent fields!" +msgstr "" +"データ構造をå†è¨­è¨ˆã—ãŸã“ã¨ã§ã‚µãƒ–フィールドã¯è¦ªãƒ•ィールドã‹ã‚‰ç‹¬ç«‹ã—ã¦å­˜åœ¨ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚ã“れã«" +"よã£ã¦è¦ªãƒ•ィールドã®å†…外ã«ãƒ•ィールドをドラッグアンドドロップã§ãã‚‹ã¾ã™ã€‚" + +#: admin/views/settings-info.php:45 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "ã•よã†ãªã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã€ã“ã‚“ã«ã¡ã¯PRO" + +#: admin/views/settings-info.php:50 +msgid "Introducing ACF PRO" +msgstr "ACF PRO紹介" + +#: admin/views/settings-info.php:51 +msgid "We're changing the way premium functionality is delivered in an exciting way!" +msgstr "我々ã¯ã‚¨ã‚­ã‚µã‚¤ãƒ†ã‚£ãƒ³ã‚°ãªæ–¹æ³•ã§æœ‰æ–™æ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹ã“ã¨ã«ã—ã¾ã—ãŸï¼" + +#: admin/views/settings-info.php:52 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro version of ACF. With both " +"personal and developer licenses available, premium functionality is more affordable and accessible than " +"ever before!" +msgstr "" +"4ã¤ã®ã‚¢ãƒ‰ã‚ªãƒ³ã‚’ACFã®PROãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ã—ã¦çµ„ã¿åˆã‚ã›ã¾ã—ãŸã€‚個人ã¾ãŸã¯é–‹ç™ºè€…ライセンスã«" +"よã£ã¦ã€ä»¥å‰ã‚ˆã‚ŠãŠæ‰‹é ƒãªä¾¡æ ¼ã§æœ‰æ–™æ©Ÿèƒ½ã‚’利用ã§ãã¾ã™ï¼" + +#: admin/views/settings-info.php:56 +msgid "Powerful Features" +msgstr "ãƒ‘ãƒ¯ãƒ•ãƒ«ãªæ©Ÿèƒ½" + +#: admin/views/settings-info.php:57 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful " +"gallery field and the ability to create extra admin options pages!" +msgstr "" +"ACF PROã«ã¯ã€ç¹°ã‚Šè¿”ã—å¯èƒ½ãªãƒ‡ãƒ¼ã‚¿ã€æŸ”軟ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„レイアウトã€ç¾Žã—ã„ギャラリーフィールドã€ã‚ªãƒ—ション" +"ページを作æˆã™ã‚‹ãªã©ã€ãƒ‘ãƒ¯ãƒ•ãƒ«ãªæ©Ÿèƒ½ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ï¼" + +#: admin/views/settings-info.php:58 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "ã‚‚ã£ã¨ACF PRO ã®æ©Ÿèƒ½ã‚’見る。" + +#: admin/views/settings-info.php:62 +msgid "Easy Upgrading" +msgstr "ç°¡å˜ãªã‚¢ãƒƒãƒ—グレード" + +#: admin/views/settings-info.php:63 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account and claim a free copy of " +"ACF PRO!" +msgstr "" +"ç°¡å˜ãªã‚¢ãƒƒãƒ—グレードã®ãŸã‚ã«ã€ã‚¹ãƒˆã‚¢ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ACF PROã®ç„¡æ–™ã‚³ãƒ”ーを申請" +"ã—ã¦ãã ã•ã„。" + +#: admin/views/settings-info.php:64 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, but if you do have one, " +"please contact our support team via the help desk" +msgstr "" +"我々ã¯å¤šãã®è³ªå•ã«å¿œãˆã‚‹ãŸã‚ã«ã‚¢ãƒƒãƒ—グレードガイドを用æ„ã—ã¦ã„ã¾ã™ãŒã€ã‚‚ã—質å•ãŒã‚ã‚‹" +"å ´åˆã¯ãƒ˜ãƒ«ãƒ—デスクã‹ã‚‰ã‚µãƒãƒ¼ãƒˆãƒãƒ¼ãƒ ã«é€£çµ¡ã‚’ã—ã¦ãã ã•ã„。" + +#: admin/views/settings-info.php:72 +msgid "Under the Hood" +msgstr "ãã®å†…部ã§ã¯" + +#: admin/views/settings-info.php:77 +msgid "Smarter field settings" +msgstr "よりスマートãªãƒ•ィールド設定" + +#: admin/views/settings-info.php:78 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACFã¯ãれãžã‚Œã®ãƒ•ィールドを独立ã—ãŸæŠ•ç¨¿ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã¨ã—ã¦ä¿å­˜ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚" + +#: admin/views/settings-info.php:82 +msgid "More AJAX" +msgstr "ã„ã£ãã†AJAXã«" + +#: admin/views/settings-info.php:83 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "ページã®èª­ã¿è¾¼ã¿é€Ÿåº¦ã‚’高速化ã™ã‚‹ãŸã‚ã«ã€ã‚ˆã‚Šå¤šãã®ãƒ•ィールドãŒAJAXを利用ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸã€‚" + +#: admin/views/settings-info.php:87 +msgid "Local JSON" +msgstr "ローカルJSON" + +#: admin/views/settings-info.php:88 +msgid "New auto export to JSON feature improves speed" +msgstr "æ–°ã—ã„JSONå½¢å¼ã®è‡ªå‹•エクスãƒãƒ¼ãƒˆæ©Ÿèƒ½ã®é€Ÿåº¦ã‚’改善。" + +#: admin/views/settings-info.php:94 +msgid "Better version control" +msgstr "より良ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«" + +#: admin/views/settings-info.php:95 +msgid "New auto export to JSON feature allows field settings to be version controlled" +msgstr "æ–°ã—ã„JSONå½¢å¼ã®è‡ªå‹•エクスãƒãƒ¼ãƒˆæ©Ÿèƒ½ã¯ã€ãƒ•ィールド設定ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚" + +#: admin/views/settings-info.php:99 +msgid "Swapped XML for JSON" +msgstr "XMLã‹ã‚‰JSONã¸" + +#: admin/views/settings-info.php:100 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "インãƒãƒ¼ãƒˆ / エクスãƒãƒ¼ãƒˆã«XMLå½¢å¼ã‚ˆã‚Šå„ªã‚Œã¦ã„ã‚‹JSONå½¢å¼ãŒä½¿ãˆã¾ã™ã€‚" + +#: admin/views/settings-info.php:104 +msgid "New Forms" +msgstr "æ–°ã—ã„フォーム" + +#: admin/views/settings-info.php:105 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "コメントã¨ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã€å…¨ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ•ォームã«ãƒ•ィールドを追加ã§ãã¾ã™ã€‚" + +#: admin/views/settings-info.php:112 +msgid "A new field for embedding content has been added" +msgstr "æ–°ã—ã„フィールドã«ã€ŒoEmbed(埋ã‚è¾¼ã¿ã‚³ãƒ³ãƒ†ãƒ³ãƒ„)ã€ã‚’追加ã—ã¦ã„ã¾ã™ã€‚" + +#: admin/views/settings-info.php:116 +msgid "New Gallery" +msgstr "æ–°ã—ã„ギャラリー" + +#: admin/views/settings-info.php:117 +msgid "The gallery field has undergone a much needed facelift" +msgstr "ギャラリーフィールドã¯å¤šãã®ãƒžã‚¤ãƒŠãƒ¼ãƒã‚§ãƒ³ã‚¸ã‚’ã—ã¦ã„ã¾ã™ã€‚" + +#: admin/views/settings-info.php:121 +msgid "New Settings" +msgstr "æ–°ã—ã„設定" + +#: admin/views/settings-info.php:122 +msgid "Field group settings have been added for label placement and instruction placement" +msgstr "フィールドグループã®è¨­å®šã«ã€Œãƒ©ãƒ™ãƒ«ã®é…ç½®ã€ã¨ã€Œèª¬æ˜Žã®é…ç½®ã€ã‚’追加ã—ã¦ã„ã¾ã™ã€‚" + +#: admin/views/settings-info.php:128 +msgid "Better Front End Forms" +msgstr "より良ã„フロントエンドフォーム" + +#: admin/views/settings-info.php:129 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form()ã¯æ–°ã—ã„æŠ•ç¨¿ã‚’ãƒ•ãƒ­ãƒ³ãƒˆã‚¨ãƒ³ãƒ‰ã‹ã‚‰ä½œæˆã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚" + +#: admin/views/settings-info.php:133 +msgid "Better Validation" +msgstr "より良ã„ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³" + +#: admin/views/settings-info.php:134 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "フォームãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã¯ã€JSã®ã¿ã‚ˆã‚Šå„ªã‚Œã¦ã„ã‚‹PHP + AJAXã§è¡Œã‚れã¾ã™ã€‚" + +#: admin/views/settings-info.php:138 +msgid "Relationship Field" +msgstr "関連フィールド" + +#: admin/views/settings-info.php:139 +msgid "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "é–¢é€£ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®æ–°ã—ã„設定「フィルターã€ï¼ˆæ¤œç´¢ã€æŠ•稿タイプã€ã‚¿ã‚¯ã‚½ãƒŽãƒŸãƒ¼ï¼‰ã€‚" + +#: admin/views/settings-info.php:145 +msgid "Moving Fields" +msgstr "フィールド移動" + +#: admin/views/settings-info.php:146 +msgid "New field group functionality allows you to move a field between groups & parents" +msgstr "" +"æ–°ã—ã„フィールドグループã§ã¯ã€ãƒ•ィールドãŒè¦ªãƒ•ィールドやフィールドグループ間を移動ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + +#: admin/views/settings-info.php:150 fields/page_link.php:36 +msgid "Page Link" +msgstr "ページリンク" + +#: admin/views/settings-info.php:151 +msgid "New archives group in page_link field selection" +msgstr "æ–°ã—ã„ページリンクã®é¸æŠžè‚¢ã«ã€Œã‚¢ãƒ¼ã‚«ã‚¤ãƒ–グループã€ã‚’追加ã—ã¦ã„ã¾ã™ã€‚" + +#: admin/views/settings-info.php:155 +msgid "Better Options Pages" +msgstr "より良ã„オプションページ" + +#: admin/views/settings-info.php:156 +msgid "New functions for options page allow creation of both parent and child menu pages" +msgstr "ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãƒšãƒ¼ã‚¸ã®æ–°ã—ã„æ©Ÿèƒ½ã¨ã—ã¦ã€è¦ªã¨å­ã®ä¸¡æ–¹ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒšãƒ¼ã‚¸ã‚’作るã“ã¨ãŒã§ãã¾ã™ã€‚" + +#: admin/views/settings-info.php:165 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "%s ã®å¤‰æ›´ã¯ã€ãã£ã¨æ°—ã«å…¥ã£ã¦ã„ãŸã ã‘ã‚‹ã§ã—ょã†ã€‚" + +#: admin/views/settings-tools-export.php:13 +msgid "Export Field Groups to PHP" +msgstr "フィールドグループを PHPå½¢å¼ ã§ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã™ã‚‹" + +#: admin/views/settings-tools-export.php:17 +msgid "" +"The following code can be used to register a local version of the selected field group(s). A local " +"field group can provide many benefits such as faster load times, version control & dynamic fields/" +"settings. Simply copy and paste the following code to your theme's functions.php file or include it " +"within an external file." +msgstr "" +"以下ã®ã‚³ãƒ¼ãƒ‰ã¯é¸æŠžã—ãŸãƒ•ィールドグループã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ã—ã¦ç™»éŒ²ã«ä½¿ãˆã¾ã™ã€‚ローカルフィールドグ" +"ループã¯èª­ã¿è¾¼ã¿æ™‚é–“ã®çŸ­ç¸®ã‚„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã€å‹•çš„ãªãƒ•ィールド/設定ãªã©å¤šãã®åˆ©ç‚¹ãŒã‚りã¾ã™ã€‚以下" +"ã®ã‚³ãƒ¼ãƒ‰ã‚’テーマã®functions.phpや外部ファイルã«ã‚³ãƒ”ー&ペーストã—ã¦ãã ã•ã„。" + +#: admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠž" + +#: admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "フィールドグループをエクスãƒãƒ¼ãƒˆ" + +#: admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export method. Use the download " +"button to export to a .json file which you can then import to another ACF installation. Use the " +"generate button to export to PHP code which you can place in your theme." +msgstr "" +"エクスãƒãƒ¼ãƒˆã—ãŸã„フィールドグループã¨ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆæ–¹æ³•ã‚’é¸ã‚“ã§ãã ã•ã„。ダウンロードボタンã§ã¯åˆ¥ã®ACFã‚’" +"インストールã—ãŸç’°å¢ƒã§ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã‚‹JSONファイルãŒã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•れã¾ã™ã€‚生æˆãƒœã‚¿ãƒ³ã§ã¯ãƒ†ãƒ¼ãƒžå†…ã§åˆ©ç”¨ã§" +"ãã‚‹PHPコードãŒç”Ÿæˆã•れã¾ã™ã€‚" + +#: admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "エクスãƒãƒ¼ãƒˆãƒ•ァイルをダウンロード" + +#: admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "エクスãƒãƒ¼ãƒˆã‚³ãƒ¼ãƒ‰ã‚’生æˆ" + +#: admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "フィールドグループをインãƒãƒ¼ãƒˆ" + +#: admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When you click the import button " +"below, ACF will import the field groups." +msgstr "" +"インãƒãƒ¼ãƒˆã—ãŸã„ACFã®JSONãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。下ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆãƒœã‚¿ãƒ³ã‚’クリックã™ã‚‹ã¨ã€ACFã¯ãƒ•ィール" +"ドグループをインãƒãƒ¼ãƒˆã—ã¾ã™ã€‚" + +#: admin/views/settings-tools.php:77 fields/file.php:46 +msgid "Select File" +msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã™ã‚‹" + +#: admin/views/settings-tools.php:86 +msgid "Import" +msgstr "インãƒãƒ¼ãƒˆ" + +#: admin/views/update-network.php:8 admin/views/update.php:8 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "" + +#: admin/views/update-network.php:10 +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update and then click “Upgrade " +"Databaseâ€." +msgstr "" + +#: admin/views/update-network.php:19 admin/views/update-network.php:27 +msgid "Site" +msgstr "" + +#: admin/views/update-network.php:47 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "" + +#: admin/views/update-network.php:49 +msgid "Site is up to date" +msgstr "" + +#: admin/views/update-network.php:62 admin/views/update.php:16 +msgid "Database Upgrade complete. Return to network dashboard" +msgstr "" + +#: admin/views/update-network.php:101 admin/views/update-notice.php:35 +msgid "" +"It is strongly recommended that you backup your database before proceeding. Are you sure you wish to " +"run the updater now?" +msgstr "処ç†å‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’å¼·ãæŽ¨å¥¨ã—ã¾ã™ã€‚アップデーターを実行ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ" + +#: admin/views/update-network.php:157 +msgid "Upgrade complete" +msgstr "" + +#: admin/views/update-network.php:161 +msgid "Upgrading data to" +msgstr "" + +#: admin/views/update-notice.php:23 +msgid "Database Upgrade Required" +msgstr "データベースã®ã‚¢ãƒƒãƒ—グレードãŒå¿…è¦ã§ã™" + +#: admin/views/update-notice.php:25 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "%s v%sã¸ã®ã‚¢ãƒƒãƒ—グレードã‚りãŒã¨ã†ã”ã–ã„ã¾ã™" + +#: admin/views/update-notice.php:25 +msgid "" +"Before you start using the new awesome features, please update your database to the newest version." +msgstr "素晴らã—ã„æ–°æ©Ÿèƒ½ã‚’利用ã™ã‚‹å‰ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’最新ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«æ›´æ–°ã—ã¦ãã ã•ã„。" + +#: admin/views/update.php:12 +msgid "Reading upgrade tasks..." +msgstr "アップグレードタスクを読ã¿è¾¼ã‚“ã§ã„ã¾ã™..." + +#: admin/views/update.php:14 +#, php-format +msgid "Upgrading data to version %s" +msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s ã¸ãƒ‡ãƒ¼ã‚¿ã‚¢ãƒƒãƒ—グレード中" + +#: admin/views/update.php:16 +msgid "See what's new" +msgstr "æ–°ç€æƒ…報を見る" + +#: admin/views/update.php:110 +msgid "No updates available." +msgstr "" + +#: api/api-helpers.php:821 +msgid "Thumbnail" +msgstr "サムãƒã‚¤ãƒ«" + +#: api/api-helpers.php:822 +msgid "Medium" +msgstr "中" + +#: api/api-helpers.php:823 +msgid "Large" +msgstr "大" + +#: api/api-helpers.php:871 +msgid "Full Size" +msgstr "フルサイズ" + +#: api/api-helpers.php:1581 +msgid "(no title)" +msgstr "(無題)" + +#: api/api-helpers.php:3183 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "ç”»åƒã®å¹…ã¯å°‘ãªãã¨ã‚‚ %dpx å¿…è¦ã§ã™ã€‚" + +#: api/api-helpers.php:3188 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "ç”»åƒã®å¹…㯠%dpx ã‚’è¶…ãˆã¦ã¯ã„ã‘ã¾ã›ã‚“。" + +#: api/api-helpers.php:3204 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "ç”»åƒã®é«˜ã•ã¯å°‘ãªãã¨ã‚‚ %dpx å¿…è¦ã§ã™ã€‚" + +#: api/api-helpers.php:3209 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "ç”»åƒã®é«˜ã•㯠%dpx ã‚’è¶…ãˆã¦ã¯ã„ã‘ã¾ã›ã‚“。" + +#: api/api-helpers.php:3227 +#, php-format +msgid "File size must be at least %s." +msgstr "ファイルサイズã¯å°‘ãªãã¨ã‚‚ %s å¿…è¦ã§ã™ã€‚" + +#: api/api-helpers.php:3232 +#, php-format +msgid "File size must must not exceed %s." +msgstr "ファイルサイズ㯠%s ã‚’è¶…ãˆã¦ã¯ã„ã‘ã¾ã›ã‚“。" + +#: api/api-helpers.php:3266 +#, php-format +msgid "File type must be %s." +msgstr "ファイルタイプ㯠%s ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“。" + +#: api/api-template.php:1289 pro/fields/gallery.php:564 +msgid "Update" +msgstr "æ›´æ–°" + +#: api/api-template.php:1290 +msgid "Post updated" +msgstr "投稿更新済ã¿" + +#: core/field.php:131 +msgid "Basic" +msgstr "基本" + +#: core/field.php:132 +msgid "Content" +msgstr "コンテンツ" + +#: core/field.php:133 +msgid "Choice" +msgstr "é¸æŠžè‚¢" + +#: core/field.php:134 +msgid "Relational" +msgstr "関連" + +#: core/field.php:135 +msgid "jQuery" +msgstr "jQuery" + +#: core/field.php:136 fields/checkbox.php:226 fields/radio.php:231 pro/fields/flexible-content.php:512 +#: pro/fields/repeater.php:392 +msgid "Layout" +msgstr "レイアウト" + +#: core/input.php:129 +msgid "Expand Details" +msgstr "詳細を広ã’ã‚‹" + +#: core/input.php:130 +msgid "Collapse Details" +msgstr "詳細を縮ã‚ã‚‹" + +#: core/input.php:131 +msgid "Validation successful" +msgstr "æ¤œè¨¼ã«æˆåŠŸ" + +#: core/input.php:132 +msgid "Validation failed" +msgstr "検証ã«å¤±æ•—" + +#: core/input.php:133 +msgid "1 field requires attention" +msgstr "" + +#: core/input.php:134 +#, php-format +msgid "%d fields require attention" +msgstr "" + +#: core/input.php:135 +msgid "Restricted" +msgstr "" + +#: core/input.php:533 +#, php-format +msgid "%s value is required" +msgstr "%s ã®å€¤ã¯å¿…é ˆã§ã™" + +#: fields/checkbox.php:36 fields/taxonomy.php:752 +msgid "Checkbox" +msgstr "ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹" + +#: fields/checkbox.php:144 +msgid "Toggle All" +msgstr "å…¨ã¦ é¸æŠž / 解除" + +#: fields/checkbox.php:208 fields/radio.php:193 fields/select.php:388 +msgid "Choices" +msgstr "é¸æŠžè‚¢" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "Enter each choice on a new line." +msgstr "é¸æŠžè‚¢ã‚’æ”¹è¡Œã§åŒºåˆ‡ã£ã¦å…¥åŠ›ã—ã¦ãã ã•ã„" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "For more control, you may specify both a value and label like this:" +msgstr "下記ã®ã‚ˆã†ã«è¨˜è¿°ã™ã‚‹ã¨ã€å€¤ã¨ãƒ©ãƒ™ãƒ«ã®ä¸¡æ–¹ã‚’制御ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "red : Red" +msgstr "red : 赤" + +#: fields/checkbox.php:217 fields/color_picker.php:158 fields/email.php:124 fields/number.php:150 +#: fields/radio.php:222 fields/select.php:397 fields/text.php:148 fields/textarea.php:145 +#: fields/true_false.php:115 fields/url.php:117 fields/wysiwyg.php:345 +msgid "Default Value" +msgstr "デフォルト値" + +#: fields/checkbox.php:218 fields/select.php:398 +msgid "Enter each default value on a new line" +msgstr "デフォルト値を入力ã™ã‚‹" + +#: fields/checkbox.php:232 fields/radio.php:237 +msgid "Vertical" +msgstr "垂直" + +#: fields/checkbox.php:233 fields/radio.php:238 +msgid "Horizontal" +msgstr "æ°´å¹³" + +#: fields/checkbox.php:240 +msgid "Toggle" +msgstr "" + +#: fields/checkbox.php:241 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" + +#: fields/color_picker.php:36 +msgid "Color Picker" +msgstr "カラーピッカー" + +#: fields/color_picker.php:94 +msgid "Clear" +msgstr "クリア" + +#: fields/color_picker.php:95 +msgid "Default" +msgstr "デフォルト" + +#: fields/color_picker.php:96 +msgid "Select Color" +msgstr "è‰²ã‚’é¸æŠž" + +#: fields/date_picker.php:36 +msgid "Date Picker" +msgstr "デイトピッカー" + +#: fields/date_picker.php:72 +msgid "Done" +msgstr "完了" + +#: fields/date_picker.php:73 +msgid "Today" +msgstr "本日" + +#: fields/date_picker.php:76 +msgid "Show a different month" +msgstr "åˆ¥ã®æœˆã‚’表示ã™ã‚‹" + +#: fields/date_picker.php:149 +msgid "Display Format" +msgstr "表示フォーマット" + +#: fields/date_picker.php:150 +msgid "The format displayed when editing a post" +msgstr "投稿編集中ã«è¡¨ç¤ºã•れるフォーマット" + +#: fields/date_picker.php:164 +msgid "Return format" +msgstr "返り値" + +#: fields/date_picker.php:165 +msgid "The format returned via template functions" +msgstr "テンプレート関数ã§è¿”ã•れるフォーマット" + +#: fields/date_picker.php:180 +msgid "Week Starts On" +msgstr "週ã®å§‹ã¾ã‚Š" + +#: fields/email.php:36 +msgid "Email" +msgstr "メール" + +#: fields/email.php:125 fields/number.php:151 fields/radio.php:223 fields/text.php:149 +#: fields/textarea.php:146 fields/url.php:118 fields/wysiwyg.php:346 +msgid "Appears when creating a new post" +msgstr "æ–°è¦æŠ•ç¨¿ã‚’ä½œæˆæ™‚ã«è¡¨ç¤ºã•れã¾ã™" + +#: fields/email.php:133 fields/number.php:159 fields/password.php:137 fields/text.php:157 +#: fields/textarea.php:154 fields/url.php:126 +msgid "Placeholder Text" +msgstr "プレースホルダーã®ãƒ†ã‚­ã‚¹ãƒˆ" + +#: fields/email.php:134 fields/number.php:160 fields/password.php:138 fields/text.php:158 +#: fields/textarea.php:155 fields/url.php:127 +msgid "Appears within the input" +msgstr "入力欄ã«è¡¨ç¤ºã•れã¾ã™" + +#: fields/email.php:142 fields/number.php:168 fields/password.php:146 fields/text.php:166 +msgid "Prepend" +msgstr "先頭ã«è¿½åŠ " + +#: fields/email.php:143 fields/number.php:169 fields/password.php:147 fields/text.php:167 +msgid "Appears before the input" +msgstr "入力欄ã®å…ˆé ­ã«è¡¨ç¤ºã•れã¾ã™" + +#: fields/email.php:151 fields/number.php:177 fields/password.php:155 fields/text.php:175 +msgid "Append" +msgstr "末尾ã«è¿½åŠ " + +#: fields/email.php:152 fields/number.php:178 fields/password.php:156 fields/text.php:176 +msgid "Appears after the input" +msgstr "å…¥åŠ›æ¬„ã®æœ«å°¾ã«è¡¨ç¤ºã•れã¾ã™" + +#: fields/file.php:36 +msgid "File" +msgstr "ファイル" + +#: fields/file.php:47 +msgid "Edit File" +msgstr "ファイルを編集ã™ã‚‹" + +#: fields/file.php:48 +msgid "Update File" +msgstr "ファイルを更新ã™ã‚‹" + +#: fields/file.php:49 pro/fields/gallery.php:55 +msgid "uploaded to this post" +msgstr "ã“ã®æŠ•ç¨¿ã«ã‚¢ãƒƒãƒ—ロードã•れる" + +#: fields/file.php:142 +msgid "File Name" +msgstr "ファイルãƒãƒ¼ãƒ " + +#: fields/file.php:146 +msgid "File Size" +msgstr "ファイルサイズ" + +#: fields/file.php:169 +msgid "No File selected" +msgstr "ファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#: fields/file.php:169 +msgid "Add File" +msgstr "ファイルを追加ã™ã‚‹" + +#: fields/file.php:214 fields/image.php:195 fields/taxonomy.php:821 +msgid "Return Value" +msgstr "返り値" + +#: fields/file.php:215 fields/image.php:196 +msgid "Specify the returned value on front end" +msgstr "フロントエンドã¸ã®è¿”り値を指定ã—ã¦ãã ã•ã„" + +#: fields/file.php:220 +msgid "File Array" +msgstr "ファイル é…列" + +#: fields/file.php:221 +msgid "File URL" +msgstr "ファイル URL" + +#: fields/file.php:222 +msgid "File ID" +msgstr "ファイル ID" + +#: fields/file.php:229 fields/image.php:220 pro/fields/gallery.php:647 +msgid "Library" +msgstr "ライブラリ" + +#: fields/file.php:230 fields/image.php:221 pro/fields/gallery.php:648 +msgid "Limit the media library choice" +msgstr "制é™ã™ã‚‹ãƒ¡ãƒ‡ã‚£ã‚¢ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã‚’é¸æŠž" + +#: fields/file.php:236 fields/image.php:227 pro/fields/gallery.php:654 +msgid "Uploaded to post" +msgstr "投稿ã«ã‚¢ãƒƒãƒ—ロードã•れる" + +#: fields/file.php:243 fields/image.php:234 pro/fields/gallery.php:661 +msgid "Minimum" +msgstr "最å°" + +#: fields/file.php:244 fields/file.php:255 +msgid "Restrict which files can be uploaded" +msgstr "アップロードå¯èƒ½ãªãƒ•ァイルを制é™" + +#: fields/file.php:247 fields/file.php:258 fields/image.php:257 fields/image.php:290 +#: pro/fields/gallery.php:684 pro/fields/gallery.php:717 +msgid "File size" +msgstr "ファイルサイズ" + +#: fields/file.php:254 fields/image.php:267 pro/fields/gallery.php:694 +msgid "Maximum" +msgstr "最大" + +#: fields/file.php:265 fields/image.php:300 pro/fields/gallery.php:727 +msgid "Allowed file types" +msgstr "許å¯ã™ã‚‹ãƒ•ァイルタイプ" + +#: fields/file.php:266 fields/image.php:301 pro/fields/gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "カンマ区切りã®ãƒªã‚¹ãƒˆã§å…¥åŠ›ã€‚å…¨ã¦ã®ã‚¿ã‚¤ãƒ—を許å¯ã™ã‚‹å ´åˆã¯ç©ºç™½ã®ã¾ã¾ã§" + +#: fields/google-map.php:36 +msgid "Google Map" +msgstr "Googleマップ" + +#: fields/google-map.php:51 +msgid "Locating" +msgstr "場所" + +#: fields/google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "ã”ã‚ã‚“ãªã•ã„ã€ã“ã®ãƒ–ラウザーã¯geolocationã«å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“" + +#: fields/google-map.php:135 +msgid "Clear location" +msgstr "ä½ç½®æƒ…報をクリア" + +#: fields/google-map.php:140 +msgid "Find current location" +msgstr "ç¾åœ¨ã®ä½ç½®æƒ…報を検索" + +#: fields/google-map.php:141 +msgid "Search for address..." +msgstr "使‰€ã§æ¤œç´¢..." + +#: fields/google-map.php:173 fields/google-map.php:184 +msgid "Center" +msgstr "センター" + +#: fields/google-map.php:174 fields/google-map.php:185 +msgid "Center the initial map" +msgstr "ãƒžãƒƒãƒ—åˆæœŸçŠ¶æ…‹ã®ã‚»ãƒ³ã‚¿ãƒ¼" + +#: fields/google-map.php:198 +msgid "Zoom" +msgstr "ズーム" + +#: fields/google-map.php:199 +msgid "Set the initial zoom level" +msgstr "ãƒžãƒƒãƒ—åˆæœŸçŠ¶æ…‹ã®ã‚ºãƒ¼ãƒ ãƒ¬ãƒ™ãƒ«" + +#: fields/google-map.php:208 fields/image.php:246 fields/image.php:279 fields/oembed.php:262 +#: pro/fields/gallery.php:673 pro/fields/gallery.php:706 +msgid "Height" +msgstr "高ã•" + +#: fields/google-map.php:209 +msgid "Customise the map height" +msgstr "マップã®é«˜ã•を調整" + +#: fields/image.php:36 +msgid "Image" +msgstr "ç”»åƒ" + +#: fields/image.php:51 +msgid "Select Image" +msgstr "ç”»åƒã‚’é¸æŠžã™ã‚‹" + +#: fields/image.php:52 pro/fields/gallery.php:53 +msgid "Edit Image" +msgstr "ç”»åƒã‚’編集ã™ã‚‹" + +#: fields/image.php:53 pro/fields/gallery.php:54 +msgid "Update Image" +msgstr "ç”»åƒã‚’æ›´æ–°ã™ã‚‹" + +#: fields/image.php:54 +msgid "Uploaded to this post" +msgstr "ã“ã®æŠ•ç¨¿ã«ã‚¢ãƒƒãƒ—ロード済ã¿" + +#: fields/image.php:55 +msgid "All images" +msgstr "å…¨ã¦ã®ç”»åƒ" + +#: fields/image.php:147 +msgid "No image selected" +msgstr "ç”»åƒãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#: fields/image.php:147 +msgid "Add Image" +msgstr "ç”»åƒã‚’追加ã™ã‚‹" + +#: fields/image.php:201 +msgid "Image Array" +msgstr "ç”»åƒ é…列" + +#: fields/image.php:202 +msgid "Image URL" +msgstr "ç”»åƒ URL" + +#: fields/image.php:203 +msgid "Image ID" +msgstr "ç”»åƒ ID" + +#: fields/image.php:210 pro/fields/gallery.php:637 +msgid "Preview Size" +msgstr "プレビューサイズ" + +#: fields/image.php:211 pro/fields/gallery.php:638 +msgid "Shown when entering data" +msgstr "投稿編集中ã«è¡¨ç¤ºã•れã¾ã™" + +#: fields/image.php:235 fields/image.php:268 pro/fields/gallery.php:662 pro/fields/gallery.php:695 +msgid "Restrict which images can be uploaded" +msgstr "アップロードå¯èƒ½ãªç”»åƒã‚’制é™" + +#: fields/image.php:238 fields/image.php:271 fields/oembed.php:251 pro/fields/gallery.php:665 +#: pro/fields/gallery.php:698 +msgid "Width" +msgstr "å¹…" + +#: fields/message.php:36 fields/message.php:103 fields/true_false.php:106 +msgid "Message" +msgstr "メッセージ" + +#: fields/message.php:104 +msgid "Please note that all text will first be passed through the wp function " +msgstr "ã™ã¹ã¦ã®ãƒ†ã‚­ã‚¹ãƒˆãŒæœ€åˆã«WordPressã®é–¢æ•°ã‚’通éŽã—ã¾ã™ã®ã§ã”注æ„ãã ã•ã„" + +#: fields/message.php:112 +msgid "Escape HTML" +msgstr "HTMLをエスケープ" + +#: fields/message.php:113 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "HTMLマークアップã®ã‚³ãƒ¼ãƒ‰ã¨ã—ã¦è¡¨ç¤ºã‚’許å¯" + +#: fields/number.php:36 +msgid "Number" +msgstr "数値" + +#: fields/number.php:186 +msgid "Minimum Value" +msgstr "最å°å€¤" + +#: fields/number.php:195 +msgid "Maximum Value" +msgstr "最大値" + +#: fields/number.php:204 +msgid "Step Size" +msgstr "ステップサイズ" + +#: fields/number.php:242 +msgid "Value must be a number" +msgstr "å€¤ã¯æ•°å€¤ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" + +#: fields/number.php:260 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "数値㯠%d 以上ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" + +#: fields/number.php:268 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "数値㯠%d 以下ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" + +#: fields/oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: fields/oembed.php:199 +msgid "Enter URL" +msgstr "URLを入力" + +#: fields/oembed.php:212 +msgid "No embed found for the given URL." +msgstr "指定ã•れãŸURLã«ã¯åŸ‹ã‚込む内容ãŒã‚りã¾ã›ã‚“." + +#: fields/oembed.php:248 fields/oembed.php:259 +msgid "Embed Size" +msgstr "埋ã‚è¾¼ã¿ã‚µã‚¤ã‚º" + +#: fields/page_link.php:206 +msgid "Archives" +msgstr "アーカイブ" + +#: fields/page_link.php:535 fields/post_object.php:401 fields/relationship.php:690 +msgid "Filter by Post Type" +msgstr "投稿タイプã§çµžã‚Šè¾¼ã¿" + +#: fields/page_link.php:543 fields/post_object.php:409 fields/relationship.php:698 +msgid "All post types" +msgstr "å…¨ã¦ã®æŠ•稿タイプ" + +#: fields/page_link.php:549 fields/post_object.php:415 fields/relationship.php:704 +msgid "Filter by Taxonomy" +msgstr "タクソノミーã§çµžã‚Šè¾¼ã¿" + +#: fields/page_link.php:557 fields/post_object.php:423 fields/relationship.php:712 +msgid "All taxonomies" +msgstr "å…¨ã¦ã®ã‚¿ã‚¯ã‚½ãƒŽãƒŸãƒ¼" + +#: fields/page_link.php:563 fields/post_object.php:429 fields/select.php:406 fields/taxonomy.php:765 +#: fields/user.php:452 +msgid "Allow Null?" +msgstr "空ã®å€¤ã‚’許å¯ã™ã‚‹ã‹ï¼Ÿ" + +#: fields/page_link.php:577 fields/post_object.php:443 fields/select.php:420 fields/user.php:466 +msgid "Select multiple values?" +msgstr "複数ã®å€¤ã‚’é¸æŠžã§ãã‚‹ã‹ï¼Ÿ" + +#: fields/password.php:36 +msgid "Password" +msgstr "パスワード" + +#: fields/post_object.php:36 fields/post_object.php:462 fields/relationship.php:769 +msgid "Post Object" +msgstr "投稿オブジェクト" + +#: fields/post_object.php:457 fields/relationship.php:764 +msgid "Return Format" +msgstr "返り値ã®ãƒ•ォーマット" + +#: fields/post_object.php:463 fields/relationship.php:770 +msgid "Post ID" +msgstr "投稿 ID" + +#: fields/radio.php:36 +msgid "Radio Button" +msgstr "ラジオボタン" + +#: fields/radio.php:202 +msgid "Other" +msgstr "ãã®ä»–" + +#: fields/radio.php:206 +msgid "Add 'other' choice to allow for custom values" +msgstr "é¸æŠžè‚¢ã€Œãã®ä»–ã€ã‚’追加ã™ã‚‹" + +#: fields/radio.php:212 +msgid "Save Other" +msgstr "ãã®ä»–ã‚’ä¿å­˜" + +#: fields/radio.php:216 +msgid "Save 'other' values to the field's choices" +msgstr "「ãã®ä»–ã€ã®å€¤ã‚’é¸æŠžè‚¢ã«è¿½åŠ ã™ã‚‹" + +#: fields/relationship.php:36 +msgid "Relationship" +msgstr "関連" + +#: fields/relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "" + +#: fields/relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "最大値( {max} ) ã«é”ã—ã¾ã—ãŸ" + +#: fields/relationship.php:50 +msgid "Loading" +msgstr "読ã¿è¾¼ã¿ä¸­" + +#: fields/relationship.php:51 +msgid "No matches found" +msgstr "一致ã™ã‚‹é …ç›®ãŒã‚りã¾ã›ã‚“" + +#: fields/relationship.php:571 +msgid "Search..." +msgstr "検索..." + +#: fields/relationship.php:580 +msgid "Select post type" +msgstr "æŠ•ç¨¿ã‚¿ã‚¤ãƒ—ã‚’é¸æŠž" + +#: fields/relationship.php:593 +msgid "Select taxonomy" +msgstr "ã‚¿ã‚¯ã‚½ãƒŽãƒŸãƒ¼ã‚’é¸æŠž" + +#: fields/relationship.php:723 +msgid "Search" +msgstr "検索" + +#: fields/relationship.php:725 fields/taxonomy.php:36 fields/taxonomy.php:735 +msgid "Taxonomy" +msgstr "タクソノミー" + +#: fields/relationship.php:732 +msgid "Elements" +msgstr "è¦ç´ " + +#: fields/relationship.php:733 +msgid "Selected elements will be displayed in each result" +msgstr "é¸æŠžã—ãŸè¦ç´ ãŒè¡¨ç¤ºã•れã¾ã™ã€‚" + +#: fields/relationship.php:744 +msgid "Minimum posts" +msgstr "" + +#: fields/relationship.php:753 +msgid "Maximum posts" +msgstr "最大投稿数" + +#: fields/select.php:36 fields/select.php:174 fields/taxonomy.php:757 +msgid "Select" +msgstr "セレクトボックス" + +#: fields/select.php:434 +msgid "Stylised UI" +msgstr "スタイリッシュãªUI" + +#: fields/select.php:448 +msgid "Use AJAX to lazy load choices?" +msgstr "é¸æŠžè‚¢ã‚’AJAXã§é…延ロードã™ã‚‹ã‹ï¼Ÿ" + +#: fields/tab.php:36 +msgid "Tab" +msgstr "タブ" + +#: fields/tab.php:128 +msgid "Warning" +msgstr "注æ„" + +#: fields/tab.php:133 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater field or flexible content " +"field layout" +msgstr "" +"ã“ã®ã‚¿ãƒ–ã¯ã€ãƒ†ãƒ¼ãƒ–ルスタイルã®ç¹°ã‚Šè¿”ã—ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‹æŸ”軟コンテンツフィールドãŒè¿½åŠ ã•れãŸå ´åˆã€æ­£ã—ã表示ã•" +"れã¾ã›ã‚“" + +#: fields/tab.php:146 +msgid "Use \"Tab Fields\" to better organize your edit screen by grouping fields together." +msgstr "\"タブ\" を使ã†ã¨ãƒ•ィールドã®ã‚°ãƒ«ãƒ¼ãƒ—化ã«ã‚ˆã£ã¦ç·¨é›†ç”»é¢ã‚’より整ç†ã§ãã¾ã™ã€‚" + +#: fields/tab.php:148 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is defined) will be grouped " +"together using this field's label as the tab heading." +msgstr "" +"ã“ã®\"タブ\" ã®å¾Œã«ç¶šã(ã¾ãŸã¯åˆ¥ã® \"タブ\" ãŒå®šç¾©ã•れるã¾ã§ã®ï¼‰å…¨ã¦ã®ãƒ•ィールドã¯ã€ã“ã®ãƒ•ィールドã®ãƒ©" +"ベルãŒã‚¿ãƒ–ã®è¦‹å‡ºã—ã¨ãªã‚Šã‚°ãƒ«ãƒ¼ãƒ—化ã•れã¾ã™ã€‚" + +#: fields/tab.php:155 +msgid "Placement" +msgstr "タブã®é…ç½®" + +#: fields/tab.php:167 +msgid "End-point" +msgstr "" + +#: fields/tab.php:168 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "" + +#: fields/taxonomy.php:565 +#, php-format +msgid "Add new %s " +msgstr "" + +#: fields/taxonomy.php:704 +msgid "None" +msgstr "ç„¡" + +#: fields/taxonomy.php:736 +msgid "Select the taxonomy to be displayed" +msgstr "" + +#: fields/taxonomy.php:745 +msgid "Appearance" +msgstr "" + +#: fields/taxonomy.php:746 +msgid "Select the appearance of this field" +msgstr "" + +#: fields/taxonomy.php:751 +msgid "Multiple Values" +msgstr "複数値" + +#: fields/taxonomy.php:753 +msgid "Multi Select" +msgstr "è¤‡æ•°é¸æŠž" + +#: fields/taxonomy.php:755 +msgid "Single Value" +msgstr "å˜ä¸€å€¤" + +#: fields/taxonomy.php:756 +msgid "Radio Buttons" +msgstr "ラジオボタン" + +#: fields/taxonomy.php:779 +msgid "Create Terms" +msgstr "" + +#: fields/taxonomy.php:780 +msgid "Allow new terms to be created whilst editing" +msgstr "" + +#: fields/taxonomy.php:793 +msgid "Save Terms" +msgstr "" + +#: fields/taxonomy.php:794 +msgid "Connect selected terms to the post" +msgstr "" + +#: fields/taxonomy.php:807 +msgid "Load Terms" +msgstr "" + +#: fields/taxonomy.php:808 +msgid "Load value from posts terms" +msgstr "" + +#: fields/taxonomy.php:826 +msgid "Term Object" +msgstr "タームオブジェクト" + +#: fields/taxonomy.php:827 +msgid "Term ID" +msgstr "ターム ID" + +#: fields/taxonomy.php:886 +#, php-format +msgid "User unable to add new %s" +msgstr "" + +#: fields/taxonomy.php:899 +#, php-format +msgid "%s already exists" +msgstr "" + +#: fields/taxonomy.php:940 +#, php-format +msgid "%s added" +msgstr "" + +#: fields/taxonomy.php:985 +msgid "Add" +msgstr "" + +#: fields/text.php:36 +msgid "Text" +msgstr "テキスト" + +#: fields/text.php:184 fields/textarea.php:163 +msgid "Character Limit" +msgstr "åˆ¶é™æ–‡å­—æ•°" + +#: fields/text.php:185 fields/textarea.php:164 +msgid "Leave blank for no limit" +msgstr "制é™ã—ãªã„å ´åˆã¯ç©ºç™½ã®ã¾ã¾ã§" + +#: fields/textarea.php:36 +msgid "Text Area" +msgstr "テキストエリア" + +#: fields/textarea.php:172 +msgid "Rows" +msgstr "行数" + +#: fields/textarea.php:173 +msgid "Sets the textarea height" +msgstr "テキストエリアã®é«˜ã•を指定" + +#: fields/textarea.php:182 +msgid "New Lines" +msgstr "改行" + +#: fields/textarea.php:183 +msgid "Controls how new lines are rendered" +msgstr "改行をã©ã®ã‚ˆã†ã«è¡¨ç¤ºã™ã‚‹ã‹åˆ¶å¾¡" + +#: fields/textarea.php:187 +msgid "Automatically add paragraphs" +msgstr "è‡ªå‹•çš„ã«æ®µè½ã«å¤‰æ›" + +#: fields/textarea.php:188 +msgid "Automatically add <br>" +msgstr "自動的ã«<br>ã«å¤‰æ›" + +#: fields/textarea.php:189 +msgid "No Formatting" +msgstr "ãªã«ã‚‚ã—ãªã„" + +#: fields/true_false.php:36 +msgid "True / False" +msgstr "真 / å½" + +#: fields/true_false.php:107 +msgid "eg. Show extra content" +msgstr "例:追加コンテンツを表示ã™ã‚‹" + +#: fields/url.php:36 +msgid "Url" +msgstr "URL" + +#: fields/url.php:160 +msgid "Value must be a valid URL" +msgstr "値ã¯URLå½¢å¼ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" + +#: fields/user.php:437 +msgid "Filter by role" +msgstr "ロールã§ãƒ•ィルタã™ã‚‹" + +#: fields/user.php:445 +msgid "All user roles" +msgstr "å…¨ã¦ã®æ¨©é™ã‚°ãƒ«ãƒ¼ãƒ—" + +#: fields/wysiwyg.php:37 +msgid "Wysiwyg Editor" +msgstr "Wysiwyg エディタ" + +#: fields/wysiwyg.php:297 +msgid "Visual" +msgstr "ビジュアル" + +#: fields/wysiwyg.php:298 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "テキスト" + +#: fields/wysiwyg.php:354 +msgid "Tabs" +msgstr "タブ" + +#: fields/wysiwyg.php:359 +msgid "Visual & Text" +msgstr "ビジュアル&テキスト" + +#: fields/wysiwyg.php:360 +msgid "Visual Only" +msgstr "ビジュアルã®ã¿" + +#: fields/wysiwyg.php:361 +msgid "Text Only" +msgstr "テキストã®ã¿" + +#: fields/wysiwyg.php:368 +msgid "Toolbar" +msgstr "ツールãƒãƒ¼" + +#: fields/wysiwyg.php:378 +msgid "Show Media Upload Buttons?" +msgstr "メディアアップロードボタンを表示ã™ã‚‹ã‹ï¼Ÿ" + +#: forms/post.php:297 pro/admin/options-page.php:373 +msgid "Edit field group" +msgstr "フィールドグループを編集" + +#: pro/acf-pro.php:24 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/acf-pro.php:175 +msgid "Flexible Content requires at least 1 layout" +msgstr "柔軟コンテンツã¯å°‘ãªãã¨ã‚‚1個ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãŒå¿…è¦ã§ã™" + +#: pro/admin/options-page.php:48 +msgid "Options Page" +msgstr "オプションページ" + +#: pro/admin/options-page.php:83 +msgid "No options pages exist" +msgstr "オプションページã¯ã‚りã¾ã›ã‚“" + +#: pro/admin/options-page.php:298 +msgid "Options Updated" +msgstr "オプションを更新ã—ã¾ã—ãŸ" + +#: pro/admin/options-page.php:304 +msgid "No Custom Field Groups found for this options page. Create a Custom Field Group" +msgstr "" +"ã“ã®ã‚ªãƒ—ションページã«ã‚«ã‚¹ã‚¿ãƒ ãƒ•ィールドグループãŒã‚りã¾ã›ã‚“. カスタムフィールドグループ" +"を作æˆ" + +#: pro/admin/settings-updates.php:137 +msgid "Error. Could not connect to update server" +msgstr "エラー 更新サーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“" + +#: pro/admin/settings-updates.php:267 pro/admin/settings-updates.php:338 +msgid "Connection Error. Sorry, please try again" +msgstr "接続エラー ã™ã¿ã¾ã›ã‚“ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã¿ã¦ãã ã•ã„" + +#: pro/admin/views/options-page.php:48 +msgid "Publish" +msgstr "公開" + +#: pro/admin/views/options-page.php:54 +msgid "Save Options" +msgstr "オプションをä¿å­˜" + +#: pro/admin/views/settings-updates.php:11 +msgid "Deactivate License" +msgstr "ライセンスã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ãƒˆã‚’解除" + +#: pro/admin/views/settings-updates.php:11 +msgid "Activate License" +msgstr "ライセンスをアクティベート" + +#: pro/admin/views/settings-updates.php:21 +msgid "License" +msgstr "ライセンス" + +#: pro/admin/views/settings-updates.php:24 +msgid "" +"To unlock updates, please enter your license key below. If you don't have a licence key, please see" +msgstr "" +"アップデートã®ãƒ­ãƒƒã‚¯ã‚’解除ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã«ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚­ãƒ¼ã‚’入力ã—ã¦ãã ã•ã„。ライセンスキーをæŒã£ã¦ã„ãªã„" +"å ´åˆã¯ã€ã“ã¡ã‚‰ã‚’å‚ç…§ã—ã¦ãã ã•ã„。" + +#: pro/admin/views/settings-updates.php:24 +msgid "details & pricing" +msgstr "価格ã¨è©³ç´°" + +#: pro/admin/views/settings-updates.php:33 +msgid "License Key" +msgstr "ライセンスキー" + +#: pro/admin/views/settings-updates.php:65 +msgid "Update Information" +msgstr "アップデート情報" + +#: pro/admin/views/settings-updates.php:72 +msgid "Current Version" +msgstr "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³" + +#: pro/admin/views/settings-updates.php:80 +msgid "Latest Version" +msgstr "最新ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³" + +#: pro/admin/views/settings-updates.php:88 +msgid "Update Available" +msgstr "利用å¯èƒ½ãªã‚¢ãƒƒãƒ—デート" + +#: pro/admin/views/settings-updates.php:96 +msgid "Update Plugin" +msgstr "プラグインをアップデート" + +#: pro/admin/views/settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "アップデートã®ãƒ­ãƒƒã‚¯ã‚’解除ã™ã‚‹ãŸã‚ã«ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚­ãƒ¼ã‚’入力ã—ã¦ãã ã•ã„" + +#: pro/admin/views/settings-updates.php:104 +msgid "Check Again" +msgstr "å†ç¢ºèª" + +#: pro/admin/views/settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "アップグレード通知" + +#: pro/api/api-options-page.php:22 pro/api/api-options-page.php:23 +msgid "Options" +msgstr "オプション" + +#: pro/core/updates.php:186 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't " +"have a licence key, please see details & pricing" +msgstr "" +"アップデートを有効ã«ã™ã‚‹ã«ã¯ã€ã‚¢ãƒƒãƒ—デートページã«ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚­ãƒ¼ã‚’入力ã—ã¦ãã ã•ã„。" +"ライセンスキーをæŒã£ã¦ã„ãªã„å ´åˆã¯ã€ã“ã¡ã‚‰ã‚’詳細ã¨ä¾¡æ ¼å‚ç…§ã—ã¦ãã ã•ã„。" + +#: pro/fields/flexible-content.php:36 +msgid "Flexible Content" +msgstr "柔軟コンテンツ" + +#: pro/fields/flexible-content.php:42 pro/fields/repeater.php:43 +msgid "Add Row" +msgstr "行を追加" + +#: pro/fields/flexible-content.php:45 +msgid "layout" +msgstr "レイアウト" + +#: pro/fields/flexible-content.php:46 +msgid "layouts" +msgstr "レイアウト" + +#: pro/fields/flexible-content.php:47 +msgid "remove {layout}?" +msgstr "{layout} を削除ã—ã¾ã™ã‹ï¼Ÿ" + +#: pro/fields/flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "ã“ã®ãƒ•ィールドã¯{identifier}ãŒæœ€ä½Ž{min}個ã¯å¿…è¦ã§ã™" + +#: pro/fields/flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "ã“ã®ãƒ•ィールドã¯{identifier}ãŒæœ€é«˜{max}個ã¾ã§ã§ã™" + +#: pro/fields/flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "{identifier}ã«{label}ã¯æœ€ä½Ž{min}個必è¦ã§ã™" + +#: pro/fields/flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "{label}ã¯æœ€å¤§æ•°ã«é”ã—ã¾ã—ãŸï¼ˆ{max} {identifier})" + +#: pro/fields/flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "ã‚ã¨{available}個 {identifier}ã«ã¯ {label} を利用ã§ãã¾ã™ï¼ˆæœ€å¤§ {max}個)" + +#: pro/fields/flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "ã‚ã¨{required}個 {identifier}ã«ã¯ {label} を利用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼ˆæœ€å° {max}個)" + +#: pro/fields/flexible-content.php:211 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "下㮠\"%s\" ボタンをクリックã—ã¦ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®ä½œæˆã‚’å§‹ã‚ã¦ãã ã•ã„" + +#: pro/fields/flexible-content.php:369 +msgid "Add layout" +msgstr "レイアウトを追加" + +#: pro/fields/flexible-content.php:372 +msgid "Remove layout" +msgstr "レイアウトを削除" + +#: pro/fields/flexible-content.php:514 +msgid "Reorder Layout" +msgstr "ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’ä¸¦ã¹æ›¿ãˆ" + +#: pro/fields/flexible-content.php:514 +msgid "Reorder" +msgstr "ä¸¦ã¹æ›¿ãˆ" + +#: pro/fields/flexible-content.php:515 +msgid "Delete Layout" +msgstr "レイアウトを削除" + +#: pro/fields/flexible-content.php:516 +msgid "Duplicate Layout" +msgstr "レイアウトを複製" + +#: pro/fields/flexible-content.php:517 +msgid "Add New Layout" +msgstr "æ–°ã—ã„レイアウトを追加" + +#: pro/fields/flexible-content.php:561 +msgid "Display" +msgstr "表示" + +#: pro/fields/flexible-content.php:572 pro/fields/repeater.php:399 +msgid "Table" +msgstr "表" + +#: pro/fields/flexible-content.php:573 pro/fields/repeater.php:400 +msgid "Block" +msgstr "ブロック" + +#: pro/fields/flexible-content.php:574 pro/fields/repeater.php:401 +msgid "Row" +msgstr "行" + +#: pro/fields/flexible-content.php:589 +msgid "Min" +msgstr "æœ€å°æ•°" + +#: pro/fields/flexible-content.php:602 +msgid "Max" +msgstr "最大数" + +#: pro/fields/flexible-content.php:630 pro/fields/repeater.php:408 +msgid "Button Label" +msgstr "ボタンã®ãƒ©ãƒ™ãƒ«" + +#: pro/fields/flexible-content.php:639 +msgid "Minimum Layouts" +msgstr "ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®æœ€å°æ•°" + +#: pro/fields/flexible-content.php:648 +msgid "Maximum Layouts" +msgstr "ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®æœ€å¤§æ•°" + +#: pro/fields/gallery.php:36 +msgid "Gallery" +msgstr "ギャラリー" + +#: pro/fields/gallery.php:52 +msgid "Add Image to Gallery" +msgstr "ギャラリーã«ç”»åƒã‚’追加" + +#: pro/fields/gallery.php:56 +msgid "Maximum selection reached" +msgstr "é¸æŠžã®æœ€å¤§æ•°ã«åˆ°é”ã—ã¾ã—ãŸ" + +#: pro/fields/gallery.php:335 +msgid "Length" +msgstr "é•·ã•" + +#: pro/fields/gallery.php:355 +msgid "Remove" +msgstr "å–り除ã" + +#: pro/fields/gallery.php:535 +msgid "Add to gallery" +msgstr "ギャラリーを追加" + +#: pro/fields/gallery.php:539 +msgid "Bulk actions" +msgstr "一括æ“作" + +#: pro/fields/gallery.php:540 +msgid "Sort by date uploaded" +msgstr "アップロード日ã§ä¸¦ã¹æ›¿ãˆ" + +#: pro/fields/gallery.php:541 +msgid "Sort by date modified" +msgstr "変更日ã§ä¸¦ã³æ›¿ãˆ" + +#: pro/fields/gallery.php:542 +msgid "Sort by title" +msgstr "タイトルã§ä¸¦ã³æ›¿ãˆ" + +#: pro/fields/gallery.php:543 +msgid "Reverse current order" +msgstr "並ã³é †ã‚’逆ã«ã™ã‚‹" + +#: pro/fields/gallery.php:561 +msgid "Close" +msgstr "é–‰ã˜ã‚‹" + +#: pro/fields/gallery.php:619 +msgid "Minimum Selection" +msgstr "最å°é¸æŠžæ•°" + +#: pro/fields/gallery.php:628 +msgid "Maximum Selection" +msgstr "æœ€å¤§é¸æŠžæ•°" + +#: pro/fields/gallery.php:809 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s ã¯å°‘ãªãã¨ã‚‚ %s個 é¸æŠžã—ã¦ãã ã•ã„" + +#: pro/fields/repeater.php:36 +msgid "Repeater" +msgstr "繰り返ã—フィールド" + +#: pro/fields/repeater.php:46 +msgid "Minimum rows reached ({min} rows)" +msgstr "最å°è¡Œæ•°ã«é”ã—ã¾ã—ãŸï¼ˆ{min} 行)" + +#: pro/fields/repeater.php:47 +msgid "Maximum rows reached ({max} rows)" +msgstr "最大行数ã«é”ã—ã¾ã—ãŸï¼ˆ{max} 行)" + +#: pro/fields/repeater.php:259 +msgid "Drag to reorder" +msgstr "ドラッグã—ã¦ä¸¦ã³æ›¿ãˆ" + +#: pro/fields/repeater.php:301 +msgid "Add row" +msgstr "行を追加" + +#: pro/fields/repeater.php:302 +msgid "Remove row" +msgstr "行を削除" + +#: pro/fields/repeater.php:350 +msgid "Sub Fields" +msgstr "サブフィールド" + +#: pro/fields/repeater.php:372 +msgid "Minimum Rows" +msgstr "最å°è¡Œæ•°" + +#: pro/fields/repeater.php:382 +msgid "Maximum Rows" +msgstr "最大行数" + +#. Plugin Name of the plugin/theme +msgid "Advanced Custom Fields Pro" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://www.advancedcustomfields.com/" +msgstr "" + +#. Description of the plugin/theme +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" + +#. Author of the plugin/theme +msgid "elliot condon" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "" + +#~ msgid "Hide / Show All" +#~ msgstr "全㦠éžè¡¨ç¤º / 表示" + +#~ msgid "Show Field Keys" +#~ msgstr "フィールドキーを表示" + +#~ msgid "Pending Review" +#~ msgstr "レビュー待ã¡" + +#~ msgid "Draft" +#~ msgstr "下書ã" + +#~ msgid "Future" +#~ msgstr "予約投稿" + +#~ msgid "Private" +#~ msgstr "éžå…¬é–‹" + +#~ msgid "Revision" +#~ msgstr "リビジョン" + +#~ msgid "Trash" +#~ msgstr "ゴミ箱" + +#~ msgid "Import / Export" +#~ msgstr "インãƒãƒ¼ãƒˆ / エクスãƒãƒ¼ãƒˆ" + +#~ msgid "Field groups are created in order
                          from lowest to highest" +#~ msgstr "フィールドグループã¯ã€é †ç•ªãŒå°ã•ã„ã»ã†ã‹ã‚‰å¤§ãã„ã»ã†ã¸ä½œæˆã•れã¾ã™" + +#~ msgid "" +#~ "If multiple field groups appear on an edit screen, the first field group's options will be used. " +#~ "(the one with the lowest order number)" +#~ msgstr "" +#~ "編集画é¢ã«è¤‡æ•°ã®ãƒ•ィールドグループãŒè¡¨ç¤ºã•れる場åˆã€æœ€åˆã®ï¼ˆ=é †ç•ªã®æœ€ã‚‚å°ã•ã„)フィールドグループã®ã‚ª" +#~ "プションãŒä½¿ç”¨ã•れã¾ã™ã€‚" + +#~ msgid "ACF PRO Required" +#~ msgstr "ACF PROãŒå¿…è¦ã§ã™" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website makes use of premium add-ons " +#~ "(%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "ã‚ãªãŸã«æ³¨æ„ã™ã¹ãå•題ãŒã‚りã¾ã™ï¼šæœ‰æ–™ã‚¢ãƒ‰ã‚ªãƒ³ï¼ˆ%s)を利用ã—ãŸã“ã®ã‚¦ã‚§ãƒ–サイトã«ACFã¯ã‚‚ã¯ã‚„対応ã—ã¦ã„" +#~ "ã¾ã›ã‚“。" + +#~ msgid "Don't panic, you can simply roll back the plugin and continue using ACF as you know it!" +#~ msgstr "" +#~ "æ…Œã¦ãªã„ã§ãã ã•ã„ã€ãƒ—ラグインをロールãƒãƒƒã‚¯ã™ã‚‹ã“ã¨ã§ä»Šã¾ã§ã©ãŠã‚ŠACFを使用ã—ç¶šã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼" + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "ACF v%sã«ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ã™ã‚‹" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "ãªãœè‡ªåˆ†ã®ã‚µã‚¤ãƒˆã«ACF PROãŒå¿…è¦ãªã®ã‹å­¦ã¶" + +#~ msgid "Update Database" +#~ msgstr "データベースを更新" + +#~ msgid "Data Upgrade" +#~ msgstr "データアップグレード" + +#~ msgid "Data upgraded successfully." +#~ msgstr "データアップグレードæˆåŠŸ" + +#~ msgid "Data is at the latest version." +#~ msgstr "ãƒ‡ãƒ¼ã‚¿ã¯æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™" + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "下記㮠%s個 ã®å¿…須フィールドãŒç©ºã§ã™" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "ターム情報ã®èª­è¾¼ï¼ä¿å­˜" + +#~ msgid "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "投稿ターム情報を読ã¿è¾¼ã¿ã€ä¿å­˜æ™‚ã«å映ã•ã›ã‚‹" + +#~ msgid "Top Level Page (parent of 0)" +#~ msgstr "一番上ã®éšŽå±¤ï¼ˆè¦ªãƒšãƒ¼ã‚¸ãŒãªã„)" + +#~ msgid "Logged in User Type" +#~ msgstr "ログインã—ã¦ã„るユーザーã®ã‚¿ã‚¤ãƒ—" + +#~ msgid "Field Groups" +#~ msgstr "フィールドグループ" + +#~ msgid "Custom field updated." +#~ msgstr "カスタムフィールドを更新ã—ã¾ã—ãŸ" + +#~ msgid "Custom field deleted." +#~ msgstr "カスタムフィールドを削除ã—ã¾ã—ãŸ" + +#~ msgid "Field group restored to revision from %s" +#~ msgstr "リビジョン %s ã‹ã‚‰ãƒ•ィールドグループを復元ã—ã¾ã—ãŸ" + +#~ msgid "Full" +#~ msgstr "フルサイズ" + +#~ msgid "No ACF groups selected" +#~ msgstr "ACF グループãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#~ msgid "Repeater Field" +#~ msgstr "繰り返ã—フィールド" + +#~ msgid "Create infinite rows of repeatable data with this versatile interface!" +#~ msgstr "ç¹°ã‚Šè¿”ã—æŒ¿å…¥å¯èƒ½ãªãƒ•ォームをã€ã™ã¦ããªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã§ä½œæˆã—ã¾ã™ã€‚" + +#~ msgid "Gallery Field" +#~ msgstr "ギャラリーフィールド" + +#~ msgid "Create image galleries in a simple and intuitive interface!" +#~ msgstr "ç”»åƒã‚®ãƒ£ãƒ©ãƒªãƒ¼ã‚’ã€ã‚·ãƒ³ãƒ—ルã§ç›´æ„Ÿçš„ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã§ä½œæˆã—ã¾ã™ã€‚" + +#~ msgid "Create global data to use throughout your website!" +#~ msgstr "ウェブサイト全体ã§ä½¿ç”¨ã§ãるグローãƒãƒ«ãƒ‡ãƒ¼ã‚¿ã‚’作æˆã—ã¾ã™ã€‚" + +#~ msgid "Flexible Content Field" +#~ msgstr "柔軟コンテンツフィールド" + +#~ msgid "Create unique designs with a flexible content layout manager!" +#~ msgstr "柔軟ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„レイアウト管ç†ã«ã‚ˆã‚Šã€ã™ã¦ããªãƒ‡ã‚¶ã‚¤ãƒ³ã‚’作æˆã—ã¾ã™ã€‚" + +#~ msgid "Gravity Forms Field" +#~ msgstr "Gravity Forms フィールド" + +#~ msgid "Creates a select field populated with Gravity Forms!" +#~ msgstr "Creates a select field populated with Gravity Forms!" + +#, fuzzy +#~ msgid "Date & Time Picker" +#~ msgstr "デイトピッカー" + +#~ msgid "jQuery date & time picker" +#~ msgstr "jQuery デイトタイムピッカー" + +#, fuzzy +#~ msgid "Location Field" +#~ msgstr "ä½ç½®" + +#~ msgid "Find addresses and coordinates of a desired location" +#~ msgstr "Find addresses and coordinates of a desired location" + +#, fuzzy +#~ msgid "Contact Form 7 Field" +#~ msgstr "カスタムフィールド" + +#~ msgid "Assign one or more contact form 7 forms to a post" +#~ msgstr "Assign one or more contact form 7 forms to a post" + +#, fuzzy +#~ msgid "Advanced Custom Fields Add-Ons" +#~ msgstr "Advanced Custom Fields" + +#~ msgid "" +#~ "The following Add-ons are available to increase the functionality of the Advanced Custom Fields " +#~ "plugin." +#~ msgstr "Advanced Custom Fields ãƒ—ãƒ©ã‚°ã‚¤ãƒ³ã«æ©Ÿèƒ½ã‚’追加ã™ã‚‹ã‚¢ãƒ‰ã‚ªãƒ³ãŒåˆ©ç”¨ã§ãã¾ã™ã€‚" + +#~ msgid "" +#~ "Each Add-on can be installed as a separate plugin (receives updates) or included in your theme (does " +#~ "not receive updates)." +#~ msgstr "" +#~ "ãれãžã‚Œã®ã‚¢ãƒ‰ã‚ªãƒ³ã¯ã€å€‹åˆ¥ã®ãƒ—ラグインã¨ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹(管ç†ç”»é¢ã§æ›´æ–°ã§ãã‚‹)ã‹ã€ãƒ†ãƒ¼ãƒžã«å«ã‚ã‚‹" +#~ "(管ç†ç”»é¢ã§æ›´æ–°ã§ããªã„)ã‹ã—ã¦ãã ã•ã„。" + +#~ msgid "Purchase & Install" +#~ msgstr "購入ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹" + +#~ msgid "Download" +#~ msgstr "ダウンロードã™ã‚‹" + +#, fuzzy +#~ msgid "Export" +#~ msgstr "XML をエクスãƒãƒ¼ãƒˆã™ã‚‹" + +#, fuzzy +#~ msgid "Select the field groups to be exported" +#~ msgstr "一覧ã‹ã‚‰ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠžã—ã€\"XML をエクスãƒãƒ¼ãƒˆã™ã‚‹\" をクリックã—ã¦ãã ã•ã„" + +#, fuzzy +#~ msgid "Export to XML" +#~ msgstr "XML をエクスãƒãƒ¼ãƒˆã™ã‚‹" + +#, fuzzy +#~ msgid "Export to PHP" +#~ msgstr "フィールドグループを PHP å½¢å¼ã§ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã™ã‚‹" + +#~ msgid "ACF will create a .xml export file which is compatible with the native WP import plugin." +#~ msgstr "" +#~ "ACF 㯠.xml å½¢å¼ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ•ァイルを作æˆã—ã¾ã™ã€‚WP ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆãƒ—ラグインã¨äº’æ›æ€§ãŒã‚りã¾ã™ã€‚" + +#~ msgid "" +#~ "Imported field groups will appear in the list of editable field groups. This is useful for " +#~ "migrating fields groups between Wp websites." +#~ msgstr "" +#~ "インãƒãƒ¼ãƒˆã—ãŸãƒ•ィールドグループã¯ã€ç·¨é›†å¯èƒ½ãªãƒ•ィールドグループã®ä¸€è¦§ã«è¡¨ç¤ºã•れã¾ã™ã€‚WP ウェブサイト" +#~ "é–“ã§ãƒ•ィールドグループを移行ã™ã‚‹ã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚" + +#~ msgid "Select field group(s) from the list and click \"Export XML\"" +#~ msgstr "一覧ã‹ã‚‰ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠžã—ã€\"XML をエクスãƒãƒ¼ãƒˆã™ã‚‹\" をクリックã—ã¦ãã ã•ã„" + +#~ msgid "Save the .xml file when prompted" +#~ msgstr "指示ã«å¾“ã£ã¦ .xml ファイルをä¿å­˜ã—ã¦ãã ã•ã„" + +#~ msgid "Navigate to Tools » Import and select WordPress" +#~ msgstr "ツール » インãƒãƒ¼ãƒˆã¨é€²ã¿ã€WordPress ã‚’é¸æŠžã—ã¦ãã ã•ã„" + +#~ msgid "Install WP import plugin if prompted" +#~ msgstr "(インストールを促ã•れãŸå ´åˆã¯) WP インãƒãƒ¼ãƒˆãƒ—ラグインをインストールã—ã¦ãã ã•ã„" + +#~ msgid "Upload and import your exported .xml file" +#~ msgstr "エクスãƒãƒ¼ãƒˆã—㟠.xml ファイルをアップロードã—ã€ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹" + +#~ msgid "Select your user and ignore Import Attachments" +#~ msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’é¸æŠžã™ã‚‹ãŒã€Import Attachments ã‚’é¸æŠžã—ãªã„" + +#~ msgid "That's it! Happy WordPressing" +#~ msgstr "ã“れ㧠OK ã§ã™ã€‚WordPress ã‚’ãŠæ¥½ã—ã¿ãã ã•ã„" + +#~ msgid "ACF will create the PHP code to include in your theme." +#~ msgstr "ACF ã¯ã€ãƒ†ãƒ¼ãƒžã«å«ã‚ã‚‹ PHP コードを作æˆã—ã¾ã™" + +#~ msgid "" +#~ "Registered field groups will not appear in the list of editable field groups. This is useful " +#~ "for including fields in themes." +#~ msgstr "" +#~ "登録ã—ãŸãƒ•ィールドグループã¯ã€ç·¨é›†å¯èƒ½ãªãƒ•ィールドグループã®ä¸€è¦§ã«è¡¨ç¤ºã•れã¾ã›ã‚“。テーマã«" +#~ "フィールドをå«ã‚ã‚‹ã¨ãã«å½¹ç«‹ã¡ã¾ã™ã€‚" + +#~ msgid "" +#~ "Please note that if you export and register field groups within the same WP, you will see duplicate " +#~ "fields on your edit screens. To fix this, please move the original field group to the trash or " +#~ "remove the code from your functions.php file." +#~ msgstr "" +#~ "åŒä¸€ã® WP ã§ãƒ•ィールドグループをエクスãƒãƒ¼ãƒˆã—ã¦ç™»éŒ²ã™ã‚‹å ´åˆã¯ã€ç·¨é›†ç”»é¢ã§é‡è¤‡ãƒ•ィールドã«ãªã‚‹ã“ã¨ã«" +#~ "注æ„ã—ã¦ãã ã•ã„。ã“れを修正ã™ã‚‹ã«ã¯ã€å…ƒã®ãƒ•ィールドグループをゴミ箱ã¸ç§»å‹•ã™ã‚‹ã‹ã€functions.php ファ" +#~ "イルã‹ã‚‰ã“ã®ã‚³ãƒ¼ãƒ‰ã‚’除去ã—ã¦ãã ã•ã„。" + +#~ msgid "Select field group(s) from the list and click \"Create PHP\"" +#~ msgstr "一覧ã‹ã‚‰ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚°ãƒ«ãƒ¼ãƒ—ã‚’é¸æŠžã—ã€\"PHP å½¢å¼ã®ãƒ‡ãƒ¼ã‚¿ã‚’作æˆã™ã‚‹\" をクリックã—ã¦ãã ã•ã„。" + +#~ msgid "Copy the PHP code generated" +#~ msgstr "生æˆã•れ㟠PHP コードをコピーã—ã€" + +#~ msgid "Paste into your functions.php file" +#~ msgstr "functions.php ã«è²¼ã‚Šä»˜ã‘ã¦ãã ã•ã„" + +#~ msgid "To activate any Add-ons, edit and use the code in the first few lines." +#~ msgstr "アドオンを有効化ã™ã‚‹ã«ã¯ã€æœ€åˆã®ä½•行ã‹ã®ã‚³ãƒ¼ãƒ‰ã‚’編集ã—ã¦ä½¿ç”¨ã—ã¦ãã ã•ã„" + +#~ msgid "Notes" +#~ msgstr "注æ„" + +#~ msgid "Include in theme" +#~ msgstr "テーマã«å«ã‚ã‚‹" + +#~ msgid "" +#~ "The Advanced Custom Fields plugin can be included within a theme. To do so, move the ACF plugin " +#~ "inside your theme and add the following code to your functions.php file:" +#~ msgstr "" +#~ "Advanced Custom Fields プラグインã¯ã€ãƒ†ãƒ¼ãƒžã«å«ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚プラグインをテーマ内ã«ç§»å‹•ã—ã€" +#~ "functions.php ã«ä¸‹è¨˜ã‚³ãƒ¼ãƒ‰ã‚’追加ã—ã¦ãã ã•ã„。" + +#~ msgid "" +#~ "To remove all visual interfaces from the ACF plugin, you can use a constant to enable lite mode. Add " +#~ "the following code to your functions.php file before the include_once code:" +#~ msgstr "" +#~ "Advanced Custom Fields プラグインã®ãƒ“ジュアルインターフェースをå–り除ãã«ã¯ã€å®šæ•°ã‚’利用ã—ã¦ã€Œãƒ©ã‚¤ãƒˆ" +#~ "モードã€ã‚’有効ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚functions.php ã® include_once よりもå‰ã«ä¸‹è¨˜ã®ã‚³ãƒ¼ãƒ‰ã‚’追加" +#~ "ã—ã¦ãã ã•ã„。" + +#, fuzzy +#~ msgid "Back to export" +#~ msgstr "è¨­å®šã«æˆ»ã‚‹" + +#~ msgid "" +#~ "/**\n" +#~ " * Install Add-ons\n" +#~ " * \n" +#~ " * The following code will include all 4 premium Add-Ons in your theme.\n" +#~ " * Please do not attempt to include a file which does not exist. This will produce an error.\n" +#~ " * \n" +#~ " * All fields must be included during the 'acf/register_fields' action.\n" +#~ " * Other types of Add-ons (like the options page) can be included outside of this action.\n" +#~ " * \n" +#~ " * The following code assumes you have a folder 'add-ons' inside your theme.\n" +#~ " *\n" +#~ " * IMPORTANT\n" +#~ " * Add-ons may be included in a premium theme as outlined in the terms and conditions.\n" +#~ " * However, they are NOT to be included in a premium / free plugin.\n" +#~ " * For more information, please read http://www.advancedcustomfields.com/terms-conditions/\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * Install Add-ons\n" +#~ " * \n" +#~ " * The following code will include all 4 premium Add-Ons in your theme.\n" +#~ " * Please do not attempt to include a file which does not exist. This will produce an error.\n" +#~ " * \n" +#~ " * All fields must be included during the 'acf/register_fields' action.\n" +#~ " * Other types of Add-ons (like the options page) can be included outside of this action.\n" +#~ " * \n" +#~ " * The following code assumes you have a folder 'add-ons' inside your theme.\n" +#~ " *\n" +#~ " * IMPORTANT\n" +#~ " * Add-ons may be included in a premium theme as outlined in the terms and conditions.\n" +#~ " * However, they are NOT to be included in a premium / free plugin.\n" +#~ " * For more information, please read http://www.advancedcustomfields.com/terms-conditions/\n" +#~ " */" + +#, fuzzy +#~ msgid "" +#~ "/**\n" +#~ " * Register Field Groups\n" +#~ " *\n" +#~ " * The register_field_group function accepts 1 array which holds the relevant data to register a " +#~ "field group\n" +#~ " * You may edit the array as you see fit. However, this may result in errors if the array is not " +#~ "compatible with ACF\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * フィールドグループを登録ã™ã‚‹\n" +#~ " * register_field_group 関数ã¯ã€ãƒ•ィールドグループを登録ã™ã‚‹ã®ã«é–¢ä¿‚ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã‚’æŒã£ã¦ã„る一ã¤ã®é…列" +#~ "ã‚’å—ã‘付ã‘ã¾ã™ã€‚\n" +#~ " * é…列を好ããªã‚ˆã†ã«ç·¨é›†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã—ã‹ã—ã€é…列㌠ACF ã¨äº’æ›æ€§ã®ç„¡ã„å ´åˆã€ã‚¨ãƒ©ãƒ¼ã«ãªã£ã¦ã—" +#~ "ã¾ã„ã¾ã™ã€‚\n" +#~ " * ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ã€functions.php ファイルを読ã¿è¾¼ã‚€åº¦ã«å®Ÿè¡Œã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚\n" +#~ " */" + +#~ msgid "No field groups were selected" +#~ msgstr "フィールドグループãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "Show Field Key:" +#~ msgstr "フィールドキー" + +#~ msgid "Vote" +#~ msgstr "投票" + +#~ msgid "Follow" +#~ msgstr "フォロー" + +#~ msgid "Thank you for updating to the latest version!" +#~ msgstr "最新版ã¸ã®æ›´æ–°ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚" + +#~ msgid "is more polished and enjoyable than ever before. We hope you like it." +#~ msgstr "ã¯ä»¥å‰ã‚ˆã‚Šã‚‚æ´—ç·´ã•れã€ã‚ˆã‚Šè‰¯ããªã‚Šã¾ã—ãŸã€‚æ°—ã«å…¥ã£ã¦ã‚‚らãˆã‚‹ã¨å¬‰ã—ã„ã§ã™ã€‚" + +#~ msgid "What’s New" +#~ msgstr "更新情報" + +#, fuzzy +#~ msgid "Download Add-ons" +#~ msgstr "アドオンを探ã™" + +#~ msgid "Activation codes have grown into plugins!" +#~ msgstr "アクティベーションコードã‹ã‚‰ã€ãƒ—ラグインã«å¤‰æ›´ã•れã¾ã—ãŸã€‚" + +#~ msgid "" +#~ "Add-ons are now activated by downloading and installing individual plugins. Although these plugins " +#~ "will not be hosted on the wordpress.org repository, each Add-on will continue to receive updates in " +#~ "the usual way." +#~ msgstr "" +#~ "アドオンã¯ã€å€‹åˆ¥ã®ãƒ—ラグインをダウンロードã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„。wordpress.org リãƒã‚¸ãƒˆãƒªã«ã¯" +#~ "ã‚りã¾ã›ã‚“ãŒã€ç®¡ç†ç”»é¢ã§ã“れらã®ã‚¢ãƒ‰ã‚ªãƒ³ã®æ›´æ–°ã‚’行ã†äº‹ãŒå‡ºæ¥ã¾ã™ã€‚" + +#~ msgid "All previous Add-ons have been successfully installed" +#~ msgstr "今ã¾ã§ä½¿ç”¨ã—ã¦ã„ãŸã‚¢ãƒ‰ã‚ªãƒ³ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã—ãŸã€‚" + +#~ msgid "This website uses premium Add-ons which need to be downloaded" +#~ msgstr "" +#~ "ã“ã®ã‚¦ã‚§ãƒ–サイトã§ã¯ãƒ—レミアムアドオンãŒä½¿ç”¨ã•れã¦ãŠã‚Šã€ã‚¢ãƒ‰ã‚ªãƒ³ã‚’ダウンロードã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" + +#, fuzzy +#~ msgid "Download your activated Add-ons" +#~ msgstr "アドオンを有効化ã™ã‚‹" + +#~ msgid "This website does not use premium Add-ons and will not be affected by this change." +#~ msgstr "ã“ã®ã‚¦ã‚§ãƒ–サイトã§ã¯ãƒ—レミアムアドオンを使用ã—ã¦ãŠã‚‰ãšã€ã“ã®å¤‰æ›´ã«å½±éŸ¿ã•れã¾ã›ã‚“。" + +#~ msgid "Easier Development" +#~ msgstr "開発を容易ã«" + +#, fuzzy +#~ msgid "New Field Types" +#~ msgstr "フィールドタイプ" + +#, fuzzy +#~ msgid "Taxonomy Field" +#~ msgstr "タクソノミー" + +#, fuzzy +#~ msgid "User Field" +#~ msgstr "フィールドを閉ã˜ã‚‹" + +#, fuzzy +#~ msgid "Email Field" +#~ msgstr "ギャラリーフィールド" + +#, fuzzy +#~ msgid "Password Field" +#~ msgstr "æ–°è¦ãƒ•ィールド" + +#, fuzzy +#~ msgid "Custom Field Types" +#~ msgstr "カスタムフィールド" + +#~ msgid "" +#~ "Creating your own field type has never been easier! Unfortunately, version 3 field types are not " +#~ "compatible with version 4." +#~ msgstr "" +#~ "独自ã®ãƒ•ィールドタイプãŒç°¡å˜ã«ä½œæˆã§ãã¾ã™ã€‚残念ã§ã™ãŒã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ã¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4 ã«ã¯äº’æ›æ€§ãŒã‚り" +#~ "ã¾ã›ã‚“。" + +#~ msgid "Migrating your field types is easy, please" +#~ msgstr "フィールドタイプをマイグレーションã™ã‚‹ã®ã¯ç°¡å˜ã§ã™ã€‚" + +#~ msgid "follow this tutorial" +#~ msgstr "ã“ã®ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã«å¾“ã£ã¦ãã ã•ã„。" + +#~ msgid "to learn more." +#~ msgstr "詳細を見る" + +#~ msgid "Actions & Filters" +#~ msgstr "アクションã¨ãƒ•ィルター" + +#~ msgid "" +#~ "All actions & filters have received a major facelift to make customizing ACF even easier! Please" +#~ msgstr "カスタマイズを簡å˜ã«ã™ã‚‹ãŸã‚ã€ã™ã¹ã¦ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã¨ãƒ•ィルターを改装ã—ã¾ã—ãŸã€‚" + +#, fuzzy +#~ msgid "read this guide" +#~ msgstr "ã“ã®ãƒ•ィールドを編集ã™ã‚‹" + +#~ msgid "to find the updated naming convention." +#~ msgstr "æ–°ã—ã„命åè¦å‰‡ã‚’ã”らんãã ã•ã„。" + +#~ msgid "Preview draft is now working!" +#~ msgstr "ãƒ—ãƒ¬ãƒ“ãƒ¥ãƒ¼ãŒæœ‰åйã«ãªã‚Šã¾ã—ãŸã€‚" + +#~ msgid "This bug has been squashed along with many other little critters!" +#~ msgstr "ã“ã®ãƒã‚°ã‚’修正ã—ã¾ã—ãŸã€‚" + +#~ msgid "See the full changelog" +#~ msgstr "å…¨ã¦ã®æ›´æ–°å±¥æ­´ã‚’見る" + +#~ msgid "Important" +#~ msgstr "é‡è¦" + +#~ msgid "Database Changes" +#~ msgstr "データベース更新" + +#~ msgid "" +#~ "Absolutely no changes have been made to the database between versions 3 and 4. This " +#~ "means you can roll back to version 3 without any issues." +#~ msgstr "" +#~ "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 㨠4 ã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æ›´æ–°ã¯ã‚りã¾ã›ã‚“。å•題ãŒç™ºç”Ÿã—ãŸå ´åˆã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ã¸ã®ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯" +#~ "を行ã†ã“ã¨ãŒã§ãã¾ã™ã€‚" + +#~ msgid "Potential Issues" +#~ msgstr "潜在的ãªå•題" + +#~ msgid "" +#~ "Do to the sizable changes surounding Add-ons, field types and action/filters, your website may not " +#~ "operate correctly. It is important that you read the full" +#~ msgstr "" +#~ "アドオンã€ãƒ•ィールドタイプã€ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ï¼ãƒ•ィルターã«é–¢ã™ã‚‹å¤‰æ›´ã®ãŸã‚ã€ã‚¦ã‚§ãƒ–ã‚µã‚¤ãƒˆãŒæ­£å¸¸ã«å‹•作ã—ãªã„" +#~ "å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" + +#~ msgid "Migrating from v3 to v4" +#~ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ã‹ã‚‰ 4 ã¸ã®ç§»è¡Œã‚’ã”らんãã ã•ã„。" + +#~ msgid "guide to view the full list of changes." +#~ msgstr "変更ã®ä¸€è¦§ã‚’見るã“ã¨ãŒã§ãã¾ã™ã€‚" + +#~ msgid "Really Important!" +#~ msgstr "éžå¸¸ã«é‡è¦" + +#~ msgid "" +#~ "If you updated the ACF plugin without prior knowledge of such changes, please roll back to the latest" +#~ msgstr "予備知識無ã—ã«æ›´æ–°ã—ã¦ã—ã¾ã£ãŸå ´åˆã¯ã€" + +#~ msgid "version 3" +#~ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 " + +#~ msgid "of this plugin." +#~ msgstr "ã«ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ã—ã¦ãã ã•ã„。" + +#~ msgid "Thank You" +#~ msgstr "ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™" + +#~ msgid "" +#~ "A BIG thank you to everyone who has helped test the version 4 beta and for all the " +#~ "support I have received." +#~ msgstr "" +#~ "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4 ベータã®ãƒ†ã‚¹ãƒˆã«å”力ã—ã¦ãã ã•ã£ãŸçš†ã•ã‚“ã€ã‚µãƒãƒ¼ãƒˆã—ã¦ãã ã•ã£ãŸçš†ã•ã‚“ã«æ„Ÿè¬ã—ã¾ã™ã€‚" + +#~ msgid "Without you all, this release would not have been possible!" +#~ msgstr "皆ã•ã‚“ã®åŠ©ã‘ãŒç„¡ã‘れã°ã€ãƒªãƒªãƒ¼ã‚¹ã™ã‚‹ã“ã¨ã¯ã§ããªã‹ã£ãŸã§ã—ょã†ã€‚" + +#, fuzzy +#~ msgid "Changelog for" +#~ msgstr "更新履歴" + +#~ msgid "Learn more" +#~ msgstr "詳細を見る" + +#~ msgid "Overview" +#~ msgstr "概è¦" + +#~ msgid "" +#~ "Previously, all Add-ons were unlocked via an activation code (purchased from the ACF Add-ons store). " +#~ "New to v4, all Add-ons act as separate plugins which need to be individually downloaded, installed " +#~ "and updated." +#~ msgstr "" +#~ "今ã¾ã§ã¯ã€ã‚¢ãƒ‰ã‚ªãƒ³ã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚·ãƒ§ãƒ³ã‚³ãƒ¼ãƒ‰ã§ãƒ­ãƒƒã‚¯è§£é™¤ã—ã¦ã„ã¾ã—ãŸã€‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4 ã§ã¯ã€ã‚¢ãƒ‰ã‚ªãƒ³ã¯å€‹" +#~ "別ã®ãƒ—ラグインã¨ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" + +#~ msgid "This page will assist you in downloading and installing each available Add-on." +#~ msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã¯ã€ã‚¢ãƒ‰ã‚ªãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚„インストールを手助ã‘ã—ã¾ã™ã€‚" + +#, fuzzy +#~ msgid "Available Add-ons" +#~ msgstr "アドオンを有効化ã™ã‚‹" + +#~ msgid "The following Add-ons have been detected as activated on this website." +#~ msgstr "以下ã®ã‚¢ãƒ‰ã‚ªãƒ³ãŒã“ã®ã‚¦ã‚§ãƒ–ã‚µã‚¤ãƒˆã§æœ‰åйã«ãªã£ã¦ã„ã¾ã™ã€‚" + +#~ msgid "Activation Code" +#~ msgstr "アクティベーションコード" + +#, fuzzy +#~ msgid "Installation" +#~ msgstr "説明" + +#~ msgid "For each Add-on available, please perform the following:" +#~ msgstr "ãれãžã‚Œã®ã‚¢ãƒ‰ã‚ªãƒ³ã«ã¤ã„ã¦ã€ä¸‹è¨˜ã‚’実行ã—ã¦ãã ã•ã„。" + +#~ msgid "Download the Add-on plugin (.zip file) to your desktop" +#~ msgstr "アドオン(.zip ファイル)をダウンロードã™ã‚‹" + +#~ msgid "Navigate to" +#~ msgstr "管ç†ç”»é¢ã§" + +#~ msgid "Plugins > Add New > Upload" +#~ msgstr "プラグイン > æ–°è¦è¿½åŠ  > アップロード" + +#~ msgid "Use the uploader to browse, select and install your Add-on (.zip file)" +#~ msgstr "アドオンã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹" + +#~ msgid "Once the plugin has been uploaded and installed, click the 'Activate Plugin' link" +#~ msgstr "アップロードã§ããŸã‚‰ã€æœ‰åŠ¹åŒ–ã‚’ã‚¯ãƒªãƒƒã‚¯ã™ã‚‹" + +#~ msgid "The Add-on is now installed and activated!" +#~ msgstr "アドオンãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã€æœ‰åŠ¹åŒ–ã•れã¾ã—ãŸã€‚" + +#~ msgid "Awesome. Let's get to work" +#~ msgstr "素晴らã—ã„ã€‚ä½œæ¥­ã«æˆ»ã‚Šã¾ã™ã€‚" + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "検証ã«å¤±æ•—ã—ã¾ã—ãŸã€‚下記ã®ãƒ•ィールドã®å°‘ãªãã¨ã‚‚一ã¤ãŒå¿…é ˆã§ã™ã€‚" + +#, fuzzy +#~ msgid "What's new" +#~ msgstr "æ–°ç€æƒ…å ±ã§è¦‹ã‚‹" + +#~ msgid "credits" +#~ msgstr "クレジット" + +#~ msgid "Modifying field group options 'show on page'" +#~ msgstr "フィールドグループオプション「ページã§è¡¨ç¤ºã™ã‚‹ã€ã‚’変更" + +#~ msgid "Modifying field option 'taxonomy'" +#~ msgstr "フィールドオプション「タクソノミーã€ã‚’変更" + +#~ msgid "Moving user custom fields from wp_options to wp_usermeta'" +#~ msgstr "ユーザーã®ã‚«ã‚¹ã‚¿ãƒ ãƒ•ィールドを wp_options ã‹ã‚‰ wp_usermeta ã«å¤‰æ›´ã™ã‚‹" + +#~ msgid "blue : Blue" +#~ msgstr "blue : é’" + +#~ msgid "eg: #ffffff" +#~ msgstr "例: #ffffff" + +#~ msgid "Save format" +#~ msgstr "フォーマットをä¿å­˜ã™ã‚‹" + +#~ msgid "This format will determin the value saved to the database and returned via the API" +#~ msgstr "ã“ã®ãƒ•ォーマットã¯ã€å€¤ã‚’データベースã«ä¿å­˜ã—ã€API ã§è¿”ã™å½¢å¼ã‚’決定ã—ã¾ã™" + +#~ msgid "\"yymmdd\" is the most versatile save format. Read more about" +#~ msgstr "最も良ã用ã„られるフォーマット㯠\"yymmdd\" ã§ã™ã€‚詳細ã¯" + +#~ msgid "jQuery date formats" +#~ msgstr "jQuery 日付フォーマット" + +#~ msgid "This format will be seen by the user when entering a value" +#~ msgstr "ユーザーãŒå€¤ã‚’入力ã™ã‚‹ã¨ãã®ãƒ•ォーマット" + +#~ msgid "\"dd/mm/yy\" or \"mm/dd/yy\" are the most used Display Formats. Read more about" +#~ msgstr "よã使用ã•れるã®ã¯ã€\"dd/mm/yy\" ã‚„ \"mm/dd/yy\" ã§ã™ã€‚詳細ã¯" + +#~ msgid "Dummy" +#~ msgstr "ダミー" + +#~ msgid "No File Selected" +#~ msgstr "ファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#~ msgid "File Object" +#~ msgstr "ファイルオブジェクト" + +#~ msgid "File Updated." +#~ msgstr "ファイルを更新ã—ã¾ã—ãŸ" + +#~ msgid "Media attachment updated." +#~ msgstr "メディアアタッãƒãƒ¡ãƒ³ãƒˆã‚’æ›´æ–°ã—ã¾ã—ãŸ" + +#~ msgid "No files selected" +#~ msgstr "ファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#~ msgid "Add Selected Files" +#~ msgstr "é¸æŠžã•れãŸãƒ•ァイルを追加ã™ã‚‹" + +#~ msgid "Image Object" +#~ msgstr "ç”»åƒã‚ªãƒ–ジェクト" + +#~ msgid "Image Updated." +#~ msgstr "ç”»åƒã‚’æ›´æ–°ã—ã¾ã—ãŸ" + +#~ msgid "No images selected" +#~ msgstr "ç”»åƒãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "Add Selected Images" +#~ msgstr "é¸æŠžã—ãŸç”»åƒã‚’追加ã™ã‚‹" + +#~ msgid "Text & HTML entered here will appear inline with the fields" +#~ msgstr "ã“ã“ã«è¨˜è¿°ã—ãŸãƒ†ã‚­ã‚¹ãƒˆã¨ HTML ãŒã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã§è¡¨ç¤ºã•れã¾ã™ã€‚" + +#~ msgid "Specifies the minimum value allowed" +#~ msgstr "最å°å€¤ã‚’指定ã—ã¾ã™ã€‚" + +#~ msgid "Specifies the maximim value allowed" +#~ msgstr "最大値を指定ã—ã¾ã™ã€‚" + +#~ msgid "Step" +#~ msgstr "Step" + +#~ msgid "Specifies the legal number intervals" +#~ msgstr "入力値ã®é–“隔を指定ã—ã¾ã™ã€‚" + +#~ msgid "Filter from Taxonomy" +#~ msgstr "タクソノミーã§ãƒ•ィルタã™ã‚‹" + +#~ msgid "Enter your choices one per line" +#~ msgstr "é¸æŠžè‚¢ã‚’ä¸€è¡Œãšã¤å…¥åŠ›ã—ã¦ãã ã•ã„" + +#~ msgid "Red" +#~ msgstr "赤" + +#~ msgid "Blue" +#~ msgstr "é’" + +#~ msgid "Filter by post type" +#~ msgstr "投稿タイプã§ãƒ•ィルタã™ã‚‹" + +#, fuzzy +#~ msgid "Post Type Select" +#~ msgstr "投稿タイプ" + +#, fuzzy +#~ msgid "Post Title" +#~ msgstr "投稿タイプ" + +#~ msgid "" +#~ "All fields proceeding this \"tab field\" (or until another \"tab field\" is defined) will appear " +#~ "grouped on the edit screen." +#~ msgstr "タブフィールドã§ãƒ•ィールドを区切りã€ã‚°ãƒ«ãƒ¼ãƒ—化ã—ã¦è¡¨ç¤ºã—ã¾ã™ã€‚" + +#~ msgid "You can use multiple tabs to break up your fields into sections." +#~ msgstr "複数ã®ã‚¿ãƒ–を使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" + +#~ msgid "Formatting" +#~ msgstr "フォーマット" + +#~ msgid "Define how to render html tags" +#~ msgstr "html ã‚¿ã‚°ã®è¡¨ç¤ºã‚’決定ã™ã‚‹" + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Define how to render html tags / new lines" +#~ msgstr "html ã‚¿ã‚°/æ–°ã—ã„行ã®è¡¨ç¤ºã‚’決定ã™ã‚‹" + +#~ msgid "auto <br />" +#~ msgstr "自動 <br />" + +#~ msgid "Field Order" +#~ msgstr "フィールド順åº" + +#~ msgid "Field Key" +#~ msgstr "フィールドキー" + +#~ msgid "Edit this Field" +#~ msgstr "ã“ã®ãƒ•ィールドを編集ã™ã‚‹" + +#~ msgid "Read documentation for this field" +#~ msgstr "ã“ã®ãƒ•ィールドã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’読む" + +#~ msgid "Docs" +#~ msgstr "ドキュメント" + +#~ msgid "Duplicate this Field" +#~ msgstr "ã“ã®ãƒ•ィールドを複製ã™ã‚‹" + +#~ msgid "Delete this Field" +#~ msgstr "ã“ã®ãƒ•ィールドを削除ã™ã‚‹" + +#~ msgid "Field Instructions" +#~ msgstr "フィールド記入ã®ãƒ’ント" + +#~ msgid "Show this field when" +#~ msgstr "表示ã™ã‚‹æ¡ä»¶" + +#~ msgid "all" +#~ msgstr "å…¨ã¦" + +#~ msgid "any" +#~ msgstr "ä»»æ„" + +#~ msgid "these rules are met" +#~ msgstr "ã“ã‚Œã‚‰ã®æ¡ä»¶ã‚’満ãŸã™" + +#, fuzzy +#~ msgid "Taxonomy Term (Add / Edit)" +#~ msgstr "タクソノミー(追加/編集)" + +#~ msgid "User (Add / Edit)" +#~ msgstr "ユーザー(追加/編集)" + +#, fuzzy +#~ msgid "Media Attachment (Edit)" +#~ msgstr "メディアアタッãƒãƒ¡ãƒ³ãƒˆã‚’æ›´æ–°ã—ã¾ã—ãŸ" + +#~ msgid "Normal" +#~ msgstr "Normal" + +#~ msgid "No Metabox" +#~ msgstr "メタボックス無" + +#~ msgid "Standard Metabox" +#~ msgstr "標準メタボックス" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-nb_NO.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-nb_NO.mo new file mode 100644 index 0000000000000000000000000000000000000000..ab68384485b8141259d4d69d5195f66f5b3dc8a8 GIT binary patch literal 47744 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 U%`~&W{|OOW3E1y*9}xL}08\n" +"Language-Team: \n" +"Language: nb_NO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:355 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Feltgrupper" + +#: acf.php:356 +msgid "Field Group" +msgstr "Feltgruppe" + +#: acf.php:357 acf.php:389 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New" +msgstr "Legg til ny" + +#: acf.php:358 +msgid "Add New Field Group" +msgstr "Legg til ny feltgruppe" + +#: acf.php:359 +msgid "Edit Field Group" +msgstr "Rediger feltgruppe" + +#: acf.php:360 +msgid "New Field Group" +msgstr "Ny feltgruppe" + +#: acf.php:361 +msgid "View Field Group" +msgstr "Vis feltgruppe" + +#: acf.php:362 +msgid "Search Field Groups" +msgstr "Søk i feltgrupper" + +#: acf.php:363 +msgid "No Field Groups found" +msgstr "Ingen feltgrupper funnet" + +#: acf.php:364 +msgid "No Field Groups found in Trash" +msgstr "Ingen feltgrupper funnet i papirkurven" + +#: acf.php:387 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:857 +msgid "Fields" +msgstr "Felt" + +#: acf.php:388 +msgid "Field" +msgstr "Felt" + +#: acf.php:390 +msgid "Add New Field" +msgstr "Legg til nytt felt" + +#: acf.php:391 +msgid "Edit Field" +msgstr "Rediger felt" + +#: acf.php:392 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Nytt felt" + +#: acf.php:393 +msgid "View Field" +msgstr "Vis felt" + +#: acf.php:394 +msgid "Search Fields" +msgstr "Søkefelt" + +#: acf.php:395 +msgid "No Fields found" +msgstr "Ingen felter funnet" + +#: acf.php:396 +msgid "No Fields found in Trash" +msgstr "Ingen felt funnet i papirkurven" + +#: acf.php:435 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Inaktiv" + +#: acf.php:440 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inaktiv (%s)" +msgstr[1] "Inaktive (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Feltgruppe oppdatert." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Feltgruppe slettet." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Feltgruppe publisert." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Feltgruppe lagret." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Feltgruppe sendt inn." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Feltgruppe planlagt for" + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Feltgruppekladd oppdatert." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "Sted" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "Innstillinger" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "Flytt til papirkurven. Er du sikker?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "avkrysset" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "Ingen av/pÃ¥- felter tilgjengelig" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "Feltgruppetittel er pÃ¥krevd" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:732 +msgid "copy" +msgstr "kopier" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3970 +msgid "or" +msgstr "eller" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "Foreldrefelter" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "Søskenfelter" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "Flytt egendefinert felt" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Dette feltet kan ikke flyttes før endringene er lagret" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "Null" + +#: includes/admin/admin-field-group.php:281 includes/input.php:257 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Endringene du har gjort vil gÃ¥ tapt dersom du navigerer vekk fra denne siden" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Strengen \"field_\" kan ikke brukes som starten pÃ¥ et feltnavn" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Feltnøkler" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Aktiv" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "Flytting komplett." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "%s feltet finnes nÃ¥ i %s feltgruppen" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "Lukk vinduet" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "Vennligst velg mÃ¥let for dette feltet" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "Flytt felt" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Aktive (%s)" +msgstr[1] "Aktive (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Feltgruppe duplisert. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s feltgruppe duplisert." +msgstr[1] "%s feltgrupper duplisert." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Feltgruppe synkronisert. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s feltgruppe synkronisert." +msgstr[1] "%s feltgrupper synkronisert." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Synkronisering tilgjengelig" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:370 +msgid "Title" +msgstr "Tittel" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:397 +msgid "Description" +msgstr "Beskrivelse" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Status" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "Tilpass WordPress med kraftige, profesjonelle og intuitive felt." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:111 +msgid "Changelog" +msgstr "Endringslogg" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Se hva som er nytt i %s-utgaven." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Ressurser" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Dokumentasjon" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Support" + +#: includes/admin/admin-field-groups.php:623 +#, fuzzy +msgid "Pro" +msgstr "Farvel Tillegg. Hei PRO" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Takk for at du bygger med ACF." + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "Dupliser dette elementet" + +#: includes/admin/admin-field-groups.php:668 +#: includes/admin/admin-field-groups.php:684 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate" +msgstr "Dupliser" + +#: includes/admin/admin-field-groups.php:701 +#: includes/fields/class-acf-field-google-map.php:132 +#: includes/fields/class-acf-field-relationship.php:737 +msgid "Search" +msgstr "Søk" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "Velg %s" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "Synkroniser feltgruppe" + +#: includes/admin/admin-field-groups.php:768 +#: includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "Synkroniser" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "" + +#: includes/admin/admin-field-groups.php:798 +#, fuzzy +msgid "Bulk Actions" +msgstr "Massehandlinger" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Egendefinerte felt" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Oppgrader database" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "GÃ¥ igjennom nettsteder og oppgrader" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "Kunne ikke validere forespørselen" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "Ingen oppdateringer tilgjengelige." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Tillegg" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Feil. Kunne ikke laste liste over tillegg" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informasjon" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Hva er nytt" + +#: includes/admin/settings-tools.php:50 +#: includes/admin/views/settings-tools-export.php:19 +#: includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "Verktøy" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "Ingen feltgrupper valgt" + +#: includes/admin/settings-tools.php:184 +#: includes/fields/class-acf-field-file.php:174 +msgid "No file selected" +msgstr "Ingen fil valgt" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "Feil ved opplasting av fil. Vennligst prøv igjen" + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "Feil filtype" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "Importfil tom" + +#: includes/admin/settings-tools.php:331 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Importerte 1 feltgruppe" +msgstr[1] "Importerte %s feltgrupper" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "Betinget logikk" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Vis dette feltet hvis" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:243 +msgid "is equal to" +msgstr "er lik" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "er ikke lik" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "og" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Legg til regelgruppe" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:420 +#: pro/fields/class-acf-field-repeater.php:358 +msgid "Drag to reorder" +msgstr "Dra for Ã¥ endre rekkefølge" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Rediger felt" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-image.php:140 +#: includes/fields/class-acf-field-link.php:152 +#: pro/fields/class-acf-field-gallery.php:357 +msgid "Edit" +msgstr "Rediger" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Dupliser felt" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "Flytt felt til en annen gruppe" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "Flytt" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "Slett felt" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete" +msgstr "Slett" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "Feltetikett" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "Dette navnet vil vises pÃ¥ REDIGERING-siden" + +#: includes/admin/views/field-group-field.php:78 +msgid "Field Name" +msgstr "Feltnavn" + +#: includes/admin/views/field-group-field.php:79 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Enkeltord, ingen mellomrom. Understreker og streker tillatt" + +#: includes/admin/views/field-group-field.php:89 +msgid "Field Type" +msgstr "Felttype" + +#: includes/admin/views/field-group-field.php:101 +#: includes/fields/class-acf-field-tab.php:102 +msgid "Instructions" +msgstr "Instruksjoner" + +#: includes/admin/views/field-group-field.php:102 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instruksjoner for forfattere. Vises nÃ¥r du sender inn data" + +#: includes/admin/views/field-group-field.php:111 +msgid "Required?" +msgstr "PÃ¥krevd?" + +#: includes/admin/views/field-group-field.php:134 +msgid "Wrapper Attributes" +msgstr "Omslags-attributter" + +#: includes/admin/views/field-group-field.php:140 +msgid "width" +msgstr "bredde" + +#: includes/admin/views/field-group-field.php:155 +msgid "class" +msgstr "klasse" + +#: includes/admin/views/field-group-field.php:168 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:180 +msgid "Close Field" +msgstr "Lukk felt" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Rekkefølge" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-checkbox.php:317 +#: includes/fields/class-acf-field-radio.php:321 +#: includes/fields/class-acf-field-select.php:530 +#: pro/fields/class-acf-field-flexible-content.php:599 +msgid "Label" +msgstr "Etikett" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:970 +#: pro/fields/class-acf-field-flexible-content.php:612 +msgid "Name" +msgstr "Navn" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Type" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Ingen felt. Klikk pÃ¥ + Legg til felt knappen for Ã¥ lage " +"ditt første felt." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Legg til felt" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regler" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Lag et sett regler for Ã¥ bestemme hvilke redigeringsvinduer som vil bruke " +"disse feltene." + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stil" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standard (WP Metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Sømløs (ingen metabox)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Posisjon" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Høy (etter tittel)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (etter innhold)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Side" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Etikettplassering" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:116 +msgid "Top aligned" +msgstr "Toppjustert" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:117 +msgid "Left aligned" +msgstr "Venstrejustert" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Instruksjonsplassering" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Nedenfor etiketter" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Nedenfor felt" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Rekkefølge" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Feltgrupper med lavere rekkefølge vises først" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Vist i feltgruppeliste" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Skjul pÃ¥ skjermen" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "Velg elementer som skal skjules fra redigeringsvinduet." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Hvis flere feltgrupper vises i et redigeringsvindu, vil den første " +"feltgruppens alternativer benyttes. (Den med laveste nummer i rekkefølgen)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Permalenke" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Innholdsredigerer" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Utdrag" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "Diskusjon" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Kommentarer" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Revisjoner" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "URL-tamp" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Forfatter" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Format" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Sideattributter" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:751 +msgid "Featured Image" +msgstr "Fremhevet bilde" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Kategorier" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Merkelapper" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Send tilbakesporinger" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Vis feltgruppen hvis" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Oppgrader nettsteder" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Databaseoppgradering for Advanced Custom Fields" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Følgende nettsteder krever en databaseoppgradering. Kryss av for de du vil " +"oppdatere og klikk deretter %s." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Nettsted" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Siden krever databaseoppgradering fra%s til%s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Nettstedet er oppdatert" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Databaseoppgradering er fullført. GÃ¥ tilbake til " +"nettverksdashboard" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Det anbefales sterkt at du sikkerhetskopierer databasen før du fortsetter. " +"Er du sikker pÃ¥ at du vil kjøre oppdateringen nÃ¥?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Oppgradering komplett" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Oppgradere data til versjon%s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Repeater" +msgstr "Gjentaker" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "Flexible Content" +msgstr "Fleksibelt innhold" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:36 +msgid "Gallery" +msgstr "Galleri" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:13 +msgid "Options Page" +msgstr "Alternativer-side" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Databaseoppgradering er pÃ¥krevd" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Takk for at du oppgraderte til %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Før du begynner Ã¥ bruke de nye funksjonene, mÃ¥ du oppdatere din database til " +"den nyeste versjonen." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Leser oppgraderingsoppgaver ..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" +"Databaseoppgradering er fullført. Se hva som er nytt" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Last ned og installer" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Installert" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Velkommen til Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Takk for at du oppdaterte! ACF %s er større og bedre enn noen gang før. Vi " +"hÃ¥per du liker det." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "En velfungerende opplevelse av egendefinerte felter" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Forbedret brukervennlighet" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Ã… inkludere det populære Select2-biblioteket har økt bÃ¥de brukervennlighet " +"og lastetid for flere felttyper, inkludert innleggsobjekter, sidelinker, " +"taksonomi og nedtrekksmenyer." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Forbedret design" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Mange felter har fÃ¥tt en visuell oppfriskning sÃ¥ ACF ser bedre ut enn pÃ¥ " +"lenge! Nevneverdige endringer sees pÃ¥ galleri-, relasjons- og oEmbedfelter!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Forbedret data" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Omskriving av dataarkitekturen tillater underfelter Ã¥ leve uavhengig av " +"foreldrene sine. Det betyr at du kan dra og slippe felter til og fra " +"foreldrefeltene sine!" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Farvel Tillegg. Hei PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "Vi presenterer ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "Vi endrer mÃ¥ten premium-funksjonalitet leveres pÃ¥ en spennende mÃ¥te!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Alle fire premium-tilleggene har blitt kombinert i en ny Pro-" +"versjon av ACF. Med bÃ¥de personlig- og utviklerlisenser tilgjengelig er " +"premiumfunksjonalitet billigere og mer tilgjengelig enn noensinne!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Kraftige funksjoner" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO inneholder kraftige funksjoner som repeterende data, fleksible " +"innholdsstrukturer, et vakkert gallerifelt og muligheten til Ã¥ lage ekstra " +"administrasjonsegenskapssider!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Les mer om ACF PRO-funksjonaliteten." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Enkel oppgradering" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"For Ã¥ gjøre oppgradering enklere, Logg inn pÃ¥ din konto " +"og hent en gratis kopi av ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Vi har ogsÃ¥ skrevet en oppgraderingsveiledning for Ã¥ " +"besvare de fleste spørsmÃ¥l, men skulle du fortsatt ha et spørsmÃ¥l, ta " +"kontakt med via helpdesken" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Under panseret" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Smartere feltinnstillinger" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF lagrer nÃ¥ feltegenskapene som individuelle innleggsobjekter" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Mer AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "Flere felter bruker AJAX-drevet søk for Ã¥ kutte ned innlastingstiden" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "Lokal JSON" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "Ny automatisk eksport til JSON sparer tid" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Bedre versjonskontroll" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "Ny autoeksport til JSON lar feltinnstillinger bli versjonskontrollert" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "Byttet XML mot JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Import / eksport bruker nÃ¥ JSON istedenfor XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Nye skjemaer" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Feltene kan nÃ¥ tilordnes til kommentarer, widgets og alle brukerskjemaer!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Et nytt felt for Ã¥ bygge inn innhold er lagt til" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Nytt galleri" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Gallerietfeltet har gjennomgÃ¥tt en sÃ¥rt tiltrengt ansiktsløftning" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Nye innstillinger" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Feltgruppeinnstillinger er lagt til for etikettplassering og " +"instruksjonsplassering" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Bedre frontend-skjemaer" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() kan nÃ¥ lage et nytt innlegg ved innsending" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Bedre validering" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "Skjemavalidering skjer nÃ¥ via PHP + AJAX framfor kun JavaScript" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Relasjonsfelt" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Nye relasjonsfeltinnstillinger for 'Filtre' (søk, innleggstype, taksonomi)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Flytte felt" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"Ny feltgruppe-funksonalitet gir deg mulighet til Ã¥ flytte felt mellom " +"grupper og foreldre" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:36 +msgid "Page Link" +msgstr "Sidekobling" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Ny arkiver gruppe i page_link feltvalg" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Bedre sider for innstillinger" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Nye funksjoner pÃ¥ Valg-siden tillater oppretting av menysider for bÃ¥de " +"foreldre og barn" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Vi tror du vil elske endringene i %s." + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "Eksporter feltgrupper til PHP" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Følgende kode kan brukes for Ã¥ registrere en lokal versjon av de(n) valgte " +"feltgruppen(e). En lokal feltgruppe kan gi mange fordeler som raskere " +"lastetid, versjonskontroll og dynamiske felter/innstillinger. Kopier og lim " +"inn den følgende koden i ditt temas functions.php-fil, eller inkluder det " +"med en ekstern fil." + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Velg feltgrupper" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "Eksporter feltgrupper" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Velg feltgruppene du vil eksportere og velg eksporteringsmetode. Bruk " +"nedlastingsknappen for Ã¥ eksportere til en .json-fil du kan importere i en " +"annen installasjon av ACF. Bruk genererknappen for Ã¥ eksportere PHP-kode du " +"kan legge inn i ditt tema." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "Last ned eksportfil" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Generer eksportkode" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "Importer feltgrupper" + +#: includes/admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Velg ACF JSON-filen du vil importere. NÃ¥r du klikker importerknappen under, " +"vil ACF importere feltgruppene." + +#: includes/admin/views/settings-tools.php:77 +#: includes/fields/class-acf-field-file.php:46 +msgid "Select File" +msgstr "Velg fil" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Importer" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "Miniatyrbilde" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "Medium" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "Stor" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "Full størrelse" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1837 +#: pro/fields/class-acf-field-clone.php:1042 +msgid "(no title)" +msgstr "(ingen tittel)" + +#: includes/api/api-helpers.php:1874 +#: includes/fields/class-acf-field-page_link.php:284 +#: includes/fields/class-acf-field-post_object.php:283 +#: includes/fields/class-acf-field-taxonomy.php:992 +msgid "Parent" +msgstr "Forelder" + +#: includes/api/api-helpers.php:3891 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Bildebredde mÃ¥ være minst %dpx." + +#: includes/api/api-helpers.php:3896 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Bildebredden mÃ¥ ikke overstige %dpx." + +#: includes/api/api-helpers.php:3912 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Bildehøyden mÃ¥ være minst %dpx." + +#: includes/api/api-helpers.php:3917 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Bilde høyde mÃ¥ ikke overstige %dpx." + +#: includes/api/api-helpers.php:3935 +#, php-format +msgid "File size must be at least %s." +msgstr "Filstørrelse mÃ¥ være minst %s." + +#: includes/api/api-helpers.php:3940 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Filstørrelsen mÃ¥ ikke overstige %s." + +#: includes/api/api-helpers.php:3974 +#, php-format +msgid "File type must be %s." +msgstr "Filtypen mÃ¥ være %s." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Grunnleggende" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Innhold" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Valg" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Relaterte" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 includes/fields/class-acf-field-checkbox.php:286 +#: includes/fields/class-acf-field-group.php:485 +#: includes/fields/class-acf-field-radio.php:300 +#: pro/fields/class-acf-field-clone.php:889 +#: pro/fields/class-acf-field-flexible-content.php:569 +#: pro/fields/class-acf-field-flexible-content.php:618 +#: pro/fields/class-acf-field-repeater.php:514 +msgid "Layout" +msgstr "Oppsett" + +#: includes/fields.php:305 +msgid "Field type does not exist" +msgstr "Felttype eksisterer ikke" + +#: includes/fields.php:305 +#, fuzzy +msgid "Unknown" +msgstr "Ukjent feltgruppe" + +#: includes/fields/class-acf-field-checkbox.php:36 +#: includes/fields/class-acf-field-taxonomy.php:786 +msgid "Checkbox" +msgstr "Avkryssingsboks" + +#: includes/fields/class-acf-field-checkbox.php:150 +msgid "Toggle All" +msgstr "Velg/avvelg alle" + +#: includes/fields/class-acf-field-checkbox.php:207 +msgid "Add new choice" +msgstr "Legg til nytt valg" + +#: includes/fields/class-acf-field-checkbox.php:246 +#: includes/fields/class-acf-field-radio.php:250 +#: includes/fields/class-acf-field-select.php:466 +msgid "Choices" +msgstr "Valg" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "Enter each choice on a new line." +msgstr "Skriv inn hvert valg pÃ¥ en ny linje." + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "For more control, you may specify both a value and label like this:" +msgstr "For mer kontroll, kan du angi bÃ¥de en verdi og merke som dette:" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "red : Red" +msgstr "svart : Svart" + +#: includes/fields/class-acf-field-checkbox.php:255 +msgid "Allow Custom" +msgstr "Tillat egendefinert" + +#: includes/fields/class-acf-field-checkbox.php:260 +msgid "Allow 'custom' values to be added" +msgstr "Tillat at \"egendefinerte\" verdier legges til" + +#: includes/fields/class-acf-field-checkbox.php:266 +msgid "Save Custom" +msgstr "Lagre egendefinert" + +#: includes/fields/class-acf-field-checkbox.php:271 +msgid "Save 'custom' values to the field's choices" +msgstr "Lagre \"egendefinerte\" verdier som alternativer i feltets valg" + +#: includes/fields/class-acf-field-checkbox.php:277 +#: includes/fields/class-acf-field-color_picker.php:146 +#: includes/fields/class-acf-field-email.php:133 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-radio.php:291 +#: includes/fields/class-acf-field-select.php:475 +#: includes/fields/class-acf-field-text.php:142 +#: includes/fields/class-acf-field-textarea.php:139 +#: includes/fields/class-acf-field-true_false.php:150 +#: includes/fields/class-acf-field-url.php:114 +#: includes/fields/class-acf-field-wysiwyg.php:436 +msgid "Default Value" +msgstr "Standardverdi" + +#: includes/fields/class-acf-field-checkbox.php:278 +#: includes/fields/class-acf-field-select.php:476 +msgid "Enter each default value on a new line" +msgstr "Skriv inn hver standardverdi pÃ¥ en ny linje" + +#: includes/fields/class-acf-field-checkbox.php:292 +#: includes/fields/class-acf-field-radio.php:306 +msgid "Vertical" +msgstr "Vertikal" + +#: includes/fields/class-acf-field-checkbox.php:293 +#: includes/fields/class-acf-field-radio.php:307 +msgid "Horizontal" +msgstr "Horisontal" + +#: includes/fields/class-acf-field-checkbox.php:300 +msgid "Toggle" +msgstr "Veksle" + +#: includes/fields/class-acf-field-checkbox.php:301 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Legg til ekstra avkryssingsboks for Ã¥ velge alle alternativer" + +#: includes/fields/class-acf-field-checkbox.php:310 +#: includes/fields/class-acf-field-file.php:219 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:180 +#: includes/fields/class-acf-field-radio.php:314 +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Return Value" +msgstr "Returverdi" + +#: includes/fields/class-acf-field-checkbox.php:311 +#: includes/fields/class-acf-field-file.php:220 +#: includes/fields/class-acf-field-image.php:207 +#: includes/fields/class-acf-field-link.php:181 +#: includes/fields/class-acf-field-radio.php:315 +msgid "Specify the returned value on front end" +msgstr "Angi verdien returnert pÃ¥ frontend" + +#: includes/fields/class-acf-field-checkbox.php:316 +#: includes/fields/class-acf-field-radio.php:320 +#: includes/fields/class-acf-field-select.php:529 +msgid "Value" +msgstr "Verdi" + +#: includes/fields/class-acf-field-checkbox.php:318 +#: includes/fields/class-acf-field-radio.php:322 +#: includes/fields/class-acf-field-select.php:531 +msgid "Both (Array)" +msgstr "Begge (Array)" + +#: includes/fields/class-acf-field-color_picker.php:36 +msgid "Color Picker" +msgstr "Fargevelger" + +#: includes/fields/class-acf-field-color_picker.php:83 +msgid "Clear" +msgstr "Fjern" + +#: includes/fields/class-acf-field-color_picker.php:84 +msgid "Default" +msgstr "Standardverdi" + +#: includes/fields/class-acf-field-color_picker.php:85 +msgid "Select Color" +msgstr "Velg farge" + +#: includes/fields/class-acf-field-color_picker.php:86 +msgid "Current Color" +msgstr "NÃ¥værende farge" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgid "Date Picker" +msgstr "Datovelger" + +#: includes/fields/class-acf-field-date_picker.php:44 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Fullført" + +#: includes/fields/class-acf-field-date_picker.php:45 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Idag" + +#: includes/fields/class-acf-field-date_picker.php:46 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Neste" + +#: includes/fields/class-acf-field-date_picker.php:47 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Forrige" + +#: includes/fields/class-acf-field-date_picker.php:48 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "uke" + +#: includes/fields/class-acf-field-date_picker.php:223 +#: includes/fields/class-acf-field-date_time_picker.php:197 +#: includes/fields/class-acf-field-time_picker.php:127 +msgid "Display Format" +msgstr "Visningsformat" + +#: includes/fields/class-acf-field-date_picker.php:224 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-time_picker.php:128 +msgid "The format displayed when editing a post" +msgstr "Visningsformat nÃ¥r du redigerer et innlegg" + +#: includes/fields/class-acf-field-date_picker.php:232 +#: includes/fields/class-acf-field-date_picker.php:263 +#: includes/fields/class-acf-field-date_time_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:224 +#: includes/fields/class-acf-field-time_picker.php:135 +#: includes/fields/class-acf-field-time_picker.php:150 +#, fuzzy +msgid "Custom:" +msgstr "Advanced Custom Fields" + +#: includes/fields/class-acf-field-date_picker.php:242 +msgid "Save Format" +msgstr "Lagre format" + +#: includes/fields/class-acf-field-date_picker.php:243 +msgid "The format used when saving a value" +msgstr "Formatet som brukes nÃ¥r du lagrer en verdi" + +#: includes/fields/class-acf-field-date_picker.php:253 +#: includes/fields/class-acf-field-date_time_picker.php:214 +#: includes/fields/class-acf-field-post_object.php:447 +#: includes/fields/class-acf-field-relationship.php:778 +#: includes/fields/class-acf-field-select.php:524 +#: includes/fields/class-acf-field-time_picker.php:142 +msgid "Return Format" +msgstr "Format som skal returneres" + +#: includes/fields/class-acf-field-date_picker.php:254 +#: includes/fields/class-acf-field-date_time_picker.php:215 +#: includes/fields/class-acf-field-time_picker.php:143 +msgid "The format returned via template functions" +msgstr "Formatet som returneres via malfunksjoner" + +#: includes/fields/class-acf-field-date_picker.php:272 +#: includes/fields/class-acf-field-date_time_picker.php:231 +msgid "Week Starts On" +msgstr "Uken starter pÃ¥" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgid "Date Time Picker" +msgstr "Dato/tid-velger" + +#: includes/fields/class-acf-field-date_time_picker.php:44 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Velg tid" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Tid" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Time" + +#: includes/fields/class-acf-field-date_time_picker.php:47 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minutt" + +#: includes/fields/class-acf-field-date_time_picker.php:48 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Sekund" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Millisekund" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosekund" + +#: includes/fields/class-acf-field-date_time_picker.php:51 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Tidssone" + +#: includes/fields/class-acf-field-date_time_picker.php:52 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "NÃ¥" + +#: includes/fields/class-acf-field-date_time_picker.php:53 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Fullført" + +#: includes/fields/class-acf-field-date_time_picker.php:54 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Velg" + +#: includes/fields/class-acf-field-date_time_picker.php:56 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:57 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:60 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:61 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:36 +msgid "Email" +msgstr "Epost" + +#: includes/fields/class-acf-field-email.php:134 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-radio.php:292 +#: includes/fields/class-acf-field-text.php:143 +#: includes/fields/class-acf-field-textarea.php:140 +#: includes/fields/class-acf-field-url.php:115 +#: includes/fields/class-acf-field-wysiwyg.php:437 +msgid "Appears when creating a new post" +msgstr "Vises nÃ¥r du oppretter et nytt innlegg" + +#: includes/fields/class-acf-field-email.php:142 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:134 +#: includes/fields/class-acf-field-text.php:151 +#: includes/fields/class-acf-field-textarea.php:148 +#: includes/fields/class-acf-field-url.php:123 +msgid "Placeholder Text" +msgstr "Plassholdertekst" + +#: includes/fields/class-acf-field-email.php:143 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:135 +#: includes/fields/class-acf-field-text.php:152 +#: includes/fields/class-acf-field-textarea.php:149 +#: includes/fields/class-acf-field-url.php:124 +msgid "Appears within the input" +msgstr "Vises i inndataene" + +#: includes/fields/class-acf-field-email.php:151 +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-password.php:143 +#: includes/fields/class-acf-field-text.php:160 +msgid "Prepend" +msgstr "Sett inn foran" + +#: includes/fields/class-acf-field-email.php:152 +#: includes/fields/class-acf-field-number.php:164 +#: includes/fields/class-acf-field-password.php:144 +#: includes/fields/class-acf-field-text.php:161 +msgid "Appears before the input" +msgstr "Vises før inndata" + +#: includes/fields/class-acf-field-email.php:160 +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-password.php:152 +#: includes/fields/class-acf-field-text.php:169 +msgid "Append" +msgstr "Tilføy" + +#: includes/fields/class-acf-field-email.php:161 +#: includes/fields/class-acf-field-number.php:173 +#: includes/fields/class-acf-field-password.php:153 +#: includes/fields/class-acf-field-text.php:170 +msgid "Appears after the input" +msgstr "Vises etter inndata" + +#: includes/fields/class-acf-field-file.php:36 +msgid "File" +msgstr "Fil" + +#: includes/fields/class-acf-field-file.php:47 +msgid "Edit File" +msgstr "Rediger fil" + +#: includes/fields/class-acf-field-file.php:48 +msgid "Update File" +msgstr "Oppdater fil" + +#: includes/fields/class-acf-field-file.php:49 +#: includes/fields/class-acf-field-image.php:54 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:55 +msgid "Uploaded to this post" +msgstr "Lastet opp til dette innlegget" + +#: includes/fields/class-acf-field-file.php:145 +msgid "File name" +msgstr "Filnavn" + +#: includes/fields/class-acf-field-file.php:149 +#: includes/fields/class-acf-field-file.php:252 +#: includes/fields/class-acf-field-file.php:263 +#: includes/fields/class-acf-field-image.php:266 +#: includes/fields/class-acf-field-image.php:295 +#: pro/fields/class-acf-field-gallery.php:705 +#: pro/fields/class-acf-field-gallery.php:734 +msgid "File size" +msgstr "Filstørrelse" + +#: includes/fields/class-acf-field-file.php:174 +msgid "Add File" +msgstr "Legg til fil" + +#: includes/fields/class-acf-field-file.php:225 +msgid "File Array" +msgstr "Filtabell" + +#: includes/fields/class-acf-field-file.php:226 +msgid "File URL" +msgstr "Fil-URL" + +#: includes/fields/class-acf-field-file.php:227 +msgid "File ID" +msgstr "Fil-ID" + +#: includes/fields/class-acf-field-file.php:234 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:670 +msgid "Library" +msgstr "Bibliotek" + +#: includes/fields/class-acf-field-file.php:235 +#: includes/fields/class-acf-field-image.php:232 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Limit the media library choice" +msgstr "Begrense valg av mediebibliotek" + +#: includes/fields/class-acf-field-file.php:240 +#: includes/fields/class-acf-field-image.php:237 +#: includes/locations/class-acf-location-attachment.php:105 +#: includes/locations/class-acf-location-comment.php:83 +#: includes/locations/class-acf-location-nav-menu.php:106 +#: includes/locations/class-acf-location-taxonomy.php:83 +#: includes/locations/class-acf-location-user-form.php:91 +#: includes/locations/class-acf-location-user-role.php:108 +#: includes/locations/class-acf-location-widget.php:87 +#: pro/fields/class-acf-field-gallery.php:676 +msgid "All" +msgstr "Alle" + +#: includes/fields/class-acf-field-file.php:241 +#: includes/fields/class-acf-field-image.php:238 +#: pro/fields/class-acf-field-gallery.php:677 +msgid "Uploaded to post" +msgstr "Lastet opp til innlegg" + +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-image.php:245 +#: pro/fields/class-acf-field-gallery.php:684 +msgid "Minimum" +msgstr "Minimum" + +#: includes/fields/class-acf-field-file.php:249 +#: includes/fields/class-acf-field-file.php:260 +msgid "Restrict which files can be uploaded" +msgstr "Begrense hvilke filer som kan lastes opp" + +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:713 +msgid "Maximum" +msgstr "Maksimum" + +#: includes/fields/class-acf-field-file.php:270 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:742 +msgid "Allowed file types" +msgstr "Tillatte filtyper" + +#: includes/fields/class-acf-field-file.php:271 +#: includes/fields/class-acf-field-image.php:304 +#: pro/fields/class-acf-field-gallery.php:743 +msgid "Comma separated list. Leave blank for all types" +msgstr "Kommaseparert liste. Tomt for alle typer" + +#: includes/fields/class-acf-field-google-map.php:36 +msgid "Google Map" +msgstr "Google-kart" + +#: includes/fields/class-acf-field-google-map.php:51 +msgid "Locating" +msgstr "Lokaliserer" + +#: includes/fields/class-acf-field-google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "Beklager, støtter denne nettleseren ikke geolokasjon" + +#: includes/fields/class-acf-field-google-map.php:133 +msgid "Clear location" +msgstr "Tøm plassering" + +#: includes/fields/class-acf-field-google-map.php:134 +msgid "Find current location" +msgstr "Finn nÃ¥værende posisjon" + +#: includes/fields/class-acf-field-google-map.php:137 +msgid "Search for address..." +msgstr "Søk etter adresse" + +#: includes/fields/class-acf-field-google-map.php:167 +#: includes/fields/class-acf-field-google-map.php:178 +msgid "Center" +msgstr "Sentrer" + +#: includes/fields/class-acf-field-google-map.php:168 +#: includes/fields/class-acf-field-google-map.php:179 +msgid "Center the initial map" +msgstr "Sentrer det første kartet" + +#: includes/fields/class-acf-field-google-map.php:190 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:191 +msgid "Set the initial zoom level" +msgstr "Angi initielt zoom-nivÃ¥" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-image.php:257 +#: includes/fields/class-acf-field-image.php:286 +#: includes/fields/class-acf-field-oembed.php:297 +#: pro/fields/class-acf-field-gallery.php:696 +#: pro/fields/class-acf-field-gallery.php:725 +msgid "Height" +msgstr "Høyde" + +#: includes/fields/class-acf-field-google-map.php:201 +msgid "Customise the map height" +msgstr "Tilpasse karthøyde" + +#: includes/fields/class-acf-field-group.php:36 +#, fuzzy +msgid "Group" +msgstr "Gruppe (viser valgt felt i en gruppe innenfor dette feltet)" + +#: includes/fields/class-acf-field-group.php:469 +#: pro/fields/class-acf-field-repeater.php:453 +msgid "Sub Fields" +msgstr "Underfelt" + +#: includes/fields/class-acf-field-group.php:486 +#: pro/fields/class-acf-field-clone.php:890 +msgid "Specify the style used to render the selected fields" +msgstr "Angi stilen som brukes til Ã¥ gjengi de valgte feltene" + +#: includes/fields/class-acf-field-group.php:491 +#: pro/fields/class-acf-field-clone.php:895 +#: pro/fields/class-acf-field-flexible-content.php:629 +#: pro/fields/class-acf-field-repeater.php:522 +msgid "Block" +msgstr "Blokk" + +#: includes/fields/class-acf-field-group.php:492 +#: pro/fields/class-acf-field-clone.php:896 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:521 +msgid "Table" +msgstr "Tabell" + +#: includes/fields/class-acf-field-group.php:493 +#: pro/fields/class-acf-field-clone.php:897 +#: pro/fields/class-acf-field-flexible-content.php:630 +#: pro/fields/class-acf-field-repeater.php:523 +msgid "Row" +msgstr "Rad" + +#: includes/fields/class-acf-field-image.php:36 +msgid "Image" +msgstr "Bilde" + +#: includes/fields/class-acf-field-image.php:51 +msgid "Select Image" +msgstr "Velg bilde" + +#: includes/fields/class-acf-field-image.php:52 +#: pro/fields/class-acf-field-gallery.php:53 +msgid "Edit Image" +msgstr "Rediger bilde" + +#: includes/fields/class-acf-field-image.php:53 +#: pro/fields/class-acf-field-gallery.php:54 +msgid "Update Image" +msgstr "Oppdater bilde" + +#: includes/fields/class-acf-field-image.php:55 +msgid "All images" +msgstr "Alle bilder" + +#: includes/fields/class-acf-field-image.php:142 +#: includes/fields/class-acf-field-link.php:153 includes/input.php:267 +#: pro/fields/class-acf-field-gallery.php:358 +#: pro/fields/class-acf-field-gallery.php:546 +msgid "Remove" +msgstr "Fjern" + +#: includes/fields/class-acf-field-image.php:158 +msgid "No image selected" +msgstr "Ingen bilde valgt" + +#: includes/fields/class-acf-field-image.php:158 +msgid "Add Image" +msgstr "Legg til bilde" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image Array" +msgstr "Filtabell" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image URL" +msgstr "Bilde-URL" + +#: includes/fields/class-acf-field-image.php:214 +msgid "Image ID" +msgstr "Bilde-ID" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Preview Size" +msgstr "ForhÃ¥ndsvisningsstørrelse" + +#: includes/fields/class-acf-field-image.php:222 +msgid "Shown when entering data" +msgstr "Vises nÃ¥r du skriver inn data" + +#: includes/fields/class-acf-field-image.php:246 +#: includes/fields/class-acf-field-image.php:275 +#: pro/fields/class-acf-field-gallery.php:685 +#: pro/fields/class-acf-field-gallery.php:714 +msgid "Restrict which images can be uploaded" +msgstr "Begrense hvilke bilder som kan lastes opp" + +#: includes/fields/class-acf-field-image.php:249 +#: includes/fields/class-acf-field-image.php:278 +#: includes/fields/class-acf-field-oembed.php:286 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Width" +msgstr "Bredde" + +#: includes/fields/class-acf-field-link.php:36 +#, fuzzy +msgid "Link" +msgstr "Sidekobling" + +#: includes/fields/class-acf-field-link.php:146 +#, fuzzy +msgid "Select Link" +msgstr "Velg fil" + +#: includes/fields/class-acf-field-link.php:151 +msgid "Opens in a new window/tab" +msgstr "" + +#: includes/fields/class-acf-field-link.php:186 +#, fuzzy +msgid "Link Array" +msgstr "Filtabell" + +#: includes/fields/class-acf-field-link.php:187 +#, fuzzy +msgid "Link URL" +msgstr "Fil-URL" + +#: includes/fields/class-acf-field-message.php:36 +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-true_false.php:141 +msgid "Message" +msgstr "Melding" + +#: includes/fields/class-acf-field-message.php:124 +#: includes/fields/class-acf-field-textarea.php:176 +msgid "New Lines" +msgstr "Linjeskift" + +#: includes/fields/class-acf-field-message.php:125 +#: includes/fields/class-acf-field-textarea.php:177 +msgid "Controls how new lines are rendered" +msgstr "Kontroller hvordan linjeskift gjengis" + +#: includes/fields/class-acf-field-message.php:129 +#: includes/fields/class-acf-field-textarea.php:181 +msgid "Automatically add paragraphs" +msgstr "Automatisk legge til avsnitt" + +#: includes/fields/class-acf-field-message.php:130 +#: includes/fields/class-acf-field-textarea.php:182 +msgid "Automatically add <br>" +msgstr "Legg til <br>" + +#: includes/fields/class-acf-field-message.php:131 +#: includes/fields/class-acf-field-textarea.php:183 +msgid "No Formatting" +msgstr "Ingen formatering" + +#: includes/fields/class-acf-field-message.php:138 +msgid "Escape HTML" +msgstr "Escape HTML" + +#: includes/fields/class-acf-field-message.php:139 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Tillat HTML-kode til Ã¥ vise oppføringsteksten i stedet for gjengivelse" + +#: includes/fields/class-acf-field-number.php:36 +msgid "Number" +msgstr "Tall" + +#: includes/fields/class-acf-field-number.php:181 +msgid "Minimum Value" +msgstr "Minste verdi" + +#: includes/fields/class-acf-field-number.php:190 +msgid "Maximum Value" +msgstr "Maksimal verdi" + +#: includes/fields/class-acf-field-number.php:199 +msgid "Step Size" +msgstr "Størrelse trinn" + +#: includes/fields/class-acf-field-number.php:237 +msgid "Value must be a number" +msgstr "Verdien mÃ¥ være et tall" + +#: includes/fields/class-acf-field-number.php:255 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Verdien mÃ¥ være lik eller høyere enn %d" + +#: includes/fields/class-acf-field-number.php:263 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Verdien mÃ¥ være lik eller lavere enn %d" + +#: includes/fields/class-acf-field-oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:237 +msgid "Enter URL" +msgstr "Skriv inn URL" + +#: includes/fields/class-acf-field-oembed.php:250 +#: includes/fields/class-acf-field-taxonomy.php:904 +msgid "Error." +msgstr "Feil." + +#: includes/fields/class-acf-field-oembed.php:250 +msgid "No embed found for the given URL." +msgstr "Fant ingen innbygging for den gitte URL-en." + +#: includes/fields/class-acf-field-oembed.php:283 +#: includes/fields/class-acf-field-oembed.php:294 +msgid "Embed Size" +msgstr "Embed-størrelse" + +#: includes/fields/class-acf-field-page_link.php:192 +msgid "Archives" +msgstr "Arkiv" + +#: includes/fields/class-acf-field-page_link.php:500 +#: includes/fields/class-acf-field-post_object.php:399 +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Filter by Post Type" +msgstr "Filtrer etter innleggstype" + +#: includes/fields/class-acf-field-page_link.php:508 +#: includes/fields/class-acf-field-post_object.php:407 +#: includes/fields/class-acf-field-relationship.php:712 +msgid "All post types" +msgstr "Alle innleggstyper" + +#: includes/fields/class-acf-field-page_link.php:514 +#: includes/fields/class-acf-field-post_object.php:413 +#: includes/fields/class-acf-field-relationship.php:718 +msgid "Filter by Taxonomy" +msgstr "Filtrer etter taksonomi" + +#: includes/fields/class-acf-field-page_link.php:522 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-relationship.php:726 +msgid "All taxonomies" +msgstr "Alle taksonomier" + +#: includes/fields/class-acf-field-page_link.php:528 +#: includes/fields/class-acf-field-post_object.php:427 +#: includes/fields/class-acf-field-radio.php:259 +#: includes/fields/class-acf-field-select.php:484 +#: includes/fields/class-acf-field-taxonomy.php:799 +#: includes/fields/class-acf-field-user.php:423 +msgid "Allow Null?" +msgstr "Tillat Null?" + +#: includes/fields/class-acf-field-page_link.php:538 +msgid "Allow Archives URLs" +msgstr "Tillat arkiv-URL-er" + +#: includes/fields/class-acf-field-page_link.php:548 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-select.php:494 +#: includes/fields/class-acf-field-user.php:433 +msgid "Select multiple values?" +msgstr "Velg flere verdier?" + +#: includes/fields/class-acf-field-password.php:36 +msgid "Password" +msgstr "Passord" + +#: includes/fields/class-acf-field-post_object.php:36 +#: includes/fields/class-acf-field-post_object.php:452 +#: includes/fields/class-acf-field-relationship.php:783 +msgid "Post Object" +msgstr "Innleggsobjekt" + +#: includes/fields/class-acf-field-post_object.php:453 +#: includes/fields/class-acf-field-relationship.php:784 +msgid "Post ID" +msgstr "ID for innlegg" + +#: includes/fields/class-acf-field-radio.php:36 +msgid "Radio Button" +msgstr "Radioknapp" + +#: includes/fields/class-acf-field-radio.php:269 +msgid "Other" +msgstr "Andre" + +#: includes/fields/class-acf-field-radio.php:274 +msgid "Add 'other' choice to allow for custom values" +msgstr "Legg til 'andre'-valg for Ã¥ tillate egendefinerte verdier" + +#: includes/fields/class-acf-field-radio.php:280 +msgid "Save Other" +msgstr "Lagre annen" + +#: includes/fields/class-acf-field-radio.php:285 +msgid "Save 'other' values to the field's choices" +msgstr "Lagre 'andre'-verdier til feltets valg" + +#: includes/fields/class-acf-field-relationship.php:36 +msgid "Relationship" +msgstr "Forhold" + +#: includes/fields/class-acf-field-relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "Minimumsverdier nÃ¥dd ({min} verdier)" + +#: includes/fields/class-acf-field-relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "Maksimumsverdier nÃ¥dd ( {max} verdier )" + +#: includes/fields/class-acf-field-relationship.php:50 +msgid "Loading" +msgstr "Laster" + +#: includes/fields/class-acf-field-relationship.php:51 +msgid "No matches found" +msgstr "Fant ingen treff" + +#: includes/fields/class-acf-field-relationship.php:585 +msgid "Search..." +msgstr "Søk …" + +#: includes/fields/class-acf-field-relationship.php:594 +msgid "Select post type" +msgstr "Velg innleggstype" + +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Select taxonomy" +msgstr "Velg taksonomi" + +#: includes/fields/class-acf-field-relationship.php:732 +msgid "Filters" +msgstr "Filtre" + +#: includes/fields/class-acf-field-relationship.php:738 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Innleggstype" + +#: includes/fields/class-acf-field-relationship.php:739 +#: includes/fields/class-acf-field-taxonomy.php:36 +#: includes/fields/class-acf-field-taxonomy.php:769 +msgid "Taxonomy" +msgstr "Taksonomi" + +#: includes/fields/class-acf-field-relationship.php:746 +msgid "Elements" +msgstr "Elementer" + +#: includes/fields/class-acf-field-relationship.php:747 +msgid "Selected elements will be displayed in each result" +msgstr "Valgte elementer vises i hvert resultat" + +#: includes/fields/class-acf-field-relationship.php:758 +msgid "Minimum posts" +msgstr "Minimum antall innlegg" + +#: includes/fields/class-acf-field-relationship.php:767 +msgid "Maximum posts" +msgstr "Maksimalt antall innlegg" + +#: includes/fields/class-acf-field-relationship.php:871 +#: pro/fields/class-acf-field-gallery.php:815 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s krever minst %s valgt" +msgstr[1] "%s krever minst %s valgte" + +#: includes/fields/class-acf-field-select.php:36 +#: includes/fields/class-acf-field-taxonomy.php:791 +msgctxt "noun" +msgid "Select" +msgstr "Valg" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Ett resultat er tilgjengelig, trykk enter for Ã¥ velge det." + +#: includes/fields/class-acf-field-select.php:50 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"%d resultater er tilgjengelige, bruk opp- og nedpiltastene for Ã¥ navigere." + +#: includes/fields/class-acf-field-select.php:51 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Fant ingen treff" + +#: includes/fields/class-acf-field-select.php:52 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Vennligst fyll inn ett eller flere tegn" + +#: includes/fields/class-acf-field-select.php:53 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Vennligst fyll inn %d eller flere tegn" + +#: includes/fields/class-acf-field-select.php:54 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Vennligst slett ett tegn" + +#: includes/fields/class-acf-field-select.php:55 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Vennligst slett %d tegn" + +#: includes/fields/class-acf-field-select.php:56 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Du kan bare velge ett element" + +#: includes/fields/class-acf-field-select.php:57 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Du kan bare velge %d elementer" + +#: includes/fields/class-acf-field-select.php:58 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Laster flere resultater …" + +#: includes/fields/class-acf-field-select.php:59 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Søker…" + +#: includes/fields/class-acf-field-select.php:60 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Lasting mislyktes" + +#: includes/fields/class-acf-field-select.php:270 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "Velg" + +#: includes/fields/class-acf-field-select.php:504 +#: includes/fields/class-acf-field-true_false.php:159 +msgid "Stylised UI" +msgstr "Stilisert brukergrensesnitt" + +#: includes/fields/class-acf-field-select.php:514 +msgid "Use AJAX to lazy load choices?" +msgstr "Bruk AJAX for Ã¥ laste valg i bakgrunnen ved behov?" + +#: includes/fields/class-acf-field-select.php:525 +msgid "Specify the value returned" +msgstr "Angi verdien som returneres" + +#: includes/fields/class-acf-field-separator.php:36 +msgid "Separator" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:36 +msgid "Tab" +msgstr "Tab" + +#: includes/fields/class-acf-field-tab.php:96 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "" +"Fane-feltet vises ikke korrekt nÃ¥r det plasseres i et repeterende felt med " +"tabell-visning eller i et fleksibelt innholdsfelt" + +#: includes/fields/class-acf-field-tab.php:97 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "Bruk \"Fane-felt\" til Ã¥ gruppere felter" + +#: includes/fields/class-acf-field-tab.php:98 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" +"Alle felter som kommer etter dette \"fane-feltet\" (eller til et annet " +"\"fane-felt\" defineres) blir gruppert under overskriften til dette fane-" +"feltet." + +#: includes/fields/class-acf-field-tab.php:112 +msgid "Placement" +msgstr "Plassering" + +#: includes/fields/class-acf-field-tab.php:124 +msgid "End-point" +msgstr "Avslutning" + +#: includes/fields/class-acf-field-tab.php:125 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "Bruk dette feltet som en avslutning eller start en ny fane-gruppe" + +#: includes/fields/class-acf-field-taxonomy.php:719 +#: includes/fields/class-acf-field-true_false.php:95 +#: includes/fields/class-acf-field-true_false.php:184 includes/input.php:266 +#: pro/admin/views/html-settings-updates.php:103 +msgid "No" +msgstr "Nei" + +#: includes/fields/class-acf-field-taxonomy.php:738 +msgid "None" +msgstr "Ingen" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Select the taxonomy to be displayed" +msgstr "Velg taksonomien som skal vises" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Appearance" +msgstr "Utseende" + +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Select the appearance of this field" +msgstr "Velg utseendet pÃ¥ dette feltet" + +#: includes/fields/class-acf-field-taxonomy.php:785 +msgid "Multiple Values" +msgstr "Flere verdier" + +#: includes/fields/class-acf-field-taxonomy.php:787 +msgid "Multi Select" +msgstr "Flervalgsboks" + +#: includes/fields/class-acf-field-taxonomy.php:789 +msgid "Single Value" +msgstr "Enkeltverdi" + +#: includes/fields/class-acf-field-taxonomy.php:790 +msgid "Radio Buttons" +msgstr "Radioknapper" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Create Terms" +msgstr "Opprett termer" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Allow new terms to be created whilst editing" +msgstr "Tillat at nye termer opprettes under redigering" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Save Terms" +msgstr "Lagre termer" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Connect selected terms to the post" +msgstr "Koble valgte termer til innlegget" + +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Load Terms" +msgstr "Hent termer" + +#: includes/fields/class-acf-field-taxonomy.php:830 +msgid "Load value from posts terms" +msgstr "Hent verdier fra andre innleggstermer" + +#: includes/fields/class-acf-field-taxonomy.php:844 +msgid "Term Object" +msgstr "Term-objekt" + +#: includes/fields/class-acf-field-taxonomy.php:845 +msgid "Term ID" +msgstr "Term-ID" + +#: includes/fields/class-acf-field-taxonomy.php:904 +#, php-format +msgid "User unable to add new %s" +msgstr "Brukeren kan ikke legge til ny %s" + +#: includes/fields/class-acf-field-taxonomy.php:917 +#, php-format +msgid "%s already exists" +msgstr "%s eksisterer allerede" + +#: includes/fields/class-acf-field-taxonomy.php:958 +#, php-format +msgid "%s added" +msgstr "%s lagt til" + +#: includes/fields/class-acf-field-taxonomy.php:1003 +msgid "Add" +msgstr "Legg til" + +#: includes/fields/class-acf-field-text.php:36 +msgid "Text" +msgstr "Tekst" + +#: includes/fields/class-acf-field-text.php:178 +#: includes/fields/class-acf-field-textarea.php:157 +msgid "Character Limit" +msgstr "Karakterbegrensning" + +#: includes/fields/class-acf-field-text.php:179 +#: includes/fields/class-acf-field-textarea.php:158 +msgid "Leave blank for no limit" +msgstr "La stÃ¥ tomt for ingen grense" + +#: includes/fields/class-acf-field-textarea.php:36 +msgid "Text Area" +msgstr "TekstomrÃ¥de" + +#: includes/fields/class-acf-field-textarea.php:166 +msgid "Rows" +msgstr "Rader" + +#: includes/fields/class-acf-field-textarea.php:167 +msgid "Sets the textarea height" +msgstr "Setter textarea-høyde" + +#: includes/fields/class-acf-field-time_picker.php:36 +msgid "Time Picker" +msgstr "Tidsvelger" + +#: includes/fields/class-acf-field-true_false.php:36 +msgid "True / False" +msgstr "Sann / Usann" + +#: includes/fields/class-acf-field-true_false.php:94 +#: includes/fields/class-acf-field-true_false.php:174 includes/input.php:265 +#: pro/admin/views/html-settings-updates.php:93 +msgid "Yes" +msgstr "Ja" + +#: includes/fields/class-acf-field-true_false.php:142 +msgid "Displays text alongside the checkbox" +msgstr "Viser tekst ved siden av avkryssingsboksen" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "On Text" +msgstr "PÃ¥ tekst" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when active" +msgstr "Teksten som vises nÃ¥r aktiv" + +#: includes/fields/class-acf-field-true_false.php:180 +msgid "Off Text" +msgstr "Av tekst" + +#: includes/fields/class-acf-field-true_false.php:181 +msgid "Text shown when inactive" +msgstr "Teksten som vises nÃ¥r inaktiv" + +#: includes/fields/class-acf-field-url.php:36 +msgid "Url" +msgstr "URL" + +#: includes/fields/class-acf-field-url.php:165 +msgid "Value must be a valid URL" +msgstr "Feltet mÃ¥ inneholde en gyldig URL" + +#: includes/fields/class-acf-field-user.php:36 includes/locations.php:95 +msgid "User" +msgstr "Bruker" + +#: includes/fields/class-acf-field-user.php:408 +msgid "Filter by role" +msgstr "Filtrer etter rolle" + +#: includes/fields/class-acf-field-user.php:416 +msgid "All user roles" +msgstr "Alle brukerroller" + +#: includes/fields/class-acf-field-wysiwyg.php:36 +msgid "Wysiwyg Editor" +msgstr "WYSIWYG Editor" + +#: includes/fields/class-acf-field-wysiwyg.php:385 +msgid "Visual" +msgstr "Visuell" + +#: includes/fields/class-acf-field-wysiwyg.php:386 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Tekst" + +#: includes/fields/class-acf-field-wysiwyg.php:392 +msgid "Click to initialize TinyMCE" +msgstr "Klikk for Ã¥ initialisere TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:445 +msgid "Tabs" +msgstr "Faner" + +#: includes/fields/class-acf-field-wysiwyg.php:450 +msgid "Visual & Text" +msgstr "Visuell og tekst" + +#: includes/fields/class-acf-field-wysiwyg.php:451 +msgid "Visual Only" +msgstr "Bare visuell" + +#: includes/fields/class-acf-field-wysiwyg.php:452 +msgid "Text Only" +msgstr "Bare tekst" + +#: includes/fields/class-acf-field-wysiwyg.php:459 +msgid "Toolbar" +msgstr "Verktøylinje" + +#: includes/fields/class-acf-field-wysiwyg.php:469 +msgid "Show Media Upload Buttons?" +msgstr "Vise knapper for mediaopplasting?" + +#: includes/fields/class-acf-field-wysiwyg.php:479 +msgid "Delay initialization?" +msgstr "Utsette initialisering?" + +#: includes/fields/class-acf-field-wysiwyg.php:480 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE blir ikke initialisert før feltet klikkes" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:304 +msgid "Edit field group" +msgstr "Rediger feltgruppe" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Valider epot" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:588 pro/options-page.php:81 +msgid "Update" +msgstr "Oppdater" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Innlegg oppdatert" + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "Søppel avdekket" + +#: includes/input.php:258 +msgid "Expand Details" +msgstr "Utvid detaljer" + +#: includes/input.php:259 +msgid "Collapse Details" +msgstr "Skjul detaljer" + +#: includes/input.php:260 +msgid "Validation successful" +msgstr "Vellykket validering" + +#: includes/input.php:261 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Validering mislyktes" + +#: includes/input.php:262 +msgid "1 field requires attention" +msgstr "1 felt mÃ¥ ses pÃ¥" + +#: includes/input.php:263 +#, php-format +msgid "%d fields require attention" +msgstr "%d felter mÃ¥ ses pÃ¥" + +#: includes/input.php:264 +msgid "Restricted" +msgstr "Begrenset" + +#: includes/input.php:268 +msgid "Cancel" +msgstr "" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Innlegg" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Side" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Skjemaer" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Vedlegg" + +#: includes/locations/class-acf-location-attachment.php:113 +#, php-format +msgid "All %s formats" +msgstr "" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Kommentar" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Rolle nÃ¥værende bruker" + +#: includes/locations/class-acf-location-current-user-role.php:114 +msgid "Super Admin" +msgstr "Superadmin" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "NÃ¥værende bruker" + +#: includes/locations/class-acf-location-current-user.php:101 +msgid "Logged in" +msgstr "Logget inn" + +#: includes/locations/class-acf-location-current-user.php:102 +msgid "Viewing front end" +msgstr "Ser forside" + +#: includes/locations/class-acf-location-current-user.php:103 +msgid "Viewing back end" +msgstr "Ser adminside" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:113 +#, fuzzy +msgid "Menu Locations" +msgstr "Sted" + +#: includes/locations/class-acf-location-nav-menu.php:123 +msgid "Menus" +msgstr "" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Sideforelder" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Sidemal" + +#: includes/locations/class-acf-location-page-template.php:102 +#: includes/locations/class-acf-location-post-template.php:156 +msgid "Default Template" +msgstr "Standardmal" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Sidetype" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Front Page" +msgstr "Forside" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Posts Page" +msgstr "Innleggsside" + +#: includes/locations/class-acf-location-page-type.php:151 +msgid "Top Level Page (no parent)" +msgstr "ToppnivÃ¥side (ingen forelder)" + +#: includes/locations/class-acf-location-page-type.php:152 +msgid "Parent Page (has children)" +msgstr "Foreldreside (har barn)" + +#: includes/locations/class-acf-location-page-type.php:153 +msgid "Child Page (has parent)" +msgstr "Barn-side (har foreldre)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Innleggskategori" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Innleggsformat" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Innleggsstatus" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Innleggstaksonomi" + +#: includes/locations/class-acf-location-post-template.php:29 +#, fuzzy +msgid "Post Template" +msgstr "Sidemal" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Taksonomi-term" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Brukerskjema" + +#: includes/locations/class-acf-location-user-form.php:92 +msgid "Add / Edit" +msgstr "Legg til / Rediger" + +#: includes/locations/class-acf-location-user-form.php:93 +msgid "Register" +msgstr "Registrer" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Brukerrolle" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "Rediger" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "Oppdater" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s verdi som kreves" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields Pro" + +#: pro/admin/admin-options-page.php:196 +msgid "Publish" +msgstr "Publiser" + +#: pro/admin/admin-options-page.php:202 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Ingen egendefinerte feltgrupper funnet for denne valg-siden. Opprette en egendefinert feltgruppe" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Feil. Kan ikke koble til oppdateringsserveren" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:17 +msgid "Updates" +msgstr "Oppdateringer" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Deactivate License" +msgstr "Deaktiver lisens" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Activate License" +msgstr "Aktiver lisens" + +#: pro/admin/views/html-settings-updates.php:21 +msgid "License Information" +msgstr "Lisensinformasjon" + +#: pro/admin/views/html-settings-updates.php:24 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"For Ã¥ lÃ¥se opp oppdateringer mÃ¥ lisensnøkkelen skrives inn under. Se detaljer og priser dersom du ikke har " +"lisensnøkkel." + +#: pro/admin/views/html-settings-updates.php:33 +msgid "License Key" +msgstr "Lisensnøkkel" + +#: pro/admin/views/html-settings-updates.php:65 +msgid "Update Information" +msgstr "Oppdateringsinformasjon" + +#: pro/admin/views/html-settings-updates.php:72 +msgid "Current Version" +msgstr "Gjeldende versjon" + +#: pro/admin/views/html-settings-updates.php:80 +msgid "Latest Version" +msgstr "Siste versjon" + +#: pro/admin/views/html-settings-updates.php:88 +msgid "Update Available" +msgstr "Oppdatering tilgjengelig" + +#: pro/admin/views/html-settings-updates.php:96 +msgid "Update Plugin" +msgstr "Oppdater plugin" + +#: pro/admin/views/html-settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "Oppgi lisensnøkkelen ovenfor for lÃ¥se opp oppdateringer" + +#: pro/admin/views/html-settings-updates.php:104 +msgid "Check Again" +msgstr "Sjekk igjen" + +#: pro/admin/views/html-settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "Oppgraderingsvarsel" + +#: pro/fields/class-acf-field-clone.php:36 +msgctxt "noun" +msgid "Clone" +msgstr "Klone" + +#: pro/fields/class-acf-field-clone.php:858 +msgid "Select one or more fields you wish to clone" +msgstr "Velg ett eller flere felt du ønsker Ã¥ klone" + +#: pro/fields/class-acf-field-clone.php:875 +msgid "Display" +msgstr "Vis" + +#: pro/fields/class-acf-field-clone.php:876 +msgid "Specify the style used to render the clone field" +msgstr "Angi stil som brukes til Ã¥ gjengi klone-feltet" + +#: pro/fields/class-acf-field-clone.php:881 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Gruppe (viser valgt felt i en gruppe innenfor dette feltet)" + +#: pro/fields/class-acf-field-clone.php:882 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Sømløs (erstatter dette feltet med utvalgte felter)" + +#: pro/fields/class-acf-field-clone.php:903 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Etiketter vises som %s" + +#: pro/fields/class-acf-field-clone.php:906 +msgid "Prefix Field Labels" +msgstr "Prefiks feltetiketter" + +#: pro/fields/class-acf-field-clone.php:917 +#, php-format +msgid "Values will be saved as %s" +msgstr "Verdier vil bli lagret som %s" + +#: pro/fields/class-acf-field-clone.php:920 +msgid "Prefix Field Names" +msgstr "Prefiks feltnavn" + +#: pro/fields/class-acf-field-clone.php:1038 +msgid "Unknown field" +msgstr "Ukjent felt" + +#: pro/fields/class-acf-field-clone.php:1077 +msgid "Unknown field group" +msgstr "Ukjent feltgruppe" + +#: pro/fields/class-acf-field-clone.php:1081 +#, php-format +msgid "All fields from %s field group" +msgstr "Alle felt fra %s feltgruppe" + +#: pro/fields/class-acf-field-flexible-content.php:42 +#: pro/fields/class-acf-field-repeater.php:230 +#: pro/fields/class-acf-field-repeater.php:534 +msgid "Add Row" +msgstr "Legg til rad" + +#: pro/fields/class-acf-field-flexible-content.php:45 +msgid "layout" +msgstr "oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:46 +msgid "layouts" +msgstr "oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:47 +msgid "remove {layout}?" +msgstr "fjern {oppsett}?" + +#: pro/fields/class-acf-field-flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "Dette feltet krever minst {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "Dette feltet har en grense pÃ¥ {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Dette feltet krever minst {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Maksimalt {label} nÃ¥dd ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} tilgjengelig (maks {max})" + +#: pro/fields/class-acf-field-flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} kreves (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:54 +msgid "Flexible Content requires at least 1 layout" +msgstr "Fleksibelt innholdsfelt krever minst en layout" + +#: pro/fields/class-acf-field-flexible-content.php:288 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Klikk \"%s\"-knappen nedenfor for Ã¥ begynne Ã¥ lage oppsettet" + +#: pro/fields/class-acf-field-flexible-content.php:423 +msgid "Add layout" +msgstr "Legg til oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:424 +msgid "Remove layout" +msgstr "Fjern oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:425 +#: pro/fields/class-acf-field-repeater.php:360 +msgid "Click to toggle" +msgstr "Klikk for Ã¥ veksle" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder Layout" +msgstr "Endre rekkefølge pÃ¥ oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder" +msgstr "Endre rekkefølge" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete Layout" +msgstr "Slett oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate Layout" +msgstr "Dupliser oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New Layout" +msgstr "Legg til nytt oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:645 +msgid "Min" +msgstr "Minimum" + +#: pro/fields/class-acf-field-flexible-content.php:658 +msgid "Max" +msgstr "Maksimum" + +#: pro/fields/class-acf-field-flexible-content.php:685 +#: pro/fields/class-acf-field-repeater.php:530 +msgid "Button Label" +msgstr "Knappetikett" + +#: pro/fields/class-acf-field-flexible-content.php:694 +msgid "Minimum Layouts" +msgstr "Minimum oppsett" + +#: pro/fields/class-acf-field-flexible-content.php:703 +msgid "Maximum Layouts" +msgstr "Maksimum oppsett" + +#: pro/fields/class-acf-field-gallery.php:52 +msgid "Add Image to Gallery" +msgstr "Legg bildet til galleri" + +#: pro/fields/class-acf-field-gallery.php:56 +msgid "Maximum selection reached" +msgstr "Maksimalt utvalg nÃ¥dd" + +#: pro/fields/class-acf-field-gallery.php:336 +msgid "Length" +msgstr "Lengde" + +#: pro/fields/class-acf-field-gallery.php:379 +msgid "Caption" +msgstr "Bildetekst" + +#: pro/fields/class-acf-field-gallery.php:388 +msgid "Alt Text" +msgstr "Alternativ tekst" + +#: pro/fields/class-acf-field-gallery.php:559 +msgid "Add to gallery" +msgstr "Legg til galleri" + +#: pro/fields/class-acf-field-gallery.php:563 +msgid "Bulk actions" +msgstr "Massehandlinger" + +#: pro/fields/class-acf-field-gallery.php:564 +msgid "Sort by date uploaded" +msgstr "Sorter etter dato lastet opp" + +#: pro/fields/class-acf-field-gallery.php:565 +msgid "Sort by date modified" +msgstr "Sorter etter dato endret" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Sort by title" +msgstr "Sorter etter tittel" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Reverse current order" +msgstr "Snu gjeldende rekkefølge" + +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Close" +msgstr "Lukk" + +#: pro/fields/class-acf-field-gallery.php:639 +msgid "Minimum Selection" +msgstr "Minimum antall valg" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Maximum Selection" +msgstr "Maksimum antall valg" + +#: pro/fields/class-acf-field-gallery.php:657 +msgid "Insert" +msgstr "Sett inn" + +#: pro/fields/class-acf-field-gallery.php:658 +msgid "Specify where new attachments are added" +msgstr "Angi hvor nye vedlegg er lagt" + +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Append to the end" +msgstr "Tilføy til slutten" + +#: pro/fields/class-acf-field-gallery.php:663 +msgid "Prepend to the beginning" +msgstr "Sett inn foran" + +#: pro/fields/class-acf-field-repeater.php:47 +msgid "Minimum rows reached ({min} rows)" +msgstr "Minimum antall rader nÃ¥dd ({min} rader)" + +#: pro/fields/class-acf-field-repeater.php:48 +msgid "Maximum rows reached ({max} rows)" +msgstr "Maksimum antall rader nÃ¥dd ({max} rader)" + +#: pro/fields/class-acf-field-repeater.php:405 +msgid "Add row" +msgstr "Legg til rad" + +#: pro/fields/class-acf-field-repeater.php:406 +msgid "Remove row" +msgstr "Fjern rad" + +#: pro/fields/class-acf-field-repeater.php:483 +msgid "Collapsed" +msgstr "Sammenfoldet" + +#: pro/fields/class-acf-field-repeater.php:484 +msgid "Select a sub field to show when row is collapsed" +msgstr "Velg et underfelt Ã¥ vise nÃ¥r raden er skjult" + +#: pro/fields/class-acf-field-repeater.php:494 +msgid "Minimum Rows" +msgstr "Minimum antall rader" + +#: pro/fields/class-acf-field-repeater.php:504 +msgid "Maximum Rows" +msgstr "Maksimum antall rader" + +#: pro/locations/class-acf-location-options-page.php:70 +msgid "No options pages exist" +msgstr "Ingen side for alternativer eksisterer" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Valg" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Alternativer er oppdatert" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"For Ã¥ lÃ¥se opp oppdateringer mÃ¥ lisensnøkkelen skrives inn pÃ¥ oppdateringer-siden. Se detaljer og " +"priser dersom du ikke har lisensnøkkel." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Getting Started" +#~ msgstr "Kom i gang" + +#~ msgid "Field Types" +#~ msgstr "Felttyper" + +#~ msgid "Functions" +#~ msgstr "Funksjoner" + +#~ msgid "Actions" +#~ msgstr "Handlinger" + +#~ msgid "Features" +#~ msgstr "Funksjoner" + +#~ msgid "How to" +#~ msgstr "Veiledning" + +#~ msgid "Tutorials" +#~ msgstr "Veiledninger" + +#~ msgid "FAQ" +#~ msgstr "OSS" + +#~ msgid "Term meta upgrade not possible (termmeta table does not exist)" +#~ msgstr "Termmeta-oppgradering ikke mulig (termmeta-tabell finnes ikke)" + +#~ msgid "Error" +#~ msgstr "Feil" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "1 felt mÃ¥ ses pÃ¥" +#~ msgstr[1] "%d felter mÃ¥ ses pÃ¥" + +#~ msgid "" +#~ "Error validating ACF PRO license URL (website does not match). Please re-" +#~ "activate your license" +#~ msgstr "" +#~ "Feil under validering av ACF PRO-lisens URL (nettsted samsvarer ikke). " +#~ "Vennligst reaktiver lisensen" + +#~ msgid "Disabled" +#~ msgstr "Deaktivert" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Deaktivert (%s)" +#~ msgstr[1] "Deaktiverte (%s)" + +#~ msgid "'How to' guides" +#~ msgstr "\"Hvordan\" -guider" + +#~ msgid "Created by" +#~ msgstr "Laget av" + +#~ msgid "No updates available" +#~ msgstr "Ingen oppdateringer tilgjengelige" + +#~ msgid "Error loading update" +#~ msgstr "Feil ved lasting av oppdatering" + +#~ msgid "Database Upgrade complete" +#~ msgstr "Databaseoppgradering fullført" + +#~ msgid "Return to network dashboard" +#~ msgstr "Tilbake til nettverkskontrollpanel" + +#~ msgid "See what's new" +#~ msgstr "Se hva som er nytt" + +#~ msgid "No embed found for the given URL" +#~ msgstr "Ingen embed funnet for den gitte URL-en" + +#~ msgid "eg. Show extra content" +#~ msgstr "f. eks. Vis ekstra innhold" + +#~ msgid "No Custom Field Groups found for this options page" +#~ msgstr "Ingen egendefinerte feltgrupper funnet for dette valget" + +#~ msgid "Create a Custom Field Group" +#~ msgstr "Opprett en egendefinert feltgruppe" + +#~ msgid "" +#~ "Error validating license URL (website does not match). Please re-activate " +#~ "your license" +#~ msgstr "" +#~ "Feil ved validering av lisens-URL (nettsted samsvarer ikke). Vennligst " +#~ "reaktiver din lisens" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "Suksess. Importverktøyet la til %s feltgrupper: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Advarsel. Importverktøyet oppdaget %s feltgrupper allerede " +#~ "eksisterer og har blitt ignorert: %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "Oppgrader ACF" + +#~ msgid "Upgrade" +#~ msgstr "Oppgrader" + +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to " +#~ "update and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "Følgende omrÃ¥der krever en database-oppgradering. Sjekk de du vil " +#~ "oppdatere, og klikk deretter pÃ¥ \"Upgrade Database\"." + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Done" +#~ msgstr "Fullført" + +#~ msgid "Today" +#~ msgstr "Idag" + +#~ msgid "Show a different month" +#~ msgstr "Vise en annen mÃ¥ned" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Tilkoblingsfeil. Beklager, prøv pÃ¥ nytt" + +#~ msgid "See what's new in" +#~ msgstr "Se hva som er nytt i" + +#~ msgid "version" +#~ msgstr "versjon" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "Dra og slipp for Ã¥ endre rekkefølgen" + +#~ msgid "Upgrading data to" +#~ msgstr "Oppgradere data til" + +#~ msgid "Return format" +#~ msgstr "Format som skal returneres" + +#~ msgid "uploaded to this post" +#~ msgstr "lastet opp til dette innlegget" + +#~ msgid "File Name" +#~ msgstr "Filnavn" + +#~ msgid "File Size" +#~ msgstr "Filstørrelse" + +#~ msgid "No File selected" +#~ msgstr "Ingen fil valgt" + +#~ msgid "Add new %s " +#~ msgstr "Legg til ny %s" + +#~ msgid "Save Options" +#~ msgstr "Lagringsvalg" + +#~ msgid "License" +#~ msgstr "Lisens" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Oppgi lisensnøkkelen nedenfor for Ã¥ lÃ¥se opp oppdateringer. Hvis du ikke " +#~ "har en lisensnøkkel, se" + +#~ msgid "details & pricing" +#~ msgstr "detaljer og priser" + +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "For Ã¥ aktivere oppdateringer, angi din lisensnøkkel pÃ¥ oppdateringer -siden. Hvis du ikke har en lisensnøkkel, se detaljer og priser" + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +#~ msgid "http://www.advancedcustomfields.com/" +#~ msgstr "http://www.advancedcustomfields.com/" + +#~ msgid "elliot condon" +#~ msgstr "elliot condon" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-nl_NL.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-nl_NL.mo new file mode 100644 index 0000000000000000000000000000000000000000..7bd4e49474bddf2a6141866529ca0dacd6688e23 GIT binary patch literal 49688 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-nl_NL.po b/wp-content/plugins/advanced-custom-fields/lang/acf-nl_NL.po new file mode 100644 index 0000000..7686e3b --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-nl_NL.po @@ -0,0 +1,3875 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.6.6\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2017-11-22 15:53+0200\n" +"PO-Revision-Date: 2019-03-25 09:21+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Derk Oosterveld \n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:67 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:369 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Groepen" + +#: acf.php:370 +msgid "Field Group" +msgstr "Nieuwe groep" + +#: acf.php:371 acf.php:403 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New" +msgstr "Nieuwe groep" + +#: acf.php:372 +msgid "Add New Field Group" +msgstr "Nieuwe groep toevoegen" + +#: acf.php:373 +msgid "Edit Field Group" +msgstr "Bewerk groep" + +#: acf.php:374 +msgid "New Field Group" +msgstr "Nieuwe groep" + +#: acf.php:375 +msgid "View Field Group" +msgstr "Bekijk groep" + +#: acf.php:376 +msgid "Search Field Groups" +msgstr "Zoek groepen" + +#: acf.php:377 +msgid "No Field Groups found" +msgstr "Geen groepen gevonden" + +#: acf.php:378 +msgid "No Field Groups found in Trash" +msgstr "Geen groepen gevonden in de prullenbak" + +#: acf.php:401 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:807 +msgid "Fields" +msgstr "Velden" + +#: acf.php:402 +msgid "Field" +msgstr "Veld" + +#: acf.php:404 +msgid "Add New Field" +msgstr "Nieuw veld" + +#: acf.php:405 +msgid "Edit Field" +msgstr "Bewerk veld" + +#: acf.php:406 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Nieuw veld" + +#: acf.php:407 +msgid "View Field" +msgstr "Nieuw veld" + +#: acf.php:408 +msgid "Search Fields" +msgstr "Zoek velden" + +#: acf.php:409 +msgid "No Fields found" +msgstr "Geen velden gevonden" + +#: acf.php:410 +msgid "No Fields found in Trash" +msgstr "Geen velden gevonden in de prullenbak" + +#: acf.php:449 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Niet actief" + +#: acf.php:454 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inactief (%s)" +msgstr[1] "Inactief (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Groep bijgewerkt." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Groep verwijderd." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Groep gepubliceerd." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Groep opgeslagen." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Groep toegevoegd." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Groep gepland voor." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Groep concept bijgewerkt." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "Locatie" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "Instellingen" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "Naar prullenbak. Weet je het zeker?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "aangevinkt" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "Geen aan/uit velden beschikbaar" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "Titel is verplicht" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "kopie" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3964 +msgid "or" +msgstr "of" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "Hoofdpagina" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "Zuster velden" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "Verplaats extra veld" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "" +"Dit veld kan niet worden verplaatst totdat de wijzigingen zijn opgeslagen" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "Nul" + +#: includes/admin/admin-field-group.php:281 includes/input.php:258 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "De gemaakte wijzigingen gaan verloren als je deze pagina verlaat" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "De string \"field_\" mag niet voor de veld naam staan" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Veld keys" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Actief" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "Verplaatsen geslaagd." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Het veld: %s bevindt zich nu in de groep: %s" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "Venster sluiten" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "Selecteer de bestemming voor dit veld" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "Veld verplaatsen" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Actief (%s)" +msgstr[1] "Actief (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Groep gedupliceerd. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s groep gedupliceerd." +msgstr[1] "%s groepen gedupliceerd." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Groep gesynchroniseerd. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s groep gesynchroniseerd." +msgstr[1] "%s groepen gesynchroniseerd." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Synchronisatie beschikbaar" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:355 +msgid "Title" +msgstr "Titel" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:382 +msgid "Description" +msgstr "Omschrijving" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Status" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "Pas WordPress aan met krachtige, professionele en slimme velden." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Wat is er nieuw?" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Bekijk wat nieuw is in versie %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Documentatie (Engels)" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Website" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Documentatie" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Support" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Bedankt voor het ontwikkelen met ACF." + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "Dupliceer dit item" + +#: includes/admin/admin-field-groups.php:668 +#: includes/admin/admin-field-groups.php:684 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate" +msgstr "Dupliceer" + +#: includes/admin/admin-field-groups.php:701 +#: includes/fields/class-acf-field-google-map.php:112 +#: includes/fields/class-acf-field-relationship.php:656 +msgid "Search" +msgstr "Zoeken" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "Selecteer %s" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "Synchroniseer groep" + +#: includes/admin/admin-field-groups.php:768 +#: includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "Synchroniseer" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "Toepassen" + +#: includes/admin/admin-field-groups.php:798 +msgid "Bulk Actions" +msgstr "Bulk acties" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Extra velden" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Upgrade database" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Controleer websites & upgrade" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "Fout bij valideren" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "Geen updates beschikbaar." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Add-ons" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Fout. Kan add-ons lijst niet laden" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informatie" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Wat is er nieuw" + +#: includes/admin/settings-tools.php:50 +#: includes/admin/views/settings-tools-export.php:19 +#: includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "Tools" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "Geen groepen geselecteerd" + +#: includes/admin/settings-tools.php:184 +#: includes/fields/class-acf-field-file.php:155 +msgid "No file selected" +msgstr "Geen bestanden geselecteerd" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "Fout bij het uploaden van bestand. Probeer het nog eens" + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "Ongeldig bestandstype" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "Importeer bestand is leeg" + +#: includes/admin/settings-tools.php:331 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "1 groep geïmporteerd" +msgstr[1] "%s groepen geïmporteerd" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "Conditionele logica" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Toon dit veld als" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:247 +msgid "is equal to" +msgstr "gelijk is aan" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "is niet gelijk aan" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "en" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Nieuwe groep toevoegen" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:403 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Drag to reorder" +msgstr "Sleep om te sorteren" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Bewerk veld" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-file.php:137 +#: includes/fields/class-acf-field-image.php:122 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:342 +msgid "Edit" +msgstr "Bewerk" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Dupliceer veld" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "Verplaats veld naar een andere groep" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "Verplaats" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "Verwijder veld" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete" +msgstr "Verwijder" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "Veld label" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "De naam die verschijnt op het edit screen" + +#: includes/admin/views/field-group-field.php:77 +msgid "Field Name" +msgstr "Veld naam" + +#: includes/admin/views/field-group-field.php:78 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Enkel woord, geen spaties. (Liggende) streepjes toegestaan." + +#: includes/admin/views/field-group-field.php:87 +msgid "Field Type" +msgstr "Soort veld" + +#: includes/admin/views/field-group-field.php:98 +#: includes/fields/class-acf-field-tab.php:88 +msgid "Instructions" +msgstr "Instructies" + +#: includes/admin/views/field-group-field.php:99 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Toelichting voor gebruikers. Wordt getoond bij invullen van het veld." + +#: includes/admin/views/field-group-field.php:108 +msgid "Required?" +msgstr "Verplicht?" + +#: includes/admin/views/field-group-field.php:131 +msgid "Wrapper Attributes" +msgstr "Veld-attributen" + +#: includes/admin/views/field-group-field.php:137 +msgid "width" +msgstr "Breedte" + +#: includes/admin/views/field-group-field.php:152 +msgid "class" +msgstr "class" + +#: includes/admin/views/field-group-field.php:165 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:177 +msgid "Close Field" +msgstr "Veld sluiten" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Volgorde" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:415 +#: includes/fields/class-acf-field-radio.php:306 +#: includes/fields/class-acf-field-select.php:432 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Label" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:964 +#: pro/fields/class-acf-field-flexible-content.php:595 +msgid "Name" +msgstr "Naam" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Sleutel" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Soort" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Geen velden. Klik op + Nieuw veld button om je eerste veld " +"te maken." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Nieuw veld" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regels" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Maak regels aan om te bepalen op welk edit screen jouw extra velden " +"verschijnen" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stijl" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standaard (WordPress metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Naadloos (zonder WordPress metabox)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Positie" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Hoog (onder titel)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normaal (onder tekstverwerker)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Zijkant" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Label positionering" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:102 +msgid "Top aligned" +msgstr "Boven velden" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:103 +msgid "Left aligned" +msgstr "Links naast velden" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Instructie positionering" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Onder label" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Onder veld" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Volgorde nummer" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Groepen met een lage volgorde worden als eerst getoond" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Toon in groeplijst" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Verberg elementen" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Selecteer elementen om te verbergen op het wijzig scherm." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Indien meerdere groepen op het bewerk scherm worden getoond, komt de groep " +"met de laagste volgorde als eerste." + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Permalink" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Content editor" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Samenvatting" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "Reageren" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Reacties" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Revisies" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Slug" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Auteur" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Format" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Pagina-attributen" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:670 +msgid "Featured Image" +msgstr "Uitgelichte afbeelding" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Categorieën" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Tags" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Trackbacks verzenden" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Toon deze groep als" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Upgrade websites" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Advanced Custom Fields database upgrade" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Er is een database upgrade nodig voor de volgende websites. Controleer " +"degene die je wilt updaten en klik %s." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Website" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Website vereist een database upgrade van %s naar %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Website is up-to-date" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Database upgrade afgerond. Terug naar netwerk dashboard" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Het is aan te raden om eerst een backup van de database te maken voordat je " +"de update uitvoert. Weet je zeker dat je de update nu wilt uitvoeren?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Upgrade afgerond" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Bezig met upgraden naar versie %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Herhalen" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Flexibele content" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerij" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Opties pagina" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Database upgrade vereist" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Bedankt voor het updaten naar %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Voordat je aan de slag kunt met de geweldige nieuwe functies, is een " +"database update vereist." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"Zorg ervoor dat elke premium add-ons (%s) eerst zijn bijgewerkt naar de " +"laatste versie." + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Lezen van upgrade taken…" + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "Database upgrade afgerond. Bekijk wat nieuw is" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Download & installeer" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Geïnstalleerd" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Welkom bij Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Bedankt voor het updaten! ACF %s is groter dan ooit tevoren. We hopen dat je " +"tevreden bent." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "Een verbeterde extra veld beleving" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Gebruikersvriendelijker" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Inclusief de populaire Select2 bibliotheek, die zowel " +"gebruikersvriendelijker als sneller werkt bij velden als post object, pagina " +"link, taxonomy en selecteer." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Verbeterd design" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Vele velden hebben een make-over gekregen. Nu oogt ACF beter dan ooit! " +"Merkwaardige verschillen vindt je onder andere terug bij de galerij, relatie " +"en oEmbed velden!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Verbeterde data" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Het herontwerp van de dataverwerking zorgt ervoor dat velden los van hun " +"hoofdvelden kunnen functioneren. Hiermee wordt het mogelijk om velden te " +"drag-and-droppen tussen hoofdvelden." + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Vaarwel Add-ons. Hallo PRO!" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"We veranderen de manier waarop premium functies worden geleverd, op een gave " +"manier!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Alle 4 de premium add-ons zijn samengevoegd tot een PRO " +"versie van ACF. Er zijn zowel persoonlijke als developer licenties " +"verkrijgbaar tegen een aantrekkelijke prijs!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Krachtige functies" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO beschikt over krachtige velden en functies zoals: herhaalbare " +"velden, flexibile content layouts, een interactieve fotogalerij veld en de " +"mogelijkheid om optie pagina's aan te maken!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Lees meer over de ACF PRO functionaliteiten." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Gemakkelijk upgraden" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"Om upgraden gemakkelijk te maken kun je inloggen met je " +"bestaande winkelaccount en een gratis versie van ACF PRO claimen!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"We hebben een speciale upgrade gids gemaakt om al je " +"vraagstukken te beantwoorden. Indien je een uitgebreidere vraag hebt, kun je " +"contact opnemen met de helpdesk (Engelstalig)." + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Onder de motorkap" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Slimmere veld instellingen" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF slaat velden als individuele post objecten op" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Meer AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" +"Steeds meer velden maken gebruik van AJAX gestuurde zoekopdrachten. Dit " +"maakt het laden een stuk sneller" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "Local JSON" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "Het automatisch exporteren naar JSON maakt alles een stuk sneller" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Betere versie controles" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" +"Nieuw is het automatisch exporteren naar JSON. Dit voorkomt problemen " +"tijdens het upgraden van ACF." + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "XML is vervangen door JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "" +"Importeren / Exporteren gaat nu via JSON. Indien gewenst kan er XML worden " +"gebruikt" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Nieuwe formulieren" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Velden kunnen nu worden toegewezen aan reacties, widgets en " +"gebruikersformulieren!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Een nieuw veld voor het embedden van content is toegevoegd" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Nieuwe galerij" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Het galerij veld heeft een complete facelift ondergaan" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Nieuwe instellingen" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Nieuwe groep instellingen zijn toegevoegd om label en instructies toe te " +"voegen" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Betere front-end formulieren" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() kan nu posts aanmaken/toevoegen na goedkeuring" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Betere validatie" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "" +"Formulier validatie gaat nu via PHP + AJAX. Indien gewenst kan dit ook via JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Relatie veld" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Nieuwe relatieveld instellingen voor filters (Zoeken, Post Type en Taxonomy)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Velden verplaatsen" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"Nieuwe veld groep functionaliteiten laat je velden tussen groepen " +"verplaatsen." + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Pagina link" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Nieuwe archief groep in pagina_link veld" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Verbeterde optie pagina's" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"De opties pagina's kunnen nu worden voorzien van zowel hoofd als sub-pagina's" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "" +"Wij denken dat u de wijzigingen en vernieuwingen zult waarderen in versie %s." + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "Exporteer groep(en) naar PHP" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"De volgende code kun je integreren in je thema. Door de groep(en) te " +"integreren verhoog je de laadsnelheid. Kopieer en plak deze in code in " +"functions.php, of maak een nieuw PHP bestand aan." + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Selecteer groepen" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "Exporteer groepen" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Selecteer de groepen die je wilt exporteren. Maak vervolgens de keuze om de " +"groepen te downloaden als JSON bestand, of genereer de export code in PHP " +"formaat. De PHP export code kun je integreren in je thema." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "Download export bestand" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Genereer export code" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "Importeer groepen" + +#: includes/admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Selecteer het Advanced Custom Fields JSON bestand die je wilt importeren. " +"Klik op de importeer button om het importeren te starten." + +#: includes/admin/views/settings-tools.php:77 +#: includes/fields/class-acf-field-file.php:35 +msgid "Select File" +msgstr "Selecteer bestand" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Importeer" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "Thumbnail" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "Gemiddeld" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "Groot" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "Volledige grootte" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1831 +#: pro/fields/class-acf-field-clone.php:992 +msgid "(no title)" +msgstr "(geen titel)" + +#: includes/api/api-helpers.php:1868 +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:986 +msgid "Parent" +msgstr "Hoofd" + +#: includes/api/api-helpers.php:3885 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Afbeelding breedte moet tenminste %dpx zijn." + +#: includes/api/api-helpers.php:3890 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Afbeelding mag niet breder zijn dan %dpx." + +#: includes/api/api-helpers.php:3906 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Afbeelding hoogte moet tenminste %dpx zijn." + +#: includes/api/api-helpers.php:3911 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Afbeelding mag niet hoger zijn dan %dpx." + +#: includes/api/api-helpers.php:3929 +#, php-format +msgid "File size must be at least %s." +msgstr "Bestandsgrootte moet tenminste %s zijn." + +#: includes/api/api-helpers.php:3934 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Bestand mag niet groter zijn dan %s." + +#: includes/api/api-helpers.php:3968 +#, php-format +msgid "File type must be %s." +msgstr "Bestandstype moet %s zijn." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Basis" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Inhoud" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Keuze" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Relatie" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 +#: includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:384 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:285 +#: pro/fields/class-acf-field-clone.php:839 +#: pro/fields/class-acf-field-flexible-content.php:552 +#: pro/fields/class-acf-field-flexible-content.php:601 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Layout" +msgstr "Layout" + +#: includes/fields.php:326 +msgid "Field type does not exist" +msgstr "Veld type bestaat niet" + +#: includes/fields.php:326 +msgid "Unknown" +msgstr "Onbekend" + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Button groep" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:368 +msgid "Choices" +msgstr "Keuzes" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each choice on a new line." +msgstr "Per regel een keuze" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Om meer controle te krijgen over de keuzes, kun je de naam en het label van " +"elkaar scheiden. Dit doe je op de volgende manier:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "red : Red" +msgstr "rood : Rood" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:386 +#: includes/fields/class-acf-field-taxonomy.php:793 +#: includes/fields/class-acf-field-user.php:408 +msgid "Allow Null?" +msgstr "Mag leeg zijn?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:375 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:276 +#: includes/fields/class-acf-field-range.php:148 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:410 +msgid "Default Value" +msgstr "Standaard waarde" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:277 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Appears when creating a new post" +msgstr "" +"Vooraf ingevulde waarde die te zien is tijdens het aanmaken van een nieuwe " +"post" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:391 +#: includes/fields/class-acf-field-radio.php:292 +msgid "Horizontal" +msgstr "Horizontaal" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:390 +#: includes/fields/class-acf-field-radio.php:291 +msgid "Vertical" +msgstr "Verticaal" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:408 +#: includes/fields/class-acf-field-file.php:200 +#: includes/fields/class-acf-field-image.php:188 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:299 +#: includes/fields/class-acf-field-taxonomy.php:833 +msgid "Return Value" +msgstr "Output weergeven als" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:409 +#: includes/fields/class-acf-field-file.php:201 +#: includes/fields/class-acf-field-image.php:189 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:300 +msgid "Specify the returned value on front end" +msgstr "Bepaal hier de output weergave" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-radio.php:305 +#: includes/fields/class-acf-field-select.php:431 +msgid "Value" +msgstr "Waarde" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:416 +#: includes/fields/class-acf-field-radio.php:307 +#: includes/fields/class-acf-field-select.php:433 +msgid "Both (Array)" +msgstr "Beide (Array)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Checkbox" +msgstr "Checkbox" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Selecteer alle" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Nieuwe keuze" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Eigen invoer toestaan" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "‘Eigen invoer’ waarden toestaan" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Eigen invoer opslaan" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Sla ‘eigen invoer’ waarden op als veld keuzes" + +#: includes/fields/class-acf-field-checkbox.php:376 +#: includes/fields/class-acf-field-select.php:378 +msgid "Enter each default value on a new line" +msgstr "Per regel de naam van een keuze" + +#: includes/fields/class-acf-field-checkbox.php:398 +msgid "Toggle" +msgstr "Switch" + +#: includes/fields/class-acf-field-checkbox.php:399 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Voeg een extra checkbox toe aan het begin om alle keuzes te selecteren" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Kleurprikker" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Wissen" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Standaard waarde" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Selecteer kleur" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Huidige kleur" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Datumprikker" + +#: includes/fields/class-acf-field-date_picker.php:33 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Gereed" + +#: includes/fields/class-acf-field-date_picker.php:34 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Vandaag" + +#: includes/fields/class-acf-field-date_picker.php:35 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Volgende" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Vorige" + +#: includes/fields/class-acf-field-date_picker.php:37 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Wk " + +#: includes/fields/class-acf-field-date_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:181 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Weergeven als" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:182 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "De weergave tijdens het aanmaken/bewerken van een post" + +#: includes/fields/class-acf-field-date_picker.php:216 +#: includes/fields/class-acf-field-date_picker.php:247 +#: includes/fields/class-acf-field-date_time_picker.php:191 +#: includes/fields/class-acf-field-date_time_picker.php:208 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Eigen invoer:" + +#: includes/fields/class-acf-field-date_picker.php:226 +msgid "Save Format" +msgstr "Indeling opslaan" + +#: includes/fields/class-acf-field-date_picker.php:227 +msgid "The format used when saving a value" +msgstr "Het formaat bij opslaan van waarde" + +#: includes/fields/class-acf-field-date_picker.php:237 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:697 +#: includes/fields/class-acf-field-select.php:426 +#: includes/fields/class-acf-field-time_picker.php:124 +msgid "Return Format" +msgstr "Output weergeven als" + +#: includes/fields/class-acf-field-date_picker.php:238 +#: includes/fields/class-acf-field-date_time_picker.php:199 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "De weergave in het thema" + +#: includes/fields/class-acf-field-date_picker.php:256 +#: includes/fields/class-acf-field-date_time_picker.php:215 +msgid "Week Starts On" +msgstr "Week start op" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Datum tijd picker" + +#: includes/fields/class-acf-field-date_time_picker.php:33 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Kies tijd" + +#: includes/fields/class-acf-field-date_time_picker.php:34 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Tijd" + +#: includes/fields/class-acf-field-date_time_picker.php:35 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Uur" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minuut" + +#: includes/fields/class-acf-field-date_time_picker.php:37 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Seconde" + +#: includes/fields/class-acf-field-date_time_picker.php:38 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milliseconde" + +#: includes/fields/class-acf-field-date_time_picker.php:39 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Microseconde" + +#: includes/fields/class-acf-field-date_time_picker.php:40 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Tijdzone" + +#: includes/fields/class-acf-field-date_time_picker.php:41 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Nu" + +#: includes/fields/class-acf-field-date_time_picker.php:42 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Gereed" + +#: includes/fields/class-acf-field-date_time_picker.php:43 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Selecteer" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "E-mail" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Plaatsvervangende tekst" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Informatie die verschijnt in het veld (verdwijnt zodra je typt)" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:187 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Voorvoegsel" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Informatie die verschijnt voor het veld" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:196 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Navoegsel" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Informatie die verschijnt na het veld" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Bestand" + +#: includes/fields/class-acf-field-file.php:36 +msgid "Edit File" +msgstr "Bewerk bestand" + +#: includes/fields/class-acf-field-file.php:37 +msgid "Update File" +msgstr "Update bestand" + +#: includes/fields/class-acf-field-file.php:38 +#: includes/fields/class-acf-field-image.php:43 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:44 +msgid "Uploaded to this post" +msgstr "Geüpload naar deze post" + +#: includes/fields/class-acf-field-file.php:126 +msgid "File name" +msgstr "Bestandsnaam" + +#: includes/fields/class-acf-field-file.php:130 +#: includes/fields/class-acf-field-file.php:233 +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: pro/fields/class-acf-field-gallery.php:690 +#: pro/fields/class-acf-field-gallery.php:719 +msgid "File size" +msgstr "Bestandsgrootte" + +#: includes/fields/class-acf-field-file.php:139 +#: includes/fields/class-acf-field-image.php:124 +#: includes/fields/class-acf-field-link.php:140 includes/input.php:269 +#: pro/fields/class-acf-field-gallery.php:343 +#: pro/fields/class-acf-field-gallery.php:531 +msgid "Remove" +msgstr "Verwijder" + +#: includes/fields/class-acf-field-file.php:155 +msgid "Add File" +msgstr "Voeg bestand toe" + +#: includes/fields/class-acf-field-file.php:206 +msgid "File Array" +msgstr "Bestand Array" + +#: includes/fields/class-acf-field-file.php:207 +msgid "File URL" +msgstr "Bestands-URL" + +#: includes/fields/class-acf-field-file.php:208 +msgid "File ID" +msgstr "Bestands-ID" + +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:213 +#: pro/fields/class-acf-field-gallery.php:655 +msgid "Library" +msgstr "Bibliotheek" + +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:214 +#: pro/fields/class-acf-field-gallery.php:656 +msgid "Limit the media library choice" +msgstr "" +"Limiteer de keuze van bestanden. Kies voor de gehele media bibliotheek, of " +"alleen de bestanden die geüpload zijn naar de post." + +#: includes/fields/class-acf-field-file.php:221 +#: includes/fields/class-acf-field-image.php:219 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:661 +msgid "All" +msgstr "Alles" + +#: includes/fields/class-acf-field-file.php:222 +#: includes/fields/class-acf-field-image.php:220 +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Uploaded to post" +msgstr "Geüpload naar post" + +#: includes/fields/class-acf-field-file.php:229 +#: includes/fields/class-acf-field-image.php:227 +#: pro/fields/class-acf-field-gallery.php:669 +msgid "Minimum" +msgstr "Minimaal" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-file.php:241 +msgid "Restrict which files can be uploaded" +msgstr "Bepaal welke bestanden geüpload mogen worden" + +#: includes/fields/class-acf-field-file.php:240 +#: includes/fields/class-acf-field-image.php:256 +#: pro/fields/class-acf-field-gallery.php:698 +msgid "Maximum" +msgstr "Maximaal" + +#: includes/fields/class-acf-field-file.php:251 +#: includes/fields/class-acf-field-image.php:285 +#: pro/fields/class-acf-field-gallery.php:727 +msgid "Allowed file types" +msgstr "Toegestane bestandstypen" + +#: includes/fields/class-acf-field-file.php:252 +#: includes/fields/class-acf-field-image.php:286 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "Met komma's gescheiden lijst. Laat leeg voor alle types." + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google Map" + +#: includes/fields/class-acf-field-google-map.php:40 +msgid "Locating" +msgstr "Locatie wordt gezocht..." + +#: includes/fields/class-acf-field-google-map.php:41 +msgid "Sorry, this browser does not support geolocation" +msgstr "Excuses, deze browser ondersteund geen geolocatie" + +#: includes/fields/class-acf-field-google-map.php:113 +msgid "Clear location" +msgstr "Wis locatie" + +#: includes/fields/class-acf-field-google-map.php:114 +msgid "Find current location" +msgstr "Zoek huidige locatie" + +#: includes/fields/class-acf-field-google-map.php:117 +msgid "Search for address..." +msgstr "Zoek een adres..." + +#: includes/fields/class-acf-field-google-map.php:147 +#: includes/fields/class-acf-field-google-map.php:158 +msgid "Center" +msgstr "Standaard locatie" + +#: includes/fields/class-acf-field-google-map.php:148 +#: includes/fields/class-acf-field-google-map.php:159 +msgid "Center the initial map" +msgstr "Bepaal de standaard locatie van de kaart" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Zoom" +msgstr "Inzoomen" + +#: includes/fields/class-acf-field-google-map.php:171 +msgid "Set the initial zoom level" +msgstr "Bepaal het zoom niveau van de kaart" + +#: includes/fields/class-acf-field-google-map.php:180 +#: includes/fields/class-acf-field-image.php:239 +#: includes/fields/class-acf-field-image.php:268 +#: includes/fields/class-acf-field-oembed.php:281 +#: pro/fields/class-acf-field-gallery.php:681 +#: pro/fields/class-acf-field-gallery.php:710 +msgid "Height" +msgstr "Hoogte" + +#: includes/fields/class-acf-field-google-map.php:181 +msgid "Customise the map height" +msgstr "Wijzig de hoogte van de kaart" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Groep" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:389 +msgid "Sub Fields" +msgstr "Sub-velden" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:840 +msgid "Specify the style used to render the selected fields" +msgstr "Kies de gebruikte stijl bij het renderen van de geselecteerde velden" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:845 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:458 +msgid "Block" +msgstr "Blok" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:846 +#: pro/fields/class-acf-field-flexible-content.php:611 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Table" +msgstr "Tabel" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:847 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Row" +msgstr "Rij" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Afbeelding" + +#: includes/fields/class-acf-field-image.php:40 +msgid "Select Image" +msgstr "Selecteer afbeelding" + +#: includes/fields/class-acf-field-image.php:41 +#: pro/fields/class-acf-field-gallery.php:42 +msgid "Edit Image" +msgstr "Bewerk afbeelding" + +#: includes/fields/class-acf-field-image.php:42 +#: pro/fields/class-acf-field-gallery.php:43 +msgid "Update Image" +msgstr "Update afbeelding" + +#: includes/fields/class-acf-field-image.php:44 +msgid "All images" +msgstr "Alle afbeeldingen" + +#: includes/fields/class-acf-field-image.php:140 +msgid "No image selected" +msgstr "Geen afbeelding geselecteerd" + +#: includes/fields/class-acf-field-image.php:140 +msgid "Add Image" +msgstr "Voeg afbeelding toe" + +#: includes/fields/class-acf-field-image.php:194 +msgid "Image Array" +msgstr "Afbeelding Array" + +#: includes/fields/class-acf-field-image.php:195 +msgid "Image URL" +msgstr "Afbeelding URL" + +#: includes/fields/class-acf-field-image.php:196 +msgid "Image ID" +msgstr "Afbeelding ID" + +#: includes/fields/class-acf-field-image.php:203 +msgid "Preview Size" +msgstr "Afmeting voorbeeld" + +#: includes/fields/class-acf-field-image.php:204 +msgid "Shown when entering data" +msgstr "Voorbeeld wordt na het uploaden/selecteren getoond" + +#: includes/fields/class-acf-field-image.php:228 +#: includes/fields/class-acf-field-image.php:257 +#: pro/fields/class-acf-field-gallery.php:670 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Restrict which images can be uploaded" +msgstr "Bepaal welke afbeeldingen geüpload mogen worden" + +#: includes/fields/class-acf-field-image.php:231 +#: includes/fields/class-acf-field-image.php:260 +#: includes/fields/class-acf-field-oembed.php:270 +#: pro/fields/class-acf-field-gallery.php:673 +#: pro/fields/class-acf-field-gallery.php:702 +msgid "Width" +msgstr "Breedte" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Link" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Selecteer link" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Opent in een nieuw venster/tab" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Link array" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "Link URL" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Bericht" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Nieuwe regels" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Bepaal wat er gebeurt met een nieuwe tekstregel" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Automatisch paragrafen toevoegen" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Automatisch een nieuwe regel maken <br />" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Niets ondernemen" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Escape HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Toestaan HTML markup te tonen als tekst in plaats van het te renderen" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Nummer" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:157 +msgid "Minimum Value" +msgstr "Minimale waarde" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:167 +msgid "Maximum Value" +msgstr "Maximale waarde" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:177 +msgid "Step Size" +msgstr "Stapgrootte" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Waarde moet numeriek zijn" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Waarde moet gelijk of meer dan zijn %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Waarde moet gelijk of minder zijn dan %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:219 +msgid "Enter URL" +msgstr "Vul URL in" + +#: includes/fields/class-acf-field-oembed.php:234 +#: includes/fields/class-acf-field-taxonomy.php:898 +msgid "Error." +msgstr "Fout." + +#: includes/fields/class-acf-field-oembed.php:234 +msgid "No embed found for the given URL." +msgstr "Geen embed mogelijkheid gevonden voor de gewenste URL." + +#: includes/fields/class-acf-field-oembed.php:267 +#: includes/fields/class-acf-field-oembed.php:278 +msgid "Embed Size" +msgstr "Embed formaat" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archieven" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Filter by Post Type" +msgstr "Filter op post type" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:631 +msgid "All post types" +msgstr "Alle post types" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:637 +msgid "Filter by Taxonomy" +msgstr "Filter op taxonomy" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:645 +msgid "All taxonomies" +msgstr "Alle taxonomieën" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Archief URL’s toestaan" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:396 +#: includes/fields/class-acf-field-user.php:418 +msgid "Select multiple values?" +msgstr "Meerdere selecties mogelijk?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Wachtwoord" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:702 +msgid "Post Object" +msgstr "Post object" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:703 +msgid "Post ID" +msgstr "Post ID" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Radio button" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Anders namelijk" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Voeg de keuze \"anders†toe voor eigen invulling" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Anders namelijk waarde toevoegen aan keuzes?" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "" +"Voeg de ingevulde \"anders namelijk\" waarde toe aan de keuzelijst na het " +"opslaan van een post" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Reeks" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Relatie" + +#: includes/fields/class-acf-field-relationship.php:37 +msgid "Minimum values reached ( {min} values )" +msgstr "Minimaal aantal bereikt ( {min} stuks )" + +#: includes/fields/class-acf-field-relationship.php:38 +msgid "Maximum values reached ( {max} values )" +msgstr "Maximum aantal waarden bereikt ( {max} waarden )" + +#: includes/fields/class-acf-field-relationship.php:39 +msgid "Loading" +msgstr "Laden" + +#: includes/fields/class-acf-field-relationship.php:40 +msgid "No matches found" +msgstr "Geen gelijkenis gevonden" + +#: includes/fields/class-acf-field-relationship.php:423 +msgid "Select post type" +msgstr "Selecteer post type" + +#: includes/fields/class-acf-field-relationship.php:449 +msgid "Select taxonomy" +msgstr "Selecteer taxonomy" + +#: includes/fields/class-acf-field-relationship.php:539 +msgid "Search..." +msgstr "Zoeken..." + +#: includes/fields/class-acf-field-relationship.php:651 +msgid "Filters" +msgstr "Filters" + +#: includes/fields/class-acf-field-relationship.php:657 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Post type" + +#: includes/fields/class-acf-field-relationship.php:658 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:763 +msgid "Taxonomy" +msgstr "Taxonomy" + +#: includes/fields/class-acf-field-relationship.php:665 +msgid "Elements" +msgstr "Elementen" + +#: includes/fields/class-acf-field-relationship.php:666 +msgid "Selected elements will be displayed in each result" +msgstr "Selecteer de elementen die moeten worden getoond in elk resultaat" + +#: includes/fields/class-acf-field-relationship.php:677 +msgid "Minimum posts" +msgstr "Minimale berichten" + +#: includes/fields/class-acf-field-relationship.php:686 +msgid "Maximum posts" +msgstr "Maximum aantal selecties" + +#: includes/fields/class-acf-field-relationship.php:790 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s verplicht tenminste %s selectie" +msgstr[1] "%s verplicht tenminste %s selecties" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:785 +msgctxt "noun" +msgid "Select" +msgstr "Selecteer" + +#: includes/fields/class-acf-field-select.php:38 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Eén resultaat beschikbaar, toets enter om te selecteren." + +#: includes/fields/class-acf-field-select.php:39 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"%d resultaten beschikbaar, gebruik de pijltjes toetsen om te navigeren." + +#: includes/fields/class-acf-field-select.php:40 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Geen resultaten" + +#: includes/fields/class-acf-field-select.php:41 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Vul 1 of meer tekens in" + +#: includes/fields/class-acf-field-select.php:42 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Vul %d of meer tekens in" + +#: includes/fields/class-acf-field-select.php:43 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Verwijderd 1 teken" + +#: includes/fields/class-acf-field-select.php:44 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Verwijder %d tekens" + +#: includes/fields/class-acf-field-select.php:45 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Je kunt maar 1 item selecteren" + +#: includes/fields/class-acf-field-select.php:46 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Je kunt maar %d items selecteren" + +#: includes/fields/class-acf-field-select.php:47 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Laad meer resultaten…" + +#: includes/fields/class-acf-field-select.php:48 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Zoeken…" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Laden mislukt" + +#: includes/fields/class-acf-field-select.php:255 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "Selecteer" + +#: includes/fields/class-acf-field-select.php:406 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Uitgebreide weergave" + +#: includes/fields/class-acf-field-select.php:416 +msgid "Use AJAX to lazy load choices?" +msgstr "AJAX gebruiken om keuzes te laden?" + +#: includes/fields/class-acf-field-select.php:427 +msgid "Specify the value returned" +msgstr "Bepaal hier de output weergave" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Scheidingsteken" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Tab" + +#: includes/fields/class-acf-field-tab.php:82 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "Deze tab zal niet correct worden weergegeven in een herhalende tabel" + +#: includes/fields/class-acf-field-tab.php:83 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "Gebruik tabbladen om velden in het edit screen te organiseren." + +#: includes/fields/class-acf-field-tab.php:84 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" +"Alle velden onder dit \"Tab veld\" zullen worden toegevoegd aan deze tab. " +"Het ingevulde \"Veld label\" dient als benaming van de tab." + +#: includes/fields/class-acf-field-tab.php:98 +msgid "Placement" +msgstr "Plaatsing" + +#: includes/fields/class-acf-field-tab.php:110 +msgid "End-point" +msgstr "Eindpunt" + +#: includes/fields/class-acf-field-tab.php:111 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "Gebruik dit veld als eindpunt en startpunt van een groep tabbladen" + +#: includes/fields/class-acf-field-taxonomy.php:713 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Geen %s" + +#: includes/fields/class-acf-field-taxonomy.php:732 +msgid "None" +msgstr "Geen" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Select the taxonomy to be displayed" +msgstr "Selecteer de weer te geven taxonomie " + +#: includes/fields/class-acf-field-taxonomy.php:773 +msgid "Appearance" +msgstr "Uiterlijk" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Select the appearance of this field" +msgstr "Selecteer het uiterlijk van dit veld" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Multiple Values" +msgstr "Meerdere waardes" + +#: includes/fields/class-acf-field-taxonomy.php:781 +msgid "Multi Select" +msgstr "Multi-selecteer" + +#: includes/fields/class-acf-field-taxonomy.php:783 +msgid "Single Value" +msgstr "Enkele waarde" + +#: includes/fields/class-acf-field-taxonomy.php:784 +msgid "Radio Buttons" +msgstr "Radio buttons" + +#: includes/fields/class-acf-field-taxonomy.php:803 +msgid "Create Terms" +msgstr "Voorwaarden toevoegen" + +#: includes/fields/class-acf-field-taxonomy.php:804 +msgid "Allow new terms to be created whilst editing" +msgstr "Toestaan dat nieuwe voorwaarden worden aangemaakt terwijl je bewerkt" + +#: includes/fields/class-acf-field-taxonomy.php:813 +msgid "Save Terms" +msgstr "Voorwaarden opslaan" + +#: includes/fields/class-acf-field-taxonomy.php:814 +msgid "Connect selected terms to the post" +msgstr "Koppel geselecteerde terms aan een post" + +#: includes/fields/class-acf-field-taxonomy.php:823 +msgid "Load Terms" +msgstr "Voorwaarden laden" + +#: includes/fields/class-acf-field-taxonomy.php:824 +msgid "Load value from posts terms" +msgstr "Waarde ophalen van posts terms" + +#: includes/fields/class-acf-field-taxonomy.php:838 +msgid "Term Object" +msgstr "Term object" + +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Term ID" +msgstr "Term ID" + +#: includes/fields/class-acf-field-taxonomy.php:898 +#, php-format +msgid "User unable to add new %s" +msgstr "Gebruiker is niet in staat om nieuwe %s toe te voegen" + +#: includes/fields/class-acf-field-taxonomy.php:911 +#, php-format +msgid "%s already exists" +msgstr "%s bestaat al" + +#: includes/fields/class-acf-field-taxonomy.php:952 +#, php-format +msgid "%s added" +msgstr "%s toegevoegd" + +#: includes/fields/class-acf-field-taxonomy.php:997 +msgid "Add" +msgstr "Nieuwe" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Tekst" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Karakter limiet" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Laat leeg voor geen limiet" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Tekstvlak" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Rijen" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Hoogte (in regels) voor dit tekstvlak" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Tijd picker" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Waar / niet waar" + +#: includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 includes/input.php:267 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Ja" + +#: includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:169 includes/input.php:268 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Nee" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Geeft tekst weer naast de checkbox" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "On tekst" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Tekst die verschijnt bij actief" + +#: includes/fields/class-acf-field-true_false.php:165 +msgid "Off Text" +msgstr "Off tekst" + +#: includes/fields/class-acf-field-true_false.php:166 +msgid "Text shown when inactive" +msgstr "Tekst die verschijnt bij inactief" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "URL" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Waarde moet een geldige URL zijn" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Gebruiker" + +#: includes/fields/class-acf-field-user.php:393 +msgid "Filter by role" +msgstr "Filter op rol" + +#: includes/fields/class-acf-field-user.php:401 +msgid "All user roles" +msgstr "Alle rollen" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Wysiwyg editor" + +#: includes/fields/class-acf-field-wysiwyg.php:359 +msgid "Visual" +msgstr "Visueel" + +#: includes/fields/class-acf-field-wysiwyg.php:360 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Tekst" + +#: includes/fields/class-acf-field-wysiwyg.php:366 +msgid "Click to initialize TinyMCE" +msgstr "Klik om TinyMCE te initialiseren" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Tabs" +msgstr "Tabbladen" + +#: includes/fields/class-acf-field-wysiwyg.php:424 +msgid "Visual & Text" +msgstr "Visueel & tekst" + +#: includes/fields/class-acf-field-wysiwyg.php:425 +msgid "Visual Only" +msgstr "Alleen visueel" + +#: includes/fields/class-acf-field-wysiwyg.php:426 +msgid "Text Only" +msgstr "Alleen tekst" + +#: includes/fields/class-acf-field-wysiwyg.php:433 +msgid "Toolbar" +msgstr "Toolbar" + +#: includes/fields/class-acf-field-wysiwyg.php:443 +msgid "Show Media Upload Buttons?" +msgstr "Toon media upload buttons?" + +#: includes/fields/class-acf-field-wysiwyg.php:453 +msgid "Delay initialization?" +msgstr "Vertraag initialisatie?" + +#: includes/fields/class-acf-field-wysiwyg.php:454 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE wordt niet geïnitialiseerd tot veld is aangeklikt" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Bewerk groep" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Valideer e-mail" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:573 pro/options-page.php:81 +msgid "Update" +msgstr "Bijwerken" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Bericht bijgewerkt" + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "Spam gedetecteerd" + +#: includes/input.php:259 +msgid "Expand Details" +msgstr "Toon details" + +#: includes/input.php:260 +msgid "Collapse Details" +msgstr "Verberg details" + +#: includes/input.php:261 +msgid "Validation successful" +msgstr "Validatie geslaagd" + +#: includes/input.php:262 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Validatie mislukt" + +#: includes/input.php:263 +msgid "1 field requires attention" +msgstr "1 veld heeft aandacht nodig" + +#: includes/input.php:264 +#, php-format +msgid "%d fields require attention" +msgstr "%d velden hebben aandacht nodig" + +#: includes/input.php:265 +msgid "Restricted" +msgstr "Verplicht" + +#: includes/input.php:266 +msgid "Are you sure?" +msgstr "Ben je zeker?" + +#: includes/input.php:270 +msgid "Cancel" +msgstr "Annuleer" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Bericht" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Pagina" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulieren" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Bijlage" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Alle %s formaten" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Reactie" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Huidige gebruikersrol" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super beheerder" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Huidige gebruiker" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Ingelogd" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Bekijk voorkant" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Bekijk achterkant" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Menu item" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menu" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Menu locaties" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menu’s " + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Pagina hoofd" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Pagina template" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Standaard template" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Pagina type" + +#: includes/locations/class-acf-location-page-type.php:145 +msgid "Front Page" +msgstr "Hoofdpagina" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Posts Page" +msgstr "Berichten pagina" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Top Level Page (no parent)" +msgstr "Hoofdpagina (geen hoofd)" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Parent Page (has children)" +msgstr "Hoofdpagina (bevat subitems)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Child Page (has parent)" +msgstr "Subpagina" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Bericht categorie" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Bericht format" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Status" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Bericht taxonomy" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Bericht template" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Taxonomy term" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Gebruiker formulier" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Toevoegen / Bewerken" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registreer" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Rol" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "Bewerk" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "Bijwerken" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s waarde is verplicht" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Publiceer" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Er zijn geen groepen gevonden voor deze optie pagina. Maak " +"een extra velden groep" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Fout. Kan niet verbinden met de update server" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Updates" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Licentiecode deactiveren" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Activeer licentiecode" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Licentie informatie" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Om updates te ontvangen vul je hieronder je licentiecode in. Nog geen " +"licentiecode? Bekijk details & prijzen." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Licentiecode" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Update informatie" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Huidige versie" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Nieuwste versie" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Update beschikbaar" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Update plugin" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Vul uw licentiecode hierboven in om updates te ontvangen" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Controleer op updates" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Upgrade opmerking" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Kloon" + +#: pro/fields/class-acf-field-clone.php:808 +msgid "Select one or more fields you wish to clone" +msgstr "Selecteer een of meer velden om te klonen" + +#: pro/fields/class-acf-field-clone.php:825 +msgid "Display" +msgstr "Toon" + +#: pro/fields/class-acf-field-clone.php:826 +msgid "Specify the style used to render the clone field" +msgstr "Kies de gebruikte stijl bij het renderen van het gekloonde veld" + +#: pro/fields/class-acf-field-clone.php:831 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Groep (toont geselecteerde velden in een groep binnen dit veld)" + +#: pro/fields/class-acf-field-clone.php:832 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Naadloos (vervangt dit veld met de geselecteerde velden)" + +#: pro/fields/class-acf-field-clone.php:853 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Labels worden getoond als %s" + +#: pro/fields/class-acf-field-clone.php:856 +msgid "Prefix Field Labels" +msgstr "Prefix veld labels" + +#: pro/fields/class-acf-field-clone.php:867 +#, php-format +msgid "Values will be saved as %s" +msgstr "Waarden worden opgeslagen als %s" + +#: pro/fields/class-acf-field-clone.php:870 +msgid "Prefix Field Names" +msgstr "Prefix veld namen" + +#: pro/fields/class-acf-field-clone.php:988 +msgid "Unknown field" +msgstr "Onbekend veld" + +#: pro/fields/class-acf-field-clone.php:1027 +msgid "Unknown field group" +msgstr "Onbekend groep" + +#: pro/fields/class-acf-field-clone.php:1031 +#, php-format +msgid "All fields from %s field group" +msgstr "Alle velden van %s veld groep" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:174 +#: pro/fields/class-acf-field-repeater.php:470 +msgid "Add Row" +msgstr "Nieuwe regel" + +#: pro/fields/class-acf-field-flexible-content.php:34 +msgid "layout" +msgstr "layout" + +#: pro/fields/class-acf-field-flexible-content.php:35 +msgid "layouts" +msgstr "layouts" + +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "remove {layout}?" +msgstr "verwijder {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:37 +msgid "This field requires at least {min} {identifier}" +msgstr "Dit veld vereist op zijn minst {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:38 +msgid "This field has a limit of {max} {identifier}" +msgstr "Dit veld heeft een limiet van {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:39 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Dit veld vereist op zijn minst {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:40 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Maximum {label} limiet bereikt ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:41 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} beschikbaar (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:42 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} verplicht (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:43 +msgid "Flexible Content requires at least 1 layout" +msgstr "Flexibele content vereist minimaal 1 layout" + +#: pro/fields/class-acf-field-flexible-content.php:273 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Klik op de \"%s\" button om een nieuwe lay-out te maken" + +#: pro/fields/class-acf-field-flexible-content.php:406 +msgid "Add layout" +msgstr "Layout toevoegen" + +#: pro/fields/class-acf-field-flexible-content.php:407 +msgid "Remove layout" +msgstr "Verwijder layout" + +#: pro/fields/class-acf-field-flexible-content.php:408 +#: pro/fields/class-acf-field-repeater.php:298 +msgid "Click to toggle" +msgstr "Klik om in/uit te klappen" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder Layout" +msgstr "Herorder layout" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder" +msgstr "Herorder" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete Layout" +msgstr "Verwijder layout" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate Layout" +msgstr "Dupliceer layout" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New Layout" +msgstr "Nieuwe layout" + +#: pro/fields/class-acf-field-flexible-content.php:628 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:641 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:668 +#: pro/fields/class-acf-field-repeater.php:466 +msgid "Button Label" +msgstr "Button label" + +#: pro/fields/class-acf-field-flexible-content.php:677 +msgid "Minimum Layouts" +msgstr "Minimale layouts" + +#: pro/fields/class-acf-field-flexible-content.php:686 +msgid "Maximum Layouts" +msgstr "Maximale layouts" + +#: pro/fields/class-acf-field-gallery.php:41 +msgid "Add Image to Gallery" +msgstr "Voeg afbeelding toe aan galerij" + +#: pro/fields/class-acf-field-gallery.php:45 +msgid "Maximum selection reached" +msgstr "Maximale selectie bereikt" + +#: pro/fields/class-acf-field-gallery.php:321 +msgid "Length" +msgstr "Lengte" + +#: pro/fields/class-acf-field-gallery.php:364 +msgid "Caption" +msgstr "Onderschrift" + +#: pro/fields/class-acf-field-gallery.php:373 +msgid "Alt Text" +msgstr "Alt tekst" + +#: pro/fields/class-acf-field-gallery.php:544 +msgid "Add to gallery" +msgstr "Afbeelding(en) toevoegen" + +#: pro/fields/class-acf-field-gallery.php:548 +msgid "Bulk actions" +msgstr "Acties" + +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Sort by date uploaded" +msgstr "Sorteer op datum geüpload" + +#: pro/fields/class-acf-field-gallery.php:550 +msgid "Sort by date modified" +msgstr "Sorteer op datum aangepast" + +#: pro/fields/class-acf-field-gallery.php:551 +msgid "Sort by title" +msgstr "Sorteer op titel" + +#: pro/fields/class-acf-field-gallery.php:552 +msgid "Reverse current order" +msgstr "Keer volgorde om" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Close" +msgstr "Sluiten" + +#: pro/fields/class-acf-field-gallery.php:624 +msgid "Minimum Selection" +msgstr "Minimale selectie" + +#: pro/fields/class-acf-field-gallery.php:633 +msgid "Maximum Selection" +msgstr "Maximale selectie" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Insert" +msgstr "Invoegen" + +#: pro/fields/class-acf-field-gallery.php:643 +msgid "Specify where new attachments are added" +msgstr "Geef aan waar nieuwe bijlagen worden toegevoegd" + +#: pro/fields/class-acf-field-gallery.php:647 +msgid "Append to the end" +msgstr "Toevoegen aan het einde" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Prepend to the beginning" +msgstr "Toevoegen aan het begin" + +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Minimum rows reached ({min} rows)" +msgstr "Minimum aantal rijen bereikt ({max} rijen)" + +#: pro/fields/class-acf-field-repeater.php:37 +msgid "Maximum rows reached ({max} rows)" +msgstr "Maximum aantal rijen bereikt ({max} rijen)" + +#: pro/fields/class-acf-field-repeater.php:343 +msgid "Add row" +msgstr "Nieuwe regel" + +#: pro/fields/class-acf-field-repeater.php:344 +msgid "Remove row" +msgstr "Verwijder regel" + +#: pro/fields/class-acf-field-repeater.php:419 +msgid "Collapsed" +msgstr "Ingeklapt" + +#: pro/fields/class-acf-field-repeater.php:420 +msgid "Select a sub field to show when row is collapsed" +msgstr "Selecteer een sub-veld om te tonen wanneer rij dichtgeklapt is" + +#: pro/fields/class-acf-field-repeater.php:430 +msgid "Minimum Rows" +msgstr "Minimum aantal rijen" + +#: pro/fields/class-acf-field-repeater.php:440 +msgid "Maximum Rows" +msgstr "Maximum aantal rijen" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Er zijn nog geen optie pagina's" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Opties" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Opties bijgewerkt" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Om updates te ontvangen vul je op Updates pagina je " +"licentiecode in. Nog geen licentiecode? Bekijk details & prijzen." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Disabled" +#~ msgstr "Inactief" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Inactief (%s)" +#~ msgstr[1] "Inactief (%s)" + +#~ msgid "Getting Started" +#~ msgstr "Aan de slag" + +#~ msgid "Field Types" +#~ msgstr "Veld soorten" + +#~ msgid "Functions" +#~ msgstr "Functies" + +#~ msgid "Actions" +#~ msgstr "Acties" + +#~ msgid "'How to' guides" +#~ msgstr "Veelgestelde vragen" + +#~ msgid "Tutorials" +#~ msgstr "Tutorials" + +#~ msgid "FAQ" +#~ msgstr "FAQ" + +#~ msgid "Created by" +#~ msgstr "Ontwikkeld door" + +#~ msgid "Error loading update" +#~ msgstr "Fout bij laden van update" + +#~ msgid "Error" +#~ msgstr "Fout" + +#~ msgid "See what's new" +#~ msgstr "Bekijk alle vernieuwingen en verbeteringen van" + +#~ msgid "eg. Show extra content" +#~ msgstr "bijv. Toon op homepage" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "1 veld vraagt om aandacht" +#~ msgstr[1] "%d velden vragen om aandacht" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Verbindingsfout. Onze excuses, probeer het later nog eens" + +#~ msgid "See what's new in" +#~ msgstr "Bekijk alle vernieuwingen en verbeteringen van" + +#~ msgid "version" +#~ msgstr "versie" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "" +#~ "Gelukt!. De importeer tool heeft %s velden en %s groepen " +#~ "geïmporteerd" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Waarschuwing. De importeer functie heeft %s bestaande veldgroepen " +#~ "gedetecteerd en heeft deze genegeerd: %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "Upgrade ACF" + +#~ msgid "Upgrade" +#~ msgstr "Upgrade" + +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to " +#~ "update and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "De volgende website vereist een DB upgrade. Selecteer degene die u wilt " +#~ "updaten en klik op “Upgrade databaseâ€." + +#~ msgid "Upgrading data to" +#~ msgstr "Upgraden van data naar " + +#~ msgid "Done" +#~ msgstr "Gereed" + +#~ msgid "Today" +#~ msgstr "Vandaag" + +#~ msgid "Show a different month" +#~ msgstr "Toon een andere maand" + +#~ msgid "Return format" +#~ msgstr "Output weergeven als" + +#~ msgid "uploaded to this post" +#~ msgstr "geüpload naar deze post" + +#~ msgid "File Name" +#~ msgstr "Bestandsnaam" + +#~ msgid "File Size" +#~ msgstr "Bestandsformaat" + +#~ msgid "No File selected" +#~ msgstr "Geen bestand geselecteerd" + +#~ msgid "Save Options" +#~ msgstr "Opties bijwerken" + +#~ msgid "License" +#~ msgstr "Licentie" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Voor het verkrijgen van updates is een licentiesleutel vereist. Indien je " +#~ "niet beschikt over een licentiecode kun je deze aanschaffen, zie:" + +#~ msgid "details & pricing" +#~ msgstr "details & kosten" + +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "Voor het verkrijgen van updates is een licentiesleutel vereist. Vul uw " +#~ "licentiecode in op de Updates pagina, of schaf een " +#~ "licentiecode aan via details & prijzen." + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +#~ msgid "http://www.advancedcustomfields.com/" +#~ msgstr "http://www.advancedcustomfields.com/" + +#~ msgid "elliot condon" +#~ msgstr "elliot condon" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "Sleep om te sorteren" + +#~ msgid "Add new %s " +#~ msgstr "Nieuwe %s " + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "Tekst wordt automatisch voorzien van paragrafen door de wp functie: " + +#~ msgid "Warning" +#~ msgstr "Waarschuwing" + +#~ msgid "Hide / Show All" +#~ msgstr "Verberg / Toon alle" + +#~ msgid "Show Field Keys" +#~ msgstr "Toon veld sleutels" + +#~ msgid "Pending Review" +#~ msgstr "Wachtend op goedkeuring" + +#~ msgid "Draft" +#~ msgstr "Concept" + +#~ msgid "Future" +#~ msgstr "Toekomst" + +#~ msgid "Private" +#~ msgstr "Privé" + +#~ msgid "Revision" +#~ msgstr "Revisie" + +#~ msgid "Trash" +#~ msgstr "Afval" + +#~ msgid "Top Level Page (parent of 0)" +#~ msgstr "Hoofdpagina (ouder dan 0)" + +#~ msgid "Import / Export" +#~ msgstr "Importeer / Exporteer" + +#~ msgid "Logged in User Type" +#~ msgstr "Gebruikersrol" + +#~ msgid "Field groups are created in order
                          from lowest to highest" +#~ msgstr "Groepen worden gesorteerd van laag naar hoog." + +#~ msgid "Select items to hide them from the edit screen" +#~ msgstr "" +#~ "Selecteer elementen die verborgen worden op het edit screen" + +#~ msgid "" +#~ "If multiple field groups appear on an edit screen, the first field " +#~ "group's options will be used. (the one with the lowest order number)" +#~ msgstr "" +#~ "Als er meerdere groepen verschijnen op een edit screen, zal de eerste " +#~ "groep worden gebruikt. (degene met het laagste volgorde nummer)" + +#~ msgid "" +#~ "We're changing the way premium functionality is delivered in an exiting " +#~ "way!" +#~ msgstr "" +#~ "We hebben de premium mogelijkheden vernieuwd op een geweldige manier!" + +#~ msgid "ACF PRO Required" +#~ msgstr "ACF PRO verplicht" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website " +#~ "makes use of premium add-ons (%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "We hebben een probleem ontdekt die uw aandacht vereist: Deze website " +#~ "maakt gebruik van add-ons (%s) die niet compatible zijn met de huidige " +#~ "versie van ACF." + +#~ msgid "" +#~ "Don't panic, you can simply roll back the plugin and continue using ACF " +#~ "as you know it!" +#~ msgstr "" +#~ "Geen paniek! Je kunt gemakkelijk downgraden naar een vorige versie van " +#~ "ACF." + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "Downgrade naar ACF v%s" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "Ontdek waarom je niet zonder ACF PRO kunt" + +#~ msgid "Update Database" +#~ msgstr "Database updaten" + +#~ msgid "Data Upgrade" +#~ msgstr "Data geüpgrade" + +#~ msgid "Data upgraded successfully." +#~ msgstr "Data is met succes geüpgraded." + +#~ msgid "Data is at the latest version." +#~ msgstr "Data beschikt over de laatste versie." + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "1 verplicht veld is leeg" +#~ msgstr[1] "%s verplichte velden zijn leeg" + +#~ msgid "Controls how HTML tags are rendered" +#~ msgstr "Bepaal hoe HTML tags worden weergegeven" + +#~ msgid "No taxonomy filter" +#~ msgstr "Geen taxonomy filter" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "Laad & sla termen op bij post" + +#~ msgid "" +#~ "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "" +#~ "Laad waarde aan de hand van de post termen en update de post termen bij " +#~ "het opslaan" + +#~ msgid "Custom field updated." +#~ msgstr "Extra veld bijgewerkt." + +#~ msgid "Custom field deleted." +#~ msgstr "Extra veld verwijderd." + +#~ msgid "Field group duplicated! Edit the new \"%s\" field group." +#~ msgstr "Groep gedupliceerd! Bewerk de nieuwe \"%s\" groep." + +#~ msgid "Import/Export" +#~ msgstr "Import/Export" + +#~ msgid "Column Width" +#~ msgstr "Kolom breedte" + +#~ msgid "Attachment Details" +#~ msgstr "Bijlage details" + +#~ msgid "Field group restored to revision from %s" +#~ msgstr "Groepen hersteld naar revisie van %s" + +#~ msgid "No ACF groups selected" +#~ msgstr "Geen ACF groep geselecteerd" + +#~ msgid "Normal" +#~ msgstr "Normaal" + +#~ msgid "No Metabox" +#~ msgstr "Geen metabox" + +#~ msgid "" +#~ "Read documentation, learn the functions and find some tips & tricks " +#~ "for your next web project." +#~ msgstr "" +#~ "Lees de documentatie, leer de functies kennen en ontdek tips & tricks " +#~ "voor jouw web project." + +#~ msgid "Visit the ACF website" +#~ msgstr "Bezoek de ACF website" + +#~ msgid "Vote" +#~ msgstr "Stem" + +#~ msgid "Follow" +#~ msgstr "Volg op Twitter" + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "" +#~ "Validatie mislukt. Eén of meer velden hieronder zijn verplicht." + +#~ msgid "Add File to Field" +#~ msgstr "+ Bestand toevoegen aan veld" + +#~ msgid "Add Image to Field" +#~ msgstr "Add Image to Field" + +#~ msgid "Attachment updated" +#~ msgstr "Bijlage bijgewerkt." + +#~ msgid "Repeater field deactivated" +#~ msgstr "Repeater Field gedeactiveerd" + +#~ msgid "Gallery field deactivated" +#~ msgstr "Gallery field gedeactiveerd" + +#~ msgid "Repeater field activated" +#~ msgstr "Repeater field geactiveerd" + +#~ msgid "Options page activated" +#~ msgstr "Options page geactiveerd" + +#~ msgid "Flexible Content field activated" +#~ msgstr "Flexible Content field geactiveerd" + +#~ msgid "Gallery field activated" +#~ msgstr "Gallery field geactiveerd" + +#~ msgid "License key unrecognised" +#~ msgstr "Licentie code niet herkend" + +#~ msgid "" +#~ "Add-ons can be unlocked by purchasing a license key. Each key can be used " +#~ "on multiple sites." +#~ msgstr "" +#~ "Add-ons kun je activeren door een licentie code te kopen. Elke code kan " +#~ "gebruikt worden op meerdere websites." + +#~ msgid "Activation Code" +#~ msgstr "Activatie code" + +#~ msgid "Repeater Field" +#~ msgstr "Repeater Field" + +#~ msgid "Flexible Content Field" +#~ msgstr "Flexible Content Field" + +#~ msgid "Gallery Field" +#~ msgstr "Gallery Field" + +#~ msgid "Export Field Groups to XML" +#~ msgstr "Exporteer groepen naar XML" + +#~ msgid "" +#~ "ACF will create a .xml export file which is compatible with the native WP " +#~ "import plugin." +#~ msgstr "" +#~ "ACF maakt een .xml export bestand die compatibel is met de ingebouwde WP " +#~ "import plugin." + +#~ msgid "" +#~ "Imported field groups will appear in the list of editable field " +#~ "groups. This is useful for migrating fields groups between Wp websites." +#~ msgstr "" +#~ "Geïmporteerde veld groepen verschijnen in de lijst van " +#~ "beheerbare veld groepen. Dit is handig voor het migreren van veld groepen " +#~ "tussen WP websites." + +#~ msgid "Select field group(s) from the list and click \"Export XML\"" +#~ msgstr "Selecteer veld groep(en) van van de lijst en klik \"Exporteer XML\"" + +#~ msgid "Save the .xml file when prompted" +#~ msgstr "Sla de .xml file op wanneer er om gevraagd wordt" + +#~ msgid "Navigate to Tools » Import and select WordPress" +#~ msgstr "Navigeer naar Extra » Importeren en selecteer WordPress " + +#~ msgid "Install WP import plugin if prompted" +#~ msgstr "Installeer de WP import plugin als er naar wordt gevraagd" + +#~ msgid "Upload and import your exported .xml file" +#~ msgstr "Upload en import je geëxporteerde .xml bestand" + +#~ msgid "Select your user and ignore Import Attachments" +#~ msgstr "Selecteer je gebruiker en negeer import bijlages" + +#~ msgid "That's it! Happy WordPressing" +#~ msgstr "Dat is het! Happy WordPressing" + +#~ msgid "Export XML" +#~ msgstr "Exporteer XML" + +#~ msgid "ACF will create the PHP code to include in your theme." +#~ msgstr "ACF maakt de PHP code die je kan integreren in jouw thema." + +#~ msgid "Register Field Groups" +#~ msgstr "Registreer veld groepen" + +#~ msgid "" +#~ "Please note that if you export and register field groups within the same " +#~ "WP, you will see duplicate fields on your edit screens. To fix this, " +#~ "please move the original field group to the trash or remove the code from " +#~ "your functions.php file." +#~ msgstr "" +#~ "Houd er rekening mee dat wanneer je veld groepen exporteert en " +#~ "registreert in dezelfde WP installatie, ze verschijnen als gedupliceerde " +#~ "velden in je edit screens. Om dit te verhelpen: verwijder de originele " +#~ "veld groepen naar de prullenbak of verwijder de code uit je functions.php " +#~ "bestand." + +#~ msgid "Select field group(s) from the list and click \"Create PHP\"" +#~ msgstr "Selecteer veld groepen uit de lijst en klik \"Maak PHP\"" + +#~ msgid "Copy the PHP code generated" +#~ msgstr "Kopieer de gegenereerde PHP code" + +#~ msgid "Paste into your functions.php file" +#~ msgstr "Plak in je functions.php bestand" + +#~ msgid "" +#~ "To activate any Add-ons, edit and use the code in the first few lines." +#~ msgstr "" +#~ "Om add-ons te activeren, bewerk en gebruik de code in de eerste regels." + +#~ msgid "Create PHP" +#~ msgstr "Maak PHP" + +#~ msgid "Back to settings" +#~ msgstr "Terug naar instellingen" + +#~ msgid "Advanced Custom Fields Settings" +#~ msgstr "Advanced Custom Fields instellingen" + +#~ msgid "requires a database upgrade" +#~ msgstr "vereist een database upgrade" + +#~ msgid "why?" +#~ msgstr "waarom?" + +#~ msgid "Please" +#~ msgstr "Graag" + +#~ msgid "backup your database" +#~ msgstr "backup maken van je database" + +#~ msgid "then click" +#~ msgstr "vervolgens klikken op" + +#~ msgid "Moving user custom fields from wp_options to wp_usermeta'" +#~ msgstr "Verplaats gebruikers eigen velden van wp_options naar wp_usermeta" + +#~ msgid "No choices to choose from" +#~ msgstr "Geen keuzes om uit te kiezen" + +#~ msgid "Red" +#~ msgstr "Rood" + +#~ msgid "Blue" +#~ msgstr "Blauw" + +#~ msgid "blue : Blue" +#~ msgstr "blauw : Blauw" + +#~ msgid "File Updated." +#~ msgstr "Bestand bijgewerkt." + +#~ msgid "Media attachment updated." +#~ msgstr "Media bijlage bijgewerkt." + +#~ msgid "Add Selected Files" +#~ msgstr "Geselecteerde bestanden toevoegen" + +#~ msgid "+ Add Row" +#~ msgstr "+ Nieuwe regel" + +#~ msgid "Field Order" +#~ msgstr "Veld volgorde" + +#~ msgid "" +#~ "No fields. Click the \"+ Add Sub Field button\" to create your first " +#~ "field." +#~ msgstr "" +#~ "Geen velden. Klik op \"+ Nieuw sub veld\" button om je eerste veld te " +#~ "maken." + +#~ msgid "Docs" +#~ msgstr "Documentatie" + +#~ msgid "Close Sub Field" +#~ msgstr "Sub veld sluiten" + +#~ msgid "+ Add Sub Field" +#~ msgstr "+ Nieuw sub veld" + +#~ msgid "Alternate Text" +#~ msgstr "Alternatieve tekst" + +#~ msgid "Thumbnail is advised" +#~ msgstr "Thumbnail wordt geadviseerd" + +#~ msgid "Image Updated" +#~ msgstr "Afbeelding bijgwerkt" + +#~ msgid "Grid" +#~ msgstr "Grid" + +#~ msgid "List" +#~ msgstr "Lijst" + +#~ msgid "No images selected" +#~ msgstr "Geen afbeeldingen geselecteerd" + +#~ msgid "1 image selected" +#~ msgstr "1 afbeelding geselecteerd" + +#~ msgid "{count} images selected" +#~ msgstr "{count} afbeeldingen geselecteerd" + +#~ msgid "Added" +#~ msgstr "Toegevoegd" + +#~ msgid "Image already exists in gallery" +#~ msgstr "Afbeelding bestaat al galerij" + +#~ msgid "Image Updated." +#~ msgstr "Afbeelding bijgewerkt." + +#~ msgid "Add selected Images" +#~ msgstr "Voeg geselecteerde afbeeldingen toe" + +#~ msgid "Repeater Fields" +#~ msgstr "Velden herhalen" + +#~ msgid "Field Instructions" +#~ msgstr "Veld instructies" + +#~ msgid "Table (default)" +#~ msgstr "Tabel (standaard)" + +#~ msgid "Define how to render html tags" +#~ msgstr "Bepaal hoe HTML tags worden omgezet" + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Define how to render html tags / new lines" +#~ msgstr "Bepaal hoe HTML tags worden omgezet / nieuwe regels" + +#~ msgid "Run filter \"the_content\"?" +#~ msgstr "Gebruik filter \"the_content\"?" + +#~ msgid "Enable this filter to use shortcodes within the WYSIWYG field" +#~ msgstr "Activeer dit filter om shortcodes te gebruiken in het WYSIWYG veld" + +#~ msgid "" +#~ "This format will determin the value saved to the database and returned " +#~ "via the API" +#~ msgstr "" +#~ "De datum wordt in deze indeling opgeslagen in de database en teruggegeven " +#~ "door de API" + +#~ msgid "\"yymmdd\" is the most versatile save format. Read more about" +#~ msgstr "\"yymmdd\" is de meest veelzijdige opslaan indeling. Lees meer op" + +#~ msgid "jQuery date formats" +#~ msgstr "jQuery datum format" + +#~ msgid "This format will be seen by the user when entering a value" +#~ msgstr "" +#~ "Deze indeling wordt gezien door de gebruiker wanneer datum wordt ingevuld" + +#~ msgid "" +#~ "\"dd/mm/yy\" or \"mm/dd/yy\" are the most used Display Formats. Read more " +#~ "about" +#~ msgstr "" +#~ "\"dd/mm/yy\" of \"mm/dd/yy\" zijn de meest gebruikte indelingen. Lees " +#~ "meer op" + +#~ msgid "Page Specific" +#~ msgstr "Pagina specifiek" + +#~ msgid "Post Specific" +#~ msgstr "Bericht specifiek" + +#~ msgid "Taxonomy (Add / Edit)" +#~ msgstr "Taxonomy (Nieuwe / bewerk)" + +#~ msgid "Media (Edit)" +#~ msgstr "Media (Bewerk)" + +#~ msgid "match" +#~ msgstr "komt overeen met" + +#~ msgid "all" +#~ msgstr "allen" + +#~ msgid "of the above" +#~ msgstr "van hierboven" + +#~ msgid "Unlock options add-on with an activation code" +#~ msgstr "Ontgrendel opties add-on met een activatie code" + +#~ msgid "Add Fields to Edit Screens" +#~ msgstr "Voeg velden toe aan edit screen" + +#~ msgid "Navigate to the" +#~ msgstr "Ga naar de" + +#~ msgid "and select WordPress" +#~ msgstr "en selecteer WordPress" + +#~ msgid "eg. dd/mm/yy. read more about" +#~ msgstr "bijv. dd/mm/yyyy. Lees meer over" + +#~ msgid "" +#~ "Filter posts by selecting a post type
                          \n" +#~ "\t\t\t\tTip: deselect all post types to show all post type's posts" +#~ msgstr "" +#~ "Filter post type door te selecteren
                          \n" +#~ "\t\t\t\tTip: selecteer 'alles' om alle posts van alle post type te tonen" + +#~ msgid "Everything Fields deactivated" +#~ msgstr "Everything Fields gedeactiveerd" + +#~ msgid "Everything Fields activated" +#~ msgstr "Everything Fields geactiveerd" + +#~ msgid "Set to -1 for infinite" +#~ msgstr "Plaats -1 voor oneindig" + +#~ msgid "Row Limit" +#~ msgstr "Rij limiet" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-pl_PL.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-pl_PL.mo new file mode 100644 index 0000000000000000000000000000000000000000..132b435c9b384268893839a2797048269f2fd559 GIT binary patch literal 52299 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 yYvX)9%du@M{jL9Y)GMp)Og\n" +"Language-Team: Dariusz Zielonka \n" +"Language: pl_PL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:385 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Grupy pól" + +#: acf.php:386 +msgid "Field Group" +msgstr "Grupa pól" + +#: acf.php:387 acf.php:419 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New" +msgstr "Dodaj nowÄ…" + +#: acf.php:388 +msgid "Add New Field Group" +msgstr "Dodaj nowÄ… grupÄ™ pól" + +#: acf.php:389 +msgid "Edit Field Group" +msgstr "Edytuj grupÄ™ pól" + +#: acf.php:390 +msgid "New Field Group" +msgstr "Nowa grupa pól" + +#: acf.php:391 +msgid "View Field Group" +msgstr "Zobacz grupÄ™ pól" + +#: acf.php:392 +msgid "Search Field Groups" +msgstr "Szukaj grup pól" + +#: acf.php:393 +msgid "No Field Groups found" +msgstr "Nie znaleziono grupy pól" + +#: acf.php:394 +msgid "No Field Groups found in Trash" +msgstr "Brak grup pól w koszu" + +#: acf.php:417 includes/admin/admin-field-group.php:202 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Pola" + +#: acf.php:418 +msgid "Field" +msgstr "Pole" + +#: acf.php:420 +msgid "Add New Field" +msgstr "Dodaj nowe pole" + +#: acf.php:421 +msgid "Edit Field" +msgstr "Edytuj pole" + +#: acf.php:422 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Nowe pole" + +#: acf.php:423 +msgid "View Field" +msgstr "Zobacz pole" + +#: acf.php:424 +msgid "Search Fields" +msgstr "Szukaj pól" + +#: acf.php:425 +msgid "No Fields found" +msgstr "Nie znaleziono pól" + +#: acf.php:426 +msgid "No Fields found in Trash" +msgstr "Nie znaleziono pól w koszu" + +#: acf.php:465 includes/admin/admin-field-group.php:384 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Nieaktywne" + +#: acf.php:470 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Nieaktywne (%s)" +msgstr[1] "Nieaktywne (%s)" +msgstr[2] "Nieaktywnych (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Grupa pól zostaÅ‚a zaktualizowana." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Grupa pól zostaÅ‚a usuniÄ™ta." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Grupa pól zostaÅ‚a opublikowana." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Grupa pól zostaÅ‚a zapisana." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Grupa pól zostaÅ‚a dodana." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Grupa pól zostaÅ‚a zaplanowana na." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Szkic grupy pól zostaÅ‚ zaktualizowany." + +#: includes/admin/admin-field-group.php:153 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "CiÄ…g znaków \"field_\" nie może zostać użyty na poczÄ…tku nazwy pola" + +#: includes/admin/admin-field-group.php:154 +msgid "This field cannot be moved until its changes have been saved" +msgstr "To pole nie może zostać przeniesione zanim zmiany nie zostanÄ… zapisane" + +#: includes/admin/admin-field-group.php:155 +msgid "Field group title is required" +msgstr "TytuÅ‚ grupy pól jest wymagany" + +#: includes/admin/admin-field-group.php:156 +msgid "Move to trash. Are you sure?" +msgstr "PrzenieÅ› do kosza. JesteÅ› pewny?" + +#: includes/admin/admin-field-group.php:157 +msgid "No toggle fields available" +msgstr "Pola przełączania niedostÄ™pne" + +#: includes/admin/admin-field-group.php:158 +msgid "Move Custom Field" +msgstr "PrzenieÅ› pole" + +#: includes/admin/admin-field-group.php:159 +msgid "Checked" +msgstr "Zaznaczone" + +#: includes/admin/admin-field-group.php:160 includes/api/api-field.php:289 +msgid "(no label)" +msgstr "(brak etykiety)" + +#: includes/admin/admin-field-group.php:161 +msgid "(this field)" +msgstr "(to pole)" + +#: includes/admin/admin-field-group.php:162 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "kopia" + +#: includes/admin/admin-field-group.php:163 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:4073 +msgid "or" +msgstr "lub" + +#: includes/admin/admin-field-group.php:164 +msgid "Null" +msgstr "Null" + +#: includes/admin/admin-field-group.php:203 +msgid "Location" +msgstr "Lokacja" + +#: includes/admin/admin-field-group.php:204 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Ustawienia" + +#: includes/admin/admin-field-group.php:354 +msgid "Field Keys" +msgstr "Klucze pola" + +#: includes/admin/admin-field-group.php:384 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Aktywne" + +#: includes/admin/admin-field-group.php:746 +msgid "Move Complete." +msgstr "Przenoszenie zakoÅ„czone." + +#: includes/admin/admin-field-group.php:747 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Pole %s znajduje siÄ™ teraz w grupie pól %s" + +#: includes/admin/admin-field-group.php:748 +msgid "Close Window" +msgstr "Zamknij okno" + +#: includes/admin/admin-field-group.php:789 +msgid "Please select the destination for this field" +msgstr "ProszÄ™ wybrać miejsce przeznaczenia dla tego pola" + +#: includes/admin/admin-field-group.php:796 +msgid "Move Field" +msgstr "PrzenieÅ› pole" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Aktywny (%s)" +msgstr[1] "Aktywne (%s)" +msgstr[2] "Aktywnych (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Grupa pól zostaÅ‚a zduplikowana. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Grupa pól %s zostaÅ‚a zduplikowana." +msgstr[1] "Grupy pól %s zostaÅ‚y zduplikowane." +msgstr[2] "Grup pól %s zostaÅ‚y zduplikowane." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Grupa pól zostaÅ‚a zsynchronizowana. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s grupa pól zostaÅ‚a zsynchronizowana." +msgstr[1] "%s grupy pól zostaÅ‚y zsynchronizowane." +msgstr[2] "%s grup pól zostaÅ‚o zsynchronizowanych." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Synchronizacja możliwa" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:370 +msgid "Title" +msgstr "TytuÅ‚" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:397 +msgid "Description" +msgstr "Opis" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Status" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"Dostosuj WordPressa korzystajÄ…c z potężnych, profesjonalnych i intuicyjnych " +"pól." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Dziennik zmian" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Zobacz co nowego w wersji %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Zasoby" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Witryna" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Dokumentacja" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Pomoc" + +#: includes/admin/admin-field-groups.php:623 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "DziÄ™kujemy za tworzenie z ACF." + +#: includes/admin/admin-field-groups.php:667 +msgid "Duplicate this item" +msgstr "Duplikuj to pole" + +#: includes/admin/admin-field-groups.php:667 +#: includes/admin/admin-field-groups.php:683 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate" +msgstr "Duplikuj" + +#: includes/admin/admin-field-groups.php:700 +#: includes/fields/class-acf-field-google-map.php:164 +#: includes/fields/class-acf-field-relationship.php:674 +msgid "Search" +msgstr "Szukaj" + +#: includes/admin/admin-field-groups.php:759 +#, php-format +msgid "Select %s" +msgstr "Wybierz %s" + +#: includes/admin/admin-field-groups.php:767 +msgid "Synchronise field group" +msgstr "Synchronizuj grupÄ™ pól" + +#: includes/admin/admin-field-groups.php:767 +#: includes/admin/admin-field-groups.php:797 +msgid "Sync" +msgstr "Synchronizacja" + +#: includes/admin/admin-field-groups.php:779 +msgid "Apply" +msgstr "Zastosuj" + +#: includes/admin/admin-field-groups.php:797 +msgid "Bulk Actions" +msgstr "Akcje na wielu" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "NarzÄ™dzia" + +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Aktualizuj bazÄ™ danych" + +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Strona opinii i aktualizacji" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "WÅ‚asne pola" + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Dodatki" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Błąd. Nie można zaÅ‚adować listy dodatków" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informacja" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Co nowego" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Eksportuj grupy pól" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "Utwórz PHP" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Nie zaznaczono żadnej grupy pól" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Wyeksportowano 1 grupÄ™ pól." +msgstr[1] "Wyeksportowano %s grupy pól." +msgstr[2] "Wyeksportowano %s grup pól." + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Wybierz grupy pól" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Wybierz grupy pól, które chcesz wyeksportować, a nastÄ™pnie wybierz metodÄ™ " +"eksportu. Użyj przycisku pobierania aby wyeksportować do pliku .json, który " +"można nastÄ™pnie zaimportować do innej instalacji ACF. Użyj przycisku generuj " +"do wyeksportowania ustawieÅ„ do kodu PHP, który można umieÅ›cić w motywie." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Plik eksportu" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Poniższy kod może być użyty do rejestracji lokalnej wersji wybranej grupy " +"lub grup pól. Lokalna grupa pól może dostarczyć wiele korzyÅ›ci takich jak " +"szybszy czas Å‚adowania, możliwość wersjonowania i dynamiczne pola/" +"ustawienia. Wystarczy skopiować i wkleić poniższy kod do pliku functions.php " +"Twojego motywu lub dołączyć go do zewnÄ™trznego pliku." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Skopiuj do schowka" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Skopiowano" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Importuj grupy pól" + +#: includes/admin/tools/class-acf-admin-tool-import.php:61 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Wybierz plik JSON Advanced Custom Fields, który chcesz zaimportować. Gdy " +"klikniesz przycisk importu poniżej, ACF zaimportuje grupy pól." + +#: includes/admin/tools/class-acf-admin-tool-import.php:66 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Wybierz plik" + +#: includes/admin/tools/class-acf-admin-tool-import.php:76 +msgid "Import File" +msgstr "Plik importu" + +#: includes/admin/tools/class-acf-admin-tool-import.php:100 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Nie zaznaczono żadnego pliku" + +#: includes/admin/tools/class-acf-admin-tool-import.php:113 +msgid "Error uploading file. Please try again" +msgstr "Błąd przesyÅ‚ania pliku. ProszÄ™ spróbować ponownie" + +#: includes/admin/tools/class-acf-admin-tool-import.php:122 +msgid "Incorrect file type" +msgstr "Błędny typ pliku" + +#: includes/admin/tools/class-acf-admin-tool-import.php:139 +msgid "Import file empty" +msgstr "Importowany plik jest pusty" + +#: includes/admin/tools/class-acf-admin-tool-import.php:247 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Zaimportowano 1 grupÄ™ pól" +msgstr[1] "Zaimportowano %s grupy pól" +msgstr[2] "Zaimportowano %s grup pól" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "WyÅ›wietlaj pola warunkowo" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Pokaż to pole jeÅ›li" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "oraz" + +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Dodaj grupÄ™ warunków" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:424 +#: pro/fields/class-acf-field-repeater.php:294 +msgid "Drag to reorder" +msgstr "PrzeciÄ…gnij aby zmienić kolejność" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Edytuj pole" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:357 +msgid "Edit" +msgstr "Edytuj" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Duplikuj to pole" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "PrzenieÅ› pole do innej grupy" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "PrzenieÅ›" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "UsuÅ„ pole" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete" +msgstr "UsuÅ„" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Etykieta pola" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Ta nazwa bÄ™dzie widoczna na stronie edycji" + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Nazwa pola" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Pojedyncze sÅ‚owo, bez spacji. Dozwolone sÄ… myÅ›lniki i podkreÅ›lniki" + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Typ pola" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Instrukcje" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instrukcje dla autorów. BÄ™dÄ… widoczne w trakcie wprowadzania danych" + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Wymagane?" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Atrybuty kontenera" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "szerokość" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "class" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Zamknij to pole" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Kolejność" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:428 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Label" +msgstr "Etykieta" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:610 +msgid "Name" +msgstr "Nazwa" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Klucz" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Typ" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Brak pól. Kliknij przycisk + Dodaj pole aby utworzyć " +"pierwsze pole." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Dodaj pole" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Warunki" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Utwórz zestaw warunków, które okreÅ›lÄ… w których miejscach bÄ™dÄ… wykorzystane " +"zdefiniowane tutaj wÅ‚asne pola" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Styl" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standardowy (WP metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "BezpodziaÅ‚owy (brak metaboxa)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Pozycja" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Wysoka (pod tytuÅ‚em)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normalna (pod edytorem)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Boczna" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Umieszczenie etykiet" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Wyrównanie do góry" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Wyrównanie do lewej" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Umieszczenie instrukcji" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Pod etykietami" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Pod polami" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Nr w kolejnoÅ›ci." + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Grupy pól z niższym numerem pojawiÄ… siÄ™ pierwsze" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "WyÅ›wietlany na liÅ›cie grupy pól" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "OdnoÅ›nik bezpoÅ›redni" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "Edytor treÅ›ci" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Wypis" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Dyskusja" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Komentarze" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Wersje" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Slug" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Autor" + +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Format" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Atrybuty strony" + +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:688 +msgid "Featured Image" +msgstr "Obrazek wyróżniajÄ…cy" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Kategorie" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Tagi" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "WyÅ›lij trackbacki" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Ukryj na stronie edycji" + +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "Wybierz elementy, które chcesz ukryć na stronie edycji." + +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"JeÅ›li na stronie edycji znajduje siÄ™ kilka grup pól, zostanÄ… zastosowane " +"ustawienia pierwszej z nich. (pierwsza grupa pól to ta, która ma najniższy " +"numer w kolejnoÅ›ci)" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"NastÄ™pujÄ…ce witryny wymagajÄ… aktualizacji bazy danych. Zaznacz te, które " +"chcesz zaktualizować i kliknij %s." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Aktualizacja witryn" + +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Witryna" + +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Witryna wymaga aktualizacji bazy danych z %s na %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "Ta witryna jest aktualna" + +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Aktualizacja bazy danych zakoÅ„czona. Wróć do kokpitu sieci" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "ProszÄ™ wybrać co najmniej jednÄ… witrynÄ™ do uaktualnienia." + +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Zdecydowanie zaleca siÄ™ wykonanie kopii zapasowej bazy danych przed " +"kontynuowaniem. Czy na pewno chcesz uruchomić aktualizacje teraz?" + +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Aktualizowanie danych do wersji %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Aktualizacja zakoÅ„czona." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Aktualizacja nie powiodÅ‚a siÄ™." + +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "Czytam zadania aktualizacji..." + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "" +"Aktualizacja bazy danych zakoÅ„czona. Zobacz co nowego" + +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "Brak dostÄ™pnych aktualizacji." + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Pokaż tÄ… grupÄ™ pól jeÅ›li" + +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Pole powtarzalne" + +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Elastyczne treść" + +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galeria" + +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Strona opcji" + +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Wymagana jest aktualizacja bazy danych" + +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "DziÄ™kujemy za aktualizacje do %s v%s!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "Ta wersja zawiera ulepszenia bazy danych i wymaga uaktualnienia." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"Upewnij siÄ™ także, że wszystkie dodatki premium (%s) zostaÅ‚y wczeÅ›niej " +"zaktualizowane do najnowszych wersji." + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Pobierz i instaluj" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Zainstalowano" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Witamy w Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"DziÄ™kujemy za aktualizacjÄ™! ACF %s jest wiÄ™kszy i lepszy niż kiedykolwiek " +"wczeÅ›niej. Mamy nadziejÄ™, że go polubisz." + +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Lepsze odczucia w użytkowaniu" + +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "ZwiÄ™kszona użyteczność" + +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Użycie popularnej biblioteki Select2 poprawiÅ‚o zarówno użyteczność jak i " +"szybkość wielu typów pól wliczajÄ…c obiekty wpisów, odnoÅ›niki stron, " +"taksonomie i pola wyboru." + +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "Ulepszony wyglÄ…d" + +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Wiele pól przeszÅ‚o graficzne odÅ›wieżenie, aby ACF wyglÄ…daÅ‚ lepiej niż " +"kiedykolwiek! Zmiany warte uwagi sÄ… widoczne w galerii, polach relacji i " +"polach oEmbed (nowość)!" + +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "Ulepszona struktura danych" + +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Przeprojektowanie architektury danych pozwoliÅ‚a polom podrzÄ™dnym być " +"niezależnymi od swoich rodziców. Pozwala to na przeciÄ…ganie i upuszczanie " +"pól pomiÄ™dzy rodzicami!" + +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Do widzenia Dodatki. DzieÅ„ dobry PRO" + +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "Przedstawiamy ACF PRO" + +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"ZmieniliÅ›my sposób funkcjonowania wersji premium - teraz jest dostarczana w " +"ekscytujÄ…cy sposób!" + +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Wszystkie 4 dodatki premium zostaÅ‚y połączone w nowÄ… wersjÄ™ " +"Pro ACF. W obu licencjach, osobistej i deweloperskiej, funkcjonalność " +"premium jest bardziej przystÄ™pna niż kiedykolwiek wczeÅ›niej!" + +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Potężne funkcje" + +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO zawiera zaawansowane funkcje, takie jak powtarzalne dane, elastyczne " +"ukÅ‚ady treÅ›ci, piÄ™kne galerie i możliwość tworzenia dodatkowych stron opcji " +"administracyjnych!" + +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Przeczytaj wiÄ™cej o możliwoÅ›ciach ACF PRO." + +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Åatwa aktualizacja" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" +"Ulepszenie wersji do ACF PRO jest Å‚atwe. Wystarczy zakupić licencjÄ™ online i " +"pobrać wtyczkÄ™!" + +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" +"NapisaliÅ›my również przewodnik aktualizacji wyjaÅ›niajÄ…cy " +"wiele zagadnieÅ„, jednak jeÅ›li masz jakieÅ› pytanie skontaktuj siÄ™ z nami na " +"stronie wsparcia technicznego." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Nowe funkcje" + +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "Pole linku" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"Pole linku zapewnia prosty sposób wybrać lub okreÅ›lić łącze (adres URL, " +"atrybut 'title', atrybut 'target')." + +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Pole grupy" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "Pole grupy zapewnia prosty sposób tworzenia grupy pól." + +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "Pole oEmbed" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" +"Pole oEmbed pozwala w Å‚atwy sposób osadzać filmy, obrazy, tweety, audio i " +"inne treÅ›ci." + +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Pole klonowania" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "Pole klonowania umożliwia zaznaczanie i wyÅ›wietlanie istniejÄ…cych pól." + +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "WiÄ™cej technologii AJAX" + +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "WiÄ™cej pól korzysta z AJAX, aby przyspieszyć Å‚adowanie stron." + +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "Lokalny JSON" + +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"Nowy zautomatyzowany eksport do JSON ma poprawionÄ… szybkość i pozwala na " +"synchronizacjÄ™." + +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Åatwy Import / Eksport" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "" +"Zarówno import, jak i eksport można Å‚atwo wykonać za pomocÄ… nowej strony " +"narzÄ™dzi." + +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "Nowe lokalizacje formularzy" + +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" +"Pola można teraz mapować na menu, pozycji menu, komentarzy, widżetów i " +"wszystkich formularzy użytkowników!" + +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "WiÄ™cej dostosowywania" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" +"Dodano nowe akcje i filtry PHP (i JS), aby poszerzyć zakres personalizacji." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Fresh UI" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "" +"CaÅ‚a wtyczka zostaÅ‚a odÅ›wieżone, dodano nowe typy pól, ustawienia i wyglÄ…d!" + +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Nowe ustawienia" + +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" +"ZostaÅ‚y dodane ustawienia grup pól dotyczÄ…ce, AktywnoÅ›ci, Pozycji etykiet " +"oraz Pozycji instrukcji i Opisu." + +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "Lepszy wyglÄ…d formularzy (Front End Forms)" + +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"acf_form() może teraz utworzyć nowy wpis po przesÅ‚aniu i zawiera wiele " +"nowych ustawieÅ„." + +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Lepsza walidacja" + +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "Walidacja pól jest wykonana w PHP + AJAX a nie tylko w JS." + +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Przenoszenie pól" + +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"Nowa funkcjonalność pozwala na przenoszenie pól pomiÄ™dzy grupami i rodzicami." + +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Uważamy, że pokochasz zmiany wprowadzone w wersji %s." + +#: includes/api/api-helpers.php:1046 +msgid "Thumbnail" +msgstr "Miniatura" + +#: includes/api/api-helpers.php:1047 +msgid "Medium" +msgstr "Åšredni" + +#: includes/api/api-helpers.php:1048 +msgid "Large" +msgstr "Duży" + +#: includes/api/api-helpers.php:1097 +msgid "Full Size" +msgstr "PeÅ‚ny rozmiar" + +#: includes/api/api-helpers.php:1339 includes/api/api-helpers.php:1912 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(brak tytuÅ‚u)" + +#: includes/api/api-helpers.php:3994 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Szerokość obrazu musi mieć co najmniej %dpx." + +#: includes/api/api-helpers.php:3999 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Szerokość obrazu nie może przekraczać %dpx." + +#: includes/api/api-helpers.php:4015 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Wysokość obrazu musi mieć co najmniej %dpx." + +#: includes/api/api-helpers.php:4020 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Wysokość obrazu nie może przekraczać %dpx." + +#: includes/api/api-helpers.php:4038 +#, php-format +msgid "File size must be at least %s." +msgstr "Rozmiar pliku musi wynosić co najmniej %s." + +#: includes/api/api-helpers.php:4043 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Rozmiar pliku nie może przekraczać %s." + +#: includes/api/api-helpers.php:4077 +#, php-format +msgid "File type must be %s." +msgstr "Plik musi speÅ‚niać kryteria typu %s." + +#: includes/assets.php:172 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Wprowadzone przez Ciebie zmiany przepadnÄ… jeÅ›li przejdziesz do innej strony" + +#: includes/assets.php:175 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Wybierz" + +#: includes/assets.php:176 +msgctxt "verb" +msgid "Edit" +msgstr "Edytuj" + +#: includes/assets.php:177 +msgctxt "verb" +msgid "Update" +msgstr "Aktualizuj" + +#: includes/assets.php:178 +msgid "Uploaded to this post" +msgstr "PrzesÅ‚ane do tego wpisu" + +#: includes/assets.php:179 +msgid "Expand Details" +msgstr "RozwiÅ„ szczegóły" + +#: includes/assets.php:180 +msgid "Collapse Details" +msgstr "ZwiÅ„ szczegóły" + +#: includes/assets.php:181 +msgid "Restricted" +msgstr "Ograniczone" + +#: includes/assets.php:182 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "Wszystkie obrazy" + +#: includes/assets.php:185 +msgid "Validation successful" +msgstr "Walidacja zakoÅ„czona sukcesem" + +#: includes/assets.php:186 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Walidacja nie powiodÅ‚a siÄ™" + +#: includes/assets.php:187 +msgid "1 field requires attention" +msgstr "1 pole wymaga uwagi" + +#: includes/assets.php:188 +#, php-format +msgid "%d fields require attention" +msgstr "%d pól wymaga uwagi" + +#: includes/assets.php:191 +msgid "Are you sure?" +msgstr "Czy na pewno?" + +#: includes/assets.php:192 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Tak" + +#: includes/assets.php:193 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Nie" + +#: includes/assets.php:194 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:358 +#: pro/fields/class-acf-field-gallery.php:546 +msgid "Remove" +msgstr "UsuÅ„" + +#: includes/assets.php:195 +msgid "Cancel" +msgstr "Anuluj" + +#: includes/assets.php:198 +msgid "Has any value" +msgstr "Ma dowolnÄ… wartość" + +#: includes/assets.php:199 +msgid "Has no value" +msgstr "Nie ma wartoÅ›ci" + +#: includes/assets.php:200 +msgid "Value is equal to" +msgstr "Wartość jest równa" + +#: includes/assets.php:201 +msgid "Value is not equal to" +msgstr "Wartość nie jest równa" + +#: includes/assets.php:202 +msgid "Value matches pattern" +msgstr "Wartość musi pasować do wzoru" + +#: includes/assets.php:203 +msgid "Value contains" +msgstr "Wartość zawiera" + +#: includes/assets.php:204 +msgid "Value is greater than" +msgstr "Wartość jest wiÄ™ksza niż" + +#: includes/assets.php:205 +msgid "Value is less than" +msgstr "Wartość jest mniejsza niż" + +#: includes/assets.php:206 +msgid "Selection is greater than" +msgstr "Wybór jest wiÄ™kszy niż" + +#: includes/assets.php:207 +msgid "Selection is less than" +msgstr "Wybór jest mniejszy niż" + +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Typ pola nie istnieje" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Nieznane" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "Podstawowe" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Treść" + +#: includes/fields.php:351 +msgid "Choice" +msgstr "Wybór" + +#: includes/fields.php:352 +msgid "Relational" +msgstr "Relacyjne" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:354 +#: includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:567 +#: pro/fields/class-acf-field-flexible-content.php:616 +#: pro/fields/class-acf-field-repeater.php:443 +msgid "Layout" +msgstr "UkÅ‚ad" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Zwijane panele" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Otwarte" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Pokaż ten zwijany panel jako otwarty po zaÅ‚adowaniu strony." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Multi-expand" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Zezwól, aby ten zwijany panel otwieraÅ‚ siÄ™ bez zamykania innych." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Punkt koÅ„cowy" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Zdefiniuj punkt koÅ„cowy dla zatrzymania poprzedniego panelu zwijanego. Ten " +"panel zwijany nie bÄ™dzie widoczny." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Grupa przycisków" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:359 +msgid "Choices" +msgstr "Wybory" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "Enter each choice on a new line." +msgstr "Wpisz każdy z wyborów w osobnej linii." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Aby uzyskać wiÄ™kszÄ… kontrolÄ™, można okreÅ›lić zarówno wartość i etykietÄ™ w " +"niniejszy sposób:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "red : Red" +msgstr "czerwony : Czerwony" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:409 +msgid "Allow Null?" +msgstr "Zezwolić na pustÄ… wartość Null?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:368 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "DomyÅ›lna wartość" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "WyÅ›wietlane podczas tworzenia nowego wpisu" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Poziomy" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Pionowy" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Zwracana wartość" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "OkreÅ›l zwracanÄ… wartość na stronie (front-end)" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:427 +msgid "Value" +msgstr "Wartość" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:429 +msgid "Both (Array)" +msgstr "Oba (Array)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "Wybór (checkbox)" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Przełącz wszystko" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Dodaj nowy wybór" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Zezwól na niestandardowe" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Zezwalaj na dodawanie \"niestandardowych\" wartoÅ›ci" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Zapisz niestandardowe" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Zapisz \"niestandardowe\" wartoÅ›ci tego pola wyboru" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each default value on a new line" +msgstr "Wpisz każdÄ… domyÅ›lnÄ… wartość w osobnej linii" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Przełącznik (Toggle)" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" +"Dołącz dodatkowe pole wyboru, aby grupowo włączać/wyłączać wszystkie pola " +"wyboru" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Wybór koloru" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Wyczyść" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "DomyÅ›lna wartość" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Wybierz kolor" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Bieżący Kolor" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Wybór daty" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Gotowe" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Dzisiaj" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Dalej" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Wstecz" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Tydz" + +#: includes/fields/class-acf-field-date_picker.php:180 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Format wyÅ›wietlania" + +#: includes/fields/class-acf-field-date_picker.php:181 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "WyÅ›wietlany format przy edycji wpisu" + +#: includes/fields/class-acf-field-date_picker.php:189 +#: includes/fields/class-acf-field-date_picker.php:220 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Niestandardowe:" + +#: includes/fields/class-acf-field-date_picker.php:199 +msgid "Save Format" +msgstr "Zapisz format" + +#: includes/fields/class-acf-field-date_picker.php:200 +msgid "The format used when saving a value" +msgstr "Format używany podczas zapisywania wartoÅ›ci" + +#: includes/fields/class-acf-field-date_picker.php:210 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:715 +#: includes/fields/class-acf-field-select.php:422 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:428 +msgid "Return Format" +msgstr "Zwracany format" + +#: includes/fields/class-acf-field-date_picker.php:211 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Wartość zwracana przez funkcje w szablonie" + +#: includes/fields/class-acf-field-date_picker.php:229 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "TydzieÅ„ zaczyna siÄ™ od" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Wybieranie daty i godziny" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Wybierz czas" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Czas" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Godzina" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minuta" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Sekunda" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milisekunda" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosekunda" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Strefa czasu" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Teraz" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Gotowe" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Wybierz" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "E-mail" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Placeholder (tekst zastÄ™pczy)" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Pojawia siÄ™ w polu formularza" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Przed polem (prefiks)" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Pojawia siÄ™ przed polem formularza" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Za polem (sufiks)" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Pojawia siÄ™ za polem formularza" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Plik" + +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Edytuj plik" + +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Aktualizuj plik" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Nazwa pliku" + +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:705 +#: pro/fields/class-acf-field-gallery.php:734 +msgid "File size" +msgstr "Wielkość pliku" + +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Dodaj plik" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Tablica pliku (Array)" + +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "Adres URL pliku" + +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "ID pliku" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:670 +msgid "Library" +msgstr "Biblioteka" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Limit the media library choice" +msgstr "Ograniczenie wyborów z biblioteki" + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:676 +msgid "All" +msgstr "Wszystkie" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:677 +msgid "Uploaded to post" +msgstr "PrzesÅ‚ane do wpisu" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:684 +msgid "Minimum" +msgstr "Minimum" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "OkreÅ›l jakie pliki mogÄ… być przesyÅ‚ane" + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:713 +msgid "Maximum" +msgstr "Maksimum" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:742 +msgid "Allowed file types" +msgstr "Dozwolone typy plików" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:743 +msgid "Comma separated list. Leave blank for all types" +msgstr "Lista rozdzielana przecinkami. Pozostaw puste dla wszystkich typów" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Mapa Google" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Przepraszamy, ta przeglÄ…darka nie obsÅ‚uguje geolokalizacji" + +#: includes/fields/class-acf-field-google-map.php:165 +msgid "Clear location" +msgstr "Wyczyść lokalizacjÄ™" + +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Find current location" +msgstr "Znajdź aktualnÄ… lokalizacjÄ™" + +#: includes/fields/class-acf-field-google-map.php:169 +msgid "Search for address..." +msgstr "Szukaj adresu..." + +#: includes/fields/class-acf-field-google-map.php:199 +#: includes/fields/class-acf-field-google-map.php:210 +msgid "Center" +msgstr "WyÅ›rodkuj" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center the initial map" +msgstr "WyÅ›rodkuj poczÄ…tkowÄ… mapÄ™" + +#: includes/fields/class-acf-field-google-map.php:222 +msgid "Zoom" +msgstr "Zbliżenie" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Set the initial zoom level" +msgstr "Ustaw poczÄ…tkowe zbliżenie" + +#: includes/fields/class-acf-field-google-map.php:232 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:696 +#: pro/fields/class-acf-field-gallery.php:725 +msgid "Height" +msgstr "Wysokość" + +#: includes/fields/class-acf-field-google-map.php:233 +msgid "Customise the map height" +msgstr "Dostosuj wysokość mapy" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Grupa" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:379 +msgid "Sub Fields" +msgstr "Pola podrzÄ™dne" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "OkreÅ›l style stosowane to renderowania wybranych pól" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:627 +#: pro/fields/class-acf-field-repeater.php:451 +msgid "Block" +msgstr "Blok" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:626 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Table" +msgstr "Tabela" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:452 +msgid "Row" +msgstr "Wiersz" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Obraz" + +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "Wybierz obraz" + +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "Edytuj obraz" + +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "Aktualizuj obraz" + +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "Nie wybrano obrazu" + +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "Dodaj obraz" + +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "Tablica obrazów (Array)" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "Adres URL obrazu" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "ID obrazu" + +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "Rozmiar podglÄ…du" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "Widoczny podczas wprowadzania danych" + +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:685 +#: pro/fields/class-acf-field-gallery.php:714 +msgid "Restrict which images can be uploaded" +msgstr "OkreÅ›l jakie obrazy mogÄ… być przesyÅ‚ane" + +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Width" +msgstr "Szerokość" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Link" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Wybierz link" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Otwiera siÄ™ w nowym oknie/karcie" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Tablica linków (Array)" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "Adres URL linku" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Wiadomość" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Nowe linie" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Kontroluje jak nowe linie sÄ… renderowane" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Automatycznie dodaj akapity" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Automatycznie dodaj <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Brak formatowania" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Dodawaj znaki ucieczki do HTML (escape HTML)" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" +"Zezwól aby znaczniki HTML byÅ‚y wyÅ›wietlane jako widoczny tekst, a nie " +"renderowane" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Liczba" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "Minimalna wartość" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "Maksymalna wartość" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Wielkość kroku" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Wartość musi być liczbÄ…" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Wartość musi być równa lub wyższa od %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Wartość musi być równa lub niższa od %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "Wprowadź adres URL" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Rozmiar osadzenia" + +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Link do strony" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Archiwa" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Rodzic" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:641 +msgid "Filter by Post Type" +msgstr "Filtruj wg typu wpisu" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:649 +msgid "All post types" +msgstr "Wszystkie typy wpisów" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:655 +msgid "Filter by Taxonomy" +msgstr "Filtruj wg taksonomii" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:663 +msgid "All taxonomies" +msgstr "Wszystkie taksonomie" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Pozwól na adresy URL archiwów" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:387 +#: includes/fields/class-acf-field-user.php:419 +msgid "Select multiple values?" +msgstr "Możliwość wyboru wielu wartoÅ›ci?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "HasÅ‚o" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:720 +msgid "Post Object" +msgstr "Obiekt wpisu" + +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:721 +msgid "Post ID" +msgstr "ID wpisu" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Przycisk opcji (radio)" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Inne" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "" +"Dodaj pole \"inne\" aby zezwolić na wartoÅ›ci definiowane przez użytkownika" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Zapisz inne" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Dopisz zapisanÄ… wartość pola \"inne\" do wyborów tego pola" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Zakres" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Relacja" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "Maksymalna liczba wartoÅ›ci zostaÅ‚a przekroczona ( {max} wartoÅ›ci )" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "Åadowanie" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Nie znaleziono pasujÄ…cych wyników" + +#: includes/fields/class-acf-field-relationship.php:441 +msgid "Select post type" +msgstr "Wybierz typ wpisu" + +#: includes/fields/class-acf-field-relationship.php:467 +msgid "Select taxonomy" +msgstr "Wybierz taksonomiÄ™" + +#: includes/fields/class-acf-field-relationship.php:557 +msgid "Search..." +msgstr "Szukaj..." + +#: includes/fields/class-acf-field-relationship.php:669 +msgid "Filters" +msgstr "Filtry" + +#: includes/fields/class-acf-field-relationship.php:675 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Typ wpisu" + +#: includes/fields/class-acf-field-relationship.php:676 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taksonomia" + +#: includes/fields/class-acf-field-relationship.php:683 +msgid "Elements" +msgstr "Elementy" + +#: includes/fields/class-acf-field-relationship.php:684 +msgid "Selected elements will be displayed in each result" +msgstr "Wybrane elementy bÄ™dÄ… wyÅ›wietlone przy każdym wyniku" + +#: includes/fields/class-acf-field-relationship.php:695 +msgid "Minimum posts" +msgstr "Minimum wpisów" + +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Maximum posts" +msgstr "Maksimum wpisów" + +#: includes/fields/class-acf-field-relationship.php:808 +#: pro/fields/class-acf-field-gallery.php:815 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s wymaga dokonania przynajmniej %s wyboru" +msgstr[1] "%s wymaga dokonania przynajmniej %s wyborów" +msgstr[2] "%s wymaga dokonania przynajmniej %s wyborów" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Wybór" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "DostÄ™pny jest jeden wynik. Aby go wybrać, wciÅ›nij klawisz enter." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "DostÄ™pnych wyników - %d. Użyj strzaÅ‚ek w górÄ™ i w dół, aby nawigować." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Nie znaleziono wyników" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Wpisz 1 lub wiÄ™cej znaków" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Wpisz %d lub wiÄ™cej znaków" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "ProszÄ™ usunąć 1 znak" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "ProszÄ™ usunąć %d znaki/ów" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Możesz wybrać tylko 1 element" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Możesz wybrać tylko %d elementy/ów" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "ÅadujÄ™ wiÄ™cej wyników…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Szukam…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Åadowanie zakoÅ„czone niepowodzeniem" + +#: includes/fields/class-acf-field-select.php:397 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Ostylowany interfejs użytkownika" + +#: includes/fields/class-acf-field-select.php:407 +msgid "Use AJAX to lazy load choices?" +msgstr "Użyć technologii AJAX do wczytywania wyników?" + +#: includes/fields/class-acf-field-select.php:423 +msgid "Specify the value returned" +msgstr "OkreÅ›l zwracanÄ… wartość" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Separator" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "ZakÅ‚adka" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "PoÅ‚ożenie" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "Użyj tego pola jako punkt koÅ„cowy i zacznij nowÄ… grupÄ™ zakÅ‚adek." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Brak %s" + +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Wybierz taksonomiÄ™ do wyÅ›wietlenia" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "WyglÄ…d" + +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "OkreÅ›l wyglÄ…d tego pola" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Wiele wartoÅ›ci" + +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Wybór wielokrotny" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Pojedyncza wartość" + +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Przycisk opcji (radio)" + +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Tworzenie terminów taksonomii" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Pozwól na tworzenie nowych terminów taksonomii podczas edycji" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Zapisz terminy taksonomii" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "Przypisz wybrane terminy taksonomii do wpisu" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Wczytaj terminy taksonomii" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Wczytaj wartoÅ›ci z terminów taksonomii z wpisu" + +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Obiekt terminu (WP_Term)" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "ID terminu" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "Użytkownik nie może dodać nowych %s" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s już istnieje" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "Dodano %s" + +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Dodaj" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Tekst" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Limit znaków" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Pozostaw puste w przypadku braku limitu" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Obszar tekstowy" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Wiersze" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "OkreÅ›la wysokość obszaru tekstowego" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Wybieranie daty i godziny" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Prawda / FaÅ‚sz" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "WyÅ›wietla tekst obok pola wyboru (checkbox)" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Tekst, gdy włączone" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Tekst wyÅ›wietlany, gdy jest aktywne" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Tekst, gdy wyłączone" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Tekst wyÅ›wietlany, gdy jest nieaktywne" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "Url" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Wartość musi być poprawnym adresem URL" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Użytkownik" + +#: includes/fields/class-acf-field-user.php:394 +msgid "Filter by role" +msgstr "Filtruj wg roli" + +#: includes/fields/class-acf-field-user.php:402 +msgid "All user roles" +msgstr "Wszystkie role użytkownika" + +#: includes/fields/class-acf-field-user.php:433 +msgid "User Array" +msgstr "Tablica użytkowników (Array)" + +#: includes/fields/class-acf-field-user.php:434 +msgid "User Object" +msgstr "Obiekt użytkownika" + +#: includes/fields/class-acf-field-user.php:435 +msgid "User ID" +msgstr "ID użytkownika" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Edytor WYSIWYG" + +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Wizualny" + +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Tekstowy" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "Kliknij, aby zainicjować TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "ZakÅ‚adki" + +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Wizualna i Tekstowa" + +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Tylko wizualna" + +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Tylko tekstowa" + +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "Pasek narzÄ™dzi" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "WyÅ›wietlić przyciski Dodawania mediów?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "Opóźnić inicjowanie?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE nie zostanie zainicjowane do momentu klikniÄ™cia pola" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:301 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Edytuj grupÄ™ pól" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Waliduj E-mail" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:588 pro/options-page.php:81 +msgid "Update" +msgstr "Aktualizuj" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Wpis zaktualizowany" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Wykryto Spam" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Wpis" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Strona" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formularze" + +#: includes/locations.php:243 +msgid "is equal to" +msgstr "jest równe" + +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "jest inne niż" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Załącznik" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Wszystkie formaty %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Komentarz" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Rola bieżącego użytkownika" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Administrator" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Bieżący użytkownik" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Zalogowany" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "WyÅ›wietla stronÄ™ (front-end)" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "WyÅ›wietla kokpit (back-end)" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Element menu" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menu" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Pozycje menu" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Wiele menu" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Rodzic strony" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Szablon strony" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "DomyÅ›lny szablon" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Typ strony" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Strona główna" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Strona wpisów" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Strona najwyższego poziomu (brak rodzica)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Strona bÄ™dÄ…ca rodzicem (posiada potomne)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Strona bÄ™dÄ…ca potomnÄ… (ma rodziców)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Kategoria wpisu" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Format wpisu" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Status wpisu" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taksonomia wpisu" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Szablon wpisu" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Formularz użytkownika" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Dodaj / Edytuj" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Zarejestruj" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Rola użytkownika" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widżet" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s wartość jest wymagana" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Opublikuj" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Å»adna grupa pól nie zostaÅ‚a dodana do tej strony opcji. Utwórz grupÄ™ wÅ‚asnych pól" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Błąd. Nie można połączyć z serwerem aktualizacji" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Aktualizacje" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Deaktywuj licencjÄ™" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Aktywuj licencjÄ™" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Informacje o licencji" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Å»eby odblokować aktualizacje proszÄ™ podać swój klucz licencyjny poniżej. " +"JeÅ›li nie posiadasz klucza prosimy zapoznać siÄ™ ze szczegółami i cennikiem." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Klucz licencyjny" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Informacje o aktualizacji" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Zainstalowana wersja" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Najnowsza wersja" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "DostÄ™pna aktualizacja" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Aktualizuj wtyczkÄ™" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "" +"ProszÄ™ wpisać swój klucz licencyjny powyżej aby odblokować aktualizacje" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Sprawdź ponownie" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Informacje o aktualizacji" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Klon" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Wybierz jedno lub wiÄ™cej pól które chcesz sklonować" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "WyÅ›wietl" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "OkreÅ›l styl wykorzystywany do stosowania w klonowanych polach" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Grupuj (wyÅ›wietla wybrane pola w grupie)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Ujednolicenie (zastÄ™puje to pole wybranymi polami)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Etykiety bÄ™dÄ… wyÅ›wietlane jako %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Prefiks Etykiet Pól" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "WartoÅ›ci bÄ™dÄ… zapisane jako %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Prefiks Nazw Pól" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Nieznane pole" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Nieznana grupa pól" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Wszystkie pola z grupy pola %s" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:463 +msgid "Add Row" +msgstr "Dodaj wiersz" + +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:938 +#: pro/fields/class-acf-field-flexible-content.php:1020 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "ukÅ‚ad" +msgstr[1] "ukÅ‚ady" +msgstr[2] "ukÅ‚adów" + +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "ukÅ‚ady" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:937 +#: pro/fields/class-acf-field-flexible-content.php:1019 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "To pole wymaga przynajmniej {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "To pole ma ograniczenie {max} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} dostÄ™pne (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} wymagane (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Elastyczne pole wymaga przynajmniej 1 ukÅ‚adu" + +#: pro/fields/class-acf-field-flexible-content.php:302 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Kliknij przycisk \"%s\" poniżej, aby zacząć tworzyć nowy ukÅ‚ad" + +#: pro/fields/class-acf-field-flexible-content.php:427 +msgid "Add layout" +msgstr "Dodaj ukÅ‚ad" + +#: pro/fields/class-acf-field-flexible-content.php:428 +msgid "Remove layout" +msgstr "UsuÅ„ ukÅ‚ad" + +#: pro/fields/class-acf-field-flexible-content.php:429 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Click to toggle" +msgstr "Kliknij, aby przełączyć" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder Layout" +msgstr "ZmieÅ„ kolejność ukÅ‚adów" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder" +msgstr "ZmieÅ„ kolejność" + +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete Layout" +msgstr "UsuÅ„ ukÅ‚ad" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate Layout" +msgstr "Duplikuj ukÅ‚ad" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New Layout" +msgstr "Dodaj nowy ukÅ‚ad" + +#: pro/fields/class-acf-field-flexible-content.php:643 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:656 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:683 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Button Label" +msgstr "Etykieta przycisku" + +#: pro/fields/class-acf-field-flexible-content.php:692 +msgid "Minimum Layouts" +msgstr "Minimalna liczba ukÅ‚adów" + +#: pro/fields/class-acf-field-flexible-content.php:701 +msgid "Maximum Layouts" +msgstr "Maksymalna liczba ukÅ‚adów" + +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "Dodaj obraz do galerii" + +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "Maksimum iloÅ›ci wyborów osiÄ…gniÄ™te" + +#: pro/fields/class-acf-field-gallery.php:336 +msgid "Length" +msgstr "DÅ‚ugość" + +#: pro/fields/class-acf-field-gallery.php:379 +msgid "Caption" +msgstr "Etykieta" + +#: pro/fields/class-acf-field-gallery.php:388 +msgid "Alt Text" +msgstr "Tekst alternatywny" + +#: pro/fields/class-acf-field-gallery.php:559 +msgid "Add to gallery" +msgstr "Dodaj do galerii" + +#: pro/fields/class-acf-field-gallery.php:563 +msgid "Bulk actions" +msgstr "DziaÅ‚ania na wielu" + +#: pro/fields/class-acf-field-gallery.php:564 +msgid "Sort by date uploaded" +msgstr "Sortuj po dacie przesÅ‚ania" + +#: pro/fields/class-acf-field-gallery.php:565 +msgid "Sort by date modified" +msgstr "Sortuj po dacie modyfikacji" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Sort by title" +msgstr "Sortuj po tytule" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Reverse current order" +msgstr "Odwróć aktualnÄ… kolejność" + +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Close" +msgstr "Zamknij" + +#: pro/fields/class-acf-field-gallery.php:639 +msgid "Minimum Selection" +msgstr "Minimalna liczba wybranych elementów" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Maximum Selection" +msgstr "Maksymalna liczba wybranych elementów" + +#: pro/fields/class-acf-field-gallery.php:657 +msgid "Insert" +msgstr "Wstaw" + +#: pro/fields/class-acf-field-gallery.php:658 +msgid "Specify where new attachments are added" +msgstr "OkreÅ›l gdzie sÄ… dodawane nowe załączniki" + +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Append to the end" +msgstr "Dodaj na koÅ„cu" + +#: pro/fields/class-acf-field-gallery.php:663 +msgid "Prepend to the beginning" +msgstr "Dodaj do poczÄ…tku" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:656 +msgid "Minimum rows reached ({min} rows)" +msgstr "OsiÄ…gniÄ™to minimum liczby wierszy ( {min} wierszy )" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "OsiÄ…gniÄ™to maksimum liczby wierszy ( {max} wierszy )" + +#: pro/fields/class-acf-field-repeater.php:333 +msgid "Add row" +msgstr "Dodaj wiersz" + +#: pro/fields/class-acf-field-repeater.php:334 +msgid "Remove row" +msgstr "UsuÅ„ wiersz" + +#: pro/fields/class-acf-field-repeater.php:412 +msgid "Collapsed" +msgstr "ZwiniÄ™ty" + +#: pro/fields/class-acf-field-repeater.php:413 +msgid "Select a sub field to show when row is collapsed" +msgstr "" +"Wybierz pole podrzÄ™dne, które majÄ… być pokazane kiedy wiersz jest zwiniÄ™ty" + +#: pro/fields/class-acf-field-repeater.php:423 +msgid "Minimum Rows" +msgstr "Minimalna liczba wierszy" + +#: pro/fields/class-acf-field-repeater.php:433 +msgid "Maximum Rows" +msgstr "Maksymalna liczba wierszy" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Strona opcji nie istnieje" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Opcje" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Ustawienia zostaÅ‚y zaktualizowane" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Å»eby włączyć aktualizacje, proszÄ™ podać swój klucz licencyjny na stronie Aktualizacji. JeÅ›li nie posiadasz klucza, prosimy zapoznać " +"siÄ™ ze szczegółami i cennikiem." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Error validating request" +#~ msgstr "Błąd podczas walidacji żądania" + +#~ msgid "Advanced Custom Fields Database Upgrade" +#~ msgstr "Aktualizacja bazy danych Advanced Custom Fields" + +#~ msgid "" +#~ "Before you start using the new awesome features, please update your " +#~ "database to the newest version." +#~ msgstr "" +#~ "Zanim zaczniesz korzystać z niesamowitych funkcji prosimy o " +#~ "zaktualizowanie bazy danych do najnowszej wersji." + +#~ msgid "" +#~ "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +#~ msgstr "" +#~ "Aby aktualizacja byÅ‚a Å‚atwa, zaloguj siÄ™ do swojego konta i pobierz darmowÄ… kopiÄ™ ACF PRO!" + +#~ msgid "Under the Hood" +#~ msgstr "Pod maskÄ…" + +#~ msgid "Smarter field settings" +#~ msgstr "Sprytniejsze ustawienia pól" + +#~ msgid "ACF now saves its field settings as individual post objects" +#~ msgstr "ACF teraz zapisuje ustawienia pól jako osobny obiekt wpisu" + +#~ msgid "Better version control" +#~ msgstr "Lepsza kontrola wersji" + +#~ msgid "" +#~ "New auto export to JSON feature allows field settings to be version " +#~ "controlled" +#~ msgstr "" +#~ "Nowy zautomatyzowany eksport do JSON pozwala na wersjonowanie ustawieÅ„ pól" + +#~ msgid "Swapped XML for JSON" +#~ msgstr "Zmiana XML na JSON" + +#~ msgid "Import / Export now uses JSON in favour of XML" +#~ msgstr "Import / Eksport teraz korzysta z JSON zamiast XML" + +#~ msgid "New Forms" +#~ msgstr "Nowe formularze" + +#~ msgid "A new field for embedding content has been added" +#~ msgstr "Dodano nowe pole do osadzania zawartoÅ›ci" + +#~ msgid "New Gallery" +#~ msgstr "Nowa galeria" + +#~ msgid "The gallery field has undergone a much needed facelift" +#~ msgstr "Pola galerii przeszÅ‚y niezbÄ™dny facelifting" + +#~ msgid "Relationship Field" +#~ msgstr "Pole relacji" + +#~ msgid "" +#~ "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +#~ msgstr "" +#~ "Nowe ustawienia pola relacji dla \"Filtrów\" (Wyszukiwarka, Typ Wpisu, " +#~ "Taksonomia)" + +#~ msgid "New archives group in page_link field selection" +#~ msgstr "Nowe grupy archiwów do wyboru dla pola page_link" + +#~ msgid "Better Options Pages" +#~ msgstr "Lepsze strony opcji" + +#~ msgid "" +#~ "New functions for options page allow creation of both parent and child " +#~ "menu pages" +#~ msgstr "" +#~ "Nowe funkcje dla strony opcji pozwalajÄ… tworzyć strony w menu bÄ™dÄ…ce " +#~ "rodzicami oraz potomnymi." + +#~ msgid "Parent fields" +#~ msgstr "Pola nadrzÄ™dne" + +#~ msgid "Sibling fields" +#~ msgstr "Pola tego samego poziomu" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Eksportuj grupy pól do PHP" + +#~ msgid "Download export file" +#~ msgstr "Pobierz plik eksportu" + +#~ msgid "Generate export code" +#~ msgstr "Generuj kod eksportu" + +#~ msgid "Import" +#~ msgstr "Import" + +#~ msgid "Locating" +#~ msgstr "Lokalizacja" + +#~ msgid "Error." +#~ msgstr "Błąd." + +#~ msgid "No embed found for the given URL." +#~ msgstr "Nie znaleziono osadzenia dla podanego URLa." + +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "Minimalna wartość zostaÅ‚a przekroczona ( {min} )" + +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Pole zakÅ‚adki bÄ™dzie wyÅ›wietlane nieprawidÅ‚owo jeÅ›li zostanie dodano do " +#~ "pola powtarzalnego wyÅ›wietlanego jako tabela lub do elastycznego pola" + +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "Użyj \"Pola zakÅ‚adki\" aby uporzÄ…dkować ekran edycji grupujÄ…c pola." + +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Wszystkie pola po tym \"polu zakÅ‚adki\" (lub przed nastÄ™pnym \"polem " +#~ "zakÅ‚adki\") zostanÄ… zgrupowane razem używajÄ…c etykiety tego pola jako " +#~ "nagłówka." + +#~ msgid "None" +#~ msgstr "Brak" + +#~ msgid "Taxonomy Term" +#~ msgstr "Termin taksonomii" + +#~ msgid "remove {layout}?" +#~ msgstr "usunąć {layout}?" + +#~ msgid "This field requires at least {min} {identifier}" +#~ msgstr "To pole wymaga przynamniej {min} {identifier}" + +#~ msgid "Maximum {label} limit reached ({max} {identifier})" +#~ msgstr "Maksimum {label} limit osiÄ…gniÄ™ty ({max} {identifier})" + +#~ msgid "Disabled" +#~ msgstr "Wyłączone" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Wyłączony: (%s)" +#~ msgstr[1] "Wyłączonych: (%s)" +#~ msgstr[2] "Wyłączonych: (%s)" + +#~ msgid "Getting Started" +#~ msgstr "Pierwsze kroki" + +#~ msgid "Field Types" +#~ msgstr "Rodzaje pól" + +#~ msgid "Functions" +#~ msgstr "Funkcje" + +#~ msgid "Actions" +#~ msgstr "Akcje" + +#~ msgid "'How to' guides" +#~ msgstr "Wskazówki 'how-to'" + +#~ msgid "Tutorials" +#~ msgstr "Poradniki" + +#~ msgid "FAQ" +#~ msgstr "Najczęściej zadawane pytania (FAQ)" + +#~ msgid "Created by" +#~ msgstr "Stworzone przez" + +#~ msgid "Error loading update" +#~ msgstr "Błąd Å‚adowania aktualizacji" + +#~ msgid "Error" +#~ msgstr "Błąd" + +#~ msgid "See what's new" +#~ msgstr "Zobacz co nowego" + +#~ msgid "eg. Show extra content" +#~ msgstr "np. WyÅ›wietl dodatkowÄ… treść" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "1 pole wymaga uwagi." +#~ msgstr[1] "%d pola wymagajÄ… uwagi." +#~ msgstr[2] "%d pól wymaga uwagi." + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "Sukces. NarzÄ™dzie importu dodaÅ‚o %s grup pól: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Ostrzeżenie. NarzÄ™dzie importu wykryÅ‚o %s już istniejÄ…cych grup " +#~ "pól i je pominęło: %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "Aktualizuj ACF" + +#~ msgid "Upgrade" +#~ msgstr "Aktualizacja" + +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to " +#~ "update and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "NastÄ™pujÄ…ce strony wymagajÄ… aktualizacji bazy danych. Zaznacz te które " +#~ "chcesz aktualizować i kliknij 'Aktualizuj bazÄ™ danych\"." + +#~ msgid "Select" +#~ msgstr "Wybór (select)" + +#~ msgid "Done" +#~ msgstr "Gotowe" + +#~ msgid "Today" +#~ msgstr "Dzisiaj" + +#~ msgid "Show a different month" +#~ msgstr "Pokaż inny miesiÄ…c" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Błąd połączenia. Przepraszamy, spróbuj ponownie" + +#~ msgid "See what's new in" +#~ msgstr "Zobacz co sÅ‚ychać nowego w" + +#~ msgid "version" +#~ msgstr "wersja" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "PrzeciÄ…gnij i zmieÅ„ kolejność" + +#~ msgid "Upgrading data to" +#~ msgstr "Aktualizacja danych do" + +#~ msgid "Return format" +#~ msgstr "Zwracany format" + +#~ msgid "uploaded to this post" +#~ msgstr "przesÅ‚ane do tego wpisu" + +#~ msgid "File Name" +#~ msgstr "Nazwa pliku" + +#~ msgid "File Size" +#~ msgstr "Rozmiar pliku" + +#~ msgid "No File selected" +#~ msgstr "Nie wybrano pliku" + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "ProszÄ™ pamiÄ™tać, że wszystkie teksty najpierw przepuszczane sÄ… przez " +#~ "funkcje WP" + +#~ msgid "Warning" +#~ msgstr "Ostrzeżenie" + +#~ msgid "Add new %s " +#~ msgstr "Dodaj nowe %s" + +#~ msgid "Save Options" +#~ msgstr "Zapisz opcje" + +#~ msgid "License" +#~ msgstr "Licencja" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "W celu odblokowania aktualizacji proszÄ™ wpisać swój numer licencji " +#~ "poniżej. JeÅ›li nie masz klucza proszÄ™ zobacz" + +#~ msgid "details & pricing" +#~ msgstr "szczegóły i ceny" + +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "Aby włączyć aktualizacjÄ™ proszÄ™ wpisać swój klucz licencji na stronie Aktualizacje. JeÅ›li nie posiadasz klucza proszÄ™ zobaczyć " +#~ "szczegóły i ceny" + +#~ msgid "Advanced Custom Fields Pro" +#~ msgstr "Advanced Custom Fields Pro" + +#~ msgid "http://www.advancedcustomfields.com/" +#~ msgstr "http://www.advancedcustomfields.com/" + +#~ msgid "elliot condon" +#~ msgstr "elliot condon" + +#, fuzzy +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "" +#~ "Grupy pól sÄ… tworzone w kolejnoÅ›ci
                          od najniższej do najwyższej." + +#, fuzzy +#~ msgid "ACF PRO Required" +#~ msgstr "Wymagane?" + +#, fuzzy +#~ msgid "Update Database" +#~ msgstr "Aktualizuj bazę danych" + +#, fuzzy +#~ msgid "Data Upgrade" +#~ msgstr "Aktualizacja" + +#, fuzzy +#~ msgid "image" +#~ msgstr "Obrazek" + +#, fuzzy +#~ msgid "relationship" +#~ msgstr "Relacja" + +#, fuzzy +#~ msgid "title_is_required" +#~ msgstr "Grupa pól została opublikowana." + +#, fuzzy +#~ msgid "move_field" +#~ msgstr "Zapisz pole" + +#, fuzzy +#~ msgid "flexible_content" +#~ msgstr "Elastyczna treść" + +#, fuzzy +#~ msgid "gallery" +#~ msgstr "Galeria" + +#, fuzzy +#~ msgid "repeater" +#~ msgstr "Pole powtarzalne" + +#~ msgid "Custom field updated." +#~ msgstr "Włąsne pole zostało zaktualizowane." + +#~ msgid "Custom field deleted." +#~ msgstr "Własne pole zostało usunięte." + +#, fuzzy +#~ msgid "Import/Export" +#~ msgstr "Import / Eksport" + +#, fuzzy +#~ msgid "Attachment Details" +#~ msgstr "ID załącznika" + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "Walidacja nie powiodła się. Jedno lub więcej pól jest wymaganych." + +#~ msgid "Field group restored to revision from %s" +#~ msgstr "Grupa pól została przywróćona z wersji %s" + +#~ msgid "No ACF groups selected" +#~ msgstr "Nie zaznaczono żadnej grupy pól" + +#~ msgid "Add Fields to Edit Screens" +#~ msgstr "Dodaj pola do stron edycji" + +#~ msgid "" +#~ "Read documentation, learn the functions and find some tips & tricks " +#~ "for your next web project." +#~ msgstr "" +#~ "Przeczytaj dokumentację, naucz się funkcji i poznaj parę tricków, które " +#~ "mogą przydać Ci się w Twoim kolejnym projekcie." + +#~ msgid "View the ACF website" +#~ msgstr "Odwiedź stronę wtyczki" + +#~ msgid "Vote" +#~ msgstr "Głosuj" + +#~ msgid "Follow" +#~ msgstr "Śledź" + +#~ msgid "Add File to Field" +#~ msgstr "Dodaj plik do pola" + +#~ msgid "Add Image to Field" +#~ msgstr "Dodaj zdjęcie do pola" + +#~ msgid "Repeater field deactivated" +#~ msgstr "Pole powtarzalne zostało deaktywowane" + +#~ msgid "Gallery field deactivated" +#~ msgstr "Galeria została deaktywowana" + +#~ msgid "Repeater field activated" +#~ msgstr "Pole powtarzalne zostało aktywowane" + +#~ msgid "Options page activated" +#~ msgstr "Strona opcji została aktywowana" + +#~ msgid "Flexible Content field activated" +#~ msgstr "Pole z elastyczną zawartością zostało aktywowane" + +#~ msgid "Gallery field activated" +#~ msgstr "Galeria została aktywowana" + +#~ msgid "License key unrecognised" +#~ msgstr "Klucz licencji nie został rozpoznany" + +#~ msgid "Advanced Custom Fields Settings" +#~ msgstr "Ustawienia zaawansowanych własnych pól" + +#~ msgid "Activation Code" +#~ msgstr "Kod aktywacyjny" + +#~ msgid "Repeater Field" +#~ msgstr "Pole powtarzalne" + +#~ msgid "Flexible Content Field" +#~ msgstr "Pole z elastyczną zawartością" + +#~ msgid "Gallery Field" +#~ msgstr "Galeria" + +#~ msgid "" +#~ "Add-ons can be unlocked by purchasing a license key. Each key can be used " +#~ "on multiple sites." +#~ msgstr "" +#~ "Dodatki można odblokować kupując kod aktywacyjny. Każdy kod aktywacyjny " +#~ "może być wykorzystywany na dowolnej liczbie stron." + +#~ msgid "Export Field Groups to XML" +#~ msgstr "Eksportuj Grupy pól do XML" + +#~ msgid "" +#~ "ACF will create a .xml export file which is compatible with the native WP " +#~ "import plugin." +#~ msgstr "" +#~ "Wtyczka utworzy plik eksportu .xml, który jest kompatybilny z domyślną " +#~ "wtyczką importu plików." + +#~ msgid "Export XML" +#~ msgstr "Eksportuj XML" + +#~ msgid "Navigate to the" +#~ msgstr "Przejdź do" + +#~ msgid "and select WordPress" +#~ msgstr "i wybierz Wordpress" + +#~ msgid "Install WP import plugin if prompted" +#~ msgstr "Zainstaluj wtyczkę importu WP, jeśli zostaniesz o to poproszony" + +#~ msgid "Upload and import your exported .xml file" +#~ msgstr "Wgraj i zaimportuj wyeksportowany wcześniej plik .xml" + +#~ msgid "Select your user and ignore Import Attachments" +#~ msgstr "Wybierz użytkownika i ignoruj Importowanie załączników" + +#~ msgid "That's it! Happy WordPressing" +#~ msgstr "Gotowe!" + +#~ msgid "ACF will create the PHP code to include in your theme" +#~ msgstr "ACF wygeneruje kod PHP, który możesz wkleić do swego szablonu" + +#~ msgid "Register Field Groups with PHP" +#~ msgstr "Utwórz grupę pól z PHP" + +#~ msgid "Copy the PHP code generated" +#~ msgstr "Skopij wygenerowany kod PHP" + +#~ msgid "Paste into your functions.php file" +#~ msgstr "Wklej do pliku functions.php" + +#~ msgid "" +#~ "To activate any Add-ons, edit and use the code in the first few lines." +#~ msgstr "" +#~ "Aby aktywować dodatki, edytuj i użyj kodu w pierwszych kilku liniach." + +#~ msgid "Back to settings" +#~ msgstr "Wróć do ustawień" + +#~ msgid "" +#~ "/**\n" +#~ " * Activate Add-ons\n" +#~ " * Here you can enter your activation codes to unlock Add-ons to use in " +#~ "your theme. \n" +#~ " * Since all activation codes are multi-site licenses, you are allowed to " +#~ "include your key in premium themes. \n" +#~ " * Use the commented out code to update the database with your activation " +#~ "code. \n" +#~ " * You may place this code inside an IF statement that only runs on theme " +#~ "activation.\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * Aktywuj dodatki\n" +#~ " * Możesz tu wpisać kody aktywacyjne uruchamiające dodatkowe funkcje. \n" +#~ " * W związku z tym, że kody są na dowolną ilość licencji, możesz je " +#~ "stosować także w płatnych szablonach. \n" +#~ " * Użyj kodu aby zaktualizować bazę danych. \n" +#~ " * Możesz umieścić ten kod w funkcjach if, które uruchamiają się np. przy " +#~ "aktywacji szablonu.\n" +#~ " */" + +#~ msgid "" +#~ "/**\n" +#~ " * Register field groups\n" +#~ " * The register_field_group function accepts 1 array which holds the " +#~ "relevant data to register a field group\n" +#~ " * You may edit the array as you see fit. However, this may result in " +#~ "errors if the array is not compatible with ACF\n" +#~ " * This code must run every time the functions.php file is read\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * Zarejestruj grupy pól\n" +#~ " * Funkcja register_field_group akceptuje 1 ciąg zmiennych, która zawiera " +#~ "wszystkie dane służące rejestracji grupy\n" +#~ " * Możesz edytować tę zmienną i dopasowywać ją do swoich potrzeb. Ale " +#~ "może to też powodować błąd jeśli ta zmienna nie jest kompatybilna z ACF\n" +#~ " * Kod musi być uruchamiany każdorazowo w pliku functions.php\n" +#~ " */" + +#~ msgid "requires a database upgrade" +#~ msgstr "wymagana jest aktualizacja bazy danych" + +#~ msgid "why?" +#~ msgstr "dlaczego?" + +#~ msgid "Please" +#~ msgstr "Proszę" + +#~ msgid "backup your database" +#~ msgstr "zrobić kopię zapasową bazy danych" + +#~ msgid "then click" +#~ msgstr "a następnie kliknąć" + +#~ msgid "Modifying field group options 'show on page'" +#~ msgstr "Modyfikacje opcji grupy pól 'pokaż na stronie'" + +#~ msgid "No choices to choose from" +#~ msgstr "Brak możliwościi wyboru" + +#~ msgid "Red" +#~ msgstr "Czerwony" + +#~ msgid "Blue" +#~ msgstr "Niebieski" + +#~ msgid "blue : Blue" +#~ msgstr "niebieski : Niebieski" + +#~ msgid "File Updated." +#~ msgstr "Plik został zaktualizowany." + +#~ msgid "Media attachment updated." +#~ msgstr "Załącznik został zaktualizowany." + +#~ msgid "Add Selected Files" +#~ msgstr "Dodaj zaznaczone pliki" + +#~ msgid "+ Add Row" +#~ msgstr "+ Dodaj rząd" + +#~ msgid "Field Order" +#~ msgstr "Kolejność pola" + +#~ msgid "" +#~ "No fields. Click the \"+ Add Sub Field button\" to create your first " +#~ "field." +#~ msgstr "" +#~ "Brak pól. Kliknij przycisk \"+ Dodaj pole podrzędne\" aby utworzyć " +#~ "pierwsze własne pole." + +#~ msgid "Docs" +#~ msgstr "Dokumentacja" + +#~ msgid "Close Sub Field" +#~ msgstr "Zamknij pole" + +#~ msgid "+ Add Sub Field" +#~ msgstr "+ Dodaj pole podrzędne" + +#~ msgid "Alternate Text" +#~ msgstr "Tekst alternatywny" + +#~ msgid "Thumbnail is advised" +#~ msgstr "Zalecana jest miniatura." + +#~ msgid "Image Updated" +#~ msgstr "Zdjęcie zostało zaktualizowane." + +#~ msgid "Grid" +#~ msgstr "Siatka" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Image already exists in gallery" +#~ msgstr "To zdjęcie już jest w galerii." + +#~ msgid "Image Updated." +#~ msgstr "Zdjęcie zostało zaktualizowane." + +#~ msgid "No images selected" +#~ msgstr "Nie wybrano obrazków" + +#~ msgid "Add selected Images" +#~ msgstr "Dodaj zaznaczone obrazki" + +#~ msgid "" +#~ "Filter posts by selecting a post type
                          \n" +#~ "\t\t\t\tTip: deselect all post types to show all post type's posts" +#~ msgstr "" +#~ "Filtruj wpisy wybierajÄ…c typ wpisu
                          \n" +#~ "\t\t\t\tPodpowiedź: nie zaznaczenie żadnego typu wpisów spowoduje " +#~ "wyświetlenie wszystkich" + +#~ msgid "Set to -1 for infinite" +#~ msgstr "Wpisanie -1 oznacza nieskończoność" + +#~ msgid "Repeater Fields" +#~ msgstr "Pola powtarzalne" + +#~ msgid "Table (default)" +#~ msgstr "Tabela (domyślne)" + +#~ msgid "Define how to render html tags" +#~ msgstr "Określ jak traktować znaczniki HTML" + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Define how to render html tags / new lines" +#~ msgstr "Określ jak traktować znaczniki HTML / nowe wiersze" + +#~ msgid "eg. dd/mm/yy. read more about" +#~ msgstr "np. dd/mm/rr. czytaj więcej" + +#~ msgid "Page Specific" +#~ msgstr "Związane ze stronami" + +#~ msgid "Post Specific" +#~ msgstr "Związane z typem wpisu" + +#~ msgid "Taxonomy (Add / Edit)" +#~ msgstr "Taksonomia (Dodaj / Edytuj)" + +#~ msgid "Media (Edit)" +#~ msgstr "Medium (Edytuj)" + +#~ msgid "match" +#~ msgstr "pasuje" + +#~ msgid "all" +#~ msgstr "wszystkie" + +#~ msgid "of the above" +#~ msgstr "do pozostałych" + +#~ msgid "Unlock options add-on with an activation code" +#~ msgstr "Odblokuj dodatkowe opcje z kodem aktywacyjnym" + +#~ msgid "Normal" +#~ msgstr "Normalna" + +#~ msgid "No Metabox" +#~ msgstr "Bez metabox" + +#~ msgid "Everything Fields deactivated" +#~ msgstr "Pola do wszystkiego zostały deaktywowane" + +#~ msgid "Everything Fields activated" +#~ msgstr "Pola do wszystkiego zostały aktywowane" + +#~ msgid "Row Limit" +#~ msgstr "Limit rzędów" + +#~ msgid "required" +#~ msgstr "wymagane" + +#~ msgid "Show on page" +#~ msgstr "Wyświetl na stronie" + +#~ msgid "" +#~ "Watch tutorials, read documentation, learn the API code and find some " +#~ "tips & tricks for your next web project." +#~ msgstr "" +#~ "Obejrzyj tutorial, przeczytaj dokumentację, naucz się API i poznaj parę " +#~ "tricków do przydatnych w Twoim kolejnym projekcie." + +#~ msgid "View the plugins website" +#~ msgstr "Odwiedź witrynę wtyczki" + +#~ msgid "" +#~ "Join the growing community over at the support forum to share ideas, " +#~ "report bugs and keep up to date with ACF" +#~ msgstr "" +#~ "Dołącz do rosnącej społeczności użytkowników i forum pomocy, aby dzielić " +#~ "się pomysłami, zgłąszać błedy i być na bierząco z tą wtyczką." + +#~ msgid "View the Support Forum" +#~ msgstr "Zobacz forum pomocy" + +#~ msgid "Developed by" +#~ msgstr "Opracowana przez" + +#~ msgid "Vote for ACF" +#~ msgstr "Głosuj na tę wtyczkę" + +#~ msgid "Twitter" +#~ msgstr "Twitter" + +#~ msgid "Blog" +#~ msgstr "Blog" + +#~ msgid "Unlock Special Fields." +#~ msgstr "Odblokuj pola specjalne" + +#~ msgid "" +#~ "Special Fields can be unlocked by purchasing an activation code. Each " +#~ "activation code can be used on multiple sites." +#~ msgstr "" +#~ "Pola specjalne można odblokować kupując kod aktywacyjny. Każdy kod " +#~ "aktywacyjny może być wykorzystywany wielokrotnie." + +#~ msgid "Visit the Plugin Store" +#~ msgstr "Odwiedź sklep wtyczki" + +#~ msgid "Unlock Fields" +#~ msgstr "Odblokuj pola" + +#~ msgid "Have an ACF export file? Import it here." +#~ msgstr "Wyeksportowałeś plik z polami? Możesz go zaimportować tutaj." + +#~ msgid "" +#~ "Want to create an ACF export file? Just select the desired ACF's and hit " +#~ "Export" +#~ msgstr "" +#~ "Chcesz stworzyć i wyeksportować plik z polami? Wybierz pola i kliknij " +#~ "Eksport" + +#~ msgid "" +#~ "No fields. Click the \"+ Add Field button\" to create your first field." +#~ msgstr "" +#~ "Brak pól. Kliknij przycisk \"+ Dodaj pole\" aby utworzyć pierwsze własne " +#~ "pole." + +#~ msgid "" +#~ "Special Fields can be unlocked by purchasing a license key. Each key can " +#~ "be used on multiple sites." +#~ msgstr "" +#~ "Pola specjalne można odblokować kupując kod aktywacyjny. Każdy kod " +#~ "aktywacyjny może być wykorzystywany wielokrotnie." + +#~ msgid "Select which ACF groups to export" +#~ msgstr "Wybierz, które grupy chcesz wyeksportować" + +#~ msgid "" +#~ "Have an ACF export file? Import it here. Please note that v2 and v3 .xml " +#~ "files are not compatible." +#~ msgstr "" +#~ "Wyeksportowałeś plik z polami? Zaimportuj go tutaj. Zwróć uwagę, że " +#~ "wersje 2 i 3 plików .xml nie są ze sobą kompatybilne." + +#~ msgid "Import your .xml file" +#~ msgstr "Zaimportuj plik .xml" + +#~ msgid "Display your field group with or without a box" +#~ msgstr "Wyświetl grupę pól w ramce lub bez niej" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "No Options" +#~ msgstr "Brak opcji" + +#~ msgid "Sorry, it seems there are no fields for this options page." +#~ msgstr "Przykro mi, ale ta strona opcji nie zawiera pól." + +#~ msgid "" +#~ "Enter your choices one per line
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tRed
                          \n" +#~ "\t\t\t\tBlue
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tor
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tred : Red
                          \n" +#~ "\t\t\t\tblue : Blue" +#~ msgstr "" +#~ "Wpisz dostęne opcje, każdy w odrębnym rzędzie
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tCzerwony
                          \n" +#~ "\t\t\t\tNiebieski
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tor
                          \n" +#~ "\t\t\t\t
                          \n" +#~ "\t\t\t\tczerwony : Czerwony
                          \n" +#~ "\t\t\t\tniebieski : Niebieski" + +#~ msgid "continue editing ACF" +#~ msgstr "kontynuuj edycjÄ™" + +#~ msgid "Adv Upgrade" +#~ msgstr "Zaawansowana aktualizacja" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-pt_BR.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-pt_BR.mo new file mode 100755 index 0000000000000000000000000000000000000000..8d0a7454c7cf4b1156b18630aeab5314b9bce435 GIT binary patch literal 52235 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-pt_BR.po b/wp-content/plugins/advanced-custom-fields/lang/acf-pt_BR.po new file mode 100644 index 0000000..37198da --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-pt_BR.po @@ -0,0 +1,3367 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields PRO 5.4\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2017-11-22 09:03-0200\n" +"PO-Revision-Date: 2018-02-06 10:06+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Augusto Simão \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:67 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:369 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Grupos de Campos" + +#: acf.php:370 +msgid "Field Group" +msgstr "Grupo de Campos" + +#: acf.php:371 acf.php:403 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New" +msgstr "Adicionar Novo" + +#: acf.php:372 +msgid "Add New Field Group" +msgstr "Adicionar Novo Grupo de Campos" + +#: acf.php:373 +msgid "Edit Field Group" +msgstr "Editar Grupo de Campos" + +#: acf.php:374 +msgid "New Field Group" +msgstr "Novo Grupo de Campos" + +#: acf.php:375 +msgid "View Field Group" +msgstr "Ver Grupo de Campos" + +#: acf.php:376 +msgid "Search Field Groups" +msgstr "Pesquisar Grupos de Campos" + +#: acf.php:377 +msgid "No Field Groups found" +msgstr "Nenhum Grupo de Campos encontrado" + +#: acf.php:378 +msgid "No Field Groups found in Trash" +msgstr "Nenhum Grupo de Campos encontrado na Lixeira" + +#: acf.php:401 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:807 +msgid "Fields" +msgstr "Campos" + +#: acf.php:402 +msgid "Field" +msgstr "Campo" + +#: acf.php:404 +msgid "Add New Field" +msgstr "Adicionar Novo Campo" + +#: acf.php:405 +msgid "Edit Field" +msgstr "Editar Campo" + +#: acf.php:406 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Novo Campo" + +#: acf.php:407 +msgid "View Field" +msgstr "Ver Campo" + +#: acf.php:408 +msgid "Search Fields" +msgstr "Pesquisar Campos" + +#: acf.php:409 +msgid "No Fields found" +msgstr "Nenhum Campo encontrado" + +#: acf.php:410 +msgid "No Fields found in Trash" +msgstr "Nenhum Campo encontrado na Lixeira" + +#: acf.php:449 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Inativo" + +#: acf.php:454 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Ativo (%s)" +msgstr[1] "Ativos (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Grupo de campos atualizado" + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Grupo de campos excluído." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Grupo de campos publicado." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Grupo de campos salvo." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Grupo de campos enviado." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Grupo de campos agendando." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Rascunho do grupo de campos atualizado." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "Localização" + +#: includes/admin/admin-field-group.php:184 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Configurações" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "Mover para a lixeira. Você tem certeza?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "selecionado" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "Nenhum campo de opções disponível" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "O título do grupo de campos é obrigatório" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "copiar" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3959 +msgid "or" +msgstr "ou" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "Campos superiores" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "Campos do mesmo grupo" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "Mover Campo Personalizado" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Este campo não pode ser movido até que suas alterações sejam salvas" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "Vazio" + +#: includes/admin/admin-field-group.php:281 includes/input.php:258 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "As alterações feitas serão perdidas se você sair desta página" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "O termo “field_†não pode ser utilizado no início do nome de um campo" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Chaves dos Campos" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Ativo" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "Movimentação realizada." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "O campo %s pode agora ser encontrado no grupo de campos %s" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "Fechar Janela" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "Selecione o destino para este campo" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "Mover Campo" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Ativo (%s)" +msgstr[1] "Ativos (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Grupo de campos duplicado. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s grupo de campos duplicado." +msgstr[1] "%s grupos de campos duplicados." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Grupo de campos sincronizado. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s grupo de campos sincronizado." +msgstr[1] "%s grupos de campos sincronizados." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Sincronização disponível" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:355 +msgid "Title" +msgstr "Título" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:382 +msgid "Description" +msgstr "Descrição" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Status" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"Personalize o WordPress com campos personalizados profissionais, poderosos e " +"intuitivos." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Registro de alterações" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Veja o que há de novo na versão %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Recursos (em inglês)" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Website" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Documentação" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Suporte" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "Profissional" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Obrigado por criar com ACF." + +#: includes/admin/admin-field-groups.php:667 +msgid "Duplicate this item" +msgstr "Duplicar este item" + +#: includes/admin/admin-field-groups.php:667 +#: includes/admin/admin-field-groups.php:683 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate" +msgstr "Duplicar" + +#: includes/admin/admin-field-groups.php:700 +#: includes/fields/class-acf-field-google-map.php:112 +#: includes/fields/class-acf-field-relationship.php:656 +msgid "Search" +msgstr "Pesquisa" + +#: includes/admin/admin-field-groups.php:759 +#, php-format +msgid "Select %s" +msgstr "Selecionar %s" + +#: includes/admin/admin-field-groups.php:767 +msgid "Synchronise field group" +msgstr "Sincronizar grupo de campos" + +#: includes/admin/admin-field-groups.php:767 +#: includes/admin/admin-field-groups.php:797 +msgid "Sync" +msgstr "Sincronizar" + +#: includes/admin/admin-field-groups.php:779 +msgid "Apply" +msgstr "Aplicar" + +#: includes/admin/admin-field-groups.php:797 +msgid "Bulk Actions" +msgstr "Ações em massa" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Ferramentas" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Campos Personalizados" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Atualizar Banco de Dados" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Revisar sites e atualizar" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "Erro ao validar solicitação" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "Nenhuma atualização disponível." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Complementos" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Erro. Não foi possível carregar a lista de complementos" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informações" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "O que há de novo" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Exportar Grupos de Campos" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Nenhum grupo de campos selecionado" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Exportado 1 grupo de campos" +msgstr[1] "Importados %s grupos de campos" + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Selecionar Grupo de Campos" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Selecione os grupos de campos que deseja exportar e escolha o método de " +"exportação. Para exportar um arquivo do tipo .json (que permitirá a " +"importação dos grupos em uma outra instalação do ACF) utilize o botão de " +"download. Para obter o código em PHP (que você poderá depois inserir em seu " +"tema), utilize o botão de gerar o código." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Exportar arquivo" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"O código a seguir poderá ser usado para registrar uma versão local do(s) " +"grupo(s) de campo selecionado(s). Um grupo de campos local pode fornecer " +"muitos benefícios, tais como um tempo de carregamento mais rápido, controle " +"de versão e campos/configurações dinâmicas. Basta copiar e colar o seguinte " +"código para o arquivo functions.php do seu tema ou incluí-lo dentro de um " +"arquivo externo." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Importar Grupos de Campos" + +#: includes/admin/tools/class-acf-admin-tool-import.php:61 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Selecione o arquivo JSON do Advanced Custom Fields que deseja importar. " +"Depois de clicar no botão importar abaixo, o ACF fará a importação dos " +"grupos de campos." + +#: includes/admin/tools/class-acf-admin-tool-import.php:66 +#: includes/fields/class-acf-field-file.php:35 +msgid "Select File" +msgstr "Selecionar Arquivo" + +#: includes/admin/tools/class-acf-admin-tool-import.php:76 +msgid "Import File" +msgstr "Importar arquivo" + +#: includes/admin/tools/class-acf-admin-tool-import.php:100 +#: includes/fields/class-acf-field-file.php:159 +msgid "No file selected" +msgstr "Nenhum arquivo selecionado" + +#: includes/admin/tools/class-acf-admin-tool-import.php:113 +msgid "Error uploading file. Please try again" +msgstr "Erro ao realizar o upload do arquivo. Tente novamente" + +#: includes/admin/tools/class-acf-admin-tool-import.php:122 +msgid "Incorrect file type" +msgstr "Tipo de arquivo incorreto" + +#: includes/admin/tools/class-acf-admin-tool-import.php:139 +msgid "Import file empty" +msgstr "Arquivo de importação vazio" + +#: includes/admin/tools/class-acf-admin-tool-import.php:247 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Importado 1 grupo de campos" +msgstr[1] "Importados %s grupos de campos" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "Condições para exibição" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Mostrar este campo se" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:247 +msgid "is equal to" +msgstr "é igual a" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "não é igual a" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "e" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Adicionar grupo de regras" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:403 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Drag to reorder" +msgstr "Arraste para reorganizar" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Editar campo" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-file.php:141 +#: includes/fields/class-acf-field-image.php:122 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:342 +msgid "Edit" +msgstr "Editar" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Duplicar campo" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "Mover campo para outro grupo" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "Mover" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "Excluir campo" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete" +msgstr "Excluir" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "Rótulo do Campo" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "Este é o nome que irá aparecer na página de EDIÇÃO" + +#: includes/admin/views/field-group-field.php:77 +msgid "Field Name" +msgstr "Nome do Campo" + +#: includes/admin/views/field-group-field.php:78 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "" +"Uma única palavra, sem espaços. Traço inferior (_) e traços (-) permitidos" + +#: includes/admin/views/field-group-field.php:87 +msgid "Field Type" +msgstr "Tipo de Campo" + +#: includes/admin/views/field-group-field.php:98 +msgid "Instructions" +msgstr "Instruções" + +#: includes/admin/views/field-group-field.php:99 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instrução para os autores. Exibido quando se está enviando dados" + +#: includes/admin/views/field-group-field.php:108 +msgid "Required?" +msgstr "Obrigatório?" + +#: includes/admin/views/field-group-field.php:131 +msgid "Wrapper Attributes" +msgstr "Atributos do Wrapper" + +#: includes/admin/views/field-group-field.php:137 +msgid "width" +msgstr "largura" + +#: includes/admin/views/field-group-field.php:152 +msgid "class" +msgstr "classe" + +#: includes/admin/views/field-group-field.php:165 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:177 +msgid "Close Field" +msgstr "Fechar Campo" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Ordem" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:415 +#: includes/fields/class-acf-field-radio.php:306 +#: includes/fields/class-acf-field-select.php:432 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Rótulo" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:964 +#: pro/fields/class-acf-field-flexible-content.php:595 +msgid "Name" +msgstr "Nome" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Chave" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Tipo" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Nenhum campo. Clique no botão + Adicionar Campo para criar " +"seu primeiro campo." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Adicionar Campo" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regras" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Crie um conjunto de regras para determinar quais telas de edição utilizarão " +"estes campos personalizados" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Estilo" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Padrão (metabox do WP)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Sem bordas (sem metabox)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Posição" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Superior (depois do título)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (depois do editor de conteúdo)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Lateral" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Posicionamento do rótulo" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Alinhado ao Topo" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Alinhado à Esquerda" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Posicionamento das instruções" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Abaixo dos rótulos" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Abaixo dos campos" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Nº. de Ordem" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Grupos de campos com a menor numeração aparecerão primeiro" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Exibido na lista de grupos de campos" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Ocultar na tela" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Selecione os itens que deverão ser ocultados da tela de edição" + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Se vários grupos de campos aparecem em uma tela de edição, as opções do " +"primeiro grupo de campos é a que será utilizada (aquele com o menor número " +"de ordem)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Link permanente" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Editor de Conteúdo" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Resumo" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "Discussão" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Comentários" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Revisões" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Slug" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Autor" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Formato" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Atributos da Página" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:670 +msgid "Featured Image" +msgstr "Imagem Destacada" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Categorias" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Tags" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Enviar Trackbacks" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Mostrar este grupo de campos se" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Revisar sites e atualizar" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Atualização do Banco de Dados do Advanced Custom Fields" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"O banco de dados dos sites abaixo precisam ser atualizados. Verifique os que " +"você deseja atualizar e clique %s." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Site" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Site requer atualização do banco de dados da versão %s para %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Site está atualizado" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Atualização do Banco de Dados realizada. Retornar para o " +"painel da rede" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"É altamente recomendado fazer um backup do seu banco de dados antes de " +"continuar. Você tem certeza que deseja atualizar agora?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Atualização realizada" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Atualizando os dados para a versão %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Repetidor" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Conteúdo Flexível" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galeria" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Página de Opções" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Atualização do Banco de Dados Necessária" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Obrigado por atualizar para o %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Antes de começar a utilizar as novas e incríveis funcionalidades, por favor " +"atualize seus banco de dados para a versão mais recente." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"Certifique-se que todos os complementos premium (%s) foram atualizados para " +"a última versão." + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Lendo as tarefas de atualização…" + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" +"Atualização do banco de dados concluída. Veja o que há de " +"novo" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Fazer Download e Instalar" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Instalado" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Bem-vindo ao Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Obrigado por atualizar! O ACF %s está maior e melhor do que nunca. Esperamos " +"que você goste." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "Uma experiência de uso mais simples e mais agradável" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Melhoria da Usabilidade" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Incluir a popular biblioteca Select2 nos possibilitou aperfeiçoar a " +"usabilidade e a performance de diversos tipos de campos, como o objeto do " +"post, link da página, taxonomias e seleções." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Melhorias no Design" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Muitos campos passaram por uma atualização visual para tornar o ACF mais " +"bonito do que nunca! As mudanças mais visíveis podem ser vistas na galeria, " +"no campo de relação e no novo campo oEmbed!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Aprimoramento dos Dados" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Ao redefinir a arquitetura de dados promovemos mais autonomia aos sub " +"campos, que podem agora funcionar de forma mais independente e serem " +"arrastados e reposicionados entre diferentes campos." + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Adeus Complementos. Olá PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "Apresentando o ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Estamos mudando a forma como as funcionalidades premium são disponibilizadas " +"para um modo ainda melhor!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Todos os 4 add-ons premium foram combinados na nova versão Pro " +"do ACF. Com licenças pessoais e para desenvolvedores, as funcionalidades " +"premium estão mais acessíveis do que nunca!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Funcionalidades poderosas" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"O ACF PRO contém funcionalidades incríveis como o campo de dados " +"repetitivos, layouts de conteúdo flexíveis, um belíssimo campo de galeria e " +"a capacidade de criar páginas de opções adicionais!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "" +"Leia mais sobre as funcionalidades do ACF PRO (em inglês)." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Fácil Atualização" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"Para facilitar a atualização, faça o login na sua conta e " +"solicite sua cópia gratuita do ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Também escrevemos um guia de atualização (em inglês) para " +"esclarecer qualquer dúvida, mas se você tiver alguma questão, entre em " +"contato com nosso time de suporte através do help desk" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Nos bastidores" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Definições de campo mais inteligentes" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "O ACF agora salva as definições dos campos como posts individuais" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Mais AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" +"Mais campos utilizam pesquisas em AJAX para acelerar o carregamento da página" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "JSON Local" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "" +"Melhor performance com a nova funcionalidade de exportação automática para " +"JSON" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Melhor controle de versões" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" +"A nova função de exportação automática para JSON permite que as definições " +"do campo sejam controladas por versão" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "Troca de XML para JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "" +"As funcionalidades de Importar/ Exportar agora utilizam JSON ao invés de XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Novos espaços de Formulários" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Os Campos agora podem ser inseridos nos comentários, widgets e em todos os " +"formulários de usuários!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Foi adicionado o novo campo oEmbed para incorporar conteúdo" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Nova Galeria" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "O campo de Galeria passou por uma transformação muito necessária" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Novas Definições" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Opções de posicionamento do rótulo e da instrução foram adicionadas aos " +"grupos de campos" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Formulários Frontend aperfeiçoados" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "A função acf_form() agora pode criar um novo post ao ser utilizada" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Melhor Validação" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "" +"A validação dos formulários agora é feita através de PHP + AJAX ao invés de " +"apenas JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Campo de Relação" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Nova função de ‘Filtro’ (Busca, Tipo de Post, Taxonomia) para o campo de " +"Relação" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Movimentação de Campos" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"O novo recurso agora permite que você mova um campo entre diferentes grupos " +"grupos (e até mesmo outros campos)" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Link da Página" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Nova opção de selecionar Arquivos no campo de Link da Página" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Páginas de Opções aperfeiçoadas" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Novas funções para as páginas de opções permitem a criação tanto de páginas " +"principais quanto de sub-páginas" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Achamos que você vai adorar as mudanças na versão %s." + +#: includes/api/api-helpers.php:858 +msgid "Thumbnail" +msgstr "Miniatura" + +#: includes/api/api-helpers.php:859 +msgid "Medium" +msgstr "Média" + +#: includes/api/api-helpers.php:860 +msgid "Large" +msgstr "Grande" + +#: includes/api/api-helpers.php:909 +msgid "Full Size" +msgstr "Tamanho Original" + +#: includes/api/api-helpers.php:1250 includes/api/api-helpers.php:1823 +#: pro/fields/class-acf-field-clone.php:992 +msgid "(no title)" +msgstr "(sem título)" + +#: includes/api/api-helpers.php:3880 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "A largura da imagem deve ter pelo menos %dpx." + +#: includes/api/api-helpers.php:3885 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "A largura da imagem não pode ser maior que %dpx." + +#: includes/api/api-helpers.php:3901 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "A altura da imagem deve ter pelo menos %dpx." + +#: includes/api/api-helpers.php:3906 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "A altura da imagem não pode ser maior que %dpx." + +#: includes/api/api-helpers.php:3924 +#, php-format +msgid "File size must be at least %s." +msgstr "O tamanho do arquivo deve ter pelo menos %s." + +#: includes/api/api-helpers.php:3929 +#, php-format +msgid "File size must must not exceed %s." +msgstr "O tamanho do arquivo não pode ser maior que %s." + +#: includes/api/api-helpers.php:3963 +#, php-format +msgid "File type must be %s." +msgstr "O tipo de arquivo deve ser %s." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Básico" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Conteúdo" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Escolha" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Relacional" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 +#: includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:384 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:285 +#: pro/fields/class-acf-field-clone.php:839 +#: pro/fields/class-acf-field-flexible-content.php:552 +#: pro/fields/class-acf-field-flexible-content.php:601 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Layout" +msgstr "Layout" + +#: includes/fields.php:326 +msgid "Field type does not exist" +msgstr "Tipo de campo não existe" + +#: includes/fields.php:326 +msgid "Unknown" +msgstr "Desconhecido" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Acordeão" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Abrir" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Exibe esse acordeão como aberto ao carregar a página." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Expansão-multipla" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others. " +msgstr "Permite que esse acordeão abra sem fechar os outros." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Ponto final" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Define um ponto final para que o acordeão anterior pare. Esse acordeão não " +"será visível." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Grupo de botões" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:368 +msgid "Choices" +msgstr "Escolhas" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each choice on a new line." +msgstr "Digite cada opção em uma nova linha." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Para mais controle, você pode especificar tanto os valores quanto os " +"rótulos, como nos exemplos:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "red : Red" +msgstr "vermelho : Vermelho" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:386 +#: includes/fields/class-acf-field-taxonomy.php:793 +#: includes/fields/class-acf-field-user.php:408 +msgid "Allow Null?" +msgstr "Permitir Nulo?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:375 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:276 +#: includes/fields/class-acf-field-range.php:148 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:410 +msgid "Default Value" +msgstr "Valor Padrão" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:277 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Appears when creating a new post" +msgstr "Aparece quando o novo post é criado" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:391 +#: includes/fields/class-acf-field-radio.php:292 +msgid "Horizontal" +msgstr "Horizontal" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:390 +#: includes/fields/class-acf-field-radio.php:291 +msgid "Vertical" +msgstr "Vertical" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:408 +#: includes/fields/class-acf-field-file.php:204 +#: includes/fields/class-acf-field-image.php:188 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:299 +#: includes/fields/class-acf-field-taxonomy.php:833 +msgid "Return Value" +msgstr "Valor Retornado" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:409 +#: includes/fields/class-acf-field-file.php:205 +#: includes/fields/class-acf-field-image.php:189 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:300 +msgid "Specify the returned value on front end" +msgstr "Especifique a forma como os valores serão retornados no front-end" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-radio.php:305 +#: includes/fields/class-acf-field-select.php:431 +msgid "Value" +msgstr "Valor" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:416 +#: includes/fields/class-acf-field-radio.php:307 +#: includes/fields/class-acf-field-select.php:433 +msgid "Both (Array)" +msgstr "Ambos (Array)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Checkbox" +msgstr "Checkbox" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Selecionar Tudo" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Adicionar nova opção" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Permitir personalização" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Permite adicionar valores personalizados" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Salvar personalização" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Salva valores personalizados nas opções do campo" + +#: includes/fields/class-acf-field-checkbox.php:376 +#: includes/fields/class-acf-field-select.php:378 +msgid "Enter each default value on a new line" +msgstr "Digite cada valor padrão em uma nova linha" + +#: includes/fields/class-acf-field-checkbox.php:398 +msgid "Toggle" +msgstr "Selecionar Tudo" + +#: includes/fields/class-acf-field-checkbox.php:399 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Incluir um checkbox adicional que marca (ou desmarca) todas as opções" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Seletor de Cor" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Limpar" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Padrão" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Selecionar Cor" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Cor Atual" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Seletor de Data" + +#: includes/fields/class-acf-field-date_picker.php:33 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Concluído" + +#: includes/fields/class-acf-field-date_picker.php:34 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Hoje" + +#: includes/fields/class-acf-field-date_picker.php:35 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Próximo" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Anterior" + +#: includes/fields/class-acf-field-date_picker.php:37 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Sem" + +#: includes/fields/class-acf-field-date_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:181 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Formato de Exibição" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:182 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "O formato que será exibido ao editar um post" + +#: includes/fields/class-acf-field-date_picker.php:216 +#: includes/fields/class-acf-field-date_picker.php:247 +#: includes/fields/class-acf-field-date_time_picker.php:191 +#: includes/fields/class-acf-field-date_time_picker.php:208 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Customizado:" + +#: includes/fields/class-acf-field-date_picker.php:226 +msgid "Save Format" +msgstr "Salvar formato" + +#: includes/fields/class-acf-field-date_picker.php:227 +msgid "The format used when saving a value" +msgstr "O formato usado ao salvar um valor" + +#: includes/fields/class-acf-field-date_picker.php:237 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:697 +#: includes/fields/class-acf-field-select.php:426 +#: includes/fields/class-acf-field-time_picker.php:124 +msgid "Return Format" +msgstr "Formato dos Dados" + +#: includes/fields/class-acf-field-date_picker.php:238 +#: includes/fields/class-acf-field-date_time_picker.php:199 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "O formato que será retornado através das funções de template" + +#: includes/fields/class-acf-field-date_picker.php:256 +#: includes/fields/class-acf-field-date_time_picker.php:215 +msgid "Week Starts On" +msgstr "Semana começa em" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Seletor de Data e Hora" + +#: includes/fields/class-acf-field-date_time_picker.php:33 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Selecione a hora" + +#: includes/fields/class-acf-field-date_time_picker.php:34 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Hora" + +#: includes/fields/class-acf-field-date_time_picker.php:35 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Hora" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minuto" + +#: includes/fields/class-acf-field-date_time_picker.php:37 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Segundo" + +#: includes/fields/class-acf-field-date_time_picker.php:38 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milissegundo" + +#: includes/fields/class-acf-field-date_time_picker.php:39 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Microssegundo" + +#: includes/fields/class-acf-field-date_time_picker.php:40 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Fuso Horário" + +#: includes/fields/class-acf-field-date_time_picker.php:41 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Agora" + +#: includes/fields/class-acf-field-date_time_picker.php:42 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Pronto" + +#: includes/fields/class-acf-field-date_time_picker.php:43 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Selecionar" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "Email" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Texto Placeholder" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Texto que aparecerá dentro do campo (até que algo seja digitado)" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:187 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Prefixo" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Texto que aparecerá antes do campo" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:196 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Sufixo" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Texto que aparecerá após o campo" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Arquivo" + +#: includes/fields/class-acf-field-file.php:36 +msgid "Edit File" +msgstr "Editar Arquivo" + +#: includes/fields/class-acf-field-file.php:37 +msgid "Update File" +msgstr "Atualizar Arquivo" + +#: includes/fields/class-acf-field-file.php:38 +#: includes/fields/class-acf-field-image.php:43 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:44 +msgid "Uploaded to this post" +msgstr "Anexado ao post" + +#: includes/fields/class-acf-field-file.php:130 +msgid "File name" +msgstr "Nome do arquivo" + +#: includes/fields/class-acf-field-file.php:134 +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: pro/fields/class-acf-field-gallery.php:690 +#: pro/fields/class-acf-field-gallery.php:719 +msgid "File size" +msgstr "Tamanho" + +#: includes/fields/class-acf-field-file.php:143 +#: includes/fields/class-acf-field-image.php:124 +#: includes/fields/class-acf-field-link.php:140 includes/input.php:269 +#: pro/fields/class-acf-field-gallery.php:343 +#: pro/fields/class-acf-field-gallery.php:531 +msgid "Remove" +msgstr "Remover" + +#: includes/fields/class-acf-field-file.php:159 +msgid "Add File" +msgstr "Adicionar Arquivo" + +#: includes/fields/class-acf-field-file.php:210 +msgid "File Array" +msgstr "Array do arquivo" + +#: includes/fields/class-acf-field-file.php:211 +msgid "File URL" +msgstr "URL do Arquivo" + +#: includes/fields/class-acf-field-file.php:212 +msgid "File ID" +msgstr "ID do Arquivo" + +#: includes/fields/class-acf-field-file.php:219 +#: includes/fields/class-acf-field-image.php:213 +#: pro/fields/class-acf-field-gallery.php:655 +msgid "Library" +msgstr "Biblioteca" + +#: includes/fields/class-acf-field-file.php:220 +#: includes/fields/class-acf-field-image.php:214 +#: pro/fields/class-acf-field-gallery.php:656 +msgid "Limit the media library choice" +msgstr "Limitar a escolha da biblioteca de mídia" + +#: includes/fields/class-acf-field-file.php:225 +#: includes/fields/class-acf-field-image.php:219 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:661 +msgid "All" +msgstr "Todos" + +#: includes/fields/class-acf-field-file.php:226 +#: includes/fields/class-acf-field-image.php:220 +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Uploaded to post" +msgstr "Anexado ao post" + +#: includes/fields/class-acf-field-file.php:233 +#: includes/fields/class-acf-field-image.php:227 +#: pro/fields/class-acf-field-gallery.php:669 +msgid "Minimum" +msgstr "Mínimo" + +#: includes/fields/class-acf-field-file.php:234 +#: includes/fields/class-acf-field-file.php:245 +msgid "Restrict which files can be uploaded" +msgstr "Limita o tamanho dos arquivos que poderão ser carregados" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:256 +#: pro/fields/class-acf-field-gallery.php:698 +msgid "Maximum" +msgstr "Máximo" + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:285 +#: pro/fields/class-acf-field-gallery.php:727 +msgid "Allowed file types" +msgstr "Tipos de arquivos permitidos" + +#: includes/fields/class-acf-field-file.php:256 +#: includes/fields/class-acf-field-image.php:286 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "" +"Lista separada por vírgulas. Deixe em branco para permitir todos os tipos" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Mapa do Google" + +#: includes/fields/class-acf-field-google-map.php:40 +msgid "Locating" +msgstr "Localizando" + +#: includes/fields/class-acf-field-google-map.php:41 +msgid "Sorry, this browser does not support geolocation" +msgstr "O seu navegador não suporta o recurso de geolocalização" + +#: includes/fields/class-acf-field-google-map.php:113 +msgid "Clear location" +msgstr "Limpar a localização" + +#: includes/fields/class-acf-field-google-map.php:114 +msgid "Find current location" +msgstr "Encontre a localização atual" + +#: includes/fields/class-acf-field-google-map.php:117 +msgid "Search for address..." +msgstr "Pesquisar endereço…" + +#: includes/fields/class-acf-field-google-map.php:147 +#: includes/fields/class-acf-field-google-map.php:158 +msgid "Center" +msgstr "Centro" + +#: includes/fields/class-acf-field-google-map.php:148 +#: includes/fields/class-acf-field-google-map.php:159 +msgid "Center the initial map" +msgstr "Centro inicial do mapa" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:171 +msgid "Set the initial zoom level" +msgstr "Definir o nível do zoom inicial" + +#: includes/fields/class-acf-field-google-map.php:180 +#: includes/fields/class-acf-field-image.php:239 +#: includes/fields/class-acf-field-image.php:268 +#: includes/fields/class-acf-field-oembed.php:281 +#: pro/fields/class-acf-field-gallery.php:681 +#: pro/fields/class-acf-field-gallery.php:710 +msgid "Height" +msgstr "Altura" + +#: includes/fields/class-acf-field-google-map.php:181 +msgid "Customise the map height" +msgstr "Personalizar a altura do mapa" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Grupo" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:389 +msgid "Sub Fields" +msgstr "Sub Campos" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:840 +msgid "Specify the style used to render the selected fields" +msgstr "Especifique o estilo utilizado para exibir os campos selecionados" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:845 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:458 +msgid "Block" +msgstr "Bloco" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:846 +#: pro/fields/class-acf-field-flexible-content.php:611 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Table" +msgstr "Tabela" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:847 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Row" +msgstr "Linha" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Imagem" + +#: includes/fields/class-acf-field-image.php:40 +msgid "Select Image" +msgstr "Selecionar Imagem" + +#: includes/fields/class-acf-field-image.php:41 +#: pro/fields/class-acf-field-gallery.php:42 +msgid "Edit Image" +msgstr "Editar Imagem" + +#: includes/fields/class-acf-field-image.php:42 +#: pro/fields/class-acf-field-gallery.php:43 +msgid "Update Image" +msgstr "Atualizar Imagem" + +#: includes/fields/class-acf-field-image.php:44 +msgid "All images" +msgstr "Todas as imagens" + +#: includes/fields/class-acf-field-image.php:140 +msgid "No image selected" +msgstr "Nenhuma imagem selecionada" + +#: includes/fields/class-acf-field-image.php:140 +msgid "Add Image" +msgstr "Adicionar Imagem" + +#: includes/fields/class-acf-field-image.php:194 +msgid "Image Array" +msgstr "Array da Imagem" + +#: includes/fields/class-acf-field-image.php:195 +msgid "Image URL" +msgstr "URL da Imagem" + +#: includes/fields/class-acf-field-image.php:196 +msgid "Image ID" +msgstr "ID da Imagem" + +#: includes/fields/class-acf-field-image.php:203 +msgid "Preview Size" +msgstr "Tamanho da Pré-visualização" + +#: includes/fields/class-acf-field-image.php:204 +msgid "Shown when entering data" +msgstr "Exibido ao inserir os dados" + +#: includes/fields/class-acf-field-image.php:228 +#: includes/fields/class-acf-field-image.php:257 +#: pro/fields/class-acf-field-gallery.php:670 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Restrict which images can be uploaded" +msgstr "Limita as imagens que poderão ser carregadas" + +#: includes/fields/class-acf-field-image.php:231 +#: includes/fields/class-acf-field-image.php:260 +#: includes/fields/class-acf-field-oembed.php:270 +#: pro/fields/class-acf-field-gallery.php:673 +#: pro/fields/class-acf-field-gallery.php:702 +msgid "Width" +msgstr "Largura" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Link" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Selecionar Link" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Abre em uma nova janela/aba" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Array do Link" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "URL do Link" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Mensagem" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Novas Linhas" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Controla como as novas linhas são renderizadas" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Adicionar parágrafos automaticamente" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Adicionar <br> automaticamente" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Sem Formatação" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Ignorar HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" +"Permitir que a marcação HTML seja exibida como texto ao invés de ser " +"renderizada" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Número" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:157 +msgid "Minimum Value" +msgstr "Valor Mínimo" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:167 +msgid "Maximum Value" +msgstr "Valor Máximo" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:177 +msgid "Step Size" +msgstr "Tamanho das frações" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "O valor deve ser um número" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "O valor deve ser igual ou maior que %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "O valor deve ser igual ou menor que %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:219 +msgid "Enter URL" +msgstr "Digite a URL" + +#: includes/fields/class-acf-field-oembed.php:234 +#: includes/fields/class-acf-field-taxonomy.php:898 +msgid "Error." +msgstr "Erro." + +#: includes/fields/class-acf-field-oembed.php:234 +msgid "No embed found for the given URL." +msgstr "Nenhuma mídia incorporada encontrada na URL fornecida." + +#: includes/fields/class-acf-field-oembed.php:267 +#: includes/fields/class-acf-field-oembed.php:278 +msgid "Embed Size" +msgstr "Tamanho da Mídia incorporada" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Arquivos" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:986 +msgid "Parent" +msgstr "Página de Nível mais Alto (sem mãe)" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Filter by Post Type" +msgstr "Filtrar por Tipo de Post" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:631 +msgid "All post types" +msgstr "Todos os tipos de posts" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:637 +msgid "Filter by Taxonomy" +msgstr "Filtrar por Taxonomia" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:645 +msgid "All taxonomies" +msgstr "Todas as taxonomias" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Permitir URLs do Arquivo" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:396 +#: includes/fields/class-acf-field-user.php:418 +msgid "Select multiple values?" +msgstr "Selecionar vários valores?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Senha" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:702 +msgid "Post Object" +msgstr "Objeto do Post" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:703 +msgid "Post ID" +msgstr "ID do Post" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Botão de Rádio" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Outro" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "" +"Adicionar uma opção ‘Outro’ para permitir a inserção de valores " +"personalizados" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Salvar Outro" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "" +"Salvar os valores personalizados inseridos na opção ‘Outros’ na lista de " +"escolhas do campo" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Faixa" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Relação" + +#: includes/fields/class-acf-field-relationship.php:37 +msgid "Minimum values reached ( {min} values )" +msgstr "Quantidade mínima atingida ( {min} item(s) )" + +#: includes/fields/class-acf-field-relationship.php:38 +msgid "Maximum values reached ( {max} values )" +msgstr "Quantidade máxima atingida ( {max} item(s) )" + +#: includes/fields/class-acf-field-relationship.php:39 +msgid "Loading" +msgstr "Carregando" + +#: includes/fields/class-acf-field-relationship.php:40 +msgid "No matches found" +msgstr "Nenhuma correspondência encontrada" + +#: includes/fields/class-acf-field-relationship.php:423 +msgid "Select post type" +msgstr "Selecione o tipo de post" + +#: includes/fields/class-acf-field-relationship.php:449 +msgid "Select taxonomy" +msgstr "Selecione a taxonomia" + +#: includes/fields/class-acf-field-relationship.php:539 +msgid "Search..." +msgstr "Pesquisar…" + +#: includes/fields/class-acf-field-relationship.php:651 +msgid "Filters" +msgstr "Filtros" + +#: includes/fields/class-acf-field-relationship.php:657 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Tipo de Post" + +#: includes/fields/class-acf-field-relationship.php:658 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:763 +msgid "Taxonomy" +msgstr "Taxonomia" + +#: includes/fields/class-acf-field-relationship.php:665 +msgid "Elements" +msgstr "Elementos" + +#: includes/fields/class-acf-field-relationship.php:666 +msgid "Selected elements will be displayed in each result" +msgstr "Os elementos selecionados serão exibidos em cada resultado do filtro" + +#: includes/fields/class-acf-field-relationship.php:677 +msgid "Minimum posts" +msgstr "Qtde. mínima de posts" + +#: includes/fields/class-acf-field-relationship.php:686 +msgid "Maximum posts" +msgstr "Qtde. máxima de posts" + +#: includes/fields/class-acf-field-relationship.php:790 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s requer a seleção de ao menos %s item" +msgstr[1] "%s requer a seleção de ao menos %s itens" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:785 +msgctxt "noun" +msgid "Select" +msgstr "Seleção" + +#: includes/fields/class-acf-field-select.php:38 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Um resultado localizado, pressione Enter para selecioná-lo." + +#: includes/fields/class-acf-field-select.php:39 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" +"%d resultados localizados, utilize as setas para cima ou baixo para navegar." + +#: includes/fields/class-acf-field-select.php:40 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Nenhuma correspondência encontrada" + +#: includes/fields/class-acf-field-select.php:41 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Digite 1 ou mais caracteres" + +#: includes/fields/class-acf-field-select.php:42 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Digite %d ou mais caracteres" + +#: includes/fields/class-acf-field-select.php:43 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Apague 1 caractere" + +#: includes/fields/class-acf-field-select.php:44 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Apague %d caracteres" + +#: includes/fields/class-acf-field-select.php:45 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Você pode selecionar apenas 1 item" + +#: includes/fields/class-acf-field-select.php:46 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Você pode selecionar apenas %d itens" + +#: includes/fields/class-acf-field-select.php:47 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Carregando mais resultados…" + +#: includes/fields/class-acf-field-select.php:48 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Pesquisando…" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Falha ao carregar" + +#: includes/fields/class-acf-field-select.php:255 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "Selecionar" + +#: includes/fields/class-acf-field-select.php:406 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Interface do campo aprimorada" + +#: includes/fields/class-acf-field-select.php:416 +msgid "Use AJAX to lazy load choices?" +msgstr "Utilizar AJAX para carregar opções?" + +#: includes/fields/class-acf-field-select.php:427 +msgid "Specify the value returned" +msgstr "Especifique a forma como os valores serão retornados" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Separador" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Aba" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Posicionamento" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Utilizar este campo como um ponto final e iniciar um novo grupo de abas." + +#: includes/fields/class-acf-field-taxonomy.php:713 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Sem %s" + +#: includes/fields/class-acf-field-taxonomy.php:732 +msgid "None" +msgstr "Nenhuma" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Select the taxonomy to be displayed" +msgstr "Selecione a taxonomia que será exibida" + +#: includes/fields/class-acf-field-taxonomy.php:773 +msgid "Appearance" +msgstr "Aparência" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Select the appearance of this field" +msgstr "Selecione a aparência deste campo" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Multiple Values" +msgstr "Vários valores" + +#: includes/fields/class-acf-field-taxonomy.php:781 +msgid "Multi Select" +msgstr "Seleção Múltipla" + +#: includes/fields/class-acf-field-taxonomy.php:783 +msgid "Single Value" +msgstr "Um único valor" + +#: includes/fields/class-acf-field-taxonomy.php:784 +msgid "Radio Buttons" +msgstr "Botões de Rádio" + +#: includes/fields/class-acf-field-taxonomy.php:803 +msgid "Create Terms" +msgstr "Criar Termos" + +#: includes/fields/class-acf-field-taxonomy.php:804 +msgid "Allow new terms to be created whilst editing" +msgstr "Permite que novos termos sejam criados diretamente na tela de edição" + +#: includes/fields/class-acf-field-taxonomy.php:813 +msgid "Save Terms" +msgstr "Salvar Termos" + +#: includes/fields/class-acf-field-taxonomy.php:814 +msgid "Connect selected terms to the post" +msgstr "Atribui e conecta os termos selecionados ao post" + +#: includes/fields/class-acf-field-taxonomy.php:823 +msgid "Load Terms" +msgstr "Carregar Termos" + +#: includes/fields/class-acf-field-taxonomy.php:824 +msgid "Load value from posts terms" +msgstr "Carrega os termos que estão atribuídos ao post" + +#: includes/fields/class-acf-field-taxonomy.php:838 +msgid "Term Object" +msgstr "Objeto do Termo" + +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Term ID" +msgstr "ID do Termo" + +#: includes/fields/class-acf-field-taxonomy.php:898 +#, php-format +msgid "User unable to add new %s" +msgstr "Usuário incapaz de adicionar novo(a) %s" + +#: includes/fields/class-acf-field-taxonomy.php:911 +#, php-format +msgid "%s already exists" +msgstr "%s já existe" + +#: includes/fields/class-acf-field-taxonomy.php:952 +#, php-format +msgid "%s added" +msgstr "%s adicionado(a)" + +#: includes/fields/class-acf-field-taxonomy.php:997 +msgid "Add" +msgstr "Adicionar" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Texto" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Limite de Caracteres" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Deixe em branco para nenhum limite" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Ãrea de Texto" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Linhas" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Define a altura da área de texto" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Seletor de Hora" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Verdadeiro / Falso" + +#: includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 includes/input.php:267 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Sim" + +#: includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:169 includes/input.php:268 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Não" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Exibe texto ao lado da caixa de seleção" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "No Texto" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Texto exibido quando ativo" + +#: includes/fields/class-acf-field-true_false.php:165 +msgid "Off Text" +msgstr "Fora do texto" + +#: includes/fields/class-acf-field-true_false.php:166 +msgid "Text shown when inactive" +msgstr "Texto exibido quando inativo" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "Url" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Você deve fornecer uma URL válida" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Usuário" + +#: includes/fields/class-acf-field-user.php:393 +msgid "Filter by role" +msgstr "Filtrar por função" + +#: includes/fields/class-acf-field-user.php:401 +msgid "All user roles" +msgstr "Todas as funções de usuários" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Editor Wysiwyg" + +#: includes/fields/class-acf-field-wysiwyg.php:359 +msgid "Visual" +msgstr "Visual" + +#: includes/fields/class-acf-field-wysiwyg.php:360 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Texto" + +#: includes/fields/class-acf-field-wysiwyg.php:366 +msgid "Click to initialize TinyMCE" +msgstr "Clique para inicializar o TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Tabs" +msgstr "Abas" + +#: includes/fields/class-acf-field-wysiwyg.php:424 +msgid "Visual & Text" +msgstr "Visual & Texto" + +#: includes/fields/class-acf-field-wysiwyg.php:425 +msgid "Visual Only" +msgstr "Apenas Visual" + +#: includes/fields/class-acf-field-wysiwyg.php:426 +msgid "Text Only" +msgstr "Apenas Texto" + +#: includes/fields/class-acf-field-wysiwyg.php:433 +msgid "Toolbar" +msgstr "Barra de Ferramentas" + +#: includes/fields/class-acf-field-wysiwyg.php:443 +msgid "Show Media Upload Buttons?" +msgstr "Mostrar Botões de Upload de Mídia?" + +#: includes/fields/class-acf-field-wysiwyg.php:453 +msgid "Delay initialization?" +msgstr "Atrasar a inicialização?" + +#: includes/fields/class-acf-field-wysiwyg.php:454 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE não será iniciado até que o campo seja clicado" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Editar Grupo de Campos" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Validar Email" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:573 pro/options-page.php:81 +msgid "Update" +msgstr "Atualizar" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Post atualizado" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Spam Detectado" + +#: includes/input.php:259 +msgid "Expand Details" +msgstr "Expandir Detalhes" + +#: includes/input.php:260 +msgid "Collapse Details" +msgstr "Recolher Detalhes" + +#: includes/input.php:261 +msgid "Validation successful" +msgstr "Validação realizada com sucesso" + +#: includes/input.php:262 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Falha na validação" + +#: includes/input.php:263 +msgid "1 field requires attention" +msgstr "1 campo requer sua atenção" + +#: includes/input.php:264 +#, php-format +msgid "%d fields require attention" +msgstr "%d campos requerem sua atenção" + +#: includes/input.php:265 +msgid "Restricted" +msgstr "Restrito" + +#: includes/input.php:266 +msgid "Are you sure?" +msgstr "Você tem certeza?" + +#: includes/input.php:270 +msgid "Cancel" +msgstr "Cancelar" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Post" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Página" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulários" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Anexo" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Todos %s formatos" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Comentário" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Função do Usuário atual" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Admin" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Usuário atual" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Logado" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Visualizando a parte pública do site (front-end)" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Visualizando a parte administrativa do site (back-end)" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Item do menu" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menu" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Localização do menu" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menus" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Página Mãe" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Modelo de Página" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Modelo Padrão" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Tipo de Página" + +#: includes/locations/class-acf-location-page-type.php:145 +msgid "Front Page" +msgstr "Página Inicial" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Posts Page" +msgstr "Página de Posts" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Top Level Page (no parent)" +msgstr "Página de Nível mais Alto (sem mãe)" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Parent Page (has children)" +msgstr "Página Mãe (tem filhas)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Child Page (has parent)" +msgstr "Página Filha (possui mãe)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Categoria de Post" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Formato de Post" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Status do Post" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taxonomia de Post" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Modelo de Postagem" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Termo da Taxonomia" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Formulário do Usuário" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Adicionar / Editar" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registrar" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Função do Usuário" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "Editar" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "Atualizar" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "É necessário preencher o campo %s" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Publicar" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Nenhum Grupo de Campos Personalizados encontrado para esta página de opções. " +"Criar um Grupo de Campos Personalizado" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Erro. Não foi possível conectar ao servidor de atualização" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Atualizações" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Desativar Licença" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Ativar Licença" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Informações da Licença" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Para desbloquear as atualizações, digite sua chave de licença abaixo. Se " +"você não possui uma licença, consulte os detalhes e preços." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Chave de Licença" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Informações de Atualização" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Versão Atual" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Versão mais Recente" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Atualização Disponível" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Atualizar Plugin" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Digite sua chave de licença acima para desbloquear atualizações" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Verificar Novamente" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Aviso de Atualização" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Clone" + +#: pro/fields/class-acf-field-clone.php:808 +msgid "Select one or more fields you wish to clone" +msgstr "Selecione um ou mais campos que deseja clonar" + +#: pro/fields/class-acf-field-clone.php:825 +msgid "Display" +msgstr "Exibição" + +#: pro/fields/class-acf-field-clone.php:826 +msgid "Specify the style used to render the clone field" +msgstr "Especifique o estilo utilizado para exibir o campo de clone" + +#: pro/fields/class-acf-field-clone.php:831 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Grupo (mostra os campos selecionados em um grupo dentro deste campo)" + +#: pro/fields/class-acf-field-clone.php:832 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Sem bordas (substitui este campo pelos campos selecionados)" + +#: pro/fields/class-acf-field-clone.php:853 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Os rótulos serão exibidos como %s" + +#: pro/fields/class-acf-field-clone.php:856 +msgid "Prefix Field Labels" +msgstr "Prefixo dos Rótulos dos Campos" + +#: pro/fields/class-acf-field-clone.php:867 +#, php-format +msgid "Values will be saved as %s" +msgstr "Valores serão salvos como %s" + +#: pro/fields/class-acf-field-clone.php:870 +msgid "Prefix Field Names" +msgstr "Prefixo dos Nomes dos Campos" + +#: pro/fields/class-acf-field-clone.php:988 +msgid "Unknown field" +msgstr "Campo desconhecido" + +#: pro/fields/class-acf-field-clone.php:1027 +msgid "Unknown field group" +msgstr "Grupo de campo desconhecido" + +#: pro/fields/class-acf-field-clone.php:1031 +#, php-format +msgid "All fields from %s field group" +msgstr "Todos os campos do grupo de campos %s" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:174 +#: pro/fields/class-acf-field-repeater.php:470 +msgid "Add Row" +msgstr "Adicionar Linha" + +#: pro/fields/class-acf-field-flexible-content.php:34 +msgid "layout" +msgstr "layout" + +#: pro/fields/class-acf-field-flexible-content.php:35 +msgid "layouts" +msgstr "layouts" + +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "remove {layout}?" +msgstr "remover {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:37 +msgid "This field requires at least {min} {identifier}" +msgstr "Este campo requer ao menos {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:38 +msgid "This field has a limit of {max} {identifier}" +msgstr "Este campo tem um limite de {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:39 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Este campo requer ao menos {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:40 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "A quantidade máxima de {label} foi atingida ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:41 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} disponível (máx {max})" + +#: pro/fields/class-acf-field-flexible-content.php:42 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} obrigatório (mín {min})" + +#: pro/fields/class-acf-field-flexible-content.php:43 +msgid "Flexible Content requires at least 1 layout" +msgstr "O campo de Conteúdo Flexível requer pelo menos 1 layout" + +#: pro/fields/class-acf-field-flexible-content.php:273 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Clique no botão “%s†abaixo para iniciar a criação do seu layout" + +#: pro/fields/class-acf-field-flexible-content.php:406 +msgid "Add layout" +msgstr "Adicionar layout" + +#: pro/fields/class-acf-field-flexible-content.php:407 +msgid "Remove layout" +msgstr "Remover layout" + +#: pro/fields/class-acf-field-flexible-content.php:408 +#: pro/fields/class-acf-field-repeater.php:298 +msgid "Click to toggle" +msgstr "Clique para alternar" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder Layout" +msgstr "Reordenar Layout" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder" +msgstr "Reordenar" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete Layout" +msgstr "Excluir Layout" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate Layout" +msgstr "Duplicar Layout" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New Layout" +msgstr "Adicionar Novo Layout" + +#: pro/fields/class-acf-field-flexible-content.php:628 +msgid "Min" +msgstr "Mín" + +#: pro/fields/class-acf-field-flexible-content.php:641 +msgid "Max" +msgstr "Máx" + +#: pro/fields/class-acf-field-flexible-content.php:668 +#: pro/fields/class-acf-field-repeater.php:466 +msgid "Button Label" +msgstr "Rótulo do Botão" + +#: pro/fields/class-acf-field-flexible-content.php:677 +msgid "Minimum Layouts" +msgstr "Qtde. Mínima de Layouts" + +#: pro/fields/class-acf-field-flexible-content.php:686 +msgid "Maximum Layouts" +msgstr "Qtde. Máxima de Layouts" + +#: pro/fields/class-acf-field-gallery.php:41 +msgid "Add Image to Gallery" +msgstr "Adicionar Imagem à Galeria" + +#: pro/fields/class-acf-field-gallery.php:45 +msgid "Maximum selection reached" +msgstr "A quantidade máxima de seleções foi atingida" + +#: pro/fields/class-acf-field-gallery.php:321 +msgid "Length" +msgstr "Duração" + +#: pro/fields/class-acf-field-gallery.php:364 +msgid "Caption" +msgstr "Legenda" + +#: pro/fields/class-acf-field-gallery.php:373 +msgid "Alt Text" +msgstr "Texto Alternativo" + +#: pro/fields/class-acf-field-gallery.php:544 +msgid "Add to gallery" +msgstr "Adicionar à galeria" + +#: pro/fields/class-acf-field-gallery.php:548 +msgid "Bulk actions" +msgstr "Ações em massa" + +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Sort by date uploaded" +msgstr "Ordenar por data de envio" + +#: pro/fields/class-acf-field-gallery.php:550 +msgid "Sort by date modified" +msgstr "Ordenar por data de modificação" + +#: pro/fields/class-acf-field-gallery.php:551 +msgid "Sort by title" +msgstr "Ordenar por título" + +#: pro/fields/class-acf-field-gallery.php:552 +msgid "Reverse current order" +msgstr "Inverter ordem atual" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Close" +msgstr "Fechar" + +#: pro/fields/class-acf-field-gallery.php:624 +msgid "Minimum Selection" +msgstr "Qtde. Mínima de Seleções" + +#: pro/fields/class-acf-field-gallery.php:633 +msgid "Maximum Selection" +msgstr "Qtde. Máxima de Seleções" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Insert" +msgstr "Inserir" + +#: pro/fields/class-acf-field-gallery.php:643 +msgid "Specify where new attachments are added" +msgstr "Especifique onde os novos anexos serão adicionados" + +#: pro/fields/class-acf-field-gallery.php:647 +msgid "Append to the end" +msgstr "Adicionar no final da galeria" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Prepend to the beginning" +msgstr "Adicionar no início da galeria" + +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Minimum rows reached ({min} rows)" +msgstr "Quantidade mínima atingida ( {min} linha(s) )" + +#: pro/fields/class-acf-field-repeater.php:37 +msgid "Maximum rows reached ({max} rows)" +msgstr "Quantidade máxima atingida ( {max} linha(s) )" + +#: pro/fields/class-acf-field-repeater.php:343 +msgid "Add row" +msgstr "Adicionar linha" + +#: pro/fields/class-acf-field-repeater.php:344 +msgid "Remove row" +msgstr "Remover linha" + +#: pro/fields/class-acf-field-repeater.php:419 +msgid "Collapsed" +msgstr "Recolher" + +#: pro/fields/class-acf-field-repeater.php:420 +msgid "Select a sub field to show when row is collapsed" +msgstr "Selecione um sub campo para exibir quando a linha estiver recolhida" + +#: pro/fields/class-acf-field-repeater.php:430 +msgid "Minimum Rows" +msgstr "Qtde. Mínima de Linhas" + +#: pro/fields/class-acf-field-repeater.php:440 +msgid "Maximum Rows" +msgstr "Qtde. Máxima de Linhas" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Não existem Páginas de Opções disponíveis" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Opções" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Opções Atualizadas" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Para ativar atualizações, digite sua chave de licença na página Atualizações. Se você não possui uma licença, consulte os detalhes e preços." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Exportar Grupos de Campos para PHP" + +#~ msgid "Download export file" +#~ msgstr "Download do arquivo JSON" + +#~ msgid "Generate export code" +#~ msgstr "Gerar código PHP" + +#~ msgid "Import" +#~ msgstr "Importar" + +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "O campo Aba será exibido incorretamente quando adicionado em um layout do " +#~ "tipo Tabela de campos repetidores ou de conteúdos flexíveis" + +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "Utilize o campo “Aba†para agrupar seus campos e organizar melhor sua " +#~ "tela de edição." + +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Todos os campos que seguirem este campo “Aba†(ou até que outra “Aba†" +#~ "seja definida) ficarão juntos em um grupo que utilizará o rótulo deste " +#~ "campo como título da guia." + +#~ msgid "Getting Started" +#~ msgstr "Primeiros Passos" + +#~ msgid "Field Types" +#~ msgstr "Tipos de Campos" + +#~ msgid "Functions" +#~ msgstr "Funções" + +#~ msgid "Actions" +#~ msgstr "Ações" + +#~ msgid "Features" +#~ msgstr "Características" + +#~ msgid "How to" +#~ msgstr "Como" + +#~ msgid "Tutorials" +#~ msgstr "Tutoriais" + +#~ msgid "FAQ" +#~ msgstr "Perguntas Frequentes" + +#~ msgid "Error" +#~ msgstr "Erro" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "1 campo requer a sua atenção." +#~ msgstr[1] "%d campos requerem sua atenção." + +#~ msgid "Disabled" +#~ msgstr "Desabilitado" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Desabilitado (%s)" +#~ msgstr[1] "Desabilitados (%s)" + +#~ msgid "'How to' guides" +#~ msgstr "Guias práticos" + +#~ msgid "Created by" +#~ msgstr "Criado por" + +#~ msgid "Error loading update" +#~ msgstr "Erro ao carregar atualização" + +#~ msgid "See what's new" +#~ msgstr "Veja o que há de novo" + +#~ msgid "eg. Show extra content" +#~ msgstr "ex.: Mostrar conteúdo adicional" + +#~ msgid "Select" +#~ msgstr "Seleção" + +#~ msgctxt "Field label" +#~ msgid "Clone" +#~ msgstr "Clone" + +#~ msgctxt "Field instruction" +#~ msgid "Clone" +#~ msgstr "Clone" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Erro de Conexão. Tente novamente" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-pt_PT.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-pt_PT.mo new file mode 100644 index 0000000000000000000000000000000000000000..f21656716ca24582a317647a618ff2f346dda724 GIT binary patch literal 52552 zcmb`w37A|}wf=p8Fa>0kK_*WEAqga%gh4QbKxYnQXww}cpv3B~>h2=dRZUfOk_H(> zL=Y#OWs(3_1jUQs1d3N}MCD%RS)Aty98s>Ke!q9Ey-%I$bkO^MzIt-{J$s(kUTf{O z_u2X00h8XG@VjH@Bsl_Ha8Qz5w@Z?|=s5W%$u*}Y$>HF&;2z+Afct~*1($#y2cHe@ z`urrB3?3G68n`#^x!_*l>EL1DO7LQ^2+jq+51tP0H$O=zI#~m%ydro9cm=p8IPEmz zfOEjzz%#+s;Bt`aCT|93gKq~_k57ZD@0UTPe+*PTe+upn{uO){xbuP}IS||r+y^`c zRQQRY@;NQ|FAM(bgZsq+E5ZK~@L=M<96SuX0aU#{04m=Hz;A$`0gnQ2rP0d&zd(gQ z8t_{Ie*sRx|1Y5G_nd{^pR>VE-19;8>r25|;5Fb$;0M41z+ZuC|KCBCv)dU-atOFT zcqlj%OugHz8O?LH-hS~J3!@kAE@{bfk%K32mB$Z^#1^re!nxl z-UkOf8dN{c1r={OsCegsqL+=}Vz3h2_Xd0@;G+S*0jm6;fEuq~gR0jbLHYj!R5`oS zSsMQ%zYr{<={E)cI;i?x3~HRN03q4rb>QLPXF=urQ&9On z2`c_hi`>0CsCFF)ihfg2^_ds^PXp)RUID5eTS3+93Q+xXEjSgt5mflcK-J?B@M!RB zpz8a-pyI3ZRNevL`QURwjoT%`|5{M--U6!L?+W1`29^IK;8O7Opy=e;O!DV|v%%%y za*!#Rybe@*9|eyDzYeD0pFq*WL1ZF4A>dk2?XQ4}e-*gR0MGK=seJ!1KVL zgXe&YRyaR;JGdL}{{$89gP{8NVNmV=5-7U+F1S1R3sB?pJ8%~GPw*IU)=E$R0#NnX z2&(_<;GW=>pz8DL;D0lyd4CTmzV!)E`F92R z`v!atcohCegQDj}pyXKzRKHvTYTRE3?gQQiD!=!EiuVAhary#yJop2UDVXfNmazi6 zK-KShQ2qEeQ1!S4RQ>J*HE#ET%J-w--r&Qa`sGWY;{66x`oDmugMSD20#EC5x>yb> z-Fi^v^@96=Wl;6s3M!xLz^lQxfXeU47kEBLgR0jYQ1v+#)Vy8&Liegy6hJ^{`FlXYINx!}Gy7lNwC8c^jFK%yoWg4@84g39lLZXdrosCH}tRiDd1 z_4hTP+Ib6j68LWLK=23PDEKFE7qAL3sC{)%P`Q2~$)2)u7t39#s8Gp!&NGJ`21m;2S`V&#j>5$0xz*;CDc^bJ7N{?_QwF z+YeMf90sbtW`Zhj4yf`^3GUNCmA@EN`Q4z(e+j7a>jAF-RsL&1<$o`D0Qev%y8Rre z{@Uw>UhaON@_8<({+kD?pB8|ULoWoC{|KmZUmo!Fpz3oosQm5$=YjWy@SlJx|M#Hc z{S8z-_Bz-7j{@o9WCo~wF9Tr_$#o#4n0yP|8JvZ1c?mcNJP3R}C^~v4sC+*K9twU9 zR6U;v?x#UWB{>LTz8`oYsCHfw+^+!-#(fK@{{H}Y82B)#a=stJp9IyuyUmqu`33M&1}LB+c!gue|Go!`Xoc{^R; zMdhJZJL$KZY^I1T)7Q0adUD!->el{2~EbaV(PI-3nDpCzE? z^%_w9y$)16Hh>zJ7lX%v*Mb`V_XqqqsB-=%;5R_g>5sq@!KXmAYgVuK^NFD9vm8{s z^`Oe%1a^QU!F>m)`o0&`_#F*eI+;zd_TAx{5A+HO{NaG zel-ft$9*ff0DKG-Jsdjd^YLs@{a*rAzn6mQhgXA|KW_m=H}3=Y03QwhUkUzCfCu2e zd)f0l3{?D+K#kvOQ2n*(l_`d~Ix*Ne+;CqArW1#x+2cX7f{|gfO~;|3Yb(p{@$SKw|~IH zL50lGo_}>Jo-#-qD zejfuhPksWboxcs3Z1sBW530Y92Gw83fojjG;2q!+Q2GB7Tn+9&>h0bLTKhoJ^=44z zybV--w}Wcu-JsfYFR1uqp!)aAp!)Uepz?hz_|Lr9)6E7Iej=#xIu)D-t_ODpF9B80 z%Rr6mt3Z`|1E_Mgff}ECLDlQSpyH2#iuVOj^z?O5`TZEwxc)5Q??A=>Yrx$u@p>Hq zJ`evx!IQwX;CVFYDsU?9?_cKqyz}MWp9g}=@Sg%61`Y=Qmj}EaR6X7Sica1GitauJ zz6Ja)xEO3+;e6u5p!(x)p!(y`mtngA7lNw)?pJ#G`-5udRB#PA6IA$Ca4mQxsB!sn zz@LJmkEg)H!98E@{WuMLHtv%^)oUdvIvxbo@0Wo}_ge5^@EyVbgWz*;KLRTK4?vB_ zlc3`L9aMij`zr6(Ip86{0K&5{aRJlI_ zMOROQqKC7tcD{EmcslOu!6U&hfa>?hLB;zgcqq8fD?PvI;L*6x0Oj8Y?hd{b+zq@c zxUUQNMo{_O2<{5r9q?Z87~CHOr-6@wDY(-$p5IhZ^*9bx`xbzT*9B^vHiOFVTJTxm z>%dju%_00(0sjtaJodZR^P2+hf%`;ocW?oy`LHCo*Mb_44WRn33TnKr234OMLDlCT zP;~kUQ1kuspz`}2sQjM-)gL>(%G2)wo`L&FQ1M?J{4WR9KW_pR|8`LM-VLf<9|G0h zPl1!cZ-T1FkHNFSCqd22&g(qgYEbn%4?GU6f_s8*5B|4%c#QYR}5o zdj2m0C*d9d)o+!6Bj7H$F9SutSAsi(H-S5W?*LW5ZJ_AjJ)rWr58NC4P{4;l_3M{F zrT-?V^pAmR|98Q?z@LKqfWHTokCfbJ0lR|g&jUf_J3Y8h0@aQc;9Br}@B;ANp!#X@ z>%BeGzO z{~A#BdNDW^90oN`Zv@p3cY$ihy`b`Y2vqv7f@<$iLiis-_&-6>&%tl-@Dx;kcYvzz zNub7Q4XAwAfiu93;0fS0;ECWzK!yJnRKGtB?hj6SqvvxlDEC}&8Mp{M0K67dc{hQo z=WXDA;C-Otj|KPFK-K?e0sjPQ9Cm(_*XKxZKJI0p{9gvD{x=2uAjlL*z6gr1z39zJ zawa$e&H_IOO3wTk6rD>LDg9ZX`n3pN1a1N~F5d-Jzn_5`m#0A0fA_a~{SN^T#61I? z3oZaPUxvWvf^P@Kj~@UJ0>1$&zsEuK-#@_=-2H7KAJFmvSKvPcc7Y!R6@T})d;jkX zsy;`6s?YJD`tvkU@m7Hv?;h|_@B&crw}2XltHH(KtAqa+LDld3!Tltt{+M)w*LN@Q zIk=AmMenD8w}Fd5#rr9!di(|yeLM|n9QVA@`P3nx=D~7M?Hd6*z;}Ym_iLc~<+q^Z z-%d9<{iLAUH4tzssCr%tYJA=St^?l%-U|K=JRH2~W-tH4p!(wxQ2p_F@G$V3pz8TY z@N6)-#pT2*@D(_Vp!(@opwj;id^Y$LD7pEpcX+$!fok`u!My^MTv!V#{zahp#MPks z?G2#Xdo!r^ehAb&`z)yX{Q=Z`c{<>}w|e`hf-2`k@MLf?sQg9)UInVZUk9qcZU*lL z-wTQlp1aN4aRI3O`$3gI8r;``N`DKe{(TQ9I{qY>f=_^|=e`WO#`{!I`JMr)AD4g! zgD(KpZ-b!5rwS_G7Et~8Qc&ez1*-hF2KQZ{%Ks>+@*f3N{trO)%igzp{s)5^@7bWr zxdPPuyBbu#-TF)s*|C8XJ;8(!{_&u;2JQL!6KKLeZ4)}Rc@%{m- z9ecdn>%A|ie2xZH?#ZCyEe+vo1NH^n0xJG>pvLp&fcJu;uQAZ*2|N<_-$AwG@b|c0 zehfGncO5(mycFC8ya`mfw}Q(5ZczRD(cu3@a0TvfgX)i??_myr%RuG7|9d^(!$9RT z4OD;60rvq<0W}`WK!x{!>h}wRyB5MnLFM;Ka5ngQa3=V%;QtFy_4_@j{@Ud~ecTTO zB}Zn0%6}24@md9{zt;sk7d#R7OTZ5BO`y_^fvV4UzbTkvxI4%TL&I`bk!2wX?cr!Q$ zd6dl|GYF^(5impBnE(CuAs$R!`&~XL0KkgDJI@u6jmsmT`uA(#so<^;`1)xfsCHfkie7F4)&4JnqNm@0`+`-#huVYz(L$=|I7994}%ME{~8os&Gq|@sXQ1#mYs$bs#eg(V%{1{jr^M089u#eBF;Ir{x392710M-5r zLG{nIpyt8bz)9e{LDAX0!T%xf2;5%;)xVE}hk;Ll8s7sy<@7!s6dgZ5xX%SO-#3AW zf|r2DfNugtHxGcy=TT5}|I-luH}C@7=_6k6%fUl%zX{w0d=EGcycbk`z7DD$KLnox zJ_#!SeLwB_rl7)~2hIY|0>y{7fa;f5fU4gO;I82Ppz8eqsDAk@sPexP@J|8v{*3qI zG2r2ZF9y~Ajo@_f@_=^+`~oOC_zSoPc=%_1T#o@&zYg$Na1nSUSO#|kUkR$duMKz; z_yyc|gQtKOKk9UOA2-aQ0+e-6deqM>fg&j<@0jz zeDE4@C-5hr(*G>rlw3DmFC!REq?@Eay>{`X@1I`CK*Jl~oNd@f-xAbwBqTLpdrKhdkkdIrx0glpd3 zg#R%i?^l9l+&AEV6}UU@?|_;Q`u&RMhq$|V;_s%A_D%R5%=>jbujV-g_gvyd~@_gdV4)H!4!pgXx;QedFIWEL| z9_}iSc#wY6h%*3g#P3G)L1zF@#9ws(2K+w-UJuss>*moNgj(g}W5OMB5+GJI~j74kM56hIoQc^E?#d&IezCdq1#Of&8Y1dg%Sg+5|g{u2Dx@m$IKH$zwxd@td@ z<@p59^2FcIi8F|!i)Rt< z_wxLMN5B1u|0as9hk3riGZp_o@Z605O2y%s%cI}AkcZwYgkKCE&jYJW z&Lymn3!ldOO#I)-qu;H#|C8qrJRPKc9BhL6?aTY$c>aU;CE#0vzrtS3`z1X6_}?D< z&r`s--^qj@h+l~~h!oSU{{$|<-9y;_hWL`nV?3wf_d%Xr2!Aclk-Yyi#JL4`C(l}* z@8N$fkA8>q6nLJJgWsw6zZ`rvcpcAccxG9M|Jg?R2G2)uUJqVE_zQVo55An|T;5*| z?gn;(@hACxQgjGO`|e!$2l4to?(g!P!}AWpui(+|8lGR_cOuU#@Jo3v4`FxXr{8>@ zAMotXGXuX#AslB?*B^eb!v8JcQG^}Kvk>=%JUzTWZ84B%A>9((2NQNSkA8E5zq|bJ zU;|<&QE#P;&(HsUpLQbgiXi29K4KYGVg!kS;+f|77P72#6LZ_pN0EM!u6ZSvv+v! z0$+mr9G()-dx-aTP`|SY`py#Ei+J8&0y zPU1P2bowpe`8&_I@Y}+30?&7F?@ahvJbUn*$MZ}4*7H<(q!TSC-kZVI;5;7vE+(FS zAI1H#;P?4}@_!ERf8;qS#Jhp_3-RAO#94{|>u_(z{lXAO>F&V2CdB!$Ji_m4@Ebg@ zBkUfYKGJ*=d@i_&=P1JN;CVLh7xDa_uq%09#=G=N{eG!*;E#D8<++vTQv6mC=kMTa zdA`Q;PM-he86td79{oPx(DwJ`q#NWpnz+B<>E-!0&sv_dcupnu2A=bHkH0VS@)Mq& z@Oypq%;D?EPrn-jzMpvC!~Hq%Cp;hF`3&w$2|t|oXYu}N@NHoH?aIpmA^kz%A%yqw z=ywY46GGVAz@zYgI)r%)*MBdGj({tO`?hiM-Wu}xVTkh&@RL063+`Qr|DU|SIJjrx zzJm8#f?IGrc^ty?WX^9x$oEk2cGA3$XV>6&JMq?pxOd@y0MA!&zn|v?ygv?}&+}v6 zXYu@kcm3YT`-gb)zt@C3x8V7Fp3jHC?}JU^J}ZRF`&!=Lj^CSt-xU0Q!?QDfd*XK^ zxNiviAKvvF#eGG1pThgayuS(mlX({LoW>J>d&d{>IN}Wv|CPKS%k$L`R>42zxexbK z;Ql=Nok`pWzVNOJn!MrZw`JhB+Z>X_qbOw8Na{c zeku5u;3xP2euo72BI5iS)bB~~%i;Z-0p))N@2iQY-#)y5nCJKIOuhwPAKqVz z{}DVF68AYg$Kd~4p4;#{6TAl0@3MgIVoY$4g#4r5+i@Qh;(Z;@H;4Bhfj8mqCH!pg z3n4)fOnI&f?qpgq?Jt)q#YS2$T{Kdzm(oJBS*kY6wQ4f0krs-@Qqf*2^-`fYnwGYf z8_kA%LVV&h(@Lq(Xr_2JN|jPyO#I9-ER)TJ%19|KXSo%V8P!@^DfE^qGwromZdOXX zHV27hHJzCppLQ0D=`vM2ndhGQ+QjNF=v}z9Ua!>`%;{a&kuI){RElY})=Uc{%|W%W zuh1-|Bf~|(aG`HgVW8BJcBv_)v~RG~w<#?Q6w1}KR!@ti0*zx=xi%%gxeILy_83^i4>v6RH#WC8|iRuOR3&JQc3$uh2}`T#88g(4WUr7Y|KgvX>W<%Ei0daLZwowkA~qyZW=VwOKDf zXG7}gVUZ4%VJI3?lFq)qTD>Sr?2Ns?%6r&7XrlZ}>4L^^p_=wp3XR6;Q~PQo)#lWN zGp03WE|{Z$h5vT6VlfeAO}DO`4iVHSPIaX%wJm8sln}bq=(b_8=cG#+3wvEwu23g( zSUE%sT5rl?x%Y>8t|@Ja7|2+O@O4+Zyj~j_&SI>x?ltGSnkV!gH?JzGyrSl;hZyw{ z252D5hYExNQLNc?GPt<_nH1B-P9-*TxaJ@8C9vKq1 zP}b>SfkEkoG$E0p-g1>f%2jn^s@g6nq=WTR|LIewHKs1?s@GB`K!Z_EYyFx@3+5D< zt{ckD!L*lwNTKIOtqSRihKi-lrAiI2IM-l5n+s(aMx`_>t4IGx)tFGhXbr|OR1;(C zr`AOyWMx(8>nk-HM##-U$cLQkRGK&?NRM^}zGzcUO%}h2T}p6SW9&UJT!Z^HM~8#6 zS=d^u)`rT#Il>%I>$QqIp`+*jK36BCPGZ!}@s>e+g!T7)xH2SN^OMk=gz!rG9S6HPwg=svp991!Ri?~lK z%PKRS!o`(p7R0N3Dx*p4dtOQ@j15LuFVR!YW}$Cz2!5AzB0y?&L5)d(9H~_3dS>vk zmF8)^^dufC zYgLA45QZ@T*SC3UH8Wn^kt`aiY)Zv##W~C&3FwYylez0GYte`~R!M#*i#4zU*Ptp3D(pTPVi;>)n2qYq=l=gZvXavK-I5nCD z`p#yBh|FYuV8J0}4cf96lrJu&J>}}?>cvYb#BzneY6AmEhQ$?ivhi8HH_QiRBj*F( zs}^D5i))oiVVJNbCFC;%5)p}NV0 zmeHB9C&d>D2UNaQ&2D3`t7-!fAwH&~xGG1U^uKck^^Z+0qDb&7swn^xfJ_KE;dAhR zx=lQ#0_$f=Gmo76Xq0NhWd~ORD&^tcTA@yWs{=hMEIQP(rZF$1nJGlYl4?V?;!Wr$ zIW?#O3t~ROZ8ebmEkpqqWOkTWi%04rjMVxuiLUi9={85Y4vwAqoZ})2w`o*1VpP*y z^8;$=H^3FU(4JHo$*!PPNi@~^C2lfFhCm#l;}MizuZ~S$&{I#?H1+9NU@Zzb5*^#eF*Y)xI!Owv`g7_C3HG?V2xpEZmHEbp~^J|t>YzbTltKH5_XVJ zcS#*zXijfvd}Gp5q(&+l-_x_YO%#;G=qD|K@Ks1#sE>n%_tc7o(eV+gq_ogAk`?1p zqjGGvKze)g_`oft(xw&2y;6M=A1+zSp7KyEd^-=-wJ>D4b*_Gf&~CVXb5iGoF(mfJ zw>4L$bw{qjYnbEX>!mn|(7IJ*1uqlE7%KPGDXPz6tqu+*@eU$a;0Re{ckDQFb)@NS zSY6iZgjo)IM|DlyQ6B0Y)iq&yYC{FA_TBcngIHQehFE%?Fczzt(%Ncev`34?Nicdk z2JSmFam^Lma(u=Z7elI9tn@r1+}3h0u0NKP`U@i!YUP;rl$dwWcjkde9x<1Al_YJo zI9y}S8$UKi3f-1#Be2K3Dg}2L?nryI*lqb6U(?DJIUUry4i)q-vxaRL*UaT=dAU4u zDQ{~8@mNJxw$dXrVP@j-4Ee%T0;H>aLE@gyz6fG5T6Rglq}+hziq|E)N->RSYDoTk|k(gVu1A$EE-O5ImXpFMVGfj#W zps7^u=}cPsvaJjCCrJ3#YfzVh2Xe;VeAQ^LUU2I*tUH!gN@`>yS;|y~Adt8yZpqRi zbOiqPBCWd-LkSw9Q5!GPo>)bMHz;{9u50OKCjp7+j(mh-plVy6q;2sMGpS&`Q1?n1 zl3t&gO`0tD&1jM=ZS)m}OSVo)mTv7U)%g;UUXuP9RT}TK{F0Y;xo&C;X@93l(Z*w> zN<}RW{?pnPWf1Q&w_U{bw@K;5{)P_Ey*EO@*`?9=>T0XUSyO zxBP_k!o>NMT>>wqKFOCxv&nV-UwDMft%=N$-ZF|au#J32TD!YHWV&>+gAOI z$Pk7sBWL|#Vb7Ax-08|Cj+&enR&|miRzq{x{PdO%p=PQkIYXohiRH5<%)Ph?`Ya3vqhlp=-1=63#(&@CeuYorT(FPeL;oJ)=$f#NieJklJOp} zU9&FJKhat|FW3zema=Z3K{3$!VV14BhY&-J;Zk3@pY^GhvjsPoSO?pxnB~PLNr7@> zzVaAScvuFDbToXns@+^Jq+KhzQq0C@b-obUmi8Am%WR9#tD!xhchM_m&@!NrXz+vS z`jxy;C0kSSB{PF+%r#o_mY1p}t-6$XvbU}SOA`U=+MC_Ms7C3ecQvjlEa~G3lCxNg3I)-;L5TA&9k;We3xuWt+5wTTm8Ey&Z8=r_0E? zxZoKHI!@xsjSKr$OU)fDC(P2ok~A<4)GHFz*~eG~lVg%b8%R+9#~YcnZ)aAzRV5T5 zSn&XM|72CEI?x~O4N%!!X#%LS>u zIxDnSF@{yr`+LlcWUsEoniXF}q-BImObVkbLF~7PfVFGv)oX;kjy}N3xLVxRC^9Hf zBeJ3oh=(DM%8e1yvX^14)kFqefle7cKs)7EPami3&>!oaEY-!BQVz}@kzZfkGv5wEBPCa?> zCI?1XwMLz?Kj}&>tmI5JDAsm!Qh7{g%z3WMq1r4?t+kG=)&{q?HaK#v4L+f@!4+B? zT;p3?u4b*(29nf=WVPPh@K?Ur3D~>>k;wdLYKEEq=(GlgX4YH~hjTn;ceb|GR3<~X zwEnP~3&y+P%-I^<$0^<7T5-y?fHcy^udPBn8ounQHU`_-#2E?{KeAltQ%U;3w%swi zWD7KRNC&XKYH-;UYa#u~j2AMHm>z)Y29ru>Xf~JXa5ZgA&77q0WDOSJup%Q5Ic zdkbqab4z_|4Z6IT&m~VL-ED@{>a)6MA~1|DY(l`?nakU+ZqzHbOGd4NW@%j+#;e0B z(;e1E=3vvh7WYMX6E}z(;Zcaexm{wpey@3xc^`VusRFR0Fer$YsB?+F#uI=58v4?=EM0Ks^ilO5r9sQir@WN1wr<;e5Jj-KTto7G*$7KSvNG8*i5G;UoVKwO zm~m?-T0t&=;qP&KT2(>hRigT>)eg3tnTd8{`6JyoS=--_>|*k)rIQWWq)gWG2W=|a zYqr=P(HtfoAZVzSl@UiLR#Q|n09ieV&OVyOC)vb9++v**QpGq*&k zzjYy<*yl0d%*5#~=~P*;ZK#;PZN0I1T`A%>lNgN#`whjU3!z)6SjJMb25S{9(5;D? z=^+V+Zwi$L1L`MmSagj)U7(X4CN_f|KwMCg6LBduC7dSch`G@KO7cCspnYsAVW#TU z>?7$2mO?iF!g$40PA;w0sw92`%b%t2O_HpH5Lb05>ZncCctLAk8nq`~?2Bu#^g@?v z?H#s6N8Po|rij0@)Ug$AITXcQ}SkR@rP8XsQ6IiHL( zvw_lI-Wn#l>w`&~pEy6o>Kss&fpmlcGb?m-#|8=$tPO+D2iZSdW6RRTLFz3Hl&e)K zUSzbn45PO-HOD}bE;o54>rl*Usc$8>IU2aw8BW&eNP{2g=+%*fwgV;cWK%rHWXDM? ziDX~g-)a^bn;IP*9Rx6BsHzII0YvGBxS-%B>j!rJZ6RZPTf%&#H%@jar=s0E=Av~B zWQO=NHIsbG^^AW9YrX_h#`%jfMoXj>>$TySqvkhWY7xsIc67-ygiWEI18nUwZPx|0 zkmY)Om4=8z;v_&ct+=N&HUeys9Wkg)ICZ+q@-+iZ@eI5gSVuSpE&8(?)L@ccpeqKaqfo0)5)n0pSebHSi3{jaz zssoKf?BX*;W+p9PrjZyS%aQD4qnkydpbA58X`n|Xl_HrJ$ZdYK+ha&A!OY8=#3O zz$ZQt7qmg?5L%&cv2&zudgRoHS$R0FCL@4?``A?SlO!G#RTMi*GRxM6W)cgb8Jz{a zPlIG#sQ|aS=@gCa&t-Iyk7EswO5^tRL!*z!e#j9!h39V4FoZ#ygSBEu$_WVPfN}3E zoPuGDLQLKYX~%_}#)CHL4(AHiYNUbXADh)$mxv#i-QMCVa#qklw4Y8?kd*$u8n(;! zLTt{6a;*gvImFIYuFK-Ein8+dj1cDp29wkrEZfNGrj6Q4+&FJiP&<5E2a6m_b3bCJTQJU zc5!l96)leBX%@$XD-47sV&m9BEZODZ)AF4W)a8wHr3$y}&OR8HZ;Ul>(psjfXQvsS zsl;|-6Bg-h5i@Y|EH~qzw&hcuL~}!}OaaVgq;)q-Ym=$6$`v^Iy(LA_vkmZSVRLx^ zG1r!D!`LN)f0DCE-X?0R*9ke3Cz*3K)ggM@KM1v+=R3o>4wxWmb<#vhX&1r`tCS}$ zaY!%h^db{brt+jL>bGrN?}?B^1{k__z)n%=0A-=t9%8a6c%x;og6rEPYop3U*C^-! z7i(f;0hmMVG~UHEPLEe~%Oz5=Dh!%5jXTGr51Hk|_JltfZNg=@gD6_k^6 zzBDfPZx;}}Xo^@&cHS0E3zb>91aqqqj8rx=wsy0}k#ysXCX49M%3~HLP?qizweUDu z?;03~k-J7JEMxWRXH-eXAqV|YSB8_dP>p+KJ6M@rHY$^*^i4BDld!Ce3?$vypGUPj zLPot%qK*J(8;*^UVdKgJC64li6Nn^Wk8e~BV#BXiEYo}@Y2G)}xT3G^k|y25g(2;! zBY>46Y?*1O>UQc2Vlu%g10yv>r<59>kJo69(sQ;$!yH8I)Y42DmZ9COxw;hOP)l)5UKro%Lp)03H`C6#ESsG4l0nx2C zB>Jnp=9Im=ZnTVLew4O*L?^~O^^F1E*7->{dr)qdTgrY`&KcGvNjH`q`_tlA<_!DU zdHPIxSc>yd1O7JnGoU|q3Vbw?KB(PZ!?2+1(K^vT$-tlWzW&InU+_1bYVtRvMx^?% zqhnEX-mEu$tEY!azsa-^sesvWRoiT9)AW$ZuHv<)u;rp=6;uE@Z=S~1^~5ozm?A?Q zk#`wmIT|NSWxT-~4{CxfY6HtCPWD*cOmz~6?}5U|!smHz!`-b~Z~&2D7QyYCO0!&> zs3Dnl#hCp}VOHm|o~B#aH>Uo<9u)UcF%-W{>gS^~D9>b#4);;+SOok4c6I;ga zo#x{&?xz@AP0UBNQMT+Fs8g1k@pOw5Hm7_5gPB_$pks1j zN|vy2B8!-=HAc$q1k50;-uCSnTgo*)A!8(bLnGKny;-tDP~ud}f8$gLVidV+bOn8l0bn{*#V~LHFXU z6TO3}ixH%HPUlOK9+r<)+wlw*R+N4|zCc}ft>2~=B&-i7rLV_*&^Cd!-YnT>m#{{6 zq#RWtr4IN^Z^GVeBgJxIu}m&mA#AO-TRHfGfab}LG>mBrq6(65ydgNtVF%T;1^xef zJ%Z#oed@+ueWo#W;STF%pN{mnVYQQ;f*w8?>Mhg_(K4_fu9Ajs=3O&3q0Lk0nHIzd z**1JnozHCNq{}d^GbAz)udi<6Y(O=l&yRMOn-%y!FQk+PNITqthIEQOB-gOi`OX>DlZp+#$EFswg7P7dL>y; z#B)%KT5)Dx z;vM6XBdu)bZCKx(*Q+7Z>?l?^7_^=DX0^-?HhbnVLCjqud62_y^q>~K>9pdwEbrdG6rZAfOS_#CgakTuSz*@DV2el&{i(iqG4&8o1CvwN#=kr zOQvJVsMxL>iK4tkLzV8bp)?(p)jVyA5<_akaQLz~>RgOEUynmv80*-5sWUKSV47B+ zt2m^ZLTVI`m8eI!-uyWpVa7{(0a09gu~N@lIx^3~S8n)s2C2arUB-fyV5f+Wa&ONSGHL zJL>kyU2A)0FP3qRDK{H=SDK%mFn8YbXU{!(_S_TFxzC?};;F~aoi}$b5ogDZtqJ3u ze1gYY#d2jfR=jG1eeYU*e%e)HGZ6!v=wa;6Lb`xc>m36HOkedg2lRo6hJWGYRjg4* zSZmJiVG94BQ_W9@n;W}&Ca+$(dTFcI=5@@Syx5O3%$9O7->iglFxHo=r#slDaqWK@KDp)y-yuQ5NZB4u$lPCwx^30z)JpHWSx zoSx2`dD`R`&JIVgt@$-Aa?%qzPUx6NNS8ThciT?pVl4C2V1DXV$U@I9jmkvWScQ3U ze!6kvX&XzYZQRHj9#OQlIe*@)6HeP$b;x`-R%^B45R`lGo3*jpH~*x*S(a$4BJ`16 ze5r2D!m3+6S%}MbQyUR|bxO}(ORd+Cfr18`LzNKAUOkq*dMuhPAyMS3^m27}Fm%mN zM@x-Xhwz~}=HBMu{IsK^<-4KFKbM@(`Ko>`Yg<8X8}A~??71YGD1h&KI1pSaD#CH> z4^2)aEDLOn>GU6h1}2U|g&f1iSAsalZm%WNSW6XA!1*AySesFpDUS=sw)s(;l3bpY z`yV(*&pL+8@H87pmcuhf`2ZYwt!$sD0;C+fE3Ng`wGA+Kf4y8wW;Cc(rNk~&kq~{Yv{)9FbfltHYnxdoYwc5NxZy9AsW-fO zT}*cs6F{B^RX4koW{1^csX&bi+J&jJN~hfIDwW++qjB?VX&4qHEh|nqPVYkK6oFK- zJ9kugsjohEyYgXjdb5)Ce6Y@jB25~*yV{2e0kyI`AKTW)s&oC2-B3ffz>)Q>G~Gcq zWWWjl^TbGXPzRV|qhzr#V}-~_s;*3d!)zOJs=R<^!%|Nh%0uKpHX^Cv5`(9^^SB*%If0PGx`V=16vK@m23YL87Qb#s1%xTGY@kIy0D#H>(TUj2Nl z&zTsSlf^Ro&(L-r>DaBYvvXmh`EkxL6m`=7`EuLZ^Z$DD4&TSuwAL35^H1s}Lf^=1TF(C@t^MoxW{$1&Ayj3u-VI*fW(wn< z(Gh2WvSfU|RPCCjtXkc{B!ff=1`V3rs2{T;jZ)vBN6|IR>=sw{Z16)w)>9LIu=OEh zV7lr@ObWpOw=Jy1~Skq$iZ~6 zN8|H+woC=-4->RmfR!_mzjk`WePPx%!&`%%rIlUQiP|&m9^uxjQeB61`^#`3`wkp# z6$Y+{M$&t%;!777xc7%^D5x+8#PbZTb<>ZedAJ5h##Y_>6)A=pf=uAMU^;7jtaEA= zSfo#)W+YG4VJ4IMg-dqEws9p8CHEG}TQwySWTsMOK9F=!U-W@Qh0`T)WwC~l%GfqE z9L7LXRKvz4Mp_PgEOBsTmlLDz3!;#rUZTefgSvF?roVtZwibm$PSjSnwP_K=D^s6U zHKbDH+b!|PApS%!xn^`A$0$gmkc3*}qLfYGwLJ1|z7$hzz8f;dOhYa&B;;bdPN-0i zLD_{ube1j@;;XZWw0Wp7EWyQ4V2Sa=lO`983e|QiM5cTf;q;U)8lq&@f+$;3&S;8g zih{~pwR@IVK5YdXwAZA|ML$t=L{?P5r;d;jt3ooX@k!%aDFigaFceJ(CfsWT&@UK_ zqUNW2gNz@>ru(HtSV%<(Hl{H266&3X!O7nTIY_UN-eQI>Aa8M*V91XpSd1_)={%8_ zn&~I!mf1w-n|hn?K6QfQ!a|i(sQx96o*%~5@9WxUa5+#N5W%Q&8+La8h182b&$`{JY9i38I5nM6j;}SBO z3(QNY2k=GRb_8E@46_~ayG`e3=xAux*1)a^bL){fnKNlQ5J-~U)eG6BvVn2s!byNG zSKm}gL7$0UOxHF!7TJ2NVJ6p*+i1~|lZ;d0WLuHtKrDMPEoVX?pOW>NP>eoZ1=eJm znOVMBWEoP_Cn2qol*xjYGS89lyyiGR=R|SN-JnDt2bRY~_REsAaTwHlh7%oxTb0Uw zt5TWn&Sk8r0c9iUR8esQY1Fy(l^B#Wm|8-nOg*ETkJ;lPf4{ZWp zhp2{GgsYnh2uioW{>vKdIMTQ|c#q~3O`XlBi6NE9aaEQ#a)Zwy~SXx7B zT?aRI4=hGw6;+c=i_K+#e1r+0$k8z^R&8AK3@&*=J~6?wm#}1Qxt%N1b4URfFkF^{ z$=CYJ_X;wpB8ytV`AEjGJdJBgJJkBv->#ERe3Da@B{LF4agXX}%H2@Z;D}W*O%5J8 zf!NHh=?S%^<}ptO#EuEmUVYrF5iucgK&%gnqGH5n_s zrOkL<#<7QBkO)gzhme18WaDY0z}+>r>P4pvYu(@u3*CP!2S4-)|DEW5pB~m(m_Ni( zIBZg@L-j$4TZS6Dvf3z{wr7_kxT8;E)@%{bwXOV2FhvS3=u3G^Wf5(G(>A>(N@EuQ zwGl&XaNc4i16O9P(l@SB@awj^@#}!#6-(`FQ>lnF)GWYaT@Ol@M~yVpz}&f{2}Whz z(3(@sb2_U}%r)9bZbej z1M}87)CH_xHV-A>8_vu`=@nlGwEME^w@Vp9?jp2|18(26Qk9L$iK@>%wf60c^fQbQd7tGl(bE=fODP0*n@m$ zZDgcH`H(NYGpZt-nQn&y107=m&(uA)y-0szX@W+9R>YTd6li=FeOk90Ar&#^LZ))t z1xHcOCXh`!yW~g*0dwn23As#5)OAPE+Nax&)K}T8UAd&q8Eht5aGWriN5=DVc`yo* z6SjP*F=v3(s@#47_0rz*#0jjcELDjeejRxZalmTA4pWd@mOAsM1GT)33Y@%{2K^<>zecpVYnPz8 zV7{UUWF~Ljx>OVU$gCFFWiTg5VXb3>;EUC;xQ>hYND^FIBzt=$S?;#^WI4An)$KB- z&SFUyE5@ss)?yFQ7A|r~RsrbIuVixm8Mx>SpNpD*&ha58zQoFwiHOf^%DX*DODT`b zCBt#;Y;zZ-Xh>?GOH>_~(by!m6(qZW`ExV2mM5ke+lhO=Q?Ml*%LH@=?uTN-*^Ob@ zz7%S6ysN3(dY{Z%JY=&e(i89x)qT627@hL9^=q8Ej0yi*TNkL>ktvPibsgypUybO7 zA@~TJbKA3~aE}uPHs=D2>5yb?A|8-Aj00q@&TP#Vy;`$x+`P7{nI?$8{j_F8{UWDM z^hK-9iV8S-C={ltu8;~BUvX!4NAR5Bi^S%eKpp(g&Ijf>fwly(!mA=e#h zH(8V&Xg5oYy$_jjP_Haz>AKi5kbswQXG|rT!4hQ)V*ap*^#ptP8P!(ZTxC zKGR*=wG@j~A8DoJ-YIvu_=QSkBgO*Rk#-(>7sgaTcGjyASU`_8f-^iy}b6aK=E1I8)!n%3}Gq7=Y@Xq&#>FcOUK zzD>%_z-&9DZB}y2*~Cw#5eZ zTa4%Ink}0=#N@FMcF41+E}*}3BC&iCpV%!orgbE%+U(EWGJ`=&E^+Cn)!bCBe0+8_ zYJ5Lp>b`b#!d!4GDB{X=Nl_Y|!h6``r{hJI5}6mGix{IZs_{*~6j|8Hit}h9STfV0 zk5DQ-88+elYAh#rEQaw`EG%L(xese>8y8~nhp($5+JMD7u{_AfP)6FkA#BJ33py!^ zKyz1HF0Gzy%iFBIh%UY^F#Bn|Da*~k+;r6{w8dz0@!Jc`1*9{A4&mP#D5txiCN^@o zGi#+(2_rBZxe?TYi~feJ{a!8Y4pnu1))2|>soEd!oqM=R%QRTuI3Ob7(aRdu-a86x z^^Qf&Cu!@QaT&EW%D;ffdPn=oez%tCsM!3Ywb&=jYCFZ@#21v6A?-x7(b{l5({J38 znp^N&pk+^Mml1*NZL-TC0SD1vHYiO~<@7UDUkf2lbnW(WPvar^_rSh&cET0J5NH!Y zmxOGsIlIiZ6s_<;*Xp!78h2bhEACm~Hathf;8ruTErSe0*UvL!@hYq>sv5|Qz?9^|!3Q?hNv zOe-I^+u%D!|0-MCDA+;ytrB-s!&VH~v5|9(85; z94m|ur>V+9pvhN;JF1B%F)&U9ec=I8}YmzO{$XC70by+Cr{m@s2`Ow(Zba=;h9>^145( zfN*ltK1dBmH~ID_+r%D!Ov|n`Lpd@HK5kQHmN^~RYEygJ>1>sNDO84kj%zSTuD-Kl zk1>osh-#{HMMj$c{tw-ZiC{dtwI8b0OfJui%*8IVr=HMd{r`rt<%rIe;3u0<*slscZamDWS$mXmub%Z6 zJkw-(^b6nLYl*|M$n$JbM=O^|A1xoRRE}sf%2c0vR$LO!akaLCZcv^bJJro*+^8lN zo?FEB*i6gJ?G^9fY|t3q>_|~$Bd`VZdE1lZ zW&()VHTxiwF0$1yC4v+*! z$PCaiF2B1?BQF+W6Ddf2txWJ_4Q-s3Lj?K{P0?v`_qf^rgP@HY?e$_vj0{3cbKB$< z8=#EY9C@KU?N!p{x`42*&C!st5q&s&7Um3fH3|Xtbxx9@Cv!=#L;Ezu4m0iOZOB zWEd@;D?;b9rm!%|UUWBb`?hB;$VoBhp#yAn4wuz*V_eLuF2^}qx^H(1MT%FcG0Gvl`L&_*zC<6X(tOnv;dli^6n=o`AXYEIqa(=g?vn6 zoVToVFEQmr`;cudfzzV=v<~r_v=93sZ4u$3<3}}L)v%B=!)6?7jn>fET~e1Mc=BsK z?r^f5MnwtDS&}hLs&`ZE0yiW#sO;jCOY%i%cen#!UkJUv-*5f!kwZ&0c*%Kpos4C#IBLtLBTG zXI?R_A3~~!l(_{lJC>Mg3+Ym68sik6v2C*}m~NWL66YMP_Qa+x z(}LWoTCV2N=_ctF(YjR6s@^?zzfn$(-PY-T1QX0>qA+ShAYUe|r7rPcPcF5q7q$Zz zMwpqxTF}noWbII88k!eQi|nqt?Sz>Dacv)HTX7+9sSZA%LNT`Cs<$O&2~9qKEBLWC z1UPD{f0f2Wv-{rSK5IDl#yk(lDDwwbb?7T(LB+IsSRIb|Xi^64Fj9v9r!q`vOqaTa z-p>NrdSLsNe|xxzCpsYb(lEpg#||;MQ{VA?r4B4BQukbPN~B&Db~-m4x0^)O5ydZh`7% z#FMqYN}_#C-b`ab;|T$N&Q!YwG$9L@{Au5IA#_?GR>@6WD<@VrQW@skeCs_YSbeEy zdmZSL;`(X0S1vnH&It&X+&U>tIQ`)z`z3RI!4fl3j4*y?GHuHu>_>Bl8;Y|IBKK*U zvy&Z96F^laI0+2uoyLuA117H&F6ndpM{fD}G^orso5QRDw&>wa({ohZR z31yo>Ceazhap}iZv^|vJh9Yc|W`~;?Z2n;m;V;I3t;&(LTC@Z3jX7LK7h=@TbM>HbI#>>7X(7?~e+)ye?>F-L1RpAbU5u;Kx8SDMq*%&pQhv z6UPs0*tA=I6D{tzCNZ3OLiNhtgP?1fk#b={eH5|ADrMFmZoAWm0Nv38KCrZ@j~Da> zOSS;F9e?gh?s4A+zC^TQ*gLg6GvYXO&rL% z5D)g{jwlMscN3sC6#1YszZ7NN>1)om=((xss)45CW?hQ6gJ@IIwWdfBjiHp}w*8E_ zu`YU$LSS27I)e;fDL~}rIRIB=N~{gEu8GgmD|{}eMO90jNs}ATH(?MlDXBcv*_O6^ zvoCqP2e!8tw+be8rao)gWFN@na%jyYCZ@hY=4w2ctPF&$bTinzWPjbirk+J42)kN? zKXx)>@;iO%j($FB3sa1{itPM>1T_r9q_LBCSUHRD2RmL{mHp1VSlxUbb(yBi8z{Jc&NtKgGDG{3b_3?fBzO%lrEeG#jFkc7v2x?15Rh31?Rywiq>EL z9Z^0>6ov&D`R1{^WSqh(RvKE!5OG@u!ZGWH1#|GumFLt#8E#gvohK7r#IcUo$b`-C zI1zI5mJak28P(aOQa#@m95h7&sbEdOZqz3Ssk+@D}j-OGZ1`< ztOV_fpRRK-LKIich|!3Q{b`sC{|^WU2aS4z`+eck zLQ_MsWq4F>ro^*jT8zK|!sggwKNx17uu{6#H_cGy;zywM@PFHhN3^mHmz{8dVUz$2 zv>*D-eTY9;i+IeL4d|D;Zc)i(F##~Fnf{uIv7+Wl3NZCwkC8&~;Wd86qrr>nmrN()Z`qLoDPzpIXzeD5aJgcdU9!D;T&YWt&6mQ3SOtPC)LFo| z>g2M$R4Y%WgjFxUHba01Mc*`E^ejt8S6eLEWiTP3K4{!fW5)02B7uka|2Ocs@f*o?N-eQgK39FU}RuH0wP@uEikU$s(;a)(E1 z=@!4YF@DUy#qVsS{2{-raWTe#+=Y#;FQj&Kt%znI8%cHm+rEy%xQX4xE#CPhU`J9) z?7k*oOed}Xf4aLd$7pP}<=oGFb)(\n" +"Language-Team: Pedro Mendonça \n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.2.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:363 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "Grupos de campos" + +#: acf.php:364 +msgid "Field Group" +msgstr "Grupo de campos" + +#: acf.php:365 acf.php:397 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New" +msgstr "Adicionar novo" + +#: acf.php:366 +msgid "Add New Field Group" +msgstr "Adicionar novo grupo de campos" + +#: acf.php:367 +msgid "Edit Field Group" +msgstr "Editar grupo de campos" + +#: acf.php:368 +msgid "New Field Group" +msgstr "Novo grupo de campos" + +#: acf.php:369 +msgid "View Field Group" +msgstr "Ver grupo de campos" + +#: acf.php:370 +msgid "Search Field Groups" +msgstr "Pesquisar grupos de campos" + +#: acf.php:371 +msgid "No Field Groups found" +msgstr "Nenhum grupo de campos encontrado" + +#: acf.php:372 +msgid "No Field Groups found in Trash" +msgstr "Nenhum grupo de campos encontrado no lixo" + +#: acf.php:395 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:530 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Campos" + +#: acf.php:396 +msgid "Field" +msgstr "Campo" + +#: acf.php:398 +msgid "Add New Field" +msgstr "Adicionar novo campo" + +#: acf.php:399 +msgid "Edit Field" +msgstr "Editar campo" + +#: acf.php:400 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Novo campo" + +#: acf.php:401 +msgid "View Field" +msgstr "Ver campo" + +#: acf.php:402 +msgid "Search Fields" +msgstr "Pesquisar campos" + +#: acf.php:403 +msgid "No Fields found" +msgstr "Nenhum campo encontrado" + +#: acf.php:404 +msgid "No Fields found in Trash" +msgstr "Nenhum campo encontrado no lixo" + +#: acf.php:443 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:587 +msgid "Inactive" +msgstr "Inactivo" + +#: acf.php:448 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inactivo (%s)" +msgstr[1] "Inactivos (%s)" + +#: includes/acf-field-functions.php:828 +#: includes/admin/admin-field-group.php:178 +msgid "(no label)" +msgstr "(sem legenda)" + +#: includes/acf-field-group-functions.php:816 +#: includes/admin/admin-field-group.php:180 +msgid "copy" +msgstr "cópia" + +#: includes/admin/admin-field-group.php:86 +#: includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "Grupo de campos actualizado." + +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "Grupo de campos eliminado." + +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "Grupo de campos publicado." + +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "Grupo de campos guardado." + +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "Grupo de campos enviado." + +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "Grupo de campos agendado." + +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "Rascunho de grupo de campos actualizado." + +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "O prefixo \"field_\" não pode ser utilizado no início do nome do campo." + +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Este campo não pode ser movido até que as suas alterações sejam guardadas." + +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "O título do grupo de campos é obrigatório" + +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "Mover para o lixo. Tem certeza?" + +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "Nenhum campo de opções disponível" + +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "Mover campo personalizado" + +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "Seleccionado" + +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "(este campo)" + +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3862 +msgid "or" +msgstr "ou" + +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "Nulo" + +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "Localização" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Definições" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "Chaves dos campos" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Activo" + +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "Movido com sucesso." + +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "O campo %s pode agora ser encontrado no grupo de campos %s" + +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "Fechar janela" + +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "Por favor seleccione o destinho para este campo" + +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "Mover campo" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Activo (%s)" +msgstr[1] "Activos (%s)" + +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Grupo de campos duplicado." +msgstr[1] "%s grupos de campos duplicados." + +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "Grupo de campos sincronizado." +msgstr[1] "%s grupos de campos sincronizados." + +#: includes/admin/admin-field-groups.php:414 +#: includes/admin/admin-field-groups.php:577 +msgid "Sync available" +msgstr "Sincronização disponível" + +#: includes/admin/admin-field-groups.php:527 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:372 +msgid "Title" +msgstr "Título" + +#: includes/admin/admin-field-groups.php:528 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:399 +msgid "Description" +msgstr "Descrição" + +#: includes/admin/admin-field-groups.php:529 +msgid "Status" +msgstr "Estado" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "Personalize o WordPress com campos intuitivos, poderosos e profissionais." + +#: includes/admin/admin-field-groups.php:628 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Registo de alterações" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in version %s." +msgstr "Veja o que há de novo na versão %s." + +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "Recursos" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "Site" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "Documentação" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "Suporte" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Obrigado por criar com o ACF." + +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "Duplicar este item" + +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate" +msgstr "Duplicar" + +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "Pesquisa" + +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "Seleccionar %s" + +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "Sincronizar grupo de campos" + +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "Sincronizar" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "Aplicar" + +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "Acções por lotes" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Ferramentas" + +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Actualizar base de dados" + +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Rever sites e actualizar" + +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "Campos personalizados" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Informações" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "O que há de novo" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Exportar grupos de campos" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "Gerar PHP" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Nenhum grupo de campos seleccionado" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Foi exportado 1 grupo de campos." +msgstr[1] "Foram exportados %s grupos de campos." + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Seleccione os grupos de campos" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "Select the field groups you would like to export and then select your export method. Use the download button to export to a .json file which you can then import to another ACF installation. Use the generate button to export to PHP code which you can place in your theme." +msgstr "Seleccione os grupos de campos que deseja exportar e seleccione o método de exportação. Utilize o botão Descarregar para exportar um ficheiro .json que poderá depois importar para outra instalação do ACF. Utilize o botão Gerar para exportar o código PHP que poderá incorporar no seu tema." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Exportar ficheiro" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "The following code can be used to register a local version of the selected field group(s). A local field group can provide many benefits such as faster load times, version control & dynamic fields/settings. Simply copy and paste the following code to your theme's functions.php file or include it within an external file." +msgstr "O código abaixo pode ser usado para registar uma versão local do(s) grupo(s) de campos seleccionado(s). Um grupo de campos local tem alguns benefícios, tais como maior velocidade de carregamento, controlo de versão, definições e campos dinâmicos. Copie e cole o código abaixo no ficheiro functions.php do seu tema, ou inclua-o num ficheiro externo." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Copiar para a área de transferência" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Copiado" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Importar grupos de campos" + +#: includes/admin/tools/class-acf-admin-tool-import.php:47 +msgid "Select the Advanced Custom Fields JSON file you would like to import. When you click the import button below, ACF will import the field groups." +msgstr "Seleccione o ficheiro JSON do Advanced Custom Fields que deseja importar. Ao clicar no botão Importar abaixo, o ACF irá importar os grupos de campos." + +#: includes/admin/tools/class-acf-admin-tool-import.php:52 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Seleccionar ficheiro" + +#: includes/admin/tools/class-acf-admin-tool-import.php:62 +msgid "Import File" +msgstr "Importar ficheiro" + +#: includes/admin/tools/class-acf-admin-tool-import.php:85 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Nenhum ficheiro seleccionado" + +#: includes/admin/tools/class-acf-admin-tool-import.php:93 +msgid "Error uploading file. Please try again" +msgstr "Erro ao carregar ficheiro. Por favor tente de novo." + +#: includes/admin/tools/class-acf-admin-tool-import.php:98 +msgid "Incorrect file type" +msgstr "Tipo de ficheiro incorrecto" + +#: includes/admin/tools/class-acf-admin-tool-import.php:107 +msgid "Import file empty" +msgstr "Ficheiro de importação vazio" + +#: includes/admin/tools/class-acf-admin-tool-import.php:138 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Foi importado 1 grupo de campos." +msgstr[1] "Foram importados %s grupos de campos." + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "Lógica condicional" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Mostrar este campo se" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "e" + +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Adicionar grupo de regras" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:410 +#: pro/fields/class-acf-field-repeater.php:299 +msgid "Drag to reorder" +msgstr "Arraste para reordenar" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Editar campo" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:359 +msgid "Edit" +msgstr "Editar" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Duplicar campo" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Mover campo para outro grupo" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Mover" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Eliminar campo" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete" +msgstr "Eliminar" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Legenda do campo" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Este é o nome que será mostrado na página EDITAR." + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Nome do campo" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Uma única palavra, sem espaços. São permitidos underscores (_) e traços (-)." + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Tipo de campo" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Instruções" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instruções para os autores. São mostradas ao preencher e submeter dados." + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Obrigatório?" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Atributos do wrapper" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "largura" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "classe" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Fechar campo" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Ordem" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Legenda" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Name" +msgstr "Nome" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Chave" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Tipo" + +#: includes/admin/views/field-group-fields.php:14 +msgid "No fields. Click the + Add Field button to create your first field." +msgstr "Nenhum campo. Clique no botão + Adicionar campo para criar seu primeiro campo." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Adicionar campo" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regras" + +#: includes/admin/views/field-group-locations.php:10 +msgid "Create a set of rules to determine which edit screens will use these advanced custom fields" +msgstr "Crie um conjunto de regras para determinar em que ecrãs de edição serão utilizados estes campos personalizados avançados" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Estilo" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Predefinido (metabox do WP)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Simples (sem metabox)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Posição" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Acima (depois do título)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (depois do conteúdo)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Lateral" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Posição da legenda" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Alinhado acima" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Alinhado à esquerda" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Posição das instruções" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Abaixo das legendas" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Abaixo dos campos" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Nº. de ordem" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Serão mostrados primeiro os grupos de campos com menor número de ordem." + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Mostrado na lista de grupos de campos" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "Ligação permanente" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "Editor de conteúdo" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Excerto" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Discussão" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Comentários" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Revisões" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Slug" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Autor" + +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Formato" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Atributos da página" + +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "Imagem de destaque" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Categorias" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Etiquetas" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Enviar trackbacks" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Esconder no ecrã" + +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "Seleccione os itens a esconder do ecrã de edição." + +#: includes/admin/views/field-group-options.php:129 +msgid "If multiple field groups appear on an edit screen, the first field group's options will be used (the one with the lowest order number)" +msgstr "Se forem mostrados vários grupos de campos num ecrã de edição, serão utilizadas as opções do primeiro grupo de campos. (o que tiver menor número de ordem)" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "The following sites require a DB upgrade. Check the ones you want to update and then click %s." +msgstr "Os sites seguintes necessitam de actualização da BD. Seleccione os que quer actualizar e clique em %s." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Actualizar sites" + +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Site" + +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "O site necessita de actualizar a base de dados de %s para %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "O site está actualizado" + +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "Database Upgrade complete. Return to network dashboard" +msgstr "Actualização da base de dados concluída. Voltar ao painel da rede" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "Por favor, seleccione pelo menos um site para actualizar." + +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?" +msgstr "É recomendável que faça uma cópia de segurança da sua base de dados antes de continuar. Tem a certeza que quer actualizar agora?" + +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "A actualizar dados para a versão %s" + +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Actualização concluída." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Falhou ao actualizar." + +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "A ler tarefas de actualização..." + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "Actualização da base de dados concluída. Ver o que há de novo" + +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "Nenhuma actualização disponível." + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "Voltar para todas as ferramentas" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Mostrar este grupo de campos se" + +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Repetidor" + +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Conteúdo flexível" + +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galeria" + +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Página de opções" + +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Actualização da base de dados necessária" + +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Obrigado por actualizar para o %s v%s!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "This version contains improvements to your database and requires an upgrade." +msgstr "Esta versão inclui melhorias na base de dados e requer uma actualização." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "Por favor, verifique se todos os add-ons premium (%s) estão actualizados para a última versão." + +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Add-ons" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Descarregar e instalar" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Instalado" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Bem-vindo ao Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it." +msgstr "Obrigado por actualizar! O ACF %s está maior e melhor do que nunca. Esperamos que goste." + +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Uma experiência mais fácil" + +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "Usabilidade melhorada" + +#: includes/admin/views/settings-info.php:20 +msgid "Including the popular Select2 library has improved both usability and speed across a number of field types including post object, page link, taxonomy and select." +msgstr "A inclusão da popular biblioteca Select2 melhorou a usabilidade e a velocidade de tipos de campos como conteúdo, ligação de página, taxonomia e selecção." + +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "Design melhorado" + +#: includes/admin/views/settings-info.php:25 +msgid "Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are seen on the gallery, relationship and oEmbed (new) fields!" +msgstr "Muitos campos sofreram alterações visuais para que a aparência do ACF esteja melhor que nunca! Alterações notáveis nos campos de galeria, relação e oEmbed (novo)!" + +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "Dados melhorados" + +#: includes/admin/views/settings-info.php:30 +msgid "Redesigning the data architecture has allowed sub fields to live independently from their parents. This allows you to drag and drop fields in and out of parent fields!" +msgstr "A reformulação da arquitectura dos dados permite que os subcampos existam independentemente dos seus superiores. Isto permite-lhe arrastar e largar campos para dentro e para fora de campos superiores!" + +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Adeus add-ons. Olá PRO." + +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "Introdução ao ACF PRO" + +#: includes/admin/views/settings-info.php:42 +msgid "We're changing the way premium functionality is delivered in an exciting way!" +msgstr "Estamos a alterar o modo como as funcionalidades premium são distribuídas!" + +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "All 4 premium add-ons have been combined into a new Pro version of ACF. With both personal and developer licenses available, premium functionality is more affordable and accessible than ever before!" +msgstr "Todos os 4 add-ons premium foram combinados numa única versão Pro do ACF. Com licenças pessoais e para programadores, as funcionalidades premium estão agora mais acessíveis que nunca!" + +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Funcionalidades poderosas" + +#: includes/admin/views/settings-info.php:48 +msgid "ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field and the ability to create extra admin options pages!" +msgstr "O ACF PRO tem funcionalidades poderosas, tais como dados repetíveis, layouts de conteúdo flexível, um campo de galeria e a possibilidade de criar páginas de opções de administração adicionais!" + +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Mais informações sobre as funcionalidades do ACF PRO." + +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Actualização fácil" + +#: includes/admin/views/settings-info.php:54 +msgid "Upgrading to ACF PRO is easy. Simply purchase a license online and download the plugin!" +msgstr "É fácil actualizar para o ACF PRO. Basta comprar uma licença online e descarregar o plugin!" + +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "We also wrote an upgrade guide to answer any questions, but if you do have one, please contact our support team via the help desk." +msgstr "Escrevemos um guia de actualização para responder a todas as dúvidas, se tiver alguma questão, por favor contacte a nossa equipa de suporte através da central de ajuda." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Novas funcionalidades" + +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "Campo de ligação" + +#: includes/admin/views/settings-info.php:70 +msgid "The Link field provides a simple way to select or define a link (url, title, target)." +msgstr "O campo de ligação permite facilmente seleccionar ou definir uma ligação (URL, título, destino)." + +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Campo de grupo" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "O campo de grupo permite facilmente criar um grupo de campos." + +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "Campo de oEmbed" + +#: includes/admin/views/settings-info.php:80 +msgid "The oEmbed field allows an easy way to embed videos, images, tweets, audio, and other content." +msgstr "O campo de oEmbed permite facilmente incorporar vídeos, imagens, tweets, áudio ou outros conteúdos." + +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Campo de clone" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "O campo de clone permite seleccionar e mostrar campos existentes." + +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "Mais AJAX" + +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "Mais campos utilizam pesquisa com AJAX para aumentar a velocidade de carregamento." + +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "JSON local" + +#: includes/admin/views/settings-info.php:95 +msgid "New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "Nova funcionalidade de exportação automática para JSON melhora a velocidade e permite sincronização." + +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Fácil importação e exportação" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "Pode facilmente importar e exportar a partir da nova página de ferramentas." + +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "Novas localizações de formulários" + +#: includes/admin/views/settings-info.php:105 +msgid "Fields can now be mapped to menus, menu items, comments, widgets and all user forms!" +msgstr "Os campos agora podem ser mapeados para menus, itens de menu, comentários, widgets e formulários de utilizador!" + +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Maior personalização" + +#: includes/admin/views/settings-info.php:110 +msgid "New PHP (and JS) actions and filters have been added to allow for more customization." +msgstr "Foram adicionadas novas acções e filtros de PHP (e JS) para permitir maior personalização." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Nova interface" + +#: includes/admin/views/settings-info.php:115 +msgid "The entire plugin has had a design refresh including new field types, settings and design!" +msgstr "Toda a interface do plugin foi actualizada, incluindo novos tipos de campos, definições e design!" + +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Novas definições" + +#: includes/admin/views/settings-info.php:120 +msgid "Field group settings have been added for Active, Label Placement, Instructions Placement and Description." +msgstr "Foram adicionadas definições aos grupos de campos, tais como activação, posição da legenda, posição das instruções e descrição." + +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "Melhores formulários para o seu site" + +#: includes/admin/views/settings-info.php:125 +msgid "acf_form() can now create a new post on submission with lots of new settings." +msgstr "Com acf_form() agora pode criar um novo conteúdo ao submeter, com muito mais definições." + +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Melhor validação" + +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "A validação de formulários agora é feita com PHP + AJAX em vez de apenas JS." + +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Mover campos" + +#: includes/admin/views/settings-info.php:135 +msgid "New field group functionality allows you to move a field between groups & parents." +msgstr "Nova funcionalidade de grupo de campos permite mover um campo entre grupos e superiores." + +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Pensamos que vai gostar das alterações na versão %s." + +#: includes/api/api-helpers.php:1003 +msgid "Thumbnail" +msgstr "Miniatura" + +#: includes/api/api-helpers.php:1004 +msgid "Medium" +msgstr "Média" + +#: includes/api/api-helpers.php:1005 +msgid "Large" +msgstr "Grande" + +#: includes/api/api-helpers.php:1054 +msgid "Full Size" +msgstr "Tamanho original" + +#: includes/api/api-helpers.php:1775 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(sem título)" + +#: includes/api/api-helpers.php:3783 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "A largura da imagem deve ser pelo menos de %dpx." + +#: includes/api/api-helpers.php:3788 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "A largura da imagem não deve exceder os %dpx." + +#: includes/api/api-helpers.php:3804 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "A altura da imagem deve ser pelo menos de %dpx." + +#: includes/api/api-helpers.php:3809 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "A altura da imagem não deve exceder os %dpx." + +#: includes/api/api-helpers.php:3827 +#, php-format +msgid "File size must be at least %s." +msgstr "O tamanho do ficheiro deve ser pelo menos de %s." + +#: includes/api/api-helpers.php:3832 +#, php-format +msgid "File size must must not exceed %s." +msgstr "O tamanho do ficheiro não deve exceder %s." + +#: includes/api/api-helpers.php:3866 +#, php-format +msgid "File type must be %s." +msgstr "O tipo de ficheiro deve ser %s." + +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "As alterações que fez serão ignoradas se navegar para fora desta página." + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Seleccionar" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "Editar" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "Actualizar" + +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "Carregados neste artigo" + +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "Expandir detalhes" + +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "Minimizar detalhes" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "Restrito" + +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "Todas as imagens" + +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "Validação bem sucedida" + +#: includes/assets.php:182 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "A validação falhou" + +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "1 campo requer a sua atenção" + +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "%d campos requerem a sua atenção" + +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "Tem a certeza?" + +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Sim" + +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Não" + +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:360 +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Remove" +msgstr "Remover" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "Cancelar" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "Tem um valor qualquer" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "Não tem valor" + +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "O valor é igual a" + +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "O valor é diferente de" + +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "O valor corresponde ao padrão" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "O valor contém" + +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "O valor é maior do que" + +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "O valor é menor do que" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "A selecção é maior do que" + +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "A selecção é menor do que" + +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "Editar grupo de campos" + +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Tipo de campo não existe" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Desconhecido" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "Básico" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Conteúdo" + +#: includes/fields.php:351 +msgid "Choice" +msgstr "Opção" + +#: includes/fields.php:352 +msgid "Relational" +msgstr "Relacional" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:553 +#: pro/fields/class-acf-field-flexible-content.php:602 +#: pro/fields/class-acf-field-repeater.php:448 +msgid "Layout" +msgstr "Layout" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Acordeão" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Aberto" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Mostrar este item de acordeão aberto ao carregar a página." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Expandir múltiplos" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Permite abrir este item de acordeão sem fechar os restantes." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Fim" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "Define an endpoint for the previous accordion to stop. This accordion will not be visible." +msgstr "Define o fim do acordeão anterior. Este item de acordeão não será visível." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Grupo de botões" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "Opções" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "Insira cada opção numa linha separada." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "Para maior controlo, pode especificar tanto os valores como as legendas:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "vermelho : Vermelho" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "Permitir nulo?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "Valor por omissão" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "Mostrado ao criar um novo conteúdo" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Horizontal" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Vertical" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Valor devolvido" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Especifica o valor devolvido na frente do site." + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "Valor" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "Ambos (Array)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "Caixa de selecção" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Seleccionar tudo" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Adicionar nova opção" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Permitir personalização" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Permite adicionar valores personalizados" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Guardar personalização" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Guarda valores personalizados nas opções do campo" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "Insira cada valor por omissão numa linha separada" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Selecção" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Preceder com caixa de selecção adicional para seleccionar todas as opções" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Selecção de cor" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Limpar" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Por omissão" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Seleccionar cor" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Cor actual" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Selecção de data" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Concluído" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Hoje" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Seguinte" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Anterior" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Sem" + +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Formato de visualização" + +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "O formato de visualização ao editar um conteúdo" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Personalizado:" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "Formato guardado" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "O formato usado ao guardar um valor" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +msgid "Return Format" +msgstr "Formato devolvido" + +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "O formato devolvido através das template functions" + +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "Semana começa em" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Selecção de data e hora" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Escolha a hora" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Hora" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Hora" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minuto" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Segundo" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milissegundo" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Microsegundo" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Fuso horário" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Agora" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Concluído" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Seleccionar" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "Email" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Texto predefinido" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Mostrado dentro do campo" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Preceder" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Mostrado antes do campo" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Suceder" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Mostrado depois do campo" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Ficheiro" + +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Editar ficheiro" + +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Actualizar ficheiro" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Nome do ficheiro" + +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:708 +#: pro/fields/class-acf-field-gallery.php:737 +msgid "File size" +msgstr "Tamanho do ficheiro" + +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Adicionar ficheiro" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Array do ficheiro" + +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "URL do ficheiro" + +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "ID do ficheiro" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:673 +msgid "Library" +msgstr "Biblioteca" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:674 +msgid "Limit the media library choice" +msgstr "Limita a escolha da biblioteca de media." + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:679 +#: pro/locations/class-acf-location-block.php:79 +msgid "All" +msgstr "Todos" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:680 +msgid "Uploaded to post" +msgstr "Carregados no artigo" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:687 +msgid "Minimum" +msgstr "Mínimo" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "Restringe que ficheiros podem ser carregados." + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:716 +msgid "Maximum" +msgstr "Máximo" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:745 +msgid "Allowed file types" +msgstr "Tipos de ficheiros permitidos" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:746 +msgid "Comma separated list. Leave blank for all types" +msgstr "Lista separada por vírgulas. Deixe em branco para permitir todos os tipos." + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Mapa do Google" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Desculpe, este navegador não suporta geolocalização." + +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "Limpar localização" + +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "Encontrar a localização actual" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "Pesquisar endereço..." + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "Centrar" + +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "Centrar o mapa inicial" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "Definir o nível de zoom inicial" + +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:699 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Height" +msgstr "Altura" + +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "Personalizar a altura do mapa" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Grupo" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:384 +msgid "Sub Fields" +msgstr "Subcampos" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Especifica o estilo usado para mostrar os campos seleccionados." + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:456 +#: pro/locations/class-acf-location-block.php:27 +msgid "Block" +msgstr "Bloco" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:455 +msgid "Table" +msgstr "Tabela" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:614 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Row" +msgstr "Linha" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Imagem" + +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "Seleccionar imagem" + +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "Editar imagem" + +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "Actualizar imagem" + +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "Nenhuma imagem seleccionada" + +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "Adicionar imagem" + +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "Array da imagem" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "URL da imagem" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "ID da imagem" + +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "Tamanho da pré-visualização" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "Mostrado ao inserir dados" + +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Restrict which images can be uploaded" +msgstr "Restringir que imagens que ser carregadas" + +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:691 +#: pro/fields/class-acf-field-gallery.php:720 +msgid "Width" +msgstr "Largura" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "Ligação" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Seleccionar ligação" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Abre numa nova janela/separador" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "Array da ligação" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "URL da ligação" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Mensagem" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Novas linhas" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Controla como serão visualizadas novas linhas." + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Adicionar parágrafos automaticamente" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Adicionar <br> automaticamente" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Sem formatação" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Mostrar HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Permite visualizar o código HTML como texto visível, em vez de o processar." + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Número" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "Valor mínimo" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "Valor máximo" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Valor dos passos" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "O valor deve ser um número" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "O valor deve ser igual ou superior a %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "O valor deve ser igual ou inferior a %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "Insira o URL" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Tamanho da incorporação" + +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Ligação de página" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Arquivo" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Superior" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "Filtrar por tipo de conteúdo" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "Todos os tipos de conteúdo" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "Filtrar por taxonomia" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "Todas as taxonomias" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Permitir URL do arquivo" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "Seleccionar valores múltiplos?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Senha" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "Conteúdo" + +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "ID do conteúdo" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Botão de opção" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Outro" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Adicionar opção 'outros' para permitir a inserção de valores personalizados" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Guardar outros" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Guardar 'outros' valores nas opções do campo" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Intervalo" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "Relação" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "Valor máximo alcançado ( valor {max} )" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "A carregar" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Nenhuma correspondência encontrada" + +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "Seleccione tipo de conteúdo" + +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "Seleccione taxonomia" + +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "Pesquisar..." + +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "Filtros" + +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Tipo de conteúdo" + +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taxonomia" + +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "Elementos" + +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "Os elementos seleccionados serão mostrados em cada resultado." + +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "Mínimo de conteúdos" + +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "Máximo de conteúdos" + +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:818 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s requer pelo menos %s selecção" +msgstr[1] "%s requer pelo menos %s selecções" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Selecção" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Um resultado encontrado, prima Enter para seleccioná-lo." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d resultados encontrados, use as setas para cima ou baixo para navegar." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Nenhuma correspondência encontrada" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Por favor insira 1 ou mais caracteres" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Por favor insira %d ou mais caracteres" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Por favor elimine 1 caractere" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Por favor elimine %d caracteres" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Só pode seleccionar 1 item" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Só pode seleccionar %d itens" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "A carregar mais resultados…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "A pesquisar…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Falhou ao carregar" + +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Interface estilizada" + +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "Utilizar AJAX para carregar opções?" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "Especifica o valor devolvido." + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Divisória" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Separador" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Posição" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "Define an endpoint for the previous tabs to stop. This will start a new group of tabs." +msgstr "Define o fim dos separadores anteriores. Isto será o início de um novo grupo de separadores." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Sem %s" + +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Seleccione a taxonomia que será mostrada." + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Apresentação" + +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Seleccione a apresentação deste campo." + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Valores múltiplos" + +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Selecção múltipla" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Valor único" + +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Botões de opções" + +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Criar termos" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Permite a criação de novos termos durante a edição." + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Guardar termos" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "Liga os termos seleccionados ao conteúdo." + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Carregar termos" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Carrega os termos a partir dos termos dos conteúdos." + +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Termo" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "ID do termo" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "O utilizador não pôde adicionar novo(a) %s" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s já existe" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s adicionado(a)" + +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Adicionar" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Texto" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Limite de caracteres" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Deixe em branco para não limitar" + +#: includes/fields/class-acf-field-text.php:181 +#: includes/fields/class-acf-field-textarea.php:213 +#, php-format +msgid "Value must not exceed %d characters" +msgstr "O valor não deve exceder %d caracteres" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Ãrea de texto" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Linhas" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Define a altura da área de texto" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Selecção de hora" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Verdadeiro / Falso" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Texto mostrado ao lado da caixa de selecção" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Texto ligado" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Texto mostrado quando activo" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Texto desligado" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Texto mostrado quando inactivo" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "URL" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "O valor deve ser um URL válido" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Utilizador" + +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "Filtrar por papel" + +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "Todos os papéis de utilizador" + +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "Array do utilizador" + +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "Objecto do utilizador" + +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "ID do utilizador" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Editor wysiwyg" + +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Visual" + +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "HTML" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "Clique para inicializar o TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "Separadores" + +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Visual e HTML" + +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Apenas visual" + +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Apenas HTML" + +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "Barra de ferramentas" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "Mostrar botões de carregar multimédia?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "Atrasar a inicialização?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "O TinyMCE não será inicializado até que clique no campo" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Validar email" + +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:591 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Actualizar" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Artigo actualizado" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Spam detectado" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Artigo" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Página" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulários" + +#: includes/locations.php:243 +msgid "is equal to" +msgstr "é igual a" + +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "não é igual a" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Anexo" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Todos os formatos de %s" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Comentário" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Papel do utilizador actual" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Administrador" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Utilizador actual" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Sessão iniciada" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "A visualizar a frente do site" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "A visualizar a administração do site" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Item de menu" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menu" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Localizações do menu" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menus" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Página superior" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Modelo de página" + +#: includes/locations/class-acf-location-page-template.php:87 +#: includes/locations/class-acf-location-post-template.php:134 +msgid "Default Template" +msgstr "Modelo por omissão" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Tipo de página" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Página inicial" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Página de artigos" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Página de topo (sem superior)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Página superior (tem dependentes)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Página dependente (tem superior)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Categoria de artigo" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Formato de artigo" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Estado do conteúdo" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taxonomia do artigo" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Modelo de conteúdo" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Formulário de utilizador" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Adicionar / Editar" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Registar" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Papel de utilizador" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "O valor %s é obrigatório" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "Publicado" + +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "No Custom Field Groups found for this options page. Create a Custom Field Group" +msgstr "Nenhum grupo de campos personalizado encontrado na página de opções. Criar um grupo de campos personalizado" + +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr "Erro. Não foi possível ligar ao servidor de actualização" + +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Actualizações" + +#: pro/admin/admin-updates.php:191 +msgid "Error. Could not authenticate update package. Please check again or deactivate and reactivate your ACF PRO license." +msgstr "Erro. Não foi possível autenticar o pacote de actualização. Por favor verifique de novo, ou desactive e reactive a sua licença do ACF PRO." + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Desactivar licença" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Activar licença" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Informações da licença" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "To unlock updates, please enter your license key below. If you don't have a licence key, please see details & pricing." +msgstr "Para desbloquear as actualizações, por favor insira a sua chave de licença. Se não tiver uma chave de licença, por favor consulte os detalhes e preços." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Chave de licença" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Informações de actualização" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Versão actual" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Última versão" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Actualização disponível" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Actualizar plugin" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Por favor, insira acima a sua chave de licença para desbloquear as actualizações" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Verificar de novo" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Informações sobre a actualização" + +#: pro/blocks.php:371 +msgid "Switch to Edit" +msgstr "Mudar para o editor" + +#: pro/blocks.php:372 +msgid "Switch to Preview" +msgstr "Mudar para pré-visualização" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Clone" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Seleccione um ou mais campos que deseje clonar." + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Visualização" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Especifica o estilo usado para mostrar o campo de clone." + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Grupo (mostra os campos seleccionados num grupo dentro deste campo)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Simples (substitui este campo pelos campos seleccionados)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "As legendas serão mostradas com %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Prefixo nas legendas dos campos" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Os valores serão guardados como %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Prefixos nos nomes dos campos" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Campo desconhecido" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Grupo de campos desconhecido" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Todos os campos do grupo de campos %s" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:468 +msgid "Add Row" +msgstr "Adicionar linha" + +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:924 +#: pro/fields/class-acf-field-flexible-content.php:1006 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "layout" +msgstr[1] "layouts" + +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "layouts" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:923 +#: pro/fields/class-acf-field-flexible-content.php:1005 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Este campo requer pelo menos {min} {identifier} {label}" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Este campo está limitado a {max} {identifier} {label}" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {identifier} {label} disponível (máx {max})" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {identifier} {label} em falta (mín {min})" + +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "O conteúdo flexível requer pelo menos 1 layout" + +#: pro/fields/class-acf-field-flexible-content.php:287 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Clique no botão \"%s\" abaixo para começar a criar o seu layout" + +#: pro/fields/class-acf-field-flexible-content.php:413 +msgid "Add layout" +msgstr "Adicionar layout" + +#: pro/fields/class-acf-field-flexible-content.php:414 +msgid "Remove layout" +msgstr "Remover layout" + +#: pro/fields/class-acf-field-flexible-content.php:415 +#: pro/fields/class-acf-field-repeater.php:301 +msgid "Click to toggle" +msgstr "Clique para alternar" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder Layout" +msgstr "Reordenar layout" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Reorder" +msgstr "Reordenar" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Delete Layout" +msgstr "Eliminar layout" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Duplicate Layout" +msgstr "Duplicar layout" + +#: pro/fields/class-acf-field-flexible-content.php:558 +msgid "Add New Layout" +msgstr "Adicionar novo layout" + +#: pro/fields/class-acf-field-flexible-content.php:629 +msgid "Min" +msgstr "Mín" + +#: pro/fields/class-acf-field-flexible-content.php:642 +msgid "Max" +msgstr "Máx" + +#: pro/fields/class-acf-field-flexible-content.php:669 +#: pro/fields/class-acf-field-repeater.php:464 +msgid "Button Label" +msgstr "Legenda do botão" + +#: pro/fields/class-acf-field-flexible-content.php:678 +msgid "Minimum Layouts" +msgstr "Mínimo de layouts" + +#: pro/fields/class-acf-field-flexible-content.php:687 +msgid "Maximum Layouts" +msgstr "Máximo de layouts" + +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "Adicionar imagem à galeria" + +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "Máximo de selecção alcançado" + +#: pro/fields/class-acf-field-gallery.php:338 +msgid "Length" +msgstr "Comprimento" + +#: pro/fields/class-acf-field-gallery.php:381 +msgid "Caption" +msgstr "Legenda" + +#: pro/fields/class-acf-field-gallery.php:390 +msgid "Alt Text" +msgstr "Texto alternativo" + +#: pro/fields/class-acf-field-gallery.php:562 +msgid "Add to gallery" +msgstr "Adicionar à galeria" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Bulk actions" +msgstr "Acções por lotes" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Sort by date uploaded" +msgstr "Ordenar por data de carregamento" + +#: pro/fields/class-acf-field-gallery.php:568 +msgid "Sort by date modified" +msgstr "Ordenar por data de modificação" + +#: pro/fields/class-acf-field-gallery.php:569 +msgid "Sort by title" +msgstr "Ordenar por título" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Reverse current order" +msgstr "Inverter ordem actual" + +#: pro/fields/class-acf-field-gallery.php:588 +msgid "Close" +msgstr "Fechar" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum Selection" +msgstr "Selecção mínima" + +#: pro/fields/class-acf-field-gallery.php:651 +msgid "Maximum Selection" +msgstr "Selecção máxima" + +#: pro/fields/class-acf-field-gallery.php:660 +msgid "Insert" +msgstr "Inserir" + +#: pro/fields/class-acf-field-gallery.php:661 +msgid "Specify where new attachments are added" +msgstr "Especifica onde serão adicionados os novos anexos." + +#: pro/fields/class-acf-field-gallery.php:665 +msgid "Append to the end" +msgstr "No fim" + +#: pro/fields/class-acf-field-gallery.php:666 +msgid "Prepend to the beginning" +msgstr "No início" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:661 +msgid "Minimum rows reached ({min} rows)" +msgstr "Mínimo de linhas alcançado ({min} linhas)" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "Máximo de linhas alcançado ({max} linhas)" + +#: pro/fields/class-acf-field-repeater.php:338 +msgid "Add row" +msgstr "Adicionar linha" + +#: pro/fields/class-acf-field-repeater.php:339 +msgid "Remove row" +msgstr "Remover linha" + +#: pro/fields/class-acf-field-repeater.php:417 +msgid "Collapsed" +msgstr "Minimizado" + +#: pro/fields/class-acf-field-repeater.php:418 +msgid "Select a sub field to show when row is collapsed" +msgstr "Seleccione o subcampo a mostrar ao minimizar a linha." + +#: pro/fields/class-acf-field-repeater.php:428 +msgid "Minimum Rows" +msgstr "Mínimo de linhas" + +#: pro/fields/class-acf-field-repeater.php:438 +msgid "Maximum Rows" +msgstr "Máximo de linhas" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Não existem páginas de opções" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Opções" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Opções actualizadas" + +#: pro/updates.php:97 +#, php-format +msgid "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "Para permitir actualizações, por favor insira a sua chave de licença na página de Actualizações. Se não tiver uma chave de licença, por favor veja os detalhes e preços." + +#: tests/basic/test-blocks.php:13 +msgid "Testimonial" +msgstr "Testemunho" + +#: tests/basic/test-blocks.php:14 +msgid "A custom testimonial block." +msgstr "Um bloco personalizado de testemunho." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Error. Could not connect to update server %s." +#~ msgstr "Erro. Não foi possível ligar ao servidor de actualização %s." diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-ro_RO.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-ro_RO.mo new file mode 100644 index 0000000000000000000000000000000000000000..37818247d60587c1355906bce4a775ac0d431822 GIT binary patch literal 43147 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-ro_RO.po b/wp-content/plugins/advanced-custom-fields/lang/acf-ro_RO.po new file mode 100644 index 0000000..c3d0e23 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-ro_RO.po @@ -0,0 +1,3527 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2018-04-16 17:11+1000\n" +"PO-Revision-Date: 2018-04-29 13:58+0300\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Elliot Condon \n" +"Language: ro_RO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" +"X-Generator: Poedit 2.0.7\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:81 +msgid "Advanced Custom Fields" +msgstr "Câmpuri Personalizate Avansate" + +#: acf.php:388 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Grupuri de câmpuri" + +#: acf.php:389 +msgid "Field Group" +msgstr "Grup de câmp" + +#: acf.php:390 acf.php:422 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:551 +msgid "Add New" +msgstr "Adaungă" + +#: acf.php:391 +msgid "Add New Field Group" +msgstr "Adaugă un nou grup de câmpuri" + +#: acf.php:392 +msgid "Edit Field Group" +msgstr "Editează grupul" + +#: acf.php:393 +msgid "New Field Group" +msgstr "Grup de câmp nou" + +#: acf.php:394 +msgid "View Field Group" +msgstr "Vizulaizează grupul de câmp" + +#: acf.php:395 +msgid "Search Field Groups" +msgstr "Caută în grupurile de câmp" + +#: acf.php:396 +msgid "No Field Groups found" +msgstr "Nu s-a găsit nici un câmp de grupuri" + +#: acf.php:397 +msgid "No Field Groups found in Trash" +msgstr "Nu s-a găsit nici un câmp de grupuri în coÈ™ul de gunoi" + +#: acf.php:420 includes/admin/admin-field-group.php:196 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Câmpuri" + +#: acf.php:421 +msgid "Field" +msgstr "Câmp" + +#: acf.php:423 +msgid "Add New Field" +msgstr "Adaugă un nou câmp" + +#: acf.php:424 +msgid "Edit Field" +msgstr "Editează câmpul" + +#: acf.php:425 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Câmp nou" + +#: acf.php:426 +msgid "View Field" +msgstr "Vizualizează câmpul" + +#: acf.php:427 +msgid "Search Fields" +msgstr "Caută câmpuri" + +#: acf.php:428 +msgid "No Fields found" +msgstr "Nu s-au găsit câmpuri" + +#: acf.php:429 +msgid "No Fields found in Trash" +msgstr "Nu s-a găsit nici un câmp în coÈ™ul de gunoi" + +#: acf.php:468 includes/admin/admin-field-group.php:377 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Inactiv" + +#: acf.php:473 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inactiv (%s)" +msgstr[1] "Inactive (%s)" +msgstr[2] "Inactivs (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Grup actualizat." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Grup È™ters." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Grup publicat." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Grup salvat." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Grup trimis." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Grup programat pentru." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Ciorna grup actualizat." + +#: includes/admin/admin-field-group.php:154 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Textul \"field_\" nu poate fi folosit la începutul denumirii unui câmp" + +#: includes/admin/admin-field-group.php:155 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Acest câmp nu poate fi mutat decât după salvarea modificărilor" + +#: includes/admin/admin-field-group.php:156 +msgid "Field group title is required" +msgstr "Titlul grupului este obligatoriu" + +#: includes/admin/admin-field-group.php:157 +msgid "Move to trash. Are you sure?" +msgstr "Mută în coÈ™ul de gunoi. EÈ™ti sigur?" + +#: includes/admin/admin-field-group.php:158 +msgid "Move Custom Field" +msgstr "Mută câmpul personalizat" + +#: includes/admin/admin-field-group.php:159 +msgid "checked" +msgstr "marcat" + +#: includes/admin/admin-field-group.php:160 +msgid "(no label)" +msgstr "(fără etichetă)" + +#: includes/admin/admin-field-group.php:161 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "copie" + +#: includes/admin/admin-field-group.php:162 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:139 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:4158 +msgid "or" +msgstr "sau" + +#: includes/admin/admin-field-group.php:163 +msgid "Null" +msgstr "Gol" + +#: includes/admin/admin-field-group.php:197 +msgid "Location" +msgstr "LocaÈ›ia" + +#: includes/admin/admin-field-group.php:198 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Setări" + +#: includes/admin/admin-field-group.php:347 +msgid "Field Keys" +msgstr "Cheile câmpulurilor" + +#: includes/admin/admin-field-group.php:377 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Activ" + +#: includes/admin/admin-field-group.php:753 +msgid "Move Complete." +msgstr "Mutare Completă." + +#: includes/admin/admin-field-group.php:754 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Acest %s câmp acum poate fi găsit în %s grupul de câmpuri" + +#: includes/admin/admin-field-group.php:755 +msgid "Close Window" +msgstr "ÃŽnchide Fereastra" + +#: includes/admin/admin-field-group.php:796 +msgid "Please select the destination for this field" +msgstr "Selectează destinaÈ›ia pentru acest câmp" + +#: includes/admin/admin-field-group.php:803 +msgid "Move Field" +msgstr "Mută Câmpul" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "(%s) Activ" +msgstr[1] "(%s) Active" +msgstr[2] "(%s) Active" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Grupul de câmpuri a fost duplicat. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s grupul de câmpuri a fost duplicat." +msgstr[1] "%s grupurile de câmpuri au fost duplicate." +msgstr[2] "%s grupurile de câmpuri au fost duplicate." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Grupul de câmpuri a fost sincronizat. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s grupul de câmpuri a fost sincronizat." +msgstr[1] "%s grupurile de câmpuri au fost sincronizate." +msgstr[2] "%s grupurile de câmpuri au fost sincronizate." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Sincronizare disponibilă" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:355 +msgid "Title" +msgstr "Titlu" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:382 +msgid "Description" +msgstr "Descriere" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Stare" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "Adaugă câmpuri puternice È™i intuitive pentru a personaliza WordPress." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Catalog schimbări" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Vezi ce este nou în versiunea %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Resurse" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "DocumentaÈ›ie" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Suport Tehnic" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "" + +#: includes/admin/admin-field-groups.php:667 +msgid "Duplicate this item" +msgstr "Copiază acest item" + +#: includes/admin/admin-field-groups.php:667 +#: includes/admin/admin-field-groups.php:683 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:550 +msgid "Duplicate" +msgstr "Copiază" + +#: includes/admin/admin-field-groups.php:700 +#: includes/fields/class-acf-field-google-map.php:113 +#: includes/fields/class-acf-field-relationship.php:657 +msgid "Search" +msgstr "Caută" + +#: includes/admin/admin-field-groups.php:759 +#, php-format +msgid "Select %s" +msgstr "Selectează %s" + +#: includes/admin/admin-field-groups.php:767 +msgid "Synchronise field group" +msgstr "Sincronizare grup de câmpuri" + +#: includes/admin/admin-field-groups.php:767 +#: includes/admin/admin-field-groups.php:797 +msgid "Sync" +msgstr "Sincronizare" + +#: includes/admin/admin-field-groups.php:779 +msgid "Apply" +msgstr "Salvează" + +#: includes/admin/admin-field-groups.php:797 +msgid "Bulk Actions" +msgstr "AcÈ›iuni în masă" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Unelte" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Câmpuri Personalizate" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Actualizează baza de date" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "" + +#: includes/admin/install.php:210 includes/admin/views/install.php:104 +msgid "No updates available." +msgstr "" + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Suplimente" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Eroare. Lista de suplimente nu poate fi încărcată" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "InformaÈ›ii" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Ce este nou" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "ExportaÈ›i Grupurile de Câmputri" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "Generează PHP" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Nu a fost selectat nici un grup de câmpuri" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Un grup exportat." +msgstr[1] "%s grupuri exportate." +msgstr[2] "%s de grupuri exportate." + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "SelectaÈ›i Grupurile de Câmpuri" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"SelectaÈ›i grupurile de câmpuri pe care doriÈ›i să le exportaÈ›i È™i apoi " +"selectaÈ›i metoda de export. FolosiÈ›i butonul de descărcare pentru a exporta " +"într-un fiÈ™ier .json pe care apoi îl puteÈ›i folosi pentru a importa într-o " +"altă instalare a ACF. FolosiÈ›i butonul Generare pentru a exporta totul în " +"cod PHP, pe care îl puteÈ›i pune apoi in tema voastră." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Exportă fiÈ™ierul" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Următorul bloc de cod poate fi folosit pentru a înregistra o copie locală a " +"grupului(lor) de câmpuri selectat(e). Un grup de câmpuri local poate " +"facilita multe beneficii cum ar fi un timp de încărcare mai mic, control al " +"versiunii È™i câmpuri / setări dinamice. Pentru a beneficia de toate acestea " +"nu trebuie decât să copiaÈ›i È™i să inseraÈ›i următorul bloc de cod în fiÈ™ierul " +"functions.php al temei sau să-l includeÈ›i într-un fiÈ™ier extern." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Copiază în clipboar" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Copiat" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Importă Grupurile de câmpuri" + +#: includes/admin/tools/class-acf-admin-tool-import.php:61 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Alege fiÈ™ierul JSON ACF pe care doreÈ™ti să-l imporÈ›i. Când vei apăsa butonul " +"import de mai jos, ACF v-a importa toate grupurile de câmpuri." + +#: includes/admin/tools/class-acf-admin-tool-import.php:66 +#: includes/fields/class-acf-field-file.php:37 +msgid "Select File" +msgstr "Selectează fiÈ™ierul" + +#: includes/admin/tools/class-acf-admin-tool-import.php:76 +msgid "Import File" +msgstr "Importă fiÈ™ier" + +#: includes/admin/tools/class-acf-admin-tool-import.php:100 +#: includes/fields/class-acf-field-file.php:154 +msgid "No file selected" +msgstr "Nu a fost selectat nici un fiÈ™ier" + +#: includes/admin/tools/class-acf-admin-tool-import.php:113 +msgid "Error uploading file. Please try again" +msgstr "Eroare la încărcarea fiÈ™ierului. ÃŽncearcă din nou" + +#: includes/admin/tools/class-acf-admin-tool-import.php:122 +msgid "Incorrect file type" +msgstr "Tipul fiÈ™ierului este incorect" + +#: includes/admin/tools/class-acf-admin-tool-import.php:139 +msgid "Import file empty" +msgstr "FiÈ™ierul import este gol" + +#: includes/admin/tools/class-acf-admin-tool-import.php:247 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Un grup importat" +msgstr[1] "%s grupuri importate" +msgstr[2] "%s de grupuri importate" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "CondiÈ›ie Logică" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Arată acest câmp dacă" + +#: includes/admin/views/field-group-field-conditional-logic.php:126 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "È™i" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Adaugă grup de reguli" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:403 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Drag to reorder" +msgstr "Trage pentru a reordona" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Editează câmp" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:136 +#: includes/fields/class-acf-field-image.php:122 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:342 +msgid "Edit" +msgstr "Editeză" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Copiază câmp" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Mută acest câmp în alt grup" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Mută" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Șterge câmp" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:549 +msgid "Delete" +msgstr "Șterge" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Etichetă Câmp" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Acesta este numele care va apărea în pagina de editare" + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Nume Câmp" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "" +"Un singur cuvânt, fără spaÈ›ii. Caracterele _ (underscore) È™i - (minus) sunt " +"permise" + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Tipul Câmpului" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "InstrucÈ›iuni" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "InstrucÈ›iuni pentru autor. Sunt afiÈ™ate când se adaugă valori" + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Obligatoriu?" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Atributele Wrapper-ului" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "lățime" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "clasă" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "ÃŽnchide Câmpul" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Ordine" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:418 +#: pro/fields/class-acf-field-flexible-content.php:576 +msgid "Label" +msgstr "Etichetă" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:964 +#: pro/fields/class-acf-field-flexible-content.php:589 +msgid "Name" +msgstr "Nume" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Tip" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Nici un câmp. Click pe butonul + Adaugă Câmp pentru a crea " +"primul câmp." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Adaugă Câmp" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Reguli" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Crează un set de reguli pentru a determina unde vor fi afiÈ™ate aceste " +"câmpuri avansate personalizate" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stil" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standard (asemănător WP, foloseÈ™te metabox-uri)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Seamless (fără metabox-uri)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "PoziÈ›ie" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Mare (după titlul aricolului / paginii)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (dupa conÈ›inutul articolului / paginii)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Lateral" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "PoziÈ›ionarea etichetei" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Aliniere Sus" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Aliniere Stanga" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Plasamentul instrucÈ›iunilor" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Sub etichete" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Sub câmpuri" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Nr. crt." + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Ascunde pe ecran" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Selectează ce opÈ›iuni să fie ascune din ecranul de editare al " +"articolului sau al paginii." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Daca în ecranul de editare al articolului / paginii apar mai multiple " +"grupuri de câmpuri, atunci opÈ›iunile primul grup de câmpuri vor fi folosite " +"(cel cu numărul de ordine cel mai mic)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Legătură permanentă" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Editorul de conÈ›inut" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Descriere scurtă" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "DiscuÈ›ii" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Comentarii" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Revizii" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Slug" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Autor" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Format" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Atributele Paginii" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:671 +msgid "Featured Image" +msgstr "Imagine Reprezentativă" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Categorii" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Etichete" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Trackback-uri" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Arată acest grup de câmpuri dacă" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Este puternic recomandat să faceÈ›i o copie de siguranÈ›a a bazei de date " +"înainte de a începe procesul de actualizare. EÈ™ti sigur că vrei să începi " +"actualizarea acum?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Actualizarea datelor la versiunea %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Repeater" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "ConÈ›inut Flexibil" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galerie" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Pagina de OpÈ›iuni" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Actualizare bazei de date este necesară" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "ÃŽÈ›i mulÈ›umim pentru actualizarea făcută la %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"ÃŽnainte de a începe să foloseÈ™ti uimitoarele funcÈ›ii noi, te rungăm să " +"actualizezi baza de date la o versiune mai recentă." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Citirea sarcinilor necesare pentru actualizare..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Descarcă & Instalează" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Instalat" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Bine ai venit la Câmpuri Personalizate Avansate" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"IÈ›i mulÈ›umim pentru actualizare! ACF %s a devenit mai mare È™i mai bun. " +"Sperăm să-È›i placă." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "O folosire mai uÈ™oara a câmpurilor personalizate" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Folosire Facilă" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Includerea popularei librării Select2 a îmbunătățit folosirea dar È™i viteaza " +"pentru un număr ridicat de tipuri de câmpuri care includ, obiectele articol, " +"legătura paginii, taxonomia È™i selecÈ›ia." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Design îmbunătățit" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Multe câmpuri au dobândit un nou design vizual pentru a face ACF un produs " +"mai uÈ™or de folosit! Schimbările pot fi văzute în special, la câmpurile " +"Galerie, RelaÈ›ii È™i oEmbed(nou)!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Tipuri de Date imbunătățite" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Refacerea arhitecturii tipurilor de date a permis ca sub câmpurile să fie " +"independente de câmpurile părinte. Acest lucru vă permite să trageÈ›i È™i să " +"eliberaÈ›i câmpurile în È™i în afara câmpurilor părinte!" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "La revedere Add-onuri. Salut PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "Introducere în ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "Am schimbat modul în care funcÈ›ionalitatea premium este transmisă!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Toate cele 4 add-onuri premium au fost combinate într-o nouă Versiune PRO a ACF. Putând alege licenÈ›a personală sau licenÈ›a de " +"developer, funcÈ›ionalitatea premium este acum mai accesibilă ca niciodată!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Caracteristici puternice" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO conÈ›ine caracteristici puternice cum ar fi date repetabile, machete " +"de conÈ›inut flexibil, un frumos câmp pentru galerie È™i puterea de a crea " +"pagini administrative de opÈ›iuni!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "CiteÈ™te mai mult despre Caracteristicile ACF PRO." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Actualizare uÈ™oară" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"Pentru a facilita actualizarea într-un mod uÈ™or, intră în " +"contul tău È™i obÈ›ine o copie gratis a ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"De asemenea am pus la dispoziÈ›ia ta un ghid de actualizare pentru a răspunde tuturor întrebărilor, dar dacă totuÈ™i ai o întrebare, " +"te rog sa contactezi echipa noastră de suport, folosind help " +"desk" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Sub capată" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Setări deÈ™tepte ale câmpurilor" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "" +"ACF salvează acum setările câmpurilor ca fiind obiecte de tip articol " +"individuale" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Mai mult AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" +"Mai multe câmpuri folosesc puterea de căutare AJAX pentru a micÈ™ora timpul " +"de încărcare al paginii" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "JSON local" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "Noua funcÈ›ionalitate de auto import în JSON îmbunătățeÈ™te viteza" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Un control mai bun al versiunii" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" +"Noua funcÈ›ionalitate de auto export în JSON permite ca setările câmpurilor " +"să fie versionabile" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "Am schimbat XML în favoarea JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Importul / Exportul foloseÈ™te acum JSON în defavoarea XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Noi formulare" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Câmpurile pot fi acum mapate la comentarii, widget-uri sau orice alt " +"formular creat de user!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Un nou câmp pentru încorporarea conÈ›inutului a fost adaugat" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Galerie Nouă" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Câmpul Galierie a suferit un facelift bine meritat" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Configurări noi" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Setările grupului de câmpuri a fost adăugat pentru poziÈ›ionarea etichitelor " +"È™i a instrucÈ›iunilor" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Formulare Front End mai bune" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "" +"acf_form() poate crea acum un nou articol odată ce cererea a fost trimisă" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "O validare mai bună" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "" +"Validarea formularelor se face acum via PHP + AJAX în defavoarea numai JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Câmp de realÈ›ionare" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Setările noului câmp de relaÈ›ionare pentru Filtre (Caută, Tipul Articolului, " +"Taxonomie)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Câmpuri care pot fi mutate" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"Noua funcÈ›ionalitate a grupului de câmpuri îți permite acum să muÈ›i " +"câmpurile între grupuri" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Legătura Paginii" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Noua arhivă de grup în selecÈ›ia page_link" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "OpÈ›iuni mai bune pentru Pagini" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Noile funcÈ›ii pentru opÈ›iunile pagini îți permite acum create de pagini " +"meniu È™i submeniuri" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Credem că vei îndrăgi shimbările în %s." + +#: includes/api/api-helpers.php:1039 +msgid "Thumbnail" +msgstr "Miniatură" + +#: includes/api/api-helpers.php:1040 +msgid "Medium" +msgstr "Mediu" + +#: includes/api/api-helpers.php:1041 +msgid "Large" +msgstr "Mare" + +#: includes/api/api-helpers.php:1090 +msgid "Full Size" +msgstr "Marime completă" + +#: includes/api/api-helpers.php:1431 includes/api/api-helpers.php:2004 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(fără titlu)" + +#: includes/api/api-helpers.php:4079 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Lățimea imaginii trebuie să fie cel puÈ›in %dpx." + +#: includes/api/api-helpers.php:4084 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Lățimea imaginii nu trebuie să depășească %dpx." + +#: includes/api/api-helpers.php:4100 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "ÃŽnălÈ›imea imaginii trebuie să fie cel puÈ›in %dpx." + +#: includes/api/api-helpers.php:4105 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "ÃŽnălÈ›imea imaginii nu trebuie să depășească %dpx." + +#: includes/api/api-helpers.php:4123 +#, php-format +msgid "File size must be at least %s." +msgstr "Mărimea fiÈ™ierului trebuie să fie cel puÈ›in %s." + +#: includes/api/api-helpers.php:4128 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Mărimea fiÈ™ierului nu trebuie să depășească %s." + +#: includes/api/api-helpers.php:4162 +#, php-format +msgid "File type must be %s." +msgstr "Tipul fiÈ™ierului trebuie să fie %s." + +#: includes/assets.php:164 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "Modificările făcute vor fi pierdute dacă nu salvaÈ›i" + +#: includes/assets.php:167 includes/fields/class-acf-field-select.php:257 +msgctxt "verb" +msgid "Select" +msgstr "Selectează" + +#: includes/assets.php:168 +msgctxt "verb" +msgid "Edit" +msgstr "Editeză" + +#: includes/assets.php:169 +msgctxt "verb" +msgid "Update" +msgstr "Actualizează" + +#: includes/assets.php:170 pro/fields/class-acf-field-gallery.php:44 +msgid "Uploaded to this post" +msgstr "ÃŽncărcate pentru acest articol" + +#: includes/assets.php:171 +msgid "Expand Details" +msgstr "Extinde Detaliile" + +#: includes/assets.php:172 +msgid "Collapse Details" +msgstr "ÃŽnchide Detaliile" + +#: includes/assets.php:173 +msgid "Restricted" +msgstr "" + +#: includes/assets.php:174 +msgid "All images" +msgstr "Toate imaginiile" + +#: includes/assets.php:177 +msgid "Validation successful" +msgstr "Validare a fost făcută cu succes" + +#: includes/assets.php:178 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Validarea a eÈ™uat" + +#: includes/assets.php:179 +msgid "1 field requires attention" +msgstr "" + +#: includes/assets.php:180 +#, php-format +msgid "%d fields require attention" +msgstr "" + +#: includes/assets.php:183 +msgid "Are you sure?" +msgstr "" + +#: includes/assets.php:184 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Da" + +#: includes/assets.php:185 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Nu" + +#: includes/assets.php:186 includes/fields/class-acf-field-file.php:138 +#: includes/fields/class-acf-field-image.php:124 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:343 +#: pro/fields/class-acf-field-gallery.php:531 +msgid "Remove" +msgstr "ÃŽnlătură" + +#: includes/assets.php:187 +msgid "Cancel" +msgstr "" + +#: includes/assets.php:190 +msgid "Has any value" +msgstr "" + +#: includes/assets.php:191 +msgid "Has no value" +msgstr "" + +#: includes/assets.php:192 +msgid "Value is equal to" +msgstr "" + +#: includes/assets.php:193 +msgid "Value is not equal to" +msgstr "" + +#: includes/assets.php:194 +msgid "Value matches pattern" +msgstr "" + +#: includes/assets.php:195 +msgid "Value contains" +msgstr "" + +#: includes/assets.php:196 +msgid "Value is greater than" +msgstr "" + +#: includes/assets.php:197 +msgid "Value is less than" +msgstr "" + +#: includes/assets.php:198 +msgid "Selection is greater than" +msgstr "" + +#: includes/assets.php:199 +msgid "Selection is less than" +msgstr "" + +#: includes/fields.php:144 +msgid "Basic" +msgstr "De bază" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "ConÈ›inut" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Alegere" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "RelaÈ›ional" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:546 +#: pro/fields/class-acf-field-flexible-content.php:595 +#: pro/fields/class-acf-field-repeater.php:442 +msgid "Layout" +msgstr "Schemă" + +#: includes/fields.php:326 +msgid "Field type does not exist" +msgstr "Tipul câmpului nu există" + +#: includes/fields.php:326 +msgid "Unknown" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:349 +msgid "Choices" +msgstr "Alegere" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:350 +msgid "Enter each choice on a new line." +msgstr "Pune fiecare alegere pe o linie nouă." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:350 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Pentru un mai bun control, poÈ›i specifica o valoare È™i o etichetă ca de " +"exemplu:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:350 +msgid "red : Red" +msgstr "roÈ™u : RoÈ™u" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:367 +#: includes/fields/class-acf-field-taxonomy.php:793 +#: includes/fields/class-acf-field-user.php:409 +msgid "Allow Null?" +msgstr "Permite valori nule?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:146 +#: includes/fields/class-acf-field-select.php:358 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:410 +msgid "Default Value" +msgstr "Valoare implicită" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:147 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Appears when creating a new post" +msgstr "Apare cănd creaÈ›i un articol nou" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Orizontal" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Vertical" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:199 +#: includes/fields/class-acf-field-image.php:188 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:833 +msgid "Return Value" +msgstr "Valoarea returnată" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:200 +#: includes/fields/class-acf-field-image.php:189 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "SpecificaÈ›i valoarea returnată în front end" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:417 +msgid "Value" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:419 +msgid "Both (Array)" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Checkbox" +msgstr "Checkbox" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Comută tot" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:359 +msgid "Enter each default value on a new line" +msgstr "Introdu fiecare valoare implicită pe o linie nouă" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Alege Culoarea" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Curăță" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Implicit" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Alege Culoarea" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Alege data calendaristică" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Astăzi" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Următor" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Anterior" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Săpt" + +#: includes/fields/class-acf-field-date_picker.php:180 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Formatul de AfiÈ™are" + +#: includes/fields/class-acf-field-date_picker.php:181 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Formatul afiÈ™at în momentul editării unui articol" + +#: includes/fields/class-acf-field-date_picker.php:189 +#: includes/fields/class-acf-field-date_picker.php:220 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:199 +msgid "Save Format" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:200 +msgid "The format used when saving a value" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:210 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:698 +#: includes/fields/class-acf-field-select.php:412 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:428 +msgid "Return Format" +msgstr "Formatul Returnat" + +#: includes/fields/class-acf-field-date_picker.php:211 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Formatul rezultat via funcÈ›iilor È™ablon" + +#: includes/fields/class-acf-field-date_picker.php:229 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "Săptămâna începe în ziua de" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Alege ora" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Ora" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Oră" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minut" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Secundă" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milisecundă" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Microsecundă" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Fus Orar" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Acum" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Gata" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Selectează" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "Adresă de email" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Textul afiÈ™at ca placeholder" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Apare în intrare" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:185 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Prefixează" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:186 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Apare înainte de intrare" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:194 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Adaugă" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:195 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Apare după intrare" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "FiÈ™ier" + +#: includes/fields/class-acf-field-file.php:38 +msgid "Edit File" +msgstr "Editează fiÈ™ierul" + +#: includes/fields/class-acf-field-file.php:39 +msgid "Update File" +msgstr "Actualizează fiÈ™ierul" + +#: includes/fields/class-acf-field-file.php:125 +msgid "File name" +msgstr "" + +#: includes/fields/class-acf-field-file.php:129 +#: includes/fields/class-acf-field-file.php:232 +#: includes/fields/class-acf-field-file.php:243 +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: pro/fields/class-acf-field-gallery.php:690 +#: pro/fields/class-acf-field-gallery.php:719 +msgid "File size" +msgstr "Mărime fiÈ™ier" + +#: includes/fields/class-acf-field-file.php:154 +msgid "Add File" +msgstr "Adaugă fiÈ™ier" + +#: includes/fields/class-acf-field-file.php:205 +msgid "File Array" +msgstr "MulÈ›ime de fiÈ™ier" + +#: includes/fields/class-acf-field-file.php:206 +msgid "File URL" +msgstr "Cale FiÈ™ier" + +#: includes/fields/class-acf-field-file.php:207 +msgid "File ID" +msgstr "ID FiÈ™ier" + +#: includes/fields/class-acf-field-file.php:214 +#: includes/fields/class-acf-field-image.php:213 +#: pro/fields/class-acf-field-gallery.php:655 +msgid "Library" +msgstr "Librărie" + +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:214 +#: pro/fields/class-acf-field-gallery.php:656 +msgid "Limit the media library choice" +msgstr "LimitaÈ›i alegerea librăriei media" + +#: includes/fields/class-acf-field-file.php:220 +#: includes/fields/class-acf-field-image.php:219 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:661 +msgid "All" +msgstr "Toate" + +#: includes/fields/class-acf-field-file.php:221 +#: includes/fields/class-acf-field-image.php:220 +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Uploaded to post" +msgstr "ÃŽncărcate pentru acest articol" + +#: includes/fields/class-acf-field-file.php:228 +#: includes/fields/class-acf-field-image.php:227 +#: pro/fields/class-acf-field-gallery.php:669 +msgid "Minimum" +msgstr "Minim" + +#: includes/fields/class-acf-field-file.php:229 +#: includes/fields/class-acf-field-file.php:240 +msgid "Restrict which files can be uploaded" +msgstr "RestricÈ›ionaÈ›i ce tipuri de fiÈ™iere pot fi încărcate" + +#: includes/fields/class-acf-field-file.php:239 +#: includes/fields/class-acf-field-image.php:256 +#: pro/fields/class-acf-field-gallery.php:698 +msgid "Maximum" +msgstr "Maxim" + +#: includes/fields/class-acf-field-file.php:250 +#: includes/fields/class-acf-field-image.php:285 +#: pro/fields/class-acf-field-gallery.php:727 +msgid "Allowed file types" +msgstr "Tipuri de fiÈ™iere permise" + +#: includes/fields/class-acf-field-file.php:251 +#: includes/fields/class-acf-field-image.php:286 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "Listă separată prin virgulă. LăsaÈ›i liber pentru toate tipurile" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Hartă Google" + +#: includes/fields/class-acf-field-google-map.php:43 +msgid "Sorry, this browser does not support geolocation" +msgstr "Ne pare rău, acest broswer nu suportă geo locaÈ›ia" + +#: includes/fields/class-acf-field-google-map.php:114 +msgid "Clear location" +msgstr "Sterge LocaÈ›ia" + +#: includes/fields/class-acf-field-google-map.php:115 +msgid "Find current location" +msgstr "GăseÈ™te locaÈ›ia curentă" + +#: includes/fields/class-acf-field-google-map.php:118 +msgid "Search for address..." +msgstr "Caută adresa..." + +#: includes/fields/class-acf-field-google-map.php:148 +#: includes/fields/class-acf-field-google-map.php:159 +msgid "Center" +msgstr "Centru" + +#: includes/fields/class-acf-field-google-map.php:149 +#: includes/fields/class-acf-field-google-map.php:160 +msgid "Center the initial map" +msgstr "Centrează harta iniÈ›ială" + +#: includes/fields/class-acf-field-google-map.php:171 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:172 +msgid "Set the initial zoom level" +msgstr "Setează nivelul de zoom iniÈ›ial" + +#: includes/fields/class-acf-field-google-map.php:181 +#: includes/fields/class-acf-field-image.php:239 +#: includes/fields/class-acf-field-image.php:268 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:681 +#: pro/fields/class-acf-field-gallery.php:710 +msgid "Height" +msgstr "ÃŽnălÈ›ime" + +#: includes/fields/class-acf-field-google-map.php:182 +msgid "Customise the map height" +msgstr "PersonalizaÈ›i înălÈ›imea hărÈ›ii" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:381 +msgid "Sub Fields" +msgstr "Sub câmpuri" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:606 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Block" +msgstr "Bloc" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:605 +#: pro/fields/class-acf-field-repeater.php:449 +msgid "Table" +msgstr "Tabel" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:607 +#: pro/fields/class-acf-field-repeater.php:451 +msgid "Row" +msgstr "Linie" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Imagine" + +#: includes/fields/class-acf-field-image.php:42 +msgid "Select Image" +msgstr "Alege imaginea" + +#: includes/fields/class-acf-field-image.php:43 +#: pro/fields/class-acf-field-gallery.php:42 +msgid "Edit Image" +msgstr "Editează imaginea" + +#: includes/fields/class-acf-field-image.php:44 +#: pro/fields/class-acf-field-gallery.php:43 +msgid "Update Image" +msgstr "Actualizează imaginea" + +#: includes/fields/class-acf-field-image.php:140 +msgid "No image selected" +msgstr "Nu ai selectat nici o imagine" + +#: includes/fields/class-acf-field-image.php:140 +msgid "Add Image" +msgstr "Adaugă o imagine" + +#: includes/fields/class-acf-field-image.php:194 +msgid "Image Array" +msgstr "MulÈ›ime de imagini" + +#: includes/fields/class-acf-field-image.php:195 +msgid "Image URL" +msgstr "URL-ul imaginii" + +#: includes/fields/class-acf-field-image.php:196 +msgid "Image ID" +msgstr "ID-ul imaginii" + +#: includes/fields/class-acf-field-image.php:203 +msgid "Preview Size" +msgstr "Dimensiunea previzualizării" + +#: includes/fields/class-acf-field-image.php:204 +msgid "Shown when entering data" +msgstr "AfiÈ™at la introducerea datelor" + +#: includes/fields/class-acf-field-image.php:228 +#: includes/fields/class-acf-field-image.php:257 +#: pro/fields/class-acf-field-gallery.php:670 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Restrict which images can be uploaded" +msgstr "RestricÈ›ionează care imagini pot fi încărcate" + +#: includes/fields/class-acf-field-image.php:231 +#: includes/fields/class-acf-field-image.php:260 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:673 +#: pro/fields/class-acf-field-gallery.php:702 +msgid "Width" +msgstr "Lățime" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Mesaj" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Linii Noi" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Controlează cum sunt redate noile linii" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Adaugă automat paragrafe" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Adaugă automat <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Nici o Formater" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "Scăpare HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" +"Permite markup-ului HTML să fie afiÈ™at că text vizibil în loc să fie " +"interpretat" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Număr" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:155 +msgid "Minimum Value" +msgstr "Valoare minimă" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:165 +msgid "Maximum Value" +msgstr "Valoare maximă" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:175 +msgid "Step Size" +msgstr "Mărime pas" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Valoarea trebuie să fie un număr" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Valoarea trebuie să fie egală sau mai mare decât %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Valoarea trebuie să fie egală sau mai mică decât %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "IntroduceÈ›i URL" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Marimea Embed" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Arhive" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:986 +msgid "Parent" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:624 +msgid "Filter by Post Type" +msgstr "Filtur dupa Tipul Articolului" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:632 +msgid "All post types" +msgstr "Toate Tipurile Articolului" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:638 +msgid "Filter by Taxonomy" +msgstr "Filtru după Taxonomie" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:646 +msgid "All taxonomies" +msgstr "Toate Taxonomiile" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-user.php:419 +msgid "Select multiple values?" +msgstr "Permite selecÈ›ia de valori multiple?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Parolă" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:703 +msgid "Post Object" +msgstr "Obiect Articol" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Post ID" +msgstr "ID-ul Articolului" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Buton Radio" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Altceva" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Adaugă 'Altceva' pentru a permite o valoare personalizată" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Salvează Altceva" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Salvează valoarea 'Altceva' la opÈ›iunile câmpului" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "RelaÈ›ie" + +#: includes/fields/class-acf-field-relationship.php:40 +msgid "Maximum values reached ( {max} values )" +msgstr "Valorile maxime atinse ( {max} valori )" + +#: includes/fields/class-acf-field-relationship.php:41 +msgid "Loading" +msgstr "Se încarcă" + +#: includes/fields/class-acf-field-relationship.php:42 +msgid "No matches found" +msgstr "Nici un rezultat" + +#: includes/fields/class-acf-field-relationship.php:424 +msgid "Select post type" +msgstr "AlegeÈ›i tipul articolului" + +#: includes/fields/class-acf-field-relationship.php:450 +msgid "Select taxonomy" +msgstr "AlegeÈ›i taxonomia" + +#: includes/fields/class-acf-field-relationship.php:540 +msgid "Search..." +msgstr "Caută..." + +#: includes/fields/class-acf-field-relationship.php:652 +msgid "Filters" +msgstr "Filtre" + +#: includes/fields/class-acf-field-relationship.php:658 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Tipul Articolului" + +#: includes/fields/class-acf-field-relationship.php:659 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:763 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taxonomie" + +#: includes/fields/class-acf-field-relationship.php:666 +msgid "Elements" +msgstr "Elemente" + +#: includes/fields/class-acf-field-relationship.php:667 +msgid "Selected elements will be displayed in each result" +msgstr "Elementele selectate vor apărea în fiecare rezultat" + +#: includes/fields/class-acf-field-relationship.php:678 +msgid "Minimum posts" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:687 +msgid "Maximum posts" +msgstr "Numărul maxim de articole" + +#: includes/fields/class-acf-field-relationship.php:791 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s necesită cel puÈ›in %s selectie" +msgstr[1] "%s necesită cel puÈ›in %s selecÈ›ii" +msgstr[2] "%s necesită cel puÈ›in %s selecÈ›ii" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:785 +msgctxt "noun" +msgid "Select" +msgstr "Selectează" + +#: includes/fields/class-acf-field-select.php:40 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Un rezultat disponibil, apasă enter pentru a-l selecta." + +#: includes/fields/class-acf-field-select.php:41 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d rezultate disponibile, apasă tastele sus/jos pentru a naviga." + +#: includes/fields/class-acf-field-select.php:42 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Nici un rezultat" + +#: includes/fields/class-acf-field-select.php:43 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Te rog să introduci cel puÈ›in un caracter" + +#: includes/fields/class-acf-field-select.php:44 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Te rog să introduci %d sau mai multe caractere" + +#: includes/fields/class-acf-field-select.php:45 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Te rog să È™tergi un caracter" + +#: includes/fields/class-acf-field-select.php:46 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Te rog să È™tergi %d caractere" + +#: includes/fields/class-acf-field-select.php:47 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "PoÈ›i selecta un singur element" + +#: includes/fields/class-acf-field-select.php:48 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "PoÈ›i selecta %d elemente" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Se încarcă mai multe rezultate…" + +#: includes/fields/class-acf-field-select.php:50 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Se caută…" + +#: includes/fields/class-acf-field-select.php:51 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "ÃŽncărcarea a eÈ™uat" + +#: includes/fields/class-acf-field-select.php:387 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "UI stilizat" + +#: includes/fields/class-acf-field-select.php:397 +msgid "Use AJAX to lazy load choices?" +msgstr "FolosiÈ›i AJAX pentru a încărca alegerile în modul â€Lazy Loadâ€?" + +#: includes/fields/class-acf-field-select.php:413 +msgid "Specify the value returned" +msgstr "" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Tab" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Plasament" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:713 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Fără %s" + +#: includes/fields/class-acf-field-taxonomy.php:732 +msgid "None" +msgstr "Nici unul" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Select the taxonomy to be displayed" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:773 +msgid "Appearance" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Select the appearance of this field" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Multiple Values" +msgstr "Valori multiple" + +#: includes/fields/class-acf-field-taxonomy.php:781 +msgid "Multi Select" +msgstr "Selectie multiplă" + +#: includes/fields/class-acf-field-taxonomy.php:783 +msgid "Single Value" +msgstr "O singură valoare" + +#: includes/fields/class-acf-field-taxonomy.php:784 +msgid "Radio Buttons" +msgstr "Butoane radio" + +#: includes/fields/class-acf-field-taxonomy.php:803 +msgid "Create Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:804 +msgid "Allow new terms to be created whilst editing" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:813 +msgid "Save Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:814 +msgid "Connect selected terms to the post" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:823 +msgid "Load Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:824 +msgid "Load value from posts terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:838 +msgid "Term Object" +msgstr "Obiectul Termen" + +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Term ID" +msgstr "ID-ul Termenului" + +#: includes/fields/class-acf-field-taxonomy.php:898 +msgid "Error." +msgstr "Eroare." + +#: includes/fields/class-acf-field-taxonomy.php:898 +#, php-format +msgid "User unable to add new %s" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:911 +#, php-format +msgid "%s already exists" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:952 +#, php-format +msgid "%s added" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:998 +msgid "Add" +msgstr "" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Limită de caractere" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Lasă gol pentru a nu a avea o limită" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Zonă de Text" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Linii" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Setează înălÈ›imea zonei de text" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Adevărat / False" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "Url" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Valoarea trebuie să fie un URL valid" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Utilizatorul" + +#: includes/fields/class-acf-field-user.php:394 +msgid "Filter by role" +msgstr "Filtrează după rol" + +#: includes/fields/class-acf-field-user.php:402 +msgid "All user roles" +msgstr "Toate rolurile de utilizator" + +#: includes/fields/class-acf-field-user.php:433 +msgid "User Array" +msgstr "" + +#: includes/fields/class-acf-field-user.php:434 +msgid "User Object" +msgstr "" + +#: includes/fields/class-acf-field-user.php:435 +msgid "User ID" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Editor Vizual" + +#: includes/fields/class-acf-field-wysiwyg.php:359 +msgid "Visual" +msgstr "Visual" + +#: includes/fields/class-acf-field-wysiwyg.php:360 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-wysiwyg.php:366 +msgid "Click to initialize TinyMCE" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Tabs" +msgstr "Taburi" + +#: includes/fields/class-acf-field-wysiwyg.php:424 +msgid "Visual & Text" +msgstr "Vizual & Text" + +#: includes/fields/class-acf-field-wysiwyg.php:425 +msgid "Visual Only" +msgstr "Doar Vizual" + +#: includes/fields/class-acf-field-wysiwyg.php:426 +msgid "Text Only" +msgstr "Doar Text" + +#: includes/fields/class-acf-field-wysiwyg.php:433 +msgid "Toolbar" +msgstr "Bară de instrumente" + +#: includes/fields/class-acf-field-wysiwyg.php:443 +msgid "Show Media Upload Buttons?" +msgstr "Arată Butoanele de ÃŽncărcare a fiÈ™ierelor Media?" + +#: includes/fields/class-acf-field-wysiwyg.php:453 +msgid "Delay initialization?" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:454 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Editează Grupul de Câmpuri" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "" + +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:573 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Actualizează" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Articol Actualizat" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Articol" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Pagina" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulare" + +#: includes/locations.php:247 +msgid "is equal to" +msgstr "este egal cu" + +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "nu este egal cu" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "AtaÈ™ament" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Comentariu" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Rolul Utilizatorului Curent" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Super Admin" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Utilizatorul Curent" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Autentifiat" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Vezi front-end" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Vezi back-end" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Pagina Părinte" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Macheta Pagini" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Format Implicit" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Tipul Pagini" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Pagina principală" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Pagina Articolelor" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Pagina primului nivel (fără părinte)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Pagina părinte (are succesori)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Pagina Succesor (are părinte)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Categoria Articolului" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Formatul Articolului" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Starea Articolui" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Taxonomia Articolului" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Formularul Utilizatorului" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Adaugă / Editează" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "ÃŽnregistrează" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Rolul Utilizatorului" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Piesă" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s valoarea este obligatorie" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Câmpuri Avansate Personalizate PRO" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Publică" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Nu a fost găsit nici un grup de câmpuri personalizate. Creează un Grup de Câmpuri Personalizat" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Eroare. Conexiunea cu servărul a fost pierdută" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Actualizări" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Dezactivează LicenÈ›a" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Activează LicenÈ›a" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Cod de activare" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Actualizează infromaÈ›iile" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Versiunea curentă" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "Ultima versiune" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Sunt disponibile actualizări" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Actualizează Modulul" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "" +"Te rog sa introduci codul de activare în câmpul de mai sus pentru a permite " +"actualizări" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Verifică din nou" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "AnunÈ› Actualizări" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Clonează" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Arată" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Câmp necunoscut" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Grup de câmpuri necunoscut" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:174 +#: pro/fields/class-acf-field-repeater.php:462 +msgid "Add Row" +msgstr "Adaugă o linie nouă" + +#: pro/fields/class-acf-field-flexible-content.php:34 +msgid "layout" +msgstr "schemă" + +#: pro/fields/class-acf-field-flexible-content.php:35 +msgid "layouts" +msgstr "scheme" + +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "remove {layout}?" +msgstr "înlătură {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:37 +msgid "This field requires at least {min} {identifier}" +msgstr "Acest câmp necesită cel puÈ›in {min} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:38 +msgid "This field has a limit of {max} {identifier}" +msgstr "Acest câmp are o limită de {max} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:39 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Acest câmp necesită cel puÈ›in {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:40 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Numărul maxim de {label} a fost atins ({max} {identifier})" + +#: pro/fields/class-acf-field-flexible-content.php:41 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} disponibile (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:42 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} obligatoriu (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:43 +msgid "Flexible Content requires at least 1 layout" +msgstr "ConÈ›inutul Flexibil necesită cel puÈ›in 1 schemă" + +#: pro/fields/class-acf-field-flexible-content.php:273 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Apasă butonul \"%s\" de mai jos pentru a începe să îți creezi schema" + +#: pro/fields/class-acf-field-flexible-content.php:406 +msgid "Add layout" +msgstr "Adaugă Schema" + +#: pro/fields/class-acf-field-flexible-content.php:407 +msgid "Remove layout" +msgstr "ÃŽnlătură Schema" + +#: pro/fields/class-acf-field-flexible-content.php:408 +#: pro/fields/class-acf-field-repeater.php:298 +msgid "Click to toggle" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:548 +msgid "Reorder Layout" +msgstr "Reordonează Schema" + +#: pro/fields/class-acf-field-flexible-content.php:548 +msgid "Reorder" +msgstr "Reordonează" + +#: pro/fields/class-acf-field-flexible-content.php:549 +msgid "Delete Layout" +msgstr "Șterge Schema" + +#: pro/fields/class-acf-field-flexible-content.php:550 +msgid "Duplicate Layout" +msgstr "Copiază Schema" + +#: pro/fields/class-acf-field-flexible-content.php:551 +msgid "Add New Layout" +msgstr "Adaugă o Nouă Schemă" + +#: pro/fields/class-acf-field-flexible-content.php:622 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:635 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:662 +#: pro/fields/class-acf-field-repeater.php:458 +msgid "Button Label" +msgstr "Buton Etichetă" + +#: pro/fields/class-acf-field-flexible-content.php:671 +msgid "Minimum Layouts" +msgstr "Scheme Minime" + +#: pro/fields/class-acf-field-flexible-content.php:680 +msgid "Maximum Layouts" +msgstr "Scheme Maxime" + +#: pro/fields/class-acf-field-gallery.php:41 +msgid "Add Image to Gallery" +msgstr "Adaugă imagini în Galerie" + +#: pro/fields/class-acf-field-gallery.php:45 +msgid "Maximum selection reached" +msgstr "SelecÈ›ia maximă atinsă" + +#: pro/fields/class-acf-field-gallery.php:321 +msgid "Length" +msgstr "Lungime" + +#: pro/fields/class-acf-field-gallery.php:364 +msgid "Caption" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:373 +msgid "Alt Text" +msgstr "Text alternativ" + +#: pro/fields/class-acf-field-gallery.php:544 +msgid "Add to gallery" +msgstr "Adaugă în galerie" + +#: pro/fields/class-acf-field-gallery.php:548 +msgid "Bulk actions" +msgstr "AcÈ›iuni în masă" + +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Sort by date uploaded" +msgstr "Sortează după data încărcării" + +#: pro/fields/class-acf-field-gallery.php:550 +msgid "Sort by date modified" +msgstr "Sortează după data modficării" + +#: pro/fields/class-acf-field-gallery.php:551 +msgid "Sort by title" +msgstr "Sortează după titlu" + +#: pro/fields/class-acf-field-gallery.php:552 +msgid "Reverse current order" +msgstr "Inversează ordinea curentă" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Close" +msgstr "ÃŽnchide" + +#: pro/fields/class-acf-field-gallery.php:624 +msgid "Minimum Selection" +msgstr "SelecÈ›ie minimă" + +#: pro/fields/class-acf-field-gallery.php:633 +msgid "Maximum Selection" +msgstr "SelecÈ›ie maximă" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Insert" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:643 +msgid "Specify where new attachments are added" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:647 +msgid "Append to the end" +msgstr "Adaugă la sfârÈ™it" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Prepend to the beginning" +msgstr "Adaugă la început" + +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Minimum rows reached ({min} rows)" +msgstr "Numărul minim de linii a fost atins ({min} rows)" + +#: pro/fields/class-acf-field-repeater.php:37 +msgid "Maximum rows reached ({max} rows)" +msgstr "Numărul maxim de linii a fost atins ({max} rows)" + +#: pro/fields/class-acf-field-repeater.php:335 +msgid "Add row" +msgstr "Adaugă linie" + +#: pro/fields/class-acf-field-repeater.php:336 +msgid "Remove row" +msgstr "ÃŽnlătură linie" + +#: pro/fields/class-acf-field-repeater.php:411 +msgid "Collapsed" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:412 +msgid "Select a sub field to show when row is collapsed" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:422 +msgid "Minimum Rows" +msgstr "Numărul minim de Linii" + +#: pro/fields/class-acf-field-repeater.php:432 +msgid "Maximum Rows" +msgstr "Numărul maxim de Linii" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Nu există nicio pagină de opÈ›iuni" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "OpÈ›iuni" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "OpÈ›iunile au fost actualizate" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Pentru a activa actualizările, este nevoie să introduci licenÈ›a în pagina de actualizări. Dacă nu ai o licență, verifică aici detaliile È™i preÈ›ul." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "" + +#~ msgid "No toggle fields available" +#~ msgstr "Nu sunt câmpuri de comutare disponibile" + +#~ msgid "Parent fields" +#~ msgstr "Câpuri parinte" + +#~ msgid "Sibling fields" +#~ msgstr "Câmpuri copil" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Exportă Grupurile de Câmpuri în PHP" + +#~ msgid "Download export file" +#~ msgstr "Descarcă fiÈ™ierul de export" + +#~ msgid "Generate export code" +#~ msgstr "Generează codul de export" + +#~ msgid "Import" +#~ msgstr "Importă" + +#~ msgid "Locating" +#~ msgstr "Localizare" + +#~ msgid "No embed found for the given URL." +#~ msgstr "Nu a fost găsit nici un oembed pentru URL introdus." + +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Câmpul Tab nu va fi afiÈ™at corect când vei adauga un Câmp de tipul Tabel " +#~ "de stiluri repetitiv sau un Câmp de tipul Schemă de ConÈ›inut Flexibil" + +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "FoloseÈ™te \"Tab Fields\" pentru o mai uÈ™oară organizare È™i grupare a " +#~ "câmpurilor." + +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Toate câmpurile care urmează după acest \"tab field\" (sau până când un " +#~ "alt \"tab field\" este definit) vor fi grupate împreună folosind " +#~ "eticheta acestui câmp ca fiind Titlul Tabului." + +#~ msgid "Taxonomy Term" +#~ msgstr "Termenul Taxonomiei" + +#~ msgid "See what's new in" +#~ msgstr "Vezi ce este nou în" + +#~ msgid "version" +#~ msgstr "versiunea" + +#~ msgid "Getting Started" +#~ msgstr "Pentru început" + +#~ msgid "Field Types" +#~ msgstr "Tiurile Câmpului" + +#~ msgid "Functions" +#~ msgstr "FuncÈ›ii" + +#~ msgid "Actions" +#~ msgstr "AcÈ›iuni" + +#~ msgid "'How to' guides" +#~ msgstr "Ghiduri 'Cum să...'" + +#~ msgid "Tutorials" +#~ msgstr "Tutoriale" + +#~ msgid "Created by" +#~ msgstr "Creat de" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "Suces. Unealta import a adaugat %s grupuri de câmpuri: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "AtenÈ›ie. Unealta import a detectat %s grupuri de câmpuri care " +#~ "exista deja È™i a ignorat: %s" + +#~ msgid "Upgrade" +#~ msgstr "ÃŽmbunătățire" + +#~ msgid "Error" +#~ msgstr "Eroare" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "Trage È™i eliberează pentru a ordona" + +#~ msgid "See what's new" +#~ msgstr "Află ce este nou" + +#~ msgid "Done" +#~ msgstr "Terminare" + +#~ msgid "Today" +#~ msgstr "Azi" + +#~ msgid "Show a different month" +#~ msgstr "Arată o altă lună" + +#~ msgid "Return format" +#~ msgstr "Fromatul rezultat" + +#~ msgid "uploaded to this post" +#~ msgstr "încărcate la acest articol" + +#~ msgid "File Name" +#~ msgstr "Numele fiÈ™ierului" + +#~ msgid "File Size" +#~ msgstr "Mărimea fiÈ™ierului" + +#~ msgid "No File selected" +#~ msgstr "Nu a fost selectat nici un fiÈ™ier" + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "" +#~ "Vă rugăm să reÈ›ineÈ›i că toate textele vor fi mai întâi trecute prin " +#~ "funcÈ›ia wp" + +#~ msgid "Select" +#~ msgstr "Selectează" + +#~ msgid "Warning" +#~ msgstr "AtenÈ›ie" + +#~ msgid "eg. Show extra content" +#~ msgstr "ex. Arată extra conÈ›inut" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Eroare de conexiune. ÃŽmi pare rău, încearcă mai târziu" + +#~ msgid "Save Options" +#~ msgstr "Salvează OpÈ›iuni" + +#~ msgid "License" +#~ msgstr "Licență" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Pentru a permite actualizări, te rog să introduci codul de activare în " +#~ "câmpul de mai jos. Dacă nu deÈ›ii un cod de activare, te rog vizitează" + +#~ msgid "details & pricing" +#~ msgstr "detalii & preÈ›uri" + +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "Pentru a activa actualizările, te rog să introduci codul de activare pe " +#~ "pagina Actualizări. Dacă nu ai un cod de activare, te " +#~ "rog sa vizitezi pagina detalii & preÈ›uri" + +#~ msgid "Hide / Show All" +#~ msgstr "Selectează / Deselectează tot" + +#~ msgid "Show Field Keys" +#~ msgstr "Arată Cheile Câmpului" + +#~ msgid "Pending Review" +#~ msgstr "AÈ™teaptă Revizuirea" + +#~ msgid "Draft" +#~ msgstr "Ciornă" + +#~ msgid "Future" +#~ msgstr "Viitor" + +#~ msgid "Private" +#~ msgstr "Privat" + +#~ msgid "Revision" +#~ msgstr "Revizie" + +#~ msgid "Trash" +#~ msgstr "CoÈ™ul de gunoi" + +#~ msgid "Import / Export" +#~ msgstr "Importă / Exportă" + +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "Grupurile de câmpuri sunt create în ordine crescătoare" + +#~ msgid "ACF PRO Required" +#~ msgstr "Este necesară versiunea ACF RPO" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website " +#~ "makes use of premium add-ons (%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "Am detectat o problemă care necesită atenÈ›ia ta: Acest website foloseÈ™te " +#~ "add-onuri premium (%s) care nu mai sunt compatibile cu ACF." + +#~ msgid "" +#~ "Don't panic, you can simply roll back the plugin and continue using ACF " +#~ "as you know it!" +#~ msgstr "" +#~ "Nu te panica, poÈ›i reveni oricând la o versiune anterioară È™i poÈ›i folosi " +#~ "în continuare ACF aÈ™a cum È™tii!" + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "Revenire la versiunea %s a ACF" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "Află de ce ACF PRO este cerut pentru site-ul tău" + +#~ msgid "Update Database" +#~ msgstr "Actualizarea Bazei de Date" + +#~ msgid "Data Upgrade" +#~ msgstr "Actualizare Date" + +#~ msgid "Data upgraded successfully." +#~ msgstr "Actualizarea datelor a fost făcută cu succes." + +#~ msgid "Data is at the latest version." +#~ msgstr "Datele sunt actualizate." + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "1 câmp obligatoriu este gol" +#~ msgstr[1] "%s câmpuri obligatorii sunt goale" +#~ msgstr[2] "" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "ÃŽncarcă È™i Salvează Termenii la Articol" + +#~ msgid "" +#~ "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "" +#~ "ÃŽncarcă valoarea pe baza termenilor articolului È™i actualizează termenii " +#~ "în momentul salvării" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-ru_RU.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-ru_RU.mo new file mode 100644 index 0000000000000000000000000000000000000000..319c3589254a52bacc91f871ed61f1e19f82bbdb GIT binary patch literal 65754 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 QNoKGOj3rUhP7I6eFXw&IWdHyG literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-ru_RU.po b/wp-content/plugins/advanced-custom-fields/lang/acf-ru_RU.po new file mode 100644 index 0000000..8f2e550 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-ru_RU.po @@ -0,0 +1,4335 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2018-08-18 18:25+0300\n" +"PO-Revision-Date: 2019-01-05 10:08+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: \n" +"Language: ru_RU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:392 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Группы полей" + +#: acf.php:393 +msgid "Field Group" +msgstr "Группа полей" + +#: acf.php:394 acf.php:426 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New" +msgstr "Добавить" + +#: acf.php:395 +msgid "Add New Field Group" +msgstr "Создание новой группы полей" + +#: acf.php:396 +msgid "Edit Field Group" +msgstr "Редактирование группы полей" + +#: acf.php:397 +msgid "New Field Group" +msgstr "ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° полей" + +#: acf.php:398 +msgid "View Field Group" +msgstr "ПроÑмотреть группу полей" + +#: acf.php:399 +msgid "Search Field Groups" +msgstr "ПоиÑк групп полей" + +#: acf.php:400 +msgid "No Field Groups found" +msgstr "Группы полей не найдены." + +#: acf.php:401 +msgid "No Field Groups found in Trash" +msgstr "Группы полей не найдены в корзине." + +#: acf.php:424 includes/admin/admin-field-group.php:202 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "ПолÑ" + +#: acf.php:425 +msgid "Field" +msgstr "Поле" + +#: acf.php:427 +msgid "Add New Field" +msgstr "Добавить новое поле" + +#: acf.php:428 +msgid "Edit Field" +msgstr "Изменить поле" + +#: acf.php:429 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Ðовое поле" + +#: acf.php:430 +msgid "View Field" +msgstr "ПроÑмотреть поле" + +#: acf.php:431 +msgid "Search Fields" +msgstr "ПоиÑк полей" + +#: acf.php:432 +msgid "No Fields found" +msgstr "ÐŸÐ¾Ð»Ñ Ð½Ðµ найдены" + +#: acf.php:433 +msgid "No Fields found in Trash" +msgstr "ÐŸÐ¾Ð»Ñ Ð½Ðµ найдены в Корзине" + +#: acf.php:472 includes/admin/admin-field-group.php:384 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Ðеактивно" + +#: acf.php:477 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Ðеактивен (%s)" +msgstr[1] "Ðеактивны (%s)" +msgstr[2] "Ðеактивно (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Группа полей обновлена." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Группа полей удалена." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Группа полей опубликована." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Группа полей Ñохранена." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Группа полей отправлена." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Группа полей запланирована на" + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Черновик группы полей обновлен." + +#: includes/admin/admin-field-group.php:153 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð½Ðµ должно начинатьÑÑ Ñо Ñтроки \"field_\"" + +#: includes/admin/admin-field-group.php:154 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Это поле не может быть перемещено до ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹" + +#: includes/admin/admin-field-group.php:155 +msgid "Field group title is required" +msgstr "Введите название Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ полей" + +#: includes/admin/admin-field-group.php:156 +msgid "Move to trash. Are you sure?" +msgstr "Отправить в корзину. Ð’Ñ‹ уверены?" + +#: includes/admin/admin-field-group.php:157 +msgid "No toggle fields available" +msgstr "Ðет доÑтупных полей Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð¾Ð¼ значений." + +#: includes/admin/admin-field-group.php:158 +msgid "Move Custom Field" +msgstr "ПеремеÑтить поле" + +# Maybe non-translateable too. +#: includes/admin/admin-field-group.php:159 +msgid "Checked" +msgstr "Выбрано" + +#: includes/admin/admin-field-group.php:160 includes/api/api-field.php:289 +msgid "(no label)" +msgstr "(нет заголовка)" + +#: includes/admin/admin-field-group.php:161 +msgid "(this field)" +msgstr " (текущее поле)" + +#: includes/admin/admin-field-group.php:162 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "копиÑ" + +#: includes/admin/admin-field-group.php:163 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:4055 +msgid "or" +msgstr "или" + +#: includes/admin/admin-field-group.php:164 +msgid "Null" +msgstr "null" + +#: includes/admin/admin-field-group.php:203 +msgid "Location" +msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: includes/admin/admin-field-group.php:204 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "ÐаÑтройки" + +#: includes/admin/admin-field-group.php:354 +msgid "Field Keys" +msgstr "Ключи полей" + +#: includes/admin/admin-field-group.php:384 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Ðктивные" + +#: includes/admin/admin-field-group.php:750 +msgid "Move Complete." +msgstr "Перемещение выполнено." + +#: includes/admin/admin-field-group.php:751 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Теперь поле %s может быть найдено в группе полей %s" + +#: includes/admin/admin-field-group.php:752 +msgid "Close Window" +msgstr "Закрыть окно" + +#: includes/admin/admin-field-group.php:793 +msgid "Please select the destination for this field" +msgstr "ПожалуйÑта выберите меÑтоположение Ð´Ð»Ñ Ñтого полÑ" + +#: includes/admin/admin-field-group.php:800 +msgid "Move Field" +msgstr "ПеремеÑтить поле" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Ðктивна (%s)" +msgstr[1] "Ðктивно (%s)" +msgstr[2] "Ðктивны (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Группа полей была дублирована. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s группа полей дублирована." +msgstr[1] "%s группы полей дублировано." +msgstr[2] "%s групп полей дублировано." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Группу полей было Ñинхронизировано. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s группа полей Ñинхронизирована." +msgstr[1] "%s группы полей Ñинхронизированы." +msgstr[2] "%s групп полей Ñинхронизировано." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð¾Ñтупна" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:370 +msgid "Title" +msgstr "Заголовок" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:397 +msgid "Description" +msgstr "ОпиÑание" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "СтатуÑ" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"ÐаÑтраивайте WordPress Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ интуитивно понÑтных и мощных дополнительных " +"полей." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "Журнал изменений" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Что нового в верÑии %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "ИÑточники" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Сайт" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "ДокументациÑ" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Поддержка" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "СпаÑибо вам за иÑпользование ACF." + +#: includes/admin/admin-field-groups.php:667 +msgid "Duplicate this item" +msgstr "Дублировать Ñлемент" + +#: includes/admin/admin-field-groups.php:667 +#: includes/admin/admin-field-groups.php:683 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate" +msgstr "Дублировать" + +#: includes/admin/admin-field-groups.php:700 +#: includes/fields/class-acf-field-google-map.php:164 +#: includes/fields/class-acf-field-relationship.php:674 +msgid "Search" +msgstr "ПоиÑк" + +#: includes/admin/admin-field-groups.php:759 +#, php-format +msgid "Select %s" +msgstr "Выберите %s" + +#: includes/admin/admin-field-groups.php:767 +msgid "Synchronise field group" +msgstr "Синхронизировать группу полей" + +#: includes/admin/admin-field-groups.php:767 +#: includes/admin/admin-field-groups.php:797 +msgid "Sync" +msgstr "СинхронизациÑ" + +#: includes/admin/admin-field-groups.php:779 +msgid "Apply" +msgstr "Применить" + +#: includes/admin/admin-field-groups.php:797 +msgid "Bulk Actions" +msgstr "МаÑÑовые операции" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "ИнÑтрументы" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "Группы полей" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Обновить базу данных" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Проверить Ñайт и обновить" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "Возникла ошибка при обработке запроÑа" + +#: includes/admin/install.php:210 includes/admin/views/install.php:104 +msgid "No updates available." +msgstr "Ðа данный момент обновлений нет." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "ДополнениÑ" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Ошибка. Ðевозможно загрузить ÑпиÑок дополнений" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "ИнформациÑ" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Что нового" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "ЭкÑпорт групп полей" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "Генерировать PHP" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Группы полей не выбраны" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "Импортировано %s группу полей." +msgstr[1] "Импортировано %s группы полей" +msgstr[2] "Импортировано %s групп полей" + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Выберите группы полей" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Выберите группы полей, которые вы хотите ÑкÑпортировать, а также метод " +"ÑкÑпорта. ИÑпользуйте кнопку Загрузить файл Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ JSON файла " +"или Генерировать код Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°, который можно интегрировать " +"в шаблон." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "ЭкÑпорт файла" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Указанный код может быть иÑпользован Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации группы полей " +"непоÑредÑтвенно в шаблоне. Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° полей может предоÑтавить много " +"преимущеÑтв в виде большей ÑкороÑти загрузки, ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²ÐµÑ€Ñий и " +"динамичеÑких полей. ПроÑто Ñкопируйте и вÑтавьте указанный ниже код в файл " +"functions.php или подключите его через внешний файл." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Скопировать в буфер обмена" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Скопировано" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Импорт групп полей" + +#: includes/admin/tools/class-acf-admin-tool-import.php:61 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "Выберите файл конфигурации в формате JSON Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° групп полей." + +#: includes/admin/tools/class-acf-admin-tool-import.php:66 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Выбрать файл" + +#: includes/admin/tools/class-acf-admin-tool-import.php:76 +msgid "Import File" +msgstr "Импортировать файл" + +#: includes/admin/tools/class-acf-admin-tool-import.php:100 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Файл не выбран" + +#: includes/admin/tools/class-acf-admin-tool-import.php:113 +msgid "Error uploading file. Please try again" +msgstr "Ошибка при загрузке файла. Попробуйте еще раз" + +#: includes/admin/tools/class-acf-admin-tool-import.php:122 +msgid "Incorrect file type" +msgstr "Ðеправильный тип файла" + +#: includes/admin/tools/class-acf-admin-tool-import.php:139 +msgid "Import file empty" +msgstr "Импортируемый файл пуÑÑ‚" + +#: includes/admin/tools/class-acf-admin-tool-import.php:247 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Импортировано %s группу полей" +msgstr[1] "Импортировано %s группы полей" +msgstr[2] "Импортировано %s групп полей" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "УÑÐ»Ð¾Ð²Ð½Ð°Ñ Ð»Ð¾Ð³Ð¸ÐºÐ°" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Показывать Ñто поле, еÑли" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "и" + +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Добавить группу уÑловий" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:424 +#: pro/fields/class-acf-field-repeater.php:294 +msgid "Drag to reorder" +msgstr "ПотÑните Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ€Ñдка" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Редактировать поле" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:357 +msgid "Edit" +msgstr "Редактировать" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Дублировать поле" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "ПеремеÑтить поле в другую группу" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "ПеремеÑтить" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Удалить поле" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete" +msgstr "Удалить" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Ярлык полÑ" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð½Ð° Ñтранице редактированиÑ" + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»Ñ" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "ДопуÑкаютÑÑ Ð±ÑƒÐºÐ²Ñ‹, цифры, а также Ñимволы _ и -" + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Тип полÑ" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "ИнÑтрукции" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "ИнÑтрукции, которые отображаютÑÑ Ð¿Ñ€Ð¸ редактировании" + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "ОбÑзательное" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Ðтрибуты" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "ширина" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "class" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Закрыть поле" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Сортировка" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:428 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Label" +msgstr "Ярлык" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:610 +msgid "Name" +msgstr "ИмÑ" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Ключ" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Тип" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Ðет полей. Ðажмите на кнопку + Добавить поле, чтобы Ñоздать " +"Ñвое первое поле." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Добавить поле" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "УÑловиÑ" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Создайте набор правил Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñтраниц, где Ñледует отображать группу " +"полей" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Стиль отображениÑ" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Стандартный" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Минимальный" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "РаÑположение группы полей" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Вверху под заголовком" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Внизу поÑле Ñодержимого" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Ðа боковой панели" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "РаÑположение меток" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Вверху" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Слева" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "РаÑположение подÑказок" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Под метками" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Под полÑми" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "ПорÑдковый номер" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "" +"ЕÑли на одной Ñтранице одновременно выводÑÑ‚ÑÑ Ð½ÐµÑколько групп полей, то они " +"ÑортируютÑÑ Ð¿Ð¾ порÑдковому номеру в порÑдке возраÑтаниÑ" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Отображаемое опиÑание в ÑпиÑке групп" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "СÑылка" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "ТекÑтовый редактор" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Цитата" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "ОбÑуждение" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Комментарии" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Редакции" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Ярлык" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Ðвтор" + +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Формат" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Ðтрибуты Ñтраницы" + +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:688 +msgid "Featured Image" +msgstr "Миниатюра запиÑи" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Рубрики" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Метки" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Отправить обратные ÑÑылки" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Скрывание блоков" + +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "" +"Выберите блоки, которые необходимо Ñкрыть на Ñтранице редактированиÑ." + +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"ЕÑли на Ñтранице Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ÑутÑтвует неÑколько групп полей, то будут " +"иÑпользованы наÑтройки первой из них (Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ низким значением порÑдка " +"очередноÑти)" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Отображать группу полей, еÑли" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Обновить Ñайты" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Обновление базы данных Advanced Custom Fields" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Следующие Ñайты требуют Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных. Выберите Ñайты Ð´Ð»Ñ " +"Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ нажмите %s." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Сайт" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Сайт требует Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных Ñ %s на %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Сайт обновлен" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Обновление базы данных закончено. ВернутьÑÑ Ðº панели " +"ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñетью" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Мы наÑтоÑтельно рекомендуем Ñделать резервную копию базы данных перед " +"началом работы. Ð’Ñ‹ уверены, что хотите запуÑтить обновление ÑейчаÑ?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Обновление завершено" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Обновление данных до верÑии %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Повторитель" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Гибкое Ñодержание" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "ГалереÑ" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Страница Ñ Ð¾Ð¿Ñ†Ð¸Ñми" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Ðеобходимо обновление базы данных" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Благодарим Ð²Ð°Ñ Ð·Ð° обновление до %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Прежде чем вы начнете иÑпользовать клаÑÑные новые функции, обновите " +"пожалуйÑта базу данных до поÑледней верÑии." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" +"ПожалуйÑта, убедитеÑÑŒ, что любые премиум-Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ (%s) были предварительно " +"обновлены до поÑледней верÑии." + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Ð§Ñ‚ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡ обновлениÑ..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" +"Обновление базы данных завершено. ОзнакомьтеÑÑŒ Ñо ÑпиÑком " +"изменений" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Загрузить и уÑтановить" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "УÑтановлено" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Добро пожаловать в Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"СпаÑибо за обновление! ACF %s Ñтал больше и лучше. ÐадеемÑÑ, что вам " +"понравитÑÑ." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "МакÑимум удобÑтва и возможноÑтей" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Больше комфорта" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Ð‘Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ñ Ð¿Ð¾Ð¿ÑƒÐ»Ñрной библиотеке Select2 мы повыÑили удобÑтво и ÑкороÑть " +"работы многих типов полей, таких как Объект запиÑи, СÑылка на Ñтраницу, " +"ТакÑÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ð¸ Выбор." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Больше дизайна" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"Многие Ð¿Ð¾Ð»Ñ Ð¿Ð¾Ð¼ÐµÐ½Ñли Ñвой внешний вид, чтобы Ñделать ACF дейÑтвительно " +"краÑивым. Значительные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾ÑнулиÑÑŒ полей ГалереÑ, Взаимоотношение и " +"oEmbed (новое поле)!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Больше данных" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"ÐÐ¾Ð²Ð°Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° позволÑет вложенным полÑм ÑущеÑтвовать незавиÑимо от " +"родительÑких. ПроÑто перетаÑкивайте их из одного родительÑкого Ð¿Ð¾Ð»Ñ Ð² другое." + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Забудьте про дополнениÑ. Ð’Ñтречайте PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "ЗнакомÑтво Ñ ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "Мы кардинально упрощаем внедрение премиального функционала!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Ð’Ñе 4 Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Premium включены в новой Pro-верÑии ACF " +"и в лицензии разработчика, и в перÑональной лицензии. Еще никогда функционал " +"Premium не был так доÑтупен!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "ВпечатлÑющий функционал" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO Ñодержит Ñ€Ñд мощных инÑтрументов, таких как ПовторÑющиеÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ, " +"Гибкое Ñодержание и ГалереÑ. Также еÑть возможноÑть Ñоздавать дополнительные " +"Ñтраницы наÑтроек в панели админиÑтратора." + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Узнайте больше о возможноÑÑ‚ÑÑ… ACF PRO." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "ПроÑтое обновление" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ð° на ACF PRO проÑто авторизуйтеÑÑŒ личном кабинете и получите беÑплатную лицензию!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Мы также подготовили руководÑтво по переходу, чтобы " +"ответить на вÑе ваши вопроÑÑ‹. Ðо еÑли вÑе же они поÑвÑÑ‚ÑÑ, ÑвÑжитеÑÑŒ Ñ Ð½Ð°ÑˆÐµÐ¹ " +"командой поддержки через ÑиÑтему помощи." + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Что под капотом" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Умные наÑтройки полей" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF теперь ÑохранÑет наÑтройки Ð¿Ð¾Ð»Ñ ÐºÐ°Ðº отдельный объект запиÑи" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Больше AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "ПоиÑк на AJAX в полÑÑ… значительно уÑкорÑет загрузку Ñтраниц" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "Локальный JSON" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "Ðовый автоматичеÑкий ÑкÑпорт в JSON повышает ÑкороÑть работы" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Контроль верÑий" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" +"Ðовый автоматичеÑкий ÑкÑпорт в JSON позволÑет контролировать верÑию наÑтроек " +"полей" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "Swapped XML Ð´Ð»Ñ JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Импорт / ЭкÑпорт теперь иÑпользует JSON вмеÑто XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Ðовые формы" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"ÐŸÐ¾Ð»Ñ Ñ‚ÐµÐ¿ÐµÑ€ÑŒ могут быть отображены в комментариÑÑ…, виджетах и " +"пользовательÑких формах!" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Добавлено новое поле Ð´Ð»Ñ Ð²Ñтраиваемого контента" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "ÐÐ¾Ð²Ð°Ñ Ð³Ð°Ð»ÐµÑ€ÐµÑ" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Поле галереи претерпело Ñтоль необходимое визуальное преображение" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Ðовые наÑтройки" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Ð’ наÑтройках группы полей теперь можно изменÑть раÑположение меток и " +"подÑказок" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Улучшенные формы" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() теперь может Ñоздавать новую запиÑÑŒ о предÑтавлении" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Улучшенное подтверждение" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "" +"Подтверждение форм теперь проиÑходит через PHP + AJAX вмеÑто проÑтого JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Взаимоотношение" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"ÐÐ¾Ð²Ð°Ñ Ð½Ð°Ñтройка Ð¿Ð¾Ð»Ñ Ð’Ð·Ð°Ð¸Ð¼Ð¾Ð¾Ñ‚Ð½Ð¾ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð² (ПоиÑк, Тип запиÑи, " +"ТакÑономиÑ)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Перемещение полей" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"Ðовый функционал групп полей позволÑет перемещать Ð¿Ð¾Ð»Ñ Ð¼ÐµÐ¶Ð´Ñƒ группами и " +"родительÑкими полÑми" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "СÑылка на Ñтраницу" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° архивов в выборе Ð¿Ð¾Ð»Ñ page_link" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Страницы наÑтроек" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Ðовые функции Ð´Ð»Ñ Ñтраницы наÑтроек позволÑÑŽÑ‚ Ñоздавать и родительÑкие, и " +"дочерние меню" + +#: includes/admin/views/settings-info.php:157 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Думаем, вам понравÑÑ‚ÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² %s." + +#: includes/api/api-helpers.php:1028 +msgid "Thumbnail" +msgstr "Миниатюра" + +#: includes/api/api-helpers.php:1029 +msgid "Medium" +msgstr "Средний" + +#: includes/api/api-helpers.php:1030 +msgid "Large" +msgstr "Большой" + +#: includes/api/api-helpers.php:1079 +msgid "Full Size" +msgstr "Полный" + +#: includes/api/api-helpers.php:1321 includes/api/api-helpers.php:1894 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(нет заголовка)" + +#: includes/api/api-helpers.php:3976 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Изображение не должно быть уже чем %d пикÑелей." + +#: includes/api/api-helpers.php:3981 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Изображение не должно быть шире чем %d пикÑелей." + +#: includes/api/api-helpers.php:3997 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Изображение должно иметь выÑоту как минимум %d пикÑелей." + +#: includes/api/api-helpers.php:4002 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Изображение должно иметь выÑоту не более чем %d пикÑелей." + +#: includes/api/api-helpers.php:4020 +#, php-format +msgid "File size must be at least %s." +msgstr "Размер файла должен быть не менее чем %s." + +#: includes/api/api-helpers.php:4025 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Размер файла должен быть не более чем %s." + +#: includes/api/api-helpers.php:4059 +#, php-format +msgid "File type must be %s." +msgstr "Файл должен иметь тип: %s." + +#: includes/assets.php:172 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "ВнеÑенные вами Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ утерÑны, еÑли вы покинете Ñту Ñтраницу" + +#: includes/assets.php:175 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Выбрать" + +#: includes/assets.php:176 +msgctxt "verb" +msgid "Edit" +msgstr "Изменить" + +#: includes/assets.php:177 +msgctxt "verb" +msgid "Update" +msgstr "Обновить" + +#: includes/assets.php:178 +msgid "Uploaded to this post" +msgstr "Загружено Ð´Ð»Ñ Ñтой запиÑи" + +#: includes/assets.php:179 +msgid "Expand Details" +msgstr "Показать детали" + +#: includes/assets.php:180 +msgid "Collapse Details" +msgstr "Скрыть детали" + +#: includes/assets.php:181 +msgid "Restricted" +msgstr "Ограничено" + +#: includes/assets.php:182 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "Ð’Ñе изображениÑ" + +#: includes/assets.php:185 +msgid "Validation successful" +msgstr "Проверка уÑпешно выполнена" + +#: includes/assets.php:186 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Проверка не пройдена" + +#: includes/assets.php:187 +msgid "1 field requires attention" +msgstr "1 поле требует вашего вниманиÑ" + +#: includes/assets.php:188 +#, php-format +msgid "%d fields require attention" +msgstr "%d полей требуют вашего вниманиÑ" + +#: includes/assets.php:191 +msgid "Are you sure?" +msgstr "Ð’Ñ‹ уверены?" + +#: includes/assets.php:192 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Да" + +#: includes/assets.php:193 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Ðет" + +#: includes/assets.php:194 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:358 +#: pro/fields/class-acf-field-gallery.php:546 +msgid "Remove" +msgstr "Убрать" + +#: includes/assets.php:195 +msgid "Cancel" +msgstr "Отмена" + +#: includes/assets.php:198 +msgid "Has any value" +msgstr "заполнено" + +#: includes/assets.php:199 +msgid "Has no value" +msgstr "пуÑтое" + +#: includes/assets.php:200 +msgid "Value is equal to" +msgstr "равно" + +#: includes/assets.php:201 +msgid "Value is not equal to" +msgstr "не равно" + +#: includes/assets.php:202 +msgid "Value matches pattern" +msgstr "ÑоответÑтвует выражению" + +#: includes/assets.php:203 +msgid "Value contains" +msgstr "Ñодержит" + +#: includes/assets.php:204 +msgid "Value is greater than" +msgstr "больше чем" + +#: includes/assets.php:205 +msgid "Value is less than" +msgstr "меньше чем" + +#: includes/assets.php:206 +msgid "Selection is greater than" +msgstr "выбрано больше чем" + +#: includes/assets.php:207 +msgid "Selection is less than" +msgstr "выбрано меньше чем" + +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Тип Ð¿Ð¾Ð»Ñ Ð½Ðµ ÑущеÑтвует" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "ÐеизвеÑтно" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "ОÑновное" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "Содержание" + +#: includes/fields.php:351 +msgid "Choice" +msgstr "Выбор" + +#: includes/fields.php:352 +msgid "Relational" +msgstr "Отношение" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:354 +#: includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:567 +#: pro/fields/class-acf-field-flexible-content.php:616 +#: pro/fields/class-acf-field-repeater.php:443 +msgid "Layout" +msgstr "Блок" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Ðккордеон" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Развернуто" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Отображать в развернутом виде при загрузке Ñтраницы" + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Разворачивание неÑкольких Ñекций" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Разрешить одновременное разворачивание неÑкольких Ñекций" + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Разделитель" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"ОпределÑет конечную точку предыдущего аккордеона. Данный аккордеон будет " +"невидим." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Группа кнопок" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:359 +msgid "Choices" +msgstr "Варианты" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "Enter each choice on a new line." +msgstr "Введите каждый вариант выбора на новую Ñтроку." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Ð”Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ³Ð¾ контролÑ, вы можете ввеÑти значение и Ñрлык по Ñледующему " +"формату:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:360 +msgid "red : Red" +msgstr "red : КраÑный" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:409 +msgid "Allow Null?" +msgstr "Разрешить пуÑтое значение?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:146 +#: includes/fields/class-acf-field-select.php:368 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Default Value" +msgstr "Значение по умолчанию" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:147 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:398 +msgid "Appears when creating a new post" +msgstr "ЗаполнÑетÑÑ Ð¿Ñ€Ð¸ Ñоздании новой запиÑи" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "ГоризонтальнаÑ" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "ВертикальнаÑ" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Возвращаемое значение" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Укажите возвращаемое значение Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:427 +msgid "Value" +msgstr "Значение" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:429 +msgid "Both (Array)" +msgstr "Оба (маÑÑив)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "Флажок (checkbox)" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Выбрать вÑе" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Добавить новый вариант" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Разрешить пользовательÑкие" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "Разрешить добавление пользовательÑких вариантов" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Сохранить пользовательÑкие" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "Сохранить пользовательÑкие варианты в наÑтройках полÑ" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each default value on a new line" +msgstr "Введите каждое значение на новую Ñтроку." + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Переключить" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Добавить Ñ‡ÐµÐºÐ±Ð¾ÐºÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð²Ñех чекбокÑов" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Цвет" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "ОчиÑтить" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "По умолчанию" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Выберите цвет" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Текущий цвет" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Дата" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Готово" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "СегоднÑ" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Дальше" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Ðазад" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "ÐеделÑ" + +#: includes/fields/class-acf-field-date_picker.php:180 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Отображаемый формат" + +#: includes/fields/class-acf-field-date_picker.php:181 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Формат во Ð²Ñ€ÐµÐ¼Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ñ" + +#: includes/fields/class-acf-field-date_picker.php:189 +#: includes/fields/class-acf-field-date_picker.php:220 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "ПользовательÑкий:" + +#: includes/fields/class-acf-field-date_picker.php:199 +msgid "Save Format" +msgstr "Формат ÑохранÑемого значениÑ" + +#: includes/fields/class-acf-field-date_picker.php:200 +msgid "The format used when saving a value" +msgstr "Формат Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² базе данных" + +#: includes/fields/class-acf-field-date_picker.php:210 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:715 +#: includes/fields/class-acf-field-select.php:422 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:428 +msgid "Return Format" +msgstr "Возвращаемый формат" + +#: includes/fields/class-acf-field-date_picker.php:211 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Формат возвращаемого значениÑ" + +#: includes/fields/class-acf-field-date_picker.php:229 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "День начала недели" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Дата и времÑ" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Выберите времÑ" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "ВремÑ" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "ЧаÑ" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Минута" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Секунда" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "МиллиÑекунда" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "МикроÑекунда" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "ЧаÑовой поÑÑ" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "СейчаÑ" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Готово" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Выбрать" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "ДП" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "Д" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "ПП" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "П" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "E-mail" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "ТекÑÑ‚ заглушки" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "ПоÑвлÑетÑÑ Ð¿ÐµÑ€ÐµÐ´ полем ввода" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:185 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "ТекÑÑ‚ перед полем" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:186 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "ТекÑÑ‚ перед полем ввода" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:194 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "ТекÑÑ‚ поÑле полÑ" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:195 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "ТекÑÑ‚ поÑле Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð°" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Файл" + +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Изменить файл" + +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Обновить файл" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:705 +#: pro/fields/class-acf-field-gallery.php:734 +msgid "File size" +msgstr "Размер файла" + +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Добавить файл" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "МаÑÑив" + +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "СÑылка на файл" + +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "ID файла" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:670 +msgid "Library" +msgstr "Библиотека" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Limit the media library choice" +msgstr "Ограничение количеÑтва выбранных Ñлементов" + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:676 +msgid "All" +msgstr "Ð’Ñе" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:677 +msgid "Uploaded to post" +msgstr "Загружено в запиÑÑŒ" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:684 +msgid "Minimum" +msgstr "Минимум" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "Ограничить файлы, которые могут быть загружены" + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:713 +msgid "Maximum" +msgstr "МакÑимум" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:742 +msgid "Allowed file types" +msgstr "ДопуÑтимые типы файлов" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:743 +msgid "Comma separated list. Leave blank for all types" +msgstr "" +"Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð² файлов иÑпользуйте запÑтые. ОÑтавьте поле пуÑтым Ð´Ð»Ñ " +"Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ вÑех файлов" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "РаÑположение на карте" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Извините, но ваш браузер не поддерживает определение меÑтоположениÑ" + +#: includes/fields/class-acf-field-google-map.php:165 +msgid "Clear location" +msgstr "ОчиÑтить меÑтоположение" + +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Find current location" +msgstr "Определить текущее меÑтоположение" + +#: includes/fields/class-acf-field-google-map.php:169 +msgid "Search for address..." +msgstr "ПоиÑк по адреÑу..." + +#: includes/fields/class-acf-field-google-map.php:199 +#: includes/fields/class-acf-field-google-map.php:210 +msgid "Center" +msgstr "Центрировать" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center the initial map" +msgstr "Центрировать изначальную карту" + +#: includes/fields/class-acf-field-google-map.php:222 +msgid "Zoom" +msgstr "МаÑштаб" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Set the initial zoom level" +msgstr "Укажите начальный маÑштаб" + +#: includes/fields/class-acf-field-google-map.php:232 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:696 +#: pro/fields/class-acf-field-gallery.php:725 +msgid "Height" +msgstr "Ð’Ñ‹Ñота" + +#: includes/fields/class-acf-field-google-map.php:233 +msgid "Customise the map height" +msgstr "ÐаÑтройка выÑоты карты" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Группа" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:379 +msgid "Sub Fields" +msgstr "Вложенные полÑ" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Укажите ÑпоÑоб Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… полей" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:627 +#: pro/fields/class-acf-field-repeater.php:451 +msgid "Block" +msgstr "Блок" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:626 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Table" +msgstr "Таблица" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:452 +msgid "Row" +msgstr "Строка" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Изображение" + +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "Выбрать изображение" + +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "Редактировать изображение" + +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "Обновить изображение" + +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "Изображение не выбрано" + +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "Добавить изображение" + +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "МаÑÑив изображениÑ" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "СÑылка на изображение" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "ID изображениÑ" + +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "Размер изображениÑ" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "Размер отображаемого Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ редактировании" + +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:685 +#: pro/fields/class-acf-field-gallery.php:714 +msgid "Restrict which images can be uploaded" +msgstr "Ограничить изображениÑ, которые могут быть загружены" + +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Width" +msgstr "Ширина" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "СÑылка" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Выберите ÑÑылку" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "ОткроетÑÑ Ð½Ð° новой вкладке" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "МаÑÑив ÑÑылок" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "URL ÑÑылки" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Сообщение" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Перевод Ñтрок" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "СпоÑоб перевода Ñтрок" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "ÐвтоматичеÑки добавлÑть параграфы" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "ÐвтоматичеÑки добавлÑть <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Без форматированиÑ" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "ОчиÑтка HTML" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" +"Преобразовывать HTML-теги в ÑоответÑтвующие комбинации Ñимволов Ð´Ð»Ñ " +"Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² виде текÑта" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "ЧиÑло" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:155 +msgid "Minimum Value" +msgstr "Минимальное значение" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:165 +msgid "Maximum Value" +msgstr "МакÑимальное значение" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:175 +msgid "Step Size" +msgstr "Шаг изменениÑ" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Значение должно быть чиÑлом" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Значение должно быть равным или больше чем %d" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Значение должно быть равным или меньшим чем %d" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "Медиа" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "Введите Ð°Ð´Ñ€ÐµÑ ÑÑылки" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Размер медиа" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Ðрхивы" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Родитель" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:641 +msgid "Filter by Post Type" +msgstr "Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ типу запиÑей" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:649 +msgid "All post types" +msgstr "Ð’Ñе типы запиÑей" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:655 +msgid "Filter by Taxonomy" +msgstr "Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ такÑономии" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:663 +msgid "All taxonomies" +msgstr "Ð’Ñе такÑономии" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "Разрешить ÑÑылки на архивы" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:387 +#: includes/fields/class-acf-field-user.php:419 +msgid "Select multiple values?" +msgstr "Выбрать неÑколько значений?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Пароль" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:720 +msgid "Post Object" +msgstr "Объект запиÑи" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:721 +msgid "Post ID" +msgstr "ID запиÑи" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Переключатель (radio)" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Другое" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Выберите значение \"Другое\", чтобы разрешить наÑтраиваемые значениÑ" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "Сохранить значениÑ" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "Сохранить наÑтраиваемые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð°" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Диапазон" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "ЗапиÑи" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "МакÑимальное количеÑтво значений доÑтигнуто ({max} значений)" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "Загрузка" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "Ð¡Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð½Ðµ найдены" + +#: includes/fields/class-acf-field-relationship.php:441 +msgid "Select post type" +msgstr "Выберите тип запиÑи" + +#: includes/fields/class-acf-field-relationship.php:467 +msgid "Select taxonomy" +msgstr "Выберите такÑономию" + +#: includes/fields/class-acf-field-relationship.php:557 +msgid "Search..." +msgstr "ПоиÑк..." + +#: includes/fields/class-acf-field-relationship.php:669 +msgid "Filters" +msgstr "Фильтры" + +#: includes/fields/class-acf-field-relationship.php:675 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Тип запиÑи" + +#: includes/fields/class-acf-field-relationship.php:676 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "ТакÑономиÑ" + +#: includes/fields/class-acf-field-relationship.php:683 +msgid "Elements" +msgstr "Элементы" + +#: includes/fields/class-acf-field-relationship.php:684 +msgid "Selected elements will be displayed in each result" +msgstr "Выбранные Ñлементы будут отображены в каждом результате" + +#: includes/fields/class-acf-field-relationship.php:695 +msgid "Minimum posts" +msgstr "Минимум запиÑей" + +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Maximum posts" +msgstr "МакÑимум запиÑей" + +#: includes/fields/class-acf-field-relationship.php:808 +#: pro/fields/class-acf-field-gallery.php:815 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s требует выбрать как минимум %s значение" +msgstr[1] "%s требует выбрать как минимум %s значениÑ" +msgstr[2] "%s требует выбрать как минимум %s значений" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Выбор (select)" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "ДоÑтупно одно значение, нажмите Enter Ð´Ð»Ñ ÐµÐ³Ð¾ выбора." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d значений доÑтупно, иÑпользуйте клавиши вверх и вниз Ð´Ð»Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ð¸." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "ПодходÑщие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½Ðµ найдены" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "ПожалуйÑта, введите 1 Ñимвол или больше" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "ПожалуйÑта, введите %d или больше Ñимволов" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "ПожалуйÑта, удалите 1 Ñимвол" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "ПожалуйÑта, удалите %d Ñимволов" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Ð’Ñ‹ можете выбрать только одно значение" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Ð’Ñ‹ можете выбрать только %d значений" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Загрузка других значений…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "ПоиÑк…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Ðе получилоÑÑŒ загрузить" + +#: includes/fields/class-acf-field-select.php:397 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Стилизованный интерфейÑ" + +#: includes/fields/class-acf-field-select.php:407 +msgid "Use AJAX to lazy load choices?" +msgstr "ИÑпользовать AJAX Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ вариантов выбора?" + +#: includes/fields/class-acf-field-select.php:423 +msgid "Specify the value returned" +msgstr "Укажите возвращаемое значение" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Разделитель" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Вкладка" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "РаÑположение" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "ИÑпользуйте Ñто поле в качеÑтве Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»Ñ Ð¼ÐµÐ¶Ð´Ñƒ группами вкладок" + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "Ðет %s [нет терминов]" + +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Выберите такÑономию Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Отображение" + +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Выберите ÑпоÑоб Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ñ" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "ÐеÑколько значений" + +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "МножеÑтвенный выбор" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Одно значение" + +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Радио-кнопки" + +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Создание терминов" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Разрешнить Ñоздавать новые термины во Ð²Ñ€ÐµÐ¼Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Сохранение терминов" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "СвÑзать выбранные термины Ñ Ð·Ð°Ð¿Ð¸Ñью" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Загрузить термины" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Загрузить Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð· терминов запиÑей" + +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Объект термина" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "ID термина" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½ÐµÑ‚ возможноÑти добавить новый %s" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s уже ÑущеÑтвует" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s добавлен" + +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Добавить" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Ограничение количеÑтва Ñимволов" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "ОÑтавьте пуÑтым Ð´Ð»Ñ ÑнÑÑ‚Ð¸Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ð¹" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "ОблаÑть текÑта" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Строки" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Укажите выÑоту Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð°" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "ВремÑ" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Да / Ðет" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "Отображать текÑÑ‚ Ñ€Ñдом Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð°Ñ‚ÐµÐ»ÐµÐ¼" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Включено" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "ТекÑÑ‚ в активном ÑоÑтоÑнии" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Выключено" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "ТекÑÑ‚ в выключенном ÑоÑтоÑнии" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "СÑылка" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Значение должно быть корректной ÑÑылкой" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Пользователь" + +#: includes/fields/class-acf-field-user.php:394 +msgid "Filter by role" +msgstr "Фильтровать по группе" + +#: includes/fields/class-acf-field-user.php:402 +msgid "All user roles" +msgstr "Ð’Ñе группы пользователей" + +#: includes/fields/class-acf-field-user.php:433 +msgid "User Array" +msgstr "МаÑÑив Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸" + +#: includes/fields/class-acf-field-user.php:434 +msgid "User Object" +msgstr "Объект пользователÑ" + +#: includes/fields/class-acf-field-user.php:435 +msgid "User ID" +msgstr "ID пользователÑ" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Редактор WordPress" + +#: includes/fields/class-acf-field-wysiwyg.php:346 +msgid "Visual" +msgstr "Визуально" + +#: includes/fields/class-acf-field-wysiwyg.php:347 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "ТекÑÑ‚" + +#: includes/fields/class-acf-field-wysiwyg.php:353 +msgid "Click to initialize TinyMCE" +msgstr "Ðажмите Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка TinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:406 +msgid "Tabs" +msgstr "Вкладки" + +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Visual & Text" +msgstr "Визуально и текÑÑ‚" + +#: includes/fields/class-acf-field-wysiwyg.php:412 +msgid "Visual Only" +msgstr "Только визуальный редактор" + +#: includes/fields/class-acf-field-wysiwyg.php:413 +msgid "Text Only" +msgstr "Только текÑтовый редактор" + +#: includes/fields/class-acf-field-wysiwyg.php:420 +msgid "Toolbar" +msgstr "Панель инÑтрументов" + +#: includes/fields/class-acf-field-wysiwyg.php:435 +msgid "Show Media Upload Buttons?" +msgstr "Кнопки загрузки медиа" + +#: includes/fields/class-acf-field-wysiwyg.php:445 +msgid "Delay initialization?" +msgstr "ÐžÑ‚Ð»Ð¾Ð¶ÐµÐ½Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ" + +#: includes/fields/class-acf-field-wysiwyg.php:446 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE не будет инициализирован до клика по полю" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:301 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Редактировать группу полей" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Проверка Email" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:588 pro/options-page.php:81 +msgid "Update" +msgstr "Обновить" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "ЗапиÑÑŒ обновлена" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "Обнаружен Ñпам" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "ЗапиÑÑŒ" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Страница" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Формы" + +#: includes/locations.php:247 +msgid "is equal to" +msgstr "равно" + +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "не равно" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Медиафайл" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Ð’Ñе %s форматы" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Комментарий" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Группа текущего пользователÑ" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "ÐдминиÑтратор" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Текущий пользователь" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "Ðвторизирован" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "ПроÑматривает лицевую чаÑть Ñайта" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "ПроÑматривает админиÑтративную панель" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Пункт меню" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Меню" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "РаÑположение меню" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Меню" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Родитель Ñтраницы" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Шаблон Ñтраницы" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Шаблон по умолчанию" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Тип Ñтраницы" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Страница запиÑей" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Страница верхнего ÑƒÑ€Ð¾Ð²Ð½Ñ (без родителÑ)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "РодительÑÐºÐ°Ñ Ñтраница (еÑть дочерние Ñтраницы)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "ДочернÑÑ Ñтраница (еÑть родительÑкие Ñтраницы)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Рубрика запиÑи" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Формат запиÑи" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð¿Ð¸Ñи" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "ТакÑÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Шаблон запиÑи" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Пользователь" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "ÐдминиÑтратор или редактор" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Обычный пользователь" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Группа пользователÑ" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Виджет" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s значение требуетÑÑ" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Опубликовано" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"С Ñтой Ñтраницей наÑтроек не ÑвÑзаны группы полей. Создать " +"группу полей" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Ошибка. Ðе удалоÑÑŒ подключитьÑÑ Ðº Ñерверу обновлений" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Обновление" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Деактивировать лицензию" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Ðктивировать лицензию" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ лицензии" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Ð”Ð»Ñ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ введите лицензионный ключ ниже. ЕÑли у Ð²Ð°Ñ " +"его нет, то ознакомьтеÑÑŒ Ñ Ð´ÐµÑ‚Ð°Ð»Ñми." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Ðомер лицензии" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "ОбновлениÑ" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "ПоÑледнÑÑ Ð²ÐµÑ€ÑиÑ" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупны" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Обновить плагин" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "ПожалуйÑта введите ваш номер лицензии Ð´Ð»Ñ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ обновлений" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Проверить еще раз" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Ð—Ð°Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð¿Ð¾ обновлению" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Клон" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "Выберите одно или неÑколько полей, которые вы хотите клонировать" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "СпоÑоб отображениÑ" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "Выберите Ñтиль Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… полей" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" +"Группа (Ñгруппировать выбранные Ð¿Ð¾Ð»Ñ Ð² одно и выводить вмеÑто текущего)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Отдельно (выбранные Ð¿Ð¾Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´ÑÑ‚ÑÑ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾ вмеÑто текущего)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Ярлыки будут отображатьÑÑ ÐºÐ°Ðº %s" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ñрлыков полей" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ Ñохранены как %s" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ð¹ полей" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "ÐеизвеÑтное поле" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° полей" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "Ð’Ñе Ð¿Ð¾Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ %s" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:463 +msgid "Add Row" +msgstr "Добавить" + +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:938 +#: pro/fields/class-acf-field-flexible-content.php:1020 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "макет" +msgstr[1] "макета" +msgstr[2] "макетов" + +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "макеты" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:937 +#: pro/fields/class-acf-field-flexible-content.php:1019 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Это поле требует как минимум {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Это поле ограничено {max} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} доÑтупно (макÑимум {max})" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} требуетÑÑ (минимум {min})" + +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Ð”Ð»Ñ Ð³Ð¸Ð±ÐºÐ¾Ð³Ð¾ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ ÐºÐ°Ðº минимум один макет" + +#: pro/fields/class-acf-field-flexible-content.php:302 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Ðажмите на кнопку \"%s\" ниже Ð´Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑобÑтвенного макета" + +#: pro/fields/class-acf-field-flexible-content.php:427 +msgid "Add layout" +msgstr "Добавить макет" + +#: pro/fields/class-acf-field-flexible-content.php:428 +msgid "Remove layout" +msgstr "Удалить макет" + +#: pro/fields/class-acf-field-flexible-content.php:429 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Click to toggle" +msgstr "Ðажмите Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder Layout" +msgstr "ПеремеÑтить макет" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder" +msgstr "ПеремеÑтить" + +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete Layout" +msgstr "Удалить макет" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate Layout" +msgstr "Дублировать макет" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New Layout" +msgstr "Добавить новый макет" + +#: pro/fields/class-acf-field-flexible-content.php:643 +msgid "Min" +msgstr "Минимум" + +#: pro/fields/class-acf-field-flexible-content.php:656 +msgid "Max" +msgstr "МакÑимум" + +#: pro/fields/class-acf-field-flexible-content.php:683 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Button Label" +msgstr "ТекÑÑ‚ кнопки добавлениÑ" + +#: pro/fields/class-acf-field-flexible-content.php:692 +msgid "Minimum Layouts" +msgstr "Мин. количеÑтво блоков" + +#: pro/fields/class-acf-field-flexible-content.php:701 +msgid "Maximum Layouts" +msgstr "МакÑ. количеÑтво блоков" + +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "Добавление изображений в галерею" + +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "Выбрано макÑимальное количеÑтво изображений" + +#: pro/fields/class-acf-field-gallery.php:336 +msgid "Length" +msgstr "Длина" + +#: pro/fields/class-acf-field-gallery.php:379 +msgid "Caption" +msgstr "ПодпиÑÑŒ" + +#: pro/fields/class-acf-field-gallery.php:388 +msgid "Alt Text" +msgstr "ТекÑÑ‚ в ALT" + +#: pro/fields/class-acf-field-gallery.php:559 +msgid "Add to gallery" +msgstr "Добавить изображениÑ" + +#: pro/fields/class-acf-field-gallery.php:563 +msgid "Bulk actions" +msgstr "Сортировка" + +#: pro/fields/class-acf-field-gallery.php:564 +msgid "Sort by date uploaded" +msgstr "По дате загрузки" + +#: pro/fields/class-acf-field-gallery.php:565 +msgid "Sort by date modified" +msgstr "По дате изменениÑ" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Sort by title" +msgstr "По названию" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Reverse current order" +msgstr "Инвертировать" + +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Close" +msgstr "Закрыть" + +#: pro/fields/class-acf-field-gallery.php:639 +msgid "Minimum Selection" +msgstr "Мин. количеÑтво изображений" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Maximum Selection" +msgstr "МакÑ. количеÑтво изображений" + +#: pro/fields/class-acf-field-gallery.php:657 +msgid "Insert" +msgstr "Добавить" + +#: pro/fields/class-acf-field-gallery.php:658 +msgid "Specify where new attachments are added" +msgstr "Укажите куда добавлÑть новые вложениÑ" + +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Append to the end" +msgstr "ДобавлÑть в конец" + +#: pro/fields/class-acf-field-gallery.php:663 +msgid "Prepend to the beginning" +msgstr "ДобавлÑть в начало" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:656 +msgid "Minimum rows reached ({min} rows)" +msgstr "ДоÑтигнуто минимальное количеÑтво ({min} Ñлементов)" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "ДоÑтигнуто макÑимальное количеÑтво ({max} Ñлементов)" + +#: pro/fields/class-acf-field-repeater.php:333 +msgid "Add row" +msgstr "Добавить" + +#: pro/fields/class-acf-field-repeater.php:334 +msgid "Remove row" +msgstr "Удалить" + +#: pro/fields/class-acf-field-repeater.php:412 +msgid "Collapsed" +msgstr "Сокращенный заголовок" + +#: pro/fields/class-acf-field-repeater.php:413 +msgid "Select a sub field to show when row is collapsed" +msgstr "" +"Выберите поле, которое будет отображатьÑÑ Ð² качеÑтве заголовка при " +"Ñворачивании блока" + +#: pro/fields/class-acf-field-repeater.php:423 +msgid "Minimum Rows" +msgstr "Мин. количеÑтво Ñлементов" + +#: pro/fields/class-acf-field-repeater.php:433 +msgid "Maximum Rows" +msgstr "МакÑ. количеÑтво Ñлементов" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Страницы Ñ Ð½Ð°Ñтройками отÑуÑтвуют" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Опции" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "ÐаÑтройки были обновлены" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Ð”Ð»Ñ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ обновлений введите ваш лицензионный ключ на Ñтранице Обновление. ЕÑли у Ð²Ð°Ñ ÐµÐ³Ð¾ нет, то ознакомьтеÑÑŒ Ñ Ð´ÐµÑ‚Ð°Ð»Ñми." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Эллиот Кондон" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Parent fields" +#~ msgstr "РодительÑкие полÑ" + +#~ msgid "Sibling fields" +#~ msgstr "ÐŸÐ¾Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑƒÑ€Ð¾Ð²Ð½Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾Ñти" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "ЭкÑпортировать группы полей в PHP" + +#~ msgid "Download export file" +#~ msgstr "Загрузить файл" + +#~ msgid "Generate export code" +#~ msgstr "Генерировать код" + +#~ msgid "Import" +#~ msgstr "Импорт" + +#~ msgid "Locating" +#~ msgstr "Определение меÑтоположение" + +#~ msgid "Error." +#~ msgstr "Ошибка." + +#~ msgid "No embed found for the given URL." +#~ msgstr "По указанной вами ÑÑылке медиаконтент не обнаружен." + +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "Минимальное количеÑтво значений доÑтигнуто ({min} значений)" + +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Вкладка может отображатьÑÑ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ при добавлении в Ð¿Ð¾Ð»Ñ Ð³Ð¸Ð±ÐºÐ¾Ð³Ð¾ " +#~ "ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Ð¸ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚ÐµÐ»Ñ Ð² табличном Ñтиле" + +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "ИÑпользуйте вкладки Ð´Ð»Ñ Ð»ÑƒÑ‡ÑˆÐµÐ¹ организации Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿ полей." + +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Ð’Ñе Ð¿Ð¾Ð»Ñ Ð¿Ð¾Ñле Ð¿Ð¾Ð»Ñ Ñо вкладкой группируютÑÑ Ð½Ð° отдельной вкладке Ñ " +#~ "ÑоответÑтвующим названием." + +#~ msgid "None" +#~ msgstr "Ðичего" + +#~ msgid "Taxonomy Term" +#~ msgstr "ТакÑономиÑ" + +#~ msgid "remove {layout}?" +#~ msgstr "удалить {layout}?" + +#~ msgid "This field requires at least {min} {identifier}" +#~ msgstr "Это поле требует как минимум {min} {identifier}" + +#~ msgid "Maximum {label} limit reached ({max} {identifier})" +#~ msgstr "МакÑимальное ограничение {label} доÑтигнуто ({max} {identifier})" + +#~ msgid "Getting Started" +#~ msgstr "ПриÑтупаем к работе" + +#~ msgid "Field Types" +#~ msgstr "Типы полей" + +#~ msgid "Functions" +#~ msgstr "Функции" + +#~ msgid "Actions" +#~ msgstr "ДейÑтвиÑ" + +#~ msgid "Features" +#~ msgstr "ВозможноÑти" + +#~ msgid "How to" +#~ msgstr "Гайды" + +#~ msgid "Tutorials" +#~ msgstr "Уроки и туториалы" + +#~ msgid "FAQ" +#~ msgstr "ВопроÑÑ‹ и ответы" + +#~ msgid "Term meta upgrade not possible (termmeta table does not exist)" +#~ msgstr "" +#~ "Метаданные Ð´Ð»Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð¾Ð² не удалоÑÑŒ обновить (таблица termmeta не " +#~ "ÑущеÑтвует)" + +#~ msgid "Error" +#~ msgstr "Ошибка" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "%d поле требует вниманиÑ." +#~ msgstr[1] "%d Ð¿Ð¾Ð»Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ вниманиÑ." +#~ msgstr[2] "%d полей требует вниманиÑ." + +#~ msgid "" +#~ "Error validating ACF PRO license URL (website does not match). Please re-" +#~ "activate your license" +#~ msgstr "" +#~ "Ошибка при проверке лицензии ACF PRO (Ð°Ð´Ñ€ÐµÑ Ñайта не Ñовпадает). " +#~ "ПожалуйÑта, переактивируйте лицензию" + +#~ msgid "Customise WordPress with powerful, professional and intuitive fields" +#~ msgstr "" +#~ "Плагин Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð°Ñтройки и взаимодейÑÑ‚Ð²Ð¸Ñ Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼Ð¸ полÑми " +#~ "Ð´Ð»Ñ Ñодержимого" + +#~ msgid "Disabled" +#~ msgstr "Отключено" + +#~ msgid "Disabled (%s)" +#~ msgid_plural "Disabled (%s)" +#~ msgstr[0] "Отключено (%s)" +#~ msgstr[1] "Отключено (%s)" +#~ msgstr[2] "Отключено (%s)" + +#~ msgid "'How to' guides" +#~ msgstr "РуководÑтва \"Как...\"" + +#~ msgid "Created by" +#~ msgstr "Создано" + +#~ msgid "Error loading update" +#~ msgstr "Возникла ошибка при загрузке обновлениÑ" + +#~ msgid "See what's new" +#~ msgstr "ПоÑмотрите, что изменилоÑÑŒ" + +#~ msgid "eg. Show extra content" +#~ msgstr "Пример: Отображать дополнительное Ñодержание" + +#~ msgid "" +#~ "Error validating license URL (website does not match). Please re-activate " +#~ "your license" +#~ msgstr "" +#~ "Во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ лицензии, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑвÑзана Ñ Ð°Ð´Ñ€ÐµÑом Ñайта, возникла " +#~ "ошибка. ПожалуйÑта, выполните активацию Ñнова" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "Импорт уÑпешно завершен. Было добавлено %s групп полей: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Предупреждение. Было обнаружено %s групп полей, которые уже " +#~ "ÑущеÑтвуют и были пропущены: %s" + +#~ msgid "Upgrade ACF" +#~ msgstr "Обновить ACF" + +#~ msgid "Upgrade" +#~ msgstr "Обновить" + +#~ msgid "" +#~ "The following sites require a DB upgrade. Check the ones you want to " +#~ "update and then click “Upgrade Databaseâ€." +#~ msgstr "" +#~ "Следующие Ñайты требуют Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных. Выберите необходимые и " +#~ "нажмите на кнопку \"Обновить базу данных\"" + +#~ msgid "Select" +#~ msgstr "Выбор" + +#~ msgid "Done" +#~ msgstr "Готово" + +#~ msgid "Today" +#~ msgstr "СегоднÑ" + +#~ msgid "Show a different month" +#~ msgstr "Показать другой меÑÑц" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Ошибка подключениÑ. Извините, попробуйте еще раз" + +#~ msgid "See what's new in" +#~ msgstr "Узнайте, что нового в" + +#~ msgid "version" +#~ msgstr "верÑии" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "Перетащите поле Ð´Ð»Ñ Ñмены очередноÑти" + +#~ msgid "Return format" +#~ msgstr "Возвращаемый формат" + +#~ msgid "uploaded to this post" +#~ msgstr "загружено Ð´Ð»Ñ Ñтой запиÑи" + +#~ msgid "File Name" +#~ msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#~ msgid "File Size" +#~ msgstr "Размер файла" + +#~ msgid "No File selected" +#~ msgstr "Файл не выбран" + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "ПожалуйÑта, заметьте, что веÑÑŒ текÑÑ‚ пройдет через WP функцию" + +#~ msgid "Warning" +#~ msgstr "Предупреждение" + +#~ msgid "Save Options" +#~ msgstr "Сохранить наÑтройки" + +#~ msgid "License" +#~ msgstr "ЛицензиÑ" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Ð”Ð»Ñ Ñ€Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ обновлений введите ваш номер лицензии ниже. ЕÑли у Ð²Ð°Ñ " +#~ "его нет, то ознакомьтеÑÑŒ Ñ Ñ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´Ð°Ñ†Ð¸Ñми" + +#~ msgid "details & pricing" +#~ msgstr "детали и цены" + +#~ msgid "" +#~ "To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +#~ msgstr "" +#~ "Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ введите номер лицензии на Ñтранице Обновление. Ð’Ñ‹ можете его или приобреÑти на Ñайте " +#~ "автора плагина." + +#~ msgid "Field Groups" +#~ msgstr "Группы полей" + +#~ msgid "Hide / Show All" +#~ msgstr "Скрыть / Показать вÑе" + +#~ msgid "Show Field Keys" +#~ msgstr "Показать ключи полей" + +#~ msgid "Pending Review" +#~ msgstr "Ðа утверждении" + +#~ msgid "Draft" +#~ msgstr "Черновик" + +#~ msgid "Future" +#~ msgstr "ÐžÑ‚Ð»Ð¾Ð¶ÐµÐ½Ð½Ð°Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ" + +#~ msgid "Private" +#~ msgstr "ЧаÑтнаÑ" + +#~ msgid "Revision" +#~ msgstr "РедакциÑ" + +#~ msgid "Trash" +#~ msgstr "Корзина" + +#~ msgid "Top Level Page (parent of 0)" +#~ msgstr "Ð¡Ð°Ð¼Ð°Ñ Ð²ÐµÑ€Ñ…Ð½ÑÑ Ñтраница (родитель 0)" + +#~ msgid "Import / Export" +#~ msgstr "Импорт и ÑкÑпорт" + +#~ msgid "Logged in User Type" +#~ msgstr "Тип пользователÑ" + +#~ msgid "Field groups are created in order
                          from lowest to highest" +#~ msgstr "" +#~ "ПорÑдок Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ¹, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ñамого меньшего Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ " +#~ "Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°Ñ Ñамым большим" + +#~ msgid "Select items to hide them from the edit screen" +#~ msgstr "" +#~ "Выберите Ñлементы, которые необходимо Ñкрыть на Ñкране " +#~ "редактированиÑ." + +#~ msgid "" +#~ "If multiple field groups appear on an edit screen, the first field " +#~ "group's options will be used. (the one with the lowest order number)" +#~ msgstr "" +#~ "ЕÑли на Ñкране Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´ÑÑ‚ÑÑ Ð½ÐµÑколько групп полей, то группа " +#~ "c меньшим значением порÑдка очередноÑти будет отображатьÑÑ Ð²Ñ‹ÑˆÐµ" + +#~ msgid "" +#~ "We're changing the way premium functionality is delivered in an exiting " +#~ "way!" +#~ msgstr "Мы поменÑли ÑпоÑоб предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтей Premium!" + +#~ msgid "ACF PRO Required" +#~ msgstr "Ðеобходим ACF PRO" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website " +#~ "makes use of premium add-ons (%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "Мы обнаружили Ñитуацию, требующую вашего вниманиÑ: Этот Ñайт иÑпользует " +#~ "Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Premium (%s), которые больше не поддерживаютÑÑ ACF." + +#~ msgid "" +#~ "Don't panic, you can simply roll back the plugin and continue using ACF " +#~ "as you know it!" +#~ msgstr "" +#~ "Ðе волнуйтеÑÑŒ, вы можете проÑто откатить плагин и продолжить иÑпользовать " +#~ "знакомый вам ACF." + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "ВернутьÑÑ Ðº ACF v%s" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "Узнать, почему ACF PRO необходим моему Ñайту" + +#~ msgid "Update Database" +#~ msgstr "Обновление базы данных" + +#~ msgid "Data Upgrade" +#~ msgstr "Обновление данных" + +#~ msgid "Data upgraded successfully." +#~ msgstr "Данные уÑпешно обновлены." + +#~ msgid "Data is at the latest version." +#~ msgstr "ВерÑÐ¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… ÑвлÑетÑÑ Ð¿Ð¾Ñледней." + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "%s обÑзательное поле не заполнено" +#~ msgstr[1] "%s обÑзательных Ð¿Ð¾Ð»Ñ Ð½Ðµ заполнено" +#~ msgstr[2] "%s обÑзательных полей не заполнено" + +#~ msgid "No taxonomy filter" +#~ msgstr "Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ такÑономии отÑутÑтвует" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "Загрузить и Ñохранить термины в запиÑÑŒ" + +#~ msgid "" +#~ "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "" +#~ "Загрузить значение оÑновываÑÑÑŒ на терминах запиÑи и обновить термины " +#~ "запиÑи при Ñохранении." + +#~ msgid "Attachment Details" +#~ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ вложении" + +#~ msgid "Custom field updated." +#~ msgstr "Произвольное поле обновлено." + +#~ msgid "Custom field deleted." +#~ msgstr "Произвольное поле удалено." + +#~ msgid "Field group restored to revision from %s" +#~ msgstr "Группа полей воÑÑтановлена из редакции %s" + +#~ msgid "Full" +#~ msgstr "Полный" + +#~ msgid "No ACF groups selected" +#~ msgstr "Группы ACF не выбраны" + +#~ msgid "Repeater Field" +#~ msgstr "ПовторающееÑÑ Ð¿Ð¾Ð»Ðµ" + +#~ msgid "" +#~ "Create infinite rows of repeatable data with this versatile interface!" +#~ msgstr "Создавайте повторающиеÑÑ Ð¿Ð¾Ð»Ñ Ñ Ñтим многофунциональным аддоном!" + +#~ msgid "Gallery Field" +#~ msgstr "Поле галереи" + +#~ msgid "Create image galleries in a simple and intuitive interface!" +#~ msgstr "Создавайте галереи Ñ Ñтим проÑтым и интуитивным интерфейÑом!" + +#~ msgid "Create global data to use throughout your website!" +#~ msgstr "" +#~ "Создайте глобальные данные, которые можно будет иÑпользовать по вÑему " +#~ "Ñайту." + +#~ msgid "Flexible Content Field" +#~ msgstr "Гибкое Ñодержание" + +#~ msgid "Create unique designs with a flexible content layout manager!" +#~ msgstr "Создавайте уникальные дизайны Ñ Ð½Ð°Ñтраиваемым гибким макетом." + +#~ msgid "Gravity Forms Field" +#~ msgstr "Поле \"Gravity Forms\"" + +#~ msgid "Creates a select field populated with Gravity Forms!" +#~ msgstr "Создает Ð¿Ð¾Ð»Ñ Ð¸Ñпользующие Gravity Forms." + +#~ msgid "Date & Time Picker" +#~ msgstr "Выбор даты и времени" + +#~ msgid "jQuery date & time picker" +#~ msgstr "jQuery плагин выбора даты и времени" + +#~ msgid "Location Field" +#~ msgstr "Поле меÑтоположениÑ" + +#~ msgid "Find addresses and coordinates of a desired location" +#~ msgstr "Ðайдите адреÑа и координаты выбраного меÑта." + +#~ msgid "Contact Form 7 Field" +#~ msgstr "Поле \"Contact Form 7\"" + +#~ msgid "Assign one or more contact form 7 forms to a post" +#~ msgstr "Добавьте одно или больше форм \"Contact Form 7\" в запиÑÑŒ." + +#~ msgid "Advanced Custom Fields Add-Ons" +#~ msgstr "РаÑширенные произвольные полÑ. Ðддоны" + +#~ msgid "" +#~ "The following Add-ons are available to increase the functionality of the " +#~ "Advanced Custom Fields plugin." +#~ msgstr "" +#~ "Следующие аддоны могут увеличить функционал плагина \"Advanced Custom " +#~ "Fields\"." + +#~ msgid "" +#~ "Each Add-on can be installed as a separate plugin (receives updates) or " +#~ "included in your theme (does not receive updates)." +#~ msgstr "" +#~ "Каждый аддон может быть уÑтановлен, как отдельный плагин (который " +#~ "обновлÑетÑÑ), или же может быть включен в вашу тему (обновлÑтьÑÑ Ð½Ðµ " +#~ "будет)." + +#~ msgid "Purchase & Install" +#~ msgstr "Купить и уÑтановить" + +#~ msgid "Download" +#~ msgstr "Скачать" + +#~ msgid "Select the field groups to be exported" +#~ msgstr "Выберите группы полей, которые надо ÑкÑпортировать." + +#~ msgid "Export to XML" +#~ msgstr "ЭкÑпортировать в XML файл" + +#~ msgid "Export to PHP" +#~ msgstr "ЭкÑпортировать в PHP файл" + +#~ msgid "" +#~ "ACF will create a .xml export file which is compatible with the native WP " +#~ "import plugin." +#~ msgstr "ACF Ñоздат .xml файл, который ÑовмеÑтим Ñ WP Import плагином." + +#~ msgid "" +#~ "Imported field groups will appear in the list of editable field " +#~ "groups. This is useful for migrating fields groups between Wp websites." +#~ msgstr "" +#~ "Импортированные группы полей поÑвÑÑ‚ÑÑ Ð² ÑпиÑке " +#~ "редактируемых групп полей. Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‡ÐµÐ½ÑŒ полезна в Ñлучае переезда Ñ " +#~ "одного WP Ñайта на другой." + +#~ msgid "Select field group(s) from the list and click \"Export XML\"" +#~ msgstr "" +#~ "Выберите группу(-Ñ‹) полей из ÑпиÑка и нажмите на кнопку \"ЭкÑпортировать " +#~ "в XML файл\"." + +#~ msgid "Save the .xml file when prompted" +#~ msgstr "Сохраните .xml файл при запроÑе Ñохранить файл." + +#~ msgid "Navigate to Tools » Import and select WordPress" +#~ msgstr "" +#~ "Зайдите во \"ИнÑтрументы\" » \"Импорт\", и выберите \"WordPress\"." + +#~ msgid "Install WP import plugin if prompted" +#~ msgstr "УÑтановите WP Import плагин." + +#~ msgid "Upload and import your exported .xml file" +#~ msgstr "Загрузите и импортируйте ваш ÑкÑпортированный .xml файл." + +#~ msgid "Select your user and ignore Import Attachments" +#~ msgstr "Выберите вашего Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ не импортируйте вложенные файлы." + +#~ msgid "That's it! Happy WordPressing" +#~ msgstr "Вот и вÑе. Удачной работы Ñ WordPress!" + +#~ msgid "ACF will create the PHP code to include in your theme." +#~ msgstr "ACF Ñоздат код PHP, который можно будет включить в вашу тему." + +#~ msgid "" +#~ "Registered field groups will not appear in the list of editable " +#~ "field groups. This is useful for including fields in themes." +#~ msgstr "" +#~ "Импортированные группы полей не поÑвÑÑ‚ÑÑ Ð² ÑпиÑке " +#~ "редактируемых групп полей. Данный ÑпоÑоб удобен при необходимоÑти " +#~ "включить Ð¿Ð¾Ð»Ñ Ð² темы." + +#~ msgid "" +#~ "Please note that if you export and register field groups within the same " +#~ "WP, you will see duplicate fields on your edit screens. To fix this, " +#~ "please move the original field group to the trash or remove the code from " +#~ "your functions.php file." +#~ msgstr "" +#~ "ПожалуйÑта, заметьте, еÑли вы ÑкÑпортируете а затем импортируете группы " +#~ "полей в один и тот же Ñайт WP, вы увидите дублированные Ð¿Ð¾Ð»Ñ Ð½Ð° Ñкране " +#~ "редактированиÑ. Чтобы иÑправить Ñто, перенеÑите оригинальную группы полей " +#~ "в корзину или удалите код из вашего \"functions.php\" файла." + +#~ msgid "Select field group(s) from the list and click \"Create PHP\"" +#~ msgstr "" +#~ "Выберите группу(-Ñ‹) полей из ÑпиÑка, затем нажмите на кнопку " +#~ "\"ЭкÑпортировать в PHP файл\"." + +#~ msgid "Copy the PHP code generated" +#~ msgstr "Скопируйте Ñгенерированный PHP код." + +#~ msgid "Paste into your functions.php file" +#~ msgstr "Ð’Ñтавьте его в ваш \"functions.php\" файл." + +#~ msgid "" +#~ "To activate any Add-ons, edit and use the code in the first few lines." +#~ msgstr "" +#~ "Чтобы активировать аддоны, отредактируйте и вÑтавьте код в первые " +#~ "неÑколько Ñтрок." + +#~ msgid "Notes" +#~ msgstr "Заметки" + +#~ msgid "Include in theme" +#~ msgstr "Включить в тему" + +#~ msgid "" +#~ "The Advanced Custom Fields plugin can be included within a theme. To do " +#~ "so, move the ACF plugin inside your theme and add the following code to " +#~ "your functions.php file:" +#~ msgstr "" +#~ "Плагин \"Advanced Custom Fields\" может быть включен в тему. Ð”Ð»Ñ Ñтого, " +#~ "перемеÑтите плагин ACF в папку вашей темы, и добавьте Ñледующий код в ваш " +#~ "\"functions.php\" файл:" + +#~ msgid "" +#~ "To remove all visual interfaces from the ACF plugin, you can use a " +#~ "constant to enable lite mode. Add the following code to you functions.php " +#~ "file before the include_once code:" +#~ msgstr "" +#~ "Чтобы убрать веÑÑŒ визуальный Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¸Ð· плагина ACF, вы можете " +#~ "иÑпользовать конÑтанту, чтобы включить \"Режим Lite\". Добавьте Ñледующий " +#~ "код в ваш \"functions.php\" файл перед " +#~ "include_once:" + +#~ msgid "Back to export" +#~ msgstr "ВернутьÑÑ Ðº ÑкÑпорту" + +#~ msgid "" +#~ "/**\n" +#~ " * Install Add-ons\n" +#~ " * \n" +#~ " * The following code will include all 4 premium Add-Ons in your theme.\n" +#~ " * Please do not attempt to include a file which does not exist. This " +#~ "will produce an error.\n" +#~ " * \n" +#~ " * All fields must be included during the 'acf/register_fields' action.\n" +#~ " * Other types of Add-ons (like the options page) can be included " +#~ "outside of this action.\n" +#~ " * \n" +#~ " * The following code assumes you have a folder 'add-ons' inside your " +#~ "theme.\n" +#~ " *\n" +#~ " * IMPORTANT\n" +#~ " * Add-ons may be included in a premium theme as outlined in the terms " +#~ "and conditions.\n" +#~ " * However, they are NOT to be included in a premium / free plugin.\n" +#~ " * For more information, please read http://www.advancedcustomfields.com/" +#~ "terms-conditions/\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * УÑтановка аддонов\n" +#~ " * \n" +#~ " * Следующий код включит вÑе 4 премиум аддона в вашу тему.\n" +#~ " * ПожалуйÑта, не пытайтеÑÑŒ включить файл, который не ÑущеÑтвует. Это " +#~ "вызовет ошибку.\n" +#~ " * \n" +#~ " * Ð’Ñе Ð¿Ð¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть включены во Ð²Ñ€ÐµÐ¼Ñ 'acf/register_fields' " +#~ "дейÑтвиÑ.\n" +#~ " * Другие типы аддонов (такие, как Ñтраница Ñ Ð¾Ð¿Ñ†Ð¸Ñми) могут быть " +#~ "включены вне Ñтого дейÑтвиÑ.\n" +#~ " * \n" +#~ " * Следующий код предполагает, что у Ð²Ð°Ñ ÐµÑть папка 'add-ons' в вашей " +#~ "теме.\n" +#~ " *\n" +#~ " * Ð’ÐЖÐО\n" +#~ " * Ðддоны могут быть включены в премиум темы, как указано в Правилах и " +#~ "уÑловиÑÑ….\n" +#~ " * Тем не менее, они не будут включены в беÑплатный или премиум плагин.\n" +#~ " * Ð”Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ¹ информации, пожалуйÑта, прочтите http://www." +#~ "advancedcustomfields.com/terms-conditions/\n" +#~ " */" + +#~ msgid "" +#~ "/**\n" +#~ " * Register Field Groups\n" +#~ " *\n" +#~ " * The register_field_group function accepts 1 array which holds the " +#~ "relevant data to register a field group\n" +#~ " * You may edit the array as you see fit. However, this may result in " +#~ "errors if the array is not compatible with ACF\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ полей\n" +#~ " *\n" +#~ " * Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ 'register_field_group' принимает один маÑÑив, который держит " +#~ "ÑоответÑтвенные данные, чтобы зарегиÑтрировать группу полей.\n" +#~ " * Ð’Ñ‹ можете редактировать Ñтот маÑÑив, как поÑчитаете нужным. Однако, " +#~ "Ñто может вызвать ошибки, еÑли маÑÑив не ÑовмеÑтвим Ñ ACF.\n" +#~ " */" + +#~ msgid "No field groups were selected" +#~ msgstr "Группы полей не выбраны" + +#~ msgid "Show Field Key:" +#~ msgstr "Отображать ключ полÑ:" + +#~ msgid "Vote" +#~ msgstr "Оценить" + +#~ msgid "Follow" +#~ msgstr "Следить" + +#~ msgid "Thank you for updating to the latest version!" +#~ msgstr "Благодарим за обновление до поÑледней верÑии!" + +#~ msgid "" +#~ "is more polished and enjoyable than ever before. We hope you like it." +#~ msgstr "" +#~ "еще более улучшен и интереÑен, чем когда либо. Мы надеемÑÑ, что вам он " +#~ "понравитÑÑ." + +#~ msgid "What’s New" +#~ msgstr "Что нового" + +#~ msgid "Download Add-ons" +#~ msgstr "Скачать аддоны" + +#~ msgid "Activation codes have grown into plugins!" +#~ msgstr "Коды активации выроÑли до плагинов!" + +#~ msgid "" +#~ "Add-ons are now activated by downloading and installing individual " +#~ "plugins. Although these plugins will not be hosted on the wordpress.org " +#~ "repository, each Add-on will continue to receive updates in the usual way." +#~ msgstr "" +#~ "Ðддоны теперь активируютÑÑ ÑÐºÐ°Ñ‡Ð¸Ð²Ð°Ñ Ð¸ уÑÑ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ðµ " +#~ "плагины. Ðе ÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что Ñти плагины не будут загружены на WordPress." +#~ "org, каждый аддон будет обновлÑтьÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ ÑпоÑобом." + +#~ msgid "All previous Add-ons have been successfully installed" +#~ msgstr "Ð’Ñе предыдущие аддоны были уÑпешно уÑтановлены." + +#~ msgid "This website uses premium Add-ons which need to be downloaded" +#~ msgstr "Этот Ñайт иÑпользует премиум аддоны, которые должны быть Ñкачаны." + +#~ msgid "Download your activated Add-ons" +#~ msgstr "Скачайте Ñвои активированные аддоны." + +#~ msgid "" +#~ "This website does not use premium Add-ons and will not be affected by " +#~ "this change." +#~ msgstr "" +#~ "Этот Ñайт не иÑпользует премиум аддоны и не будет затронут Ñтим " +#~ "изменением." + +#~ msgid "Easier Development" +#~ msgstr "Ð£Ð¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ð°Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ°" + +#~ msgid "New Field Types" +#~ msgstr "Ðовые типы полей" + +#~ msgid "Taxonomy Field" +#~ msgstr "Поле такÑономии" + +#~ msgid "User Field" +#~ msgstr "Поле пользователÑ" + +#~ msgid "Email Field" +#~ msgstr "Поле email" + +#~ msgid "Password Field" +#~ msgstr "Поле паролÑ" + +#~ msgid "Custom Field Types" +#~ msgstr "Произвольные типы полей" + +#~ msgid "" +#~ "Creating your own field type has never been easier! Unfortunately, " +#~ "version 3 field types are not compatible with version 4." +#~ msgstr "" +#~ "Создание ÑобÑтвенного типа полей никогда не было проще! К Ñожалению, типы " +#~ "полей 3-ей верÑии не ÑовмеÑтимы Ñ Ð²ÐµÑ€Ñией 4." + +#~ msgid "Migrating your field types is easy, please" +#~ msgstr "ÐœÐ¸Ð³Ñ€Ð°Ñ†Ð¸Ñ Ð²Ð°ÑˆÐ¸Ñ… типов полей очень проÑта, пожалуйÑта," + +#~ msgid "follow this tutorial" +#~ msgstr "Ñледуйте Ñтому уроку," + +#~ msgid "to learn more." +#~ msgstr "чтобы узнать больше." + +#~ msgid "Actions & Filters" +#~ msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð¸ фильтры" + +#~ msgid "" +#~ "All actions & filters have recieved a major facelift to make customizing " +#~ "ACF even easier! Please" +#~ msgstr "" +#~ "Ð’Ñе дейÑÑ‚Ð²Ð¸Ñ Ð¸ фильтры получили крупное внешне обновление, чтобы Ñделать " +#~ "наÑтраивание ACF еще более проÑтым! ПожалуйÑта, " + +#~ msgid "read this guide" +#~ msgstr "прочитайте Ñтот гид," + +#~ msgid "to find the updated naming convention." +#~ msgstr "чтобы найти обновленное Ñобрание названий." + +#~ msgid "Preview draft is now working!" +#~ msgstr "ПредпроÑмотр черновика теперь работает!" + +#~ msgid "This bug has been squashed along with many other little critters!" +#~ msgstr "" +#~ "Эта ошибка была раздавленна нарÑду Ñо многими другими мелкими тварÑми!" + +#~ msgid "See the full changelog" +#~ msgstr "ПоÑмотреть веÑÑŒ журнал изменений" + +#~ msgid "Important" +#~ msgstr "Важно" + +#~ msgid "Database Changes" +#~ msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² базе данных" + +#~ msgid "" +#~ "Absolutely no changes have been made to the database " +#~ "between versions 3 and 4. This means you can roll back to version 3 " +#~ "without any issues." +#~ msgstr "" +#~ "Ðе было абÑолютно никаких изменений в базе данных между " +#~ "3-ьей и 4-ой верÑиÑми. Это значит, вы можете откатитьÑÑ Ð´Ð¾ 3-ьей верÑии " +#~ "без каких либо проблем." + +#~ msgid "Potential Issues" +#~ msgstr "Потенциальные проблемы" + +#~ msgid "" +#~ "Do to the sizable changes surounding Add-ons, field types and action/" +#~ "filters, your website may not operate correctly. It is important that you " +#~ "read the full" +#~ msgstr "" +#~ "Ð’ ÑвÑзи Ñо значительными изменениÑми в аддонах, типах полей и дейÑтвиÑÑ…/" +#~ "фильтрах, ваш Ñайт может не работать корректно. Очень важно, чтобы вы " +#~ "прочитали полный гид" + +#~ msgid "Migrating from v3 to v4" +#~ msgstr "Переезд Ñ Ð²ÐµÑ€Ñии 3 до верÑии 4" + +#~ msgid "guide to view the full list of changes." +#~ msgstr "Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ ÑпиÑка изменений." + +#~ msgid "Really Important!" +#~ msgstr "Очень важно!" + +#~ msgid "" +#~ "If you updated the ACF plugin without prior knowledge of such changes, " +#~ "Please roll back to the latest" +#~ msgstr "" +#~ "ЕÑли вы обновили плагин ACF без предварительных знаний об изменениÑÑ…, " +#~ "пожалуйÑта, откатитеÑÑŒ до поÑледней" + +#~ msgid "version 3" +#~ msgstr "верÑиай 3" + +#~ msgid "of this plugin." +#~ msgstr "Ñтого плагина." + +#~ msgid "Thank You" +#~ msgstr "Благодарим ваÑ" + +#~ msgid "" +#~ "A BIG thank you to everyone who has helped test the " +#~ "version 4 beta and for all the support I have received." +#~ msgstr "" +#~ "БОЛЬШОЕ ÑпаÑибо вÑем, кто помог протеÑтировать верÑию 4 " +#~ "бета и за вÑÑŽ поддержку, которую мне оказали." + +#~ msgid "Without you all, this release would not have been possible!" +#~ msgstr "Без Ð²Ð°Ñ Ð²Ñех, Ñтот релиз был бы невозможен!" + +#~ msgid "Changelog for" +#~ msgstr "Журнал изменений по" + +#~ msgid "Learn more" +#~ msgstr "Узнать больше" + +#~ msgid "Overview" +#~ msgstr "Обзор" + +#~ msgid "" +#~ "Previously, all Add-ons were unlocked via an activation code (purchased " +#~ "from the ACF Add-ons store). New to v4, all Add-ons act as separate " +#~ "plugins which need to be individually downloaded, installed and updated." +#~ msgstr "" +#~ "Раньше, вÑе аддоны разблокировалиÑÑŒ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ когда активации (купленные " +#~ "в магазине аддонов ACF). Ðовинка в верÑии 4, вÑе аддоны работают, как " +#~ "отдельные плагины, которые должны быть Ñкачаны, уÑтановлены и обновлены " +#~ "отдельно." + +#~ msgid "" +#~ "This page will assist you in downloading and installing each available " +#~ "Add-on." +#~ msgstr "" +#~ "Эта Ñтраница поможет вам Ñкачать и уÑтановить каждый доÑтупный аддон." + +#~ msgid "Available Add-ons" +#~ msgstr "ДоÑтупные аддоны" + +#~ msgid "" +#~ "The following Add-ons have been detected as activated on this website." +#~ msgstr "Следующие аддоны были обнаружены активированными на Ñтом Ñайте." + +#~ msgid "Activation Code" +#~ msgstr "Код активации" + +#~ msgid "Installation" +#~ msgstr "УÑтановка" + +#~ msgid "For each Add-on available, please perform the following:" +#~ msgstr "Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ доÑтупно аддона, выполните, пожалуйÑта, Ñледующее:" + +#~ msgid "Download the Add-on plugin (.zip file) to your desktop" +#~ msgstr "Скачайте плагин аддона (.zip файл) на ваш компьютер." + +#~ msgid "Navigate to" +#~ msgstr "Перейти в" + +#~ msgid "Plugins > Add New > Upload" +#~ msgstr "" +#~ "Откройте \"Плагины\" » \"Добавить новый\" » \"Загрузить\"." + +#~ msgid "" +#~ "Use the uploader to browse, select and install your Add-on (.zip file)" +#~ msgstr "Ðайдите Ñкачанный .zip файл, выберите его и уÑтановите." + +#~ msgid "" +#~ "Once the plugin has been uploaded and installed, click the 'Activate " +#~ "Plugin' link" +#~ msgstr "" +#~ "Как только плагин будет загружен и уÑтановлен, нажмите на ÑÑылку " +#~ "\"Ðктивировать плагин\"." + +#~ msgid "The Add-on is now installed and activated!" +#~ msgstr "Ðддон теперь уÑтановлен и активирован!" + +#~ msgid "Awesome. Let's get to work" +#~ msgstr "ПревоÑходно! ПриÑтупим к работе." + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "" +#~ "Проверка не удалаÑÑŒ. Один или больше полей ниже обÑзательны к заполнению." + +#~ msgid "Modifying field group options 'show on page'" +#~ msgstr "Изменение опций \"отображать на Ñтранице\" группы полей" + +#~ msgid "Modifying field option 'taxonomy'" +#~ msgstr "Изменение опции \"такÑономиÑ\" полÑ" + +#~ msgid "Moving user custom fields from wp_options to wp_usermeta'" +#~ msgstr "" +#~ "ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑких произвольных полей из \"wp_options\" в " +#~ "\"wp_usermeta\"" + +#~ msgid "blue : Blue" +#~ msgstr "blue : Blue" + +#~ msgid "eg: #ffffff" +#~ msgstr "Пример: #ffffff" + +#~ msgid "Save format" +#~ msgstr "Сохранить формат" + +#~ msgid "" +#~ "This format will determin the value saved to the database and returned " +#~ "via the API" +#~ msgstr "" +#~ "Этот формат определит значение Ñохраненное в базе данных и возвращенное " +#~ "через API." + +#~ msgid "\"yymmdd\" is the most versatile save format. Read more about" +#~ msgstr "\"yymmdd\" Ñамоый практичный формат. Прочитать больше о" + +#~ msgid "jQuery date formats" +#~ msgstr "jQuery форматах дат" + +#~ msgid "This format will be seen by the user when entering a value" +#~ msgstr "Этот формат будет виден пользователÑм при вводе значениÑ." + +#~ msgid "" +#~ "\"dd/mm/yy\" or \"mm/dd/yy\" are the most used Display Formats. Read more " +#~ "about" +#~ msgstr "" +#~ "\"dd/mm/yy\" или \"mm/dd/yy\" Ñамые иÑпользуемые форматы отображениÑ. " +#~ "Прочитать больше о" + +#~ msgid "Dummy" +#~ msgstr "Макет" + +#~ msgid "No File Selected" +#~ msgstr "Файл не выбран" + +#~ msgid "File Object" +#~ msgstr "Файловый объект" + +#~ msgid "File Updated." +#~ msgstr "Файл обновлен." + +#~ msgid "Media attachment updated." +#~ msgstr "Вложение медиа обновлено." + +#~ msgid "No files selected" +#~ msgstr "Файлы не выбраны" + +#~ msgid "Add Selected Files" +#~ msgstr "Добавить выбранные файлы" + +#~ msgid "Image Object" +#~ msgstr "Изображаемый объект" + +#~ msgid "Image Updated." +#~ msgstr "Изображение обновлено." + +#~ msgid "No images selected" +#~ msgstr "Изображение не выбраны" + +#~ msgid "Add Selected Images" +#~ msgstr "Добавить выбранные изображениÑ" + +#~ msgid "Text & HTML entered here will appear inline with the fields" +#~ msgstr "ТекÑÑ‚ и HTML введенный Ñюда поÑвитÑÑ Ð½Ð° одной Ñтроке Ñ Ð¿Ð¾Ð»Ñми." + +#~ msgid "Filter from Taxonomy" +#~ msgstr "Фильтровать по такÑономии" + +#~ msgid "Enter your choices one per line" +#~ msgstr "Введите каждый вариант выбора на новую Ñтроку." + +#~ msgid "Red" +#~ msgstr "Red" + +#~ msgid "Blue" +#~ msgstr "Blue" + +#~ msgid "Post Type Select" +#~ msgstr "Выбор типа запиÑи" + +#~ msgid "Post Title" +#~ msgstr "Заголовок запиÑи" + +#~ msgid "" +#~ "All fields proceeding this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will appear grouped on the edit screen." +#~ msgstr "" +#~ "Ð’Ñе полÑ, которые Ñледуют перед Ñтим полем будут находитьÑÑ Ð² данной " +#~ "вкладке (или пока другое поле-вкладка не будет Ñоздано)." + +#~ msgid "You can use multiple tabs to break up your fields into sections." +#~ msgstr "" +#~ "Ð’Ñ‹ можете иÑпользовать неÑколько вкладок, чтобы разделить Ñвои Ð¿Ð¾Ð»Ñ Ð½Ð° " +#~ "разделы." + +#~ msgid "Formatting" +#~ msgstr "Форматирование" + +#~ msgid "Define how to render html tags" +#~ msgstr "Определите, как отображать HTML теги." + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Define how to render html tags / new lines" +#~ msgstr "Определите, как отображать HTML теги и новые Ñтроки." + +#~ msgid "auto <br />" +#~ msgstr "автоматичеÑкие <br />" + +# Must be non-translateable. +#~ msgid "new_field" +#~ msgstr "new_field" + +#~ msgid "Field Order" +#~ msgstr "ОчередноÑть полÑ" + +#~ msgid "Field Key" +#~ msgstr "Ключ полÑ" + +#~ msgid "Edit this Field" +#~ msgstr "Редактировать Ñто поле." + +#~ msgid "Read documentation for this field" +#~ msgstr "Прочитайте документацию по Ñтому полю." + +#~ msgid "Docs" +#~ msgstr "ДокументациÑ" + +#~ msgid "Duplicate this Field" +#~ msgstr "Копировать Ñто поле" + +#~ msgid "Delete this Field" +#~ msgstr "Удалить Ñто поле" + +#~ msgid "Field Instructions" +#~ msgstr "ИнÑтрукции по полю" + +#~ msgid "Show this field when" +#~ msgstr "Отображать Ñто поле, когда" + +#~ msgid "all" +#~ msgstr "вÑе" + +#~ msgid "any" +#~ msgstr "любое" + +#~ msgid "these rules are met" +#~ msgstr "из Ñтих уÑловий придерживаютÑÑ" + +#~ msgid "Taxonomy Term (Add / Edit)" +#~ msgstr "Термин такÑономии (Добавить / Редактировать)" + +#~ msgid "User (Add / Edit)" +#~ msgstr "Пользователь (Добавить / Редактировать)" + +#~ msgid "Media Attachment (Edit)" +#~ msgstr "Вложение медиа (Редактировать)" + +#~ msgid "Unlock options add-on with an activation code" +#~ msgstr "Разблокировать опции аддона Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ кода активации." + +#~ msgid "Normal" +#~ msgstr "Обычно" + +#~ msgid "No Metabox" +#~ msgstr "Без метабокÑа" + +#~ msgid "Standard Metabox" +#~ msgstr "Стандартный метабокÑ" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-sk_SK.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-sk_SK.mo new file mode 100755 index 0000000000000000000000000000000000000000..a84d47b6c87ffb4ecb2f43d0a17d77bce2739209 GIT binary patch literal 40673 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 R@qfA9?-Vg_cDCQ}|Nm+-NC^M{ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-sk_SK.po b/wp-content/plugins/advanced-custom-fields/lang/acf-sk_SK.po new file mode 100644 index 0000000..e7913b6 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-sk_SK.po @@ -0,0 +1,2601 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2015-08-11 23:45+0200\n" +"PO-Revision-Date: 2018-02-06 10:07+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: wp.sk \n" +"Language: sk_SK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;" +"esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "Rozšírené vlastné polia" + +#: acf.php:205 admin/admin.php:61 +msgid "Field Groups" +msgstr "Skupiny polí" + +#: acf.php:206 +msgid "Field Group" +msgstr "Skupina polí" + +#: acf.php:207 acf.php:239 admin/admin.php:62 pro/fields/flexible-content.php:517 +msgid "Add New" +msgstr "PridaÅ¥ novú" + +#: acf.php:208 +msgid "Add New Field Group" +msgstr "PridaÅ¥ novú skupinu polí " + +#: acf.php:209 +msgid "Edit Field Group" +msgstr "UpraviÅ¥ skupinu polí " + +#: acf.php:210 +msgid "New Field Group" +msgstr "PridaÅ¥ novú skupinu polí " + +#: acf.php:211 +msgid "View Field Group" +msgstr "ZobraziÅ¥ skupinu polí " + +#: acf.php:212 +msgid "Search Field Groups" +msgstr "HľadaÅ¥ skupinu polí " + +#: acf.php:213 +msgid "No Field Groups found" +msgstr "NenaÅ¡la sa skupina polí " + +#: acf.php:214 +msgid "No Field Groups found in Trash" +msgstr "V koÅ¡i sa nenaÅ¡la skupina polí " + +#: acf.php:237 admin/field-group.php:182 admin/field-group.php:213 admin/field-groups.php:519 +msgid "Fields" +msgstr "Polia " + +#: acf.php:238 +msgid "Field" +msgstr "Pole" + +#: acf.php:240 +msgid "Add New Field" +msgstr "PridaÅ¥ nové pole" + +#: acf.php:241 +msgid "Edit Field" +msgstr "UpraviÅ¥ pole" + +#: acf.php:242 admin/views/field-group-fields.php:18 admin/views/settings-info.php:111 +msgid "New Field" +msgstr "Nové pole " + +#: acf.php:243 +msgid "View Field" +msgstr "ZobraziÅ¥ pole" + +#: acf.php:244 +msgid "Search Fields" +msgstr "HľadaÅ¥ polia" + +#: acf.php:245 +msgid "No Fields found" +msgstr "NenaÅ¡li sa polia" + +#: acf.php:246 +msgid "No Fields found in Trash" +msgstr "V koÅ¡i sa nenaÅ¡li polia" + +#: acf.php:268 admin/field-group.php:283 admin/field-groups.php:583 admin/views/field-group-options.php:18 +msgid "Disabled" +msgstr "" + +#: acf.php:273 +#, php-format +msgid "Disabled (%s)" +msgid_plural "Disabled (%s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: admin/admin.php:57 admin/views/field-group-options.php:120 +msgid "Custom Fields" +msgstr "Vlastné polia " + +#: admin/field-group.php:68 admin/field-group.php:69 admin/field-group.php:71 +msgid "Field group updated." +msgstr "Skupina polí aktualizovaná. " + +#: admin/field-group.php:70 +msgid "Field group deleted." +msgstr "Skupina polí aktualizovaná. " + +#: admin/field-group.php:73 +msgid "Field group published." +msgstr "Skupina polí aktualizovaná. " + +#: admin/field-group.php:74 +msgid "Field group saved." +msgstr "Skupina polí uložená. " + +#: admin/field-group.php:75 +msgid "Field group submitted." +msgstr "Skupina polí odoslaná. " + +#: admin/field-group.php:76 +msgid "Field group scheduled for." +msgstr "Skupina polí naplánovaná na. " + +#: admin/field-group.php:77 +msgid "Field group draft updated." +msgstr "Koncept skupiny polí uložený. " + +#: admin/field-group.php:176 +msgid "Move to trash. Are you sure?" +msgstr "Presunúť do koÅ¡a. Naozaj? " + +#: admin/field-group.php:177 +msgid "checked" +msgstr "zaÅ¡krtnuté " + +#: admin/field-group.php:178 +msgid "No toggle fields available" +msgstr "Prepínacie polia nenájdené" + +#: admin/field-group.php:179 +msgid "Field group title is required" +msgstr "Nadpis skupiny poľa je povinný " + +#: admin/field-group.php:180 api/api-field-group.php:607 +msgid "copy" +msgstr "kopírovaÅ¥ " + +#: admin/field-group.php:181 admin/views/field-group-field-conditional-logic.php:67 +#: admin/views/field-group-field-conditional-logic.php:162 admin/views/field-group-locations.php:23 +#: admin/views/field-group-locations.php:131 api/api-helpers.php:3262 +msgid "or" +msgstr "alebo" + +#: admin/field-group.php:183 +msgid "Parent fields" +msgstr "Nadradené polia " + +#: admin/field-group.php:184 +msgid "Sibling fields" +msgstr "Podobné polia " + +#: admin/field-group.php:185 +msgid "Move Custom Field" +msgstr "Presunúť pole do inej skupiny " + +#: admin/field-group.php:186 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Kým nebudú uložené zmeny, pole nemôže byÅ¥ presunuté" + +#: admin/field-group.php:187 +msgid "Null" +msgstr "Nulová hodnota" + +#: admin/field-group.php:188 core/input.php:128 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "Ak odítete zo stránky, zmeny nebudú uložené" + +#: admin/field-group.php:189 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "ReÅ¥azec \"field_\" nesmie byÅ¥ použitý na zaÄiatku názvu poľa" + +#: admin/field-group.php:214 +msgid "Location" +msgstr "Umiestnenie " + +#: admin/field-group.php:215 +msgid "Settings" +msgstr "" + +#: admin/field-group.php:253 +msgid "Field Keys" +msgstr "" + +#: admin/field-group.php:283 admin/views/field-group-options.php:17 +msgid "Active" +msgstr "" + +#: admin/field-group.php:744 +msgid "Front Page" +msgstr "Úvodná stránka " + +#: admin/field-group.php:745 +msgid "Posts Page" +msgstr "Stránka príspevkov " + +#: admin/field-group.php:746 +msgid "Top Level Page (no parent)" +msgstr "Najvyššia úroveň stránok (nemá nadradené stránky) " + +#: admin/field-group.php:747 +msgid "Parent Page (has children)" +msgstr "Nadradená stránka (má odvodené) " + +#: admin/field-group.php:748 +msgid "Child Page (has parent)" +msgstr "Odvodená stránka (má nadradené) " + +#: admin/field-group.php:764 +msgid "Default Template" +msgstr "Základná Å¡ablóna " + +#: admin/field-group.php:786 +msgid "Logged in" +msgstr "Typ prihláseného používatela " + +#: admin/field-group.php:787 +msgid "Viewing front end" +msgstr "Zobrazenie stránok" + +#: admin/field-group.php:788 +msgid "Viewing back end" +msgstr "Zobrazenie administrácie" + +#: admin/field-group.php:807 +msgid "Super Admin" +msgstr "Super Admin " + +#: admin/field-group.php:818 admin/field-group.php:826 admin/field-group.php:840 admin/field-group.php:847 +#: admin/field-group.php:862 admin/field-group.php:872 fields/file.php:235 fields/image.php:226 pro/fields/gallery.php:653 +msgid "All" +msgstr "VÅ¡etky " + +#: admin/field-group.php:827 +msgid "Add / Edit" +msgstr "PridaÅ¥/ UpraviÅ¥" + +#: admin/field-group.php:828 +msgid "Register" +msgstr "RegistrovaÅ¥" + +#: admin/field-group.php:1059 +msgid "Move Complete." +msgstr "Presunutie dokonÄené" + +#: admin/field-group.php:1060 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Pole %s teraz nájdete v poli skupiny %s" + +#: admin/field-group.php:1062 +msgid "Close Window" +msgstr "ZatvoriÅ¥ okno" + +#: admin/field-group.php:1097 +msgid "Please select the destination for this field" +msgstr "Vyberte cielové umietnenie poľa" + +#: admin/field-group.php:1104 +msgid "Move Field" +msgstr "Presunúť pole" + +#: admin/field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: admin/field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Skupina polí duplikovaná. %s" + +#: admin/field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s skupina polí bola duplikovaná." +msgstr[1] "%s skupiny polí boli duplikované." +msgstr[2] "%s skupín polí bolo duplikovaných." + +#: admin/field-groups.php:228 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Skupina polí bola synchronizovaná. %s" + +#: admin/field-groups.php:232 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s skupina polí bola synchronizovaná." +msgstr[1] "%s skupiny polí boli synchronizované." +msgstr[2] "%s skupín polí bolo synchronizovaných." + +#: admin/field-groups.php:403 admin/field-groups.php:573 +msgid "Sync available" +msgstr "Dostupná aktualizácia " + +#: admin/field-groups.php:516 +msgid "Title" +msgstr "Názov" + +#: admin/field-groups.php:517 admin/views/field-group-options.php:98 admin/views/update-network.php:20 +#: admin/views/update-network.php:28 +msgid "Description" +msgstr "" + +#: admin/field-groups.php:518 admin/views/field-group-options.php:10 +msgid "Status" +msgstr "" + +#: admin/field-groups.php:616 admin/settings-info.php:76 pro/admin/views/settings-updates.php:111 +msgid "Changelog" +msgstr "Záznam zmien " + +#: admin/field-groups.php:617 +msgid "See what's new in" +msgstr "Pozrite sa, Äo je nové:" + +#: admin/field-groups.php:617 +msgid "version" +msgstr "verzia " + +#: admin/field-groups.php:619 +msgid "Resources" +msgstr "Zdroje " + +#: admin/field-groups.php:621 +msgid "Getting Started" +msgstr "ZaÄíname " + +#: admin/field-groups.php:622 pro/admin/settings-updates.php:73 pro/admin/views/settings-updates.php:17 +msgid "Updates" +msgstr "Aktualizácie" + +#: admin/field-groups.php:623 +msgid "Field Types" +msgstr "Typy polí " + +#: admin/field-groups.php:624 +msgid "Functions" +msgstr "Funkcie " + +#: admin/field-groups.php:625 +msgid "Actions" +msgstr "Akcie " + +#: admin/field-groups.php:626 fields/relationship.php:718 +msgid "Filters" +msgstr "Filtre " + +#: admin/field-groups.php:627 +msgid "'How to' guides" +msgstr "Návody \"Ako na to\" " + +#: admin/field-groups.php:628 +msgid "Tutorials" +msgstr "Návody " + +#: admin/field-groups.php:633 +msgid "Created by" +msgstr "Vytvoril " + +#: admin/field-groups.php:673 +msgid "Duplicate this item" +msgstr "DuplikovaÅ¥ toto pole " + +#: admin/field-groups.php:673 admin/field-groups.php:685 admin/views/field-group-field.php:58 +#: pro/fields/flexible-content.php:516 +msgid "Duplicate" +msgstr "DuplikovaÅ¥ " + +#: admin/field-groups.php:724 +#, php-format +msgid "Select %s" +msgstr "VybraÅ¥ %s" + +#: admin/field-groups.php:730 +msgid "Synchronise field group" +msgstr "ZobraziÅ¥ túto skupinu poľa, ak" + +#: admin/field-groups.php:730 admin/field-groups.php:750 +msgid "Sync" +msgstr "Synchronizácia" + +#: admin/settings-addons.php:51 admin/views/settings-addons.php:9 +msgid "Add-ons" +msgstr "Doplnky " + +#: admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Chyba. Nie je možné naÄítaÅ¥ zoznam doplnkov" + +#: admin/settings-info.php:50 +msgid "Info" +msgstr "Info" + +#: admin/settings-info.php:75 +msgid "What's New" +msgstr "ÄŒo je nové " + +#: admin/settings-tools.php:54 admin/views/settings-tools-export.php:9 admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "" + +#: admin/settings-tools.php:151 admin/settings-tools.php:365 +msgid "No field groups selected" +msgstr "Nezvolili ste skupiny poľa " + +#: admin/settings-tools.php:188 +msgid "No file selected" +msgstr "Nevybrali ste súbor " + +#: admin/settings-tools.php:201 +msgid "Error uploading file. Please try again" +msgstr "Chyba pri nahrávaní súbora. Prosím skúste to znova" + +#: admin/settings-tools.php:210 +msgid "Incorrect file type" +msgstr "Typ nahraného súboru nie je povolený " + +#: admin/settings-tools.php:227 +msgid "Import file empty" +msgstr "Nahraný súbor bol prázdny" + +#: admin/settings-tools.php:323 +#, php-format +msgid "Success. Import tool added %s field groups: %s" +msgstr "Úspech. Nástroj importu pridal %s skupiny polí: %s" + +#: admin/settings-tools.php:332 +#, php-format +msgid "Warning. Import tool detected %s field groups already exist and have been ignored: %s" +msgstr "Varovanie. Nástroj importu zistil, že už exsituje %s polí skupín, ktoré boli ignorované: %s" + +#: admin/update.php:113 +msgid "Upgrade ACF" +msgstr "" + +#: admin/update.php:143 +msgid "Review sites & upgrade" +msgstr "" + +#: admin/update.php:298 +msgid "Upgrade" +msgstr "AktualizovaÅ¥ " + +#: admin/update.php:328 +msgid "Upgrade Database" +msgstr "" + +#: admin/views/field-group-field-conditional-logic.php:29 +msgid "Conditional Logic" +msgstr "Podmienená logika " + +#: admin/views/field-group-field-conditional-logic.php:40 admin/views/field-group-field.php:137 fields/checkbox.php:246 +#: fields/message.php:117 fields/page_link.php:568 fields/page_link.php:582 fields/post_object.php:434 +#: fields/post_object.php:448 fields/select.php:411 fields/select.php:425 fields/select.php:439 fields/select.php:453 +#: fields/tab.php:172 fields/taxonomy.php:770 fields/taxonomy.php:784 fields/taxonomy.php:798 fields/taxonomy.php:812 +#: fields/user.php:457 fields/user.php:471 fields/wysiwyg.php:384 pro/admin/views/settings-updates.php:93 +msgid "Yes" +msgstr "Ãno " + +#: admin/views/field-group-field-conditional-logic.php:41 admin/views/field-group-field.php:138 fields/checkbox.php:247 +#: fields/message.php:118 fields/page_link.php:569 fields/page_link.php:583 fields/post_object.php:435 +#: fields/post_object.php:449 fields/select.php:412 fields/select.php:426 fields/select.php:440 fields/select.php:454 +#: fields/tab.php:173 fields/taxonomy.php:685 fields/taxonomy.php:771 fields/taxonomy.php:785 fields/taxonomy.php:799 +#: fields/taxonomy.php:813 fields/user.php:458 fields/user.php:472 fields/wysiwyg.php:385 +#: pro/admin/views/settings-updates.php:103 +msgid "No" +msgstr "Nie" + +#: admin/views/field-group-field-conditional-logic.php:65 +msgid "Show this field if" +msgstr "ZobraziÅ¥ toto pole ak" + +#: admin/views/field-group-field-conditional-logic.php:111 admin/views/field-group-locations.php:88 +msgid "is equal to" +msgstr "sa rovná " + +#: admin/views/field-group-field-conditional-logic.php:112 admin/views/field-group-locations.php:89 +msgid "is not equal to" +msgstr "sa nerovná" + +#: admin/views/field-group-field-conditional-logic.php:149 admin/views/field-group-locations.php:118 +msgid "and" +msgstr "a" + +#: admin/views/field-group-field-conditional-logic.php:164 admin/views/field-group-locations.php:133 +msgid "Add rule group" +msgstr "PridaÅ¥ skupinu pravidiel " + +#: admin/views/field-group-field.php:54 admin/views/field-group-field.php:57 +msgid "Edit field" +msgstr "UpraviÅ¥ pole" + +#: admin/views/field-group-field.php:57 pro/fields/gallery.php:355 +msgid "Edit" +msgstr "UpraviÅ¥" + +#: admin/views/field-group-field.php:58 +msgid "Duplicate field" +msgstr "DuplikovaÅ¥ pole" + +#: admin/views/field-group-field.php:59 +msgid "Move field to another group" +msgstr "Presunúť pole do inej skupiny" + +#: admin/views/field-group-field.php:59 +msgid "Move" +msgstr "Presunúť" + +#: admin/views/field-group-field.php:60 +msgid "Delete field" +msgstr "VymazaÅ¥ pole" + +#: admin/views/field-group-field.php:60 pro/fields/flexible-content.php:515 +msgid "Delete" +msgstr "VymazaÅ¥" + +#: admin/views/field-group-field.php:68 fields/oembed.php:212 fields/taxonomy.php:886 +msgid "Error" +msgstr "Chyba " + +#: fields/oembed.php:220 fields/taxonomy.php:900 +msgid "Error." +msgstr "Chyba." + +#: admin/views/field-group-field.php:68 +msgid "Field type does not exist" +msgstr "Typ poľa neexistuje " + +#: admin/views/field-group-field.php:81 +msgid "Field Label" +msgstr "OznaÄenie poľa " + +#: admin/views/field-group-field.php:82 +msgid "This is the name which will appear on the EDIT page" +msgstr "Toto je meno, ktoré sa zobrazí na stránke úprav " + +#: admin/views/field-group-field.php:93 +msgid "Field Name" +msgstr "Meno poľa " + +#: admin/views/field-group-field.php:94 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Jedno slovo, žiadne medzery. PodÄiarknutie a pomlÄky sú povolené " + +#: admin/views/field-group-field.php:105 +msgid "Field Type" +msgstr "Typ poľa" + +#: admin/views/field-group-field.php:118 fields/tab.php:143 +msgid "Instructions" +msgstr "Pokyny " + +#: admin/views/field-group-field.php:119 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Pokyny pre autorov. Zobrazia sa pri zadávaní dát " + +#: admin/views/field-group-field.php:130 +msgid "Required?" +msgstr "Povinné? " + +#: admin/views/field-group-field.php:158 +msgid "Wrapper Attributes" +msgstr "Hodnoty bloku polí v administrácii" + +#: admin/views/field-group-field.php:164 +msgid "width" +msgstr "Šírka" + +#: admin/views/field-group-field.php:178 +msgid "class" +msgstr "trieda" + +#: admin/views/field-group-field.php:191 +msgid "id" +msgstr "id " + +#: admin/views/field-group-field.php:203 +msgid "Close Field" +msgstr "ZavrieÅ¥ pole " + +#: admin/views/field-group-fields.php:29 +msgid "Order" +msgstr "Poradie" + +#: admin/views/field-group-fields.php:30 pro/fields/flexible-content.php:541 +msgid "Label" +msgstr "OznaÄenie " + +#: admin/views/field-group-fields.php:31 pro/fields/flexible-content.php:554 +msgid "Name" +msgstr "Meno" + +#: admin/views/field-group-fields.php:32 +msgid "Type" +msgstr "Typ" + +#: admin/views/field-group-fields.php:44 +msgid "No fields. Click the + Add Field button to create your first field." +msgstr "Žiadne polia. Kliknite na tlaÄidlo + PridaÅ¥ pole pre vytvorenie prvého poľa. " + +#: admin/views/field-group-fields.php:51 +msgid "Drag and drop to reorder" +msgstr "Zmeňte poradie pomocou funkcie Å¥ahaj a pusÅ¥" + +#: admin/views/field-group-fields.php:54 +msgid "+ Add Field" +msgstr "+ PridaÅ¥ pole " + +#: admin/views/field-group-locations.php:5 +msgid "Rules" +msgstr "Pravidlá " + +#: admin/views/field-group-locations.php:6 +msgid "Create a set of rules to determine which edit screens will use these advanced custom fields" +msgstr "Vytvorte súbor pravidiel urÄujúcich, ktoré obrazovky úprav budú používaÅ¥ Vlastné polia" + +#: admin/views/field-group-locations.php:21 +msgid "Show this field group if" +msgstr "ZobraziÅ¥ túto skupinu poľa ak " + +#: admin/views/field-group-locations.php:41 admin/views/field-group-locations.php:47 +msgid "Post" +msgstr "Príspevok " + +#: admin/views/field-group-locations.php:42 fields/relationship.php:724 +msgid "Post Type" +msgstr "Typ príspevku " + +#: admin/views/field-group-locations.php:43 +msgid "Post Status" +msgstr "Stav príspevku " + +#: admin/views/field-group-locations.php:44 +msgid "Post Format" +msgstr "Formát príspevku " + +#: admin/views/field-group-locations.php:45 +msgid "Post Category" +msgstr "Kategória príspevku " + +#: admin/views/field-group-locations.php:46 +msgid "Post Taxonomy" +msgstr "Taxonómia príspevku " + +#: admin/views/field-group-locations.php:49 admin/views/field-group-locations.php:53 +msgid "Page" +msgstr "Stránka " + +#: admin/views/field-group-locations.php:50 +msgid "Page Template" +msgstr "Å ablóna stránky " + +#: admin/views/field-group-locations.php:51 +msgid "Page Type" +msgstr "Typ stránky " + +#: admin/views/field-group-locations.php:52 +msgid "Page Parent" +msgstr "Nadradená stránka " + +#: admin/views/field-group-locations.php:55 fields/user.php:36 +msgid "User" +msgstr "Používateľ " + +#: admin/views/field-group-locations.php:56 +msgid "Current User" +msgstr "Aktuálny používateľ" + +#: admin/views/field-group-locations.php:57 +msgid "Current User Role" +msgstr "Aktuálne oprávnenia" + +#: admin/views/field-group-locations.php:58 +msgid "User Form" +msgstr "Formulár používatela" + +#: admin/views/field-group-locations.php:59 +msgid "User Role" +msgstr "Oprávnenia " + +#: admin/views/field-group-locations.php:61 pro/admin/options-page.php:48 +msgid "Forms" +msgstr "Formuláre" + +#: admin/views/field-group-locations.php:62 +msgid "Attachment" +msgstr "Príloha " + +#: admin/views/field-group-locations.php:63 +msgid "Taxonomy Term" +msgstr "Výraz taxonómie " + +#: admin/views/field-group-locations.php:64 +msgid "Comment" +msgstr "Komentár" + +#: admin/views/field-group-locations.php:65 +msgid "Widget" +msgstr "Widget" + +#: admin/views/field-group-options.php:25 +msgid "Style" +msgstr "Å týl " + +#: admin/views/field-group-options.php:32 +msgid "Standard (WP metabox)" +msgstr "Å tandardný metabox " + +#: admin/views/field-group-options.php:33 +msgid "Seamless (no metabox)" +msgstr "Žiadny metabox " + +#: admin/views/field-group-options.php:40 +msgid "Position" +msgstr "Pozícia " + +#: admin/views/field-group-options.php:47 +msgid "High (after title)" +msgstr "Hore (pod nadpisom) " + +#: admin/views/field-group-options.php:48 +msgid "Normal (after content)" +msgstr "Normálne (po obsahu) " + +#: admin/views/field-group-options.php:49 +msgid "Side" +msgstr "Strana " + +#: admin/views/field-group-options.php:57 +msgid "Label placement" +msgstr "Umiestnenie inÅ¡trukcií " + +#: admin/views/field-group-options.php:64 fields/tab.php:159 +msgid "Top aligned" +msgstr "Zarovnané dohora" + +#: admin/views/field-group-options.php:65 fields/tab.php:160 +msgid "Left aligned" +msgstr "Zarovnané vľavo" + +#: admin/views/field-group-options.php:72 +msgid "Instruction placement" +msgstr "Umiestnenie inÅ¡trukcií" + +#: admin/views/field-group-options.php:79 +msgid "Below labels" +msgstr "Pod oznaÄením" + +#: admin/views/field-group-options.php:80 +msgid "Below fields" +msgstr "Pod poliami" + +#: admin/views/field-group-options.php:87 +msgid "Order No." +msgstr "Poradové Äíslo" + +#: admin/views/field-group-options.php:88 +msgid "Field groups with a lower order will appear first" +msgstr "" + +#: admin/views/field-group-options.php:99 +msgid "Shown in field group list" +msgstr "" + +#: admin/views/field-group-options.php:109 +msgid "Hide on screen" +msgstr "SchovaÅ¥ na obrazovke " + +#: admin/views/field-group-options.php:110 +msgid "Select items to hide them from the edit screen." +msgstr "VybraÅ¥ položky pre ich skrytie pred obrazovkou úprav." + +#: admin/views/field-group-options.php:110 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's options will be used (the one with the lowest " +"order number)" +msgstr "" +"Ak viaceré skupiny polí sa zobrazia na obrazovke úprav, nastavenia prvej skupiny budú použité (tá s najnižším poradovým " +"Äíslom)" + +#: admin/views/field-group-options.php:117 +msgid "Permalink" +msgstr "Trvalý odkaz" + +#: admin/views/field-group-options.php:118 +msgid "Content Editor" +msgstr "Úpravca obsahu" + +#: admin/views/field-group-options.php:119 +msgid "Excerpt" +msgstr "Zhrnutie " + +#: admin/views/field-group-options.php:121 +msgid "Discussion" +msgstr "Diskusia " + +#: admin/views/field-group-options.php:122 +msgid "Comments" +msgstr "Komentáre " + +#: admin/views/field-group-options.php:123 +msgid "Revisions" +msgstr "Revízie " + +#: admin/views/field-group-options.php:124 +msgid "Slug" +msgstr "Slug " + +#: admin/views/field-group-options.php:125 +msgid "Author" +msgstr "Autor " + +#: admin/views/field-group-options.php:126 +msgid "Format" +msgstr "Formát " + +#: admin/views/field-group-options.php:127 +msgid "Page Attributes" +msgstr "Vlastnosti stránky" + +#: admin/views/field-group-options.php:128 fields/relationship.php:737 +msgid "Featured Image" +msgstr "PrezentaÄný obrázok " + +#: admin/views/field-group-options.php:129 +msgid "Categories" +msgstr "Kategórie " + +#: admin/views/field-group-options.php:130 +msgid "Tags" +msgstr "ZnaÄky " + +#: admin/views/field-group-options.php:131 +msgid "Send Trackbacks" +msgstr "OdoslaÅ¥ spätné odkazy " + +#: admin/views/settings-addons.php:23 +msgid "Download & Install" +msgstr "StiahnuÅ¥ a nainÅ¡talovaÅ¥" + +#: admin/views/settings-addons.php:42 +msgid "Installed" +msgstr "NainÅ¡talované " + +#: admin/views/settings-info.php:9 +msgid "Welcome to Advanced Custom Fields" +msgstr "Víta vás Advanced Custom Fields " + +#: admin/views/settings-info.php:10 +#, php-format +msgid "Thank you for updating! ACF %s is bigger and better than ever before. We hope you like it." +msgstr "VÄaka za zakutalizáciu! ACF %s je väÄÅ¡ie a lepÅ¡ie než kedykoľvek predtým. Dúfame, že sa vám páÄi." + +#: admin/views/settings-info.php:23 +msgid "A smoother custom field experience" +msgstr "JednoduchÅ¡ie používanie polí" + +#: admin/views/settings-info.php:28 +msgid "Improved Usability" +msgstr "VylepÅ¡ená použiteľnosÅ¥" + +#: admin/views/settings-info.php:29 +msgid "" +"Including the popular Select2 library has improved both usability and speed across a number of field types including " +"post object, page link, taxonomy and select." +msgstr "" +"Populárna knižnica Select2 obsahuje vylepÅ¡enú použiteľnosÅ¥ a rýchlosÅ¥ medzi vÅ¡etkými poliami vrátane objektov, odkazov " +"taxonómie a výberov." + +#: admin/views/settings-info.php:33 +msgid "Improved Design" +msgstr "VylepÅ¡ený dizajn" + +#: admin/views/settings-info.php:34 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than ever! Noticeable changes are seen on the " +"gallery, relationship and oEmbed (new) fields!" +msgstr "" +"Vela polí prebehlo grafickou úpravou. Teraz ACF vyzerá oveľa lepÅ¡ie! Zmeny uvidíte v galérii, vzÅ¥ahoch a OEmbed " +"(vložených) poliach!" + +#: admin/views/settings-info.php:38 +msgid "Improved Data" +msgstr "VylepÅ¡ené dáta" + +#: admin/views/settings-info.php:39 +msgid "" +"Redesigning the data architecture has allowed sub fields to live independently from their parents. This allows you to " +"drag and drop fields in and out of parent fields!" +msgstr "" +"Zmena dátovej architektúry priniesla nezávislosÅ¥ odvodených polí od nadradených. Toto vám dovoľuje prenášat polia mimo " +"nadradených polí!" + +#: admin/views/settings-info.php:45 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Dovidenia doplnky. Vitaj PRO" + +#: admin/views/settings-info.php:50 +msgid "Introducing ACF PRO" +msgstr "Pro verzia " + +#: admin/views/settings-info.php:51 +msgid "We're changing the way premium functionality is delivered in an exciting way!" +msgstr "Prémiové funkcie modulu sme sa rozhodli poskytnúť vzruÅ¡ujúcejším spôsobom!" + +#: admin/views/settings-info.php:52 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro version of ACF. With both personal and " +"developer licenses available, premium functionality is more affordable and accessible than ever before!" +msgstr "" +"VÅ¡etky prémiové doplnky boli spojené do Pro verzie ACF. Prémiové funkcie sú dostupnejÅ¡ie a " +"prístupnejÅ¡ie aj pomocou personálnych a firemmných licencií!" + +#: admin/views/settings-info.php:56 +msgid "Powerful Features" +msgstr "Výkonné funkcie" + +#: admin/views/settings-info.php:57 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field and the " +"ability to create extra admin options pages!" +msgstr "" +"ACF PRO obsahuje opakovanie zadaných dát, flexibilné rozloženie obsahu, prekrásnu galériu a extra administraÄné stránky!" + +#: admin/views/settings-info.php:58 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "PreÄítajte si viac o vlastnostiach ACF PRO." + +#: admin/views/settings-info.php:62 +msgid "Easy Upgrading" +msgstr "Ľahká aktualizácia" + +#: admin/views/settings-info.php:63 +#, php-format +msgid "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +msgstr "Pre uľahÄenie aktualizácie, prihláste sa do obchodu a získajte zdarma ACF PRO!" + +#: admin/views/settings-info.php:64 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, but if you do have one, please contact our " +"support team via the help desk" +msgstr "" +"Napísali sme príruÄku k aktualizácii. Zodpovedali sme väÄÅ¡inu otázok, ak vÅ¡ak máte nejaké Äaľšie " +"kontaktuje naÅ¡u podporu" + +#: admin/views/settings-info.php:72 +msgid "Under the Hood" +msgstr "Pod kapotou" + +#: admin/views/settings-info.php:77 +msgid "Smarter field settings" +msgstr "VylepÅ¡ené nastavenia polí" + +#: admin/views/settings-info.php:78 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF ukladá nastavenia polí ako jednotlivé objekty" + +#: admin/views/settings-info.php:82 +msgid "More AJAX" +msgstr "Viac AJAXu" + +#: admin/views/settings-info.php:83 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "Pre rýchlejÅ¡ie naÄítanie, používame AJAX vyhľadávanie" + +#: admin/views/settings-info.php:87 +msgid "Local JSON" +msgstr "Local JSON" + +#: admin/views/settings-info.php:88 +msgid "New auto export to JSON feature improves speed" +msgstr "Nový auto export JSON vylepÅ¡uje rýchlosÅ¥" + +#: admin/views/settings-info.php:94 +msgid "Better version control" +msgstr "LepÅ¡ia správa verzií" + +#: admin/views/settings-info.php:95 +msgid "New auto export to JSON feature allows field settings to be version controlled" +msgstr "Nový auto export JSON obsahuje kontrolu verzií povolených polí" + +#: admin/views/settings-info.php:99 +msgid "Swapped XML for JSON" +msgstr "Vymenené XML za JSON" + +#: admin/views/settings-info.php:100 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Import / Export teraz používa JSON miesto XML" + +#: admin/views/settings-info.php:104 +msgid "New Forms" +msgstr "Nové formuláre" + +#: admin/views/settings-info.php:105 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "Polia môžu patriÅ¥ komentárom, widgetom a vÅ¡etkým formulárom!" + +#: admin/views/settings-info.php:112 +msgid "A new field for embedding content has been added" +msgstr "Bolo pridané nové pole pre vložený obsah" + +#: admin/views/settings-info.php:116 +msgid "New Gallery" +msgstr "Nová galéria" + +#: admin/views/settings-info.php:117 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Pole galérie vážne potrebovalo upraviÅ¥ vzhľad" + +#: admin/views/settings-info.php:121 +msgid "New Settings" +msgstr "Nové nastavenia" + +#: admin/views/settings-info.php:122 +msgid "Field group settings have been added for label placement and instruction placement" +msgstr "Boli pridané nastavenie skupiny pola pre umiestnenie oznÄenia a umietsntenie inÅ¡trukcií" + +#: admin/views/settings-info.php:128 +msgid "Better Front End Forms" +msgstr "LepÅ¡ie vidieľné formuláre" + +#: admin/views/settings-info.php:129 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() teraz po odoslaní môže vytvoriÅ¥ nový príspevok" + +#: admin/views/settings-info.php:133 +msgid "Better Validation" +msgstr "LepÅ¡ie overovanie" + +#: admin/views/settings-info.php:134 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "Overovanie formulára sa deje pomocou PHP a AJAX namiesto JS" + +#: admin/views/settings-info.php:138 +msgid "Relationship Field" +msgstr "VzÅ¥ah polí" + +#: admin/views/settings-info.php:139 +msgid "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "Nový nastavenie vÅ¥ahov pola 'FIltre' (vyhľadávanie, typ Älánku, taxonómia)" + +#: admin/views/settings-info.php:145 +msgid "Moving Fields" +msgstr "Hýbajúce polia" + +#: admin/views/settings-info.php:146 +msgid "New field group functionality allows you to move a field between groups & parents" +msgstr "Nová skupinová funkcionalita vám dovolí presúvaÅ¥ polia medzi skupinami a nadradenými poliami" + +#: admin/views/settings-info.php:150 fields/page_link.php:36 +msgid "Page Link" +msgstr "Odkaz stránky " + +#: admin/views/settings-info.php:151 +msgid "New archives group in page_link field selection" +msgstr "Nová skupina archívov vo výbere pola page_link" + +#: admin/views/settings-info.php:155 +msgid "Better Options Pages" +msgstr "LepÅ¡ie nastavenia stránok" + +#: admin/views/settings-info.php:156 +msgid "New functions for options page allow creation of both parent and child menu pages" +msgstr "Nové funkcie nastavenia stránky vám dovolí vytvorenie vytvorenie menu nadradených aj odvodených stránok" + +#: admin/views/settings-info.php:165 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Myslíme, že si zamilujete zmeny v %s." + +#: admin/views/settings-tools-export.php:13 +msgid "Export Field Groups to PHP" +msgstr "Export skupiny poľa do PHP " + +#: admin/views/settings-tools-export.php:17 +msgid "" +"The following code can be used to register a local version of the selected field group(s). A local field group can " +"provide many benefits such as faster load times, version control & dynamic fields/settings. Simply copy and paste the " +"following code to your theme's functions.php file or include it within an external file." +msgstr "" +"Nasledujúci kód môže byÅ¥ použitý pre miestnu veru vybraných polí skupín. Lokálna skupina polí poskytuje rýchlejÅ¡ie " +"naÄítanie, lepÅ¡iu kontrolu verzií a dynamické polia a ich nastavenia. Jednoducho skopírujte nasledujúci kód do súboru " +"funkcií vaÅ¡ej témy functions.php alebo ich zahrňte v externom súbore." + +#: admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Vyberte skupiny poľa na export " + +#: admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "Export skupín polí " + +#: admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export method. Use the download button to export " +"to a .json file which you can then import to another ACF installation. Use the generate button to export to PHP code " +"which you can place in your theme." +msgstr "" +"Vyberte skupiny polí, ktoré chcete exportovaÅ¥. Vyberte vhodnú metódu exportu. TlaÄidlo StiahnuÅ¥ vám exportuje dáta do ." +"json súboru. Tento súbor môžete použiÅ¥ v inej ACF inÅ¡talácii. TlaÄidlo GenerovaÅ¥ vám vyvtorí PHP kód, ktorý použijete vo " +"vaÅ¡ej téme." + +#: admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "StiahnuÅ¥ súbor na export" + +#: admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "VytvoriÅ¥ exportný kód" + +#: admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "ImportovaÅ¥ skupiny poľa" + +#: admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When you click the import button below, ACF will " +"import the field groups." +msgstr "Vyberte JSON súbor ACF na import. Po kliknutí na tlaÄidlo import sa nahrajú vÅ¡etky skupiny polí ACF." + +#: admin/views/settings-tools.php:77 fields/file.php:46 +msgid "Select File" +msgstr "VybraÅ¥ subor " + +#: admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Import " + +#: admin/views/update-network.php:8 admin/views/update.php:8 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "" + +#: admin/views/update-network.php:10 +msgid "The following sites require a DB upgrade. Check the ones you want to update and then click “Upgrade Databaseâ€." +msgstr "" + +#: admin/views/update-network.php:19 admin/views/update-network.php:27 +msgid "Site" +msgstr "" + +#: admin/views/update-network.php:47 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "" + +#: admin/views/update-network.php:49 +msgid "Site is up to date" +msgstr "" + +#: admin/views/update-network.php:62 admin/views/update.php:16 +msgid "Database Upgrade complete. Return to network dashboard" +msgstr "" + +#: admin/views/update-network.php:101 admin/views/update-notice.php:35 +msgid "" +"It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?" +msgstr "Pred aktualizáciou odporúÄame zálohovaÅ¥ databázu. Želáte si aktualizáciu spustiÅ¥ teraz?" + +#: admin/views/update-network.php:157 +msgid "Upgrade complete" +msgstr "" + +#: admin/views/update-network.php:161 +msgid "Upgrading data to" +msgstr "" + +#: admin/views/update-notice.php:23 +msgid "Database Upgrade Required" +msgstr "Je potrebná aktualizácia databázy" + +#: admin/views/update-notice.php:25 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "VÄaka za aktualizáciu %s v%s!" + +#: admin/views/update-notice.php:25 +msgid "Before you start using the new awesome features, please update your database to the newest version." +msgstr "Než zaÄnete používaÅ¥ nové funkcie, prosím najprv aktualizujte vaÅ¡u databázu na najnovÅ¡iu verziu." + +#: admin/views/update.php:12 +msgid "Reading upgrade tasks..." +msgstr "Čítanie aktualizaÄných úloh..." + +#: admin/views/update.php:14 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Aktualizácia dát na verziu %s" + +#: admin/views/update.php:16 +msgid "See what's new" +msgstr "Pozrite sa, Äo je nové" + +#: admin/views/update.php:110 +msgid "No updates available." +msgstr "" + +#: api/api-helpers.php:821 +msgid "Thumbnail" +msgstr "Náhľad " + +#: api/api-helpers.php:822 +msgid "Medium" +msgstr "Stredný " + +#: api/api-helpers.php:823 +msgid "Large" +msgstr "Veľký " + +#: api/api-helpers.php:871 +msgid "Full Size" +msgstr "Úplný " + +#: api/api-helpers.php:1581 +msgid "(no title)" +msgstr "(bez názvu)" + +#: api/api-helpers.php:3183 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Šírka obrázku musí byÅ¥ aspoň %dpx." + +#: api/api-helpers.php:3188 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Šírka obrázku nesmie prekroÄiÅ¥ %dpx." + +#: api/api-helpers.php:3204 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Výška obrázku musí byÅ¥ aspoň %dpx." + +#: api/api-helpers.php:3209 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Výška obrázku nesmie prekroÄiÅ¥ %dpx." + +#: api/api-helpers.php:3227 +#, php-format +msgid "File size must be at least %s." +msgstr "VeľkosÅ¥ súboru musí byÅ¥ aspoň %s." + +#: api/api-helpers.php:3232 +#, php-format +msgid "File size must must not exceed %s." +msgstr "VeľkosÅ¥ súboru nesmie prekroÄiÅ¥ %s." + +#: api/api-helpers.php:3266 +#, php-format +msgid "File type must be %s." +msgstr "Typ súboru musí byÅ¥ %s." + +#: api/api-template.php:1289 pro/fields/gallery.php:564 +msgid "Update" +msgstr "AktualizovaÅ¥ " + +#: api/api-template.php:1290 +msgid "Post updated" +msgstr "Príspevok akutalizovaný " + +#: core/field.php:131 +msgid "Basic" +msgstr "Základné " + +#: core/field.php:132 +msgid "Content" +msgstr "Obsah " + +#: core/field.php:133 +msgid "Choice" +msgstr "Voľba " + +#: core/field.php:134 +msgid "Relational" +msgstr "RelaÄný " + +#: core/field.php:135 +msgid "jQuery" +msgstr "jQuery " + +#: core/field.php:136 fields/checkbox.php:226 fields/radio.php:231 pro/fields/flexible-content.php:512 +#: pro/fields/repeater.php:392 +msgid "Layout" +msgstr "Rozmiestnenie" + +#: core/input.php:129 +msgid "Expand Details" +msgstr "ZväÄÅ¡iÅ¥ detaily " + +#: core/input.php:130 +msgid "Collapse Details" +msgstr "ZmenÅ¡iÅ¥ detaily " + +#: core/input.php:131 +msgid "Validation successful" +msgstr "Overenie bolo úspeÅ¡né" + +#: core/input.php:132 +msgid "Validation failed" +msgstr "Overenie zlyhalo. " + +#: core/input.php:133 +msgid "1 field requires attention" +msgstr "" + +#: core/input.php:134 +#, php-format +msgid "%d fields require attention" +msgstr "" + +#: core/input.php:135 +msgid "Restricted" +msgstr "" + +#: core/input.php:533 +#, php-format +msgid "%s value is required" +msgstr "vyžaduje sa hodnota %s" + +#: fields/checkbox.php:36 fields/taxonomy.php:752 +msgid "Checkbox" +msgstr "ZaÅ¡krtávacie políÄko " + +#: fields/checkbox.php:144 +msgid "Toggle All" +msgstr "Prepnúť vÅ¡etky" + +#: fields/checkbox.php:208 fields/radio.php:193 fields/select.php:388 +msgid "Choices" +msgstr "Voľby " + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "Enter each choice on a new line." +msgstr "Zadajte každú voľbu do nového riadku. " + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "For more control, you may specify both a value and label like this:" +msgstr "Pre lepÅ¡iu kontrolu, môžete urÄiÅ¥ hodnotu a popis takto:" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "red : Red" +msgstr "Äervená : ÄŒervená " + +#: fields/checkbox.php:217 fields/color_picker.php:158 fields/email.php:124 fields/number.php:150 fields/radio.php:222 +#: fields/select.php:397 fields/text.php:148 fields/textarea.php:145 fields/true_false.php:115 fields/url.php:117 +#: fields/wysiwyg.php:345 +msgid "Default Value" +msgstr "Základná hodnota " + +#: fields/checkbox.php:218 fields/select.php:398 +msgid "Enter each default value on a new line" +msgstr "Zadajte každú základnú hodnotu na nový riadok " + +#: fields/checkbox.php:232 fields/radio.php:237 +msgid "Vertical" +msgstr "Vertikálne " + +#: fields/checkbox.php:233 fields/radio.php:238 +msgid "Horizontal" +msgstr "Horizontálne " + +#: fields/checkbox.php:240 +msgid "Toggle" +msgstr "" + +#: fields/checkbox.php:241 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" + +#: fields/color_picker.php:36 +msgid "Color Picker" +msgstr "Výber farby " + +#: fields/color_picker.php:94 +msgid "Clear" +msgstr "VyÄistiÅ¥" + +#: fields/color_picker.php:95 +msgid "Default" +msgstr "Predvolené " + +#: fields/color_picker.php:96 +msgid "Select Color" +msgstr "Farba" + +#: fields/date_picker.php:36 +msgid "Date Picker" +msgstr "Výber dátumu " + +#: fields/date_picker.php:72 +msgid "Done" +msgstr "Hotovo " + +#: fields/date_picker.php:73 +msgid "Today" +msgstr "Dnes " + +#: fields/date_picker.php:76 +msgid "Show a different month" +msgstr "ZobraziÅ¥ iný mesiac " + +#: fields/date_picker.php:149 +msgid "Display Format" +msgstr "Formát zobrazenia " + +#: fields/date_picker.php:150 +msgid "The format displayed when editing a post" +msgstr "Formát zobrazený pri úprave Älánku" + +#: fields/date_picker.php:164 +msgid "Return format" +msgstr "Formát odpoveÄe " + +#: fields/date_picker.php:165 +msgid "The format returned via template functions" +msgstr "Formát vrátený pomocou funkcii Å¡ablóny" + +#: fields/date_picker.php:180 +msgid "Week Starts On" +msgstr "Týždeň zaÄína " + +#: fields/email.php:36 +msgid "Email" +msgstr "E-Mail " + +#: fields/email.php:125 fields/number.php:151 fields/radio.php:223 fields/text.php:149 fields/textarea.php:146 +#: fields/url.php:118 fields/wysiwyg.php:346 +msgid "Appears when creating a new post" +msgstr "Zobrazí sa pri vytvorení nového príspevku " + +#: fields/email.php:133 fields/number.php:159 fields/password.php:137 fields/text.php:157 fields/textarea.php:154 +#: fields/url.php:126 +msgid "Placeholder Text" +msgstr "Zástupný text " + +#: fields/email.php:134 fields/number.php:160 fields/password.php:138 fields/text.php:158 fields/textarea.php:155 +#: fields/url.php:127 +msgid "Appears within the input" +msgstr "Zobrazí sa vo vstupe" + +#: fields/email.php:142 fields/number.php:168 fields/password.php:146 fields/text.php:166 +msgid "Prepend" +msgstr "Predpona" + +#: fields/email.php:143 fields/number.php:169 fields/password.php:147 fields/text.php:167 +msgid "Appears before the input" +msgstr "Zobrazí sa pred vstupom" + +#: fields/email.php:151 fields/number.php:177 fields/password.php:155 fields/text.php:175 +msgid "Append" +msgstr "Prípona" + +#: fields/email.php:152 fields/number.php:178 fields/password.php:156 fields/text.php:176 +msgid "Appears after the input" +msgstr "Zobrazí sa po vstupe" + +#: fields/file.php:36 +msgid "File" +msgstr "Súbor " + +#: fields/file.php:47 +msgid "Edit File" +msgstr "UpraviÅ¥ súbor " + +#: fields/file.php:48 +msgid "Update File" +msgstr "AktualizovaÅ¥ súbor " + +#: fields/file.php:49 pro/fields/gallery.php:55 +msgid "uploaded to this post" +msgstr "Nahrané do príspevku " + +#: fields/file.php:142 +msgid "File Name" +msgstr "Názov súboru" + +#: fields/file.php:146 +msgid "File Size" +msgstr "VeľkosÅ¥ súboru" + +#: fields/file.php:169 +msgid "No File selected" +msgstr "Nevybrali ste súbor " + +#: fields/file.php:169 +msgid "Add File" +msgstr "PridaÅ¥ súbor " + +#: fields/file.php:214 fields/image.php:195 fields/taxonomy.php:821 +msgid "Return Value" +msgstr "VrátiÅ¥ hodnotu " + +#: fields/file.php:215 fields/image.php:196 +msgid "Specify the returned value on front end" +msgstr "Zadajte hodnotu, ktorá sa objaví na stránke" + +#: fields/file.php:220 +msgid "File Array" +msgstr "Súbor " + +#: fields/file.php:221 +msgid "File URL" +msgstr "URL adresa súboru " + +#: fields/file.php:222 +msgid "File ID" +msgstr "ID súboru " + +#: fields/file.php:229 fields/image.php:220 pro/fields/gallery.php:647 +msgid "Library" +msgstr "Knižnica " + +#: fields/file.php:230 fields/image.php:221 pro/fields/gallery.php:648 +msgid "Limit the media library choice" +msgstr "ObmedziÅ¥ výber knižnice médií " + +#: fields/file.php:236 fields/image.php:227 pro/fields/gallery.php:654 +msgid "Uploaded to post" +msgstr "Nahrané do príspevku " + +#: fields/file.php:243 fields/image.php:234 pro/fields/gallery.php:661 +msgid "Minimum" +msgstr "Minimálny poÄet" + +#: fields/file.php:244 fields/file.php:255 +msgid "Restrict which files can be uploaded" +msgstr "Vymedzte, ktoré súbory je možné nahraÅ¥" + +#: fields/file.php:247 fields/file.php:258 fields/image.php:257 fields/image.php:290 pro/fields/gallery.php:684 +#: pro/fields/gallery.php:717 +msgid "File size" +msgstr "VeľkosÅ¥ súboru " + +#: fields/file.php:254 fields/image.php:267 pro/fields/gallery.php:694 +msgid "Maximum" +msgstr "Maximálny poÄet" + +#: fields/file.php:265 fields/image.php:300 pro/fields/gallery.php:727 +msgid "Allowed file types" +msgstr "Povolené typy súborov" + +#: fields/file.php:266 fields/image.php:301 pro/fields/gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "Zoznam, oddelený Äiarkou. Nechajte prázdne pre vÅ¡etky typy" + +#: fields/google-map.php:36 +msgid "Google Map" +msgstr "Google Mapa " + +#: fields/google-map.php:51 +msgid "Locating" +msgstr "Poloha" + +#: fields/google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "Ľutujeme, tento prehliadaÄ nepodporuje geo hľadanie polohy " + +#: fields/google-map.php:135 +msgid "Clear location" +msgstr "VymazaÅ¥ polohu " + +#: fields/google-map.php:140 +msgid "Find current location" +msgstr "NájsÅ¥ aktuálnu polohu " + +#: fields/google-map.php:141 +msgid "Search for address..." +msgstr "HľadaÅ¥ adresu... " + +#: fields/google-map.php:173 fields/google-map.php:184 +msgid "Center" +msgstr "Stred " + +#: fields/google-map.php:174 fields/google-map.php:185 +msgid "Center the initial map" +msgstr "VycentrovaÅ¥ úvodnú mapu " + +#: fields/google-map.php:198 +msgid "Zoom" +msgstr "Zoom" + +#: fields/google-map.php:199 +msgid "Set the initial zoom level" +msgstr "Nastavte základnú úroveň priblíženia" + +#: fields/google-map.php:208 fields/image.php:246 fields/image.php:279 fields/oembed.php:262 pro/fields/gallery.php:673 +#: pro/fields/gallery.php:706 +msgid "Height" +msgstr "Výška " + +#: fields/google-map.php:209 +msgid "Customise the map height" +msgstr "UpraviÅ¥ výšku mapy " + +#: fields/image.php:36 +msgid "Image" +msgstr "Obrázok " + +#: fields/image.php:51 +msgid "Select Image" +msgstr "VybraÅ¥ obrázok " + +#: fields/image.php:52 pro/fields/gallery.php:53 +msgid "Edit Image" +msgstr "UpraviÅ¥ obrázok " + +#: fields/image.php:53 pro/fields/gallery.php:54 +msgid "Update Image" +msgstr "AktualizovaÅ¥ obrázok " + +#: fields/image.php:54 +msgid "Uploaded to this post" +msgstr "Nahrané do príspevku " + +#: fields/image.php:55 +msgid "All images" +msgstr "VÅ¡etky obrázky" + +#: fields/image.php:147 +msgid "No image selected" +msgstr "Nevybrali ste obrázok " + +#: fields/image.php:147 +msgid "Add Image" +msgstr "PridaÅ¥ obrázok " + +#: fields/image.php:201 +msgid "Image Array" +msgstr "Obrázok " + +#: fields/image.php:202 +msgid "Image URL" +msgstr "URL adresa obrázka " + +#: fields/image.php:203 +msgid "Image ID" +msgstr "ID obrázka " + +#: fields/image.php:210 pro/fields/gallery.php:637 +msgid "Preview Size" +msgstr "VeľkosÅ¥ náhľadu " + +#: fields/image.php:211 pro/fields/gallery.php:638 +msgid "Shown when entering data" +msgstr "Zobrazené pri zadávaní dát " + +#: fields/image.php:235 fields/image.php:268 pro/fields/gallery.php:662 pro/fields/gallery.php:695 +msgid "Restrict which images can be uploaded" +msgstr "UrÄite, ktoré typy obrázkov môžu byÅ¥ nahraté" + +#: fields/image.php:238 fields/image.php:271 fields/oembed.php:251 pro/fields/gallery.php:665 pro/fields/gallery.php:698 +msgid "Width" +msgstr "Šírka" + +#: fields/message.php:36 fields/message.php:103 fields/true_false.php:106 +msgid "Message" +msgstr "Správa " + +#: fields/message.php:104 +msgid "Please note that all text will first be passed through the wp function " +msgstr "VÅ¡etky texty najprv prejdú cez funkciu wp " + +#: fields/message.php:112 +msgid "Escape HTML" +msgstr "EskapovaÅ¥ HTML (€ za €)" + +#: fields/message.php:113 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "PovoliÅ¥ zobrazenie HTML znaÄiek vo forme viditeľného textu namiesto ich vykreslenia" + +#: fields/number.php:36 +msgid "Number" +msgstr "Číslo " + +#: fields/number.php:186 +msgid "Minimum Value" +msgstr "Minimálna hodnota " + +#: fields/number.php:195 +msgid "Maximum Value" +msgstr "Maximálna hodnota " + +#: fields/number.php:204 +msgid "Step Size" +msgstr "VeľkosÅ¥ kroku " + +#: fields/number.php:242 +msgid "Value must be a number" +msgstr "Hodnota musí byÅ¥ Äíslo" + +#: fields/number.php:260 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Hodnota musí byÅ¥ rovná alebo väÄÅ¡ia ako %d" + +#: fields/number.php:268 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Hodnota musí byÅ¥ rovná alebo nižšia ako %d" + +#: fields/oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: fields/oembed.php:199 +msgid "Enter URL" +msgstr "VložiÅ¥ URL" + +#: fields/oembed.php:212 +msgid "No embed found for the given URL." +msgstr "Nebol nájdený obsah na zadanej URL adrese." + +#: fields/oembed.php:248 fields/oembed.php:259 +msgid "Embed Size" +msgstr "VeľkosÅ¥ vloženého obsahu" + +#: fields/page_link.php:206 +msgid "Archives" +msgstr "Archívy " + +#: fields/page_link.php:535 fields/post_object.php:401 fields/relationship.php:690 +msgid "Filter by Post Type" +msgstr "FiltrovaÅ¥ podľa typu príspevku " + +#: fields/page_link.php:543 fields/post_object.php:409 fields/relationship.php:698 +msgid "All post types" +msgstr "VÅ¡etky typy príspevkov " + +#: fields/page_link.php:549 fields/post_object.php:415 fields/relationship.php:704 +msgid "Filter by Taxonomy" +msgstr "Filter z taxonómie " + +#: fields/page_link.php:557 fields/post_object.php:423 fields/relationship.php:712 +msgid "All taxonomies" +msgstr "Žiadny filter taxonómie " + +#: fields/page_link.php:563 fields/post_object.php:429 fields/select.php:406 fields/taxonomy.php:765 fields/user.php:452 +msgid "Allow Null?" +msgstr "PovoliÅ¥ nulovú hodnotu? " + +#: fields/page_link.php:577 fields/post_object.php:443 fields/select.php:420 fields/user.php:466 +msgid "Select multiple values?" +msgstr "VybraÅ¥ viac hodnôt? " + +#: fields/password.php:36 +msgid "Password" +msgstr "Heslo " + +#: fields/post_object.php:36 fields/post_object.php:462 fields/relationship.php:769 +msgid "Post Object" +msgstr "Objekt príspevku " + +#: fields/post_object.php:457 fields/relationship.php:764 +msgid "Return Format" +msgstr "Formát odpovede" + +#: fields/post_object.php:463 fields/relationship.php:770 +msgid "Post ID" +msgstr "ID príspevku" + +#: fields/radio.php:36 +msgid "Radio Button" +msgstr "PrepínaÄ " + +#: fields/radio.php:202 +msgid "Other" +msgstr "Iné " + +#: fields/radio.php:206 +msgid "Add 'other' choice to allow for custom values" +msgstr "PridaÅ¥ možnosÅ¥ 'iné' pre povolenie vlastných hodnôt" + +#: fields/radio.php:212 +msgid "Save Other" +msgstr "UložiÅ¥ hodnoty iné" + +#: fields/radio.php:216 +msgid "Save 'other' values to the field's choices" +msgstr "UložiÅ¥ hodnoty 'iné' do výberu poľa" + +#: fields/relationship.php:36 +msgid "Relationship" +msgstr "VzÅ¥ah " + +#: fields/relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "" + +#: fields/relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "Maximálne dosiahnuté hodnoty ( {max} values ) " + +#: fields/relationship.php:50 +msgid "Loading" +msgstr "Nahrávanie" + +#: fields/relationship.php:51 +msgid "No matches found" +msgstr "Nebola nenájdená zhoda" + +#: fields/relationship.php:571 +msgid "Search..." +msgstr "Hľadanie... " + +#: fields/relationship.php:580 +msgid "Select post type" +msgstr "VybraÅ¥ typ príspevku " + +#: fields/relationship.php:593 +msgid "Select taxonomy" +msgstr "Vyberte ktorá taxonómiu" + +#: fields/relationship.php:723 +msgid "Search" +msgstr "Hľadanie" + +#: fields/relationship.php:725 fields/taxonomy.php:36 fields/taxonomy.php:735 +msgid "Taxonomy" +msgstr "Taxonómia" + +#: fields/relationship.php:732 +msgid "Elements" +msgstr "Prvky " + +#: fields/relationship.php:733 +msgid "Selected elements will be displayed in each result" +msgstr "Vybraté prvky budú zobrazené v každom výsledku " + +#: fields/relationship.php:744 +msgid "Minimum posts" +msgstr "" + +#: fields/relationship.php:753 +msgid "Maximum posts" +msgstr "Maximálny poÄet príspevkov " + +#: fields/select.php:36 fields/select.php:174 fields/taxonomy.php:757 +msgid "Select" +msgstr "VybraÅ¥ " + +#: fields/select.php:434 +msgid "Stylised UI" +msgstr "Å týlované používateľské rozhranie" + +#: fields/select.php:448 +msgid "Use AJAX to lazy load choices?" +msgstr "PoužiÅ¥ AJAX pre výber pomalÅ¡ieho naÄítania?" + +#: fields/tab.php:36 +msgid "Tab" +msgstr "Záložka " + +#: fields/tab.php:128 +msgid "Warning" +msgstr "Varovanie" + +#: fields/tab.php:133 +msgid "The tab field will display incorrectly when added to a Table style repeater field or flexible content field layout" +msgstr "" +"Pole záložky nebude správne zobrazené ak bude pridané do opakovacieho pola Å¡týlu tabuľky alebo flexibilného rozloženia " +"pola." + +#: fields/tab.php:146 +msgid "Use \"Tab Fields\" to better organize your edit screen by grouping fields together." +msgstr "Pre lepÅ¡iu organizáciu na obrazovke úpravý polí použite \"Polia záložiek\"." + +#: fields/tab.php:148 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is defined) will be grouped together using this " +"field's label as the tab heading." +msgstr "" +"VÅ¡etky polia nasledujúce \"pole záložky\" (pokým nebude definované nové \"pole záložky\") budú zoskupené a pod jedným " +"nadpisom a oznaÄením." + +#: fields/tab.php:155 +msgid "Placement" +msgstr "Umiestnenie" + +#: fields/tab.php:167 +msgid "End-point" +msgstr "" + +#: fields/tab.php:168 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "" + +#: fields/taxonomy.php:565 +#, php-format +msgid "Add new %s " +msgstr "" + +#: fields/taxonomy.php:704 +msgid "None" +msgstr "Žiadna " + +#: fields/taxonomy.php:736 +msgid "Select the taxonomy to be displayed" +msgstr "" + +#: fields/taxonomy.php:745 +msgid "Appearance" +msgstr "" + +#: fields/taxonomy.php:746 +msgid "Select the appearance of this field" +msgstr "" + +#: fields/taxonomy.php:751 +msgid "Multiple Values" +msgstr "Viaceré hodnoty" + +#: fields/taxonomy.php:753 +msgid "Multi Select" +msgstr "Viacnásobný výber " + +#: fields/taxonomy.php:755 +msgid "Single Value" +msgstr "Jedna hodnota " + +#: fields/taxonomy.php:756 +msgid "Radio Buttons" +msgstr "PrepínaÄe " + +#: fields/taxonomy.php:779 +msgid "Create Terms" +msgstr "" + +#: fields/taxonomy.php:780 +msgid "Allow new terms to be created whilst editing" +msgstr "" + +#: fields/taxonomy.php:793 +msgid "Save Terms" +msgstr "" + +#: fields/taxonomy.php:794 +msgid "Connect selected terms to the post" +msgstr "" + +#: fields/taxonomy.php:807 +msgid "Load Terms" +msgstr "" + +#: fields/taxonomy.php:808 +msgid "Load value from posts terms" +msgstr "" + +#: fields/taxonomy.php:826 +msgid "Term Object" +msgstr "Objekt výrazu " + +#: fields/taxonomy.php:827 +msgid "Term ID" +msgstr "ID výrazu " + +#: fields/taxonomy.php:886 +#, php-format +msgid "User unable to add new %s" +msgstr "" + +#: fields/taxonomy.php:899 +#, php-format +msgid "%s already exists" +msgstr "" + +#: fields/taxonomy.php:940 +#, php-format +msgid "%s added" +msgstr "" + +#: fields/taxonomy.php:985 +msgid "Add" +msgstr "" + +#: fields/text.php:36 +msgid "Text" +msgstr "Text " + +#: fields/text.php:184 fields/textarea.php:163 +msgid "Character Limit" +msgstr "Limit znakov " + +#: fields/text.php:185 fields/textarea.php:164 +msgid "Leave blank for no limit" +msgstr "Nechajte prázdne pre neobmedzený poÄet" + +#: fields/textarea.php:36 +msgid "Text Area" +msgstr "Textové pole " + +#: fields/textarea.php:172 +msgid "Rows" +msgstr "Riadky" + +#: fields/textarea.php:173 +msgid "Sets the textarea height" +msgstr "Nastaví výšku textovej oblasti" + +#: fields/textarea.php:182 +msgid "New Lines" +msgstr "Nové riadky" + +#: fields/textarea.php:183 +msgid "Controls how new lines are rendered" +msgstr "Ovláda ako sú tvorené nové riadky" + +#: fields/textarea.php:187 +msgid "Automatically add paragraphs" +msgstr "Automaticky pridá odseky" + +#: fields/textarea.php:188 +msgid "Automatically add <br>" +msgstr "Automaticky pridáva <br>" + +#: fields/textarea.php:189 +msgid "No Formatting" +msgstr "Žiadne formátovanie" + +#: fields/true_false.php:36 +msgid "True / False" +msgstr "Správne / nesprávne " + +#: fields/true_false.php:107 +msgid "eg. Show extra content" +msgstr "napr. zobraziÅ¥ extra obsah " + +#: fields/url.php:36 +msgid "Url" +msgstr "URL adresa" + +#: fields/url.php:160 +msgid "Value must be a valid URL" +msgstr "Hodnota musí obsahovaÅ¥ platnú URL adresu" + +#: fields/user.php:437 +msgid "Filter by role" +msgstr "FiltrovaÅ¥ podla role " + +#: fields/user.php:445 +msgid "All user roles" +msgstr "VÅ¡ekty používatelské role" + +#: fields/wysiwyg.php:37 +msgid "Wysiwyg Editor" +msgstr "Vizuálny úpravca" + +#: fields/wysiwyg.php:297 +msgid "Visual" +msgstr "Vizuálny" + +#: fields/wysiwyg.php:298 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Text " + +#: fields/wysiwyg.php:354 +msgid "Tabs" +msgstr "Záložky" + +#: fields/wysiwyg.php:359 +msgid "Visual & Text" +msgstr "Vizuálny a textový" + +#: fields/wysiwyg.php:360 +msgid "Visual Only" +msgstr "Iba vizuálny" + +#: fields/wysiwyg.php:361 +msgid "Text Only" +msgstr "Iba textový" + +#: fields/wysiwyg.php:368 +msgid "Toolbar" +msgstr "Panel nástrojov " + +#: fields/wysiwyg.php:378 +msgid "Show Media Upload Buttons?" +msgstr "ZobraziÅ¥ tlaÄidlá nahrávania médií? " + +#: forms/post.php:297 pro/admin/options-page.php:373 +msgid "Edit field group" +msgstr "UpraviÅ¥ skupinu polí " + +#: pro/acf-pro.php:24 +msgid "Advanced Custom Fields PRO" +msgstr "ACF PRO" + +#: pro/acf-pro.php:175 +msgid "Flexible Content requires at least 1 layout" +msgstr "Flexibilný obsah vyžaduje aspoň jedno rozloženie" + +#: pro/admin/options-page.php:48 +msgid "Options Page" +msgstr "Stránka nastavení " + +#: pro/admin/options-page.php:83 +msgid "No options pages exist" +msgstr "Neexistujú nastavenia stránok" + +#: pro/admin/options-page.php:298 +msgid "Options Updated" +msgstr "Nastavenia aktualizované" + +#: pro/admin/options-page.php:304 +msgid "No Custom Field Groups found for this options page. Create a Custom Field Group" +msgstr "Pre túto stránku neboli nájdené žiadne vlastné skupiny polí. VytvoriÅ¥ novú vlastnú skupinu polí" + +#: pro/admin/settings-updates.php:137 +msgid "Error. Could not connect to update server" +msgstr "Chyba. Nie je možné sa spojiÅ¥ so serverom" + +#: pro/admin/settings-updates.php:267 pro/admin/settings-updates.php:338 +msgid "Connection Error. Sorry, please try again" +msgstr "Chyba spojenia. Prosím skúste pokus opakovaÅ¥." + +#: pro/admin/views/options-page.php:48 +msgid "Publish" +msgstr "PublikovaÅ¥ " + +#: pro/admin/views/options-page.php:54 +msgid "Save Options" +msgstr "UložiÅ¥ nastavenia" + +#: pro/admin/views/settings-updates.php:11 +msgid "Deactivate License" +msgstr "DeaktivovaÅ¥ licenciu" + +#: pro/admin/views/settings-updates.php:11 +msgid "Activate License" +msgstr "AktivovaÅ¥ licenciu" + +#: pro/admin/views/settings-updates.php:21 +msgid "License" +msgstr "Licencia" + +#: pro/admin/views/settings-updates.php:24 +msgid "To unlock updates, please enter your license key below. If you don't have a licence key, please see" +msgstr "Pre odblokovanie aktualizácii, sem zadajte váš licenÄný kľúÄ. Ak eÅ¡te licenÄný kÄ¾ÃºÄ nemáte, pozrite si" + +#: pro/admin/views/settings-updates.php:24 +msgid "details & pricing" +msgstr "detaily a ceny" + +#: pro/admin/views/settings-updates.php:33 +msgid "License Key" +msgstr "LicenÄný kľúÄ" + +#: pro/admin/views/settings-updates.php:65 +msgid "Update Information" +msgstr "AktualizovaÅ¥ infromácie" + +#: pro/admin/views/settings-updates.php:72 +msgid "Current Version" +msgstr "Aktuálna verzia" + +#: pro/admin/views/settings-updates.php:80 +msgid "Latest Version" +msgstr "Posledná verzia" + +#: pro/admin/views/settings-updates.php:88 +msgid "Update Available" +msgstr "Dostupná aktualizácia" + +#: pro/admin/views/settings-updates.php:96 +msgid "Update Plugin" +msgstr "AktualizovaÅ¥ modul" + +#: pro/admin/views/settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "Pre odblokovanie aktualizácii, prosím zadajte váš licenÄný kľúÄ" + +#: pro/admin/views/settings-updates.php:104 +msgid "Check Again" +msgstr "SkontrolovaÅ¥ znova" + +#: pro/admin/views/settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "Oznam o aktualizácii" + +#: pro/api/api-options-page.php:22 pro/api/api-options-page.php:23 +msgid "Options" +msgstr "Nastavenia " + +#: pro/core/updates.php:186 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence " +"key, please see details & pricing" +msgstr "" +"Aby ste zapli aktualizácie, musíte zadaÅ¥ licencÄný kÄ¾ÃºÄ na stránke aktualizácií. Ak nemáte licenÄný " +"kľúÄ, porizte si podrobnosti a ceny." + +#: pro/fields/flexible-content.php:36 +msgid "Flexible Content" +msgstr "Flexibilný obsah " + +#: pro/fields/flexible-content.php:42 pro/fields/repeater.php:43 +msgid "Add Row" +msgstr "PridaÅ¥ riadok" + +#: pro/fields/flexible-content.php:45 +msgid "layout" +msgstr "rozloženie" + +#: pro/fields/flexible-content.php:46 +msgid "layouts" +msgstr "rozloženia" + +#: pro/fields/flexible-content.php:47 +msgid "remove {layout}?" +msgstr "odstrániÅ¥ {layout}?" + +#: pro/fields/flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "Toto pole vyžaduje najmenej {min} {identifier}" + +#: pro/fields/flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "Toto pole vyžaduje najviac {max} {identifier}" + +#: pro/fields/flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Toto pole vyžaduje najmenej {min} {label} {identifier}" + +#: pro/fields/flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Maximálny {label} limit dosiahnutý ({max} {identifier})" + +#: pro/fields/flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} dostupné (max {max})" + +#: pro/fields/flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} vyžadované (min {min})" + +#: pro/fields/flexible-content.php:211 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Pre vytvorenie rozloženia kliknite na tlaÄidlo \"%s\"" + +#: pro/fields/flexible-content.php:369 +msgid "Add layout" +msgstr "PridaÅ¥ rozloženie" + +#: pro/fields/flexible-content.php:372 +msgid "Remove layout" +msgstr "OdstrániÅ¥ rozloženie" + +#: pro/fields/flexible-content.php:514 +msgid "Reorder Layout" +msgstr "UsporiadaÅ¥ rozloženie" + +#: pro/fields/flexible-content.php:514 +msgid "Reorder" +msgstr "ZmeniÅ¥ poradie" + +#: pro/fields/flexible-content.php:515 +msgid "Delete Layout" +msgstr "VymazaÅ¥ rozloženie" + +#: pro/fields/flexible-content.php:516 +msgid "Duplicate Layout" +msgstr "DuplikovaÅ¥ rozloženie" + +#: pro/fields/flexible-content.php:517 +msgid "Add New Layout" +msgstr "PridaÅ¥ nové rozloženie" + +#: pro/fields/flexible-content.php:561 +msgid "Display" +msgstr "Zobrazenie" + +#: pro/fields/flexible-content.php:572 pro/fields/repeater.php:399 +msgid "Table" +msgstr "Tabuľka" + +#: pro/fields/flexible-content.php:573 pro/fields/repeater.php:400 +msgid "Block" +msgstr "Blok" + +#: pro/fields/flexible-content.php:574 pro/fields/repeater.php:401 +msgid "Row" +msgstr "Riadok" + +#: pro/fields/flexible-content.php:589 +msgid "Min" +msgstr "Min" + +#: pro/fields/flexible-content.php:602 +msgid "Max" +msgstr "Max" + +#: pro/fields/flexible-content.php:630 pro/fields/repeater.php:408 +msgid "Button Label" +msgstr "OznaÄenie tlaÄidla" + +#: pro/fields/flexible-content.php:639 +msgid "Minimum Layouts" +msgstr "Minimálne rozloženie" + +#: pro/fields/flexible-content.php:648 +msgid "Maximum Layouts" +msgstr "Maximálne rozloženie" + +#: pro/fields/gallery.php:36 +msgid "Gallery" +msgstr "Galéria" + +#: pro/fields/gallery.php:52 +msgid "Add Image to Gallery" +msgstr "PridaÅ¥ obrázok do galérie" + +#: pro/fields/gallery.php:56 +msgid "Maximum selection reached" +msgstr "Maximálne dosiahnuté hodnoty" + +#: pro/fields/gallery.php:335 +msgid "Length" +msgstr "Dĺžka" + +#: pro/fields/gallery.php:355 +msgid "Remove" +msgstr "OdstrániÅ¥" + +#: pro/fields/gallery.php:535 +msgid "Add to gallery" +msgstr "PridaÅ¥ do galérie" + +#: pro/fields/gallery.php:539 +msgid "Bulk actions" +msgstr "Hromadné akcie" + +#: pro/fields/gallery.php:540 +msgid "Sort by date uploaded" +msgstr "TriediÅ¥ podľa dátumu nahrania" + +#: pro/fields/gallery.php:541 +msgid "Sort by date modified" +msgstr "TriediÅ¥ podľa poslednej úpravy" + +#: pro/fields/gallery.php:542 +msgid "Sort by title" +msgstr "TriediÅ¥ podľa názvu" + +#: pro/fields/gallery.php:543 +msgid "Reverse current order" +msgstr "ZvrátiÅ¥ aktuálnu objednávku" + +#: pro/fields/gallery.php:561 +msgid "Close" +msgstr "ZatvoriÅ¥ " + +#: pro/fields/gallery.php:619 +msgid "Minimum Selection" +msgstr "Minimálny výber" + +#: pro/fields/gallery.php:628 +msgid "Maximum Selection" +msgstr "Maximálny výber" + +#: pro/fields/gallery.php:809 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s vyžaduje výber najmenej %s" +msgstr[1] "%s vyžadujú výber najmenej %s" +msgstr[2] "%s vyžaduje výbej najmenej %s" + +#: pro/fields/repeater.php:36 +msgid "Repeater" +msgstr "OpakovaÄ" + +#: pro/fields/repeater.php:46 +msgid "Minimum rows reached ({min} rows)" +msgstr "Dosiahnutý poÄet minimálneho poÄtu riadkov ({min} rows)" + +#: pro/fields/repeater.php:47 +msgid "Maximum rows reached ({max} rows)" +msgstr "Maximálny poÄet riadkov ({max} rows)" + +#: pro/fields/repeater.php:259 +msgid "Drag to reorder" +msgstr "Zmeňte poradie pomocou funkcie Å¥ahaj a pusÅ¥" + +#: pro/fields/repeater.php:301 +msgid "Add row" +msgstr "PridaÅ¥ riadok" + +#: pro/fields/repeater.php:302 +msgid "Remove row" +msgstr "OdstrániÅ¥ riadok" + +#: pro/fields/repeater.php:350 +msgid "Sub Fields" +msgstr "Podpolia" + +#: pro/fields/repeater.php:372 +msgid "Minimum Rows" +msgstr "Minimálny poÄet riadkov" + +#: pro/fields/repeater.php:382 +msgid "Maximum Rows" +msgstr "Maximálny poÄet riadkov" + +#. Plugin Name of the plugin/theme +msgid "Advanced Custom Fields Pro" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://www.advancedcustomfields.com/" +msgstr "" + +#. Description of the plugin/theme +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" + +#. Author of the plugin/theme +msgid "elliot condon" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "" + +#~ msgid "Hide / Show All" +#~ msgstr "SchovaÅ¥ / ZobraziÅ¥ vÅ¡etky " + +#~ msgid "Show Field Keys" +#~ msgstr "ZobraziÅ¥ kÄ¾ÃºÄ poľa" + +#~ msgid "Pending Review" +#~ msgstr "Recenzia Äaká na schválenie " + +#~ msgid "Draft" +#~ msgstr "Koncept " + +#~ msgid "Future" +#~ msgstr "Budúce " + +#~ msgid "Private" +#~ msgstr "Súkromné " + +#~ msgid "Revision" +#~ msgstr "Revízia " + +#~ msgid "Trash" +#~ msgstr "Kôš " + +#~ msgid "Import / Export" +#~ msgstr "Import / Export" + +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "Skupiny polí sú vytvorené v poradí
                          od najnižšej po najvyššiu " + +#~ msgid "ACF PRO Required" +#~ msgstr "Musíte maÅ¥ Pro verziu" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website makes use of premium add-ons (%s) which are no " +#~ "longer compatible with ACF." +#~ msgstr "" +#~ "Zistili sme problém vyžadujúci vaÅ¡u pozornosÅ¥. Táto stránka využíva doplnky (%s), ktoré už nie sú komaptibilné s ACF." + +#~ msgid "Don't panic, you can simply roll back the plugin and continue using ACF as you know it!" +#~ msgstr "Nemusíte sa báť! Môžete sa vrátiÅ¥ k používaniu predchádzajúcej verzii ACF!" + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "VrátiÅ¥ sa k ACF v%s" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "Zistite preÄo by ste mali používaÅ¥ ACF PRO" + +#~ msgid "Update Database" +#~ msgstr "Aktualizácia databázy " + +#~ msgid "Data Upgrade" +#~ msgstr "AktualizovaÅ¥ dáta" + +#~ msgid "Data upgraded successfully." +#~ msgstr "ÚspeÅ¡ne aktualizované data." + +#~ msgid "Data is at the latest version." +#~ msgstr "Dáta sú aktuálne." + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "1 povinné pole je prázdne" +#~ msgstr[1] "%s povinné polia sú prázdne" +#~ msgstr[2] "%s povinných polí je prázdnych" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "NahraÅ¥ & uložiÅ¥ podmienky k prispievaniu " + +#~ msgid "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "NahraÅ¥ hodnoty založené na podmienkach prispievania, aktualizovaÅ¥ akrutálne podmienky a uložiÅ¥ " + +#~ msgid "file" +#~ msgstr "subor" + +#~ msgid "image" +#~ msgstr "obrazok" + +#~ msgid "expand_details" +#~ msgstr "zvacsit_detaily" + +#~ msgid "collapse_details" +#~ msgstr "zmensit_detaily" + +#~ msgid "relationship" +#~ msgstr "vztah" + +#~ msgid "unload" +#~ msgstr "unload" + +#~ msgid "title_is_required" +#~ msgstr "nadpis_je_povinny" + +#~ msgid "move_to_trash" +#~ msgstr "move_to_trash" + +#~ msgid "move_field_warning" +#~ msgstr "move_field_warning" + +#~ msgid "move_field" +#~ msgstr "presunut_pole" + +#~ msgid "field_name_start" +#~ msgstr "field_name_start" + +#~ msgid "null" +#~ msgstr "null" + +#~ msgid "hide_show_all" +#~ msgstr "skryt_zobrazit_vsetko" + +#~ msgid "flexible_content" +#~ msgstr "flexibilny_obsah" + +#~ msgid "gallery" +#~ msgstr "galeria" + +#~ msgid "repeater" +#~ msgstr "opakovac" + +#, fuzzy +#~ msgid "Custom field updated." +#~ msgstr "Vlastné pole aktualizované." + +#, fuzzy +#~ msgid "Custom field deleted." +#~ msgstr "Vlastné pole vymazané." + +#~ msgid "Field group duplicated! Edit the new \"%s\" field group." +#~ msgstr "Pole skupiny bolo duplikované! Upravnte novú pole \"%s\"" + +#~ msgid "Import/Export" +#~ msgstr "Import/Export" + +#~ msgid "Column Width" +#~ msgstr "Šírka stĺpca" + +#~ msgid "Attachment Details" +#~ msgstr "Detialy prílohy" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-sv_SE.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-sv_SE.mo new file mode 100644 index 0000000000000000000000000000000000000000..bcbf3fb2377fe96c0c914ad9f0e33df1bdb623f9 GIT binary patch literal 48648 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⁣&I6ACuLeH@mcb_2^Fih` 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 D|BMFc literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-sv_SE.po b/wp-content/plugins/advanced-custom-fields/lang/acf-sv_SE.po new file mode 100644 index 0000000..cf759bc --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-sv_SE.po @@ -0,0 +1,3228 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2017-06-27 15:28+1000\n" +"PO-Revision-Date: 2019-05-15 09:55+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Swedish\n" +"Language: sv_SE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:355 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Fältgrupper" + +#: acf.php:356 +msgid "Field Group" +msgstr "Fältgrupp" + +#: acf.php:357 acf.php:389 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New" +msgstr "Lägg till ny" + +#: acf.php:358 +msgid "Add New Field Group" +msgstr "Lägg till ny fältgrupp" + +#: acf.php:359 +msgid "Edit Field Group" +msgstr "Redigera fältgrupp" + +#: acf.php:360 +msgid "New Field Group" +msgstr "Skapa fältgrupp" + +#: acf.php:361 +msgid "View Field Group" +msgstr "Visa fältgrupp" + +#: acf.php:362 +msgid "Search Field Groups" +msgstr "Sök fältgrupp" + +#: acf.php:363 +msgid "No Field Groups found" +msgstr "Inga fältgrupper hittades" + +#: acf.php:364 +msgid "No Field Groups found in Trash" +msgstr "Inga fältgrupper hittades i papperskorgen" + +#: acf.php:387 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:857 +msgid "Fields" +msgstr "Fält" + +#: acf.php:388 +msgid "Field" +msgstr "Fält" + +#: acf.php:390 +msgid "Add New Field" +msgstr "Skapa nytt fält" + +#: acf.php:391 +msgid "Edit Field" +msgstr "Redigera fält" + +#: acf.php:392 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Nytt fält" + +#: acf.php:393 +msgid "View Field" +msgstr "Visa fält" + +#: acf.php:394 +msgid "Search Fields" +msgstr "Sök fält" + +#: acf.php:395 +msgid "No Fields found" +msgstr "Inga fält hittades" + +#: acf.php:396 +msgid "No Fields found in Trash" +msgstr "Inga fält hittades i papperskorgen" + +#: acf.php:435 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Inaktiv" + +#: acf.php:440 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inaktiv (%s)" +msgstr[1] "Inaktiva (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Fältgrupper uppdaterades." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Fältgrupper raderades." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Fältgrupper publicerades." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Fältgrupper sparades." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Fältgruppen skickades." + +#: includes/admin/admin-field-group.php:76 +msgid "Field group scheduled for." +msgstr "Fältgruppen schemalades för." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Utkastet till fältgrupp uppdaterades." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "Plats" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "Inställningar" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "Flytta till papperskorgen. Är du säker?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "vald" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "Det finns inga aktiveringsbara fält" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "Fältgruppen behöver en titel" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:732 +msgid "copy" +msgstr "kopiera" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3970 +msgid "or" +msgstr "eller" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "Föräldrafält" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "Syskonfält" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "Flytta egna fält" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Detta fält kan inte flyttas förrän ändringarna har sparats" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "Nollvärde" + +#: includes/admin/admin-field-group.php:281 includes/input.php:257 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"De ändringar som du gjort kommer att förloras om du navigerar bort frÃ¥n " +"denna sida" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Strängen \"field_\" fÃ¥r inte användas i början av ett fältnamn" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "Fältnycklar" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Aktiv" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "Flytt färdig." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Fältet %s kan nu hittas i fältgruppen %s" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "Stäng fönster" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "Välj mÃ¥let (destinationen) för detta fält" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "Flytta fält" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Aktiv (%s)" +msgstr[1] "Aktiva (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "Fältgruppen kopierad. %s" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s fältgrupp kopierad." +msgstr[1] "%s fältgrupper kopierade." + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "Fältgrupp synkroniserad. %s" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s fältgrupp synkroniserad." +msgstr[1] "%s fältgrupper synkroniserade." + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "Synkronisering tillgänglig" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:370 +msgid "Title" +msgstr "Titel" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:397 +msgid "Description" +msgstr "Beskrivning" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "Status" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"Skräddarsy Wordpress med kraftfulla, professionella och intuitiva fält." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:111 +msgid "Changelog" +msgstr "Versionshistorik" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "Se vad som är nytt i version %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "Resurser" + +#: includes/admin/admin-field-groups.php:619 +#, fuzzy +msgid "Website" +msgstr "Denna webbplats använder premiumtillägg som behöver laddas ner" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "Dokumentation" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Support" + +#: includes/admin/admin-field-groups.php:623 +#, fuzzy +msgid "Pro" +msgstr "Adjö tillägg. Hej PRO" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "Tack för att du skapar med ACF." + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "Duplicera detta objekt" + +#: includes/admin/admin-field-groups.php:668 +#: includes/admin/admin-field-groups.php:684 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate" +msgstr "Duplicera" + +#: includes/admin/admin-field-groups.php:701 +#: includes/fields/class-acf-field-google-map.php:132 +#: includes/fields/class-acf-field-relationship.php:737 +msgid "Search" +msgstr "Sök" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "Välj %s" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "Synkronisera fältgrupp" + +#: includes/admin/admin-field-groups.php:768 +#: includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "Synkronisera" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "" + +#: includes/admin/admin-field-groups.php:798 +#, fuzzy +msgid "Bulk Actions" +msgstr "Välj Ã¥tgärd" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Egna fält" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Uppgradera databas" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "Kontrollera webbplatser & uppgradera" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "Fel vid validering av begäran" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "Inga uppdateringar tillgängliga." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Tillägg" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "Fel. Kunde inte ladda tilläggslistan" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Information" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Vad är nytt" + +#: includes/admin/settings-tools.php:50 +#: includes/admin/views/settings-tools-export.php:19 +#: includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "Verktyg" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "Inga fältgrupper valda" + +#: includes/admin/settings-tools.php:184 +#: includes/fields/class-acf-field-file.php:174 +msgid "No file selected" +msgstr "Ingen fil vald" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "Fel vid uppladdning av fil. Vänligen försök igen" + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "Felaktig filtyp" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "Importfilen är tom" + +#: includes/admin/settings-tools.php:331 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Importerade 1 fältgrupp" +msgstr[1] "Importerade %s fältgrupp" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "Visningsvillkor" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Visa detta fält när" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:243 +msgid "is equal to" +msgstr "är" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "inte är" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "och" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Lägg till regelgrupp" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:420 +#: pro/fields/class-acf-field-repeater.php:358 +msgid "Drag to reorder" +msgstr "Dra och släpp för att ändra ordning" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Redigera fält" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-image.php:140 +#: includes/fields/class-acf-field-link.php:152 +#: pro/fields/class-acf-field-gallery.php:357 +msgid "Edit" +msgstr "Redigera" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Duplicera fält" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "Flytta fält till en annan grupp" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "Flytta" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "Radera fält" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete" +msgstr "Radera" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "Fälttitel" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "Detta namn kommer att visas vid redigering" + +#: includes/admin/views/field-group-field.php:78 +msgid "Field Name" +msgstr "Fältnamn" + +#: includes/admin/views/field-group-field.php:79 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Ett enda ord, utan mellanslag. Understreck och bindestreck är tillÃ¥tna" + +#: includes/admin/views/field-group-field.php:89 +msgid "Field Type" +msgstr "Fälttyp" + +#: includes/admin/views/field-group-field.php:101 +#: includes/fields/class-acf-field-tab.php:102 +msgid "Instructions" +msgstr "Instruktioner" + +#: includes/admin/views/field-group-field.php:102 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Instruktioner för den som redigerar" + +#: includes/admin/views/field-group-field.php:111 +msgid "Required?" +msgstr "Obligatorisk?" + +#: includes/admin/views/field-group-field.php:134 +msgid "Wrapper Attributes" +msgstr "Attribut för det omslutande elementet (wrappern)" + +#: includes/admin/views/field-group-field.php:140 +msgid "width" +msgstr "bredd" + +#: includes/admin/views/field-group-field.php:155 +msgid "class" +msgstr "class" + +#: includes/admin/views/field-group-field.php:168 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:180 +msgid "Close Field" +msgstr "Stäng fält" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Ordning" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-checkbox.php:317 +#: includes/fields/class-acf-field-radio.php:321 +#: includes/fields/class-acf-field-select.php:530 +#: pro/fields/class-acf-field-flexible-content.php:599 +msgid "Label" +msgstr "Titel" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:970 +#: pro/fields/class-acf-field-flexible-content.php:612 +msgid "Name" +msgstr "Namn" + +#: includes/admin/views/field-group-fields.php:7 +#, fuzzy +msgid "Key" +msgstr "Visa fältnyckel:" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Typ" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Inga fält. Klicka pÃ¥ knappen + Lägg till fält för att skapa " +"ditt första fält." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Lägg till fält" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Regler" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "Reglera var denna fältgrupp ska visas" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stil" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standard (WP metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Transparent (ingen metabox)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Position" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Hög (efter titel)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (efter innehÃ¥ll)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Sidopanel" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Titel placering" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:116 +msgid "Top aligned" +msgstr "Toppjusterad" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:117 +msgid "Left aligned" +msgstr "Vänsterjusterad" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Placering av instruktion" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Under titlar" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Under fält" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Ordningsnummer" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Fältgrupper med lägre ordningsnummer kommer synas först" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Visas i fältgruppslistan" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Dölj pÃ¥ skärmen" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "Välj objekt för att dölja dem frÃ¥n redigeringsvyn" + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Om flera fältgrupper visas i redigeringsvyn, kommer första gruppens " +"inställningar att användas (den med lägst ordningsnummer)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "Permalänk" + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "InnehÃ¥llsredigerare" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "Utdrag" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "Diskussion" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Kommentarer" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Versioner" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Permalänk" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Författare" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Format" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Sidattribut" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:751 +msgid "Featured Image" +msgstr "Utvald bild" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Kategorier" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Taggar" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "Skicka trackbacks" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Visa detta fält när" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Uppgradera sajter" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Advanced Custom Fields databasuppgradering" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Följande sajter behöver en databasuppdatering. Kryssa i de du vill uppdatera " +"och klicka pÃ¥ %s." + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Webbplats" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Webbplatsen kräver en databasuppgradering frÃ¥n %s till %s" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Webbplatsen är uppdaterad" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Uppgradering av databas slutförd. Ã…tervänd till nätverkets " +"startpanel" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Det rekommenderas starkt att du säkerhetskopierar din databas innan du " +"fortsätter. Är du säker pÃ¥ att vill köra uppdateringen nu?" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "Uppgradering genomförd" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Uppgradera data till version %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Repeater" +msgstr "Upprepningsfält" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "Flexible Content" +msgstr "Flexibelt innehÃ¥ll" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:36 +msgid "Gallery" +msgstr "Galleri" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:13 +msgid "Options Page" +msgstr "Inställningssida" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Uppgradering av databasen krävs" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "Tack för du uppdaterade till %s v%s!" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" +"Innan du börjar använda de nya fantastiska funktionerna, vänligen uppdatera " +"din databas till den senaste versionen." + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "Läser in uppgifter för uppgradering..." + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "Databasuppgraderingen färdig. Se vad som är nytt" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Ladda ner & installera" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Installerad" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Välkommen till Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Tack för att du uppdaterar! ACF %s är större och bättre än nÃ¥gonsin " +"tidigare. Vi hoppas att du gillar det." + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "En smidigare fältupplevelse" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "Förbättrad användarvänlighet" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Vi har inkluderat det populära biblioteket Select2 som har förbättrat bÃ¥de " +"användbarhet och laddningstid för ett antal fälttyper sÃ¥som inläggsobjekt, " +"sidlänk, taxonomi och val." + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "Förbättrad design" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"MÃ¥nga fält har genomgÃ¥tt en visuell förbättring för att lÃ¥ta ACF se bättre " +"ut än nÃ¥gonsin! Märkbara förändringar syns pÃ¥ galleriet-, relation- och " +"oEmbed- (nytt) fälten!" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "Förbättrad data" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Omdesignen av dataarkitekturen har tillÃ¥tit underfält att leva självständigt " +"frÃ¥n deras föräldrar. Detta gör att du kan dra och släppa fält in och ut " +"frÃ¥n förälderfälten!" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Adjö tillägg. Hej PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "Introducerande av ACF PRO" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "Vi ändrar hur premium funktionalitet levereras, pÃ¥ ett spännande sätt!" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Samtliga 4 premiumtillägg har kombineras till en ny Pro " +"version av ACF. Med bÃ¥de personlig- och utvecklarlicens tillgänglig, sÃ¥ " +"är premium funktionalitet billigare och tillgängligare än nÃ¥gonsin!" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Kraftfulla funktioner" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO innehÃ¥ller kraftfulla funktioner som upprepningsfält, flexibelt " +"innehÃ¥ll, ett vackert gallerifält och möjligheten att skapa extra " +"inställningssidor!" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Läs mer om ACF PRO funktioner." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Enkelt att uppgradera" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" +"För att göra uppgraderingen enkel, logga in till ditt konto och fÃ¥ en gratis kopia av ACF PRO!" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"Vi skrev även en uppgraderings guideför svara pÃ¥ " +"eventuella frÃ¥gor, men om du har en, vänligen kontakta vÃ¥rt support team via " +"help desk" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Under huven" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "Smartare fältinställningar" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF sparar nu sina fältinställningar som individuella postobjekt" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Mer AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "Fler fält använder AJAX-sök för snabbare laddning" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "Lokal JSON" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "Ny automatisk export till JSON funktion förbättrar snabbheten" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "Bättre versionshantering" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" +"Ny auto export till JSON funktion möjliggör versionshantering av " +"fältinställningar" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "Bytte XML till JSON" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "Import / Export använder nu JSON istället för XML" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Nya formulär" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" +"Fält kan nu kopplas till kommentarer, widgets och alla användarformulär." + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "Ett nytt fält för inbäddning av innehÃ¥ll (embed) har lagts till" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Nytt galleri" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "Gallerifältet har genomgÃ¥tt en välbehövlig ansiktslyftning" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Nya inställningar" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" +"Fältgruppsinställningar har lagts till för placering av titel och " +"instruktioner" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "Bättre front-end formulär" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() kan nu skapa ett nytt inlägg vid submit" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Bättre validering" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "Validering av formulär görs nu via PHP + AJAX istället för enbart JS" + +#: includes/admin/views/settings-info.php:132 +msgid "Relationship Field" +msgstr "Relationsfält" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" +"Ny inställning för relationsfält för 'Filter' (Sök, Inläggstyp, Taxonomi)" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "Flytta runt fält" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" +"Ny fältgrupp funktionalitet tillÃ¥ter dig att flytta ett fält mellan grupper " +"& föräldrar" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:36 +msgid "Page Link" +msgstr "Sidlänk" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "Ny arkivgrupp i page_link fältval" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Bättre inställningssidor" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" +"Nya funktioner för inställningssidor tillÃ¥ter skapande av bÃ¥de föräldra- och " +"undersidor" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Vi tror att du kommer uppskatta förändringarna i %s." + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "Exportera fältgrupper till PHP" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"Följande kod kan användas för att registrera en lokal version av valda " +"fältgrupp(er). Ett lokal fältgrupp kan ge mÃ¥nga fördelar som snabbare " +"laddningstider, versionshantering & dynamiska fält/inställningar. Det är " +"bara att kopiera och klistra in följande kod till ditt temas functions.php " +"fil eller att inkludera det i en extern fil." + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Välj fältgrupp" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "Exportera fältgrupper" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Välj de fältgrupper som du vill exportera och sedan välj din exportmetod. " +"Använd knappen för exportera till en .json fil som du sedan kan importera " +"till en annan ACF installation. Använd generera-knappen för att exportera " +"PHP kod som du kan lägga till i ditt tema." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "Ladda ner exportfil" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Generera exportkod" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "Importera fältgrupper" + +#: includes/admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Välj den Advanced Custom Fields JSON-fil som du vill importera. När du " +"klickar pÃ¥ import knappen sÃ¥ kommer ACF importera fältgrupperna." + +#: includes/admin/views/settings-tools.php:77 +#: includes/fields/class-acf-field-file.php:46 +msgid "Select File" +msgstr "Välj fil" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Importera" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "Tumnagel" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "Mellan" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "Stor" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "Full storlek" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1837 +#: pro/fields/class-acf-field-clone.php:1042 +msgid "(no title)" +msgstr "(ingen titel)" + +#: includes/api/api-helpers.php:1874 +#: includes/fields/class-acf-field-page_link.php:284 +#: includes/fields/class-acf-field-post_object.php:283 +#: includes/fields/class-acf-field-taxonomy.php:992 +msgid "Parent" +msgstr "Förälder" + +#: includes/api/api-helpers.php:3891 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Bildens bredd mÃ¥ste vara Ã¥tminstone %dpx." + +#: includes/api/api-helpers.php:3896 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Bildens bredd fÃ¥r inte överskrida %dpx." + +#: includes/api/api-helpers.php:3912 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Bildens höjd mÃ¥ste vara Ã¥tminstone %dpx." + +#: includes/api/api-helpers.php:3917 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Bildens höjd fÃ¥r inte överskrida %dpx." + +#: includes/api/api-helpers.php:3935 +#, php-format +msgid "File size must be at least %s." +msgstr "Filstorlek mÃ¥ste vara Ã¥tminstone %s." + +#: includes/api/api-helpers.php:3940 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Filstorlek fÃ¥r inte överskrida %s." + +#: includes/api/api-helpers.php:3974 +#, php-format +msgid "File type must be %s." +msgstr "Filtyp mÃ¥ste vara %s." + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Enkel" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "InnehÃ¥ll" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Alternativ" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "Relation" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:149 includes/fields/class-acf-field-checkbox.php:286 +#: includes/fields/class-acf-field-group.php:485 +#: includes/fields/class-acf-field-radio.php:300 +#: pro/fields/class-acf-field-clone.php:889 +#: pro/fields/class-acf-field-flexible-content.php:569 +#: pro/fields/class-acf-field-flexible-content.php:618 +#: pro/fields/class-acf-field-repeater.php:514 +msgid "Layout" +msgstr "Layout" + +#: includes/fields.php:305 +msgid "Field type does not exist" +msgstr "Fälttyp existerar inte" + +#: includes/fields.php:305 +#, fuzzy +msgid "Unknown" +msgstr "Okänd fältgrupp" + +#: includes/fields/class-acf-field-checkbox.php:36 +#: includes/fields/class-acf-field-taxonomy.php:786 +msgid "Checkbox" +msgstr "Kryssruta" + +#: includes/fields/class-acf-field-checkbox.php:150 +msgid "Toggle All" +msgstr "Markera alla" + +#: includes/fields/class-acf-field-checkbox.php:207 +msgid "Add new choice" +msgstr "Skapa nytt val" + +#: includes/fields/class-acf-field-checkbox.php:246 +#: includes/fields/class-acf-field-radio.php:250 +#: includes/fields/class-acf-field-select.php:466 +msgid "Choices" +msgstr "Alternativ" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "Enter each choice on a new line." +msgstr "Ange varje alternativ pÃ¥ en ny rad" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "For more control, you may specify both a value and label like this:" +msgstr "För mer kontroll, kan du specificera bÃ¥de ett värde och etikett sÃ¥här:" + +#: includes/fields/class-acf-field-checkbox.php:247 +#: includes/fields/class-acf-field-radio.php:251 +#: includes/fields/class-acf-field-select.php:467 +msgid "red : Red" +msgstr "röd : Röd" + +#: includes/fields/class-acf-field-checkbox.php:255 +msgid "Allow Custom" +msgstr "TillÃ¥t annat val" + +#: includes/fields/class-acf-field-checkbox.php:260 +msgid "Allow 'custom' values to be added" +msgstr "TillÃ¥ter 'annat val' att väljas" + +#: includes/fields/class-acf-field-checkbox.php:266 +msgid "Save Custom" +msgstr "Spara annat val" + +#: includes/fields/class-acf-field-checkbox.php:271 +msgid "Save 'custom' values to the field's choices" +msgstr "Spara 'annat val' värdet till fältets val" + +#: includes/fields/class-acf-field-checkbox.php:277 +#: includes/fields/class-acf-field-color_picker.php:146 +#: includes/fields/class-acf-field-email.php:133 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-radio.php:291 +#: includes/fields/class-acf-field-select.php:475 +#: includes/fields/class-acf-field-text.php:142 +#: includes/fields/class-acf-field-textarea.php:139 +#: includes/fields/class-acf-field-true_false.php:150 +#: includes/fields/class-acf-field-url.php:114 +#: includes/fields/class-acf-field-wysiwyg.php:436 +msgid "Default Value" +msgstr "Standardvärde" + +#: includes/fields/class-acf-field-checkbox.php:278 +#: includes/fields/class-acf-field-select.php:476 +msgid "Enter each default value on a new line" +msgstr "Ange varje standardvärde pÃ¥ en ny rad" + +#: includes/fields/class-acf-field-checkbox.php:292 +#: includes/fields/class-acf-field-radio.php:306 +msgid "Vertical" +msgstr "Vertikal" + +#: includes/fields/class-acf-field-checkbox.php:293 +#: includes/fields/class-acf-field-radio.php:307 +msgid "Horizontal" +msgstr "Horisontell" + +#: includes/fields/class-acf-field-checkbox.php:300 +msgid "Toggle" +msgstr "SlÃ¥ pÃ¥/av" + +#: includes/fields/class-acf-field-checkbox.php:301 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "Visa en extra kryssruta för att markera alla val" + +#: includes/fields/class-acf-field-checkbox.php:310 +#: includes/fields/class-acf-field-file.php:219 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:180 +#: includes/fields/class-acf-field-radio.php:314 +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Return Value" +msgstr "Returvärde" + +#: includes/fields/class-acf-field-checkbox.php:311 +#: includes/fields/class-acf-field-file.php:220 +#: includes/fields/class-acf-field-image.php:207 +#: includes/fields/class-acf-field-link.php:181 +#: includes/fields/class-acf-field-radio.php:315 +msgid "Specify the returned value on front end" +msgstr "Välj vilken typ av värde som ska returneras pÃ¥ front-end" + +#: includes/fields/class-acf-field-checkbox.php:316 +#: includes/fields/class-acf-field-radio.php:320 +#: includes/fields/class-acf-field-select.php:529 +msgid "Value" +msgstr "Värde" + +#: includes/fields/class-acf-field-checkbox.php:318 +#: includes/fields/class-acf-field-radio.php:322 +#: includes/fields/class-acf-field-select.php:531 +msgid "Both (Array)" +msgstr "BÃ¥da" + +#: includes/fields/class-acf-field-color_picker.php:36 +msgid "Color Picker" +msgstr "Färgväljare" + +#: includes/fields/class-acf-field-color_picker.php:83 +msgid "Clear" +msgstr "Rensa" + +#: includes/fields/class-acf-field-color_picker.php:84 +msgid "Default" +msgstr "Standard" + +#: includes/fields/class-acf-field-color_picker.php:85 +msgid "Select Color" +msgstr "Välj färg" + +#: includes/fields/class-acf-field-color_picker.php:86 +msgid "Current Color" +msgstr "Nuvarande färg" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgid "Date Picker" +msgstr "Datumväljare" + +#: includes/fields/class-acf-field-date_picker.php:44 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Färdig" + +#: includes/fields/class-acf-field-date_picker.php:45 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Idag" + +#: includes/fields/class-acf-field-date_picker.php:46 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "Nästa" + +#: includes/fields/class-acf-field-date_picker.php:47 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "FöregÃ¥ende" + +#: includes/fields/class-acf-field-date_picker.php:48 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "V" + +#: includes/fields/class-acf-field-date_picker.php:223 +#: includes/fields/class-acf-field-date_time_picker.php:197 +#: includes/fields/class-acf-field-time_picker.php:127 +msgid "Display Format" +msgstr "Visa format" + +#: includes/fields/class-acf-field-date_picker.php:224 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-time_picker.php:128 +msgid "The format displayed when editing a post" +msgstr "Formatet som visas när du redigerar ett inlägg" + +#: includes/fields/class-acf-field-date_picker.php:232 +#: includes/fields/class-acf-field-date_picker.php:263 +#: includes/fields/class-acf-field-date_time_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:224 +#: includes/fields/class-acf-field-time_picker.php:135 +#: includes/fields/class-acf-field-time_picker.php:150 +#, fuzzy +msgid "Custom:" +msgstr "Advanced Custom Fields" + +#: includes/fields/class-acf-field-date_picker.php:242 +msgid "Save Format" +msgstr "Spara i format" + +#: includes/fields/class-acf-field-date_picker.php:243 +msgid "The format used when saving a value" +msgstr "Formatet som används när ett värde sparas" + +#: includes/fields/class-acf-field-date_picker.php:253 +#: includes/fields/class-acf-field-date_time_picker.php:214 +#: includes/fields/class-acf-field-post_object.php:447 +#: includes/fields/class-acf-field-relationship.php:778 +#: includes/fields/class-acf-field-select.php:524 +#: includes/fields/class-acf-field-time_picker.php:142 +msgid "Return Format" +msgstr "Returvärde" + +#: includes/fields/class-acf-field-date_picker.php:254 +#: includes/fields/class-acf-field-date_time_picker.php:215 +#: includes/fields/class-acf-field-time_picker.php:143 +msgid "The format returned via template functions" +msgstr "Formatet som returneras av mallfunktioner" + +#: includes/fields/class-acf-field-date_picker.php:272 +#: includes/fields/class-acf-field-date_time_picker.php:231 +msgid "Week Starts On" +msgstr "Veckor börjar pÃ¥" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgid "Date Time Picker" +msgstr "Datum/tidväljare" + +#: includes/fields/class-acf-field-date_time_picker.php:44 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Välj tid" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Tid" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Timme" + +#: includes/fields/class-acf-field-date_time_picker.php:47 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Minut" + +#: includes/fields/class-acf-field-date_time_picker.php:48 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Sekund" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Millisekund" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosekund" + +#: includes/fields/class-acf-field-date_time_picker.php:51 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Tidszon" + +#: includes/fields/class-acf-field-date_time_picker.php:52 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Nu" + +#: includes/fields/class-acf-field-date_time_picker.php:53 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Klar" + +#: includes/fields/class-acf-field-date_time_picker.php:54 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Välj" + +#: includes/fields/class-acf-field-date_time_picker.php:56 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:57 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:60 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:61 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:36 +msgid "Email" +msgstr "E-post" + +#: includes/fields/class-acf-field-email.php:134 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-radio.php:292 +#: includes/fields/class-acf-field-text.php:143 +#: includes/fields/class-acf-field-textarea.php:140 +#: includes/fields/class-acf-field-url.php:115 +#: includes/fields/class-acf-field-wysiwyg.php:437 +msgid "Appears when creating a new post" +msgstr "Visas när ett nytt inlägg skapas" + +#: includes/fields/class-acf-field-email.php:142 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:134 +#: includes/fields/class-acf-field-text.php:151 +#: includes/fields/class-acf-field-textarea.php:148 +#: includes/fields/class-acf-field-url.php:123 +msgid "Placeholder Text" +msgstr "PlatshÃ¥llartext" + +#: includes/fields/class-acf-field-email.php:143 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:135 +#: includes/fields/class-acf-field-text.php:152 +#: includes/fields/class-acf-field-textarea.php:149 +#: includes/fields/class-acf-field-url.php:124 +msgid "Appears within the input" +msgstr "Visas inuti fältet" + +#: includes/fields/class-acf-field-email.php:151 +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-password.php:143 +#: includes/fields/class-acf-field-text.php:160 +msgid "Prepend" +msgstr "Lägg till före" + +#: includes/fields/class-acf-field-email.php:152 +#: includes/fields/class-acf-field-number.php:164 +#: includes/fields/class-acf-field-password.php:144 +#: includes/fields/class-acf-field-text.php:161 +msgid "Appears before the input" +msgstr "Visas före fältet" + +#: includes/fields/class-acf-field-email.php:160 +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-password.php:152 +#: includes/fields/class-acf-field-text.php:169 +msgid "Append" +msgstr "Lägg till efter" + +#: includes/fields/class-acf-field-email.php:161 +#: includes/fields/class-acf-field-number.php:173 +#: includes/fields/class-acf-field-password.php:153 +#: includes/fields/class-acf-field-text.php:170 +msgid "Appears after the input" +msgstr "Visas efter fältet" + +#: includes/fields/class-acf-field-file.php:36 +msgid "File" +msgstr "Fil" + +#: includes/fields/class-acf-field-file.php:47 +msgid "Edit File" +msgstr "Redigera fil" + +#: includes/fields/class-acf-field-file.php:48 +msgid "Update File" +msgstr "Uppdatera fil" + +#: includes/fields/class-acf-field-file.php:49 +#: includes/fields/class-acf-field-image.php:54 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:55 +msgid "Uploaded to this post" +msgstr "Uppladdade till detta inlägg" + +#: includes/fields/class-acf-field-file.php:145 +msgid "File name" +msgstr "Filnamn" + +#: includes/fields/class-acf-field-file.php:149 +#: includes/fields/class-acf-field-file.php:252 +#: includes/fields/class-acf-field-file.php:263 +#: includes/fields/class-acf-field-image.php:266 +#: includes/fields/class-acf-field-image.php:295 +#: pro/fields/class-acf-field-gallery.php:705 +#: pro/fields/class-acf-field-gallery.php:734 +msgid "File size" +msgstr "Filstorlek" + +#: includes/fields/class-acf-field-file.php:174 +msgid "Add File" +msgstr "Lägg till fil" + +#: includes/fields/class-acf-field-file.php:225 +msgid "File Array" +msgstr "Fil array" + +#: includes/fields/class-acf-field-file.php:226 +msgid "File URL" +msgstr "Filadress" + +#: includes/fields/class-acf-field-file.php:227 +msgid "File ID" +msgstr "Filens ID" + +#: includes/fields/class-acf-field-file.php:234 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:670 +msgid "Library" +msgstr "Bibliotek" + +#: includes/fields/class-acf-field-file.php:235 +#: includes/fields/class-acf-field-image.php:232 +#: pro/fields/class-acf-field-gallery.php:671 +msgid "Limit the media library choice" +msgstr "Begränsa urvalet i mediabiblioteket" + +#: includes/fields/class-acf-field-file.php:240 +#: includes/fields/class-acf-field-image.php:237 +#: includes/locations/class-acf-location-attachment.php:105 +#: includes/locations/class-acf-location-comment.php:83 +#: includes/locations/class-acf-location-nav-menu.php:106 +#: includes/locations/class-acf-location-taxonomy.php:83 +#: includes/locations/class-acf-location-user-form.php:91 +#: includes/locations/class-acf-location-user-role.php:108 +#: includes/locations/class-acf-location-widget.php:87 +#: pro/fields/class-acf-field-gallery.php:676 +msgid "All" +msgstr "Alla" + +#: includes/fields/class-acf-field-file.php:241 +#: includes/fields/class-acf-field-image.php:238 +#: pro/fields/class-acf-field-gallery.php:677 +msgid "Uploaded to post" +msgstr "Uppladdade till detta inlägg" + +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-image.php:245 +#: pro/fields/class-acf-field-gallery.php:684 +msgid "Minimum" +msgstr "Minimalt" + +#: includes/fields/class-acf-field-file.php:249 +#: includes/fields/class-acf-field-file.php:260 +msgid "Restrict which files can be uploaded" +msgstr "Begränsa vilka filer som kan laddas upp" + +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:713 +msgid "Maximum" +msgstr "Maximalt" + +#: includes/fields/class-acf-field-file.php:270 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:742 +msgid "Allowed file types" +msgstr "TillÃ¥tna filtyper" + +#: includes/fields/class-acf-field-file.php:271 +#: includes/fields/class-acf-field-image.php:304 +#: pro/fields/class-acf-field-gallery.php:743 +msgid "Comma separated list. Leave blank for all types" +msgstr "Kommaseparerad lista. Lämna blankt för alla typer" + +#: includes/fields/class-acf-field-google-map.php:36 +msgid "Google Map" +msgstr "Google Map" + +#: includes/fields/class-acf-field-google-map.php:51 +msgid "Locating" +msgstr "Söker plats" + +#: includes/fields/class-acf-field-google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "Tyvärr saknar denna webbläsare stöd för platsinformation" + +#: includes/fields/class-acf-field-google-map.php:133 +msgid "Clear location" +msgstr "Rensa plats" + +#: includes/fields/class-acf-field-google-map.php:134 +msgid "Find current location" +msgstr "Hitta nuvarande plats" + +#: includes/fields/class-acf-field-google-map.php:137 +msgid "Search for address..." +msgstr "Sök efter adress..." + +#: includes/fields/class-acf-field-google-map.php:167 +#: includes/fields/class-acf-field-google-map.php:178 +msgid "Center" +msgstr "Centrera" + +#: includes/fields/class-acf-field-google-map.php:168 +#: includes/fields/class-acf-field-google-map.php:179 +msgid "Center the initial map" +msgstr "Kartans initiala centrum" + +#: includes/fields/class-acf-field-google-map.php:190 +msgid "Zoom" +msgstr "Zoom" + +#: includes/fields/class-acf-field-google-map.php:191 +msgid "Set the initial zoom level" +msgstr "Ange kartans initiala zoom nivÃ¥" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-image.php:257 +#: includes/fields/class-acf-field-image.php:286 +#: includes/fields/class-acf-field-oembed.php:297 +#: pro/fields/class-acf-field-gallery.php:696 +#: pro/fields/class-acf-field-gallery.php:725 +msgid "Height" +msgstr "Höjd" + +#: includes/fields/class-acf-field-google-map.php:201 +msgid "Customise the map height" +msgstr "Ställ in kartans höjd" + +#: includes/fields/class-acf-field-group.php:36 +#, fuzzy +msgid "Group" +msgstr "Fältgrupp" + +#: includes/fields/class-acf-field-group.php:469 +#: pro/fields/class-acf-field-repeater.php:453 +msgid "Sub Fields" +msgstr "Underfält" + +#: includes/fields/class-acf-field-group.php:486 +#: pro/fields/class-acf-field-clone.php:890 +msgid "Specify the style used to render the selected fields" +msgstr "Specificera stilen för att rendera valda fält" + +#: includes/fields/class-acf-field-group.php:491 +#: pro/fields/class-acf-field-clone.php:895 +#: pro/fields/class-acf-field-flexible-content.php:629 +#: pro/fields/class-acf-field-repeater.php:522 +msgid "Block" +msgstr "Block" + +#: includes/fields/class-acf-field-group.php:492 +#: pro/fields/class-acf-field-clone.php:896 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:521 +msgid "Table" +msgstr "Tabell" + +#: includes/fields/class-acf-field-group.php:493 +#: pro/fields/class-acf-field-clone.php:897 +#: pro/fields/class-acf-field-flexible-content.php:630 +#: pro/fields/class-acf-field-repeater.php:523 +msgid "Row" +msgstr "Rad" + +#: includes/fields/class-acf-field-image.php:36 +msgid "Image" +msgstr "Bild" + +#: includes/fields/class-acf-field-image.php:51 +msgid "Select Image" +msgstr "Välj bild" + +#: includes/fields/class-acf-field-image.php:52 +#: pro/fields/class-acf-field-gallery.php:53 +msgid "Edit Image" +msgstr "Redigera bild" + +#: includes/fields/class-acf-field-image.php:53 +#: pro/fields/class-acf-field-gallery.php:54 +msgid "Update Image" +msgstr "Uppdatera bild" + +#: includes/fields/class-acf-field-image.php:55 +msgid "All images" +msgstr "Alla bilder" + +#: includes/fields/class-acf-field-image.php:142 +#: includes/fields/class-acf-field-link.php:153 includes/input.php:267 +#: pro/fields/class-acf-field-gallery.php:358 +#: pro/fields/class-acf-field-gallery.php:546 +msgid "Remove" +msgstr "Radera" + +#: includes/fields/class-acf-field-image.php:158 +msgid "No image selected" +msgstr "Ingen bild vald" + +#: includes/fields/class-acf-field-image.php:158 +msgid "Add Image" +msgstr "Lägg till bild" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image Array" +msgstr "Bild Array" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image URL" +msgstr "Bildadress" + +#: includes/fields/class-acf-field-image.php:214 +msgid "Image ID" +msgstr "Bildens ID" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Preview Size" +msgstr "Förhandsvisningens storlek" + +#: includes/fields/class-acf-field-image.php:222 +msgid "Shown when entering data" +msgstr "Visas vid inmatning av data" + +#: includes/fields/class-acf-field-image.php:246 +#: includes/fields/class-acf-field-image.php:275 +#: pro/fields/class-acf-field-gallery.php:685 +#: pro/fields/class-acf-field-gallery.php:714 +msgid "Restrict which images can be uploaded" +msgstr "Begränsa vilka bilder som kan laddas upp" + +#: includes/fields/class-acf-field-image.php:249 +#: includes/fields/class-acf-field-image.php:278 +#: includes/fields/class-acf-field-oembed.php:286 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Width" +msgstr "bredd" + +#: includes/fields/class-acf-field-link.php:36 +#, fuzzy +msgid "Link" +msgstr "Sidlänk" + +#: includes/fields/class-acf-field-link.php:146 +#, fuzzy +msgid "Select Link" +msgstr "Välj fil" + +#: includes/fields/class-acf-field-link.php:151 +msgid "Opens in a new window/tab" +msgstr "" + +#: includes/fields/class-acf-field-link.php:186 +#, fuzzy +msgid "Link Array" +msgstr "Fil array" + +#: includes/fields/class-acf-field-link.php:187 +#, fuzzy +msgid "Link URL" +msgstr "Filadress" + +#: includes/fields/class-acf-field-message.php:36 +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-true_false.php:141 +msgid "Message" +msgstr "Meddelande" + +#: includes/fields/class-acf-field-message.php:124 +#: includes/fields/class-acf-field-textarea.php:176 +msgid "New Lines" +msgstr "Nya linjer" + +#: includes/fields/class-acf-field-message.php:125 +#: includes/fields/class-acf-field-textarea.php:177 +msgid "Controls how new lines are rendered" +msgstr "Reglerar hur nya linjer renderas" + +#: includes/fields/class-acf-field-message.php:129 +#: includes/fields/class-acf-field-textarea.php:181 +msgid "Automatically add paragraphs" +msgstr "Lägg till styckesindelning automatiskt." + +#: includes/fields/class-acf-field-message.php:130 +#: includes/fields/class-acf-field-textarea.php:182 +msgid "Automatically add <br>" +msgstr "Lägg till automatiskt <br>" + +#: includes/fields/class-acf-field-message.php:131 +#: includes/fields/class-acf-field-textarea.php:183 +msgid "No Formatting" +msgstr "Ingen formattering" + +#: includes/fields/class-acf-field-message.php:138 +msgid "Escape HTML" +msgstr "Inaktivera HTML-rendering" + +#: includes/fields/class-acf-field-message.php:139 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "TillÃ¥t HTML kod att visas som synlig text istället för att renderas" + +#: includes/fields/class-acf-field-number.php:36 +msgid "Number" +msgstr "Nummer" + +#: includes/fields/class-acf-field-number.php:181 +msgid "Minimum Value" +msgstr "Minsta värde" + +#: includes/fields/class-acf-field-number.php:190 +msgid "Maximum Value" +msgstr "Högsta värde" + +#: includes/fields/class-acf-field-number.php:199 +msgid "Step Size" +msgstr "Stegvärde" + +#: includes/fields/class-acf-field-number.php:237 +msgid "Value must be a number" +msgstr "Värdet mÃ¥ste vara ett nummer" + +#: includes/fields/class-acf-field-number.php:255 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "Värdet mÃ¥ste vara lika med eller högre än %d" + +#: includes/fields/class-acf-field-number.php:263 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "Värdet mÃ¥ste vara lika med eller lägre än %d" + +#: includes/fields/class-acf-field-oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:237 +msgid "Enter URL" +msgstr "Fyll i URL" + +#: includes/fields/class-acf-field-oembed.php:250 +#: includes/fields/class-acf-field-taxonomy.php:904 +msgid "Error." +msgstr "Fel." + +#: includes/fields/class-acf-field-oembed.php:250 +msgid "No embed found for the given URL." +msgstr "Ingen embed hittades för angiven URL." + +#: includes/fields/class-acf-field-oembed.php:283 +#: includes/fields/class-acf-field-oembed.php:294 +msgid "Embed Size" +msgstr "Embed storlek" + +#: includes/fields/class-acf-field-page_link.php:192 +msgid "Archives" +msgstr "Arkiv" + +#: includes/fields/class-acf-field-page_link.php:500 +#: includes/fields/class-acf-field-post_object.php:399 +#: includes/fields/class-acf-field-relationship.php:704 +msgid "Filter by Post Type" +msgstr "Filtrera efter inläggstyp" + +#: includes/fields/class-acf-field-page_link.php:508 +#: includes/fields/class-acf-field-post_object.php:407 +#: includes/fields/class-acf-field-relationship.php:712 +msgid "All post types" +msgstr "Samtliga posttyper" + +#: includes/fields/class-acf-field-page_link.php:514 +#: includes/fields/class-acf-field-post_object.php:413 +#: includes/fields/class-acf-field-relationship.php:718 +msgid "Filter by Taxonomy" +msgstr "Filtrera efter taxonomi" + +#: includes/fields/class-acf-field-page_link.php:522 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-relationship.php:726 +msgid "All taxonomies" +msgstr "Samtliga taxonomier" + +#: includes/fields/class-acf-field-page_link.php:528 +#: includes/fields/class-acf-field-post_object.php:427 +#: includes/fields/class-acf-field-radio.php:259 +#: includes/fields/class-acf-field-select.php:484 +#: includes/fields/class-acf-field-taxonomy.php:799 +#: includes/fields/class-acf-field-user.php:423 +msgid "Allow Null?" +msgstr "TillÃ¥tt nollvärde?" + +#: includes/fields/class-acf-field-page_link.php:538 +msgid "Allow Archives URLs" +msgstr "TillÃ¥t urler frÃ¥n arkiv" + +#: includes/fields/class-acf-field-page_link.php:548 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-select.php:494 +#: includes/fields/class-acf-field-user.php:433 +msgid "Select multiple values?" +msgstr "Välj multipla värden?" + +#: includes/fields/class-acf-field-password.php:36 +msgid "Password" +msgstr "Lösenord" + +#: includes/fields/class-acf-field-post_object.php:36 +#: includes/fields/class-acf-field-post_object.php:452 +#: includes/fields/class-acf-field-relationship.php:783 +msgid "Post Object" +msgstr "Inläggsobjekt" + +#: includes/fields/class-acf-field-post_object.php:453 +#: includes/fields/class-acf-field-relationship.php:784 +msgid "Post ID" +msgstr "Inläggets ID" + +#: includes/fields/class-acf-field-radio.php:36 +msgid "Radio Button" +msgstr "Alternativknapp" + +#: includes/fields/class-acf-field-radio.php:269 +msgid "Other" +msgstr "Annat" + +#: includes/fields/class-acf-field-radio.php:274 +msgid "Add 'other' choice to allow for custom values" +msgstr "Lägg till värdet 'annat' för att tillÃ¥ta egna värden" + +#: includes/fields/class-acf-field-radio.php:280 +msgid "Save Other" +msgstr "Spara annat" + +#: includes/fields/class-acf-field-radio.php:285 +msgid "Save 'other' values to the field's choices" +msgstr "Spara 'annat'-värden till fältets alternativ" + +#: includes/fields/class-acf-field-relationship.php:36 +msgid "Relationship" +msgstr "Relation" + +#: includes/fields/class-acf-field-relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "Lägsta tillÃ¥tna antal värden nÃ¥tt ( {min} värden )" + +#: includes/fields/class-acf-field-relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "Högsta tillÃ¥tna antal värden uppnÃ¥tt ( {max} värden )" + +#: includes/fields/class-acf-field-relationship.php:50 +msgid "Loading" +msgstr "Laddar" + +#: includes/fields/class-acf-field-relationship.php:51 +msgid "No matches found" +msgstr "Inga träffar" + +#: includes/fields/class-acf-field-relationship.php:585 +msgid "Search..." +msgstr "Sök..." + +#: includes/fields/class-acf-field-relationship.php:594 +msgid "Select post type" +msgstr "Välj posttyp" + +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Select taxonomy" +msgstr "Välj taxonomi" + +#: includes/fields/class-acf-field-relationship.php:732 +msgid "Filters" +msgstr "Filter" + +#: includes/fields/class-acf-field-relationship.php:738 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Inläggstyp" + +#: includes/fields/class-acf-field-relationship.php:739 +#: includes/fields/class-acf-field-taxonomy.php:36 +#: includes/fields/class-acf-field-taxonomy.php:769 +msgid "Taxonomy" +msgstr "Taxonomi" + +#: includes/fields/class-acf-field-relationship.php:746 +msgid "Elements" +msgstr "Element" + +#: includes/fields/class-acf-field-relationship.php:747 +msgid "Selected elements will be displayed in each result" +msgstr "Valda element visas i varje resultat" + +#: includes/fields/class-acf-field-relationship.php:758 +msgid "Minimum posts" +msgstr "Minsta antal inlägg" + +#: includes/fields/class-acf-field-relationship.php:767 +msgid "Maximum posts" +msgstr "Högsta antal inlägg" + +#: includes/fields/class-acf-field-relationship.php:871 +#: pro/fields/class-acf-field-gallery.php:815 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s kräver minst %s val" +msgstr[1] "%s kräver minst %s val" + +#: includes/fields/class-acf-field-select.php:36 +#: includes/fields/class-acf-field-taxonomy.php:791 +msgctxt "noun" +msgid "Select" +msgstr "Flerväljare" + +#: includes/fields/class-acf-field-select.php:49 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Ett resultat, tryck enter för att välja det." + +#: includes/fields/class-acf-field-select.php:50 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d resultat, använd upp och ned pilarna för att navigera." + +#: includes/fields/class-acf-field-select.php:51 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Inget resultat" + +#: includes/fields/class-acf-field-select.php:52 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Vänligen skriv in 1 eller fler bokstäver" + +#: includes/fields/class-acf-field-select.php:53 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Vänligen skriv in %d eller fler bokstäver" + +#: includes/fields/class-acf-field-select.php:54 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Vänligen radera 1 bokstav" + +#: includes/fields/class-acf-field-select.php:55 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Vänligen radera %d bokstäver" + +#: includes/fields/class-acf-field-select.php:56 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Du kan bara välja 1 resultat" + +#: includes/fields/class-acf-field-select.php:57 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Du kan bara välja %d resultat" + +#: includes/fields/class-acf-field-select.php:58 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Laddar fler resultat" + +#: includes/fields/class-acf-field-select.php:59 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Söker…" + +#: includes/fields/class-acf-field-select.php:60 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Laddning misslyckades" + +#: includes/fields/class-acf-field-select.php:270 includes/media.php:54 +msgctxt "verb" +msgid "Select" +msgstr "Välj" + +#: includes/fields/class-acf-field-select.php:504 +#: includes/fields/class-acf-field-true_false.php:159 +msgid "Stylised UI" +msgstr "Stylat utseende" + +#: includes/fields/class-acf-field-select.php:514 +msgid "Use AJAX to lazy load choices?" +msgstr "Använda AJAX för att ladda alternativ efter att sidan laddats?" + +#: includes/fields/class-acf-field-select.php:525 +msgid "Specify the value returned" +msgstr "Specificera värdet att returnera" + +#: includes/fields/class-acf-field-separator.php:36 +msgid "Separator" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:36 +msgid "Tab" +msgstr "Flik" + +#: includes/fields/class-acf-field-tab.php:96 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "" +"Flik fältet kommer att visas felaktigt om de läggs till ett upprepningsfält " +"med tabellutseende eller ett innehÃ¥llsfält med flexibel layout" + +#: includes/fields/class-acf-field-tab.php:97 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "" +"Använd \"Flikfält\" för att bättre organisera din redigeringsvy genom att " +"gruppera fälten tillsammans." + +#: includes/fields/class-acf-field-tab.php:98 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" +"Alla fält efter detta \"flikfält\" (eller fram till nästa \"flikfält\") " +"kommer att grupperas tillsammans genom fältets titel som flikrubrik." + +#: includes/fields/class-acf-field-tab.php:112 +msgid "Placement" +msgstr "Placering" + +#: includes/fields/class-acf-field-tab.php:124 +msgid "End-point" +msgstr "Slutpunkt" + +#: includes/fields/class-acf-field-tab.php:125 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "Använd detta fält som slutpunkt och starta en ny grupp flikar" + +#: includes/fields/class-acf-field-taxonomy.php:719 +#: includes/fields/class-acf-field-true_false.php:95 +#: includes/fields/class-acf-field-true_false.php:184 includes/input.php:266 +#: pro/admin/views/html-settings-updates.php:103 +msgid "No" +msgstr "Nej" + +#: includes/fields/class-acf-field-taxonomy.php:738 +msgid "None" +msgstr "Ingen" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Select the taxonomy to be displayed" +msgstr "Välj taxonomi som ska visas" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Appearance" +msgstr "Utseende" + +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Select the appearance of this field" +msgstr "Välj utseende för detta fält" + +#: includes/fields/class-acf-field-taxonomy.php:785 +msgid "Multiple Values" +msgstr "Multipla värden" + +#: includes/fields/class-acf-field-taxonomy.php:787 +msgid "Multi Select" +msgstr "Flerval" + +#: includes/fields/class-acf-field-taxonomy.php:789 +msgid "Single Value" +msgstr "Ett enda värde" + +#: includes/fields/class-acf-field-taxonomy.php:790 +msgid "Radio Buttons" +msgstr "Alternativknappar" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Create Terms" +msgstr "Skapa värden" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Allow new terms to be created whilst editing" +msgstr "TillÃ¥t att nya värden läggs till under redigering" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Save Terms" +msgstr "Spara värden" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Connect selected terms to the post" +msgstr "Koppla valda värden till inlägget" + +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Load Terms" +msgstr "Ladda värden" + +#: includes/fields/class-acf-field-taxonomy.php:830 +msgid "Load value from posts terms" +msgstr "Ladda värde frÃ¥n ett inläggs värden" + +#: includes/fields/class-acf-field-taxonomy.php:844 +msgid "Term Object" +msgstr "Term objekt" + +#: includes/fields/class-acf-field-taxonomy.php:845 +msgid "Term ID" +msgstr "Term ID" + +#: includes/fields/class-acf-field-taxonomy.php:904 +#, php-format +msgid "User unable to add new %s" +msgstr "Användare kan inte lägga till ny %s" + +#: includes/fields/class-acf-field-taxonomy.php:917 +#, php-format +msgid "%s already exists" +msgstr "%s finns redan" + +#: includes/fields/class-acf-field-taxonomy.php:958 +#, php-format +msgid "%s added" +msgstr "%s tillagt" + +#: includes/fields/class-acf-field-taxonomy.php:1003 +msgid "Add" +msgstr "Lägg till" + +#: includes/fields/class-acf-field-text.php:36 +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-text.php:178 +#: includes/fields/class-acf-field-textarea.php:157 +msgid "Character Limit" +msgstr "Maximalt antal tecken" + +#: includes/fields/class-acf-field-text.php:179 +#: includes/fields/class-acf-field-textarea.php:158 +msgid "Leave blank for no limit" +msgstr "Lämna tomt för att ha utan begränsning" + +#: includes/fields/class-acf-field-textarea.php:36 +msgid "Text Area" +msgstr "Textfält" + +#: includes/fields/class-acf-field-textarea.php:166 +msgid "Rows" +msgstr "Rader" + +#: includes/fields/class-acf-field-textarea.php:167 +msgid "Sets the textarea height" +msgstr "Välj textfältets höjd" + +#: includes/fields/class-acf-field-time_picker.php:36 +msgid "Time Picker" +msgstr "Tidväljare" + +#: includes/fields/class-acf-field-true_false.php:36 +msgid "True / False" +msgstr "Sant / Falskt" + +#: includes/fields/class-acf-field-true_false.php:94 +#: includes/fields/class-acf-field-true_false.php:174 includes/input.php:265 +#: pro/admin/views/html-settings-updates.php:93 +msgid "Yes" +msgstr "Ja" + +#: includes/fields/class-acf-field-true_false.php:142 +msgid "Displays text alongside the checkbox" +msgstr "Visa text bredvid kryssrutan" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "On Text" +msgstr "PÃ¥ text" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when active" +msgstr "Text som visas när valet är aktivt" + +#: includes/fields/class-acf-field-true_false.php:180 +msgid "Off Text" +msgstr "Av text" + +#: includes/fields/class-acf-field-true_false.php:181 +msgid "Text shown when inactive" +msgstr "Text som visas när valet är inaktivt" + +#: includes/fields/class-acf-field-url.php:36 +msgid "Url" +msgstr "Url" + +#: includes/fields/class-acf-field-url.php:165 +msgid "Value must be a valid URL" +msgstr "Värdet mÃ¥ste vara en giltig URL" + +#: includes/fields/class-acf-field-user.php:36 includes/locations.php:95 +msgid "User" +msgstr "Användare" + +#: includes/fields/class-acf-field-user.php:408 +msgid "Filter by role" +msgstr "Filtrera efter roll" + +#: includes/fields/class-acf-field-user.php:416 +msgid "All user roles" +msgstr "Alla användarroller" + +#: includes/fields/class-acf-field-wysiwyg.php:36 +msgid "Wysiwyg Editor" +msgstr "WYSIWYG-editor" + +#: includes/fields/class-acf-field-wysiwyg.php:385 +msgid "Visual" +msgstr "Visuellt" + +#: includes/fields/class-acf-field-wysiwyg.php:386 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Text" + +#: includes/fields/class-acf-field-wysiwyg.php:392 +msgid "Click to initialize TinyMCE" +msgstr "Klicka för att initialisera tinyMCE" + +#: includes/fields/class-acf-field-wysiwyg.php:445 +msgid "Tabs" +msgstr "Flikar" + +#: includes/fields/class-acf-field-wysiwyg.php:450 +msgid "Visual & Text" +msgstr "Visuellt & Text" + +#: includes/fields/class-acf-field-wysiwyg.php:451 +msgid "Visual Only" +msgstr "Endast visuellt" + +#: includes/fields/class-acf-field-wysiwyg.php:452 +msgid "Text Only" +msgstr "Endast text" + +#: includes/fields/class-acf-field-wysiwyg.php:459 +msgid "Toolbar" +msgstr "Verktygsfält" + +#: includes/fields/class-acf-field-wysiwyg.php:469 +msgid "Show Media Upload Buttons?" +msgstr "Visa knappar för uppladdning av media?" + +#: includes/fields/class-acf-field-wysiwyg.php:479 +msgid "Delay initialization?" +msgstr "Fördröj initialisering?" + +#: includes/fields/class-acf-field-wysiwyg.php:480 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "TinyMCE initialiseras inte förrän fältet klickas pÃ¥" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:304 +msgid "Edit field group" +msgstr "Redigera fältgrupp" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "Validera E-post" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:588 pro/options-page.php:81 +msgid "Update" +msgstr "Uppdatera" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Inlägg uppdaterat" + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "Skräppost Upptäckt" + +#: includes/input.php:258 +msgid "Expand Details" +msgstr "Visa detaljer" + +#: includes/input.php:259 +msgid "Collapse Details" +msgstr "Dölj detaljer" + +#: includes/input.php:260 +msgid "Validation successful" +msgstr "Validering lyckades" + +#: includes/input.php:261 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "Validering misslyckades" + +#: includes/input.php:262 +msgid "1 field requires attention" +msgstr "1 fält kräver din uppmärksamhet" + +#: includes/input.php:263 +#, php-format +msgid "%d fields require attention" +msgstr "%d fält kräver din uppmärksamhet" + +#: includes/input.php:264 +msgid "Restricted" +msgstr "Begränsad" + +#: includes/input.php:268 +msgid "Cancel" +msgstr "" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Inlägg" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Sida" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formulär" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Bilaga" + +#: includes/locations/class-acf-location-attachment.php:113 +#, php-format +msgid "All %s formats" +msgstr "" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Kommentar" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Inloggad användarroll" + +#: includes/locations/class-acf-location-current-user-role.php:114 +msgid "Super Admin" +msgstr "Superadministratör" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Inloggad användare" + +#: includes/locations/class-acf-location-current-user.php:101 +msgid "Logged in" +msgstr "Inloggad" + +#: includes/locations/class-acf-location-current-user.php:102 +msgid "Viewing front end" +msgstr "Visar framsida" + +#: includes/locations/class-acf-location-current-user.php:103 +msgid "Viewing back end" +msgstr "Visar baksida" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:113 +#, fuzzy +msgid "Menu Locations" +msgstr "Plats" + +#: includes/locations/class-acf-location-nav-menu.php:123 +msgid "Menus" +msgstr "" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Sidans förälder" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Sidmall" + +#: includes/locations/class-acf-location-page-template.php:102 +#: includes/locations/class-acf-location-post-template.php:156 +msgid "Default Template" +msgstr "Standardmall" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Sidtyp" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Front Page" +msgstr "Förstasida" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Posts Page" +msgstr "Inläggslistningssida" + +#: includes/locations/class-acf-location-page-type.php:151 +msgid "Top Level Page (no parent)" +msgstr "Toppsida (Ingen förälder)" + +#: includes/locations/class-acf-location-page-type.php:152 +msgid "Parent Page (has children)" +msgstr "Föräldersida (har undersidor)" + +#: includes/locations/class-acf-location-page-type.php:153 +msgid "Child Page (has parent)" +msgstr "Undersida (har föräldersida)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Inläggskategori" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Inläggsformat" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Inläggsstatus" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Inläggstaxonomi" + +#: includes/locations/class-acf-location-post-template.php:29 +#, fuzzy +msgid "Post Template" +msgstr "Sidmall" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Taxonomivärde" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Användarformulär" + +#: includes/locations/class-acf-location-user-form.php:92 +msgid "Add / Edit" +msgstr "Skapa / Redigera" + +#: includes/locations/class-acf-location-user-form.php:93 +msgid "Register" +msgstr "Registrera" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Användarroll" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Widget" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "Ändra" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "Uppdatera" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s värde är obligatorisk" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:196 +msgid "Publish" +msgstr "Publicera" + +#: pro/admin/admin-options-page.php:202 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Inga fältgrupper hittades för denna inställningssida. Skapa " +"en fältgrupp" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Fel. Kunde inte ansluta till uppdateringsservern" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:17 +msgid "Updates" +msgstr "Uppdateringar" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Deactivate License" +msgstr "Inaktivera licens" + +#: pro/admin/views/html-settings-updates.php:11 +msgid "Activate License" +msgstr "Aktivera licens" + +#: pro/admin/views/html-settings-updates.php:21 +msgid "License Information" +msgstr "Licensinformation" + +#: pro/admin/views/html-settings-updates.php:24 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"För att aktivera uppdateringar, vänligen fyll i din licensnyckel här " +"nedanför. Om du inte har en licensnyckel, vänligen gÃ¥ till sidan detaljer & priser" + +#: pro/admin/views/html-settings-updates.php:33 +msgid "License Key" +msgstr "Licensnyckel" + +#: pro/admin/views/html-settings-updates.php:65 +msgid "Update Information" +msgstr "Uppdateringsinformation" + +#: pro/admin/views/html-settings-updates.php:72 +msgid "Current Version" +msgstr "Nuvarande version" + +#: pro/admin/views/html-settings-updates.php:80 +msgid "Latest Version" +msgstr "Senaste version" + +#: pro/admin/views/html-settings-updates.php:88 +msgid "Update Available" +msgstr "Uppdatering tillgänglig" + +#: pro/admin/views/html-settings-updates.php:96 +msgid "Update Plugin" +msgstr "Uppdatera tillägg" + +#: pro/admin/views/html-settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "" +"Vänligen fyll i din licensnyckel här ovan för att lÃ¥sa upp uppdateringar" + +#: pro/admin/views/html-settings-updates.php:104 +msgid "Check Again" +msgstr "Kontrollera igen" + +#: pro/admin/views/html-settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "Uppgraderingsnotering" + +#: pro/fields/class-acf-field-clone.php:36 +msgctxt "noun" +msgid "Clone" +msgstr "Klon" + +#: pro/fields/class-acf-field-clone.php:858 +msgid "Select one or more fields you wish to clone" +msgstr "Välj ett eller fler fält du vill klona" + +#: pro/fields/class-acf-field-clone.php:875 +msgid "Display" +msgstr "Visa" + +#: pro/fields/class-acf-field-clone.php:876 +msgid "Specify the style used to render the clone field" +msgstr "Specificera stilen som ska användas för att skapa klonfältet" + +#: pro/fields/class-acf-field-clone.php:881 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Grupp (visar valda fält i en grupp i detta fält)" + +#: pro/fields/class-acf-field-clone.php:882 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Sömlös (ersätter detta fält med valda fält)" + +#: pro/fields/class-acf-field-clone.php:903 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Fälttitlar visas som %s" + +#: pro/fields/class-acf-field-clone.php:906 +msgid "Prefix Field Labels" +msgstr "Prefix fälttitlar" + +#: pro/fields/class-acf-field-clone.php:917 +#, php-format +msgid "Values will be saved as %s" +msgstr "Värden sparas som %s" + +#: pro/fields/class-acf-field-clone.php:920 +msgid "Prefix Field Names" +msgstr "Prefix fältnamn" + +#: pro/fields/class-acf-field-clone.php:1038 +msgid "Unknown field" +msgstr "Okänt fält" + +#: pro/fields/class-acf-field-clone.php:1077 +msgid "Unknown field group" +msgstr "Okänd fältgrupp" + +#: pro/fields/class-acf-field-clone.php:1081 +#, php-format +msgid "All fields from %s field group" +msgstr "Alla fält frÃ¥n %s fältgrupp" + +#: pro/fields/class-acf-field-flexible-content.php:42 +#: pro/fields/class-acf-field-repeater.php:230 +#: pro/fields/class-acf-field-repeater.php:534 +msgid "Add Row" +msgstr "Lägg till rad" + +#: pro/fields/class-acf-field-flexible-content.php:45 +msgid "layout" +msgstr "layout" + +#: pro/fields/class-acf-field-flexible-content.php:46 +msgid "layouts" +msgstr "layouter" + +#: pro/fields/class-acf-field-flexible-content.php:47 +msgid "remove {layout}?" +msgstr "radera {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "Detta fält kräver minst {min} {identifierare}" + +#: pro/fields/class-acf-field-flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "Detta fält har en gräns pÃ¥ {max} {identifierare}" + +#: pro/fields/class-acf-field-flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Detta fält kräver minst {min} {etikett} {identifierare}" + +#: pro/fields/class-acf-field-flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "Maximal {etikett} gräns nÃ¥tts ({max} {identifierare})" + +#: pro/fields/class-acf-field-flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{tillgänglig} {etikett} {identifierare} tillgänglig (max {max})" + +#: pro/fields/class-acf-field-flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{krävs} {etikett} {identifierare} krävs (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:54 +msgid "Flexible Content requires at least 1 layout" +msgstr "Flexibelt innehÃ¥ll kräver minst 1 layout" + +#: pro/fields/class-acf-field-flexible-content.php:288 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "Klicka pÃ¥ knappen \"%s\" nedan för att börja skapa din layout" + +#: pro/fields/class-acf-field-flexible-content.php:423 +msgid "Add layout" +msgstr "Lägg till layout" + +#: pro/fields/class-acf-field-flexible-content.php:424 +msgid "Remove layout" +msgstr "Radera layout" + +#: pro/fields/class-acf-field-flexible-content.php:425 +#: pro/fields/class-acf-field-repeater.php:360 +msgid "Click to toggle" +msgstr "Klicka för att växla" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder Layout" +msgstr "Ändra layoutens ordning" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Reorder" +msgstr "Ändra ordning" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Delete Layout" +msgstr "Radera layout" + +#: pro/fields/class-acf-field-flexible-content.php:573 +msgid "Duplicate Layout" +msgstr "Kopiera layout" + +#: pro/fields/class-acf-field-flexible-content.php:574 +msgid "Add New Layout" +msgstr "Lägg till ny layout" + +#: pro/fields/class-acf-field-flexible-content.php:645 +msgid "Min" +msgstr "Min" + +#: pro/fields/class-acf-field-flexible-content.php:658 +msgid "Max" +msgstr "Max" + +#: pro/fields/class-acf-field-flexible-content.php:685 +#: pro/fields/class-acf-field-repeater.php:530 +msgid "Button Label" +msgstr "Knapp etikett" + +#: pro/fields/class-acf-field-flexible-content.php:694 +msgid "Minimum Layouts" +msgstr "Lägsta tillÃ¥tna antal layouter" + +#: pro/fields/class-acf-field-flexible-content.php:703 +msgid "Maximum Layouts" +msgstr "Högsta tillÃ¥tna antal layouter" + +#: pro/fields/class-acf-field-gallery.php:52 +msgid "Add Image to Gallery" +msgstr "Lägg till en bild till galleri" + +#: pro/fields/class-acf-field-gallery.php:56 +msgid "Maximum selection reached" +msgstr "Högsta tillÃ¥tna antal val uppnÃ¥tt" + +#: pro/fields/class-acf-field-gallery.php:336 +msgid "Length" +msgstr "Längd" + +#: pro/fields/class-acf-field-gallery.php:379 +msgid "Caption" +msgstr "Bildtext" + +#: pro/fields/class-acf-field-gallery.php:388 +msgid "Alt Text" +msgstr "Alt Text" + +#: pro/fields/class-acf-field-gallery.php:559 +msgid "Add to gallery" +msgstr "Lägg till galleri" + +#: pro/fields/class-acf-field-gallery.php:563 +msgid "Bulk actions" +msgstr "Välj Ã¥tgärd" + +#: pro/fields/class-acf-field-gallery.php:564 +msgid "Sort by date uploaded" +msgstr "Sortera efter uppladdningsdatum" + +#: pro/fields/class-acf-field-gallery.php:565 +msgid "Sort by date modified" +msgstr "Sortera efter redigeringsdatum" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Sort by title" +msgstr "Sortera efter titel" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Reverse current order" +msgstr "Omvänd nuvarande ordning" + +#: pro/fields/class-acf-field-gallery.php:585 +msgid "Close" +msgstr "Stäng" + +#: pro/fields/class-acf-field-gallery.php:639 +msgid "Minimum Selection" +msgstr "Minsta tillÃ¥tna antal val" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Maximum Selection" +msgstr "Högsta tillÃ¥tna antal val" + +#: pro/fields/class-acf-field-gallery.php:657 +msgid "Insert" +msgstr "Infoga" + +#: pro/fields/class-acf-field-gallery.php:658 +msgid "Specify where new attachments are added" +msgstr "Specifiera var nya bilagor läggs till" + +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Append to the end" +msgstr "Lägg till i slutet" + +#: pro/fields/class-acf-field-gallery.php:663 +msgid "Prepend to the beginning" +msgstr "Lägg till början" + +#: pro/fields/class-acf-field-repeater.php:47 +msgid "Minimum rows reached ({min} rows)" +msgstr "Minsta tillÃ¥tna antal rader uppnÃ¥tt ({min} rader)" + +#: pro/fields/class-acf-field-repeater.php:48 +msgid "Maximum rows reached ({max} rows)" +msgstr "Högsta tillÃ¥tna antal rader uppnÃ¥tt ({max} rader)" + +#: pro/fields/class-acf-field-repeater.php:405 +msgid "Add row" +msgstr "Lägg till rad" + +#: pro/fields/class-acf-field-repeater.php:406 +msgid "Remove row" +msgstr "Radera rad" + +#: pro/fields/class-acf-field-repeater.php:483 +msgid "Collapsed" +msgstr "Kollapsa" + +#: pro/fields/class-acf-field-repeater.php:484 +msgid "Select a sub field to show when row is collapsed" +msgstr "Välj ett underfält att visa när raden är kollapsad" + +#: pro/fields/class-acf-field-repeater.php:494 +msgid "Minimum Rows" +msgstr "Minsta tillÃ¥tna antal rader" + +#: pro/fields/class-acf-field-repeater.php:504 +msgid "Maximum Rows" +msgstr "Högsta tillÃ¥tna antal rader" + +#: pro/locations/class-acf-location-options-page.php:70 +msgid "No options pages exist" +msgstr "Det finns inga inställningssidor" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Alternativ" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Inställningar uppdaterade" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"För att aktivera uppdateringar, vänligen fyll i din licensnyckel pÃ¥ sidan uppdateringar. Om du inte har en licensnyckel, vänligen gÃ¥ " +"till sidan detaljer & priser" + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "Features" +#~ msgstr "Funktioner" + +#~ msgid "How to" +#~ msgstr "Instruktioner" + +#~ msgid "Term meta upgrade not possible (termmeta table does not exist)" +#~ msgstr "" +#~ "Term meta uppgradering ej möjligt (termmeta tabellen existerar inte)" + +#~ msgid "" +#~ "Error validating ACF PRO license URL (website does not match). Please re-" +#~ "activate your license" +#~ msgstr "" +#~ "Fel vid validering av ACF PRO licens URL (Sajten överensstämmer inte). " +#~ "Vänligen aktivera din licens pÃ¥ nytt" + +#~ msgid "Getting Started" +#~ msgstr "Kom igÃ¥ng" + +#~ msgid "Field Types" +#~ msgstr "Fälttyper" + +#~ msgid "Functions" +#~ msgstr "Funktioner" + +#~ msgid "Actions" +#~ msgstr "Actions" + +#~ msgid "Tutorials" +#~ msgstr "Handledningar" + +#~ msgid "FAQ" +#~ msgstr "FrÃ¥gor & Svar" + +#~ msgid "Error" +#~ msgstr "Fel" + +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "1 fält kräver din uppmärksamhet" +#~ msgstr[1] "%d fält kräver din uppmärksamhet" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-tr_TR.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-tr_TR.mo new file mode 100644 index 0000000000000000000000000000000000000000..05091760fff9f81a7af04e1e3979d114b2553bda GIT binary patch literal 51705 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

                          _{e0P_EBDxz()Ne?Yug_hRsE+=nm&Mz*>ZNo! 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 k=Hx}cdFS*k@1G5py\n" +"Language-Team: Emre Erkan \n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.1.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "Advanced Custom Fields" + +#: acf.php:363 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "Alan grupları" + +#: acf.php:364 +msgid "Field Group" +msgstr "Alan grubu" + +#: acf.php:365 acf.php:397 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New" +msgstr "Yeni ekle" + +#: acf.php:366 +msgid "Add New Field Group" +msgstr "Yeni alan grubu ekle" + +#: acf.php:367 +msgid "Edit Field Group" +msgstr "Alan grubunu düzenle" + +#: acf.php:368 +msgid "New Field Group" +msgstr "Yeni alan grubu" + +#: acf.php:369 +msgid "View Field Group" +msgstr "Alan grubunu görüntüle" + +#: acf.php:370 +msgid "Search Field Groups" +msgstr "Alan gruplarında ara" + +#: acf.php:371 +msgid "No Field Groups found" +msgstr "Hiç alan grubu bulunamadı" + +#: acf.php:372 +msgid "No Field Groups found in Trash" +msgstr "Çöpte alan grubu bulunamadı" + +#: acf.php:395 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:529 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "Alanlar" + +#: acf.php:396 +msgid "Field" +msgstr "Alan" + +#: acf.php:398 +msgid "Add New Field" +msgstr "Yeni elan ekle" + +#: acf.php:399 +msgid "Edit Field" +msgstr "Alanı düzenle" + +#: acf.php:400 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "Yeni alan" + +#: acf.php:401 +msgid "View Field" +msgstr "Alanı görüntüle" + +#: acf.php:402 +msgid "Search Fields" +msgstr "Alanlarda ara" + +#: acf.php:403 +msgid "No Fields found" +msgstr "Hiç alan bulunamadı" + +#: acf.php:404 +msgid "No Fields found in Trash" +msgstr "Çöpte alan bulunamadı" + +#: acf.php:443 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:586 +msgid "Inactive" +msgstr "Etkin deÄŸil" + +#: acf.php:448 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Etkin olmayan (%s)" +msgstr[1] "Etkin olmayan (%s)" + +#: includes/acf-field-functions.php:823 +#: includes/admin/admin-field-group.php:178 +msgid "(no label)" +msgstr "(etiket yok)" + +#: includes/acf-field-group-functions.php:816 +#: includes/admin/admin-field-group.php:180 +msgid "copy" +msgstr "kopyala" + +#: includes/admin/admin-field-group.php:86 +#: includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "Alan grubu güncellendi." + +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "Alan grubu silindi." + +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "Alan grubu yayımlandı." + +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "Alan grubu kaydedildi." + +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "Alan grubu gönderildi." + +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "Alan grubu zamanlandı." + +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "Alan grubu taslağı güncellendi." + +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "Artık alan isimlerinin baÅŸlangıcında “field_†kullanılmayacak" + +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "Bu alan, üzerinde yapılan deÄŸiÅŸiklikler kaydedilene kadar taşınamaz" + +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "Alan grubu baÅŸlığı gerekli" + +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "Çöpe taşımak istediÄŸinizden emin misiniz?" + +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "Kullanılabilir aç-kapa alan yok" + +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "Özel alanı taşı" + +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "İşaretlendi" + +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "(bu alan)" + +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3990 +msgid "or" +msgstr "veya" + +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "BoÅŸ" + +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "Konum" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "Ayarlar" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "Alan anahtarları" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Etkin" + +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "Taşıma tamamlandı." + +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "%s alanı artık %s alan grubu altında bulunabilir" + +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "Pencereyi kapat" + +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "Lütfen bu alan için bir hedef seçin" + +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "Alanı taşı" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Etkin (%s)" +msgstr[1] "Etkin (%s)" + +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "Alan grubu çoÄŸaltıldı." +msgstr[1] "%s alan grubu çoÄŸaltıldı." + +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "Alan grubu eÅŸitlendi." +msgstr[1] "%s alan grubu eÅŸitlendi." + +#: includes/admin/admin-field-groups.php:413 +#: includes/admin/admin-field-groups.php:576 +msgid "Sync available" +msgstr "EÅŸitleme mevcut" + +#: includes/admin/admin-field-groups.php:526 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:372 +msgid "Title" +msgstr "BaÅŸlık" + +#: includes/admin/admin-field-groups.php:527 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:399 +msgid "Description" +msgstr "Açıklama" + +#: includes/admin/admin-field-groups.php:528 +msgid "Status" +msgstr "Durum" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "Güçlü, profesyonel ve sezgisel alanlar ile WordPress'i özelleÅŸtirin." + +#: includes/admin/admin-field-groups.php:628 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "DeÄŸiÅŸiklik kayıtları" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in version %s." +msgstr "%s sürümünde neler yeni bir göz atın." + +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "Kaynaklar" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "Websitesi" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "Belgeler" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "Destek" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "Pro" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "ACF ile oluÅŸturduÄŸunuz için teÅŸekkürler." + +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "Bu ögeyi çoÄŸalt" + +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate" +msgstr "ÇoÄŸalt" + +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "Ara" + +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "Seç %s" + +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "Alan grubunu eÅŸitle" + +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "EÅŸitle" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "Uygula" + +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "Toplu eylemler" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "Araçlar" + +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "Veritabanını güncelle" + +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "Siteleri incele ve güncelle" + +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "Özel alanlar" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "Bilgi" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Neler yeni" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "Alan gruplarını dışarı aktar" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "PHP oluÅŸtur" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "Hiç alan grubu seçilmemiÅŸ" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "1 alan grubu içeri aktarıldı." +msgstr[1] "%s alan grubu içeri aktarıldı." + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "Alan gruplarını seç" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Dışa aktarma ve sonra dışa aktarma yöntemini seçtikten sonra alan gruplarını " +"seçin. Sonra baÅŸka bir ACF yükleme içe bir .json dosyaya vermek için indirme " +"düğmesini kullanın. Tema yerleÅŸtirebilirsiniz PHP kodu aktarma düğmesini " +"kullanın." + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "Dışarı aktarım dosyası" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"AÅŸağıdaki kod seçilmiÅŸ alan grubu/grupları için yerel bir sürüm kaydetmek " +"için kullanılır. Yerel alan grubu daha hızlı yüklenme süreleri, sürüm " +"yönetimi ve dinamik alanlar/ayarlar gibi faydalar saÄŸlar. Yapmanız gereken " +"bu kodu kopyalayıp temanızın functions.php dosyasına eklemek ya da harici " +"bir dosya olarak temanıza dahil etmek." + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "Panoya kopyala" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "Kopyalandı" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "Alan gruplarını içeri aktar" + +#: includes/admin/tools/class-acf-admin-tool-import.php:47 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"İçeri aktarmak istediÄŸiniz Advanced Custom Fields JSON dosyasını seçin. " +"AÅŸağıdaki içeri aktar tuÅŸuna bastığınızda ACF alan gruplarını içeri " +"aktaracak." + +#: includes/admin/tools/class-acf-admin-tool-import.php:52 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "Dosya seç" + +#: includes/admin/tools/class-acf-admin-tool-import.php:62 +msgid "Import File" +msgstr "Dosyayı içeri aktar" + +#: includes/admin/tools/class-acf-admin-tool-import.php:85 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "Dosya seçilmedi" + +#: includes/admin/tools/class-acf-admin-tool-import.php:93 +msgid "Error uploading file. Please try again" +msgstr "Dosya yüklenirken hata oluÅŸtu. Lütfen tekrar deneyin" + +#: includes/admin/tools/class-acf-admin-tool-import.php:98 +msgid "Incorrect file type" +msgstr "Geçersiz dosya tipi" + +#: includes/admin/tools/class-acf-admin-tool-import.php:107 +msgid "Import file empty" +msgstr "İçe aktarılan dosya boÅŸ" + +#: includes/admin/tools/class-acf-admin-tool-import.php:138 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "1 alan grubu içeri aktarıldı" +msgstr[1] "%s alan grubu içeri aktarıldı" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "KoÅŸullu mantık" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "Alanı bu ÅŸart gerçekleÅŸirse göster" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "ve" + +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Kural grubu ekle" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:424 +#: pro/fields/class-acf-field-repeater.php:294 +msgid "Drag to reorder" +msgstr "Yeniden düzenlemek için sürükleyin" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "Alanı düzenle" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:359 +msgid "Edit" +msgstr "Düzenle" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "Alanı çoÄŸalt" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "Alanı baÅŸka gruba taşı" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "Taşı" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "Alanı sil" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete" +msgstr "Sil" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "Alan etiketi" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "Bu isim DÜZENLEME sayfasında görüntülenecek isimdir" + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "Alan adı" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Tek kelime, boÅŸluksuz. Alt çizgi ve tireye izin var" + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "Alan tipi" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "Yönergeler" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Yazarlara gösterilecek talimatlar. Veri gönderirken gösterilir" + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "Gerekli mi?" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "Kapsayıcı öznitelikleri" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "geniÅŸlik" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "sınıf" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "Alanı kapat" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "Sırala" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Label" +msgstr "Etiket" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:610 +msgid "Name" +msgstr "İsim" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Anahtar" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Tip" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Hiç alan yok. İlk alanınızı oluÅŸturmak için + Alan ekle " +"düğmesine tıklayın." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Alan ekle" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Kurallar" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Bu geliÅŸmiÅŸ özel alanları hangi düzenleme ekranlarının kullanacağını " +"belirlemek için bir kural seti oluÅŸturun" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Stil" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Standart (WP metabox)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Pürüzsüz (metabox yok)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "Pozisyon" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Yüksek (baÅŸlıktan sonra)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Normal (içerikten sonra)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Yan" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Etiket yerleÅŸtirme" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "Üste hizalı" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "Sola hizalı" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Yönerge yerleÅŸtirme" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Etiketlerin altında" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Alanlarının altında" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "Sıra no." + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Daha düşük sıralamaya sahip alan grupları daha önce görünür" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "Alan grubu listesinde görüntülenir" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "Kalıcı baÄŸlantı" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "İçerik düzenleyici" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "Özet" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "Tartışma" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "Yorumlar" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "Sürümler" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "Kısa isim" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "Yazar" + +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "Biçim" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "Sayfa öznitelikleri" + +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "Öne çıkarılmış görsel" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "Kategoriler" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "Etiketler" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "Geri izlemeleri gönder" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "Ekranda gizle" + +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "Düzenleme ekranından gizlemek istediÄŸiniz ögeleri seçin." + +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"EÄŸer düzenleme ekranında birden çok alan grubu ortaya çıkarsa, ilk alan " +"grubunun seçenekleri kullanılır (en düşük sıralama numarasına sahip olan)" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" +"Åžu siteler için VT güncellemesi gerekiyor. Güncellemek istediklerinizi " +"iÅŸaretleyin ve %s tuÅŸuna basın." + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "Siteleri yükselt" + +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "Site" + +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "Site için %s sürümünden %s sürümüne veritabanı güncellemesi gerekiyor" + +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "Site güncel" + +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" +"Veritabanı güncellemesi tamamlandı. AÄŸ panosuna geri dön" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "Lütfen yükseltmek için en az site seçin." + +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" +"Devam etmeden önce veritabanınızı yedeklemeniz önemle önerilir. " +"GüncelleÅŸtiriciyi ÅŸimdi çalıştırmak istediÄŸinizden emin misiniz?" + +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "Veri %s sürümüne yükseltiliyor" + +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "Yükseltme baÅŸarılı." + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "Yükseltme baÅŸarısız oldu." + +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "Yükseltme görevlerini okuyor..." + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "" +"Veritabanı güncellemesi tamamlandı. Neler yeni bir göz atın" + +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "Güncelleme yok." + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "Tüm araçlara geri dön" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Bu alan grubunu ÅŸu koÅŸulda göster" + +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Tekrarlayıcı" + +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Esnek içerik" + +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "Galeri" + +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Seçenekler sayfası" + +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "Veritabanı yükseltmesi gerekiyor" + +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "%s v%s sürümüne güncellediÄŸiniz için teÅŸekkür ederiz!" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "" +"Bu sürüm veritabanınız için iyileÅŸtirmeler içeriyor ve yükseltme " +"gerektiriyor." + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "" +"Lütfen ayrıca premium eklentilerin de (%s) en üst sürüme güncellendiÄŸinden " +"emin olun." + +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "Eklentiler" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "İndir ve yükle" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Yüklendi" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Advanced Custom Fields eklentisine hoÅŸ geldiniz" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" +"Güncelleme için teÅŸekkür ederiz! ACF %s zamankinden daha büyük ve daha iyi. " +"Umarız beÄŸenirsiniz." + +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "Daha pürüzsüz bir deneyim" + +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "GeliÅŸtirilmiÅŸ kullanılabilirlik" + +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Popüler Select2 kütüphanesini ekleyerek yazı nesnesi, sayfa baÄŸlantısı, " +"taksonomi ve seçim kutusu gibi bir çok alan tipinde hem kullanışlılık hem de " +"hız iyileÅŸtirmeleri gerçekleÅŸti." + +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "GeliÅŸtirilmiÅŸ tasarım" + +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" +"ACF daha iyi görünsün diye bir çok alan görsel yenilemeden geçirildi! Gözle " +"görülür deÄŸiÅŸiklikler galeri, iliÅŸki ve oEmbed (yeni) alanlarında!" + +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "GeliÅŸtirilmiÅŸ veri" + +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"Veri mimarisinin yeniden düzenlenmesi sayesinde alt alanlar üst alanlara " +"baÄŸlı olmadan var olabiliyorlar. Bu da üst alanların dışına sürükle bırak " +"yapılabilmesine olanak saÄŸlıyor!" + +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "Elveda eklentiler. Merhaba PRO" + +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "Karşınızda ACF PRO" + +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" +"Premium iÅŸlevlerin size ulaÅŸtırılmasını daha heyecanlı bir hale getiriyoruz!" + +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"Yeni ACF Pro sürümününe 4 premium eklenti dahil edildi. " +"Hem kiÅŸisel hem geliÅŸtirici lisansında, özel beceriler hiç olmadığı kadar " +"edinilebilir ve eriÅŸilebilir!" + +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "Güçlü özellikler" + +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF PRO, tekrarlanabilir veri, esnek içerik yerleÅŸimleri, harika bir galeri " +"alanı ve ekstra yönetim seçenekleri sayfaları oluÅŸturma gibi güçlü " +"özellikler içerir!" + +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "ACF PRO özellikleri hakkında daha fazlasını okuyun." + +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "Kolay yükseltme" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" +"ACF PRO’ya yükseltmek çok kolay. Çevrimiçi bir lisans satın alın ve " +"eklentiyi indirin!" + +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" +"Her türlü soruya cevap verebilecek bir yükseltme rehberi " +"hazırladık, fakat yine de bir sorunuz varsa lütfen yardım " +"masasını kullanarak destek ekibimize danışın." + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "Yeni özellikler" + +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "BaÄŸlantı alanı" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" +"BaÄŸlantı alanı bir baÄŸlantı (adres, baÅŸlık, hedef) seçmek ya da tanımlamak " +"için basit bir yol sunar." + +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "Grup alanı" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "Grup alanı birden çok alanı basitçe gruplamanıza olanak saÄŸlar." + +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "oEmbed alanı" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" +"oEmbed alanı videolar, görseller, tweetler, ses ve diÄŸer içeriÄŸi kolayca " +"gömebilmenizi saÄŸlar." + +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "Kopya alanı" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "Kopya alanı var olan alanları seçme ve görüntülemenize olanak saÄŸlar." + +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "Daha fazla AJAX" + +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "" +"Sayfa yüklenmesini hızlandırmak adına daha çok alan AJAX ile güçlendirilmiÅŸ " +"arama kullanıyor." + +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "Yerel JSON" + +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" +"Yeni otomatik JSON dışarı aktarma özelliÄŸi ile hız artıyor ve " +"senkronizasyona imkan saÄŸlanıyor." + +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "Kolayca içe / dışa aktarma" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "" +"İçeri ve dışarı aktarma iÅŸlemleri yeni araçlar sayfasından kolayca " +"yapılabilir." + +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "Yeni form konumları" + +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" +"Alanlar artık menülere, menü elemanlarına, yorumlara, bileÅŸenlere ve tüm " +"kullanıcı formlarına eÅŸlenebiliyor!" + +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "Daha fazla özelleÅŸtirme" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" +"Daha fazla özelleÅŸtirmeye izin veren yeni PHP (ve JS) eylem ve filtreleri " +"eklendi." + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "Taze arayüz" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "" +"Eklentinin tasarımı yeni alan tipleri, ayarlar ve tasarımı da içerecek " +"ÅŸekilde yenilendi!" + +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "Yeni ayarlar" + +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" +"Etkin, etiket yerleÅŸimi, talimatlar yerleÅŸimi ve açıklama için alan grubu " +"ayarları eklendi." + +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "Daha iyi ön yüz formları" + +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" +"acf_form() artık gönderim halinde bir sürü yeni ayar ile yeni bir yazı " +"oluÅŸturabilir." + +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "Daha iyi doÄŸrulama" + +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "Form doÄŸrulama artık sadece JS yerine PHP + AJAX ile yapılıyor." + +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "Taşınabilir alanlar" + +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" +"Yeni gruplama becerisi, bir alanı gruplar ve üst alanlar arasında " +"taşıyabilmenize olanak saÄŸlar." + +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "%s sürümündeki deÄŸiÅŸiklikleri seveceÄŸinizi düşünüyoruz." + +#: includes/api/api-helpers.php:1011 +msgid "Thumbnail" +msgstr "Küçük görsel" + +#: includes/api/api-helpers.php:1012 +msgid "Medium" +msgstr "Orta" + +#: includes/api/api-helpers.php:1013 +msgid "Large" +msgstr "Büyük" + +#: includes/api/api-helpers.php:1062 +msgid "Full Size" +msgstr "Tam boyut" + +#: includes/api/api-helpers.php:1831 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "(baÅŸlıksız)" + +#: includes/api/api-helpers.php:3911 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "Görsel geniÅŸliÄŸi en az %dpx olmalı." + +#: includes/api/api-helpers.php:3916 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "Görsel geniÅŸliÄŸi %dpx deÄŸerini geçmemeli." + +#: includes/api/api-helpers.php:3932 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "Görsel yüksekliÄŸi en az %dpx olmalı." + +#: includes/api/api-helpers.php:3937 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "Görsel yüksekliÄŸi %dpx deÄŸerini geçmemeli." + +#: includes/api/api-helpers.php:3955 +#, php-format +msgid "File size must be at least %s." +msgstr "Dosya boyutu en az %s olmalı." + +#: includes/api/api-helpers.php:3960 +#, php-format +msgid "File size must must not exceed %s." +msgstr "Dosya boyutu %s boyutunu geçmemeli." + +#: includes/api/api-helpers.php:3994 +#, php-format +msgid "File type must be %s." +msgstr "Dosya tipi %s olmalı." + +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" +"Bu sayfadan baÅŸka bir sayfaya geçerseniz yaptığınız deÄŸiÅŸiklikler kaybolacak" + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "Seç" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "Düzenle" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "Güncelle" + +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "Bu yazıya yüklenmiÅŸ" + +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "Ayrıntıları geniÅŸlet" + +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "Detayları daralt" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "Kısıtlı" + +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "Tüm görseller" + +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "DoÄŸrulama baÅŸarılı" + +#: includes/assets.php:182 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "DoÄŸrulama baÅŸarısız" + +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "1 alan dikkatinizi gerektiriyor" + +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "%d alan dikkatinizi gerektiriyor" + +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "Emin misiniz?" + +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Evet" + +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "Hayır" + +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:360 +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Remove" +msgstr "Kaldır" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "İptal" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "Herhangi bir deÄŸer" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "Hiçbir deÄŸer" + +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "DeÄŸer eÅŸitse" + +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "DeÄŸer eÅŸit deÄŸilse" + +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "DeÄŸer bir desenle eÅŸleÅŸir" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "DeÄŸer içeriyor" + +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "DeÄŸer daha büyük" + +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "DeÄŸer daha az" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "Seçin daha büyük" + +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "Seçim daha az" + +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "Alan grubunu düzenle" + +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "Var olmayan alan tipi" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "Bilinmiyor" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "Basit" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "İçerik" + +#: includes/fields.php:351 +msgid "Choice" +msgstr "Seçim" + +#: includes/fields.php:352 +msgid "Relational" +msgstr "İliÅŸkisel" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "jQuery" + +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:567 +#: pro/fields/class-acf-field-flexible-content.php:616 +#: pro/fields/class-acf-field-repeater.php:443 +msgid "Layout" +msgstr "YerleÅŸim" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "Akordeon" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "Açık" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "Sayfa yüklemesi sırasında bu akordeonu açık olarak görüntüle." + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "Çoklu geniÅŸletme" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "Bu akordeonun diÄŸerlerini kapatmadan açılmasını saÄŸla." + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "Uç nokta" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" +"Önceki akordeonun durması için bir son nokta tanımlayın. Bu akordeon " +"görüntülenmeyecek." + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "TuÅŸ grubu" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "Seçimler" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "Her seçeneÄŸi yeni bir satıra girin." + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" +"Daha fazla kontrol için, hem bir deÄŸeri hem de bir etiketi ÅŸu ÅŸekilde " +"belirtebilirsiniz:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "kirmizi : Kırmızı" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "BoÅŸ geçilebilir mi?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "Varsayılan deÄŸer" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "Yeni bir yazı oluÅŸtururken görünür" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "Yatay" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "Dikey" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "Dönüş deÄŸeri" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "Ön yüzden dönecek deÄŸeri belirleyin" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "DeÄŸer" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "İkisi de (Dizi)" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "İşaret kutusu" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Tümünü aç/kapat" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Yeni seçenek ekle" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "Özel deÄŸere izin ver" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "‘Özel’ alanların eklenebilmesine izin ver" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "Özel alanı kaydet" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "‘Özel’ deÄŸerleri alanın seçenekleri arasına kaydet" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "Her varsayılan deÄŸeri yeni bir satıra girin" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "Aç - kapat" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" +"En baÅŸa tüm seçimleri tersine çevirmek için ekstra bir seçim kutusu ekle" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Renk seçici" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "Temizle" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Varsayılan" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Renk seç" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Åžu anki renk" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Tarih seçici" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Tamam" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Bugün" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "İleri" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "Önceki" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "Hf" + +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Gösterim biçimi" + +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "Bir yazı düzenlenirken görüntülenecek biçim" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "Özel:" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "Biçimi kaydet" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "Bir deÄŸer kaydedilirken kullanılacak biçim" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +msgid "Return Format" +msgstr "Dönüş biçimi" + +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "Tema iÅŸlevlerinden dönen biçim" + +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "Hafta baÅŸlangıcı" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Tarih zaman seçici" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Zamanı se" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "Zaman" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "Saat" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "Dakika" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "Saniye" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "Milisaniye" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "Mikrosaniye" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "Zaman Dilimi" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "Åžimdi" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Tamam" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Seç" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "AM" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "A" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "PM" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "P" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "E-posta" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "Yer tutucu metin" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "Girdi alanının içinde görünür" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Önüne ekle" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "Girdi alanından önce görünür" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "Sonuna ekle" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "Girdi alanından sonra görünür" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Dosya" + +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "Dosya düzenle" + +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "Dosyayı güncelle" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "Dosya adı" + +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:708 +#: pro/fields/class-acf-field-gallery.php:737 +msgid "File size" +msgstr "Dosya boyutu" + +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "Dosya ekle" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "Dosya dizisi" + +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "Dosya adresi" + +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "Dosya no" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:673 +msgid "Library" +msgstr "Kitaplık" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:674 +msgid "Limit the media library choice" +msgstr "Ortam kitaplığı seçimini sınırlayın" + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:679 +msgid "All" +msgstr "Tümü" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:680 +msgid "Uploaded to post" +msgstr "Yazıya yüklendi" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:687 +msgid "Minimum" +msgstr "En az" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "Yüklenebilecek dosyaları sınırlandırın" + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:716 +msgid "Maximum" +msgstr "En fazla" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:745 +msgid "Allowed file types" +msgstr "İzin verilen dosya tipleri" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:746 +msgid "Comma separated list. Leave blank for all types" +msgstr "Virgül ile ayrılmış liste. Tüm tipler için boÅŸ bırakın" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google haritası" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "Üzgünüz, bu tarayıcı konumlandırma desteklemiyor" + +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "Konumu temizle" + +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "Åžu anki konumu bul" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "Adres arayın…" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "Merkez" + +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "Haritayı ortala" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "YaklaÅŸ" + +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "Temel yaklaÅŸma seviyesini belirle" + +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:699 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Height" +msgstr "Yükseklik" + +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "Harita yüksekliÄŸini özelleÅŸtir" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Grup" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:379 +msgid "Sub Fields" +msgstr "Alt alanlar" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "Seçili alanları görüntülemek için kullanılacak stili belirtin" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:627 +#: pro/fields/class-acf-field-repeater.php:451 +msgid "Block" +msgstr "Blok" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:626 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Table" +msgstr "Tablo" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:452 +msgid "Row" +msgstr "Satır" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "Görsel" + +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "Görsel seç" + +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "Görseli düzenle" + +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "Görseli güncelle" + +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "Görsel seçilmedi" + +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "Görsel ekle" + +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "Görsel dizisi" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "Görsel adresi" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "Görsel no" + +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "Önizleme boyutu" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "Veri girilirken gösterilir" + +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Restrict which images can be uploaded" +msgstr "Hangi görsellerin yüklenebileceÄŸini sınırlandırın" + +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:691 +#: pro/fields/class-acf-field-gallery.php:720 +msgid "Width" +msgstr "GeniÅŸlik" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "BaÄŸlantı" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "BaÄŸlantı seç" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "Yeni pencerede/sekmede açılır" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "BaÄŸlantı dizisi" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "BaÄŸlantı adresi" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "Mesaj" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "Yeni satırlar" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Yeni satırların nasıl görüntüleneceÄŸini denetler" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Otomatik paragraf ekle" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Otomatik ekle <br>" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Biçimlendirme yok" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "HTML’i güvenli hale getir" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "Görünür metin olarak HTML kodlamasının görüntülenmesine izin ver" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "Sayı" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "En az deÄŸer" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "En fazla deÄŸer" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "Adım boyutu" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "DeÄŸer bir sayı olmalı" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "DeÄŸer %d deÄŸerine eÅŸit ya da daha büyük olmalı" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "DeÄŸer %d deÄŸerine eÅŸit ya da daha küçük olmalı" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "oEmbed" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "Adres girin" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "Gömme boyutu" + +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "Sayfa baÄŸlantısı" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "ArÅŸivler" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "Ebeveyn" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "Yazı tipine göre filtre" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "Tüm yazı tipleri" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "Taksonomiye göre filtre" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "Tüm taksonomiler" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "ArÅŸivler adresine izin ver" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "Birden çok deÄŸer seçilsin mi?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Parola" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "Yazı nesnesi" + +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "Yazı No" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "Radyo düğmesi" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "DiÄŸer" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Özel deÄŸerlere izin vermek için 'diÄŸer' seçeneÄŸi ekle" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "DiÄŸerini kaydet" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "‘DiÄŸer’ deÄŸerlerini alanın seçenekleri arasına kaydet" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Aralık" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "İliÅŸkili" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "En yüksek deÄŸerlere ulaşıldı ({max} deÄŸerleri)" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "Yükleniyor" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "EÅŸleÅŸme yok" + +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "Yazı tipi seç" + +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "Taksonomi seç" + +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "Ara…" + +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "Filtreler" + +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Yazı tipi" + +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "Taksonomi" + +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "Elemanlar" + +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "Her sonuç içinde seçilmiÅŸ elemanlar görüntülenir" + +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "En az gönderi" + +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "En fazla yazı" + +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:818 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s en az %s seçim gerektirir" +msgstr[1] "%s en az %s seçim gerektirir" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "Seçim" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "Bir sonuç bulundu, seçmek için enter tuÅŸuna basın." + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "%d sonuç bulundu. DolaÅŸmak için yukarı ve aÅŸağı okları kullanın." + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "EÅŸleÅŸme yok" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "Lütfen 1 veya daha fazla karakter girin" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "Lütfen %d veya daha fazla karakter girin" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "Lütfen 1 karakter silin" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "Lütfen %d karakter silin" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "Sadece 1 öğe seçebilirsiniz" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "Sadece %d öge seçebilirsiniz" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "Daha fazla sonuç yükleniyor…" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Aranıyor…" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "Yükleme baÅŸarısız oldu" + +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Stilize edilmiÅŸ kullanıcı arabirimi" + +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "Seçimlerin tembel yüklenmesi için AJAX kullanılsın mı?" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "Dönecek deÄŸeri belirt" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Ayraç" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Sekme" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "Konumlandırma" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" +"Önceki sekmelerin durması için bir uç nokta tanımlayın. Bu yeni sekmeler " +"için bir grup baÅŸlatacaktır." + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "%s yok" + +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "Görüntülenecek taksonomiyi seçin" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "Görünüm" + +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "Bu alanın görünümünü seçin" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "Çoklu deÄŸer" + +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "Çoklu seçim" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "Tek deÄŸer" + +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "Radyo düğmeleri" + +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "Terimleri oluÅŸtur" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "Düzenlenirken yeni terimlerin oluÅŸabilmesine izin ver" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "Terimleri kaydet" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "SeçilmiÅŸ terimleri yazıya baÄŸla" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "Terimleri yükle" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "Yazının terimlerinden deÄŸerleri yükle" + +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "Terim nesnesi" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "Terim no" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "Kullanıcı yeni %s ekleyemiyor" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "%s zaten mevcut" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "%s eklendi" + +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "Ekle" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "Metin" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Karakter limiti" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Limit olmaması için boÅŸ bırakın" + +#: includes/fields/class-acf-field-text.php:181 +#: includes/fields/class-acf-field-textarea.php:213 +#, php-format +msgid "Value must not exceed %d characters" +msgstr "DeÄŸer %d karakteri geçmemelidir" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "Metin alanı" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "Satırlar" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Metin alanı yüksekliÄŸini ayarla" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Zaman seçici" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "DoÄŸru / yanlış" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "İşaret kutusunun yanında görüntülenen metin" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "Açık metni" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "Etkinken görüntülenen metin" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "Kapalı metni" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "Etkin deÄŸilken görüntülenen metin" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "Web adresi" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "DeÄŸer geçerli bir web adresi olmalı" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "Kullanıcı" + +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "Kurala göre filtrele" + +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "Bütün kullanıcı rolleri" + +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "Kullanıcı dizisi" + +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "Kullanıcı nesnesi" + +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "Kullanıcı No" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Wysiwyg düzenleyici" + +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "Görsel" + +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "Metin" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "TinyMCE hazırlamak için tıklayın" + +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "Sekmeler" + +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "Görsel ve metin" + +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "Sadece görsel" + +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "Sadece metin" + +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "Araç çubuÄŸu" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "Ortam yükleme tuÅŸları gösterilsin mi?" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "Hazırlık geciktirilsin mi?" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "Alan tıklanana kadar TinyMCE hazırlanmayacak" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "E-postayı doÄŸrula" + +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:591 +#: pro/options-page.php:81 +msgid "Update" +msgstr "Güncelle" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Yazı güncellendi" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "İstenmeyen tespit edildi" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "Yazı" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Sayfa" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Formlar" + +#: includes/locations.php:243 +msgid "is equal to" +msgstr "eÅŸitse" + +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "eÅŸit deÄŸilse" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "Ek" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "Tüm %s biçimleri" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Yorum" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Åžu anki kullanıcı rolü" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Süper yönetici" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Åžu anki kullanıcı" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "GiriÅŸ yapıldı" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "Ön yüz görüntüleniyor" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "Arka yüz görüntüleniyor" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Menü ögesi" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Menü" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Menü konumları" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Menüler" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "Sayfa ebeveyni" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Sayfa ÅŸablonu" + +#: includes/locations/class-acf-location-page-template.php:87 +#: includes/locations/class-acf-location-post-template.php:134 +msgid "Default Template" +msgstr "Varsayılan ÅŸablon" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Sayfa tipi" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "Ön sayfa" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "Yazılar sayfası" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "Üst düzey sayfa (ebeveynsiz)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "Üst sayfa (alt sayfası olan)" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "Alt sayfa (ebeveyni olan)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "Yazı kategorisi" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Yazı biçimi" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Yazı durumu" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "Yazı taksonomisi" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "Yazı ÅŸablonu" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Kullanıcı formu" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Ekle / düzenle" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "Kaydet" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Kullanıcı kuralı" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "BileÅŸen" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "%s deÄŸeri gerekli" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields PRO" + +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "Yayımla" + +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Bu seçenekler sayfası için hiç özel alan grubu bulunamadı. Bir özel alan grubu oluÅŸtur" + +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr " Hata. Güncelleme sunucusu ile baÄŸlantı kurulamadı" + +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "Güncellemeler" + +#: pro/admin/admin-updates.php:191 +msgid "" +"Error. Could not authenticate update package. Please check again or " +"deactivate and reactivate your ACF PRO license." +msgstr "" +"Hata. Güncelleme paketi için kimlik doÄŸrulaması yapılamadı. Lütfen " +"ACF PRO lisansınızı kontrol edin ya da lisansınızı etkisizleÅŸtirip, tekrar " +"etkinleÅŸtirin." + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Lisansı devre dışı bırak" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Lisansı etkinleÅŸtir" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Lisans bilgisi" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Güncellemeleri açmak için lisans anahtarınızı aÅŸağıya girin. EÄŸer bir lisans " +"anahtarınız yoksa lütfen detaylar ve fiyatlama sayfasına bakın." + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Lisans anahtarı" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Güncelleme bilgisi" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Mevcut sürüm" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "En son sürüm" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "Güncelleme mevcut" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Eklentiyi güncelle" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "" +"GüncelleÅŸtirmelerin kilidini açmak için yukardaki alana lisans anahtarını " +"girin" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Tekrar kontrol et" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "Yükseltme bildirimi" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Kopyala" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "ÇoÄŸaltmak için bir ya da daha fazla alan seçin" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "Görüntüle" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "ÇoÄŸaltılacak alanın görünümü için stili belirleyin" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "Grup (bu alanın içinde seçili alanları grup olarak gösterir)" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "Pürüzsüz (bu alanı seçiÅŸmiÅŸ olan alanlarla deÄŸiÅŸtirir)" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "Etiketler %s olarak görüntülenir" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "Alan etiketlerine ön ek ekle" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "DeÄŸerler %s olarak kaydedilecek" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "Alan isimlerine ön ek ekle" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "Bilinmeyen alan" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "Bilinmeyen alan grubu" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "%s alan grubundaki tüm alanlar" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:463 +msgid "Add Row" +msgstr "Satır ekle" + +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:938 +#: pro/fields/class-acf-field-flexible-content.php:1020 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "yerleÅŸim" +msgstr[1] "yerleÅŸimler" + +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "yerleÅŸimler" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:937 +#: pro/fields/class-acf-field-flexible-content.php:1019 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "Bu alan için en az gereken {min} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "Bu alan için sınır {max} {label} {identifier}" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} kullanılabilir (en fazla {max})" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} gerekli (min {min})" + +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "Esnek içerik, en az 1 yerleÅŸim gerektirir" + +#: pro/fields/class-acf-field-flexible-content.php:302 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "" +"Kendi yerleÅŸiminizi oluÅŸturmaya baÅŸlamak için aÅŸağıdaki \"%s \" tuÅŸuna " +"tıklayın" + +#: pro/fields/class-acf-field-flexible-content.php:427 +msgid "Add layout" +msgstr "YerleÅŸim ekle" + +#: pro/fields/class-acf-field-flexible-content.php:428 +msgid "Remove layout" +msgstr "YerleÅŸimi çıkar" + +#: pro/fields/class-acf-field-flexible-content.php:429 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Click to toggle" +msgstr "GeçiÅŸ yapmak için tıklayın" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder Layout" +msgstr "YerleÅŸimi yeniden sırala" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder" +msgstr "Yeniden sırala" + +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete Layout" +msgstr "YerleÅŸimi sil" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate Layout" +msgstr "YerleÅŸimi çoÄŸalt" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New Layout" +msgstr "Yeni yerleÅŸim ekle" + +#: pro/fields/class-acf-field-flexible-content.php:643 +msgid "Min" +msgstr "En düşük" + +#: pro/fields/class-acf-field-flexible-content.php:656 +msgid "Max" +msgstr "En yüksek" + +#: pro/fields/class-acf-field-flexible-content.php:683 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Button Label" +msgstr "TuÅŸ etiketi" + +#: pro/fields/class-acf-field-flexible-content.php:692 +msgid "Minimum Layouts" +msgstr "En az yerleÅŸim" + +#: pro/fields/class-acf-field-flexible-content.php:701 +msgid "Maximum Layouts" +msgstr "En fazla yerleÅŸim" + +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "Galeriye görsel ekle" + +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "En fazla seçim aşıldı" + +#: pro/fields/class-acf-field-gallery.php:338 +msgid "Length" +msgstr "Uzunluk" + +#: pro/fields/class-acf-field-gallery.php:381 +msgid "Caption" +msgstr "BaÅŸlık" + +#: pro/fields/class-acf-field-gallery.php:390 +msgid "Alt Text" +msgstr "Alternatif metin" + +#: pro/fields/class-acf-field-gallery.php:562 +msgid "Add to gallery" +msgstr "Galeriye ekle" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Bulk actions" +msgstr "Toplu eylemler" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Sort by date uploaded" +msgstr "Yüklenme tarihine göre sırala" + +#: pro/fields/class-acf-field-gallery.php:568 +msgid "Sort by date modified" +msgstr "DeÄŸiÅŸtirme tarihine göre sırala" + +#: pro/fields/class-acf-field-gallery.php:569 +msgid "Sort by title" +msgstr "BaÅŸlığa göre sırala" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Reverse current order" +msgstr "Sıralamayı ters çevir" + +#: pro/fields/class-acf-field-gallery.php:588 +msgid "Close" +msgstr "Kapat" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum Selection" +msgstr "En az seçim" + +#: pro/fields/class-acf-field-gallery.php:651 +msgid "Maximum Selection" +msgstr "En fazla seçim" + +#: pro/fields/class-acf-field-gallery.php:660 +msgid "Insert" +msgstr "Ekle" + +#: pro/fields/class-acf-field-gallery.php:661 +msgid "Specify where new attachments are added" +msgstr "Yeni eklerin nereye ekleneceÄŸini belirtin" + +#: pro/fields/class-acf-field-gallery.php:665 +msgid "Append to the end" +msgstr "Sona ekle" + +#: pro/fields/class-acf-field-gallery.php:666 +msgid "Prepend to the beginning" +msgstr "En baÅŸa ekleyin" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:656 +msgid "Minimum rows reached ({min} rows)" +msgstr "En az satır sayısına ulaşıldı ({min} satır)" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "En fazla satır deÄŸerine ulaşıldı ({max} satır)" + +#: pro/fields/class-acf-field-repeater.php:333 +msgid "Add row" +msgstr "Satır ekle" + +#: pro/fields/class-acf-field-repeater.php:334 +msgid "Remove row" +msgstr "Satır çıkar" + +#: pro/fields/class-acf-field-repeater.php:412 +msgid "Collapsed" +msgstr "Daraltılmış" + +#: pro/fields/class-acf-field-repeater.php:413 +msgid "Select a sub field to show when row is collapsed" +msgstr "Satır toparlandığında görüntülenecek alt alanı seçin" + +#: pro/fields/class-acf-field-repeater.php:423 +msgid "Minimum Rows" +msgstr "En az satır" + +#: pro/fields/class-acf-field-repeater.php:433 +msgid "Maximum Rows" +msgstr "En fazla satır" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "Seçenekler sayfayı mevcut deÄŸil" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Seçenekler" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Seçenekler güncellendi" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Güncellemeleri etkinleÅŸtirmek için lütfen Güncellemeler " +"sayfasında lisans anahtarınızı girin. EÄŸer bir lisans anahtarınız yoksa " +"lütfen detaylar ve fiyatlama sayfasına bakın." + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "https://www.advancedcustomfields.com/" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "Elliot Condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#~ msgid "%s field group duplicated." +#~ msgid_plural "%s field groups duplicated." +#~ msgstr[0] "%s alan grubu çoÄŸaltıldı." +#~ msgstr[1] "%s alan grubu çoÄŸaltıldı." + +#~ msgid "%s field group synchronised." +#~ msgid_plural "%s field groups synchronised." +#~ msgstr[0] "%s alan grubu eÅŸitlendi." +#~ msgstr[1] "%s alan grubu eÅŸitlendi." + +#~ msgid "Error. Could not load add-ons list" +#~ msgstr "Hata. Eklenti listesi yüklenemedi" + +#~ msgid "Parent fields" +#~ msgstr "Üst alanlar" + +#~ msgid "Sibling fields" +#~ msgstr "KardeÅŸ alanlar" + +#~ msgid "Error validating request" +#~ msgstr "İstek doÄŸrulanırken hata oluÅŸtu" + +#~ msgid "Advanced Custom Fields Database Upgrade" +#~ msgstr "Advanced Custom Fields veritabanı güncellemesi" + +#~ msgid "" +#~ "Before you start using the new awesome features, please update your " +#~ "database to the newest version." +#~ msgstr "" +#~ "Yeni muhteÅŸem özellikleri kullanmadan önce lütfen veritabanınızı en yeni " +#~ "sürüme güncelleyin." + +#~ msgid "" +#~ "To help make upgrading easy, login to your store account and claim a free copy of ACF PRO!" +#~ msgstr "" +#~ "Yükseltmeyi kolaylaÅŸtırmak için maÄŸaza hesabınıza " +#~ "giriÅŸ yapın ve bir adet ücretsiz ACF PRO kopyası edinin!" + +#~ msgid "Under the Hood" +#~ msgstr "Kaputun altında" + +#~ msgid "Smarter field settings" +#~ msgstr "Daha akıllı alan ayarları" + +#~ msgid "ACF now saves its field settings as individual post objects" +#~ msgstr "ACF artık alan ayarlarını münferit yazı nesneleri olarak saklıyor" + +#~ msgid "Better version control" +#~ msgstr "Daha iyi sürüm kontrolü" + +#~ msgid "" +#~ "New auto export to JSON feature allows field settings to be version " +#~ "controlled" +#~ msgstr "" +#~ "Otomatik JSON dışarı aktarma özelliÄŸi sayesinde artık alan ayarları sürüm " +#~ "kontrolü ile yönetilebilir" + +#~ msgid "Swapped XML for JSON" +#~ msgstr "XML yerine JSON kullanımına geçildi" + +#~ msgid "Import / Export now uses JSON in favour of XML" +#~ msgstr "İçeri / dışarı aktarma artık XML yerine JSON kullanıyor" + +#~ msgid "New Forms" +#~ msgstr "Yeni formlar" + +#~ msgid "A new field for embedding content has been added" +#~ msgstr "Gömülü içerik için yeni bir alan eklendi" + +#~ msgid "New Gallery" +#~ msgstr "Yeni galeri" + +#~ msgid "The gallery field has undergone a much needed facelift" +#~ msgstr "Galeri alanı oldukça gerekli bir makyaj ile yenilendi" + +#~ msgid "Relationship Field" +#~ msgstr "İliÅŸkili alan" + +#~ msgid "" +#~ "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +#~ msgstr "'Filtreler' için yeni iliÅŸki ayarı (Arama, yazı tipi, taksonomi)" + +#~ msgid "New archives group in page_link field selection" +#~ msgstr "Yeni arÅŸivler page_link alanı seçiminde gruplanır" + +#~ msgid "Better Options Pages" +#~ msgstr "Daha iyi seçenekler sayfası" + +#~ msgid "" +#~ "New functions for options page allow creation of both parent and child " +#~ "menu pages" +#~ msgstr "" +#~ "Seçenekler sayfası için yeni iÅŸlevler sayesinde hem üst hem alt menü " +#~ "sayfaları oluÅŸturulabiliyor" + +#~ msgid "Export Field Groups to PHP" +#~ msgstr "Alan gruplarını PHP için dışa aktar" + +#~ msgid "Download export file" +#~ msgstr "Dışarı aktarma dosyasını indir" + +#~ msgid "Generate export code" +#~ msgstr "Dışarı aktarma kodu oluÅŸtur" + +#~ msgid "Import" +#~ msgstr "İçe aktar" + +#~ msgid "Locating" +#~ msgstr "Konum bulunuyor" + +#~ msgid "Error." +#~ msgstr "Hata." + +#~ msgid "No embed found for the given URL." +#~ msgstr "Verilen adres için gömülecek bir ÅŸey bulunamadı." + +#~ msgid "Minimum values reached ( {min} values )" +#~ msgstr "En düşün deÄŸerlere ulaşıldı ( {min} deÄŸerleri )" + +#~ msgid "" +#~ "The tab field will display incorrectly when added to a Table style " +#~ "repeater field or flexible content field layout" +#~ msgstr "" +#~ "Bir tablo stili tekrarlayıcı ya da esnek içerik alanı yerleÅŸimi " +#~ "eklendiÄŸinde sekme alanı yanlış görüntülenir" + +#~ msgid "" +#~ "Use \"Tab Fields\" to better organize your edit screen by grouping fields " +#~ "together." +#~ msgstr "" +#~ "“Sekme alanlarıâ€nı kullanarak düzenleme ekranında alanları gruplayıp daha " +#~ "kolay organize olun." + +#~ msgid "" +#~ "All fields following this \"tab field\" (or until another \"tab field\" " +#~ "is defined) will be grouped together using this field's label as the tab " +#~ "heading." +#~ msgstr "" +#~ "Bu “sekme alanıâ€nı takip eden (ya da baÅŸka bir “sekme alanı†tanımlıysa) " +#~ "tüm alanlar sekmenin baÅŸlığını etiket olarak kullanarak " +#~ "gruplandırılacaklar." + +#~ msgid "None" +#~ msgstr "Yok" + +#~ msgid "Taxonomy Term" +#~ msgstr "Taksonomi terimi" + +#~ msgid "remove {layout}?" +#~ msgstr "{layout} kaldırılsın mı?" + +#~ msgid "This field requires at least {min} {identifier}" +#~ msgstr "Bu alan için en az gereken {min} {identifier}" + +#~ msgid "Maximum {label} limit reached ({max} {identifier})" +#~ msgstr "En yüksek {label} sınırına ulaşıldı ({max} {identifier})" + +#~ msgid "Getting Started" +#~ msgstr "BaÅŸlarken" + +#~ msgid "Field Types" +#~ msgstr "Alan Tipleri" + +#~ msgid "Functions" +#~ msgstr "Fonksiyonlar" + +#~ msgid "Actions" +#~ msgstr "Eylemler" + +#~ msgid "Tutorials" +#~ msgstr "Örnekler" + +#~ msgid "Error" +#~ msgstr "Hata" + +#, fuzzy +#~| msgid "This field requires at least {min} {identifier}" +#~ msgid "1 field requires attention." +#~ msgid_plural "%d fields require attention." +#~ msgstr[0] "Bu alan gerektirir, en azından {min} {identifier}" +#~ msgstr[1] "Bu alan gerektirir, en azından {min} {identifier}" + +#~ msgid "Disabled" +#~ msgstr "Etkisiz" + +#~ msgid "See what's new in" +#~ msgstr "Neler yeni gözat" + +#~ msgid "version" +#~ msgstr "versiyon" + +#~ msgid "'How to' guides" +#~ msgstr "Nasıl Yapılır" + +#~ msgid "Created by" +#~ msgstr "OluÅŸturan" + +#~ msgid "Success. Import tool added %s field groups: %s" +#~ msgstr "BaÅŸarılı. İçe aktarma aracı %s alan gruplarını aktardı: %s" + +#~ msgid "" +#~ "Warning. Import tool detected %s field groups already exist and " +#~ "have been ignored: %s" +#~ msgstr "" +#~ "Uyarı . İçe aktarma aracı zaten var olan %s alan gruplarını tespit " +#~ "etti. Bu kayıtlar gözardı edildi: %s" + +#~ msgid "Upgrade" +#~ msgstr "Yükselt" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "Yeniden sıralama için sürükle ve bırak" + +#~ msgid "See what's new" +#~ msgstr "Neler yeni görün" + +#~ msgid "Show a different month" +#~ msgstr "BaÅŸka bir ay göster" + +#~ msgid "Return format" +#~ msgstr "Dönüş formatı" + +#~ msgid "uploaded to this post" +#~ msgstr "Bu yazıya yükledi" + +#~ msgid "File Size" +#~ msgstr "Dosya Boyutu" + +#~ msgid "No File selected" +#~ msgstr "Dosya seçilmedi" + +#~ msgid "" +#~ "Please note that all text will first be passed through the wp function " +#~ msgstr "Tüm metin ilk wp fonksiyonu sayesinde geçilecek unutmayın" + +#~ msgid "Warning" +#~ msgstr "Uyarı" + +#~ msgid "eg. Show extra content" +#~ msgstr "örn. Ekstra içerik göster" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr " BaÄŸlantı Hatası . Üzgünüm, lütfen tekrar deneyin" + +#~ msgid "Save Options" +#~ msgstr "Ayarları Kaydet" + +#~ msgid "License" +#~ msgstr "Lisans" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "GüncelleÅŸtirmeleri kilidini açmak için, aÅŸağıdaki lisans anahtarını " +#~ "girin. EÄŸer bir lisans anahtarı yoksa, lütfen" + +#~ msgid "details & pricing" +#~ msgstr "detaylar & fiyatlandırma" + +#~ msgid "Hide / Show All" +#~ msgstr "Gizle / Hepsini Göster" + +#~ msgid "Show Field Keys" +#~ msgstr "Alan Anahtarlarını Göster" + +#~ msgid "Pending Review" +#~ msgstr "İnceleme Bekliyor" + +#~ msgid "Draft" +#~ msgstr "Taslak" + +#~ msgid "Private" +#~ msgstr "Gizli" + +#~ msgid "Revision" +#~ msgstr "Revizyon" + +#~ msgid "Trash" +#~ msgstr "Çöp" + +#, fuzzy +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "Alan grupları oluÅŸturulma sırası
                          sırayla alttan yukarı" + +#~ msgid "ACF PRO Required" +#~ msgstr "ACF PRO Gerekli" + +#~ msgid "" +#~ "We have detected an issue which requires your attention: This website " +#~ "makes use of premium add-ons (%s) which are no longer compatible with ACF." +#~ msgstr "" +#~ "Biz dikkat gerektiren bir sorunu tespit ettik: Bu ​​web sitesi artık ACF " +#~ "ile uyumlu olan eklentileriyle (%s) kullanımını kolaylaÅŸtırır." + +#~ msgid "" +#~ "Don't panic, you can simply roll back the plugin and continue using ACF " +#~ "as you know it!" +#~ msgstr "" +#~ "Panik yapmayın, sadece eklenti geri almak ve bunu bildiÄŸiniz gibi ACF " +#~ "kullanmaya devam edebilirsiniz!" + +#~ msgid "Roll back to ACF v%s" +#~ msgstr "ACF v %s ye geri al" + +#~ msgid "Learn why ACF PRO is required for my site" +#~ msgstr "ACF PRO Sitem için neden gereklidir öğrenin" + +#~ msgid "Update Database" +#~ msgstr "Veritabanını Güncelle" + +#~ msgid "Data Upgrade" +#~ msgstr "Veri Yükseltme" + +#~ msgid "Data upgraded successfully." +#~ msgstr "Veri baÅŸarıyla yükseltildi." + +#~ msgid "Data is at the latest version." +#~ msgstr "Verinin en son sürümü." + +#~ msgid "1 required field below is empty" +#~ msgid_plural "%s required fields below are empty" +#~ msgstr[0] "%s Gerekli alan boÅŸ" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "Yazı Yükleme ve Kaydet Åžartları" + +#~ msgid "" +#~ "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "" +#~ "Yükleme deÄŸeri yazılar için terimlere dayalı ve kaydetme üzerindeki " +#~ "yazılar için ÅŸartlarını güncelleyecek" + +#, fuzzy +#~ msgid "image" +#~ msgstr "Resim" + +#, fuzzy +#~ msgid "expand_details" +#~ msgstr "Ayrıntıları GeniÅŸlet" + +#, fuzzy +#~ msgid "collapse_details" +#~ msgstr "Detayları Daralt" + +#, fuzzy +#~ msgid "relationship" +#~ msgstr "İliÅŸkili" + +#, fuzzy +#~ msgid "title_is_required" +#~ msgstr "Alan grubu için baÅŸlık gerekli" + +#, fuzzy +#~ msgid "move_field" +#~ msgstr "Alanı Taşı" + +#, fuzzy +#~ msgid "flexible_content" +#~ msgstr "Esnek İçerik" + +#, fuzzy +#~ msgid "gallery" +#~ msgstr "Galeri" + +#, fuzzy +#~ msgid "repeater" +#~ msgstr "Tekrarlayıcı" + +#, fuzzy +#~ msgid "Controls how HTML tags are rendered" +#~ msgstr "Yeni satırlar nasıl oluÅŸturulacağını denetler" + +#~ msgid "Custom field updated." +#~ msgstr "Özel alan güncellendi." + +#~ msgid "Custom field deleted." +#~ msgstr "Özel alan silindi." + +#~ msgid "Field group duplicated! Edit the new \"%s\" field group." +#~ msgstr "Alan grup çoÄŸaltıldı! Yeni \"%s \" alan grubu düzenleyin." + +#~ msgid "Import/Export" +#~ msgstr "İçe/Dışa Aktar" + +#~ msgid "Column Width" +#~ msgstr "Sütun GeniÅŸliÄŸi" + +#~ msgid "Attachment Details" +#~ msgstr "Ek Detayları" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-uk.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-uk.mo new file mode 100644 index 0000000000000000000000000000000000000000..a0fb2cdbf1a2ea8d1b4d149d89f4010c83f53ae2 GIT binary patch literal 33358 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 JZ-Xiv`ahM@@eBX} literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-uk.po b/wp-content/plugins/advanced-custom-fields/lang/acf-uk.po new file mode 100644 index 0000000..8dbafea --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-uk.po @@ -0,0 +1,3588 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2017-10-04 14:50+1000\n" +"PO-Revision-Date: 2018-02-06 10:06+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: skinik \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:67 +msgid "Advanced Custom Fields" +msgstr "Додаткові Ð¿Ð¾Ð»Ñ Pro" + +#: acf.php:369 includes/admin/admin.php:117 +msgid "Field Groups" +msgstr "Групи полів" + +#: acf.php:370 +msgid "Field Group" +msgstr "Група полів" + +#: acf.php:371 acf.php:403 includes/admin/admin.php:118 +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New" +msgstr "Додати нову" + +#: acf.php:372 +msgid "Add New Field Group" +msgstr "Додати нову групу полів" + +#: acf.php:373 +msgid "Edit Field Group" +msgstr "Редагувати групу полів" + +#: acf.php:374 +msgid "New Field Group" +msgstr "Ðова група полів" + +#: acf.php:375 +msgid "View Field Group" +msgstr "ПереглÑнути групу полів" + +#: acf.php:376 +msgid "Search Field Groups" +msgstr "Шукати групи полів" + +#: acf.php:377 +msgid "No Field Groups found" +msgstr "Ðе знайдено груп полів" + +#: acf.php:378 +msgid "No Field Groups found in Trash" +msgstr "У кошику немає груп полів" + +#: acf.php:401 includes/admin/admin-field-group.php:182 +#: includes/admin/admin-field-group.php:275 +#: includes/admin/admin-field-groups.php:510 +#: pro/fields/class-acf-field-clone.php:807 +msgid "Fields" +msgstr "ПолÑ" + +#: acf.php:402 +msgid "Field" +msgstr "Поле" + +#: acf.php:404 +msgid "Add New Field" +msgstr "Додати нове поле" + +#: acf.php:405 +msgid "Edit Field" +msgstr "Редагувати поле" + +#: acf.php:406 includes/admin/views/field-group-fields.php:41 +#: includes/admin/views/settings-info.php:105 +msgid "New Field" +msgstr "Ðове поле" + +#: acf.php:407 +msgid "View Field" +msgstr "ПереглÑнути\t поле" + +#: acf.php:408 +msgid "Search Fields" +msgstr "Шукати полÑ" + +#: acf.php:409 +msgid "No Fields found" +msgstr "Ðе знайдено полів" + +#: acf.php:410 +msgid "No Fields found in Trash" +msgstr "Ðе знайдено полів у кошику" + +#: acf.php:449 includes/admin/admin-field-group.php:390 +#: includes/admin/admin-field-groups.php:567 +msgid "Inactive" +msgstr "Ðеактивно" + +#: acf.php:454 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Ðеактивні (%s)" +msgstr[1] "Ðеактивні (%s)" +msgstr[2] "Ðеактивні (%s)" + +#: includes/admin/admin-field-group.php:68 +#: includes/admin/admin-field-group.php:69 +#: includes/admin/admin-field-group.php:71 +msgid "Field group updated." +msgstr "Групу полів оновлено." + +#: includes/admin/admin-field-group.php:70 +msgid "Field group deleted." +msgstr "Групу полів видалено." + +#: includes/admin/admin-field-group.php:73 +msgid "Field group published." +msgstr "Групу полів опубліковано." + +#: includes/admin/admin-field-group.php:74 +msgid "Field group saved." +msgstr "Групу полів збережено." + +#: includes/admin/admin-field-group.php:75 +msgid "Field group submitted." +msgstr "Групу полів надіÑлано." + +#: includes/admin/admin-field-group.php:76 +#, fuzzy +msgid "Field group scheduled for." +msgstr "Групу полів збережено." + +#: includes/admin/admin-field-group.php:77 +msgid "Field group draft updated." +msgstr "Чернетку групи полів оновлено." + +#: includes/admin/admin-field-group.php:183 +msgid "Location" +msgstr "РозміщеннÑ" + +#: includes/admin/admin-field-group.php:184 +msgid "Settings" +msgstr "ÐалаштуваннÑ" + +#: includes/admin/admin-field-group.php:269 +msgid "Move to trash. Are you sure?" +msgstr "ПереміÑтити в кошик. Ви впевнені?" + +#: includes/admin/admin-field-group.php:270 +msgid "checked" +msgstr "" + +#: includes/admin/admin-field-group.php:271 +msgid "No toggle fields available" +msgstr "" + +#: includes/admin/admin-field-group.php:272 +msgid "Field group title is required" +msgstr "Заголовок обов’Ñзковий" + +#: includes/admin/admin-field-group.php:273 +#: includes/api/api-field-group.php:751 +msgid "copy" +msgstr "копіювати" + +#: includes/admin/admin-field-group.php:274 +#: includes/admin/views/field-group-field-conditional-logic.php:54 +#: includes/admin/views/field-group-field-conditional-logic.php:154 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3964 +msgid "or" +msgstr "або" + +#: includes/admin/admin-field-group.php:276 +msgid "Parent fields" +msgstr "БатьківÑькі полÑ" + +#: includes/admin/admin-field-group.php:277 +msgid "Sibling fields" +msgstr "" + +#: includes/admin/admin-field-group.php:278 +msgid "Move Custom Field" +msgstr "ПереміÑтити поле" + +#: includes/admin/admin-field-group.php:279 +msgid "This field cannot be moved until its changes have been saved" +msgstr "" + +#: includes/admin/admin-field-group.php:280 +msgid "Null" +msgstr "" + +#: includes/admin/admin-field-group.php:281 includes/input.php:258 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" + +#: includes/admin/admin-field-group.php:282 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "" + +#: includes/admin/admin-field-group.php:360 +msgid "Field Keys" +msgstr "" + +#: includes/admin/admin-field-group.php:390 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "Ðктивно" + +#: includes/admin/admin-field-group.php:801 +msgid "Move Complete." +msgstr "ÐŸÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ðµ." + +#: includes/admin/admin-field-group.php:802 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "Поле «%s» можете знайти у групі «%s»" + +#: includes/admin/admin-field-group.php:803 +msgid "Close Window" +msgstr "Закрити вікно" + +#: includes/admin/admin-field-group.php:844 +msgid "Please select the destination for this field" +msgstr "Будь лаÑка, оберіть групу, в Ñку переміÑтити" + +#: includes/admin/admin-field-group.php:851 +msgid "Move Field" +msgstr "ПереміÑтити поле" + +#: includes/admin/admin-field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Ðктивні (%s)" +msgstr[1] "Ðктивні (%s)" +msgstr[2] "Ðктивні (%s)" + +#: includes/admin/admin-field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "" + +#: includes/admin/admin-field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/admin/admin-field-groups.php:227 +#, php-format +msgid "Field group synchronised. %s" +msgstr "" + +#: includes/admin/admin-field-groups.php:231 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/admin/admin-field-groups.php:394 +#: includes/admin/admin-field-groups.php:557 +msgid "Sync available" +msgstr "ДоÑтупна ÑинхронізаціÑ" + +#: includes/admin/admin-field-groups.php:507 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:355 +msgid "Title" +msgstr "Заголовок" + +#: includes/admin/admin-field-groups.php:508 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/install-network.php:21 +#: includes/admin/views/install-network.php:29 +#: pro/fields/class-acf-field-gallery.php:382 +msgid "Description" +msgstr "ОпиÑ" + +#: includes/admin/admin-field-groups.php:509 +msgid "Status" +msgstr "СтатуÑ" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:607 +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "" +"Розширте можливоÑті WordPress за допомогою потужних, профеÑійних та " +"інтуїтивно зрозумілих полів." + +#: includes/admin/admin-field-groups.php:609 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "СпиÑок змін" + +#: includes/admin/admin-field-groups.php:614 +#, php-format +msgid "See what's new in version %s." +msgstr "ПереглÑньте що нового у верÑÑ–Ñ— %s." + +#: includes/admin/admin-field-groups.php:617 +msgid "Resources" +msgstr "ДокументаціÑ" + +#: includes/admin/admin-field-groups.php:619 +msgid "Website" +msgstr "Сайт" + +#: includes/admin/admin-field-groups.php:620 +msgid "Documentation" +msgstr "ДокументаціÑ" + +#: includes/admin/admin-field-groups.php:621 +msgid "Support" +msgstr "Підтримка" + +#: includes/admin/admin-field-groups.php:623 +msgid "Pro" +msgstr "Про" + +#: includes/admin/admin-field-groups.php:628 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "СпаÑибі за викориÑÑ‚Ð°Ð½Ð½Ñ ACF." + +#: includes/admin/admin-field-groups.php:668 +msgid "Duplicate this item" +msgstr "Дублювати цей елемент" + +#: includes/admin/admin-field-groups.php:668 +#: includes/admin/admin-field-groups.php:684 +#: includes/admin/views/field-group-field.php:49 +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate" +msgstr "Дублювати" + +#: includes/admin/admin-field-groups.php:701 +#: includes/fields/class-acf-field-google-map.php:112 +#: includes/fields/class-acf-field-relationship.php:656 +msgid "Search" +msgstr "Пошук" + +#: includes/admin/admin-field-groups.php:760 +#, php-format +msgid "Select %s" +msgstr "" + +#: includes/admin/admin-field-groups.php:768 +msgid "Synchronise field group" +msgstr "" + +#: includes/admin/admin-field-groups.php:768 +#: includes/admin/admin-field-groups.php:798 +msgid "Sync" +msgstr "" + +#: includes/admin/admin-field-groups.php:780 +msgid "Apply" +msgstr "ЗаÑтоÑувати" + +#: includes/admin/admin-field-groups.php:798 +msgid "Bulk Actions" +msgstr "МаÑові дії" + +#: includes/admin/admin.php:113 +#: includes/admin/views/field-group-options.php:118 +msgid "Custom Fields" +msgstr "Додаткові полÑ" + +#: includes/admin/install-network.php:88 includes/admin/install.php:70 +#: includes/admin/install.php:121 +msgid "Upgrade Database" +msgstr "Оновити базу даних" + +#: includes/admin/install-network.php:140 +msgid "Review sites & upgrade" +msgstr "" + +#: includes/admin/install.php:187 +msgid "Error validating request" +msgstr "" + +#: includes/admin/install.php:210 includes/admin/views/install.php:105 +msgid "No updates available." +msgstr "Ðемає оновлень." + +#: includes/admin/settings-addons.php:51 +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "ДоповненнÑ" + +#: includes/admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "ІнформаціÑ" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "Що нового" + +#: includes/admin/settings-tools.php:50 +#: includes/admin/views/settings-tools-export.php:19 +#: includes/admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "ІнÑтрументи" + +#: includes/admin/settings-tools.php:147 includes/admin/settings-tools.php:380 +msgid "No field groups selected" +msgstr "Ðе обрано груп полів" + +#: includes/admin/settings-tools.php:184 +#: includes/fields/class-acf-field-file.php:155 +msgid "No file selected" +msgstr "Файл не обрано" + +#: includes/admin/settings-tools.php:197 +msgid "Error uploading file. Please try again" +msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ. Спробуйте знову" + +#: includes/admin/settings-tools.php:206 +msgid "Incorrect file type" +msgstr "Ðевірний тип файлу" + +#: includes/admin/settings-tools.php:223 +msgid "Import file empty" +msgstr "Файл імпорту порожній" + +#: includes/admin/settings-tools.php:331 +#, fuzzy, php-format +#| msgid "Import Field Groups" +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "Імпортувати групи полів" +msgstr[1] "Імпортувати групи полів" +msgstr[2] "Імпортувати групи полів" + +#: includes/admin/views/field-group-field-conditional-logic.php:28 +msgid "Conditional Logic" +msgstr "Умовна логіка" + +#: includes/admin/views/field-group-field-conditional-logic.php:54 +msgid "Show this field if" +msgstr "Показувати поле, Ñкщо" + +#: includes/admin/views/field-group-field-conditional-logic.php:103 +#: includes/locations.php:247 +msgid "is equal to" +msgstr "дорівнює" + +#: includes/admin/views/field-group-field-conditional-logic.php:104 +#: includes/locations.php:248 +msgid "is not equal to" +msgstr "не дорівнює" + +#: includes/admin/views/field-group-field-conditional-logic.php:141 +#: includes/admin/views/html-location-rule.php:80 +msgid "and" +msgstr "та" + +#: includes/admin/views/field-group-field-conditional-logic.php:156 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "Додати групу умов" + +#: includes/admin/views/field-group-field.php:41 +#: pro/fields/class-acf-field-flexible-content.php:403 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Drag to reorder" +msgstr "ПеретÑгніть, щоб змінити порÑдок" + +#: includes/admin/views/field-group-field.php:45 +#: includes/admin/views/field-group-field.php:48 +msgid "Edit field" +msgstr "Редагувати поле" + +#: includes/admin/views/field-group-field.php:48 +#: includes/fields/class-acf-field-file.php:137 +#: includes/fields/class-acf-field-image.php:122 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:342 +msgid "Edit" +msgstr "Редагувати" + +#: includes/admin/views/field-group-field.php:49 +msgid "Duplicate field" +msgstr "Дублювати поле" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move field to another group" +msgstr "ПереміÑтити поле до іншої групи" + +#: includes/admin/views/field-group-field.php:50 +msgid "Move" +msgstr "ПереміÑтити" + +#: includes/admin/views/field-group-field.php:51 +msgid "Delete field" +msgstr "Видалити поле" + +#: includes/admin/views/field-group-field.php:51 +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete" +msgstr "Видалити" + +#: includes/admin/views/field-group-field.php:67 +msgid "Field Label" +msgstr "Ðазва полÑ" + +#: includes/admin/views/field-group-field.php:68 +msgid "This is the name which will appear on the EDIT page" +msgstr "Ð¦Ñ Ð½Ð°Ð·Ð²Ð° відображуєтьÑÑ Ð½Ð° Ñторінці редагуваннÑ" + +#: includes/admin/views/field-group-field.php:77 +msgid "Field Name" +msgstr "Ярлик" + +#: includes/admin/views/field-group-field.php:78 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "Одне Ñлово, без пробілів. Можете викориÑтовувати нижнє підкреÑленнÑ." + +#: includes/admin/views/field-group-field.php:87 +msgid "Field Type" +msgstr "Тип полÑ" + +#: includes/admin/views/field-group-field.php:98 +#: includes/fields/class-acf-field-tab.php:88 +msgid "Instructions" +msgstr "ІнÑтрукціÑ" + +#: includes/admin/views/field-group-field.php:99 +msgid "Instructions for authors. Shown when submitting data" +msgstr "Ðапишіть короткий Ð¾Ð¿Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ" + +#: includes/admin/views/field-group-field.php:108 +msgid "Required?" +msgstr "Обов’Ñзкове?" + +#: includes/admin/views/field-group-field.php:131 +msgid "Wrapper Attributes" +msgstr "Ðтрибути обгортки" + +#: includes/admin/views/field-group-field.php:137 +msgid "width" +msgstr "ширина" + +#: includes/admin/views/field-group-field.php:152 +msgid "class" +msgstr "клаÑ" + +#: includes/admin/views/field-group-field.php:165 +msgid "id" +msgstr "id" + +#: includes/admin/views/field-group-field.php:177 +msgid "Close Field" +msgstr "Закрити поле" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "ПорÑдок" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:415 +#: includes/fields/class-acf-field-radio.php:306 +#: includes/fields/class-acf-field-select.php:432 +#: pro/fields/class-acf-field-flexible-content.php:582 +msgid "Label" +msgstr "Ярлик" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:964 +#: pro/fields/class-acf-field-flexible-content.php:595 +msgid "Name" +msgstr "Ðазва" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "Ключ" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "Тип" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" +"Ще немає полів. Ð”Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ñ–Ð² натиÑніть + Додати поле." + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "+ Додати поле" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "Умови" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" +"Створіть набір умов, щоб визначити де викориÑтовувати ці додаткові полÑ" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "Стиль" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "Стандартний (WP метабокÑ)" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "Спрощений (без метабокÑу)" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "РозташуваннÑ" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "Вгорі (під заголовком)" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "Стандартно (піÑÐ»Ñ Ñ‚ÐµÐºÑ‚Ð¾Ð²Ð¾Ð³Ð¾ редактора)" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "Збоку" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñрликів" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:102 +msgid "Top aligned" +msgstr "Зверху" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:103 +msgid "Left aligned" +msgstr "Зліва" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ–Ð½Ñтрукцій" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "Під Ñрликами" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "Під полÑми" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "ПорÑдок розташуваннÑ" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "Групи полів з нижчим порÑдком з’ÑвлÑтьÑÑ Ñпочатку" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "ВідображаєтьÑÑ Ð½Ð° Ñторінці груп полів" + +#: includes/admin/views/field-group-options.php:107 +msgid "Hide on screen" +msgstr "Ховати на екрані" + +#: includes/admin/views/field-group-options.php:108 +msgid "Select items to hide them from the edit screen." +msgstr "Оберіть що ховати з екрану редагуваннÑ/ÑтвореннÑ." + +#: includes/admin/views/field-group-options.php:108 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"Якщо декілька груп полів відображаютьÑÑ Ð½Ð° екрані редагуваннÑ, то " +"викориÑтовуватимутьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¸ першої групи. (з найменшим порÑдковим " +"номером)" + +#: includes/admin/views/field-group-options.php:115 +msgid "Permalink" +msgstr "ПоÑтійне поÑÐ¸Ð»Ð°Ð½Ð½Ñ " + +#: includes/admin/views/field-group-options.php:116 +msgid "Content Editor" +msgstr "Редактор матеріалу" + +#: includes/admin/views/field-group-options.php:117 +msgid "Excerpt" +msgstr "ВитÑг" + +#: includes/admin/views/field-group-options.php:119 +msgid "Discussion" +msgstr "ДиÑкуÑÑ–Ñ" + +#: includes/admin/views/field-group-options.php:120 +msgid "Comments" +msgstr "Коментарі" + +#: includes/admin/views/field-group-options.php:121 +msgid "Revisions" +msgstr "Ревізії" + +#: includes/admin/views/field-group-options.php:122 +msgid "Slug" +msgstr "Ярлик URL" + +#: includes/admin/views/field-group-options.php:123 +msgid "Author" +msgstr "Ðвтор" + +#: includes/admin/views/field-group-options.php:124 +msgid "Format" +msgstr "Формат" + +#: includes/admin/views/field-group-options.php:125 +msgid "Page Attributes" +msgstr "Ðтрибути Ñторінки" + +#: includes/admin/views/field-group-options.php:126 +#: includes/fields/class-acf-field-relationship.php:670 +msgid "Featured Image" +msgstr "Головне зображеннÑ" + +#: includes/admin/views/field-group-options.php:127 +msgid "Categories" +msgstr "Категорії" + +#: includes/admin/views/field-group-options.php:128 +msgid "Tags" +msgstr "Теґи" + +#: includes/admin/views/field-group-options.php:129 +msgid "Send Trackbacks" +msgstr "ÐадіÑлати трекбеки" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "Показувати групу полів, Ñкщо" + +#: includes/admin/views/install-network.php:4 +msgid "Upgrade Sites" +msgstr "Оновити Ñайти" + +#: includes/admin/views/install-network.php:9 +#: includes/admin/views/install.php:3 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "" + +#: includes/admin/views/install-network.php:11 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" + +#: includes/admin/views/install-network.php:20 +#: includes/admin/views/install-network.php:28 +msgid "Site" +msgstr "Сайт" + +#: includes/admin/views/install-network.php:48 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "" + +#: includes/admin/views/install-network.php:50 +msgid "Site is up to date" +msgstr "Сайт оновлено" + +#: includes/admin/views/install-network.php:63 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" + +#: includes/admin/views/install-network.php:102 +#: includes/admin/views/install-notice.php:42 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" + +#: includes/admin/views/install-network.php:158 +msgid "Upgrade complete" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¾" + +#: includes/admin/views/install-network.php:162 +#: includes/admin/views/install.php:9 +#, php-format +msgid "Upgrading data to version %s" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… до верÑÑ–Ñ— %s" + +#: includes/admin/views/install-notice.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "Повторювальне поле" + +#: includes/admin/views/install-notice.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "Гнучкий вміÑÑ‚" + +#: includes/admin/views/install-notice.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "ГалереÑ" + +#: includes/admin/views/install-notice.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "Сторінка опцій" + +#: includes/admin/views/install-notice.php:26 +msgid "Database Upgrade Required" +msgstr "Ðеобхідно оновити базу даних" + +#: includes/admin/views/install-notice.php:28 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "" + +#: includes/admin/views/install-notice.php:28 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "" + +#: includes/admin/views/install-notice.php:31 +#, php-format +msgid "" +"Please also ensure any premium add-ons (%s) have first been updated to the " +"latest version." +msgstr "" + +#: includes/admin/views/install.php:7 +msgid "Reading upgrade tasks..." +msgstr "" + +#: includes/admin/views/install.php:11 +#, php-format +msgid "Database Upgrade complete. See what's new" +msgstr "" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "Завантажити Ñ– вÑтановити" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "Ð’Ñтановлено" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "Вітаємо у Advanced Custom Fields" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "ДÑкуємо за оновленнÑ! ACF %s Ñтав ще кращим!" + +#: includes/admin/views/settings-info.php:17 +msgid "A smoother custom field experience" +msgstr "" + +#: includes/admin/views/settings-info.php:22 +msgid "Improved Usability" +msgstr "" + +#: includes/admin/views/settings-info.php:23 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" + +#: includes/admin/views/settings-info.php:27 +msgid "Improved Design" +msgstr "" + +#: includes/admin/views/settings-info.php:28 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" + +#: includes/admin/views/settings-info.php:32 +msgid "Improved Data" +msgstr "" + +#: includes/admin/views/settings-info.php:33 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" + +#: includes/admin/views/settings-info.php:39 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "До Ð¿Ð¾Ð±Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ. Привіт PRO" + +#: includes/admin/views/settings-info.php:44 +msgid "Introducing ACF PRO" +msgstr "" + +#: includes/admin/views/settings-info.php:45 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" + +#: includes/admin/views/settings-info.php:46 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" + +#: includes/admin/views/settings-info.php:50 +msgid "Powerful Features" +msgstr "Потужні можливоÑті" + +#: includes/admin/views/settings-info.php:51 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" + +#: includes/admin/views/settings-info.php:52 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "Прочитайте більше про можливоÑті ACF PRO." + +#: includes/admin/views/settings-info.php:56 +msgid "Easy Upgrading" +msgstr "Легке оновленнÑ" + +#: includes/admin/views/settings-info.php:57 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "" + +#: includes/admin/views/settings-info.php:58 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" + +#: includes/admin/views/settings-info.php:66 +msgid "Under the Hood" +msgstr "Під капотом" + +#: includes/admin/views/settings-info.php:71 +msgid "Smarter field settings" +msgstr "" + +#: includes/admin/views/settings-info.php:72 +msgid "ACF now saves its field settings as individual post objects" +msgstr "" + +#: includes/admin/views/settings-info.php:76 +msgid "More AJAX" +msgstr "Більше AJAX" + +#: includes/admin/views/settings-info.php:77 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "" + +#: includes/admin/views/settings-info.php:81 +msgid "Local JSON" +msgstr "Локальний JSON" + +#: includes/admin/views/settings-info.php:82 +msgid "New auto export to JSON feature improves speed" +msgstr "" + +#: includes/admin/views/settings-info.php:88 +msgid "Better version control" +msgstr "" + +#: includes/admin/views/settings-info.php:89 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "" + +#: includes/admin/views/settings-info.php:93 +msgid "Swapped XML for JSON" +msgstr "" + +#: includes/admin/views/settings-info.php:94 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "" + +#: includes/admin/views/settings-info.php:98 +msgid "New Forms" +msgstr "Ðові форми" + +#: includes/admin/views/settings-info.php:99 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "" + +#: includes/admin/views/settings-info.php:106 +msgid "A new field for embedding content has been added" +msgstr "" + +#: includes/admin/views/settings-info.php:110 +msgid "New Gallery" +msgstr "Ðова галереÑ" + +#: includes/admin/views/settings-info.php:111 +msgid "The gallery field has undergone a much needed facelift" +msgstr "" + +#: includes/admin/views/settings-info.php:115 +msgid "New Settings" +msgstr "Ðові налаштуваннÑ" + +#: includes/admin/views/settings-info.php:116 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "" + +#: includes/admin/views/settings-info.php:122 +msgid "Better Front End Forms" +msgstr "" + +#: includes/admin/views/settings-info.php:123 +msgid "acf_form() can now create a new post on submission" +msgstr "" + +#: includes/admin/views/settings-info.php:127 +msgid "Better Validation" +msgstr "Поліпшена перевірка" + +#: includes/admin/views/settings-info.php:128 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "Перевірка форми відбуваєтьÑÑ Ð½Ð° PHP + AJAX" + +#: includes/admin/views/settings-info.php:132 +#, fuzzy +msgid "Relationship Field" +msgstr "Закрити поле" + +#: includes/admin/views/settings-info.php:133 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "" + +#: includes/admin/views/settings-info.php:139 +msgid "Moving Fields" +msgstr "ÐŸÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ñ–Ð²" + +#: includes/admin/views/settings-info.php:140 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "" + +#: includes/admin/views/settings-info.php:144 +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñторінку" + +#: includes/admin/views/settings-info.php:145 +msgid "New archives group in page_link field selection" +msgstr "" + +#: includes/admin/views/settings-info.php:149 +msgid "Better Options Pages" +msgstr "Краща Ñторінка опцій" + +#: includes/admin/views/settings-info.php:150 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "" + +#: includes/admin/views/settings-info.php:159 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "Думаємо, Вам ÑподобаютьÑÑ Ð·Ð¼Ñ–Ð½Ð¸ у %s." + +#: includes/admin/views/settings-tools-export.php:23 +msgid "Export Field Groups to PHP" +msgstr "ЕкÑпортувати групи полів в код PHP" + +#: includes/admin/views/settings-tools-export.php:27 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" + +#: includes/admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "Оберіть групи полів" + +#: includes/admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "ЕкÑпортувати групи полів" + +#: includes/admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"Виберіть групи полів, Ñкі Ви хочете екÑпортувати, а далі оберіть бажаний " +"метод екÑпорту. ВикориÑтовуйте кнопку Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐµÐºÑпорту в файл ." +"json, Ñкий можна імпортувати до іншої інÑталÑції ACF. ВикориÑтовуйте кнопку " +"генерації Ð´Ð»Ñ ÐµÐºÑпорту в код PHP, Ñкий ви можете розміÑтити у Ñвоїй темі." + +#: includes/admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "Завантажити файл екÑпорту" + +#: includes/admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "Створити код екÑпорту" + +#: includes/admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "Імпортувати групи полів" + +#: includes/admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"Виберіть JSON файл, Ñкий Ви хотіли б імпортувати. При натиÑканні кнопки " +"імпорту, нижче, ACF буде імпортовано групи полів." + +#: includes/admin/views/settings-tools.php:77 +#: includes/fields/class-acf-field-file.php:35 +msgid "Select File" +msgstr "Оберіть файл" + +#: includes/admin/views/settings-tools.php:86 +msgid "Import" +msgstr "Імпорт" + +#: includes/api/api-helpers.php:856 +msgid "Thumbnail" +msgstr "Мініатюра" + +#: includes/api/api-helpers.php:857 +msgid "Medium" +msgstr "Середній" + +#: includes/api/api-helpers.php:858 +msgid "Large" +msgstr "Великий" + +#: includes/api/api-helpers.php:907 +msgid "Full Size" +msgstr "Повний розмір" + +#: includes/api/api-helpers.php:1248 includes/api/api-helpers.php:1831 +#: pro/fields/class-acf-field-clone.php:992 +msgid "(no title)" +msgstr "(без заголовку)" + +#: includes/api/api-helpers.php:1868 +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:268 +#: includes/fields/class-acf-field-taxonomy.php:986 +#, fuzzy +#| msgid "Page Parent" +msgid "Parent" +msgstr "БатьківÑька Ñторінка" + +#: includes/api/api-helpers.php:3885 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3890 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3906 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3911 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3929 +#, php-format +msgid "File size must be at least %s." +msgstr "" + +#: includes/api/api-helpers.php:3934 +#, php-format +msgid "File size must must not exceed %s." +msgstr "" + +#: includes/api/api-helpers.php:3968 +#, fuzzy, php-format +msgid "File type must be %s." +msgstr "Тип Ð¿Ð¾Ð»Ñ Ð½Ðµ Ñ–Ñнує" + +#: includes/fields.php:144 +msgid "Basic" +msgstr "Загальне" + +#: includes/fields.php:145 includes/forms/form-front.php:47 +msgid "Content" +msgstr "ВміÑÑ‚" + +#: includes/fields.php:146 +msgid "Choice" +msgstr "Вибір" + +#: includes/fields.php:147 +msgid "Relational" +msgstr "" + +#: includes/fields.php:148 +msgid "jQuery" +msgstr "" + +#: includes/fields.php:149 +#: includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:384 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:285 +#: pro/fields/class-acf-field-clone.php:839 +#: pro/fields/class-acf-field-flexible-content.php:552 +#: pro/fields/class-acf-field-flexible-content.php:601 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Layout" +msgstr "Шаблон Ñтруктури" + +#: includes/fields.php:326 +msgid "Field type does not exist" +msgstr "Тип Ð¿Ð¾Ð»Ñ Ð½Ðµ Ñ–Ñнує" + +#: includes/fields.php:326 +msgid "Unknown" +msgstr "Ðевідомо" + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "Група кнопок" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:368 +msgid "Choices" +msgstr "Варіанти вибору" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "Enter each choice on a new line." +msgstr "У кожному Ñ€Ñдку по варіанту" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "For more control, you may specify both a value and label like this:" +msgstr "Ð”Ð»Ñ Ð±Ñ–Ð»ÑŒÑˆÐ¾Ð³Ð¾ контролю, Ви можете вказати маркувати значеннÑ:" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:369 +msgid "red : Red" +msgstr "red : Червоний" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:412 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:386 +#: includes/fields/class-acf-field-taxonomy.php:793 +#: includes/fields/class-acf-field-user.php:408 +msgid "Allow Null?" +msgstr "Дозволити порожнє значеннÑ?" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:375 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:276 +#: includes/fields/class-acf-field-range.php:148 +#: includes/fields/class-acf-field-select.php:377 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:410 +msgid "Default Value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° замовчуваннÑм" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:277 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:411 +msgid "Appears when creating a new post" +msgstr "З'ÑвлÑєтьÑÑ Ð¿Ñ€Ð¸ Ñтворенні нового матеріалу" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:391 +#: includes/fields/class-acf-field-radio.php:292 +msgid "Horizontal" +msgstr "Горизонтально" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:390 +#: includes/fields/class-acf-field-radio.php:291 +msgid "Vertical" +msgstr "Вертикально" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:408 +#: includes/fields/class-acf-field-file.php:200 +#: includes/fields/class-acf-field-image.php:188 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:299 +#: includes/fields/class-acf-field-taxonomy.php:833 +msgid "Return Value" +msgstr "ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:409 +#: includes/fields/class-acf-field-file.php:201 +#: includes/fields/class-acf-field-image.php:189 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:300 +msgid "Specify the returned value on front end" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-radio.php:305 +#: includes/fields/class-acf-field-select.php:431 +msgid "Value" +msgstr "ЗначеннÑ" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:416 +#: includes/fields/class-acf-field-radio.php:307 +#: includes/fields/class-acf-field-select.php:433 +msgid "Both (Array)" +msgstr "Галочка" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:780 +msgid "Checkbox" +msgstr "Галочка" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "Вибрати вÑе" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "Додати новий вибір" + +#: includes/fields/class-acf-field-checkbox.php:353 +#, fuzzy +#| msgid "Allow Null?" +msgid "Allow Custom" +msgstr "Дозволити порожнє значеннÑ?" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:364 +#, fuzzy +#| msgid "Move Custom Field" +msgid "Save Custom" +msgstr "ПереміÑтити поле" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:376 +#: includes/fields/class-acf-field-select.php:378 +msgid "Enter each default value on a new line" +msgstr "Введіть значеннÑ. Одне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð² одному Ñ€Ñдку" + +#: includes/fields/class-acf-field-checkbox.php:398 +msgid "Toggle" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:399 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "Вибір кольору" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "ОчиÑтити" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° замовчуваннÑм" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "Обрати колір" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "Поточна колір" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "Вибір дати" + +#: includes/fields/class-acf-field-date_picker.php:33 +#, fuzzy +#| msgid "Done" +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "Готово" + +#: includes/fields/class-acf-field-date_picker.php:34 +#, fuzzy +#| msgid "Today" +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "Сьогодні" + +#: includes/fields/class-acf-field-date_picker.php:35 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:36 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:37 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:207 +#: includes/fields/class-acf-field-date_time_picker.php:181 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "Формат показу" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:182 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:216 +#: includes/fields/class-acf-field-date_picker.php:247 +#: includes/fields/class-acf-field-date_time_picker.php:191 +#: includes/fields/class-acf-field-date_time_picker.php:208 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +#, fuzzy +#| msgid "Custom Fields" +msgid "Custom:" +msgstr "Додаткові полÑ" + +#: includes/fields/class-acf-field-date_picker.php:226 +msgid "Save Format" +msgstr "Зберегти формат" + +#: includes/fields/class-acf-field-date_picker.php:227 +msgid "The format used when saving a value" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:237 +#: includes/fields/class-acf-field-date_time_picker.php:198 +#: includes/fields/class-acf-field-post_object.php:432 +#: includes/fields/class-acf-field-relationship.php:697 +#: includes/fields/class-acf-field-select.php:426 +#: includes/fields/class-acf-field-time_picker.php:124 +msgid "Return Format" +msgstr "Формат поверненнÑ" + +#: includes/fields/class-acf-field-date_picker.php:238 +#: includes/fields/class-acf-field-date_time_picker.php:199 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:256 +#: includes/fields/class-acf-field-date_time_picker.php:215 +msgid "Week Starts On" +msgstr "Тиждень починаєтьÑÑ Ð·" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "Вибір дати Ñ– чаÑу" + +#: includes/fields/class-acf-field-date_time_picker.php:33 +#, fuzzy +#| msgid "Close Field" +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "Закрити поле" + +#: includes/fields/class-acf-field-date_time_picker.php:34 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:35 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:36 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:37 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:38 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:39 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:40 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:41 +#, fuzzy +#| msgid "No" +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "ÐÑ–" + +#: includes/fields/class-acf-field-date_time_picker.php:42 +#, fuzzy +#| msgid "Done" +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "Готово" + +#: includes/fields/class-acf-field-date_time_picker.php:43 +#, fuzzy +#| msgid "Select File" +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "Оберіть файл" + +#: includes/fields/class-acf-field-date_time_picker.php:45 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:46 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:49 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:50 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "ПоказуєтьÑÑ, Ñкщо поле порожнє" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:187 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "Перед полем" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "РозміщуєтьÑÑ Ð½Ð° початку полÑ" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:196 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "ПіÑÐ»Ñ Ð¿Ð¾Ð»Ñ" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "РозміщуєтьÑÑ Ð² кінці полÑ" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "Файл" + +#: includes/fields/class-acf-field-file.php:36 +msgid "Edit File" +msgstr "Редагувати файл" + +#: includes/fields/class-acf-field-file.php:37 +msgid "Update File" +msgstr "Оновити файл" + +#: includes/fields/class-acf-field-file.php:38 +#: includes/fields/class-acf-field-image.php:43 includes/media.php:57 +#: pro/fields/class-acf-field-gallery.php:44 +msgid "Uploaded to this post" +msgstr "Завантажено до цього матеріалу" + +#: includes/fields/class-acf-field-file.php:126 +msgid "File name" +msgstr "Ðазва файлу" + +#: includes/fields/class-acf-field-file.php:130 +#: includes/fields/class-acf-field-file.php:233 +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: pro/fields/class-acf-field-gallery.php:690 +#: pro/fields/class-acf-field-gallery.php:719 +msgid "File size" +msgstr "Розмір файлу" + +#: includes/fields/class-acf-field-file.php:139 +#: includes/fields/class-acf-field-image.php:124 +#: includes/fields/class-acf-field-link.php:140 includes/input.php:269 +#: pro/fields/class-acf-field-gallery.php:343 +#: pro/fields/class-acf-field-gallery.php:531 +msgid "Remove" +msgstr "Видалити" + +#: includes/fields/class-acf-field-file.php:155 +msgid "Add File" +msgstr "Додати файл" + +#: includes/fields/class-acf-field-file.php:206 +msgid "File Array" +msgstr "МаÑив файлу" + +#: includes/fields/class-acf-field-file.php:207 +msgid "File URL" +msgstr "URL файлу" + +#: includes/fields/class-acf-field-file.php:208 +msgid "File ID" +msgstr "ID файлу" + +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:213 +#: pro/fields/class-acf-field-gallery.php:655 +msgid "Library" +msgstr "Бібліотека" + +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:214 +#: pro/fields/class-acf-field-gallery.php:656 +msgid "Limit the media library choice" +msgstr "" + +#: includes/fields/class-acf-field-file.php:221 +#: includes/fields/class-acf-field-image.php:219 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:661 +msgid "All" +msgstr "Ð’Ñе" + +#: includes/fields/class-acf-field-file.php:222 +#: includes/fields/class-acf-field-image.php:220 +#: pro/fields/class-acf-field-gallery.php:662 +msgid "Uploaded to post" +msgstr "Завантажено до матеріалу" + +#: includes/fields/class-acf-field-file.php:229 +#: includes/fields/class-acf-field-image.php:227 +#: pro/fields/class-acf-field-gallery.php:669 +msgid "Minimum" +msgstr "Мінімум" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-file.php:241 +msgid "Restrict which files can be uploaded" +msgstr "" + +#: includes/fields/class-acf-field-file.php:240 +#: includes/fields/class-acf-field-image.php:256 +#: pro/fields/class-acf-field-gallery.php:698 +msgid "Maximum" +msgstr "МакÑимум" + +#: includes/fields/class-acf-field-file.php:251 +#: includes/fields/class-acf-field-image.php:285 +#: pro/fields/class-acf-field-gallery.php:727 +msgid "Allowed file types" +msgstr "Дозволені типи файлів" + +#: includes/fields/class-acf-field-file.php:252 +#: includes/fields/class-acf-field-image.php:286 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "Google карта" + +#: includes/fields/class-acf-field-google-map.php:40 +msgid "Locating" +msgstr "РозміщеннÑ" + +#: includes/fields/class-acf-field-google-map.php:41 +msgid "Sorry, this browser does not support geolocation" +msgstr "Вибачте, цей браузер не підтримує автоматичне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð»Ð¾ÐºÐ°Ñ†Ñ–Ñ—" + +#: includes/fields/class-acf-field-google-map.php:113 +msgid "Clear location" +msgstr "ОчиÑтити розміщеннÑ" + +#: includes/fields/class-acf-field-google-map.php:114 +msgid "Find current location" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:117 +msgid "Search for address..." +msgstr "Шукати адреÑу..." + +#: includes/fields/class-acf-field-google-map.php:147 +#: includes/fields/class-acf-field-google-map.php:158 +msgid "Center" +msgstr "ЦентруваннÑ" + +#: includes/fields/class-acf-field-google-map.php:148 +#: includes/fields/class-acf-field-google-map.php:159 +msgid "Center the initial map" +msgstr "Початкове Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Zoom" +msgstr "ЗбільшеннÑ" + +#: includes/fields/class-acf-field-google-map.php:171 +msgid "Set the initial zoom level" +msgstr "Вкажіть початковий маÑштаб" + +#: includes/fields/class-acf-field-google-map.php:180 +#: includes/fields/class-acf-field-image.php:239 +#: includes/fields/class-acf-field-image.php:268 +#: includes/fields/class-acf-field-oembed.php:281 +#: pro/fields/class-acf-field-gallery.php:681 +#: pro/fields/class-acf-field-gallery.php:710 +msgid "Height" +msgstr "ВиÑота" + +#: includes/fields/class-acf-field-google-map.php:181 +msgid "Customise the map height" +msgstr "Ðалаштуйте виÑоту карти" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "Група" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:389 +msgid "Sub Fields" +msgstr "Дочірні полÑ" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:840 +msgid "Specify the style used to render the selected fields" +msgstr "" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:845 +#: pro/fields/class-acf-field-flexible-content.php:612 +#: pro/fields/class-acf-field-repeater.php:458 +msgid "Block" +msgstr "Блок" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:846 +#: pro/fields/class-acf-field-flexible-content.php:611 +#: pro/fields/class-acf-field-repeater.php:457 +msgid "Table" +msgstr "ТаблицÑ" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:847 +#: pro/fields/class-acf-field-flexible-content.php:613 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Row" +msgstr "РÑдок" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "ЗображеннÑ" + +#: includes/fields/class-acf-field-image.php:40 +msgid "Select Image" +msgstr "Обрати зображеннÑ" + +#: includes/fields/class-acf-field-image.php:41 +#: pro/fields/class-acf-field-gallery.php:42 +msgid "Edit Image" +msgstr "Редагувати зображеннÑ" + +#: includes/fields/class-acf-field-image.php:42 +#: pro/fields/class-acf-field-gallery.php:43 +msgid "Update Image" +msgstr "Оновити зображеннÑ" + +#: includes/fields/class-acf-field-image.php:44 +msgid "All images" +msgstr "УÑÑ– зображеннÑ" + +#: includes/fields/class-acf-field-image.php:140 +msgid "No image selected" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ обрано" + +#: includes/fields/class-acf-field-image.php:140 +msgid "Add Image" +msgstr "Додати зображеннÑ" + +#: includes/fields/class-acf-field-image.php:194 +msgid "Image Array" +msgstr "МаÑив зображеннÑ" + +#: includes/fields/class-acf-field-image.php:195 +msgid "Image URL" +msgstr "URL зображеннÑ" + +#: includes/fields/class-acf-field-image.php:196 +msgid "Image ID" +msgstr "ID зображеннÑ" + +#: includes/fields/class-acf-field-image.php:203 +msgid "Preview Size" +msgstr "Розмір мініатюр" + +#: includes/fields/class-acf-field-image.php:204 +msgid "Shown when entering data" +msgstr "" + +#: includes/fields/class-acf-field-image.php:228 +#: includes/fields/class-acf-field-image.php:257 +#: pro/fields/class-acf-field-gallery.php:670 +#: pro/fields/class-acf-field-gallery.php:699 +msgid "Restrict which images can be uploaded" +msgstr "" + +#: includes/fields/class-acf-field-image.php:231 +#: includes/fields/class-acf-field-image.php:260 +#: includes/fields/class-acf-field-oembed.php:270 +#: pro/fields/class-acf-field-gallery.php:673 +#: pro/fields/class-acf-field-gallery.php:702 +msgid "Width" +msgstr "Ширина" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "ПоÑиланнÑ" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "Оберіть поÑиланнÑ" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "МаÑив поÑиланнÑ" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "URL поÑиланнÑ" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "ПовідомленнÑ" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "ПеренеÑÐµÐ½Ð½Ñ Ñ€Ñдків" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "Вкажіть ÑпоÑіб обробки нових Ñ€Ñдків" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "Ðвтоматично додавати абзаци" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "Ðвтоматичне перенеÑÐµÐ½Ð½Ñ Ñ€Ñдків (додаєтьÑÑ Ñ‚ÐµÒ‘ <br>)" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "Без форматуваннÑ" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "ЧиÑло" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:157 +msgid "Minimum Value" +msgstr "Мінімальне значеннÑ" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:167 +msgid "Maximum Value" +msgstr "МакÑимальне значеннÑ" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:177 +msgid "Step Size" +msgstr "Розмір кроку" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” бути чиÑлом" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "" + +#: includes/fields/class-acf-field-oembed.php:219 +msgid "Enter URL" +msgstr "Введіть URL" + +#: includes/fields/class-acf-field-oembed.php:234 +#: includes/fields/class-acf-field-taxonomy.php:898 +msgid "Error." +msgstr "Помилка." + +#: includes/fields/class-acf-field-oembed.php:234 +msgid "No embed found for the given URL." +msgstr "" + +#: includes/fields/class-acf-field-oembed.php:267 +#: includes/fields/class-acf-field-oembed.php:278 +msgid "Embed Size" +msgstr "Розмір вÑтавки" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "Ðрхіви" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:384 +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Filter by Post Type" +msgstr "Фільтр за типом матеріалу" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:392 +#: includes/fields/class-acf-field-relationship.php:631 +msgid "All post types" +msgstr "Ð’ÑÑ– типи матеріалів" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:398 +#: includes/fields/class-acf-field-relationship.php:637 +msgid "Filter by Taxonomy" +msgstr "Фільтр за типом такÑономією" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:406 +#: includes/fields/class-acf-field-relationship.php:645 +msgid "All taxonomies" +msgstr "Ð’ÑÑ– такÑономії" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:422 +#: includes/fields/class-acf-field-select.php:396 +#: includes/fields/class-acf-field-user.php:418 +msgid "Select multiple values?" +msgstr "Дозволити множинний вибір?" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "Пароль" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:702 +msgid "Post Object" +msgstr "" + +#: includes/fields/class-acf-field-post_object.php:438 +#: includes/fields/class-acf-field-relationship.php:703 +msgid "Post ID" +msgstr "ID публікації" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "Інше" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "Додати вибір 'Інше', Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувацьких значень" + +#: includes/fields/class-acf-field-radio.php:265 +#, fuzzy +msgid "Save Other" +msgstr "Зберегти інше" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "Діапазон (Range)" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:37 +msgid "Minimum values reached ( {min} values )" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:38 +msgid "Maximum values reached ( {max} values )" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:39 +msgid "Loading" +msgstr "ЗавантаженнÑ" + +#: includes/fields/class-acf-field-relationship.php:40 +msgid "No matches found" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:423 +msgid "Select post type" +msgstr "Вибір типу матеріалу" + +#: includes/fields/class-acf-field-relationship.php:449 +msgid "Select taxonomy" +msgstr "Вибір такÑономії" + +#: includes/fields/class-acf-field-relationship.php:539 +msgid "Search..." +msgstr "Шукати..." + +#: includes/fields/class-acf-field-relationship.php:651 +msgid "Filters" +msgstr "Фільтри" + +#: includes/fields/class-acf-field-relationship.php:657 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "Тип матеріалу" + +#: includes/fields/class-acf-field-relationship.php:658 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:763 +msgid "Taxonomy" +msgstr "ТакÑономіÑ" + +#: includes/fields/class-acf-field-relationship.php:665 +msgid "Elements" +msgstr "Елементи" + +#: includes/fields/class-acf-field-relationship.php:666 +msgid "Selected elements will be displayed in each result" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:677 +msgid "Minimum posts" +msgstr "Мінімум матеріалів" + +#: includes/fields/class-acf-field-relationship.php:686 +msgid "Maximum posts" +msgstr "МакÑимум матеріалів" + +#: includes/fields/class-acf-field-relationship.php:790 +#: pro/fields/class-acf-field-gallery.php:800 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:785 +#, fuzzy +#| msgid "Select File" +msgctxt "noun" +msgid "Select" +msgstr "Оберіть файл" + +#: includes/fields/class-acf-field-select.php:38 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "" + +#: includes/fields/class-acf-field-select.php:39 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" + +#: includes/fields/class-acf-field-select.php:40 +#, fuzzy +#| msgid "No Fields found" +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "Ðе знайдено полів" + +#: includes/fields/class-acf-field-select.php:41 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:42 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:43 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "" + +#: includes/fields/class-acf-field-select.php:44 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:45 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "" + +#: includes/fields/class-acf-field-select.php:46 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "" + +#: includes/fields/class-acf-field-select.php:47 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "" + +#: includes/fields/class-acf-field-select.php:48 +#, fuzzy +#| msgid "Search Fields" +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "Шукати полÑ" + +#: includes/fields/class-acf-field-select.php:49 +#, fuzzy +#| msgid "Loading" +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "ЗавантаженнÑ" + +#: includes/fields/class-acf-field-select.php:255 includes/media.php:54 +#, fuzzy +#| msgid "Select File" +msgctxt "verb" +msgid "Select" +msgstr "Оберіть файл" + +#: includes/fields/class-acf-field-select.php:406 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "Покращений Ñтиль" + +#: includes/fields/class-acf-field-select.php:416 +msgid "Use AJAX to lazy load choices?" +msgstr "ВикориÑтати AJAX Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ?" + +#: includes/fields/class-acf-field-select.php:427 +msgid "Specify the value returned" +msgstr "" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "Розділювач" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "Вкладка" + +#: includes/fields/class-acf-field-tab.php:82 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:83 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "" + +#: includes/fields/class-acf-field-tab.php:84 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" + +#: includes/fields/class-acf-field-tab.php:98 +msgid "Placement" +msgstr "РозміщеннÑ" + +#: includes/fields/class-acf-field-tab.php:110 +msgid "End-point" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:111 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:713 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:732 +msgid "None" +msgstr "Ðічого" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Select the taxonomy to be displayed" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:773 +msgid "Appearance" +msgstr "ВиглÑд" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Select the appearance of this field" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:779 +msgid "Multiple Values" +msgstr "Множинний вибір" + +#: includes/fields/class-acf-field-taxonomy.php:781 +msgid "Multi Select" +msgstr "Множинний вибір" + +#: includes/fields/class-acf-field-taxonomy.php:783 +msgid "Single Value" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:784 +msgid "Radio Buttons" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:803 +msgid "Create Terms" +msgstr "Створити терміни" + +#: includes/fields/class-acf-field-taxonomy.php:804 +msgid "Allow new terms to be created whilst editing" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:813 +msgid "Save Terms" +msgstr "Зберегти терміни" + +#: includes/fields/class-acf-field-taxonomy.php:814 +msgid "Connect selected terms to the post" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:823 +msgid "Load Terms" +msgstr "Завантажити терміни" + +#: includes/fields/class-acf-field-taxonomy.php:824 +msgid "Load value from posts terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:838 +msgid "Term Object" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:839 +msgid "Term ID" +msgstr "ID терміну" + +#: includes/fields/class-acf-field-taxonomy.php:898 +#, php-format +msgid "User unable to add new %s" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:911 +#, php-format +msgid "%s already exists" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:952 +#, php-format +msgid "%s added" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:997 +msgid "Add" +msgstr "Додати" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "Ліміт Ñимволів" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "Щоб знÑти Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ â€” нічого не вказуйте тут" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "ОблаÑть текÑту" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "РÑдки" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "Вкажіть виÑоту текÑтового блоку" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "Вибір чаÑу" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "Так / ÐÑ–" + +#: includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 includes/input.php:267 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "Так" + +#: includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:169 includes/input.php:268 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "ÐÑ–" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:155 +#, fuzzy +#| msgid "Text" +msgid "On Text" +msgstr "ТекÑÑ‚" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:165 +#, fuzzy +#| msgid "Text" +msgid "Off Text" +msgstr "ТекÑÑ‚" + +#: includes/fields/class-acf-field-true_false.php:166 +msgid "Text shown when inactive" +msgstr "" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” бути адреÑою URl" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "КориÑтувач" + +#: includes/fields/class-acf-field-user.php:393 +msgid "Filter by role" +msgstr "Фільтр за ролÑми" + +#: includes/fields/class-acf-field-user.php:401 +msgid "All user roles" +msgstr "Ð’ÑÑ– ролі кориÑтувачів" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "Візуальний редактор" + +#: includes/fields/class-acf-field-wysiwyg.php:359 +msgid "Visual" +msgstr "Візуальний" + +#: includes/fields/class-acf-field-wysiwyg.php:360 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:366 +msgid "Click to initialize TinyMCE" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Tabs" +msgstr "Вкладки" + +#: includes/fields/class-acf-field-wysiwyg.php:424 +msgid "Visual & Text" +msgstr "Візуальний Ñ– ТекÑтовий" + +#: includes/fields/class-acf-field-wysiwyg.php:425 +msgid "Visual Only" +msgstr "Візуальний лише" + +#: includes/fields/class-acf-field-wysiwyg.php:426 +msgid "Text Only" +msgstr "Лише текÑÑ‚" + +#: includes/fields/class-acf-field-wysiwyg.php:433 +msgid "Toolbar" +msgstr "Панель інÑтрументів" + +#: includes/fields/class-acf-field-wysiwyg.php:443 +msgid "Show Media Upload Buttons?" +msgstr "Показувати кнопки Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²?" + +#: includes/fields/class-acf-field-wysiwyg.php:453 +msgid "Delay initialization?" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:454 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "" + +#: includes/forms/form-comment.php:166 includes/forms/form-post.php:303 +#: pro/admin/admin-options-page.php:308 +msgid "Edit field group" +msgstr "Редагувати групу полів" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "" + +#: includes/forms/form-front.php:103 +#: pro/fields/class-acf-field-gallery.php:573 pro/options-page.php:81 +msgid "Update" +msgstr "Оновити" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "Матеріал оновлено" + +#: includes/forms/form-front.php:229 +msgid "Spam Detected" +msgstr "" + +#: includes/input.php:259 +msgid "Expand Details" +msgstr "Показати деталі" + +#: includes/input.php:260 +msgid "Collapse Details" +msgstr "Сховати деталі" + +#: includes/input.php:261 +msgid "Validation successful" +msgstr "" + +#: includes/input.php:262 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "" + +#: includes/input.php:263 +msgid "1 field requires attention" +msgstr "" + +#: includes/input.php:264 +#, php-format +msgid "%d fields require attention" +msgstr "" + +#: includes/input.php:265 +msgid "Restricted" +msgstr "" + +#: includes/input.php:266 +msgid "Are you sure?" +msgstr "Ви впевнені?" + +#: includes/input.php:270 +msgid "Cancel" +msgstr "СкаÑувати" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "ПублікаціÑ" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "Сторінка" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "Форми" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "ВкладеннÑ" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "Коментар" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "Поточна роль кориÑтувача" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "Головний адмін" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "Поточний кориÑтувач" + +#: includes/locations/class-acf-location-current-user.php:97 +#, fuzzy +msgid "Logged in" +msgstr "Роль залоґованого кориÑтувача" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "Елемент меню" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "Меню" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¼ÐµÐ½ÑŽ" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "Меню" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "БатьківÑька Ñторінка" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "Шаблон Ñторінки" + +#: includes/locations/class-acf-location-page-template.php:98 +#: includes/locations/class-acf-location-post-template.php:151 +msgid "Default Template" +msgstr "Стандартний шаблон" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "Тип Ñторінки" + +#: includes/locations/class-acf-location-page-type.php:145 +msgid "Front Page" +msgstr "Головна Ñторінка" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Posts Page" +msgstr "Сторінка з публікаціÑми" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Top Level Page (no parent)" +msgstr "Верхній рівень Ñторінки (без батьків)" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Parent Page (has children)" +msgstr "БатьківÑька Ñторінка (має дочірні)" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Child Page (has parent)" +msgstr "Ð”Ð¾Ñ‡Ñ–Ñ€Ð½Ñ Ñторінка (має батьківÑьку)" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "КатегоріÑ" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "Формат" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¼Ð°Ñ‚ÐµÑ€Ñ–Ð°Ð»Ñƒ" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "ТакÑономіÑ" + +#: includes/locations/class-acf-location-post-template.php:27 +#, fuzzy +#| msgid "Page Template" +msgid "Post Template" +msgstr "Шаблон Ñторінки" + +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy Term" +msgstr "Термін такÑономії" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "Форма кориÑтувача" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "Додати / Редагувати" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "РеєÑтраціÑ" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "Роль кориÑтувача" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "Віджет" + +#: includes/media.php:55 +msgctxt "verb" +msgid "Edit" +msgstr "Редагувати" + +#: includes/media.php:56 +msgctxt "verb" +msgid "Update" +msgstr "Оновити" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "Додаткові Ð¿Ð¾Ð»Ñ Pro" + +#: pro/admin/admin-options-page.php:200 +msgid "Publish" +msgstr "Опублікувати" + +#: pro/admin/admin-options-page.php:206 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"Ðемає полів Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— Ñторінки опцій. Створити групу " +"додаткових полів" + +#: pro/admin/admin-settings-updates.php:78 +msgid "Error. Could not connect to update server" +msgstr "Помилка. Ðеможливо під’єднатиÑÑ Ð´Ð¾ Ñервера оновленнÑ" + +#: pro/admin/admin-settings-updates.php:162 +#: pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "ОновленнÑ" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "Деактивувати ліцензію" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "Ðктивувати ліцензію" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ ліцензію" + +#: pro/admin/views/html-settings-updates.php:20 +#, fuzzy, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" +"Щоб розблокувати оновленнÑ, будь лаÑка, введіть код ліцензії. Якщо не маєте " +"ліцензії, переглÑньте" + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "Код ліцензії" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ оновленнÑ" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "Поточна верÑÑ–Ñ" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "ОÑÑ‚Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "ДоÑтупні оновленнÑ" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "Оновити плаґін" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "Будь лаÑка, введіть код ліцензії, щоб розблокувати оновленнÑ" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "Перевірити знову" + +#: pro/admin/views/html-settings-updates.php:117 +#, fuzzy +msgid "Upgrade Notice" +msgstr "Оновити базу даних" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "Клон" + +#: pro/fields/class-acf-field-clone.php:808 +msgid "Select one or more fields you wish to clone" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:825 +msgid "Display" +msgstr "ТаблицÑ" + +#: pro/fields/class-acf-field-clone.php:826 +msgid "Specify the style used to render the clone field" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:831 +#, fuzzy +#| msgid "Please select the field group you wish this field to move to" +msgid "Group (displays selected fields in a group within this field)" +msgstr "Будь лаÑка, оберіть групу полів куди Ви хочете переміÑтити це поле" + +#: pro/fields/class-acf-field-clone.php:832 +msgid "Seamless (replaces this field with selected fields)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:853 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:856 +#, fuzzy +#| msgid "Field Label" +msgid "Prefix Field Labels" +msgstr "Ðазва полÑ" + +#: pro/fields/class-acf-field-clone.php:867 +#, php-format +msgid "Values will be saved as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:870 +#, fuzzy +#| msgid "Field Name" +msgid "Prefix Field Names" +msgstr "Ярлик" + +#: pro/fields/class-acf-field-clone.php:988 +msgid "Unknown field" +msgstr "Ðевідоме поле" + +#: pro/fields/class-acf-field-clone.php:1027 +#, fuzzy +msgid "Unknown field group" +msgstr "Редагувати групу полів" + +#: pro/fields/class-acf-field-clone.php:1031 +#, php-format +msgid "All fields from %s field group" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:174 +#: pro/fields/class-acf-field-repeater.php:470 +msgid "Add Row" +msgstr "Додати Ñ€Ñдок" + +#: pro/fields/class-acf-field-flexible-content.php:34 +#, fuzzy +msgid "layout" +msgstr "Шаблон Ñтруктури" + +#: pro/fields/class-acf-field-flexible-content.php:35 +#, fuzzy +msgid "layouts" +msgstr "Шаблон Ñтруктури" + +#: pro/fields/class-acf-field-flexible-content.php:36 +msgid "remove {layout}?" +msgstr "видалити {layout}?" + +#: pro/fields/class-acf-field-flexible-content.php:37 +msgid "This field requires at least {min} {identifier}" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:38 +msgid "This field has a limit of {max} {identifier}" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:39 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:40 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:41 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:42 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:43 +msgid "Flexible Content requires at least 1 layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:273 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:406 +msgid "Add layout" +msgstr "Додати шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:407 +msgid "Remove layout" +msgstr "Видалити шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:408 +#: pro/fields/class-acf-field-repeater.php:298 +msgid "Click to toggle" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder Layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:554 +msgid "Reorder" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:555 +msgid "Delete Layout" +msgstr "Видалити шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:556 +msgid "Duplicate Layout" +msgstr "Дублювати шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:557 +msgid "Add New Layout" +msgstr "Додати новий шаблон" + +#: pro/fields/class-acf-field-flexible-content.php:628 +msgid "Min" +msgstr "Мін." + +#: pro/fields/class-acf-field-flexible-content.php:641 +msgid "Max" +msgstr "МакÑ." + +#: pro/fields/class-acf-field-flexible-content.php:668 +#: pro/fields/class-acf-field-repeater.php:466 +msgid "Button Label" +msgstr "ТекÑÑ‚ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸" + +#: pro/fields/class-acf-field-flexible-content.php:677 +msgid "Minimum Layouts" +msgstr "Мінімум шаблонів" + +#: pro/fields/class-acf-field-flexible-content.php:686 +msgid "Maximum Layouts" +msgstr "МакÑимум шаблонів" + +#: pro/fields/class-acf-field-gallery.php:41 +msgid "Add Image to Gallery" +msgstr "Додати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð¾ галереї" + +#: pro/fields/class-acf-field-gallery.php:45 +#, fuzzy +msgid "Maximum selection reached" +msgstr "ДоÑÑгнуто макÑимального вибору" + +#: pro/fields/class-acf-field-gallery.php:321 +msgid "Length" +msgstr "Довжина" + +#: pro/fields/class-acf-field-gallery.php:364 +msgid "Caption" +msgstr "ПідпиÑ" + +#: pro/fields/class-acf-field-gallery.php:373 +msgid "Alt Text" +msgstr "Ðльтернативний текÑÑ‚" + +#: pro/fields/class-acf-field-gallery.php:544 +msgid "Add to gallery" +msgstr "Додати до галереї" + +#: pro/fields/class-acf-field-gallery.php:548 +msgid "Bulk actions" +msgstr "МаÑові дії" + +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Sort by date uploaded" +msgstr "Сортувати за датою завантаженнÑ" + +#: pro/fields/class-acf-field-gallery.php:550 +msgid "Sort by date modified" +msgstr "Сортувати за датою зміни" + +#: pro/fields/class-acf-field-gallery.php:551 +msgid "Sort by title" +msgstr "Сортувати за назвою" + +#: pro/fields/class-acf-field-gallery.php:552 +msgid "Reverse current order" +msgstr "Зворотній поточний порÑдок" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Close" +msgstr "Закрити" + +#: pro/fields/class-acf-field-gallery.php:624 +msgid "Minimum Selection" +msgstr "Мінімальна вибірка" + +#: pro/fields/class-acf-field-gallery.php:633 +msgid "Maximum Selection" +msgstr "МакÑимальна вибірка" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Insert" +msgstr "Ð’Ñтавити" + +#: pro/fields/class-acf-field-gallery.php:643 +msgid "Specify where new attachments are added" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:647 +msgid "Append to the end" +msgstr "РозміщуєтьÑÑ Ð² кінці" + +#: pro/fields/class-acf-field-gallery.php:648 +msgid "Prepend to the beginning" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:36 +msgid "Minimum rows reached ({min} rows)" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:37 +msgid "Maximum rows reached ({max} rows)" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:343 +msgid "Add row" +msgstr "Додати Ñ€Ñдок" + +#: pro/fields/class-acf-field-repeater.php:344 +msgid "Remove row" +msgstr "Видалити Ñ€Ñдок" + +#: pro/fields/class-acf-field-repeater.php:419 +#, fuzzy +#| msgid "Collapse Details" +msgid "Collapsed" +msgstr "Сховати деталі" + +#: pro/fields/class-acf-field-repeater.php:420 +msgid "Select a sub field to show when row is collapsed" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:430 +msgid "Minimum Rows" +msgstr "Мінімум Ñ€Ñдків" + +#: pro/fields/class-acf-field-repeater.php:440 +msgid "Maximum Rows" +msgstr "МакÑимум Ñ€Ñдків" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "Опції" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "Опції оновлено" + +#: pro/updates.php:97 +#, fuzzy, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" +"Щоб розблокувати оновленнÑ, будь лаÑка, введіть код ліцензії. Якщо не маєте " +"ліцензії, переглÑньте" + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "" + +#~ msgid "See what's new in" +#~ msgstr "ПереглÑньте, що нового у" + +#~ msgid "version" +#~ msgstr "верÑÑ–Ñ—" + +#~ msgid "Getting Started" +#~ msgstr "Початок роботи" + +#~ msgid "Field Types" +#~ msgstr "Типи полів" + +#~ msgid "Functions" +#~ msgstr "Функції" + +#~ msgid "Actions" +#~ msgstr "Дії" + +#~ msgid "'How to' guides" +#~ msgstr "ІнÑтрукції «Ñк зробити»" + +#~ msgid "Tutorials" +#~ msgstr "ДокументаціÑ" + +#~ msgid "Created by" +#~ msgstr "Плаґін Ñтворив" + +#~ msgid "Upgrade" +#~ msgstr "Оновити" + +#~ msgid "Error" +#~ msgstr "Помилка" + +#~ msgid "Drag and drop to reorder" +#~ msgstr "ÐŸÐ¾Ð»Ñ Ð¼Ð¾Ð¶Ð½Ð° перетÑгувати" + +#~ msgid "See what's new" +#~ msgstr "ПереглÑньте, що нового" + +#~ msgid "Show a different month" +#~ msgstr "Показати інший міÑÑць" + +#~ msgid "Return format" +#~ msgstr "Формат поверненнÑ" + +#~ msgid "uploaded to this post" +#~ msgstr "завантажено до цього матеріалу" + +#~ msgid "File Size" +#~ msgstr "Розмір файлу" + +#~ msgid "No File selected" +#~ msgstr "Файл не обрано" + +#~ msgid "Warning" +#~ msgstr "ЗаÑтереженнÑ" + +#~ msgid "eg. Show extra content" +#~ msgstr "напр., Показати додаткові полÑ" + +#~ msgid "Connection Error. Sorry, please try again" +#~ msgstr "Помилка з’єднаннÑ. Спробуйте знову" + +#~ msgid "Save Options" +#~ msgstr "Зберегти опції" + +#~ msgid "License" +#~ msgstr "ЛіцензіÑ" + +#~ msgid "" +#~ "To unlock updates, please enter your license key below. If you don't have " +#~ "a licence key, please see" +#~ msgstr "" +#~ "Щоб розблокувати оновленнÑ, будь лаÑка, введіть код ліцензії. Якщо не " +#~ "маєте ліцензії, переглÑньте" + +#~ msgid "details & pricing" +#~ msgstr "деталі Ñ– ціни" + +#~ msgid "Hide / Show All" +#~ msgstr "Сховати / Показати вÑе" + +#~ msgid "Show Field Keys" +#~ msgstr "Показати ключі полів" + +#~ msgid "Pending Review" +#~ msgstr "Очікує затвердженнÑ" + +#~ msgid "Draft" +#~ msgstr "Чернетка" + +#~ msgid "Future" +#~ msgstr "Заплановано" + +#~ msgid "Private" +#~ msgstr "Приватний" + +#~ msgid "Revision" +#~ msgstr "РевізіÑ" + +#~ msgid "Trash" +#~ msgstr "Ð’ кошику" + +#~ msgid "Import / Export" +#~ msgstr "Імпорт / ЕкÑпорт" + +#, fuzzy +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "Чим меше чиÑло
                          тим вище розміщеннÑ" + +#, fuzzy +#~ msgid "ACF PRO Required" +#~ msgstr "Обов’Ñзкове?" + +#~ msgid "Update Database" +#~ msgstr "Оновити базу даних" + +#~ msgid "Data Upgrade" +#~ msgstr "Дані оновлено" + +#~ msgid "Data upgraded successfully." +#~ msgstr "Дані уÑпішно оновлено." + +#~ msgid "Data is at the latest version." +#~ msgstr "Дані оÑтанньої верÑÑ–Ñ—." + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "Завантажити Ñ– зберегти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾ матеріалу" + +#, fuzzy +#~ msgid "image" +#~ msgstr "ЗображеннÑ" + +#, fuzzy +#~ msgid "expand_details" +#~ msgstr "Показати деталі" + +#, fuzzy +#~ msgid "collapse_details" +#~ msgstr "Сховати деталі" + +#, fuzzy +#~ msgid "relationship" +#~ msgstr "Закрити поле" + +#, fuzzy +#~ msgid "title_is_required" +#~ msgstr "Заголовок обов’Ñзковий" + +#, fuzzy +#~ msgid "move_field" +#~ msgstr "ПереміÑтити поле" + +#, fuzzy +#~ msgid "flexible_content" +#~ msgstr "Гнучкий вміÑÑ‚" + +#, fuzzy +#~ msgid "gallery" +#~ msgstr "ГалереÑ" + +#, fuzzy +#~ msgid "Controls how HTML tags are rendered" +#~ msgstr "Вкажіть ÑпоÑіб обробки нових Ñ€Ñдків" + +#~ msgid "Field Groups" +#~ msgstr "Групи полів" + +#~ msgid "Attachment Details" +#~ msgstr "Деталі вкладеннÑ" + +#~ msgid "Custom field updated." +#~ msgstr "Додаткове поле оновлено." + +#~ msgid "Custom field deleted." +#~ msgstr "Додаткове поле видалено." + +#~ msgid "Import/Export" +#~ msgstr "Імпорт/ЕкÑпорт" + +#~ msgid "Column Width" +#~ msgstr "Ширина колонки" + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "Заповніть вÑÑ– полÑ! Одне або декілька полів нижче не заповнено." + +#~ msgid "Success" +#~ msgstr "Готово" + +#~ msgid "Run the updater" +#~ msgstr "ЗапуÑтити оновленнÑ" + +#~ msgid "Return to custom fields" +#~ msgstr "ПовернутиÑÑ Ð´Ð¾ додаткових полів" + +#~ msgid "Size" +#~ msgstr "Розмір" + +#~ msgid "Formatting" +#~ msgstr "ФорматуваннÑ" + +#~ msgid "Effects value on front end" +#~ msgstr "Як показувати на Ñайті" + +#~ msgid "Convert HTML into tags" +#~ msgstr "Конвертувати в теґи HTML" + +#~ msgid "Plain text" +#~ msgstr "ПроÑтий текÑÑ‚" + +#~ msgid "1 image selected" +#~ msgstr "1 обране зображеннÑ" + +#~ msgid "%d images selected" +#~ msgstr "%d вибраних зображень" + +#~ msgid "Normal" +#~ msgstr "Стандартно" + +#~ msgid "" +#~ "Read documentation, learn the functions and find some tips & tricks " +#~ "for your next web project." +#~ msgstr "" +#~ "Ð’ документації ви знайдете детальний Ð¾Ð¿Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ та декілька порад Ñ– " +#~ "трюків Ð´Ð»Ñ ÐºÑ€Ð°Ñ‰Ð¾Ð³Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð»Ð°Ò‘Ñ–Ð½Ñƒ." + +#~ msgid "Visit the ACF website" +#~ msgstr "Відвідайте Ñайт плаґіну" + +#~ msgid "Gallery Field" +#~ msgstr "Поле галереї" + +#~ msgid "Export XML" +#~ msgstr "ЕкÑпортувати XML" + +#~ msgid "Copy the PHP code generated" +#~ msgstr "Скопіюйте згенерований код PHP" + +#~ msgid "Paste into your functions.php file" +#~ msgstr "Ð’Ñтавте у functions.php" + +#~ msgid "Create PHP" +#~ msgstr "Створити PHP" + +#~ msgid "Back to settings" +#~ msgstr "ПовернутиÑÑ Ð´Ð¾ налаштувань" + +#~ msgid "requires a database upgrade" +#~ msgstr "потребує Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð±Ð°Ð·Ð¸ даних" + +#~ msgid "why?" +#~ msgstr "Ð´Ð»Ñ Ñ‡Ð¾Ð³Ð¾?" + +#~ msgid "Please" +#~ msgstr "Будь лаÑка," + +#~ msgid "backup your database" +#~ msgstr "Ñтворіть резервну копію БД" + +#~ msgid "then click" +#~ msgstr "Ñ– натиÑкайте цю кнопку" + +#~ msgid "Red" +#~ msgstr "Червоний" + +#~ msgid "Blue" +#~ msgstr "Синій" + +#~ msgid "blue : Blue" +#~ msgstr "blue : Синій" + +#, fuzzy +#~ msgid "jQuery date formats" +#~ msgstr "Формат дати" + +#~ msgid "File Updated." +#~ msgstr "Файл оновлено." + +#~ msgid "+ Add Row" +#~ msgstr "+ Додати Ñ€Ñдок" + +#~ msgid "Field Order" +#~ msgstr "ПорÑдок полів" + +#, fuzzy +#~ msgid "" +#~ "No fields. Click the \"+ Add Sub Field button\" to create your first " +#~ "field." +#~ msgstr "" +#~ "Ще немає полів. Click the \"+ Add Sub Field button\" to create your first " +#~ "field." + +#~ msgid "Edit this Field" +#~ msgstr "Редагувати це поле" + +#~ msgid "Docs" +#~ msgstr "ДокументаціÑ" + +#~ msgid "Close Sub Field" +#~ msgstr "Закрити дочірнє поле" + +#~ msgid "+ Add Sub Field" +#~ msgstr "+ Додати дочірнє поле" + +#~ msgid "Image Updated" +#~ msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾" + +#~ msgid "Grid" +#~ msgstr "Плитка" + +#~ msgid "List" +#~ msgstr "СпиÑок" + +#~ msgid "Added" +#~ msgstr "Додано" + +#~ msgid "Image Updated." +#~ msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾." + +#~ msgid "Add selected Images" +#~ msgstr "Додати обрані зображеннÑ" + +#~ msgid "Field Instructions" +#~ msgstr "ÐžÐ¿Ð¸Ñ Ð¿Ð¾Ð»Ñ" + +#~ msgid "Table (default)" +#~ msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ (за замовчуваннÑм)" + +#~ msgid "Define how to render html tags" +#~ msgstr "Оберіть ÑпоÑіб обробки теґів html" + +#~ msgid "Define how to render html tags / new lines" +#~ msgstr "Оберіть ÑпоÑіб обробки теґів html та переноÑу Ñ€Ñдків" + +#~ msgid "Run filter \"the_content\"?" +#~ msgstr "ЗаÑтоÑовувати фільтр «the_content»?" + +#~ msgid "Page Specific" +#~ msgstr "Сторінки" + +#~ msgid "Post Specific" +#~ msgstr "Публікації" + +#~ msgid "Taxonomy (Add / Edit)" +#~ msgstr "Тип такÑономії (Додати / Редагувати)" + +#~ msgid "Media (Edit)" +#~ msgstr "Медіафайл (Редагувати)" + +#~ msgid "match" +#~ msgstr "має Ñпівпадати" + +#~ msgid "all" +#~ msgstr "вÑе" + +#~ msgid "of the above" +#~ msgstr "з вищевказаних умов" + +#~ msgid "Add Fields to Edit Screens" +#~ msgstr "Додайте Ð¿Ð¾Ð»Ñ Ð½Ð° Ñторінку Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¼Ñ–Ñту" + +#, fuzzy +#~ msgid "eg. dd/mm/yy. read more about" +#~ msgstr "Ðапр. dd/mm/yy. read more about" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-zh_CN.mo b/wp-content/plugins/advanced-custom-fields/lang/acf-zh_CN.mo new file mode 100644 index 0000000000000000000000000000000000000000..c4bfb80c190ef736a240f6b389a91ad633350676 GIT binary patch literal 40386 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 SP$n?{tq-A$J9~Tv_5T3Dynm(u literal 0 HcmV?d00001 diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf-zh_CN.po b/wp-content/plugins/advanced-custom-fields/lang/acf-zh_CN.po new file mode 100644 index 0000000..d5a42d7 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf-zh_CN.po @@ -0,0 +1,3322 @@ +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2015-08-11 23:50+0200\n" +"PO-Revision-Date: 2018-03-14 09:58+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Amos Lee <470266798@qq.com>\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.1\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"X-Textdomain-Support: yes\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:63 +msgid "Advanced Custom Fields" +msgstr "高级自定义字段" + +#: acf.php:205 admin/admin.php:61 +msgid "Field Groups" +msgstr "字段组" + +#: acf.php:206 +msgid "Field Group" +msgstr "字段组" + +#: acf.php:207 acf.php:239 admin/admin.php:62 +#: pro/fields/flexible-content.php:517 +msgid "Add New" +msgstr "新建" + +#: acf.php:208 +msgid "Add New Field Group" +msgstr "添加字段组" + +#: acf.php:209 +msgid "Edit Field Group" +msgstr "编辑字段组" + +#: acf.php:210 +msgid "New Field Group" +msgstr "新建字段组" + +#: acf.php:211 +msgid "View Field Group" +msgstr "查看字段组" + +#: acf.php:212 +msgid "Search Field Groups" +msgstr "æœç´¢å­—段组" + +#: acf.php:213 +msgid "No Field Groups found" +msgstr "没有找到字段组" + +#: acf.php:214 +msgid "No Field Groups found in Trash" +msgstr "回收站中没有找到字段组" + +#: acf.php:237 admin/field-group.php:182 admin/field-group.php:213 +#: admin/field-groups.php:519 +msgid "Fields" +msgstr "字段" + +#: acf.php:238 +msgid "Field" +msgstr "字段" + +#: acf.php:240 +msgid "Add New Field" +msgstr "添加新字段" + +#: acf.php:241 +msgid "Edit Field" +msgstr "编辑字段" + +#: acf.php:242 admin/views/field-group-fields.php:18 +#: admin/views/settings-info.php:111 +msgid "New Field" +msgstr "新字段" + +#: acf.php:243 +msgid "View Field" +msgstr "新字段" + +#: acf.php:244 +msgid "Search Fields" +msgstr "æœç´¢å­—段" + +#: acf.php:245 +msgid "No Fields found" +msgstr "没找到字段" + +#: acf.php:246 +msgid "No Fields found in Trash" +msgstr "回收站里没有字段" + +#: acf.php:268 admin/field-group.php:283 admin/field-groups.php:583 +#: admin/views/field-group-options.php:18 +msgid "Disabled" +msgstr "ç¦ç”¨" + +#: acf.php:273 +#, php-format +msgid "Disabled (%s)" +msgid_plural "Disabled (%s)" +msgstr[0] "ç¦ç”¨ (%s)" + +#: admin/admin.php:57 admin/views/field-group-options.php:120 +msgid "Custom Fields" +msgstr "字段" + +#: admin/field-group.php:68 admin/field-group.php:69 admin/field-group.php:71 +msgid "Field group updated." +msgstr "字段组已更新。" + +#: admin/field-group.php:70 +msgid "Field group deleted." +msgstr "字段组已删除。" + +#: admin/field-group.php:73 +msgid "Field group published." +msgstr "字段组已å‘布。" + +#: admin/field-group.php:74 +msgid "Field group saved." +msgstr "字段组已ä¿å­˜ã€‚" + +#: admin/field-group.php:75 +msgid "Field group submitted." +msgstr "字段组已æäº¤ã€‚" + +#: admin/field-group.php:76 +msgid "Field group scheduled for." +msgstr "字段组已定时。" + +#: admin/field-group.php:77 +msgid "Field group draft updated." +msgstr "字段组è‰ç¨¿å·²æ›´æ–°ã€‚" + +#: admin/field-group.php:176 +msgid "Move to trash. Are you sure?" +msgstr "确定è¦åˆ é™¤å—?" + +#: admin/field-group.php:177 +msgid "checked" +msgstr "已选" + +#: admin/field-group.php:178 +msgid "No toggle fields available" +msgstr "没有å¯ç”¨çš„切æ¢å­—段" + +#: admin/field-group.php:179 +msgid "Field group title is required" +msgstr "字段组的标题是必填项" + +#: admin/field-group.php:180 api/api-field-group.php:607 +msgid "copy" +msgstr "å¤åˆ¶" + +#: admin/field-group.php:181 +#: admin/views/field-group-field-conditional-logic.php:67 +#: admin/views/field-group-field-conditional-logic.php:162 +#: admin/views/field-group-locations.php:23 +#: admin/views/field-group-locations.php:131 api/api-helpers.php:3262 +msgid "or" +msgstr "或" + +#: admin/field-group.php:183 +msgid "Parent fields" +msgstr "父字段" + +#: admin/field-group.php:184 +msgid "Sibling fields" +msgstr "兄弟字段" + +#: admin/field-group.php:185 +msgid "Move Custom Field" +msgstr "移动自定义字段" + +#: admin/field-group.php:186 +msgid "This field cannot be moved until its changes have been saved" +msgstr "ä¿å­˜è¿™ä¸ªå­—æ®µçš„ä¿®æ”¹ä»¥åŽæ‰èƒ½ç§»åŠ¨è¿™ä¸ªå­—æ®µ" + +#: admin/field-group.php:187 +msgid "Null" +msgstr "Null" + +#: admin/field-group.php:188 core/input.php:128 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "如果æµè§ˆå…¶å®ƒé¡µé¢ï¼Œä¼šä¸¢å¤±å½“剿‰€åšçš„修改" + +#: admin/field-group.php:189 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "\"field_\" 这个字符串ä¸èƒ½ä½œä¸ºå­—段å字的开始部分" + +#: admin/field-group.php:214 +msgid "Location" +msgstr "ä½ç½®" + +#: admin/field-group.php:215 +msgid "Settings" +msgstr "设置" + +#: admin/field-group.php:253 +msgid "Field Keys" +msgstr "字段 Keys" + +#: admin/field-group.php:283 admin/views/field-group-options.php:17 +msgid "Active" +msgstr "激活" + +#: admin/field-group.php:744 +msgid "Front Page" +msgstr "首页" + +#: admin/field-group.php:745 +msgid "Posts Page" +msgstr "文章页" + +#: admin/field-group.php:746 +msgid "Top Level Page (no parent)" +msgstr "é¡¶çº§é¡µé¢ (无父页é¢)" + +#: admin/field-group.php:747 +msgid "Parent Page (has children)" +msgstr "父页é¢ï¼ˆæœ‰å­é¡µï¼‰" + +#: admin/field-group.php:748 +msgid "Child Page (has parent)" +msgstr "å­é¡µé¢ï¼ˆæœ‰çˆ¶é¡µé¢ï¼‰" + +#: admin/field-group.php:764 +msgid "Default Template" +msgstr "默认模æ¿" + +#: admin/field-group.php:786 +msgid "Logged in" +msgstr "登录" + +#: admin/field-group.php:787 +msgid "Viewing front end" +msgstr "查看å‰ç«¯" + +#: admin/field-group.php:788 +msgid "Viewing back end" +msgstr "查看åŽç«¯" + +#: admin/field-group.php:807 +msgid "Super Admin" +msgstr "超级管ç†å‘˜" + +#: admin/field-group.php:818 admin/field-group.php:826 +#: admin/field-group.php:840 admin/field-group.php:847 +#: admin/field-group.php:862 admin/field-group.php:872 fields/file.php:235 +#: fields/image.php:226 pro/fields/gallery.php:653 +msgid "All" +msgstr "所有" + +#: admin/field-group.php:827 +msgid "Add / Edit" +msgstr "添加 / 编辑" + +#: admin/field-group.php:828 +msgid "Register" +msgstr "注册" + +#: admin/field-group.php:1059 +msgid "Move Complete." +msgstr "移动完æˆã€‚" + +#: admin/field-group.php:1060 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "%s 字段现在会在 %s 字段组里" + +#: admin/field-group.php:1062 +msgid "Close Window" +msgstr "关闭窗å£" + +#: admin/field-group.php:1097 +msgid "Please select the destination for this field" +msgstr "请选择这个字段的ä½ç½®" + +#: admin/field-group.php:1104 +msgid "Move Field" +msgstr "移动字段" + +#: admin/field-groups.php:74 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "å¯ç”¨ (%s)" + +#: admin/field-groups.php:142 +#, php-format +msgid "Field group duplicated. %s" +msgstr "字段组已被å¤åˆ¶ã€‚%s" + +#: admin/field-groups.php:146 +#, php-format +msgid "%s field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "%s 字段组已被å¤åˆ¶ã€‚" + +#: admin/field-groups.php:228 +#, php-format +msgid "Field group synchronised. %s" +msgstr "å­—æ®µç»„å·²åŒæ­¥ã€‚ %s" + +#: admin/field-groups.php:232 +#, php-format +msgid "%s field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "%s å­—æ®µç»„å·²åŒæ­¥ã€‚" + +#: admin/field-groups.php:403 admin/field-groups.php:573 +msgid "Sync available" +msgstr "有å¯ç”¨åŒæ­¥" + +#: admin/field-groups.php:516 +msgid "Title" +msgstr "标题" + +#: admin/field-groups.php:517 admin/views/field-group-options.php:98 +#: admin/views/update-network.php:20 admin/views/update-network.php:28 +msgid "Description" +msgstr "æè¿°" + +#: admin/field-groups.php:518 admin/views/field-group-options.php:10 +msgid "Status" +msgstr "状æ€" + +#: admin/field-groups.php:616 admin/settings-info.php:76 +#: pro/admin/views/settings-updates.php:111 +msgid "Changelog" +msgstr "更新日志" + +#: admin/field-groups.php:617 +msgid "See what's new in" +msgstr "查看更新内容于" + +#: admin/field-groups.php:617 +msgid "version" +msgstr "版本" + +#: admin/field-groups.php:619 +msgid "Resources" +msgstr "资æº" + +#: admin/field-groups.php:621 +msgid "Getting Started" +msgstr "èµ·æ­¥" + +#: admin/field-groups.php:622 pro/admin/settings-updates.php:73 +#: pro/admin/views/settings-updates.php:17 +msgid "Updates" +msgstr "æ›´æ–°" + +#: admin/field-groups.php:623 +msgid "Field Types" +msgstr "字段类型" + +#: admin/field-groups.php:624 +msgid "Functions" +msgstr "功能" + +#: admin/field-groups.php:625 +msgid "Actions" +msgstr "æ“作" + +#: admin/field-groups.php:626 fields/relationship.php:718 +msgid "Filters" +msgstr "过滤器" + +#: admin/field-groups.php:627 +msgid "'How to' guides" +msgstr "新手å‘导" + +#: admin/field-groups.php:628 +msgid "Tutorials" +msgstr "教程" + +#: admin/field-groups.php:633 +msgid "Created by" +msgstr "创建者" + +#: admin/field-groups.php:673 +msgid "Duplicate this item" +msgstr "å¤åˆ¶æ­¤é¡¹" + +#: admin/field-groups.php:673 admin/field-groups.php:685 +#: admin/views/field-group-field.php:58 pro/fields/flexible-content.php:516 +msgid "Duplicate" +msgstr "å¤åˆ¶" + +#: admin/field-groups.php:724 +#, php-format +msgid "Select %s" +msgstr "选择 %s" + +#: admin/field-groups.php:730 +msgid "Synchronise field group" +msgstr "åŒæ­¥å­—段组" + +#: admin/field-groups.php:730 admin/field-groups.php:750 +msgid "Sync" +msgstr "åŒæ­¥" + +#: admin/settings-addons.php:51 admin/views/settings-addons.php:9 +msgid "Add-ons" +msgstr "附加功能" + +#: admin/settings-addons.php:87 +msgid "Error. Could not load add-ons list" +msgstr "错误,无法加载扩展列表" + +#: admin/settings-info.php:50 +msgid "Info" +msgstr "ä¿¡æ¯" + +#: admin/settings-info.php:75 +msgid "What's New" +msgstr "更新日志" + +#: admin/settings-tools.php:54 admin/views/settings-tools-export.php:9 +#: admin/views/settings-tools.php:31 +msgid "Tools" +msgstr "工具" + +#: admin/settings-tools.php:151 admin/settings-tools.php:365 +msgid "No field groups selected" +msgstr "没选择字段组" + +#: admin/settings-tools.php:188 +msgid "No file selected" +msgstr "没选择文件" + +#: admin/settings-tools.php:201 +msgid "Error uploading file. Please try again" +msgstr "文件上传失败,请é‡è¯•" + +#: admin/settings-tools.php:210 +msgid "Incorrect file type" +msgstr "文本类型ä¸å¯¹" + +#: admin/settings-tools.php:227 +msgid "Import file empty" +msgstr "导入的文件是空白的" + +#: admin/settings-tools.php:323 +#, php-format +msgid "Success. Import tool added %s field groups: %s" +msgstr "æˆåŠŸï¼Œå¯¼å…¥å·¥å…·æ·»åŠ äº† %s 字段组: %s" + +#: admin/settings-tools.php:332 +#, php-format +msgid "" +"Warning. Import tool detected %s field groups already exist and have " +"been ignored: %s" +msgstr "警告,导入工具检测到 %s 字段组已ç»å­˜åœ¨äº†ã€‚忽略的字段组:%s" + +#: admin/update.php:113 +msgid "Upgrade ACF" +msgstr "å‡çº§ ACF" + +#: admin/update.php:143 +msgid "Review sites & upgrade" +msgstr "检查网站并å‡çº§" + +#: admin/update.php:298 +msgid "Upgrade" +msgstr "å‡çº§" + +#: admin/update.php:328 +msgid "Upgrade Database" +msgstr "å‡çº§æ•°æ®åº“" + +#: admin/views/field-group-field-conditional-logic.php:29 +msgid "Conditional Logic" +msgstr "æ¡ä»¶é€»è¾‘" + +#: admin/views/field-group-field-conditional-logic.php:40 +#: admin/views/field-group-field.php:137 fields/checkbox.php:246 +#: fields/message.php:117 fields/page_link.php:568 fields/page_link.php:582 +#: fields/post_object.php:434 fields/post_object.php:448 fields/select.php:411 +#: fields/select.php:425 fields/select.php:439 fields/select.php:453 +#: fields/tab.php:172 fields/taxonomy.php:770 fields/taxonomy.php:784 +#: fields/taxonomy.php:798 fields/taxonomy.php:812 fields/user.php:457 +#: fields/user.php:471 fields/wysiwyg.php:384 +#: pro/admin/views/settings-updates.php:93 +msgid "Yes" +msgstr "是" + +#: admin/views/field-group-field-conditional-logic.php:41 +#: admin/views/field-group-field.php:138 fields/checkbox.php:247 +#: fields/message.php:118 fields/page_link.php:569 fields/page_link.php:583 +#: fields/post_object.php:435 fields/post_object.php:449 fields/select.php:412 +#: fields/select.php:426 fields/select.php:440 fields/select.php:454 +#: fields/tab.php:173 fields/taxonomy.php:685 fields/taxonomy.php:771 +#: fields/taxonomy.php:785 fields/taxonomy.php:799 fields/taxonomy.php:813 +#: fields/user.php:458 fields/user.php:472 fields/wysiwyg.php:385 +#: pro/admin/views/settings-updates.php:103 +msgid "No" +msgstr "å¦" + +#: admin/views/field-group-field-conditional-logic.php:65 +msgid "Show this field if" +msgstr "显示此字段的æ¡ä»¶" + +#: admin/views/field-group-field-conditional-logic.php:111 +#: admin/views/field-group-locations.php:88 +msgid "is equal to" +msgstr "等于" + +#: admin/views/field-group-field-conditional-logic.php:112 +#: admin/views/field-group-locations.php:89 +msgid "is not equal to" +msgstr "ä¸ç­‰äºŽ" + +#: admin/views/field-group-field-conditional-logic.php:149 +#: admin/views/field-group-locations.php:118 +msgid "and" +msgstr "与" + +#: admin/views/field-group-field-conditional-logic.php:164 +#: admin/views/field-group-locations.php:133 +msgid "Add rule group" +msgstr "添加规则组" + +#: admin/views/field-group-field.php:54 admin/views/field-group-field.php:57 +msgid "Edit field" +msgstr "编辑字段" + +#: admin/views/field-group-field.php:57 pro/fields/gallery.php:355 +msgid "Edit" +msgstr "编辑" + +#: admin/views/field-group-field.php:58 +msgid "Duplicate field" +msgstr "å¤åˆ¶å­—段" + +#: admin/views/field-group-field.php:59 +msgid "Move field to another group" +msgstr "把字段移动到其它群组" + +#: admin/views/field-group-field.php:59 +msgid "Move" +msgstr "移动" + +#: admin/views/field-group-field.php:60 +msgid "Delete field" +msgstr "删除字段" + +#: admin/views/field-group-field.php:60 pro/fields/flexible-content.php:515 +msgid "Delete" +msgstr "删除" + +#: admin/views/field-group-field.php:68 fields/oembed.php:212 +#: fields/taxonomy.php:886 +msgid "Error" +msgstr "错误" + +#: fields/oembed.php:220 fields/taxonomy.php:900 +msgid "Error." +msgstr "错误。" + +#: admin/views/field-group-field.php:68 +msgid "Field type does not exist" +msgstr "字段类型ä¸å­˜åœ¨" + +#: admin/views/field-group-field.php:81 +msgid "Field Label" +msgstr "字段标签" + +#: admin/views/field-group-field.php:82 +msgid "This is the name which will appear on the EDIT page" +msgstr "åœ¨ç¼–è¾‘ç•Œé¢æ˜¾ç¤ºçš„åå­—" + +#: admin/views/field-group-field.php:93 +msgid "Field Name" +msgstr "字段åç§°" + +#: admin/views/field-group-field.php:94 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "å•个字符串,ä¸èƒ½æœ‰ç©ºæ ¼ï¼Œå¯ä»¥ç”¨æ¨ªçº¿æˆ–下画线。" + +#: admin/views/field-group-field.php:105 +msgid "Field Type" +msgstr "字段类型" + +#: admin/views/field-group-field.php:118 fields/tab.php:143 +msgid "Instructions" +msgstr "说明" + +#: admin/views/field-group-field.php:119 +msgid "Instructions for authors. Shown when submitting data" +msgstr "显示给内容作者的说明文字,在æäº¤æ•°æ®æ—¶æ˜¾ç¤º" + +#: admin/views/field-group-field.php:130 +msgid "Required?" +msgstr "必填?" + +#: admin/views/field-group-field.php:158 +msgid "Wrapper Attributes" +msgstr "包装属性" + +#: admin/views/field-group-field.php:164 +msgid "width" +msgstr "宽度" + +#: admin/views/field-group-field.php:178 +msgid "class" +msgstr "class" + +#: admin/views/field-group-field.php:191 +msgid "id" +msgstr "id" + +#: admin/views/field-group-field.php:203 +msgid "Close Field" +msgstr "关闭字段" + +#: admin/views/field-group-fields.php:29 +msgid "Order" +msgstr "åºå·" + +#: admin/views/field-group-fields.php:30 pro/fields/flexible-content.php:541 +msgid "Label" +msgstr "标签" + +#: admin/views/field-group-fields.php:31 pro/fields/flexible-content.php:554 +msgid "Name" +msgstr "åç§°" + +#: admin/views/field-group-fields.php:32 +msgid "Type" +msgstr "类型" + +#: admin/views/field-group-fields.php:44 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "没有字段,点击添加按钮创建第一个字段。" + +#: admin/views/field-group-fields.php:51 +msgid "Drag and drop to reorder" +msgstr "拖拽排åº" + +#: admin/views/field-group-fields.php:54 +msgid "+ Add Field" +msgstr "+ 添加字段" + +#: admin/views/field-group-locations.php:5 +msgid "Rules" +msgstr "规则" + +#: admin/views/field-group-locations.php:6 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "创建一组规则以确定自定义字段在哪个编辑界é¢ä¸Šæ˜¾ç¤º" + +#: admin/views/field-group-locations.php:21 +msgid "Show this field group if" +msgstr "显示此字段组的æ¡ä»¶" + +#: admin/views/field-group-locations.php:41 +#: admin/views/field-group-locations.php:47 +msgid "Post" +msgstr "内容" + +#: admin/views/field-group-locations.php:42 fields/relationship.php:724 +msgid "Post Type" +msgstr "内容类型" + +#: admin/views/field-group-locations.php:43 +msgid "Post Status" +msgstr "内容状æ€" + +#: admin/views/field-group-locations.php:44 +msgid "Post Format" +msgstr "内容格å¼" + +#: admin/views/field-group-locations.php:45 +msgid "Post Category" +msgstr "内容类别" + +#: admin/views/field-group-locations.php:46 +msgid "Post Taxonomy" +msgstr "内容分类法" + +#: admin/views/field-group-locations.php:49 +#: admin/views/field-group-locations.php:53 +msgid "Page" +msgstr "页é¢" + +#: admin/views/field-group-locations.php:50 +msgid "Page Template" +msgstr "页颿¨¡æ¿" + +#: admin/views/field-group-locations.php:51 +msgid "Page Type" +msgstr "页é¢ç±»åž‹" + +#: admin/views/field-group-locations.php:52 +msgid "Page Parent" +msgstr "父级页é¢" + +#: admin/views/field-group-locations.php:55 fields/user.php:36 +msgid "User" +msgstr "用户" + +#: admin/views/field-group-locations.php:56 +msgid "Current User" +msgstr "当å‰ç”¨æˆ·" + +#: admin/views/field-group-locations.php:57 +msgid "Current User Role" +msgstr "当å‰ç”¨æˆ·è§’色" + +#: admin/views/field-group-locations.php:58 +msgid "User Form" +msgstr "用户表å•" + +#: admin/views/field-group-locations.php:59 +msgid "User Role" +msgstr "用户角色" + +#: admin/views/field-group-locations.php:61 pro/admin/options-page.php:48 +msgid "Forms" +msgstr "表å•" + +#: admin/views/field-group-locations.php:62 +msgid "Attachment" +msgstr "附件" + +#: admin/views/field-group-locations.php:63 +msgid "Taxonomy Term" +msgstr "åˆ†ç±»è¯æ±‡" + +#: admin/views/field-group-locations.php:64 +msgid "Comment" +msgstr "评论" + +#: admin/views/field-group-locations.php:65 +msgid "Widget" +msgstr "å°å·¥å…·" + +#: admin/views/field-group-options.php:25 +msgid "Style" +msgstr "æ ·å¼" + +#: admin/views/field-group-options.php:32 +msgid "Standard (WP metabox)" +msgstr "标准(WP Metabox)" + +#: admin/views/field-group-options.php:33 +msgid "Seamless (no metabox)" +msgstr "æ— ç¼ï¼ˆæ—  metabox)" + +#: admin/views/field-group-options.php:40 +msgid "Position" +msgstr "ä½ç½®" + +#: admin/views/field-group-options.php:47 +msgid "High (after title)" +msgstr "高(标题之åŽï¼‰" + +#: admin/views/field-group-options.php:48 +msgid "Normal (after content)" +msgstr "正常(内容之åŽï¼‰" + +#: admin/views/field-group-options.php:49 +msgid "Side" +msgstr "è¾¹æ " + +#: admin/views/field-group-options.php:57 +msgid "Label placement" +msgstr "标签ä½ç½®" + +#: admin/views/field-group-options.php:64 fields/tab.php:159 +msgid "Top aligned" +msgstr "顶部对é½" + +#: admin/views/field-group-options.php:65 fields/tab.php:160 +msgid "Left aligned" +msgstr "左对é½" + +#: admin/views/field-group-options.php:72 +msgid "Instruction placement" +msgstr "说明ä½ç½®" + +#: admin/views/field-group-options.php:79 +msgid "Below labels" +msgstr "标签之下" + +#: admin/views/field-group-options.php:80 +msgid "Below fields" +msgstr "字段之下" + +#: admin/views/field-group-options.php:87 +msgid "Order No." +msgstr "åºå·" + +#: admin/views/field-group-options.php:88 +msgid "Field groups with a lower order will appear first" +msgstr "åºå·å°çš„字段组会排在最å‰é¢" + +#: admin/views/field-group-options.php:99 +msgid "Shown in field group list" +msgstr "在字段组列表中显示" + +#: admin/views/field-group-options.php:109 +msgid "Hide on screen" +msgstr "éšè—元素" + +#: admin/views/field-group-options.php:110 +msgid "Select items to hide them from the edit screen." +msgstr "选择需è¦åœ¨ç¼–辑界é¢éšè—çš„æ¡ç›®ã€‚ " + +#: admin/views/field-group-options.php:110 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" +"å¦‚æžœå¤šä¸ªå­—æ®µç»„åŒæ—¶å‡ºçŽ°åœ¨ç¼–è¾‘ç•Œé¢ï¼Œä¼šä½¿ç”¨ç¬¬ä¸€ä¸ªå­—段组里的选项(就是åºå·æœ€å°çš„" +"那个字段组)" + +#: admin/views/field-group-options.php:117 +msgid "Permalink" +msgstr "固定链接" + +#: admin/views/field-group-options.php:118 +msgid "Content Editor" +msgstr "内容编辑器" + +#: admin/views/field-group-options.php:119 +msgid "Excerpt" +msgstr "摘è¦" + +#: admin/views/field-group-options.php:121 +msgid "Discussion" +msgstr "讨论" + +#: admin/views/field-group-options.php:122 +msgid "Comments" +msgstr "评论" + +#: admin/views/field-group-options.php:123 +msgid "Revisions" +msgstr "修订" + +#: admin/views/field-group-options.php:124 +msgid "Slug" +msgstr "别å" + +#: admin/views/field-group-options.php:125 +msgid "Author" +msgstr "作者" + +#: admin/views/field-group-options.php:126 +msgid "Format" +msgstr "æ ¼å¼" + +#: admin/views/field-group-options.php:127 +msgid "Page Attributes" +msgstr "页é¢å±žæ€§" + +#: admin/views/field-group-options.php:128 fields/relationship.php:737 +msgid "Featured Image" +msgstr "特色图åƒ" + +#: admin/views/field-group-options.php:129 +msgid "Categories" +msgstr "类别" + +#: admin/views/field-group-options.php:130 +msgid "Tags" +msgstr "标签" + +#: admin/views/field-group-options.php:131 +msgid "Send Trackbacks" +msgstr "å‘é€ Trackbacks" + +#: admin/views/settings-addons.php:23 +msgid "Download & Install" +msgstr "下载并安装" + +#: admin/views/settings-addons.php:42 +msgid "Installed" +msgstr "已安装" + +#: admin/views/settings-info.php:9 +msgid "Welcome to Advanced Custom Fields" +msgstr "欢迎使用高级自定义字段" + +#: admin/views/settings-info.php:10 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "感谢å‡çº§åˆ°æ›´å¥½çš„ ACF %s,你会喜欢上它的。" + +#: admin/views/settings-info.php:23 +msgid "A smoother custom field experience" +msgstr "平滑的自定义字段体验" + +#: admin/views/settings-info.php:28 +msgid "Improved Usability" +msgstr "改善用户体验" + +#: admin/views/settings-info.php:29 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" +"Select2 这个库,改善了内容对象,分类法,选择列表等字段的用户体验与速度。" + +#: admin/views/settings-info.php:33 +msgid "Improved Design" +msgstr "改善的设计" + +#: admin/views/settings-info.php:34 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "å¾ˆå¤šå­—æ®µå˜æ¼‚亮了,比如相册,关系,oEmbed 。" + +#: admin/views/settings-info.php:38 +msgid "Improved Data" +msgstr "改善的数æ®" + +#: admin/views/settings-info.php:39 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" +"釿–°è®¾è®¡äº†æ•°æ®ç»“构,让å­å­—段独立于它的爸爸。这样我们å¯ä»¥æŠŠå­—段放到父字段里," +"也å¯ä»¥ä»Žçˆ¶å­—段里拿出æ¥ã€‚" + +#: admin/views/settings-info.php:45 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "å†è§äº†æ‰©å±•,欢迎专业版" + +#: admin/views/settings-info.php:50 +msgid "Introducing ACF PRO" +msgstr "ACF 专业版介ç»" + +#: admin/views/settings-info.php:51 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "我们改进了为您æä¾›é«˜çº§åŠŸèƒ½çš„æ–¹æ³•ã€‚" + +#: admin/views/settings-info.php:52 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" +"之å‰çš„ 4 ä¸ªé«˜çº§åŠŸèƒ½æ‰©å±•çŽ°åœ¨è¢«ç»„åˆæˆäº†ä¸€ä¸ªæ–°çš„ ACF 专业版。" +"许å¯è¯åˆ†ä¸ºä¸¤ç§ï¼Œä¸ªäººä¸Žå¼€å‘者,现在这些高级功能更实惠也更易用。" + +#: admin/views/settings-info.php:56 +msgid "Powerful Features" +msgstr "强大的功能" + +#: admin/views/settings-info.php:57 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" +"ACF 专业版有é‡å¤æ•°æ®ï¼Œå¼¹æ€§å†…容布局,相册功能,还å¯ä»¥åˆ›å»ºé¡µé¢çš„管ç†é€‰é¡¹ã€‚" + +#: admin/views/settings-info.php:58 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "了解更多关于 ACF PRO 的功能。" + +#: admin/views/settings-info.php:62 +msgid "Easy Upgrading" +msgstr "便æ·çš„å‡çº§" + +#: admin/views/settings-info.php:63 +#, php-format +msgid "" +"To help make upgrading easy, login to your store account " +"and claim a free copy of ACF PRO!" +msgstr "ç™»å½•åˆ°å•†åº—å¸æˆ·ï¼Œå¯ä»¥æ–¹ä¾¿ä»¥åŽå‡çº§ã€‚" + +#: admin/views/settings-info.php:64 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk" +msgstr "" +"阅读 å‡çº§æ‰‹å†Œï¼Œéœ€è¦å¸®åŠ©è¯·è”ç³» 客æœ" + +#: admin/views/settings-info.php:72 +msgid "Under the Hood" +msgstr "工作原ç†" + +#: admin/views/settings-info.php:77 +msgid "Smarter field settings" +msgstr "æ›´èªæ˜Žçš„字段设置" + +#: admin/views/settings-info.php:78 +msgid "ACF now saves its field settings as individual post objects" +msgstr "ACF 现在用å•独的内容对象字段设置" + +#: admin/views/settings-info.php:82 +msgid "More AJAX" +msgstr "更多 AJAX" + +#: admin/views/settings-info.php:83 +msgid "More fields use AJAX powered search to speed up page loading" +msgstr "更多字段使用 AJAX æœç´¢ï¼Œè¿™è®©é¡µé¢åŠ è½½é€Ÿåº¦æ›´å¿«" + +#: admin/views/settings-info.php:87 +msgid "Local JSON" +msgstr "本地 JSON" + +#: admin/views/settings-info.php:88 +msgid "New auto export to JSON feature improves speed" +msgstr "改进了新的自动导出 JSON 功能的速度" + +#: admin/views/settings-info.php:94 +msgid "Better version control" +msgstr "更好的版本控制" + +#: admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature allows field settings to be version " +"controlled" +msgstr "新的自动 JSON 导出功能让字段设置å¯ä»¥åŒ…å«åœ¨ç‰ˆæœ¬æŽ§åˆ¶é‡Œ" + +#: admin/views/settings-info.php:99 +msgid "Swapped XML for JSON" +msgstr "用 JSON 替代 XML" + +#: admin/views/settings-info.php:100 +msgid "Import / Export now uses JSON in favour of XML" +msgstr "导入 / 导出现在用 JSON 代替以å‰çš„ XML" + +#: admin/views/settings-info.php:104 +msgid "New Forms" +msgstr "新表å•" + +#: admin/views/settings-info.php:105 +msgid "Fields can now be mapped to comments, widgets and all user forms!" +msgstr "字段现在å¯ä»¥ç”¨åœ¨è¯„论,å°å·¥å…·è¿˜æœ‰æ‰€æœ‰çš„用户表å•上。" + +#: admin/views/settings-info.php:112 +msgid "A new field for embedding content has been added" +msgstr "新添加了一个嵌入内容用的字段" + +#: admin/views/settings-info.php:116 +msgid "New Gallery" +msgstr "新相册" + +#: admin/views/settings-info.php:117 +msgid "The gallery field has undergone a much needed facelift" +msgstr "改进了相册字段的显示" + +#: admin/views/settings-info.php:121 +msgid "New Settings" +msgstr "新设置" + +#: admin/views/settings-info.php:122 +msgid "" +"Field group settings have been added for label placement and instruction " +"placement" +msgstr "字段组设置添加了标签ä½ç½®ä¸Žä»‹ç»ä½ç½®" + +#: admin/views/settings-info.php:128 +msgid "Better Front End Forms" +msgstr "更好的å‰ç«¯è¡¨å•" + +#: admin/views/settings-info.php:129 +msgid "acf_form() can now create a new post on submission" +msgstr "acf_form() 现在å¯ä»¥åœ¨æäº¤çš„æ—¶å€™åˆ›å»ºæ–°çš„内容" + +#: admin/views/settings-info.php:133 +msgid "Better Validation" +msgstr "æ›´å¥½çš„éªŒè¯æ–¹å¼" + +#: admin/views/settings-info.php:134 +msgid "Form validation is now done via PHP + AJAX in favour of only JS" +msgstr "表å•验è¯çŽ°åœ¨ä½¿ç”¨ PHP + AJAX 的方å¼" + +#: admin/views/settings-info.php:138 +msgid "Relationship Field" +msgstr "关系字段" + +#: admin/views/settings-info.php:139 +msgid "" +"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)" +msgstr "新的用æ¥è¿‡æ»¤çš„关系字段设置(æœç´¢ï¼Œå†…容类型,分类法)" + +#: admin/views/settings-info.php:145 +msgid "Moving Fields" +msgstr "移动字段" + +#: admin/views/settings-info.php:146 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents" +msgstr "新的字段组功能å¯ä»¥è®©æˆ‘们在群组与爸爸之间移动字段" + +#: admin/views/settings-info.php:150 fields/page_link.php:36 +msgid "Page Link" +msgstr "页é¢é“¾æŽ¥" + +#: admin/views/settings-info.php:151 +msgid "New archives group in page_link field selection" +msgstr "在 page_link 字段选择里的新的存档群组" + +#: admin/views/settings-info.php:155 +msgid "Better Options Pages" +msgstr "选项页é¢" + +#: admin/views/settings-info.php:156 +msgid "" +"New functions for options page allow creation of both parent and child menu " +"pages" +msgstr "选项页é¢çš„æ–°åŠŸèƒ½ï¼Œå¯ä»¥è®©ä½ åŒæ—¶åˆ›å»ºçˆ¶èœå•与å­èœå•页é¢" + +#: admin/views/settings-info.php:165 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "你会喜欢在 %s 里åšçš„修改。" + +#: admin/views/settings-tools-export.php:13 +msgid "Export Field Groups to PHP" +msgstr "导出字段组到PHP" + +#: admin/views/settings-tools-export.php:17 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" +"下é¢çš„代ç å¯ä»¥ç”¨æ¥åˆ›å»ºä¸€ä¸ªæœ¬åœ°ç‰ˆæœ¬çš„æ‰€é€‰å­—段组。本地字段组加载更快,å¯ä»¥ç‰ˆæœ¬" +"控制。你å¯ä»¥æŠŠä¸‹é¢è¿™äº›ä»£ç æ”¾åœ¨ä½ çš„主题的 functions.php 文件里。" + +#: admin/views/settings-tools.php:5 +msgid "Select Field Groups" +msgstr "选择字段组" + +#: admin/views/settings-tools.php:35 +msgid "Export Field Groups" +msgstr "导出字段组" + +#: admin/views/settings-tools.php:38 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" +"选择你想导出的字段组,然åŽé€‰æ‹©å¯¼å‡ºçš„æ–¹æ³•。使用 下载 按钮å¯ä»¥å¯¼å‡ºä¸€ä¸ª ." +"json 文件,你å¯ä»¥åœ¨å…¶å®ƒçš„网站里导入它。使用 ç”Ÿæˆ æŒ‰é’®å¯ä»¥å¯¼å‡º PHP 代" +"ç ï¼Œè¿™äº›ä»£ç å¯ä»¥æ”¾åœ¨ä½ çš„主题或æ’件里。" + +#: admin/views/settings-tools.php:50 +msgid "Download export file" +msgstr "下载导出文件" + +#: admin/views/settings-tools.php:51 +msgid "Generate export code" +msgstr "生æˆå¯¼å‡ºä»£ç " + +#: admin/views/settings-tools.php:64 +msgid "Import Field Groups" +msgstr "导入字段组" + +#: admin/views/settings-tools.php:67 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" +"选择你想导入的 Advanced Custom Fields JSON 文件,然åŽç‚¹å‡» 导入 按钮å¯" +"以导入 JSON 文件里定义的字段组。" + +#: admin/views/settings-tools.php:77 fields/file.php:46 +msgid "Select File" +msgstr "选择文件" + +#: admin/views/settings-tools.php:86 +msgid "Import" +msgstr "导入" + +#: admin/views/update-network.php:8 admin/views/update.php:8 +msgid "Advanced Custom Fields Database Upgrade" +msgstr "Advanced Custom Fields æ•°æ®åº“å‡çº§" + +#: admin/views/update-network.php:10 +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click “Upgrade Databaseâ€." +msgstr "下é¢çš„网站需è¦å‡çº§æ•°æ®åº“,点击 “å‡çº§æ•°æ®åº“†。" + +#: admin/views/update-network.php:19 admin/views/update-network.php:27 +msgid "Site" +msgstr "网站" + +#: admin/views/update-network.php:47 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "网站需è¦ä»Ž %s å‡çº§åˆ° %s" + +#: admin/views/update-network.php:49 +msgid "Site is up to date" +msgstr "网站已是最新版" + +#: admin/views/update-network.php:62 admin/views/update.php:16 +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "æ•°æ®åº“å‡çº§å®Œæˆï¼Œè¿”å›žç½‘ç»œé¢æ¿" + +#: admin/views/update-network.php:101 admin/views/update-notice.php:35 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "å‡çº§å‰æœ€å¥½å…ˆå¤‡ä»½ä¸€ä¸‹ã€‚确定现在å‡çº§å—?" + +#: admin/views/update-network.php:157 +msgid "Upgrade complete" +msgstr "å‡çº§å®Œæˆ" + +#: admin/views/update-network.php:161 +msgid "Upgrading data to" +msgstr "å‡çº§æ•°æ®åˆ°" + +#: admin/views/update-notice.php:23 +msgid "Database Upgrade Required" +msgstr "需è¦å‡çº§æ•°æ®åº“" + +#: admin/views/update-notice.php:25 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "感谢å‡çº§ %s v%s!" + +#: admin/views/update-notice.php:25 +msgid "" +"Before you start using the new awesome features, please update your database " +"to the newest version." +msgstr "先把数æ®åº“更新到最新版。" + +#: admin/views/update.php:12 +msgid "Reading upgrade tasks..." +msgstr "阅读更新任务..." + +#: admin/views/update.php:14 +#, php-format +msgid "Upgrading data to version %s" +msgstr "å‡çº§æ•°æ®åˆ° %s 版本" + +#: admin/views/update.php:16 +msgid "See what's new" +msgstr "查看更新" + +#: admin/views/update.php:110 +msgid "No updates available." +msgstr "没有å¯ç”¨æ›´æ–°ã€‚" + +#: api/api-helpers.php:821 +msgid "Thumbnail" +msgstr "缩略图" + +#: api/api-helpers.php:822 +msgid "Medium" +msgstr "中" + +#: api/api-helpers.php:823 +msgid "Large" +msgstr "大" + +#: api/api-helpers.php:871 +msgid "Full Size" +msgstr "原图" + +#: api/api-helpers.php:1581 +msgid "(no title)" +msgstr "(无标题)" + +#: api/api-helpers.php:3183 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "图åƒå®½åº¦è‡³å°‘得是 %dpx。" + +#: api/api-helpers.php:3188 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "图åƒå®½åº¦æœ€å¤§ä¸èƒ½è¶…过 %dpx。" + +#: api/api-helpers.php:3204 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "图åƒé«˜åº¦è‡³å°‘得是 %dpx。" + +#: api/api-helpers.php:3209 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "图åƒé«˜åº¦æœ€å¤§ä¸èƒ½è¶…过 %dpx。" + +#: api/api-helpers.php:3227 +#, php-format +msgid "File size must be at least %s." +msgstr "文件尺寸至少得是 %s。" + +#: api/api-helpers.php:3232 +#, php-format +msgid "File size must must not exceed %s." +msgstr "文件尺寸最大ä¸èƒ½è¶…过 %s。" + +#: api/api-helpers.php:3266 +#, php-format +msgid "File type must be %s." +msgstr "字段类型必须是 %s。" + +#: api/api-template.php:1289 pro/fields/gallery.php:564 +msgid "Update" +msgstr "æ›´æ–°" + +#: api/api-template.php:1290 +msgid "Post updated" +msgstr "内容已更新" + +#: core/field.php:131 +msgid "Basic" +msgstr "基本" + +#: core/field.php:132 +msgid "Content" +msgstr "内容" + +#: core/field.php:133 +msgid "Choice" +msgstr "选项" + +#: core/field.php:134 +msgid "Relational" +msgstr "关系" + +#: core/field.php:135 +msgid "jQuery" +msgstr "jQuery" + +#: core/field.php:136 fields/checkbox.php:226 fields/radio.php:231 +#: pro/fields/flexible-content.php:512 pro/fields/repeater.php:392 +msgid "Layout" +msgstr "æ ·å¼" + +#: core/input.php:129 +msgid "Expand Details" +msgstr "展开" + +#: core/input.php:130 +msgid "Collapse Details" +msgstr "折å " + +#: core/input.php:131 +msgid "Validation successful" +msgstr "éªŒè¯æˆåŠŸ" + +#: core/input.php:132 +msgid "Validation failed" +msgstr "验è¯å¤±è´¥" + +#: core/input.php:133 +msgid "1 field requires attention" +msgstr "1 ä¸ªå­—æ®µéœ€è¦æ³¨æ„" + +#: core/input.php:134 +#, php-format +msgid "%d fields require attention" +msgstr "%d ä¸ªå­—æ®µéœ€è¦æ³¨æ„" + +#: core/input.php:135 +msgid "Restricted" +msgstr "é™åˆ¶" + +#: core/input.php:533 +#, php-format +msgid "%s value is required" +msgstr "%s 的值是必填项" + +#: fields/checkbox.php:36 fields/taxonomy.php:752 +msgid "Checkbox" +msgstr "å¤é€‰æ¡†" + +#: fields/checkbox.php:144 +msgid "Toggle All" +msgstr "åˆ‡æ¢æ‰€æœ‰" + +#: fields/checkbox.php:208 fields/radio.php:193 fields/select.php:388 +msgid "Choices" +msgstr "选项" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "Enter each choice on a new line." +msgstr "输入选项,æ¯è¡Œä¸€ä¸ª" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "For more control, you may specify both a value and label like this:" +msgstr "å¦‚æžœéœ€è¦æ›´å¤šæŽ§åˆ¶ï¼Œä½ æŒ‰ç…§ä¸€ä¸‹æ ¼å¼ï¼Œå®šä¹‰ä¸€ä¸ªå€¼å’Œæ ‡ç­¾å¯¹ï¼š" + +#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:389 +msgid "red : Red" +msgstr " red : Red " + +#: fields/checkbox.php:217 fields/color_picker.php:158 fields/email.php:124 +#: fields/number.php:150 fields/radio.php:222 fields/select.php:397 +#: fields/text.php:148 fields/textarea.php:145 fields/true_false.php:115 +#: fields/url.php:117 fields/wysiwyg.php:345 +msgid "Default Value" +msgstr "默认值" + +#: fields/checkbox.php:218 fields/select.php:398 +msgid "Enter each default value on a new line" +msgstr "æ¯è¡Œè¾“入一个默认值" + +#: fields/checkbox.php:232 fields/radio.php:237 +msgid "Vertical" +msgstr "垂直" + +#: fields/checkbox.php:233 fields/radio.php:238 +msgid "Horizontal" +msgstr "æ°´å¹³" + +#: fields/checkbox.php:240 +msgid "Toggle" +msgstr "切æ¢" + +#: fields/checkbox.php:241 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "添加一个å¯ä»¥åˆ‡æ¢æ‰€æœ‰é€‰æ‹©çš„å¤é€‰æ¡†" + +#: fields/color_picker.php:36 +msgid "Color Picker" +msgstr "颜色选择" + +#: fields/color_picker.php:94 +msgid "Clear" +msgstr "清除" + +#: fields/color_picker.php:95 +msgid "Default" +msgstr "默认" + +#: fields/color_picker.php:96 +msgid "Select Color" +msgstr "选择颜色" + +#: fields/date_picker.php:36 +msgid "Date Picker" +msgstr "日期选择" + +#: fields/date_picker.php:72 +msgid "Done" +msgstr "完æˆ" + +#: fields/date_picker.php:73 +msgid "Today" +msgstr "今天" + +#: fields/date_picker.php:76 +msgid "Show a different month" +msgstr "显示其他月份" + +#: fields/date_picker.php:149 +msgid "Display Format" +msgstr "显示格å¼" + +#: fields/date_picker.php:150 +msgid "The format displayed when editing a post" +msgstr "编辑内容的时候显示的格å¼" + +#: fields/date_picker.php:164 +msgid "Return format" +msgstr "返回格å¼" + +#: fields/date_picker.php:165 +msgid "The format returned via template functions" +msgstr "通过模æ¿å‡½æ•°è¿”回的格å¼" + +#: fields/date_picker.php:180 +msgid "Week Starts On" +msgstr "æ¯å‘¨å¼€å§‹äºŽ" + +#: fields/email.php:36 +msgid "Email" +msgstr "电å­é‚®ä»¶" + +#: fields/email.php:125 fields/number.php:151 fields/radio.php:223 +#: fields/text.php:149 fields/textarea.php:146 fields/url.php:118 +#: fields/wysiwyg.php:346 +msgid "Appears when creating a new post" +msgstr "创建新内容的时候显示" + +#: fields/email.php:133 fields/number.php:159 fields/password.php:137 +#: fields/text.php:157 fields/textarea.php:154 fields/url.php:126 +msgid "Placeholder Text" +msgstr "点ä½ç¬¦æ–‡æœ¬" + +#: fields/email.php:134 fields/number.php:160 fields/password.php:138 +#: fields/text.php:158 fields/textarea.php:155 fields/url.php:127 +msgid "Appears within the input" +msgstr "在 input 内部显示" + +#: fields/email.php:142 fields/number.php:168 fields/password.php:146 +#: fields/text.php:166 +msgid "Prepend" +msgstr "å‰ç½®" + +#: fields/email.php:143 fields/number.php:169 fields/password.php:147 +#: fields/text.php:167 +msgid "Appears before the input" +msgstr "在 input å‰é¢æ˜¾ç¤º" + +#: fields/email.php:151 fields/number.php:177 fields/password.php:155 +#: fields/text.php:175 +msgid "Append" +msgstr "追加" + +#: fields/email.php:152 fields/number.php:178 fields/password.php:156 +#: fields/text.php:176 +msgid "Appears after the input" +msgstr "在 input åŽé¢æ˜¾ç¤º" + +#: fields/file.php:36 +msgid "File" +msgstr "文件" + +#: fields/file.php:47 +msgid "Edit File" +msgstr "编辑文件" + +#: fields/file.php:48 +msgid "Update File" +msgstr "更新文件" + +#: fields/file.php:49 pro/fields/gallery.php:55 +msgid "uploaded to this post" +msgstr "上传到这个内容" + +#: fields/file.php:142 +msgid "File Name" +msgstr "文件å" + +#: fields/file.php:146 +msgid "File Size" +msgstr "文件尺寸" + +#: fields/file.php:169 +msgid "No File selected" +msgstr "没有选择文件" + +#: fields/file.php:169 +msgid "Add File" +msgstr "添加文件" + +#: fields/file.php:214 fields/image.php:195 fields/taxonomy.php:821 +msgid "Return Value" +msgstr "返回值" + +#: fields/file.php:215 fields/image.php:196 +msgid "Specify the returned value on front end" +msgstr "指定å‰ç«¯è¿”回的值" + +#: fields/file.php:220 +msgid "File Array" +msgstr "文件数组" + +#: fields/file.php:221 +msgid "File URL" +msgstr "文件URL" + +#: fields/file.php:222 +msgid "File ID" +msgstr "文件ID" + +#: fields/file.php:229 fields/image.php:220 pro/fields/gallery.php:647 +msgid "Library" +msgstr "库" + +#: fields/file.php:230 fields/image.php:221 pro/fields/gallery.php:648 +msgid "Limit the media library choice" +msgstr "é™åˆ¶åª’体库的选择" + +#: fields/file.php:236 fields/image.php:227 pro/fields/gallery.php:654 +msgid "Uploaded to post" +msgstr "上传到内容" + +#: fields/file.php:243 fields/image.php:234 pro/fields/gallery.php:661 +msgid "Minimum" +msgstr "最å°" + +#: fields/file.php:244 fields/file.php:255 +msgid "Restrict which files can be uploaded" +msgstr "é™åˆ¶ä»€ä¹ˆç±»åž‹çš„æ–‡ä»¶å¯ä»¥ä¸Šä¼ " + +#: fields/file.php:247 fields/file.php:258 fields/image.php:257 +#: fields/image.php:290 pro/fields/gallery.php:684 pro/fields/gallery.php:717 +msgid "File size" +msgstr "文件尺寸" + +#: fields/file.php:254 fields/image.php:267 pro/fields/gallery.php:694 +msgid "Maximum" +msgstr "最大" + +#: fields/file.php:265 fields/image.php:300 pro/fields/gallery.php:727 +msgid "Allowed file types" +msgstr "å…许的文字类型" + +#: fields/file.php:266 fields/image.php:301 pro/fields/gallery.php:728 +msgid "Comma separated list. Leave blank for all types" +msgstr "用英文逗å·åˆ†éš”开,留空则为全部类型" + +#: fields/google-map.php:36 +msgid "Google Map" +msgstr "谷歌地图" + +#: fields/google-map.php:51 +msgid "Locating" +msgstr "定ä½" + +#: fields/google-map.php:52 +msgid "Sorry, this browser does not support geolocation" +msgstr "抱歉,æµè§ˆå™¨ä¸æ”¯æŒå®šä½" + +#: fields/google-map.php:135 +msgid "Clear location" +msgstr "清除ä½ç½®" + +#: fields/google-map.php:140 +msgid "Find current location" +msgstr "æœç´¢å½“å‰ä½ç½®" + +#: fields/google-map.php:141 +msgid "Search for address..." +msgstr "æœç´¢åœ°å€... " + +#: fields/google-map.php:173 fields/google-map.php:184 +msgid "Center" +msgstr "居中" + +#: fields/google-map.php:174 fields/google-map.php:185 +msgid "Center the initial map" +msgstr "居中显示åˆå§‹åœ°å›¾" + +#: fields/google-map.php:198 +msgid "Zoom" +msgstr "缩放" + +#: fields/google-map.php:199 +msgid "Set the initial zoom level" +msgstr "设置åˆå§‹ç¼©æ”¾çº§åˆ«" + +#: fields/google-map.php:208 fields/image.php:246 fields/image.php:279 +#: fields/oembed.php:262 pro/fields/gallery.php:673 pro/fields/gallery.php:706 +msgid "Height" +msgstr "高度" + +#: fields/google-map.php:209 +msgid "Customise the map height" +msgstr "自定义地图高度" + +#: fields/image.php:36 +msgid "Image" +msgstr "图åƒ" + +#: fields/image.php:51 +msgid "Select Image" +msgstr "选择图åƒ" + +#: fields/image.php:52 pro/fields/gallery.php:53 +msgid "Edit Image" +msgstr "编辑图片" + +#: fields/image.php:53 pro/fields/gallery.php:54 +msgid "Update Image" +msgstr "更新图åƒ" + +#: fields/image.php:54 +msgid "Uploaded to this post" +msgstr "上传到这个内容" + +#: fields/image.php:55 +msgid "All images" +msgstr "所有图片" + +#: fields/image.php:147 +msgid "No image selected" +msgstr "没有选择图片" + +#: fields/image.php:147 +msgid "Add Image" +msgstr "添加图片" + +#: fields/image.php:201 +msgid "Image Array" +msgstr "å›¾åƒæ•°ç»„" + +#: fields/image.php:202 +msgid "Image URL" +msgstr "å›¾åƒ URL" + +#: fields/image.php:203 +msgid "Image ID" +msgstr "图åƒID" + +#: fields/image.php:210 pro/fields/gallery.php:637 +msgid "Preview Size" +msgstr "预览图大å°" + +#: fields/image.php:211 pro/fields/gallery.php:638 +msgid "Shown when entering data" +msgstr "è¾“å…¥æ•°æ®æ—¶æ˜¾ç¤º" + +#: fields/image.php:235 fields/image.php:268 pro/fields/gallery.php:662 +#: pro/fields/gallery.php:695 +msgid "Restrict which images can be uploaded" +msgstr "é™åˆ¶å¯ä»¥ä¸Šä¼ çš„图åƒ" + +#: fields/image.php:238 fields/image.php:271 fields/oembed.php:251 +#: pro/fields/gallery.php:665 pro/fields/gallery.php:698 +msgid "Width" +msgstr "宽度" + +#: fields/message.php:36 fields/message.php:103 fields/true_false.php:106 +msgid "Message" +msgstr "消æ¯" + +#: fields/message.php:104 +msgid "Please note that all text will first be passed through the wp function " +msgstr "请注æ„,所有文本将首页通过WP过滤功能" + +#: fields/message.php:112 +msgid "Escape HTML" +msgstr "转义 HTML" + +#: fields/message.php:113 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "显示 HTML æ–‡æœ¬ï¼Œè€Œä¸æ˜¯æ¸²æŸ“ HTML" + +#: fields/number.php:36 +msgid "Number" +msgstr "å·ç " + +#: fields/number.php:186 +msgid "Minimum Value" +msgstr "最å°å€¼" + +#: fields/number.php:195 +msgid "Maximum Value" +msgstr "最大值" + +#: fields/number.php:204 +msgid "Step Size" +msgstr "步长" + +#: fields/number.php:242 +msgid "Value must be a number" +msgstr "值必须是数字" + +#: fields/number.php:260 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "值è¦å¤§äºŽç­‰äºŽ %d" + +#: fields/number.php:268 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "值è¦å°äºŽç­‰äºŽ %d" + +#: fields/oembed.php:36 +msgid "oEmbed" +msgstr "oEmbed" + +#: fields/oembed.php:199 +msgid "Enter URL" +msgstr "输入 URL" + +#: fields/oembed.php:212 +msgid "No embed found for the given URL." +msgstr "在 URL 里没å‘现嵌入。" + +#: fields/oembed.php:248 fields/oembed.php:259 +msgid "Embed Size" +msgstr "嵌入尺寸" + +#: fields/page_link.php:206 +msgid "Archives" +msgstr "存档" + +#: fields/page_link.php:535 fields/post_object.php:401 +#: fields/relationship.php:690 +msgid "Filter by Post Type" +msgstr "按内容类型筛选" + +#: fields/page_link.php:543 fields/post_object.php:409 +#: fields/relationship.php:698 +msgid "All post types" +msgstr "所有内容类型" + +#: fields/page_link.php:549 fields/post_object.php:415 +#: fields/relationship.php:704 +msgid "Filter by Taxonomy" +msgstr "按分类筛选" + +#: fields/page_link.php:557 fields/post_object.php:423 +#: fields/relationship.php:712 +msgid "All taxonomies" +msgstr "所有分类法" + +#: fields/page_link.php:563 fields/post_object.php:429 fields/select.php:406 +#: fields/taxonomy.php:765 fields/user.php:452 +msgid "Allow Null?" +msgstr "是å¦å…许空值?" + +#: fields/page_link.php:577 fields/post_object.php:443 fields/select.php:420 +#: fields/user.php:466 +msgid "Select multiple values?" +msgstr "是å¦é€‰æ‹©å¤šä¸ªå€¼ï¼Ÿ" + +#: fields/password.php:36 +msgid "Password" +msgstr "密ç " + +#: fields/post_object.php:36 fields/post_object.php:462 +#: fields/relationship.php:769 +msgid "Post Object" +msgstr "文章对象" + +#: fields/post_object.php:457 fields/relationship.php:764 +msgid "Return Format" +msgstr "返回格å¼" + +#: fields/post_object.php:463 fields/relationship.php:770 +msgid "Post ID" +msgstr "Post ID" + +#: fields/radio.php:36 +msgid "Radio Button" +msgstr "å•选按钮" + +#: fields/radio.php:202 +msgid "Other" +msgstr "å…¶ä»–" + +#: fields/radio.php:206 +msgid "Add 'other' choice to allow for custom values" +msgstr "为自定义值添加 'other' 选择" + +#: fields/radio.php:212 +msgid "Save Other" +msgstr "ä¿å­˜å…¶å®ƒ" + +#: fields/radio.php:216 +msgid "Save 'other' values to the field's choices" +msgstr "存档为字段的选择的 'other' 的值" + +#: fields/relationship.php:36 +msgid "Relationship" +msgstr "关系" + +#: fields/relationship.php:48 +msgid "Minimum values reached ( {min} values )" +msgstr "已到最å°å€¼ ( {min} values )" + +#: fields/relationship.php:49 +msgid "Maximum values reached ( {max} values )" +msgstr "达到了最大值 ( {max} 值 ) " + +#: fields/relationship.php:50 +msgid "Loading" +msgstr "加载" + +#: fields/relationship.php:51 +msgid "No matches found" +msgstr "没找到匹é…的结果" + +#: fields/relationship.php:571 +msgid "Search..." +msgstr "æœç´¢..." + +#: fields/relationship.php:580 +msgid "Select post type" +msgstr "选择内容类型" + +#: fields/relationship.php:593 +msgid "Select taxonomy" +msgstr "选择分类" + +#: fields/relationship.php:723 +msgid "Search" +msgstr "æœç´¢" + +#: fields/relationship.php:725 fields/taxonomy.php:36 fields/taxonomy.php:735 +msgid "Taxonomy" +msgstr "分类法" + +#: fields/relationship.php:732 +msgid "Elements" +msgstr "元素" + +#: fields/relationship.php:733 +msgid "Selected elements will be displayed in each result" +msgstr "选择的元素将在æ¯ä¸ªç»“果中显示。" + +#: fields/relationship.php:744 +msgid "Minimum posts" +msgstr "最å°å†…容" + +#: fields/relationship.php:753 +msgid "Maximum posts" +msgstr "最大文章数" + +#: fields/select.php:36 fields/select.php:174 fields/taxonomy.php:757 +msgid "Select" +msgstr "选择" + +#: fields/select.php:434 +msgid "Stylised UI" +msgstr "装饰的界é¢" + +#: fields/select.php:448 +msgid "Use AJAX to lazy load choices?" +msgstr "使用 AJAX 惰性选择?" + +#: fields/tab.php:36 +msgid "Tab" +msgstr "选项å¡" + +#: fields/tab.php:128 +msgid "Warning" +msgstr "警告" + +#: fields/tab.php:133 +msgid "" +"The tab field will display incorrectly when added to a Table style repeater " +"field or flexible content field layout" +msgstr "标签字段ä¸èƒ½åœ¨ Table æ ·å¼çš„é‡å¤å­—æ®µæˆ–è€…çµæ´»å†…容字段布局里正常显示" + +#: fields/tab.php:146 +msgid "" +"Use \"Tab Fields\" to better organize your edit screen by grouping fields " +"together." +msgstr "使用 \"标签字段\" å¯ä»¥æŠŠå­—æ®µç»„ç»‡èµ·æ¥æ›´å¥½åœ°åœ¨ç¼–辑界é¢ä¸Šæ˜¾ç¤ºã€‚" + +#: fields/tab.php:148 +msgid "" +"All fields following this \"tab field\" (or until another \"tab field\" is " +"defined) will be grouped together using this field's label as the tab " +"heading." +msgstr "" +"在这个 \"tab field\" (或直到定义了其它的 \"tab field\" ) 以下的所有字段,都会" +"被用这个字段标签作为标题的标签(Tab)组织到一å—。" + +#: fields/tab.php:155 +msgid "Placement" +msgstr "ä½ç½®" + +#: fields/tab.php:167 +msgid "End-point" +msgstr "端点" + +#: fields/tab.php:168 +msgid "Use this field as an end-point and start a new group of tabs" +msgstr "使用这个字段作为端点去创建新的标签群组" + +#: fields/taxonomy.php:565 +#, php-format +msgid "Add new %s " +msgstr "添加新的 %s" + +#: fields/taxonomy.php:704 +msgid "None" +msgstr "None" + +#: fields/taxonomy.php:736 +msgid "Select the taxonomy to be displayed" +msgstr "é€‰æ‹©è¦æ˜¾ç¤ºçš„分类法" + +#: fields/taxonomy.php:745 +msgid "Appearance" +msgstr "外观" + +#: fields/taxonomy.php:746 +msgid "Select the appearance of this field" +msgstr "为这个字段选择外观" + +#: fields/taxonomy.php:751 +msgid "Multiple Values" +msgstr "多选" + +#: fields/taxonomy.php:753 +msgid "Multi Select" +msgstr "多选" + +#: fields/taxonomy.php:755 +msgid "Single Value" +msgstr "å•个值" + +#: fields/taxonomy.php:756 +msgid "Radio Buttons" +msgstr "å•选框" + +#: fields/taxonomy.php:779 +msgid "Create Terms" +msgstr "åˆ›å»ºåˆ†ç±»è¯æ±‡" + +#: fields/taxonomy.php:780 +msgid "Allow new terms to be created whilst editing" +msgstr "在编辑时å…许å¯ä»¥åˆ›å»ºæ–°çš„åˆ†ç±»è¯æ±‡" + +#: fields/taxonomy.php:793 +msgid "Save Terms" +msgstr "ä¿å­˜åˆ†ç±»è¯æ±‡" + +#: fields/taxonomy.php:794 +msgid "Connect selected terms to the post" +msgstr "è¿žæŽ¥æ‰€é€‰åˆ†ç±»è¯æ±‡åˆ°å†…容" + +#: fields/taxonomy.php:807 +msgid "Load Terms" +msgstr "åŠ è½½åˆ†ç±»è¯æ±‡" + +#: fields/taxonomy.php:808 +msgid "Load value from posts terms" +msgstr "è½½å…¥å†…å®¹åˆ†ç±»è¯æ±‡çš„值" + +#: fields/taxonomy.php:826 +msgid "Term Object" +msgstr "对象缓存" + +#: fields/taxonomy.php:827 +msgid "Term ID" +msgstr "内容ID" + +#: fields/taxonomy.php:886 +#, php-format +msgid "User unable to add new %s" +msgstr "用户无法添加新的 %s" + +#: fields/taxonomy.php:899 +#, php-format +msgid "%s already exists" +msgstr "%s 已存在" + +#: fields/taxonomy.php:940 +#, php-format +msgid "%s added" +msgstr "%s 已添加" + +#: fields/taxonomy.php:985 +msgid "Add" +msgstr "添加" + +#: fields/text.php:36 +msgid "Text" +msgstr "文本" + +#: fields/text.php:184 fields/textarea.php:163 +msgid "Character Limit" +msgstr "字符é™åˆ¶" + +#: fields/text.php:185 fields/textarea.php:164 +msgid "Leave blank for no limit" +msgstr "留空则ä¸é™åˆ¶" + +#: fields/textarea.php:36 +msgid "Text Area" +msgstr "文本段" + +#: fields/textarea.php:172 +msgid "Rows" +msgstr "行" + +#: fields/textarea.php:173 +msgid "Sets the textarea height" +msgstr "设置文本区域的高度" + +#: fields/textarea.php:182 +msgid "New Lines" +msgstr "新行" + +#: fields/textarea.php:183 +msgid "Controls how new lines are rendered" +msgstr "控制怎么显示新行" + +#: fields/textarea.php:187 +msgid "Automatically add paragraphs" +msgstr "自动添加段è½" + +#: fields/textarea.php:188 +msgid "Automatically add <br>" +msgstr "自动添加 <br>" + +#: fields/textarea.php:189 +msgid "No Formatting" +msgstr "æ— æ ¼å¼" + +#: fields/true_false.php:36 +msgid "True / False" +msgstr "真/å‡" + +#: fields/true_false.php:107 +msgid "eg. Show extra content" +msgstr "例如:显示附加内容" + +#: fields/url.php:36 +msgid "Url" +msgstr "地å€" + +#: fields/url.php:160 +msgid "Value must be a valid URL" +msgstr "值必须是有效的地å€" + +#: fields/user.php:437 +msgid "Filter by role" +msgstr "æ ¹æ®è§’色过滤" + +#: fields/user.php:445 +msgid "All user roles" +msgstr "所有用户角色" + +#: fields/wysiwyg.php:37 +msgid "Wysiwyg Editor" +msgstr "å¯è§†åŒ–编辑器" + +#: fields/wysiwyg.php:297 +msgid "Visual" +msgstr "显示" + +#: fields/wysiwyg.php:298 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "文本" + +#: fields/wysiwyg.php:354 +msgid "Tabs" +msgstr "标签" + +#: fields/wysiwyg.php:359 +msgid "Visual & Text" +msgstr "显示与文本" + +#: fields/wysiwyg.php:360 +msgid "Visual Only" +msgstr "åªæœ‰æ˜¾ç¤º" + +#: fields/wysiwyg.php:361 +msgid "Text Only" +msgstr "纯文本" + +#: fields/wysiwyg.php:368 +msgid "Toolbar" +msgstr "工具æ¡" + +#: fields/wysiwyg.php:378 +msgid "Show Media Upload Buttons?" +msgstr "æ˜¯å¦æ˜¾ç¤ºåª’体上传按钮?" + +#: forms/post.php:297 pro/admin/options-page.php:373 +msgid "Edit field group" +msgstr "编辑字段组" + +#: pro/acf-pro.php:24 +msgid "Advanced Custom Fields PRO" +msgstr "Advanced Custom Fields 专业版" + +#: pro/acf-pro.php:175 +msgid "Flexible Content requires at least 1 layout" +msgstr "çµæ´»å†…容字段需è¦è‡³å°‘一个布局" + +#: pro/admin/options-page.php:48 +msgid "Options Page" +msgstr "选项页é¢" + +#: pro/admin/options-page.php:83 +msgid "No options pages exist" +msgstr "还没有选项页é¢" + +#: pro/admin/options-page.php:298 +msgid "Options Updated" +msgstr "选项已更新" + +#: pro/admin/options-page.php:304 +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" +"这个选项页上还没有自定义字段群组。创建自定义字段群组" + +#: pro/admin/settings-updates.php:137 +msgid "Error. Could not connect to update server" +msgstr "错误,ä¸èƒ½è¿žæŽ¥åˆ°æ›´æ–°æœåС噍" + +#: pro/admin/settings-updates.php:267 pro/admin/settings-updates.php:338 +msgid "Connection Error. Sorry, please try again" +msgstr "连接错误,å†è¯•一次" + +#: pro/admin/views/options-page.php:48 +msgid "Publish" +msgstr "å‘布" + +#: pro/admin/views/options-page.php:54 +msgid "Save Options" +msgstr "ä¿å­˜" + +#: pro/admin/views/settings-updates.php:11 +msgid "Deactivate License" +msgstr "关闭许å¯è¯" + +#: pro/admin/views/settings-updates.php:11 +msgid "Activate License" +msgstr "激活许å¯è¯" + +#: pro/admin/views/settings-updates.php:21 +msgid "License" +msgstr "许å¯" + +#: pro/admin/views/settings-updates.php:24 +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see" +msgstr "è§£é”æ›´æ–°ï¼Œè¾“入许å¯è¯å·ã€‚还没有许å¯è¯å·ï¼Œè¯·çœ‹" + +#: pro/admin/views/settings-updates.php:24 +msgid "details & pricing" +msgstr "详情与定价" + +#: pro/admin/views/settings-updates.php:33 +msgid "License Key" +msgstr "许å¯è¯å·" + +#: pro/admin/views/settings-updates.php:65 +msgid "Update Information" +msgstr "æ›´æ–°ä¿¡æ¯" + +#: pro/admin/views/settings-updates.php:72 +msgid "Current Version" +msgstr "当å‰ç‰ˆæœ¬" + +#: pro/admin/views/settings-updates.php:80 +msgid "Latest Version" +msgstr "最新版本" + +#: pro/admin/views/settings-updates.php:88 +msgid "Update Available" +msgstr "å¯ç”¨æ›´æ–°" + +#: pro/admin/views/settings-updates.php:96 +msgid "Update Plugin" +msgstr "æ›´æ–°æ’ä»¶" + +#: pro/admin/views/settings-updates.php:98 +msgid "Please enter your license key above to unlock updates" +msgstr "在上é¢è¾“入许å¯è¯å·è§£é”æ›´æ–°" + +#: pro/admin/views/settings-updates.php:104 +msgid "Check Again" +msgstr "釿–°æ£€æŸ¥" + +#: pro/admin/views/settings-updates.php:121 +msgid "Upgrade Notice" +msgstr "更新通知" + +#: pro/api/api-options-page.php:22 pro/api/api-options-page.php:23 +msgid "Options" +msgstr "选项" + +#: pro/core/updates.php:186 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing" +msgstr "" +"å¯ç”¨æ›´æ–°ï¼Œå…ˆåœ¨ æ›´æ–° 页é¢è¾“入许å¯è¯ã€‚还没有许å¯è¯ï¼Œè¯·æŸ¥çœ‹ " +"详情与定价" + +#: pro/fields/flexible-content.php:36 +msgid "Flexible Content" +msgstr "大段内容" + +#: pro/fields/flexible-content.php:42 pro/fields/repeater.php:43 +msgid "Add Row" +msgstr "添加行" + +#: pro/fields/flexible-content.php:45 +msgid "layout" +msgstr "布局" + +#: pro/fields/flexible-content.php:46 +msgid "layouts" +msgstr "布局" + +#: pro/fields/flexible-content.php:47 +msgid "remove {layout}?" +msgstr "删除 {layout}?" + +#: pro/fields/flexible-content.php:48 +msgid "This field requires at least {min} {identifier}" +msgstr "这个字段需è¦è‡³å°‘ {min} {identifier}" + +#: pro/fields/flexible-content.php:49 +msgid "This field has a limit of {max} {identifier}" +msgstr "这个字段é™åˆ¶æœ€å¤§ä¸º {max} {identifier}" + +#: pro/fields/flexible-content.php:50 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "这个字段需è¦è‡³å°‘ {min} {label} {identifier}" + +#: pro/fields/flexible-content.php:51 +msgid "Maximum {label} limit reached ({max} {identifier})" +msgstr "{label} 已到最大é™åˆ¶ ({max} {identifier})" + +#: pro/fields/flexible-content.php:52 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "{available} {label} {identifier} å¯ç”¨ (max {max})" + +#: pro/fields/flexible-content.php:53 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "{required} {label} {identifier} éœ€è¦ (min {min})" + +#: pro/fields/flexible-content.php:211 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "点击下é¢çš„ \"%s\" 按钮创建布局" + +#: pro/fields/flexible-content.php:369 +msgid "Add layout" +msgstr "添加布局" + +#: pro/fields/flexible-content.php:372 +msgid "Remove layout" +msgstr "删除布局" + +#: pro/fields/flexible-content.php:514 +msgid "Reorder Layout" +msgstr "釿ޒåºå¸ƒå±€" + +#: pro/fields/flexible-content.php:514 +msgid "Reorder" +msgstr "釿ޒåº" + +#: pro/fields/flexible-content.php:515 +msgid "Delete Layout" +msgstr "删除布局" + +#: pro/fields/flexible-content.php:516 +msgid "Duplicate Layout" +msgstr "å¤åˆ¶å¸ƒå±€" + +#: pro/fields/flexible-content.php:517 +msgid "Add New Layout" +msgstr "添加新布局" + +#: pro/fields/flexible-content.php:561 +msgid "Display" +msgstr "显示" + +#: pro/fields/flexible-content.php:572 pro/fields/repeater.php:399 +msgid "Table" +msgstr "表" + +#: pro/fields/flexible-content.php:573 pro/fields/repeater.php:400 +msgid "Block" +msgstr "区å—" + +#: pro/fields/flexible-content.php:574 pro/fields/repeater.php:401 +msgid "Row" +msgstr "行" + +#: pro/fields/flexible-content.php:589 +msgid "Min" +msgstr "最å°" + +#: pro/fields/flexible-content.php:602 +msgid "Max" +msgstr "最大" + +#: pro/fields/flexible-content.php:630 pro/fields/repeater.php:408 +msgid "Button Label" +msgstr "按钮标签" + +#: pro/fields/flexible-content.php:639 +msgid "Minimum Layouts" +msgstr "最å°å¸ƒå±€" + +#: pro/fields/flexible-content.php:648 +msgid "Maximum Layouts" +msgstr "最大布局" + +#: pro/fields/gallery.php:36 +msgid "Gallery" +msgstr "相册" + +#: pro/fields/gallery.php:52 +msgid "Add Image to Gallery" +msgstr "添加图片到相册" + +#: pro/fields/gallery.php:56 +msgid "Maximum selection reached" +msgstr "已到最大选择" + +#: pro/fields/gallery.php:335 +msgid "Length" +msgstr "长度" + +#: pro/fields/gallery.php:355 +msgid "Remove" +msgstr "删除" + +#: pro/fields/gallery.php:535 +msgid "Add to gallery" +msgstr "添加到相册" + +#: pro/fields/gallery.php:539 +msgid "Bulk actions" +msgstr "批é‡åŠ¨ä½œ" + +#: pro/fields/gallery.php:540 +msgid "Sort by date uploaded" +msgstr "按上传日期排åº" + +#: pro/fields/gallery.php:541 +msgid "Sort by date modified" +msgstr "按修改日期排åº" + +#: pro/fields/gallery.php:542 +msgid "Sort by title" +msgstr "按标题排åº" + +#: pro/fields/gallery.php:543 +msgid "Reverse current order" +msgstr "颠倒当剿ޒåº" + +#: pro/fields/gallery.php:561 +msgid "Close" +msgstr "关闭" + +#: pro/fields/gallery.php:619 +msgid "Minimum Selection" +msgstr "最å°é€‰æ‹©" + +#: pro/fields/gallery.php:628 +msgid "Maximum Selection" +msgstr "最大选择" + +#: pro/fields/gallery.php:809 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "%s 需è¦è‡³å°‘ %s 个选择" + +#: pro/fields/repeater.php:36 +msgid "Repeater" +msgstr "é‡å¤å™¨" + +#: pro/fields/repeater.php:46 +msgid "Minimum rows reached ({min} rows)" +msgstr "已到最å°è¡Œæ•° ({min} 行)" + +#: pro/fields/repeater.php:47 +msgid "Maximum rows reached ({max} rows)" +msgstr "已到最大行数 ({max} 行)" + +#: pro/fields/repeater.php:259 +msgid "Drag to reorder" +msgstr "拖拽排åº" + +#: pro/fields/repeater.php:301 +msgid "Add row" +msgstr "添加行" + +#: pro/fields/repeater.php:302 +msgid "Remove row" +msgstr "删除行" + +#: pro/fields/repeater.php:350 +msgid "Sub Fields" +msgstr "å­å­—段" + +#: pro/fields/repeater.php:372 +msgid "Minimum Rows" +msgstr "最å°è¡Œæ•°" + +#: pro/fields/repeater.php:382 +msgid "Maximum Rows" +msgstr "最大行数" + +#. Plugin Name of the plugin/theme +msgid "Advanced Custom Fields Pro" +msgstr "Advanced Custom Fields 专业版" + +#. Plugin URI of the plugin/theme +msgid "http://www.advancedcustomfields.com/" +msgstr "http://www.advancedcustomfields.com/" + +#. Description of the plugin/theme +msgid "Customise WordPress with powerful, professional and intuitive fields." +msgstr "用强大专业的字段定制 WordPress。" + +#. Author of the plugin/theme +msgid "elliot condon" +msgstr "elliot condon" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "http://www.elliotcondon.com/" + +#, fuzzy +#~ msgid "Show Field Keys" +#~ msgstr "显示字段密钥:" + +#, fuzzy +#~ msgid "Private" +#~ msgstr "激活" + +#, fuzzy +#~ msgid "Revision" +#~ msgstr "版本控制" + +#, fuzzy +#~ msgid "Field groups are created in order from lowest to highest" +#~ msgstr "字段组排åº
                          从低到高。" + +#, fuzzy +#~ msgid "ACF PRO Required" +#~ msgstr "(必填项)" + +#, fuzzy +#~ msgid "Update Database" +#~ msgstr "å‡çº§æ•°æ®åº“" + +#, fuzzy +#~ msgid "Data Upgrade" +#~ msgstr "å‡çº§" + +#, fuzzy +#~ msgid "Data is at the latest version." +#~ msgstr "éžå¸¸æ„Ÿè°¢ä½ å‡çº§æ’件到最新版本ï¼" + +#~ msgid "Load & Save Terms to Post" +#~ msgstr "加载&ä¿å­˜æ¡ç›®åˆ°æ–‡ç« ã€‚" + +#~ msgid "" +#~ "Load value based on the post's terms and update the post's terms on save" +#~ msgstr "在文章上加载值,ä¿å­˜æ—¶æ›´æ–°æ–‡ç« æ¡ç›®ã€‚" + +#, fuzzy +#~ msgid "image" +#~ msgstr "图åƒ" + +#, fuzzy +#~ msgid "relationship" +#~ msgstr "关系" + +#, fuzzy +#~ msgid "unload" +#~ msgstr "下载" + +#, fuzzy +#~ msgid "title_is_required" +#~ msgstr "字段组已å‘布。" + +#, fuzzy +#~ msgid "move_field" +#~ msgstr "ä¿å­˜å­—段" + +#, fuzzy +#~ msgid "flexible_content" +#~ msgstr "大段内容" + +#, fuzzy +#~ msgid "gallery" +#~ msgstr "相册" + +#, fuzzy +#~ msgid "repeater" +#~ msgstr "å¤åˆ¶" + +#~ msgid "Custom field updated." +#~ msgstr "自定义字段已更新。" + +#~ msgid "Custom field deleted." +#~ msgstr "自定义字段已删除。" + +#, fuzzy +#~ msgid "Import/Export" +#~ msgstr "é‡è¦" + +#~ msgid "Column Width" +#~ msgstr "分æ å®½åº¦" + +#, fuzzy +#~ msgid "Attachment Details" +#~ msgstr "附件已更新" + +#~ msgid "Validation Failed. One or more fields below are required." +#~ msgstr "验è¯å¤±è´¥ï¼Œä¸‹é¢ä¸€ä¸ªæˆ–多个字段是必需的。" + +#~ msgid "Field group restored to revision from %s" +#~ msgstr "字段组已æ¢å¤åˆ°ç‰ˆæœ¬%s" + +#~ msgid "No ACF groups selected" +#~ msgstr "没有选择ACF组" + +#~ msgid "Repeater Field" +#~ msgstr "å¤åˆ¶å­—段" + +#~ msgid "" +#~ "Create infinite rows of repeatable data with this versatile interface!" +#~ msgstr "使用这个方é¢çš„界é¢ä¸ºé‡å¤æ•°æ®åˆ›å»ºæ— é™è¡Œã€‚ " + +#~ msgid "Gallery Field" +#~ msgstr "相册字段" + +#~ msgid "Create image galleries in a simple and intuitive interface!" +#~ msgstr "使用简å•直观的界é¢åˆ›å»ºç”»å»Šï¼" + +#~ msgid "Create global data to use throughout your website!" +#~ msgstr "创建整个站点å¯ç”¨çš„全局数æ®ã€‚" + +#~ msgid "Flexible Content Field" +#~ msgstr "多样内容字段" + +#~ msgid "Create unique designs with a flexible content layout manager!" +#~ msgstr "通过强大的内容布局管ç†åŠŸèƒ½åˆ›å»ºä¸€ä¸ªç‹¬æœ‰çš„è®¾è®¡ã€‚" + +#~ msgid "Gravity Forms Field" +#~ msgstr "Gravity表å•字段" + +#~ msgid "Creates a select field populated with Gravity Forms!" +#~ msgstr "创建一个由Gravity表å•处ç†çš„选择字段。" + +#~ msgid "Date & Time Picker" +#~ msgstr "日期&时间选择器" + +#~ msgid "jQuery date & time picker" +#~ msgstr "jQuery 日期 & 时间选择器" + +#~ msgid "Find addresses and coordinates of a desired location" +#~ msgstr "查找需è¦çš„ä½ç½®çš„地å€å’Œå标。" + +#~ msgid "Contact Form 7 Field" +#~ msgstr "Contact Form 7 字段" + +#~ msgid "Assign one or more contact form 7 forms to a post" +#~ msgstr "分é…一个或多个contact form 7表å•到文章" + +#~ msgid "Advanced Custom Fields Add-Ons" +#~ msgstr "自定义字段附加功能" + +#~ msgid "" +#~ "The following Add-ons are available to increase the functionality of the " +#~ "Advanced Custom Fields plugin." +#~ msgstr "下é¢çš„附加项å¯ä»¥æé«˜æ’件功能。" + +#~ msgid "" +#~ "Each Add-on can be installed as a separate plugin (receives updates) or " +#~ "included in your theme (does not receive updates)." +#~ msgstr "" +#~ "æ¯ä¸ªé™„件都å¯ä»¥ä½œä¸ºä¸€ä¸ªå•独的æ’件安装(å¯ä»¥èŽ·å–æ›´æ–°ï¼‰æˆ–包å«åœ¨ä½ çš„主题中(ä¸" +#~ "èƒ½èŽ·å–æ›´æ–°ï¼‰" + +#~ msgid "Purchase & Install" +#~ msgstr "购买和安装" + +#~ msgid "Export" +#~ msgstr "导出" + +#~ msgid "Select the field groups to be exported" +#~ msgstr "选择需è¦å¯¼å‡ºçš„字段组。" + +#~ msgid "Export to XML" +#~ msgstr "导出到XML" + +#~ msgid "Export to PHP" +#~ msgstr "导出到PHP" + +#~ msgid "" +#~ "ACF will create a .xml export file which is compatible with the native WP " +#~ "import plugin." +#~ msgstr "ACF将创建一个兼容WP导入æ’ä»¶çš„.xml文件。" + +#~ msgid "" +#~ "Imported field groups will appear in the list of editable field " +#~ "groups. This is useful for migrating fields groups between Wp websites." +#~ msgstr "" +#~ "导入字段组将出现在å¯ç¼–辑字段组åŽé¢ï¼Œåœ¨å‡ ä¸ªWP站点之间è¿ç§»å­—段组时,这将éžå¸¸" +#~ "有用。" + +#~ msgid "Select field group(s) from the list and click \"Export XML\"" +#~ msgstr "从列表中选择字段组,然åŽç‚¹å‡» \"导出XML\" " + +#~ msgid "Save the .xml file when prompted" +#~ msgstr "导出åŽä¿å­˜.xml文件" + +#~ msgid "Navigate to Tools » Import and select WordPress" +#~ msgstr "转到工具 » 导入,然åŽé€‰æ‹©WordPress " + +#~ msgid "Install WP import plugin if prompted" +#~ msgstr "安装WP导入æ’ä»¶åŽå¼€å§‹" + +#~ msgid "Upload and import your exported .xml file" +#~ msgstr "上传并导入.xml文件" + +#~ msgid "Select your user and ignore Import Attachments" +#~ msgstr "选择用户,忽略导入附件" + +#~ msgid "That's it! Happy WordPressing" +#~ msgstr "æˆåŠŸäº†ï¼Œä½¿ç”¨æ„‰å¿«ï¼" + +#~ msgid "ACF will create the PHP code to include in your theme." +#~ msgstr "ACP将导出å¯ä»¥åŒ…å«åˆ°ä¸»é¢˜ä¸­çš„PHP代ç " + +#~ msgid "" +#~ "Registered field groups will not appear in the list of editable " +#~ "field groups. This is useful for including fields in themes." +#~ msgstr "" +#~ "已注册字段ä¸ä¼šå‡ºçŽ°åœ¨å¯ç¼–辑分组中,这对主题中包å«çš„字段éžå¸¸æœ‰ç”¨ã€‚" + +#~ msgid "" +#~ "Please note that if you export and register field groups within the same " +#~ "WP, you will see duplicate fields on your edit screens. To fix this, " +#~ "please move the original field group to the trash or remove the code from " +#~ "your functions.php file." +#~ msgstr "" +#~ "请注æ„,如果在åŒä¸€ä¸ªç½‘站导出并注册字段组,您会在您的编辑å±å¹•上看到é‡å¤çš„å­—" +#~ "段,为了解决这个问题,请将原字段组移动到回收站或删除您的functions.php文件" +#~ "中的代ç ã€‚" + +#~ msgid "Select field group(s) from the list and click \"Create PHP\"" +#~ msgstr "å‚加列表中选择表å•组,然åŽç‚¹å‡» \"生æˆPHP\"" + +#~ msgid "Copy the PHP code generated" +#~ msgstr "å¤åˆ¶ç”Ÿæˆçš„PHP代ç ã€‚" + +#~ msgid "Paste into your functions.php file" +#~ msgstr "请æ’入您的function.php文件" + +#~ msgid "" +#~ "To activate any Add-ons, edit and use the code in the first few lines." +#~ msgstr "è¦æ¿€æ´»é™„加组件,编辑和应用代ç ä¸­çš„å‰å‡ è¡Œã€‚" + +#~ msgid "Notes" +#~ msgstr "注æ„" + +#~ msgid "Include in theme" +#~ msgstr "包å«åœ¨ä¸»é¢˜ä¸­" + +#~ msgid "" +#~ "The Advanced Custom Fields plugin can be included within a theme. To do " +#~ "so, move the ACF plugin inside your theme and add the following code to " +#~ "your functions.php file:" +#~ msgstr "" +#~ "字段æ’ä»¶å¯ä»¥åŒ…å«åˆ°ä¸»é¢˜ä¸­ï¼Œå¦‚果需è¦è¿›è¡Œæ­¤æ“作,请移动字段æ’件到themes文件夹" +#~ "并添加以下代ç åˆ°functions.php文件:" + +#~ msgid "" +#~ "To remove all visual interfaces from the ACF plugin, you can use a " +#~ "constant to enable lite mode. Add the following code to you functions.php " +#~ "file before the include_once code:" +#~ msgstr "" +#~ "è¦åˆ é™¤æ‰€æœ‰ACFæ’ä»¶çš„å¯è§†åŒ–界é¢ï¼Œä½ å¯ä»¥ç”¨ä¸€ä¸ªå¸¸æ•°ï¼Œä½¿ç²¾ç®€ç‰ˆæ¨¡å¼ï¼Œå°†ä¸‹é¢çš„代" +#~ "ç æ·»åŠ åˆ°functions.php文件中include_once代ç ä¹‹å‰ã€‚" + +#~ msgid "Back to export" +#~ msgstr "返回到导出器" + +#~ msgid "" +#~ "/**\n" +#~ " * Install Add-ons\n" +#~ " * \n" +#~ " * The following code will include all 4 premium Add-Ons in your theme.\n" +#~ " * Please do not attempt to include a file which does not exist. This " +#~ "will produce an error.\n" +#~ " * \n" +#~ " * All fields must be included during the 'acf/register_fields' action.\n" +#~ " * Other types of Add-ons (like the options page) can be included " +#~ "outside of this action.\n" +#~ " * \n" +#~ " * The following code assumes you have a folder 'add-ons' inside your " +#~ "theme.\n" +#~ " *\n" +#~ " * IMPORTANT\n" +#~ " * Add-ons may be included in a premium theme as outlined in the terms " +#~ "and conditions.\n" +#~ " * However, they are NOT to be included in a premium / free plugin.\n" +#~ " * For more information, please read http://www.advancedcustomfields.com/" +#~ "terms-conditions/\n" +#~ " */" +#~ msgstr "" +#~ "/ **\n" +#~ " *安装附加组件\n" +#~ " *\n" +#~ " *下é¢çš„代ç å°†åŒ…括所有4个高级附加组件到您的主题\n" +#~ " *请ä¸è¦è¯•图包å«ä¸€ä¸ªä¸å­˜åœ¨çš„æ–‡ä»¶ï¼Œè¿™å°†äº§ç”Ÿä¸€ä¸ªé”™è¯¯ã€‚\n" +#~ " *\n" +#~ " *所有字段都必须在'acf/register_fields'动作执行时包å«ã€‚\n" +#~ " *其他类型的加载项(如选项页)å¯ä»¥åŒ…å«åœ¨è¿™ä¸ªåŠ¨ä½œä¹‹å¤–ã€‚\n" +#~ " *\n" +#~ " *下é¢çš„代ç å‡å®šä½ åœ¨ä½ çš„ä¸»é¢˜é‡Œé¢æœ‰ä¸€ä¸ªâ€œadd-onsâ€æ–‡ä»¶å¤¹ã€‚\n" +#~ " *\n" +#~ " *é‡è¦\n" +#~ " *附加组件å¯èƒ½åœ¨ä¸€ä¸ªé«˜çº§ä¸»é¢˜ä¸­åŒ…å«ä¸‹é¢çš„æ¡æ¬¾åŠæ¡ä»¶ã€‚\n" +#~ " *但是,他们都没有被列入高级或å…è´¹æ’件。\n" +#~ " *欲了解更多信æ¯ï¼Œè¯·è¯»å–http://www.advancedcustomfields.com/terms-" +#~ "conditions/\n" +#~ " */" + +#~ msgid "" +#~ "/**\n" +#~ " * Register Field Groups\n" +#~ " *\n" +#~ " * The register_field_group function accepts 1 array which holds the " +#~ "relevant data to register a field group\n" +#~ " * You may edit the array as you see fit. However, this may result in " +#~ "errors if the array is not compatible with ACF\n" +#~ " */" +#~ msgstr "" +#~ "/**\n" +#~ " * 注册字段组\n" +#~ " *\n" +#~ " * register_field_group函数接å—ä¸€ä¸ªåŒ…å«æ³¨å†Œå­—段组有关数æ®çš„æ•°ç»„\n" +#~ " *您å¯ä»¥ç¼–辑您认为åˆé€‚的数组,然而,如果数组ä¸å…¼å®¹ACF,这å¯èƒ½ä¼šå¯¼è‡´é”™è¯¯\n" +#~ " */" + +#~ msgid "Vote" +#~ msgstr "投票" + +#~ msgid "Follow" +#~ msgstr "关注" + +#~ msgid "Activation codes have grown into plugins!" +#~ msgstr "æ¿€æ´»ç æˆä¸ºäº†æ’ä»¶ï¼" + +#~ msgid "" +#~ "Add-ons are now activated by downloading and installing individual " +#~ "plugins. Although these plugins will not be hosted on the wordpress.org " +#~ "repository, each Add-on will continue to receive updates in the usual way." +#~ msgstr "" +#~ "附加组件现在通过下载和安装å•独的æ’件激活,虽然这些æ’ä»¶ä¸åœ¨wordpress.org库" +#~ "托管,æ¯ä¸ªé™„加组件将通过åˆé€‚的方å¼å¾—到更新。" + +#~ msgid "All previous Add-ons have been successfully installed" +#~ msgstr "所有附加功能已安装ï¼" + +#~ msgid "This website uses premium Add-ons which need to be downloaded" +#~ msgstr "此站点使用的高级功能需è¦ä¸‹è½½ã€‚" + +#~ msgid "Download your activated Add-ons" +#~ msgstr "下载已激活的附加功能" + +#~ msgid "" +#~ "This website does not use premium Add-ons and will not be affected by " +#~ "this change." +#~ msgstr "æ­¤ç«™ç‚¹æœªä½¿ç”¨é«˜çº§åŠŸèƒ½ï¼Œè¿™ä¸ªæ”¹å˜æ²¡æœ‰å½±å“。" + +#~ msgid "Easier Development" +#~ msgstr "快速开å‘" + +#~ msgid "New Field Types" +#~ msgstr "新字段类型" + +#~ msgid "Email Field" +#~ msgstr "电å­é‚®ä»¶å­—段" + +#~ msgid "Password Field" +#~ msgstr "密ç å­—段" + +#~ msgid "Custom Field Types" +#~ msgstr "自定义字段类型" + +#~ msgid "" +#~ "Creating your own field type has never been easier! Unfortunately, " +#~ "version 3 field types are not compatible with version 4." +#~ msgstr "" +#~ "创建您自己的字段类型从未如此简å•ï¼ä¸å¹¸çš„æ˜¯ï¼Œç‰ˆæœ¬3的字段类型ä¸å…¼å®¹ç‰ˆæœ¬4。" + +#~ msgid "Migrating your field types is easy, please" +#~ msgstr "æ•°æ®è¿ç§»éžå¸¸ç®€å•,请" + +#~ msgid "follow this tutorial" +#~ msgstr "è·Ÿéšè¿™ä¸ªå‘导" + +#~ msgid "to learn more." +#~ msgstr "了解更多。" + +#~ msgid "Actions & Filters" +#~ msgstr "动作&过滤器" + +#~ msgid "" +#~ "All actions & filters have recieved a major facelift to make customizing " +#~ "ACF even easier! Please" +#~ msgstr "所有动作和过滤器得到了一次é‡å¤§æ”¹ç‰ˆä¸€é更方便的定制ACFï¼è¯·" + +#~ msgid "read this guide" +#~ msgstr "阅读此å‘导" + +#~ msgid "to find the updated naming convention." +#~ msgstr "找到更新命å约定。" + +#~ msgid "Preview draft is now working!" +#~ msgstr "预览功能已ç»å¯ç”¨ï¼" + +#~ msgid "This bug has been squashed along with many other little critters!" +#~ msgstr "这个错误已ç»ä¸Žè®¸å¤šå…¶ä»–å°åŠ¨ç‰©ä¸€èµ·è¢«åŽ‹æ‰äº†ï¼" + +#~ msgid "See the full changelog" +#~ msgstr "查看全部更新日志" + +#~ msgid "Database Changes" +#~ msgstr "æ•°æ®åº“改å˜" + +#~ msgid "" +#~ "Absolutely no changes have been made to the database " +#~ "between versions 3 and 4. This means you can roll back to version 3 " +#~ "without any issues." +#~ msgstr "" +#~ "æ•°æ®åº“在版本3å’Œ4之间没有任何修改,这æ„味你å¯ä»¥å®‰å…¨å›žæ»šåˆ°" +#~ "版本3而ä¸ä¼šé‡åˆ°ä»»ä½•问题。" + +#~ msgid "Potential Issues" +#~ msgstr "潜在问题" + +#~ msgid "" +#~ "Do to the sizable changes surounding Add-ons, field types and action/" +#~ "filters, your website may not operate correctly. It is important that you " +#~ "read the full" +#~ msgstr "" +#~ "需è¦åœ¨é™„加组件,字段类型和动作/过滤之间åšé‡å¤§ä¿®æ”¹æ—¶ï¼Œä½ å¯çš„网站å¯èƒ½ä¼šå‡ºçް" +#~ "一些问题,所有强烈建议阅读全部" + +#~ msgid "Migrating from v3 to v4" +#~ msgstr "从V3è¿ç§»åˆ°V4" + +#~ msgid "guide to view the full list of changes." +#~ msgstr "查看所有更新列表。" + +#~ msgid "Really Important!" +#~ msgstr "éžå¸¸é‡è¦ï¼" + +#~ msgid "" +#~ "If you updated the ACF plugin without prior knowledge of such changes, " +#~ "Please roll back to the latest" +#~ msgstr "如果你没有收到更新通知而å‡çº§åˆ°äº†ACFæ’件,请回滚到最近的一个版本。" + +#~ msgid "version 3" +#~ msgstr "版本 3" + +#~ msgid "of this plugin." +#~ msgstr "这个æ’ä»¶" + +#~ msgid "Thank You" +#~ msgstr "谢谢ï¼" + +#~ msgid "" +#~ "A BIG thank you to everyone who has helped test the " +#~ "version 4 beta and for all the support I have received." +#~ msgstr "éžå¸¸æ„Ÿè°¢å¸®åŠ©æˆ‘æµ‹è¯•ç‰ˆæœ¬4的所有人。" + +#~ msgid "Without you all, this release would not have been possible!" +#~ msgstr "没有你们,此版本å¯èƒ½è¿˜æ²¡æœ‰å‘布。" + +#~ msgid "Changelog for" +#~ msgstr "更新日志:" + +#~ msgid "Learn more" +#~ msgstr "了解更多" + +#~ msgid "Overview" +#~ msgstr "预览" + +#~ msgid "" +#~ "Previously, all Add-ons were unlocked via an activation code (purchased " +#~ "from the ACF Add-ons store). New to v4, all Add-ons act as separate " +#~ "plugins which need to be individually downloaded, installed and updated." +#~ msgstr "" +#~ "在此之å‰ï¼Œæ‰€æœ‰é™„加组件通过一个激活ç ï¼ˆä»ŽACF附加组件的商店购买)解é”,到了" +#~ "版本V4,所有附加组件作为å•独的æ’件下载,安装和更新。" + +#~ msgid "" +#~ "This page will assist you in downloading and installing each available " +#~ "Add-on." +#~ msgstr "此页将帮助您下载和安装æ¯ä¸ªå¯ç”¨çš„附加组件。" + +#~ msgid "Available Add-ons" +#~ msgstr "å¯ç”¨é™„加功能" + +#~ msgid "" +#~ "The following Add-ons have been detected as activated on this website." +#~ msgstr "在此网站上检测到以下附加已激活。" + +#~ msgid "Activation Code" +#~ msgstr "激活ç " + +#~ msgid "Installation" +#~ msgstr "安装" + +#~ msgid "For each Add-on available, please perform the following:" +#~ msgstr "对于æ¯ä¸ªå¯ä»¥ç”¨é™„加组件,请执行以下æ“作:" + +#~ msgid "Download the Add-on plugin (.zip file) to your desktop" +#~ msgstr "下载附加功能(.zip文件)到电脑。" + +#~ msgid "Navigate to" +#~ msgstr "链接到" + +#~ msgid "Plugins > Add New > Upload" +#~ msgstr "æ’ä»¶>添加>上传" + +#~ msgid "" +#~ "Use the uploader to browse, select and install your Add-on (.zip file)" +#~ msgstr "使用文件上载器,æµè§ˆï¼Œé€‰æ‹©å¹¶å®‰è£…附加组件(zip文件)" + +#~ msgid "" +#~ "Once the plugin has been uploaded and installed, click the 'Activate " +#~ "Plugin' link" +#~ msgstr "æ’件上传并安装åŽï¼Œç‚¹å‡»'激活æ’ä»¶'链接。" + +#~ msgid "The Add-on is now installed and activated!" +#~ msgstr "附加功能已安装并å¯ç”¨ã€‚" + +#~ msgid "Awesome. Let's get to work" +#~ msgstr "å¤ªæ£’äº†ï¼æˆ‘们开始å§ã€‚" + +#~ msgid "Modifying field group options 'show on page'" +#~ msgstr "修改字段组选项'在页é¢ä¸Šæ˜¾ç¤º'" + +#~ msgid "Modifying field option 'taxonomy'" +#~ msgstr "修改字段选项'分类法'" + +#~ msgid "Moving user custom fields from wp_options to wp_usermeta'" +#~ msgstr "从wp_options移动用户自定义字段到wp_usermeta" + +#~ msgid "blue : Blue" +#~ msgstr " blue : Blue " + +#~ msgid "eg: #ffffff" +#~ msgstr "如: #ffffff " + +#~ msgid "Dummy" +#~ msgstr "二进制" + +#~ msgid "File Object" +#~ msgstr "文件对象" + +#~ msgid "File Updated." +#~ msgstr "文件已更新" + +#~ msgid "Media attachment updated." +#~ msgstr "媒体附件已更新。" + +#~ msgid "Add Selected Files" +#~ msgstr "添加已选择文件" + +#~ msgid "Image Object" +#~ msgstr "对象图åƒ" + +#~ msgid "Image Updated." +#~ msgstr "图片已更新" + +#~ msgid "No images selected" +#~ msgstr "没有选择图片" + +#~ msgid "Add Selected Images" +#~ msgstr "添加所选图片" + +#~ msgid "Text & HTML entered here will appear inline with the fields" +#~ msgstr "在这里输入的文本和HTML将和此字段一起出现。" + +#~ msgid "Enter your choices one per line" +#~ msgstr "输入选项,æ¯è¡Œä¸€ä¸ª" + +#~ msgid "Red" +#~ msgstr "红" + +#~ msgid "Blue" +#~ msgstr "è“" + +#~ msgid "Post Type Select" +#~ msgstr "文章类型选择" + +#~ msgid "You can use multiple tabs to break up your fields into sections." +#~ msgstr "ä½ å¯ä»¥ä½¿ç”¨é€‰é¡¹å¡åˆ†å‰²å­—段到多个区域。" + +#~ msgid "Define how to render html tags" +#~ msgstr "定义怎么生æˆhtml标签" + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Define how to render html tags / new lines" +#~ msgstr "定义怎么处ç†html标签和æ¢è¡Œ" + +#~ msgid "" +#~ "This format will determin the value saved to the database and returned " +#~ "via the API" +#~ msgstr "此格å¼å°†å†³å®šå­˜å‚¨åœ¨æ•°æ®åº“中的值,并通过API返回。" + +#~ msgid "\"yymmdd\" is the most versatile save format. Read more about" +#~ msgstr "\"yymmdd\" 是最常用的格å¼ï¼Œå¦‚需了解更多,请å‚考" + +#~ msgid "jQuery date formats" +#~ msgstr "jQuery日期格å¼" + +#~ msgid "This format will be seen by the user when entering a value" +#~ msgstr "这是用户输入日期åŽçœ‹åˆ°çš„æ ¼å¼ã€‚" + +#~ msgid "" +#~ "\"dd/mm/yy\" or \"mm/dd/yy\" are the most used Display Formats. Read more " +#~ "about" +#~ msgstr "\"dd/mm/yy\" 或 \"mm/dd/yy\" 为最常用的显示格å¼ï¼Œäº†è§£æ›´å¤š" + +#~ msgid "Field Order" +#~ msgstr "字段顺åº" + +#~ msgid "Edit this Field" +#~ msgstr "编辑当å‰å­—段" + +#~ msgid "Docs" +#~ msgstr "文档" + +#~ msgid "Field Instructions" +#~ msgstr "字段说明" + +#~ msgid "Show this field when" +#~ msgstr "符åˆè¿™äº›è§„则中的" + +#~ msgid "all" +#~ msgstr "所有" + +#~ msgid "any" +#~ msgstr "任一个" + +#~ msgid "these rules are met" +#~ msgstr "项时,显示此字段" + +#~ msgid "Taxonomy Term (Add / Edit)" +#~ msgstr "分类法æ¡ç›®ï¼ˆæ·»åŠ /编辑)" + +#~ msgid "Media Attachment (Edit)" +#~ msgstr "媒体附件(编辑)" + +#~ msgid "Unlock options add-on with an activation code" +#~ msgstr "使用激活ç è§£é”附加功能" + +#~ msgid "Normal" +#~ msgstr "普通" + +#~ msgid "No Metabox" +#~ msgstr "æ— Metabox" + +#~ msgid "Add-Ons" +#~ msgstr "附加" + +#~ msgid "Just updated to version 4?" +#~ msgstr "刚更新到版本4?" + +#~ msgid "" +#~ "Activation codes have changed to plugins! Download your purchased add-ons" +#~ msgstr "激活ç å·²æ”¹å˜äº†æ’件,请下载已购买的附加功能。" + +#~ msgid "here" +#~ msgstr "这里" + +#~ msgid "match" +#~ msgstr "符åˆ" + +#~ msgid "of the above" +#~ msgstr " " + +#~ msgid "" +#~ "Read documentation, learn the functions and find some tips & tricks " +#~ "for your next web project." +#~ msgstr "阅读文档,学习功能和å‘çŽ°ä¸€äº›å°æç¤ºï¼Œç„¶åŽåº”用到你下一个网站项目中。" + +#~ msgid "Visit the ACF website" +#~ msgstr "访问ACF网站" + +#~ msgid "Add File to Field" +#~ msgstr "添加文件" + +#~ msgid "Add Image to Field" +#~ msgstr "添加图片" + +#~ msgid "Repeater field deactivated" +#~ msgstr "检测到å¤åˆ¶å­—段" + +#~ msgid "Gallery field deactivated" +#~ msgstr "检测到相册字段" + +#~ msgid "Repeater field activated" +#~ msgstr "å¤åˆ¶æ’件已激活。" + +#~ msgid "Options page activated" +#~ msgstr "选项页é¢å·²æ¿€æ´»" + +#~ msgid "Flexible Content field activated" +#~ msgstr "多样内容字段已激活" + +#~ msgid "Gallery field activated" +#~ msgstr "æ’件激活æˆåŠŸã€‚" + +#~ msgid "License key unrecognised" +#~ msgstr "许å¯å¯†é’¥æœªæ³¨å†Œ" + +#~ msgid "" +#~ "Add-ons can be unlocked by purchasing a license key. Each key can be used " +#~ "on multiple sites." +#~ msgstr "å¯ä»¥è´­ä¹°ä¸€ä¸ªè®¸å¯è¯æ¥æ¿€æ´»é™„加功能,æ¯ä¸ªè®¸å¯è¯å¯ç”¨äºŽè®¸å¤šç«™ç‚¹ã€‚" + +#~ msgid "Inactive" +#~ msgstr "未ç¦ç”¨" + +#~ msgid "Register Field Groups" +#~ msgstr "注册字段组" + +#~ msgid "Create PHP" +#~ msgstr "创建PHP" + +#~ msgid "Advanced Custom Fields Settings" +#~ msgstr "高级自动设置" + +#~ msgid "requires a database upgrade" +#~ msgstr "æ•°æ®åº“需è¦å‡çº§" + +#~ msgid "why?" +#~ msgstr "为什么?" + +#~ msgid "Please" +#~ msgstr "请" + +#~ msgid "backup your database" +#~ msgstr "备份数æ®åº“" + +#~ msgid "then click" +#~ msgstr "ç„¶åŽç‚¹å‡»" + +#~ msgid "No choices to choose from" +#~ msgstr "é€‰æ‹©è¡¨å•æ²¡æœ‰é€‰" + +#~ msgid "+ Add Row" +#~ msgstr "添加行" + +#~ msgid "" +#~ "No fields. Click the \"+ Add Sub Field button\" to create your first " +#~ "field." +#~ msgstr "没有字段,点击添加按钮创建第一个字段。" + +#~ msgid "Close Sub Field" +#~ msgstr "选择å­å­—段" + +#~ msgid "+ Add Sub Field" +#~ msgstr "添加å­å­—段" + +#~ msgid "Alternate Text" +#~ msgstr "æ›¿æ¢æ–‡æœ¬" + +#~ msgid "Caption" +#~ msgstr "标题" + +#~ msgid "Thumbnail is advised" +#~ msgstr "建设使用缩略图" + +#~ msgid "Image Updated" +#~ msgstr "图片已更新" + +#~ msgid "Grid" +#~ msgstr "æ …æ ¼" + +#~ msgid "List" +#~ msgstr "列表" + +#~ msgid "1 image selected" +#~ msgstr "已选择1张图片" + +#~ msgid "{count} images selected" +#~ msgstr "选择了 {count}张图片" + +#~ msgid "Added" +#~ msgstr "已添加" + +#~ msgid "Image already exists in gallery" +#~ msgstr "图片已在相册中" + +#~ msgid "Repeater Fields" +#~ msgstr "å¤åˆ¶å­—段" + +#~ msgid "Table (default)" +#~ msgstr "表格(默认)" + +#~ msgid "Run filter \"the_content\"?" +#~ msgstr "是å¦è¿è¡Œè¿‡æ»¤å™¨ \"the_content\"?" + +#~ msgid "Media (Edit)" +#~ msgstr "媒体(编辑)" diff --git a/wp-content/plugins/advanced-custom-fields/lang/acf.pot b/wp-content/plugins/advanced-custom-fields/lang/acf.pot new file mode 100644 index 0000000..090a24d --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/lang/acf.pot @@ -0,0 +1,3192 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Advanced Custom Fields\n" +"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" +"POT-Creation-Date: 2019-01-31 12:36+0100\n" +"PO-Revision-Date: 2015-06-11 13:00+1000\n" +"Last-Translator: Elliot Condon \n" +"Language-Team: Elliot Condon \n" +"Language: en_AU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.1\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" +"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" +"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-WPHeader: acf.php\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" + +#: acf.php:80 +msgid "Advanced Custom Fields" +msgstr "" + +#: acf.php:363 includes/admin/admin.php:58 +msgid "Field Groups" +msgstr "" + +#: acf.php:364 +msgid "Field Group" +msgstr "" + +#: acf.php:365 acf.php:397 includes/admin/admin.php:59 +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New" +msgstr "" + +#: acf.php:366 +msgid "Add New Field Group" +msgstr "" + +#: acf.php:367 +msgid "Edit Field Group" +msgstr "" + +#: acf.php:368 +msgid "New Field Group" +msgstr "" + +#: acf.php:369 +msgid "View Field Group" +msgstr "" + +#: acf.php:370 +msgid "Search Field Groups" +msgstr "" + +#: acf.php:371 +msgid "No Field Groups found" +msgstr "" + +#: acf.php:372 +msgid "No Field Groups found in Trash" +msgstr "" + +#: acf.php:395 includes/admin/admin-field-group.php:220 +#: includes/admin/admin-field-groups.php:529 +#: pro/fields/class-acf-field-clone.php:811 +msgid "Fields" +msgstr "" + +#: acf.php:396 +msgid "Field" +msgstr "" + +#: acf.php:398 +msgid "Add New Field" +msgstr "" + +#: acf.php:399 +msgid "Edit Field" +msgstr "" + +#: acf.php:400 includes/admin/views/field-group-fields.php:41 +msgid "New Field" +msgstr "" + +#: acf.php:401 +msgid "View Field" +msgstr "" + +#: acf.php:402 +msgid "Search Fields" +msgstr "" + +#: acf.php:403 +msgid "No Fields found" +msgstr "" + +#: acf.php:404 +msgid "No Fields found in Trash" +msgstr "" + +#: acf.php:443 includes/admin/admin-field-group.php:402 +#: includes/admin/admin-field-groups.php:586 +msgid "Inactive" +msgstr "" + +#: acf.php:448 +#, php-format +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "" +msgstr[1] "" + +#: includes/acf-field-functions.php:823 +#: includes/admin/admin-field-group.php:178 +msgid "(no label)" +msgstr "" + +#: includes/acf-field-group-functions.php:816 +#: includes/admin/admin-field-group.php:180 +msgid "copy" +msgstr "" + +#: includes/admin/admin-field-group.php:86 +#: includes/admin/admin-field-group.php:87 +#: includes/admin/admin-field-group.php:89 +msgid "Field group updated." +msgstr "" + +#: includes/admin/admin-field-group.php:88 +msgid "Field group deleted." +msgstr "" + +#: includes/admin/admin-field-group.php:91 +msgid "Field group published." +msgstr "" + +#: includes/admin/admin-field-group.php:92 +msgid "Field group saved." +msgstr "" + +#: includes/admin/admin-field-group.php:93 +msgid "Field group submitted." +msgstr "" + +#: includes/admin/admin-field-group.php:94 +msgid "Field group scheduled for." +msgstr "" + +#: includes/admin/admin-field-group.php:95 +msgid "Field group draft updated." +msgstr "" + +#: includes/admin/admin-field-group.php:171 +msgid "The string \"field_\" may not be used at the start of a field name" +msgstr "" + +#: includes/admin/admin-field-group.php:172 +msgid "This field cannot be moved until its changes have been saved" +msgstr "" + +#: includes/admin/admin-field-group.php:173 +msgid "Field group title is required" +msgstr "" + +#: includes/admin/admin-field-group.php:174 +msgid "Move to trash. Are you sure?" +msgstr "" + +#: includes/admin/admin-field-group.php:175 +msgid "No toggle fields available" +msgstr "" + +#: includes/admin/admin-field-group.php:176 +msgid "Move Custom Field" +msgstr "" + +#: includes/admin/admin-field-group.php:177 +msgid "Checked" +msgstr "" + +#: includes/admin/admin-field-group.php:179 +msgid "(this field)" +msgstr "" + +#: includes/admin/admin-field-group.php:181 +#: includes/admin/views/field-group-field-conditional-logic.php:51 +#: includes/admin/views/field-group-field-conditional-logic.php:151 +#: includes/admin/views/field-group-locations.php:29 +#: includes/admin/views/html-location-group.php:3 +#: includes/api/api-helpers.php:3990 +msgid "or" +msgstr "" + +#: includes/admin/admin-field-group.php:182 +msgid "Null" +msgstr "" + +#: includes/admin/admin-field-group.php:221 +msgid "Location" +msgstr "" + +#: includes/admin/admin-field-group.php:222 +#: includes/admin/tools/class-acf-admin-tool-export.php:295 +msgid "Settings" +msgstr "" + +#: includes/admin/admin-field-group.php:372 +msgid "Field Keys" +msgstr "" + +#: includes/admin/admin-field-group.php:402 +#: includes/admin/views/field-group-options.php:9 +msgid "Active" +msgstr "" + +#: includes/admin/admin-field-group.php:771 +msgid "Move Complete." +msgstr "" + +#: includes/admin/admin-field-group.php:772 +#, php-format +msgid "The %s field can now be found in the %s field group" +msgstr "" + +#: includes/admin/admin-field-group.php:773 +msgid "Close Window" +msgstr "" + +#: includes/admin/admin-field-group.php:814 +msgid "Please select the destination for this field" +msgstr "" + +#: includes/admin/admin-field-group.php:821 +msgid "Move Field" +msgstr "" + +#: includes/admin/admin-field-groups.php:89 +#, php-format +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "" +msgstr[1] "" + +#: includes/admin/admin-field-groups.php:156 +#, php-format +msgid "Field group duplicated." +msgid_plural "%s field groups duplicated." +msgstr[0] "" +msgstr[1] "" + +#: includes/admin/admin-field-groups.php:243 +#, php-format +msgid "Field group synchronised." +msgid_plural "%s field groups synchronised." +msgstr[0] "" +msgstr[1] "" + +#: includes/admin/admin-field-groups.php:413 +#: includes/admin/admin-field-groups.php:576 +msgid "Sync available" +msgstr "" + +#: includes/admin/admin-field-groups.php:526 includes/forms/form-front.php:38 +#: pro/fields/class-acf-field-gallery.php:372 +msgid "Title" +msgstr "" + +#: includes/admin/admin-field-groups.php:527 +#: includes/admin/views/field-group-options.php:96 +#: includes/admin/views/html-admin-page-upgrade-network.php:38 +#: includes/admin/views/html-admin-page-upgrade-network.php:49 +#: pro/fields/class-acf-field-gallery.php:399 +msgid "Description" +msgstr "" + +#: includes/admin/admin-field-groups.php:528 +msgid "Status" +msgstr "" + +#. Description of the plugin/theme +#: includes/admin/admin-field-groups.php:626 +msgid "Customize WordPress with powerful, professional and intuitive fields." +msgstr "" + +#: includes/admin/admin-field-groups.php:628 +#: includes/admin/settings-info.php:76 +#: pro/admin/views/html-settings-updates.php:107 +msgid "Changelog" +msgstr "" + +#: includes/admin/admin-field-groups.php:633 +#, php-format +msgid "See what's new in version %s." +msgstr "" + +#: includes/admin/admin-field-groups.php:636 +msgid "Resources" +msgstr "" + +#: includes/admin/admin-field-groups.php:638 +msgid "Website" +msgstr "" + +#: includes/admin/admin-field-groups.php:639 +msgid "Documentation" +msgstr "" + +#: includes/admin/admin-field-groups.php:640 +msgid "Support" +msgstr "" + +#: includes/admin/admin-field-groups.php:642 +#: includes/admin/views/settings-info.php:84 +msgid "Pro" +msgstr "" + +#: includes/admin/admin-field-groups.php:647 +#, php-format +msgid "Thank you for creating with ACF." +msgstr "" + +#: includes/admin/admin-field-groups.php:686 +msgid "Duplicate this item" +msgstr "" + +#: includes/admin/admin-field-groups.php:686 +#: includes/admin/admin-field-groups.php:702 +#: includes/admin/views/field-group-field.php:46 +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate" +msgstr "" + +#: includes/admin/admin-field-groups.php:719 +#: includes/fields/class-acf-field-google-map.php:165 +#: includes/fields/class-acf-field-relationship.php:593 +msgid "Search" +msgstr "" + +#: includes/admin/admin-field-groups.php:778 +#, php-format +msgid "Select %s" +msgstr "" + +#: includes/admin/admin-field-groups.php:786 +msgid "Synchronise field group" +msgstr "" + +#: includes/admin/admin-field-groups.php:786 +#: includes/admin/admin-field-groups.php:816 +msgid "Sync" +msgstr "" + +#: includes/admin/admin-field-groups.php:798 +msgid "Apply" +msgstr "" + +#: includes/admin/admin-field-groups.php:816 +msgid "Bulk Actions" +msgstr "" + +#: includes/admin/admin-tools.php:116 +#: includes/admin/views/html-admin-tools.php:21 +msgid "Tools" +msgstr "" + +#: includes/admin/admin-upgrade.php:47 includes/admin/admin-upgrade.php:94 +#: includes/admin/admin-upgrade.php:156 +#: includes/admin/views/html-admin-page-upgrade-network.php:24 +#: includes/admin/views/html-admin-page-upgrade.php:26 +msgid "Upgrade Database" +msgstr "" + +#: includes/admin/admin-upgrade.php:180 +msgid "Review sites & upgrade" +msgstr "" + +#: includes/admin/admin.php:54 includes/admin/views/field-group-options.php:110 +msgid "Custom Fields" +msgstr "" + +#: includes/admin/settings-info.php:50 +msgid "Info" +msgstr "" + +#: includes/admin/settings-info.php:75 +msgid "What's New" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:33 +msgid "Export Field Groups" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:38 +#: includes/admin/tools/class-acf-admin-tool-export.php:342 +#: includes/admin/tools/class-acf-admin-tool-export.php:371 +msgid "Generate PHP" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:97 +#: includes/admin/tools/class-acf-admin-tool-export.php:135 +msgid "No field groups selected" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:174 +#, php-format +msgid "Exported 1 field group." +msgid_plural "Exported %s field groups." +msgstr[0] "" +msgstr[1] "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:241 +#: includes/admin/tools/class-acf-admin-tool-export.php:269 +msgid "Select Field Groups" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:336 +msgid "" +"Select the field groups you would like to export and then select your export " +"method. Use the download button to export to a .json file which you can then " +"import to another ACF installation. Use the generate button to export to PHP " +"code which you can place in your theme." +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:341 +msgid "Export File" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:414 +msgid "" +"The following code can be used to register a local version of the selected " +"field group(s). A local field group can provide many benefits such as faster " +"load times, version control & dynamic fields/settings. Simply copy and paste " +"the following code to your theme's functions.php file or include it within " +"an external file." +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:446 +msgid "Copy to clipboard" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-export.php:483 +msgid "Copied" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:26 +msgid "Import Field Groups" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:47 +msgid "" +"Select the Advanced Custom Fields JSON file you would like to import. When " +"you click the import button below, ACF will import the field groups." +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:52 +#: includes/fields/class-acf-field-file.php:57 +msgid "Select File" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:62 +msgid "Import File" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:85 +#: includes/fields/class-acf-field-file.php:170 +msgid "No file selected" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:93 +msgid "Error uploading file. Please try again" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:98 +msgid "Incorrect file type" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:107 +msgid "Import file empty" +msgstr "" + +#: includes/admin/tools/class-acf-admin-tool-import.php:138 +#, php-format +msgid "Imported 1 field group" +msgid_plural "Imported %s field groups" +msgstr[0] "" +msgstr[1] "" + +#: includes/admin/views/field-group-field-conditional-logic.php:25 +msgid "Conditional Logic" +msgstr "" + +#: includes/admin/views/field-group-field-conditional-logic.php:51 +msgid "Show this field if" +msgstr "" + +#: includes/admin/views/field-group-field-conditional-logic.php:138 +#: includes/admin/views/html-location-rule.php:86 +msgid "and" +msgstr "" + +#: includes/admin/views/field-group-field-conditional-logic.php:153 +#: includes/admin/views/field-group-locations.php:31 +msgid "Add rule group" +msgstr "" + +#: includes/admin/views/field-group-field.php:38 +#: pro/fields/class-acf-field-flexible-content.php:424 +#: pro/fields/class-acf-field-repeater.php:294 +msgid "Drag to reorder" +msgstr "" + +#: includes/admin/views/field-group-field.php:42 +#: includes/admin/views/field-group-field.php:45 +msgid "Edit field" +msgstr "" + +#: includes/admin/views/field-group-field.php:45 +#: includes/fields/class-acf-field-file.php:152 +#: includes/fields/class-acf-field-image.php:139 +#: includes/fields/class-acf-field-link.php:139 +#: pro/fields/class-acf-field-gallery.php:359 +msgid "Edit" +msgstr "" + +#: includes/admin/views/field-group-field.php:46 +msgid "Duplicate field" +msgstr "" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move field to another group" +msgstr "" + +#: includes/admin/views/field-group-field.php:47 +msgid "Move" +msgstr "" + +#: includes/admin/views/field-group-field.php:48 +msgid "Delete field" +msgstr "" + +#: includes/admin/views/field-group-field.php:48 +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete" +msgstr "" + +#: includes/admin/views/field-group-field.php:65 +msgid "Field Label" +msgstr "" + +#: includes/admin/views/field-group-field.php:66 +msgid "This is the name which will appear on the EDIT page" +msgstr "" + +#: includes/admin/views/field-group-field.php:75 +msgid "Field Name" +msgstr "" + +#: includes/admin/views/field-group-field.php:76 +msgid "Single word, no spaces. Underscores and dashes allowed" +msgstr "" + +#: includes/admin/views/field-group-field.php:85 +msgid "Field Type" +msgstr "" + +#: includes/admin/views/field-group-field.php:96 +msgid "Instructions" +msgstr "" + +#: includes/admin/views/field-group-field.php:97 +msgid "Instructions for authors. Shown when submitting data" +msgstr "" + +#: includes/admin/views/field-group-field.php:106 +msgid "Required?" +msgstr "" + +#: includes/admin/views/field-group-field.php:129 +msgid "Wrapper Attributes" +msgstr "" + +#: includes/admin/views/field-group-field.php:135 +msgid "width" +msgstr "" + +#: includes/admin/views/field-group-field.php:150 +msgid "class" +msgstr "" + +#: includes/admin/views/field-group-field.php:163 +msgid "id" +msgstr "" + +#: includes/admin/views/field-group-field.php:175 +msgid "Close Field" +msgstr "" + +#: includes/admin/views/field-group-fields.php:4 +msgid "Order" +msgstr "" + +#: includes/admin/views/field-group-fields.php:5 +#: includes/fields/class-acf-field-button-group.php:198 +#: includes/fields/class-acf-field-checkbox.php:420 +#: includes/fields/class-acf-field-radio.php:311 +#: includes/fields/class-acf-field-select.php:433 +#: pro/fields/class-acf-field-flexible-content.php:596 +msgid "Label" +msgstr "" + +#: includes/admin/views/field-group-fields.php:6 +#: includes/fields/class-acf-field-taxonomy.php:939 +#: pro/fields/class-acf-field-flexible-content.php:610 +msgid "Name" +msgstr "" + +#: includes/admin/views/field-group-fields.php:7 +msgid "Key" +msgstr "" + +#: includes/admin/views/field-group-fields.php:8 +msgid "Type" +msgstr "" + +#: includes/admin/views/field-group-fields.php:14 +msgid "" +"No fields. Click the + Add Field button to create your " +"first field." +msgstr "" + +#: includes/admin/views/field-group-fields.php:31 +msgid "+ Add Field" +msgstr "" + +#: includes/admin/views/field-group-locations.php:9 +msgid "Rules" +msgstr "" + +#: includes/admin/views/field-group-locations.php:10 +msgid "" +"Create a set of rules to determine which edit screens will use these " +"advanced custom fields" +msgstr "" + +#: includes/admin/views/field-group-options.php:23 +msgid "Style" +msgstr "" + +#: includes/admin/views/field-group-options.php:30 +msgid "Standard (WP metabox)" +msgstr "" + +#: includes/admin/views/field-group-options.php:31 +msgid "Seamless (no metabox)" +msgstr "" + +#: includes/admin/views/field-group-options.php:38 +msgid "Position" +msgstr "" + +#: includes/admin/views/field-group-options.php:45 +msgid "High (after title)" +msgstr "" + +#: includes/admin/views/field-group-options.php:46 +msgid "Normal (after content)" +msgstr "" + +#: includes/admin/views/field-group-options.php:47 +msgid "Side" +msgstr "" + +#: includes/admin/views/field-group-options.php:55 +msgid "Label placement" +msgstr "" + +#: includes/admin/views/field-group-options.php:62 +#: includes/fields/class-acf-field-tab.php:106 +msgid "Top aligned" +msgstr "" + +#: includes/admin/views/field-group-options.php:63 +#: includes/fields/class-acf-field-tab.php:107 +msgid "Left aligned" +msgstr "" + +#: includes/admin/views/field-group-options.php:70 +msgid "Instruction placement" +msgstr "" + +#: includes/admin/views/field-group-options.php:77 +msgid "Below labels" +msgstr "" + +#: includes/admin/views/field-group-options.php:78 +msgid "Below fields" +msgstr "" + +#: includes/admin/views/field-group-options.php:85 +msgid "Order No." +msgstr "" + +#: includes/admin/views/field-group-options.php:86 +msgid "Field groups with a lower order will appear first" +msgstr "" + +#: includes/admin/views/field-group-options.php:97 +msgid "Shown in field group list" +msgstr "" + +#: includes/admin/views/field-group-options.php:107 +msgid "Permalink" +msgstr "" + +#: includes/admin/views/field-group-options.php:108 +msgid "Content Editor" +msgstr "" + +#: includes/admin/views/field-group-options.php:109 +msgid "Excerpt" +msgstr "" + +#: includes/admin/views/field-group-options.php:111 +msgid "Discussion" +msgstr "" + +#: includes/admin/views/field-group-options.php:112 +msgid "Comments" +msgstr "" + +#: includes/admin/views/field-group-options.php:113 +msgid "Revisions" +msgstr "" + +#: includes/admin/views/field-group-options.php:114 +msgid "Slug" +msgstr "" + +#: includes/admin/views/field-group-options.php:115 +msgid "Author" +msgstr "" + +#: includes/admin/views/field-group-options.php:116 +msgid "Format" +msgstr "" + +#: includes/admin/views/field-group-options.php:117 +msgid "Page Attributes" +msgstr "" + +#: includes/admin/views/field-group-options.php:118 +#: includes/fields/class-acf-field-relationship.php:607 +msgid "Featured Image" +msgstr "" + +#: includes/admin/views/field-group-options.php:119 +msgid "Categories" +msgstr "" + +#: includes/admin/views/field-group-options.php:120 +msgid "Tags" +msgstr "" + +#: includes/admin/views/field-group-options.php:121 +msgid "Send Trackbacks" +msgstr "" + +#: includes/admin/views/field-group-options.php:128 +msgid "Hide on screen" +msgstr "" + +#: includes/admin/views/field-group-options.php:129 +msgid "Select items to hide them from the edit screen." +msgstr "" + +#: includes/admin/views/field-group-options.php:129 +msgid "" +"If multiple field groups appear on an edit screen, the first field group's " +"options will be used (the one with the lowest order number)" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#, php-format +msgid "" +"The following sites require a DB upgrade. Check the ones you want to update " +"and then click %s." +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:26 +#: includes/admin/views/html-admin-page-upgrade-network.php:27 +#: includes/admin/views/html-admin-page-upgrade-network.php:92 +msgid "Upgrade Sites" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:36 +#: includes/admin/views/html-admin-page-upgrade-network.php:47 +msgid "Site" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:74 +#, php-format +msgid "Site requires database upgrade from %s to %s" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:76 +msgid "Site is up to date" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:93 +#, php-format +msgid "" +"Database Upgrade complete. Return to network dashboard" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:113 +msgid "Please select at least one site to upgrade." +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:117 +#: includes/admin/views/html-notice-upgrade.php:38 +msgid "" +"It is strongly recommended that you backup your database before proceeding. " +"Are you sure you wish to run the updater now?" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:144 +#: includes/admin/views/html-admin-page-upgrade.php:31 +#, php-format +msgid "Upgrading data to version %s" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:167 +msgid "Upgrade complete." +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade-network.php:176 +#: includes/admin/views/html-admin-page-upgrade-network.php:185 +#: includes/admin/views/html-admin-page-upgrade.php:78 +#: includes/admin/views/html-admin-page-upgrade.php:87 +msgid "Upgrade failed." +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade.php:30 +msgid "Reading upgrade tasks..." +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade.php:33 +#, php-format +msgid "Database upgrade complete. See what's new" +msgstr "" + +#: includes/admin/views/html-admin-page-upgrade.php:116 +#: includes/ajax/class-acf-ajax-upgrade.php:33 +msgid "No updates available." +msgstr "" + +#: includes/admin/views/html-admin-tools.php:21 +msgid "Back to all tools" +msgstr "" + +#: includes/admin/views/html-location-group.php:3 +msgid "Show this field group if" +msgstr "" + +#: includes/admin/views/html-notice-upgrade.php:8 +#: pro/fields/class-acf-field-repeater.php:25 +msgid "Repeater" +msgstr "" + +#: includes/admin/views/html-notice-upgrade.php:9 +#: pro/fields/class-acf-field-flexible-content.php:25 +msgid "Flexible Content" +msgstr "" + +#: includes/admin/views/html-notice-upgrade.php:10 +#: pro/fields/class-acf-field-gallery.php:25 +msgid "Gallery" +msgstr "" + +#: includes/admin/views/html-notice-upgrade.php:11 +#: pro/locations/class-acf-location-options-page.php:26 +msgid "Options Page" +msgstr "" + +#: includes/admin/views/html-notice-upgrade.php:21 +msgid "Database Upgrade Required" +msgstr "" + +#: includes/admin/views/html-notice-upgrade.php:22 +#, php-format +msgid "Thank you for updating to %s v%s!" +msgstr "" + +#: includes/admin/views/html-notice-upgrade.php:22 +msgid "" +"This version contains improvements to your database and requires an upgrade." +msgstr "" + +#: includes/admin/views/html-notice-upgrade.php:24 +#, php-format +msgid "" +"Please also check all premium add-ons (%s) are updated to the latest version." +msgstr "" + +#: includes/admin/views/settings-addons.php:3 +msgid "Add-ons" +msgstr "" + +#: includes/admin/views/settings-addons.php:17 +msgid "Download & Install" +msgstr "" + +#: includes/admin/views/settings-addons.php:36 +msgid "Installed" +msgstr "" + +#: includes/admin/views/settings-info.php:3 +msgid "Welcome to Advanced Custom Fields" +msgstr "" + +#: includes/admin/views/settings-info.php:4 +#, php-format +msgid "" +"Thank you for updating! ACF %s is bigger and better than ever before. We " +"hope you like it." +msgstr "" + +#: includes/admin/views/settings-info.php:15 +msgid "A Smoother Experience" +msgstr "" + +#: includes/admin/views/settings-info.php:19 +msgid "Improved Usability" +msgstr "" + +#: includes/admin/views/settings-info.php:20 +msgid "" +"Including the popular Select2 library has improved both usability and speed " +"across a number of field types including post object, page link, taxonomy " +"and select." +msgstr "" + +#: includes/admin/views/settings-info.php:24 +msgid "Improved Design" +msgstr "" + +#: includes/admin/views/settings-info.php:25 +msgid "" +"Many fields have undergone a visual refresh to make ACF look better than " +"ever! Noticeable changes are seen on the gallery, relationship and oEmbed " +"(new) fields!" +msgstr "" + +#: includes/admin/views/settings-info.php:29 +msgid "Improved Data" +msgstr "" + +#: includes/admin/views/settings-info.php:30 +msgid "" +"Redesigning the data architecture has allowed sub fields to live " +"independently from their parents. This allows you to drag and drop fields in " +"and out of parent fields!" +msgstr "" + +#: includes/admin/views/settings-info.php:38 +msgid "Goodbye Add-ons. Hello PRO" +msgstr "" + +#: includes/admin/views/settings-info.php:41 +msgid "Introducing ACF PRO" +msgstr "" + +#: includes/admin/views/settings-info.php:42 +msgid "" +"We're changing the way premium functionality is delivered in an exciting way!" +msgstr "" + +#: includes/admin/views/settings-info.php:43 +#, php-format +msgid "" +"All 4 premium add-ons have been combined into a new Pro " +"version of ACF. With both personal and developer licenses available, " +"premium functionality is more affordable and accessible than ever before!" +msgstr "" + +#: includes/admin/views/settings-info.php:47 +msgid "Powerful Features" +msgstr "" + +#: includes/admin/views/settings-info.php:48 +msgid "" +"ACF PRO contains powerful features such as repeatable data, flexible content " +"layouts, a beautiful gallery field and the ability to create extra admin " +"options pages!" +msgstr "" + +#: includes/admin/views/settings-info.php:49 +#, php-format +msgid "Read more about ACF PRO features." +msgstr "" + +#: includes/admin/views/settings-info.php:53 +msgid "Easy Upgrading" +msgstr "" + +#: includes/admin/views/settings-info.php:54 +msgid "" +"Upgrading to ACF PRO is easy. Simply purchase a license online and download " +"the plugin!" +msgstr "" + +#: includes/admin/views/settings-info.php:55 +#, php-format +msgid "" +"We also wrote an upgrade guide to answer any questions, " +"but if you do have one, please contact our support team via the help desk." +msgstr "" + +#: includes/admin/views/settings-info.php:64 +msgid "New Features" +msgstr "" + +#: includes/admin/views/settings-info.php:69 +msgid "Link Field" +msgstr "" + +#: includes/admin/views/settings-info.php:70 +msgid "" +"The Link field provides a simple way to select or define a link (url, title, " +"target)." +msgstr "" + +#: includes/admin/views/settings-info.php:74 +msgid "Group Field" +msgstr "" + +#: includes/admin/views/settings-info.php:75 +msgid "The Group field provides a simple way to create a group of fields." +msgstr "" + +#: includes/admin/views/settings-info.php:79 +msgid "oEmbed Field" +msgstr "" + +#: includes/admin/views/settings-info.php:80 +msgid "" +"The oEmbed field allows an easy way to embed videos, images, tweets, audio, " +"and other content." +msgstr "" + +#: includes/admin/views/settings-info.php:84 +msgid "Clone Field" +msgstr "" + +#: includes/admin/views/settings-info.php:85 +msgid "The clone field allows you to select and display existing fields." +msgstr "" + +#: includes/admin/views/settings-info.php:89 +msgid "More AJAX" +msgstr "" + +#: includes/admin/views/settings-info.php:90 +msgid "More fields use AJAX powered search to speed up page loading." +msgstr "" + +#: includes/admin/views/settings-info.php:94 +msgid "Local JSON" +msgstr "" + +#: includes/admin/views/settings-info.php:95 +msgid "" +"New auto export to JSON feature improves speed and allows for syncronisation." +msgstr "" + +#: includes/admin/views/settings-info.php:99 +msgid "Easy Import / Export" +msgstr "" + +#: includes/admin/views/settings-info.php:100 +msgid "Both import and export can easily be done through a new tools page." +msgstr "" + +#: includes/admin/views/settings-info.php:104 +msgid "New Form Locations" +msgstr "" + +#: includes/admin/views/settings-info.php:105 +msgid "" +"Fields can now be mapped to menus, menu items, comments, widgets and all " +"user forms!" +msgstr "" + +#: includes/admin/views/settings-info.php:109 +msgid "More Customization" +msgstr "" + +#: includes/admin/views/settings-info.php:110 +msgid "" +"New PHP (and JS) actions and filters have been added to allow for more " +"customization." +msgstr "" + +#: includes/admin/views/settings-info.php:114 +msgid "Fresh UI" +msgstr "" + +#: includes/admin/views/settings-info.php:115 +msgid "" +"The entire plugin has had a design refresh including new field types, " +"settings and design!" +msgstr "" + +#: includes/admin/views/settings-info.php:119 +msgid "New Settings" +msgstr "" + +#: includes/admin/views/settings-info.php:120 +msgid "" +"Field group settings have been added for Active, Label Placement, " +"Instructions Placement and Description." +msgstr "" + +#: includes/admin/views/settings-info.php:124 +msgid "Better Front End Forms" +msgstr "" + +#: includes/admin/views/settings-info.php:125 +msgid "" +"acf_form() can now create a new post on submission with lots of new settings." +msgstr "" + +#: includes/admin/views/settings-info.php:129 +msgid "Better Validation" +msgstr "" + +#: includes/admin/views/settings-info.php:130 +msgid "Form validation is now done via PHP + AJAX in favour of only JS." +msgstr "" + +#: includes/admin/views/settings-info.php:134 +msgid "Moving Fields" +msgstr "" + +#: includes/admin/views/settings-info.php:135 +msgid "" +"New field group functionality allows you to move a field between groups & " +"parents." +msgstr "" + +#: includes/admin/views/settings-info.php:146 +#, php-format +msgid "We think you'll love the changes in %s." +msgstr "" + +#: includes/api/api-helpers.php:1011 +msgid "Thumbnail" +msgstr "" + +#: includes/api/api-helpers.php:1012 +msgid "Medium" +msgstr "" + +#: includes/api/api-helpers.php:1013 +msgid "Large" +msgstr "" + +#: includes/api/api-helpers.php:1062 +msgid "Full Size" +msgstr "" + +#: includes/api/api-helpers.php:1831 includes/api/api-term.php:147 +#: pro/fields/class-acf-field-clone.php:996 +msgid "(no title)" +msgstr "" + +#: includes/api/api-helpers.php:3911 +#, php-format +msgid "Image width must be at least %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3916 +#, php-format +msgid "Image width must not exceed %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3932 +#, php-format +msgid "Image height must be at least %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3937 +#, php-format +msgid "Image height must not exceed %dpx." +msgstr "" + +#: includes/api/api-helpers.php:3955 +#, php-format +msgid "File size must be at least %s." +msgstr "" + +#: includes/api/api-helpers.php:3960 +#, php-format +msgid "File size must must not exceed %s." +msgstr "" + +#: includes/api/api-helpers.php:3994 +#, php-format +msgid "File type must be %s." +msgstr "" + +#: includes/assets.php:168 +msgid "The changes you made will be lost if you navigate away from this page" +msgstr "" + +#: includes/assets.php:171 includes/fields/class-acf-field-select.php:259 +msgctxt "verb" +msgid "Select" +msgstr "" + +#: includes/assets.php:172 +msgctxt "verb" +msgid "Edit" +msgstr "" + +#: includes/assets.php:173 +msgctxt "verb" +msgid "Update" +msgstr "" + +#: includes/assets.php:174 +msgid "Uploaded to this post" +msgstr "" + +#: includes/assets.php:175 +msgid "Expand Details" +msgstr "" + +#: includes/assets.php:176 +msgid "Collapse Details" +msgstr "" + +#: includes/assets.php:177 +msgid "Restricted" +msgstr "" + +#: includes/assets.php:178 includes/fields/class-acf-field-image.php:67 +msgid "All images" +msgstr "" + +#: includes/assets.php:181 +msgid "Validation successful" +msgstr "" + +#: includes/assets.php:182 includes/validation.php:285 +#: includes/validation.php:296 +msgid "Validation failed" +msgstr "" + +#: includes/assets.php:183 +msgid "1 field requires attention" +msgstr "" + +#: includes/assets.php:184 +#, php-format +msgid "%d fields require attention" +msgstr "" + +#: includes/assets.php:187 +msgid "Are you sure?" +msgstr "" + +#: includes/assets.php:188 includes/fields/class-acf-field-true_false.php:79 +#: includes/fields/class-acf-field-true_false.php:159 +#: pro/admin/views/html-settings-updates.php:89 +msgid "Yes" +msgstr "" + +#: includes/assets.php:189 includes/fields/class-acf-field-true_false.php:80 +#: includes/fields/class-acf-field-true_false.php:174 +#: pro/admin/views/html-settings-updates.php:99 +msgid "No" +msgstr "" + +#: includes/assets.php:190 includes/fields/class-acf-field-file.php:154 +#: includes/fields/class-acf-field-image.php:141 +#: includes/fields/class-acf-field-link.php:140 +#: pro/fields/class-acf-field-gallery.php:360 +#: pro/fields/class-acf-field-gallery.php:549 +msgid "Remove" +msgstr "" + +#: includes/assets.php:191 +msgid "Cancel" +msgstr "" + +#: includes/assets.php:194 +msgid "Has any value" +msgstr "" + +#: includes/assets.php:195 +msgid "Has no value" +msgstr "" + +#: includes/assets.php:196 +msgid "Value is equal to" +msgstr "" + +#: includes/assets.php:197 +msgid "Value is not equal to" +msgstr "" + +#: includes/assets.php:198 +msgid "Value matches pattern" +msgstr "" + +#: includes/assets.php:199 +msgid "Value contains" +msgstr "" + +#: includes/assets.php:200 +msgid "Value is greater than" +msgstr "" + +#: includes/assets.php:201 +msgid "Value is less than" +msgstr "" + +#: includes/assets.php:202 +msgid "Selection is greater than" +msgstr "" + +#: includes/assets.php:203 +msgid "Selection is less than" +msgstr "" + +#: includes/assets.php:206 includes/forms/form-comment.php:166 +#: pro/admin/admin-options-page.php:325 +msgid "Edit field group" +msgstr "" + +#: includes/fields.php:308 +msgid "Field type does not exist" +msgstr "" + +#: includes/fields.php:308 +msgid "Unknown" +msgstr "" + +#: includes/fields.php:349 +msgid "Basic" +msgstr "" + +#: includes/fields.php:350 includes/forms/form-front.php:47 +msgid "Content" +msgstr "" + +#: includes/fields.php:351 +msgid "Choice" +msgstr "" + +#: includes/fields.php:352 +msgid "Relational" +msgstr "" + +#: includes/fields.php:353 +msgid "jQuery" +msgstr "" + +#: includes/fields.php:354 includes/fields/class-acf-field-button-group.php:177 +#: includes/fields/class-acf-field-checkbox.php:389 +#: includes/fields/class-acf-field-group.php:474 +#: includes/fields/class-acf-field-radio.php:290 +#: pro/fields/class-acf-field-clone.php:843 +#: pro/fields/class-acf-field-flexible-content.php:567 +#: pro/fields/class-acf-field-flexible-content.php:616 +#: pro/fields/class-acf-field-repeater.php:443 +msgid "Layout" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:24 +msgid "Accordion" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:99 +msgid "Open" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:100 +msgid "Display this accordion as open on page load." +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:109 +msgid "Multi-expand" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:110 +msgid "Allow this accordion to open without closing others." +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:119 +#: includes/fields/class-acf-field-tab.php:114 +msgid "Endpoint" +msgstr "" + +#: includes/fields/class-acf-field-accordion.php:120 +msgid "" +"Define an endpoint for the previous accordion to stop. This accordion will " +"not be visible." +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:24 +msgid "Button Group" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:149 +#: includes/fields/class-acf-field-checkbox.php:344 +#: includes/fields/class-acf-field-radio.php:235 +#: includes/fields/class-acf-field-select.php:364 +msgid "Choices" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "Enter each choice on a new line." +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "For more control, you may specify both a value and label like this:" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:150 +#: includes/fields/class-acf-field-checkbox.php:345 +#: includes/fields/class-acf-field-radio.php:236 +#: includes/fields/class-acf-field-select.php:365 +msgid "red : Red" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:158 +#: includes/fields/class-acf-field-page_link.php:513 +#: includes/fields/class-acf-field-post_object.php:411 +#: includes/fields/class-acf-field-radio.php:244 +#: includes/fields/class-acf-field-select.php:382 +#: includes/fields/class-acf-field-taxonomy.php:784 +#: includes/fields/class-acf-field-user.php:393 +msgid "Allow Null?" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:168 +#: includes/fields/class-acf-field-checkbox.php:380 +#: includes/fields/class-acf-field-color_picker.php:131 +#: includes/fields/class-acf-field-email.php:118 +#: includes/fields/class-acf-field-number.php:127 +#: includes/fields/class-acf-field-radio.php:281 +#: includes/fields/class-acf-field-range.php:149 +#: includes/fields/class-acf-field-select.php:373 +#: includes/fields/class-acf-field-text.php:119 +#: includes/fields/class-acf-field-textarea.php:102 +#: includes/fields/class-acf-field-true_false.php:135 +#: includes/fields/class-acf-field-url.php:100 +#: includes/fields/class-acf-field-wysiwyg.php:381 +msgid "Default Value" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:169 +#: includes/fields/class-acf-field-email.php:119 +#: includes/fields/class-acf-field-number.php:128 +#: includes/fields/class-acf-field-radio.php:282 +#: includes/fields/class-acf-field-range.php:150 +#: includes/fields/class-acf-field-text.php:120 +#: includes/fields/class-acf-field-textarea.php:103 +#: includes/fields/class-acf-field-url.php:101 +#: includes/fields/class-acf-field-wysiwyg.php:382 +msgid "Appears when creating a new post" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:183 +#: includes/fields/class-acf-field-checkbox.php:396 +#: includes/fields/class-acf-field-radio.php:297 +msgid "Horizontal" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:184 +#: includes/fields/class-acf-field-checkbox.php:395 +#: includes/fields/class-acf-field-radio.php:296 +msgid "Vertical" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:191 +#: includes/fields/class-acf-field-checkbox.php:413 +#: includes/fields/class-acf-field-file.php:215 +#: includes/fields/class-acf-field-image.php:205 +#: includes/fields/class-acf-field-link.php:166 +#: includes/fields/class-acf-field-radio.php:304 +#: includes/fields/class-acf-field-taxonomy.php:829 +msgid "Return Value" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:192 +#: includes/fields/class-acf-field-checkbox.php:414 +#: includes/fields/class-acf-field-file.php:216 +#: includes/fields/class-acf-field-image.php:206 +#: includes/fields/class-acf-field-link.php:167 +#: includes/fields/class-acf-field-radio.php:305 +msgid "Specify the returned value on front end" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:197 +#: includes/fields/class-acf-field-checkbox.php:419 +#: includes/fields/class-acf-field-radio.php:310 +#: includes/fields/class-acf-field-select.php:432 +msgid "Value" +msgstr "" + +#: includes/fields/class-acf-field-button-group.php:199 +#: includes/fields/class-acf-field-checkbox.php:421 +#: includes/fields/class-acf-field-radio.php:312 +#: includes/fields/class-acf-field-select.php:434 +msgid "Both (Array)" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:25 +#: includes/fields/class-acf-field-taxonomy.php:771 +msgid "Checkbox" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:154 +msgid "Toggle All" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:221 +msgid "Add new choice" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:353 +msgid "Allow Custom" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:358 +msgid "Allow 'custom' values to be added" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:364 +msgid "Save Custom" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:369 +msgid "Save 'custom' values to the field's choices" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:381 +#: includes/fields/class-acf-field-select.php:374 +msgid "Enter each default value on a new line" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:403 +msgid "Toggle" +msgstr "" + +#: includes/fields/class-acf-field-checkbox.php:404 +msgid "Prepend an extra checkbox to toggle all choices" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:25 +msgid "Color Picker" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:68 +msgid "Clear" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:69 +msgid "Default" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:70 +msgid "Select Color" +msgstr "" + +#: includes/fields/class-acf-field-color_picker.php:71 +msgid "Current Color" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:25 +msgid "Date Picker" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:59 +msgctxt "Date Picker JS closeText" +msgid "Done" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:60 +msgctxt "Date Picker JS currentText" +msgid "Today" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:61 +msgctxt "Date Picker JS nextText" +msgid "Next" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:62 +msgctxt "Date Picker JS prevText" +msgid "Prev" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:63 +msgctxt "Date Picker JS weekHeader" +msgid "Wk" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:178 +#: includes/fields/class-acf-field-date_time_picker.php:183 +#: includes/fields/class-acf-field-time_picker.php:109 +msgid "Display Format" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:179 +#: includes/fields/class-acf-field-date_time_picker.php:184 +#: includes/fields/class-acf-field-time_picker.php:110 +msgid "The format displayed when editing a post" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:187 +#: includes/fields/class-acf-field-date_picker.php:218 +#: includes/fields/class-acf-field-date_time_picker.php:193 +#: includes/fields/class-acf-field-date_time_picker.php:210 +#: includes/fields/class-acf-field-time_picker.php:117 +#: includes/fields/class-acf-field-time_picker.php:132 +msgid "Custom:" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:197 +msgid "Save Format" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:198 +msgid "The format used when saving a value" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:208 +#: includes/fields/class-acf-field-date_time_picker.php:200 +#: includes/fields/class-acf-field-post_object.php:431 +#: includes/fields/class-acf-field-relationship.php:634 +#: includes/fields/class-acf-field-select.php:427 +#: includes/fields/class-acf-field-time_picker.php:124 +#: includes/fields/class-acf-field-user.php:412 +msgid "Return Format" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:209 +#: includes/fields/class-acf-field-date_time_picker.php:201 +#: includes/fields/class-acf-field-time_picker.php:125 +msgid "The format returned via template functions" +msgstr "" + +#: includes/fields/class-acf-field-date_picker.php:227 +#: includes/fields/class-acf-field-date_time_picker.php:217 +msgid "Week Starts On" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:25 +msgid "Date Time Picker" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:68 +msgctxt "Date Time Picker JS timeOnlyTitle" +msgid "Choose Time" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:69 +msgctxt "Date Time Picker JS timeText" +msgid "Time" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:70 +msgctxt "Date Time Picker JS hourText" +msgid "Hour" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:71 +msgctxt "Date Time Picker JS minuteText" +msgid "Minute" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:72 +msgctxt "Date Time Picker JS secondText" +msgid "Second" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:73 +msgctxt "Date Time Picker JS millisecText" +msgid "Millisecond" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:74 +msgctxt "Date Time Picker JS microsecText" +msgid "Microsecond" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:75 +msgctxt "Date Time Picker JS timezoneText" +msgid "Time Zone" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:76 +msgctxt "Date Time Picker JS currentText" +msgid "Now" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:77 +msgctxt "Date Time Picker JS closeText" +msgid "Done" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:78 +msgctxt "Date Time Picker JS selectText" +msgid "Select" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:80 +msgctxt "Date Time Picker JS amText" +msgid "AM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:81 +msgctxt "Date Time Picker JS amTextShort" +msgid "A" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:84 +msgctxt "Date Time Picker JS pmText" +msgid "PM" +msgstr "" + +#: includes/fields/class-acf-field-date_time_picker.php:85 +msgctxt "Date Time Picker JS pmTextShort" +msgid "P" +msgstr "" + +#: includes/fields/class-acf-field-email.php:25 +msgid "Email" +msgstr "" + +#: includes/fields/class-acf-field-email.php:127 +#: includes/fields/class-acf-field-number.php:136 +#: includes/fields/class-acf-field-password.php:71 +#: includes/fields/class-acf-field-text.php:128 +#: includes/fields/class-acf-field-textarea.php:111 +#: includes/fields/class-acf-field-url.php:109 +msgid "Placeholder Text" +msgstr "" + +#: includes/fields/class-acf-field-email.php:128 +#: includes/fields/class-acf-field-number.php:137 +#: includes/fields/class-acf-field-password.php:72 +#: includes/fields/class-acf-field-text.php:129 +#: includes/fields/class-acf-field-textarea.php:112 +#: includes/fields/class-acf-field-url.php:110 +msgid "Appears within the input" +msgstr "" + +#: includes/fields/class-acf-field-email.php:136 +#: includes/fields/class-acf-field-number.php:145 +#: includes/fields/class-acf-field-password.php:80 +#: includes/fields/class-acf-field-range.php:188 +#: includes/fields/class-acf-field-text.php:137 +msgid "Prepend" +msgstr "" + +#: includes/fields/class-acf-field-email.php:137 +#: includes/fields/class-acf-field-number.php:146 +#: includes/fields/class-acf-field-password.php:81 +#: includes/fields/class-acf-field-range.php:189 +#: includes/fields/class-acf-field-text.php:138 +msgid "Appears before the input" +msgstr "" + +#: includes/fields/class-acf-field-email.php:145 +#: includes/fields/class-acf-field-number.php:154 +#: includes/fields/class-acf-field-password.php:89 +#: includes/fields/class-acf-field-range.php:197 +#: includes/fields/class-acf-field-text.php:146 +msgid "Append" +msgstr "" + +#: includes/fields/class-acf-field-email.php:146 +#: includes/fields/class-acf-field-number.php:155 +#: includes/fields/class-acf-field-password.php:90 +#: includes/fields/class-acf-field-range.php:198 +#: includes/fields/class-acf-field-text.php:147 +msgid "Appears after the input" +msgstr "" + +#: includes/fields/class-acf-field-file.php:25 +msgid "File" +msgstr "" + +#: includes/fields/class-acf-field-file.php:58 +msgid "Edit File" +msgstr "" + +#: includes/fields/class-acf-field-file.php:59 +msgid "Update File" +msgstr "" + +#: includes/fields/class-acf-field-file.php:141 +msgid "File name" +msgstr "" + +#: includes/fields/class-acf-field-file.php:145 +#: includes/fields/class-acf-field-file.php:248 +#: includes/fields/class-acf-field-file.php:259 +#: includes/fields/class-acf-field-image.php:265 +#: includes/fields/class-acf-field-image.php:294 +#: pro/fields/class-acf-field-gallery.php:708 +#: pro/fields/class-acf-field-gallery.php:737 +msgid "File size" +msgstr "" + +#: includes/fields/class-acf-field-file.php:170 +msgid "Add File" +msgstr "" + +#: includes/fields/class-acf-field-file.php:221 +msgid "File Array" +msgstr "" + +#: includes/fields/class-acf-field-file.php:222 +msgid "File URL" +msgstr "" + +#: includes/fields/class-acf-field-file.php:223 +msgid "File ID" +msgstr "" + +#: includes/fields/class-acf-field-file.php:230 +#: includes/fields/class-acf-field-image.php:230 +#: pro/fields/class-acf-field-gallery.php:673 +msgid "Library" +msgstr "" + +#: includes/fields/class-acf-field-file.php:231 +#: includes/fields/class-acf-field-image.php:231 +#: pro/fields/class-acf-field-gallery.php:674 +msgid "Limit the media library choice" +msgstr "" + +#: includes/fields/class-acf-field-file.php:236 +#: includes/fields/class-acf-field-image.php:236 +#: includes/locations/class-acf-location-attachment.php:101 +#: includes/locations/class-acf-location-comment.php:79 +#: includes/locations/class-acf-location-nav-menu.php:102 +#: includes/locations/class-acf-location-taxonomy.php:79 +#: includes/locations/class-acf-location-user-form.php:87 +#: includes/locations/class-acf-location-user-role.php:111 +#: includes/locations/class-acf-location-widget.php:83 +#: pro/fields/class-acf-field-gallery.php:679 +msgid "All" +msgstr "" + +#: includes/fields/class-acf-field-file.php:237 +#: includes/fields/class-acf-field-image.php:237 +#: pro/fields/class-acf-field-gallery.php:680 +msgid "Uploaded to post" +msgstr "" + +#: includes/fields/class-acf-field-file.php:244 +#: includes/fields/class-acf-field-image.php:244 +#: pro/fields/class-acf-field-gallery.php:687 +msgid "Minimum" +msgstr "" + +#: includes/fields/class-acf-field-file.php:245 +#: includes/fields/class-acf-field-file.php:256 +msgid "Restrict which files can be uploaded" +msgstr "" + +#: includes/fields/class-acf-field-file.php:255 +#: includes/fields/class-acf-field-image.php:273 +#: pro/fields/class-acf-field-gallery.php:716 +msgid "Maximum" +msgstr "" + +#: includes/fields/class-acf-field-file.php:266 +#: includes/fields/class-acf-field-image.php:302 +#: pro/fields/class-acf-field-gallery.php:745 +msgid "Allowed file types" +msgstr "" + +#: includes/fields/class-acf-field-file.php:267 +#: includes/fields/class-acf-field-image.php:303 +#: pro/fields/class-acf-field-gallery.php:746 +msgid "Comma separated list. Leave blank for all types" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:25 +msgid "Google Map" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:59 +msgid "Sorry, this browser does not support geolocation" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:166 +msgid "Clear location" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:167 +msgid "Find current location" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:170 +msgid "Search for address..." +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:200 +#: includes/fields/class-acf-field-google-map.php:211 +msgid "Center" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:201 +#: includes/fields/class-acf-field-google-map.php:212 +msgid "Center the initial map" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:223 +msgid "Zoom" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:224 +msgid "Set the initial zoom level" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:233 +#: includes/fields/class-acf-field-image.php:256 +#: includes/fields/class-acf-field-image.php:285 +#: includes/fields/class-acf-field-oembed.php:268 +#: pro/fields/class-acf-field-gallery.php:699 +#: pro/fields/class-acf-field-gallery.php:728 +msgid "Height" +msgstr "" + +#: includes/fields/class-acf-field-google-map.php:234 +msgid "Customize the map height" +msgstr "" + +#: includes/fields/class-acf-field-group.php:25 +msgid "Group" +msgstr "" + +#: includes/fields/class-acf-field-group.php:459 +#: pro/fields/class-acf-field-repeater.php:379 +msgid "Sub Fields" +msgstr "" + +#: includes/fields/class-acf-field-group.php:475 +#: pro/fields/class-acf-field-clone.php:844 +msgid "Specify the style used to render the selected fields" +msgstr "" + +#: includes/fields/class-acf-field-group.php:480 +#: pro/fields/class-acf-field-clone.php:849 +#: pro/fields/class-acf-field-flexible-content.php:627 +#: pro/fields/class-acf-field-repeater.php:451 +msgid "Block" +msgstr "" + +#: includes/fields/class-acf-field-group.php:481 +#: pro/fields/class-acf-field-clone.php:850 +#: pro/fields/class-acf-field-flexible-content.php:626 +#: pro/fields/class-acf-field-repeater.php:450 +msgid "Table" +msgstr "" + +#: includes/fields/class-acf-field-group.php:482 +#: pro/fields/class-acf-field-clone.php:851 +#: pro/fields/class-acf-field-flexible-content.php:628 +#: pro/fields/class-acf-field-repeater.php:452 +msgid "Row" +msgstr "" + +#: includes/fields/class-acf-field-image.php:25 +msgid "Image" +msgstr "" + +#: includes/fields/class-acf-field-image.php:64 +msgid "Select Image" +msgstr "" + +#: includes/fields/class-acf-field-image.php:65 +msgid "Edit Image" +msgstr "" + +#: includes/fields/class-acf-field-image.php:66 +msgid "Update Image" +msgstr "" + +#: includes/fields/class-acf-field-image.php:157 +msgid "No image selected" +msgstr "" + +#: includes/fields/class-acf-field-image.php:157 +msgid "Add Image" +msgstr "" + +#: includes/fields/class-acf-field-image.php:211 +msgid "Image Array" +msgstr "" + +#: includes/fields/class-acf-field-image.php:212 +msgid "Image URL" +msgstr "" + +#: includes/fields/class-acf-field-image.php:213 +msgid "Image ID" +msgstr "" + +#: includes/fields/class-acf-field-image.php:220 +msgid "Preview Size" +msgstr "" + +#: includes/fields/class-acf-field-image.php:221 +msgid "Shown when entering data" +msgstr "" + +#: includes/fields/class-acf-field-image.php:245 +#: includes/fields/class-acf-field-image.php:274 +#: pro/fields/class-acf-field-gallery.php:688 +#: pro/fields/class-acf-field-gallery.php:717 +msgid "Restrict which images can be uploaded" +msgstr "" + +#: includes/fields/class-acf-field-image.php:248 +#: includes/fields/class-acf-field-image.php:277 +#: includes/fields/class-acf-field-oembed.php:257 +#: pro/fields/class-acf-field-gallery.php:691 +#: pro/fields/class-acf-field-gallery.php:720 +msgid "Width" +msgstr "" + +#: includes/fields/class-acf-field-link.php:25 +msgid "Link" +msgstr "" + +#: includes/fields/class-acf-field-link.php:133 +msgid "Select Link" +msgstr "" + +#: includes/fields/class-acf-field-link.php:138 +msgid "Opens in a new window/tab" +msgstr "" + +#: includes/fields/class-acf-field-link.php:172 +msgid "Link Array" +msgstr "" + +#: includes/fields/class-acf-field-link.php:173 +msgid "Link URL" +msgstr "" + +#: includes/fields/class-acf-field-message.php:25 +#: includes/fields/class-acf-field-message.php:101 +#: includes/fields/class-acf-field-true_false.php:126 +msgid "Message" +msgstr "" + +#: includes/fields/class-acf-field-message.php:110 +#: includes/fields/class-acf-field-textarea.php:139 +msgid "New Lines" +msgstr "" + +#: includes/fields/class-acf-field-message.php:111 +#: includes/fields/class-acf-field-textarea.php:140 +msgid "Controls how new lines are rendered" +msgstr "" + +#: includes/fields/class-acf-field-message.php:115 +#: includes/fields/class-acf-field-textarea.php:144 +msgid "Automatically add paragraphs" +msgstr "" + +#: includes/fields/class-acf-field-message.php:116 +#: includes/fields/class-acf-field-textarea.php:145 +msgid "Automatically add <br>" +msgstr "" + +#: includes/fields/class-acf-field-message.php:117 +#: includes/fields/class-acf-field-textarea.php:146 +msgid "No Formatting" +msgstr "" + +#: includes/fields/class-acf-field-message.php:124 +msgid "Escape HTML" +msgstr "" + +#: includes/fields/class-acf-field-message.php:125 +msgid "Allow HTML markup to display as visible text instead of rendering" +msgstr "" + +#: includes/fields/class-acf-field-number.php:25 +msgid "Number" +msgstr "" + +#: includes/fields/class-acf-field-number.php:163 +#: includes/fields/class-acf-field-range.php:158 +msgid "Minimum Value" +msgstr "" + +#: includes/fields/class-acf-field-number.php:172 +#: includes/fields/class-acf-field-range.php:168 +msgid "Maximum Value" +msgstr "" + +#: includes/fields/class-acf-field-number.php:181 +#: includes/fields/class-acf-field-range.php:178 +msgid "Step Size" +msgstr "" + +#: includes/fields/class-acf-field-number.php:219 +msgid "Value must be a number" +msgstr "" + +#: includes/fields/class-acf-field-number.php:237 +#, php-format +msgid "Value must be equal to or higher than %d" +msgstr "" + +#: includes/fields/class-acf-field-number.php:245 +#, php-format +msgid "Value must be equal to or lower than %d" +msgstr "" + +#: includes/fields/class-acf-field-oembed.php:25 +msgid "oEmbed" +msgstr "" + +#: includes/fields/class-acf-field-oembed.php:216 +msgid "Enter URL" +msgstr "" + +#: includes/fields/class-acf-field-oembed.php:254 +#: includes/fields/class-acf-field-oembed.php:265 +msgid "Embed Size" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:25 +msgid "Page Link" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:177 +msgid "Archives" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:269 +#: includes/fields/class-acf-field-post_object.php:267 +#: includes/fields/class-acf-field-taxonomy.php:961 +msgid "Parent" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:485 +#: includes/fields/class-acf-field-post_object.php:383 +#: includes/fields/class-acf-field-relationship.php:560 +msgid "Filter by Post Type" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:493 +#: includes/fields/class-acf-field-post_object.php:391 +#: includes/fields/class-acf-field-relationship.php:568 +msgid "All post types" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:499 +#: includes/fields/class-acf-field-post_object.php:397 +#: includes/fields/class-acf-field-relationship.php:574 +msgid "Filter by Taxonomy" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:507 +#: includes/fields/class-acf-field-post_object.php:405 +#: includes/fields/class-acf-field-relationship.php:582 +msgid "All taxonomies" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:523 +msgid "Allow Archives URLs" +msgstr "" + +#: includes/fields/class-acf-field-page_link.php:533 +#: includes/fields/class-acf-field-post_object.php:421 +#: includes/fields/class-acf-field-select.php:392 +#: includes/fields/class-acf-field-user.php:403 +msgid "Select multiple values?" +msgstr "" + +#: includes/fields/class-acf-field-password.php:25 +msgid "Password" +msgstr "" + +#: includes/fields/class-acf-field-post_object.php:25 +#: includes/fields/class-acf-field-post_object.php:436 +#: includes/fields/class-acf-field-relationship.php:639 +msgid "Post Object" +msgstr "" + +#: includes/fields/class-acf-field-post_object.php:437 +#: includes/fields/class-acf-field-relationship.php:640 +msgid "Post ID" +msgstr "" + +#: includes/fields/class-acf-field-radio.php:25 +msgid "Radio Button" +msgstr "" + +#: includes/fields/class-acf-field-radio.php:254 +msgid "Other" +msgstr "" + +#: includes/fields/class-acf-field-radio.php:259 +msgid "Add 'other' choice to allow for custom values" +msgstr "" + +#: includes/fields/class-acf-field-radio.php:265 +msgid "Save Other" +msgstr "" + +#: includes/fields/class-acf-field-radio.php:270 +msgid "Save 'other' values to the field's choices" +msgstr "" + +#: includes/fields/class-acf-field-range.php:25 +msgid "Range" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:25 +msgid "Relationship" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:62 +msgid "Maximum values reached ( {max} values )" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:63 +msgid "Loading" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:64 +msgid "No matches found" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:411 +msgid "Select post type" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:420 +msgid "Select taxonomy" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:477 +msgid "Search..." +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:588 +msgid "Filters" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:594 +#: includes/locations/class-acf-location-post-type.php:27 +msgid "Post Type" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:595 +#: includes/fields/class-acf-field-taxonomy.php:28 +#: includes/fields/class-acf-field-taxonomy.php:754 +#: includes/locations/class-acf-location-taxonomy.php:27 +msgid "Taxonomy" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:602 +msgid "Elements" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:603 +msgid "Selected elements will be displayed in each result" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:614 +msgid "Minimum posts" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:623 +msgid "Maximum posts" +msgstr "" + +#: includes/fields/class-acf-field-relationship.php:727 +#: pro/fields/class-acf-field-gallery.php:818 +#, php-format +msgid "%s requires at least %s selection" +msgid_plural "%s requires at least %s selections" +msgstr[0] "" +msgstr[1] "" + +#: includes/fields/class-acf-field-select.php:25 +#: includes/fields/class-acf-field-taxonomy.php:776 +msgctxt "noun" +msgid "Select" +msgstr "" + +#: includes/fields/class-acf-field-select.php:111 +msgctxt "Select2 JS matches_1" +msgid "One result is available, press enter to select it." +msgstr "" + +#: includes/fields/class-acf-field-select.php:112 +#, php-format +msgctxt "Select2 JS matches_n" +msgid "%d results are available, use up and down arrow keys to navigate." +msgstr "" + +#: includes/fields/class-acf-field-select.php:113 +msgctxt "Select2 JS matches_0" +msgid "No matches found" +msgstr "" + +#: includes/fields/class-acf-field-select.php:114 +msgctxt "Select2 JS input_too_short_1" +msgid "Please enter 1 or more characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:115 +#, php-format +msgctxt "Select2 JS input_too_short_n" +msgid "Please enter %d or more characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:116 +msgctxt "Select2 JS input_too_long_1" +msgid "Please delete 1 character" +msgstr "" + +#: includes/fields/class-acf-field-select.php:117 +#, php-format +msgctxt "Select2 JS input_too_long_n" +msgid "Please delete %d characters" +msgstr "" + +#: includes/fields/class-acf-field-select.php:118 +msgctxt "Select2 JS selection_too_long_1" +msgid "You can only select 1 item" +msgstr "" + +#: includes/fields/class-acf-field-select.php:119 +#, php-format +msgctxt "Select2 JS selection_too_long_n" +msgid "You can only select %d items" +msgstr "" + +#: includes/fields/class-acf-field-select.php:120 +msgctxt "Select2 JS load_more" +msgid "Loading more results…" +msgstr "" + +#: includes/fields/class-acf-field-select.php:121 +msgctxt "Select2 JS searching" +msgid "Searching…" +msgstr "" + +#: includes/fields/class-acf-field-select.php:122 +msgctxt "Select2 JS load_fail" +msgid "Loading failed" +msgstr "" + +#: includes/fields/class-acf-field-select.php:402 +#: includes/fields/class-acf-field-true_false.php:144 +msgid "Stylised UI" +msgstr "" + +#: includes/fields/class-acf-field-select.php:412 +msgid "Use AJAX to lazy load choices?" +msgstr "" + +#: includes/fields/class-acf-field-select.php:428 +msgid "Specify the value returned" +msgstr "" + +#: includes/fields/class-acf-field-separator.php:25 +msgid "Separator" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:25 +msgid "Tab" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:102 +msgid "Placement" +msgstr "" + +#: includes/fields/class-acf-field-tab.php:115 +msgid "" +"Define an endpoint for the previous tabs to stop. This will start a new " +"group of tabs." +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:714 +#, php-format +msgctxt "No terms" +msgid "No %s" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:755 +msgid "Select the taxonomy to be displayed" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:764 +msgid "Appearance" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:765 +msgid "Select the appearance of this field" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:770 +msgid "Multiple Values" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:772 +msgid "Multi Select" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:774 +msgid "Single Value" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:775 +msgid "Radio Buttons" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:799 +msgid "Create Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:800 +msgid "Allow new terms to be created whilst editing" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:809 +msgid "Save Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:810 +msgid "Connect selected terms to the post" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:819 +msgid "Load Terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:820 +msgid "Load value from posts terms" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:834 +msgid "Term Object" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:835 +msgid "Term ID" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:885 +#, php-format +msgid "User unable to add new %s" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:895 +#, php-format +msgid "%s already exists" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:927 +#, php-format +msgid "%s added" +msgstr "" + +#: includes/fields/class-acf-field-taxonomy.php:973 +msgid "Add" +msgstr "" + +#: includes/fields/class-acf-field-text.php:25 +msgid "Text" +msgstr "" + +#: includes/fields/class-acf-field-text.php:155 +#: includes/fields/class-acf-field-textarea.php:120 +msgid "Character Limit" +msgstr "" + +#: includes/fields/class-acf-field-text.php:156 +#: includes/fields/class-acf-field-textarea.php:121 +msgid "Leave blank for no limit" +msgstr "" + +#: includes/fields/class-acf-field-text.php:181 +#: includes/fields/class-acf-field-textarea.php:213 +#, php-format +msgid "Value must not exceed %d characters" +msgstr "" + +#: includes/fields/class-acf-field-textarea.php:25 +msgid "Text Area" +msgstr "" + +#: includes/fields/class-acf-field-textarea.php:129 +msgid "Rows" +msgstr "" + +#: includes/fields/class-acf-field-textarea.php:130 +msgid "Sets the textarea height" +msgstr "" + +#: includes/fields/class-acf-field-time_picker.php:25 +msgid "Time Picker" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:25 +msgid "True / False" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:127 +msgid "Displays text alongside the checkbox" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:155 +msgid "On Text" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:156 +msgid "Text shown when active" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:170 +msgid "Off Text" +msgstr "" + +#: includes/fields/class-acf-field-true_false.php:171 +msgid "Text shown when inactive" +msgstr "" + +#: includes/fields/class-acf-field-url.php:25 +msgid "Url" +msgstr "" + +#: includes/fields/class-acf-field-url.php:151 +msgid "Value must be a valid URL" +msgstr "" + +#: includes/fields/class-acf-field-user.php:25 includes/locations.php:95 +msgid "User" +msgstr "" + +#: includes/fields/class-acf-field-user.php:378 +msgid "Filter by role" +msgstr "" + +#: includes/fields/class-acf-field-user.php:386 +msgid "All user roles" +msgstr "" + +#: includes/fields/class-acf-field-user.php:417 +msgid "User Array" +msgstr "" + +#: includes/fields/class-acf-field-user.php:418 +msgid "User Object" +msgstr "" + +#: includes/fields/class-acf-field-user.php:419 +msgid "User ID" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:25 +msgid "Wysiwyg Editor" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:330 +msgid "Visual" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:331 +msgctxt "Name for the Text editor tab (formerly HTML)" +msgid "Text" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:337 +msgid "Click to initialize TinyMCE" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:390 +msgid "Tabs" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:395 +msgid "Visual & Text" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:396 +msgid "Visual Only" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:397 +msgid "Text Only" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:404 +msgid "Toolbar" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:419 +msgid "Show Media Upload Buttons?" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:429 +msgid "Delay initialization?" +msgstr "" + +#: includes/fields/class-acf-field-wysiwyg.php:430 +msgid "TinyMCE will not be initalized until field is clicked" +msgstr "" + +#: includes/forms/form-front.php:55 +msgid "Validate Email" +msgstr "" + +#: includes/forms/form-front.php:103 pro/fields/class-acf-field-gallery.php:591 +#: pro/options-page.php:81 +msgid "Update" +msgstr "" + +#: includes/forms/form-front.php:104 +msgid "Post updated" +msgstr "" + +#: includes/forms/form-front.php:230 +msgid "Spam Detected" +msgstr "" + +#: includes/locations.php:93 includes/locations/class-acf-location-post.php:27 +msgid "Post" +msgstr "" + +#: includes/locations.php:94 includes/locations/class-acf-location-page.php:27 +msgid "Page" +msgstr "" + +#: includes/locations.php:96 +msgid "Forms" +msgstr "" + +#: includes/locations.php:243 +msgid "is equal to" +msgstr "" + +#: includes/locations.php:244 +msgid "is not equal to" +msgstr "" + +#: includes/locations/class-acf-location-attachment.php:27 +msgid "Attachment" +msgstr "" + +#: includes/locations/class-acf-location-attachment.php:109 +#, php-format +msgid "All %s formats" +msgstr "" + +#: includes/locations/class-acf-location-comment.php:27 +msgid "Comment" +msgstr "" + +#: includes/locations/class-acf-location-current-user-role.php:27 +msgid "Current User Role" +msgstr "" + +#: includes/locations/class-acf-location-current-user-role.php:110 +msgid "Super Admin" +msgstr "" + +#: includes/locations/class-acf-location-current-user.php:27 +msgid "Current User" +msgstr "" + +#: includes/locations/class-acf-location-current-user.php:97 +msgid "Logged in" +msgstr "" + +#: includes/locations/class-acf-location-current-user.php:98 +msgid "Viewing front end" +msgstr "" + +#: includes/locations/class-acf-location-current-user.php:99 +msgid "Viewing back end" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu-item.php:27 +msgid "Menu Item" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:27 +msgid "Menu" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:109 +msgid "Menu Locations" +msgstr "" + +#: includes/locations/class-acf-location-nav-menu.php:119 +msgid "Menus" +msgstr "" + +#: includes/locations/class-acf-location-page-parent.php:27 +msgid "Page Parent" +msgstr "" + +#: includes/locations/class-acf-location-page-template.php:27 +msgid "Page Template" +msgstr "" + +#: includes/locations/class-acf-location-page-template.php:87 +#: includes/locations/class-acf-location-post-template.php:134 +msgid "Default Template" +msgstr "" + +#: includes/locations/class-acf-location-page-type.php:27 +msgid "Page Type" +msgstr "" + +#: includes/locations/class-acf-location-page-type.php:146 +msgid "Front Page" +msgstr "" + +#: includes/locations/class-acf-location-page-type.php:147 +msgid "Posts Page" +msgstr "" + +#: includes/locations/class-acf-location-page-type.php:148 +msgid "Top Level Page (no parent)" +msgstr "" + +#: includes/locations/class-acf-location-page-type.php:149 +msgid "Parent Page (has children)" +msgstr "" + +#: includes/locations/class-acf-location-page-type.php:150 +msgid "Child Page (has parent)" +msgstr "" + +#: includes/locations/class-acf-location-post-category.php:27 +msgid "Post Category" +msgstr "" + +#: includes/locations/class-acf-location-post-format.php:27 +msgid "Post Format" +msgstr "" + +#: includes/locations/class-acf-location-post-status.php:27 +msgid "Post Status" +msgstr "" + +#: includes/locations/class-acf-location-post-taxonomy.php:27 +msgid "Post Taxonomy" +msgstr "" + +#: includes/locations/class-acf-location-post-template.php:27 +msgid "Post Template" +msgstr "" + +#: includes/locations/class-acf-location-user-form.php:27 +msgid "User Form" +msgstr "" + +#: includes/locations/class-acf-location-user-form.php:88 +msgid "Add / Edit" +msgstr "" + +#: includes/locations/class-acf-location-user-form.php:89 +msgid "Register" +msgstr "" + +#: includes/locations/class-acf-location-user-role.php:27 +msgid "User Role" +msgstr "" + +#: includes/locations/class-acf-location-widget.php:27 +msgid "Widget" +msgstr "" + +#: includes/validation.php:364 +#, php-format +msgid "%s value is required" +msgstr "" + +#. Plugin Name of the plugin/theme +#: pro/acf-pro.php:28 +msgid "Advanced Custom Fields PRO" +msgstr "" + +#: pro/admin/admin-options-page.php:198 +msgid "Publish" +msgstr "" + +#: pro/admin/admin-options-page.php:204 +#, php-format +msgid "" +"No Custom Field Groups found for this options page. Create a " +"Custom Field Group" +msgstr "" + +#: pro/admin/admin-updates.php:49 +msgid "Error. Could not connect to update server" +msgstr "" + +#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 +msgid "Updates" +msgstr "" + +#: pro/admin/admin-updates.php:191 +msgid "" +"Error. Could not authenticate update package. Please check again or " +"deactivate and reactivate your ACF PRO license." +msgstr "" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Deactivate License" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:7 +msgid "Activate License" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:17 +msgid "License Information" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:20 +#, php-format +msgid "" +"To unlock updates, please enter your license key below. If you don't have a " +"licence key, please see details & pricing." +msgstr "" + +#: pro/admin/views/html-settings-updates.php:29 +msgid "License Key" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:61 +msgid "Update Information" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:68 +msgid "Current Version" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:76 +msgid "Latest Version" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:84 +msgid "Update Available" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:92 +msgid "Update Plugin" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:94 +msgid "Please enter your license key above to unlock updates" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:100 +msgid "Check Again" +msgstr "" + +#: pro/admin/views/html-settings-updates.php:117 +msgid "Upgrade Notice" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:25 +msgctxt "noun" +msgid "Clone" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:812 +msgid "Select one or more fields you wish to clone" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:829 +msgid "Display" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:830 +msgid "Specify the style used to render the clone field" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:835 +msgid "Group (displays selected fields in a group within this field)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:836 +msgid "Seamless (replaces this field with selected fields)" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:857 +#, php-format +msgid "Labels will be displayed as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:860 +msgid "Prefix Field Labels" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:871 +#, php-format +msgid "Values will be saved as %s" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:874 +msgid "Prefix Field Names" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:992 +msgid "Unknown field" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:1031 +msgid "Unknown field group" +msgstr "" + +#: pro/fields/class-acf-field-clone.php:1035 +#, php-format +msgid "All fields from %s field group" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:31 +#: pro/fields/class-acf-field-repeater.php:193 +#: pro/fields/class-acf-field-repeater.php:463 +msgid "Add Row" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:73 +#: pro/fields/class-acf-field-flexible-content.php:938 +#: pro/fields/class-acf-field-flexible-content.php:1020 +msgid "layout" +msgid_plural "layouts" +msgstr[0] "" +msgstr[1] "" + +#: pro/fields/class-acf-field-flexible-content.php:74 +msgid "layouts" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:77 +#: pro/fields/class-acf-field-flexible-content.php:937 +#: pro/fields/class-acf-field-flexible-content.php:1019 +msgid "This field requires at least {min} {label} {identifier}" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:78 +msgid "This field has a limit of {max} {label} {identifier}" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:81 +msgid "{available} {label} {identifier} available (max {max})" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:82 +msgid "{required} {label} {identifier} required (min {min})" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:85 +msgid "Flexible Content requires at least 1 layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:302 +#, php-format +msgid "Click the \"%s\" button below to start creating your layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:427 +msgid "Add layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:428 +msgid "Remove layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:429 +#: pro/fields/class-acf-field-repeater.php:296 +msgid "Click to toggle" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder Layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:569 +msgid "Reorder" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:570 +msgid "Delete Layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:571 +msgid "Duplicate Layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:572 +msgid "Add New Layout" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:643 +msgid "Min" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:656 +msgid "Max" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:683 +#: pro/fields/class-acf-field-repeater.php:459 +msgid "Button Label" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:692 +msgid "Minimum Layouts" +msgstr "" + +#: pro/fields/class-acf-field-flexible-content.php:701 +msgid "Maximum Layouts" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:71 +msgid "Add Image to Gallery" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:72 +msgid "Maximum selection reached" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:338 +msgid "Length" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:381 +msgid "Caption" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:390 +msgid "Alt Text" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:562 +msgid "Add to gallery" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:566 +msgid "Bulk actions" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:567 +msgid "Sort by date uploaded" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:568 +msgid "Sort by date modified" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:569 +msgid "Sort by title" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:570 +msgid "Reverse current order" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:588 +msgid "Close" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:642 +msgid "Minimum Selection" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:651 +msgid "Maximum Selection" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:660 +msgid "Insert" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:661 +msgid "Specify where new attachments are added" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:665 +msgid "Append to the end" +msgstr "" + +#: pro/fields/class-acf-field-gallery.php:666 +msgid "Prepend to the beginning" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:65 +#: pro/fields/class-acf-field-repeater.php:656 +msgid "Minimum rows reached ({min} rows)" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:66 +msgid "Maximum rows reached ({max} rows)" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:333 +msgid "Add row" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:334 +msgid "Remove row" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:412 +msgid "Collapsed" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:413 +msgid "Select a sub field to show when row is collapsed" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:423 +msgid "Minimum Rows" +msgstr "" + +#: pro/fields/class-acf-field-repeater.php:433 +msgid "Maximum Rows" +msgstr "" + +#: pro/locations/class-acf-location-options-page.php:79 +msgid "No options pages exist" +msgstr "" + +#: pro/options-page.php:51 +msgid "Options" +msgstr "" + +#: pro/options-page.php:82 +msgid "Options Updated" +msgstr "" + +#: pro/updates.php:97 +#, php-format +msgid "" +"To enable updates, please enter your license key on the Updates page. If you don't have a licence key, please see details & pricing." +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "https://www.advancedcustomfields.com/" +msgstr "" + +#. Author of the plugin/theme +msgid "Elliot Condon" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://www.elliotcondon.com/" +msgstr "" diff --git a/wp-content/plugins/advanced-custom-fields/readme.txt b/wp-content/plugins/advanced-custom-fields/readme.txt new file mode 100644 index 0000000..f855e07 --- /dev/null +++ b/wp-content/plugins/advanced-custom-fields/readme.txt @@ -0,0 +1,221 @@ +=== Advanced Custom Fields === +Contributors: elliotcondon +Tags: acf, advanced, custom, field, fields, form, repeater, content +Requires at least: 4.7.0 +Tested up to: 5.2 +Requires PHP: 5.4 +License: GPLv2 or later +License URI: https://www.gnu.org/licenses/gpl-2.0.html + +Customize WordPress with powerful, professional and intuitive fields. + +== Description == + +Use the Advanced Custom Fields plugin to take full control of your WordPress edit screens & custom field data. + +**Add fields on demand.** Our field builder allows you to quickly and easily add fields to WP edit screens with only the click of a few buttons! + +**Add them anywhere.** Fields can be added all over WP including posts, users, taxonomy terms, media, comments and even custom options pages! + +**Show them everywhere.** Load and display your custom field values in any theme template file with our hassle free developer friendly functions! + += Features = +* Simple & Intuitive +* Powerful Functions +* Over 30 Field Types +* Extensive Documentation +* Millions of Users + += Links = +* [Website](https://www.advancedcustomfields.com) +* [Documentation](https://www.advancedcustomfields.com/resources/) +* [Support](https://support.advancedcustomfields.com) +* [ACF PRO](https://www.advancedcustomfields.com/pro/) + += PRO = +The Advanced Custom Fields plugin is also available in a professional version which includes more fields, more functionality, and more flexibility! [Learn more](https://www.advancedcustomfields.com/pro/) + + +== Installation == + +From your WordPress dashboard + +1. **Visit** Plugins > Add New +2. **Search** for "Advanced Custom Fields" +3. **Activate** Advanced Custom Fields from your Plugins page +4. **Click** on the new menu item "Custom Fields" and create your first Custom Field Group! +5. **Read** the documentation to [get started](https://www.advancedcustomfields.com/resources/getting-started-with-acf/) + + +== Frequently Asked Questions == + += What kind of support do you provide? = + +**Help Desk.** Support is currently provided via our email help desk. Questions are generally answered within 24 hours, with the exception of weekends and holidays. We answer questions related to ACF, its usage and provide minor customization guidance. We cannot guarantee support for questions which include custom theme code, or 3rd party plugin conflicts & compatibility. [Open a Support Ticket](https://www.advancedcustomfields.com/support/) + +**Support Forums.** Our Community Forums provide a great resource for searching and finding previously answered and asked support questions. You may create a new thread on these forums, however, it is not guaranteed that you will receive an answer from our support team. This is more of an area for developers to talk to one another, post ideas, plugins and provide basic help. [View the Support Forum](https://support.advancedcustomfields.com/) + + +== Screenshots == + +1. Simple & Intuitive + +2. Made for developers + +3. All about fields + + +== Changelog == + += 5.8.3 = +*Release Date - 7 August 2019* + +* Tweak - Changed Options Page location rules to show "page_title" instead of "menu_title". +* Fix - Fixed bug causing Textarea field to incorrectly validate maxlength. +* Fix - Fixed bug allowing Range field values outside of the min and max settings. +* Fix - Fixed bug in block RegExp causing some blocks to miss the "acf/pre_save_block" filter. +* Dev - Added `$block_type` parameter to block settings "enqueue_assets" callback. +* i18n - Added French Canadian language thanks to Bérenger Zyla. +* i18n - Updated French language thanks to Bérenger Zyla. + += 5.8.2 = +*Release Date - 15 July 2019* + +* Fix - Fixed bug where validation did not prevent new user registration. +* Fix - Fixed bug causing some "reordered" metaboxes to not appear in the Gutenberg editor. +* Fix - Fixed bug causing WYSIWYG field with delayed initialization to appear blank. +* Fix - Fixed bug when editing a post and adding a new tag did not refresh metaboxes. +* Dev - Added missing `$value` parameter in "acf/pre_format_value" filter. + += 5.8.1 = +*Release Date - 3 June 2019* + +* New - Added "Preview Size" and "Return Format" settings to the Gallery field. +* Tweak - Improved metabox styling for Gutenberg. +* Tweak - Changed default "Preview Size" to medium for the Image field. +* Fix - Fixed bug in media modal causing the primary button text to disappear after editing an image. +* Fix - Fixed bug preventing the TinyMCE Advanced plugin from adding `< p >` tags. +* Fix - Fixed bug where HTML choices were not visible in conditional logic dropdown. +* Fix - Fixed bug causing incorrect order of imported/synced flexible content sub fields. +* i18n - Updated German translation thanks to Ralf Koller. +* i18n - Updated Persian translation thanks to Majix. + += 5.8.0 = +*Release Date - 8 May 2019* + +* New - Added ACF Blocks feature for ACF PRO. +* Fix - Fixed bug causing duplicate "save metabox" AJAX requests in the Gutenberg editor. +* Fix - Fixed bug causing incorrect Repeater field value order in AJAX requests. +* Dev - Added JS filter `'relationship_ajax_data'` to customize Relationship field AJAX data. +* Dev - Added `$field_group` parameter to `'acf/location/match_rule'` filter. +* Dev - Bumped minimum supported PHP version to 5.4.0. +* Dev - Bumped minimum supported WP version to 4.7.0. +* i18n - Updated German translation thanks to Ralf Koller. +* i18n - Updated Portuguese language thanks to Pedro Mendonça. + += 5.7.13 = +*Release Date - 6 March 2019* + +* Fix - Fixed bug causing issues with registered fields during `switch_to_blog()`. +* Fix - Fixed bug preventing sub fields from being reused across multiple parents. +* Fix - Fixed bug causing the `get_sub_field()` function to fail if a tab field exists with the same name as the selected field. +* Fix - Fixed bug corrupting field settings since WP 5.1 when instructions contain `< a target="" >`. +* Fix - Fixed bug in Gutenberg where custom metabox location (acf_after_title) did not show on initial page load. +* Fix - Fixed bug causing issues when importing/syncing multiple field groups which contain a clone field. +* Fix - Fixed bug preventing the AMP plugin preview from working. +* Dev - Added new 'pre' filters to get, update and delete meta functions. +* i18n - Update Turkish translation thanks to Emre Erkan. + += 5.7.12 = +*Release Date - 15 February 2019* + +* Fix - Added missing function `register_field_group()`. +* Fix - Fixed PHP 5.4 error "Can't use function return value in write context". +* Fix - Fixed bug causing wp_options values to be slashed incorrectly. +* Fix - Fixed bug where "sync" feature imported field groups without fields. +* Fix - Fixed bug preventing `get_field_object()` working with a field key. +* Fix - Fixed bug causing incorrect results in `get_sub_field()`. +* Fix - Fixed bug causing draft and preview issues with serialized values. +* Fix - Fixed bug causing reversed field group metabox order. +* Fix - Fixed bug causing incorrect character count when validating values. +* Fix - Fixed bug showing incorrect choices for post_template location rule. +* Fix - Fixed bug causing incorrect value retrieval after `switch_to_blog()`. +* i18n - Updated Persian translation thanks to Majix. + += 5.7.11 = +*Release Date - 11 February 2019* + +* New - Added support for persistent object caching. +* Fix - Fixed PHP error in `determine_locale()` affecting AJAX requests. +* Fix - Fixed bug affecting dynamic metabox check when selecting "default" page template. +* Fix - Fixed bug where tab fields did not render correctly within a dynamic metabox. +* Tweak - Removed language fallback from "zh_TW" to "zh_CN". +* Dev - Refactored various core functions. +* Dev - Added new hook variation functions `acf_add_filter_variations()` and `acf_add_action_variations()`. +* i18n - Updated Portuguese language thanks to Pedro Mendonça. +* i18n - Updated German translation thanks to Ralf Koller. +* i18n - Updated Swiss German translation thanks to Raphael Hüni. + += 5.7.10 = +*Release Date - 16 January 2019* + +* Fix - Fixed bug preventing metaboxes from saving if validation fails within Gutenberg. +* Fix - Fixed bug causing unload prompt to show incorrectly within Gutenberg. +* Fix - Fixed JS error when selecting taxonomy terms within Gutenberg. +* Fix - Fixed bug causing jQuery sortable issues within other plugins. +* Tweak - Improved loading translations by adding fallback from region to country when .mo file does not exit. +* Tweak - Improved punctuation throughout admin notices. +* Tweak - Improved performance and accuracy when loading a user field value. +* Dev - Added filter 'acf/get_locale' to customize the locale used to load translations. +* Dev - Added filter 'acf/allow_unfiltered_html' to customize if current user can save unfiltered HTML. +* Dev - Added new data storage functions `acf_register_store()` and `acf_get_store()`. +* Dev - Moved from .less to .scss and minified all css. +* i18n - Updated French translation thanks to Maxime Bernard-Jacquet. +* i18n - Updated Czech translation thanks to David Rychly. + += 5.7.9 = +*Release Date - 17 December 2018* + +* Fix - Added custom metabox location (acf_after_title) compatibility with Gutenberg. +* Fix - Added dynamic metabox check compatibility with Gutenberg. +* Fix - Fixed bug causing required date picker fields to prevent form submit. +* Fix - Fixed bug preventing multi-input values from saving correctly within media modals. +* Fix - Fixed bug where `acf_form()` redirects to an incorrect URL for sub-sites. +* Fix - Fixed bug where breaking out of a sub `have_rows()` loop could produce undesired results. +* Dev - Added filter 'acf/connect_attachment_to_post' to prevent connecting attachments to posts. +* Dev - Added JS filter 'google_map_autocomplete_args' to customize Google Maps autocomplete settings. + += 5.7.8 = +*Release Date - 7 December 2018* + +* Fix - Fixed vulnerability allowing author role to save unfiltered HTML values. +* Fix - Fixed all metaboxes appearing when editing a post in WP 5.0. +* i18n - Updated Polish translation thanks to Dariusz Zielonka. +* i18n - Updated Czech translation thanks to Veronika Hanzlíková. +* i18n - Update Turkish translation thanks to Emre Erkan. +* i18n - Updated Portuguese language thanks to Pedro Mendonça. + += 5.7.7 = +*Release Date - 1 October 2018* + +* Fix - Fixed various plugin update issues. +* Tweak - Added 'language' to Google Maps API url. +* Dev - Major improvements to the `acf.models.Postbox` model. +* Dev - Added JS filter 'check_screen_args'. +* Dev - Added JS action 'check_screen_complete'. +* Dev - Added action 'acf/options_page/submitbox_before_major_actions'. +* Dev - Added action 'acf/options_page/submitbox_major_actions'. +* i18n - Updated Portuguese language thanks to Pedro Mendonça + += 5.7.6 = +*Release Date - 12 September 2018* + +* Fix - Fixed unload prompt not working. +* Dev - Reduced number of queries needed to populate the relationship field taxonomy filter. +* Dev - Added 'nav_menu_item_id' and 'nav_menu_item_depth' to get_field_groups() query. +* Dev - Reordered various actions and filters for more usefulness. +* i18n - Updated Polish language thanks to Dariusz Zielonka + +[View the full changelog](https://www.advancedcustomfields.com/changelog/) + +== Upgrade Notice == diff --git a/wp-content/plugins/amr-ical-events-list/admin/add-ons.php b/wp-content/plugins/amr-ical-events-list/admin/add-ons.php new file mode 100644 index 0000000..48096da --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/admin/add-ons.php @@ -0,0 +1,79 @@ + +

                          +

                          + +  —  +

                          + +
                          + 0 ) { + $cache = wp_remote_retrieve_body( $feed ); + set_transient( $transient_name, $cache, 1 ); + } + } else { + $cache = '

                          ' . __( 'There was an error retrieving the add-ons list from the server. Please try again later.', 'amr-events' ) . '

                          '; + } + } + return $cache; +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/admin/class-amr-license-handler.php b/wp-content/plugins/amr-ical-events-list/admin/class-amr-license-handler.php new file mode 100644 index 0000000..5b58cae --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/admin/class-amr-license-handler.php @@ -0,0 +1,157 @@ +file = $_file; + $this->item_name = $_item_name; + $this->item_shortname = //'amr_' . + preg_replace( '/[^a-zA-Z0-9-\s]/', '', str_replace( ' ', '-', strtolower( $this->item_name ) ) ); + $this->version = $_version; + $this->license = get_option($this->item_shortname . '-license-key' ) ; + $this->status = get_option($this->item_shortname . '-license-status' ) ; + //$this->expiry = get_option $this->item_shortname . '-license-expiry' ] ) ; + $this->author = $_author; + $this->api_url = is_null( $_api_url ) ? $this->api_url : $_api_url; + + // Setup hooks + $this->includes(); + $this->hooks(); + + add_filter( 'amr_events_get_licenses', array($this, 'licenses' ) ); + + } + + /** + * Include the updater class + * + * @access private + * @return void + */ + private function includes() { + if ( ! class_exists( 'amr_sl_plugin_updater' ) ) require_once 'plugin-updater.php'; + } + + /** + * Setup hooks + * + * @access private + * @return void + */ + private function hooks() { + // Register settings + //add_filter( 'amr_settings_licenses', array( $this, 'settings' ), 1 ); // adds licenses in NLR? + + // Updater + add_action( 'admin_init', array( $this, 'auto_updater' ), 0 ); + } + + /** + * Auto updater + * + * @access private + * @global array $edd_options + * @return void + */ + public function auto_updater() { + +// $valid = get_option( $this->item_shortname . '-license-status' ); +// if ( 'valid' !== $valid ) +// return; + + // Setup the updater + $edd_updater = new amr_sl_plugin_updater( + $this->api_url, + $this->file, + array( + 'version' => $this->version, + 'license' => $this->license, + 'item_name' => $this->item_name, + 'author' => $this->author + ) + ); + } + + + /** + * Add license field to settings + * + * @access public + * @param array $settings + * @return array + */ + public function licenses( $licenses ) { // add to the list of licenses to check + + $amr_events_Licenses[$this->item_shortname] = $this->item_name; + // NO ! messes up the license check.' '.$this->version; + //array( + // 'id' => $this->item_shortname . '-license-key', + // 'name' => sprintf( __( '%1$s license key', 'amr-events' ), $this->item_name ), + //'desc' => '', + //'type' => 'license_key', + //'options' => array( 'is_valid_license_option' => $this->item_shortname . '_licenseactive' ), + //'size' => 'regular' + //) + //); + + return array_merge( $licenses, $amr_events_Licenses ); + } + + + /** + * Activate the license key + * + * @access public + * @return void + */ + + + + /** + * Deactivate the license key + * + * @access public + * @return void + */ + +} + +endif; // end class_exists check + + diff --git a/wp-content/plugins/amr-ical-events-list/admin/plugin-updater.php b/wp-content/plugins/amr-ical-events-list/admin/plugin-updater.php new file mode 100644 index 0000000..1abe6b0 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/admin/plugin-updater.php @@ -0,0 +1,326 @@ +api_url = trailingslashit( $_api_url ); + $this->api_data = $_api_data; + $this->name = plugin_basename( $_plugin_file ); + $this->slug = basename( $_plugin_file, '.php' ); + $this->version = $_api_data['version']; + + // Set up hooks. + //add_action( 'admin_init', array( $this, 'init' ) ); + $this->init(); + add_action( 'admin_init', array( $this, 'show_changelog' ) ); + } + + /** + * Set up WordPress filters to hook into WP's update process. + * + * @uses add_filter() + * + * @return void + */ + public function init() { + + add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); + add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 ); + + add_action( 'after_plugin_row_' . $this->name, array( $this, 'show_update_notification' ), 10, 2 ); + } + + /** + * Check for Updates at the defined API endpoint and modify the update array. + * + * This function dives into the update API just when WordPress creates its update array, + * then adds a custom API call and injects the custom plugin data retrieved from the API. + * It is reassembled from parts of the native WordPress plugin update code. + * See wp-includes/update.php line 121 for the original wp_update_plugins() function. + * + * @uses api_request() + * + * @param array $_transient_data Update array build by WordPress. + * @return array Modified update array with custom plugin data. + */ + function check_update( $_transient_data ) { + global $pagenow; + // if ( $this->did_check ) { + // return $_transient_data; + // } + + if( ! is_object( $_transient_data ) ) { + $_transient_data = new stdClass; + } + + + if( 'plugins.php' == $pagenow && is_multisite() ) { + return $_transient_data; + } + if ( empty( $_transient_data->response ) || empty( $_transient_data->response[ $this->name ] ) ) { + + $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug ) ); + + if ( false !== $version_info && is_object( $version_info ) && isset( $version_info->new_version ) ) { + + $this->did_check = true; + + if( version_compare( $this->version, $version_info->new_version, '<' ) ) { + + $_transient_data->response[ $this->name ] = $version_info; + + } + + $_transient_data->last_checked = time(); + $_transient_data->checked[ $this->name ] = $this->version; + + } + + } + + return $_transient_data; + } + + /** + * show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise! + * + * @param string $file + * @param array $plugin + */ + public function show_update_notification( $file, $plugin ) { + + if( ! current_user_can( 'update_plugins' ) ) { + return; + } + + if( ! is_multisite() ) { + return; + } + + if ( $this->name != $file ) { + return; + } + + // Remove our filter on the site transient + remove_filter( 'pre_site_transient_update_plugins', array( $this, 'check_update' ), 10 ); + + $update_cache = get_site_transient( 'update_plugins' ); + + if ( empty( $update_cache->response ) || empty( $update_cache->response[ $this->name ] ) ) { + + $version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug ) ); + + if( version_compare( $this->version, $version_info->new_version, '<' ) ) { + + $update_cache->response[ $this->name ] = $version_info; + + } + + $update_cache->last_checked = time(); + $update_cache->checked[ $this->name ] = $this->version; + + set_site_transient( 'update_plugins', $update_cache ); + + } + + // Restore our filter + add_filter( 'pre_site_transient_update_plugins', array( $this, 'check_update' ) ); + + if ( ! empty( $update_cache->response[ $this->name ] ) && version_compare( $this->version, $version_info->new_version, '<' ) ) { + + // build a plugin list row, with update notification + $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' ); + echo '
                          '; + + $changelog_link = self_admin_url( 'index.php?edd_sl_action=view_plugin_changelog&plugin=' . $this->name . '&slug=' . $this->slug . '&TB_iframe=true&width=772&height=911' ); + + if ( empty( $version_info->download_link ) ) { + printf( + __( 'There is a new version of %1$s available. View version %3$s details.' ), + esc_html( $version_info->name ), + esc_url( $changelog_link ), + esc_html( $version_info->new_version ) + ); + } else { + printf( + __( 'There is a new version of %1$s available. View version %3$s details or update now.' ), + esc_html( $version_info->name ), + esc_url( $changelog_link ), + esc_html( $version_info->new_version ), + esc_url( wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $this->name, 'upgrade-plugin_' . $this->name ) ) + ); + } + + echo '
                          '; + } + } + + + /** + * Updates information on the "View version x.x details" page with custom data. + * + * @uses api_request() + * + * @param mixed $_data + * @param string $_action + * @param object $_args + * @return object $_data + */ + function plugins_api_filter( $_data, $_action = '', $_args = null ) { + + + if ( $_action != 'plugin_information' ) { + + return $_data; + + } + + if ( ! isset( $_args->slug ) || ( $_args->slug != $this->slug ) ) { + + return $_data; + + } + + $to_send = array( + 'slug' => $this->slug, + 'is_ssl' => is_ssl(), + 'fields' => array( + 'banners' => false, // These will be supported soon hopefully + 'reviews' => false + ) + ); + + $api_response = $this->api_request( 'plugin_information', $to_send ); + + if ( false !== $api_response ) { + $_data = $api_response; + } + + return $_data; + } + + + /** + * Disable SSL verification in order to prevent download update failures + * + * @param array $args + * @param string $url + * @return object $array + */ + function http_request_args( $args, $url ) { + // If it is an https request and we are performing a package download, disable ssl verification + if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) { + $args['sslverify'] = false; + } + return $args; + } + + /** + * Calls the API and, if successfull, returns the object delivered by the API. + * + * @uses get_bloginfo() + * @uses wp_remote_post() + * @uses is_wp_error() + * + * @param string $_action The requested action. + * @param array $_data Parameters for the API action. + * @return false||object + */ + private function api_request( $_action, $_data ) { + + global $wp_version; + + $data = array_merge( $this->api_data, $_data ); + + if ( $data['slug'] != $this->slug ) { + return; + } + + if ( empty( $data['license'] ) ) { + return; + } + + if( $this->api_url == home_url() ) { + return false; // Don't allow a plugin to ping itself + } + + $api_params = array( + 'edd_action' => 'get_version', + 'license' => $data['license'], + 'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false, + 'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false, + 'slug' => $this->slug, + 'author' => $data['author'], + 'url' => home_url() + ); + + $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) ); + + if ( ! is_wp_error( $request ) ) { + $request = json_decode( wp_remote_retrieve_body( $request ) ); + } + + if ( $request && isset( $request->sections ) ) { + $request->sections = maybe_unserialize( $request->sections ); + } else { + $request = false; + } + + return $request; + } + + public function show_changelog() { + + + if( empty( $_REQUEST['edd_sl_action'] ) || 'view_plugin_changelog' != $_REQUEST['edd_sl_action'] ) { + return; + } + + if( empty( $_REQUEST['plugin'] ) ) { + return; + } + + if( empty( $_REQUEST['slug'] ) ) { + return; + } + + if( ! current_user_can( 'update_plugins' ) ) { + wp_die( __( 'You do not have permission to install plugin updates' ) ); + } + + $response = $this->api_request( 'plugin_latest_version', array( 'slug' => $_REQUEST['slug'] ) ); + + if( $response && isset( $response->sections['changelog'] ) ) { + echo '
                          ' . $response->sections['changelog'] . '
                          '; + } + + + exit; + } + +} diff --git a/wp-content/plugins/amr-ical-events-list/admin/updates-page.php b/wp-content/plugins/amr-ical-events-list/admin/updates-page.php new file mode 100644 index 0000000..0c4616b --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/admin/updates-page.php @@ -0,0 +1,464 @@ + $n) { + $license = ''; + if (isset($_POST['key']) and is_array($_POST['key']) ) { + if (!empty($_POST['key'][$l])) { + $license = sanitize_key($_POST['key'][$l]); + } + } + amr_events_change_license($l, $license); // delete when empty + } + //else amr_flag_error ('Error processing license key updates','amr-events'); +} + +function amr_events_activate_licenses($licenses) { + + if ( ! isset( $_POST['activate'] ) and !is_array($_POST['activate']) ) { + return; + } + + foreach( $_POST['activate'] as $l => $activate ) { // will only do one at a time really + + if (empty($_POST['key']) or (empty($_POST['key'][$l]))) { + amr_flag_error(sprintf(__('No license key entered for %s', 'amr-events'), $l)); + continue; // we havent got this key + } + $license_key = sanitize_text_field( $_POST['key'][$l] ); + + // Data to send to the API + $api_params = array( + 'edd_action' => 'activate_license', + 'license' => $license_key, + 'item_name' => urlencode( $licenses[$l] ), + 'url' => home_url() + ); + + // Call the API + $response = wp_remote_post( + AMR_EVENTS_STORE_URL, + array( + 'timeout' => 15, + 'sslverify' => false, + 'body' => $api_params + ) + ); + + // Make sure there are no errors + if ( is_wp_error( $response ) or empty($response['body']) ) { + amr_flag_error(__('Error activating', 'amr-events')); + echo '
                          ';print_r($response['response']);
                          +				print_r($response['body']); echo '
                          '; + return; + } + + // Decode license data + $license_data = json_decode( wp_remote_retrieve_body( $response ) ); + if (!empty($license_data->success) and $license_data->success) { + update_option( $l . '-license-status', $license_data->license ); + // Tell WordPress to look for updates + set_site_transient( 'update_plugins', null ); + amr_confirm_message(sprintf(__('%s auto updates activated','amr-events'),$l)); + } + else { + amr_flag_error(__('Error activating with that license key', 'amr-events') + .' '.print_r($response['body'], true )); + + } + } +} + +function amr_events_deactivate_license($licenses) { + + if ( ! isset( $_POST['deactivate'] ) and !is_array($_POST['deactivate']) ) { + return; + } + + foreach( $_POST['deactivate'] as $l => $activate ) { // will only do one at a time really + if (empty($_POST['key'])) continue; // we got no keys + if (empty($_POST['key'][$l])) continue; // we havent got this key + + $license_key = sanitize_text_field( $_POST['key'][$l] ); + + // Data to send to the API + $api_params = array( + 'edd_action' => 'deactivate_license', + 'license' => $license_key, + 'item_name' => urlencode( $licenses[$l] ), + 'url' => home_url() + ); + + // Call the API + $response = wp_remote_post( + AMR_EVENTS_STORE_URL, + array( + 'timeout' => 15, + 'sslverify' => false, + 'body' => $api_params + ) + ); + + if ( is_wp_error( $response ) or empty($response['body']) ) { + amr_flag_error(__('Error deactivating', 'amr-events')); + echo '
                          ';print_r($response['response']);
                          +				print_r($response['body']); echo '
                          '; + return; + } + + // Decode license data + $license_data = json_decode( wp_remote_retrieve_body( $response ) ); + if (!empty($license_data->license) and ($license_data->license=='deactivated')) { + delete_option( $l . '-license-status', $license_data->license ); + amr_confirm_message(sprintf(__('%s auto updates deactivated','amr-events'),$l)); + } + else { + amr_flag_error(__('License expired or error deactivating with that license key', 'amr-events').' ' + .print_r($response['body'], true )); + //license probably expired + delete_option( $l . '-license-status', $license_data->license ); + } + } + } + +function amr_events_get_plugin_version($id) { + + $license = trim( get_option( $id.'-license-key' ) ); + + $api_params = array( + 'edd_action' => 'get_version', + 'license' => $license, + 'item_name' => urlencode( $id ), + 'url' => home_url() + ); + + // Call the custom API. + $response = wp_remote_get( + add_query_arg( $api_params, AMR_EVENTS_STORE_URL ), // we specified this url so not coming from external sources - no esc_url_raw needed + array( 'timeout' => 15, 'sslverify' => false ) ); + + if ( is_wp_error( $response ) ) + return false; + + $license_data = json_decode( wp_remote_retrieve_body( $response ) ); + + return $license_data; +} + +function amr_events_show_version ($version_data) { + ?> +
                          msg)) { + echo $version_data->msg; + ?>
                          new_version)) { + ?> + new_version; ?> + download_link)) { + ?>  + + + +
                          string '2.12' (length=4) + public 'name' => string 'amr users plus' (length=14) + public 'slug' => boolean false + public 'url' => string 'http://wpusersplugin.com/downloads/amr-events/?changelog=1' (length=62) + public 'homepage' => string 'http://wpusersplugin.com/downloads/amr-events/' (length=50) + public 'package' => string 'http://wpusersplugin.com/?edd_action=package_download&id=4213&key=001fe02f8ba95e799d29efedf9e80885&expires=MTQxMzg3Nzg1Nw%3D%3D' (length=127) + public 'download_link' => string 'http://wpusersplugin.com/?edd_action=package_download&id=4213&key=001fe02f8ba95e799d29efedf9e80885&expires=MTQxMzg3Nzg1Nw%3D%3D' (length=127) + public 'sections' + */ + //var_dump($version_data); +} + +function amr_events_get_license_data($l) { + + global $wp_version; + + $license = trim( get_option( $l.'-license-key' ) ); + + $api_params = array( + 'edd_action'=> 'check_license', + 'license' => $license, + 'item_name' => urlencode( $l ), + 'url' => home_url() + ); + + // Call the custom API. + $response = wp_remote_get( + add_query_arg( $api_params, + AMR_EVENTS_STORE_URL ), + array( 'timeout' => 15, + 'sslverify' => false ) + ); + + + if ( is_wp_error( $response ) ) + return false; + + $license_data = json_decode( wp_remote_retrieve_body( $response ) ); + if ($license_data->license == 'site_inactive') { // deactivated remotely at host site? + delete_option( $l . '-license-status', $license_data->license ); + amr_flag_error(sprintf(__('%s at this site is inactive at remote host', 'amr-events'), $license_data->item_name)); + } + + return $license_data; +} + +function amr_events_show_license($license_data) { +/* + 'license_limit' =>__('Maximum sites for license','amr-events'), + 'site_count' =>__('Sites using license key','amr-events'), + 'activations_left' =>__('Activations left','amr-events') +*/ + if (!empty($license_data->site_count)) + $license_data->sites_limit = $license_data->site_count; + if (!empty($license_data->license_limit)) + $license_data->sites_limit .= ' / '.$license_data->license_limit; + unset ($license_data->license_limit); + unset ($license_data->site_count); + unset ($license_data->activations_left); + + $license_fields = array ( + 'license' =>__('Remote Status','amr-events'), + 'sites_limit' =>__('Sites / Limit','amr-events'), + //'item_name' =>__('Item name','amr-events'), + 'expires' =>__('Expiry Date','amr-events'), + //'payment_id' =>__('Payment id','amr-events'), + //'customer_name' =>__('Customer Name','amr-events'), + 'customer_email' =>__('Customer Email','amr-events'), + + ); + + if (!empty($license_data)) { + + ?> $fldtitle) { + echo ''; + } + ?> $fldtitle) { + ?> +
                          '.$fldtitle.'
                          $fld)) { + if (($fld == 'expires') and ($license_data->$fld == '1970-01-01 00:00:00')) + echo ''; + else + echo $license_data->$fld; + } + else echo ' '; + ?>
                          Error Fetching License Status. Try logging on to '.AMR_EVENTS_STORE_URL.'

                          '; + return false; + } +} + +function amr_events_handle_license_data_request ($licenses) { // will normally only be one + foreach ($licenses as $l => $license_name) { + if (!empty($_POST['get_license_data'][$l])) { + $license_data = amr_events_get_license_data($l); + amr_events_show_license($license_data); + } + } +} + +function amr_events_get_status_text($status) { + if (empty($status)) { + $status_text= ''. + __('Plugin updates not activated','amr-events') + .''; + + } + elseif ( $status == 'valid' ) { + $status_text = ''. + __('Activated','amr-events') + .''; + + } + else { + ''. + $status_text =__('Deactivated','amr-events') + .''; + + } + return ($status_text); +} + +function amr_events_license_page() { + + if (!current_user_can('manage_options')) return; + + $licenses = amr_events_get_licenses(); // ones we already have saved and new ones from plugins just activated. + +// check if we should be doing any form processing and was the post from this page + + if ( isset( $_POST['submit'] ) or + !empty($_POST['activate'] ) or + !empty($_POST['deactivate'] ) or + !empty($_POST['get_license_data'] ) or + !empty($_POST['get_plugin_version'] ) + ) { + check_admin_referer('amr_events_nonce','amr_events_nonce'); + + if ( isset( $_POST['submit'] ) or !empty($_POST['activate']) ) + amr_events_save_licenses($licenses); + + if (!empty($_POST['activate'])) { + amr_events_activate_licenses($licenses); + } + elseif (!empty($_POST['deactivate'])) { + amr_events_deactivate_license($licenses); + } + elseif (!empty($_POST['get_license_data']) and is_array($_POST['get_license_data'])) { + //amr_events_handle_license_data_request($licenses); + } + elseif (!empty($_POST['get_plugin_version'])) { + //amr_events_get_plugin_version($id); + } + + } + $key=array(); + foreach ($licenses as $license_short_name => $license_name) { + $key[$license_short_name] = get_option( $license_short_name.'-license-key' ); // array (plugin -> array (licensekey, status, url?) + $status [$license_short_name] = get_option( $license_short_name.'-license-status' ); + $status_text[$license_short_name] = amr_events_get_status_text($status[$license_short_name]); + } + $base = get_permalink(); + ?> +
                          +

                          + +

                          '.AMR_EVENTS_STORE_URL.''); ?>

                          + +

                          '.AMR_EVENTS_STORE_URL.''); ?>

                          + + + + + + + + + $license_name) { + ?> + + + + + + + + + + +
                          + +
                          + + +
                          + + + + + + + + +   + +   + + +
                          + + + + + ' will have classes added to them and then closed - do not close them here. +If the tag is empty '', then no classes will be added (of course) asthat would break the html + +* Think of the layout as events in rows with event properties in columns. +* Ensure that the settings in the listtype will work with the html. +* Note that you could add your own css tags by adding div's or spans to the before and after elements +* You may also need to check / change the css. +* the .AMR_NL's add new lines in the osurce for readability - the idea was to switch that off later for more compact code + */ + +if ($where_am_i === 'in_events') { + + $htm['ul'] = ''; + $htm['ulc'] = ''; + $htm['li'] = ' \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/amr-ical-events-list.php b/wp-content/plugins/amr-ical-events-list/amr-ical-events-list.php new file mode 100644 index 0000000..daeb42a --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/amr-ical-events-list.php @@ -0,0 +1,89 @@ +Manage Settings Page, Manage Widget. + +/* Copyright 2009 AmR iCal Events List (email : anmari@anmari.com) + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License see . + for more details. +*/ +// NB Change version in code too define('AMR_ICAL_LIST_VERSION', '3.0.1'); + +define('AMR_ICAL_LIST_VERSION', '5.7'); +define('AMR_PHPVERSION_REQUIRED', '5.2.0'); +/* these are globals that we do not want easily changed -others are in the config file */ +define( 'AMR_BASENAME', plugin_basename( __FILE__ ) ); + + require_once('includes/amr-ical-groupings.php'); // must be before shortcode function + require_once('includes/amr-ical-config.php'); + require_once('includes/amr-upcoming-events-widget.php'); + require_once('includes/amr-ical-events-list-main.php'); + require_once('includes/amr-import-ical.php'); + require_once('includes/amr-rrule.php'); + + require_once('includes/amr_date_i18n.php'); + require_once('includes/amr-ical-calendar.php'); + require_once('includes/amr-ical-pretty-print.php'); + require_once('includes/functions.php'); + require_once('includes/amr-ical-plugin-form-html.php'); +// require_once('includes/amr-ical-post-type.php'); + +if (is_admin() ) { // are we in admin territory + require_once('includes/amr-ical-list-admin.php'); + require_once('includes/amr-ical-fields-admin.php'); + include('admin/add-ons.php'); + include('admin/updates-page.php'); + include('admin/class-amr-license-handler.php'); +} +/*----------------------------------------------------------------------------------------*/ +function amr_ical_updates_menu($parent_slug) { +//$parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function + $amr_pluginpage['add-ons'] = add_submenu_page($parent_slug, + __('Add ons','amr-events'), + __('Add ons','amr-events'), + 'manage_options', + 'add-ons', 'amre_add_ons_page'); + + $page = add_submenu_page($parent_slug, // parent slug + 'amr events add-on licensed updates' // page title + ,'+ updates' // menu title + ,'manage_options' //capability required + ,'amr_events_updates_page' // menu slug + ,'amr_events_license_page' ); // function + +} +/*--------------------------------------------------------------------------------------------------*/ +function amr_ical_load_text() { +// allows for a custom language file in WP_LANG_DIR as per prior versions +// note NOT in WP_LANG_DIR/plugins as that will be used by wp language pack feature + + $domain = 'amr-ical-events-list'; + // The "plugin_locale" filter is also used in load_plugin_textdomain() + $locale = apply_filters('plugin_locale', get_locale(), $domain); + //var_dump($locale); + // if custom language file allowed for in prior versions exists, then load it first + $result = load_textdomain($domain, WP_LANG_DIR.'/'.$domain.'-'.$locale.'.mo'); + +// wp (see l10n.php) will check wp-content/languages/plugins if nothing found in plugin dir + + //default is languages, maybe change in future? + $result = load_plugin_textdomain( $domain, false, dirname( plugin_basename( __FILE__ ) ) . '/lang/' ); + //var_dump($result); +} + + add_action('plugins_loaded' , 'amr_ical_load_text' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/css/icaladmin.css b/wp-content/plugins/amr-ical-events-list/css/icaladmin.css new file mode 100644 index 0000000..b065d27 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/css/icaladmin.css @@ -0,0 +1,45 @@ +div#amrical fieldset {margin-top: 1em;} +div#amrical {margin: 0 1em;} +div#amrical .expandall {margin: 0 2.5em; color: #D54E21; font-size: smaller;} +div#amrical ul {list-style: none; padding: 0; margin:0;} +div#amrical .List {width: 100%; clear:both; padding-top: 20px;} +div#amrical fieldset#amrglobal label {margin-top: 1em;} +div#amrical fieldset#amrglobal { width: 35em; } +div#amrical fieldset#submit { margin: 1em 2em 0 1em;} + +div#amrical fieldset#ListTypes fieldset { padding: 0 0.5em; } + +div#amrical legend {font-weight: bold; } +div#amrical fieldset.layout legend {font-weight: normal; } +div#amrical textarea, +div#amrical input {margin-left: 1em; padding: 0.5em; } +div#amrical .formats input {width: 20em;} +div#amrical fieldset.layout input {margin: 0; padding: 0.2em;} +div#amrical fieldset#submit input {padding: 0.4em;} +div#amrical fieldset#ListTypes fieldset.formats input { } + +div#amrical fieldset.limits label {margin-left: 1em; } +div#amrical fieldset.general label {margin-left: 1em; } + +div#amrical fieldset#amrglobal label { display: block;} +div#amrical label.Column {margin-left: 9em; } +div#amrical fieldset#ListTypes fieldset.formats label +{ margin-left: 1em; +} +div#amrical fieldset.layout label +{ font-size: xx-small; + position:relative; + top: -2.5em; + right: -4em; +} +div#amrical input.wide { +width: 90%; +} +div#amrical h4 { padding:0; margin: 0 0 0.4em 0; +} +.layout td {text-align: left ;} +.layout th .desc { + font-weight: light; +} + + diff --git a/wp-content/plugins/amr-ical-events-list/css/icalistcss_for_old_themes.css b/wp-content/plugins/amr-ical-events-list/css/icalistcss_for_old_themes.css new file mode 100644 index 0000000..d15aee2 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/css/icalistcss_for_old_themes.css @@ -0,0 +1,33 @@ +/* --------------------This css is needed in some themes that force list bullets in-----------------------------*/ +/* Do our very best to re move the list bullets from some weird themes where we do not want them. + Themes specify list bullet styling in many (okay maybe only 3 ) different ways and it is hard to force precdence sometimes! */ +.wical ul li.group, +.wicalprop ul li, +.icalprop ul li { /* remove list bullets for calendar properties and groups */ + list-style: none !important; + text-indent: 0; + padding: 0; + margin: 0; + background: none !important; + } + +.ical ul.amrcol li:before, +.wcalprop ul.amrcol li:before , +.icalprop ul.amrcol li:before { /* remove list bullets in the default theme and similar themes */ + content:"" !important; /* none should work, but chrome seems to ignore it */ +} +#sidebar #wccalprop0 li:before, +#sidebar .wical li:before { /* remove list bullets in the default theme and similar themes , for all fields*/ + content:"" !important; +} +/* Old Default Theme and similar only ---------------------------------------------------------------*/ +/* add back list bullets for a field only - see what your theme is using and put it in here */ +#sidebar .wical li { +} +#sidebar .wical li.eventdate:before { +/* content: "\00BB \0020" !important; */ +} +/* ------------------------ ---- End list bullets---------------------------------------------------------------*/ +#menu .wical ul { /* to override classic theme where all appears greyed out */ + color: #000; +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/css/icallist.css b/wp-content/plugins/amr-ical-events-list/css/icallist.css new file mode 100644 index 0000000..ea2acd4 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/css/icallist.css @@ -0,0 +1,462 @@ +/* AmRiCal Default Style for first calendar on page +This file should have been copied to a css folder in your uploads directory. It may safely be edited in the uploads folder and will not be overwritten by upgrades, +You can always refer back to the default css in the plugin folder for the latest suggested or example css. +*/ + +/* TwentyTwelve widget compatibility*/ +.widget .ical .enddate, +.widget .ical .eventdate, +.widget .ical .endtime, +.widget .ical .starttime { + color: #AAAAAA; + line-height: 1.84615; + font-size: 0.785714rem; +} +/*----------------------------------------------- */ +/* html5 code */ + #events_wrap article, + #events_wrap article span.summary, + #events_wrap article span.description, + #events_wrap aside, + #events_wrap figure, + #events_wrap footer, + #events_wrap header, + #events_wrap hgroup, + #events_wrap menu, + #events_wrap nav, + #events_wrap section { + /* for browsers that are not up to html5 yet, except will not work on IE */ + display: block; + } + /* html5 code */ + #events_wrap article, + #events_wrap article span.description, + #events_wrap aside, + #events_wrap figure, + #events_wrap section { + /* for browsers that are not up to html5 yet, except will not work on IE */ + margin: 10px 0 10px 0; + } + #events_wrap article { + margin-bottom: 20px; + } +/* Optional - for grouping collapseability */ + .master th.level0 { font-weight: bold; background-color: #ddd; } + .master th.group .termdesc { font-weight: normal; text-transform: none; } + + #calendar_toggle { + float: right; + } + +tr.level0 { + background: #ccc; +} + +/*----------------------------------------------- */ +#events_wrap { + word-wrap: break-word; /* make sure that any very long words do not cause overflow*/ +} +.event abbr, +#events_wrap abbr { +/* do not show the hcalendar abbr underline - the abbr is confusing especially since the format of the date is ISO8601, not human friendly +However is required if we want hcal functionality */ + border-bottom: none; +} +#events_wrap .largecalendar tbody td { /* wordpress default too big */ + font-size: small; +} +#events_wrap thead th { + text-align: center; +} +#events_wrap .largecalendar thead th, +#events_wrap .largecalendar tbody td { + padding: 3px 0 2px; /* the 0 so that the multi-days line up */ +} + +#events_wrap .largecalendar tbody td { + /* padding: 3px 3px 2px; */ /*- no for multi day - need them next to each other */ +} +#events_wrap .largecalendar tbody td .day { +padding: 0 3px 0; +} +#events_wrap .largecalendar tbody td .event { +padding: 0 3px; +} +#events_wrap table.largecalendar td { + width: 100px; /* the min width*/ +} +#events_wrap table.largecalendar { + table-layout: fixed; + width: 100%; + /* width: 650px; */ /* if you wanted to fix to a certain size, - or use margins instead*/ +} +#events_wrap table a { /* generally in the table , better not to have these */ + text-decoration: none; +} + +/*----------------------------------------------- */ +/* Calendar Widget - styles to look like the post calendar widget */ +/* Note this works for 2011 theme to override default table settings and achieve compatibility with the wpcalendar widget . + You need to find out what works for your theme */ +#events_wrap .smallcalendar, +#multismallcalendar .smallcalendar { + border-collapse: separate; + border-spacing: 0px; +} + +/* for some reason firefox does not apply css if we use events*/ +#multismallcalendar tr.dayheaders th, +#multismallcalendar tr.week th, +#multismallcalendar tr.week td, +#multismallcalendar td.pad, +#events_wrap .smallcalendar td , +#events_wrap .smallcalendar th , +#events_wrap .smallcalendar td div, +#events_wrap1 .smallcalendar td ,/* for small plus agenda*/ +#events_wrap1 .smallcalendar th , +#events_wrap1 .smallcalendar td div { + margin: 0; + border: 0; + padding: 0; + border: 0px none; + outline: 0px none; +} + +#multismallcalendar a.daylink, +#multismallcalendar a, +#events_wrap .smallcalendar a.daylink { + text-decoration: none; +} + + +/*-----------------------------------boxcalendar days------------ */ +#multismallcalendar td, +#multismallcalendar th, +#events_wrap td { + vertical-align: top; +} +.smallcalendar td.day1, +.smallcalendar td.day2, +.smallcalendar td.day3, +.smallcalendar td.day4, +.smallcalendar td.day5 { +/* background: #f5f5f5; */ /* if you want the days of the week to be styled*/ +} +#events_wrap table td.day6, + table.ical td.day7 { /* to style the weekend */ + /* background: #eee; */ +} +#events_wrap table td.pad { + /* background: #fefefe; */ /* if you wanted the padding cells to show - else let background come through */ +} + +/* highlight which day we are hovering over */ +#events_wrap .smallcalendar td.hasevents a:hover { +color: #fff; +} +/* highlight which day we are hovering over */ +#events_wrap .largecalendar td.hasevents:hover .day{ + background: #777; + color: #fff; +} +#events_wrap .largecalendar td.hasevents:hover .day a{ + color: #fff; +} +/*#events_wrap table.largecalendar td.today a, +table.smallcalendar td.selected a, +table.smallcalendar td.today a { + color: #fff; +}*/ +table.largecalendar td.today a { + color: #111; +} +table.smallcalendar td.hasevents{ + /* background: green; */ + /* enter a colour code here to have days with events stand out - maybe for availability */ +} +table.smallcalendar, +#events_wrap table.smallcalendar { + max-width: 200px; + border: 0; + margin: 0 auto; +} +#events_wrap table.smallcalendar tbody td { +/* background: #f5f5f5; */ +/* border: 1px solid #fff; */ +/* padding: 3px 0 2px; dont use - doesn't look like wp calendar then*/ +/* text-align: center; */ +} + +#events_wrap table.largecalendar tbody td { + height:80px; /* it will expand if necessary */ +} + +#events_wrap table tbody td .event { /* use something like this if you want to force each event to take one line only */ + /* overflow: hidden; + height: 20px; /* need a height for the overflow to work and still to keep table flexible ? */ + } +#events_wrap table tbody td .firstday, +#events_wrap table tbody td .middleday, +#events_wrap table tbody td .lastday { /* Multi day styling */ + background: #eee; + } +/* must be after multiday */ +#events_wrap .smallcalendar td.hasevents:hover, +#events_wrap table.largecalendar td.today , +#multismallcalendar td.today , +table.smallcalendar td.selected , +table.smallcalendar td.today { + font-weight: bold; +} + +/* to override Multi day styling */ +#events_wrap table tbody td.today .firstday, +#events_wrap table tbody td.today .middleday, +#events_wrap table tbody td.today .lastday +#events_wrap table tbody td.today .firstday, +#events_wrap table tbody td.today .middleday, +#events_wrap table tbody td.today .lastday { + background: #777; + } + +/* unfortunately we need to use divs to hide the details if we want to allow html in details and keep html valid */ +/* ------------------------------ In Box Calendar-- hide the details until we want them */ +#events_wrap table.ical td .event div.details2{ /* hide column 2 */ + display: none; +} +#events_wrap table.ical .event:hover div.details2 { + color:#333333; + background:#ffffff; + display:block; + position:absolute; + margin-top: 12px; + margin-left: 50px; + padding:10px; + width:200px; + z-index:100; + border: 1px solid #000000; + overflow: hidden; /* v 4.0.12 */ + } +#events_wrap table.ical .event:hover div.details2 { + display: block; + } +#events_wrap table.ical .event:hover div.details2 img { + width: 200px; /* make any images smaller */ + } +#events_wrap table.ical td.endweek .event:hover div.details2 { +/* shift the last column right side over a bit so it fits on the page*/ + margin-left: -110px; + } + +/*-------------------------------------------calendar_navigation */ + +.calendar_navigation { + clear: both; + margin: 0; + padding: 0; + border: hidden; +} +#icallookmore a#icalalookmore, +.calendar_navigation .nextweek, +.calendar_navigation .nextmonth { + text-align: right; + float:right; +} +#icallookmore a#icalalookprev, +.calendar_navigation .prevweek, +.calendar_navigation .prevmonth { + text-align: left; + float: left; +} +.calendar_navigation .prevweek, +.calendar_navigation .nextweek { + font-size: XX-large; +} + +.calendar_navigation form { + /* display: inline; */ + padding: 0 8px; + text-align: center; + margin: auto; + +} +.calendar_navigation input, +.calendar_navigation select{ + margin: 0; + line-height: 14px; + font-size: 12px; +} + +.calendar_navigation a { + text-decoration: none; +} + +/*-------------------------------------------calendar_views */ +#calendar_views { + float:right; + padding-left: 5px; +} +#calendar_views a { + text-decoration: none; +} +/* -------------------------------------------------if you have a bunch of small calendars */ +#multismallcalendar { +/* margin: 0 auto; + text-align: center; */ +} +#multismallcalendar table { + padding: 0; + float: left; /* chrome browser will not float - why?? */ + /*width: 32%; */ + max-width: 200px; + min-width: 150px; + margin:2%; + text-align: center; + table-layout: fixed; + font-size: small; +} +#multismallcalendar .day { + text-align: center; +} +#multismallcalendar caption, +#multismallcalendar tr th, +#multismallcalendar tr td { + text-align: center; + padding: 0; +} +/*----------------------------------------weeks calendar */ +#events_wrap table.weekscalendar caption { + /* text-align: left; */ +} +#events_wrap .weekscalendar tr.caption { + background: #eee; /* do not normally want to do this, but looks shite in 2011 otherwise*/ +} +#events_wrap .weekscalendar th, +#events_wrap .weekscalendar td { + width: 14%; + padding: 0; + margin: 0; +} +#events_wrap .weekscalendar td div.event { + padding-left: 2px; + padding-right: 2px; +} +/*----------------------------------------ics calendar properties */ +.icalprop, +#events_wrap .icalprop, +#multismallcalendar .icalprop { + border: 0; + margin: 0; + padding: 0; + width: 100%; + max-width: 100%; +} +.icalprop td, +#events_wrap .icalprop td, +#multismallcalendar .icalprop td { + border: 0; + text-align: left; + padding: 0; +} + +/* -------------------------------images can look strange in some themes -------------------------------*/ +#events_wrap img { + border: none !important; + vertical-align: text-bottom; + } +#events_wrap .vevent { /*--/ helps */ + clear: right; +} +/*------------------------------if event posts have large images in the content - can make the table too wide -------------- */ +#events_wrap table img { + max-width: 400px; +} +/* ------------------------------- the bling icons -------------------------------*/ +.amr-bling { /* float our little icons to the right */ + float: right; + padding:0; + margin: 0; /* required where sometimes they don't line up nicely if limited text */ + font-size: small; +} +.amr-bling img { + /* padding: 0 0 0 0.5em; */ +} +/* -------------------------------------------------- for semi paginate ------------------------------------------------------- */ +#icalnavs { + width: 250px; + text-align: center; + vertical-align: middle; + margin: 0 auto; + font-size:small; + } +.icalnav { vertical-align:middle;} +.icalnav a { text-decoration: none; color: #ADADAD;} +.icalnav a.symbol { font-size:large; } +.icalnavs:hover { background-color: #ffffff;} +.icalnav a:hover { color: #000000;} +.add-new-event {display: block; clear:both;} + +/* for credits if shown - keep it low key ------------------------------------------------------- */ +.amrical_credit,.amrical_credit a,.amrical_credit a:visited { + font-size:x-small; + color: #ADADAD; + font-style: italic; + vertical-align: middle; +} +.amrical_credit a:hover { + font-size: x-small; + font-style: italic; + color: #000000; +} +/* ---- ---------------------------------------------- to make large images okay */ +.eventinfo ul li { + clear: both; +} +/* ---------------------------------------------------OPTIONAL --------------*/ + +/* #events_wrap .largecalendar tbody td div.event { /* use this if you want to force each box to be a fixed size - day div required because one cannot force a td height */ +/* line-height: 26px; + overflow: hidden; +white-space: nowrap; + } */ +table.largecalendar tbody td:hover div.day { /* and then use this to see the day box on hover - confusing with too manu hover's though, so maybe do not use desc hover then */ +/* position: absolute; + border: 1px solid #000000; + padding: 10px; + background: #eee; + overflow: visible; + z-index:100; */ +} + +#events_wrap .history { + /* to style past events */ +} +/* ------------------------------------------------------ more optional catgeory or tag styling , by name or id (using tid) +#events_wrap .eventscat, +#events_wrap table tr.eventscat td.amrcol1 { + border-left: solid 5px green; +} +#events_wrap table tr.t1 td.amrcol1 { + border-left: solid 5px red; +} + */ + /*----------------------------------------------- */ +/* for multiple calendars, to check what events come from where */ + +.col1, .amrcol1 { /* the first cell */ + padding-left: 2px; +} +.cal0 { + border-left: medium solid transparent; /*default colour*/ +} + +.cal1 { + border-left: medium solid LightGray; + } + +.cal2 { + border-left: medium solid Gray; + } +.cal3 { + border-left: medium solid DarkGray; + } diff --git a/wp-content/plugins/amr-ical-events-list/css/icallist2017.css b/wp-content/plugins/amr-ical-events-list/css/icallist2017.css new file mode 100644 index 0000000..f774e27 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/css/icallist2017.css @@ -0,0 +1,207 @@ +/* AmRiCal Default Style for first calendar on page +This file should have been copied to a css folder in your uploads directory. It may safely be edited in the uploads folder and will not be overwritten by upgrades, +You can always refer back to the default css in the plugin folder for the latest suggested or example css. +*/ + +td.today +{ +background: #eee; +color: #111; +} + + +table td a.amr-bling { + text-align: right; + display: block; + float: right; + text-decoration: none; +} + +table td a.hrefmap { + display: inline; + float: none; + text-decoration: none; +} + +/* make tables look okay */ +table.weekscalendar, +table.largecalendar, +table.smallcalendar { + table-layout: fixed; + width: 100%; + column-width: 14%; +} +table.ical td, +table.weekscalendar td, +table.smallcalendar td, +table.largecalendar td { + display: table-cell; + vertical-align:top; +} + +table.weekscalendar tr.dayheaders th{ + padding-top: 4em; +} + +table.ical td .event { + padding-bottom: 1em; +} + +.ical address { + margin: 0 0 0.1 0; +} + + +.calendar_navigation { + margin: 1em 0; +} + +.icalnav, +.calendar_navigation form { + margin: auto; + text-align: center; +} + +.calendar_navigation a { + text-decoration: none; +} + +/* move the 'prev' links over to the right */ +.calendar_navigation .prevmonth, +.calendar_navigation .prevweek { + display: block; + text-align: left; + float: left; + +} + +/* move the 'next' links over to the right */ +.calendar_navigation .nextmonth, +.calendar_navigation .nextweek { + display: block; + text-align: right; + float: right; + +} + +/* remove the underline from the abbr that most browsers put in now*/ + +.event abbr[title] , +.ical abbr[title] { + border-bottom: none !important; + text-decoration: none !important; +} + +.ical abbr[title] { + cursor: help !important; + } + +/* centre the days pagination at bottom */ +.icalnav { + margin: auto; +} + +/* highlight which day we are hovering over */ +#events_wrap .largecalendar td.hasevents:hover .day{ + background: #777; + color: #fff; +} +#events_wrap .largecalendar td.hasevents:hover .day a{ + color: #fff; +} + +/* in list type 10 space events */ + +.ical .toggle_container { + margin-top: 2em; +} + +/* in list type 6 space events */ + +.icalprop h2.cal0 a { + text-align: right; + display: inline-block; + float: right; + text-decoration: none; + box-shadow: none; +} + +#events_wrap .ical span.starttime, +#events_wrap .ical span.location, +#events_wrap .ical span.summary { + clear: both; + display: block; + float: left; +} + +.eventinfo .map, +.eventinfo .addevent, +.eventinfo .subscribeevent, +.eventinfo .subseries, +#events_wrap .ical span.map, +#events_wrap .ical span.addevent{ + display: block; + float: right; +} + +#events_wrap .ical span.description { + clear: both; + display: block; +} + +#events_wrap .ical article { + border-bottom: medium solid lightgrey; + padding-bottom: 1em; + margin-bottom: 1.5em; +} + +/* unfortunately we need to use divs to hide the details if we want to allow html in details and keep html valid */ +/* ------------------------------ In Box Calendar-- hide the details until we want them */ + + +#events_wrap table.ical td .event div.details2 { /* hide column 2 */ + display: none; +} + +#events_wrap table.ical .event:hover div.details2 { + color:#333333; + background:#ffffff; + display:block; + position:absolute; + margin-top: 12px; + margin-left: 50px; + padding:10px; + width:200px; + z-index:100; + border: 1px solid #000000; + overflow: hidden; /* v 4.0.12 */ + } +#events_wrap table.ical .event:hover div.details2 { + display: block; + } +#events_wrap table.ical .event:hover div.details2 img { + width: 200px; /* make any images smaller */ + } +#events_wrap table.ical td.endweek .event:hover div.details2 { +/* shift the last column right side over a bit so it fits on the page*/ + margin-left: -110px; + } + + +@media screen and (max-width: 600px) { +table.icalprop, +table.ical {width:100%;} +.ical thead {display: none;} +.ical tr:nth-of-type(2n) {background-color: inherit;} +.ical tr td:first-child {background: #f0f0f0; font-weight:bold;font-size:1.3em;} +.ical tbody td {display: block; text-align:center;} +.ical tbody td:before { + content: attr(data-th); + display: block; + text-align:center; + } + + .ical .amrcol1 div { + display: inline; +} + diff --git a/wp-content/plugins/amr-ical-events-list/css/icalprint.css b/wp-content/plugins/amr-ical-events-list/css/icalprint.css new file mode 100644 index 0000000..fe19fed --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/css/icalprint.css @@ -0,0 +1,7 @@ +/* AmRiCal Style for printed pages */ +#icalnavs, +.add-new-event, +.amrical_credit, +.amr-bling { /* not display the clickable icons */ + display:none; +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/css/index.php b/wp-content/plugins/amr-ical-events-list/css/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/css/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/images/accept_16.png b/wp-content/plugins/amr-ical-events-list/images/accept_16.png new file mode 100644 index 0000000000000000000000000000000000000000..719e39151bbdcb581c0e096459bfc964fdc202c1 GIT binary patch literal 712 zcmV;(0yq7MP)MdTBwyf}j+nP!zm~`LUW((b!ll z*3{7aHg?nOpYwK;O|{+}n0@eOzHh#rna2#n!2g)YKa4T^;`BIrR1IUgjsZ^1BZ2_5 z2$(0oHam($BbOIv=BG|@>K5(=y#CAQj$K6e!9!4#3X1YNeim1eTzQY!@)Bx_HZvQ> z*f|m*5Ea>nSII@lHT^y*8MX-qBdo{glHzwR zOylLJVdN|8rfgFeYsj^{P;5gim4{}a_xXsC5O`2gaeMIa5Eg$tK#n8})EU-dIVeM= zL)L&xAp;Iq9_;}@*Dww%Y}$!n`vENHUYN3L42hrE4a=5=aYSCd%1dZtn));~EudF4xZlgyGY*OWLs0p5U%OHw& zTbcv{-Q>y{IEg(HZ-%cQZGs~)2KOEU6GGD&8mnUxXxoT>$)urITj6n0@;mm&wnY*a z*x>|91%}Nn>P;04Q#CJj+e2M(yOvfh^cPgwXz8ToK*qYmADARTU literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/accept_32.png b/wp-content/plugins/amr-ical-events-list/images/accept_32.png new file mode 100644 index 0000000000000000000000000000000000000000..7786ac77ea5918f5ba473c6cc95738ba744572a2 GIT binary patch literal 1863 zcmV-N2e|l&P)b2BH#r0<|*lC2v%Z!(?Jzi$)@oabN|DRcyaVB1Jt^Z!nz32Sj_iyL?N5VR<_LorM zs=-Ofc*c^jKlfge3dF)S$-sw8(|G^ezhZGcdZo3#KlmDUC>6Niv}0e#&pOat>%;b{ zI#^~Jv2+xPRD>joXmSB#;Sgq`QH17_FirF)BRKrkX$+Gd>rMzL55J4QIUIQ5kB`2L z_C4)b)W)G9LbKAaEE9%lz%UFV1EjSS<`!oVnjJ=P_9lWeF-*<@rjCE~y^0q}pRo}F zwyx6%9Nc|R-CMtY4@>YPZU!+CzJ}@f0n9~*kxUxG?Kv$Dn++barMV@NNFZyIWtKrG1JQ4 zY^sV{&qL%PJFX0WiOJa%CT21D=__bjNn)iM+ry_3Jl=V9>tpvmj-)bz{*nJ+bh00c z0?1Nn;9H1T88Vfw7IE|T^$fVYKC4-1eISbgoo;$I3=++cB>Yg+6n1Ufi~1^{ss-m6Gf$xDepK1* zXl>o@Ls^-OA4bmI88{)PsMxyq_MoHr4736gGqJDHShWw;9tnyKt<8j)BcL>Q;>7N4 z+eECVBR7!Nsl=2!04K{2wVp+z=MeU9J%uf0KH(7_qgfh}3!%Eg2QPVf$AdV5OlrYy zbK&XDo7`|Z9hf2lB8fH-Z(8*-mhbr|c5XhF|8{iWWkHMwvA&o#iYiYd+)nbp8&5Mf z6L8Ap5|3Mk%jrfm5fm<4X`!`-<=w3e{@WsQq1ZQ>u~~gdEd+1*RzZL<1vcGO9;_P) zQNJleD_o@i^>ii9}wp63e-IO{ABgYkGc=h%Mc=xO~`OdrBnM zp4BqrF6RgD^d2M7j}X%#p0|KU2z-#h z*>dGJD`zPJ$htIm}7a1NV|bn8ZnHmRS;h;%TL7>p%> z+2}Z2YF&Ok=LEVqctj{)?GoUA0=KPVIf+xL!$NEd%Y?<4jLih}*fe_L^l~OThH|wj zzn1eJU?+vFd?;F)1iu&Hx!rOVqHfY1jsyh(#$;?Jki78;K3-S?!b<@-P$yhvWxc=_ zv0F=#$b+k^Th6*Tw5)rUFc^z58Jh{D7Xp~p5*Q9gEClBIQDg7S*Lx9(;o}&Io)_T! z=7zddgh`sHtc|rP_js;m<8%84~oPcl1e7 z9sFK^uirq-@rXBE442V9Fu^5xFbNzt1IDvTG&(Unzutzt7XsPakAuSb5@pJ$! zTe=7(g#_krJp-)aa&}P#SuVhbdZ}ekU}he3m)^#+yiIWYSGHsv3e$fHpH?5lVGC*3 zA~h1*JZCiC|WIn_X+T^Y0Q59I=X4Z7|CMR=pq8_ zu{1CLLznPb%|RSlP8nrUYNH%-85-Q3C{wnGlOzPp~pyLK0vxRc?% zoJEm~C-Cyh3k(a_c{+~K>;J|ZlRu!JK2K$nPTSDYjKoDk_M_TejoQ73(OtP6kEkv* z-*Va`O?n(7kuiKRZ~;BbVNvIFE)v~ue4|IR!tb^$5jRN%mo-UQK}TI!@(Ge?Hp!N= zz}lT2PD^>j&TUk-i;_x|y`C+v^zAHOdHr920RUAB`g1}vt~mez002ovPDHLkV1kDI Bb?N{B literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/addtogoogle.png b/wp-content/plugins/amr-ical-events-list/images/addtogoogle.png new file mode 100644 index 0000000000000000000000000000000000000000..160d5a0008bf7c050dffbca53b1908e5a9abe68c GIT binary patch literal 792 zcmV+z1LypSP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb- z1~3-=J$Wwx00NjvL_t(I%Y~9%NEA^RhToZ;nVp^eNnO|0ObR!(lKjimq6?vnq$I41 z)(C>Iu7bd#Zn_ertB6R7%m~5?3WF2^!M2};N=yk|x>&2#%^We;b$@1ecE*|0MHntF z_QARMIPZD*zVp5mAq1IGKy!I@xu?Sjk}!pQp*ISroG+BE>G+Ur1I#0|kbi><^1OHBlm{v%KWr7$i!Q0M%< zE&y`M1>IJJr0a8D)GgYQ(7y?b{g{1Kj>uFk-Wju3%jq=$b!j6YWJ5L-NWL~4Zv>0r zq=b0Q7!{*A>o4BCKEROVK=U+Mb(ggJs>N3U7T3m2$o1NZF*+S%ePY_mnOvawTRl*? zQdreDIJ)fxd_Q+!=2HuFOD_rE?*Bi4>Sn>Rr@;qGV66%v8fb)NXAcn%KVKszgn$r& z2Vl=V74UGSCxie^q66mlH^B^gV0+xL`flY=T?N>yXwV#SG%-3VJPC8hJaVirH`f;; zMpr^EtAOIn0-am}FHVs7^~-6~_F1q1>hJdfFz7lIoq##1basLie}yeS0y=C**zbm} z+hL{$N&M1{e>qU%OiSFkY+$1}pd?V)g=2FJm=x^I1I~~sGzVHi{aqT~GjoWKw?kVf zPqWcYRBxL|-lh`lw1gaG+*Fo5mS5|`sY9VF&x$qh7uCvxPYCvGm;$%x2QAAPb6|u< z6KEzX$ygBMw!=4^*N%G{?wsJh{D`p#(q>RIMPSKTMjN{YYQLJya$TU$7sDj&12_px z?gy~p1uVw|NHbM1FPA{!tf0gcbbcDDHAvL6AJg+fQGWpO WtSKC8)xK8%0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV< z2PPZ;Gh`e900TWqL_t(I%ca5FZxmGkz~SFHGdnxGv)gIArL=`oYMW9oiH62Ti;2Wb z;^jdxMjjx+2aP5qz92DJk@(~TiDDpVAZpNfi>8{;07eB=43LCViand2Yf_X!nM@ryB5F0E(7h{z9V$~ZLC!HO;;rx(a48DymKg~HGYD&tXSw=mnX zUWl0$k55kwbK91!`qjf

                          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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/arrow_refresh_32.png b/wp-content/plugins/amr-ical-events-list/images/arrow_refresh_32.png new file mode 100644 index 0000000000000000000000000000000000000000..ce42c125943c6e0749b952da98edacba549709a0 GIT binary patch literal 1307 zcmV+$1?2jPP)gHfhCTwgg6NIp()ff{J6B2*;OQU3Q5&5AD9~sMr(HS=*$r6oy6p!}2Dpx{g*AK?%D8Q>=e>PbOKC@|#NOoe-rM)R?|I(yJm;Ky1x?eC%tJ(y zkE8Kr(-b#%*gXmXf@6xaiu0@!JlFw5UXjixP9PFk>_lp`6NK&^(%R;!+FLNt|W+ zNQ43*|4lrZm65q?TV56}jMTv!m_mvX70Y!eX~5NM zTP4^1>SNOp@m_eVrP=e_F(be~PYc{BhbDcE!P zOV_dh?N1k;r0=z#JD-WMj{1Eyp5@AL#Opj-8s0~zY!=cmnXweIa{#dfr7-$9EsS%2 z$w$~K-2^~phIXlbLaE?ndD%z@%!s!4%&xMQ9 z>wzgZ+k^&d3nr!qkZLfZvgNfEtZ$Hw$D%+DAB<9xk8YxdbN;Vj1B!4uuQwRdvA-Z^ zGu+eH(f(@{!sD>MRo02FgWD0Mzz8qZV*}L#lV-r7Leulhwyw6K z_gXy^BF9dun45qtB75R%M$CD^YFMi_eMV*Zir#q44RDF!#fa=S{XCPMf#)7ui-MeT z^f|wQ!_y6-485eH!PD3u8MRowAOx_a0mloUMujEsef%`gi1nH8ke~#r_u~9=sDse- zsyI70PQ9ZCqf?h5(6m#(lc@g0SLd5iOVe)NO@xt$Q6RyUt*=DSa3dsQ@8Zpmk*1{c zeh^*?1l?xTF})!%&VA(k%x}QRFn%QGO*}n)iBMo*4W<1`>z2%iDYtlL`=p?g1vyQY zN+8E3sc#HX$SIeceK_3n1rG80FcVq87NcM}s|!WD@u}I2qO4UxCr7>|WHO?H(5X=2 z_Bhe`^Fe%0w$4db#Dh^)Tn~O_P^h6Hj5$V5Ux856~6((JeWD{g=ex8j~ zf4mgn0;#&N&^MJm~hnC`VU@;9u zg1Db7gNNCEmk7iKAdyN49?CHuT5+)#jd+hlBCzCNWD6pYj4$P+f1Lg;zyMG`;0)WI RUPu4{002ovPDHLkV1hlCY<2(u literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/calendar.png b/wp-content/plugins/amr-ical-events-list/images/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..658913852d60fc6ca8557568d26b8e93e7d56525 GIT binary patch literal 675 zcmV;U0$lxxP)w!? zFisFv!T|cmRtW;1f$>$s0G>^*GP-h`H-mzTP&3`b(d;hDCL-{+T2LSiJi1S%34OTG znWn~v^Brk?FQB#MFuosf?qnt!t(A%g#tAAA`tV{p&t%~)6GMus628BV?|aP6=Lr0O zrxPn=6Fy3{fE84gngF`mQ;ZG4p#ul`mYb)mJw@Q%q_eddamvg>kv)yI#B0M!3sxev z!1s9dp#Z>KE{BK5@W%p1Kt!2cEYj2vBiUHDJ-HCTS{r%b!`Wj=!r&Tb+LFBfRN!=5 zl7aC&Ul)Foh{s4J>JU)^p9+C-Q44MR8(8|WK})8dx#e}T%`v`wFOp3_q9I1QsXihN zJVaEgK9Y|1KAJgEb`m$%VXVVh!8pM>`_Eli`}OBJfVb0i{tF{QT8%v&>u>-7002ov JPDHLkV1feuD8K*! literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/calendar_16.png b/wp-content/plugins/amr-ical-events-list/images/calendar_16.png new file mode 100644 index 0000000000000000000000000000000000000000..658913852d60fc6ca8557568d26b8e93e7d56525 GIT binary patch literal 675 zcmV;U0$lxxP)w!? zFisFv!T|cmRtW;1f$>$s0G>^*GP-h`H-mzTP&3`b(d;hDCL-{+T2LSiJi1S%34OTG znWn~v^Brk?FQB#MFuosf?qnt!t(A%g#tAAA`tV{p&t%~)6GMus628BV?|aP6=Lr0O zrxPn=6Fy3{fE84gngF`mQ;ZG4p#ul`mYb)mJw@Q%q_eddamvg>kv)yI#B0M!3sxev z!1s9dp#Z>KE{BK5@W%p1Kt!2cEYj2vBiUHDJ-HCTS{r%b!`Wj=!r&Tb+LFBfRN!=5 zl7aC&Ul)Foh{s4J>JU)^p9+C-Q44MR8(8|WK})8dx#e}T%`v`wFOp3_q9I1QsXihN zJVaEgK9Y|1KAJgEb`m$%VXVVh!8pM>`_Eli`}OBJfVb0i{tF{QT8%v&>u>-7002ov JPDHLkV1feuD8K*! literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/calendar_32.png b/wp-content/plugins/amr-ical-events-list/images/calendar_32.png new file mode 100644 index 0000000000000000000000000000000000000000..3d50e972ef9241d0f7dca2ce23b6207f976b68ac GIT binary patch literal 1672 zcmV;326y?1P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV< z2Ol6nya0j#00sz2L_t(o!@ZYZjNDZf$3N%Z`};S`&O!kzM4OP9)Fu)Ws)o`SjTQ(N ziH)Va;bYMklSrN%-NsXEIgR;p_-M`2H=pcxEI03!s4SJoz?o zYXFc|9SUyYi35)zfR9i`6e0@m9X?jb`?4W;VBaJANvqD70q1KBV8nC#LyzEXK&&+U z`QT%GV&DEyAn(&A8qWRd04Dle1z=r3sFa`_;|F3ziUavS*pvhxO`is!b{+w=QYaOZ z1SkdSKd@;HS{aN6>(|<}2Hf~rtrQY{t^%lh03b?}B;cb8l>wy-E zPLETNCfAcCP>+hs1RoN8j#FSG1IBRf(9iLa9?=?;X1sFvalEzb+5|;n+8kTh%Wn=q z{9i-@Ky~;qRo%to5T($@Akk+d1#Y$U?%4aau?P*EJ@gB!mc~P zHRwL^2l&*3dl*&$m}oeA=<%3>rUtA>0ZIgMtO5`LybmJ!cQy%hI|t5;1x&Ol7tVS}=#>iOdIy4V_HU{r?uxSZSyo4%{2*COV1CJErUX-%FcymbBw z15r%|Mk4gwwdX;c4fGZ%9Q+~d+OZbE>}mMySMTLo8E7^M$dPCH%$M(`9ENDMfzwB4 zxMTOdh=;@kvHtXDPf@@A77u)A$n(uI)WrNm5lU>G-hpq3OGTU5u)Pl{TOKUZS%$K- zh!Tue49YI^3nk0F72cfhaQ4DmNHxj+yFShvFP~i72}j{+84pD!YQZ(cHPV8SATST~ zhcK`;gR;iin(0%oaqi+A{S`$q|64YG|o8$MV16{%}&2tgwH?yJ4)MSq1VSc!J>I_=GP1>%jO$y1fV~(bcYrF($XK) zELWc1)we0qgpO@6P{p>WMEJr3_Y=X9C{XJ6?7D9!jsC)knNxi3zMU+WaHU&O)}9w; z4)e*+-_OO%|K#e0zhfPA2Nk_xO@CO^t33T)58a!iXt$~D<+WuvYIB}(v{pgomKgvx zwqk99%>h+usmqeudMfLvs**S7m)N%DX1arlmC~*{Ul~-ec!@mEX%z)k>;o#?&7%oO z(6O^=3DJ67Y}0Yaa@BxB@ZPRYJkC1anD21wrb(6u^&02?@@up-6nRdT7u0p#Oo5Ac zxFH3s9@A}-WF1>Lr?ikJ1}h#Vn#wvB`U7si?ZaH{4ubRkHSFA9X(fuRD9G}HRx6{f zt7aAW)xq)j@!8coRYVY_c=q@#{++hj6D;-ytPE;~)?$q2;LLOE*}0vie#LSH-GwXE z^RF|}%E?;=d7e`gIeDH_mg|gU_uO;$e>LTHOHZd)GN@|)HrL@#FJ0iyty{Rdw8Fxr zzu>NQn3%YZqSd067ZgPiH86p-4GsLSV|Y6iZk*68^#`1v@ABE4~y;1O!z!u=9QA$35<$*=uqC}?!kZ<5i(R!-{R{jOiY!~fE S^#bAm0000X literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/calendar_add.png b/wp-content/plugins/amr-ical-events-list/images/calendar_add.png new file mode 100644 index 0000000000000000000000000000000000000000..17679db6bdaa6771296fb016d21b0fdfc79e48b2 GIT binary patch literal 723 zcmV;^0xbQBP)5ETnpqPAn6zU<&FIp9Il1xF$N9eryjdy0$g_1Iflt9aIG62{ zJh%k%4xHmhLo?3#;voiuIS4Atz|yRg7EJQs@{lI*wgUi{`ac_PABetl_Z_I|3#8?`eD|ed6f0%TQcqH8_?!MPbDcMaNaP9 zID)f}I*Fo?b1j|35nOoE$%C)^xO?7^8AZ<;nKNMoiOUGW!7B)eqks)d%85f*Ut3O5 z2y1J~34@4P(`OKd5v!{!vZqb$PX^8#GKfRC{H%*7-3NGlMMxrkzLPKvXnpw>efz<- zL+i*V2}yntup}dJsUeA?2-Z}W0WfXy6oMdN)xt6+rt=t6;#s+T8Fd@$sj8kz$=Hk3 zZm&ETLN;{(Q5bOJWj6qApFR-~(46b$`TH|e&0c^HJqyOKzz2@nc}oH6k;Ja!@6_`> zujX8rB$7<5R4{TFutjs$=EoolyOHUV|OXy7|=wB>Mn!!NA5kcv+BTC4y7002ovPDHLk FV1h%aQKkR@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/calendar_add_16.png b/wp-content/plugins/amr-ical-events-list/images/calendar_add_16.png new file mode 100644 index 0000000000000000000000000000000000000000..17679db6bdaa6771296fb016d21b0fdfc79e48b2 GIT binary patch literal 723 zcmV;^0xbQBP)5ETnpqPAn6zU<&FIp9Il1xF$N9eryjdy0$g_1Iflt9aIG62{ zJh%k%4xHmhLo?3#;voiuIS4Atz|yRg7EJQs@{lI*wgUi{`ac_PABetl_Z_I|3#8?`eD|ed6f0%TQcqH8_?!MPbDcMaNaP9 zID)f}I*Fo?b1j|35nOoE$%C)^xO?7^8AZ<;nKNMoiOUGW!7B)eqks)d%85f*Ut3O5 z2y1J~34@4P(`OKd5v!{!vZqb$PX^8#GKfRC{H%*7-3NGlMMxrkzLPKvXnpw>efz<- zL+i*V2}yntup}dJsUeA?2-Z}W0WfXy6oMdN)xt6+rt=t6;#s+T8Fd@$sj8kz$=Hk3 zZm&ETLN;{(Q5bOJWj6qApFR-~(46b$`TH|e&0c^HJqyOKzz2@nc}oH6k;Ja!@6_`> zujX8rB$7<5R4{TFutjs$=EoolyOHUV|OXy7|=wB>Mn!!NA5kcv+BTC4y7002ovPDHLk FV1h%aQKkR@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/calendar_add_32.png b/wp-content/plugins/amr-ical-events-list/images/calendar_add_32.png new file mode 100644 index 0000000000000000000000000000000000000000..fda6f42e5d3ae721edd10b6cc0cdc3bb24df658b GIT binary patch literal 1733 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/calendar_view_month_32.png b/wp-content/plugins/amr-ical-events-list/images/calendar_view_month_32.png new file mode 100644 index 0000000000000000000000000000000000000000..1db59e6cf290b58ecdb9eae1f41f463d0d8572e1 GIT binary patch literal 1352 zcmV-O1-JT%P)PbXFRCwCFS6gUZMHJmLa~?O<{D=nI z1QAlLk3fprrfEt8^@Zj~TC9FZ|Mf%h(?1^{{t1E#{);b~H1R=WX~h~~-7aOp_ z)K-dM73^1<v z==l5iwclO{0NbKK57Cn!6Xh8{HGeH>+Fhig=+v7-%*_UrNX10y3eoI`AXlw5K;tDJ ze}fDsxC8Ub(H5e`zlqwrtO2cTYyfjHC)ffr7~qvhUUl(las1f}(_auhvddEQbIAZMf(Ew}MMMnrUF@}yC01c823 z?jlt_4+C-#NThKm<+JCp+4@)jXVgWn%M-M;lG6PH&l@i0tQ(*$-~@bN|FiV_bp!Ux#XU%{Fz)TcY2PNdmme8gR!bef0j3#o{ z2rLXki?b#$dmsP~r1g%`h2w1S01xt{D`!vAr*oa8<}R2#Qn0E7`F=BU0gLe_Fh2qw zYZ40tJj4rJn);CzmowVF_i4k`;DHqK_91u_v5$V8qn8i$*qFnpk|%-y80WWu z1u%BG;n;LdiwX# zA}S%}mZw34nbUxDbwH_AF;w;Y4P&>T*MM*zTv<^A2?C>B9Z)835kqN=Z93+msv92^ zuyp&Gb0)8QASq@+>fM3K7pAAM;k`6=W&ve@DAm?y`9;?EP98Ycz0blx^{f zmc|%=Jg309D*#g5_}o=EflD;b_aLO<>8o(*|FIy8E9Ek(n@uIwKy|iaHQ@0~1N&Y}bi8*$bIY`Cl}cF`TXh}m=kt09Q%{#G=6|{hCj}1XWNzbu+*Ku6_;@U~ zY#r?9`}IoK&z2$%3Tr&4@xVRrjO*LonA3YetHpmO?s|KCAi=9?+Wg-EMa*d$BA4T( z>k~Y}kK57jL%(~Kms;64YyUz2!-uBL{77y653{0gme6nfC%^!HFlt)7RX6zn0000< KMNUMnLSTa9po;qd literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/calendar_view_week_16.png b/wp-content/plugins/amr-ical-events-list/images/calendar_view_week_16.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe695f51fce503e1a4838ac4a93f5b9ab95553c GIT binary patch literal 480 zcmV<60U!Q}P)@KEQ1dB*OY;8rG{0D1W!OBLkw-N=dwXm~N1QE3ov=J3VoAfqnBj^Uw zM54xfXXYG>dvA7&AS)Rd=55|*zRs-J<}fw^c=>n$4xMPD-K#DN!X#CQA!mRGN}D zZ(TUGF#(W$<^0Ccwg1U{{qg71`xTV51~7eg8EmKo6-0FJwt;A&35ej=)z?JS>H=Vx zgW<$+P+1ltJpkL>eL3^by|8WH ze>3}MeDdL&w}0&U;_Xe_W&{u=wB$OQFuT8lHo6K%Lkr8Qp~<2Rk*PT#N?1z*LjAZG z0V$SMWb~P*tCKk(rKJTl0EW#?05TH;58iGu9(7SR_g>A2D(<}aN*l$^r(ZZS?mmu3 z3%3x}wQ%n2F|r2jd;b;=GO3$dFC@Re@#xc;wls|_B8y59C9?8Bz|QWU=Kw2*J?FpO W9yz<&(0nxj0000-*lH-C6K7JG+m4v%i^n^ZR}8`!nwi0{~HcbaW=eiv1uXs7qrG>`L#Ycm3-{ zfu{`_A^V|c93TqmuKLxaNpo;GWae-6lQtQU1?~X^y8wlUD9&qZfW%4WZ-UZ9ZK0-| z*$1%w8=$dG8&Jze29OqMqMA?_1x|VDnu$-1<4;~#dKbFMAQ7wlOo++#foy{tY!-57`V=o|mJN{R1OsyXd>>?2S72zkOXcG9lh1JJ za+kWF6chWi$rZ)Dy`w!~HA$m+VB*8Z#Bd(g{-OsKU%}%Q%uYvQf?#(Xh$8)pPKqOx z2_gnpJJzA~bT70w0*p)+U~1%4i%LR2lFAY~Id-lWACxdS)ByuSo#-y9{;R>nMVyM; z%$hV~NvI9rrqf^u?ZS}`CQi%GjAkqcBAtXxd%-~s4a}#LdlnCNL|nGQbaI z=_Yj{$`1-RC2TnDB>i|5gi@Cw=8Wnb>rpuR!8EbuC#_J%4Dh2!=KwQ#K-QWX;W2L{ z#fT*`>!Rn-AGEbOfD6cq;1Pf>0sgv zj0QE*B<;!&n0+I?Cha#;F(pi#((VCcn#u!Bcjsii8)=fZQ;$!9JwFfa%Zj|tw>K9K z-kCe=hY`d)QyXC_b1VmMXKR79$q?Ki!C~x8wk+$=Xmk7r`*&tU8`MW?{h~pBrtRs! b{{jpEN6&rf=-Ru600000NkvXXu0mjfGS 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 R?Ti2b002ovPDHLkV1m_G0;d1~ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/csg-4b5e5f37d6e41.png b/wp-content/plugins/amr-ical-events-list/images/csg-4b5e5f37d6e41.png new file mode 100644 index 0000000000000000000000000000000000000000..a12ebb41ad7351951fcdd79ca8adb1ba773a8292 GIT binary patch literal 10167 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/css_16.css b/wp-content/plugins/amr-ical-events-list/images/css_16.css new file mode 100644 index 0000000..3adcc79 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/images/css_16.css @@ -0,0 +1,29 @@ +ical.sprite-accept_16{ background-position: 0 0; width: 16px; height: 16px; } +ical.sprite-addtogoogle{ background-position: 0 -66px; width: 16px; height: 16px; } +ical.sprite-addtogoogle_16{ background-position: 0 -132px; width: 16px; height: 16px; } +ical.sprite-arrow_refresh_16{ background-position: 0 -198px; width: 16px; height: 16px; } +ical.sprite-calendar_16{ background-position: 0 -264px; width: 16px; height: 16px; } +ical.sprite-calendar_add_16{ background-position: 0 -330px; width: 16px; height: 16px; } +ical.sprite-calendar_link_16{ background-position: 0 -396px; width: 16px; height: 16px; } +ical.sprite-calendar_view_day_16{ background-position: 0 -462px; width: 16px; height: 16px; } +ical.sprite-calendar_view_month_16{ background-position: 0 -528px; width: 16px; height: 16px; } +ical.sprite-calendar_view_week_16{ background-position: 0 -594px; width: 16px; height: 16px; } +ical.sprite-clock_add{ background-position: 0 -660px; width: 16px; height: 16px; } +ical.sprite-date_add_16{ background-position: 0 -726px; width: 16px; height: 16px; } +ical.sprite-email_16{ background-position: 0 -792px; width: 16px; height: 16px; } +ical.sprite-facebook_16{ background-position: 0 -858px; width: 16px; height: 16px; } +ical.sprite-feed_add_16{ background-position: 0 -924px; width: 16px; height: 16px; } +ical.sprite-google_16{ background-position: 0 -990px; width: 16px; height: 16px; } +ical.sprite-info_16{ background-position: 0 -1056px; width: 16px; height: 16px; } +ical.sprite-linkedin_16{ background-position: 0 -1122px; width: 16px; height: 16px; } +ical.sprite-map_16{ background-position: 0 -1188px; width: 16px; height: 16px; } +ical.sprite-music_16{ background-position: 0 -1254px; width: 16px; height: 16px; } +ical.sprite-stumbleupon_16{ background-position: 0 -1320px; width: 16px; height: 16px; } +ical.sprite-timezone_16{ background-position: 0 -1386px; width: 16px; height: 16px; } +ical.sprite-twitter_1_16{ background-position: 0 -1452px; width: 16px; height: 16px; } +ical.sprite-youtube_16{ background-position: 0 -1518px; width: 16px; height: 16px; } + +/*Don't forget to add a background rule to reference the sprite image. Something like this, for example: */ +#container li { + background: url(csg-4da5455767b51.png) no-repeat top left; +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/images/css_32.css b/wp-content/plugins/amr-ical-events-list/images/css_32.css new file mode 100644 index 0000000..4fc5c07 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/images/css_32.css @@ -0,0 +1,29 @@ +ical.sprite-accept_32{ background-position: 0 0; width: 32px; height: 32px; } +ical.sprite-addtogoogle_32{ background-position: 0 -82px; width: 32px; height: 32px; } +ical.sprite-arrow_refresh_32{ background-position: 0 -164px; width: 32px; height: 32px; } +ical.sprite-calendar_32{ background-position: 0 -246px; width: 32px; height: 32px; } +ical.sprite-calendar_add_32{ background-position: 0 -328px; width: 32px; height: 32px; } +ical.sprite-calendar_link_32{ background-position: 0 -410px; width: 32px; height: 32px; } +ical.sprite-calendar_view_day_32{ background-position: 0 -492px; width: 32px; height: 32px; } +ical.sprite-calendar_view_month_32{ background-position: 0 -574px; width: 32px; height: 32px; } +ical.sprite-calendar_view_week_32{ background-position: 0 -656px; width: 32px; height: 32px; } +ical.sprite-clock_add_32{ background-position: 0 -738px; width: 32px; height: 32px; } +ical.sprite-date_add_32{ background-position: 0 -820px; width: 32px; height: 32px; } +ical.sprite-delete_32{ background-position: 0 -902px; width: 32px; height: 32px; } +ical.sprite-email_32{ background-position: 0 -984px; width: 32px; height: 32px; } +ical.sprite-facebook_32{ background-position: 0 -1066px; width: 32px; height: 32px; } +ical.sprite-feed_add_32{ background-position: 0 -1148px; width: 32px; height: 32px; } +ical.sprite-google_32{ background-position: 0 -1230px; width: 32px; height: 32px; } +ical.sprite-info_32{ background-position: 0 -1312px; width: 32px; height: 32px; } +ical.sprite-linkedin_32{ background-position: 0 -1394px; width: 32px; height: 32px; } +ical.sprite-map_32{ background-position: 0 -1476px; width: 32px; height: 32px; } +ical.sprite-music_32{ background-position: 0 -1558px; width: 32px; height: 32px; } +ical.sprite-stumbleupon_32{ background-position: 0 -1640px; width: 32px; height: 32px; } +ical.sprite-timezone_32{ background-position: 0 -1722px; width: 32px; height: 32px; } +ical.sprite-twitter_1_32{ background-position: 0 -1804px; width: 32px; height: 32px; } +ical.sprite-youtube_32{ background-position: 0 -1886px; width: 32px; height: 32px; } + +/*Don't forget to add a background rule to reference the sprite image. Something like this, for example: */ +#container li { + background: url(csg-4da543d948061.png) no-repeat top left; +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/images/date_add_16.png b/wp-content/plugins/amr-ical-events-list/images/date_add_16.png new file mode 100644 index 0000000000000000000000000000000000000000..6f3108622e6c3fb48ba0a041cc08ed4412a54799 GIT binary patch literal 792 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/delete_32.png b/wp-content/plugins/amr-ical-events-list/images/delete_32.png new file mode 100644 index 0000000000000000000000000000000000000000..30a45b821c6739e81891184332a263cf725e9af1 GIT binary patch literal 1886 zcmV-k2ch_hP)<# z`z>N=cJDg$-ERPfPEV?^2R}x6Xb{zjaX8Bb&U^4Q;cMv>qMcocALxOxcR&1M z0hNV3MlSvbh1tdYlb41%>B;(L9MIo6a$xe{nG@NzC%z;jbS9=S|CiU{l}eNsjeJq% znXkW?6TaukEUAe&TAw}%HIqRtH--F-QA`Yu%slzt^*#4Hp?m`TX!q@dr;fL^J${Vt z3aktaVCDVyAPhqS%czwHBrZG>cEqpO(b(6IrpF$qjNQV_@EE3sCuS)VyVpCRu0Qj? zAMJTHd+@*$dru#i;KlRjVP3ro(GZ2u^dNE}2>$`X_XIyfS<*Dvvw3)T?;>%y9}%wt zbGelGdUIp;TyEjbRbs9>p#0+Cp6-2#=pVlL{153{6{QOoV14)@)JQ}c3xJi)iBRP8 zg6!CZC7@bG;y^E=u7zTLslTTw_UE_fi%Sfwt){*|5joFn=kjtVZ^OKDg(7bV(!Sk` zblC~>)-d8k&{$hLI`$M`yZ(8)+ecz^J>g8YxuwA{dS$5*+m{Fa29>~7id=9c47Wi*$1m5l!?y)85j8u%Oj%?`nRIn+!J<=jKiLm1=nAT6m@pCu|EuN;f|P zBauQnoxr!+Tb^TVcED&7IGdsl$5(A^3_@QeoFdCaA-*X77KL?Kmu(OX^QcA+L{d8t zi>OHI+F8bC4m3m*rFRFnS5m3xW&)2XecauA+oqDT>2L4TI_f9e3zJr-(j^juGeJ(+ zg#u!aJc@Wk17k8aJD|zILLS2NWg8W&#Bf~8Kl?TGFFdv_4%V++Liwc^pfC(Mq2Q@7CYicIc)wT;RON({M2A3rF6+)({$Sz|AsEW3hGS`t^Oy%=p zYWN5gAM#R#SaZPVlBO(62SN|TT0`b(=J^40Wmlt2M51u6ez0wD)@2((R)dNNrsuuE zC^Nv_%P}j^qKy!ZO{7V!T6VJ-sxQAthZ&M^3mlXrCK8HROg1Fe6$WvONbNcs9q=t5 zBg>Py{h34(dRrTu>0Drd(?`7k(b(p}H;g$&1|mNx06m#PeQ6G+?ZWc>5ys{ta3-tv zz%rGeU$vmO?~)3NvN}|#Cul}cQd<$$Vcm7<*HbA}@;R84;7O}Cz}W0S^_7X)bG$}* z6%$HpE7WK-94g}fBVV#xeK&1SRbDbH z>zvr4(2v@fgh;0`fAMY1P$L|*oWK6^)}7Y~bD0;_H3#^gH}ZvRr<1X78mfpzH4g^O zaD~gyG{cBQFkChhJ(pNh6O>dE3k1Gcs$kyHmd?CC^eo-V^ZDPul5uf*f66Uhc-j!B z426c4UxU$>l@Xw9(UkM<9mfL+C*&{_nO5pKE=B&11kcsA#jpPRSZ z1)FCGIq{F<4f^S7u^f$hmK@Jo$8H)bu>jojWnC+{7qQ^7i&6C?De6Qc%&Ae#U%7}p z#X09_1p@yX*`6dRaQS`eT28{-O6MQ@_y6?s@rD!aojb9kg_=~HwwYv_*6viWO02$= zu#9sow!l5-ulhx^gyms<2qj;;qBMj>Z{rM z`+Dd|oP;J7k|fc!NqX;MQdLOqh9omX;QDr7PXAX%3|^zcA$Gs6ACjvYlG)vi(fb%707*qoM6N<$f(2Nb;{X5v literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/email_16.png b/wp-content/plugins/amr-ical-events-list/images/email_16.png new file mode 100644 index 0000000000000000000000000000000000000000..2cabb177d7738f49c0f2993234b458016dd6ea16 GIT binary patch literal 608 zcmV-m0-ybfP)dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfRSb zB*`D*%G`Bbq?8mz@hd?^!!Q^O25dGP&gXO8`1yQhv)M2h3@{9X_nJCEQ53a_@B7SV zGcK14m&=9ue2(w?7>4nX3P6`-SwAY6rpb6bCJaLWMxzm?Y1UgSlx6w$3zb2h=WMrI z`u#qZWno!XJ$$`hNz)Y1^B$JTD#87JXT4rC91iP}-qSQq9LFIDf`^keKp2LkY06|W zsgwK-&1REcug7Asz;)fX1WKvbAPDGoy9go3vh1Pdig})Mzu#%KT6mtva=Aon{VHBw uUOu&2t#7y6t^0eKA3;iqlrqk;?CVeXtCdq}03v$;0000dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfZ!go);L+V)6j<2(y^?NMFGbfN0PBN2k*PXe=);uf_sCfByW& z_x)ds#UcPf5Iib*1Sur|?RFbY)BapqT6!e_TCJ9w&*znZ`2z=kC)9HA& zZR-labzLQdnAysQ5r!c`2wc}y04jPp>y=Lu5(@}|fG=OZP$(4s7xMG-^Vn?}sj)1J zv$M0R)Q#`l+4f1lSm{uK0f}> zpI0^5lz!L zJUo0b`QhOqnx;`K7SVNmY<$dtVQZpLN)g=;^?Lo@0pu z+xWiE-rnAwL2_`Z*A+Zcv1b?(#>3`a7VWNmE?*LA7YYTun#tJQE_m$kJulF8)M zocAiha2SR`sZ?Sx7_hy)J(h5Ldz-;vK&e#1FpN9%J;;GD{CY;1rb(qzq1)}UwY3$G zZEbDQ?RKeDDww7@((89Q@SxjJ2tg{9;>C*>?Ck8so2}RDQLR=E@~A7j<&bed|lieVTShC#JjC7n(ax#>6#tyb$^C5W%%@2U1YkCT%VDwRqsKnOu5 zlOdDIOk9;xihMrL!NCE~pFc;b@o(IzCt(z>>$1PU&$DOG?zK;b>#LMvWo3o^{e4{5 zeRvy2*Qd3Uzer0_fsUDvT~oA>YE zb9Hs~{Wk3P`-EXguh-+lhYzf-uClPOfbaVcTKVnpeV=SL%f`kAwOWl{uSdV%A8kV^ zWzTV(R1gI0?(VXDJ4AC_hP90bARvVVh=^19#e|Gl}n`8(hMR{}@? wbAUMu(kZwBE)?Jc*MQ5=-|~zRe&h511#vLUlSQJ>{Qv*}07*qoM6N<$f}y!M5C8xG literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/accept.png b/wp-content/plugins/amr-ical-events-list/images/extras/accept.png new file mode 100644 index 0000000000000000000000000000000000000000..9727a65a85a89342b83d3d83b74beead7f15b28f GIT binary patch literal 785 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 O0000DZyF)}YPGA}SV+*+UB0004@ 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 aWWSZGoE$@hz|gaM068fo$vSc4kpBZ@kfWIZ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/css-sprite1.png b/wp-content/plugins/amr-ical-events-list/images/extras/css-sprite1.png new file mode 100644 index 0000000000000000000000000000000000000000..626ab86de7df113a98ba4fd48b4fa3102ef953bf GIT binary patch literal 7927 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/design_float.png b/wp-content/plugins/amr-ical-events-list/images/extras/design_float.png new file mode 100644 index 0000000000000000000000000000000000000000..b62c9cff47a4703cf1c53dac59f530076dafddce GIT binary patch literal 831 zcmV-F1Hk-=P)DZyF)}YPGA}SV+*+UB0007& zNkl-dgr)28GWa4#_D6^B(NaLSYU4GQU) z&&Yg*V=Z;`hVHWAm&1_151khwSOOKWE3mg4>l~g~hjmIIj@+v<*T;%9M-68xH{n(f z9O{Ep_n@O20A+Pk?MD#n@WeU9DRwoZA;a0!YxwOeIQA2Coc`AqbgdRqJS(~;A#lo( zRFv4`E3hR49X)H{2g5&;Hz^duv`O>l!(l`mUd_bXaRj0qY>vX{?KR2(5AOX++tcqT zoEXA=DHKl(&^CD;D~e~GVAT=0T7KLZfznJ(|0M&L3{8JrVBvT_k5`)My!?{zykl5e^XzPG=lsA75A(}>|N9)xP1{!)Sj7g8hDZo`JHYebF>J=9 z7@wTrhfiBLylWHRcBOeSJB3)qb3rLLHnq&Qupzr8!n64*?EV~14nUtmpR&|-jn+rK z?AtiUot}1@f@xw`zd(Xg&NTG)H)wMjI*4U60 zJ6;`HvbV|qK$Gjb1G+_Gc^9>x2tDBtnds%ax@s4-`In$)J6zYlVwAMLTv z6l3~Q&@i)g&8I_N3=5e~y?q{O-0*#a-u>5GK5Z!QxoM*|`*{61j*rqG;#cbRpZ)7> z?I64P;Xi>ZyIUtWBu}(vtWtl$n<2GKWKo<9=Y#!PUp{q=h34+6!%|Oe*WLQ~X^VpXsSr=sDfwL~Q^jTX8?Ov;xzBGNd&+b6+n>OIVDNPH Kb6Mw<&;$Tr$E>LU literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/dopplr.png b/wp-content/plugins/amr-ical-events-list/images/extras/dopplr.png new file mode 100644 index 0000000000000000000000000000000000000000..e7157748bf128ff01a54ce185b77d0eea0c531e3 GIT binary patch literal 452 zcmeAS@N?(olH%oJU|`_&^l%9R(gGmN!3HGdKmShzQY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^BCTyE7F950& z1F3T^N=+=u%+FH@$;?e6{#q^|bZrP?Z%`KD>DQ;Iu>qteL;6}9Y# z{AEqcrP7{Rmv{YqGUJvP@9nilCcev3mY+E(=AAcFRwgxL?OMZwyXGwD&YiMyv+ETj zg(hGAXNu86YbG&GcxQX*<(3BR*P)WLOoQfCsP5X=-nm#je%i8WosKLMo7|G;m;FAZ z!O%Z}k$Hy2zN401i`*sj7#A$t-Sn9Kp^%qnE44$rjF6*2UngBvmw$A_n literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/email.png b/wp-content/plugins/amr-ical-events-list/images/extras/email.png new file mode 100644 index 0000000000000000000000000000000000000000..f353e9f35200341d53df56fabda854877670b184 GIT binary patch literal 507 zcmeAS@N?(olH%oJU|`_&^l%9R(gGmN!3HGdKmShzQY^(zo*^7SP{WbZ0pxQQctjQh z)pLCS6O2x4OlAOu#Y$WwN}P*Q6H7Al^Atidb5j`%jr4)Yz~WBS{ChwZG9VSf`DrEP ziAAXljw$&`sS0kHMXBZaMcKs)&cP;Zn=UV4U|kgEiCieJ8#@Gh6?(^Y6d^7O#7) zpLXtJ+mxW)7Jc>)=iCkpReir|l~&=oTvOxco|7IF?R-$Sn{~2_$_KV)#z`uT-|epV zMqdBAe^EEbx#z}@EZ7)c97}mtzHWiQ2aTX{@^ z2XoA-f4!2rJKuNtM>JV@h?BGyhT07;|T)*WtCQ^!Bi>CMX tTgmkYc)eW_ng0Io{_Bx0w@Ux9ec2=W*SP4{Nnji>c)I$ztaD0e0szuR(ft4b literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/facebook.png b/wp-content/plugins/amr-ical-events-list/images/extras/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..63e9336ab2c71437f0b78ff71eb2ff6cf466dde5 GIT binary patch literal 486 zcmeAS@N?(olH%oJU|`_&^l%9R(gGmN!3HGdKmShzQY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^BCTyE7F950& z1F3T^N=+=u%+FH@$;?e2hhA-+TLpNvNEaxc?7Hr&;>^gaWSIutEl@U$dpPS`hYk0n4Ki?eA zkjOo`DywPl;m!UhCtIzuKmVYrpa~Gf9Ix8zDH_t(2bMTu<{MWY@rp7*Ac6W12)#9ZE=M8s0UmEkg$92V( a8g@b1lNgiNOGkCiCxvXDZyF)}YPGA}SV+*+UB0006j zNklyk;<|F)vLM6l$cQDhN#sC?crfA|TjqR8YZjp|}vML0q|3 zTy(7qi=yIyRF_o{3&n2ifFm7jYOyA5({xB}nl$fS7q1gB6nl2(9RBb8mwS$Azlyg; z(4q|r!mJ@CpsPnGD$+4J-A-E=pA#(N|I|4NBQvCD=DHL&gz?!)Ol3gJ;j}`zZ8fz3 zvlYB{)IW1!1pu>7*{&PtIwXI*XYgk$9tZf!!E7o9NYHX%u>xQKq(;TogW%Xm<-Qn& z*%Yad59s;O$d>Xc>}4e&QZxL>7?PkJ4GMEcZ=D}P4Y1=9^D|@gKdh%R_X&@qh@se_ zKZ|M6LC28f%Wp{{kw9y^4v(r)CO@P}XlE@7rG* zpoUHW0yT8pDC8#42VUXcc?J-W9Yvc>VW~P$0+0v#o*I?DXG=}x`#mh~z*1h8{k6R2 z3u`0BuhFS0gz*AaW7w)87sM$@7wA%YCDED!EoyS@=iDoa{ssGE$Ld|*$^8HT002ov JPDHLkV1n!4E~o$i literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/flickr.png b/wp-content/plugins/amr-ical-events-list/images/extras/flickr.png new file mode 100644 index 0000000000000000000000000000000000000000..00c8d03bfea35f630d669dbad250c05af499f1cd GIT binary patch literal 469 zcmeAS@N?(olH%oJU|`_&^l%9R(gGmN!3HGdKmShzQY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^BCTyE7F950& z1F3T^N=+=u%+FH@$;?ey{?P zlv7$9vMl10*#kd_&f(>XjPY{Q%!{m14SZ3L$_Z0bw0=|b@RZ|h(FTg{y9>rDpP?yBncDVNNJw;Z;wvHo*by21F}y2X!WS951n zUY_b>D_nGJQp&5D%dB>0I`wV+&OTGtz+tW|&((y6Yr7cVl!~=pMUB$M(p99^}gm(GQ+`#*7c0bcJJ{k)yfG4hAe}ptDnm{ Hr-UW|6QsKr literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/friendfeed.png b/wp-content/plugins/amr-ical-events-list/images/extras/friendfeed.png new file mode 100644 index 0000000000000000000000000000000000000000..149742ab26a278eb173f36c2d2e776a811c8cac0 GIT binary patch literal 632 zcmV-;0*C#HP)WdJcU zFEKJNFgV;=pWXlf0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#1y$)1UwV z0m?~4K~y-6os(^A(@+?Oual&vZ!@9B7h35+bT8nTx?u&UAPoxs2!DbXL=xa2_}xo`-YaT+cc85zn5#sH)|fty;?_XIPQb z>__eTs-~7}_WJso`Cze#t|LcR+*l~mA4MGcW28LYKmetp z#>2%qKD3rh4Iq0?q17GJ9RzIJ9ojuVB`TM4SVoq1cZ72o#QpiJSI~}&?jYdh)*fLb z$!HAdigweZd^(cG`<}0qwDcxZ5}jgZzT}_Eo1h3w8rg$gNCQ|ac{tbYmaFPfk@TLiT8EA0L#cF1bz_l^lmkUCIoD(RA!I?R<2pIcksVU1IXzrZ+G@F4GMbf zE+uS#+>a05zgdY>y7Se+9R?KUj445Fp@if5xWgnQ2yk3K-jXDu?l8b{r@2r79lKsGY4*kRJKwXli%b9hoh5`$vw!q``_^yLy0G-Q ScI9vY0000DZyF)}YPGA}SV+*+UB0005} zNkl(vO>a&+BkQYtj$UXMLaN;d$Qk9`)*8x__i0B`=gB z|9~w=EiAig+>A7&bT&Oy)cGvR)yK2Ng3_QAh#e^rt-ulrXcVM=AU89^Cug)w;!RsOl!qwuFi$2$x@tC^Z+bAysj@u+@Xr4{<4GIlG^$j!!7GepUb2$KHvkcqc55?L+of!l_ za!}>T)VpMAsOVf6hPXbsuoEGGFN90q*!WRdFw3qQr&ca`)z$y{&VK;Dx4qINn_v$B O0000WdJcU zFEKJNFgV;=pWXlf0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#1y$)1UwV z0(VJ7K~y-6m6OX$RACs#f9E*ksqr$F8J4DHbeC*`Kr4dU)Fy*mbRlX{6hROOLgKoA zAX*1)B7z7i2qU2qS7}pfcQG~6Nb=03nRDiRe(%>}Monmu&+1!z@9%kdUS8{Qb#>L& zaJaj|wqqoy7N)$_ zK|D<&tvTO0$)le1q6Bqo!;JK7!dBC$IY5xjqC|)uTX1f>{Egm$EIYTY=IZ%9M5D`i z*!`I|?|xu>jS1WWz!>~o4rL6byNeKCGd`v09mrBw6Xn%|;}~xQOq!!DJ0P?Vai3wl z1j?9vf^05_62W+R_pu2JfYyWc=*eyXuHSZnK>)hWtw4UK@(BVFeg^@82;vv^pz}qI zjsHY^rvOOI_t1GFicWe2BG^iVq*5pm#Mg+gXO`i})^*)C&MtBwhmZmpF9aV>S@h?++vX6wFNVFZJK@a7E(QHOs21v8?XD hA^)Qc#J?MJ_zy!5S8ZO+mbL%@002ovPDHLkV1o3qVQ2sV literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/information.png b/wp-content/plugins/amr-ical-events-list/images/extras/information.png new file mode 100644 index 0000000000000000000000000000000000000000..50ea3e347684b3db9f5f282182cacaadb1309e9f GIT binary patch literal 782 zcmV+p1M&QcP)z@+ z$TtOw=>Px#8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?0-Q-iK~y-) zrIX8R)K?tEKX**5WK1S84GNiwHjmM$C}^RHQY;9?O(9Y{R6(LHTy&Lf6_33Gsz_V&D`(3_v=DPe6$-q%P(I(9609~RpotD z^X4IQbu=x(9ak4lR;{!+4Je@q;ih-t&fwWk9=`f-UUl%rm643Ka zU?Fl06`pW^dU*z;{kij>W#0lEzMRk4NNyb3Ru|vhTF=y+rMM8`gOaFQLn^V3!m~01 zKR;ZihEuruAu_j${MFh3DAFBGo|e$4Pp-Q-~96)smkq(Y`T3*VcxVM$!im z1F+to*w^07SaAsvL4wBz$B)AkWQQlPVzJJ$6h(~BE^=UR8^+obD=FB>wl>w*P?#y< zyhpsCA<%cQ69tAxrqK`pLve1AuGD7KN3E+4sum53Q?RZ|@SYHq{Ns84tvI}Oc=0%K zI4h_Dyk`Xferj&HLUX(pqcJon!FygNqiSjLzzwG9fe?$%&_lD188 z2mzdOWPdw5KWw6IT`m1b_8=lS5jt8D3=RDa=&jWzR-)S@56WMslZ~mKu1)-wpXB>r zNBQ>NU#K`#1B&v|_AQK;7I~B}OdGiUT9LX>f0xm6<;LeP!=vFjPsUQF*wCJ*dO)4YBypgdiuF!=i@6Zyi7 zF|q#Kz?tlSZULa@t1D?$e;f@b36&N!V2mjOHw|*6nP)DZyF)}YPGA}SV+*+UB00086 zNkl1v7=H5G*8D}Pmip1!|#Ap(V6pQ^6WJ;l8Ln|$4mtDB-qMJ|< zY$~*yRxnhkrHi7=f?WtgZ5F}bETpASW1EOpZJhj>G|o6P=gz(NoX_S}Yo_9*W`0V0W%c_|*K~KWIN-nf63X{r4I>gI#FICu)T+~J zv2UYf4!n*mRgmgq5cl70rO+ETLHkC`j}v&t3BD7O$d<;>{)czdS>(v<-k}WtPeppU|=nZJZEp>0@B@a~7^&;c|I5lkdHW=oEuv z-?AVc9Y;PuXR?g%-^;bb2T)qmHn40kYHhPbJ%5Ptt!p0FVkDW$Jy{z83!@Y|a zu~CFB6bYTc*?gN^*s)c9Ie9`{lE^=-+?tYe{aa=H@H%s)-p~ in+Sgs!%S0Aehms&B47gE>Z=0)0000WdJcU zFEKJNFgV;=pWXlf0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#1y$)1UwV z0n|xEK~y-6m6N|uQ&AX(pL;z(0#%B(8X+J9F>%7HiIXv!m>{}15Lf>M-F4U1MMq^} zR0ju}I1tpqIMm5B)FwD!Q8cNjrT2XA;W`Ml9jNjx=gIfu&G+V<6J5SLU)0dy(pKMK z!X6^FX4(DvGUHnPBc;*&a58l?k8|;V4NF^8>y4ytD!DYcWTKE`b)(7m)X1{l!x2yz z8ep=Rl>RqxqcRatMjjVimZB(KQfG^hLblG0;#Fp;5&F%8zG?7a7sO< zfH!gR!Hago@!|mhme)7P4LGJpN2q=M$=Z)i089aS!>MJ+0^WSC;wkDZyF)}YPGA}SV+*+UB0005@ zNklJm%pdBsxv-(QkFnx##=Nx!>Up3X4m* zs2sA3qTkK(A8@)tssGJ)O_D=)F%dtLO~vPteBwWmE!(DAFK2gzk3~uJyV+DMgYo?X zW~YhkI)9-H%mkC9;yU&H_gM+RC;2ct4P4g+AfRZRid_Lfo7U-BEq1dnPLH2`eeoGj3{+MYNPxl6tNXsr9*-V$ zcCZCmjv;hHRGvOS+}woL4_*gXQ7JBH<#X7ge?)%yWdWxvl!V2lTvVQRisF=Wr0@I_GU>Fg4QVm600000NkvXX Hu0mjfN+ThD literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/map.png b/wp-content/plugins/amr-ical-events-list/images/extras/map.png new file mode 100644 index 0000000000000000000000000000000000000000..d4075b5773a8677ca6d25f1f21645c66a20c3179 GIT binary patch literal 985 zcmV;~119{5P)3{PoOAD;nItolzX@q3lcX72VygyIG_+zM zB+-qy&<3=%E_73L5Di_#oWm3kYH_!z%=cP6fid{*%4ut%hs-@#jC+=Z+0P z|EJUD@@YpQ`ldzVu%%u_0+Lfd7Z52%sC(S7uNCEeQY$#FJ-o$NkOKe(0FXm2ndGa4 z^oK;-Ttu6gyUuK2+clzwWkZp554k8vX%iGGdy%CSV*DKPxcl#cO?^z%bC7w5W2&Ne z(fYSUb5JCNt0a}m!n&xq)^e?IQC0%5dr;z2$YW3f1A7P$eGLk9dn{V-pgCVc+k64@ zLjp7V*6m!cG1+zv&nl6);V=gRJ}list8{QhNhF_Pv^Y$WGKb{`YKy>@t1;F6g)x`j zu}>v?`M}->W1U-H32|fzGb>X#e)eQ=@z#&Rdx6@r#Fi*<%@BpQB)+i@XW z327OvH1nbEcb)e#Z{y6u30a;^Xgl3+&nHLO%r-GEr5)lKC}K?vYpl$N0IzI~A}&gF z)HPCrS5IS06E-klisyOPjz-7R2Lh8)a(Zz=7K@9lfEfcMBzQ_lIC_&r!y?1BoIoxHEqrVKY$ReJqu@d9&|(lUmM6THPQE0 zJ+MDG^vz*CJ%82SSzG1YYL=%mv-X4cNBp{Y`lHPjJU0fL{0_RO51b;9v4Ug5#&3Zh zJz=Vx5Nb+wgvA#4xAVoqdhS_BV7RuQVCb!!AACjtf&vW|q0 zyf7FA=!iwu;{WOBBy@}jbS;1$*6>mqUSa_%99I?o?!7a!yY||f z#CB}QiOGXhL81=`qWowL3IbXLF{u8L0zVoQ6`__YL@JF$Q5&nJR8dv6NFYRuM4F_4 z8crMPx?_+l6^4;0ljqNy&RVlsJ)y`bc+;i^v zzVn?k0)W->SobSap4jMmnzv?Nk0D?yff}W|hq^Z2#f4JkKXvsxUeh1dFt&`%igAlG zT0S|j|MVpYyB4q=NDsl(zJ{kua8YDzJXpemL+2H*#kA918M*SBS@nIuhi0&9YsOWsR*6HH!DUo%m%)ZEmxFbzG6PGf{;lCUPl1^v~ zi&PdrT6z+#7M;+1Mhnc2wYgLaA)z6Paa8gRKW0$WxMk-AbW{f6u}Hc}WN;YIhFII2 zR`60+`mwTb|4^OD;?m89Y5AV1AeXaU3^1K1|+;FwYhL9301PWHDl7?6Ru+ z61UcmW824ukT=;uVpd70=ObZx@9H%B1?Qy`|NdDEoJ%gONiTRy2E4S$lPKO6dyJ<6 z1c46oWs?y%HB92`EmMJdDygo`0m2uMFc(h-JL zG3JWJL)Znpap7gOi!YLtj2PFX0hVkzhq{i%82M%!v3KaSgQ39!@~i)bHvJ85k_fOI=ue~R~43?u38#J~oa=5V`qz zM{uzK7AqUjQv9ksG2W6pCc-6m0eY7FnHVsVOn9#5LfvksPu}4a2lH zQuqE3c=gRMp}+J5KM=Z&EM6+tPQWO}D$d2YI*cE7*mpgR1E0GMc>OR^uRVgzT%*9_ zJm+Xd2TZ%lo*IMK;fr*!`Ox|M>lml;&d|nKX!8vU&RmaSqPj9X=m4i_9NgL3b3F%D j05#!tcD8Xd{x84)t}!rl^*H;f00000NkvXXu0mjfFwwE? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/mixx.png b/wp-content/plugins/amr-ical-events-list/images/extras/mixx.png new file mode 100644 index 0000000000000000000000000000000000000000..1482e1668247ef869f2387a793b076430ec6c7b8 GIT binary patch literal 430 zcmeAS@N?(olH%oJU|`_&^l%9R(gGmN!3HGdKmShzQY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^BCTyE7F950& z1F3T^N=+=u%+FH@$;?evz~ep!I%F_@><* zu7WHZdUTh%MF$o%%$Zbxf)D#oridGTf*M)u}Y*P^bRUwW`;>gs?aGD{_QP3PsB{Y{fztN3eEG4F7Ca@{bKgt=!ufM|0gjNJQA2UFNb-*MuN+8 z3=t zxa6O-SIT~eeb{CRG(Yh8acWz6;k@J1*PFBj{oKe_cepqAE2F@@v!7q5&QDy&!do)k z&f~^>jn>?+E2rKzk+V|OOwqrV(do4J=G>Ro^-QOATHMn76_tSz!QkoY=d#Wzp$Pyq C%g+e_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/newsvine.png b/wp-content/plugins/amr-ical-events-list/images/extras/newsvine.png new file mode 100644 index 0000000000000000000000000000000000000000..35f073efd1f34b05b982b594355393ef0270ba64 GIT binary patch literal 418 zcmeAS@N?(olH%oJU|`_&^l%9R(gGmN!3HGdKmShzQY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^BCTyE7F950& z1F3T^N=+=u%+FH@$;?erf>o0CReA0VrvDSZhRqi^sthumvdCp4MXkd$3OqwUo81BtHx=m zxy#ufz7m=nigaW8^6vi7DHeY|;lzeV{HjyBqET<{I z_XzcWTQ+l9q*d{R8)=8WwKauIEZDDLqtE^GwN*WnVPgTe~DWM4f Dr?{dP literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/posterous.png b/wp-content/plugins/amr-ical-events-list/images/extras/posterous.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce2cf9631640844dbc321533382d4a8abc6e541 GIT binary patch literal 689 zcmV;i0#5yjP)WdJcU zFEKJNFgV;=pWXlf0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#1y$)1UwV z0s~1zK~y-6m6OX)6Hye#e{F|0)JhbaBBK-#v7KlQ3iZhX7fnpvkm%01GDhRZo&S!} zl^YThmnJsYjT(r-1u?c@gIFurSgQzq&CI>m#SGF0d~lMJoAdb2J>R+KdY(SI*_Sxh z$m(I+U=Old(Q*sR-6<_Gw4T+E#tlLf;0gR6S~bxFvj%c8tLeR)2K&x}`3bCVfcgj8 z1O9#pokQ=PH#CF=_@K46E4W@aDVDwy?Di8KIOsT=D-eo+u+b0#lmuyZ0Po&=!j-9$ zWM-DAH!J{7j~(IGjq@%I2|}PDBq#yW+Hrg4d4bz^t`Rdv$mf=MaQ`vSX7Z#{BMwFg zyeI((P-dqBlaone!xA>b*=jzj&g6q3o~Je*#lR<{92Um7QU@h~(${CV);&?vZjV7GN3Ob85aS9V326@u0e;(8CrHK=Vkf#4|EEf50F=jjvg z^r3`7@oi39_~J_;-(>Z#ulM$yH+;F-Vpr-H XL}MN!dyiy+00000NkvXXu0mjf*!Ll` literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/reddit.png b/wp-content/plugins/amr-ical-events-list/images/extras/reddit.png new file mode 100644 index 0000000000000000000000000000000000000000..1eaab241c3bcc32bdfbe4eceb35224d724a11038 GIT binary patch literal 845 zcmV-T1G4;yP)DZyF)}YPGA}SV+*+UB0007_ zNklK4MG&*XS76s`-MbXL{i;Bp0wF}!+IP|j6Mv0^%Ya!91 z=Q5Bei-M?yffQ8sM3cyxe1)Z=_!!5*S2~XK_@5TmOp6T)JllJ}-}%n@?o}^4JuAF^ zarlB_W*%jXP~%aND%;@oiz7S5XihR2=A&n5GGKP}`y2*eP|Qgt1I`~hV_rq=!}~nC zbAz<>Y>t$lCDszpuyX*{P(Kr+qvYh}le)}AlF7h_;H){+cEYdm_SJJ9R9~Uu=hA_+AmWQa-eCDvu*=dD@(a@`4TNHE$lm7#_{q} zT;rfLNK4NmX0eGjM;jRhxpTVTfEkaEja#>2KYxw(o)Ii7vp8r!O;7(UGaf&|0OYJ& zO;Yj=3cj{Bhn5*~Ai6L+8({PH0`j+PM;AfUG!~n{=Yy`!UOb**M%-?iYpSU%I{-)+ z5D{s>xF7Q7XqlcC4^(FzIBIZ^{=tniinAc2|xO8AK~j5^iM!j9U|Zl z%CG1^J#C-%XC)gA^ZiWD$pD>w;{o-qYbJBrr+@PL#UP@iP$*6PUoEgCS_@bfMdbbj XE$((B5ic4b00000NkvXXu0mjfSy*)L literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/refresh.png b/wp-content/plugins/amr-ical-events-list/images/extras/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..192592dbfd4a998a48e30415892c690555ccbabf GIT binary patch literal 1069 zcmV+|1k(G7P)M0ACZvc+|*OJ)_PmvfVwcFd5sCRxFDXX^f{u0T0q*%lbK+7+>SMGkoMV(R8vg$ z8bRDp{6s>MnokL*C*a-w1`%rx?cu!$mes(C)L{n%O5$HAYYWhgdDue7l-)vd=|Svs zre-E3HK#G&*3KqFvBHTplg%xTyM@NGjOsDuR0RRO0UqTEFu|eZ zr)8c_ff09^mZ~A&clzg{$+@Chqq2S`*-c%Bo7 zYEnT0wzI6XRp4mk2)0S0|#Ojwx`bN;|bak)QoQ9D17wVdl; z%KLTQRc8gCqhkR{z}F|6%UcAC9=y8%6l1 z&gF+MZBa_NcuN`P{(*;#vLY8ugO>n)N}ve>WY<9?Ct2bRIk}M@S=e(`zSjJ@D7|@# zv^;iD``}!ucf@U-IJCv~8Y=37fPijx1I$Mr6l_rFp1T-~@gjeSaefwW^{L9a%BK_cXuvnZfkR6 zVQ^(GZ*pgw?mQX*00SUNL_t(|+HI4~Yg|D{bnGN^GoAZ! z&OP^dM+|1sA3VGByyxY4-LV3nmRN2lwdZ){m@e5>cSQE>-sNr@#&ZNdmq0GjvQimwKn$f)QPdj zL=Xm`kkDu}uyK0>WC+#aD!d*K9VU*}#6-1*%os2bc>eo?{R2Ihjvg5ojb;Nn)tLWz z9)GO-4o3@kwudWo-=nuu#>wL+(Oc{V3}6`xj2Ji(UZ|9YoOawsM~l}N@ppaG6kH)g zsV*m((moSsn{mUQU7e-r@oBim1xbQM1n&6ajM1R&<~DYNU2NQ1hwqDMH%cDuB%XIT z2@B7dM~EIcd=M?(LUb=euoHkX7%m)Ei?u=;1gPJw!_o|GslMJDSC{AZi6ZkvuZQ$b zg0_X=9Z6)U=pP z^fiPjVi7}^HOwgBxYl$hT>Q@=M)VO)P@k@4Tnt;PyXeHo;i=5NaBcB84y1%WAnVRh zE)5EYme^11dHNhgtwq17uc8msD$B!Kj$-w?zax~(J9FoG0Riq4 z4GPC>vL+bG{!A2nyV~X0<0ac4OBVEN@m6{SIeR<%PGc+lrst-c^e_*u5TF8K_h5{j zLlK&TF7`z>B$_uoxXT29z1I0N{sQ@8`yK?BgF%a%&z*aNjHd0000< KMNUMnLSTY8yRzW` literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/refresh_32.png b/wp-content/plugins/amr-ical-events-list/images/extras/refresh_32.png new file mode 100644 index 0000000000000000000000000000000000000000..1681589bf8f64031e18942f03624e1859d11cb73 GIT binary patch literal 2191 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/sphinn.png b/wp-content/plugins/amr-ical-events-list/images/extras/sphinn.png new file mode 100644 index 0000000000000000000000000000000000000000..8f5390ffa42b5be32c9ac8a034005173c3a685da GIT binary patch literal 670 zcmV;P0%84$P)DZyF)}YPGA}SV+*+UB0005> zNkl&!$A~MDl(&_XZkOFvUj4AXMICa{J0(Ba7bBp;`x{!UMrC?Q6Rjbu%0eIj6 zBoc|KlLIl!6uZnp^bt#7-M)M*Do*{y^?v2`3Q) zk|1msiL^z0AW1P?VR~Yg@!^~F1tbQqa_`Cu_L{%gssBKnCFYMX92-Y`$nGw%+t}pg z{iXf@)7fUT@(ICXZ16gscsR8c-x2@M!uCv(v9Zd^)a<*E8j`6n7RN;*pHcFcF`k6B&f_0n%fu3$S`f*{ou18xJ1@ zq|X*29-~9oaL%0o>h*f@&^1^qzh`Uz3zjyf^9KdwXole7%K&48H+X#OEykD;M1& literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/stumble.png b/wp-content/plugins/amr-ical-events-list/images/extras/stumble.png new file mode 100644 index 0000000000000000000000000000000000000000..9955d3b041ca81fa9141e6d6b3e9e7ff838f0959 GIT binary patch literal 611 zcmV-p0-XJcP)DZyF)}YPGA}SV+*+UB0005E zNklB?>@!eCvAC8o%ECOz=H?pp8L+Zm!}O1eqk7B z04`Y|fC9h+rd7c&ys74^ZZ%)cq$dIfATR+z9C$Y1j@qO6U7wYBg@oileOL>5vDo3k z@>7Ciw_JOZ=)@fa$z)=^Yly#0VtP|pX|!zOpULXhy|-``yPteH;xXw=ux>V*DFsDK z@!l+PdgP?~ElsoT!NoW%38Y8cNtV!<1tho2*g?dvI z_2zGPyj1jBdY6-f;EtE@S{e%|{+AN4b`DVihldBZ5&I!$DUOr|w-#vwURy`*SlMB$ x>|}DFfVPeRJR6v9>!{JzQMT`#!b2}#{tF!ksk4Kxu^|8e002ovPDHLkV1h~k2(SPE literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/technorati.png b/wp-content/plugins/amr-ical-events-list/images/extras/technorati.png new file mode 100644 index 0000000000000000000000000000000000000000..061a6659b9fa090d8bbf1153dacde0875250d22c GIT binary patch literal 742 zcmVDZyF)}YPGA}SV+*+UB0006! zNklPjb_!!F}e7bzK?ej zqf?Jl($R|a0^2`pf#3Lz}6PZ@Zu2#A{6XA?SnxSfLB3w zc@~XkcjX~Y?YMzQ6hBtJ@?iWXBh!!gSy;eS6(s9U(zW+GHD(OJ6)4&RI9huVzh@Iu zi|@Gbv=y&EhZ%;DfTOd#nD1qHXn@{h<7)+q*cCnq2=6n`35RotlmsUb41o5pFp+ub z{{1U3mzzdJXsPKW?2D9bAnc2A|KEX979+Fw zm|0092##YT2!?pjXqNK}JW2O)Zm79@h~NfQA8G{P_M7uO`! z2m~fmQ{N2=m&at^Ko12?qapjLH{Glk;p&wYM#4ev-Ra$e$SvTz^FNBqsag7iei~+$ zy19aIuCY?eu#mrj?Ay($$@8RE%VG;~F}^B(iq4}eE!HiKDrGFyqExBzcTPvEIao@U zSgXohSWD2(#v7etMe4OMgR#v03|f~Vx-wp*uc-a z?!@E1iw)huM$yUS>9csynRxp(%xaF0J{U(4E#7@+9Pjq-h|}eZ$X%UoXblS5oV!t^ zUMdwoE_E-{Q!@$BF(P!=?g{4)sbhib!VjRCNteE|6SW zWaigDczFLlbZs54yMr&k_=+}9C;pwiRCI-MRl_C$H<5reG8ABDc18S~T|o1;6Alkh zx{>GP=b!S%p`&!{>ZXYeS+z4aw@m!fWo!Tvpltr((B0BM>3hTv-%JwyZJtW*DzCnL z6o;n`qhX>r?dS%4_Q}UQ`}7#{tx;?u4GJ(A?Bk^aPjTq*D|GJY0>#ON={bb3v%0D= z5gEtOOT2#M8A%dCAcR1Y{GX9Gk0p42{5U>;7ZsyU&)xv@u~~-p4|3x8vC%uc z>XdYI&bNu!JPXc!9}|noWqdn)^!N1;dSK73zW)HONo3(0H!+0(0000DZyF)}YPGA}SV+*+UB00079 zNkl2L!+t)CHnp4v6NbVf!e^} z>)RRb-|naIU^boiE^)j#Z(Y$^3zpKL1jdG@dD!-vFVhQu871CKa{gKj!&nnvtU8Ok zLNK)mB0_$Vo2$1X)>7%(P)&+><_dErmZwe1Y2tySq@6C z9A)S3?QC;e&UVwI(7(UYg$`d z357z$<8gdGAC_fdSr$H@kFKsRlmb&LR!dyj9fq4gAV76>H60xt)YQ~aUtiDE)D)>y zif}kgZEY=TxkN$BdW=sWKO-8A;&eJ`Y-}VFiO|yAOghmEz>TIR=I7@bRej4}ux-uW zY%hYjiZd7t0x&*4P9zc`-QP=3T^T)fWuz0mG&D4zv|wr_iNTM9Q6(b6 z!onKPKk=>1i?JtYB?%+ga>Anw9T$TwowFe%9AZ}e0v3oi)et=NPyhe`07*qoM6N<$ Ef}JBt`2YX_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/tumblr.png b/wp-content/plugins/amr-ical-events-list/images/extras/tumblr.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b2e6c64de3c4dab6977cc03c2b97aa7845b075 GIT binary patch literal 588 zcmV-S0<-;zP)WdJcU zFEKJNFgV;=pWXlf0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#1y$)1UwV z0ia1lK~y-6os&;%Q$ZBPe=~V?*|=!qOKc#oMGy@NfhSE7EM2%TBDnFx*sY2nh+Vl7 z+^e`zy2=+Yt($y;7aCgKsFm!Udt6LRYx4X%aGAg7-gC~(xYbMR%Vwb`Dd!)Wb8g^$ zrJIvqBbyz{{DO3^$+HaBktdS`1myG1e5&GA{pS2RH{Gj&&(wfB$(*I6Z=^( zCF_blOc+EK1cxYLpfUy#=XLguWz+HAo7dCBySq=QEuEix6Jo+3O8B|Lt=o4>y#T0G zDpT2!ff@BQ#W}~Rr1J3I(`eK&3(*76U^p!DENjthUi@X%S^Y&(02;WZT4Pz#e|=}? aT=zQ|Z%v1e#aQD20000DZyF)}YPGA}SV+*+UB0005% zNkl0w85Qd*~?n#?38)<9Qjj0<`(1oC4K`~o5Zrt{tNI(RChFgDw+eC|Q znpL5gMTufTV@T5^O+)Yb7#H_iNn@=8vpAfYhj-o?Ro^|n+K*LpVpUZs{yXwU+A9lE zGrbeltmIYoNhMG;!bK1P##Yhn>gxWKhB_9Em=VB|fw3pqXxg$FIz8Vw3}i+QZbTn?NgX98XX9e_ack=2@d#{f|8 z7_wU9ME;tB5C9WI@Ii1v=ANCJ1=Iig4Dy`>omct2M{Q zQh|2|hj_pX=z!o;Sr^62FBwWE!b#E-NEHMDC&`Nb30SiXox-I(LBM#xr6!(@?R$Tq z0`y||FdSn=aH)wph@=e)<^kX1*&E2{#3h&ZBqqYC2Lh}Zq3@EyXFFyFP_G0wmWp(K z_EQg11wI|28(TK7*>gR3{dIwICWB88%Ku*D#A-@WL}M^wv%HKD^Y(|~!08#liyJ3& zW5s1-IEo{JfO`7r@bk^Qu0CA#31D!gG{B#!#00000NkvXXu0mjf>tzz4 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/twitter_16.png b/wp-content/plugins/amr-ical-events-list/images/extras/twitter_16.png new file mode 100644 index 0000000000000000000000000000000000000000..394c6d6683a491fcae7b3dd4d90a709bc3dad485 GIT binary patch literal 611 zcmV-p0-XJcP)DZyHZL+X zFEBaw!E56H0010xMObuGZ)S9NVRB^vL1b@YWgtdra%FdKa%*!SLsK*cveTdd00Fs4 zL_t(Ijg^y2YZO5c$N$q^Iy-JOi3z?oAqjerC4m@&PxRm(^aJ>Xyu}aW$&+9RB!~4N z#6UtWVtmFGGV4BIhnb$P@~|?~9X4VO3W{#3tA72jYC3q;iZ5A~b%8A66c!-Z)hcLE zYVF3A@NB&ng$Vw$SOEM;(#2MqZBWWm*IHpeNlqgGlbVpS)G4=uqudk+>u=s;t9gJ& z_ZQH3x_TnuC^yKhKp6&DN^kDOs7%$++=;#TC^rm{VTOeiWQxugs~aC>h8bj7z)l`j zD#iZg+H0@i?&=I4H*Prq0cBQTr6lOE1XOD`Jiv#KT|9hJ=4Mv@DsYlq1;_2#of$88 zqyiW4;`y8h_}1%VAjcGB%s#+rVe``=rY}#H1WkYoU+P`1?*+F8cTV`*T%8)t-p-${#l>=wUdUJ6-?)002ovPDHLkV1lje0r&s_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/twitter_32.png b/wp-content/plugins/amr-ical-events-list/images/extras/twitter_32.png new file mode 100644 index 0000000000000000000000000000000000000000..24080e4d863d789f2fc220a62e3c8c0245fa8da2 GIT binary patch literal 1092 zcmV-K1iSl*P)DZyHZL+X zFEBaw!E56H0010xMObuGZ)S9NVRB^vL1b@YWgtdra%FdKa%*!SLsK*cveTdd00Wvy zL_t(og}s;0Yg|?GMT=4_uk`TX2MKo-ko%u_P~ST z&Uxp2?m6dv?~EfNIF19rg)3Lz&V=C$Dc{d?8_ZOzf8Qt;KYr=hgReK%oCd(fYb(Ec z2L@*E2?9pkG+rvz*W|G=Y%0y4QAE63S$gsCq5Jj#KKSX%JK2ee*B;Ftpll4=N)wCp z6~J>Ga&DSzD#efGUCQh0@4hELko ze`$rTm%Ls9vF^s{0PyBpmlFN`z~#ATk27<4EE#|%044Srz-kUgS~)}aO6lAk>>iL%60 z%@xqn@9bJ$=x$otj^VAf;Fp!_+&?|s zJ3z|}bdh4bb|w63@gKx-$au9IeLM^Zy!5^STBJCZZl}O)TauAH3yTHB)I?R{DwtZ7 zY$nZ#hsK$m7)%TqH@CouU5ZBs12&`f@BQ)Vj{Zu;e6zgCz4>fn%v;idCnnQ;y6RXw zTFvo1B$L5VP4sEi0b|#Jshr~Y*Z|)b_YV>JU?fTgFgFX4C0HR=Je99B$GXPt$Cg&zk@$Z$0u|V_2jF0cw0jeVWR=JU=E!#@p^pmVyD(+|jx`qg~9o{};wS0d7DYx4k3{c)f9 z`nzj{qmzdMk73v4prswX*mb4ZQi|0mhRuz?K0o=`5kNVB2Mht;(-$tjXJ#LGQgXT8 zHP&Lz_V!k4X>sB5%V*93F;Hp&pjM4LVbToXP#ea^=Q{-;fcg)CB<;j$LX^4y0000< KMNUMnLSTXu2Kdqd literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/vimeo.png b/wp-content/plugins/amr-ical-events-list/images/extras/vimeo.png new file mode 100644 index 0000000000000000000000000000000000000000..e1deea96081a26456f795dcbf6f16aba21f25dbe GIT binary patch literal 614 zcmV-s0-61ZP)DZyF)}YPGA}SV+*+UB0005K zNklljQ6otR{{2aMgJgobpSUm`58$56idGhYdhH$;&t^YCD;azqYsTd{g(yg#u9fk^9*=g95T-u+1^_<>DeYbYfNkn*->Kk* zJvMg^2#s9J@&-tO7xn?zzPG}HCfVFMps6It{GjCxfSUImfR`Uztk?EvDv8jhrsls9 z;Klwa&)**-O&wV*ASNo0)1kp2NLEb1`%|-~a#s07*qoM6N<$f~MmE A%>V!Z literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/yellowmap.png b/wp-content/plugins/amr-ical-events-list/images/extras/yellowmap.png new file mode 100644 index 0000000000000000000000000000000000000000..91fe714086871c3bb77b175a02dc30b848d65b0f GIT binary patch literal 790 zcmV+x1L^#UP)*^r!en55DV{D2B zP(mO@M9N6HeM6K6Yg4N7Kz-N~{0hws5vQkU6Byo1c>C^#slUOsd)m4L8kG9T z)2kWses=$f0W>cznY_9{n~MG*!S}9dTpuY5hNB+d!)Cb!X5AMm$$n>OY6S#71Blxv Ub<65uuK)l507*qoM6N<$f;X{I1^@s6 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/extras/youtube.png b/wp-content/plugins/amr-ical-events-list/images/extras/youtube.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0ef30f44fccf2d839159b8e0f2d378ceed3ee4 GIT binary patch literal 473 zcmeAS@N?(olH%oJU|`_&^l%9R(gGmN!3HGdKmShzQY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^BCTyE7F950& z1F3T^N=+=u%+FH@$;?e z*W!)6rTP0x`-QDV6R)NVoVg*fxum-_UweDRk6uIXQwJCDay8ESzx|F7N5d|$4=-pz3?Gw&+H!^(oHuW_>k4)h&2H_X?(W95E4YL{nF>+Opx zu3hn+F6J3QkQ<0F%` zvHuL(oTe&-FWoThk;Ri)`@jD-y&rix?5o3pI{%88i!TqEoYuQ`S?BTA>x;k4o2&In z$n~^G$|nhy5|@m;U3&ae?tNZ*ihs?aGdpiGpE1sku1#+Z)inCeT5z2uLMd_o4`Apr Nc)I$ztaD0e0sv^O$5H?Q literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/facebook_16.png b/wp-content/plugins/amr-ical-events-list/images/facebook_16.png new file mode 100644 index 0000000000000000000000000000000000000000..f0faf29a7eb7f6dd86b429a53d7bfe85a41a25b1 GIT binary patch literal 502 zcmVdbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfL9Ke+nA~Ys>BZDYUUupTH(XEW}69H?R~7K@e=x2wL04 zSFkaOxCWEBVSnzuV-XXwL3TH{ngjPcoHH}(sB%*PW~#N;br}JZfwWzAYP}xdP;jPh`Bmi==8HAy-H3_5b`iTIA9z6HE56>^5?fM{L zXeI`;B*K@KZLF;p0RV?*4*&orh9(xUm{^005g5R5pID%Y2_*3e*8kvx)B9*LruYhO z`y-+|tp)&KF29(r!t-_cU%gkp8>^6TiQ_Za?^lRPuyt|^0C>7Oj_AQK3p5iYKI145 z(L~TBjFshlDueMo=e-UsEadbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgf6G0Tmzq7kdsx3_@h(BtvLTYL8Pas}v9{nvJqT(~t^Nzvi-_P| zER`UFP(-}<;K3dwTBQ}+`U7p6wMm+6c6Mi;hbG%>vQ21r7yLqCCvW$CKRfTuu)~N5 zj4=Sf+JcpZUjWPpFCJf= z)Br#Tb+q$P4B5;kY;Ff?T#@7gS-k))q9Jx52K{$t6hH-lbuop3m#k3CtHn(lk=6)= zU|j&90e~a|=NyvAS8}6Zz$hBf(|TPjF_74XsPfVPfTV=5{MB4f>o|V64W|bCaD8O3 zEBHh$!?^I<13#9Q8^*sceshhFCVE_B-#zetc4AlY3wM&PaZL{dUxHfI zEkg=$AJ`Lss|U#6KHz0my)vG?PSx)N?itwn?MCNr&N$a^pImXp6vkX}Psp-gXeDTt z&sBmjny@KAbqPpFke{v4L(TG$_@8D#l0>Oc2o#`MJ{Lf|y#qbH!5#$?P4X?9_BH^B zkpG)UbYCSmmD7=Ci&WG8oBix%%T~%u~{^cThC!_H4S2t&n3r)7~49PMgYVCL{AS- z%`zD|Ndmzh49j9FBq==g?&aip049J97eE-M4dehY04+c`Z{0u=fb|b(*|CUdl@4qG O0000CZFdYIbs+|l&)SRV8EQ{0elcNxP z4DZ@t;5m4cz$1xl3-YVny?=Ddo0*=3=_JJpL(2iVh(O{z$S#FInby%kXs*!g95#_@ zw^U)^)@!=8+B5L+sW@4hX762X7aoV4J+M#CS4to%epcv@rf3F{NvQ9RmoOxD$3=K_ z28Mf}xDhIwp{ZParJ}fzPN@kBuLq| zZP@Z6E*+=#&oAJUH0=H{xV%AX?}sf%VZ~-)b6&%(t8%fDBVOi2JmHjxDGZ2}kS+A` z8?@t-Q_#8__DWxJrMX|bX=*RwdViby7@j=vg;mW&s=do}hsTj)^hK3t;`y23`%Fr6*`tM1L?ADNN;3Z@UoWS z4DWu!eMVEX^Fln>u@h4zNwS_^fyrHRklH*w>NT?GEI#a#SMRG=+5WP%GJRvxpcoU6 zSBA!`|AytEWcV5dewdN#6NNS>A1IRL`fZa5cp@9EawovD2lkbZ|>Ob&CHN`Ee|ob^azg_)CBR Y0IcTg|Ae~ZcmMzZ07*qoM6N<$f>%3TcmMzZ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/feed_add_32.png b/wp-content/plugins/amr-ical-events-list/images/feed_add_32.png new file mode 100644 index 0000000000000000000000000000000000000000..1fcce0f162a289d8a1109a8eb507777539e6d669 GIT binary patch literal 1753 zcmV;~1}6E5P)n{O4z2;8@@m`G>~(&(Vw`WAo0mO{KF#AOwKds~a=W zFAdnXlmi{s48uNK3t7=_!aHpR>2L1)Fn!S{>y;3I7;{X}&o3A4>%`UqwE5LU`8F$u z>ipHMU+5;S*XN&h+FFzkRbnCmC@aA>Ww5Ok$SSlOs6Gu;{t29CE#3pPHgTpKaJUp> z*8*Y$Y2TrIgagv90aawhI@<$*&IXc(s+z{orLO|Y{{T*G2TF4R7uj^UEmoocG1%_V zELQDBZwF-fEvm1B)|Ame#(E$#54fG$@i(X#n<3MpR9*S#08+Ox;NYjref`?%)*G1j z30cXeC5N>LLosQqdQ=9&Aus~Uh&vY8FovO^76#w1RyKG7&?gn>Kc;IS_sjzBmoF$2|Dwa4*kt4u7M`SfKVu6^Y#Erb^~861ophznTa@tRW0dDFQ?W4(fR)Fg}wj+XXEATCore#hLxv761(w>~n@cPQ8o@+lpi$ zIsm^?szZ;i`ozHsNa{?+Q<4!^s4-;Q=5-!BaRmW1+joU=wLBnbMSv2&Yn92b0n^qi zjR?&kh}@MOz>>KE<5eFlahsViS{@M5I5@}?2YfmS_;?(!V-axh9iaBF&L9SHi>79% zc`oXr>;O<#W*;-*Wwje5Q%cCV9URcFCPIfoXsVdV>(2w1%c=YynF}5O9$sU2Fo{f5 z90yu1F@F$v(RP%McobXqEko|9gXXy<9)k3l?)73xVlv_lXIB6$f#_Pq-jz08u_EaI zJp$|`BeS>KK|IJTxQFp}$7AEkb=Xyqg^YWj#0QIc^m@9P;%nmJRp>i{WrbTYHL=@O zc7dr>LnR!4Jx@KJn1Mz`vol7qv2T?fK=Mc+z8}_H$j2|9R=hcPBa(Z2k$3hD-e!>%D7NF={4r&|A;p}jz%71CAVc*G$984dz05J)8 zn_Vv5rUA(VT9ixSZ7GT&7X?~-#@3ZvxE}+OdZ6M;2?CtnLjAS|!~ODK+N7`iN-_HO zj*|=xu(;xDJ9>CW%T(dJ4L0YM6u0jllW$)+xpUur&&xUlh^5uIq#5h&Jy&Q9? zxuRVo&hTLoR4bHi=;YCBc?wz%IY6qhMHqEVMMEL1#Jo7<&y ze)exB&;o1_eaez}zT&P^nIm#z99oYXeRAmZ>Lrn1B>HfuZw;o5R)qQ)0>8DhT@D36 zRC_A~90R|=}MrKx!KOlgS ziJ3)^fmM-BNZBz^tP!M@5g`jv!^{E{mKS7TWMX56=>yV?%q$E{tU`*0f*U{lzs11A z%m}ofS&+e=!8J|Ve#_c@Z-bBgc5u-*@~~Fy(36a)dLU=QUN3O_Uf#_m3$;%hn`HMC z_@50ado`s@b4}<<2Z^O0&ulg|302V4^#sB~S literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/google_32.png b/wp-content/plugins/amr-ical-events-list/images/google_32.png new file mode 100644 index 0000000000000000000000000000000000000000..2b9d1a7c0f93f3789cd76f4d5288a28f48f96e2f GIT binary patch literal 731 zcmex=~;k+`^QRlZ%U&n^BUFPtsIH zPQ{dD@c#gVAP0j2g90<75(ASUBeNjm|04_%KxYC00|KzIGP5uNWpo4>7+DyZnVDGF zp^}VD%q*;e3_^x%ijM4s!if_viikTWH!j==GKZ0Yi5X!Ckj2Ud)CrVP6J!8tWP=$3 zlwo8NWMDRAVP#_%66O$Bax7eU@&7Fb9%i5sg3N*p_6)_ZLg#d3wjK6cyX+2kq(-20 z$MO3y`)0)3THd@`G$;6_lk?fBbB{0;EPQ+X%Il+dugb@Tb!g3+by`jCu#>}^&^ZZm z9QJY6*;RV;@-MHLq?7I;^vsiS+Jzg6%IAz~H~F7-U8WbZPP|L4E#P;A5YxH3e3dT; z(-_lKVDe}Ef8V1Gw$_Ww{LUWEv<`*8X7k9VgqGuzN zZdS;jncUh@T^ra>Fh1bBe{Aupc}D3QBJbSfTk?70xk*i19~}zzxNx!S-Ib@WQhZr& zc5P`Z`}A+&`lm}cio36g^Z!%W`7x;DY~$vA?!|MBOJChvkaGPLm&$j~I3Z8DAosbR zJ6d(S&F9?My6|Y8*8!F4Y^@(cOZ~F5vpt*+b)8U9XSeG4ee1*QBW{;2ykwoZ+v%5% zS;^Cb3RfKcmaMN{{^qLa)Avr3_b#`%Gk@Pgvwy$Y*x#xDy;L8xWN+pb-mQGb@5}`^ zwOUM@;xxt2&${C6-xo(qLz}NnoNz}|)%D81iE^doDe59~4SF-#XQgs1KK}nE0J#_b AK>z>% literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/html_16.html b/wp-content/plugins/amr-ical-events-list/images/html_16.html new file mode 100644 index 0000000..49c45f0 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/images/html_16.html @@ -0,0 +1,3 @@ +#container li { + background: url(csg-4d9825b3d7e23.png) no-repeat top left; +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/images/html_32.html b/wp-content/plugins/amr-ical-events-list/images/html_32.html new file mode 100644 index 0000000..48fb116 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/images/html_32.html @@ -0,0 +1,3 @@ +#container li { + background: url(csg-4d982672b85c0.png) no-repeat top left; +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/images/images_16.zip b/wp-content/plugins/amr-ical-events-list/images/images_16.zip new file mode 100644 index 0000000000000000000000000000000000000000..4f18d6d2b549fd496213256e201f83f8e670134c GIT binary patch literal 19009 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 Lz&^`-gZ%10Zr`*) literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/index.php b/wp-content/plugins/amr-ical-events-list/images/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/images/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/images/info_16.png b/wp-content/plugins/amr-ical-events-list/images/info_16.png new file mode 100644 index 0000000000000000000000000000000000000000..10750758c349e03bbfec502a70353f219055a08d GIT binary patch literal 583 zcmV-N0=WH&P)qixj9T(UcgB%{Pf)MiuO^d+~u%54b}DA)0aKWMJ*$h>g|b1kGLy*|I+-3r0{8 zf+kk%B^Sduxij)AxPutcq%WQY}aRreNlH-}kutP|NI;yADSQ zq?ltWq?E`TTF-&IzQ-L*#1{}SbW5o%1fv1m92`)!UpTiUeB61r4eZW&AcbV(N<&JC zloF3FeMf-Q^;q+n$2XQp-^P=t_t(~ey*UMWPlX4sjuFkuf5?lIx{mXwdY->{J-N5O zx&plS@>GL@%9J_=Vz9w=L~tOe`sBmT_T5`6SKGE7&%gjuzVlh&0{@O(VDC>bz;7vc Vh`2SJXkP#T002ovPDHLkV1mML0V)6h literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/info_32.png b/wp-content/plugins/amr-ical-events-list/images/info_32.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ab9bbca3e574580fce4fde5768f4b136c350ab GIT binary patch literal 1153 zcmV-{1b+L8P)K^-G>(vz9#TgSz%y0_{+ zrd!a%T>4J+z4d+PJKw3Q7BeG+hzOwkzu_zbm2mIDcLB2z3Hc9!4RF9;z?DFv7d_Ai z9(?}&^>43U-$X@G1rkmysS7!M4^kB0$4TAAP2@A2W{El&fdfvq|Lfd19ZEv{YP zB2z(C$wW{sz{6)n#)E}>@xXpOM7UFxkZ2h(0RbcvAyXw&DM~sG3qD zDKga(r;UJrNa$sPih2UlK_F5=qy&~IdkJzxbJwFmKuZPE%u7&hQJ_Ty|JRs%G69te zyjJ_kDo~m+PQFxRIt5bjOvQIZT?Nw4@S000eGFYh*3uiTB~TUbe(hAD%Yc>isR5@} zAkXqD3S6rasBmDfasOP#eRCNHo@iI3 z`roe~aU$AOq(gzWiIsj&$g(2qOrtJnEkQfjbX_1)TYL&1oLE*4K3NF%$uf}%YpY>R zeu+Ta7U-!wpdwuO6W;mUn(i-^NPRGEbd-Rk47+BOdv*)=&SlKcD)YOAw@-{y0!gN| zjM~P#2sC#;c<<0n<@eF{oh(8LKuZVwD+MI!b4h^1eSHNC?!x2hS#QE2gJ-jU0h+uiwP7BFV*H=19xVa z8SyK=MCPw{0&yl1WiNuC(3=o#HJzE^%y7=gohyj|^fNIapGtuWxH6-2d8IN8n~XFGMA@4a*^l#_+h?}e*w|n&7;y5Zi|a?<83uy^-!ETSKYI9;mxsgQ4`#N} zhP9&t!D!AopJ_!PQNt_XoFm`fWbgdVd~xdB<)t?c9vTjZKbqOKE{K>w(w}i0`|Q@{ z5sa!sjH=Zhn;Y`=nbno0#eFXVD_xm~sGo@Po+>?mEDxvSsw0{|y37m#G7yo75LrE#uJ`R2}C3^rrSr_!hmty=ab?e#teiL TXV?P}00000NkvXXu0mjfd=?M| literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/information.png b/wp-content/plugins/amr-ical-events-list/images/information.png new file mode 100644 index 0000000000000000000000000000000000000000..12cd1aef900803abba99b26920337ec01ad5c267 GIT binary patch literal 778 zcmV+l1NHogP)BVme|mWaqy4$_pJm?y9KM{-*hp?1+Ey3e-CEDooTa!B;e(Q>TSF?bj>5At13y1p zriN3w3x~5SfZj{@J4M{kp{?=M_Lh2bV+5LH)Q)5W!-ePA$RgE1@5f1cyHki0Y}JyVEYZF(LD$xXlt$7A5CgE@ zpV-&l%vf;=5kZ2-2gi@Y6J&=cuwt>!vJ^#(&n|LcZyUzi6Duj$$hJ1s*HD-#;k-w@ zpdrwAuoDG_N2bvb07G$Zk*?Hc)JLtW4yqOnic_$zO7NZ#l>Fm){;fE?b$IbOaX2fe z0la4g0Dfw2xk7Wi7NapVD8YMPCZu?A1QCK*67dgsvRKBLFtrM>?$%&_lD1882mzdO zWPdw5KWw6IT`m1b_8=lS5jt8D3=RDa=&jWzR-)S@56WMslZ~mKu1)-wpXB>rNBQ>N zU#K`#1B&v|_AQK;7I~B}OdGiUT9LX>f0xm6<;LeP!=vFjPsUQF*wCJ*dO)4YBypgdiuF!=i@6Zyi7F|q#K zz?tlSZULa@t1D?$e;f@b36&N!V2mjOHw|*dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfrr(7^@B=>SH6KwAu*( z%WoS19GLk3Hm!Doh+@PFq9p*H&E5du+}z?oF2o8(Qbj7RNQlFwYXF$2itjpf?FS~R z5SGeYx>PY@9im+T#;@H5VD$JDW7)<{n%`F_t+zRO^dKKTH|bRNv#Yju(}BaNwTKP_ z@b2zS0OHv?^D|cgxbx&GSI$mRi#9aZ?>*+lssfi%ZLhI_@`?3cRR8MKLPE zkZk{jUwHrJTj9;~DuQuhQ7sP0=f89LniGprr}$1nm^;+p*2&j;X@+x3P`xnoDi|uC z2>0wJh@x%cKf$Ldz10rBYhN4ZvuQF}@axIsK;4@NLjMNSoBj#uS`v0ok8isG0000< KMNUMnLSTY9`V+hW literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/linkedin_32.png b/wp-content/plugins/amr-ical-events-list/images/linkedin_32.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f73abff030b3e8ffd720ead75d2c9e35e368f8 GIT binary patch literal 1057 zcmV++1m63JP)dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgf3dS-vwU1KevxkO;f14xJt(gkg_fM(kXg6 zEY8o&0=)OtiN{|{0LZ!=**~zG{7r{yUBz113rA_LyOLtkCY#yCwZHxz0agK&Qduc% z%Ky|ui>k#1mS<-G=-rnio!N8CAmy5-v(rW?l?CtsSgI*h!?7PsI*g4y0l=p}Tp%A) zTb638HP-;7rdpFti6@R735{Plw-5_JRcVye0RYwf_5hX@z6nt||2M)XpcG0sZ$5E( ziP1wD0LCvBBXeQ`(2;L9HMhdl+)8Xk!vJlxpfLS&=yTuQ4+2oHtWe5d^5@h2LnLqO zp}KILdZp~or@D8M-g7&N&U6Go8!b5V=2+0#VvWzsz!@?UH>(%rD^g1SNYJpn61wpM;bzACQO&?&hw_qc!9Xjq5kkJx}-m+unj8fR>y8Ilff@-Oe>^j8-`ttzYjN z3V_UWZQs0EwUfI3hP0TB4Jy2W9F0D@I7c;oE? bFo66Q9 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/map.png b/wp-content/plugins/amr-ical-events-list/images/map.png new file mode 100644 index 0000000000000000000000000000000000000000..364b4bada41bbf5e32ae59bec03b2cae47237754 GIT binary patch literal 983 zcmV;|11S87P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb- z1|>T9Q1jRT00UP^L_t(I%WacQXk1kohTrd;bMKv*Br}u0327#iq#0Xcs|Hgvv|=D6 z(T%v!2DG&MbiL~x@hSX)b56w_vrLRFfAVi`*lV#K7ev`LzDGA+}| z+{w&6=X@?i0>x+jyzlNI+>i74Al&2&2x2e8D+Gv61;V@jlfCDyhHL!s=ReoyjtxNn zr_<*0X-6UYrbXhgrCvn>l2bny5Gh8ed)%$w_yv0|L0{{g8kV7t+h4xhP0!6BH_Yk);%3{2cPQ`|p8GeN5DIka>q=s-kz% z`nN=LP$Yz_B$dj-x~RC;a;`oC$`I%cE9FLPGkad%KH_9mNtuZhHxYreuvv}AzTS* z8Lc$)q3(B`_cCwe%)$v-o=s>w-EYq)N7>9aF)yVZ;u$DnO$=+S%!dH4Y>gr=N_5mU zQiE4dV@ne@Fkp)3dDo6c$I}M_lTvbeaX}V~i>!bd10*DPN@A^A^39a*wa4V zR4Qrc^=e3`;C}MPu&k$Mr#;z7PYxX9%;nHEB_e-)Oa9Im*(&0tElQt$-PMg*v)sy} z(C_oE>Ms1UnAt!9PT$c1(624HeepL%Tw=kwF#+UH8~U?McEzA_UE@ZZqRe1;`P`6u z>cVCFS>GrP)IZ_HHo}tTc2cJ^ETkk5O1w2~&I3Py5Uo86XLlZSL<3(N$S*a~_f|cy zKREQwVLd&6)!tcK<=kqPr!uqlgZD@Lx_J7d%@#a22Alj2x~C7EB9O6yW5UL7fgU|! zs+F6YMj0kisfF9QHQW{=j0Wv(Is6Kta{SSjSf!*2Tme2qI002ovPDHLk FV1g`6!3_Wa literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/map_16.png b/wp-content/plugins/amr-ical-events-list/images/map_16.png new file mode 100644 index 0000000000000000000000000000000000000000..44d804dd40d5454cfc0550124c141e0eb56a7a1d GIT binary patch literal 686 zcmV;f0#W^mP)0H{onvb`~U{R}q_r`14(cz%&F- z%Sep%c6u#+q{+kAyT~X%TQh963gA$iC8&ayvP?MpV4_ajMS+67NqqHK(EZxMyBiencA4N8eRlxoHc!Dk_soCz?U4Ah2^rW@0= zaGEAAwH$_lQ?X>JDx;j5OJy*ZhNoASA+^Eq!gD-J)AV_#NXDbA#y=p0!HS^b&9w1?Sagmr(M9?L%j6bk zp`yW60{a8dco6a`(#*>gwV@-}s-5Z3D88WTgnGHb)Ad!8VO1J>7b1&T?;tZeplq8| zevHKNaTRKvyfirK&2IY2zm)LxlPV*84jI49TFnsYmOiq{1}2|$^ENi3#0By9v8utc zs7UC5JA|ju!AgBUO&w`=xjbrY?_qwtg~x6}7&!uMtvdzE<9hpiq;x#E<)Pk$Q|y3c zh%Esp8;d9JhW&ZFV&-KT UHd?uuFaQ7m07*qoM6N<$f*>S1x&QzG literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/map_32.png b/wp-content/plugins/amr-ical-events-list/images/map_32.png new file mode 100644 index 0000000000000000000000000000000000000000..cd913151a599873cff66ef550231a98fc52baa3e GIT binary patch literal 1771 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 O0000N$eaHJ=`+8uD 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 RBFO*%002ovPDHLkV1hD5iGTnA literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/med/calendar_view_month.png b/wp-content/plugins/amr-ical-events-list/images/med/calendar_view_month.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f1c3712855ac58baf48935cbcbd89f42343065 GIT binary patch literal 1360 zcmV-W1+V&vP)v==l5iwclO{0NbKK57Cn!6Xh8{HGeH>+Fhig=+v7-%*_UrNX10y4GPihhagw2 zH9+GfAAf@kC%6Oi%F!00#lMN#yQ~4NY-|8?F(=ppGZ^5NM_zUDX>t773)5c^J+jME z^W{i9O7FkBjS}r9h{9yCYVjuE5dE!Ve*$z`1ESc+F|hEz-JvzbQDkHuQE_ zPHvJf8Pu=vB*NqpB=Fb7cNF6Z_Y(TG$#1C*<88R-|F?omZoe2D%$1ppb0Me!Oja0C zVL(x6EmjyS#R1(}vRGo1JD}Zm;JgVeq+K6JNVLR`HE{AJ&9re9lU<(p0Y*f0W%8s^ zYy^RRRPG{GJ`V$O5J;qPC*`x}vDx}q0B6)iugep(w35>O1J4^S=Byi_E#L%vVE?o9 z`{XI=-uILVSP7npD^+^wm7T_VHge?iDjhtsld^1m%pUpbvno9}_zc}xu6w|9x)5lR z>;Yj#A;HYX2+Rr4m4t`botYK2!~=8RBLtV)(9*NLyNN}Fnb^X4y5&t(S_q|@Bk0;q$_7n(x-Esq~KKJv9^T5X~0+eq?iR6 zTrFITxO2>+z@E;G!%z~uNSwJF#gg{}2)MrF)&tCy=>`$zH4V&9ok7gD(&+JvnCxPT z4H)OQfCVs%a{lbk2th^Ok1r=PwayF@Pzc2llh9XJhqpu3jm zMa*G44GR3h!ESu%S{GMA*1NmUtmo$y;GSK5l%(~rta%u*yNniimA3A(c`fYyS{Q3I zaB7ro@rstl7=Jvcz_}{`QrzS)B7YX}AYu`+23&Ova5gZOYhdm?pVy_zzko8InR!hI z%6x|T7bIHaF!CBG&&(iZTWR>*RXBl5G|u-Rq~YnSaOwZCAd4&IGOC+RCDuT7wqiBl z@k|BEPw9z1`!VV{xpj2BcS3W^v~872Sr=P%9qi}xdI(cbmn-Ifx(x~^1rFw9ZsUR6 zRV7*Ycr3PT9qi}(^-9;zmLd)f3Tr&4@xVRrjO*LonA3YetHpmO?s|KCAi=9?+Wg-E zMa*d$BA4T(>k~Y}kK57jL%(~Kms;64YyUz2!-uBL{77y653{0gme6nfC%^!HFlt)7 SRX6zn00009xbreGQ9*HGO(}$ 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 BFuwo* literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/med/index.php b/wp-content/plugins/amr-ical-events-list/images/med/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/images/med/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/images/med/map_go.png b/wp-content/plugins/amr-ical-events-list/images/med/map_go.png new file mode 100644 index 0000000000000000000000000000000000000000..dd66900acbbd3e4ddf3571fbcea62ddd17cb2dae GIT binary patch literal 2001 zcmV;?2QK)DP)%99I?o?!7a!yY||f z#CB}QiOGXhL81=`qWowL3IbXLF{u8L0zVoQ6`__YL@JF$Q5&nJR8dv6NFYRuM4F_4 z8crMPx?_+l6^4;0ljqNy&RVlsJ)y`bc+;i^v zzVn?k0)W->SobSap4jMmnzv?Nk0D?yff}W|hq^Z2#f4JkKXvsxUeh1dFt&`%igAlG zT0S|j|MVpYyB4q=NDsl(zJ{kua8YDzJXpemL+2H*#kA918M*SBS@nIuhi0&9YsOWsR*6HH!DUo%m%)ZEmxFbzG6PGf{;lCUPl1^v~ zi&PdrT6z+#7M;+1Mhnc2wYgLaA)z6Paa8gRKW0$WxMk-AbW{f6u}Hc}WN;YIhFII2 zR`60+`mwTb|4^OD;?m89Y5AV1AeXaU3^1K1|+;FwYhL9301PWHDl7?6Ru+ z61UcmW824ukT=;uVpd70=ObZx@9H%B1?Qy`|NdDEoJ%gONiTRy2E4S$lPKO6dyJ<6 z1c46oWs?y%HB92`EmMJdDygo`0m2uMFc(h-JL zG3JWJL)Znpap7gOi!YLtj2PFX0hVkzhq{i%82M%!v3KaSgQ39!@~i)bHvJ85k_fOI=ue~R~43?u38#J~oa=5V`qz zM{uzK7AqUjQv9ksG2W6pCc-6m0eY7FnHVsVOn9#5LfvksPu}4a2lH zQuqE3c=gRMp}+J5KM=Z&EM6+tPQWO}D$d2YI*cE7*mpgR1E0GMc>OR^uRVgzT%*9_ zJm+Xd2TZ%lo*IMK;fr*!`Ox|M>lml;&d|nKX!8vU&RmaSqPj9X=m4i_9NgL3b3F%D j05#!tcD8Xd{x84)t}!rl^*H;f00000NkvXXu0mjfFwwE? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/music_16.png b/wp-content/plugins/amr-ical-events-list/images/music_16.png new file mode 100644 index 0000000000000000000000000000000000000000..e8c20b9f9f579f849bb395edfdc03787a3ae8a6c GIT binary patch literal 554 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/stumbleupon_16.png b/wp-content/plugins/amr-ical-events-list/images/stumbleupon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..484ba49057c4f9684ae1b1c2ff5196fab1a0577e GIT binary patch literal 698 zcmV;r0!96aP)dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfUc5G@3uFKCevVY?t&Wg*d~ZHpjW zweAmSlP=l>VSz+2_Mu=@1ZJfQ0D|iFNwt8{cqY^sY0#mfvQoeZRhQ#<5rU2=EwNzd zh0%CMDvZ*^*8(p0kJ20Msxw#*b4)EiV_q$7i%NhDagESeskwFJ3J2r+34)+*b;tH_ zssAii>Y9cOK~(UJ)EH%GkH!F)ocpl$a%H3RE}ILTu3ou2vG?2aq4==x`xs^LeZSh4 z$YDhp&j^i?nk`BsgE$jM2Ri>yPRuOus3Z;tLA7`Dn*ab=0a3x#Qe%|n{^CPEmcQ&k zpBx^9V!n13o8|fzN=utyEpPeB^|?2+1yK(5q`7zIDgXnCXszmr_MvS8Q6=ymjNT=k zPB$ERK9nr1uJbBe;8;(BJEz70c=0uhBg5(xT-R;*@~ffZ+SAt{DqMU#%lllprr(~K zuMs$rv76TE>V?)_fBk$7qqv1#UB*MJjQz1Z=(H!BHz{smH?yEs#&e7wp&UM;m>>Kf g0LP7FhdbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfHY~V}tuH+H=hA9RL30Z%uk* z&)(*}@Oi!Uw2zb4AOOHLO^hywv2M{!Y^eJI0MG&8nQuof`I)~b($hV{-mdY^eJJ2LNTM(U89x3&kZAWf7#PuBvGoG))8N9J56ot${{> z=xpT#NXX6vt%Ibh>&|WA26v5PWB^h$RRE+U6iI+dw#o830B|=zksAOJDgY!1Ab=$8 z3II3<-~dpPpzf1#0MIn8I*_G+Bw=a! zvWgA>NiG00k;e-t0T$eKPQv>3o-x%Jn;vRz+O^_9>7g40JtCJ2hOZ z!v~I=&UcZd%>jhd1?7TaOQ^9qX!k$9lQFLsws*rT5xLqI_DAitR1-I@AQWb~bpX_6 zfzxM;%PaVCZml}!YXonJfcY9L&z|te;-k?(Wn7z4t{}9tpxjpK0Br#<(SO)8(SNuy zzO|NI{ot27(W#78fndaHjBE{nau(PvFD-D#!2G?x5?lHBNPBDai@}G{=P^N2fTRFJ zt)I7xfzlds0@yCF_3fz-+wSI;;`Sx7nZ9wfBL-;!(gI^}&DFloIcKkd+)#+B7g1Jb zaqil?;r+obwEH6n8i70jjO>3t8x4db0MHrq8zkc;7t|cHvLqNU-76&2zsG=51hq-U zn@i4PE;$bXK2?;+Cvv`v$Ib%)_O&***?v@-Za9q?c^#%tfE1yn5ZE>bbO6XLq(Nf) ztN2j#0A6}zB*8gv1Aw`BYLTSX2>?ID($TR8t45yc=r_Nb`ot?O#hwp+Pj#Er(L-|J}~AP9~iTTA-i*Z?Op+* z1W?HW&N&!k|EbyuLjI#0e}?UdPUQ>u`qol>yET?l`S*UBZLeg39Rr+m5Yfgvdkgt_ zDY1O^>Ww`M>748N_;7(5$Xf(7q=l)1!R$je2-M)}aS09$MfB``8+yv=e z2X_QeFA;ZdBX#)#<3v=t8lCyME9xx8Qb6T0U>@JD?4HcLyAD8#7-iEPOw)G4U^ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/timezone.png b/wp-content/plugins/amr-ical-events-list/images/timezone.png new file mode 100644 index 0000000000000000000000000000000000000000..a3cef21453b3cbd3494afd0708f2cff17bad560d GIT binary patch literal 923 zcmV;M17!S(P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb- z2m>Lzb(9(a00SFIL_t(I%Wcz7Xq$B$$MN^`Jb98VO*&H>v#s51T(Q`B2(1a7RIEs= zAmU$i!@Gaj2I@R`(Z&_Q$qsr@ya*FF!7;?j#38-tv~{VqS#)iarAazBldLA~ljM1l zCV8Hphm|38ANcaUy*{UpB!mDgph@=nl8DBB#&Xz^oVzGjCH&qlg8lci$D>NzCQ?fX z1SV5c-wKz8kGtQX}Qp&K9zk%%A&8f-rq*lvf3ve;MDt?O2qbn`eEsZK=EY+e^squGCN2@tlN|#ux z%3N8_vlUp#PySrfg>+QOBtIX&7Fz2@RuSXEvJH0@za795vzMTFJr1 z_!`CHA};%#*hL7l=45_)n#D_hQo5F;-BBYG|3w^p;Yr5Eh9v+cH2Pws*;3fR&${l! ziy?c+i=6`!&pJj*mVVM-eUFePGuJ3%^CKz=aTi`}Z?R#iL>FCFcD zsKQ4+o#DgCTi65$(?pUDWVw!_3hwI$BF(P!=?g{4)sbhib!VjRCNteE|6SWWaigD zczFLlbZs54yMr&k_=+}9C;pwiRCI-MRl_C$H<5reG8ABDc18S~T|o1;6Alkhx{>GP z=b!S%p`&!{>ZXYeS+z4aw@m!fWo!Tvpltr((B0BM>3hTv-%JwyZJtW*DzCnL6o;n` zqhX>r?dS%4_Q}UQ`}7#{tx;?u3NRS#?XbnfT^#mR-~IfSsYx~ee|8OP8| zynf^vNfJUJgg}!1w-W*B^mP%BC3t`QI6i+D6{Aki-T?ElS%&rxa^m>0(L22Alyq~> xw~5$13(kEX6N|}Zd^>#f_w^8ZV9%|-{{XH@WZ@e(F@*pC002ovPDHLkV1j$Kv>pHe literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/timezone_16.png b/wp-content/plugins/amr-ical-events-list/images/timezone_16.png new file mode 100644 index 0000000000000000000000000000000000000000..2442be2b7402442fb376633a2a7a7a0ab59be84d GIT binary patch literal 867 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 b!-~o$d6s`+^sFmh00000NkvXXu0mjfumk4Q literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/images/youtube_32.png b/wp-content/plugins/amr-ical-events-list/images/youtube_32.png new file mode 100644 index 0000000000000000000000000000000000000000..71e60ef117f96cd9819ae82de682acdbcd14b8ef GIT binary patch literal 1297 zcmV+s1@8KZP)dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfX|pl5}pgY1Vdb%HkGjyQc)pI>tc3_CY2ng2?*dX19m1vUL+z z1+fHc!-nf7L!lHOW*_Uz@IggTMja~+2v&@Z+q0Y>to*x>jw+xK!-P_}?s(QbA`*z&7Z^PnZNer-I19~XLR6315 zGm{8kyLQF{pbBwlOCW%9bCe}1Nj-kdoTja-_GXWVI^oB2bCgXxL(EK19|Cd)G%2>Z z(h~?Nxuq!V`r=C}qtSIWFgr5Bt@ln-Cnc`*1ez4v09*i?5R@$}pbJ6h?74Lp2dIoj z37tKMZfI#jU>VS*L>R4*_>LVrh{xjq#N%-Sfxwzgm^!+Y{~6GvKsQ<;w6(R-*VhNY zl`B^`c<|tw3;>pnChaSrON7X^LO6Ep7@16l!NEaNsT4guJtPtd0)YU5K!8Ld0YG_q zx%G~HY=^0%>y8!B5mF$EtUxdrsHm`>$K!E^hlh)=fT3gd zIRio<#L6oG&V6ldZDn9!0LWDdKy`IBLqkI}G&C?jKVLA0siPac0`N_EmuxVCZ|m#F z7m56@nYAF3OfuPa1c1>@hS$e_SFCfu%+AS^?PQW8B@iEB@?^WM3T!zb1lAcK<{t9r z;dj>Ez;c*7ZdF0CQ?OLXs{&D=3Pv7h^0=tqmp5lQw;HUf3J%{H&*Ofre<5$qa&A=y zglz?iZ9%ebHvo~;ZzSt>lgwm^_;P>O?Bg5R3|S+GB0evFsVeu>+#i~nG7q(7WqGk3 zmyvlv6l><3qvL6dGsgh0efu3p$I}*96FYAGu8AFAF>c;#~(Q z6CGS`YUFZLBheEb1!FqPut*ZxVLrFdGshDbd-J%~U#{nIh2j}GAg!b*2J`uSRbx)* zG}*X`#U;Eh#WC-vx84L`R?`UItW zr?KNS0OJ?V=au*aRYM9n4aQ~k+19{C&FwxOcDwPp6iSJVkc{a%9$o*uWBQ+Vg
                          '; + echo PHP_EOL.'


                          '.PHP_EOL; + echo PHP_EOL.'

                          '.__('Import a list\'s settings','amr-ical-events-list').'

                          '; + + // 201602 check if we are allowed to upload text file types + $mimes = get_allowed_mime_types(); + $filetypeok = false; + foreach ($mimes as $type => $mime) { + if (strpos($type, 'txt') !== false) { + $filetypeok = true; + } + } + if (!$filetypeok) { + echo '

                          !! '.__('This site does not allow filetype .txt to be uploaded.','amr-ical-events-list'). ' ' + .__('Please contact your wordpress administrator to request that it be added.','amr-ical-events-list').' ' + .__('Alternatively, change the file suffix to an allowed type eg: .odt in order to upload it.','amr-ical-events-list').'

                          '; + + } + + + echo '

                          '.__('Imported settings must be from a compatible system.','amr-ical-events-list'); + echo ' '.__('Ensure any fields used by the list are in your database and have been "found".','amr-ical-events-list').'

                          '; + echo '

                          +

                          ' + .'' + .' +
                          +

                          '; + + if (WP_DEBUG and !$filetypeok) { + echo '

                          '.__('Allowed mimetypes: ', 'amr-ical-events-list').'

                          '; + echo '

                          '; + foreach ($mimes as $type => $mime) { + echo $type.', '; + } + echo '

                          '; + } +} + +function amr_ical_list_export_form () { + global $amain; + global $aopt; + global $ausersadminurl; + + if (isset ($amain['names'])) { + + echo PHP_EOL.'

                          '; + echo PHP_EOL.'

                          '.PHP_EOL; + echo '

                          '; + _e("Export a list's settings", 'amr-ical-events-list'); + echo '

                          '; + + echo PHP_EOL.'
                          '; + echo PHP_EOL.wp_nonce_field('amr-meta','amr-meta',true,false); + + echo PHP_EOL."

                          ".PHP_EOL; + echo '

                          '; + + } +} + +function amr_ical_main_to_export () { // define the list of overview settings to export + return array( + // we have a historically weird structure so we have to do it this way until we risk updating + 'sortable', + 'names', + 'html_type', + 'public' , + 'list_avatar_size', + 'list_rows_per_page', + 'show_search', + 'show_perpage', + 'show_pagination', + 'show_headings', + 'show_csv', + 'filterable', + 'show_refresh', + 'customnav' ); +} + +function amr_ical_build_export($list) { +global $amain, $aopt; + + if (empty ($aopt)) $aopt = ausers_get_option('amr-ical-events-list'); + + $data = array(); + $data ['version'] = $amain['version']; // + $toexport = amr_main_to_export (); + foreach ($toexport as $text) { + if (isset($amain[$text][$list])) + $data[$text] = $amain[$text][$list]; + } + + if (isset ($aopt['list'])) + $data['list'] = $aopt['list'][$list]; + + $content = serialize($data); + return($content); + +} + +function amr_ical_handle_export() { + + + if ( isset( $_POST['export-list'] ) and isset( $_POST['export-list-text'] ) ) { + check_admin_referer('amr-meta','amr-meta'); + + $filename = sanitize_title(get_bloginfo('name'))."-amr-users-list.txt"; + if (amr_is_network_admin()) $filename = 'network-'.$filename; + $content = htmlspecialchars_decode($_POST['export-list-text']); + header("Content-Description: File Transfer"); + header("Content-type: application/txt"); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header("Pragma: no-cache"); + header("Expires: 0"); + + echo $content; + die(); + } + +} + +function amr_ical_handle_import() { +global $amain, $aopt; + + if ( isset( $_POST['import-list'] ) ) { + // require_once(ABSPATH . 'wp-admin/includes/admin.php'); + if (empty($_FILES) ) { + amr_users_message('No file specified','amr-ical-events-list'); + return; + } + if (empty($_FILES['importfile'])) { + amr_users_message('Problem in upload','amr-ical-events-list'); + return; + } + + $file = $_FILES['importfile']; + + $uploaded = wp_handle_upload($file, array('test_form' => FALSE)); + + + if ( is_wp_error($uploaded) ) { + $errors['upload_error'] = $uploaded['error']; + } + + if (!empty($errors)) { + amr_users_message('There was an error uploading your file.','amr-ical-events-list'); + return; + } + + if (empty($uploaded['file'])) { + amr_users_message('There was an error uploading your file.','amr-ical-events-list'); // could be file mime type is not allowed 20160207 + return; + } + + $content = file_get_contents($uploaded['file']); + + $data = unserialize(stripslashes($content)); + + //$data = unserialize($content); + + if ((!is_array($data)) or (!isset($data['version']) )) { + echo '

                          '; + _e('Invalid data in settings file','amr-ical-events-list'); + echo '

                          $name) { + if ($name == 'justimported' ) { + $thisindex = $index; + } + } + + foreach ($toimport as $setting) { + if (isset($data[$setting])) + $amain[$setting][$thisindex] = $data[$setting]; + } + + if (isset($data['list'])) $aopt ['list'][$thisindex] = $data['list']; // do we need this?? + + ausers_update_option('amr-ical-events-list',$aopt); + ausers_update_option('amr-users-main',$amain); + + amr_users_message(sprintf(__('List %s will be saved with imported data','amr-ical-events-list'),$thisindex)); + + } +} + + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-calendar.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-calendar.php new file mode 100644 index 0000000..ba72178 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-calendar.php @@ -0,0 +1,806 @@ +format('Ym'); //numerical so do not need amr_date_format + $bunchesofevents[$yearmonth] = array(); + date_modify($dummydate, '+1 month'); + } + +// assign events to the box of their year and month + if (!empty ($events)) { + foreach ($events as $event) { + + //$yearmonth = $event['EventDate']->format('Ym'); //numerical so do not need amr_date_format + if (empty ($event['dummyYMD'])) { + if (ICAL_EVENTS_DEBUG) { + echo '
                          Error in dummy YMD for multi day event'; var_dump($event); + } + } + else $yearmonth = substr($event['dummyYMD'],0,6); // quicker? + if (isset($bunchesofevents[$yearmonth])) // then we have generated dummy events past our end date, so stop + $bunchesofevents[$yearmonth][] = $event; + } + } + return ($bunchesofevents); +} + +function amr_prepare_day_titles ($titles, $liststyle) { + + // if it is a largecalendar, then show info only + $daylinktext = __('Go to events for this day only','amr-ical-events-list'); + + if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false + || stripos($_SERVER['HTTP_USER_AGENT'], 'camino') !== false + || stripos($_SERVER['HTTP_USER_AGENT'], 'safari') !== false) + $ak_title_separator = "\n"; + else + $ak_title_separator = ', '; +// if small calendar + if ( $titles ) { + foreach ( $titles as $day => $daywithtitles_array ) { + if ($liststyle == 'largecalendar') + $daytitles[$day] = $daylinktext; + else { + if (is_array($daywithtitles_array) ) + //$string = implode(',',$daywithtitles_array); + $string = implode($ak_title_separator,$daywithtitles_array); + else + $string = $daywithtitles_array; + + $daytitles[$day] = ($string ); + } + } + } + else return; + + return ($daytitles); +} + +function amr_get_events_in_weeks_format ($events, $weeks, $start) { // should be using dummmyYMD? + global $amr_globaltz; + $wkst = ical_get_weekstart(); // get the wp start of week + + if (isset($_GET['debugwks'])) { echo '
                          Separate '.count($events).' events into weeks for '.$weeks.' weeks using wkst: '.$wkst;} + + $weeksofevents= array(); +// prepare the months array so we show a calendar even if no events + $dummydate = new Datetime(); //if cloning dont need tz + $dummydate = clone $start ; + $dummydate = amr_get_human_start_of_week($dummydate,$wkst); + for ($i = 0; $i < $weeks; $i++) { + $weekbeginning = $dummydate->format('Ymj'); //numerical so do not need amr_date_format + if (empty ($firstweekbeginning) ) + $firstweekbeginning = $weekbeginning; + if (isset($_GET['debugwks'])) {echo '
                          weekbeginning'.$weekbeginning; } + $weeksofevents[$weekbeginning] = array(); + date_modify($dummydate, '+7 days'); + } + +// assign events to the box of their year and month + if (!empty ($events)) { + foreach ($events as $event) { + if (!empty($event['dummyYMD']) ) { // ahh need the dummy date, not the Event Date + date_date_set( $dummydate, + substr($event['dummyYMD'],0,4), + substr($event['dummyYMD'],4,2), + substr($event['dummyYMD'],6,2) + ); + if (isset($_GET['debugwks'])) {echo '
                          date:'.$event['dummyYMD'];} + $dummydate = amr_get_human_start_of_week ($dummydate , $wkst); + $weekbeginning = $dummydate->format('Ymj'); + if (isset($_GET['debugwks'])) {echo '
                          start of week:'.$weekbeginning;} + if (isset($weeksofevents[$weekbeginning])) { + $weeksofevents[$weekbeginning][] = $event; + } + else { // the week beginning is not in our current set - might be a multi day that started the previous week or even earlier + if (isset($_GET['debugwks'])) { + echo '
                          No week begin of '.$weekbeginning.' for ? '.$dummydate->format('c').' '.$event['SUMMARY']; + //$weeksofevents[$weekbeginning][] = $event; // assign our multi day to first week + //var_dump($event); + } + } + + } + else if (isset($_GET['debugwks'])) {echo '
                          event with no dummy date'; var_dump($event);} + } + } + if (isset($_GET['debugwks'])) { + echo '
                          Have dates for:'.count($weeksofevents).' weeks'; + foreach ($weeksofevents as $i => $bunchevents) { + echo '
                          '.$i.' '.count($bunchevents); + foreach($bunchevents as $i => $e) { + echo '
                            '.$e['EventDate']->format('Ymd'); //numerical so do not need amr_date_format + } + } + } + + return ($weeksofevents); +} + +function amr_events_as_calendar($liststyle, $events, $id, $class='', $initial = true) { /* startingpoint was wp calendar */ + + global $amr_options, $amr_listtype, $amr_limits, $amrW; + global $amr_globaltz; + global $change_view_allowed; + global $wpdb, $wp_locale; + global $amr_calendar_url; + global $amr_event_columns; //20151018 + + $empty = ' '; + + $link = amr_get_day_link_stem(); // get the daylink stem + + +// --- Note that if months set, then events will have started from beg of month */ + + $months = 1; + $weeks = 2; // as default + if (isset ($amr_limits['months'])) { + $months = $amr_limits['months']; //may need later on if we are going to show multiple boxes on one page + $weeks = 0; + } + else if (isset ($amr_limits['weeks'])) { + $weeks = $amr_limits['weeks']; + $months=0; + } + + // testing + //$weeks = 2; // need weeks =2 else miss early ones + // Let's figure out when we are + + $start = amr_newDateTime(); + $today_day = $start->format('j'); + $today_month = $start->format('m'); + $today_year = $start->format('Y'); + + $start = clone $amr_limits['start']; + $thismonth = $start->format('m'); + $thisyear = $start->format('Y'); + + if (!($liststyle === 'weekscalendar') ) + $start->setDate($thisyear, $thismonth, 1); + else + $start->setDate($thisyear, $thismonth, $start->format('j')); + + // what was asked for in url (in case using small calendar as a selector ) + + if (!empty($_GET['start']) and is_numeric($_GET['start'] )) { + $selected_day = substr($_GET['start'],6,2); + $selected_month = substr($_GET['start'],4,2); + $selected_year = substr($_GET['start'],0,4); + } + else { + $selected_day = $today_day; + $selected_month = $today_month ; + $selected_year = $today_year; + } + + $events = amr_check_for_multiday_events ($events); // now have dummy multi day events added and field dummyYMD to use + + + if (!($liststyle === 'weekscalendar')) + $bunchesofevents = amr_get_events_in_months_format ($events, $months, $start); + else + $bunchesofevents = amr_get_events_in_weeks_format ($events, $weeks, $start); + + if ($liststyle === 'weekscalendar') { + if (!empty($amr_options['listtypes'][$amr_listtype]['format']['Day'])) + $caption_format = $amr_options['listtypes'][$amr_listtype]['format']['Day']; + else + $caption_format = 'j M'; + } + else { + if (!empty($amr_options['listtypes'][$amr_listtype]['format']['Month'])) + $caption_format = $amr_options['listtypes'][$amr_listtype]['format']['Month']; + else $caption_format = 'F,Y'; + } + + +// if ( isset($_GET['w']) ) $w = ''.intval($_GET['w']); /* what sthis for ?*/ + // week_begins = 0 stands for Sunday + $week_begins= intval(get_option('start_of_week')); + + if (($liststyle == 'smallcalendar') ) // for compatibility with wordpress default + $class = ' widget_calendar '; + if (empty($class)) + $class = $liststyle; + else + $class = $class.' '.$liststyle.' '; + + if (!empty($amr_limits['show_views']) and $change_view_allowed) + $views = amrical_calendar_views(); + else $views = ''; + $html = $views; + $calendar_output = ''; + $multi_output = ''; + + if (empty($amr_limits['show_month_nav'])) { + $navigation =''; + $tfoot = ''; + } + else { + $navigation = amr_calendar_navigation($start, $months, $weeks, $liststyle); // include month year dropdown with links + + if (($liststyle == 'smallcalendar' ) and ($months < 2)) { + $tfoot = ''.$navigation.''; + } + else { + $tfoot = ''; + $html .= '
                          '.$navigation.'
                          '; + } + } + + $columns = $amr_event_columns; // 20151018 add so we can use easily//prepare_order_and_sequence ($amr_options['listtypes'][$amr_listtype]['compprop']); + + //var_dump($columns); + if (empty($columns)) return; + + // now do for each month or week------------------------------------------------------------------------------------------------------- + + if (isset($_GET['debugwks'])) echo '
                          Bunches of events = '.count($bunchesofevents).'
                          '; + foreach ($bunchesofevents as $ym => $bunchevents) { //also for weeks + $thismonth= substr($ym,4,2); + $thisyear = substr($ym,0,4); + if (!($liststyle === 'weekscalendar')) + $start->setDate($thisyear, $thismonth, 1); + else + $start->setDate($thisyear, $thismonth, $start->format('j')); + + + if (isset($_GET['debugwks'])) echo '
                          weeks = '.$weeks.' '.$start->format('c'); + + $dayheaders = ''.amr_calendar_colheaders($liststyle, $start).''; + + if ($liststyle === 'weekscalendar') { // then cannot use thead as can only have one thead per table- else is data + $calendar_caption = apply_filters('amr_events_table_caption',amr_weeks_caption($start)); + if (!empty($calendar_caption) ) + $calendar_caption = ''.$calendar_caption.''; + $calendar_output .= ''; + $calendar_output .= $dayheaders; + } + else { + $calendar_caption = apply_filters('amr_events_table_caption',amr_date_i18n ($caption_format, $start)); + if (!empty($calendar_caption) ) + $calendar_caption = '' .$calendar_caption.''; + $calendar_output .= '' . $calendar_caption; + $calendar_output .= ''.$dayheaders.''.$tfoot.''; + } + + + + // Get days with events + + $titles = array(); + $eventsfortheday = array(); + $dayswithevents = array(); + + + if (ICAL_EVENTS_DEBUG) echo '
                          Bunch events count='.count($bunchevents); + if (!empty ($bunchevents)) { // NOTE SINGULAR month + // get the titles and events for each day + $bunchevents = amr_sort_by_two_cols ('dummytime','MultiDay', $bunchevents); //20140805 + + foreach ($bunchevents as $event) { + // convert eventdate to display timezone now for day of month assignment, other dates will be + // converted to display timezone at display time. + if (empty($event['EventDate'])) continue; // if no date, we cannot display anywhere + if (isset($event['dummyYMD']) ) { + + //$month = $event['EventDate']->format('m'); + //$month = substr($event['dummyYMD'],4,2); // quicker? + //if (isset($_GET['debugwks'])) {echo '
                          Do we need monts=thismonth check?'.$month.' '.$thismonth;} + + //if ($month == $thismonth) { + // this allows to have agenda with more months and events cached + //$day = $event['dummyYMD']->format('j'); + $day = ltrim(substr($event['dummyYMD'],6,2),'0'); // quicker? + $dayswithevents[] = $day; + // replace with listtype format + $title = ''; + if (isset ($event['SUMMARY']) ) + $title = $event['SUMMARY']; + if (is_array($title)) + $title = implode($title); + $titles[$day][] = $title; + // + $eventsfortheday[$day][] = $event; + // } + } + } + } + + if (isset($dayswithevents)) + $dayswithevents = array_unique ($dayswithevents); + + + if (!($liststyle === 'smallcalendar') or !function_exists('amr_events_customisable_small_calendar_daytitles') ) + $daytitles = amr_prepare_day_titles ($titles, $liststyle); // for large hover? + + unset ($titles); + + //----------------------------------------------------------------------------------- + + if (!empty($eventsfortheday)) { + if (ICAL_EVENTS_DEBUG) echo ' we have '.count($eventsfortheday).' days of events'; + foreach ( $eventsfortheday as $day => $devents ) { + if (ICAL_EVENTS_DEBUG) echo '
                          Day ='.$day. ' with '.count($devents).' events '; + $dayhtml[$day] = amr_list_one_days_events($devents, $columns); + if (function_exists('amr_events_customisable_small_calendar_daytitles') and ($liststyle === 'smallcalendar') ) + $daytitles[$day] = amr_events_customisable_small_calendar_daytitles($devents, $columns); + //if (isset($_GET['debugwks'])) echo '
                          Day: '.$day.' '.$dayhtml[$day]; + } + } + unset($eventsfortheday); +// else echo 'EMPTY events forday'; + +/* ------See how much we should pad in the beginning */ + $week = 1; + $calendar_output .= "\n\t".''; + +//----------------------------------------------------------------------------------- + if ($liststyle === 'weekscalendar') { + //if (isset ($weeks)) { + $day1 = $start->format('j'); // set to start of week //The day of the month without leading zeros (1 to 31) + //$daysinbunch = $day1+6; + $daysinbunch = 7; + } + else { + $pad = calendar_week_mod($start->format('w')-$week_begins); + if ( 0 != $pad ) { + $calendar_output .= + "\n\t\t".''; + } + $day1 = 1; + $daysinbunch = $start->format('t'); //The number of days in the given month + } + if (isset($_GET['debugwks'])) echo '
                          Day 1= '.$day1; + + $newrow = false; + $nextdate = new Datetime(); //if cloning dont need tz + $nextdate = clone $start; + +// for ( $day = $day1; $day <= $daysinbunch; ++$day ) { + for ( $i = 1; $i <= $daysinbunch; $i+=1 ) { + if (isset($_GET['debugwks'])) echo '
                          i = '.$i; + +// $calendar_output .= amr_handle_each_day ($thisyear, $thismonth, $day, $daytitles, $dayswithevents,$dayhtml); + if ( isset($newrow) && $newrow ) { + if ($week > 1) { // then we need to end the previous row + $calendar_output .= AMR_NL.''; + $calendar_output .= AMR_NL.''.AMR_NL; + } + //else echo 'new row but $week = '.$week; + } + + $newrow = false; + $lastinrow = ''; + // check if after this we need a new row eg if month calendar// +// if ( 6 == calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins) ) { + if ( 6 == calendar_week_mod($nextdate->format('w')-$week_begins) ) { + $newrow = true; + $lastinrow = ' endweek'; + $week = $week+1; // helps to balance out the multi month view + } + + /* wp code - can't we do better ? */ + //$datestring = $day.'-'.$thismonth.'-'.$thisyear; // must use hyphens for uk english dates, else it goes US + //$dow = date('N',strtotime($datestring)); // does not like dates earlier than 1902 + $dow = $nextdate->format('N'); + $thisyear = $nextdate->format('Y'); + $thismonth = $nextdate->format('m'); + $day = $nextdate->format('j'); + + $hasevents = ' noevents '; + if ((!empty ($amr_limits['day_links'])) and ($amr_limits['day_links']) and + (!empty($daytitles[$day]) )) { // then we have events for that day, so can link to it + $hasevents = ' hasevents '; + $daylink = ''.$day.''; + } + else { + $daylink = $day; + } + + if ( ($day == $today_day) && + ($thismonth == $today_month) && + ($thisyear == $today_year) ) + $today = ' today '; + else $today = ''; + + if ( ($day == $selected_day) && + ($thismonth == $selected_month) && + ($thisyear == $selected_year) ) + $selected = ' selected '; + else $selected = ''; + + $calendar_output .= ''; + date_modify($nextdate, '+1 day'); + } + + // now check if we need to pad to the end of the week +// $pad = 7 - calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins); + $pad = 6 - calendar_week_mod($dow - $week_begins) ; + if ( $pad != 0 && $pad != 7 ) { + $calendar_output .= "\n\t\t".''; + } + else + $week=$week-1; + + if (($months > 1) and ($liststyle == 'smallcalendar')) { // pad so that they will all line up nicely in the multiview + for ($w=$week; $week <=5; ++$week) { + $calendar_output .= + "\n\t".'' + ."\n\t"; + } + } + + + if ($liststyle === 'weekscalendar') + $calendar_output .= "\n\t\n\t\n\t"; + else + $calendar_output .= "\n\t\n\t\n\t
                          ' + //.' ' + .$empty + .'
                          '; + if (!($liststyle === 'weekscalendar') ) + $calendar_output .= '
                          '.$daylink.'
                          '; + if ((!empty($dayswithevents) ) and ( in_array($day, $dayswithevents) )) {// any posts today? + if (isset($_GET['debugwks'])) {echo '
                          Day='.$day;} + // if (($liststyle == 'largecalendar') + if (in_array ($liststyle, array('largecalendar','weekscalendar')) + and (!empty($dayhtml[$day]))) + $calendar_output .= AMR_NL.$dayhtml[$day]; + } + else { + $calendar_output .= $empty; //' '; + } + $calendar_output .= '
                           ' + //.$dow.' '.$week_begins + .'
                           
                          "; + $multi_output .= $calendar_output; + $calendar_output = ''; + if (isset ($weeks)) date_modify($start, '+7 days'); + else date_modify($start, '+1 month'); + + } // for each bunch (eg month?) + + if ($liststyle === 'weekscalendar') // if we are doing weekly, we want only one table so all will line up + $multi_output = ''.$multi_output.'
                          '; + + $html .= $multi_output; + return($html); +} + +function amr_list_one_days_events($events, $columns) { /* for the large calendar */ + global $amr_options, + $amr_limits, + $amr_listtype, + $amrW, + $amrtotalevents; + + if (empty($events)) return; + $html = ''; + + $no_cols = 1; +/* --- setup the html tags ------need to have divs if want to allow html else must strip---------------------------------------- */ + $ev = AMR_NL.'
                          '.$chtml.'
                          '; + } + if (!($eventhtml === '')) { /* ------------------------------- if we have some event data to list */ + $eventhtml = $ev.$classes.'">'.$eventhtml.$evc; + } + $html .= AMR_NL.$eventhtml; + } + //if (!empty($html)) $html = $html.$ulc; +return ($html); +} + +function amr_get_day_link_stem() { + global $amr_calendar_url, $amr_limits; + + if (!empty($amr_calendar_url)) + // if they have defined a url to use for these sorts of links, then use it + $link = $amr_calendar_url; + else + // else get a clean version of the current url + $link = amr_clean_link(); + + // how do we know whether to force a listtype or not ? + // we must if in large calendar or small calendar + // and it should be the agenda one + // If they have specified a url, then that page should either already be + // in a suitable listtype, or the url should have a listtype passed to it. + + if (!empty ($amr_limits['agenda'])) { + // do not want listtype unless requested? + $agenda = $amr_limits['agenda']; + } + else + $agenda = 1; + + $link = add_query_arg( 'listtype', $agenda ,$link); + + return ($link); +} + +function amr_get_day_link($thisyear, $thismonth, $thisday, &$link) { /* the start date object and the months to show */ + + // old comment as to why the linktype add in was commented out : what does it mean?: + //no ? - they must just do something sensible when they set up the page + + $link = add_query_arg( 'days', '1' ,$link); + $link = add_query_arg( 'months', '0' ,$link); // else existing months will override days + $link = add_query_arg( 'start', + $thisyear.str_pad($thismonth,2,'0',STR_PAD_LEFT).str_pad($thisday,2,'0',STR_PAD_LEFT), + $link ); + $link = amr_check_for_wpml_lang_parameter ($link); +return ($link); + +} + +function amrical_get_month_link($start, $months, $link) { /* the start date object and the months to show */ + $link = (add_query_arg( 'start', $start, $link )); + $link = (add_query_arg( 'months', $months, $link )); + $link = amr_check_for_wpml_lang_parameter ($link); +return ($link); + +} + +function amr_calendar_colheaders ($liststyle, $start) { +global $wp_locale, + $amr_options, + $amr_globaltz, + $amr_listtype; + // week_begins = 0 stands for Sunday + $week_begins= intval(get_option('start_of_week')); + $format = $amr_options['listtypes'][$amr_listtype]['format']['Day']; + $dummydate = new Datetime(); //if cloning dont need tz + $dummydate = clone $start ;// so as not to overwrite start + + $myweek = array(); + $calendar_output = ''; + for ( $wdcount=0; $wdcount<=6; $wdcount++ ) { + $dayofweek = ($wdcount+$week_begins)%7; + + $myweek[] = $wp_locale->get_weekday($dayofweek); + // make a note of which number is saturday and sunday so we can add css classes for the weekend + if ($dayofweek == 0) $sunday = $wdcount; + if ($dayofweek == 6) $satday = $wdcount; + } + + foreach ( $myweek as $dayofweek => $wd ) { + + switch ($liststyle) { + case "smallcalendar" : { + $day_name = $wp_locale->get_weekday_initial($wd); + break; + } + case "weekscalendar" : {//else weekscalendar + $day_name = amr_format_date($format,$dummydate); // v 4.0.9 + + break; + } + default: { //else large calendar + $day_name = $wp_locale->get_weekday_abbrev($wd); + } + + } + date_modify($dummydate, '+1 day'); //must increment the day + +// $day_name = ($liststyle=="smallcalendar") ? +// $wp_locale->get_weekday_initial($wd) : +// $wp_locale->get_weekday_abbrev($wd); + $wd = esc_attr($wd); + if ($dayofweek === $sunday) + $class= ' class="sunday" '; + elseif ($dayofweek === $satday) + $class= ' class="saturday" '; + else $class=''; + + $calendar_output .= "\n\t\t$day_name"; + } + + + + return $calendar_output; +} + +function amr_event_is_multiday($event) { //determine if event is a multi day event + + if (empty($event['DURATION'])) { + if (empty($event['EndDate'])) return false; // no duration at all, just a date + else $duration = amr_calc_duration ( $event['EventDate'], $event['EndDate']); + } + else $duration = $event['DURATION']; + if (isset($_GET['debugmulti'])) {echo '
                          duration = '; var_dump($duration);} + $days = 0; + if (!empty($duration['days']) and ($duration['days'] >= 1 )) { + $days=$duration['days']; + } + if ( (!empty($duration['hours']) and ($duration['hours'] >= 1 )) or + (!empty($duration['minutes']) and ($duration['minutes'] >= 1 )) or + (!empty($duration['seconds']) and ($duration['seconds'] >= 1 )) ) { + // then we go over 1 day into the next + $days = $days + 1; + } + + if (!empty($duration['weeks']) and ($duration['weeks'] >= 1 )) + $days = $days + (7*$duration['weeks']); + if (isset($_GET['debugmulti'])) echo '
                          The number of days over which to show event '.$event['SUMMARY'].' is = '.$days; + return $days; +} + +function amr_sort_by_two_cols ($col1, $col2, &$data) { // sorts by two columns ascending + // Obtain a list of columns + + foreach ($data as $key => $row) { + // if col1 is an object ? + if (!empty($row[$col1])) + $column1[$key] = $row[$col1]; + else + $column1[$key] = '-1';//will never happen + if (!empty($row[$col2])) + $column2[$key] = $row[$col2]; + else + $column2[$key] = '-999'; + + } + + if (empty ($column1) or empty ($column2)) return $data; + + array_multisort($column1, SORT_ASC, $column2, SORT_DESC, $data); + + return $data; +} + +function amr_sort_by_three_cols ($col1, $col2, $col3, &$data) { // sorts by two columns ascending +global $amr_globaltz; + + // Obtain a list of columns + foreach ($data as $key => $row) { + // if col1 is an object ? + if (!empty($row[$col1])) + $column1[$key] = $row[$col1]; + else + $column1[$key] = '-1';//will never happen + if (!empty($row[$col2])) + $column2[$key] = $row[$col2]; + else + $column2[$key] = '-999'; + if (!empty($row[$col3])) + $column3[$key] = $row[$col3]; + else + $column3[$key] = '-999'; + + } + array_multisort($column1, SORT_ASC, $column2, SORT_DESC, $column2, SORT_ASC, $data); + + return $data; +} + +function amr_check_for_multiday_events (&$events) { //for each event passed, chcek whiether it is a multi day, and if so add dummy days +global $amr_globaltz; + + if (!empty ($events)) { + foreach ($events as $m => $event) { + if (empty($event['EventDate'])) { + if (ICAL_EVENTS_DEBUG) { + echo 'Unexpected empty event date for event '; + print_r($event, true); + } + } + else { + date_timezone_set($event['EventDate'], $amr_globaltz); // may do this earlier (after recurrence though), no harm in twice + $days = amr_event_is_multiday($event); + if (isset($_GET['debugmulti'])) echo '
                          Doing '.$event['id'].' multiday = '.$days.' '; + if ($days > 1 ) { + $day = 1; + if (empty ($events[$m]['Classes'])) $events[$m]['Classes'] = ''; + $events[$m]['Classes'] .= ' firstday '; // already have first day + $events[$m]['dummyYMD'] = $event['EventDate']->format('Ymd'); //numerical so do not need amr_date_format + $events[$m]['MultiDay'] = $day; + //$tempdate = amr_newDateTime(); // create new obect so we do not update the same object + while ($day < ($days)) { // must not be <= because we are plus one anyway - and original is first anyway + if (isset($_GET['debugmulti'])) echo '
                          Do day = '.$day; + $tempdate = new Datetime(); //if cloning dont need tz + $tempdate = clone $event['EventDate']; // copy the current event date + date_modify ($tempdate,'+'.$day.' days'); // adjust days to currenmt midddle date if necessary + // must do like above in case we go over a month + $day = $day+1; + $dummy[$m][$day] = $events[$m]; // copy event data over , but use dumy so we do not reprocess the additions + $dummy[$m][$day]['dummyYMD'] = $tempdate->format('Ymd');; // now set the date for this dummy event //numerical so do not need amr_date_format + $dummy[$m][$day]['MultiDay'] = $day; // flag it as a multi day + // set the classes so we can style multi days + if (isset($_GET['debugmulti'])) echo ' dummyymd= '.$dummy[$m][$day]['dummyYMD']; + if ($day >= $days) { + $dummy[$m][$day]['Classes'] .= ' lastday '; + $dummy[$m][$day]['Classes'] = str_replace ('firstday', '', $dummy[$m][$day]['Classes']); + } + else { + $dummy[$m][$day]['Classes'] = str_replace ('firstday', '', $dummy[$m][$day]['Classes']); + $dummy[$m][$day]['Classes'] .= ' middleday '; + } + } + + } + else { + $events[$m]['dummyYMD'] = $event['EventDate']->format('Ymd'); //numerical so do not need amr_date_format + $events[$m]['MultiDay'] = '0'; // to force non multidays to bottom + } + $events[$m]['dummytime'] = $event['EventDate']->format('His'); //for sorting according to time + } + } + //once we have processed all the events, THEN we can add the dummies in, so we do not reprocess them! + if (!empty($dummy )) { + foreach ($dummy as $m => $dummydays) { + foreach ($dummydays as $k => $event) { + $events[] = $event; + } + } + } + //$events = amr_sort_by_three_cols ('dummyYMD', 'MultiDay', 'dummytime', $events); + $events = amr_sort_by_two_cols ('dummyYMD', 'MultiDay', $events); + if (isset($_GET['debugmulti'])) { + foreach ($events as $i => $e) { + echo '
                          '.$e['id'].' '.$e['EventDate']->format('Ymd').' '.$e['dummyYMD']; + } + } + } + return ($events); +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-config.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-config.php new file mode 100644 index 0000000..d67c74e --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-config.php @@ -0,0 +1,1264 @@ + 'day', + 'MONTHLY' => 'month', + 'YEARLY' => 'year', + 'WEEKLY' => 'week', + 'HOURLY' => 'hour', + 'MINUTELY' => 'minute', + 'SECONDLY' => 'second' + ); + +global $amr_freq, + $amr_freq_unit; + + $amr_freq['DAILY'] = __('Daily', 'amr-ical-events-list'); + $amr_freq['WEEKLY'] = __('Weekly', 'amr-ical-events-list'); + $amr_freq['MONTHLY'] = __('Monthly', 'amr-ical-events-list'); + $amr_freq['YEARLY'] = __('Yearly', 'amr-ical-events-list'); + $amr_freq['HOURLY'] = __('Hourly', 'amr-ical-events-list'); + $amr_freq['RDATE'] = __('on certain dates', 'amr-ical-events-list'); + $amr_freq_unit['DAILY'] = __('day', 'amr-ical-events-list'); + $amr_freq_unit['WEEKLY'] = __('week', 'amr-ical-events-list'); + $amr_freq_unit['MONTHLY'] = __('month', 'amr-ical-events-list'); + $amr_freq_unit['YEARLY'] = __('year', 'amr-ical-events-list'); + $amr_freq_unit['HOURLY'] = __('hour', 'amr-ical-events-list'); + +function amr_ical_initialise () { + +global $amr_options; +global $amr_general; + +global $amr_components; +global $amr_calprop; +global $amr_colheading; +global $amr_compprop; +global $amr_groupings; +global $amr_formats; +global $amr_csize; +global $amr_validrepeatablecomponents; +global $amr_validrepeatableproperties; +global $amr_wkst; +global $amrdf; +global $amrtf; +global $amr_globaltz,$ical_timezone; // amr events uses ical_timezone +global $utczobj; + + +if (!defined ('ICAL_EVENTS_DEBUG')) { + if (isset($_GET["debug"]) + and ((is_user_logged_in() and current_user_can('administrator') ) or amr_is_trying_to_help()) ) + { /* for debug and support - calendar data is public anyway, so no danger*/ + + define('ICAL_EVENTS_DEBUG', true); + } + else + define('ICAL_EVENTS_DEBUG', false); +} + +if (ICAL_EVENTS_DEBUG) { + echo '

                          Debug mode

                          '; + echo 'Other debug parameters that can be used together or separately to isolate problems: '; + echo 'debugexc, rdebug, cdebug, tzdebug, debugall, debugq, memdebug, debugtime
                          '; + if (!defined('AMR_ICAL_VERSION')) define('AMR_ICAL_VERSION', '0'); + echo '
                          key:'.AMR_ICAL_VERSION.'+'.AMR_ICAL_LIST_VERSION.'#'.PHP_VERSION.'-' + .get_bloginfo('version').'+'.get_option( 'blog_charset' ).'+'.mb_internal_encoding(); + echo '@'.ini_get("memory_limit"); + echo ' time:'.ini_get('max_execution_time').' seconds'; +} + + + +$utczobj = timezone_open('UTC'); + +/* set to empty string for concise code */ +if (!defined('AMR_NL')) define('AMR_NL',"\n" ); +if (!defined('AMR_TB')) define('AMR_TB',"\t" ); + +define('AMR_EVENTS_CACHE_TTL', 60 * 20); // 20 mins +define('ICAL_EVENTS_CACHE_TTL', 24 * 60 * 60); // 1 day +define('AMR_MAX_REPEATS', 1000); /* if someone wants to repeat something very frequently from some time way in the past, then may need to increase this */ + + +$amr_ical_image_settings = get_option('amr-ical-images-to-use'); +if (empty($amr_ical_image_settings)) { + $suffix = '_32'; +} +else { + $size = (isset ($amr_ical_image_settings['images_size']) ? $amr_ical_image_settings['images_size'] : '16'); + if (in_array($size, array('16', '32') )) + $suffix = '_'.$size; + else + $suffix = '_32'; +} + +define('TIMEZONEIMAGE', 'timezone'.$suffix.'.png'); +define('MAPIMAGE', 'map'.$suffix.'.png'); +define('CALENDARIMAGE', 'calendar'.$suffix.'.png'); +define('CALENDARADDTOIMAGE', 'calendar_add'.$suffix.'.png'); +define('CALENDARADDSERIESIMAGE','calendar_link'.$suffix.'.png'); +define('ADDTOGOOGLEIMAGE', 'addtogoogle'.$suffix.'.png'); +define('REFRESHIMAGE', 'arrow_refresh'.$suffix.'.png'); + + if ( ! defined( 'WP_PLUGIN_URL' ) ) + define( 'WP_PLUGIN_URL', WP_CONTENT_URL. '/plugins/' ); + +if ( ! defined( 'WP_PLUGIN_DIR' ) ) + define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins/' ); + +$x = str_replace(basename( __FILE__),"",plugin_basename(__FILE__)); + +$url = WP_PLUGIN_URL.'/amr-ical-events-list/'; +$dir = WP_PLUGIN_DIR.'/amr-ical-events-list/'; + +define('ICALLISTPLUGINURL', $url); +define('ICALLISTPLUGINDIR', $dir); +define('ICALSTYLEURL', $url.'css/icallist2017.css'); +define('ICALSTYLEFILE', $dir.'css/icallist2017.css'); +define('ICAL_EDITSTYLEFILE', $dir.'css/a-yours.css'); +define('ICALSTYLEPRINTURL', $url.'css/icalprint.css'); +define('AMRICAL_ABSPATH', $url); +define('IMAGES_LOCATION', AMRICAL_ABSPATH.'images/'); +$uploads = wp_upload_dir(); +//define('ICAL_EVENTS_CACHE_LOCATION',path_join( ABSPATH, get_option('upload_path'))); /* do what wordpress does otherwise weird behaviour here - some folks already seem to have the abs path there. */ +define('ICAL_EVENTS_CACHE_LOCATION',$uploads['basedir']); +define('ICAL_EVENTS_CSS_DIR',ICAL_EVENTS_CACHE_LOCATION.'/css/'); /* where to store custom css so does not get overwritten */ +define('ICAL_EVENTS_CSS_URL',$uploads['baseurl'].'/css/'); /* where to store custom css so does not get overwritten */ +define('ICAL_EVENTS_CACHE_DEFAULT_EXTENSION','ics'); + +$amr_wkst = ical_get_weekstart(); +$amr_validrepeatablecomponents = array ('VEVENT', 'VTODO', 'VJOURNAL', 'VFREEBUSY', 'VTIMEZONE'); +$amr_validrepeatableproperties = array ( // properties that may have multiple entries either in the meta or the icsfile + 'ATTACH', 'ATTENDEE', + 'CATEGORIES','COMMENT','CONTACT', + 'DESCRIPTION', 'DAYLIGHT', + 'EXDATE','EXRULE', + 'FREEBUSY', + 'RDATE', 'RSTATUS','RELATED','RESOURCES','RRULE', + //'SEQ', + 'SUMMARY', 'STATUS', 'STANDARD', + 'TZOFFSETTO','TZOFFSETFROM', + 'URL', + 'XPARAM', 'X-PROP'); +$amr_validrepeatableproperties = apply_filters('amr_valid_repeatable_properties',$amr_validrepeatableproperties); + +$dateformat = str_replace(' ','\&\n\b\s\p\;', get_option('date_format')); + +$amr_formats = array ( + 'Time' => str_replace(' ', '\&\n\b\s\p\;',get_option('time_format')), + 'Day' => 'D, '.$dateformat, +// 'Time' => '%I:%M %p', +// 'Day' => '%a, %d %b %Y', +// 'Month' => '%b, %Y', /* %B is the full month name */ + 'Month' => 'F,Y', + 'Year' => 'Y', + 'Week' => '\W\e\e\k W', +// 'Timezone' => 'T', /* Not accurate enough, leave at default */ + 'DateTime' => $dateformat.' '.get_option('time_format') +// 'DateTime' => '%d-%b-%Y %I:%M %p' /* use if displaying date and time together eg the original fields, */ + ); + +/* used for admin field sizes */ +$amr_csize = array('Column' => '2', 'Order' => '2', 'Before' => '40', 'After' => '40', 'ColHeading' => '10'); +/* the default setup shows what the default display option is */ +$amr_admin_col_head = array ( // Dummy for translation + 'Column' => __('Column','amr-ical-events-list'), + 'Order' => __('Order','amr-ical-events-list'), + 'Before' => __('Before','amr-ical-events-list'), + 'After' => __('After','amr-ical-events-list'), + ); + +} + +function amr_default_fields_to_use () { + + return (array ( + 'SUMMARY'=> 1, + 'DESCRIPTION'=> 1, + 'LOCATION'=> 1, + 'map'=> 1, + 'addevent' => 1, + 'subscribeevent' => 1, + 'subscribeseries' => 1, + 'GEO'=> 0, + 'ATTACH'=> 0, + 'CATEGORIES'=> 1, + 'CLASS'=> 0, + 'COMMENT'=> 0, + 'PERCENT-COMPLETE'=> 0, + 'PRIORITY'=> 0, + 'RESOURCES'=> 0, + 'STATUS'=> 0, + 'EventDate' => 1, /* the instance of a repeating date */ + 'StartTime' => 1, + 'EndDate' => 1, + 'EndTime' => 1, + 'DTSTART'=> 0, + 'DTSTAMP'=> 0, + 'DTEND'=> 0, + 'DUE'=> 0, + 'DURATION'=> 1, + 'allday' => 1, + 'timezone'=> 0, + 'COMPLETED'=> 0, + 'FREEBUSY'=> 0, + 'TRANSP'=> 0, + 'CONTACT'=> 0, + 'ORGANIZER'=> 0, + 'ATTENDEE'=> 0, + 'Attendee-counts'=> 0, + 'RECURRENCE-ID'=> 0, + 'RELATED-TO'=> 0, + 'URL'=> 0, + 'UID'=> 0, + 'EXDATE'=> 0, + 'EXRULE'=> 0, + 'RDATE'=> 0, + 'RRULE'=> 0, + 'ACTION' => 0, + 'CREATED' => 0, + 'LAST-MODIFIED' => 0, + 'SEQUENCE' => 0, + 'REPEAT' => 0, + 'TRIGGER' => 0 + + )); +} + +function amr_getTimeZone($offset) { + $timezones = array( + '-12'=>'Pacific/Kwajalein', + '-11'=>'Pacific/Samoa', + '-10'=>'Pacific/Honolulu', + '-9.5'=>'Pacific/Marquesas', + '-9'=>'America/Juneau', + '-8'=>'America/Los_Angeles', + '-7'=>'America/Denver', + '-6'=>'America/Mexico_City', + '-5'=>'America/New_York', + '-4.5'=>'America/Caracas', + '-4'=>'America/Manaus', + '-3.5'=>'America/St_Johns', + '-3'=>'America/Argentina/Buenos_Aires', + '-2'=>'Brazil/DeNoronha', + '-1'=>'Atlantic/Azores', + '0'=>'Europe/London', + '1'=>'Europe/Paris', + '2'=>'Europe/Helsinki', + '3'=>'Europe/Moscow', + '3.5'=>'Asia/Tehran', + '4'=>'Asia/Baku', + '4.5'=>'Asia/Kabul', + '5'=>'Asia/Karachi', + '5.5'=>'Asia/Calcutta', + '5.75'=>'Asia/Katmandu', + '6'=>'Asia/Colombo', + '6.5'=>'Asia/Rangoon', + '7'=>'Asia/Bangkok', + '8'=>'Asia/Singapore', + '9'=>'Asia/Tokyo', + '9.5'=>'Australia/Darwin', + '10'=>'Pacific/Guam', + '11'=>'Australia/Sydney', + '11.5'=>'Pacific/Norfolk', + '12'=>'Asia/Kamchatka', + '13'=>'Pacific/Enderbury', + '14'=>'Pacific/Kiritimati' + ); + $intoffset = intval($offset); /* to cope with +01.00 */ + $stroffset = strval($intoffset); + if (isset($timezones[$stroffset])) + return ($timezones[$stroffset]); + else return false; + } + +function amr_set_helpful_descriptions () { // used in the admin screen + + $descriptions = array ( + 'X-WR-CALNAME' => '', + 'X-WR-CALDESC' => '', + 'X-WR-TIMEZONE' => '', + 'icsurl' => __('The actual url of the ics file being used'), + 'addtogoogle' => __('A link to allow user to add the whole calendar to their google calendar.','amr-ical-events-list'), + 'icalrefresh' => __('A link to allow user to refetch an ics file','amr-ical-events-list'), + 'LAST-MODIFIED' => __('The time the ics file was last modified','amr-ical-events-list'), + + 'SUMMARY'=> __('WordPress post title or ICS SUMMARY','amr-ical-events-list'), + 'DESCRIPTION'=> __('WordPress content or ICS description','amr-ical-events-list'), + 'excerpt'=> __('WordPress excerpt','amr-ical-events-list'), + 'postthumbnail'=> __('WordPress post thumbnail','amr-ical-events-list'), + 'LOCATION'=> __('Address','amr-ical-events-list'), + 'map'=> __('Link to map','amr-ical-events-list'), + 'addevent' => __('Link to add event to a google calendar','amr-ical-events-list'), + 'subscribeevent' => __('Link to single event ics file','amr-ical-events-list'), + 'subscribeseries' => __('Link to recurring event series ics file','amr-ical-events-list'), + 'GEO'=> __('The latitude and longitude','amr-ical-events-list'), + 'ATTACH'=> __('Links to specified ATTACHMENTS (ics)','amr-ical-events-list'), + + 'CATEGORIES'=> __('WordPress or ics file categories ','amr-ical-events-list'), + 'CLASS'=> __('ics class','amr-ical-events-list'), + 'COMMENT'=> __('ics comment','amr-ical-events-list'), +// 'PERCENT-COMPLETE'=> __('','amr-ical-events-list'), + 'PRIORITY'=> __('ics event priority','amr-ical-events-list'), +// 'RESOURCES'=> __('','amr-ical-events-list'), + 'STATUS'=> __('ics event status','amr-ical-events-list'), + 'EventDate' => __('The date of instance of a repeating date, or the event date','amr-ical-events-list'), + 'StartTime' => __('The time of instance of a repeating date, or the event date','amr-ical-events-list'), + 'EndDate' => __('The date an event instance ends. Blank if same as event date ','amr-ical-events-list'), + 'EndTime' => __('The time an event instance ends. ','amr-ical-events-list'), + 'DTSTART'=> __('The original or first event date of a recurring series','amr-ical-events-list'), +// 'age'=> $dfalse, + 'DTEND'=> __('The original or first event\'s end date of a recurring series','amr-ical-events-list'), + 'DUE'=> __('The due date of a task.','amr-ical-events-list'), + 'DURATION'=> __('The duration of an event.','amr-ical-events-list'), + 'allday' => __('Says "all day" (translated) if the event has full days.','amr-ical-events-list'), + 'COMPLETED'=> __('If a task is completed.','amr-ical-events-list'), + 'FREEBUSY'=> __('Show busy (translated) if the freebusy component is in use.','amr-ical-events-list'), + +// 'TRANSP'=> '', +// 'rsvpwithcomment' => __('Form to rsvp with comment.','amr-ical-events-list'), + + + 'CONTACT'=> __('The contact person if available.','amr-ical-events-list'), + 'ORGANIZER'=> __('The author of the event.','amr-ical-events-list'), + 'ATTENDEE'=> __('Users who are attending.','amr-ical-events-list').' ' + .__('Requires add-on for more than basics.','amr-ical-events-list'), + 'Attendee-counts' => __('Totals of attending by participation status','amr-ical-events-list'), + 'RECURRENCE-ID'=> __('The unique id of a recurrence instance or exception.','amr-ical-events-list'), + 'RELATED-TO'=> '', + 'URL'=> __('The events url as provided by ics file, or the wordpress event permalink.','amr-ical-events-list'), + 'UID'=> __('The unique identifier of the event.','amr-ical-events-list'), + 'EXDATE'=> __('Dates excluded from the recurring series','amr-ical-events-list'), + 'EXRULE'=> __('Exclusion rule - no longer in spec','amr-ical-events-list'), + 'RDATE'=> __('Individual dates on which event is to be repeated','amr-ical-events-list'), + 'RRULE'=> __('The rule for the recurrence of the event.','amr-ical-events-list'), + 'ACTION'=> __('Alarm action.','amr-ical-events-list'), + 'REPEAT'=> __('Alarm repeat.','amr-ical-events-list'), + 'TRIGGER'=> __('Alarm trigger.','amr-ical-events-list'), + 'CREATED'=> __('Date event created.','amr-ical-events-list'), + 'DTSTAMP'=> __('Date event published.','amr-ical-events-list'), + 'SEQUENCE'=> __('Modification level of event.','amr-ical-events-list'), + 'LAST-MODIFIED' => __('Date event last modified.','amr-ical-events-list'), + 'VEVENT'=> __('Events in an ics file','amr-ical-events-list'), + 'VFREEBUSY'=> __('Items in an ics file that indicate busy or available time slots','amr-ical-events-list'), + 'VTODO'=> __('Todo Task Items in an ics file','amr-ical-events-list'), + 'VJOURNAL'=> __('Journal notes in an ics file - no date or time','amr-ical-events-list'), + + ); +/* foreach (array('TENTATIVE','DELEGATED','NEEDS_ACTION','DECLINED','COMPLETED','IN-PROCESS') as $status) { + $descriptions ['ATTENDEE-'.$status] = + __('Requires add-on.','amr-ical-events-list'); + } +*/ + + $descriptions['register'] = __('Add register button. Registration settings can be set as global defaults or per event.','amr-ical-events-list').' '.__('Requires add-on.','amr-ical-events-list'); + $descriptions['going_ornot_ormaybe'] = __('Links to indicate if attending.','amr-ical-events-list').__('Requires add-on.','amr-ical-events-list'); + + $descriptions = apply_filters('amr-modify-possible-fields', $descriptions); + + return ($descriptions); +} + +function amr_define_possible_groupings () { + $taxonomies = amr_define_possible_taxonomies (); + + foreach ($taxonomies as $i=>$taxo) { + $amr_groupings[$taxo] = false; + } + + $amr_groupings = array_merge ($amr_groupings, array ( + "Year" => false, + "Quarter" => false, + "Astronomical Season" => false, + "Traditional Season" => false, + "Western Zodiac" => false, + "Month" => false, + "Week" => false, + "Day"=> false + )); + return ($amr_groupings); +} + +function amr_define_possible_taxonomies () { + // check if we have any taxonomies that we may wish to assign an event to + $taxonomies = get_taxonomies(); + $excluded = array ('nav_menu','link_category', 'post_format') ; + foreach ($taxonomies as $i=>$tax) { + if (!(in_array($tax, $excluded))) $eventtaxonomies[] = $tax; + } + return ($eventtaxonomies); +} + +function amr_set_defaults_for_datetime() { + global $amr_globaltz; + global $ical_timezone; + + if (($a_tz = get_option ('timezone_string') ) and (!empty($a_tz))) { + $amr_globaltz = timezone_open($a_tz); + //date_default_timezone_set($a_tz); + If (isset($_GET['tzdebug'])) { echo '
                          Tz string:'.$a_tz;} + } + else { + + if (($gmt_offset = get_option ('gmt_offset')) and (!(is_null($gmt_offset))) and (is_numeric($gmt_offset))) { + $a_tz = amr_getTimeZone($gmt_offset); + $amr_globaltz = timezone_open($a_tz); + //date_default_timezone_set($a_tz); + if (isset($_GET['tzdebug'])) { echo '

                          Found gmt offset in wordpress options:'.$gmt_offset.'

                          ';} + } + else { + if (isset($_GET['tzdebug'])) { echo '

                          Using php default for timezone

                          ';} + $amr_globaltz = timezone_open(date_default_timezone_get()); // this will give UTC as wordpress ALWAYS uses UTC + } + } + if (empty($amr_globaltz)) { + echo '
                          Error getting and setting global timezone either from wp or the default php '; + } + $ical_timezone = $amr_globaltz; // usedin amr-events aand to save the global tz if it changes do to event timezone use +} + +function amr_set_defaults() { + global $amr_calprop; + global $amr_colheading; + global $amr_compprop; + global $amr_groupings; + global $amr_components; + global $amr_limits,$amr_listtype; + global $amr_formats; + global $amr_general; + global $amr_globaltz; + global $ical_timezone; + global $eventtaxonomies; + global $amr_options,$locale; + + $amr_listtype = '1'; // global default + $amr_options = array ( + 'ngiyabonga' => false, + 'own_css' => false, + 'feed_css' => true, + 'cssfile' => ICALSTYLEURL,//'icallist.css', + 'date_localise' => 'amr', + // do NOT translate here, else either saved texts overwrite translations or saved translations prevent default text being translated. + 'noeventsmessage' => 'No events found within criteria', + 'lookmoremessage' => 'Look for more', + 'lookprevmessage' => 'Look for previous','amr-ical-events-list', + 'resetmessage' => 'Reset','amr-ical-events-list', + 'freebusymessage' => '✖' + ); + + // if they don't have the gettext function the translation scanners will not pick the strings up for inclusion in the .pot/.po file + $fakeforautolangtranslation = array ( + 'noeventsmessage' => __('No events found within criteria','amr-ical-events-list'), + 'lookmoremessage' => __('Look for more','amr-ical-events-list'), + 'lookprevmessage' => __('Look for previous','amr-ical-events-list'), + 'resetmessage' => __('Reset','amr-ical-events-list'), + 'freebusymessage' => __('Busy','amr-ical-events-list'), + __("Year",'amr-ical-events-list'), + __("Quarter",'amr-ical-events-list'), + __("Astronomical Season",'amr-ical-events-list') , + __("Traditional Season",'amr-ical-events-list'), + __("Western Zodiac",'amr-ical-events-list'), + __("Month",'amr-ical-events-list'), + __("Week",'amr-ical-events-list') , + __("Day",'amr-ical-events-list') + ); + + + if (defined('AMR_ICAL_VERSION')) + $amr_options['ngiyabonga'] = true; //do not show credit link + $alreadyhave = false; +// if ($locale === 'en_US' ) $amr_options['date_localise'] = 'none'; // v4.0.9 commented out - multi lingual situations may have en as base, but will need localisation +// else + $amr_options['date_localise'] = 'wp'; + + // + amr_set_defaults_for_datetime(); + + $amr_general = array ( + 'name' => __('Default','amr-ical-events-list'), + 'Description' => __('A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'), + "Default Event URL" => '', + 'ListHTMLStyle' => 'table', + 'customHTMLstylefile' => '' + ); + $amr_limits = array ( + "events" => 30, + "days" => 90, + "cache" => 24, /* hours */ + "eventscache" => 0.5); // must not set start here + + $amr_components = array ( + "VEVENT" => true, + "VTODO" => true, + "VJOURNAL" => false, + "VFREEBUSY" => true + // "VTIMEZONE" => false /* special handling required if we want to process this - for now we are going to use the php definitions rather */ + ); + + + + $amr_groupings = amr_define_possible_groupings(); + + $amr_colheading = array ( + '1' => __('When','amr-ical-events-list'), + '2' => __('What', 'amr-ical-events-list'), + '3' => __('Where', 'amr-ical-events-list') + ); + + $dfalse = array('Column' => 0, 'Order' => 999, 'Before' => '', 'After' => ''); + $dtrue = array('Column' => 1, 'Order' => 1, 'Before' => '', 'After' => ''); + $dtrue2 = array('Column' => 2, 'Order' => 1, 'Before' => '', 'After' => ''); + + + // check if we have any taxonomies that we may wish to assign an event to + $eventtaxonomies = amr_define_possible_taxonomies (); + foreach ($eventtaxonomies as $i=>$tax) { + $eventtaxonomiesprop[$tax] = array('Column' => 2, 'Order' => 200, 'Before' => '', 'After' => ' '); + } + + $amr_calprop = array ( + 'X-WR-CALNAME' => array('Column' => 1, 'Order' => 1, 'Before' => '', 'After' => ''), + 'X-WR-CALDESC' => $dfalse, + 'X-WR-TIMEZONE' => array('Column' => 0, 'Order' => 40, 'Before' => '', 'After' => ''), + 'icsurl' => array('Column' => 2, 'Order' => 20, 'Before' => '', 'After' => ''), + 'addtogoogle' => array('Column' => 0, 'Order' => 10, 'Before' => '', 'After' => ''), + 'icalrefresh' => array('Column' => 0, 'Order' => 30, 'Before' => '', 'After' => ''), + /* for linking to the ics file, not intended as a display field really unless you want a separate link to it, intended to sit behind name, with desc as title */ + 'LAST-MODIFIED' => $dtrue + // 'CALSCALE'=> $dfalse, + // 'METHOD'=> $dfalse, + // 'PRODID'=> $dfalse, + // 'VERSION'=> $dfalse, + // 'X-WR-RELCALID'=> $dfalse + ); + + /* NB need to switch some field s on for initial plugin view. This will be common default for all, then some are customised separately */ + $amr_compprop = array + ( + 'Descriptive' => + array_merge ( + array ( + 'SUMMARY'=> array('Column' => 2, 'Order' => 10, 'Before' => '', 'After' => ''), + 'DESCRIPTION'=> array('Column' => 2, 'Order' => 20, 'Before' => '', 'After' => ''), + 'excerpt'=> array('Column' => 0, 'Order' => 30, 'Before' => '
                          ', 'After' => ''), + 'postthumbnail'=> array('Column' => 0, 'Order' => 35, 'Before' => '
                          ', 'After' => ''), + 'LOCATION'=> array('Column' => 2, 'Order' => 41, 'Before' => '', 'After' => ''), + 'map'=> array('Column' => 2, 'Order' => 42, 'Before' => '', 'After' => ''), + 'addevent' => array('Column' => 3, 'Order' => 1, 'Before' => '', 'After' => ''), + 'subscribeevent' => array('Column' => 3, 'Order' => 2, 'Before' => '', 'After' => ''), + 'subscribeseries' => array('Column' => 3, 'Order' => 3, 'Before' => '', 'After' => ''), + 'GEO'=> $dfalse, + 'ATTACH'=> array('Column' => 2, 'Order' => 150, + 'Before' => __('More info: ','amr-ical-events-list'), + 'After' => '
                          '), + 'CATEGORIES'=> array('Column' => 2, 'Order' => 200, 'Before' => '', 'After' => ''), + 'CLASS'=> array('Column' => 0, 'Order' => 210, 'Before' => '', 'After' => ''), + 'COMMENT'=> $dfalse, + 'PERCENT-COMPLETE'=> $dfalse, + 'PRIORITY'=> array('Column' => 0, 'Order' => 220, 'Before' => '', 'After' => ''), + 'RESOURCES'=> $dfalse, + 'STATUS'=> array('Column' => 0, 'Order' => 230, 'Before' => '', 'After' => ''), + ), + $eventtaxonomiesprop), + 'Date and Time' => array ( + 'EventDate' => array ('Column' => 1, 'Order' => 1, 'Before' => '', 'After' => ''), /* the instance of a repeating date */ + 'StartTime' => array('Column' => 1, 'Order' => 2, 'Before' => ' ', 'After' => ' '), + 'EndDate' => array('Column' => 1, 'Order' => 3, 'Before' => __(' to','amr-ical-events-list').' ', 'After' => ''), + 'EndTime' => array('Column' => 1, 'Order' => 4, 'Before' => ' ', 'After' => ''), + 'DTSTART'=> $dfalse, + // 'age'=> $dfalse, + 'DTEND'=> $dfalse, + 'DUE'=> $dfalse, + 'DURATION'=> array('Column' => 0, 'Order' => 50, 'Before' => '', 'After' => ''), + 'allday' => array('Column' => 0, 'Order' => 4, 'Before' => ' ', 'After' => ''), + 'timezone'=> $dfalse, + 'COMPLETED'=> $dfalse, + 'FREEBUSY'=> $dfalse, + 'TRANSP'=> $dfalse), + + // 'Time Zone' => array ( + // 'TZID'=> $dtrue, /* but only show if different from calendar TZ */ + // 'TZNAME'=> $dfalse, + // 'TZOFFSETFROM'=> $dfalse, + // 'TZOFFSETTO'=> $dfalse, + // 'TZURL'=> $dfalse), + 'Relationship' => array ( + 'CONTACT'=> array('Column' => 0, 'Order' => 350, 'Before' => '', 'After' => ''), + 'ORGANIZER'=> array('Column' => 0, 'Order' => 360, 'Before' => '', 'After' => ''), + 'ATTENDEE'=> array('Column' => 0, 'Order' => 370, 'Before' => '', 'After' => ''), + 'Attendee-counts'=> array('Column' => 0, 'Order' => 380, 'Before' => '', 'After' => ''), + 'RECURRENCE-ID'=> $dfalse, + 'RELATED-TO'=> $dfalse, + //'TEST' => $dfalse, + 'URL'=> array('Column' => 0, 'Order' => 150, + 'Before' => '', + 'After' => ''), + 'UID'=> $dfalse + ), + 'Recurrence' => array ( /* in case one wants for someone reason to show the "repeating" data, need to create a format rule for it then*/ + 'EXDATE'=> $dfalse, + 'EXRULE'=> $dfalse, + 'RDATE'=> $dfalse, + 'RRULE'=> $dfalse + ), + 'Alarm' => array ( + 'ACTION'=> $dfalse, + 'REPEAT'=> $dfalse, + 'TRIGGER'=> $dfalse), + 'Change Management' => array ( /* optional and/or for debug purposes */ + 'CREATED'=> $dfalse, + 'DTSTAMP'=> $dfalse, + 'SEQUENCE'=> $dfalse, + 'LAST-MODIFIED' => $dfalse + ) + ); +// if (function_exists ('amr_indicate_attendance')) { //pluggable does not exist yet + +// } + if (function_exists ('amr_rsvp')) { + $amr_compprop['Relationship']['declined'] //list + = array('Column' => 0, 'Order' => 400, 'Before' => '', 'After' => ''); + $amr_compprop['Relationship']['rsvp'] // action form + = array('Column' => 0, 'Order' => 410, 'Before' => '', 'After' => ''); + $amr_compprop['Relationship']['rsvpwithcomment'] + = array('Column' => 0, 'Order' => 420, 'Before' => '', 'After' => ''); + $amr_compprop['Relationship']['going_ornot_ormaybe'] + = array('Column' => 0, 'Order' => 430, 'Before' => '', 'After' => ''); + $amr_compprop['Relationship']['total_attending'] + = array('Column' => 0, 'Order' => 510, 'Before' => '', 'After' => ''); + $amr_compprop['Relationship']['total_maybe'] + = array('Column' => 0, 'Order' => 510, 'Before' => '', 'After' => ''); + $amr_compprop['Relationship']['total_declined'] + = array('Column' => 0, 'Order' => 510, 'Before' => '', 'After' => ''); + } +// + + + for ($i = 1; $i <= 13; $i++) { /* setup some list type defaults if we have empty list type arrays */ + $amr_options['listtypes'][$i] = new_listtype(); // set up basic + $amr_options['listtypes'][$i] = customise_listtype( $i); /* then tweak */ + } + +// add_option('amr-ical-events-list', $amr_options); // hmm what to do - if we autosave, then they do not pickup new defaults automatically + +} + +/* This is used to tailor the multiple default listing options offered. A new listtype first gets the common default */ +function customise_listtype($i) { /* sets up some variations of the default list type*/ + global $amr_options; + + $amr_options['listtypes'][$i]['Id'] = $i; + switch ($i) { + case 1: + $amr_options['listtypes'][$i]['format']['Day']='D'.'\&\n\b\s\p\;'.'jS'.'\&\n\b\s\p\;'.'M'; + break; + case 2: { + $amr_options['listtypes'][$i]['general']['name'] =__('On Tour','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['Description']=__('Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='table'; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['LOCATION']['Column'] = 2; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['DESCRIPTION']['Column'] = 2; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY']['Column'] = 2; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['addevent']['Column'] = 3; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['subscribeevent']['Column'] = 3; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['subscribeseries']['Column'] = 3; + $amr_options['listtypes'][$i]['heading']['2'] = __('Venue','amr-ical-events-list'); + $amr_options['listtypes'][$i]['heading']['3'] = __('Description','amr-ical-events-list'); + break; + } + case 3: { + $amr_options['listtypes'][$i]['general']['name']=__('Timetable','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['Description']=__('Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='table'; + foreach ($amr_options['listtypes'][$i]['grouping'] as $g=>$v) {$amr_options['listtypes'][$i]['grouping'][$g] = false;} + $amr_options['listtypes'][$i]['grouping']['Day'] = true; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate']['Column'] = 0; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndDate']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime']['Before'] = ' '; + + $amr_options['listtypes'][$i]['compprop']['Descriptive']['addevent']['Order'] = 1; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['subscribeevent']['Order'] = 2; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['subscribeseries']['Order'] = 3; + $amr_options['listtypes'][$i]['heading']['2'] = __('Date','amr-ical-events-list'); + $amr_options['listtypes'][$i]['heading']['2'] = __('Class','amr-ical-events-list'); + $amr_options['listtypes'][$i]['heading']['3'] = __('Room','amr-ical-events-list'); + $amr_options['listtypes'][$i]['format']['Day']='l, jS M'; + break; + } + case 4: { + $amr_options['listtypes'][$i]['general']['name']=__('Widget','amr-ical-events-list'); /* No groupings, minimal */ + $amr_options['listtypes'][$i]['general']['Description']=__('The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='HTML5'; + $amr_options['listtypes'][$i]['format']['Day']='M'.'\&\n\b\s\p\;'.'j'; + $amr_options['listtypes'][$i]['limit'] = array ( "events" => 10, "days" => 90,"cache" => 24); /* hours */ + foreach ($amr_options['listtypes'][$i]['grouping'] as $g => $v) {$amr_options['listtypes'][$i]['grouping'][$g] = false;} + /* No calendar properties for widget - keep it minimal */ + foreach ($amr_options['listtypes'][$i]['calprop'] as $g => $v) + {$amr_options['listtypes'][$i]['calprop'][$g]['Column'] = 0;} + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) + foreach ($v as $g2 => $v2) {$amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] = 0;} + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndDate']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndTime']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY'] = array('Column' => 1, 'Order' => 10, 'Before' => '
                          ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['DESCRIPTION'] = array('Column' => 0, 'Order' => 20, 'Before' => '
                          ', 'After' => ''); + $amr_options['listtypes'][$i]['heading']['1'] = $amr_options['listtypes'][$i]['heading']['2'] = $amr_options['listtypes'][$i]['heading']['3'] = ''; + break; + } + case 5: { + $amr_options['listtypes'][$i]['general']['name']=__('HTML5 Exp 1','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['Description']= __('Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='HTML5table'; + $amr_options['listtypes'][$i]['format']['Day']='j'.'\&\n\b\s\p\;'.'M'; + $amr_options['listtypes'][$i]['grouping']['Day'] = false; + $amr_options['listtypes'][$i]['grouping']['Month'] = true; + $amr_options['listtypes'][$i]['heading']['1'] = ''; + $amr_options['listtypes'][$i]['heading']['2'] = ''; + $amr_options['listtypes'][$i]['heading']['3'] = ''; + $amr_options['listtypes'][$i]['calprop']['X-WR-CALNAME'] + = array('Column' => 0, 'Order' => 10, 'Before' => '', 'After' => ' '); //space + $amr_options['listtypes'][$i]['calprop']['X-WR-CALDESC'] + = array('Column' => 0, 'Order' => 12, 'Before' => ' - ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate'] + = array('Column' => 1, 'Order' => 10, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime'] + = array('Column' => 1, 'Order' => 12, 'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndDate'] + = array('Column' => 1, 'Order' => 14, 'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndTime'] + = array('Column' => 1, 'Order' => 16, 'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY'] + = array('Column' => 1, 'Order' => 18, 'Before' => '

                          ', 'After' => '

                          '); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['DESCRIPTION'] + = array('Column' => 1, 'Order' => 30, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['LOCATION'] + = array('Column' => 1, 'Order' => 40, 'Before' => '
                          ', 'After' => '
                          '); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['addevent']['Column'] = 0; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['map'] + = array('Column' => 1, 'Order' => 41,'Before' => '', 'After' => ''); + break; + } + case 6: { + $amr_options['listtypes'][$i]['general']['name']=__('HTML5 Exp 2','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['Description']=__('An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='HTML5'; + + $amr_options['listtypes'][$i]['calprop']['X-WR-CALNAME'] + = array('Column' => 0, 'Order' => 10, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['calprop']['X-WR-CALDESC'] + = array('Column' => 0, 'Order' => 12, 'Before' => ' - ', 'After' => ''); + $amr_options['listtypes'][$i]['grouping']['Day'] = true; + $amr_options['listtypes'][$i]['grouping']['Month'] = false; + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) { + foreach ($v as $g2 => $v2) { + if ($amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] <> 0) + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] = 1; + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['After'] = ' '; + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['Before'] = ''; + } + } + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY'] + = array('Column' => 1, 'Order' => 18, 'Before' => '

                          ', 'After' => '

                          '); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate'] + = array('Column' => 0, 'Order' => 10, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime']['Order'] = 12; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndDate'] + = array('Column' => 0, 'Order' => 14, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndTime']['Order'] = 16; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['subscribeevent']['Order'] = 20; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['addevent']['Order'] = 22; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['LOCATION'] + = array('Column' => 1, 'Order' => 50, 'Before' => '
                          ', 'After' => '
                          '); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['map'] + = array('Column' => 1, 'Order' => 51,'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['DESCRIPTION'] + = array('Column' => 1, 'Order' => 100, 'Before' => '', 'After' => ''); + + + $amr_options['listtypes'][$i]['heading']['1'] = ''; + $amr_options['listtypes'][$i]['heading']['2'] = ''; + $amr_options['listtypes'][$i]['heading']['3'] = ''; + $amr_options['listtypes'][$i]['format']['Day'] = 'j'.'\&\n\b\s\p\;'.'S,'.'\&\n\b\s\p\;'.'l'; + + break; + } + case 7: { + + $amr_options['listtypes'][$i]['general']['name']=__('EventInfo','amr-ical-events-list'); /* No groupings, minimal */ + $amr_options['listtypes'][$i]['general']['Description']=__('For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['limit'] = array ( "events" => 10, "days" => 366,"cache" => 24); /* hours */ + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='HTML5table'; + $amr_options['listtypes'][$i]['format']['Day']='l, j F Y'; + + $amr_options['listtypes'][$i]['component']['VTODO'] = false; + $amr_options['listtypes'][$i]['component']['VFREEBUSY'] = false; + foreach ($amr_options['listtypes'][$i]['grouping'] as $g => $v) {$amr_options['listtypes'][$i]['grouping'][$g] = false;} + /* No calendar properties for widget - keep it minimal */ + foreach ($amr_options['listtypes'][$i]['calprop'] as $g => $v) + {$amr_options['listtypes'][$i]['calprop'][$g]['Column'] = 0;} + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) + foreach ($v as $g2 => $v2) {$amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] = 0;} + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate']['Order'] = 12; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime']['Order'] = 10; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime']['Before'] = ''; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndDate']['Column'] = 0; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndTime']['Column'] = 0; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['LOCATION']['Order'] = 0; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['map']['Order'] = 0; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY']['Column'] = 0; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['addevent']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['addevent']['Order'] = 1; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['subscribeevent']['Column'] = 1; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['subscribeevent']['Order'] = 1; + $amr_options['listtypes'][$i]['heading']['1'] = $amr_options['listtypes'][$i]['heading']['2'] = $amr_options['listtypes'][$i]['heading']['3'] = ''; + break; + } + case 8: { + $amr_options['listtypes'][$i]['general']['name']=__('Small-Calendar','amr-ical-events-list'); /* No groupings, minimal */ + $amr_options['listtypes'][$i]['general']['Description']=__('The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='smallcalendar'; + $amr_options['listtypes'][$i]['format']['Day']='j'; + $amr_options['listtypes'][$i]['format']['Week']='D'; // 3 letter day of week + $amr_options['listtypes'][$i]['format']['Month']='M Y'; + $amr_options['listtypes'][$i]['limit'] = array ( "events" => 200, "days" => 31,"cache" => 24 ); /* hours */ + + foreach ($amr_options['listtypes'][$i]['grouping'] as $g => $v) { + $amr_options['listtypes'][$i]['grouping'][$g] = false;} + /* No calendar properties for widget - keep it minimal */ + foreach ($amr_options['listtypes'][$i]['calprop'] as $g => $v) + {$amr_options['listtypes'][$i]['calprop'][$g]['Column'] = 0;} + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) + foreach ($v as $g2 => $v2) {$amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] = 0;} + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate'] + = array('Column' => 0, 'Order' => 25, 'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime'] + = array('Column' => 1, 'Order' => 26, 'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndDate']['Column'] = 0; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndTime'] + = array('Column' => 0, 'Order' => 30, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY'] + = array('Column' => 1, 'Order' => 20, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['DESCRIPTION']['Column'] = 0; + $amr_options['listtypes'][$i]['heading']['1'] = $amr_options['listtypes'][$i]['heading']['2'] = $amr_options['listtypes'][$i]['heading']['3'] = ''; + break; + } + case 9: { + $amr_options['listtypes'][$i]['general']['name']=__('Large-Calendar','amr-ical-events-list'); /* No groupings, minimal */ + $amr_options['listtypes'][$i]['general']['Description']= __('The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is.','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='largecalendar'; + $amr_options['listtypes'][$i]['format']['Day']='M j'; + $amr_options['listtypes'][$i]['format']['Time']='G:i'; + $amr_options['listtypes'][$i]['format']['Month']='F Y'; + $amr_options['listtypes'][$i]['format']['Week']='l'; // lowercase l = full text date + $amr_options['listtypes'][$i]['limit'] = array ( "events" => 200, "days" => 31,"cache" => 24 ); /* hours */ + + foreach ($amr_options['listtypes'][$i]['grouping'] as $g => $v) {$amr_options['listtypes'][$i]['grouping'][$g] = false;} + /* No calendar properties for widget - keep it minimal */ +// foreach ($amr_options['listtypes'][$i]['calprop'] as $g => $v) +// {$amr_options['listtypes'][$i]['calprop'][$g]['Column'] = 0;} + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) + foreach ($v as $g2 => $v2) {$amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] = 0;} + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate']= + array('Column' => 2, 'Order' => 10, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime'] + = array('Column' => 2, 'Order' => 15, 'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndDate'] = + array('Column' => 2, 'Order' => 20, 'Before' => ' to ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EndTime'] = + array('Column' => 2, 'Order' => 25, 'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY'] = array('Column' => 1, 'Order' => 1, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['DESCRIPTION'] + = array('Column' => 2, 'Order' => 1, 'Before' => '
                          ', 'After' => '
                          '); + $amr_options['listtypes'][$i]['heading']['1'] = $amr_options['listtypes'][$i]['heading']['2'] = $amr_options['listtypes'][$i]['heading']['3'] = ''; + break; + } + case 10: { + $amr_options['listtypes'][$i]['general']['name']=__('Testing','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['Description']=__('A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='breaks'; + + foreach ($amr_options['listtypes'][$i]['grouping'] as $g => $v) { + $amr_options['listtypes'][$i]['grouping'][$g] = false; + } + $amr_options['listtypes'][$i]['grouping']['Day'] = true; + $amr_options['listtypes'][$i]['grouping']['Month'] = true; + $amr_options['listtypes'][$i]['compprop'][] = apply_filters('amr_ics_component_properties', array()); + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) { + foreach ($v as $g2 => $v2) { + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['After'] = '
                          '; + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['Before'] = ''; + if ($v2['Column'] == 0) { + $amr_options['listtypes'][$i]['compprop'][$g][$g2] + = array('Column' => 1, 'Order' => 99, + 'Before' => ''.$g2.': ', + 'After' => "
                          "); + } + else { + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['Before'] + = ''.$g2.': '; + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] + = 1; + } + + } + } + + +//---------------------------------------------------------------------------------------------------- + foreach ($amr_options['listtypes'][$i]['calprop'] as $g => $v) { + $amr_options['listtypes'][$i]['calprop'][$g] = + array('Column' => 3, 'Order' => 1, 'Before' => '', 'After' => ''); + } + $amr_options['listtypes'][$i]['calprop']['X-WR-CALNAME']['Column'] = 1; + $amr_options['listtypes'][$i]['calprop']['X-WR-CALDESC']['Column'] = 1; + $amr_options['listtypes'][$i]['calprop']['X-WR-CALDESC']['Before'] = ' '; + foreach ($amr_options['listtypes'][$i]['component'] as $g=>$v) { + $amr_options['listtypes'][$i]['component'][$g] = true; + } + $amr_options['listtypes'][$i]['heading']['1'] = ''; + $amr_options['listtypes'][$i]['heading']['2'] = ''; + $amr_options['listtypes'][$i]['heading']['3'] = ''; + $amr_options['listtypes'][$i]['format']['Day'] = 'D, F j, Y'; + + break; + } + case 11: { + $amr_options['listtypes'][$i]['general']['name']=__('Weekly Horizontal','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['Description']= + __('Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time.','amr-ical-events-list') + .__(' If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='weekscalendar'; + $amr_options['listtypes'][$i]['limit'] = array ( "events" => 100, "days" => 14,"cache" => 24); /* hours */ + $amr_options['listtypes'][$i]['format']['Time']='H:i'; + $amr_options['listtypes'][$i]['format']['Day']= + 'D'.'\&\n\b\s\p\;'.'j'; //'M'; + foreach ($amr_options['listtypes'][$i]['grouping'] as $g=>$v) {$amr_options['listtypes'][$i]['grouping'][$g] = false;} + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) { + foreach ($v as $g2 => $v2) { + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] = 0; + } + } + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime'] + = array('Column' => 1, 'Order' => 5, 'Before' => '', 'After' => ' '); + + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY'] + = array('Column' => 1, 'Order' => 20, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['DESCRIPTION'] + = array('Column' => 2, 'Order' => 1, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['DURATION']['Column']=2; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['LOCATION'] + = array('Column' => 2, 'Order' => 20, 'Before' => '', 'After' => ''); + + $amr_options['listtypes'][$i]['heading']['1'] = $amr_options['listtypes'][$i]['heading']['2'] = $amr_options['listtypes'][$i]['heading']['3'] = ''; + + + break; + } + case 12: { + $amr_options['listtypes'][$i]['general']['name']=__('Weekly Vertical','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['Description']= + __('Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons.','amr-ical-events-list') + .__(' If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='table'; + $amr_options['listtypes'][$i]['limit'] = array ( "events" => 100, "days" => 7,"cache" => 24 ); /* hours */ + $amr_options['listtypes'][$i]['format']['Time']='g:i'.'\&\n\b\s\p\;'.'a'; + $amr_options['listtypes'][$i]['format']['Day']= + 'D,j'.'\&\n\b\s\p\;'.'M'; // to avoid tabel cell wrap + foreach ($amr_options['listtypes'][$i]['grouping'] as $g=>$v) {$amr_options['listtypes'][$i]['grouping'][$g] = false;} + $amr_options['listtypes'][$i]['grouping']['Day'] = true; + + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) { + foreach ($v as $g2 => $v2) { + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] = 0; + } + } + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate'] + = array('Column' => 0, 'Order' => 4, 'Before' => '', 'After' => ' '); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime'] + = array('Column' => 1, 'Order' => 5, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['allday'] + = array('Column' => 1, 'Order' => 6, 'Before' => ' ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY'] + = array('Column' => 2, 'Order' => 20, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Descriptive']['excerpt'] + = array('Column' => 3, 'Order' => 1, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['DURATION']['Column']=3; + $amr_options['listtypes'][$i]['compprop']['Date and Time']['LOCATION'] + = array('Column' => 3, 'Order' => 20, 'Before' => '', 'After' => ''); + + $amr_options['listtypes'][$i]['heading']['1'] = $amr_options['listtypes'][$i]['heading']['2'] = $amr_options['listtypes'][$i]['heading']['3'] = ''; + + + break; + } + case 13: { + foreach ($amr_options['listtypes'][$i]['calprop'] as $g => $v) + {$amr_options['listtypes'][$i]['calprop'][$g]['Column'] = 0;} + foreach ($amr_options['listtypes'][$i]['compprop'] as $g => $v) { + foreach ($v as $g2 => $v2) { + $amr_options['listtypes'][$i]['compprop'][$g][$g2]['Column'] = 0; + } + } + $amr_options['listtypes'][$i]['general']['name']=__('Event Master','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['Description']= + __('Grouped by category, intended to be used with no recurrences','amr-ical-events-list') + .__(' If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. ','amr-ical-events-list'); + $amr_options['listtypes'][$i]['general']['ListHTMLStyle']='HTML5table'; + $amr_options['listtypes'][$i]['limit'] = array ( "events" => 200, "days" => 365,"cache" => 24 ); /* hours */ + $amr_options['listtypes'][$i]['format']['Time']='g:i'.'\&\n\b\s\p\;'.'a'; + $amr_options['listtypes'][$i]['format']['Day']= + 'D,j'.'\&\n\b\s\p\;'.'M'; // to avoid tabel cell wrap + foreach ($amr_options['listtypes'][$i]['grouping'] as $g=>$v) {$amr_options['listtypes'][$i]['grouping'][$g] = false;} + $amr_options['listtypes'][$i]['grouping']['category'] = 1; + $amr_options['listtypes'][$i]['compprop']['Descriptive']['SUMMARY'] + = array('Column' => 1, 'Order' => 10, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['EventDate'] + = array('Column' => 2, 'Order' => 10, 'Before' => 'Next: ', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['StartTime'] + = array('Column' => 3, 'Order' => 20, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['DURATION'] + = array('Column' => 4, 'Order' => 30, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['subscribeseries'] + = array('Column' => 5, 'Order' => 20, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['compprop']['Date and Time']['register'] + = array('Column' => 5, 'Order' => 10, 'Before' => '', 'After' => ''); + $amr_options['listtypes'][$i]['heading']['1'] + = $amr_options['listtypes'][$i]['heading']['2'] + = $amr_options['listtypes'][$i]['heading']['3'] + = ''; + + + break; + } + + } + + //--- temp fix before re editing all above, to keep compatibility with older versions.. will eventually drop away the old version. + + $amr_options['listtypes'][$i]['compprop'] = amr_remove_array_level ($amr_options['listtypes'][$i]['compprop']); +// so now we have both versions - need to unset the other, but can leave for now. + + + return ( $amr_options['listtypes'][$i]); +} + +function new_listtype() { + global $amr_calprop, + $amr_colheading, + $amr_compprop, + $amr_groupings, + $amr_components, + $amr_limits, + $amr_formats, + $amr_general; + + $amr_newlisttype = (array + ( + 'general' => $amr_general, + 'format' => $amr_formats, + 'heading' => $amr_colheading, + 'calprop' => $amr_calprop, + 'component' => $amr_components, + 'grouping' => $amr_groupings, + 'compprop' => $amr_compprop, + 'limit' => $amr_limits, + 'Id' => '1' + ) + ); + return $amr_newlisttype; + } + +function Quarter ($D) +{ /* Quarters can be complicated. There are Tax and fiscal quarters, and many times the tax and fiscal year is different from the calendar year */ + /* We could have used the function commented out for calendar quarters. However to allow for easier variation of the quarter definition. we used the limits concept instead */ + /* $D->format('Y').__(' Q ').(ceil($D->format('n')/3)); */ +return date_season('Quarter', $D); +} +function Meteorological ($D) +{return date_season('Meteorological', $D); } +function Astronomical_Season ($D) +{return date_season('Astronomical', $D); } +function Traditional_Season ($D) +{return date_season('Traditional', $D); } +function Western_Zodiac ($D){ +return date_season('Zodiac', $D); } + +function date_season ($type='Meteorological',$D) { + /* Receives ($Dateobject and returns a string with the Meterological season by default*/ + /* Note that the limits must be defined on backwards order with a seemingly repeated entry at the end to catch all */ + + if (!(isset($D))) $D = amr_newDateTime(); + $Y = amr_format_date('Y',$D); + $limits ['Quarter']=array( + + /* for different quarters ( fiscal, tax, etc,) change the date ranges and the output here */ + '/12/31'=> $Y.' Q1', + '/09/31'=> $Y.' Q4', + '/06/30'=> $Y.' Q3', + '/03/31'=> $Y.' Q2', + '/01/00'=> $Y.' Q1', + ); + + $limits ['Meteorological']=array( + '/12/01'=>'N. Winter, S. Summer', + '/09/01'=>'N. Fall, S. Spring', + '/06/01'=>'N. Summer, S. Winter', + '/03/01'=>'N. Spring, S. Autumn', + '/01/00'=>'N. Winter, S. Summer' + ); + + $limits ['Astronomical']=array( + '/12/21'=>'N. Winter, S. Summer', + '/09/23'=>'N. Fall, S. Spring', + '/06/21'=>'N. Summer, S. Winter', + '/03/21'=>'N. Spring, S. Autumn', + '/01/00'=>'N. Winter, S. Summer' + ); + + $limits ['Traditional']=array( + /* actual dates vary , so this is an approximation */ + '/11/08'=>'N. Winter, S. Summer', + '/08/06'=>'N. Fall, S. Spring', + '/06/05'=>'N. Summer, S. Winter', + '/02/05'=>'N. Spring, S. Autumn', + '/01/00'=>'N. Winter, S. Summer' + ); + + $limits ['Zodiac']=array( + /* actual dates vary , so this is an approximation */ + '/12/22'=>'Capricorn', + '/11/22'=>'Sagittarius', + '/10/23'=>'Scorpio', + '/09/23'=>'Libra', + '/08/23'=>'Virgo', + '/07/23'=>'Leo', + '/06/21'=>'Cancer', + '/05/21'=>'Gemini', + '/04/20'=>'Taurus', + '/03/21'=>'Aries', + '/02/19'=>'Pisces', + '/01/20'=>'Aquarius', + '/01/00'=>'Capricon', + ); + + /* get the current year */ + foreach ($limits[$type] AS $key => $value) + { + /* add the current year to the limit */ + $limit = $key; + $input = amr_format_date ('/m/d', $D); + /* if date is later than limit, then return the current value, else continue to check the next limit */ + + if ($input > $limit) { + return $value; + } + } +} + + +function amr_getset_options ($reset=false) { + /* get the options from wordpress if in wordpress + if no options, then set defaults */ + global $locale, $amr_options; /* has the initial default configuration */ + /* set up some global config initially */ + + amr_set_defaults(); + + /* we are requested to reset the options, so delete and update with default */ + if ($reset) { + echo '

                          '; + _e('Resetting options...', 'amr-ical-events-list'); + if (($d = delete_option('amr-ical-events-list')) or + ($d = delete_option('AmRiCalEventList')) or + ($d = delete_option('amr-event-fields-in-use'))) + _e('Options Deleted...','amr-ical-events-list'); + else + _e('Option was not saved before or error deleting option...','amr-ical-events-list'); + delete_option('amr_ical_images_to_use'); + echo '

                          '; + } + else {/* *First setup the default config */ +/* general config */ + $amr_options = get_option('amr-ical-events-list'); + + if (!empty($amr_options)) { + $alreadyhave = true; + //if had one global option, now split into separate ? + if (!empty($amr_options['no_types'])) { + //and !empty($amr_options['1'])) { // then we have old list types, lets convert to new + for ($i = 1; $i <= $amr_options['no_types']; $i++) { + $amr_options['listtypes'][$i] = $amr_options[$i]; + $amr_options['listtypes'][$i]['compprop'] = amr_remove_array_level ($amr_options['listtypes'][$i]['compprop']); + unset ($amr_options[$i]); + } + + unset ($amr_options['no_types']); // no longer relevant + if (is_admin()) { // else might be on a front end page + amr_notice_listtypes_converted(); + update_option('amr-ical-events-list', $amr_options); + } + + } + } + else { // really old - can delete one day? + if ($alreadyhave = get_option('AmRiCalEventList')) { + delete_option('AmRiCalEventList'); + add_option('amr-ical-events-list', $alreadyhave); + _e(' Converting option key to lowercase','amr-ical-events-list'); + } + } + } + if (!(isset($alreadyhave)) or (!$alreadyhave) ) + amr_set_defaults(); + + if (!empty($amr_options['usehumantime'])) { + add_filter ('amr_human_time','amr_human_time'); + } + return ($amr_options); + } + +function amr_ical_apply_version_upgrades ($prev_version) { +global $amr_options; + + // must do oldest updates first + if (version_compare ($prev_version,'4.0.19','<')) { + if (!isset($amr_options['lookprevmessage']) ) { // can be empty later + $amr_options['lookprevmessage'] = __('Look for Previous','amr-ical-events-list'); // for compatibility + $amr_options['resetmessage'] = __('Reset','amr-ical-events-list'); + } + if (!isset($amr_options['usehumantime'])) // can be false after admin has set the options + $amr_options['usehumantime'] = true; + } + if (version_compare ($prev_version,'4.0.29','<')) { + if (!isset($amr_options['freebusymessage']) ) { // can be empty later + $amr_options['freebusymessage'] = __('Busy','amr-ical-events-list'); // force translation to be recorded + $amr_options['freebusymessage'] = '✖'; + } + + } + // later delete the old multiple options and resave as one for reduced db queries + +} + +function amr_remove_array_level ($compprop) { + $newcompprop = array(); + foreach ($compprop as $g => $v) { // remove one level + + $newcompprop = array_merge ($newcompprop, $v); + } + $newcompprop = amr_sort_by_two_cols_asc('Column','Order',$newcompprop); + + return($newcompprop); +} + + +?> \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-events-list-main.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-events-list-main.php new file mode 100644 index 0000000..3fb5852 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-events-list-main.php @@ -0,0 +1,2513 @@ +')) { + echo( '

                          '.__('Minimum Php version '.AMR_PHPVERSION_REQUIRED.' required for Amr Ical Events. Your version is '.PHP_VERSION,'amr-ical-events-list'). '

                          '); + } +if (!(class_exists('DateTime'))) { + echo '

                          '. + __ ('The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2.','amr-ical-events-list') + .'

                          ';} + +/* Dropping support for php4 see http://acko.net/blog/php-clone */ + +amr_set_defaults_for_datetime(); // needed all over the place + +//add_action ('after_setup_theme','amr_load_pluggables'); +//add_action ('wp','amr_load_pluggables', 10); //move it later, No not good , plugins that apply the filters will nothave it then, so will fail +add_action ('plugins_loaded','amr_load_pluggables', 99); //move it later, No not good , plugins that apply the filters will nothave it then + +function amr_load_pluggables() { + require_once('amr-pluggable.php'); +} + +function amr_ical_events_list_record_version() { + global $amr_options; + if (empty($amr_options['amr-ical-events-list-version'])) + $amr_options['amr-ical-events-list-version'] = 1.0; + if ((version_compare(AMR_ICAL_LIST_VERSION , $amr_options['amr-ical-events-list-version'], '>'))) { + amr_ical_apply_version_upgrades ($amr_options['amr-ical-events-list-version']); + $amr_options['amr-ical-events-list-version'] = AMR_ICAL_LIST_VERSION; + $result = update_option( 'amr-ical-events-list', $amr_options); + return($result); + } +} + +function ical_ordinalize( $num ){ + + if (in_array($num,array(11, 12, 13))) + return sprintf(_x('%s th',' the 11, 12 or 13th ' ,'amr-ical-events-list'), $num); + + switch( substr($num,-1) ){ + + case 1 : if ($num<10) return $num; /* every 1 not every first */ + + else return + sprintf(_x('%s st',' the twenty first etc ' ,'amr-ical-events-list'), $num); + + case 2 : return + sprintf(_x('%s nd',' the second ' ,'amr-ical-events-list'), $num); + + case 3 : return + sprintf(_x('%s rd',' the third ' ,'amr-ical-events-list'), $num); + + default : return + sprintf(_x('%s th',' the nth ' ,'amr-ical-events-list'), $num); + + } + +} + +function ical_ordinalize_words( $i ){ + + if ($i == 1) return( __('the first','amr-ical-events-list')); + + else if ($i == 0) return (__('every','amr-ical-events-list')); + + else if ($i == -1) return ( __('the last','amr-ical-events-list')); + + else if ($i < 0) return ( sprintf (__('the %s last', 'amr-ical-events-list'), ical_ordinalize( -$i ))); + + else return ( sprintf (__('the %s', 'amr-ical-events-list'), ical_ordinalize( $i ))); + +} + +function amr_fulldaytext () { +global $wp_locale; + $fulldayofweek = array ( + + 'MO'=> $wp_locale->get_weekday('1'), + + 'TU'=>$wp_locale->get_weekday('2'), + + 'WE'=>$wp_locale->get_weekday('3'), + + 'TH'=>$wp_locale->get_weekday('4'), + + 'FR'=>$wp_locale->get_weekday('5'), + + 'SA'=>$wp_locale->get_weekday('6'), + + 'SU'=>$wp_locale->get_weekday('0') + + ); + foreach ($fulldayofweek as $i => $d) { /* cater for lack of translations - somehow came back blank for non english */ + + if (empty($d )) $fulldayofweek[$i] = ucfirst(strtolower($i)); + + } + return ($fulldayofweek); +} + +function amr_weekdayabbr () { +global $wp_locale; + + $daysofweek = array ( /* use the wordpress localisation functions so we do not have to retranslate ourselevs */ + + 'MO'=> $wp_locale->get_weekday_abbrev(__('Monday')), + + 'TU'=> $wp_locale->get_weekday_abbrev(__('Tuesday')), + + 'WE'=> $wp_locale->get_weekday_abbrev(__('Wednesday')), + + 'TH'=> $wp_locale->get_weekday_abbrev(__('Thursday')), + + 'FR'=> $wp_locale->get_weekday_abbrev(__('Friday')), + + 'SA'=> $wp_locale->get_weekday_abbrev(__('Saturday')), + + 'SU'=> $wp_locale->get_weekday_abbrev(__('Sunday')), + + ); + + foreach ($daysofweek as $i => $d) { + + if (empty($d )) $daysofweek[$i] = $i; + + } + return ($daysofweek); +} + +function amr_dayofyear2date( $year, $DayInYear ) { /* Year if format YYYY, Day in year 1 to 366 */ + + $d = amr_newDateTime($year.'-01-01'); + date_modify($d, '+'.($DayInYear-1).' days'); + +return ($d); + +} + +function amr_get_week_no_with_wkst ($date, $wkst) { /* only copes with WKST MO, SU, SA. returns 0 if in l ast year */ + + $yearday = $date->format('z')+1; + $jan1c = amr_newDateTime($date->format('Y').'-01-01'); + /* GET week 1 day 1 for our week start ============================================== */ + $dw = $jan1c->format('w') + 1; /* 0 (for Sunday) through 6 (for Saturday) change to => 1 to 7 */ + if ($wkst === 'MO') $dw = $dw-1; + else if ($wkst === 'SA') $dw = (($dw + 1) % 7); /* remainder */ + if ($dw == 0) $dw=7; + if ($dw <=4) $adj = -$dw + 1; + else $adj = -$dw + 8; + $w1d1 = new Datetime(); //if cloning dont need tz + $w1d1 = clone $jan1c; + if (!($adj == 0)) date_modify($w1d1,$adj.' days' ); + /* So now we have w1d1 ?============================================== */ + $w1d1yearday = $w1d1->format('z')+1; + if ($yearday >= 4 ) { + if ($w1d1 < $jan1c) {/* the start is in the prev year */ + $w2d1 = $w1d1; date_modify ($w2d1, '+7 days'); /* to bring it to this year */ + $w2d1yearday = $w2d1->format('z')+1; + $weekno = floor((($yearday - $w2d1yearday)/7)+2); + } + else + $weekno = floor((($yearday - $w1d1yearday)/7)+1); + } + else { + if ($yearday < $w1d1yearday) $weekno = 0 ;/* ie last year */ + else $weekno = 1; + } + return($weekno); +} + +function amr_output_icalduration ($duarray) { + $d = ''; + $t = ''; + if (!empty($duarray['weeks'])) $d = (int)$duarray['weeks'].'W'; + if (!empty($duarray['days'])) $d .= (int)$duarray['days'].'D'; + if (!empty($duarray['hours'])) $t .= (int)$duarray['hours'].'H'; + if (!empty($duarray['minutes'])) $t .= (int)$duarray['minutes'].'M'; + if (!empty($duarray['seconds'])) $t .= (int)$duarray['seconds'].'S'; + if (!empty($t)) $t = 'T'.$t; + return ('P'.$d.$t); +} + +function amr_parseRepeats (&$event) { + +global $amr_globaltz; + + if (!empty($event['RRULE'])) /* and is_string($event['RRULE'])) */ + $event['RRULE'] = amr_parseRRULE($event['RRULE']); + + if (!empty($event['EXRULE'])) /* and is_string($event['EXRULE'])) */ + $event['EXRULE'] = amr_parseRRULE($event['EXRULE']); + if (!empty($event['RDATE'])) {/*and is_string($event['RDATE'])) */ + $event['RDATE'] = amr_parseRDATE($event['RDATE'],$amr_globaltz ); + $event['RDATE'][] = $event['DTSTART']; // 201406 must include DTSTART in RDATE + + } + if (!empty($event['EXDATE'])) /*and is_string($event['EXDATE']))*/ + $event['EXDATE'] = amr_parseRDATE($event['EXDATE'],$amr_globaltz ); + + return ($event); + +} + +function amr_get_googletime($time) { + if (!(is_object($time))) return($time); + $t = clone $time; /* if you get a parse error, then you are not on PHP 5! */ + $t->setTimezone(new DateTimeZone("UTC")); // google wants UTC + $text = $t->format("Ymd\THis\Z"); + + return ($text); + + } + +function amr_get_googledate($time) { + if (!(is_object($time))) return($time); + $t = clone $time; + $t->setTimezone(new DateTimeZone("UTC")); // google wants UTC + return ($t->format("Ymd")); + + } + +function amr_get_googleeventdate($e) { +/* google has updated functioning to use ics end date for all day events (note instructions at +http://support.google.com/calendar/bin/answer.py?hl=en&answer=2476685 are wrong - they show same date for end date for 1 day event. +Testing shows one can also leave enddate blank for single day events. No more - now need an enddate +NOTE: must all be in UTC!! + */ + + if (!isset ($e['EventDate'] )) + return (''); /* we have no start date or start time */ + else { + // we have a start date + if (!isset ($e['allday']) or (!($e['allday'] === 'allday') )) { //201503 - all day not always set + // not an all day + + $gstart = amr_get_googletime ($e['EventDate']); + if (isset ($e['EndDate'])) { + $gend = '/'.amr_get_googletime ($e['EndDate']); + + } + else $gend = '/'.$gstart; // no end date + + + + } + else { // it is an all day + + $gstart = amr_get_googledate ($e['EventDate']); + if (isset ($e['EndDate'])) { + if ($e['EndDate'] == $e['EventDate']) + $gend = '/'.$gstart; + else { + $ics_enddate = clone $e['EndDate']; + date_modify($ics_enddate,'+1 day'); + $gend = '/'.amr_get_googledate ($ics_enddate); + } + } + else $gend = '/'.$gstart; // no end date + } + } + + return ($gstart.$gend); + + + } + +function amr_get_css_url_choices () { // only called from admin screen + $dir = amr_get_css_path(); + $css_url = ICAL_EVENTS_CSS_URL; + + $files = amr_get_files($dir, '.css'); + + if (!empty($files)) { + foreach ($files as $i => $f) { + $files[$i] = ICAL_EVENTS_CSS_URL.$f; + } + } + $files[] = ICALLISTPLUGINURL.'css/icallist.css'; + $files[] = ICALLISTPLUGINURL.'css/icallist2017.css'; + return($files); +} + +function amr_get_css_path() { /** Attempt to create a css directory if it doesn't exist. + * Return the path if successful.*/ + $css_path = ICAL_EVENTS_CSS_DIR; + return $css_path; + +/* 20171010 - do not offer this custom css anymore - they should use other options + $css_file = ($css_path.'custom_icallist.css'); + if (!file_exists($css_path)) { // if there is no folder or safe mode enabled + if (ini_get('safe_mode')) { // safe mode must be enabled , give up + return false; + } + if (wp_mkdir_p($css_path, 0777)) { + // printf('
                          '.__('A css directory %s has been created','amr-ical-events-list'),''.$css_path.''); + } + else { + echo( '
                          '.sprintf(__('Error creating custom css directory %s. Please check permissions','amr-ical-events-list'),$css_path)); + return false; + } + } + if (!file_exists($css_file)) { // if there is no starting css file, then copy the plugin version over + if (ini_get('safe_mode')) { // safe mode must be enabled , give up + return false; + } + else amr_copy_file(ICALLISTPLUGINDIR.'css/icallist2017.css',$css_file ); + } + return $css_path; +*/ + } + +function amr_copy_file( $from, $to) { + if ( !copy($from ,$to ) ) { + + // If copy failed, chmod file to 0644 and try again. + + chmod($to, 0644); + + if ( !copy($from , $to) ) + + return (new WP_Error('copy_failed', __('Could not copy file.', 'amr-ical-events-list'), $to )); + + } + + chmod($to, 0644); +} + +function amr_ical_events_style() /* check if there is a style spec, and file exists */{ +global $amr_options; +global $amr_listtype; + // 20171010 do not do here - don't need the dir // $icalstyledir = amr_get_css_path(); // create the custom css path if it exists ICALSTYLEURL; + $icalstyleurl = ICALSTYLEURL; + + if ($amr_options = get_option ('amr-ical-events-list')) { //if we have stored options + + if ((isset ($amr_options['own_css'])) and !($amr_options['own_css'])) { + if (empty($amr_options['cssfile'])) + $icalstyleurl = ICALSTYLEURL; + else {/* check if old saved option */ + if (stristr($amr_options['cssfile'],'http://') + or stristr($amr_options['cssfile'],'https://')) //what if https + $icalstyleurl = $amr_options['cssfile']; + else + $icalstyleurl = ICALLISTPLUGINURL.'css/'.$amr_options['cssfile']; + } + wp_register_style('amr-ical-events-list', $icalstyleurl, array( ), 1.0 , 'all' ); + wp_enqueue_style('amr-ical-events-list' ); + wp_register_style('amr-ical-events-list_print', ICALSTYLEPRINTURL, array(), 1.0 , 'print'); + wp_enqueue_style('amr-ical-events-list_print'); + } + // else do NOT load css + } + else { // we don't have stored options ?! just use defaults + wp_register_style('amr-ical-events-list', $icalstyleurl, array( ), 1.0 , 'all' ); + wp_enqueue_style('amr-ical-events-list' ); + wp_register_style('amr-ical-events-list_print', ICALSTYLEPRINTURL, array(), 1.0 , 'print'); + wp_enqueue_style('amr-ical-events-list_print'); + } + +} + +function amr_sort_by_two_cols_asc ($col1, $col2, &$data) { // sorts by two columns ascending + // Obtain a list of columns + + foreach ($data as $key => $row) { + // if col1 is an object ? + + if (!empty($row[$col1])) + $column1[$key] = $row[$col1]; + else + $column1[$key] = '99999';//will never happen + if (!empty($row[$col2])) + $column2[$key] = $row[$col2]; + else + $column2[$key] = '99999'; + + + } + + array_multisort($column1, SORT_ASC, $column2, SORT_ASC, $data); + + return $data; +} +/* -------------------------------------------------- sort through the options that define what to display in what column, in what sequence, delete the non display and sort column and sequenc */ +function prepare_order_and_sequence ($orderspec){ +// foreach ($amr_options[$format]['compprop'] as $key => $row) + foreach ($orderspec as $key => $row) { + if (( isset ($row['Column'])) && (!($row['Column']== "0") )) + $order[$key] = $row; + } + if (!isset($order)) return; /* Nothing is to be displayed */ + // Prepare to sort order for printing + + foreach ($order as $key => $row) { + if ( isset ($row['Column'])) { + $col[$key] = $row['Column']; + $seq[$key] = $row['Order']; + } + } + + array_multisort($col, SORT_ASC, $seq, SORT_ASC, $order); + + foreach ($order as $k => $v) {/* for each key, prepare once*/ + $order[$k]['Before'] = stripslashes ($v['Before']); + $order[$k]['After'] = stripslashes ($v['After']); + } +// now re structure into columns rather than what we had before + $columns = array(); + foreach ($order as $k => $spec) { + $columns[$spec['Column']][$k] = $spec; + } + return ($columns); +// return ($order); +} + +function ical_get_weekstart() { + + $wkst = get_option('start_of_week'); /* Somewhat annoyingly, wp has sunday as 0 and sat as 6 !! */ + + if (!$wkst) $wkst = 0; /* only becuase this is wp default */ + + $ical_day_of_week = array ( /* translate from wp day of week to ical day of week */ + + '1' => 'MO', + + '2' => 'TU', + + '3' => 'WE', + + '4' => 'TH', + + '5' => 'FR', + + '6' => 'SA', + + '0' => 'SU'); + + $wkst = $ical_day_of_week[$wkst]; + + return ($wkst); + +} + +function get_oldweekdays ($d) { /* Looks like it works compared to http://www.searchforancestors.com/utility/dayofweek.html and if not, an aproximation is better than nothing !*/ + + $dummy = new Datetime(); //if cloning dont need tz + $dummy = clone $d; + date_modify($dummy,'+91500 weeks'); /* a guess from when the date started breaking, plus some extra*/ + $w = $dummy->format('w'); + return($w); +} + +function amr_same_time ($d1, $d2) { + if ($d1->format('YmdHis') === $d2->format('YmdHis')) return (true); //v 4.0.9 maybe should check whole day ? + else return (false); +} + +function amr_amp ($content) { //trying to avoid double ? + return (str_replace('&','&',str_replace('&','&',$content) )); +} + +function amr_daysDifference( $beginDate, $endDate){ /* *** what if dates are in different timezones, and somehow cross over the days - will that ever happen?? */ + + //explode the date by "-" and storing to array + if (!(is_object($beginDate) and (is_object($endDate)))) return(false); + $date_parts1=explode("-", $beginDate->format('n-j-Y')); + + $date_parts2=explode("-", $endDate->format('n-j-Y')); + + //gregoriantojd() Converts a Gregorian date to Julian Day Count - month/day/year + + $start_date=gregoriantojd($date_parts1[0], $date_parts1[1], $date_parts1[2]); + + $end_date=gregoriantojd($date_parts2[0], $date_parts2[1], $date_parts2[2]); + + return ($end_date - $start_date); + +} + +function amr_secondsDifference( $beginDate, $endDate){ /* *** what if dates are in different timezones, and somehow cross over the days - will that ever happen?? */ + + //explode the date by "-" and storing to array + if (!(is_object($beginDate) and (is_object($endDate)))) return(false); + $sec1 = (int) $beginDate->format('U'); + + $sec2 = (int) $endDate->format('U'); + + return ($sec2-$sec1); + +} + +function amr_calc_duration ( $start, $end) { /* assume in same timezone , ics dtend? */ + /* In php 5.3 there is a date diff calculation */ + /* calculate weeks, days etc and return in array */ + /* don't want to use unix date stamp */ + if (!(is_object($start) and (is_object($end)))) return(false); + +// if (function_exists('date_diff')) { /* for php 5.3 only - untested locally - need to check for 0 and unset */ +// $interval = date_diff($start, $end); +// $d = (int) $interval->format('%d'); +// $d = $duarray['days'] = (int) $interval->format('%d'); +// $duarray['hours'] = (int) $interval->format('%h'); +// $duarray['minutes'] = (int) $interval->format('%m'); +// $duarray['seconds'] = (int) $interval->format('%s'); +// $duarray['weeks'] = $d / 7; if ($duarray['weeks'] < 1) $duarray['weeks'] = 0; +// $duarray['days'] = $d % 7; +// return ($duarray); +// } + /* else .... do our own non unix calc */ + $d = amr_daysDifference( $start, $end); + /* weeks */ + $w = $d / 7; if ($w < 1) $w = 0; + $d = $d % 7; /* the remainder of days after complete weeks taken out */ + /* Note we do not need to add an extra day or prior period if the hours go over a day, as the previous calculation will already have worked that out ????*/ + + /* hours */ + $b = $start->format('G'); + $e = $end->format('G'); + $h = $e - $b; + if ($h < 0) { + $d = $d - 1; + $h = 24 + $h; + } + /* minutes */ + $b = $start->format('i'); + $e = $end->format('i'); + $m = $e - $b; + if ($m < 0) { + $h = $h - 1; + $m = 60 + $m; + } + + /* seconds */ + $b = $start->format('s'); + $e = $end->format('s'); + $s = $e - $b; + if ($s < 0) { + $m = $m - 1; + $s = 60 + $s; + } + + $duarray = array (); + if ($w > 0) {$duarray['weeks'] = (int)$w;} + if ($d > 0) {$duarray['days'] = (int)$d;} + if ($h > 0) {$duarray['hours'] = (int)$h;} + if ($m > 0) {$duarray['minutes'] = (int)$m;} + if ($s > 0) {$duarray['seconds'] = (int)$s;} + + return ($duarray); +} + +/* Return true iff the two times span exactly a multiple of 24 hours, from midnight one day to midnight the next. But what if multi day over daylight saving ?? + */ +function amr_is_all_day($d1, $d2) { + if (!(is_object($d1) and (is_object($d2)))) return(false); + + if ($d1==$d2) return false; // if exact match then assume strict RC 5545 adherence, so cannot be all day, must be zero duration + + $dur = amr_calc_duration ( $d1, $d2); // duration could be zero if no end time or DTEND exact same as DTSTART (not all day) + if (empty ($dur['hours']) and empty ($dur['minutes']) and empty ($dur['seconds'] )) { + return true; + } + else { + return (false); + } +} + +/* return true if the event is untimed and the end is one day after the start */ +function amr_is_an_ical_single_day($d1, $d2) { +// If (ICAL_EVENTS_DEBUG) echo '
                          check if ical single day
                          '.$d1->format('c').'
                          '.$d2->format('c'); + + $d1a = clone $d1; + date_modify ($d1a,'next day'); +// If (ICAL_EVENTS_DEBUG) echo '
                          check if ical single day
                          '.$d1a->format('c').'
                          '.$d2->format('c'); + if ($d1a === $d2) { + return (true); + } + return (false); + } + +function amr_is_same_day($d1, $d2) { /** Return true iff the two specified times fall on the same day. */ + return ( $d1->format('Ymd') === $d2->format('Ymd')); + } + +function amr_is_before($d1, $d2) { /* Return true if the first date is earlier than the second date */ + if ($d1 < $d2 ) return (true); + else return (false); + } + +function amr_add_duration_to_date (&$e, $d) { +/* NOTE: some date modify installations cannot cope with 0 durations, or just a +, so do not pass that ! */ +/* adjust the signs of the duration array as necessary to that date modify can handle it */ + +/* dur-value = (["+"] / "-") "P" (dur-date / dur-time / dur-week) + + dur-date = dur-day [dur-time] + + dur-time = "T" (dur-hour / dur-minute / dur-second) + + dur-week = 1*DIGIT "W" + + dur-hour = 1*DIGIT "H" [dur-minute] + + dur-minute = 1*DIGIT "M" [dur-second] + + dur-second = 1*DIGIT "S" + + dur-day = 1*DIGIT "D" + */ + if (empty($d)) return ($e); + if (!is_array($d)) $d = maybe_unserialize($d); + + if ((isset($d['sign'] )) and ($d['sign'] === '-')) $dmod = '-'; /* then apply it to get our current end time */ + else $dmod = '+'; + + foreach ($d as $i => $v) { /* the duration array must be in the right order */ + if (!($i === 'sign')) { + if ( (!(empty($v))) and (!($v == '0'))) $dmod .= $v.' '.$i ; + } + } + if ((!empty($dmod)) and (strlen($dmod) > 1)) date_modify ($e, $dmod ); + return ($e); + } + +function amr_derive_dates (&$e) { +/* Derive basic date dependent data - called early on before repeating */ + + if (!isset($e['DTSTART']) ) + return (false); + if (is_array($e['DTSTART'])) + $e['DTSTART'] = $e['DTSTART'][0]; + if (isset($e['DTEND']) and is_array($e['DTEND'])) + $e['DTEND'] = $e['DTEND'][0]; + if (!is_object($e['DTSTART'])) { + // show error more discretely - some people are working with really dodgy ics files + echo '

                          !'; + echo '

                          '; + if (ICAL_EVENTS_DEBUG) {echo 'Dumping event record:'; var_dump($e); } + return($e); + } + if ((isset ($e['DURATION'])) and (empty ($e['DTEND']))) { /*** an array of the duration values, calc the end date or time */ + $e['DTEND'] = new Datetime(); //if cloning dont need tz + $e['DTEND'] = clone $e['DTSTART']; + $e['DTEND'] = amr_add_duration_to_date ($e['DTEND'], $e['DURATION']); + } + else { + if ((isset ($e['DTEND'])) and (empty ($e['DURATION']))) { /* we don't have a duration */ + $e['DURATION'] = amr_calc_duration ( $e['DTSTART'], $e['DTEND']); /* calc the duration from the original values*/ + } + } + if (isset ($e['DTEND']) and is_object($e['DTEND']) ) { + if (!isset($e['allday']) and amr_is_all_day($e['DTSTART'], $e['DTEND'])) // only chcek if not done + $e['allday'] = 'allday'; + /* set EndDate as human version instead of technical DTEND */ + $e['EndDate'] = new Datetime(); //if cloning dont need tz + $e['EndDate'] = clone $e['DTEND']; + if ((isset($e['allday']) and ($e['allday'] == 'allday'))) + date_modify($e['EndDate'],'-1 day'); // for human view + } + + return($e); +} + +function amr_derive_eventdates_further (&$e) { +global $amr_globaltz; +/* Derive any date dependent data - requires EventDate at least to have been set */ + $now = date_create('now',$amr_globaltz ); + + if (isset($e['EventDate'])) { + if (isset($_GET['tzdebug'])) {echo '
                          date='; var_dump($e['EventDate']);} + // 20140209 somehow events have eventdate stored in db + if (!is_object($e['EventDate'])) { + $e['EventDate'] = amr_convert_date_string_to_object($e['EventDate']); + } + date_timezone_set($e['EventDate'],$amr_globaltz ); + } + if (!isset($e['Classes'])) $e['Classes'] = ''; + if (isset($e['EndDate'])) { + if (!is_object($e['EndDate'])) { + $e['EndDate'] = amr_convert_date_string_to_object($e['EndDate']); + } + date_timezone_set($e['EndDate'],$amr_globaltz ); + if (amr_is_before($e['EndDate'], $now)) $e['Classes'] .= ' history'; + } + else /* ie there is no end date, just an event date */ if (amr_is_before($e['EventDate'], $now)) $e['Classes'] .= ' history'; + if (amr_is_before( $now, $e['EventDate'])) $e['Classes'] .= ' future'; + else $e['Classes'] .= ' inprogress'; + + if (amr_is_same_day ($e['EventDate'], $now)) $e['Classes'] .= ' today'; + + if (isset ($e['Untimed'])) { /* if it is untimed, the ical spec says that the end date is the "next day" */ + $e['Classes'] .= ' untimed'; + if (isset ($e['EndDate']) ) { + if ( (amr_is_an_ical_single_day ($e['EventDate'], $e['EndDate'])) OR + (amr_is_same_day($e['EndDate'], $e['EventDate'])) ) /* an ical generator error, but deal with it */ { + unset ($e['EndDate']); /* so we don't display them unecessarily */ + unset ($e['EndTime']); + } + else { /* it must be a multi day, all day - due to spec, we need to chop a day off for presentation purposes */ + //$e['EndDate']->modify("-1 day"); // NO! Endate wil be created correct;y, DT END will remain as original + if ($e['EventDate'] == $e['EndDate']) { /* */ + } + } + } + } + else $e['StartTime'] = $e['EventDate']; /* will format to time, later keep date for max flex */ + + if ((isset($e['allday']) and ($e['allday'] == 'allday')) OR + ((isset ($e['EndDate']) ) and (amr_is_all_day($e['EventDate'], $e['EndDate'])))) { + + unset ($e['StartTime']); + unset ($e['EndTime']); + $e['Classes'] .= ' allday'; +// $e['EndDate']->modify("-1 day"); //due to spec, we need to chop a day off for presentation purposes // NO! Endate wil be created correct;y, DT END will remain as original + } + else { + if (isset ($e['EndDate'])) { + if (amr_same_time($e['EventDate'], $e['EndDate'])) + unset ($e['EndTime']); + else $e['EndTime'] = $e['EndDate']; + } + } + + return($e); +} + +function amr_show_in_events_timezones (&$e) { // only change at last minute before display, +//else you may mess up ordering and recurring calculations +global $amr_options; + var_dump($amr_options); + if (!empty($e['timezone'])) { // do we have an event timezone stored ? + if (is_obj($e['timezone'])) { + //$e[] //*** amr + } + } + + return ($e); +} + +function amr_derive_component_further (&$e) { +global $amr_globaltz; +$e = amr_derive_for_list_or_eventinfo ($e); // order nb - otherwise summary have link when we do not want it to +$e = amr_derive_info_for_list_only ($e); +//$e = amr_decide_display_timezone($e); // amr *** rather put at each display point ? + +return ($e); + +} + +function amr_derive_for_list_or_eventinfo (&$e) { // should only derive the fields we need + + if (amr_need_this_field('_GEO') and empty($e['GEO']) ) { + if (isset ($e['latitude']) and isset( $e['longitude'])) { + $e['GEO'] = $e['latitude'].', '.$e['longitude']; + } + } + if (amr_need_this_field('_map')) { // just prepare with whatever we ha, leave format to later + if ((isset ($e['LOCATION'])) and (!empty($e['LOCATION']))) { + $e['map'] = $e['LOCATION']; + } + else + if (isset ($e['GEO'])) { + $e['map'] = $e['GEO']; + } + } + + // 'TENTATIVE','DELEGATED','NEEDS_ACTION','DECLINED','COMPLETED','IN-PROCESS' + + if (amr_need_this_field('_Attendee-counts')) { + if (isset($e['ATTENDEE'])) { // we have some attendees + $e['Attendee-counts'] = amr_derive_attendee_counts($e['ATTENDEE']); + } + } + + if ($g = add_event_to_google($e)) + $e['addevent'] = $g; + + if (function_exists ('amr_subscribe_to_event')) { + $g = amr_subscribe_to_event($e); + if (!empty($g) ) $e['subscribeevent'] = $g; + } + if (function_exists ('amr_subscribe_to_event_series')) { + $g = amr_subscribe_to_event_series($e); + if (!empty($g) ) $e['subscribeseries'] = $g; + } + if (function_exists ('amr_indicate_attendance') and !empty($e['id'])) { + $e['attending_event'] = amr_indicate_attendance($e['id']); + } + if (function_exists ('amr_register_for_event') and !empty($e['id'])) { + $e['register'] = amr_register_for_event($e['id']); + } + $e = apply_filters('amr-derive-custom-fields',$e); + return ($e); + +} + +function amr_derive_info_for_list_only (&$e) { + + /* Do not call this from eventinfo shortcode - it will cause an infinite loop! */ + if (!isset($e['Classes'])) $e['Classes'] = ''; //initialise + if (isset ($e['EventDate'])) { + amr_derive_eventdates_further($e); +// $bookm = $e['EventDate']->format('U'); + } +// else $bookm = ''; + /* Noew get some styling possibilities */ + if (isset ($e['RRULE']) or (isset ($e['RDATE']))) $e['Classes'] .= ' recur'; + if (isset ($e['STATUS']) ){ + $e['Classes'] .= ' '.amr_just_flatten_array($e['STATUS']); /* would have values like 'CONFIRMED'*/ + } + if (isset($e['name'])) $e['Classes'] .= ' '.$e['name']; + if (isset($e['type'])) $e['Classes'] .= ' '.$e['type']; /* so we can style events, todo's differently */ + if (!empty($e['CATEGORIES'])) { + if (is_array($e['CATEGORIES'])) { // v4.1.16 need category_name for wp queries, but classes do not like spaces + foreach ($e['CATEGORIES'] as $i=>$c) {$sluggish[$i] = sanitize_title($c);} + $e['Classes'] .= ' '.implode(' ',$sluggish); + } + else + $e['Classes'] .= ' '.sanitize_title($e['CATEGORIES']); + } + if (isset($e['terms']) and is_array($e['terms'])) // so we have all the associated terms + $e['Classes'] .= ' '.implode(' ',$e['terms']); + if (isset($e['tag_ids']) and is_array($e['tag_ids'])) // so we have all the associated terms + $e['Classes'] .= ' t'.implode(' t',$e['tag_ids']); +// if (isset($e['UID'])) { +// $e['Bookmark'] = str_replace('@','',$e['UID']); /* must be before summary as it is used there . Must be a char to start not a number and get rid of odd chars for validation*/ +// $e['Bookmark'] = 'a'.htmlentities(str_replace('http://','',$e['Bookmark'] ).$bookm); +// } + $e['SUMMARY'] = amr_derive_summary ($e); // do not hover the description + + + // if we need these + $e['excerpt'] = amr_make_excerpt_from_description($e); + + + + return ($e); +} + +function amr_make_excerpt_from_description ($e) { + if (empty($e['excerpt'])) { + if (!empty($e['DESCRIPTION'])) { // must be abn ics file + $desc = amr_just_flatten_array ($e['DESCRIPTION']); + } + else if (!empty($e['CONTENT'])) { // must be abn ics file + $desc = strip_shortcodes(amr_just_flatten_array ($e['CONTENT'])); + } + else $desc = ''; + + $length = apply_filters('excerpt_length', 55); // in case a filter returns garbage; + if (!is_int($length)) $length = 55; + $excerpt = substr( + $desc, + 0, // start + $length) //length + .'...'; + + return ($excerpt); + } + else return($e['excerpt']); +} + +function amr_just_flatten_array ($arr) { +/* expecting array of text strings - convert to one txt string */ + $txt = ''; + if (is_array($arr)) { + if (empty($arr)) return (null); + else { + foreach ($arr as $i => $v) { $txt .= $v; } + return ($txt); + } + } + else return($arr); +} + +function amr_check_flatten_array ($arr) { + if (is_array($arr)) { + if (empty($arr)) return (null); + else { + foreach ($arr as $i => $v) {if (empty($v)) unset ($arr[$i]);} + if (empty($arr) or (count($arr)< 1)) return (null); + else return ($arr); + } + } + else return ($arr); +} + +function add_querystring_var($url, $key, $value) { + /* replaces the first instance with the key and value passed */ + + $url = preg_replace('/(.*)(\?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&'); + + $url = substr($url, 0, -1); + + if (strpos($url, '?') === false) { + + return ($url . '?' . $key . '=' . $value); + + } else { + + return ($url . '&' . $key . '=' . $value); + + } + +} + +function amr_GET_htmlstylefile() { + global $amr_options; + global $amr_listtype; + + $custom_htmlstyle_file = $amr_options['listtypes'][$amr_listtype]['general']['customHTMLstylefile']; + if (empty ($custom_htmlstyle_file ) ) + return false; + $uploads = wp_upload_dir(); + if (!file_exists($uploads['basedir'].$custom_htmlstyle_file)) // just in case + return false; + else + $custom_htmlstyle_file = $uploads['basedir'].$custom_htmlstyle_file ; + + //var_dump($custom_htmlstyle_file); + return($custom_htmlstyle_file); +} + +function amr_doing_box_calendar () { +global $amr_options, + $amr_liststyle, + $amr_listtype; + + if (in_array ($amr_liststyle, array('smallcalendar','largecalendar','weekscalendar'))) return true; + else return false; +} + +function amr_do_a_headercell_html($htm, $i, $colhead) { + $html = ((!empty($htm['hcell'])) ? $htm['hcell'].' class="amrcol'.$i.'">': '') + .$colhead + .((!empty($htm['hcellc'])) ? $htm['hcellc'] : ''); +return $html; +} + +function amr_do_column_header_html($htm, $i, $headhtml) { + $html = $htm['head'] + .(!empty($htm['row']) ? ($htm['row'].'>'): '') + .$headhtml + .(!empty($htm['rowc']) ? $htm['rowc'] : '') + .$htm['headc']; +return $html; +} + + /** Sort the specified associative array by the specified key. + * Originally from + * http://us2.php.net/manual/en/function.usort.php. + */ + +function amr_sort_by_key($data, $key) { //201807 remove deprecated create function + if (!(is_array($data)) ) return ($data); + $compare = function($a, $b) use ($key) { + if (!isset($a[$key])) return false; + if (!isset($b[$key])) return false; + if ($a[$key] == $b[$key]) { + return 0; } + else { + return ($a[$key ] < $b[$key]) ? -1 : 1; + }; + }; + usort($data, $compare); + return $data; +} + +function amr_reverse_sort_by_key($data, $key) { + if (!(is_array($data)) ) return ($data); + $compare = function($a, $b) use ($key) { + if (!isset($a[$key])) return false; + if (!isset($b[$key])) return false; + if ($a[$key] == $b[$key]) { + return 0; } + else { + return ($a[$key ] > $b[$key]) ? -1 : 1; + }; + }; + usort($data, $compare); + return $data; +} + +function amr_falls_between($eventdate, $astart, $aend) { + /* + * Return true iff the specified event falls between the given + * start and end times. + */ + +/* Echo '
                          ASTART: '; var_dump($astart); + Echo '
                          EVENT : '; var_dump($eventdate); + + $dd = amr_daysDifference ($astart,$eventdate); echo '
                          dd='.$dd; + if ($astart > $eventdate) echo '
                          a is graeter er'; + else if ($astart < $eventdate) echo '
                          a is less er'; + else echo '
                          a is less or = '; +*/ + if ((!is_object($eventdate))) { + if (is_object($astart)) { + $eventdate = amr_newDateTime($eventdate); + } + } + else { // it is an object + if (!is_object($astart)) { + $astart = amr_newDateTime($astart); + } + if (!is_object($aend)) { + $aend = amr_newDateTime($aend); + } + } + + if (($eventdate <= $aend) and + (($eventdate > $astart) or ($eventdate == $astart))) + return ( true); + else + return (false); +} + +function amr_event_should_be_shown($event, $astart, $aend) { + /* + Return true if the specified event should be shown. This could be due to a number of situations: + * there is no dtstart (it is a note?) + * event starts and ends between the start and end date + * event starts after the start date, before the end date - it may finish after the end date/time. + * event started before the start date and ends after the finish date + * event is an untimed event (eg: all day) and starts on the same day, but before the start datetime. (Does it still have it's end date - we zap that at some point?) + */ + if (!isset ($event['DTSTART'] )) return (true); + //if (ICAL_EVENTS_DEBUG) echo '
                          dtstart='.$event['DTSTART']->format('c'); + if ($event['DTSTART'] >= $astart) { + //if (ICAL_EVENTS_DEBUG) echo '
                          date >= start' ; + if ($event['DTSTART'] <= $aend) { + //if (ICAL_EVENTS_DEBUG) echo '
                          date <= end' ; + return (true); + } + else { + //if (ICAL_EVENTS_DEBUG) echo '
                          date > start' ; + if (isset($event['Untimed']) and amr_is_same_day($event['DTSTART'],$aend )) { + //if (ICAL_EVENTS_DEBUG) echo '
                          date untimed and same day' ; + return (true); + } + else { + //if (ICAL_EVENTS_DEBUG) { echo '
                          date not untimed or not same day' ; echo '
                          ';} + return (false); + } + } + } + else { /* ie DTSTART is < $astart, but may still be on same day, or not finished, ie continuing past */ + //if (ICAL_EVENTS_DEBUG) echo '
                          date < start' ; + if (isset($event['DTEND']) and ($event['DTEND'] >= $astart)) { + //if (ICAL_EVENTS_DEBUG) echo '
                          date <= end' ; + return (true); + } + else { + //if (ICAL_EVENTS_DEBUG) echo '
                          No end....' ; + if (isset($event['Untimed']) and amr_is_same_day($event['DTSTART'],$astart )) { + //if (ICAL_EVENTS_DEBUG) echo '..Is Untimed and same day' ; + return (true); + } + else if (isset($_GET['debugall'])) echo '.. Is NOT Untimed or not same day' ; + } + + } +} + +function amr_arrayobj_unique2 (&$arr) { /* Process an array of datetime objects and remove duplicates */ + /* Duplicates can arise from edit's of ical events - these will have different sequence numbers and possibly differnet details - delete one with lower sequence, + Also there maybe? the possobility of complex recurring rules generating duplicates - these will have same sequence no's and should have same details - delete one + Note: Mozilla does not seem to generate a SEQUENCE ID, but does do a X-MOZ-GENERATION. + */ + $limit = count ($arr); + if (isset($_GET['debugexc'])) {echo '

                          Check for modifications or exceptions for array of '.$limit.' records
                          '; } + krsort ($arr); /*** sort numerically We can then walk through and "toss" the lower sequence numbers for a given uid and date instance */ + if (isset($_GET['debugexc'])) { + echo '
                          Check sorted correctly :'; + foreach ($arr as $i=> $a) {echo '
                          ..'.$i;} /* Check the sorting */ + echo '
                          End Check sorted correctly.
                          '; + } + $seqprev = ''; + $uiddateprev = ''; + foreach ($arr as $i => $e) { + if ($seqstart = strrpos($i, " ")) { + $seq = (int) substr($i, $seqstart, 100); + $uiddate = substr ($i, 0, $seqstart); + } + else { + if (isset($_GET['debugexc'])) echo '
                          Must be a unique event? as key does not match pattern'; break; + } /* not an ical event, must be a unique post event */ + if (isset($_GET['debugexc'])) { + echo '
                          seq='.$seq.' '.substr($i,0,6).'...'.substr($i,$seqstart-26,200); + echo '
                          uidate: '.$uiddate; + echo '
                          uidprv: '.$uiddateprev; + } + if ($uiddate == $uiddateprev) { + if ($seq < $seqprev ) { + unset ($arr[$i]); + if (isset($_GET['debugexc'])) echo '
                          Delete seq: Seq was ='.$seq.' and $seqprev was: '.$seqprev .''; + } + else if ($seqprev < $seq) { + if (isset ($iprev)) unset ($arr[$iprev]); + if (isset($_GET['debugexc'])) + echo '
                          Delete seqprev Seq was ='.$seq.' and seqprev was: '.$seqprev.''; + } + else echo '
                          Unexpected inability to sort modification from original. Please inform administrator. ? seqprev = '.$seqprev.' and seq = '.$seq.''; + /* Note that while sequence numbers can be the same for a recurrencid, the plugn will add 999 for a recurrence id */ + } + else { + if (isset($_GET['debugexc'])) {echo '
                          No uid and date match.
                          ';} + } + $uiddateprev = $uiddate; + $seqprev = $seq; + $iprev = $i; +// if (!(empty($seq)) and (!($seq===" "))) { + // if (isset($_GET['debugexc'])) echo '
                          ** Possible exception with seq: '.$seq.' - check for outdated instances for
                          '.substr($i,0,6).'...'.substr($i,$seqstart-26,200); +// } + } + } + +function amr_repeat_anevent(&$event, $astart, $aend, $limit) { +global $amr_globaltz; + /* for a single event, handle the repeats as much as is possible */ + $repeats = array(); + $exclusions = array(); + $repeatstart = new Datetime(); //if cloning dont need tz + $repeatstart = clone $event['DTSTART']; + $event = amr_parseRepeats($event); + + if (!empty($event['RRULE'])) { + + if (isset($_GET['debugexc'])) { + echo '
                          After Parsing Repeats:
                          '; + if (isset ($event['RRULE'])) { echo ' RRULE:
                          ';var_dump($event['RRULE']); } + echo '
                          * RDATE:
                          '; + if (isset ($event['RDATE'])) var_dump($event['RDATE']); + echo '
                          * EXDATE:
                          '; + if (isset ($event['EXDATE'])) var_dump($event['EXDATE']); + echo '
                          * EXRULE:
                          '; + if (isset ($event['EXRULE'])) var_dump($event['EXRULE']); + + } + + if (!isset($event['RRULE'][0])) $event['RRULE'] = array($event['RRULE']); /* depending where we got our rrule from, we may or may not have multiple */ + if (isset($_GET['rdebug'])) { echo '
                          We have '.count($event['RRULE']).' rrules';} + foreach ($event['RRULE'] as $i => $rrule) { + + $reps = amr_process_RRULE($rrule, $repeatstart, $astart, $aend, $limit); + if (is_array($reps) and count($reps) > 0) { + $repeats = array_merge ($repeats, $reps); + } + } + if (isset($_GET['rdebug'])) { echo '
                          Got '.count($repeats). ' after RRULE';} + } + if (!empty($event['RDATE'])) { + + foreach ($event['RDATE'] as $i => $rdate) { + $reps = amr_process_RDATE ($rdate, $repeatstart, $aend, $limit); + if (is_array($reps) and count($reps) > 0) { + $repeats = array_merge($repeats , $reps); + } + } + + } + + if (!empty($event['EXRULE'])) { + //if (isset($_GET['debugexc'])) { echo '

                          Have EXRULE

                          ';var_dump($event['EXRULE']);} + foreach ($event['EXRULE'] as $i => $exrule) { + $reps = amr_process_RRULE($exrule, $repeatstart, $astart, $aend, $limit); + if (is_array($reps) and count($reps) > 0) { + $exclusions = $reps; + } + } + //if (isset($_GET['debugexc'])) { echo '

                          Got '.count($exclusions). ' after EXRULE

                          ';} + } + + if (!empty($event['EXDATE'])) { + if (isset($_GET['debugexc'])) { + echo '

                          Have EXDATE to exclude

                          '; + foreach ($event['EXDATE'] as $exdate) {echo '
                          EXC:'.$exdate->format('c');}; + } + $exclusions = array(); + foreach ($event['EXDATE'] as $i => $exdate) { + $reps = amr_process_RDATE($exdate, $repeatstart, $aend, $limit); + if (is_array($reps) and count($reps) > 0) { + $exclusions = array_merge($exclusions , $reps); + } + + } + if (isset($_GET['debugexc'])) { echo '
                          Got '.count($exclusions). ' exclusions after checking EXDATE';} + } + + if (isset($_GET['rdebug'])){ echo '
                          Still have '.count($repeats). ' before exclusions
                          ';} + /* Now remove the exclusions from the repeat instances */ + if (is_array($exclusions) and count ($exclusions) > 0) { + + foreach ($exclusions as $i => $excl) { + date_timezone_set($excl, $amr_globaltz ); + foreach ($repeats as $j => $rep) { + date_timezone_set($rep, $amr_globaltz ); + if ((isset($_GET['debugexc']) )) { + echo '
                          Exc:'.$excl->format('c'). ' =? Rep:'.$rep->format('c'); + } + if ($excl->format('c') == $rep->format('c')) { +// if ($excl === $rep) { +// if (!($excl < $rep) and !($excl > $rep)) { + if (isset($_GET['debugexc'])) { + echo '
                          Exclusion matches repeat date, so exclude this date '.$j.' '. $rep->format('c'); + } + unset($repeats[$j]); /* will create a gap in the index, but that's okay, not reliant on it */ + } + } + } + } + if (isset($_GET['debugexc'])) { echo '
                          Now have '.count($repeats). ' after exclusions '; } + + return ($repeats); + + } + +function debug_print_event ($e, $nest=0) { + $tab = ''; + echo '
                            '; + foreach ($e as $i => $f) { + if (is_object($f)) echo '
                          • '.$tab.$i.' = '.$f->format('c').'
                          • '; + else if (is_array($f)) {echo '
                          • '.$tab.$i; debug_print_event ($f, ($nest+1)); echo '
                          • ';} + else {echo '
                          • '; +// .$tab.$i.' = ' + if (!(is_int($i))) echo $i.' = '; + var_dump($f).'
                          • '; + } + } + echo '
                          '; + } + +function amr_create_enddate (&$e) { + /* if the necessary data exist, then create the end date for a possibly repeated event. - note this is NOT the DTEND */ + if (isset ($e['DURATION'])) {/* if not just an alarm */ + if (isset ($e['EventDate'])) { + $e['EndDate'] = new Datetime(); //if cloning dont need tz + $e['EndDate'] = clone $e['EventDate']; + $e['EndDate'] = amr_add_duration_to_date ($e['EndDate'], $e['DURATION']); + //check here whether all day or not - human expects 1 day less, DTEND expects next day - keep it so + if (!empty ($e['allday']) and ($e['allday'] == 'allday')) { + date_modify($e['EndDate'],'-1 day'); + } + return (true); + } + } + else return (false); + } + +function amr_generate_repeats(&$event, $astart, $aend, $limit) { /* takes an event and some parameters and generates the repeat events */ + $repeats = array(); // and array of dates + $newevents = array(); // an array of events + + if (isset($event['DTSTART'])) { + if (is_object($event['DTSTART'])) { + $dtstart = $event['DTSTART']; + $dt = empty($event['DTSTART']) ? '' : $event['DTSTART']->format('c'); /* begin setting up the event key that will help us check for modifocations - semingly duplicates! - overwrite for repeats */ + } + else { + if (ICAL_EVENTS_DEBUG) echo('DTSTART is not an object'.$event['DTSTART']); + return (false); /* it is set, but it is not an aobject ? */ } + } + else { /* possibly an undated, non repeating VTODO or Vjournal- no repeating to be done if no DTSTART, and no RDATE */ + $dt = '-nodtstart'; + if (!isset($event['RDATE'])) { + if (isset ($event['UID'])) + $newevents[$event['UID']] = $event; + else + amr_tell_admin_the_error('There is an invalid event. It has no UID:'.print_r($event,true)); + return ($newevents); /* possibly an undated, non repeating VTODO or Vjournal- no repeating to be done if no DTSTART, and no RDATE */ + } + else { + echo ('This event is invalid. It has no DTSTART, but does have RDATE. Not allowed according to ical spec.'); + return(false); + /***check for repeating RDATEs if no start date */ + } + } + /* To handle modifications, use a key to the events, so can match any later mods with a repeating event we may have generated */ + $seq = empty($event['SEQUENCE']) ? '0' : $event['SEQUENCE']; /* begin setting up the event key that will help us check for modifications - semingly duplicates!*/ + if (!isset($event['UID'])) $event['UID'] = 'NoUID'; + /* there is no repeating rule, so just copy over */ + if (isset ($event['RECURRENCE-ID'])) { /* a modification or exceptions to a repeating instance ? */ +// $recdate = $dt; + if (isset ($_GET['debugexc'])) {echo '
                          RECURRENCE-ID:'; var_dump($event['RECURRENCE-ID']);} + if (is_array($event['RECURRENCE-ID'])) { /* just take first, should only be one */ + $recdateobj = $event['RECURRENCE-ID'][0]; + $recdate = $recdateobj->format('YmdHis'); // purely identifies specifc instances of a repeating rule are affected by the exception/modification + //20140721 - lost the month in ymd somehow - added back + if (isset ($_GET['debugexc'])) {echo '
                          Flag recurrence modification for '.$recdate; } + } + else if (is_object($event['RECURRENCE-ID'])) { /* Then it is a date instance which has been modified . We need to overwrite the appropriate repeating dates. This is done later? *** */ + $recdateobj = $event['RECURRENCE-ID']; + $recdate = $recdateobj->format('YmdHis'); + if (isset ($_GET['debugexc'])) {echo '
                          RecurrenceID date to check against event rrule.' ;echo($recdate);} + } + else { /**** should deal with THISANDFUTURE or THISANDPRIOR EG: + RECURRENCE-ID;RANGE=THISANDPRIOR:19980401T133000Z */ + echo '
                          THISAND.... modification to repeating event encountered. This cannot be dealt with yet'; var_dump($event['RECURRENCE-ID']); + } + if ( amr_event_should_be_shown($event,$astart, $aend) or + amr_falls_between($recdateobj, $astart, $aend) or /* If the modification relates to an event instance (ie date) that is in range */ + amr_is_same_day ($recdateobj, $astart) or /* if on same day, may be an all day event - will constrain finally later */ + amr_is_same_day ($recdateobj, $aend) + ) /* OR the new date is in our display range, */{ + $key = $event['UID'].' '.$recdate.' '.$seq.'999'; /* By virtue of being a recurrence id it should override a non recurrence (ie normal) even if they have the same sequence */ + $newevents[$key] = $event; /* so we drop the old events used to generate the repeats */ + $newevents[$key]['EventDate'] = new Datetime(); //if cloning dont need tz + $newevents[$key]['EventDate'] = clone $dtstart; + if (!(amr_create_enddate($newevents[$key]))) {if (ICAL_EVENTS_DEBUG) echo ' ** No end date - is it an alarm? ';}; + } + else { + if (isset ($_GET['debugexc'])) { + echo '
                          '.$recdate.' not in range and '.$dtstart->format('c').' not in range' ; +// debug_print_event ($event); + } + return(false); /* the modification and the instance that it relates to are not in our date range */ + } + } + else { /* It is not a recurrence id, may be a repeating, or solo */ + if (isset($dtstart) ) { + if ( amr_is_before ($dtstart, $aend) ) { /* If the start is after our end limit, then skip this event */ + + //var_dump($event); + + if (isset($event['RRULE']) or (isset($event['RDATE']))) { + /* if have, must use dtstart in case we are dependent on it's characteristics,. We can exclude too early dates later on */ + $repeats = amr_repeat_anevent($event, $astart, $aend, $limit ); /**** try for a more efficient start? */ + if (isset($_GET['rdebug']) or ICAL_EVENTS_DEBUG) { + if (count($repeats) > 0) echo '
                          Create repeats: '.count($repeats); + } + /* now need to convert back to a full event by copying the event data for each repeat */ + if (is_array($repeats) and (count($repeats) > 0)) { + foreach ($repeats as $i => $r) { + $repkey = $event['UID'].' '.$r->format('YmdHis').' '.$seq; /* Don't use timezone - some recurrence id's maybe created with universal dates */ + if (isset ($newevents[$repkey])) { + // error_log('Unexpected Duplication of Repeating Event '.$repkey.' - error in ical file or error in plugin?'); // only happened on weird rrule - may be valid anyway so as not to miss anything + } + $newevents[$repkey] = $event; // copy the event data over - note objects will point to same object unless we clone Use duration or new /clone Enddate + $newevents[$repkey]['EventDate'] = new Datetime(); //if cloning dont need tz + $newevents[$repkey]['EventDate'] = clone $r; +// if (ICAL_EVENTS_DEBUG) {echo '
                          Created '.$newevents[$repkey]['EventDate']->format('YmdHis l'); } + if (!amr_create_enddate($newevents[$repkey])) { + if (ICAL_EVENTS_DEBUG) echo ' ** No end date created, maybe just a start? '; + }; + } + } + } + else { + $key = $event['UID'].' '.$dt.' '.$seq; /* No Recurrence id and no RRULE or RDATE */ + $newevents[$key] = $event; // copy the event data over - note objects will point to same object - is this an issue? Use duration or new /clone Enddate + $newevents[$key]['EventDate'] = new Datetime(); //if cloning dont need tz + $newevents[$key]['EventDate'] = clone $dtstart; + if (isset ($newevents[$key]['DURATION'] )) { + amr_create_enddate ($newevents[$key]); //changed because EndDate not same as DTEND if all day + } + } + } + } + else { // no starting date + $key = $event['UID'].' '.$dt.' '.$seq; + $newevents[$key] = $event; + $newevents[$key]['EventDate'] = ''; + } + } + if (ICAL_EVENTS_DEBUG) {echo '
                          number of newevents = '.count($newevents);} + return ($newevents); + } + + /* + * Constrain the list of COMPONENTS to those which fall between the + * specified start and end time, up to the specified number of + * events. + * Note; MUST take RECURRENCE -ID if the recurrence date is in range (even though the DTSTART may not be), as they may be modifying a date that is within the range + */ +function amr_constrain_components($events, $start, $end, $limit) { +global $amr_limits; + + $newevents = $events; + /* should we be moving to destination date */ + if ((count($newevents) < 1) or (!is_array($newevents))) + return (false); + + $newevents = apply_filters('amr_events_before_sort', $newevents); // used for example to exclude private events + + $newevents = amr_sort_by_key($newevents , 'EventDate'); + + $newevents = apply_filters('amr_events_after_sort', $newevents); + + if (isset($_GET["debug"])) { + //var_dump($newevents); + echo '
                          Sorted '.count($newevents).' events'; + echo '
                          first '.$newevents[0]['EventDate']->format('c'); + echo '
                          last '.$newevents[count($newevents)-1]['EventDate']->format('c'); + echo '
                          start '.$start->format('c'); + echo '
                          end '.$end->format('c'); + echo '
                          Now constrain them...
                          '; + } + $constrained = array(); + $count = 0; + foreach ($newevents as $k => $event) { +// + if (isset ($event['EventDate']) and (is_object ($event['EventDate']))) { + if (amr_falls_between($event['EventDate'], $start, $end) OR + (isset($event['EndDate']) and + (amr_falls_between($event['EndDate'], $start, $end) OR /* end date will catch those all day ones that are untimed or those that h ave not yet finished !! */ + (amr_falls_between($start, $event['EventDate'], $event['EndDate'])))) ) /* catch those that start before our start and end after our start */ + { + $constrained[] = $event; + if (isset($_GET['debugall'])) { + echo '
                          Choosing no: '.$k.' '. $event['EventDate']->format('c').' ending '. (isset($event['EndDate'])? $event['EndDate']->format('c'): ' no end'); } + ++$count; + } + if (isset($_GET['debugall'])) { + echo '
                          Not choosing?'.$k.' ' + . $event['EventDate']->format('c').' ending ' + . (isset($event['EndDate'])? $event['EndDate']->format('c'): ' no end'); + } + } + else { + $constrained[] = $event; + if (isset($_GET['debugall'])) { + echo '
                          Whats happening?'; var_dump( $event); + } + } + if ($count >= $limit) break; + } + + if (isset($amr_limits['eventsoffset']) and (!empty($amr_limits['eventsoffset']))) { + if (function_exists('amr_do_events_offset')) { + $constrained = amr_do_events_offset ($constrained); + } + } + //if (ICAL_EVENTS_DEBUG) {echo '
                          Constrained =';var_dump($constrained);} + + $constrained = apply_filters('amr_events_after_sort_and_constrain', $constrained); + return $constrained; + } + +/* + * generate repeating events down to nonrepeating events at the corresponding repeat time. + For ease of processing the repeat arrays will initially be ISO 8601 date (added in PHP 5) eg: 2004-02-12T15:19:21+00:00 + we will then convert them to date time objects + */ +function amr_process_icalevents($events, $l_start, $aend, $limit) { + $astart = amr_newdatetime(); // l_start was getting overwritten somewhere which messed up recurring logic + $astart = clone $l_start; + $dates = array(); + //echo'
                          Check gen repeats '; var_dump($events); + foreach ($events as $i=> $event) { + amr_derive_dates ($event); /* basic clean up only - removing unnecessary arrays etc */ + $more = amr_generate_repeats($event, $astart, $aend, $limit); + if (ICAL_EVENTS_DEBUG) {echo '
                          '.$i.' number of more events = '.count($more);} + if (is_array($more)) + $dates = array_merge ($dates,$more) ; + if (ICAL_EVENTS_DEBUG) {echo '
                          number of dates = '.count($dates);} + //amrical_mem_debug('before unset '.$i); + //unset($more); + //amrical_mem_debug('After event '.$i); + } + if (ICAL_EVENTS_DEBUG) {echo '
                          No.Dates= '.count($dates); } // + if ((is_array($dates)) and (count($dates) > 1)) { /* must be > 1 for tere to be a duplicate! */ + amr_arrayobj_unique2($dates); /* remove any duplicate in the values , check UID and Seq. This may arise if we have many VEVENTS relating to one event */ + //if (ICAL_EVENTS_DEBUG) { echo '
                          Now have '.count($dates). ' after duplicates check.';} + } + return ($dates) ; + } + +function process_icalurl($url) { +global $amr_limits; +/* cache the url if necessary, and then parse it into basic nested structure */ + amrical_mem_debug('Before Process ical url'); + $file = amr_cache_url(str_ireplace('webcal://', 'http://',$url),$amr_limits['cache']); + if (!($file)) { + echo '
                          '.sprintf(__('Unable to load or cache ical calendar %s','amr-ical-events-list'),$url); + return false; + } + + amrical_mem_debug('Before parse ical url'); + $ical = amr_parse_ical($file); + + if (! (is_array($ical) )) { + echo '!'; + return($ical); + } + $ical['icsurl'] = $url; + + return ($ical); +} + +function amr_echo_parameters() { +global $amr_limits; + foreach ($amr_limits as $i=> $v) { + if (!(in_array($i, array('cache', + 'eventscache', + 'pagination', + 'headings', + 'show_views', + 'calendar_properties', + 'show_month_nav', + 'day_links', + 'eventpoststoo') ))) { + $label = __($i,'amr-ical-events-list').' = '; + if (is_object($v)) $t[] = $label.$v->format('j M i:s'); + else if (!empty($v)) $t[] = $label.$v; + } + } + $text = implode (', ',$t); + return ($text); +} + +function amr_string($s) { +/* Maybe check for a calendar name and if it exists, then use it for styling? - NOt NOW */ + return(str_replace(array (' ','.','-',',','"',"'"), '', $s)); +} + +function suggest_other_icalplugin($featuretext) { +?> +
                            +
                          $v) { + if (!empty($v)) { + if (is_object($v)) + $string .= ' '.$i.'='.$v->format('Ymd:H'); + else { + if (is_array($v)) $string .= ' '.$i.'='.implode($v); + else $string .= ' '.$i.'='.$v; + } + } + } + + if (isset($_GET['debugcache'])) echo '
                          string for key of cache =
                          '.$string.'
                          '; + $key = md5( $string ); + return ($key); +} + +function amr_GET_cached_events_from_db($criteria) { //NLR ? + global $amr_limits; + + if (version_compare(5.3, PHP_VERSION, '>')) { + if (isset($_GET['debugcache']))echo 'NB: No event transient caching possible yet because objects do not serialise properly in php < 5.3'; + return(false); + } + else return (false) ; /* until we upgrade ourselves and can test properly - icdsoft do not have yet */ + + if (isset($_GET['debugcache'])) echo '

                          Trying cache =

                          '; +//---- build the key + $key = amr_GET_events_cache_key($criteria); +// ----now see if we have a cache + + $cache = get_transient('amr_events'); + + if ( is_array($cache) && isset( $cache[ $key ] ) ) { + if (isset($_GET['debugcache'])) echo ('
                          we got an events cache with key '.$key); +// var_dump($cache[ $key ]); die('let see'); + + return ( $cache[$key] ); + } + else { + if (isset($_GET['debugcache'])) echo ('

                          No events cached - requery

                          '); + return false; + } +} + +function amr_set_cached_events_from_db($criteria, $events) { //NLR? + global $amr_options; /*** nb when we get back to this -when hosts are on 5.3 or for some other reason, fetch in hours eventscache */ + global $amr_limits; +//---- build the key + $key = amr_GET_events_cache_key($criteria); + if (isset($_GET['debugcache'])) echo '

                          Setting cache with key = '.$key.'

                          '; +// ----now see if we have a cache + + $cache = get_transient('amr_events'); + $cache[$key] = $events; + set_transient('amr_events', $cache, 60*20); /* save transient for 20 mins */ + + if (isset($_GET['debugcache'])) echo ('

                          cache set '.$key.'

                          '); + return true; +} + +function amr_process_icalspec($criteria, $l_start, $end, $no_events, $icalno=0) { +/* parameters - an array of urls, an array of limits (actually in amr_limits) */ + global $amr_options, + $amr_limits, + $amr_listtype, + $amrW, + $amrtotalevents, + $change_view_allowed, + $amr_doing_icallist, /* use to prevent the eventinfo shortcode echoing data to the screen when in ical event list mode */ + $amr_one_page_events_cache; /* if widget and calendar doing same thing */ + + $amr_doing_icallist = true; + if (!empty($amrW)) + $w = 'w'; /* so we know if we are in the widget or not */ + else + $w = ''; + + if (!empty($criteria['show_in_events_timezone'])) // if we want event timezones, not website timezone + add_filter ('amr_show_in_events_timezone', 'amr_show_in_events_timezone', 10, 2); + + if (!empty($criteria['exclude_in_progress'])) + add_filter ('amr_events_after_sort_and_constrain', 'amr_events_exclude_in_progress'); + + if (!empty($criteria['sort_later_events_first'])) + add_filter ('amr_events_after_sort_and_constrain', 'amr_events_sort_later_events_first'); + + $icals = false; + if ((isset($amr_limits['eventpoststoo'])) and ($amr_limits['eventpoststoo'])) { + + if (function_exists('amr_ical_from_posts')) { + $events = amr_ical_from_posts($criteria); + if (!empty($events)) { + $icals = amr_make_ical_from_posts($events, $criteria); + + if (ICAL_EVENTS_DEBUG) { + echo '
                          Got calendars from posts :'.count($icals).' events='.count($events).'
                          '; + } + } + else { + if (ICAL_EVENTS_DEBUG) { echo '
                          No events found with this criteria
                          '; + } + } + } + else { + if (ICAL_EVENTS_DEBUG) { echo '
                          Function amr_ical_from_posts not found
                          '; } + if (empty($criteria['urls'])) { + suggest_other_icalplugin (__('No url entered - did you want events from posts ?','amr-ical-events-list' )); + } + //else _e("huh?"); + } + + } + else if (ICAL_EVENTS_DEBUG) echo '
                          Ignore events posts '; + + /* ------------------------------ check for urls and do those too, or only */ + $icals2 = array(); + if (!empty($criteria['urls'])) { + foreach ($criteria['urls'] as $i => $url) { + $icals2[$i] = process_icalurl($url); + if (!(is_array($icals2[$i]))) + unset ($icals2[$i]); + else if (function_exists('amr_mimic_taxonomies')) + $icals2[$i] = amr_mimic_taxonomies ($icals2[$i]) ; // filter by category_name + } + } + + if (!empty($icals) ) { // we got some events + if (!empty($icals2) ) + $icals = array_merge($icals, $icals2 ); + } + else + if (!empty($icals2) ) { + $icals = $icals2; // we got no events from posts, just from ics + } + + /* ------------------------------now we have potentially a bunch of calendars in the ical array, each with properties and items */ + + /* Merge then constrain by options */ + $components = array(); /* all components actually, not just events */ + if (isset ($icals) and is_array($icals)) { /* if we have some parsed data */ + foreach ($icals as $j => $ical) { /* for each Ics file within an ICal spec*/ + if ((!isset($amr_options['listtypes'][$amr_listtype]['component'])) or (count($amr_options['listtypes'][$amr_listtype]['component']) < 1)) + _e('No ical components requested for display','amr-ical-events-list'); + else { + foreach ($amr_options['listtypes'][$amr_listtype]['component'] as $i => $c) { /* for each component type requested */ + if ($c) { /* If this component was requested, merge the items from Ical items into events */ + if (!empty($ical[$i]) and is_array($ical[$i])) { /* Eg: if we have an array $ical['VEVENT'] etc*/ + foreach ($ical[$i] as $k => $a) { /* save the component type so we can style accordingly */ + $ical[$i][$k]['type'] = $i; + $ical[$i][$k]['name'] = 'cal'.$j; /* save the name for styling */ + } + if (!empty($components) ) { + $components = array_merge ($components, $ical[$i]); + } + else + $components = $ical[$i]; + } + } + } + } + } + If (ICAL_EVENTS_DEBUG) echo '
                          Got x events '.count($components); + + amrical_mem_debug('Before process'); + $components = amr_process_icalevents($components, $l_start, $end, $no_events); + amrical_mem_debug('Before constrain'); + $amrtotalevents = count($components); + $components = amr_constrain_components($components, $l_start, $end, $no_events); + $amr_last_date_time = amr_save_last_event_date($components); + If (ICAL_EVENTS_DEBUG) { + echo '
                          After constrain No dates:'.count($components).' and last event date time is: '; + if (is_object($amr_last_date_time)) echo $amr_last_date_time->format('c'); + //var_dump($amr_last_date_time); + } + } + + amrical_mem_debug('Before listing'); + if (isset ($icals) and is_array($icals)) { +/* amr here is the main html code *** */ + if (isset($amr_limits['calendar_properties']) ) + $do_prop = $amr_limits['calendar_properties']; + else + $do_prop = true; + if ($do_prop) { + $tid = $w.'calprop'.$icalno; + $class = 'vcalendar '.$w.'icalprop '; //20110222 + $thecal = amr_list_properties ($icals, $tid, $class); /* list the calendar properties if requested */ + } + else $thecal = ''; + + if ((!amr_doing_box_calendar()) + and empty($components) ) { + $thecal .= amr_handle_no_events (); + } + else { + $tid = ''; + $class = ' ical '; + + $thecal .= amr_list_events($components, $tid, $class, $show_views=true); + } + + } + else $thecal = ''; /* the urls were not valid or some other error ocurred, for this spec, we have nothing to print */ +/* amr end of core calling code --- */ + + if (!empty($amr_options['do_grouping_js']) ) { + $thecal .= amr_ical_load_frontend_scripts(); + } + amrical_mem_debug('After generating listing'); + return ($thecal); + + } + +function amr_save_last_event_date($events) { // must have been sorted +global $amr_last_date_time; + if (is_array($events)) { + $lastevent = end($events); + if (!empty($lastevent['EventDate'])) { + $amr_last_date_time = $lastevent['EventDate']; + return $amr_last_date_time; + } + else { + if (ICAL_EVENTS_DEBUG) { echo ' No last date time in:'; var_dump($lastevent);} + } + } + else { + if (ICAL_EVENTS_DEBUG) { echo ' Events not an array'; var_dump($events);} + } + +// else will not save a last date. +} + +function amr_GET_params ($attributes=array()) { +/* We are passed the widget or shortcode attributes, + check them, get what we can there, then check for passed parameters (form or query string ) + Anything unset we will get from the default settings for that listtype. + The defaults list type is 1. + then set the amr_limits (note the calendar options may overwrite these) +*/ + global $amr_limits, /* has days, events, start ? end ?*/ + $amr_listtype, + $amr_liststyle, + $amr_options, + $amr_groupings, + $amr_fields_needed , + $amr_event_columns, // 20151018 add so we can use easily + $amr_formats, + $amr_globaltz, + $change_view_allowed, + $amr_calendar_url, + $amrW; // indicates if widget, + + $amr_options = amr_GETset_options(); + + +// + $defaults = array( /* defaults array for shortcode , - these override limits if they exist in limit, */ + 'listtype' => $amr_listtype, + 'startoffset' => '', + 'hoursoffset' => '', + 'monthsoffset' => '', + 'daysoffset'=> '', + 'start' => '', /* date('Ymd'), */ + 'days' => '', + 'events' => '', + 'months' => '', /* if we have months, start at begin of month and ignore days? */ + 'hours' => '', + 'weeks' => '', + 'tz' => '', + 'eventpoststoo' => '1', + 'agenda' => '', + 'calendar' => '', + 'eventmap' => '0', + 'show_views' => '1', + 'show_month_nav' => '0', + 'show_look_more' => '0', + 'day_links' => '1', + 'month_year_dropdown' => '0', + 'month_prev_next' => '0', + 'calendar_properties' => '1', + 'pagination' => '1', + 'headings' => '1', + 'ignore_query' => '', + 'grouping' => '', + 'more_url' => '', + 'no_filters' => '0', + 'sort_later_events_first' => '0', + 'exclude_in_progress' => '0' + ); + + $shortcode_params = shortcode_atts( $defaults, $attributes ) ; + + // + if (!empty ($attributes) ) { // if there is stuff left - must be urls + foreach ($attributes as $i => $v) { + if (is_numeric ($i) or ($i == 'ics')) { // ie if it is a value passed with no name, we expect only urls like that + if (substr($v, 0 ,1) == ':') { /* attempt to maintain old filter compatibity */ + $shortcode_params['urls'][$i] = substr ($v, 1); + } + $v2 = (str_ireplace('webcal://', 'http://',$v)); //keep the webcal + if ((function_exists('filter_var')) and (!filter_var($v2, FILTER_VALIDATE_URL))) { /* rejecting a valid URL on php 5.2.14 */ + echo '

                          '.sprintf(__('Invalid Ical URL %s','amr-ical-events-list'), $v2).'

                          '; + if (current_user_can('administrator')) { + echo '

                          Notes to admin only (does not show if not logged in as admin): +

                            +
                          • If you have put [ical in the widget - take it out!
                          • +
                          • the php validation functon does not cope with internationalised domain, please contact the developer if this affects you.
                          • +

                          '; + } + } + else + $shortcode_params['urls'][$i] = esc_url_raw($v); + unset ($attributes[$i]); + } + } // end foreach + } //end if + +// handle taxonomies we do not even know about yet + /* get the parameters we want out of the attributes, supplying defaults for anything missing */ + /* but now we may have missed taxonomies etc as the defaults do not know about them, so get the diff */ + if (!empty($attributes)) { + //var_dump($attributes); + //var_dump($shortcode_params); // - this could be multi-d array due to urls so array diff will throw a notice in php 5.4 + // maybe extract somehow ourselves? or use array_diff_key instead /**** + $taxo_selection = array_diff_key($attributes,$shortcode_params); + } + // if we had some taxos, marge them into shortcode selection + if (!empty($taxo_selection)) + $shortcode_params = array_merge ($shortcode_params,$taxo_selection ); + + $allow_query = (!isset($shortcode_params['ignore_query']) or !($shortcode_params['ignore_query']) ); + $ignore_query_all = (isset($shortcode_params['ignore_query']) and ($shortcode_params['ignore_query'] == 'all') ); + unset ($shortcode_params['ignore_query']); + + if ($allow_query) { + // + parse_str($_SERVER['QUERY_STRING'], $queryargs); /* Get anything passed in the query string that will override shortcodes */ + // check for posted values to get around that pesky problem + + if (isset($_GET['start'])) $queryargs['start'] = $_GET['start']; + + foreach ($queryargs as $i=>$arg) { + $queryargs[$i] = filter_var($arg, FILTER_SANITIZE_STRING); //Strip tags, + } + if ($change_view_allowed) { // for upcoming events widget, may want to allow query of days etc, but not the listtype change + if (isset($queryargs['calendar'])) + $queryargs['listtype'] = $queryargs['calendar']; + if (isset($queryargs['agenda']) ) + $queryargs['listtype'] = $queryargs['agenda']; + } + + + unset($queryargs['page_id']); + unset($queryargs['debug']); + If (isset($_GET['debugq'])) {echo '
                          Query allowed, attributes/args to consider adding:
                          '; var_dump($queryargs); } + + $shortcode_params = array_merge ($shortcode_params, $queryargs); + /* If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. + If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended. + */ +// if (ICAL_EVENTS_DEBUG) {echo '
                          After merge with query args
                          '; var_dump($shortcode_params); } + //unset($queryargs['listtype']); + } + else if (isset($_GET['debugq'])) {echo '
                          Ignoring most query parameters ';} +// + // save the global list type first + if (!empty($shortcode_params['listtype'])) { + $amr_listtype = $shortcode_params['listtype']; + unset($shortcode_params['listtype']); + + } + + + // unset($attributes['listtype']); + if ($change_view_allowed and $allow_query) { // then we will NOT ignore these query parameters as that will break our navigation + //if (ICAL_EVENTS_DEBUG) {echo '
                          Allowed to change views';} + if (isset($_GET['listtype'])) + $amr_listtype = intval ( $_GET['listtype']); + if (isset($_GET['eventmap'])) + $amr_listtype = 'eventmap'; // havent figured this out yet + } + + // check the listtype here ? + if (empty($amr_options['listtypes'][$amr_listtype])) { + if (current_user_can('administrator') ) { + echo (sprintf(__('System error - event list type %s missing - please inform administrator.', 'amr-ical-events-list'),$amr_listtype)); + + _e('Now using an available list type to list events','amr-ical-events-list'); + } + $amr_listtype = amr_first_available_listtype (); + } + + $amr_liststyle = (isset ($amr_options['listtypes'][$amr_listtype]['general']['ListHTMLStyle'])) + ? $amr_options['listtypes'][$amr_listtype]['general']['ListHTMLStyle'] + : $amr_liststyle = 'table';//; 'list' + + if (!empty ($shortcode_params['more_url']) ) { + $amr_calendar_url = esc_url($shortcode_params['more_url']); + unset($shortcode_params['more_url']); + } + +// always respond to start +// if (in_array ($amr_liststyle, array('smallcalendar','largecalendar', 'weekscalendar'))) { + // then query args overeride even if we have ignore query + if (!$ignore_query_all) { + if (isset($_GET['start'])) + $queryargs['start'] = $_GET['start']; //need here too + if (!empty($queryargs['start'])) { + $shortcode_params['start'] = abs ((int) $queryargs['start']); + if (ICAL_EVENTS_DEBUG) {echo '
                          START = '.$shortcode_params['start'];} + +// $shortcode_params['start'] = (substr((string) $shortcode_params['start'],0,6).'01'); //set to month start - done in month shortcdoe? + } + if (!empty($queryargs['months'])) + $shortcode_params['months'] = abs( (int) $queryargs['months']); + if (!empty($queryargs['tz'])) + $shortcode_params['tz'] = filter_var($queryargs['tz'],FILTER_SANITIZE_STRING); + } + else if (isset($_GET['debugall'])) echo '
                          ** Ignoring all query parameters'; + +//----------------------------------------------------------------------------------------------------------------- now do thelimits array + // then get the limits for that list type + + $amr_limits = $amr_options['listtypes'][$amr_listtype]['limit']; /* get the default limits */ + + if ($amr_liststyle === 'weekscalendar') { + $amr_limits['weeks'] = 2; // default for horizontal calendar + } + if (($amr_liststyle === 'largecalendar') or $amr_liststyle === 'smallcalendar') { + if (empty($amr_limits['months'])) $amr_limits['months'] = 1; // default for horizontal calendar + } + +// now check groupings + $gg = ''; + if (!empty($shortcode_params['grouping'])) + $gg = ucwords($shortcode_params['grouping']); + unset($shortcode_params['grouping']); + if (!empty($_GET['grouping'])) + $gg = ucwords($_GET['grouping']); + if (!($gg == '')) { + unset($amr_options['listtypes'][$amr_listtype]['grouping']); + if (array_key_exists($gg,$amr_groupings)) { // if it is a valid grouping + $amr_options['listtypes'][$amr_listtype]['grouping'][$gg] = true; + unset ($shortcode_params['grouping']); + } + } + + if (!empty ($shortcode_params ) ) { + foreach ($shortcode_params as $i => $v) { // must be atts not limits as atts may hold more then limits - limits just has initial limits + if (in_array($i, array( + 'headings', + 'show_views', + 'agenda', + 'eventmap', + 'calendar', + 'eventpoststoo', + 'pagination', + 'calendar_properties', + 'no_filters', + 'show_month_nav', + 'show_look_more', + 'day_links', + 'more_url', + 'month_year_dropdown', + 'month_prev_next' + ) )) { + $amr_limits[$i] = abs (intval ( $v)); + unset($shortcode_params[$i]); // only unset if empty what??? - else will lose others + } + else { + if (in_array($i, array('days','events','months','listtype','hours', 'weeks' + ,'daysoffset', 'startoffset', 'hoursoffset','monthsoffset'))) { + if (!empty($v)) + $amr_limits[$i] = (int)$v ; // can be negative, so no abs + unset($shortcode_params[$i]); + } + } + } + if (!empty($amr_limits['listtype'])) { + $amr_listtype = $amr_limits['listtype']; + if (ICAL_EVENTS_DEBUG) echo '
                          listtype set to: '; + } + } + + // else might be a taxonomy or categeory etc ... pass through - not if we have filtered string +/* ----check if we want to overwrite the wordpress timezone */ + if (!(empty($shortcode_params['tz']))) // allows one to overwrite the timezone + $amr_globaltz = timezone_open ($shortcode_params['tz']); + + unset ($shortcode_params['preview']); //clear it out so we do not pass to wp query + unset ($shortcode_params['tz']); //clear it out so we do not pass to wp query + + If (isset($_GET['tzdebug'])) { + + echo '

                          Plugin/Wordpress Timezone:'.timezone_name_GET($amr_globaltz); + echo ', current offset is '.$amr_globaltz->getOffset(date_create('now',$amr_globaltz))/(60*60).'

                          '; + } +//------------------------------- + $pos_int_options = array("options"=> array("min_range"=>1, "max_range"=>1000)); + $neg_int_options = array("options"=> array("min_range"=>-1000, "max_range"=>1000)); + /* check non url parameters */ + + if (empty ($shortcode_params['start'])) { + $amr_limits['start'] = date_create('now',$amr_globaltz); + } + else { + $amr_limits['start'] = abs((int) $shortcode_params['start']); + } + unset ($shortcode_params['start']); // clear it out so we do not pass it to wp query + +// work out whether we are doing a calendar or not. calendars must still respond to at least the month navigation + + foreach ($amr_limits as $i => $a) { // create our date objects + if (($i === 'start') or ($i === 'end')) { + if (!(is_object($a))) { + + $dateok = checkdate(substr($a,4,2), /* month */ + substr($a,6,2), /* day*/ + substr($a,0,4));/* year */ + + if ($dateok) { + $amr_limits[$i] = date_create($a,$amr_globaltz); + if (!is_object($amr_limits[$i])) { + amr_tell_error ($i.' ' + .__('Date could not be converted to date object.', 'amr-ical-events-list') + .__('Check date and global timezone.', 'amr-ical-events-list') + ); + var_dump($amr_limits[$i]); + var_dump($amr_globaltz); + } + } + else { + _e('Invalid Start Date', 'amr-ical-events-list'); + echo '
                          '.$i.' '.$a; + $amr_limits[$i] = date_create('now',$amr_globaltz); + } + } + /* else all is okay - we have default date of now */ + } + } + + if (!empty( $shortcode_params['daysoffset'])) { /* keeping startoffset for old version compatibility, but allowing for daysoffset for compatibility with other offsets */ + + $amr_limits['startoffset'] = (int) $shortcode_params['daysoffset']; // can be negative + } +/* ---- check for urls that are either passed by query or form, or are in the shortcode with a number or not ie: not ics = */ + + //set up global for easier access + $amr_formats = $amr_options['listtypes'][$amr_listtype]['format']; +// now adjust our start dta if necessary + if (!empty($amr_limits['startoffset'])) { + $daysoffset = (int)($amr_limits['startoffset']); + if ($daysoffset > 0) $daysoffset = '+'.(string)$daysoffset.' days'; + else $daysoffset = (string)$daysoffset.' days'; + date_modify($amr_limits['start'],$daysoffset) ; + } +// + if (!empty($amr_limits['hoursoffset'])) { + $hrsoffset = (int)($amr_limits['hoursoffset']); + if ($hrsoffset > 0) $hrsoffset = '+'.(string)$hrsoffset.' hours'; + else $hrsoffset = (string)$hrsoffset.' hours'; + date_modify($amr_limits['start'],$hrsoffset) ; /*** as per request from jd */ + } +// + if (!empty($amr_limits['monthsoffset'])) { + $mthsoffset = (int)($amr_limits['monthsoffset']); + if ($mthsoffset >= 0) $mthsoffset = '+'.(string)$mthsoffset.' months'; + else $mthsoffset = (string)$mthsoffset.' months'; + date_modify($amr_limits['start'],$mthsoffset) ; + } +// + if (!empty($amr_limits['hours'])) { /* then set the time to the beginning of the day , and get rid of months and days */ + date_time_set ($amr_limits['start'],$amr_limits['start']->format('G'),0,0); /* set the time to beginning of the hour */ + unset ($amr_limits['days']); + unset ($amr_limits['months']); + } + if (!empty($amr_limits['months'])) {/* then set the date to the beginning of the month and get rid of days */ + $days = (int) $amr_limits['start']->format('d'); + if ($days > 1) $amr_limits['start']->modify('-'.($days-1).' days'); + date_time_set ($amr_limits['start'],0,0,0); + unset ($amr_limits['days']); + } +// + if (empty($amr_limits['hours'])) {/* else use the days and then set the time to the beginning of the day */ + date_time_set ($amr_limits['start'],0,0,0); + } + + $wkst = ical_GET_weekstart(); // get the wp start of week + if (isset($_GET['debugwks'])) echo '
                          wkst = '.$wkst; + if (!empty($amr_limits['weeks'])) { // weeks overrides all else + + $amr_limits['start'] = amr_GET_human_start_of_week ($amr_limits['start'], $wkst); /* set to start of week */ + $amr_limits['days'] = $amr_limits['weeks'] * 7; + unset ($amr_limits['hours']); + + if (isset($_GET['debugwks'])) { echo '
                          Start set to = '.$amr_limits['start']->format('c');} + + } +// now find our end date - may get overridden if calendar + if (is_object($amr_limits['start'])) { + $amr_limits['end'] = new Datetime(); //if cloning dont need tz + $amr_limits['end'] = clone $amr_limits['start']; + } + else { // something horribly wrong here + amr_tell_eror (__('Error: Start data of range is not a date object. Please advise administrator','amr-ical-events-list')); + var_dump($amr_limits['start']); + } + + if (!empty($amr_limits['months'])) + date_modify($amr_limits['end'],'+'.($amr_limits['months']).' months') ; + if (!empty($amr_limits['days'])) + date_modify($amr_limits['end'],'+'.($amr_limits['days']).' days') ; + if (!empty($amr_limits['hours'])) + date_modify($amr_limits['end'],'+'.($amr_limits['hours']).' hours') ; + else date_modify($amr_limits['end'],'-1 second') ; /* so that we do not include events starting in the next time period */ + + if (isset($_GET['debug'])) echo '
                          end = '.$amr_limits['end']->format('c'); + + +// date_time_set ($amr_limits['end'],23,59,59); // if we have this, do we need the -1 second below? + If (isset($_GET['debugq'])) { + echo '
                          Before passing others
                          '; + var_dump($shortcode_params); + echo amr_echo_parameters(); + } + + $amr_event_columns = prepare_order_and_sequence ($amr_options['listtypes'][$amr_listtype]['compprop']); //do once earlier + + $amr_fields_needed = amr_extract_fields($amr_event_columns); // setup global + + return ($shortcode_params); // only return params needed for wp query ? +} + +function amr_GET_id_for_shortcode () { // allows for the possibility of multiple shortcodes in one page. +global $amr_icalno; + + if (!(isset($amr_icalno))) $amr_icalno = 0; + else $amr_icalno= $amr_icalno + 1; + + if ($amr_icalno == 0) $idnum= ''; + else $idnum = $amr_icalno; + $id = ' id="events_wrap'.$idnum.'" '; + + return ($id); +} + +function amr_do_ical_shortcode ($attributes, $content = null) { +global $amr_limits, + $change_view_allowed, + $amr_ical_am_doing;/* used to give each ical table a unique id on a page or post */ +// This is the main function. It replaces [iCal URL]'s with events. Each as a separate list +/* Allow multiple urls and only one listtype */ +/* merge atts with this array, so we will have a default list */ + +global $amr_been_here; +/* Test because if some numbskull puts the ical or events shortcodes IN an event. +*/ + if (amr_a_nested_event_shortcode ()) return (false); //someone entered an event shortcode into event content - causing a loop of events lists inside event lists + + $change_view_allowed = true; + $amr_ical_am_doing = 'list'; + $defaults['listtype'] = 1; + $defaults['eventpoststoo'] = '0'; + $defaults['show_views'] = 0; + $defaults['show_month_nav'] = 0; + $defaults['headings'] = 0; + + if (empty($attributes)) + $atts = $defaults; + else + $atts = array_merge( $defaults, $attributes ) ; + + $criteria = amr_GET_params ($atts); /* strip out and set any other attstributes - they will set the limits table */ + /* separate out the other possible variables like list type, then just have the urls */ + + + $content = amr_process_icalspec( + $criteria, + $amr_limits['start'], + $amr_limits['end'], + $amr_limits['events']); + + $id = amr_GET_id_for_shortcode(); + $html = '
                          '.$content.'
                          '; + + /* we made it out the other end with out looping ?*/ + $amr_been_here = false; + + return ($html); + +} + +function amr_do_smallcal_shortcode ($attributes) { +global $amr_limits, + $amr_listtype, + $change_view_allowed, + $amr_icalno, + $amr_ical_am_doing, + $amr_been_here; +// treat as widget anyway to avoid view changes etc +// This is the main function. It replaces [iCal URL]'s with events. Each as a separate list if no listtype set it to 8 +/* Allow multiple urls and only one listtype */ +/* merge atts with this array, so we will have a default list */ + $change_view_allowed = true; + $amr_ical_am_doing = 'smallcalendar'; + // set defaults, can be overridden by shortcode parameters + $defaults['listtype'] = 8; + $defaults['months'] = 1; + $defaults['show_views'] = 0; + $defaults['ignore_query'] = 0; + + if (amr_a_nested_event_shortcode ()) return (false); //someone entered an event shortcode into event content - causing a loop of events lists inside event lists + + if (empty($attributes)) $attributes = array(); + + $atts = array_merge( $defaults, $attributes ) ; + $criteria = amr_GET_params ($atts); /* strip out and set any other attstributes - they will set the limits table */ + // remove the custom post type parameter as it will cause us to lose all others and just show 1 event + + /* separate out the other possible variables like list type, then just have the urls */ + $id = amr_GET_id_for_shortcode(); // need this to increment icalno + + $content = amr_process_icalspec( + $criteria, + $amr_limits['start'], + $amr_limits['end'], + $amr_limits['events'], + $amr_icalno); + $change_view_allowed = true; // reset the global + + + if (isset ($amr_limits['months']) and ($amr_limits['months'] > 1)) + $id = ' id="multismallcalendar" '; + + $html = '
                          '.$content.'
                          '; + + /* we made it out the other end with out looping ?*/ + $amr_been_here = false; + return ($html); + +} + +function amr_do_largecal_shortcode ($attributes, $content = null) { +global $amr_limits, + $amr_listtype, + $change_view_allowed, + $amr_ical_am_doing, + $amr_icalno, + $amr_been_here; + ;/* used to give each ical table a unique id on a page or post */ +// This is the main function. It replaces [iCal URL]'s with events. Each as a separate list if no listtype set it to 8 +/* Allow multiple urls and only one listtype */ +/* merge atts with this array, so we will have a default list */ + + if (amr_a_nested_event_shortcode ()) return (false); //someone entered an event shortcode into event content - causing a loop of events lists inside event lists + + $change_view_allowed = true; + $amr_ical_am_doing = 'largecalendar'; + + $defaults['listtype'] = 9; + $defaults['months'] = 1; + $defaults['show_month_nav'] = 1; // default is on in calendar + + if (empty($attributes)) $atts = $defaults; + else $atts = array_merge( $defaults, $attributes ) ; + + $criteria = amr_GET_params ($atts); /* strip out and set any other attstributes - they will set the limits table */ + + /* criteria will be any selection */ + /* separate out the other possible variables like list type, then just have the urls */ + + $id = amr_GET_id_for_shortcode(); // need this to increment icalno + + $content = amr_process_icalspec($criteria, + $amr_limits['start'], + $amr_limits['end'], + $amr_limits['events'], + $amr_icalno); + + + $html = '
                          '.$content.'
                          '; + /* we made it out the other end with out looping ?*/ + $amr_been_here = false; + return ($html); + +} + +function amr_do_weekscal_shortcode ($attributes, $content = null) { +global $amr_limits, + $amr_listtype, + $change_view_allowed, + $amr_ical_am_doing, + $amr_icalno, + $amr_been_here;/* used to give each ical table a unique id on a page or post */ +// This is the main function. It replaces [iCal URL]'s with events. Each as a separate list if no listtype set it to 8 +/* Allow multiple urls and only one listtype */ +/* merge atts with this array, so we will have a default list */ + if (amr_a_nested_event_shortcode ()) return (false); //someone entered an event shortcode into event content - causing a loop of events lists inside event lists + + $change_view_allowed = true; + $amr_ical_am_doing = 'weekscalendar'; + + $defaults['listtype'] = 11; + $defaults['weeks'] = 2; + $defaults['months'] = 0; + $defaults['days'] = 14; + $defaults['show_month_nav'] = 1; // will actually do weeks + $defaults['show_views'] = ''; + + if (empty($attributes)) + $atts = $defaults; + else + $atts = array_merge( $defaults, $attributes ) ; + + $criteria = amr_GET_params ($atts); /* strip out and set any other attstributes - they will set the limits table */ + + /* criteria will be any selection */ + /* separate out the other possible variables like list type, then just have the urls */ + + $id = amr_GET_id_for_shortcode(); // need this to increment icalno + + $content = amr_process_icalspec($criteria, + $amr_limits['start'], + $amr_limits['end'], + $amr_limits['events'], + $amr_icalno); + + + $html = '
                          '.$content.'
                          '; + + /* we made it out the other end with out looping ?*/ + $amr_been_here = false; + return ($html); + +} + +function amr_first_available_listtype() { + global $amr_options; + if (isset ($amr_options['listtypes']['4'])) + return('4'); // use the widget list type if still there as least offensive general purpose list type + $keys = array_keys($amr_options['listtypes']); + return (array_shift($keys)); +} + +function amr_GET_set_start_for_nav () { // gets or sets a date object to the begiinging of the curremt month, or the passed date + + if (isset($_GET['start'])) { + $starttxt = intval ($_GET['start']); + $starttxt = substr($starttxt,0,4).'-'.substr($starttxt,4,2).'-'.substr($starttxt,6,2); + $nstart = amr_newDateTime($starttxt); + } + else { + $nstart = amr_newDateTime(''); // must always set to first of month for dropdown to work + $y = $nstart->format('Y'); + $m = $nstart->format('m'); + $nstart->setDate($y,$m,'01'); + } + return ($nstart); +} +/* +/* --------------------------------------------------------------------- */ +function amr_ical_widget_init() { + register_widget('amr_ical_widget'); + register_widget('amr_icalendar_widget'); +} + +function amrical_add_scripts() { + wp_enqueue_script('jquery'); + wp_enqueue_script('jquery-ui-core'); +} + +function amrical_add_adminstyle() { + if ((stristr ($_SERVER['QUERY_STRING'],'manage_amr_ical')) + or (stristr ($_SERVER['QUERY_STRING'],'manage_event_listing'))) { + $myStyleUrl = ICALLISTPLUGINURL.'css/icaladmin.css'; + $myStyleFile = ICALLISTPLUGINDIR.'css/icaladmin.css'; + if ( file_exists($myStyleFile) ) { + wp_register_style('amricaladmin', $myStyleUrl); + wp_enqueue_style( 'amricaladmin'); + } + } +} + +function amr_ical_exception_handler($exception) { + + echo __("Uncaught exception: ", 'amr-ical-events-list') , $exception->getMessage(), "\n"; + _e('

                          An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible.', 'amr-ical-events-list'); + +} + +function amr_notice_listtypes_converted () { // from version < 4.0 to version 4.0 + + echo ('
                          ' + .__('Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? ','amr-ical-events-list').'
                          '); + echo '
                          '; + } + +function amr_ical_include_scripts() { // only load js if requested + global $amr_listtype,$amr_options,$amr_doing_icallist; + // csss required for widgets etc, so allow general load + + if (empty($amr_doing_icallist)) return; + if (empty($amr_options['do_grouping_js'])) return; + $url = plugins_url().'/amr-ical-events-list/js/amr-ical.js'; + // wp_register_script( 'amr-ical', $url.'amr-ical.js', array( 'jquery'), false, false); + wp_enqueue_script( 'amr-ical', $url, array( 'jquery'), false, true); // true for in footer + + } + + function amr_ical_load_frontend_scripts() { // only load js if requested + // csss required for widgets etc, so allow general load + wp_enqueue_script('jquery'); + // later amr_ical_load_date_picker(); + } + + /** + Adds a links directly to the settings page from the plugin page + */ +function amr_plugin_links($links, $file) { + if ( $file == 'amr-ical-events-list/amr-ical-events-list.php' ) { + $links[] = '' + . __('Settings', 'amr-ical-events-list') . ""; + $links[] = "" . __('List Type Settings', 'amr-ical-events-list') . ""; + $links[] = "" . __('Documentation', 'amr-ical-events-list') . ""; + } + return $links; + } // end plugin_links() + +function amr_exclude_private_events($events) { // may later want to change this to show if owner is logged in? + + foreach ($events as $i => $event) { + + if (!empty($event['CLASS']) and ( + (($event['CLASS'] ==='PRIVATE') or $event['CLASS'] ==='CONFIDENTIAL') )) { + unset ($events[$i]); + if (ICAL_EVENTS_DEBUG) echo '
                          Private event excluded'; + } + + } + return ($events); +} + + //201703 remove - it is interfering with php 7 exception handling. We had this for a reason - will painful support go up? We actually only want this if we are running in the ics file handler and there is crap data that has suddenly appeared in the input file - tough ? + //set_exception_handler('amr_ical_exception_handler'); + + //amr_ical_initialise (); // setup all basic settings, like globals and constants etc + add_action('plugins_loaded' , 'amr_ical_initialise' ); // so can check debug + if (is_admin() ) { + add_action('admin_init' , 'amrical_add_adminstyle'); + add_action('admin_menu' , 'amrical_add_options_panel'); + add_action('admin_print_scripts', 'amrical_add_scripts'); + } + else { // add_action('wp_head' , 'amr_ical_events_style'); + add_action('wp_print_styles' , 'amr_ical_events_style'); + add_action('wp_enqueue_scripts' , 'amr_ical_load_frontend_scripts' ); //enque jquery + add_action('wp_footer' , 'amr_ical_include_scripts' ); // add js to footer + } + + add_action('widgets_init' , 'amr_ical_widget_init'); + // as per ottos post for language packs + //add_action( 'init' , 'amr_ical_load_text' ); + add_shortcode('iCal' , 'amr_do_ical_shortcode'); + add_shortcode('ical' , 'amr_do_ical_shortcode'); // in case people make mistake + add_shortcode('smallcalendar' , 'amr_do_smallcal_shortcode'); + add_shortcode('largecalendar' , 'amr_do_largecal_shortcode'); + add_shortcode('weekscalendar' , 'amr_do_weekscal_shortcode'); + add_shortcode('expandall' , 'amr_expand_all'); + + register_activation_hook(__FILE__, 'amr_ical_events_list_record_version'); + add_filter('plugin_row_meta', 'amr_plugin_links', 10, 2); + add_filter('amr_events_before_sort', 'amr_exclude_private_events',10,1); + //add_action('plugins_loaded', 'amr_debug_time'); // removed for now - 'only' a debug function wrt to load times and somehow functionnotfound in mutisite. + +?> \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-fields-admin.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-fields-admin.php new file mode 100644 index 0000000..9854a27 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-fields-admin.php @@ -0,0 +1,143 @@ + $l) { // foreach list + if (isset($l['compprop'])) { + foreach ($l['compprop'] as $f => $opt) { + if (empty($opt['Column'])) { + if (empty($allfieldsinuse[$f])) + $allfieldsinuse[$f] = 0; + } + else + if (empty($allfieldsinuse[$f])) + $allfieldsinuse[$f] = 1; + else + $allfieldsinuse[$f] ++; + } + } + } + // any new defaults ? + foreach ($defaults['listtypes'] as $i=> $l) { + if (isset($l['compprop'])) { + foreach ($l['compprop'] as $f => $opt) { + if (!isset($allfieldsinuse[$f])) + $allfieldsinuse[$f] = 0; + } + } + } + // check descriptions just in case ? - no also has componemts +/* foreach ($desc as $i=> $l) { + if (empty($allfieldsinuse[$i])) + $allfieldsinuse[$i] = 0; + } +*/ + + if (!empty($inuse)) { // we already got somethingstored + foreach ($inuse as $i=> $l) { + if (!isset($allfieldsinuse[$i])) // its no longer possible, delete it + unset($inuse[$i]); + } + } + else $inuse = array(); // no option yet + + foreach ($allfieldsinuse as $i=> $l) { // for all the fields we know about + if (!isset($inuse[$i])) // is maybe new? - not empty because thats just what we set before + $inuse[$i] = $allfieldsinuse[$i]; + } + + // var_dump($inuse); + array_multisort(array_values($inuse), SORT_DESC, array_keys($inuse), SORT_ASC, $inuse); + return ($inuse); +} + + +function amrical_choose_fields() { + global $amr_options; + //$nonce = wp_create_nonce('amr-ical-events-list'); /* used for security to verify that any action request comes from this plugin's forms */ + + amrical_admin_heading(__('Choose event and calendar fields ', 'amr-ical-events-list')); + + $inuse = amr_whats_in_use(); + $desc = amr_set_helpful_descriptions (); + if (isset ($_POST['action']) and ($_POST['action'] == "save")) { + $nonce = $_REQUEST['_wpnonce']; + if (! wp_verify_nonce($nonce, 'amr-ical-events-list')) + die ("Cancelled due to failed security check"); + /* Validate the input and save */ + if (isset($_POST['reset'])) { + echo '

                          '; + _e('Resetting....','amr-ical-events-list'); + delete_option('amr-event-fields-in-use'); + echo '

                          '; + $inuse = amr_whats_in_use(); + } + /* Validate the input and save */ + else + $inuse = amr_ical_validate_fields($inuse); + } + + array_multisort(array_values($inuse), SORT_DESC, array_keys($inuse), SORT_ASC, $inuse); + //$fields - an array of fields used in a column + echo '

                          '.__('To simplify choose a subset of fields to work with:' , 'amr-ical-events-list').'

                          '; + echo '
                          '; + foreach ($inuse as $f => $bool) { + + echo '

                          '; + else + echo '>'; + echo ''.$f.' ('.$bool.'x)'; + if (!empty($desc[$f])) echo ' - '.$desc[$f].''; + echo '

                          '; + + } + + amr_ical_submit_buttons (__('Reset','amr-ical-events-list')); + + echo '
                          '; +} //end amrical_option_page + + +function amr_ical_validate_fields($inuse) { +global $amr_options; + + if (isset($_POST['inuse'])) { + foreach ($inuse as $f => $bool) { + //echo $f; var_dump($bool); + if (!empty($bool) and (!isset($_POST['inuse'][$f]))) { + $inuse[$f] = 0; + echo 'Unsetting '.$f.'
                          '; + } + } + foreach ($_POST['inuse'] as $f => $bool) { + //echo $f; var_dump($bool); + if (isset($bool) and (empty($inuse[$f]))) { + $inuse[$f] = 1; + echo 'Adding '.$f.'
                          '; + } + } + + + } + + echo '

                          '; + _e('Saving....','amr-ical-events-list'); + update_option('amr-event-fields-in-use', $inuse); + echo '

                          '; + return($inuse); + +} diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-groupings.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-groupings.php new file mode 100755 index 0000000..5b19d1c --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-groupings.php @@ -0,0 +1,410 @@ +'.__('Show all', 'amr-ical-events-list').'' + .' '.__('Hide all', 'amr-ical-events-list').'
                          '; + return($html); +} +/* -------------------------------------------------- */ +function amr_list_event_subset ($htm, $columns, $subset, $events) { // now a flat array of ids + $html = ''; + $alt = false; + if ((!is_array($events)) or (count($events) < 1 )) return (''); + if ((!is_array($subset)) or (count($subset) < 1 )) return (''); + $no_cols = count($columns); +// foreach ($events as $i => $e) { /* for each event, loop through the properties and see if we should display */ + foreach ($subset as $i => $eventindex) { /* for each event, loop through the properties and see if we should display */ + $e = $events[$eventindex]; + amr_derive_component_further ($e); + amr_decide_display_timezone($e); // determine timezone that this event should be shown in + if (!empty($e['Classes'])) + $classes = strtolower($e['Classes']); + else + $classes = ''; + + $eprop = ''; /* each event on a new list */ + $prevcol = 0; + $colcount = 0; + $col = 1; /* reset where we are with columns */ + + $rowhtml = ''; + foreach ($columns as $col => $order) { // prepare the row + $eprop = ''; + foreach ($order as $k => $kv) { /* ie for one column in event, check how to order the bits */ + + /* Now check if we should print the component or not, we may have an array of empty string */ + if (isset($e[$k])) { + $v = amr_check_flatten_array ($e[$k]); // *** huh? shoudl we do this here? + + } + else + $v =null; + + $selector = $htm['li']; + $selectorend = $htm['lic']; + if (!empty($selector)) $selector .=' class="'.strtolower($k).'">'; + + if (!empty($v)) { // some custom eg: TRUMBA fields may have empty or no values + + $eprop .= $selector + .amr_format_value($v, $k, $e,$kv['Before'],$kv['After'] ) + .$selectorend; + } + } + + if (empty($eprop)) $eprop = ' '; // a value for a dummytable cell if tere were no values in the column + + // annoying but only way to pass variables by reference is through an array, must return array to then. + // so to allow filter of column and pass which column it is, thsi is how we do it + $tmp = apply_filters('amr_events_column_html', + array('colhtml'=>$eprop, 'col'=>$col)); + + $eprop = $tmp['colhtml']; + + if (!empty($ul)) // will phase the ul's out eventually + $eprop = $ul.' class="amrcol'.$col.' amrcol">' + .$eprop + .$htm['ulc']; + + /* each column in a cell or list */ + $cellclasses = ''; + if (!empty($htm['cell']) ) { // if we have a selector that surounds each property , then add classes. + $cellclasses .= ' amrcol'.$col; + if ($col == $no_cols) { + $cellclasses .= ' lastcol'; /* only want the cell to be lastcol, not the row */ + } + $thiscolumn = $htm['cell'].' class="'.$cellclasses.'">' .$eprop. (empty($htm['cellc']) ? '' : $htm['cellc']); + } + else $thiscolumn = $eprop; + + $rowhtml .= $thiscolumn; // build up the row with each column + } // end row + + // so now we have finished that group, start next + // save the event or row, for next group + if (!empty($rowhtml)) { + $tmp = apply_filters('amr_events_event_html', array('rowhtml'=>$rowhtml, 'event'=>$e)); + $rowhtml = $tmp['rowhtml']; + $rowhtml = (!empty($htm['row']) ? ($htm['row'].($alt ? ' class="odd alt':' class="').$classes.' event"> ') : '') + .$rowhtml + .$htm['rowc']; + + if ($alt) $alt=false; + else $alt=true; + + $html .= $rowhtml; /* build the group of events , adding on eprop */ + $rowhtml = ''; + } + + } + //end of row or event + return $html; +} +/* -------------------------------------------------- */ +function amr_list_events_in_groupings ($htm, $id='', $columns, $groupedevents, $events) { // 2 levels of grouping only at moment + + if (empty($events)) return; + $html = ''; + if (empty($groupedevents)) { + $all= array_keys($events); + $html .= $htm['body'].'>'.amr_list_event_subset ($htm, $columns, $all, $events).$htm['bodyc']; + return $html; + } + + $prevtitle = ''; + + foreach ($groupedevents as $g => $nextlevel) { + + if (!empty($nextlevel['title'])) { // there are titles + //echo + if (is_array($nextlevel['title'])) { + $hhtml = ''; + foreach ($nextlevel['title'] as $i => $titlestring) { //if (isset($_GET['debugg'])) {echo '
                          Title='.$titlestring;} + if ($i == 0 ) { // for first title only + if ($titlestring == $prevtitle ) continue; // only show the outer title once + else $prevtitle = $titlestring; + if (!empty($nextlevel['parent'])) { + $id = get_term_by('id',$nextlevel['parent'],$nextlevel['grouping'] ); + $id = 'id="'.$id->slug.'" '; + } + } + else $id=''; + + $hhtml .= amr_do_grouping_html($htm,$id, 'level'.$i.' '.$nextlevel['grouping'], $titlestring); + } + $html .= $htm['body'].' class="toggle_container" >'.$hhtml; // cannot have multiple thead + } + + $html = $html.amr_list_event_subset ($htm, $columns, $nextlevel['events'], $events).$htm['bodyc']; + } + else { + + $html .= amr_list_events_in_groupings ($htm, $id, $columns, $nextlevel, $events); + } + +// check next level ?? + + } + + return $html; +} +/* -------------------------------------------------- */ +function amr_produce_tree_from_array ($terms, $parent=0) { +// get all where parent = 0, unset +// then for eah parent get children,unset +//repeat till none left + $tree = array(); +// get all that match parent + if (!empty($terms)) { + foreach($terms as $i=>$term) { + if ($term->parent == $parent) { + $tree[$term->term_id] = $term->term_id; // create top level + unset ($terms[$i]); + if (!empty($terms)) { + echo '
                          '.$term->term_id.' '.$term->name.' terms left:'.count($terms); + $tree[$term->term_id] = amr_produce_tree_from_array ($terms, $term->term_id); // any children ? + } + } + else echo '
                          not a child '.$term->term_id.' has parent '.$term->parent; + + } + } + //if (WP_DEBUG) {echo '
                          The tree: '; var_dump($tree);} + return ($tree); +} +/* -------------------------------------------------- */ +function amr_assign_events_to_dategrouping ($dategrouping, $eventsubset, $events) { + + foreach ($eventsubset['events'] as $i => $index) { + //if (WP_DEBUG) echo '
                          dategrouping = '.$dategrouping; + if (empty($events[$index]['EventDate'])) + $datetouse = $events[$index]['DTSTART']; + else + $datetouse = $events[$index]['EventDate']; + $groupstring = amr_format_grouping($dategrouping, $datetouse); + $groupsubset[$groupstring]['events'][] = $index; + } + $first = true; + foreach ($groupsubset as $groupstring => $garray) { + + if (is_array($eventsubset['title'])) + $groupsubset[$groupstring]['title'] = $eventsubset['title']; // the top level title + else + $groupsubset[$groupstring]['title'][] = $eventsubset['title']; // the top level title + $groupsubset[$groupstring]['title'][] = $groupstring; + $groupsubset[$groupstring]['grouping'] = $dategrouping; // remember it + //echo '
                          Date: '.$groupstring; var_dump($groupsubset[$groupstring]); echo '
                          '; + } + return $groupsubset; // subarray of events eg: [Jan2001] = array(id1,id2) +} +/* -------------------------------------------------- */ +function amr_assign_events_to_taxogrouping ($taxonomy_groupby, $eventsubset, $events) { // still in flat taxonomy + + foreach ($eventsubset['events'] as $i => $index) { + if (!empty($events[$index][$taxonomy_groupby])) { //ie the event has a taxonomy term + if (is_array($events[$index][$taxonomy_groupby])) { // it probably will be + foreach ($events[$index][$taxonomy_groupby] as $j => $taxoterm) { + $groupsubset[$taxoterm]['events'][] = $index; + } + } + else { + if (isset($_GET['debugg'])) echo ' ** Taxonomy terms not an array'; var_dump($event[$taxonomy_groupby]); + } + } + else { if (isset($_GET['debugg'])) {echo '
                          *** No value for '.$taxonomy_groupby.' in event '.$events[$index]['id']; } + } + } + if (isset($_GET['debugg'])) {echo '
                          Grouped events by taxo grouping: '.$taxonomy_groupby.'
                          '; var_dump($groupsubset);} + if (empty($groupsubset)) return false; + // now check all the groups identified + foreach ($groupsubset as $taxoterm => $garray) { // garray = array [events] + $term = get_term_by('id', $taxoterm, $taxonomy_groupby); + $terms[] = $term; + if (is_array($eventsubset['title'])) + $groupsubset[$taxoterm]['title'] = $eventsubset['title']; + else + $groupsubset[$taxoterm]['title'][] = $eventsubset['title']; + // now add to the titles + $groupsubset[$taxoterm]['title'][] = amr_prepare_term_title($taxoterm, $taxonomy_groupby); + $groupsubset[$taxoterm]['grouping'] = $taxonomy_groupby; // remember it for later + + //if (isset($_GET['debugg'])) {echo '
                          Checking for parent:
                          '; var_dump($term);} + if (isset($term->parent)) $groupsubset[$taxoterm]['parent'] = $term->parent; // remember it for later + //build up levels of titlle relative to nesting + //echo '
                          After taxo groupings: '.$taxoterm; var_dump($groupsubset[$taxoterm]); echo '
                          '; + } + //if (WP_DEBUG) {echo '
                          *** Terms'; VAR_DUMP($terms);} + + $taxo = get_taxonomy($taxonomy_groupby); + //echo '
                          TAXO: ';var_dump($taxo); + if ($taxo->hierarchical) { // if a hierarchical taxonomy , do some funky footwork !!!*** MAYBE CHECK IF WANT TO DO HIERARCHICALLY + if (isset($_GET['debugg'])) echo '
                          It is hierarchical, so handle it:
                          '; + $groupsubset = amr_handle_taxonomy_hierarchy($taxonomy_groupby, $groupsubset); + } + // now we want to reorder by the nesting / tree structure and add title ? + return $groupsubset; // subarray of events eg: [cat1] = array(id1,id2), [cat2]= array(id2,id4) +} +/* -------------------------------------------------- */ +function amr_handle_taxonomy_hierarchy ($taxonomy_groupby, $groupsubset) { + // need to sort by parents , so they will appear in correct order hierarchically (add a class ?) + $newset = amr_sort_by_key($groupsubset, 'parent'); + //if (isset($_GET['debugg'])) {echo '
                          sorted by parent ';foreach ($newset as $t => $arr){ echo '
                          '.$t.'
                          '; var_dump($arr);} ;} + // then for each parent, if it has not appeared, we need to 'add it' before the child - will have no events + + $args = array( + 'orderby' => 'term_group', // id, count, name - Default, slug, term_group, none + //'order' => 'ASC', // DESC + 'hide_empty' => 1, + 'fields' => 'all', //default + 'hierarchical' => true // pass even if empty, if child not empty + ); + + // get the terms for that taxonomy ? how to sort ???? + $terms = get_terms ($taxonomy_groupby, $args); + foreach ($newset as $termname => $garray) { // for our newly sorted array + if (!empty($garray['parent'])) { + //if (isset($_GET['debugg'])) {echo '
                          Term = '.$termname.' Parent = '.$garray['parent'];} + $parentterm = get_term($garray['parent'],$taxonomy_groupby ); + if (isset($_GET['debugg'])) {echo '
                          ParentTerm = '; var_dump($parentterm->name);} + if (!isset($newset[$parentterm->name])) {// then it hasn't appeared + //if (isset($_GET['debugg'])) {echo '
                          Title to add:'.$parentterm->name;} + $grptitle_to_add = amr_prepare_term_title($parentterm->name, $taxonomy_groupby); + if (isset($_GET['debugg'])) {echo '
                          Existing title ='; var_dump($newset[$termname]['title']); echo '
                          Title to add:'.$grptitle_to_add;} + array_unshift($newset[$termname]['title'],$grptitle_to_add ); + if (isset($_GET['debugg'])) {echo '
                          New set of titles:
                          '; var_dump($newset[$termname]['title']);} + } + else {if (isset($_GET['debugg'])) echo '
                          already have in this parent '.$parentterm->name;} + } + + } + return ($newset); +} +/* -------------------------------------------------- */ +function amr_assign_events_to_a_grouping ($grouping, $eventsubset, $events) { + if (in_array($grouping, array( + 'Year', + 'Month', + 'Day', + 'Week', + 'Quarter', + 'Astronomical Season', + 'Traditional Season', + 'Western Zodiac', + 'Solar Term' ), true)) { + $groupsubset = amr_assign_events_to_dategrouping ($grouping, $eventsubset, $events); + // returns array[grouping][events] + // [title] + } + elseif (taxonomy_exists( $grouping )) { // ie it is a taxonomy + + $groupsubset = amr_assign_events_to_taxogrouping ($grouping, $eventsubset, $events); + + } + else { // as yet unknown - maybe grouping by location ? - depends how stored then, maybe save places as taxo terms ? + if (WP_DEBUG) echo '
                          Unknown grouping: '.$grouping; + $groupsubset = array(); + } + return ($groupsubset); +} +/* -------------------------------------------------- */ +function amr_assign_events_to_groupings ($groupings, $events) { +// assign events to first level of grouping, handling hierarchical +// then assign that subset to next level ? + if (empty($groupings)) return false; + // chcek / convert grupings + foreach ($groupings as $i => $g) { + if (is_bool($g)) { + if (!$g) unset ($groupings[$i]); + else $groupings[$i] = $i; + } + } + if (isset($_GET['debugg'])) {echo '
                          Groupings requested: '; var_dump($groupings);} + $grouping = array_shift($groupings); // get the first + // setup initial 'subset' which is actually all + //if (WP_DEBUG) {echo '
                          Start with grouping '.$grouping;} + + foreach ($events as $i => $event) { + $eventsubset['events'][] = $i; + } + $eventsubset['title'] = array(); + + $groupsubset = amr_assign_events_to_a_grouping ($grouping, $eventsubset, $events); + if (empty ($groupsubset) ) return false; + //should now have ? array [$taxo][events] + // ............................[title] + + //if (isset($_GET['debugg'])) { echo '
                          First Pass *************
                          '; + //foreach ($groupsubset as $g => $arr ) {echo '
                          ***'.$g.'
                          '; var_dump($arr); echo '
                          ';}} + + if (!empty($groupings)) { // only allows two levels for now + + $grouping = array_shift($groupings); // get the 2nd grouping + //if (WP_DEBUG) {echo '
                          And then with grouping '.$grouping;} + foreach ($groupsubset as $grp => $garray) { // overwrite the curremt subset with the next level tree + if (isset($_GET['debugg'])) echo '
                          Doing grp = '.$grp; //.' with'; var_dump($garray); + $groupsubset[$grp] = amr_assign_events_to_a_grouping ($grouping, $garray, $events); + //should now have ? array [$taxo or date ][events] + // ............................[title] + //echo '
                          Then have '; var_dump($groupsubset[$grp]); echo '
                          '; + + } + } + return $groupsubset; +} +/* -------------------------------------------------- */ +function amr_do_grouping_html($htm, $id, $class, $titlestring) { + + $html = + ((!empty($htm['grow'])) ? $htm['grow'].$id.' class="trigger group '.$class.'">' : '') + .((!empty($htm['ghcell'])) ? $htm['ghcell'].' class="group '.$class. '" >' : '') + .$titlestring + .$htm['ghcellc'] + .$htm['growc']; + return $html; + +} +/* -------------------------------------------------- */ +function amr_prepare_term_title($term, $taxo) { // this is a term +global $amr_options,$amr_listtype; + + if (is_int($term)) $termdata = get_term_by('id', $term, $taxo, ARRAY_A); + else $termdata = get_term_by('name', $term, $taxo, ARRAY_A); + $termstring = ''.$termdata['name'].''; // to facilitate collapsability + + if (true or !empty ($amr_options['listtypes'][$amr_listtype]['grouping_settings']['show_description'])) { //*** + if (!empty($termdata['description'])) + $termstring .=' '.$termdata['description'].''; + // allow own definition of how taxonomy term should look + } + $termstring = apply_filters('amr_term_grouping_title',$termstring,$term); + return $termstring; +} +/* -------------------------------------------------- */ +function amr_get_groupings_requested () { +global $amr_options, + $amr_listtype, + $amr_groupings; + + if (isset ($amr_options['listtypes'][$amr_listtype]['grouping'])) { + foreach (($amr_options['listtypes'][$amr_listtype]['grouping']) as $i => $level) + { if ($level) { $g[$level] = $i; } } + } + + if (!empty($g)) return ($g); + else return false; +} +/* -------------------------------------------------------------------------------------------*/ +function amr_do_a_grouping($htm, $gi, $ghtml) { + /* we have a new group */ + $id = amr_string($gi.$new[$gi]); + $html = + ((!empty($htm['grow'])) ? $htm['grow'].'class="group '.$gi.'">' : '') + .((!empty($htm['ghcell'])) ? $htm['ghcell'].' class="group '.$gi. '" >' : '') + .$grouping + .$htm['ghcellc'] + .$htm['growc']; + return $html; +} +/* -------------------------------------------------------------------------------------------*/ diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-list-admin.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-list-admin.php new file mode 100644 index 0000000..2de4365 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-list-admin.php @@ -0,0 +1,1533 @@ +'. __('Settings','amr-ical-events-list').'' ); + } + + return $links; + } // end plugin_action() + +function amr_ical_support_links () { + + echo '
                          +

                          + '; + _e('Documentation', 'amr-ical-events-list'); + echo '   + '; + _e('Support', 'amr-ical-events-list'); +/* echo '   + '; + _e('Videos', 'amr-ical-events-list'); + */ + echo '   + '; + _e('Rate or Review', 'amr-ical-events-list'); + echo '  '; + _e('Plugin feed', 'amr-ical-events-list'); + echo ' Rss icon'; + echo '

                          '; + echo '

                          '; + _e('To edit events in wordpress:','amr-ical-events-list'); + echo ' '; + _e('Upgrade to amr-events at ','amr-ical-events-list'); + + echo ' icalevents.com'; + echo '
                          '; + + _e('Need help remembering shortcodes?', 'amr-ical-events-list'); + ?> +

                          + + +
                          + + +

                          '; + + if (function_exists('timezone_version_get')) + printf('
                        11. '.__('Your timezone db version is: %s','amr-ical-events-list').'
                        12. ', timezone_version_get()); + else echo '
                        13. '.'' + .__('Plugin cannot determine timezonedb version in php < 5.3.' ,'amr-ical-events-list') + .''; + echo '
                        14. '; + _e('Php timezonedb versions', 'amr-ical-events-list'); + echo '   '; + _e('Info on what changes are in which timezonedb version', 'amr-ical-events-list'); + echo '
                        15. '; + if (!(isset($amr_globaltz))) { + echo ''.__('No global timezone - is there a problem here? ','amr-ical-events-list').''; return; + } + $tz = get_option('timezone_string'); + $settingslink = ''.__('Go to settings','amr-ical-events-list').''; + if ($tz == '') { + $gmtoffset = get_option('gmt_offset'); + if (!empty($gmtoffset ) ) { + printf('
                        16. '.__('You are using the "old" gmt_offset setting ','amr-ical-events-list').'
                        17. ', $gmtoffset ); + _e('Consider changing to the more accurate timezone setting','amr-ical-events-list'); + echo '
                        18. '; + } + } + $now = date_create('now', $amr_globaltz); + echo '
                        19. '.__('The plugin thinks your timezone is: ','amr-ical-events-list') + . timezone_name_get($amr_globaltz) + .' '.$settingslink + .'
                        20. ' + .'
                        21. '.__('The current UTC offset for that timezone is: ','amr-ical-events-list').$now->getoffset()/(60*60).'
                        22. '; + + if (function_exists('timezone_transitions_get') ) { + + foreach (timezone_transitions_get($amr_globaltz) as $tr) { //2018 06 24 remove the break code just in case + if (empty($nexttransition) and ($tr['ts'] > time())) { + $nexttransition = $tr; + } + } + $tr = $nexttransition; + } + + $utctz= new DateTimeZone('UTC'); + if (isset ($tr['ts']) ) { + + $d = amr_create_date_time ( "@{$tr['ts']}",$utctz ); + //try {$d = new DateTime( "@{$tr['ts']}",$utctz );} + //catch(Exception $e) { break;} + + date_timezone_set ($d,$amr_globaltz ); + printf('
                        23. '.__('Switches to %s on %s. GMT offset: %d', 'amr-ical-events-list').'
                        24. ', + $tr['isdst'] ? "DST" : "standard time", + $d->format('d M Y @ H:i'), $tr['offset']/(60*60) + ); + } + echo '
                        25. '; + _e('Current time (unlocalised): ','amr-ical-events-list'); + echo $now->format('r'); + echo '
                      '; + } + +function amr_ical_submit_buttons ($resettext='') { + + if (empty($resettext)) + $resettext=__('Reset all listing options', 'amr-ical-events-list'); + + echo '
                      + + '; + + echo '     +
                      '; + +} + +function amrical_listing_options_page() { + global $amr_options; + + if (isset ($_POST['reset'])) + $amr_options = amr_getset_options (true); + else + $amr_options = amr_getset_options(false); /* options will be set to defaults here if not already existing */ + + if (!isset($_REQUEST["list"]) ) { + amrical_admin_heading(__('Manage Event List Types', 'amr-ical-events-list') ) ; + + if (!empty($_POST['delete']) ) /* Validate the input and save */ + amrical_delete_listings(); + elseif ((isset ($_POST['action']) and ($_POST['action'] == "save")) and !isset($_POST['reset'])) /* Validate the input and save */ + amrical_validate_manage_listings(); + + amr_ical_submit_buttons (); + amrical_manage_listings(); + amrical_admin_footer(); + return; + } + else { + $listtype = intval( $_REQUEST["list"]); + + amrical_admin_heading(__('Configure event list type: ', 'amr-ical-events-list'). $listtype ) ; + amrical_admin_navigation(); + + $calendar_preview_url = get_option('amr-ical-calendar_preview_url' ); + if ($calendar_preview_url) { + echo '' + .__('Preview','amr-ical-events-list').''; + } + + + if ((isset ($_POST['action']) and ($_POST['action'] == "save")) and !isset($_POST['reset'])) {/* Validate the input and save */ + echo '

                      '; + _e('Saving....','amr-ical-events-list'); + $result = amr_ical_validate_list_options($listtype); /* messages are in the function */ + if ($result) _e('Lists saved','amr-ical-events-list'); + else _e('No change to options or unexpected error in saving','amr-ical-events-list'); + echo '

                      '; + + } + amr_ical_submit_buttons (); + amr_configure_list($listtype); + amrical_admin_footer(); + } +} //end amrical_option_page + +function amrical_delete_listings () { +global $amr_options; + + $nonce = $_REQUEST['_wpnonce']; + if (! wp_verify_nonce($nonce, 'amr-ical-events-list')) die ("Cancelled due to failed security check"); + + echo '

                      '.__('Check for lists to delete','amr-ical-events-list').'

                      '; +// ------------------- deleted lists + if (!empty($_POST['deletelist'])) { + foreach ($_POST['deletelist'] as $i=>$del) { + $d = (int) $del; + unset ($amr_options['listtypes'][$d]); + echo '

                      ' + .sprintf(__('List %s will be deleted','amr-ical-events-list'),$d) + .'

                      '; + } + } + update_option('amr-ical-events-list', $amr_options); + +} + +function amrical_col_headings($i) { + /* for component properties only */ + global $amr_options; + global $amr_csize; + $listtype = $amr_options['listtypes'][$i]; + echo '
                      +

                      '; + _e('Column Headings:','amr-ical-events-list'); + echo '

                      +
                      '; + $j = 0; + while ($j < 8) { + $j = $j + 1; + if (isset ( $listtype['heading'][$j] )) { + $h = $listtype['heading'][$j]; + } + else $h = ''; + + echo ''; + } + echo "\n\t".'
                      '; + return; +} + +function amrical_calpropsoption($i) { + global $amr_options; + global $amr_csize; + $listtype = $amr_options['listtypes'][$i]; + echo '
                      +

                      '; + _e('Calendar properties' , 'amr-ical-events-list'); + echo '

                      +
                      '; + + foreach ( $listtype['calprop'] as $c => $v ) + { + echo "\n\t\t".'
                      '.$c.''; + foreach ( $v as $si => $sv ) /* for each specification */ + { echo '' + .''; + } + echo "\n\t\t".'
                      '; + } + echo "\n\t".'
                      '; + return; + } + +function amrical_compropsoption($i) { + global $amr_options; + global $amr_csize; + + $inuse = amr_whats_in_use(); + $listtype = $amr_options['listtypes'][$i]; + $desc = amr_set_helpful_descriptions(); + + echo '
                      +

                      '; + _e('Specify fields to show:' , 'amr-ical-events-list'); + echo '

                      +

                      '; + _e('Note: a 0 (zero) in column = do not show that field.', 'amr-ical-events-list'); + echo '

                      '; + _e('Uppercase fields are those defined in the iCal specification.', 'amr-ical-events-list'); + echo ' + RFC 5545

                      +

                      '; + _e('Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience.' , 'amr-ical-events-list'); + _e('Fields show if "column" > 0 and if there is data available in your event or ics file.', 'amr-ical-events-list'); + echo '

                      '; + + echo ''; + $thead = '' + .'' + .'' + .'' + .'' + .'' + .''; + echo ''.$thead.''; + echo ''.$thead.''; + echo ''; + + + + $listtype['compprop'] = apply_filters('amr_ics_component_properties', $listtype['compprop']); + // add arrays of field array('Column' => 0, 'Order' => 510, 'Before' => '', 'After' => ''); + + foreach ($inuse as $f=> $bool) { + if (!isset($listtype['compprop'][$f])) { // we got a new field + $listtype['compprop'][$f] + = array('Column' => 0, 'Order' => 510, 'Before' => '', 'After' => ''); + } + } + + foreach ( $listtype['compprop'] as $p => $pv ) {/* for each specification, eg: p= SUMMARY */ + if (!empty($inuse[$p])) { + $text = ''.(!empty($desc[$p])? $desc[$p] : '').''; + echo "\n\t\t".''; + } + echo ''; + echo "\n\t\t".''; + } + } + echo "\n".'
                      '.__('Field','amr-ical-events-list').''.__('Column','amr-ical-events-list').'
                      ' + .__('(0 to hide)', 'amr-ical-events-list') + .'
                      '.__('Order','amr-ical-events-list').''.__('Before','amr-ical-events-list').''.__('After','amr-ical-events-list').'
                      '.$p.''; + + foreach ( $pv as $s => $sv ) {/* for each specification eg $s = column*/ + + echo '' + .'' + .'
                      '.$text.'
                      '; + return; + } + +function amrical_groupingsoption($i) { + global $amr_options; + $listtype = $amr_options['listtypes'][$i]; + + $groupings = amr_define_possible_groupings (); + $taxonomies = amr_define_possible_taxonomies (); + + echo '
                      +

                      '; + _e('Define grouping:', 'amr-ical-events-list'); + echo '

                      '; + + + echo ''; + $nolevel1 = false; + $nolevel2 = false; + if (empty($listtype['grouping'])) { echo 'No groupings ?'; + $nolevel1 = true; + $nolevel2 = true; + } + else { + if (count($listtype['grouping']) < 2) $nolevel2 = true; + } + + + echo ''; + $sel = checked($nolevel1,true, false); + echo ""; + $sel = checked($nolevel2,true, false); + echo ""; + echo ''; + + echo ''; + foreach ( $taxonomies as $i => $taxonomy ) { + $taxo = get_taxonomy($taxonomy); + $c = $taxo->label; + if (!empty($listtype['grouping'][$taxonomy])) + $v= $listtype['grouping'][$taxonomy]; + else + $v = false; + + echo ''; + $sel = checked($v,1, false); + echo ""; + $sel = checked($v,2, false); + echo ""; + echo ''; + + } + echo ''; + foreach ( $groupings as $c => $tmp ) { + if (in_array($c,$taxonomies )) continue; // don't repeat + if (!empty($listtype['grouping'][$c])) + $v= $listtype['grouping'][$c]; + else + $v = false; + echo ''; + $sel = checked($v,1, false); + echo ""; + $sel = checked($v,2, false); + echo ""; + echo ''; + } + echo "\n\t".'
                      '.__('Possible Groupings', 'amr-ical-events-list').''.__('Level','amr-ical-events-list').' 1 '.__('Level','amr-ical-events-list').' 2
                      '.__('No grouping','amr-ical-events-list').'
                      '.__('Taxonomies','amr-ical-events-list').''.__('(Requires amr-events)','amr-ical-events-list').'
                      '.$c.'
                      '.__('Date based','amr-ical-events-list').''.__('(See also date and time formats)','amr-ical-events-list').'
                      '.$c.'
                      '; + return; + } + +function amrical_componentsoption($i) { + global $amr_options; + + + $listtype = $amr_options['listtypes'][$i]; + echo '
                      +

                      '; + _e('Select components to show:', 'amr-ical-events-list'); + echo ' ?

                      +
                      '; + + $desc = amr_set_helpful_descriptions (); + + if (! isset($listtype['component'])) echo 'No default components set'; + else { + foreach ( $listtype['component'] as $c => $v ) { + echo '
                      '.$desc[$c].''; + } + } + echo "\n\t".'
                      '; + return ; + } + +function amrical_limits($i) { + global $amr_options; + $listtype = $amr_options['listtypes'][$i]; + echo '

                      ' + . __('Define maximums:', 'amr-ical-events-list') + .'

                      +

                      '. + __('Note cache times are in hours','amr-ical-events-list') + .'

                      '; + if (! isset($listtype['limit'])) echo 'No default limits set'; + else { + + foreach ( $listtype['limit'] as $c => $v ) { + + echo ''; + echo ''; + } + } + echo "\n\t".'
                      '; + return ; + } + +function amrical_admin_heading($title) { + echo '
                      +

                      +
                      +

                      '.$title.' v'.AMR_ICAL_LIST_VERSION.'

                      +
                      '; + wp_nonce_field('amr-ical-events-list'); /* outputs hidden field */ + ; +} + +function amrical_admin_footer() { + echo '
                      +
                      '; +} + +function amrical_admin_navigation() { + global $amr_options; + echo '
                      '; + if (!isset($_REQUEST["list"]) ) { $list = '';} + else $list = intval( $_REQUEST["list"]); + $url = remove_query_arg('list'); + + _e('Configure another list type: ','amr-ical-events-list'); + + foreach ($amr_options['listtypes'] as $i => $listtype) { + if ($i > 1) echo ' '; + $text = ' '.$i +// .$listtype['general']['name'] + .''; + if ($list==$i) echo ''.$text.''; + else echo $text; + } + + if (isset($_GET["list"]) ) { + echo ''.__('Return to manage list types','amr-ical-events-list' ).''; + } + echo '
                      '; +} + +function amrical_validate_manage_listings() { + global $amr_options; + + $nonce = $_REQUEST['_wpnonce']; + if (! wp_verify_nonce($nonce, 'amr-ical-events-list')) die ("Cancelled due to failed security check"); + + if (!empty($_POST['calendar_preview_url'])) { + if (!filter_var($_POST['calendar_preview_url'],FILTER_VALIDATE_URL)) { + amr_invalid_url(); + } + else { + $url = filter_var($_POST['calendar_preview_url'],FILTER_SANITIZE_URL); + $sticky_url = amr_make_sticky_url($url); + if (!$sticky_url) + $calendar_preview_url = $url ; //might be external + else + $calendar_preview_url = $sticky_url ; + update_option('amr-ical-calendar_preview_url', $calendar_preview_url); + } + } + else { + update_option('amr-ical-calendar_preview_url', ''); + } + +//----- list numbers + $dupcheck = array(); // clear it out + if (!empty($_POST['listnumber'])) { + foreach ($_POST['listnumber'] as $i=> $n) { + if ($n === '') break; + $nn = abs (intval ( $n)); + + if ($nn === 0){ + echo '
                      '.__('Please use numbers > 1','amr-ical-events-list').'
                      '; + return; + } + + if (in_array($nn, $dupcheck)) + echo 'Duplicate List Number was entered - please ensure all list numbers are unique.'; + else { + $listnumber[$i] = $nn; + $dupcheck[$nn] = $nn; // keep a record of the numbers + + if (empty ($_POST['prevnumber'][$i]) or ($_POST['prevnumber'][$i] === '')) { // if we have no listtype for the existing number, then must be new + $amr_options['listtypes'][$nn] = new_listtype(); + $amr_options['listtypes'][$nn]['Id'] = $nn; + $amr_options['listtypes'][$nn]['general']['name'] .= $nn; + $amr_options['listtypes'][$nn] = customise_listtype($nn); // includes the fix, need till we drop away old compatibility + echo '
                      Create new '.$nn; + } + else {// we are changing a list number, copy the list type to the new number + $prev = $_POST['prevnumber'][$i]; + if (!($prev == $nn)) { + + $amr_options['listtypes'][$nn] = $amr_options['listtypes'][$prev]; + $amr_options['listtypes'][$nn]['Id'] = $nn; + unset($amr_options['listtypes'][$prev]); + } + } + } + } + + ksort ($amr_options['listtypes']); + } +// ---------------------- imported lists + if (isset($_POST['import'])) { + $import = $_POST['import']; + foreach ($import as $i=>$il) { + + if (!empty($il)) { + //var_dump($il); + $importedlist = unserialize(base64_decode($il)); + $importedlist['Id'] = $i; // use the id just pasted into + + if ((!is_array($importedlist)) or empty($importedlist['general'])) + echo '

                      ' + .sprintf(__('Imported settings for list %s invalid - not saved','amr-ical-events-list'),$i) + .'

                      ' + .sprintf(__('List %s will be saved with imported data','amr-ical-events-list'),$i) + .'

                      '; + echo ''; + echo ''; + echo ''; + echo ''; + + + echo ''; + echo ''; + + echo ''; + + if (!empty($listtype['general']) ) { + echo ''; + echo '' + .$listtype['general']['name'].'' + .'
                      '; + echo '' + .__('Configure', 'amr-ical-events-list').' | '; + if ($calendar_preview_url) { + echo '' + .__('Preview','amr-ical-events-list').''; + } + else { + echo '' + .__('n/a','amr-ical-events-list').''; + } + + echo '
                      '; + echo ''; + echo ''.$listtype['general']['ListHTMLStyle']; + echo ''; + echo ''; + echo ''; + } + else { + echo ''; + _e('Enter a list number to start a list type with new default settings.','amr-ical-events-list'); + echo '' + .__('After that, cut and paste from the list type closest to what you want to get you started','amr-ical-events-list') + .''; + } + + echo ''; +} + +function amrical_option_page() { + global $amr_options; + //$nonce = wp_create_nonce('amr-ical-events-list'); /* used for security to verify that any action request comes from this plugin's forms */ + amrical_admin_heading(__('iCal Events List ', 'amr-ical-events-list')); + + if (isset ($_POST['reset'])) + $amr_options = amr_getset_options (true); + else + $amr_options = amr_getset_options(false); /* options will be set to defaults here if not already existing */ + + if (!(isset ($_POST['reset'])) and (isset ($_POST['action']) and ($_POST['action'] == "save"))) {/* Validate the input and save */ + echo '

                      '; + _e('Saving....','amr-ical-events-list'); + if (!isset($_REQUEST['list'])) { + if (! amr_ical_validate_general_options() ) + {echo '

                      Error validating general options

                      ';} + else _e('List saved','amr-ical-events-list'); + } + echo '

                      '; + } + + //amr_request_acknowledgement(); + amr_ical_support_links (); + //amrical_mimic_meta_box('acknowledge', 'About', 'amr_request_acknowledgement' , true); + + //if (!(is_plugin_active('amr-events/amr-events.php'))) {amr_getting_started();} + amr_ical_submit_buttons (); + amr_ical_general_form(); + echo '
                      '; +} //end amrical_option_page + +function amrical_add_options_panel() { + + global $wp_version, + $current_user, + $events_menu_added; + + /* add the options page at admin level of access */ + $parent_slug = 'amr-events'; + $capability = 'manage_event_settings'; + + + + $menu_title = $page_title = __('iCal Events List', 'amr-ical-events-list'); + + $function = 'amrical_option_page'; + + $menu_slug = 'manage_amr_ical'; + + if (function_exists('amr_events_settings_menu')) { + $menu_title = $page_title = __('Listing Events', 'amr-ical-events-list'); + + if (empty($events_menu_added) or (!$events_menu_added)) { + amr_events_settings_menu(); + $events_menu_added = true; + } + add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function); + if (!(current_user_can('manage_event_settings'))) + add_submenu_page( $parent_slug, $page_title, $menu_title, 'manage_options', $menu_slug, $function); // some sites need this + } + + else { + $capability = 'manage_options'; + add_menu_page($page_title, $menu_title , $capability, $menu_slug, $function); + $parent_slug = $menu_slug; +// $page = add_options_page($page_title, $menu_title , 'manage_options', $menu_slug, $function); + + } + $function = 'amrical_choose_fields'; + $menu_slug = 'manage_event_fields'; + $page_title = __('iCal Fields', 'amr-ical-events-list'); + $menu_title = __('Fields for lists', 'amr-ical-events-list'); + add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function); + + + $function = 'amrical_listing_options_page'; + $menu_slug = 'manage_event_listing'; + $page_title = __('iCal Events Lists', 'amr-ical-events-list'); + $menu_title = __('List types', 'amr-ical-events-list'); + add_submenu_page( $parent_slug, $page_title, $menu_title,$capability, $menu_slug, $function); + + + amr_ical_updates_menu($parent_slug); +} + +//build admin interface ======================================================= +function amr_ical_validate_general_options(){ + global + $amr_options, + $amr_calprop, + $amr_limits, + $amr_compprop, + $amr_groupings, + $amr_components; + + $nonce = $_REQUEST['_wpnonce']; + if (! wp_verify_nonce($nonce, 'amr-ical-events-list')) die ("Cancelled due to failed security check"); + + if (isset($_POST['ngiyabonga'])) + $amr_options['ngiyabonga'] = true; + else + $amr_options['ngiyabonga'] = false; + foreach (array( + 'noeventsmessage', + 'lookmoremessage', + 'lookprevmessage', + 'resetmessage', + 'freebusymessage' // was missing 20141119 + ) as $message) { + if (isset($_POST[$message])) + $amr_options[$message] = $_POST[$message]; + else + $amr_options[$message] = ''; + + } + if (isset($_POST["usehumantime"])) + $amr_options['usehumantime'] = true; + else + $amr_options['usehumantime'] = false; + + if (isset($_POST["do_grouping_js"])) + $amr_options['do_grouping_js'] = true; + else + $amr_options['do_grouping_js'] = false; + + if (isset($_POST["js_only_these_pages"])) { + $tmp = explode (',',$_POST["js_only_these_pages"]); + foreach ($tmp as $i) {$i = (int) $i;} + $amr_options['js_only_these_pages'] = $tmp; + } + else + $amr_options['js_only_these_pages'] = false; + + if (isset($_POST["own_css"])) + $amr_options['own_css'] = true; + else + $amr_options['own_css'] = false; + if ((isset($_POST["date_localise"])) and (in_array($_POST["date_localise"], array('none', 'wp', 'wpgmt', 'amr')) )) $amr_options['date_localise'] = $_POST["date_localise"]; /* from dropdown */ + else $amr_options['date_localise'] = 'none'; + if (isset($_POST["cssfile"])) $amr_options['cssfile'] = $_POST["cssfile"]; /* from dropdown */ + else $amr_options['cssfile'] = ''; + if (isset($_POST["no_images"])) $amr_options['no_images'] = true; /* from dropdown */ + else $amr_options['no_images'] = false; + + if (isset($_POST['images_size'])) { + $amr_ical_image_settings['images_size'] = (int) ($_POST['images_size']) ; /* from dropdown */ + } + else + $amr_ical_image_settings['images_size'] = '16'; + + if (isset($_POST['timeout'])) { + $amr_options['timeout'] = (int) ($_POST['timeout']) ; /* from dropdown */ + } + else + $amr_options['timeout'] = '5'; + + update_option('amr-ical-events-list', $amr_options); + update_option('amr-ical-images-to-use', $amr_ical_image_settings); + amr_ical_events_list_record_version(); + + return(true); + } + +function amr_ical_validate_list_options($i) { +global $amr_options; + + if (isset($_POST['general'])) { + if (is_array($_POST['general'][$i])){ + foreach ($_POST['general'][$i] as $c => $v) { + if (!empty($_POST['general'][$i][$c])) { + switch ($c) { + case 'Default Event URL' : { + if (!filter_var($_POST['general'][$i][$c],FILTER_VALIDATE_URL)) { + amr_invalid_url(); + } + else { + $url = filter_var($_POST['general'][$i][$c],FILTER_SANITIZE_URL); + $sticky_url = amr_make_sticky_url($url); + if (!$sticky_url) + $amr_options['listtypes'][$i]['general'][$c] = $url ; //might be external + else + $amr_options['listtypes'][$i]['general'][$c] = $sticky_url ; + } + break; + } + case 'customHTMLstylefile': { + $custom_htmlstyle_file = esc_attr($_POST['general'][$i]['customHTMLstylefile']); + + if (!($custom_htmlstyle_file[0] === '/')) + $custom_htmlstyle_file = '/'.$custom_htmlstyle_file; + $uploads = wp_upload_dir(); + if (!file_exists($uploads['basedir'].$custom_htmlstyle_file)) { + amr_invalid_file(); + $amr_options['listtypes'][$i]['general']['customHTMLstylefile'] = ' '; + } + else { + $amr_options['listtypes'][$i]['general']['customHTMLstylefile'] + = $custom_htmlstyle_file; + } + break; + } + + default: { + $amr_options['listtypes'][$i]['general'][$c] + = filter_var($_POST['general'][$i][$c],FILTER_SANITIZE_STRING) ; + } + } + } + else $amr_options['listtypes'][$i]['general'][$c] = ''; + } + } + else echo 'Error in form - general array not found'; + } + + if (isset($_POST['limit'])) + { if (is_array($_POST['limit'][$i])) + { foreach ($_POST['limit'][$i] as $c => $v) + { + $amr_options['listtypes'][$i]['limit'][$c] = + (isset($_POST['limit'][$i][$c])) ? $_POST['limit'][$i][$c] :11; + } + } + else echo 'Error in form - limit array not found'; + } + if (isset($_POST['format'])){ + if (is_array($_POST['format'][$i])) + { foreach ($_POST['format'][$i] as $c => $v) + { /* amr - how should we validate this ? accepting any input for now */ + $amr_options['listtypes'][$i]['format'][$c] = + (isset($_POST['format'][$i][$c])) ? stripslashes_deep($_POST['format'][$i][$c]) :''; + } + } + else echo 'Error in form - format array not found'; + } + + foreach ($amr_options['listtypes'][$i]['component'] as $k => $c) { + if (isset($_POST['component'][$i][$k])) { + $amr_options['listtypes'][$i]['component'][$k] = true; + } + else { + $amr_options['listtypes'][$i]['component'][$k] = false; + } + } + unset ($amr_options['listtypes'][$i]['grouping']); + + if (isset($_POST['level'][1])) { + $k = esc_attr($_POST['level']['1']); + if (!($k === 'none')) $amr_options['listtypes'][$i]['grouping'][$k] = '1'; + } + if (isset($_POST['level'][2])) { + $k = esc_attr($_POST['level']['2']); + if (!($k === 'none')) $amr_options['listtypes'][$i]['grouping'][$k] = '2'; + } + + + if (isset($_POST['ColH'])) + { if (is_array($_POST['ColH'][$i])) { + foreach ($_POST['ColH'][$i] as $c => $v) { + $amr_options['listtypes'][$i]['heading'][$c] = $v; + } + } + // else echo 'Error in form - grouping array not found'; /* May not want any groupings ? + } + if (isset($_POST['CalP'])) { + if (is_array($_POST['CalP'][$i])) { + foreach ($_POST['CalP'][$i] as $c => $v) { + if (is_array($v)) + foreach ($v as $p => $pv){ + /*need to validate these */ + switch ($p): + case 'Column': + if (function_exists( 'filter_var') ) + { if (filter_var($pv, FILTER_VALIDATE_INT, + array("options" => array("min_range"=>0, "max_range"=>20)))) + $amr_options['listtypes'][$i]['calprop'][$c][$p]= $pv; + else + $amr_options['listtypes'][$i]['calprop'][$c][$p]= 0; + } + else $amr_options['listtypes'][$i]['calprop'][$c][$p]= $pv; + break; + + case 'Order': + if (function_exists( 'filter_var') ) + { if (filter_var($pv, FILTER_VALIDATE_INT, + array("options" => array("min_range"=>0, "max_range"=>99)))) + $amr_options['listtypes'][$i]['calprop'][$c][$p] = $pv;break; + } + else + $amr_options['listtypes'][$i]['calprop'][$c][$p] = $pv;break; + case 'Before': $amr_options['listtypes'][$i]['calprop'][$c][$p] = wp_kses($pv, amr_allowed_html()); + break; + case 'After': $amr_options['listtypes'][$i]['calprop'][$c][$p] = wp_kses($pv, amr_allowed_html()); + break; + endswitch; + } + } + } + else _e('Error in form - calprop array not found', 'amr-ical-events-list'); + + } + + if (isset($_POST['ComP'])) { + if (is_array($_POST['ComP'])) { + foreach ($_POST['ComP'] as $c => $v) { /* eg c= summary */ + if (is_array($v)) { + foreach ($v as $p => $pv) { + /*need to validate these */ + switch ($p): + case 'Column': + if (function_exists( 'filter_var') ) + { if (filter_var($pv, FILTER_VALIDATE_INT, + array("options" => array("min_range"=>0, "max_range"=>20)))) + $amr_options['listtypes'][$i]['compprop'][$c][$p]= $pv; + else + $amr_options['listtypes'][$i]['compprop'][$c][$p]= 0; + break; + } + else $amr_options['listtypes'][$i]['compprop'][$c][$p]= $pv; + break; + case 'Order': + if (function_exists( 'filter_var') ) + { if (filter_var($pv, FILTER_VALIDATE_INT, + array("options" => array("min_range"=>0, "max_range"=>99)))) + $amr_options['listtypes'][$i]['compprop'][$c][$p] = $pv; + else + $amr_options['listtypes'][$i]['compprop'][$c][$p]= 0; + break; + } + else $amr_options['listtypes'][$i]['compprop'][$c][$p] = $pv; + break; + case 'Before': + $bef = wp_kses($pv, amr_allowed_html()); + $bef = wp_kses_stripslashes($bef); + //if (stripos($bef, '\\"')) echo 'YES still there'; + $bef = str_replace('\\"', '"', $bef); + $amr_options['listtypes'][$i]['compprop'][$c][$p] = $bef; + //if ($c == 'URL') echo 'TEST:'. $bef.' else '.$amr_options['listtypes'][$i]['compprop'][$c][$p]; + + + break; + case 'After': + $amr_options['listtypes'][$i]['compprop'][$c][$p] = wp_kses_stripslashes(wp_kses($pv, amr_allowed_html())); + break; + endswitch; + } + } + } + $amr_options['listtypes'][$i]['compprop'] + = amr_sort_by_two_cols_asc('Column','Order',$amr_options['listtypes'][$i]['compprop']); + } + else echo 'Error in form - compprop array not found'; + } + $result = update_option( 'amr-ical-events-list', $amr_options); + return($result); +} + +function amrical_general_form ($i) { + global $amr_options; + + //http://localhost/wpbeta/wp-admin/post-new.php?post_type=page + + $listtype = $amr_options['listtypes'][$i]; + + ?>
                      +
                      + +
                      +
                      +
                      +
                      +
                      +

                      ' + . __('Other:', 'amr-ical-events-list') + .'

                      '; + + if (! isset($listtype['general'])) echo 'No general specifications set'; + else {?> + + +

                      + + + + + + +
                      + + + +
                      + + ' + .$gentext.' | ' + .'' + .$styletext.' | ' + .'' + .$advtext + .' | ' + .'' + .$managetext + .' + +

                      '.$gentext.'

                      '; + echo '
                      + +
                      + /> +
                      +
                      + /> +
                      +
                      + /> +
                      +
                      + /> +
                      +
                      + /> +
                      + + + + + +
                      +
                      +

                      +
                      + +
                      + + +
                      + +
                      +
                      + + + + + +

                      +

                      +

                      + */?> +

                      + +

                      + +
                      +
                      +

                      +

                      +

                      +')) { + echo( '

                      '.__('Minimum Php version 5.3 required for events cacheing. ','amr-ical-events-list'). ''); + _e('Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. ','amr-ical-events-list') ; + _e('Apparently objects do not serialise correctly in php < 5.3.','amr-ical-events-list') ; + echo '

                      '; + } + + echo '

                      '; + _e('Http timeout for external ics files:', 'amr-ical-events-list'); + $options = array('5','8','10','20','30','1'); + if (!isset($amr_options['timeout'])) + $amr_options['timeout'] = 5; + ?>
                      + +
                      +


                      + +

                      ?
                      +
                      +
                      +
                      +
                      +


                      + +
                      +
                      + +'; + + echo '
                      '; + + + $url = remove_query_arg('list'); + echo '

                      '.__('Click the name of each list type below to configure that list.','amr-ical-events-list').'

                      '; + echo '

                      ' + .'' + .__('Configuration help','amr-ical-events-list' ).' ' + .__('Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. ','amr-ical-events-list' ) + .'
                      '.__('Add listtype=n in the parameters of the shortcode or widget to use another list type.','amr-ical-events-list' ) + .'

                      '; + + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + echo ''; + + foreach ($amr_options['listtypes'] as $i=>$listtype) { + amr_manage_listtypes_row ($listtype, $i); + } + amr_manage_listtypes_row ($listtype=null, ''); + echo '
                      X'.__('List','amr-ical-events-list').''.__('Name','amr-ical-events-list').''.__('List HTML Style','amr-ical-events-list').''.__('To export or copy a list type','amr-ical-events-list') + .'
                      '.__('Select ALL the content, and COPY.','amr-ical-events-list') + .' '.__('Why encode?','amr-ical-events-list').'' + + .'' + .'
                      '.__('To import or paste a list type','amr-ical-events-list') + .'
                      '.__('PASTE list type string','amr-ical-events-list') + .' '.__('Test decode','amr-ical-events-list').'' + .'' + .'
                      '; +/*?> + */ +?> + +
                      +

                      +

                      +

                      ' + .__('See php date function format strings' , 'amr-ical-events-list').'' + .__(' (will localise) ' , 'amr-ical-events-list') +// . ' ' +// .__('strftime' , 'amr-ical-events-list').'' + ;?>

                      '; + foreach ( $amr_options['listtypes'][$i]['format'] as $c => $v ) { + $l = str_replace(' ','', $c).$i; + echo '
                    • '; + echo ' '; + echo amr_format_date( $v, $date); //a* amr ***/ + echo '
                    • '; + } + echo ''; + } ?>
                      +
                      ' ; +// echo ''. __('List Type ', 'amr-ical-events-list').$i.''; + echo ''.__('Expand/Contract all', 'amr-ical-events-list').''; + +// echo ''.__('go back','amr-ical-events-list').''; + if (!(isset($amr_options['listtypes'])) ) echo 'Error in saved options'; + else { + + amrical_general_form($i); + amrical_compropsoption($i); + amrical_limits ($i); + amrical_formats ($i); + if (!(in_array($amr_options['listtypes'][$i]['general']['ListHTMLStyle'], + array('smallcalendar','largecalendar', 'weekscalendar')))) { + amrical_groupingsoption($i); + amrical_col_headings($i); + } + // + + + amrical_calpropsoption($i); + amrical_componentsoption($i); + amrical_other_form($i); + + } + echo "\n\t".' '; + ?> + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-plugin-form-html.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-plugin-form-html.php new file mode 100755 index 0000000..4e1c33d --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-plugin-form-html.php @@ -0,0 +1,189 @@ +hook) { + wp_enqueue_style('dashboard'); + wp_enqueue_style('thickbox'); + wp_enqueue_style('global'); + wp_enqueue_style('wp-admin'); + wp_enqueue_style('blogicons-admin-css', WP_CONTENT_URL . '/plugins/' . plugin_basename(dirname(__FILE__)). '/amr_plugin_tools.css'); + } + } + function register_settings_page() { + add_submenu_page( $this->parent_slug, $this->shortname, $this->shortname, $this->accesslvl, $this->hook, array(&$this,'config_page')); + } + function plugin_options_url() { + return admin_url( 'options-general.php?page='.$this->hook ); + } + /** + * Add a link to the settings page to the plugins list + */ + function add_action_link( $links, $file ) { + static $this_plugin; + if( empty($this_plugin) ) $this_plugin = $this->filename; + if ( $file == $this_plugin ) { + $settings_link = '' . __('Settings') . ''; + array_unshift( $links, $settings_link ); + } + return $links; + } + function config_page() { + + } + function config_page_scripts() { + if (isset($_GET['page']) && $_GET['page'] == $this->hook) { + wp_enqueue_script('postbox'); + wp_enqueue_script('dashboard'); + wp_enqueue_script('thickbox'); + wp_enqueue_script('media-upload'); + } + } + /** + * Create a Checkbox input field + */ + function radiobutton($id, $label, $value, $selected) { + $sel = checked($value,$selected, false); + return " ".$label."
                      "; + } + /** + * Create a Checkbox input field + */ + function checkbox($id, $label, $value) { + return ' 
                      '; + } + /** + * Create a Dropdown input field + */ + function dropdown($id, $label, $options, $selected) { +// + $html = '
                      ' + .''; + return ($html); + } + /** + * Create a Text input field + */ + function textinput($id, $label, $value, $length='45') { + return '


                      '; + } + /** + * Create a Text area field + */ + function textarea($id, $label, $value, $cols='45', $rows='10') { + return '
                      ' + .'

                      '; + } + /** + * Create a postbox widget + */ + function postbox($id, $title, $content) { + ?> +
                      +

                      +

                      +
                      + +
                      +
                      + '; + foreach ($rows as $row) { + $content .= ''; + if (isset($row['id']) && $row['id'] != '') + $content .= ''; + else + $content .= $row['label']; + if (isset($row['desc']) && $row['desc'] != '') + $content .= '
                      '.$row['desc'].''; + $content .= ''; + $content .= $row['content']; + $content .= ''; + } + $content .= ''; + return $content; + } + /** + * Create a "plugin like" box. + */ + function plugin_like() { + $content = '

                      '.__('Why not do any or all of the following:','amr-ical-events-list').'

                      '; + $content .= ''; + $this->postbox($this->hook.'like', 'Like this plugin?', $content); + } + /** + * Info box with link to the support forums. + */ + function plugin_support() { + $content = '

                      '.__('If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the','amr-ical-events-list').' '.__("Support forums",'amr-ical-events-list').'.

                      '; + $this->postbox($this->hook.'support', 'Need support?', $content); + } + /** + * Box with latest news from amr.com + */ + function news() { + require_once(ABSPATH.WPINC.'/rss.php'); + if ( $rss = fetch_rss( 'http://icalevents.com/feed' ) ) { + $content = '
                        '; + $rss->items = array_slice( $rss->items, 0, 3 ); + foreach ( (array) $rss->items as $item ) { + $content .= '
                      • '; + $content .= ''. htmlentities($item['title']) .' '; + $content .= '
                      • '; + } + $content .= '
                      • Subscribe with RSS
                      • '; + $content .= ''; + $this->postbox('amrlatest', 'Latest news', $content); + } else { + $this->postbox('amrlatest', 'Latest news', 'Nothing to say...'); + } + } + function text_limit( $text, $limit, $finish = ' […]') { + if( strlen( $text ) > $limit ) { + $text = substr( $text, 0, $limit ); + $text = substr( $text, 0, - ( strlen( strrchr( $text,' ') ) ) ); + $text .= $finish; + } + return $text; + } + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-post-type.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-post-type.php new file mode 100644 index 0000000..5d34789 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-post-type.php @@ -0,0 +1,75 @@ + _x('Events', 'post type general name','amr-events'), + 'singular_name' => _x('Event', 'post type singular name','amr-events'), + 'add_new' => _x('Add New', 'event','amr-events'), + 'add_new_item' => __('Add New Event', 'amr-events'), + 'edit_item' => __('Edit Event', 'amr-events'), + 'new_item' => __('New Event', 'amr-events'), + 'view' => __('View Event', 'amr-events'), + 'view_item' => __('View Event', 'amr-events'), + 'search_items' => __('Search Events', 'amr-events'), + 'not_found' => __('No events found', 'amr-events'), + 'not_found_in_trash' => __('No events found in trash', 'amr-events'), + 'parent' => __('Related Event','amr-events' )); + + // now overwrite + $elabel = 'Event'; //ucfirst($amr_event_post_type); + $elabelplural = 'Events'; //ucfirst($amr_event_post_type_plural); + $labels = array( + 'name' => _x($elabelplural, 'post type general name','amr-events'), + 'singular_name' => _x($elabel, 'post type singular name','amr-events'), + 'add_new' => _x('Add New ', $elabel,'amr-events'), + 'add_new_item' => __('Add New ').__( $elabel, 'amr-events'), + 'edit_item' => __('Edit ').__( $elabel, 'amr-events'), + 'new_item' => __('New ').__($elabel, 'amr-events'), + 'view' => __('View ').__( $elabelplural, 'amr-events'), + 'view_item' => __('View ').__( $elabel, 'amr-events'), + 'search_items' => __('Search ').__( $elabelplural, 'amr-events'), + 'not_found' => __('No events found', 'amr-events'), + 'not_found_in_trash' => __('No events found in trash', 'amr-events'), + 'parent' => sprintf(__('Related %s', 'amr-events'),__( $elabel, 'amr-events'))); + + + $args = array( + 'label' => $amr_event_post_type, + 'labels' => $labels, + 'singular_label' => __('Event','amr-events'), // keep as dummy for translation, then overwrite + 'public' => true, + 'publicly_queryable' => true, + 'show_ui' => true, + 'capability_type' => 'post', // special capabilities only in amr-events + //'hierarchical' => true, + 'supports' => array('title', 'editor', 'author', + //'revisions', 'thumbnail', + // 'excerpt','page-attributes','custom-fields','wpgeo','comments', 'trackbacks','sticky' + ), + //'taxonomies' => array( 'post_tag', 'category'), + 'show_in_menu' => true, + 'show_in_nav_menus' => true, + 'menu_position' => 4, /* so will come after posts */ + 'has_archive' => true, + // 'menu_icon' => WP_PLUGIN. '/article16.png' + '_builtin' => false, // It's a custom post type, not built in! + 'query_var' => true, + 'capability_type' => 'post', // only need array if plural is different + 'map_meta_cap' => true, // bad news for editing in menu? + 'rewrite' => array("slug" => $amr_event_post_type /*,'with_front' => true*/ ) // Permalinks format + + ); + + $args['singular_label'] = __($amr_event_post_type,'amr-events');// overwrite with chosen name + register_post_type($amr_event_post_type,$args ); + } +} + + + add_action('init', 'amr_ical_register_post_type',1); // only in init not before diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-ical-pretty-print.php b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-pretty-print.php new file mode 100755 index 0000000..fb2e49b --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-ical-pretty-print.php @@ -0,0 +1,228 @@ +'.sprintf(__('Weeks start on %s','amr-ical-events-list'), + $amr_day_of_week[$wkst] + ).' '.$wkst); +} +/* -------------------------------------------------- */ +function amr_prettyprint_r_ex_date ($rdate) { /* rrule or exrule */ +global $amr_formats; /* amr check that this get set to the chosen list type */ +// 201407 nor rdates include dtstart - should dtstart be reversed out here, or the text changed ? + +// $df = pref_date_entry_format_string(); + if (is_array($rdate)) { + // 20140709 resort the array + sort($rdate); + foreach ($rdate as $i => $d) { + if (is_object($d)) + $html[] = amr_format_date ($amr_formats['Day'], $d); +// = $d->format($df); /* *** is it already in the right timezone or not ? If just doing 'date' for now, is okay? */ + else $html[] = $d; + } + } + return (implode(', ', $html)); +} +/* -------------------------------------------------- */ +function amr_prettyprint_byday ($b) { + $fulldayofweek = amr_fulldaytext(); /* MO, TU= etsc*/ + $h = array(); + $html = ''; + if (is_array($b)) { + foreach ($b as $d => $n) { + if (is_array($n)) { /* must be n bydays */ + foreach ($n as $i => $n2) { + $temp[] = ical_ordinalize_words($n2); + } + if (count($temp) == 2) $h[] = implode (__(' and ','amr-ical-events-list'),$temp).' '.$fulldayofweek[$d]; + else $h[] = implode (', ',$temp).' '.$fulldayofweek[$d]; + $temp = array(); + } + else { /* normal bydays */ + $h[] = $fulldayofweek[$d]; + + } + if (count($h) == 2) $html = implode(__(' and ','amr-ical-events-list'),$h); + else $html = implode (', ',$h); + if (!is_array($n)) $html = __('every ','amr-ical-events-list').$html; + } + return($html); + } + else return ($b); /* who knows what is in if it is not an array? */ + +} +/* -------------------------------------------------- */ +function amr_prettyprint_byordinal ($b) { + $h = array(); + if (is_array($b)) { + foreach ($b as $i => $d) { + $h[] = ical_ordinalize_words($d); + }; + if (count($h) == 2) $html = implode(__(' and ','amr-ical-events-list'),$h); + else $html = implode (', ',$h); + return($html); + } +else return ($b); + +} +/* -------------------------------------------------- */ +function amr_prettyprint_bymonth ($b) { +global $wp_locale; + $h = array(); + if (is_array($b)) { + foreach ($b as $i => $d) { + $h[] = $wp_locale->get_month($d); + }; + if (count($h) == 2) $html = implode(__(' or ','amr-ical-events-list'),$h); + else $html = implode (', ',$h); + return($html); + } +else return ($b); + +} +/* -------------------------------------------------- */ +function amr_prettyprint_duration ($duration) { + if (empty($duration)) return; + if (!is_array($duration)) echo $duration; + else { $h = array(); + foreach ($duration as $i => $v) { + $h[] = sprintf( _n( '%u '.rtrim($i,'s') /* singular */ + , '%u '.$i /* plural */ + ,$v // number + ,'amr-ical-events-list'),// domain + $v); + } + $html = implode (', ',$h); + } + echo $html; +} +/* -------------------------------------------------- */ +function amr_prettyprint_rule ($rule) { /* rrule or exrule */ +/* Receive an array of prepared fields and combine it into a suitable descriptive string */ +global $amr_freq, + $amr_freq_unit, + $amr_day_of_week_no, + $wp_locale; + $sep = ' '; + $c = ''; + + if (isset($rule['FREQ'])) { + $nicefrequnit = $amr_freq_unit[$rule['FREQ']]; /* already translated value */ + if (isset($rule['INTERVAL'])) {/* the freq as it is repetitive */ + $interval = ' ' + .sprintf(__('Every %s %s','amr-ical-events-list'), + ical_ordinalize($rule['INTERVAL']), + $nicefrequnit).$sep; + } +// else $interval = ' '.sprintf( __('every %s','amr-ical-events-list'), $nicefrequnit).$sep; // sounds funny to have daily every day, only have if every 2nd etc +// $nicefreq = $amr_freq[$rule['FREQ']].$interval; /* already translated value */ + + else $interval = $amr_freq[$rule['FREQ']]; /* already translated value */ + + if (isset($rule['BYSETPOS'])) $c .= ' '. + sprintf(__('On %s instance within %s', 'amr-ical-events-list') + ,amr_prettyprint_byordinal($rule['BYSETPOS']) + ,$interval); +// else $c .= $nicefreq; + else $c .= $interval; + if (isset($rule['COUNT'])) $c .= ' '.sprintf(__('%s times','amr-ical-events-list'), $rule['COUNT']).$sep; + if (isset($rule['UNTIL'])) { + if ($rule['UNTIL-TIME'] === '00:00') $rule['UNTIL-TIME'] = ''; + else if (strtolower($rule['UNTIL-TIME']) === '12:00 am') $rule['UNTIL-TIME'] = ''; + + $c .= ' '.sprintf(__('until %s %s','amr-ical-events-list'), $rule['UNTIL-DATE'], $rule['UNTIL-TIME']).$sep; + } + if (isset($rule['MONTH'])) $c .= sprintf(__(' if month is %s','amr-ical-events-list'),amr_prettyprint_bymonth($rule['MONTH'])); +// if (isset($rule['BYWEEKNO'])) $c .= ' '.sprintf(__(' in weeks %s','amr-ical-events-list'),implode(',',$rule['BYWEEKNO'])); + if (isset($rule['BYWEEKNO'])) $c .= ' ' .sprintf(__(' in %s weeks of the year','amr-ical-events-list'),amr_prettyprint_byordinal($rule['BYWEEKNO'])); +// if (isset($rule['BYYEARDAY'])) $c .= ' '.sprintf(__('on the %s day of year','amr-ical-events-list'),implode(',',$rule['BYYEARDAY'])); + if (isset($rule['BYYEARDAY'])) $c .= ' '.sprintf(__('on %s day of the year','amr-ical-events-list'),amr_prettyprint_byordinal($rule['BYYEARDAY'])); + if (isset($rule['DAY'])) $c .= ' '.sprintf(__('on %s day of each month', 'amr-ical-events-list'),amr_prettyprint_byordinal($rule['DAY'])); + if (isset($rule['NBYDAY'])) $nbyday = ' '.sprintf(__('on %s ', 'amr-ical-events-list'),amr_prettyprint_byday($rule['NBYDAY'])); + if (isset($rule['BYDAY'])) $byday = ' '.sprintf(__('on %s ', 'amr-ical-events-list'),amr_prettyprint_byday($rule['BYDAY'])); + $ofthefreq = ''; + // change to accomodate dutch having different artcles for month and year de or het + if ($rule['FREQ'] == 'MONTHLY') + $ofthefreq = _x(' of the month','eg: last day of the month', 'amr-ical-events-list'); + else if ($rule['FREQ'] == 'YEARLY') + $ofthefreq = _x(' of the year','eg: last day of the year','amr-ical-events-list'); + if (isset ($nbyday) and isset ($byday)) $c .= $nbyday.__(' and ','amr-ical-events-list').$byday.$ofthefreq; + else { if (isset ($byday)) $c .= $byday.$ofthefreq; + if (isset ($nbyday)) $c .= $nbyday.$ofthefreq; + } + if (isset($rule['BYHOUR'])) $c .= ' '.sprintf(__('at the %s hour', 'amr-ical-events-list'),implode(',',$rule['BYHOUR'])); + if (isset($rule['BYMINUTE'])) $c .= ' '.sprintf(__('at the %s minute', 'amr-ical-events-list'),implode(',',$rule['BYMINUTE'])); + if (isset($rule['BYSECOND'])) $c .= ' '.sprintf(__('at the %s second', 'amr-ical-events-list'),implode(',',$rule['BYSECOND'])); + if (isset($rule['WKST'])) $c .= '; '.amr_prettyprint_weekst($rule['WKST']); + } + return (rtrim($c,',')); +} +/* -------------------------------------------------- */ +function amr_prepare_pretty_rrule ($rule) { + +global $ical_timezone, $amr_formats; + +/* take the event and it's parsed rrule or exrule and convert some aspects for people use. Used by both edit event and event info */ + + $df = $amr_formats['Day']; + + $tf = $amr_formats['Time']; + + $rule['UNTIL-DATE'] = ''; + + $rule['UNTIL-TIME'] = ''; + + if (isset($_GET['wpmldebug'])) {echo '
                        inprep pretty';var_dump($rule);} + + foreach ($rule as $i=>$r) { $rule[strtoupper($i)] = $r;} + + if (isset($rule['UNTIL']) and is_object($rule['UNTIL'])) { /* until is possibly in Z time, move to our time first */ + + date_timezone_set($rule['UNTIL'], $ical_timezone); + +// $rule['UNTIL-DATE'] = $rule['UNTIL']->format($df); + $rule['UNTIL-DATE'] = amr_format_date($df, $rule['UNTIL']); + $rule['UNTIL-TIME'] = amr_format_date($tf, $rule['UNTIL']); + + } + + else if (!(isset($rule['COUNT']))) $rule['forever'] = 'forever'; + + if (isset ($rule['NOMOWEBYDAY'])) { /* what the F?? */ + foreach ($rule['BYDAY'] as $j => $k) { + $l = strlen($k); + if ($l > 2) { /* special treatment required - we have a numeric byday */ + $d = substr($k, $l-2, $l); + + $rule['NBYDAY'][$d][substr ($k, 0, $l-2)] = true; + $rule['BYDAY'][$d] = true; + } + else { + + $rule['BYDAY'][$k] = true; /* ie recurs every one of those days of week */ + $rule['NBYDAY'][$k]['0'] = true; + + } + unset($rule['BYDAY'][$j]); + } + } + return ($rule); + + } +/* --------------------------------------------------------- */ +function amr_format_bookmark ($text) { + return (''); /* ***/ +} +/* --------------------------------------------------------- */ +function amr_format_rrule ($rule) { + if (isset($rule[0])) /* we have an array of rules, is this still valid or is it just one now *** if multiple valid, then code change required */ + $rule = $rule[0]; + if (is_string($rule)) $rule = amr_parseRRULE($rule); + $rule2 = amr_prepare_pretty_rrule ($rule); + $rule3 = amr_prettyprint_rule ($rule2); + return ($rule3); +} diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-import-ical.php b/wp-content/plugins/amr-ical-events-list/includes/amr-import-ical.php new file mode 100644 index 0000000..2028b67 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-import-ical.php @@ -0,0 +1,1288 @@ +'.__('Your cache directory %s has been created','amr-ical-events-list'),''.$cache_path.''); + } + else { + die( '
                        '.sprintf(__('Error creating cache directory %s. Please check permissions','amr-ical-events-list'),$cache_path)); + } + } + return $cache_path; + } + +/* Return the cache filename for the specified URL. */ +function amr_get_cache_filename($url) { + $extension = ICAL_EVENTS_CACHE_DEFAULT_EXTENSION; + $matches = array(); + if (preg_match('/\.(\w+)$/', $url, $matches)) { + $extension = $matches[1]; + } + return md5($url) . ".$extension"; + } + +/* Cache the specified URL and return the name of the destination file. */ +if( !class_exists( 'WP_Http' ) ) + include_once( ABSPATH . WPINC. '/class-http.php' ); + +function amr_check_start_of_file ($data) {// check if the file looks like a icsfile + if (empty($data)) return false; + $checkstart = substr($data,0,15); + if (!($checkstart == 'BEGIN:VCALENDAR')) { + If (ICAL_EVENTS_DEBUG) { + echo '
                        No VCALENDAR in file. Start has: '.$checkstart.' end'; + } + echo '!'; + echo ''; + return false; + } + return true; + +} +function amr_set_http_timeout($val) { +global $amr_options; + if (!empty($amr_options['timeout'])) + return ($amr_options['timeout']); + else + return $val; +} + +function amr_cache_url($url, $cache=ICAL_EVENTS_CACHE_TTL) { + global $amr_lastcache; + global $amr_globaltz; + global $amr_options; + + $text = ''; + // if any args are sent then all must be sent - use wp defaults more or less + // so better to use filters + add_filter( 'http_request_timeout', 'amr_set_http_timeout' ); + //add_filter( 'http_request_redirection_count', 'amr_' ); + //'httpversion' => apply_filters( 'http_request_version', '1.0' ), //or 1.1 + /* + curl_setopt($c, CURLOPT_RETURNTRANSFER, true); // just says to return rather than echo + curl_setopt($c, CURLOPT_USERAGENT, 'PHP/'.PHP_VERSION); + curl_setopt($c, CURLOPT_ENCODING, ''); + if( strstr( $resource, 'https' ) !== FALSE ) { + curl_setopt($c, CURLOPT_SSLVERSION, 3); + curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2); + } + curl_setopt($c, CURLOPT_COOKIESESSION, true); + curl_setopt($c, CURLOPT_HEADER, true); + if( !ini_get('safe_mode') ){ + curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); + } + */ + +// If (ICAL_EVENTS_DEBUG) echo '
                        url before decode: '.$url.'
                        '; + $url = html_entity_decode($url); +// If (ICAL_EVENTS_DEBUG) echo '
                        url decoded: '.$url.'
                        '; + $cachedfile = get_cache_file($url); + if ( file_exists($cachedfile) ) { + $c = filemtime($cachedfile); + if ($c) + $amr_lastcache = amr_newDateTime(strftime('%c',$c)); + else + $amr_lastcache = ''; + } + else { + $c = false; + $amr_lastcache = amr_newDateTime(strftime('%c',0)); + } + // must we refresh ? + if ( isset($_REQUEST['nocache']) or isset($_REQUEST['refresh']) + or (!(file_exists($cachedfile))) or ((time() - ($c)) >= ($cache*60*60))) { + If (ICAL_EVENTS_DEBUG) echo '
                        Get ical file remotely, it is time to refresh or it is not cached:
                        '; + amrical_mem_debug('We are going to refresh next'); + + //$url = urlencode($u); - do NOT encode - that gives an invalid URL response + $check = wp_remote_get($url); + + // if use args, must set all - rather use filters and let wp do its thing + if (( is_wp_error($check) ) or (isset ($check['response']['code']) and !($check['response']['code'] == 200)) + or (isset ($check[0]) and preg_match ('#404#', $check[0]))) {/* is this bit still meaningful or needed ? */ + + If (ICAL_EVENTS_DEBUG) { echo '
                        Http request failed
                        Dumping response: '; + var_dump($check); + } + if (is_wp_error($check)) + $text = '
                        '.$check->get_error_message().'
                        '; + else $text = ''; + $data = false; + } + elseif (!stristr($check['headers']['content-type'],'text/calendar')) { + + if (amr_check_start_of_file ($data = $check['body'])) { // well wrong content type, but has the content!! - bad calendar provider + $data = $check['body']; + if (current_user_can('manage_options')) { + echo '
                        This message is only shown to the administrator, and only when we refresh the file.'; + echo '
                        The ics url given is issuing an incorrect content type of text/html.' + .' It should be text/calendar. ' + .' Luckily we persevere and check if the content looks like an ics file.' + .'Please inform the provider of the url. ' + .'Their urls may not be recognised by browsers as ics files.
                        '; + } + } + else { + if (ICAL_EVENTS_DEBUG) { + echo '
                        The url given is not returning a calendar file'; + echo '
                        The response was '; var_dump($check['response']); + echo '
                        The content type is '.$check['headers']['content-type']; + echo '
                        The content type of an ics file should be text/calendar.
                        '; + + } + $data = false; + } + + } + else $data = $check['body']; // from the http request + + if (!amr_check_start_of_file ($data)) { + + $text .= ' '.sprintf(__('Error getting calendar file with htpp or curl %s','amr-ical-events-list'), $url); + + if ( file_exists($cachedfile) ) { // Try use cached file if it exists + if (is_object($amr_lastcache)) + $text .= ' ...'.sprintf(__('Using File last cached at %s','amr-ical-events-list'), $amr_lastcache->format('D c')); + else + $text .= ' ...'.__('File last cached time not available','amr-ical-events-list'); + echo '!'; + return($cachedfile); //return file not data + } + else { + echo '!'; + return (false); + } + return (false); + } + else If (ICAL_EVENTS_DEBUG) { echo '
                        We have vcalendar in start of file';} + + // somebody wanted to pre process ics files that were not well generated? + // A filter could be added here, but I'm not keen - could add to support load? + + if ($data) { /* now save it as a cached file */ + + $data = apply_filters('amr-ics-filter', $data, $url); + + if ($dest = fopen($cachedfile, 'w')) { + if (!(fwrite($dest, $data))) + die ('Error writing cache file'.$dest); + fclose($dest); + $amr_lastcache = amr_newDateTime (date('Y-m-d H:i:s')); + } + else { + echo '
                        Error opening or creating the cached file
                        '.$cachedfile; + return (false); + } + } + else { echo '
                        Error opening remote file for refresh '.$url; return false;} + if (!isset($amr_lastcache)) $amr_lastcache = amr_newDateTime (date('Y-m-d H:i:s')); + } + else {}// no need to refresh, use the cached file + + return ($cachedfile); + +} + +function amr_checkQuotedString($delimiter, $replace, $input) { // rfc 5545 says colons, semicoln and quoted strings can/must be inside doublequotes + $t = $input; + if (stristr($t, '="')) { //if have '="' then have a quoted parameter value + // get the substring within double quotes + if (preg_match_all('/"([^"]+)"/', $t, $m)) { // then we got our string + //echo '
                        PREG ALL';var_dump ($m[0]); + foreach ($m[0] as $i=> $quotedstring) { + $s = str_replace($delimiter, $replace, $quotedstring); + $t = str_replace($quotedstring, $s, $t); // swop colons only in the quoted string + //echo '
                        '.$i.$t; + } + + } + + } + return $t; +} + +function amr_explodeByColon( $input ) { // rfc 5545 says colons, semicoln and quoted strings can/must be inside doublequotes +// maybe only required for parameter values? else to much overhead - actually maybe only needed for attendee stuff +// and then only if there are quoted strings +// NOTE PARAMETER VALUES may NOT contain quotes, so can have =" +// HOWEVER can have colon, semicolon or comma +// DESCRIPTION with colon does not have to be double quoted +// actually I think it's only the first non quoted colon we need ? + + $t = amr_checkQuotedString(':','%3A', $input) ; + $t = str_replace('mailto:', 'mailto ', $t); //stop any other mailtos from exploding + //now we can explode by colon + //$arr = explode( ':', $t ); //only want the first unescaped colon, else colons ok in DESCRIPTION etc 20150814 + $colon = stripos ( $t , ':' ); + If (!$colon) return false; + $arr[0] = substr ( $t, 0, $colon ); + $arr[1] = substr ( $t, $colon+1 ); + return $arr; +} + +function amr_explodeBySemi( $input ) { // rfc 5545 says colons, semicoln and quoted strings can/must be inside doublequotes +// maybe only required for parameter values? else to much overhead - actually maybe only needed for attendee stuff +// and then only if there are quoted strings +// NOTE PARAMETER VALUES may NOT contain quotes, so can have =" +// HOWEVER can have colon, semicolon or comma + + $t = amr_checkQuotedString(';','%3B', $input) ; + //now we can explode by colon + $arr = explode( ';', $t ); //else acn treat normally + return $arr; +} + +function amr_parseParameters($properties) { // anything from name separated by semicolons until the ':' + //echo '
                        Properties:';var_dump($properties); + $parameters = amr_explodeBYSemi ($properties); + //echo '
                        Parameters:';var_dump($parameters); + return $parameters; +} + +function amr_parseAttendees ($arraybycolon) { /* receive full string parsed to array */ +/* + +ATTENDEE;X-NUM-GUESTS=0:mailto:1bfb88li8v385q41k6s7fnl9ls@group.calendar.go + ogle.com + + ATTENDEE;ROLE=REQ-PARTICIPANT;DELEGATED-FROM="mailto:bob@ + example.com";PARTSTAT=ACCEPTED;CN=Jane Doe:mailto:jdoe@ + example.com + +ATTENDEE;SENT-BY=mailto:jan_doe@example.com;CN=John Smith: + mailto:jsmith@example.com +NOT USING FOR NOW - INTERNAL ATTENDEES ONLY + */ + +// the first one should start with ATTENDEE + + $parameters = amr_parseParameters($arraybycolon[0]); + if ((!$parameters[0]) == 'ATTENDEE') { //garbage ? + echo '
                        Error: Bad attendee parameters
                        '; + return false; + } + unset($parameters[0]); + foreach ($parameters as $param) { + $parts = explode('=',$param); + if (count($parts) == 2) { //X-NUM-GUESTS=0, CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Common Name; + $attendee[$parts[0]] = trim($parts[1],' "'); + } + else { // ignore it ? bad parameter ? + + } + } + + $pos_email = trim($arraybycolon[1],' '); // 201710 allow for crap data + if (!stristr($pos_email, 'mailto')) { + $email = $pos_email; + } + else { + $email = amr_parseMailto($pos_email); + } + + if ((!empty($email) and is_email($email))) + $attendee['MAILTO'] = $email; + // some files issue mailto's with an email address //201506 sometimes those mail addresses are not valid at all + //ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Common Name;X-NUM-GUESTS=0 + else + $attendee['text'] = $email; + + // set default values + if (!isset($attendee['PARTSTAT'])) // assume it needs action since not accepted + $attendee['PARTSTAT'] = 'NEEDS-ACTION'; + + //echo'
                        Whata values ';var_dump($attendee); + //amr_parseMailto ($text) + + return($attendee); // a single attendee +} + +function amr_parseMailto ($text) { //mailto:ovcweb@uoguelph.ca return email +//2017 somehow we have a space instead of : + $text = str_replace('mailto','',$text); + $text = str_replace('%3A','',$text); + $text = (trim($text,' :"')); + return ($text); +} + +function amr_parseOrganiser($arraybysemicolon) { /* receive full string parsed to array split by the semicolon + [0]=>ORGANIZER;SENT-BY="mailto + [1]=>dwood@uoguelph.ca":mailto:ovcweb@uoguelph.ca + + or + [0]=>ORGANIZER;CN=Webmaster - OVC;SENT-BY="mailto + [1] => bagunn@uoguelph.ca":mailto:ovcweb@uoguelph.ca + + ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com + */ + + $org = array(); + $p0 = explode(';',$arraybysemicolon[0]); + // we don't have a ':' for some reason to do with possible colon clash + + $m = str_replace( 'mailto', '',$arraybysemicolon[1]); + $mailto = trim($m,' :'); //201710 + + //$m = explode(':',$arraybysemicolon[1]); +// if (ICAL_EVENTS_DEBUG) {echo '
                        m :
                        '; var_dump($m); echo '
                        p0 :
                        '; var_dump($p0);} + +/* foreach ($m as $i => $m2) { + if (strtoupper($m2) == 'mailto') { + $mailto = rtrim($m[$i+1],'"'); + } + } +*/ + foreach ($p0 as $i => $p) { + $p1 = explode('=',$p); + if (isset ($p1[0])) { + $org['type'] = $p1[0]; /* if (!empty($p1[1])) $org['typevalue'] = $p1[1]; *** Parse this properly if we wantto handle complex attendees */ + + if ( ($p1[0] == 'SENT-BY') and (!empty($p1[1]))) { + $sentby = trim($m[0],'"'); + $org['SENT-BY'] = $sentby; + } + else { + if (($p1[0] == 'CN') and (!empty($p1[1]))) { + $org['CN'] = trim( $p1[1], '"'); + } + } + } + } + + if (!empty($mailto)) + $org['MAILTO'] = $mailto; + if (empty($org)) + return ($arraybysemicolon); + return ($org); + } + + /** + * Parse a Time Period field. + */ +function amr_parsePeriod($text,$tzobj) { + $periodParts = explode('/', $text); + if (!($start = amr_parseDateTime($periodParts[0], $tzobj))) return (false); + if ($duration = amr_parseDuration($periodParts[1])) return array('start' => $start, 'duration' => $duration); + else { + if (!($end = amr_parseDateTime($periodParts[1], $tzobj))) return (false); + else { + return array('start' => $start, 'end' => $end); + } + } + } + + /** + * Parses a DateTime field and returns a datetime object, with either it's own tz if it has one, or the passed one + */ +function amr_parseDateTime($d, $tzobj) { + global $amr_globaltz; + global $utczobj; + /* 19970714T133000 ;Local time + 19970714T173000Z ;UTC time + tz dealt with already ?*/ + + if (empty($d)) { + echo 'Unexpected error - empty date string to parse '; + return false; + } + + if ((substr($d, strlen($d)-1, 1) === 'Z')) { /*datetime is specifed in UTC */ + $tzobj = $utczobj; + $d = substr($d, 0, strlen($d)-1); + } + + $date = substr($d,0, 4).'-'.substr($d,4, 2).'-'.substr($d,6, 2); + if (strlen ($d) > 8) { + $time = substr($d,9 ,2 ).':'.substr($d,11 ,2 ) ; /* has to at least have hours and mins */ + } + else $time = '00:00'; + if (strlen ($d) > 13) { + $time .= ':'.substr($d,13 ,2 ); + } + else $time .= ':00'; + /* Now create our date with the timezone in which it was defined , or if local, then in the plugin glovbal timezone */ + + $dt = amr_create_date_time ($date.' '.$time, $tzobj); + //if (!$dt) { amr_tell_admin_the_error ('Failed to parse'.$d); } + return ($dt); + } + + /* Parses a Date field. */ +function amr_parseRange($range, $daterange, $tzobj) { /* + For RECURRENCE-ID; + Strings like: + VALUE=DATE:19960401 + + RANGE=THISANDFUTURE:19960120T120000Z + RANGE=THISANDPRIOR:19960120T120000Z + */ + If (isset ($_REQUEST['debugexc'])) { echo '
                        Got Range '.$range.' with '.$daterange.'
                        '; } + $r = explode (':', $daterange); + if (!($thisanddate = amr_parseDateTime($r[1], $tzobj))) return (false); + If (isset ($_REQUEST['debugexc'])) { echo '
                        Got range '.$range.' "THISAND" date '.$thisanddate ->format('c').'
                        '; } + return (array('RANGE'=>$p[0],'DATE'=> $thisanddate)); + } + + /* Parses a Date field. */ +function amr_parseDate($text, $tzobj) { /* + VALUE=DATE: + 19970101,19970120,19970217,19970421 + 19970526,19970704,19970901,19971014,19971128,19971129,19971225 + VALUE=DATE;TZID=/mozilla.org/20070129_1/Europe/Berlin:20061223 + */ + + $p = explode (',',$text); /* if only a single will still return one array value */ + foreach ($p as $i => $v) { + $datestring = substr($v, 0, 4).'-'.substr($v,4, 2).'-'.substr($v,6, 2); + $dates[] = amr_create_date_time ($datestring, $tzobj); + /*try { + // $dates[] = new DateTime(substr($v,0, 4).'-'.substr($v,4, 2).'-'.substr($v,6, 2), $tzobj); + //} + //catch(Exception $e) { + // echo '
                        Unable to create DateTime object from '.$text.'
                        '.$e->getMessage(); + // return (false); + }*/ + } + return ($dates); + + } + /* ------------------------------------------------------------------ */ +function amr_parseTZDate ($value, $tzid) { + $tzobj = amr_parseTZID($text); + + if (!($d = amr_parseDateTime ($value, $tzobj))) { + return(false); + } + else + return ($d); + } + /* ------------------------------------------------------------------ */ +function amr_deduceTZID($icstzid) { +// we have something that php didn't like, so we will try work something out +// Not great, really should use the filter function rather + global $amr_globaltz, $globaltzstring; + +// $strip = array ('(',' '); +// $icstzid = str_replace($strip,'',$icstzid); + $gmtend = stripos($icstzid,')'); /* do we have a brackedt GMT ? */ + //if (isset ($_REQUEST['tzdebug'])) {echo '
                        Check for a bracketed gmt? = '.$gmtend.' in string '.$icstzid ; } + if (!empty ($gmtend) ) { + $icstzid = str_replace(')','/',$icstzid); + $icstzcities = explode ('/',$icstzid); /* could be commas, could be slashes */ + if (isset ($_REQUEST['tzdebug'])) {echo '
                        strip the gmt out '; print_r($icstzcities);} + $gmt = stripos( $icstzid, 'GMT'); /* do we have a brackedt GMT ? */ + if (!empty($gmt)) unset ($icstzcities[0]); /* don't want the GMT - potentially misleading */ + } + else { /* Maybe we have a list of cities and maybe we do not */ + $icstzcities = array(); + $temp = explode (',',$icstzid); /* could be commas, could be slashes */ + foreach ($temp as $temp2) { + $temp3 = explode ('/',$temp2); + $icstzcities = array_merge($icstzcities, $temp3); + } + } + foreach ($icstzcities as $i=>$icscity) { + $icstzcities[$i] = trim($icscity,' '); + } + //if (isset ($_REQUEST['tzdebug'])) { echo '
                        Do we have a City?
                        ';print_r($icstzcities);} + $globalcontcity = explode ('/',$globaltzstring); + if (isset ($globalcontcity[1]) ) + $globalcity = $globalcontcity[1]; + else + $globalcity = $globalcontcity[0]; +// if (isset ($_REQUEST['tzdebug'])) { echo '
                        text = '.$text.'
                        icstzid = '.$icstzid.' and wp tz = '.$globalcity.'
                        '; print_r($icstzcities); } + if (in_array($globalcity, $icstzcities)) { /* if one of the cities in the tzid matches ours, again we can use the matched one */ + $tzname = $globaltzstring; + } + else { + + $alltzcities = amr_get_timezone_cities (); + if (isset($alltzcities[$icstzid])) { /* then it is a normal php timezone we know about, so we can proceed */ + $tzname = $icstzid; + } + else { + + foreach ($icstzcities as $i=>$c) { + if (isset ($alltzcities[$c] )) { /* try each of the cities if we have mutiple */ + $tzname = $alltzcities[$c]; + break; + } + } + if (isset ($_REQUEST['tzdebug'])) {echo '
                        No match to known cities'; } + } + } + /* */ + + if (!isset ($tzname)) { /* see if we do it with GMT after all ? */ + if (isset($icstzcities[0])) { + $tryoffset = str_replace('GMT','',$icstzcities[0]); + if (empty($tryoffset) or (is_int($tryoffset))) { + $tzname = amr_getTimeZone($tryoffset); + if (isset ($_REQUEST['tzdebug'])) + {echo '
                        Try see if offset:'.$tryoffset. ' gave '.$tzname; } + } + else { + $tzname = amr_unknown_timezone($icstzid, $globaltzstring); + } + } + else { + $tzname = amr_unknown_timezone($icstzid, $globaltzstring); + } + } + if (isset ($_REQUEST['tzdebug'])) echo '
                        Timezone must be: '.$tzname.'
                        '; + $tz = amr_try_timezone ($tzname); + if (!$tz) $tz = $amr_globaltz; + return ($tz); +} +/* ------------------------------------------------------------------ */ +function amr_tz_error_handler () { //cannot have anonymous function in php < 5.3 +} +/* ------------------------------------------------------------------ */ +function amr_parseTZID($text) { //also used when editing an event + global $amr_globaltz, // the main timezone object + $globaltzstring, // the string for the timezone object + $icsfile_tzname, // the timezone name string in the ics file + $icsfile_tz; // the ics timezone object that we last parsed and ended up with (often it's all the same + + /* take a string that may have a olson tz object and try to return a tz object */ + /* accept long and short TZ's, --- assume website tz if not valid eg Zimbra's: GMT+01.00/+02.00 */ + + $icstzid = trim($text,'"=' ); /* check for enclosing quotes like zimbra issues */ + //----------------------------------- + + //----------------------------------- is it same as wordpress ? + if (empty($globaltzstring)) + $globaltzstring = timezone_name_get($amr_globaltz); + + if ($globaltzstring == $icstzid ) {/* if the timezone matches the wordpress or shortcode time zone, then we are cool ! */ + $icsfile_tzname = $icstzid; // set the global + $icsfile_tz = $amr_globaltz; + if (isset ($_REQUEST['tzdebug'])) echo '
                        '.$icstzid.' Matches wordpress tz.'; + return ($amr_globaltz); + } +//----------------------------------- is it same as previously parsed ? if yes, go with that + + if (!empty($icsfile_tzname) and ($icsfile_tzname == $icstzid )) { + if (isset ($_REQUEST['tzdebug'])) echo '
                        '.$icstzid.' Matches previously parsed tz.' ; + return ($icsfile_tz); + } + +//----------------------------------- is it a valid php timezone ? + $timezone_identifiers = (DateTimeZone::listIdentifiers()); + //foreach ($timezone_identifiers as $i=> $z) {echo '
                        '.$i; var_dump($z);} + if (in_array($icstzid,$timezone_identifiers, false)) { // we now have a valid php timezone + if (isset ($_REQUEST['tzdebug'])) {echo '
                        Php should like:'.$icstzid; } + $tz = amr_try_timezone ($icstzid); // this should work else simething weird going on + if (!empty($tz)) return($tz); + } + +//----------------------------------- if not already a valid php timezone, can we make it a valid zone ? + $tzid = apply_filters('amr-timezoneid-filter',$icstzid); //apply filters like for windows zones etc + // let us see if php likes it + + try { set_error_handler( 'amr_tz_error_handler'); /* ignore errors , just giveit a go*/ + $tz = timezone_open($tzid); + restore_error_handler(); + if ($tz) { + $tzname = $tzid; + if (isset ($_REQUEST['tzdebug'])) {echo '
                        Php liked:'.$tzid; } + } + else $tz = amr_deduceTZID($tzid) ; + } + catch(Exception $e) {/* we tried the filter but php did't like, so lets try fix it */ + /* else try figure the timezone out */ + $tz = amr_deduceTZID($tzid) ; + } + + if (empty($tz)) { + if (isset ($_REQUEST['tzdebug'])) {echo '
                        Giving up on timezone: '.$icstzid; } + return false; // we couldn't figure it out + } + if (empty($icsfile_tzname)) { // if this is the first time we parsed, lets save the hard work + $icsfile_tzname = $icstzid; // what was actually in the file + $icsfile_tz = $tz; // this is the php tz we ended up with + } + return ( $tz); +} + /* ------------------------------------------------------------------ */ +function amr_try_timezone ($tzname) { + try { + $tz = timezone_open($tzname); + } + catch(Exception $e) { + $text = 'Unable to create Time zone object., Using wp default.
                        '.$e->getMessage(); + amr_tell_admin_the_error ($text); + //echo '
                        Unable to create Time zone object., Using wp default.
                        '.$e->getMessage(); + return ($amr_globaltz); + } + return ($tz); +} +/* ------------------------------------------------------------------ */ +function amr_unknown_timezone ($text, $tzname) { + $emessage = 'Unable to deal with timezone like this: '.$text; +// echo ''; +// if (isset ($_REQUEST['tzdebug']) or ICAL_EVENTS_DEBUG) { + if (is_super_admin()) { + echo '
                        Message to logged-in admin only: '.$emessage.''; + echo '- Making an assumption! Using '.$tzname.'
                        '; + } + return ($tzname); +} +/* ------------------------------------------------------------------ */ +function amr_parseSingleDate($VALUE='DATE-TIME', $text, $tzobj) { + /* used for those properties that should only have one value - since many other dates can have multiple date specs, the parsing function returns an array + Reduce the array to a single value */ + $arr = amr_parseVALUE($VALUE, $text, $tzobj); + if (is_array($arr)) { + if (count($arr) > 1) { + error_log ( '
                        Unexpected multiple date values'.$text); + } + else return ($arr[0]); + } + return ($arr); + } + +function amr_parseVALUE($VALUE, $text, $tzobj) { + /* amr parsing a value like + VALUE=PERIOD:19960403T020000Z/19960403T040000Z, 19960404T010000Z/PT3H + VALUE=DATE:19970101,19970120,19970217,19970421,.. 19970526,19970704,19970901,19971014,19971128,19971129,19971225 + VALUE=DATE;TZID=/mozilla.org/20070129_1/Europe/Berlin:20061223 */ + + //if (ICAL_EVENTS_DEBUG) {echo '
                        For value: '.$VALUE.' '.$text;} + if (empty($text)) { + if (ICAL_EVENTS_DEBUG) {echo '
                        For value: '.$VALUE.' text is blank';} + return (false); + } + + switch ($VALUE) { + case 'DATE-TIME': { + if (!($d = amr_parseDateTime($text, $tzobj))) + return (false); + else + return ($d); + } + case 'DATE': {if (!($d = amr_parseDate($text, $tzobj))) return (false); + else return ($d); } + case 'PERIOD': {if (!($d = amr_parsePeriod($text, $tzobj))) return (false); + else return ($d); } + default: { /* something like DATE;TZID=/mozilla.org/20070129_1/Europe/Berlin */ + $p = explode (';',$VALUE); + if (!($p[0] === 'DATE')) { + if (ICAL_EVENTS_DEBUG) {echo 'Error: Unexpected data in file '; print_r($p);} + return (false); + } + else { + if (substr ($p[1], 0, 4) === 'TZID') {/* then we have a weird TZ */ + $tzobj = amr_deal_with_tzpath_in_date (substr($p[1],5)); /* pass the rest of the string over for tz extraction */ + if (!($d = amr_parseDate($text, $tzobj))) { + amr_tell_admin_the_error ('Fail parse tz date'.$p[1]); + return (false); + } + else + return ($d); + } + else { + if (ICAL_EVENTS_DEBUG) {echo 'Error: Unexpected data in file '; print_r($p[1]);} + return (false); + }; + } + } + return (false); + } + } + +/** * Parse a Duration Value field.*/ +function amr_parseDuration($text) { + /* + A duration of 15 days, 5 hours and 20 seconds would be: P15DT5H0M20S + A duration of 7 weeks would be: P7W, can be days or weeks, but not both + we want to convert so can use like this +1 week 2 days 4 hours 2 seconds ether for calc with modify or output. Could be neg (eg: for trigger) + */ + + if (isset($_GET['debugdur'])) {echo '
                        Entering Pregmatch.. '.$text;} + + if (preg_match('/([+]?|[-])P(([0-9]+W)|([0-9]+D)|)(T(([0-9]+H)|([0-9]+M)|([0-9]+S))+)?/', + trim($text), $durvalue)) { + + /* 0 is the full string, 1 is the sign, 2 is the , 3 is the week , 6 is th T*/ + if (isset($_GET['debugdur'])) {echo '
                        Pregmatch gives '; var_dump($durvalue);} + + if ($durvalue[1] == "-") { // Sign. + $dur['sign'] = '-'; + } + // Weeks + if (!empty($durvalue[3])) $dur['weeks'] = rtrim($durvalue[3],'W'); + + if (count($durvalue) > 4) { // Days. + if (!empty($durvalue[4])) $dur['days'] = rtrim($durvalue[4],"D"); + } + if (count($durvalue) > 5) { // Hours. + if (!empty($durvalue[7])) $dur['hours'] = rtrim($durvalue[7],"H"); + + if (isset($durvalue[8])) { // Mins. + $dur['mins'] = rtrim($durvalue[8],"M"); + } + if (isset($durvalue[9])) { // Secs. + $dur['secs'] = rtrim($durvalue[9],"S"); + } + } + if (!empty ($dur)) return $dur; + else { // possibly error in input data + if (isset($_GET['debugdur'])) {echo '
                        Possibly error in input data that pregmatch did not deal with .. '.$text;} + return false; + } + return $dur; + + } else { + return false; + } + } + +function amr_parse_CATEGORIES ($text ) { + $cats = explode(',',$text); // will return an array, but since we can have multiple CATEGORIES lines, will get an array of arrays .. confusing + return($cats); +} + +function amr_parseRDATE ($string, $tzobj ) { +/* + RDATE:19970714T123000Z + RDATE:19970714T083000 + RDATE;TZID=US-EASTERN:19970714T083000 + RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,19960404T010000Z/PT3H - not supported yet + RDATE;VALUE=DATE:19970101,19970120,19970217,19970421,19970526,19970704,19970901,19971014,19971128,19971129,19971225 + + could be multiple dates after : */ + + if (empty($string)) return false; + + if (is_object($string)) {/* already parsed */ return($string); } +//echo '*** Here'; var_dump($string); + if (is_array($string) ) { + $rdatearray = array(); + foreach ($string as $i => $rdatestring) { +// $r = $string[0]; + if (is_object($rdatestring)) {/* already parsed and is an array of dates */ return($string); } + else { + if (isset($_GET['debugexc'])) {echo '
                        ***Doing next r or exdate '.$i.'
                        '.print_r($rdatestring,true).'
                        '; } + $rdate = amr_parseRDATE ($rdatestring, $tzobj ); + + } + if (is_array($rdate)) $rdatearray = array_merge ($rdatearray, $rdate); + } + + //if (isset($_GET['debugexc'])) { + //echo '
                        *** Array of r or exdate '; var_dump($rdatearray);// } + return ($rdatearray); + } + + $rdatestring = explode(':',$string); /* $VALUE=DATE: or VALUE=DATE-TIME: and a series of dates (no time) */ + +// if (isset($_GET['rdebug'])) {echo '
                        Ok now really parse it '; var_dump($rdatestring); echo '
                        '; } + + if (isset($rdatestring[0])) { + + if (($rdatestring[0] == 'VALUE=DATE') and (isset($rdatestring[1])) ) { + + $rdate = explode(',',$rdatestring[1]); /* that' sall we are doing for now */ +// if (isset($_GET['rdebug'])) {echo '
                        Parsing value=date...
                        '; var_dump($rdate);} + foreach ($rdate as $i => $r) { + $temp = amr_parseValue ('DATE', $r, $tzobj); //amr 20150622 only variables by reference + $dates[$i] = array_shift($temp); + /*returns array, but there should only be 1 value */ + } + return($dates); + + } + else if (($rdatestring[0] == 'VALUE=PERIOD') and (isset($rdatestring[1]))) { + echo "
                        HELP cannot yet deal with RDATE with VALUE=PERIOD
                        "; return (false); + } + else { + + if (($rdatestring[0] == 'VALUE=DATE-TIME') and (isset($rdatestring[1]))) { + $rdate = explode(',',$rdatestring[1]); + } + else { + $rdate = explode(',',$rdatestring[0]); + } + foreach ($rdate as $i => $r) { + if (empty($r)) { return false; } + $dates[$i] = amr_parseDateTime ( $r, $tzobj); + if (isset($_GET['debugexc'])) {echo '
                        *** Parsed as: '.$dates[$i]->format('c');} + } + if (empty($dates)) return (false); + else return ($dates); + + } + } + else return (false); +} + +function amr_parseAttach ($parts) { +/* +This property can be specified multiple times in a + + "VEVENT", "VTODO", "VJOURNAL", or "VALARM" calendar component with + + the exception of AUDIO alarm that only allows this property to + + occur once. +Default is a URL ATTACH:http://example.com/public/quarterly-report.doc +But could also have : +ATTACH:CID:jsmith.part3.960817T083000.xyzMail@example.com +ATTACH;FMTTYPE=audio/basic:ftp://example.com/pub/ + + sounds/bell-01.aud + +ATTACH;FMTTYPE=application/msword:http://example.com/ + + templates/agenda.doc + ATTACH;FMTTYPE=text/plain;ENCODING=BASE64;VALUE=BINARY:VGhlIH + + F1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4 + +*/ + if (ICAL_EVENTS_DEBUG) {echo '

                        Attach to parse
                        '; var_dump($parts); echo '
                        ';} + + if (!empty($parts[0])) { + if ($parts[0] === 'ATTACH') { // then we have a simple URL or CID + if (!empty ($parts[1])) { + if (substr($parts[1],0,3) === 'CID' ) { + $newattach['type'] = 'CID'; + $newattach['CID'] = esc_attr(substr($parts[1],4)); + + } + else { // must be htpp or ftp + $newattach['type'] = 'url'; + $newattach['url'] = esc_url_raw (rawurldecode($parts[1])); + } + + } + else return (null); + } + else { // we have an FMTTYPE + $newattach['type'] = str_replace('ATTACH;FMTTYPE=','', $parts[0]); //should be something like application/msword, FMTTYPE=audio/basic + if (!stristr($newattach['type'], 'VALUE=BINARY')) { // not binary + $newattach['url'] = esc_url_raw($parts[1]); + } + else { + $newattach['binary'] = amr_remove_folding ($parts[1]); + } + } + } + else return (null); + return($newattach); +} + +function amr_parseDefault($prop, $parts) { + + + $func = 'amr_parse'.str_replace('-','_',$prop); + //if (isset($_REQUEST['debugcustom'])) {echo '
                        Parsing..'.$prop. 'Look for '.$func; } + if (function_exists($func)) { + $result = call_user_func ($func, $parts); + if (isset($_REQUEST['debugcustom'])) {echo '
                        Used custom function..'.$func; var_dump($result);} + return ($result); + // return (amr_parseCustomModifiers($p)); + } + else { + //if (isset($_REQUEST['debugcustom'])) {echo '
                        No function..'.$func.' for '; var_dump($parts);} + if (isset ($parts[1])) { // its a straight value + return (str_replace ('\,', ',', $parts[1])); + } + /* replace any slashes added by ical generator */ + else { //nothing to see here folks... move along + return ''; + } + return; + } + } + +function amr_parse_property ($parts) { +/* would receive something like array ('DTSTART; VALUE=DATE', '20060315')) */ +/* NOTE: parts[0] has the long tag eg: RDATE;TZID=US-EASTERN +or could be DTEND;TZID=America/New_York;VALUE=DATE-TIME: and the date 20110724T100000 in parts 1 (see forum note from dusty - he is generating the DATETIME + parts[1] the bit after the : 19960403T020000Z/19960403T040000Z, 19960404T010000Z/PT3H + IF 'Z' then must be in UTC + If no Z +*/ +global $amr_globaltz; + + if (empty($parts[1])) return false; // we got crap + $tzobj = $amr_globaltz; /* Because if there is no timezone specified in any way for the date time then it must a floating value, and so should be created in the global timezone.*/ +// if (ICAL_EVENTS_DEBUG or isset($_REQUEST['tzdebug'])) {echo '
                        Property : '.$parts[0];} + + + $p0 = explode (';', $parts[0]); /* Looking for ; VALUE = something...; or TZID=... or both, or more than one anyway ???*/ + // the first bit will be the property like PRODID, or X_WR_TIMEZONE + // the next will be the modifiers + $prop = array_shift($p0); + if (!empty($p0)) { // if we have some modifiers + foreach ($p0 as $p) { // handle special modifiers , could be VALUE=DATE, TZID= + + if (stristr($p, 'TZID')) { + /* Normal TZ, not the one with the path eg: DTSTART;TZID=US-Eastern:19980119T020000 or zimbras TZID="GMT+01.00/+02.00 */ +// $TZID = substr($p0[1], 4 ); + $TZID = substr($p, 4 ); + $tzobj = amr_parseTZID($TZID); + } /* should create datetime object with it's own TZ, datetime maths works correctly with TZ's */ + else {/* might be just a value=date, in which case we use the global tz? no may still have TZid */ + $tzobj = $amr_globaltz; + if (stristr($p, 'VALUE')) { // we have a possibly redundant modified + $VALUE = substr($p,6); // take everything after the '=' + } + else {// not necessary to deal with modifier here or unknown maybe custom modifiers + // only urgent to get tZID's.. or maybe we could even do those later? + //check it out on major code revamp, meanwhile if it aint broke, dont fix it + } + } + } + } +// else $tzobj = $amr_globaltz; /* Because if there is no timezone specified in any way for the date time then it must a floating value, and so should be created in the global timezone.*/ +// switch ($p0[0]) { + + switch ($prop) { + case 'CREATED': + case 'COMPLETED': + case 'LAST-MODIFIED': + case 'DTSTART': + case 'DTEND': + case 'DTSTAMP': + case 'DUE': + if (isset($VALUE)) { + $date = amr_parseValue($VALUE, $parts[1], $tzobj); } +/* return (amr_parseSingleDate($VALUE, $parts[1], $tzobj)); } */ + else { + $date = amr_parseSingleDate('DATE-TIME', $parts[1], $tzobj); + } + + if (is_object($date) and + (($prop === 'LAST-MODIFIED') or ($prop === 'CREATED'))) { + amr_track_last_mod($date); + } + return ($date); + case 'ALARM': + case 'RECURRENCE-ID': /* could also have range ?*/ + if (isset($VALUE)) { + return (amr_parseValue($VALUE, $parts[1], $tzobj)); } + elseif (isset($RANGE)){ + return (amr_parseRange($RANGE, $parts[1], $tzobj)); + } + else { + return (amr_parseSingleDate('DATE-TIME', $parts[1], $tzobj)); + } + case 'EXRULE': + case 'RRULE': { + return (amr_parseRRULE($parts[1])); + } + case 'BDAY': + return (amr_parseDate ($parts[1])); + + case 'EXDATE': {if (isset($_REQUEST['debugexc'])) {echo '
                        Parsing EXDATE ';}} + case 'RDATE': + return (amr_parseRDATE ($parts[1],$tzobj)); + case 'TRIGGER': /* not supported yet, check for datetime and / or duration */ + case 'DURATION': + $dur = amr_parseDuration ($parts[1]); + if (isset($_GET['debugdur'])) {echo '
                        Parts1 = '.$parts[1].'
                        Duration = '; var_dump($dur);} + return ($dur); + case 'FREEBUSY': + return ( amr_parsePeriod ($parts[1], $tzobj)); + case 'TZID': /* ie TZID is a property, not part of a date spec */ + return ($parts[1]); + case 'ORGANIZER': { + return(amr_parseOrganiser($parts)); + } + case 'ATTENDEE': { + return(amr_parseAttendees($parts)); + } + case 'ATTACH': { + $attach = amr_parseAttach($parts); + If (ICAL_EVENTS_DEBUG) echo '
                        ATTACH returned:
                        '.print_r($attach,true); + return($attach); + } + case 'CATEGORIES': { + $cats = amr_parse_CATEGORIES($parts[1]); + return($cats ); + } + default:{ + return (amr_parseDefault($prop, $parts)); + } + } +} + +function amr_parse_component($type) { /* so we know we have a vcalendar at lines[$n] - check for properties or components */ + global $amr_lines; + global $amr_totallines; + global $amr_n; + global $amr_validrepeatablecomponents; + global $amr_validrepeatableproperties; + global $amr_globaltz; + + + while (($amr_n < $amr_totallines) ) { + $amr_n++; + $parts = amr_explodeByColon($amr_lines[$amr_n]); // 201507 + + if ((!$parts) or ($parts === $amr_lines[$amr_n])) { // ie no colon + // + } + else { // ok + if ($parts[0] === 'BEGIN') { /* the we are starting a new sub component - end of the properties, so drop down */ + if (in_array ($parts[1], $amr_validrepeatablecomponents)) { + $subarray[$parts[1]][] = amr_parse_component($parts[1]); + } + else { + $subarray[$parts[1]] = amr_parse_component($parts[1]); + } + } + else { + if ($parts[0] === 'END') { + if (empty($subarray)) return (false); + return ($subarray ); + } + /* now grab the value - just in case there may have been ";" in the value we will take all the rest of the string */ + else { + if ($parts[0] === 'X-WR-TIMEZONE;VALUE=TEXT') + $parts[0] === 'X-WR-TIMEZONE'; + + $basepart = explode (';', $parts[0], 2); /* Looking for RRULE; something...*/ + + //if (isset($_GET['debugcustom'])) {echo '
                        checking basepart '; var_dump($basepart); echo ' against '; var_dump($amr_validrepeatableproperties); } + + if (in_array ($basepart[0], $amr_validrepeatableproperties)) { + $temp = amr_parse_property ($parts); + // now this might return an array (eg categories), which can be multiple lines too + + if ($basepart[0] == 'CATEGORIES') { + //if (is_array($temp)) { + //if (WP_DEBUG) {echo '
                        Got an array:'.$basepart[0].' '; var_dump($temp);} + if (!empty($subarray[$basepart[0]]) and is_array($subarray[$basepart[0]])) { + // ie we got an array already, must be multiple lines + $subarray[$basepart[0]] = array_merge($subarray[$basepart[0]], $temp); + + } + else $subarray[$basepart[0]]= $temp; + } + + else $subarray[$basepart[0]][] = $temp; + } + else { + $subarray [$basepart[0]] = amr_parse_property($parts); + if (($basepart[0] === 'DTSTART') and (isset($basepart[1]))) { + // we have a DTSTART + // save the timezone separately in case we want to show events in event timezone + if (is_array($subarray['DTSTART'])) { + $subarray['DTSTART'] = $subarray['DTSTART'][0]; + } + if (is_object($subarray['DTSTART'])) { + $subarray['timezone'] = $subarray['DTSTART']->getTimezone(); + if (isset($_REQUEST['debugtz'])) { echo '
                        check tz'; + var_dump($subarray['DTSTART']); + var_dump($subarray['timezone']); + } + + if (amr_is_untimed($basepart[1])) { /* ie has VALUE=DATE */ + //$subarray ['Untimed'] = true; // removed v4.0.28 + //$subarray ['allday'] = true; // v4.0.17 + $subarray ['allday'] = 'allday'; // v4.0.28 + } + } + //else return false; + } + else if (($basepart[0] === 'X-MOZ-GENERATION') and (!isset( $subarray ['SEQUENCE']))) { + $subarray ['SEQUENCE'] = $subarray ['X-MOZ-GENERATION'] ; + /* If we have an mozilla funny thing, convert it to the sequence if there is no sequence */ + } + else { + if (isset($_GET['debugcustom']) and ($basepart[0] === 'X-TRUMBA-CUSTOMFIELD')) { + echo '
                        Base Part = '.$basepart[0]; + //var_dump($subarray [$basepart[0]]); + } + } + } + } + } + } + } + //if (ICAL_EVENTS_DEBUG) var_dump($subarray); + if (empty($subarray)) return false; + return ($subarray); /* return the possibly nested component */ +} + +// Parse the ical file and return an array ('Properties' => array ( name & params, value), 'Items' => array(( name & params, value), ) +function amr_parse_ical ( $cal_file ) { +/* we will try to continue as much as possible, ignore lines that are problems */ + global $icsfile_tzname, + $amr_lines, + $amr_totallines, + $amr_n, + $amr_validrepeatablecomponents, + $amr_last_modified; + + $icsfile_tzname = ''; + $line = 0; + $event = ''; + //If (ICAL_EVENTS_DEBUG) { echo '
                        Calfile = '; var_dump($cal_file);echo '
                        ';} + $data = file_get_contents($cal_file); + + // Now fix folding. According to RFC, lines can fold by having + // a CRLF and then a single white space character. + // We will allow it to be CRLF, CR or LF or any repeated sequence + // so long as there is a single white space character next. + + /**** we may also need to cope with backslahed backslashes, commas, semicolons as per http://www.kanzaki.com/docs/ical/text.html*/ + + $data = amr_remove_folding ($data); + $data = str_replace ( "\;", ";", $data ); + $data = str_replace ( "\,", ",", $data ); + $amr_n = 0; + $amr_lines = explode ( "\n", $data ); + $amr_totallines = count ($amr_lines) - 1; /* because we start from 0 */ + If (ICAL_EVENTS_DEBUG) { + echo '
                        Lines in ics file: '.$amr_totallines.'' ; + //echo '
                        first line: '; var_dump($amr_lines); + echo '
                        '; + } + + $parts = explode (':', $amr_lines[$amr_n],2 ); + /* explode faster than the preg, just split first : */ + + if ($parts[0] === 'BEGIN') { + + $ical = amr_parse_component('VCALENDAR'); + + if (!empty ($amr_last_modified)) + $ical['LastModificationTime'] = $amr_last_modified; + + //if (isset($_GET['debugcustom'])) {var_dump($ical);} + + return($ical); + } + else { + If (ICAL_EVENTS_DEBUG) { + echo '
                        VCALENDAR not found in file:'.$cal_file; + echo '
                        Line has: '.$amr_lines[$amr_n] ; + } + return false; + } + +} + +function amr_deal_with_tzpath_in_date ( $tzstring ) { + /* Receive something like /mozilla.org/20070129_1/Europe/Berlin + and return a tz object */ + $tz = explode ('/',$tzstring); + $l = count ($tz); + if ($l>1) { + $tzid= $tz[$l-2].'/'.$tz[$l-1]; + } + else $tzid = $tz[0] ; + $tzobj = timezone_open ( $tzid ); + If (ICAL_EVENTS_DEBUG or isset ($_REQUEST['tzdebug'])) { + echo '
                        Timezone Reduced to: '.$tzid.' Result of timezone object creation:'; + print_r($tzobj); + } + return ($tzobj); + } + +function amr_get_timezone_cities () { // + $timezone_identifiers = DateTimeZone::listIdentifiers(); + +/* Africa/Abidjan + +Africa/Accra + +Africa/Addis_Ababa + +Africa/Algiers + +Africa/Asmara + +*/ + + foreach( $timezone_identifiers as $i=> $value ){ + $c = explode("/",$value);//obtain continent,city + $tzcities[$value]['continent'] = $c[0]; + + if (isset($c[1])) + $tzcities[$c[1]] = $value; + else + $tzcities[$c[0]] = $value; + + } + + return ($tzcities); + } + +function amr_remove_folding ($data) { + $data = preg_replace ( "/[\r\n]+ /", "", $data ); + $data = preg_replace ( "/[\r\n]+\t/", "", $data ); // unfold any htab folding 20151125 corrected + $data = preg_replace ( "/[\r\n]+/", "\n", $data ); + return($data); +} + +// Replace RFC 2445 escape characters +function amr_format_ical_text($value) { + $output = str_replace( + array('\\\\', '\;', '\,', '\N', '\n'), + array('\\', ';', ',', "\n", "\n"), + $value + ); + return $output; +} + +function amr_is_untimed($text) { +/* checks for VALUE=DATE */ +if (stristr ($text, 'VALUE=DATE') and (!stristr($text, 'VALUE=DATE-TIME'))) return (true); +else return (false); +} + +function amr_track_last_mod($date) { +global $amr_last_modified; $amr_globaltz; + if (empty ($amr_last_modified)) + $amr_last_modified = amr_newDateTime('0000-00-00 00:00:01'); + if ($date->format('c') > $amr_last_modified->format('c')) { + $amr_last_modified = clone $date; + } +} + diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-pluggable.php b/wp-content/plugins/amr-ical-events-list/includes/amr-pluggable.php new file mode 100644 index 0000000..f182035 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-pluggable.php @@ -0,0 +1,2050 @@ +
                        ', $string); + + $s2 = str_replace(array( '\r', '\n'), '
                        ', $string); + + // optionally add // $s2 str_replace("=0D=0A", '
                        ', $string); + // or use a wordpress content filter + + return($s2); + } +} + +if (!function_exists('amr_ical_showmap')) { + function amr_ical_showmap ($text) { /* the address text */ + global $amr_options; + $t1 = __('Show in Google map','amr-ical-events-list'); + if (isset ($amr_options['no_images']) and $amr_options['no_images']) + $t3 = str_replace(array( '\r', '\n'), '', $text); //201705 test data had /n - bugon their side? + else + $t3 = ''.	$t1	.''; + /* this is used to determine what should be done if a map is desired - a link to google behind the text ? or some thing else */ + + return(''.$t3.''); + } +} + +if (!function_exists('amr_format_map')) { + function amr_format_map ($text) { /* the address text */ + + return(amr_ical_showmap ($text)); + } +} + +if (!function_exists('amr_events_sort_later_events_first')) { + function amr_events_sort_later_events_first($constrained) { + $constrained = amr_reverse_sort_by_key($constrained , 'EventDate'); + return ($constrained); + } +} + +if (!function_exists('amr_events_exclude_in_progress')) { + function amr_events_exclude_in_progress($constrained) { // exclude any events that started before the start date + global $amr_limits; + foreach ($constrained as $i => $e) { + if (amr_is_before($e['EventDate'], $amr_limits['start'])) { + unset($constrained[$i]); + } + } + return ($constrained); + } +} + +if (!function_exists('amr_register_for_event')) { + function amr_register_for_event() { + return ("Register!"); + } +} + +if (!function_exists('amr_handle_no_events')) { + function amr_handle_no_events () { + global $amr_options, + $amr_limits; + + $thecal = ''; + if (!empty($amr_options['noeventsmessage'])) { + $thecal .= ' ' + /* translators: ignore this and translate the string found earlier " No events..." */ + .__($amr_options['noeventsmessage'],'amr-ical-events-list').''; + + if ((isset($amr_limits['show_look_more'])) and ($amr_limits['show_look_more'])) { + $thecal .= amr_show_look_more(); + } + if ((isset($amr_limits['pagination'])) and ($amr_limits['pagination'])) { + $thecal .= amr_semi_paginate(); + } + } + return ($thecal); + } // end function +} + +if (!function_exists('amr_human_time')) { + function amr_human_time ($time) { + if ($time == '000000') return (__('midnight', 'amr-ical-events-list')); // to avoid am/pm confusion, note midnight is start of day + else if ($time == '120000') return (__('midday', 'amr-ical-events-list')); // to avoid am/pm confusion + else return ($time); + } +} + +if (!function_exists('amrical_calendar_views')) { +function amrical_calendar_views () { + global $amr_limits; + +// $link = amr_clean_link(); // // NOT clean link - must remember context. + $link = remove_query_arg(array( + 'calendar', + 'agenda', + 'listtype', + 'eventmap')); + + if (!empty ($amr_limits['agenda'])) // did the shortcode tell us which list type to use as agenda + $agenda = $amr_limits['agenda']; + else + $agenda = 1; + if (!empty ($amr_limits['eventmap'])) // not avail yet, but one day map of events with locations + $eventmap = $amr_limits['eventmap']; + else + $eventmap = false; // if not explicitly asked for a map, then do not do it + if (!empty($amr_limits['calendar'])) // did the shortcode tell us which list type to use as agenda + $calendar = $amr_limits['calendar']; + else { + $calendar = 9; + } + + if ($agenda) { + $agendaviewlink = remove_query_arg('months',$link ); + $agendaviewlink = add_query_arg(array('agenda'=>$agenda),$agendaviewlink ); + $agendaviewlink = ''.__('Agenda', 'amr-ical-events-list').''; + } + else + $agendaviewlink = ''; + // + if ($calendar) { + $calendarviewlink = ' '.__('Calendar', 'amr-ical-events-list').''; + } + else $calendarviewlink = ''; + // + if ($eventmap) { + $mapviewlink = ' '.__('Map', 'amr-ical-events-list').''; + } + else $mapviewlink = ''; + $htmlviews = $agendaviewlink.$calendarviewlink.$mapviewlink; + if (!empty ($htmlviews ) ) // this is so we do not return an empty div + return ('
                        '.$htmlviews.'
                        '); + else + return (''); +} +} + +if (!function_exists('amr_month_year_navigation')) { +function amr_month_year_navigation ($start) { //note get is faster than post +global $amr_listtype; + $link = remove_query_arg('start',get_permalink()); + $link = add_query_arg('listtype',$amr_listtype, $link); + return ('
                        ' //20151125 - some folks systems don't do $_REQUEST properly + .amr_monthyeardrop_down($start->format('Ymd')) + .'' + .'
                        '); +} +} + +if (!function_exists('amr_week_links')) { +function amr_week_links ($start,$weeks) { // returns array ($nextlink, $prevlink, + + global $wpdb, $wp_locale; + + // Get the next and previous month and year + $prev = new Datetime(); //if cloning dont need tz + $prev = clone $start; + date_modify($prev, '-'.($weeks*7).' days'); //may need later on if we are going to show multiple boxes on one page + $prevstring = $prev->format('Ymd'); + $prevstring2 = amr_date_i18n('jS F',$prev); + $next = new Datetime(); //if cloning dont need tz + $next = clone $start; + date_modify($next, '+'.($weeks*7).' days'); + $nextstring = $next->format('Ymd'); + $nextstring2 =amr_date_i18n('jS F',$next); + + //--------------------------- get navigation links --------------------------------------- + + $link = amr_clean_link(); + + $prevlink = + ''; + + $nextlink = ''; + + return (array('prevlink'=>$prevlink,'nextlink'=>$nextlink)); +} +} + +if (!function_exists('amr_month_year_links')) { +function amr_month_year_links ($start,$months) { // returns array ($nextlink, $prevlink, $dropdown + + global $wpdb, $wp_locale; + + // Get the next and previous month and year + $previous = new Datetime(); //if cloning dont need tz + $previous = clone $start; + date_modify($previous, '-1 month'); //may need later on if we are going to show multiple boxes on one page + $prevmonth = $previous->format('m'); + $prevyear = $previous->format('Y'); + $next = new Datetime(); //if cloning dont need tz + $next = clone $start; + date_modify($next, '+'.$months.' month'); + $nextmonth = $next->format('m'); + $nextyear = $next->format('Y'); + + //--------------------------- get navigation links --------------------------------------- + + $link = amr_clean_link(); + if (!empty ($_REQUEST['agenda']) ) + $link = add_query_arg('agenda',$_REQUEST['agenda'], $link); + elseif (!empty ($_REQUEST['calendar']) ) + $link = add_query_arg('calendar',$_REQUEST['calendar'], $link); + + if ( $previous ) { $prevlink = + ''; + } + else $prevlink = ''; + if ( $next ) { + $nextlink = ''; + } + else $nextlink = ''; + return (array('prevlink'=>$prevlink,'nextlink'=>$nextlink)); +} +} + +if (!function_exists('amr_monthyeardrop_down')) { +function amr_monthyeardrop_down($current_start) { +global $wp_locale; + +// $m = isset($_GET['m']) ? (int)$_GET['m'] : 0; // actually yyyymm + $startobj = amr_newDateTime(); + $ym = $startobj->format('Ym'); + $y = $startobj->format('Y'); + $m = $startobj->format('m'); + $startobj->setDate($y,$m,'01'); +// $ym = (int) substr($start, 0, 6); +// $m = (int) substr($start, 4, 2); + $html = ''; + $options=array(); +// date_modify($startobj, '-1 months'); // v4.0.19 + for ($i=1; $i<=18; $i=$i+1) { + $startstring = $startobj->format('Ymd'); + $m = (int) substr($startstring, 4, 2); + $y = (int) substr($startstring, 0, 4); + $options[$startstring] = $wp_locale->get_month($m).' '.$y; + date_modify($startobj,'+1 month'); + } + $html .= amr_simpledropdown('start', $options, $current_start); + return($html); +} +} + +if (!function_exists('amr_calendar_navigation')) { +function amr_calendar_navigation($start, $months, $weeks, $liststyle, $views='') { + + if ($liststyle === 'weekscalendar') + $month_nav_html = amr_week_links ($start, $weeks); // returns array ($nextlink, $prevlink, $dropdown + else + $month_nav_html = amr_month_year_links ($start, $months); // returns array ($nextlink, $prevlink, $dropdown + $prevlink = $month_nav_html['prevlink']; + $nextlink = $month_nav_html['nextlink']; + // + if (($liststyle === 'weekscalendar') OR + (($months < 2) and ($liststyle == "smallcalendar"))) { + $navigation = $prevlink.'  '.$nextlink; + } + else { + $navigation = + amr_month_year_navigation ($start) + .$prevlink.' ' + .$nextlink + ; + } + return ($navigation); + //------------------------end navigation----------- +} +} + +if (!function_exists('amr_weeks_caption')) { + function amr_weeks_caption($start) { + // do not just want to use day format here, as may be too concise and week format cannot handle the start date, and there is no universal consistency on the week number logic + // later may offer an option we can use, but for now people can write a function + // should we use this for weeks grouping too ? maybe + $caption_format = 'l jS F'; + $calendar_caption = sprintf( + __('Week starting %s','amr-ical-events-list'), + amr_date_i18n ($caption_format, $start)); + return($calendar_caption); + } +} + +if (!function_exists('amr_semi_paginate')) { +function amr_semi_paginate() { + global $amr_limits; + global $amrW; + + if ($amrW) return (''); + + $next = new Datetime(); //if cloning dont need tz + $next = clone $amr_limits['end']; + $next->modify('+1 second'); + $nextd = $next->format("Ymd"); + $gobackd = $amr_limits['start']->format("Ymd"); + $next = htmlentities (add_query_arg (array ('start'=>$nextd, 'startoffset'=>0 ))); + $explaint = ''; + if ((!empty ($amr_limits['hours'])) and (!($amr_limits['hours'] == '0'))) { + $goback = htmlentities (add_query_arg (array ('start'=>$gobackd, 'hoursoffset'=> -$amr_limits['hours']))); + $goback = remove_query_arg('startoffset',$goback); + $goback = remove_query_arg('monthsoffset',$goback); + $showmore = htmlentities (add_query_arg (array( + + 'hours' => $amr_limits['hours']*2 + ))); + $showless = htmlentities (add_query_arg (array( + + 'hours' => round($amr_limits['hours']/2) + ))); + $showmuchmore = htmlentities (add_query_arg (array( + + 'hours' => $amr_limits['hours']*20 + ))); + $showmuchless = htmlentities (add_query_arg (array( + 'hours' => max (1, round($amr_limits['hours']/20)) + ))); + $explaint = ' '.__('hours','amr-ical-events-list'); + } + else + if (isset ($amr_limits['months'])) { + $goback = htmlentities (add_query_arg (array ('start'=>$gobackd, 'monthsoffset'=> -$amr_limits['months']))); + $showmore = htmlentities (add_query_arg (array( + + 'months' => $amr_limits['months']*2 + ))); + $showless = htmlentities (add_query_arg (array( + + 'months' => round($amr_limits['months']/2) + ))); + $showmuchmore = htmlentities (add_query_arg (array( + + 'months' => $amr_limits['months']*4 + ))); + $showmuchless = htmlentities (add_query_arg (array( + 'months' => round($amr_limits['months']/4) + ))); + $explaint = ' '.__('months','amr-ical-events-list'); + } + else if (isset ($amr_limits['days'])) { + $goback = htmlentities (add_query_arg (array ('start'=>$gobackd, 'startoffset'=> -$amr_limits['days']))); + $showmore = htmlentities (add_query_arg (array( + 'days' => $amr_limits['days']*2 + ))); + $showless = htmlentities (add_query_arg (array( + 'days' => round($amr_limits['days']/2) + ))); + $showmuchmore = htmlentities (add_query_arg (array( + 'days' => $amr_limits['days']*10 + ))); + $showmuchless = htmlentities (add_query_arg (array( + 'days' => max (1,round($amr_limits['days']/10)) + ))); + $explaint = ' '.__('days','amr-ical-events-list'); + } + + $show10 = htmlentities (add_query_arg (array('events'=> 10))); + $show50 = htmlentities (add_query_arg (array('events'=> 50))); + $show100 = htmlentities (add_query_arg (array('events'=> 100))); +// $explaint = ' - '.amr_explain_limits(); + + $prevt = __('show past events' ,'amr-ical-events-list'); + $lesst = __('show less' ,'amr-ical-events-list').$explaint; + $moret = __('show more' ,'amr-ical-events-list').$explaint; + $muchlesst = __('show much less' ,'amr-ical-events-list').$explaint; + $muchmoret = __('show much more' ,'amr-ical-events-list').$explaint; +// $lesstt = __('show less' ,'amr-ical-events-list').$explaint; +// $morett = __('show more' ,'amr-ical-events-list').$explaint; + $nextt = __('show future events' ,'amr-ical-events-list'); + $eventnum10t= __('show maximum 10 events if available' ,'amr-ical-events-list').$explaint; + $eventnum50t= __('show maximum 50 events if available' ,'amr-ical-events-list').$explaint; + $eventnum100t= __('show maximum 100 events if available' ,'amr-ical-events-list').$explaint; + return ( + '
                        ' + .' ' + .'−− ' + .'  ' + .'10 ' + .'50 ' + .'100 ' + .'+ ' + .'++ ' + .'' +// .'
                        '.amr_explain_limits().'' + .'
                        ' + ); + } +} + +if (!function_exists('amr_format_CID')) { + function amr_format_CID ($cid, $event) { + return ($cid); + } +} + +if (!function_exists('amr_mimic_taxonomies')) { // only called if we have an ics file + function amr_mimic_taxonomies ($ical) { // check if there is anything in the query url and only accept matches + + if (isset($ical['VEVENT']) and (isset($_REQUEST['category']))) { + $catname = $_REQUEST['category']; + + foreach ($ical['VEVENT'] as $i => $e) { + $found= false; + if (!empty($e['CATEGORIES'])) { + + foreach ($e['CATEGORIES'] as $j => $c) { + if (is_array($c)) { + + foreach ($c as $k => $c2) { + if (($c2 == $catname )) $found= true; + } + } + else if ($c == $catname ) $found= true; + } + } + if (!$found) unset($ical['VEVENT'][$i]); + } + + } + return($ical); + } + + // var_dump($ical); + //foreach ($ical ) + +} + +if (!function_exists('amr_format_allday')) { + function amr_format_allday ($content) { + if ($content == 'allday') return (__('all day', 'amr-ical-events-list')); + else return (''); + } +} + +if (!function_exists('amr_format_attach')) { + function amr_format_attach ($item, $event) { // receive 1 attachment each being an array of type, url, binary (opt) + + if (empty ($item)) return ; + $hrefhtml = ''; +// ---- handle binary + if (!empty($item['binary'])) { + $name = str_replace($event['UID'], ' ','').'-image'; + $src = amr_format_binary ($name,$item['binary']); + if (!empty($src)) + $hrefhtml .= ''; + } +// ---- handle CID + else if (!empty($item['CID']) ) { + $hrefhtml .= amr_format_CID ($item['CID'], $event); + } +// ---- handle url, prepare title + if (empty($item['title'])) { // make a title somehow + if ( !empty($item['url'])) // this will only be there if it is an internal event + $item_title = //esc_url($item['url']); + __('Event attachment','amr-ical-events-list'); // 2015 03 9 + else + $item_title = ' '; + } + else $item_title = $item['title']; +// ---- handle mime types or url + if (!empty($item['type']) ) { // the fmttype or mime type + + $typeparts = explode ('/',$item['type'] ); +// check for title, type = audio/... video/.. etc + if ($typeparts[0] === 'image') { // only include if NOT already in the content + + /* if (false and !empty($event['DESCRIPTION'])) { // desc is an array + //var_dump($event['DESCRIPTION']); + if (stristr($event['DESCRIPTION'], $item['url'])) + return; // ignore it if already in content + if ((!empty($item['thumb'])) and + (stristr($event['DESCRIPTION'], $item['thumb']))) + return; + } + else */ + if (!empty($item['thumb'])) { // only do thumb? + $item_title = ''.$item_title
+						.''; + } + else $item_title = ''.$item_title
+						.''; + } + else if ($typeparts[0] === 'text') { } +// do not do others for now - may not make sense to do , other than text + + } + + if (!empty($item['url'])) { + + $tmp = apply_filters('amr_attachment_title', + array('title'=>$item_title , 'event'=>$event)); + + $item_title = $tmp['title']; + + $hrefhtml .= '' + .$item_title.''; + } + else $hrefhtml .= $item_title; + + if (!empty($hrefhtml)) return ($hrefhtml); + } +} + +if (!function_exists('amr_format_url')) { + function amr_format_url ($url) { + // to be used to format the ics file event url - assumed to be valid + $text = str_replace('http://','', $url); + // if it is an external url, then open in new window + if (amr_external_url($url)) { + $url = ''.$text.''; + } + else + $url = ''.$text.''; + return($url); + } +} + +if (!function_exists('amr_format_allday') ) { + function amr_format_allday ($content) { + if ($content == 'allday') + return (_x('all day', 'when an event runs for full days, note the   prevents the text wrappping in a table.','amr-ical-events-list')); + else return (''); + } +} + +if (!function_exists('amr_format_taxonomy_link') ) { //problem ics file categories are string not array ? so skip? + function amr_format_taxonomy_link ($tax_name, $tax_term, $link='') { // will receive id + // if in widget should link to calendar page + // if in agenda or calendar - same ? + // if in event info - either calendar page or archive + global $amr_calendar_url, $amr_taxonomy_url; + + if (empty($amr_taxonomy_url)) {// not yet set + if (empty($amr_calendar_url)) { + $amr_taxonomy_url = amr_clean_link(); // not good - basically populates the global when it possible should not + } + else { + $amr_taxonomy_url = $amr_calendar_url; + } + } + + if (empty($link) and (!empty($amr_taxonomy_url)) ) { + $link = $amr_taxonomy_url; + } + $term = get_term($tax_term, $tax_name, OBJECT); + + //var_dump($term); + + if (!isset($term->name)) { // if it is not a wordpress taxonomy ? + $name = $tax_term; + $link2 = add_query_arg ('category', $tax_term, $link); + $title = sprintf(__('View events in %s %s','amr-ical-events-list'), + __('category'), $tax_term); + + } + else { + $name = $term->name; + $link2 = add_query_arg ($tax_name, $term->slug, $link); + $title = sprintf(__('View events in %s %s','amr-ical-events-list'), + __($tax_name,'amr-ical-events-list'), $term->name); + } + $html = ''.$name.''; + return ($html); + } +} + +if (!function_exists('amr_format_taxonomies') ) { //problem ics file categories are string not array ? so skip? + function amr_format_taxonomies ($tax_name, $tax_array, $link='' ) { + + if (!is_array($tax_array) and (stristr($tax_array,','))) // if it is a string like in the icsfile, convert to an array + $tax_array = explode(',',$tax_array); + + foreach ($tax_array as $i => $t) { + if (is_array($t)) { + foreach ($t as $i2 => $t2) { + $links[] = amr_format_taxonomy_link ($tax_name, $t2); + } + } + else + $links[] = amr_format_taxonomy_link ($tax_name, $t); + } + $html = implode(',',$links); + return( $html); + } +} + +if (!function_exists('amr_derive_calprop_further')) { + function amr_derive_calprop_further (&$p) { + global $amr_options; + if (isset ($p['totalevents'])) + $title = __('Total events: ', 'amr-ical-events-list').$p['totalevents']; /* in case we have noename? ***/ + if (isset ($p['X-WR-CALDESC'])) { + $p['X-WR-CALDESC'] = nl2br2 ($p['X-WR-CALDESC']); + $desc = __($p['X-WR-CALDESC'],'amr-ical-events-list'); //allow translation of whatever value is in the ics file + + } + else $desc = __('No description available','amr-ical-events-list'); + + if (isset ($p['X-WR-CALNAME'])) { + $p['X-WR-CALNAME'] = __($p['X-WR-CALNAME'],'amr-ical-events-list'); + } + if (isset ($p['icsurl'])) {/* must be!! */ + $p['addtogoogle'] = add_cal_to_google ($p['icsurl']); + if (isset ($p['X-WR-CALNAME'])) { + $p['subscribe'] = sprintf(__('Subscribe to %s Calendar','amr-ical-events-list'), + htmlentities ($p['X-WR-CALNAME'])); + $p['X-WR-CALNAME'] = '' +//2017083 for & .htmlspecialchars($p['X-WR-CALNAME']) + .$p['X-WR-CALNAME'] + .''; + } + else { // if we do not have a name, use the basename of the url + $f = basename($p['icsurl'], ".ics"); + $p['subscribe'] = sprintf(__('Subscribe to %s Calendar','amr-ical-events-list'), $f); + $p['X-WR-CALNAME'] = '' + .$f + .''; + } + $t = __('Subscribe to calendar in your calendar application.', 'amr-ical-events-list'); + if (isset ($amr_options['no_images']) and $amr_options['no_images']) + $t3 = $t = __('Subscribe to calendar', 'amr-ical-events-list'); + else + $t3 = ''; + + $p['icsurl'] = + '' + .$t3.''; + } + + $p['icalrefresh'] = amr_show_refresh_option(); + return ($p); + } +} + +if (!function_exists('amr_derive_summary')) { + function amr_derive_summary (&$e ) { + global $amr_options; + global $amr_listtype; + global $amrW; + //global $amrwidget_options; + global $amr_calendar_url; + global $amr_liststyle; + /* If there is a event url, use that as href, else use icsurl, use description as title */ + + if (isset($e['SUMMARY'])) + $e['SUMMARY'] = (amr_just_flatten_array ($e['SUMMARY'] )); + else + return (''); + + if (!empty($e['excerpt'])) { + $e['excerpt'] = (amr_just_flatten_array ($e['excerpt'] )); + } + + if (isset($e['type']) and ($e['type'] == 'VFREEBUSY') ) { + $e['SUMMARY'] = __($e['SUMMARY'],'amr-ical-events-list'); // if busy - will be the translation of it + $e['excerpt'] = $e['SUMMARY']; // the translated summary + $e['DESCRIPTION'] = $e['excerpt']; + if (!empty($amr_options['freebusymessage'])) // might be a red X, don't want the description and excerpt to be that + $e['SUMMARY'] = __($amr_options['freebusymessage'],'amr-ical-events-list'); + } + + if (in_array($amr_liststyle, array('smallcalendar', 'largecalendar','weekscalendar'))) + $hoverdesc = false; + else { + if (empty($amrW)) + $hoverdesc = false; + else if ($amrW == 'w_no_url') + $hoverdesc = false; + else $hoverdesc ='maybe'; + } + + + if (isset($e['URL'])) + $e_url = amr_just_flatten_array($e['URL']); + else $e_url = ''; + /* If not a widget, not listype 4, then if no url, do not need or want a link */ + /* Correction - we want a link to the bookmark anchor on the calendar page***/ + if (empty($e_url)) { + if (!($amrW == 'w_no_url')) { +// if (!empty($amrwidget_options['moreurl'])) { + if (!empty($amr_calendar_url)) { + $e_url = ' href="'.($amr_calendar_url) + // .'#'.$e['Bookmark'] + .'" '; + } + else { + if (!empty($amr_options['listtypes'][$amr_listtype]['general']['Default Event URL'])) { + $e_url = ' class="url" href="' + .clean_url($amr_options['listtypes'][$amr_listtype]['general']['Default Event URL']).'" '; + } + else $e_url = ''; /*empty anchor as defined by w3.org */ + /* not a widget */ + } + } + else {return ($e['SUMMARY']); } + } + else { + $e_url = ' class="url" href="'.esc_url($e_url).'" ' ; + } + $e_desc = ''; + if ($hoverdesc) { + if (isset ($e['DESCRIPTION'])) { + $e_desc = amr_just_flatten_array($e['DESCRIPTION']); + } + if (!empty($e_desc)) { + $e_desc = 'title="'.htmlspecialchars(str_replace( '\n', ' ', (strip_tags($e_desc)))).'"'; + } + } + else { + if (!empty ($e['excerpt'])) { + $e_desc = strip_tags($e['excerpt']); + $e_desc = ' title="'.$e_desc.'" '; + } + else + $e_desc = ' title="'.$e['SUMMARY'].' - '.__('More information', 'amr-ical-events-list').'" '; + } + if (!empty ($e_url)) { + if (amr_external_url($e_url)) + $e_url .= ' target="_blank" '; + $e_summ = ''. $e['SUMMARY'].''; + } + else $e_summ = $e['SUMMARY']; + return( $e_summ ); + } +} + +if (!function_exists('add_cal_to_google')) { + function add_cal_to_google($cal) { + global $amr_options; + /* adds a button to add the current calemdar link to the users google calendar */ + $text1 = __('Add to google calendar', 'amr-ical-events-list'); + if (isset ($amr_options['no_images']) and $amr_options['no_images']) + $text2 = __('Add to google', 'amr-ical-events-list'); + else + $text2 = ''.$text1.''; + return ( + ''.$text2.''); + } +} + +if (!function_exists('add_event_to_google')) { + function add_event_to_google($e) { + global $amr_options; + + if (!isset($e['EventDate'])) return(''); + if (isset($e['LOCATION'])) + $l = '&location='.esc_html(strip_tags(str_replace(' ','%20',($e['LOCATION'] )))); + else + $l = ''; + + if (!isset($e['SUMMARY'])) + $e['SUMMARY'] = ''; + + if (!isset($e['DESCRIPTION'])) + $e['DESCRIPTION'] = ''; + $t = __("Add event to google" , 'amr-ical-events-list'); + + if (isset ($amr_options['no_images']) and $amr_options['no_images']) + $t2 = $t; + else + $t2 = ''.$t.''; + + $details = amr_just_flatten_array ($e['DESCRIPTION']); //var_dump($details); + if (!empty($details)) + $details ='&details='.rawurlencode(strip_tags($details)); + + /* adds a button to add the current calendar link to the users google calendar */ + $html = ''.$t2.''; + return ($html);/* Note google only allows simple html*/ + } +} + +if (!function_exists('amr_show_refresh_option')) { + function amr_show_refresh_option() { + global $amr_globaltz, $amr_lastcache, $amr_options, $amr_last_modified; + $uri = add_query_arg(array('nocache'=>'true'), $_SERVER['REQUEST_URI']); + if (!is_object($amr_lastcache)) $text = __('Last Refresh time unexpectedly not available','amr-ical-events-list'); + else { + date_timezone_set($amr_lastcache, $amr_globaltz); + $t = $amr_lastcache->format(get_option('time_format').' T'); + $text = __('Refresh calendars','amr-ical-events-list'); + $text2 = sprintf(__('Last refresh was at %s. ','amr-ical-events-list'),$t); + } + if (!is_object($amr_last_modified)) $text2 = __('Remote file had no modifications. ','amr-ical-events-list'); + else { + date_timezone_set($amr_last_modified, $amr_globaltz); + $t2 = $amr_last_modified->format(get_option('date_format').' '.get_option('time_format').' T.'); + $text2 = sprintf(__('The remote file was last modified on %s.','amr-ical-events-list'),$t2); + } + + if (isset ($amr_options['no_images']) and $amr_options['no_images']) $t3 = $text; + else $t3 = ''.$text.''; + return ( ''.$t3.''); + } +} + +if (!function_exists('amr_list_properties')) { + function amr_list_properties($icals, $tid, $class) { /* List the calendar properties if requested in options */ + global $amr_options, + $amr_liststyle, + $amr_listtype; +/* --- setup the html tags ---------------------------------------------- */ + + //if (ICAL_EVENTS_DEBUG) var_dump($icals); + + if ($amr_liststyle === 'custom') { // get the stored file uirl, if it does not exist, set to table + $custom_htmlstyle_file = amr_get_htmlstylefile(); + if (empty ($custom_htmlstyle_file ) ) + $amr_liststyle = 'table'; + } + + switch ($amr_liststyle) { + case 'list' : + $d =' $p) { /* go through the options list and list the properties */ + amr_derive_calprop_further ($icals[$i]); + + $rowhtml = ''; //20140806 col 1 of cal properties were being overwritten - fix + foreach ($columns as $col => $data) { + $cprop = ''; + foreach ($data as $k => $v) { + if (!empty ($icals[$i][$k])) {/*only take the fields that are specified in options */ + $cprop .= amr_format_value($icals[$i][$k], $k, + $icals[$i], $v['Before'], $v['After'] ); + } + } + if (empty($cprop)) + $cprop = ' '; + if (!empty($d)) // if we have a td type html to bracket the column with + $cprop = $d.' class="col'.$col.'">'.$cprop.$dc; + $cprop .= AMR_NL; + $rowhtml .= $cprop; + } // end of columns for one calendar + + $html .= $r.' class="cal'.$i.'" >'.$rowhtml.$rc.AMR_NL; + + } // end of calendars + + if (!(empty($html)) ) { + $html = + ((!empty($htm['box'])) ? $htm['box'].' id="'.$tid.'" class="'.$class.'">' : '') + .$html + .((!empty($htm['boxc'])) ? $htm['boxc'] : ''); + } + + return ($html); +} +} + +if (!function_exists('amr_format_grouping') ) { + function amr_format_grouping ($grouping, $datestamp) { + /* check what the format for the grouping should be, call functions as necessary*/ + global $amr_options; + global $amr_listtype; + global $amr_formats; + + if (empty($grouping)) return ''; + + if (in_array ($grouping ,array ('Year', 'Month', 'Day'))) { + //if (WP_DEBUG) echo '$amr_listtype = '.$amr_listtype.' $grouping='.$grouping; + return (amr_format_date( $amr_options['listtypes'][$amr_listtype]['format'][$grouping], $datestamp)); + } + else if ($grouping === 'Week') { + $f = $amr_formats['Week']; + $w = amr_format_date( 'W', $datestamp); + return (sprintf(__('Week %u', 'amr-ical-events-list'),$w)); + } + else + { /* for "Quarter", "Astronomical Season", "Traditional Season", "Western Zodiac", "Solar Term" */ + $func = str_replace(' ','_',$grouping); + if (function_exists($func) ) { + return call_user_func($func,$datestamp); + } + else return ('No function defined for Date Grouping '.$grouping); + } + } +} + +if (!function_exists('amr_get_html_structure') ) { +function amr_get_html_structure($amr_liststyle, $no_cols) { + if ($amr_liststyle === 'custom') { // get the stored file uirl, if it does not exist, set to table + $custom_htmlstyle_file = amr_get_htmlstylefile(); + if (empty ($custom_htmlstyle_file ) ) + $amr_liststyle = 'table'; + } + switch ($amr_liststyle) { + case 'list' : // deprecated + $htm['ul'] = ''; $htm['li']= ''; + $htm['ulc'] = ''; $htm['lic']= ''; +// $htm['ul'] = ''.AMR_NL; + $htm['box'] = ''.PHP_EOL; + $htm['hcell'] =''; + $htm['headc'] = ''.PHP_EOL; + $htm['body'] = PHP_EOL.''.PHP_EOL; + $htm['box'] = PHP_EOL.''; + $htm['body'] = AMR_NL.''; + $htm['bodyc'] = AMR_NL.''; + $htm['box'] = AMR_NL.'Peak Memory So far :'.amr_memory_convert(memory_get_usage(true)); + echo '
                        Now Listing, and locale = '.$locale.' and list type = '.$amr_listtype.'
                      '; + } + + if (!defined('AMR_NL')) define('AMR_NL','PHP_EOL'); + /* we want to maybe be able to replace the table html for alternate styling - may need to keep the li items though */ + $amrconstrainedevents = count($events); + $html = ''; + + if (in_array ($amr_liststyle, array('smallcalendar','largecalendar','weekscalendar'))) { + /* is it a calendar box we want - handle separately */ + $html = amr_events_as_calendar($amr_liststyle, $events, $tid, $class); + return($html); + } + + $columns = $amr_event_columns; // 20151018 add so we can use easily//prepare_order_and_sequence ($amr_options['listtypes'][$amr_listtype]['compprop']); + + if (!$columns) return; // no display requested + else $no_cols = count($columns); + + /* --- setup the html tags ---------------------------------------------- */ + $htm = amr_get_html_structure ($amr_liststyle, $no_cols); + + /* -- show view options or not ------------------------------------------*/ + if ((isset($amr_limits['show_views'])) + and ($amr_limits['show_views']) and $change_view_allowed) { + $views = amrical_calendar_views(); + } + else + $views = ''; + /* -- show month year nav options or not ----------------NOT IN USE - need to lift code out for reuse --------------------------*/ + + $start = amr_newDateTime('now'); + if (!empty($amr_limits['start'])) + //$start = amr_newDateTime('now'); + //else + $start = clone $amr_limits['start']; + $navigation = ''; + if ((isset($amr_limits['show_month_nav'])) + and ($amr_limits['show_month_nav']) ) { + if (isset ($amr_limits['months'])) + $months = $amr_limits['months']; + else + $months = 1; +// $start = new Datetime('now',$amr_globaltz); +// $start = clone $amr_limits['start']; + $navigation = amr_calendar_navigation($start, $months, 0, $amr_liststyle); // include month year dropdown with links + $navigation = '
                      '.$navigation.'
                      '; + } + else { + if ((isset($amr_limits['month_prev_next'])) and $amr_limits['month_prev_next'] + and function_exists('amr_do_month_prev_next_shortcode')) { + $navigation .= amr_do_month_prev_next_shortcode(); + } + if ((isset($amr_limits['month_year_dropdown'])) and $amr_limits['month_year_dropdown'] + and function_exists('amr_month_year_navigation')) { + $navigation .= amr_month_year_navigation($start); + } + + } + +/* -- heading and footers code ------------------------------------------*/ + + if (isset($amr_limits['headings'])) + $doheadings = $amr_limits['headings']; + else + $doheadings = true; + if (isset($amr_limits['pagination'])) + $dopagination = $amr_limits['pagination']; + else + $dopagination = true; + + $headhtml = ''; + if ($doheadings) { + $docolheading=false; + if (ICAL_EVENTS_DEBUG) {echo '
                      Headings? '; var_dump($amr_options['listtypes'][$amr_listtype]['heading']);} + foreach ($amr_options['listtypes'][$amr_listtype]['heading'] as $i => $h) { + if (!empty($h)) + $docolheading=true; + } + if ($docolheading) { + foreach ($columns as $i => $col) { + if (isset($amr_options['listtypes'][$amr_listtype]['heading'][$i])) + $colhead = __($amr_options['listtypes'][$amr_listtype]['heading'][$i],'amr-ical-events-list'); + else + $colhead = ' '; + $headhtml .= amr_do_a_headercell_html($htm, $i, $colhead); + } + $html .= amr_do_column_header_html($htm, $i, $headhtml); + } + } +/* ***** with thechange in list types, we have to rethink how we do the footers .... for tables we say the footers up front, but for others not. */ + $fhtml = ''; + if ((isset($amr_options['ngiyabonga']) and ($amr_options['ngiyabonga']))) + $fhtml .= amr_ngiyabonga(); + else + $fhtml .=''; + + if ((isset($amr_limits['show_look_more'])) and ($amr_limits['show_look_more'])) { + $fhtml .= amr_show_look_more(); + } + if ((!empty($amr_limits)) and ($amrtotalevents > $amrconstrainedevents) ) { + if ($dopagination and function_exists('amr_semi_paginate')) + $fhtml .= amr_semi_paginate(); + if (function_exists('amr_ical_edit')) + $fhtml .= amr_add_new_event_link(); + } + + $alt = false; +/* -- body code ------------------------------------------*/ +/* ----------- check for groupings and compress these to requested groupings only */ + $groupings = amr_get_groupings_requested (); + $groupedevents = amr_assign_events_to_groupings ($groupings, $events); // will just return if no grouping + $html .= amr_list_events_in_groupings ($htm, '', $columns, $groupedevents, $events); + + if (!empty ($tid)) { + $tid = ' id="'.$tid.'" '; + } + $html = ((!empty($htm['box'])) ? ($htm['box'].$tid.' class="'.$class.'">') : '') + .$html + .$htm['boxc'] + .$fhtml; + + $html = + $views.AMR_NL + .$navigation.AMR_NL + .$html.AMR_NL; + + return ($html); + } + +} + +if (!function_exists('amr_show_more_prev')) { +// coming later maybe, or will mods to look more be adequate? +// - show 'more' on page 2 onwards +// - on page 2 onwards, show see previous (like a back button?) +// - do not show more on last page - have to check DB for 'last event date' ? may slow things down + function amr_show_more_prev() { + } +} + +if (!function_exists('amr_show_look_more')) { // does a google style next +function amr_show_look_more() { + global $amr_limits, + $amr_options, + $amr_formats, + $amr_globaltz, + $amr_last_date_time; + + $next = new datetime('',$amr_globaltz); + if (!empty($amr_last_date_time)) { + $next = clone $amr_last_date_time; // get last used event date + } + else { + $amr_last_date_time = $amr_limits['end'] ; + $next = $amr_limits['end'] ; + } + date_time_set($next,0,0,0); // set to the beginning of the day + $prev = $amr_limits['start'] ; + + $nexturl = add_query_arg ('events', $amr_limits['events']*2); + $prevurl = remove_query_arg ('events'); + + // if no events, then this makes no sense $explaint = sprintf (__('Displaying %s events.'),$amr_limits['events']) ; + $explaint = ''; + // due to events limit, it may not show all events in a given day, so do not say displaying until date, + // rather just start the next display from that last date - may be a few events that overlap. + + foreach ($amr_limits as $i=>$value) { + if (in_array ($i, array('days','hours','months','weeks'))) { + $nexturl = add_query_arg ($i, $value, $nexturl); + $prevurl = add_query_arg ($i, $value, $prevurl); + date_modify($prev, '-'.$value.' '.$i); // work back to the previous event + } + } + $nextd = $next->format("Ymd"); + $prevd = $prev->format("Ymd"); + $nexturl = (add_query_arg (array ('start'=>$nextd ), $nexturl)); + $prevurl = (add_query_arg (array ('start'=>$prevd ), $prevurl)); + // NB MUST increase the number of events otherwise one can get caught in a situation where if num of events less than events in a day, one can never get past that day. + + if (empty($amr_options['lookmoremessage'])) + $moret = __('Look for more', 'amr-ical-events-list'); + else + /* translators: ignore, the text appears for translation eslewhere */ + $moret = __($amr_options['lookmoremessage'],'amr-ical-events-list'); + + $morett = sprintf( __('Look for more from %s' ,'amr-ical-events-list'),$amr_last_date_time->format($amr_formats['Day'])); + + + if (!empty($_REQUEST['start'])) { + if (empty($amr_options['lookprevmessage'])) + $prevt = ''; + else + /* translators: ignore, the text appears for translation eslewhere */ + $prevt = __($amr_options['lookprevmessage'],'amr-ical-events-list'); + + if (empty($amr_options['resetmessage'])) + $reset = ''; // allow it to be blanked out + else + /* translators: ignore, the text appears for translation eslewhere */ + $reset = __($amr_options['resetmessage'],'amr-ical-events-list'); + } + else { // if we on first page, do not show + $reset = ''; + $prevt = ''; + } + + if (!empty ($reset) ) { + $reseturl = remove_query_arg(array('start','startoffset','events','days','months','hours','weeks')); + $reset =''.$reset.''; + } + if (!empty ($prevt) ) { + $prevt =''; + } + return ( + '
                       ' + .$prevt.' ' + .$reset.' ' + .'' + .'
                      ' + ); + } +} + +if (!function_exists('amr_parseModifiers')) { + function amr_parseModifiers($text) { +/* NAME="Contact Name";ID=28380;TYPE=SingleLine +*/ + $modifers = array(); + $p = explode (';',$text); /* if only a single will still return one array value */ + foreach ($p as $i => $v) { + $eq = strpos($v,'='); + $pmodifier = substr ($v,0,$eq); + $pvalue = substr ($v,$eq+1); + $func = 'amr_parse'.$pmodifier; + if (function_exists ($func)) { + $modifers[$pmodifier] = (call_user_func($func, $pvalue)); + } + else { + $modifers[$pmodifier] = $pvalue; + } + } + return ($modifers); + + } +} + +if (!function_exists('amr_format_repeatable_property')) { +function amr_format_repeatable_property ($content, $k, $event, $before='', $after='') { +// for properties that can have multiple values and for which we have received an array of those values, we need to do the format routine for each value + + $c = ''; + foreach ($content as $i => $v) { + if (!(empty($v))) { + $c .= amr_format_value ($v, $k, $event, $before,$after) .' '; + } + } + return ($c); +} +} + +if (!function_exists('amr_format_value')) { + function amr_format_value ($content, $k, $event, $before='', $after='') { /* include the event so we can check for things like all day */ + /* Format each Ical value for our presentation purposes + Note: Google does toss away the html when editing the text, but it is there if you add but don't edit. + what about all day? + */ + global $amr_formats; /* amr check that this get set to the chosen list type */ + global $amr_options; + global $amr_listtype; + global $eventtaxonomies; + + //echo '
                      '.$k; + if (empty($content)) return(''); + + if ($k == 'ORGANIZER') { // it is an array but a parsed one, not repeatable + $htmlcontent = amr_format_organiser ($content); + } + elseif ($k == 'ATTENDEE') { // it is an array but a parsed one, not repeatable + $htmlcontent = amr_format_attendees ($content); + } + elseif ($k == 'Attendee-counts') { // it is an array but we format the whole thing once + $htmlcontent = amr_format_attendee_counts ($content); + } + else if (is_object($content)) { + switch ($k){ + case 'EventDate': { + $htmlcontent = ('' + .amr_format_date ('c', $content).'">' //must be ISO 8601 date for microformats to work + .amr_format_date ($amr_formats['Day'], $content) + .'' + ); + break; + } + case 'EndDate': { + $days = amr_event_is_multiday($event); + if ( $days > 1) + $htmlcontent = ('' //must be ISO 8601 date + .amr_format_date ($amr_formats['Day'], $content) + .'' + ); + else $htmlcontent = ''; + break; + } + case 'EndTime': + case 'StartTime':{ + if (isset($event['allday']) and ($event['allday'] === 'allday')) + $htmlcontent = ''; + else + $htmlcontent = amr_format_time ($amr_formats['Time'], $content); + break; + } + case 'DTSTART': + case 'DTEND': + case 'UNTIL': { + $htmlcontent = amr_format_date ($amr_formats['Day'], $content); + if (empty($event['allday']) or !($event['allday'] == 'allday')) + $htmlcontent .= ' '.amr_format_time ($amr_formats['Time'], $content); + break; + } + case 'X-WR-TIMEZONE': { /* amr need to add code to reformat the timezone as per admin entry. Also only show if timezone different ? */ + $htmlcontent = amr_format_tz(timezone_name_get($content)); + break; + } + case 'TZID': { /* amr need to add code to reformat the timezone as per admin entry. Also only show if timezone different ? */ + $htmlcontent = amr_format_tz (timezone_name_get($content)); + break; + } + case 'timezone': { /* amr need to add code to reformat the timezone as per admin entry. Also only show if timezone different ? */ + $htmlcontent = amr_format_timezone ($content); + break; + } + default: /* should not be any */ + $htmlcontent = amr_format_date ($amr_formats['DateTime'], $content); + } + } + elseif (is_array($content)) { + + if ($k === 'DURATION') { + $htmlcontent = amr_format_duration ($content); + } + elseif (($k === 'RRULE') or ($k === 'EXRULE')) { + $htmlcontent = amr_format_rrule($content); + } + elseif (($k === 'RDATE') or ($k === 'EXDATE')) { + $htmlcontent = amr_prettyprint_r_ex_date ($content); + } + elseif ($k=== 'CATEGORIES') { // umm - what if ics category + $htmlcontent = amr_format_taxonomies ('category', $content); + + } + elseif ($k=== 'post_tag' ) { + $htmlcontent = amr_format_taxonomies ('post_tag', $content); + + } + elseif ($k == 'ATTACH') { + if (isset($content[0]['type'] )) { + // then we are at the top level of the array, so can ask to handled repetaed values + return ( amr_format_repeatable_property ($content, $k, $event, $before, $after)); + } + else + $htmlcontent = amr_format_attach ($content, $event); + } + else { /* simple array don't think we need to list the items separately eg: multiple comments or descriptions - just line */ + if (!empty( $eventtaxonomies) and in_array( $k, $eventtaxonomies)) { + $htmlcontent = amr_format_taxonomies ($k, $content); + } + else { + return( amr_format_repeatable_property ($content, $k, $event, $before, $after)); + } + } + } + elseif (is_null($content) OR ($content === '')) + $htmlcontent = ''; + else { + if (function_exists ('amr_format_'.$k)) { + $htmlcontent =(call_user_func('amr_format_'.$k, $content)); + } + else + switch ($k){ + case 'COMMENT': + case 'DESCRIPTION': { + + //var_dump($content); + + $htmlcontent = html_entity_decode(amr_click_and_trim(nl2br2(amr_amp($content)))); + break; + } + case 'SUMMARY': + case 'icsurl': + case 'addtogoogle': + case 'addevent': + case 'subscribeevent': + case 'subscribeseries': + case 'map': + case 'refresh': + case 'attending_event': { + $htmlcontent = $content; /* avoid hyperlink as we may have added url already */ + break; + } + case 'URL': /* assume valid URL, should not need to validate here, then format it as such */ + $htmlcontent = amr_format_url($content); + break; + case 'LOCATION': { + $htmlcontent = (amr_click_and_trim(nl2br2(amr_amp($content)))); + break; + } + + case 'X-WR-TIMEZONE':{ /* not parsed as object - since it is cal attribute, not property attribue */ + $htmlcontent = (amr_format_tz ($content)); + break; + } + case 'allday': { + $htmlcontent =(amr_format_allday($content)); + break; + } + + + default: /* Convert any newlines to html breaks */ + + if (!empty( $eventtaxonomies) and in_array( $k, $eventtaxonomies)) { + $htmlcontent = amr_format_taxonomies ($k, $content); + } + else { + $func = 'amr_format_'.str_replace('-','_',$k); + if (function_exists($func)) { + $htmlcontent = call_user_func ($func, $content); + } + else $htmlcontent = $content; + + $htmlcontent = str_replace("\n", "
                      ", $htmlcontent); + } + + } + + } + + if (empty ($htmlcontent) ) + return; + return ($before.$htmlcontent.$after); + + } +} + +if (!function_exists('amr_wp_format_date')) { +function amr_wp_format_date( $format, $datestamp, $gmttf) { /* want a integer timestamp or a date object */ + +/* Need to get rid the unnecessary date logic - should only be using date objects for now */ + + if (is_object($datestamp)) { + $offset = $datestamp->getOffset(); + If (isset ($_REQUEST['tzdebug'])) { + echo '
                      Want to format '.$datestamp->format('Ymd His').' in '.$format.' like this '.$datestamp->format($format).' but localised'; +// echo '
                      Add offset '.$offset/(60*60).' back to Unix timestamp to force correct localised date '; + } + $dateInt = $datestamp->format('U') + $offset; //to get the time in right timezone + } + else if (is_integer ($datestamp)) + $dateInt = $datestamp; + else return(false); + + if (stristr($format, '%') ) + return (strftime( $format, $dateInt )); /* keep this for compatibility! will not localise though */ + else { + //var_dump($dateInt); + $text = date_i18n($format, $dateInt, $gmttf); /* should be false, otherwise we get the utc/gmt time. */ + If (false and isset ($_REQUEST['tzdebug'])) + { + echo '
                      Localised with gmt=false: '.$text.'
                      '; + $text2 = date_i18n($format, $dateInt, false); + echo 'Localised with gmt=true: '.$text2.'
                      '; + $text3 = amr_date_i18n ('D, F j, Y g:i a', $datestamp); + echo 'Localised with amr date obj fn: '.$text3.'
                      '; + } + return ($text); // + } +} +} + +if (!function_exists('amr_show_in_events_timezone')) { + function amr_show_in_events_timezone( $amr_globaltz, $e) { + // if we are here, then we want to change global tz to this events tz, change for each event if the event has a tz + global $ical_timezone; + + if (isset($_REQUEST['debugtz'])) { + echo '
                      applying tz filter'; + var_dump($e); + } + if (!empty($e['timezone']) and is_object($e['timezone'])) + $amr_globaltz = $e['timezone']; + else + $amr_globaltz = $ical_timezone; // must reset it else will just use last events timezone - bad for local floating events + + return ($amr_globaltz); + } +} + +if (!function_exists('amr_decide_display_timezone')) { + function amr_decide_display_timezone($e) { // if we want to display event timezones only, then set the global tz here for each event + global $amr_globaltz; + // timezone will only be altered if filter has been applied + $amr_globaltz = apply_filters('amr_show_in_events_timezone', $amr_globaltz, $e, 2); + } +} + +if (!function_exists('amr_format_time')) { +function amr_format_time( $format, $datestamp) { /* want a integer timestamp or a date object */ +global $amr_globaltz; + + date_timezone_set ($datestamp, $amr_globaltz); /* Converting here, but then some derivations wrong eg: unsetting of end date */ + // check for midnight, midday, noon etc + $time = $datestamp->format('His'); + if (isset($_GET['tzdebug'])) echo '
                      Time='.$time; + + $humanspeak = apply_filters('amr_human_time',$time); + if (!($time === $humanspeak )) return($humanspeak); + else + return (amr_format_date( $format, $datestamp)) ; +} +} + +if (!function_exists('amr_format_date')) { +function amr_format_date( $format, $datestamp) { /* want a integer timestamp or a date object */ +global $amr_options, + $amr_globaltz; + + //if (is_string($datestamp)) $datestamp = date_create($datestamp, $amr_globaltz); + + if (isset ($amr_options ['date_localise'])) + $method = $amr_options ['date_localise']; + else + $method = 'wp'; // v4.0.9 was none + + date_timezone_set ($datestamp, $amr_globaltz); /* Converting here, but then some derivations wrong eg: unsetting of end date */ + + if (isset($_GET['tzdebug'])) echo '
                      '.$datestamp->format('c'); + + if ($method === 'wp') + return amr_wp_format_date ( $format, $datestamp, false); + else if ($method === 'wpgmt') + return amr_wp_format_date ( $format, $datestamp, true); + else if ($method === 'amr') + return amr_date_i18n ( $format, $datestamp); + else { + if (stristr($format, '%') ) + return (strftime( $format, $datestamp->format('U') )); /* keep this for compatibility! will not localise though */ + else + return ($datestamp->format($format)); + } +} +} + +if (!function_exists('amr_format_duration')) { +function amr_format_duration ($arr) { + /* receive an array of hours, min, sec */ + + foreach ($arr as $i => $d) if ($d === 0) unset ($arr[$i]); + $i = count($arr); + + if ($i > 1) $sep = ', '; + else $sep = ''; + + $d = ''; + if (isset ($arr['years'] )) { + $d .= sprintf (_n ("%u year", "%u years", $arr['years'], 'amr-ical-events-list'), $arr['years']); + $d .= $sep; + $i = $i-1; + } + if (isset ($arr['months'] )) { + $d .= sprintf (_n ("%u month ", "%u months ", $arr['months'], 'amr-ical-events-list'), $arr['months']); + if ($i> 1) {$d .= $sep;} + $i = $i-1; + } + if (isset ($arr['weeks'] )) { + $d .= sprintf (_n ("%u week ", "%u weeks", $arr['weeks'], 'amr-ical-events-list'), $arr['weeks']); + if ($i> 1) {$d .= $sep;} + $i = $i-1; + } + if ((isset ($arr['days'] )) ) { + $d .= sprintf (_n ("%u day", "%u days", $arr['days'], 'amr-ical-events-list'), $arr['days']); +// If (ICAL_EVENTS_DEBUG) {echo ' and d = '.$d;} + if ($i> 1) {$d .= $sep;} + $i = $i-1; + } + if (isset ($arr['hours'] )) { + $d .= sprintf (_n ("%u hour", "%u hours", $arr['hours'], 'amr-ical-events-list'), $arr['hours']); + if ($i> 1) {$d .= $sep;} + $i = $i-1; + } + if (isset ($arr['minutes'] )) { + $d .= sprintf (_n ("%u minute", "%u minutes", $arr['minutes'], 'amr-ical-events-list'), $arr['minutes']); + if ($i> 1) {$d .= $sep;} + $i = $i-1; + } + if (isset ($arr['seconds'] )) { + $d .= sprintf (_n ("%u second", "%u seconds", $arr['seconds'], 'amr-ical-events-list'), $arr['seconds']); + + } + return($d); + } +} + +if (!function_exists('amr_format_tz')) { // this is the change timezone icon in the header +function amr_format_tz ($tzstring) { +global $amr_globaltz, $amr_options; + + $url = esc_url_raw($_SERVER['REQUEST_URI']); + $tz = timezone_name_get($amr_globaltz); + if ($tz === $tzstring) + $tz2 = date_default_timezone_get(); + else + $tz2 = $tzstring; + if ($tz2===$tz) + $tz2 = 'UTC'; + $text1 = __('Change Timezone','amr-ical-events-list'); + $text2 = sprintf( __('Timezone: %s, Click for %s','amr-ical-events-list'),$tz, $tz2); + if (isset ($amr_options['no_images']) and $amr_options['no_images']) + $t3 = $text1; + else + $t3 = ''.$text1.''; + + return (''.$t3.' '); +} +} + +if (!function_exists('amr_format_timezone')) { // this is the change timezone icon in the header +function amr_format_timezone ($tzobj) { +global $amr_options; + + if (is_object($tzobj)) + $tzstring = timezone_name_get($tzobj); + else + $tzstring = $tzobj; + return ($tzstring); +} +} + +if (!function_exists('adebug')) { // we are loading late, so hope fully this should be fine - don't want top long a name + function adebug( $text, $whattodebug=true) { + if ((isset ($_REQUEST['debug']) ) and ($_REQUEST['debug'] == $whattodebug)) + echo $text; + } +} + +if (!function_exists('amr_format_binary')) { // amr maybe move to plus ? + function amr_format_binary ($name,$binary) { +// getting error - data not in recognised format in the binary, so skip for now till someone wants it + return null; + $im = imagecreatefromstring($binary); + $filename = ICAL_EVENTS_CACHE_LOCATION.'/ical-events-cache/'.$name.'.jpg'; + // Save the image as 'simpletext.jpg' + imagejpeg($im, $filename); + $uploads = wp_upload_dir(); + $url = $uploads[base_url].'/ical-events-cache/'.$name; + return($url); + } +} + +if (!function_exists('amr_format_mailto')) { //201710 + function amr_format_mailto ($mailto, $text='email', $title='email') { + return (''); + } +} + +if (!function_exists('amr_format_organiser')) { + function amr_format_organiser ($org) {/* receive array of hopefully CN and MAILTO, and possibly SENTBY */ + + If (ICAL_EVENTS_DEBUG) {echo '
                      Organiser array: '; var_dump($org);} + + $text = ''; + if (!(is_array($org))) { + $org = amr_parseOrganiser('ORGANIZER;'.$org); // may not have been parsed yet (eg in wp events) + //$org = amr_parse_property ('ORGANIZER;'.$org); + If (ICAL_EVENTS_DEBUG) var_dump($org); + } + + if (!empty ($org['CN'])) { + if (!empty ($org['MAILTO'])) + $text = amr_format_mailto ($org['MAILTO'], $org['CN'], + $title=__('Organiser', 'amr-ical-events-list')); + + //''.$org['CN'].''; + else + $text = $org['CN']; + } + else { + if (!empty ($org['MAILTO'])) + $text = amr_format_mailto ($org['MAILTO'], $org['MAILTO'], + $title=__('Organiser', 'amr-ical-events-list')); + //''.$org['MAILTO'].''; + } + if (!empty ($text)) $text .= ' '; + if (!empty ($org['SENT-BY'])) { + $text .= __('Sent by ','amr-ical-events-list').''.$org['SENT-BY'].''; + } + return($text); + } +} +/* += "ROLE" "=" + ("CHAIR" ; Indicates chair of the + ; calendar entity + / "REQ-PARTICIPANT" ; Indicates a participant whose + ; participation is required + / "OPT-PARTICIPANT" ; Indicates a participant whose + ; participation is optional + / "NON-PARTICIPANT" ; Indicates a participant who + ; is copied for information + ; purposes only + / x-name ; Experimental role + / iana-token) ; Other IANA role + ; Default is REQ-PARTICIPANT + +"PARTSTAT" = ("NEEDS-ACTION" ; Event needs action + / "ACCEPTED" ; Event accepted + / "DECLINED" ; Event declined + / "TENTATIVE" ; Event tentatively + ; accepted + / "DELEGATED" ; Event delegated + / x-name ; Experimental status + / iana-token) ; Other IANA-registered + ; status + ; These are the participation statuses for a "VEVENT". + ; Default is NEEDS-ACTION. +RSVPPurpose: To specify whether there is an expectation of a favor of a + reply from the calendar user specified by the property value. + rsvpparam = "RSVP" "=" ("TRUE" / "FALSE") + ; Default is FALSE + + "CUTYPE" "=" + ("INDIVIDUAL" ; An individual + / "GROUP" ; A group of individuals + / "RESOURCE" ; A physical resource + / "ROOM" ; A room resource + / "UNKNOWN" ; Otherwise not known + / x-name ; Experimental type + / iana-token) ; Other IANA-registered + ; type + ; Default is INDIVIDUAL + + + + SENT-BY + DELEGATED-FROM + DELEGATED-TO + MEMBER + DIR + ORGANIZER;DIR="ldap://example.com:6666/o=ABC%20Industries, + c=US???(cn=Jim%20Dolittle)":mailto:jimdo@example.com + +*/ + +if (!function_exists('amr_format_attendee_counts ')) { + function amr_format_attendee_counts ($status) { + $text = array(); + foreach ($status as $s => $n) { + if (!empty($n)) { + $text[] = amr_format_PARTSTAT ($s) + .' ('.$n.')'; + } + } + return implode('   ',$text); + } +} + +if (!function_exists('amr_derive_attendee_counts')) { // given array of attendees + function amr_derive_attendee_counts($attendees) { + $text = ''; + + $status = array(); //'ACCEPTED','TENTATIVE','DELEGATED','NEEDS-ACTION','DECLINED','COMPLETED','IN-PROCESS' + if (is_array($attendees)) { + // How should they be sorted ? + // CN alpha? or email alpha or by part stat? or role ? + //amr_sort_by_two_cols ('ROLE', 'CN', $attendees); // sort by participaton status, may include all + + foreach ($attendees as $i => $attendee) { + if (empty($attendee['PARTSTAT'])) { + if (empty($status['NEEDS-ACTION'])) // the default + $status['NEEDS-ACTION'] = 1; + else + $status['NEEDS-ACTION']++; // RFC 5545 default + } + else { + // add count + if (empty($status[$attendee['PARTSTAT']])) + $status[$attendee['PARTSTAT']] = 1; + else + $status[$attendee['PARTSTAT']]++; + } + } + } + return $status; + } +} + +if (!function_exists('amr_format_attendees') ) { // overwritten by addon + function amr_format_attendees ($attendees) {/* receive array of hopefully attendess[] CN and MAILTO, and possibly other */ + // in plain ics only individuals and accepted attendees listed and by plain name only + // maybe show some stats ? + $text = ''; + + $status = array(); //'ACCEPTED','TENTATIVE','DELEGATED','NEEDS-ACTION','DECLINED','COMPLETED','IN-PROCESS' + if (is_array($attendees)) { + // How should they be sorted ? + // CN alpha? or email alpha or by part stat? or role ? + amr_sort_by_two_cols ('ROLE', 'CN', $attendees); // sort by role then name + + foreach ($attendees as $i => $attendee) { // only shows accepted attendance + if ($attendee['PARTSTAT'] == 'ACCEPTED') { + $list[] = amr_format_attendee ($attendee); + } + } + + if (!empty($list)) { + //$text .= '
                      • '.implode ('
                      • ',$list).'
                      '; + $text = implode (PHP_EOL.'
                      ',$list); + } + + } + + return($text); + } +} + +if (!function_exists('amr_format_PARTSTAT') ) { // called from format attendee + function amr_format_PARTSTAT ($participation_status) { + $text = ''; + switch ($participation_status) { + case 'ACCEPTED': $text = ' √ '.$text ; break; + case 'DECLINED': $text = ' ✘ '. $text; break; + case 'TENTATIVE': $text = ' ? '. $text; break; + case 'DELEGATED': $text = ' → '. $text ; break; + case 'NEEDS-ACTION': $text = ' ! '. $text ; break; + } + return (''.$text.''); + } +} + +if (!function_exists('amr_format_attendee') ) { // format a single attendee - maybe show role, status etc - overwritten by addon + function amr_format_attendee ($attendee) { // do not show emails for privacy reasons +// array could have +//CUTYPE=INDIVIDUAL +//ROLE=REQ-PARTICIPANT +//PARTSTAT=ACCEPTED or PARTSTAT=NEEDS-ACTION Participation status +// "ACCEPTED" ,"DECLINED","TENTATIVE", "DELEGATED +//X-NUM-GUESTS=0 +//CN=Common name +//DELEGATED-FROM="mailto:bob@example.com +//SENT-BY=mailto:jan_doe@example.com + + $text = ''; + if (!empty ($attendee['CN'])) { + if (!empty ($attendee['LINK'])) // internal amr-events representation , not RFC5545 spec + $text = ''.$attendee['CN'].''; + else + $text = $attendee['CN']; + } + else { // we have no name, maybe just use the bit before the '@' + if (isset($attendee['text'])) { // maybe use this text + $text = $attendee['text']; + } + elseif (isset($attendee['MAILTO'])) { // maybe use this text + //$text = $attendee['MAILTO']; + $text = stristr($attendee['MAILTO'],'@', true); + } + else { + if (is_array($attendee)) {// now we desparate, dump the lot just in case but indicate we not happy + $text= '?? '.implode(', ', $attendee); + } + else + $text = '?? '.$attendee; + } + } + if (!empty($attendee['PARTSTAT'])) { + $text = amr_format_PARTSTAT ($attendee['PARTSTAT'], $attendee).' '.$text; + } + + return ($text); + } +} \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-rrule.php b/wp-content/plugins/amr-ical-events-list/includes/amr-rrule.php new file mode 100644 index 0000000..fd7fbed --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-rrule.php @@ -0,0 +1,1168 @@ + 'day', + 'MONTHLY' => 'month', + 'YEARLY' => 'year', + 'WEEKLY' => 'week', + 'HOURLY' => 'hour', + 'MINUTELY' => 'minute', + 'SECONDLY' => 'second' + ); +$amr_day_of_week = array ( + 'MO' => 'Monday', + 'TU' => 'Tuesday', + 'WE' => 'Wednesday', + 'TH' => 'Thursday', + 'FR' => 'Friday', + 'SA' => 'Saturday', + 'SU' => 'Sunday' + ); +$amr_day_of_week_no = array ( + 'MO' => 1, + 'TU' => 2, + 'WE' => 3, + 'TH' => 4, + 'FR' => 5, + 'SA' => 6, + 'SU' => 7 + ); +$amr_day_of_week_from_no = array ( /* convert php day of week number (0 (sunday) to 6 (saturday)) to ical format */ + 0 => 'SU', + 1 => 'MO', + 2 => 'TU', + 3 => 'WE', + 4 => 'TH', + 5 => 'FR', + 6 => 'SA' + ); +/* --------------------------------------------------------------------------------------------------- */ +function amr_get_date_parts ($dateobj) { /* breaks date into the parts */ + if (!is_object($dateobj)) return (false); + $parts['year'] = $dateobj->format('Y'); + $parts['month'] = $dateobj->format('n'); + $parts['day'] = $dateobj->format('j'); + $parts['hour'] = $dateobj->format('G'); + $parts['minute'] = $dateobj->format('i'); + $parts['second'] = $dateobj->format('s'); + $parts['date'] = new Datetime(); //if cloning dont need tz + $parts['date'] = clone $dateobj; /* save a cope so we don't have to recreate */ + return ($parts); +} +/* --------------------------------------------------------------------------------------------------- */ +function print_date_array($datearray) { + if (isset ($_GET['rdebug'])) { + foreach ($datearray as $j=> $datea) { + echo '
                      '.$j. ' '; + print_date_array1($datea); +// if (!is_object($parts)) echo ' '.str_pad($parts,2,'_',STR_PAD_LEFT); + } + echo '
                      '; + } +} +/* --------------------------------------------------------------------------------------------------- */ +function print_date_array1($datea) { // note the undderscores are just to pad out so dates appear under each other +global $ical_timezone; + if (isset ($_GET['rdebug'])) { + foreach ($datea as $i => $parts) if (!is_object($parts)) { + echo ' '.str_pad($parts,2,'_',STR_PAD_LEFT); + } + $dateobj = amr_create_date_from_parts ($datea, $ical_timezone); + if (is_object($dateobj)) echo ' '.$dateobj->format('l'); + else var_dump($dateobj); + } +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_sort_date_array(&$datearray) { + // Obtain a list of columns + if (empty ($datearray)) return (null); + foreach ($datearray as $key => $row) { + $year[$key] = $row['year']; + $month[$key] = $row['month']; + $day[$key] = $row['day']; + $hour[$key] = $row['hour']; + $minute[$key] = $row['minute']; + $second[$key] = $row['second']; + } + // Sort the data + // Add $data as the last parameter, to sort by the common key + array_multisort($year, SORT_ASC, $month, SORT_ASC, $day, SORT_ASC, $minute, SORT_ASC, $second, SORT_ASC, $datearray); + if (isset ($_GET['rdebug'])) print_date_array($datearray); + return ($datearray); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_limit_by_setpos(&$datearray, $by) { + if (empty($datearray)) return; + $total = count($datearray); + foreach ($by as $i => $pos) { + if (!empty($pos)) $pos = (int) $pos; + else break; + if ($pos < 0) { + if ( (-$pos) > $total) break; + else if (isset($datearray[$total+$pos])) + $limitedarray[$total+$pos] = $datearray[$total+$pos]; + } + else { + if ($pos > $total) break; + else if (isset($datearray[$pos-1])) + $limitedarray[$pos-1] = $datearray[$pos-1]; + } + } + if (!empty($limitedarray) ) return($limitedarray); + else return(null); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_expand_by_weekno (&$datearray, $pby /* the array of week nos */, $tz) { /* Only ever done YEARLY ***** what if negative */ + global $amr_wkst; + + $newdatearray = array(); + foreach ($datearray as $i => $d) { + $w1d1 = amr_create_date_from_parts ( array ( + 'year' => $d['year'], + 'month' => '01', + 'day' => '04', /* jan 4 is always in week 1 */ + 'hour' => $d['hour'], + 'minute' => $d['minute'], + 'second' => $d['second'] + ), $tz); +// http://en.wikipedia.org/wiki/ISO_week_date#Last_week - says the the ISO 8601 spec defines the last week as the week with December 28 in it + $lastweekd1 = amr_create_date_from_parts ( array ( + 'year' => $d['year'], + 'month' => '12', + 'day' => '31', /* last week always includes the last day even if it is also in next years week 1 (ie: 53=1)*/ + 'hour' => $d['hour'], + 'minute' => $d['minute'], + 'second' => $d['second'] + ), $tz); + $w1d1 = amr_get_start_of_week ($w1d1, $amr_wkst); /* this is now the start of week 1 */ + $lastweekd1 = amr_get_start_of_week ($lastweekd1, $amr_wkst); /* this is now the start of the last week */ + if (isset($_GET['rdebug'])) { echo '
                      Start of week1 :'.$w1d1->format('Ymd l'); + echo '
                      Start of last week :'.$lastweekd1->format('Ymd l');} + $dateobj = new DateTime; + foreach ($pby as $weekno) { + + if ($weekno < 0) { + $dateobj = clone $lastweekd1; + if ($weekno < -1) date_modify ($dateobj,(($weekno+1)*7).' days'); /* $weekno is negative - now we have the start of the week we want */ + } + else if ($weekno > 0){ + $dateobj = clone $w1d1; + if ($weekno > 1) date_modify ($dateobj,'+'.(($weekno-1)*7).' days'); /* now we have the start of the week we want */ + } + /* else just ignore a zero, as it should not exist */ + + $new[0] = amr_get_date_parts($dateobj); + for ($i = 1; $i <= 6; $i++) { + date_modify ($dateobj,'+1 days'); /* need to do it with a date modify so that we don't have to worry about going over a month end */ + $new[$i] = amr_get_date_parts($dateobj); + } + if (isset($_GET['rdebug'])) { echo '
                      expanded by week :'.$weekno.' Got '.count($new).'
                      ';} + $newdatearray = array_merge ($newdatearray, $new); + } + } + return ($newdatearray); +} + +/* --------------------------------------------------------------------------------------------------- */ +function amr_expand_by_yearday (&$datearray, $pbyrdy, $tz) { /* array of y,m,d,h,m,s, and array of by 'x'*/ + /* set the first one and then copy and set the rest */ + if (empty($datearray)) return(false); + $first = true; + $sofar = count($datearray); + if (isset($_GET['rdebug'])) { echo '
                      Expanding byyearday ....So far have '.$sofar.' dates to apply bys = '; print_r ($pbyrdy); } + + $newdatearray = array(); + foreach ($pbyrdy as $j => $yd) { /* eg 8,200,360 */ + if (false and $first) { + foreach ($datearray as $i => $d) { /* get the date object again , adjust the month and day */ + $dateobj = amr_create_date_from_parts ( array ( + 'year' => $d['year'], + 'month' => '01', + 'day' => '01', + 'hour' => $d['hour'], + 'minute' => $d['minute'], + 'second' => $d['second'] + ), $tz); + date_modify ($dateobj, '+'.($yd-1).' days'); + $datearray[$i] = amr_get_date_parts($dateobj); + } + $first= false; + $newdatearray = $datearray; + } + else { + $new = $datearray; + foreach ($new as $i => $d) { /* get the date object again , adjust the month and day */ + if ($yd > 0) { + $d['month'] = '01'; + $d['day'] = '01'; + $adjustment = ($yd-1); + } + else if ($yd < 0) { + $d['month'] = '12'; + $d['day'] = '31'; + $adjustment = ($yd+1); + } + else break; + $dateobj = amr_create_date_from_parts ( $d, $tz); + if (!is_object($dateobj)) break; + if (isset($_GET['rdebug'])) { echo '
                      Start with '.$dateobj->format('YMD l').' adjust by '.$adjustment;} + if (!($adjustment == 0)) date_modify ($dateobj, $adjustment.' days'); + $new[$i] = amr_get_date_parts($dateobj); + + } + } + if (!empty ($new)) $newdatearray = array_merge ($newdatearray, $new); + } +// if (isset($_GET['rdebug'])) {echo '
                      New date array: '.count($newdatearray); print_date_array($newdatearray);} + return($newdatearray); +} + +/* --------------------------------------------------------------------------------------------------- */ +function amr_expand (&$datearray, $pby, $type,$tz) { /* array of y,m,d,h,m,s, and array of by 'x'. Note could be negative !! */ + /* set the first one and then copy and set the rest */ + if (empty($datearray)) return(false); + $first = true; + $sofar = count($datearray); + if (isset($_GET['rdebug'])) { echo '
                      Expanding with ' .$type. ' ....So far have '.$sofar.' dates to apply bys = '; print_r ($pby); } + $newdatearray = array(); +// $new = $datearray; + foreach ($datearray as $i => $datea) { + foreach ($pby as $j => $m) { /* eg j = bymonth, and $m = 8,9,10,11,12 , or neg */ + $new = $datea; + if ($m < 1) { + $day = amr_create_date_from_parts ($datea, $tz); + if (is_object($day)) { + $daysinmonth = $day->format('t'); + $lastxdayofmonth = ($daysinmonth+1)+$m; + $new[$type] = $lastxdayofmonth; + } + } + else { + $new[$type] = $m; + } + if (!empty ($new)) $newdatearray[] = $new; + } + } + return($newdatearray); +} +/* --------------------------------------------------------------------------------------------------- */ + +function amr_limit (&$datearray, $pby, $type) { /* array of y,m,d,h,m,s, and array of by 'x'*/ + /* set the first one and then copy and set the rest */ + if (empty($datearray)) return(false); + if (isset($_GET['rdebug'])) { echo '
                      Limiting ' .$type. ' ....So far have '.count($datearray).' dates to apply bys = '; print_r ($pby); } + foreach ($datearray as $i => $datea) { + if (!(in_array($datea[$type], $pby))) unset ($datearray[$i]); + } + if (isset($_GET['rdebug'])) {echo '
                      After limiting: '.count($datearray).'
                      ';print_date_array($datearray);} + return($datearray); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_special_expand_by_day_of_week_and_yearly (&$datearray, $pbys, $tz) { /* note 2 */ +global $amr_globatz; + + if (isset($_GET['rdebug'])) { echo '
                      '.'starting special expand by day of week and yearly '; print_r($pbys); print_date_array($datearray);} + /* For each date array - take the year and the month - get the first of the month, then the get the first day with that day of week, then get them all or the nbyday */ + if (isset($pbys['BYDAY'])) $pbyday = $pbys['BYDAY']; + else if (isset($pbys['NBYDAY'])) $pbyday = $pbys['NBYDAY']; + else return ($datearray); + foreach ($datearray as $i=> $datea) { + $d = $datea; + $d['day'] = 1; + $d['month'] = 1; + $first = amr_create_date_from_parts ($d, $tz); + $d['day'] = 31; + $d['month'] = 12; + $last = amr_create_date_from_parts ($d, $tz); + $dateobj = new DateTime('',$amr_globaltz); + if (isset($_GET['rdebug'])) echo '
                      Starting from '.$first->format('Ymd l').' till '.$last->format('Ymd l'); + foreach ($pbyday as $byday => $bool ) { /* get the first day that is that day of week */ + $firstbyday = amr_goto_byday ($first, $byday, '+'); /* so we should have the first 'byday' of the year */ + $lastbyday = amr_goto_byday ($last, $byday, '-'); + if (isset($_GET['rdebug'])) echo '
                      Doing '.$byday. ' with 1st '.$firstbyday ->format('Ymd l').' or last '.$lastbyday->format('Ymd l'); + if (is_array($bool)) {/* then have numeric - possibly many */ + foreach ($bool as $num) { + if ($num < 0) { /* should never actually be 0 */ /* *** go to end and work back */ + $num=$num+1; + $dateobj = clone $lastbyday; + if (!($num == 0)) date_modify($dateobj,(($num)*7).' days'); + if (($dateobj->format('Y') == $datea['year'])) {/* If still in the same year */ + $newdatearray[] = amr_get_date_parts ($dateobj); + //if (isset($_GET['rdebug'])) echo '
                      Saved '.$dateobj->format('Ymd l'); + } + } + else if ($num > 0) { + $num=$num-1; + $dateobj = clone $firstbyday; + if (!($num == 0)) date_modify($dateobj,'+'.(($num)*7).' days'); + if (($dateobj->format('Y') == $datea['year'])) { /* If still in the same year */ + $newdatearray[] = amr_get_date_parts ($dateobj); + //if (isset($_GET['rdebug'])) echo '
                      Saved '.$dateobj->format('Ymd l'); + } + } + + } + } + else { + $dateobj = clone $firstbyday; + while ($dateobj <= $lastbyday) { + $newdatearray[] = amr_get_date_parts ($dateobj); + //if (isset($_GET['rdebug'])) echo '
                      saved '.$dateobj->format('Ymd l'); + date_modify($dateobj,'+7 days'); + } + } + } + } + if (isset($_GET['rdebug'])) {print_date_array($newdatearray); echo '
                      ';} + return ($newdatearray); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_expand_by_day_of_week_for_weekly (&$datearray, $pbys, $tz, $wkst) { /* Note 1 in monthly frequency only */ +global $amr_globaltz; + if (isset($_GET['rdebug'])) { echo '
                      starting special expand by day of week in weekly with wkst:'.$wkst.' '; + var_dump($pbys); + print_date_array($datearray); + } + if (isset($pbys['BYDAY'])) + $pbyday = $pbys['BYDAY']; + else if (isset($pbys['NBYDAY'])) + $pbyday = $pbys['NBYDAY']; + else return ($datearray); + /* For each date array - get the first day with that day of week, then get the next byday */ + $dateobj = new DateTime('now',$amr_globaltz); + foreach ($datearray as $i=> $datea) { + $day = amr_create_date_from_parts ($datea, $tz); + if (is_object($day)) { + $day1 = amr_get_start_of_week($day, $wkst); // in ics terms not human + if (isset($_GET['rdebug'])) echo '
                      Got start of week'.$day1->format('Ymd l'); + foreach ($pbyday as $byday => $bool ) { + if (isset($_GET['rdebug'])) echo '
                      BYDAY='.$byday.' '; + if (!(is_array($bool))) {/* else have numeric - possibly many - skip for weekly is meaningless */ + $dateobj = amr_goto_byday ($day1, $byday, '+');/* get the first day that is that day of week */ + $newdatearray[] = amr_get_date_parts ($dateobj); + } + } + } + } + if (isset($_GET['rdebug'])) echo '
                      '; + if (!empty($newdatearray)) return ($newdatearray); + else return (null); +} +/* -------------------------------------------------------------------------------------------------------------- */ +function amr_special_expand_by_day_of_week_and_month_note2 (&$datearray, $pbys, $tz) { + +/* Note 2 First and Last are relative to the year and the month is a check */ + if (isset($_GET['rdebug'])) { echo '
                      starting special expand by day of week and month in year freq '; print_date_array($datearray);} + if (isset($pbys['BYDAY'])) $pbyday = $pbys['BYDAY']; + else if (isset($pbys['NBYDAY'])) $pbyday = $pbys['NBYDAY']; + else return ($datearray); + /* For each date array - take the year - get the first day, then the get the first day with that day of week, then get them all or the nbyday */ + foreach ($datearray as $i=> $datea) { + $d = $datea; + $d['day'] = 1; + $d['month'] = 1; + $firstdayofyear = amr_create_date_from_parts ($d, $tz); + $d['day'] = 31; + $d['month'] = 12; + $lastdayofyear = amr_create_date_from_parts ($d, $tz); + $dateobj = amr_newDateTime(); + foreach ($pbyday as $byday => $bool ) { + if (isset($_GET['rdebug'])) echo '
                      '.$byday.' '; + if (is_array($bool)) {/* then have numeric - possibly many */ + foreach ($bool as $num) { + if (($num < 0) and ($num >= -53)) { /* *** go to end and work back */ + $dateobj = clone $lastdayofyear; + if (isset($_GET['rdebug'])) { echo '
                      got end of year '.$dateobj->format('Ymd l');} + $dateobj = amr_goto_byday ($dateobj, $byday, '-');/* get the last day that is that day of week */ + if (isset($_GET['rdebug'])) { echo ' get day '.$dateobj->format('Ymd l');} + $num = ($num+1)*7; /* num is negative */ + if (!($num == 0)) date_modify($dateobj,$num.' days'); /* date modify deos not like zero in some phps */ + if (isset($_GET['rdebug'])) { echo ' and then adjust back '.$num.' '.$dateobj->format('Ymd l');} + if (($datea['month'] == $dateobj->format('m')) and + ($datea['year'] == $dateobj->format('Y') ) ) {/* if still in the same month and same year */ + $newdatearray[] = amr_get_date_parts ($dateobj); + if (isset($_GET['rdebug'])) echo ' -Save'; + } + } + else if ($num <= 53){ + date_modify($dateobj,'+'.($num*7-1).' days'); + $newdatearray[] = amr_get_date_parts ($dateobj); + } + else return($datearray);/* invalid numeric byday */ + } + } + else { + $dateobj = amr_goto_byday ($firstdayofyear, $byday, '+');/* get the first day that is that day of week */ +// $dayofyear = $dateobj->format('z'); /* day of the year */ + while ($dateobj <= $lastdayofyear) { + $d['day'] = $dateobj->format('d'); + $d['month'] = $dateobj->format('m'); + $newdatearray[] = $d; + date_modify($dateobj,'+7 days'); + } + } + } + } + if (isset($_GET['rdebug'])) echo '
                      '; + return ($newdatearray); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_special_expand_by_day_of_week_and_month_note1 (&$datearray, $pbys, $tz) { /* Note 1 in monthly frequency only */ +global $amr_globaltz; + if (isset($_GET['rdebug'])) { + echo '
                      starting special expand by day of week in monthly '; + print_date_array($datearray); + } + + if (isset($pbys['BYDAY'])) + $pbyday = $pbys['BYDAY']; + elseif (isset($pbys['NBYDAY'])) + $pbyday = $pbys['NBYDAY']; + else + return ($datearray); + /* For each date array - take the year and the month - get the first of the month, then the get the first day with that day of week, then get them all or the nbyday */ + $dateobj = amr_newDateTime(); + foreach ($datearray as $i=> $datea) { + $d = $datea; //echo '
                      parts day: ';var_dump($d); + $d['day'] = '1'; //20180818 changed from integer 1 to string 1 in case that was causing the unrecreateable problem + $day1 = amr_create_date_from_parts ($d, $tz); + if (is_object ($day1) ) { // 20180818 changed logic to avoid boolean returned. + + $daysinmonth = $day1->format('t'); + foreach ($pbyday as $byday => $bool ) { + if (isset($_GET['rdebug'])) {echo '
                      BYDAY='.$byday.' dealing with:'; var_dump($bool); } + if (is_array($bool)) {/* then have numeric - possibly many */ + foreach ($bool as $num) { + if (($num < 0) and ($num >= -5)) { /* *** go to end and work back */ + $dateobj = clone $day1; + date_modify($dateobj,'+'.($daysinmonth-1).' days'); + if (isset($_GET['rdebug'])) { echo ' got end of month '.$dateobj->format('Ymd l');} + $dateobj = amr_goto_byday ($dateobj, $byday, '-');/* get the last day that is that day of week */ + if (isset($_GET['rdebug'])) { echo ' get day '.$dateobj->format('Ymd l');} + $num = ($num+1)*7; + //if (!($num == 0)) date_modify($dateobj,'-'.$num.' days'); /* date modify deos not like zero in some phps */ + if (!($num == 0)) date_modify($dateobj,$num.' days'); /* date modify deos not like zero in some phps */ + if (isset($_GET['rdebug'])) { echo ' and then adjust by '.$num.'
                      '.$dateobj->format('Ymd l');} + } + else if ($num <= 5) { + if (isset($_GET['rdebug'])) { echo ' we have positive num:'.$num.' starting from day1:'.$day1->format('Ymd l');} + $dateobj = clone $day1; + $dateobj = amr_goto_byday ($dateobj, $byday, '+');/* get the first day that is that day of week */ + $num = (($num-1)*7); + if (!($num == 0)) + date_modify($dateobj,'+'.$num.' days'); + if (isset($_GET['rdebug'])) { echo ' num = '.$num.' '.$dateobj->format('Ymd l');} + } + /* else invalid numeric byday */ + if ($datea['month'] == $dateobj->format('m')) /* if still in the same month */ + $newdatearray[] = amr_get_date_parts ($dateobj); + } + } + else { + $dateobj = amr_goto_byday ($day1, $byday, '+');/* get the first day that is that day of week */ + $nextday = $dateobj->format('j'); /* */ + if ($nextday < 0) $nextday = get_oldweekdays($dateobj); /* php seems to break around 1760 */ + while ($nextday <= $daysinmonth) { + $d['day'] = $nextday; + $newdatearray[] = $d; + $nextday = $nextday + 7; + } + } + } + } + else { + if (isset($_GET['rdebug'])) echo '
                      Skipping - Non object date generated from '. print_r($d, true); + } + } + if (isset($_GET['rdebug'])) echo '
                      '; + if (!empty($newdatearray)) return ($newdatearray); + else return (null); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_expand_by_day_of_week_for_year (&$datearray, $pbys, $tz) { + /* we know the BYDAY exists, lets also check for others as per Note 2 in the limit/expand table */ + /* set the first one and then copy and set the rest */ + if (empty($datearray)) return(false); + $first = true; + $sofar = count($datearray); + if (isset($_GET['rdebug'])) { echo '
                      Dealing with by_day_of_week_for_year ....So far have '.$sofar.' dates to apply bys = '; print_r ($pbys); } + if (isset($pbys['BYWEEKNO'])) { /* if byweekno was also set - special expand for weekly and day of week . We should already have the week's expanded ? */ + $newdatearray = amr_limit_by_day_of_week ($datearray, $pbys['BYDAY'], $tz ); + } + if (isset($pbys['month'])) { /* if bymonth was also set - special monthly expand by day of week - month expand already done */ + $newdatearray = amr_special_expand_by_day_of_week_and_month_note2 ($datearray, $pbys, $tz); + } + else $newdatearray = amr_special_expand_by_day_of_week_and_yearly ($datearray, $pbys, $tz); + + if (isset($_GET['rdebug'])) {echo '
                      New date array: '.count($newdatearray); print_date_array($datearray);} + return($newdatearray); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_limit_by_yearday (&$datearray, $pbyyearday, $tz) { + if (empty($datearray)) return; + if (isset($_GET['rdebug'])) { echo '
                      Limit by year day';} + foreach ($datearray as $i=> $d) { + $dateobj = amr_create_date_from_parts ($d, $tz); + if (is_object ($dateobj) ) { + $dateyearday = $dateobj->format('z')+1; + if (!in_array($dateyearday,$pbyyearday) ) unset ($datearray[$i]); + } + else unset ($datearray[$i]); + } + return ($datearray); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_limit_by_day_of_week (&$datearray, $pby, $tz) { + global $amr_day_of_week_from_no; /* MO=> 1, 'TU' => 2... 'SU'=> 6 etc */ + if (empty($datearray)) return; + if (isset($_GET['rdebug'])) { echo '
                      Limit by day of week
                      '; print_r($pby); echo '
                      '; var_dump($datearray);} + foreach ($datearray as $i=> $d) { + $dateobj = amr_create_date_from_parts ($d, $tz); + if (is_object ($dateobj) ) { + $w = $dateobj->format('w'); + if ($w == '-1') {$w = get_oldweekdays($dateobj);} /* php seems to break around 1760 and google passed a zero year date in an ics file */ + $w = $amr_day_of_week_from_no[$w]; + if (!isset($pby['BYDAY'][$w]) ) { // 20181002 was not checking BYDAY !! + if (isset($_GET['rdebug'])) { echo '
                      Day of week is '.$w.' reject';} + unset ($datearray[$i]); + } + } + else { + if (isset($_GET['rdebug'])) { echo '
                      Not an object '; var_dump($dateobj);} + unset ($datearray[$i]); + } + } + if (isset($_GET['rdebug'])) { echo '
                      Returning limited '; print_r($datearray);} + return ($datearray); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_create_date_from_parts ($d, $tz) { /* create a date object from the parts array, with the TZ passed */ + // wtf? new DateTime(); + $datestring = $d['year'].'-'.$d['month'].'-'.$d['day'].' '.$d['hour'].':'.$d['minute'].':'.$d['second']; + + $possdate = amr_create_date_time ($datestring, $tz); + + //try { $possdate = new DateTime($datestring, $tz); + // } + //catch (Exception $e) { + // echo ''.__('Unexpected error creating date with string: '.$datestring,'amr-ical-events-list').''; + // echo $e->getMessage(); + // return (false); + // } + // somehow this exception business not helping? + //if (isset($_GET['rdebug'])) { echo '
                      Datestring: '.$datestring.' as date: '.$possdate->format('c');} + // if date does not match date string, then reject + if ($d['day'] > 28) { //then check whther date was created correctly, or whether it should have been rejected. + $newday = $possdate->format('j'); + if (!($newday == $d['day'])) { + if (isset($_GET['rdebug'])) { echo '
                      Rejecting...';} + return (false); + } + } + return ($possdate ); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_get_a_closer_start ($start, // the DTSTART + $astart, // the overall start + $int) { // Note can only do this if no COUNT or BYSETPOS, else we break the rule + + $closerstart = new datetime(); // if cloning ok, dont need tz + $closerstart = clone $start; + $one_interval_before = new datetime(); // if cloning ok, dont need tz + $one_interval_before = clone $start; + if (isset($_GET['rdebug'])) {echo '
                      Start was set at '.$closerstart->format('c');} + if (isset($_GET['rdebug'])) {echo '
                      Overall Start at '.$astart->format('c');} + while ($closerstart < $astart ) { +// if (isset($_GET['rdebug'])) { echo '
                      Main start= '. $astart->format('c'). ' '. $closerstart->format('c');} + $closerstart = amr_increment_datetime ($closerstart, $int) ; + if (!$closerstart) return false; + if ($closerstart < $astart) { + $one_interval_before = $closerstart; // start at least one interval before, so we don't miss any BYDAYS + } + else { + $one_interval_before = $start; + } + } + if (isset($_GET['rdebug'])) { + echo '
                      Better start is '.$one_interval_before->format('c').' after adding iterations
                      '; + } + unset($closerstart); + return ($one_interval_before); + +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_limit_occurences ($repeats, $count) { + /* we should check contraints like count etc here rather */ + + $num_events = count($repeats); + $count = apply_filters('amr_event_repeats',$count); + + if (isset ($_GET['cdebug'])) { + echo '
                      We have '. $num_events.' events. We want max:'.$count; + foreach ($repeats as $i=>$r) { + echo '
                      '.$i.' '.$r->format('c'); + } + } + if ($num_events > $count) { + $repeats = array_slice($repeats,0, $count); + } + if (isset ($_GET['cdebug'])) { + echo '
                      Limit date array, now have :'.count($repeats); + foreach ($repeats as $i=>$r) { + echo '
                      '.$i.' '.$r->format('c'); + } + } + return($repeats); +} +/* --------------------------------------------------------------------------------------------------- */ +function amr_process_RRULE($p, $start, $astart, $aend, $limit ) { + /* RRULE a parsed array. If the specified event repeats between the given start and + * end times, return one or more nonrepeating date strings in array + */ + global $amr_wkst, + $amr_timeperiod_conv; /* converts daily to day etc */ + /* now we should have if they are there: $p[freq], $p[interval, $until, $wkst, $ count, $byweekno etc */ + /* check / set limits NB don't forget the distinction between the two kinds of limits */ + $tz = date_timezone_get($start); + + //echo '
                      rule passed'; var_dump($p); + + if (isset($_GET['rdebug'])) { + echo '
                       start='.$start->format('c') + .'
                      astart='.$astart->format('c') + .'
                      parameter passed: '; + if (is_array($p)) + foreach ($p as $k => $i) { + echo $k. ' '; + if (is_object($i)) echo $i->format('c'); + else print_r($i); echo '
                      '; + } + else {echo '
                      rule passed'; var_dump($p);} + } + if (!isset($p['COUNT'])) + $count = AMR_MAX_REPEATS; /* to avoid any chance of infinite loop! */ + else + $count = $p['COUNT']; + + if (isset($_GET['cdebug'])) echo '
                      Limiting the repeats to '.$count; + + $until = amr_newDateTime(); + $original_until = amr_newDateTime(); + + if (!isset($p['UNTIL'])) { + $until = clone $aend; + $original_until = clone $aend; + } + else { + $until = clone $p['UNTIL']; + $original_until = clone $p['UNTIL']; + if ($until > $aend) + $until = clone $aend; + } + // 2014 07 09 + $original_start = amr_newDateTime(); + $original_start = clone $start; + $next_start = amr_newDateTime(); + $next_start = clone $start; + + if (amr_is_before ($until, $astart )) { + return(false); + }/* if it ends before our overall start, then skip */ + + /* now prepare out "intervals array for date incrementing eg: p[monthly] = 2 etc... Actualy there should only be 1 */ + if (isset($p['FREQ'])) { /* so know yearly, daily or weekly etc - setup increments eg 2 yearsly or what */ + if (!isset ($p['INTERVAL'])) + $p['INTERVAL'] = 1; + switch ($p['FREQ']) { + case 'WEEKLY': { + $int['day'] = $p['INTERVAL'] * 7; + break; + } + default: { + $inttype = $amr_timeperiod_conv[$p['FREQ']]; + $int[$inttype] = $p['INTERVAL']; + } + } + $freq = $p['FREQ']; + + } + + /* use the freq increment to get close to our listing start time. If we are within one freq of our listing start, we should be safe in calculating the odd rrules. */ + /* NOTE we can only do this if we do not have the count or a bysetpos !!!! */ + if (empty($int)) var_dump($p); //201807 + + if (empty($p['COUNT']) and empty($p['BYSETPOS']) and !empty($int)) { + $next_start = amr_get_a_closer_start($next_start, $astart, $int); + } + // 20110301 the nbydays, especially the negs, require that one initially consider a wider valid range so as not to unintentionally exclude a date before the expand/contract has beeen applied . Ie we might iterate to 28th and exclude, but actually once one has applied the -2Mo or some such rule, the date would have contracted into the valid range. So apply restrictions later. + + $until = amr_increment_datetime ($until, $int); + + unset ($p['UNTIL']); /* unset so we can use other params more cleanly, we have count saved etc */ + unset ($p['COUNT']); unset ($p['FREQ']); unset ($p['INTERVAL']); + if (!empty($p['WKST'])) { + $wkst = $p['WKST']; unset($p['WKST']); + } + else + $wkst = $amr_wkst; + if (count($p) === 0) {$p=null; } /* If that was all we had, get rid of it anyway */ + + if (isset ($p['NBYDAY'])) { + /* if we separated these in the parsing process, merge them here, NOOO - will cause problems with the +1's and bool */ + if (isset ($p['BYDAY'])) $p['BYDAY'] = array_merge ($p['NBYDAY'], $p['BYDAY']); + else $p['BYDAY'] = $p['NBYDAY']; + unset ($p['NBYDAY']); + } + while ($next_start <= $until) { /* don't check astart here - may miss some */ + + $datearray[] = amr_get_date_parts($next_start); + if (isset($_GET['rdebug'])) { + echo '
                      Checked start against extra until (1 extra iteration to allow for negativebydays) etc '.$next_start->format('c').' '.$until->format('c'); + echo '
                      date array = '; var_dump($datearray); + } + + switch ($freq) { /* the 'bys' are now in an array $p . NOTE THE sequence here is important */ + case 'SECONDLY': { + if (isset($p['month'])) $datearray = amr_limit ($datearray, $p['month'], 'month'); + /* BYWEEK NO not applicable here */ + if (isset($p['BYYEARDAY'])) $datearray = amr_limit_by_yearday ($datearray, $p['BYYEARDAY'],$tz); + if (isset($p['day'])) $datearray = amr_limit ($datearray, $p['day'], 'day'); + if (isset($p['BYDAY'])) $datearray = amr_limit_by_day_of_week ($datearray, $p['BYDAY'],$tz); +// foreach ($p as $i => $by) amr_limit_dates_withby($dates); + if (isset($p['hour'])) $datearray = amr_limit ($datearray, $p['hour'],'hour'); + if (isset($p['minute'])) $datearray = amr_limit ($datearray, $p['minute'],'minute'); + if (isset($p['second'])) $datearray = amr_limit ($datearray, $p['second'],'second'); + break; + } + case 'MINUTELY': { + if (isset($p['month'])) $datearray = amr_limit ($datearray, $p['month'], 'month'); + /* BYWEEK NO not applicable here */ + if (isset($p['BYYEARDAY'])) $datearray = amr_limit_by_yearday ($datearray, $p['BYYEARDAY'],$tz); + if (isset($p['day'])) $datearray = amr_limit ($datearray, $p['day'], 'day'); + if (isset($p['BYDAY'])) $datearray = amr_limit_by_day_of_week ($datearray, $p['BYDAY'],$tz); + if (isset($p['hour'])) $datearray = amr_limit ($datearray, $p['hour'], 'hour'); + if (isset($p['minute'])) $datearray = amr_limit ($datearray, $p['minute'],'minute'); + if (isset($p['second'])) $datearray = amr_expand ($datearray, $p['second'],'second',$tz); + break; + } + case 'HOURLY': { + if (isset($p['month'])) $datearray = amr_limit ($datearray, $p['month'], 'month'); + /* BYWEEK NO not applicable here */ + if (isset($p['BYYEARDAY'])) $datearray = amr_limit_by_yearday ($datearray, $p['BYYEARDAY'],$tz); + if (isset($p['day'])) $datearray = amr_limit ($datearray, $p['day'], 'day'); + if (isset($p['BYDAY'])) $datearray = amr_limit_by_day_of_week ($datearray, $p['BYDAY'],$tz); + if (isset($p['hour'])) $datearray = amr_limit ($datearray, $p['hour'],'hour',$tz); + if (isset($p['minute'])) $datearray = amr_expand ($datearray, $p['minute'],'minute',$tz); + if (isset($p['second'])) $datearray = amr_expand ($datearray, $p['second'],'second',$tz); + break; + } + case 'DAILY': { + if (isset($p['month'])) $datearray = amr_limit ($datearray, $p['month'], 'month'); + /* BYWEEK NO and BYYEARDAY not applicable here */ + if (isset($p['day'])) $datearray = amr_limit ($datearray, $p['day'], 'day'); + if (isset($p['BYDAY'])) $datearray = amr_limit_by_day_of_week ($datearray, $p['BYDAY'],$tz); + if (isset($p['hour'])) $datearray = amr_expand ($datearray, $p['hour'],'hour',$tz); + if (isset($p['minute'])) $datearray = amr_expand ($datearray, $p['minute'],'minute',$tz); + if (isset($p['second'])) $datearray = amr_expand ($datearray, $p['second'],'second',$tz); + break; + } + case 'WEEKLY': { + if (isset($p['month'])) $datearray = amr_limit ($datearray, $p['month'], 'month'); + /* BYWEEK NO and BYYEARDAY and BYMONTH DAY not applicable here */ + if (isset($p['BYDAY'])) $datearray = amr_expand_by_day_of_week_for_weekly ($datearray, $p,$tz,$wkst); + if (isset($p['hour'])) $datearray = amr_expand ($datearray, $p['hour'],'hour',$tz); + if (isset($p['minute'])) $datearray = amr_expand ($datearray, $p['minute'],'minute',$tz); + if (isset($p['second'])) $datearray = amr_expand ($datearray, $p['second'],'second',$tz); + break; + } + case 'MONTHLY': { + if (isset($p['month'])) $datearray = amr_limit ($datearray, $p['month'], 'month'); + /* BYWEEK NO and BYYEARDAY not applicable here */ + if (isset($p['day'])) $datearray = amr_expand ($datearray, $p['day'], 'day',$tz); + if ((isset($p['BYDAY'])) or (isset($p['NBYDAY']))) { + /* as per note 1 on page 44 of http://www.rfc-archive.org/getrfc.php?rfc=5545 */ + if (isset($p['day'])) /* BYDAY limits if BYMONTH DAY is present , else a special expand for monthly */ + $datearray = amr_limit_by_day_of_week ($datearray, $p, $tz); + else $datearray = amr_special_expand_by_day_of_week_and_month_note1 ($datearray, $p,$tz); + } + if (isset($p['hour'])) $datearray = amr_expand ($datearray, $p['hour'],'hour',$tz); + if (isset($p['minute'])) $datearray = amr_expand ($datearray, $p['minute'],'minute',$tz); + if (isset($p['second'])) $datearray = amr_expand ($datearray, $p['second'],'second',$tz); + break; + } + case 'YEARLY': { + + if (isset($p['month'])) $datearray = amr_expand ($datearray, $p['month'], 'month',$tz); + if (isset($p['BYWEEKNO'])) $datearray = amr_expand_by_weekno ($datearray, $p['BYWEEKNO'],$tz); + if (isset($p['BYYEARDAY'])) $datearray = amr_expand_by_yearday ($datearray, $p['BYYEARDAY'],$tz); + if (isset($p['day'])) $datearray = amr_expand ($datearray, $p['day'], 'day',$tz); + if (isset($p['BYDAY'])) { + if (isset($p['day']) or isset($p['BYYEARDAY'])) /*Note 2: BYDAY limits if BYMONTH DAY or BYYEARDAY is present */ + $datearray = amr_limit_by_day_of_week ($datearray, $p['BYDAY'],$tz); + else $datearray = amr_expand_by_day_of_week_for_year ($datearray, $p,$tz); + } +// if (isset($p['NBYDAY'])) { +// if (isset($p['day']) or isset($p['BYYEARDAY'])) /*Note 2: BYDAY limits if BYMONTH DAY or BYYEARDAY is present */ +// $datearray = amr_limit_by_day_of_week ($datearray, $p['NBYDAY'],$tz); +// else $datearray = amr_expand_by_day_of_week_for_year ($datearray, $p,$tz); +// } + if (isset($p['hour'])) $datearray = amr_expand ($datearray, $p['hour'],'hour',$tz); + if (isset($p['minute'])) $datearray = amr_expand ($datearray, $p['minute'],'minute',$tz); + if (isset($p['second'])) $datearray = amr_expand ($datearray, $p['second'],'second',$tz); + break; + } + } + $datearray = amr_sort_date_array($datearray); + if (isset ($_GET['rdebug'])) {echo '
                      We have in date array: '; print_r($datearray); } + // There will only be > 1 if there was an expanding BY: + + if (!empty($datearray) and !empty($p['BYSETPOS'])) { + $datearray = amr_limit_by_setpos ($datearray, $p['BYSETPOS']); + if (isset ($_GET['rdebug'])) { + echo '
                      Selected after bysetpos:'; print_r($p['BYSETPOS']); + echo '
                      '; print_date_array($datearray); } + $datearray = amr_sort_date_array($datearray); /* sort again as the set position may have trashed it */ + } + +// $num_events = count($datearray); +// if (isset ($_GET['cdebug'])) {echo '
                      We have '. $num_events.' events. We want max:'.$count; } +// if ($num_events > $count) $datearray = array_slice($datearray,0, $count); +// if (isset ($_GET['cdebug'])) {echo '
                      Limit date array, now have :'.count($datearray); +// echo '
                      From '.$astart->format('Y m d h:i').' until '.$until->format('Y m d h:i'); +// } + if (!empty ($datearray)) { + foreach ($datearray as $d) { /* create the date objects */ + $possdate = amr_create_date_from_parts ($d, $tz); + if (is_object ($possdate) ) { + if (isset ($_GET['rdebug'])) echo '
                      Possdate='.$possdate->format('Y m d h:i:s'); +// if (($possdate <= $until) and ($possdate >= $astart)) { + $repeats[] = $possdate; +// if (isset ($_GET['rdebug'])) echo ' - saved'; + } + } + } + + unset ($datearray); + /* now get next start */ + $next_start = amr_increment_datetime ($next_start, $int); + + if (isset ($_GET['rdebug'])) echo '
                      Next start data after incrementing = '.$next_start->format('Y m d l h:i:s'); + } /* end while*/ + //----------------------------------------------------------------------- + /*if (isset($_GET['rdebug'])) { + echo '
                      Stop now..checked start against extra until
                      start=' + .$next_start->format('c') + .'
                      until='.$until->format('c').' the extra until!'; + if ($next_start > $until) echo '
                      php says start > extra until '; + }*/ + + if (!empty ($repeats)) { + + $repeats = amr_limit_occurences ($repeats, $count); + + foreach ($repeats as $i=> $d) { /* check if it is within date limits */ + if (isset ($_GET['rdebug'])) { + echo '
                      *** Check for this rrule - original until. ' + .'
                      -------astart = '.$astart->format('c') + .'
                      original start = '.$original_start->format('c') + .'
                      instancedate = '.$d->format('c') + .'
                      originaluntil= '.$original_until->format('c') + .'
                      '; + } + + if (!(($d <= $original_until) and ($d >= $original_start))) { //note these are rrule limits, not the overall limits + unset($repeats[$i]); + if (isset ($_GET['rdebug'])) + echo '
                      Event instance not within rrule limits - removed '.$d->format('Y m d h:i').'
                      '; + } + else { + if (isset ($_GET['rdebug'])) + echo '
                      Event instance within rrule limits '.$d->format('Y m d h:i').'
                      '; + } + } + } + + if (isset ($_GET['rdebug'])) { + if (empty ($repeats)) echo 'No repeats!
                      '; + else { + echo ''.count($repeats).' repeats before further processing, exclusions etc
                      '; + foreach ($repeats as $i =>$r) echo '
                      '.$r->format('c'); + echo '
                      Need use debugexc to check exclusion logic'; + } + } + + if (empty ($repeats)) return(null); + return ($repeats); + + } +/* ---------------------------------------------------------------------------- */ +function amr_parse_RRULEparams ( $args) { + +global $amr_bys; +global $amr_day_of_week_no; +global $amr_wkst; +global $amr_rulewkst; +global $amr_globaltz; + + if (!is_array($args)) return false; + + foreach ($args as $i => $a) { + parse_str ($a, $result); // 201807 remove use of parsestr without 2nd param $result + foreach ($result as $var => $value) { + $$var = $value; // 201807 remove use of parsestr without 2nd param $result + } + } + /* now we should have if they are there: $freq, $interval, $until, $wkst, $ count, $byweekno etc */ + + + if (isset ($BYMONTH)) { + $p['month'] = explode (',',$BYMONTH); + foreach ($p['month'] as $j => $k) { + if ($k < 0) { $p['month'][$j] = 13 + $k; } + } + } + if (isset ($BYMONTHDAY)) { + $p['day'] = explode (',',$BYMONTHDAY); + } + if (isset ($BYHOUR)) { + $p['hour'] = explode (',', $BYHOUR); + foreach ($p['hour'] as $j => $k) { + if ($k < 0) { $p['hour'][$j] = 24 + $k; } + } + } + if (isset ($BYMINUTE)) { + $p['minute'] = explode (',', $BYMINUTE); + foreach ($p['minute'] as $j => $k) { + if ($k < 0) { $p['minute'][$j] = 60 + $k; } + } + } + if (isset ($BYSECOND)) { + $p['second'] = explode (',', $BYSECOND); + foreach ($p['second'] as $j => $k) { + if ($k < 0) { $p['second'][$j] = 60 + $k; } + } + } + if (isset ($BYDAY)) { + $p['BYDAY'] = explode(',', $BYDAY); + foreach ($p['BYDAY'] as $j => $k) { + $l = strlen($k); + if ($l > 2) { /* special treatment required - flag to re handle, keep as we want to isolate a subset anyway */ + $thenumber = substr($k, 0, $l-2); + $theday = substr($k, $l-2, $l); + $p['NBYDAY'][$theday][] = $thenumber; /* could be multiple numeric for same day eg first and last */ + unset ($p['BYDAY'][$j]); + } + else { + $p['BYDAY'][$k] = true; + unset ($p['BYDAY'][$j]); + } + } + } + if (isset($p['BYDAY']) and ( count($p['BYDAY']) < 1)) unset ($p['BYDAY']); + if (isset ($BYWEEKNO)) {$p['BYWEEKNO'] = explode(',', $BYWEEKNO);} + if (isset ($BYYEARDAY)) {$p['BYYEARDAY'] = explode(',', $BYYEARDAY); } + if (isset ($UNTIL)) {$p['UNTIL'] = amr_parseDateTime($UNTIL, $amr_globaltz);} + if (isset ($COUNT)) {$p['COUNT'] = $COUNT;} + if (isset ($INTERVAL)) {$p['INTERVAL'] = $INTERVAL;} + if (isset ($FREQ)) {$p['FREQ'] = $FREQ;} + if (isset ($BYSETPOS)) {$p['BYSETPOS'] = explode(',', $BYSETPOS);} + if (isset ($WKST)) { + $p['WKST'] = $WKST; + $amr_wkst = $WKST; + } + if (!empty($p)) return ($p); /* Need the array values to reindex the array so can acess start positions */ + else return (false); + } + /* ---------------------------------------------------------------------------- */ +function amr_get_human_start_of_week (&$dateobj, $wkst) { // WORKS ! +/* get the start of the week in human terms */ + global $amr_day_of_week_no; + $wkst_no = $amr_day_of_week_no[$wkst]; /* from 1=Mo to 7=SU */ + + $php_wkstno = $wkst_no % 7; /* php uses 0=SU , so convert to that */ + + $dayofweek = $dateobj->format('w'); /* 0=SU, 6 = SA */ + $adj = ($dayofweek - $php_wkstno + 7) % 7; + $string = '-'.$adj.' days'; + + date_modify ($dateobj,$string); + //if (isset($_GET['debugwks'])) { echo '
                      wkstno='.$wkst_no.' phpwstno='.$php_wkstno.' dow='.$dayofweek.' adj='.$adj. + //' get start of week using '.$string.' to'.$dateobj->format('c');} + return ($dateobj); +} +/* ---------------------------------------------------------------------------- */ +function amr_get_start_of_week (&$dateobj, $wkst) { // is it right - is it just ics terms or is it wrong +/* get the start of the week in ics terms, not ours necessarily according to the wkst parameter (Sat/Sun/Mon), returns new dat object */ + global $amr_day_of_week_no; + + $wkst_no = $amr_day_of_week_no[$wkst]; /* from 1=Mo to 7=SU */ + + $dayofweek = $dateobj->format('w'); + + //if (isset($_GET['debugwks'])) echo '
                      dayofweek= '.$dayofweek.' wkst '.$wkst_no; + + if ($dayofweek == '-1') + $dayofweek = get_oldweekdays($dateobj); /* php seems to break around year 1760 */ + if ($dayofweek < $wkst_no) + $adj = $wkst_no - $dayofweek; + else + $adj = $dayofweek - $wkst_no; + $string = '-'.$adj.' days'; + date_modify ($dateobj,$string); + return ($dateobj); +} +/* ---------------------------------------------------------------------------- */ +function amr_increment_datetime ($dateobject, $int) { + /* note we are only incrementing by the freq - can only be one? */ + /* Now increment and try next repeat + check we have not fallen foul of a by -or is that elsewhere ?? */ + if ((!isset ($int)) or (!is_array($int))) {echo 'unexpected error: no interval';return (false);} +// if (isset ($_GET['rdebug'])) {echo '
                      Incre date '.$dateobject->format('c'); } + foreach ($int as $i=>$interval) { /* There should actually only be one */ +// if (isset ($_GET['rdebug'])) {echo '
                      Int= '.$i;} + if ($i === 'month') { /* need special check to cope with php date modify add month bug */ + $day = $dateobject->format('j'); //day of month + if ($day > 28) { // we may experience the php date modify bug + date_modify($dateobject,'+'.$interval.' '.$i); + $day2 = $dateobject->format('j'); //day of month + if ($day2 < 28) //it went into next month, so reverse + date_modify($dateobject,'-'.$day2.' days'); + } + else date_modify($dateobject,'+'.$interval.' '.$i); + } + else date_modify($dateobject,'+'.$interval.' '.$i); +// if (isset ($_GET['rdebug'])) {echo '
                      '.$dateobject->format('c'); } + } + return ($dateobject); +} +/* -------------------------------------------------------------------------------- */ +function amr_parseRRULE($rrule) { + /* RRULE's can vary so much! Some examples: + FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200 + FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH + */ + + if (empty($rrule)) return (null); + + if (is_array($rrule) and !isset($rrule['FREQ'])) { + //then we may have an array of rrules + $r = array_shift($rrule); + if (!is_string($r)) { + // if (isset ($_GET['rdebug'])) {echo '
                      RRULE already parsed';} + return($r); + } + } + else + $r = $rrule; + + if (!is_string($r)) { + // if (isset ($_GET['rdebug'])) {echo '
                      RRULE already parsed';} + return($r); + } + $p = explode (';', $r); + // if (isset ($_GET['rdebug'])) { echo '
                      RRULe: '; var_dump($p);} + $p = amr_parse_RRULEparams ($p); + + return ($p); + + } +/* ---------------------------------------------------------------------------- */ +function amr_get_last_xday_of_month ($date, $x=-1) { /* helper function format passed is NB. Can be used for last day of year and last day of month*/ +/* php 'last day of month' not working? */ + $last = date_create ($date->format('Y-m-01 H:i:s'), $date->getTimezone()); /* set to first of month */ + $last->modify('+1 month'); + $x = (int) $x; + $last->modify($x.' days'); + return ($last); +} +/* ---------------------------------------------------------------------------- */ +function amr_get_last_day_of_year ($date) { /* helper function format passed is NB. Can be used for last day of year and last day of month*/ +/* php 'last day of month' not working? */ + $last = date_create ($date->format('Y-12-01 H:i:s'), $date->getTimezone()); /* set to first of month */ + $last->modify('+1 month'); + $last->modify('-1 day'); + return ($last); +} +/* ---------------------------------------------------------------------------- */ +function amr_get_last_day ($date, $format) { /* helper function format passed is NB. Can be used for last day of year and last day of month*/ +/* php 'last day of month' not working? */ + $last = date_create ($date->format($format), $date->getTimezone()); /* set to first of month */ + $last->modify('+1 month'); + $last->modify('-1 day'); + return ($last); +} +/* ---------------------------------------------------------------------------- */ +function amr_goto_byday ($dateobj, $byday, $sign) { + global $amr_day_of_week_no; + $dayofweek = $dateobj->format('w'); /* 0=sunday, 6 = saturday */ + if ($dayofweek == '-1') + $dayofweek = get_oldweekdays($dateobj); /* php seems to break around 1760 */ + + $target = $amr_day_of_week_no[$byday]; /* mo=1 ,su=7 */ + $adjustment = $target - $dayofweek; + if (isset ($_GET['rdebug'])) { + echo '
                      GO to day of week from '.$dateobj->format('Ymd l'). + ' going to '.$sign.$byday.' Target = '.$target.' Dayofweek = '.$dayofweek.' '.$dateobj->format('l'); + } + if ($sign === '+') { + if ($adjustment < 0) + $adjustment = $adjustment + 7; + } + else { // sign must be neg + if ($adjustment > 0) + $adjustment = $adjustment-7; + } + + if ($adjustment == 7) $adjustment = 0; // else will skip the first one if it matches + + if (isset ($_GET['rdebug'])) echo '
                      Adj = '. $adjustment; + $d2 = new DateTime(); // if cloning ok dont need tz + $d2 = clone $dateobj; + date_modify ($d2,$adjustment.' days'); + if (isset ($_GET['rdebug'])) echo ' Got date = '. $d2->format('Ymd l'); + return ($d2); + } +/* --------------------------------------------------------------------------------------------------- */ +function amr_process_RDATE($p, $start, $end) { + /* RDATE or EXDATE processes a parsed array. If the specified event repeats between the given start and + * end times, return one or more nonrepeating date strings in array + + RDATE:19970714T123000Z + RDATE:19970714T083000 + RDATE;TZID=US-EASTERN:19970714T083000 + RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,19960404T010000Z/PT3H + RDATE;VALUE=DATE:19970101,19970120,19970217,19970421,19970526,19970704,19970901,19971014,19971128,19971129,19971225 + should be passed as object now? *** amr check!! + */ + + $repeats = array(); + if (is_object ($p)) { + if (isset($_REQUEST['debugexc'])) { + echo '
                      R or exdate Object passed '. amr_format_date('Y m j, g:i a P',$p);} + if (amr_falls_between($p, $start, $end)) { + $repeats[] = $p; + } + } + else + if (is_array($p)) { //var_dump($p); + foreach ($p as $i => $r) { + if (amr_falls_between($r, $start, $end)) { + $repeats[] = $r; + } + } + } + else { + if (isset($_REQUEST['rdebug'])) { + echo '
                      ****Cannot process RDATE - Not an Object, Not an array passed
                      '; var_dump($p);} + //if (amr_falls_between($p, $start, $end)) $repeats[] = $p; + } + //if (isset($_REQUEST['debugexc'])) { echo '
                      *** Array of repeats '; var_dump($repeats); } + return ($repeats); + } diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr-upcoming-events-widget.php b/wp-content/plugins/amr-ical-events-list/includes/amr-upcoming-events-widget.php new file mode 100644 index 0000000..4db6cae --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr-upcoming-events-widget.php @@ -0,0 +1,321 @@ +Manage Settings Page and Manage Widget + +*/ +class amr_ical_widget extends WP_Widget { + /** constructor */ + public function __construct() { + $widget_ops = array ('description'=>__('Upcoming Events', 'amr-ical-events-list' ),'classname'=>'events'); + parent::__construct('amr-ical-upe' + , __('Upcoming Events List', 'amr-ical-events-list' ) + , $widget_ops); + } +/* ============================================================================================== */ + function widget ($args /* the title etc */, $instance /* the params */) { /* this is the piece that actualy does the widget display */ + global $amrW, + $amr_options, + $amr_limits, + $amr_listtype, + $amr_calendar_url, + $amr_ical_am_doing, + $change_view_allowed, + $widget_icalno, /* used to give each ical widget a unique id on a page */ + $amr_been_here; /* used to detect if we are looping somehow - reset at the end of each widget or shortcode. */ +// + if (amr_a_nested_event_shortcode ()) return (false); //someone entered an event shortcode into event content - causing a loop of events lists inside event lists + + amr_ical_load_text(); // do we have to reload all over theplace ? wp does not always seem to have the translations + $change_view_allowed = false; + $amr_ical_am_doing = 'listwidget'; + extract ($args, EXTR_SKIP); /* this is for the before / after widget etc*/ + unset($args); //nb do not delete this else mucks up the args later + extract ($instance, EXTR_SKIP); /* this is for the params etc*/ + + if (!empty ($shortcode_urls)) // get any args stored in the widget settings + $args = shortcode_parse_atts($shortcode_urls); + + if (empty ($args['listtype'])) + $args['listtype'] = '4'; + $amr_listtype = (int) $args['listtype']; + + +// + if (!empty ($externalicalonly) and $externalicalonly) + $args['eventpoststoo'] = '0'; + else $args['eventpoststoo'] = '1'; +// $args['show_month_nav'] = '0'; // comment out, otherwise cannot have at all if requetsed? + $args['headings'] = '1'; + $args['show_views'] = '0'; + + $amrW = 'w'; /* to maintain consistency with previous version and prevent certain actions */ + $criteria = amr_get_params ($args); /* this may update listtype, limits etc */ + +// what was this for ?? + if (isset ($criteria['event'])) unset ( $criteria['event']); //*** later may need to check for other custo posttypes + + if (ICAL_EVENTS_DEBUG) echo '
                      ical list widget:'.$amr_listtype.'
                      '.amr_echo_parameters(); + + if (isset($doeventsummarylink) and !($doeventsummarylink)) $amrW = 'w_no_url'; + + $moreurl = trim($moreurl," "); + $moreurl = (empty($moreurl)) ? null : $moreurl ; + $amr_calendar_url = esc_url($moreurl); + if (ICAL_EVENTS_DEBUG) echo 'Calendar url = '.$amr_calendar_url; + if (isset($_REQUEST['lang'])) + $moreurl = add_query_arg('lang',$_REQUEST['lang'],$moreurl); +// wp 3.3.1 doesn't like html in titles anymore - why ? +// if (!empty ($moreurl)) +// $title = ''.__($title,'amr-ical-events-list') .''; + + if (!(isset($widget_icalno))) + $widget_icalno = 0; + else + $widget_icalno= $widget_icalno + 1; + + $content = amr_process_icalspec($criteria, + $amr_limits['start'], $amr_limits['end'], $amr_limits['events'], $widget_icalno); + //output... + + //var_dump($criteria); + echo $before_widget; + +// if (!empty($criteria['headings'])) + echo $before_title + . apply_filters('widget_title',__($title,'amr-ical-events-list' )) + . $after_title ; + + echo $content; + echo $after_widget; + + /* we made it out the other end without looping ?*/ + $amr_been_here = false; + + } +/* ============================================================================================== */ + + function update($new_instance, $old_instance) { /* this does the update / save */ + $instance = $old_instance; + + $instance['title'] = strip_tags($new_instance['title']); + $instance['moreurl'] = strip_tags($new_instance['moreurl']); + $instance['moreurl'] = amr_make_sticky_url($instance['moreurl'] ); + $instance['doeventsummarylink']= strip_tags($new_instance['doeventsummarylink']); + $instance['externalicalonly'] = strip_tags($new_instance['externalicalonly']); + $instance['shortcode_urls'] = strip_tags($new_instance['shortcode_urls']); + if (get_option('amr-ical-widget') ) + delete_option('amr-ical-widget'); /* if it exists - leave code for a while for conversion */ + + return $instance; + + } + +/* ============================================================================================== */ + + function form($instance) { /* this does the display form */ + global $amrW; + + $instance = wp_parse_args( (array) $instance, array( + 'title' => __('Upcoming Events','amr-ical-events-list') , + 'moreurl' => '', + 'doeventsummarylink' => true, + 'externalicalonly' => false, + 'shortcode_urls' => '' + ) ); + + $title = $instance['title']; + $moreurl = $instance['moreurl']; + $doeventsummarylink= $instance['doeventsummarylink']; + $externalicalonly = $instance['externalicalonly']; + $shortcode_urls = $instance['shortcode_urls']; + + if ($opt = get_option('amr-ical-widget')) { /* delete the old option in the save */ + if (isset ($opt['urls']) ) $shortcode_urls = str_replace(',', ' ',$opt['urls']); /* in case anyone had multiple urls separate by commas - change to spaces*/ + if (isset ($opt['moreurl']) ) $moreurl = $opt['moreurl']; + if (isset ($opt['title']) ) $title = $opt['title']; + if (isset ($opt['listtype']) and (!($opt['listtype']===4))) $shortcode_urls = 'listtype='.$opt['listtype'].' '.$shortcode_urls; + if (isset ($opt['limit']) and (!($opt['limit']==='5'))) $shortcode_urls = 'events='.$opt['limit'].' '.$shortcode_urls; + } + + $seemore = __('See plugin website for more details','amr-ical-events-list'); + // ?> +

                      +

                      + +

                      +

                      +

                      +

                      +

                      +

                      +

                      + + ? +

                      + +__('Upcoming Events', 'amr-ical-events-list' ), + 'classname'=>'widget_calendar'); + + parent::__construct(false, __('Upcoming Events Calendar', 'amr-ical-events-list' ), $widget_ops); + + } + +/* ============================================================================================== */ + function widget ($args, $instance) { /* this is the piece that actualy does the widget display */ + global $amrW; + global $amr_options; + global $amr_limits; + global $amr_listtype; + global $change_view_allowed; + global $widget_icalno; /* used to give each ical widget a unique id on a page */ + global $amr_calendar_url, + $amr_been_here; + + // don't check becuase it checks in the shortcode function we call + // 20140209 redundant - done in the shortcode function too $criteria = amr_get_params ($args); /* this may update listtype, limits etc */ + amr_ical_load_text(); // do we have to reload all over theplace ? wp does not always seem to have the translations + + $change_view_allowed = false; +// $amr_listtype = '8'; /* default only, can be overwitten in shortcode or query string */ + + extract ($args, EXTR_SKIP); /* this is for the before / after widget etc*/ + unset($args); + extract ($instance, EXTR_SKIP); /* the widget form fields */ + + if (isset ($moreurl) ) $moreurl = trim($moreurl," "); + $amr_calendar_url = (empty($moreurl)) ? null : $moreurl ; + + if (!empty ($shortcode_urls)) // from the instance + $atts = shortcode_parse_atts($shortcode_urls); + if (!empty ($externalicalonly) and $externalicalonly) + $atts['eventpoststoo'] = '0'; + else + $atts['eventpoststoo'] = '1'; + $atts['show_views'] = '0'; + $atts['ignore_query'] = 1; + $atts['show_month_nav'] = 1; +// + if (!(isset($widget_icalno))) + $widget_icalno = 0; + else + $widget_icalno= $widget_icalno + 1; + $amrW = 'w'; /* to maintain consistency with previous version */ + + $content = amr_do_smallcal_shortcode($atts); // thsi will check query params etc + + //output... + + if (!empty($before_widget)) echo $before_widget; + if (!empty($before_title)) echo $before_title; + if (!empty($title)) echo apply_filters('widget_title',__($title,'amr-ical-events-list') ); + if (!empty($after_title)) echo $after_title; + echo $content; + if (!empty($after_widget)) echo $after_widget; + if (isset ($savedays)) $amr_limits['days'] = $savedays; + + /* we made it out the other end without looping ?*/ + $amr_been_here = false; + } +/* ============================================================================================== */ + function update($new_instance, $old_instance) { /* this does the update / save */ + $instance = $old_instance; + + $instance['title'] = strip_tags($new_instance['title']); +// if (!empty($instance['externalicalonly'])) // was causing it not to svae - why? + $instance['externalicalonly'] = ($new_instance['externalicalonly']); + + $instance['shortcode_urls'] = strip_tags($new_instance['shortcode_urls']); + $instance['moreurl'] = strip_tags($new_instance['moreurl']); + $instance['moreurl'] = amr_make_sticky_url($instance['moreurl'] ); + + return $instance; + + } +/* ============================================================================================== */ + + function form($instance) { /* this does the display form */ + + $instance = wp_parse_args( (array) $instance, array( + 'title' => __('Upcoming Events','amr-ical-events-list'), + 'externalicalonly' => false, + 'moreurl' => '', + 'shortcode_urls' => 'ignore_query=1' + ) ); + $title = $instance['title']; + $moreurl = $instance['moreurl']; + $externalicalonly = $instance['externalicalonly']; + $shortcode_urls = $instance['shortcode_urls']; + $seemore = __('See more','amr-ical-events-list'); + ?>

                      +

                      +

                      +

                      +

                      +

                      +

                      + + ? +

                      + + + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/amr_date_i18n.php b/wp-content/plugins/amr-ical-events-list/includes/amr_date_i18n.php new file mode 100644 index 0000000..0c9906e --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/amr_date_i18n.php @@ -0,0 +1,32 @@ +month ) ) && ( !empty( $wp_locale->weekday ) ) ) { + $datemonth = $wp_locale->get_month( $dateobj->format('m') ); + $datemonth_abbrev = $wp_locale->get_month_abbrev( $datemonth ); + $w = $dateobj->format('w'); + if ($w == '-1') {$w = get_oldweekdays($dateobj);} /* php seems to break around 1760 and google passed a zero year date */ + $dateweekday = $wp_locale->get_weekday( $w ); + $dateweekday_abbrev = $wp_locale->get_weekday_abbrev( $dateweekday ); + $datemeridiem = $wp_locale->get_meridiem( $dateobj->format('a') ); + $datemeridiem_capital = $wp_locale->get_meridiem( $dateobj->format( 'A') ); + $dateformatstring = ' '.$dateformatstring; + $dateformatstring = preg_replace( "/([^\\\])D/", "\\1" . backslashit( $dateweekday_abbrev ), $dateformatstring ); + $dateformatstring = preg_replace( "/([^\\\])F/", "\\1" . backslashit( $datemonth ), $dateformatstring ); + $dateformatstring = preg_replace( "/([^\\\])l/", "\\1" . backslashit( $dateweekday ), $dateformatstring ); + $dateformatstring = preg_replace( "/([^\\\])M/", "\\1" . backslashit( $datemonth_abbrev ), $dateformatstring ); + $dateformatstring = preg_replace( "/([^\\\])a/", "\\1" . backslashit( $datemeridiem ), $dateformatstring ); + $dateformatstring = preg_replace( "/([^\\\])A/", "\\1" . backslashit( $datemeridiem_capital ), $dateformatstring ); + $dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 ); + } + $j = $dateobj->format( $dateformatstring ); + // allow plugins to redo this entirely for languages with untypical grammars + $j = apply_filters('amr_date_i18n', $j, $req_format, $dateobj ); + return $j; +} +} diff --git a/wp-content/plugins/amr-ical-events-list/includes/functions-examples.php b/wp-content/plugins/amr-ical-events-list/includes/functions-examples.php new file mode 100644 index 0000000..5a01077 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/functions-examples.php @@ -0,0 +1,21 @@ +' + . print_r($amr_limits, true)); +} diff --git a/wp-content/plugins/amr-ical-events-list/includes/functions.php b/wp-content/plugins/amr-ical-events-list/includes/functions.php new file mode 100644 index 0000000..3b75c91 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/functions.php @@ -0,0 +1,400 @@ +$specs) { + $amr_fields_needed[] = $fld; + } + } + //else echo 'WHY EMPTY'; + + foreach ($amr_event_columns as $col => $fields) { + foreach ($fields as $field =>$data) { + if (!in_array($field, // these are calculated or derived fields + array( + 'SUMMARY', + 'DESCRIPTION', + 'subscribeevent', + 'subscribeseries', + 'addevent', + 'post_tag', + 'category'))) + $amr_fields_needed[] = $field; + } + } + + foreach ($amr_fields_needed as $i=>$fld) + $amr_fields_needed[$i] = '_'.$fld; + + if (function_exists('ical_location_values') // is in amr-events for events with locations + and (in_array('_GEO', $amr_fields_needed) or + in_array('_map', $amr_fields_needed) or + in_array('_place', $amr_fields_needed) or + in_array('_LOCATION', $amr_fields_needed ))) + { + + $locationfields = ical_location_values(); + $amr_fields_needed = array_merge ($amr_fields_needed , $locationfields ); + + } + // what if using other plugin ? eg geomashup + + + + $amr_fields_needed = array_merge ($amr_fields_needed , + array('_VEVENT', + '_tztype', + '_timezone', + '_allday', + '_DTSTART', + '_EventDate', + '_RRULE', + '_EXDATE', + '_RDATE', + '_DURATION', + '_last')); + + //var_dump($amr_fields_needed); + +return $amr_fields_needed; +} + +function amr_create_date_time ($datetimestring, $tzobj) { // date time create with exception trap to avoid fatal errors + try { $dt = new DateTime($datetimestring, $tzobj); } + catch(Exception $e) { + $text = '
                      Unable to create DateTime object from '.$datetimestring.'
                      '.$e->getMessage(); + amr_tell_admin_the_error ($text); + return (false); + } + return ($dt); +} + +function amr_newDateTime($text='') { // create new datetime object with the global timezone +// because wordpress insists that the php default must stay as UTC +global $amr_globaltz; + //$d = new DateTime($text,$amr_globaltz); + $d = amr_create_date_time($text,$amr_globaltz); // traps exceptions + return ($d); + +} + +function amr_a_nested_event_shortcode () { // in case we have a dummy - yes truly + global $amr_been_here; + + if (empty($amr_been_here) or (!($amr_been_here))) { + $amr_been_here = true; + return false; + } + else { + echo '
                      Event List Execution halted - looping detected. Did some one enter an event list shortcode into event content? That will cause a loop for sure.'; + return true; + } +} + +function amr_convert_date_string_to_object ($a) { + + if (checkdate(substr($a,4,2), /* month */ + substr($a,6,2), /* day*/ + substr($a,0,4)) /* year */ ) + $e = amr_newDateTime($a); + else { + _e('Invalid Event Date', 'amr-ical-events-list'); + } + return ($e); +} + +function amr_tell_admin_the_error ($text) { + // only report the error to admin if logged in ? + // else report with comment + if (function_exists('is_user_logged_in') // sometimes not yet loaded ??? + and (current_user_can('manage_options')) ) { + echo '
                      Message displayed to logged in admin only:
                      '.$text.'
                      '; + } + else if (WP_DEBUG) + echo '
                      Message (only displayed if WP_DEBUG):
                      '.$text; + else + echo ''; // give some notification at least rather than just failing silently + + } + +function amr_tell_error ($text) { + echo '

                      '.$text.'

                      '; + } + +function amr_external_url ($url) { + // if it is an external url, then open in new window + if (stristr( $url, get_bloginfo('url'))) { + return false; + } + else return(true); + } + +function amr_debug_time () { // track php runtime if debugging + global $amr_start_time_track,$amr_last_time_track; + if (isset($_GET['debugtime'])) { + $amr_start_time_track = microtime(); + $amr_last_time_track = $amr_start_time_track; + echo '
                      Starting tracking now after plugins loaded '.$amr_start_time_track; + echo '
                      Note: measuring runtime may affect the runtime too, as will debug messages. if using ics file, check timing on refresh &refresh'; + } +} + +function amr_track_run_time ($text='') { // track php runtime if debugging + global $amr_start_time_track; + global $amr_last_time_track; + if (isset($_GET['debugtime'])) { + $end = microtime(); + $startt = (float) array_sum(explode(' ',$amr_start_time_track)); + $endt = (float) array_sum(explode(' ',$end)); + $lastt = (float) array_sum(explode(' ',$amr_last_time_track)); + $amr_last_time_track = $end; + echo '
                      Since start '. sprintf("%.4f", ($endt-$startt))." seconds. Since last:" + .sprintf("%.4f", ($endt-$lastt)).' seconds. In "'.$text.'"'; + + } +} + +function amr_memory_convert($size) { + $unit=array('b','kb','mb','gb','tb','pb'); + return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i]; + } + +function amrical_mem_debug($text) { + if (isset($_GET['memdebug'])) { + $mem = memory_get_usage (true); + $peak = memory_get_peak_usage (true); + echo '
                      memory: '.amr_memory_convert($mem).' peak:'.amr_memory_convert($peak).' '.$text; + //echo '
                      memory: '.$mem.' peak:'.$peak.' '.$text; + } + if (isset($_GET['debugtime'])) { amr_track_run_time($text);} + } + +if (!function_exists('esc_textarea') ) { + function esc_textarea( $text ) { + $safe_text = htmlspecialchars( $text, ENT_QUOTES ); + } +} + +function amr_check_for_wpml_lang_parameter ($link) { + if (isset($_REQUEST['lang'])) { + $lang = $_REQUEST['lang']; + $link = remove_query_arg( 'lang', $link ); //is there a wpml bug ? or wp bug, we are getting lang twice + $link = add_query_arg( 'lang', $lang, $link ); + } + return ($link); +} + +// NOT IN USE ? +/*function amr_array_merge_recursive_distinct ( array &$array1, array &$array2 ) { /* array 2 will replace array 1*/ +/* + $merged = $array1; + + foreach ( $array2 as $key => &$value ) { + if ( is_array ( $value ) && isset ( $merged [$key] ) && is_array ( $merged [$key] ) ) { + $merged [$key] = amr_array_merge_recursive_distinct ( $merged [$key], $value ); + } + else { + $merged [$key] = $value; + } + } + return $merged; +} +*/ + +function amr_clean_link() { /* get cleaned up version of current url remove other parameters */ +global $page_id; +global $wp; + + //$link = add_query_arg( $wp->query_string, '', home_url( $wp->request ) ); this is now returning a pagename query parameter on top of the permalink, which breaks things + + $link = get_permalink(); + + /* not sure if we still need, but some folks with main eventlist on home page with other weird stuff on frontpage had problems before, so keeping for now */ + if (is_front_page() and (!empty($page_id))) { /* don't use if page_id = 0 v4.0.28*/ + // use page_id not $post->id, because if have a post on home page too $post gets overwritten + $link = add_query_arg(array('page_id'=>$page_id),$link); + } + + return ($link); +} + +function amr_allowed_html () { +// return ('



                      <

                      '); + return (array( + 'br' => array(), + 'em' => array(), + 'span' => array(), + 'h1' => array(), + 'h2' => array(), + 'h3' => array(), + 'h4' => array(), + 'h5' => array(), + 'h6' => array(), + 'strong' => array(), + 'p' => array(), + 'abbr' => array( + 'title' => array ()), + 'acronym' => array( + 'title' => array ()), + 'b' => array(), + 'blockquote' => array( + 'cite' => array ()), + 'cite' => array (), + 'code' => array(), + 'del' => array( + 'datetime' => array ()), + 'em' => array (), 'i' => array (), + 'q' => array( + 'cite' => array ()), + 'strike' => array(), + 'div' => array(), + 'a' => array('href' => array(),'title' => array()), // maybe add - need to see if quotes will work too + 'img' => array('src' => array(),'title' => array(),'alt' => array()) // not sure whether his is a good idea - rather use a pluggable format function. + )); + } + +function amr_make_sticky_url($url) { + + $page_id = url_to_postid($url); // doesnt work on homepage - returns 0; + + if ($page_id == 0) {// must be static homepage? so force finding the id + $page_id = get_option('page_on_front'); + } + + if (!$page_id) return false ; + else { + $sticky_url = add_query_arg('p',$page_id, get_bloginfo('url')); + //p safer than page_id - wp 'keeps' the p, but forces pageid to base home if is front page + return( $sticky_url) ; + } +} + +function amr_invalid_url() { +?>
                      '); + + if ($begin) { + + $begin = $begin + 1; + + $end = strpos($link, '<', $begin); + + $length = $end - $begin; + + $urlname = substr($link, $begin, $length); + + //$trimmed = (strlen($urlname) > 50 && preg_match('#^(http://|ftp://|www\.)#is', $urlname)) ? substr_replace($urlname, '.....', 30, -5) : $urlname; + //$trimmed = str_replace('http://','',$trimmed); + // 2016112016 Trim https as well + $trimmed = (strlen($urlname) > 50 && preg_match('#^(http://|https://|ftp://|www\.)#is', $urlname)) ? substr_replace($urlname, '.....', 30, -5) : $urlname; + $trimmed = str_replace(array('http://','https://'),'',$trimmed); + + $ret = str_replace('>' . $urlname . '<', '>' . $trimmed . '<', $ret); + } + } + return ($ret); +} + +if (!function_exists('amr_simpledropdown')) { + function amr_simpledropdown($name, $options, $selected) { +// + $html = ''; + return ($html); + } +} + +function amr_ngiyabonga() { + /* The credit text styling is designed to be as subtle as possible (small font size with leight weight text, and right aligned, and at the bottom) and fit in within your theme as much as possible by not styling colours etc */ + /* You may however style it more gently, and/or subtly to fit in within your theme. It is good manners to donate if you remove it */ + +global $amr_options; + if (empty($amr_options['ngiyabonga'])) + return ( + '' + .'' +// .''
+		.__('Events plugin by anmari','amr-ical-events-list')
+//		.'' + .'' + ); +} + +function amrical_mimic_meta_box($id, $title, $callback , $toggleable = true) { + global $screen_layout_columns; + + // $style = 'style="display:none;"'; + $h = (2 == $screen_layout_columns) ? ' has-right-sidebar' : ''; + echo '
                      '; + echo '
                      '; + echo '
                      '; + echo '
                      ' . "\n"; + echo '

                      '; + + echo "

                      ".$title."

                      \n"; + echo '
                      ' . "\n"; + call_user_func($callback); + echo "
                      "; + + } + +function amr_check_set_debug() { // obfuscate a bit so only admin or developer can run debug + if (isset($_GET["debug"]) ) /* for debug and support - calendar data is public anyway, so no danger*/ + define('ICAL_EVENTS_DEBUG', true); + else + define('ICAL_EVENTS_DEBUG', false); + } + +function amr_is_trying_to_help() { // obfuscate a bit so only admin or developer can run debug, &isme=mmdd sydney time + $tz = timezone_open('Australia/Sydney'); + $now = date_create('now',$tz ); + if (isset($_REQUEST['isme']) and ($_REQUEST['isme']=== $now->format('md'))) return true; + else return false; +} +?> \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/index.php b/wp-content/plugins/amr-ical-events-list/includes/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/timezones/WindowsZonesToTimeZones.txt b/wp-content/plugins/amr-ical-events-list/includes/timezones/WindowsZonesToTimeZones.txt new file mode 100644 index 0000000..40a59c0 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/timezones/WindowsZonesToTimeZones.txt @@ -0,0 +1,101 @@ +Found a windows zone, converted it to a timezone.'.$wz[$icstzid]; + //reset($wz[$icstzid]); // we don't know the territories, so just grab first one + //$first = current($wz[$icstzid]); + return ($wz[$icstzid]); + } + else return $icstzid; + + +} + + //echo amr_map_windows_to_timezone('Alaskan Standard Time'); //for test +add_filter ('amr-timezoneid-filter','amr_map_windows_to_timezone'); + diff --git a/wp-content/plugins/amr-ical-events-list/includes/timezones/index.php b/wp-content/plugins/amr-ical-events-list/includes/timezones/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/timezones/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/includes/timezones/windowszonemap.txt b/wp-content/plugins/amr-ical-events-list/includes/timezones/windowszonemap.txt new file mode 100644 index 0000000..2a16b2a --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/includes/timezones/windowszonemap.txt @@ -0,0 +1,47 @@ +windowsZones->mapTimezones->mapZone,0); + +foreach ($zones as $zone) { + $wz = (string) $zone['other']; + $terr = (string) $zone['territory']; + $tzmapping[$wz][$terr] = (string) $zone['type'];; +} +//var_dump($tzmapping); + +// produce code to set up the array for php to check values against +$phptext = '$terr) { + foreach ($terr as $t=>$tz) { + //$phptext .= '$wz["'.$z.'"]["'.$t.'"] = "'.$tz.'";'.PHP_EOL; // not using territories now - keep it simpler + $phptext .= '$wz["'.$z.'"] = "'.$tz.'";'.PHP_EOL; + break; + } +} + +$filename = 'WindowsZonesToTimeZones.txt'; +// ideally if in wordpress save somewhere one has access to +$result = file_put_contents ( $filename //string $filename +,$phptext //mixed $data [ +, LOCK_EX //int $flags = 0 [ +//, //resource $context ]] + ); + +if ($result) { + ?>

                      Windows zones to timezones mapping (characters) written to file:

                      Error writing to windows zones mapping file

                      +

                      If permissions prevent updating the file, you can run this script on any server and/or change the filename and then move it to the plugins timezones folder. + It only needs to be updated in the possibly unlikley event that windows or unicode.org change the mappings.

                      +

                      Full mapping loaded, but currently only using first territory of each, only the first was written. + +

                      \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/js/amr-ical.js b/wp-content/plugins/amr-ical-events-list/js/amr-ical.js new file mode 100644 index 0000000..1deca6b --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/js/amr-ical.js @@ -0,0 +1,48 @@ +jQuery(document).ready(function(){// Hide (Collapse) the toggle containers on load + + jQuery("tbody.toggle_container tr.event").hide(); + + //Slide up and down on click + jQuery("tbody.toggle_container .trigger").click(function(){ + jQuery(this).siblings("tr.event").show(); /*slideToggle("slow"); */ + }); + + //Slide up and down on click + jQuery("tbody.toggle_container .trigger").toggle(function(){ + jQuery(this).siblings("tr.event").show(); + },function () { + jQuery(this).siblings("tr.event").hide(); + }); + + //Switch the "Open" and "Close" state per click + jQuery("tbody.toggle_container .trigger").toggle(function(){ + jQuery(this).addClass("active"); + }, function () { + jQuery(this).removeClass("active"); + }); + + + //Slide up and down on click + jQuery("#expandall").click(function(){ + jQuery("#events_wrap tbody.toggle_container tr.event").show(); // just to test + + }); + //Slide up and down on click + jQuery("#hideall").click(function(){ + jQuery("#events_wrap tbody.toggle_container tr.event").hide(); // just to test + + }); + + jQuery("#expandall").toggle(function(){ + jQuery(this).addClass("active"); + }, function () { + jQuery(this).removeClass("active"); + }); + + jQuery("#hideall").toggle(function(){ + jQuery(this).addClass("active"); + }, function () { + jQuery(this).removeClass("active"); + }); + +}) diff --git a/wp-content/plugins/amr-ical-events-list/js/index.php b/wp-content/plugins/amr-ical-events-list/js/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/js/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-af_AF.po b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-af_AF.po new file mode 100644 index 0000000..84ee68d --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-af_AF.po @@ -0,0 +1,2465 @@ +msgid "" +msgstr "" +"Project-Id-Version: amr events calendar or lists with ical files v4.12\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-04-07 21:32+1000\n" +"PO-Revision-Date: 2014-09-20 11:31:35+0000\n" +"Last-Translator: Anna-marie \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: English\n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: C:/web/wpbeta/wp/wp-content/plugins/amr-ical-events-list\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "" + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "" + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "" + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr "" + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "" + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr "" + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "" + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "" + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "" + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "" + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "" + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "" + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "" + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "" + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "" + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "" + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "" + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "" + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "" + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "" + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "" + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "" + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "" + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "" + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "" + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "" + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "" + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "" + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "" + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "" + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "" + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "" + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "" + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-be_BY.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-be_BY.mo new file mode 100644 index 0000000000000000000000000000000000000000..26e8f898984527b60097f825f95f5ab1131bbbe5 GIT binary patch literal 1777 zcmZ{jO>Epm6vqcBh%OSP1ulT-Lsbq49CnuwDu)~(NvleY2+5``C*xPd~B~nhDxN_ivwAm)AlT9}C+SAMxA*7zTa6qWN^u+(!-XtxsiT(4NdGG%|JpTR6 ziSGq|ui$zO*Pm?QxA(*mU&rG<>=WQ`;EUkBoDaaKVV`_5+dl=q0Q;q!L*R3;N5RwJ zMuK-q9?_K<4M2fL=;9rD5KbwN=$f; zQeqNHB3E6Ef>!AIi}qll>8!ZTRujsTQdJ{2jNQN&v$7sZ)u3uFs>Ey%G{v0sWHqL0 z&70j$0ny4WiwQV>3Oyu{1q*`af4ixMRnJcik3!(M+-9_TeEV><#3BU$Kd{vi`HRV@>8ox0*zu?A&8Lt&No^=7|LD}Sosj0@xW0XCP`}D>* zmBtF!tc%i@krM}zO%rpMX{j{4B6MFLnCp65Z{h0c#H^ZiGGFUH7WZ_=tP*wrvqm~0 z-A#S>;JdFAp%V@f@aXGJ-O=4ae47`{npuU%HlhY+(zM~z*E^<-t*-8n-bGk1mE$zm z&4$2I507orW?`h(o&T;<--7>F`T&0k%IdQqm!-Gu{|VUByQm=H#&plD>wUAPcQR*4 zv&7rd@-AB|9; z`aUX7a268tEv|gRtc0r5bFh_`&^H_AX8NKr!o&B@Z}PD*vSwCwA5+K$vy+F{#sOSJ ldJs`5zGHI(L+EFtzQu<@XvQ{w(1c`JbC@O@hne+`_y->{+#3J@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-be_BY.po b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-be_BY.po new file mode 100644 index 0000000..b53843e --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-be_BY.po @@ -0,0 +1,2465 @@ +msgid "" +msgstr "" +"Project-Id-Version: amr events calendar or lists with ical files v4.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-07-12 16:06+0100\n" +"PO-Revision-Date: 2014-05-16 21:23:20+1000\n" +"Last-Translator: Fat Cow \n" +"Language-Team: Fat Cow \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: Belarusian\n" +"X-Poedit-Country: BELARUS\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: ..\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "определить формат даты и времени" + +#: includes/amr-ical-pretty-print.php:72 +#@ amr-ical-events-list +msgid " or " +msgstr "или" + +#: includes/amr-pluggable.php:846 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "добавить Ñобытие в google" + +#: includes/amr-ical-list-admin.php:251 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "ÑвойÑтва календарÑ" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "клаÑÑ" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "дата" + +#: includes/amr-ical-list-admin.php:342 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "определить группирование:" + +#: includes/amr-ical-list-admin.php:438 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "определить мкÑимальный:" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "опиÑание" + +#: includes/amr-pluggable.php:874 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "обновить календари" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "комната" + +#: includes/amr-ical-list-admin.php:413 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "выбрать ÐºÐ¾Ð¼Ð¿Ð°Ð½ÐµÐ½Ñ‚Ñ‹Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°:" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "показать в карте google" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "показать меÑта в картах google" + +#: includes/amr-pluggable.php:722 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "подпиÑатьÑÑ Ð½Ð° календарь" + +#: includes/amr-upcoming-events-widget.php:140 +#: includes/amr-upcoming-events-widget.php:280 +#@ amr-ical-events-list +msgid "Title" +msgstr "название" + +#: includes/amr-ical-list-admin.php:132 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "модифицировать" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:116 +#: includes/amr-upcoming-events-widget.php:186 +#: includes/amr-upcoming-events-widget.php:269 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "предÑтоÑщие ÑобытиÑ" + +#: includes/amr-ical-list-admin.php:125 +#@ amr-ical-events-list +msgid "Update" +msgstr "обновить" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "меÑто проведениÑ" + +#: includes/amr-pluggable.php:1006 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "Ð½Ð°Ð´ÐµÐ»Ñ %u" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "что" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "когда" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "где" + +#: includes/amr-ical-list-admin.php:712 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "iCa ÑпиÑок Ñобытий" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2360 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Column" +msgstr "" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:296 +#@ amr-ical-events-list +msgid "Order" +msgstr "" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Before" +msgstr "" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "After" +msgstr "" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "" + +#: includes/functions.php:287 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "" + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "" + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "" + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:33 +#: includes/amr-ical-pretty-print.php:41 +#: includes/amr-ical-pretty-print.php:57 +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgid " and " +msgstr "" + +#: includes/amr-ical-pretty-print.php:43 +#@ amr-ical-events-list +msgid "every " +msgstr "" + +#: includes/amr-ical-pretty-print.php:109 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:119 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:124 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "" + +#: includes/amr-ical-pretty-print.php:129 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:131 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:133 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:135 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:137 +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "" + +#: includes/amr-ical-pretty-print.php:149 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "" + +#: includes/amr-ical-pretty-print.php:150 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "" + +#: includes/amr-ical-pretty-print.php:151 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "" + +#: includes/amr-pluggable.php:828 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "" + +#: includes/amr-pluggable.php:830 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "" + +#: includes/amr-ical-events-list-main.php:304 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "" + +#: includes/amr-ical-events-list-main.php:326 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "" + +#: includes/amr-pluggable.php:870 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "" + +#: includes/amr-pluggable.php:875 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "" + +#: includes/amr-pluggable.php:877 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "" + +#: includes/amr-pluggable.php:886 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "" + +#: includes/amr-pluggable.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1755 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1760 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1765 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1781 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1800 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "" + +#: includes/amr-pluggable.php:1801 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "" + +#: includes/amr-pluggable.php:1442 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "" + +#: includes/amr-pluggable.php:689 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "" + +#: includes/amr-pluggable.php:692 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "No description available" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:703 +#: includes/amr-pluggable.php:713 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "" + +#: includes/amr-pluggable.php:720 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1362 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1406 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1407 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1536 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1569 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1742 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1966 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "" + +#: includes/amr-ical-list-admin.php:720 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "" + +#: includes/amr-ical-list-admin.php:740 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "List types" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2323 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2324 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "" + +#: includes/amr-ical-list-admin.php:956 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "" + +#: includes/amr-ical-list-admin.php:1026 +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "Name" +msgstr "" + +#: includes/amr-ical-list-admin.php:1030 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "" + +#: includes/amr-ical-list-admin.php:1060 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "" + +#: includes/amr-ical-list-admin.php:1062 +#@ amr-ical-events-list +msgid "Table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1077 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "" + +#: includes/amr-ical-list-admin.php:1078 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1089 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "" + +#: includes/amr-ical-list-admin.php:1091 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1093 +#: includes/amr-pluggable.php:812 +#@ amr-ical-events-list +msgid "More information" +msgstr "" + +#: includes/amr-ical-list-admin.php:441 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "" + +#: includes/amr-ical-list-admin.php:415 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "" + +#: includes/amr-ical-list-admin.php:277 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:280 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "" + +#: includes/amr-ical-list-admin.php:282 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "" + +#: includes/amr-ical-list-admin.php:286 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "" + +#: includes/amr-ical-list-admin.php:225 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2362 +#: includes/amr-ical-list-admin.php:27 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "" + +#: includes/amr-ical-list-admin.php:30 +#@ amr-ical-events-list +msgid "Support" +msgstr "" + +#: includes/amr-ical-list-admin.php:33 +#@ amr-ical-events-list +msgid "Videos" +msgstr "" + +#: includes/amr-ical-list-admin.php:36 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "" + +#: includes/amr-ical-list-admin.php:38 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:43 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:67 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:69 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:72 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "" + +#: includes/amr-ical-list-admin.php:74 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "" + +#: includes/amr-ical-list-admin.php:77 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "" + +#: includes/amr-ical-list-admin.php:84 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "" + +#: includes/amr-ical-list-admin.php:80 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:90 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:94 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:107 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "" + +#: includes/amr-ical-list-admin.php:113 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "" + +#: includes/amr-ical-list-admin.php:1127 +#@ amr-ical-events-list +msgid "General Options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1148 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1195 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "" + +#: includes/amr-ical-list-admin.php:1211 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "" + +#: includes/amr-ical-list-admin.php:1218 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1234 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "" + +#: includes/amr-ical-list-admin.php:1236 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "" + +#: includes/amr-ical-list-admin.php:1239 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "More info" +msgstr "" + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "" + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "" + +#: includes/amr-ical-list-admin.php:1245 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "" + +#: includes/amr-ical-list-admin.php:1255 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1257 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:1259 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1267 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1270 +#@ amr-ical-events-list +msgid "none" +msgstr "" + +#: includes/amr-ical-list-admin.php:1272 +#@ amr-ical-events-list +msgid "amr" +msgstr "" + +#: includes/amr-ical-list-admin.php:1274 +#@ amr-ical-events-list +msgid "wp" +msgstr "" + +#: includes/amr-ical-list-admin.php:1276 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "" + +#: includes/amr-ical-list-admin.php:184 +#: includes/amr-ical-list-admin.php:686 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "" + +#: includes/amr-ical-list-admin.php:690 +#@ amr-ical-events-list +msgid "List saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:673 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "" + +#: includes/amr-ical-list-admin.php:170 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "" + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "" + +#: includes/amr-ical-list-admin.php:123 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:130 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "" + +#: includes/amr-ical-list-admin.php:137 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:140 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "" + +#: includes/amr-import-ical.php:36 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "" + +#: includes/amr-import-ical.php:39 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "" + +#: includes/amr-import-ical.php:67 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "" + +#: includes/amr-import-ical.php:162 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "" + +#: includes/amr-import-ical.php:166 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "" + +#: includes/amr-import-ical.php:172 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:137 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:146 +#: includes/amr-upcoming-events-widget.php:286 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:153 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "" + +#: includes/amr-upcoming-events-widget.php:161 +#: includes/amr-upcoming-events-widget.php:293 +#@ amr-ical-events-list +msgid "External events only" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:169 +#: includes/amr-upcoming-events-widget.php:301 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:171 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:173 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:189 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:278 +#@ amr-ical-events-list +msgid "See more" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" + +#: includes/functions.php:199 +#: includes/functions.php:203 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "" + +#: includes/functions.php:243 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "" + +#: includes/functions.php:244 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "" + +#: includes/functions.php:246 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1379 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1828 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1830 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2331 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2358 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2361 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:155 +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:177 +#: includes/amr-ical-list-admin.php:631 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:186 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:203 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:210 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:292 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:346 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:346 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:358 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:367 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:367 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:386 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:386 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:481 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:494 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:531 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:574 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:580 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:622 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:626 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:636 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:661 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:663 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:1054 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1155 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1165 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1172 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1179 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1190 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1204 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1224 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1227 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1231 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1280 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1285 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1294 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1310 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1323 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1325 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1327 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1333 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1337 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1341 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1344 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1352 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1355 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-import-ical.php:158 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:164 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:579 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:619 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:648 +#: includes/amr-pluggable.php:655 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:649 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:1280 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#: includes/amr-pluggable.php:1384 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#: includes/amr-pluggable.php:1408 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1413 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:147 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/functions.php:27 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:248 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:253 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:255 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:256 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:303 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.6" +msgstr "" + +#: includes/amr-ical-pretty-print.php:142 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:144 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1382 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1392 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1398 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK.mo new file mode 100644 index 0000000000000000000000000000000000000000..5eb9ee3decbaf33b9a52a418ec2c7159c76aaa01 GIT binary patch literal 51910 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 Tar0BeO>)T={xSWRNWK0)UpBC+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK.po b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK.po new file mode 100644 index 0000000..09a924b --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK.po @@ -0,0 +1,2790 @@ +msgid "" +msgstr "" +"Project-Id-Version: AmR iCal Events List 4.23\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-08-14 09:19+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: WPbureauet/Georg Adamsen (aka GSAdev & Team Blogos) " +"\n" +"Language-Team: WPbureauet v. Georg Adamsen \n" +"Language: da_DK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2;plural=n != 1;\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;_n:1,2;__ngettext:1,2;__ngettext_noop:1,2;" +"_nc:4c,1,2;_nx:4c,1,2;_n_noop:1,2;_nx_noop:4c,1,2;_x:1,2c;_c;esc_html__;" +"esc_html_e;esc_html_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c\n" +"X-Poedit-Basepath: d:/wordpress/plugins/amr-ical-events-list\n" +"X-Generator: Poedit 1.8.4\n" +"X-Poedit-SearchPath-0: d:/wordpress/plugins/amr-ical-events-list\n" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/add-ons.php:46 +msgid "Add Ons for amr-events" +msgstr "Udvidelser til amr-events" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/add-ons.php:47 +msgid "Browse All Add-ons" +msgstr "Gennemse alle Udvidelser" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/add-ons.php:75 +msgid "" +"There was an error retrieving the add-ons list from the server. Please try " +"again later." +msgstr "" +"Der opstod en fejl under hentning af listen over Udvidelser fra serveren. " +"Prøv igen senere." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/plugin-updater.php:164 +#, php-format +msgid "" +"There is a new version of %1$s available. View version %3$s details." +msgstr "" +"Der er en ny version af %1$s tilgængelig. Vis detaljer for version %3$s." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/plugin-updater.php:171 +#, php-format +msgid "" +"There is a new version of %1$s available. View version %3$s details or update now." +msgstr "" +"Der er en ny version af %1$s tilgængelig. Vis detaljer for version %3$s eller opdatér nu." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/plugin-updater.php:313 +msgid "You do not have permission to install plugin updates" +msgstr "Du har ikke tilladelse til at installere plugin-opdateringer." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:23 +#, php-format +msgid "%s -license-key updated" +msgstr "%s-license-nøgle opdateret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:54 +#, php-format +msgid "No license key entered for %s" +msgstr "Ingen licensnøgle indtastet for %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:79 +msgid "Error activating" +msgstr "Fejl under aktivering" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:91 +#, php-format +msgid "%s auto updates activated" +msgstr "Autooopdatering af %s aktiveret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:94 +msgid "Error activating with that license key" +msgstr "Fejl under aktivering af denne licensnøgle" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:132 +msgid "Error deactivating" +msgstr "Fejl under aktivering" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:142 +#, php-format +msgid "%s auto updates deactivated" +msgstr "Autoopdatering af %s deaktiveret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:145 +msgid "License expired or error deactivating with that license key" +msgstr "Licens udløbet eller fejl under aktivering af denne licensnøgle" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:184 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:447 +msgid "Latest Version" +msgstr "Seneste version" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:188 +msgid "Plugin details" +msgstr "Plugindetaljer" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:195 +msgid "Or wait for wordpress to pick it up in the plugin update check" +msgstr "" +"Eller vent pÃ¥, at WordPress opdager det under tjek af pluginopdateringer" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:196 +msgid "Download" +msgstr "Download" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:201 +msgid "Version information not available for this license key and this site." +msgstr "" +"Versionsoplysninger ikke tilgængelig for denne licensnøgle og dette site." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:202 +msgid "Verify at:" +msgstr "Tjek pÃ¥:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:248 +#, php-format +msgid "%s at this site is inactive at remote host" +msgstr "%s pÃ¥ dette site er inaktiv pÃ¥ fjernvært (remote host)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:269 +msgid "Remote Status" +msgstr "Fjernstatus" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:270 +msgid "Sites / Limit" +msgstr "Sites / Begrænsning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:272 +msgid "Expiry Date" +msgstr "Udløbsdato" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:275 +msgid "Customer Email" +msgstr "Kunde-e-mail" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:318 +msgid "Plugin updates not activated" +msgstr "Pluginopdateringer ikke aktiveret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:324 +msgid "Activated" +msgstr "Aktiveret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:330 +msgid "Deactivated" +msgstr "Deaktiveret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:379 +msgid "add on plugin updates" +msgstr "Opdateringer for pluginudvidelser" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:381 +msgid "" +"Either you have no add-ons active or the versions you have cannot yet check " +"for updates." +msgstr "" +"Enten har du ingen aktive Udvidelser, eller de versioner, du har, kan ikke " +"tjekke for opdateringer." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:383 +#, php-format +msgid "Please check manually for updates at %s." +msgstr "Vær venlig at tjekke manuelt for opdateringer pÃ¥ %s." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:384 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:388 +msgid "See plugins" +msgstr "Se plugins" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:387 +#, php-format +msgid "Enter your license keys to activate automatic plugin updates from %s" +msgstr "" +"Angiv dine licensnøgler til at aktivere automatiske pluginopdateringer fra %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:395 +msgid "Plugin name" +msgstr "Pluginnavn" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:397 +msgid "License key" +msgstr "Licensnøgle" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:434 +msgid "Deactivate" +msgstr "Deaktivér" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:435 +msgid "Deactivate this site from automatic plugin update checking." +msgstr "Deaktivér automatisk tjek af pluginopdateringer pÃ¥ dette site." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:438 +msgid "Activate" +msgstr "Aktivér" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:439 +msgid "Activate automatic plugin update checking with valid license key." +msgstr "Aktivér automatisk tjek af pluginopdateringer med gyldig licensnøgle." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:444 +msgid "Check License" +msgstr "Tjek licens" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:445 +msgid "Check updates license details on plugin hosting system." +msgstr "" +"Tjek licensdetaljer for opdateringer pÃ¥ systemet, hvor pluginnet hostes." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:448 +msgid "Check for latest plugin version after entering your updates license key" +msgstr "" +"Tjek for den seneste version af pluginnet efter indtastning af din " +"opdateringslicensnøgle" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/admin/updates-page.php:460 +msgid "Save without activating" +msgstr "Gem uden at aktivere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/amr-ical-events-list.php:56 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/amr-ical-events-list.php:57 +msgid "Add ons" +msgstr "Udvidelser" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-calendar.php:48 +msgid "Go to events for this day only" +msgstr "GÃ¥ kun til denne dags begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:19 +msgid "Daily" +msgstr "Daglig" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:20 +msgid "Weekly" +msgstr "Ugentlig" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:21 +msgid "Monthly" +msgstr "MÃ¥nedlig" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:22 +msgid "Yearly" +msgstr "Ã…rlig" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:23 +msgid "Hourly" +msgstr "Hver time" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:24 +msgid "on certain dates" +msgstr "pÃ¥ visse dage" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:25 +msgid "day" +msgstr "dag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:26 +msgid "week" +msgstr "uge" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:27 +msgid "month" +msgstr "mÃ¥ned" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:28 +msgid "year" +msgstr "Ã¥r" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:29 +msgid "hour" +msgstr "time" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:167 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:298 +msgid "Column" +msgstr "Kolonne" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:168 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:301 +msgid "Order" +msgstr "Rækkefølge" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:169 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:302 +msgid "Before" +msgstr "Før" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:170 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:303 +msgid "After" +msgstr "Efter" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:227 +msgid "The actual url of the ics file being used" +msgstr "Den aktuelle URL for den ICS-fil, der bruges" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:228 +msgid "" +"A link to allow user to add the whole calendar to their google calendar." +msgstr "" +"Et link til at lade bruger tilføje hele kalenderen til sin Google-kalender." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:229 +msgid "A link to allow user to refetch an ics file" +msgstr "Et link, der tillader bruger at hente en ICS-fil igen" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:230 +msgid "The time the ics file was last modified" +msgstr "Tidspunktet, ICS-filen senest blev ændret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:232 +msgid "WordPress post title or ICS SUMMARY" +msgstr "WordPress-indlægstitel eller ICS-resumé" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:233 +msgid "WordPress content or ICS description" +msgstr "WordPress-indhold eller ICS-beskrivelse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:234 +msgid "WordPress excerpt" +msgstr "WordPress-uddrag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:235 +msgid "WordPress post thumbnail" +msgstr "WordPress-indlægsminiature" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:236 +msgid "Address" +msgstr "Adresse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:237 +msgid "Link to map" +msgstr "Link til kort" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:238 +msgid "Link to add event to a google calendar" +msgstr "Link til at tilføje begivenhed til en Google Kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:239 +msgid "Link to single event ics file" +msgstr "Link til ICS-fil med enkeltbegivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:240 +msgid "Link to recurring event series ics file" +msgstr "Link til ICS-fil med gentagne begivenhedsrækker" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:241 +msgid "The latitude and longitude" +msgstr "Bredde- og højdegrad" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:242 +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "Links til angivne Vedhæftede filer (ICS)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:244 +msgid "WordPress or ics file categories " +msgstr "WordPress- eller ICS-filkategorier" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:245 +msgid "ics class" +msgstr "ICS-klasse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:246 +msgid "ics comment" +msgstr "ICS-kommentar" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:248 +msgid "ics event priority" +msgstr "ICS-begivenhedsprioritet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:250 +msgid "ics event status" +msgstr "ICS-begivenhedsstatus" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:251 +msgid "The date of instance of a repeating date, or the event date" +msgstr "Dato for begivenhed i tilbagevendende begivenhed eller for begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:252 +msgid "The time of instance of a repeating date, or the event date" +msgstr "" +"Tidspunkt for begivenhed i tilbagevendende begivenhed eller for begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:253 +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" +"Datoen, en enkeltbegivenhed ender. Tom, hvis samme som begivenhedsdatoen " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:254 +msgid "The time an event instance ends. " +msgstr "Tidspunktet, en enkeltbegivenhed i gentagen begivenhed ender." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:255 +msgid "The original or first event date of a recurring series" +msgstr "" +"Datoen for den oprindelige eller første begivenhed i en gentagen " +"begivenhedsserie" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:257 +msgid "The original or first event's end date of a recurring series" +msgstr "" +"Slutdato for den oprindelige eller første begivenhed i en tilbagevende serie" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:258 +msgid "The due date of a task." +msgstr "En opgaves termin" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:259 +msgid "The duration of an event." +msgstr "Begivenhedens længde" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:260 +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "Siger \"hele dagen\" (oversat), hvis begivenheden tager hele dagen." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:261 +msgid "If a task is completed." +msgstr "Hvis en opgave er udført." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:262 +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "Vis optaget (oversat), hvis fri-optaget-komponenten anvendes." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:268 +msgid "The contact person if available." +msgstr "Eventuel kontaktperson." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:269 +msgid "The author of the event." +msgstr "Ophavsmand til begivenheden." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:270 +msgid "Users who are attending." +msgstr "Brugere, der deltager." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:271 +msgid "Requires add-on for more than basics." +msgstr "Kræver Udvidelse, hvis du ønsker mere end de grundlæggende funktioner." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:272 +msgid "Totals of attending by participation status" +msgstr "Deltagere i alt efter status for deltagelse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:273 +msgid "The unique id of a recurrence instance or exception." +msgstr "" +"Unik id for en enkeltbegivenhed i tilbagevende begivenhed eller for en " +"undtagelse." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:275 +msgid "" +"The events url as provided by ics file, or the wordpress event permalink." +msgstr "" +"Begivenhedens URL som angivet af ICS-filen, eller WordPress-permalink for " +"begivenheden." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:276 +msgid "The unique identifier of the event." +msgstr "Unik id for begivenheden." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:277 +msgid "Dates excluded from the recurring series" +msgstr "Datoer udeladt fra tilbagevendende serie" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:278 +msgid "Exclusion rule - no longer in spec" +msgstr "Udeladelsesregel – ikke længere med i specifikationen" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:279 +msgid "Individual dates on which event is to be repeated" +msgstr "Enkeltdatoer, som begivenheden skal gentages pÃ¥" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:280 +msgid "The rule for the recurrence of the event." +msgstr "Regel for begivenhedens gentagelse." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:281 +msgid "Alarm action." +msgstr "Alarmhandling." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:282 +msgid "Alarm repeat." +msgstr "Gentagelse af alarm." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:283 +msgid "Alarm trigger." +msgstr "Udløser af alarm." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:284 +msgid "Date event created." +msgstr "Begivenhedsdato oprettet." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:285 +msgid "Date event published." +msgstr "Begivenhedsdato udgivet." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:286 +msgid "Modification level of event." +msgstr "Begivenhedens ændringsniveau." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:287 +msgid "Date event last modified." +msgstr "Begivenhedsdato sidst ændret." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:288 +msgid "Events in an ics file" +msgstr "Begivenheder i en ICS-fil" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:289 +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" +"Optegnelser i en ICS-fil, som angiver tidsrum, hvor man er optaget eller " +"tilgængelig" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:290 +msgid "Todo Task Items in an ics file" +msgstr "GøremÃ¥l i en opgaveliste i en ICS-fil" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:291 +msgid "Journal notes in an ics file - no date or time" +msgstr "Dagbogsnoter i en ICS-fil – ingen dato eller klokkeslæt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:300 +msgid "" +"Add register button. Registration settings can be set as global defaults or " +"per event." +msgstr "" +"Tilføj registreringsknap. Indstillinger for registrering kan sættes som " +"globale standarder eller for hvert enkelt event." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:300 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:301 +msgid "Requires add-on." +msgstr "Kræver Udvidelse." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:301 +msgid "Links to indicate if attending." +msgstr "Links til at angive, om man deltager." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:397 +msgid "No events found within criteria" +msgstr "Ingen begivenheder opfyldte kriterierne" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:398 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1348 +msgid "Look for more" +msgstr "Se efter mere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:399 +msgid "Look for previous" +msgstr "Se efter tidligere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:400 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:1173 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-fields-admin.php:107 +msgid "Reset" +msgstr "Nulstil" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:401 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:1180 +msgid "Busy" +msgstr "Optaget" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:402 +msgid "Year" +msgstr "Ã…r" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:403 +msgid "Quarter" +msgstr "Kvartal" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:404 +msgid "Astronomical Season" +msgstr "Astronomisk Ã¥rstid" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:405 +msgid "Traditional Season" +msgstr "Traditionel Ã¥rstid" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:406 +msgid "Western Zodiac" +msgstr "Vestlig stjernekreds" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:407 +msgid "Month" +msgstr "MÃ¥ned" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:408 +msgid "Week" +msgstr "Uge" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:409 +msgid "Day" +msgstr "Dag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:423 +msgid "Default" +msgstr "Standard" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:424 +msgid "" +"A default calendar list. This one set to tables with lists in the cells. " +"Usually needs the css file enabled. If you configure it, I suggest changing " +"this description to aid your memory of how/why it is configured the way that " +"it is. " +msgstr "" +"En standard-kalenderliste. Denne er sat op med tabeller med lister i celler. " +"Kræver normalt, at CSS-filen er aktiveret. Hvis du tilpasser den, foreslÃ¥r " +"jeg, at du ændrer denne beskrivelse som et praj om, hvordan/hvorfor den er " +"tilpasset, som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:448 +msgid "When" +msgstr "HvornÃ¥r" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:449 +msgid "What" +msgstr "Hvad" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:450 +msgid "Where" +msgstr "Hvor" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:497 +msgid "More info: " +msgstr "Flere oplysninger: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:511 +msgid " to" +msgstr " til" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:601 +msgid "On Tour" +msgstr "PÃ¥ turné" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:602 +msgid "" +"Default setting uses the original table with lists in the cells. It is " +"grouped by month. If you configure it, I suggest changing this description " +"to aid your memory of how/why it is configured the way that it is. " +msgstr "" +"Standardindstillingen bruger den oprindelige tabel med lister i cellerne. " +"Den er grupperet efter mÃ¥neder. Hvis du tilpasser den, foreslÃ¥r jeg, at du " +"ændrer denne beskrivelse som et praj om, hvordan/hvorfor den er tilpasset, " +"som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:610 +msgid "Venue" +msgstr "Sted" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:611 +msgid "Description" +msgstr "Beskrivelse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:615 +msgid "Timetable" +msgstr "Tidsplan" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:616 +msgid "" +"Default setting uses the original table with lists in the cells. It is " +"grouped by day. If you configure it, I suggest changing this description to " +"aid your memory of how/why it is configured the way that it is. " +msgstr "" +"Standardindstillingen bruger den oprindelige tabel med lister i cellerne. " +"Den er grupperet efter dage. Hvis du tilpasser den, foreslÃ¥r jeg, at du " +"ændrer denne beskrivelse som et praj om, hvordan/hvorfor den er tilpasset, " +"som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:627 +msgid "Date" +msgstr "Dato" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:628 +msgid "Class" +msgstr "Klasse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:629 +msgid "Room" +msgstr "Rum" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:634 +msgid "Widget" +msgstr "Widget" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:635 +msgid "" +"The new default setting for widgets uses lists for the table rows. Good for " +"themes that cannot cope with tables in the sidebar. No grouping. If you " +"configure it, I suggest changing this description to aid your memory of how/" +"why it is configured the way that it is. " +msgstr "" +"Den nye standardindstilling for widgets bruger lister som tabelrækker. SÃ¥ " +"fungerer det ogsÃ¥ med temaer, som ikke kan vise tabeller i sidepanelerne. " +"Ingen gruppering. Hvis du tilpasser den, foreslÃ¥r jeg, at du ændrer denne " +"beskrivelse som et praj om, hvordan/hvorfor den er tilpasset, som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:656 +msgid "HTML5 Exp 1" +msgstr "HTML5 Eks. 1" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:657 +msgid "" +"Table style aiming to use html5 tags, but still within a table structure to " +"allow columns. One cannot have two levels of grouping with this option as " +"tbody cannot be nested. If you configure it, I suggest changing this " +"description to aid your memory of how/why it is configured the way that it " +"is. " +msgstr "" +"En tabel-style beregnet pÃ¥ brug af HTML5-tags, men stadig i en " +"tabelstruktur, sÃ¥ der kan bruges kolonner. Man kan ikke have to " +"grupperingsniveauer med denne opsætning, fordi tbody ikke kan anvendes inden " +"i en tbody-struktur. Hvis du tilpasser den, foreslÃ¥r jeg, at du ændrer denne " +"beskrivelse som et praj om, hvordan/hvorfor den er tilpasset, som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:688 +msgid "HTML5 Exp 2" +msgstr "HTML5 Eks. 2" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:689 +msgid "" +"An HTML5 test option that tries to be leaner. You can have two level of " +"grouping with this option. If you configure it, I suggest changing this " +"description to aid your memory of how/why it is configured the way that it " +"is. " +msgstr "" +"En HTML5-testopsætning, som forsøger at være enklere. Man kan have to " +"grupperingsniveauer med denne indstilling. Hvis du tilpasser den, foreslÃ¥r " +"jeg, at du ændrer denne beskrivelse som et praj om, hvordan/hvorfor den er " +"tilpasset, som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:733 +msgid "EventInfo" +msgstr "Begivenhedsinfo" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:734 +msgid "" +"For displaying additional event info on posts created as events. The summary " +"and description are switched off as these are the post title and the post " +"content. Calendar properties and groupings are also not relevant. If you " +"configure it, I suggest changing this description to aid your memory of how/" +"why it is configured the way that it is. " +msgstr "" +"Til visning af yderligere begivenhedsinformationer pÃ¥ indlæg oprettet som " +"begivenheder. Resumé og beskrivelse vises ikke, eftersom de bruges som " +"indlægstitel og indlægsindhold. Kalenderegenskaber og grupperinger er heller " +"ikke relevante. Hvis du tilpasser den, foreslÃ¥r jeg, at du ændrer denne " +"beskrivelse som et praj om, hvordan/hvorfor den er tilpasset, som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:765 +msgid "Small-Calendar" +msgstr "Lille kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:766 +msgid "" +"The new default setting for calendar widgets. No grouping, No headings. If " +"you configure it, I suggest changing this description to aid your memory of " +"how/why it is configured the way that it is. " +msgstr "" +"Den nye standardopsætning for kalenderwidgets. Ingen gruppering, ingen " +"overskrifter. Hvis du tilpasser den, foreslÃ¥r jeg, at du ændrer denne " +"beskrivelse som et praj om, hvordan/hvorfor den er tilpasset, som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:794 +msgid "Large-Calendar" +msgstr "Stor kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:795 +msgid "" +"The new default setting for a large monthly calendar. No grouping, No " +"headings. If you configure it, I suggest changing this description to aid " +"your memory of how/why it is configured the way that it is." +msgstr "" +"De nye standardindstillinger for en stor mÃ¥nedskalender. Ingen grupperinger, " +"ingen overskrifter. Hvis du tilpasser dem, foreslÃ¥r jeg, at du ændrer denne " +"beskrivelse som et praj om, hvordan/hvorfor de er tilpasset, som de er." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:824 +msgid "Testing" +msgstr "Test" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:825 +msgid "" +"A test option with lots of fields switched on. It has 2 levels of grouping - " +"this is fine so long as the html in use can be nested. If you configure it, " +"I suggest changing this description to aid your memory of how/why it is " +"configured the way that it is. " +msgstr "" +"En testopsætning med et stort antal felter slÃ¥et til. Den har to " +"grupperingsniveauer – det er fint, sÃ¥ længe der bruges HTML, der kan " +"indlejres. Hvis du tilpasser den, foreslÃ¥r jeg, at du ændrer denne " +"beskrivelse som et praj om, hvordan/hvorfor den er tilpasset, som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:875 +msgid "Weekly Horizontal" +msgstr "Ugentligt, horisontalt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:877 +msgid "" +"Like the large calendar, but different - grouped by week and the weeks " +"continue across months. Really 2 weeks should be displayed a time." +msgstr "" +"Som den store kalender, men anderledes – grupperet efter uger, og " +"ugerne fortsætter over mÃ¥nedsskifter. Mindst to uger bør vises ad gangen!" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:878 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:910 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:954 +msgid "" +" If you configure it, I suggest changing this description to aid your memory " +"of how/why it is configured the way that it is. " +msgstr "" +" Hvis du tilpasser den, foreslÃ¥r jeg, at du ændrer denne beskrivelse som et " +"praj om, hvordan/hvorfor den er tilpasset, som den er. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:907 +msgid "Weekly Vertical" +msgstr "Ugentligt, vertikalt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:909 +msgid "" +"Grouped by day, but only showing 1 week. 3 columns, with excerpt not full " +"description. No icons." +msgstr "" +"Grupperet efter dage, men viser kun én uge. Tre kolonner, med uddrag, ikke " +"fuld beskrivelse. Ingen ikoner." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:951 +msgid "Event Master" +msgstr "Begivenhedsmaster" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:953 +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "Grupperet efter kategori; ikke til brug med gentagelser" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:1118 +msgid "Resetting options..." +msgstr "Nulstiller indstillinger ..." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:1121 +msgid "Options Deleted..." +msgstr "Indstillinger slettet ..." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:1122 +msgid "Option was not saved before or error deleting option..." +msgstr "" +"Indstilling blev ikke gemt før, eller fejl i forsøg pÃ¥ slette indstilling " +"…" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:1153 +msgid " Converting option key to lowercase" +msgstr " Konverterer nøgler i Indstillinger til smÃ¥ bogstaver" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-config.php:1172 +msgid "Look for Previous" +msgstr "Se efter tidligere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:8 +msgid "Minimum Php version " +msgstr "Minimum PHP-version " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:12 +msgid "" +"The DateTime " +"Class must be enabled on your system for this plugin to work. They may " +"need to be enabled at compile time. The class should exist by default in " +"PHP version 5.2." +msgstr "" +"DateTime Class skal være aktiveret pÃ¥ dit system, hvis dette plugin skal virker. MÃ¥ske " +"skal klassen være aktiveret, nÃ¥r PHP kompileres. Klassen bør som standard " +"være med i PHP-version 5.2.should exist by default in PHP version 5.2." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:52 +#, php-format +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "%s." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:59 +#, php-format +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "%s." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:62 +#, php-format +msgctxt " the second " +msgid "%s nd" +msgstr "%s." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:65 +#, php-format +msgctxt " the third " +msgid "%s rd" +msgstr "%s." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:68 +#, php-format +msgctxt " the nth " +msgid "%s th" +msgstr "%s." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:76 +msgid "the first" +msgstr "den første" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:78 +msgid "every" +msgstr "alle" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:80 +msgid "the last" +msgstr "den sidste" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:82 +#, php-format +msgid "the %s last" +msgstr "den %s sidste" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:84 +#, php-format +msgid "the %s" +msgstr "den %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:120 +msgid "Monday" +msgstr "Mandag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:122 +msgid "Tuesday" +msgstr "Tirsdag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:124 +msgid "Wednesday" +msgstr "Onsdag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:126 +msgid "Thursday" +msgstr "Torsdag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:128 +msgid "Friday" +msgstr "Fredag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:130 +msgid "Saturday" +msgstr "Lørdag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:132 +msgid "Sunday" +msgstr "Søndag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:304 +#, php-format +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "" +"Fejl i oprettelse af brugerdefineret CSS-mappe %s. Tjek venligst rettigheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:326 +msgid "Could not copy file." +msgstr "Kunne ikke kopiere fil." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1418 +#, php-format +msgid "Unable to load or cache ical calendar %s" +msgstr "Kan ikke indlæse eller cache iCa-kalenderen %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1426 +#, php-format +msgid "Error finding or parsing ical calendar %s" +msgstr "Fejl i forsøg pÃ¥ at finde eller parse iCa-kalenderen %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1462 +msgid "This feature requires the plugin amr-events" +msgstr "Den ønskede funktion kræver pluginnet amr-events" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1463 +msgid "Get it here" +msgstr "FÃ¥ det her" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1594 +msgid "No url entered - did you want events from posts ?" +msgstr "Ingen URL indtastet – ønkede du begivenheder fra indlæg?" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1627 +msgid "No ical components requested for display" +msgstr "Ingen visningsanmodninger for iCal-komponenter" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1786 +#, php-format +msgid "Invalid Ical URL %s" +msgstr "Ugyldig iCal-URL %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1870 +#, php-format +msgid "" +"System error - event list type %s missing - please inform administrator." +msgstr "" +"Systemfejl - begivenhedslistetypen %s mangler - informér venligst " +"administratoren." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:1872 +msgid "Now using an available list type to list events" +msgstr "" +"Bruger nu en tilgængelig listetype til at lave liste med begivenhederne" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2009 +msgid "Date could not be converted to date object." +msgstr "Dato kunne ikke konverteres til datoobjekt." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2010 +msgid "Check date and global timezone." +msgstr "Kontrollér dato og global tidszone." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2017 +msgid "Invalid Start Date" +msgstr "Ugyldig startdato" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2089 +msgid "" +"Error: Start data of range is not a date object. Please advise administrator" +msgstr "" +"Fejl: Startdato i interval er ikke et datoobjekt. Giv venligst administrator " +"besked." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2366 +msgid "Uncaught exception: " +msgstr "Ubehandlet undtagelse: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2367 +msgid "" +"

                      An error in the input data may prevent correct display of this " +"page. Please advise the administrator as soon as possible." +msgstr "" +"

                      En fejl i input-data kan forhindre en korrekt visning af denne " +"side. Orientér venligst administrator sÃ¥ hurtigt som muligt." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2374 +msgid "" +"Your existing saved list types have been converted. If you wish to return " +"to the earlier version of the plugin, you will have to reset the list types " +"and reapply your changes. Or use your DB backup to set the amr-ical-events-" +"list option back to previous version. You do have regular backups right? " +msgstr "" +"Dine eksisterende gemte listetyper er blevet konverteret. Hvis du ønsker at " +"vende tilbage til den tidligere version af pluginnet, skal du nulstille " +"listetyperne og indtaste dine ændringer igen. Eller bruge din " +"databasesikkerhedskopi til at føre amr-ical-events-list-indstillingerne " +"tilbage til den tidligere version. Du tager regelmæssige sikkerhedskopier, " +"ikke?" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2402 +msgid "General listing Settings" +msgstr "Generelle listeindstillinger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2404 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:16 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-plugin-form-html.php:48 +msgid "Settings" +msgstr "Opsætning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2405 +msgid "List Type Settings" +msgstr "Listtype-indstillinger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-events-list-main.php:2406 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:28 +msgid "Documentation" +msgstr "Dokumentation" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-fields-admin.php:70 +msgid "Choose event and calendar fields " +msgstr "Vælg begivenheds- og kalenderfelter" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-fields-admin.php:81 +msgid "Resetting...." +msgstr "Nulstiller …" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-fields-admin.php:92 +msgid "Choose a subset of fields to work with:" +msgstr "Vælg en undergruppe af felter at arbejde med:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-fields-admin.php:136 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:187 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:698 +msgid "Saving...." +msgstr "Gemmer ..." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-groupings.php:6 +msgid "Show all" +msgstr "Vis alle" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-groupings.php:7 +msgid "Hide all" +msgstr "Skjul alle" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:31 +msgid "Support" +msgstr "Support" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:38 +msgid "Rate or Review" +msgstr "Bedøm eller Anmeld" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:40 +msgid "Plugin feed" +msgstr "Plugin-feed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:45 +msgid "Forum feed" +msgstr "Forumfeed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:69 +#, php-format +msgid "Your timezone db version is: %s" +msgstr "Versionen af din tidszonedatabase er: %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:71 +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Kan ikke finde version pÃ¥ tidszonedatabasen i PHP < 5.3." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:74 +msgid "Php timezonedb versions" +msgstr "Versioner af PHP-tidszonedatabaser" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:76 +msgid "Info on what changes are in which timezonedb version" +msgstr "" +"Oplysninger om, hvilke ændringer der er foretaget i hvilken " +"tidszonedatabaseversioner" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:79 +msgid "No global timezone - is there a problem here? " +msgstr "Ingen global tidszone – er der et problem her? " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:82 +msgid "Go to settings" +msgstr "GÃ¥ til opsætning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:86 +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Du bruger den \"gamle\" gmt_offset-indstilling " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:87 +msgid "Consider changing to the more accurate timezone setting" +msgstr "Overvej at skifte til den mere præcise tidszoneindstilling" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:92 +msgid "The plugin thinks your timezone is: " +msgstr "Pluginnet har bestemt din tidszone som: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:96 +msgid "The current UTC offset for that timezone is: " +msgstr "Den aktuelle UTC-forskel for denne tidszone er: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:109 +#, php-format +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Skifter til %s den %s. GMT-tidsforskel: %d" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:115 +msgid "Current time (unlocalised): " +msgstr "Aktuel tid (ikke-lokaliseret): " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:123 +msgid "Reset all listing options" +msgstr "Nulstil alle indstillinger for lister" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:128 +msgid "Save the settings" +msgstr "Gem opsætning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:130 +msgid "Update" +msgstr "Opdatér" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:135 +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Afinstallér pluginnet og slet indstillingerne fra databasen." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:137 +msgid "Uninstall" +msgstr "Afinstallér" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:142 +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "" +"Advarsel: Dette vil nulstille alle indstillinger for lister med det " +"samme." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:158 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1150 +msgid "Manage Event List Types" +msgstr "HÃ¥ndtér iCal-begivenhedstyper" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:173 +msgid "Configure event list type: " +msgstr "Konfigurér begivenhedslistetype: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:180 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:643 +msgid "Preview the list using a calendar page." +msgstr "Preview listen pÃ¥ en kalenderside." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:181 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:644 +msgid "Preview" +msgstr "Preview" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:189 +msgid "Lists saved" +msgstr "Lister gemt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:190 +msgid "No change to options or unexpected error in saving" +msgstr "Ingen ændringer i indstillinger eller en uventet fejl under gemning" + +# TJEK +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:206 +msgid "Check for lists to delete" +msgstr "Tjek for lister, der skal slettes" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:213 +#, php-format +msgid "List %s will be deleted" +msgstr "Liste %s vil blive slettet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:228 +msgid "Column Headings:" +msgstr "Kolonneoverskrifter:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:254 +msgid "Calendar properties" +msgstr "Egenskaber for kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:282 +msgid "Specify fields to show:" +msgstr "Vælg felter at vise:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:285 +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Bemærk: Et 0 (nul) i kolonnen betyder, at feltet ikke skal vises." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:287 +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "Felter med store bogstaver er defineret i iCal-specifikationen." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:291 +msgid "" +"Lowercase fields are additional fields added by this plugin and derived from " +"the iCal fields for your convenience." +msgstr "" +"Felter med smÃ¥ bogstaver er ekstra felter tilføjet af dette plugin og udledt " +"af iCal-felterne for at gøre det lettere for dig." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:292 +msgid "" +"Fields show if \"column\" > 0 and if there is data available in your event " +"or ics file." +msgstr "" +"Felter vises, hvis \"kolonne\" > 0, og hvis der er tilgængelige data i din " +"begivenhed eller ICS-fil." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:297 +msgid "Field" +msgstr "Felt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:299 +msgid "(0 to hide)" +msgstr "(0 for at skjule)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:354 +msgid "Define grouping:" +msgstr "Definér grupperinger:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:358 +msgid "Possible Groupings" +msgstr "Mulige grupperinger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:358 +msgid "Level" +msgstr "Niveau" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:370 +msgid "No grouping" +msgstr "Ingen grupperinger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:379 +msgid "Taxonomies" +msgstr "Taksonomier" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:379 +msgid "(Requires amr-events)" +msgstr "(Kræver amr-events)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:398 +msgid "Date based" +msgstr "Datobaseret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:398 +msgid "(See also date and time formats)" +msgstr "(Se ogsÃ¥ formater for dato og klokkeslæt)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:425 +msgid "Select components to show:" +msgstr "Vælg komponenter at vise:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:427 +msgid "Wikipedia entry describing components" +msgstr "Wikipediaopslag, der beskriver komponenterne" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:450 +msgid "Define maximums:" +msgstr "Definér maksimummer:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:453 +msgid "Note cache times are in hours" +msgstr "Bemærk, at cachetider er i timer" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:493 +msgid "Configure another list type: " +msgstr "Konfigurér ny listetype: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:506 +msgid "Return to manage list types" +msgstr "Tilbage til hÃ¥ndtering af listetyper" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:543 +msgid "Please use numbers > 1" +msgstr "Brug venligst tal > 1" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:586 +#, php-format +msgid "Imported settings for list %s invalid - not saved" +msgstr "" +"Importerede indstillinger for listen %s er ugyldige – blev ikke gemt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:592 +#, php-format +msgid "List %s will be saved with imported data" +msgstr "Listen %s vil blive gemt med importerede data" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:634 +msgid "Configure: " +msgstr "Konfigurér: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:638 +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "Klik for at vælge felter, kolonner og andre parametre." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:639 +msgid "Configure" +msgstr "Konfigurér" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:648 +msgid "Calendar Page URL for previews must be entered above" +msgstr "URL for kalenderside til previews skal indtastes ovenfor" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:649 +msgid "n/a" +msgstr " – " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:673 +msgid "Enter a list number to start a list type with new default settings." +msgstr "" +"Indtast nummer pÃ¥ liste for at begynde pÃ¥ en listetype med nye " +"standardindstillinger." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:675 +msgid "" +"After that, cut and paste from the list type closest to what you want to get " +"you started" +msgstr "" +"Derefter skal du kopiere og indsætte fra listetypen, der er tættest pÃ¥, hvad " +"du ønsker, for at komme i gang" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:685 +msgid "iCal Events List " +msgstr "iCal Events List" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:702 +msgid "List saved" +msgstr "Liste gemt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:724 +msgid "iCal Events List" +msgstr "iCal Events List" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:732 +msgid "Listing Events" +msgstr "Laver liste med begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:752 +msgid "iCal Events Lists" +msgstr "Liste med iCal-begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:753 +msgid "List types" +msgstr "Listetyper" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:758 +msgid "iCal Fields" +msgstr "iCal-felter" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:759 +msgid "Fields" +msgstr "Felter" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:976 +msgid "Error in form - calprop array not found" +msgstr "Fejl i formular – calprop-arrayet ikke fundet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1046 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1358 +msgid "Name" +msgstr "Navn" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1050 +msgid "Internal Description" +msgstr "Intern beskrivelse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1074 +msgid "Other:" +msgstr "Andet:" + +# tjekkes +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1080 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1359 +msgid "List HTML Style" +msgstr "HTML-style for liste" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1082 +msgid "Table" +msgstr "Tabel" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1083 +msgid "HTML5 in table" +msgstr "HTML5 i tabel" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1084 +msgid "HTML5 clean and lean" +msgstr "HTML5 enkelt og simpelt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1085 +msgid "Custom - file required" +msgstr "Egen - fil pÃ¥krævet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1086 +msgid "Breaks for rows!" +msgstr "Rækker med ny linje!" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1087 +msgid "Small box calendar" +msgstr "Lille box-kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1088 +msgid "Large box calendar" +msgstr "Stor box-kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1089 +msgid "Weeks calendar" +msgstr "Ugekalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1090 +msgid "Lists for rows" +msgstr "Rækker som lister" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1090 +msgid " *Avoid - deprecated" +msgstr " *UndgÃ¥ – frarÃ¥des pga. forældelse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1091 +msgid "Table with lists in cells (original)" +msgstr "Tabel med lister i celler (oprindelig)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1097 +#, php-format +msgid "Custom HTML style file at %s..." +msgstr "Fil med egen HTML-style i %s..." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1098 +msgid " (Html and some php knowledge required)" +msgstr " (HTML og en vis viden om PHP pÃ¥krævet)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1109 +msgid "Default Event URL" +msgstr "Standard-URL for begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1111 +msgid " (For ics files in widget. External, or calendar page.)" +msgstr " (Vedr. ICS-filer i widget. Ekstern, eller kalenderside.)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1113 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:764 +msgid "More information" +msgstr "Flere oplysninger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1147 +msgid "General Options" +msgstr "Generelle indstillinger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1148 +msgid "Styling and Images" +msgstr "Styling og billeder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1149 +msgid "Advanced" +msgstr "Avanceret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1168 +msgid "Message if no events found: " +msgstr "Besked, hvis ingen begivenheder fundet: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1175 +msgid "Look for more events message: " +msgstr "Se efter flere begivenheder-besked: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1185 +msgid "Look for previous events message: " +msgstr "Se efter tidligere begivenheder-besked: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1192 +msgid "Reset events message: " +msgstr "Nulstil begivenheder-besked: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1199 +msgid "Free busy text: " +msgstr "Fri/optaget-tekst: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1200 +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr " – erstatter resumeteksten (Optaget) i en VFREEBUSY-komponent." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1210 +msgid "Use human time like midday, midnight" +msgstr "Brug menneskelig tid som middag og midnat" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1215 +msgid "Do not give credit to the author" +msgstr "Giv ikke kreditering til udvikler" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1224 +msgid "Use javascript to collapse event groupings" +msgstr "Brug JavaScript til at skjule begivenhedsgrupperinger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1231 +msgid "Use my theme css, not plugin css" +msgstr "Brug mit temas CSS, ikke pluginnets CSS" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1238 +msgid " No images (tick for text only)" +msgstr " Ingen billeder (markér for kun tekst)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1244 +msgid "Image icon size:" +msgstr "Størrelse pÃ¥ ikonbillede:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1247 +msgid "16" +msgstr "16" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1251 +msgid "32" +msgstr "32" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1254 +msgid "" +"The css provided works with the default twenty-ten theme and similar " +"themes. Your theme may be different." +msgstr "" +"CSS-filen, som er inkluderet, fungerer med Twenty Ten-temaet og lignende " +"temaer. Dit tema kan ske at være anderledes." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1256 +msgid "" +"To edit the file, download the custom one added to your uploads folder: " +"uploads/css." +msgstr "" +"For at redigere filen skal du downloade den, der er tilføjet til din uploads-" +"mappe: uploads/css (hvis ellers pluginnet har rettigheder til det. o.a.)." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1257 +msgid "" +"Edit it and then re-upload to that same folder. Then select it in the box " +"below." +msgstr "" +"Redigér det og upload det til den samme mappe. Vælg sÃ¥ filen i feltet " +"nedenfor." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1259 +msgid "" +"This file will not be overwritten when the plugin is upgraded or when your " +"theme is upgraded. " +msgstr "" +"Denne fil vil ikke blive overskrevet, nÃ¥r pluginnet eller dit tema opdateres." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1260 +msgid "More info" +msgstr "Flere oplysninger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1262 +msgid "Download the latest provided css file for editing" +msgstr "Download den seneste CSS-fil, du kan redigere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1262 +msgid "(optional)" +msgstr "(valgfri)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1263 +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "" +"Vælg pluginnets standard-CSS-fil, eller vælg din egen CSS og redigér det." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1265 +msgid "No css files found in css directory " +msgstr "Ingen CSS-filer i CSS-mappen " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1275 +msgid "Advanced:" +msgstr "Avanceret:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1277 +#, php-format +msgid "Your php version is: %s" +msgstr "Din PHP-version er: %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1279 +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "Der kræves mindst PHP version 5.3 for caching af begivenheder." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1280 +msgid "" +"Cacheing of generated events for re-use on same page (eg: widget plus list) " +"will not be attempted. " +msgstr "" +"Caching af genererede begivenheder for genbrug pÃ¥ samme side (fx: widget " +"plus liste) vil ikke blive forsøgt." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1281 +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "Objekter serialiseres tilsyneladende ikke korrekt i PHP < 5.3." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1287 +msgid "Choose date localisation method:" +msgstr "Vælg lokaliseringsmetode for dato:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1290 +msgid "none" +msgstr "ingen" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1292 +msgid "amr" +msgstr "amr" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1294 +msgid "wp" +msgstr "WP" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1296 +msgid "wpgmt" +msgstr "WPGMT" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1300 +msgid "Http timeout for external ics files:" +msgstr "HTTP-timeout for eksterne ICS-filer:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1305 +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" +"Vælg, hvor mange sekunder der skal gÃ¥ inden timout for hver ICS-filhentning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1314 +msgid "" +"Warning - 30 seconds is a long time! Let it use cache rather if things are " +"slow" +msgstr "" +"Advarsel – 30 sekunder er lang tid! Brug hellere cache, hvis tingene gÃ¥r sÃ¥ " +"langsomt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1330 +msgid "Calendar Page URL for Previews:" +msgstr "URL for kalenderside til previews:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1331 +msgid "" +"Enter the url of a page with [events] or [largecalendar] in the content to " +"use for list type previews." +msgstr "" +"Indtast URL'en for en side med [events] eller [largecalendar] i indholdet " +"til at anvende til previews med listetyper." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1343 +msgid "Click the name of each list type below to configure that list." +msgstr "Klik pÃ¥ navnet pÃ¥ hver listetype nedenfor for at konfigurere den." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1345 +msgid "Go to plugin website for documentation." +msgstr "Se dokumentation pÃ¥ pluginwebsitet." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1347 +msgid "Configuration help" +msgstr "Hjælp til konfigurering" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1348 +msgid "" +"Be careful when editing or deleting - some listtypes are defaults for " +"shortcodes and widgets. " +msgstr "" +"Vær forsigtig, nÃ¥r du ændrer eller sletter – nogle listetyper er " +"standarder for kortkoder (shortcodes) og widgets. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1349 +msgid "" +"Add listtype=n in the parameters of the shortcode or widget to use another " +"list type." +msgstr "" +"Tilføj listtype=n i parametrene for kortkoden eller widgetten for at bruge " +"en anden listetype." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1353 +msgid "Warning: This will delete all selected list types immediately." +msgstr "Advarsel: Dette vil slette alle de valgte listetyper med det samme." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1354 +msgid "Delete" +msgstr "Slet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1357 +msgid "List" +msgstr "Liste" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1361 +msgid "To export or copy a list type" +msgstr "For at eksportere eller kopiere en listetype" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1362 +msgid "Select ALL the content, and COPY." +msgstr "Vælg ALT indhold og KOPIÉR." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1364 +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "Kodningen tjener til at forebygge fejl, nÃ¥r der kopieres og indsættes." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1365 +msgid "" +"The whole string must be selected (it should be when you click on the text " +"box)" +msgstr "" +"Hele strengen skal vælges (det burde ske, nÃ¥r du klikker pÃ¥ tekstfeltet)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1366 +msgid "The list type is a huge array." +msgstr "Listetypen er en meget stor array." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1367 +msgid "" +"Without encoding, there were varying problems with slashes. Encoding was " +"more stable." +msgstr "" +"Uden kodning var der diverse problemer med skrÃ¥streger. Med kodning var det " +"mere stabilt." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1368 +msgid "Why encode?" +msgstr "Hvorfor kode?" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1372 +msgid "To import or paste a list type" +msgstr "For at importere eller indsætte en listetype" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1373 +msgid "PASTE list type string" +msgstr "INDSÆT listetypestrengen" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1375 +msgid "" +"If you did not produce the string and are concerned about the contents, then " +"inspect the list type string using a decode tool. You should see a " +"serialised array." +msgstr "" +"Hvis du ikke dannede strengen og er bekymret over, hvad det indeholder, kan " +"du undersøge listetypestrengen med et program til at dekode med. Du skulle " +"gerne se en serialiseret array." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1376 +msgid "Click to search for decoding tools" +msgstr "Klik for at søge efter dekodningsprogrammer" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1376 +msgid "Test decode" +msgstr "Test dekodning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1411 +msgid " Define date and time formats:" +msgstr " Definér formater for dato og klokkeslæt:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1413 +msgid "" +"Define the formats for the day (eg: Event date, End Date) and time (eg: " +"Start time, End Time) fields. You can actually use any of these to display a " +"full Date time string too. Use the Event date for event instances - the " +"DTSTART field is the first startdate of a recurring event sequence." +msgstr "" +"Definér formaterne for Dag- (fx Begivenhedsdato, Slutdato) og Klokkeslæt- " +"(fx Starttidspunkt, Sluttidspunkt) felterne." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1414 +msgid "" +"These are also used for the date related grouping headings (ie: will show " +"the date in that format as a heading for that group of dates if relevant.)" +msgstr "" +"Disse definitioner bruges ogsÃ¥ for datorelaterede gruppeoverskrifter (dvs. " +"de vil vise datoen i dette format som overskrift for en gruppe af datoer, " +"hvis relevant.)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1415 +msgid "Use the standard PHP format strings: " +msgstr "Brug PHP's gængse formatteringsstrenge: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1416 +msgid "Php manual - date datetime formats" +msgstr "PHP-manual – formater for dato og klokkeslæt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1418 +msgid "See php date function format strings" +msgstr "See PHP's datoformatteringsstrenge" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1419 +msgid " (will localise) " +msgstr " (bliver lokaliseret) " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-list-admin.php:1449 +msgid "Expand/Contract all" +msgstr "Vis/Skjul alle" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-plugin-form-html.php:146 +msgid "Why not do any or all of the following:" +msgstr "Hvorfor ikke prøve et af – eller alle de følgende forslag:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-plugin-form-html.php:148 +msgid "Link to it so other folks can find out about it." +msgstr "Link til det, sÃ¥ andre kan lære det at kende." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-plugin-form-html.php:156 +msgid "" +"If you have any problems with this plugin or good ideas for improvements or " +"new features, please talk about them in the" +msgstr "" +"Hvis du har problemer med dette plugin eller gode ideer til forbedringer " +"eller nye funktioner, sÃ¥ nævn dem i" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-plugin-form-html.php:156 +msgid "Support forums" +msgstr "Supportforum" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:12 +msgctxt "post type general name" +msgid "Events" +msgstr "Begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:13 +msgctxt "post type singular name" +msgid "Event" +msgstr "Begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:14 +msgctxt "event" +msgid "Add New" +msgstr "Tilføj ny" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:15 +msgid "Add New Event" +msgstr "Tilføj ny begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:16 +msgid "Edit Event" +msgstr "Redigér begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:17 +msgid "New Event" +msgstr "Ny begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:18 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:19 +msgid "View Event" +msgstr "Vis begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:20 +msgid "Search Events" +msgstr "Søg efter begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:21 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:38 +msgid "No events found" +msgstr "Ingen begivenheder fundet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:22 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:39 +msgid "No events found in trash" +msgstr "Ingen begivenheder fundet i papirkurven" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:23 +msgid "Related Event" +msgstr "Tilsvarende begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:32 +msgid "Add New " +msgstr "Tilføj ny" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:33 +msgid "Edit " +msgstr "Redigér " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:34 +msgid "New " +msgstr "Ny " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:35 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:36 +msgid "View " +msgstr "Vis " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:37 +msgid "Search " +msgstr "Søg " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:40 +#, php-format +msgid "Related %s" +msgstr "Tilsvarende %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-post-type.php:46 +msgid "Event" +msgstr "Begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:8 +#, php-format +msgid "Weeks start on %s" +msgstr "Uger starter pÃ¥ %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:41 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:49 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:65 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:153 +msgid " and " +msgstr " og " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:51 +msgid "every " +msgstr "alle " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:80 +msgid " or " +msgstr " eller " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:93 +#, php-format +msgid "%u " +msgid_plural "%u " +msgstr[0] "%u " +msgstr[1] "%u " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:117 +#, php-format +msgid "Every %s %s" +msgstr "Alle %s %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:127 +#, php-format +msgid "On %s instance within %s" +msgstr "PÃ¥ den %s i %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:132 +#, php-format +msgid "%s times" +msgstr "%s gange" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:137 +#, php-format +msgid "until %s %s" +msgstr "indtil %s %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:139 +#, php-format +msgid " if month is %s" +msgstr " hvis mÃ¥ned er %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:141 +#, php-format +msgid " in %s weeks of the year" +msgstr " i %s uger af Ã¥ret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:143 +#, php-format +msgid "on %s day of the year" +msgstr "pÃ¥ %s dag i Ã¥ret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:144 +#, php-format +msgid "on %s day of each month" +msgstr "pÃ¥ %s dag i hver mÃ¥ned" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:145 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:146 +#, php-format +msgid "on %s " +msgstr "pÃ¥ %s " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:150 +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr " i mÃ¥neden" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:152 +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr " i Ã¥ret" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:157 +#, php-format +msgid "at the %s hour" +msgstr "i den %s time" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:158 +#, php-format +msgid "at the %s minute" +msgstr "i den %s minut" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-ical-pretty-print.php:159 +#, php-format +msgid "at the %s second" +msgstr "i den %s sekund" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:37 +#, php-format +msgid "Your cache directory %s has been created" +msgstr "Din cache-mappe %s er blevet oprettet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:40 +#, php-format +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Fejl i oprettelse af cache-mappen %s. Tjek venligst rettigheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:68 +msgid "Unexpected data contents. Please tell administrator." +msgstr "Uventet dataindhold. Giv venligst administrator besked." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:69 +msgid "See comments in source for response received from ics server." +msgstr "Se kommentarer i kilden for svar modtaget fra ICS-server." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:176 +#, php-format +msgid "Error getting calendar file with htpp or curl %s" +msgstr "Fejl i hentning af kalenderfil med HTTP eller cURL %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:180 +#, php-format +msgid "Using File last cached at %s" +msgstr "Bruger fil der senest blev cachet: %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:182 +msgid "File last cached time not available" +msgstr "Tidspunkt for filens sidste cache ikke tilgængelig" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:184 +msgid "Warning: Events may be out of date. " +msgstr "Advarsel: Begivenhederne kan være forældet. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-import-ical.php:190 +msgid "No cached ical file for events" +msgstr "Ingen cachet iCal-fil med begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:22 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:456 +msgid "Show in Google map" +msgstr "Vis pÃ¥ Google-kort" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:29 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:463 +msgid "Show location in Google Maps" +msgstr "Vis sted pÃ¥ Google Maps" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:83 +msgid "midnight" +msgstr "midnat" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:84 +msgid "midday" +msgstr "middag" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:119 +msgid "Go to agenda or list view" +msgstr "GÃ¥ til visning af program eller liste" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:119 +msgid "Agenda" +msgstr "Program" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:127 +msgid "Go to calendar view" +msgstr "GÃ¥ til kalendervisning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:127 +msgid "Calendar" +msgstr "Kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:134 +msgid "Go to map view" +msgstr "GÃ¥ til kortvisning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:134 +msgid "Map" +msgstr "Kort" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:152 +msgid "Go to date" +msgstr "GÃ¥ til dato" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:153 +msgctxt "" +"Submit button for month and year navigation. Use translation to replace " +"with words if you want." +msgid "»»" +msgstr "»»" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:182 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:188 +#, php-format +msgid "Week starting %1$s" +msgstr "Uge startende med %1$s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:183 +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "←" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:189 +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "→" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:223 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:230 +#, php-format +msgid "Go to %1$s %2$s" +msgstr "GÃ¥ til %1$s %2$s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:298 +#, php-format +msgid "Week starting %s" +msgstr "Uge startende med %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:337 +msgid "hours" +msgstr "timer" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:357 +msgid "months" +msgstr "mÃ¥neder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:373 +msgid "days" +msgstr "dage" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:381 +msgid "show past events" +msgstr "vis afholdte begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:382 +msgid "show less" +msgstr "vis mindre" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:383 +msgid "show more" +msgstr "vis mere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:384 +msgid "show much less" +msgstr "vis meget mindre" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:385 +msgid "show much more" +msgstr "vis meget mere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:388 +msgid "show future events" +msgstr "vis fremtidige begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:389 +msgid "show maximum 10 events if available" +msgstr "vis de maksimale 10 begivenheder, hvis de findes" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:390 +msgid "show maximum 50 events if available" +msgstr "vis de maksimale 50 begivenheder, hvis de findes" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:391 +msgid "show maximum 100 events if available" +msgstr "vis de maksimale 100 begivenheder, hvis de findes" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:469 +msgid "all day" +msgstr "hele dagen" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:494 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:537 +msgid "Event attachment" +msgstr "Fil vedhæftet begivenhed" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:563 +msgctxt "" +"when an event runs for full days, note the   prevents the text " +"wrappping in a table." +msgid "all day" +msgstr "Hele dagen" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:594 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:601 +#, php-format +msgid "View events in %s %s" +msgstr "Se begivenheder i %s %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:595 +msgid "category" +msgstr "kategori" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:635 +msgid "Total events: " +msgstr "Samlet antal begivenheder: " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:641 +msgid "No description available" +msgstr "Ingen beskrivelse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:649 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:659 +#, php-format +msgid "Subscribe to %s Calendar" +msgstr "Abonnér pÃ¥ %s-kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:666 +msgid "Subscribe to calendar in your calendar application." +msgstr "Abonnér pÃ¥ kalender i dit kalenderprogram." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:668 +msgid "Subscribe to calendar" +msgstr "Abonnér pÃ¥ kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:780 +msgid "Add to google calendar" +msgstr "Tilføj til Google Kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:782 +msgid "Add to google" +msgstr "Tilføj til Google" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:805 +msgid "Add event to google" +msgstr "Tilføj begivenhed til Google" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:833 +msgid "Last Refresh time unexpectedly not available" +msgstr "Tidspunkt for Sidste genindlæsning mangler uventet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:837 +msgid "Refresh calendars" +msgstr "Genindlæs kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:838 +#, php-format +msgid "Last refresh was at %s. " +msgstr "Sidste genindlæsning skete %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:840 +msgid "Remote file had no modifications. " +msgstr "Fjernfil indeholdt ingen ændringer. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:844 +#, php-format +msgid "The remote file was last modified on %s." +msgstr "Fjernfilen blev senest ændret %s." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:849 +msgid "Click to refresh" +msgstr "Klik for at genindlæse" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:972 +#, php-format +msgid "Week %u" +msgstr "Uge %u" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1353 +#, php-format +msgid "Look for more from %s" +msgstr "Se efter mere fra %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1377 +msgid "Go back to initial view" +msgstr "Tilbage til første visning" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1382 +msgid "Go back to previous events" +msgstr "Tilbage til tidligere begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1731 +#, php-format +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "%u Ã¥r" +msgstr[1] "%u Ã¥r" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1736 +#, php-format +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "%u mÃ¥ned " +msgstr[1] "%u mÃ¥neder " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1741 +#, php-format +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "%u uge " +msgstr[1] "%u uger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1746 +#, php-format +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "%u dag" +msgstr[1] "%u dage" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1752 +#, php-format +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "%u time" +msgstr[1] "%u timer" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1757 +#, php-format +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "%u minut" +msgstr[1] "%u minutter" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1762 +#, php-format +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "%u sekunder" +msgstr[1] "%u sekunder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1781 +msgid "Change Timezone" +msgstr "Skift tidszone" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1782 +#, php-format +msgid "Timezone: %s, Click for %s" +msgstr "Tidszone: %s, Klik for %s" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:1843 +msgid "Sent by " +msgstr "Sendt af " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-pluggable.php:2018 +msgid "unknown" +msgstr "ukendt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:9 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:119 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:189 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:272 +msgid "Upcoming Events" +msgstr "Kommende begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:11 +msgid "Upcoming Events List" +msgstr "Liste med kommende begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:140 +msgid "See plugin website for more details" +msgstr "Se flere detaljer pÃ¥ pluginwebsitet" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:143 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:283 +msgid "Title" +msgstr "Titel" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:149 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:289 +msgid "Calendar page url" +msgstr "URL for side med kalender" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:150 +msgid "Calendar page url in this website" +msgstr "URL til kalenderside pÃ¥ dette website" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:156 +msgid "Hover description on Title" +msgstr "Beskrivelse pÃ¥ titel ved mus-over" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:157 +msgid "Do an event summary hyperlink with event description as title text " +msgstr "" +"Lav et link til resumé af begivenhed med beskrivelse af begivenheden som " +"titeltekst" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:164 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:296 +msgid "External events only" +msgstr "Kun eksterne begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:165 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:297 +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "" +"Vis kun begivenheder fra ekstern ics, medtag ikke interne " +"begivenheder." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:166 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:298 +msgid "Else include events created internally too" +msgstr "Alternativt, inkludér ogsÃ¥ begivenheder oprettet internt" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:172 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:304 +msgid "External ics urls and advanced options" +msgstr "Eksterne ics-URL'er og avancerede indstillinger" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:173 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:305 +msgid "" +"External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" +"Eksterne ics-URL'er og/eller valgfri kortkode-parametre adskilte af " +"mellemrum.)" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:174 +msgid "" +" Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" +" Eksempler: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:176 +msgid "See more parameters" +msgstr "Se flere parametre" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:192 +msgid "Upcoming Events Calendar" +msgstr "Kalender med kommende begivenheder" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:281 +msgid "See more" +msgstr "Se efter mere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:290 +msgid "Calendar page url in this website, for links from widget" +msgstr "URL til kalenderside pÃ¥ denne website, for links i widget" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/amr-upcoming-events-widget.php:306 +msgid "" +" Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" +" Eksempler: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:52 +msgid "Invalid Event Date" +msgstr "Ugyldig begivenhedsdato" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:233 +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:237 +msgid "Invalid Url" +msgstr "Ugyldig URL" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:277 +msgid "" +"I try to make these plugins work \"out of the box\" with " +"minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "" +"Jeg prøver at sikre, at disse plugins uden videre virker " +"med et minimum af indsats, er nemme at bruge, men ogsÃ¥ har mange " +"indstillinger, at de er gennemtestede, at de er " +"gennemtestede, at de genererer gyldig HTML og CSS bÃ¥de i selve bloggen og i administrationspanelet." + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:278 +msgid "If you have a feature request, please do let me know. " +msgstr "Hvis du har et ønske om en funktion, sÃ¥ lad mig det vide. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:280 +msgid "To edit events in wordpress:" +msgstr "For at redigere begivenheder i WordPress:" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:282 +msgid "Upgrade to amr-events at " +msgstr "Opgradér til amr-events pÃ¥ " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:287 +msgid "Keep all these settings and lists" +msgstr "Behold alle disse opsætninger og lister" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:289 +msgid "Offers many additional benefits." +msgstr "Giver mange flere fordele. " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:290 +msgid "Find out more" +msgstr "Find ud af mere" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:321 +msgid "Events plugin by anmari" +msgstr "Events-plugin af anmari" + +# toggle +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/includes/functions.php:338 +msgid "Click to toggle" +msgstr "Klik for at skifte" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/uninstall.php:22 +msgid "amr ical options deleted from database" +msgstr "amr ical-indstillinger slettet fra databasen" + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/uninstall.php:33 +msgid "amr ical cached ics files deleted " +msgstr "De filer, amr ical har cachet, er slettet " + +#: d:/wordpress/plugins/amr-ical-events-list/amr-ical-events-list/uninstall.php:34 +msgid "" +"Css files may also exist. They and the css folder have not been deleted as " +"they have been shared with other plugins." +msgstr "" +"CSS-filer findes mÃ¥ske ogsÃ¥. De og CSS-mappen er ikke blevet slettet, da de " +"er delt med andre plugins." + +#~ msgid "Users who have accepted." +#~ msgstr "Brugere, der har accepteret." + +#~ msgid "Videos" +#~ msgstr "Videoer" + +#~ msgid "Rate it at WP" +#~ msgstr "Bedøm det pÃ¥ WP" + +#~ msgid "Unexpected error creating date with string: " +#~ msgstr "Uventet fejl under oprettelse af dato med strengen: " + +#~ msgid "" +#~ "Unable to create Custom css file for you to edit if you wish - not " +#~ "essential." +#~ msgstr "" +#~ "Kunne ikke oprette bruger-CSS-fil, som du kan redigere, hvis du vil. Den " +#~ "er ikke uundværlig." + +#~ msgid "Copied %s1 to %s2 to allow custom css" +#~ msgstr "Kopierede %s1 til %s2 for at give mulighed for bruger-CSS" + +#~ msgid "Get started:" +#~ msgstr "Kom i gang:" + +#~ msgid "Create a calendar page and enter: [iCal http://youricsurl.ics]" +#~ msgstr "Opret en kalenderside og indtast: [iCal http://youricsurl.ics]" + +#~ msgid "Create a calendar page" +#~ msgstr "Opret kalenderside" + +#~ msgid "Add new" +#~ msgstr "Tilføj ny" + +#~ msgid "" +#~ "The timezone database defines the daylight saving changes amongst other " +#~ "things. If correct daylight saving switchover is important to you, " +#~ "please check for the latest updates. " +#~ msgstr "" +#~ "Tidszone-databasen definerer bl.a. sommertidsændringer. Hvis det er " +#~ "vigtigt for dig, at skift til og fra sommertid sker præcist, sÃ¥ tjek for " +#~ "de seneste opdateringer." + +#~ msgid "You may need to talk to your webhost." +#~ msgstr "Du skal mÃ¥ske kontakte din webudbyder." + +#~ msgid "AmR iCal Widget Options deleted from Database" +#~ msgstr "AmR iCal-widgetindstillinger slettet fra databasen" + +#~ msgid "Uninstall AmR iCal Events List Options" +#~ msgstr "Afinstallér AmR iCal-indstillinger for begivenhedslister" + +#~ msgid "" +#~ "Note this function removes the options from the database. To completely " +#~ "uninstall, one should continue on to use the standard wordpress functions " +#~ "to deactivate the plugin and delete the files. It is not necessary to " +#~ "run this separately as the uninstall will also run as part of the " +#~ "wordpress delete plug-in files." +#~ msgstr "" +#~ "Bemærk, at denne funktion fjerner indstillingerne fra databasen. For at " +#~ "afinstallere pluginnet fuldstændigt, skal man fortsætte og bruge " +#~ "WordPress' normale funktioner til at deaktivere et plugin og slette " +#~ "filerne. Det er ikke nødvendigt at bruge denne funktion for sig selv, da " +#~ "afinstallation ogsÃ¥ foretages, nÃ¥r WordPress sletter plugin-filer." + +#~ msgid "" +#~ "The function is provided here as an aid to someone who has perhaps got " +#~ "their wordpress install in a knot and wishes to temporarily remove the " +#~ "options from the database as part of their debugging or cleanup. " +#~ "Consider also the use of the RESET." +#~ msgstr "" +#~ "Denne funktion er medtaget som en hjælp for den, der mÃ¥ske har fÃ¥et " +#~ "problemer med sin WordPress-installation og ønsker midlertidigt at fjerne " +#~ "indstillingerne fra databasen som en del af deres debugging eller " +#~ "oprydning. Du kan ogsÃ¥ overveje at bruge NULSTIL." + +#~ msgid "" +#~ "Note: Navigating to \"Manage AmR ICal Settings\" will RELOAD default " +#~ "options - negating the uninstall." +#~ msgstr "" +#~ "Bemærk: Hvis du gÃ¥r til \"AmR ICal-indstillinger\", GENINDLÆSES " +#~ "standardindstillingerne, sÃ¥ pluginnet ikke længere er afinstalleret." + +#~ msgid "Continue to Plugin list to delete files as well" +#~ msgstr "Fortsæt til Plugins for ogsÃ¥ at slette filerne" + +#~ msgid "Cancel" +#~ msgstr "Annullér" + +#~ msgid "Really Uninstall Options?" +#~ msgstr "Ønsker du virkelig at afinstallere indstillingerne?" + +#~ msgid "Timing" +#~ msgstr "Tidspunkt" + +#~ msgid "Error deleting option..." +#~ msgstr "Fejl ved sletning af indstillinger ..." + +#~ msgid "th" +#~ msgstr "." + +#~ msgid "nd" +#~ msgstr "." + +#~ msgid "rd" +#~ msgstr "." + +#~ msgid "every %s" +#~ msgstr "Alle %s" + +#~ msgid "Invalid Ical URL passed in query string %s" +#~ msgstr "Ugyldig iCal-URL overført i søgestrengen %s" + +#~ msgid "Invalid Number of Lists" +#~ msgstr "Ugyldigt antal lister" + +#~ msgid "General:" +#~ msgstr "Generelt:" + +#~ msgid "Link to more information" +#~ msgstr "Link til flere oplysninger" + +#~ msgid "" +#~ "Now you can create events and ics feeds directly in " +#~ "wordpress - See screenshots and demo at %s" +#~ msgstr "" +#~ "Du kan nu oprette begivenheder og ICS-feeds direkte i " +#~ "WordPress – Se skærmbilleder og demo pÃ¥ %s" + +#~ msgid "Number of Ical Lists:" +#~ msgstr "Antal iCal-lister:" + +#~ msgid "Error in saving" +#~ msgstr "Fejl i forsøget pÃ¥ at gemme" + +#~ msgid "events" +#~ msgstr "begivenheder" + +#~ msgid "icalendar" +#~ msgstr "icalendar" + +#~ msgid "Specify component contents:" +#~ msgstr "Angiv komponentindhold:" + +#~ msgid "Plugin support" +#~ msgstr "Pluginsupport" + +#~ msgid "Donate" +#~ msgstr "Donér" + +#~ msgid "Thank you for using %s!" +#~ msgstr "Tak, fordi du bruger %s!" + +#~ msgid " These are also used for the grouping headings." +#~ msgstr " Disse bruges ogsÃ¥ i forbindelse med grupperingsoverskrifter." + +#~ msgid "date" +#~ msgstr "dato" + +#~ msgid "Error reading cached file: %s" +#~ msgstr "Fejl i læsning af cachet fil: %s" + +#~ msgid "AmR Upcoming Events" +#~ msgstr "AmR Kommende begivenheder" + +#~ msgid "cache" +#~ msgstr "cache" + +#~ msgid "AmR iCal Events List" +#~ msgstr "AmR iCal Events List" + +#~ msgid "No default limits set" +#~ msgstr "Ingen standardbegrænsninger sat" + +#~ msgid "No default components set" +#~ msgstr "Ingen standardkomponenter sat" + +#~ msgid "" +#~ "Talk to your webhost if the current time and/or daylight saving change " +#~ "below is incorrect:" +#~ msgstr "" +#~ "Konsultér din internetudbyder, hvis det aktuelle klokkeslæt og/eller " +#~ "sommertidsindstilling nedenfor er forkert:" + +#~ msgid "Timezone: " +#~ msgstr "Tidszone: " + +#~ msgid "Current UTC offset: " +#~ msgstr "Aktuel UTC-forskel: " + +#~ msgid " Do not generate css" +#~ msgstr " Generér ikke CSS" + +#~ msgid "Go to Plugin Editor, select this plugin and scroll to the file" +#~ msgstr "GÃ¥ til plugineditoren, vælg dette plugin og scroll ned til filen" + +#~ msgid "Edit" +#~ msgstr "Redigér" + +#~ msgid "AmR iCal Events List " +#~ msgstr "AmR iCal Events List " + +#~ msgid "Options updated with defaults..." +#~ msgstr "Indstillinger opdateret med standardværdier ..." + +#~ msgid "Events Offset" +#~ msgstr "Tidsforskel for begivenheder" + +#~ msgid "Events from Posts" +#~ msgstr "Begivenheder fra indlæg" + +#~ msgid "Options Updated. " +#~ msgstr "Indstillinger opdateret. " + +#~ msgid "Support at Plugin website" +#~ msgstr "Support pÃ¥ plugin-websiten" + +#~ msgid "Support at Wordpress" +#~ msgstr "Support pÃ¥ WordPress.org" + +#~ msgid "AmR ICal Global Options" +#~ msgstr "AmR ICal Globale indstillinger" + +#~ msgid "Error validating list options input" +#~ msgstr "Fejl i validering af input for listeindstillinger" + +#~ msgid "Amr Ical" +#~ msgstr "Amr Ical" + +#~ msgid "Days to show: " +#~ msgstr "Dage at vise: " + +#~ msgid "Events to show: " +#~ msgstr "Begivenheder at vise: " + +#~ msgid "Start date: " +#~ msgstr "Startdato: " + +#~ msgid "End date: " +#~ msgstr "Slutdato: " diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK/Amr iCal Events List-da_DK.txt b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK/Amr iCal Events List-da_DK.txt new file mode 100644 index 0000000..c3fd2d0 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-da_DK/Amr iCal Events List-da_DK.txt @@ -0,0 +1,23 @@ +AmR iCal Events List 4.0.30 + +Sprogfilerne skal ligge i amr-ical-events-list/lang +Oplysning om stierne er pakket med. +Understøtter dit udpakningsprogram anvendelse heraf, +kan du udpakke direkte til (formentlig) wp-content/plugins + +Evt. opdateringer eller info herom kan hentes via http://wordpress.blogos.dk/wpdadkdownloads +eller direkte på http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=264 + +Se evt. også http://wordpress.blogos.dk/tag/amr-ical-events-list + + + +FOR THE DEVELOPER +You are very welcome to check for updated language files in one of the following ways: + +1. On my downloads page that list all files available for download: +http://wordpress.blogos.dk/wpdadkdownloads/ + +2. Directly on my Download Monitor download page: http://wordpress.blogos.dk/s%C3%B8g-efter-downloads/?did=264 + +If I have blogged about your plugin, theme or other resource, you will be able to find it via this tag: http://wordpress.blogos.dk/tag/amr-ical-events-list \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-de_DE.po b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-de_DE.po new file mode 100644 index 0000000..455ac55 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-de_DE.po @@ -0,0 +1,2465 @@ +msgid "" +msgstr "" +"Project-Id-Version: amr events calendar or lists with ical files v4.11\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/amr-ical-events-list\n" +"POT-Creation-Date: 2014-04-21 05:50:36+00:00\n" +"PO-Revision-Date: 2014-09-19 10:38:31+0000\n" +"Last-Translator: Joerg Knoerchen \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.6.5\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: \n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "Gehe zu Veranstaltungen für diesen Tag\t" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "Spalte" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "Reihenfolge\t" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "Vorher" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "Nachher" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "Link der es erlaubt Benutzer den Kalender in ihren Google Kalender zu integrieren. " + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "Link der es erlaubt Benutzer eine ICS Datei zu laden" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "Zeitpunkt zu dem die ICS Datei zuletzt bearbeitet wurde" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "WordPress Beitragstitel für ICS Zusammenfassung" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "WordPress Inhalt oder ICS Beschreibung" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "WordPress Zusammenfassung" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "Wordpress Beitragsbild" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "Adresse" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "Link zur Karte" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "Link zum Hinzufügen eines Termins in einen Google Kalender" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "Link für eine Einzelveranstaltung als ICS Datei" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "Link für eine Veranstaltungsserie als ICS Datei" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "Die Koordinaten" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "Links zu angegebenen Dateianhängen (ICS)" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "WordPress oder ICS Datei Kategorie" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "ICS Klasse" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "ICS Kommentar" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "ICS Terminpriorität" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "ICS Termin Satus" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "Keine Termine für diese Kriterien gefunden" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "Schaue nach weiteren" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "Schaue nach zurückliegenden" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "Zurücksetzen" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "Standard" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "" + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "" + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "" + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The
                      DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "" + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "" + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "" + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "" + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "" + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "" + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "" + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "" + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "" + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "" + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "" + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "" + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "" + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "" + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr "" + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "" + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr "" + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "" + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "" + +#: includes/amr-import-ical.php:36 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "" + +#: includes/amr-import-ical.php:39 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "" + +#: includes/amr-import-ical.php:67 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "" + +#: includes/amr-import-ical.php:158 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:162 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "" + +#: includes/amr-import-ical.php:164 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#: includes/amr-import-ical.php:166 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "" + +#: includes/amr-import-ical.php:172 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "zeige vergangene Termine" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "zeige weniger" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "zeige mehr" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "zeige noch weniger" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "zeige viel mehr" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "zeige zukünftige Termine" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "zeige maximal 10 Termine falls verfügbar" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "zeige maximal 50 Termine falls verfügbar" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "zeige maximal 100 Termine falls verfügbar" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "" + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "" + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "" + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "" + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "" + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "" + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "" + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "" + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "" + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.11" +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-en_AU.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-en_AU.mo new file mode 100644 index 0000000000000000000000000000000000000000..70633a0b1cc2c1cd1c82a007f0e8060cba5a1c8e GIT binary patch literal 760 zcmZXR&u$Yj5XKFv_!ERgk+>lkI3*y5Y@3R9qZ~?Up;8MGZ4n19&SsLBI`+!;hUP)I z!Ho+SUVtay5x8*YDd5|rX(D0ir*Fm@&y4*2zP<8E;9LWD!TU17`8<=UUP1f?tbngz z6?_9X!4GgB`~-KvA8-}?1=lYj2DcEeUKZj8^dVG2>(J>uXcPGa`Uv_RdJp;wDz*n~ zdrCYj!bBW6cS?QdspEO9T@e;HBj;JXa>Qe{F`%fhJ^HBQP+Q8pj_kD(M@2Uv=`uw} znKET(kJ~(VK8lWaA2^G0zbD_a58Bz3)X2|U&g%*DjSd)6wkM5y>TAP+#?AUhrSn?8 z!E)tu`CLU#X|0hoWs=Bbi`LfDjjgo#^l<~Ha=3rEyBL+!8\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: English\n" +"X-Poedit-Country: AUSTRALIA\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.5" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Column" +msgstr "" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:296 +#@ amr-ical-events-list +msgid "Order" +msgstr "" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Before" +msgstr "" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "After" +msgstr "" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "No events for criteria - plugin translations perhaps" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1379 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "Look for more (aussie style)" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "" + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "" + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "" + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "Look for previous events (custom translation)" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "Unavailable" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:304 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "" + +#: includes/amr-ical-events-list-main.php:326 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1362 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1406 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1407 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1536 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1569 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1742 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1828 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1830 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1966 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2323 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2324 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "" + +#: includes/amr-ical-events-list-main.php:2331 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2358 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2360 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2361 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2362 +#: includes/amr-ical-list-admin.php:27 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:30 +#@ amr-ical-events-list +msgid "Support" +msgstr "Help from a mate (aka support)" + +#: includes/amr-ical-list-admin.php:33 +#@ amr-ical-events-list +msgid "Videos" +msgstr "" + +#: includes/amr-ical-list-admin.php:36 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "" + +#: includes/amr-ical-list-admin.php:38 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:43 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:67 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:69 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:72 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "" + +#: includes/amr-ical-list-admin.php:74 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "" + +#: includes/amr-ical-list-admin.php:77 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "" + +#: includes/amr-ical-list-admin.php:80 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:84 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "" + +#: includes/amr-ical-list-admin.php:90 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:94 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:107 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "" + +#: includes/amr-ical-list-admin.php:113 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "" + +#: includes/amr-ical-list-admin.php:123 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:125 +#@ amr-ical-events-list +msgid "Update" +msgstr "" + +#: includes/amr-ical-list-admin.php:130 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "" + +#: includes/amr-ical-list-admin.php:132 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "" + +#: includes/amr-ical-list-admin.php:137 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:140 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "" + +#: includes/amr-ical-list-admin.php:155 +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:170 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:177 +#: includes/amr-ical-list-admin.php:631 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:184 +#: includes/amr-ical-list-admin.php:686 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "" + +#: includes/amr-ical-list-admin.php:186 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "" + +#: includes/amr-ical-list-admin.php:203 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:210 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:225 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "" + +#: includes/amr-ical-list-admin.php:251 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "" + +#: includes/amr-ical-list-admin.php:277 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:280 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "" + +#: includes/amr-ical-list-admin.php:282 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "" + +#: includes/amr-ical-list-admin.php:286 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "" + +#: includes/amr-ical-list-admin.php:292 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:342 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "" + +#: includes/amr-ical-list-admin.php:346 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:346 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:358 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:367 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:367 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:386 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:386 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:413 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:415 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "" + +#: includes/amr-ical-list-admin.php:438 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "" + +#: includes/amr-ical-list-admin.php:441 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "" + +#: includes/amr-ical-list-admin.php:481 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:494 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:531 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:574 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:580 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:622 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:626 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:636 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:661 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:663 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:673 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "" + +#: includes/amr-ical-list-admin.php:690 +#@ amr-ical-events-list +msgid "List saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:712 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "" + +#: includes/amr-ical-list-admin.php:720 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "" + +#: includes/amr-ical-list-admin.php:740 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "List types" +msgstr "" + +#: includes/amr-ical-list-admin.php:956 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "" + +#: includes/amr-ical-list-admin.php:1026 +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "Name" +msgstr "" + +#: includes/amr-ical-list-admin.php:1030 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "" + +#: includes/amr-ical-list-admin.php:1054 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1060 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "" + +#: includes/amr-ical-list-admin.php:1062 +#@ amr-ical-events-list +msgid "Table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1077 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "" + +#: includes/amr-ical-list-admin.php:1078 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1089 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "" + +#: includes/amr-ical-list-admin.php:1091 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1093 +#: includes/amr-pluggable.php:812 +#@ amr-ical-events-list +msgid "More information" +msgstr "" + +#: includes/amr-ical-list-admin.php:1127 +#@ amr-ical-events-list +msgid "General Options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1148 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1155 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1165 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1172 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1179 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1190 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1195 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "" + +#: includes/amr-ical-list-admin.php:1204 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1211 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "" + +#: includes/amr-ical-list-admin.php:1218 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1224 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1227 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1231 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1234 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "" + +#: includes/amr-ical-list-admin.php:1236 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "" + +#: includes/amr-ical-list-admin.php:1239 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "More info" +msgstr "" + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "" + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "" + +#: includes/amr-ical-list-admin.php:1245 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "" + +#: includes/amr-ical-list-admin.php:1255 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1257 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:1259 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1267 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1270 +#@ amr-ical-events-list +msgid "none" +msgstr "" + +#: includes/amr-ical-list-admin.php:1272 +#@ amr-ical-events-list +msgid "amr" +msgstr "" + +#: includes/amr-ical-list-admin.php:1274 +#@ amr-ical-events-list +msgid "wp" +msgstr "" + +#: includes/amr-ical-list-admin.php:1276 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "" + +#: includes/amr-ical-list-admin.php:1280 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1285 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1294 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1310 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1323 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1325 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1327 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1333 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1337 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1341 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1344 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1352 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1355 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "" + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:33 +#: includes/amr-ical-pretty-print.php:41 +#: includes/amr-ical-pretty-print.php:57 +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgid " and " +msgstr "" + +#: includes/amr-ical-pretty-print.php:43 +#@ amr-ical-events-list +msgid "every " +msgstr "" + +#: includes/amr-ical-pretty-print.php:72 +#@ amr-ical-events-list +msgid " or " +msgstr "" + +#: includes/amr-ical-pretty-print.php:109 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:119 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:124 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "" + +#: includes/amr-ical-pretty-print.php:129 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:131 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:133 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:135 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:137 +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "" + +#: includes/amr-ical-pretty-print.php:149 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "" + +#: includes/amr-ical-pretty-print.php:150 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "" + +#: includes/amr-ical-pretty-print.php:151 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "" + +#: includes/amr-import-ical.php:36 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "" + +#: includes/amr-import-ical.php:39 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "" + +#: includes/amr-import-ical.php:67 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "" + +#: includes/amr-import-ical.php:158 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:162 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "" + +#: includes/amr-import-ical.php:164 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#: includes/amr-import-ical.php:166 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "" + +#: includes/amr-import-ical.php:172 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "Agenda (Aussie)" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:579 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:619 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:648 +#: includes/amr-pluggable.php:655 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:649 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:689 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "" + +#: includes/amr-pluggable.php:692 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "No description available" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:703 +#: includes/amr-pluggable.php:713 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "" + +#: includes/amr-pluggable.php:720 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "" + +#: includes/amr-pluggable.php:722 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "Subscribe to cal (aussie test translation)" + +#: includes/amr-pluggable.php:828 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "" + +#: includes/amr-pluggable.php:830 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "" + +#: includes/amr-pluggable.php:846 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "" + +#: includes/amr-pluggable.php:870 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "" + +#: includes/amr-pluggable.php:874 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "" + +#: includes/amr-pluggable.php:875 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "" + +#: includes/amr-pluggable.php:877 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "" + +#: includes/amr-pluggable.php:886 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "" + +#: includes/amr-pluggable.php:1006 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "" + +#: includes/amr-pluggable.php:1280 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#: includes/amr-pluggable.php:1384 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#: includes/amr-pluggable.php:1408 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1413 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-pluggable.php:1442 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "" + +#: includes/amr-pluggable.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1755 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1760 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1765 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1781 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1800 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "" + +#: includes/amr-pluggable.php:1801 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:116 +#: includes/amr-upcoming-events-widget.php:186 +#: includes/amr-upcoming-events-widget.php:269 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:137 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:140 +#: includes/amr-upcoming-events-widget.php:280 +#@ amr-ical-events-list +msgid "Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:146 +#: includes/amr-upcoming-events-widget.php:286 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:147 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:153 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "" + +#: includes/amr-upcoming-events-widget.php:161 +#: includes/amr-upcoming-events-widget.php:293 +#@ amr-ical-events-list +msgid "External events only" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:169 +#: includes/amr-upcoming-events-widget.php:301 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:171 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:173 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:189 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:278 +#@ amr-ical-events-list +msgid "See more" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" + +#: includes/functions.php:27 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:199 +#: includes/functions.php:203 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "" + +#: includes/functions.php:243 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "" + +#: includes/functions.php:244 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "" + +#: includes/functions.php:246 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "" + +#: includes/functions.php:248 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:253 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:255 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:256 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:287 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "" + +#: includes/functions.php:303 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + +#: includes/amr-ical-pretty-print.php:142 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:144 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1382 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1392 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1398 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-es_ES.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..7c8da06e29ccaf2cc67eee822bd99ab10343674c GIT binary patch literal 21305 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 tC0S*z$@9NhXOA`6hDh>ApK{6\n" +"Language-Team: ghost \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.5.5\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "Definir formatos de fecha y hora:" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "Añadir evento a google" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "Propiedades Calendario" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "Clase" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "Fecha" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "Definir la agrupación:" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Definir máximos:" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "Descripción" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "Habitación" + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Seleccione los componentes a mostrar:" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "Mostrar en mapa Google" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "Mostrar ubicación en Google Maps" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "Título" + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "Desinstalar" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "Eventos Futuros" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "Actualización" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "Sitio" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "Semana % u" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "Qué" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "Cuándo" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "Dónde" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "calendario de eventos amr o listas con archivos iCal" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "Mostrar lista de eventos simple o altamente personalizable y estilizable. Maneja todo tipo de eventos recurrentes, notas, diarios, etc. Ofrece enlaces para agregar eventos a los espectadores del calendario o suscribirse al calendario entero. Escribe Página Calendario y ponga [iCal http://yoururl.ics] donde desea que la lista de eventos de un archivo ics y [eventos] obtenga los eventos internos. Para ajustar: Administración de la Página de Configuración , Gestione Widget " + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "Anmari" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "http://anmari.com /" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "Configuración" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "Ir a la agenda o la vista de lista" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "Agenda" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "Ir a la vista de calendario" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "Calendario" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "Ir a vista de mapa" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "Mapa" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "Ir a fecha" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "Ir a %1$s %2$s" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "Columna" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "Orden" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "Antes" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "Después" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "Por defecto" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Una lista predeterminada de la agenda. Ésta establecida en las tablas con listas en las celdas. Por lo general, necesita el archivo css habilitado. Si lo configura, le sugiero cambiar esta descripción para ayudar a su memoria de cómo / por qué se configura la forma en que lo está." + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "Año" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "Cuatrimestre" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "Estación Astronómica" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "Temporada Tradicional" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Zodiaco Occidental" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "Mes" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "Semana" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "Día" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "El nuevo valor predeterminado para un gran calendario mensual. No agrupación. No títulos. Si lo configura, le sugiero cambiar esta descripción para ayudar a su memoria de cómo / por qué se configura la forma en que está." + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Plugin de Eventos Anmari" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "No se han encontrado eventos dentro de los criterios" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Restablecer opciones..." + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Opciones eliminadas ..." + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "La opción no se ha guardado antes o error al eliminar la opción ..." + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "Convirtiendo tecla de opción en minúsculas" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "La Clase Fecha Hora debe estar disponible en su sistema para que este plugin funcione. Puede que tenga que estar habilitado en el momento de la compilación. La clase debe existir por defecto en la versión 5.2 de PHP." + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "el primero" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "cada" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "los últimos" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "los últimos %s" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "Los %s" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "Semanas comienzan el %s" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr "Y" + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "Cada" + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr "O" + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "Cada %s %s" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "En instancia %s dentro de %s" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "Tiempos %s" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "Hasta %s %s" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "si el mes es %s" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "En %s semanas del año" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "en el día %s del año" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "en el día %s de cada mes" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "En %s" + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "En la hora %s" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "en el minuto %s" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "en el segundo %s" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "Añadir a google calendar" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "Añadir a google" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "Error al crear directorio css personalizado %s. Por favor verifique los permisos" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "No se pudo copiar el archivo." + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "Última hora de Actualización inesperadamente no disponible" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "Actualizar calendarios" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "Última actualización fue en %s." + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Archivo remoto no tuvo modificaciones." + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "El archivo remoto fue modificada por última vez el %s." + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "Haz clic para actualizar" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "Cambia Zona Horaria" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "Zona horaria: %s, haga clic para %s" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "Enviado por" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Eventos totales:" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "X-WR-CALDESC" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "No hay descripción disponible" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "X-WR-CALNAME" + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "Suscribirse a Calendario %s" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "Suscríbase al calendario de su aplicación de calendario" + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "Suscríbase al calendario" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "no se puede cargar o poner en caché el calendario %s ical" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "Error al encontrar o analizar calendario ical %s" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "Esta función requiere el plugin amr-eventos" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "Consíguelo aquí" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "No ingresó url - ¿quería eventos desde publicaciones?" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "Ninguno de los componentes de iCal se solicitaron para mostrar" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "Diario" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "Semanal" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "Mensual" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "Anual" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "por hora" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "en determinadas fechas" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "Día" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "Semana" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "Mes" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "Año" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "Hora" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "URL Ical %s no válida" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "Fecha de Inicio no válida" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "Lista de Eventos iCal" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "Listado de Eventos" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "Listas de Eventos iCal" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "tipos de listas" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "Excepción no detectada:" + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "

                      Un error en los datos de entrada puede impedir la correcta visualización de esta página. . Por favor avise al administrador tan pronto como sea posible" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Error en formulario - arreglo CALPROP no encontrado" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "Nombre" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "Descripción Interna" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "Lista de estilos HTML" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "Tabla" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "Listas para las filas" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "HTML5 en tabla" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "HTML5 limpio y sencillo" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "Personalizado - archivo requerido" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "¡Saltos para las filas!" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "Calendario chico" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Calendario grande" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "Tabla con listas en las celdas (original)" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "Archivo de estil HTML personalizado en %s ..." + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "(Html ​​y algunos conocimientos de php requeridos)" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "URL del Evento predeterminada" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "(Para archivos ics en widget. Externa, o página de calendario.)" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "Más información" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "Note que los tiempos de caché están en horas" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "Entrada de Wikipedia describiendo componentes" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Especifique los campos a mostrar:" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Nota: un 0 (cero) en la columna = no mostrar ese campo" + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "Los campos en mayúsculas son los definidos en la especificación iCal" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "Los campos en minúsculas son campos añadidos por este plugin y derivados de los campos de iCal para su conveniencia" + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "Los campos se muestran si \"column\"> 0 y si se dispone de datos en su evento o archivo ics." + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Encabezados de Columna:" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "Documentación" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "Soporte" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "Videos" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "Califícalo en WP" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "Alimentación Plugin" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "Alimentación Foro" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "Su zona horaria versión db es: %s" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Plugin no puede determinar la versión de timezonedb en PHP < 5.3." + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "Versiones timezonedb Php" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Información sobre qué cambios se encuentran en qué versión de timezonedb" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "Sin zona horaria mundial ¿Hay un problema aquí?" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Usted está utilizando el ajuste gmt_offset \"viejo \"" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "Considere cambiar al ajuste más preciso de la zona horaria" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "Ir a la configuración" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "El plug-in piensa que su zona horaria es la siguiente:" + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "El offset UTC actual para esa zona horaria es:" + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Cambia a %s en %s. Offset GMT: %d" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Hora Actual (no localizada):" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Opciones Generales" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "Mensaje si no se encuentran eventos:" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "No le dé crédito al autor" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "Use mi tema css, no el Plugin css" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "No hay imágenes (marcar para el texto solamente)" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "El css proporcionado funciona con el valor por defecto del tema veinte-diez y temas similares. Su tema puede ser diferente." + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "Para editar el archivo, descargue el personalizado que agregará a la carpeta Uploads: upload/css." + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "Edítelo y luego vuélvalo a subir a esa misma carpeta. A continuación, selecciónelo en el cuadro de abajo." + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "Este archivo no se sobrescribe cuando se actualiza el plugin o cuando se actualiza su tema." + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "Más información" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Descargue el archivo css proporcionado más reciente para la edición" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "(opcional)" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Elija el css predeterminado del Plugin o seleccione un css personalizado y edítelo." + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "No se encontraron archivos CSS en el directorio css" + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Avanzado:" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "Su versión de PHP es: %s" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "Mínima versión Php 5.3 se requiere para eventos." + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Elija método de localización de fecha:" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "Ninguno" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "Amr" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "Wp" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "Wpgmt" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Guardando..." + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "Lista Guardada" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "Lista de Eventos iCal" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Ningún cambio a las opciones o un error inesperado en el guardado" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "Configurar tipo de lista de eventos:" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "Definir los formatos para los campos del día (por ejemplo: Fecha Evento, Fecha Final) y la hora (por ejemplo: hora de inicio, hora de finalización). En realidad se puede utilizar cualquiera de ellos para mostrar una cadena de Fecha completa también. Utilice la fecha del evento para las instancias de eventos - el campo DTSTART es la primera startdate de una secuencia de eventos recurrentes." + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "Estos también se utilizan para los encabezados de agrupación relacionados con la fecha (por ejemplo: Mostrará la fecha en este formato como un encabezado para ese grupo de fechas si relevante)" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "Utilice las cadenas de formato estándar de PHP:" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "Manual Php - formatos de fecha y hora" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "Ver cadenas de formato de función fecha php" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "(localizará)" + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "Guardar la configuración" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Desinstale el plugin y elimine las opciones de la base de datos." + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "Advertencia: Esto restablecerá TODAS las opciones de listado de inmediato." + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Restablezca todas las opciones de listado" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "Expandir / Contraer todo" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "Su directorio de caché %s se ha creado" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Error al crear el directorio de caché %s. Por favor, compruebe los permisos" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "Contenido de los datos inesperados. Informe al administrador." + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "Ver comentarios en la fuente para la respuesta recibida del servidor ICS" + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "Usando el último archivo pasado en caché en %s" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "Advertencia: Los eventos pueden estar desactualizados" + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "Ningún archivo ical en caché para los eventos" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "Lista de eventos próximos" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "Vea el sitio web del plugin para más detalles" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "URL de la página Calendario" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "Descripción del Título" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Haga un hipervínculo de resumen del evento con descripción de un evento como texto de título" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Sólo eventos externos" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "Mostrar eventos de ics externas solamente, no recoja eventos internos" + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "“Else†incluye eventos creados internamente también" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "URLs de Ics externos y opciones avanzadas" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "URLs de ics externos y / o parámetros shortcode opcionales separados por espacios)" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "Ejemplos: ListType=4 eventos = 10 días = 60 start = yyyymmdd StartOffset = -2 ... )" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "Ver más parámetros" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "Calendario de Eventos futuros" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "Ver más" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "URL de la página de Calendario en este sitio web, para enlaces de widgets" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "Ejemplos: ListType = 8 eventos = 10 días = 60 start = yymmdd StartOffset = -2 ... )" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "Url no válida" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "Trato de hacer que estos plugins funcionen \"fuera de la caja \" con el mínimo esfuerzo, para que sean fáciles de usar, pero muy configurable ; bien probados , con html y css válidos, tanto en la parte delantera como en el área de administración." + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "Si usted tiene una solicitud de prestación, por favor hágamelo saber" + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "Para editar eventos en:" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "Busque más" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "Busque anterior" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "Busque anterior" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "Busque más de %s" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-fr_FR.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..790e38868b7eab77898f4a6194646e3a507a6c51 GIT binary patch literal 47603 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 HUGjecm3-7x literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-fr_FR.po b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-fr_FR.po new file mode 100644 index 0000000..705b850 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-fr_FR.po @@ -0,0 +1,2465 @@ +msgid "" +msgstr "" +"Project-Id-Version: amr events calendar or lists with ical files v4.12\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-07-31 15:00+0100\n" +"PO-Revision-Date: 2014-09-20 11:32:38+0000\n" +"Last-Translator: FxB \n" +"Language-Team: FxB \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n>1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: French\n" +"X-Poedit-Country: FRANCE\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "Réglages" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "Options ical amr supprimés de la base de données" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "amr fichiers ical ics cache supprimé" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "Les fichiers CSS peuvent également exister. Ils et le dossier css n'ont pas été supprimés car ils ont été partagés avec d'autres extensions." + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "Aller aux événements de cette journée seulement" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "Colonne" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "Ordre" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "Avant" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "Après" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "Un lien pour permettre à l'utilisateur d'ajouter tout le calendrier à son calendrier Google." + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "Un lien pour permettre à l'utilisateur de récupérer un fichier ics" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "Le temps du fichier ics a été modifié" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "Titre d'article WordPress ou le SOMMAIRE ICS" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "Contenu WordPress ou la description ICS" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "Extrait WordPress" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "image à la une WordPress" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "Adresse" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "Lier à la carte" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "Lien pour ajouter un événement à un calendrier Google" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "Lien vers le fichier ics de l'événement unique" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "Lien vers le fichier ics de la série événement récurrents" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "La latitude et la longitude" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "Liens vers les pièces jointes spécifiques (ics)" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "WordPress ou fichier de catégories ics" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "Classe ics" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "ics commentaire" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "ics priorité d'événement" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "ics statuts d'événement" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "La date de l'instance d'une date de répétition, ou la date de l'événement" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "La durée de l'instance d'une date de répétition, ou la date de l'événement" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "La date une instance d'événement se termine. Vide si la même date que l'événement" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "Le temps l' instance de l'événement se termine." + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "La date de l'événement initial ou le premier d'une série récurrente" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "La date de l'événement d'origine ou de la première fin d'une série récurrente" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "La date d'échéance d'une tâche." + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "La durée de l'événement." + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "Dit \"toute la journée \" (traduit) si l'événement à jour complet." + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "Si une tâche est terminée." + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "Montrer occupée (traduit) si le composant freebusy est utilisé." + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "Les utilisateurs qui seront présents." + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "Ajouter bouton d'enregistrement. Les paramètres d'enregistrement peuvent être définis comme valeurs globales par défaut ou par événement." + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "Liens pour indiquer si présents." + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "Le contact de la personner si disponible." + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "L'auteur de l'événement." + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "Les utilisateurs qui seront présents." + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "L'identifiant unique d'une instance de récidive ou d'exception." + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "L'url d'événements tel que fourni par le fichier ics, ou le permalien de l'événement wordpress." + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "L'identifiant unique de l'événement." + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "Dates exclues de la série récurrente" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "Règle d'exclusion - plus dans les spec" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "Dates individuelles sur lesquelles l'événement doit être répété" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "La règle pour la récurrence de l'événement." + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "Action d'alarme." + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "Répétition d'alarme." + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "Déclenchement d'alarme." + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "Date de création de l'événement." + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "Date de publication de l'événement." + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "Niveau de modification de l'événement." + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "Date de dernière modification de l'événement." + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "Evénements dans un fichier ics" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "Articles dans un fichier ics qui indiquent créneaux horaires occupés ou disponibles" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "Articles tâche TODO dans un fichier ics" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "Notes de journal dans un fichier ics - pas de date ou d'heure" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "Aucun événement trouvé avec ces critères" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "Recherchez plus" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "Rechercher pour précédent" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "Réinitialiser" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "Valeur par défaut" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Une liste du calendrier par défaut. Celle-ci utilise des tableaux avec des listes dans les cellules. A besoin normalement que le fichier css soit activé. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "Année" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "Trimestre" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "Saison astrale" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "Saison traditionnelle" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Zodiaque occidentale" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "Mois" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "Semaine" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "Jour" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "Quand" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "Quoi" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "Où" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "Plus d'info :" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "à" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "Voir sur la carte Google" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "Montrer emplacement dans Google Maps" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "En Tournée" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Le réglage par défaut utilise la table d'origine avec des listes dans les cellules. Il est regroupé par mois. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "Lieu" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "Description" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "Calendrier" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Le réglage par défaut utilise la table d'origine avec des listes dans les cellules. Il est regroupé par jours. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "Date" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "Classe" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "Endroit" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "Widget" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Le réglage par défaut utilise pour un widget la table d'origine avec des listes dans les cellules. Parfait pour les thèmes qui ne peuvent pas utiliser des tableaux dans la barre latérale. Pas de regroupement. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "HTML5 Exp 1" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Style de tableau visant à utiliser les balises HTML5, mais toujours au sein d'une structure pour permettre des colonnes. On ne peut pas avoir deux niveaux de regroupement avec cette option car peut pas être imbriqué.Si vous le configurez, je vous suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "HTML5 Exp 2" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Une option de test HTML5 qui essaye d'être plus légère. Vous pouvez avoir deux niveaux de regroupement avec cette option. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "EventInfo" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Pour afficher les informations sur l'événement supplémentaires dans les articles créés comme des événements. Le résumé et une description sont désactivées car elles sont le titre et le contenu de l'article. Les propriétés du calendrier et les groupements ne sont pas pertinentes. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "Petit-Calendrier" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Le nouveau paramètre par défaut pour les widgets calendrier. Pas de regroupement, pas de titres. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "Grand-Calendrier" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "Le nouveau paramètre par défaut pour un grand calendrier par mois. Pas de regroupement, pas de rubriques. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il est." + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "Test" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Une option de test avec plein de champs allumé. Il dispose de 2 niveaux de regroupement - c'est très bien tant que le html en cours d'utilisation peuvent être imbriquées. Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il est." + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "Hebdomadaire horizontal" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "Comme le grand calendrier, mais différent - regroupées par semaine et les semaines continuent à travers les mois. Deux semaines doivent s'afficher." + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Si vous le configurez, je suggère de changer cette description comme aide mémoire de comment/pourquoi il est configuré de la façon dont il l'est." + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "Hebdomadaire verticale" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "Groupés par jour, mais seulement affichant 1 semaine. 3 colonnes, avec l'extrait et la description non complète. Pas d'icônes." + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "Maître de l'événement" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "Regroupés par catégorie, destiné à être utilisé sans récurences" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Réinitialisation options..." + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Options éffacées..." + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "L'option n'a pas été enregistrée avant ou erreur de suppression d'option..." + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "Touche option conversion en minuscules" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "Rechercher pour précédent" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "Quotidien" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "Hebdomadaire" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "Mensuel" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "Annuel" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "Horaire" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "à certaines dates" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "jour" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "semaine" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "mois" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "année" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "heure" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "Le DateTime classe doit être activé sur votre système pour que ce plugin fonctionne. Ils peuvent avoir besoin d'être activé à la compilation. La classe qui existe par défaut dans la version PHP 5.2." + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "%s ème" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "%s er" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "%s ème" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "%s ème" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "%s ème" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "le premier" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "tous les" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "le dernier" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "le %s dernier" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "le %s" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "Lundi" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "Mardi" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "Mercredi" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "Jeudi" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "Vendredi" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "Samedi" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "Dimanche" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "Erreur de création du répertoire personnalisée css %s. S'il vous plaît vérifier les autorisations" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "Impossible de copier le fichier." + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "Impossible de charger ou de mettre en cache le calendrier iCal %s" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "Erreur d'analyse ou de pour trouver le calendrier iCal %s" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "Cette fonctionnalité nécessite l'extension amr-events" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "Obtenez-le ici" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "Aucune url entrée - voulez-vous les événements de articles?" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "Aucun composant ical demandé pour l'affichage" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "Ical URL invalide %s" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "Erreur système - event list type %s est manquant - informer votre administrateur" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "Maintenant, en utilisant un type de liste disponible pour lister des événements" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "Date de début invalide" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "Exception non saisie :" + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "

                      Une érreur dans les données d'entrée peut empêcher l'affichage correct de cette page. S'il vous plaît informer l'administrateur le plus tôt possible." + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "Votre liste existante de types de liste a été converti. Si vous souhaitez revenir à la version antérieure de l'extension vous devrez réinitialiser les types de liste et réappliquer vos modifications. Ou utilisez votre sauvegarde DB pour définir l'option amr-ical-events-list à sa version précédente. Vous faites des sauvegardes régulières?" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "Les préférences générales des listes" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "Paramètres de type de liste" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "Documentation" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "Toute voir" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "Tout cacher" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "Aide" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "Vidéos" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "Notez-le sur WP" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "Fil du Plugin" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "Flux du forum" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "Votre version de db de fuseau horaire est la suivante: %s" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Le plugin ne peut pas déterminer la version timezonedb en php < 5.3." + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "Php timezonedb versions" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Info sur les changements en fonction de la version de la timezonedb" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "Aucun fuseau horaire globale - y a t-il un problème ?" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "Accédez aux réglages" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Vous utilisez l'\"ancien \" réglage gmt_offset" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "Pensez à changer plus précisement le reglage du fuseau horaire" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "Le plugin pense que votre fuseau horaire est le suivant:" + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "L'actuel décalage horaire pour ce fuseau horaire est le suivant:" + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Passe de %s à %s. Décalage GMT: %d" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Heure actuelle (non localisée):" + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "Enregistrer les paramètres" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "Mettre à jour" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Désinstaller le plugin et supprimer les options de la base de données." + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "Désinstaller" + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "Avertissement : Ceci réinitialisera TOUTES les options immédiatement." + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Réinitialiser toutes les options" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "Gérer les listes type d'événement " + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "Configurer la liste d'événement type:" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "Aperçu de la liste en utilisant une page de calendrier." + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "Prévisualiser" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Sauvegarde..." + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "Listes sauvegardées" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Aucun changement aux options ou erreur inattendue lors de la sauvegarde" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "Vérifiez pour les listes à supprimer" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "Listes %s seront supprimés" + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Têtes de colonne :" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "Propriétés du Calendrier" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Spécifiez les champs à voir :" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Note: un 0 (zéro) dans la colonne = ne pas montrer ce champ." + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "Champs en majuscules sont ceux définis dans le cahier des charges iCal." + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "Les champs minuscules sont des champs supplémentaires ajoutées par ce plugin et provenant des champs iCal pour votre commodité." + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "Afficher les champs si \"colonne\"> 0 et s'il n'y a pas des donnée disponible dans votre événement ou dans le fichier ics." + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "Champ" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "(0 pour cacher)" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "Définir groupement:" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "Regroupements possibles" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "Niveau" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "Pas de regroupement" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "Taxinomies" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "(Requiert amr-events)" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "Basé sur la date" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "(Voir aussi les formats de date et d'heure)" + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Sélectionnez les composants à montrer :" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "entrée Wikipedia décrivant les composants" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Définir maximales :" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "Note cache times sont en heures" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "Configurer une autre liste d'événement type:" + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "Retour au gestionnaire des listes type" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "Svp utiliser des numéros >1" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "Paramètres importés pour la liste %s sont incorrects - pas enregistré" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "La liste %s sera enregistré avec des données importées" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "Configurer :" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "Cliquez pour choisir les champs, les colonnes et définir d'autres paramètres." + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "Configurer" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "URL de la page Calendrier des aperçus doit être saisi ci-dessus" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "n/a" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "Entrez un numéro de liste pour commencer un type de liste avec les nouveaux paramètres par défaut." + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "Après cela, couper et coller à partir de la liste type la plus proche de ce que vous voulez pour vous lancer" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "Liste d'Événements iCal" + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "Liste sauvegardée" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "iCal Liste d'Événements" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "Liste des Événements" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "iCal Events Lists" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "Listes des types" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Erreur dans le formulaire - tableau calprop non trouvé" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "Nom" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "Description interne" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "Autre :" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "Style de la liste HTML" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "Tableau" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "HTML5 dans les tableaux" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "HTML5 propre et efficace" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "Personnalisé - fichier requis" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "Espaces pour les lignes" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "Calendrier petite boite " + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Calendrier grande boite " + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "Calendrier Semaines" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "Listes des lignes" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "*Éviter - obsolète" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "Tableau avec des listes dans des cellules (d'origine)" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "Fichier personnalisé de style HTML à %s..." + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "(Html et quelques connaissances en PHP requises)" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "URL de l'événement par défaut" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "(Pour les fichiers ICS dans le widget. Externe ou une page de calendrier)." + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "Plus d'informations" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Options Générales" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "Styles et Images" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "Avancé" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "Message si aucun événement trouvé :" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "Cherchez plus de message d'événements :" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "Cherchez des messages d'événements précédents :" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "Réinitialiser le message des événements :" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "Utilisez le temps humain comme midi, minuit" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "Ne pas créditer l'auteur" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "Utilisez javascript pour réduire les groupements d'événements" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "Utiliser mon thème css, pas le css du plugin" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "Aucune image (cocher pour le texte uniquement)" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "Taille de l'icône :" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "16" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "32" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "Le css fourni fonctionne avec le thème par défaut twenty-ten et des thèmes similaires. Votre thème peut être différent." + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "Pour modifier le fichier, téléchargez celui personnalisé ajouté à votre dossier de téléchargements: uploads/css." + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "Modifiez le et re-télécharger dans le même dossier. Ensuite, sélectionnez-le dans la case ci-dessous." + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "Ce fichier ne sera pas écrasé lorsque l'extension est mise à jour ou si votre thème est mis à jour." + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "Plus d'info" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Téléchargez le dernier fichier css prévu pour le modifier" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "(optionnel)" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Choisissez le css du plugin par défaut ou choisissez un css personnalisé et modifier le." + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "Aucun fichiers css trouvé dans le répertoire css" + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Avancé :" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "Votre version php est : %s" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "version Php 5.3 minimale requise pour la mise en cache des événements." + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "La mise en cache des événements générés pour les réutiliser sur une même page (par exemple: widget assortie d'une liste) ne seront pas tentées." + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "Apparemment les objets ne sont pas correctement sérialiser en php <5.3." + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Choisissez la méthode de localisation de la date:" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "aucun" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "amr" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "wp" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "wpgmt" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "Délai d'attente HTTP pour les fichiers ics externes :" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "Choisissez les secondes le delai d'attente avant d'aller chercher chaque fichier ics" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "Avertissement - 30 secondes, c'est long ! Laissez-le plutôt utiliser le cache si les choses sont lentes" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "Page URL du Calendrier pour les aperçus:" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "Entrez l'url d'une page avec [events] ou [largecalendar] dans le contenu à utiliser pour les prévisualisations de type liste." + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "Cliquez sur le nom de chaque type de liste ci-dessous pour configurer cette liste." + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "Aller sur le site de l'extension pour la documentation." + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "Aide à la configuration" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "Soyez prudent lors de l'édition ou de la suppression - certains types de listes sont utilisés par défaut par des shortcodes et des widgets." + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "Ajouter listtype =n dans les paramètres du shortcode ou du widget pour utiliser un autre type de liste." + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "Attention : Ceci effacera immédiatement toutes les listes types sélectionnées." + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "Supprimer" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "Liste" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "Pour exporter ou copier une liste type" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "Selectionner TOUT le contenu, et le COPIER." + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "L'encodage est pour éviter les erreurs lors de la copie et du collage." + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "La chaîne entière doit être sélectionnée (elle doit l'être quand vous cliquez sur la zone de texte)" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "Le type de liste est un énorme tableau." + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "Sans encodage, il y avait différents problèmes avec les barres obliques. L'encodage était plus stable." + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "Pourquoi encoder ?" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "Pour exporter ou copier une liste type" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "COLLER la chaine de la liste type d'événement " + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "Si vous n'avez pas produit la chaîne et êtes préoccupé par les contenus, alors inspectez la chaîne de type liste à l'aide d'un outil de décodage. Vous devriez voir un tableau sérialisé." + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "Cliquez pour rechercher des outils de décodage" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "Décodage d'essai" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "Définir les formats de date et heure:" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "Définir les formats pour la journée (par exemple: Date de l'événement, à la clôture) et le temps (par exemple: Heure de début, Heure de fin) des champs. Vous pouvez aussi utiliser tous ces formats pour afficher une chaîne de temps plein. Utilisez la date de l'événement pour les instances de l'événement - le champs DTSTART est la date de début pour une séquence d'événements récurrents." + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "Ils sont également utilisés pour les titres des groupement des dates rubriques connexes (à savoir: affiche la date dans ce format comme un titre pour ce groupe de dates si nécessaire.)" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "Utilisez les chaînes standard de format de PHP:" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "Manuel PHP - formats de date et heure -" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "Voir les formats des chaînes php de la fonction des dates" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "(Se localiser)" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "Étendre/Tout contracter" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "Pourquoi ne pas faire quelques uns (ou tous) des éléments suivants :" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "Faire un lien vers l'extension afin que d'autres puissent également la connaître." + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "Si vous avez des problèmes avec cette extension ou de bonnes idées d'améliorations ou de nouvelles fonctionnalités, s'il vous plaît parlez en dans le" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "Forum de soutien (en anglais)" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "Semaines démarrent le %s" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr "et" + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "tous les" + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr "ou" + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "Tous les %s %s" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "Le %s par exemple au sein de %s" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "%s fois" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "jusqu'à ce que %s %s" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "si le mois est %s" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "en %s semaines de l'année" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "en %s jours de l'année" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "en %s jours de chaque mois" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "en %s" + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "à la %s heure" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "à la %s minute" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "à l'%s secondes" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "%u année" +msgstr[1] "%u années" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "%u mois" +msgstr[1] "%u mois" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "%u semaine" +msgstr[1] "%u semaines" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "%u jour " +msgstr[1] "%u jours " + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "%u heure " +msgstr[1] "%u heures " + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "%u minute" +msgstr[1] "%u minutes" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "%u seconde" +msgstr[1] "%u secondes" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "Changer Fuseau Horaire" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "Fuseau Horaire: %s, Cliquez pour %s" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "Votre cache du répertoire %s a été créé" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Erreur de création du répertoire cache %s. S'il vous plaît vérifier les autorisations" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "Contenu des données inattendue. Contacter votre administrateur." + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "Voir les commentaires dans la source pour la réponse reçue du serveur ics." + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "Erreur d'obtention du fichier de calendrier par http ou curl %s" + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "Utiliser le dernier fichier mis en cache à %s" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "Dernier fichier mis en cache indisponible" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "Avertissement: Les événements peuvent être passés." + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "Aucun fichier mis en cache pour les événements iCal" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "minuit" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "midi" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "Aller à l'agenda ou à la vue par liste" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "Agenda" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "Aller au format calendrier" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "Calendrier" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "Voir sur la carte" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "Carte" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "Aller à la date" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "»»" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "Semaine commençant %1$s" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "←" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "→" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "Aller à %1$s %2$s" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "Semaine commence %s" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "heures" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "mois" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "jours" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "montrer les événements passés" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "Montrer moins" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "Montrer plus" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "Montrer beaucoup moins" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "Montrer beaucoup plus" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "montrer les événements à venir" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "montrer 10 événements maximum si disponible" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "montrer 50 événements maximum si disponible" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "montrer 100 événements maximum si disponible" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "L'attachement de l'événement" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "toute la journée" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "Voir les événements dans %s %s" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Total des événements:" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "Aucune description disponible." + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "Abonnez-vous au %s Calendrier" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "Abonnez-vous à l'agenda dans votre application de calendrier." + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "Abonnez-vous à l'agenda" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "Ajouter à l'agenda google" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "Ajouter à google" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "Ajouter un événement à google" + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "Dernière actualisation du temps indisponible de façon inattendue" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "Actualiser calendriers" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "Dernier raffraichissement à %s." + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Le fichier distant n'a pas eu de modifications." + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "Le fichier distant a été modifiée le %s" + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "Cliquez pour rafraîchir" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "Semaine %u" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "Cherchez plus de %s" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "Retourner à la vue initiale" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "Retour aux événements précédents" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "Envoyé par" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "Événements à venir" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "Liste des Événements à venir" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "Voir le site de l'extension pour plus de détails" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "Titre" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "URL de la page Calendrier" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "Url de la page du calendrier dans ce site" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "Description \"au passage\" sur le titre" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Faites un lien hypertexte résumé de l'événement avec description de l'événement comme texte de titre" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Événements exterieurs uniquement" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "Montrer uniquement les événements de l'ics externe, ne collecte AUCUN événement interne." + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "Sinon inclure les événements créés à l'interne aussi" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "Urls ics externes et options avancées" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "Urls ics externes et/ou paramètres des raccourcis optionnels séparés par des espaces.)" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "Exemples : listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "Voir plus de paramètres" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "Calendrier d'Événements à venir " + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "Voir plus" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "URL de la page du calendrier dans ce site, pour les liens du widget" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr " Exemples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "URL invalide" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "J'essaie de faire fonctionner cette extension \"hors de la boîte \" avec un minimum d'effort, qu'elle soit facile à utiliser mais aussi très configurable ; bien testée , avec du code html et css validés à la fois à l'avant et dans la zone d'administration." + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "Si vous avez une demande de fonctionnalité, s'il vous plaît faites le moi savoir." + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "Pour modifier un événement dans WordPress :" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "Mettre à niveau à amr-events à" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "Gardez tous ces réglages et les listes" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "Offre de nombreux autres intérets." + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "En savoir plus" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Extension d'Événements par anmari" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "Cliquer pour inverser" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page
                      and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-hi_IN.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-hi_IN.mo new file mode 100644 index 0000000000000000000000000000000000000000..bd13cb7e51f5fc8d50921da8cc565d36aaca01e4 GIT binary patch literal 5508 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-hi_IN.po b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-hi_IN.po new file mode 100644 index 0000000..884eeed --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-hi_IN.po @@ -0,0 +1,2465 @@ +msgid "" +msgstr "" +"Project-Id-Version: amr events calendar or lists with ical files v4.12\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/amr-ical-events-list\n" +"POT-Creation-Date: 2009-12-23 11:25+0000\n" +"PO-Revision-Date: 2014-09-20 11:34:01+0000\n" +"Last-Translator: Ashish \n" +"Language-Team: Outshine Solutions \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: hindi\n" +"X-Poedit-Country: india\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: \n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "(सà¥à¤¥à¤¾à¤¨à¥€à¤¯ बनाना होगा)" + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "लोअरकेस की कà¥à¤‚जी विकलà¥à¤ª बदलने" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr " तारीख और समय पà¥à¤°à¤¾à¤°à¥‚पों को परिभाषित करें:" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "% u दिन" +msgstr[1] "% u दिन" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "% u घंटे" +msgstr[1] "% u घंटे" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "% u मिनट" +msgstr[1] "% u मिनट" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "%u महीने" +msgstr[1] "%u महीने" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "%u सेकेंड " +msgstr[1] "%u सेकेंड " + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "% u सपà¥à¤¤à¤¾à¤¹" +msgstr[1] "% u सपà¥à¤¤à¤¾à¤¹" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "%u साल" +msgstr[1] "%u साल" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "गूगल से घटना. जोड़े " + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "खगोलीय सीजन" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "कैलेंडर गà¥à¤£" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "ककà¥à¤·à¤¾" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "तिथि" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "दिन" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "समूह परिभाषित करें:" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Maximums परिभाषित करें:" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "विवरण" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr " तà¥à¤°à¥à¤Ÿà¤¿ बनाने में कैश निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा %s. कृपया अनà¥à¤®à¤¤à¤¿ की जांच" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "फारà¥à¤® में तà¥à¤°à¥à¤Ÿà¤¿ -- calprop सरणी नहीं मिला" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Anmari दà¥à¤µà¤¾à¤°à¤¾ घटनाकà¥à¤°à¤® पà¥à¤²à¤—इन" + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "पिछले ताज़ा अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ रूप उपलबà¥à¤§ नहीं. " + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "अगर कोई घटनाओं पाया संदेश" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "महीने" + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "विकलà¥à¤ª नषà¥à¤Ÿ कर दिया गया ..." + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "Php मैनà¥à¤…ल - तिथि DateTime पà¥à¤°à¤¾à¤°à¥‚प" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "पà¥à¤²à¤—इन फ़ीड" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "कà¥à¤µà¤¾à¤°à¥à¤Ÿà¤°" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "विकलà¥à¤ª Resetting" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "कमरा" + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "चà¥à¤¨à¥‡à¤‚ घटक दिखाने के लिà¤:" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "सेटिंगà¥à¤¸" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "गूगल में दिखाà¤à¤ नकà¥à¤¶à¤¾" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "गूगल मैपà¥à¤¸ में दिखाà¤à¤ सà¥à¤¥à¤¾à¤¨" + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "सदसà¥à¤¯à¤¤à¤¾ के लिठकैलेंडर %s" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr " दिनांक समय ककà¥à¤·à¤¾ इस पà¥à¤²à¤—इन का काम करने के लिठअपने सिसà¥à¤Ÿà¤® पर सकà¥à¤°à¤¿à¤¯ होना चाहिà¤. वे समय संकलन में सकà¥à¤·à¤® हो सकता है. वरà¥à¤— PHP 5.2 संसà¥à¤•रण में डिफ़ॉलà¥à¤Ÿ रूप से मौजूद होना चाहिà¤." + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "समयकà¥à¤·à¥‡à¤¤à¥à¤°: %s, कà¥à¤²à¤¿à¤• के लिठ%s" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "शीरà¥à¤·à¤•" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "कà¥à¤² घटनाओं:" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "पारंपरिक सीजन" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "लोड या कैश करने में असमरà¥à¤¥ राजनैतिक कैलेंडर %s" + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ रदà¥à¤¦ करें" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "भावी घटनाकà¥à¤°à¤®" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "नवीनतम " + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "मानक पà¥à¤°à¤¾à¤°à¥‚प PHP तार का पà¥à¤°à¤¯à¥‹à¤— करें:" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "सà¥à¤¥à¤¾à¤¨" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "सपà¥à¤¤à¤¾à¤¹" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "सपà¥à¤¤à¤¾à¤¹ %u" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "पशà¥à¤šà¤¿à¤®à¥€ राशि" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "कà¥à¤¯à¤¾" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "कब" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "जहाà¤" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "साल" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "अपने कैश निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा% s है बनाया गया है" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "http://anmari.com/" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "" + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr "" + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "" + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr "" + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "" + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "" + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "" + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "" + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "" + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "" + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "" + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "" + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "" + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "" + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "" + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "" + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "" + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "" + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "" + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "" + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "" + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "" + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "" + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "" + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "" + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "" + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "" + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-it_IT.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-it_IT.mo new file mode 100644 index 0000000000000000000000000000000000000000..4ddc9ec3bebcb04c642aa6985a3403a0ffb1bf7c GIT binary patch literal 43672 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 y@$Rr*O^J#>G!ue\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: Italian\n" +"X-Poedit-Country: ITALY\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "Impostazioni" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "Colonna" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "Ordinamento" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "Prima" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "Dopo" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "Un link per consentire agli utenti di aggiungere un intero calendario al loro calendario Google." + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "Un link per consentire agli utenti il recupero di un file ics" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "L'ora di ultima modifica del file ics" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "Il titolo dell'articolo WordPress or ICS SUMMARY" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "Il contenuti WordPress o la descrizione ICS" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "Riassunti di WordPress" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "Miniatura articolo di WordPress" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "Indirizzo" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "Link alla mappa" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "Link per aggiungere un evento al calendario Google" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "Link al file ics del singolo evento" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "Link al file ics dell'evento ricorrente" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "Latitudine e longitudine:" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "Link agli ALLEGATI specificati (ics)" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "Categorie WordPress o del file ics" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "Classe ics" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "Commento ics" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "Priorità evento ics" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "Stato evento ics" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "Data dell'istanza di una data ripetuta o della data evento" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "Ora dell'istanza di una data ripetuta o della data evento" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "Data di fine dell'istanza di un evento. Vuoto se uguale alla data dell'evento" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "Ora di fine dell'istanza di un evento." + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "Data originale o prima data dell'evento di una serie di ricorrenze" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "Data originale o fine data dell'evento di una serie di ricorrenze" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "Scadenza di un impegno" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "Durata di un evento" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "rispondi \"all day\" (tradotto) se l'evento ha giornate intere." + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "Se l'impegno è completato." + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "Mostra occupato (tradotto) se il componente freebusy è in uso." + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "Utenti che hanno accettato." + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "Link per indicare se si partecipa." + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "Contatto, se disponibile." + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "Autore di un evento" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "Utenti che parteciperanno." + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "ID univoco dell'istanza di una ricorrenza o dell'eccezione." + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "URL degli eventi fornito dal file ics o il permalink dell'evento WordPress." + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "Identificativo unico dell'evento." + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "Date escluse dalle serie ricorrenti" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "Regola di esclusione - non più nelle specifiche" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "Date individuali durante le quali l'evento è ripetuto" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "Regola per la ricorrenza dell'evento." + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "Azione allarme." + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "Ripetizione allarme" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "Innesco allarme." + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "Data evento creata." + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "Data di pubblicazione evento." + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "Livello di modifica dell'evento." + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "Data di ultima modifica dell'evento." + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "Nessun evento trovato con questi criteri." + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "Predefinito" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Lista calendario predefinita. Questo imposta delle tabelle con delle liste in ciascuna cella. Di solito necessita l'attivazione del file CSS. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "Anno" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "Trimestre" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "Stagione astronomica" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "Stagione tradizionale" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Zodiaco occidentale" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "Mese" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "Settimana" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "Giorno" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "Quando" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "Cosa" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "Dove" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "Ulteriori informazioni:" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr " a " + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "Mostra in Google Maps" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "Mostra luogo in Google Maps" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "In giro" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Le impostazioni predefinite utilizzano la tabella originale con elenchi nelle celle, raggruppata per mese. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "Luogo" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "Descrizione" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "Orario" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Le impostazioni predefinite utilizzano la tabella originale con elenchi nelle celle, raggruppata per giorno. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "Data" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "Classe" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "Stanza" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "Widget" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Le nuove impostazioni predefinite per i widget utilizzano delle lista per le righe della tabella. Ottimo per temi che non riescono a gestire le tabelle nella sidebar. Nessun raggruppamento. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "HTML5 Esp 1" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "HTML5 Esp 2" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Nuova opzione di test che tenta di essere più snella. Con questa opzione è possibile avere due livelli di raggruppamento. Con questa opzione, non si possono avere due livelli di raggruppamento, poiché tbody non può essere nidificato. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "EventInfo" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Per la visualizzazione di informazioni addizionali sull'evento negli articoli creati come eventi. Il sommario e la descrizione sono disattivati poiché questi sono il titolo e il contenuto dell'articolo. Anche le proprietà del calendario e i raggruppamento non sono rilevanti. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "Calendario piccolo" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Nuove impostazioni predefinite per il widget calendario. Nessun raggruppamento, nessuna intestazione. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "Calendario grande" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "Nuove impostazioni per il calendario mensile grande. Nessun raggruppamento, nessuna intestazione. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "Test" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Opzione di testo con molti dei campi attivati. Ha solo due livelli di raggruppamento - questo va bene per ora, poiché l'HTML utilizzato può essere nidificato. Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "Settimanale orizzontale" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "Come il calendario grande, ma diverso - raggruppato per settimane e le settimane continuano lungo i mesi. Devono essere visualizzare due settimane per volta." + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr " Se lo configuri, suggerisco di modificare questa descrizione per aiutarti a ricordare come/perché è configurato in questo modo." + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "Settimanale verticale" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "Raggruppato per giorno, ma con una sola settimana. Tre colonne, con il riassunto, non la descrizione completa. Nessuna icona." + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Reimpostazione opzioni..." + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Opzioni eliminate..." + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "L'opzione non è stata precedentemente salvata, oppure si è verificato un errore cancellando l'opzione..." + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "Converto la chiave dell'opzione in minuscolo" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "Giornaliero" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "Settimanale" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "Mensile" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "Annuale" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "Ogni ora" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "in alcuni giorni" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "giorno" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "settimana" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "mese" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "anno" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "ora" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "La classe DateTime deve essere abilitata nel tuo sistema, affinché questo plugin possa funzionare. Potrebbe essere necessario abilitarla in fase di compilazione. La classe deve esistere di default nella versione 5.2 di php." + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "%s°" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "%s°" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "%s°" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "%s°" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "%s°" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "il primo" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "ogni " + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "l'ultimo" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "il %s° ultimo" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "il %s" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "La settimana inizia di %s" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr " e " + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "ogni " + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr " oppure " + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "Ogni %s %s" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "Nella %s istanza in %s" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "%s volte" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "fino %s %s" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "Se mese è %s" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "in %s settimane dell'anno" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "il %s giorno dell'anno" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "il %s giorno di ciascun mese" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "il %s" + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "alle ore %s" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "%s minuti" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "%s secondi" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "Aggiungi a Google Calendar" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "Aggiungi a Google" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "Aggiungi evento a Google" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "Errore nella creazione della cartella CSS personalizzato %s. Controlla i permessi" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "Impossibile copiare il file." + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "Ora ultimo aggiornamento è inaspettatamente non disponibile" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "Aggiorna calendari" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "Ultimo aggiornamento alle %s" + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Il file remoto non ha modifiche." + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "Il file remoto è stato modificato il %s." + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "Clicca per aggiornare" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "%u anno" +msgstr[1] "%u anni" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "%u mese" +msgstr[1] "%u mesi" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "%u settimana" +msgstr[1] "%u settimane" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "%u giorno" +msgstr[1] "%u giorni" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "%u ora" +msgstr[1] "%u ore" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "%u minuto" +msgstr[1] "%u minuti" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "%u secondo" +msgstr[1] "%u secondi" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "Cambia fuso orario" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "Fuso orario: %s, clicca per %s" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "Maggiori informazioni" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "%uª settimana" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "Impossibile caricare o mettere in cache il calendario iCal %s" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "Errore nel trovare o nell'analizzare il calendario iCal %s" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "Questa caratteristica richieste il plugin amr-events" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "Ottienilo qui" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "Nessun url inserito - vuoi gli eventi per gli articoli?" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "Nessun componente iCal richiesto per la visualizzazione" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "URL iCal %s non valido" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "Data inizio non valida" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "Eccezione non gestita:" + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "

                      Un errore nei dati inseriti potrebbe impedire la corretta visualizzazione di questa pagina. Informa il prima possibile l'amministratore." + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "Le tue tipologie di lista esistenti sono state convertite. Se desideri tornare alla versione precedente del plugin, dovrai reimpostare le tipologie di lista e riapplicare le tue modifiche. In alternativa puoi utilizzare il backup del tuo database per reimpostare le opzioni di amr-ical-events-list alla versione precedente. Esegui dei backup regolari, vero?" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "Impostazioni generali elenchi" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "Impostazioni tipologie di lista" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "Documentazione" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "Lista eventi iCal" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "Lista eventi" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "Elenchi eventi iCal" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "Tipologie elenchi" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Errore nel modulo - array calprop non trovato" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "Nome" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "Descrizione interna" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "Altro:" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "Lista stile HTML" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "Tabella" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "Elenchi per righe" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "HTML5 nella tabella" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "HTML5 pulito" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "Personalizzato - file richiesto" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "Interruzioni per righe!" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "Box calendario piccolo" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Box calendario grande" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "Calendario settimanale" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "Tabella con elenchi nelle celle (originale)" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "File HTML personalizzato in %s..." + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "(è richiesta la conoscenza di HTML e un po' di php)" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "URL predefinito evento" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "(per file ics nei widget. Esterno o pagina calendario)" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Definisci massimi valori:" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "Nota che i tempi di cache sono in ore" + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Seleziona i componenti da mostrare:" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "Voci Wikipedia che descrivono i componenti" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "Definisci raggruppamento:" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "Proprietà calendario" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Specifica i campi da mostrare:" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Nota: uno 0 (zero) in colonna = non mostrare il campo." + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "I campi in maiuscolo sono quelli definiti nelle specifiche iCal." + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "I campi in minuscolo sono campi additionali, aggiunti da questo plugin e derivati per comodità dai campi iCal." + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "I campi sono mostrati se \"colonna\" > 0 e se sono presenti dati nel tuo evento o nel file ics." + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "Campo" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "(0 da nascondere)" + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Intestazioni colonna:" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "Supporto" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "Video" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "Valuta su WP" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "Feed del plugin" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "Feed del forum" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "La versione del fuso orario del tuo db è: %s" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Il plugin non può determinare la versione del fuso orario in php < 5.3." + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "Versione timezonedb di php" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Informazioni sulle differenze fra le versioni di timezonedb" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "Nessuna timezone globale - c'è un problema?" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Stai usando le \"vecchie\" impostazioni gmt_offset" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "Considera di passare ad un'impostazione più accurata delle impostazioni del timezone" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "Vai alla impostazioni" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "Il plugin pensa che la tua timezone sia:" + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "La differenza UTC corrente per questa timezone è:" + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Passa da %s a %s. Differenza GMT: %d" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Ora corrente (non localizzata):" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Opzioni generali" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "Messaggio se non è stato trovato alcun evento:" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "Non dare credito all'autore" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "Stile e immagini" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "Utilizza il css del mio tema, non il css del plugin" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "Nessuna immagine (spunta per solo testo)" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "Dimensione immagine icona:" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "16" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "32" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "Il CSS fornito funziona con il tema di default twenty-ten e temi simili. Il tuo tema potrebbe essere diverso." + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "Per modificare questo file, scarica quello personalizzato, aggiunto alla tua cartella uploads: uploads/css." + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "Modificalo e quinti ricaricalo sulla stessa cartella. Quindi selezionalo nella casella di seguito." + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "Il file non sarà sovrascritto quando il plugin o il tema saranno aggiornati." + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "Ulteriori informazioni" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Scarica per la modifica il css più recente" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "(opzionale)" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Scegli il css predefinito del plugin o scegli un css personalizzato e modificalo." + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "Nessun css trovato nella cartella css" + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Avanzato:" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "La tua versione di php è: %s" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "Versione minima 5.3 di php per caching degli eventi." + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Scegli il metodo di localizzazione della data:" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "nessuno" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "amr events" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "wp" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "wpgmt" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "Lista eventi iCal" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Salvataggio..." + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "Lista salvata" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "Configura un'altra tipologia di lista:" + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "Torna alla gestione tipologie di lista" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "Utilizza numeri > 1" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "Impostazioni importate per la lista %s non valide - non salvate" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "La lista %s sarà salvata con i dati importati" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "Configura:" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "Clicca per scegliere i campi, le colonne e impostare altri parametri." + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "Configura" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "visualizza in anteprima la lista utilizzando una pagina calendario." + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "Anteprima" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "Inserire sopra l'URL pagina calendario per le anteprime" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "n/d" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "Inserisci il numero della lista per iniziare una tipologia di lista con nuove impostazioni predefinite." + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "URL pagina calendario per anteprime:" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "Inserisci l'RUL di una pagina che contiene [events] o [largecalendar] nel contenuto, per usarla come anteprima della tipologia di lista." + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "Clicca il nome di ciascuna tipologia di lista qui sotto, per configurarla." + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "Visita il sito del plugin per la documentazione." + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "Aiuto sulla configurazione" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "Prestare molta attenzione quando si modifica o elimina - alcune tipologie di lista sono predefinite per shortcode e widget." + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "Aggiungi listtype=n nei parametri dello shortcode o del widget per usare un altra tipologia di lista." + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "Attenzione: questo eliminerà immediatamente tutte le tipologie di lista selezionate." + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "Elimina" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "Lista" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "Per esportare o copiare una tipologia di lista" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "Seleziona TUTTO il contenuto e COPIA." + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "La codifica serve a prevenire errori quando si copia e incolla." + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "Bisogna selezionare la stringa intera (dovrebbe esserlo quando si clicca nella casella di testo)" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "La tipologia di lista è un array enorme." + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "Senza encoding, si sono presentati diversi problemi con gli slashes. L'encoding si è rivelato più stabile." + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "Perché encodare?" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "Per importare o incollare una tipologia di lista" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "INCOLLA QUI la stringa della tipologia di lista" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "Se non hai fornito una stringa e sei interessato ai contenuti, ispeziona la stringa della tipologia di lista, utilizzando uno strumento di decodifica. Dovresti vedere un array serializzato." + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "Clicca per cercare uno strumento di decodifica" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "Test decodifica" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "Seleziona le liste da eliminare" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "La lista %s sarà eliminata" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "Gestisci le tipologie liste evento" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "Configura la tipologia di lista eventi:" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "Lista salvata" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Nessuna modifica alle opzioni o errore inaspettato nel salvataggio" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "Definisci i formati data e ora:" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "Definisce i formati dei campi giorno (es.: Data evento, Fine evento) e ora (es.: Ora inizio, Ora fine). Puoi utilizzare uno qualunque di questi anche per visualizzare una string completa data completa. Utilizza la data evento per le istanze dell'evento - il campo DTSTART è la prima data inizio della sequenza di evento ricorrente." + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "Questi sono anche utilizzati per le intestazioni di raggruppamento delle date correlate (es.: sarà mostrata la data in questo formato come intestazione per questo raggruppamento di date, se necessario)." + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "Usa il formato stringa standard di php:" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "Manuale php - formati data e ora" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "Vedi le stringe di formato data delle funzioni" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "(sarà localizzato)" + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "Salva le impostazioni" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "Aggiorna" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Disinstalla il plugin ed elimina le opzioni dal database." + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "Disinstalla" + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "Attenzione: questo reimposterà immediatamente TUTTE le opzioni della lista." + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Reimposta tutte le opzioni della lista" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "Espandi/contrai tutto" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "La tua cartella cache %s è stata creata" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Errore nel creare la cartella cache %s. Controllare i permessi" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "Contenuti inaspettati. Informare l'amministratore." + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "Vedi i commenti nel sorgente per le risposte ricevute dal server ics." + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "Utilizzo dell'ultimo file memorizzato in %s" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "Avviso: gli eventi potrebbero non essere aggiornati." + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "Nessun file ical memorizzato per gli eventi" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "mezzanotte" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "mezzogiorno" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "Vai all'agenda o alla visualizzazione lista" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "Agenda" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "Vai alla visualizzazione calendario" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "Calendario" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "Vai alla visualizzazione mappa" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "Mappa" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "Vai alla data" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "»»" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "Settimana a partire da %1$s" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "←" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "→" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "Vai a %1$s %2$s" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "Settimana a partire da %s" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "ore" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "mesi" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "giorni" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "mostra eventi passati" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "mostra di meno" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "mostra di più" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "mostra molto meno" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "mostra molto di più" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "mostra eventi futuri" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "mosta 10 eventi al massimo, se possibile" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "mostra 50 event al massimo, se possibile" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "mosta 100 eventi al massimo, se possibile" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "Allegato evento" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "Visualizza gli eventi in %s %s" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Totale eventi:" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "Nessuna descrizione disponibile" + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "Abbonati al calendario %s" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "Abbonati al calendario nella tua applicazione calendario." + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "Abbonati al calendario" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "Inviato da" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "Prossimi eventi" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "Lista prossimi eventi" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "Visita il sito del plugin per maggiori dettagli" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "Titolo" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "URL pagina del calendario" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "Descrizione su hover del titolo" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Crea un hyperlink di sintesi evento, con la descrizione dell'evento come testo del titolo" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Solo eventi esterni" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "Mostra evento solo per ics esterni, NON prendere alcun evento interno." + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "Altrimenti includi anche eventi creati internamente" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "URL ics esterni e opzioni avanzate" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "URL ics esterni e/o parametri shortcode opzionali, separati da virgole.)" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "Esempi: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "Mostra più parametri" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "Calendario prossimi eventi" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "Continua" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "URL pagina calendario in questo sito, per link da widget" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "Esempi: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "URL non valido" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "Cerco di rendere questi plugin funzionanti \"chiavi in mano\", che richiedano il minimo sforzo, che siano facili da usare, ma molto configurabili, ben testati, con HTML e CSS validi, sia nel front-end, sia nel back-end." + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "Se hai una richiesta, fammelo sapere." + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "Per modificare gli eventi in wordpress:" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Events plugin di anmari" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-lt_LT.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-lt_LT.mo new file mode 100644 index 0000000000000000000000000000000000000000..5500b52786c8d9b488981a71f5d8ef050632fb83 GIT binary patch literal 3906 zcmeH}Pi!1l9mgMSD5Rx@1_3H6^fjfZh{Q$ZfNQ4*m@NgUZJmI^|Qcb|7hnVnh9 z%-V^1$vO=cszomCrRraaTZQB}cKv^&3iZ;{jKmc#oRE5h8zAxdzM1uI)1+KDVy*W( z^WN|M{(OIb-u~s#f!7Ux-{b#r{*Qe@Z^r!cK4ZRH;{os`-oFlB1-}oz1|9`>>h-^Y z5AgnP@QdJq`;B=PeE2~gq+k;K8hE_M3*bY%2jIgG^3dVod8}Uso4l`a>Kou=sCx{2 z7JL*u14`j9z;A=U1`mNRfr{XFpw7Jy{vG@ff?fnK^S&-E+L(aHXTT{?mM(*`^d|Td@O|)U z@UP%=;K8qO20R9?qwo?aLr-!@3_b_S^C?j0-U7A%NAL;oPoS9l2dKyo@ZuwShzBiv z6O`b0Kzqu~hq1HGAa^#1n>G(S&dw)kC&;r&W0TaH6V0Y|3og!Wp4e8Bv?6Ctbf#^1 zGKlO{HxH9IvrQMd+%@fdnsn@`AP?q(Y)ou6Y_?qfU!>9J;%1QAZklvmnujhkCxf`* zB6BhdGG3B6596MbBNw7xD~xRvX5O#LzMT&vm)Rh*i!O=`emGM{*h-ULH;h}8!-Y<8 zIqdX0M0v_(jWqOunA1McvtfM6oKN5+Z-<$k@5K#;X;arp7BG;volWYN`Y)nJD9#=Ul@`; zEV|?D%)@8fBJArdGt)`ZF*B5IBlig-J#p@7CP|BvW`=J|R6p}oZ#zM^T8feeVUf7e z-npQgnVH_4N@>nl=+KP0sEiCt2-Yd@g|JDpv|UQqQLnKLLV7Q;S<-Q;k;Qgm+v41% zZ4}dXRC(Kl=~!9RMI|2sdr3)F6)c8XTNRqv+;zH18l)j?RE6tPH{|s*bt_NCa*VB} zo9ngcvXrz#;VTS){RUN)+DBijh<*fhnaju<2c#m!=+SRJ14YoUC#TtZ@< zQ^R3cyp6Tru(&x2uDm7-C_*Pz%D(lwHe^v7ds;59SDsd9Wr)2GighduP`^K9?@)%= z#@)4*eUuD}t+J1b)ndgK+e0U0wY*y1F#F0pD+Y-jcKT)Cc+Lh04p{oY^8;)B;x+^* z_HD}}!o@8-*z+zTyi?w=`#L>?T6h_;Erf|fOu}`sa`&_pw{Ytknq}sy4tRQ?c=8?x zc8hKN*;FR6zAPq-txDK?Dt0+;6ck%KBEhn@qF}~SXo^3`Eu6*v9!kl>crXy8+UP6U zoEE9x!7UV0HDuxLN&Wu?Fky;!NX~9~1A<|H(iU&=t^&UWkrmG*eDJ@&6pA-Uv0DBW z`lxDy!KdyA%0@N5Nr`THPwJZUGlH$Um5;0VZjyHuWHmq(3941&zL_*6w%OnH)!_?# zm3q5Lk!ZFotNXNjn`3)^5HN7+j#2Pl-v;c^d84=LB5>m$x- z8N~$G35<7TRg5Y# z+t4%1FQp6qmlA#uzy>;ZkhYqoxV$0@>SWyr)s*M(XlT{hB~8klB-H5sZn#&A-!)oLSqydP0%e%<$6}D3K`JvWE-c)#kg~HrcPLW y>kKQGB9I0}Ro&K%ZXHla{_>{Kxbe$ZR4`S$-C~2gM6j-_U&cmP)VSqh%lrqzo!x2x literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-lt_LT.po b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-lt_LT.po new file mode 100644 index 0000000..1d4998f --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-lt_LT.po @@ -0,0 +1,2465 @@ +msgid "" +msgstr "" +"Project-Id-Version: amr events calendar or lists with ical files v4.5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-07-12 16:06+0100\n" +"PO-Revision-Date: 2014-04-21 18:05:19+1000\n" +"Last-Translator: \n" +"Language-Team: Nata Strazda \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: Lithuanian\n" +"X-Poedit-Country: LITHUANIA\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: ..\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "Nustatykite datos ir laiko formatus:" + +#: includes/amr-ical-pretty-print.php:72 +#@ amr-ical-events-list +msgid " or " +msgstr "arba" + +#: includes/amr-pluggable.php:846 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "PridÄ—ti renginį \"Google\"" + +#: includes/amr-ical-list-admin.php:251 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "kalendorius savybÄ—s" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "klasÄ—" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "data" + +#: includes/amr-ical-list-admin.php:342 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "Nustatykite grupÄ—s:" + +#: includes/amr-ical-list-admin.php:438 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Apibrėžti maksimalÅ«s:" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "apraÅ¡ymas" + +#: includes/amr-pluggable.php:874 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "atnaujinti kalendorius" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "kambarys" + +#: includes/amr-ical-list-admin.php:413 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Pasirinkite komponentai parodyti:" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "Rodyti Google žemÄ—lapis" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "Rodyti vietÄ… \"Google Maps\"" + +#: includes/amr-pluggable.php:722 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "Prenumeruoti į kalendorių" + +#: includes/amr-upcoming-events-widget.php:140 +#: includes/amr-upcoming-events-widget.php:280 +#@ amr-ical-events-list +msgid "Title" +msgstr "pavadinimas" + +#: includes/amr-ical-list-admin.php:132 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "paÅ¡alinti" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:116 +#: includes/amr-upcoming-events-widget.php:186 +#: includes/amr-upcoming-events-widget.php:269 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "Artimiausi renginiai" + +#: includes/amr-ical-list-admin.php:125 +#@ amr-ical-events-list +msgid "Update" +msgstr "atnaujinti" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "Renginio vieta" + +#: includes/amr-pluggable.php:1006 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "SavaitÄ—% u" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "kÄ…" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "kai" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "kur" + +#: includes/amr-ical-list-admin.php:712 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "iCal Renginiai sÄ…raÅ¡as" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "amr Renginių kalendorius arba sÄ…raÅ¡us su iCal failai" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "Rodyti paprasta arba labai pritaikyti ir styleable renginių sÄ…rašą. Rankenos visų pasikartojanÄių įvykių, pažymi, žurnalai, laisvalaikiui ir užimtas ir tt siÅ«lo ryÅ¡ius pridÄ—ti renginių kalendorių žiÅ«rovų arba užsisakyti visÄ… kalendorių. RaÅ¡yti Kalendorius Puslapis ir įdÄ—ti [iCal http://yoururl.ics], jei norite įvykių nika failÄ… ir [renginiai] sÄ…rašą, gauti vidaus įvykius. Ä®gnybti: Valdymas nustatymų puslapyje , Valdymas widget ." + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "anmari" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "http://anmari.com/" + +#: includes/amr-ical-events-list-main.php:2364 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "Nustatymai" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "Grįžti į darbotvarkÄ™, ar sÄ…raÅ¡o rodinį" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "darbotvarkÄ—" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "Eiti į kalendoriaus rodinį" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "kalendorius" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "Eiti į žemÄ—lapio vaizdÄ…" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "žemÄ—lapis" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "Rodyti datÄ…" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "Eiti į %1$s %2$s" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Column" +msgstr "skiltis" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:296 +#@ amr-ical-events-list +msgid "Order" +msgstr "tvarka" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Before" +msgstr "prieÅ¡" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "After" +msgstr "po" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "numatytasis" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "NumatytÄ…jį kalendorių sÄ…raÅ¡as. Tai vienas lentelių sÄ…raÅ¡us lÄ…stelÄ—se. Paprastai reikia CSS failo įjungtas. Jei konfigÅ«ruoti, aÅ¡ siÅ«lau pakeisti šį apraÅ¡ymÄ… pagalbos savo atminties kaip / kodÄ—l ji yra sukonfigÅ«ruota taip, kad ji yra." + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "metai" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "ketvirtis" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "astronomijos sezonas" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "tradiciniai sezonas" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Vakarų Zodiako ženklai" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "mÄ—nuo" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "savaitÄ—" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "diena" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "Naujas numatytasis parametras didelis mÄ—nesio kalendorius. Nr grupÄ—je Nr pozicijose. Jei konfigÅ«ruoti, aÅ¡ siÅ«lau pakeisti šį apraÅ¡ymÄ… pagalbos savo atminties kaip / kodÄ—l ji yra sukonfigÅ«ruota taip, kad ji yra." + +#: includes/functions.php:287 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Renginiai įskiepiai anmarients plugin pagal anmari" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "Renginių nerasta per kriterijus" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Atstatyti parinkÄių ..." + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Parinktys IÅ¡trinta ..." + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "Variantas nebuvo iÅ¡saugoti prieÅ¡ arba klaida iÅ¡braukiant variantas ..." + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "Option klavišą, konvertavimas į mažąsias" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr " Datetime klasÄ—s , turi bÅ«ti įjungta jÅ«sų sistema Å¡iuo įskiepiai į darbÄ…. Joms gali prireikti, turi bÅ«ti įjungtas kompiliavimo metu.KlasÄ— turÄ—tų egzistuoti 5.2 versija PHP pagal nutylÄ—jimÄ…." + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "pirmasis" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "kiekvienas" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "paskutinis" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "paskutinio %s" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "%s" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "Savaites pradÄ—ti %s" + +#: includes/amr-ical-pretty-print.php:33 +#: includes/amr-ical-pretty-print.php:41 +#: includes/amr-ical-pretty-print.php:57 +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgid " and " +msgstr "ir" + +#: includes/amr-ical-pretty-print.php:43 +#@ amr-ical-events-list +msgid "every " +msgstr "kiekvienas" + +#: includes/amr-ical-pretty-print.php:109 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "kiekvienas %s %s" + +#: includes/amr-ical-pretty-print.php:119 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "Pavyzdžiui, per %s %s" + +#: includes/amr-ical-pretty-print.php:124 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "% s laikas" + +#: includes/amr-ical-pretty-print.php:129 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "iki %s %s" + +#: includes/amr-ical-pretty-print.php:131 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "jei mÄ—nesio yra% s" + +#: includes/amr-ical-pretty-print.php:133 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "% s metų savaites" + +#: includes/amr-ical-pretty-print.php:135 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "% s metų dienÄ…" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "% s kiekvieno mÄ—nesio dienÄ…" + +#: includes/amr-ical-pretty-print.php:137 +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "% s" + +#: includes/amr-ical-pretty-print.php:149 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "%-ai val." + +#: includes/amr-ical-pretty-print.php:150 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "%-ai minuÄių" + +#: includes/amr-ical-pretty-print.php:151 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "% s antrasis" + +#: includes/amr-pluggable.php:828 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "PridÄ—ti į \"Google\" kalendoriaus" + +#: includes/amr-pluggable.php:830 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "PridÄ—ti į \"Google\"" + +#: includes/amr-ical-events-list-main.php:304 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "Klaida kuriant užsakymÄ… CSS katalogo% s. PraÅ¡ome patikrinti leidimus" + +#: includes/amr-ical-events-list-main.php:326 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "Nepavyksta kopijuoti failo." + +#: includes/amr-pluggable.php:870 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "Paskutinį kartÄ… atnaujinta LAIKAS netikÄ—tai nÄ—ra" + +#: includes/amr-pluggable.php:875 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "Paskutinį kartÄ… atnaujinti buvo bent% s" + +#: includes/amr-pluggable.php:877 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Paskutinį karta atnaujinti was smilga% s" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "Nuotolinio failo paskutinį kartÄ… keistas% s." + +#: includes/amr-pluggable.php:886 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "SpustelÄ—kite atnaujinti" + +#: includes/amr-pluggable.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "% U metai" +msgstr[1] "% U metai" + +#: includes/amr-pluggable.php:1755 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "% U mÄ—nesį" +msgstr[1] "% U mÄ—nesį" + +#: includes/amr-pluggable.php:1760 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "% U savaitÄ—s" +msgstr[1] "% U savaitÄ—s" + +#: includes/amr-pluggable.php:1765 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "% U dienÄ…" +msgstr[1] "% U dienÄ…" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "% u val." +msgstr[1] "% u val." + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "% U minutÄ™" +msgstr[1] "% U minutÄ™" + +#: includes/amr-pluggable.php:1781 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "% ir antra" +msgstr[1] "% ir antra" + +#: includes/amr-pluggable.php:1800 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "keisti laiko juostÄ…" + +#: includes/amr-pluggable.php:1801 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "Laiko juosta:% s,% s Spauskite" + +#: includes/amr-pluggable.php:1442 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "siunÄiami" + +#: includes/amr-pluggable.php:689 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Viso renginių:" + +#: includes/amr-pluggable.php:692 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "X-WR-CALDESC" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "No description available" +msgstr "NÄ—ra apraÅ¡ymo" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "X-WR-CALNAME" + +#: includes/amr-pluggable.php:703 +#: includes/amr-pluggable.php:713 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "Prenumeruoti į% s Kalendorius" + +#: includes/amr-pluggable.php:720 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "Prenumeruoti į kalendorių savo kalendoriaus programoje." + +#: includes/amr-ical-events-list-main.php:1362 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "Nepavyko įkelti arba talpyklos iCal kalendorių% s" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "Klaidos ieÅ¡kant ar apdorojant iCal kalendorių% s" + +#: includes/amr-ical-events-list-main.php:1406 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "Å i funkcija reikalauja įskiepiai AMR-renginiai" + +#: includes/amr-ical-events-list-main.php:1407 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "Jį gauti Äia" + +#: includes/amr-ical-events-list-main.php:1536 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "Nr URL įraÅ¡ytas norite renginiai iÅ¡ žinutes?" + +#: includes/amr-ical-events-list-main.php:1569 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "NÄ—ra iCal komponentai praÅ¡oma rodyti" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "kasdien" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "kas savaitÄ™" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "kas mÄ—nesį" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "kasmet" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "valandinis" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "dÄ—l tam tikrų datų" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "diena" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "savaitÄ—" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "mÄ—nuo" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "metai" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "valanda" + +#: includes/amr-ical-events-list-main.php:1742 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "Neteisingas iCal URL% s" + +#: includes/amr-ical-events-list-main.php:1966 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "Neteisinga pradžios data" + +#: includes/amr-ical-list-admin.php:720 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "sÄ…raÅ¡u Renginiai" + +#: includes/amr-ical-list-admin.php:740 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "iCal Renginiai sÄ…raÅ¡ai" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "List types" +msgstr "tipų sÄ…raÅ¡o" + +#: includes/amr-ical-events-list-main.php:2327 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "Uncaught, iÅ¡skyrus:" + +#: includes/amr-ical-events-list-main.php:2328 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "

                      duomenų įvesties klaida gali trukdyti teisingai rodyti Å¡io puslapio. PraÅ¡ome informuoti administratorius kuo greiÄiau." + +#: includes/amr-ical-list-admin.php:956 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Klaida forma - calprop masyvo nerastas" + +#: includes/amr-ical-list-admin.php:1026 +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "Name" +msgstr "pavadinimas" + +#: includes/amr-ical-list-admin.php:1030 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "vidaus apraÅ¡ymas" + +#: includes/amr-ical-list-admin.php:1060 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "SÄ…raÅ¡as HTML Stilius" + +#: includes/amr-ical-list-admin.php:1062 +#@ amr-ical-events-list +msgid "Table" +msgstr "lentelÄ—" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "SÄ…raÅ¡us eilutÄ—se" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "LentelÄ—je HTML5," + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "HTML5 Å¡varus ir Lean" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "Pasirinktinis - failas reikalingas" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "Pertraukas eilutÄ—se!" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "Nedidelį langelį kalendorius" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Didelis langas kalendorius" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "LentelÄ— su lÄ…stelių sÄ…raÅ¡us (originalas)" + +#: includes/amr-ical-list-admin.php:1077 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "Individualizuotos HTML stiliaus failÄ…% s. .." + +#: includes/amr-ical-list-admin.php:1078 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "(HTML ir PHP žinias, reikalingas)" + +#: includes/amr-ical-list-admin.php:1089 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "Ä®sipareigojimų nevykdymo atveju URL" + +#: includes/amr-ical-list-admin.php:1091 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "(ICS failus valdikliui. IÅ¡orÄ—s arba kalendoriaus puslapį.)" + +#: includes/amr-ical-list-admin.php:1093 +#: includes/amr-pluggable.php:812 +#@ amr-ical-events-list +msgid "More information" +msgstr "daugiau informacijos" + +#: includes/amr-ical-list-admin.php:441 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "Pastaba talpyklos laikas valandomis" + +#: includes/amr-ical-list-admin.php:415 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "Wikipedia įraÅ¡as apraÅ¡yti komponentai" + +#: includes/amr-ical-list-admin.php:277 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Nurodykite laukus parodyti:" + +#: includes/amr-ical-list-admin.php:280 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Pastaba: skiltyje = 0 (nulis) nerodo, kad srityje." + +#: includes/amr-ical-list-admin.php:282 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "DidžiÄ…sias yra tos sritys, iCal specifikacijoje apibrėžta." + +#: includes/amr-ical-list-admin.php:286 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "Mažosiomis laukai yra papildomi laukai pridÄ—ti šį įskiepiai ir iÅ¡plaukianÄios iÅ¡ iCal srityse, JÅ«sų patogumui." + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "Laukuose rodoma, jei \"skiltyje \"> 0 ir, jei yra duomenų savo renginį arba ICS failÄ…." + +#: includes/amr-ical-list-admin.php:225 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Stulpelių antraÅ¡tes:" + +#: includes/amr-ical-events-list-main.php:2366 +#: includes/amr-ical-list-admin.php:27 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "dokumentacija" + +#: includes/amr-ical-list-admin.php:30 +#@ amr-ical-events-list +msgid "Support" +msgstr "parama" + +#: includes/amr-ical-list-admin.php:33 +#@ amr-ical-events-list +msgid "Videos" +msgstr "Vaizdo klipai" + +#: includes/amr-ical-list-admin.php:36 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "NormÄ…, kuriÄ… ji ne DG" + +#: includes/amr-ical-list-admin.php:38 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "Ä®skiepis paÅ¡arų" + +#: includes/amr-ical-list-admin.php:43 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "Forumas paÅ¡arų" + +#: includes/amr-ical-list-admin.php:67 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "Savo laiko juostÄ… dB versija:% s" + +#: includes/amr-ical-list-admin.php:69 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Ä®jungti negalima nustatyti timezonedb versija PHP <5.3." + +#: includes/amr-ical-list-admin.php:72 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "PHP timezonedb versijas" + +#: includes/amr-ical-list-admin.php:74 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Informacija apie tai, kokie pakeitimai yra timezonedb versija" + +#: includes/amr-ical-list-admin.php:77 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "Nr pasaulio Laiko juosta - yra problema?" + +#: includes/amr-ical-list-admin.php:84 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "JÅ«s naudojate \"senas \" gmt_offset nustatymas" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "Apsvarstyti galimybÄ™ pakeisti tiksliau laiko juostÄ…" + +#: includes/amr-ical-list-admin.php:80 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "Eikite į Nustatymai" + +#: includes/amr-ical-list-admin.php:90 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "Ä®skiepiai galvoja savo laiko juostÄ…:" + +#: includes/amr-ical-list-admin.php:94 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "EsamÄ… UTC kompensuoti, kad laiko juostÄ…:" + +#: includes/amr-ical-list-admin.php:107 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Perjungia į% s% s. GMT offset:% d" + +#: includes/amr-ical-list-admin.php:113 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Dabartinis laikas (unlocalised):" + +#: includes/amr-ical-list-admin.php:1127 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Bendros parinktys" + +#: includes/amr-ical-list-admin.php:1148 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "Renginių nerasta praneÅ¡imÄ…, jeigu:" + +#: includes/amr-ical-list-admin.php:1195 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "Nesuteikia kredito autoriui" + +#: includes/amr-ical-list-admin.php:1211 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "Naudokite mano tema CSS, o ne plugin CSS" + +#: includes/amr-ical-list-admin.php:1218 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "Nr vaizdus (tik pažymÄ—ti, tekstas)" + +#: includes/amr-ical-list-admin.php:1234 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "CSS darbų numatytÄ…jį dvideÅ¡imt deÅ¡imt tema ir panaÅ¡iomis temomis. JÅ«sų tema gali bÅ«ti skirtingi." + +#: includes/amr-ical-list-admin.php:1236 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "NorÄ—dami redaguoti failÄ…, atsisiųsti užsakymÄ… pridÄ—ta į jÅ«sų įkelti aplankÄ…: paveiksliukai / CSS." + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "Redaguokite jÄ… ir tada iÅ¡ naujo įkelti į tÄ… patį aplankÄ…. Tada pasirinkite jį į žemiau esantį laukelį." + +#: includes/amr-ical-list-admin.php:1239 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "Å is failas negali bÅ«ti perraÅ¡yti kai įskiepiai, modernizuotose arba kai jÅ«sų tema yra tobulinama." + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "More info" +msgstr "daugiau informacijos" + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Atsisiųskite naujausiÄ… CSS failÄ… redagavimui" + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "(pasirinktinai)" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Pasirinkite įjungti numatytÄ…jÄ… CSS arba pasirinkti pasirinktinį css ir jį redaguoti." + +#: includes/amr-ical-list-admin.php:1245 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "NÄ—ra failų CSS CSS katalogas rasti" + +#: includes/amr-ical-list-admin.php:1255 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Detali:" + +#: includes/amr-ical-list-admin.php:1257 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "JÅ«sų PHP versija yra:% s" + +#: includes/amr-ical-list-admin.php:1259 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "Minimalus PHP versija 5,3 renginių cacheing." + +#: includes/amr-ical-list-admin.php:1267 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Pasirinkite data lokalizacijos metodas:" + +#: includes/amr-ical-list-admin.php:1270 +#@ amr-ical-events-list +msgid "none" +msgstr "nÄ— vienas" + +#: includes/amr-ical-list-admin.php:1272 +#@ amr-ical-events-list +msgid "amr" +msgstr "amr" + +#: includes/amr-ical-list-admin.php:1274 +#@ amr-ical-events-list +msgid "wp" +msgstr "wp" + +#: includes/amr-ical-list-admin.php:1276 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "wpgmt" + +#: includes/amr-ical-list-admin.php:184 +#: includes/amr-ical-list-admin.php:686 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Taupymo ...." + +#: includes/amr-ical-list-admin.php:690 +#@ amr-ical-events-list +msgid "List saved" +msgstr "sÄ…raÅ¡as iÅ¡saugotas" + +#: includes/amr-ical-list-admin.php:673 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "iCal Renginiai sÄ…raÅ¡as" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Jokių pokyÄių, pasirinkimo sandoriai ar netikÄ—ta klaida, taupymo" + +#: includes/amr-ical-list-admin.php:170 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "KonfigÅ«ruoti įvykių sÄ…rašą tipas:" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "Nustatykite dienÄ… (pvz.: Ä®vykio data, pabaigos data) formatus ir laikas (pvz.: Pradžios laikas, Pabaigos laikas) srityse. JÅ«s iÅ¡ tikrųjų galite naudoti bet kurį iÅ¡ Å¡ių, rodyti visÄ… data laiko eilutÄ™ per. Naudokite Renginio data įvykių atvejais - DTSTART srityje yra pirmoji startdate pasikartojantį įvykį seka." + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "Tai yra taip pat naudojamas datos, susijusios grupÄ—s pozicijos (ty: rodys datÄ… tokio formato kad datas prireikus grupÄ—s pozicijoje.)" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "Naudokite standartinius PHP formato eilutÄ—s:" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "PHP Manual - data datetime formatus" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "PHP datos funkcija formato eilutÄ—s" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "(bus lokalizuoti)" + +#: includes/amr-ical-list-admin.php:123 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "IÅ¡saugoti nustatymus" + +#: includes/amr-ical-list-admin.php:130 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "PaÅ¡alinti įskiepiai ir iÅ¡trinti iÅ¡ duomenų bazÄ—s galimybes." + +#: includes/amr-ical-list-admin.php:137 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "Ä®spÄ—jimas: Tai bus iÅ¡ naujo visus biuletenius galimybių nedelsiant." + +#: includes/amr-ical-list-admin.php:140 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Atstatyti visų Skelbimo parinktys" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "IÅ¡plÄ—sti / Sutartis visus" + +#: includes/amr-import-ical.php:36 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "JÅ«sų talpyklos kataloge% s buvo sukurta" + +#: includes/amr-import-ical.php:39 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Klaida kuriant talpyklos aplanko% s. PraÅ¡ome patikrinti leidimus" + +#: includes/amr-import-ical.php:67 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "NetikÄ—ta duomenų turinys. PraÅ¡ome pasakyti administratorius." + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "Žr. pastabas Å¡altinis GavÄ™s atsakymÄ… iÅ¡ serverio nika." + +#: includes/amr-import-ical.php:162 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "Naudojant Failas paskutinis iÅ¡saugotas% s" + +#: includes/amr-import-ical.php:166 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "Ä®spÄ—jimas: Renginiai gali bÅ«ti pasenusi." + +#: includes/amr-import-ical.php:172 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "Nr talpyklÄ… failÄ… iCal Renginiai" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "BÅ«simi renginiai sÄ…raÅ¡as" + +#: includes/amr-upcoming-events-widget.php:137 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "Daugiau informacijos žr. Ä®skiepiai svetainÄ—je" + +#: includes/amr-upcoming-events-widget.php:146 +#: includes/amr-upcoming-events-widget.php:286 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "Kalendorius puslapio URL" + +#: includes/amr-upcoming-events-widget.php:153 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "DÄ—l pavadinimo užveskite apraÅ¡ymas" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Ar įvykio santrauka hipersaitÄ… su atveju apraÅ¡ymas Pavadinimas Tekstas" + +#: includes/amr-upcoming-events-widget.php:161 +#: includes/amr-upcoming-events-widget.php:293 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Tik iÅ¡orÄ—s įvykių" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "Rodyti įvykius iÅ¡ iÅ¡orÄ—s nika tik ne pikapas bet vidaus įvykių." + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "Kita apima įvykius sukurtas viduje per" + +#: includes/amr-upcoming-events-widget.php:169 +#: includes/amr-upcoming-events-widget.php:301 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "IÅ¡orÄ—s ICS URL ir iÅ¡plÄ—stines parinktis" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "IÅ¡orÄ—s nika URL ir / arba pasirinktinai Trumpa parametrai atskiriami tarpais)." + +#: includes/amr-upcoming-events-widget.php:171 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "Pavyzdžiai: listtype = 4 įvykiai = 10 dienų = 60 pradžia = YYYYMMDD startoffset =- 2 ... )" + +#: includes/amr-upcoming-events-widget.php:173 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "Daugiau parametrų" + +#: includes/amr-upcoming-events-widget.php:189 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "BÅ«simi Renginių kalendorius" + +#: includes/amr-upcoming-events-widget.php:278 +#@ amr-ical-events-list +msgid "See more" +msgstr "ŽiÅ«rÄ—ti daugiau" + +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "Kalendorius puslapio URL Å¡ioje svetainÄ—je, nuorodos iÅ¡ valdikliui" + +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "Pavyzdžiai: listtype = 8 įvykiai = 10 dienų = 60 pradžia = YYMMDD startoffset =- 2 ... )" + +#: includes/functions.php:199 +#: includes/functions.php:203 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "Neleistinas URL" + +#: includes/functions.php:243 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "AÅ¡ stengiuosi, kad Å¡ių įskiepių darbo \"out of box \" su minimaliomis pastangomis, kad jie bÅ«tų lengva naudoti, taÄiau labai konfigÅ«ruojama ; gerai iÅ¡bandyta ; Valid HTML ir CSS , tiek priekyje ir administratoriaus srityje." + +#: includes/functions.php:244 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "Jei turite funkcija, praÅ¡ome let me know." + +#: includes/functions.php:246 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "NorÄ—dami redaguoti renginiai WordPress:" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.5" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1379 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1828 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1830 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2335 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2362 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2365 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:155 +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:177 +#: includes/amr-ical-list-admin.php:631 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:186 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:203 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:210 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:292 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:346 +#@ default +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:346 +#@ default +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:358 +#@ default +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:367 +#@ default +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:367 +#@ default +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:386 +#@ default +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:386 +#@ default +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:481 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:494 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:531 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:574 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:580 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:622 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:626 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:636 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:661 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:663 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:1054 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ default +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1155 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1165 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1172 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1179 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1190 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1204 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1224 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1227 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1231 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1280 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1285 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1294 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1310 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1323 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1325 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1327 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1333 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1337 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1341 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1344 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1352 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1355 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:142 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:144 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#: includes/amr-import-ical.php:158 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:164 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:579 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:619 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:648 +#: includes/amr-pluggable.php:655 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:649 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:1280 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1382 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#: includes/amr-pluggable.php:1384 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1392 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1398 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/amr-pluggable.php:1408 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1413 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:147 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/functions.php:27 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:248 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:253 +#@ default +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:255 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:256 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:303 +#@ default +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-nl_NL.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-nl_NL.mo new file mode 100644 index 0000000000000000000000000000000000000000..23e338c19c862a7822fd97ead1a108ca2698e602 GIT binary patch literal 41499 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ÉjJ7pbBHnkRH6%KfV>TeAC7FI*ohqMld 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\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: Dutch\n" +"X-Poedit-Country: NETHERLANDS\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "amr events calendar or lists with iCal files" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "http://icalevents.com" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page
                      and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "Toon een eenvoudige of een in hoge mate aangepaste lijst van events. Behandelt alle soorten terugkerende gebeurtenissen, notities, dagboeken, vrij/bezet enz. Toont links zodat bezoekers zowel een enkel event aan hun eigen kalender toe kunnen voegen als zich op je hele kalender kunnen abonneren. Schrijf een kalender pagina en zet [iCal http://yoururl.ics] waar je de lijst met events van een iCalendar-bestand wilt tonen en [events] waar je interne events wilt zien. Om aan te passen: Beheer Instellingen Pagina, Beheer Widget." + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "anmari" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "http://anmari.com/" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "Instellingen" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "Ga naar events voor deze dag alleen" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "Kolom" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "Volgorde" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "Voor" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "Na" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "Een link om het gebruikers mogelijk te maken de hele kalender toevoegen aan hun Google Agenda." + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "Een link om het gebruikers mogelijk te maken een iCalendar-bestand opnieuw op te halen" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "Het tijdstip dat het iCalendar-bestand voor het laatst is gewijzigd" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "WordPress titel of iCalendar SUMMARY" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "WordPress inhoud of iCalendar DESCRIPTION" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "WordPress fragment" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "WordPress miniatuurweergave" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "Adres" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "Link naar Google Maps" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "Link om een event toe te voegen aan Google Agenda" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "Link naar een iCalendar-bestand met een enkel event" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "Link naar een iCalendar-bestand met een serie terugkerende events" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "De lengte-en breedtegraad" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "Link naar gespecificeerde ATTACHMENTS (iCalendar)" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "WordPress of iCalendar categorieën " + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "iCalendar klasse" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "iCalendar opmerkingen" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "iCalendar event prioriteit" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "iCalendar event status" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "De datum van een event (of één van de datums van een terugkerend event)" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "Het tijdstip van een event (of één van de tijdstippen van een terugkerend event)" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "De datum waarop een event eindigt. Wordt niet getoond indien gelijk aan begindatum " + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "Het tijdstip waarop een event eindigt. " + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "De allereerste begindatum van een serie terugkerende events" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "De allereerste einddatum van een serie terugkerende events" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "De vervaldag van een taak." + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "De duur van een event." + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "Toont \"hele dag\" (vertaald) indien het event volledige dagen omvat." + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "Als een taak voltooid is." + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "Toon \"Bezet\" (vertaald) indien het freebusy veld wordt gebruikt." + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "Gebruikers die geaccepteerd hebben." + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "Voeg een aanmeld knop toe. Registratie instellingen kunnen globaal of per event ingesteld worden." + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "Links om aan te geven of men aanwezig is." + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "De contactpersoon; indien van toepassing." + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "De organisator van het event." + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "Gebruikers die aanwezig zullen zijn." + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "De unieke ID van een afzonderlijk evenement of de waarde van een exception." + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "De events URL uit het iCalendar-bestand of de events permalink van WordPress." + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "De unieke ID van het event." + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "Uitgesloten data van een serie terugkerende evenementen" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "Uitsluitingsregel - niet meer in de specificatie" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "Afzonderlijke data waarop het event wordt herhaald" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "De regel voor de herhaling van het event." + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "Alarm actie." + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "Alarm herhaling." + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "Alarm activering." + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "Datum waarop het event is gecreëerd." + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "Datum waarop het event is gepubliceerd." + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "Modificatie niveau van het event." + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "Datum waarop het event voor het laatst is gewijzigd." + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "Events in een iCalendar-bestand" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "Velden in een iCalendar-bestand die vrije of bezette perioden aangeven" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "To-do taken in een iCalendar-bestand" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "Dagboeknotities in een iCalendar-bestand - geen datum of tijd" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "Geen events gevonden binnen de criteria" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "Kijk voor meer" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "Op zoek naar eerdere" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "Terugzetten" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "Standaard" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Een standaard kalender. Deze gebruikt lijsten binnen tabellen. Het CSS bestand moet ingeladen zijn. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "Jaar" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "Kwartaal" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "Astronomisch seizoen" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "Traditioneel seizoen" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Westerse dierenriem" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "Maand" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "Week" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "Dag" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "Wanneer" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "Wat" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "Waar" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "Meer informatie: " + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr " naar" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "Toon in Google Maps" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "Toon locatie in Google Maps" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "Op tournee" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Standaard optie gebruikt de originele tabel met daarin lijsten. Het is gegroepeerd per maand. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "Plaats" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "Omschrijving" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "Tijdschema" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Standaard optie gebruikt de originele tabel met daarin lijsten. Het is gegroepeerd per dag. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "Datum" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "Klas" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "Kamer" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "Widget" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "De nieuwe standaard optie voor widgets gebruikt lists voor de tabelrijen. Geschikt voor theme's die niet goed om kunnen gaan met tabellen in de zijbalk. Geen groepering. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "HTML5 Exp 1" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Tabel stijl gericht op gebruik van HTML5 tags, maar nog steeds binnen een tabel structuur om kolommen mogelijk te maken. Groepering op twee niveau's is niet mogelijk omdat de tbody-tag niet genest kan worden. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "HTML5 Exp 2" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Een HTML5 test optie die eleganter probeert te zijn. Met deze optie is het mogelijk om op twee niveau's te groeperen. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "Event informatie" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Voor het tonen van aanvullende event informatie in berichten die als events zijn gecreeerd. De samenvatting en beschrijving zijn uitgezet omdat de titel en omschrijving van het bericht zelf hiervoor dienen. Kalender eigenschappen en groeperingen zijn hier ook niet relevant. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "Kleine kalender" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "De nieuwe standaard optie voor kalender widgets. Geen groepering. Geen kopteksten. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "Grote kalender" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "De nieuwe standaard optie voor een grote maandelijkse kalender. Geen groepering. Geen kopteksten. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast." + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "Testing" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Een test optie met veel velden ingeschakeld. Het is op twee niveau's gegroepeerd - dit is geen problem zolang de gebruikte HTML genest kan worden. Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "Grote kalender - wekelijks & horizontaal" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "Zoals de grote kalender, maar dan anders - gegroepeerd per week en de weken gaan door over de maanden heen. Twee weken behoren tegelijkertijd getoond te worden." + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Als je deze optie gaat aanpassen, stel ik voor dat je de omschrijving wijzigt om je eraan te helpen herinneren hoe en waarom het is aangepast. " + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "Grote kalender - wekelijks & verticaal" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "Gegroepeerd per dag, maar slechts 1 week wordt getoond. Drie kolommen, met fragment, geen volledige omschrijving. Geen icons." + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "Event Master" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "Gegroepeerd per categorie, niet geschikt voor terugkerende evenementen" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Resetten van de opties..." + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Opties verwijderd..." + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "Optie was nog niet bewaard of er trad een fout op bij het verwijderen van de optie..." + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr " Optie Key wordt omgezet naar kleine letters" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "Zoek naar vorige" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "Dagelijks" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "Wekelijks" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "Maandelijks" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "Jaarlijks" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "Ieder uur" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "op bepaalde data" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "dag" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "week" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "maand" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "jaar" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "uur" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "De DateTime class moet op je webserver ingeschakeld zijn voor deze plug-in om te kunnen werken. Het moet mogelijk worden aangezet voor compileren. De class is standaard aanwezig vanaf PHP 5.2.0." + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "%s de" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "%s ste" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "%s de" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "de derde" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "%s de" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "de eerste" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "iedere" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "de laatste" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "de %s laatste" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "de %s" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "maandag" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "dinsdag" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "woensdag" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "donderdag" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "vrijdag" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "zaterdag" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "zondag" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "Fout bij aanmaken nieuwe CSS folder %s. Controleer de bestandsrechten" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "Kan bestand niet kopiëren." + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "Niet in staat om iCalendar-bestand %s te laden of cachen" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "Fout bij zoeken of verwerken van iCalendar-bestand %s" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "Deze feature heeft de plug-in amr-events nodig" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "Hier te verkrijgen" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "Geen URL ingegeven - wilde je events van interne berichten?" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "Geen iCalendar velden gevraagd om te laten zien" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "Ongeldige iCalendar URL %s" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "SYSTEEM FOUT - event list type %s ontbreekt - waarschuw de administrator." + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "Nu wordt een beschikbare event list type gebruikt om events te tonen" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "Ongeldige begindatum" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "Uncaught exception: " + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "

                      Een fout in de invoer kan een correcte weergave van deze pagina verhinderen. Waarschuw de administrator." + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "Je bestaande opgeslagen lijstsoorten zijn omgezet. Als je wil terugkeren naar de eerdere versie van de plug-in, dan moet je de lijstsoorten resetten en je wijzigingen opnieuw toepassen. Of gebruik je database backup om de \\\"amr-ical-events-list\\\" optie terug te zetten naar de vorige versie. Je hebt regelmatig backups gemaakt, toch? " + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "Algemene listing instellingen" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "List Type Instellingen" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "Documentatie" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "Toon alles" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "Verberg alles" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "Ondersteuning" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "Video's" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "Geef je mening" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "Plug-in feed" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "Forum feed" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "Jouw timezonedb versie is: %s" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Plug-in kan niet de timezonedb versie bepalen in PHP < 5.3." + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "PHP timezonedb versies" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Informatie over welke wijzigingen er zijn in welke timezonedb versie" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "Geen globale timezone - is er een probleem? " + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "Ga naar instellingen" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Je gebruikt de oude \"gmt_offset\" instelling " + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "Overweeg om over te stappen naar de meer accurate timezone instelling" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "De plug-in denkt dat dit je timezone is: " + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "De huidige UTC offset voor die timezone is: " + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Schakelt over naar %s op %s. GMT offset: %d" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Huidige tijd (niet gelocaliseerd): " + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "Bewaar de instellingen" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "Update" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Uninstall de plug-in en verwijder de opties uit de database." + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "Uninstall" + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "WAARSCHUWING: Dit zal alle list opties onmiddellijk resetten." + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Reset alle listing opties" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "Event List Types" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "Configureer event list type: " + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "Bekijk de list via de preview." + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "Preview" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Bewaren..." + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "Lists bewaard" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Opties zijn niet gewijzigd of onverwachte fout bij bewaren" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "Vink de lists aan die je wilt verwijderen" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "List %s zal worden verwijderd" + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Kolom kopteksten:" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "Kalender eigenschappen" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Specificeer te tonen velden:" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Noot: een 0 (nul) in een kolom betekent: toon dit veld niet." + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "Velden in hoofdletters zijn gedefinieerd in de iCalendar specificatie." + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "Velden in kleine letters zijn voor een optimaal gebruiksgemak door deze plug-in toegevoegd en afgeleid van de iCalendar velden." + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "Velden worden getoond als \"kolom\" > 0 en als er gegevens aanwezig zijn in je iCalendar-bestand." + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "Veld" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "(0 om te verbergen)" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "Definieer groepering:" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "Mogelijke groeperingen" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "Niveau" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "Geen groepering" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "Taxonomieën" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "(Vereist amr-events)" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "Datum gebaseerd" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "(Zie ook datum en tijd formaten)" + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Selecteer te tonen componenten:" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "Wikipedia entry die de componenten beschrijft" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Definieer maxima:" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "Cache tijden zijn in uren" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "Configureer nog een list type: " + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "Keer terug naar Beheer List Types" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "Gebruik getallen groter dan 1" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "Geïmporteerde instellingen voor list %s zijn ongeldig - niet bewaard" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "List %s wordt bewaard met geïmporteerde data" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "Configureer: " + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "Klik om de velden en kolommen te selecteren en om andere parameters in te stellen." + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "Configureer" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "URL voor previews moet hierboven ingevoerd worden" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "n.v.t." + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "Voer een list nummer in om een list type te beginnen met nieuwe standaard instellingen." + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "Knip en plak hierna, voor een snelle start, van het list type dat het meest lijkt op wat je wilt." + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "iCal Events List " + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "List bewaard" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "iCal Events List" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "Listing Events" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "iCal Events Lists" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "List Types" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Error in form - calprop array not found" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "Naam" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "Interne omschrijving" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "Overig:" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "List HTML Style:" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "Tabel" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "HTML5 in tabel" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "HTML5 clean and lean" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "Custom - file required" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "Line breaks voor regels!" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "Kleine kalender" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Grote kalender" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "Week kalender" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "Lists voor rijen" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "*Vermijd - verouderd" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "Tabel met lists in tabelcellen (origineel)" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "Custom HTML style bestand op %s..." + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr " (HTML en enige PHP kennis vereist)" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "Standaard Event URL" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr " (Voor iCalendar-bestanden in widget. Extern of kalender pagina.)" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "Meer informatie" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Algemene opties" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "CSS en afbeeldingen" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "Geavanceerd" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "Boodschap, \"Geen events gevonden\": " + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "Boodschap, \"Bekijk latere events\": " + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "Boodschap, \"Bekijk eerdere events\": " + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "Boodschap, \"Reset events\": " + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "Gebruik menselijke tijd zoals: 's middags, middernacht" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "Geef geen credits aan de auteur" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "Gebruik Javascript om groepen events in te klappen" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "Gebruik mijn theme CSS, niet de plug-in CSS" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr " Geen afbeeldingen" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "Icon afmetingen:" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "16" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "32" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "De bijgevoegde CSS werkt met het standaard Twenty-Ten theme en vergelijkbare theme's. Jouw theme kan anders zijn." + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "Om het bestand te bewerken, download je je eigen CSS bestand dat is toegevoegd aan je uploads folder: uploads/css." + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "Bewerk het en herupload naar dezelfde folder. Selecteer het daarna in de box hieronder." + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "Dit bestand zal niet worden overschreven wanneer de plug-in of je theme wordt geüpgraded. " + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "Meer informatie" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Download het meest recente plug-in CSS bestand om te bewerken" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "(optioneel)" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Selecteer het CSS bestand dat je wil gebruiken." + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "Geen CSS bestanden gevonden in CSS folder " + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Geavanceerd:" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "Je PHP versie is: %s" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "Minimaal PHP versie 5.3 vereist voor events caching. " + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "Het cachen van gegenereerde events voor hergebruik op dezelfde pagina (bijv.: widget plus lijst) zal niet worden uitgevoerd. " + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "Objecten worden blijkbaar niet correct geserialiseerd in PHP versies lager dan 5.3." + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Selecteer een datum localisatie methode:" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "geen" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "amr" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "wp" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "wpgmt" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "HTTP Timeout voor externe iCalendar-bestanden:" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "Kies aantal seconden voor de timeout voor elke ophaalactie van een iCalendar-bestand" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "WAARSCHUWING: 30 seconden is erg lang! Laat het de cache gebruiken wanneer er vertraging optreed." + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "URL voor previews:" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "Voer de URL van een pagina in - met [events] of [largecalendar] in de body tekst - die je wilt gebruiken voor list type previews." + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "Klik hieronder de naam van een list type die je wilt configureren." + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "Ga naar plug-in website voor documentatie." + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "Configuratie help" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "
                      Wees voorzichtig bij het bewerken of verwijderen - sommige event list types zijn als standaard ingesteld voor shortcodes en widgets. " + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "Voeg listtype=n toe aan de shortcode of widget om een ander event list type te selecteren." + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "WAARSCHUWING: Dit zal alle geselecteerde lijstsoorten onmiddellijk verwijderen." + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "Verwijder" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "List" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "Om een list type te exporteren of te kopieëren" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "Selecteer de gehele inhoud en kopieer." + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "De codering is om fouten te voorkomen bij het kopiëren en plakken." + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "De hele string moet geselecterd zijn (dat zou het geval moeten zijn wanneer je op de text box klikt)" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "De list type is een lange reeks." + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "Zonder codering waren er verscheidene problemen met slashes. Codering bleek stabieler." + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "Waarom coderen?" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "Om een listtype te importeren" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "PLAK listtype string" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "Als je de string niet zelf hebt gecreëerd en bezorgd bent over de inhoud, bekijk dan de listtype string met behulp van een decodeertool. Je moet dan een geserialiseerde reeks zien." + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "Klik om naar decodeertools te zoeken" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "Test decoderen" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr " Definieer datum en tijd formaten:" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "Definieer de formaten voor de datum- en tijdvelden (bijv.: begindatum, einddatum, begintijd, einddtijd). Je kan elk van deze velden gebruiken om een volledige DateTime string te tonen. Gebruik de Event Date voor afzonderlijke evenementen - het DTSTART veld is de allereerste begindatum van een serie terugkerende events." + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "Deze worden ook gebruikt voor de datumgerelateerde kopteksten (bijv.: zal de datum in dat formaat tonen als koptekst voor die groep data indien van toepassing.)" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "Gebruik de standaard PHP format strings: " + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "PHP Manual - date datetime formats" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "Bekijk PHP date function format strings" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr " (zal gelokaliseerd worden) " + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "Toon/verberg alles" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "Waarom niet een of meer van het volgende uitvoeren:" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "Link ernaar zodat anderen er ook over te weten kunnen komen." + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "Als je problemen hebt met deze plug-in of goede ideeën voor verbeteringen of nieuwe functies, dan kan je erover praten in de" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "Support forums" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "Week start op %s" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr " en " + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "elke " + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr " of " + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "Elke %s %s" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "Op %s mogelijkheid binnen %s" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "%s maal" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "tot %s %s" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "als maand is %s" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "in %s weken van het jaar" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "op de %s dag van het jaar" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "op de %s dag van elke maand" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "op %s " + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "om het %s uur" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "om de %s minuut" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "om de %s seconde" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "%u jaar" +msgstr[1] "%u jaar" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "%u maand " +msgstr[1] "%u maanden " + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "%u week " +msgstr[1] "%u weken" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "%u dag" +msgstr[1] "%u dagen" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "%u uur" +msgstr[1] "%u uur" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "%u minuut" +msgstr[1] "%u minuten" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "%u seconde" +msgstr[1] "%u seconden" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "Wijzig tijdzone" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "Tijdzone: %s, Klik voor %s" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "Je cache folder %s is gecreëerd" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Fout bij creëren cache folder %s. Controleer de bestandsrechten" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "Onverwachte data inhoud. Waarschuw de administrator." + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "Zie opmerkingen in de broncode om het antwoord zoals ontvangen van de iCalendar-server te bekijken." + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "Fout bij inlezen iCalendar-bestand met HTTP of CURL %s" + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "Gebruikmakend van het bestand dat laatst gecached was op %s" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "Laatste cache tijdstip van bestand niet beschikbaar" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "WAARSCHUWING: Events kunnen verouderd zijn. " + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "Geen gecachte iCalendar-bestand voor events" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "middernacht" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "twaalf uur 's middags" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "Ga naar agenda of list view" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "Agenda" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "Ga naar kalender view" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "Kalender" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "Ga naar Google Maps view" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "Google Maps" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "Ga naar datum" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "»»" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "Week start op %1$s" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "←" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "→" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "Ga naar %1$s %2$s" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "Week start %s" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "uur" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "maanden" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "dagen" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "toon afgelopen events" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "toon minder" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "toon meer" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "toon veel minder" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "toon veel meer" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "toon toekomstige events" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "toon maximaal 10 events" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "toon maximaal 50 events" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "toon maximaal 100 events" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "Event bijlage" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "hele dag" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "Bekijk events in %s %s" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Totaal aantal events: " + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "X-WR-CALDESC" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "Geen omschrijving beschikbaar" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "X-WR-CALNAME" + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "Abonneer op %s kalender" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "Abonneer je op deze kalender in je eigen kalender programma." + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "Abonneer op kalender" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "Voeg toe aan Google Agenda" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "Voeg toe aan Google" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "Voeg event toe aan Google" + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "Laatste refreshtijd onverwacht niet beschikbaar" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "Refresh alle kalenders" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "Laatste refresh was om %s. " + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Extern bestand had geen wijzigingen. " + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "Het externe bestand is gewijzigd op %s." + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "Klik om te refreshen" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "Week %u" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "listtypesheading" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "Kijk voor meer vanaf %s" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "Ga terug naar oorspronkelijk overzicht" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "Ga terug naar vorige events" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "Verstuurd door " + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "Aankomende Events" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "Aankomende Events List" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "Bekijk plug-in website voor meer details" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "Titel" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "Kalenderpagina URL" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "Kalenderpagina URL in deze website" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "Toon omschrijving als tooltip boven de titel" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Maak een link van de samenvatting met de omschrijving in de tooltip " + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Alleen externe events" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "Toon alleen events uit externe iCalendar-bestanden; toon GEEN interne events." + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "Neem anders ook intern gecreerde events mee" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "Externe iCalendar URLs en geavanceerde opties" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "Externe iCalendar URLs en/of optionele shortcode parameters, gescheiden door spaties.)" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "Voorbeelden: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "Bekijk meer parameters" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "Aankomende Events Kalender" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "Lees verder" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "Kalenderpagina URL in deze website, voor links van widget" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "Voorbeelden: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "Ongeldige URL" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "Ik probeer deze plug-ins out of the box te laten werken met een minimale inspanning, zodat ze gemakkelijk te gebruiken zijn, maar wel breed configureerbaar, goed getest, met gevalideerde HTML en CSS, zowel aan de voor- als achterkant van je website. " + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "Als je een feature verzoek hebt, laat het me dan weten. " + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "Om events in WordPress te bewerken:" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "Upgrade naar \"amr-events\" op " + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "Bewaar al deze instellingen en lists" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "Biedt vele verschillende voordelen." + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "Meer weten" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Events plug-in door anmari" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "Klik om te wisselen" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "amr ical opties verwijderd uit database" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "amr ical gecachte iCalendar-bestanden verwijderd " + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "CSS bestanden kunnen ook aanwezig zijn. Deze alsmede de CSS folder zijn niet verwijderd omdat deze gedeeld worden met andere plug-ins." + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-no_NO.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-no_NO.mo new file mode 100644 index 0000000000000000000000000000000000000000..1772990062ff276d06bf1690894b92c4e016c110 GIT binary patch literal 41436 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≥rq$)u!QCy+zqt->V9!3cFA1SFpD&3&mrJE@K&-w$V_e9fcSck7y? z5@QG5R(_fDK#f#TJ3%cW@%Z6kYgo_5)3hYn+Hqux%1#^pIa`RI&ykTfjtE4hNBr8wYF+-D1|tRy-U$9g3)J z3&ZM8s@!v!w!yrzAkV}zhNF}+d)1GkK%uFRNJf`5`VsW-1Y@+FR!Z6yiqQ53*yt3- z5g%|e1;=KE<71E6-zsq{iat&W+K+Lvt0e5P=NyGfmE{nmShwkOmKcEh0*Gy;<==yq zpiB-(EpVIdo^j*&oVM;F7ILy}Y25Q3%aYBu)M%S?8n)Jff(`DY%bT$##*tMXh4fm_ zaV1pMr?fkdgTXT;cTEx%c`+b-b4xu^jZy->zoC59*nnbQrDZDh9{wz=HuBDyeSMQr zoCG85?h9iyrll$GwC4^j=NXo`$}hX*5y))Vo-p;#REBcXp�j>Xc%RhE~YTF*BzF z?aYYGk81f|g zB!LU(!1#8op<`jvrA9E5Z~OKjj6-XQ@MqkiWnm9g9Zfrj8ei2ZrNLA{+*74yi1K~Ib zs(&@89DZK*CRVNZ`{j_y0 zGD+2Yk`;nM9b=;{1pdf!calY=Ux%{&gk9J|J3C^WB#DwvVyxH`!^r4n8QHM}hGZ|9G;&D^xeCUc+DwKe>7XQzcDBkg?nMV%zagl#=Jt^)_cO6Zi$00LcE-XK=V5P~=Kyr5 z&ksIK(jVxGl-4;SCtewg`ko%GnUMIi59e)GBSk&2u95LRXWD35k3Kv{;Q-Iv$(8=m zvW}YL-x(k>hBT0izv=+2p(At5T=K7c5P-8EV`u{iuOGfm9)tPTyG*;-Yg8#CtK~^( zKuQkAFASCzS}ob>Y$<&md%~8FN;%(^Rk;yVa?tQ`XBculRJT-S&T=28DJ={?V(oio zhVQq`z*Z{rjqAzb7xwgjO*-3aCQYsxM>}0SBU@5EO-ExWQs|1#F{4BBmAf^?Qn-I> z-@nA|m@1A*WLH0?ne9VN8k1sPP$3aS-OwHZQVuena!~m&I(%$tNnxuYc!H)0)oFAm zBavp()M;-h84M2ji#7!wfLpZ`hFAruDq5#|m>gR`lW<{aeVYsSnP77Fa;rH+!dOt0 zDy$Iu&EN(;#?8&xv(|4ey=?)2N9m5NhK^~e9>N1X%Y{qo{~-ord!Us2w++iWGF_oa zY`*W!+bp5gM*=}CM`LnX(1$hcN(2%uYb;35?Qk7^#lu&0i~+jP17~Dc zIi^@_c(#opF=xyMP2wDSYgS86k^3(p@$C%d(LF=_RX!gw_ldk+EnHf*)55ah;hpmhy<5nI!rFo~lV47~93|$-KKZEE)PmVm2=Em4GxN zq`;QicZQ*kP{1Fck?DeN5iy|nEb!\n" +"Language-Team: Team Blogos \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.5.3\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: d:/wordpress/plugins/amr-ical-events-list\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: d:/wordpress/plugins/amr-ical-events-list\n" +"X-Textdomain-Support: yes" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "amr ical-innstillinger slettet fra databasen" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "filene amr ical har mellomlagret, er slettet " + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "CSS-filer fines kanskje ogsÃ¥. De og CSS-mappen har ikke blitt slettet, da de er delt med andre tillegg." + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "GÃ¥ kun til denne dagens begivenheter" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "Column" +msgstr "Kolonne" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Order" +msgstr "Rekkefølge" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "Before" +msgstr "Før" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:300 +#@ amr-ical-events-list +msgid "After" +msgstr "Etter" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "Et link for Ã¥ la brukeren legge hele kalenderen til sin Google-kalender." + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "Et link som tillater en bruker Ã¥ hente en ICS-fil igjen" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "Tidspunktet, ICS-filen sist ble endret" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "WordPress-indleggtstittel eller ICS-resyme" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "WordPress-innhold eller ICS-beskrivelse" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "WordPress-utdrag" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "WordPress-innleggsminiatyr" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "Adresse" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "Link til kart" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "Link for Ã¥ tilføye en begivenhet til en Google Kalender" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "Link til ICS-fil med enkeltbegivenheter" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "Link til ICS-fil med gjentatte begivenheter" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "Bredde- og lengdegrad" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "Linker til vedlagte filer (ICS)" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "WordPress- eller ICS-filkategorier" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "ICS-klasse" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "ICS-kommentar" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "ICS-begivenhetsprioritet" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "ICS-begivenhetsstatus" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "Dato for begivenhet i tilbakevendende begivenhet eller for begivenhet" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "Tidspunkt for begivenhet i tilbakevendende begivenhet eller for begivenhet" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "Datoen en enkeltbegivenhet slutter. Tom, hvis samme som begivenhetsdatoen " + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "Tidspunktet en enkeltbegivenhet i gentatt begivenhet slutter." + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "Datoen for den oprinnelige eller første begivenhet i en gentatt begivenhetsserie" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "Sluttdato for den oprindnlige eller første begivenhet i en tilbakevendende serie" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "En oppgave forfaller" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "Begivenhetens lengde" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "Sier \"hele dagen\" (oversatt), hvis begivenheten tar hele dagen." + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "Hvis en oppgave er utført." + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "Vis opptatt (oversatt), hvis fri-optatt-komponenten brukes." + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "Brukere som har akseptert." + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "Legg til registreringsknapp. Innstillinger for registrering kan settes som globale standarder eller for hver enkelt hendelse." + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "Linker til Ã¥ vise om man deltager." + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "Eventuell kontaktperson." + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "Opphavsmann til begivenheten." + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "Brukere som deltar." + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "Unik id for en enkeltbegivenhet i tilbakevende begivenhet eller for en unntakelse." + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "Begivenhetens URL som angitt af ICS-filen, eller WordPress-permalink for begivenheten." + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "Unik id for begivenheten." + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "Datoer utelatt fra tilbakevendende serie" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "Unntaksregel – ikke længere med i spesifikationen" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "Enkeltdatoer som begivenheten skal gjentas pÃ¥" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "Regel for begivenhetens gjentakelse." + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "Alarmhandling." + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "Gjentakelse av alarm." + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "Alarmutløser." + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "Begivenhetsdato opprettet." + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "Begivenhetsdato publisert." + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "Begivenhetens endringsnivÃ¥." + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "Begivenhetsdato sist endret." + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "Begivenheter i en ICS-fil" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "Innføringer i en ICS-fil som angir tidsrom, hvor man er optatt eller tilgjengelig" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "GjøremÃ¥l i en oppgaveliste i en ICS-fil" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "Dagbogsnotater i en ICS-fil – ingen dato eller klokkeslett" + +#: includes/amr-ical-config.php:362 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "Ingen begivenheter oppfylte kriteriene" + +#: includes/amr-ical-config.php:363 +#: includes/amr-pluggable.php:1410 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "Se etter mer" + +#: includes/amr-ical-config.php:364 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "Se etter tidligere" + +#: includes/amr-ical-config.php:365 +#: includes/amr-ical-config.php:1159 +#@ amr-ical-events-list +msgid "Reset" +msgstr "Nullstill" + +#: includes/amr-ical-config.php:388 +#@ amr-ical-events-list +msgid "Default" +msgstr "Standard" + +#: includes/amr-ical-config.php:389 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "En standard-kalenderliste. Denne er satt opp med tabeller med lister i celler. Krever normalt at CSS-filen er aktiveret. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om, hvordan/hvorfor den er tilpasset som den er." + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Year" +msgstr "Ã…r" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "Kvartal" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "Astronomisk Ã¥rstid" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "Traditionell Ã¥rstid" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Vestlig stjernekrets" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Month" +msgstr "MÃ¥ned" + +#: includes/amr-ical-config.php:373 +#@ amr-ical-events-list +msgid "Week" +msgstr "Uke" + +#: includes/amr-ical-config.php:374 +#@ amr-ical-events-list +msgid "Day" +msgstr "Dag" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "When" +msgstr "NÃ¥r" + +#: includes/amr-ical-config.php:413 +#@ amr-ical-events-list +msgid "What" +msgstr "Hva" + +#: includes/amr-ical-config.php:414 +#@ amr-ical-events-list +msgid "Where" +msgstr "Hvor" + +#: includes/amr-ical-config.php:461 +#@ amr-ical-events-list +msgid "More info: " +msgstr "Flere opplysninger: " + +#: includes/amr-ical-config.php:475 +#@ amr-ical-events-list +msgid " to" +msgstr " til" + +#: includes/amr-ical-config.php:555 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "Vis i Google-kart" + +#: includes/amr-ical-config.php:562 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "Vis sted pÃ¥ Google Maps" + +#: includes/amr-ical-config.php:575 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "PÃ¥ turné" + +#: includes/amr-ical-config.php:576 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Standardindstillingen bruker den opprinnelige tabellen med lister i cellene. Den er gruppert etter mÃ¥neder. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om, hvordan/hvorfor den er tilpasset som den er. " + +#: includes/amr-ical-config.php:584 +#@ amr-ical-events-list +msgid "Venue" +msgstr "Sted" + +#: includes/amr-ical-config.php:585 +#@ amr-ical-events-list +msgid "Description" +msgstr "Beskrivelse" + +#: includes/amr-ical-config.php:589 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "Tidsplan" + +#: includes/amr-ical-config.php:590 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Standardindstillingen bruker den oprinnelige tabellen med lister i cellene. Den er gruppert etter dager. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om, hvordan/hvorfor den er tilpasset som den er. " + +#: includes/amr-ical-config.php:601 +#@ amr-ical-events-list +msgid "Date" +msgstr "Dato" + +#: includes/amr-ical-config.php:602 +#@ amr-ical-events-list +msgid "Class" +msgstr "Klasse" + +#: includes/amr-ical-config.php:603 +#@ amr-ical-events-list +msgid "Room" +msgstr "Rom" + +#: includes/amr-ical-config.php:608 +#@ amr-ical-events-list +msgid "Widget" +msgstr "Widget" + +#: includes/amr-ical-config.php:609 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Den nye standardindstilling for widgets bruker lister som tabellrekker. Slik fungerer det ogsÃ¥ med temaer, som ikke kan vise tabeller i sidepanelene. Ingen gruppering. Hvis du tilpasser den, foreslÃ¥r jeg, at du endrer denne beskrivelsen som et notat om, hvordan/hvorfor den er tilpasset som den er. " + +#: includes/amr-ical-config.php:630 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "HTML5 Eks. 1" + +#: includes/amr-ical-config.php:631 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "En tabell-stil beregnet pÃ¥ bruk af HTML5-tags, men stadig i en tabellstruktur, sÃ¥ det kan brukes kolonner. Man kan ikke ha to grupperingsnivÃ¥er med denne muligheten, fordi tbody ikke kan brukes inni en tbody-struktur. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om, hvordan/hvorfor den er tilpasset som den er. " + +#: includes/amr-ical-config.php:662 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "HTML5 Eks. 2" + +#: includes/amr-ical-config.php:663 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "En HTML5-testopsætning, som prøver Ã¥ være enklere. Man kan ha to grupperingsnivÃ¥er med denne innstillingen. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om, hvordan/hvorfor den er tilpasset som den er. " + +#: includes/amr-ical-config.php:707 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "Begivenhetsinfo" + +#: includes/amr-ical-config.php:708 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Til visning av flere begivenhetsinformasjoner pÃ¥ innlegg oprettet som begivenheter. Sammendrag og beskrivelse vises ikke, ettersom de brukes som innleggstittel og innleggsinnhold. Kalenderegenskaper og grupperinger er heller ikke relevante. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om hvordan/hvorfor den er tilpasset som den er. " + +#: includes/amr-ical-config.php:739 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "Liten kalender" + +#: includes/amr-ical-config.php:740 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Det nye standardoppsettet for kalenderwidgets. Ingen gruppering, ingen overskrifter. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om hvordan/hvorfor den er tilpasset som den er." + +#: includes/amr-ical-config.php:768 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "Stor kalender" + +#: includes/amr-ical-config.php:769 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "De nye standardindstillingene for en stor mÃ¥nedskalender. Ingen grupperinger, ingen overskrifter. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om hvordan/hvorfor den er tilpasset som den er." + +#: includes/amr-ical-config.php:798 +#@ amr-ical-events-list +msgid "Testing" +msgstr "Test" + +#: includes/amr-ical-config.php:799 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "Et testoppsett med et stort antall felter slÃ¥tt pÃ¥. Den har to grupperingsnivÃ¥er – det er fint, sÃ¥ længe det brukes HTML, som kan innkapsles. Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om hvordan/hvorfor den er tilpasset som den er. " + +#: includes/amr-ical-config.php:849 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "Ukentlig, horisontalt" + +#: includes/amr-ical-config.php:851 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "Som den store kalenderen, men annerledes – grupperet etter uker, og ukene fortsetter over mÃ¥nedsskifter. Minst to uker bør vises ad gangen!" + +#: includes/amr-ical-config.php:852 +#: includes/amr-ical-config.php:884 +#: includes/amr-ical-config.php:928 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr " Hvis du tilpasser den, foreslÃ¥r jeg at du endrer denne beskrivelsen som et notat om hvordan/hvorfor den er tilpasset som den er. " + +#: includes/amr-ical-config.php:881 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "Ukentligt, loddrett" + +#: includes/amr-ical-config.php:883 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "Gruppert etter dager, men viser kun en uke. Tre kolonner med utdrag, ikke full beskrivelse. Ingen ikoner." + +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "Begivenhetssjef" + +#: includes/amr-ical-config.php:927 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "Gruppert etter kategori; ikke til bruk ved gentakelser" + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Nulstiller innstillinger..." + +#: includes/amr-ical-config.php:1107 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Innstillinger slettet ..." + +#: includes/amr-ical-config.php:1108 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "Innstilling ble ikke lagret tidligere, eller feil i forsøk pÃ¥ slette indstilling …" + +#: includes/amr-ical-config.php:1138 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr " Konverterer taster i Innstillinger til smÃ¥ bogstaver" + +#: includes/amr-ical-config.php:1158 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "Se etter tidligere" + +#: includes/amr-ical-config.php:366 +#: includes/amr-ical-config.php:1166 +#@ amr-ical-events-list +msgid "Busy" +msgstr "Opptatt" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Daily" +msgstr "Daglig" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "Ukentlig" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "MÃ¥nedlig" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "Ã…rlig" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "Hver time" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "pÃ¥ visse datoer" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "day" +msgstr "dag" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "week" +msgstr "uke" + +#: includes/amr-ical-config.php:1197 +#@ amr-ical-events-list +msgid "month" +msgstr "mÃ¥ned" + +#: includes/amr-ical-config.php:1198 +#@ amr-ical-events-list +msgid "year" +msgstr "Ã¥r" + +#: includes/amr-ical-config.php:1199 +#@ amr-ical-events-list +msgid "hour" +msgstr "time" + +#: includes/amr-ical-events-list-main.php:12 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "DateTime Class skal være aktivert pÃ¥ ditt system, hvis dette tillegget skal virke. Kanskje skal klassen være aktivert nÃ¥r PHP kompileres. Klassen bør som standard være med i PHP-version 5.2." + +#: includes/amr-ical-events-list-main.php:52 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "%s." + +#: includes/amr-ical-events-list-main.php:59 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "%s." + +#: includes/amr-ical-events-list-main.php:62 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "%s." + +#: includes/amr-ical-events-list-main.php:65 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "%s." + +#: includes/amr-ical-events-list-main.php:68 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "%s." + +#: includes/amr-ical-events-list-main.php:76 +#@ amr-ical-events-list +msgid "the first" +msgstr "den første" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "every" +msgstr "alle" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "the last" +msgstr "den siste" + +#: includes/amr-ical-events-list-main.php:82 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "den %s siste" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "den %s" + +#: includes/amr-ical-events-list-main.php:120 +#@ default +msgid "Monday" +msgstr "Mandag" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Tuesday" +msgstr "Tirsdag" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Wednesday" +msgstr "Onsdag" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Thursday" +msgstr "Torsdag" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Friday" +msgstr "Fredag" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Saturday" +msgstr "Lørdag" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Sunday" +msgstr "Søndag" + +#: includes/amr-ical-events-list-main.php:307 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "Fejl i oprettelse av brukerdefineret CSS-mappe %s. Vennligst sjekk rettigheder" + +#: includes/amr-ical-events-list-main.php:329 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "Kunne ikke kopiere fil." + +#: includes/amr-ical-events-list-main.php:1405 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "Kan ikke hente eller cache iCa-kalenderen %s" + +#: includes/amr-ical-events-list-main.php:1413 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "Feil i forsøk pÃ¥ at finde eller parse iCa-kalenderen %s" + +#: includes/amr-ical-events-list-main.php:1449 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "Den ønskede funksjonen krever tillegget amr-events" + +#: includes/amr-ical-events-list-main.php:1450 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "FÃ¥ det her" + +#: includes/amr-ical-events-list-main.php:1581 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "Ingen URL tastet inn – ønket du begivenheter fra innlegg?" + +#: includes/amr-ical-events-list-main.php:1614 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "Ingen visningsforespørsler for iCal-komponenter" + +#: includes/amr-ical-events-list-main.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "Ugyldig iCal-URL %s" + +#: includes/amr-ical-events-list-main.php:1873 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "Systemfeil - begivenhetslistetypen %s mangler - vennligst informer administratoren." + +#: includes/amr-ical-events-list-main.php:1875 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "Bruker nÃ¥ en tilgjengelig listetype til Ã¥ sette opp en liste med begivenhetene" + +#: includes/amr-ical-events-list-main.php:2011 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "Ugyldig startdato" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "Ubehandlet unntak: " + +#: includes/amr-ical-events-list-main.php:2357 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "

                      En feil i input-data kan forhindre en korrekt visning av denne siden. Orienter venligst administrator sÃ¥ hurtig som mulig." + +#: includes/amr-ical-events-list-main.php:2364 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "Dine eksisterende lagrede listetyper har blitt konvertert. Hvis du ønsker Ã¥ vende tilbake til den tidligere versjonen af tillegget, skal du nulstille listetypene og taste inn endringene dine igjen. Eller bruk databasesikkerhedskopien din til Ã¥ føre amr-ical-events-list-indstillingene tilbake til den tidligere versjonen. Du tar regelmessige sikkerhetskopier, ikke sant?" + +#: includes/amr-ical-events-list-main.php:2392 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "Generelle listeinnstillinger" + +#: includes/amr-ical-events-list-main.php:2394 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "Innstillinger" + +#: includes/amr-ical-events-list-main.php:2395 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "Listetype-innestillinger" + +#: includes/amr-ical-events-list-main.php:2396 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "Dokumentasjon" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "Vis alle" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "Skjul alle" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "Support" + +#: includes/amr-ical-list-admin.php:40 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "Plugin-feed" + +#: includes/amr-ical-list-admin.php:45 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "Forumfeed" + +#: includes/amr-ical-list-admin.php:69 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "Versjonen av din tidssonedatabase er: %s" + +#: includes/amr-ical-list-admin.php:71 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Kan ikke finne versjon pÃ¥ tidssonedatabasen i PHP < 5.3." + +#: includes/amr-ical-list-admin.php:74 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "Versjoner af PHP-tidssonedatabaser" + +#: includes/amr-ical-list-admin.php:76 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Opplysninger om hvilke endringer tsom er foretat i hvilke tidssonedatabaseversjoner" + +#: includes/amr-ical-list-admin.php:79 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "Ingen global tidssone – er det et problem her? " + +#: includes/amr-ical-list-admin.php:82 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "GÃ¥ til innstillinger" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Du bruker den \"gamle\" gmt_offset-innstillingen " + +#: includes/amr-ical-list-admin.php:87 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "Overvei Ã¥ bytte til den mer presise tidssoneinnstillingen" + +#: includes/amr-ical-list-admin.php:92 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "Tillegget har bestemt din tidssone som: " + +#: includes/amr-ical-list-admin.php:96 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "Den aktuelle UTC-forskjellen for denne tidssonen er: " + +#: includes/amr-ical-list-admin.php:109 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Skifter til %s den %s. GMT-tidsforskjell: %d" + +#: includes/amr-ical-list-admin.php:115 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Aktuell tid (ikke-lokaliseret): " + +#: includes/amr-ical-list-admin.php:125 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "Lagre innstillinger" + +#: includes/amr-ical-list-admin.php:127 +#@ amr-ical-events-list +msgid "Update" +msgstr "Oppdater" + +#: includes/amr-ical-list-admin.php:132 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Avinstaller tillegget og slett innstillingene fra databasen." + +#: includes/amr-ical-list-admin.php:134 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "Avinstaller" + +#: includes/amr-ical-list-admin.php:139 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "Advarsel: Dette vil øyeblikkelig nullstille alle innstillinger for lister." + +#: includes/amr-ical-list-admin.php:142 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Nullstill alle innstillinger for lister" + +#: includes/amr-ical-list-admin.php:157 +#: includes/amr-ical-list-admin.php:1133 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "HÃ¥ndter iCal-begivenhetstyper" + +#: includes/amr-ical-list-admin.php:172 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "Konfigurer begivenhetslistetype: " + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "ForhÃ¥ndsvis listen pÃ¥ en kalenderside." + +#: includes/amr-ical-list-admin.php:180 +#: includes/amr-ical-list-admin.php:634 +#@ amr-ical-events-list +msgid "Preview" +msgstr "ForhÃ¥ndsvis" + +#: includes/amr-ical-list-admin.php:186 +#: includes/amr-ical-list-admin.php:688 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Lagrer..." + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "Lister lagret" + +#: includes/amr-ical-list-admin.php:189 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Ingen endringer i indstillinger eller en uventet feil under lagring" + +# TJEK +#: includes/amr-ical-list-admin.php:205 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "Hak av for lister som skal slettes" + +#: includes/amr-ical-list-admin.php:212 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "Liste %s vil bli slettet" + +#: includes/amr-ical-list-admin.php:227 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Kolonneoverskrifter:" + +#: includes/amr-ical-list-admin.php:253 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "Egenskaper for kalender" + +#: includes/amr-ical-list-admin.php:279 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Vælg felter Ã¥ vise:" + +#: includes/amr-ical-list-admin.php:282 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "OBS: Et 0 (null) i kolonnen betyr at feltet ikke skal vises." + +#: includes/amr-ical-list-admin.php:284 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "Felter med store bokstaver er defineret i iCal-specifikasjonen." + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "Felter med smÃ¥ bokstaver er ekstra felter tilføyd av dette tillegget og hentet fra iCal-feltene for Ã¥ gjøre det lettere for deg." + +#: includes/amr-ical-list-admin.php:289 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "Felter vises, hvis \"kolonne\" > 0, og hvis det er tilgjengelige data i din begivenhet eller ICS-fil." + +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Field" +msgstr "Felt" + +#: includes/amr-ical-list-admin.php:296 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "(0 for Ã¥ skjule)" + +#: includes/amr-ical-list-admin.php:344 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "Definer grupperinger:" + +#: includes/amr-ical-list-admin.php:348 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "Mulige grupperinger" + +#: includes/amr-ical-list-admin.php:348 +#@ amr-ical-events-list +msgid "Level" +msgstr "NivÃ¥" + +#: includes/amr-ical-list-admin.php:360 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "Ingen grupperinger" + +#: includes/amr-ical-list-admin.php:369 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "Taksonomier" + +#: includes/amr-ical-list-admin.php:369 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "(Krever amr-events)" + +#: includes/amr-ical-list-admin.php:388 +#@ amr-ical-events-list +msgid "Date based" +msgstr "Datobasert" + +#: includes/amr-ical-list-admin.php:388 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "(Se ogsÃ¥ formater for dato og klokkeslett)" + +#: includes/amr-ical-list-admin.php:415 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Vælg komponenter Ã¥ vise:" + +#: includes/amr-ical-list-admin.php:417 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "Wikipediaoppslag, som beskriver komponentene" + +#: includes/amr-ical-list-admin.php:440 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Definer maksimummer:" + +#: includes/amr-ical-list-admin.php:443 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "OBS: at cachetider er i timer" + +#: includes/amr-ical-list-admin.php:483 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "Konfigurer ny listetype: " + +#: includes/amr-ical-list-admin.php:496 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "Tilbake til hÃ¥ndtering av listetyper" + +#: includes/amr-ical-list-admin.php:533 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "Bruk vennligst tall > 1" + +#: includes/amr-ical-list-admin.php:576 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "Importerede innstillinger for listen %s er ugyldige – ble ikke lagret" + +#: includes/amr-ical-list-admin.php:582 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "Listen %s vil bli lagret med importerede data" + +#: includes/amr-ical-list-admin.php:624 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "Konfigurer: " + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "Klik for Ã¥ velge felter, kolonner og andre parametre." + +#: includes/amr-ical-list-admin.php:629 +#@ amr-ical-events-list +msgid "Configure" +msgstr "Konfigurer" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "Skriv inn URL til kalenderside for forhndsvisning ovenfor" + +#: includes/amr-ical-list-admin.php:639 +#@ amr-ical-events-list +msgid "n/a" +msgstr " – " + +#: includes/amr-ical-list-admin.php:663 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "Skriv inn nummer pÃ¥ liste for Ã¥ begynne pÃ¥ en listetype med nye standardindstillinger." + +#: includes/amr-ical-list-admin.php:665 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "Derefter skal du kopiere og lime inn fra listetypen som er nærmest det du ønsker, for Ã¥ komme i gang" + +#: includes/amr-ical-list-admin.php:675 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "iCal Events List" + +#: includes/amr-ical-list-admin.php:692 +#@ amr-ical-events-list +msgid "List saved" +msgstr "Listen er lagret" + +#: includes/amr-ical-list-admin.php:714 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "iCal Events List" + +#: includes/amr-ical-list-admin.php:722 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "Lager liste med hendelser" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "Liste med iCal-hendelser" + +#: includes/amr-ical-list-admin.php:743 +#@ amr-ical-events-list +msgid "List types" +msgstr "Listetyper" + +#: includes/amr-ical-list-admin.php:959 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Feil i skjema – calprop-arrayet ikke funnet" + +#: includes/amr-ical-list-admin.php:1029 +#: includes/amr-ical-list-admin.php:1341 +#@ amr-ical-events-list +msgid "Name" +msgstr "Navn" + +#: includes/amr-ical-list-admin.php:1033 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "Intern beskrivelse" + +#: includes/amr-ical-list-admin.php:1057 +#@ amr-ical-events-list +msgid "Other:" +msgstr "Annet:" + +# tjekkes +#: includes/amr-ical-list-admin.php:1063 +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "HTML-stil for liste" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "Table" +msgstr "Tabell" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "HTML5 i tabell" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "HTML5 enkelt og simpelt" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "Egen - fil pÃ¥krevet" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "Rader med ny linje!" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "Liten boks-kalender" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Stor boks-kalender" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "Ukekalender" + +#: includes/amr-ical-list-admin.php:1073 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "Rader som lister" + +#: includes/amr-ical-list-admin.php:1073 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr " *UnngÃ¥ – frarÃ¥des pga. foreldelse" + +#: includes/amr-ical-list-admin.php:1074 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "Tabell med lister i celler (oprinnelig)" + +#: includes/amr-ical-list-admin.php:1080 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "Fil med egen HTML-stil i %s..." + +#: includes/amr-ical-list-admin.php:1081 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr " (HTML og en viss viten om PHP nødvendig)" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "Standard-URL for begivenhet" + +#: includes/amr-ical-list-admin.php:1094 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr " (Vedr. ICS-filer i widget. Ekstern, eller kalenderside.)" + +#: includes/amr-ical-list-admin.php:1096 +#: includes/amr-pluggable.php:828 +#@ amr-ical-events-list +msgid "More information" +msgstr "Flere opplysninger" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Generelle innstillinger" + +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "Utseende og bilder" + +#: includes/amr-ical-list-admin.php:1132 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "Avansert" + +#: includes/amr-ical-list-admin.php:1151 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "Beskjed, hvis ingen begivenheter blir funnet: " + +#: includes/amr-ical-list-admin.php:1158 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "Se etter flere begivenheter-beskjed: " + +#: includes/amr-ical-list-admin.php:1168 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "Se etter tidligere begivenheter-beskjed: " + +#: includes/amr-ical-list-admin.php:1175 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "Nullstill begivenheter-beskjed: " + +#: includes/amr-ical-list-admin.php:1182 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "Fri/optatt-tekst: " + +#: includes/amr-ical-list-admin.php:1183 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr " – erstatter resymeteksten (Opptatt) i en VFREEBUSY-komponent." + +#: includes/amr-ical-list-admin.php:1193 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "Bruk menneskelig tid som middag og midnatt" + +#: includes/amr-ical-list-admin.php:1198 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "Ikke gi kreditering til utvikler" + +#: includes/amr-ical-list-admin.php:1207 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "Bruk JavaScript til Ã¥ skjule begivenhetsgrupperinger" + +#: includes/amr-ical-list-admin.php:1214 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "Bruk mit temas CSS, ikke tilleggets CSS" + +#: includes/amr-ical-list-admin.php:1221 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr " Ingen bilder (kryss av for kun tekst)" + +#: includes/amr-ical-list-admin.php:1227 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "Størrelse pÃ¥ ikonbilde:" + +#: includes/amr-ical-list-admin.php:1230 +#@ amr-ical-events-list +msgid "16" +msgstr "16" + +#: includes/amr-ical-list-admin.php:1234 +#@ amr-ical-events-list +msgid "32" +msgstr "32" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "CSS-filen som er inkludert, fungerer med Twenty Ten-temaet og lignende temaer. Ditt tema kan muligens være annerledes." + +#: includes/amr-ical-list-admin.php:1239 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "For Ã¥ redigere filen skal du laste ned den som er lagt til din uploads-mappe: uploads/css (hvis ellers tillegget har rettigheter til det. o.a.)." + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "Redigér det og last det opp til den samme mappen. Velg sÃ¥ filen i feltet nedenfor." + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "Denne filen vil ikke bli overskrevet nÃ¥r tillegget eller ditt tema oppdateres." + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "More info" +msgstr "Flere opplysninger" + +#: includes/amr-ical-list-admin.php:1245 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Last ned den n CyesteSS-filen du kan redigere" + +#: includes/amr-ical-list-admin.php:1245 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "(valgfri)" + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Velg tilleggets standard-CSS-fil, eller velg din egen CSS og rediger det." + +#: includes/amr-ical-list-admin.php:1248 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "Ingen CSS-filer i CSS-mappen " + +#: includes/amr-ical-list-admin.php:1258 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Avansertt:" + +#: includes/amr-ical-list-admin.php:1260 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "Din PHP-versjon er: %s" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "Der kreves minst PHP version 5.3 for mellomlagring av begivenheter." + +#: includes/amr-ical-list-admin.php:1263 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1264 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "Objekter serialiseres tilsynelatende ikke korrekt i PHP < 5.3." + +#: includes/amr-ical-list-admin.php:1270 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Velg lokaliseringsmetode for dato:" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "none" +msgstr "ingen" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "amr" +msgstr "amr" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wp" +msgstr "WP" + +#: includes/amr-ical-list-admin.php:1279 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "WPGMT" + +#: includes/amr-ical-list-admin.php:1283 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "HTTP-timeout for eksterne ICS-filer:" + +#: includes/amr-ical-list-admin.php:1288 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "Velg hvor mange sekunder det skal gÃ¥ før timout for hver ICS-filhentning" + +#: includes/amr-ical-list-admin.php:1297 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "Advarsel – 30 sekunder er lang tid! Brug heller mellomlagring, hvis tingene gÃ¥r sÃ¥ langsomt" + +#: includes/amr-ical-list-admin.php:1313 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "URL til kalenderside for forhÃ¥ndsvisning:" + +#: includes/amr-ical-list-admin.php:1314 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "Skriv inn URL'en for en side med [events] eller [largecalendar] i innholdet for Ã¥ bruke til forhÃ¥ndsvisning med listetyper." + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "Klikk pÃ¥ navnet pÃ¥ hver listetype nedenfor for Ã¥ konfigurere den." + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "Se dokumentasjon pÃ¥ nettsiden til tillegget." + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "Hjelp til konfigurering" + +#: includes/amr-ical-list-admin.php:1331 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "Vær forsiktig nÃ¥r du endrer eller sletter – noen listetyper er standarder for kortkoder (shortcodes) og widgets. " + +#: includes/amr-ical-list-admin.php:1332 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "Tilføy listtype=n i parametrene for kortkoden eller widgeten for Ã¥ bruek en annen listetype." + +#: includes/amr-ical-list-admin.php:1336 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "Advarsel: Dette vil øyeblikkelig slette alle de valgte listetypene." + +#: includes/amr-ical-list-admin.php:1337 +#@ default +msgid "Delete" +msgstr "Slett" + +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List" +msgstr "Liste" + +#: includes/amr-ical-list-admin.php:1344 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "For Ã¥ eksportere eller kopiere en listetype" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "Velg ALT indhold og KOPIER." + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "Kodingen er her for Ã¥ forebygge feil nÃ¥r det kopieres og limes." + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "Hele strengen skal velges (det burde skje nÃ¥r du klikker pÃ¥ tekstfeltet)" + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "Listetypen er en meget stor array." + +#: includes/amr-ical-list-admin.php:1350 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "Uten koding var det diverse problemer med skrÃ¥streker. Med koding er det mer stabilt." + +#: includes/amr-ical-list-admin.php:1351 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "Hvorfor kode?" + +#: includes/amr-ical-list-admin.php:1355 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "For Ã¥ importere eller lime inn en listetype" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "LIM INN listetypestrengen" + +#: includes/amr-ical-list-admin.php:1358 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "Hvis du ikke laget strengen og er bekymret over hva den inneholder, kan du undersøke listetypestrengen med et program til Ã¥ dekode med. Du skulle helst se en serialiseret array." + +#: includes/amr-ical-list-admin.php:1359 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "Klik for Ã¥ søke etter dekodingsprogrammer" + +#: includes/amr-ical-list-admin.php:1359 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "Test dekoding" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr " Definer formater for dato og klokkeslett:" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "Definer formatene for Dag- (f.eks. Begivenhetsdato, Sluttdato) og Klokkeslett- (f.eks. Starttidspunkt, Sluttidspunkt) feltene." + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "Disse definisjonene brukes ogsÃ¥ for datorelaterede gruppeoverskrifter (dvs. de vil vise datoen i dette formatet som overskrift for en gruppe av datoer, hvis det er relevant.)" + +#: includes/amr-ical-list-admin.php:1398 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "Bruk PHP's standard formatteringsstrenger: " + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "PHP-manual – formater for dato og klokkeslett" + +#: includes/amr-ical-list-admin.php:1401 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "Se PHP's datoformatteringsstrenger" + +#: includes/amr-ical-list-admin.php:1402 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr " (blir lokalisert) " + +#: includes/amr-ical-list-admin.php:1432 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "Vis/Skjul alle" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "Hvorfor ikke prøve et av – eller alle de følgende forslagene:" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "Link til det, sÃ¥ andre ogsÃ¥ kan se hva det handler om." + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "Hvis du har problemer med dette tillegget eller gode ideer til forbedringer eller nye funktioner, sÃ¥ skriv dem i" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "Supportforum" + +#: includes/amr-ical-pretty-print.php:8 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "Uker starter pÃ¥ %s" + +#: includes/amr-ical-pretty-print.php:41 +#: includes/amr-ical-pretty-print.php:49 +#: includes/amr-ical-pretty-print.php:65 +#: includes/amr-ical-pretty-print.php:153 +#@ amr-ical-events-list +msgid " and " +msgstr " og " + +#: includes/amr-ical-pretty-print.php:51 +#@ amr-ical-events-list +msgid "every " +msgstr "alle " + +#: includes/amr-ical-pretty-print.php:80 +#@ amr-ical-events-list +msgid " or " +msgstr " eller " + +#: includes/amr-ical-pretty-print.php:117 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "Alle %s %s" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "PÃ¥ den %s i %s" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "%s gange" + +#: includes/amr-ical-pretty-print.php:137 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "inntil %s %s" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr " hvis mÃ¥ned er %s" + +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr " i %s uker av Ã¥ret" + +#: includes/amr-ical-pretty-print.php:143 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "pÃ¥ %s dag i Ã¥ret" + +#: includes/amr-ical-pretty-print.php:144 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "pÃ¥ %s dag i hver mÃ¥ned" + +#: includes/amr-ical-pretty-print.php:145 +#: includes/amr-ical-pretty-print.php:146 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "pÃ¥ %s " + +#: includes/amr-ical-pretty-print.php:157 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "i den %s time" + +#: includes/amr-ical-pretty-print.php:158 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "i det %s minutt" + +#: includes/amr-ical-pretty-print.php:159 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "i det %s sekund" + +#: includes/amr-pluggable.php:1813 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "%u Ã¥r" +msgstr[1] "%u Ã¥r" + +#: includes/amr-pluggable.php:1818 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "%u mÃ¥ned " +msgstr[1] "%u mÃ¥neder " + +#: includes/amr-pluggable.php:1823 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "%u uke " +msgstr[1] "%u uker" + +#: includes/amr-pluggable.php:1828 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "%u dag" +msgstr[1] "%u dager" + +#: includes/amr-pluggable.php:1834 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "%u time" +msgstr[1] "%u timer" + +#: includes/amr-pluggable.php:1839 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "%u minut" +msgstr[1] "%u minutter" + +#: includes/amr-pluggable.php:1844 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "%u sekunder" +msgstr[1] "%u sekunder" + +#: includes/amr-pluggable.php:1863 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "Skift tidssone" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "Din mellomlagrings-mappe %s har blitt oprettet" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Feil i oprettelsen av mellomlagrings-mappen %s. Sjekk vennligst rettigheter" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "Uventet datainnhold. Gi venligst administrator beskjed." + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "Se kommentarer i kilden for svar mottatt fra ICS-server." + +#: includes/amr-import-ical.php:176 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "Feil i hentning av kalenderfil med HTTP eller cURL %s" + +#: includes/amr-import-ical.php:180 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "Bruker fil som ble mellomlagret senest: %s" + +#: includes/amr-import-ical.php:182 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "Tidspunkt for filens siste mellomlagring ikke tilgjengelig" + +#: includes/amr-import-ical.php:184 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "Advarsel: Begivenhetene kan være foreldet. " + +#: includes/amr-import-ical.php:190 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "Ingen mellomlagret iCal-fil med begivenheter" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "midnatt" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "middag" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "GÃ¥ til visning av program eller liste" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "Program" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "GÃ¥ til kalendervisning" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "Kalender" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "GÃ¥ til kartvisning" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "Kart" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "GÃ¥ til dato" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "Uke startende med %1$s" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "←" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "→" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "GÃ¥ til %1$s %2$s" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "Uke som starter med %s" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "timer" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "mÃ¥neder" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "dager" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "vis avholdte begivenheder" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "vis mindre" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "vis mer" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "vis mye mindre" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "vis mye mer" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "vis fremtidige begivenheter" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "vis maksimalt 10 begivenheder, hvis de finnes" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "vis maksimalt 50 begivenheder, hvis de finnes" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "vis maksimalt 100 begivenheder, hvis de finnes" + +#: includes/amr-pluggable.php:544 +#: includes/amr-pluggable.php:587 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "Fil lagt til begivenhet" + +#: includes/amr-pluggable.php:658 +#: includes/amr-pluggable.php:665 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "Se begivenheter i %s %s" + +#: includes/amr-pluggable.php:699 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Samlet antall begivenheter: " + +#: includes/amr-pluggable.php:705 +#@ amr-ical-events-list +msgid "No description available" +msgstr "Ingen beskrivelse" + +#: includes/amr-pluggable.php:713 +#: includes/amr-pluggable.php:723 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "Abonner pÃ¥ %s-kalender" + +#: includes/amr-pluggable.php:730 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "Abonner pÃ¥ kalender i ditt kalenderprogram." + +#: includes/amr-pluggable.php:732 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "Abonner pÃ¥ kalender" + +#: includes/amr-pluggable.php:844 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "Legg til Google-kalender" + +#: includes/amr-pluggable.php:846 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "Legg til Google" + +#: includes/amr-pluggable.php:865 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "Legg til begivenhed til Google" + +#: includes/amr-pluggable.php:893 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "Tidspunkt for siste oppdatering mangler uventet" + +#: includes/amr-pluggable.php:897 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "Oppdater kalender" + +#: includes/amr-pluggable.php:898 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "Sidste oppdatering skjedde %s" + +#: includes/amr-pluggable.php:900 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Ekstern fil indeholdt ingen endringer. " + +#: includes/amr-pluggable.php:904 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "Den eksterne filen ble sist endret %s." + +#: includes/amr-pluggable.php:909 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "Klik for Ã¥ oppdatere" + +#: includes/amr-pluggable.php:1032 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "Uke %u" + +#: includes/amr-pluggable.php:1415 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "Se etter mer fra %s" + +#: includes/amr-pluggable.php:1439 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "Tilbake til første visning" + +#: includes/amr-pluggable.php:1444 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "Tilbake til tidligere begivenheter" + +#: includes/amr-pluggable.php:1473 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "Sendt av " + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "Kommende begivenheter" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "Liste med kommende begivenheter" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "Se flere detaljer pÃ¥ nettstedet til tillegget" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "Tittel" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "URL for side med kalender" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "URL til kalenderside pÃ¥ dette nettstedet" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "Beskrivelse pÃ¥ tittel ved mus-over" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Lag en link til resyme av begivenheten med beskrivelse av begivenheten som titteltekst" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Kun eksterne begivenheter" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "Vis kun begivenheter fra ekstern ics, ta ikke med interne begivenheter." + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "Alternativt, inkluder ogsÃ¥ begivenheter opprettet internt" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "Eksterne ics-URL'er og avanserte innstillinger" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "Eksterne ics-URL'er og/eller valgfrie kortkode-parametre adskilt av mellomrom.)" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr " Eksempler: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "Se flere parametre" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "Kalender med kommende begivenheter" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "Se etter mer" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "URL til kalenderside pÃ¥ dette nettstedet, for linker i widget" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr " Eksempler: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "Ugyldig URL" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "Jeg prøver Ã¥ sikre, at disse tilleggene uten videre virker med et minimum af innsats, er enkle Ã¥ bruke, men ogsÃ¥ har mange innstillinger, at de er gjennomtestet, at de genererer gyldig HTML og CSS bÃ¥de i selve bloggen og i administrasjonspanelet." + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "Hvis du har et ønske om en funktion, sÃ¥ la meg fÃ¥ vite det. " + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "For Ã¥ redigere begivenheter i WordPress:" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "Opgrader til amr-events pÃ¥ " + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "Behold alle disse innstillingene og listene" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "Gir mange flere fordeler. " + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "Finn ut mer" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Events-tillegg av anmari" + +# toggle +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "Klik for Ã¥ merke" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "amr events calendar eller lister med ical-filer" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "http://icalevents.com" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:627 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:659 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:702 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:708 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:1310 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/amr-ical-pretty-print.php:150 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:152 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1413 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1423 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1429 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: admin/add-ons.php:46 +#@ amr-events +msgid "Add Ons for amr-events" +msgstr "" + +#: admin/add-ons.php:47 +#@ amr-events +msgid "Browse All Add-ons" +msgstr "" + +#: admin/add-ons.php:75 +#@ amr-events +msgid "There was an error retrieving the add-ons list from the server. Please try again later." +msgstr "" + +#: admin/plugin-updater.php:164 +#, php-format +#@ default +msgid "There is a new version of %1$s available. View version %3$s details." +msgstr "" + +#: admin/plugin-updater.php:171 +#, php-format +#@ default +msgid "There is a new version of %1$s available. View version %3$s details or update now." +msgstr "" + +#: admin/plugin-updater.php:313 +#@ default +msgid "You do not have permission to install plugin updates" +msgstr "" + +#: admin/updates-page.php:23 +#, php-format +#@ amr-events +msgid "%s -license-key updated" +msgstr "" + +#: admin/updates-page.php:54 +#, php-format +#@ amr-events +msgid "No license key entered for %s" +msgstr "" + +#: admin/updates-page.php:79 +#@ amr-events +msgid "Error activating" +msgstr "" + +#: admin/updates-page.php:91 +#, php-format +#@ amr-events +msgid "%s auto updates activated" +msgstr "" + +#: admin/updates-page.php:94 +#@ amr-events +msgid "Error activating with that license key" +msgstr "" + +#: admin/updates-page.php:132 +#@ amr-events +msgid "Error deactivating" +msgstr "" + +#: admin/updates-page.php:142 +#, php-format +#@ amr-events +msgid "%s auto updates deactivated" +msgstr "" + +#: admin/updates-page.php:145 +#@ amr-events +msgid "License expired or error deactivating with that license key" +msgstr "" + +#: admin/updates-page.php:184 +#: admin/updates-page.php:447 +#@ amr-events +msgid "Latest Version" +msgstr "" + +#: admin/updates-page.php:188 +#@ amr-events +msgid "Plugin details" +msgstr "" + +#: admin/updates-page.php:195 +#@ amr-events +msgid "Or wait for wordpress to pick it up in the plugin update check" +msgstr "" + +#: admin/updates-page.php:196 +#@ amr-events +msgid "Download" +msgstr "" + +#: admin/updates-page.php:201 +#@ amr-events +msgid "Version information not available for this license key and this site." +msgstr "" + +#: admin/updates-page.php:202 +#@ amr-events +msgid "Verify at:" +msgstr "" + +#: admin/updates-page.php:248 +#, php-format +#@ amr-events +msgid "%s at this site is inactive at remote host" +msgstr "" + +#: admin/updates-page.php:269 +#@ amr-events +msgid "Remote Status" +msgstr "" + +#: admin/updates-page.php:270 +#@ amr-events +msgid "Sites / Limit" +msgstr "" + +#: admin/updates-page.php:272 +#@ amr-events +msgid "Expiry Date" +msgstr "" + +#: admin/updates-page.php:275 +#@ amr-events +msgid "Customer Email" +msgstr "" + +#: admin/updates-page.php:318 +#@ amr-events +msgid "Plugin updates not activated" +msgstr "" + +#: admin/updates-page.php:324 +#@ amr-events +msgid "Activated" +msgstr "" + +#: admin/updates-page.php:330 +#@ amr-events +msgid "Deactivated" +msgstr "" + +#: admin/updates-page.php:379 +#@ amr-events +msgid "add on plugin updates" +msgstr "" + +#: admin/updates-page.php:381 +#@ amr-events +msgid "Either you have no add-ons active or the versions you have cannot yet check for updates." +msgstr "" + +#: admin/updates-page.php:383 +#, php-format +#@ amr-events +msgid "Please check manually for updates at %s." +msgstr "" + +#: admin/updates-page.php:384 +#: admin/updates-page.php:388 +#@ amr-events +msgid "See plugins" +msgstr "" + +#: admin/updates-page.php:387 +#, php-format +#@ amr-events +msgid "Enter your license keys to activate automatic plugin updates from %s" +msgstr "" + +#: admin/updates-page.php:395 +#@ amr-events +msgid "Plugin name" +msgstr "" + +#: admin/updates-page.php:397 +#@ amr-events +msgid "License key" +msgstr "" + +#: admin/updates-page.php:434 +#@ amr-events +msgid "Deactivate" +msgstr "" + +#: admin/updates-page.php:435 +#@ amr-events +msgid "Deactivate this site from automatic plugin update checking." +msgstr "" + +#: admin/updates-page.php:438 +#@ amr-events +msgid "Activate" +msgstr "" + +#: admin/updates-page.php:439 +#@ amr-events +msgid "Activate automatic plugin update checking with valid license key." +msgstr "" + +#: admin/updates-page.php:444 +#@ amr-events +msgid "Check License" +msgstr "" + +#: admin/updates-page.php:445 +#@ amr-events +msgid "Check updates license details on plugin hosting system." +msgstr "" + +#: admin/updates-page.php:448 +#@ amr-events +msgid "Check for latest plugin version after entering your updates license key" +msgstr "" + +#: admin/updates-page.php:460 +#@ amr-events +msgid "Save without activating" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.20" +msgstr "" + +#: amr-ical-events-list.php:54 +#: amr-ical-events-list.php:55 +#@ amr-events +msgid "Add ons" +msgstr "" + +#: includes/amr-ical-list-admin.php:38 +#@ amr-ical-events-list +msgid "Rate or Review" +msgstr "" + +#: includes/amr-ical-post-type.php:12 +#@ amr-events +msgctxt "post type general name" +msgid "Events" +msgstr "" + +#: includes/amr-ical-post-type.php:13 +#@ amr-events +msgctxt "post type singular name" +msgid "Event" +msgstr "" + +#: includes/amr-ical-post-type.php:14 +#@ amr-events +msgctxt "event" +msgid "Add New" +msgstr "" + +#: includes/amr-ical-post-type.php:15 +#@ amr-events +msgid "Add New Event" +msgstr "" + +#: includes/amr-ical-post-type.php:16 +#@ amr-events +msgid "Edit Event" +msgstr "" + +#: includes/amr-ical-post-type.php:17 +#@ amr-events +msgid "New Event" +msgstr "" + +#: includes/amr-ical-post-type.php:18 +#: includes/amr-ical-post-type.php:19 +#@ amr-events +msgid "View Event" +msgstr "" + +#: includes/amr-ical-post-type.php:20 +#@ amr-events +msgid "Search Events" +msgstr "" + +#: includes/amr-ical-post-type.php:21 +#: includes/amr-ical-post-type.php:38 +#@ amr-events +msgid "No events found" +msgstr "" + +#: includes/amr-ical-post-type.php:22 +#: includes/amr-ical-post-type.php:39 +#@ amr-events +msgid "No events found in trash" +msgstr "" + +#: includes/amr-ical-post-type.php:23 +#@ amr-events +msgid "Related Event" +msgstr "" + +#: includes/amr-ical-post-type.php:31 +#@ amr-events +msgctxt "" +msgid "Add New " +msgstr "" + +#: includes/amr-ical-post-type.php:32 +#@ default +msgid "Add New " +msgstr "" + +#: includes/amr-ical-post-type.php:33 +#@ default +msgid "Edit " +msgstr "" + +#: includes/amr-ical-post-type.php:34 +#@ default +msgid "New " +msgstr "" + +#: includes/amr-ical-post-type.php:35 +#: includes/amr-ical-post-type.php:36 +#@ default +msgid "View " +msgstr "" + +#: includes/amr-ical-post-type.php:37 +#@ default +msgid "Search " +msgstr "" + +#: includes/amr-ical-post-type.php:40 +#, php-format +#@ amr-events +msgid "Related %s" +msgstr "" + +#: includes/amr-ical-post-type.php:46 +#@ amr-events +msgid "Event" +msgstr "" + +#: includes/amr-pluggable.php:768 +#@ amr-ical-events-list +msgid "SUMMARY" +msgstr "" + +#: includes/amr-pluggable.php:772 +#@ amr-ical-events-list +msgid "freebusymessage" +msgstr "" + +#: includes/amr-pluggable.php:1864 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-pl_PL.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-pl_PL.mo new file mode 100644 index 0000000000000000000000000000000000000000..98162cad0e912d214963258c3218c8244a7044ea GIT binary patch literal 21807 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\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: ..\n" +"X-Textdomain-Support: yes" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "Przejdź do widoku terminarza lub listy" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "Terminarz" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "Przejdź do widoku kalendarza" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "Kalendarz" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "Przejdź do widoku mapy" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "Mapa" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "Przejdź do daty" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "Przejdź do %1$s %2$s" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "Rok" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "KwartaÅ‚" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "Astronomiczna pora roku" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "Tradycyjna pora roku" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Zachodni zodiak" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "MiesiÄ…c" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "TydzieÅ„" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "DzieÅ„" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "Kiedy" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "Co" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "Gdzie" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "WyÅ›wietl na mapie Google" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "WyÅ›wietl lokalizacjÄ™ w Google Maps" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "Miejsce" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "Opis" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "Data" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "Klasa" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "Miejsce" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "DomyÅ›lne ustawienia dla nowego miesiÄ™cznego kalendarza. Bez grupowania, bez nagłówków. Jeżeli wprowadzisz zmiany w konfiguracji, zalecam zmianÄ™ tego opisu na uÅ‚atwiajÄ…cy zapamiÄ™tanie, co i dlaczego zostaÅ‚o skonfigurowane." + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Wtyczka Events autorstwa Anmari" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "Nie znaleziono wydarzeÅ„ speÅ‚niajÄ…cych kryteria" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Resetowanie opcji..." + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Opcje skasowane..." + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "Opcje nie byÅ‚y wczeÅ›niej zapisane lub wystÄ…piÅ‚ błąd kasowania..." + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr " KonwertujÄ™ klucz opcji na maÅ‚e litery" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "Aby korzystać z tej wtyczki, w systemie musi być dostÄ™pna klasa DateTime. Jej włączenie może być wymagane na etapie kompilacji. Klasa ta powinna być domyÅ›lnie dostÄ™pna w PHP wersja 5.2." + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "codziennie" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "co tydzieÅ„" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "co miesiÄ…c" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "rocznie" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "co godzinÄ™" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "w okreÅ›lonych dniach" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "dzieÅ„" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "tydzieÅ„" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "miesiÄ…c" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "rok" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "godzina" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "pierwszy" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "każdy" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "ostatni" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "ostatni %s" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "%s" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "PoczÄ…tek tygodnia w %s" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr " i " + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "każdy " + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr " lub " + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "Każdy %s %s" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "Dla %s instancji w %s" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "%s razy" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "do %s %s" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr " jeżeli miesiÄ…c to %s" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "w %s tydzieÅ„ roku" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "w %s dzieÅ„ roku" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "w %s dzieÅ„ każdego miesiÄ…ca" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "w %s " + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "o %s godzinie" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "o %s minucie" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "o %s sekundzie" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "Dodaj do kalendarza google" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "Dodaj wydarzenie do google" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "Błąd tworzenia niestandardowego katalogu css %s. ProszÄ™ sprawdzić uprawnienia" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "Nie można skopiować pliku." + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "Czas ostatniego odÅ›wieżenia niedostÄ™pny" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "OdÅ›wież kalendarze" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "Ostatnio odÅ›wieżone - %s. " + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Brak zmian w pliku zdalnym." + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "Plik zdalny zostaÅ‚ zmieniony %s." + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "Kliknij, aby odÅ›wieżyć" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "%u rok" +msgstr[1] "%u lata" +msgstr[2] "%u lat" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "%u miesiÄ…c " +msgstr[1] "%u miesiÄ…ce " +msgstr[2] "%u miesiÄ™cy " + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "%u tydzieÅ„ " +msgstr[1] "%u tygodnie" +msgstr[2] "%u tygodni" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "%u dzieÅ„" +msgstr[1] "%u dni" +msgstr[2] "%u dni" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "%u godzina" +msgstr[1] "%u godziny" +msgstr[2] "%u godzin" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "%u minuta" +msgstr[1] "%u minuty" +msgstr[2] "%u minut" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "%u sekunda" +msgstr[1] "%u sekundy" +msgstr[2] "%u sekund" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "ZmieÅ„ strefÄ™ czasowÄ…" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "Strefa czasowa: %s, kliknij aby wybrać %s" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "WysÅ‚ane przez " + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Wszystkich wydarzeÅ„: " + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "Subskrybuj kalendarz %s" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "TydzieÅ„ %u" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "Nie można wczytać kalendarza ical %s" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "Błąd wyszukiwania lub parsowania kalendarza ical %s" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "Ta funkcja wymaga wtyczki amr-events" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "Pobierz stÄ…d" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "Nie wprowadzono URL - chcesz utworzyć wydarzenia z wpisów?" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "Nie wybrano elementów ical do wyÅ›wietlenia" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "NieprawidÅ‚owy URL Ical %s" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "NieprawidÅ‚owa data startu" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "Lista wydarzeÅ„ iCal" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "WyÅ›wietlanie wydarzeÅ„" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "Listy wydarzeÅ„ iCal" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "Typy list" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "NieobsÅ‚użony wyjÄ…tek: " + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "

                      Błąd w danych wejÅ›ciowych może powodować nieprawidÅ‚owe wyÅ›wietlanie tej strony. Prosimy o jak najszybszy kontakt z administratorem." + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "Ustawienia" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "NieprawidÅ‚owy URL" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Błąd formatu - nie znaleziono tablicy calprop" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "Nazwa" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "WewnÄ™trzny opis" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "Styl HTML listy" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "Tabela" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "Wiersze jako lista" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "Wiersze przez znaki podziaÅ‚u" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "MaÅ‚e okienko kalendarza" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Duże okienko kalendarza" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "Tabela z listami w komórkach (oryginalny)" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "DomyÅ›lny URL wydarzenia" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr " (Dla plików ics w widgecie. ZewnÄ™trzne lub strona kalendarza.)" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "WiÄ™cej informacji" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "OkreÅ›l maksimum:" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "Uwaga czas pamiÄ™ci podrÄ™cznej jest podawany w godzinach." + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Wybierz skÅ‚adniki do wyÅ›wietlenia:" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "Wpis wikipedii opisujÄ…cy skÅ‚adniki" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "OkreÅ›l grupowanie:" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "WÅ‚aÅ›ciwoÅ›ci kalendarza" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Wybierz pola do wyÅ›wietlenia:" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Uwaga: 0 (zero) w kolumnie = nie wyÅ›wietlaj tego pola." + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "Pola pisane wielkimi literami sÄ… zdefiniowane w specyfikacji iCal." + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "Pola pisane maÅ‚ymi literami to dodatkowe pola dodane przez tÄ™ wtyczkÄ™ i odziedziczone z pól iCal dla wygody użytkownika." + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "Pola sÄ… wyÅ›wietlane, jeżeli \"column\" > 0 oraz w wydarzeniu lub pliku ics umieszczone sÄ… dane." + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Nagłówki kolumn:" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "Staram siÄ™, aby te wtyczki dziaÅ‚aÅ‚y \"prosto z pudeÅ‚ka\" przy minimalnym wysiÅ‚ku; byÅ‚y Å‚atwe w użyciu i jednoczeÅ›nie bardzo konfigurowalne; dobrze przetestowane; z prawidÅ‚owym html i css zarówno od strony interfejsu jak i administracji." + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "Jeżeli potrzebujesz dodatkowej funkcjonalnoÅ›ci, proszÄ™ daj mi znać." + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "Edycja wydarzeÅ„ w wordpress:" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "Dokumentacja" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "Pomoc techniczna" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "Nagrania wideo" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "OceÅ„ na WP" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "KanaÅ‚ wtyczki" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "KanaÅ‚ forum" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "Wersja bazy stref czasowych: %s" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Wtyczka nie może okreÅ›lić wersji bazy stref czasowych w php < 5.3." + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "Wersje bazy danych stref czasowych (timezonedb)" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Informacje na temat zmian wprowadzonych w kolejnych wersjach timezonedb" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "Brak globalnej strefy czasowej - czy wystÄ™puje jakiÅ› problem? " + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Używasz \"starego\" ustawienia gmt_offset" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "Rozważ zmianÄ™ na prawidÅ‚owÄ… strefÄ™ czasowÄ…" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "Przejdź do ustawieÅ„" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "WedÅ‚ug wtyczki Twoja strefa czasowa to: " + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "Aktualne przesuniÄ™cie UTC dla tej strefy to: " + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Przełącza na %s w %s. Offset GMT: %d" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Aktualny czas (bez lokalizacji): " + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Ogólne opcje" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "Komunikat, jeÅ›li nie znaleziono wydarzeÅ„: " + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "Nie umieszczaj kontaktu do autora" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "Użyj css ze schematu zamiast css wtyczki" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr " Bez obrazów (zaznacz dla samego tekstu)" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "Dostarczony css dziaÅ‚a z domyÅ›lnym motywem twenty-ten i podobnymi. Twój motyw może być inny." + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "Aby edytować plik, pobierz niestandardowy dodany do folderu udostÄ™pnionych: uploads/css." + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "Edytuj go i ponownie przeÅ›lij do tego samego folderu. NastÄ™pnie wybierz go w polu poniżej." + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "Plik ten nie zostanie nadpisany w przypadku aktualizacji wtyczki lub motywu. " + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "WiÄ™cej informacji" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Pobierz do edycji najnowszy udostÄ™pniony plik css" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "(opcjonalne)" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Wybierz domyÅ›lny css wtyczki lub wybierz niestandardowy css i edytuj go." + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "Nie znaleziono plików css w katalogu stylów css." + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Zaawansowane:" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "Twoja wersja php: %s" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "Do umieszczania wydarzeÅ„ w pamiÄ™ci podrÄ™cznej wymagany jest Php 5.3 lub nowszy. " + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Wybierz metodÄ™ lokalizacji daty:" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "brak" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "amr" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "wp" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "wpgmt" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Zapisywanie..." + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "Lista zapisana" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "iCal lista wydarzeÅ„ " + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Brak zmian w opcjach lub nieoczekiwany błąd zapisywania" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "Konfiguruj typ listy wydarzeÅ„:" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "OkreÅ›l formaty daty i czasu:" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "OkreÅ›l format dla pól daty (np. Data wydarzenia, Data zakoÅ„czenia) i godziny (np. Godzina rozpoczÄ™cia, Godzina zakoÅ„czenia). Możesz również użyć dowolnego z tych pól do wyÅ›wietlenia peÅ‚nej daty i godziny. Użyj Daty wydarzenia, aby okreÅ›lić instancje wydarzenia - pole DTSTART oznacza pierwszÄ… datÄ™ startu wydarzenia cyklicznego." + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "SÄ… one również wykorzystywane do zwiÄ…zanego z datÄ… grupowania nagłówków (np. wyÅ›wietla datÄ™ w tym formacie jako nagłówek dla grupy dat)." + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "Użyj do formatowania standardowych stringów PHP: " + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "PodrÄ™cznik php - formaty date i datetime" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "CiÄ…gi formatowania funkcji php date" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr " (lokalizowane) " + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "Zapisz ustawienia" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "Uaktualnij" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Odinstaluj wtyczkÄ™ i usuÅ„ opcje z bazy danych." + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "Odinstaluj" + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "Uwaga: Zresetowane zostanÄ… WSZYSTKIE opcje wyÅ›wietlania." + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Resetuj wszystkie opcje wyÅ›wietlania" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "RozwiÅ„/ZwiÅ„ wszystkie" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "Utworzony zostaÅ‚ katalog pamiÄ™ci podrÄ™cznej %s" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Błąd przy tworzeniu katalogu pamiÄ™ci podrÄ™cznej %s. Sprawdź uprawnienia." + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "Nieoczekiwana treść danych. Skontaktuj siÄ™ z administratorem." + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "Zobacz komentarze w źródle, aby sprawdzić odpowiedź serwera ics." + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "Używam pliku umieszczonego w pamiÄ™ci podrÄ™cznej o %s" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "Ostrzeżenie: Wydarzenia mogÄ… być nieaktualne." + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "W pamiÄ™ci podrÄ™cznej nie ma pliku ical ze zdarzeniami." + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "NadchodzÄ…ce wydarzenia" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "Lista nadchodzÄ…cych wydarzeÅ„" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "WiÄ™cej informacji znajdziesz na stronie wtyczki" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "TytuÅ‚" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "URL strony kalendarza" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "Umieść opis w Tytule" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Stwórz odnoÅ›nik ze streszczeniem wydarzenia jako tekst tytuÅ‚owy" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Tylko wydarzenia zewnÄ™trzne" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "WyÅ›wietl tylko wydarzenia z zewnÄ™trznych ics, NIE pokazuj żadnych wewnÄ™trznych wydarzeÅ„." + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "W przeciwnym wypadku, dołączaj również wydarzenia utworzone lokalnie" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "Adresy URL zewnÄ™trznych ics i zaawansowane opcje" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "Adresy URL zewnÄ™trznych kalendarzy i/lub opcjonalne parametry shortcode rozdzielone spacjami." + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr " (PrzykÅ‚ady: listtype=4 events=10 days=60 start=rrrrmmdd startoffset=-2...)" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "Zobacz wiÄ™cej parametrów" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "Kalendarz nadchodzÄ…cych wydarzeÅ„" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "Zobacz wiÄ™cej" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "URL strony kalendarza tej witryny, dla odnoÅ›ników z widgetu" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr " (PrzykÅ‚ady: listtype=8 events=10 days=60 start=rrmmdd startoffset=-2...)" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "" + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "" + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-ro_RO.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-ro_RO.mo new file mode 100644 index 0000000000000000000000000000000000000000..53e75fe3774c3863b251e70977e62ae347fc6a3c GIT binary patch literal 36681 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
                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "pagina. Va rugam sa consilieze administratorul cat mai curand posibil. " + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "aceasta este. " + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "O legatura intr-permite utilizatorului sa adauge calendaristic la calendarul lor Google. " + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "O legatura intr-pentru a permite utilizatorilor sa refetch un fisier ics" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "configurat modul in care aceasta este. " + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "Adauga eveniment la Google" + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "de tip lista. " + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "Adauga la Google" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "Adauga la Google Calendar" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "Adresa" + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Avansat:" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "Dupa" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "Agenda" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "Alarma de actiune." + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "Repetare alarma." + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "Declansa alarma." + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "este. " + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "Editia astronomice" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "shortcodes si widget-uri. " + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "Inainte" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "Concediu pentru randuri!" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "Calendar" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "Calendar URL-ul pentru Previews:" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "Calendar URL-ul paginii pentru previzualizari trebuie sa fie introdusa de mai sus" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "Calendar pagina url" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "Calendar URL-ul paginii din acest site, pentru link-uri de la widget" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "Calendar proprietati" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "Schimbarea Timezone" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "Verificati pentru listele pentru a sterge" + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Alegeti metoda de localizare data:" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Alege plugin implicit css sau alege un CSS personalizat si editati-l." + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "Clasa" + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "Click aici pentru a reimprospata" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "Coloana" + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Coloana Titluri:" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "Configurati Lista tip de eveniment:" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "Luati in considerare trecerea la setarea de fus orar mult mai precis" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "Nu sa putut copia fisierul." + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Timpul curent (unlocalised):" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "Particularizate - fisier necesare" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "Particularizat fisier HTML stil la% s. .." + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "Zilnic" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "Data" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "Data eveniment creat." + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "Evenimentul data ultimei modificari." + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "Data publicarii eveniment." + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "Date excluse din seria recurente" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "Zi" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "Implicit" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "URL-ul implicit Eveniment" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "ajutor de memorie de cum / de ce aceasta este configurat modul in care aceasta este. " + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "pentru a ajuta memoria de cum / de ce aceasta este configurat modul in care aceasta este. " + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "Definiti grupare:" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Definiti maxime:" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "DTSTART camp este startdate prima dintr-o secventa eveniment recurente. " + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "Sterge" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "Descriere" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "Administreaza Widget . " + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Nu un hyperlink rezumat eveniment cu descrierea evenimentului ca text titlu" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "Nu da credit autorului" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "Documentatie" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Descarcati cele mai recente fisier CSS prevazute pentru editare" + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "de mai jos. " + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "Altele includ evenimente create intern prea" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "Introduceti un numar de lista pentru a incepe un tip de lista cu setari implicite noi." + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "utilizati pentru previzualizari de tip lista. " + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Eroare la crearea directorul cache% s. Va rugam sa verificati permisiunile" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "Eroare la crearea particularizate% CSS director s. Va rugam sa verificati permisiunile" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "Eroare la gasirea sau parsarea calendaristic% ical s" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Eroare in forma - matrice calprop nu a fost gasit" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "Eveniment atasament" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "EventInfo" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "Evenimente de plugin anmari" + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "Fiecare% s% s" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "Excluderea regula - nu mai este in spec." + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "Expand / Contract toate" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Evenimente externe numai" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "Url-uri externe, circuite integrate si optiuni avansate" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "Url-uri externe, circuite integrate si / sau parametrii optionali shortcode separate prin spatii.) " + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "Camp" + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "ICS sau fisier. " + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "de ce este configurat modul in care aceasta este. " + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "Forum pentru hrana animalelor" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Optiuni generale" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "Setari generale listare" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "Adu-o aici" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "Du-te la% 1 $ s% 2 $ s" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "Du-te pentru a vizualiza ordinea de zi sau lista" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "Du-te la calendar vizualiza" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "Du-te la data" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "Du-te la harta" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "Du-te la setarile" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "HTML5 EXP 1" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "HTML5 EXP 2" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "HTML5 curate si macra" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "HTML5 in tabelul" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "Pe ora" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "Hover descrierii de pe titlul" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "strong>, atat la zona de fata si admin. " + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "In cazul in care o activitate este finalizata." + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "Daca aveti o cerere caracteristica, va rugam sa faceti sa-mi spuneti." + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "Imagine icon size:" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "Setarile importate pentru invalide% lista s - nu au fost salvate" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "Datele individuale la care evenimentul se va repeta" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Informatii despre ce schimbari sunt, in care timezonedb versiune" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "Descriere interna" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "Invalid URL-ul% s ical" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "Data de incepere nevalid" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "Url-ul nevalid" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Mare caseta de calendar" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "Mare-Calendar" + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "Ultima reimprospatare de timp nu in mod neasteptat disponibil" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "Ultima reimprospatare a fost la% s." + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "continua in intreaga luni. Intr-adevar doua saptamani trebuie sa fie afisate un moment dat. " + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "Pentru a adauga legatura intr-eveniment la un calendar Google" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "Legatura intr-harta" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "Legatura intr-recurente serie fisier eveniment circuite" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "Legatura intr-un singur fisier ics eveniment" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "Link-uri pentru a indica daca frecventeaza." + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "Link-uri catre ANEXE specificate (circuite)" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "Lista" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "Lista% s va fi sters" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "Lista% s va fi salvata cu datele importate" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "Lista HTML Stil" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "Tipul lista Setari" + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "Lista salvate" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "Lista tipurilor de" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "Listarea Evenimente" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "Liste pentru randuri" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "Liste salvate" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "domeniile iCal pentru confortul dumneavoastra. " + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "Administreaza Tipuri de evenimente Lista" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "Harta" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "Mesaj in cazul in care nu sunt relatate evenimente:" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "De cel putin versiunea PHP 5.3 necesar pentru evenimente cacheing." + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "Modificarea nivelului de eveniment." + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "Luna" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "Lunar" + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "Mai multe informatii" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "Mai multe informatii:" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "Mai multe informatii" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "Nume" + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "Nici un fisier iCal cache pentru evenimente" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Nici o schimbare la optiuni sau erori neasteptate in salvarea" + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "Nici un fisier CSS gasit in directorul CSS" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "Nu este disponibila nicio descriere" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "Nu sunt relatate evenimente in cadrul criteriilor de" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "Nr zonei de fus orar la nivel mondial - exista o problema aici?" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "Nr componente iCal solicitate pentru afisare" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "Nr url inscrise - au doriti ca evenimentele de la mesaje?" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "Nota cache ori sunt in ore" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Nota: un 0 (zero) in coloana = nu arata acest domeniu." + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "La instanta% s in% s" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "Pe de turism" + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "Optiunea nu a fost salvat inainte de sau eroare la stergerea optiune ..." + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Optiuni sterse ..." + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "Comanda" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "Alte:" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "PASTE lista de tip sir" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "Manual PHP - formate de datetime data" + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "Php timezonedb versiuni" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "Va rugam sa folositi numere> 1" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Plugin nu poate determina versiunea timezonedb in PHP <5.3." + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "Plugin pentru hrana animalelor" + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "Anunt" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "Trimestru" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "Rata de aceasta la WP" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "Reimprospatare calendare" + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Fisier de la distanta a avut nici o modificare." + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Resetati toate optiunile listare" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Resetarea optiuni ..." + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "Reveniti pentru a gestiona tipurile de lista" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "Camera" + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "Salvati setarile" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Salvarea ...." + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "Spune \"toata ziua\" (tradus), in cazul in care evenimentul are zile intregi." + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "A se vedea comentariile in sursa pentru raspunsul primit de la serverul de circuite integrate." + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "Vezi mai multe" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "A se vedea mai multi parametri" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "A se vedea php functia de siruri de caractere data format" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "A se vedea site-ul web plugin pentru mai multe detalii" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "Selectati tot continutul, si COPIE." + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Selectati componente pentru a afisa:" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "Trimisa de" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "Setari" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "Arata ocupat (traduse) in cazul in care componenta freebusy este in uz." + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "Vedeti evenimentele de la circuite externe numai, NU pickup orice evenimente interne." + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "Afiseaza in Google harta" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "Locul de amplasare Afiseaza in Google Maps" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "Cutie mica calendar" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "Mici-Calendar" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Specificati campuri pentru a afisa:" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "Stil si imagini" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "»»" + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "Aboneaza-te la calendar% s" + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "Aboneaza-te la calendar" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "Aboneaza-te la calendar in aplicatia calendar." + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "Sprijin" + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "Comuta la% s pe% s. GMT diferenta: d%" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "Tabel" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "Tabelul cu listele din celule (original)" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "De incercare decoda" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "Testarea" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "PHP versiunea 5.2. " + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "Autorul a evenimentului." + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "Persoana de contact, daca este disponibil." + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "teme. Tema dvs. pot fi diferite. " + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "UTC actual de compensare pentru faptul ca zona de fus orar este:" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "Data de o instanta eveniment se termina. Blank daca aceeasi ca data evenimentului" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "Data de exemplu, la o data repeta, sau data evenimentului" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "Data scadenta a unei sarcini." + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "Durata unui eveniment." + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "Url evenimente cum ar fi furnizat de fisier ICS, sau WordPress permalink eveniment. " + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "Latitudine si longitudine" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "Tipul de lista este o matrice imens." + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "de memorie de cum / de ce aceasta este configurat modul in care aceasta este. " + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "cum / de ce este configurat modul in care aceasta este. " + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "de ce este configurat modul in care aceasta este. " + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "Data eveniment original sau primul dintr-o serie de periodice" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "Data la care evenimentul original sau primul sfarsitul termenului de o serie de periodice" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "Plugin-ul crede ca fusul orar este:" + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "Dosarul de la distanta Ultima modificare pe% s." + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "Regula de repetare a evenimentului." + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "Timpul de o instanta eveniment se termina." + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "Timpul de exemplu, la o data repeta, sau data evenimentului" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "Momentul in care fisierul circuite a fost modificata" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "ID-ul unic al unei instante sau reaparitiei exceptie." + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "Identificatorul unic al evenimentului." + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "data in acest format ca un titlu pentru acest grup de date, daca este cazul.) " + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "Aceasta caracteristica este necesar plugin-ul AMR-evenimente" + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "Tema este modernizat. " + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "Orar" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "Timezone:% s, Click pentru% s" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "Titlu" + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "Pentru a edita evenimente in WordPress:" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "imagini / CSS. " + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Evenimente total:" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "Editia traditionala" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "Imposibil de incarcat sau iCal cache calendaristic% s" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "Uncaught exceptie:" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "Continutul neasteptate de date. Va rugam sa spuneti administrator." + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "Dezinstalare" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Dezinstalati plugin si stergeti optiunile din baza de date." + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "Evenimente viitoare" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "Evenimente viitoare Calendar" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "Evenimente viitoare Lista" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "Actualizare" + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "Campuri majuscule sunt cele definite in caietul de sarcini iCal." + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "Utilizati mea tema CSS nu, plugin-CSS" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "Utilizarea standard format PHP siruri de caractere:" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "Utilizatorii care sunt prezenti." + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "Utilizatorii care au acceptat." + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "Utilizarea fisierului cache ultima la% s" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "Loc de intalnire" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "Clipuri" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "Vezi evenimentele din% s% s" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "Atentie: Evenimentele pot fi depasite." + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "Avertisment: Aceasta va sterge toate tipurile selectate lista imediat." + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "Avertisment: Acest lucru va reseta toate optiunile listare imediat." + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "Saptamana" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "U% Saptamana" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "Saptamana incepand de% 1 $ s" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "Saptamana% incepand cu s" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "Saptamanal" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "Orizontale pe saptamana" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "Saptamani calendaristice" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "Saptamani incepe la% s" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Western Zodiac" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "Ce" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "Cand" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "Unde" + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "De ce codifica?" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "Widget" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "Intrarea Wikipedia descrie componentele" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "mai stabile. " + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "WordPress continut sau ICS descriere" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "WordPress extras" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "WordPress sau categorii de circuite integrate fisier" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "WordPress mesaj miniatura" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "WordPress mesaj titlu sau ICS REZUMAT" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "An" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "Anual" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Sunteti utilizand \"vechi\" setarea gmt_offset" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "Dvs. directorul cache% s a fost creat" + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "optiune lista inapoi la versiunea anterioara. Aveti copii de siguranta regulate dreptul? " + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "Versiunea dvs. de PHP este:% s" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "Versiunea dvs. db zonei de fus orar este:% s" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "amr" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "amr evenimentele din calendar sau liste cu fisiere iCal" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "anmari" + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "la ora% s" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "la minut% s" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "la% s secunde" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "zi" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "zile" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "fiecare" + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "fiecare" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr ">" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "<" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "ora" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "ora" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "http://anmari.com/" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "http://icalevents.com" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "iCal lista evenimentelor" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "iCal lista evenimentelor" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "Liste iCal Evenimente" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "circuite integrate de clasa" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "circuite integrate in comentariu" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "circuite integrate eveniment prioritate" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "circuite integrate eveniment de stare" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "amiaza" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "luna" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "luni" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "n / a" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "nici unul" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "pe% s" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "in ziua% s din fiecare luna" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "in ziua% s a anului" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "pe anumite date" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "arata evenimentele viitoare" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "arata mai putin" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "arata maxim 10 evenimente, daca este disponibil" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "arata maxim 100 de evenimente, daca este disponibil" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "arata maxim 50 de evenimente, daca este disponibil" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "arata mai mult" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "arata mult mai putin" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "arata mult mai mult" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "arata evenimente din trecut" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "% s" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "s ultimul%" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "prima" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "ultimul" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "pana la% s% s" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "saptamana" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "wp" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "wpgmt" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "an" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-ru_RU.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-ru_RU.mo new file mode 100644 index 0000000000000000000000000000000000000000..56c39ffb351a2c468f0444bfe88b72da3e1daedb GIT binary patch literal 3660 zcmeH}Piz!b9LJxCe~_RC<3ZEt3yQ&{R3ZnGLL`JX+5`$|izS>Kc3*cV%+73PW?MMP z7LXX4^kDR0{FjI(ni!Y#ViQEU^qu@uN=>HIKDy+MjQ{2I>Jb;rd1wo!Dr{FY4H>7(Ee$6(^4R)sbRRn@QuxIu3Lx2uhw& zM=B%QJ?eP+L^XB;Khj0xnb;KdL>N@`fD=1sov2G}+%1+&{4dhzGk(ztbu|pCCX8JZ zsiTfxFrGTUavQO1 zK%b4ePwTNj7lKMvDDf`nn(z8i?08;@3+;LD_>O2n%f4U)B-0@<}R;Kxv`ao-PO?VAFsobZC^2y2*>z#>z1LR8@- zoXO1%U-gvhdD`)!Oq^pxV;xLbv5s@ORqV4oVURnD4FTpB8%?ii&&Hb)Fh zU(l!8q_>Oiuo?-1iW;R*3$aZP$?#)KDk+)jSEGDuVtC!wxUM+WY|9G@1VNfQXUCmt zq{f8lc4@#SWjpB>X@ar|X(Z~<*N#g&1v&~UMshz@4s=<#G+`MPv=h}^Hg4FJ?z~vU znxoH2@+7-cZd8`a3v_HM)gW|2mngG>v?*!xbx%EtCtbP2R?(cTmFS+54nkeO^ z^`@bl)wnU|wBB7)<7Fr2%lPsY8kMw?_4H!0m@M$Wk~GulbVjF_lNOt+Nh6)soB-)H zoiueaXJuEBT}zsZqgHYwX(V&)i*?yZucgyTGg(BuJgZ70NP zdNG|<8_Fyl3W*g?>SpA?;N#sg94C&F(aKNr|Y&@rOBBhc{fO45;a}gpe(zdvYT_ZEvfox zDl7j%bgvY1$ofy|c3o(sS2nI(?=IV3n$ym&h3pn&+u>vVpVj!n5abBYb9EhpsBdu+ zV$ye|vh$|Kz4QutmvOWu^)924;l!3qnOky!Il&|lN3 ? 2 : 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: \n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "определить формат даты и времени" + +#: includes/amr-pluggable.php:852 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "добавить Ñобытие в google" + +#: includes/amr-ical-list-admin.php:252 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "ÑвойÑтва календарÑ" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "клаÑÑ" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "дата" + +#: includes/amr-ical-list-admin.php:343 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "определить группирование:" + +#: includes/amr-ical-list-admin.php:439 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "определить мкÑимальный:" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "опиÑание" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "комната" + +#: includes/amr-ical-list-admin.php:414 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "выбрать ÐºÐ¾Ð¼Ð¿Ð°Ð½ÐµÐ½Ñ‚Ñ‹Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°:" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "показать в карте google" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "показать меÑта в картах google" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:281 +#@ amr-ical-events-list +msgid "Title" +msgstr "название" + +#: includes/amr-ical-list-admin.php:133 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "модифицировать" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:117 +#: includes/amr-upcoming-events-widget.php:187 +#: includes/amr-upcoming-events-widget.php:270 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "предÑтоÑщие ÑобытиÑ" + +#: includes/amr-ical-list-admin.php:126 +#@ amr-ical-events-list +msgid "Update" +msgstr "обновить" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "меÑто проведениÑ" + +#: includes/amr-pluggable.php:1013 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "Ð½Ð°Ð´ÐµÐ»Ñ %u" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "что" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "когда" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "где" + +#. translators: plugin header field 'Name' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. translators: plugin header field 'PluginURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://icalevents.com" +msgstr "" + +#. translators: plugin header field 'Description' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "Display simple or highly customisable and styleable list of events. Handles all types of recurring events, notes, journals, freebusy etc. Offers links to add events to viewers calendar or subscribe to whole calendar. Write Calendar Page and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.12" +msgstr "" + +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "Column" +msgstr "" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Order" +msgstr "" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "Before" +msgstr "" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:299 +#@ amr-ical-events-list +msgid "After" +msgstr "" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1387 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "" + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "" + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "" + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +#, php-format +#@ amr-ical-events-list +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +#, php-format +#@ amr-ical-events-list +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +#, php-format +#@ amr-ical-events-list +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +#, php-format +#@ amr-ical-events-list +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +#, php-format +#@ amr-ical-events-list +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:78 +#@ amr-ical-events-list +msgid "the first" +msgstr "" + +#: includes/amr-ical-events-list-main.php:80 +#@ amr-ical-events-list +msgid "every" +msgstr "" + +#: includes/amr-ical-events-list-main.php:82 +#@ amr-ical-events-list +msgid "the last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:84 +#, php-format +#@ amr-ical-events-list +msgid "the %s last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:86 +#, php-format +#@ amr-ical-events-list +msgid "the %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +#@ default +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +#@ default +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +#@ default +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +#@ default +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +#@ default +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +#@ default +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +#@ default +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:308 +#, php-format +#@ amr-ical-events-list +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "" + +#: includes/amr-ical-events-list-main.php:330 +#@ amr-ical-events-list +msgid "Could not copy file." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1370 +#, php-format +#@ amr-ical-events-list +msgid "Unable to load or cache ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1378 +#, php-format +#@ amr-ical-events-list +msgid "Error finding or parsing ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1414 +#@ amr-ical-events-list +msgid "This feature requires the plugin amr-events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1415 +#@ amr-ical-events-list +msgid "Get it here" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1544 +#@ amr-ical-events-list +msgid "No url entered - did you want events from posts ?" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1577 +#@ amr-ical-events-list +msgid "No ical components requested for display" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "Invalid Ical URL %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1836 +#, php-format +#@ amr-ical-events-list +msgid "System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1838 +#@ amr-ical-events-list +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1974 +#@ amr-ical-events-list +msgid "Invalid Start Date" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2317 +#@ amr-ical-events-list +msgid "Uncaught exception: " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2318 +#@ amr-ical-events-list +msgid "

                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "" + +#: includes/amr-ical-events-list-main.php:2325 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2353 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2355 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2356 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2357 +#: includes/amr-ical-list-admin.php:28 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:31 +#@ amr-ical-events-list +msgid "Support" +msgstr "" + +#: includes/amr-ical-list-admin.php:34 +#@ amr-ical-events-list +msgid "Videos" +msgstr "" + +#: includes/amr-ical-list-admin.php:37 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "" + +#: includes/amr-ical-list-admin.php:39 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:44 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:68 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:70 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:73 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "" + +#: includes/amr-ical-list-admin.php:75 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "" + +#: includes/amr-ical-list-admin.php:78 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "" + +#: includes/amr-ical-list-admin.php:81 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "" + +#: includes/amr-ical-list-admin.php:86 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "" + +#: includes/amr-ical-list-admin.php:91 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:95 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:108 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "" + +#: includes/amr-ical-list-admin.php:114 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "" + +#: includes/amr-ical-list-admin.php:124 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:131 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "" + +#: includes/amr-ical-list-admin.php:138 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:141 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "" + +#: includes/amr-ical-list-admin.php:156 +#: includes/amr-ical-list-admin.php:1131 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:171 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:179 +#: includes/amr-ical-list-admin.php:633 +#@ amr-ical-events-list +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:185 +#: includes/amr-ical-list-admin.php:687 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:188 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "" + +#: includes/amr-ical-list-admin.php:204 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:211 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:226 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "" + +#: includes/amr-ical-list-admin.php:278 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:281 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "" + +#: includes/amr-ical-list-admin.php:283 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "" + +#: includes/amr-ical-list-admin.php:288 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "" + +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:295 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:347 +#@ amr-ical-events-list +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:359 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:368 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:387 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:416 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "" + +#: includes/amr-ical-list-admin.php:442 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "" + +#: includes/amr-ical-list-admin.php:482 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:495 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:532 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:575 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:581 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:623 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:628 +#@ amr-ical-events-list +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:638 +#@ amr-ical-events-list +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:662 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:664 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:674 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "" + +#: includes/amr-ical-list-admin.php:691 +#@ amr-ical-events-list +msgid "List saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:713 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "" + +#: includes/amr-ical-list-admin.php:721 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "" + +#: includes/amr-ical-list-admin.php:742 +#@ amr-ical-events-list +msgid "List types" +msgstr "" + +#: includes/amr-ical-list-admin.php:957 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "" + +#: includes/amr-ical-list-admin.php:1027 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "Name" +msgstr "" + +#: includes/amr-ical-list-admin.php:1031 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "" + +#: includes/amr-ical-list-admin.php:1055 +#@ amr-ical-events-list +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1061 +#: includes/amr-ical-list-admin.php:1340 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "Table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1072 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1078 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "" + +#: includes/amr-ical-list-admin.php:1079 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1090 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "" + +#: includes/amr-ical-list-admin.php:1092 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1094 +#: includes/amr-pluggable.php:818 +#@ amr-ical-events-list +msgid "More information" +msgstr "" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "General Options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1149 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1156 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1166 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1181 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1191 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1196 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "" + +#: includes/amr-ical-list-admin.php:1205 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1212 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "" + +#: includes/amr-ical-list-admin.php:1219 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1225 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1228 +#@ amr-ical-events-list +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1232 +#@ amr-ical-events-list +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1235 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "" + +#: includes/amr-ical-list-admin.php:1238 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "" + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1241 +#@ amr-ical-events-list +msgid "More info" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1244 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "" + +#: includes/amr-ical-list-admin.php:1246 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "" + +#: includes/amr-ical-list-admin.php:1256 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1258 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1262 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1268 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1271 +#@ amr-ical-events-list +msgid "none" +msgstr "" + +#: includes/amr-ical-list-admin.php:1273 +#@ amr-ical-events-list +msgid "amr" +msgstr "" + +#: includes/amr-ical-list-admin.php:1275 +#@ amr-ical-events-list +msgid "wp" +msgstr "" + +#: includes/amr-ical-list-admin.php:1277 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "" + +#: includes/amr-ical-list-admin.php:1281 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1286 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1295 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1312 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1324 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1326 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1330 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1335 +#@ default +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1343 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1349 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1354 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1357 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "" + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:36 +#: includes/amr-ical-pretty-print.php:44 +#: includes/amr-ical-pretty-print.php:60 +#: includes/amr-ical-pretty-print.php:148 +#@ amr-ical-events-list +msgid " and " +msgstr "" + +#: includes/amr-ical-pretty-print.php:46 +#@ amr-ical-events-list +msgid "every " +msgstr "" + +#: includes/amr-ical-pretty-print.php:75 +#@ amr-ical-events-list +msgid " or " +msgstr "" + +#: includes/amr-ical-pretty-print.php:112 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:122 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:127 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "" + +#: includes/amr-ical-pretty-print.php:132 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:134 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:139 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:140 +#: includes/amr-ical-pretty-print.php:141 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "" + +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:147 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:152 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "" + +#: includes/amr-ical-pretty-print.php:153 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "" + +#: includes/amr-ical-pretty-print.php:154 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "" + +#: includes/amr-import-ical.php:37 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "" + +#: includes/amr-import-ical.php:40 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "" + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "" + +#: includes/amr-import-ical.php:69 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "" + +#: includes/amr-import-ical.php:159 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:163 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "" + +#: includes/amr-import-ical.php:165 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "" + +#: includes/amr-import-ical.php:167 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "" + +#: includes/amr-import-ical.php:173 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:585 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:625 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:654 +#: includes/amr-pluggable.php:661 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:655 +#@ default +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:701 +#@ amr-ical-events-list +msgid "No description available" +msgstr "" + +#: includes/amr-pluggable.php:704 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:709 +#: includes/amr-pluggable.php:719 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "" + +#: includes/amr-pluggable.php:726 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "" + +#: includes/amr-pluggable.php:728 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "" + +#: includes/amr-pluggable.php:834 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "" + +#: includes/amr-pluggable.php:836 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "" + +#: includes/amr-pluggable.php:876 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "" + +#: includes/amr-pluggable.php:880 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "" + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "" + +#: includes/amr-pluggable.php:883 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "" + +#: includes/amr-pluggable.php:887 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "" + +#: includes/amr-pluggable.php:892 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "" + +#: includes/amr-pluggable.php:1287 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1390 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#: includes/amr-pluggable.php:1392 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1400 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1406 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/amr-pluggable.php:1416 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1421 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-pluggable.php:1450 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "" + +#: includes/amr-pluggable.php:1761 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1766 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1782 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1787 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1792 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: includes/amr-pluggable.php:1811 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "" + +#: includes/amr-pluggable.php:1812 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:138 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:147 +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:148 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:155 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "External events only" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "" + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:296 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:171 +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:172 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:174 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:190 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:279 +#@ amr-ical-events-list +msgid "See more" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:288 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:304 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" + +#: includes/functions.php:48 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + +#: includes/functions.php:220 +#: includes/functions.php:224 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "" + +#: includes/functions.php:264 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "" + +#: includes/functions.php:265 +#@ amr-ical-events-list +msgid "If you have a feature request, please do let me know. " +msgstr "" + +#: includes/functions.php:267 +#@ amr-ical-events-list +msgid "To edit events in wordpress:" +msgstr "" + +#: includes/functions.php:269 +#@ amr-ical-events-list +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:274 +#@ amr-ical-events-list +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:276 +#@ amr-ical-events-list +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:277 +#@ amr-ical-events-list +msgid "Find out more" +msgstr "" + +#: includes/functions.php:308 +#@ amr-ical-events-list +msgid "Events plugin by anmari" +msgstr "" + +#: includes/functions.php:324 +#@ amr-ical-events-list +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +#@ amr-ical-events-list +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +#@ amr-ical-events-list +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +#@ amr-ical-events-list +msgid "Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins." +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-uk_UA.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-uk_UA.mo new file mode 100644 index 0000000000000000000000000000000000000000..21c7144e06be3a1eaf84975f2a7311b842d6434a GIT binary patch literal 37361 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-uk_UA.po b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-uk_UA.po new file mode 100644 index 0000000..4cce434 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list-uk_UA.po @@ -0,0 +1,2460 @@ +msgid "" +msgstr "" +"Project-Id-Version: amr events calendar or lists with ical files v4.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2014-05-16 21:33:41+1000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: \n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +# Copyright (C) 2014 amr events calendar or lists with ical files +# This file is distributed under the same license as the amr events calendar or lists with ical files package. +#: includes/amr-ical-calendar.php:48 +#@ amr-ical-events-list +msgid "Go to events for this day only" +msgstr "Перейти до подій цього Ð´Ð½Ñ Ñ‚Ñ–Ð»ÑŒÐºÐ¸" + +#: includes/amr-ical-config.php:141 +#: includes/amr-ical-list-admin.php:293 +#@ amr-ical-events-list +msgid "Column" +msgstr "Колонка" + +#: includes/amr-ical-config.php:142 +#: includes/amr-ical-list-admin.php:296 +#@ amr-ical-events-list +msgid "Order" +msgstr "ПорÑдок" + +#: includes/amr-ical-config.php:143 +#: includes/amr-ical-list-admin.php:297 +#@ amr-ical-events-list +msgid "Before" +msgstr "До" + +#: includes/amr-ical-config.php:144 +#: includes/amr-ical-list-admin.php:298 +#@ amr-ical-events-list +msgid "After" +msgstr "ПіÑлÑ" + +#: includes/amr-ical-config.php:202 +#@ amr-ical-events-list +msgid "A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +#@ amr-ical-events-list +msgid "A link to allow user to refetch an ics file" +msgstr "ПоÑиланнÑ, що дозволÑÑ” кориÑтувачеві отримати файл ics" + +#: includes/amr-ical-config.php:204 +#@ amr-ical-events-list +msgid "The time the ics file was last modified" +msgstr "Ð§Ð°Ñ Ð¾Ñтанього Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ics файлу" + +#: includes/amr-ical-config.php:206 +#@ amr-ical-events-list +msgid "WordPress post title or ICS SUMMARY" +msgstr "WordPress заголовок поÑта або ics резюме" + +#: includes/amr-ical-config.php:207 +#@ amr-ical-events-list +msgid "WordPress content or ICS description" +msgstr "ЗміÑÑ‚ WordPress або Ð¾Ð¿Ð¸Ñ ics" + +#: includes/amr-ical-config.php:208 +#@ amr-ical-events-list +msgid "WordPress excerpt" +msgstr "WordPress випиÑка" + +#: includes/amr-ical-config.php:209 +#@ amr-ical-events-list +msgid "WordPress post thumbnail" +msgstr "WordPress Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð·Ñ– Ñлайдами" + +#: includes/amr-ical-config.php:210 +#@ amr-ical-events-list +msgid "Address" +msgstr "ÐдреÑа" + +#: includes/amr-ical-config.php:211 +#@ amr-ical-events-list +msgid "Link to map" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° мапі" + +#: includes/amr-ical-config.php:212 +#@ amr-ical-events-list +msgid "Link to add event to a google calendar" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ñ— до ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Google" + +#: includes/amr-ical-config.php:213 +#@ amr-ical-events-list +msgid "Link to single event ics file" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° подію ics файла" + +#: includes/amr-ical-config.php:214 +#@ amr-ical-events-list +msgid "Link to recurring event series ics file" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñерію подій ics файла" + +#: includes/amr-ical-config.php:215 +#@ amr-ical-events-list +msgid "The latitude and longitude" +msgstr "Широта Ñ– довгота" + +#: includes/amr-ical-config.php:216 +#@ amr-ical-events-list +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñпецифічні Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ (ics)" + +#: includes/amr-ical-config.php:218 +#@ amr-ical-events-list +msgid "WordPress or ics file categories " +msgstr "Категорії ics або WordPress" + +#: includes/amr-ical-config.php:219 +#@ amr-ical-events-list +msgid "ics class" +msgstr "ics клаÑи" + +#: includes/amr-ical-config.php:220 +#@ amr-ical-events-list +msgid "ics comment" +msgstr "ics коментар" + +#: includes/amr-ical-config.php:222 +#@ amr-ical-events-list +msgid "ics event priority" +msgstr "пріоритет ics подій" + +#: includes/amr-ical-config.php:224 +#@ amr-ical-events-list +msgid "ics event status" +msgstr "ÑÑ‚Ð°Ñ‚ÑƒÑ ics подій" + +#: includes/amr-ical-config.php:225 +#@ amr-ical-events-list +msgid "The date of instance of a repeating date, or the event date" +msgstr "Дата примірника повторюваної дати або дати Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¾Ð´Ñƒ" + +#: includes/amr-ical-config.php:226 +#@ amr-ical-events-list +msgid "The time of instance of a repeating date, or the event date" +msgstr "Ð§Ð°Ñ Ð¿Ñ€Ð¸Ð¼Ñ–Ñ€Ð½Ð¸ÐºÐ° повторюваної дати або дати Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¾Ð´Ñƒ" + +#: includes/amr-ical-config.php:227 +#@ amr-ical-events-list +msgid "The date an event instance ends. Blank if same as event date " +msgstr "ÐŸÐ¾Ð´Ñ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÑƒÑ”Ñ‚ÑŒÑÑ. Бланк дати події" + +#: includes/amr-ical-config.php:228 +#@ amr-ical-events-list +msgid "The time an event instance ends. " +msgstr "Ð§Ð°Ñ Ð¿Ñ€Ð¸Ð¼Ñ–Ñ€Ð½Ð¸Ðº Ð¿Ð¾Ð´Ñ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÑƒÑ”Ñ‚ÑŒÑÑ." + +#: includes/amr-ical-config.php:229 +#@ amr-ical-events-list +msgid "The original or first event date of a recurring series" +msgstr "Оригінал або перша Ð¿Ð¾Ð´Ñ–Ñ Ð· повторюваної Ñерії" + +#: includes/amr-ical-config.php:231 +#@ amr-ical-events-list +msgid "The original or first event's end date of a recurring series" +msgstr "Дата Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð¾Ñ€Ð¸Ð³Ñ–Ð½Ð°Ð»Ñƒ або першого заходу з повторюваної Ñерії" + +#: includes/amr-ical-config.php:232 +#@ amr-ical-events-list +msgid "The due date of a task." +msgstr "Термін Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ." + +#: includes/amr-ical-config.php:233 +#@ amr-ical-events-list +msgid "The duration of an event." +msgstr "ТриваліÑть події." + +#: includes/amr-ical-config.php:234 +#@ amr-ical-events-list +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "Каже \"all day\" (в перекладі), Ñкщо Ð¿Ð¾Ð´Ñ–Ñ Ð¼Ð°Ñ” повні дні." + +#: includes/amr-ical-config.php:235 +#@ amr-ical-events-list +msgid "If a task is completed." +msgstr "Якщо Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ðµ." + +#: includes/amr-ical-config.php:236 +#@ amr-ical-events-list +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "Показати зайнÑтий (переклад), Ñкщо FreeBusy компонент знаходитьÑÑ Ñƒ викориÑтанні." + +#: includes/amr-ical-config.php:240 +#@ amr-ical-events-list +msgid "Users who have accepted." +msgstr "КориÑтувачі, Ñкі приймаютьÑÑ." + +#: includes/amr-ical-config.php:242 +#@ amr-ical-events-list +msgid "Add register button. Registration settings can be set as global defaults or per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +#@ amr-ical-events-list +msgid "Links to indicate if attending." +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ–Ð½Ð´Ð¸ÐºÐ°Ñ†Ñ–Ñ— при відвідуванні." + +#: includes/amr-ical-config.php:244 +#@ amr-ical-events-list +msgid "The contact person if available." +msgstr "Контактна оÑоба, Ñкщо доÑтупна." + +#: includes/amr-ical-config.php:245 +#@ amr-ical-events-list +msgid "The author of the event." +msgstr "Ðвтор події." + +#: includes/amr-ical-config.php:246 +#@ amr-ical-events-list +msgid "Users who are attending." +msgstr "КориÑтувачі, Ñкі відвідують." + +#: includes/amr-ical-config.php:247 +#@ amr-ical-events-list +msgid "The unique id of a recurrence instance or exception." +msgstr "Унікальний ідентифікатор повторюваноÑті інÑтанції або виключеннÑ." + +#: includes/amr-ical-config.php:249 +#@ amr-ical-events-list +msgid "The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +#@ amr-ical-events-list +msgid "The unique identifier of the event." +msgstr "Унікальний ідентифікатор події." + +#: includes/amr-ical-config.php:251 +#@ amr-ical-events-list +msgid "Dates excluded from the recurring series" +msgstr "Терміни, виключені з повторюваних Ñерій" + +#: includes/amr-ical-config.php:252 +#@ amr-ical-events-list +msgid "Exclusion rule - no longer in spec" +msgstr "Правило Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ - вже не у Ñпецифікації" + +#: includes/amr-ical-config.php:253 +#@ amr-ical-events-list +msgid "Individual dates on which event is to be repeated" +msgstr "Індивідуальні терміни, за Ñкою подією повинна бути повторена" + +#: includes/amr-ical-config.php:254 +#@ amr-ical-events-list +msgid "The rule for the recurrence of the event." +msgstr "Правило Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ñ—." + +#: includes/amr-ical-config.php:255 +#@ amr-ical-events-list +msgid "Alarm action." +msgstr "Ð”Ñ–Ñ Ñигналу тривоги." + +#: includes/amr-ical-config.php:256 +#@ amr-ical-events-list +msgid "Alarm repeat." +msgstr "Повторити Ñигналізацію." + +#: includes/amr-ical-config.php:257 +#@ amr-ical-events-list +msgid "Alarm trigger." +msgstr "По тривозі." + +#: includes/amr-ical-config.php:258 +#@ amr-ical-events-list +msgid "Date event created." +msgstr "Дата ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ñ—." + +#: includes/amr-ical-config.php:259 +#@ amr-ical-events-list +msgid "Date event published." +msgstr "Дата публікації події." + +#: includes/amr-ical-config.php:260 +#@ amr-ical-events-list +msgid "Modification level of event." +msgstr "Рівень модифікації події." + +#: includes/amr-ical-config.php:261 +#@ amr-ical-events-list +msgid "Date event last modified." +msgstr "Дата оÑтанньої зміни події." + +#: includes/amr-ical-config.php:262 +#@ amr-ical-events-list +msgid "Events in an ics file" +msgstr "Події у ics файлі" + +#: includes/amr-ical-config.php:263 +#@ amr-ical-events-list +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "Елементи у файлі ics, Ñкі вказують зайнÑті або доÑтупні тимчаÑові інтервали" + +#: includes/amr-ical-config.php:264 +#@ amr-ical-events-list +msgid "Todo Task Items in an ics file" +msgstr "Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ у ics файлі" + +#: includes/amr-ical-config.php:265 +#@ amr-ical-events-list +msgid "Journal notes in an ics file - no date or time" +msgstr "Журнал логу, у ics файлі - немає дати або чаÑу" + +#: includes/amr-ical-config.php:361 +#@ amr-ical-events-list +msgid "No events found within criteria" +msgstr "По заданим крітеріÑм подію не знайдено" + +#: includes/amr-ical-config.php:362 +#: includes/amr-pluggable.php:1379 +#@ amr-ical-events-list +msgid "Look for more" +msgstr "ПереглÑнути більше" + +#: includes/amr-ical-config.php:363 +#@ amr-ical-events-list +msgid "Look for previous" +msgstr "ПереглÑнути попередні" + +#: includes/amr-ical-config.php:364 +#: includes/amr-ical-config.php:1156 +#@ amr-ical-events-list +msgid "Reset" +msgstr "СкиданнÑ" + +#: includes/amr-ical-config.php:386 +#@ amr-ical-events-list +msgid "Default" +msgstr "За замовчаннÑм" + +#: includes/amr-ical-config.php:387 +#@ amr-ical-events-list +msgid "A default calendar list. This one set to tables with lists in the cells. Usually needs the css file enabled. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:365 +#@ amr-ical-events-list +msgid "Year" +msgstr "Рік" + +#: includes/amr-ical-config.php:366 +#@ amr-ical-events-list +msgid "Quarter" +msgstr "Чверть" + +#: includes/amr-ical-config.php:367 +#@ amr-ical-events-list +msgid "Astronomical Season" +msgstr "ÐÑтрономічний Ñезон" + +#: includes/amr-ical-config.php:368 +#@ amr-ical-events-list +msgid "Traditional Season" +msgstr "Традиційний Ñезон" + +#: includes/amr-ical-config.php:369 +#@ amr-ical-events-list +msgid "Western Zodiac" +msgstr "Західні зодіаки" + +#: includes/amr-ical-config.php:370 +#@ amr-ical-events-list +msgid "Month" +msgstr "МіÑÑць" + +#: includes/amr-ical-config.php:371 +#@ amr-ical-events-list +msgid "Week" +msgstr "Тиждень" + +#: includes/amr-ical-config.php:372 +#@ amr-ical-events-list +msgid "Day" +msgstr "День" + +#: includes/amr-ical-config.php:410 +#@ amr-ical-events-list +msgid "When" +msgstr "Коли" + +#: includes/amr-ical-config.php:411 +#@ amr-ical-events-list +msgid "What" +msgstr "Що" + +#: includes/amr-ical-config.php:412 +#@ amr-ical-events-list +msgid "Where" +msgstr "Де" + +#: includes/amr-ical-config.php:459 +#@ amr-ical-events-list +msgid "More info: " +msgstr "Додаткова інформаціÑ:" + +#: includes/amr-ical-config.php:473 +#@ amr-ical-events-list +msgid " to" +msgstr "до" + +#: includes/amr-ical-config.php:552 +#: includes/amr-pluggable.php:506 +#@ amr-ical-events-list +msgid "Show in Google map" +msgstr "Показати в карті Google" + +#: includes/amr-ical-config.php:559 +#: includes/amr-pluggable.php:513 +#@ amr-ical-events-list +msgid "Show location in Google Maps" +msgstr "Показати Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð² Google Maps" + +#: includes/amr-ical-config.php:572 +#@ amr-ical-events-list +msgid "On Tour" +msgstr "On Tour" + +#: includes/amr-ical-config.php:573 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by month. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:581 +#@ amr-ical-events-list +msgid "Venue" +msgstr "МіÑце зуÑтрічі" + +#: includes/amr-ical-config.php:582 +#@ amr-ical-events-list +msgid "Description" +msgstr "ОпиÑ" + +#: includes/amr-ical-config.php:586 +#@ amr-ical-events-list +msgid "Timetable" +msgstr "Розклад" + +#: includes/amr-ical-config.php:587 +#@ amr-ical-events-list +msgid "Default setting uses the original table with lists in the cells. It is grouped by day. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:598 +#@ amr-ical-events-list +msgid "Date" +msgstr "Дата" + +#: includes/amr-ical-config.php:599 +#@ amr-ical-events-list +msgid "Class" +msgstr "КлаÑ" + +#: includes/amr-ical-config.php:600 +#@ amr-ical-events-list +msgid "Room" +msgstr "Ðомер" + +#: includes/amr-ical-config.php:605 +#@ amr-ical-events-list +msgid "Widget" +msgstr "Віджет" + +#: includes/amr-ical-config.php:606 +#@ amr-ical-events-list +msgid "The new default setting for widgets uses lists for the table rows. Good for themes that cannot cope with tables in the sidebar. No grouping. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:627 +#@ amr-ical-events-list +msgid "HTML5 Exp 1" +msgstr "HTML5 ДоÑвід 1" + +#: includes/amr-ical-config.php:628 +#@ amr-ical-events-list +msgid "Table style aiming to use html5 tags, but still within a table structure to allow columns. One cannot have two levels of grouping with this option as tbody cannot be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:659 +#@ amr-ical-events-list +msgid "HTML5 Exp 2" +msgstr "HTML5 ДоÑвід 2" + +#: includes/amr-ical-config.php:660 +#@ amr-ical-events-list +msgid "An HTML5 test option that tries to be leaner. You can have two level of grouping with this option. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:704 +#@ amr-ical-events-list +msgid "EventInfo" +msgstr "Инфо подій" + +#: includes/amr-ical-config.php:705 +#@ amr-ical-events-list +msgid "For displaying additional event info on posts created as events. The summary and description are switched off as these are the post title and the post content. Calendar properties and groupings are also not relevant. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:736 +#@ amr-ical-events-list +msgid "Small-Calendar" +msgstr "Малий-календар" + +#: includes/amr-ical-config.php:737 +#@ amr-ical-events-list +msgid "The new default setting for calendar widgets. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:765 +#@ amr-ical-events-list +msgid "Large-Calendar" +msgstr "Великий-календар" + +#: includes/amr-ical-config.php:766 +#@ amr-ical-events-list +msgid "The new default setting for a large monthly calendar. No grouping, No headings. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is." +msgstr "" + +#: includes/amr-ical-config.php:795 +#@ amr-ical-events-list +msgid "Testing" +msgstr "ТеÑтуваннÑ" + +#: includes/amr-ical-config.php:796 +#@ amr-ical-events-list +msgid "A test option with lots of fields switched on. It has 2 levels of grouping - this is fine so long as the html in use can be nested. If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:846 +#@ amr-ical-events-list +msgid "Weekly Horizontal" +msgstr "Щотижневий Горизонтально" + +#: includes/amr-ical-config.php:848 +#@ amr-ical-events-list +msgid "Like the large calendar, but different - grouped by week and the weeks continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:849 +#: includes/amr-ical-config.php:881 +#: includes/amr-ical-config.php:925 +#@ amr-ical-events-list +msgid " If you configure it, I suggest changing this description to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:878 +#@ amr-ical-events-list +msgid "Weekly Vertical" +msgstr "Щотижневий Вертикально" + +#: includes/amr-ical-config.php:880 +#@ amr-ical-events-list +msgid "Grouped by day, but only showing 1 week. 3 columns, with excerpt not full description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:922 +#@ amr-ical-events-list +msgid "Event Master" +msgstr "Головна подіÑ" + +#: includes/amr-ical-config.php:924 +#@ amr-ical-events-list +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "Згруповані за категоріÑми, призначені Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð±ÐµÐ· будь-Ñких повторів" + +#: includes/amr-ical-config.php:1101 +#@ amr-ical-events-list +msgid "Resetting options..." +msgstr "Ð¡ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¾Ð¿Ñ†Ñ–Ð¹ ..." + +#: includes/amr-ical-config.php:1104 +#@ amr-ical-events-list +msgid "Options Deleted..." +msgstr "Опції видалені..." + +#: includes/amr-ical-config.php:1105 +#@ amr-ical-events-list +msgid "Option was not saved before or error deleting option..." +msgstr "Варіант не був збережений або помилока Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñів ..." + +#: includes/amr-ical-config.php:1135 +#@ amr-ical-events-list +msgid " Converting option key to lowercase" +msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° опції в нижній регіÑтр" + +#: includes/amr-ical-config.php:1155 +#@ amr-ical-events-list +msgid "Look for Previous" +msgstr "Шукайте Попередній" + +#: includes/amr-ical-config.php:1163 +#@ amr-ical-events-list +msgid "Busy" +msgstr "ЗайнÑто" + +#: includes/amr-ical-config.php:1186 +#@ amr-ical-events-list +msgid "Daily" +msgstr "ЩоднÑ" + +#: includes/amr-ical-config.php:1187 +#@ amr-ical-events-list +msgid "Weekly" +msgstr "ЩотижнÑ" + +#: includes/amr-ical-config.php:1188 +#@ amr-ical-events-list +msgid "Monthly" +msgstr "ЩоміÑÑцÑ" + +#: includes/amr-ical-config.php:1189 +#@ amr-ical-events-list +msgid "Yearly" +msgstr "Річний" + +#: includes/amr-ical-config.php:1190 +#@ amr-ical-events-list +msgid "Hourly" +msgstr "Щогодини" + +#: includes/amr-ical-config.php:1191 +#@ amr-ical-events-list +msgid "on certain dates" +msgstr "в певні дати" + +#: includes/amr-ical-config.php:1192 +#@ amr-ical-events-list +msgid "day" +msgstr "день" + +#: includes/amr-ical-config.php:1193 +#@ amr-ical-events-list +msgid "week" +msgstr "тиждень" + +#: includes/amr-ical-config.php:1194 +#@ amr-ical-events-list +msgid "month" +msgstr "міÑÑць" + +#: includes/amr-ical-config.php:1195 +#@ amr-ical-events-list +msgid "year" +msgstr "рік" + +#: includes/amr-ical-config.php:1196 +#@ amr-ical-events-list +msgid "hour" +msgstr "годину" + +#: includes/amr-ical-events-list-main.php:14 +#@ amr-ical-events-list +msgid "The DateTime Class must be enabled on your system for this plugin to work. They may need to be enabled at compile time. The class should exist by default in PHP version 5.2." +msgstr "\""
                      An error in the input data may prevent correct display of this page. Please advise the administrator as soon as possible." +msgstr "" + +#: includes/amr-ical-events-list-main.php:2331 +#@ amr-ical-events-list +msgid "Your existing saved list types have been converted. If you wish to return to the earlier version of the plugin, you will have to reset the list types and reapply your changes. Or use your DB backup to set the amr-ical-events-list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2358 +#@ amr-ical-events-list +msgid "General listing Settings" +msgstr "Загальні Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ñ– ÑпиÑку" + +#: includes/amr-ical-events-list-main.php:2360 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +#@ amr-ical-events-list +#@ default +msgid "Settings" +msgstr "ÐалаштуваннÑ" + +#: includes/amr-ical-events-list-main.php:2361 +#@ amr-ical-events-list +msgid "List Type Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑок" + +#: includes/amr-ical-events-list-main.php:2362 +#: includes/amr-ical-list-admin.php:27 +#@ amr-ical-events-list +msgid "Documentation" +msgstr "ДокументаціÑ" + +#: includes/amr-ical-groupings.php:6 +#@ amr-ical-events-list +msgid "Show all" +msgstr "Показати вÑе" + +#: includes/amr-ical-groupings.php:7 +#@ amr-ical-events-list +msgid "Hide all" +msgstr "Приховати вÑе" + +#: includes/amr-ical-list-admin.php:30 +#@ amr-ical-events-list +msgid "Support" +msgstr "Підтримка" + +#: includes/amr-ical-list-admin.php:33 +#@ amr-ical-events-list +msgid "Videos" +msgstr "Відео" + +#: includes/amr-ical-list-admin.php:36 +#@ amr-ical-events-list +msgid "Rate it at WP" +msgstr "Оцінити на WP" + +#: includes/amr-ical-list-admin.php:38 +#@ amr-ical-events-list +msgid "Plugin feed" +msgstr "Плагін feed" + +#: includes/amr-ical-list-admin.php:43 +#@ amr-ical-events-list +msgid "Forum feed" +msgstr "Форум feed" + +#: includes/amr-ical-list-admin.php:67 +#, php-format +#@ amr-ical-events-list +msgid "Your timezone db version is: %s" +msgstr "ЧаÑовий поÑÑ Ñ– верÑÑ–Ñ Ð²Ð°ÑˆÐ¾Ñ— бази даних: %s" + +#: includes/amr-ical-list-admin.php:69 +#@ amr-ical-events-list +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "Плагін не може визначити чаÑовий поÑÑ Ð±Ð°Ð·Ð¸ даних у верÑÑ–Ñ— PHP <5.3." + +#: includes/amr-ical-list-admin.php:72 +#@ amr-ical-events-list +msgid "Php timezonedb versions" +msgstr "Філ timezonedb верÑÑ–Ñ—" + +#: includes/amr-ical-list-admin.php:74 +#@ amr-ical-events-list +msgid "Info on what changes are in which timezonedb version" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ те, що змінилоÑÑ Ð² кожній чаÑовій зоні" + +#: includes/amr-ical-list-admin.php:77 +#@ amr-ical-events-list +msgid "No global timezone - is there a problem here? " +msgstr "ÐÑ– глобальному чаÑовому поÑÑу - чи Ñ” тут проблема?" + +#: includes/amr-ical-list-admin.php:80 +#@ amr-ical-events-list +msgid "Go to settings" +msgstr "Перейдіть в налаштуваннÑ" + +#: includes/amr-ical-list-admin.php:84 +#@ amr-ical-events-list +msgid "You are using the \"old\" gmt_offset setting " +msgstr "Ви викориÑтовуєте \"old\" наÑтройки gmt_offset" + +#: includes/amr-ical-list-admin.php:85 +#@ amr-ical-events-list +msgid "Consider changing to the more accurate timezone setting" +msgstr "РозглÑнемо зміни Ð´Ð»Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— уÑтановки чаÑового поÑÑу" + +#: includes/amr-ical-list-admin.php:90 +#@ amr-ical-events-list +msgid "The plugin thinks your timezone is: " +msgstr "Плагін думає ваша чаÑова зона:" + +#: includes/amr-ical-list-admin.php:94 +#@ amr-ical-events-list +msgid "The current UTC offset for that timezone is: " +msgstr "Ðинішній UTC зÑув Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— чаÑової зони Ñ”:" + +#: includes/amr-ical-list-admin.php:107 +#, php-format +#@ amr-ical-events-list +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð· %s на %s. ЧаÑовий поÑÑ:%d" + +#: includes/amr-ical-list-admin.php:113 +#@ amr-ical-events-list +msgid "Current time (unlocalised): " +msgstr "Поточний Ñ‡Ð°Ñ (нелокалізованно):" + +#: includes/amr-ical-list-admin.php:123 +#@ amr-ical-events-list +msgid "Save the settings" +msgstr "Зберегти налаштуваннÑ" + +#: includes/amr-ical-list-admin.php:125 +#@ amr-ical-events-list +msgid "Update" +msgstr "ОновленнÑ" + +#: includes/amr-ical-list-admin.php:130 +#@ amr-ical-events-list +msgid "Uninstall the plugin and delete the options from the database." +msgstr "Видаліть плагін Ñ– параметри з бази даних." + +#: includes/amr-ical-list-admin.php:132 +#@ amr-ical-events-list +msgid "Uninstall" +msgstr "ВидаленнÑ" + +#: includes/amr-ical-list-admin.php:137 +#@ amr-ical-events-list +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "ПопередженнÑ: Це Ñкине вÑÑ– варіанти ліÑтингу відразу." + +#: includes/amr-ical-list-admin.php:140 +#@ amr-ical-events-list +msgid "Reset all listing options" +msgstr "Скинути вÑе в ліÑтінгу опцій" + +#: includes/amr-ical-list-admin.php:155 +#: includes/amr-ical-list-admin.php:1130 +#@ amr-ical-events-list +msgid "Manage Event List Types" +msgstr "Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ñ–Ð² ÑпиÑку подій" + +#: includes/amr-ical-list-admin.php:170 +#@ amr-ical-events-list +msgid "Configure event list type: " +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿ ÑпиÑку подій:" + +#: includes/amr-ical-list-admin.php:177 +#: includes/amr-ical-list-admin.php:631 +#@ amr-ical-events-list +msgid "Preview the list using a calendar page." +msgstr "Попередній переглÑд ÑпиÑку з викориÑтаннÑм Ñторінки календарÑ." + +#: includes/amr-ical-list-admin.php:178 +#: includes/amr-ical-list-admin.php:632 +#@ amr-ical-events-list +msgid "Preview" +msgstr "Попередній переглÑд" + +#: includes/amr-ical-list-admin.php:184 +#: includes/amr-ical-list-admin.php:686 +#@ amr-ical-events-list +msgid "Saving...." +msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ ...." + +#: includes/amr-ical-list-admin.php:186 +#@ amr-ical-events-list +msgid "Lists saved" +msgstr "СпиÑки збережені" + +#: includes/amr-ical-list-admin.php:187 +#@ amr-ical-events-list +msgid "No change to options or unexpected error in saving" +msgstr "Опції не збереглиÑÑ Ð°Ð±Ð¾ виникла помилка при збережені" + +#: includes/amr-ical-list-admin.php:203 +#@ amr-ical-events-list +msgid "Check for lists to delete" +msgstr "Перевірте ÑпиÑки щоб видалити" + +#: includes/amr-ical-list-admin.php:210 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be deleted" +msgstr "СпиÑок %s буде видалений" + +#: includes/amr-ical-list-admin.php:225 +#@ amr-ical-events-list +msgid "Column Headings:" +msgstr "Колонка Рубрики:" + +#: includes/amr-ical-list-admin.php:251 +#@ amr-ical-events-list +msgid "Calendar properties" +msgstr "ВлаÑтивоÑті календарÑ" + +#: includes/amr-ical-list-admin.php:277 +#@ amr-ical-events-list +msgid "Specify fields to show:" +msgstr "Вибір полів, щоб показати:" + +#: includes/amr-ical-list-admin.php:280 +#@ amr-ical-events-list +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "Примітка: 0 (нуль) в колонці означає, що поле не буде показано." + +#: includes/amr-ical-list-admin.php:282 +#@ amr-ical-events-list +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "ПропиÑні Ð¿Ð¾Ð»Ñ Ñ” ті, Ñкі визначені в Ñпецифікації iCal." + +#: includes/amr-ical-list-admin.php:286 +#@ amr-ical-events-list +msgid "Lowercase fields are additional fields added by this plugin and derived from the iCal fields for your convenience." +msgstr "" + +#: includes/amr-ical-list-admin.php:287 +#@ amr-ical-events-list +msgid "Fields show if \"column\" > 0 and if there is data available in your event or ics file." +msgstr "\""Показати полÑ, Ñкщо \"column" + +#: includes/amr-ical-list-admin.php:292 +#@ amr-ical-events-list +msgid "Field" +msgstr "Поле" + +#: includes/amr-ical-list-admin.php:294 +#@ amr-ical-events-list +msgid "(0 to hide)" +msgstr "(0, щоб приховати)" + +#: includes/amr-ical-list-admin.php:342 +#@ amr-ical-events-list +msgid "Define grouping:" +msgstr "Визначити групуваннÑ:" + +#: includes/amr-ical-list-admin.php:346 +#@ amr-ical-events-list +msgid "Possible Groupings" +msgstr "Можливі групуваннÑ" + +#: includes/amr-ical-list-admin.php:346 +#@ amr-ical-events-list +msgid "Level" +msgstr "Рівень" + +#: includes/amr-ical-list-admin.php:358 +#@ amr-ical-events-list +msgid "No grouping" +msgstr "ÐÑ– групованню" + +#: includes/amr-ical-list-admin.php:367 +#@ amr-ical-events-list +msgid "Taxonomies" +msgstr "ТакÑономії" + +#: includes/amr-ical-list-admin.php:367 +#@ amr-ical-events-list +msgid "(Requires amr-events)" +msgstr "(Потрібно AMR-події)" + +#: includes/amr-ical-list-admin.php:386 +#@ amr-ical-events-list +msgid "Date based" +msgstr "Дата на оÑнові" + +#: includes/amr-ical-list-admin.php:386 +#@ amr-ical-events-list +msgid "(See also date and time formats)" +msgstr "(Див. також формати дати Ñ– чаÑу)" + +#: includes/amr-ical-list-admin.php:413 +#@ amr-ical-events-list +msgid "Select components to show:" +msgstr "Виберіть компоненти, щоб показати:" + +#: includes/amr-ical-list-admin.php:415 +#@ amr-ical-events-list +msgid "Wikipedia entry describing components" +msgstr "ÐžÐ¿Ð¸Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… компонентів Wikipedia" + +#: includes/amr-ical-list-admin.php:438 +#@ amr-ical-events-list +msgid "Define maximums:" +msgstr "Визначити макÑимуми:" + +#: includes/amr-ical-list-admin.php:441 +#@ amr-ical-events-list +msgid "Note cache times are in hours" +msgstr "Примітка кеша в годинах" + +#: includes/amr-ical-list-admin.php:481 +#@ amr-ical-events-list +msgid "Configure another list type: " +msgstr "Ðалаштуйте інший тип ÑпиÑку:" + +#: includes/amr-ical-list-admin.php:494 +#@ amr-ical-events-list +msgid "Return to manage list types" +msgstr "ПовернутиÑÑ Ð´Ð¾ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð°Ð¼Ð¸ ÑпиÑків" + +#: includes/amr-ical-list-admin.php:531 +#@ amr-ical-events-list +msgid "Please use numbers > 1" +msgstr "Будь лаÑка, викориÑтовуйте номери> 1" + +#: includes/amr-ical-list-admin.php:574 +#, php-format +#@ amr-ical-events-list +msgid "Imported settings for list %s invalid - not saved" +msgstr "Імпортовані параметри Ð´Ð»Ñ ÑпиÑку %s невалідні - не збережено" + +#: includes/amr-ical-list-admin.php:580 +#, php-format +#@ amr-ical-events-list +msgid "List %s will be saved with imported data" +msgstr "СпиÑок %s буде збережений з імпортованих даних" + +#: includes/amr-ical-list-admin.php:622 +#@ amr-ical-events-list +msgid "Configure: " +msgstr "ÐалаштуваннÑ:" + +#: includes/amr-ical-list-admin.php:626 +#@ amr-ical-events-list +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "ÐатиÑніть, щоб вибрати полÑ, Ñтовпці Ñ– вÑтановити інші параметри." + +#: includes/amr-ical-list-admin.php:627 +#@ amr-ical-events-list +msgid "Configure" +msgstr "Конфігурувати" + +#: includes/amr-ical-list-admin.php:636 +#@ amr-ical-events-list +msgid "Calendar Page URL for previews must be entered above" +msgstr "URL Ñторінки превью ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð° бути введена вище" + +#: includes/amr-ical-list-admin.php:637 +#@ amr-ical-events-list +msgid "n/a" +msgstr "н/д" + +#: includes/amr-ical-list-admin.php:661 +#@ amr-ical-events-list +msgid "Enter a list number to start a list type with new default settings." +msgstr "Введіть номер ÑпиÑку, щоб почати тип ÑпиÑку з новими налаштуваннÑми за замовчуваннÑм." + +#: includes/amr-ical-list-admin.php:663 +#@ amr-ical-events-list +msgid "After that, cut and paste from the list type closest to what you want to get you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:673 +#@ amr-ical-events-list +msgid "iCal Events List " +msgstr "СпиÑок подій iCal" + +#: includes/amr-ical-list-admin.php:690 +#@ amr-ical-events-list +msgid "List saved" +msgstr "СпиÑок збережено" + +#: includes/amr-ical-list-admin.php:712 +#@ amr-ical-events-list +msgid "iCal Events List" +msgstr "СпиÑок подій iCal" + +#: includes/amr-ical-list-admin.php:720 +#@ amr-ical-events-list +msgid "Listing Events" +msgstr "Переліку подій" + +#: includes/amr-ical-list-admin.php:740 +#@ amr-ical-events-list +msgid "iCal Events Lists" +msgstr "СпиÑоки подій iCal" + +#: includes/amr-ical-list-admin.php:741 +#@ amr-ical-events-list +msgid "List types" +msgstr "Типи СпиÑок" + +#: includes/amr-ical-list-admin.php:956 +#@ amr-ical-events-list +msgid "Error in form - calprop array not found" +msgstr "Помилка у формі - calprop маÑив не знайдено" + +#: includes/amr-ical-list-admin.php:1026 +#: includes/amr-ical-list-admin.php:1338 +#@ amr-ical-events-list +msgid "Name" +msgstr "Ðазва" + +#: includes/amr-ical-list-admin.php:1030 +#@ amr-ical-events-list +msgid "Internal Description" +msgstr "Внутрішній ОпиÑ" + +#: includes/amr-ical-list-admin.php:1054 +#@ amr-ical-events-list +msgid "Other:" +msgstr "Інше:" + +#: includes/amr-ical-list-admin.php:1060 +#: includes/amr-ical-list-admin.php:1339 +#@ amr-ical-events-list +msgid "List HTML Style" +msgstr "СпиÑок Ñтилю HTML" + +#: includes/amr-ical-list-admin.php:1062 +#@ amr-ical-events-list +msgid "Table" +msgstr "ТаблицÑ" + +#: includes/amr-ical-list-admin.php:1063 +#@ amr-ical-events-list +msgid "HTML5 in table" +msgstr "HTML5 в таблиці" + +#: includes/amr-ical-list-admin.php:1064 +#@ amr-ical-events-list +msgid "HTML5 clean and lean" +msgstr "HTML5 чиÑтий Ñ– худий" + +#: includes/amr-ical-list-admin.php:1065 +#@ amr-ical-events-list +msgid "Custom - file required" +msgstr "необхідний файл кориÑтувача" + +#: includes/amr-ical-list-admin.php:1066 +#@ amr-ical-events-list +msgid "Breaks for rows!" +msgstr "Перерви Ð´Ð»Ñ Ñ€Ñдків!" + +#: includes/amr-ical-list-admin.php:1067 +#@ amr-ical-events-list +msgid "Small box calendar" +msgstr "Малий календар" + +#: includes/amr-ical-list-admin.php:1068 +#@ amr-ical-events-list +msgid "Large box calendar" +msgstr "Великий календар" + +#: includes/amr-ical-list-admin.php:1069 +#@ amr-ical-events-list +msgid "Weeks calendar" +msgstr "Календар ТижнÑ" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid "Lists for rows" +msgstr "СпиÑки Ð´Ð»Ñ Ñ€Ñдків" + +#: includes/amr-ical-list-admin.php:1070 +#@ amr-ical-events-list +msgid " *Avoid - deprecated" +msgstr "*Уникайте - заÑтаріло" + +#: includes/amr-ical-list-admin.php:1071 +#@ amr-ical-events-list +msgid "Table with lists in cells (original)" +msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð·Ñ– ÑпиÑками в клітинах (оригінал)" + +#: includes/amr-ical-list-admin.php:1077 +#, php-format +#@ amr-ical-events-list +msgid "Custom HTML style file at %s..." +msgstr "Файл з HTML Ñтилем у %s..." + +#: includes/amr-ical-list-admin.php:1078 +#@ amr-ical-events-list +msgid " (Html and some php knowledge required)" +msgstr "(HTML Ñ– деÑкі PHP Ð·Ð½Ð°Ð½Ð½Ñ Ð¾Ð±Ð¾Ð²'Ñзкові)" + +#: includes/amr-ical-list-admin.php:1089 +#@ amr-ical-events-list +msgid "Default Event URL" +msgstr "URL подій за замовчуваннÑм" + +#: includes/amr-ical-list-admin.php:1091 +#@ amr-ical-events-list +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "(Ð”Ð»Ñ ics файлів в віджеті. ЗовнішнÑ, або Ñторінка календарÑ.)" + +#: includes/amr-ical-list-admin.php:1093 +#: includes/amr-pluggable.php:812 +#@ amr-ical-events-list +msgid "More information" +msgstr "Більш детальна інформаціÑ" + +#: includes/amr-ical-list-admin.php:1127 +#@ amr-ical-events-list +msgid "General Options" +msgstr "Загальні параметри" + +#: includes/amr-ical-list-admin.php:1128 +#@ amr-ical-events-list +msgid "Styling and Images" +msgstr "Ð¡Ñ‚Ð¸Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ñ‚Ð° зображеннÑ" + +#: includes/amr-ical-list-admin.php:1129 +#@ amr-ical-events-list +msgid "Advanced" +msgstr "ПроÑунутий" + +#: includes/amr-ical-list-admin.php:1148 +#@ amr-ical-events-list +msgid "Message if no events found: " +msgstr "ПовідомленнÑ, Ñкщо ніÑких подій не знайдено:" + +#: includes/amr-ical-list-admin.php:1155 +#@ amr-ical-events-list +msgid "Look for more events message: " +msgstr "Шукайте більше повідомленнь подій:" + +#: includes/amr-ical-list-admin.php:1165 +#@ amr-ical-events-list +msgid "Look for previous events message: " +msgstr "Шукайте попередні Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ð¹:" + +#: includes/amr-ical-list-admin.php:1172 +#@ amr-ical-events-list +msgid "Reset events message: " +msgstr "Ð¡ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¾ подіÑÑ…:" + +#: includes/amr-ical-list-admin.php:1179 +#@ amr-ical-events-list +msgid "Free busy text: " +msgstr "Безкоштовний зайнÑтий текÑÑ‚:" + +#: includes/amr-ical-list-admin.php:1180 +#@ amr-ical-events-list +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "- Замінює короткий текÑÑ‚ (ЗайнÑто) в компоненті VFREEBUSY." + +#: includes/amr-ical-list-admin.php:1190 +#@ amr-ical-events-list +msgid "Use human time like midday, midnight" +msgstr "ВикориÑтовуйте чаÑ, Ñк полуденне, опівночі" + +#: includes/amr-ical-list-admin.php:1195 +#@ amr-ical-events-list +msgid "Do not give credit to the author" +msgstr "Чи не віддати належне автору?" + +#: includes/amr-ical-list-admin.php:1204 +#@ amr-ical-events-list +msgid "Use javascript to collapse event groupings" +msgstr "ВикориÑтовуйте JS Ð´Ð»Ñ Ñ€ÑƒÐ¹Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ð¹" + +#: includes/amr-ical-list-admin.php:1211 +#@ amr-ical-events-list +msgid "Use my theme css, not plugin css" +msgstr "ВикориÑтовувати тему CSS, не плагін CSS" + +#: includes/amr-ical-list-admin.php:1218 +#@ amr-ical-events-list +msgid " No images (tick for text only)" +msgstr "Ðема Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (відзначте тільки Ð´Ð»Ñ Ñ‚ÐµÐºÑту)" + +#: includes/amr-ical-list-admin.php:1224 +#@ amr-ical-events-list +msgid "Image icon size:" +msgstr "Розмір значків зображеннÑ:" + +#: includes/amr-ical-list-admin.php:1227 +#@ amr-ical-events-list +msgid "16" +msgstr "16" + +#: includes/amr-ical-list-admin.php:1231 +#@ amr-ical-events-list +msgid "32" +msgstr "32" + +#: includes/amr-ical-list-admin.php:1234 +#@ amr-ical-events-list +msgid "The css provided works with the default twenty-ten theme and similar themes. Your theme may be different." +msgstr "" + +#: includes/amr-ical-list-admin.php:1236 +#@ amr-ical-events-list +msgid "To edit the file, download the custom one added to your uploads folder: uploads/css." +msgstr "" + +#: includes/amr-ical-list-admin.php:1237 +#@ amr-ical-events-list +msgid "Edit it and then re-upload to that same folder. Then select it in the box below." +msgstr "" + +#: includes/amr-ical-list-admin.php:1239 +#@ amr-ical-events-list +msgid "This file will not be overwritten when the plugin is upgraded or when your theme is upgraded. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1240 +#@ amr-ical-events-list +msgid "More info" +msgstr "Детальніше" + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "Download the latest provided css file for editing" +msgstr "Завантажте оÑтанній предÑтавлений CSS файл Ð´Ð»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ" + +#: includes/amr-ical-list-admin.php:1242 +#@ amr-ical-events-list +msgid "(optional)" +msgstr "(За бажаннÑм)" + +#: includes/amr-ical-list-admin.php:1243 +#@ amr-ical-events-list +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "Виберіть плагін CSS за замовчуваннÑм або вибрати кориÑтувальницький CSS Ñ– редагувати його." + +#: includes/amr-ical-list-admin.php:1245 +#@ amr-ical-events-list +msgid "No css files found in css directory " +msgstr "ÐÑ–Ñкі CSS файли, не знайдені в каталозі CSS" + +#: includes/amr-ical-list-admin.php:1255 +#@ amr-ical-events-list +msgid "Advanced:" +msgstr "Додатково:" + +#: includes/amr-ical-list-admin.php:1257 +#, php-format +#@ amr-ical-events-list +msgid "Your php version is: %s" +msgstr "Ваша PHP верÑÑ–Ñ: %s" + +#: includes/amr-ical-list-admin.php:1259 +#@ amr-ical-events-list +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "Мінімальна верÑÑ–Ñ PHP 5.3 потрібно Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ–Ð¹ кешуваннÑ." + +#: includes/amr-ical-list-admin.php:1260 +#@ amr-ical-events-list +msgid "Cacheing of generated events for re-use on same page (eg: widget plus list) will not be attempted. " +msgstr "\""ÐšÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð³ÐµÐ½ÐµÑ€Ð¾Ð²Ð°Ð½Ð¸Ñ… подій Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð½Ð° одній Ñторінці (наприклад, віджет Ð¿Ð»ÑŽÑ ÑпиÑок)\" " + +#: includes/amr-ical-list-admin.php:1261 +#@ amr-ical-events-list +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "Мабуть об'єкти не правильної форми в PHP <5.3." + +#: includes/amr-ical-list-admin.php:1267 +#@ amr-ical-events-list +msgid "Choose date localisation method:" +msgstr "Виберіть дату методу локалізації:" + +#: includes/amr-ical-list-admin.php:1270 +#@ amr-ical-events-list +msgid "none" +msgstr "жоден" + +#: includes/amr-ical-list-admin.php:1272 +#@ amr-ical-events-list +msgid "amr" +msgstr "amr" + +#: includes/amr-ical-list-admin.php:1274 +#@ amr-ical-events-list +msgid "wp" +msgstr "wp" + +#: includes/amr-ical-list-admin.php:1276 +#@ amr-ical-events-list +msgid "wpgmt" +msgstr "wpgmt" + +#: includes/amr-ical-list-admin.php:1280 +#@ amr-ical-events-list +msgid "Http timeout for external ics files:" +msgstr "Таймаут Http Ð´Ð»Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… ics файлів:" + +#: includes/amr-ical-list-admin.php:1285 +#@ amr-ical-events-list +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "Виберіть кількіÑть Ñекунд до Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ‡Ð°Ñу Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ ics файлу" + +#: includes/amr-ical-list-admin.php:1294 +#@ amr-ical-events-list +msgid "Warning - 30 seconds is a long time! Let it use cache rather if things are slow" +msgstr "Примітка: 30 Ñекунд це довго, підключіть кеш Ñкщо працює повільно" + +#: includes/amr-ical-list-admin.php:1310 +#@ amr-ical-events-list +msgid "Calendar Page URL for Previews:" +msgstr "url Ñторінки ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду" + +#: includes/amr-ical-list-admin.php:1311 +#@ amr-ical-events-list +msgid "Enter the url of a page with [events] or [largecalendar] in the content to use for list type previews." +msgstr "Введіть URL-Ð°Ð´Ñ€ÐµÑ Ñторінки з [подією] або [великим календарем] зі зміÑтом, щоб викориÑтовувати ÑпиÑок Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду." + +#: includes/amr-ical-list-admin.php:1323 +#@ amr-ical-events-list +msgid "Click the name of each list type below to configure that list." +msgstr "ÐатиÑніть на ім'Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ типу ÑпиÑка що нижче, щоб наÑтроїти цей ÑпиÑок \"." + +#: includes/amr-ical-list-admin.php:1325 +#@ amr-ical-events-list +msgid "Go to plugin website for documentation." +msgstr "Перейти на Ñайт плагіна Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду документації." + +#: includes/amr-ical-list-admin.php:1327 +#@ amr-ical-events-list +msgid "Configuration help" +msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¸" + +#: includes/amr-ical-list-admin.php:1328 +#@ amr-ical-events-list +msgid "Be careful when editing or deleting - some listtypes are defaults for shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1329 +#@ amr-ical-events-list +msgid "Add listtype=n in the parameters of the shortcode or widget to use another list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1333 +#@ amr-ical-events-list +msgid "Warning: This will delete all selected list types immediately." +msgstr "ПопередженнÑ: Це видалить вÑÑ– вибрані типи ÑпиÑків відразу." + +#: includes/amr-ical-list-admin.php:1334 +#@ default +msgid "Delete" +msgstr "ВидалÑти" + +#: includes/amr-ical-list-admin.php:1337 +#@ amr-ical-events-list +msgid "List" +msgstr "СпиÑок" + +#: includes/amr-ical-list-admin.php:1341 +#@ amr-ical-events-list +msgid "To export or copy a list type" +msgstr "Щоб екÑпортувати або Ñкопіювати тип ÑпиÑку" + +#: includes/amr-ical-list-admin.php:1342 +#@ amr-ical-events-list +msgid "Select ALL the content, and COPY." +msgstr "Вибрати веÑÑŒ вміÑÑ‚, а також копіювати." + +#: includes/amr-ical-list-admin.php:1344 +#@ amr-ical-events-list +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº при копіюванні Ñ– вÑтавці." + +#: includes/amr-ical-list-admin.php:1345 +#@ amr-ical-events-list +msgid "The whole string must be selected (it should be when you click on the text box)" +msgstr "\"" + +#: includes/amr-ical-list-admin.php:1346 +#@ amr-ical-events-list +msgid "The list type is a huge array." +msgstr "Тип ÑпиÑку Ñ” величезним маÑивом." + +#: includes/amr-ical-list-admin.php:1347 +#@ amr-ical-events-list +msgid "Without encoding, there were varying problems with slashes. Encoding was more stable." +msgstr "\"" + +#: includes/amr-ical-list-admin.php:1348 +#@ amr-ical-events-list +msgid "Why encode?" +msgstr "Чому кодувати?" + +#: includes/amr-ical-list-admin.php:1352 +#@ amr-ical-events-list +msgid "To import or paste a list type" +msgstr "Ð”Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ñƒ або вÑтавки типу ÑпиÑку" + +#: includes/amr-ical-list-admin.php:1353 +#@ amr-ical-events-list +msgid "PASTE list type string" +msgstr "Ð’Ñтавити тип ÑпиÑку Ñ€Ñдка" + +#: includes/amr-ical-list-admin.php:1355 +#@ amr-ical-events-list +msgid "If you did not produce the string and are concerned about the contents, then inspect the list type string using a decode tool. You should see a serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "Click to search for decoding tools" +msgstr "ÐатиÑніть, щоб шукати інÑтрументи декодуваннÑ" + +#: includes/amr-ical-list-admin.php:1356 +#@ amr-ical-events-list +msgid "Test decode" +msgstr "ТеÑÑ‚ декодуваннÑ" + +#: includes/amr-ical-list-admin.php:1392 +#@ amr-ical-events-list +msgid " Define date and time formats:" +msgstr "Визначити формати дати Ñ– чаÑу:" + +#: includes/amr-ical-list-admin.php:1394 +#@ amr-ical-events-list +msgid "Define the formats for the day (eg: Event date, End Date) and time (eg: Start time, End Time) fields. You can actually use any of these to display a full Date time string too. Use the Event date for event instances - the DTSTART field is the first startdate of a recurring event sequence." +msgstr "\""Визначити формати протÑгом Ð´Ð½Ñ (наприклад: Дата події, дата завершеннÑ) Ñ– Ñ‡Ð°Ñ (наприклад:"" + +#: includes/amr-ical-list-admin.php:1395 +#@ amr-ical-events-list +msgid "These are also used for the date related grouping headings (ie: will show the date in that format as a heading for that group of dates if relevant.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1396 +#@ amr-ical-events-list +msgid "Use the standard PHP format strings: " +msgstr "ВикориÑтовуйте Ñтандартні Ñ€Ñдки Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ PHP:" + +#: includes/amr-ical-list-admin.php:1397 +#@ amr-ical-events-list +msgid "Php manual - date datetime formats" +msgstr "Керівництво по PHP - формати DateTime" + +#: includes/amr-ical-list-admin.php:1399 +#@ amr-ical-events-list +msgid "See php date function format strings" +msgstr "Див Ñ€Ñдки Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ дати PHP" + +#: includes/amr-ical-list-admin.php:1400 +#@ amr-ical-events-list +msgid " (will localise) " +msgstr "(Буде локалізовано)" + +#: includes/amr-ical-list-admin.php:1430 +#@ amr-ical-events-list +msgid "Expand/Contract all" +msgstr "Розгорнути / згорнути вÑе" + +#: includes/amr-ical-plugin-form-html.php:146 +#@ amr-ical-events-list +msgid "Why not do any or all of the following:" +msgstr "Чому б не зробити будь-Ñке з наÑтупних дій:" + +#: includes/amr-ical-plugin-form-html.php:148 +#@ amr-ical-events-list +msgid "Link to it so other folks can find out about it." +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° нього, щоб інші люди могли дізнатиÑÑ Ð¿Ñ€Ð¾ це." + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +#@ amr-ical-events-list +msgid "Support forums" +msgstr "Форуми підтримки" + +#: includes/amr-ical-pretty-print.php:5 +#, php-format +#@ amr-ical-events-list +msgid "Weeks start on %s" +msgstr "Почати тиждень з %s" + +#: includes/amr-ical-pretty-print.php:33 +#: includes/amr-ical-pretty-print.php:41 +#: includes/amr-ical-pretty-print.php:57 +#: includes/amr-ical-pretty-print.php:145 +#@ amr-ical-events-list +msgid " and " +msgstr "Ñ–" + +#: includes/amr-ical-pretty-print.php:43 +#@ amr-ical-events-list +msgid "every " +msgstr "кожен" + +#: includes/amr-ical-pretty-print.php:72 +#@ amr-ical-events-list +msgid " or " +msgstr "або" + +#: includes/amr-ical-pretty-print.php:109 +#, php-format +#@ amr-ical-events-list +msgid "Every %s %s" +msgstr "Кожен %s %s" + +#: includes/amr-ical-pretty-print.php:119 +#, php-format +#@ amr-ical-events-list +msgid "On %s instance within %s" +msgstr "%s Ðа примірнику з %s" + +#: includes/amr-ical-pretty-print.php:124 +#, php-format +#@ amr-ical-events-list +msgid "%s times" +msgstr "%s разів" + +#: includes/amr-ical-pretty-print.php:129 +#, php-format +#@ amr-ical-events-list +msgid "until %s %s" +msgstr "до %s %s" + +#: includes/amr-ical-pretty-print.php:131 +#, php-format +#@ amr-ical-events-list +msgid " if month is %s" +msgstr "Ñкщо міÑÑць %s" + +#: includes/amr-ical-pretty-print.php:133 +#, php-format +#@ amr-ical-events-list +msgid " in %s weeks of the year" +msgstr "у %s тижнів у році" + +#: includes/amr-ical-pretty-print.php:135 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of the year" +msgstr "на %s день року" + +#: includes/amr-ical-pretty-print.php:136 +#, php-format +#@ amr-ical-events-list +msgid "on %s day of each month" +msgstr "на %s день кожного міÑÑцÑ" + +#: includes/amr-ical-pretty-print.php:137 +#: includes/amr-ical-pretty-print.php:138 +#, php-format +#@ amr-ical-events-list +msgid "on %s " +msgstr "на %s" + +#: includes/amr-ical-pretty-print.php:149 +#, php-format +#@ amr-ical-events-list +msgid "at the %s hour" +msgstr "на %s годині" + +#: includes/amr-ical-pretty-print.php:150 +#, php-format +#@ amr-ical-events-list +msgid "at the %s minute" +msgstr "на %s хвилині" + +#: includes/amr-ical-pretty-print.php:151 +#, php-format +#@ amr-ical-events-list +msgid "at the %s second" +msgstr "на %s Ñекунді" + +#: includes/amr-import-ical.php:36 +#, php-format +#@ amr-ical-events-list +msgid "Your cache directory %s has been created" +msgstr "Ваш кеш каталогу %s був Ñтворений" + +#: includes/amr-import-ical.php:39 +#, php-format +#@ amr-ical-events-list +msgid "Error creating cache directory %s. Please check permissions" +msgstr "Помилка при Ñтворенні кеша каталогу %s . Будь лаÑка, перевірте дозволи" + +#: includes/amr-import-ical.php:67 +#@ amr-ical-events-list +msgid "Unexpected data contents. Please tell administrator." +msgstr "ÐеÑподіваний зміÑÑ‚ даних. Будь лаÑка, Ñкажіть адмініÑтратору." + +#: includes/amr-import-ical.php:68 +#@ amr-ical-events-list +msgid "See comments in source for response received from ics server." +msgstr "Див коментарі в джерелі Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ñ–, отриманої від ics Ñервера." + +#: includes/amr-import-ical.php:158 +#, php-format +#@ amr-ical-events-list +msgid "Error getting calendar file with htpp or curl %s" +msgstr "Помилка при отриманні файлу ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ð· htpp або curl %s" + +#: includes/amr-import-ical.php:162 +#, php-format +#@ amr-ical-events-list +msgid "Using File last cached at %s" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð¼Ð¸Ð½ÑƒÐ»Ð¾Ð³Ð¾ файлу кешу в %s" + +#: includes/amr-import-ical.php:164 +#@ amr-ical-events-list +msgid "File last cached time not available" +msgstr "Минулий файл кешу у даний Ñ‡Ð°Ñ Ð½Ðµ доÑтупний" + +#: includes/amr-import-ical.php:166 +#@ amr-ical-events-list +msgid "Warning: Events may be out of date. " +msgstr "ПопередженнÑ: Події можуть бути заÑтарілими." + +#: includes/amr-import-ical.php:172 +#@ amr-ical-events-list +msgid "No cached ical file for events" +msgstr "Ðемае кешу ical файлів Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ–Ð¹" + +#: includes/amr-pluggable.php:69 +#@ amr-ical-events-list +msgid "midnight" +msgstr "опівночі" + +#: includes/amr-pluggable.php:70 +#@ amr-ical-events-list +msgid "midday" +msgstr "опівдні" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Go to agenda or list view" +msgstr "До порÑдку денного або зі ÑпиÑку" + +#: includes/amr-pluggable.php:105 +#@ amr-ical-events-list +msgid "Agenda" +msgstr "ПорÑдок денний" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Go to calendar view" +msgstr "До календарÑ" + +#: includes/amr-pluggable.php:113 +#@ amr-ical-events-list +msgid "Calendar" +msgstr "Календар" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Go to map view" +msgstr "Перейти до карти переглÑду" + +#: includes/amr-pluggable.php:120 +#@ amr-ical-events-list +msgid "Map" +msgstr "Карта" + +#: includes/amr-pluggable.php:138 +#@ amr-ical-events-list +msgid "Go to date" +msgstr "До дати" + +#: includes/amr-pluggable.php:168 +#: includes/amr-pluggable.php:174 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %1$s" +msgstr "Починаючи тиждень %1$s" + +#: includes/amr-pluggable.php:169 +#@ amr-ical-events-list +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "â†" + +#: includes/amr-pluggable.php:175 +#@ amr-ical-events-list +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "→" + +#: includes/amr-pluggable.php:209 +#: includes/amr-pluggable.php:216 +#, php-format +#@ amr-ical-events-list +msgid "Go to %1$s %2$s" +msgstr "Іти до %1$s %2$s" + +#: includes/amr-pluggable.php:284 +#, php-format +#@ amr-ical-events-list +msgid "Week starting %s" +msgstr "Тиждень починати з %s" + +#: includes/amr-pluggable.php:323 +#@ amr-ical-events-list +msgid "hours" +msgstr "годин" + +#: includes/amr-pluggable.php:343 +#@ amr-ical-events-list +msgid "months" +msgstr "міÑÑців" + +#: includes/amr-pluggable.php:359 +#@ amr-ical-events-list +msgid "days" +msgstr "днів" + +#: includes/amr-pluggable.php:367 +#@ amr-ical-events-list +msgid "show past events" +msgstr "показати минулі події" + +#: includes/amr-pluggable.php:368 +#@ amr-ical-events-list +msgid "show less" +msgstr "показати менше" + +#: includes/amr-pluggable.php:369 +#@ amr-ical-events-list +msgid "show more" +msgstr "показати більше" + +#: includes/amr-pluggable.php:370 +#@ amr-ical-events-list +msgid "show much less" +msgstr "показати набагато менше" + +#: includes/amr-pluggable.php:371 +#@ amr-ical-events-list +msgid "show much more" +msgstr "показати набагато більше" + +#: includes/amr-pluggable.php:374 +#@ amr-ical-events-list +msgid "show future events" +msgstr "показати майбутні події" + +#: includes/amr-pluggable.php:375 +#@ amr-ical-events-list +msgid "show maximum 10 events if available" +msgstr "показати макÑимум 10 подій при наÑвноÑті" + +#: includes/amr-pluggable.php:376 +#@ amr-ical-events-list +msgid "show maximum 50 events if available" +msgstr "показати макÑимальні 50 подій при наÑвноÑті" + +#: includes/amr-pluggable.php:377 +#@ amr-ical-events-list +msgid "show maximum 100 events if available" +msgstr "показати макÑимум 100 подій за наÑвноÑті" + +#: includes/amr-pluggable.php:579 +#@ amr-ical-events-list +msgid "Event attachment" +msgstr "вкладенні події" + +#: includes/amr-pluggable.php:648 +#: includes/amr-pluggable.php:655 +#, php-format +#@ amr-ical-events-list +msgid "View events in %s %s" +msgstr "ПереглÑнути події в %s %s" + +#: includes/amr-pluggable.php:649 +#@ default +msgid "category" +msgstr "категоріÑ" + +#: includes/amr-pluggable.php:689 +#@ amr-ical-events-list +msgid "Total events: " +msgstr "Ð’Ñього подій:" + +#: includes/amr-pluggable.php:695 +#@ amr-ical-events-list +msgid "No description available" +msgstr "Ðемає опиÑу" + +#: includes/amr-pluggable.php:703 +#: includes/amr-pluggable.php:713 +#, php-format +#@ amr-ical-events-list +msgid "Subscribe to %s Calendar" +msgstr "ПідпиÑатиÑÑ Ð½Ð° %s календар" + +#: includes/amr-pluggable.php:720 +#@ amr-ical-events-list +msgid "Subscribe to calendar in your calendar application." +msgstr "ПідпиÑатиÑÑ Ð½Ð° календар у вашому додатку календарÑ." + +#: includes/amr-pluggable.php:722 +#@ amr-ical-events-list +msgid "Subscribe to calendar" +msgstr "ПідпиÑатиÑÑ Ð½Ð° календарі" + +#: includes/amr-pluggable.php:828 +#@ amr-ical-events-list +msgid "Add to google calendar" +msgstr "Додати в Google Calendar" + +#: includes/amr-pluggable.php:830 +#@ amr-ical-events-list +msgid "Add to google" +msgstr "Додати в Google" + +#: includes/amr-pluggable.php:846 +#@ amr-ical-events-list +msgid "Add event to google" +msgstr "Додати подію в Google" + +#: includes/amr-pluggable.php:870 +#@ amr-ical-events-list +msgid "Last Refresh time unexpectedly not available" +msgstr "ОÑтанній Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½ÐµÑподівано не доÑтупний" + +#: includes/amr-pluggable.php:874 +#@ amr-ical-events-list +msgid "Refresh calendars" +msgstr "Оновити календарі" + +#: includes/amr-pluggable.php:875 +#, php-format +#@ amr-ical-events-list +msgid "Last refresh was at %s. " +msgstr "ОÑтаннє Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¾ в %s." + +#: includes/amr-pluggable.php:877 +#@ amr-ical-events-list +msgid "Remote file had no modifications. " +msgstr "Віддалений файл не мав модифікацій." + +#: includes/amr-pluggable.php:881 +#, php-format +#@ amr-ical-events-list +msgid "The remote file was last modified on %s." +msgstr "Віддалений файл оÑÑ‚Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð° на %s." + +#: includes/amr-pluggable.php:886 +#@ amr-ical-events-list +msgid "Click to refresh" +msgstr "ÐатиÑніть, щоб оновити" + +#: includes/amr-pluggable.php:1006 +#, php-format +#@ amr-ical-events-list +msgid "Week %u" +msgstr "Тиждень %u" + +#: includes/amr-pluggable.php:1384 +#, php-format +#@ amr-ical-events-list +msgid "Look for more from %s" +msgstr "Шукайте більше від %s" + +#: includes/amr-pluggable.php:1408 +#@ amr-ical-events-list +msgid "Go back to initial view" +msgstr "ПовернутиÑÑ Ð´Ð¾ початкового поданнÑ" + +#: includes/amr-pluggable.php:1413 +#@ amr-ical-events-list +msgid "Go back to previous events" +msgstr "ПовернутиÑÑ Ð´Ð¾ попередніх подій" + +#: includes/amr-pluggable.php:1442 +#@ amr-ical-events-list +msgid "Sent by " +msgstr "ÐадіÑлав" + +#: includes/amr-pluggable.php:1750 +#, php-format +#@ amr-ical-events-list +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" + +#: includes/amr-pluggable.php:1755 +#, php-format +#@ amr-ical-events-list +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" + +#: includes/amr-pluggable.php:1760 +#, php-format +#@ amr-ical-events-list +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" + +#: includes/amr-pluggable.php:1765 +#, php-format +#@ amr-ical-events-list +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" + +#: includes/amr-pluggable.php:1771 +#, php-format +#@ amr-ical-events-list +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" + +#: includes/amr-pluggable.php:1776 +#, php-format +#@ amr-ical-events-list +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" + +#: includes/amr-pluggable.php:1781 +#, php-format +#@ amr-ical-events-list +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" + +#: includes/amr-pluggable.php:1800 +#@ amr-ical-events-list +msgid "Change Timezone" +msgstr "Змінити чаÑовий поÑÑ" + +#: includes/amr-pluggable.php:1801 +#, php-format +#@ amr-ical-events-list +msgid "Timezone: %s, Click for %s" +msgstr "ЧаÑовий поÑÑ: %s, ÐатиÑніть длÑ%s" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:116 +#: includes/amr-upcoming-events-widget.php:186 +#: includes/amr-upcoming-events-widget.php:269 +#@ amr-ical-events-list +msgid "Upcoming Events" +msgstr "Майбутні події" + +#: includes/amr-upcoming-events-widget.php:10 +#@ amr-ical-events-list +msgid "Upcoming Events List" +msgstr "Майбутній ÑпиÑок подій" + +#: includes/amr-upcoming-events-widget.php:137 +#@ amr-ical-events-list +msgid "See plugin website for more details" +msgstr "ДивитиÑÑ Ð²ÐµÐ±-Ñайт плагіну Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð±Ñ–Ð»ÑŒÑˆ докладної інформації" + +#: includes/amr-upcoming-events-widget.php:140 +#: includes/amr-upcoming-events-widget.php:280 +#@ amr-ical-events-list +msgid "Title" +msgstr "Ðазва" + +#: includes/amr-upcoming-events-widget.php:146 +#: includes/amr-upcoming-events-widget.php:286 +#@ amr-ical-events-list +msgid "Calendar page url" +msgstr "URL Ñторінки календарÑ" + +#: includes/amr-upcoming-events-widget.php:147 +#@ amr-ical-events-list +msgid "Calendar page url in this website" +msgstr "URL Ñторінки ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ð½Ð° цьому Ñайті" + +#: includes/amr-upcoming-events-widget.php:153 +#@ amr-ical-events-list +msgid "Hover description on Title" +msgstr "Ðаведіть Ð¾Ð¿Ð¸Ñ Ð´Ð¾ Розділу" + +#: includes/amr-upcoming-events-widget.php:154 +#@ amr-ical-events-list +msgid "Do an event summary hyperlink with event description as title text " +msgstr "Зробіть резюме подій гіперпоÑиланнь з опиÑом подій Ñк текÑÑ‚ заголовку" + +#: includes/amr-upcoming-events-widget.php:161 +#: includes/amr-upcoming-events-widget.php:293 +#@ amr-ical-events-list +msgid "External events only" +msgstr "Тільки зовнішні події" + +#: includes/amr-upcoming-events-widget.php:162 +#: includes/amr-upcoming-events-widget.php:294 +#@ amr-ical-events-list +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "Показати події тільки із зовнішніх ics, не показувати будь-Ñкі внутрішні події." + +#: includes/amr-upcoming-events-widget.php:163 +#: includes/amr-upcoming-events-widget.php:295 +#@ amr-ical-events-list +msgid "Else include events created internally too" +msgstr "Інакше включають події Ñтворені внутрішньо" + +#: includes/amr-upcoming-events-widget.php:169 +#: includes/amr-upcoming-events-widget.php:301 +#@ amr-ical-events-list +msgid "External ics urls and advanced options" +msgstr "Зовнішні ics адреÑи Ñ– додаткові опції" + +#: includes/amr-upcoming-events-widget.php:170 +#: includes/amr-upcoming-events-widget.php:302 +#@ amr-ical-events-list +msgid "External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:171 +#@ amr-ical-events-list +msgid " Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:173 +#@ amr-ical-events-list +msgid "See more parameters" +msgstr "ДивитиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ параметрів" + +#: includes/amr-upcoming-events-widget.php:189 +#@ amr-ical-events-list +msgid "Upcoming Events Calendar" +msgstr "Календар майбутніх подій" + +#: includes/amr-upcoming-events-widget.php:278 +#@ amr-ical-events-list +msgid "See more" +msgstr "Детальніше" + +#: includes/amr-upcoming-events-widget.php:287 +#@ amr-ical-events-list +msgid "Calendar page url in this website, for links from widget" +msgstr "Календар URL Ñторінки на цьому Ñайті, поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð· віджета" + +#: includes/amr-upcoming-events-widget.php:303 +#@ amr-ical-events-list +msgid " Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" + +#: includes/functions.php:199 +#: includes/functions.php:203 +#@ amr-ical-events-list +msgid "Invalid Url" +msgstr "Ðеправильний URL" + +#: includes/functions.php:243 +#@ amr-ical-events-list +msgid "I try to make these plugins work \"out of the box\" with minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "\""Я намагаюÑÑ Ð·Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ ці плагіни працючи " з коробки "" "з мінімальними зуÑиллÑми; щоб вони були проÑтими у викориÑтанні, але дуже добре перевіреними
                      ; Добре перевірені; з валідним HTML Ñ– CSS and put [iCal http://yoururl.ics ] where you want the list of events of an ics file and [events] to get internal events. To tweak: Manage Settings Page, Manage Widget." +msgstr "" + +#. translators: plugin header field 'Author' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "anmari" +msgstr "" + +#. translators: plugin header field 'AuthorURI' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "http://anmari.com/" +msgstr "" + +#. translators: plugin header field 'Version' +#: amr-ical-events-list.php:0 +#@ amr-ical-events-list +msgid "4.6" +msgstr "" + +#: includes/amr-ical-pretty-print.php:142 +#@ amr-ical-events-list +msgctxt "eg: last day of the month" +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:144 +#@ amr-ical-events-list +msgctxt "eg: last day of the year" +msgid " of the year" +msgstr "" + +#. translators: ignore this and translate the string found earlier " No events... +#: includes/amr-pluggable.php:54 +#@ amr-ical-events-list +msgid "noeventsmessage" +msgstr "" + +#: includes/amr-pluggable.php:139 +#@ amr-ical-events-list +msgctxt "Submit button for month and year navigation. Use translation to replace with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:619 +#@ amr-ical-events-list +msgctxt "when an event runs for full days, note the   prevents the text wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:692 +#@ amr-ical-events-list +msgid "X-WR-CALDESC" +msgstr "" + +#: includes/amr-pluggable.php:698 +#@ amr-ical-events-list +msgid "X-WR-CALNAME" +msgstr "" + +#: includes/amr-pluggable.php:1280 +#@ amr-ical-events-list +msgid "listtypesheading" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1382 +#@ amr-ical-events-list +msgid "lookmoremessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1392 +#@ amr-ical-events-list +msgid "lookprevmessage" +msgstr "" + +#. translators: ignore, the text appears for translation eslewhere +#: includes/amr-pluggable.php:1398 +#@ amr-ical-events-list +msgid "resetmessage" +msgstr "" + +#: includes/functions.php:27 +#@ amr-ical-events-list +msgid "Invalid Event Date" +msgstr "" + diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list.mo b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list.mo new file mode 100644 index 0000000000000000000000000000000000000000..d2ba38e47501e12077aaf2c135b33afc5eef0070 GIT binary patch literal 499 zcmZuuO-lnY5LNV4=*6>#9K7k&-6~j96>P0gY;mcpcqlB>-EkY)CQFij{Sg0!zscX? zEPnOikjKExOWvEw$KLMS7RNSYpK-w0VH`24XffWodCs}w{6=KWE2SR#89b47%4jKY zW$qtcRh?RR*1T?jSZ&)N9dw3|&j;`7Yd`Cn=gi7(#Fg!I@}= z@}zkf20>6UVMGg6iF_05wE;R0u|@3)^u|hYtu?|7ts-$TqO3$ey{c$BpJPrC6V58t zVSm{Ba~wAK`L5BP{X)Dh*@LH*KQ0SYx-HTvT1Wo!F}{V?2CdUv#58k@NRZ%2wGX(!Z9RvUy4I;!kT(b%Xy5ZZJaaUB9F ex^ldv$#_{#$Rj5{kbccEE{l1tv>X5b9b2EH)Rj#D literal 0 HcmV?d00001 diff --git a/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list.pot b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list.pot new file mode 100644 index 0000000..09dc093 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/amr-ical-events-list.pot @@ -0,0 +1,1987 @@ +# Copyright (C) 2014 amr events calendar or lists with ical files +# This file is distributed under the same license as the amr events calendar or lists with ical files package. +msgid "" +msgstr "" +"Project-Id-Version: amr events calendar or lists with ical files 4.5\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/amr-ical-events-list\n" +"POT-Creation-Date: 2014-04-21 05:50:36+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2014-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" + +#: includes/amr-ical-calendar.php:48 +msgid "Go to events for this day only" +msgstr "" + +#: includes/amr-ical-config.php:141 includes/amr-ical-list-admin.php:293 +msgid "Column" +msgstr "" + +#: includes/amr-ical-config.php:142 includes/amr-ical-list-admin.php:296 +msgid "Order" +msgstr "" + +#: includes/amr-ical-config.php:143 includes/amr-ical-list-admin.php:297 +msgid "Before" +msgstr "" + +#: includes/amr-ical-config.php:144 includes/amr-ical-list-admin.php:298 +msgid "After" +msgstr "" + +#: includes/amr-ical-config.php:202 +msgid "" +"A link to allow user to add the whole calendar to their google calendar." +msgstr "" + +#: includes/amr-ical-config.php:203 +msgid "A link to allow user to refetch an ics file" +msgstr "" + +#: includes/amr-ical-config.php:204 +msgid "The time the ics file was last modified" +msgstr "" + +#: includes/amr-ical-config.php:206 +msgid "WordPress post title or ICS SUMMARY" +msgstr "" + +#: includes/amr-ical-config.php:207 +msgid "WordPress content or ICS description" +msgstr "" + +#: includes/amr-ical-config.php:208 +msgid "WordPress excerpt" +msgstr "" + +#: includes/amr-ical-config.php:209 +msgid "WordPress post thumbnail" +msgstr "" + +#: includes/amr-ical-config.php:210 +msgid "Address" +msgstr "" + +#: includes/amr-ical-config.php:211 +msgid "Link to map" +msgstr "" + +#: includes/amr-ical-config.php:212 +msgid "Link to add event to a google calendar" +msgstr "" + +#: includes/amr-ical-config.php:213 +msgid "Link to single event ics file" +msgstr "" + +#: includes/amr-ical-config.php:214 +msgid "Link to recurring event series ics file" +msgstr "" + +#: includes/amr-ical-config.php:215 +msgid "The latitude and longitude" +msgstr "" + +#: includes/amr-ical-config.php:216 +msgid "Links to specified ATTACHMENTS (ics)" +msgstr "" + +#: includes/amr-ical-config.php:218 +msgid "WordPress or ics file categories " +msgstr "" + +#: includes/amr-ical-config.php:219 +msgid "ics class" +msgstr "" + +#: includes/amr-ical-config.php:220 +msgid "ics comment" +msgstr "" + +#: includes/amr-ical-config.php:222 +msgid "ics event priority" +msgstr "" + +#: includes/amr-ical-config.php:224 +msgid "ics event status" +msgstr "" + +#: includes/amr-ical-config.php:225 +msgid "The date of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:226 +msgid "The time of instance of a repeating date, or the event date" +msgstr "" + +#: includes/amr-ical-config.php:227 +msgid "The date an event instance ends. Blank if same as event date " +msgstr "" + +#: includes/amr-ical-config.php:228 +msgid "The time an event instance ends. " +msgstr "" + +#: includes/amr-ical-config.php:229 +msgid "The original or first event date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:231 +msgid "The original or first event's end date of a recurring series" +msgstr "" + +#: includes/amr-ical-config.php:232 +msgid "The due date of a task." +msgstr "" + +#: includes/amr-ical-config.php:233 +msgid "The duration of an event." +msgstr "" + +#: includes/amr-ical-config.php:234 +msgid "Says \"all day\" (translated) if the event has full days." +msgstr "" + +#: includes/amr-ical-config.php:235 +msgid "If a task is completed." +msgstr "" + +#: includes/amr-ical-config.php:236 +msgid "Show busy (translated) if the freebusy component is in use." +msgstr "" + +#: includes/amr-ical-config.php:240 +msgid "Users who have accepted." +msgstr "" + +#: includes/amr-ical-config.php:242 +msgid "" +"Add register button. Registration settings can be set as global defaults or " +"per event." +msgstr "" + +#: includes/amr-ical-config.php:243 +msgid "Links to indicate if attending." +msgstr "" + +#: includes/amr-ical-config.php:244 +msgid "The contact person if available." +msgstr "" + +#: includes/amr-ical-config.php:245 +msgid "The author of the event." +msgstr "" + +#: includes/amr-ical-config.php:246 +msgid "Users who are attending." +msgstr "" + +#: includes/amr-ical-config.php:247 +msgid "The unique id of a recurrence instance or exception." +msgstr "" + +#: includes/amr-ical-config.php:249 +msgid "" +"The events url as provided by ics file, or the wordpress event permalink." +msgstr "" + +#: includes/amr-ical-config.php:250 +msgid "The unique identifier of the event." +msgstr "" + +#: includes/amr-ical-config.php:251 +msgid "Dates excluded from the recurring series" +msgstr "" + +#: includes/amr-ical-config.php:252 +msgid "Exclusion rule - no longer in spec" +msgstr "" + +#: includes/amr-ical-config.php:253 +msgid "Individual dates on which event is to be repeated" +msgstr "" + +#: includes/amr-ical-config.php:254 +msgid "The rule for the recurrence of the event." +msgstr "" + +#: includes/amr-ical-config.php:255 +msgid "Alarm action." +msgstr "" + +#: includes/amr-ical-config.php:256 +msgid "Alarm repeat." +msgstr "" + +#: includes/amr-ical-config.php:257 +msgid "Alarm trigger." +msgstr "" + +#: includes/amr-ical-config.php:258 +msgid "Date event created." +msgstr "" + +#: includes/amr-ical-config.php:259 +msgid "Date event published." +msgstr "" + +#: includes/amr-ical-config.php:260 +msgid "Modification level of event." +msgstr "" + +#: includes/amr-ical-config.php:261 +msgid "Date event last modified." +msgstr "" + +#: includes/amr-ical-config.php:262 +msgid "Events in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:263 +msgid "Items in an ics file that indicate busy or available time slots" +msgstr "" + +#: includes/amr-ical-config.php:264 +msgid "Todo Task Items in an ics file" +msgstr "" + +#: includes/amr-ical-config.php:265 +msgid "Journal notes in an ics file - no date or time" +msgstr "" + +#: includes/amr-ical-config.php:352 +msgid "No events found within criteria" +msgstr "" + +#: includes/amr-ical-config.php:353 includes/amr-pluggable.php:1362 +msgid "Look for more" +msgstr "" + +#: includes/amr-ical-config.php:354 +msgid "Look for previous" +msgstr "" + +#: includes/amr-ical-config.php:355 includes/amr-ical-config.php:1149 +msgid "Reset" +msgstr "" + +#: includes/amr-ical-config.php:369 +msgid "Default" +msgstr "" + +#: includes/amr-ical-config.php:370 +msgid "" +"A default calendar list. This one set to tables with lists in the cells. " +"Usually needs the css file enabled. If you configure it, I suggest changing " +"this description to aid your memory of how/why it is configured the way that " +"it is. " +msgstr "" + +#: includes/amr-ical-config.php:389 +msgid "Year" +msgstr "" + +#: includes/amr-ical-config.php:390 +msgid "Quarter" +msgstr "" + +#: includes/amr-ical-config.php:391 +msgid "Astronomical Season" +msgstr "" + +#: includes/amr-ical-config.php:392 +msgid "Traditional Season" +msgstr "" + +#: includes/amr-ical-config.php:393 +msgid "Western Zodiac" +msgstr "" + +#: includes/amr-ical-config.php:394 +msgid "Month" +msgstr "" + +#: includes/amr-ical-config.php:395 +msgid "Week" +msgstr "" + +#: includes/amr-ical-config.php:396 +msgid "Day" +msgstr "" + +#: includes/amr-ical-config.php:403 +msgid "When" +msgstr "" + +#: includes/amr-ical-config.php:404 +msgid "What" +msgstr "" + +#: includes/amr-ical-config.php:405 +msgid "Where" +msgstr "" + +#: includes/amr-ical-config.php:452 +msgid "More info: " +msgstr "" + +#: includes/amr-ical-config.php:466 +msgid " to" +msgstr "" + +#: includes/amr-ical-config.php:545 includes/amr-pluggable.php:489 +msgid "Show in Google map" +msgstr "" + +#: includes/amr-ical-config.php:552 includes/amr-pluggable.php:496 +msgid "Show location in Google Maps" +msgstr "" + +#: includes/amr-ical-config.php:565 +msgid "On Tour" +msgstr "" + +#: includes/amr-ical-config.php:566 +msgid "" +"Default setting uses the original table with lists in the cells. It is " +"grouped by month. If you configure it, I suggest changing this description " +"to aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:574 +msgid "Venue" +msgstr "" + +#: includes/amr-ical-config.php:575 +msgid "Description" +msgstr "" + +#: includes/amr-ical-config.php:579 +msgid "Timetable" +msgstr "" + +#: includes/amr-ical-config.php:580 +msgid "" +"Default setting uses the original table with lists in the cells. It is " +"grouped by day. If you configure it, I suggest changing this description to " +"aid your memory of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:591 +msgid "Date" +msgstr "" + +#: includes/amr-ical-config.php:592 +msgid "Class" +msgstr "" + +#: includes/amr-ical-config.php:593 +msgid "Room" +msgstr "" + +#: includes/amr-ical-config.php:598 +msgid "Widget" +msgstr "" + +#: includes/amr-ical-config.php:599 +msgid "" +"The new default setting for widgets uses lists for the table rows. Good for " +"themes that cannot cope with tables in the sidebar. No grouping. If you " +"configure it, I suggest changing this description to aid your memory of how/" +"why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:620 +msgid "HTML5 Exp 1" +msgstr "" + +#: includes/amr-ical-config.php:621 +msgid "" +"Table style aiming to use html5 tags, but still within a table structure to " +"allow columns. One cannot have two levels of grouping with this option as " +"tbody cannot be nested. If you configure it, I suggest changing this " +"description to aid your memory of how/why it is configured the way that it " +"is. " +msgstr "" + +#: includes/amr-ical-config.php:652 +msgid "HTML5 Exp 2" +msgstr "" + +#: includes/amr-ical-config.php:653 +msgid "" +"An HTML5 test option that tries to be leaner. You can have two level of " +"grouping with this option. If you configure it, I suggest changing this " +"description to aid your memory of how/why it is configured the way that it " +"is. " +msgstr "" + +#: includes/amr-ical-config.php:697 +msgid "EventInfo" +msgstr "" + +#: includes/amr-ical-config.php:698 +msgid "" +"For displaying additional event info on posts created as events. The summary " +"and description are switched off as these are the post title and the post " +"content. Calendar properties and groupings are also not relevant. If you " +"configure it, I suggest changing this description to aid your memory of how/" +"why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:729 +msgid "Small-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:730 +msgid "" +"The new default setting for calendar widgets. No grouping, No headings. If " +"you configure it, I suggest changing this description to aid your memory of " +"how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:758 +msgid "Large-Calendar" +msgstr "" + +#: includes/amr-ical-config.php:759 +msgid "" +"The new default setting for a large monthly calendar. No grouping, No " +"headings. If you configure it, I suggest changing this description to aid " +"your memory of how/why it is configured the way that it is." +msgstr "" + +#: includes/amr-ical-config.php:788 +msgid "Testing" +msgstr "" + +#: includes/amr-ical-config.php:789 +msgid "" +"A test option with lots of fields switched on. It has 2 levels of grouping - " +"this is fine so long as the html in use can be nested. If you configure it, " +"I suggest changing this description to aid your memory of how/why it is " +"configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:839 +msgid "Weekly Horizontal" +msgstr "" + +#: includes/amr-ical-config.php:841 +msgid "" +"Like the large calendar, but different - grouped by week and the weeks " +"continue across months. Really 2 weeks should be displayed a time." +msgstr "" + +#: includes/amr-ical-config.php:842 includes/amr-ical-config.php:874 +#: includes/amr-ical-config.php:918 +msgid "" +" If you configure it, I suggest changing this description to aid your memory " +"of how/why it is configured the way that it is. " +msgstr "" + +#: includes/amr-ical-config.php:871 +msgid "Weekly Vertical" +msgstr "" + +#: includes/amr-ical-config.php:873 +msgid "" +"Grouped by day, but only showing 1 week. 3 columns, with excerpt not full " +"description. No icons." +msgstr "" + +#: includes/amr-ical-config.php:915 +msgid "Event Master" +msgstr "" + +#: includes/amr-ical-config.php:917 +msgid "Grouped by category, intended to be used with no recurrences" +msgstr "" + +#: includes/amr-ical-config.php:1094 +msgid "Resetting options..." +msgstr "" + +#: includes/amr-ical-config.php:1097 +msgid "Options Deleted..." +msgstr "" + +#: includes/amr-ical-config.php:1098 +msgid "Option was not saved before or error deleting option..." +msgstr "" + +#: includes/amr-ical-config.php:1128 +msgid " Converting option key to lowercase" +msgstr "" + +#: includes/amr-ical-config.php:1148 +msgid "Look for Previous" +msgstr "" + +#: includes/amr-ical-config.php:1156 +msgid "Busy" +msgstr "" + +#: includes/amr-ical-config.php:1179 +msgid "Daily" +msgstr "" + +#: includes/amr-ical-config.php:1180 +msgid "Weekly" +msgstr "" + +#: includes/amr-ical-config.php:1181 +msgid "Monthly" +msgstr "" + +#: includes/amr-ical-config.php:1182 +msgid "Yearly" +msgstr "" + +#: includes/amr-ical-config.php:1183 +msgid "Hourly" +msgstr "" + +#: includes/amr-ical-config.php:1184 +msgid "on certain dates" +msgstr "" + +#: includes/amr-ical-config.php:1185 +msgid "day" +msgstr "" + +#: includes/amr-ical-config.php:1186 +msgid "week" +msgstr "" + +#: includes/amr-ical-config.php:1187 +msgid "month" +msgstr "" + +#: includes/amr-ical-config.php:1188 +msgid "year" +msgstr "" + +#: includes/amr-ical-config.php:1189 +msgid "hour" +msgstr "" + +#: includes/amr-ical-events-list-main.php:14 +msgid "" +"The DateTime " +"Class must be enabled on your system for this plugin to work. They may " +"need to be enabled at compile time. The class should exist by default in " +"PHP version 5.2." +msgstr "" + +#: includes/amr-ical-events-list-main.php:54 +msgctxt " the 11, 12 or 13th " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:61 +msgctxt " the twenty first etc " +msgid "%s st" +msgstr "" + +#: includes/amr-ical-events-list-main.php:64 +msgctxt " the second " +msgid "%s nd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:67 +msgctxt " the third " +msgid "%s rd" +msgstr "" + +#: includes/amr-ical-events-list-main.php:70 +msgctxt " the nth " +msgid "%s th" +msgstr "" + +#: includes/amr-ical-events-list-main.php:78 +msgid "the first" +msgstr "" + +#: includes/amr-ical-events-list-main.php:80 +msgid "every" +msgstr "" + +#: includes/amr-ical-events-list-main.php:82 +msgid "the last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:84 +msgid "the %s last" +msgstr "" + +#: includes/amr-ical-events-list-main.php:86 +msgid "the %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:122 +msgid "Monday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:124 +msgid "Tuesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:126 +msgid "Wednesday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:128 +msgid "Thursday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:130 +msgid "Friday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:132 +msgid "Saturday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:134 +msgid "Sunday" +msgstr "" + +#: includes/amr-ical-events-list-main.php:304 +msgid "Error creating custom css directory %s. Please check permissions" +msgstr "" + +#: includes/amr-ical-events-list-main.php:326 +msgid "Could not copy file." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1358 +msgid "Unable to load or cache ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1366 +msgid "Error finding or parsing ical calendar %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1402 +msgid "This feature requires the plugin amr-events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1403 +msgid "Get it here" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1530 +msgid "No url entered - did you want events from posts ?" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1563 +msgid "No ical components requested for display" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1735 +msgid "Invalid Ical URL %s" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1820 +msgid "" +"System error - event list type %s missing - please inform administrator." +msgstr "" + +#: includes/amr-ical-events-list-main.php:1822 +msgid "Now using an available list type to list events" +msgstr "" + +#: includes/amr-ical-events-list-main.php:1958 +msgid "Invalid Start Date" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2295 +msgid "Uncaught exception: " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2296 +msgid "" +"

                      An error in the input data may prevent correct display of this " +"page. Please advise the administrator as soon as possible." +msgstr "" + +#: includes/amr-ical-events-list-main.php:2303 +msgid "" +"Your existing saved list types have been converted. If you wish to return " +"to the earlier version of the plugin, you will have to reset the list types " +"and reapply your changes. Or use your DB backup to set the amr-ical-events-" +"list option back to previous version. You do have regular backups right? " +msgstr "" + +#: includes/amr-ical-events-list-main.php:2332 +msgid "General listing Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2334 +#: includes/amr-ical-list-admin.php:16 +#: includes/amr-ical-plugin-form-html.php:48 +msgid "Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2335 +msgid "List Type Settings" +msgstr "" + +#: includes/amr-ical-events-list-main.php:2336 +#: includes/amr-ical-list-admin.php:27 +msgid "Documentation" +msgstr "" + +#: includes/amr-ical-groupings.php:6 +msgid "Show all" +msgstr "" + +#: includes/amr-ical-groupings.php:7 +msgid "Hide all" +msgstr "" + +#: includes/amr-ical-list-admin.php:30 +msgid "Support" +msgstr "" + +#: includes/amr-ical-list-admin.php:33 +msgid "Videos" +msgstr "" + +#: includes/amr-ical-list-admin.php:36 +msgid "Rate it at WP" +msgstr "" + +#: includes/amr-ical-list-admin.php:38 +msgid "Plugin feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:43 +msgid "Forum feed" +msgstr "" + +#: includes/amr-ical-list-admin.php:67 +msgid "Your timezone db version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:69 +msgid "Plugin cannot determine timezonedb version in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:72 +msgid "Php timezonedb versions" +msgstr "" + +#: includes/amr-ical-list-admin.php:74 +msgid "Info on what changes are in which timezonedb version" +msgstr "" + +#: includes/amr-ical-list-admin.php:77 +msgid "No global timezone - is there a problem here? " +msgstr "" + +#: includes/amr-ical-list-admin.php:80 +msgid "Go to settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:84 +msgid "You are using the \"old\" gmt_offset setting " +msgstr "" + +#: includes/amr-ical-list-admin.php:85 +msgid "Consider changing to the more accurate timezone setting" +msgstr "" + +#: includes/amr-ical-list-admin.php:90 +msgid "The plugin thinks your timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:94 +msgid "The current UTC offset for that timezone is: " +msgstr "" + +#: includes/amr-ical-list-admin.php:107 +msgid "Switches to %s on %s. GMT offset: %d" +msgstr "" + +#: includes/amr-ical-list-admin.php:113 +msgid "Current time (unlocalised): " +msgstr "" + +#: includes/amr-ical-list-admin.php:123 +msgid "Save the settings" +msgstr "" + +#: includes/amr-ical-list-admin.php:125 +msgid "Update" +msgstr "" + +#: includes/amr-ical-list-admin.php:130 +msgid "Uninstall the plugin and delete the options from the database." +msgstr "" + +#: includes/amr-ical-list-admin.php:132 +msgid "Uninstall" +msgstr "" + +#: includes/amr-ical-list-admin.php:137 +msgid "Warning: This will reset ALL the listing options immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:140 +msgid "Reset all listing options" +msgstr "" + +#: includes/amr-ical-list-admin.php:155 includes/amr-ical-list-admin.php:1127 +msgid "Manage Event List Types" +msgstr "" + +#: includes/amr-ical-list-admin.php:170 +msgid "Configure event list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:177 includes/amr-ical-list-admin.php:628 +msgid "Preview the list using a calendar page." +msgstr "" + +#: includes/amr-ical-list-admin.php:178 includes/amr-ical-list-admin.php:629 +msgid "Preview" +msgstr "" + +#: includes/amr-ical-list-admin.php:184 includes/amr-ical-list-admin.php:683 +msgid "Saving...." +msgstr "" + +#: includes/amr-ical-list-admin.php:186 +msgid "Lists saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:187 +msgid "No change to options or unexpected error in saving" +msgstr "" + +#: includes/amr-ical-list-admin.php:203 +msgid "Check for lists to delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:210 +msgid "List %s will be deleted" +msgstr "" + +#: includes/amr-ical-list-admin.php:225 +msgid "Column Headings:" +msgstr "" + +#: includes/amr-ical-list-admin.php:251 +msgid "Calendar properties" +msgstr "" + +#: includes/amr-ical-list-admin.php:277 +msgid "Specify fields to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:280 +msgid "Note: a 0 (zero) in column = do not show that field." +msgstr "" + +#: includes/amr-ical-list-admin.php:282 +msgid "Uppercase fields are those defined in the iCal specification." +msgstr "" + +#: includes/amr-ical-list-admin.php:286 +msgid "" +"Lowercase fields are additional fields added by this plugin and derived from " +"the iCal fields for your convenience." +msgstr "" + +#: includes/amr-ical-list-admin.php:287 +msgid "" +"Fields show if \"column\" > 0 and if there is data available in your event " +"or ics file." +msgstr "" + +#: includes/amr-ical-list-admin.php:292 +msgid "Field" +msgstr "" + +#: includes/amr-ical-list-admin.php:294 +msgid "(0 to hide)" +msgstr "" + +#: includes/amr-ical-list-admin.php:342 +msgid "Define grouping:" +msgstr "" + +#: includes/amr-ical-list-admin.php:346 +msgid "Possible Groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:346 +msgid "Level" +msgstr "" + +#: includes/amr-ical-list-admin.php:358 +msgid "No grouping" +msgstr "" + +#: includes/amr-ical-list-admin.php:367 +msgid "Taxonomies" +msgstr "" + +#: includes/amr-ical-list-admin.php:367 +msgid "(Requires amr-events)" +msgstr "" + +#: includes/amr-ical-list-admin.php:386 +msgid "Date based" +msgstr "" + +#: includes/amr-ical-list-admin.php:386 +msgid "(See also date and time formats)" +msgstr "" + +#: includes/amr-ical-list-admin.php:413 +msgid "Select components to show:" +msgstr "" + +#: includes/amr-ical-list-admin.php:415 +msgid "Wikipedia entry describing components" +msgstr "" + +#: includes/amr-ical-list-admin.php:438 +msgid "Define maximums:" +msgstr "" + +#: includes/amr-ical-list-admin.php:441 +msgid "Note cache times are in hours" +msgstr "" + +#: includes/amr-ical-list-admin.php:481 +msgid "Configure another list type: " +msgstr "" + +#: includes/amr-ical-list-admin.php:494 +msgid "Return to manage list types" +msgstr "" + +#: includes/amr-ical-list-admin.php:528 +msgid "Please use numbers > 1" +msgstr "" + +#: includes/amr-ical-list-admin.php:571 +msgid "Imported settings for list %s invalid - not saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:577 +msgid "List %s will be saved with imported data" +msgstr "" + +#: includes/amr-ical-list-admin.php:619 +msgid "Configure: " +msgstr "" + +#: includes/amr-ical-list-admin.php:623 +msgid "Click to choose the fields, the columns and set other parameters." +msgstr "" + +#: includes/amr-ical-list-admin.php:624 +msgid "Configure" +msgstr "" + +#: includes/amr-ical-list-admin.php:633 +msgid "Calendar Page URL for previews must be entered above" +msgstr "" + +#: includes/amr-ical-list-admin.php:634 +msgid "n/a" +msgstr "" + +#: includes/amr-ical-list-admin.php:658 +msgid "Enter a list number to start a list type with new default settings." +msgstr "" + +#: includes/amr-ical-list-admin.php:660 +msgid "" +"After that, cut and paste from the list type closest to what you want to get " +"you started" +msgstr "" + +#: includes/amr-ical-list-admin.php:670 +msgid "iCal Events List " +msgstr "" + +#: includes/amr-ical-list-admin.php:687 +msgid "List saved" +msgstr "" + +#: includes/amr-ical-list-admin.php:709 +msgid "iCal Events List" +msgstr "" + +#: includes/amr-ical-list-admin.php:717 +msgid "Listing Events" +msgstr "" + +#: includes/amr-ical-list-admin.php:737 +msgid "iCal Events Lists" +msgstr "" + +#: includes/amr-ical-list-admin.php:738 +msgid "List types" +msgstr "" + +#: includes/amr-ical-list-admin.php:953 +msgid "Error in form - calprop array not found" +msgstr "" + +#: includes/amr-ical-list-admin.php:1023 includes/amr-ical-list-admin.php:1331 +msgid "Name" +msgstr "" + +#: includes/amr-ical-list-admin.php:1027 +msgid "Internal Description" +msgstr "" + +#: includes/amr-ical-list-admin.php:1051 +msgid "Other:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1057 includes/amr-ical-list-admin.php:1332 +msgid "List HTML Style" +msgstr "" + +#: includes/amr-ical-list-admin.php:1059 +msgid "Table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1060 +msgid "HTML5 in table" +msgstr "" + +#: includes/amr-ical-list-admin.php:1061 +msgid "HTML5 clean and lean" +msgstr "" + +#: includes/amr-ical-list-admin.php:1062 +msgid "Custom - file required" +msgstr "" + +#: includes/amr-ical-list-admin.php:1063 +msgid "Breaks for rows!" +msgstr "" + +#: includes/amr-ical-list-admin.php:1064 +msgid "Small box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1065 +msgid "Large box calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1066 +msgid "Weeks calendar" +msgstr "" + +#: includes/amr-ical-list-admin.php:1067 +msgid "Lists for rows" +msgstr "" + +#: includes/amr-ical-list-admin.php:1067 +msgid " *Avoid - deprecated" +msgstr "" + +#: includes/amr-ical-list-admin.php:1068 +msgid "Table with lists in cells (original)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1074 +msgid "Custom HTML style file at %s..." +msgstr "" + +#: includes/amr-ical-list-admin.php:1075 +msgid " (Html and some php knowledge required)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1086 +msgid "Default Event URL" +msgstr "" + +#: includes/amr-ical-list-admin.php:1088 +msgid " (For ics files in widget. External, or calendar page.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1090 includes/amr-pluggable.php:795 +msgid "More information" +msgstr "" + +#: includes/amr-ical-list-admin.php:1124 +msgid "General Options" +msgstr "" + +#: includes/amr-ical-list-admin.php:1125 +msgid "Styling and Images" +msgstr "" + +#: includes/amr-ical-list-admin.php:1126 +msgid "Advanced" +msgstr "" + +#: includes/amr-ical-list-admin.php:1144 +msgid "Message if no events found: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1151 +msgid "Look for more events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1158 +msgid "Look for previous events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1165 +msgid "Reset events message: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1172 +msgid "Free busy text: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1173 +msgid " - replaces the summary text (Busy)in a VFREEBUSY component." +msgstr "" + +#: includes/amr-ical-list-admin.php:1183 +msgid "Use human time like midday, midnight" +msgstr "" + +#: includes/amr-ical-list-admin.php:1188 +msgid "Do not give credit to the author" +msgstr "" + +#: includes/amr-ical-list-admin.php:1197 +msgid "Use javascript to collapse event groupings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1204 +msgid "Use my theme css, not plugin css" +msgstr "" + +#: includes/amr-ical-list-admin.php:1211 +msgid " No images (tick for text only)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1217 +msgid "Image icon size:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1220 +msgid "16" +msgstr "" + +#: includes/amr-ical-list-admin.php:1224 +msgid "32" +msgstr "" + +#: includes/amr-ical-list-admin.php:1227 +msgid "" +"The css provided works with the default twenty-ten theme and similar " +"themes. Your theme may be different." +msgstr "" + +#: includes/amr-ical-list-admin.php:1229 +msgid "" +"To edit the file, download the custom one added to your uploads folder: " +"uploads/css." +msgstr "" + +#: includes/amr-ical-list-admin.php:1230 +msgid "" +"Edit it and then re-upload to that same folder. Then select it in the box " +"below." +msgstr "" + +#: includes/amr-ical-list-admin.php:1232 +msgid "" +"This file will not be overwritten when the plugin is upgraded or when your " +"theme is upgraded. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1233 +msgid "More info" +msgstr "" + +#: includes/amr-ical-list-admin.php:1235 +msgid "Download the latest provided css file for editing" +msgstr "" + +#: includes/amr-ical-list-admin.php:1235 +msgid "(optional)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1236 +msgid "Choose plugin default css or choose a custom css and edit it." +msgstr "" + +#: includes/amr-ical-list-admin.php:1238 +msgid "No css files found in css directory " +msgstr "" + +#: includes/amr-ical-list-admin.php:1248 +msgid "Advanced:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1250 +msgid "Your php version is: %s" +msgstr "" + +#: includes/amr-ical-list-admin.php:1252 +msgid "Minimum Php version 5.3 required for events cacheing. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1253 +msgid "" +"Cacheing of generated events for re-use on same page (eg: widget plus list) " +"will not be attempted. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1254 +msgid "Apparently objects do not serialise correctly in php < 5.3." +msgstr "" + +#: includes/amr-ical-list-admin.php:1260 +msgid "Choose date localisation method:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1263 +msgid "none" +msgstr "" + +#: includes/amr-ical-list-admin.php:1265 +msgid "amr" +msgstr "" + +#: includes/amr-ical-list-admin.php:1267 +msgid "wp" +msgstr "" + +#: includes/amr-ical-list-admin.php:1269 +msgid "wpgmt" +msgstr "" + +#: includes/amr-ical-list-admin.php:1273 +msgid "Http timeout for external ics files:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1278 +msgid "Choose seconds before timeout for each ics file fetch" +msgstr "" + +#: includes/amr-ical-list-admin.php:1287 +msgid "" +"Warning - 30 seconds is a long time! Let it use cache rather if things are " +"slow" +msgstr "" + +#: includes/amr-ical-list-admin.php:1303 +msgid "Calendar Page URL for Previews:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1304 +msgid "" +"Enter the url of a page with [events] or [largecalendar] in the content to " +"use for list type previews." +msgstr "" + +#: includes/amr-ical-list-admin.php:1316 +msgid "Click the name of each list type below to configure that list." +msgstr "" + +#: includes/amr-ical-list-admin.php:1318 +msgid "Go to plugin website for documentation." +msgstr "" + +#: includes/amr-ical-list-admin.php:1320 +msgid "Configuration help" +msgstr "" + +#: includes/amr-ical-list-admin.php:1321 +msgid "" +"Be careful when editing or deleting - some listtypes are defaults for " +"shortcodes and widgets. " +msgstr "" + +#: includes/amr-ical-list-admin.php:1322 +msgid "" +"Add listtype=n in the parameters of the shortcode or widget to use another " +"list type." +msgstr "" + +#: includes/amr-ical-list-admin.php:1326 +msgid "Warning: This will delete all selected list types immediately." +msgstr "" + +#: includes/amr-ical-list-admin.php:1327 +msgid "Delete" +msgstr "" + +#: includes/amr-ical-list-admin.php:1330 +msgid "List" +msgstr "" + +#: includes/amr-ical-list-admin.php:1334 +msgid "To export or copy a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1335 +msgid "Select ALL the content, and COPY." +msgstr "" + +#: includes/amr-ical-list-admin.php:1337 +msgid "The encoding is to prevent errors when copying and pasting." +msgstr "" + +#: includes/amr-ical-list-admin.php:1338 +msgid "" +"The whole string must be selected (it should be when you click on the text " +"box)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1339 +msgid "The list type is a huge array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1340 +msgid "" +"Without encoding, there were varying problems with slashes. Encoding was " +"more stable." +msgstr "" + +#: includes/amr-ical-list-admin.php:1341 +msgid "Why encode?" +msgstr "" + +#: includes/amr-ical-list-admin.php:1345 +msgid "To import or paste a list type" +msgstr "" + +#: includes/amr-ical-list-admin.php:1346 +msgid "PASTE list type string" +msgstr "" + +#: includes/amr-ical-list-admin.php:1348 +msgid "" +"If you did not produce the string and are concerned about the contents, then " +"inspect the list type string using a decode tool. You should see a " +"serialised array." +msgstr "" + +#: includes/amr-ical-list-admin.php:1349 +msgid "Click to search for decoding tools" +msgstr "" + +#: includes/amr-ical-list-admin.php:1349 +msgid "Test decode" +msgstr "" + +#: includes/amr-ical-list-admin.php:1385 +msgid " Define date and time formats:" +msgstr "" + +#: includes/amr-ical-list-admin.php:1387 +msgid "" +"Define the formats for the day (eg: Event date, End Date) and time (eg: " +"Start time, End Time) fields. You can actually use any of these to display a " +"full Date time string too. Use the Event date for event instances - the " +"DTSTART field is the first startdate of a recurring event sequence." +msgstr "" + +#: includes/amr-ical-list-admin.php:1388 +msgid "" +"These are also used for the date related grouping headings (ie: will show " +"the date in that format as a heading for that group of dates if relevant.)" +msgstr "" + +#: includes/amr-ical-list-admin.php:1389 +msgid "Use the standard PHP format strings: " +msgstr "" + +#: includes/amr-ical-list-admin.php:1390 +msgid "Php manual - date datetime formats" +msgstr "" + +#: includes/amr-ical-list-admin.php:1392 +msgid "See php date function format strings" +msgstr "" + +#: includes/amr-ical-list-admin.php:1393 +msgid " (will localise) " +msgstr "" + +#: includes/amr-ical-list-admin.php:1423 +msgid "Expand/Contract all" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:146 +msgid "Why not do any or all of the following:" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:148 +msgid "Link to it so other folks can find out about it." +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +msgid "" +"If you have any problems with this plugin or good ideas for improvements or " +"new features, please talk about them in the" +msgstr "" + +#: includes/amr-ical-plugin-form-html.php:156 +msgid "Support forums" +msgstr "" + +#: includes/amr-ical-pretty-print.php:5 +msgid "Weeks start on %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:33 includes/amr-ical-pretty-print.php:41 +#: includes/amr-ical-pretty-print.php:57 +#: includes/amr-ical-pretty-print.php:145 +msgid " and " +msgstr "" + +#: includes/amr-ical-pretty-print.php:43 +msgid "every " +msgstr "" + +#: includes/amr-ical-pretty-print.php:72 +msgid " or " +msgstr "" + +#: includes/amr-ical-pretty-print.php:109 +msgid "Every %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:119 +msgid "On %s instance within %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:124 +msgid "%s times" +msgstr "" + +#: includes/amr-ical-pretty-print.php:129 +msgid "until %s %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:131 +msgid " if month is %s" +msgstr "" + +#: includes/amr-ical-pretty-print.php:133 +msgid " in %s weeks of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:135 +msgid "on %s day of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:136 +msgid "on %s day of each month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:137 +#: includes/amr-ical-pretty-print.php:138 +msgid "on %s " +msgstr "" + +#: includes/amr-ical-pretty-print.php:142 +msgid " of the month" +msgstr "" + +#: includes/amr-ical-pretty-print.php:144 +msgid " of the year" +msgstr "" + +#: includes/amr-ical-pretty-print.php:149 +msgid "at the %s hour" +msgstr "" + +#: includes/amr-ical-pretty-print.php:150 +msgid "at the %s minute" +msgstr "" + +#: includes/amr-ical-pretty-print.php:151 +msgid "at the %s second" +msgstr "" + +#: includes/amr-import-ical.php:36 +msgid "Your cache directory %s has been created" +msgstr "" + +#: includes/amr-import-ical.php:39 +msgid "Error creating cache directory %s. Please check permissions" +msgstr "" + +#: includes/amr-import-ical.php:67 +msgid "Unexpected data contents. Please tell administrator." +msgstr "" + +#: includes/amr-import-ical.php:68 +msgid "See comments in source for response received from ics server." +msgstr "" + +#: includes/amr-import-ical.php:158 +msgid "Error getting calendar file with htpp or curl %s" +msgstr "" + +#: includes/amr-import-ical.php:162 +msgid "Using File last cached at %s" +msgstr "" + +#: includes/amr-import-ical.php:164 +msgid "File last cached time not available" +msgstr "" + +#: includes/amr-import-ical.php:166 +msgid "Warning: Events may be out of date. " +msgstr "" + +#: includes/amr-import-ical.php:172 +msgid "No cached ical file for events" +msgstr "" + +#: includes/amr-pluggable.php:52 +msgid "midnight" +msgstr "" + +#: includes/amr-pluggable.php:53 +msgid "midday" +msgstr "" + +#: includes/amr-pluggable.php:88 +msgid "Go to agenda or list view" +msgstr "" + +#: includes/amr-pluggable.php:88 +msgid "Agenda" +msgstr "" + +#: includes/amr-pluggable.php:96 +msgid "Go to calendar view" +msgstr "" + +#: includes/amr-pluggable.php:96 +msgid "Calendar" +msgstr "" + +#: includes/amr-pluggable.php:103 +msgid "Go to map view" +msgstr "" + +#: includes/amr-pluggable.php:103 +msgid "Map" +msgstr "" + +#: includes/amr-pluggable.php:121 +msgid "Go to date" +msgstr "" + +#: includes/amr-pluggable.php:122 +msgctxt "" +"Submit button for month and year navigation. Use translation to replace " +"with words if you want." +msgid "»»" +msgstr "" + +#: includes/amr-pluggable.php:151 includes/amr-pluggable.php:157 +msgid "Week starting %1$s" +msgstr "" + +#: includes/amr-pluggable.php:152 +msgctxt "for prev navigation, translate allows you to use words" +msgid "←" +msgstr "" + +#: includes/amr-pluggable.php:158 +msgctxt "for next navigation, translate allows you to use words" +msgid "→" +msgstr "" + +#: includes/amr-pluggable.php:192 includes/amr-pluggable.php:199 +msgid "Go to %1$s %2$s" +msgstr "" + +#: includes/amr-pluggable.php:267 +msgid "Week starting %s" +msgstr "" + +#: includes/amr-pluggable.php:306 +msgid "hours" +msgstr "" + +#: includes/amr-pluggable.php:326 +msgid "months" +msgstr "" + +#: includes/amr-pluggable.php:342 +msgid "days" +msgstr "" + +#: includes/amr-pluggable.php:350 +msgid "show past events" +msgstr "" + +#: includes/amr-pluggable.php:351 +msgid "show less" +msgstr "" + +#: includes/amr-pluggable.php:352 +msgid "show more" +msgstr "" + +#: includes/amr-pluggable.php:353 +msgid "show much less" +msgstr "" + +#: includes/amr-pluggable.php:354 +msgid "show much more" +msgstr "" + +#: includes/amr-pluggable.php:357 +msgid "show future events" +msgstr "" + +#: includes/amr-pluggable.php:358 +msgid "show maximum 10 events if available" +msgstr "" + +#: includes/amr-pluggable.php:359 +msgid "show maximum 50 events if available" +msgstr "" + +#: includes/amr-pluggable.php:360 +msgid "show maximum 100 events if available" +msgstr "" + +#: includes/amr-pluggable.php:562 +msgid "Event attachment" +msgstr "" + +#: includes/amr-pluggable.php:602 +msgctxt "" +"when an event runs for full days, note the   prevents the text " +"wrappping in a table." +msgid "all day" +msgstr "" + +#: includes/amr-pluggable.php:631 includes/amr-pluggable.php:638 +msgid "View events in %s %s" +msgstr "" + +#: includes/amr-pluggable.php:632 +msgid "category" +msgstr "" + +#: includes/amr-pluggable.php:672 +msgid "Total events: " +msgstr "" + +#: includes/amr-pluggable.php:678 +msgid "No description available" +msgstr "" + +#: includes/amr-pluggable.php:686 includes/amr-pluggable.php:696 +msgid "Subscribe to %s Calendar" +msgstr "" + +#: includes/amr-pluggable.php:703 +msgid "Subscribe to calendar in your calendar application." +msgstr "" + +#: includes/amr-pluggable.php:705 +msgid "Subscribe to calendar" +msgstr "" + +#: includes/amr-pluggable.php:811 +msgid "Add to google calendar" +msgstr "" + +#: includes/amr-pluggable.php:813 +msgid "Add to google" +msgstr "" + +#: includes/amr-pluggable.php:829 +msgid "Add event to google" +msgstr "" + +#: includes/amr-pluggable.php:853 +msgid "Last Refresh time unexpectedly not available" +msgstr "" + +#: includes/amr-pluggable.php:857 +msgid "Refresh calendars" +msgstr "" + +#: includes/amr-pluggable.php:858 +msgid "Last refresh was at %s. " +msgstr "" + +#: includes/amr-pluggable.php:860 +msgid "Remote file had no modifications. " +msgstr "" + +#: includes/amr-pluggable.php:864 +msgid "The remote file was last modified on %s." +msgstr "" + +#: includes/amr-pluggable.php:869 +msgid "Click to refresh" +msgstr "" + +#: includes/amr-pluggable.php:989 +msgid "Week %u" +msgstr "" + +#: includes/amr-pluggable.php:1366 +msgid "Look for more from %s" +msgstr "" + +#: includes/amr-pluggable.php:1388 +msgid "Go back to initial view" +msgstr "" + +#: includes/amr-pluggable.php:1393 +msgid "Go back to previous events" +msgstr "" + +#: includes/amr-pluggable.php:1422 +msgid "Sent by " +msgstr "" + +#: includes/amr-pluggable.php:1730 +msgid "%u year" +msgid_plural "%u years" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1735 +msgid "%u month " +msgid_plural "%u months " +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1740 +msgid "%u week " +msgid_plural "%u weeks" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1745 +msgid "%u day" +msgid_plural "%u days" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1751 +msgid "%u hour" +msgid_plural "%u hours" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1756 +msgid "%u minute" +msgid_plural "%u minutes" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1761 +msgid "%u second" +msgid_plural "%u seconds" +msgstr[0] "" +msgstr[1] "" + +#: includes/amr-pluggable.php:1780 +msgid "Change Timezone" +msgstr "" + +#: includes/amr-pluggable.php:1781 +msgid "Timezone: %s, Click for %s" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:9 +#: includes/amr-upcoming-events-widget.php:111 +#: includes/amr-upcoming-events-widget.php:181 +#: includes/amr-upcoming-events-widget.php:259 +msgid "Upcoming Events" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:10 +msgid "Upcoming Events List" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:132 +msgid "See plugin website for more details" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:135 +#: includes/amr-upcoming-events-widget.php:270 +msgid "Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:141 +#: includes/amr-upcoming-events-widget.php:276 +msgid "Calendar page url" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:142 +msgid "Calendar page url in this website" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:148 +msgid "Hover description on Title" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:149 +msgid "Do an event summary hyperlink with event description as title text " +msgstr "" + +#: includes/amr-upcoming-events-widget.php:156 +#: includes/amr-upcoming-events-widget.php:283 +msgid "External events only" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:157 +#: includes/amr-upcoming-events-widget.php:284 +msgid "Show events from external ics only, do NOT pickup any internal events." +msgstr "" + +#: includes/amr-upcoming-events-widget.php:158 +#: includes/amr-upcoming-events-widget.php:285 +msgid "Else include events created internally too" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:164 +#: includes/amr-upcoming-events-widget.php:291 +msgid "External ics urls and advanced options" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:165 +#: includes/amr-upcoming-events-widget.php:292 +msgid "" +"External ics urls and/or optional shortcode parameters separated by spaces.)" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:166 +msgid "" +" Examples: listtype=4 events=10 days=60 start=yyyymmdd startoffset=-2... )" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:168 +msgid "See more parameters" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:184 +msgid "Upcoming Events Calendar" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:268 +msgid "See more" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:277 +msgid "Calendar page url in this website, for links from widget" +msgstr "" + +#: includes/amr-upcoming-events-widget.php:293 +msgid "" +" Examples: listtype=8 events=10 days=60 start=yymmdd startoffset=-2... )" +msgstr "" + +#: includes/functions.php:165 includes/functions.php:169 +msgid "Invalid Url" +msgstr "" + +#: includes/functions.php:209 +msgid "" +"I try to make these plugins work \"out of the box\" with " +"minimal effort; that they be easy to use but very configurable; well tested; with valid html and css both at the front and admin area." +msgstr "" + +#: includes/functions.php:210 +msgid "If you have a feature request, please do let me know. " +msgstr "" + +#: includes/functions.php:212 +msgid "To edit events in wordpress:" +msgstr "" + +#: includes/functions.php:214 +msgid "Upgrade to amr-events at " +msgstr "" + +#: includes/functions.php:219 +msgid "Keep all these settings and lists" +msgstr "" + +#: includes/functions.php:221 +msgid "Offers many additional benefits." +msgstr "" + +#: includes/functions.php:222 +msgid "Find out more" +msgstr "" + +#: includes/functions.php:253 +msgid "Events plugin by anmari" +msgstr "" + +#: includes/functions.php:269 +msgid "Click to toggle" +msgstr "" + +#: uninstall.php:22 +msgid "amr ical options deleted from database" +msgstr "" + +#: uninstall.php:33 +msgid "amr ical cached ics files deleted " +msgstr "" + +#: uninstall.php:34 +msgid "" +"Css files may also exist. They and the css folder have not been deleted as " +"they have been shared with other plugins." +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "amr events calendar or lists with ical files" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://icalevents.com" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"Display simple or highly customisable and styleable list of events. Handles " +"all types of recurring events, notes, journals, freebusy etc. Offers links " +"to add events to viewers calendar or subscribe to whole calendar. Write " +"Calendar Page and put [iCal http://yoururl.ics ] where you want the " +"list of events of an ics file and [events] to get internal events. To " +"tweak: Manage Settings Page, " +"Manage Widget." +msgstr "" + +#. Author of the plugin/theme +msgid "anmari" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://anmari.com/" +msgstr "" diff --git a/wp-content/plugins/amr-ical-events-list/lang/index.php b/wp-content/plugins/amr-ical-events-list/lang/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/lang/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/amr-ical-events-list/readme.txt b/wp-content/plugins/amr-ical-events-list/readme.txt new file mode 100644 index 0000000..674fea2 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/readme.txt @@ -0,0 +1,936 @@ +=== amr ical events lists === +Contributors: anmari +Tags: event, events, event calendar, events calendar, event manager, diary, schedule, ical, ics, ics calendar, ical feed, ics feed, wordpress-ics-importer, calendar, upcoming events, google, notes, todo, journal, freebusy, availability, widget, web calendar, agenda, happenings, shows, concerts, conferences, courses, timetable, schedule +Requires at least: 2.8 +Tested up to: 4.9.8 +Version: 5.7 +Stable tag: trunk +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +Event Calendar or Agenda list, combine multiple ics files, handles recurring events. + +== Description == + +Display event lists, big box calendars, upcoming events widgets or small calendar widgets. Encourage viewers to subscribe to or bookmark your events on their calendars. + +This plugin offers a thorough Ical calendar parser - copes with all the ical recurrence possibilities, and a large part of the rest of the RFC 5545 specification. + +This free version accepts one or many ical urls for ics files. It produces a very stylable list of events, notes, todo's or freebusy info. Create events in wp with the add-on. + +**Demo** + +See options in action at the [Demo site](http://test.icalevents.com) + +**Events in wordpress** + +If you also want a complete "inhouse" solution where you can create events in wordpress with multiple event classification options, and produce your own ics feeds from those, please see [events plugin home page](http://icalevents.com). amr-events is an extension of amr-ical-events-list and will use any configuration from it. + +**Features** + +Displays events from multiple calendars in out the box or with customised grouping, formatting and styling. Multiple pages or post or widget or both. + +Lots of css hooks to style it the way you want. - Generate multiple css tags including for hcalendar miccroformat support. + +List upcoming recurring or single events, notes, journal, freebusy information from many ical feeds. Offers a range of defaults and customisation options. + +Group events by month/week/day or many other for presentation and styling. Offers your viewers the option to subscribe or add the events or the whole calendar to their calendars (google or other). + +**Translations** +Many thanks to the following people for the translations. Note that I am unable to verify these and they may be out of date with the current version.: + +* Norwegian from John Enebak (tweaked from the Danish) +* Spanish from Andrew at webhostinghub +* Italian by Andrea aka sciamannikoo +* Lithuanian by Nata Strazda from Web Hub +* Polish by Kasia +* French by fxbenard aka 3emeOeil +* Dutch by Fred Onis +* Danish by Georg Adamsen from wpbureauet.dk +* Belorussian by Alexander Ovsov from webhostinggeeks.com/science +* Romainian by webgeek +* Russian (partial) by ghost (antsar.info) +* Hindi translation by Ashish J. of Outshine solutions +* Ukranian translation by Michael Yunat of getvoip.com/blog + +If anyone would like to offer some translations, please do. The Code Styling Localisation Plugin is very useful for this. PLease send me both the .mo and .po files for your language for quicker upload. + +**Requirements:** + +PHP 5 > 5.20 +php datetime class must be enabled (standard in php 5.2). This is essential to provide robust timezone usage. + +== Installation == + +1. Download and activate as per usual in wordpress +2. Create some events in your calendar application in a public calendar (eg: google calendar, facebook, ical.me.com ). If you'd rather do this in wordpress, see https://icalevents.com +3. Find the public ics url for the calendar. NB The url MUST be publicly accessible when not logged in - check by pasting the url into another browsers url field. If you cannot access it in a browser without being logged in, then the plugin will not be able to access it either. +4. Create a page for your calendar or agenda and enter one of the shortcodes (preferably using the html view of the wp editor) . EG: + +[iCal yoururl.ics] +[largecalendar yoururl.ics] +[smallcalendar yoururl.ics] +[weekscalendar yoururl.ics] + + NB (Enter the Ics url NOT As a hyperlink - it must be plain text. Enter it in the html view, not the visual view of the editor.) + +Optional: + +[expandall] - if using collapsing groups. Enter this shortcode BEFORE the [events] or [ical] shortcodes. Remember to tick 'use js to collapse groups' in the listing events styling settings and of course define a grouping for your list type. See http://icalevents.com/4447-groupings-of-events-expanding-and-collapsing-the-groupings/ + + +**For the widgets (calendar and list)** + +1. Drag one of the events widgets to the chosen sidebar +2. Enter http://yoururl.ics in the widgets input area, Save + + +Some calendar applications delay a bit before updating the ics file. If you think the plugin is 'missing' a new event, please open your ics link in a text editor like notepad. Check that the event is actually in the ics file. + +There are many shortcode parameters and some highly configurable list types. Please read: + +http://icalevents.com/documentation/getting-started/ +http://icalevents.com/documentation/shortcodes/ +http://icalevents.com/documentation/list-types/ + +Note +1. For full attendee listing and greater attendee information, please use amr-events-attendees addon +2. that some information may apply to the paid version amr-events - this is usually indicated. +amr-events has much additional functionality, including a taxonomy widget. + + +== Changelog == += Version 5.7 = +* Fixed bug in recurring monthly events that have BYDAYS and numeric BYMONTHDAY. Error experienced generating repeats for the Friday before the first Saturday RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=-1,1,2,3,4,5,6 + + += Version 5.6 = +* Improved code for recurring monthly events that have BYDAYS or numeric BYDAYS. A website experienced an error when google indexed ics files via forward/backward navigation. It was not recreated, but code was tweaked to trap and note if the error occurred again. + += Version 5.5 = +* Removed button that should have been removed in 5.4. Uninstall from 5.4 is via standard wp uninstall - when you delete the plugin the options and the ics files cache will be deleted. + += Version 5.4 = +* Fix uninstall.php called when plugin is deleted. It deletes plugins options and the ics file cache. +* Fixed php function usage deprecated in php 7.2.* (now tested on 7.2.8) + += Version 5.3 = +* use attendee text as name if no CN. If no text then use front of mailto + += Version 5.2 = +* tweak some attendee and organiser parsing and formatting. Note only attendees that have CN and accepted are shown here. For more extensive handling of attendee possibilities, please see addon. + += Version 5.1 = +* removed custom css folder creation - there are better ways to do custom css within wordpress, better not to have a whole separate css file. It should still work if using the custom css file, but for new people will not create or propose that option. +* removed custom html style option - I don't think anyone is using them, but the code is still there if you are +* tweaked the admin screens a little - cleanup + += Version 5.0 = +* Tweaked some default settings eg: change default icon size to 32 not 16, allday off by default +* Refreshed and updated default css (now called _2017, previous css still available), includes some responsive table elements +* Added a css class for the agenda views to better split out css +* small fix for ics feeds with & ampersands in title + += Version 4.35 = +* Fixed way that the allowance for CR LF HTAB unfolding of lines was implemented as previous method broke some ics files. + += Version 4.34 = +* Allowed for CR LF HTAB unfolding of lines, as outlook exports lines that way. +* Fixed month_year_dropdown recently broken with change from chceking $_REQUEST to $_GET. Some folks systems were not setting up the $_REQUEST variable appropriately (should have both $_GET and $_POST, but some installs did not have that.) [month_year_dropdown] will now using method=get, not method=post - similar to bottom navigation. +* Tested on wp 4.4 + += Version 4.33 = +* Change: removal of forum feed: moving to email support. +* Fix: Default css was now 'hiding' the current day details because it ended up being white text on a white background. Fixed. +* Tested: on wp 4.3 beta + += Version 4.32 = +Fix: organiser temporarily got lost - they're back! +Fix: some tweaks to functions to improve last date calculations those with events coming from the database. + += Version 4.31 = +Add: added some debugs to highlight possible problems with old data. + + += Version 4.30 = +Fix: added urlencode to add-to-google formating to ensure wider variety of ics links will work +Fix: changes to improve/reduce meta and taxonomy calls for those using amr-events + += Version 4.25 = +* Fix: calls to get clean url started returning a pagename query parameter on top of the permalink. THis was causes navigation using that function to fail. clean url function fixed to avoid that. +* Update: of Danish Translation from Georg Adamsen from wpbureauet.dk + += Version 4.24 = +* Fix: excessive splitting by colon after impovements for attendee parsing. DESCRIPTIONS etc can have unescaped colons (eg in http:// + += Version 4.23 = +* Fix: little glitch was introduced when a bracket was slightly misplaced. Affected navigation at bottom of page and showed a error message if anyone navigated back/forth. +* Change: used to change webcal (unofficial protocol) to http. Now will only do that for validation, will keep the webcal prefix for echoing at top of calendar (Some sites not sending ics correctly for http) + += Version 4.22 = +* Fix: changed code for recently (wp 4.3) deprecated widget calling +* Fix: better handling of dodgy ics files with dodgy contact fields +* Add: basic attendee handling and attendee stats - addons possible for greater functionality +* Add: A settings page to choose the fields you want to work with. This will reduce the list you see in the list configuration. + += Version 4.21 = +* Add: automatically exclude events with a CLASS:PRIVATE +* Add: handle events with no summary, title or description as though they were still valid events (eg: like a FreeBusy) +* Mod: cleaned up some debug statements in very stable areas +* Mod: adjusted default css for multi small calendar + += Version 4.20 = +* Add: ability to use show_in_events_timezone=1 as shortcode parameter +* Add: info on addons and for add-on users, added code for auto updates +* Add: added norwegain language file - thanks to John Enebak + += Version 4.18 = +* Fix: A weird bug in weekday weekly recurrences - events in partial weeks at start of recurrence within viewing period were being ignored. This varied by the start of week setting, so was a tad confusing to debug. Thanks to allenconquest for flushing this out. +* Fix: Add to google for non all day events of ics files was not passing time. Is now. + += Version 4.17 = +* Add: class to calendar properties so one can style the ics files properties as well as the events. Use class cal0, cal1, cal2 etc +* Add: cope with google labs experimental calendar attachements having encoded urls (RFC 5545 does not) +* Change: if no event attachment title (eg: from ics file, not internal event, then use 'Event attachment as link text, not link url - too ugly) +* Change: minor css tweaks to the html5 html option + += Version 4.16 = +* Fix: re VFREEBUST - Changes to the freebusy text were not saving, kept reverting to blank or the red cross. It will now update. If blanked out then the text found in the ics file will be used 'Busy' and translated if translation text is available. +* Fix: a situation that most of you will never ever use - the pretty printing of the WKST ina recurrence rule (eg in the testing list type 10) + += Version 4.15 = +* Better Checking for empty data sets in calendar formats, before trying to do array multi sort + += Version 4.14 = +* Slight problem with some sites timezones due to the previous code changes and small bug in application of the new windows zone filter. Have tested on a set of zones I have, but there is always weird data out there. Please let me know asap if you find anything strange. Thanks. + += Version 4.13 = +* For sites on php versions < 5.3. Removed use of anonymous function for error handler on line 499 on amr-import-ical.php + += Version 4.12 = +* Added ability to map windows zones in ics files to real timezones (IANA, php and Ohlson) +* Added a timezone filter to facilitate any other mappings that may be required. apply_filters('amr-timezoneid-filter',$icstzid); +* File included to update the mapping from the unicode.org xml file should it ever change. See timezones folder. rename the .txt to .php, execute. +* Changed default timezone if a timezone id cannot be parsed (maybe because some other application is doing ity's own weird thing). Will now be your wordpress php timezone, not php or UTC. +* Cleaned up translation loading a little + += Version 4.11 = +* Fixed a bug in the calendar properties section. Column 1 was never showing - whoops. If you are now seeing your ics calendar name and you didn't want to. Go to list type settings, calendar properties and assign a column of '0' to the X-WR-CALNAME. Note not all ics files have a X-WR-CALNAME, so you may not see anything anyway. + += Version 4.10 = +* event titles in small calendar daylinks will now be sorted by time with all day events first. +* daylinks in small and large calendar had lost the listype and/or ability to use an agenda list type passed in the shortcode. This is fixed. Note: links from the day of month will pass an agenda listype and day parameters back to same page to show just events for that day in agenda format. If you want to use another page, then configure another calendar page and enter that url in the shortcode [largecalendar more_url=yourotherurl] + += Version 4.9 = +* fixed a typo bug hopefully only recently introduced. It affected recurring events with modified instances. + += Version 4.8 = +* added more trapping of datetime exceptions to avoid fatal errors in some installs +* fixed bug when recurring weekly with some days of week. +* ensured that rdates (specific recurring dates) are properly sorted if displayed in a wp event + += Version 4.7 = +* removed use of php's date_default_timezone_set() as wordpress wants everything to stay in UTC (despite having timezone in settings). Checked and updated all DateTime create calls to ensure that they either cloned existing dates & ths their zones, or explicitly used a global timezone got from the saved wordspress timezone. +* fix: small bug where if rdates (specific recurrence dates not due to rules) existed, then DTSTART was not propoerly included. +* cope a bit better with ics files that seem ok but have junk in them - ignore junk events with empty dates. +* improved formatting of some attachments +* tested with version 3.1 of amr-events + += Version 4.6 = +* made nl2br2 a pluggable function so folks can add =0D-0A replacement checks. +* cleaned up how custom language files were accessed. You can still store them in WP_LANG_DIR / languages / plugindomain.locale.mo. They will be loaded first, then any files in the plugin lang folder. +* cleaned up some strings and their text domain assignment +* fixed a language bug where saved text strings were overwriting translated strings. + += Version 4.5 = +* removed a filter line that should NOT have been in that update and was not picked up in testing due to cacheing + += Version 4.4 = +* Fix: 20131002 - fix to the single event 'add to google calendar' for one day events. Google used to accept events without end dates in the link. It now wants an enddate, so this has been added. Thanks to Kevin for identifying this. + += Version 4.3 = +* Fix: 20130922 - minor fix for multisite users. Removed a debug function. + += Version 4.2 = +* Fix: fixed a weekly calendar header bug that somehow got introduced recently +* Fix: some minor notices that occured in php 5.4.3 up to do with use of array_diff + += Version 4.1 = +* Add: as per request, added ability to parse custom fields such as Trumba's. Filters etc added. An example add on created to demonstrate. See icalevents.com in a day or so for info. +* Fix: A minor styling bug occured if your ics file had categories on some events but not others. Fixed. +* Add: As part of the fix, ability to filter ics events by category was added. +* Change: some minor tweaks made to default css to make default event list widget look a little better in twentytwelve default theme without breaking the look in twentyeleven. +* Add: added css tweak to remove underlining of abbr (microformat markup) classes. +* Fix: Change wp_remote_get to use filter to change http timeout instead of passing args. If args passed, then ALL must be passed. Rather let wordpress determine the best default settings ad filter as needed. Thanks to ob1chewy for pointing out. +* Tested on wp 3.5.2 - alpha + += Version 4.0.30 = +* Add: as per request, can now use as shortcode parameter: sort_later_events_first=1 to change the default sort. By default listings start with events closest to start date and proceed into the future. These will reverse sort. They may be useful for past event listings - why does one want to show old events ? Well they just do want to! +* Add: as per request, can now use as shortcode parameter: exclude_in_progress=1 to exclude events that may be in progress across chose start date ie: they started before chosen startdate. By default these show as their end date is after the chosen start date. +* Fix: for those few of you on php 5.4 - fix deprecated pass by reference. + += Version 4.0.29 = +* Fix: Minor bug if one created a new listtype without copying and pasting from an existing listtype. Fixed. +* Update: French lang update from fxbenard.com, also a dutch update was added a few months back - thanks! +* Fix: Thanks to tubtenkunga.org, a very specfic little bug when using monthly recurring 'nth' day of week. +* Fix: Cleaned up attendee parsing and default listing in case anyone using it! +* Add: Added ability to define what shows for VFREEBUSY components instead of the 'Busy'. See listing events in settings. + += Version 4.0.28 = +* Fix: Google at some point changed event publisher practice for all day end dates (but not yet documentation) to follow ics all day end date practice. Event ends on the 'next' day. Function 'add to google' updated accordingly. +* Fix: The html5 'styles' were a bit too clean. The html markup required for rich snippets gets missed. Other htmlstyles were fine. Html markup using spans added back so that rich snippets would be available. + += Version 4.0.27 = +* Fix: for sites with events list on home page AND somehow have another post on home page too (global $post ends up with post data, not homepage data (id) ) +* Fix: day of week text showing in calendar on empty cells after end month from last update - removed + + += Version 4.0.26 = +* Fix: slight admin screen html tweak so 'internal description will go to next line on wide screens +* Change: some error messages when you realy haven't set up your settings correctly, when now only be shown to the administrator +* Change: added rel="next" and rel="prev" where appropriate to the various date navigation + += Version 4.0.25 = +* Fix: some code changes caused some problems with unset objects - particularly in calendar +* Fix: Widget or ungrouped list could have missing 'ul' if no grouping s in thelist and an "html list style" of "lists for rows" was used (This was old default for widgets). Now fixed - ul will be issued even if there is no grouping. Alternatively you may prefer to use "html5" html list style instead - see 'other' under configure listtype. +* Change: Deprecated the "lists for rows" html style option (still works, just discouraging use of it) +* Change: Removed ''s that wrapped 'cell' content in the "lists for rows" html style. Since html text could conceivably end up inside the "cell", this would result in invalid html - cannot have paragraph tag inside a span. Overall this should be low impact; particularly as other html styles are more 'attractive' - html5 etc. +* Tested with amr-events 3.0.9 + += Version 4.0.24 = +* Add: added ability to set http timeout for those whose ics file fetches are timing out with default wp setting. See advanced settings. +* Fix: Some notices in debug mode +* Fix: allowed for possibility that filemtime doesn't always return a value even if cached file exists. was used in error message when problme refreshing external ics file +* Change: changed some default html choices to use html5 options rather (eg: widget, and eventinfo). If youhaev saved options, they will be unaffacted. You can choose html5 options by goingto list type settings, scroll to "other", open and choose HTML5Table or HTML5 + += Version 4.0.23 = +* Fix: Widget title had a hyperlink to calendar url - latest wp does not like that - weird results. Link removed. +* Fix: with recent update for weekly horizontal, the boxcalendar padding at end of month got slightly broken - fixed. +* Add: some debug options to measure any timing issues (already can check memory etc), so can tell if it this plugin or some other plugin/theme + + += Version 4.0.22 = +* Fix: Weekly horizontal calendar was STILL not working correctly . around a month end it behaved like a monthly calendar instead of a weekly schedule. +* Fix: If you saved the listype 11, it 'lost' the weeks calendar setting and you couldn't get it back without resetting. Could set to others, but not to weekscalendar - very weird one to debug and as is often the case it was a stupid typo. +* Update: a belorussian translation update was added. + + += Version 4.0.21 = +* Fix: Decode entities (like  ) in content +* Fix: Weekly horizontal calendar was not working correctly +* Change: If Event urls in ics files are external to the site, they will have rel="external" and target="_blank" added via a pluggable function amr_format_url($url). +* Change: updated danish files from Team Blogos (GeorgWP) +* Add: can now choose to add js to collapse and expand groupings. +* Add: Two level of groupings of events possible and can group by categories and tags etc if using amr-events + += Version 4.0.20 = +* Fix: if DTEND matches DTSTART, it is not necessarily an error, or an all day. +* Fix: Pluggables loaded too late for other plugins that want to apply filters to content. Pluggable file will now load with priority 99 on 'plugins_loaded'. So please load any pluggable functions with earlier priority. + += Version 4.0.19 = +* Fix: switching views and then doing month navigation did not keep final view, will now. +* Fix: to German translation file for the goto titles on month year navigation. +* Add: can now specify own text for 'reset' message on the 'look for more events' and a new option 'look for previous'. Blanking out the text will hide that link options for previous and reset. 'Previous' and 'Reset' show when one has done at least 1 look more. +* Add: 'human time' ie the midday, midnight is now controllable via the Listing settings. +* Add: word-wrap to default css to stop very long words breaking out of boxes. +* Change: Default large calendar - moved start date time etc to details hover box. + += Version 4.0.18 = +* Fix: own css got lost somewhere due to change in options loading - sorry, back now +* Add: Lithuanina translation now available. +* Add: ics files can now use excerpts like internal events. Plugin will now check for empty excerpts and apply the filter: excerpt length. So ics excerpts will look similar as internal events excerpts. Cannot do the "excerpt more" filter as that often generates a link which would be incoirrect for an ics file event. + += Version 4.0.17 = +* Fix: 'allday' was not detected quite correctly for multi days in ics files - fixed +* Fix: when months were used, pagination had the same increment for more and much more - fixed. +* Changes: some minor tweaks to admin screens. + + += Version 4.0.16 = +* Fix: categories with spaces in the name are not liked by css classes. Need the names not the slugs for wordpress queries, so names are now 'sluggified' when used as a css class. Note: you can also use t## where ## is the categrory or taxonomy id (css classes do not like numbers either). +* Update: French translation from fxbenard +* Please also see amr-events upgrade to 3.0.6 + += Version 4.0.15 = +* Fix: categories in imported ics files were not handled properly - effected the css classes. they are now. Thanks to chicagoave for flagging it. +* Add: you can now do in the shortcode, add ignore_query=all to make a totally static widget or list, will not event respond any query parameters - use carefully. + += Version 4.0.14 = +* Fix: If your ics file is imported okay, no update required. This fix is for dusty's ruby rails method of listing DATETIME with timezones and also to accomodate custom x-modifications to a property (ie: ignore them more cleanly!) + += Version 4.0.13 = +* Fixed: it was possible to generate a fatal error when there was no end date / time on an event. + += Version 4.0.12 = +* Fixed: when there are no events, the old pagination was showing and ignoring what had been specified in the shortcode. Also an error due to no 'last event date' being available. +* Fix: adding new list type and pasting a predefined list type at same time caused a minor glitch. Now add, then paste in the list type code. +* Change: for people using amr-events. It was possible to use DTEND (the technical 'ics' end date).in the display of event information single view. For all day events, this looks like one day more. Humans need the end of the previous day (not the start of the next). The template now offers the human friend end date rather to use. THis facilitates this, however you will need soon to be released amr-events 3.0.4. +* Add: for advanced users - more of the functions are now pluggable, especially the ones with icons. see [pluggables](http://icalevents.com/documentation/filters-and-pluggable-functions/) +* Change: move pluggable functions definition later in the wordpress actions so can be more easily overwritten +* Change: tweaked the default box calendar css to stop very wide content (like links) from breaking out of the hover box. +* Change: if system tries to use a list type that has been deleted, will now look for an available one to use. Will give message, but better than dieing. + += Version 4.0.11 = +* Change: A cleanup of the import ics url code - .ics urls that had ampersands in their urls were being handled well when the import function was called. On older php versions they were being encoded with esc_url and not decoded. Now using esc_url_raw which is not supposed to encode html entities. Somehow a decode still seems to be required! +* It has also come to my attention that the php filter_var with FILTER_VALIDATE_URL will not handle internationalised domain names. If this affects anyone, please contact me. +* Fix: A filter function that cleared the large calendar caption was left in when it should not have been. The ability to use the filter 'amr_events_table_caption' is still there should you want to do your own caption text, or not have the caption html. +* Reversal: the month dropdown navigation default got temporarily changed. All was fine either way if you were using show_month_nav in your shortcode. But if you weren't the dropdown as a default for the large calendar got lost between versions. Apologies. + + += Version 4.0.10 = +* Fix: In some date time output, the date time localisation calls were not called so some months/day of weeks were not translating. +* Fix: multi day events with partial days will now show on the partial days too. +* Fix: upcoming widget was not responding to listtype change in advanced input field - will now + += Version 4.0.9 = +* Fix: Changed one line of code made some events look like allday and so appear to lose end time. ! + + += Version 4.0.8 = +* Fix: Delete one line of debug code which showed when there were no events. +* Change: the sanitisation around the admin list types before / after - to use wp functions rather than neat php. + += Version 4.0.7 = +* Revert: one line of code which 'broke' some situations with categories. Reverted. See also http://forum.anmari.com/topic.php?id=179 if you prefer to change manually. + += Version 4.0.6 = +* Add: a simpler google style "look for more" events type link that can be used instead of the complex semi pagination. add show_look_more=1 to the shortcode. +* Add: option to switch off day_of_month_links in the largecalendar. use day_links=0 in the shortcode. +* Update: Updated Italian translation. +* Fix: all day was not being picked up correctly (showed up in multi day all day events) - this applies actually to amr-events too. +* Fix: small calendar days link was not picking up agenda parameter. Also the input form calendar page url was being overwritten by blank default more_url, so only entering more_url would work. Form field should work. + += Version 4.0.5 = +* Add: Italian translation. +* Fix: some translations strings and function calls. +* Add: added filters for 'row html' ie html per event and 'column html' - html per group of event. This allows you to add own fields to all 'columns' - previously could add to content or excerpt using wordpress filters +* Add: added filter 'amr_events_table_caption' for box calendar table caption +* Add: added logic for box calendar caption - if month year drop down navigation shown, then clear the caption as it is redundant (uses the filter mentioned above). +* Add: a weekly horizontal option, and a sample weekly vertical +* Add: a filter 'amr_human_time', removable and pluggable to convert 12:00 am to midnight and 12:00 pm to midday, translateable. +* Change: to default css - add a max image size in event tables, so a big image does not force table too wide. +* Change: to default css - if larger images chosen, try to clear them so they line up else looks funny if text not as tall as large icon. +* Change: to boxcalendar - if no content for pseudo 2nd column, the hover details, then the wrap html is not generated - no empty hover box. + += Version 4.0.4 = +* Fix: large calendar sorting within a day (supposed to be fixed in 4.0.2) was not properly uploaded before. +* Change: only admin can run uninstall, and only from listing screen +* Fix: non-english installs can now also delete list types + += Version 4.0.3 = +* Change: added some more 'text' to the admin area to highlight how to configure a list type. Also added a preview link to the configure screens. + += Version 4.0.2 = +* Fix: the sorting of events within a day in the large calendar got a bit messed by the new sorting for the multi day. Now it sorts as follows: multidays to the top in order of earliest start date. Then all days, then any other events in order of start time. +* Change: little default css tweak for anyone using large images - they are greater than the default theme line height which made the floats in the eventinfo go a bit wonky - cleared now + += Version 4.0.1 = +* Fix: put the upcoming events list widget title back - should not have been messed with. + += Version 4 = +* Add: can now have multi-month calendar listings - like a year view. use months=n in the calendar shortcodes +* Add: better support for multi day in box calendar. Multiday (ie where duration is > 1 day) will now appear on each day box. Css tags are offered so that you can style them creatively (firstday, middledays, lastday). The default css in 2010 based themes shows a solid bar of the events. Please check your theme for padding if you wish a similar effect. +* Add: Import and Export of List types, delete, copy +* Change: NB: some html tweaks and a major css cleanup - PLEASE check all your output after updating, especially if you were using your own css. +* Change: NB: Default settings have also changed. If you did not have your settings saved and were just using defaults, the listings will be a bit different. +* Change: change to way fields are listed for including in the listing templates - they will now be sorted by the column and the order. +* Change: categories from a ics file in an event listing now have links to query the page with the events for just those categories of events +* Fix: Bigger images option will work now +* Fix: if you want your main calendar on the home page, the linking will now use the pageid to tell wordpress to stay on the home page and just pass the other query parameters on so the plugin can use them - else wordpress starts trying to figure out what kind of archive you want! + + += Version 3.10.4 = +* Fix: Additional check added to prevent additional instances in recurring logic. There has to be an initially 1 extra iteration to cope with negative bydays (like -2MO in a month). However a double check is required to ensure that an extra instance is not inadvertently let through. + += Version 3.10.3 = +* Fix: Remove esc-textarea from admin fields - was preventing display of saved option + += Version 3.10.2 = +* Fix: Plugin was catering for multiple EXDATES or RDATES where these occurred on same declaration. It was not catering for multiple EXDATE declarations. It does both now. Thank you to Wilmington Guitars for having the data that helped flush this out and for taking the time to report it well enough for me to fix it quickly. + += Version 3.10.1 = +* Change: If NOT in a widget, then href title on event summary hyperlink will now have excerpt if using amr-events and if excerpt is availble else the word "more info". It used to hover the whole post content. +* Fix: remove htmlspecial chars from output of event summary - mucks up special chars now in latest wp +* Update: French translation files update from fxbenard for both amr-events and amr-ical-events-list + += Version 3.10 = +* Add: A choice of icon sizes 16x16 or 32x32 and many useful additional icons courest of famfam and fatcow. Css sprites and suggested css code is provided for css experts who wish to make their site more efficient and include the css in their theme css. At a later stage thsi will be integrated for less expert users. +* Add: Attachments in ics files are now parsed a bit better. If a url is found, it will be made "clickable". A pluggable function added to allow you to override html produced for your partcular files. Note there can be multiple ATTACH in an ics file. +* Add: made more of the admin text translateable +* Add: allowed for translation of ics file name and description so that you can change them, not just trnslate them +* Add: Added css classes to the box calendar events as per the list events +* Change: exchange WP_SITEURL for get_option('siteurl') - better +* Change: changed translation text domain to plugin name to avoid confusion. Tried to clean up language files, had some problems and do hope I have not lost any translations. With every upgrade there are usually some new strings. +* Fix: the date number was in the sameplace in the html if there were no events. +* Add: the large calendar date number will offer a link to a list view for the day's events if there are events + += Version 3.9.6 = +* Add: made some functions pluggable to allow greater customisation - see plugin website. +* Add: polish translation + += Version 3.9.5 = +* Add: html list style options for html5 on process of being added - more changes to come. +* Change: grouped events will now NEST within a group - they used to just be a kind of heading. HTML and css tweaked so it looks the same. +* Add: aded some html5 styles as a experiment and especially for one of you - ability to have your listHTMLstyle - please be careful. See the example included in the plugin. +* Add: a check for no saved settings. If defaults change from one upgrade to the next and the settingshad not been saved, this could be confusing - people should save their settings. +* Add: added filters to the code to allow folks with very advanced requirements to do very advanced things. New filters so far are: + amr_events_after_sort (after sorting but before limits applied) Passes array of events and must receive one back, + amr_events_after_sort_and_constrain (after sorting but before limits applied) Passes array of events and must receive one back, + amr_event_repeats ( can be used to only generate 'x' number of repeats for an event despite what is in the VEVENT COUNT field) - passes the current count value, must receive an integer back. + amr-ical-feed-events (after extracting events for ics feed, but before producing feed). Note a wp-query pre-getposts-filter could also be used. Passes array of events and must receive one back. + amr-ical-event-url - passes current url and post id, must receive back a url + * Add: added nonbreakingspaces into day and time default formats to help prevent browers wrapping them in the table. + * Delete: Got rid of the # bookmark feature which was cumbersome, cluttered up the html, and I do not think anyone really cared about or even knew it was there. + += Version 3.9.3 = +* Change: per barikso's request, messages output when there is a problem with the external ics file have changed. They are more subtle now (!) with the message on hover, and have a class of error. The class is so that you may choose to hide the messages if you wish. The plugin will deliver cached content if possible so your site will not just look bad should the ics file fail. (I elected to go with a fake hyperlink as depending on the problem with your ics file there may be one or more messages.) +* Change: defaults have been slightly tweaked, so if you had NOT saved your settings, you may see small changes (eg: timezone and refresh now do NOT show by default) +* Change: settings pages restructured and some changes to make it look more like standard wordpress, not a separate look. I dislike plugins that have their own adminlook and style different from wp. +* Fix: replaced some functions deprecated in wp 3.1. +* Fix: grouping logic had an error introduced in last version where last event of a group went into next group rather than previous - fixed. + += Version 3.9.2 = +* Fix: the shortcut of just entering urls without having to say "ics=your url" was lost in a recent update. Sorry! It's back. + += Version 3.9.1 = +* Fix: removed a debug statemennt that displayed in free version +* Fix: default event url should not be mandatory +* Fix: for list type using "lists" not table, and when useses a grouping, the html validation failed due to a missing html tag. This highlighted some minor things in the html that could be cleaned up - and so they have been. + += Version 3.9 = +* Change: Table body and row html slightly re-organised to more sensible structure +* Fix: Cleaned up some hcalendar markup to make it totally valid microformat markup +* Fix: Fixed spacing on new ++ -- pagination options +* Fix: Fixed very specific bug when using numeric bydays (eg: last sunday ) and wanting the small calendar to link to the calendar page, with the 1 day listing. The logic was cutting off the dates generated before the "contract" to the last x. +* Fix: Fixed the ignore_query logic so it ignores what it should and responds to what it should (eg: for calendars, it must still respond to 'start' at least. + += Version 3.8.1 = +* Special interim update for arkanto. Adds a parameter "ignore_query=1" to the widgets or shortcodes parameters. This tells the plugin to NOT respond to any parameters passed via the query string. Please use this only after due consideration and understanding and probably only in the "upcoming events list". This will force the list to be "static" and appear the same no matter whether in a category/tag/author archive or not. If you are using the box calendar or taxonomy widget to link through to a agenda/calendar page, do NOT use this in the calendar page shortcode. + += Version 3.8 = +* Added shortcode parameter "pagination". By default the pagination at the bottom of the calendar list is on. If you add "pagination=0", the pseudo pagination at the bottom of the calendar/list will be switched off. +* Removed unnecessary "pretty print" of the recurring rule. It will not say "Daily every day", it will say Daily. Also it will not say "Daily every 2nd day", it will say "Every second day" - translateable. +* The COUNT limit was being applied too early, most of the time okay, but could give incorrect result in certain circumstances. +* DTSTART (hardly ever displayed - the original start of a recurring series) was being updated by most recent event date. It should always stay as the original DTSTART, distinct from the event date. +* The ical spec oddity where DTEND is one day more than the human thinks it should, cropped up again - fixed. +* Slight change to pagination so that if one has clicked through from a single day in a box calendar, it is easier to "show more days". Please note that using basic html it is entirely possible for you to add your own pagination before or after the calendar or agenda shortcode. +* Fixed a small calendar problem with ics files that had recurring events defined in a timezone (UTC) where the main timezone was something else. Now if you ensure that you consistently use the same timezone in your website, the day links should link to the 'correct' day as the human would expect. + += Version 3.7 = +* Added CURL option to "follow redirection" to not "break" the calendar if your ics host decides to redirect the file. Note: Your ics fetch may be slow if it is following a redirection. +* Timed certain day repeating dates (RDATES) will now show the correct time +* Timed events with excluded dates will now have events on the excluded days excluded. Note: excluded days overwrite RDATES above if the dates and times are the same. This is because it is possible according to the spec to have RRULES and RDATES in same event and one may wish to have an excluded date for the RRULE. So it is possible to have the 3 co-existing, and thus a priority must be assigned. +* The paid version now allows use of featured images / post thumbnails + += Version 3.6 = +* Added code to cope with the php date_modify problem when adding months - it does funny things near the end of month, particularly around months like Feb. Dates like last day of month, last sunday of month, etc should now repeat correctly without skipping February. +* Added additional code in attempt to cope with people whose ics file urls have been "moved" - eg: the ical.me.com files. At the least a message will display to let you know the the ical server has not send the ical file, but a "moved" message. +* Rdates were not parsing if passed in an array - fixed +* Day for calendar was being assigned based on original day and timezone. The day of week can be different if the display timezone is different from the events timezone. Moved the conversion to the display timezone before the day assignment. Do not move too soon as all recurring etc calcs must be done in original timezone, not display timezone. +* all day pretty printing improved - thanks to ben for the suggestions. If the allday field is requested to be displayed, it will show a translated "all day" - you can add your own brackets if you want. If not all day, nothing will be shown. +* added update of danish translation files for the free version. Thank You Georg. + += Version 3.5 = +* Fixed bug in pretty printing of recurrence rule +* Corrected recent bug that prevented correct parsing of recurrence rule +* Removed htmlentities from google map link as google does not want it encoded. + + += Version 3.4 = +* Fixed link bug if you clicked back and forth between agenda and calendar enough, it lost the page_id +* Fixed bug that happened if your server had to have a CURL call (http request did not work). Bug was introduced in 3.3 - Apologies. +* Fixed version numbers around the place + += Version 3.3 = +* Fixed link bug in small calendar widget - missing global variable +* Added links to new support forum +* Reworked some of the remote file fetching logic. It was not working well with some hosts. One could browse to the ics file, but not fetch it remotely. It seemed to work for more hosts now (including facebook), but please let me know asap if you ahve any funnies. + += Version 3.2 = +* Added French translation files +* Minor bug fix for css file copying error (from plugin css to a uploads location for custom css so that it did not get overwritten) - only occurrs on some systems +* Added option to include the 'box calendar' month year navigation in the agenda view. Add show_month_nav=1 (or true) in the shortcode parameters. To avoid unrequested changes for existing users, in agenda view, the month navigation will not show unless you add the parameter. It will show in the calendar view. +* More inline help in the configuration area +* Download link for standard css file to make it quicker for you to edit it. +* Added to css file to attempt to make default css apply to more themes. Since some themes are quiet different this may not always succeed. The css is quite verbose as a result to cater for those who are not so css competent. If you are pedantic about this, please create a custom css and thin it down. + += Version 3.1.1 = +* Some changes to the "add to google" link required for amr-events plugin where there may be html content. +* Also added some additional inline help in the configuration area + += Version 3.1 = +* Feature to switch off title text on event link in upcoming events widget was briefly lost when the small calendar widget was introduced. This fixes that. + += Version 3.0.9 = +* very minor update for people who want greater than one month in agenda view, but still have calendar view (one month). The agenda view in initial mode, still show future dates only (unless modified with offset parameter), calendar view will however show all dates for the current month. IE: calendar view will now perform the same whether you use a [largecalendar] shortcode, or the [events] shortcode + += Version 3.0.8 = +* tweaked default css and month navigation html a bit to accommodate websites with smaller content width for table. +* forced initial large calendar load to months=1, despite shortcode entry. This then allows you to have an 'agenda' view with multiple months but have correct functioning in the calendar box +* fixed generation of ics url. It was not removing page and other parameters from the query string of the url page. We do need to allow for parameters so we can handle ANY taxonomy, category, tag, author view etc and generate corresponding ics feed, but we cannot leave inappropriate ones in as they will mess up the gathering of events for the feed. + += Version 3.0.7 = +* large and small box calendar formats available, and a calendar widget, as well as tab views to integrate with the list view. Default css provided. +* minor bug fix where some query parameters (eg: taxonomies) were not being passed through so taxonomy widget use failed +* update of the Danish translation + += Version 3.0.6 = +* Change to the widget for the amr-events plugin that calls this code. Does not affect free version. +* Fixed some html validation errors in the admin side +* Added some more explanatory text to admin screens to make things clearer I hope + += Version 3.0.5 = +* List type name and internal memo description will now update. Not necessary for front end anyway - purely for admin info. But it was an inexcusable error - the old upercase/lowercase problem! +* Copes with Zimbra Timezones that Zimbra does not say it issues! Will also not fail now it it cannot make sense of the timezone - it will use the sites timezone with comment. +* Also allowed for lowercase mailto (found in Zimbra file) when uppercase was expected + += Version 3.0.4 = +* Fixed css file handling. It will now copy the standard css file to a special css folder in the uploads folder, and then offer you the choice of which css file to use (or of course just use your theme's css). The custom ccs file can be customised without risk of being overwritten by a plugin upgrade. This also means that you can switch back to the default css to see if that works better for your site. +* Some tweaks to the html code generated and to the css +* Some tweaks to the default list type settings - you would have to 'reset' to see these. SAVE your current settings first (ie print the page or screen dump first). +* Allowed for php version with url validation bug. If you have that version or earlier it will NOT validate your urls for you when you enter them. + += Version 3.0.3 = +* Fixed bug in the trim_url function + += Version 3.0.2 = +* Tweaked the list style options a bit to improve the look when there is no css +* Tweaked the css +* Fixed a bug that had crept in - it is now possible to add some html tags before and after fields +* The link text for very long urls is now trimmed if it begins with http:// . This should help if you find your theme css cannot cope with long urls. + += Version 3.0.1 = +* Fixed the version numbers - need to be same in 3 places +* Admin page html/css went a bit wonky - actually the wordpress admin navigation css - the subsubsub usually requires careful handling for the next piece of html. +* The widget was overenthusiatically thinking it needed to get events from posts too. fixed. +* Applied clean url function to the widget event urls - it will now validate +* Removed opacity css for now (invalid css). Better css control will be coming later + += Version 3.0 = +* Fixed a minor bug with dates that did have an end date,but duration was 0. Some php datetime installations did not take kindly to being told to add 0 anything. +* Almost Totally rewrote the recurrence engine - it will now cater for ALL valid recurrence rules +* Woo hoo - hopefully a big improvement in listing options - the start of many more! Please note - they will change again - they need to be 'cleaner' in their html - will be along the same lines though, so have aplay if you wish. +* Caters for all kinds of weird and wonderful timezone ids (in response to [lespaul](http://wordpress.org/support/topic/plugin-amr-ical-events-list-date-time-problem?replies=7). See also [this note] (http://icalevents.com/2613-what-every-developer-ought-to-know-about-timezones-wrt-calendar-files/) + += Version 2.9.5 = +* Will now cope with ics files that have their dates TZID's enclosed in quotes. +* Offers options other than a table for the styling - this will help with themes that do not like tables in their widgets +* Does not issue tabel header html if there is no heading +* Adds a list type (increase your number of list types to 7 to see it) for eventinfo of plugin amr-events +* Finally fixed the extra slashes that kep appearing in the week format string (use wordpress stripslashes_deep). Now you can have Week x ! (use "\W\e\e\k W') + += Version 2.9.4 = +* Some php installs have a datemodify function that issues a warning when passed a 0 (Not on my site, so sorry I did not pick it up!). Calls to the php function, now check first modified to prevent this warning. + += Version 2.9.3 = +* Fixed a very small bug that crept in after hoursoffset was added I think. Offset were not working correctly. +* Last refresh time (displayed on hover of refresh icon was being repeated - fixed. +* Tweaked the summary event url business a bit. If no url and no default event url either, then no link! + += Version 2.9.2 = +* Offers event styling by event categories. IE: if there are categories in the ics file, these will be echoed as classes on the event row. See (styling of events) [http://icalevents.com/2382-styling-of-ical-events/] +* Fix for display bug noticed by [shanafourder] (http://wordpress.org/support/topic/426964?replies=3#post-1610258) where if the ics event spanned 2 days in it's original timezone. (since some ical generators reduce all events to the UTC timezone, since this very possible). In this instance the end date would still be shown even if on conversion to display timezone it was the same day as the start date (normally suppressed). Behaviour has been adjusted so that decision not to show end date is made in the display timezone. +* Update of Danish translation from GeorgWP + += Version 2.9.1 = +* Removed debug statements relating to unreleased new features - should NOT have been in 2.9.1. If you have 2.9, please update to 2.9.1 asap. +* Simplified the css a bit, to let theme styling take more effect - removed the box around "today's" events and removed the alt styling on the rows. If you liked these, then create a custom css in the plugin folder, copy the css from one of the older files. + += Version 2.9 = +* Prompted by [Jillian's request](http://icalevents.com/troubleshooting/comment-page-1/#comment-607), the widget's event summary hyperlink with description text is now optional. Untick the widget's option and it will give you a leaner widget, with no further information on the event, unless of course you add additional fields via the list type settings. +* Fixed a new bug (introduced in last version update - sorry) that shows up with exceptions and modifications. Thanks to Georg for advising. +* Added the hours parameter similar to months in prior version. This is an alternative to days, and months and will override those settings. The startdatetime of the listing will be set to the beginning of the hour for consistency with the other parameters. +* With hours added, the days parameter has been changed to start with time 00:00:00 (days used to be 24 hours starting from now). They will now be clean days, and so the events from earlier in the day will show as history. If you wish to stay with only current or future events, then enter the appropriate number of hours (ie: days*24). This allows [polyfade and Jaguwar](http://wordpress.org/support/topic/396038) to have their one day calendars (use days=1). + += Version 2.8 = +* Fixed warning html (missing a closing tag) when the url is unavailable and there is still a cached file available. +* Tweaked the code in the cacheing area to handle upload folder specs better (I hope). +* Added a months parameter. Number of months requested will override number of days and the start will be set to the beginning of the month. +* Added monthsoffset parameter. This allows you to go back in time by months instead of days. Useful for pagination which is coming soon. +* Changed the html around the calendar property images so that it worked better when no images are displayed. Changed the css file too. Previous is still there as icallist271.css +* Made some criteria code changes anticipating integration with custom event post type plugin coming soon. +* Added option to not use the little icon images and just have plain link text. THis would allow you to use custom css and text / image replacement techniques for your own images. + += Version 2.7.1 = +* Added some exception handling to cope slightly more gracefully with any "bad" dates in the ics file. +* At [Alec's request] (http://icalevents.com/troubleshooting/comment-page-1/#comment-581) titles have been added to the little images. There were already titles on the hyperlinks and alt on the images. Html has been revalidated. +* Fixed a bug that occurred if you had one timezone in your wp and another in the ics file events and had recurring entries that went over a daylight saving change in the files. Recurring events will now have their repeats generated in the original timezone and then converted to the display timezone, not the other way around. +* Updated the default css, so that text will align at the top of the table cells in the new twentyten default theme. + += Version 2.7 = +* A bug fix for all day recurring events that have had a instance modified. On the day of the modified instance, the plugin was showing original details, not the modified details, It will now include the modified instance and thus reject the old instance. +* Revised Admin interface - the old interface was getting very slooooow. So it has been broken into multiple pages and some javascript hide/show logic to reduce the volume of data on the screen. It may need a bit more tweaking later. It still stores everything in the same one large option to avoid upgrade issues. +* Moved admin styling to an enqueued file rather than in code. +* Use of debug parameter will switch on all warnings and notices - this may show up warnings and notices for other plugins and/or wordpress too - Do not panic! +* Default number of days increased - affects new install only. + += Version 2.6.12 = +* A bug fix for yearly anniversaries at end of year. On php versions less than 5.2.5 the date_modify function does not cope as well as later versions with a blank duration. An error in the duration calc caused a blank duration for events repeating at end of year. + += Version 2.6.11 = +* A bug fix for those who experienced date_modify unexpected character errors when using negative date or hour offsets. The problem was not occuring on my site, so hard to verify that these changes will fix it, however I did find some code that although behaving itself on my sites, could conceivable cause a problem elsewhere. Also cleaned up a few minor 'notices' that appeared when all levels of php messages were switched on. + += Version 2.6.10 = +* Allowed for recurring event rules with numeric "BYDAYS" positive and negative. See [examples](http://icalevents.com/2162-ical-positive-and-negative-numeric-bydays-now-implemented/) +* Removed css styling for feeds as this was breaking some feeds and is not necessary for most people. I tried many other ways (filtser and rss actions), but have not yet found an acceptable way to include the stylesheet for those few who may have calendars in your posts. +* changed the bookmark name anchors to id's for html 5 validation +* changed specific group id's to classes since if you have multiple calendars on one page with same grouping, this would fail html validation +* ensure that whitespace was properly handled for the "add to google calendar" option for HTML5 Conformance. + += Version 2.6.9 = +* Fixed Bug where new install need not get the default options for the widget. Plugin had anticipated upgrades to a certain extent, but not a totally clean install. +* Also did quick check through on wordpress 3.0 beta on shortcode and wigget - all seems fine. Also checked it out on the new default wordpress theme twentyten - no problems there either (eg: in old default we had css problems due to li styling) + += Version 2.6.8 = +* Fixed floating time creation problem recently introduced - it was creating in UTC timezone (and then converted to wordpress install timezone), when they should be created directly in the wordpress or plugin requested timezone. See [floating times](http://icalevents.com/2064-ical-local-or-floating-date-times/) for commentary. +* Fixed bug where multiple changes to single instances within a recurring entry where not always handled correctly +* Changed widget handling to use the multi instance widget API. This means that you must at least be using wordpress 2.8. +* Widget option setting is now simplified and follows the shortcode syntax. So now anything you can do in the page or post with a shortcode, you can now also do in a widget. I have attempted to convert your prior settings to the new setup. PLEASE check your widget is doing what you expect it to after the upgrade if you had made any special changes. Note the widget defaults are still events=5, days=30, and listtype=4. These do not have to be specified if you are happy with them. See the shortcode usage section on the plugin webste front page. +* Because of the change to allow multi-instance widgets, the provided css example now uses classes instead of id's to allow generic css for multiple widget instances. You can still isolate individual event lists if you wish as the unique id's are still provided in the code. The previous css file is still there if you wish to use that rather. + + += Version 2.6.7 = +* Fixed end time on non repeating events that did not have durations. (Bug introduced when making recent other fixes, so is not in earlier versions.) +* Fixed some hmtl validation errors that had crept into the admin settings page. +* Fixed some link cliakability errors found: Replaced the custom preg replace strings with the wordpress function make_clickable as it now copes with more urls. Note the eccentric holidays calendar on googel is a great one to test this with. +* Added a link from the settings page to a webpage explaining the date localisation options added. + += Version 2.6.6 = +* Minor code change to do with modifications of singles instances within recurring series, with timezones. This bug only occured in certain setups on certain servers and rather weirdly did not occur on preview, but only on publish. + += Version 2.6.5 = +* Change cache logic so that if the remote ics url is unavailable, then the local cached file will be used if it exists. The viewer is told the date and time of the last cache. +* Tightened up some of the repeating logic +* Fixed exceptions bugs where date modifications where not accurately treated. It will now cope with event where an instance could be shifted either in/out of the current date range. Added &debugexc to debug exceptions. +* Wrote own version of wordpress date localisation date_i18n function. The wp function requires the dates to be converted back to UNIX. My version uses the same logic but stays with the DateTime object. This seems to give more consistent results when there are multiple timezones involved. +* Added option to use either date localisation functions or to use none (eg; if your blog is in English). +* It will default to no date localisation for english blogs and the amr function for non english. +* Fixed bug where it lost/forgot to list the css file after upgrade or on initial install. +* Added a jump to list type in the config menu for newbies who don't realise they should scroll sideways to see the list. They are sideways so one can compare settings. +* fixed minor bug to do with adding refresh query arguments on permalink sites. +* Added code to deal with Mozilla Thunderbird issuing X-MOZ-GENERATION, instead of SEQUENCE for recurring entry instance modifications. +* Added information on the last modification made in the ical file as sometimes for example google is slow is sending out the updated file. IE: one sees the update on google, but on cache refresh, google send the previous version of the file. This "last modified" information will be displayed after the "cache time" on the refresh button title text. + += Version 2.6.4 = +* A further tweak on using the wordpress date_i18n function with and without timezones - using parameter gmt=false. I was not experiencing any problems on my server, however suspects that some whose server time is different from their wordpress time, may find this sorts out their problem. Please check the settings page to see what the plugin say's the current time ins, and then further down what the various formaats display the time as to make sure the plugin is working well with your system. +* Added more debug statements for use in assisting with other people's setups. (Note can use &tzdebug in your calendar page url to only get timezone related debug statements.) +* Fixed situtaion where another css file placed in the plugin directory was nt actually goingto be used! Thanks Matt for pointing that out. +* Some language updates - more to come. + += Version 2.6.3 = +* Well now, having spent a large part of the holiday getting down to the nuts and bolts of what needs to happen for complicated timezone situations and localisations - I think it is sorted out now Re 2.9 Don't upgrade yet if you haven't - wait for 2.9.1, or if you have upgraded go to 2.9.1 beta 1. I am not sure about 2.9. It seemed to be that when I tested with a plain gmt offset setup in 2.9, things were a bit strange. So all testing has been done in 2.9.1 beta. See also this 2.9.1 fix note http://core.trac.wordpress.org/ticket/11558 + += Version 2.6.2 = +* WARNING: change date and time formats to use wordpress's date_i18n (again) to get better localisation. If you want the date_i18n functrion to be used to localise your dates and times, then DO NOT use the strftime formats. Strftime formats can be used - they will not be pased to date_i18n. See the date formats at http://www.php.net/manual/en/function.date.php. So even though php says strftime localises, in wordpress it does not, but the other will! +* Changed use of foreach ($arr as &$value) to modify the array as it seems some folks get a syntax error there, even though http://php.net/manual/en/control-structures.foreach.php says you can do it. Other googling says the implementations may be inconsistent, so thos construct has been avoided. + += Version 2.6.1 = +* Additional shortcode or url parameters added to allow the time offset to be specified in hours. Previously could do in days only (positive or negative - ie forward or back in time). Use hoursoffset=n (plus or minus). +* Date/time and Css logic added so that events in "progress" will be flagged with a class of "inprogress", else "history" for completed passed events or "future" for events not started. +* The setting of the start time to the beginning of the current day has been removed - it will now set to the current time. This means that only in progress or future events will show in a default setup. If you wish to show events that have just passed, then use a negative hours offset. +* For those who like to play around with the options without going back to admin options, you can do quite a bt through a URL or in the shortcode. A recent addition is grouping=txt, where text is on of the allowed groupings as seen in the settings. EG: Day, Month, Year, Quarter, Astronomical Season, Traditional Season, Western Zodiac. + += Version 2.6 = +* See (http://icalevents.com/1901-widgets-calendar-pages-and-event-urls/) Event summaries/ titles in the widget will jump to the event detail in a calendar page if + * the calendar page has been specified in the widget + * the calendar page is using the same ics file as the widget (duh!) + * there is no event URL for that event in the ics file. Google for example does not allow one to define a event URL. +* Additional css file provided which includes css to hide the description if displayed in widget, and then to display the description when hovering over the event. See (http://icalevents.com/1908-hovers-lightboxes-or-clever-css/) +* Fixed typos affecting language domain + += Version 2.5.11 = +* Coped with weird tzid path spec that some ical generators seem to introduce. Ical Spec is not clear, but it probably should not be there. +* Changed startdate day to start 1 second after midnight to avoid isolated all day events from the previous day +* Tweaked css so that historical events on "today" are styled like "history", not like "today" +* Changed action when no events are listed - message becomes a "info" link - if you hover over it, then the parameters are shown. +* Added some additional error trapping for those who have problems with their server setup. + += Version 2.5.10 = +* Fixed a widget bug that got introduced somewhere down the track where the widget list type was not properly being deduced. Thanks to Gary for identifying that the widget list type format was not being used. +* Also tweaked the default widget cssa little so that grouping headings would float to the left for widgets only, in case one wanted to group within the widget (default is not to group). + += Version 2.5.9 = +* Added pseudo clone function for people not on later versions of php, to mimic the clone command ( as per http://acko.net/blog/php-clone) so they won't get a parse error, but will later get told they need a better version of php! + += Version 2.5.8 = +* Changed the call to php get_headers (to check if remoteurl exists) to the wordpress wp_remote_get so that people with servers which do not allow remote url open will not get errors. +* Changed default css (previous css included as an option, in casae you prefered it - NB you must change name to avoid it getting overwritten later). The default css had some non functioning css where event times were meant to float up next to date, but were not. +* Default css now uses opacity to "grey out" events in the past, rather than the same background colour as the 'alt'. The background had confused people as they thought there was some kind of alt error. +Note an event is styled as "history" if it has started already, although it may not be finished yet. historical dates only show if either they were earlier on the current day (all events on current day are shown by default) OR a startoffset has been specified. + += Version 2.5.7 = +* Added multi-url support back into the widget and expanded the field a bit to give more space. NOte: separate url's with commas. +* Added more validation around the input there. +* Tweaked the default css for the widget slightly to remove any theme related padding or margin's on the table and just use the list item spacing - should give a more consistent look with other widgets + += Version 2.5.6 = +* Fixed bug where although corrected end date to (end date -1) - spec says all days ends on next day at 00:00:00 for single all days, it was not doing it for multi - days -resulting in an extra day +* Adjusted code to ensure that an "already started" multi day event is still listed if it has not finished before current day. (Note: you can also use startoffset=-n where n is an integer to force the start of the list back a few days.) +* Attempted to correct for ics generators that do not follow the all day logic as noted [here] (http://www.innerjoin.org/iCalendar/all-day-events.html). The php "WebCalendar" is at fault here too. Unfortunately one can only correct for single day all day events. For multi day, it is not possible to know whether a 2 day event was intended or not, or whether it is a correct implementation of the logic. Take it up with whoever is generating your ics file is this is a problem for you. +* Changed css tags slighty to offer hcalendar microformat support: +* - basically the fields that had come direct from the ics file were in the original uppercase (eg SUMMARY) however hcalendar says the classes should all be lowercase. +* - removed the duplication of some classes from - they are on the . THis was breaking hcalendar. +* - The matching css file has been checked - if you had your own css, you may need to check whether you need an adjustment. +* - added url css tag for hcalendar support. + += Version 2.5.5 = +* Fixed bug where check for ical all day, but single day (shows up as day1 start, day 2 end) caused a problem with other dall day, but multi day - we lost the end date! + += Version 2.5.4 = +* Added warnings about needing to use shortcodes only - replace the ":" with a space in your caledar page if you have not already done so. + += Version 2.5.3 = +* Made changes to cache folder creation due to possible errors experienced with people on shared servers with php safe mode enabled. If you have problems, add ?debug or &debug to your events page url and refresh. The debug messages may tell what you the problem is with your server. +* fixed problem that had crept in that meant the debug option of a url by query string was not working +* changed days default to 90, not 30 as many folks just wanting widget do not look at config settings, just widget settings. + += Version 2.5.2 = +* Really fixed widget timezone now - it was going back to server timezone even though it had worked out the wordpress timezone - problem with bad choice of shortcode default! + += Version 2.5.1 = +* Fixed bug: Code was added to handle keeping your settings while adding new features and field options. This temporarily showed your updates, but then on next view of config page, the settings were back to default. The recursive merge of old and new settings was defaulting the wrong way. Looks like it is fixed on my system. Please let me know asap if anyone still experiences problems. + += Version 2.5 = +* Timezone bug corrected - should now pickup timezone correctly - Order of global timezone priority for display of events is 1 query url, 2 shortcode, 3 the wordpress timezone or offset. +* fixed widget parameter funny - (note cannot override widget from query line, only calendar page can be overridden.) +* added css to float widget calendar properties (icons) to the right, in case someone does want to show them on the widget. (Set this up in the config). + += Version 2.4.2 = +* Timezone in shortcode now possible. +* Removed attempt to copy icallist.css to a custom css for local edit as that was hitting folder protection issues and confusing people - will rethink that, meantime you can drop your own copy file into the plugin directory if you wish, and the plugin will pick it up in the admin screen as an option. + += Version 2.4.1 = +* Timezone fix - should get wordpress timezone correctly now, not server timezone. + += Version 2.4 = +* **** NB Dropped the outdated filter method for specifying the spec as pre-warned. Now only using the wordpress shortcode. This is a simple update to your calendar page. Use [iCal yoururl listtype=1] *** +* fixed a bug which occured with recurring entries that were defined by COUNT +* fixed a bug which occured when a single instance of a recurring series was modified. +* added more css classes at row level as well as the first column. First column is usually the date column, so now can just style the dates differently or the whole event or todo record. You can style entries in many ways (eg style recurring entries differently, as well as by the status. For possible status values - see http://www.kanzaki.com/docs/ical/status.html. +You can style by the component type (vevent, vtodo, vjournal, valarm) +* added css classes so that you can style past, today and future events differently += Version 2.3.8 = +* added some more language information and files, cleaned up some of the translation. +* Some people are experiencing timezone problems - this appears to be caused by the use of wordpress's date i18n to localise the formats. Reverting to original code seems to remove the problem. [Setting the server timezone may also correct the problem] (http://webdesign.anmari.com/timezones-wordpress-ical-php/) Since correct dates are more important than correct formats, I have reversed the code, until there is more clarity on what date_i18n is doing and how to get timezone correct times using it. If you needed it for your web, you can stay with the previous version or uncomment line 936 and comment out line 935 in amr-ical-events-list.php and then check times very carefully! + += Version 2.3.7 = +* changed use of htmentities to htmlspecialchars - avoided probledm with dashes in event subjects. +* added more explanatory text in readme + += Version 2.3.7 = +* changed to use wordpress date_i18n for date and time, to achieve localised dates +* cleaned up some text and added some rudimentary language files for German, Afrikaans, +* use wordpress check for cache directory creation +* reset now resets global options too, and few other minor rest problems fixed +* default list types tweaked a bit - reset to see changes, but note you will lose your settings then + += Version 2.3.5.3 = +* added checks for php version and datetime class for people who cannot read doco, or comments! +* added ability to define a Default Event URL in the event that there is not one in the ics file. Plugin will generate a dummy bookmark, with info cursor style and event description as hoevr text/title. the dummy bookmark is stop page reloading and make link non-active. + += Version 2.3.5.2 = +* fixed bug to do with combinations of timezone non specification and date values. +* fixed some html validation bugs due to entities etc for sophisticated html in adding google event - google sort of half way handles html! +* added a numbered css class hook amrcol'n' to the td and th cells so that you can style the columns independently (eg: by width) +* the css included now has the first column styled at a width of 20% +* Please move to shortcode usage if you have not already, as I will eventually phase out the older mechanism. + + += Version 2.3.5.1 = +* fixed bug where if the start of the recurring was way way back in the past and the number of recurences in the limit did not get the recurrence date to the start date, then the instance was skipped. Now is a parameter that allows 5000 recurrences - that should be plenty? We could get clever about this later. +* Allow DTSTART to be shown - eg: for birthdays if you really want to tell the world, or maybe to indicate how long a show has been running? +* Age (or for a how "Running since.." is in option list, but not listed for now....coming soon +* Changed http to webcal at Brendan's suggestion - to subscribe rather than download. Let me know if we should offer both. +* Move location of cache file to the uploads folder. This made more sense to me. Note that your uploads folder should be a relative url as per the example given. Wordpress seems to wokr with an absolute url however this will cause problems if you ever having to move your blog, so follow the default shown and go relative. eg: to move up - "..\uploads". + += Version 2.3.4 = +* Added Default Css to cater for themes that use list-style definitions such as background and before content. We need to switch these off for the plugin code to look okay. Once can of course also just edit the theme's stylesheet, but this may be easier for some. Thanks to Jan for querying the problem. +* Will handle shortcode usage now ie: [iCal "youricsurl1" "youricsurl2" listype="timetable"] + += Version 2.3.3 = +* Changed the user access level to 8, so only admin can do setting changes, not editor, previous version allowed editor to change settings. +* Fixed bug where the relocated refresh icon did not actually refresh if you had no "?" in the url. Also allow 'refresh=true' instead of 'nocache'. +* Changed form security to use new 2.7 wordpress "nonce" functions. This prevents cross scripting in a stronger way than before. +* added an uninstall option which will delete the option entries, either by request from the settings or when the plugin files are deleted (if using wordpress 2.7). Note the reset button will delete and recreate the default Amr iCal options in one go. The uninstall is added for completeness and for your use if you no longer need the plugin. +* Made settings menu entry look prettier - tightened up the text and added calendar icon +* "Bling" classes for the link icons added so that canbe not displayed when printing. A print stylesheet has also been added to achieve this. +* Added alt text on the settings icon in the admin menu to ensure that the admin page still validates 100% with html - on my code anyway. +* Added option to specify own css rather than automarically loading ical css. You should ensure that the necessary css is in your theme stylesheet then. This allows you to make your pages more efficient by reducing the number of files required to load. +* An settings "RESET" will now also reset widget settings, not just the main settings. Remeber to save any special settings if you do this. A reset may be necessary if you have an old version and want to take advantage of new options and defaults. +* Removed the line breaks for the widget event summary 'titles' that appear when you hover on the summary. This looks better and does not require any javascript. +* Clarified the widget calendar page option and attempted to default it to what you might have called your calendar. You may need to reset to see this happen. + += Version 2.3.2 = +* Fixed bug if there was a url for the event. (The url is entered as a hyperlink behind the summary text). Thanks to Ron Blaisdell for finding this. Currently in google one cannot setup a URL for a event. +* Removed testmode comment when iCal url passed in query string, allow possibble "API" use. +* Straight after importing events in the timezones specified by the ical file, they will be converted to the timezone of the wordpress installation. THis ensures that "same day" and "until" functions. +* Plugin will determine a default php timezone from the wordpress gmt offset if the automatic timezone plugin has not been installed. +* If the wordpress timezone is different from the calendar timezone, one can click on the timezone icon and refresh the page in the calendar's timezone. +* Set the defalt start time to the beginning of the day that the wordpress timezone is in, so that we +can also see events that might have just started. +* Changed the refresh link to be next to the other calendar property icons and put the last cached time in the alt text and title rather than at bottom of calendar. Also fixed how it reflected time relative to the server timezone. +* In the "Add event to google", improved handling of complex details - google only handles simple html. Note: bad calendar content can still break google (for example the valentines day entry has an errant "/") + += Version 2.3.1 = +* Changed some error detection and reporting to improve user experience - moved many messages to comments if no data or bad url entered +* Fixed the way the widget was interacting with the main plugin +* Corrected an error that was visible when the calendar timezone and the wordpress timezone were different. This showed up on single events only as google offers a UTC date, not a TZ date and the plugin was not dealing with this correctly. Plugin will work now if wordpress timezone and calendar timezone are the same. More work is required though to make it more robust and cater for different situations - coming soon. + + += Version 2.3 = +* Simplified css styling by deciding that a list of events was essentially a table and going back to the table html - this avoids problems with many less robust themes. +* Css file spec changed to one at global level (Icallist.ccs) If the file does not exist, it will assume that you have included the necessary styling in your theme stylesheet. +* Added icons to allow for clean look, while still having functionality of options. + + += Version 2.2 alpha = +* Removes duplicated events that may be generated by your ical generator. For example if one instance of a recurring event is edited. Implementing the recurring rule generates an event instance that matches another event in the file. They will have the same UID and date, but a different Sequence ID. +* Improved the imezone and date handling uses PHP 5 dateTime class and timezone object functionality. Somewhat tested - again good test situations are required - around daylightsaving time is really interesting. +* column headings not in use yet (but enterable) - need to convert to table output - coming soon I hope. +* calendar Subscribe link available if 'icsurl' requested in the settings for a list type. +* can test by passing iCal=url:listtype=n in the query string of any wordpress page - the page content will be ignored. +* css changed slightly - more testing required for impact on different themes. +* removed the

                      added to make wp validate - not required anymore in latest version of wordpress ? +* allows for other ical components such as todo lists, journals and freebusy (maybe for use as availability!) - this has been slightly tested, not up to my usual standard. Good test files are required. If you have a need for this and think there is an error, please send me your files or links to your public files. It uses the same logic as the event, so differences may just be a question of layout and style. +* improved conversion of urls to hyperlinks in long text fields like description - will now handle all sorts of links including bookmarks. I had a bit of fun (not) dealing with
                      after urls! +* changed some defaults - simplified - commented out some that are unlikley to be used. +* allows for repeatable properties - in theory one could have multiple summary fields for one event etc. +* Todo: implement more complex recurring rules, more thorough testing, some user documentation and ideas, simplify the css. + += Version 2.1 = +* datetime formats, name and css file now update and save in admin menu- no need to go to config file; +* deleted ridiculous grouping option solar term!! +* added code for grouping options that people may actually want to use (Seasons, astronomical etc). [Seasons on wikipedia] (http://en.wikipedia.org/wiki/Season#Reckoning) +* Zodiac grouping added just for the fun of it [Zodiac] (http://en.wikipedia.org/wiki/Zodiac) +* Quarter grouping added - change dates in the config file if fiscal or tax groupings required. + += Version 2.01 = +* added check for existance of validation function filter_var (introduced in 5.2). No/Limited validation in admin if it does not exist. Ask your host to update. +* changed css to specify width for first col so that all rows look the same +* switched timezone fields on by default in listtype 1. + += Version 2 = +* repeating events, no table all nested lists, lots of configuration options. + += Version 1 = +* Listed events without repeats into a table with nested lists. It allowed for a monthly break, a config file and had a default css file + += Version 0 = + + +== Screenshots == + +1. Screenshot with monthly grouping and "add to", timezone and subscribe to icons +2. Widget screenshot in Golden Essence Theme - description shows on hover of summary +3. Three Column calendar list +4. Freebusy in widget - shows non availability. This example has weekly grouping. +5. Part of Admin screen showing options for a list type - multiple list types are provided for. +6. Part of admin screen showing how one can select the ical components and derieved pseudo components +7. Widget Admin screen, showing Title, No of events, List Type from plugin (default = 4 for widget), provision for multiple URL's, and link to calendar page. the calendar page lin is inserted behind the title. +8. iCal Specification on the page that you wish the calendar/'s to appear. +9. With locale set to German, showing german days of week, in Sandbox theme. +10. Just for fun - Multiple Groupings (unstyled here, but with styling tags, so imagine what you could do ) + +== Meta == +Category: events +Language: en-EN diff --git a/wp-content/plugins/amr-ical-events-list/uninstall.php b/wp-content/plugins/amr-ical-events-list/uninstall.php new file mode 100644 index 0000000..3303a03 --- /dev/null +++ b/wp-content/plugins/amr-ical-events-list/uninstall.php @@ -0,0 +1,34 @@ +$f) { + unlink($f); + } +} +rmdir($dir_to_delete); + +/* echo '

                      '.__('Css files may also exist. They and the css folder have not been deleted as they have been shared with other plugins.', 'amr-ical-events-list').'

                      '; +$cssdir = $upload_dir . '/css/' ; + +*/ diff --git a/wp-content/plugins/amr-shortcode-any-widget/amr-admin-form-html.php b/wp-content/plugins/amr-shortcode-any-widget/amr-admin-form-html.php new file mode 100644 index 0000000..815041b --- /dev/null +++ b/wp-content/plugins/amr-shortcode-any-widget/amr-admin-form-html.php @@ -0,0 +1,246 @@ +longname, $this->shortname, $this->accesslvl, $this->hook, array(&$this,'config_page')); + } + + function plugin_options_url() { + return admin_url( 'options-general.php?page='.$this->hook ); + } + + function admin_heading($title) { + echo '
                      +

                      +
                      +

                      '.$title.'

                      '; + //
                      '; + // wp_nonce_field($this->hook); /* outputs hidden field */ + // ; + } + + function admin_subheading($title) { + echo '

                      '.$title.'

                      '; + } + + function config_page() { + $this->admin_heading($this->longname); + $this->where_shortcode(); + + echo '

                      Help:

                      '; + echo '

                      More detailed instructions at the wordpress plugin installation and faq pages.

                      '; + echo '
                        '; + echo '
                      1. '; + _e('Test your widget in a normal sidebar first.', 'amr-shortcode-any-widget'); + echo ' '; + _e('Go to widgets', 'amr-shortcode-any-widget'); + echo ''; + echo '
                      2. '; + _e('Drag the widgets you want to use to the shortcodes sidebar.', 'amr-shortcode-any-widget'); + echo '
                      3. '; + echo '
                      4. '; + _e('Add a do_widget or do_widget_area shortcode to a page.', 'amr-shortcode-any-widget'); + echo ' '; + _e('Create a page with example do_widget shortcode', 'amr-shortcode-any-widget'); + echo ''; + echo '
                      5. '; + echo '
                      '; + + + echo '

                      '; + _e('To add a single widget to a page', 'amr-shortcode-any-widget'); + echo '

                      '; + echo '
                        '; + echo '
                      • '; + _e('Add the shortcode [do_widget widgetname] to a page:', 'amr-shortcode-any-widget'); + echo '
                      • '; + echo '
                      • '; + echo '
                      • '; + echo '[do_widget categories] or [do_widget name=categories] '; + echo '
                      • '; + echo '
                      • '; + _e('[do_widget "tag cloud"] or [do_widget id=widgetid]', 'amr-shortcode-any-widget'); + echo '
                      • '; + echo '
                      • '; + echo 'To see a list of your widgets in their sidebars, add ?do_widget_debug to the url of page with the do_widget shortcode.'; + echo '
                      • '; + echo '
                      '; + + echo '
                      '; + echo '

                      '; + _e('More advanced options:','amr-shortcode-any-widget'); + echo '

                      '; + echo '
                      • '; + echo 'Use title=false to hide a widget title. '; + echo '
                      • '; + echo '
                      • '; + echo '[do_widget pages title=false] will hide the widget title'; + echo '
                      '; + echo '

                      '; + _e('To change the style, change the html:','amr-shortcode-any-widget'); + echo '

                      '; + echo '
                        '; + + echo '
                      • '; + echo 'Use title=somehtmltag and wrap=somehtmltag to change the html used. This may change how your theme\'s css affects the widget when it is in page. It all depends what what html selectors your theme uses.'; + echo '
                      • '; + echo '
                      • '; + echo ' Use class=yourclassname to add a class - maybe to override your themes widget styling? Obviously you must have css that applies to that class.'; + echo '
                      • '; + + echo '
                      • '; + echo '[do_widget pages title=h3] give the title a heading 3 html tag.'; + echo '
                      • '; + echo '
                      • '; + echo '[do_widget "tag cloud" wrap=aside] will wrap the widget in an "aside" html tag.'; + echo '
                      • '; + + echo '
                      '; + + echo '

                      '; + echo "Valid title html tags are :

                        "; + echo '
                      • h1
                      • '; + echo '
                      • h2
                      • '; + echo '
                      • h3
                      • '; + echo '
                      • h4
                      • '; + echo '
                      • h5
                      • '; + echo '
                      • header
                      • '; + echo '
                      • strong
                      • '; + echo '
                      • em
                      • '; + echo '
                      '; + + echo "

                      Valid html wrap tags are :

                        "; + echo '
                      • div
                      • '; + echo '
                      • p
                      • '; + echo '
                      • aside
                      • '; + echo '
                      • section
                      • '; + echo '
                      '; + + echo '

                      '; + _e('To add multiple instances of the same widget:', 'amr-shortcode-any-widget'); + + echo '

                      '; + echo '
                        '; + echo '
                      • '; + echo '[do_widget id=widgetid1] [do_widget id=widgetid2]'; + echo '
                      • '; + echo '
                      '; + + echo '

                      '; + _e('To add a widget area - all widgets in the widget area:', 'amr-shortcode-any-widget'); + + echo '

                      '; + echo ''; + echo '
                      '; + + + } + + function plugin_support() { + $content = '

                      '.__('If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the','amr-shortcode-any-widget').' '.__("Support forums",'amr-shortcode-any-widget').'.

                      '; + $this->postbox($this->hook.'support', 'Need support?', $content); + } + + function text_limit( $text, $limit, $finish = ' […]') { + if( strlen( $text ) > $limit ) { + $text = substr( $text, 0, $limit ); + $text = substr( $text, 0, - ( strlen( strrchr( $text,' ') ) ) ); + $text .= $finish; + } + return $text; + } + + function where_shortcode() { + global $wpdb; + //$pattern = get_shortcode_regex(array('do_widget')); + + echo '

                      '.__('This site is using do_widget shortcodes in the following:','amr-shortcode-any-widget').'

                      '; + $results = array(); + $query = "SELECT * FROM $wpdb->posts WHERE post_status IN ( 'publish', 'future') and post_content LIKE '%[do_widget%]%' ORDER BY post_date DESC;" ; + //$query = "SELECT * FROM $wpdb->posts WHERE post_status IN ( 'publish', 'future') and post_content REGEXP '".$pattern."' ORDER BY post_date DESC;" ; + $results = $wpdb->get_results($query); + + echo ''; + foreach($results as $i => $result) { + echo ''; + + } + echo '
                      '; + _e('Post'); + echo ''; + _e('Published'); + echo ''; + _e('Shortcodes'); + echo '
                      '; + edit_post_link($result->post_title.' ',' ',' ',$result->ID); + echo ''.substr($result->post_date,0,11); + if (!($result->post_status == 'publish')) _e($result->post_status); + echo ''; + + preg_match_all("^\[(.*)\]^",$result->post_content,$matches, PREG_PATTERN_ORDER); + + foreach ($matches[0] as $j=> $m) { + if (!empty($matches[1][$j])) { + + echo $m; + echo '
                      '; + } + }; + echo '
                      '; + + + } + + + + } +} + diff --git a/wp-content/plugins/amr-shortcode-any-widget/amr-shortcode-any-widget.php b/wp-content/plugins/amr-shortcode-any-widget/amr-shortcode-any-widget.php new file mode 100644 index 0000000..a639f48 --- /dev/null +++ b/wp-content/plugins/amr-shortcode-any-widget/amr-shortcode-any-widget.php @@ -0,0 +1,400 @@ +FAQ. +Author: anmari +Version: 3.7 +Author URI: http://webdesign.anmari.com + +*/ + + +add_action('in_widget_form', 'amr_spice_get_widget_id'); +function amr_spice_get_widget_id($widget_instance) { + echo "

                      To use as shortcode with id: "; + if ($widget_instance->number=="__i__"){ + echo "Save the widget first!

                      " ; + } else { + echo "[do_widget id=".$widget_instance->id. "]

                      "; + } +} + +function amr_remove_widget_class($params) { // remove the widget classes + if (!empty($params[0]['before_widget'])) { + $params[0]['before_widget'] = + str_replace ('"widget ','"',$params[0]['before_widget']); + } + + if (!empty($params[0]['before_title'])) { + + $params[0]['before_title'] = + $params[0]['before_title'] = str_replace ('widget-title','',$params[0]['before_title']); + + } + + return ($params); +} + +function amr_do_widget_area($atts) { + +global $wp_registered_widgets, $_wp_sidebars_widgets, $wp_registered_sidebars; + + extract(shortcode_atts(array( + 'widget_area' => 'widgets_for_shortcodes', + 'class' => 'amr-widget-area', /* the widget class is picked up automatically. If we want to add an additional class at the wrap level to try to match a theme, use this */ + 'widget_area_class' => '', /* option to disassociate from themes widget styling use =none*/ + 'widget_classes' => '' /* option to disassociate from themes widget styling */ + + ), $atts)); + + if (!empty($atts)) { + if (($widget_area == 'widgets_for_shortcodes' ) and !empty($atts[0])) + $widget_area = $atts[0]; + } + + if (empty ($wp_registered_sidebars[$widget_area])) { + echo '
                      Widget area "'.$widget_area.'" not found. Registered widget areas (sidebars) are:
                      '; + foreach ($wp_registered_sidebars as $area=> $sidebar) echo $area.'
                      '; + } + //if (isset($_REQUEST['do_widget_debug']) and current_user_can('administrator')) var_dump( $wp_registered_sidebars); /**/ + + if ($widget_area_class=='none') + $class = ''; + else { + + if (!empty($widget_area_class)) //2014 08 + $class .= 'class="'.$class.' '.$widget_area_class.'"'; + else + $class = 'class="'.$class.'"'; + } + + if (!empty($widget_classes) and ($widget_classes=='none')) + add_filter('dynamic_sidebar_params','amr_remove_widget_class'); + + ob_start(); /* catch the echo output, so we can control where it appears in the text */ + dynamic_sidebar($widget_area); + $output = ob_get_clean(); + remove_filter('dynamic_sidebar_params','amr_remove_widget_class'); + + $output = PHP_EOL.'
                      ' + .$output + .'
                      '.PHP_EOL; + +return ($output); +} + +function amr_do_widget($atts) { + +global $wp_registered_widgets, $_wp_sidebars_widgets, $wp_registered_sidebars; + +/* check if the widget is in the shortcode x sidebar if not , just use generic, +if it is in, then get the instance data and use that */ + + if (is_admin()) {return '';} // eg in case someone decides to apply content filters when apost is saved, and not all widget stuff is there. + extract(shortcode_atts(array( + 'sidebar' => 'Widgets for Shortcodes', //default + 'id' => '', + 'name' => '', /* MKM added explicit 'name' attribute. For existing users we still need to allow prev method, else too many support queries will happen */ + 'title' => '', /* do the default title unless they ask us not to - use string here not boolean */ + 'class' => 'amr_widget', /* the widget class is picked up automatically. If we want to add an additional class at the wrap level to try to match a theme, use this */ + 'wrap' => '', /* wrap the whole thing - title plus widget in a div - maybe the themes use a div, maybe not, maybe we want that styling, maybe not */ + 'widget_classes' => '' /* option to disassociate from themes widget styling */ + ), $atts)); + + if (isset($_wp_sidebars_widgets) ) { + amr_show_widget_debug('which one', $name, $id, $sidebar); //check for debug prompt and show widgets in shortcode sidebar if requested and logged in etc + } + else { + $output = '
                      No widgets defined at all in any sidebar!'; + return ($output); + } + + /* compatibility check - if the name is not entered, then the first parameter is the name */ + if (empty($name) and !empty($atts[0])) + $name = $atts[0]; + /* the widget need not be specified, [do_widget widgetname] is adequate */ + if (!empty($name)) { // we have a name + $widget = $name; + + foreach ($wp_registered_widgets as $i => $w) { /* get the official internal name or id that the widget was registered with */ + if (strtolower($w['name']) === strtolower($widget)) + $widget_ids[] = $i; + //if ($debug) {echo '
                      Check: '.$w['name'];} + } + + if (!($sidebarid = amr_get_sidebar_id ($sidebar))) { + $sidebarid=$sidebar; /* get the official sidebar id for this widget area - will take the first one */ + } + + + } + else { /* check for id if we do not have a name */ + + if (!empty($id)) { /* if a specific id has been specified */ + foreach ($wp_registered_widgets as $i => $w) { /* get the official internal name or id that the widget was registered with */ + if ($w['id'] === $id) { + $widget_ids[] = $id; + } + } + //echo '

                      We have an id: '.$id.'

                      '; if (!empty($widget_ids)) var_dump($widget_ids); + } + else { + $output = '
                      No valid widget name or id given in shortcode parameters'; + + return $output; + } + // if we have id, get the sidebar for it + $sidebarid = amr_get_widgets_sidebar($id); + if (!$sidebarid) { + $output = '
                      Widget not in any sidebars
                      '; + return $output; + } + } + + if (empty($widget)) $widget = ''; + if (empty($id)) $id = ''; + + if (empty ($widget_ids)) { + $output = '
                      Error: Your Requested widget "'.$widget.' '.$id.'" is not in the widget list.
                      '; + $output .= amr_show_widget_debug('empty', $name, $id, $sidebar); + return ($output) ; + } + + + if (empty($widget)) + $widget = ''; + + $content = ''; + /* if the widget is in our chosen sidebar, then use the options stored for that */ + + if ((!isset ($_wp_sidebars_widgets[$sidebarid])) or (empty ($_wp_sidebars_widgets[$sidebarid]))) { // try upgrade + amr_upgrade_sidebar(); + } + + //if we have a specific sidebar selected, use that + if ((isset ($_wp_sidebars_widgets[$sidebarid])) and (!empty ($_wp_sidebars_widgets[$sidebarid]))) { + /* get the intersect of the 2 widget setups so we just get the widget we want */ + + $wid = array_intersect ($_wp_sidebars_widgets[$sidebarid], $widget_ids ); + + } + else { /* the sidebar is not defined or selected - should not happen */ + if (isset($debug)) { // only do this in debug mode + if (!isset($_wp_sidebars_widgets[$sidebarid])) + $output = '

                      Error: Sidebar "'.$sidebar.'" with sidebarid "'.$sidebarid.'" is not defined.

                      '; + // shouldnt happen - maybe someone running content filters on save + else + $output = '

                      Error: Sidebar "'.$sidebar.'" with sidebarid "'.$sidebarid.'" is empty (no widgets)

                      '; + } + } + + $output = ''; + if (empty ($wid) or (!is_array($wid)) or (count($wid) < 1)) { + + $output = '

                      Error: Your requested Widget "'.$widget.'" is not in the "'.$sidebar.'" sidebar

                      '; + $output .= amr_show_widget_debug('empty', $name, $id, $sidebar); + + unset($sidebar); + unset($sidebarid); + + } + else { + /* There may only be one but if we have two in our chosen widget then it will do both */ + $output = ''; + foreach ($wid as $i=>$widget_instance) { + ob_start(); /* catch the echo output, so we can control where it appears in the text */ + amr_shortcode_sidebar($widget_instance, $sidebar, $title, $class, $wrap, $widget_classes); + $output .= ob_get_clean(); + } + } + + return ($output); + } + + + +function amr_shortcode_sidebar( $widget_id, + $name="widgets_for_shortcode", + $title=true, + $class='', + $wrap='', + $widget_classes='') { /* This is basically the wordpress code, slightly modified */ + global $wp_registered_sidebars, $wp_registered_widgets; + + $debug = amr_check_if_widget_debug(); + + $sidebarid = amr_get_sidebar_id ($name); + + $amr_sidebars_widgets = wp_get_sidebars_widgets(); //201711 do we need? + + $sidebar = $wp_registered_sidebars[$sidebarid]; // has the params etc + + $did_one = false; + + /* lifted from wordpress code, keep as similar as possible for now */ + + if ( !isset($wp_registered_widgets[$widget_id]) ) return; // wp had c o n t i n u e + + $params = array_merge( + array( + array_merge( $sidebar, + array('widget_id' => $widget_id, + 'widget_name' => $wp_registered_widgets[$widget_id]['name']) ) ), + (array) $wp_registered_widgets[$widget_id]['params'] + ); + + $validtitletags = array ('h1','h2','h3','h4','h5','header','strong','em'); + $validwraptags = array ('div','p','main','aside','section'); + + if (!empty($wrap)) { /* then folks want to 'wrap' with their own html tag, or wrap = yes */ + if ((!in_array( $wrap, $validwraptags))) + $wrap = ''; + /* To match a variety of themes, allow for a variety of html tags. */ + /* May not need if our sidebar match attempt has worked */ + } + + if (!empty ($wrap)) { + $params[0]['before_widget'] = '<'.$wrap.' id="%1$s" class="%2$s">'; + $params[0]['after_widget'] = ''; + } + + // wp code to get classname + $classname_ = ''; + //foreach ( (array) $wp_registered_widgets[$widget_id]['classname'] as $cn ) { + $cn = $wp_registered_widgets[$widget_id]['classname']; + if ( is_string($cn) ) + $classname_ .= '_' . $cn; + elseif ( is_object($cn) ) + $classname_ .= '_' . get_class($cn); + //} + $classname_ = ltrim($classname_, '_'); + + // add MKM and others requested class in to the wp classname string + // if no class specfied, then class will = amrwidget. These classes are so can reverse out unwanted widget styling. + + // $classname_ .= ' widget '; // wordpress seems to almost always adds the widget class + + + $classname_ .= ' '.$class; + + // we are picking up the defaults from the thems sidebar ad they have registered heir sidebar to issue widget classes? + + + // Substitute HTML id and class attributes into before_widget + if (!empty($params[0]['before_widget'])) + $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $widget_id, $classname_); + else + $params[0]['before_widget'] = ''; + + if (empty($params[0]['before_widget'])) + $params[0]['after_widget'] = ''; + + $params = apply_filters( 'dynamic_sidebar_params', $params ); + // allow, any pne usingmust ensure they apply to the correct sidebars + + if (!empty($title)) { + if ($title=='false') { /* amr switch off the title html, still need to get rid of title separately */ + $params[0]['before_title'] = ''; + $params[0]['after_title'] = ''; + } + else { + if (in_array( $title, $validtitletags)) { + $class = ' class="widget-title" '; + + $params[0]['before_title'] = '<'.$title.' '.$class.' >'; + $params[0]['after_title'] = ''; + } + } + } + + if (!empty($widget_classes) and ($widget_classes == 'none') ) { + $params = amr_remove_widget_class($params); // also called in widget area shortcode + } + + + $callback = $wp_registered_widgets[$widget_id]['callback']; + if ( is_callable($callback) ) { + call_user_func_array($callback, $params); + $did_one = true; + } +// } + return $did_one; +} + + +function amr_saw_setup_sidebar ($sidebars_widgets) { + global $sidebars_widgets; //need? + // now theme mods has record of widgets and sidebar, but not for our new one. + if ( is_array( $sidebars_widgets ) ) { + if (empty($sidebars_widgets['widgets_for_shortcodes'])) { + $sidebars_widgets['widgets_for_shortcodes'] = array(); + } + } + return $sidebars_widgets; +} + +function amr_reg_sidebar() { // this is fired late, so hopefully any theme sidebars will have been registered already. + +global $wp_registered_widgets, $_wp_sidebars_widgets, $sidebars_widgets, $wp_registered_sidebars; + +if ( function_exists('register_sidebar') ) { // maybe later, get the first main sidebar and copy it's before/after etc + $args = array( + 'name' =>'Widgets for Shortcodes', + 'id' => 'widgets_for_shortcodes', // hope to avoid losing widgets + 'description' => __('Sidebar to hold widgets and their settings. These widgets will be used in a shortcode. This sidebars widgets should be saved with your theme settings now.','amr-shortcode-any-widget'), + 'before_widget' => '', // 201402 to match twentyfourteen theme + 'after_widget' => '', + 'before_title' => '

                      ', // 201402 maybe dont use widget class - we are in content here not in a widget area but others want the widget styling. ? + 'after_title' => '

                      ' ); + + + + if (!empty($wp_registered_sidebars)) { // we got some sidebars already. + $main_sidebar = reset($wp_registered_sidebars); // Grab the first sidebar and use that as defaults for the widgets + $args['before_widget'] = $main_sidebar['before_widget']; + $args['after_widget'] = $main_sidebar['after_widget']; + $args['before_title'] = $main_sidebar['before_title']; + $args['after_title'] = $main_sidebar['after_title']; + } + + register_sidebar($args); + +} + +//else { echo '

                      CANNOT REGISTER widgets_for_shortcodes SIDEBAR

                      ';} +} + +include ('amr-admin-form-html.php'); +include ('amr-utilities.php'); + +if (is_admin() ) $amr_saw_plugin_admin = new amr_saw_plugin_admin(); + +add_action('widgets_init', 'amr_reg_sidebar',98); // register late so it appears last +add_filter( 'theme_mod_sidebars_widgets', 'amr_saw_setup_sidebar' ); //20171126 + +add_action('switch_theme', 'amr_save_shortcodes_sidebar'); +add_action('after_switch_theme', 'amr_restore_shortcodes_sidebar'); + +add_shortcode('do_widget', 'amr_do_widget'); +add_shortcode('do_widget_area', 'amr_do_widget_area'); // just dump the whole widget area - to get same styling + +//require_once(ABSPATH . 'wp-includes/widgets.php'); // *** do we really need this here? +function amr_saw_load_text() { +// wp (see l10n.php) will check wp-content/languages/plugins if nothing found in plugin dir + $result = load_plugin_textdomain( 'amr-shortcode-any-widget', false, + dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); +} + + +add_action('plugins_loaded' , 'amr_saw_load_text' ); + +add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'amr_add_action_links' ); + +function amr_add_action_links ( $links ) { + $mylinks[] = + 'Where using?'; + $mylinks[] = + 'HELP'; +return array_merge( $links, $mylinks ); +} diff --git a/wp-content/plugins/amr-shortcode-any-widget/amr-utilities.php b/wp-content/plugins/amr-shortcode-any-widget/amr-utilities.php new file mode 100644 index 0000000..1415adb --- /dev/null +++ b/wp-content/plugins/amr-shortcode-any-widget/amr-utilities.php @@ -0,0 +1,156 @@ +'; + foreach ($sidebars_widgets as $sidebarid => $sidebar) { + + if (is_array($sidebar)) { + $text .= '
                    • [do_widget_area '.$sidebarid.']
                        '; + foreach ($sidebar as $i=> $w) { + + $text .= '
                      • '; + $text .= '[do_widget id="'.$w.'"]'; + $text .= '
                      • '; + + }; + $text .= '
                    • '; + } + } + $text .= ''; + return ($text); +} + +function amr_get_widgets_sidebar($wid) { +/* walk through the registered sidebars with a name and find the id - will be something like sidebar-integer. +take the first one that matches */ +global $_wp_sidebars_widgets; + + foreach ($_wp_sidebars_widgets as $sidebarid => $sidebar) { + + if (is_array($sidebar) ) { // ignore the 'array version' sidebarid that isnt actually a sidebar + foreach ($sidebar as $i=> $w) { + if ($w == $wid) { + return $sidebarid; + } + }; + } + } + return (false); // widget id not in any sidebar +} + +function amr_get_sidebar_id ($name) { +/* walk through the registered sidebars with a name and find the id - will be something like sidebar-integer. +take the first one that matches */ +global $wp_registered_sidebars; + + foreach ($wp_registered_sidebars as $i => $a) { + if ((isset ($a['name'])) and ( $a['name'] === $name)) + return ($i); + } + return (false); +} + +function amr_get_sidebar_name ($id) { /* dont need anymore ? or at least temporarily */ +/* walk through the registered sidebars with a name and find the id - will be something like sidebar-integer. take the first one */ +global $wp_registered_sidebars; + foreach ($wp_registered_sidebars as $i => $a) { + if ((isset ($a['id'])) and ( $a['id'] === $id)) { + if (isset($a['name'])) return ($a['name']); + else return ($id); + } + } + return (false); +} + +function amr_check_if_widget_debug() { +global $said; + // only do these debug if we are logged in and are the administrator + + if (is_admin()) return false; // if running in backend, then do not do debug. 20151217 + + if ((!is_user_logged_in()) or (!current_user_can('administrator'))) + return false; + + if (isset($_REQUEST['do_widget_debug'])) { + if (empty($said)) { + $said = true; + } + else return true; + + $url_without_debug_query = esc_url(remove_query_arg( 'do_widget_debug')); + $eek = 'Remove debug'; + echo '
                      Note: Debug help is only shown to a logged-in Administrator.' + .$eek + .'
                      '; + $text = amr_show_shortcode_widget_possibilities () ; + echo $text; + return true; + } + else + return false; +} + +function amr_show_widget_debug($type='', $name, $id, $sidebar) { +global $wp_registered_sidebars, $wp_registered_widgets, $_wp_sidebars_widgets, $debugcount; +// only do these debug if we are logged in and are the administrator + + $debug = amr_check_if_widget_debug(); + $text = amr_show_shortcode_widget_possibilities () ; + + if ($type=='empty') { + if (current_user_can('administrator')) + $text = '

                      Problem with do_widget shortcode? Try one of the following:

                      '.$text; + } + elseif (($type=='which one') and ($debug)) { + $text = '

                      Debug help is on: Is your widget in the widgets_for_shortcodes sidebar?

                      ' + .$text; + } + + return ($text); +} + +function amr_save_shortcodes_sidebar() { // when switching a theme, save the widgets we use for the shortcodes as they are getting overwritten + $sidebars_widgets = wp_get_sidebars_widgets(); + if (!empty($sidebars_widgets['widgets_for_shortcodes'])) + update_option('sidebars_widgets_for_shortcodes_saved',$sidebars_widgets['widgets_for_shortcodes']); + else { // our shortcodes sidebar is empty but when to fix ? + + } +} + +function amr_restore_shortcodes_sidebar() { // when switching a theme, restore the widgets we use for the shortcodes as they are getting overwritten +global $_wp_sidebars_widgets; + + $sidebars_widgets = wp_get_sidebars_widgets(); + if (empty($sidebars_widgets['widgets_for_shortcodes'])) { + $sidebars_widgets['widgets_for_shortcodes'] = get_option('sidebars_widgets_for_shortcodes_saved'); + update_option('sidebars_widgets',$sidebars_widgets); + + } + +} + +function amr_upgrade_sidebar() { // added in 2014 February for compatibility.. keep for how long. till no sites running older versions.? + $sidebars_widgets = wp_get_sidebars_widgets(); + if (!empty($sidebars_widgets['Shortcodes']) and empty($sidebars_widgets['widgets_for_shortcodes'])) { // we need to upgrade + $sidebars_widgets['widgets_for_shortcodes'] = $sidebars_widgets['Shortcodes']; + unset ($sidebars_widgets['Shortcodes']); + update_option('sidebars_widgets',$sidebars_widgets ); + add_action( 'admin_notices', 'widgets_shortcode_admin_notice' ); + } +} + +function widgets_shortcode_admin_notice() { + ?> +
                      +

                      Please go to widgets page and check your "widgets for shortcodes" sidebar. It will hopefully have been corrected upgraded with your widgets and all should be fine.

                      +
                      + \ No newline at end of file diff --git a/wp-content/plugins/amr-shortcode-any-widget/index.php b/wp-content/plugins/amr-shortcode-any-widget/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/amr-shortcode-any-widget/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget-id_ID.po b/wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget-id_ID.po new file mode 100644 index 0000000..e4b235f --- /dev/null +++ b/wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget-id_ID.po @@ -0,0 +1,118 @@ +msgid "" +msgstr "" +"Project-Id-Version: amr shortcode any widget v2.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2017-04-03 07:36:42+0000\n" +"Last-Translator: Jordan Silaen \n" +"Language-Team:ChameleonJohn.com \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: Indonesian\n" +"X-Poedit-Country: Indonesia\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: amr-admin-form-html.php:37 +# +msgid "Settings" +msgstr "pengaturan" + +#: amr-admin-form-html.php:63 +# +msgid "Drag the widgets you want to use to the shortcodes sidebar." +msgstr "Tarik widget yang ingin Anda gunakan ke shortcode sidebar." + +#: amr-admin-form-html.php:67 +# +msgid "Set the widgets parameters if there are any." +msgstr "Mengatur parameter widget jika ada." + +#: amr-admin-form-html.php:70 +# +msgid "You could test the widgets out in a displayable widget area (sidebar/footer), then drag them to the widgets_for_shortcodes sidebar." +msgstr "Anda bisa menguji widget di area widget dapat ditampilkan (sidebar / footer), kemudian menyeret mereka ke widgets_for_shortcodes sidebar." + +#: amr-admin-form-html.php:75 +# +msgid "Go to widgets" +msgstr "Pergi ke widget" + +#: amr-admin-form-html.php:81 +# +msgid "To add a widget area - all widgets in the widget area:" +msgstr "Untuk menambahkan area widget - widget semua di daerah widget:" + +#: amr-admin-form-html.php:89 +# +msgid "Create a page with do_widget_area shortcode without the widget_area class" +msgstr "Buat halaman dengan do_widget_area shortcode tanpa kelas widget_area" + +#: amr-admin-form-html.php:96 +# +msgid "Create a page with do_widget_area shortcode" +msgstr "Buat halaman dengan do_widget_area shortcode" + +#: amr-admin-form-html.php:100 +#: amr-admin-form-html.php:117 +# +msgid "Examples:" +msgstr "contoh:" + +#: amr-admin-form-html.php:103 +# +msgid "[do_widget_area] or [do_widget_area widget_area=sidebar-1]" +msgstr "[Do_widget_area] atau [do_widget_area widget_area = sidebar-1]" + +#: amr-admin-form-html.php:106 +# +msgid "NB: Using something like the twenty-fourteen theme? you might end up with white text on a white background. Tweak the widget classes or the html of the wrap or title. If that fails, adjust your css." +msgstr "NB: Menggunakan sesuatu seperti 20-14 tema? Anda mungkin berakhir dengan teks putih pada latar belakang putih. Tweak kelas widget atau html dari bungkus atau judul. Jika itu gagal, menyesuaikan css Anda." + +#: amr-admin-form-html.php:112 +# +msgid "To add a single widget to a page" +msgstr "Untuk menambahkan widget tunggal ke halaman" + +#: amr-admin-form-html.php:116 +# +msgid "Add the shortcode [do_widget widgetname] to a page." +msgstr "Tambahkan shortcode [do_widget widgetname] ke halaman." + +#: amr-admin-form-html.php:120 +# +msgid "[do_widget \"tag cloud\"] or [do_widget id=widgetid]" +msgstr "[Do_widget \ "tag cloud \"] atau [do_widget id = widgetid]" + +#: amr-admin-form-html.php:126 +# +msgid "Create a page with do_widget shortcode and remove widget_classes" +msgstr "Buat halaman dengan do_widget shortcode dan menghapus widget_classes" + +#: amr-admin-form-html.php:133 +# +msgid "Create a page with do_widget shortcode" +msgstr "Buat halaman dengan do_widget shortcode" + +#: amr-admin-form-html.php:174 +# +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "Jika Anda memiliki masalah dengan plugin ini atau ide-ide yang baik untuk perbaikan atau fitur baru, silakan berbicara tentang mereka dalam" + +#: amr-admin-form-html.php:174 +# +msgid "Support forums" +msgstr "forum dukungan" + +#: amr-shortcode-any-widget.php:306 +# +msgid "Sidebar to hold widgets and their settings. These widgets will be used in a shortcode. This sidebars widgets should be saved with your theme settings now." +msgstr "Sidebar untuk menahan widget dan pengaturan mereka. Widget ini akan digunakan dalam shortcode. Ini sidebars widget harus disimpan dengan pengaturan tema Anda sekarang." + diff --git a/wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget-sr_RS.mo b/wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget-sr_RS.mo new file mode 100644 index 0000000000000000000000000000000000000000..972bad8d4c0a39df70d9e41ad1814c5f8a7cdec1 GIT binary patch literal 2822 zcmb7G&x;&I6fQOK$KncVym@%$po!V;?2L&Cy(}8DNnGOUYBpk&WvQ92nW>rXs-~)X zCNp^P2L^R%yv)N4TS=2zW4GreIA+Aw@w)vsQ?_r0%P&2LW~ z`ikLs8oy`p`_T{Zyz#&sU&8AK#?J#k0=^3T4tN6i2XGzu%!7=r0C#|o0dD~pf!_j0 zz#o9W08c!`*b?wA@KGQgV(bavaUcQD0$&DR1AYSh64(SDIm}oDyafCk_%YDWfA}zC z4dC~{*MYwSL*R>#lyO}HUc~qtpx^IL;FG|+z)yjPG5Is_bKncWw-Nl~z%lR$@H3!~ z_ZBb!{tEmW_!rRg^2OppnfOosg`JCIay>z|r;TgtSkMQt-WkcbD;$-ecq+EZY2uXe zt_azABe)aQ5Js*?^EER^|Iv)Niphvn4@I@#PCMb&3VUA%I~+mGqy9g(MZ`LHMc!qK zrMF^Vwq|&@_Q}#%=QQF9_L_1lJnUo4l9jP&aTBr&*Lj*H!ba>8jC7TdW$T^7OOGQ- zuEvxZ-AY7iOY&S#TFR2VD-~%&U9Dq+M{cQup-f>t6sb_o`p-&?sDlFJM%X1RgB@bx z$$)sP$|@yzLX7Oq*CM)VrRtK^slYyXOXL9dD7hQKn*3M;$H`B*o)?Zk>Ep?0VSUz4e`xv=L3mHZ2d1;mqNwsFa8HS}BZh+Ts|+B#2gkOZQx$LZ^V zC7fbuvxJX1s$O4A$13TZ>}ZX2jxYJ;isDLx=~Qf0;yXxXXLiDB!mAzHqYnCQCpwRh zZhMMrpJcpRI+F1=o6i^OzsI&b5v6tUzFI{ZG`88M(S6Z&!Fn9LiyBC+BI2o;AIC!E z6^p}WcxrKB^R3_=F_hjmSVQ-SsJYxY9V|D4<JA0 zqBg0GNa5IFXjhvn{siK6Rnc>+)L2}|)Wz)0{VaT=&*<~Z7DHoM0iAnNIcYje{1D{FgR*u%lVW zE-O7t<)BEh@9g`0>tZ1eYa*#7CY7v9Zv%920hx$l-u8W?0BStPuRQvrW=h+T>vyNS!+`l+h9f~1OPPTcd{^Hhh-+kvj3Cye13<*DbP zU@}HNgPg4)darCy9eZ_TC_0khMNvziG(8z}V>|l;0G(7Taq*V_L~vbl>moMg4$|?> z7Do!(OyvL#?K77}R7MW?MEY\n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: \n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: amr-admin-form-html.php:37 +#@ amr-shortcode-any-widget +msgid "Settings" +msgstr "PodeÅ¡avanja" + +#: amr-admin-form-html.php:63 +#@ amr-shortcode-any-widget +msgid "Drag the widgets you want to use to the shortcodes sidebar." +msgstr "Prevucite widget-e koje želite da koristite u shortcode boÄni meni. " + +#: amr-admin-form-html.php:67 +#@ amr-shortcode-any-widget +msgid "Set the widgets parameters if there are any." +msgstr "Podesite parametre widget-a ako ih ima." + +#: amr-admin-form-html.php:70 +#@ amr-shortcode-any-widget +msgid "You could test the widgets out in a displayable widget area (sidebar/footer), then drag them to the widgets_for_shortcodes sidebar." +msgstr "Možete da testirate widget-e u widget oblasti za prikazivanje (boÄni meni/podnožje), a zatim ih prevucite u widgets_for_shortcodes boÄni meni. " + +#: amr-admin-form-html.php:75 +#@ amr-shortcode-any-widget +msgid "Go to widgets" +msgstr "Idite na widget-e" + +#: amr-admin-form-html.php:81 +#@ amr-shortcode-any-widget +msgid "To add a widget area - all widgets in the widget area:" +msgstr "Da biste sve widget-e dodali u widget oblast:" + +#: amr-admin-form-html.php:89 +#@ amr-shortcode-any-widget +msgid "Create a page with do_widget_area shortcode without the widget_area class" +msgstr "Kreirajte stranicu uz shortcode do_widget_area, ali bez widget_area klase" + +#: amr-admin-form-html.php:96 +#@ amr-shortcode-any-widget +msgid "Create a page with do_widget_area shortcode" +msgstr "Kreirajte stranicu uz do_widget_area shortcode" + +#: amr-admin-form-html.php:100 +#: amr-admin-form-html.php:117 +#@ amr-shortcode-any-widget +msgid "Examples:" +msgstr "Primeri:" + +#: amr-admin-form-html.php:103 +#@ amr-shortcode-any-widget +msgid "[do_widget_area] or [do_widget_area widget_area=sidebar-1]" +msgstr "[do_widget_area] ili [do_widget_area widget_area=sidebar-1]" + +#: amr-admin-form-html.php:106 +#@ amr-shortcode-any-widget +msgid "NB: Using something like the twenty-fourteen theme? you might end up with white text on a white background. Tweak the widget classes or the html of the wrap or title. If that fails, adjust your css." +msgstr "Zapamtite: Koristite li neÅ¡to poput 2014 teme? Možete zavrÅ¡iti sa belim tekstom na beloj pozadini. Uzmite klase widget-a ili html sa preloma ili iz naslova. Ako to ne uspe, prilagodite svoj css." + +#: amr-admin-form-html.php:112 +#@ amr-shortcode-any-widget +msgid "To add a single widget to a page" +msgstr "Da biste dodali pojedinaÄni widget stranici" + +#: amr-admin-form-html.php:116 +#@ amr-shortcode-any-widget +msgid "Add the shortcode [do_widget widgetname] to a page." +msgstr "Dodajte shortcode [do_widget widgetname] stranici." + +#: amr-admin-form-html.php:120 +#@ amr-shortcode-any-widget +msgid "[do_widget \"tag cloud\"] or [do_widget id=widgetid]" +msgstr "[do_widget \"tag cloud\"] ili [do_widget id=widgetid]" + +#: amr-admin-form-html.php:126 +#@ amr-shortcode-any-widget +msgid "Create a page with do_widget shortcode and remove widget_classes" +msgstr "Kreirajte stranicu uz pomoć do_widget shortcode i remove widget_classes" + +#: amr-admin-form-html.php:133 +#@ amr-shortcode-any-widget +msgid "Create a page with do_widget shortcode" +msgstr "Kreirajte stranicu koristeći do_widget shortcode" + +#: amr-admin-form-html.php:174 +#@ amr-shortcode-any-widget +msgid "If you have any problems with this plugin or good ideas for improvements or new features, please talk about them in the" +msgstr "Ako imate bilo kakvih problema s ovim plugin-om ili dobre ideje za poboljÅ¡anja, odnosno, nove funkcionalnosti, priÄajte o njima na" + +#: amr-admin-form-html.php:174 +#@ amr-shortcode-any-widget +msgid "Support forums" +msgstr "Forumima za podrÅ¡ku" + diff --git a/wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget.pot b/wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget.pot new file mode 100644 index 0000000..9aa2fa2 --- /dev/null +++ b/wp-content/plugins/amr-shortcode-any-widget/languages/amr-shortcode-any-widget.pot @@ -0,0 +1,138 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: amr shortcode any widget 3.3\n" +"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/amr-shortcode-any-" +"widget\n" +"POT-Creation-Date: 2017-04-18 13:56+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION\n" +"X-Generator: Loco - https://localise.biz/" + +#: amr-admin-form-html.php:37 +msgid "Settings" +msgstr "" + +#: amr-admin-form-html.php:63 +msgid "Test your widget in a normal sidebar first." +msgstr "" + +#: amr-admin-form-html.php:65 +msgid "Go to widgets" +msgstr "" + +#: amr-admin-form-html.php:68 +msgid "Drag the widgets you want to use to the shortcodes sidebar." +msgstr "" + +#: amr-admin-form-html.php:71 +msgid "Add a do_widget or do_widget_area shortcode to a page." +msgstr "" + +#: amr-admin-form-html.php:75 +msgid "Create a page with example do_widget shortcode" +msgstr "" + +#: amr-admin-form-html.php:82 +msgid "To add a single widget to a page" +msgstr "" + +#: amr-admin-form-html.php:86 +msgid "Add the shortcode [do_widget widgetname] to a page:" +msgstr "" + +#: amr-admin-form-html.php:93 +msgid "[do_widget \"tag cloud\"] or [do_widget id=widgetid]" +msgstr "" + +#: amr-admin-form-html.php:102 +msgid "More advanced options:" +msgstr "" + +#: amr-admin-form-html.php:111 +msgid "To change the style, change the html:" +msgstr "" + +#: amr-admin-form-html.php:151 +msgid "To add multiple instances of the same widget:" +msgstr "" + +#: amr-admin-form-html.php:161 +msgid "To add a widget area - all widgets in the widget area:" +msgstr "" + +#: amr-admin-form-html.php:169 +msgid "Create a page with do_widget_area shortcode" +msgstr "" + +#: amr-admin-form-html.php:177 +msgid "" +"Create a page with do_widget_area shortcode without the widget_area class" +msgstr "" + +#: amr-admin-form-html.php:181 +msgid "Examples:" +msgstr "" + +#: amr-admin-form-html.php:184 +msgid "[do_widget_area] or [do_widget_area widget_area=sidebar-1]" +msgstr "" + +#: amr-admin-form-html.php:187 +msgid "" +"NB: Using something like the twenty-fourteen theme? you might end up with " +"white text on a white background. Tweak the widget classes or the html of " +"the wrap or title. If that fails, adjust your css." +msgstr "" + +#: amr-admin-form-html.php:199 +msgid "" +"If you have any problems with this plugin or good ideas for improvements or " +"new features, please talk about them in the" +msgstr "" + +#: amr-admin-form-html.php:199 +msgid "Support forums" +msgstr "" + +#: amr-shortcode-any-widget.php:330 +msgid "Widgets for Shortcodes" +msgstr "" + +#: amr-shortcode-any-widget.php:332 +msgid "" +"Sidebar to hold widgets and their settings. These widgets will be used in a " +"shortcode. This sidebars widgets should be saved with your theme settings " +"now." +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "amr shortcode any widget" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"Include any widget in a page for any theme. [do_widget widgetname ] or " +"[do_widget \"widget name\" ] [do_widget id=widgetnamedashed-n ]or include a " +"whole widget area [do_widget_area]. Please read: Installation and FAQ." +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://webdesign.anmari.com/shortcode-any-widget/" +msgstr "" + +#. Author of the plugin/theme +msgid "anmari" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://webdesign.anmari.com" +msgstr "" diff --git a/wp-content/plugins/amr-shortcode-any-widget/languages/amr_shortcode_any_widget_id_ID.mo b/wp-content/plugins/amr-shortcode-any-widget/languages/amr_shortcode_any_widget_id_ID.mo new file mode 100644 index 0000000000000000000000000000000000000000..c78b64efb396da8d4daf214d3a41135fc2956c20 GIT binary patch literal 3595 zcmb7HON=Bp88#$=FbN}EB~E*WKdlb~eOa(B6_JY8kC zY}fSknG-^alt^4aoH=ktaNvN%VTItz35gTp!Z8vOH$FeAy0e5;GE(a++rNK*|I5GU z?_YcTXAFN|$L|~X{oW7o_ul6=cpabT7=H)&0q|Ae?|{z&{{uV$e*5!`9RfA*OTb?P zzYP2ha0UD$@B#4fF~)X*k3G)VlfV)17r+;RUjhCVNWgypp94Pe1Y0sa~IFW|R; zzkP}^e6qg*e+B#}(DQr$>1g*afiGkHC*V(jPr}$2fgb|>{9nBBuazaaT9B=^aWh>C zdbiY*l`JdaD1zdxI47rx(~?&rXU9fxC(;l?uBOeNLD8oaBd$s^qScoooi~{^+*)BD zsbIoEV#E5g$Ogu`bHVOtV$>GSWj774ww5fdbw?|%Ag`&j!o$ZrX35G@Ou5O~tt;Lx z8(|A}8$vo6WZB6)XsJ1jo+br5zi)UvY}79WUOH|4O~XB@OiLsqyTn$x%zaAU83C7Xt(!iO87@b(UA?G5$u zN-_5#^tFPCT6Z`EyDY-&PeWY<6L40G*>n~uy#mQ@xkSbJ2zRYzV^kL^5$Aw;(-ZN` zW6^B{;&I+uP8o6V>?SU}Fqge4E~VF+ruIjB&u629Y;>JQ&llI9D-QOb9pP{1 zF1Icl8?J1_oi+vC(Wc~z&Sb;k#g{I^Ft=g&>a0dSH$tlmU8{Vi+n1q0RUPizY%F+N z9QOiuk^t@8JGpmjW8+>v+Bw$Bp{BF(dI`3^Sg#?nQXLZX8zkV-{qgJB3mZ94Z!S!B zOX2EA<`wk9RJxthrZc?BUe~6z1u0xj7}}%#Lw`%*^GMM*k7)03=bh}fP{Kq5kI(MX z9XF0f=*Pam9Ubl&FV4k4QJL{i<`AGl>SV>XwSN!&dou4(E9_iUcr6# zuC!R3Ob#dFa57OSLvM4jx4VBhQ4xmOiPCzRmbSiUyAw4l4raSy)0G#PL0$i$u7)*r z6}KhX4VxRdfS26W1?Bm*t!b?nEjJ5za5H%(xS7?bkj_Ss$HEwlOWh($S-KMnTBG@m zc{}Cx0vWT(+^uqn2^?E9?(>>AyyYrqH#%ISX+)(^6%>3@bN-Zagm~>+iau zK|fMStkQw}qnSM86ME|AMER`hgc;|a_h98CVryPWk z$lZdL!uSyw1hKh9k0!hex?Qkn0<|eb)im|`5%^%xMOSuBPQhWYjVfO8X4j_&61Iz$qg@APIrDb-SIVYY_i?-M z9tW$OEt3paL$i*qgic<=k?EfHS-6o+KFjIt_)HCf@oq0=@3`R3O%~vVf#5yVvQZ`m zrlI}eiRE{vXb+r%qobcKVuZ`G%2{aGRCWt^2DI;o$a}hdxhBdE>u`@xv{a6tARD@P z+K~0eTG4h$2#K6PRO>Wdu#n?ZX?ZBf?n3q(AiAxngaSWfq11n|XP#O0Bcl4XXzX widgets and find the " widgets for shortcode" sidebar or widget area +4. Drag your chosen widget from your normal sidebar to the shortcodes sidebar. Save. +5. Now go to a page and enter a do_widget shortcode The shortcode any widget settings page has some helpful (hopefully) examples and links. + +* [do_widget widgetname] eg: [do_widget calendar] +* [do_widget "widget name"]. eg: [do_widget "tag cloud"] +* [do_widget id=widgetid] . eg: [do_widget id=tag-cloud-3] + +* [do_widget_area] (will use the "widgets in shortcodes" widget area / sidebar +* [do_widget_area sidebarid] or [do_widget_area widget_area=sidebarid] for another sidebar or widget area - eg: to maximise likelihood of getting your theme's widget css to apply. + +**[do_widget ...] Parameters:** + +* *nameofwidget* or name="*nameofwidget*" This is NOT the title of the widget. THis is the name that you see in the widgets menu page even when unassigned to a sidebar. For existing users , you can also use just the name of the widget without name=. It must be the first parameter then. You can only do this with the name, not the id. +* id=*wordpress assigned id of widget*. Examples: id=meta-3, id=tag-cloud-9 etc +* title=false to hide the widgets title OR to override your themes first sidebar html settings for widget titles, use title=*htmltag* where *htmltag* is one of h1,h2,h3,h4,h5,header,strong,em. +* wrap=*htmltag* where *htmltag* is one of div,p,main,aside,section. This will override your themes first sidebar widget wrapping html. +* widget_classes=none This will remove the class "widget" from the wrapping html and the class "widget_title" from the title html. This may be enough to remove any unwanted css caused by your theme. +* class=*yourclassname* By default the plugin will add a class of amr-widget to the wrapping html. You can use this to add any special css. Add css either by editing your themes stylesheet if it is a custom theme, or using something like the wordpress custom css plugin. +* sidebar="*sidebarname*" will default to widgets_for_shortcode sidebar. Only use if you want to re-use a widget already being used in another sidebar. THis is theme dependent and WILL break if you change themes. Safer to use the widget_id. + +**[do_widget_area ...] Parameters:** + +* widget_area=*yourwidgetarea* defaults to 'widgets_for_shortcodes' if nothing entered +* widget_area_class=none /* option to remove theme styling by removing the widget_area class from the sidebar html */ +* widget_classes=none /* option to remove the widget class from the widget wrappinghtml +* class=*yourclassname* default is amr_widget_area. This will affect the widget area NOT the individual widgets. At the moment can only remove the widget classes, not replace them when using do_widget_area. + +Advanced users WARNING: using do_widget_area with a widget area other than the shortcode one means that if you changes themes and the new theme has different sidebars, then this shortcode with a named widget area will not work. + +See the settings page for links to help your create the shortcodes in a page. + +The plugin has been tested with most standard widgets (rss feeds, tag cloud, pages, meta, search, and of course my own plugins widgets - upcoming events list, calendar and user lists. + +If you use a widget more than once for different reasons, you may need to use the widget id to isolate which widget instance and it's settings to use. ie: [do_widget id=categories-6] . If you just use the name, it will display all widgets in the shortcode sidebar with that name (all instances). + + +**If you liked this plugin, you might also like my other plugins:** + +* [icalevents.com](http://icalevents.com) - a ics compliant events plugin fully integrated with wordpress, so it will work with many other plugins (seo, maps, social) +* [wpusersplugin.com](http://wpusersplugin.com) - a suite of plugins to help with membership sites. Major plugin is [amr users](http://wordpress.org/extend/plugins/amr-users/) + +== Frequently Asked Questions == + +PLEASE get your widgets working in a sidebar BEFORE activating this plugin, and PLEASE read the installation instructions (?is the plugin directory showing them!?) and the settings page before asking any questions. + +**Widget help, the widget is doing this, when it should do that** + +Please get the widget working first in a normal sidebar without this plugin and ask for support on the widgets forum it is does not work in a normal sidebar. + +**How to identify widget** + +To identify your widget in the shortcode, use the NAME or the ID. + +The name is the generic NAME like "tag cloud". + +The id is how wordpress identifies the instance of the widget. The id is visible at the bottom of the widget settings box. + +**Styling, your theme, css, overriding** + +Yes anything could happen wrt the appearance.(There are tens of 1000s of themes and widgets. Multiply out the possible combinations. Add in css specifity, inheritance and cascading rules. Consider you are moving the widget out of the sidebar where the the theme and widget plugin expect it to be. ) The effects are very dependent on how your theme has specified the css that may apply to widgets and sidebars/widget areas. + +It may work beautifully and have the content looking like it belongs with your theme. + +This plugin tries to help encourage that 'belonging' look. If it fails then it offers ways to switch the html and/or the classes being generated. + + +Examples: +* you may have undesired effects applying that do not work in the main content area +* You may have desired effects not applying because the css is specific to a themes sidebar and does not apply to the html in a page. + +The plugin can help a bit - Via the plugin you can do the following to affect styling: + +* Remove the general wordpress 'widget' class from the widgets wrapping html and the 'widget_title' from the title html. ([do_widget *widgetname* widget_classes=none] + +* Change the 'wrap' html and the title html with parameters wrap=div title=h3. See the settings page. + +* Apply an existing class in your theme. Use [do_widget *widgetname* class=*yourclass*]. + +* Use the additional class 'amr-widget' provided to specify alternate css in your themes stylesheet or with something like wordpress custom css. + +One of the new features is as a default setting is that the plugin will try have your current themes first sidebar styling apply to the widgets inserted into a page via the shortcode. + +Many folks requested this, insisting that absolutely this is what should be happening and why didn't it? Well..This could be great - Imagine: a plugin that can pick up the theme styling and change it as your theme changes. + +The success of this depends very much on how your theme specifies it's css. Does it always use classes ? - more css will apply. Does it lock the css down by sidebar-id: that css will not apply. + +It also depends on what the original widget plugin does with css and js. It may have done something thinking that the widget will always be inside a sidebar and not anticipated being in a page. This the shortcde-any-widget plugin has no control over. + +For example: An unwanted effect could be white text on a white background as in the twenty fourteen theme. + +**If you have an undesired styling effect with the default settings:** + +You need to learn the joys of the 'inspect element' tools in various browsers or browser web developer, firebug add-ons, so you can see what css is applying to what html. Then you can either change some of the html or override or change the css. + +Options if you don't like the default result: + +Use the 'amr-widget' class that has been added to the widget wrapping html to override any css. + +eg: +.amr-widget [ +color: #000000; +} + +Tap into a class you already have in your theme: + +[do_widget class=yourclass] + +Change the html that the shortcode-any-widget plugin will use. + +eg: don't like the h3.widget-title styling ? change the title html to h2 in the shotcode parameters + +[do_widget title=h2] + +eg: don't like the 'aside' wrapping html styling? change the wrapping html: + +[do_widget wrap=div] + +If you only using widget, maybe inserting the whole sidebar or widgertarea would give an interesting effect. Sidebar background css may apply. + +[do_widget_area] + +== Changelog == += Version 3.6 = +* Found a mixed line ending. Updated. +* Tested on 5.0.3 and 5.1beta, with php 7.3.1 + += Version 3.6 = +* Basically forcing an update in the hope that the third party php7compatibility checker sort itself out. It's complaining about mixed line endings, but they're not. +* Added indonesian translation provided by Jordan Silaen. + += Version 3.5 = +* Adds info showing you on which pages, posts etc you are using a do_widget or do_widget_area shortcode, just in case you forget. + += Version 3.4 = +* Retested on wordpres 4.7 and 4.8 alpha and forcing update because of plugin directory needs trigger temporarily to show the installation instructions + += Version 3.3 = +* Retested on wordpres 4.5 and 4.5.1-alpha +* Re-instated the saving of widgets in the shortcode sidebar on theme switch and the reloading of these saved widgets when theme is reactivated (Was commented out for awhile back in 2014, but appears to be working well and very useful when you changing a theme but maybe forgotten about this page that has widget on it - yeah that could be bad ! + += Version 3.2 = +* tweaked some error messages and handle situation better where there are no widgets or possibly empty sidebars. + += Version 3.1 = +* added code for the widget-id to appear in the widget settings window. +* removed lots of the 'debug' as it will hopefully no longer be needed. +* most error messages will now be returned in the shortcode, not echoed at top of page. +* the do_widget_debug lists less, but hopefully more usefully a list of the do_widget and do_widget_area options based on your sidebars and the widgets in them. + += Version 3 = +* added code to not output anything if in admin (eg: in edit/save mode) in case something has forced application of content filters when saving (and not all widget stuff is active, so errors are output. +* prefixed unprefixed function names to avoid conflicts + += Version 2.9 = +* in debug help, the link to the installation page help was not properly setup. Fixed. + += Version 2.8 = +* Tested on 4.3.1 +* No real functional change. +* Tweaked debug info to look a little prettier. Also some error messages will not show unless you haev requested debug (?do_widiet_debug) to try to avoid the message that some genesis theme users are experiencing. I have not been able to recreate this with the genesis theme myself - it might be a plugin that they are using. + + += Version 2.6 = +* Tested on 4.2 +* Removed from admin settings area the use of add_query_arg (unnecessary) +* Added esc_url to widget id 'debug' oage just in case (it is only accessed by logged in admin, but lets be safe and keep everyone happy if the see the add_query_arg and remove_query_arg + += Version 2.5 = +* Tested on 4.1.1, Linked to the settings help page from the plugin action menu. +* Changed the readme a bit to try further aid understanding and reduce support issues +* Updated some screenshots. + += Version 2.4 = +* Tested on 4.1, Cleaned up the readme, Lang file for info page - most texts. + += Version 2.3 = +* Fixed some widget area class options that were not working. +* Added a widget area debug option to make it easier to find how your theme has stored it's widget area / sidebar ids. They are not always easy to find. +* Tested on 3.9.1 +* Updated readme + += Version 2.2 = +* Attempt to add more styling control. +* Add widget_classes=none to reverse out widget type class. NOte to totally override wordpress widget +* Add widget_area_class=none + += Version 2.1 = +* Bug Fix - last sidebar registered by theme was being overwritten by the attempt to copy the themes sidebar arguments so that cleverly (hopefully) the shortcode widgets would pick up the same styling. Fixed now. Now it really does pickup the first sidebars styling - with devasting consquence in twenty-fourteen theme - yes white text on white background is not fun to read. But on other themes it works a treat. + + += Version 2 = +* Shortcode widget id changed so that wordpress will save the shortcode settings per theme. +* Added Code to auto upgrade, but just in case please check your widgets page. Look at the inactive widgets if the widgets are not in your widgets for shortcodes sidebar. +* Logic added on theme switching to save shortcode widget settings and restore them after the theme switch, so you can play with themes and not have to set up your widgets again. WP kept putting them into an 'inactive sidebar'. +* Added, as requested by a few of you, the ability to add a class and control the html around the widget without having to enter html around the shortcode has been added. See the settings page for instructions. +* Added the ability to specify what html should be used for the title and the widget wrap, so that you can more easily either match your theme or get away from your thesmes widget styling. +* Added ability to insert a whole widget area into the page. The default will be the "widgets for shortcode" sidebar/widget area. You can specify others. Note Specifying other widget areas may be theme dependent, ie: switch and you'll lose that page. +* Added classes amr-widget and amr-widget-area so one can target the widgets in the page to adjust css. + += Version 1.8 = +* Whoops - had renamed the main file and forgot to delete it from the svn. Forcing a version number change to ensure files get cleaned up for everyone + += Version 1.7 = +* Change: Changed so that debugs and debug prompt will only show to a logged in administrator. + += Version 1.6 = +* Add: added a settings page to help people out (not really settings) +* Fix: changed a clashing function name + += Version 1.5 = +* Fixed: a small bug which caused a warning if you had not saved the widgets in your shortcode sidebar + += Version 1.4 = +* Updated readme - made very detailed steps and added some screen shots. +* Tested on wp 3.3.1 and fixed some notices when bad parameters entered. + += Version 1.3 = +* Added debug link and retested. Added readme. + += 1.12 = +* Changed dummy shortcode sidebar so it appears after the theme sidebars to avoid taking over their widgets (this happened in numbered sidebars) PLEASE note if you have upgraded, you may appear to have "lost" your widgets due to this sidebar change. You have not - they will be in your "inactive widgets" - please drag them to the new sidebar. You may also find that you have 2 versions of the plugin, with slightly different folder names. This will allow you to go back to the previous one to check what you had there if you need to. Deactivate the old one and activate the new one. Move your widgets back in. Test then Delete the old one. In one theme it also appeared that somehow due to this change, one of the sidebar widgets "moved" down to another sidebar. I think that this may have had something to do with the fact that sidebars can be numbered or named, so please check all your sidebars before continuing. As always make sure thath you know how to restore from a backup before doing any upgrades of any kind. +* Tested in 2.9.2, can still use either the widget name "Categories" or id=categories-6. Note widget must have been created in the dummy shortcode sidebar. + += 1.1 = + +* Allow for lowercase use of widget names for the those challenged by attention to detail! +* Cleaned up debug mode to make it easier for people to identify which instance of a widget they are using. Add &do_widget_debug to url string. + += 1.0 = +* Launch of the plugin + +== Screenshots == + +1. setting up widgets in the widgets for shortcode sidebar. The widget's user interface (UI) is used to provide a UI for the do_widget shortcode. +2. add shortcode for widgets in a page (must be in the widgets for shortcode sidebar) +3. widgets in a page +4. with the default widget class and with widget_classes=none +two rss feed widgets in shortcode sidebar - both will show if just name used +5. The widget id is now visible in the widget window +6. After clicking on debug message - scroll down till you see the shortcodes sidebar - the widgets and their ids will be listed. Find the id of the widget you want. +7. Shortcode parameters to remove widget-classes in theme like the twenty-fourteen theme (avoid white text on white background) +8. Example of multiple rss widgets in twenty-fourteen theme + \ No newline at end of file diff --git a/wp-content/plugins/antispam-bee/LICENSE.txt b/wp-content/plugins/antispam-bee/LICENSE.txt new file mode 100644 index 0000000..23cb790 --- /dev/null +++ b/wp-content/plugins/antispam-bee/LICENSE.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/wp-content/plugins/antispam-bee/antispam_bee.php b/wp-content/plugins/antispam-bee/antispam_bee.php new file mode 100755 index 0000000..f1a0c16 --- /dev/null +++ b/wp-content/plugins/antispam-bee/antispam_bee.php @@ -0,0 +1,2852 @@ +query( 'OPTIMIZE TABLE `' . $wpdb->options . '`' ); + + //phpcs:disable WordPress.WP.PreparedSQL.NotPrepared + $sql = 'delete from `' . $wpdb->commentmeta . '` where `meta_key` IN ("antispam_bee_iphash", "antispam_bee_reason")'; + $wpdb->query( $sql ); + //phpcs:enable WordPress.WP.PreparedSQL.NotPrepared + } + + + + /* + * ############################ + * ######## INTERNAL ######## + * ############################ + */ + + /** + * Initialization of the internal variables + * + * @since 2.4 + * @change 2.7.0 + */ + private static function _init_internal_vars() { + self::$_base = plugin_basename( __FILE__ ); + + $salt = defined( 'NONCE_SALT' ) ? NONCE_SALT : ABSPATH; + self::$_salt = substr( sha1( $salt ), 0, 10 ); + + self::$defaults = array( + 'options' => array( + 'advanced_check' => 1, + 'regexp_check' => 1, + 'spam_ip' => 1, + 'already_commented' => 1, + 'gravatar_check' => 0, + 'time_check' => 0, + 'ignore_pings' => 0, + 'always_allowed' => 0, + + 'dashboard_chart' => 0, + 'dashboard_count' => 0, + + 'country_code' => 0, + 'country_black' => '', + 'country_white' => '', + + 'translate_api' => 0, + 'translate_lang' => array(), + + 'bbcode_check' => 1, + + 'flag_spam' => 1, + 'email_notify' => 0, + 'no_notice' => 0, + 'cronjob_enable' => 0, + 'cronjob_interval' => 0, + + 'ignore_filter' => 0, + 'ignore_type' => 0, + + 'reasons_enable' => 0, + 'ignore_reasons' => array(), + + 'delete_data_on_uninstall' => 1, + ), + 'reasons' => array( + 'css' => esc_attr__( 'Honeypot', 'antispam-bee' ), + 'time' => esc_attr__( 'Comment time', 'antispam-bee' ), + 'empty' => esc_attr__( 'Empty Data', 'antispam-bee' ), + 'server' => esc_attr__( 'Fake IP', 'antispam-bee' ), + 'localdb' => esc_attr__( 'Local DB Spam', 'antispam-bee' ), + 'country' => esc_attr__( 'Country Check', 'antispam-bee' ), + 'bbcode' => esc_attr__( 'BBCode', 'antispam-bee' ), + 'lang' => esc_attr__( 'Comment Language', 'antispam-bee' ), + 'regexp' => esc_attr__( 'Regular Expression', 'antispam-bee' ), + 'title_is_name' => esc_attr__( 'Identical Post title and blog title', 'antispam-bee' ), + ), + ); + } + + /** + * Check and return an array key + * + * @since 2.4.2 + * @change 2.4.2 + * + * @param array $array Array with values. + * @param string $key Name of the key. + * @return mixed Value of the requested key. + */ + public static function get_key( $array, $key ) { + if ( empty( $array ) || empty( $key ) || empty( $array[ $key ] ) ) { + return null; + } + + return $array[ $key ]; + } + + + /** + * Localization of the admin pages + * + * @since 0.1 + * @change 2.4 + * + * @param string $page Mark the page. + * @return boolean True on success. + */ + private static function _current_page( $page ) { + // phpcs:disable WordPress.CSRF.NonceVerification.NoNonceVerification + switch ( $page ) { + case 'dashboard': + return ( empty( $GLOBALS['pagenow'] ) || ( ! empty( $GLOBALS['pagenow'] ) && 'index.php' === $GLOBALS['pagenow'] ) ); + + case 'options': + return ( ! empty( $_GET['page'] ) && 'antispam_bee' === $_GET['page'] ); + + case 'plugins': + return ( ! empty( $GLOBALS['pagenow'] ) && 'plugins.php' === $GLOBALS['pagenow'] ); + + case 'admin-post': + return ( ! empty( $GLOBALS['pagenow'] ) && 'admin-post.php' === $GLOBALS['pagenow'] ); + + case 'edit-comments': + return ( ! empty( $GLOBALS['pagenow'] ) && 'edit-comments.php' === $GLOBALS['pagenow'] ); + + default: + return false; + } + // phpcs:enable WordPress.CSRF.NonceVerification.NoNonceVerification + } + + + /** + * Integration of the localization file + * + * @since 0.1 + * @change 2.4 + */ + public static function load_plugin_lang() { + load_plugin_textdomain( + 'antispam-bee' + ); + } + + + /** + * Add the link to the settings + * + * @since 1.1 + * @change 1.1 + * + * @param array $data The action link array. + * @return array $data The action link array. + */ + public static function init_action_links( $data ) { + if ( ! current_user_can( 'manage_options' ) ) { + return $data; + } + + return array_merge( + $data, + array( + sprintf( + '%s', + add_query_arg( + array( + 'page' => 'antispam_bee', + ), + admin_url( 'options-general.php' ) + ), + esc_attr__( 'Settings', 'antispam-bee' ) + ), + ) + ); + } + + /** + * Meta links of the plugin + * + * @since 0.1 + * @change 2.6.2 + * + * @param array $input Existing links. + * @param string $file Current page. + * @return array $data Modified links. + */ + public static function init_row_meta( $input, $file ) { + if ( $file !== self::$_base ) { + return $input; + } + + return array_merge( + $input, + array( + '' . esc_html__( 'Donate', 'antispam-bee' ) . '', + '' . esc_html__( 'Support', 'antispam-bee' ) . '', + ) + ); + } + + /* + * ############################ + * ####### RESOURCES ######## + * ############################ + */ + + /** + * Registration of resources (CSS & JS) + * + * @since 1.6 + * @change 2.4.5 + */ + public static function init_plugin_sources() { + $plugin = get_plugin_data( __FILE__ ); + + wp_register_script( + 'ab_script', + plugins_url( 'js/scripts.min.js', __FILE__ ), + array( 'jquery' ), + $plugin['Version'] + ); + + wp_register_style( + 'ab_style', + plugins_url( 'css/styles.min.css', __FILE__ ), + array( 'dashicons' ), + $plugin['Version'] + ); + } + + + /** + * Initialization of the option page + * + * @since 0.1 + * @change 2.4.3 + */ + public static function add_sidebar_menu() { + $page = add_options_page( + 'Antispam Bee', + 'Antispam Bee', + 'manage_options', + 'antispam_bee', + array( + 'Antispam_Bee_GUI', + 'options_page', + ) + ); + + add_action( + 'admin_print_scripts-' . $page, + array( + __CLASS__, + 'add_options_script', + ) + ); + + add_action( + 'admin_print_styles-' . $page, + array( + __CLASS__, + 'add_options_style', + ) + ); + + add_action( + 'load-' . $page, + array( + __CLASS__, + 'init_options_page', + ) + ); + } + + + /** + * Initialization of JavaScript + * + * @since 1.6 + * @change 2.4 + */ + public static function add_options_script() { + wp_enqueue_script( 'ab_script' ); + } + + + /** + * Initialization of Stylesheets + * + * @since 1.6 + * @change 2.4 + */ + public static function add_options_style() { + wp_enqueue_style( 'ab_style' ); + } + + + /** + * Integration of the GUI + * + * @since 2.4 + * @change 2.4 + */ + public static function init_options_page() { + require_once dirname( __FILE__ ) . '/inc/gui.class.php'; + } + + + + /* + * ############################ + * ####### DASHBOARD ######## + * ############################ + */ + + /** + * Display the spam counter on the dashboard + * + * @since 0.1 + * @change 2.6.5 + * + * @param array $items Initial array with dashboard items. + * @return array $items Merged array with dashboard items. + */ + public static function add_dashboard_count( $items = array() ) { + if ( ! current_user_can( 'manage_options' ) || ! self::get_option( 'dashboard_count' ) ) { + return $items; + } + + echo ''; + + $items[] = '' . esc_html( + sprintf( + // translators: The number of spam comments Antispam Bee blocked so far. + __( '%d Blocked', 'antispam-bee' ), + self::_get_spam_count() + ) + ) . ''; + + return $items; + } + + /** + * Initialize the dashboard chart + * + * @since 1.9 + * @change 2.5.6 + */ + public static function add_dashboard_chart() { + if ( ! current_user_can( 'publish_posts' ) || ! self::get_option( 'dashboard_chart' ) ) { + return; + } + + wp_add_dashboard_widget( + 'ab_widget', + 'Antispam Bee', + array( + __CLASS__, + 'show_spam_chart', + ) + ); + + add_action( + 'admin_head', + array( + __CLASS__, + 'add_dashboard_style', + ) + ); + } + + /** + * Print dashboard styles + * + * @since 1.9.0 + * @change 2.5.8 + */ + public static function add_dashboard_style() { + $plugin = get_plugin_data( __FILE__ ); + + wp_register_style( + 'ab_chart', + plugins_url( 'css/dashboard.min.css', __FILE__ ), + array(), + $plugin['Version'] + ); + + wp_print_styles( 'ab_chart' ); + } + + + /** + * Print dashboard scripts + * + * @since 1.9.0 + * @change 2.5.8 + */ + public static function add_dashboard_script() { + if ( ! self::get_option( 'daily_stats' ) ) { + return; + } + + $plugin = get_plugin_data( __FILE__ ); + + wp_enqueue_script( + 'raphael', + plugins_url( 'js/raphael.min.js', __FILE__ ), + array(), + '2.1.0', + true + ); + + wp_enqueue_script( + 'ab-raphael', + plugins_url( 'js/raphael.helper.min.js', __FILE__ ), + array( 'raphael' ), + $plugin['Version'], + true + ); + + wp_enqueue_script( + 'ab_chart_js', + plugins_url( 'js/dashboard.min.js', __FILE__ ), + array( 'jquery', 'ab-raphael' ), + $plugin['Version'], + true + ); + } + + /** + * Print dashboard html + * + * @since 1.9.0 + * @change 2.5.8 + */ + public static function show_spam_chart() { + $items = (array) self::get_option( 'daily_stats' ); + + if ( empty( $items ) ) { + echo sprintf( + '

                      %s

                      ', + esc_html__( 'No data available.', 'antispam-bee' ) + ); + + return; + } + + self::add_dashboard_script(); + + ksort( $items, SORT_NUMERIC ); + + $html = "\n"; + + $html .= "\n"; + foreach ( $items as $date => $count ) { + $html .= '\n"; + } + $html .= "\n"; + + $html .= "\n"; + foreach ( $items as $date => $count ) { + $html .= '\n"; + } + $html .= "\n"; + + $html .= "
                      ' . date_i18n( 'j. F Y', $date ) . "
                      ' . (int) $count . "
                      \n"; + + echo wp_kses_post( '
                      ' . $html . '
                      ' ); + } + + /* + * ############################ + * ######## OPTIONS ######### + * ############################ + */ + + /** + * Get all plugin options + * + * @since 2.4 + * @change 2.6.1 + * + * @return array $options Array with option fields. + */ + public static function get_options() { + $options = wp_cache_get( 'antispam_bee' ); + if ( ! $options ) { + wp_cache_set( + 'antispam_bee', + $options = get_option( 'antispam_bee' ) + ); + } + + return wp_parse_args( + $options, + self::$defaults['options'] + ); + } + + /** + * Get single option field + * + * @since 0.1 + * @change 2.4.2 + * + * @param string $field Field name. + * @return mixed Field value. + */ + public static function get_option( $field ) { + $options = self::get_options(); + + return self::get_key( $options, $field ); + } + + + /** + * Update single option field + * + * @since 0.1 + * @change 2.4 + * + * @param string $field Field name. + * @param mixed $value The Field value. + */ + private static function _update_option( $field, $value ) { + self::update_options( + array( + $field => $value, + ) + ); + } + + + /** + * Update multiple option fields + * + * @since 0.1 + * @change 2.6.1 + * + * @param array $data Array with plugin option fields. + */ + public static function update_options( $data ) { + $options = get_option( 'antispam_bee' ); + + if ( is_array( $options ) ) { + $options = array_merge( + $options, + $data + ); + } else { + $options = $data; + } + + update_option( + 'antispam_bee', + $options + ); + + wp_cache_set( + 'antispam_bee', + $options + ); + } + + + + /* + * ############################ + * ######## CRONJOBS ######## + * ############################ + */ + + /** + * Execution of the daily cronjobs + * + * @since 0.1 + * @change 2.4 + */ + public static function start_daily_cronjob() { + if ( ! self::get_option( 'cronjob_enable' ) ) { + return; + } + + self::_update_option( + 'cronjob_timestamp', + time() + ); + + self::_delete_old_spam(); + } + + + /** + * Delete old spam comments + * + * @since 0.1 + * @change 2.4 + */ + private static function _delete_old_spam() { + $days = (int) self::get_option( 'cronjob_interval' ); + + if ( empty( $days ) ) { + return false; + } + + global $wpdb; + + $wpdb->query( + $wpdb->prepare( + "DELETE FROM `$wpdb->comments` WHERE `comment_approved` = 'spam' AND SUBDATE(NOW(), %d) > comment_date_gmt", + $days + ) + ); + + $wpdb->query( "OPTIMIZE TABLE `$wpdb->comments`" ); + } + + + /** + * Initialization of the cronjobs + * + * @since 0.1 + * @change 2.4 + */ + public static function init_scheduled_hook() { + if ( ! wp_next_scheduled( 'antispam_bee_daily_cronjob' ) ) { + wp_schedule_event( + time(), + 'daily', + 'antispam_bee_daily_cronjob' + ); + } + } + + + /** + * Deletion of the cronjobs + * + * @since 0.1 + * @change 2.4 + */ + public static function clear_scheduled_hook() { + if ( wp_next_scheduled( 'antispam_bee_daily_cronjob' ) ) { + wp_clear_scheduled_hook( 'antispam_bee_daily_cronjob' ); + } + } + + + + /* + * ############################ + * ###### SPAM CHECK ######## + * ############################ + */ + + /** + * Check POST values + * + * @since 0.1 + * @change 2.6.3 + */ + public static function precheck_incoming_request() { + // phpcs:disable WordPress.CSRF.NonceVerification.NoNonceVerification + if ( is_feed() || is_trackback() || empty( $_POST ) || self::_is_mobile() ) { + return; + } + + $request_uri = self::get_key( $_SERVER, 'REQUEST_URI' ); + $request_path = self::parse_url( $request_uri, 'path' ); + + if ( strpos( $request_path, 'wp-comments-post.php' ) === false ) { + return; + } + + $post_id = (int) self::get_key( $_POST, 'comment_post_ID' ); + $hidden_field = self::get_key( $_POST, 'comment' ); + $plugin_field = self::get_key( $_POST, self::get_secret_name_for_post( $post_id ) ); + + if ( empty( $hidden_field ) && ! empty( $plugin_field ) ) { + $_POST['comment'] = $plugin_field; + unset( $_POST[ self::get_secret_name_for_post( $post_id ) ] ); + } else { + $_POST['ab_spam__hidden_field'] = 1; + } + // phpcs:enable WordPress.CSRF.NonceVerification.NoNonceVerification + } + + + /** + * Check incoming requests for spam + * + * @since 0.1 + * @change 2.6.3 + * + * @param array $comment Untreated comment. + * @return array $comment Treated comment. + */ + public static function handle_incoming_request( $comment ) { + $comment['comment_author_IP'] = self::get_client_ip(); + + $request_uri = self::get_key( $_SERVER, 'REQUEST_URI' ); + $request_path = self::parse_url( $request_uri, 'path' ); + + if ( empty( $request_path ) ) { + return self::_handle_spam_request( + $comment, + 'empty' + ); + } + + $ping = array( + 'types' => array( 'pingback', 'trackback', 'pings' ), + 'allowed' => ! self::get_option( 'ignore_pings' ), + ); + + // phpcs:disable WordPress.CSRF.NonceVerification.NoNonceVerification + // Everybody can post. + if ( strpos( $request_path, 'wp-comments-post.php' ) !== false && ! empty( $_POST ) ) { + // phpcs:enable WordPress.CSRF.NonceVerification.NoNonceVerification + $status = self::_verify_comment_request( $comment ); + + if ( ! empty( $status['reason'] ) ) { + return self::_handle_spam_request( + $comment, + $status['reason'] + ); + } + } elseif ( in_array( self::get_key( $comment, 'comment_type' ), $ping['types'], true ) && $ping['allowed'] ) { + $status = self::_verify_trackback_request( $comment ); + + if ( ! empty( $status['reason'] ) ) { + return self::_handle_spam_request( + $comment, + $status['reason'], + true + ); + } + } + + return $comment; + } + + + /** + * Prepares the replacement of the comment field + * + * @since 0.1 + * @change 2.4 + */ + public static function prepare_comment_field() { + if ( is_feed() || is_trackback() || is_robots() || self::_is_mobile() ) { + return; + } + + if ( ! is_singular() && ! self::get_option( 'always_allowed' ) ) { + return; + } + + ob_start( + array( + 'Antispam_Bee', + 'replace_comment_field', + ) + ); + } + + + /** + * Replaces the comment field + * + * @since 2.4 + * @change 2.6.4 + * + * @param string $data HTML code of the website. + * @return string Treated HTML code. + */ + public static function replace_comment_field( $data ) { + if ( empty( $data ) ) { + return; + } + + if ( ! preg_match( '# (?# match the whole textarea tag ) + '; + + $output .= $id_script; + $output .= $init_time_field; + + return $output; + } + + + /** + * Check the trackbacks + * + * @since 2.4 + * @change 2.7.0 + * + * @param array $comment Trackback data. + * @return array Array with suspected reason. + */ + private static function _verify_trackback_request( $comment ) { + $ip = self::get_key( $comment, 'comment_author_IP' ); + $url = self::get_key( $comment, 'comment_author_url' ); + $body = self::get_key( $comment, 'comment_content' ); + $post_id = self::get_key( $comment, 'comment_post_ID' ); + $type = self::get_key( $comment, 'comment_type' ); + $blog_name = self::get_key( $comment, 'comment_author' ); + + if ( empty( $url ) || empty( $body ) ) { + return array( + 'reason' => 'empty', + ); + } + + if ( empty( $ip ) ) { + return array( + 'reason' => 'empty', + ); + } + + if ( 'pingback' === $type && self::_pingback_from_myself( $url, $post_id ) ) { + return; + } + + if ( self::is_trackback_post_title_blog_name_spam( $body, $blog_name ) ) { + return array( + 'reason' => 'title_is_name', + ); + } + + $options = self::get_options(); + + if ( $options['bbcode_check'] && self::_is_bbcode_spam( $body ) ) { + return array( + 'reason' => 'bbcode', + ); + } + + if ( $options['advanced_check'] && self::_is_fake_ip( $ip, self::parse_url( $url, 'host' ) ) ) { + return array( + 'reason' => 'server', + ); + } + + if ( $options['spam_ip'] && self::_is_db_spam( $ip, $url ) ) { + return array( + 'reason' => 'localdb', + ); + } + + if ( $options['country_code'] && self::_is_country_spam( $ip ) ) { + return array( + 'reason' => 'country', + ); + } + + if ( $options['translate_api'] && self::_is_lang_spam( $body ) ) { + return array( + 'reason' => 'lang', + ); + } + + if ( $options['regexp_check'] && self::_is_regexp_spam( + array( + 'ip' => $ip, + 'rawurl' => $url, + 'host' => self::parse_url( $url, 'host' ), + 'body' => $body, + 'email' => '', + 'author' => '', + ) + ) ) { + return array( + 'reason' => 'regexp', + ); + } + } + + /** + * Check, if I pinged myself. + * + * @since 2.8.2 + * + * @param string $url The URL from where the ping came. + * @param int $target_post_id The post ID which has been pinged. + * + * @return bool + */ + private static function _pingback_from_myself( $url, $target_post_id ) { + + if ( 0 !== strpos( $url, home_url() ) ) { + return false; + } + + $original_post_id = (int) url_to_postid( $url ); + if ( ! $original_post_id ) { + return false; + } + + $post = get_post( $original_post_id ); + if ( ! $post ) { + return false; + } + + $urls = wp_extract_urls( $post->post_content ); + $url_to_find = get_permalink( $target_post_id ); + if ( ! $url_to_find ) { + return false; + } + foreach ( $urls as $url ) { + if ( strpos( $url, $url_to_find ) === 0 ) { + return true; + } + } + return false; + } + + /** + * Check the comment + * + * @since 2.4 + * @change 2.7.0 + * + * @param array $comment Data of the comment. + * @return array|void Array with suspected reason + */ + private static function _verify_comment_request( $comment ) { + $ip = self::get_key( $comment, 'comment_author_IP' ); + $url = self::get_key( $comment, 'comment_author_url' ); + $body = self::get_key( $comment, 'comment_content' ); + $email = self::get_key( $comment, 'comment_author_email' ); + $author = self::get_key( $comment, 'comment_author' ); + + if ( empty( $body ) ) { + return array( + 'reason' => 'empty', + ); + } + + if ( empty( $ip ) ) { + return array( + 'reason' => 'empty', + ); + } + + if ( get_option( 'require_name_email' ) && ( empty( $email ) || empty( $author ) ) ) { + return array( + 'reason' => 'empty', + ); + } + + $options = self::get_options(); + + if ( $options['already_commented'] && ! empty( $email ) && self::_is_approved_email( $email ) ) { + return; + } + + if ( $options['gravatar_check'] && ! empty( $email ) && 1 === (int) get_option( 'show_avatars', 0 ) && self::_has_valid_gravatar( $email ) ) { + return; + } + + // phpcs:disable WordPress.CSRF.NonceVerification.NoNonceVerification + if ( ! empty( $_POST['ab_spam__hidden_field'] ) ) { + return array( + 'reason' => 'css', + ); + } + // phpcs:enable WordPress.CSRF.NonceVerification.NoNonceVerification + + if ( $options['time_check'] && self::_is_shortest_time() ) { + return array( + 'reason' => 'time', + ); + } + + if ( $options['bbcode_check'] && self::_is_bbcode_spam( $body ) ) { + return array( + 'reason' => 'bbcode', + ); + } + + if ( $options['advanced_check'] && self::_is_fake_ip( $ip ) ) { + return array( + 'reason' => 'server', + ); + } + + if ( $options['regexp_check'] && self::_is_regexp_spam( + array( + 'ip' => $ip, + 'rawurl' => $url, + 'host' => self::parse_url( $url, 'host' ), + 'body' => $body, + 'email' => $email, + 'author' => $author, + ) + ) ) { + return array( + 'reason' => 'regexp', + ); + } + + if ( $options['spam_ip'] && self::_is_db_spam( $ip, $url, $email ) ) { + return array( + 'reason' => 'localdb', + ); + } + + if ( $options['country_code'] && self::_is_country_spam( $ip ) ) { + return array( + 'reason' => 'country', + ); + } + + if ( $options['translate_api'] && self::_is_lang_spam( $body ) ) { + return array( + 'reason' => 'lang', + ); + } + } + + + /** + * Check for a Gravatar image + * + * @since 2.6.5 + * @change 2.6.5 + * + * @param string $email Input email. + * @return boolean Check status (true = Gravatar available). + */ + private static function _has_valid_gravatar( $email ) { + $response = wp_safe_remote_get( + sprintf( + 'https://www.gravatar.com/avatar/%s?d=404', + md5( strtolower( trim( $email ) ) ) + ) + ); + + if ( is_wp_error( $response ) ) { + return null; + } + + if ( wp_remote_retrieve_response_code( $response ) === 200 ) { + return true; + } + + return false; + } + + + /** + * Check for comment action time + * + * @since 2.6.4 + * @change 2.6.4 + * + * @return boolean TRUE if the action time is less than 5 seconds + */ + private static function _is_shortest_time() { + // phpcs:disable WordPress.CSRF.NonceVerification.NoNonceVerification + // Everybody can Post. + $init_time = (int) self::get_key( $_POST, 'ab_init_time' ); + // phpcs:enable WordPress.CSRF.NonceVerification.NoNonceVerification + if ( 0 === $init_time ) { + return false; + } + + if ( time() - $init_time < apply_filters( 'ab_action_time_limit', 5 ) ) { + return true; + } + + return false; + } + + /** + * Check if the blog name and the title of the blog post from which the trackback originates are equal. + * + * @since 2.6.4 + * + * @param string $body The comment body. + * @param string $blog_name The name of the blog. + * + * @return bool + */ + private static function is_trackback_post_title_blog_name_spam( $body, $blog_name ) { + preg_match( '/(.*)<\/strong>\\n\\n/', $body, $matches ); + if ( ! isset( $matches[1] ) ) { + return false; + } + return trim( $matches[1] ) === trim( $blog_name ); + } + + + /** + * Usage of regexp, also custom + * + * @since 2.5.2 + * @change 2.5.6 + * + * @param array $comment Array with commentary data. + * @return boolean True for suspicious comment. + */ + private static function _is_regexp_spam( $comment ) { + $fields = array( + 'ip', + 'host', + 'body', + 'email', + 'author', + ); + + $patterns = array( + array( + 'host' => '^(www\.)?\d+\w+\.com$', + 'body' => '^\w+\s\d+$', + 'email' => '@gmail.com$', + ), + array( + 'body' => '\<\!.+?mfunc.+?\>', + ), + array( + 'author' => 'moncler|north face|vuitton|handbag|burberry|outlet|prada|cialis|viagra|maillot|oakley|ralph lauren|ray ban|iphone|プラダ', + ), + array( + 'host' => '^(www\.)?fkbook\.co\.uk$|^(www\.)?nsru\.net$|^(www\.)?goo\.gl$|^(www\.)?bit\.ly$', + ), + array( + 'body' => 'target[t]?ed (visitors|traffic)|viagra|cialis', + ), + array( + 'body' => 'purchase amazing|buy amazing', + ), + array( + 'body' => 'dating|sex|lotto|pharmacy', + 'email' => '@mail\.ru|@yandex\.', + ), + ); + + $quoted_author = preg_quote( $comment['author'], '/' ); + if ( $quoted_author ) { + $patterns[] = array( + 'body' => sprintf( + '%s<\/a>$', + $quoted_author + ), + ); + $patterns[] = array( + 'body' => sprintf( + '%s https?:.+?$', + $quoted_author + ), + ); + $patterns[] = array( + 'email' => '@gmail.com$', + 'author' => '^[a-z0-9-\.]+\.[a-z]{2,6}$', + 'host' => sprintf( + '^%s$', + $quoted_author + ), + ); + } + + $patterns = apply_filters( + 'antispam_bee_patterns', + $patterns + ); + + if ( ! $patterns ) { + return false; + } + + foreach ( $patterns as $pattern ) { + $hits = array(); + + foreach ( $pattern as $field => $regexp ) { + if ( empty( $field ) || ! in_array( $field, $fields, true ) || empty( $regexp ) ) { + continue; + } + + $comment[ $field ] = ( function_exists( 'iconv' ) ? iconv( 'utf-8', 'utf-8//TRANSLIT', $comment[ $field ] ) : $comment[ $field ] ); + + if ( empty( $comment[ $field ] ) ) { + continue; + } + + if ( preg_match( '/' . $regexp . '/isu', $comment[ $field ] ) ) { + $hits[ $field ] = true; + } + } + + if ( count( $hits ) === count( $pattern ) ) { + return true; + } + } + + return false; + } + + + /** + * Review a comment on its existence in the local spam + * + * @since 2.0.0 + * @change 2.5.4 + * + * @param string $ip Comment IP. + * @param string $url Comment URL (optional). + * @param string $email Comment Email (optional). + * @return boolean True for suspicious comment. + */ + private static function _is_db_spam( $ip, $url = '', $email = '' ) { + global $wpdb; + + $params = array(); + $filter = array(); + if ( ! empty( $url ) ) { + $filter[] = '`comment_author_url` = %s'; + $params[] = wp_unslash( $url ); + } + if ( ! empty( $ip ) ) { + $filter[] = '`comment_author_IP` = %s'; + $params[] = wp_unslash( $ip ); + } + + if ( ! empty( $email ) ) { + $filter[] = '`comment_author_email` = %s'; + $params[] = wp_unslash( $email ); + } + if ( empty( $params ) ) { + return false; + } + + // phpcs:disable WordPress.WP.PreparedSQL.NotPrepared + // phpcs:disable WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber + $filter_sql = implode( ' OR ', $filter ); + + $result = $wpdb->get_var( + $wpdb->prepare( + sprintf( + "SELECT `comment_ID` FROM `$wpdb->comments` WHERE `comment_approved` = 'spam' AND (%s) LIMIT 1", + $filter_sql + ), + $params + ) + ); + // phpcs:enable WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber + // phpcs:enable WordPress.WP.PreparedSQL.NotPrepared + + return ! empty( $result ); + } + + + /** + * Check for country spam by (anonymized) IP + * + * @since 2.6.9 + * @change 2.6.9 + * + * @param string $ip IP address. + * @return boolean True if the comment is spam based on country filter. + */ + private static function _is_country_spam( $ip ) { + $options = self::get_options(); + + $white = preg_split( + '/[\s,;]+/', + $options['country_white'], + -1, + PREG_SPLIT_NO_EMPTY + ); + $black = preg_split( + '/[\s,;]+/', + $options['country_black'], + -1, + PREG_SPLIT_NO_EMPTY + ); + + if ( empty( $white ) && empty( $black ) ) { + return false; + } + + $response = wp_safe_remote_head( + esc_url_raw( + sprintf( + 'https://api.ip2country.info/ip?%s', + self::_anonymize_ip( $ip ) + ), + 'https' + ) + ); + + if ( is_wp_error( $response ) ) { + return false; + } + + if ( wp_remote_retrieve_response_code( $response ) !== 200 ) { + return false; + } + + $country = (string) wp_remote_retrieve_header( $response, 'x-country-code' ); + + if ( empty( $country ) || strlen( $country ) !== 2 ) { + return false; + } + + if ( ! empty( $black ) ) { + return ( in_array( $country, $black, true ) ); + } + + return ( ! in_array( $country, $white, true ) ); + } + + + /** + * Check for BBCode spam + * + * @since 2.5.1 + * @change 2.5.1 + * + * @param string $body Content of a comment. + * @return boolean True for BBCode in content + */ + private static function _is_bbcode_spam( $body ) { + return (bool) preg_match( '/\[url[=\]].*\[\/url\]/is', $body ); + } + + + /** + * Check for an already approved e-mail address + * + * @since 2.0 + * @change 2.5.1 + * + * @param string $email E-mail address. + * @return boolean True for a found entry. + */ + private static function _is_approved_email( $email ) { + global $wpdb; + + $result = $wpdb->get_var( + $wpdb->prepare( + "SELECT `comment_ID` FROM `$wpdb->comments` WHERE `comment_approved` = '1' AND `comment_author_email` = %s LIMIT 1", + wp_unslash( $email ) + ) + ); + + if ( $result ) { + return true; + } + + return false; + } + + + /** + * Check for a fake IP + * + * @since 2.0 + * @change 2.6.2 + * + * @param string $client_ip Client IP. + * @param string $client_host Client Host (optional). + * @return boolean True if fake IP. + */ + private static function _is_fake_ip( $client_ip, $client_host = '' ) { + $host_by_ip = gethostbyaddr( $client_ip ); + + if ( self::_is_ipv6( $client_ip ) ) { + return $client_ip !== $host_by_ip; + } + + if ( empty( $client_host ) ) { + $ip_by_host = gethostbyname( $host_by_ip ); + + if ( $ip_by_host === $host_by_ip ) { + return false; + } + } else { + if ( $host_by_ip === $client_ip ) { + return true; + } + + $ip_by_host = gethostbyname( $client_host ); + } + + if ( strpos( $client_ip, self::_cut_ip( $ip_by_host ) ) === false ) { + return true; + } + + return false; + } + + /** + * Check for unwanted languages + * + * @since 2.0 + * @change 2.6.6 + * @change 2.8.2 + * + * @param string $comment_content Content of the comment. + * + * @return boolean TRUE if it is spam. + */ + private static function _is_lang_spam( $comment_content ) { + $allowed_lang = (array) self::get_option( 'translate_lang' ); + + $comment_text = wp_strip_all_tags( $comment_content ); + + if ( empty( $allowed_lang ) || empty( $comment_text ) ) { + return false; + } + + /** + * Filters the detected language. With this filter, other detection methods can skip in and detect the language. + * + * @since 2.8.2 + * + * @param null $detected_lang The detected language. + * @param string $comment_text The text, to detect the language. + * + * @return null|string The detected language or null. + */ + $detected_lang = apply_filters( 'antispam_bee_detected_lang', null, $comment_text ); + if ( null !== $detected_lang ) { + return ! in_array( $detected_lang, $allowed_lang, true ); + } + + $word_count = 0; + $text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $comment_text ), ' ' ); + + /* + * translators: If your word count is based on single characters (e.g. East Asian characters), + * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'. + * Do not translate into your own language. + */ + if ( strpos( _x( 'words', 'Word count type. Do not translate!' ), 'characters' ) === 0 && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) { + preg_match_all( '/./u', $text, $words_array ); + if ( isset( $words_array[0] ) ) { + $word_count = count( $words_array[0] ); + } + } else { + $words_array = preg_split( "/[\n\r\t ]+/", $text, -1, PREG_SPLIT_NO_EMPTY ); + $word_count = count( $words_array ); + } + + if ( $word_count < 10 ) { + return false; + } + + $response = wp_safe_remote_post( + 'https://api.pluginkollektiv.org/language/v1/', + array( 'body' => wp_json_encode( array( 'body' => $comment_text ) ) ) + ); + + if ( is_wp_error( $response ) + || wp_remote_retrieve_response_code( $response ) !== 200 ) { + return false; + } + + $detected_lang = wp_remote_retrieve_body( $response ); + if ( ! $detected_lang ) { + return false; + } + + $detected_lang = json_decode( $detected_lang ); + if ( ! $detected_lang || ! isset( $detected_lang->code ) ) { + return false; + } + + return ! in_array( self::_map_lang_code( $detected_lang->code ), $allowed_lang, true ); + } + + /** + * Map franc language codes + * + * @since 2.9.0 + * + * @param string $franc_code The franc code, received from the service. + * + * @return string Mapped ISO code + */ + private static function _map_lang_code( $franc_code ) { + $codes = array( + 'zha' => 'za', + 'zho' => 'zh', + 'zul' => 'zu', + 'yid' => 'yi', + 'yor' => 'yo', + 'xho' => 'xh', + 'wln' => 'wa', + 'wol' => 'wo', + 'ven' => 've', + 'vie' => 'vi', + 'vol' => 'vo', + 'uig' => 'ug', + 'ukr' => 'uk', + 'urd' => 'ur', + 'uzb' => 'uz', + 'tah' => 'ty', + 'tam' => 'ta', + 'tat' => 'tt', + 'tel' => 'te', + 'tgk' => 'tg', + 'tgl' => 'tl', + 'tha' => 'th', + 'tir' => 'ti', + 'ton' => 'to', + 'tsn' => 'tn', + 'tso' => 'ts', + 'tuk' => 'tk', + 'tur' => 'tr', + 'twi' => 'tw', + 'sag' => 'sg', + 'san' => 'sa', + 'sin' => 'si', + 'slk' => 'sk', + 'slv' => 'sl', + 'sme' => 'se', + 'smo' => 'sm', + 'sna' => 'sn', + 'snd' => 'sd', + 'som' => 'so', + 'sot' => 'st', + 'spa' => 'es', + 'sqi' => 'sq', + 'srd' => 'sc', + 'srp' => 'sr', + 'ssw' => 'ss', + 'sun' => 'su', + 'swa' => 'sw', + 'swe' => 'sv', + 'roh' => 'rm', + 'ron' => 'ro', + 'run' => 'rn', + 'rus' => 'ru', + 'que' => 'qu', + 'pan' => 'pa', + 'pli' => 'pi', + 'pol' => 'pl', + 'por' => 'pt', + 'pus' => 'ps', + 'oci' => 'oc', + 'oji' => 'oj', + 'ori' => 'or', + 'orm' => 'om', + 'oss' => 'os', + 'nau' => 'na', + 'nav' => 'nv', + 'nbl' => 'nr', + 'nde' => 'nd', + 'ndo' => 'ng', + 'nep' => 'ne', + 'nld' => 'nl', + 'nno' => 'nn', + 'nob' => 'nb', + 'nor' => 'no', + 'nya' => 'ny', + 'mah' => 'mh', + 'mal' => 'ml', + 'mar' => 'mr', + 'mkd' => 'mk', + 'mlg' => 'mg', + 'mlt' => 'mt', + 'mon' => 'mn', + 'mri' => 'mi', + 'msa' => 'ms', + 'mya' => 'my', + 'lao' => 'lo', + 'lat' => 'la', + 'lav' => 'lv', + 'lim' => 'li', + 'lin' => 'ln', + 'lit' => 'lt', + 'ltz' => 'lb', + 'lub' => 'lu', + 'lug' => 'lg', + 'kal' => 'kl', + 'kan' => 'kn', + 'kas' => 'ks', + 'kat' => 'ka', + 'kau' => 'kr', + 'kaz' => 'kk', + 'khm' => 'km', + 'kik' => 'ki', + 'kin' => 'rw', + 'kir' => 'ky', + 'kom' => 'kv', + 'kon' => 'kg', + 'kor' => 'ko', + 'kua' => 'kj', + 'kur' => 'ku', + 'jav' => 'jv', + 'jpn' => 'ja', + 'ibo' => 'ig', + 'ido' => 'io', + 'iii' => 'ii', + 'iku' => 'iu', + 'ile' => 'ie', + 'ina' => 'ia', + 'ind' => 'id', + 'ipk' => 'ik', + 'isl' => 'is', + 'ita' => 'it', + 'hat' => 'ht', + 'hau' => 'ha', + 'hbs' => 'sh', + 'heb' => 'he', + 'her' => 'hz', + 'hin' => 'hi', + 'hmo' => 'ho', + 'hrv' => 'hr', + 'hun' => 'hu', + 'hye' => 'hy', + 'gla' => 'gd', + 'gle' => 'ga', + 'glg' => 'gl', + 'glv' => 'gv', + 'grn' => 'gn', + 'guj' => 'gu', + 'fao' => 'fo', + 'fas' => 'fa', + 'fij' => 'fj', + 'fin' => 'fi', + 'fra' => 'fr', + 'fry' => 'fy', + 'ful' => 'ff', + 'ell' => 'el', + 'eng' => 'en', + 'epo' => 'eo', + 'est' => 'et', + 'eus' => 'eu', + 'ewe' => 'ee', + 'dan' => 'da', + 'deu' => 'de', + 'div' => 'dv', + 'dzo' => 'dz', + 'cat' => 'ca', + 'ces' => 'cs', + 'cha' => 'ch', + 'che' => 'ce', + 'chu' => 'cu', + 'chv' => 'cv', + 'cor' => 'kw', + 'cos' => 'co', + 'cre' => 'cr', + 'cym' => 'cy', + 'bak' => 'ba', + 'bam' => 'bm', + 'bel' => 'be', + 'ben' => 'bn', + 'bis' => 'bi', + 'bod' => 'bo', + 'bos' => 'bs', + 'bre' => 'br', + 'bul' => 'bg', + 'aar' => 'aa', + 'abk' => 'ab', + 'afr' => 'af', + 'aka' => 'ak', + 'amh' => 'am', + 'ara' => 'ar', + 'arg' => 'an', + 'asm' => 'as', + 'ava' => 'av', + 'ave' => 'ae', + 'aym' => 'ay', + 'aze' => 'az', + 'nds' => 'de', + ); + + if ( array_key_exists( $franc_code, $codes ) ) { + return $codes[ $franc_code ]; + } + + return $franc_code; + } + + /** + * Trim IP addresses + * + * @since 0.1 + * @change 2.5.1 + * + * @param string $ip Original IP. + * @param boolean $cut_end Shortening the end. + * @return string Shortened IP. + */ + private static function _cut_ip( $ip, $cut_end = true ) { + $separator = ( self::_is_ipv4( $ip ) ? '.' : ':' ); + + return str_replace( + ( $cut_end ? strrchr( $ip, $separator ) : strstr( $ip, $separator ) ), + '', + $ip + ); + } + + + /** + * Anonymize the IP addresses + * + * @since 2.5.1 + * @change 2.5.1 + * + * @param string $ip Original IP. + * @return string Anonymous IP. + */ + private static function _anonymize_ip( $ip ) { + if ( self::_is_ipv4( $ip ) ) { + return self::_cut_ip( $ip ) . '.0'; + } + + return self::_cut_ip( $ip, false ) . ':0:0:0:0:0:0:0'; + } + + + /** + * Rotates the IP address + * + * @since 2.4.5 + * @change 2.4.5 + * + * @param string $ip IP address. + * @return string Turned IP address. + */ + private static function _reverse_ip( $ip ) { + return implode( + '.', + array_reverse( + explode( + '.', + $ip + ) + ) + ); + } + + + /** + * Check for an IPv4 address + * + * @since 2.4 + * @change 2.6.4 + * + * @param string $ip IP to validate. + * @return integer TRUE if IPv4. + */ + private static function _is_ipv4( $ip ) { + if ( function_exists( 'filter_var' ) ) { + return filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) !== false; + } else { + return preg_match( '/^\d{1,3}(\.\d{1,3}){3,3}$/', $ip ); + } + } + + + /** + * Check for an IPv6 address + * + * @since 2.6.2 + * @change 2.6.4 + * + * @param string $ip IP to validate. + * @return boolean TRUE if IPv6. + */ + private static function _is_ipv6( $ip ) { + if ( function_exists( 'filter_var' ) ) { + return filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) !== false; + } else { + return ! self::_is_ipv4( $ip ); + } + } + + + /** + * Testing on mobile devices + * + * @since 0.1 + * @change 2.4 + * + * @return boolean TRUE if "wptouch" is active + */ + private static function _is_mobile() { + return strpos( get_template_directory(), 'wptouch' ); + } + + + + /* + * ############################ + * ##### SPAM-TREATMENT ##### + * ############################ + */ + + /** + * Execution of the delete/marking process + * + * @since 0.1 + * @change 2.6.0 + * + * @param array $comment Untreated commentary data. + * @param string $reason Reason for suspicion. + * @param boolean $is_ping Ping (optional). + * @return array $comment Treated commentary data. + */ + private static function _handle_spam_request( $comment, $reason, $is_ping = false ) { + + $options = self::get_options(); + + $spam_remove = ! $options['flag_spam']; + $spam_notice = ! $options['no_notice']; + + // Filter settings. + $ignore_filter = $options['ignore_filter']; + $ignore_type = $options['ignore_type']; + $ignore_reason = in_array( $reason, (array) $options['ignore_reasons'], true ); + + // Remember spam. + self::_update_spam_log( $comment ); + self::_update_spam_count(); + self::_update_daily_stats(); + + // Delete spam. + if ( $spam_remove ) { + self::_go_in_peace(); + } + + if ( $ignore_filter && ( ( 1 === (int) $ignore_type && $is_ping ) || ( 2 === (int) $ignore_type && ! $is_ping ) ) ) { + self::_go_in_peace(); + } + + // Spam reason. + if ( $ignore_reason ) { + self::_go_in_peace(); + } + self::$_reason = $reason; + + // Mark spam. + add_filter( + 'pre_comment_approved', + array( + __CLASS__, + 'return_spam', + ) + ); + + // Send e-mail. + add_action( + 'comment_post', + array( + __CLASS__, + 'send_mail_notification', + ) + ); + + // Spam reason as comment meta. + if ( $spam_notice ) { + add_action( + 'comment_post', + array( + __CLASS__, + 'add_spam_reason_to_comment', + ) + ); + } + + return $comment; + } + + + /** + * Logfile with detected spam + * + * @since 2.5.7 + * @change 2.6.1 + * + * @param array $comment Array with commentary data. + * @return mixed FALSE in case of error + */ + private static function _update_spam_log( $comment ) { + if ( ! defined( 'ANTISPAM_BEE_LOG_FILE' ) || ! ANTISPAM_BEE_LOG_FILE || ! is_writable( ANTISPAM_BEE_LOG_FILE ) || validate_file( ANTISPAM_BEE_LOG_FILE ) === 1 ) { + return false; + } + + $entry = sprintf( + '%s comment for post=%d from host=%s marked as spam%s', + current_time( 'mysql' ), + $comment['comment_post_ID'], + $comment['comment_author_IP'], + PHP_EOL + ); + + file_put_contents( + ANTISPAM_BEE_LOG_FILE, + $entry, + FILE_APPEND | LOCK_EX + ); + } + + + /** + * Sends the 403 header and terminates the connection + * + * @since 2.5.6 + * @change 2.5.6 + */ + private static function _go_in_peace() { + status_header( 403 ); + die( 'Spam deleted.' ); + } + + + /** + * Return real client IP + * + * @since 2.6.1 + * @change 2.6.1 + * + * @return mixed $ip Client IP + */ + public static function get_client_ip() { + // phpcs:disable WordPress.VIP.ValidatedSanitizedInput.InputNotSanitized + // Sanitization of $ip takes place further down. + if ( isset( $_SERVER['HTTP_CLIENT_IP'] ) ) { + $ip = wp_unslash( $_SERVER['HTTP_CLIENT_IP'] ); + } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { + $ip = wp_unslash( $_SERVER['HTTP_X_FORWARDED_FOR'] ); + } elseif ( isset( $_SERVER['HTTP_X_FORWARDED'] ) ) { + $ip = wp_unslash( $_SERVER['HTTP_X_FORWARDED'] ); + } elseif ( isset( $_SERVER['HTTP_FORWARDED_FOR'] ) ) { + $ip = wp_unslash( $_SERVER['HTTP_FORWARDED_FOR'] ); + } elseif ( isset( $_SERVER['HTTP_FORWARDED'] ) ) { + $ip = wp_unslash( $_SERVER['HTTP_FORWARDED'] ); + } elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) { + $ip = wp_unslash( $_SERVER['REMOTE_ADDR'] ); + } else { + return ''; + } + // phpcs:enable WordPress.VIP.ValidatedSanitizedInput.InputNotSanitized + + if ( strpos( $ip, ',' ) !== false ) { + $ips = explode( ',', $ip ); + $ip = trim( $ips[0] ); + } + + if ( function_exists( 'filter_var' ) ) { + return filter_var( + $ip, + FILTER_VALIDATE_IP + ); + } + + return preg_replace( + '/[^0-9a-f:\., ]/si', + '', + $ip + ); + } + + /** + * Add spam reason as comment data + * + * @since 2.6.0 + * @change 2.6.0 + * + * @param integer $comment_id Comment ID. + */ + public static function add_spam_reason_to_comment( $comment_id ) { + add_comment_meta( + $comment_id, + 'antispam_bee_reason', + self::$_reason + ); + } + + /** + * Saves the IP address. + * + * @param int $comment_id The ID of the comment. + */ + public static function save_ip_hash( $comment_id ) { + $hashed_ip = self::hash_ip( self::get_client_ip() ); + add_comment_meta( + $comment_id, + 'antispam_bee_iphash', + $hashed_ip + ); + } + + /** + * Hashes an IP address + * + * @param string $ip The IP address to hash. + * + * @return string + */ + public static function hash_ip( $ip ) { + return wp_hash_password( $ip ); + } + + + /** + * Delete spam reason as comment data + * + * @since 2.6.0 + * @change 2.6.0 + * + * @param integer $comment_id Comment ID. + */ + public static function delete_spam_reason_by_comment( $comment_id ) { + delete_comment_meta( + $comment_id, + 'antispam_bee_reason' + ); + } + + /** + * Get the current post ID. + * + * @since 2.7.1 + */ + public static function populate_post_id() { + + if ( null === self::$_current_post_id ) { + self::$_current_post_id = get_the_ID(); + } + } + + + /** + * Send notification via e-mail + * + * @since 0.1 + * @change 2.5.7 + * + * @hook string antispam_bee_notification_subject Custom subject for notification mails + * + * @param int $id ID of the comment. + * @return int $id ID of the comment. + */ + public static function send_mail_notification( $id ) { + $options = self::get_options(); + + if ( ! $options['email_notify'] ) { + return $id; + } + + $comment = get_comment( $id, ARRAY_A ); + + if ( empty( $comment ) ) { + return $id; + } + + $post = get_post( $comment['comment_post_ID'] ); + if ( ! $post ) { + return $id; + } + + self::load_plugin_lang(); + + $subject = sprintf( + '[%s] %s', + stripslashes_deep( + html_entity_decode( + get_bloginfo( 'name' ), + ENT_QUOTES + ) + ), + esc_html__( 'Comment marked as spam', 'antispam-bee' ) + ); + + // Content. + $content = strip_tags( stripslashes( $comment['comment_content'] ) ); + if ( ! $content ) { + $content = sprintf( + '-- %s --', + esc_html__( 'Content removed by Antispam Bee', 'antispam-bee' ) + ); + } + + // Body. + $body = sprintf( + "%s \"%s\"\r\n\r\n", + esc_html__( 'New spam comment on your post', 'antispam-bee' ), + strip_tags( $post->post_title ) + ) . sprintf( + "%s: %s\r\n", + esc_html__( 'Author', 'antispam-bee' ), + ( empty( $comment['comment_author'] ) ? '' : strip_tags( $comment['comment_author'] ) ) + ) . sprintf( + "URL: %s\r\n", + // empty check exists. + esc_url( $comment['comment_author_url'] ) + ) . sprintf( + "%s: %s\r\n", + esc_html__( 'Type', 'antispam-bee' ), + esc_html( ( empty( $comment['comment_type'] ) ? __( 'Comment', 'antispam-bee' ) : __( 'Trackback', 'antispam-bee' ) ) ) + ) . sprintf( + "Whois: http://whois.arin.net/rest/ip/%s\r\n", + $comment['comment_author_IP'] + ) . sprintf( + "%s: %s\r\n\r\n", + esc_html__( 'Spam Reason', 'antispam-bee' ), + esc_html( self::$defaults['reasons'][ self::$_reason ] ) + ) . sprintf( + "%s\r\n\r\n\r\n", + $content + ) . ( + EMPTY_TRASH_DAYS ? ( + sprintf( + "%s: %s\r\n", + esc_html__( 'Trash it', 'antispam-bee' ), + admin_url( 'comment.php?action=trash&c=' . $id ) + ) + ) : ( + sprintf( + "%s: %s\r\n", + esc_html__( 'Delete it', 'antispam-bee' ), + admin_url( 'comment.php?action=delete&c=' . $id ) + ) + ) + ) . sprintf( + "%s: %s\r\n", + esc_html__( 'Approve it', 'antispam-bee' ), + admin_url( 'comment.php?action=approve&c=' . $id ) + ) . sprintf( + "%s: %s\r\n\r\n", + esc_html__( 'Spam list', 'antispam-bee' ), + admin_url( 'edit-comments.php?comment_status=spam' ) + ) . sprintf( + "%s\r\n%s\r\n", + esc_html__( 'Notify message by Antispam Bee', 'antispam-bee' ), + esc_html__( 'http://antispambee.com', 'antispam-bee' ) + ); + + wp_mail( + /** + * Filters the recipients of the spam notification. + * + * @param array The recipients array. + */ + apply_filters( + 'antispam_bee_notification_recipients', + array( get_bloginfo( 'admin_email' ) ) + ), + /** + * Filters the subject of the spam notification. + * + * @param string $subject subject line. + */ + apply_filters( + 'antispam_bee_notification_subject', + $subject + ), + $body + ); + + return $id; + } + + + + /* + * ############################ + * ####### STATISTICS ####### + * ############################ + */ + + /** + * Return the number of spam comments + * + * @since 0.1 + * @change 2.4 + */ + private static function _get_spam_count() { + // Init. + $count = self::get_option( 'spam_count' ); + + // Fire. + return ( get_locale() === 'de_DE' ? number_format( $count, 0, '', '.' ) : number_format_i18n( $count ) ); + } + + + /** + * Output the number of spam comments + * + * @since 0.1 + * @change 2.4 + */ + public static function the_spam_count() { + echo esc_html( self::_get_spam_count() ); + } + + + /** + * Update the number of spam comments + * + * @since 0.1 + * @change 2.6.1 + */ + private static function _update_spam_count() { + // Skip if not enabled. + if ( ! self::get_option( 'dashboard_count' ) ) { + return; + } + + self::_update_option( + 'spam_count', + intval( self::get_option( 'spam_count' ) + 1 ) + ); + } + + /** + * Update statistics + * + * @since 1.9 + * @change 2.6.1 + */ + private static function _update_daily_stats() { + // Skip if not enabled. + if ( ! self::get_option( 'dashboard_chart' ) ) { + return; + } + + // Init. + $stats = (array) self::get_option( 'daily_stats' ); + $today = (int) strtotime( 'today' ); + + // Count up. + if ( array_key_exists( $today, $stats ) ) { + $stats[ $today ] ++; + } else { + $stats[ $today ] = 1; + } + + // Sort. + krsort( $stats, SORT_NUMERIC ); + + // Save. + self::_update_option( + 'daily_stats', + array_slice( $stats, 0, 31, true ) + ); + } + + /** + * Returns the secret of a post used in the textarea name attribute. + * + * @param int $post_id The Post ID. + * + * @return string + */ + public static function get_secret_name_for_post( $post_id ) { + + if ( self::get_option( 'always_allowed' ) ) { + $secret = substr( sha1( md5( 'comment-id' . self::$_salt ) ), 0, 10 ); + } else { + $secret = substr( sha1( md5( 'comment-id' . self::$_salt . (int) $post_id ) ), 0, 10 ); + } + + $secret = self::ensure_secret_starts_with_letter( $secret ); + + /** + * Filters the secret for a post, which is used in the textarea name attribute. + * + * @param string $secret The secret. + * @param int $post_id The post ID. + * @param bool $always_allowed Whether the comment form is used outside of the single post view or not. + */ + return apply_filters( + 'ab_get_secret_name_for_post', + $secret, + (int) $post_id, + (bool) self::get_option( 'always_allowed' ) + ); + + } + + /** + * Returns the secret of a post used in the textarea id attribute. + * + * @param int $post_id The post ID. + * + * @return string + */ + public static function get_secret_id_for_post( $post_id ) { + + if ( self::get_option( 'always_allowed' ) ) { + $secret = substr( sha1( md5( 'comment-id' . self::$_salt ) ), 0, 10 ); + } else { + $secret = substr( sha1( md5( 'comment-id' . self::$_salt . (int) $post_id ) ), 0, 10 ); + } + + $secret = self::ensure_secret_starts_with_letter( $secret ); + + /** + * Filters the secret for a post, which is used in the textarea id attribute. + * + * @param string $secret The secret. + * @param int $post_id The post ID. + * @param bool $always_allowed Whether the comment form is used outside of the single post view or not. + */ + return apply_filters( + 'ab_get_secret_id_for_post', + $secret, + (int) $post_id, + (bool) self::get_option( 'always_allowed' ) + ); + } + + /** + * Ensures that the secret starts with a letter. + * + * @param string $secret The secret. + * + * @return string + */ + public static function ensure_secret_starts_with_letter( $secret ) { + + $first_char = substr( $secret, 0, 1 ); + if ( is_numeric( $first_char ) ) { + return chr( $first_char + 97 ) . substr( $secret, 1 ); + } else { + return $secret; + } + } + + /** + * Returns 'spam' + * + * @since 2.7.3 + * + * @return string + */ + public static function return_spam() { + + return 'spam'; + } + + /** + * A wrapper around wp_parse_url(). + * + * @since 2.8.2 + * + * @param string $url The URL to parse. + * @param string $component The component to get back. + * + * @return string + */ + private static function parse_url( $url, $component = 'host' ) { + + $parts = wp_parse_url( $url ); + return ( is_array( $parts ) && isset( $parts[ $component ] ) ) ? $parts[ $component ] : ''; + } + + /** + * Updates the database structure if necessary + */ + public static function update_database() { + if ( self::db_version_is_current() ) { + return; + } + + global $wpdb; + + /** + * In Version 2.9 the IP of the commenter was saved as a hash. We reverted this solution. + * Therefore, we need to delete this unused data. + */ + //phpcs:disable WordPress.WP.PreparedSQL.NotPrepared + $sql = 'delete from `' . $wpdb->commentmeta . '` where `meta_key` IN ("antispam_bee_iphash")'; + $wpdb->query( $sql ); + //phpcs:enable WordPress.WP.PreparedSQL.NotPrepared + + update_option( 'antispambee_db_version', self::$db_version ); + } + + /** + * Whether the database structure is up to date. + * + * @return bool + */ + private static function db_version_is_current() { + + $current_version = absint( get_option( 'antispambee_db_version', 0 ) ); + return $current_version === self::$db_version; + + } +} + + +// Fire. +add_action( + 'plugins_loaded', + array( + 'Antispam_Bee', + 'init', + ) +); + +// Activation. +register_activation_hook( + __FILE__, + array( + 'Antispam_Bee', + 'activate', + ) +); + +// Deactivation. +register_deactivation_hook( + __FILE__, + array( + 'Antispam_Bee', + 'deactivate', + ) +); + +// Uninstall. +register_uninstall_hook( + __FILE__, + array( + 'Antispam_Bee', + 'uninstall', + ) +); diff --git a/wp-content/plugins/antispam-bee/css/dashboard.css b/wp-content/plugins/antispam-bee/css/dashboard.css new file mode 100644 index 0000000..92b9c85 --- /dev/null +++ b/wp-content/plugins/antispam-bee/css/dashboard.css @@ -0,0 +1,18 @@ +#ab_chart { + color: #a0a5aa; + height: 140px; + margin: 0 -4px; + text-align: center; +} +#ab_chart_data { + display: none; +} + +#ab_widget .inside { + height: 1%; + margin: 0; + padding-bottom: 0; + overflow: hidden; + position: relative; + white-space: nowrap; +} diff --git a/wp-content/plugins/antispam-bee/css/dashboard.min.css b/wp-content/plugins/antispam-bee/css/dashboard.min.css new file mode 100644 index 0000000..9a416e1 --- /dev/null +++ b/wp-content/plugins/antispam-bee/css/dashboard.min.css @@ -0,0 +1 @@ +#ab_chart{color:#a0a5aa;height:140px;margin:0 -4px;text-align:center;}#ab_chart_data{display:none;}#ab_widget .inside{height:1%;margin:0;padding-bottom:0;overflow:hidden;position:relative;white-space:nowrap;} \ No newline at end of file diff --git a/wp-content/plugins/antispam-bee/css/styles.css b/wp-content/plugins/antispam-bee/css/styles.css new file mode 100644 index 0000000..7a86c43 --- /dev/null +++ b/wp-content/plugins/antispam-bee/css/styles.css @@ -0,0 +1,268 @@ +/* @group General */ + +.ab-main *, +.ab-main *:after, +.ab-main *:before { + border: 0; + margin: 0; + padding: 0; + outline: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +/* @end group */ + +/* @group Browse Happy */ + +.browsehappy { + margin: 0 0 20px; + padding: 10px; + border: 1px solid #e66f00; + text-align: center; +} + +/* @end group */ + +/* @group Columns */ + +.ab-wrap { + margin: 0 0 0 -10px; + padding: 20px 0 0 0; + text-rendering: optimizeLegibility; +} + +.ab-column { + float: left; + margin: 0 0 0 10px; + position: relative; +} + +/* @end group */ + +/* @group Headlines + Icons */ + +.ab-column h3 { + margin: 0; + font-size: 18px; + font-weight: normal; + line-height: 20px; + color: #23282d; +} + +.ab-column h3.icon:before { + font: normal 30px/30px Dashicons; + top: 4px; + right: 20px; + speak: none; + width: 1em; + color: #8e959c; + position: absolute; + text-align: center; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ab-column.ab-arrow h3.icon:before { + content: '\f536'; +} + +.ab-column.ab-join h3.icon:before { + content: '\f108'; +} + +.ab-column.ab-diff h3.icon:before { + content: '\f237'; +} + +.ab-column h6 { + clear: both; + color: #555d66; + margin: 0 0 20px; + font-weight: normal; + font-size: 13px; +} + +/* @end group */ + +/* @group Form */ + +.ab-column input[type="text"], +.ab-column input[type="number"], +.ab-column select { + font-size: 13px; + text-align: center; + background: #f8f8f9; +} + +.ab-column input[type="number"] { + padding: 0; +} + +.ab-column select[multiple] { + width: 175px; + min-height: 60px; +} + +.ab-column input.ab-mini-field { + width: 40px; +} + +.ab-column .ab-medium-field { + width: 100%; + max-width: 285px; +} + +.ab-column input[type="text"] + label, +.ab-column select + label { + color: #8e959c; + margin: 0 0 0 7px; + display: inline-block; + text-transform: uppercase; +} + +/* @end group */ + +/* @group Column contents */ + +.ab-column > ul { + padding: 0 20px 0 0; +} + +.ab-column:last-of-type > ul { + border: 0; +} + +.ab-column > ul > li { + width: 330px; + margin: 0 0 36px; + padding: 10px 0 12px 12px; + position: relative; + background: #fff; +} + +.ab-column > ul > li a { + text-decoration: underline; +} + +.ab-column > ul > li a:hover { + border-color: inherit; +} + +.ab-column > ul > li label { + cursor: default; + display: inline-block; + font-size: 14px; + max-width: 286px; + color: #23282d; +} + +.ab-column > ul > li label span { + color: #555d66; + display: block; + font-size: 13px; + line-height: 16px; + margin-top: 5px; +} + +/* @end group */ + +/* @group Separator */ + +.ab-column > ul > li:after, +.ab-column > ul > li:before { + width: 0; + content: ''; + position: absolute; +} + +.ab-column.ab-arrow > ul > li:before, +.ab-column.ab-arrow > ul > li:after { + left: 157px; + border-width: 10px 10px 0; + border-style: solid; +} + +.ab-column.ab-arrow > ul > li:before { + bottom: -24px; + border-color: #fff transparent; +} + +.ab-column.ab-arrow > ul > li:after { + bottom: -22px; + border-color: #f1f1f1 transparent; +} + +.ab-column.ab-join > ul > li:before { + left: 171px; + bottom: -27px; + height: 18px; + border-right: 2px solid #fff; +} + +.ab-column.ab-diff > ul > li:before { + left: 162px; + bottom: -19px; + width: 18px; + height: 0; + border-bottom: 2px solid #fff; +} + +/* @end group */ + +/* @group Submit & Service */ + +.ab-column--submit-service { + width: 342px; + margin-top: 20px; + padding-right: 20px; +} + +.ab-column--submit-service p { + padding: 5px 0; + margin: 0; + text-align: center; + width: 100%; +} + +.ab-column--submit-service p:first-of-type { + border-top: 1px solid #e0e5e9; +} + +.ab-column--submit-service p:last-of-type { + border-bottom: 1px solid #e0e5e9; +} + +.ab-column--submit-service .button { + width: 100%; + margin: 35px 0 10px; +} + +/* @end group */ + +/* @group 2nd level */ + +.ab-column > ul > li:last-of-type:after, +.ab-column > ul > li:last-of-type:before { + display: none; +} + +.ab-column > ul > li > ul { + margin: 10px 10px 0 26px; + display: none; +} + +.ab-column > ul > li > ul li { + padding: 2px 0; +} + +.ab-column > ul > li > ul label { + margin: 0 0 0 7px; +} + +.ab-column > ul > li > input[type="checkbox"]:checked ~ ul { + display: block; +} + +/* @end group */ diff --git a/wp-content/plugins/antispam-bee/css/styles.min.css b/wp-content/plugins/antispam-bee/css/styles.min.css new file mode 100755 index 0000000..676ba1f --- /dev/null +++ b/wp-content/plugins/antispam-bee/css/styles.min.css @@ -0,0 +1 @@ +.ab-main *,.ab-main :after,.ab-main :before{border:0;margin:0;padding:0;outline:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.browsehappy{margin:0 0 20px;padding:10px;border:1px solid #e66f00;text-align:center}.ab-wrap{margin:0 0 0 -10px;padding:20px 0 0;text-rendering:optimizeLegibility}.ab-column{float:left;margin:0 0 0 10px;position:relative}.ab-column h3{margin:0;font-size:18px;font-weight:400;line-height:20px;color:#23282d}.ab-column h3.icon:before{font:400 30px/30px Dashicons;top:4px;right:20px;speak:none;width:1em;color:#8e959c;position:absolute;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ab-column.ab-arrow h3.icon:before{content:'\f536'}.ab-column.ab-join h3.icon:before{content:'\f108'}.ab-column.ab-diff h3.icon:before{content:'\f237'}.ab-column h6{clear:both;color:#555d66;margin:0 0 20px;font-weight:400;font-size:13px}.ab-column input[type=text],.ab-column input[type=number],.ab-column select{font-size:13px;text-align:center;background:#f8f8f9}.ab-column input[type=number]{padding:0}.ab-column select[multiple]{width:175px;min-height:60px}.ab-column input.ab-mini-field{width:40px}.ab-column .ab-medium-field{width:100%;max-width:285px}.ab-column input[type=text]+label,.ab-column select+label{color:#8e959c;margin:0 0 0 7px;display:inline-block;text-transform:uppercase}.ab-column>ul{padding:0 20px 0 0}.ab-column:last-of-type>ul{border:0}.ab-column>ul>li{width:330px;margin:0 0 36px;padding:10px 0 12px 12px;position:relative;background:#fff}.ab-column>ul>li a{text-decoration:underline}.ab-column>ul>li a:hover{border-color:inherit}.ab-column>ul>li label{cursor:default;display:inline-block;font-size:14px;max-width:286px;color:#23282d}.ab-column>ul>li label span{color:#555d66;display:block;font-size:13px;line-height:16px;margin-top:5px}.ab-column>ul>li:after,.ab-column>ul>li:before{width:0;content:'';position:absolute}.ab-column.ab-arrow>ul>li:after,.ab-column.ab-arrow>ul>li:before{left:157px;border-width:10px 10px 0;border-style:solid}.ab-column.ab-arrow>ul>li:before{bottom:-24px;border-color:#fff transparent}.ab-column.ab-arrow>ul>li:after{bottom:-22px;border-color:#f1f1f1 transparent}.ab-column.ab-join>ul>li:before{left:171px;bottom:-27px;height:18px;border-right:2px solid #fff}.ab-column.ab-diff>ul>li:before{left:162px;bottom:-19px;width:18px;height:0;border-bottom:2px solid #fff}.ab-column--submit-service{width:342px;margin-top:20px;padding-right:20px}.ab-column--submit-service p{padding:5px 0;margin:0;text-align:center;width:100%}.ab-column--submit-service p:first-of-type{border-top:1px solid #e0e5e9}.ab-column--submit-service p:last-of-type{border-bottom:1px solid #e0e5e9}.ab-column--submit-service .button{width:100%;margin:35px 0 10px}.ab-column>ul>li:last-of-type:after,.ab-column>ul>li:last-of-type:before{display:none}.ab-column>ul>li>ul{margin:10px 10px 0 26px;display:none}.ab-column>ul>li>ul li{padding:2px 0}.ab-column>ul>li>ul label{margin:0 0 0 7px}.ab-column>ul>li>input[type=checkbox]:checked~ul{display:block} \ No newline at end of file diff --git a/wp-content/plugins/antispam-bee/inc/columns.class.php b/wp-content/plugins/antispam-bee/inc/columns.class.php new file mode 100644 index 0000000..e87d79f --- /dev/null +++ b/wp-content/plugins/antispam-bee/inc/columns.class.php @@ -0,0 +1,105 @@ + esc_html__( 'Spam Reason', 'antispam-bee' ), + ) + ); + } + + /** + * Display plugin column values on comments screen + * + * @since 2.6.0 + * @change 2.6.0 + * + * @param string $column Currently selected column. + * @param integer $comment_id Comment ID. + */ + public static function print_plugin_column( $column, $comment_id ) { + if ( 'antispam_bee_reason' !== $column ) { + return; + } + + $spam_reason = get_comment_meta( $comment_id, $column, true ); + $spam_reasons = Antispam_Bee::$defaults['reasons']; + + if ( empty( $spam_reason ) || empty( $spam_reasons[ $spam_reason ] ) ) { + return; + } + + echo esc_html( $spam_reasons[ $spam_reason ] ); + } + + /** + * Register plugin sortable columns on comments screen + * + * @since 2.6.3 + * @change 2.6.3 + * + * @param array $columns Registered columns. + * @return array $columns Columns with AB field. + */ + public static function register_sortable_columns( $columns ) { + $columns['antispam_bee_reason'] = 'antispam_bee_reason'; + + return $columns; + } + + /** + * Adjust orderby query + * + * @since 2.6.3 + * @change 2.6.3 + * + * @param \WP_Query $query Current WordPress query. + */ + public static function set_orderby_query( $query ) { + $orderby = $query->get( 'orderby' ); + + if ( empty( $orderby ) || 'antispam_bee_reason' !== $orderby ) { + return; + } + + $query->set( 'meta_key', 'antispam_bee_reason' ); + $query->set( 'orderby', 'meta_value' ); + } + + /** + * Print CSS for the plugin column + * + * @since 2.6.1 + * @change 2.6.1 + */ + public static function print_column_styles() { ?> + + (int) ( ! empty( $_POST['ab_flag_spam'] ) ), + 'email_notify' => (int) ( ! empty( $_POST['ab_email_notify'] ) ), + 'cronjob_enable' => (int) ( ! empty( $_POST['ab_cronjob_enable'] ) ), + 'cronjob_interval' => (int) self::get_key( $_POST, 'ab_cronjob_interval' ), + + 'no_notice' => (int) ( ! empty( $_POST['ab_no_notice'] ) ), + + 'dashboard_count' => (int) ( ! empty( $_POST['ab_dashboard_count'] ) ), + 'dashboard_chart' => (int) ( ! empty( $_POST['ab_dashboard_chart'] ) ), + 'advanced_check' => (int) ( ! empty( $_POST['ab_advanced_check'] ) ), + 'regexp_check' => (int) ( ! empty( $_POST['ab_regexp_check'] ) ), + 'spam_ip' => (int) ( ! empty( $_POST['ab_spam_ip'] ) ), + 'already_commented' => (int) ( ! empty( $_POST['ab_already_commented'] ) ), + 'time_check' => (int) ( ! empty( $_POST['ab_time_check'] ) ), + 'always_allowed' => (int) ( ! empty( $_POST['ab_always_allowed'] ) ), + + 'ignore_pings' => (int) ( ! empty( $_POST['ab_ignore_pings'] ) ), + 'ignore_filter' => (int) ( ! empty( $_POST['ab_ignore_filter'] ) ), + 'ignore_type' => (int) self::get_key( $_POST, 'ab_ignore_type' ), + + 'reasons_enable' => (int) ( ! empty( $_POST['ab_reasons_enable'] ) ), + 'ignore_reasons' => (array) self::get_key( $_POST, 'ab_ignore_reasons' ), + + 'bbcode_check' => (int) ( ! empty( $_POST['ab_bbcode_check'] ) ), + 'gravatar_check' => (int) ( ! empty( $_POST['ab_gravatar_check'] ) ), + 'country_code' => (int) ( ! empty( $_POST['ab_country_code'] ) ), + 'country_black' => sanitize_text_field( wp_unslash( self::get_key( $_POST, 'ab_country_black' ) ) ), + 'country_white' => sanitize_text_field( wp_unslash( self::get_key( $_POST, 'ab_country_white' ) ) ), + + 'translate_api' => (int) ( ! empty( $_POST['ab_translate_api'] ) ), + 'translate_lang' => $selected_languages, + + 'delete_data_on_uninstall' => (int) ( ! empty( $_POST['delete_data_on_uninstall'] ) ), + + ); + + foreach ( $options['ignore_reasons'] as $key => $val ) { + if ( ! isset( self::$defaults['reasons'][ $val ] ) ) { + unset( $options['ignore_reasons'][ $key ] ); + } + } + + if ( empty( $options['cronjob_interval'] ) ) { + $options['cronjob_enable'] = 0; + } + + if ( empty( $options['translate_lang'] ) ) { + $options['translate_api'] = 0; + } + + if ( empty( $options['reasons_enable'] ) ) { + $options['ignore_reasons'] = array(); + } + + if ( ! empty( $options['country_black'] ) ) { + $options['country_black'] = preg_replace( + '/[^A-Z ,;]/', + '', + strtoupper( $options['country_black'] ) + ); + } + + if ( ! empty( $options['country_white'] ) ) { + $options['country_white'] = preg_replace( + '/[^A-Z ,;]/', + '', + strtoupper( $options['country_white'] ) + ); + } + + if ( empty( $options['country_black'] ) && empty( $options['country_white'] ) ) { + $options['country_code'] = 0; + } + + if ( $options['cronjob_enable'] && ! self::get_option( 'cronjob_enable' ) ) { + self::init_scheduled_hook(); + } elseif ( ! $options['cronjob_enable'] && self::get_option( 'cronjob_enable' ) ) { + self::clear_scheduled_hook(); + } + + self::update_options( $options ); + + wp_safe_redirect( + add_query_arg( + array( + 'updated' => 'true', + ), + wp_get_referer() + ) + ); + + die(); + } + + /** + * Generation of a selectbox + * + * @since 2.4.5 + * @change 2.4.5 + * + * @param string $name Name of the Selectbox. + * @param array $data Array with values. + * @param string $selected Selected value. + * @return string $html Generated HTML. + */ + private static function _build_select( $name, $data, $selected ) { + $html = ''; + + return $html; + } + + + /** + * Display the GUI + * + * @since 0.1 + * @change 2.7.0 + */ + public static function options_page() { ?> +
                      +

                      + Antispam Bee +

                      + + + + + + + +
                      + + +
                      +

                      + +

                      +
                      + +
                      + +
                        +
                      • + /> + +
                      • + + +
                      • + /> + +
                      • + + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + + +
                          + ', + esc_url( + __( 'https://www.iso.org/iso/country_names_and_code_elements', 'antispam-bee' ), + 'https' + ) + ); + ?> +
                        • + + +
                        • +
                        • + + +
                        • +
                        +
                      • + +
                      • + /> + + +
                          +
                        • + + +
                        • +
                        +
                      • +
                      +
                      + +
                      +

                      + +

                      +
                      + +
                      + +
                        +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + + +
                          +
                        • + + +
                        • +
                        +
                      • + +
                      • + /> + +
                      • +
                      + +
                      + + +
                      +

                      + +

                      +
                      + +
                      + +
                        +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • + +
                      • + /> + +
                      • +
                      +
                      + +
                      +

                      + +

                      +

                      + +

                      +

                      + +

                      +

                      + +

                      + + +
                      +
                      + +
                      + __( 'German', 'antispam-bee' ), + 'en' => __( 'English', 'antispam-bee' ), + 'fr' => __( 'French', 'antispam-bee' ), + 'it' => __( 'Italian', 'antispam-bee' ), + 'es' => __( 'Spanish', 'antispam-bee' ), + ); + + /** + * Filter the possible languages for the language spam test + * + * @since 2.7.1 + * @param (array) $lang The languages + * @return (array) + */ + return apply_filters( 'ab_get_allowed_translate_languages', $lang ); + } +} diff --git a/wp-content/plugins/antispam-bee/js/dashboard.js b/wp-content/plugins/antispam-bee/js/dashboard.js new file mode 100644 index 0000000..baf41ec --- /dev/null +++ b/wp-content/plugins/antispam-bee/js/dashboard.js @@ -0,0 +1,111 @@ +(function () { + + // Grab the data + var labels = [], + data = []; + jQuery("#ab_chart_data tfoot th").each(function () { + labels.push(jQuery(this).text()); + }); + jQuery("#ab_chart_data tbody td").each(function () { + data.push(jQuery(this).text()); + }); + + // Draw + var width = jQuery('#ab_chart').parent().width() + 8, + height = 140, + leftgutter = 0, + bottomgutter = 22, + topgutter = 22, + color = '#0073aa', + r = Raphael("ab_chart", width, height), + txt = {font: 'bold 12px "Open Sans", sans-serif', fill: "#32373c"}, + X = (width - leftgutter * 2) / labels.length, + max = Math.max.apply(Math, data), + Y = (height - bottomgutter - topgutter) / max; + + // Max value + r + .text(16, 16, max) + .attr( + { + 'font': 'normal 10px "Open Sans", sans-serif', + fill: "#b4b9be" + } + ); + + var path = r.path().attr({stroke: color, "stroke-width": 2, "stroke-linejoin": "round"}), + bgp = r.path().attr({stroke: "none", opacity: .3, fill: color}), + label = r.set(), + lx = 0, ly = 0, + is_label_visible = false, + leave_timer, + blanket = r.set(); + label.push(r.text(60, 12, "").attr(txt)); + label.push(r.text(60, 27, "").attr(txt).attr({fill: color})); + label.hide(); + var frame = r.popup(100, 100, label, "right").attr({fill: "#fff", stroke: "#444", "stroke-width": 1}).hide(); + + var p, bgpp; + for (var i = 0, ii = labels.length; i < ii; i++) { + var y = Math.round(height - bottomgutter - Y * data[i]), + x = Math.round(leftgutter + X * (i + .5)); + if (!i) { + p = ["M", x, y, "C", x, y]; + bgpp = ["M", leftgutter + X * .5, height - bottomgutter, "L", x, y, "C", x, y]; + } + if (i && i < ii - 1) { + var Y0 = Math.round(height - bottomgutter - Y * data[i - 1]), + X0 = Math.round(leftgutter + X * (i - .5)), + Y2 = Math.round(height - bottomgutter - Y * data[i + 1]), + X2 = Math.round(leftgutter + X * (i + 1.5)); + var a = getAnchors(X0, Y0, x, y, X2, Y2); + p = p.concat([a.x1, a.y1, x, y, a.x2, a.y2]); + bgpp = bgpp.concat([a.x1, a.y1, x, y, a.x2, a.y2]); + } + var dot = r.circle(x, y, 4).attr({fill: "#fff", stroke: color, "stroke-width": 1}); + blanket.push(r.rect(leftgutter + X * i, 0, X, height - bottomgutter).attr({stroke: "none", fill: '#fff', opacity: .2})); + var rect = blanket[blanket.length - 1]; + (function (x, y, data, date, dot) { + var timer, i = 0; + rect.hover(function () { + clearTimeout(leave_timer); + var side = "right"; + if (x + frame.getBBox().width > width) { + side = "left"; + } + // set label content to determine correct dimensions + label[0].attr({text: date }); + label[1].attr({text: data + "× Spam"}); + var ppp = r.popup(x, y, label, side, 1), + anim = Raphael.animation({ + path: ppp.path, + transform: ["t", ppp.dx, ppp.dy] + }, 200 * is_label_visible); + lx = label[0].transform()[0][1] + ppp.dx; + ly = label[0].transform()[0][2] + ppp.dy; + frame.show().stop().animate(anim); + + label[0].show().stop().animateWith(frame, anim, {transform: ["t", lx, ly]}, 200 * is_label_visible); + label[1].show().stop().animateWith(frame, anim, {transform: ["t", lx, ly]}, 200 * is_label_visible); + dot.attr("r", 6); + is_label_visible = true; + }, function () { + dot.attr("r", 4); + leave_timer = setTimeout(function () { + frame.hide(); + label[0].hide(); + label[1].hide(); + is_label_visible = false; + }, 1); + }); + })(x, y, data[i], labels[i], dot); + } + p = p.concat([x, y, x, y]); + bgpp = bgpp.concat([x, y, x, y, "L", x, height - bottomgutter, "z"]); + path.attr({path: p}); + bgp.attr({path: bgpp}); + frame.toFront(); + label[0].toFront(); + label[1].toFront(); + blanket.toFront(); +})(); diff --git a/wp-content/plugins/antispam-bee/js/dashboard.min.js b/wp-content/plugins/antispam-bee/js/dashboard.min.js new file mode 100644 index 0000000..9355cf8 --- /dev/null +++ b/wp-content/plugins/antispam-bee/js/dashboard.min.js @@ -0,0 +1,5 @@ +(function(){var labels=[],data=[];jQuery("#ab_chart_data tfoot th").each(function(){labels.push(jQuery(this).text())});jQuery("#ab_chart_data tbody td").each(function(){data.push(jQuery(this).text())});var width=jQuery('#ab_chart').parent().width()+8,height=140,leftgutter=0,bottomgutter=22,topgutter=22,color='#0073aa',r=Raphael("ab_chart",width,height),txt={font:'bold 12px "Open Sans", sans-serif',fill:"#32373c"},X=(width-leftgutter*2)/labels.length,max=Math.max.apply(Math,data),Y=(height-bottomgutter-topgutter)/max;r.text(16,16,max).attr({'font':'normal 10px "Open Sans", sans-serif',fill:"#b4b9be"});var path=r.path().attr({stroke:color,"stroke-width":2,"stroke-linejoin":"round"}),bgp=r.path().attr({stroke:"none",opacity:.3,fill:color}),label=r.set(),lx=0,ly=0,is_label_visible=!1,leave_timer,blanket=r.set();label.push(r.text(60,12,"").attr(txt));label.push(r.text(60,27,"").attr(txt).attr({fill:color}));label.hide();var frame=r.popup(100,100,label,"right").attr({fill:"#fff",stroke:"#444","stroke-width":1}).hide();var p,bgpp;for(var i=0,ii=labels.length;iwidth){side="left"} +label[0].attr({text:date});label[1].attr({text:data+"× Spam"});var ppp=r.popup(x,y,label,side,1),anim=Raphael.animation({path:ppp.path,transform:["t",ppp.dx,ppp.dy]},200*is_label_visible);lx=label[0].transform()[0][1]+ppp.dx;ly=label[0].transform()[0][2]+ppp.dy;frame.show().stop().animate(anim);label[0].show().stop().animateWith(frame,anim,{transform:["t",lx,ly]},200*is_label_visible);label[1].show().stop().animateWith(frame,anim,{transform:["t",lx,ly]},200*is_label_visible);dot.attr("r",6);is_label_visible=!0},function(){dot.attr("r",4);leave_timer=setTimeout(function(){frame.hide();label[0].hide();label[1].hide();is_label_visible=!1},1)})})(x,y,data[i],labels[i],dot)} +p=p.concat([x,y,x,y]);bgpp=bgpp.concat([x,y,x,y,"L",x,height-bottomgutter,"z"]);path.attr({path:p});bgp.attr({path:bgpp});frame.toFront();label[0].toFront();label[1].toFront();blanket.toFront()})() \ No newline at end of file diff --git a/wp-content/plugins/antispam-bee/js/raphael.helper.js b/wp-content/plugins/antispam-bee/js/raphael.helper.js new file mode 100644 index 0000000..842a645 --- /dev/null +++ b/wp-content/plugins/antispam-bee/js/raphael.helper.js @@ -0,0 +1,142 @@ +var tokenRegex = /\{([^\}]+)\}/g, + objNotationRegex = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g, + replacer = function (all, key, obj) { + var res = obj; + key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) { + name = name || quotedName; + if (res) { + if (name in res) { + res = res[name]; + } + typeof res == "function" && isFunc && (res = res()); + } + }); + res = (res == null || res == obj ? all : res) + ""; + return res; + }, + fill = function (str, obj) { + return String(str).replace(tokenRegex, function (all, key) { + return replacer(all, key, obj); + }); + }; + + +Raphael.fn.popup = function (X, Y, set, pos, ret) { + pos = String(pos || "top-middle").split("-"); + pos[1] = pos[1] || "middle"; + var r = 5, + bb = set.getBBox(), + w = Math.round(bb.width), + h = Math.round(bb.height), + x = Math.round(bb.x) - r, + y = Math.round(bb.y) - r, + gap = Math.min(h / 2, w / 2, 10), + shapes = { + top: "M{x},{y}h{w4},{w4},{w4},{w4}a{r},{r},0,0,1,{r},{r}v{h4},{h4},{h4},{h4}a{r},{r},0,0,1,-{r},{r}l-{right},0-{gap},{gap}-{gap}-{gap}-{left},0a{r},{r},0,0,1-{r}-{r}v-{h4}-{h4}-{h4}-{h4}a{r},{r},0,0,1,{r}-{r}z", + bottom: "M{x},{y}l{left},0,{gap}-{gap},{gap},{gap},{right},0a{r},{r},0,0,1,{r},{r}v{h4},{h4},{h4},{h4}a{r},{r},0,0,1,-{r},{r}h-{w4}-{w4}-{w4}-{w4}a{r},{r},0,0,1-{r}-{r}v-{h4}-{h4}-{h4}-{h4}a{r},{r},0,0,1,{r}-{r}z", + right: "M{x},{y}h{w4},{w4},{w4},{w4}a{r},{r},0,0,1,{r},{r}v{h4},{h4},{h4},{h4}a{r},{r},0,0,1,-{r},{r}h-{w4}-{w4}-{w4}-{w4}a{r},{r},0,0,1-{r}-{r}l0-{bottom}-{gap}-{gap},{gap}-{gap},0-{top}a{r},{r},0,0,1,{r}-{r}z", + left: "M{x},{y}h{w4},{w4},{w4},{w4}a{r},{r},0,0,1,{r},{r}l0,{top},{gap},{gap}-{gap},{gap},0,{bottom}a{r},{r},0,0,1,-{r},{r}h-{w4}-{w4}-{w4}-{w4}a{r},{r},0,0,1-{r}-{r}v-{h4}-{h4}-{h4}-{h4}a{r},{r},0,0,1,{r}-{r}z" + }, + offset = { + hx0: X - (x + r + w - gap * 2), + hx1: X - (x + r + w / 2 - gap), + hx2: X - (x + r + gap), + vhy: Y - (y + r + h + r + gap), + "^hy": Y - (y - gap) + + }, + mask = [{ + x: x + r, + y: y, + w: w, + w4: w / 4, + h4: h / 4, + right: 0, + left: w - gap * 2, + bottom: 0, + top: h - gap * 2, + r: r, + h: h, + gap: gap + }, { + x: x + r, + y: y, + w: w, + w4: w / 4, + h4: h / 4, + left: w / 2 - gap, + right: w / 2 - gap, + top: h / 2 - gap, + bottom: h / 2 - gap, + r: r, + h: h, + gap: gap + }, { + x: x + r, + y: y, + w: w, + w4: w / 4, + h4: h / 4, + left: 0, + right: w - gap * 2, + top: 0, + bottom: h - gap * 2, + r: r, + h: h, + gap: gap + }][pos[1] == "middle" ? 1 : (pos[1] == "top" || pos[1] == "left") * 2]; + var dx = 0, + dy = 0, + out = this.path(fill(shapes[pos[0]], mask)).insertBefore(set); + switch (pos[0]) { + case "top": + dx = X - (x + r + mask.left + gap); + dy = Y - (y + r + h + r + gap); + break; + case "bottom": + dx = X - (x + r + mask.left + gap); + dy = Y - (y - gap); + break; + case "left": + dx = X - (x + r + w + r + gap); + dy = Y - (y + r + mask.top + gap); + break; + case "right": + dx = X - (x - gap); + dy = Y - (y + r + mask.top + gap); + break; + } + out.translate(dx, dy); + if (ret) { + ret = out.attr("path"); + out.remove(); + return { + path: ret, + dx: dx, + dy: dy + }; + } + set.translate(dx, dy); + return out; +}; + + +function getAnchors(p1x, p1y, p2x, p2y, p3x, p3y) { + var l1 = (p2x - p1x) / 2, + l2 = (p3x - p2x) / 2, + a = Math.atan((p2x - p1x) / Math.abs(p2y - p1y)), + b = Math.atan((p3x - p2x) / Math.abs(p2y - p3y)); + a = p1y < p2y ? Math.PI - a : a; + b = p3y < p2y ? Math.PI - b : b; + var alpha = Math.PI / 2 - ((a + b) % (Math.PI * 2)) / 2, + dx1 = l1 * Math.sin(alpha + a), + dy1 = l1 * Math.cos(alpha + a), + dx2 = l2 * Math.sin(alpha + b), + dy2 = l2 * Math.cos(alpha + b); + return { + x1: p2x - dx1, + y1: p2y + dy1, + x2: p2x + dx2, + y2: p2y + dy2 + }; +} \ No newline at end of file diff --git a/wp-content/plugins/antispam-bee/js/raphael.helper.min.js b/wp-content/plugins/antispam-bee/js/raphael.helper.min.js new file mode 100644 index 0000000..7a20fdd --- /dev/null +++ b/wp-content/plugins/antispam-bee/js/raphael.helper.min.js @@ -0,0 +1,5 @@ +var tokenRegex=/\{([^\}]+)\}/g,objNotationRegex=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,replacer=function(c,h,g){var a=g;h.replace(objNotationRegex,function(c,b,f,d,g){b=b||d;a&&(b in a&&(a=a[b]),"function"==typeof a&&g&&(a=a()))});return a=(null==a||a==g?c:a)+""},fill=function(c,h){return String(c).replace(tokenRegex,function(c,a){return replacer(c,a,h)})}; +Raphael.fn.popup=function(c,h,g,a,k){a=String(a||"top-middle").split("-");a[1]=a[1]||"middle";var b=g.getBBox(),f=Math.round(b.width),d=Math.round(b.height),l=Math.round(b.x)-5,b=Math.round(b.y)-5,e=Math.min(d/2,f/2,10),p=[{x:l+5,y:b,w:f,w4:f/4,h4:d/4,right:0,left:f-2*e,bottom:0,top:d-2*e,r:5,h:d,gap:e},{x:l+5,y:b,w:f,w4:f/4,h4:d/4,left:f/2-e,right:f/2-e,top:d/2-e,bottom:d/2-e,r:5,h:d,gap:e},{x:l+5,y:b,w:f,w4:f/4,h4:d/4,left:0,right:f-2*e,top:0,bottom:d-2*e,r:5,h:d,gap:e}]["middle"==a[1]?1:2*("top"== +a[1]||"left"==a[1])],m=0,n=0,q=this.path(fill({top:"M{x},{y}h{w4},{w4},{w4},{w4}a{r},{r},0,0,1,{r},{r}v{h4},{h4},{h4},{h4}a{r},{r},0,0,1,-{r},{r}l-{right},0-{gap},{gap}-{gap}-{gap}-{left},0a{r},{r},0,0,1-{r}-{r}v-{h4}-{h4}-{h4}-{h4}a{r},{r},0,0,1,{r}-{r}z",bottom:"M{x},{y}l{left},0,{gap}-{gap},{gap},{gap},{right},0a{r},{r},0,0,1,{r},{r}v{h4},{h4},{h4},{h4}a{r},{r},0,0,1,-{r},{r}h-{w4}-{w4}-{w4}-{w4}a{r},{r},0,0,1-{r}-{r}v-{h4}-{h4}-{h4}-{h4}a{r},{r},0,0,1,{r}-{r}z",right:"M{x},{y}h{w4},{w4},{w4},{w4}a{r},{r},0,0,1,{r},{r}v{h4},{h4},{h4},{h4}a{r},{r},0,0,1,-{r},{r}h-{w4}-{w4}-{w4}-{w4}a{r},{r},0,0,1-{r}-{r}l0-{bottom}-{gap}-{gap},{gap}-{gap},0-{top}a{r},{r},0,0,1,{r}-{r}z", +left:"M{x},{y}h{w4},{w4},{w4},{w4}a{r},{r},0,0,1,{r},{r}l0,{top},{gap},{gap}-{gap},{gap},0,{bottom}a{r},{r},0,0,1,-{r},{r}h-{w4}-{w4}-{w4}-{w4}a{r},{r},0,0,1-{r}-{r}v-{h4}-{h4}-{h4}-{h4}a{r},{r},0,0,1,{r}-{r}z"}[a[0]],p)).insertBefore(g);switch(a[0]){case "top":m=c-(l+5+p.left+e);n=h-(b+5+d+5+e);break;case "bottom":m=c-(l+5+p.left+e);n=h-(b-e);break;case "left":m=c-(l+5+f+5+e);n=h-(b+5+p.top+e);break;case "right":m=c-(l-e),n=h-(b+5+p.top+e)}q.translate(m,n);if(k)return k=q.attr("path"),q.remove(), +{path:k,dx:m,dy:n};g.translate(m,n);return q};function getAnchors(c,h,g,a,k,b){var f=(g-c)/2,d=(k-g)/2;c=Math.atan((g-c)/Math.abs(a-h));k=Math.atan((k-g)/Math.abs(a-b));c=h=1e3&&delete o[l.shift()],l.push(s),o[s]=t[z](e,a),r?r(o[s]):o[s])}return n}function a(){return this.hex}function s(t,e){for(var r=[],i=0,n=t.length;n-2*!e>i;i+=2){var a=[{x:+t[i-2],y:+t[i-1]},{x:+t[i],y:+t[i+1]},{x:+t[i+2],y:+t[i+3]},{x:+t[i+4],y:+t[i+5]}];e?i?n-4==i?a[3]={x:+t[0],y:+t[1]}:n-2==i&&(a[2]={x:+t[0],y:+t[1]},a[3]={x:+t[2],y:+t[3]}):a[0]={x:+t[n-2],y:+t[n-1]}:n-4==i?a[3]=a[2]:i||(a[0]={x:+t[i],y:+t[i+1]}),r.push(["C",(-a[0].x+6*a[1].x+a[2].x)/6,(-a[0].y+6*a[1].y+a[2].y)/6,(a[1].x+6*a[2].x-a[3].x)/6,(a[1].y+6*a[2].y-a[3].y)/6,a[2].x,a[2].y])}return r}function o(t,e,r,i,n){var a=-3*e+9*r-9*i+3*n,s=t*a+6*e-12*r+6*i;return t*s-3*e+3*r}function l(t,e,r,i,n,a,s,l,h){null==h&&(h=1),h=h>1?1:h<0?0:h;for(var u=h/2,c=12,f=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],p=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],d=0,g=0;gd;)c/=2,f+=(pW(n,s)||W(e,i)W(a,o))){var l=(t*i-e*r)*(n-s)-(t-r)*(n*o-a*s),h=(t*i-e*r)*(a-o)-(e-i)*(n*o-a*s),u=(t-r)*(a-o)-(e-i)*(n-s);if(u){var c=l/u,f=h/u,p=+c.toFixed(2),d=+f.toFixed(2);if(!(p<+G(t,r).toFixed(2)||p>+W(t,r).toFixed(2)||p<+G(n,s).toFixed(2)||p>+W(n,s).toFixed(2)||d<+G(e,i).toFixed(2)||d>+W(e,i).toFixed(2)||d<+G(a,o).toFixed(2)||d>+W(a,o).toFixed(2)))return{x:c,y:f}}}}function c(t,e){return p(t,e)}function f(t,e){return p(t,e,1)}function p(t,r,i){var n=e.bezierBBox(t),a=e.bezierBBox(r);if(!e.isBBoxIntersect(n,a))return i?0:[];for(var s=l.apply(0,t),o=l.apply(0,r),h=W(~~(s/5),1),c=W(~~(o/5),1),f=[],p=[],d={},g=i?0:[],v=0;v=0&&S<=1.001&&A>=0&&A<=1.001&&(i?g++:g.push({x:C.x,y:C.y,t1:G(S,1),t2:G(A,1)}))}}return g}function d(t,r,i){t=e._path2curve(t),r=e._path2curve(r);for(var n,a,s,o,l,h,u,c,f,d,g=i?0:[],v=0,x=t.length;vi)return i;for(;ra?r=n:i=n,n=(i-r)/2+r}return n}var h=3*e,u=3*(i-e)-h,c=1-h-u,f=3*r,p=3*(n-r)-f,d=1-f-p;return o(t,1/(200*a))}function m(t,e){var r=[],i={};if(this.ms=e,this.times=1,t){for(var n in t)t[A](n)&&(i[ht(n)]=t[n],r.push(ht(n)));r.sort(Bt)}this.anim=i,this.top=r[r.length-1],this.percents=r}function b(r,i,n,a,s,o){n=ht(n);var l,h,u,c=[],f,p,d,v=r.ms,x={},m={},b={};if(a)for(w=0,B=Ee.length;wa*r.top){n=r.percents[w],p=r.percents[w-1]||0,v=v/r.top*(n-p),f=r.percents[w+1],l=r.anim[n];break}a&&i.attr(r.anim[r.percents[w]])}if(l){if(h)h.initstatus=a,h.start=new Date-h.ms*a;else{for(var C in l)if(l[A](C)&&(pt[A](C)||i.paper.customAttributes[A](C)))switch(x[C]=i.attr(C),null==x[C]&&(x[C]=ft[C]),m[C]=l[C],pt[C]){case $:b[C]=(m[C]-x[C])/v;break;case"colour":x[C]=e.getRGB(x[C]);var S=e.getRGB(m[C]);b[C]={r:(S.r-x[C].r)/v,g:(S.g-x[C].g)/v,b:(S.b-x[C].b)/v};break;case"path":var T=Qt(x[C],m[C]),E=T[1];for(x[C]=T[0],b[C]=[],w=0,B=x[C].length;w',Lt=Nt.firstChild,Lt.style.behavior="url(#default#VML)",!Lt||"object"!=typeof Lt.adj)return e.type=R;Nt=null}e.svg=!(e.vml="VML"==e.type),e._Paper=M,e.fn=N=M.prototype=e.prototype,e._id=0,e.is=function(t,e){return e=O.call(e),"finite"==e?!at[A](+t):"array"==e?t instanceof Array:"null"==e&&null===t||e==typeof t&&null!==t||"object"==e&&t===Object(t)||"array"==e&&Array.isArray&&Array.isArray(t)||tt.call(t).slice(8,-1).toLowerCase()==e},e.angle=function(t,r,i,n,a,s){if(null==a){var o=t-i,l=r-n;return o||l?(180+180*Y.atan2(-l,-o)/U+360)%360:0}return e.angle(t,r,a,s)-e.angle(i,n,a,s)},e.rad=function(t){return t%360*U/180},e.deg=function(t){return Math.round(180*t/U%360*1e3)/1e3},e.snapTo=function(t,r,i){if(i=e.is(i,"finite")?i:10,e.is(t,Q)){for(var n=t.length;n--;)if(H(t[n]-r)<=i)return t[n]}else{t=+t;var a=r%t;if(at-i)return r-a+t}return r};var zt=e.createUUID=function(t,e){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(t,e).toUpperCase()}}(/[xy]/g,function(t){var e=16*Y.random()|0,r="x"==t?e:3&e|8;return r.toString(16)});e.setWindow=function(r){t("raphael.setWindow",e,T.win,r),T.win=r,T.doc=T.win.document,e._engine.initWin&&e._engine.initWin(T.win)};var Pt=function(t){if(e.vml){var r=/^\s+|\s+$/g,i;try{var a=new ActiveXObject("htmlfile");a.write(""),a.close(),i=a.body}catch(s){i=createPopup().document.body}var o=i.createTextRange();Pt=n(function(t){try{i.style.color=I(t).replace(r,R);var e=o.queryCommandValue("ForeColor");return e=(255&e)<<16|65280&e|(16711680&e)>>>16,"#"+("000000"+e.toString(16)).slice(-6)}catch(n){return"none"}})}else{var l=T.doc.createElement("i");l.title="Raphaël Colour Picker",l.style.display="none",T.doc.body.appendChild(l),Pt=n(function(t){return l.style.color=t,T.doc.defaultView.getComputedStyle(l,R).getPropertyValue("color")})}return Pt(t)},Ft=function(){return"hsb("+[this.h,this.s,this.b]+")"},Rt=function(){return"hsl("+[this.h,this.s,this.l]+")"},jt=function(){return this.hex},It=function(t,r,i){if(null==r&&e.is(t,"object")&&"r"in t&&"g"in t&&"b"in t&&(i=t.b,r=t.g,t=t.r),null==r&&e.is(t,Z)){var n=e.getRGB(t);t=n.r,r=n.g,i=n.b}return(t>1||r>1||i>1)&&(t/=255,r/=255,i/=255),[t,r,i]},qt=function(t,r,i,n){t*=255,r*=255,i*=255;var a={r:t,g:r,b:i,hex:e.rgb(t,r,i),toString:jt};return e.is(n,"finite")&&(a.opacity=n),a};e.color=function(t){var r;return e.is(t,"object")&&"h"in t&&"s"in t&&"b"in t?(r=e.hsb2rgb(t),t.r=r.r,t.g=r.g,t.b=r.b,t.hex=r.hex):e.is(t,"object")&&"h"in t&&"s"in t&&"l"in t?(r=e.hsl2rgb(t),t.r=r.r,t.g=r.g,t.b=r.b,t.hex=r.hex):(e.is(t,"string")&&(t=e.getRGB(t)),e.is(t,"object")&&"r"in t&&"g"in t&&"b"in t?(r=e.rgb2hsl(t),t.h=r.h,t.s=r.s,t.l=r.l,r=e.rgb2hsb(t),t.v=r.b):(t={hex:"none"},t.r=t.g=t.b=t.h=t.s=t.v=t.l=-1)),t.toString=jt,t},e.hsb2rgb=function(t,e,r,i){this.is(t,"object")&&"h"in t&&"s"in t&&"b"in t&&(r=t.b,e=t.s,i=t.o,t=t.h),t*=360;var n,a,s,o,l;return t=t%360/60,l=r*e,o=l*(1-H(t%2-1)),n=a=s=r-l,t=~~t,n+=[l,o,0,0,o,l][t],a+=[o,l,l,o,0,0][t],s+=[0,0,o,l,l,o][t],qt(n,a,s,i)},e.hsl2rgb=function(t,e,r,i){this.is(t,"object")&&"h"in t&&"s"in t&&"l"in t&&(r=t.l,e=t.s,t=t.h),(t>1||e>1||r>1)&&(t/=360,e/=100,r/=100),t*=360;var n,a,s,o,l;return t=t%360/60,l=2*e*(r<.5?r:1-r),o=l*(1-H(t%2-1)),n=a=s=r-l/2,t=~~t,n+=[l,o,0,0,o,l][t],a+=[o,l,l,o,0,0][t],s+=[0,0,o,l,l,o][t],qt(n,a,s,i)},e.rgb2hsb=function(t,e,r){r=It(t,e,r),t=r[0],e=r[1],r=r[2];var i,n,a,s;return a=W(t,e,r),s=a-G(t,e,r),i=0==s?null:a==t?(e-r)/s:a==e?(r-t)/s+2:(t-e)/s+4,i=(i+360)%6*60/360,n=0==s?0:s/a,{h:i,s:n,b:a,toString:Ft}},e.rgb2hsl=function(t,e,r){r=It(t,e,r),t=r[0],e=r[1],r=r[2];var i,n,a,s,o,l;return s=W(t,e,r),o=G(t,e,r),l=s-o,i=0==l?null:s==t?(e-r)/l:s==e?(r-t)/l+2:(t-e)/l+4,i=(i+360)%6*60/360,a=(s+o)/2,n=0==l?0:a<.5?l/(2*a):l/(2-2*a),{h:i,s:n,l:a,toString:Rt}},e._path2string=function(){return this.join(",").replace(xt,"$1")};var Dt=e._preload=function(t,e){var r=T.doc.createElement("img");r.style.cssText="position:absolute;left:-9999em;top:-9999em",r.onload=function(){e.call(this),this.onload=null,T.doc.body.removeChild(this)},r.onerror=function(){T.doc.body.removeChild(this)},T.doc.body.appendChild(r),r.src=t};e.getRGB=n(function(t){if(!t||(t=I(t)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:a};if("none"==t)return{r:-1,g:-1,b:-1,hex:"none",toString:a};!(vt[A](t.toLowerCase().substring(0,2))||"#"==t.charAt())&&(t=Pt(t));var r,i,n,s,o,l,h,u=t.match(nt);return u?(u[2]&&(s=ut(u[2].substring(5),16),n=ut(u[2].substring(3,5),16),i=ut(u[2].substring(1,3),16)),u[3]&&(s=ut((l=u[3].charAt(3))+l,16),n=ut((l=u[3].charAt(2))+l,16),i=ut((l=u[3].charAt(1))+l,16)),u[4]&&(h=u[4][q](gt),i=ht(h[0]),"%"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),"%"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),"%"==h[2].slice(-1)&&(s*=2.55),"rgba"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&"%"==h[3].slice(-1)&&(o/=100)),u[5]?(h=u[5][q](gt),i=ht(h[0]),"%"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),"%"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),"%"==h[2].slice(-1)&&(s*=2.55),("deg"==h[0].slice(-3)||"°"==h[0].slice(-1))&&(i/=360),"hsba"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&"%"==h[3].slice(-1)&&(o/=100),e.hsb2rgb(i,n,s,o)):u[6]?(h=u[6][q](gt),i=ht(h[0]),"%"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),"%"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),"%"==h[2].slice(-1)&&(s*=2.55),("deg"==h[0].slice(-3)||"°"==h[0].slice(-1))&&(i/=360),"hsla"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&"%"==h[3].slice(-1)&&(o/=100),e.hsl2rgb(i,n,s,o)):(u={r:i,g:n,b:s,toString:a},u.hex="#"+(16777216|s|n<<8|i<<16).toString(16).slice(1),e.is(o,"finite")&&(u.opacity=o),u)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:a}},e),e.hsb=n(function(t,r,i){return e.hsb2rgb(t,r,i).hex}),e.hsl=n(function(t,r,i){return e.hsl2rgb(t,r,i).hex}),e.rgb=n(function(t,e,r){function i(t){return t+.5|0}return"#"+(16777216|i(r)|i(e)<<8|i(t)<<16).toString(16).slice(1)}),e.getColor=function(t){var e=this.getColor.start=this.getColor.start||{h:0,s:1,b:t||.75},r=this.hsb2rgb(e.h,e.s,e.b);return e.h+=.075,e.h>1&&(e.h=0,e.s-=.2,e.s<=0&&(this.getColor.start={h:0,s:1,b:e.b})),r.hex},e.getColor.reset=function(){delete this.start},e.parsePathString=function(t){if(!t)return null;var r=Vt(t);if(r.arr)return Yt(r.arr);var i={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},n=[];return e.is(t,Q)&&e.is(t[0],Q)&&(n=Yt(t)),n.length||I(t).replace(yt,function(t,e,r){var a=[],s=e.toLowerCase();if(r.replace(bt,function(t,e){e&&a.push(+e)}),"m"==s&&a.length>2&&(n.push([e][P](a.splice(0,2))),s="l",e="m"==e?"l":"L"),"r"==s)n.push([e][P](a));else for(;a.length>=i[s]&&(n.push([e][P](a.splice(0,i[s]))),i[s]););}),n.toString=e._path2string,r.arr=Yt(n),n},e.parseTransformString=n(function(t){if(!t)return null;var r={r:3,s:4,t:2,m:6},i=[];return e.is(t,Q)&&e.is(t[0],Q)&&(i=Yt(t)),i.length||I(t).replace(mt,function(t,e,r){var n=[],a=O.call(e);r.replace(bt,function(t,e){e&&n.push(+e)}),i.push([e][P](n))}),i.toString=e._path2string,i});var Vt=function(t){var e=Vt.ps=Vt.ps||{};return e[t]?e[t].sleep=100:e[t]={sleep:100},setTimeout(function(){for(var r in e)e[A](r)&&r!=t&&(e[r].sleep--,!e[r].sleep&&delete e[r])}),e[t]};e.findDotsAtSegment=function(t,e,r,i,n,a,s,o,l){var h=1-l,u=X(h,3),c=X(h,2),f=l*l,p=f*l,d=u*t+3*c*l*r+3*h*l*l*n+p*s,g=u*e+3*c*l*i+3*h*l*l*a+p*o,v=t+2*l*(r-t)+f*(n-2*r+t),x=e+2*l*(i-e)+f*(a-2*i+e),y=r+2*l*(n-r)+f*(s-2*n+r),m=i+2*l*(a-i)+f*(o-2*a+i),b=h*t+l*r,_=h*e+l*i,w=h*n+l*s,k=h*a+l*o,B=90-180*Y.atan2(v-y,x-m)/U;return(v>y||x=t.x&&e<=t.x2&&r>=t.y&&r<=t.y2},e.isBBoxIntersect=function(t,r){var i=e.isPointInsideBBox;return i(r,t.x,t.y)||i(r,t.x2,t.y)||i(r,t.x,t.y2)||i(r,t.x2,t.y2)||i(t,r.x,r.y)||i(t,r.x2,r.y)||i(t,r.x,r.y2)||i(t,r.x2,r.y2)||(t.xr.x||r.xt.x)&&(t.yr.y||r.yt.y)},e.pathIntersection=function(t,e){return d(t,e)},e.pathIntersectionNumber=function(t,e){return d(t,e,1)},e.isPointInsidePath=function(t,r,i){var n=e.pathBBox(t);return e.isPointInsideBBox(n,r,i)&&d(t,[["M",r,i],["H",n.x2+10]],1)%2==1},e._removedFactory=function(e){return function(){t("raphael.log",null,"Raphaël: you are calling to method “"+e+"†of removed object",e)}};var Ot=e.pathBBox=function(t){var e=Vt(t);if(e.bbox)return r(e.bbox);if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0};t=Qt(t);for(var i=0,n=0,a=[],s=[],o,l=0,h=t.length;l1&&(b=Y.sqrt(b),r=b*r,i=b*i);var _=r*r,w=i*i,k=(s==o?-1:1)*Y.sqrt(H((_*w-_*m*m-w*y*y)/(_*m*m+w*y*y))),B=k*r*m/i+(t+l)/2,C=k*-i*y/r+(e+h)/2,S=Y.asin(((e-C)/i).toFixed(9)),A=Y.asin(((h-C)/i).toFixed(9));S=tA&&(S-=2*U),!o&&A>S&&(A-=2*U)}var T=A-S;if(H(T)>c){var E=A,M=l,N=h;A=S+c*(o&&A>S?1:-1),l=B+r*Y.cos(A),h=C+i*Y.sin(A),p=Ut(l,h,r,i,a,0,o,M,N,[A,E,B,C])}T=A-S;var L=Y.cos(S),z=Y.sin(S),F=Y.cos(A),R=Y.sin(A),j=Y.tan(T/4),I=4/3*r*j,D=4/3*i*j,V=[t,e],O=[t+I*z,e-D*L],W=[l+I*R,h-D*F],G=[l,h];if(O[0]=2*V[0]-O[0],O[1]=2*V[1]-O[1],u)return[O,W,G][P](p);p=[O,W,G][P](p).join()[q](",");for(var X=[],$=0,Z=p.length;$"1e12"&&(c=.5),H(f)>"1e12"&&(f=.5),c>0&&c<1&&(g=$t(t,e,r,i,n,a,s,o,c),d.push(g.x),p.push(g.y)),f>0&&f<1&&(g=$t(t,e,r,i,n,a,s,o,f),d.push(g.x),p.push(g.y)),l=a-2*i+e-(o-2*a+i),h=2*(i-e)-2*(a-i),u=e-i,c=(-h+Y.sqrt(h*h-4*l*u))/2/l,f=(-h-Y.sqrt(h*h-4*l*u))/2/l,H(c)>"1e12"&&(c=.5),H(f)>"1e12"&&(f=.5),c>0&&c<1&&(g=$t(t,e,r,i,n,a,s,o,c),d.push(g.x),p.push(g.y)),f>0&&f<1&&(g=$t(t,e,r,i,n,a,s,o,f),d.push(g.x),p.push(g.y)),{min:{x:G[z](0,d),y:G[z](0,p)},max:{x:W[z](0,d),y:W[z](0,p)}}}),Qt=e._path2curve=n(function(t,e){var r=!e&&Vt(t);if(!e&&r.curve)return Yt(r.curve);for(var i=Gt(t),n=e&&Gt(e),a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},s={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},o=(function(t,e,r){var i,n,a={T:1,Q:1};if(!t)return["C",e.x,e.y,e.x,e.y,e.x,e.y];switch(!(t[0]in a)&&(e.qx=e.qy=null),t[0]){case"M":e.X=t[1],e.Y=t[2];break;case"A":t=["C"][P](Ut[z](0,[e.x,e.y][P](t.slice(1))));break;case"S":"C"==r||"S"==r?(i=2*e.x-e.bx,n=2*e.y-e.by):(i=e.x,n=e.y),t=["C",i,n][P](t.slice(1));break;case"T":"Q"==r||"T"==r?(e.qx=2*e.x-e.qx,e.qy=2*e.y-e.qy):(e.qx=e.x,e.qy=e.y),t=["C"][P](Xt(e.x,e.y,e.qx,e.qy,t[1],t[2]));break;case"Q":e.qx=t[1],e.qy=t[2],t=["C"][P](Xt(e.x,e.y,t[1],t[2],t[3],t[4]));break;case"L":t=["C"][P](Ht(e.x,e.y,t[1],t[2]));break;case"H":t=["C"][P](Ht(e.x,e.y,t[1],e.y));break;case"V":t=["C"][P](Ht(e.x,e.y,e.x,t[1]));break;case"Z":t=["C"][P](Ht(e.x,e.y,e.X,e.Y))}return t}),l=function(t,e){if(t[e].length>7){t[e].shift();for(var r=t[e];r.length;)u[e]="A",n&&(c[e]="A"),t.splice(e++,0,["C"][P](r.splice(0,6)));t.splice(e,1),g=W(i.length,n&&n.length||0)}},h=function(t,e,r,a,s){t&&e&&"M"==t[s][0]&&"M"!=e[s][0]&&(e.splice(s,0,["M",a.x,a.y]),r.bx=0,r.by=0,r.x=t[s][1],r.y=t[s][2],g=W(i.length,n&&n.length||0))},u=[],c=[],f="",p="",d=0,g=W(i.length,n&&n.length||0);dn){if(r&&!c.start){if(f=ke(s,o,l[1],l[2],l[3],l[4],l[5],l[6],n-p),u+=["C"+f.start.x,f.start.y,f.m.x,f.m.y,f.x,f.y],a)return u;c.start=u,u=["M"+f.x,f.y+"C"+f.n.x,f.n.y,f.end.x,f.end.y,l[5],l[6]].join(),p+=h,s=+l[5],o=+l[6];continue}if(!t&&!r)return f=ke(s,o,l[1],l[2],l[3],l[4],l[5],l[6],n-p),{x:f.x,y:f.y,alpha:f.alpha}}p+=h,s=+l[5],o=+l[6]}u+=l.shift()+l}return c.end=u,f=t?p:r?c:e.findDotsAtSegment(s,o,l[0],l[1],l[2],l[3],l[4],l[5],1),f.alpha&&(f={x:f.x,y:f.y,alpha:f.alpha}),f}},Ce=Be(1),Se=Be(),Ae=Be(0,1);e.getTotalLength=Ce,e.getPointAtLength=Se,e.getSubpath=function(t,e,r){if(this.getTotalLength(t)-r<1e-6)return Ae(t,e).end;var i=Ae(t,r,1);return e?Ae(i,e).end:i},ye.getTotalLength=function(){var t=this.getPath();if(t)return this.node.getTotalLength?this.node.getTotalLength():Ce(t)},ye.getPointAtLength=function(t){var e=this.getPath();if(e)return Se(e,t)},ye.getPath=function(){var t,r=e._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return r&&(t=r(this)),t},ye.getSubpath=function(t,r){var i=this.getPath();if(i)return e.getSubpath(i,t,r)};var Te=e.easing_formulas={linear:function(t){return t},"<":function(t){return X(t,1.7)},">":function(t){return X(t,.48)},"<>":function(t){var e=.48-t/1.04,r=Y.sqrt(.1734+e*e),i=r-e,n=X(H(i),1/3)*(i<0?-1:1),a=-r-e,s=X(H(a),1/3)*(a<0?-1:1),o=n+s+.5;return 3*(1-o)*o*o+o*o*o},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){t-=1;var e=1.70158;return t*t*((e+1)*t+e)+1},elastic:function(t){return t==!!t?t:X(2,-10*t)*Y.sin((t-.075)*(2*U)/.3)+1},bounce:function(t){var e=7.5625,r=2.75,i;return t<1/r?i=e*t*t:t<2/r?(t-=1.5/r,i=e*t*t+.75):t<2.5/r?(t-=2.25/r,i=e*t*t+.9375):(t-=2.625/r,i=e*t*t+.984375),i}};Te.easeIn=Te["ease-in"]=Te["<"],Te.easeOut=Te["ease-out"]=Te[">"],Te.easeInOut=Te["ease-in-out"]=Te["<>"],Te["back-in"]=Te.backIn,Te["back-out"]=Te.backOut;var Ee=[],Me=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){setTimeout(t,16)},Ne=function(){for(var r=+new Date,i=0;i1&&!n.next){for(v in u)u[A](v)&&(g[v]=n.totalOrigin[v]);n.el.attr(g),b(n.anim,n.el,n.anim.percents[0],null,n.totalOrigin,n.repeat-1)}n.next&&!n.stop&&b(n.anim,n.el,n.next,null,n.totalOrigin,n.repeat)}}}Ee.length&&Me(Ne)},Le=function(t){return t>255?255:t<0?0:t};ye.animateWith=function(t,r,i,n,a,s){var o=this;if(o.removed)return s&&s.call(o),o;var l=i instanceof m?i:e.animation(i,n,a,s),h,u;b(l,o,l.percents[0],null,o.attr());for(var c=0,f=Ee.length;cl&&(l=u)}l+="%",!t[l].callback&&(t[l].callback=n)}return new m(t,r)},ye.animate=function(t,r,i,n){var a=this;if(a.removed)return n&&n.call(a),a;var s=t instanceof m?t:e.animation(t,r,i,n);return b(s,a,s.percents[0],null,a.attr()),a},ye.setTime=function(t,e){return t&&null!=e&&this.status(t,G(e,t.ms)/t.ms),this},ye.status=function(t,e){var r=[],i=0,n,a;if(null!=e)return b(t,this,-1,G(e,1)),this;for(n=Ee.length;i1)for(var i=0,n=r.length;i.5)-1;l(f-.5,2)+l(p-.5,2)>.25&&(p=a.sqrt(.25-l(f-.5,2))*n+.5)&&.5!=p&&(p=p.toFixed(5)-1e-5*n)}return c}),n=n.split(/\s*\-\s*/),"linear"==h){var b=n.shift();if(b=-i(b),isNaN(b))return null;var _=[0,0,a.cos(t.rad(b)),a.sin(t.rad(b))],w=1/(s(o(_[2]),o(_[3]))||1);_[2]*=w,_[3]*=w,_[2]<0&&(_[0]=-_[2],_[2]=0),_[3]<0&&(_[1]=-_[3],_[3]=0)}var k=t._parseDots(n);if(!k)return null;if(u=u.replace(/[\(\)\s,\xb0#]/g,"_"),e.gradient&&u!=e.gradient.id&&(g.defs.removeChild(e.gradient),delete e.gradient),!e.gradient){y=v(h+"Gradient",{id:u}),e.gradient=y,v(y,"radial"==h?{fx:f,fy:p}:{x1:_[0],y1:_[1],x2:_[2],y2:_[3],gradientTransform:e.matrix.invert()}),g.defs.appendChild(y);for(var B=0,C=k.length;B1?z.opacity/100:z.opacity});case"stroke":z=t.getRGB(g),l.setAttribute(d,z.hex),"stroke"==d&&z[e]("opacity")&&v(l,{"stroke-opacity":z.opacity>1?z.opacity/100:z.opacity}),"stroke"==d&&i._.arrows&&("startString"in i._.arrows&&_(i,i._.arrows.startString),"endString"in i._.arrows&&_(i,i._.arrows.endString,1));break;case"gradient":("circle"==i.type||"ellipse"==i.type||"r"!=r(g).charAt())&&x(i,g);break;case"opacity":u.gradient&&!u[e]("stroke-opacity")&&v(l,{"stroke-opacity":g>1?g/100:g});case"fill-opacity":if(u.gradient){P=t._g.doc.getElementById(l.getAttribute("fill").replace(/^url\(#|\)$/g,c)),P&&(F=P.getElementsByTagName("stop"),v(F[F.length-1],{"stop-opacity":g}));break}default:"font-size"==d&&(g=n(g,10)+"px");var R=d.replace(/(\-.)/g,function(t){return t.substring(1).toUpperCase()});l.style[R]=g,i._.dirty=1,l.setAttribute(d,g)}}S(i,a),l.style.visibility=f},C=1.2,S=function(i,a){if("text"==i.type&&(a[e]("text")||a[e]("font")||a[e]("font-size")||a[e]("x")||a[e]("y"))){var s=i.attrs,o=i.node,l=o.firstChild?n(t._g.doc.defaultView.getComputedStyle(o.firstChild,c).getPropertyValue("font-size"),10):10;if(a[e]("text")){for(s.text=a.text;o.firstChild;)o.removeChild(o.firstChild);for(var h=r(a.text).split("\n"),u=[],f,p=0,d=h.length;p"));var Z=X.getBoundingClientRect();m.W=f.w=(Z.right-Z.left)/U,m.H=f.h=(Z.bottom-Z.top)/U,m.X=f.x,m.Y=f.y+m.H/2,("x"in l||"y"in l)&&(m.path.v=t.format("m{0},{1}l{2},{1}",a(f.x*b),a(f.y*b),a(f.x*b)+1));for(var Q=["x","y","text","font","font-family","font-weight","font-style","font-size"],J=0,K=Q.length;J.25&&(r=n.sqrt(.25-l(e-.5,2))*(2*(r>.5)-1)+.5),f=e+p+r),d}),a=a.split(/\s*\-\s*/),"linear"==c){var g=a.shift();if(g=-i(g),isNaN(g))return null}var v=t._parseDots(a);if(!v)return null;if(e=e.shape||e.node,v.length){e.removeChild(s),s.on=!0,s.method="none",s.color=v[0].color,s.color2=v[v.length-1].color;for(var x=[],y=0,m=v.length;y')}}catch(r){N=function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},t._engine.initWin(t._g.win),t._engine.create=function(){var e=t._getContainer.apply(0,arguments),r=e.container,i=e.height,n,a=e.width,s=e.x,o=e.y;if(!r)throw new Error("VML container not found.");var l=new t._Paper,h=l.canvas=t._g.doc.createElement("div"),u=h.style;return s=s||0,o=o||0,a=a||512,i=i||342,l.width=a,l.height=i,a==+a&&(a+="px"),i==+i&&(i+="px"),l.coordsize=1e3*b+p+1e3*b,l.coordorigin="0 0",l.span=t._g.doc.createElement("span"),l.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",h.appendChild(l.span),u.cssText=t.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",a,i),1==r?(t._g.doc.body.appendChild(h),u.left=s+"px",u.top=o+"px",u.position="absolute"):r.firstChild?r.insertBefore(h,r.firstChild):r.appendChild(h),l.renderfix=function(){},l},t.prototype.clear=function(){t.eve("raphael.clear",this),this.canvas.innerHTML=d,this.span=t._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},t.prototype.remove=function(){t.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var e in this)this[e]="function"==typeof this[e]?t._removedFactory(e):null;return!0};var L=t.st;for(var z in M)M[e](z)&&!L[e](z)&&(L[z]=function(t){return function(){var e=arguments;return this.forEach(function(r){r[t].apply(r,e)})}}(z))}}.apply(e,i),!(void 0!==n&&(t.exports=n))}])}); \ No newline at end of file diff --git a/wp-content/plugins/antispam-bee/js/scripts.js b/wp-content/plugins/antispam-bee/js/scripts.js new file mode 100644 index 0000000..f1ef4ea --- /dev/null +++ b/wp-content/plugins/antispam-bee/js/scripts.js @@ -0,0 +1,20 @@ +jQuery(document).ready( + function($) { + function ab_flag_spam() { + var $$ = $('#ab_flag_spam'), + nextAll = $$.parent('li').nextAll( '.ab_flag_spam_child' ); + + nextAll.css( + 'display', + ( $$.is(':checked') ? 'list-item' : 'none' ) + ); + } + + $('#ab_flag_spam').on( + 'change', + ab_flag_spam + ); + + ab_flag_spam(); + } +); diff --git a/wp-content/plugins/antispam-bee/js/scripts.min.js b/wp-content/plugins/antispam-bee/js/scripts.min.js new file mode 100644 index 0000000..62d49cb --- /dev/null +++ b/wp-content/plugins/antispam-bee/js/scripts.min.js @@ -0,0 +1 @@ +jQuery(document).ready(function(a){function b(){var b=a("#ab_flag_spam"),c=b.parent("li").nextAll(".ab_flag_spam_child");c.css("display",b.is(":checked")?"list-item":"none")}a("#ab_flag_spam").on("change",b),b()}); \ No newline at end of file diff --git a/wp-content/plugins/antispam-bee/readme.txt b/wp-content/plugins/antispam-bee/readme.txt new file mode 100755 index 0000000..45ed497 --- /dev/null +++ b/wp-content/plugins/antispam-bee/readme.txt @@ -0,0 +1,209 @@ +# Antispam Bee # +* Contributors: pluginkollektiv +* Tags: anti-spam, antispam, block spam, comment, comments, comment spam, pingback, spam, spam filter, trackback, GDPR +* Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=TD4AMD2D8EMZW +* Requires at least: 4.5 +* Tested up to: 5.1 +* Stable tag: 2.9.1 +* License: GPLv2 or later +* License URI: https://www.gnu.org/licenses/gpl-2.0.html + +Antispam plugin with a sophisticated tool set for effective day to day comment and trackback spam-fighting. Build with data protection and privacy in mind. + +## Description ## +Say Goodbye to comment spam on your WordPress blog or website. *Antispam Bee* blocks spam comments and trackbacks effectively, without captchas and without sending personal information to third party services. It is free of charge, ad-free and 100% GDPR compliant. + +[](http://coderisk.com/wp/plugin/antispam-bee/RIPS-J23dtT1_jC) + +### Feature/Settings Overview ### +* Trust approved commenters. +* Trust commenters with a Gravatar. +* Consider the comment time. +* Allow comments only in a certain language. +* Block or allow commenters from certain countries. +* Treat BBCode as spam. +* Validate the IP address of commenters. +* Use regular expressions. +* Search local spam database for commenters previously marked as spammers. +* Notify admins by e-mail about incoming spam. +* Delete existing spam after n days. +* Limit approval to comments/pings (will delete other comment types). +* Select spam indicators to send comments to deletion directly. +* Optionally exclude trackbacks and pingbacks from spam detection. +* Optionally spam-check comment forms on archive pages. +* Display spam statistics on the dashboard, including daily updates of spam detection rate and a total of blocked spam comments. + +### Support ### +* Community support via the [support forums on wordpress.org](https://wordpress.org/support/plugin/antispam-bee) +* Read [the documentation](https://github.com/pluginkollektiv/antispam-bee/wiki/en-Documentation) +* We don’t handle support via e-mail, Twitter, GitHub issues etc. + +### Contribute ### +* Active development of this plugin is handled [on GitHub](https://github.com/pluginkollektiv/antispam-bee). +* Pull requests for documented bugs are highly appreciated. +* If you think you’ve found a bug (e.g. you’re experiencing unexpected behavior), please post at the [support forums](https://wordpress.org/support/plugin/antispam-bee) first. +* If you want to help us translate this plugin you can do so [on WordPress Translate](https://translate.wordpress.org/projects/wp-plugins/antispam-bee). + +### Credits ### +* Author: [Sergej Müller](https://sergejmueller.github.io/) +* Maintainers: [pluginkollektiv](https://pluginkollektiv.org) + +## Installation ## +* If you don’t know how to install a plugin for WordPress, [here’s how](http://codex.wordpress.org/Managing_Plugins#Installing_Plugins). + +### Requirements ### +* PHP 5.2.4 or greater +* WordPress 3.8 or greater + +### Settings ### +After you have activated *Antispam Bee* the plugin will block spam comments out of the box. However, you may want to visit *Settings → Antispam Bee* to configure your custom set of anti-spam options that works best for your site. + +## Frequently Asked Questions ## + +### Does Antispam Bee work with Jetpack, Disqus Comments and other comment plugins? ### +Antispam Bee works best with default WordPress comments. It is not compatible with Jetpack or Disqus Comments as those plugins load the comment form within an iframe. Thus Antispam Bee can not access the comment form directly. +It also won’t work with any AJAX-powered comment forms. + +### Does Antispam Bee store any private user data, and is it compliant with GDPR? ### +Antispam Bee is developed in Europe. You might have heard we can be a bit nitpicky over here when it comes to privacy. The plugin does not save private user data and is 100% compliant with GDPR. + +### Will I have to edit any theme templates to get Antispam Bee to work? ### +No, the plugin works as is. You may want to configure your favorite settings, though. + +### Does Antispam Bee work with shortened IPs? ### +Generally yes. However, commissioning the Antispam Bee plugin for canceled or shortened IP addresses in comment metadata is not recommended. Because the name and the e-mail address of the comments are not unique, an IP address is the only reliable measure. The more complete the stored IP addresses, the more reliable the assignment or detection of spam. + +### How can I submit undetected spam? ### +If the antispam plugin has passed some spam comments, these comments can be reported for analysis. A [Google table](http://goo.gl/forms/ITzVHXkLVL) was created for this purpose. + +### Antispam Bee with Varnish? ### +If WordPress is operated with Apache + Varnish, the actual IP address of the visitors does not appear in WordPress. Accordingly the Antispam-Plugin lacks the base for the correct functionality. An adaptation in the Varnish configuration file /etc/varnish/default.vcl provides a remedy and forwards the original (not from Apache) IP address in the HTTP header X-Forwarded-For: + +``` +if (req.restarts == 0) { + set req.http.X-Forwarded-For = client.ip; +} +``` + +### Are there some paid services or limitations? ### +No, Antispam Bee is free forever, for both private and commercial projects. You can use it on as many sites as you want. There is no limitation to the number of sites you use the plugin on. + +A complete documentation is available in the [GitHub repository Wiki](https://github.com/pluginkollektiv/antispam-bee/wiki). + +## Changelog ## + +### 2.9.1 ### + * Improved backend accessibility + * Prefilled comment textareas do now work with the honeypot + * AMP compatibility + * Improved dashboard tooltips + * Improvements for the language detection API + * Scalable IP look up for local spam database + +### 2.9.0 ### + * Introduction of coding standards. + * Switch to franc language detection API for the language check. + * Do not longer overwrite the IP address WordPress saves with the comment by using `pre_comment_user_ip`. + * Do not show "Trust commenters with a Gravatar" if the "Show Gravatar" option is not set. + * Skip the checks, when I ping myself. + * Fixes some wrong usages of the translation functions. + * Use the regular expressions check also for trackbacks. + * Add option to delete Antispam Bee related data when plugin gets deleted via the admin interface. + * Save a hashed + salted IP for every comment + * New check for incoming trackbacks. + * Introduction of behat tests. + * Updates the used JavaScript library for the statistics widget. + * Bugfix in the "Comment form used outside of posts" option. + +### 2.8.1 ### + * PHP 5.3 compatibility + * Bugfix where a spam trackback produced a fatal error + * For more details see https://github.com/pluginkollektiv/antispam-bee/milestone/8?closed=1 + +### 2.8.0 ### + * Removed stopforumspam.com to avoid potential GDPR violation + * Improves IP handling to comply with GDPR + * Improves PHP7.2 compatibility + * Fixes small bug on mobile views + * Allow more than one language in language check + * Minor interface improvements + * Remove old russian and Dutch translation files + * For more details see https://github.com/pluginkollektiv/antispam-bee/milestone/4?closed=1 + +### 2.7.1 ### + * Fixes an incompatibility with Chrome autofill + * Fixes some incompatibilities with other plugins/themes where the comment field was left empty + * Support for RTL + * Solve some translation/language issues + * A new filter to add languages to the language check + * For more details see https://github.com/pluginkollektiv/antispam-bee/milestone/6?closed=1 + +### 2.7.0 ### + * Country check is back again (thanks to Sergej Müller for his amazing work and the service page) + * Improved Honeypot + * Language check through Google Translate API is back again (thanks to Simon Kraft of https://moenus.net/ for offering to cover the costs) + * More default Regexes + * Unit Test Framework + * Accessibility and GUI improvements + * An [english documentation](https://github.com/pluginkollektiv/antispam-bee/wiki) is now available, too. Some corrections in the german documentation. + * Some bugfixes - Among other things for WPML compatibility + * For more details see https://github.com/pluginkollektiv/antispam-bee/milestone/3?closed=1 + +### 2.6.9 ### + * Updates donation links throughout the plugin + * Fixes an error were JavaScript on the dashboard was erroneously being enqueued + * Ensures compatibility with the latest WordPress version + +### 2.6.8 ### + * added a POT file + * updated German translation, added formal version + * updated plugin text domain to include a dash instead of an underscore + * updated, translated + formatted README.md + * updated expired link URLs in plugin and languages files + * updated [plugin authors](https://gist.github.com/glueckpress/f058c0ab973d45a72720) + +### 2.6.7 ### + * Removal of functions *Block comments from specific countries* and *Allow comments only in certain language* for financial reasons - [more information](https://plus.google.com/u/0/+SergejMüller/posts/ZyquhoYjUyF) (only german) + +### 2.6.6 ### + * Switch to the official Google Translation API - [more information](https://plus.google.com/u/0/+SergejMüller/posts/ZyquhoYjUyF) (only german) + * *Release time investment (Development & QA): 2.5 h* + +### 2.6.5 ### + * Fix: Return parameters on `dashboard_glance_items` callback / thx [@toscho](https://twitter.com/toscho) + * New function: Trust commenters with a Gravatar / thx [@glueckpress](https://twitter.com/glueckpress) + * Additional plausibility checks and filters + * *Release time investment (Development & QA): 12 h* + +### 2.6.4 ### + * Consideration of the comment time (Spam if a comment was written in less than 5 seconds) - [more information on Google+](https://plus.google.com/+SergejMüller/posts/73EbP6F1BgC) (only german) + * *Release time investment (Development & QA): 6.25 h* + +### 2.6.3 ### + * Sorting for the Antispam Bee column in the spam comments overview + * Code refactoring around the use of REQUEST_URI + * *Release time investment (Development & QA): 2.75 h* + +### 2.6.2 ### + * Improving detection of fake IPs + * *Release time investment (Development & QA): 11 h* + +### 2.6.1 ### + * Code refactoring of options management + * Support for `HTTP_FORWARDED_FOR` header + * *Release time investment (Development & QA): 8.5 h* + +### 2.6.0 ### + * Optimizations for WordPress 3.8 + * Clear invalid UTF-8 characters in comment fields + * Spam reason as a column in the table with spam comments + +For the complete changelog, check out our [GitHub repository](https://github.com/pluginkollektiv/antispam-bee). + +== Upgrade Notice == + += 2.8.0 = +This update makes sure your spam check is GDPR compliant, no matter the options you choose. Please make sure to update before May 25th! + +## Screenshots ## +1. Antispam Bee settings diff --git a/wp-content/plugins/classic-editor/LICENSE.md b/wp-content/plugins/classic-editor/LICENSE.md new file mode 100644 index 0000000..7918e38 --- /dev/null +++ b/wp-content/plugins/classic-editor/LICENSE.md @@ -0,0 +1,400 @@ +### WordPress - Web publishing software + + Copyright 2011-2019 by the contributors + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +This program incorporates work covered by the following copyright and +permission notices: + + b2 is (c) 2001, 2002 Michel Valdrighi - m@tidakada.com - + http://tidakada.com + + Wherever third party code has been used, credit has been given in the code's + comments. + + b2 is released under the GPL + +and + + WordPress - Web publishing software + + Copyright 2003-2010 by the contributors + + WordPress is released under the GPL + +--- + +### GNU GENERAL PUBLIC LICENSE + +Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +### Preamble + +The licenses for most software are designed to take away your freedom +to share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, +we want its recipients to know that what they have is not the +original, so that any problems introduced by others will not reflect +on the original authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at +all. + +The precise terms and conditions for copying, distribution and +modification follow. + +### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +**0.** This License applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work +based on the Program" means either the Program or any derivative work +under copyright law: that is to say, a work containing the Program or +a portion of it, either verbatim or with modifications and/or +translated into another language. (Hereinafter, translation is +included without limitation in the term "modification".) Each licensee +is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the Program +(independent of having been made by running the Program). Whether that +is true depends on what the Program does. + +**1.** You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a +fee. + +**2.** You may modify your copy or copies of the Program or any +portion of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + +**a)** You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + + +**b)** You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any part +thereof, to be licensed as a whole at no charge to all third parties +under the terms of this License. + + +**c)** If the modified program normally reads commands interactively +when run, you must cause it, when started running for such interactive +use in the most ordinary way, to print or display an announcement +including an appropriate copyright notice and a notice that there is +no warranty (or else, saying that you provide a warranty) and that +users may redistribute the program under these conditions, and telling +the user how to view a copy of this License. (Exception: if the +Program itself is interactive but does not normally print such an +announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +**3.** You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + +**a)** Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections 1 +and 2 above on a medium customarily used for software interchange; or, + + +**b)** Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your cost of +physically performing source distribution, a complete machine-readable +copy of the corresponding source code, to be distributed under the +terms of Sections 1 and 2 above on a medium customarily used for +software interchange; or, + + +**c)** Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is allowed +only for noncommercial distribution and only if you received the +program in object code or executable form with such an offer, in +accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +**4.** You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense or distribute the Program is void, and +will automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +**5.** You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +**6.** Each time you redistribute the Program (or any work based on +the Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +**7.** If, as a consequence of a court judgment or allegation of +patent infringement or for any other reason (not limited to patent +issues), conditions are imposed on you (whether by court order, +agreement or otherwise) that contradict the conditions of this +License, they do not excuse you from the conditions of this License. +If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, +then as a consequence you may not distribute the Program at all. For +example, if a patent license would not permit royalty-free +redistribution of the Program by all those who receive copies directly +or indirectly through you, then the only way you could satisfy both it +and this License would be to refrain entirely from distribution of the +Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +**8.** If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +**9.** The Free Software Foundation may publish revised and/or new +versions of the General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a +version number of this License, you may choose any version ever +published by the Free Software Foundation. + +**10.** If you wish to incorporate parts of the Program into other +free programs whose distribution conditions are different, write to +the author to ask for permission. For software which is copyrighted by +the Free Software Foundation, write to the Free Software Foundation; +we sometimes make exceptions for this. Our decision will be guided by +the two goals of preserving the free status of all derivatives of our +free software and of promoting the sharing and reuse of software +generally. + +**NO WARRANTY** + +**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +### END OF TERMS AND CONDITIONS + +### How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + one line to give the program's name and an idea of what it does. + Copyright (C) yyyy name of author + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +Also add information on how to contact you by electronic and paper +mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details + type `show w'. This is free software, and you are welcome + to redistribute it under certain conditions; type `show c' + for details. + +The hypothetical commands \`show w' and \`show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than \`show w' and +\`show c'; they could even be mouse-clicks or menu items--whatever +suits your program. + +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the program, +if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright + interest in the program `Gnomovision' + (which makes passes at compilers) written + by James Hacker. + + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, +you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use the +[GNU Lesser General Public +License](http://www.gnu.org/licenses/lgpl.html) instead of this +License. diff --git a/wp-content/plugins/classic-editor/classic-editor.php b/wp-content/plugins/classic-editor/classic-editor.php new file mode 100644 index 0000000..3e6e242 --- /dev/null +++ b/wp-content/plugins/classic-editor/classic-editor.php @@ -0,0 +1,941 @@ + 'classic', // Accepted values: 'classic', 'block'. + * 'allow-users' => false, + * + * @param boolean To override the settings return an array with the above keys. + */ + $settings = apply_filters( 'classic_editor_plugin_settings', false ); + + if ( is_array( $settings ) ) { + return array( + 'editor' => ( isset( $settings['editor'] ) && $settings['editor'] === 'block' ) ? 'block' : 'classic', + 'allow-users' => ! empty( $settings['allow-users'] ), + 'hide-settings-ui' => true, + ); + } + + if ( ! empty( self::$settings ) && $refresh === 'no' ) { + return self::$settings; + } + + if ( is_multisite() ) { + $defaults = array( + 'editor' => get_network_option( null, 'classic-editor-replace' ) === 'block' ? 'block' : 'classic', + 'allow-users' => false, + ); + + /** + * Filters the default network options. + * + * @param array $defaults The default options array. See `classic_editor_plugin_settings` for supported keys and values. + */ + $defaults = apply_filters( 'classic_editor_network_default_settings', $defaults ); + + if ( get_network_option( null, 'classic-editor-allow-sites' ) !== 'allow' ) { + // Per-site settings are disabled. Return default network options nad hide the settings UI. + $defaults['hide-settings-ui'] = true; + return $defaults; + } + + // Override with the site options. + $editor_option = get_option( 'classic-editor-replace' ); + $allow_users_option = get_option( 'classic-editor-allow-users' ); + + if ( $editor_option ) { + $defaults['editor'] = $editor_option; + } + if ( $allow_users_option ) { + $defaults['allow-users'] = ( $allow_users_option === 'allow' ); + } + + $editor = ( isset( $defaults['editor'] ) && $defaults['editor'] === 'block' ) ? 'block' : 'classic'; + $allow_users = ! empty( $defaults['allow-users'] ); + } else { + $allow_users = ( get_option( 'classic-editor-allow-users' ) === 'allow' ); + $option = get_option( 'classic-editor-replace' ); + + // Normalize old options. + if ( $option === 'block' || $option === 'no-replace' ) { + $editor = 'block'; + } else { + // empty( $option ) || $option === 'classic' || $option === 'replace'. + $editor = 'classic'; + } + } + + // Override the defaults with the user options. + if ( ( ! isset( $GLOBALS['pagenow'] ) || $GLOBALS['pagenow'] !== 'options-writing.php' ) && $allow_users ) { + $user_options = get_user_option( 'classic-editor-settings' ); + + if ( $user_options === 'block' || $user_options === 'classic' ) { + $editor = $user_options; + } + } + + self::$settings = array( + 'editor' => $editor, + 'hide-settings-ui' => false, + 'allow-users' => $allow_users, + ); + + return self::$settings; + } + + private static function is_classic( $post_id = 0 ) { + if ( ! $post_id ) { + $post_id = self::get_edited_post_id(); + } + + if ( $post_id ) { + $settings = self::get_settings(); + + if ( $settings['allow-users'] && ! isset( $_GET['classic-editor__forget'] ) ) { + $which = get_post_meta( $post_id, 'classic-editor-remember', true ); + + if ( $which ) { + // The editor choice will be "remembered" when the post is opened in either Classic or Block editor. + if ( 'classic-editor' === $which ) { + return true; + } elseif ( 'block-editor' === $which ) { + return false; + } + } + + return ( ! self::has_blocks( $post_id ) ); + } + } + + if ( isset( $_GET['classic-editor'] ) ) { + return true; + } + + return false; + } + + /** + * Get the edited post ID (early) when loading the Edit Post screen. + */ + private static function get_edited_post_id() { + if ( + ! empty( $_GET['post'] ) && + ! empty( $_GET['action'] ) && + $_GET['action'] === 'edit' && + ! empty( $GLOBALS['pagenow'] ) && + $GLOBALS['pagenow'] === 'post.php' + ) { + return (int) $_GET['post']; // post_ID + } + + return 0; + } + + public static function register_settings() { + // Add an option to Settings -> Writing + register_setting( 'writing', 'classic-editor-replace', array( + 'sanitize_callback' => array( __CLASS__, 'validate_option_editor' ), + ) ); + + register_setting( 'writing', 'classic-editor-allow-users', array( + 'sanitize_callback' => array( __CLASS__, 'validate_option_allow_users' ), + ) ); + + add_option_whitelist( array( + 'writing' => array( 'classic-editor-replace', 'classic-editor-allow-users' ), + ) ); + + $heading_1 = __( 'Default editor for all users', 'classic-editor' ); + $heading_2 = __( 'Allow users to switch editors', 'classic-editor' ); + + add_settings_field( 'classic-editor-1', $heading_1, array( __CLASS__, 'settings_1' ), 'writing' ); + add_settings_field( 'classic-editor-2', $heading_2, array( __CLASS__, 'settings_2' ), 'writing' ); + } + + public static function save_user_settings( $user_id ) { + if ( + isset( $_POST['classic-editor-user-settings'] ) && + isset( $_POST['classic-editor-replace'] ) && + wp_verify_nonce( $_POST['classic-editor-user-settings'], 'allow-user-settings' ) + ) { + $user_id = (int) $user_id; + + if ( $user_id !== get_current_user_id() && ! current_user_can( 'edit_user', $user_id ) ) { + return; + } + + $editor = self::validate_option_editor( $_POST['classic-editor-replace'] ); + update_user_option( $user_id, 'classic-editor-settings', $editor ); + } + } + + /** + * Validate + */ + public static function validate_option_editor( $value ) { + if ( $value === 'block' ) { + return 'block'; + } + + return 'classic'; + } + + public static function validate_option_allow_users( $value ) { + if ( $value === 'allow' ) { + return 'allow'; + } + + return 'disallow'; + } + + public static function settings_1() { + $settings = self::get_settings( 'refresh' ); + + ?> +
                      +

                      + /> + +

                      +

                      + /> + +

                      +
                      + + +
                      +

                      + /> + +

                      +

                      + /> + +

                      +
                      + + + + + + +
                      + + +
                      + + +

                      + + + + + + + + + + +
                      +

                      + /> + +

                      +

                      + /> + +

                      +
                      + > + +

                      +
                      + + + ID, 'classic-editor' ); + } + } + + /** + * Remember when the Block Editor was used to edit a post. + */ + public static function remember_block_editor( $editor_settings, $post ) { + $post_type = get_post_type( $post ); + + if ( $post_type && self::can_edit_post_type( $post_type ) ) { + self::remember( $post->ID, 'block-editor' ); + } + + return $editor_settings; + } + + private static function remember( $post_id, $editor ) { + if ( get_post_meta( $post_id, 'classic-editor-remember', true ) !== $editor ) { + update_post_meta( $post_id, 'classic-editor-remember', $editor ); + } + } + + /** + * Choose which editor to use for a post. + * + * Passes through `$which_editor` for Block Editor (it's sets to `true` but may be changed by another plugin). + * + * @uses `use_block_editor_for_post` filter. + * + * @param boolean $use_block_editor True for Block Editor, false for Classic Editor. + * @param WP_Post $post The post being edited. + * @return boolean True for Block Editor, false for Classic Editor. + */ + public static function choose_editor( $use_block_editor, $post ) { + $settings = self::get_settings(); + $editors = self::get_enabled_editors_for_post( $post ); + + // If no editor is supported, pass through `$use_block_editor`. + if ( ! $editors['block_editor'] && ! $editors['classic_editor'] ) { + return $use_block_editor; + } + + // Open the default editor when no $post and for "Add New" links, + // or the alternate editor when the user is switching editors. + if ( empty( $post->ID ) || $post->post_status === 'auto-draft' ) { + if ( + ( $settings['editor'] === 'classic' && ! isset( $_GET['classic-editor__forget'] ) ) || // Add New + ( isset( $_GET['classic-editor'] ) && isset( $_GET['classic-editor__forget'] ) ) // Switch to Classic Editor when no draft post. + ) { + $use_block_editor = false; + } + } elseif ( self::is_classic( $post->ID ) ) { + $use_block_editor = false; + } + + // Enforce the editor if set by plugins. + if ( $use_block_editor && ! $editors['block_editor'] ) { + $use_block_editor = false; + } elseif ( ! $use_block_editor && ! $editors['classic_editor'] && $editors['block_editor'] ) { + $use_block_editor = true; + } + + return $use_block_editor; + } + + /** + * Keep the `classic-editor` query arg through redirects when saving posts. + */ + public static function redirect_location( $location ) { + if ( + isset( $_REQUEST['classic-editor'] ) || + ( isset( $_POST['_wp_http_referer'] ) && strpos( $_POST['_wp_http_referer'], '&classic-editor' ) !== false ) + ) { + $location = add_query_arg( 'classic-editor', '', $location ); + } + + return $location; + } + + /** + * Keep the `classic-editor` query arg when looking at revisions. + */ + public static function get_edit_post_link( $url ) { + $settings = self::get_settings(); + + if ( isset( $_REQUEST['classic-editor'] ) || $settings['editor'] === 'classic' ) { + $url = add_query_arg( 'classic-editor', '', $url ); + } + + return $url; + } + + public static function add_meta_box( $post_type, $post ) { + $editors = self::get_enabled_editors_for_post( $post ); + + if ( ! $editors['block_editor'] || ! $editors['classic_editor'] ) { + // Editors cannot be switched. + return; + } + + $id = 'classic-editor-switch-editor'; + $title = __( 'Editor', 'classic-editor' ); + $callback = array( __CLASS__, 'do_meta_box' ); + $args = array( + '__back_compat_meta_box' => true, + ); + + add_meta_box( $id, $title, $callback, null, 'side', 'default', $args ); + } + + public static function do_meta_box( $post ) { + $edit_url = get_edit_post_link( $post->ID, 'raw' ); + + // Switching to Block Editor. + $edit_url = remove_query_arg( 'classic-editor', $edit_url ); + // Forget the previous value when going to a specific editor. + $edit_url = add_query_arg( 'classic-editor__forget', '', $edit_url ); + + ?> +

                      + +

                      + __( 'Switch to Classic Editor', 'classic-editor' ) ) + ); + } + + /** + * Add a link to the settings on the Plugins screen. + */ + public static function add_settings_link( $links, $file ) { + $settings = self::get_settings(); + + if ( $file === 'classic-editor/classic-editor.php' && ! $settings['hide-settings-ui'] && current_user_can( 'manage_options' ) ) { + if ( current_filter() === 'plugin_action_links' ) { + $url = admin_url( 'options-writing.php#classic-editor-options' ); + } else { + $url = admin_url( '/network/settings.php#classic-editor-options' ); + } + + // Prevent warnings in PHP 7.0+ when a plugin uses this filter incorrectly. + $links = (array) $links; + $links[] = sprintf( '%s', $url, __( 'Settings', 'classic-editor' ) ); + } + + return $links; + } + + private static function can_edit_post_type( $post_type ) { + $can_edit = false; + + if ( function_exists( 'gutenberg_can_edit_post_type' ) ) { + $can_edit = gutenberg_can_edit_post_type( $post_type ); + } elseif ( function_exists( 'use_block_editor_for_post_type' ) ) { + $can_edit = use_block_editor_for_post_type( $post_type ); + } + + return $can_edit; + } + + /** + * Checks which editors are enabled for the post type. + * + * @param string $post_type The post type. + * @return array Associative array of the editors and whether they are enabled for the post type. + */ + private static function get_enabled_editors_for_post_type( $post_type ) { + if ( isset( self::$supported_post_types[ $post_type ] ) ) { + return self::$supported_post_types[ $post_type ]; + } + + $classic_editor = post_type_supports( $post_type, 'editor' ); + $block_editor = self::can_edit_post_type( $post_type ); + + $editors = array( + 'classic_editor' => $classic_editor, + 'block_editor' => $block_editor, + ); + + /** + * Filters the editors that are enabled for the post type. + * + * @param array $editors Associative array of the editors and whether they are enabled for the post type. + * @param string $post_type The post type. + */ + $editors = apply_filters( 'classic_editor_enabled_editors_for_post_type', $editors, $post_type ); + self::$supported_post_types[ $post_type ] = $editors; + + return $editors; + } + + /** + * Checks which editors are enabled for the post. + * + * @param WP_Post $post The post object. + * @return array Associative array of the editors and whether they are enabled for the post. + */ + private static function get_enabled_editors_for_post( $post ) { + $post_type = get_post_type( $post ); + + if ( ! $post_type ) { + return array( + 'classic_editor' => false, + 'block_editor' => false, + ); + } + + $editors = self::get_enabled_editors_for_post_type( $post_type ); + + /** + * Filters the editors that are enabled for the post. + * + * @param array $editors Associative array of the editors and whether they are enabled for the post. + * @param WP_Post $post The post object. + */ + return apply_filters( 'classic_editor_enabled_editors_for_post', $editors, $post ); + } + + /** + * Adds links to the post/page screens to edit any post or page in + * the Classic Editor or Block Editor. + * + * @param array $actions Post actions. + * @param WP_Post $post Edited post. + * @return array Updated post actions. + */ + public static function add_edit_links( $actions, $post ) { + // This is in Gutenberg, don't duplicate it. + if ( array_key_exists( 'classic', $actions ) ) { + unset( $actions['classic'] ); + } + + if ( ! array_key_exists( 'edit', $actions ) ) { + return $actions; + } + + $edit_url = get_edit_post_link( $post->ID, 'raw' ); + + if ( ! $edit_url ) { + return $actions; + } + + $editors = self::get_enabled_editors_for_post( $post ); + + // Do not show the links if only one editor is available. + if ( ! $editors['classic_editor'] || ! $editors['block_editor'] ) { + return $actions; + } + + // Forget the previous value when going to a specific editor. + $edit_url = add_query_arg( 'classic-editor__forget', '', $edit_url ); + + // Build the edit actions. See also: WP_Posts_List_Table::handle_row_actions(). + $title = _draft_or_post_title( $post->ID ); + + // Link to the Block Editor. + $url = remove_query_arg( 'classic-editor', $edit_url ); + $text = _x( 'Edit (Block Editor)', 'Editor Name', 'classic-editor' ); + /* translators: %s: post title */ + $label = sprintf( __( 'Edit “%s” in the Block Editor', 'classic-editor' ), $title ); + $edit_block = sprintf( '%s', esc_url( $url ), esc_attr( $label ), $text ); + + // Link to the Classic Editor. + $url = add_query_arg( 'classic-editor', '', $edit_url ); + $text = _x( 'Edit (Classic Editor)', 'Editor Name', 'classic-editor' ); + /* translators: %s: post title */ + $label = sprintf( __( 'Edit “%s” in the Classic Editor', 'classic-editor' ), $title ); + $edit_classic = sprintf( '%s', esc_url( $url ), esc_attr( $label ), $text ); + + $edit_actions = array( + 'classic-editor-block' => $edit_block, + 'classic-editor-classic' => $edit_classic, + ); + + // Insert the new Edit actions instead of the Edit action. + $edit_offset = array_search( 'edit', array_keys( $actions ), true ); + array_splice( $actions, $edit_offset, 1, $edit_actions ); + + return $actions; + } + + /** + * Show the editor that will be used in a "post state" in the Posts list table. + */ + public static function add_post_state( $post_states, $post ) { + if ( get_post_status( $post ) === 'trash' ) { + return $post_states; + } + + $editors = self::get_enabled_editors_for_post( $post ); + + if ( ! $editors['classic_editor'] && ! $editors['block_editor'] ) { + return $post_states; + } elseif ( $editors['classic_editor'] && ! $editors['block_editor'] ) { + // Forced to Classic Editor. + $state = '' . _x( 'Classic Editor', 'Editor Name', 'classic-editor' ) . ''; + } elseif ( ! $editors['classic_editor'] && $editors['block_editor'] ) { + // Forced to Block Editor. + $state = '' . _x( 'Block Editor', 'Editor Name', 'classic-editor' ) . ''; + } else { + $last_editor = get_post_meta( $post->ID, 'classic-editor-remember', true ); + + if ( $last_editor ) { + $is_classic = ( $last_editor === 'classic-editor' ); + } elseif ( ! empty( $post->post_content ) ) { + $is_classic = ! self::has_blocks( $post->post_content ); + } else { + $settings = self::get_settings(); + $is_classic = ( $settings['editor'] === 'classic' ); + } + + $state = $is_classic ? _x( 'Classic Editor', 'Editor Name', 'classic-editor' ) : _x( 'Block Editor', 'Editor Name', 'classic-editor' ); + } + + // Fix PHP 7+ warnings if another plugin returns unexpected type. + $post_states = (array) $post_states; + $post_states['classic-editor-plugin'] = $state; + + return $post_states; + } + + public static function add_edit_php_inline_style() { + ?> + + post_content; + } + } + + return false !== strpos( (string) $post, ' + +
                      +initial() ) : +?> +

                      + + +

                      +shortcode( array( 'use_old_format' => true ) ) ) : +?> +

                      + + +

                      + +
                      +
                      + + +
                      + +
                      +

                      +
                      +
                      + +
                      + + + +initial() ) : + $copy_nonce = wp_create_nonce( 'wpcf7-copy-contact-form_' . $post_id ); +?> + /> + +
                      + +
                      + +
                      + +
                      + +initial() ) : + $delete_nonce = wp_create_nonce( 'wpcf7-delete-contact-form_' . $post_id ); +?> +
                      + /> +
                      + + +
                      + + +
                      +
                      +
                      +
                      +
                      +
                      + + +
                      +

                      +
                      +

                      +
                        +
                      1. +
                      2. +
                      3. +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      ', + sprintf( + '%s', + /* translators: screen reader text */ + esc_html( __( '(left and right arrow)', 'contact-form-7' ) ) + ) + ); +?>
                      + + array( + 'title' => __( 'Form', 'contact-form-7' ), + 'callback' => 'wpcf7_editor_panel_form', + ), + 'mail-panel' => array( + 'title' => __( 'Mail', 'contact-form-7' ), + 'callback' => 'wpcf7_editor_panel_mail', + ), + 'messages-panel' => array( + 'title' => __( 'Messages', 'contact-form-7' ), + 'callback' => 'wpcf7_editor_panel_messages', + ), + ); + + $additional_settings = trim( $post->prop( 'additional_settings' ) ); + $additional_settings = explode( "\n", $additional_settings ); + $additional_settings = array_filter( $additional_settings ); + $additional_settings = count( $additional_settings ); + + $panels['additional-settings-panel'] = array( + 'title' => $additional_settings + /* translators: %d: number of additional settings */ + ? sprintf( + __( 'Additional Settings (%d)', 'contact-form-7' ), + $additional_settings ) + : __( 'Additional Settings', 'contact-form-7' ), + 'callback' => 'wpcf7_editor_panel_additional_settings', + ); + } + + $panels = apply_filters( 'wpcf7_editor_panels', $panels ); + + foreach ( $panels as $id => $panel ) { + $editor->add_panel( $id, $panel['title'], $panel['callback'] ); + } + + $editor->display(); +?> +
                      + + +

                      + + +
                      + + +
                      + + + + + + + +print_panels( $post ); + + do_action( 'wpcf7_admin_footer', $post ); diff --git a/wp-content/plugins/contact-form-7/admin/includes/admin-functions.php b/wp-content/plugins/contact-form-7/admin/includes/admin-functions.php new file mode 100644 index 0000000..ba55018 --- /dev/null +++ b/wp-content/plugins/contact-form-7/admin/includes/admin-functions.php @@ -0,0 +1,22 @@ +add( $name, $title, $callback, $options ); +} diff --git a/wp-content/plugins/contact-form-7/admin/includes/class-contact-forms-list-table.php b/wp-content/plugins/contact-form-7/admin/includes/class-contact-forms-list-table.php new file mode 100644 index 0000000..8f731d0 --- /dev/null +++ b/wp-content/plugins/contact-form-7/admin/includes/class-contact-forms-list-table.php @@ -0,0 +1,253 @@ + '', + 'title' => __( 'Title', 'contact-form-7' ), + 'shortcode' => __( 'Shortcode', 'contact-form-7' ), + 'author' => __( 'Author', 'contact-form-7' ), + 'date' => __( 'Date', 'contact-form-7' ), + ); + + return $columns; + } + + public function __construct() { + parent::__construct( array( + 'singular' => 'post', + 'plural' => 'posts', + 'ajax' => false, + ) ); + } + + public function prepare_items() { + $current_screen = get_current_screen(); + $per_page = $this->get_items_per_page( 'cfseven_contact_forms_per_page' ); + + $args = array( + 'posts_per_page' => $per_page, + 'orderby' => 'title', + 'order' => 'ASC', + 'offset' => ( $this->get_pagenum() - 1 ) * $per_page, + ); + + if ( ! empty( $_REQUEST['s'] ) ) { + $args['s'] = $_REQUEST['s']; + } + + if ( ! empty( $_REQUEST['orderby'] ) ) { + if ( 'title' == $_REQUEST['orderby'] ) { + $args['orderby'] = 'title'; + } elseif ( 'author' == $_REQUEST['orderby'] ) { + $args['orderby'] = 'author'; + } elseif ( 'date' == $_REQUEST['orderby'] ) { + $args['orderby'] = 'date'; + } + } + + if ( ! empty( $_REQUEST['order'] ) ) { + if ( 'asc' == strtolower( $_REQUEST['order'] ) ) { + $args['order'] = 'ASC'; + } elseif ( 'desc' == strtolower( $_REQUEST['order'] ) ) { + $args['order'] = 'DESC'; + } + } + + $this->items = WPCF7_ContactForm::find( $args ); + + $total_items = WPCF7_ContactForm::count(); + $total_pages = ceil( $total_items / $per_page ); + + $this->set_pagination_args( array( + 'total_items' => $total_items, + 'total_pages' => $total_pages, + 'per_page' => $per_page, + ) ); + } + + public function get_columns() { + return get_column_headers( get_current_screen() ); + } + + protected function get_sortable_columns() { + $columns = array( + 'title' => array( 'title', true ), + 'author' => array( 'author', false ), + 'date' => array( 'date', false ), + ); + + return $columns; + } + + protected function get_bulk_actions() { + $actions = array( + 'delete' => __( 'Delete', 'contact-form-7' ), + ); + + return $actions; + } + + protected function column_default( $item, $column_name ) { + return ''; + } + + public function column_cb( $item ) { + return sprintf( + '', + $this->_args['singular'], + $item->id() + ); + } + + public function column_title( $item ) { + $edit_link = add_query_arg( + array( + 'post' => absint( $item->id() ), + 'action' => 'edit', + ), + menu_page_url( 'wpcf7', false ) + ); + + $output = sprintf( + '%3$s', + esc_url( $edit_link ), + /* translators: %s: title of contact form */ + esc_attr( sprintf( __( 'Edit “%s”', 'contact-form-7' ), + $item->title() ) ), + esc_html( $item->title() ) + ); + + $output = sprintf( '%s', $output ); + + if ( wpcf7_validate_configuration() + and current_user_can( 'wpcf7_edit_contact_form', $item->id() ) ) { + $config_validator = new WPCF7_ConfigValidator( $item ); + $config_validator->restore(); + + if ( $count_errors = $config_validator->count_errors() ) { + $error_notice = sprintf( + /* translators: %s: number of errors detected */ + _n( + '%s configuration error detected', + '%s configuration errors detected', + $count_errors, 'contact-form-7' ), + number_format_i18n( $count_errors ) + ); + + $output .= sprintf( + '
                      %s
                      ', + $error_notice + ); + } + } + + return $output; + } + + protected function handle_row_actions( $item, $column_name, $primary ) { + if ( $column_name !== $primary ) { + return ''; + } + + $edit_link = add_query_arg( + array( + 'post' => absint( $item->id() ), + 'action' => 'edit', + ), + menu_page_url( 'wpcf7', false ) + ); + + $actions = array( + 'edit' => wpcf7_link( $edit_link, __( 'Edit', 'contact-form-7' ) ), + ); + + if ( current_user_can( 'wpcf7_edit_contact_form', $item->id() ) ) { + $copy_link = add_query_arg( + array( + 'post' => absint( $item->id() ), + 'action' => 'copy', + ), + menu_page_url( 'wpcf7', false ) + ); + + $copy_link = wp_nonce_url( + $copy_link, + 'wpcf7-copy-contact-form_' . absint( $item->id() ) + ); + + $actions = array_merge( $actions, array( + 'copy' => wpcf7_link( $copy_link, __( 'Duplicate', 'contact-form-7' ) ), + ) ); + } + + return $this->row_actions( $actions ); + } + + public function column_author( $item ) { + $post = get_post( $item->id() ); + + if ( ! $post ) { + return; + } + + $author = get_userdata( $post->post_author ); + + if ( false === $author ) { + return; + } + + return esc_html( $author->display_name ); + } + + public function column_shortcode( $item ) { + $shortcodes = array( $item->shortcode() ); + + $output = ''; + + foreach ( $shortcodes as $shortcode ) { + $output .= "\n" . ''; + } + + return trim( $output ); + } + + public function column_date( $item ) { + $post = get_post( $item->id() ); + + if ( ! $post ) { + return; + } + + $t_time = mysql2date( __( 'Y/m/d g:i:s A', 'contact-form-7' ), + $post->post_date, true ); + $m_time = $post->post_date; + $time = mysql2date( 'G', $post->post_date ) + - get_option( 'gmt_offset' ) * 3600; + + $time_diff = time() - $time; + + if ( $time_diff > 0 and $time_diff < 24*60*60 ) { + $h_time = sprintf( + /* translators: %s: time since the creation of the contact form */ + __( '%s ago', 'contact-form-7' ), + human_time_diff( $time ) + ); + } else { + $h_time = mysql2date( __( 'Y/m/d', 'contact-form-7' ), $m_time ); + } + + return sprintf( '%1$s', + esc_html( $h_time ), + esc_attr( $t_time ) + ); + } +} diff --git a/wp-content/plugins/contact-form-7/admin/includes/config-validator.php b/wp-content/plugins/contact-form-7/admin/includes/config-validator.php new file mode 100644 index 0000000..ba93e89 --- /dev/null +++ b/wp-content/plugins/contact-form-7/admin/includes/config-validator.php @@ -0,0 +1,135 @@ + 'validate' ), + menu_page_url( 'wpcf7', false ) + ), + __( 'Validate Contact Form 7 Configuration', 'contact-form-7' ) + ); + + $message = __( "Misconfiguration leads to mail delivery failure or other troubles. Validate your contact forms now.", 'contact-form-7' ); + + echo sprintf( + '

                      %1$s » %2$s

                      ', + esc_html( $message ), + $link + ); +} + +add_action( 'wpcf7_admin_load', 'wpcf7_load_bulk_validate_page', 10, 2 ); + +function wpcf7_load_bulk_validate_page( $page, $action ) { + if ( 'wpcf7' != $page + or 'validate' != $action + or ! wpcf7_validate_configuration() + or 'POST' != $_SERVER['REQUEST_METHOD'] ) { + return; + } + + check_admin_referer( 'wpcf7-bulk-validate' ); + + if ( ! current_user_can( 'wpcf7_edit_contact_forms' ) ) { + wp_die( __( "You are not allowed to validate configuration.", 'contact-form-7' ) ); + } + + $contact_forms = WPCF7_ContactForm::find(); + + $result = array( + 'timestamp' => current_time( 'timestamp' ), + 'version' => WPCF7_VERSION, + 'count_valid' => 0, + 'count_invalid' => 0, + ); + + foreach ( $contact_forms as $contact_form ) { + $config_validator = new WPCF7_ConfigValidator( $contact_form ); + $config_validator->validate(); + $config_validator->save(); + + if ( $config_validator->is_valid() ) { + $result['count_valid'] += 1; + } else { + $result['count_invalid'] += 1; + } + } + + WPCF7::update_option( 'bulk_validate', $result ); + + $redirect_to = add_query_arg( + array( + 'message' => 'validated', + ), + menu_page_url( 'wpcf7', false ) + ); + + wp_safe_redirect( $redirect_to ); + exit(); +} + +function wpcf7_admin_bulk_validate_page() { + $contact_forms = WPCF7_ContactForm::find(); + $count = WPCF7_ContactForm::count(); + + $submit_text = sprintf( + /* translators: %s: number of contact forms */ + _n( + "Validate %s Contact Form Now", + "Validate %s Contact Forms Now", + $count, 'contact-form-7' ), + number_format_i18n( $count ) ); + +?> +
                      + +

                      + +
                      + + +

                      +
                      + + + +
                      +contact_form = $contact_form; + } + + public function add_panel( $id, $title, $callback ) { + if ( wpcf7_is_name( $id ) ) { + $this->panels[$id] = array( + 'title' => $title, + 'callback' => $callback, + ); + } + } + + public function display() { + if ( empty( $this->panels ) ) { + return; + } + + echo '
                        '; + + foreach ( $this->panels as $id => $panel ) { + echo sprintf( '
                      • %2$s
                      • ', + esc_attr( $id ), esc_html( $panel['title'] ) ); + } + + echo '
                      '; + + foreach ( $this->panels as $id => $panel ) { + echo sprintf( '
                      ', + esc_attr( $id ) ); + + if ( is_callable( $panel['callback'] ) ) { + $this->notice( $id, $panel ); + call_user_func( $panel['callback'], $this->contact_form ); + } + + echo '
                      '; + } + } + + public function notice( $id, $panel ) { + echo '
                      '; + } +} + +function wpcf7_editor_panel_form( $post ) { + $desc_link = wpcf7_link( + __( 'https://contactform7.com/editing-form-template/', 'contact-form-7' ), + __( 'Editing Form Template', 'contact-form-7' ) ); + $description = __( "You can edit the form template here. For details, see %s.", 'contact-form-7' ); + $description = sprintf( esc_html( $description ), $desc_link ); +?> + +

                      + +
                      + + +print_buttons(); +?> + + +
                      +'; + + wpcf7_editor_box_mail( $post, array( + 'id' => 'wpcf7-mail-2', + 'name' => 'mail_2', + 'title' => __( 'Mail (2)', 'contact-form-7' ), + 'use' => __( 'Use Mail (2)', 'contact-form-7' ), + ) ); +} + +function wpcf7_editor_box_mail( $post, $args = '' ) { + $args = wp_parse_args( $args, array( + 'id' => 'wpcf7-mail', + 'name' => 'mail', + 'title' => __( 'Mail', 'contact-form-7' ), + 'use' => null, + ) ); + + $id = esc_attr( $args['id'] ); + + $mail = wp_parse_args( $post->prop( $args['name'] ), array( + 'active' => false, + 'recipient' => '', + 'sender' => '', + 'subject' => '', + 'body' => '', + 'additional_headers' => '', + 'attachments' => '', + 'use_html' => false, + 'exclude_blank' => false, + ) ); + +?> +
                      +

                      + + + +

                      + + +
                      + +'; + + echo esc_html( __( "In the following fields, you can use these mail-tags:", + 'contact-form-7' ) ); + echo '
                      '; + $post->suggest_mail_tags( $args['name'] ); +?> +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + + +
                      + + + +
                      + + + +
                      + + + +
                      + + + + +

                      + +

                      +
                      + + + +
                      +
                      +
                      + +

                      +
                      + + $arr ) { + $field_id = sprintf( 'wpcf7-message-%s', strtr( $key, '_', '-' ) ); + $field_name = sprintf( 'wpcf7-messages[%s]', $key ); + +?> +

                      + +

                      + +
                      + +

                      +
                      + + +
                      +screen = $screen; + } + + public function set_help_tabs( $type ) { + switch ( $type ) { + case 'list': + $this->screen->add_help_tab( array( + 'id' => 'list_overview', + 'title' => __( 'Overview', 'contact-form-7' ), + 'content' => $this->content( 'list_overview' ) ) ); + + $this->screen->add_help_tab( array( + 'id' => 'list_available_actions', + 'title' => __( 'Available Actions', 'contact-form-7' ), + 'content' => $this->content( 'list_available_actions' ) ) ); + + $this->sidebar(); + + return; + case 'edit': + $this->screen->add_help_tab( array( + 'id' => 'edit_overview', + 'title' => __( 'Overview', 'contact-form-7' ), + 'content' => $this->content( 'edit_overview' ) ) ); + + $this->screen->add_help_tab( array( + 'id' => 'edit_form_tags', + 'title' => __( 'Form-tags', 'contact-form-7' ), + 'content' => $this->content( 'edit_form_tags' ) ) ); + + $this->screen->add_help_tab( array( + 'id' => 'edit_mail_tags', + 'title' => __( 'Mail-tags', 'contact-form-7' ), + 'content' => $this->content( 'edit_mail_tags' ) ) ); + + $this->sidebar(); + + return; + case 'integration': + $this->screen->add_help_tab( array( + 'id' => 'integration_overview', + 'title' => __( 'Overview', 'contact-form-7' ), + 'content' => $this->content( 'integration_overview' ) ) ); + + $this->sidebar(); + + return; + } + } + + private function content( $name ) { + $content = array(); + + $content['list_overview'] = '

                      ' . __( "On this screen, you can manage contact forms provided by Contact Form 7. You can manage an unlimited number of contact forms. Each contact form has a unique ID and Contact Form 7 shortcode ([contact-form-7 ...]). To insert a contact form into a post or a text widget, insert the shortcode into the target.", 'contact-form-7' ) . '

                      '; + + $content['list_available_actions'] = '

                      ' . __( "Hovering over a row in the contact forms list will display action links that allow you to manage your contact form. You can perform the following actions:", 'contact-form-7' ) . '

                      '; + $content['list_available_actions'] .= '

                      ' . __( "Edit - Navigates to the editing screen for that contact form. You can also reach that screen by clicking on the contact form title.", 'contact-form-7' ) . '

                      '; + $content['list_available_actions'] .= '

                      ' . __( "Duplicate - Clones that contact form. A cloned contact form inherits all content from the original, but has a different ID.", 'contact-form-7' ) . '

                      '; + + $content['edit_overview'] = '

                      ' . __( "On this screen, you can edit a contact form. A contact form is comprised of the following components:", 'contact-form-7' ) . '

                      '; + $content['edit_overview'] .= '

                      ' . __( "Title is the title of a contact form. This title is only used for labeling a contact form, and can be edited.", 'contact-form-7' ) . '

                      '; + $content['edit_overview'] .= '

                      ' . __( "Form is a content of HTML form. You can use arbitrary HTML, which is allowed inside a form element. You can also use Contact Form 7’s form-tags here.", 'contact-form-7' ) . '

                      '; + $content['edit_overview'] .= '

                      ' . __( "Mail manages a mail template (headers and message body) that this contact form will send when users submit it. You can use Contact Form 7’s mail-tags here.", 'contact-form-7' ) . '

                      '; + $content['edit_overview'] .= '

                      ' . __( "Mail (2) is an additional mail template that works similar to Mail. Mail (2) is different in that it is sent only when Mail has been sent successfully.", 'contact-form-7' ) . '

                      '; + $content['edit_overview'] .= '

                      ' . __( "In Messages, you can edit various types of messages used for this contact form. These messages are relatively short messages, like a validation error message you see when you leave a required field blank.", 'contact-form-7' ) . '

                      '; + $content['edit_overview'] .= '

                      ' . __( "Additional Settings provides a place where you can customize the behavior of this contact form by adding code snippets.", 'contact-form-7' ) . '

                      '; + + $content['edit_form_tags'] = '

                      ' . __( "A form-tag is a short code enclosed in square brackets used in a form content. A form-tag generally represents an input field, and its components can be separated into four parts: type, name, options, and values. Contact Form 7 supports several types of form-tags including text fields, number fields, date fields, checkboxes, radio buttons, menus, file-uploading fields, CAPTCHAs, and quiz fields.", 'contact-form-7' ) . '

                      '; + $content['edit_form_tags'] .= '

                      ' . __( "While form-tags have a comparatively complex syntax, you don’t need to know the syntax to add form-tags because you can use the straightforward tag generator (Generate Tag button on this screen).", 'contact-form-7' ) . '

                      '; + + $content['edit_mail_tags'] = '

                      ' . __( "A mail-tag is also a short code enclosed in square brackets that you can use in every Mail and Mail (2) field. A mail-tag represents a user input value through an input field of a corresponding form-tag.", 'contact-form-7' ) . '

                      '; + $content['edit_mail_tags'] .= '

                      ' . __( "There are also special mail-tags that have specific names, but don’t have corresponding form-tags. They are used to represent meta information of form submissions like the submitter’s IP address or the URL of the page.", 'contact-form-7' ) . '

                      '; + + $content['integration_overview'] = '

                      ' . __( "On this screen, you can manage services that are available through Contact Form 7. Using API will allow you to collaborate with any services that are available.", 'contact-form-7' ) . '

                      '; + $content['integration_overview'] .= '

                      ' . __( "You may need to first sign up for an account with the service that you plan to use. When you do so, you would need to authorize Contact Form 7 to access the service with your account.", 'contact-form-7' ) . '

                      '; + $content['integration_overview'] .= '

                      ' . __( "Any information you provide will not be shared with service providers without your authorization.", 'contact-form-7' ) . '

                      '; + + if ( ! empty( $content[$name] ) ) { + return $content[$name]; + } + } + + public function sidebar() { + $content = '

                      ' . __( 'For more information:', 'contact-form-7' ) . '

                      '; + $content .= '

                      ' . wpcf7_link( __( 'https://contactform7.com/docs/', 'contact-form-7' ), __( 'Docs', 'contact-form-7' ) ) . '

                      '; + $content .= '

                      ' . wpcf7_link( __( 'https://contactform7.com/faq/', 'contact-form-7' ), __( 'FAQ', 'contact-form-7' ) ) . '

                      '; + $content .= '

                      ' . wpcf7_link( __( 'https://contactform7.com/support/', 'contact-form-7' ), __( 'Support', 'contact-form-7' ) ) . '

                      '; + + $this->screen->set_help_sidebar( $content ); + } +} diff --git a/wp-content/plugins/contact-form-7/admin/includes/tag-generator.php b/wp-content/plugins/contact-form-7/admin/includes/tag-generator.php new file mode 100644 index 0000000..c8ab50f --- /dev/null +++ b/wp-content/plugins/contact-form-7/admin/includes/tag-generator.php @@ -0,0 +1,80 @@ +panels[$id] = array( + 'title' => $title, + 'content' => 'tag-generator-panel-' . $id, + 'options' => $options, + 'callback' => $callback, + ); + + return true; + } + + public function print_buttons() { + echo ''; + + foreach ( (array) $this->panels as $panel ) { + echo sprintf( + '%3$s', + esc_attr( $panel['content'] ), + /* translators: %s: title of form-tag like 'email' or 'checkboxes' */ + esc_attr( sprintf( + __( 'Form-tag Generator: %s', 'contact-form-7' ), + $panel['title'] ) ), + esc_html( $panel['title'] ) + ); + } + + echo ''; + } + + public function print_panels( WPCF7_ContactForm $contact_form ) { + foreach ( (array) $this->panels as $id => $panel ) { + $callback = $panel['callback']; + + $options = wp_parse_args( $panel['options'], array() ); + $options = array_merge( $options, array( + 'id' => $id, + 'title' => $panel['title'], + 'content' => $panel['content'], + ) ); + + if ( is_callable( $callback ) ) { + echo sprintf( ''; + } + } + } + +} diff --git a/wp-content/plugins/contact-form-7/admin/includes/welcome-panel.php b/wp-content/plugins/contact-form-7/admin/includes/welcome-panel.php new file mode 100644 index 0000000..fddf138 --- /dev/null +++ b/wp-content/plugins/contact-form-7/admin/includes/welcome-panel.php @@ -0,0 +1,78 @@ + +
                      + + + +
                      +
                      + +
                      +

                      + +

                      + +

                      +
                      + + +
                      +

                      + +

                      + +

                      + +

                      +
                      + +
                      +

                      + +

                      + +

                      +
                      + + +
                      +
                      +
                      +' ).attr( { + 'role': 'alert', + 'class': 'config-error' + } ); + + $.each( errors[ section ], function( i, val ) { + var $li = $( '
                    • ' ).append( + wpcf7.iconInCircle( '!' ) + ).append( + $( '' ).text( wpcf7.configValidator.iconAlt ) + ).append( ' ' ); + + if ( val.link ) { + $li.append( + $( '' ).attr( 'href', val.link ).text( val.message ) + ); + } else { + $li.text( val.message ); + } + + $li.appendTo( $list ); + + var tab = section + .replace( /^mail_\d+\./, 'mail.' ).replace( /\..*$/, '' ); + + if ( ! errorCount[ tab ] ) { + errorCount[ tab ] = 0; + } + + errorCount[ tab ] += 1; + + errorCount.total += 1; + } ); + + $( this ).after( $list ).attr( { 'aria-invalid': 'true' } ); + } + } ); + + $( '#contact-form-editor-tabs > li' ).each( function() { + var $item = $( this ); + $item.find( '.icon-in-circle' ).remove(); + var tab = $item.attr( 'id' ).replace( /-panel-tab$/, '' ); + + $.each( errors, function( key, val ) { + key = key.replace( /^mail_\d+\./, 'mail.' ); + + if ( key.replace( /\..*$/, '' ) == tab.replace( '-', '_' ) ) { + var $mark = wpcf7.iconInCircle( '!' ); + $item.find( 'a.ui-tabs-anchor' ).first().append( $mark ); + return false; + } + } ); + + var $tabPanelError = $( '#' + tab + '-panel > div.config-error:first' ); + $tabPanelError.empty(); + + if ( errorCount[ tab.replace( '-', '_' ) ] ) { + $tabPanelError.append( wpcf7.iconInCircle( '!' ) ); + + if ( 1 < errorCount[ tab.replace( '-', '_' ) ] ) { + var manyErrorsInTab = wpcf7.configValidator.manyErrorsInTab + .replace( '%d', errorCount[ tab.replace( '-', '_' ) ] ); + $tabPanelError.append( manyErrorsInTab ); + } else { + $tabPanelError.append( wpcf7.configValidator.oneErrorInTab ); + } + } + } ); + + $( '#misc-publishing-actions .misc-pub-section.config-error' ).remove(); + + if ( errorCount.total ) { + var $warning = $( '
                      ' ) + .addClass( 'misc-pub-section config-error' ) + .append( wpcf7.iconInCircle( '!' ) ); + + if ( 1 < errorCount.total ) { + $warning.append( + wpcf7.configValidator.manyErrors.replace( '%d', errorCount.total ) + ); + } else { + $warning.append( wpcf7.configValidator.oneError ); + } + + $warning.append( '
                      ' ).append( + $( '' ) + .attr( 'href', wpcf7.configValidator.docUrl ) + .text( wpcf7.configValidator.howToCorrect ) + ); + + $( '#misc-publishing-actions' ).append( $warning ); + } + }; + + /** + * Copied from wptitlehint() in wp-admin/js/post.js + */ + wpcf7.titleHint = function() { + var $title = $( '#title' ); + var $titleprompt = $( '#title-prompt-text' ); + + if ( '' === $title.val() ) { + $titleprompt.removeClass( 'screen-reader-text' ); + } + + $titleprompt.click( function() { + $( this ).addClass( 'screen-reader-text' ); + $title.focus(); + } ); + + $title.blur( function() { + if ( '' === $(this).val() ) { + $titleprompt.removeClass( 'screen-reader-text' ); + } + } ).focus( function() { + $titleprompt.addClass( 'screen-reader-text' ); + } ).keydown( function( e ) { + $titleprompt.addClass( 'screen-reader-text' ); + $( this ).unbind( e ); + } ); + }; + + wpcf7.iconInCircle = function( icon ) { + var $span = $( '' ); + return $span.text( icon ); + }; + + wpcf7.apiSettings.getRoute = function( path ) { + var url = wpcf7.apiSettings.root; + + url = url.replace( + wpcf7.apiSettings.namespace, + wpcf7.apiSettings.namespace + path ); + + return url; + }; + +} )( jQuery ); diff --git a/wp-content/plugins/contact-form-7/admin/js/tag-generator.js b/wp-content/plugins/contact-form-7/admin/js/tag-generator.js new file mode 100644 index 0000000..029e6f6 --- /dev/null +++ b/wp-content/plugins/contact-form-7/admin/js/tag-generator.js @@ -0,0 +1,249 @@ +( function( $ ) { + + 'use strict'; + + if ( typeof wpcf7 === 'undefined' || wpcf7 === null ) { + return; + } + + wpcf7.taggen = {}; + + $( function() { + $( 'form.tag-generator-panel' ).each( function() { + wpcf7.taggen.update( $( this ) ); + } ); + } ); + + $( 'form.tag-generator-panel' ).submit( function() { + return false; + } ); + + $( 'form.tag-generator-panel .control-box :input' ).change( function() { + var $form = $( this ).closest( 'form.tag-generator-panel' ); + wpcf7.taggen.normalize( $( this ) ); + wpcf7.taggen.update( $form ); + } ); + + $( 'input.insert-tag' ).click( function() { + var $form = $( this ).closest( 'form.tag-generator-panel' ); + var tag = $form.find( 'input.tag' ).val(); + wpcf7.taggen.insert( tag ); + tb_remove(); // close thickbox + return false; + } ); + + wpcf7.taggen.update = function( $form ) { + var id = $form.attr( 'data-id' ); + var name = ''; + var name_fields = $form.find( 'input[name="name"]' ); + + if ( name_fields.length ) { + name = name_fields.val(); + + if ( '' === name ) { + name = id + '-' + Math.floor( Math.random() * 1000 ); + name_fields.val( name ); + } + } + + if ( $.isFunction( wpcf7.taggen.update[ id ] ) ) { + return wpcf7.taggen.update[ id ].call( this, $form ); + } + + $form.find( 'input.tag' ).each( function() { + var tag_type = $( this ).attr( 'name' ); + + if ( $form.find( ':input[name="tagtype"]' ).length ) { + tag_type = $form.find( ':input[name="tagtype"]' ).val(); + } + + if ( $form.find( ':input[name="required"]' ).is( ':checked' ) ) { + tag_type += '*'; + } + + var components = wpcf7.taggen.compose( tag_type, $form ); + $( this ).val( components ); + } ); + + $form.find( 'span.mail-tag' ).text( '[' + name + ']' ); + + $form.find( 'input.mail-tag' ).each( function() { + $( this ).val( '[' + name + ']' ); + } ); + }; + + wpcf7.taggen.update.captcha = function( $form ) { + var captchac = wpcf7.taggen.compose( 'captchac', $form ); + var captchar = wpcf7.taggen.compose( 'captchar', $form ); + + $form.find( 'input.tag' ).val( captchac + ' ' + captchar ); + }; + + wpcf7.taggen.compose = function( tagType, $form ) { + var name = $form.find( 'input[name="name"]' ).val(); + var scope = $form.find( '.scope.' + tagType ); + + if ( ! scope.length ) { + scope = $form; + } + + var options = []; + + scope.find( 'input.option' ).not( ':checkbox,:radio' ).each( function( i ) { + var val = $( this ).val(); + + if ( ! val ) { + return; + } + + if ( $( this ).hasClass( 'filetype' ) ) { + val = val.split( /[,|\s]+/ ).join( '|' ); + } + + if ( $( this ).hasClass( 'color' ) ) { + val = '#' + val; + } + + if ( 'class' == $( this ).attr( 'name' ) ) { + $.each( val.split( ' ' ), function( i, n ) { + options.push( 'class:' + n ); + } ); + } else { + options.push( $( this ).attr( 'name' ) + ':' + val ); + } + } ); + + scope.find( 'input:checkbox.option' ).each( function( i ) { + if ( $( this ).is( ':checked' ) ) { + options.push( $( this ).attr( 'name' ) ); + } + } ); + + scope.find( 'input:radio.option' ).each( function( i ) { + if ( $( this ).is( ':checked' ) && ! $( this ).hasClass( 'default' ) ) { + options.push( $( this ).attr( 'name' ) + ':' + $( this ).val() ); + } + } ); + + if ( 'radio' == tagType ) { + options.push( 'default:1' ); + } + + options = ( options.length > 0 ) ? options.join( ' ' ) : ''; + + var value = ''; + + if ( scope.find( ':input[name="values"]' ).val() ) { + $.each( + scope.find( ':input[name="values"]' ).val().split( "\n" ), + function( i, n ) { + value += ' "' + n.replace( /["]/g, '"' ) + '"'; + } + ); + } + + var components = []; + + $.each( [ tagType, name, options, value ], function( i, v ) { + v = $.trim( v ); + + if ( '' != v ) { + components.push( v ); + } + } ); + + components = $.trim( components.join( ' ' ) ); + components = '[' + components + ']'; + + var content = scope.find( ':input[name="content"]' ).val(); + content = $.trim( content ); + + if ( content ) { + components += ' ' + content + ' [/' + tagType + ']'; + } + + return components; + }; + + wpcf7.taggen.normalize = function( $input ) { + var val = $input.val(); + + if ( $input.is( 'input[name="name"]' ) ) { + val = val.replace( /[^0-9a-zA-Z:._-]/g, '' ).replace( /^[^a-zA-Z]+/, '' ); + } + + if ( $input.is( '.numeric' ) ) { + val = val.replace( /[^0-9.-]/g, '' ); + } + + if ( $input.is( '.idvalue' ) ) { + val = val.replace( /[^-0-9a-zA-Z_]/g, '' ); + } + + if ( $input.is( '.classvalue' ) ) { + val = $.map( val.split( ' ' ), function( n ) { + return n.replace( /[^-0-9a-zA-Z_]/g, '' ); + } ).join( ' ' ); + + val = $.trim( val.replace( /\s+/g, ' ' ) ); + } + + if ( $input.is( '.color' ) ) { + val = val.replace( /[^0-9a-fA-F]/g, '' ); + } + + if ( $input.is( '.filesize' ) ) { + val = val.replace( /[^0-9kKmMbB]/g, '' ); + } + + if ( $input.is( '.filetype' ) ) { + val = val.replace( /[^0-9a-zA-Z.,|\s]/g, '' ); + } + + if ( $input.is( '.date' ) ) { + // 'yyyy-mm-dd' ISO 8601 format + if ( ! val.match( /^\d{4}-\d{2}-\d{2}$/ ) ) { + val = ''; + } + } + + if ( $input.is( ':input[name="values"]' ) ) { + val = $.trim( val ); + } + + $input.val( val ); + + if ( $input.is( ':checkbox.exclusive' ) ) { + wpcf7.taggen.exclusiveCheckbox( $input ); + } + }; + + wpcf7.taggen.exclusiveCheckbox = function( $cb ) { + if ( $cb.is( ':checked' ) ) { + $cb.siblings( ':checkbox.exclusive' ).prop( 'checked', false ); + } + }; + + wpcf7.taggen.insert = function( content ) { + $( 'textarea#wpcf7-form' ).each( function() { + this.focus(); + + if ( document.selection ) { // IE + var selection = document.selection.createRange(); + selection.text = content; + } else if ( this.selectionEnd || 0 === this.selectionEnd ) { + var val = $( this ).val(); + var end = this.selectionEnd; + $( this ).val( val.substring( 0, end ) + + content + val.substring( end, val.length ) ); + this.selectionStart = end + content.length; + this.selectionEnd = end + content.length; + } else { + $( this ).val( $( this ).val() + content ); + } + + this.focus(); + } ); + }; + +} )( jQuery ); diff --git a/wp-content/plugins/contact-form-7/images/ajax-loader.gif b/wp-content/plugins/contact-form-7/images/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2cfafd67f4e200b13a75d7bd093bdee54c2f116 GIT binary patch literal 847 zcmZ?wbhEHb6krfw_`<;O|NsB;^73E5eodJ&W$)g-RaI5p-Q6!`KikeHQNk&~a8qL-PMmd~L0lZBHDs7eQ93&@cStN{uNeJPpqmKuoUC~CDNtXexm zYwdvp2d^Dv;^>*ukeVSP#B=a~ zf`cHJ&w+*y$${?8Oio*#ZVND-p0{bqWVZD*Xt=Aat;&6vAl3|g72d7x8jzOQ(6|TN)0k3Co zc|z??%b8hfRI+(vH2HbDv054g3DyRMDNKeUM;%r)JIk@H5kHpQ-86?$(dkKoJwxMm zrhOBXU7IYboB|^nl6U7WD&rPXTBz{y(Bg!~gf`w#w`Gz=cO?0i7QEK{oc6x~t2H3M z0b_541COhrz@d{8xv>(*cS?BlTxh$Y!7k9nV#1{GTti1?UUB0cu(i`VAUAy((BOjfYz50rVKh zG6xfeLz|8{DtS)i*f48h0*75*E32o0N{2+RoVWQVUJo7igPpo1&00;(u2LcbOAhN^ rOjyy8aDeHjfMF+x#D?h({d~^m865hCENQGUn%zBWiVW7E WPCF7_ADMIN_READ_WRITE_CAPABILITY, + 'wpcf7_edit_contact_forms' => WPCF7_ADMIN_READ_WRITE_CAPABILITY, + 'wpcf7_read_contact_form' => WPCF7_ADMIN_READ_CAPABILITY, + 'wpcf7_read_contact_forms' => WPCF7_ADMIN_READ_CAPABILITY, + 'wpcf7_delete_contact_form' => WPCF7_ADMIN_READ_WRITE_CAPABILITY, + 'wpcf7_delete_contact_forms' => WPCF7_ADMIN_READ_WRITE_CAPABILITY, + 'wpcf7_manage_integration' => 'manage_options', + 'wpcf7_submit' => 'read', + ); + + $meta_caps = apply_filters( 'wpcf7_map_meta_cap', $meta_caps ); + + $caps = array_diff( $caps, array_keys( $meta_caps ) ); + + if ( isset( $meta_caps[$cap] ) ) { + $caps[] = $meta_caps[$cap]; + } + + return $caps; +} diff --git a/wp-content/plugins/contact-form-7/includes/config-validator.php b/wp-content/plugins/contact-form-7/includes/config-validator.php new file mode 100644 index 0000000..a3c55cd --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/config-validator.php @@ -0,0 +1,647 @@ +contact_form = $contact_form; + } + + public function contact_form() { + return $this->contact_form; + } + + public function is_valid() { + return ! $this->count_errors(); + } + + public function count_errors( $args = '' ) { + $args = wp_parse_args( $args, array( + 'section' => '', + 'code' => '', + ) ); + + $count = 0; + + foreach ( $this->errors as $key => $errors ) { + if ( preg_match( '/^mail_[0-9]+\.(.*)$/', $key, $matches ) ) { + $key = sprintf( 'mail.%s', $matches[1] ); + } + + if ( $args['section'] + and $key != $args['section'] + and preg_replace( '/\..*$/', '', $key, 1 ) != $args['section'] ) { + continue; + } + + foreach ( $errors as $error ) { + if ( empty( $error ) ) { + continue; + } + + if ( $args['code'] and $error['code'] != $args['code'] ) { + continue; + } + + $count += 1; + } + } + + return $count; + } + + public function collect_error_messages() { + $error_messages = array(); + + foreach ( $this->errors as $section => $errors ) { + $error_messages[$section] = array(); + + foreach ( $errors as $error ) { + if ( empty( $error['args']['message'] ) ) { + $message = $this->get_default_message( $error['code'] ); + } elseif ( empty( $error['args']['params'] ) ) { + $message = $error['args']['message']; + } else { + $message = $this->build_message( + $error['args']['message'], + $error['args']['params'] ); + } + + $link = ''; + + if ( ! empty( $error['args']['link'] ) ) { + $link = $error['args']['link']; + } + + $error_messages[$section][] = array( + 'message' => $message, + 'link' => esc_url( $link ), + ); + } + } + + return $error_messages; + } + + public function build_message( $message, $params = '' ) { + $params = wp_parse_args( $params, array() ); + + foreach ( $params as $key => $val ) { + if ( ! preg_match( '/^[0-9A-Za-z_]+$/', $key ) ) { // invalid key + continue; + } + + $placeholder = '%' . $key . '%'; + + if ( false !== stripos( $message, $placeholder ) ) { + $message = str_ireplace( $placeholder, $val, $message ); + } + } + + return $message; + } + + public function get_default_message( $code ) { + switch ( $code ) { + case self::error_maybe_empty: + return __( "There is a possible empty field.", 'contact-form-7' ); + case self::error_invalid_mailbox_syntax: + return __( "Invalid mailbox syntax is used.", 'contact-form-7' ); + case self::error_email_not_in_site_domain: + return __( "Sender email address does not belong to the site domain.", 'contact-form-7' ); + case self::error_html_in_message: + return __( "HTML tags are used in a message.", 'contact-form-7' ); + case self::error_multiple_controls_in_label: + return __( "Multiple form controls are in a single label element.", 'contact-form-7' ); + case self::error_invalid_mail_header: + return __( "There are invalid mail header fields.", 'contact-form-7' ); + case self::error_deprecated_settings: + return __( "Deprecated settings are used.", 'contact-form-7' ); + default: + return ''; + } + } + + public function add_error( $section, $code, $args = '' ) { + $args = wp_parse_args( $args, array( + 'message' => '', + 'params' => array(), + ) ); + + if ( ! isset( $this->errors[$section] ) ) { + $this->errors[$section] = array(); + } + + $this->errors[$section][] = array( 'code' => $code, 'args' => $args ); + + return true; + } + + public function remove_error( $section, $code ) { + if ( empty( $this->errors[$section] ) ) { + return; + } + + foreach ( (array) $this->errors[$section] as $key => $error ) { + if ( isset( $error['code'] ) + and $error['code'] == $code ) { + unset( $this->errors[$section][$key] ); + } + } + + if ( empty( $this->errors[$section] ) ) { + unset( $this->errors[$section] ); + } + } + + public function validate() { + $this->errors = array(); + + $this->validate_form(); + $this->validate_mail( 'mail' ); + $this->validate_mail( 'mail_2' ); + $this->validate_messages(); + $this->validate_additional_settings(); + + do_action( 'wpcf7_config_validator_validate', $this ); + + return $this->is_valid(); + } + + public function save() { + if ( $this->contact_form->initial() ) { + return; + } + + delete_post_meta( $this->contact_form->id(), '_config_errors' ); + + if ( $this->errors ) { + update_post_meta( $this->contact_form->id(), '_config_errors', + $this->errors ); + } + } + + public function restore() { + $config_errors = get_post_meta( + $this->contact_form->id(), '_config_errors', true ); + + foreach ( (array) $config_errors as $section => $errors ) { + if ( empty( $errors ) ) { + continue; + } + + if ( ! is_array( $errors ) ) { // for back-compat + $code = $errors; + $this->add_error( $section, $code ); + } else { + foreach ( (array) $errors as $error ) { + if ( ! empty( $error['code'] ) ) { + $code = $error['code']; + $args = isset( $error['args'] ) ? $error['args'] : ''; + $this->add_error( $section, $code, $args ); + } + } + } + } + } + + public function replace_mail_tags_with_minimum_input( $matches ) { + // allow [[foo]] syntax for escaping a tag + if ( $matches[1] == '[' && $matches[4] == ']' ) { + return substr( $matches[0], 1, -1 ); + } + + $tag = $matches[0]; + $tagname = $matches[2]; + $values = $matches[3]; + + $mail_tag = new WPCF7_MailTag( $tag, $tagname, $values ); + $field_name = $mail_tag->field_name(); + + $example_email = 'example@example.com'; + $example_text = 'example'; + $example_blank = ''; + + $form_tags = $this->contact_form->scan_form_tags( + array( 'name' => $field_name ) ); + + if ( $form_tags ) { + $form_tag = new WPCF7_FormTag( $form_tags[0] ); + + $is_required = ( $form_tag->is_required() || 'radio' == $form_tag->type ); + + if ( ! $is_required ) { + return $example_blank; + } + + if ( wpcf7_form_tag_supports( $form_tag->type, 'selectable-values' ) ) { + if ( $form_tag->pipes instanceof WPCF7_Pipes ) { + if ( $mail_tag->get_option( 'do_not_heat' ) ) { + $before_pipes = $form_tag->pipes->collect_befores(); + $last_item = array_pop( $before_pipes ); + } else { + $after_pipes = $form_tag->pipes->collect_afters(); + $last_item = array_pop( $after_pipes ); + } + } else { + $last_item = array_pop( $form_tag->values ); + } + + if ( $last_item and wpcf7_is_mailbox_list( $last_item ) ) { + return $example_email; + } else { + return $example_text; + } + } + + if ( 'email' == $form_tag->basetype ) { + return $example_email; + } else { + return $example_text; + } + + } else { // maybe special mail tag + // for back-compat + $field_name = preg_replace( '/^wpcf7\./', '_', $field_name ); + + if ( '_site_admin_email' == $field_name ) { + return get_bloginfo( 'admin_email', 'raw' ); + + } elseif ( '_user_agent' == $field_name ) { + return $example_text; + + } elseif ( '_user_email' == $field_name ) { + return $this->contact_form->is_true( 'subscribers_only' ) + ? $example_email + : $example_blank; + + } elseif ( '_user_' == substr( $field_name, 0, 6 ) ) { + return $this->contact_form->is_true( 'subscribers_only' ) + ? $example_text + : $example_blank; + + } elseif ( '_' == substr( $field_name, 0, 1 ) ) { + return '_email' == substr( $field_name, -6 ) + ? $example_email + : $example_text; + + } + } + + return $tag; + } + + public function validate_form() { + $section = 'form.body'; + $form = $this->contact_form->prop( 'form' ); + $this->detect_multiple_controls_in_label( $section, $form ); + $this->detect_unavailable_names( $section, $form ); + } + + public function detect_multiple_controls_in_label( $section, $content ) { + $pattern = '%(.+?)%s'; + + if ( preg_match_all( $pattern, $content, $matches ) ) { + $form_tags_manager = WPCF7_FormTagsManager::get_instance(); + + foreach ( $matches[1] as $insidelabel ) { + $tags = $form_tags_manager->scan( $insidelabel ); + $fields_count = 0; + + foreach ( $tags as $tag ) { + $is_multiple_controls_container = wpcf7_form_tag_supports( + $tag->type, 'multiple-controls-container' ); + $is_zero_controls_container = wpcf7_form_tag_supports( + $tag->type, 'zero-controls-container' ); + + if ( $is_multiple_controls_container ) { + $fields_count += count( $tag->values ); + + if ( $tag->has_option( 'free_text' ) ) { + $fields_count += 1; + } + } elseif ( $is_zero_controls_container ) { + $fields_count += 0; + } elseif ( ! empty( $tag->name ) ) { + $fields_count += 1; + } + + if ( 1 < $fields_count ) { + return $this->add_error( $section, + self::error_multiple_controls_in_label, array( + 'link' => self::get_doc_link( 'multiple_controls_in_label' ), + ) + ); + } + } + } + } + + return false; + } + + public function detect_unavailable_names( $section, $content ) { + $public_query_vars = array( 'm', 'p', 'posts', 'w', 'cat', + 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', + 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', + 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', + 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', + 'pagename', 'page_id', 'error', 'attachment', 'attachment_id', + 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', + 'cpage', 'post_type', 'embed' ); + + $form_tags_manager = WPCF7_FormTagsManager::get_instance(); + $ng_named_tags = $form_tags_manager->filter( $content, + array( 'name' => $public_query_vars ) ); + + $ng_names = array(); + + foreach ( $ng_named_tags as $tag ) { + $ng_names[] = sprintf( '"%s"', $tag->name ); + } + + if ( $ng_names ) { + $ng_names = array_unique( $ng_names ); + + return $this->add_error( $section, + self::error_unavailable_names, + array( + 'message' => + /* translators: %names%: a list of form control names */ + __( "Unavailable names (%names%) are used for form controls.", 'contact-form-7' ), + 'params' => array( 'names' => implode( ', ', $ng_names ) ), + 'link' => self::get_doc_link( 'unavailable_names' ), + ) + ); + } + + return false; + } + + public function validate_mail( $template = 'mail' ) { + $components = (array) $this->contact_form->prop( $template ); + + if ( ! $components ) { + return; + } + + if ( 'mail' != $template + and empty( $components['active'] ) ) { + return; + } + + $components = wp_parse_args( $components, array( + 'subject' => '', + 'sender' => '', + 'recipient' => '', + 'additional_headers' => '', + 'body' => '', + 'attachments' => '', + ) ); + + $callback = array( $this, 'replace_mail_tags_with_minimum_input' ); + + $subject = $components['subject']; + $subject = new WPCF7_MailTaggedText( $subject, + array( 'callback' => $callback ) ); + $subject = $subject->replace_tags(); + $subject = wpcf7_strip_newline( $subject ); + $this->detect_maybe_empty( sprintf( '%s.subject', $template ), $subject ); + + $sender = $components['sender']; + $sender = new WPCF7_MailTaggedText( $sender, + array( 'callback' => $callback ) ); + $sender = $sender->replace_tags(); + $sender = wpcf7_strip_newline( $sender ); + + if ( ! $this->detect_invalid_mailbox_syntax( sprintf( '%s.sender', $template ), $sender ) + and ! wpcf7_is_email_in_site_domain( $sender ) ) { + $this->add_error( sprintf( '%s.sender', $template ), + self::error_email_not_in_site_domain, array( + 'link' => self::get_doc_link( 'email_not_in_site_domain' ), + ) + ); + } + + $recipient = $components['recipient']; + $recipient = new WPCF7_MailTaggedText( $recipient, + array( 'callback' => $callback ) ); + $recipient = $recipient->replace_tags(); + $recipient = wpcf7_strip_newline( $recipient ); + + $this->detect_invalid_mailbox_syntax( + sprintf( '%s.recipient', $template ), $recipient ); + + $additional_headers = $components['additional_headers']; + $additional_headers = new WPCF7_MailTaggedText( $additional_headers, + array( 'callback' => $callback ) ); + $additional_headers = $additional_headers->replace_tags(); + $additional_headers = explode( "\n", $additional_headers ); + $mailbox_header_types = array( 'reply-to', 'cc', 'bcc' ); + $invalid_mail_header_exists = false; + + foreach ( $additional_headers as $header ) { + $header = trim( $header ); + + if ( '' === $header ) { + continue; + } + + if ( ! preg_match( '/^([0-9A-Za-z-]+):(.*)$/', $header, $matches ) ) { + $invalid_mail_header_exists = true; + } else { + $header_name = $matches[1]; + $header_value = trim( $matches[2] ); + + if ( in_array( strtolower( $header_name ), $mailbox_header_types ) ) { + $this->detect_invalid_mailbox_syntax( + sprintf( '%s.additional_headers', $template ), + $header_value, array( + 'message' => + __( "Invalid mailbox syntax is used in the %name% field.", 'contact-form-7' ), + 'params' => array( 'name' => $header_name ) ) ); + } elseif ( empty( $header_value ) ) { + $invalid_mail_header_exists = true; + } + } + } + + if ( $invalid_mail_header_exists ) { + $this->add_error( sprintf( '%s.additional_headers', $template ), + self::error_invalid_mail_header, array( + 'link' => self::get_doc_link( 'invalid_mail_header' ), + ) + ); + } + + $body = $components['body']; + $body = new WPCF7_MailTaggedText( $body, + array( 'callback' => $callback ) ); + $body = $body->replace_tags(); + $this->detect_maybe_empty( sprintf( '%s.body', $template ), $body ); + + if ( '' !== $components['attachments'] ) { + $has_file_not_found = false; + $has_file_not_in_content_dir = false; + + foreach ( explode( "\n", $components['attachments'] ) as $line ) { + $line = trim( $line ); + + if ( '' === $line + or '[' == substr( $line, 0, 1 ) ) { + continue; + } + + $has_file_not_found = $this->detect_file_not_found( + sprintf( '%s.attachments', $template ), $line + ); + + if ( ! $has_file_not_found + and ! $has_file_not_in_content_dir ) { + $has_file_not_in_content_dir = $this->detect_file_not_in_content_dir( + sprintf( '%s.attachments', $template ), $line + ); + } + } + } + } + + public function detect_invalid_mailbox_syntax( $section, $content, $args = '' ) { + $args = wp_parse_args( $args, array( + 'link' => self::get_doc_link( 'invalid_mailbox_syntax' ), + 'message' => '', + 'params' => array(), + ) ); + + if ( ! wpcf7_is_mailbox_list( $content ) ) { + return $this->add_error( $section, + self::error_invalid_mailbox_syntax, $args ); + } + + return false; + } + + public function detect_maybe_empty( $section, $content ) { + if ( '' === $content ) { + return $this->add_error( $section, + self::error_maybe_empty, array( + 'link' => self::get_doc_link( 'maybe_empty' ), + ) + ); + } + + return false; + } + + public function detect_file_not_found( $section, $content ) { + $path = path_join( WP_CONTENT_DIR, $content ); + + if ( ! is_readable( $path ) + or ! is_file( $path ) ) { + return $this->add_error( $section, + self::error_file_not_found, + array( + 'message' => + __( "Attachment file does not exist at %path%.", 'contact-form-7' ), + 'params' => array( 'path' => $content ), + 'link' => self::get_doc_link( 'file_not_found' ), + ) + ); + } + + return false; + } + + public function detect_file_not_in_content_dir( $section, $content ) { + $path = path_join( WP_CONTENT_DIR, $content ); + + if ( ! wpcf7_is_file_path_in_content_dir( $path ) ) { + return $this->add_error( $section, + self::error_file_not_in_content_dir, + array( + 'message' => + __( "It is not allowed to use files outside the wp-content directory.", 'contact-form-7' ), + 'link' => self::get_doc_link( 'file_not_in_content_dir' ), + ) + ); + } + + return false; + } + + public function validate_messages() { + $messages = (array) $this->contact_form->prop( 'messages' ); + + if ( ! $messages ) { + return; + } + + if ( isset( $messages['captcha_not_match'] ) + and ! wpcf7_use_really_simple_captcha() ) { + unset( $messages['captcha_not_match'] ); + } + + foreach ( $messages as $key => $message ) { + $section = sprintf( 'messages.%s', $key ); + $this->detect_html_in_message( $section, $message ); + } + } + + public function detect_html_in_message( $section, $content ) { + $stripped = wp_strip_all_tags( $content ); + + if ( $stripped != $content ) { + return $this->add_error( $section, + self::error_html_in_message, + array( + 'link' => self::get_doc_link( 'html_in_message' ), + ) + ); + } + + return false; + } + + public function validate_additional_settings() { + $deprecated_settings_used = + $this->contact_form->additional_setting( 'on_sent_ok' ) || + $this->contact_form->additional_setting( 'on_submit' ); + + if ( $deprecated_settings_used ) { + return $this->add_error( 'additional_settings.body', + self::error_deprecated_settings, + array( + 'link' => self::get_doc_link( 'deprecated_settings' ), + ) + ); + } + } + +} diff --git a/wp-content/plugins/contact-form-7/includes/contact-form-functions.php b/wp-content/plugins/contact-form-7/includes/contact-form-functions.php new file mode 100644 index 0000000..4f1ead9 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/contact-form-functions.php @@ -0,0 +1,270 @@ +postmeta WHERE meta_key = '_old_cf7_unit_id'" + . $wpdb->prepare( " AND meta_value = %d", $old_id ); + + if ( $new_id = $wpdb->get_var( $q ) ) { + return wpcf7_contact_form( $new_id ); + } +} + +function wpcf7_get_contact_form_by_title( $title ) { + $page = get_page_by_title( $title, OBJECT, WPCF7_ContactForm::post_type ); + + if ( $page ) { + return wpcf7_contact_form( $page->ID ); + } + + return null; +} + +function wpcf7_get_current_contact_form() { + if ( $current = WPCF7_ContactForm::get_current() ) { + return $current; + } +} + +function wpcf7_is_posted() { + if ( ! $contact_form = wpcf7_get_current_contact_form() ) { + return false; + } + + return $contact_form->is_posted(); +} + +function wpcf7_get_hangover( $name, $default = null ) { + if ( ! wpcf7_is_posted() ) { + return $default; + } + + $submission = WPCF7_Submission::get_instance(); + + if ( ! $submission + or $submission->is( 'mail_sent' ) ) { + return $default; + } + + return isset( $_POST[$name] ) ? wp_unslash( $_POST[$name] ) : $default; +} + +function wpcf7_get_validation_error( $name ) { + if ( ! $contact_form = wpcf7_get_current_contact_form() ) { + return ''; + } + + return $contact_form->validation_error( $name ); +} + +function wpcf7_get_message( $status ) { + if ( ! $contact_form = wpcf7_get_current_contact_form() ) { + return ''; + } + + return $contact_form->message( $status ); +} + +function wpcf7_form_controls_class( $type, $default = '' ) { + $type = trim( $type ); + $default = array_filter( explode( ' ', $default ) ); + + $classes = array_merge( array( 'wpcf7-form-control' ), $default ); + + $typebase = rtrim( $type, '*' ); + $required = ( '*' == substr( $type, -1 ) ); + + $classes[] = 'wpcf7-' . $typebase; + + if ( $required ) { + $classes[] = 'wpcf7-validates-as-required'; + } + + $classes = array_unique( $classes ); + + return implode( ' ', $classes ); +} + +function wpcf7_contact_form_tag_func( $atts, $content = null, $code = '' ) { + if ( is_feed() ) { + return '[contact-form-7]'; + } + + if ( 'contact-form-7' == $code ) { + $atts = shortcode_atts( + array( + 'id' => 0, + 'title' => '', + 'html_id' => '', + 'html_name' => '', + 'html_class' => '', + 'output' => 'form', + ), + $atts, 'wpcf7' + ); + + $id = (int) $atts['id']; + $title = trim( $atts['title'] ); + + if ( ! $contact_form = wpcf7_contact_form( $id ) ) { + $contact_form = wpcf7_get_contact_form_by_title( $title ); + } + + } else { + if ( is_string( $atts ) ) { + $atts = explode( ' ', $atts, 2 ); + } + + $id = (int) array_shift( $atts ); + $contact_form = wpcf7_get_contact_form_by_old_id( $id ); + } + + if ( ! $contact_form ) { + return '[contact-form-7 404 "Not Found"]'; + } + + return $contact_form->form_html( $atts ); +} + +function wpcf7_save_contact_form( $args = '', $context = 'save' ) { + $args = wp_parse_args( $args, array( + 'id' => -1, + 'title' => null, + 'locale' => null, + 'form' => null, + 'mail' => null, + 'mail_2' => null, + 'messages' => null, + 'additional_settings' => null, + ) ); + + $args = wp_unslash( $args ); + + $args['id'] = (int) $args['id']; + + if ( -1 == $args['id'] ) { + $contact_form = WPCF7_ContactForm::get_template(); + } else { + $contact_form = wpcf7_contact_form( $args['id'] ); + } + + if ( empty( $contact_form ) ) { + return false; + } + + if ( null !== $args['title'] ) { + $contact_form->set_title( $args['title'] ); + } + + if ( null !== $args['locale'] ) { + $contact_form->set_locale( $args['locale'] ); + } + + $properties = $contact_form->get_properties(); + + $properties['form'] = wpcf7_sanitize_form( + $args['form'], $properties['form'] ); + + $properties['mail'] = wpcf7_sanitize_mail( + $args['mail'], $properties['mail'] ); + + $properties['mail']['active'] = true; + + $properties['mail_2'] = wpcf7_sanitize_mail( + $args['mail_2'], $properties['mail_2'] ); + + $properties['messages'] = wpcf7_sanitize_messages( + $args['messages'], $properties['messages'] ); + + $properties['additional_settings'] = wpcf7_sanitize_additional_settings( + $args['additional_settings'], $properties['additional_settings'] ); + + $contact_form->set_properties( $properties ); + + do_action( 'wpcf7_save_contact_form', $contact_form, $args, $context ); + + if ( 'save' == $context ) { + $contact_form->save(); + } + + return $contact_form; +} + +function wpcf7_sanitize_form( $input, $default = '' ) { + if ( null === $input ) { + return $default; + } + + $output = trim( $input ); + return $output; +} + +function wpcf7_sanitize_mail( $input, $defaults = array() ) { + $input = wp_parse_args( $input, array( + 'active' => false, + 'subject' => '', + 'sender' => '', + 'recipient' => '', + 'body' => '', + 'additional_headers' => '', + 'attachments' => '', + 'use_html' => false, + 'exclude_blank' => false, + ) ); + + $input = wp_parse_args( $input, $defaults ); + + $output = array(); + $output['active'] = (bool) $input['active']; + $output['subject'] = trim( $input['subject'] ); + $output['sender'] = trim( $input['sender'] ); + $output['recipient'] = trim( $input['recipient'] ); + $output['body'] = trim( $input['body'] ); + $output['additional_headers'] = ''; + + $headers = str_replace( "\r\n", "\n", $input['additional_headers'] ); + $headers = explode( "\n", $headers ); + + foreach ( $headers as $header ) { + $header = trim( $header ); + + if ( '' !== $header ) { + $output['additional_headers'] .= $header . "\n"; + } + } + + $output['additional_headers'] = trim( $output['additional_headers'] ); + $output['attachments'] = trim( $input['attachments'] ); + $output['use_html'] = (bool) $input['use_html']; + $output['exclude_blank'] = (bool) $input['exclude_blank']; + + return $output; +} + +function wpcf7_sanitize_messages( $input, $defaults = array() ) { + $output = array(); + + foreach ( wpcf7_messages() as $key => $val ) { + if ( isset( $input[$key] ) ) { + $output[$key] = trim( $input[$key] ); + } elseif ( isset( $defaults[$key] ) ) { + $output[$key] = $defaults[$key]; + } + } + + return $output; +} + +function wpcf7_sanitize_additional_settings( $input, $default = '' ) { + if ( null === $input ) { + return $default; + } + + $output = trim( $input ); + return $output; +} diff --git a/wp-content/plugins/contact-form-7/includes/contact-form-template.php b/wp-content/plugins/contact-form-7/includes/contact-form-template.php new file mode 100644 index 0000000..e2b8140 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/contact-form-template.php @@ -0,0 +1,201 @@ + %2$s %1$s + [text* your-name] + + + + + + + +[submit "%6$s"]', + __( '(required)', 'contact-form-7' ), + __( 'Your Name', 'contact-form-7' ), + __( 'Your Email', 'contact-form-7' ), + __( 'Subject', 'contact-form-7' ), + __( 'Your Message', 'contact-form-7' ), + __( 'Send', 'contact-form-7' ) ); + + return trim( $template ); + } + + public static function mail() { + $template = array( + 'subject' => + /* translators: 1: blog name, 2: [your-subject] */ + sprintf( + _x( '%1$s "%2$s"', 'mail subject', 'contact-form-7' ), + get_bloginfo( 'name' ), '[your-subject]' ), + 'sender' => sprintf( '%s <%s>', + get_bloginfo( 'name' ), self::from_email() ), + 'body' => + /* translators: %s: [your-name] <[your-email]> */ + sprintf( __( 'From: %s', 'contact-form-7' ), + '[your-name] <[your-email]>' ) . "\n" + /* translators: %s: [your-subject] */ + . sprintf( __( 'Subject: %s', 'contact-form-7' ), + '[your-subject]' ) . "\n\n" + . __( 'Message Body:', 'contact-form-7' ) + . "\n" . '[your-message]' . "\n\n" + . '-- ' . "\n" + /* translators: 1: blog name, 2: blog URL */ + . sprintf( + __( 'This e-mail was sent from a contact form on %1$s (%2$s)', 'contact-form-7' ), + get_bloginfo( 'name' ), + get_bloginfo( 'url' ) ), + 'recipient' => get_option( 'admin_email' ), + 'additional_headers' => 'Reply-To: [your-email]', + 'attachments' => '', + 'use_html' => 0, + 'exclude_blank' => 0, + ); + + return $template; + } + + public static function mail_2() { + $template = array( + 'active' => false, + 'subject' => + /* translators: 1: blog name, 2: [your-subject] */ + sprintf( + _x( '%1$s "%2$s"', 'mail subject', 'contact-form-7' ), + get_bloginfo( 'name' ), '[your-subject]' ), + 'sender' => sprintf( '%s <%s>', + get_bloginfo( 'name' ), self::from_email() ), + 'body' => + __( 'Message Body:', 'contact-form-7' ) + . "\n" . '[your-message]' . "\n\n" + . '-- ' . "\n" + /* translators: 1: blog name, 2: blog URL */ + . sprintf( + __( 'This e-mail was sent from a contact form on %1$s (%2$s)', 'contact-form-7' ), + get_bloginfo( 'name' ), + get_bloginfo( 'url' ) ), + 'recipient' => '[your-email]', + 'additional_headers' => sprintf( 'Reply-To: %s', + get_option( 'admin_email' ) ), + 'attachments' => '', + 'use_html' => 0, + 'exclude_blank' => 0, + ); + + return $template; + } + + public static function from_email() { + $admin_email = get_option( 'admin_email' ); + $sitename = strtolower( $_SERVER['SERVER_NAME'] ); + + if ( wpcf7_is_localhost() ) { + return $admin_email; + } + + if ( substr( $sitename, 0, 4 ) == 'www.' ) { + $sitename = substr( $sitename, 4 ); + } + + if ( strpbrk( $admin_email, '@' ) == '@' . $sitename ) { + return $admin_email; + } + + return 'wordpress@' . $sitename; + } + + public static function messages() { + $messages = array(); + + foreach ( wpcf7_messages() as $key => $arr ) { + $messages[$key] = $arr['default']; + } + + return $messages; + } +} + +function wpcf7_messages() { + $messages = array( + 'mail_sent_ok' => array( + 'description' + => __( "Sender's message was sent successfully", 'contact-form-7' ), + 'default' + => __( "Thank you for your message. It has been sent.", 'contact-form-7' ), + ), + + 'mail_sent_ng' => array( + 'description' + => __( "Sender's message failed to send", 'contact-form-7' ), + 'default' + => __( "There was an error trying to send your message. Please try again later.", 'contact-form-7' ), + ), + + 'validation_error' => array( + 'description' + => __( "Validation errors occurred", 'contact-form-7' ), + 'default' + => __( "One or more fields have an error. Please check and try again.", 'contact-form-7' ), + ), + + 'spam' => array( + 'description' + => __( "Submission was referred to as spam", 'contact-form-7' ), + 'default' + => __( "There was an error trying to send your message. Please try again later.", 'contact-form-7' ), + ), + + 'accept_terms' => array( + 'description' + => __( "There are terms that the sender must accept", 'contact-form-7' ), + 'default' + => __( "You must accept the terms and conditions before sending your message.", 'contact-form-7' ), + ), + + 'invalid_required' => array( + 'description' + => __( "There is a field that the sender must fill in", 'contact-form-7' ), + 'default' + => __( "The field is required.", 'contact-form-7' ), + ), + + 'invalid_too_long' => array( + 'description' + => __( "There is a field with input that is longer than the maximum allowed length", 'contact-form-7' ), + 'default' + => __( "The field is too long.", 'contact-form-7' ), + ), + + 'invalid_too_short' => array( + 'description' + => __( "There is a field with input that is shorter than the minimum allowed length", 'contact-form-7' ), + 'default' + => __( "The field is too short.", 'contact-form-7' ), + ) + ); + + return apply_filters( 'wpcf7_messages', $messages ); +} diff --git a/wp-content/plugins/contact-form-7/includes/contact-form.php b/wp-content/plugins/contact-form-7/includes/contact-form.php new file mode 100644 index 0000000..dfcc766 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/contact-form.php @@ -0,0 +1,946 @@ + array( + 'name' => __( 'Contact Forms', 'contact-form-7' ), + 'singular_name' => __( 'Contact Form', 'contact-form-7' ), + ), + 'rewrite' => false, + 'query_var' => false, + 'public' => false, + 'capability_type' => 'page', + 'capabilities' => array( + 'edit_post' => 'wpcf7_edit_contact_form', + 'read_post' => 'wpcf7_read_contact_form', + 'delete_post' => 'wpcf7_delete_contact_form', + 'edit_posts' => 'wpcf7_edit_contact_forms', + 'edit_others_posts' => 'wpcf7_edit_contact_forms', + 'publish_posts' => 'wpcf7_edit_contact_forms', + 'read_private_posts' => 'wpcf7_edit_contact_forms', + ), + ) ); + } + + public static function find( $args = '' ) { + $defaults = array( + 'post_status' => 'any', + 'posts_per_page' => -1, + 'offset' => 0, + 'orderby' => 'ID', + 'order' => 'ASC', + ); + + $args = wp_parse_args( $args, $defaults ); + + $args['post_type'] = self::post_type; + + $q = new WP_Query(); + $posts = $q->query( $args ); + + self::$found_items = $q->found_posts; + + $objs = array(); + + foreach ( (array) $posts as $post ) { + $objs[] = new self( $post ); + } + + return $objs; + } + + public static function get_template( $args = '' ) { + global $l10n; + + $defaults = array( 'locale' => null, 'title' => '' ); + $args = wp_parse_args( $args, $defaults ); + + $locale = $args['locale']; + $title = $args['title']; + + if ( $locale ) { + $mo_orig = $l10n['contact-form-7']; + wpcf7_load_textdomain( $locale ); + } + + self::$current = $contact_form = new self; + $contact_form->title = + ( $title ? $title : __( 'Untitled', 'contact-form-7' ) ); + $contact_form->locale = ( $locale ? $locale : get_user_locale() ); + + $properties = $contact_form->get_properties(); + + foreach ( $properties as $key => $value ) { + $properties[$key] = WPCF7_ContactFormTemplate::get_default( $key ); + } + + $contact_form->properties = $properties; + + $contact_form = apply_filters( 'wpcf7_contact_form_default_pack', + $contact_form, $args ); + + if ( isset( $mo_orig ) ) { + $l10n['contact-form-7'] = $mo_orig; + } + + return $contact_form; + } + + public static function get_instance( $post ) { + $post = get_post( $post ); + + if ( ! $post + or self::post_type != get_post_type( $post ) ) { + return false; + } + + return self::$current = new self( $post ); + } + + private static function generate_unit_tag( $id = 0 ) { + static $global_count = 0; + + $global_count += 1; + + if ( in_the_loop() ) { + $unit_tag = sprintf( 'wpcf7-f%1$d-p%2$d-o%3$d', + absint( $id ), + get_the_ID(), + $global_count + ); + } else { + $unit_tag = sprintf( 'wpcf7-f%1$d-o%2$d', + absint( $id ), + $global_count + ); + } + + return $unit_tag; + } + + private function __construct( $post = null ) { + $post = get_post( $post ); + + if ( $post + and self::post_type == get_post_type( $post ) ) { + $this->id = $post->ID; + $this->name = $post->post_name; + $this->title = $post->post_title; + $this->locale = get_post_meta( $post->ID, '_locale', true ); + + $properties = $this->get_properties(); + + foreach ( $properties as $key => $value ) { + if ( metadata_exists( 'post', $post->ID, '_' . $key ) ) { + $properties[$key] = get_post_meta( $post->ID, '_' . $key, true ); + } elseif ( metadata_exists( 'post', $post->ID, $key ) ) { + $properties[$key] = get_post_meta( $post->ID, $key, true ); + } + } + + $this->properties = $properties; + $this->upgrade(); + } + + do_action( 'wpcf7_contact_form', $this ); + } + + public function __get( $name ) { + $message = __( '%1$s property of a WPCF7_ContactForm object is no longer accessible. Use %2$s method instead.', 'contact-form-7' ); + + if ( 'id' == $name ) { + if ( WP_DEBUG ) { + trigger_error( sprintf( $message, 'id', 'id()' ) ); + } + + return $this->id; + } elseif ( 'title' == $name ) { + if ( WP_DEBUG ) { + trigger_error( sprintf( $message, 'title', 'title()' ) ); + } + + return $this->title; + } elseif ( $prop = $this->prop( $name ) ) { + if ( WP_DEBUG ) { + trigger_error( + sprintf( $message, $name, 'prop(\'' . $name . '\')' ) ); + } + + return $prop; + } + } + + public function initial() { + return empty( $this->id ); + } + + public function prop( $name ) { + $props = $this->get_properties(); + return isset( $props[$name] ) ? $props[$name] : null; + } + + public function get_properties() { + $properties = (array) $this->properties; + + $properties = wp_parse_args( $properties, array( + 'form' => '', + 'mail' => array(), + 'mail_2' => array(), + 'messages' => array(), + 'additional_settings' => '', + ) ); + + $properties = (array) apply_filters( 'wpcf7_contact_form_properties', + $properties, $this ); + + return $properties; + } + + public function set_properties( $properties ) { + $defaults = $this->get_properties(); + + $properties = wp_parse_args( $properties, $defaults ); + $properties = array_intersect_key( $properties, $defaults ); + + $this->properties = $properties; + } + + public function id() { + return $this->id; + } + + public function unit_tag() { + return $this->unit_tag; + } + + public function name() { + return $this->name; + } + + public function title() { + return $this->title; + } + + public function set_title( $title ) { + $title = strip_tags( $title ); + $title = trim( $title ); + + if ( '' === $title ) { + $title = __( 'Untitled', 'contact-form-7' ); + } + + $this->title = $title; + } + + public function locale() { + if ( wpcf7_is_valid_locale( $this->locale ) ) { + return $this->locale; + } else { + return ''; + } + } + + public function set_locale( $locale ) { + $locale = trim( $locale ); + + if ( wpcf7_is_valid_locale( $locale ) ) { + $this->locale = $locale; + } else { + $this->locale = 'en_US'; + } + } + + public function shortcode_attr( $name ) { + if ( isset( $this->shortcode_atts[$name] ) ) { + return (string) $this->shortcode_atts[$name]; + } + } + + // Return true if this form is the same one as currently POSTed. + public function is_posted() { + if ( ! WPCF7_Submission::get_instance() ) { + return false; + } + + if ( empty( $_POST['_wpcf7_unit_tag'] ) ) { + return false; + } + + return $this->unit_tag() === $_POST['_wpcf7_unit_tag']; + } + + /* Generating Form HTML */ + + public function form_html( $args = '' ) { + $args = wp_parse_args( $args, array( + 'html_id' => '', + 'html_name' => '', + 'html_class' => '', + 'output' => 'form', + ) ); + + $this->shortcode_atts = $args; + + if ( 'raw_form' == $args['output'] ) { + return '
                      '
                      +				. esc_html( $this->prop( 'form' ) ) . '
                      '; + } + + if ( $this->is_true( 'subscribers_only' ) + and ! current_user_can( 'wpcf7_submit', $this->id() ) ) { + $notice = __( + "This contact form is available only for logged in users.", + 'contact-form-7' ); + $notice = sprintf( + '

                      %s

                      ', + esc_html( $notice ) ); + + return apply_filters( 'wpcf7_subscribers_only_notice', $notice, $this ); + } + + $this->unit_tag = self::generate_unit_tag( $this->id ); + + $lang_tag = str_replace( '_', '-', $this->locale ); + + if ( preg_match( '/^([a-z]+-[a-z]+)-/i', $lang_tag, $matches ) ) { + $lang_tag = $matches[1]; + } + + $html = sprintf( '
                      ', + wpcf7_format_atts( array( + 'role' => 'form', + 'class' => 'wpcf7', + 'id' => $this->unit_tag(), + ( get_option( 'html_type' ) == 'text/html' ) ? 'lang' : 'xml:lang' + => $lang_tag, + 'dir' => wpcf7_is_rtl( $this->locale ) ? 'rtl' : 'ltr', + ) ) + ); + + $html .= "\n" . $this->screen_reader_response() . "\n"; + + $url = wpcf7_get_request_uri(); + + if ( $frag = strstr( $url, '#' ) ) { + $url = substr( $url, 0, -strlen( $frag ) ); + } + + $url .= '#' . $this->unit_tag(); + + $url = apply_filters( 'wpcf7_form_action_url', $url ); + + $id_attr = apply_filters( 'wpcf7_form_id_attr', + preg_replace( '/[^A-Za-z0-9:._-]/', '', $args['html_id'] ) ); + + $name_attr = apply_filters( 'wpcf7_form_name_attr', + preg_replace( '/[^A-Za-z0-9:._-]/', '', $args['html_name'] ) ); + + $class = 'wpcf7-form'; + + if ( $this->is_posted() ) { + $submission = WPCF7_Submission::get_instance(); + + switch ( $submission->get_status() ) { + case 'validation_failed': + $class .= ' invalid'; + break; + case 'acceptance_missing': + $class .= ' unaccepted'; + break; + case 'spam': + $class .= ' spam'; + break; + case 'aborted': + $class .= ' aborted'; + break; + case 'mail_sent': + $class .= ' sent'; + break; + case 'mail_failed': + $class .= ' failed'; + break; + default: + $class .= sprintf( ' custom-%s', + preg_replace( '/[^0-9a-z]+/i', '-', $submission->get_status() ) + ); + } + } + + if ( $args['html_class'] ) { + $class .= ' ' . $args['html_class']; + } + + if ( $this->in_demo_mode() ) { + $class .= ' demo'; + } + + $class = explode( ' ', $class ); + $class = array_map( 'sanitize_html_class', $class ); + $class = array_filter( $class ); + $class = array_unique( $class ); + $class = implode( ' ', $class ); + $class = apply_filters( 'wpcf7_form_class_attr', $class ); + + $enctype = apply_filters( 'wpcf7_form_enctype', '' ); + $autocomplete = apply_filters( 'wpcf7_form_autocomplete', '' ); + + $novalidate = apply_filters( 'wpcf7_form_novalidate', + wpcf7_support_html5() ); + + $atts = array( + 'action' => esc_url( $url ), + 'method' => 'post', + 'class' => $class, + 'enctype' => wpcf7_enctype_value( $enctype ), + 'autocomplete' => $autocomplete, + 'novalidate' => $novalidate ? 'novalidate' : '', + ); + + if ( '' !== $id_attr ) { + $atts['id'] = $id_attr; + } + + if ( '' !== $name_attr ) { + $atts['name'] = $name_attr; + } + + $atts = wpcf7_format_atts( $atts ); + + $html .= sprintf( '
                      ', $atts ) . "\n"; + $html .= $this->form_hidden_fields(); + $html .= $this->form_elements(); + + if ( ! $this->responses_count ) { + $html .= $this->form_response_output(); + } + + $html .= '
                      '; + $html .= '
                      '; + + return $html; + } + + private function form_hidden_fields() { + $hidden_fields = array( + '_wpcf7' => $this->id(), + '_wpcf7_version' => WPCF7_VERSION, + '_wpcf7_locale' => $this->locale(), + '_wpcf7_unit_tag' => $this->unit_tag(), + '_wpcf7_container_post' => 0, + ); + + if ( in_the_loop() ) { + $hidden_fields['_wpcf7_container_post'] = (int) get_the_ID(); + } + + if ( $this->nonce_is_active() && is_user_logged_in() ) { + $hidden_fields['_wpnonce'] = wpcf7_create_nonce(); + } + + $hidden_fields += (array) apply_filters( + 'wpcf7_form_hidden_fields', array() ); + + $content = ''; + + foreach ( $hidden_fields as $name => $value ) { + $content .= sprintf( + '', + esc_attr( $name ), esc_attr( $value ) ) . "\n"; + } + + return '
                      ' . "\n" . $content . '
                      ' . "\n"; + } + + public function form_response_output() { + $status = 'init'; + $class = 'wpcf7-response-output'; + $role = ''; + $content = ''; + + if ( $this->is_posted() ) { // Post response output for non-AJAX + $role = 'alert'; + + $submission = WPCF7_Submission::get_instance(); + $status = $submission->get_status(); + $content = $submission->get_response(); + + switch ( $status ) { + case 'validation_failed': + $class .= ' wpcf7-validation-errors'; + break; + case 'acceptance_missing': + $class .= ' wpcf7-acceptance-missing'; + break; + case 'spam': + $class .= ' wpcf7-spam-blocked'; + break; + case 'aborted': + $class .= ' wpcf7-aborted'; + break; + case 'mail_sent': + $class .= ' wpcf7-mail-sent-ok'; + break; + case 'mail_failed': + $class .= ' wpcf7-mail-sent-ng'; + break; + default: + $class .= sprintf( ' wpcf7-custom-%s', + preg_replace( '/[^0-9a-z]+/i', '-', $status ) + ); + } + } else { + $class .= ' wpcf7-display-none'; + } + + $atts = array( + 'class' => trim( $class ), + 'role' => trim( $role ), + ); + + $atts = wpcf7_format_atts( $atts ); + + $output = sprintf( '
                      %2$s
                      ', + $atts, esc_html( $content ) ); + + $output = apply_filters( 'wpcf7_form_response_output', + $output, $class, $content, $this, $status ); + + $this->responses_count += 1; + + return $output; + } + + public function screen_reader_response() { + $class = 'screen-reader-response'; + $role = ''; + $content = ''; + + if ( $this->is_posted() ) { // Post response output for non-AJAX + $role = 'alert'; + + $submission = WPCF7_Submission::get_instance(); + + if ( $response = $submission->get_response() ) { + $content = esc_html( $response ); + } + + if ( $invalid_fields = $submission->get_invalid_fields() ) { + $content .= "\n" . '
                        ' . "\n"; + + foreach ( (array) $invalid_fields as $name => $field ) { + if ( $field['idref'] ) { + $link = sprintf( '%2$s', + esc_attr( $field['idref'] ), + esc_html( $field['reason'] ) ); + $content .= sprintf( '
                      • %s
                      • ', $link ); + } else { + $content .= sprintf( '
                      • %s
                      • ', + esc_html( $field['reason'] ) ); + } + + $content .= "\n"; + } + + $content .= '
                      ' . "\n"; + } + } + + $atts = array( + 'class' => trim( $class ), + 'role' => trim( $role ) ); + + $atts = wpcf7_format_atts( $atts ); + + $output = sprintf( '
                      %2$s
                      ', + $atts, $content ); + + return $output; + } + + public function validation_error( $name ) { + $error = ''; + + if ( $this->is_posted() ) { + $submission = WPCF7_Submission::get_instance(); + + if ( $invalid_field = $submission->get_invalid_field( $name ) ) { + $error = trim( $invalid_field['reason'] ); + } + } + + if ( ! $error ) { + return $error; + } + + $error = sprintf( + '%s', + esc_html( $error ) ); + + return apply_filters( 'wpcf7_validation_error', $error, $name, $this ); + } + + /* Form Elements */ + + public function replace_all_form_tags() { + $manager = WPCF7_FormTagsManager::get_instance(); + $form = $this->prop( 'form' ); + + if ( wpcf7_autop_or_not() ) { + $form = $manager->normalize( $form ); + $form = wpcf7_autop( $form ); + } + + $form = $manager->replace_all( $form ); + $this->scanned_form_tags = $manager->get_scanned_tags(); + + return $form; + } + + public function form_do_shortcode() { + wpcf7_deprecated_function( __METHOD__, '4.6', + 'WPCF7_ContactForm::replace_all_form_tags' ); + + return $this->replace_all_form_tags(); + } + + public function scan_form_tags( $cond = null ) { + $manager = WPCF7_FormTagsManager::get_instance(); + + if ( empty( $this->scanned_form_tags ) ) { + $this->scanned_form_tags = $manager->scan( $this->prop( 'form' ) ); + } + + $tags = $this->scanned_form_tags; + + return $manager->filter( $tags, $cond ); + } + + public function form_scan_shortcode( $cond = null ) { + wpcf7_deprecated_function( __METHOD__, '4.6', + 'WPCF7_ContactForm::scan_form_tags' ); + + return $this->scan_form_tags( $cond ); + } + + public function form_elements() { + return apply_filters( 'wpcf7_form_elements', + $this->replace_all_form_tags() ); + } + + public function collect_mail_tags( $args = '' ) { + $manager = WPCF7_FormTagsManager::get_instance(); + + $args = wp_parse_args( $args, array( + 'include' => array(), + 'exclude' => $manager->collect_tag_types( 'not-for-mail' ), + ) ); + + $tags = $this->scan_form_tags(); + $mailtags = array(); + + foreach ( (array) $tags as $tag ) { + $type = $tag->basetype; + + if ( empty( $type ) ) { + continue; + } elseif ( ! empty( $args['include'] ) ) { + if ( ! in_array( $type, $args['include'] ) ) { + continue; + } + } elseif ( ! empty( $args['exclude'] ) ) { + if ( in_array( $type, $args['exclude'] ) ) { + continue; + } + } + + $mailtags[] = $tag->name; + } + + $mailtags = array_unique( array_filter( $mailtags ) ); + + return apply_filters( 'wpcf7_collect_mail_tags', $mailtags, $args, $this ); + } + + public function suggest_mail_tags( $for = 'mail' ) { + $mail = wp_parse_args( $this->prop( $for ), + array( + 'active' => false, + 'recipient' => '', + 'sender' => '', + 'subject' => '', + 'body' => '', + 'additional_headers' => '', + 'attachments' => '', + 'use_html' => false, + 'exclude_blank' => false, + ) + ); + + $mail = array_filter( $mail ); + + foreach ( (array) $this->collect_mail_tags() as $mail_tag ) { + $pattern = sprintf( '/\[(_[a-z]+_)?%s([ \t]+[^]]+)?\]/', + preg_quote( $mail_tag, '/' ) ); + $used = preg_grep( $pattern, $mail ); + + echo sprintf( + '[%2$s]', + 'mailtag code ' . ( $used ? 'used' : 'unused' ), + esc_html( $mail_tag ) ); + } + } + + public function submit( $args = '' ) { + $args = wp_parse_args( $args, array( + 'skip_mail' => + ( $this->in_demo_mode() + || $this->is_true( 'skip_mail' ) + || ! empty( $this->skip_mail ) ), + ) ); + + if ( $this->is_true( 'subscribers_only' ) + and ! current_user_can( 'wpcf7_submit', $this->id() ) ) { + $result = array( + 'contact_form_id' => $this->id(), + 'status' => 'error', + 'message' => __( + "This contact form is available only for logged in users.", + 'contact-form-7' ), + ); + + return $result; + } + + $submission = WPCF7_Submission::get_instance( $this, array( + 'skip_mail' => $args['skip_mail'], + ) ); + + $result = array( + 'contact_form_id' => $this->id(), + 'status' => $submission->get_status(), + 'message' => $submission->get_response(), + 'demo_mode' => $this->in_demo_mode(), + ); + + if ( $submission->is( 'validation_failed' ) ) { + $result['invalid_fields'] = $submission->get_invalid_fields(); + } + + do_action( 'wpcf7_submit', $this, $result ); + + return $result; + } + + /* Message */ + + public function message( $status, $filter = true ) { + $messages = $this->prop( 'messages' ); + $message = isset( $messages[$status] ) ? $messages[$status] : ''; + + if ( $filter ) { + $message = $this->filter_message( $message, $status ); + } + + return $message; + } + + public function filter_message( $message, $status = '' ) { + $message = wp_strip_all_tags( $message ); + $message = wpcf7_mail_replace_tags( $message, array( 'html' => true ) ); + $message = apply_filters( 'wpcf7_display_message', $message, $status ); + + return $message; + } + + /* Additional settings */ + + public function additional_setting( $name, $max = 1 ) { + $settings = (array) explode( "\n", $this->prop( 'additional_settings' ) ); + + $pattern = '/^([a-zA-Z0-9_]+)[\t ]*:(.*)$/'; + $count = 0; + $values = array(); + + foreach ( $settings as $setting ) { + if ( preg_match( $pattern, $setting, $matches ) ) { + if ( $matches[1] != $name ) { + continue; + } + + if ( ! $max or $count < (int) $max ) { + $values[] = trim( $matches[2] ); + $count += 1; + } + } + } + + return $values; + } + + public function is_true( $name ) { + $settings = $this->additional_setting( $name, false ); + + foreach ( $settings as $setting ) { + if ( in_array( $setting, array( 'on', 'true', '1' ) ) ) { + return true; + } + } + + return false; + } + + public function in_demo_mode() { + return $this->is_true( 'demo_mode' ); + } + + public function nonce_is_active() { + $is_active = WPCF7_VERIFY_NONCE; + + if ( $this->is_true( 'subscribers_only' ) ) { + $is_active = true; + } + + return (bool) apply_filters( 'wpcf7_verify_nonce', $is_active, $this ); + } + + /* Upgrade */ + + private function upgrade() { + $mail = $this->prop( 'mail' ); + + if ( is_array( $mail ) + and ! isset( $mail['recipient'] ) ) { + $mail['recipient'] = get_option( 'admin_email' ); + } + + $this->properties['mail'] = $mail; + + $messages = $this->prop( 'messages' ); + + if ( is_array( $messages ) ) { + foreach ( wpcf7_messages() as $key => $arr ) { + if ( ! isset( $messages[$key] ) ) { + $messages[$key] = $arr['default']; + } + } + } + + $this->properties['messages'] = $messages; + } + + /* Save */ + + public function save() { + $props = $this->get_properties(); + + $post_content = implode( "\n", wpcf7_array_flatten( $props ) ); + + if ( $this->initial() ) { + $post_id = wp_insert_post( array( + 'post_type' => self::post_type, + 'post_status' => 'publish', + 'post_title' => $this->title, + 'post_content' => trim( $post_content ), + ) ); + } else { + $post_id = wp_update_post( array( + 'ID' => (int) $this->id, + 'post_status' => 'publish', + 'post_title' => $this->title, + 'post_content' => trim( $post_content ), + ) ); + } + + if ( $post_id ) { + foreach ( $props as $prop => $value ) { + update_post_meta( $post_id, '_' . $prop, + wpcf7_normalize_newline_deep( $value ) ); + } + + if ( wpcf7_is_valid_locale( $this->locale ) ) { + update_post_meta( $post_id, '_locale', $this->locale ); + } + + if ( $this->initial() ) { + $this->id = $post_id; + do_action( 'wpcf7_after_create', $this ); + } else { + do_action( 'wpcf7_after_update', $this ); + } + + do_action( 'wpcf7_after_save', $this ); + } + + return $post_id; + } + + public function copy() { + $new = new self; + $new->title = $this->title . '_copy'; + $new->locale = $this->locale; + $new->properties = $this->properties; + + return apply_filters( 'wpcf7_copy', $new, $this ); + } + + public function delete() { + if ( $this->initial() ) { + return; + } + + if ( wp_delete_post( $this->id, true ) ) { + $this->id = 0; + return true; + } + + return false; + } + + public function shortcode( $args = '' ) { + $args = wp_parse_args( $args, array( + 'use_old_format' => false ) ); + + $title = str_replace( array( '"', '[', ']' ), '', $this->title ); + + if ( $args['use_old_format'] ) { + $old_unit_id = (int) get_post_meta( $this->id, '_old_cf7_unit_id', true ); + + if ( $old_unit_id ) { + $shortcode = sprintf( '[contact-form %1$d "%2$s"]', $old_unit_id, $title ); + } else { + $shortcode = ''; + } + } else { + $shortcode = sprintf( '[contact-form-7 id="%1$d" title="%2$s"]', + $this->id, $title ); + } + + return apply_filters( 'wpcf7_contact_form_shortcode', + $shortcode, $args, $this ); + } +} diff --git a/wp-content/plugins/contact-form-7/includes/controller.php b/wp-content/plugins/contact-form-7/includes/controller.php new file mode 100644 index 0000000..0f3c5e9 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/controller.php @@ -0,0 +1,104 @@ +submit(); + } + } +} + +add_action( 'wp_enqueue_scripts', 'wpcf7_do_enqueue_scripts', 10, 0 ); + +function wpcf7_do_enqueue_scripts() { + if ( wpcf7_load_js() ) { + wpcf7_enqueue_scripts(); + } + + if ( wpcf7_load_css() ) { + wpcf7_enqueue_styles(); + } +} + +function wpcf7_enqueue_scripts() { + $in_footer = true; + + if ( 'header' === wpcf7_load_js() ) { + $in_footer = false; + } + + wp_enqueue_script( 'contact-form-7', + wpcf7_plugin_url( 'includes/js/scripts.js' ), + array( 'jquery' ), WPCF7_VERSION, $in_footer ); + + $wpcf7 = array( + 'apiSettings' => array( + 'root' => esc_url_raw( rest_url( 'contact-form-7/v1' ) ), + 'namespace' => 'contact-form-7/v1', + ), + ); + + if ( defined( 'WP_CACHE' ) and WP_CACHE ) { + $wpcf7['cached'] = 1; + } + + if ( wpcf7_support_html5_fallback() ) { + $wpcf7['jqueryUi'] = 1; + } + + wp_localize_script( 'contact-form-7', 'wpcf7', $wpcf7 ); + + do_action( 'wpcf7_enqueue_scripts' ); +} + +function wpcf7_script_is() { + return wp_script_is( 'contact-form-7' ); +} + +function wpcf7_enqueue_styles() { + wp_enqueue_style( 'contact-form-7', + wpcf7_plugin_url( 'includes/css/styles.css' ), + array(), WPCF7_VERSION, 'all' ); + + if ( wpcf7_is_rtl() ) { + wp_enqueue_style( 'contact-form-7-rtl', + wpcf7_plugin_url( 'includes/css/styles-rtl.css' ), + array(), WPCF7_VERSION, 'all' ); + } + + do_action( 'wpcf7_enqueue_styles' ); +} + +function wpcf7_style_is() { + return wp_style_is( 'contact-form-7' ); +} + +/* HTML5 Fallback */ + +add_action( 'wp_enqueue_scripts', 'wpcf7_html5_fallback', 20, 0 ); + +function wpcf7_html5_fallback() { + if ( ! wpcf7_support_html5_fallback() ) { + return; + } + + if ( wpcf7_script_is() ) { + wp_enqueue_script( 'jquery-ui-datepicker' ); + wp_enqueue_script( 'jquery-ui-spinner' ); + } + + if ( wpcf7_style_is() ) { + wp_enqueue_style( 'jquery-ui-smoothness', + wpcf7_plugin_url( + 'includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css' ), + array(), '1.11.4', 'screen' ); + } +} diff --git a/wp-content/plugins/contact-form-7/includes/css/styles-rtl.css b/wp-content/plugins/contact-form-7/includes/css/styles-rtl.css new file mode 100644 index 0000000..411d5b0 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/css/styles-rtl.css @@ -0,0 +1,12 @@ +span.wpcf7-not-valid-tip { + direction: rtl; +} + +.use-floating-validation-tip span.wpcf7-not-valid-tip { + left: auto; + right: 20%; +} + +span.wpcf7-list-item { + margin: 0 1em 0 0; +} diff --git a/wp-content/plugins/contact-form-7/includes/css/styles.css b/wp-content/plugins/contact-form-7/includes/css/styles.css new file mode 100644 index 0000000..e2f11cc --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/css/styles.css @@ -0,0 +1,110 @@ +div.wpcf7 { + margin: 0; + padding: 0; +} + +div.wpcf7 .screen-reader-response { + position: absolute; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + width: 1px; + margin: 0; + padding: 0; + border: 0; +} + +div.wpcf7-response-output { + margin: 2em 0.5em 1em; + padding: 0.2em 1em; + border: 2px solid #ff0000; +} + +div.wpcf7-mail-sent-ok { + border: 2px solid #398f14; +} + +div.wpcf7-mail-sent-ng, +div.wpcf7-aborted { + border: 2px solid #ff0000; +} + +div.wpcf7-spam-blocked { + border: 2px solid #ffa500; +} + +div.wpcf7-validation-errors, +div.wpcf7-acceptance-missing { + border: 2px solid #f7e700; +} + +.wpcf7-form-control-wrap { + position: relative; +} + +span.wpcf7-not-valid-tip { + color: #f00; + font-size: 1em; + font-weight: normal; + display: block; +} + +.use-floating-validation-tip span.wpcf7-not-valid-tip { + position: absolute; + top: 20%; + left: 20%; + z-index: 100; + border: 1px solid #ff0000; + background: #fff; + padding: .2em .8em; +} + +span.wpcf7-list-item { + display: inline-block; + margin: 0 0 0 1em; +} + +span.wpcf7-list-item-label::before, +span.wpcf7-list-item-label::after { + content: " "; +} + +.wpcf7-display-none { + display: none; +} + +div.wpcf7 .ajax-loader { + visibility: hidden; + display: inline-block; + background-image: url('../../images/ajax-loader.gif'); + width: 16px; + height: 16px; + border: none; + padding: 0; + margin: 0 0 0 4px; + vertical-align: middle; +} + +div.wpcf7 .ajax-loader.is-active { + visibility: visible; +} + +div.wpcf7 div.ajax-error { + display: none; +} + +div.wpcf7 .placeheld { + color: #888; +} + +div.wpcf7 input[type="file"] { + cursor: pointer; +} + +div.wpcf7 input[type="file"]:disabled { + cursor: default; +} + +div.wpcf7 .wpcf7-submit:disabled { + cursor: not-allowed; +} diff --git a/wp-content/plugins/contact-form-7/includes/form-tag.php b/wp-content/plugins/contact-form-7/includes/form-tag.php new file mode 100644 index 0000000..30144e2 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/form-tag.php @@ -0,0 +1,367 @@ + $value ) { + if ( property_exists( __CLASS__, $key ) ) { + $this->{$key} = $value; + } + } + } + } + + public function is_required() { + return ( '*' == substr( $this->type, -1 ) ); + } + + public function has_option( $opt ) { + $pattern = sprintf( '/^%s(:.+)?$/i', preg_quote( $opt, '/' ) ); + return (bool) preg_grep( $pattern, $this->options ); + } + + public function get_option( $opt, $pattern = '', $single = false ) { + $preset_patterns = array( + 'date' => '([0-9]{4}-[0-9]{2}-[0-9]{2}|today(.*))', + 'int' => '[0-9]+', + 'signed_int' => '-?[0-9]+', + 'class' => '[-0-9a-zA-Z_]+', + 'id' => '[-0-9a-zA-Z_]+', + ); + + if ( isset( $preset_patterns[$pattern] ) ) { + $pattern = $preset_patterns[$pattern]; + } + + if ( '' == $pattern ) { + $pattern = '.+'; + } + + $pattern = sprintf( '/^%s:%s$/i', preg_quote( $opt, '/' ), $pattern ); + + if ( $single ) { + $matches = $this->get_first_match_option( $pattern ); + + if ( ! $matches ) { + return false; + } + + return substr( $matches[0], strlen( $opt ) + 1 ); + } else { + $matches_a = $this->get_all_match_options( $pattern ); + + if ( ! $matches_a ) { + return false; + } + + $results = array(); + + foreach ( $matches_a as $matches ) { + $results[] = substr( $matches[0], strlen( $opt ) + 1 ); + } + + return $results; + } + } + + public function get_id_option() { + return $this->get_option( 'id', 'id', true ); + } + + public function get_class_option( $default = '' ) { + if ( is_string( $default ) ) { + $default = explode( ' ', $default ); + } + + $options = array_merge( + (array) $default, + (array) $this->get_option( 'class', 'class' ) ); + + $options = array_filter( array_unique( $options ) ); + + return implode( ' ', $options ); + } + + public function get_size_option( $default = '' ) { + $option = $this->get_option( 'size', 'int', true ); + + if ( $option ) { + return $option; + } + + $matches_a = $this->get_all_match_options( '%^([0-9]*)/[0-9]*$%' ); + + foreach ( (array) $matches_a as $matches ) { + if ( isset( $matches[1] ) + and '' !== $matches[1] ) { + return $matches[1]; + } + } + + return $default; + } + + public function get_maxlength_option( $default = '' ) { + $option = $this->get_option( 'maxlength', 'int', true ); + + if ( $option ) { + return $option; + } + + $matches_a = $this->get_all_match_options( + '%^(?:[0-9]*x?[0-9]*)?/([0-9]+)$%' ); + + foreach ( (array) $matches_a as $matches ) { + if ( isset( $matches[1] ) && '' !== $matches[1] ) { + return $matches[1]; + } + } + + return $default; + } + + public function get_minlength_option( $default = '' ) { + $option = $this->get_option( 'minlength', 'int', true ); + + if ( $option ) { + return $option; + } else { + return $default; + } + } + + public function get_cols_option( $default = '' ) { + $option = $this->get_option( 'cols', 'int', true ); + + if ( $option ) { + return $option; + } + + $matches_a = $this->get_all_match_options( + '%^([0-9]*)x([0-9]*)(?:/[0-9]+)?$%' ); + + foreach ( (array) $matches_a as $matches ) { + if ( isset( $matches[1] ) && '' !== $matches[1] ) { + return $matches[1]; + } + } + + return $default; + } + + public function get_rows_option( $default = '' ) { + $option = $this->get_option( 'rows', 'int', true ); + + if ( $option ) { + return $option; + } + + $matches_a = $this->get_all_match_options( + '%^([0-9]*)x([0-9]*)(?:/[0-9]+)?$%' ); + + foreach ( (array) $matches_a as $matches ) { + if ( isset( $matches[2] ) + and '' !== $matches[2] ) { + return $matches[2]; + } + } + + return $default; + } + + public function get_date_option( $opt ) { + $option = $this->get_option( $opt, 'date', true ); + + if ( preg_match( '/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $option ) ) { + return $option; + } + + if ( preg_match( '/^today(?:([+-][0-9]+)([a-z]*))?/', $option, $matches ) ) { + $number = isset( $matches[1] ) ? (int) $matches[1] : 0; + $unit = isset( $matches[2] ) ? $matches[2] : ''; + + if ( ! preg_match( '/^(day|month|year|week)s?$/', $unit ) ) { + $unit = 'days'; + } + + $date = gmdate( 'Y-m-d', + strtotime( sprintf( 'today %1$s %2$s', $number, $unit ) ) ); + return $date; + } + + return false; + } + + public function get_default_option( $default = '', $args = '' ) { + $args = wp_parse_args( $args, array( + 'multiple' => false, + 'shifted' => false, + ) ); + + $options = (array) $this->get_option( 'default' ); + $values = array(); + + if ( empty( $options ) ) { + return $args['multiple'] ? $values : $default; + } + + foreach ( $options as $opt ) { + $opt = sanitize_key( $opt ); + + if ( 'user_' == substr( $opt, 0, 5 ) + and is_user_logged_in() ) { + $primary_props = array( 'user_login', 'user_email', 'user_url' ); + $opt = in_array( $opt, $primary_props ) ? $opt : substr( $opt, 5 ); + + $user = wp_get_current_user(); + $user_prop = $user->get( $opt ); + + if ( ! empty( $user_prop ) ) { + if ( $args['multiple'] ) { + $values[] = $user_prop; + } else { + return $user_prop; + } + } + + } elseif ( 'post_meta' == $opt and in_the_loop() ) { + if ( $args['multiple'] ) { + $values = array_merge( $values, + get_post_meta( get_the_ID(), $this->name ) ); + } else { + $val = (string) get_post_meta( get_the_ID(), $this->name, true ); + + if ( strlen( $val ) ) { + return $val; + } + } + + } elseif ( 'get' == $opt and isset( $_GET[$this->name] ) ) { + $vals = (array) $_GET[$this->name]; + $vals = array_map( 'wpcf7_sanitize_query_var', $vals ); + + if ( $args['multiple'] ) { + $values = array_merge( $values, $vals ); + } else { + $val = isset( $vals[0] ) ? (string) $vals[0] : ''; + + if ( strlen( $val ) ) { + return $val; + } + } + + } elseif ( 'post' == $opt and isset( $_POST[$this->name] ) ) { + $vals = (array) $_POST[$this->name]; + $vals = array_map( 'wpcf7_sanitize_query_var', $vals ); + + if ( $args['multiple'] ) { + $values = array_merge( $values, $vals ); + } else { + $val = isset( $vals[0] ) ? (string) $vals[0] : ''; + + if ( strlen( $val ) ) { + return $val; + } + } + + } elseif ( 'shortcode_attr' == $opt ) { + if ( $contact_form = WPCF7_ContactForm::get_current() ) { + $val = $contact_form->shortcode_attr( $this->name ); + + if ( strlen( $val ) ) { + if ( $args['multiple'] ) { + $values[] = $val; + } else { + return $val; + } + } + } + + } elseif ( preg_match( '/^[0-9_]+$/', $opt ) ) { + $nums = explode( '_', $opt ); + + foreach ( $nums as $num ) { + $num = absint( $num ); + $num = $args['shifted'] ? $num : $num - 1; + + if ( isset( $this->values[$num] ) ) { + if ( $args['multiple'] ) { + $values[] = $this->values[$num]; + } else { + return $this->values[$num]; + } + } + } + } + } + + if ( $args['multiple'] ) { + $values = array_unique( $values ); + return $values; + } else { + return $default; + } + } + + public function get_data_option( $args = '' ) { + $options = (array) $this->get_option( 'data' ); + + return apply_filters( 'wpcf7_form_tag_data_option', null, $options, $args ); + } + + public function get_first_match_option( $pattern ) { + foreach( (array) $this->options as $option ) { + if ( preg_match( $pattern, $option, $matches ) ) { + return $matches; + } + } + + return false; + } + + public function get_all_match_options( $pattern ) { + $result = array(); + + foreach( (array) $this->options as $option ) { + if ( preg_match( $pattern, $option, $matches ) ) { + $result[] = $matches; + } + } + + return $result; + } + + public function offsetSet( $offset, $value ) { + if ( property_exists( __CLASS__, $offset ) ) { + $this->{$offset} = $value; + } + } + + public function offsetGet( $offset ) { + if ( property_exists( __CLASS__, $offset ) ) { + return $this->{$offset}; + } + + return null; + } + + public function offsetExists( $offset ) { + return property_exists( __CLASS__, $offset ); + } + + public function offsetUnset( $offset ) { + } +} diff --git a/wp-content/plugins/contact-form-7/includes/form-tags-manager.php b/wp-content/plugins/contact-form-7/includes/form-tags-manager.php new file mode 100644 index 0000000..cf9d99d --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/form-tags-manager.php @@ -0,0 +1,368 @@ +add( $tag, $func, $features ); +} + +function wpcf7_remove_form_tag( $tag ) { + $manager = WPCF7_FormTagsManager::get_instance(); + + return $manager->remove( $tag ); +} + +function wpcf7_replace_all_form_tags( $content ) { + $manager = WPCF7_FormTagsManager::get_instance(); + + return $manager->replace_all( $content ); +} + +function wpcf7_scan_form_tags( $cond = null ) { + $contact_form = WPCF7_ContactForm::get_current(); + + if ( $contact_form ) { + return $contact_form->scan_form_tags( $cond ); + } + + return array(); +} + +function wpcf7_form_tag_supports( $tag, $feature ) { + $manager = WPCF7_FormTagsManager::get_instance(); + + return $manager->tag_type_supports( $tag, $feature ); +} + +class WPCF7_FormTagsManager { + + private static $instance; + + private $tag_types = array(); + private $scanned_tags = null; // Tags scanned at the last time of scan() + + private function __construct() {} + + public static function get_instance() { + if ( empty( self::$instance ) ) { + self::$instance = new self; + } + + return self::$instance; + } + + public function get_scanned_tags() { + return $this->scanned_tags; + } + + public function add( $tag, $func, $features = '' ) { + if ( ! is_callable( $func ) ) { + return; + } + + if ( true === $features ) { // for back-compat + $features = array( 'name-attr' => true ); + } + + $features = wp_parse_args( $features, array() ); + + $tags = array_filter( array_unique( (array) $tag ) ); + + foreach ( $tags as $tag ) { + $tag = $this->sanitize_tag_type( $tag ); + + if ( ! $this->tag_type_exists( $tag ) ) { + $this->tag_types[$tag] = array( + 'function' => $func, + 'features' => $features, + ); + } + } + } + + public function tag_type_exists( $tag ) { + return isset( $this->tag_types[$tag] ); + } + + public function tag_type_supports( $tag, $feature ) { + $feature = array_filter( (array) $feature ); + + if ( isset( $this->tag_types[$tag]['features'] ) ) { + return (bool) array_intersect( + array_keys( array_filter( $this->tag_types[$tag]['features'] ) ), + $feature ); + } + + return false; + } + + public function collect_tag_types( $feature = null, $invert = false ) { + $tag_types = array_keys( $this->tag_types ); + + if ( empty( $feature ) ) { + return $tag_types; + } + + $output = array(); + + foreach ( $tag_types as $tag ) { + if ( ! $invert && $this->tag_type_supports( $tag, $feature ) + || $invert && ! $this->tag_type_supports( $tag, $feature ) ) { + $output[] = $tag; + } + } + + return $output; + } + + private function sanitize_tag_type( $tag ) { + $tag = preg_replace( '/[^a-zA-Z0-9_*]+/', '_', $tag ); + $tag = rtrim( $tag, '_' ); + $tag = strtolower( $tag ); + return $tag; + } + + public function remove( $tag ) { + unset( $this->tag_types[$tag] ); + } + + public function normalize( $content ) { + if ( empty( $this->tag_types ) ) { + return $content; + } + + $content = preg_replace_callback( + '/' . $this->tag_regex() . '/s', + array( $this, 'normalize_callback' ), + $content ); + + return $content; + } + + private function normalize_callback( $m ) { + // allow [[foo]] syntax for escaping a tag + if ( $m[1] == '[' + and $m[6] == ']' ) { + return $m[0]; + } + + $tag = $m[2]; + + $attr = trim( preg_replace( '/[\r\n\t ]+/', ' ', $m[3] ) ); + $attr = strtr( $attr, array( '<' => '<', '>' => '>' ) ); + + $content = trim( $m[5] ); + $content = str_replace( "\n", '', $content ); + + $result = $m[1] . '[' . $tag + . ( $attr ? ' ' . $attr : '' ) + . ( $m[4] ? ' ' . $m[4] : '' ) + . ']' + . ( $content ? $content . '[/' . $tag . ']' : '' ) + . $m[6]; + + return $result; + } + + public function replace_all( $content ) { + return $this->scan( $content, true ); + } + + public function scan( $content, $replace = false ) { + $this->scanned_tags = array(); + + if ( empty( $this->tag_types ) ) { + if ( $replace ) { + return $content; + } else { + return $this->scanned_tags; + } + } + + if ( $replace ) { + $content = preg_replace_callback( + '/' . $this->tag_regex() . '/s', + array( $this, 'replace_callback' ), + $content ); + + return $content; + } else { + preg_replace_callback( + '/' . $this->tag_regex() . '/s', + array( $this, 'scan_callback' ), + $content ); + + return $this->scanned_tags; + } + } + + public function filter( $input, $cond ) { + if ( is_array( $input ) ) { + $tags = $input; + } elseif ( is_string( $input ) ) { + $tags = $this->scan( $input ); + } else { + $tags = $this->scanned_tags; + } + + if ( empty( $tags ) ) { + return array(); + } + + $cond = wp_parse_args( $cond, array( + 'type' => array(), + 'name' => array(), + 'feature' => '', + ) ); + + $type = array_filter( (array) $cond['type'] ); + $name = array_filter( (array) $cond['name'] ); + $feature = is_string( $cond['feature'] ) ? trim( $cond['feature'] ) : ''; + + if ( '!' == substr( $feature, 0, 1 ) ) { + $feature_negative = true; + $feature = trim( substr( $feature, 1 ) ); + } else { + $feature_negative = false; + } + + $output = array(); + + foreach ( $tags as $tag ) { + $tag = new WPCF7_FormTag( $tag ); + + if ( $type and ! in_array( $tag->type, $type, true ) ) { + continue; + } + + if ( $name and ! in_array( $tag->name, $name, true ) ) { + continue; + } + + if ( $feature ) { + if ( ! $this->tag_type_supports( $tag->type, $feature ) + and ! $feature_negative ) { + continue; + } elseif ( $this->tag_type_supports( $tag->type, $feature ) + and $feature_negative ) { + continue; + } + } + + $output[] = $tag; + } + + return $output; + } + + private function tag_regex() { + $tagnames = array_keys( $this->tag_types ); + $tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) ); + + return '(\[?)' + . '\[(' . $tagregexp . ')(?:[\r\n\t ](.*?))?(?:[\r\n\t ](\/))?\]' + . '(?:([^[]*?)\[\/\2\])?' + . '(\]?)'; + } + + private function replace_callback( $m ) { + return $this->scan_callback( $m, true ); + } + + private function scan_callback( $m, $replace = false ) { + // allow [[foo]] syntax for escaping a tag + if ( $m[1] == '[' + and $m[6] == ']' ) { + return substr( $m[0], 1, -1 ); + } + + $tag = $m[2]; + $attr = $this->parse_atts( $m[3] ); + + $scanned_tag = array( + 'type' => $tag, + 'basetype' => trim( $tag, '*' ), + 'name' => '', + 'options' => array(), + 'raw_values' => array(), + 'values' => array(), + 'pipes' => null, + 'labels' => array(), + 'attr' => '', + 'content' => '', + ); + + if ( is_array( $attr ) ) { + if ( is_array( $attr['options'] ) ) { + if ( $this->tag_type_supports( $tag, 'name-attr' ) + and ! empty( $attr['options'] ) ) { + $scanned_tag['name'] = array_shift( $attr['options'] ); + + if ( ! wpcf7_is_name( $scanned_tag['name'] ) ) { + return $m[0]; // Invalid name is used. Ignore this tag. + } + } + + $scanned_tag['options'] = (array) $attr['options']; + } + + $scanned_tag['raw_values'] = (array) $attr['values']; + + if ( WPCF7_USE_PIPE ) { + $pipes = new WPCF7_Pipes( $scanned_tag['raw_values'] ); + $scanned_tag['values'] = $pipes->collect_befores(); + $scanned_tag['pipes'] = $pipes; + } else { + $scanned_tag['values'] = $scanned_tag['raw_values']; + } + + $scanned_tag['labels'] = $scanned_tag['values']; + + } else { + $scanned_tag['attr'] = $attr; + } + + $scanned_tag['values'] = array_map( 'trim', $scanned_tag['values'] ); + $scanned_tag['labels'] = array_map( 'trim', $scanned_tag['labels'] ); + + $content = trim( $m[5] ); + $content = preg_replace( "/$/m", '', $content ); + $scanned_tag['content'] = $content; + + $scanned_tag = apply_filters( 'wpcf7_form_tag', $scanned_tag, $replace ); + + $scanned_tag = new WPCF7_FormTag( $scanned_tag ); + + $this->scanned_tags[] = $scanned_tag; + + if ( $replace ) { + $func = $this->tag_types[$tag]['function']; + return $m[1] . call_user_func( $func, $scanned_tag ) . $m[6]; + } else { + return $m[0]; + } + } + + private function parse_atts( $text ) { + $atts = array( 'options' => array(), 'values' => array() ); + $text = preg_replace( "/[\x{00a0}\x{200b}]+/u", " ", $text ); + $text = stripcslashes( trim( $text ) ); + + $pattern = '%^([-+*=0-9a-zA-Z:.!?#$&@_/|\%\r\n\t ]*?)((?:[\r\n\t ]*"[^"]*"|[\r\n\t ]*\'[^\']*\')*)$%'; + + if ( preg_match( $pattern, $text, $match ) ) { + if ( ! empty( $match[1] ) ) { + $atts['options'] = preg_split( '/[\r\n\t ]+/', trim( $match[1] ) ); + } + + if ( ! empty( $match[2] ) ) { + preg_match_all( '/"[^"]*"|\'[^\']*\'/', $match[2], $matched_values ); + $atts['values'] = wpcf7_strip_quote_deep( $matched_values[0] ); + } + } else { + $atts = $text; + } + + return $atts; + } +} diff --git a/wp-content/plugins/contact-form-7/includes/formatting.php b/wp-content/plugins/contact-form-7/includes/formatting.php new file mode 100644 index 0000000..97daa6b --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/formatting.php @@ -0,0 +1,381 @@ +\s*
                      |', "\n\n", $pee ); + // Space things out a little + /* wpcf7: remove select and input */ + $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)'; + $pee = preg_replace( '!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee ); + $pee = preg_replace( '!()!', "$1\n\n", $pee ); + + /* wpcf7: take care of [response], [recaptcha], and [hidden] tags */ + $form_tags_manager = WPCF7_FormTagsManager::get_instance(); + $block_hidden_form_tags = $form_tags_manager->collect_tag_types( + array( 'display-block', 'display-hidden' ) ); + $block_hidden_form_tags = sprintf( '(?:%s)', + implode( '|', $block_hidden_form_tags ) ); + + $pee = preg_replace( '!(\[' . $block_hidden_form_tags . '[^]]*\])!', + "\n$1\n\n", $pee ); + + $pee = str_replace( array( "\r\n", "\r" ), "\n", $pee ); // cross-platform newlines + + if ( strpos( $pee, ']*)>\s*|', "", $pee ); // no pee inside object/embed + $pee = preg_replace( '|\s*\s*|', '', $pee ); + } + + $pee = preg_replace( "/\n\n+/", "\n\n", $pee ); // take care of duplicates + // make paragraphs, including one at the end + $pees = preg_split( '/\n\s*\n/', $pee, -1, PREG_SPLIT_NO_EMPTY ); + $pee = ''; + + foreach ( $pees as $tinkle ) { + $pee .= '

                      ' . trim( $tinkle, "\n" ) . "

                      \n"; + } + + $pee = preg_replace( '|

                      \s*

                      |', '', $pee ); // under certain strange conditions it could create a P of entirely whitespace + $pee = preg_replace( '!

                      ([^<]+)!', "

                      $1

                      ", $pee ); + $pee = preg_replace( '!

                      \s*(]*>)\s*

                      !', "$1", $pee ); // don't pee all over a tag + $pee = preg_replace( "|

                      (|", "$1", $pee ); // problem with nested lists + $pee = preg_replace( '|

                      ]*)>|i', "

                      ", $pee ); + $pee = str_replace( '

                      ', '

                      ', $pee ); + $pee = preg_replace( '!

                      \s*(]*>)!', "$1", $pee ); + $pee = preg_replace( '!(]*>)\s*

                      !', "$1", $pee ); + + /* wpcf7: take care of [response], [recaptcha], and [hidden] tag */ + $pee = preg_replace( '!

                      \s*(\[' . $block_hidden_form_tags . '[^]]*\])!', + "$1", $pee ); + $pee = preg_replace( '!(\[' . $block_hidden_form_tags . '[^]]*\])\s*

                      !', + "$1", $pee ); + + if ( $br ) { + /* wpcf7: add textarea */ + $pee = preg_replace_callback( + '/<(script|style|textarea).*?<\/\\1>/s', + 'wpcf7_autop_preserve_newline_callback', $pee ); + $pee = preg_replace( '|(?)\s*\n|', "
                      \n", $pee ); // optionally make line breaks + $pee = str_replace( '', "\n", $pee ); + + /* wpcf7: remove extra
                      just added before [response], [recaptcha], and [hidden] tags */ + $pee = preg_replace( '!
                      \n(\[' . $block_hidden_form_tags . '[^]]*\])!', + "\n$1", $pee ); + } + + $pee = preg_replace( '!(]*>)\s*
                      !', "$1", $pee ); + $pee = preg_replace( '!
                      (\s*]*>)!', '$1', $pee ); + + if ( strpos( $pee, ']*>)(.*?)!is', + 'clean_pre', $pee ); + } + + $pee = preg_replace( "|\n

                      $|", '

                      ', $pee ); + + return $pee; +} + +function wpcf7_autop_preserve_newline_callback( $matches ) { + return str_replace( "\n", '', $matches[0] ); +} + +function wpcf7_sanitize_query_var( $text ) { + $text = wp_unslash( $text ); + $text = wp_check_invalid_utf8( $text ); + + if ( false !== strpos( $text, '<' ) ) { + $text = wp_pre_kses_less_than( $text ); + $text = wp_strip_all_tags( $text ); + } + + $text = preg_replace( '/%[a-f0-9]{2}/i', '', $text ); + $text = preg_replace( '/ +/', ' ', $text ); + $text = trim( $text, ' ' ); + + return $text; +} + +function wpcf7_strip_quote( $text ) { + $text = trim( $text ); + + if ( preg_match( '/^"(.*)"$/s', $text, $matches ) ) { + $text = $matches[1]; + } elseif ( preg_match( "/^'(.*)'$/s", $text, $matches ) ) { + $text = $matches[1]; + } + + return $text; +} + +function wpcf7_strip_quote_deep( $arr ) { + if ( is_string( $arr ) ) { + return wpcf7_strip_quote( $arr ); + } + + if ( is_array( $arr ) ) { + $result = array(); + + foreach ( $arr as $key => $text ) { + $result[$key] = wpcf7_strip_quote_deep( $text ); + } + + return $result; + } +} + +function wpcf7_normalize_newline( $text, $to = "\n" ) { + if ( ! is_string( $text ) ) { + return $text; + } + + $nls = array( "\r\n", "\r", "\n" ); + + if ( ! in_array( $to, $nls ) ) { + return $text; + } + + return str_replace( $nls, $to, $text ); +} + +function wpcf7_normalize_newline_deep( $arr, $to = "\n" ) { + if ( is_array( $arr ) ) { + $result = array(); + + foreach ( $arr as $key => $text ) { + $result[$key] = wpcf7_normalize_newline_deep( $text, $to ); + } + + return $result; + } + + return wpcf7_normalize_newline( $arr, $to ); +} + +function wpcf7_strip_newline( $str ) { + $str = (string) $str; + $str = str_replace( array( "\r", "\n" ), '', $str ); + return trim( $str ); +} + +function wpcf7_canonicalize( $text, $strto = 'lower' ) { + if ( function_exists( 'mb_convert_kana' ) + and 'UTF-8' == get_option( 'blog_charset' ) ) { + $text = mb_convert_kana( $text, 'asKV', 'UTF-8' ); + } + + if ( 'lower' == $strto ) { + $text = strtolower( $text ); + } elseif ( 'upper' == $strto ) { + $text = strtoupper( $text ); + } + + $text = trim( $text ); + return $text; +} + +/** + * Check whether a string is a valid NAME token. + * + * ID and NAME tokens must begin with a letter ([A-Za-z]) + * and may be followed by any number of letters, digits ([0-9]), + * hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). + * + * @see http://www.w3.org/TR/html401/types.html#h-6.2 + * + * @return bool True if it is a valid name, false if not. + */ +function wpcf7_is_name( $string ) { + return preg_match( '/^[A-Za-z][-A-Za-z0-9_:.]*$/', $string ); +} + +function wpcf7_sanitize_unit_tag( $tag ) { + $tag = preg_replace( '/[^A-Za-z0-9_-]/', '', $tag ); + return $tag; +} + +function wpcf7_is_email( $email ) { + $result = is_email( $email ); + return apply_filters( 'wpcf7_is_email', $result, $email ); +} + +function wpcf7_is_url( $url ) { + $result = ( false !== filter_var( $url, FILTER_VALIDATE_URL ) ); + return apply_filters( 'wpcf7_is_url', $result, $url ); +} + +function wpcf7_is_tel( $tel ) { + $result = preg_match( '%^[+]?[0-9()/ -]*$%', $tel ); + return apply_filters( 'wpcf7_is_tel', $result, $tel ); +} + +function wpcf7_is_number( $number ) { + $result = is_numeric( $number ); + return apply_filters( 'wpcf7_is_number', $result, $number ); +} + +function wpcf7_is_date( $date ) { + $result = preg_match( '/^([0-9]{4,})-([0-9]{2})-([0-9]{2})$/', $date, $matches ); + + if ( $result ) { + $result = checkdate( $matches[2], $matches[3], $matches[1] ); + } + + return apply_filters( 'wpcf7_is_date', $result, $date ); +} + +function wpcf7_is_mailbox_list( $mailbox_list ) { + if ( ! is_array( $mailbox_list ) ) { + $mailbox_text = (string) $mailbox_list; + $mailbox_text = wp_unslash( $mailbox_text ); + + $mailbox_text = preg_replace( '/\\\\(?:\"|\')/', 'esc-quote', + $mailbox_text ); + + $mailbox_text = preg_replace( '/(?:\".*?\"|\'.*?\')/', 'quoted-string', + $mailbox_text ); + + $mailbox_list = explode( ',', $mailbox_text ); + } + + $addresses = array(); + + foreach ( $mailbox_list as $mailbox ) { + if ( ! is_string( $mailbox ) ) { + return false; + } + + $mailbox = trim( $mailbox ); + + if ( preg_match( '/<(.+)>$/', $mailbox, $matches ) ) { + $addr_spec = $matches[1]; + } else { + $addr_spec = $mailbox; + } + + if ( ! wpcf7_is_email( $addr_spec ) ) { + return false; + } + + $addresses[] = $addr_spec; + } + + return $addresses; +} + +function wpcf7_is_email_in_domain( $email, $domain ) { + $email_list = wpcf7_is_mailbox_list( $email ); + $domain = strtolower( $domain ); + + foreach ( $email_list as $email ) { + $email_domain = substr( $email, strrpos( $email, '@' ) + 1 ); + $email_domain = strtolower( $email_domain ); + $domain_parts = explode( '.', $domain ); + + do { + $site_domain = implode( '.', $domain_parts ); + + if ( $site_domain == $email_domain ) { + continue 2; + } + + array_shift( $domain_parts ); + } while ( $domain_parts ); + + return false; + } + + return true; +} + +function wpcf7_is_email_in_site_domain( $email ) { + if ( wpcf7_is_localhost() ) { + return true; + } + + $site_domain = strtolower( $_SERVER['SERVER_NAME'] ); + + if ( preg_match( '/^[0-9.]+$/', $site_domain ) ) { // 123.456.789.012 + return true; + } + + if ( wpcf7_is_email_in_domain( $email, $site_domain ) ) { + return true; + } + + $home_url = home_url(); + + // for interoperability with WordPress MU Domain Mapping plugin + if ( is_multisite() + and function_exists( 'domain_mapping_siteurl' ) ) { + $domain_mapping_siteurl = domain_mapping_siteurl( false ); + + if ( $domain_mapping_siteurl ) { + $home_url = $domain_mapping_siteurl; + } + } + + if ( preg_match( '%^https?://([^/]+)%', $home_url, $matches ) ) { + $site_domain = strtolower( $matches[1] ); + + if ( $site_domain != strtolower( $_SERVER['SERVER_NAME'] ) + and wpcf7_is_email_in_domain( $email, $site_domain ) ) { + return true; + } + } + + return false; +} + +function wpcf7_antiscript_file_name( $filename ) { + $filename = basename( $filename ); + $parts = explode( '.', $filename ); + + if ( count( $parts ) < 2 ) { + return $filename; + } + + $script_pattern = '/^(php|phtml|pl|py|rb|cgi|asp|aspx)\d?$/i'; + + $filename = array_shift( $parts ); + $extension = array_pop( $parts ); + + foreach ( (array) $parts as $part ) { + if ( preg_match( $script_pattern, $part ) ) { + $filename .= '.' . $part . '_'; + } else { + $filename .= '.' . $part; + } + } + + if ( preg_match( $script_pattern, $extension ) ) { + $filename .= '.' . $extension . '_.txt'; + } else { + $filename .= '.' . $extension; + } + + return $filename; +} + +function wpcf7_mask_password( $text, $length_unmasked = 0 ) { + $length = strlen( $text ); + $length_unmasked = absint( $length_unmasked ); + + if ( 0 == $length_unmasked ) { + if ( 9 < $length ) { + $length_unmasked = 4; + } elseif ( 3 < $length ) { + $length_unmasked = 2; + } else { + $length_unmasked = $length; + } + } + + $text = substr( $text, 0 - $length_unmasked ); + $text = str_pad( $text, $length, '*', STR_PAD_LEFT ); + return $text; +} diff --git a/wp-content/plugins/contact-form-7/includes/functions.php b/wp-content/plugins/contact-form-7/includes/functions.php new file mode 100644 index 0000000..d9a7a56 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/functions.php @@ -0,0 +1,434 @@ + $uploads['basedir'], + 'url' => $uploads['baseurl'], + ) ); + + if ( 'dir' == $type ) { + return $uploads['dir']; + } if ( 'url' == $type ) { + return $uploads['url']; + } + + return $uploads; +} + +function wpcf7_verify_nonce( $nonce, $action = 'wp_rest' ) { + return wp_verify_nonce( $nonce, $action ); +} + +function wpcf7_create_nonce( $action = 'wp_rest' ) { + return wp_create_nonce( $action ); +} + +function wpcf7_blacklist_check( $target ) { + $mod_keys = trim( get_option( 'blacklist_keys' ) ); + + if ( empty( $mod_keys ) ) { + return false; + } + + $words = explode( "\n", $mod_keys ); + + foreach ( (array) $words as $word ) { + $word = trim( $word ); + + if ( empty( $word ) + or 256 < strlen( $word ) ) { + continue; + } + + $pattern = sprintf( '#%s#i', preg_quote( $word, '#' ) ); + + if ( preg_match( $pattern, $target ) ) { + return true; + } + } + + return false; +} + +function wpcf7_array_flatten( $input ) { + if ( ! is_array( $input ) ) { + return array( $input ); + } + + $output = array(); + + foreach ( $input as $value ) { + $output = array_merge( $output, wpcf7_array_flatten( $value ) ); + } + + return $output; +} + +function wpcf7_flat_join( $input ) { + $input = wpcf7_array_flatten( $input ); + $output = array(); + + foreach ( (array) $input as $value ) { + $output[] = trim( (string) $value ); + } + + return implode( ', ', $output ); +} + +function wpcf7_support_html5() { + return (bool) apply_filters( 'wpcf7_support_html5', true ); +} + +function wpcf7_support_html5_fallback() { + return (bool) apply_filters( 'wpcf7_support_html5_fallback', false ); +} + +function wpcf7_use_really_simple_captcha() { + return apply_filters( 'wpcf7_use_really_simple_captcha', + WPCF7_USE_REALLY_SIMPLE_CAPTCHA ); +} + +function wpcf7_validate_configuration() { + return apply_filters( 'wpcf7_validate_configuration', + WPCF7_VALIDATE_CONFIGURATION ); +} + +function wpcf7_autop_or_not() { + return (bool) apply_filters( 'wpcf7_autop_or_not', WPCF7_AUTOP ); +} + +function wpcf7_load_js() { + return apply_filters( 'wpcf7_load_js', WPCF7_LOAD_JS ); +} + +function wpcf7_load_css() { + return apply_filters( 'wpcf7_load_css', WPCF7_LOAD_CSS ); +} + +function wpcf7_format_atts( $atts ) { + $html = ''; + + $prioritized_atts = array( 'type', 'name', 'value' ); + + foreach ( $prioritized_atts as $att ) { + if ( isset( $atts[$att] ) ) { + $value = trim( $atts[$att] ); + $html .= sprintf( ' %s="%s"', $att, esc_attr( $value ) ); + unset( $atts[$att] ); + } + } + + foreach ( $atts as $key => $value ) { + $key = strtolower( trim( $key ) ); + + if ( ! preg_match( '/^[a-z_:][a-z_:.0-9-]*$/', $key ) ) { + continue; + } + + $value = trim( $value ); + + if ( '' !== $value ) { + $html .= sprintf( ' %s="%s"', $key, esc_attr( $value ) ); + } + } + + $html = trim( $html ); + + return $html; +} + +function wpcf7_link( $url, $anchor_text, $args = '' ) { + $defaults = array( + 'id' => '', + 'class' => '', + ); + + $args = wp_parse_args( $args, $defaults ); + $args = array_intersect_key( $args, $defaults ); + $atts = wpcf7_format_atts( $args ); + + $link = sprintf( '%2$s', + esc_url( $url ), + esc_html( $anchor_text ), + $atts ? ( ' ' . $atts ) : '' ); + + return $link; +} + +function wpcf7_get_request_uri() { + static $request_uri = ''; + + if ( empty( $request_uri ) ) { + $request_uri = add_query_arg( array() ); + } + + return esc_url_raw( $request_uri ); +} + +function wpcf7_register_post_types() { + if ( class_exists( 'WPCF7_ContactForm' ) ) { + WPCF7_ContactForm::register_post_type(); + return true; + } else { + return false; + } +} + +function wpcf7_version( $args = '' ) { + $defaults = array( + 'limit' => -1, + 'only_major' => false, + ); + + $args = wp_parse_args( $args, $defaults ); + + if ( $args['only_major'] ) { + $args['limit'] = 2; + } + + $args['limit'] = (int) $args['limit']; + + $ver = WPCF7_VERSION; + $ver = strtr( $ver, '_-+', '...' ); + $ver = preg_replace( '/[^0-9.]+/', ".$0.", $ver ); + $ver = preg_replace( '/[.]+/', ".", $ver ); + $ver = trim( $ver, '.' ); + $ver = explode( '.', $ver ); + + if ( -1 < $args['limit'] ) { + $ver = array_slice( $ver, 0, $args['limit'] ); + } + + $ver = implode( '.', $ver ); + + return $ver; +} + +function wpcf7_version_grep( $version, array $input ) { + $pattern = '/^' . preg_quote( (string) $version, '/' ) . '(?:\.|$)/'; + + return preg_grep( $pattern, $input ); +} + +function wpcf7_enctype_value( $enctype ) { + $enctype = trim( $enctype ); + + if ( empty( $enctype ) ) { + return ''; + } + + $valid_enctypes = array( + 'application/x-www-form-urlencoded', + 'multipart/form-data', + 'text/plain', + ); + + if ( in_array( $enctype, $valid_enctypes ) ) { + return $enctype; + } + + $pattern = '%^enctype="(' . implode( '|', $valid_enctypes ) . ')"$%'; + + if ( preg_match( $pattern, $enctype, $matches ) ) { + return $matches[1]; // for back-compat + } + + return ''; +} + +function wpcf7_rmdir_p( $dir ) { + if ( is_file( $dir ) ) { + $file = $dir; + + if ( @unlink( $file ) ) { + return true; + } + + $stat = stat( $file ); + + if ( @chmod( $file, $stat['mode'] | 0200 ) ) { // add write for owner + if ( @unlink( $file ) ) { + return true; + } + + @chmod( $file, $stat['mode'] ); + } + + return false; + } + + if ( ! is_dir( $dir ) ) { + return false; + } + + if ( $handle = opendir( $dir ) ) { + while ( false !== ( $file = readdir( $handle ) ) ) { + if ( $file == "." + or $file == ".." ) { + continue; + } + + wpcf7_rmdir_p( path_join( $dir, $file ) ); + } + + closedir( $handle ); + } + + if ( false !== ( $files = scandir( $dir ) ) + and ! array_diff( $files, array( '.', '..' ) ) ) { + return rmdir( $dir ); + } + + return false; +} + +/* From _http_build_query in wp-includes/functions.php */ +function wpcf7_build_query( $args, $key = '' ) { + $sep = '&'; + $ret = array(); + + foreach ( (array) $args as $k => $v ) { + $k = urlencode( $k ); + + if ( ! empty( $key ) ) { + $k = $key . '%5B' . $k . '%5D'; + } + + if ( null === $v ) { + continue; + } elseif ( false === $v ) { + $v = '0'; + } + + if ( is_array( $v ) or is_object( $v ) ) { + array_push( $ret, wpcf7_build_query( $v, $k ) ); + } else { + array_push( $ret, $k . '=' . urlencode( $v ) ); + } + } + + return implode( $sep, $ret ); +} + +/** + * Returns the number of code units in a string. + * + * @see http://www.w3.org/TR/html5/infrastructure.html#code-unit-length + * + * @return int|bool The number of code units, or false if mb_convert_encoding is not available. + */ +function wpcf7_count_code_units( $string ) { + static $use_mb = null; + + if ( is_null( $use_mb ) ) { + $use_mb = function_exists( 'mb_convert_encoding' ); + } + + if ( ! $use_mb ) { + return false; + } + + $string = (string) $string; + $string = str_replace( "\r\n", "\n", $string ); + + $encoding = mb_detect_encoding( $string, mb_detect_order(), true ); + + if ( $encoding ) { + $string = mb_convert_encoding( $string, 'UTF-16', $encoding ); + } else { + $string = mb_convert_encoding( $string, 'UTF-16', 'UTF-8' ); + } + + $byte_count = mb_strlen( $string, '8bit' ); + + return floor( $byte_count / 2 ); +} + +function wpcf7_is_localhost() { + $server_name = strtolower( $_SERVER['SERVER_NAME'] ); + return in_array( $server_name, array( 'localhost', '127.0.0.1' ) ); +} + +function wpcf7_deprecated_function( $function, $version, $replacement ) { + $trigger_error = apply_filters( 'deprecated_function_trigger_error', true ); + + if ( WP_DEBUG and $trigger_error ) { + if ( function_exists( '__' ) ) { + trigger_error( sprintf( __( '%1$s is deprecated since Contact Form 7 version %2$s! Use %3$s instead.', 'contact-form-7' ), $function, $version, $replacement ) ); + } else { + trigger_error( sprintf( '%1$s is deprecated since Contact Form 7 version %2$s! Use %3$s instead.', $function, $version, $replacement ) ); + } + } +} + +function wpcf7_log_remote_request( $url, $request, $response ) { + $log = sprintf( + /* translators: 1: response code, 2: message, 3: body, 4: URL */ + __( 'HTTP Response: %1$s %2$s %3$s from %4$s', 'contact-form-7' ), + (int) wp_remote_retrieve_response_code( $response ), + wp_remote_retrieve_response_message( $response ), + wp_remote_retrieve_body( $response ), + $url + ); + + $log = apply_filters( 'wpcf7_log_remote_request', + $log, $url, $request, $response + ); + + if ( $log ) { + trigger_error( $log ); + } +} + +function wpcf7_anonymize_ip_addr( $ip_addr ) { + if ( ! function_exists( 'inet_ntop' ) + or ! function_exists( 'inet_pton' ) ) { + return $ip_addr; + } + + $packed = inet_pton( $ip_addr ); + + if ( false === $packed ) { + return $ip_addr; + } + + if ( 4 == strlen( $packed ) ) { // IPv4 + $mask = '255.255.255.0'; + } elseif ( 16 == strlen( $packed ) ) { // IPv6 + $mask = 'ffff:ffff:ffff:0000:0000:0000:0000:0000'; + } else { + return $ip_addr; + } + + return inet_ntop( $packed & inet_pton( $mask ) ); +} + +function wpcf7_is_file_path_in_content_dir( $path ) { + if ( 0 === strpos( realpath( $path ), realpath( WP_CONTENT_DIR ) ) ) { + return true; + } + + if ( defined( 'UPLOADS' ) + and 0 === strpos( realpath( $path ), realpath( ABSPATH . UPLOADS ) ) ) { + return true; + } + + return false; +} diff --git a/wp-content/plugins/contact-form-7/includes/integration.php b/wp-content/plugins/contact-form-7/includes/integration.php new file mode 100644 index 0000000..61ab258 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/integration.php @@ -0,0 +1,345 @@ +services[$name] ) ) { + return false; + } + + $this->services[$name] = $service; + } + + public function add_category( $name, $title ) { + $name = sanitize_key( $name ); + + if ( empty( $name ) + or isset( $this->categories[$name] ) ) { + return false; + } + + $this->categories[$name] = $title; + } + + public function service_exists( $name = '' ) { + if ( '' == $name ) { + return (bool) count( $this->services ); + } else { + return isset( $this->services[$name] ); + } + } + + public function get_service( $name ) { + if ( $this->service_exists( $name ) ) { + return $this->services[$name]; + } else { + return false; + } + } + + public function list_services( $args = '' ) { + $args = wp_parse_args( $args, array( + 'include' => array(), + ) ); + + $singular = false; + $services = (array) $this->services; + + if ( ! empty( $args['include'] ) ) { + $services = array_intersect_key( $services, + array_flip( (array) $args['include'] ) ); + + if ( 1 == count( $services ) ) { + $singular = true; + } + } + + if ( empty( $services ) ) { + return; + } + + $action = wpcf7_current_action(); + + foreach ( $services as $name => $service ) { + $cats = array_intersect_key( $this->categories, + array_flip( $service->get_categories() ) ); +?> +
                      +icon(); ?> +

                      get_title() ); ?>

                      +
                      + +
                      +link(); ?> +
                      +
                      + +
                      +display( $action ); + } else { + $service->display(); + } +?> +
                      +
                      +refresh_token ); + } + + protected function save_data() { + } + + protected function reset_data() { + } + + protected function get_redirect_uri() { + return admin_url(); + } + + protected function menu_page_url( $args = '' ) { + return menu_page_url( 'wpcf7-integration', false ); + } + + public function load( $action = '' ) { + if ( 'auth_redirect' == $action ) { + $code = isset( $_GET['code'] ) ? $_GET['code'] : ''; + + if ( $code ) { + $this->request_token( $code ); + } + + if ( ! empty( $this->access_token ) ) { + $message = 'success'; + } else { + $message = 'failed'; + } + + wp_safe_redirect( $this->menu_page_url( + array( + 'action' => 'setup', + 'message' => $message, + ) + ) ); + + exit(); + } + } + + protected function authorize( $scope = '' ) { + $endpoint = add_query_arg( + array( + 'response_type' => 'code', + 'client_id' => $this->client_id, + 'redirect_uri' => urlencode( $this->get_redirect_uri() ), + 'scope' => $scope, + ), + $this->authorization_endpoint + ); + + if ( wp_redirect( esc_url_raw( $endpoint ) ) ) { + exit(); + } + } + + protected function get_http_authorization_header( $scheme = 'basic' ) { + $scheme = strtolower( trim( $scheme ) ); + + switch ( $scheme ) { + case 'bearer': + return sprintf( 'Bearer %s', $this->access_token ); + case 'basic': + default: + return sprintf( 'Basic %s', + base64_encode( $this->client_id . ':' . $this->client_secret ) + ); + } + } + + protected function request_token( $authorization_code ) { + $endpoint = add_query_arg( + array( + 'code' => $authorization_code, + 'redirect_uri' => urlencode( $this->get_redirect_uri() ), + 'grant_type' => 'authorization_code', + ), + $this->token_endpoint + ); + + $request = array( + 'headers' => array( + 'Authorization' => $this->get_http_authorization_header( 'basic' ), + ), + ); + + $response = wp_remote_post( esc_url_raw( $endpoint ), $request ); + $response_code = (int) wp_remote_retrieve_response_code( $response ); + $response_body = wp_remote_retrieve_body( $response ); + $response_body = json_decode( $response_body, true ); + + if ( WP_DEBUG and 400 <= $response_code ) { + $this->log( $endpoint, $request, $response ); + } + + if ( 401 == $response_code ) { // Unauthorized + $this->access_token = null; + $this->refresh_token = null; + } else { + if ( isset( $response_body['access_token'] ) ) { + $this->access_token = $response_body['access_token']; + } else { + $this->access_token = null; + } + + if ( isset( $response_body['refresh_token'] ) ) { + $this->refresh_token = $response_body['refresh_token']; + } else { + $this->refresh_token = null; + } + } + + $this->save_data(); + + return $response; + } + + protected function refresh_token() { + $endpoint = add_query_arg( + array( + 'refresh_token' => $this->refresh_token, + 'grant_type' => 'refresh_token', + ), + $this->token_endpoint + ); + + $request = array( + 'headers' => array( + 'Authorization' => $this->get_http_authorization_header( 'basic' ), + ), + ); + + $response = wp_remote_post( esc_url_raw( $endpoint ), $request ); + $response_code = (int) wp_remote_retrieve_response_code( $response ); + $response_body = wp_remote_retrieve_body( $response ); + $response_body = json_decode( $response_body, true ); + + if ( WP_DEBUG and 400 <= $response_code ) { + $this->log( $endpoint, $request, $response ); + } + + if ( 401 == $response_code ) { // Unauthorized + $this->access_token = null; + $this->refresh_token = null; + } else { + if ( isset( $response_body['access_token'] ) ) { + $this->access_token = $response_body['access_token']; + } else { + $this->access_token = null; + } + + if ( isset( $response_body['refresh_token'] ) ) { + $this->refresh_token = $response_body['refresh_token']; + } + } + + $this->save_data(); + + return $response; + } + + protected function remote_request( $url, $request = array() ) { + static $refreshed = false; + + $request = wp_parse_args( $request, array() ); + + $request['headers'] = array_merge( + $request['headers'], + array( + 'Authorization' => $this->get_http_authorization_header( 'bearer' ), + ) + ); + + $response = wp_remote_request( esc_url_raw( $url ), $request ); + + if ( 401 === wp_remote_retrieve_response_code( $response ) + and ! $refreshed ) { + $this->refresh_token(); + $refreshed = true; + + $response = $this->remote_request( $url, $request ); + } + + return $response; + } + + protected function log( $url, $request, $response ) { + wpcf7_log_remote_request( $url, $request, $response ); + } + +} diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..2991f73b53a86020697e763e84bb14134373ab4f GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F1SA+{?>A)!QcOwS?k)_>#w|r1Kptm-M`SUO z_5fqIli7AahM1>|V~EA+ zRdP`(kYX@0Ff`RQFxE9R3^A~mdKI;Vst08!;J@Bjb+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..eacaf6097fd1878572eeff4745c57c36002193fb GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F2qYNp$opRhQcOwS?k)_Bce{j_0C}7R9+AaB z+5?Q;PG;Ky8A6^ejv*T7lYj6t@hpC#;TbB#aBAWwna#KLs)4eqC9V-ADTyViR>?)F zK#IZ0z|d6Jz*yJNFvP&Z%EZ#j1jseFGB7ZRW?g}zAvZrIGp!Q021mBNB0vocp00i_ I>zopr0HmQZ)Bpeg literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..a7d19c4650936e08203b694e70d3bc7ea88ab4d1 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fCnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12TF&T^vI^j=w#x$i?I+((tf;UXnmgbH|3oY>pC!)f}(GR!16S-u+#{ ze6YEqRkW=8vGl=5qArKM<9}TC-}iEvB{zdaTcX5$wyRTK&ALlzw{7+6@DSX!9?x#m^|1_sfrD^N7#=BH$)RpQp*$hKDmsDZ)L)z4*} HQ$iB}!UQpp literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..bf5c20d03d8afe83c1b735631339d597a6eeb185 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)z#PD=+46!(!T=8puqDZgOs>RXUCGx5b?-VBQkUm|IuXOmYJrBRJgj{Vx zMbNnqUkncy+qa2-mWYc>swkcIuvGK#>(0d)B7)5f`@$Ei28nH~0h*~=;u=wsl30>z zm0Xkxq!^403{7FVdQ&MBb@02-A{*8l(j literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..3e4e6ec2bfda1cafbbaeb71fd7a4b74315463913 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)z#PD=+46!(!TrvH)L6@80)r*_cdCvDr%)6ghVL16=s@mbz7H!uRdGeDa z?kzLg)16i!f8fKx84s0>4OyvLo literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f3392c25fce456826933436aab9f3218be614b GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fCnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12VciT^vI^j=w#>k(V)1qW$CZ|6)SVV-&*#dav<$DMuV&n0Dbpw@alzw{7+6@DSX!9?x#m^|1_sfr fD^N7#=BH$)RpQp*$hKDmsDZ)L)z4*}Q$iB}cYtxs literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..0071c4d836daf706bd99c966af94f2aa79b8e04f GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)z$cXZEaSV~ToLo`U+vu0Ue0cG9p8hWqa?gxxGLm=1A1u)Cewe3oSeCaf zI$k30UHXoTXA5lSJe(zTcE%W-S*bfB&J`pw9sa4-R?IGW?p~6`>jMSP&M+u3 zY@9al)zrvpHlQu4C9V-ADTyViR>?)FK#IZ0z|d6Jz*yJNFvP&Z%EZ#j1jseFGB7ZR gW?g}zAvZrIGp!Q021mBNB0vocp00i_>zopr0PsXuz5oCK literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..82fad68f5f7131d7d06c0f8999c511e6d65d67fb GIT binary patch literal 6922 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..429489e65df2b9304e7ce7f5a5a3c1a5d116ed8a GIT binary patch literal 4549 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 L(onln6Z7OhJ=b#J literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..2df913276a785150ff81f1127a7ff6bb7dfafc87 GIT binary patch literal 6992 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 KG^^CnPyYjZwJJ;i literal 0 HcmV?d00001 diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/jquery-ui.css b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/jquery-ui.css new file mode 100644 index 0000000..1c22746 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/jquery-ui.css @@ -0,0 +1,1225 @@ +/*! jQuery UI - v1.11.4 - 2015-03-11 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin: 2px 0 0 0; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ + font-size: 100%; +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + overflow: hidden; + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + position: absolute; +} +.ui-menu .ui-menu-item { + position: relative; + margin: 0; + padding: 3px 1em 3px .4em; + cursor: pointer; + min-height: 0; /* support: IE7 */ + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} +.ui-menu .ui-menu-divider { + margin: 5px 0; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: -1px; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item { + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,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"); + height: 100%; + filter: alpha(opacity=25); /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + /* Support: IE7 */ + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-button { + display: inline-block; + overflow: hidden; + position: relative; + text-decoration: none; + cursor: pointer; +} +.ui-selectmenu-button span.ui-icon { + right: 0.5em; + left: auto; + margin-top: -8px; + position: absolute; + top: 50%; +} +.ui-selectmenu-button span.ui-selectmenu-text { + text-align: left; + padding: 0.4em 2.1em 0.4em 1em; + display: block; + line-height: 1.4; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* support: IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertically center icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa; + background: #ffffff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border: 1px solid #aaaaaa; + background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; + background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_222222_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_222222_256x240.png"); +} +.ui-state-default .ui-icon { + background-image: url("images/ui-icons_888888_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url("images/ui-icons_454545_256x240.png"); +} +.ui-state-active .ui-icon { + background-image: url("images/ui-icons_454545_256x240.png"); +} +.ui-state-highlight .ui-icon { + background-image: url("images/ui-icons_2e83ff_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_cd0a0a_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ + border-radius: 8px; +} diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css new file mode 100644 index 0000000..f2903ea --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/jquery-ui.min.css @@ -0,0 +1,7 @@ +/*! jQuery UI - v1.11.4 - 2015-03-11 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/theme.css b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/theme.css new file mode 100755 index 0000000..47cb233 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/js/jquery-ui/themes/smoothness/theme.css @@ -0,0 +1,410 @@ +/*! + * jQuery UI CSS Framework 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/category/theming/ + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa; + background: #ffffff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border: 1px solid #aaaaaa; + background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; + background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_222222_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_222222_256x240.png"); +} +.ui-state-default .ui-icon { + background-image: url("images/ui-icons_888888_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url("images/ui-icons_454545_256x240.png"); +} +.ui-state-active .ui-icon { + background-image: url("images/ui-icons_454545_256x240.png"); +} +.ui-state-highlight .ui-icon { + background-image: url("images/ui-icons_2e83ff_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_cd0a0a_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ + border-radius: 8px; +} diff --git a/wp-content/plugins/contact-form-7/includes/js/scripts.js b/wp-content/plugins/contact-form-7/includes/js/scripts.js new file mode 100644 index 0000000..f8faddd --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/js/scripts.js @@ -0,0 +1,526 @@ +( function( $ ) { + + 'use strict'; + + if ( typeof wpcf7 === 'undefined' || wpcf7 === null ) { + return; + } + + wpcf7 = $.extend( { + cached: 0, + inputs: [] + }, wpcf7 ); + + $( function() { + wpcf7.supportHtml5 = ( function() { + var features = {}; + var input = document.createElement( 'input' ); + + features.placeholder = 'placeholder' in input; + + var inputTypes = [ 'email', 'url', 'tel', 'number', 'range', 'date' ]; + + $.each( inputTypes, function( index, value ) { + input.setAttribute( 'type', value ); + features[ value ] = input.type !== 'text'; + } ); + + return features; + } )(); + + $( 'div.wpcf7 > form' ).each( function() { + var $form = $( this ); + wpcf7.initForm( $form ); + + if ( wpcf7.cached ) { + wpcf7.refill( $form ); + } + } ); + } ); + + wpcf7.getId = function( form ) { + return parseInt( $( 'input[name="_wpcf7"]', form ).val(), 10 ); + }; + + wpcf7.initForm = function( form ) { + var $form = $( form ); + + $form.submit( function( event ) { + if ( ! wpcf7.supportHtml5.placeholder ) { + $( '[placeholder].placeheld', $form ).each( function( i, n ) { + $( n ).val( '' ).removeClass( 'placeheld' ); + } ); + } + + if ( typeof window.FormData === 'function' ) { + wpcf7.submit( $form ); + event.preventDefault(); + } + } ); + + $( '.wpcf7-submit', $form ).after( '' ); + + wpcf7.toggleSubmit( $form ); + + $form.on( 'click', '.wpcf7-acceptance', function() { + wpcf7.toggleSubmit( $form ); + } ); + + // Exclusive Checkbox + $( '.wpcf7-exclusive-checkbox', $form ).on( 'click', 'input:checkbox', function() { + var name = $( this ).attr( 'name' ); + $form.find( 'input:checkbox[name="' + name + '"]' ).not( this ).prop( 'checked', false ); + } ); + + // Free Text Option for Checkboxes and Radio Buttons + $( '.wpcf7-list-item.has-free-text', $form ).each( function() { + var $freetext = $( ':input.wpcf7-free-text', this ); + var $wrap = $( this ).closest( '.wpcf7-form-control' ); + + if ( $( ':checkbox, :radio', this ).is( ':checked' ) ) { + $freetext.prop( 'disabled', false ); + } else { + $freetext.prop( 'disabled', true ); + } + + $wrap.on( 'change', ':checkbox, :radio', function() { + var $cb = $( '.has-free-text', $wrap ).find( ':checkbox, :radio' ); + + if ( $cb.is( ':checked' ) ) { + $freetext.prop( 'disabled', false ).focus(); + } else { + $freetext.prop( 'disabled', true ); + } + } ); + } ); + + // Placeholder Fallback + if ( ! wpcf7.supportHtml5.placeholder ) { + $( '[placeholder]', $form ).each( function() { + $( this ).val( $( this ).attr( 'placeholder' ) ); + $( this ).addClass( 'placeheld' ); + + $( this ).focus( function() { + if ( $( this ).hasClass( 'placeheld' ) ) { + $( this ).val( '' ).removeClass( 'placeheld' ); + } + } ); + + $( this ).blur( function() { + if ( '' === $( this ).val() ) { + $( this ).val( $( this ).attr( 'placeholder' ) ); + $( this ).addClass( 'placeheld' ); + } + } ); + } ); + } + + if ( wpcf7.jqueryUi && ! wpcf7.supportHtml5.date ) { + $form.find( 'input.wpcf7-date[type="date"]' ).each( function() { + $( this ).datepicker( { + dateFormat: 'yy-mm-dd', + minDate: new Date( $( this ).attr( 'min' ) ), + maxDate: new Date( $( this ).attr( 'max' ) ) + } ); + } ); + } + + if ( wpcf7.jqueryUi && ! wpcf7.supportHtml5.number ) { + $form.find( 'input.wpcf7-number[type="number"]' ).each( function() { + $( this ).spinner( { + min: $( this ).attr( 'min' ), + max: $( this ).attr( 'max' ), + step: $( this ).attr( 'step' ) + } ); + } ); + } + + // Character Count + $( '.wpcf7-character-count', $form ).each( function() { + var $count = $( this ); + var name = $count.attr( 'data-target-name' ); + var down = $count.hasClass( 'down' ); + var starting = parseInt( $count.attr( 'data-starting-value' ), 10 ); + var maximum = parseInt( $count.attr( 'data-maximum-value' ), 10 ); + var minimum = parseInt( $count.attr( 'data-minimum-value' ), 10 ); + + var updateCount = function( target ) { + var $target = $( target ); + var length = $target.val().length; + var count = down ? starting - length : length; + $count.attr( 'data-current-value', count ); + $count.text( count ); + + if ( maximum && maximum < length ) { + $count.addClass( 'too-long' ); + } else { + $count.removeClass( 'too-long' ); + } + + if ( minimum && length < minimum ) { + $count.addClass( 'too-short' ); + } else { + $count.removeClass( 'too-short' ); + } + }; + + $( ':input[name="' + name + '"]', $form ).each( function() { + updateCount( this ); + + $( this ).keyup( function() { + updateCount( this ); + } ); + } ); + } ); + + // URL Input Correction + $form.on( 'change', '.wpcf7-validates-as-url', function() { + var val = $.trim( $( this ).val() ); + + if ( val + && ! val.match( /^[a-z][a-z0-9.+-]*:/i ) + && -1 !== val.indexOf( '.' ) ) { + val = val.replace( /^\/+/, '' ); + val = 'http://' + val; + } + + $( this ).val( val ); + } ); + }; + + wpcf7.submit = function( form ) { + if ( typeof window.FormData !== 'function' ) { + return; + } + + var $form = $( form ); + + $( '.ajax-loader', $form ).addClass( 'is-active' ); + + wpcf7.clearResponse( $form ); + + var formData = new FormData( $form.get( 0 ) ); + + var detail = { + id: $form.closest( 'div.wpcf7' ).attr( 'id' ), + status: 'init', + inputs: [], + formData: formData + }; + + $.each( $form.serializeArray(), function( i, field ) { + if ( '_wpcf7' == field.name ) { + detail.contactFormId = field.value; + } else if ( '_wpcf7_version' == field.name ) { + detail.pluginVersion = field.value; + } else if ( '_wpcf7_locale' == field.name ) { + detail.contactFormLocale = field.value; + } else if ( '_wpcf7_unit_tag' == field.name ) { + detail.unitTag = field.value; + } else if ( '_wpcf7_container_post' == field.name ) { + detail.containerPostId = field.value; + } else if ( field.name.match( /^_wpcf7_\w+_free_text_/ ) ) { + var owner = field.name.replace( /^_wpcf7_\w+_free_text_/, '' ); + detail.inputs.push( { + name: owner + '-free-text', + value: field.value + } ); + } else if ( field.name.match( /^_/ ) ) { + // do nothing + } else { + detail.inputs.push( field ); + } + } ); + + wpcf7.triggerEvent( $form.closest( 'div.wpcf7' ), 'beforesubmit', detail ); + + var ajaxSuccess = function( data, status, xhr, $form ) { + detail.id = $( data.into ).attr( 'id' ); + detail.status = data.status; + detail.apiResponse = data; + + var $message = $( '.wpcf7-response-output', $form ); + + switch ( data.status ) { + case 'validation_failed': + $.each( data.invalidFields, function( i, n ) { + $( n.into, $form ).each( function() { + wpcf7.notValidTip( this, n.message ); + $( '.wpcf7-form-control', this ).addClass( 'wpcf7-not-valid' ); + $( '[aria-invalid]', this ).attr( 'aria-invalid', 'true' ); + } ); + } ); + + $message.addClass( 'wpcf7-validation-errors' ); + $form.addClass( 'invalid' ); + + wpcf7.triggerEvent( data.into, 'invalid', detail ); + break; + case 'acceptance_missing': + $message.addClass( 'wpcf7-acceptance-missing' ); + $form.addClass( 'unaccepted' ); + + wpcf7.triggerEvent( data.into, 'unaccepted', detail ); + break; + case 'spam': + $message.addClass( 'wpcf7-spam-blocked' ); + $form.addClass( 'spam' ); + + wpcf7.triggerEvent( data.into, 'spam', detail ); + break; + case 'aborted': + $message.addClass( 'wpcf7-aborted' ); + $form.addClass( 'aborted' ); + + wpcf7.triggerEvent( data.into, 'aborted', detail ); + break; + case 'mail_sent': + $message.addClass( 'wpcf7-mail-sent-ok' ); + $form.addClass( 'sent' ); + + wpcf7.triggerEvent( data.into, 'mailsent', detail ); + break; + case 'mail_failed': + $message.addClass( 'wpcf7-mail-sent-ng' ); + $form.addClass( 'failed' ); + + wpcf7.triggerEvent( data.into, 'mailfailed', detail ); + break; + default: + var customStatusClass = 'custom-' + + data.status.replace( /[^0-9a-z]+/i, '-' ); + $message.addClass( 'wpcf7-' + customStatusClass ); + $form.addClass( customStatusClass ); + } + + wpcf7.refill( $form, data ); + + wpcf7.triggerEvent( data.into, 'submit', detail ); + + if ( 'mail_sent' == data.status ) { + $form.each( function() { + this.reset(); + } ); + + wpcf7.toggleSubmit( $form ); + } + + if ( ! wpcf7.supportHtml5.placeholder ) { + $form.find( '[placeholder].placeheld' ).each( function( i, n ) { + $( n ).val( $( n ).attr( 'placeholder' ) ); + } ); + } + + $message.html( '' ).append( data.message ).slideDown( 'fast' ); + $message.attr( 'role', 'alert' ); + + $( '.screen-reader-response', $form.closest( '.wpcf7' ) ).each( function() { + var $response = $( this ); + $response.html( '' ).attr( 'role', '' ).append( data.message ); + + if ( data.invalidFields ) { + var $invalids = $( '
                        ' ); + + $.each( data.invalidFields, function( i, n ) { + if ( n.idref ) { + var $li = $( '
                      • ' ).append( $( '' ).attr( 'href', '#' + n.idref ).append( n.message ) ); + } else { + var $li = $( '
                      • ' ).append( n.message ); + } + + $invalids.append( $li ); + } ); + + $response.append( $invalids ); + } + + $response.attr( 'role', 'alert' ).focus(); + } ); + }; + + $.ajax( { + type: 'POST', + url: wpcf7.apiSettings.getRoute( + '/contact-forms/' + wpcf7.getId( $form ) + '/feedback' ), + data: formData, + dataType: 'json', + processData: false, + contentType: false + } ).done( function( data, status, xhr ) { + ajaxSuccess( data, status, xhr, $form ); + $( '.ajax-loader', $form ).removeClass( 'is-active' ); + } ).fail( function( xhr, status, error ) { + var $e = $( '
                        ' ).text( error.message ); + $form.after( $e ); + } ); + }; + + wpcf7.triggerEvent = function( target, name, detail ) { + var $target = $( target ); + + /* DOM event */ + var event = new CustomEvent( 'wpcf7' + name, { + bubbles: true, + detail: detail + } ); + + $target.get( 0 ).dispatchEvent( event ); + + /* jQuery event */ + $target.trigger( 'wpcf7:' + name, detail ); + $target.trigger( name + '.wpcf7', detail ); // deprecated + }; + + wpcf7.toggleSubmit = function( form, state ) { + var $form = $( form ); + var $submit = $( 'input:submit', $form ); + + if ( typeof state !== 'undefined' ) { + $submit.prop( 'disabled', ! state ); + return; + } + + if ( $form.hasClass( 'wpcf7-acceptance-as-validation' ) ) { + return; + } + + $submit.prop( 'disabled', false ); + + $( '.wpcf7-acceptance', $form ).each( function() { + var $span = $( this ); + var $input = $( 'input:checkbox', $span ); + + if ( ! $span.hasClass( 'optional' ) ) { + if ( $span.hasClass( 'invert' ) && $input.is( ':checked' ) + || ! $span.hasClass( 'invert' ) && ! $input.is( ':checked' ) ) { + $submit.prop( 'disabled', true ); + return false; + } + } + } ); + }; + + wpcf7.notValidTip = function( target, message ) { + var $target = $( target ); + $( '.wpcf7-not-valid-tip', $target ).remove(); + $( '' ) + .text( message ).appendTo( $target ); + + if ( $target.is( '.use-floating-validation-tip *' ) ) { + var fadeOut = function( target ) { + $( target ).not( ':hidden' ).animate( { + opacity: 0 + }, 'fast', function() { + $( this ).css( { 'z-index': -100 } ); + } ); + }; + + $target.on( 'mouseover', '.wpcf7-not-valid-tip', function() { + fadeOut( this ); + } ); + + $target.on( 'focus', ':input', function() { + fadeOut( $( '.wpcf7-not-valid-tip', $target ) ); + } ); + } + }; + + wpcf7.refill = function( form, data ) { + var $form = $( form ); + + var refillCaptcha = function( $form, items ) { + $.each( items, function( i, n ) { + $form.find( ':input[name="' + i + '"]' ).val( '' ); + $form.find( 'img.wpcf7-captcha-' + i ).attr( 'src', n ); + var match = /([0-9]+)\.(png|gif|jpeg)$/.exec( n ); + $form.find( 'input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]' ).attr( 'value', match[ 1 ] ); + } ); + }; + + var refillQuiz = function( $form, items ) { + $.each( items, function( i, n ) { + $form.find( ':input[name="' + i + '"]' ).val( '' ); + $form.find( ':input[name="' + i + '"]' ).siblings( 'span.wpcf7-quiz-label' ).text( n[ 0 ] ); + $form.find( 'input:hidden[name="_wpcf7_quiz_answer_' + i + '"]' ).attr( 'value', n[ 1 ] ); + } ); + }; + + if ( typeof data === 'undefined' ) { + $.ajax( { + type: 'GET', + url: wpcf7.apiSettings.getRoute( + '/contact-forms/' + wpcf7.getId( $form ) + '/refill' ), + beforeSend: function( xhr ) { + var nonce = $form.find( ':input[name="_wpnonce"]' ).val(); + + if ( nonce ) { + xhr.setRequestHeader( 'X-WP-Nonce', nonce ); + } + }, + dataType: 'json' + } ).done( function( data, status, xhr ) { + if ( data.captcha ) { + refillCaptcha( $form, data.captcha ); + } + + if ( data.quiz ) { + refillQuiz( $form, data.quiz ); + } + } ); + + } else { + if ( data.captcha ) { + refillCaptcha( $form, data.captcha ); + } + + if ( data.quiz ) { + refillQuiz( $form, data.quiz ); + } + } + }; + + wpcf7.clearResponse = function( form ) { + var $form = $( form ); + $form.removeClass( 'invalid spam sent failed' ); + $form.siblings( '.screen-reader-response' ).html( '' ).attr( 'role', '' ); + + $( '.wpcf7-not-valid-tip', $form ).remove(); + $( '[aria-invalid]', $form ).attr( 'aria-invalid', 'false' ); + $( '.wpcf7-form-control', $form ).removeClass( 'wpcf7-not-valid' ); + + $( '.wpcf7-response-output', $form ) + .hide().empty().removeAttr( 'role' ) + .removeClass( 'wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked' ); + }; + + wpcf7.apiSettings.getRoute = function( path ) { + var url = wpcf7.apiSettings.root; + + url = url.replace( + wpcf7.apiSettings.namespace, + wpcf7.apiSettings.namespace + path ); + + return url; + }; + +} )( jQuery ); + +/* + * Polyfill for Internet Explorer + * See https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent + */ +( function () { + if ( typeof window.CustomEvent === "function" ) return false; + + function CustomEvent ( event, params ) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = document.createEvent( 'CustomEvent' ); + evt.initCustomEvent( event, + params.bubbles, params.cancelable, params.detail ); + return evt; + } + + CustomEvent.prototype = window.Event.prototype; + + window.CustomEvent = CustomEvent; +} )(); diff --git a/wp-content/plugins/contact-form-7/includes/l10n.php b/wp-content/plugins/contact-form-7/includes/l10n.php new file mode 100644 index 0000000..5026ef0 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/l10n.php @@ -0,0 +1,98 @@ + 'contact-form-7', + 'version' => WPCF7_VERSION, + ) ); + + if ( is_wp_error( $api ) + or empty( $api['translations'] ) ) { + return $l10n; + } + + foreach ( (array) $api['translations'] as $translation ) { + if ( ! empty( $translation['language'] ) + and ! empty( $translation['english_name'] ) ) { + $l10n[$translation['language']] = $translation['english_name']; + } + } + + return $l10n; +} + +function wpcf7_is_valid_locale( $locale ) { + $pattern = '/^[a-z]{2,3}(?:_[a-zA-Z_]{2,})?$/'; + return (bool) preg_match( $pattern, $locale ); +} + +function wpcf7_is_rtl( $locale = '' ) { + static $rtl_locales = array( + 'ar' => 'Arabic', + 'ary' => 'Moroccan Arabic', + 'azb' => 'South Azerbaijani', + 'fa_IR' => 'Persian', + 'haz' => 'Hazaragi', + 'he_IL' => 'Hebrew', + 'ps' => 'Pashto', + 'ug_CN' => 'Uighur', + ); + + if ( empty( $locale ) + and function_exists( 'is_rtl' ) ) { + return is_rtl(); + } + + if ( empty( $locale ) ) { + $locale = get_locale(); + } + + return isset( $rtl_locales[$locale] ); +} + +function wpcf7_load_textdomain( $locale = null ) { + global $l10n; + + $domain = 'contact-form-7'; + + if ( ( is_admin() ? get_user_locale() : get_locale() ) === $locale ) { + $locale = null; + } + + if ( empty( $locale ) ) { + if ( is_textdomain_loaded( $domain ) ) { + return true; + } else { + return load_plugin_textdomain( $domain, false, $domain . '/languages' ); + } + } else { + $mo_orig = $l10n[$domain]; + unload_textdomain( $domain ); + + $mofile = $domain . '-' . $locale . '.mo'; + $path = WP_PLUGIN_DIR . '/' . $domain . '/languages'; + + if ( $loaded = load_textdomain( $domain, $path . '/'. $mofile ) ) { + return $loaded; + } else { + $mofile = WP_LANG_DIR . '/plugins/' . $mofile; + return load_textdomain( $domain, $mofile ); + } + + $l10n[$domain] = $mo_orig; + } + + return false; +} diff --git a/wp-content/plugins/contact-form-7/includes/mail.php b/wp-content/plugins/contact-form-7/includes/mail.php new file mode 100644 index 0000000..0d9f01c --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/mail.php @@ -0,0 +1,448 @@ +compose(); + } + + private function __construct( $name, $template ) { + $this->name = trim( $name ); + $this->use_html = ! empty( $template['use_html'] ); + $this->exclude_blank = ! empty( $template['exclude_blank'] ); + + $this->template = wp_parse_args( $template, array( + 'subject' => '', + 'sender' => '', + 'body' => '', + 'recipient' => '', + 'additional_headers' => '', + 'attachments' => '', + ) ); + + if ( $submission = WPCF7_Submission::get_instance() ) { + $contact_form = $submission->get_contact_form(); + $this->locale = $contact_form->locale(); + } + } + + public function name() { + return $this->name; + } + + public function get( $component, $replace_tags = false ) { + $use_html = ( $this->use_html && 'body' == $component ); + $exclude_blank = ( $this->exclude_blank && 'body' == $component ); + + $template = $this->template; + $component = isset( $template[$component] ) ? $template[$component] : ''; + + if ( $replace_tags ) { + $component = $this->replace_tags( $component, array( + 'html' => $use_html, + 'exclude_blank' => $exclude_blank, + ) ); + + if ( $use_html + and ! preg_match( '%\s].*%is', $component ) ) { + $component = $this->htmlize( $component ); + } + } + + return $component; + } + + private function htmlize( $body ) { + if ( $this->locale ) { + $lang_atts = sprintf( ' %s', + wpcf7_format_atts( array( + 'dir' => wpcf7_is_rtl( $this->locale ) ? 'rtl' : 'ltr', + 'lang' => str_replace( '_', '-', $this->locale ), + ) ) + ); + } else { + $lang_atts = ''; + } + + $header = apply_filters( 'wpcf7_mail_html_header', + ' + + +' . esc_html( $this->get( 'subject', true ) ) . ' + + +', $this ); + + $footer = apply_filters( 'wpcf7_mail_html_footer', + ' +', $this ); + + $html = $header . wpautop( $body ) . $footer; + return $html; + } + + private function compose( $send = true ) { + $components = array( + 'subject' => $this->get( 'subject', true ), + 'sender' => $this->get( 'sender', true ), + 'body' => $this->get( 'body', true ), + 'recipient' => $this->get( 'recipient', true ), + 'additional_headers' => $this->get( 'additional_headers', true ), + 'attachments' => $this->attachments(), + ); + + $components = apply_filters( 'wpcf7_mail_components', + $components, wpcf7_get_current_contact_form(), $this ); + + if ( ! $send ) { + return $components; + } + + $subject = wpcf7_strip_newline( $components['subject'] ); + $sender = wpcf7_strip_newline( $components['sender'] ); + $recipient = wpcf7_strip_newline( $components['recipient'] ); + $body = $components['body']; + $additional_headers = trim( $components['additional_headers'] ); + $attachments = $components['attachments']; + + $headers = "From: $sender\n"; + + if ( $this->use_html ) { + $headers .= "Content-Type: text/html\n"; + $headers .= "X-WPCF7-Content-Type: text/html\n"; + } else { + $headers .= "X-WPCF7-Content-Type: text/plain\n"; + } + + if ( $additional_headers ) { + $headers .= $additional_headers . "\n"; + } + + return wp_mail( $recipient, $subject, $body, $headers, $attachments ); + } + + public function replace_tags( $content, $args = '' ) { + if ( true === $args ) { + $args = array( 'html' => true ); + } + + $args = wp_parse_args( $args, array( + 'html' => false, + 'exclude_blank' => false, + ) ); + + return wpcf7_mail_replace_tags( $content, $args ); + } + + private function attachments( $template = null ) { + if ( ! $template ) { + $template = $this->get( 'attachments' ); + } + + $attachments = array(); + + if ( $submission = WPCF7_Submission::get_instance() ) { + $uploaded_files = $submission->uploaded_files(); + + foreach ( (array) $uploaded_files as $name => $path ) { + if ( false !== strpos( $template, "[${name}]" ) + and ! empty( $path ) ) { + $attachments[] = $path; + } + } + } + + foreach ( explode( "\n", $template ) as $line ) { + $line = trim( $line ); + + if ( '[' == substr( $line, 0, 1 ) ) { + continue; + } + + $path = path_join( WP_CONTENT_DIR, $line ); + + if ( ! wpcf7_is_file_path_in_content_dir( $path ) ) { + // $path is out of WP_CONTENT_DIR + continue; + } + + if ( is_readable( $path ) + and is_file( $path ) ) { + $attachments[] = $path; + } + } + + return $attachments; + } +} + +function wpcf7_mail_replace_tags( $content, $args = '' ) { + $args = wp_parse_args( $args, array( + 'html' => false, + 'exclude_blank' => false, + ) ); + + if ( is_array( $content ) ) { + foreach ( $content as $key => $value ) { + $content[$key] = wpcf7_mail_replace_tags( $value, $args ); + } + + return $content; + } + + $content = explode( "\n", $content ); + + foreach ( $content as $num => $line ) { + $line = new WPCF7_MailTaggedText( $line, $args ); + $replaced = $line->replace_tags(); + + if ( $args['exclude_blank'] ) { + $replaced_tags = $line->get_replaced_tags(); + + if ( empty( $replaced_tags ) + or array_filter( $replaced_tags, 'strlen' ) ) { + $content[$num] = $replaced; + } else { + unset( $content[$num] ); // Remove a line. + } + } else { + $content[$num] = $replaced; + } + } + + $content = implode( "\n", $content ); + + return $content; +} + +add_action( 'phpmailer_init', 'wpcf7_phpmailer_init', 10, 1 ); + +function wpcf7_phpmailer_init( $phpmailer ) { + $custom_headers = $phpmailer->getCustomHeaders(); + $phpmailer->clearCustomHeaders(); + $wpcf7_content_type = false; + + foreach ( (array) $custom_headers as $custom_header ) { + $name = $custom_header[0]; + $value = $custom_header[1]; + + if ( 'X-WPCF7-Content-Type' === $name ) { + $wpcf7_content_type = trim( $value ); + } else { + $phpmailer->addCustomHeader( $name, $value ); + } + } + + if ( 'text/html' === $wpcf7_content_type ) { + $phpmailer->msgHTML( $phpmailer->Body ); + } elseif ( 'text/plain' === $wpcf7_content_type ) { + $phpmailer->AltBody = ''; + } +} + +class WPCF7_MailTaggedText { + + private $html = false; + private $callback = null; + private $content = ''; + private $replaced_tags = array(); + + public function __construct( $content, $args = '' ) { + $args = wp_parse_args( $args, array( + 'html' => false, + 'callback' => null, + ) ); + + $this->html = (bool) $args['html']; + + if ( null !== $args['callback'] + and is_callable( $args['callback'] ) ) { + $this->callback = $args['callback']; + } elseif ( $this->html ) { + $this->callback = array( $this, 'replace_tags_callback_html' ); + } else { + $this->callback = array( $this, 'replace_tags_callback' ); + } + + $this->content = $content; + } + + public function get_replaced_tags() { + return $this->replaced_tags; + } + + public function replace_tags() { + $regex = '/(\[?)\[[\t ]*' + . '([a-zA-Z_][0-9a-zA-Z:._-]*)' // [2] = name + . '((?:[\t ]+"[^"]*"|[\t ]+\'[^\']*\')*)' // [3] = values + . '[\t ]*\](\]?)/'; + + return preg_replace_callback( $regex, $this->callback, $this->content ); + } + + private function replace_tags_callback_html( $matches ) { + return $this->replace_tags_callback( $matches, true ); + } + + private function replace_tags_callback( $matches, $html = false ) { + // allow [[foo]] syntax for escaping a tag + if ( $matches[1] == '[' + and $matches[4] == ']' ) { + return substr( $matches[0], 1, -1 ); + } + + $tag = $matches[0]; + $tagname = $matches[2]; + $values = $matches[3]; + + $mail_tag = new WPCF7_MailTag( $tag, $tagname, $values ); + $field_name = $mail_tag->field_name(); + + $submission = WPCF7_Submission::get_instance(); + $submitted = $submission + ? $submission->get_posted_data( $field_name ) + : null; + + if ( null !== $submitted ) { + + if ( $mail_tag->get_option( 'do_not_heat' ) ) { + $submitted = isset( $_POST[$field_name] ) ? $_POST[$field_name] : ''; + } + + $replaced = $submitted; + + if ( $format = $mail_tag->get_option( 'format' ) ) { + $replaced = $this->format( $replaced, $format ); + } + + $replaced = wpcf7_flat_join( $replaced ); + + if ( $html ) { + $replaced = esc_html( $replaced ); + $replaced = wptexturize( $replaced ); + } + + if ( $form_tag = $mail_tag->corresponding_form_tag() ) { + $type = $form_tag->type; + + $replaced = apply_filters( + "wpcf7_mail_tag_replaced_{$type}", $replaced, + $submitted, $html, $mail_tag ); + } + + $replaced = apply_filters( 'wpcf7_mail_tag_replaced', $replaced, + $submitted, $html, $mail_tag ); + + $replaced = wp_unslash( trim( $replaced ) ); + + $this->replaced_tags[$tag] = $replaced; + return $replaced; + } + + $special = apply_filters( 'wpcf7_special_mail_tags', null, + $mail_tag->tag_name(), $html, $mail_tag ); + + if ( null !== $special ) { + $this->replaced_tags[$tag] = $special; + return $special; + } + + return $tag; + } + + public function format( $original, $format ) { + $original = (array) $original; + + foreach ( $original as $key => $value ) { + if ( preg_match( '/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $value ) ) { + $original[$key] = mysql2date( $format, $value ); + } + } + + return $original; + } +} + +class WPCF7_MailTag { + + private $tag; + private $tagname = ''; + private $name = ''; + private $options = array(); + private $values = array(); + private $form_tag = null; + + public function __construct( $tag, $tagname, $values ) { + $this->tag = $tag; + $this->name = $this->tagname = $tagname; + + $this->options = array( + 'do_not_heat' => false, + 'format' => '', + ); + + if ( ! empty( $values ) ) { + preg_match_all( '/"[^"]*"|\'[^\']*\'/', $values, $matches ); + $this->values = wpcf7_strip_quote_deep( $matches[0] ); + } + + if ( preg_match( '/^_raw_(.+)$/', $tagname, $matches ) ) { + $this->name = trim( $matches[1] ); + $this->options['do_not_heat'] = true; + } + + if ( preg_match( '/^_format_(.+)$/', $tagname, $matches ) ) { + $this->name = trim( $matches[1] ); + $this->options['format'] = $this->values[0]; + } + } + + public function tag_name() { + return $this->tagname; + } + + public function field_name() { + return $this->name; + } + + public function get_option( $option ) { + return $this->options[$option]; + } + + public function values() { + return $this->values; + } + + public function corresponding_form_tag() { + if ( $this->form_tag instanceof WPCF7_FormTag ) { + return $this->form_tag; + } + + if ( $submission = WPCF7_Submission::get_instance() ) { + $contact_form = $submission->get_contact_form(); + $tags = $contact_form->scan_form_tags( array( + 'name' => $this->name, + 'feature' => '! zero-controls-container', + ) ); + + if ( $tags ) { + $this->form_tag = $tags[0]; + } + } + + return $this->form_tag; + } +} diff --git a/wp-content/plugins/contact-form-7/includes/pipe.php b/wp-content/plugins/contact-form-7/includes/pipe.php new file mode 100644 index 0000000..96eff54 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/pipe.php @@ -0,0 +1,78 @@ +before = $this->after = trim( $text ); + } else { + $this->before = trim( substr( $text, 0, $pipe_pos ) ); + $this->after = trim( substr( $text, $pipe_pos + 1 ) ); + } + } +} + +class WPCF7_Pipes { + + private $pipes = array(); + + public function __construct( array $texts ) { + foreach ( $texts as $text ) { + $this->add_pipe( $text ); + } + } + + private function add_pipe( $text ) { + $pipe = new WPCF7_Pipe( $text ); + $this->pipes[] = $pipe; + } + + public function do_pipe( $before ) { + foreach ( $this->pipes as $pipe ) { + if ( $pipe->before == $before ) { + return $pipe->after; + } + } + + return $before; + } + + public function collect_befores() { + $befores = array(); + + foreach ( $this->pipes as $pipe ) { + $befores[] = $pipe->before; + } + + return $befores; + } + + public function collect_afters() { + $afters = array(); + + foreach ( $this->pipes as $pipe ) { + $afters[] = $pipe->after; + } + + return $afters; + } + + public function zero() { + return empty( $this->pipes ); + } + + public function random_pipe() { + if ( $this->zero() ) { + return null; + } + + return $this->pipes[array_rand( $this->pipes )]; + } +} diff --git a/wp-content/plugins/contact-form-7/includes/rest-api.php b/wp-content/plugins/contact-form-7/includes/rest-api.php new file mode 100644 index 0000000..59da477 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/rest-api.php @@ -0,0 +1,323 @@ + WP_REST_Server::READABLE, + 'callback' => 'wpcf7_rest_get_contact_forms', + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => 'wpcf7_rest_create_contact_form', + ), + ) + ); + + register_rest_route( $namespace, + '/contact-forms/(?P\d+)', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => 'wpcf7_rest_get_contact_form', + ), + array( + 'methods' => WP_REST_Server::EDITABLE, + 'callback' => 'wpcf7_rest_update_contact_form', + ), + array( + 'methods' => WP_REST_Server::DELETABLE, + 'callback' => 'wpcf7_rest_delete_contact_form', + ), + ) + ); + + register_rest_route( $namespace, + '/contact-forms/(?P\d+)/feedback', + array( + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => 'wpcf7_rest_create_feedback', + ), + ) + ); + + register_rest_route( $namespace, + '/contact-forms/(?P\d+)/refill', + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => 'wpcf7_rest_get_refill', + ), + ) + ); +} + +function wpcf7_rest_get_contact_forms( WP_REST_Request $request ) { + if ( ! current_user_can( 'wpcf7_read_contact_forms' ) ) { + return new WP_Error( 'wpcf7_forbidden', + __( "You are not allowed to access contact forms.", 'contact-form-7' ), + array( 'status' => 403 ) ); + } + + $args = array(); + + $per_page = $request->get_param( 'per_page' ); + + if ( null !== $per_page ) { + $args['posts_per_page'] = (int) $per_page; + } + + $offset = $request->get_param( 'offset' ); + + if ( null !== $offset ) { + $args['offset'] = (int) $offset; + } + + $order = $request->get_param( 'order' ); + + if ( null !== $order ) { + $args['order'] = (string) $order; + } + + $orderby = $request->get_param( 'orderby' ); + + if ( null !== $orderby ) { + $args['orderby'] = (string) $orderby; + } + + $search = $request->get_param( 'search' ); + + if ( null !== $search ) { + $args['s'] = (string) $search; + } + + $items = WPCF7_ContactForm::find( $args ); + + $response = array(); + + foreach ( $items as $item ) { + $response[] = array( + 'id' => $item->id(), + 'slug' => $item->name(), + 'title' => $item->title(), + 'locale' => $item->locale(), + ); + } + + return rest_ensure_response( $response ); +} + +function wpcf7_rest_create_contact_form( WP_REST_Request $request ) { + $id = (int) $request->get_param( 'id' ); + + if ( $id ) { + return new WP_Error( 'wpcf7_post_exists', + __( "Cannot create existing contact form.", 'contact-form-7' ), + array( 'status' => 400 ) ); + } + + if ( ! current_user_can( 'wpcf7_edit_contact_forms' ) ) { + return new WP_Error( 'wpcf7_forbidden', + __( "You are not allowed to create a contact form.", 'contact-form-7' ), + array( 'status' => 403 ) ); + } + + $args = $request->get_params(); + $args['id'] = -1; // Create + $context = $request->get_param( 'context' ); + $item = wpcf7_save_contact_form( $args, $context ); + + if ( ! $item ) { + return new WP_Error( 'wpcf7_cannot_save', + __( "There was an error saving the contact form.", 'contact-form-7' ), + array( 'status' => 500 ) ); + } + + $response = array( + 'id' => $item->id(), + 'slug' => $item->name(), + 'title' => $item->title(), + 'locale' => $item->locale(), + 'properties' => $item->get_properties(), + 'config_errors' => array(), + ); + + if ( wpcf7_validate_configuration() ) { + $config_validator = new WPCF7_ConfigValidator( $item ); + $config_validator->validate(); + + $response['config_errors'] = $config_validator->collect_error_messages(); + + if ( 'save' == $context ) { + $config_validator->save(); + } + } + + return rest_ensure_response( $response ); +} + +function wpcf7_rest_get_contact_form( WP_REST_Request $request ) { + $id = (int) $request->get_param( 'id' ); + $item = wpcf7_contact_form( $id ); + + if ( ! $item ) { + return new WP_Error( 'wpcf7_not_found', + __( "The requested contact form was not found.", 'contact-form-7' ), + array( 'status' => 404 ) ); + } + + if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) { + return new WP_Error( 'wpcf7_forbidden', + __( "You are not allowed to access the requested contact form.", 'contact-form-7' ), + array( 'status' => 403 ) ); + } + + $response = array( + 'id' => $item->id(), + 'slug' => $item->name(), + 'title' => $item->title(), + 'locale' => $item->locale(), + 'properties' => $item->get_properties(), + ); + + return rest_ensure_response( $response ); +} + +function wpcf7_rest_update_contact_form( WP_REST_Request $request ) { + $id = (int) $request->get_param( 'id' ); + $item = wpcf7_contact_form( $id ); + + if ( ! $item ) { + return new WP_Error( 'wpcf7_not_found', + __( "The requested contact form was not found.", 'contact-form-7' ), + array( 'status' => 404 ) ); + } + + if ( ! current_user_can( 'wpcf7_edit_contact_form', $id ) ) { + return new WP_Error( 'wpcf7_forbidden', + __( "You are not allowed to access the requested contact form.", 'contact-form-7' ), + array( 'status' => 403 ) ); + } + + $args = $request->get_params(); + $context = $request->get_param( 'context' ); + $item = wpcf7_save_contact_form( $args, $context ); + + if ( ! $item ) { + return new WP_Error( 'wpcf7_cannot_save', + __( "There was an error saving the contact form.", 'contact-form-7' ), + array( 'status' => 500 ) ); + } + + $response = array( + 'id' => $item->id(), + 'slug' => $item->name(), + 'title' => $item->title(), + 'locale' => $item->locale(), + 'properties' => $item->get_properties(), + 'config_errors' => array(), + ); + + if ( wpcf7_validate_configuration() ) { + $config_validator = new WPCF7_ConfigValidator( $item ); + $config_validator->validate(); + + $response['config_errors'] = $config_validator->collect_error_messages(); + + if ( 'save' == $context ) { + $config_validator->save(); + } + } + + return rest_ensure_response( $response ); +} + +function wpcf7_rest_delete_contact_form( WP_REST_Request $request ) { + $id = (int) $request->get_param( 'id' ); + $item = wpcf7_contact_form( $id ); + + if ( ! $item ) { + return new WP_Error( 'wpcf7_not_found', + __( "The requested contact form was not found.", 'contact-form-7' ), + array( 'status' => 404 ) ); + } + + if ( ! current_user_can( 'wpcf7_delete_contact_form', $id ) ) { + return new WP_Error( 'wpcf7_forbidden', + __( "You are not allowed to access the requested contact form.", 'contact-form-7' ), + array( 'status' => 403 ) ); + } + + $result = $item->delete(); + + if ( ! $result ) { + return new WP_Error( 'wpcf7_cannot_delete', + __( "There was an error deleting the contact form.", 'contact-form-7' ), + array( 'status' => 500 ) ); + } + + $response = array( 'deleted' => true ); + + return rest_ensure_response( $response ); +} + +function wpcf7_rest_create_feedback( WP_REST_Request $request ) { + $id = (int) $request->get_param( 'id' ); + $item = wpcf7_contact_form( $id ); + + if ( ! $item ) { + return new WP_Error( 'wpcf7_not_found', + __( "The requested contact form was not found.", 'contact-form-7' ), + array( 'status' => 404 ) ); + } + + $result = $item->submit(); + + $unit_tag = $request->get_param( '_wpcf7_unit_tag' ); + + $response = array( + 'into' => '#' . wpcf7_sanitize_unit_tag( $unit_tag ), + 'status' => $result['status'], + 'message' => $result['message'], + ); + + if ( 'validation_failed' == $result['status'] ) { + $invalid_fields = array(); + + foreach ( (array) $result['invalid_fields'] as $name => $field ) { + $invalid_fields[] = array( + 'into' => 'span.wpcf7-form-control-wrap.' + . sanitize_html_class( $name ), + 'message' => $field['reason'], + 'idref' => $field['idref'], + ); + } + + $response['invalidFields'] = $invalid_fields; + } + + $response = apply_filters( 'wpcf7_ajax_json_echo', $response, $result ); + + return rest_ensure_response( $response ); +} + +function wpcf7_rest_get_refill( WP_REST_Request $request ) { + $id = (int) $request->get_param( 'id' ); + $item = wpcf7_contact_form( $id ); + + if ( ! $item ) { + return new WP_Error( 'wpcf7_not_found', + __( "The requested contact form was not found.", 'contact-form-7' ), + array( 'status' => 404 ) ); + } + + $response = apply_filters( 'wpcf7_ajax_onload', array() ); + + return rest_ensure_response( $response ); +} diff --git a/wp-content/plugins/contact-form-7/includes/shortcodes.php b/wp-content/plugins/contact-form-7/includes/shortcodes.php new file mode 100644 index 0000000..f097ff4 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/shortcodes.php @@ -0,0 +1,101 @@ +get_scanned_tags(); + } + + public function add_shortcode( $tag, $func, $has_name = false ) { + wpcf7_deprecated_function( __METHOD__, '4.6', + 'WPCF7_FormTagsManager::add' ); + + return self::$form_tags_manager->add( $tag, $func, $has_name ); + } + + public function remove_shortcode( $tag ) { + wpcf7_deprecated_function( __METHOD__, '4.6', + 'WPCF7_FormTagsManager::remove' ); + + return self::$form_tags_manager->remove( $tag ); + } + + public function normalize_shortcode( $content ) { + wpcf7_deprecated_function( __METHOD__, '4.6', + 'WPCF7_FormTagsManager::normalize' ); + + return self::$form_tags_manager->normalize( $content ); + } + + public function do_shortcode( $content, $exec = true ) { + wpcf7_deprecated_function( __METHOD__, '4.6', + 'WPCF7_FormTagsManager::replace_all' ); + + if ( $exec ) { + return self::$form_tags_manager->replace_all( $content ); + } else { + return self::$form_tags_manager->scan( $content ); + } + } + + public function scan_shortcode( $content ) { + wpcf7_deprecated_function( __METHOD__, '4.6', + 'WPCF7_FormTagsManager::scan' ); + + return self::$form_tags_manager->scan( $content ); + } +} + +class WPCF7_Shortcode extends WPCF7_FormTag { + + public function __construct( $tag ) { + wpcf7_deprecated_function( 'WPCF7_Shortcode', '4.6', 'WPCF7_FormTag' ); + + parent::__construct( $tag ); + } +} diff --git a/wp-content/plugins/contact-form-7/includes/special-mail-tags.php b/wp-content/plugins/contact-form-7/includes/special-mail-tags.php new file mode 100644 index 0000000..b0188d7 --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/special-mail-tags.php @@ -0,0 +1,168 @@ +get_meta( 'remote_ip' ) ) { + return $remote_ip; + } else { + return ''; + } + } + + if ( '_user_agent' == $name ) { + if ( $user_agent = $submission->get_meta( 'user_agent' ) ) { + return $html ? esc_html( $user_agent ) : $user_agent; + } else { + return ''; + } + } + + if ( '_url' == $name ) { + if ( $url = $submission->get_meta( 'url' ) ) { + return esc_url( $url ); + } else { + return ''; + } + } + + if ( '_date' == $name + or '_time' == $name ) { + if ( $timestamp = $submission->get_meta( 'timestamp' ) ) { + if ( '_date' == $name ) { + return date_i18n( get_option( 'date_format' ), $timestamp ); + } + + if ( '_time' == $name ) { + return date_i18n( get_option( 'time_format' ), $timestamp ); + } + } + + return ''; + } + + if ( '_invalid_fields' == $name ) { + return count( $submission->get_invalid_fields() ); + } + + return $output; +} + +add_filter( 'wpcf7_special_mail_tags', 'wpcf7_post_related_smt', 10, 3 ); + +function wpcf7_post_related_smt( $output, $name, $html ) { + if ( '_post_' != substr( $name, 0, 6 ) ) { + return $output; + } + + $submission = WPCF7_Submission::get_instance(); + + if ( ! $submission ) { + return $output; + } + + $post_id = (int) $submission->get_meta( 'container_post_id' ); + + if ( ! $post_id + or ! $post = get_post( $post_id ) ) { + return ''; + } + + if ( '_post_id' == $name ) { + return (string) $post->ID; + } + + if ( '_post_name' == $name ) { + return $post->post_name; + } + + if ( '_post_title' == $name ) { + return $html ? esc_html( $post->post_title ) : $post->post_title; + } + + if ( '_post_url' == $name ) { + return get_permalink( $post->ID ); + } + + $user = new WP_User( $post->post_author ); + + if ( '_post_author' == $name ) { + return $user->display_name; + } + + if ( '_post_author_email' == $name ) { + return $user->user_email; + } + + return $output; +} + +add_filter( 'wpcf7_special_mail_tags', 'wpcf7_site_related_smt', 10, 3 ); + +function wpcf7_site_related_smt( $output, $name, $html ) { + $filter = $html ? 'display' : 'raw'; + + if ( '_site_title' == $name ) { + return get_bloginfo( 'name', $filter ); + } + + if ( '_site_description' == $name ) { + return get_bloginfo( 'description', $filter ); + } + + if ( '_site_url' == $name ) { + return get_bloginfo( 'url', $filter ); + } + + if ( '_site_admin_email' == $name ) { + return get_bloginfo( 'admin_email', $filter ); + } + + return $output; +} + +add_filter( 'wpcf7_special_mail_tags', 'wpcf7_user_related_smt', 10, 3 ); + +function wpcf7_user_related_smt( $output, $name, $html ) { + if ( '_user_' != substr( $name, 0, 6 ) + or '_user_agent' == $name ) { + return $output; + } + + $submission = WPCF7_Submission::get_instance(); + + if ( ! $submission ) { + return $output; + } + + $user_id = (int) $submission->get_meta( 'current_user_id' ); + + if ( ! $user_id ) { + return ''; + } + + $primary_props = array( 'user_login', 'user_email', 'user_url' ); + $opt = ltrim( $name, '_' ); + $opt = in_array( $opt, $primary_props ) ? $opt : substr( $opt, 5 ); + + $user = new WP_User( $user_id ); + + if ( $user->has_prop( $opt ) ) { + return $user->get( $opt ); + } + + return ''; +} diff --git a/wp-content/plugins/contact-form-7/includes/submission.php b/wp-content/plugins/contact-form-7/includes/submission.php new file mode 100644 index 0000000..1c991fb --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/submission.php @@ -0,0 +1,441 @@ + false, + ) ); + + if ( empty( self::$instance ) ) { + if ( null == $contact_form ) { + return null; + } + + self::$instance = new self; + self::$instance->contact_form = $contact_form; + self::$instance->skip_mail = (bool) $args['skip_mail']; + self::$instance->setup_posted_data(); + self::$instance->submit(); + } elseif ( null != $contact_form ) { + return null; + } + + return self::$instance; + } + + public static function is_restful() { + return defined( 'REST_REQUEST' ) && REST_REQUEST; + } + + public function get_status() { + return $this->status; + } + + public function set_status( $status ) { + if ( preg_match( '/^[a-z][0-9a-z_]+$/', $status ) ) { + $this->status = $status; + return true; + } + + return false; + } + + public function is( $status ) { + return $this->status == $status; + } + + public function get_response() { + return $this->response; + } + + public function set_response( $response ) { + $this->response = $response; + return true; + } + + public function get_contact_form() { + return $this->contact_form; + } + + public function get_invalid_field( $name ) { + if ( isset( $this->invalid_fields[$name] ) ) { + return $this->invalid_fields[$name]; + } else { + return false; + } + } + + public function get_invalid_fields() { + return $this->invalid_fields; + } + + public function get_posted_data( $name = '' ) { + if ( ! empty( $name ) ) { + if ( isset( $this->posted_data[$name] ) ) { + return $this->posted_data[$name]; + } else { + return null; + } + } + + return $this->posted_data; + } + + private function setup_posted_data() { + $posted_data = (array) $_POST; + $posted_data = array_diff_key( $posted_data, array( '_wpnonce' => '' ) ); + $posted_data = $this->sanitize_posted_data( $posted_data ); + + $tags = $this->contact_form->scan_form_tags(); + + foreach ( (array) $tags as $tag ) { + if ( empty( $tag->name ) ) { + continue; + } + + $type = $tag->type; + $name = $tag->name; + $pipes = $tag->pipes; + + $value_orig = $value = ''; + + if ( isset( $posted_data[$name] ) ) { + $value_orig = $value = $posted_data[$name]; + } + + if ( WPCF7_USE_PIPE + and $pipes instanceof WPCF7_Pipes + and ! $pipes->zero() ) { + if ( is_array( $value_orig ) ) { + $value = array(); + + foreach ( $value_orig as $v ) { + $value[] = $pipes->do_pipe( wp_unslash( $v ) ); + } + } else { + $value = $pipes->do_pipe( wp_unslash( $value_orig ) ); + } + } + + $value = apply_filters( "wpcf7_posted_data_{$type}", $value, + $value_orig, $tag ); + + $posted_data[$name] = $value; + + if ( $tag->has_option( 'consent_for:storage' ) + and empty( $posted_data[$name] ) ) { + $this->meta['do_not_store'] = true; + } + } + + $this->posted_data = apply_filters( 'wpcf7_posted_data', $posted_data ); + + return $this->posted_data; + } + + private function sanitize_posted_data( $value ) { + if ( is_array( $value ) ) { + $value = array_map( array( $this, 'sanitize_posted_data' ), $value ); + } elseif ( is_string( $value ) ) { + $value = wp_check_invalid_utf8( $value ); + $value = wp_kses_no_null( $value ); + } + + return $value; + } + + private function submit() { + if ( ! $this->is( 'init' ) ) { + return $this->status; + } + + $this->meta = array_merge( $this->meta, array( + 'remote_ip' => $this->get_remote_ip_addr(), + 'user_agent' => isset( $_SERVER['HTTP_USER_AGENT'] ) + ? substr( $_SERVER['HTTP_USER_AGENT'], 0, 254 ) : '', + 'url' => $this->get_request_url(), + 'timestamp' => current_time( 'timestamp' ), + 'unit_tag' => + isset( $_POST['_wpcf7_unit_tag'] ) ? $_POST['_wpcf7_unit_tag'] : '', + 'container_post_id' => isset( $_POST['_wpcf7_container_post'] ) + ? (int) $_POST['_wpcf7_container_post'] : 0, + 'current_user_id' => get_current_user_id(), + ) ); + + $contact_form = $this->contact_form; + + if ( $contact_form->is_true( 'do_not_store' ) ) { + $this->meta['do_not_store'] = true; + } + + if ( ! $this->validate() ) { // Validation error occured + $this->set_status( 'validation_failed' ); + $this->set_response( $contact_form->message( 'validation_error' ) ); + + } elseif ( ! $this->accepted() ) { // Not accepted terms + $this->set_status( 'acceptance_missing' ); + $this->set_response( $contact_form->message( 'accept_terms' ) ); + + } elseif ( $this->spam() ) { // Spam! + $this->set_status( 'spam' ); + $this->set_response( $contact_form->message( 'spam' ) ); + + } elseif ( ! $this->before_send_mail() ) { + if ( 'init' == $this->get_status() ) { + $this->set_status( 'aborted' ); + } + + if ( '' === $this->get_response() ) { + $this->set_response( $contact_form->filter_message( + __( "Sending mail has been aborted.", 'contact-form-7' ) ) + ); + } + + } elseif ( $this->mail() ) { + $this->set_status( 'mail_sent' ); + $this->set_response( $contact_form->message( 'mail_sent_ok' ) ); + + do_action( 'wpcf7_mail_sent', $contact_form ); + + } else { + $this->set_status( 'mail_failed' ); + $this->set_response( $contact_form->message( 'mail_sent_ng' ) ); + + do_action( 'wpcf7_mail_failed', $contact_form ); + } + + $this->remove_uploaded_files(); + + return $this->status; + } + + private function get_remote_ip_addr() { + $ip_addr = ''; + + if ( isset( $_SERVER['REMOTE_ADDR'] ) + and WP_Http::is_ip_address( $_SERVER['REMOTE_ADDR'] ) ) { + $ip_addr = $_SERVER['REMOTE_ADDR']; + } + + return apply_filters( 'wpcf7_remote_ip_addr', $ip_addr ); + } + + private function get_request_url() { + $home_url = untrailingslashit( home_url() ); + + if ( self::is_restful() ) { + $referer = isset( $_SERVER['HTTP_REFERER'] ) + ? trim( $_SERVER['HTTP_REFERER'] ) : ''; + + if ( $referer + and 0 === strpos( $referer, $home_url ) ) { + return esc_url_raw( $referer ); + } + } + + $url = preg_replace( '%(?invalid_fields ) { + return false; + } + + require_once WPCF7_PLUGIN_DIR . '/includes/validation.php'; + $result = new WPCF7_Validation(); + + $tags = $this->contact_form->scan_form_tags(); + + foreach ( $tags as $tag ) { + $type = $tag->type; + $result = apply_filters( "wpcf7_validate_{$type}", $result, $tag ); + } + + $result = apply_filters( 'wpcf7_validate', $result, $tags ); + + $this->invalid_fields = $result->get_invalid_fields(); + + return $result->is_valid(); + } + + private function accepted() { + return apply_filters( 'wpcf7_acceptance', true, $this ); + } + + public function add_consent( $name, $conditions ) { + $this->consent[$name] = $conditions; + return true; + } + + public function collect_consent() { + return (array) $this->consent; + } + + private function spam() { + $spam = false; + + if ( $this->contact_form->is_true( 'subscribers_only' ) + and current_user_can( 'wpcf7_submit', $this->contact_form->id() ) ) { + return $spam; + } + + $user_agent = (string) $this->get_meta( 'user_agent' ); + + if ( strlen( $user_agent ) < 2 ) { + $spam = true; + + $this->add_spam_log( array( + 'agent' => 'wpcf7', + 'reason' => __( "User-Agent string is unnaturally short.", 'contact-form-7' ), + ) ); + } + + if ( ! $this->verify_nonce() ) { + $spam = true; + + $this->add_spam_log( array( + 'agent' => 'wpcf7', + 'reason' => __( "Submitted nonce is invalid.", 'contact-form-7' ), + ) ); + } + + if ( $this->is_blacklisted() ) { + $spam = true; + + $this->add_spam_log( array( + 'agent' => 'wpcf7', + 'reason' => __( "Blacklisted words are used.", 'contact-form-7' ), + ) ); + } + + return apply_filters( 'wpcf7_spam', $spam ); + } + + public function add_spam_log( $args = '' ) { + $args = wp_parse_args( $args, array( + 'agent' => '', + 'reason' => '', + ) ); + + $this->spam_log[] = $args; + } + + public function get_spam_log() { + return $this->spam_log; + } + + private function verify_nonce() { + if ( ! $this->contact_form->nonce_is_active() ) { + return true; + } + + return wpcf7_verify_nonce( $_POST['_wpnonce'] ); + } + + private function is_blacklisted() { + $target = wpcf7_array_flatten( $this->posted_data ); + $target[] = $this->get_meta( 'remote_ip' ); + $target[] = $this->get_meta( 'user_agent' ); + $target = implode( "\n", $target ); + + return (bool) apply_filters( 'wpcf7_submission_is_blacklisted', + wpcf7_blacklist_check( $target ), $this ); + } + + /* Mail */ + + private function before_send_mail() { + $abort = false; + + do_action_ref_array( 'wpcf7_before_send_mail', array( + $this->contact_form, + &$abort, + $this, + ) ); + + return ! $abort; + } + + private function mail() { + $contact_form = $this->contact_form; + + $skip_mail = apply_filters( 'wpcf7_skip_mail', + $this->skip_mail, $contact_form ); + + if ( $skip_mail ) { + return true; + } + + $result = WPCF7_Mail::send( $contact_form->prop( 'mail' ), 'mail' ); + + if ( $result ) { + $additional_mail = array(); + + if ( $mail_2 = $contact_form->prop( 'mail_2' ) + and $mail_2['active'] ) { + $additional_mail['mail_2'] = $mail_2; + } + + $additional_mail = apply_filters( 'wpcf7_additional_mail', + $additional_mail, $contact_form ); + + foreach ( $additional_mail as $name => $template ) { + WPCF7_Mail::send( $template, $name ); + } + + return true; + } + + return false; + } + + public function uploaded_files() { + return $this->uploaded_files; + } + + public function add_uploaded_file( $name, $file_path ) { + $this->uploaded_files[$name] = $file_path; + + if ( empty( $this->posted_data[$name] ) ) { + $this->posted_data[$name] = basename( $file_path ); + } + } + + public function remove_uploaded_files() { + foreach ( (array) $this->uploaded_files as $name => $path ) { + wpcf7_rmdir_p( $path ); + + if ( $dir = dirname( $path ) + and false !== ( $files = scandir( $dir ) ) + and ! array_diff( $files, array( '.', '..' ) ) ) { + // remove parent dir if it's empty. + rmdir( $dir ); + } + } + } + + public function get_meta( $name ) { + if ( isset( $this->meta[$name] ) ) { + return $this->meta[$name]; + } + } +} diff --git a/wp-content/plugins/contact-form-7/includes/upgrade.php b/wp-content/plugins/contact-form-7/includes/upgrade.php new file mode 100644 index 0000000..2e575df --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/upgrade.php @@ -0,0 +1,85 @@ +prefix . "contact_form_7"; + + if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) ) { + $old_rows = $wpdb->get_results( "SELECT * FROM $table_name" ); + } elseif ( $opt = get_option( 'wpcf7' ) + and ! empty( $opt['contact_forms'] ) ) { + foreach ( (array) $opt['contact_forms'] as $key => $value ) { + $old_rows[] = (object) array_merge( + $value, + array( 'cf7_unit_id' => $key ) + ); + } + } + + foreach ( (array) $old_rows as $row ) { + $q = "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_old_cf7_unit_id'" + . $wpdb->prepare( " AND meta_value = %d", $row->cf7_unit_id ); + + if ( $wpdb->get_var( $q ) ) { + continue; + } + + $postarr = array( + 'post_type' => 'wpcf7_contact_form', + 'post_status' => 'publish', + 'post_title' => maybe_unserialize( $row->title ), + ); + + $post_id = wp_insert_post( $postarr ); + + if ( $post_id ) { + update_post_meta( $post_id, '_old_cf7_unit_id', $row->cf7_unit_id ); + + $metas = array( 'form', 'mail', 'mail_2', 'messages', 'additional_settings' ); + + foreach ( $metas as $meta ) { + update_post_meta( $post_id, '_' . $meta, + wpcf7_normalize_newline_deep( maybe_unserialize( $row->{$meta} ) ) ); + } + } + } +} + +add_action( 'wpcf7_upgrade', 'wpcf7_prepend_underscore', 10, 2 ); + +function wpcf7_prepend_underscore( $new_ver, $old_ver ) { + if ( version_compare( $old_ver, '3.0-dev', '<' ) ) { + return; + } + + if ( ! version_compare( $old_ver, '3.3-dev', '<' ) ) { + return; + } + + $posts = WPCF7_ContactForm::find( array( + 'post_status' => 'any', + 'posts_per_page' => -1, + ) ); + + foreach ( $posts as $post ) { + $props = $post->get_properties(); + + foreach ( $props as $prop => $value ) { + if ( metadata_exists( 'post', $post->id(), '_' . $prop ) ) { + continue; + } + + update_post_meta( $post->id(), '_' . $prop, $value ); + delete_post_meta( $post->id(), $prop ); + } + } +} diff --git a/wp-content/plugins/contact-form-7/includes/validation.php b/wp-content/plugins/contact-form-7/includes/validation.php new file mode 100644 index 0000000..09cde6b --- /dev/null +++ b/wp-content/plugins/contact-form-7/includes/validation.php @@ -0,0 +1,84 @@ +container = array( + 'valid' => true, + 'reason' => array(), + 'idref' => array(), + ); + } + + public function invalidate( $context, $message ) { + if ( $context instanceof WPCF7_FormTag ) { + $tag = $context; + } elseif ( is_array( $context ) ) { + $tag = new WPCF7_FormTag( $context ); + } elseif ( is_string( $context ) ) { + $tags = wpcf7_scan_form_tags( array( 'name' => trim( $context ) ) ); + $tag = $tags ? new WPCF7_FormTag( $tags[0] ) : null; + } + + $name = ! empty( $tag ) ? $tag->name : null; + + if ( empty( $name ) + or ! wpcf7_is_name( $name ) ) { + return; + } + + if ( $this->is_valid( $name ) ) { + $id = $tag->get_id_option(); + + if ( empty( $id ) + or ! wpcf7_is_name( $id ) ) { + $id = null; + } + + $this->invalid_fields[$name] = array( + 'reason' => (string) $message, + 'idref' => $id, + ); + } + } + + public function is_valid( $name = null ) { + if ( ! empty( $name ) ) { + return ! isset( $this->invalid_fields[$name] ); + } else { + return empty( $this->invalid_fields ); + } + } + + public function get_invalid_fields() { + return $this->invalid_fields; + } + + public function offsetSet( $offset, $value ) { + if ( isset( $this->container[$offset] ) ) { + $this->container[$offset] = $value; + } + + if ( 'reason' == $offset + and is_array( $value ) ) { + foreach ( $value as $k => $v ) { + $this->invalidate( $k, $v ); + } + } + } + + public function offsetGet( $offset ) { + if ( isset( $this->container[$offset] ) ) { + return $this->container[$offset]; + } + } + + public function offsetExists( $offset ) { + return isset( $this->container[$offset] ); + } + + public function offsetUnset( $offset ) { + } +} diff --git a/wp-content/plugins/contact-form-7/languages/readme.txt b/wp-content/plugins/contact-form-7/languages/readme.txt new file mode 100644 index 0000000..a9bda89 --- /dev/null +++ b/wp-content/plugins/contact-form-7/languages/readme.txt @@ -0,0 +1,4 @@ +Translations have moved to +https://translate.wordpress.org/projects/wp-plugins/contact-form-7 + +Thank you for your contribution. diff --git a/wp-content/plugins/contact-form-7/license.txt b/wp-content/plugins/contact-form-7/license.txt new file mode 100644 index 0000000..32fab13 --- /dev/null +++ b/wp-content/plugins/contact-form-7/license.txt @@ -0,0 +1,358 @@ +Contact Form 7 WordPress Plugin, 2007-2019 Takayuki Miyoshi +Contact Form 7 is distributed under the terms of the GNU GPL + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/wp-content/plugins/contact-form-7/modules/acceptance.php b/wp-content/plugins/contact-form-7/modules/acceptance.php new file mode 100644 index 0000000..3b89513 --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/acceptance.php @@ -0,0 +1,294 @@ + true, + ) + ); +} + +function wpcf7_acceptance_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + if ( $tag->has_option( 'invert' ) ) { + $class .= ' invert'; + } + + if ( $tag->has_option( 'optional' ) ) { + $class .= ' optional'; + } + + $atts = array( + 'class' => trim( $class ), + ); + + $item_atts = array(); + + $item_atts['type'] = 'checkbox'; + $item_atts['name'] = $tag->name; + $item_atts['value'] = '1'; + $item_atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + $item_atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + if ( $tag->has_option( 'default:on' ) ) { + $item_atts['checked'] = 'checked'; + } + + $item_atts['class'] = $tag->get_class_option(); + $item_atts['id'] = $tag->get_id_option(); + + $item_atts = wpcf7_format_atts( $item_atts ); + + $content = empty( $tag->content ) + ? (string) reset( $tag->values ) + : $tag->content; + + $content = trim( $content ); + + if ( $content ) { + if ( $tag->has_option( 'label_first' ) ) { + $html = sprintf( + '%2$s', + $item_atts, $content ); + } else { + $html = sprintf( + '%2$s', + $item_atts, $content ); + } + + $html = sprintf( + '', + $html + ); + + } else { + $html = sprintf( + '', + $item_atts ); + } + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%3$s%4$s', + sanitize_html_class( $tag->name ), $atts, $html, $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_acceptance', + 'wpcf7_acceptance_validation_filter', 10, 2 ); + +function wpcf7_acceptance_validation_filter( $result, $tag ) { + if ( ! wpcf7_acceptance_as_validation() ) { + return $result; + } + + if ( $tag->has_option( 'optional' ) ) { + return $result; + } + + $name = $tag->name; + $value = ( ! empty( $_POST[$name] ) ? 1 : 0 ); + + $invert = $tag->has_option( 'invert' ); + + if ( $invert and $value + or ! $invert and ! $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'accept_terms' ) ); + } + + return $result; +} + + +/* Acceptance filter */ + +add_filter( 'wpcf7_acceptance', 'wpcf7_acceptance_filter', 10, 2 ); + +function wpcf7_acceptance_filter( $accepted, $submission ) { + $tags = wpcf7_scan_form_tags( array( 'type' => 'acceptance' ) ); + + foreach ( $tags as $tag ) { + $name = $tag->name; + + if ( empty( $name ) ) { + continue; + } + + $value = ( ! empty( $_POST[$name] ) ? 1 : 0 ); + + $content = empty( $tag->content ) + ? (string) reset( $tag->values ) + : $tag->content; + + $content = trim( $content ); + + if ( $value and $content ) { + $submission->add_consent( $name, $content ); + } + + if ( $tag->has_option( 'optional' ) ) { + continue; + } + + $invert = $tag->has_option( 'invert' ); + + if ( $invert and $value + or ! $invert and ! $value ) { + $accepted = false; + } + } + + return $accepted; +} + +add_filter( 'wpcf7_form_class_attr', + 'wpcf7_acceptance_form_class_attr', 10, 1 ); + +function wpcf7_acceptance_form_class_attr( $class ) { + if ( wpcf7_acceptance_as_validation() ) { + return $class . ' wpcf7-acceptance-as-validation'; + } + + return $class; +} + +function wpcf7_acceptance_as_validation() { + if ( ! $contact_form = wpcf7_get_current_contact_form() ) { + return false; + } + + return $contact_form->is_true( 'acceptance_as_validation' ); +} + +add_filter( 'wpcf7_mail_tag_replaced_acceptance', + 'wpcf7_acceptance_mail_tag', 10, 4 ); + +function wpcf7_acceptance_mail_tag( $replaced, $submitted, $html, $mail_tag ) { + $form_tag = $mail_tag->corresponding_form_tag(); + + if ( ! $form_tag ) { + return $replaced; + } + + if ( ! empty( $submitted ) ) { + $replaced = __( 'Consented', 'contact-form-7' ); + } else { + $replaced = __( 'Not consented', 'contact-form-7' ); + } + + $content = empty( $form_tag->content ) + ? (string) reset( $form_tag->values ) + : $form_tag->content; + + if ( ! $html ) { + $content = wp_strip_all_tags( $content ); + } + + $content = trim( $content ); + + if ( $content ) { + /* translators: 1: 'Consented' or 'Not consented', 2: conditions */ + $replaced = sprintf( + _x( '%1$s: %2$s', 'mail output for acceptance checkboxes', + 'contact-form-7' ), + $replaced, + $content ); + } + + return $replaced; +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_acceptance', 35, 0 ); + +function wpcf7_add_tag_generator_acceptance() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'acceptance', __( 'acceptance', 'contact-form-7' ), + 'wpcf7_tag_generator_acceptance' ); +} + +function wpcf7_tag_generator_acceptance( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + $type = 'acceptance'; + + $description = __( "Generate a form-tag for an acceptance checkbox. For more details, see %s.", 'contact-form-7' ); + + $desc_link = wpcf7_link( __( 'https://contactform7.com/acceptance-checkbox/', 'contact-form-7' ), __( 'Acceptance Checkbox', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + +
                        +
                        +
                        +
                        + +
                        + + +
                        + +
                        +
                        + $value ) { + if ( ! in_array( $key, (array) $ignore ) ) { + $c["$key"] = $value; + } + } + + if ( wpcf7_akismet_comment_check( $c ) ) { + $spam = true; + + $submission = WPCF7_Submission::get_instance(); + + $submission->add_spam_log( array( + 'agent' => 'akismet', + 'reason' => __( "Akismet returns a spam response.", 'contact-form-7' ), + ) ); + } else { + $spam = false; + } + + return $spam; +} + +function wpcf7_akismet_is_available() { + if ( is_callable( array( 'Akismet', 'get_api_key' ) ) ) { + return (bool) Akismet::get_api_key(); + } + + return false; +} + +function wpcf7_akismet_submitted_params() { + $params = array( + 'author' => '', + 'author_email' => '', + 'author_url' => '', + 'content' => '', + ); + + $has_akismet_option = false; + + foreach ( (array) $_POST as $key => $val ) { + if ( '_wpcf7' == substr( $key, 0, 6 ) + or '_wpnonce' == $key ) { + continue; + } + + if ( is_array( $val ) ) { + $val = implode( ', ', wpcf7_array_flatten( $val ) ); + } + + $val = trim( $val ); + + if ( 0 == strlen( $val ) ) { + continue; + } + + if ( $tags = wpcf7_scan_form_tags( array( 'name' => $key ) ) ) { + $tag = $tags[0]; + + $akismet = $tag->get_option( 'akismet', + '(author|author_email|author_url)', true ); + + if ( $akismet ) { + $has_akismet_option = true; + + if ( 'author' == $akismet ) { + $params[$akismet] = trim( $params[$akismet] . ' ' . $val ); + continue; + } elseif ( '' == $params[$akismet] ) { + $params[$akismet] = $val; + continue; + } + } + } + + $params['content'] .= "\n\n" . $val; + } + + if ( ! $has_akismet_option ) { + return false; + } + + $params['content'] = trim( $params['content'] ); + + return $params; +} + +function wpcf7_akismet_comment_check( $comment ) { + $spam = false; + $query_string = wpcf7_build_query( $comment ); + + if ( is_callable( array( 'Akismet', 'http_post' ) ) ) { + $response = Akismet::http_post( $query_string, 'comment-check' ); + } else { + return $spam; + } + + if ( 'true' == $response[1] ) { + $spam = true; + } + + if ( $submission = WPCF7_Submission::get_instance() ) { + $submission->akismet = array( 'comment' => $comment, 'spam' => $spam ); + } + + return apply_filters( 'wpcf7_akismet_comment_check', $spam, $comment ); +} diff --git a/wp-content/plugins/contact-form-7/modules/checkbox.php b/wp-content/plugins/contact-form-7/modules/checkbox.php new file mode 100644 index 0000000..003e954 --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/checkbox.php @@ -0,0 +1,349 @@ + true, + 'selectable-values' => true, + 'multiple-controls-container' => true, + ) + ); +} + +function wpcf7_checkbox_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $label_first = $tag->has_option( 'label_first' ); + $use_label_element = $tag->has_option( 'use_label_element' ); + $exclusive = $tag->has_option( 'exclusive' ); + $free_text = $tag->has_option( 'free_text' ); + $multiple = false; + + if ( 'checkbox' == $tag->basetype ) { + $multiple = ! $exclusive; + } else { // radio + $exclusive = false; + } + + if ( $exclusive ) { + $class .= ' wpcf7-exclusive-checkbox'; + } + + $atts = array(); + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + + $tabindex = $tag->get_option( 'tabindex', 'signed_int', true ); + + if ( false !== $tabindex ) { + $tabindex = (int) $tabindex; + } + + $html = ''; + $count = 0; + + if ( $data = (array) $tag->get_data_option() ) { + if ( $free_text ) { + $tag->values = array_merge( + array_slice( $tag->values, 0, -1 ), + array_values( $data ), + array_slice( $tag->values, -1 ) ); + $tag->labels = array_merge( + array_slice( $tag->labels, 0, -1 ), + array_values( $data ), + array_slice( $tag->labels, -1 ) ); + } else { + $tag->values = array_merge( $tag->values, array_values( $data ) ); + $tag->labels = array_merge( $tag->labels, array_values( $data ) ); + } + } + + $values = $tag->values; + $labels = $tag->labels; + + $default_choice = $tag->get_default_option( null, array( + 'multiple' => $multiple, + ) ); + + $hangover = wpcf7_get_hangover( $tag->name, $multiple ? array() : '' ); + + foreach ( $values as $key => $value ) { + if ( $hangover ) { + $checked = in_array( $value, (array) $hangover, true ); + } else { + $checked = in_array( $value, (array) $default_choice, true ); + } + + if ( isset( $labels[$key] ) ) { + $label = $labels[$key]; + } else { + $label = $value; + } + + $item_atts = array( + 'type' => $tag->basetype, + 'name' => $tag->name . ( $multiple ? '[]' : '' ), + 'value' => $value, + 'checked' => $checked ? 'checked' : '', + 'tabindex' => false !== $tabindex ? $tabindex : '', + ); + + $item_atts = wpcf7_format_atts( $item_atts ); + + if ( $label_first ) { // put label first, input last + $item = sprintf( + '%1$s', + esc_html( $label ), $item_atts ); + } else { + $item = sprintf( + '%1$s', + esc_html( $label ), $item_atts ); + } + + if ( $use_label_element ) { + $item = ''; + } + + if ( false !== $tabindex + and 0 < $tabindex ) { + $tabindex += 1; + } + + $class = 'wpcf7-list-item'; + $count += 1; + + if ( 1 == $count ) { + $class .= ' first'; + } + + if ( count( $values ) == $count ) { // last round + $class .= ' last'; + + if ( $free_text ) { + $free_text_name = sprintf( + '_wpcf7_%1$s_free_text_%2$s', $tag->basetype, $tag->name ); + + $free_text_atts = array( + 'name' => $free_text_name, + 'class' => 'wpcf7-free-text', + 'tabindex' => false !== $tabindex ? $tabindex : '', + ); + + if ( wpcf7_is_posted() + and isset( $_POST[$free_text_name] ) ) { + $free_text_atts['value'] = wp_unslash( + $_POST[$free_text_name] ); + } + + $free_text_atts = wpcf7_format_atts( $free_text_atts ); + + $item .= sprintf( ' ', $free_text_atts ); + + $class .= ' has-free-text'; + } + } + + $item = '' . $item . ''; + $html .= $item; + } + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%3$s%4$s', + sanitize_html_class( $tag->name ), $atts, $html, $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_checkbox', + 'wpcf7_checkbox_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_checkbox*', + 'wpcf7_checkbox_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_radio', + 'wpcf7_checkbox_validation_filter', 10, 2 ); + +function wpcf7_checkbox_validation_filter( $result, $tag ) { + $name = $tag->name; + $is_required = $tag->is_required() || 'radio' == $tag->type; + $value = isset( $_POST[$name] ) ? (array) $_POST[$name] : array(); + + if ( $is_required and empty( $value ) ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } + + return $result; +} + + +/* Adding free text field */ + +add_filter( 'wpcf7_posted_data', 'wpcf7_checkbox_posted_data', 10, 1 ); + +function wpcf7_checkbox_posted_data( $posted_data ) { + $tags = wpcf7_scan_form_tags( + array( 'type' => array( 'checkbox', 'checkbox*', 'radio' ) ) ); + + if ( empty( $tags ) ) { + return $posted_data; + } + + foreach ( $tags as $tag ) { + if ( ! isset( $posted_data[$tag->name] ) ) { + continue; + } + + $posted_items = (array) $posted_data[$tag->name]; + + if ( $tag->has_option( 'free_text' ) ) { + if ( WPCF7_USE_PIPE ) { + $values = $tag->pipes->collect_afters(); + } else { + $values = $tag->values; + } + + $last = array_pop( $values ); + $last = html_entity_decode( $last, ENT_QUOTES, 'UTF-8' ); + + if ( in_array( $last, $posted_items ) ) { + $posted_items = array_diff( $posted_items, array( $last ) ); + + $free_text_name = sprintf( + '_wpcf7_%1$s_free_text_%2$s', $tag->basetype, $tag->name ); + + $free_text = $posted_data[$free_text_name]; + + if ( ! empty( $free_text ) ) { + $posted_items[] = trim( $last . ' ' . $free_text ); + } else { + $posted_items[] = $last; + } + } + } + + $posted_data[$tag->name] = $posted_items; + } + + return $posted_data; +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', + 'wpcf7_add_tag_generator_checkbox_and_radio', 30, 0 ); + +function wpcf7_add_tag_generator_checkbox_and_radio() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'checkbox', __( 'checkboxes', 'contact-form-7' ), + 'wpcf7_tag_generator_checkbox' ); + $tag_generator->add( 'radio', __( 'radio buttons', 'contact-form-7' ), + 'wpcf7_tag_generator_checkbox' ); +} + +function wpcf7_tag_generator_checkbox( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + $type = $args['id']; + + if ( 'radio' != $type ) { + $type = 'checkbox'; + } + + if ( 'checkbox' == $type ) { + $description = __( "Generate a form-tag for a group of checkboxes. For more details, see %s.", 'contact-form-7' ); + } elseif ( 'radio' == $type ) { + $description = __( "Generate a form-tag for a group of radio buttons. For more details, see %s.", 'contact-form-7' ); + } + + $desc_link = wpcf7_link( __( 'https://contactform7.com/checkboxes-radio-buttons-and-menus/', 'contact-form-7' ), __( 'Checkboxes, Radio Buttons and Menus', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + +
                        +
                        +
                        + + +
                        +
                        + + +
                        + +
                        +
                        +
                        +
                        + +
                        +add_category( 'email_marketing', + __( 'Email Marketing', 'contact-form-7' ) ); + + $service = WPCF7_ConstantContact::get_instance(); + $integration->add_service( 'constant_contact', $service ); +} + +add_action( 'wpcf7_save_contact_form', + 'wpcf7_constant_contact_save_contact_form', 10, 1 ); + +function wpcf7_constant_contact_save_contact_form( $contact_form ) { + $service = WPCF7_ConstantContact::get_instance(); + + if ( ! $service->is_active() ) { + return; + } + + $additional_settings = $contact_form->additional_setting( + 'constant_contact', + false + ); + + $list_names = array(); + + $pattern = '/[\t ]*(' + . "'[^']*'" + . '|' + . '"[^"]*"' + . '|' + . '[^,]*?' + . ')[\t ]*(?:[,]+|$)/'; + + foreach ( $additional_settings as $setting ) { + if ( preg_match_all( $pattern, $setting, $matches ) ) { + foreach ( $matches[1] as $match ) { + $name = trim( wpcf7_strip_quote( $match ) ); + + if ( '' !== $name ) { + $list_names[] = $name; + } + } + } + } + + $list_names = array_unique( $list_names ); + + $key = sprintf( 'wpcf7_contact_form:%d', $contact_form->id() ); + + $service->update_contact_lists( array( $key => $list_names ) ); +} + +add_action( 'wpcf7_submit', 'wpcf7_constant_contact_submit', 10, 2 ); + +function wpcf7_constant_contact_submit( $contact_form, $result ) { + $service = WPCF7_ConstantContact::get_instance(); + + if ( ! $service->is_active() ) { + return; + } + + if ( $contact_form->in_demo_mode() ) { + return; + } + + $do_submit = true; + + if ( empty( $result['status'] ) + or ! in_array( $result['status'], array( 'mail_sent' ) ) ) { + $do_submit = false; + } + + $additional_settings = $contact_form->additional_setting( + 'constant_contact', + false + ); + + foreach ( $additional_settings as $setting ) { + if ( in_array( $setting, array( 'off', 'false', '0' ), true ) ) { + $do_submit = false; + break; + } + } + + $do_submit = apply_filters( 'wpcf7_constant_contact_submit', + $do_submit, $contact_form, $result ); + + if ( ! $do_submit ) { + return; + } + + $submission = WPCF7_Submission::get_instance(); + + $consented = true; + + foreach ( $contact_form->scan_form_tags( 'feature=name-attr' ) as $tag ) { + if ( $tag->has_option( 'consent_for:constant_contact' ) + and null == $submission->get_posted_data( $tag->name ) ) { + $consented = false; + break; + } + } + + if ( ! $consented ) { + return; + } + + $request_builder_class_name = apply_filters( + 'wpcf7_constant_contact_contact_post_request_builder', + 'WPCF7_ConstantContact_ContactPostRequest' + ); + + if ( ! class_exists( $request_builder_class_name ) ) { + return; + } + + $request_builder = new $request_builder_class_name; + $request_builder->build( $submission ); + + if ( ! $request_builder->is_valid() ) { + return; + } + + if ( $email = $request_builder->get_email_address() + and $service->email_exists( $email ) ) { + return; + } + + $service->create_contact( $request_builder->to_array() ); +} + +if ( ! class_exists( 'WPCF7_Service_OAuth2' ) ) { + return; +} + +class WPCF7_ConstantContact extends WPCF7_Service_OAuth2 { + + const service_name = 'constant_contact'; + const authorization_endpoint = 'https://api.cc.email/v3/idfed'; + const token_endpoint = 'https://idfed.constantcontact.com/as/token.oauth2'; + + private static $instance; + protected $contact_lists = array(); + + public static function get_instance() { + if ( empty( self::$instance ) ) { + self::$instance = new self; + } + + return self::$instance; + } + + private function __construct() { + $this->authorization_endpoint = self::authorization_endpoint; + $this->token_endpoint = self::token_endpoint; + + $option = (array) WPCF7::get_option( self::service_name ); + + if ( isset( $option['client_id'] ) ) { + $this->client_id = $option['client_id']; + } + + if ( isset( $option['client_secret'] ) ) { + $this->client_secret = $option['client_secret']; + } + + if ( isset( $option['access_token'] ) ) { + $this->access_token = $option['access_token']; + } + + if ( isset( $option['refresh_token'] ) ) { + $this->refresh_token = $option['refresh_token']; + } + + if ( $this->is_active() ) { + if ( isset( $option['contact_lists'] ) ) { + $this->contact_lists = $option['contact_lists']; + } + } + + add_action( 'wpcf7_admin_init', array( $this, 'auth_redirect' ) ); + } + + public function auth_redirect() { + $auth = isset( $_GET['auth'] ) ? trim( $_GET['auth'] ) : ''; + $code = isset( $_GET['code'] ) ? trim( $_GET['code'] ) : ''; + + if ( self::service_name === $auth and $code + and current_user_can( 'wpcf7_manage_integration' ) ) { + $redirect_to = add_query_arg( + array( + 'service' => self::service_name, + 'action' => 'auth_redirect', + 'code' => $code, + ), + menu_page_url( 'wpcf7-integration', false ) + ); + + wp_safe_redirect( $redirect_to ); + exit(); + } + } + + protected function save_data() { + $option = array_merge( + (array) WPCF7::get_option( self::service_name ), + array( + 'client_id' => $this->client_id, + 'client_secret' => $this->client_secret, + 'access_token' => $this->access_token, + 'refresh_token' => $this->refresh_token, + 'contact_lists' => $this->contact_lists, + ) + ); + + WPCF7::update_option( self::service_name, $option ); + } + + protected function reset_data() { + $this->client_id = ''; + $this->client_secret = ''; + $this->access_token = ''; + $this->refresh_token = ''; + $this->contact_lists = array(); + + $this->save_data(); + } + + public function get_title() { + return __( 'Constant Contact', 'contact-form-7' ); + } + + public function get_categories() { + return array( 'email_marketing' ); + } + + public function icon() { + } + + public function link() { + echo sprintf( '%2$s', + 'https://constant-contact.evyy.net/c/1293104/205991/3411', + 'constantcontact.com' + ); + } + + protected function get_redirect_uri() { + return admin_url( '/?auth=' . self::service_name ); + } + + protected function menu_page_url( $args = '' ) { + $args = wp_parse_args( $args, array() ); + + $url = menu_page_url( 'wpcf7-integration', false ); + $url = add_query_arg( array( 'service' => self::service_name ), $url ); + + if ( ! empty( $args) ) { + $url = add_query_arg( $args, $url ); + } + + return $url; + } + + public function load( $action = '' ) { + parent::load( $action ); + + if ( 'setup' == $action and 'POST' == $_SERVER['REQUEST_METHOD'] ) { + check_admin_referer( 'wpcf7-constant-contact-setup' ); + + if ( ! empty( $_POST['reset'] ) ) { + $this->reset_data(); + } else { + $this->client_id = isset( $_POST['client_id'] ) + ? trim( $_POST['client_id'] ) : ''; + + $this->client_secret = isset( $_POST['client_secret'] ) + ? trim( $_POST['client_secret'] ) : ''; + + $this->save_data(); + $this->authorize( 'contact_data' ); + } + + wp_safe_redirect( $this->menu_page_url( 'action=setup' ) ); + exit(); + } + + if ( 'edit' == $action and 'POST' == $_SERVER['REQUEST_METHOD'] ) { + check_admin_referer( 'wpcf7-constant-contact-edit' ); + + $list_ids = isset( $_POST['contact_lists'] ) + ? (array) $_POST['contact_lists'] + : array(); + + $this->update_contact_lists( array( 'default' => $list_ids ) ); + + wp_safe_redirect( $this->menu_page_url( + array( + 'action' => 'setup', + 'message' => 'updated', + ) + ) ); + + exit(); + } + + if ( $this->is_active() ) { + $this->update_contact_lists(); + } + } + + public function email_exists( $email ) { + $endpoint = add_query_arg( + array( 'email' => $email ), + 'https://api.cc.email/v3/contacts' + ); + + $request = array( + 'method' => 'GET', + 'headers' => array( + 'Accept' => 'application/json', + 'Content-Type' => 'application/json; charset=utf-8', + ), + ); + + $response = $this->remote_request( $endpoint, $request ); + + if ( 400 <= (int) wp_remote_retrieve_response_code( $response ) ) { + if ( WP_DEBUG ) { + $this->log( $endpoint, $request, $response ); + } + + return false; + } + + $response_body = wp_remote_retrieve_body( $response ); + + if ( empty( $response_body ) ) { + return false; + } + + $response_body = json_decode( $response_body, true ); + + return ! empty( $response_body['contacts'] ); + } + + public function create_contact( $properties ) { + $endpoint = 'https://api.cc.email/v3/contacts'; + + $request = array( + 'method' => 'POST', + 'headers' => array( + 'Accept' => 'application/json', + 'Content-Type' => 'application/json; charset=utf-8', + ), + 'body' => json_encode( $properties ), + ); + + $response = $this->remote_request( $endpoint, $request ); + + if ( 400 <= (int) wp_remote_retrieve_response_code( $response ) ) { + if ( WP_DEBUG ) { + $this->log( $endpoint, $request, $response ); + } + + return false; + } + } + + public function get_contact_lists() { + $endpoint = 'https://api.cc.email/v3/contact_lists'; + + $request = array( + 'method' => 'GET', + 'headers' => array( + 'Accept' => 'application/json', + 'Content-Type' => 'application/json; charset=utf-8', + ), + ); + + $response = $this->remote_request( $endpoint, $request ); + + if ( 400 <= (int) wp_remote_retrieve_response_code( $response ) ) { + if ( WP_DEBUG ) { + $this->log( $endpoint, $request, $response ); + } + + return false; + } + + $response_body = wp_remote_retrieve_body( $response ); + + if ( empty( $response_body ) ) { + return false; + } + + $response_body = json_decode( $response_body, true ); + + if ( ! empty( $response_body['lists'] ) ) { + return (array) $response_body['lists']; + } else { + return array(); + } + } + + public function update_contact_lists( $selection = array() ) { + $contact_lists = array(); + $contact_lists_on_api = $this->get_contact_lists(); + + if ( false !== $contact_lists_on_api ) { + foreach ( (array) $contact_lists_on_api as $list ) { + if ( isset( $list['list_id'] ) ) { + $list_id = trim( $list['list_id'] ); + } else { + continue; + } + + if ( isset( $this->contact_lists[$list_id]['selected'] ) ) { + $list['selected'] = $this->contact_lists[$list_id]['selected']; + } else { + $list['selected'] = array(); + } + + $contact_lists[$list_id] = $list; + } + } else { + $contact_lists = $this->contact_lists; + } + + foreach ( (array) $selection as $key => $ids_or_names ) { + foreach( $contact_lists as $list_id => $list ) { + if ( in_array( $list['list_id'], (array) $ids_or_names, true ) + or in_array( $list['name'], (array) $ids_or_names, true ) ) { + $contact_lists[$list_id]['selected'][$key] = true; + } else { + unset( $contact_lists[$list_id]['selected'][$key] ); + } + } + } + + $this->contact_lists = $contact_lists; + + if ( $selection ) { + $this->save_data(); + } + + return $this->contact_lists; + } + + public function admin_notice( $message = '' ) { + switch ( $message ) { + case 'success': + echo sprintf( + '

                        %s

                        ', + esc_html( __( "Connection established.", 'contact-form-7' ) ) + ); + break; + case 'failed': + echo sprintf( + '

                        %1$s: %2$s

                        ', + esc_html( __( "ERROR", 'contact-form-7' ) ), + esc_html( __( "Failed to establish connection. Please double-check your configuration.", 'contact-form-7' ) ) + ); + break; + case 'updated': + echo sprintf( + '

                        %s

                        ', + esc_html( __( "Configuration updated.", 'contact-form-7' ) ) + ); + break; + } + } + + public function display( $action = '' ) { + echo '

                        ' . sprintf( + esc_html( __( 'The Constant Contact integration module allows you to send contact data collected through your contact forms to the Constant Contact API. You can create reliable email subscription services in a few easy steps. For details, see %s.', 'contact-form-7' ) ), + wpcf7_link( + __( + 'https://contactform7.com/constant-contact-integration/', + 'contact-form-7' + ), + __( 'Constant Contact Integration', 'contact-form-7' ) + ) + ) . '

                        '; + + if ( $this->is_active() ) { + echo sprintf( + '

                        %s

                        ', + esc_html( __( "This site is connected to the Constant Contact API.", 'contact-form-7' ) ) + ); + } + + if ( 'setup' == $action ) { + $this->display_setup(); + } else { + echo sprintf( + '

                        %2$s

                        ', + esc_url( $this->menu_page_url( 'action=setup' ) ), + esc_html( __( 'Setup Integration', 'contact-form-7' ) ) + ); + } + } + + private function display_setup() { +?> +
                        + + + + + + + + + + + + + + + + +
                        is_active() ) { + echo esc_html( $this->client_id ); + echo sprintf( + '', + esc_attr( $this->client_id ) + ); + } else { + echo sprintf( + '', + esc_attr( $this->client_id ) + ); + } + ?>
                        is_active() ) { + echo esc_html( wpcf7_mask_password( $this->client_secret ) ); + echo sprintf( + '', + esc_attr( $this->client_secret ) + ); + } else { + echo sprintf( + '', + esc_attr( $this->client_secret ) + ); + } + ?>
                        ', + $this->get_redirect_uri() + ); + ?> +

                        +
                        +is_active() ) { + submit_button( + _x( 'Reset Keys', 'API keys', 'contact-form-7' ), + 'small', 'reset' + ); + } else { + submit_button( + __( 'Connect to the Constant Contact API', 'contact-form-7' ) + ); + } +?> +
                        + +is_active() and ! empty( $this->contact_lists ) ) { +?> +
                        + + + + + + + + +
                        +
                        + +

                        +
                          contact_lists as $list ) { + echo sprintf( + '
                        • ', + wpcf7_format_atts( array( + 'type' => 'checkbox', + 'name' => 'contact_lists[]', + 'value' => $list['list_id'], + 'id' => 'contact_list_' . $list['list_id'], + 'checked' => empty( $list['selected']['default'] ) + ? '' + : 'checked', + ) ), + esc_attr( 'contact_list_' . $list['list_id'] ), + esc_html( $list['name'] ) + ); + } + ?>
                        +
                        +
                        + +
                        +set_create_source( 'Contact' ); + + $posted_data = (array) $submission->get_posted_data(); + + if ( isset( $posted_data['your-first-name'] ) ) { + $this->set_first_name( $posted_data['your-first-name'] ); + } + + if ( isset( $posted_data['your-last-name'] ) ) { + $this->set_last_name( $posted_data['your-last-name'] ); + } + + if ( ! ( $this->first_name || $this->last_name ) + and isset( $posted_data['your-name'] ) ) { + $your_name = preg_split( '/[\s]+/', $posted_data['your-name'], 2 ); + $this->set_first_name( array_shift( $your_name ) ); + $this->set_last_name( array_shift( $your_name ) ); + } + + if ( isset( $posted_data['your-email'] ) ) { + $this->set_email_address( $posted_data['your-email'], 'implicit' ); + } + + if ( isset( $posted_data['your-job-title'] ) ) { + $this->set_job_title( $posted_data['your-job-title'] ); + } + + if ( isset( $posted_data['your-company-name'] ) ) { + $this->set_company_name( $posted_data['your-company-name'] ); + } + + if ( isset( $posted_data['your-birthday-month'] ) + and isset( $posted_data['your-birthday-day'] ) ) { + $this->set_birthday( + $posted_data['your-birthday-month'], + $posted_data['your-birthday-day'] + ); + } elseif ( isset( $posted_data['your-birthday'] ) ) { + $date = trim( $posted_data['your-birthday'] ); + + if ( preg_match( '/^(\d{4})-(\d{2})-(\d{2})$/', $date, $matches ) ) { + $this->set_birthday( $matches[2], $matches[3] ); + } + } + + if ( isset( $posted_data['your-anniversary'] ) ) { + $this->set_anniversary( $posted_data['your-anniversary'] ); + } + + if ( isset( $posted_data['your-phone-number'] ) ) { + $this->add_phone_number( $posted_data['your-phone-number'] ); + } + + $this->add_street_address( + isset( $posted_data['your-address-street'] ) + ? $posted_data['your-address-street'] : '', + isset( $posted_data['your-address-city'] ) + ? $posted_data['your-address-city'] : '', + isset( $posted_data['your-address-state'] ) + ? $posted_data['your-address-state'] : '', + isset( $posted_data['your-address-postal-code'] ) + ? $posted_data['your-address-postal-code'] : '', + isset( $posted_data['your-address-country'] ) + ? $posted_data['your-address-country'] : '' + ); + + $service_option = (array) WPCF7::get_option( 'constant_contact' ); + + $contact_lists = isset( $service_option['contact_lists'] ) + ? $service_option['contact_lists'] : array(); + + $contact_form = $submission->get_contact_form(); + + if ( $contact_form->additional_setting( 'constant_contact' ) ) { + $key = sprintf( 'wpcf7_contact_form:%d', $contact_form->id() ); + } else { + $key = 'default'; + } + + foreach ( (array) $contact_lists as $list ) { + if ( ! empty( $list['selected'][$key] ) ) { + $this->add_list_membership( $list['list_id'] ); + } + } + } + + public function is_valid() { + return $this->create_source + && ( $this->email_address || $this->first_name || $this->last_name ); + } + + public function to_array() { + $output = array( + 'email_address' => $this->email_address, + 'first_name' => $this->first_name, + 'last_name' => $this->last_name, + 'job_title' => $this->job_title, + 'company_name' => $this->company_name, + 'create_source' => $this->create_source, + 'birthday_month' => $this->birthday_month, + 'birthday_day' => $this->birthday_day, + 'anniversary' => $this->anniversary, + 'custom_fields' => $this->custom_fields, + 'phone_numbers' => $this->phone_numbers, + 'street_addresses' => $this->street_addresses, + 'list_memberships' => $this->list_memberships, + ); + + return array_filter( $output ); + } + + public function get_email_address() { + if ( isset( $this->email_address['address'] ) ) { + return $this->email_address['address']; + } + + return ''; + } + + public function set_email_address( $address, $permission_to_send = '' ) { + if ( ! wpcf7_is_email( $address ) + or 80 < $this->strlen( $address ) ) { + return false; + } + + $types_of_permission = array( + 'implicit', 'explicit', 'deprecate', 'pending', + 'unsubscribe', 'temp_hold', 'not_set', + ); + + if ( ! in_array( $permission_to_send, $types_of_permission ) ) { + $permission_to_send = 'implicit'; + } + + return $this->email_address = array( + 'address' => $address, + 'permission_to_send' => $permission_to_send, + ); + } + + public function set_first_name( $first_name ) { + $first_name = trim( $first_name ); + + if ( empty( $first_name ) + or 50 < $this->strlen( $first_name ) ) { + return false; + } + + return $this->first_name = $first_name; + } + + public function set_last_name( $last_name ) { + $last_name = trim( $last_name ); + + if ( empty( $last_name ) + or 50 < $this->strlen( $last_name ) ) { + return false; + } + + return $this->last_name = $last_name; + } + + public function set_job_title( $job_title ) { + $job_title = trim( $job_title ); + + if ( empty( $job_title ) + or 50 < $this->strlen( $job_title ) ) { + return false; + } + + return $this->job_title = $job_title; + } + + public function set_company_name( $company_name ) { + $company_name = trim( $company_name ); + + if ( empty( $company_name ) + or 50 < $this->strlen( $company_name ) ) { + return false; + } + + return $this->company_name = $company_name; + } + + public function set_create_source( $create_source ) { + if ( ! in_array( $create_source, array( 'Contact', 'Account' ) ) ) { + return false; + } + + return $this->create_source = $create_source; + } + + public function set_birthday( $month, $day ) { + $month = (int) $month; + $day = (int) $day; + + if ( $month < 1 || 12 < $month + or $day < 1 || 31 < $day ) { + return false; + } + + $this->birthday_month = $month; + $this->birthday_day = $day; + + return array( $this->birthday_month, $this->birthday_day ); + } + + public function set_anniversary( $anniversary ) { + $pattern = sprintf( + '#^(%s)$#', + implode( '|', array( + '\d{1,2}/\d{1,2}/\d{4}', + '\d{4}/\d{1,2}/\d{1,2}', + '\d{4}-\d{1,2}-\d{1,2}', + '\d{1,2}-\d{1,2}-\d{4}', + ) ) + ); + + if ( ! preg_match( $pattern, $anniversary ) ) { + return false; + } + + return $this->anniversary = $anniversary; + } + + public function add_custom_field( $custom_field_id, $value ) { + $uuid_pattern = '/^[0-9a-f-]+$/i'; + + $value = trim( $value ); + + if ( 25 <= count( $this->custom_fields ) + or ! preg_match( $uuid_pattern, $custom_field_id ) + or 255 < $this->strlen( $value ) ) { + return false; + } + + return $this->custom_fields[] = array( + 'custom_field_id' => $custom_field_id, + 'value' => $value, + ); + } + + public function add_phone_number( $phone_number, $kind = 'home' ) { + $phone_number = trim( $phone_number ); + + if ( 2 <= count( $this->phone_numbers ) + or ! wpcf7_is_tel( $phone_number ) + or 25 < $this->strlen( $phone_number ) + or ! in_array( $kind, array( 'home', 'work', 'other' ) ) ) { + return false; + } + + return $this->phone_numbers[] = array( + 'phone_number' => $phone_number, + 'kind' => $kind, + ); + } + + public function add_street_address( $street, $city, $state, $postal_code, $country, $kind = 'home' ) { + $street = trim( $street ); + $city = trim( $city ); + $state = trim( $state ); + $postal_code = trim( $postal_code ); + $country = trim( $country ); + + if ( ! ( $street || $city || $state || $postal_code || $country ) + or 1 <= count( $this->street_addresses ) + or ! in_array( $kind, array( 'home', 'work', 'other' ) ) + or 255 < $this->strlen( $street ) + or 50 < $this->strlen( $city ) + or 50 < $this->strlen( $state ) + or 50 < $this->strlen( $postal_code ) + or 50 < $this->strlen( $country ) ) { + return false; + } + + return $this->street_addresses[] = array( + 'kind' => $kind, + 'street' => $street, + 'city' => $city, + 'state' => $state, + 'postal_code' => $postal_code, + 'country' => $country, + ); + } + + public function add_list_membership( $list_id ) { + $uuid_pattern = '/^[0-9a-f-]+$/i'; + + if ( 50 <= count( $this->list_memberships ) + or ! preg_match( $uuid_pattern, $list_id ) ) { + return false; + } + + return $this->list_memberships[] = $list_id; + } + + protected function strlen( $string ) { + return wpcf7_count_code_units( stripslashes( $string ) ); + } + +} diff --git a/wp-content/plugins/contact-form-7/modules/count.php b/wp-content/plugins/contact-form-7/modules/count.php new file mode 100644 index 0000000..878585f --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/count.php @@ -0,0 +1,65 @@ + true, + 'zero-controls-container' => true, + 'not-for-mail' => true, + ) + ); +} + +function wpcf7_count_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $targets = wpcf7_scan_form_tags( array( 'name' => $tag->name ) ); + $maxlength = $minlength = null; + + while ( $targets ) { + $target = array_shift( $targets ); + + if ( 'count' != $target->type ) { + $maxlength = $target->get_maxlength_option(); + $minlength = $target->get_minlength_option(); + break; + } + } + + if ( $maxlength and $minlength + and $maxlength < $minlength ) { + $maxlength = $minlength = null; + } + + if ( $tag->has_option( 'down' ) ) { + $value = (int) $maxlength; + $class = 'wpcf7-character-count down'; + } else { + $value = '0'; + $class = 'wpcf7-character-count up'; + } + + $atts = array(); + $atts['id'] = $tag->get_id_option(); + $atts['class'] = $tag->get_class_option( $class ); + $atts['data-target-name'] = $tag->name; + $atts['data-starting-value'] = $value; + $atts['data-current-value'] = $value; + $atts['data-maximum-value'] = $maxlength; + $atts['data-minimum-value'] = $minlength; + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( '%2$s', $atts, $value ); + + return $html; +} diff --git a/wp-content/plugins/contact-form-7/modules/date.php b/wp-content/plugins/contact-form-7/modules/date.php new file mode 100644 index 0000000..0161d78 --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/date.php @@ -0,0 +1,225 @@ + true ) ); +} + +function wpcf7_date_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + $class .= ' wpcf7-validates-as-date'; + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $atts = array(); + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + $atts['min'] = $tag->get_date_option( 'min' ); + $atts['max'] = $tag->get_date_option( 'max' ); + $atts['step'] = $tag->get_option( 'step', 'int', true ); + + if ( $tag->has_option( 'readonly' ) ) { + $atts['readonly'] = 'readonly'; + } + + if ( $tag->is_required() ) { + $atts['aria-required'] = 'true'; + } + + $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + $value = (string) reset( $tag->values ); + + if ( $tag->has_option( 'placeholder' ) + or $tag->has_option( 'watermark' ) ) { + $atts['placeholder'] = $value; + $value = ''; + } + + $value = $tag->get_default_option( $value ); + + $value = wpcf7_get_hangover( $tag->name, $value ); + + $atts['value'] = $value; + + if ( wpcf7_support_html5() ) { + $atts['type'] = $tag->basetype; + } else { + $atts['type'] = 'text'; + } + + $atts['name'] = $tag->name; + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%3$s', + sanitize_html_class( $tag->name ), $atts, $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_date', 'wpcf7_date_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_date*', 'wpcf7_date_validation_filter', 10, 2 ); + +function wpcf7_date_validation_filter( $result, $tag ) { + $name = $tag->name; + + $min = $tag->get_date_option( 'min' ); + $max = $tag->get_date_option( 'max' ); + + $value = isset( $_POST[$name] ) + ? trim( strtr( (string) $_POST[$name], "\n", " " ) ) + : ''; + + if ( $tag->is_required() and '' == $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } elseif ( '' != $value and ! wpcf7_is_date( $value ) ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_date' ) ); + } elseif ( '' != $value and ! empty( $min ) and $value < $min ) { + $result->invalidate( $tag, wpcf7_get_message( 'date_too_early' ) ); + } elseif ( '' != $value and ! empty( $max ) and $max < $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'date_too_late' ) ); + } + + return $result; +} + + +/* Messages */ + +add_filter( 'wpcf7_messages', 'wpcf7_date_messages', 10, 1 ); + +function wpcf7_date_messages( $messages ) { + return array_merge( $messages, array( + 'invalid_date' => array( + 'description' => __( "Date format that the sender entered is invalid", 'contact-form-7' ), + 'default' => __( "The date format is incorrect.", 'contact-form-7' ) + ), + + 'date_too_early' => array( + 'description' => __( "Date is earlier than minimum limit", 'contact-form-7' ), + 'default' => __( "The date is before the earliest one allowed.", 'contact-form-7' ) + ), + + 'date_too_late' => array( + 'description' => __( "Date is later than maximum limit", 'contact-form-7' ), + 'default' => __( "The date is after the latest one allowed.", 'contact-form-7' ) + ), + ) ); +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_date', 19, 0 ); + +function wpcf7_add_tag_generator_date() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'date', __( 'date', 'contact-form-7' ), + 'wpcf7_tag_generator_date' ); +} + +function wpcf7_tag_generator_date( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + $type = 'date'; + + $description = __( "Generate a form-tag for a date input field. For more details, see %s.", 'contact-form-7' ); + + $desc_link = wpcf7_link( __( 'https://contactform7.com/date-field/', 'contact-form-7' ), __( 'Date Field', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + +
                        +

                        +
                        +
                        + + + – + +
                        +
                        +
                        +
                        + +
                        + + +
                        + +
                        + +
                        + +

                        ' ); ?>

                        +
                        + + +
                        + +
                        + +
                        + +

                        ' ); ?>

                        +
                        + true ) ); +} + +function wpcf7_file_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $atts = array(); + + $atts['size'] = $tag->get_size_option( '40' ); + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + + $atts['accept'] = wpcf7_acceptable_filetypes( + $tag->get_option( 'filetypes' ), 'attr' ); + + if ( $tag->is_required() ) { + $atts['aria-required'] = 'true'; + } + + $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + $atts['type'] = 'file'; + $atts['name'] = $tag->name; + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%3$s', + sanitize_html_class( $tag->name ), $atts, $validation_error ); + + return $html; +} + + +/* Encode type filter */ + +add_filter( 'wpcf7_form_enctype', 'wpcf7_file_form_enctype_filter', 10, 1 ); + +function wpcf7_file_form_enctype_filter( $enctype ) { + $multipart = (bool) wpcf7_scan_form_tags( + array( 'type' => array( 'file', 'file*' ) ) ); + + if ( $multipart ) { + $enctype = 'multipart/form-data'; + } + + return $enctype; +} + + +/* Validation + upload handling filter */ + +add_filter( 'wpcf7_validate_file', 'wpcf7_file_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_file*', 'wpcf7_file_validation_filter', 10, 2 ); + +function wpcf7_file_validation_filter( $result, $tag ) { + $name = $tag->name; + $id = $tag->get_id_option(); + + $file = isset( $_FILES[$name] ) ? $_FILES[$name] : null; + + if ( $file['error'] and UPLOAD_ERR_NO_FILE != $file['error'] ) { + $result->invalidate( $tag, wpcf7_get_message( 'upload_failed_php_error' ) ); + return $result; + } + + if ( empty( $file['tmp_name'] ) and $tag->is_required() ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + return $result; + } + + if ( ! is_uploaded_file( $file['tmp_name'] ) ) { + return $result; + } + + /* File type validation */ + + $file_type_pattern = wpcf7_acceptable_filetypes( + $tag->get_option( 'filetypes' ), 'regex' ); + + $file_type_pattern = '/\.(' . $file_type_pattern . ')$/i'; + + if ( ! preg_match( $file_type_pattern, $file['name'] ) ) { + $result->invalidate( $tag, + wpcf7_get_message( 'upload_file_type_invalid' ) ); + return $result; + } + + /* File size validation */ + + $allowed_size = 1048576; // default size 1 MB + + if ( $file_size_a = $tag->get_option( 'limit' ) ) { + $limit_pattern = '/^([1-9][0-9]*)([kKmM]?[bB])?$/'; + + foreach ( $file_size_a as $file_size ) { + if ( preg_match( $limit_pattern, $file_size, $matches ) ) { + $allowed_size = (int) $matches[1]; + + if ( ! empty( $matches[2] ) ) { + $kbmb = strtolower( $matches[2] ); + + if ( 'kb' == $kbmb ) { + $allowed_size *= 1024; + } elseif ( 'mb' == $kbmb ) { + $allowed_size *= 1024 * 1024; + } + } + + break; + } + } + } + + if ( $file['size'] > $allowed_size ) { + $result->invalidate( $tag, wpcf7_get_message( 'upload_file_too_large' ) ); + return $result; + } + + wpcf7_init_uploads(); // Confirm upload dir + $uploads_dir = wpcf7_upload_tmp_dir(); + $uploads_dir = wpcf7_maybe_add_random_dir( $uploads_dir ); + + $filename = $file['name']; + $filename = wpcf7_canonicalize( $filename, 'as-is' ); + $filename = wpcf7_antiscript_file_name( $filename ); + + $filename = apply_filters( 'wpcf7_upload_file_name', $filename, + $file['name'], $tag ); + + $filename = wp_unique_filename( $uploads_dir, $filename ); + $new_file = path_join( $uploads_dir, $filename ); + + if ( false === @move_uploaded_file( $file['tmp_name'], $new_file ) ) { + $result->invalidate( $tag, wpcf7_get_message( 'upload_failed' ) ); + return $result; + } + + // Make sure the uploaded file is only readable for the owner process + chmod( $new_file, 0400 ); + + if ( $submission = WPCF7_Submission::get_instance() ) { + $submission->add_uploaded_file( $name, $new_file ); + } + + return $result; +} + + +/* Messages */ + +add_filter( 'wpcf7_messages', 'wpcf7_file_messages', 10, 1 ); + +function wpcf7_file_messages( $messages ) { + return array_merge( $messages, array( + 'upload_failed' => array( + 'description' => __( "Uploading a file fails for any reason", 'contact-form-7' ), + 'default' => __( "There was an unknown error uploading the file.", 'contact-form-7' ) + ), + + 'upload_file_type_invalid' => array( + 'description' => __( "Uploaded file is not allowed for file type", 'contact-form-7' ), + 'default' => __( "You are not allowed to upload files of this type.", 'contact-form-7' ) + ), + + 'upload_file_too_large' => array( + 'description' => __( "Uploaded file is too large", 'contact-form-7' ), + 'default' => __( "The file is too big.", 'contact-form-7' ) + ), + + 'upload_failed_php_error' => array( + 'description' => __( "Uploading a file fails for PHP error", 'contact-form-7' ), + 'default' => __( "There was an error uploading the file.", 'contact-form-7' ) + ) + ) ); +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_file', 50, 0 ); + +function wpcf7_add_tag_generator_file() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'file', __( 'file', 'contact-form-7' ), + 'wpcf7_tag_generator_file' ); +} + +function wpcf7_tag_generator_file( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + $type = 'file'; + + $description = __( "Generate a form-tag for a file uploading field. For more details, see %s.", 'contact-form-7' ); + + $desc_link = wpcf7_link( __( 'https://contactform7.com/file-uploading-and-attachment/', 'contact-form-7' ), __( 'File Uploading and Attachment', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + +
                        +
                        +
                        +
                        + +
                        + + +
                        + +
                        + +
                        + +

                        +
                        +scan_form_tags( + array( 'type' => array( 'file', 'file*' ) ) ); + + if ( ! $has_tags ) { + return; + } + + $uploads_dir = wpcf7_upload_tmp_dir(); + wpcf7_init_uploads(); + + if ( ! is_dir( $uploads_dir ) + or ! wp_is_writable( $uploads_dir ) ) { + $message = sprintf( __( 'This contact form contains file uploading fields, but the temporary folder for the files (%s) does not exist or is not writable. You can create the folder or change its permission manually.', 'contact-form-7' ), $uploads_dir ); + + echo sprintf( '

                        %s

                        ', + esc_html( $message ) ); + } +} + + +/* File uploading functions */ + +function wpcf7_acceptable_filetypes( $types = 'default', $format = 'regex' ) { + if ( 'default' === $types + or empty( $types ) ) { + $types = array( + 'jpg', + 'jpeg', + 'png', + 'gif', + 'pdf', + 'doc', + 'docx', + 'ppt', + 'pptx', + 'odt', + 'avi', + 'ogg', + 'm4a', + 'mov', + 'mp3', + 'mp4', + 'mpg', + 'wav', + 'wmv', + ); + } else { + $types_tmp = (array) $types; + $types = array(); + + foreach ( $types_tmp as $val ) { + if ( is_string( $val ) ) { + $val = preg_split( '/[\s|,]+/', $val ); + } + + $types = array_merge( $types, (array) $val ); + } + } + + $types = array_unique( array_filter( $types ) ); + + $output = ''; + + foreach ( $types as $type ) { + $type = trim( $type, ' ,.|' ); + $type = str_replace( + array( '.', '+', '*', '?' ), + array( '\.', '\+', '\*', '\?' ), + $type ); + + if ( '' === $type ) { + continue; + } + + if ( 'attr' === $format + or 'attribute' === $format ) { + $output .= sprintf( '.%s', $type ); + $output .= ','; + } else { + $output .= $type; + $output .= '|'; + } + } + + return trim( $output, ' ,|' ); +} + +function wpcf7_init_uploads() { + $dir = wpcf7_upload_tmp_dir(); + wp_mkdir_p( $dir ); + + $htaccess_file = path_join( $dir, '.htaccess' ); + + if ( file_exists( $htaccess_file ) ) { + return; + } + + if ( $handle = fopen( $htaccess_file, 'w' ) ) { + fwrite( $handle, "Deny from all\n" ); + fclose( $handle ); + } +} + +function wpcf7_maybe_add_random_dir( $dir ) { + do { + $rand_max = mt_getrandmax(); + $rand = zeroise( mt_rand( 0, $rand_max ), strlen( $rand_max ) ); + $dir_new = path_join( $dir, $rand ); + } while ( file_exists( $dir_new ) ); + + if ( wp_mkdir_p( $dir_new ) ) { + return $dir_new; + } + + return $dir; +} + +function wpcf7_upload_tmp_dir() { + if ( defined( 'WPCF7_UPLOADS_TMP_DIR' ) ) { + return WPCF7_UPLOADS_TMP_DIR; + } else { + return path_join( wpcf7_upload_dir( 'dir' ), 'wpcf7_uploads' ); + } +} + +add_action( 'template_redirect', 'wpcf7_cleanup_upload_files', 20, 0 ); + +function wpcf7_cleanup_upload_files( $seconds = 60, $max = 100 ) { + if ( is_admin() + or 'GET' != $_SERVER['REQUEST_METHOD'] + or is_robots() + or is_feed() + or is_trackback() ) { + return; + } + + $dir = trailingslashit( wpcf7_upload_tmp_dir() ); + + if ( ! is_dir( $dir ) + or ! is_readable( $dir ) + or ! wp_is_writable( $dir ) ) { + return; + } + + $seconds = absint( $seconds ); + $max = absint( $max ); + $count = 0; + + if ( $handle = opendir( $dir ) ) { + while ( false !== ( $file = readdir( $handle ) ) ) { + if ( '.' == $file + or '..' == $file + or '.htaccess' == $file ) { + continue; + } + + $mtime = @filemtime( path_join( $dir, $file ) ); + + if ( $mtime and time() < $mtime + $seconds ) { // less than $seconds old + continue; + } + + wpcf7_rmdir_p( path_join( $dir, $file ) ); + $count += 1; + + if ( $max <= $count ) { + break; + } + } + + closedir( $handle ); + } +} diff --git a/wp-content/plugins/contact-form-7/modules/flamingo.php b/wp-content/plugins/contact-form-7/modules/flamingo.php new file mode 100644 index 0000000..de1e9e1 --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/flamingo.php @@ -0,0 +1,278 @@ +in_demo_mode() ) { + return; + } + + $cases = (array) apply_filters( 'wpcf7_flamingo_submit_if', + array( 'spam', 'mail_sent', 'mail_failed' ) ); + + if ( empty( $result['status'] ) + or ! in_array( $result['status'], $cases ) ) { + return; + } + + $submission = WPCF7_Submission::get_instance(); + + if ( ! $submission + or ! $posted_data = $submission->get_posted_data() ) { + return; + } + + if ( $submission->get_meta( 'do_not_store' ) ) { + return; + } + + $fields_senseless = + $contact_form->scan_form_tags( array( 'feature' => 'do-not-store' ) ); + + $exclude_names = array(); + + foreach ( $fields_senseless as $tag ) { + $exclude_names[] = $tag['name']; + } + + $exclude_names[] = 'g-recaptcha-response'; + + foreach ( $posted_data as $key => $value ) { + if ( '_' == substr( $key, 0, 1 ) + or in_array( $key, $exclude_names ) ) { + unset( $posted_data[$key] ); + } + } + + $email = wpcf7_flamingo_get_value( 'email', $contact_form ); + $name = wpcf7_flamingo_get_value( 'name', $contact_form ); + $subject = wpcf7_flamingo_get_value( 'subject', $contact_form ); + + $meta = array(); + + $special_mail_tags = array( 'serial_number', 'remote_ip', + 'user_agent', 'url', 'date', 'time', 'post_id', 'post_name', + 'post_title', 'post_url', 'post_author', 'post_author_email', + 'site_title', 'site_description', 'site_url', 'site_admin_email', + 'user_login', 'user_email', 'user_display_name' ); + + foreach ( $special_mail_tags as $smt ) { + $meta[$smt] = apply_filters( 'wpcf7_special_mail_tags', '', + sprintf( '_%s', $smt ), false ); + } + + $akismet = isset( $submission->akismet ) + ? (array) $submission->akismet : null; + + if ( 'mail_sent' == $result['status'] ) { + $flamingo_contact = Flamingo_Contact::add( array( + 'email' => $email, + 'name' => $name, + ) ); + } + + $post_meta = get_post_meta( $contact_form->id(), '_flamingo', true ); + + $channel_id = isset( $post_meta['channel'] ) + ? (int) $post_meta['channel'] + : wpcf7_flamingo_add_channel( + $contact_form->name(), $contact_form->title() ); + + if ( $channel_id ) { + if ( ! isset( $post_meta['channel'] ) + or $post_meta['channel'] !== $channel_id ) { + $post_meta = empty( $post_meta ) ? array() : (array) $post_meta; + $post_meta = array_merge( $post_meta, array( + 'channel' => $channel_id, + ) ); + + update_post_meta( $contact_form->id(), '_flamingo', $post_meta ); + } + + $channel = get_term( $channel_id, + Flamingo_Inbound_Message::channel_taxonomy ); + + if ( ! $channel or is_wp_error( $channel ) ) { + $channel = 'contact-form-7'; + } else { + $channel = $channel->slug; + } + } else { + $channel = 'contact-form-7'; + } + + $args = array( + 'channel' => $channel, + 'subject' => $subject, + 'from' => trim( sprintf( '%s <%s>', $name, $email ) ), + 'from_name' => $name, + 'from_email' => $email, + 'fields' => $posted_data, + 'meta' => $meta, + 'akismet' => $akismet, + 'spam' => ( 'spam' == $result['status'] ), + 'consent' => $submission->collect_consent(), + ); + + if ( $args['spam'] ) { + $args['spam_log'] = $submission->get_spam_log(); + } + + if ( isset( $submission->recaptcha ) ) { + $args['recaptcha'] = $submission->recaptcha; + } + + $flamingo_inbound = Flamingo_Inbound_Message::add( $args ); + + $result += array( + 'flamingo_contact_id' => + empty( $flamingo_contact ) ? 0 : absint( $flamingo_contact->id ), + 'flamingo_inbound_id' => + empty( $flamingo_inbound ) ? 0 : absint( $flamingo_inbound->id ), + ); + + do_action( 'wpcf7_after_flamingo', $result ); +} + +function wpcf7_flamingo_get_value( $field, $contact_form ) { + if ( empty( $field ) + or empty( $contact_form ) ) { + return false; + } + + $value = ''; + + if ( in_array( $field, array( 'email', 'name', 'subject' ) ) ) { + $templates = $contact_form->additional_setting( 'flamingo_' . $field ); + + if ( empty( $templates[0] ) ) { + $template = sprintf( '[your-%s]', $field ); + } else { + $template = trim( wpcf7_strip_quote( $templates[0] ) ); + } + + $value = wpcf7_mail_replace_tags( $template ); + } + + $value = apply_filters( 'wpcf7_flamingo_get_value', $value, + $field, $contact_form ); + + return $value; +} + +function wpcf7_flamingo_add_channel( $slug, $name = '' ) { + if ( ! class_exists( 'Flamingo_Inbound_Message' ) ) { + return false; + } + + $parent = term_exists( 'contact-form-7', + Flamingo_Inbound_Message::channel_taxonomy ); + + if ( ! $parent ) { + $parent = wp_insert_term( __( 'Contact Form 7', 'contact-form-7' ), + Flamingo_Inbound_Message::channel_taxonomy, + array( 'slug' => 'contact-form-7' ) ); + + if ( is_wp_error( $parent ) ) { + return false; + } + } + + $parent = (int) $parent['term_id']; + + if ( ! is_taxonomy_hierarchical( Flamingo_Inbound_Message::channel_taxonomy ) ) { + // backward compat for Flamingo 1.0.4 and lower + return $parent; + } + + if ( empty( $name ) ) { + $name = $slug; + } + + $channel = term_exists( $slug, + Flamingo_Inbound_Message::channel_taxonomy, + $parent ); + + if ( ! $channel ) { + $channel = wp_insert_term( $name, + Flamingo_Inbound_Message::channel_taxonomy, + array( 'slug' => $slug, 'parent' => $parent ) ); + + if ( is_wp_error( $channel ) ) { + return false; + } + } + + return (int) $channel['term_id']; +} + +add_action( 'wpcf7_after_update', 'wpcf7_flamingo_update_channel', 10, 1 ); + +function wpcf7_flamingo_update_channel( $contact_form ) { + if ( ! class_exists( 'Flamingo_Inbound_Message' ) ) { + return false; + } + + $post_meta = get_post_meta( $contact_form->id(), '_flamingo', true ); + + $channel = isset( $post_meta['channel'] ) + ? get_term( $post_meta['channel'], + Flamingo_Inbound_Message::channel_taxonomy ) + : get_term_by( 'slug', $contact_form->name(), + Flamingo_Inbound_Message::channel_taxonomy ); + + if ( ! $channel or is_wp_error( $channel ) ) { + return; + } + + if ( $channel->name !== wp_unslash( $contact_form->title() ) ) { + wp_update_term( $channel->term_id, + Flamingo_Inbound_Message::channel_taxonomy, + array( + 'name' => $contact_form->title(), + 'slug' => $contact_form->name(), + 'parent' => $channel->parent, + ) + ); + } +} + +add_filter( 'wpcf7_special_mail_tags', 'wpcf7_flamingo_serial_number', 10, 3 ); + +function wpcf7_flamingo_serial_number( $output, $name, $html ) { + if ( '_serial_number' != $name ) { + return $output; + } + + if ( ! class_exists( 'Flamingo_Inbound_Message' ) + or ! method_exists( 'Flamingo_Inbound_Message', 'count' ) ) { + return $output; + } + + if ( ! $contact_form = WPCF7_ContactForm::get_current() ) { + return $output; + } + + $post_meta = get_post_meta( $contact_form->id(), '_flamingo', true ); + + $channel_id = isset( $post_meta['channel'] ) + ? (int) $post_meta['channel'] + : wpcf7_flamingo_add_channel( + $contact_form->name(), $contact_form->title() ); + + if ( $channel_id ) { + return 1 + (int) Flamingo_Inbound_Message::count( + array( 'channel_id' => $channel_id ) ); + } + + return 0; +} diff --git a/wp-content/plugins/contact-form-7/modules/hidden.php b/wp-content/plugins/contact-form-7/modules/hidden.php new file mode 100644 index 0000000..d927559 --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/hidden.php @@ -0,0 +1,36 @@ + true, + 'display-hidden' => true, + ) + ); +} + +function wpcf7_hidden_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $atts = array(); + + $class = wpcf7_form_controls_class( $tag->type ); + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + + $value = (string) reset( $tag->values ); + $value = $tag->get_default_option( $value ); + $atts['value'] = $value; + + $atts['type'] = 'hidden'; + $atts['name'] = $tag->name; + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( '', $atts ); + return $html; +} diff --git a/wp-content/plugins/contact-form-7/modules/listo.php b/wp-content/plugins/contact-form-7/modules/listo.php new file mode 100644 index 0000000..eabfb7f --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/listo.php @@ -0,0 +1,30 @@ +locale(); + + foreach ( (array) $options as $option ) { + $option = explode( '.', $option ); + $type = $option[0]; + $args['group'] = isset( $option[1] ) ? $option[1] : null; + + if ( $list = listo( $type, $args ) ) { + $data = array_merge( (array) $data, $list ); + } + } + + return $data; +} diff --git a/wp-content/plugins/contact-form-7/modules/number.php b/wp-content/plugins/contact-form-7/modules/number.php new file mode 100644 index 0000000..0285bc5 --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/number.php @@ -0,0 +1,233 @@ + true ) ); +} + +function wpcf7_number_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + $class .= ' wpcf7-validates-as-number'; + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $atts = array(); + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + $atts['min'] = $tag->get_option( 'min', 'signed_int', true ); + $atts['max'] = $tag->get_option( 'max', 'signed_int', true ); + $atts['step'] = $tag->get_option( 'step', 'int', true ); + + if ( $tag->has_option( 'readonly' ) ) { + $atts['readonly'] = 'readonly'; + } + + if ( $tag->is_required() ) { + $atts['aria-required'] = 'true'; + } + + $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + $value = (string) reset( $tag->values ); + + if ( $tag->has_option( 'placeholder' ) + or $tag->has_option( 'watermark' ) ) { + $atts['placeholder'] = $value; + $value = ''; + } + + $value = $tag->get_default_option( $value ); + + $value = wpcf7_get_hangover( $tag->name, $value ); + + $atts['value'] = $value; + + if ( wpcf7_support_html5() ) { + $atts['type'] = $tag->basetype; + } else { + $atts['type'] = 'text'; + } + + $atts['name'] = $tag->name; + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%3$s', + sanitize_html_class( $tag->name ), $atts, $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_number', 'wpcf7_number_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_number*', 'wpcf7_number_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_range', 'wpcf7_number_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_range*', 'wpcf7_number_validation_filter', 10, 2 ); + +function wpcf7_number_validation_filter( $result, $tag ) { + $name = $tag->name; + + $value = isset( $_POST[$name] ) + ? trim( strtr( (string) $_POST[$name], "\n", " " ) ) + : ''; + + $min = $tag->get_option( 'min', 'signed_int', true ); + $max = $tag->get_option( 'max', 'signed_int', true ); + + if ( $tag->is_required() and '' == $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } elseif ( '' != $value and ! wpcf7_is_number( $value ) ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_number' ) ); + } elseif ( '' != $value and '' != $min and (float) $value < (float) $min ) { + $result->invalidate( $tag, wpcf7_get_message( 'number_too_small' ) ); + } elseif ( '' != $value and '' != $max and (float) $max < (float) $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'number_too_large' ) ); + } + + return $result; +} + + +/* Messages */ + +add_filter( 'wpcf7_messages', 'wpcf7_number_messages', 10, 1 ); + +function wpcf7_number_messages( $messages ) { + return array_merge( $messages, array( + 'invalid_number' => array( + 'description' => __( "Number format that the sender entered is invalid", 'contact-form-7' ), + 'default' => __( "The number format is invalid.", 'contact-form-7' ) + ), + + 'number_too_small' => array( + 'description' => __( "Number is smaller than minimum limit", 'contact-form-7' ), + 'default' => __( "The number is smaller than the minimum allowed.", 'contact-form-7' ) + ), + + 'number_too_large' => array( + 'description' => __( "Number is larger than maximum limit", 'contact-form-7' ), + 'default' => __( "The number is larger than the maximum allowed.", 'contact-form-7' ) + ), + ) ); +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_number', 18, 0 ); + +function wpcf7_add_tag_generator_number() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'number', __( 'number', 'contact-form-7' ), + 'wpcf7_tag_generator_number' ); +} + +function wpcf7_tag_generator_number( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + $type = 'number'; + + $description = __( "Generate a form-tag for a field for numeric value input. For more details, see %s.", 'contact-form-7' ); + + $desc_link = wpcf7_link( __( 'https://contactform7.com/number-fields/', 'contact-form-7' ), __( 'Number Fields', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + +
                        + +
                        +

                        +
                        +
                        + + + – + +
                        +
                        +
                        +
                        + +
                        + + +
                        + +
                        + +
                        + +

                        +
                        + true, + 'do-not-store' => true, + 'not-for-mail' => true, + ) + ); +} + +function wpcf7_quiz_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $atts = array(); + + $atts['size'] = $tag->get_size_option( '40' ); + $atts['maxlength'] = $tag->get_maxlength_option(); + $atts['minlength'] = $tag->get_minlength_option(); + + if ( $atts['maxlength'] and $atts['minlength'] + and $atts['maxlength'] < $atts['minlength'] ) { + unset( $atts['maxlength'], $atts['minlength'] ); + } + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + $atts['autocomplete'] = 'off'; + $atts['aria-required'] = 'true'; + $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + $pipes = $tag->pipes; + + if ( $pipes instanceof WPCF7_Pipes + and ! $pipes->zero() ) { + $pipe = $pipes->random_pipe(); + $question = $pipe->before; + $answer = $pipe->after; + } else { + // default quiz + $question = '1+1=?'; + $answer = '2'; + } + + $answer = wpcf7_canonicalize( $answer ); + + $atts['type'] = 'text'; + $atts['name'] = $tag->name; + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%6$s', + sanitize_html_class( $tag->name ), + esc_html( $question ), $atts, $tag->name, + wp_hash( $answer, 'wpcf7_quiz' ), $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_quiz', 'wpcf7_quiz_validation_filter', 10, 2 ); + +function wpcf7_quiz_validation_filter( $result, $tag ) { + $name = $tag->name; + + $answer = isset( $_POST[$name] ) ? wpcf7_canonicalize( $_POST[$name] ) : ''; + $answer = wp_unslash( $answer ); + + $answer_hash = wp_hash( $answer, 'wpcf7_quiz' ); + + $expected_hash = isset( $_POST['_wpcf7_quiz_answer_' . $name] ) + ? (string) $_POST['_wpcf7_quiz_answer_' . $name] + : ''; + + if ( $answer_hash != $expected_hash ) { + $result->invalidate( $tag, wpcf7_get_message( 'quiz_answer_not_correct' ) ); + } + + return $result; +} + + +/* Ajax echo filter */ + +add_filter( 'wpcf7_ajax_onload', 'wpcf7_quiz_ajax_refill', 10, 1 ); +add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_quiz_ajax_refill', 10, 1 ); + +function wpcf7_quiz_ajax_refill( $items ) { + if ( ! is_array( $items ) ) { + return $items; + } + + $fes = wpcf7_scan_form_tags( array( 'type' => 'quiz' ) ); + + if ( empty( $fes ) ) { + return $items; + } + + $refill = array(); + + foreach ( $fes as $fe ) { + $name = $fe['name']; + $pipes = $fe['pipes']; + + if ( empty( $name ) ) { + continue; + } + + if ( $pipes instanceof WPCF7_Pipes + and ! $pipes->zero() ) { + $pipe = $pipes->random_pipe(); + $question = $pipe->before; + $answer = $pipe->after; + } else { + // default quiz + $question = '1+1=?'; + $answer = '2'; + } + + $answer = wpcf7_canonicalize( $answer ); + + $refill[$name] = array( $question, wp_hash( $answer, 'wpcf7_quiz' ) ); + } + + if ( ! empty( $refill ) ) { + $items['quiz'] = $refill; + } + + return $items; +} + + +/* Messages */ + +add_filter( 'wpcf7_messages', 'wpcf7_quiz_messages', 10, 1 ); + +function wpcf7_quiz_messages( $messages ) { + $messages = array_merge( $messages, array( + 'quiz_answer_not_correct' => array( + 'description' => + __( "Sender doesn't enter the correct answer to the quiz", 'contact-form-7' ), + 'default' => + __( "The answer to the quiz is incorrect.", 'contact-form-7' ), + ), + ) ); + + return $messages; +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_quiz', 40, 0 ); + +function wpcf7_add_tag_generator_quiz() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'quiz', __( 'quiz', 'contact-form-7' ), + 'wpcf7_tag_generator_quiz' ); +} + +function wpcf7_tag_generator_quiz( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + $type = 'quiz'; + + $description = __( "Generate a form-tag for a question-answer pair. For more details, see %s.", 'contact-form-7' ); + + $desc_link = wpcf7_link( __( 'https://contactform7.com/quiz/', 'contact-form-7' ), __( 'Quiz', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        + +
                        + + +
                        + +
                        +
                        + true, + 'zero-controls-container' => true, + 'not-for-mail' => true, + ) + ); + + // CAPTCHA-Response (input) + wpcf7_add_form_tag( 'captchar', + 'wpcf7_captchar_form_tag_handler', + array( + 'name-attr' => true, + 'do-not-store' => true, + 'not-for-mail' => true, + ) + ); +} + +function wpcf7_captchac_form_tag_handler( $tag ) { + if ( ! class_exists( 'ReallySimpleCaptcha' ) ) { + $error = sprintf( + /* translators: %s: link labeled 'Really Simple CAPTCHA' */ + esc_html( __( "To use CAPTCHA, you need %s plugin installed.", 'contact-form-7' ) ), + wpcf7_link( 'https://wordpress.org/plugins/really-simple-captcha/', 'Really Simple CAPTCHA' ) ); + + return sprintf( '%s', $error ); + } + + if ( empty( $tag->name ) ) { + return ''; + } + + $class = wpcf7_form_controls_class( $tag->type ); + $class .= ' wpcf7-captcha-' . $tag->name; + + $atts = array(); + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + + $op = array( // Default + 'img_size' => array( 72, 24 ), + 'base' => array( 6, 18 ), + 'font_size' => 14, + 'font_char_width' => 15, + ); + + $op = array_merge( $op, wpcf7_captchac_options( $tag->options ) ); + + if ( ! $filename = wpcf7_generate_captcha( $op ) ) { + return ''; + } + + if ( ! empty( $op['img_size'] ) ) { + if ( isset( $op['img_size'][0] ) ) { + $atts['width'] = $op['img_size'][0]; + } + + if ( isset( $op['img_size'][1] ) ) { + $atts['height'] = $op['img_size'][1]; + } + } + + $atts['alt'] = 'captcha'; + $atts['src'] = wpcf7_captcha_url( $filename ); + + $atts = wpcf7_format_atts( $atts ); + + $prefix = substr( $filename, 0, strrpos( $filename, '.' ) ); + + $html = sprintf( + '', + $tag->name, esc_attr( $prefix ), $atts ); + + return $html; +} + +function wpcf7_captchar_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $atts = array(); + + $atts['size'] = $tag->get_size_option( '40' ); + $atts['maxlength'] = $tag->get_maxlength_option(); + $atts['minlength'] = $tag->get_minlength_option(); + + if ( $atts['maxlength'] and $atts['minlength'] + and $atts['maxlength'] < $atts['minlength'] ) { + unset( $atts['maxlength'], $atts['minlength'] ); + } + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + $atts['autocomplete'] = 'off'; + $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + $value = (string) reset( $tag->values ); + + if ( wpcf7_is_posted() ) { + $value = ''; + } + + if ( $tag->has_option( 'placeholder' ) + or $tag->has_option( 'watermark' ) ) { + $atts['placeholder'] = $value; + $value = ''; + } + + $atts['value'] = $value; + $atts['type'] = 'text'; + $atts['name'] = $tag->name; + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%3$s', + sanitize_html_class( $tag->name ), $atts, $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_captchar', + 'wpcf7_captcha_validation_filter', 10, 2 ); + +function wpcf7_captcha_validation_filter( $result, $tag ) { + $type = $tag->type; + $name = $tag->name; + + $captchac = '_wpcf7_captcha_challenge_' . $name; + + $prefix = isset( $_POST[$captchac] ) ? (string) $_POST[$captchac] : ''; + $response = isset( $_POST[$name] ) ? (string) $_POST[$name] : ''; + $response = wpcf7_canonicalize( $response ); + + if ( 0 == strlen( $prefix ) + or ! wpcf7_check_captcha( $prefix, $response ) ) { + $result->invalidate( $tag, wpcf7_get_message( 'captcha_not_match' ) ); + } + + if ( 0 != strlen( $prefix ) ) { + wpcf7_remove_captcha( $prefix ); + } + + return $result; +} + + +/* Ajax echo filter */ + +add_filter( 'wpcf7_ajax_onload', 'wpcf7_captcha_ajax_refill', 10, 1 ); +add_filter( 'wpcf7_ajax_json_echo', 'wpcf7_captcha_ajax_refill', 10, 1 ); + +function wpcf7_captcha_ajax_refill( $items ) { + if ( ! is_array( $items ) ) { + return $items; + } + + $tags = wpcf7_scan_form_tags( array( 'type' => 'captchac' ) ); + + if ( empty( $tags ) ) { + return $items; + } + + $refill = array(); + + foreach ( $tags as $tag ) { + $name = $tag->name; + $options = $tag->options; + + if ( empty( $name ) ) { + continue; + } + + $op = wpcf7_captchac_options( $options ); + + if ( $filename = wpcf7_generate_captcha( $op ) ) { + $captcha_url = wpcf7_captcha_url( $filename ); + $refill[$name] = $captcha_url; + } + } + + if ( ! empty( $refill ) ) { + $items['captcha'] = $refill; + } + + return $items; +} + + +/* Messages */ + +add_filter( 'wpcf7_messages', 'wpcf7_captcha_messages', 10, 1 ); + +function wpcf7_captcha_messages( $messages ) { + $messages = array_merge( $messages, array( + 'captcha_not_match' => array( + 'description' => + __( "The code that sender entered does not match the CAPTCHA", 'contact-form-7' ), + 'default' => + __( 'Your entered code is incorrect.', 'contact-form-7' ), + ), + ) ); + + return $messages; +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_captcha', 46, 0 ); + +function wpcf7_add_tag_generator_captcha() { + if ( ! wpcf7_use_really_simple_captcha() ) { + return; + } + + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'captcha', + __( 'CAPTCHA (Really Simple CAPTCHA)', 'contact-form-7' ), + 'wpcf7_tag_generator_captcha' ); +} + +function wpcf7_tag_generator_captcha( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + + if ( ! class_exists( 'ReallySimpleCaptcha' ) ) { +?> +
                        +
                        + +
                        +
                        + +
                        +
                        + + + + + + + + + +
                        + + + + + + + + + + + + + + +
                        + + + + + + + + + + + + + + +
                        +
                        +
                        + +
                        + + +
                        + +
                        +
                        +scan_form_tags( + array( 'type' => array( 'captchac' ) ) ); + + if ( ! $has_tags ) { + return; + } + + if ( ! class_exists( 'ReallySimpleCaptcha' ) ) { + return; + } + + $uploads_dir = wpcf7_captcha_tmp_dir(); + wpcf7_init_captcha(); + + if ( ! is_dir( $uploads_dir ) + or ! wp_is_writable( $uploads_dir ) ) { + $message = sprintf( __( 'This contact form contains CAPTCHA fields, but the temporary folder for the files (%s) does not exist or is not writable. You can create the folder or change its permission manually.', 'contact-form-7' ), $uploads_dir ); + + echo '

                        ' . esc_html( $message ) . '

                        '; + } + + if ( ! function_exists( 'imagecreatetruecolor' ) + or ! function_exists( 'imagettftext' ) ) { + $message = __( "This contact form contains CAPTCHA fields, but the necessary libraries (GD and FreeType) are not available on your server.", 'contact-form-7' ); + + echo '

                        ' . esc_html( $message ) . '

                        '; + } +} + + +/* CAPTCHA functions */ + +function wpcf7_init_captcha() { + static $captcha = null; + + if ( $captcha ) { + return $captcha; + } + + if ( class_exists( 'ReallySimpleCaptcha' ) ) { + $captcha = new ReallySimpleCaptcha(); + } else { + return false; + } + + $dir = trailingslashit( wpcf7_captcha_tmp_dir() ); + + $captcha->tmp_dir = $dir; + + if ( is_callable( array( $captcha, 'make_tmp_dir' ) ) ) { + $result = $captcha->make_tmp_dir(); + + if ( ! $result ) { + return false; + } + + return $captcha; + } + + if ( wp_mkdir_p( $dir ) ) { + $htaccess_file = path_join( $dir, '.htaccess' ); + + if ( file_exists( $htaccess_file ) ) { + return $captcha; + } + + if ( $handle = fopen( $htaccess_file, 'w' ) ) { + fwrite( $handle, 'Order deny,allow' . "\n" ); + fwrite( $handle, 'Deny from all' . "\n" ); + fwrite( $handle, '' . "\n" ); + fwrite( $handle, ' Allow from all' . "\n" ); + fwrite( $handle, '' . "\n" ); + fclose( $handle ); + } + } else { + return false; + } + + return $captcha; +} + +function wpcf7_captcha_tmp_dir() { + if ( defined( 'WPCF7_CAPTCHA_TMP_DIR' ) ) { + return WPCF7_CAPTCHA_TMP_DIR; + } else { + return path_join( wpcf7_upload_dir( 'dir' ), 'wpcf7_captcha' ); + } +} + +function wpcf7_captcha_tmp_url() { + if ( defined( 'WPCF7_CAPTCHA_TMP_URL' ) ) { + return WPCF7_CAPTCHA_TMP_URL; + } else { + return path_join( wpcf7_upload_dir( 'url' ), 'wpcf7_captcha' ); + } +} + +function wpcf7_captcha_url( $filename ) { + $url = path_join( wpcf7_captcha_tmp_url(), $filename ); + + if ( is_ssl() + and 'http:' == substr( $url, 0, 5 ) ) { + $url = 'https:' . substr( $url, 5 ); + } + + return apply_filters( 'wpcf7_captcha_url', esc_url_raw( $url ) ); +} + +function wpcf7_generate_captcha( $options = null ) { + if ( ! $captcha = wpcf7_init_captcha() ) { + return false; + } + + if ( ! is_dir( $captcha->tmp_dir ) + or ! wp_is_writable( $captcha->tmp_dir ) ) { + return false; + } + + $img_type = imagetypes(); + + if ( $img_type & IMG_PNG ) { + $captcha->img_type = 'png'; + } elseif ( $img_type & IMG_GIF ) { + $captcha->img_type = 'gif'; + } elseif ( $img_type & IMG_JPG ) { + $captcha->img_type = 'jpeg'; + } else { + return false; + } + + if ( is_array( $options ) ) { + if ( isset( $options['img_size'] ) ) { + $captcha->img_size = $options['img_size']; + } + + if ( isset( $options['base'] ) ) { + $captcha->base = $options['base']; + } + + if ( isset( $options['font_size'] ) ) { + $captcha->font_size = $options['font_size']; + } + + if ( isset( $options['font_char_width'] ) ) { + $captcha->font_char_width = $options['font_char_width']; + } + + if ( isset( $options['fg'] ) ) { + $captcha->fg = $options['fg']; + } + + if ( isset( $options['bg'] ) ) { + $captcha->bg = $options['bg']; + } + } + + $prefix = wp_rand(); + $captcha_word = $captcha->generate_random_word(); + return $captcha->generate_image( $prefix, $captcha_word ); +} + +function wpcf7_check_captcha( $prefix, $response ) { + if ( ! $captcha = wpcf7_init_captcha() ) { + return false; + } + + return $captcha->check( $prefix, $response ); +} + +function wpcf7_remove_captcha( $prefix ) { + if ( ! $captcha = wpcf7_init_captcha() ) { + return false; + } + + // Contact Form 7 generates $prefix with wp_rand() + if ( preg_match( '/[^0-9]/', $prefix ) ) { + return false; + } + + $captcha->remove( $prefix ); +} + +add_action( 'template_redirect', 'wpcf7_cleanup_captcha_files', 20, 0 ); + +function wpcf7_cleanup_captcha_files() { + if ( ! $captcha = wpcf7_init_captcha() ) { + return false; + } + + if ( is_callable( array( $captcha, 'cleanup' ) ) ) { + return $captcha->cleanup(); + } + + $dir = trailingslashit( wpcf7_captcha_tmp_dir() ); + + if ( ! is_dir( $dir ) + or ! is_readable( $dir ) + or ! wp_is_writable( $dir ) ) { + return false; + } + + if ( $handle = opendir( $dir ) ) { + while ( false !== ( $file = readdir( $handle ) ) ) { + if ( ! preg_match( '/^[0-9]+\.(php|txt|png|gif|jpeg)$/', $file ) ) { + continue; + } + + $stat = stat( path_join( $dir, $file ) ); + + if ( $stat['mtime'] + 3600 < time() ) { // 3600 secs == 1 hour + @unlink( path_join( $dir, $file ) ); + } + } + + closedir( $handle ); + } +} + +function wpcf7_captchac_options( $options ) { + if ( ! is_array( $options ) ) { + return array(); + } + + $op = array(); + $image_size_array = preg_grep( '%^size:[smlSML]$%', $options ); + + if ( $image_size = array_shift( $image_size_array ) ) { + preg_match( '%^size:([smlSML])$%', $image_size, $is_matches ); + + switch ( strtolower( $is_matches[1] ) ) { + case 's': + $op['img_size'] = array( 60, 20 ); + $op['base'] = array( 6, 15 ); + $op['font_size'] = 11; + $op['font_char_width'] = 13; + break; + case 'l': + $op['img_size'] = array( 84, 28 ); + $op['base'] = array( 6, 20 ); + $op['font_size'] = 17; + $op['font_char_width'] = 19; + break; + case 'm': + default: + $op['img_size'] = array( 72, 24 ); + $op['base'] = array( 6, 18 ); + $op['font_size'] = 14; + $op['font_char_width'] = 15; + } + } + + $fg_color_array = preg_grep( + '%^fg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $options ); + + if ( $fg_color = array_shift( $fg_color_array ) ) { + preg_match( '%^fg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', + $fg_color, $fc_matches ); + + if ( 3 == strlen( $fc_matches[1] ) ) { + $r = substr( $fc_matches[1], 0, 1 ); + $g = substr( $fc_matches[1], 1, 1 ); + $b = substr( $fc_matches[1], 2, 1 ); + + $op['fg'] = array( + hexdec( $r . $r ), + hexdec( $g . $g ), + hexdec( $b . $b ), + ); + } elseif ( 6 == strlen( $fc_matches[1] ) ) { + $r = substr( $fc_matches[1], 0, 2 ); + $g = substr( $fc_matches[1], 2, 2 ); + $b = substr( $fc_matches[1], 4, 2 ); + + $op['fg'] = array( + hexdec( $r ), + hexdec( $g ), + hexdec( $b ), + ); + } + } + + $bg_color_array = preg_grep( + '%^bg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', $options ); + + if ( $bg_color = array_shift( $bg_color_array ) ) { + preg_match( '%^bg:#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$%', + $bg_color, $bc_matches ); + + if ( 3 == strlen( $bc_matches[1] ) ) { + $r = substr( $bc_matches[1], 0, 1 ); + $g = substr( $bc_matches[1], 1, 1 ); + $b = substr( $bc_matches[1], 2, 1 ); + + $op['bg'] = array( + hexdec( $r . $r ), + hexdec( $g . $g ), + hexdec( $b . $b ), + ); + } elseif ( 6 == strlen( $bc_matches[1] ) ) { + $r = substr( $bc_matches[1], 0, 2 ); + $g = substr( $bc_matches[1], 2, 2 ); + $b = substr( $bc_matches[1], 4, 2 ); + + $op['bg'] = array( + hexdec( $r ), + hexdec( $g ), + hexdec( $b ), + ); + } + } + + return $op; +} diff --git a/wp-content/plugins/contact-form-7/modules/recaptcha.php b/wp-content/plugins/contact-form-7/modules/recaptcha.php new file mode 100644 index 0000000..d9d9fd7 --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/recaptcha.php @@ -0,0 +1,576 @@ +add_category( 'captcha', + __( 'CAPTCHA', 'contact-form-7' ) + ); + + $integration->add_service( 'recaptcha', + WPCF7_RECAPTCHA::get_instance() + ); +} + +add_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts', 10, 0 ); + +function wpcf7_recaptcha_enqueue_scripts() { + $service = WPCF7_RECAPTCHA::get_instance(); + + if ( ! $service->is_active() ) { + return; + } + + $url = add_query_arg( + array( + 'render' => $service->get_sitekey(), + ), + 'https://www.google.com/recaptcha/api.js' + ); + + wp_enqueue_script( 'google-recaptcha', $url, array(), '3.0', true ); +} + +add_filter( 'wpcf7_form_hidden_fields', + 'wpcf7_recaptcha_add_hidden_fields', 100, 1 ); + +function wpcf7_recaptcha_add_hidden_fields( $fields ) { + $service = WPCF7_RECAPTCHA::get_instance(); + + if ( ! $service->is_active() ) { + return $fields; + } + + return array_merge( $fields, array( + 'g-recaptcha-response' => '', + ) ); +} + +add_action( 'wp_footer', 'wpcf7_recaptcha_onload_script', 40, 0 ); + +function wpcf7_recaptcha_onload_script() { + $service = WPCF7_RECAPTCHA::get_instance(); + + if ( ! $service->is_active() ) { + return; + } + + if ( ! wp_script_is( 'google-recaptcha', 'done' ) ) { + return; + } + + $actions = apply_filters( 'wpcf7_recaptcha_actions', + array( + 'homepage' => 'homepage', + 'contactform' => 'contactform', + ) + ); + +?> + +is_active() ) { + return $spam; + } + + $submission = WPCF7_Submission::get_instance(); + + $token = isset( $_POST['g-recaptcha-response'] ) + ? trim( $_POST['g-recaptcha-response'] ) : ''; + + if ( $service->verify( $token ) ) { // Human + $spam = false; + } else { // Bot + $spam = true; + + if ( '' === $token ) { + $submission->add_spam_log( array( + 'agent' => 'recaptcha', + 'reason' => __( 'reCAPTCHA response token is empty.', 'contact-form-7' ), + ) ); + } else { + $submission->add_spam_log( array( + 'agent' => 'recaptcha', + 'reason' => sprintf( + __( 'reCAPTCHA score (%1$.2f) is lower than the threshold (%2$.2f).', 'contact-form-7' ), + $service->get_last_score(), + $service->get_threshold() + ), + ) ); + } + } + + return $spam; +} + +add_action( 'wpcf7_init', 'wpcf7_recaptcha_add_form_tag_recaptcha', 10, 0 ); + +function wpcf7_recaptcha_add_form_tag_recaptcha() { + $service = WPCF7_RECAPTCHA::get_instance(); + + if ( ! $service->is_active() ) { + return; + } + + wpcf7_add_form_tag( 'recaptcha', + '__return_empty_string', // no output + array( 'display-block' => true ) + ); +} + +add_action( 'wpcf7_upgrade', 'wpcf7_upgrade_recaptcha_v2_v3', 10, 2 ); + +function wpcf7_upgrade_recaptcha_v2_v3( $new_ver, $old_ver ) { + if ( version_compare( '5.1-dev', $old_ver, '<=' ) ) { + return; + } + + $service = WPCF7_RECAPTCHA::get_instance(); + + if ( ! $service->is_active() ) { + return; + } + + // Maybe v2 keys are used now. Warning necessary. + WPCF7::update_option( 'recaptcha_v2_v3_warning', true ); + WPCF7::update_option( 'recaptcha', null ); +} + +add_action( 'wpcf7_admin_menu', 'wpcf7_admin_init_recaptcha_v2_v3', 10, 0 ); + +function wpcf7_admin_init_recaptcha_v2_v3() { + if ( ! WPCF7::get_option( 'recaptcha_v2_v3_warning' ) ) { + return; + } + + add_filter( 'wpcf7_admin_menu_change_notice', + 'wpcf7_admin_menu_change_notice_recaptcha_v2_v3', 10, 1 ); + + add_action( 'wpcf7_admin_warnings', + 'wpcf7_admin_warnings_recaptcha_v2_v3', 5, 3 ); +} + +function wpcf7_admin_menu_change_notice_recaptcha_v2_v3( $counts ) { + $counts['wpcf7-integration'] += 1; + return $counts; +} + +function wpcf7_admin_warnings_recaptcha_v2_v3( $page, $action, $object ) { + if ( 'wpcf7-integration' !== $page ) { + return; + } + + $message = sprintf( + esc_html( __( "API keys for reCAPTCHA v3 are different from those for v2; keys for v2 don’t work with the v3 API. You need to register your sites again to get new keys for v3. For details, see %s.", 'contact-form-7' ) ), + wpcf7_link( + __( 'https://contactform7.com/recaptcha/', 'contact-form-7' ), + __( 'reCAPTCHA (v3)', 'contact-form-7' ) + ) + ); + + echo sprintf( + '

                        %s

                        ', + $message + ); +} + +if ( ! class_exists( 'WPCF7_Service' ) ) { + return; +} + +class WPCF7_RECAPTCHA extends WPCF7_Service { + + private static $instance; + private $sitekeys; + private $last_score; + + public static function get_instance() { + if ( empty( self::$instance ) ) { + self::$instance = new self; + } + + return self::$instance; + } + + private function __construct() { + $this->sitekeys = WPCF7::get_option( 'recaptcha' ); + } + + public function get_title() { + return __( 'reCAPTCHA', 'contact-form-7' ); + } + + public function is_active() { + $sitekey = $this->get_sitekey(); + $secret = $this->get_secret( $sitekey ); + return $sitekey && $secret; + } + + public function get_categories() { + return array( 'captcha' ); + } + + public function icon() { + } + + public function link() { + echo wpcf7_link( + 'https://www.google.com/recaptcha/intro/index.html', + 'google.com/recaptcha' + ); + } + + public function get_global_sitekey() { + static $sitekey = ''; + + if ( $sitekey ) { + return $sitekey; + } + + if ( defined( 'WPCF7_RECAPTCHA_SITEKEY' ) ) { + $sitekey = WPCF7_RECAPTCHA_SITEKEY; + } + + $sitekey = apply_filters( 'wpcf7_recaptcha_sitekey', $sitekey ); + + return $sitekey; + } + + public function get_global_secret() { + static $secret = ''; + + if ( $secret ) { + return $secret; + } + + if ( defined( 'WPCF7_RECAPTCHA_SECRET' ) ) { + $secret = WPCF7_RECAPTCHA_SECRET; + } + + $secret = apply_filters( 'wpcf7_recaptcha_secret', $secret ); + + return $secret; + } + + public function get_sitekey() { + if ( $this->get_global_sitekey() && $this->get_global_secret() ) { + return $this->get_global_sitekey(); + } + + if ( empty( $this->sitekeys ) + or ! is_array( $this->sitekeys ) ) { + return false; + } + + $sitekeys = array_keys( $this->sitekeys ); + + return $sitekeys[0]; + } + + public function get_secret( $sitekey ) { + if ( $this->get_global_sitekey() && $this->get_global_secret() ) { + return $this->get_global_secret(); + } + + $sitekeys = (array) $this->sitekeys; + + if ( isset( $sitekeys[$sitekey] ) ) { + return $sitekeys[$sitekey]; + } else { + return false; + } + } + + protected function log( $url, $request, $response ) { + wpcf7_log_remote_request( $url, $request, $response ); + } + + public function verify( $token ) { + $is_human = false; + + if ( empty( $token ) or ! $this->is_active() ) { + return $is_human; + } + + $endpoint = 'https://www.google.com/recaptcha/api/siteverify'; + + $sitekey = $this->get_sitekey(); + $secret = $this->get_secret( $sitekey ); + + $request = array( + 'body' => array( + 'secret' => $secret, + 'response' => $token, + ), + ); + + $response = wp_remote_post( esc_url_raw( $endpoint ), $request ); + + if ( 200 != wp_remote_retrieve_response_code( $response ) ) { + if ( WP_DEBUG ) { + $this->log( $endpoint, $request, $response ); + } + + return $is_human; + } + + $response_body = wp_remote_retrieve_body( $response ); + $response_body = json_decode( $response_body, true ); + + $this->last_score = $score = isset( $response_body['score'] ) + ? $response_body['score'] + : 0; + + $threshold = $this->get_threshold(); + $is_human = $threshold < $score; + + $is_human = apply_filters( 'wpcf7_recaptcha_verify_response', + $is_human, $response_body ); + + if ( $submission = WPCF7_Submission::get_instance() ) { + $submission->recaptcha = array( + 'version' => '3.0', + 'threshold' => $threshold, + 'response' => $response_body, + ); + } + + return $is_human; + } + + public function get_threshold() { + return apply_filters( 'wpcf7_recaptcha_threshold', 0.50 ); + } + + public function get_last_score() { + return $this->last_score; + } + + protected function menu_page_url( $args = '' ) { + $args = wp_parse_args( $args, array() ); + + $url = menu_page_url( 'wpcf7-integration', false ); + $url = add_query_arg( array( 'service' => 'recaptcha' ), $url ); + + if ( ! empty( $args) ) { + $url = add_query_arg( $args, $url ); + } + + return $url; + } + + protected function save_data() { + WPCF7::update_option( 'recaptcha', $this->sitekeys ); + } + + protected function reset_data() { + $this->sitekeys = null; + $this->save_data(); + } + + public function load( $action = '' ) { + if ( 'setup' == $action and 'POST' == $_SERVER['REQUEST_METHOD'] ) { + check_admin_referer( 'wpcf7-recaptcha-setup' ); + + if ( ! empty( $_POST['reset'] ) ) { + $this->reset_data(); + $redirect_to = $this->menu_page_url( 'action=setup' ); + } else { + $sitekey = isset( $_POST['sitekey'] ) ? trim( $_POST['sitekey'] ) : ''; + $secret = isset( $_POST['secret'] ) ? trim( $_POST['secret'] ) : ''; + + if ( $sitekey and $secret ) { + $this->sitekeys = array( $sitekey => $secret ); + $this->save_data(); + + $redirect_to = $this->menu_page_url( array( + 'message' => 'success', + ) ); + } else { + $redirect_to = $this->menu_page_url( array( + 'action' => 'setup', + 'message' => 'invalid', + ) ); + } + } + + if ( WPCF7::get_option( 'recaptcha_v2_v3_warning' ) ) { + WPCF7::update_option( 'recaptcha_v2_v3_warning', false ); + } + + wp_safe_redirect( $redirect_to ); + exit(); + } + } + + public function admin_notice( $message = '' ) { + if ( 'invalid' == $message ) { + echo sprintf( + '

                        %1$s: %2$s

                        ', + esc_html( __( "ERROR", 'contact-form-7' ) ), + esc_html( __( "Invalid key values.", 'contact-form-7' ) ) ); + } + + if ( 'success' == $message ) { + echo sprintf( '

                        %s

                        ', + esc_html( __( 'Settings saved.', 'contact-form-7' ) ) ); + } + } + + public function display( $action = '' ) { + echo '

                        ' . sprintf( + esc_html( __( 'reCAPTCHA protects you against spam and other types of automated abuse. With Contact Form 7’s reCAPTCHA integration module, you can block abusive form submissions by spam bots. For details, see %s.', 'contact-form-7' ) ), + wpcf7_link( + __( 'https://contactform7.com/recaptcha/', 'contact-form-7' ), + __( 'reCAPTCHA (v3)', 'contact-form-7' ) + ) + ) . '

                        '; + + if ( $this->is_active() ) { + echo sprintf( + '

                        %s

                        ', + esc_html( __( "reCAPTCHA is active on this site.", 'contact-form-7' ) ) + ); + } + + if ( 'setup' == $action ) { + $this->display_setup(); + } else { + echo sprintf( + '

                        %2$s

                        ', + esc_url( $this->menu_page_url( 'action=setup' ) ), + esc_html( __( 'Setup Integration', 'contact-form-7' ) ) + ); + } + } + + private function display_setup() { + $sitekey = $this->is_active() ? $this->get_sitekey() : ''; + $secret = $this->is_active() ? $this->get_secret( $sitekey ) : ''; + +?> +
                        + + + + + + + + + + + + +
                        is_active() ) { + echo esc_html( $sitekey ); + echo sprintf( + '', + esc_attr( $sitekey ) + ); + } else { + echo sprintf( + '', + esc_attr( $sitekey ) + ); + } + ?>
                        is_active() ) { + echo esc_html( wpcf7_mask_password( $secret ) ); + echo sprintf( + '', + esc_attr( $secret ) + ); + } else { + echo sprintf( + '', + esc_attr( $secret ) + ); + } + ?>
                        +is_active() ) { + if ( $this->get_global_sitekey() && $this->get_global_secret() ) { + // nothing + } else { + submit_button( + _x( 'Remove Keys', 'API keys', 'contact-form-7' ), + 'small', 'reset' + ); + } + } else { + submit_button( __( 'Save Changes', 'contact-form-7' ) ); + } +?> +
                        + true ) ); +} + +function wpcf7_response_form_tag_handler( $tag ) { + if ( $contact_form = wpcf7_get_current_contact_form() ) { + return $contact_form->form_response_output(); + } +} diff --git a/wp-content/plugins/contact-form-7/modules/select.php b/wp-content/plugins/contact-form-7/modules/select.php new file mode 100644 index 0000000..ef0b67d --- /dev/null +++ b/wp-content/plugins/contact-form-7/modules/select.php @@ -0,0 +1,227 @@ + true, + 'selectable-values' => true, + ) + ); +} + +function wpcf7_select_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $atts = array(); + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + + if ( $tag->is_required() ) { + $atts['aria-required'] = 'true'; + } + + $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + $multiple = $tag->has_option( 'multiple' ); + $include_blank = $tag->has_option( 'include_blank' ); + $first_as_label = $tag->has_option( 'first_as_label' ); + + if ( $tag->has_option( 'size' ) ) { + $size = $tag->get_option( 'size', 'int', true ); + + if ( $size ) { + $atts['size'] = $size; + } elseif ( $multiple ) { + $atts['size'] = 4; + } else { + $atts['size'] = 1; + } + } + + if ( $data = (array) $tag->get_data_option() ) { + $tag->values = array_merge( $tag->values, array_values( $data ) ); + $tag->labels = array_merge( $tag->labels, array_values( $data ) ); + } + + $values = $tag->values; + $labels = $tag->labels; + + $default_choice = $tag->get_default_option( null, array( + 'multiple' => $multiple, + 'shifted' => $include_blank, + ) ); + + if ( $include_blank + or empty( $values ) ) { + array_unshift( $labels, '---' ); + array_unshift( $values, '' ); + } elseif ( $first_as_label ) { + $values[0] = ''; + } + + $html = ''; + $hangover = wpcf7_get_hangover( $tag->name ); + + foreach ( $values as $key => $value ) { + if ( $hangover ) { + $selected = in_array( $value, (array) $hangover, true ); + } else { + $selected = in_array( $value, (array) $default_choice, true ); + } + + $item_atts = array( + 'value' => $value, + 'selected' => $selected ? 'selected' : '', + ); + + $item_atts = wpcf7_format_atts( $item_atts ); + + $label = isset( $labels[$key] ) ? $labels[$key] : $value; + + $html .= sprintf( '', + $item_atts, esc_html( $label ) ); + } + + if ( $multiple ) { + $atts['multiple'] = 'multiple'; + } + + $atts['name'] = $tag->name . ( $multiple ? '[]' : '' ); + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%4$s', + sanitize_html_class( $tag->name ), $atts, $html, $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_select', 'wpcf7_select_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_select*', 'wpcf7_select_validation_filter', 10, 2 ); + +function wpcf7_select_validation_filter( $result, $tag ) { + $name = $tag->name; + + if ( isset( $_POST[$name] ) + and is_array( $_POST[$name] ) ) { + foreach ( $_POST[$name] as $key => $value ) { + if ( '' === $value ) { + unset( $_POST[$name][$key] ); + } + } + } + + $empty = ! isset( $_POST[$name] ) || empty( $_POST[$name] ) && '0' !== $_POST[$name]; + + if ( $tag->is_required() and $empty ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } + + return $result; +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_menu', 25, 0 ); + +function wpcf7_add_tag_generator_menu() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'menu', __( 'drop-down menu', 'contact-form-7' ), + 'wpcf7_tag_generator_menu' ); +} + +function wpcf7_tag_generator_menu( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + + $description = __( "Generate a form-tag for a drop-down menu. For more details, see %s.", 'contact-form-7' ); + + $desc_link = wpcf7_link( __( 'https://contactform7.com/checkboxes-radio-buttons-and-menus/', 'contact-form-7' ), __( 'Checkboxes, Radio Buttons and Menus', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + +
                        +
                        +
                        + + +
                        +
                        + +
                        +
                        +
                        +
                        + +
                        + + +
                        + +
                        + +
                        + +

                        +
                        +type ); + + $atts = array(); + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + + $value = isset( $tag->values[0] ) ? $tag->values[0] : ''; + + if ( empty( $value ) ) { + $value = __( 'Send', 'contact-form-7' ); + } + + $atts['type'] = 'submit'; + $atts['value'] = $value; + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( '', $atts ); + + return $html; +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_submit', 55, 0 ); + +function wpcf7_add_tag_generator_submit() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'submit', __( 'submit', 'contact-form-7' ), + 'wpcf7_tag_generator_submit', array( 'nameless' => 1 ) ); +} + +function wpcf7_tag_generator_submit( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + + $description = __( "Generate a form-tag for a submit button. For more details, see %s.", 'contact-form-7' ); + + $desc_link = wpcf7_link( __( 'https://contactform7.com/submit-button/', 'contact-form-7' ), __( 'Submit Button', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + +
                        +
                        +
                        + +
                        + + +
                        + +
                        +
                        + true ) ); +} + +function wpcf7_text_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type, 'wpcf7-text' ); + + if ( in_array( $tag->basetype, array( 'email', 'url', 'tel' ) ) ) { + $class .= ' wpcf7-validates-as-' . $tag->basetype; + } + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $atts = array(); + + $atts['size'] = $tag->get_size_option( '40' ); + $atts['maxlength'] = $tag->get_maxlength_option(); + $atts['minlength'] = $tag->get_minlength_option(); + + if ( $atts['maxlength'] and $atts['minlength'] + and $atts['maxlength'] < $atts['minlength'] ) { + unset( $atts['maxlength'], $atts['minlength'] ); + } + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + + $atts['autocomplete'] = $tag->get_option( 'autocomplete', + '[-0-9a-zA-Z]+', true ); + + if ( $tag->has_option( 'readonly' ) ) { + $atts['readonly'] = 'readonly'; + } + + if ( $tag->is_required() ) { + $atts['aria-required'] = 'true'; + } + + $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + $value = (string) reset( $tag->values ); + + if ( $tag->has_option( 'placeholder' ) + or $tag->has_option( 'watermark' ) ) { + $atts['placeholder'] = $value; + $value = ''; + } + + $value = $tag->get_default_option( $value ); + + $value = wpcf7_get_hangover( $tag->name, $value ); + + $atts['value'] = $value; + + if ( wpcf7_support_html5() ) { + $atts['type'] = $tag->basetype; + } else { + $atts['type'] = 'text'; + } + + $atts['name'] = $tag->name; + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%3$s', + sanitize_html_class( $tag->name ), $atts, $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_text', 'wpcf7_text_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_text*', 'wpcf7_text_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_url', 'wpcf7_text_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_url*', 'wpcf7_text_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_tel', 'wpcf7_text_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_tel*', 'wpcf7_text_validation_filter', 10, 2 ); + +function wpcf7_text_validation_filter( $result, $tag ) { + $name = $tag->name; + + $value = isset( $_POST[$name] ) + ? trim( wp_unslash( strtr( (string) $_POST[$name], "\n", " " ) ) ) + : ''; + + if ( 'text' == $tag->basetype ) { + if ( $tag->is_required() and '' == $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } + } + + if ( 'email' == $tag->basetype ) { + if ( $tag->is_required() and '' == $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } elseif ( '' != $value and ! wpcf7_is_email( $value ) ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_email' ) ); + } + } + + if ( 'url' == $tag->basetype ) { + if ( $tag->is_required() and '' == $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } elseif ( '' != $value and ! wpcf7_is_url( $value ) ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_url' ) ); + } + } + + if ( 'tel' == $tag->basetype ) { + if ( $tag->is_required() and '' == $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } elseif ( '' != $value and ! wpcf7_is_tel( $value ) ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_tel' ) ); + } + } + + if ( '' !== $value ) { + $maxlength = $tag->get_maxlength_option(); + $minlength = $tag->get_minlength_option(); + + if ( $maxlength and $minlength and $maxlength < $minlength ) { + $maxlength = $minlength = null; + } + + $code_units = wpcf7_count_code_units( stripslashes( $value ) ); + + if ( false !== $code_units ) { + if ( $maxlength and $maxlength < $code_units ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_long' ) ); + } elseif ( $minlength and $code_units < $minlength ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_short' ) ); + } + } + } + + return $result; +} + + +/* Messages */ + +add_filter( 'wpcf7_messages', 'wpcf7_text_messages', 10, 1 ); + +function wpcf7_text_messages( $messages ) { + $messages = array_merge( $messages, array( + 'invalid_email' => array( + 'description' => + __( "Email address that the sender entered is invalid", 'contact-form-7' ), + 'default' => + __( "The e-mail address entered is invalid.", 'contact-form-7' ), + ), + + 'invalid_url' => array( + 'description' => + __( "URL that the sender entered is invalid", 'contact-form-7' ), + 'default' => + __( "The URL is invalid.", 'contact-form-7' ), + ), + + 'invalid_tel' => array( + 'description' => + __( "Telephone number that the sender entered is invalid", 'contact-form-7' ), + 'default' => + __( "The telephone number is invalid.", 'contact-form-7' ), + ), + ) ); + + return $messages; +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_text', 15, 0 ); + +function wpcf7_add_tag_generator_text() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'text', __( 'text', 'contact-form-7' ), + 'wpcf7_tag_generator_text' ); + $tag_generator->add( 'email', __( 'email', 'contact-form-7' ), + 'wpcf7_tag_generator_text' ); + $tag_generator->add( 'url', __( 'URL', 'contact-form-7' ), + 'wpcf7_tag_generator_text' ); + $tag_generator->add( 'tel', __( 'tel', 'contact-form-7' ), + 'wpcf7_tag_generator_text' ); +} + +function wpcf7_tag_generator_text( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + $type = $args['id']; + + if ( ! in_array( $type, array( 'email', 'url', 'tel' ) ) ) { + $type = 'text'; + } + + if ( 'text' == $type ) { + $description = __( "Generate a form-tag for a single-line plain text input field. For more details, see %s.", 'contact-form-7' ); + } elseif ( 'email' == $type ) { + $description = __( "Generate a form-tag for a single-line email address input field. For more details, see %s.", 'contact-form-7' ); + } elseif ( 'url' == $type ) { + $description = __( "Generate a form-tag for a single-line URL input field. For more details, see %s.", 'contact-form-7' ); + } elseif ( 'tel' == $type ) { + $description = __( "Generate a form-tag for a single-line telephone number input field. For more details, see %s.", 'contact-form-7' ); + } + + $desc_link = wpcf7_link( __( 'https://contactform7.com/text-fields/', 'contact-form-7' ), __( 'Text Fields', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + +
                        +

                        +
                        +
                        + + + + + + + + + + +
                        +
                        +
                        +
                        + +
                        + + +
                        + +
                        + +
                        + +

                        +
                        + true ) ); +} + +function wpcf7_textarea_form_tag_handler( $tag ) { + if ( empty( $tag->name ) ) { + return ''; + } + + $validation_error = wpcf7_get_validation_error( $tag->name ); + + $class = wpcf7_form_controls_class( $tag->type ); + + if ( $validation_error ) { + $class .= ' wpcf7-not-valid'; + } + + $atts = array(); + + $atts['cols'] = $tag->get_cols_option( '40' ); + $atts['rows'] = $tag->get_rows_option( '10' ); + $atts['maxlength'] = $tag->get_maxlength_option(); + $atts['minlength'] = $tag->get_minlength_option(); + + if ( $atts['maxlength'] and $atts['minlength'] + and $atts['maxlength'] < $atts['minlength'] ) { + unset( $atts['maxlength'], $atts['minlength'] ); + } + + $atts['class'] = $tag->get_class_option( $class ); + $atts['id'] = $tag->get_id_option(); + $atts['tabindex'] = $tag->get_option( 'tabindex', 'signed_int', true ); + + $atts['autocomplete'] = $tag->get_option( 'autocomplete', + '[-0-9a-zA-Z]+', true ); + + if ( $tag->has_option( 'readonly' ) ) { + $atts['readonly'] = 'readonly'; + } + + if ( $tag->is_required() ) { + $atts['aria-required'] = 'true'; + } + + $atts['aria-invalid'] = $validation_error ? 'true' : 'false'; + + $value = empty( $tag->content ) + ? (string) reset( $tag->values ) + : $tag->content; + + if ( $tag->has_option( 'placeholder' ) + or $tag->has_option( 'watermark' ) ) { + $atts['placeholder'] = $value; + $value = ''; + } + + $value = $tag->get_default_option( $value ); + + $value = wpcf7_get_hangover( $tag->name, $value ); + + $atts['name'] = $tag->name; + + $atts = wpcf7_format_atts( $atts ); + + $html = sprintf( + '%4$s', + sanitize_html_class( $tag->name ), $atts, + esc_textarea( $value ), $validation_error ); + + return $html; +} + + +/* Validation filter */ + +add_filter( 'wpcf7_validate_textarea', + 'wpcf7_textarea_validation_filter', 10, 2 ); +add_filter( 'wpcf7_validate_textarea*', + 'wpcf7_textarea_validation_filter', 10, 2 ); + +function wpcf7_textarea_validation_filter( $result, $tag ) { + $type = $tag->type; + $name = $tag->name; + + $value = isset( $_POST[$name] ) ? (string) $_POST[$name] : ''; + + if ( $tag->is_required() and '' == $value ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_required' ) ); + } + + if ( '' !== $value ) { + $maxlength = $tag->get_maxlength_option(); + $minlength = $tag->get_minlength_option(); + + if ( $maxlength and $minlength + and $maxlength < $minlength ) { + $maxlength = $minlength = null; + } + + $code_units = wpcf7_count_code_units( stripslashes( $value ) ); + + if ( false !== $code_units ) { + if ( $maxlength and $maxlength < $code_units ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_long' ) ); + } elseif ( $minlength and $code_units < $minlength ) { + $result->invalidate( $tag, wpcf7_get_message( 'invalid_too_short' ) ); + } + } + } + + return $result; +} + + +/* Tag generator */ + +add_action( 'wpcf7_admin_init', 'wpcf7_add_tag_generator_textarea', 20, 0 ); + +function wpcf7_add_tag_generator_textarea() { + $tag_generator = WPCF7_TagGenerator::get_instance(); + $tag_generator->add( 'textarea', __( 'text area', 'contact-form-7' ), + 'wpcf7_tag_generator_textarea' ); +} + +function wpcf7_tag_generator_textarea( $contact_form, $args = '' ) { + $args = wp_parse_args( $args, array() ); + $type = 'textarea'; + + $description = __( "Generate a form-tag for a multi-line text input field. For more details, see %s.", 'contact-form-7' ); + + $desc_link = wpcf7_link( __( 'https://contactform7.com/text-fields/', 'contact-form-7' ), __( 'Text Fields', 'contact-form-7' ) ); + +?> +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + +
                        +

                        +
                        +
                        +
                        + +
                        + + +
                        + +
                        + +
                        + +

                        +
                        + $value ) ); + update_option( 'wpcf7', $option ); + } +} + +add_action( 'plugins_loaded', 'wpcf7', 10, 0 ); + +function wpcf7() { + wpcf7_load_textdomain(); + WPCF7::load_modules(); + + /* Shortcodes */ + add_shortcode( 'contact-form-7', 'wpcf7_contact_form_tag_func' ); + add_shortcode( 'contact-form', 'wpcf7_contact_form_tag_func' ); +} + +add_action( 'init', 'wpcf7_init', 10, 0 ); + +function wpcf7_init() { + wpcf7_get_request_uri(); + wpcf7_register_post_types(); + + do_action( 'wpcf7_init' ); +} + +add_action( 'admin_init', 'wpcf7_upgrade', 10, 0 ); + +function wpcf7_upgrade() { + $old_ver = WPCF7::get_option( 'version', '0' ); + $new_ver = WPCF7_VERSION; + + if ( $old_ver == $new_ver ) { + return; + } + + do_action( 'wpcf7_upgrade', $new_ver, $old_ver ); + + WPCF7::update_option( 'version', $new_ver ); +} + +/* Install and default settings */ + +add_action( 'activate_' . WPCF7_PLUGIN_BASENAME, 'wpcf7_install', 10, 0 ); + +function wpcf7_install() { + if ( $opt = get_option( 'wpcf7' ) ) { + return; + } + + wpcf7_load_textdomain(); + wpcf7_register_post_types(); + wpcf7_upgrade(); + + if ( get_posts( array( 'post_type' => 'wpcf7_contact_form' ) ) ) { + return; + } + + $contact_form = WPCF7_ContactForm::get_template( + array( + 'title' => + /* translators: title of your first contact form. %d: number fixed to '1' */ + sprintf( __( 'Contact form %d', 'contact-form-7' ), 1 ), + ) + ); + + $contact_form->save(); + + WPCF7::update_option( 'bulk_validate', + array( + 'timestamp' => current_time( 'timestamp' ), + 'version' => WPCF7_VERSION, + 'count_valid' => 1, + 'count_invalid' => 0, + ) + ); +} diff --git a/wp-content/plugins/contact-form-7/uninstall.php b/wp-content/plugins/contact-form-7/uninstall.php new file mode 100644 index 0000000..1903ec7 --- /dev/null +++ b/wp-content/plugins/contact-form-7/uninstall.php @@ -0,0 +1,28 @@ + -1, + 'post_type' => 'wpcf7_contact_form', + 'post_status' => 'any', + ) + ); + + foreach ( $posts as $post ) { + wp_delete_post( $post->ID, true ); + } + + $wpdb->query( sprintf( "DROP TABLE IF EXISTS %s", + $wpdb->prefix . 'contact_form_7' ) ); +} + +wpcf7_delete_plugin(); diff --git a/wp-content/plugins/contact-form-7/wp-contact-form-7.php b/wp-content/plugins/contact-form-7/wp-contact-form-7.php new file mode 100644 index 0000000..07328b1 --- /dev/null +++ b/wp-content/plugins/contact-form-7/wp-contact-form-7.php @@ -0,0 +1,67 @@ + false, + 'message' => esc_html__( 'Administrator permission is required', 'imsanity' ), + ) + ) + ); + } + if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'imsanity-bulk' ) ) { + die( + json_encode( + array( + 'success' => false, + 'message' => esc_html__( 'Access token has expired, please reload the page.', 'imsanity' ), + ) + ) + ); + } +} + + +/** + * Searches for up to 250 images that are candidates for resize and renders them + * to the browser as a json array, then dies + */ +function imsanity_get_images() { + imsanity_verify_permission(); + + global $wpdb; + $offset = 0; + $limit = apply_filters( 'imsanity_attachment_query_limit', 3000 ); + $results = array(); + $maxw = imsanity_get_option( 'imsanity_max_width', IMSANITY_DEFAULT_MAX_WIDTH ); + $maxh = imsanity_get_option( 'imsanity_max_height', IMSANITY_DEFAULT_MAX_HEIGHT ); + $count = 0; + + $images = $wpdb->get_results( $wpdb->prepare( "SELECT metas.meta_value as file_meta,metas.post_id as ID FROM $wpdb->postmeta metas INNER JOIN $wpdb->posts posts ON posts.ID = metas.post_id WHERE posts.post_type = 'attachment' AND posts.post_mime_type LIKE %s AND posts.post_mime_type != 'image/bmp' AND metas.meta_key = '_wp_attachment_metadata' ORDER BY ID DESC LIMIT %d,%d", '%image%', $offset, $limit ) ); + /* $images = $wpdb->get_results( "SELECT metas.meta_value as file_meta,metas.post_id as ID FROM $wpdb->postmeta metas INNER JOIN $wpdb->posts posts ON posts.ID = metas.post_id WHERE posts.post_type LIKE 'attachment' AND posts.post_mime_type LIKE 'image%%' AND posts.post_mime_type NOT LIKE 'image/bmp' AND metas.meta_key = '_wp_attachment_metadata' LIMIT $offset,$limit" ); */ + while ( $images ) { + + foreach ( $images as $image ) { + $imagew = false; + $imageh = false; + + $meta = unserialize( $image->file_meta ); + + // If "noresize" is included in the filename then we will bypass imsanity scaling. + if ( ! empty( $meta['file'] ) && strpos( $meta['file'], 'noresize' ) !== false ) { + continue; + } + + if ( imsanity_get_option( 'imsanity_deep_scan', false ) ) { + $file_path = imsanity_attachment_path( $meta, $image->ID, '', false ); + if ( $file_path ) { + list( $imagew, $imageh ) = getimagesize( $file_path ); + } + } + if ( empty( $imagew ) || empty( $imageh ) ) { + $imagew = $meta['width']; + $imageh = $meta['height']; + } + + if ( $imagew > $maxw || $imageh > $maxh ) { + $count++; + + $results[] = array( + 'id' => $image->ID, + 'width' => $imagew, + 'height' => $imageh, + 'file' => $meta['file'], + ); + } + + // Make sure we only return a limited number of records so we don't overload the ajax features. + if ( $count >= IMSANITY_AJAX_MAX_RECORDS ) { + break 2; + } + } + $offset += $limit; + $images = $wpdb->get_results( $wpdb->prepare( "SELECT metas.meta_value as file_meta,metas.post_id as ID FROM $wpdb->postmeta metas INNER JOIN $wpdb->posts posts ON posts.ID = metas.post_id WHERE posts.post_type = 'attachment' AND posts.post_mime_type LIKE %s AND posts.post_mime_type != 'image/bmp' AND metas.meta_key = '_wp_attachment_metadata' ORDER BY ID DESC LIMIT %d,%d", '%image%', $offset, $limit ) ); + } // endwhile + die( json_encode( $results ) ); +} + +/** + * Resizes the image with the given id according to the configured max width and height settings + * renders a json response indicating success/failure and dies + */ +function imsanity_resize_image() { + imsanity_verify_permission(); + + global $wpdb; + + $id = (int) $_POST['id']; + + if ( ! $id ) { + die( + json_encode( + array( + 'success' => false, + 'message' => esc_html__( 'Missing ID Parameter', 'imsanity' ), + ) + ) + ); + } + + $meta = wp_get_attachment_metadata( $id ); + + if ( $meta && is_array( $meta ) ) { + $uploads = wp_upload_dir(); + $oldpath = imsanity_attachment_path( $meta['file'], $id, '', false ); + if ( empty( $oldpath ) || ! is_writable( $oldpath ) ) { + /* translators: %s: File-name of the image */ + $msg = sprintf( esc_html__( '%s is not writable', 'imsanity' ), $meta['file'] ); + die( + json_encode( + array( + 'success' => false, + 'message' => $msg, + ) + ) + ); + } + + $maxw = imsanity_get_option( 'imsanity_max_width', IMSANITY_DEFAULT_MAX_WIDTH ); + $maxh = imsanity_get_option( 'imsanity_max_height', IMSANITY_DEFAULT_MAX_HEIGHT ); + + // method one - slow but accurate, get file size from file itself. + list( $oldw, $oldh ) = getimagesize( $oldpath ); + // method two - get file size from meta, fast but resize will fail if meta is out of sync. + if ( ! $oldw || ! $oldh ) { + $oldw = $meta['width']; + $oldh = $meta['height']; + } + + if ( ( $oldw > $maxw && $maxw > 0 ) || ( $oldh > $maxh && $maxh > 0 ) ) { + $quality = imsanity_get_option( 'imsanity_quality', IMSANITY_DEFAULT_QUALITY ); + + if ( $oldw > $maxw && $maxw > 0 && $oldh > $maxh && $maxh > 0 && apply_filters( 'imsanity_crop_image', false ) ) { + $neww = $maxw; + $newh = $maxh; + } else { + list( $neww, $newh ) = wp_constrain_dimensions( $oldw, $oldh, $maxw, $maxh ); + } + + $resizeresult = imsanity_image_resize( $oldpath, $neww, $newh, apply_filters( 'imsanity_crop_image', false ), null, null, $quality ); + + if ( $resizeresult && ! is_wp_error( $resizeresult ) ) { + $newpath = $resizeresult; + + if ( $newpath !== $oldpath && is_file( $newpath ) && filesize( $newpath ) < filesize( $oldpath ) ) { + // we saved some file space. remove original and replace with resized image. + unlink( $oldpath ); + rename( $newpath, $oldpath ); + $meta['width'] = $neww; + $meta['height'] = $newh; + + wp_update_attachment_metadata( $id, $meta ); + + $results = array( + 'success' => true, + 'id' => $id, + /* translators: %s: File-name of the image */ + 'message' => sprintf( esc_html__( 'OK: %s', 'imsanity' ), $oldpath ), + ); + } elseif ( $newpath !== $oldpath ) { + // the resized image is actually bigger in filesize (most likely due to jpg quality). + // keep the old one and just get rid of the resized image. + if ( is_file( $newpath ) ) { + unlink( $newpath ); + } + $results = array( + 'success' => false, + 'id' => $id, + /* translators: 1: File-name of the image 2: the error message, translated elsewhere */ + 'message' => sprintf( esc_html__( 'ERROR: %1$s (%2$s)', 'imsanity' ), $oldpath, esc_html__( 'Resized image was larger than the original', 'imsanity' ) ), + ); + } else { + $results = array( + 'success' => false, + 'id' => $id, + /* translators: 1: File-name of the image 2: the error message, translated elsewhere */ + 'message' => sprintf( esc_html__( 'ERROR: %1$s (%2$s)', 'imsanity' ), $oldpath, esc_html__( 'Unknown error, resizing function returned the same filename', 'imsanity' ) ), + ); + } + } elseif ( false === $resizeresult ) { + $results = array( + 'success' => false, + 'id' => $id, + /* translators: 1: File-name of the image 2: the error message, translated elsewhere */ + 'message' => sprintf( esc_html__( 'ERROR: %1$s (%2$s)', 'imsanity' ), $oldpath, esc_html__( 'wp_get_image_editor missing', 'imsanity' ) ), + ); + } else { + $results = array( + 'success' => false, + 'id' => $id, + /* translators: 1: File-name of the image 2: the error message, translated elsewhere */ + 'message' => sprintf( esc_html__( 'ERROR: %1$s (%2$s)', 'imsanity' ), $oldpath, htmlentities( $resizeresult->get_error_message() ) ), + ); + } + } else { + $results = array( + 'success' => true, + 'id' => $id, + /* translators: %s: File-name of the image */ + 'message' => sprintf( esc_html__( 'SKIPPED: %s (Resize not required)', 'imsanity' ), $oldpath ) . " -- $oldw x $oldh", + ); + if ( empty( $meta['width'] ) || empty( $meta['height'] ) ) { + if ( empty( $meta['width'] ) || $meta['width'] > $oldw ) { + $meta['width'] = $oldw; + } + if ( empty( $meta['height'] ) || $meta['height'] > $oldh ) { + $meta['height'] = $oldh; + } + wp_update_attachment_metadata( $id, $meta ); + } + } + } else { + $results = array( + 'success' => false, + 'id' => $id, + /* translators: %s: ID number of the image */ + 'message' => sprintf( esc_html__( 'ERROR: Attachment with ID of %d not found', 'imsanity' ), intval( $id ) ), + ); + } + + // If there is a quota we need to reset the directory size cache so it will re-calculate. + delete_transient( 'dirsize_cache' ); + + die( json_encode( $results ) ); +} diff --git a/wp-content/plugins/imsanity/changelog.txt b/wp-content/plugins/imsanity/changelog.txt new file mode 100644 index 0000000..aa4cc09 --- /dev/null +++ b/wp-content/plugins/imsanity/changelog.txt @@ -0,0 +1,74 @@ += 2.4.3 = +* changed: default size from 2048 to 1920 +* fixed: WP Import plugin breaks during Media imports +* fixed: setting a value to 0 causes errors on multi-site installs +* fixed: conversion settings not displaying correctly on multi-site + += 2.4.2 = +* changed: noresize in filename also works in batch processing +* fixed: error message does not contain filename when file is missing +* fixed: notice on network settings when deep scan option has not been set before + += 2.4.1 = +* fixed: bulk resizer scan returning incorrect results +* fixed: sprintf error during resizing and upload + += 2.4.0 = +* added: deep scanning option for when attachment metadata isn't updating properly +* fixed: uploads from Gutenberg not detected properly +* fixed: some other plugin(s) trying to muck with the Imsanity settings links and breaking things +* fixed: undefined notice for query during ajax operation +* fixed: stale metadata could prevent further resizing + += 2.3.9 = +* fixed: PNG to JPG filled transparency with black instead of white +* fixed: auto-rotation causes incorrect scaling +* fixed: results box stops scrolling at line 28 +* added: pre-emptive checks on file parameter to prevent read errors with getimagesize() + += 2.3.8 = +* added: 'imsanity_crop_image' filter to crop images during resizing +* added: increased security of network settings and AJAX requests +* changed: metadata fetch and update use correct functions instead of direct database queries +* changed: bulk resize search is kinder to your database +* fixed: bulk resize could produce a larger image +* fixed: image file permissions not checked prior to resizing +* fixed: EWWW Image Optimizer optimizes image during resizing instead of waiting for metadata generation +* fixed: JPG quality not displaying correctly on network/multisite settings page +* fixed: some strings were not translatable +* fixed: bulk resize results container was not scrollable +* removed: legacy resize function for WP lower than 3.5 + += 2.3.7 = +* fixed: uploads to Media Library not detected properly +* changed: default JPG quality is now 82, to match the WordPress default +* changed: fr_FR and ru_RU moved to WP.org language packs +* changed: new maintainer + += 2.3.6 = +* tested up to WP 4.4 +* if resized image is not smaller than original, then keep original +* allow IMSANITY_AJAX_MAX_RECORDS to be overridden in wp-config.php +* if png-to-jpg is enabled, replace png transparency with white + += 2.3.5 = +* Add option to hide Imsanity girl logo image on settings screen + += 2.3.4 = +* Security update to network settings page + += 2.3.3 = +* Update default size from 1024 to 2048 +* Tested up to WordPress 4.1.1 +* Move screenshots to /assets folder +* Added 256x256 icon + += 2.3.2 = +* Add PNG-To-JPG Option thanks to Jody Nesbitt + += 2.3.1 = +* ignore errors if EXIF data is not readable +* show counter when bulk resizing images + += 2.3.0 = +* fix for incorrectly identifying media uploads as coming from 'other' on WP 4+ diff --git a/wp-content/plugins/imsanity/images/ajax-loader.gif b/wp-content/plugins/imsanity/images/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..f3158f6b1201edd41a7f12c1b1709b30b28c9b45 GIT binary patch literal 3741 zcmbuCdr(sc7RK*QZg>bt2q`atl8}UekqH77Sg?U45FlU>X^{=xAOQg}8zL*{+MPfm z^3=$yys9M#N)RPcToq+`O9WjNtN5VHLlH`Kp|m^NcE-KI$2!ghv%8Z&GIM7#zkKIA z-#O=oga-TgCg1@)@S`CxHa2$T$dTgWVzpZR{Q2{_xjCs+`ts#V!b_7#_LgX7AdkJ? zosI?p0DvFGM(~_i37HA-H~Z6UaYEvbq)cz0Pdt3+M5pYX;)n>pP|>c;1W{sAC@X*n zKXFe@75e!GG6Q{lgV=03^VLtBl0?D)qJ;SAMu6}FGDZW201XDf{|FB-(ERL+58WwO zLrVm}XReI3aV%;d2|v`CHN?JCcb)7r-`bGqsQQzuk6BZO~LR++S@I1CwW zSRD=G4^x@@-Fz|}20y|a+E=e6bFqIOpk}&gnmZ4}D&7D=00eOG2SD?(Rdgc7wC#J> z?wMAm8aQi)QP`py@sq*y+IffVzc~Wd;}1Dl?}!F#XFK}=lBzM?&wKc|VEz$TwI;0X zLI*}SNV#Vrd7{tu)NV@BeI5k#nZ)0%k)+wG7^+r-7zFXc5&6AxOw z4l37c(*1TGatR@haaGK?kFtE-l6+5_w|7wkD(iZ^)THH=ybEE2I*0_7ft}70Hh9pO zSwQ=#8+pN-JheORdneqq>7vTWf-=u)5w$DX3G>ug*x_!{-enq4$!3xWYY~-1>dN&l zqy(-N(HN+ncer<=8p7L4FI68HopC^krhqiZy7COIzgul7Wjk@KTlLqW=qGXVs!P$_ zX?3;(HuSjyQ3oPo@11NXyymMG(r;{RC>;!R zP{vbJwaGjgW;ieTad34$>m&!!4}BQ3&vv1|ZaQv9HNqNSzrCI-9zfr^a}q;Pn=I%U zb+2_CmNz3axGVP6D;=}X?wa!f>@AKI%1cJ^htpf__A3hF_mc9Zbk>hkBCHk)9DwV~HCu~B?COAyxqc{kQd$sLj~D;TiV%jr-78AKxJCt)h! z=&?_1#gwyEJxMzrTLsH-{m%AASTNkG7}7LhC>JoZ#APHbAMm#=+cMkv^F}kVOEX4l zdH=xpEnZEnjq_gADx<<21sQE1vKT=v;<8uDg-)8bt-~eGIh4FiDp(_SU8~wS;4+UJ0^tJr` z*{{t<1@jNM!5}KC5SEwW6MyLTzGR=)qE&@dJK^kxN8snBREL%IJp*>2x_p2 zSQqmH5zfhFqi}=6K=GOxBnn#U)Vz=Wn~)aq|v z_0f6Q%@?X6#l9$2`zR(%x0Omi)U+R#ai+1|2P+5Nl?fJktPu+r4+yB5fVB1J6>5`1 zx|QKJLR__&oB6*_sYD2xxI@g%m5wmvhTAN9dTECJH%V9Pe=AgnuNo}f8AC3zyn~r_ zTxLo|>6&SUt;Yh!?;LE!dSC19LK$p8qY}hk`FSDWnS#0~@A5H^-J#z?wCc}eG=dbz zAtktnOEX4lsTJK|mHnDl;z4Eo;%5*&*JOb)vQ~x(oHv#aftg;_5^6-!50f3nv6@q1 z*;hsWmFy{3!pDer;j$B*V&-OT&tOr-C%p%TXY3A`85XC1(NCf`7C)-VGtRu5`wK4& zEE?ESL9_Y#iY6tW)Wk+yN{HdU;VJ3K5`r1PoYip6p8P+Rt%bh3ss@4e-X(Nxx(2>( zcj;6N&OSxOw_6d8KPz|GLlcCgEptsFhK~ox8z}oiC|K?T2WiKnb2roRK}}D_{r9>b zlib63#LJ!}6Tju<4R>h^_B}lxF@hR_FVFtv4xRVSAVFB`s4xP~FiNLnpv^Qn3;2E8 zjSB|bbB9vx2ZStb`t%pqIUaFSQD%6-NLCIdu?QP2je}n|!fjmFAs^}QLxfyg7r4ry zs|cc=ta1atU1Oja%$TS(h-9Gsq?}mEi#SwmWC^LTmgifp^i<>$6N?m!!fsMP<@~~% zs}QsFruN>8(>ph`5Mp?U;j2wqkK6f^!@YkEOo3wOz&d|xI>*bWkZmt%;HTAa3d%OX XhP0;&FzjoY@g-?Fu6y6E*x&sdhl^+S literal 0 HcmV?d00001 diff --git a/wp-content/plugins/imsanity/imsanity.php b/wp-content/plugins/imsanity/imsanity.php new file mode 100644 index 0000000..16efd5e --- /dev/null +++ b/wp-content/plugins/imsanity/imsanity.php @@ -0,0 +1,269 @@ + 0 ) { + return IMSANITY_SOURCE_POST; + } + + // If the referrer is the post editor, that's a good indication the image is attached to a post. + if ( ! empty( $_SERVER['HTTP_REFERER'] ) && strpos( $_SERVER['HTTP_REFERER'], '/post.php' ) ) { + return IMSANITY_SOURCE_POST; + } + + // Post_id of 0 is 3.x otherwise use the action parameter. + if ( 0 === $id || 'upload-attachment' === $action ) { + return IMSANITY_SOURCE_LIBRARY; + } + + // We don't know where this one came from but $_REQUEST['_wp_http_referer'] may contain info. + return IMSANITY_SOURCE_OTHER; +} + +/** + * Given the source, returns the max width/height. + * + * @example: list( $w, $h ) = imsanity_get_max_width_height( IMSANITY_SOURCE_LIBRARY ); + * @param int $source One of IMSANITY_SOURCE_POST | IMSANITY_SOURCE_LIBRARY | IMSANITY_SOURCE_OTHER. + */ +function imsanity_get_max_width_height( $source ) { + $w = imsanity_get_option( 'imsanity_max_width', IMSANITY_DEFAULT_MAX_WIDTH ); + $h = imsanity_get_option( 'imsanity_max_height', IMSANITY_DEFAULT_MAX_HEIGHT ); + + switch ( $source ) { + case IMSANITY_SOURCE_POST: + break; + case IMSANITY_SOURCE_LIBRARY: + $w = imsanity_get_option( 'imsanity_max_width_library', $w ); + $h = imsanity_get_option( 'imsanity_max_height_library', $h ); + break; + default: + $w = imsanity_get_option( 'imsanity_max_width_other', $w ); + $h = imsanity_get_option( 'imsanity_max_height_other', $h ); + break; + } + + return array( $w, $h ); +} + +/** + * Handler after a file has been uploaded. If the file is an image, check the size + * to see if it is too big and, if so, resize and overwrite the original. + * + * @param Array $params The parameters submitted with the upload. + */ +function imsanity_handle_upload( $params ) { + + // If "noresize" is included in the filename then we will bypass imsanity scaling. + if ( strpos( $params['file'], 'noresize' ) !== false ) { + return $params; + } + + // If preferences specify so then we can convert an original bmp or png file into jpg. + if ( 'image/bmp' === $params['type'] && imsanity_get_option( 'imsanity_bmp_to_jpg', IMSANITY_DEFAULT_BMP_TO_JPG ) ) { + $params = imsanity_convert_to_jpg( 'bmp', $params ); + } + + if ( 'image/png' === $params['type'] && imsanity_get_option( 'imsanity_png_to_jpg', IMSANITY_DEFAULT_PNG_TO_JPG ) ) { + $params = imsanity_convert_to_jpg( 'png', $params ); + } + + // Make sure this is a type of image that we want to convert and that it exists. + $oldpath = $params['file']; + + if ( ( ! is_wp_error( $params ) ) && is_file( $oldpath ) && is_readable( $oldpath ) && is_writable( $oldpath ) && filesize( $oldpath ) > 0 && in_array( $params['type'], array( 'image/png', 'image/gif', 'image/jpeg' ), true ) ) { + + // figure out where the upload is coming from. + $source = imsanity_get_source(); + + list( $maxw,$maxh ) = imsanity_get_max_width_height( $source ); + + list( $oldw, $oldh ) = getimagesize( $oldpath ); + + if ( ( $oldw > $maxw && $maxw > 0 ) || ( $oldh > $maxh && $maxh > 0 ) ) { + $quality = imsanity_get_option( 'imsanity_quality', IMSANITY_DEFAULT_QUALITY ); + + $ftype = imsanity_quick_mimetype( $oldpath ); + $orientation = imsanity_get_orientation( $oldpath, $ftype ); + // If we are going to rotate the image 90 degrees during the resize, swap the existing image dimensions. + if ( 6 === (int) $orientation || 8 === (int) $orientation ) { + $old_oldw = $oldw; + $oldw = $oldh; + $oldh = $old_oldw; + } + + if ( $oldw > $maxw && $maxw > 0 && $oldh > $maxh && $maxh > 0 && apply_filters( 'imsanity_crop_image', false ) ) { + $neww = $maxw; + $newh = $maxh; + } else { + list( $neww, $newh ) = wp_constrain_dimensions( $oldw, $oldh, $maxw, $maxh ); + } + + remove_filter( 'wp_image_editors', 'ewww_image_optimizer_load_editor', 60 ); + $resizeresult = imsanity_image_resize( $oldpath, $neww, $newh, apply_filters( 'imsanity_crop_image', false ), null, null, $quality ); + if ( function_exists( 'ewww_image_optimizer_load_editor' ) ) { + add_filter( 'wp_image_editors', 'ewww_image_optimizer_load_editor', 60 ); + } + + if ( $resizeresult && ! is_wp_error( $resizeresult ) ) { + $newpath = $resizeresult; + + if ( is_file( $newpath ) && filesize( $newpath ) < filesize( $oldpath ) ) { + // we saved some file space. remove original and replace with resized image. + unlink( $oldpath ); + rename( $newpath, $oldpath ); + } elseif ( is_file( $newpath ) ) { + // theresized image is actually bigger in filesize (most likely due to jpg quality). + // keep the old one and just get rid of the resized image. + unlink( $newpath ); + } + } elseif ( false === $resizeresult ) { + return $params; + } elseif ( is_wp_error( $resizeresult ) ) { + // resize didn't work, likely because the image processing libraries are missing. + // remove the old image so we don't leave orphan files hanging around. + unlink( $oldpath ); + + $params = wp_handle_upload_error( + $oldpath, + sprintf( + /* translators: 1: error message 2: link to support forums */ + esc_html__( 'Imsanity was unable to resize this image for the following reason: %1$s. If you continue to see this error message, you may need to install missing server components. If you think you have discovered a bug, please report it on the Imsanity support forum: %2$s', 'imsanity' ), + $resizeresult->get_error_message(), + 'https://wordpress.org/support/plugin/imsanity' + ) + ); + } else { + return $params; + } + } + } + clearstatcache(); + return $params; +} + + +/** + * Read in the image file from the params and then save as a new jpg file. + * if successful, remove the original image and alter the return + * parameters to return the new jpg instead of the original + * + * @param string $type Type of the image to be converted: 'bmp' or 'png'. + * @param array $params The upload parameters. + * @return array altered params + */ +function imsanity_convert_to_jpg( $type, $params ) { + + $img = null; + + if ( 'bmp' === $type ) { + include_once( 'libs/imagecreatefrombmp.php' ); + $img = imagecreatefrombmp( $params['file'] ); + } elseif ( 'png' === $type ) { + if ( ! function_exists( 'imagecreatefrompng' ) ) { + return wp_handle_upload_error( $params['file'], esc_html__( 'Imsanity requires the GD library to convert PNG images to JPG', 'imsanity' ) ); + } + + $input = imagecreatefrompng( $params['file'] ); + // convert png transparency to white. + $img = imagecreatetruecolor( imagesx( $input ), imagesy( $input ) ); + imagefill( $img, 0, 0, imagecolorallocate( $img, 255, 255, 255 ) ); + imagealphablending( $img, true ); + imagecopy( $img, $input, 0, 0, 0, 0, imagesx( $input ), imagesy( $input ) ); + } else { + return wp_handle_upload_error( $params['file'], esc_html__( 'Unknown image type specified in imsanity_convert_to_jpg', 'imsanity' ) ); + } + + // We need to change the extension from the original to .jpg so we have to ensure it will be a unique filename. + $uploads = wp_upload_dir(); + $oldfilename = basename( $params['file'] ); + $newfilename = basename( str_ireplace( '.' . $type, '.jpg', $oldfilename ) ); + $newfilename = wp_unique_filename( $uploads['path'], $newfilename ); + + $quality = imsanity_get_option( 'imsanity_quality', IMSANITY_DEFAULT_QUALITY ); + + if ( imagejpeg( $img, $uploads['path'] . '/' . $newfilename, $quality ) ) { + // Conversion succeeded: remove the original bmp & remap the params. + unlink( $params['file'] ); + + $params['file'] = $uploads['path'] . '/' . $newfilename; + $params['url'] = $uploads['url'] . '/' . $newfilename; + $params['type'] = 'image/jpeg'; + } else { + unlink( $params['file'] ); + + return wp_handle_upload_error( + $oldfilename, + /* translators: %s: the image mime type */ + sprintf( esc_html__( 'Imsanity was unable to process the %s file. If you continue to see this error you may need to disable the conversion option in the Imsanity settings.', 'imsanity' ), $type ) + ); + } + + return $params; +} + +/* add filters to hook into uploads */ +add_filter( 'wp_handle_upload', 'imsanity_handle_upload' ); +add_action( 'plugins_loaded', 'imsanity_init' ); diff --git a/wp-content/plugins/imsanity/languages/imsanity-es_MX.mo b/wp-content/plugins/imsanity/languages/imsanity-es_MX.mo new file mode 100644 index 0000000000000000000000000000000000000000..184d16a774c96d6c19bf1d4afe56e02f755dad9f GIT binary patch literal 6875 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 recommended that you backup \n" +"\t\tyour wp-content/uploads folder before proceeding. You will have a chance to preview and select the images to convert.\n" +"\t\tIt is also recommended that you initially select only 1 or 2 images and verify that everything is ok before\n" +"\t\tprocessing your entire library. You have been warned!" +msgstr "" +"Importante! Es recomendable que realizar el backup de carpeta wp-content/uploads \\\t\\\tyour antes de proceder. Usted tendrá la oportunidad de escuchar y seleccionar las imágenes a convertir.\n" +"\\\t\\\tIt también se recomienda que inicialmente seleccionar sólo 1 ó 2 imágenes y comprobar que todo está bien antes de \\\t\\\tprocessing la biblioteca entera. Estáis avisados." + +#: settings.php:530 +msgid "WARNING: BULK RESIZE WILL ALTER YOUR ORIGINAL IMAGES AND CANNOT BE UNDONE!" +msgstr "ADVERTENCIA: A GRANEL RESIZE ALTERARà SUS IMÃGENES ORIGINALES Y NO SE PUEDE DESHACER!" + +#: settings.php:519 +msgid "Bulk Resize Images" +msgstr "A granel redimensionar imágenes" + +#: settings.php:501 +msgid "Imsanity Settings" +msgstr "Configuración de Imsanity" + +#: settings.php:484 +msgid "

                        Imsanity Version %s by %s

                        " +msgstr "

                        Imsanity versión %s de %s

                        " + +#: settings.php:469 +msgid "" +"

                        Imsanity automaticaly reduces the size of images that are larger than the specified maximum and replaces the original\n" +"\t\twith one of a more \"sane\" size. Site contributors don\\'t need to concern themselves with manually scaling images\n" +"\t\tand can upload them directly from their camera or phone.

                        \n" +"\n" +"\t\t

                        The resolution of modern cameras is larger than necessary for typical web display.\n" +"\t\tThe average computer screen is not big enough to display a 3 megapixel camera-phone image at full resolution.\n" +"\t\tWordPress does a good job of creating scaled-down copies which can be used, however the original images\n" +"\t\tare permanently stored, taking up disk quota and, if used on a page, create a poor viewer experience.

                        \n" +"\n" +"\t\t

                        This plugin is designed for sites where high-resolution images are not necessary and/or site contributors\n" +"\t\tdo not want (or understand how) to deal with scaling images. This plugin should not be used on\n" +"\t\tsites for which original, high-resolution images must be stored.

                        \n" +"\n" +"\t\t

                        Be sure to save back-ups of your full-sized images if you wish to keep them.

                        " +msgstr "" +"

                        Imsanity reduce de forma automática el tamaño de las imágenes que son más grandes que el máximo especificado y sustituye al original\n" +"\\\t\\\twith uno de un tamaño más\"sano\" . Colaboradores del sitio don\\'t tiene que preocuparse por la ampliación de imágenes manualmente\n" +"\\\t\\\tand puede cargar directamente desde su cámara o teléfono . < / P>\n" +"\n" +"\\\t\\\t

                        La resolución de las cámaras modernas es más grande de lo necesario para la visualización web típica .\n" +"\\\t\\pantalla media lLa no es lo suficientemente grande como para mostrar una imagen de la cámara - teléfono 3 megapíxeles con la máxima resolución .\n" +"\\\t\\\tWordPress hace un buen trabajo de crear a escala reducida copias que se pueden utilizar , sin embargo, las imágenes originales\n" +"\\\t\\\tara almacenado de forma permanente , tomando cuota de disco y , si se utiliza en una página, crear una experiencia pobre espectador. < / p>\n" +"\n" +"\\\t\\\t < p> Este plugin está diseñado para los sitios donde las imágenes de alta resolución no son necesarios y / o sitio contribuyentes\n" +"\\\t\\\tno quieren ( o entender cómo) para hacer frente a las imágenes de escala. Este complemento no se debe utilizar en\n" +"\\\t\\\tsites para que las imágenes originales de alta resolución deben ser almacenados .

                        \n" +"\n" +"\\\t\\\t

                        Asegúrese de guardar copias de seguridad de toda su imágenes de tamaño si lo desea para mantenerlos .

                        " + +#: settings.php:467 +msgid "Imsanity automatically resizes insanely huge image uploads" +msgstr "Automáticamente cambia el tamaño de imagen enorme subidas" + +#: settings.php:286 +msgid "Update Settings" +msgstr "Configuración de actualización" + +#: settings.php:281 settings.php:607 +msgid " (WordPress default is 90)" +msgstr " (Por defecto de WordPress es 90)" + +#: settings.php:271 +msgid "JPG Quality" +msgstr "Calidad JPG" + +#: settings.php:263 +msgid "Convert PNG to JPG" +msgstr "" + +#: settings.php:258 settings.php:266 settings.php:614 settings.php:622 +msgid "No" +msgstr "No" + +#: settings.php:257 settings.php:265 settings.php:613 settings.php:621 +msgid "Yes" +msgstr "Si" + +#: settings.php:255 +msgid "Convert BMP to JPG" +msgstr "Convertir BMP a JPG" + +#: settings.php:247 settings.php:589 +msgid "Images uploaded elsewhere (Theme headers, backgrounds, logos, etc)" +msgstr "Imágenes subidas en otros lugares (tema cabeceras, fondos, logotipos, etc.)" + +#: settings.php:239 settings.php:582 +msgid "Images uploaded directly to the Media Library" +msgstr "Imágenes subidas directamente a la biblioteca multimedia" + +#: settings.php:234 settings.php:242 settings.php:250 settings.php:577 +#: settings.php:584 settings.php:591 +msgid " (or enter 0 to disable)" +msgstr " (o escriba 0 para desactivar)" + +#: settings.php:231 settings.php:575 +msgid "Images uploaded within a Page/Post" +msgstr "Imágenes subidas dentro de un página y Post" + +#: settings.php:225 +msgid "Use global Imsanity settings (below) for all sites" +msgstr "Utilice la configuración global Imsanity (abajo) para todos los sitios" + +#: settings.php:224 +msgid "Allow each site to configure Imsanity settings" +msgstr "Permitir que cada sitio configurar las opciones de Imsanity" + +#: settings.php:221 +msgid "Global Settings Override" +msgstr "Anulación de la configuración global" + +#: settings.php:207 +msgid "Imsanity network settings saved." +msgstr "Configuración de red Imsanity guardado." + +#: settings.php:187 settings.php:200 +msgid "Imsanity Network Settings" +msgstr "Configuración de red Imsanity" + +#: settings.php:40 +msgid "Imsanity Plugin Settings" +msgstr "Configuración de Imsanity" + +#: libs/imagecreatefrombmp.php:129 +msgid "imagecreatefrombmp: %s has %d bits and this is not supported!" +msgstr "imagecreatefrombmp: %s tiene %d bits y esto no es compatible." + +#: libs/imagecreatefrombmp.php:43 +msgid "imagecreatefrombmp: Can not obtain filesize of %s !" +msgstr "imagecreatefrombmp: no puede obtener tamaño de %s!" + +#: libs/imagecreatefrombmp.php:21 +msgid "imagecreatefrombmp: %s is not a bitmap!" +msgstr "imagecreatefrombmp: %s no es un mapa de bits." + +#: libs/imagecreatefrombmp.php:14 +msgid "imagecreatefrombmp: Can not open %s!" +msgstr "imagecreatefrombmp: no se puede abrir %s!" + +#: ajax.php:185 +msgid "ERROR: (Attachment with ID of %s not found) " +msgstr "ERROR: (Adjunto con el ID de %s no encontrado) " + +#: ajax.php:179 +msgid "SKIPPED: %s (Resize not required)" +msgstr "OMITIDOS: %s (no es necesario redimensionar)" + +#: ajax.php:174 +msgid "ERROR: %s (%s)" +msgstr "ERROR: %s (%s)" + +#: ajax.php:170 +msgid "OK: %s" +msgstr "Bueno %s" + +#: ajax.php:98 +msgid "Missing ID Parameter" +msgstr "Falta el parámetro ID" \ No newline at end of file diff --git a/wp-content/plugins/imsanity/languages/imsanity-sv_SE.mo b/wp-content/plugins/imsanity/languages/imsanity-sv_SE.mo new file mode 100644 index 0000000000000000000000000000000000000000..b45c674a131e4ef2f8a4d4b5060b5f87038f4cd8 GIT binary patch literal 6580 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 recommended that you backup \n" +"\t\tyour wp-content/uploads folder before proceeding. You will have a chance to preview and select the images to convert.\n" +"\t\tIt is also recommended that you initially select only 1 or 2 images and verify that everything is ok before\n" +"\t\tprocessing your entire library. You have been warned!" +msgstr "" +"Du rekommenderas STARKT att ta backup på \n" +"\t\tdin wp-content/uploads mapp innan du fortsätter. Du kommer att få möjlighet att förhandsvisa och välja bilder att konvertera.\n" +"\t\tDu rekommenderas också att först prova med 1 eller 2 bilder och kontrollera att all är ok innan\n" +"\t\tdu processar hela mediabiblioteket. Du har blivit varnad!" + +#: settings.php:530 +msgid "WARNING: BULK RESIZE WILL ALTER YOUR ORIGINAL IMAGES AND CANNOT BE UNDONE!" +msgstr "VARNING: BULKSKALNING KOMMER ATT ÄNDRA ORIGINALBILDERNA OCH KAN INTE ÅNGRAS!" + +#: settings.php:519 +msgid "Bulk Resize Images" +msgstr "Bulkskala Bilder" + +#: settings.php:501 +msgid "Imsanity Settings" +msgstr "Imsanity Inställningar" + +#: settings.php:484 +msgid "

                        Imsanity Version %s by %s

                        " +msgstr "

                        Imsanity Version %s av %s

                        " + +#: settings.php:469 +msgid "" +"

                        Imsanity automaticaly reduces the size of images that are larger than the specified maximum and replaces the original\n" +"\t\twith one of a more \"sane\" size. Site contributors don\\'t need to concern themselves with manually scaling images\n" +"\t\tand can upload them directly from their camera or phone.

                        \n" +"\n" +"\t\t

                        The resolution of modern cameras is larger than necessary for typical web display.\n" +"\t\tThe average computer screen is not big enough to display a 3 megapixel camera-phone image at full resolution.\n" +"\t\tWordPress does a good job of creating scaled-down copies which can be used, however the original images\n" +"\t\tare permanently stored, taking up disk quota and, if used on a page, create a poor viewer experience.

                        \n" +"\n" +"\t\t

                        This plugin is designed for sites where high-resolution images are not necessary and/or site contributors\n" +"\t\tdo not want (or understand how) to deal with scaling images. This plugin should not be used on\n" +"\t\tsites for which original, high-resolution images must be stored.

                        \n" +"\n" +"\t\t

                        Be sure to save back-ups of your full-sized images if you wish to keep them.

                        " +msgstr "" +"

                        Imsanity reducerar automatiskt storleken på bilder som är större än den specificerade maxstorleken och ersätter originalet\n" +"\t\tmed en version som har en mer \"sund\" storlek. Webbplatsmedarbetare behöver inte bekymra sig om att manuellt skala bilder\n" +"\t\toch kan ladda upp dem direkt från sin kamera eller mobil.

                        \n" +"\n" +"\t\t

                        Upplösningen på moderna kameror är högre än nödvändigt för vanlig webbvisning.\n" +"\t\tDen genomsnittliga datorskärmen är inte stor nog att visa en 3 megapixels bild från kamera/telefon i full upplösning.\n" +"\t\tWordPress gör ett bra jobb med att skapa nedskalade kopior som kan användas, men originalbilderna\n" +"\t\tlagras permanent och upptar diskutrymme och skapar en dålig visuell upplevelse för besökaren om de används på en sida.

                        \n" +"\n" +"\t\t

                        Detta insticksprogram är designat för webbplatser där högupplösta bilder inte är nödvändiga och/eller webbplatsmedarbetare\n" +"\t\tinte vill (eller kan) skala bilder. Detta insticksprogram bör inte användas på\n" +"\t\twebbplatser där högupplösta bildoriginal måste lagras.

                        \n" +"\n" +"\t\t

                        Se till att spara kopior av dina bildoriginal i full storlek om du vill behålla dem.

                        " + +#: settings.php:467 +msgid "Imsanity automatically resizes insanely huge image uploads" +msgstr "Imsanity förminskar automatiskt uppladdade bilder som är galet stora" + +#: settings.php:286 +msgid "Update Settings" +msgstr "Uppdatera Inställningar" + +#: settings.php:281 settings.php:607 +msgid " (WordPress default is 90)" +msgstr " (Wordpress standardinställning är 90)" + +#: settings.php:271 +msgid "JPG Quality" +msgstr "JPG-kvalitet" + +#: settings.php:263 +msgid "Convert PNG to JPG" +msgstr "" + +#: settings.php:258 settings.php:266 settings.php:614 settings.php:622 +msgid "No" +msgstr "Nej" + +#: settings.php:257 settings.php:265 settings.php:613 settings.php:621 +msgid "Yes" +msgstr "Ja" + +#: settings.php:255 +msgid "Convert BMP to JPG" +msgstr "Konvertera BMP till JPG" + +#: settings.php:247 settings.php:589 +msgid "Images uploaded elsewhere (Theme headers, backgrounds, logos, etc)" +msgstr "Bilder uppladdade på andra ställen (Sidhuvud för teman, bakgrunder, logotyper, etc.)" + +#: settings.php:239 settings.php:582 +msgid "Images uploaded directly to the Media Library" +msgstr "Bilder uppladdade direkt till Mediabiblioteket" + +#: settings.php:234 settings.php:242 settings.php:250 settings.php:577 +#: settings.php:584 settings.php:591 +msgid " (or enter 0 to disable)" +msgstr "(eller ange 0 för att deaktivera)" + +#: settings.php:231 settings.php:575 +msgid "Images uploaded within a Page/Post" +msgstr "Bilder uppladdade till en Sida/Inlägg" + +#: settings.php:225 +msgid "Use global Imsanity settings (below) for all sites" +msgstr "Använd Imsanitys globala inställningar (nedan) för alla webbplatser" + +#: settings.php:224 +msgid "Allow each site to configure Imsanity settings" +msgstr "Tillåt varje webbplats att konfigurera Imsanitys inställningar" + +#: settings.php:221 +msgid "Global Settings Override" +msgstr "Åsidosätt Globala Inställningar" + +#: settings.php:207 +msgid "Imsanity network settings saved." +msgstr "Imsanity nätverksinställningar sparades." + +#: settings.php:187 settings.php:200 +msgid "Imsanity Network Settings" +msgstr "Imsanity Nätverksinställningar" + +#: settings.php:40 +msgid "Imsanity Plugin Settings" +msgstr "Imsanity Programinställningar" + +#: libs/imagecreatefrombmp.php:129 +msgid "imagecreatefrombmp: %s has %d bits and this is not supported!" +msgstr "imagecreatefrombmp: %s har %d bits vilket inte stöds!" + +#: libs/imagecreatefrombmp.php:43 +msgid "imagecreatefrombmp: Can not obtain filesize of %s !" +msgstr "imagecreatefrombmp: Kan inte hämta filstorlek %s!" + +#: libs/imagecreatefrombmp.php:21 +msgid "imagecreatefrombmp: %s is not a bitmap!" +msgstr "imagecreatefrombmp: %s är ingen bitmap!" + +#: libs/imagecreatefrombmp.php:14 +msgid "imagecreatefrombmp: Can not open %s!" +msgstr "imagecreatefrombmp: Kan inte öppna %s !" + +#: ajax.php:185 +msgid "ERROR: (Attachment with ID of %s not found) " +msgstr "FEL: (Bilaga med ID %s hittades ej) " + +#: ajax.php:179 +msgid "SKIPPED: %s (Resize not required)" +msgstr "HOPPADE ÖVER: %s (Storleksändring behövs ej)" + +#: ajax.php:174 +msgid "ERROR: %s (%s)" +msgstr "FEL: %s (%s)" + +#: ajax.php:170 +msgid "OK: %s" +msgstr "OK: %s" + +#: ajax.php:98 +msgid "Missing ID Parameter" +msgstr "Saknad ID-parameter" \ No newline at end of file diff --git a/wp-content/plugins/imsanity/languages/readme.txt b/wp-content/plugins/imsanity/languages/readme.txt new file mode 100644 index 0000000..da77263 --- /dev/null +++ b/wp-content/plugins/imsanity/languages/readme.txt @@ -0,0 +1,11 @@ +LANGUAGE TRANSLATION FILES FOR IMSANITY +--------------------------------------- + +If you are interested in creating a language translation for Imsanity then +you're in the right place! We would love your help, and you +can get started translating Imsanity at https://translate.wordpress.org/projects/wp-plugins/imsanity + +Anything you can do to help is greatly appreciated and allows +Imsanity to be more easily used by people all over the world. + +Thank you for supporting Imsanity and all free software! diff --git a/wp-content/plugins/imsanity/libs/imagecreatefrombmp.php b/wp-content/plugins/imsanity/libs/imagecreatefrombmp.php new file mode 100644 index 0000000..a0561e4 --- /dev/null +++ b/wp-content/plugins/imsanity/libs/imagecreatefrombmp.php @@ -0,0 +1,315 @@ + $color ) { + $palette[ $i ] = $color + 16777216; + } + } + } + + // ignore extra bitmap headers. + if ( $meta['headersize'] > $bytes_read ) { + fread( $fh, $meta['headersize'] - $bytes_read ); + } + + // create gd image. + $im = imagecreatetruecolor( $meta['width'], $meta['height'] ); + $data = fread( $fh, $meta['imagesize'] ); + + // uncompress data. + switch ( $meta['compression'] ) { + case 1: + $data = rle8_decode( $data, $meta['width'] ); + break; + case 2: + $data = rle4_decode( $data, $meta['width'] ); + break; + } + + $p = 0; + $vide = chr( 0 ); + $y = $meta['height'] - 1; + /* translators: %s: the image filename */ + $error = sprintf( __( 'imagecreatefrombmp: %s has not enough data!', 'imsanity' ), $filename ); + // loop through the image data beginning with the lower left corner. + while ( $y >= 0 ) { + $x = 0; + while ( $x < $meta['width'] ) { + switch ( $meta['bits'] ) { + case 32: + case 24: + $part = substr( $data, $p, 3 ); + if ( ! $part ) { + trigger_error( $error, E_USER_WARNING ); + return $im; + } + $color = unpack( 'V', $part . $vide ); + break; + case 16: + $part = substr( $data, $p, 2 ); + if ( ! $part ) { + trigger_error( $error, E_USER_WARNING ); + return $im; + } + $color = unpack( 'v', $part ); + if ( empty( $meta['rMask'] ) || 0xf800 !== (int) $meta['rMask'] ) { + $color[1] = ( ( $color[1] & 0x7c00 ) >> 7 ) * 65536 + ( ( $color[1] & 0x03e0 ) >> 2 ) * 256 + ( ( $color[1] & 0x001f ) << 3 ); // 555. + } else { + $color[1] = ( ( $color[1] & 0xf800 ) >> 8 ) * 65536 + ( ( $color[1] & 0x07e0 ) >> 3 ) * 256 + ( ( $color[1] & 0x001f ) << 3 ); // 565. + } + break; + case 8: + $color = unpack( 'n', $vide . substr( $data, $p, 1 ) ); + $color[1] = $palette[ $color[1] + 1 ]; + break; + case 4: + $color = unpack( 'n', $vide . substr( $data, floor( $p ), 1 ) ); + $color[1] = 0 === ( $p * 2 ) % 2 ? $color[1] >> 4 : $color[1] & 0x0F; + $color[1] = $palette[ $color[1] + 1 ]; + break; + case 1: + $color = unpack( 'n', $vide . substr( $data, floor( $p ), 1 ) ); + switch ( ( $p * 8 ) % 8 ) { + case 0: + $color[1] = $color[1] >> 7; + break; + case 1: + $color[1] = ( $color[1] & 0x40 ) >> 6; + break; + case 2: + $color[1] = ( $color[1] & 0x20 ) >> 5; + break; + case 3: + $color[1] = ( $color[1] & 0x10 ) >> 4; + break; + case 4: + $color[1] = ( $color[1] & 0x8 ) >> 3; + break; + case 5: + $color[1] = ( $color[1] & 0x4 ) >> 2; + break; + case 6: + $color[1] = ( $color[1] & 0x2 ) >> 1; + break; + case 7: + $color[1] = ( $color[1] & 0x1 ); + break; + } + $color[1] = $palette[ $color[1] + 1 ]; + break; + default: + /* translators: 1: the image filename 2: bitrate of image */ + trigger_error( sprintf( __( 'imagecreatefrombmp: %1$s has %2$d bits and this is not supported!', 'imsanity' ), $filename, $meta['bits'] ), E_USER_WARNING ); + return false; + } + imagesetpixel( $im, $x, $y, $color[1] ); + $x++; + $p += $meta['bytes']; + } + $y--; + $p += $meta['decal']; + } + fclose( $fh ); + return $im; + } + /** + * The original source for these functions no longer exists, but it appears to come from + * MSDN and has proliferated across many projects with only the stale link which now + * points to https://docs.microsoft.com/en-us/windows/desktop/gdi/bitmap-compression. + */ + /** + * Decoder for RLE8 compression in windows bitmaps. + * + * @param string $str Data to decode. + * @param integer $width Image width. + * + * @return string + */ + function rle8_decode( $str, $width ) { + $linewidth = $width + ( 3 - ( $width - 1 ) % 4 ); + $out = ''; + $cnt = strlen( $str ); + + for ( $i = 0; $i < $cnt; $i++ ) { + $o = ord( $str[ $i ] ); + switch ( $o ) { + case 0: // ESCAPE. + $i++; + switch ( ord( $str[ $i ] ) ) { + case 0: // NEW LINE. + $padcnt = $linewidth - strlen( $out ) % $linewidth; + if ( $padcnt < $linewidth ) { + $out .= str_repeat( chr( 0 ), $padcnt ); // pad line. + } + break; + case 1: // END OF FILE. + $padcnt = $linewidth - strlen( $out ) % $linewidth; + if ( $padcnt < $linewidth ) { + $out .= str_repeat( chr( 0 ), $padcnt ); // pad line. + } + break 3; + case 2: // DELTA. + $i += 2; + break; + default: // ABSOLUTE MODE. + $num = ord( $str[ $i ] ); + for ( $j = 0; $j < $num; $j++ ) { + $out .= $str[ ++$i ]; + } + if ( $num % 2 ) { + $i++; + } + } + break; + default: + $out .= str_repeat( $str[ ++$i ], $o ); + } + } + return $out; + } + + /** + * Decoder for RLE4 compression in windows bitmaps. + * + * @param string $str Data to decode. + * @param integer $width Image width. + * @return string + */ + function rle4_decode( $str, $width ) { + $w = floor( $width / 2 ) + ( $width % 2 ); + $linewidth = $w + ( 3 - ( ( $width - 1 ) / 2 ) % 4 ); + $pixels = array(); + $cnt = strlen( $str ); + $c = 0; + + for ( $i = 0; $i < $cnt; $i++ ) { + $o = ord( $str[ $i ] ); + switch ( $o ) { + case 0: // ESCAPE. + $i++; + switch ( ord( $str[ $i ] ) ) { + case 0: // NEW LINE. + while ( 0 !== count( $pixels ) % $linewidth ) { + $pixels[] = 0; + } + break; + case 1: // END OF FILE. + while ( 0 !== count( $pixels ) % $linewidth ) { + $pixels[] = 0; + } + break 3; + case 2: // DELTA. + $i += 2; + break; + default: // ABSOLUTE MODE. + $num = ord( $str[ $i ] ); + for ( $j = 0; $j < $num; $j++ ) { + if ( 0 === $j % 2 ) { + $c = ord( $str[ ++$i ] ); + $pixels[] = ( $c & 240 ) >> 4; + } else { + $pixels[] = $c & 15; + } + } + + if ( 0 === $num % 2 ) { + $i++; + } + } + break; + default: + $c = ord( $str[ ++$i ] ); + for ( $j = 0; $j < $o; $j++ ) { + $pixels[] = ( 0 === $j % 2 ? ( $c & 240 ) >> 4 : $c & 15 ); + } + } + } + + $out = ''; + if ( count( $pixels ) % 2 ) { + $pixels[] = 0; + } + + $cnt = count( $pixels ) / 2; + + for ( $i = 0; $i < $cnt; $i++ ) { + $out .= chr( 16 * $pixels[ 2 * $i ] + $pixels[ 2 * $i + 1 ] ); + } + + return $out; + } +} diff --git a/wp-content/plugins/imsanity/libs/utils.php b/wp-content/plugins/imsanity/libs/utils.php new file mode 100644 index 0000000..1c5a2cf --- /dev/null +++ b/wp-content/plugins/imsanity/libs/utils.php @@ -0,0 +1,181 @@ +" + . ( $title ? "

                        " . $title . '

                        ' : '' ) + . $message + . '' ); + if ( $die ) { + die(); + } +} + +/** + * Replacement for deprecated image_resize function + * + * @param string $file Image file path. + * @param int $max_w Maximum width to resize to. + * @param int $max_h Maximum height to resize to. + * @param bool $crop Optional. Whether to crop image or resize. + * @param string $suffix Optional. File suffix. + * @param string $dest_path Optional. New image file path. + * @param int $jpeg_quality Optional, default is 90. Image quality percentage. + * @return mixed WP_Error on failure. String with new destination path. + */ +function imsanity_image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 82 ) { + if ( function_exists( 'wp_get_image_editor' ) ) { + $editor = wp_get_image_editor( $file ); + if ( is_wp_error( $editor ) ) { + return $editor; + } + $editor->set_quality( $jpeg_quality ); + + $ftype = imsanity_quick_mimetype( $file ); + + $orientation = imsanity_get_orientation( $file, $ftype ); + // Try to correct for auto-rotation if the info is available. + switch ( $orientation ) { + case 3: + $editor->rotate( 180 ); + break; + case 6: + $editor->rotate( -90 ); + break; + case 8: + $editor->rotate( 90 ); + break; + } + + $resized = $editor->resize( $max_w, $max_h, $crop ); + if ( is_wp_error( $resized ) ) { + return $resized; + } + + $dest_file = $editor->generate_filename( $suffix, $dest_path ); + + // FIX: make sure that the destination file does not exist. this fixes + // an issue during bulk resize where one of the optimized media filenames may get + // used as the temporary file, which causes it to be deleted. + while ( file_exists( $dest_file ) ) { + $dest_file = $editor->generate_filename( 'TMP', $dest_path ); + } + + $saved = $editor->save( $dest_file ); + + if ( is_wp_error( $saved ) ) { + return $saved; + } + + return $dest_file; + } + return false; +} diff --git a/wp-content/plugins/imsanity/license.txt b/wp-content/plugins/imsanity/license.txt new file mode 100644 index 0000000..e1e79fb --- /dev/null +++ b/wp-content/plugins/imsanity/license.txt @@ -0,0 +1,782 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + +Additional Copyrights + +Portions of the software are derived from +Licenses of included software: + +arrive.js + +Copyright (c) 2014-2017 Uzair Farooq + +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. + +optipng + +Copyright (C) 2001-2017 Cosmin Truta and the Contributing Authors. +For the purpose of copyright and licensing, the list of Contributing +Authors is available in the accompanying AUTHORS file. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author(s) be held liable for any damages +arising from the use of this software. + +pngquant.c + +© 1989, 1991 by Jef Poskanzer. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. This software is provided "as is" without express or +implied warranty. + +pngquant.c and rwpng.c/h + +© 1997-2002 by Greg Roelofs; based on an idea by Stefan Schneider. +© 2009-2017 by Kornel Lesiński. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +WebP + +Copyright (c) 2010, Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/wp-content/plugins/imsanity/phpcs.ruleset.xml b/wp-content/plugins/imsanity/phpcs.ruleset.xml new file mode 100644 index 0000000..271d372 --- /dev/null +++ b/wp-content/plugins/imsanity/phpcs.ruleset.xml @@ -0,0 +1,15 @@ + + + Generally-applicable sniffs for WordPress plugins + + */vendor/* + */tests/* + + + + + + + + + diff --git a/wp-content/plugins/imsanity/readme.txt b/wp-content/plugins/imsanity/readme.txt new file mode 100644 index 0000000..e468c00 --- /dev/null +++ b/wp-content/plugins/imsanity/readme.txt @@ -0,0 +1,160 @@ +=== Imsanity === +Contributors: nosilver4u +Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MKMQKCBFFG3WW +Tags: image, scale, resize, space saver, quality +Requires at least: 4.9 +Tested up to: 5.2 +Requires PHP: 5.6 +Stable tag: 2.4.3 +License: GPLv3 + +Imsanity automatically resizes huge image uploads. Are contributors uploading huge photos? Tired of manually scaling? Imsanity to the rescue! + +== Description == + +Imsanity automatically resizes huge image uploads down to a size that is +more reasonable for display in browser, yet still more than large enough for typical website use. +The plugin is configurable with a max width, height and quality. When a contributor uploads an +image that is larger than the configured size, Imsanity will automatically scale it down to the +configured size and replace the original image. + +Imsanity also provides a bulk-resize feature to selectively resize previously uploaded images +to free up disk space. + +This plugin is ideal for blogs that do not require hi-resolution original images +to be stored and/or the contributors don't want (or understand how) to scale images +before uploading. + += Features = + +* Automatically scales large image uploads to a more "sane" size +* Bulk-resize feature to selectively resize existing images +* Allows configuration of max width/height and jpg quality +* Optionally converts BMP files to JPG so image can be scaled +* Once enabled, Imsanity requires no actions on the part of the user +* Uses WordPress built-in image scaling functions + += Translations = + +Imsanity is available in several languages, each of which will be downloaded automatically when you install the plugin. To help translate it into your language, visit https://translate.wordpress.org/projects/wp-plugins/imsanity + += Contribute = + +Imsanity is developed at https://github.com/nosilver4u/imsanity (pull requests are welcome) + +== Installation == + +Automatic Installation: + +1. Go to Admin -> Plugins -> Add New and search for "imsanity" +2. Click the Install Button +3. Click 'Activate' + +Manual Installation: + +1. Download imsanity.zip +2. Unzip and upload the 'imsanity' folder to your '/wp-content/plugins/' directory +3. Activate the plugin through the 'Plugins' menu in WordPress + +== Screenshots == + +1. Imsanity settings page to configure max height/width +2. Imsanity bulk image resize feature + +== Frequently Asked Questions == + += What is Imsanity? = + +Imsanity is a plugin that automatically resizes uploaded images that are larger than the configured max width/height + += Will installing the Imsanity plugin alter existing images in my blog? = + +Activating Imsanity will not alter any existing images. Imsanity resizes images as they are uploaded so +it does not affect existing images unless you specifically use the "Bulk Image Resize" feature on +the Imsanity settings page. The "Bulk Image Resize" feature allows you to selectively resize existing images. + += Why aren't all of my images detected when I try to use the bulk resize feature? = + +Imsanity doesn't search your file system to find large files, instead it looks at the "metadata" +in the WordPress media library database. To override this behavior, enable deep scanning. + += Why am I getting an error saying that my "File is not an image" ? = + +WordPress uses the GD library to handle the image manipulation. GD can be installed and configured to support +various types of images. If GD is not configured to handle a particular image type then you will get +this message when you try to upload it. For more info see http://php.net/manual/en/image.installation.php + += How can I tell Imsanity to ignore a certain image so I can upload it without being resized? = + +You can re-name your file and add "-noresize" to the filename. For example if your file is named +"photo.jpg" you can rename it "photo-noresize.jpg" and Imsanity will ignore it, allowing you +to upload the full-sized image. + +Optionally you can temporarily adjust the max image size settings and set them to a number that is +higher than the resolution of the image you wish to upload + += Why would I need this plugin? = + +Photos taken on any modern camera and even most cellphones are too large for display full-size in a browser. +In the case of modern DSLR cameras, the image sizes are intended for high-quality printing and are ridiculously +over-sized for display on a web page. + +Imsanity allows you to set a sanity limit so that all uploaded images will be constrained +to a reasonable size which is still more than large enough for the needs of a typical website. +Imsanity hooks into WordPress immediately after the image upload, but before WordPress processing +occurs. So WordPress behaves exactly the same in all ways, except it will be as if the contributor +had scaled their image to a reasonable size before uploading. + +The size limit that imsanity uses is configurable. The default value is large enough to fill +the average vistors entire screen without scaling so it is still more than large enough for +typical usage. + += Why would I NOT want to use this plugin? = + +You might not want to use Imsanity if you use WordPress as a stock art download +site, provide high-res images for print or use WordPress as a high-res photo +storage archive. If you are doing any of these things then most likely +you already have a good understanding of image resolution. + += Doesn't WordPress already automatically scale images? = + +When an image is uploaded WordPress keeps the original and, depending on the size of the original, +will create up to 4 smaller sized copies of the file (Large, Medium-Large, Medium, Thumbnail) which are intended +for embedding on your pages. Unless you have special photographic needs, the original usually sits +there unused, but taking up disk quota. + += Why did you spell Insanity wrong? = + +Imsanity is short for "Image Sanity Limit". A sanity limit is a term for limiting something down to +a size or value that is reasonable. + += Where do I go for support? = + +Questions may be posted on the support forum at https://wordpress.org/support/plugin/imsanity but if you don't get an answer, please use https://ewww.io/contact-us/. + +== Changelog == + += 2.4.3 = +* changed: default size from 2048 to 1920 +* fixed: WP Import plugin breaks during Media imports +* fixed: setting a value to 0 causes errors on multi-site +* fixed: conversion settings not displaying correctly on multi-site + += 2.4.2 = +* changed: noresize in filename also works in batch processing +* fixed: error message does not contain filename when file is missing +* fixed: notice on network settings when deep scan option has not been set before + += 2.4.1 = +* fixed: bulk resizer scan returning incorrect results +* fixed: sprintf error during resizing and upload + += 2.4.0 = +* added: deep scanning option for when attachment metadata isn't updating properly +* fixed: uploads from Gutenberg not detected properly +* fixed: some other plugin(s) trying to muck with the Imsanity settings links and breaking things +* fixed: undefined notice for query during ajax operation +* fixed: stale metadata could prevent further resizing + += Earlier versions = +Please refer to the separate changelog.txt file. diff --git a/wp-content/plugins/imsanity/scripts/imsanity.js b/wp-content/plugins/imsanity/scripts/imsanity.js new file mode 100644 index 0000000..ef1c681 --- /dev/null +++ b/wp-content/plugins/imsanity/scripts/imsanity.js @@ -0,0 +1,123 @@ +/** + * imsanity admin javascript functions + */ + +jQuery(document).ready(function($) {$(".fade").fadeTo(5000,1).fadeOut(3000);}); + +/** + * Begin the process of re-sizing all of the checked images + */ +function imsanity_resize_images() +{ + var images = []; + jQuery('.imsanity_image_cb:checked').each(function(i) { + images.push(this.value); + }); + + var target = jQuery('#resize_results'); + target.html(''); + //jQuery(document).scrollTop(target.offset().top); + + // start the recursion + imsanity_resize_next(images,0); +} + +/** + * recursive function for resizing images + */ +function imsanity_resize_next(images,next_index) +{ + if (next_index >= images.length) return imsanity_resize_complete(); + + jQuery.post( + ajaxurl, // (defined by wordpress - points to admin-ajax.php) + {_wpnonce: imsanity_vars._wpnonce, action: 'imsanity_resize_image', id: images[next_index]}, + function(response) + { + var result; + var target = jQuery('#resize_results'); + target.show(); + + try { + result = JSON.parse(response); + target.append('
                        ' + (next_index+1) + '/' + images.length + ' >> ' + result['message'] +'
                        '); + } + catch(e) { + target.append('
                        ' + imsanity_vars.invalid_response + '
                        '); + if (console) { + console.warn(images[next_index] + ': '+ e.message); + console.warn('Invalid JSON Response: ' + response); + } + } + + target.animate({scrollTop: target.prop('scrollHeight')}, 200); + // recurse + imsanity_resize_next(images,next_index+1); + } + ); +} + +/** + * fired when all images have been resized + */ +function imsanity_resize_complete() +{ + var target = jQuery('#resize_results'); + target.append('
                        ' + imsanity_vars.resizing_complete + '
                        '); + target.animate({scrollTop: target.prop('scrollHeight')}); +} + +/** + * ajax post to return all images that are candidates for resizing + * @param string the id of the html element into which results will be appended + */ +function imsanity_load_images(container_id) +{ + var container = jQuery('#'+container_id); + + var target = jQuery('#imsanity_target'); + target.show(); + jQuery('.imsanity-selection').remove(); + jQuery('#imsanity_loading').show(); + + target.animate({height: [250,'swing']},500, function() + { + jQuery(document).scrollTop(container.offset().top); + + jQuery.post( + ajaxurl, // (global defined by wordpress - points to admin-ajax.php) + {_wpnonce: imsanity_vars._wpnonce, action: 'imsanity_get_images'}, + function(response) { + var is_json = true; + try { + var images = jQuery.parseJSON(response); + } catch ( err ) { + is_json = false; + } + if ( ! is_json ) { + console.log( response ); + return false; + } + + jQuery('#imsanity_loading').hide(); + if (images.length > 0) + { + target.append('
                        Select All
                        '); + for (var i = 0; i < images.length; i++) + { + target.append('
                        ' + imsanity_vars.image + ' ' + images[i].id + ': ' + images[i].file +' ('+images[i].width+' x '+images[i].height+')
                        '); + } + if ( ! jQuery( '#resize-submit' ).length ) { + container.append('

                        '); + container.append('
                        + +On our website we offer you the possibility to use so called "Social Media Buttons". To protect your data, we use a solution called "Shariff". Hereby the share buttons are implemented as static images, which contain a link to the corresponding social network site. If you click on such a button, you will be redirected to the respective social network site in the same way, as normal links would do as well. Only in that moment of time the provider of the social network site will get information about you, for example your IP address. If you do not click on such a share button, no data will be transmitted. Information about the collection and usage of your date on the social network sites can be found in the corresponding terms of use of the respective provider. More information about the plugin and the Shariff solution can be found here: https://wordpress.org/plugins/shariff/ + +On our website we offer share buttons for the following services / companies: AddThis, Diaspora, Facebook, Flattr, Flipboard, LinkedIn, Mix, Odnoklassniki, Patreon, PayPal, Pinterest, Pocket, Qzone, Reddit, Telegram, TencentWeibo, Threema, Tumblr, Twitter, VK, Wallabag, Weibo, WhatsApp, Xing.', + 'shariff' + ); + wp_add_privacy_policy_content( 'Shariff Wrapper', wp_kses_post( wpautop( $content, false ) ) ); + } +} +add_action( 'admin_init', 'shariff3uu_privacy' ); + +/** Require Shariff Widget. */ +require dirname( __FILE__ ) . '/includes/class-shariff-widget.php'; + +// Allowed tags for headline. +$allowed_tags = array( + // Direct formatting e.g. . + 'strong' => array(), + 'em' => array(), + 'b' => array(), + 'i' => array(), + 'br' => array(), + // Elements that can be formatted via CSS. + 'span' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'div' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'p' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'h1' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'h2' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'h3' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'h4' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'h5' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'h6' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), + 'hr' => array( + 'class' => array(), + 'style' => array(), + 'id' => array(), + ), +); + +/** Admin options */ +if ( is_admin() ) { + // Include admin_menu.php. + include dirname( __FILE__ ) . '/admin/admin-menu.php'; + // Include admin_notices.php. + include dirname( __FILE__ ) . '/admin/admin-notices.php'; +} + +/** Custom meta box */ +function shariff3uu_include_metabox() { + // Check if user is allowed to publish posts. + if ( current_user_can( 'publish_posts' ) ) { + // Include admin_metabox.php. + include dirname( __FILE__ ) . '/admin/admin-metabox.php'; + } +} +// Check if meta box has been disabled in the options, if not add_action. +if ( ! isset( $shariff3uu['disable_metabox'] ) || isset( $shariff3uu['disable_metabox'] ) && 1 !== $shariff3uu['disable_metabox'] ) { + add_action( 'init', 'shariff3uu_include_metabox' ); +} + +/** + * Add meta links (settings and support forum) to our entry on the plugin page. + * + * @param array $links Array of all current links. + * @param string $file Path to plugin of the current element. + * + * @return array New array including our links to settings and support forum. + */ +function shariff3uu_meta_links( $links, $file ) { + $plugin = plugin_basename( __FILE__ ); + // Create link. + if ( $file === $plugin ) { + return array_merge( + $links, + array( '' . __( 'Settings', 'shariff' ) . '', '' . __( 'Support Forum', 'shariff' ) . '' ) + ); + } + return $links; +} +add_filter( 'plugin_row_meta', 'shariff3uu_meta_links', 10, 2 ); + +/** Initialize translations. */ +function shariff_init_locale() { + if ( function_exists( 'load_plugin_textdomain' ) ) { + load_plugin_textdomain( 'shariff' ); + } +} + +/** Register the wp rest api route and sanitize the input */ +function shariff3uu_sanitize_api() { + register_rest_route( + 'shariff/v1', + '/share_counts', + array( + 'methods' => 'GET', + 'callback' => 'shariff3uu_share_counts', + 'args' => array( + 'url' => array( + 'sanitize_callback' => 'esc_url', + 'required' => true, + 'description' => __( 'URL of the post or page to request share counts for.', 'shariff' ), + ), + 'services' => array( + 'sanitize_callback' => 'sanitize_text_field', + 'required' => true, + 'description' => __( 'A list of services separated by |. Example: twitter|facebook|xing', 'shariff' ), + ), + 'timestamp' => array( + 'sanitize_callback' => 'absint', + 'description' => __( 'Timestamp of the last update of the post. Used for dynamic cache lifespan.', 'shariff' ), + ), + ), + ) + ); +} +add_action( 'rest_api_init', 'shariff3uu_sanitize_api' ); + +/** + * Provide share counts via the wp rest api. + * + * @param WP_REST_Request $request Incoming request. + * + * @return string Returns the share counts for all requested services if available or an error message. + */ +function shariff3uu_share_counts( WP_REST_Request $request ) { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + + // Setup Parameters. + $url = urldecode( $request['url'] ); + $services = $request['services']; + $timestamp = $request['timestamp']; + + // Exit if no url is provided and provide an error message. + if ( empty( $url ) || 'undefined' === $url ) { + return new WP_Error( 'nourl', 'No URL provided!', array( 'status' => 400 ) ); + } + + // Exit if no services are provided and provide an error message. + if ( empty( $services ) || 'undefined' === $services ) { + return new WP_Error( 'noservices', 'No services provided!', array( 'status' => 400 ) ); + } + + // Make sure that the provided url matches the WordPress domain. + $get_url = wp_parse_url( $url ); + $wp_url = wp_parse_url( get_bloginfo( 'url' ) ); + // On an external backend check allowed hosts, else compare that domain is equal. + if ( defined( 'SHARIFF_FRONTENDS' ) ) { + $shariff_frontends = array_flip( explode( '|', SHARIFF_FRONTENDS ) ); + if ( ! isset( $get_url['host'] ) || ! array_key_exists( $get_url['host'], $shariff_frontends ) ) { + return new WP_Error( 'externaldomainnotallowed', 'External domain not allowed by this server!', array( 'status' => 400 ) ); + } + } elseif ( ! isset( $get_url['host'] ) || $get_url['host'] !== $wp_url['host'] ) { + return new WP_Error( 'domainnotallowed', 'Domain not allowed by this server!', array( 'status' => 400 ) ); + } + + // Encode the shareurl. + $post_url = rawurlencode( $url ); + $post_url_raw = $url; + + // Set transient name. + // Transient names can only contain 40 characters, therefore we use a hash (md5 always creates a 32 character hash). + // We need a prefix so we can clean up on uninstall and updates. + $post_hash = 'shariff' . hash( 'md5', $post_url ); + + // Check for ttl option, must be between 60 and 7200 seconds. + if ( isset( $shariff3uu['ttl'] ) ) { + $ttl = absint( $shariff3uu['ttl'] ); + // Make sure ttl is a reasonable number. + if ( $ttl < '61' ) { + $ttl = '60'; + } elseif ( $ttl > '7200' ) { + $ttl = '7200'; + } + } else { + // Else set it to new default (five minutes). + $ttl = '300'; + } + + // Adjust ttl based on the post age. + if ( isset( $timestamp ) && ( ! isset( $shariff3uu['disable_dynamic_cache'] ) || ( isset( $shariff3uu['disable_dynamic_cache'] ) && 1 !== $shariff3uu['disable_dynamic_cache'] ) ) ) { + // The timestamp represents the last time the post or page was modified. + $post_time = intval( $timestamp ); + $current_time = current_time( 'timestamp', true ); + $post_age = round( abs( $current_time - $post_time ) ); + if ( $post_age > '0' ) { + $post_age_days = round( $post_age / 60 / 60 / 24 ); + // Make sure ttl base is not getting too high. + if ( $ttl > '300' ) { + $ttl = '300'; + } + $ttl = round( ( $ttl + $post_age_days * 3 ) * ( $post_age_days * 2 ) ); + } + + // Set minimum ttl to 60 seconds and maximum ttl to one week. + if ( $ttl < '60' ) { + $ttl = '60'; + } elseif ( $ttl > '604800' ) { + $ttl = '604800'; + } + + // In case we get a timestamp older than 01.01.2000 or for example a 0, use a reasonable default value of five minutes. + if ( $post_time < '946684800' ) { + $ttl = '300'; + } + } + + // Set the default value. + $need_update = false; + + // Remove totalnumber for array. + $real_services = str_replace( 'totalnumber|', '', $services ); + $real_services = str_replace( '|totalnumber', '', $real_services ); + + // Explode services. + $service_array = explode( '|', $real_services ); + + // Remove duplicated entries. + $service_array = array_unique( $service_array ); + + // Get old share counts. + if ( get_transient( $post_hash ) !== false ) { + $old_share_counts = get_transient( $post_hash ); + } else { + $old_share_counts = array(); + } + + // Check if we need to update. + if ( get_transient( $post_hash ) !== false ) { + // Check timestamp. + $diff = current_time( 'timestamp', true ) - $old_share_counts['timestamp']; + if ( $diff > $ttl ) { + $need_update = true; + } + // Check if we have a different set of services than stored in the cache. + $diff_array = array_diff_key( array_flip( $service_array ), $old_share_counts ); + if ( ! empty( $diff_array ) ) { + $need_update = true; + // We only need to update the missing service. + $service_array = array_flip( $diff_array ); + } + } else { + $need_update = true; + } + + // Prevent php notices if debug mode is enabled. + $response = ''; + $share_counts = array(); + + // If we do not need an update, use stored data. + if ( false === $need_update ) { + $share_counts = $old_share_counts; + // Provide update info for debugging and support. + $share_counts['updated'] = '0'; + } elseif ( 'totalnumber' === $services ) { + // If only totalnumber is requested we only use cached data. + $share_counts = $old_share_counts; + } elseif ( isset( $shariff3uu['external_host'] ) && ! empty( $shariff3uu['external_host'] ) ) { + // Check if we want to use an external API. + $response = sanitize_text_field( wp_remote_retrieve_body( wp_remote_get( $shariff3uu['external_host'] . '?url=' . rawurlencode( $url ) . '&services=' . $services . '×tamp=' . $timestamp . '"' ) ) ); + // Decode response. + $share_counts = json_decode( $response, true ); + // Save transient. + set_transient( $post_hash, $share_counts, '604800' ); + // Offer a hook to work with the share counts. + do_action( 'shariff_share_counts', $share_counts ); + } else { + // Else we fetch new counts ourselves. + $share_counts = shariff3uu_fetch_sharecounts( $service_array, $old_share_counts, $post_hash, $post_url_raw ); + } + + // Return results, if we have some or an error message if not. + if ( isset( $share_counts ) && null !== $share_counts ) { + return $share_counts; + } else { + return new WP_Error( 'nodata', 'Could not receive any data.', array( 'status' => 400 ) ); + } +} + +/** + * Fetch share counts. + * + * @param array $service_array Array with the desired services. + * @param array $old_share_counts Array of all already stored share counts. + * @param string $post_hash MD5-Hash of the current post. + * @param string $post_url_raw Raw URL of the current post. + * + * @return array Array of all fetched share counts. + */ +function shariff3uu_fetch_sharecounts( $service_array, $old_share_counts, $post_hash, $post_url_raw ) { + // We only need the backend part from the service phps. + $backend = 1; + + // Encode the shareurl. + $post_url = rawurlencode( esc_url( $post_url_raw ) ); + + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + + // Prevent php notices. + $total_count = 0; + $share_counts = array(); + + // Loop through all desired services. + foreach ( $service_array as $service ) { + // Only include services that are not disabled. + if ( ! empty( $service ) && ( ! isset( $shariff3uu['disable'][ $service ] ) || ( isset( $shariff3uu['disable'][ $service ] ) && 0 === $shariff3uu['disable'][ $service ] ) ) ) { + // Determine path. + $path_service_file = dirname( __FILE__ ) . '/services/shariff-' . $service . '.php'; + // Include service files. + if ( file_exists( $path_service_file ) ) { + include $path_service_file; + } + // if we have an error (e.g. a timeout) and we have an old share count for this service, keep it! + if ( array_key_exists( $service, $old_share_counts ) && ( ! array_key_exists( $service, $share_counts ) || empty( $share_counts[ $service ] ) ) ) { + $share_counts[ $service ] = $old_share_counts[ $service ]; + } + } + // Calculate total share count. + if ( isset( $share_counts[ $service ] ) ) { + $total_count = $total_count + $share_counts[ $service ]; + } + } + + // Add total count. + if ( 0 !== $total_count ) { + $share_counts['total'] = $total_count; + } + + // Save transient, if we have counts. + if ( isset( $share_counts ) ) { + // Add current timestamp and url. + $share_counts['timestamp'] = current_time( 'timestamp', true ); + $share_counts['url'] = $post_url_raw; + // Combine different set of services. + if ( get_transient( $post_hash ) !== false ) { + $other_request = get_transient( $post_hash ); + $share_counts = array_merge( $other_request, $share_counts ); + } + // Save transient. + set_transient( $post_hash, $share_counts, '604800' ); + // Offer a hook to work with the share counts. + do_action( 'shariff_share_counts', $share_counts ); + // Update info. + $share_counts['updated'] = 1; + } elseif ( isset( $old_share_counts ) ) { + $share_counts = $old_share_counts; + // Update info. + $share_counts['updated'] = '0'; + } + + // Return share counts. + return $share_counts; +} + +/** + * Fills cache automatically. + */ +function shariff3uu_fill_cache() { + // Amount of posts - set to 100 if not set. + if ( isset( $GLOBALS['shariff3uu']['ranking'] ) && absint( $GLOBALS['shariff3uu']['ranking'] ) > '0' ) { + $numberposts = absint( $GLOBALS['shariff3uu']['ranking'] ); + } else { + $numberposts = '100'; + } + + // Avoid errors if no services are given - instead use the default set of services. + if ( empty( $GLOBALS['shariff3uu']['services'] ) ) { + $services = 'twitter|facebook|linkedin'; + } else { + $services = $GLOBALS['shariff3uu']['services']; + } + + // Explode services. + $service_array = explode( '|', $services ); + + // Arguments for wp_get_recent_posts(). + $args = array( + 'numberposts' => $numberposts, + 'orderby' => 'post_date', + 'order' => 'DESC', + 'post_status' => 'publish', + 'suppress_filters' => false, + ); + + // Catch last 100 posts or whatever number is set for it. + $recent_posts = wp_get_recent_posts( $args ); + if ( $recent_posts ) { + foreach ( $recent_posts as $recent ) { + // Get the url. + $url = get_permalink( $recent['ID'] ); + $post_url = rawurlencode( $url ); + // Set transient name. + $post_hash = 'shariff' . hash( 'md5', $post_url ); + // Get old share counts. + if ( get_transient( $post_hash ) !== false ) { + $old_share_counts = get_transient( $post_hash ); + } else { + $old_share_counts = array(); + } + // Fetch share counts and save them. + shariff3uu_fetch_sharecounts( $service_array, $old_share_counts, $post_hash, $url ); + } + } +} +add_action( 'shariff3uu_fill_cache', 'shariff3uu_fill_cache' ); + +/** + * Adds schedule event in order to fill cache automatically. + */ +function shariff3uu_fill_cache_schedule() { + // Get options manually bc of start on activation. + $shariff3uu_statistic = (array) get_option( 'shariff3uu_statistic' ); + // Check if option is set. + if ( isset( $shariff3uu_statistic['automaticcache'] ) && 1 === $shariff3uu_statistic['automaticcache'] ) { + // Check if job is already scheduled. + if ( ! wp_next_scheduled( 'shariff3uu_fill_cache' ) ) { + // Add cron job. + wp_schedule_event( time(), 'weekly', 'shariff3uu_fill_cache' ); + } + } else { + // Else option is not set therefore remove cron job if scheduled. + if ( wp_next_scheduled( 'shariff3uu_fill_cache' ) ) { + // Remove cron job. + wp_clear_scheduled_hook( 'shariff3uu_fill_cache' ); + } + } +} +add_action( 'shariff3uu_save_statistic_options', 'shariff3uu_fill_cache_schedule' ); + +/** Registers activation hook to start cron job after an update. */ +register_activation_hook( __FILE__, 'shariff3uu_fill_cache_schedule' ); + +/** + * Adds custom weekly cron recurrences. + * + * @param array $schedules Array of existing schedules. + * + * @return array Updated array including our new schedule. + */ +function shariff3uu_fill_cache_schedule_custom_recurrence( $schedules ) { + $schedules['weekly'] = array( + 'display' => __( 'Once weekly', 'shariff' ), + 'interval' => 604800, + ); + return $schedules; +} +add_filter( 'cron_schedules', 'shariff3uu_fill_cache_schedule_custom_recurrence' ); + +/** + * Adds short tag to posts and pages (including custom post types). + * + * @param string $content The current post content. + * + * @return string The post content including our short tag. + */ +function shariff3uu_posts( $content ) { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + + // Do not add Shariff to excerpts or outside the loop, if option is checked. + if ( in_array( 'get_the_excerpt', $GLOBALS['wp_current_filter'], true ) || ( ! in_the_loop() && isset( $shariff3uu['disable_outside_loop'] ) && 1 === $shariff3uu['disable_outside_loop'] ) ) { + return $content; + } + + // Disable share buttons on password protected posts if configured in the admin menu. + if ( ( 1 === post_password_required( get_the_ID() ) || ! empty( $GLOBALS['post']->post_password ) ) && isset( $shariff3uu['disable_on_protected'] ) && 1 === $shariff3uu['disable_on_protected'] ) { + $shariff3uu['add_before']['posts'] = 0; + $shariff3uu['add_before']['posts_blogpage'] = 0; + $shariff3uu['add_before']['pages'] = 0; + $shariff3uu['add_after']['posts'] = 0; + $shariff3uu['add_after']['posts_blogpage'] = 0; + $shariff3uu['add_after']['pages'] = 0; + $shariff3uu['add_after']['custom_type'] = 0; + } + + // If we want to see it as text - replace the slash. + if ( false !== strpos( $content, '/hideshariff' ) ) { + $content = str_replace( '/hideshariff', 'hideshariff', $content ); + } elseif ( false !== strpos( $content, 'hideshariff' ) ) { + // Remove the sign. + $content = str_replace( 'hideshariff', '', $content ); + // Return the content without adding Shariff. + return $content; + } + + // Type of current post. + $current_post_type = get_post_type(); + if ( 'post' === $current_post_type ) { + $current_post_type = 'posts'; + } + + // Prevent php warnings in debug mode. + $add_before = 0; + $add_after = 0; + + // Check if shariff should be added automatically (plugin options). + if ( ! is_singular() ) { + // On blog page. + if ( isset( $shariff3uu['add_before']['posts_blogpage'] ) && 1 === $shariff3uu['add_before']['posts_blogpage'] ) { + $add_before = 1; + } + if ( isset( $shariff3uu['add_after']['posts_blogpage'] ) && 1 === $shariff3uu['add_after']['posts_blogpage'] ) { + $add_after = 1; + } + } elseif ( is_singular( 'post' ) ) { + // On single post. + if ( isset( $shariff3uu['add_before'][ $current_post_type ] ) && 1 === $shariff3uu['add_before'][ $current_post_type ] ) { + $add_before = 1; + } + if ( isset( $shariff3uu['add_after'][ $current_post_type ] ) && 1 === $shariff3uu['add_after'][ $current_post_type ] ) { + $add_after = 1; + } + } elseif ( is_singular( 'page' ) ) { + // On pages. + if ( isset( $shariff3uu['add_before']['pages'] ) && 1 === $shariff3uu['add_before']['pages'] ) { + $add_before = 1; + } + if ( isset( $shariff3uu['add_after']['pages'] ) && 1 === $shariff3uu['add_after']['pages'] ) { + $add_after = 1; + } + } else { + // On custom_post_types. + $all_custom_post_types = get_post_types( array( '_builtin' => false ) ); + if ( is_array( $all_custom_post_types ) ) { + $custom_types = array_keys( $all_custom_post_types ); + // Add shariff, if custom type and option checked in the admin menu. + if ( isset( $shariff3uu['add_before'][ $current_post_type ] ) && 1 === $shariff3uu['add_before'][ $current_post_type ] ) { + $add_before = 1; + } + if ( isset( $shariff3uu['add_after'][ $current_post_type ] ) && 1 === $shariff3uu['add_after'][ $current_post_type ] ) { + $add_after = 1; + } + } + } + + // Check if buttons are enabled on a single post or page via the meta box. + if ( get_post_meta( get_the_ID(), 'shariff_metabox_before', true ) ) { + $add_before = 1; + } + if ( get_post_meta( get_the_ID(), 'shariff_metabox_after', true ) ) { + $add_after = 1; + } + + // Add shariff. + if ( 1 === $add_before ) { + $content = '[shariff]' . $content; + } + if ( 1 === $add_after ) { + $content .= '[shariff]'; + } + + // Return content. + return $content; +} +if ( ! isset( $GLOBALS['shariff3uu']['shortcodeprio'] ) ) { + $GLOBALS['shariff3uu']['shortcodeprio'] = '10'; +} +add_filter( 'the_content', 'shariff3uu_posts', $GLOBALS['shariff3uu']['shortcodeprio'] ); + +/** + * Add shorttag to excerpt. + * + * @param string $content The current content of the excerpt. + * + * @return string The new content of the post including the shorttag. + */ +function shariff3uu_excerpt( $content ) { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + // Remove headline in post. + if ( isset( $shariff3uu['headline'] ) ) { + $content = str_replace( wp_strip_all_tags( $shariff3uu['headline'] ), ' ', $content ); + } + // Add shariff before the excerpt, if option checked in the admin menu. + if ( isset( $shariff3uu['add_before']['excerpt'] ) && 1 === $shariff3uu['add_before']['excerpt'] ) { + $content = do_shortcode( '[shariff]' ) . $content; + } + // Add shariff after the excerpt, if option checked in the admin menu. + if ( isset( $shariff3uu['add_after']['excerpt'] ) && 1 === $shariff3uu['add_after']['excerpt'] ) { + $content .= do_shortcode( '[shariff]' ); + } + return $content; +} +add_filter( 'the_excerpt', 'shariff3uu_excerpt' ); + +/** + * Removes hideshariff from content in cases of excerpts or other plain text usages. + * + * @param string $content The current content of the post. + * + * @return string The modified content without hideshariff. + */ +function shariff3uu_hideshariff( $content ) { + if ( true === strpos( $content, 'hideshariff' ) ) { + $content = str_replace( 'hideshariff', '', $content ); + } + return $content; +} +add_filter( 'the_content', 'shariff3uu_hideshariff', 999 ); + +/** + * Removes shariff from rss feeds. + * + * @param string $content The current content of the post. + * + * @return string The modified content without shariff. + */ +function shariff3uu_remove_from_rss( $content ) { + $content = preg_replace( '/
                        ]*>(.*?)<\/div>/i', '', $content ); + return $content; +} +add_filter( 'the_content_feed', 'shariff3uu_remove_from_rss', 999 ); + +/** + * Adds shariff buttons after bbpress forums. + */ +function shariff3uu_bbp_add_shariff_after_forum() { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + if ( isset( $shariff3uu['add_after']['forum'] ) && 1 === $shariff3uu['add_after']['forum'] ) { + // phpcs:ignore + echo shariff3uu_render( array() ); + } +} +add_action( 'bbp_template_after_forums_loop', 'shariff3uu_bbp_add_shariff_after_forum' ); + +/** + * Adds shariff buttons after bbpress topics. + */ +function shariff3uu_bbp_add_shariff_after_topic() { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + if ( isset( $shariff3uu['add_after']['topic'] ) && 1 === $shariff3uu['add_after']['topic'] ) { + // phpcs:ignore + echo shariff3uu_render( array() ); + } +} +add_action( 'bbp_template_after_topics_loop', 'shariff3uu_bbp_add_shariff_after_topic' ); + +/** + * Adds shariff buttons after bbpress replies. + */ +function shariff3uu_bbp_add_shariff_after_reply() { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + if ( isset( $shariff3uu['add_after']['reply'] ) && 1 === $shariff3uu['add_after']['reply'] ) { + // phpcs:ignore + echo shariff3uu_render( array() ); + } +} +add_action( 'bbp_theme_after_reply_content', 'shariff3uu_bbp_add_shariff_after_reply' ); + +/** + * Adds shariff buttons before bbpress forums. + */ +function shariff3uu_bbp_add_shariff_before_forum() { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + if ( isset( $shariff3uu['add_before']['forum'] ) && 1 === $shariff3uu['add_before']['forum'] ) { + // phpcs:ignore + echo shariff3uu_render( array() ); + } +} +add_action( 'bbp_template_before_forums_loop', 'shariff3uu_bbp_add_shariff_before_forum' ); + +/** + * Adds shariff buttons before bbpress topics. + */ +function shariff3uu_bbp_add_shariff_before_topic() { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + if ( isset( $shariff3uu['add_before']['topic'] ) && 1 === $shariff3uu['add_before']['topic'] ) { + // phpcs:ignore + echo shariff3uu_render( array() ); + } +} +add_action( 'bbp_template_before_topics_loop', 'shariff3uu_bbp_add_shariff_before_topic' ); + +/** + * Adds shariff buttons before bbpress replies. + */ +function shariff3uu_bbp_add_shariff_before_reply() { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + if ( isset( $shariff3uu['add_before']['reply'] ) && 1 === $shariff3uu['add_before']['reply'] ) { + // phpcs:ignore + echo shariff3uu_render( array() ); + } +} +add_action( 'bbp_theme_before_reply_content', 'shariff3uu_bbp_add_shariff_before_reply' ); + +/** + * Adds shariff to custom hooks. + */ +function shariff3uu_add_shariff_custom_hooks() { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + + if ( isset( $shariff3uu['custom_hooks_shortcode'] ) && ! empty( $shariff3uu['custom_hooks_shortcode'] ) ) { + // Replaces shariff with shariffmeta. + $shariff3uu_custom_hooks_shortcode = str_replace( '[shariff ', '[shariffmeta ', $shariff3uu['custom_hooks_shortcode'] ); + + // Extracts attributes. + if ( '[shariffmeta]' !== $shariff3uu_custom_hooks_shortcode ) { + do_shortcode( $shariff3uu_custom_hooks_shortcode ); + } + + if ( isset( $GLOBALS['shariff3uu']['metabox'] ) && ! empty( $GLOBALS['shariff3uu']['metabox'] ) ) { + $shariff3uu_custom_hooks_shortcode = $GLOBALS['shariff3uu']['metabox']; + } else { + $shariff3uu_custom_hooks_shortcode = array(); + } + + // Clears the metabox global. + $GLOBALS['shariff3uu']['metabox'] = ''; + + // phpcs:ignore + echo shariff3uu_render( $shariff3uu_custom_hooks_shortcode ); + } else { + // phpcs:ignore + echo shariff3uu_render( array() ); + } +} +if ( isset( $shariff3uu['custom_hooks'] ) && ! empty( $shariff3uu['custom_hooks'] ) ) { + // Explodes hooks. + $hook_array = explode( '|', $shariff3uu['custom_hooks'] ); + + // Remove duplicated hooks. + $hook_array = array_unique( $hook_array ); + + // Loops through all desired hooks. + foreach ( $hook_array as $hook ) { + add_action( esc_html( $hook ), 'shariff3uu_add_shariff_custom_hooks' ); + } +} + +/** + * Function is called to include the shariff.css in the header of AMP pages. + * Currently only called by the amp_post_template_css hook. + * Supports the AMP plugin by Automatic and the AMP for WP plugin by Ahmed and Mohammed Kaludi. + * We need to strip out all !important in order to pass AMP test. + */ +function shariff3uu_amp_css() { + // Get options. + $shariff3uu = $GLOBALS['shariff3uu']; + // Output CSS. + ob_start(); + include dirname( __FILE__ ) . '/css/shariff.min.css'; + $shariff_css = ob_get_clean(); + if ( false !== $shariff_css ) { + echo esc_html( str_replace( '!important', '', $shariff_css ) ); + } else { + include dirname( __FILE__ ) . '/css/shariff.min.css'; + } + if ( array_key_exists( 'dynamic_css', $shariff3uu ) && ! empty( $shariff3uu['dynamic_css'] ) ) { + echo esc_html( $shariff3uu['dynamic_css'] ); + } +} +add_action( 'amp_post_template_css', 'shariff3uu_amp_css' ); + +// Registers the shortcode. +add_shortcode( 'shariff', 'shariff3uu_render' ); + +/** + * Renders the shorttag to the HTML shorttag of Shariff. + * + * @param array $atts (optional) Array of shariff options provided in the shorttag. + * + * @return string|null The rendered HTML shorttag or null if a disable condition is met. + */ +function shariff3uu_render( $atts ) { + // Get options. + $shariff3uu_basic = (array) get_option( 'shariff3uu_basic' ); + $shariff3uu_design = (array) get_option( 'shariff3uu_design' ); + $shariff3uu_advanced = (array) get_option( 'shariff3uu_advanced' ); + $shariff3uu_statistic = (array) get_option( 'shariff3uu_statistic' ); + $shariff3uu = array_merge( $shariff3uu_basic, $shariff3uu_design, $shariff3uu_advanced, $shariff3uu_statistic ); + + if ( array_key_exists( 'dynamic_css', $shariff3uu ) && ! empty( $shariff3uu['dynamic_css'] ) ) { + $dynamic_css = $shariff3uu['dynamic_css']; + } else { + $dynamic_css = ''; + } + + // Stops all further actions if we are on an admin page. + if ( is_admin() ) { + return null; + } + + // Avoids errors if no attributes are given - instead uses the old set of services to make it backward compatible. + if ( empty( $shariff3uu['services'] ) ) { + $shariff3uu['services'] = 'twitter|facebook|linkedin|info'; + } + + // Uses the backend option for every option that is not set in the shorttag. + $backend_options = $shariff3uu; + if ( isset( $shariff3uu['vertical'] ) && 1 === $shariff3uu['vertical'] ) { + $backend_options['orientation'] = 'vertical'; + } + if ( isset( $shariff3uu['backend'] ) && 1 === $shariff3uu['backend'] ) { + $backend_options['backend'] = 'on'; + } + if ( isset( $shariff3uu['buttonsize'] ) && 1 === $shariff3uu['buttonsize'] ) { + $backend_options['buttonsize'] = 'small'; + } + if ( empty( $atts ) ) { + $atts = $backend_options; + } else { + $atts = array_merge( $backend_options, $atts ); + } + + // Gets the metabox ignore widget value. + $shariff_metabox_ignore_widget = get_post_meta( get_the_ID(), 'shariff_metabox_ignore_widget', true ); + + // Adds the meta box settings if it is not a widget or if it is a widget and not being set to be ignored. + if ( ( ! isset( $atts['widget'] ) || ( isset( $atts['widget'] ) && 1 === $atts['widget'] && 1 !== $shariff_metabox_ignore_widget ) ) && 'total' !== $atts['services'] && 'totalnumber' !== $atts['services'] ) { + // Gets the meta box disable value. + $shariff3uu_metabox_disable = get_post_meta( get_the_ID(), 'shariff_metabox_disable', true ); + + // Stops all further actions if the meta box setting is set to disabled. + if ( '1' === $shariff3uu_metabox_disable ) { + return null; + } + + // Gets the meta box shortcode. + $shariff3uu_metabox = get_post_meta( get_the_ID(), 'shariff_metabox', true ); + + // Replaces shariff with shariffmeta. + $shariff3uu_metabox = str_replace( '[shariff ', '[shariffmeta ', $shariff3uu_metabox ); + + // Gets the meta box attributes. + if ( '[shariffmeta]' !== $shariff3uu_metabox ) { + do_shortcode( $shariff3uu_metabox ); + } + + if ( isset( $GLOBALS['shariff3uu']['metabox'] ) && ! empty( $GLOBALS['shariff3uu']['metabox'] ) ) { + $metabox = $GLOBALS['shariff3uu']['metabox']; + } else { + $metabox = array(); + } + + // Gets the meta box media attribute. + $shariff3uu_metabox_media = get_post_meta( get_the_ID(), 'shariff_metabox_media', true ); + if ( ! empty( $shariff3uu_metabox_media ) ) { + $metabox['media'] = $shariff3uu_metabox_media; + } + + // Merges the meta box atts array with the atts array (meta box shortcode overrides all others). + if ( ! empty( $metabox ) ) { + $atts = array_merge( $atts, $metabox ); + } + + // Clears the metabox global. + $GLOBALS['shariff3uu']['metabox'] = ''; + } // End meta box if. + + // Ov3rfly: Makes the attributes configurable from outside, e.g. for language etc. + $atts = apply_filters( 'shariff3uu_render_atts', $atts ); + + // Removes empty elements. + $atts = array_filter( $atts ); + + // Cleans up services (remove leading or trailing |, spaces, etc.). + $atts['services'] = trim( preg_replace( '/[^A-Za-z|]/', '', $atts['services'] ), '|' ); + + // Cleans up the headline in case it was used in a shorttag. + if ( array_key_exists( 'headline', $atts ) ) { + $atts['headline'] = wp_kses( $atts['headline'], $GLOBALS['allowed_tags'] ); + } + + // Cleans up the alternative headline in case it was used in a shorttag. + if ( array_key_exists( 'headline_zero', $atts ) ) { + $atts['headline_zero'] = wp_kses( $atts['headline_zero'], $GLOBALS['allowed_tags'] ); + } + + // Remove previous added inline styles to prevent duplications. + if ( wp_style_is( 'shariffcss', 'enqueued' ) ) { + wp_deregister_style( 'shariffcss' ); + } + + // Enqueues the stylesheet (loading it here makes sure that it is only loaded on pages that actually contain shariff buttons). + // If SCRIPT_DEBUG is set to true, the non minified version will be loaded. + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG === true ) { + $shariff_css_url = trailingslashit( plugins_url() ) . 'shariff/css/shariff.css'; + } else { + $shariff_css_url = trailingslashit( plugins_url() ) . 'shariff/css/shariff.min.css'; + } + wp_enqueue_style( 'shariffcss', $shariff_css_url, '', $shariff3uu['version'] ); + + // Enqueues the share count script (the JS should be loaded at the footer - make sure that wp_footer() is present in your theme!) + // If SCRIPT_DEBUG is set to true, the non minified version will be loaded. + if ( array_key_exists( 'backend', $atts ) && 'on' === $atts['backend'] ) { + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG === true ) { + $shariff_js_url = trailingslashit( plugins_url() ) . 'shariff/js/shariff.js'; + } else { + $shariff_js_url = trailingslashit( plugins_url() ) . 'shariff/js/shariff.min.js'; + } + wp_enqueue_script( 'shariffjs', $shariff_js_url, '', $shariff3uu['version'], true ); + } + + // Enqueues the popup script (the JS should be loaded at the footer - make sure that wp_footer() is present in your theme!). + // If SCRIPT_DEBUG is set to true, the non minified version will be loaded. + if ( array_key_exists( 'popup', $atts ) && 1 === $atts['popup'] ) { + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG === true ) { + $shariff_js_popup_url = trailingslashit( plugins_url() ) . 'shariff/js/shariff-popup.js'; + } else { + $shariff_js_popup_url = trailingslashit( plugins_url() ) . 'shariff/js/shariff-popup.min.js'; + } + wp_enqueue_script( 'shariff_popup', $shariff_js_popup_url, '', $shariff3uu['version'], true ); + } + + // Sets the share url. + if ( array_key_exists( 'url', $atts ) ) { + $share_url = rawurlencode( $atts['url'] ); + } else { + $share_url = rawurlencode( get_permalink() ); + } + + // Sets the share title. + if ( array_key_exists( 'title', $atts ) ) { + $share_title = rawurlencode( wp_strip_all_tags( $atts['title'] ) ); + } else { + $share_title = rawurlencode( wp_strip_all_tags( html_entity_decode( get_the_title(), ENT_COMPAT, 'UTF-8' ) ) ); + } + + // Sets the transient name. + $post_hash = 'shariff' . hash( 'md5', $share_url ); + + // Prevents php notices. + $share_counts = array(); + $output = ''; + + // Gets the cached share counts. + if ( array_key_exists( 'backend', $atts ) && 'on' === $atts['backend'] && get_transient( $post_hash ) !== false ) { + $share_counts = get_transient( $post_hash ); + } + + // Adds ShariffSC container including custom styles if a custom style attribute or class exists. + if ( array_key_exists( 'style', $atts ) || array_key_exists( 'cssclass', $atts ) ) { + $output .= '
                        'cподелÑне', + 'cs' => 'sdílet', + 'da' => 'del', + 'de' => 'teilen', + 'en' => 'share', + 'es' => 'compartir', + 'fi' => 'Jaa', + 'fr' => 'partager', + 'hr' => 'podijelite', + 'hu' => 'megosztás', + 'it' => 'condividi', + 'ja' => '共有', + 'ko' => '공유하기', + 'nl' => 'delen', + 'no' => 'del', + 'pl' => 'udostÄ™pnij', + 'pt' => 'compartilhar', + 'ro' => 'partajează', + 'ru' => 'поделитьÑÑ', + 'sk' => 'zdieľaÅ¥', + 'sl' => 'deli', + 'sr' => 'podeli', + 'sv' => 'dela', + 'tr' => 'paylaÅŸ', + 'zh' => '分享', + ); + + // Adds the timestamp for the cache. + if ( array_key_exists( 'timestamp', $atts ) ) { + $post_timestamp = $atts['timestamp']; + } else { + $post_timestamp = absint( get_the_modified_date( 'U' ) ); + } + + // Starts the output of the actual Shariff buttons. + $output .= '
                        ' . absint( $share_counts['total'] ) . '', $atts['headline_zero'] ); + $output .= '
                        ' . $atts['headline_zero'] . '
                        '; + } else { + $atts['headline'] = str_replace( '%total', '' . absint( $share_counts['total'] ) . '', $atts['headline'] ); + $output .= '
                        ' . $atts['headline'] . '
                        '; + } + } + + // Start the ul list with design classes. + $output .= '
                          '; + + // Prevents warnings while debug mode is on. + $flattr_error = ''; + $paypal_error = ''; + $paypalme_error = ''; + $bitcoin_error = ''; + $patreon_error = ''; + $button_text_array = ''; + $backend_available = ''; + $mobile_only = ''; + $button_url = ''; + $border_radius = ''; + + // Explodes services. + $service_array = explode( '|', $atts['services'] ); + + // Migrates mail to mailto. + $service_array = preg_replace( '/\bmail\b/', 'mailto', $service_array ); + + // Migrates mailform to mailto. + $service_array = preg_replace( '/\bmailform\b/', 'mailto', $service_array ); + + // Remove duplicated services. + $service_array = array_unique( $service_array ); + + // Loops through all desired services. + foreach ( $service_array as $service ) { + // Check if necessary usernames are set and display warning to admins, if needed. + if ( 'paypal' === $service && ! array_key_exists( 'paypalbuttonid', $atts ) ) { + $paypal_error = 1; + } elseif ( 'paypalme' === $service && ! array_key_exists( 'paypalmeid', $atts ) ) { + $paypalme_error = 1; + } elseif ( 'bitcoin' === $service && ! array_key_exists( 'bitcoinaddress', $atts ) ) { + $bitcoin_error = 1; + } elseif ( 'patreon' === $service && ! array_key_exists( 'patreonid', $atts ) ) { + $patreon_error = 1; + } elseif ( 'total' !== $service && 'totalnumber' !== $service ) { + + // Only the frontend part is needed. + $frontend = 1; + + // Determines the path to the service phps. + $path_service_file = dirname( __FILE__ ) . '/services/shariff-' . $service . '.php'; + + // Checks if service file exists. + if ( file_exists( $path_service_file ) ) { + + // Includes service file. + include $path_service_file; + + // Replace $main_color with $wcag_color and $secondary_color with $wcag_secondary, if $wacg_theme is selected. + if ( isset( $atts['theme'] ) && 'wcag' === $atts['theme'] && isset( $wcag_color ) && '' !== $wcag_color ) { + $main_color = $wcag_color; + $secondary_color = '#000'; + } + + // Info button for default theme. + if ( ! array_key_exists( 'maincolor', $atts ) && 'info' === $service && ( ( array_key_exists( 'theme', $atts ) && 'default' === $atts['theme'] ) || ( array_key_exists( 'theme', $atts ) && 'round' === $atts['theme'] ) || ( array_key_exists( 'theme', $atts ) && 'wcag' === $atts['theme'] ) || ! array_key_exists( 'theme', $atts ) ) ) { + $main_color = '#fff'; + $secondary_color = '#eee'; + } + + // Start . + $output .= '">'; + + // Uses default button share text, if $button_text_array is empty. + if ( empty( $button_text_array ) ) { + $button_text_array = $default_button_text_array; + } + + // Sets button text in desired language, first fallback is default language set in options, second one is English. + if ( array_key_exists( 'lang', $atts ) && array_key_exists( $atts['lang'], $button_text_array ) ) { + $button_text = $button_text_array[ $atts['lang'] ]; + } elseif ( isset( $shariff3uu['lang'] ) && ! empty( $shariff3uu['lang'] ) && array_key_exists( $shariff3uu['lang'], $button_text_array ) ) { + $button_text = $button_text_array[ $shariff3uu['lang'] ]; + } else { + $button_text = $button_text_array['en']; + } + + // Sets the button title / label in desired language; fallback is English. + if ( array_key_exists( 'lang', $atts ) && array_key_exists( $atts['lang'], $button_title_array ) ) { + $button_title = $button_title_array[ $atts['lang'] ]; + } else { + $button_title = $button_title_array['en']; + } + + // Resets $button_text_array. + $button_text_array = ''; + + /** Build the actual button. */ + + // Begin . + $output .= '>'; + + // Shariff icon. + $output .= '' . $svg_icon . ''; + + // Shariff text. + if ( ( ! isset( $atts['theme'] ) || ( isset( $atts['theme'] ) && 'round' !== $atts['theme'] ) ) && 'info' !== $service ) { + $output .= '' . $button_text . ' '; + } + + // Share counts? + if ( array_key_exists( 'sharecounts', $atts ) && 1 === $atts['sharecounts'] && 1 === $backend_available && ! isset( $shariff3uu['disable'][ $service ] ) ) { + $output .= ' ' . $share_counts[ $service ]; + } else { + $output .= ' shariff-hidezero">'; + } + $output .= ' '; + } + $output .= ''; + $output .= ''; + + // Adds service to backend service, if available. + if ( 1 === $backend_available && ! isset( $shariff3uu['disable'][ $service ] ) ) { + $backend_service_array[] = $service; + } + + // Reset variables. + $backend_available = ''; + $mobile_only = ''; + $same_window = ''; + $wcag_color = ''; + } // End if service file exists. + } // End if is real and fully setup service. + } // End foreach() loop. + + // Adds the list of backend services. + if ( ! empty( $backend_service_array ) ) { + $backend_services = implode( '|', $backend_service_array ); + $output = str_replace( 'data-url=', 'data-services="' . esc_html( rawurlencode( $backend_services ) ) . '" data-url=', $output ); + } + + // Closes ul and the main shariff div. + $output .= '
                        '; + + // Closes the style attribute, if there was one. + if ( array_key_exists( 'style', $atts ) || array_key_exists( 'cssclass', $atts ) ) { + $output .= '
                        '; + } + + // Update the dynamic css db entry if needed. + if ( ( array_key_exists( 'dynamic_css', $shariff3uu ) && $shariff3uu['dynamic_css'] !== $dynamic_css ) || ! array_key_exists( 'dynamic_css', $shariff3uu ) ) { + $shariff3uu_design = array_filter( $GLOBALS['shariff3uu_design'] ); + $shariff3uu_design['dynamic_css'] = $dynamic_css; + $GLOBALS['shariff3uu']['dynamic_css'] = $dynamic_css; + update_option( 'shariff3uu_design', $shariff3uu_design ); + } + + // Displays a warning to admins if patreon is set, but no patreon username was provided. + if ( 1 === $patreon_error && current_user_can( 'manage_options' ) ) { + $output .= '
                        ' . __( 'Username for patreon is missing!', 'shariff' ) . '
                        '; + } + // Displays a warning to admins if paypal is set, but no paypal button id was provided. + if ( 1 === $paypal_error && current_user_can( 'manage_options' ) ) { + $output .= '
                        ' . __( 'Button ID for PayPal is missing!', 'shariff' ) . '
                        '; + } + // Displays a warning to admins if paypalme is set, but no paypalme id was provided. + if ( 1 === $paypalme_error && current_user_can( 'manage_options' ) ) { + $output .= '
                        ' . __( 'PayPal.Me ID is missing!', 'shariff' ) . '
                        '; + } + // Displays a warning to admins if bitcoin is set, but no bitcoin address was provided. + if ( 1 === $bitcoin_error && current_user_can( 'manage_options' ) ) { + $output .= '
                        ' . __( 'Address for Bitcoin is missing!', 'shariff' ) . '
                        '; + } + + // If the service totalnumber is set, just output the total share count. + if ( array_key_exists( '0', $service_array ) && 'totalnumber' === $service_array['0'] ) { + $output = ''; + } + + return $output; +} + +// Registers the helper shortcode. +add_shortcode( 'shariffmeta', 'shariff3uu_meta' ); + +/** + * Meta box helper function. Creates a global variable with the current meta box attributes. + * + * @param array $atts List of shariff shortcode attributes. + */ +function shariff3uu_meta( $atts ) { + if ( ! empty( $atts ) ) { + $GLOBALS['shariff3uu']['metabox'] = $atts; + } else { + $GLOBALS['shariff3uu']['metabox'] = array(); + } +} + +/** + * Clears transients and removes cron job upon deactivation. + */ +function shariff3uu_deactivate() { + // Checks for multisite. + if ( is_multisite() && function_exists( 'get_sites' ) && class_exists( 'WP_Site_Query' ) ) { + $sites = get_sites(); + foreach ( $sites as $site ) { + switch_to_blog( $site->blog_id ); + // Purges transients. + shariff3uu_purge_transients_deactivation(); + // Removes the cron job. + wp_clear_scheduled_hook( 'shariff3uu_fill_cache' ); + // Switches back to main blog. + restore_current_blog(); + } + } else { + // Purges transients. + shariff3uu_purge_transients_deactivation(); + // Removes cron job. + wp_clear_scheduled_hook( 'shariff3uu_fill_cache' ); + } +} +register_deactivation_hook( __FILE__, 'shariff3uu_deactivate' ); + +/** + * Purges all the transients associated with our plugin. + */ +function shariff3uu_purge_transients_deactivation() { + // Makes sure the $wpdb class is ready. + if ( ! isset( $wpdb ) ) { + global $wpdb; + } + // Deletes transients. + // phpcs:disable + $wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_timeout_shariff%"' ); + $wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_shariff%"' ); + // phpcs:enable + // Clears the object cache. + wp_cache_flush(); +} diff --git a/wp-content/plugins/shariff/uninstall.php b/wp-content/plugins/shariff/uninstall.php new file mode 100644 index 0000000..31caf82 --- /dev/null +++ b/wp-content/plugins/shariff/uninstall.php @@ -0,0 +1,80 @@ +get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A ); + if ( $blogs ) { + foreach ( $blogs as $blog ) { + // Switch to each blog. + switch_to_blog( $blog['blog_id'] ); + // Delete options from options table. + delete_option( 'shariff3UU' ); + delete_option( 'shariff3UU_basic' ); + delete_option( 'shariff3UU_design' ); + delete_option( 'shariff3UU_advanced' ); + delete_option( 'shariff3UU_mailform' ); + delete_option( 'shariff3UU_statistic' ); + delete_option( 'widget_shariff' ); + delete_option( 'shariff3UU_hide_update_notice' ); + delete_option( 'shariff3uu_basic' ); + delete_option( 'shariff3uu_design' ); + delete_option( 'shariff3uu_advanced' ); + delete_option( 'shariff3uu_mailform' ); + delete_option( 'shariff3uu_statistic' ); + // Purge transients. + shariff3uu_purge_transients(); + // Remove cron job. + wp_clear_scheduled_hook( 'shariff3UU_fill_cache' ); + // Switch back to main. + restore_current_blog(); + } + } +} else { + // Delete options from options table. + delete_option( 'shariff3UU' ); + delete_option( 'shariff3UU_basic' ); + delete_option( 'shariff3UU_design' ); + delete_option( 'shariff3UU_advanced' ); + delete_option( 'shariff3UU_mailform' ); + delete_option( 'shariff3UU_statistic' ); + delete_option( 'widget_shariff' ); + delete_option( 'shariff3UU_hide_update_notice' ); + delete_option( 'shariff3uu_basic' ); + delete_option( 'shariff3uu_design' ); + delete_option( 'shariff3uu_advanced' ); + delete_option( 'shariff3uu_mailform' ); + delete_option( 'shariff3uu_statistic' ); + // Purge transients. + shariff3uu_purge_transients(); + // Remove cron job. + wp_clear_scheduled_hook( 'shariff3UU_fill_cache' ); +} + +/** + * Helper function to purge all the transients associated with our plugin. + */ +function shariff3uu_purge_transients() { + // Make sure we have the $wpdb class ready. + if ( ! isset( $wpdb ) ) { + global $wpdb; + } + // Delete transients. + // phpcs:disable + $wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_timeout_shariff%"' ); + $wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_shariff%"' ); + // phpcs:enable + // Clear object cache. + wp_cache_flush(); +} diff --git a/wp-content/plugins/shariff/updates.php b/wp-content/plugins/shariff/updates.php new file mode 100644 index 0000000..b1002cd --- /dev/null +++ b/wp-content/plugins/shariff/updates.php @@ -0,0 +1,343 @@ +get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A ); + if ( $blogs ) { + foreach ( $blogs as $blog ) { + // Switch to each blog. + switch_to_blog( $blog['blog_id'] ); + // Delete cache dir. + shariff_removeoldcachedir(); + // Delete old db entry. + delete_option( 'shariff3UU' ); + // Switch back to main. + restore_current_blog(); + } + } + } else { + // Delete cache dir. + shariff_removeoldcachedir(); + // Delete old db entry. + delete_option( 'shariff3UU' ); + } + + // Disable Twitter backend due to new service OpenShareCount.com. + $shariff3uu_statistic['disable']['twitter'] = 1; + + // Update version. + $shariff3uu['version'] = '3.3.0'; +} + +/** + * Helper function to delete old cache directory. + */ +function shariff_removeoldcachedir() { + $upload_dir = wp_upload_dir(); + $cache_dir = $upload_dir['basedir'] . '/1970/01'; + $cache_dir2 = $upload_dir['basedir'] . '/1970'; + shariff_removeoldfiles( $cache_dir ); + // Remove /1970/01 and /1970 if they are empty. + rmdir( $cache_dir ); + rmdir( $cache_dir2 ); +} + +/** + * Helper function to delete old .dat files that begin with 'Shariff' and empty folders that also start with 'Shariff'. + * + * @param string $directory Path to Shariff cache directory. + */ +function shariff_removeoldfiles( $directory ) { + foreach ( glob( '{$directory}/Shariff* ' ) as $file ) { + if ( is_dir( $file ) ) { + shariff_removeoldfiles( $file ); + } elseif ( substr( $file, -4 ) === '.dat' ) { + unlink( $file ); + } + } + rmdir( $directory ); +} + +/** + * Migration < 4.0 + */ +if ( isset( $shariff3uu['version'] ) && -1 === version_compare( $shariff3uu['version'], '4.0.0' ) ) { + + // Set new option share counts, if statistic is enabled. + if ( isset( $shariff3uu_statistic['backend'] ) ) { + $shariff3uu_statistic['sharecounts'] = 1; + } + + // Disable share counts if WP version < 4.4. + if ( version_compare( get_bloginfo( 'version' ), '4.4.0' ) < 1 ) { + unset( $shariff3uu_statistic['backend'] ); + } + + // Change button language to WordPress language, if it is set to auto and http_negotiate_language is not available (auto will not work without it). + if ( ! isset( $shariff3uu_design['lang'] ) && ! function_exists( 'http_negotiate_language' ) ) { + $shariff3uu_design['lang'] = substr( get_bloginfo( 'language' ), 0, 2 ); + } + + // Update version. + $shariff3uu['version'] = '4.0.0'; +} + +/** + * Migration < 4.2 + */ +if ( isset( $shariff3uu['version'] ) && -1 === version_compare( $shariff3uu['version'], '4.2.0' ) ) { + // Make sure we have the $wpdb class ready. + global $wpdb; + + // Delete user meta entry shariff3UU_ignore_notice to display update message again after an update (check for multisite). + if ( is_multisite() ) { + // phpcs:ignore + $blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A ); + if ( $blogs ) { + foreach ( $blogs as $blog ) { + // Switch to each blog. + switch_to_blog( $blog['blog_id'] ); + // Delete user meta entry shariff3UU_ignore_notice. + $users = get_users( 'role=administrator' ); + foreach ( $users as $user ) { + if ( get_user_meta( $user->ID, 'shariff3UU_ignore_notice', true ) ) { + delete_user_meta( $user->ID, 'shariff3UU_ignore_notice' ); + } + } + // Switch back to main. + restore_current_blog(); + } + } + } else { + // Delete user meta entry shariff3UU_ignore_notice. + $users = get_users( 'role=administrator' ); + foreach ( $users as $user ) { + if ( get_user_meta( $user->ID, 'shariff3UU_ignore_notice', true ) ) { + delete_user_meta( $user->ID, 'shariff3UU_ignore_notice' ); + } + } + } +} + +/** + * Migration < 4.5 + */ +if ( isset( $shariff3uu['version'] ) && -1 === version_compare( $shariff3uu['version'], '4.5.0' ) ) { + // Update language settings. + if ( ! isset( $shariff3uu_design['lang'] ) ) { + $shariff3uu_design['autolang'] = 1; + $shariff3uu_design['lang'] = substr( get_locale(), 0, 2 ); + } + // Update version. + $shariff3uu['version'] = '4.5.0'; +} + +/** + * General tasks we do on every update, like clean up transients and so on. + */ + +// Purge transients (check for multisite). +if ( is_multisite() ) { + global $wpdb; + // phpcs:ignore + $blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A ); + if ( $blogs ) { + foreach ( $blogs as $blog ) { + // Switch to each blog. + switch_to_blog( $blog['blog_id'] ); + // Purge transients. + shariff3uu_purge_transients(); + // Switch back to main. + restore_current_blog(); + } + } +} else { + // Purge transients. + shariff3uu_purge_transients(); +} + +/** + * Helper function to purge all the transients associated with our plugin. + */ +function shariff3uu_purge_transients() { + // Make sure we have the $wpdb class ready. + if ( ! isset( $wpdb ) ) { + global $wpdb; + } + // Delete transients. + // phpcs:disable + $wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_timeout_shariff%"' ); + $wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_shariff%"' ); + // phpcs:enable + // Clear object cache. + wp_cache_flush(); +} + +// Set new version. +$shariff3uu['version'] = $code_version; +$shariff3uu_basic['version'] = $code_version; + +/** + * Remove empty elements and save to options table. We had a mix up with shariff3uu and shariff3UU in the past and update_option is not case senitive. Therefore we actually need to delete and recreate it. + */ +// Basic. +delete_option( 'shariff3uu_basic' ); +$shariff3uu_basic = array_filter( $shariff3uu_basic ); +update_option( 'shariff3uu_basic', $shariff3uu_basic ); +// Design. +delete_option( 'shariff3uu_design' ); +$shariff3uu_design = array_filter( $shariff3uu_design ); +update_option( 'shariff3uu_design', $shariff3uu_design ); +// Advanced. +delete_option( 'shariff3uu_advanced' ); +$shariff3uu_advanced = array_filter( $shariff3uu_advanced ); +update_option( 'shariff3uu_advanced', $shariff3uu_advanced ); +// Statistic. +delete_option( 'shariff3uu_statistic' ); +$shariff3uu_statistic = array_filter( $shariff3uu_statistic ); +update_option( 'shariff3uu_statistic', $shariff3uu_statistic ); + +// Remove old settings. +delete_option( 'shariff3UU_mailform' ); +delete_option( 'shariff3UU_hide_update_notice' ); + +// Remove Shariff cron job and add it again, if wanted. +wp_clear_scheduled_hook( 'shariff3uu_fill_cache' ); +do_action( 'shariff3uu_save_statistic_options' ); diff --git a/wp-content/plugins/shariff/wpml-config.xml b/wp-content/plugins/shariff/wpml-config.xml new file mode 100644 index 0000000..98f5761 --- /dev/null +++ b/wp-content/plugins/shariff/wpml-config.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/ultimate-category-excluder/languages/UCE-da_DK.mo b/wp-content/plugins/ultimate-category-excluder/languages/UCE-da_DK.mo new file mode 100644 index 0000000000000000000000000000000000000000..6b43861a4833d09c05f711fedc77bfd21c81b936 GIT binary patch literal 717 zcmaKozit#U5XKEc2!u!x{-g+zCaIuFOL;;F2nvXZ)0L63TF>nod+n3Qd*NPyH{cPt ziWVtNs+ABAf#4x%DEYjbJN^_{`t%#y@ae2kE@Q`UqXS;3oJ9x(j`Q zZb9FnE$9cd1Kqf!)E@W%yb8Vm4LAm~&pCJp{0we`U%}hpPcZx4ygc0Rg7>k12yTEU z;4v7$$3@~Q#Kk(GCvQvFiV0rzk!G64(9ok;)@IH!`uq4Pv;Oz&WnnxW6&0^@g`_P@ z7MZrrEvTJoe5=*OCDS0HRTabMnj^iMC6pj)(x\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Danish\n" +"X-Poedit-Country: DENMARK\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: ../\n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: ultimate-category-excluder.php:19 +#: ultimate-category-excluder.php:29 +#@ UCE +msgid "Ultimate Category Excluder Options" +msgstr "Ultimate Category Excluder Indstillinger" + +#: ultimate-category-excluder.php:19 +#@ UCE +msgid "Category Exclusion" +msgstr "Kategori ekskludering" + +#: ultimate-category-excluder.php:31 +#@ UCE +msgid "Use this page to select the categories you wish to exclude and where you would like to exclude them from." +msgstr "Her kan du vælge hvilke kategorier du ønsker skal være synlige i det forskellige områder." + +#: ultimate-category-excluder.php:36 +#@ UCE +msgid "Category" +msgstr "Kategori" + +#: ultimate-category-excluder.php:37 +#@ UCE +msgid "Exclude from Main Page?" +msgstr "Skjul fra forsiden?" + +#: ultimate-category-excluder.php:38 +#@ UCE +msgid "Exclude from Feeds?" +msgstr "Skjul fra RSS feeds?" + +#: ultimate-category-excluder.php:39 +#@ UCE +msgid "Exclude from Archives?" +msgstr "Skjul fra indlægs arkiver?" + +#: ultimate-category-excluder.php:61 +#@ UCE +msgid "Update" +msgstr "Gem ændringer" + +#: ultimate-category-excluder.php:83 +#@ UCE +msgid "Excludes successfully updated" +msgstr "Ændringerne er gemt!" + diff --git a/wp-content/plugins/ultimate-category-excluder/languages/UCE-de_DE.mo b/wp-content/plugins/ultimate-category-excluder/languages/UCE-de_DE.mo new file mode 100755 index 0000000000000000000000000000000000000000..8de6d87221c798650d2a717f8665f281647dbf39 GIT binary patch literal 1368 zcma)5O^;hO6m^I46{(vdQ6xaUAQnjAkhD}9-cZUkO<~kY8%;7*S&cmJ-MnY=Vn_aH z8vX@~O6=IM?y{@y=0~t&#~v0)h!w{#Orog@!qUmHeeb*X9LN6U;`zq{qXoPJ)W8Mc z8IZIOSofqOV_-%0NzXN^``~Z9v{2lm1@Dp&-^)uLke+8qQ05yG3wi!t)N;f^y#;ZW` zmd4BJr>6p!)-Bf)>Oacs=(RPXnH5YEXJ@qQ@=8Bsf8*@-ZRXXj*IQL*Dy)W*7?T2GrQr#UDyYizc~(AjTMS?(3`KD%@d8U4G? z)&bA03v%E~UC5iU^m1%7Y7Os=WzVrnCgd#$%;-v|+m)S9Wp|sdT+O}AC7O!?M+^iIAJIICbxw) zWk%b_Ik7ZGeaPsDcaDxW!JEo6j8qx5H=Cz6GWv?$OqorjXQK&j zi9r8guzUBLO=M)F%el9bm{AN9Xk2R;vBGV}30AU$R_&I!b9#q1GeatRpI5c!lONfL z`_}yP2s~??$=UFYCVrO}Fpn4UqF}n#U#mC|&G*k|>_%U5YG=J?!?adph~322rDL5} zq^2RN8ux`=_^u5@7-`#wbR&hcFo(uGhk`\n" +"Language-Team: Patrick Skiebe \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _e;__\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-SearchPath-0: ..\n" + +#: ../ultimate-category-excluder.php:19 +#: ../ultimate-category-excluder.php:29 +msgid "Ultimate Category Excluder Options" +msgstr "Ultimate Category Excluder Einstellungen" + +#: ../ultimate-category-excluder.php:19 +msgid "Category Exclusion" +msgstr "Kategorien ausschließen" + +#: ../ultimate-category-excluder.php:31 +msgid "Use this page to select the categories you wish to exclude and where you would like to exclude them from." +msgstr "Auf dieser Seite können Sie Kategorien auswählen, die an bestimmten Stellen Ihrer Seite nicht erscheinen sollen." + +#: ../ultimate-category-excluder.php:36 +msgid "Category" +msgstr "Kategorie" + +#: ../ultimate-category-excluder.php:37 +msgid "Exclude from Main Page?" +msgstr "Von der Hauptseite ausschließen?" + +#: ../ultimate-category-excluder.php:38 +msgid "Exclude from Feeds?" +msgstr "Von Newsfeeds ausschließen?" + +#: ../ultimate-category-excluder.php:39 +msgid "Exclude from Archives?" +msgstr "Von Archivseiten ausschließen?" + +#: ../ultimate-category-excluder.php:61 +msgid "Update" +msgstr "Aktualisieren" + +#: ../ultimate-category-excluder.php:83 +msgid "Excludes successfully updated" +msgstr "Ausgeschlossene Kategorien erfolgreich aktualisiert" + diff --git a/wp-content/plugins/ultimate-category-excluder/languages/UCE-en_EN.mo b/wp-content/plugins/ultimate-category-excluder/languages/UCE-en_EN.mo new file mode 100755 index 0000000000000000000000000000000000000000..aed5a3279ce7d87211dc6b7c58bcc5b32443bf1e GIT binary patch literal 1254 zcmd^-(P|Sx6o%JYwJ!9gg5Fd(h<7q^Q!B(RB5j&Nv9Y1qh<9b&J=sjV*$FeVZ3Di9 z7lIGtQwZMn8SJfB{*$E%7JUK-{(O@;hyR>2JC|$AUjnQUT89c~75WDG^%GiwuAnvO z7xWNXy%huxz^C9NumwH_d*BnW1n+{MK?QyVze7t)wcn51wcjP^{jNaox3XOOt%Kfg z6ZC#Zp!cgl@AnCWT>#9^VLMyCS6Bu2>%YN0(9h=A9skpoj&p6M^9^+_(xS3Tm%(h8 zF%69#)3!-R>WuB1KacmAvzupKsY>d}oaecgY?Y>L?XW6}DOHmUWwT&VI5ozOuDhs< zXKd(j;?RN(2D8*)V42)VS(?C>oF>Z!rw(UKX+45sOH*CZxw0dl!F~>OFUyS1M{Kx` z>Z-`7P^UAO>m1mOXJa;kp3x_87We< zwqfaq5W8qFrj4lC6w#(=wrJx;+tZ_Qt>fcGa7S96NH>b9 zu{gZ$IHpdS7x-q2P+M1}GgI9AyZxlIOZ{X!>GT)zzOGEl?Yh&LDmO%{^H%yS@l<=L RCn8jAg!898-~8`y{5OwiZIJ)~ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/ultimate-category-excluder/languages/UCE-en_EN.po b/wp-content/plugins/ultimate-category-excluder/languages/UCE-en_EN.po new file mode 100755 index 0000000..b4fb822 --- /dev/null +++ b/wp-content/plugins/ultimate-category-excluder/languages/UCE-en_EN.po @@ -0,0 +1,55 @@ +msgid "" +msgstr "" +"Project-Id-Version: Ultimate Category Excluder\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-04-18 23:19+0100\n" +"PO-Revision-Date: 2011-04-18 23:54+0100\n" +"Last-Translator: Michael Clark\n" +"Language-Team: Michael Clark\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _e;__\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Language: English\n" +"X-Poedit-Country: UNITED STATES\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-SearchPath-0: ..\n" + +#: ../ultimate-category-excluder.php:19 +#: ../ultimate-category-excluder.php:29 +msgid "Ultimate Category Excluder Options" +msgstr "Ultimate Category Excluder Options" + +#: ../ultimate-category-excluder.php:19 +msgid "Category Exclusion" +msgstr "Category Exclusion" + +#: ../ultimate-category-excluder.php:31 +msgid "Use this page to select the categories you wish to exclude and where you would like to exclude them from." +msgstr "Use this page to select the categories you wish to exclude and where you would like to exclude them from." + +#: ../ultimate-category-excluder.php:36 +msgid "Category" +msgstr "Category" + +#: ../ultimate-category-excluder.php:37 +msgid "Exclude from Main Page?" +msgstr "Exclude from Main Page?" + +#: ../ultimate-category-excluder.php:38 +msgid "Exclude from Feeds?" +msgstr "Exclude from Feeds?" + +#: ../ultimate-category-excluder.php:39 +msgid "Exclude from Archives?" +msgstr "Exclude from Archives?" + +#: ../ultimate-category-excluder.php:61 +msgid "Update" +msgstr "Update" + +#: ../ultimate-category-excluder.php:83 +msgid "Excludes successfully updated" +msgstr "Excludes successfully updated" + diff --git a/wp-content/plugins/ultimate-category-excluder/languages/UCE-pt_BR.mo b/wp-content/plugins/ultimate-category-excluder/languages/UCE-pt_BR.mo new file mode 100644 index 0000000000000000000000000000000000000000..3f93f49bdd2c9cbd17abf9e696b2f31d3c4604a7 GIT binary patch literal 1290 zcmaJ=O^Xvj5N*FT;6+g{3WbR1p~qxbVHpw8byvhJ8#EDbOFL6LX`M`u-8~!Quh4@a z-o%3-c=YBie?ai8zd^y1CtuGbyDDhI%j>DGe)W;+uSfR25LhkXB#;A#fsa5~-++U_ zci;%{6F3eW-X+9Q@EPz4@DlhGxCcHBF2MW2&%qk}68s6+y<3Pw`2M`7(fI;ChVLKX zpx@dn#5wROaL`!=p9O1hxc3Zfz^}lN6QDW{Wa|}jg;ebu3 zsTky5kFcY87ESP!Ev=UxDL65xUB$pL`Jr}HLYBNC$2lh+Hm0O0L9?TYsc5X-FnDmN z1KF!0rSXt0H>ak`Q_A(DT4nA7nNeM4Bzo37gtEMq%6n`>A7c7HJNr^CyH*cOU$Uuu}>9^$KxoUpQXPa zMey2|jj8nVfo-kbT3gxaL?>#umQCTgKsJ*SWqE$$FO)g{^2?MAm38c|4En2bX~!>Q zy~$Rt6p2Z7k;Sz1K>OBx*)yDKFK_c?Y;5Yf$Ty}9zPz!qb9h}jE|nj~6v23t3${%I zn#%wFhGv9BGd@3?dN=)miB!H)xqgbqJ3@QIJHRtAV!fQctsPSH zpYamcX4kD4cnuvUc3x3A3tuX$nx}yIQI#W) WDe#jS=vl3Tp?(e1_cB*562AbR@`7Rj literal 0 HcmV?d00001 diff --git a/wp-content/plugins/ultimate-category-excluder/languages/UCE-pt_BR.po b/wp-content/plugins/ultimate-category-excluder/languages/UCE-pt_BR.po new file mode 100644 index 0000000..2244655 --- /dev/null +++ b/wp-content/plugins/ultimate-category-excluder/languages/UCE-pt_BR.po @@ -0,0 +1,57 @@ +msgid "" +msgstr "" +"Project-Id-Version: Ultimate Category Excluder\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-10-12 23:33-0500\n" +"PO-Revision-Date: 2012-10-12 23:33-0500\n" +"Last-Translator: \n" +"Language-Team: Leandro Coelho - Logistica Descomplicada www." +"logisticadescomplicada.com\n" +"Language: pt-br\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _e;__\n" +"X-Poedit-Basepath: .\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-SearchPath-0: ..\n" + +#: ../ultimate-category-excluder.php:19 ../ultimate-category-excluder.php:29 +msgid "Ultimate Category Excluder Options" +msgstr "Opções do Ultimate Category Excluder" + +#: ../ultimate-category-excluder.php:19 +msgid "Category Exclusion" +msgstr "Exclusão de categoria" + +#: ../ultimate-category-excluder.php:31 +msgid "" +"Use this page to select the categories you wish to exclude and where you " +"would like to exclude them from." +msgstr "" +"Utilize esta página para selecionar as categorías que você deseja excluir e " +"de onde gostaria de excluí-las." + +#: ../ultimate-category-excluder.php:36 +msgid "Category" +msgstr "Categoria" + +#: ../ultimate-category-excluder.php:37 +msgid "Exclude from Main Page?" +msgstr "Excluir da Página Principal (homepage)?" + +#: ../ultimate-category-excluder.php:38 +msgid "Exclude from Feeds?" +msgstr "Excluir dos Feeds?" + +#: ../ultimate-category-excluder.php:39 +msgid "Exclude from Archives?" +msgstr "Excluir dos Arquivos?" + +#: ../ultimate-category-excluder.php:61 +msgid "Update" +msgstr "Atualizar" + +#: ../ultimate-category-excluder.php:83 +msgid "Excludes successfully updated" +msgstr "Exclusões atualizadas com sucesso" diff --git a/wp-content/plugins/ultimate-category-excluder/languages/UCE.pot b/wp-content/plugins/ultimate-category-excluder/languages/UCE.pot new file mode 100755 index 0000000..498f977 --- /dev/null +++ b/wp-content/plugins/ultimate-category-excluder/languages/UCE.pot @@ -0,0 +1,52 @@ +msgid "" +msgstr "" +"Project-Id-Version: Ultimate Category Excluder\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-04-18 23:19+0100\n" +"PO-Revision-Date: 2011-04-18 23:19+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _e;__\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: ..\n" + +#: ../ultimate-category-excluder.php:19 +#: ../ultimate-category-excluder.php:29 +msgid "Ultimate Category Excluder Options" +msgstr "" + +#: ../ultimate-category-excluder.php:19 +msgid "Category Exclusion" +msgstr "" + +#: ../ultimate-category-excluder.php:31 +msgid "Use this page to select the categories you wish to exclude and where you would like to exclude them from." +msgstr "" + +#: ../ultimate-category-excluder.php:36 +msgid "Category" +msgstr "" + +#: ../ultimate-category-excluder.php:37 +msgid "Exclude from Main Page?" +msgstr "" + +#: ../ultimate-category-excluder.php:38 +msgid "Exclude from Feeds?" +msgstr "" + +#: ../ultimate-category-excluder.php:39 +msgid "Exclude from Archives?" +msgstr "" + +#: ../ultimate-category-excluder.php:61 +msgid "Update" +msgstr "" + +#: ../ultimate-category-excluder.php:83 +msgid "Excludes successfully updated" +msgstr "" + diff --git a/wp-content/plugins/ultimate-category-excluder/readme.txt b/wp-content/plugins/ultimate-category-excluder/readme.txt new file mode 100644 index 0000000..419f936 --- /dev/null +++ b/wp-content/plugins/ultimate-category-excluder/readme.txt @@ -0,0 +1,93 @@ +=== Ultimate Category Excluder === +Contributors: Marios Alexandrou +Donate link: https://infolific.com/technology/software-worth-using/ultimate-category-excluder/ +Tags: category, categories, exclude, exclude category, exclude categories, visible, hidden, hide, invisible, remove +Requires at least: 4.0 +Tested up to: 5.1.1 +License: GPLv2 or later + +Ultimate Category Excluder allows you to quickly and easily exclude categories from your front page, archives, feeds, and search results. + +== Description == + +Ultimate Category Excluder, abbreviated as UCE, is a WordPress plugin that allows you to quickly and easily exclude categories from your front page, archives, feeds, and searches. Just select which categories you want to be excluded, and UCE does all the work for you! + +== Installation == + +1. Download Ultimate Category Excluder. +2. Unzip the ultimate-category-excluder.zip file. +3. Activate the plugin on your plugins page. +4. You can edit the options by going under "Settings" and then "Category Exclusion." +5. If you are upgrading from an older version, you need to go into your "Category Exclusion" settings, choose at least one option from the Searches column, save settings, then go back and clear that option and save again. + +== Frequently Asked Questions == + += When I go to my search results page for any search I do, I get this PHP error: Warning: Invalid argument supplied for foreach() in /wp-content/plugins/ultimate-category-excluder/ultimate-category-excluder.php on line = + +Go into your "Category Exclusion" settings, choose at least one option from the Searches column, save settings, then go back and clear that option and save again. + +== Screenshots == + +1. Check the categories you want to exclude. + +== Changelog == + += 1.1 = +* Bug fix for compatibility with Yoast Video SEO plugin. + += 1.0 = +* Bug fix thanks to Golemming (re. deprecated function mysql_get_server_info). +* Compatibility with WordPress 4.4.2 confirmed. +* Documentation updated. No functionality changed. +* Plugin development and support transferred from Michael Clark to Marios Alexandrou. + += 0.96 = +* September 11, 2013 - Went back to the last known (no complaints at least!) version, 0.84. + += 0.95 = +* September 10, 2013 - Fixed some more bugs that I introduced while trying to fix other bugs. Cleaned up the code, tried to be more consistent with line spacing and indents so everything is easier to read. Released the Beta version. + += 0.94 = +* September 9, 2013 - It turns out that some themes process their home pages in odd ways. This resulted in UCE no longer correctly filtering out the excluded categories. This was a hard bug to figure out, as I couldn't reproduce it on any of my sites. I think I've got it fixed now, but I do have a report that UCE is now causing a conflict with a separate page on the site. So I am working on that; but since this version should fix most people's home pages, I'm releasing it while continuing to bug hunt. Thank you for your patience. Many thanks to Michael Westergaard, Alyx Hydrick, Alain Saintpo, Seth Vore, and Michael Pollock for their help in figuring out what was happening. + +I also fixed several very subtle bugs that were throwing error messages behind the scenes. And I tweaked the system information section at the bottom of the UCE settings page. + +Added the Danish translation. I don't who to thank for providing this. +Added Brazilian translation. Thank you to Leandro Callegari Coelho. +Feel free to send me other languages if you like. + += 0.91 = +* September 4, 2013 - You can now exclude categories from appearing in results from the built-in WordPress search engine. Other search engines (e.g. Bing, Google) may still be able to find and index your content. Also fixed a bug that excluded categories from appearing in the Post Editor. And fixed a bug in the system information section. + += 0.84 = +* August 3, 2013 - Fixed empty category bug. Again. + += 0.83 = +* August 2, 2013 - Added code to give version info for MySQL, PHP, WP and UCE. UCE also works with WP 3.6. + += 0.8 = +* July 7, 2011 - Categories that do not have any posts in them will now appear on the list of categories. + += 0.7 = +* May 6, 2011 - Added internationalization (i18n) based on Patrick Skiebe's suggestion and code. He has provided a German translation. Feel free to send me other languages if you like. + += 0.6 = +* February 24, 2011 - Addressed a bug in UCE that didn’t handle multiple excluded categories correctly. + += 0.5 = +* February 24, 2011 - Addressed a bug in WP 3.1. + += 0.4 = +* October 10, 2009 - A user pointed out a bug when trying to filter down categories in the edit posts admin area. I believe I’ve fixed this, but let me know if you still have trouble. + += 0.3 = +* June 20, 2009 - James Revillini pointed out a few fairly obvious bugs. I’ve incorporated his changes into the software. + += 0.21 Beta = +* January 10, 2008 - Initial release, fixed file name bug, dashes vs. underscores + += 0.2 Beta = +* December 13, 2007 - Initial release, tweaked to refer to PlanetMike.com, no functionality changed + += 0.1 Beta = +* February 14, 2007 - Initial release diff --git a/wp-content/plugins/ultimate-category-excluder/ultimate-category-excluder.php b/wp-content/plugins/ultimate-category-excluder/ultimate-category-excluder.php new file mode 100644 index 0000000..455a592 --- /dev/null +++ b/wp-content/plugins/ultimate-category-excluder/ultimate-category-excluder.php @@ -0,0 +1,199 @@ + +
                        +

                        + +

                        +
                        + + + + + + + + + + + + 0, + 'order' => 'ASC' + ); + $cats = get_categories( $args ); + $alt = 0; + foreach( $cats as $cat ) { + ?> + > + + + + + + + +
                        cat_name; //. ' (' . $cat->cat_ID . ')'; ?>cat_ID, $options['exclude_main'] ) ) { echo 'checked="true" '; } ?>/>cat_ID, $options['exclude_feed'] ) ) { echo 'checked="true" '; } ?>/>cat_ID, $options['exclude_archives'] ) ) { echo 'checked="true" '; } ?>/>cat_ID, $options['exclude_search'] ) ) { echo 'checked="true" '; } ?>/>
                        +

                        + +
                        +
                        + + Support\n"; + echo "

                        Please report this information when requesting support.

                        "; + echo '
                          '; + echo '
                        • UCE version: 1.1
                        • '; + echo '
                        • PHP version: ' . PHP_VERSION . '
                        • '; +// echo '
                        • MySQL version: ' . mysqli_get_server_info( $wpdb->dbh ) . '
                        • '; + echo '
                        • WordPress version: ' . $wp_version . '
                        • '; + $mbctheme = wp_get_theme(); + echo "
                        • Theme: " . $mbctheme->Name . " is version " . $mbctheme->Version."
                        • "; + $category_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->term_taxonomy WHERE taxonomy = 'category'" ); + echo '
                        • Number of categories is: ' . $category_count . '
                        • '; + if( !defined( 'AUTH_KEY' ) ) { echo "
                        • AUTH_KEY is empty. Please check your settings in your wp-config.php file. This doesn't affect UCE, but it will help make your WordPress sytem more secure.
                        • "; } + echo "
                        "; +} + +function ksuce_process() { + //echo '
                        '; print_r( $_POST );
                        +	if( !isset( $_POST[ 'exclude_main' ] ) )     { $_POST[ 'exclude_main' ] = array(); }
                        +	if( !isset( $_POST[ 'exclude_feed' ] ) )     { $_POST[ 'exclude_feed' ] = array(); }
                        +	if( !isset( $_POST[ 'exclude_archives' ] ) ) { $_POST[ 'exclude_archives' ] = array(); }
                        +	if( !isset( $_POST[ 'exclude_search' ] ) )   { $_POST[ 'exclude_search' ] = array(); }
                        +	$options['exclude_main'] = $_POST[ 'exclude_main' ];
                        +	$options['exclude_feed'] = $_POST[ 'exclude_feed' ];
                        +	$options['exclude_archives'] = $_POST[ 'exclude_archives' ];
                        +	$options['exclude_search'] = $_POST[ 'exclude_search' ];
                        +	update_option( 'ksuceExcludes', $options );
                        +	$message = "

                        " . ( __( 'Excludes successfully updated', 'UCE' ) ) . "

                        "; + return $message; +} + +function ksuce_get_options(){ + $defaults = array(); + $defaults['exclude_main'] = array(); + $defaults['exclude_feed'] = array(); + $defaults['exclude_archives'] = array(); + $defaults['exclude_search'] = array(); + $options = get_option( 'ksuceExcludes' ); + if ( !is_array( $options ) ){ + $options = $defaults; + update_option( 'ksuceExcludes', $options ); + } + return $options; +} + +function ksuce_exclude_categories( $query ) { + $backtrace = debug_backtrace(); + $array2[0] = ""; + unset( $array2[0] ); + $options = ksuce_get_options(); + + //wp_reset_query(); + //error_log( print_r( debug_backtrace(), true ) ); + //error_log( 'search for match: ' . in_array_recursive( 'WPSEO_Video_Sitemap', $backtrace ) ); + + //Exclude calls from the Yoast SEO Video Sitemap plugin + if ( $query->is_home && !in_array_recursive( 'WPSEO_Video_Sitemap', $backtrace ) ) { + $mbccount = 0; + foreach ( $options[ 'exclude_main' ] as $value ) { + $array2[$mbccount] = $value; + $mbccount++; + } + $query->set('category__not_in', $array2); + } + + if ( $query->is_feed ) { + $mbccount = 0; + foreach ( $options[ 'exclude_feed' ] as $value ) { + $array2[$mbccount] = $value; + $mbccount++; + } + $query->set( 'category__not_in', $array2 ); + } + + if ( !is_admin() && $query->is_search ) { + $mbccount = 0; + foreach ( $options[ 'exclude_search' ] as $value ) { + $array2[$mbccount] = $value; + $mbccount++; + } + $query->set('category__not_in', $array2); + } + + if ( !is_admin() && $query->is_archive ) { + $mbccount = 0; + foreach ( $options[ 'exclude_archives' ] as $value ) { + $array2[$mbccount] = $value; + $mbccount++; + } + $query->set( 'category__not_in', $array2 ); + } + + return $query; +} + +function in_array_recursive( $needle, $haystack ) { + $found = false; + + foreach( $haystack as $item ) { + if ( $item === $needle ) { + $found = true; + break; + } elseif ( is_array( $item ) ) { + $found = in_array_recursive( $needle, $item ); + if( $found ) { + break; + } + } + } + + return $found; +} +?> \ No newline at end of file diff --git a/wp-content/plugins/version-info/LICENSE b/wp-content/plugins/version-info/LICENSE new file mode 100644 index 0000000..21ac6c7 --- /dev/null +++ b/wp-content/plugins/version-info/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Alexander Goller + +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. diff --git a/wp-content/plugins/version-info/VERSION b/wp-content/plugins/version-info/VERSION new file mode 100644 index 0000000..314c3d7 --- /dev/null +++ b/wp-content/plugins/version-info/VERSION @@ -0,0 +1 @@ +1.1.5 \ No newline at end of file diff --git a/wp-content/plugins/version-info/readme.txt b/wp-content/plugins/version-info/readme.txt new file mode 100644 index 0000000..8be340f --- /dev/null +++ b/wp-content/plugins/version-info/readme.txt @@ -0,0 +1,36 @@ +=== Version Info === +Contributors: alpipego +Tags: admin, version, php, mysql, server, support +Stable tag: 1.1.5 +License: MIT +Requires at least: 2.3.0 +Tested up to: 5.2 + +Show current WordPress, PHP, Web Server and MySQL versions in admin footer + +== Description == +This plugin displays the current WordPress version number along with the following environment in the admin footer: + +* Current WordPress version info, when there is an update available it displays the current version and the latest version side by side +* PHP version +* Web Server used +* MySQL version + += What's the reason for building this Plugin = +I always disliked the fact that WordPress does not display the current version number in the footer whenever there is a new release. + +If you are a plugin developer and a user experiences a problem, they could install this plugin and send you a screenshot of their admin footer (or copy the text of course) to inform you about the cornerstones of their setup. + +I built this [Multivariate Virtual Machine for Debugging WordPress Plugin](https://github.com/alpipego/wp-version) that allows you to quickly change PHP versions, the used web server (nginx or Apache) and WordPress core, plugin and theme versions. As it is intended to quickly change environment variables, this plugin helped me keep track of what exactly I am testing at the moment. + +== Screenshots == + +1. Default admin footer showing you the current (latest) Wordpress version +2. After activation you will get a lot more info in your admin footer +3. Default admin footer when you are not running the latest version of WordPress +4. If this plugin is active, you will see your currently installed version along the update info (and the additional info this plugin provides) + +== Installation == + +1. Upload the plugin to your plugins directory (possibly `/wp-content/plugins/`), or install the plugin through the WordPress plugins screen directly. +1. Activate the plugin through the 'Plugins' screen in WordPress diff --git a/wp-content/plugins/version-info/version-info.php b/wp-content/plugins/version-info/version-info.php new file mode 100644 index 0000000..c6977c0 --- /dev/null +++ b/wp-content/plugins/version-info/version-info.php @@ -0,0 +1,46 @@ + + * @copyright 2019 Alexander Goller + * @license MIT + * + * @wordpress-plugin + * + * Plugin Name: WordPress Version Info + * Plugin URI: https://wordpress.org/plugins/version-info + * Description: Show current WordPress, PHP, Web Server and MySQL versions in admin footer + * Author: alpipego + * Author URI: http://alpipego.com/ + * Version: 1.1.5 + * License: MIT + * GitHub Plugin URI: https://github.com/alpipego/wp-version-info + * Text Domain: version-info + */ +// pseudo namespace +class VersionInfo { + + private $db; + + public function __construct( \wpdb $wpdb ) { + $this->db = $wpdb; + add_action( 'plugins_loaded', array( $this, 'load_text_domain' ) ); + add_filter( 'update_footer', array( $this, 'version_in_footer' ), 11 ); + } + + public function load_text_domain() { + load_plugin_textdomain( 'version-info' ); + } + + public function version_in_footer() { + $update = core_update_footer(); + $wp_version = strpos( $update, '' ) === 0 ? get_bloginfo( 'version' ) . ' (' . $update . ')' : get_bloginfo( 'version' ); + + return sprintf( esc_attr__( 'You are running WordPress %s | PHP %s | %s | MySQL %s', 'version-info' ), $wp_version, phpversion(), $_SERVER['SERVER_SOFTWARE'], $this->db->get_var('SELECT VERSION();') ); + } +} + +global $wpdb; +new VersionInfo( $wpdb ); diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/class-webdados-fb-open-graph-admin.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/class-webdados-fb-open-graph-admin.php new file mode 100644 index 0000000..d2c500a --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/class-webdados-fb-open-graph-admin.php @@ -0,0 +1,476 @@ +options = $options; + $this->version = $version; + } + + /* Admin menu */ + public function create_admin_menu() { + $options_page = add_options_page( WEBDADOS_FB_PLUGIN_NAME, WEBDADOS_FB_PLUGIN_NAME, 'manage_options', basename(__FILE__), array( $this, 'options_page' ) ); + add_action( 'admin_print_styles-' . $options_page, array( $this, 'admin_style' ) ); + add_action( 'admin_print_scripts-' . $options_page, array( $this, 'admin_scripts' ) ); + add_filter( 'pre_update_option_wonderm00n_open_graph_settings', array( $this, 'run_tools' ) ); + add_action( 'admin_notices', array( $this, 'admin_notice' ) ); + } + + /* Register settings and sanitization */ + public function options_init() { + register_setting( 'wonderm00n_open_graph_settings', 'wonderm00n_open_graph_settings', array( $this, 'validate_options' ) ); + } + + /* WPML - Options translation */ + public function options_wpml($oldvalue, $newvalue, $option) { + global $webdados_fb; + if ( $webdados_fb->is_wpml_active() ) { + // Homepage description + icl_register_string( 'wd-fb-og', 'wd_fb_og_desc_homepage_customtext', trim($newvalue['fb_desc_homepage_customtext']) ); + // Default description + icl_register_string( 'wd-fb-og', 'wd_fb_og_fb_desc_default', trim($newvalue['fb_desc_default']) ); + } + } + + /* Settings link on the plugins page */ + public function place_settings_link( $links ) { + $settings_link = '' . __( 'Settings', 'wonderm00ns-simple-facebook-open-graph-tags' ) . ''; + // place it before other links + array_unshift( $links, $settings_link ); + return $links; + } + + /* Extra user fields */ + public function user_contactmethods( $usercontacts ) { + global $webdados_fb; + if ( !$webdados_fb->is_yoast_seo_active() ) { + //Google+ + $usercontacts['googleplus'] = __('Google+', 'wonderm00ns-simple-facebook-open-graph-tags'); + //Twitter + $usercontacts['twitter'] = __('Twitter username (without @)', 'wonderm00ns-simple-facebook-open-graph-tags'); + //Facebook + $usercontacts['facebook'] = __('Facebook profile URL', 'wonderm00ns-simple-facebook-open-graph-tags'); + } + return $usercontacts; + } + + /* Get post types */ + public function get_post_types() { + //All public post types + $public_types = get_post_types( array( + 'public' => true, + 'publicly_queryable' => true, + ) ); + //Add page because it's not "publicly_queryable" + if ( !isset( $public_types['page'] ) ) $public_types['page'] = 'page'; + //Do not show for some post types + $exclude_types = array( + 'attachment', + ); + $exclude_types = apply_filters( 'fb_og_metabox_exclude_types', $exclude_types ); + //Return diff + return array_diff( $public_types, $exclude_types ); + } + + /* Admin notices */ + public function admin_notice() { + if ( $admin_notice = get_option( 'wonderm00n_open_graph_admin_notice' ) ) { + echo $admin_notice; + update_option( 'wonderm00n_open_graph_admin_notice', '' ); + } + } + + /* Meta boxes on posts */ + public function add_meta_boxes( $usercontacts ) { + global $post; + $post_types = $this->get_post_types(); + if ( is_object($post) ) { + if ( in_array(get_post_type($post->ID), $post_types) ) { + add_meta_box( + 'webdados_fb_open_graph', + WEBDADOS_FB_PLUGIN_NAME, + array(&$this, 'post_meta_box'), + $post->post_type + ); + } + } + } + public function post_meta_box() { + global $post, $webdados_fb; + // Add an nonce field so we can check for it later. + wp_nonce_field( 'webdados_fb_open_graph_custom_box', 'webdados_fb_open_graph_custom_box_nonce' ); + // Current image value + $value_image = get_post_meta($post->ID, '_webdados_fb_open_graph_specific_image', true); + ?> +

                        + + + +
                        + + + +
                        + + +

                        + + ID, '_webdados_fb_open_graph_specific_description', true); + ?> +

                        + + + +
                        + is_yoast_seo_active() && $this->options['fb_show_wpseoyoast']==1 ) { + _e('The Yoast SEO integration is active, so it\'s description will be used', 'wonderm00ns-simple-facebook-open-graph-tags'); + } else { + ?> + +
                        + +

                        + public) { + //OK - Go on + } else { + //Not publicly_queryable (or page) -> Go away + return $post_id; + } + + // Check if our nonce is set. + if (!isset($_POST['webdados_fb_open_graph_custom_box_nonce'])) + $save=false; + + $nonce=(isset($_POST['webdados_fb_open_graph_custom_box_nonce']) ? $_POST['webdados_fb_open_graph_custom_box_nonce'] : ''); + + // Verify that the nonce is valid. + if (!wp_verify_nonce($nonce, 'webdados_fb_open_graph_custom_box')) + $save=false; + + // Check the user's permissions. + if ('page' == $_POST['post_type']) { + if (!current_user_can('edit_page', $post_id)) + $save=false; + } else { + if (!current_user_can('edit_post', $post_id)) + $save=false; + } + if ($save) { + /* OK, its safe for us to save the data now. */ + //Image + if ( isset($_POST['webdados_fb_open_graph_specific_image']) ) { + // Sanitize user input. + $mydata = trim( sanitize_text_field( $_POST['webdados_fb_open_graph_specific_image'] ) ); + // Update the meta field in the database. + update_post_meta($post_id, '_webdados_fb_open_graph_specific_image', $mydata); + } + //Description + if ( isset($_POST['webdados_fb_open_graph_specific_description']) ) { + // Sanitize user input. + if ( get_bloginfo('version')>='4.7.0' ) { //sanitize_textarea_field only exists since 4.7.0 + $mydata = trim( sanitize_textarea_field( $_POST['webdados_fb_open_graph_specific_description'] ) ); + } else { + //Just in case... + $mydata = trim( sanitize_text_field( $_POST['webdados_fb_open_graph_specific_description'] ) ); + } + // Update the meta field in the database. + update_post_meta($post_id, '_webdados_fb_open_graph_specific_description', $mydata); + } + } + if ($save) { + //Force Facebook update anyway - Our meta box could be hidden - Not really! We'll just update if we got our metabox + if (get_post_status($post_id)=='publish' && intval($this->options['fb_adv_notify_fb'])==1) { + $status = 0; + $error = false; + $fb_debug_url = apply_filters( 'fb_og_update_cache_url', 'https://graph.facebook.com/?id='.urlencode(get_permalink($post_id)).'&scrape=true&method=post' ); + //Was the filter NOT used? + if ( !stristr( $fb_debug_url, 'access_token=' ) ) { + //Add the authentication from the settings + if ( trim($this->options['fb_adv_notify_fb_app_id'])!='' && trim($this->options['fb_adv_notify_fb_app_secret'])!='' ) { + $fb_debug_url .= '&access_token='.urlencode(trim($this->options['fb_adv_notify_fb_app_id'])).'|'.urlencode(trim($this->options['fb_adv_notify_fb_app_secret'])).''; + } + } + $response = wp_remote_get($fb_debug_url); + if ( is_wp_error($response) ) { + $this->update_status = -1; + $this->update_error = __('URL failed:', 'wonderm00ns-simple-facebook-open-graph-tags').' '.$fb_debug_url; + //$_SESSION['wd_fb_og_updated_error']=1; + //$_SESSION['wd_fb_og_updated_error_message']=__('URL failed:', 'wonderm00ns-simple-facebook-open-graph-tags').' '.$fb_debug_url; + } else { + if ( $response['response']['code']==200 ) { + $this->update_status = 1; + $this->update_error = false; + //$_SESSION['wd_fb_og_updated']=1; + } else { + $body = json_decode($response['body']); + if ( isset($body->error->message) ) { + $this->update_status = -2; + $this->update_error = __('Facebook returned:', 'wonderm00ns-simple-facebook-open-graph-tags').' '.$body->error->message; + } else { + $this->update_status = -3; + $this->update_error = __('Unknown error', 'wonderm00ns-simple-facebook-open-graph-tags'); + } + /* + if ( $response['response']['code']==500 ) { + $_SESSION['wd_fb_og_updated_error']=1; + $error=json_decode($response['body']); + $_SESSION['wd_fb_og_updated_error_message']=__('Facebook returned:', 'wonderm00ns-simple-facebook-open-graph-tags').' '.$error->error->message; + }*/ + } + } + add_filter( 'redirect_post_location', array( $this, 'redirect_post_location' ), 10, 2 ); + } + } + return $post_id; + } + public function redirect_post_location( $location, $post_id ) { + $location = add_query_arg( 'wd_fb_og_status', $this->update_status , $location ); + if ( $this->update_error ) $location = add_query_arg( 'wd_fb_og_error', urlencode($this->update_error) , $location ); + return $location; + } + public function admin_notices() { + if ( intval($this->options['fb_adv_supress_fb_notice'])==0 ) { + if ( isset($_GET['wd_fb_og_status']) ) { + if ( $screen = get_current_screen() ) { + if ( $screen->parent_base=='edit' && $screen->base=='post' ) { + global $post; + switch ( intval( $_GET['wd_fb_og_status'] ) ) { + case '1': + ?> +
                        +

                        +
                        + +
                        +

                        '.__('Error: Facebook Open Graph Tags cache NOT updated/purged.', 'wonderm00ns-simple-facebook-open-graph-tags').''; + if ( isset($_GET['wd_fb_og_error']) ) echo '
                        '.sanitize_text_field( $_GET['wd_fb_og_error'] ); + ?>

                        +

                        + + + +
                        + - + - +
                        + - + +
                        + or +
                        + - +

                        +
                        + parent_base=='edit' && $screen->base=='post') { + global $post; + ?> +
                        +

                        +
                        + parent_base=='edit' && $screen->base=='post') { + ?> +
                        +

                        '.__('Error: Facebook Open Graph Tags cache NOT updated/purged.', 'wonderm00ns-simple-facebook-open-graph-tags').''; + echo '
                        '.$_SESSION['wd_fb_og_updated_error_message']; + ?>

                        +
                        + get_post_types(); + + if ( is_object($post) && is_array($messages) ) { + if ( in_array(get_post_type($post->ID), $post_types) ) { + if ( + ( !isset($_GET['wd_fb_og_status']) ) + || + ( isset($_GET['wd_fb_og_status']) && intval($_GET['wd_fb_og_status'])!=1 ) + ) { + foreach ( $messages as $type => $messages1 ) { + $buttons = ' '.__( 'Manually update Facebook cache', 'wonderm00ns-simple-facebook-open-graph-tags' ).' + '.__( 'Share this on Facebook', 'wonderm00ns-simple-facebook-open-graph-tags' ).''; + if ( isset($messages1[1]) ) { //Post updated + $messages[$type][1].=$buttons; + } + if ( isset($messages1[6]) ) { //Post published + $messages[$type][6].=$buttons; + } + } + } + } + } + return $messages; + } + + /* Options page */ + public function options_page() { + $options = $this->options; + require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/options-page.php'; + } + public function admin_style() { + wp_enqueue_style( 'webdados_fb_admin_style', plugins_url( 'css/webdados-fb-open-graph-admin.css', __FILE__ ), false, $this->version ); + } + public function admin_scripts() { + wp_enqueue_script( 'webdados_fb_admin_script', plugins_url( 'js/webdados-fb-open-graph-admin.js', __FILE__ ), array( 'jquery', 'jquery-ui-tabs', 'media-upload' ), $this->version ); + wp_localize_script( 'webdados_fb_admin_script', 'texts', array( + 'select_image' => __('Select image', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'use_this_image' => __('Use this image', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'confirm_tool' => __('Are you sure you want to run this tool?', 'wonderm00ns-simple-facebook-open-graph-tags'), + ) ); + } + + /* Sanitize options */ + public function validate_options( $options ) { + global $webdados_fb; + $all_options = $webdados_fb->all_options(); + foreach($all_options as $key => $temp) { + if ( isset($options[$key]) ) { + switch($temp) { + case 'intval': + $options[$key] = intval($options[$key]); + break; + case 'trim': + $options[$key] = trim($options[$key]); + break; + } + } else { + switch($temp) { + case 'intval': + $options[$key] = 0; + break; + case 'trim': + $options[$key] = ''; + break; + } + } + } + return $options; + } + + /* Run tools */ + public function run_tools( $value ) { + if ( isset( $_POST['tools'] ) && is_array( $_POST['tools'] ) ) { + foreach ( $_POST['tools'] as $tool ) { + $function = 'run_tool_'.$tool; + $this->$function(); + } + } + return $value; + } + public function run_tool_clear_transients() { + global $wpdb; + $records = 0; + $sql = "DELETE FROM $wpdb->options WHERE option_name LIKE '%webdados_og_image_size_%'"; + $clean = $wpdb -> query( $sql ); + $records .= $clean; + // If multisite, and the main network, also clear the sitemeta table + if ( is_multisite() && is_main_network() ) { + $sql = "DELETE FROM $wpdb->sitemeta WHERE meta_key LIKE '%webdados_og_image_size_%'"; + $clean = $wpdb -> query( $sql ); + $records .= $clean; + } + $admin_notice_message = '

                        '.sprintf( __( '%d transients deleted', 'wonderm00ns-simple-facebook-open-graph-tags' ), intval($records/2) ).'

                        '; + update_option( 'wonderm00n_open_graph_admin_notice', $admin_notice_message ); + } + +} \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/css/index.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/css/index.php new file mode 100644 index 0000000..e71af0e --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/css/index.php @@ -0,0 +1 @@ + ul { + margin: 0px; +} +#webdados_fb_admin h2.nav-tab-wrapper > ul > li { + float: left; + margin-right: 5px; + margin-bottom: 0px; +} +#webdados_fb_admin h2.nav-tab-wrapper > ul > li:first-child { + margin-left: 5px; +} +#webdados_fb_admin h2.nav-tab-wrapper > ul > li > a.nav-tab { + margin: 0; + /* height: 23px; */ + height: 18px; + line-height: 19px; + font-size: 12px; +} +#webdados_fb_admin h2.nav-tab-wrapper > ul > li > a.nav-tab:focus { + outline: 0 !important; +} +#webdados_fb_admin h2.nav-tab-wrapper > ul > li > a.nav-tab > i.dashicons-before:before { + font-size: 15px; + width: 15px; + height: 15px; + margin-top: 2px; +} +#webdados_fb_admin h2.nav-tab-wrapper > ul > li.ui-tabs-active { + border-bottom-color: #f1f1f1; + border-bottom-style: solid; + border-bottom-width: 1px; + outline: 0; +} +#webdados_fb_admin h2.nav-tab-wrapper > ul > li.ui-tabs-active > a.nav-tab { + background-color: #f1f1f1; + color: #444; + outline: 0; +} + +#webdados_fb_admin .form-table th, +#webdados_fb_admin .form-table td { + padding: 10px; + padding-bottom: 5px; + /*width: auto;*/ +} +#webdados_fb_admin .form-table th { + width: 250px; +} +#webdados_fb_admin .info { + font-size: 0.85em; + color: #888; +} +#webdados_fb_admin .form-table td.info { + padding: 0px; + padding-left: 10px; + padding-bottom: 20px; + /*font-style: italic;*/ +} + +#webdados_fb_admin div.stuffbox h3 { + border-bottom: 1px solid #eee; +} \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/index.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/index.php new file mode 100644 index 0000000..e71af0e --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/index.php @@ -0,0 +1 @@ + +
                        \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-facebook.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-facebook.php new file mode 100644 index 0000000..5fcee76 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-facebook.php @@ -0,0 +1,422 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-general.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-general.php new file mode 100644 index 0000000..503f940 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-general.php @@ -0,0 +1,333 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-right.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-right.php new file mode 100644 index 0000000..677f5ce --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-right.php @@ -0,0 +1,95 @@ + array( + 'text' => __('Test your URLs on the Facebook Debugger', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'https://developers.facebook.com/tools/debug', + ), + 5 => array( + 'text' => __('Test your URLs on the Twitter Card validator', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'https://cards-dev.twitter.com/validator', + ), + 10 => array( + 'text' => __('About the Open Graph Protocol (on Facebook)', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'https://developers.facebook.com/docs/opengraph/', + ), + 20 => array( + 'text' => __('The Open Graph Protocol (official website)', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'http://ogp.me/', + ), + 25 => array( + 'text' => __('About Twitter Cards', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'https://dev.twitter.com/cards/getting-started', + ), + 30 => array( + 'text' => __('Plugin official URL', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'https://www.webdados.pt/produtos-e-servicos/internet/desenvolvimento-wordpress/facebook-open-graph-meta-tags-wordpress/'.$out_link_utm, + ), + 40 => array( + 'text' => __('Author\'s website: Webdados', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'https://www.webdados.pt/'.$out_link_utm, + ), + 50 => array( + 'text' => __('Author\'s Facebook page: Webdados', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'https://www.facebook.com/Webdados', + ), + 60 => array( + 'text' => __('Author\'s Twitter account: @Wonderm00n
                        (Webdados founder)', 'wonderm00ns-simple-facebook-open-graph-tags'), + 'url' => 'https://twitter.com/wonderm00n', + ), + ); + +?> +
                        + +
                        + +
                        +

                        +
                        +

                        :

                        +

                        WordPress.org

                        +

                        :

                        + +

                        :

                        + +
                        +
                        +
                        +
                        + +
                        +

                        +
                        +
                          + +
                        • -
                        • + +
                        +
                        +
                        + +
                        +

                        +
                        +

                        +
                        + + + + + + + + + +
                        +
                        +
                        + +
                        + +
                        \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-schema.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-schema.php new file mode 100644 index 0000000..cd4f639 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-schema.php @@ -0,0 +1,178 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-seo.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-seo.php new file mode 100644 index 0000000..22854fc --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-seo.php @@ -0,0 +1,90 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-tools.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-tools.php new file mode 100644 index 0000000..31f2d11 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-tools.php @@ -0,0 +1,36 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-twitter.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-twitter.php new file mode 100644 index 0000000..f1ec67e --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page-twitter.php @@ -0,0 +1,131 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page.php new file mode 100644 index 0000000..b487437 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/options-page.php @@ -0,0 +1,137 @@ + +
                        + + +

                        ()


                        +

                        + +
                        + +
                        + + + + + + + + +
                        + diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/webdados.svg b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/webdados.svg new file mode 100644 index 0000000..aeb524b --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/admin/webdados.svg @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/fbimg.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/fbimg.php new file mode 100644 index 0000000..18935e0 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/fbimg.php @@ -0,0 +1,109 @@ += $thumb_aspect ) + { + // If image is wider than thumbnail (in aspect ratio sense) + $new_height = $thumb_height; + $new_width = $width / ($height / $thumb_height); + } + else + { + // If the thumbnail is wider than the image + $new_width = $thumb_width; + $new_height = $height / ($width / $thumb_width); + } + + $thumb = imagecreatetruecolor( $thumb_width, $thumb_height ); + //Fill with white because the source image can be a transparent PNG + $thumb_fill_color = apply_filters('fb_og_thumb_fill_color', array(255, 255, 255) ); + imagefill($thumb, 0, 0, imagecolorallocate ( $thumb , $thumb_fill_color[0] , $thumb_fill_color[1] , $thumb_fill_color[2] ) ); + + // Resize and crop + imagecopyresampled($thumb, + $image, + 0 - ($new_width - $thumb_width) / 2, // Center the image horizontally + 0 - ($new_height - $thumb_height) / 2, // Center the image vertically + 0, 0, + $new_width, $new_height, + $width, $height); + //Barra + if ( trim($webdados_fb->options['fb_image_overlay_image'])!='' ) { + $barra_url = parse_url( apply_filters( 'fb_og_thumb_image', trim($webdados_fb->options['fb_image_overlay_image']), intval($_GET['post_id']) ) ); + $barra = imagecreatefromfile($_SERVER['DOCUMENT_ROOT'].$barra_url['path']); + imagecopy($thumb, $barra, 0, 0, 0, 0, intval(WEBDADOS_FB_W), intval(WEBDADOS_FB_H) ); + } + + @header('HTTP/1.0 200 OK'); + switch( apply_filters( 'fb_og_overlayed_image_format', 'jpg' ) ) { + case 'png': + header('Content-Type: image/png'); + imagepng($thumb); + break; + case 'jpg': + default: + header('Content-Type: image/jpeg'); + imagejpeg($thumb, NULL, 95); + break; + } + imagedestroy($image); + imagedestroy($thumb); + imagedestroy($barra); + } else { + + } + + } + } + } + } + + + + function imagecreatefromfile( $filename ) { + try { + if (!file_exists($filename)) { + throw new InvalidArgumentException('File "'.htmlentities($filename).'" not found.'); + } + switch ( strtolower( pathinfo( $filename, PATHINFO_EXTENSION ))) { + case 'jpeg': + case 'jpg': + return imagecreatefromjpeg($filename); + break; + + case 'png': + return imagecreatefrompng($filename); + break; + + case 'gif': + return imagecreatefromgif($filename); + break; + + default: + throw new InvalidArgumentException('File "'.htmlentities($filename).'" is not valid jpg, png or gif image.'); + break; + } + } catch (Exception $e) { + die( 'Caught exception: '. $e->getMessage() ); + return false; + } + } \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/FacebookLocales.xml b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/FacebookLocales.xml new file mode 100644 index 0000000..372c305 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/FacebookLocales.xml @@ -0,0 +1,1631 @@ + + + +Afrikaans + + + +FB +af_ZA + + + + + +Akan + + + +FB +ak_GH + + + + + +Amharic + + + +FB +am_ET + + + + + +Arabic + + + +FB +ar_AR + + + + + +Assamese + + + +FB +as_IN + + + + + +Aymara + + + +FB +ay_BO + + + + + +Azerbaijani + + + +FB +az_AZ + + + + + +Belarusian + + + +FB +be_BY + + + + + +Bulgarian + + + +FB +bg_BG + + + + + +Bengali + + + +FB +bn_IN + + + + + +Bhojpuri + + + +FB +bp_IN + + + + + +Breton + + + +FB +br_FR + + + + + +Bosnian + + + +FB +bs_BA + + + + + +Catalan + + + +FB +ca_ES + + + + + +Sorani Kurdish + + + +FB +cb_IQ + + + + + +Cherokee + + + +FB +ck_US + + + + + +Corsican + + + +FB +co_FR + + + + + +Czech + + + +FB +cs_CZ + + + + + +Cebuano + + + +FB +cx_PH + + + + + +Welsh + + + +FB +cy_GB + + + + + +Danish + + + +FB +da_DK + + + + + +German + + + +FB +de_DE + + + + + +Greek + + + +FB +el_GR + + + + + +English (UK) + + + +FB +en_GB + + + + + +English (Pirate) + + + +FB +en_PI + + + + + +English (Upside Down) + + + +FB +en_UD + + + + + +English (US) + + + +FB +en_US + + + + + +Esperanto + + + +FB +eo_EO + + + + + +Spanish (Spain) + + + +FB +es_ES + + + + + +Spanish + + + +FB +es_LA + + + + + +Spanish (Mexico) + + + +FB +es_MX + + + + + +Estonian + + + +FB +et_EE + + + + + +Basque + + + +FB +eu_ES + + + + + +Persian + + + +FB +fa_IR + + + + + +Leet Speak + + + +FB +fb_LT + + + + + +Fula + + + +FB +ff_NG + + + + + +Finnish + + + +FB +fi_FI + + + + + +Faroese + + + +FB +fo_FO + + + + + +French (Canada) + + + +FB +fr_CA + + + + + +French (France) + + + +FB +fr_FR + + + + + +Frisian + + + +FB +fy_NL + + + + + +Irish + + + +FB +ga_IE + + + + + +Galician + + + +FB +gl_ES + + + + + +Guarani + + + +FB +gn_PY + + + + + +Gujarati + + + +FB +gu_IN + + + + + +Classical Greek + + + +FB +gx_GR + + + + + +Hausa + + + +FB +ha_NG + + + + + +Hebrew + + + +FB +he_IL + + + + + +Hindi + + + +FB +hi_IN + + + + + +Croatian + + + +FB +hr_HR + + + + + +Haitian Creole + + + +FB +ht_HT + + + + + +Hungarian + + + +FB +hu_HU + + + + + +Armenian + + + +FB +hy_AM + + + + + +Indonesian + + + +FB +id_ID + + + + + +Igbo + + + +FB +ig_NG + + + + + +Icelandic + + + +FB +is_IS + + + + + +Italian + + + +FB +it_IT + + + + + +Japanese + + + +FB +ja_JP + + + + + +Japanese (Kansai) + + + +FB +ja_KS + + + + + +Javanese + + + +FB +jv_ID + + + + + +Georgian + + + +FB +ka_GE + + + + + +Kazakh + + + +FB +kk_KZ + + + + + +Khmer + + + +FB +km_KH + + + + + +Kannada + + + +FB +kn_IN + + + + + +Korean + + + +FB +ko_KR + + + + + +Kashmiri + + + +FB +ks_IN + + + + + +Kurdish (Kurmanji) + + + +FB +ku_TR + + + + + +Kyrgyz + + + +FB +ky_KG + + + + + +Latin + + + +FB +la_VA + + + + + +Ganda + + + +FB +lg_UG + + + + + +Limburgish + + + +FB +li_NL + + + + + +Lingala + + + +FB +ln_CD + + + + + +Lao + + + +FB +lo_LA + + + + + +Lithuanian + + + +FB +lt_LT + + + + + +Latvian + + + +FB +lv_LV + + + + + +Malagasy + + + +FB +mg_MG + + + + + +MÄori + + + +FB +mi_NZ + + + + + +Macedonian + + + +FB +mk_MK + + + + + +Malayalam + + + +FB +ml_IN + + + + + +Mongolian + + + +FB +mn_MN + + + + + +Marathi + + + +FB +mr_IN + + + + + +Malay + + + +FB +ms_MY + + + + + +Maltese + + + +FB +mt_MT + + + + + +Burmese + + + +FB +my_MM + + + + + +Norwegian (bokmal) + + + +FB +nb_NO + + + + + +Northern Ndebele + + + +FB +nd_ZW + + + + + +Nepali + + + +FB +ne_NP + + + + + +Dutch (België) + + + +FB +nl_BE + + + + + +Dutch + + + +FB +nl_NL + + + + + +Norwegian (nynorsk) + + + +FB +nn_NO + + + + + +Southern Ndebele + + + +FB +nr_ZA + + + + + +Northern Sotho + + + +FB +ns_ZA + + + + + +Chewa + + + +FB +ny_MW + + + + + +Oriya + + + +FB +or_IN + + + + + +Punjabi + + + +FB +pa_IN + + + + + +Polish + + + +FB +pl_PL + + + + + +Pashto + + + +FB +ps_AF + + + + + +Portuguese (Brazil) + + + +FB +pt_BR + + + + + +Portuguese (Portugal) + + + +FB +pt_PT + + + + + +Quiché + + + +FB +qc_GT + + + + + +Quechua + + + +FB +qu_PE + + + + + +Burmese (Zawgyi) + + + +FB +qz_MM + + + + + +Romansh + + + +FB +rm_CH + + + + + +Romanian + + + +FB +ro_RO + + + + + +Russian + + + +FB +ru_RU + + + + + +Kinyarwanda + + + +FB +rw_RW + + + + + +Sanskrit + + + +FB +sa_IN + + + + + +Sardinian + + + +FB +sc_IT + + + + + +Northern Sámi + + + +FB +se_NO + + + + + +Sinhala + + + +FB +si_LK + + + + + +Slovak + + + +FB +sk_SK + + + + + +Slovenian + + + +FB +sl_SI + + + + + +Shona + + + +FB +sn_ZW + + + + + +Somali + + + +FB +so_SO + + + + + +Albanian + + + +FB +sq_AL + + + + + +Serbian + + + +FB +sr_RS + + + + + +Swazi + + + +FB +ss_SZ + + + + + +Southern Sotho + + + +FB +st_ZA + + + + + +Swedish + + + +FB +sv_SE + + + + + +Swahili + + + +FB +sw_KE + + + + + +Syriac + + + +FB +sy_SY + + + + + +Silesian + + + +FB +sz_PL + + + + + +Tamil + + + +FB +ta_IN + + + + + +Telugu + + + +FB +te_IN + + + + + +Tajik + + + +FB +tg_TJ + + + + + +Thai + + + +FB +th_TH + + + + + +Turkmen + + + +FB +tk_TM + + + + + +Filipino + + + +FB +tl_PH + + + + + +Klingon + + + +FB +tl_ST + + + + + +Tswana + + + +FB +tn_BW + + + + + +Turkish + + + +FB +tr_TR + + + + + +Tsonga + + + +FB +ts_ZA + + + + + +Tatar + + + +FB +tt_RU + + + + + +Tamazight + + + +FB +tz_MA + + + + + +Ukrainian + + + +FB +uk_UA + + + + + +Urdu + + + +FB +ur_PK + + + + + +Uzbek + + + +FB +uz_UZ + + + + + +Venda + + + +FB +ve_ZA + + + + + +Vietnamese + + + +FB +vi_VN + + + + + +Wolof + + + +FB +wo_SN + + + + + +Xhosa + + + +FB +xh_ZA + + + + + +Yiddish + + + +FB +yi_DE + + + + + +Yoruba + + + +FB +yo_NG + + + + + +Simplified Chinese (China) + + + +FB +zh_CN + + + + + +Traditional Chinese (Hong Kong) + + + +FB +zh_HK + + + + + +Traditional Chinese (Taiwan) + + + +FB +zh_TW + + + + + +Zulu + + + +FB +zu_ZA + + + + + +Zazaki + + + +FB +zz_TR + + + + + diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/class-webdados-fb-open-graph.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/class-webdados-fb-open-graph.php new file mode 100644 index 0000000..cc78216 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/class-webdados-fb-open-graph.php @@ -0,0 +1,417 @@ +plugin_slug = 'wonderm00ns-simple-facebook-open-graph-tags'; + $this->version = $version; + $this->options = $this->load_options(); + $this->load_dependencies(); + //$this->set_locale(); + $this->call_global_hooks(); + if ( is_admin() ) $this->call_admin_hooks(); + if ( !is_admin() ) $this->call_public_hooks(); + } + + /* Default options */ + private function default_options() { + return array( + //System + 'fb_keep_data_uninstall' => 1, + 'fb_image_min_size' => 200, + //General + 'fb_desc_chars' => 300, + 'fb_image_use_specific' => 1, + 'fb_image_use_featured' => 1, + 'fb_image_use_content' => 0, + 'fb_image_use_media' => 0, + 'fb_image_use_default' => 1, + 'fb_image_use_mshot' => 0, + 'fb_adv_disable_image_size' => 0, + //OG + 'fb_title_show' => 1, + 'fb_sitename_show' => 1, + 'fb_url_show' => 1, + 'fb_desc_show' => 1, + 'fb_image_show' => 1, + 'fb_type_show' => 1, + 'fb_author_show' => 1, + 'fb_article_dates_show' => 1, + 'fb_article_sections_show' => 1, + 'fb_publisher_show' => 1, + 'fb_locale_show' => 1, + 'fb_declaration_method' => 'prefix', + 'fb_adv_notify_fb' => 1, + //Twitter + 'fb_title_show_twitter' => 1, + 'fb_url_show_twitter' => 1, + 'fb_desc_show_twitter' => 1, + 'fb_image_show_twitter' => 1, + 'fb_author_show_twitter' => 1, + 'fb_publisher_show_twitter' => 1, + 'fb_twitter_card_type' => 'summary_large_image', + //Schema + 'fb_title_show_schema' => 1, + 'fb_desc_show_schema' => 1, + 'fb_image_show_schema' => 1, + 'fb_author_show_schema' => 1, + 'fb_article_dates_show_schema' => 1, + 'fb_publisher_show_schema' => 1, + //SEO + //... + //3rd party + 'fb_show_wpseoyoast' => 1, + 'fb_show_aioseop' => 0, + 'fb_wc_useproductgallery' => 1, + 'fb_subheading_position' => 'after', + ); + } + + /* All Settings and sanitize function */ + public function all_options() { + return array( + 'fb_app_id_show' => 'intval', + 'fb_app_id' => 'trim', + 'fb_admin_id_show' => 'intval', + 'fb_admin_id' => 'trim', + 'fb_locale_show' => 'intval', + 'fb_locale' => 'trim', + 'fb_sitename_show' => 'intval', + 'fb_title_show' => 'intval', + 'fb_title_show_schema' => 'intval', + 'fb_title_show_twitter' => 'intval', + 'fb_url_show' => 'intval', + 'fb_url_show_twitter' => 'intval', + 'fb_url_canonical' => 'intval', + 'fb_url_add_trailing' => 'intval', + 'fb_type_show' => 'intval', + 'fb_type_show_schema' => 'intval', + 'fb_type_homepage' => 'trim', + 'fb_type_schema_homepage' => 'trim', + 'fb_type_schema_post' => 'trim', + 'fb_article_dates_show' => 'intval', + 'fb_article_dates_show_schema' => 'intval', + 'fb_article_sections_show' => 'intval', + 'fb_publisher_show' => 'intval', + 'fb_publisher' => 'trim', + 'fb_publisher_show_schema' => 'intval', + 'fb_publisher_schema' => 'trim', + 'fb_publisher_show_twitter' => 'intval', + 'fb_publisher_twitteruser' => 'trim', + 'fb_author_show' => 'intval', + 'fb_author_show_schema' => 'intval', + 'fb_author_show_meta' => 'intval', + 'fb_author_show_linkrelgp' => 'intval', + 'fb_author_show_twitter' => 'intval', + 'fb_author_hide_on_pages' => 'intval', + 'fb_desc_show' => 'intval', + 'fb_desc_show_meta' => 'intval', + 'fb_desc_show_schema' => 'intval', + 'fb_desc_show_twitter' => 'intval', + 'fb_desc_chars' => 'intval', + 'fb_desc_homepage' => 'trim', + 'fb_desc_homepage_customtext' => 'trim', + 'fb_desc_default_option' => 'trim', + 'fb_desc_default' => 'trim', + 'fb_image_show' => 'intval', + 'fb_image_size_show' => 'intval', + 'fb_image_show_schema' => 'intval', + 'fb_image_show_twitter' => 'intval', + 'fb_image' => 'trim', + 'fb_image_rss' => 'intval', + 'fb_image_use_specific' => 'intval', + 'fb_image_use_featured' => 'intval', + 'fb_image_use_content' => 'intval', + 'fb_image_use_media' => 'intval', + 'fb_image_use_default' => 'intval', + 'fb_image_use_mshot' => 'intval', + 'fb_adv_disable_image_size' => 'intval', + 'fb_image_min_size' => 'intval', + 'fb_show_wpseoyoast' => 'intval', + 'fb_show_aioseop' => 'intval', + 'fb_show_subheading' => 'intval', + 'fb_subheading_position' => 'trim', + 'fb_show_businessdirectoryplugin' => 'intval', + 'fb_keep_data_uninstall' => 'intval', + 'fb_adv_force_local' => 'intval', + 'fb_adv_notify_fb' => 'intval', + 'fb_adv_notify_fb_app_id' => 'trim', + 'fb_adv_notify_fb_app_secret' => 'trim', + 'fb_adv_supress_fb_notice' => 'intval', + 'fb_twitter_card_type' => 'trim', + 'fb_wc_usecategthumb' => 'intval', + 'fb_wc_useproductgallery' => 'intval', + 'fb_wc_usepg_png_overlay' => 'intval', + 'fb_image_overlay' => 'intval', + 'fb_image_overlay_image' => 'trim', + 'fb_publisher_show_meta' => 'intval', + 'fb_declaration_method' => 'trim', + 'settings_last_tab' => 'intval', + ); + } + + /* Load Options */ + private function load_options() { + $user_options = get_option( 'wonderm00n_open_graph_settings' ); + if ( !is_array($user_options) ) $user_options = array(); + $all_options = $this->all_options(); + $default_options = $this->default_options(); + if ( is_array( $all_options ) ) { + //Merge the settings "all together now" (yes, it's a Beatles reference) + foreach( $all_options as $key => $sanitize ) { + //We have it on the user settings ? + if ( isset( $user_options[$key] ) ) { + //Is it empty? + if ( mb_strlen( trim( $user_options[$key] ) ) == 0 ) { + //Should we get it from defaults, then? + if ( !empty( $default_options[$key] ) ) { + $user_options[$key] = $default_options[$key]; + } + } + } else { + if ( !empty( $default_options[$key] ) ) { + //Get it from defaults + $user_options[$key] = $default_options[$key]; + } else { + //Or just set it as an empty strings to avoid php notices and having to test isset() all the time + $user_options[$key] = ''; + } + } + } + } + //Some defaults... + //Default type to 'website' - https://wordpress.org/support/topic/the-ogtype-blog-is-not-valid-anymore/ + $user_options['fb_type_homepage'] = 'website'; + //No GD? No overlay + if ( !extension_loaded('gd') ) $user_options['fb_image_overlay'] = 0; + return $user_options; + } + + /* Dependencies */ + private function load_dependencies() { + if ( is_admin() ) require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-webdados-fb-open-graph-admin.php'; + if ( !is_admin() ) require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-webdados-fb-open-graph-public.php'; + } + + /* Translations */ + private function set_locale() { + //load_plugin_textdomain( 'wonderm00ns-simple-facebook-open-graph-tags', false, dirname(plugin_basename(__FILE__)) . '/../lang/' ); + load_plugin_textdomain( 'wonderm00ns-simple-facebook-open-graph-tags' ); + } + + /* Global hooks */ + private function call_global_hooks() { + //Update + add_action( 'plugins_loaded', array( $this, 'update_db_check' ) ); + //Add excerpts to pages + add_action( 'init', array( $this, 'add_excerpts_to_pages' ) ); + } + + /* Admin hooks */ + private function call_admin_hooks() { + $plugin_admin = new Webdados_FB_Admin( $this->options, $this->version ); + // Menu + add_action( 'admin_menu', array( $plugin_admin, 'create_admin_menu' ) ); + // Register settings + add_action( 'admin_init', array( $plugin_admin, 'options_init' ) ); + // WPML - Translate options + add_action( 'update_option_wonderm00n_open_graph_settings', array( $plugin_admin, 'options_wpml' ), 10, 3 ); + // Settings link on the Plugins list + add_filter( 'plugin_action_links_wonderm00ns-simple-facebook-open-graph-tags/wonderm00n-open-graph.php', array( $plugin_admin, 'place_settings_link' ) ); + // User Facebook, Google+ and Twitter profiles + add_action( 'user_contactmethods', array( $plugin_admin, 'user_contactmethods' ) ); + // Add metabox to posts + add_action( 'add_meta_boxes', array( $plugin_admin, 'add_meta_boxes' ) ); + add_action( 'save_post', array( $plugin_admin, 'save_meta_boxes' ) ); + // Admin notices + add_action( 'admin_notices', array( $plugin_admin, 'admin_notices' ) ); + // Admin link to manually update cache + add_action( 'post_updated_messages', array( $plugin_admin, 'post_updated_messages' ) ); + // Session start so we can know if the cache was cleared on Facebook + //if(!session_id()) + //@session_start(); //We use @ because some other plugin could previously sent something to the browser + } + + /* Public hooks */ + private function call_public_hooks() { + //Create public object + $plugin_public = new Webdados_FB_Public( $this->options, $this->version ); + // Get Post as soon as he's set, because some plugins, like BDP usally mess with it + add_action( 'the_post', array( $plugin_public, 'get_post' ), 0 ); + // hook to upate plugin db/options based on version + add_action( 'wp_head', array( $plugin_public, 'insert_meta_tags' ), 99999 ); + // hook to add Open Graph Namespace + add_filter( 'language_attributes', array( $plugin_public, 'add_open_graph_namespace' ), 99999 ); + // Add Schema.org itemtype + add_filter( 'language_attributes', array( $plugin_public, 'add_schema_itemtype' ), 99999 ); + // RSS + add_action( 'rss2_ns', array( $plugin_public, 'images_on_feed_yahoo_media_tag') ); + add_action( 'rss_item', array( $plugin_public, 'images_on_feed_image') ); + add_action( 'rss2_item', array( $plugin_public, 'images_on_feed_image') ); + } + + /* Update database */ + public function update_db_check() { + $upgrade = false; + //Upgrade from 0.5.4 - Last version with individual settings + if ( !$v = get_option('wonderm00n_open_graph_version') ) { + //No version because it's a new install or because it's 0.5.4 or less? + if ( $this->version <= '0.5.4' ) { + + } else { + //A new install - set the default data on the database + $upgrade = true; + update_option( 'wonderm00n_open_graph_settings', $this->options ); + } + } else { + if ( $v < $this->version ) { + //Any version upgrade + $upgrade=true; + //We should do any upgrade we need, right here + if ( $v < '2.0.8' ) { + $this->options['fb_declaration_method'] = 'xmlns'; + update_option( 'wonderm00n_open_graph_settings', $this->options ); + } + } + } + //Set version on database + if ($upgrade) { + update_option( 'wonderm00n_open_graph_version', $this->version ); + } + } + + /* Add excerpt to pages */ + public function add_excerpts_to_pages() { + add_post_type_support( 'page', 'excerpt' ); + } + + /* WPML */ + public function is_wpml_active() { + if ( function_exists( 'icl_object_id' ) && function_exists( 'icl_register_string' ) ) { + global $sitepress; + if ( is_object($sitepress) ) { + return true; + } else { + return false; + } + } + return false; + } + + /* WordPress Locale */ + public function get_locale() { + $locale = get_locale(); + // Facebook doesn't has all the WordPress locales + $locale_mappings = array( + 'af' => 'af_ZA', + 'ar' => 'ar_AR', + 'ary' => 'ar_AR', + 'as' => 'as_IN', + 'az' => 'az_AZ', + 'azb' => 'az_AZ', + 'bel' => 'be_BY', + 'bn_BD' => 'bn_IN', + 'bo' => 'bp_IN', + 'ca' => 'ca_ES', + 'ceb' => 'cx_PH', + 'ckb' => 'cb_IQ', + 'cy' => 'cy_GB', + 'de_CH' => 'de_DE', + 'de_CH_informal' => 'de_DE', + 'de_DE_formal' => 'de_DE', + 'el' => 'el_GR', + 'en_AU' => 'en_GB', + 'en_CA' => 'en_US', + 'en_NZ' => 'en_GB', + 'en_ZA' => 'en_GB', + 'eo' => 'eo_EO', + 'es_AR' => 'es_ES', + 'es_CL' => 'es_ES', + 'es_CO' => 'es_ES', + 'es_GT' => 'es_ES', + 'es_PE' => 'es_ES', + 'es_VE' => 'es_ES', + 'et' => 'et_EE', + 'eu' => 'eu_ES', + 'fi' => 'fi_FI', + 'fr_BE' => 'fr_FR', + 'gd' => 'ga_IE', + 'gu' => 'gu_IN', + 'hr' => 'hr_HR', + 'hy' => 'hy_AM', + 'ja' => 'ja_JP', + 'km' => 'km_KH', + 'lo' => 'lo_LA', + 'lv' => 'lv_LV', + 'mn' => 'mn_MN', + 'mr' => 'mr_IN', + 'nl_NL_formal' => 'nl_NL', + 'ps' => 'ps_AF', + 'pt_PT_ao90' => 'pt_PT', + 'sah' => 'ky_KG', + 'sq' => 'sq_AL', + 'te' => 'te_IN', + 'th' => 'th_TH', + 'tl' => 'tl_PH', + 'uk' => 'uk_UA', + 'ur' => 'ur_PK', + 'vi' => 'vi_VN', + ); + if ( isset($locale_mappings[$locale]) ) $locale = $locale_mappings[$locale]; + return trim($locale); + } + + /* 3rd Party - Yoast SEO */ + public function is_yoast_seo_active() { + if ( defined( 'WPSEO_VERSION' ) ) { + return true; + } + return false; + } + + /* 3rd Party - All in One SEO Pack */ + public function is_aioseop_active() { + if ( defined( 'AIOSEOP_VERSION' ) ) { + return true; + } + return false; + } + + /* 3rd Party - WooCommerce */ + public function is_woocommerce_active() { + return in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ); + } + + /* 3rd Party - Subheading */ + public function is_subheading_plugin_active() { + if ( class_exists( 'SubHeading' ) && function_exists( 'get_the_subheading' ) ) { + return true; + } + return false; + } + + /* 3rd Party - Business Directory Plugin */ + public function is_business_directory_active() { + @include_once(ABSPATH . 'wp-admin/includes/plugin.php'); + if ( is_plugin_active( 'business-directory-plugin/business-directory-plugin.php' ) ) { + return true; + } + return false; + } + +} \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/index.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/index.php new file mode 100644 index 0000000..e71af0e --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/includes/index.php @@ -0,0 +1 @@ +Yoast SEO > Social. If you cannot access that page, you must first " +"activate the \"Advanced settings pages\" at Yoast SEO > Dashboard > Features." +msgstr "" + +#: admin/options-page-3rdparty.php:81 admin/options-page-3rdparty.php:133 +#: admin/options-page-3rdparty.php:198 admin/options-page-3rdparty.php:247 +#: admin/options-page-3rdparty.php:285 +#, php-format +msgid "You don't have %s installed or activated." +msgstr "" + +#: admin/options-page-3rdparty.php:102 +msgid "Use Title and Description" +msgstr "" + +#: admin/options-page-3rdparty.php:109 +msgid "Use Title and Description generated by All in One SEO Pack" +msgstr "" + +#: admin/options-page-3rdparty.php:119 +#, php-format +msgid "" +"Because you are using All in One SEO Pack, and to avoid duplicate social " +"tags, you should disable their social settings at MISSING LINK." +msgstr "" + +#: admin/options-page-3rdparty.php:149 +msgid "" +"On the product page we will automatically set og:type to \"product\" " +"and product:price to the price including tax." +msgstr "" + +#: admin/options-page-3rdparty.php:154 +msgid "Use Product Gallery as Images" +msgstr "" + +#: admin/options-page-3rdparty.php:161 +msgid "" +"Sets each Product Gallery image as an additional og:image tag so " +"that, when a product is shared on Facebook, the user is given the choice " +"what image to display" +msgstr "" + +#: admin/options-page-3rdparty.php:163 admin/options-page-facebook.php:24 +#: admin/options-page-facebook.php:52 admin/options-page-facebook.php:66 +#: admin/options-page-facebook.php:82 admin/options-page-facebook.php:114 +#: admin/options-page-facebook.php:293 admin/options-page-general.php:126 +#: admin/options-page-schema.php:24 admin/options-page-schema.php:38 +#: admin/options-page-schema.php:52 admin/options-page-schema.php:70 +#: admin/options-page-seo.php:32 admin/options-page-seo.php:54 +#: admin/options-page-twitter.php:24 admin/options-page-twitter.php:38 +#: admin/options-page-twitter.php:52 admin/options-page-twitter.php:66 +#, php-format +msgid "You can change this value using the %1$s filter" +msgstr "" + +#: admin/options-page-3rdparty.php:168 admin/options-page-general.php:170 +msgid "Overlay PNG logo" +msgstr "" + +#: admin/options-page-3rdparty.php:175 +msgid "Also overlay the PNG logo on the Product Gallery images" +msgstr "" + +#: admin/options-page-3rdparty.php:180 +msgid "Use Category thumbnail as Image" +msgstr "" + +#: admin/options-page-3rdparty.php:187 +msgid "" +"Recommended if you set large thumbnails for Product Categories and want to " +"use them as Open Graph Images on category listing pages" +msgstr "" + +#: admin/options-page-3rdparty.php:189 +msgid "" +"This setting also applies to brand pages if WooCommerce Brands is installed" +msgstr "" + +#: admin/options-page-3rdparty.php:218 +msgid "Add SubHeading to Post/Page Title" +msgstr "" + +#: admin/options-page-3rdparty.php:229 +msgid "SubHeading position" +msgstr "" + +#: admin/options-page-3rdparty.php:232 +msgid "After" +msgstr "" + +#: admin/options-page-3rdparty.php:233 +msgid "Before" +msgstr "" + +#: admin/options-page-3rdparty.php:267 +msgid "Use listing details" +msgstr "" + +#: admin/options-page-3rdparty.php:274 +msgid "" +"Use Business Directory Plugin listing details (Title, URL, Description and " +"Image) to populate tags" +msgstr "" + +#: admin/options-page-3rdparty.php:276 +msgid "" +"Setting \"Include URL\", \"Set Canonical URL\", \"Include Description\" and " +"\"Include Image\" options is HIGHLY recommended" +msgstr "" + +#: admin/options-page-facebook.php:7 +msgid "" +"Open Graph tags used by Facebook, and other social networks, to render link " +"share posts." +msgstr "" + +#: admin/options-page-facebook.php:9 +msgid "Facebook Open Graph Tags" +msgstr "" + +#: admin/options-page-facebook.php:15 +msgid "Include Post/Page Title" +msgstr "" + +#: admin/options-page-facebook.php:29 +msgid "Include Site Name" +msgstr "" + +#: admin/options-page-facebook.php:38 admin/options-page-seo.php:82 +msgid "From Settings > General > Site Title" +msgstr "" + +#: admin/options-page-facebook.php:43 admin/options-page-twitter.php:29 +msgid "Include URL" +msgstr "" + +#: admin/options-page-facebook.php:57 admin/options-page-schema.php:29 +#: admin/options-page-twitter.php:43 +msgid "Include Description" +msgstr "" + +#: admin/options-page-facebook.php:71 admin/options-page-schema.php:43 +#: admin/options-page-twitter.php:57 +msgid "Include Image" +msgstr "" + +#: admin/options-page-facebook.php:80 +#, php-format +msgid "" +"All images must have at least 200px on both dimensions in order to Facebook " +"to load them at all. %dx%dpx for optimal results. Minimum of 600x315px is " +"recommended." +msgstr "" + +#: admin/options-page-facebook.php:87 +msgid "Include Image Dimensions" +msgstr "" + +#: admin/options-page-facebook.php:94 admin/options-page-facebook.php:157 +#: admin/options-page-schema.php:22 admin/options-page-schema.php:142 +msgid "and" +msgstr "" + +#: admin/options-page-facebook.php:96 +msgid "" +"Recommended only if Facebook is having problems loading the image when the " +"post is shared for the first time, or else it adds extra unnecessary " +"processing time" +msgstr "" + +#: admin/options-page-facebook.php:101 admin/options-page-schema.php:57 +msgid "Include Type" +msgstr "" + +#: admin/options-page-facebook.php:110 +#, php-format +msgid "" +"Will be \"%1$s\" for posts and pages and \"%2$s\" or \"%3$s\" for the " +"homepage" +msgstr "" + +#: admin/options-page-facebook.php:112 +msgid "Additional types may be used depending on 3rd party integrations" +msgstr "" + +#: admin/options-page-facebook.php:119 admin/options-page-schema.php:75 +msgid "Homepage Type" +msgstr "" + +#: admin/options-page-facebook.php:131 +msgid "" +"Facebook does not support blog anymore, so we have to default to " +"website" +msgstr "" + +#: admin/options-page-facebook.php:136 admin/options-page-schema.php:107 +#: admin/options-page-schema.php:121 admin/options-page-twitter.php:71 +msgid "Include Post/Page Author" +msgstr "" + +#: admin/options-page-facebook.php:145 +msgid "The user's Facebook URL must be filled in on his profile" +msgstr "" + +#: admin/options-page-facebook.php:150 admin/options-page-schema.php:135 +msgid "Include Published/Modified Dates" +msgstr "" + +#: admin/options-page-facebook.php:159 admin/options-page-facebook.php:173 +#: admin/options-page-schema.php:144 +msgid "For posts only" +msgstr "" + +#: admin/options-page-facebook.php:164 +msgid "Include Article Sections" +msgstr "" + +#: admin/options-page-facebook.php:173 +msgid "from the categories names" +msgstr "" + +#: admin/options-page-facebook.php:178 admin/options-page-schema.php:149 +#: admin/options-page-seo.php:73 admin/options-page-twitter.php:85 +msgid "Include Publisher" +msgstr "" + +#: admin/options-page-facebook.php:187 admin/options-page-facebook.php:213 +msgid "The website's Facebook Page" +msgstr "" + +#: admin/options-page-facebook.php:192 +msgid "Website's Facebook Page" +msgstr "" + +#: admin/options-page-facebook.php:199 +msgid "Facebook Page URL (with https://)" +msgstr "" + +#: admin/options-page-facebook.php:204 +msgid "Include Locale" +msgstr "" + +#: admin/options-page-facebook.php:218 +msgid "Locale" +msgstr "" + +#: admin/options-page-facebook.php:260 +msgid "WordPress current locale/language" +msgstr "" + +#: admin/options-page-facebook.php:281 +msgid "List loaded from Facebook (online)" +msgstr "" + +#: admin/options-page-facebook.php:284 +msgid "List loaded from local cache (offline)" +msgstr "" + +#: admin/options-page-facebook.php:285 +msgid "You\\'l lose any changes you haven\\'t saved. Are you sure?" +msgstr "" + +#: admin/options-page-facebook.php:285 +msgid "Reload from Facebook" +msgstr "" + +#: admin/options-page-facebook.php:288 +msgid "List not loaded" +msgstr "" + +#: admin/options-page-facebook.php:298 +msgid "Include Facebook Admin(s) ID" +msgstr "" + +#: admin/options-page-facebook.php:310 +msgid "Facebook Admin(s) ID" +msgstr "" + +#: admin/options-page-facebook.php:317 +msgid "Comma separated if more than one" +msgstr "" + +#: admin/options-page-facebook.php:322 +msgid "Include Facebook Platform App ID" +msgstr "" + +#: admin/options-page-facebook.php:334 +msgid "Facebook Platform App ID" +msgstr "" + +#: admin/options-page-facebook.php:341 +msgid "From your Facebook Developers dashboard" +msgstr "" + +#: admin/options-page-facebook.php:345 +msgid "Declaration Method" +msgstr "" + +#: admin/options-page-facebook.php:355 +msgid "or" +msgstr "" + +#: admin/options-page-facebook.php:357 +msgid "" +"Prefix is recommended because it validates properly with the W3C validator, " +"xmlns is the legacy method" +msgstr "" + +#: admin/options-page-facebook.php:366 +msgid "Facebook Open Graph Tags cache" +msgstr "" + +#: admin/options-page-facebook.php:372 +msgid "Clear cache" +msgstr "" + +#: admin/options-page-facebook.php:379 +msgid "" +"Try to clear the Facebook Open Graph Tags cache when saving a post or page, " +"so the link preview on Facebook is immediately updated" +msgstr "" + +#: admin/options-page-facebook.php:384 +msgid "App ID" +msgstr "" + +#: admin/options-page-facebook.php:391 +msgid "App Secret" +msgstr "" + +#: admin/options-page-facebook.php:398 +#, php-format +msgid "" +"Facebook no longer allows updating the cache anonymously, so you have to use " +"a App ID and Secret to do it. Read here " +"how to do it." +msgstr "" + +#: admin/options-page-facebook.php:400 +msgid "" +"If you are using the (now deprecated) fb_og_update_cache_url filter, " +"this ID and Secret will NOT be used. You should stop using the filter and " +"use these settings." +msgstr "" + +#: admin/options-page-facebook.php:402 +msgid "" +"Please do not ask for support regarding this feature. Everything is " +"explained in the blog post linked above." +msgstr "" + +#: admin/options-page-facebook.php:407 +msgid "Suppress cache notices" +msgstr "" + +#: admin/options-page-facebook.php:414 +msgid "" +"Sometimes we aren't able to update the cache and the post author will see a " +"notice if this option is not checked" +msgstr "" + +#: admin/options-page-general.php:9 +msgid "General settings that will apply to all tags types." +msgstr "" + +#: admin/options-page-general.php:11 +msgid "Description settings" +msgstr "" + +#: admin/options-page-general.php:17 +msgid "Description maximum length" +msgstr "" + +#: admin/options-page-general.php:19 +msgid "characters" +msgstr "" + +#: admin/options-page-general.php:24 +msgid "0 (zero) or blank for no maximum length" +msgstr "" + +#: admin/options-page-general.php:27 admin/options-page-general.php:58 +#: admin/options-page-general.php:89 +msgid "Because Yoast SEO integration is active, this value may be overwritten" +msgstr "" + +#: admin/options-page-general.php:34 admin/options-page-general.php:76 +msgid "Homepage description" +msgstr "" + +#: admin/options-page-general.php:40 +msgid "The description of your front page:" +msgstr "" + +#: admin/options-page-general.php:45 +msgid "Website tagline" +msgstr "" + +#: admin/options-page-general.php:46 admin/options-page-general.php:77 +msgid "Custom text" +msgstr "" + +#: admin/options-page-general.php:64 +#, php-format +msgid "" +"WPML users: Set the main language homepage description here, save changes " +"and then go to WPML > String " +"translation to set it for other languages." +msgstr "" + +#: admin/options-page-general.php:73 +msgid "Default description" +msgstr "" + +#: admin/options-page-general.php:86 +msgid "" +"The default description to be used on any post / page / cpt / archive / " +"search / ... that has a blank description" +msgstr "" + +#: admin/options-page-general.php:95 +#, php-format +msgid "" +"WPML users: Set the main language default description here, save changes and " +"then go to WPML > String translation " +"to set it for other languages." +msgstr "" + +#: admin/options-page-general.php:108 +msgid "Image settings" +msgstr "" + +#: admin/options-page-general.php:114 +msgid "Default image" +msgstr "" + +#: admin/options-page-general.php:122 admin/options-page-general.php:200 +msgid "URL (with http(s)://)" +msgstr "" + +#: admin/options-page-general.php:131 +msgid "On Post/Page, use image from" +msgstr "" + +#: admin/options-page-general.php:135 +msgid "\"Open Graph Image\" custom field on the post" +msgstr "" + +#: admin/options-page-general.php:139 +msgid "Post/page featured image" +msgstr "" + +#: admin/options-page-general.php:143 +msgid "First image from the post/page content" +msgstr "" + +#: admin/options-page-general.php:147 +msgid "First image from the post/page media gallery" +msgstr "" + +#: admin/options-page-general.php:151 +msgid "Default image specified above" +msgstr "" + +#: admin/options-page-general.php:159 +msgid "Page screenshot (provided by WordPress.com mShots API)" +msgstr "" + +#: admin/options-page-general.php:165 +msgid "" +"On posts/pages the first image found, using the priority above, will be " +"used. On the homepage, archives and other website sections the default image " +"is always used." +msgstr "" + +#: admin/options-page-general.php:175 +msgid "No" +msgstr "" + +#: admin/options-page-general.php:183 +#, php-format +msgid "" +"The original image will be resized/cropped to %dx%dpx and the chosen PNG " +"(that should also have this size) will be overlaid on it. It will only work " +"for locally hosted images." +msgstr "" + +#: admin/options-page-general.php:185 +#, php-format +msgid "" +"You can see an example of the end result here" +msgstr "" + +#: admin/options-page-general.php:187 +#, php-format +msgid "" +"If you activate this option globally, you can disable it based on your " +"conditions using the %1$s filter" +msgstr "" + +#: admin/options-page-general.php:192 +msgid "PNG logo" +msgstr "" + +#: admin/options-page-general.php:202 +#, php-format +msgid "Size: %dx%dpx" +msgstr "" + +#: admin/options-page-general.php:208 +#, php-format +msgid "" +"You need the PHP GD library to use this " +"feature. Please ask your hosting company to enable it." +msgstr "" + +#: admin/options-page-general.php:214 +msgid "Add image to RSS/RSS2 feeds" +msgstr "" + +#: admin/options-page-general.php:221 +msgid "For auto-posting apps like RSS Graffiti, twitterfeed, ..." +msgstr "" + +#: admin/options-page-general.php:226 +msgid "Force getimagesize on local file" +msgstr "" + +#: admin/options-page-general.php:233 admin/options-page-general.php:249 +msgid "" +"This is an advanced option: Don't mess with this unless you know what you're " +"doing" +msgstr "" + +#: admin/options-page-general.php:235 +msgid "Force getimagesize on local file even if allow_url_fopen=1" +msgstr "" + +#: admin/options-page-general.php:237 +msgid "" +"May cause problems with some multisite configurations but fixes \"HTTP " +"request failed\" errors" +msgstr "" + +#: admin/options-page-general.php:242 +msgid "Do not get image size" +msgstr "" + +#: admin/options-page-general.php:251 +msgid "" +"You should only activate this option if you're getting fatal errors (white " +"screen of death) and only keep it active if this options does solve those " +"errors" +msgstr "" + +#: admin/options-page-general.php:253 +msgid "Should not be needed on version 2.2 and above" +msgstr "" + +#: admin/options-page-general.php:255 +msgid "" +"This can render the \"Add image to RSS/RSS2 feeds\" and \"Open Graph - " +"Include Image Dimensions\" options useless" +msgstr "" + +#: admin/options-page-general.php:266 +msgid "URL settings" +msgstr "" + +#: admin/options-page-general.php:272 +msgid "Add trailing slash at the end" +msgstr "" + +#: admin/options-page-general.php:279 +msgid "If missing, a trailing slash will be added at the end" +msgstr "" + +#: admin/options-page-general.php:281 +msgid "Homepage example:" +msgstr "" + +#: admin/options-page-general.php:290 +msgid "Author settings" +msgstr "" + +#: admin/options-page-general.php:296 +msgid "Hide Author on Pages" +msgstr "" + +#: admin/options-page-general.php:303 +msgid "Hides all Author tags on Pages" +msgstr "" + +#: admin/options-page-general.php:312 +msgid "Other settings" +msgstr "" + +#: admin/options-page-general.php:318 +msgid "Keep data on uninstall" +msgstr "" + +#: admin/options-page-general.php:325 +msgid "" +"Keep the plugin settings on the database even if the plugin is uninstalled" +msgstr "" + +#: admin/options-page-right.php:5 +msgid "Test your URLs on the Facebook Debugger" +msgstr "" + +#: admin/options-page-right.php:9 +msgid "Test your URLs on the Twitter Card validator" +msgstr "" + +#: admin/options-page-right.php:13 +msgid "About the Open Graph Protocol (on Facebook)" +msgstr "" + +#: admin/options-page-right.php:17 +msgid "The Open Graph Protocol (official website)" +msgstr "" + +#: admin/options-page-right.php:21 +msgid "About Twitter Cards" +msgstr "" + +#: admin/options-page-right.php:25 +msgid "Plugin official URL" +msgstr "" + +#: admin/options-page-right.php:29 +msgid "Author's website: Webdados" +msgstr "" + +#: admin/options-page-right.php:33 +msgid "Author's Facebook page: Webdados" +msgstr "" + +#: admin/options-page-right.php:37 +msgid "Author's Twitter account: @Wonderm00n
                        (Webdados founder)" +msgstr "" + +#: admin/options-page-right.php:48 +msgid "About this plugin" +msgstr "" + +#: admin/options-page-right.php:50 +msgid "Support forum" +msgstr "" + +#: admin/options-page-right.php:52 +msgid "Premium technical support or custom WordPress development" +msgstr "" + +#: admin/options-page-right.php:53 +#, php-format +msgid "Please contact %s" +msgstr "" + +#: admin/options-page-right.php:54 +msgid "Please rate our plugin at WordPress.org" +msgstr "" + +#: admin/options-page-right.php:62 +msgid "Useful links" +msgstr "" + +#: admin/options-page-right.php:73 +msgid "Donate" +msgstr "" + +#: admin/options-page-right.php:75 +msgid "" +"If you find this plugin useful and want to make a contribution towards " +"future development please consider making a small, or big ;-), donation." +msgstr "" + +#: admin/options-page-right.php:83 +msgid "Donate in US Dollars" +msgstr "" + +#: admin/options-page-right.php:84 +msgid "Donate in Euros" +msgstr "" + +#: admin/options-page-schema.php:7 +msgid "Schema.org tags used by Google+ to render link share posts." +msgstr "" + +#: admin/options-page-schema.php:9 +msgid "Google+ / Schema.org Tags" +msgstr "" + +#: admin/options-page-schema.php:15 admin/options-page-twitter.php:15 +msgid "Include Title" +msgstr "" + +#: admin/options-page-schema.php:66 +msgid "Experimental" +msgstr "" + +#: admin/options-page-schema.php:68 +msgid "" +"Added to the HTML tag, if you want to avoid W3C and Structured Data " +"validation errors" +msgstr "" + +#: admin/options-page-schema.php:89 +msgid "Default (including Post/Page) Type" +msgstr "" + +#: admin/options-page-schema.php:116 +msgid "The user's Google+ URL must be filled in on his profile" +msgstr "" + +#: admin/options-page-schema.php:130 admin/options-page-seo.php:68 +msgid "From the user Display name" +msgstr "" + +#: admin/options-page-schema.php:158 +msgid "The website's Google+ Page" +msgstr "" + +#: admin/options-page-schema.php:163 +msgid "Website's Google+ Page" +msgstr "" + +#: admin/options-page-schema.php:170 +msgid "Google+ Page URL (with https://)" +msgstr "" + +#: admin/options-page-seo.php:7 +msgid "" +"SEO Meta Tags that are recommended ONLY if no other plugin is setting them " +"already." +msgstr "" + +#: admin/options-page-seo.php:9 +msgid "SEO Meta Tags" +msgstr "" + +#: admin/options-page-seo.php:15 +msgid "Set Canonical URL" +msgstr "" + +#: admin/options-page-seo.php:27 admin/options-page-seo.php:49 +msgid "Not recommended because you have Yoast SEO active" +msgstr "" + +#: admin/options-page-seo.php:37 +msgid "Include Meta Description tag" +msgstr "" + +#: admin/options-page-seo.php:59 +msgid "Include Post/Page Author name" +msgstr "" + +#: admin/options-page-tools.php:7 +msgid "Just some random tools" +msgstr "" + +#: admin/options-page-tools.php:9 +msgid "Image tools" +msgstr "" + +#: admin/options-page-tools.php:15 +msgid "Clear all transients" +msgstr "" + +#: admin/options-page-tools.php:19 +msgid "Do it" +msgstr "" + +#: admin/options-page-tools.php:24 +msgid "" +"This is an advanced tool: Don't mess with this unless you know what you're " +"doing" +msgstr "" + +#: admin/options-page-tools.php:26 +msgid "" +"We use transients to cache the image sizes, so that we only have to " +"calculate them once (a week). Because of some server issues it may happen " +"that we cannot correctly get the image size and we'll cache that, meaning " +"that we'll never try it again (for a week). This tool will delete ALL the " +"transients and force the image size calculation to be done again for all " +"images, as they're nedded." +msgstr "" + +#: admin/options-page-twitter.php:7 +msgid "Tags used by Twitter to render their Cards." +msgstr "" + +#: admin/options-page-twitter.php:9 +msgid "Twitter Card Tags" +msgstr "" + +#: admin/options-page-twitter.php:80 +msgid "The user's Twitter Username must be filled in on his profile" +msgstr "" + +#: admin/options-page-twitter.php:94 +msgid "The website's Twitter Username" +msgstr "" + +#: admin/options-page-twitter.php:99 +msgid "Website's Twitter Username" +msgstr "" + +#: admin/options-page-twitter.php:111 +msgid "Card Type" +msgstr "" + +#: admin/options-page-twitter.php:114 +msgid "Summary Card" +msgstr "" + +#: admin/options-page-twitter.php:115 +msgid "Summary Card with Large Image" +msgstr "" + +#: admin/options-page-twitter.php:123 +msgid "The type of Twitter Card shown on the timeline" +msgstr "" + +#: admin/options-page.php:14 +msgid "" +"Please set some default values and which tags should, or should not, be " +"included. It may be necessary to exclude some tags if other plugins are " +"already including them." +msgstr "" + +#: admin/options-page.php:31 +msgid "General" +msgstr "" + +#: admin/options-page.php:37 +msgid "Open Graph" +msgstr "" + +#: admin/options-page.php:43 +msgid "Cards" +msgstr "" + +#: admin/options-page.php:49 +msgid "Schema" +msgstr "" + +#: admin/options-page.php:55 +msgid "SEO tags" +msgstr "" + +#: admin/options-page.php:61 +msgid "3rd party" +msgstr "" + +#: admin/options-page.php:67 +msgid "Tools" +msgstr "" + +#: public/class-webdados-fb-open-graph-public.php:235 +msgid "Price" +msgstr "" + +#: public/class-webdados-fb-open-graph-public.php:320 +msgid "Search for" +msgstr "" + +#: public/class-webdados-fb-open-graph-public.php:332 +#: public/class-webdados-fb-open-graph-public.php:337 +#: public/class-webdados-fb-open-graph-public.php:342 +msgid "Archives" +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "Open Graph and Twitter Card Tags" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "" +"https://www.webdados.pt/produtos-e-servicos/internet/desenvolvimento-" +"wordpress/facebook-open-graph-meta-tags-wordpress/" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"Inserts Facebook Open Graph, Google+/Schema.org, Twitter Card and SEO Meta " +"Tags into your WordPress Blog/Website for more effective and efficient " +"Facebook, Google+ and Twitter sharing results. You can also choose to insert " +"the \"enclosure\" and \"media:content\" tags to the RSS feeds, so that apps " +"like RSS Graffiti and Twitterfeed post the image to Facebook correctly." +msgstr "" + +#. Author of the plugin/theme +msgid "Webdados" +msgstr "" + +#. Author URI of the plugin/theme +msgid "https://www.webdados.pt" +msgstr "" diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/public/class-webdados-fb-open-graph-public.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/public/class-webdados-fb-open-graph-public.php new file mode 100644 index 0000000..3f741c0 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/public/class-webdados-fb-open-graph-public.php @@ -0,0 +1,1182 @@ +options = $options; + $this->version = $version; + } + + + + /* Insert the tags on the header */ + function get_post( $post ) { + if ( is_singular() ) { + $this->post = $post; + } + return $post; + } + + + + /* Insert the tags on the header */ + public function insert_meta_tags() { + global $webdados_fb, $wp_query; + + $debug = array(); + + if ( !apply_filters( 'fb_og_disable', false ) ) { + + //Open tag + $html=' + +'; + + if ( apply_filters('fb_og_enabled', true) ) { + + //Partial image - Since 2.2 we do NOT get partial by default anymore - Advanced users can use this filter to use it again + $this->image_size_use_partial = apply_filters( 'fb_og_image_size_use_partial', false ); + //If we're using partial image, we lower the transient validity to one day + if ( $this->image_size_use_partial ) $this->transient_validity = DAY_IN_SECONDS; + + //Also set Title Tag? - Needed?? + $fb_set_title_tag=0; + + //Init values + $fb_locale = ''; + $fb_title = ''; + $fb_url = ''; + $fb_desc = ''; + $fb_image = ''; + $fb_type = 'article'; + $fb_author = ''; + $fb_author_meta = ''; + $fb_author_linkrelgp = ''; + $fb_author_twitter = ''; + $fb_article_pub_date = ''; + $fb_article_mod_date = ''; + $fb_image_additional = array(); + $fb_additional_tags = array( + 'name' => array(), + 'property' => array(), + ); + $fb_publisher = trim($this->options['fb_publisher']); + $fb_publisher_schema = trim($this->options['fb_publisher_schema']); + $fb_publisher_twitteruser = trim($this->options['fb_publisher_twitteruser']); + + //Homepage Description + switch( $this->options['fb_desc_homepage'] ) { + case 'custom': + $fb_desc_homepage = $this->options['fb_desc_homepage_customtext']; + //WPML? + if ( $webdados_fb->is_wpml_active() ) { + global $sitepress; + if ( ICL_LANGUAGE_CODE != $sitepress->get_default_language() ) { + $fb_desc_homepage = icl_t( 'wd-fb-og', 'wd_fb_og_desc_homepage_customtext', $fb_desc_homepage ); + } + } + break; + default: + $fb_desc_homepage = get_bloginfo( 'description' ); + break; + } + + if ( is_singular() ) { //Including homepage if set as static page + + $debug[] = 'is_singular'; + + global $post; + // Title + //It's a Post or a Page or an attachment page - It can also be the homepage if it's set as a page + $fb_title = wp_strip_all_tags( stripslashes( $post->post_title ), true ); + //SubHeading + if ( isset($this->options['fb_show_subheading']) && intval($this->options['fb_show_subheading'])==1 && $webdados_fb->is_subheading_plugin_active() ) { + if (isset($this->options['fb_subheading_position']) && $this->options['fb_subheading_position']=='before' ) { + $fb_title = trim( trim(get_the_subheading()).' - '.trim($fb_title), ' -' ); + } else { + $fb_title = trim( trim($fb_title).' - '.trim(get_the_subheading()), ' -' ); + } + } + // URL + $fb_url = get_permalink(); + // Type if it's a homepage page + if ( is_front_page() ) { + /* Fix homepage type when it's a static page */ + $fb_url = get_option('home').(intval($this->options['fb_url_add_trailing'])==1 ? '/' : '' ); + $fb_type = trim($this->options['fb_type_homepage']=='' ? 'website' : $this->options['fb_type_homepage']); + } + // Description + if ( $fb_desc = trim( get_post_meta($post->ID, '_webdados_fb_open_graph_specific_description', true) ) ) { + //From our metabox + } else { + if ( trim( $post->post_excerpt ) != '' ) { + //If there's an excerpt that's what we'll use + $fb_desc = trim( $post->post_excerpt ); + } else { + //If not we grab it from the content + $fb_desc = trim( $post->post_content ); + } + } + // Image + if ( intval($this->options['fb_image_show'])==1 || intval($this->options['fb_image_show_schema'])==1 || intval($this->options['fb_image_show_twitter'])==1 ) { + $fb_image = $this->get_post_image(); + } + // Author + $author_id = $post->post_author; + if ( $author_id > 0 && ! ( is_page() && intval($this->options['fb_author_hide_on_pages'])==1 ) ) { + $fb_author = get_the_author_meta('facebook', $author_id); + $fb_author_meta = get_the_author_meta('display_name', $author_id); + $fb_author_linkrelgp = get_the_author_meta('googleplus', $author_id); + $fb_author_twitter = get_the_author_meta('twitter', $author_id); + } + + //Published and Modified time - We should check this out and maybe have it for any kind of post... + if ( is_singular('post' ) ) { + $fb_article_pub_date = get_the_date('c' ); + $fb_article_mod_date = get_the_modified_date('c' ); + } else { + //Reset dates show because we're not on posts + $this->options['fb_article_dates_show'] = 0; + } + //Sections + if ( is_singular('post' ) ) { + $cats = get_the_category(); + if ( !is_wp_error($cats) && (is_array($cats) && count($cats)>0) ) { + $fb_sections = array(); + foreach ($cats as $cat) { + $fb_sections[] = $cat->name; + } + } + } else { + $this->options['fb_article_sections_show'] = 0; + } + // Business Directory Plugin + if ( isset( $this->options['fb_show_businessdirectoryplugin'] ) && $webdados_fb->is_business_directory_active() ) { + global $wpbdp; + $bdp_action = wpbdp_current_action(); + $bdp_disable_cpt = wpbdp_get_option( 'disable-cpt' ); + $current_view_object = $wpbdp->dispatcher->current_view_object(); + switch( $bdp_action ) { + case 'show_listing': + $fb_title = trim( wp_strip_all_tags( stripslashes( $this->post->post_title ), true ).' - '.$fb_title, ' -' ); + $fb_set_title_tag = 1; + $fb_url = get_permalink($this->post->ID); + if ( trim($this->post->post_excerpt)!='' ) { + //If there's an excerpt that's what we'll use + $fb_desc = trim($this->post->post_excerpt); + } else { + //If not we grab it from the content + $fb_desc = trim($this->post->post_content); + } + if (intval($this->options['fb_image_show'])==1 || intval($this->options['fb_image_show_schema'])==1 || intval($this->options['fb_image_show_twitter'])==1) { + $thumbdone = false; + if ( intval($this->options['fb_image_use_featured'])==1 ) { + //Featured + if ( $id_attachment = get_post_thumbnail_id( $this->post->ID ) ) { + //There's a featured/thumbnail image for this listing + $fb_image = wp_get_attachment_url( $id_attachment, false ); + $thumbdone = true; + } else { + } + } + if ( !$thumbdone ) { + //Main image loaded + if ( $thumbnail_id = wpbdp_listings_api()->get_thumbnail_id( $this->post->ID ) ) { + $fb_image = wp_get_attachment_url( $thumbnail_id, false ); + $thumbdone = true; + } + } + } + } + } + // WooCommerce + if ( $webdados_fb->is_woocommerce_active() && is_product() ) { + $debug[] = 'is_product'; + $fb_type = 'product'; + $product = new WC_Product( $post->ID ); + //Price + $price = version_compare( WC_VERSION, '3.0', '>=' ) ? wc_get_price_including_tax($product) : $product->get_price_including_tax(); + $currency = get_woocommerce_currency(); + $fb_additional_tags['property']['product_price_amount'] = array( + $price + ); + if ( function_exists('get_woocommerce_currency') ) $fb_additional_tags['property']['product_price_currency'] = array( + $currency + ); + $fb_additional_tags['name']['twitter_label1'] = array( + __('Price', 'wonderm00ns-simple-facebook-open-graph-tags') + ); + if ( function_exists('get_woocommerce_currency') ) $fb_additional_tags['name']['twitter_data1'] = array( + $price.' '.get_woocommerce_currency() + ); + //Stock + if ( $product->is_in_stock() ) { + $fb_additional_tags['property']['product_availability'] = array( + 'instock' + ); + } else { + $fb_additional_tags['property']['product_availability'] = array( + 'oos' + ); + } + //Additional product images? + if ( intval($this->options['fb_image_show'])==1 && $this->options['fb_wc_useproductgallery']==1 ) { + if ( $attachment_ids = version_compare( WC_VERSION, '3.0', '>=' ) ? $product->get_gallery_image_ids() : $product->get_gallery_attachment_ids() ) { + foreach ( $attachment_ids as $attachment_id ) { + if ( $image_link = wp_get_attachment_url( $attachment_id ) ) { + if ( trim($image_link)!='' ) { + $fb_image_additional[] = array( + 'fb_image' => trim($image_link), + 'png_overlay' => ( intval($this->options['fb_wc_usepg_png_overlay']) ? true : false ), + ); + } + } + } + } + } + } + + } else { + + //Other pages - Defaults + $fb_title = wp_strip_all_tags( stripslashes( get_bloginfo( 'name' ) ), true ); + $fb_url = ( ( !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://' ).$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; //Not really canonical but will work for now + $fb_image = intval($this->options['fb_image_use_default'])==1 ? trim( $this->options['fb_image'] ) : ''; + + $this->options['fb_article_sections_show'] = 0; + $this->options['fb_article_dates_show'] = 0; + $this->options['fb_author_show'] = 0; + $this->options['fb_author_show_meta'] = 0; + $this->options['fb_author_show_linkrelgp'] = 0; + $this->options['fb_author_show_twitter'] = 0; + $this->options['fb_author_show_twitter'] = 0; + + //Category + if ( is_category() ) { + $debug[] = 'is_category'; + $fb_title = wp_strip_all_tags( stripslashes( single_cat_title( '', false ) ), true ); + $term = $wp_query->get_queried_object(); + $fb_url = get_term_link( $term, $term->taxonomy ); + $cat_desc = trim( wp_strip_all_tags( stripslashes( category_description() ), true ) ); + if ( trim($cat_desc)!='' ) $fb_desc = $cat_desc; + } else { + if ( is_tag() ) { + $debug[] = 'is_tag'; + $fb_title = wp_strip_all_tags( stripslashes( single_tag_title( '', false ) ), true ); + $term = $wp_query->get_queried_object(); + $fb_url = get_term_link( $term, $term->taxonomy ); + $tag_desc = trim( wp_strip_all_tags( stripslashes( tag_description() ), true ) ); + if ( trim($tag_desc)!='' ) $fb_desc = $tag_desc; + } else { + if (is_tax()) { + $fb_title = wp_strip_all_tags( stripslashes( single_term_title( '', false ) ), true ); + $term = $wp_query->get_queried_object(); + $fb_url = get_term_link($term, $term->taxonomy); + $debug[] = 'is_tax: '.$term->taxonomy; + $tax_desc = trim( wp_strip_all_tags( stripslashes( term_description() ), true ) ); + if ( trim($tax_desc)!='' ) $fb_desc = $tax_desc; + //WooCommerce + if ( $webdados_fb->is_woocommerce_active() && intval($this->options['fb_wc_usecategthumb'])==1 && ( is_product_category() || is_tax('product_brand') ) ) { + if ( is_product_category() ) $debug[] = 'is_product_category'; + if ( intval($this->options['fb_image_show'])==1 || intval($this->options['fb_image_show_schema'])==1 || intval($this->options['fb_image_show_twitter'])==1 ) { + if ( $thumbnail_id = get_term_meta( $term->term_id, 'thumbnail_id', true ) ) { + if ( $image = wp_get_attachment_url( $thumbnail_id ) ) { + $fb_image = $image; + } + } + } + } + } else { + if ( is_search() ) { + $debug[] = 'is_search'; + $fb_title = wp_strip_all_tags( stripslashes( __('Search for', 'wonderm00ns-simple-facebook-open-graph-tags').' "'.get_search_query().'"' ), true ); + $fb_url = get_search_link(); + } else { + if (is_author()) { + $debug[] = 'is_author'; + $fb_title = wp_strip_all_tags( stripslashes( get_the_author_meta('display_name', get_query_var('author') ) ), true ); + $fb_url = get_author_posts_url( get_query_var('author'), get_query_var('author_name') ); + } else { + if ( is_archive() ) { + $debug[] = 'is_archive'; + if ( is_day() ) { + $debug[] = 'is_day'; + $fb_title = wp_strip_all_tags( stripslashes( get_query_var( 'day' ) . ' ' .single_month_title( ' ', false ) . ' ' . __( 'Archives', 'wonderm00ns-simple-facebook-open-graph-tags' ) ), true ); + $fb_url = get_day_link( get_query_var( 'year' ), get_query_var( 'monthnum' ), get_query_var( 'day' ) ); + } else { + if ( is_month() ) { + $debug[] = 'is_month'; + $fb_title = wp_strip_all_tags( stripslashes( single_month_title( ' ', false ) . ' ' . __( 'Archives', 'wonderm00ns-simple-facebook-open-graph-tags' ) ), true ); + $fb_url = get_month_link( get_query_var( 'year' ), get_query_var( 'monthnum' ) ); + } else { + if ( is_year() ) { + $debug[] = 'is_year'; + $fb_title = wp_strip_all_tags( stripslashes( get_query_var( 'year' ) . ' ' . __( 'Archives', 'wonderm00ns-simple-facebook-open-graph-tags' ) ), true ); + $fb_url = get_year_link( get_query_var( 'year' ) ); + } + } + } + } else { + if ( is_front_page() ) { //Regular homepage + $debug[] = 'is_front_page'; + $fb_url = get_option('home').(intval($this->options['fb_url_add_trailing'])==1 ? '/' : ''); + $fb_type = trim( $this->options['fb_type_homepage']=='' ? 'website' : $this->options['fb_type_homepage'] ); + $fb_desc = $fb_desc_homepage; + } else { + if ( is_home() ) { //Blog page (set as page) + $debug[] = 'is_home'; + if ( 'page' === get_option( 'show_on_front' ) && $page_for_posts = get_option( 'page_for_posts' ) ) { + //$post = get_post( $page_for_posts ); //This is NOT the global $post and it's actually not needed because we'll use the post ID = $page_for_posts + //Blog page + $fb_type = trim( $this->options['fb_type_homepage']=='' ? 'website' : $this->options['fb_type_homepage'] ); + if ( $fb_desc = trim( get_post_meta($page_for_posts, '_webdados_fb_open_graph_specific_description', true) ) ) { + //OK - From our metabox + } else { + //Use default + $fb_desc = $fb_desc_homepage; + } + if ( intval($this->options['fb_image_show'])==1 || intval($this->options['fb_image_show_schema'])==1 || intval($this->options['fb_image_show_twitter'])==1 ) { + $fb_image = $this->get_post_image( $page_for_posts ); + } + } + } else { + //Others... Defaults already set up there + } + } + } + } + } + } + } + } + } + + //og:type for WPML root page? + if ( $webdados_fb->is_wpml_active() ) { + if ( class_exists('WPML_Root_Page') ) { + if ( WPML_Root_Page::is_current_request_root() ) { + $fb_type = trim( $this->options['fb_type_homepage']=='' ? 'website' : $this->options['fb_type_homepage'] ); + } + } + } + + + + //Default description, if empty until now + if ( trim($fb_desc)=='' ) { + switch( $this->options['fb_desc_default_option'] ) { + case 'custom': + $fb_desc = $this->options['fb_desc_default']; + //WPML? + if ( $webdados_fb->is_wpml_active() ) { + global $sitepress; + if ( ICL_LANGUAGE_CODE != $sitepress->get_default_language() ) { + $fb_desc = icl_t( 'wd-fb-og', 'wd_fb_og_fb_desc_default', $fb_desc ); + } + } + break; + default: + $fb_desc = $fb_desc_homepage; + break; + } + } + + //Trim description + $fb_desc = trim( str_replace(' ', ' ', $fb_desc) ); //Non-breaking spaces are usefull on a meta description. We'll just convert them to normal spaces to really trim it + $fb_desc = trim( + intval($this->options['fb_desc_chars'])>0 + ? + mb_substr( wp_strip_all_tags( strip_shortcodes( stripslashes( $fb_desc ), true ) ), 0, intval($this->options['fb_desc_chars']) ) + : + wp_strip_all_tags( strip_shortcodes( stripslashes( $fb_desc ), true ) ) + ); + + //YOAST SEO? + if ( $this->options['fb_show_wpseoyoast']==1 ) { + if ( $webdados_fb->is_yoast_seo_active() ) { + $debug[] = 'yoast_seo'; + $wpseo = WPSEO_Frontend::get_instance(); + //Title + $fb_title_temp = $wpseo->title(false); + $fb_title = wp_strip_all_tags( trim($fb_title_temp)!='' ? trim($fb_title_temp) : $fb_title, true); + //Title - SubHeading plugin + if ( $fb_title_temp!='' && $this->options['fb_show_subheading']==1 ) { + if ( $webdados_fb->is_subheading_plugin_active() ) { + if ( isset($this->options['fb_subheading_position']) && $this->options['fb_subheading_position']=='before' ) { + $fb_title = trim( trim( get_the_subheading() ).' - '.trim($fb_title), ' -'); + } else { + $fb_title = trim( trim( $fb_title ).' - '.trim( get_the_subheading() ), ' -'); + } + } + } + //URL + $fb_url_temp = $wpseo->canonical(false); + $fb_url = wp_strip_all_tags( trim($fb_url_temp)!='' ? trim($fb_url_temp) : $fb_url, true); + //Description + $fb_desc_temp = $wpseo->metadesc(false); + $fb_desc = wp_strip_all_tags( trim($fb_desc_temp)!='' ? trim($fb_desc_temp) : $fb_desc, true); + } + } + + //All in One SEO Pack? + if ( $this->options['fb_show_aioseop']==1 ) { + if ( $webdados_fb->is_aioseop_active() ) { + $debug[] = 'aio_seo'; + global $aiosp; + //Title - Why are we getting the first post title on archives and homepage...?!? + $fb_title_temp = $aiosp->orig_title; + $fb_title = wp_strip_all_tags( trim($fb_title_temp)!='' ? trim($fb_title_temp) : $fb_title, true); + //Title - SubHeading plugin + if ( $fb_title_temp!='' && $this->options['fb_show_subheading']==1 ) { + if ( $webdados_fb->is_subheading_plugin_active() ) { + if ( isset($this->options['fb_subheading_position']) && $this->options['fb_subheading_position']=='before' ) { + $fb_title = trim( trim( get_the_subheading() ).' - '.trim($fb_title), ' -'); + } else { + $fb_title = trim( trim( $fb_title ).' - '.trim( get_the_subheading() ), ' -'); + } + } + } + //URL - See aioseop_class.php 3898 - We have a problem because wp_query is not the same right now + /*$fb_url_temp = ''; + $aioseop_options = get_option( 'aioseop_options' ); + $opts = $aiosp->meta_opts; + var_dump($wp_query); + $show_page = true; + if ( ! empty( $aioseop_options['aiosp_no_paged_canonical_links'] ) ) { + $show_page = false; + } + if ( $aioseop_options['aiosp_can'] ) { + if ( ! empty( $aioseop_options['aiosp_customize_canonical_links'] ) && ! empty( $opts['aiosp_custom_link'] ) ) { + $fb_url_temp = $opts['aiosp_custom_link']; + } + if ( empty( $url ) ) { + $fb_url_temp = $aiosp->aiosp_mrt_get_url( $wp_query, $show_page ); + } + + $fb_url_temp = $aiosp->validate_url_scheme( $fb_url_temp ); + + $fb_url_temp = apply_filters( 'aioseop_canonical_url', $fb_url_temp ); + } + var_dump($fb_url_temp); + $fb_url = wp_strip_all_tags( trim($fb_url_temp)!='' ? trim($fb_url_temp) : $fb_url, true);*/ + //Description - Why are we getting the first post description on archives and homepage...?!? + if ( is_home() && ! is_front_page() ) { + $post = aiosp_common::get_blog_page(); + } else { + $post = $aiosp->get_queried_object(); + } + $fb_desc_temp = apply_filters( 'aioseop_description', $aiosp->get_main_description( $post ) ); + $fb_desc = wp_strip_all_tags( trim($fb_desc_temp)!='' ? trim($fb_desc_temp) : $fb_desc, true); + + } + } + + //Private post or password protected? (Thanks Benoît) + if ( is_singular() && ( get_post_status( $post->ID ) == 'private' || ! empty( $post->post_password ) ) ) { + $fb_desc = ''; + } else { + //mShot - Only for public posts + if ( $fb_image == '' && intval($this->options['fb_image_use_mshot'])==1 && ! empty( $fb_url ) ) { + //No size and no overlay + $this->options['fb_image_size_show'] = 0; + $this->options['fb_image_overlay'] = 0; + $fb_image = 'https://s0.wordpress.com/mshots/v1/'.urlencode($fb_url).'?w=1200&h=630'; + } + } + + //Apply Filters + $fb_app_id = apply_filters('fb_og_app_id', $this->options['fb_app_id']); + $fb_locale = apply_filters('fb_og_locale', $fb_locale); + $fb_title = apply_filters('fb_og_title', $fb_title); + $fb_url = apply_filters('fb_og_url', $fb_url); + $fb_type = apply_filters('fb_og_type', $fb_type); + $fb_desc = apply_filters('fb_og_desc', $fb_desc); + $fb_image = apply_filters('fb_og_image', $fb_image); + $fb_image_additional = apply_filters('fb_og_image_additional', $fb_image_additional); + + //Image size + $fb_image_size = false; + if ( intval($this->options['fb_image_show'])==1 && trim($fb_image)!='' ) { + if ( intval($this->options['fb_image_size_show'])==1 && intval($this->options['fb_adv_disable_image_size'])==0 ) { + if ( isset($this->image_size) && is_array($this->image_size) ) { //Already fetched + $fb_image_size = $this->image_size; + } else { + $fb_image_size = $this->get_open_graph_image_size($fb_image); + } + } + } else { + $this->options['fb_image_show'] = 0; + } + + //Image overlay - Single? + if ( intval($this->options['fb_image_show'])==1 && intval($this->options['fb_image_overlay'])==1 && apply_filters('fb_og_image_overlay', true, $fb_image) ) { + $post_id = $this->post ? $this->post->ID : 0; + $debug[] = 'image overlay'; + //Single + $temp_fb_image_overlay = $this->get_image_with_overlay( $fb_image, $post_id ); + if ( $temp_fb_image_overlay['overlay'] ) { + $fb_image = $temp_fb_image_overlay['fb_image']; + //We know the exact size now. We better just show it, right? + $this->options['fb_image_size_show'] = 1; + $fb_image_size = array(WEBDADOS_FB_W, WEBDADOS_FB_H); + } + //Additional + if ( isset($fb_image_additional) && is_array($fb_image_additional) && count($fb_image_additional)>0 ) { + foreach($fb_image_additional as $key => $value ) { + if ( isset($value['png_overlay']) && $value['png_overlay'] ) { + $temp_fb_image_overlay = $this->get_image_with_overlay( $value['fb_image'], $post_id ); + if ( $temp_fb_image_overlay['overlay'] ) { + $fb_image_additional[$key]['fb_image'] = $temp_fb_image_overlay['fb_image']; + } + } + } + } + } + + //No spaces on URLs + if ( isset($fb_url) && trim($fb_url)!='' ) $fb_url = str_replace(' ', '%20', trim($fb_url)); + if ( isset($fb_publisher) && trim($fb_publisher)!='' ) $fb_publisher = str_replace(' ', '%20', trim($fb_publisher)); + if ( isset($fb_publisher_schema) && trim($fb_publisher_schema)!='' ) $fb_publisher_schema = str_replace(' ', '%20', trim($fb_publisher_schema)); + if ( isset($fb_author) && trim($fb_author)!='' ) $fb_author = str_replace(' ', '%20', trim($fb_author)); + if ( isset($fb_author_linkrelgp) && trim($fb_author_linkrelgp)!='' ) $fb_author_linkrelgp = str_replace(' ', '%20', trim($fb_author_linkrelgp)); + if ( isset($fb_image) && trim($fb_image)!='' ) $fb_image = str_replace(' ', '%20', trim($fb_image)); + if ( isset($fb_image_additional) && is_array($fb_image_additional) && count($fb_image_additional) ) { + foreach ( $fb_image_additional as $key => $value ) { + if ( isset($value['fb_image']) ) $fb_image_additional[$key]['fb_image'] = str_replace( ' ', '%20', trim($value['fb_image']) ); + } + } + + //If there's still no description let's just add the title as a last resort + if ( trim($fb_desc)=='' ) $fb_desc = $fb_title; + + //Print tags + // Facebook + $html.=' +'; + //Locale + if ( intval($this->options['fb_locale_show'])==1 ) $html.=' +'; + //Site name + if ( intval($this->options['fb_sitename_show'])==1 ) $html.=' +'; + //Title + if ( intval($this->options['fb_title_show'])==1 && trim($fb_title)!='' ) $html.=' +'; + //URL + if ( intval($this->options['fb_url_show'])==1 && trim($fb_url)!='' ) $html.=' +'; + //Type + if ( intval($this->options['fb_type_show'])==1 && trim($fb_type)!='' ) $html.=' +'; + //Description + if ( intval($this->options['fb_desc_show'])==1 && trim($fb_desc)!='' ) $html.=' +'; + //Image + if( intval($this->options['fb_image_show'])==1 && trim($fb_image)!='' ) $html.=' + +'; + if ( strpos( trim($fb_image), 'https://' ) === 0 ) { + $html.=' +'; + } + //Additional Images + if( intval($this->options['fb_image_show'])==1 && isset($fb_image_additional) && is_array($fb_image_additional) && count($fb_image_additional)>0 ) { + foreach ($fb_image_additional as $fb_image_additional_temp) { + if ( isset($fb_image_additional_temp['fb_image']) && trim($fb_image_additional_temp['fb_image'])!='' ) { + $html.=' + +'; + if ( strpos( trim($fb_image_additional_temp['fb_image']), 'https://' ) === 0 ) { + $html.=' +'; + } + } + } + } else { + //Image Size - We only show the image size if we only have one image + if( intval($this->options['fb_image_size_show'])==1 && isset($fb_image_size) && is_array($fb_image_size) ) $html.=' + +'; + } + //Dates + if ( intval($this->options['fb_article_dates_show'])==1 && trim($fb_article_pub_date)!='' ) $html.=' +'; + if ( intval($this->options['fb_article_dates_show'])==1 && trim($fb_article_mod_date)!='') $html.=' + +'; + //Sections + if (intval($this->options['fb_article_sections_show'])==1 && isset($fb_sections) && is_array($fb_sections) && count($fb_sections)>0) { + foreach($fb_sections as $fb_section) { + $html.=' +'; + } + } + //Author + if ( intval($this->options['fb_author_show'])==1 && $fb_author!='') $html.=' +'; + //Publisher + if ( intval($this->options['fb_publisher_show'])==1 && trim($fb_publisher)!='') $html.=' +'; + //App ID + if ( intval($this->options['fb_app_id_show'])==1 && trim($fb_app_id)!='' ) $html.=' +'; + //Admins + if ( intval($this->options['fb_admin_id_show'])==1 && trim($this->options['fb_admin_id'])!='' ) $html.=' +'; + // Schema + $html.=' +'; + //Title + if ( intval($this->options['fb_title_show_schema'])==1 && trim($fb_title)!='' ) $html.=' + +'; + //Description + if ( intval($this->options['fb_desc_show_schema'])==1 && trim($fb_desc)!='' ) $html.=' +'; + //Image + if( intval($this->options['fb_image_show_schema'])==1 && trim($fb_image)!='' ) $html.=' +'; + //Dates + if ( intval($this->options['fb_article_dates_show_schema'])==1 && trim($fb_article_pub_date)!='' ) $html.=' +'; + if ( intval($this->options['fb_article_dates_show_schema'])==1 && trim($fb_article_mod_date)!='') $html.=' +'; + //Author - Link (no longer used) + if ( intval($this->options['fb_author_show_linkrelgp'])==1 && trim($fb_author_linkrelgp)!='') $html.=' +'; + //Author - Name + if (intval($this->options['fb_author_show_schema'])==1 && $fb_author_meta!='') $html.=' +'; + //Publisher - Link + if ( intval($this->options['fb_publisher_show_schema'])==1 && trim($fb_publisher_schema)!='') $html.=' +'; + //Publisher- Name - The attribute publisher.itemtype has an invalid value + if ( intval($this->options['fb_publisher_show_schema'])==1 ) $html.=' +'; + // Twitter + $html.=' +'; + //Title + if ( intval($this->options['fb_title_show_twitter'])==1 && trim($fb_title)!='' ) $html.=' +'; + //URL + if ( intval($this->options['fb_url_show_twitter'])==1 && trim($fb_url)!='' ) $html.=' +'; + //Description + if ( intval($this->options['fb_desc_show_twitter'])==1 && trim($fb_desc)!='' ) $html.=' +'; + //Image + if( intval($this->options['fb_image_show_twitter'])==1 && trim($fb_image)!='' ) $html.=' +'; + //Twitter Card + if( intval($this->options['fb_title_show_twitter'])==1 || intval($this->options['fb_url_show_twitter'])==1 || intval($this->options['fb_desc_show_twitter'])==1 || intval($this->options['fb_publisher_show_twitter'])==1 || intval($this->options['fb_image_show_twitter'])==1 ) $html.=' +'; + //Author + if ( intval($this->options['fb_author_show_twitter'])==1 && trim($fb_author_twitter)!='' ) $html.=' +'; + //Publisher + if ( intval($this->options['fb_publisher_show_twitter'])==1 && trim($fb_publisher_twitteruser)!='') $html.=' +'; + // SEO + $html.=' +'; + //Title + if ( intval($fb_set_title_tag)==1 && trim($fb_title)!='' ) { + //Does nothing so far. We try to create the tag but it's too late now + //We should use wp_title(), but do we want to? This is only because Business Directory Plugin and they seem to have it covered by now... + } + //URL + if ( intval($this->options['fb_url_canonical'])==1 ) $html.=' <link rel="canonical" href="'.esc_attr(trim($fb_url)).'"/> +'; + //Description + if ( intval($this->options['fb_desc_show_meta'])==1 && trim($fb_desc)!='' ) $html.=' <meta name="description" content="'.esc_attr(trim($fb_desc)).'"/> +'; + //Author + if (intval($this->options['fb_author_show_meta'])==1 && $fb_author_meta!='') $html.=' <meta name="author" content="'.esc_attr(trim($fb_author_meta)).'"/> +'; + //Publisher + if ( intval($this->options['fb_publisher_show_meta'])==1 ) $html.=' <meta name="publisher" content="'.esc_attr(trim(get_bloginfo('name' ))).'"/> +'; + // SEO + $html.=' <!-- Misc. tags --> +'; + foreach ($fb_additional_tags as $type => $tags) { + foreach($tags as $tag => $values) { + foreach($values as $value) { + $html.=' <meta '.$type.'="'.str_replace('_', ':', trim($tag)).'" content="'.esc_attr(trim($value)).'"/> +'; + } + } + } + } else { + + $debug[] = 'Removed by fb_og_enabled filter'; + + } + + //Close tag + if ( apply_filters( 'fb_og_enable_debug', true ) ) $html.=' <!-- '.implode( ' | ', $debug ).' --> +'; + $html.='<!-- END - '.WEBDADOS_FB_PLUGIN_NAME.' '.WEBDADOS_FB_VERSION.' --> + +'; + } else { + $html = ' +<!-- START - '.WEBDADOS_FB_PLUGIN_NAME.' '.WEBDADOS_FB_VERSION.' --> +<!-- Disabled by the "fb_og_disable" filter --> +<!-- END - '.WEBDADOS_FB_PLUGIN_NAME.' '.WEBDADOS_FB_VERSION.' --> +'; + } + echo apply_filters('fb_og_output', $html); + + } + + + + /* Get post image - Singular pages */ + private function get_post_image( $post_id = NULL ) { + if ( $post_id ) { + $current_post = false; + //Specific post + $post = get_post( $post_id ); + } else { + $current_post = true; + //Current post + global $post; + } + if ( $post ) { + $thumbdone = false; + $fb_image = ''; + $minsize = intval($this->options['fb_image_min_size']); + //Attachment page? - This overrides the other options + if ( !$current_post && is_attachment() ) { + if ( $temp=wp_get_attachment_image_src(null, 'full' ) ) { + $fb_image = trim($temp[0]); + $img_size = array(intval($temp[1]), intval($temp[2])); + if ( trim($fb_image)!='' ) { + $thumbdone=true; + } + } + } + //Specific post image + if ( !$thumbdone ) { + if ( intval($this->options['fb_image_use_specific'])==1 ) { + if ( $fb_image = trim(get_post_meta($post->ID, '_webdados_fb_open_graph_specific_image', true)) ) { + if ( trim($fb_image)!='' ) { + $thumbdone=true; + } + } + } + } + //Featured image + if ( !$thumbdone ) { + if ( function_exists('get_post_thumbnail_id' ) ) { + if ( intval($this->options['fb_image_use_featured'])==1 ) { + if ( $id_attachment=get_post_thumbnail_id($post->ID) ) { + //There's a featured/thumbnail image for this post + $fb_image = wp_get_attachment_url($id_attachment, false); + $thumbdone = true; + } + } + } + } + //From post/page content + if ( !$thumbdone ) { + if ( intval($this->options['fb_image_use_content'])==1 ) { + $imgreg = '/<img .*src=["\']([^ ^"^\']*)["\']/'; + preg_match_all($imgreg, trim($post->post_content), $matches); + if ($matches[1]) { + $imagetemp=false; + foreach($matches[1] as $image) { + //There's an image on the content + $pos = strpos( $image, site_url() ); + if ( $pos === false ) { + if (stristr($image, 'http://' ) || stristr($image, 'https://' ) || mb_substr($image, 0, 2)=='//' ) { + if (mb_substr($image, 0, 2)=='//' ) $image=((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) ? 'https:' : 'http:' ).$image; + //Complete URL - offsite + //if ( intval(ini_get('allow_url_fopen' ))==1 ) { + $imagetemp=$image; + $imagetempsize=$imagetemp; + //} else { + //If it's offsite we can't getimagesize'it, so we won't use it + //We could save a temporary version locally and then getimagesize'it but do we want to do this every single time? + //} + } else { + //Partial URL - we guess it's onsite because no http(s):// + $imagetemp=site_url().$image; + $imagetempsize=( + intval(ini_get('allow_url_fopen' ))==1 + ? + ( + intval($this->options['fb_adv_force_local'])==1 + ? + ABSPATH.str_replace(trailingslashit(site_url()), '', $imagetemp) + : + $imagetemp + ) + : + ABSPATH.str_replace(trailingslashit(site_url()), '', $imagetemp) + ); + } + } else { + //Complete URL - onsite + $imagetemp=$image; + $imagetempsize=( + intval(ini_get('allow_url_fopen' ))==1 + ? + ( + intval($this->options['fb_adv_force_local'])==1 + ? + ABSPATH.str_replace(trailingslashit(site_url()), '', $imagetemp) + : + $imagetemp + ) + : + ABSPATH.str_replace(trailingslashit(site_url()), '', $imagetemp) + ); + } + if ($imagetemp) { + if ( intval($this->options['fb_adv_disable_image_size'])==1 ) { + //If we don't check for image size, we'll just accept the first one + $fb_image = $imagetemp; + $thumbdone = true; + break; //Break the foreach + } else { + if ( $img_size = $this->get_open_graph_image_size( $imagetempsize ) ) { + if ($img_size[0] >= $minsize && $img_size[1] >= $minsize) { + $fb_image = $imagetemp; + $thumbdone = true; + break; //Break the foreach + } + } + } + } + } + } + } + } + //From media gallery + if ( !$thumbdone ) { + if ( intval($this->options['fb_image_use_media'])==1 ) { + $images = get_posts(array('post_type' => 'attachment','numberposts' => -1,'post_status' => null,'order' => 'ASC','orderby' => 'menu_order','post_mime_type' => 'image','post_parent' => $post->ID)); + if ( $images ) { + foreach( $images as $image ) { + $imagetemp = wp_get_attachment_url($image->ID, false); + $imagetempsize = ( + intval(ini_get('allow_url_fopen' ))==1 + ? + ( + intval($this->options['fb_adv_force_local'])==1 + ? + ABSPATH.str_replace(trailingslashit(site_url()), '', $imagetemp) + : + $imagetemp + ) + : + ABSPATH.str_replace(trailingslashit(site_url()), '', $imagetemp) + ); + if ( intval($this->options['fb_adv_disable_image_size'])==1 ) { + //If we don't check for image size, we'll just accept the first one + $fb_image = $imagetemp; + $thumbdone = true; + break; //Break the foreach + } else { + if ( $img_size = $this->get_open_graph_image_size($imagetempsize) ) { + if ($img_size[0] >= $minsize && $img_size[1] >= $minsize) { + $fb_image = $imagetemp; + $thumbdone = true; + break; //Break the foreach + } + } + } + } + } + } + } + //From default + if ( !$thumbdone ) { + if ( intval($this->options['fb_image_use_default'])==1 ) { + //Well... We sure did try. We'll just keep the default one! + $fb_image = $this->options['fb_image']; + } else { + //User chose not to use default on pages/posts + $fb_image = ''; + } + } + //Return + return $fb_image; + } else { + //No post + return false; + } + } + + + /* Image with overlay URL */ + private function get_image_with_overlay( $fb_image, $post_id = 0 ) { + $fb_image_parsed = parse_url($fb_image); + //Only if the image is hosted locally + if ( $fb_image_parsed['host']==$_SERVER['HTTP_HOST'] ) { + $params = array( + 'img' => urlencode($fb_image), + 'post_id' => intval( $post_id ), + ); + $fb_image = plugins_url( '/wonderm00ns-simple-facebook-open-graph-tags/fbimg.php' ).'?'.http_build_query($params); + return array( + 'overlay' => true, + 'fb_image' => $fb_image, + ); + } + return array( + 'overlay' => false, + 'fb_image' => $fb_image, + ); + } + + + + /* Get image size */ + private function get_open_graph_image_size_curl( $image, $headers ) { + try { + $curl = curl_init($image); + if ( is_array($headers) ) curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + //Set HTTP REFERER and USER AGENT just in case. Some servers may have hotlinking protection + curl_setopt($curl, CURLOPT_REFERER, ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://' ).$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); + curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); //Try to fix White Screen Of Death - https://wordpress.org/support/topic/html-truncated/#post-9714288 + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + $data = curl_exec($curl); + //if ( !$data ) var_dump( curl_error( $curl ) ); //Debug + curl_close($curl); + return $data; + } catch(Exception $e) { + return false; + } + } + private function get_open_graph_image_size( $image ) { + //Just in case we've missed it somewhere... + if ( intval($this->options['fb_adv_disable_image_size'])==1 ) return false; + //Go ahead + if ( apply_filters( 'fb_og_image_size_cache', true ) ) { + $transient_key = 'webdados_og_image_size_' . md5($image); + $transient_val = get_transient($transient_key); + if ($transient_val) { + return $transient_val; + } + } + if ( stristr($image, 'http://' ) || stristr($image, 'https://' ) || mb_substr($image, 0, 2)=='//' ) { + if ( function_exists( 'curl_version' ) && function_exists( 'imagecreatefromstring' ) ) { + //If true - We'll get just a part of the image to speed things up. From http://stackoverflow.com/questions/4635936/super-fast-getimagesize-in-php + if ( $this->image_size_use_partial ) { + $headers = array( + "Range: bytes=0-32768" + ); + } else { + $headers = null; + } + $data = $this->get_open_graph_image_size_curl($image, $headers); + if ( $data ) { + $done_partial = false; + $tried_full = false; + try { + $im = @imagecreatefromstring($data); //Mute errors because we're not loading the all image + if ($im) $done_partial = true; + } catch(Exception $e) { + if ( !$this->image_size_use_partial ) { //We already tried it full + //Try again with the whole image - In case of Fatal Error + $tried_full = true; + $data = $this->get_open_graph_image_size_curl($image, null); + $im = @imagecreatefromstring($data); + } + } + if ( !$this->image_size_use_partial ) { //We already tried it full + if ( !$done_partial && !$tried_full ) { + //Try again with the whole image - In case of Warning + if ( $data = $this->get_open_graph_image_size_curl($image, null) ) { + $im = @imagecreatefromstring($data); + } else { + //No way... + $im = false; + } + } + } + if ( $im ) { + if ( $x=imagesx($im) ) { + //We have to fake the image type - For RSS + $ext = pathinfo($image, PATHINFO_EXTENSION); + switch(strtolower($ext)) { + case 'gif': + $type=1; + break; + case 'jpg': + case 'jpeg': + $type=2; + break; + case 'png': + $type=3; + break; + default: + $type=2; + break; + } + $img_size = array($x, imagesy($im), $type, '' ); + } else { + $img_size = false; + } + } else { + $img_size = false; + } + } else { + $img_size = false; + } + } else { + if ( intval(ini_get('allow_url_fopen' ))==1 ) { + $img_size = getimagesize($image); + } else { + //We give up! + $img_size = false; + } + } + } else { + //Local path + $img_size = getimagesize($image); + } + if ( $img_size && apply_filters( 'fb_og_image_size_cache', true ) ) { + set_transient( $transient_key, $img_size, $this->transient_validity ); + } + $this->image_size = $img_size; + return $img_size; + } + + + + /* Add Open Graph Namespace */ + public function add_open_graph_namespace($output) { + if ( $this->options['fb_declaration_method']=='prefix' ) { + if ( preg_match('/\bprefix=(["\'])([^"\']+)["\']/i', $output, $m) ) { + //prefix attribute already there, so let's look into it + $prefix = $m[2]; + if ( !preg_match('/\bog: /', $prefix) ) { + //og prefix missing, let's add it + $prefix .= ' og: http://ogp.me/ns#'; + } + if ( !preg_match('/\bfb: /', $prefix) ) { + //fb prefix missing, let's add it + $prefix .= ' fb: http://ogp.me/ns/fb#'; + } + //replace existing prefix attribute with new one + $output=str_replace($m[0], 'prefix='.$m[1].$prefix.$m[1], $output); + } else { + //No prefix attribute there, let's add it + $output=$output . ' prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#"'; + } + } else { + if ( stristr($output, 'xmlns:og') ) { + //Already there + } else { + //Let's add it + $output=$output . ' xmlns:og="http://ogp.me/ns#"'; + } + if ( stristr($output, 'xmlns:fb') ) { + //Already there + } else { + //Let's add it + $output=$output . ' xmlns:fb="http://ogp.me/ns/fb#"'; + } + } + return $output; + } + + + + /* Add Schema itemtype */ + public function add_schema_itemtype($output) { + if ( intval($this->options['fb_type_show_schema'])==1 ) { + $fb_type_schema = ''; + if ( is_front_page() ) { + $fb_type_schema = trim($this->options['fb_type_schema_homepage'])=='' ? 'WebSite' : trim($this->options['fb_type_schema_homepage']); + } else { + $fb_type_schema = trim($this->options['fb_type_schema_post'])=='' ? 'Article' : trim($this->options['fb_type_schema_post']); + } + $fb_type_schema = apply_filters('fb_type_schema', $fb_type_schema ); + if ( $fb_type_schema!='' ) $output=$output . ' itemscope itemtype="http://schema.org/'.esc_attr($fb_type_schema).'"'; + } + return $output; + } + + + + /* Images on feed */ + public function images_on_feed_yahoo_media_tag() { + if ( intval($this->options['fb_image_rss'])==1 ) { + //Even if it's comments feed, not a problem + echo 'xmlns:media="http://search.yahoo.com/mrss/"'; + } + } + public function images_on_feed_image() { + if ( intval($this->options['fb_image_rss'])==1 ) { + //Only runs on posts feed, not comments, so cool! + $fb_image = $this->get_post_image(); + if ( $fb_image!='' ) { + $uploads = wp_upload_dir(); + $url = parse_url($fb_image); + $path = $uploads['basedir'] . preg_replace( '/.*uploads(.*)/', '${1}', $url['path'] ); + if ( file_exists($path) ) { + $filesize = filesize($path); + $url = $path; + } else { + $header = get_headers($fb_image, 1); + $filesize = $header['Content-Length']; + $url = $fb_image; + } + if ( intval($this->options['fb_adv_disable_image_size'])==0 ) { + if ( list( $width, $height, $type, $attr ) = $this->get_open_graph_image_size( $url ) ) { + echo '<enclosure url="' . $fb_image . '" length="' . $filesize . '" type="'.image_type_to_mime_type($type).'"/>'; + echo '<media:content url="'.$fb_image.'" width="'.$width.'" height="'.$height.'" medium="image" type="'.image_type_to_mime_type($type).'"/>'; + } else { + echo '<enclosure url="' . $fb_image . '" length="' . $filesize . '" type="'.image_type_to_mime_type(null).'"/>'; + echo '<media:content url="'.$fb_image.'" width="" height="" medium="image" type="'.image_type_to_mime_type(null).'"/>'; + } + } else { + echo '<enclosure url="' . $fb_image . '" length="' . $filesize . '" type="'.image_type_to_mime_type(null).'"/>'; + echo '<media:content url="'.$fb_image.'" width="" height="" medium="image" type="'.image_type_to_mime_type(null).'"/>'; + } + } + } + } + + + +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/public/index.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/public/index.php new file mode 100644 index 0000000..e71af0e --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/public/index.php @@ -0,0 +1 @@ +<?php // Silence is golden \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/readme.txt b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/readme.txt new file mode 100644 index 0000000..bd4e4eb --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/readme.txt @@ -0,0 +1,662 @@ +=== Open Graph and Twitter Card Tags === +Contributors: webdados, wonderm00n +Donate link: http://bit.ly/donate_fb_opengraph +Tags: facebook, open graph, twitter card, social media, open graph protocol, share, social, meta, rss, twitter, schema, google+, g+, google, google plus, image, like, seo, search engine optimization, woocommerce, yoast seo, wordpress seo, woocommerce, subheading, php7, webdados +Requires at least: 4.5 +Tested up to: 5.2.3 +Stable tag: 2.2.7.1 + +Inserts Facebook Open Graph, Google+/Schema.org, Twitter and SEO Meta Tags into your WordPress Website for more efficient sharing results. + +== Description == + +This plugin inserts Facebook Open Graph Tags into your WordPress Blog/Website for more effective and efficient Facebook sharing results. + +It also allows you to add the Twitter Card tags for more effective and efficient Twitter sharing results. + +It also allows you to add the Meta Description tag and Schema.org Name, Description and Image tags for more effective and efficient Google+ sharing results. + +**This plugin is not, in any way, affiliated or endorsed by Facebook, Twitter, Google or any other 3rd party.** + +You can also choose to insert the "enclosure" and "media:content" tags to the RSS feeds, so that apps like RSS Graffiti and twitterfeed post the image to Facebook correctly. + +It allows the user to choose which tags are, or not, included and also the default image if the post/page doesn't have one. + +BETA: It's also possible to add a overlay logo to the image. The plugin will resize and crop the original image to 1200x630 and then overlay the chosen 1200x630 PNG file over it. Can be usefull to add your brand to the image that shows up on Facebook shared links. + +Our settings page is discreetly kept under "Options", as it should, instead of taking up premium space on the main menu bar with colored, non WordPress styled, icons. + += The (Facebook) Open Graph Tags that this plugin inserts are: = + +* **og:title**: From post/page/archive/tag/... title. +* **og:site_name**: From blog title. +* **og:url**: From the post/page permalink. +* **og:description**: From our specific custom field of the post/page, or if not set post/page excerpt if it exist, or from post/page content. From category/tag description on it's pages, if it exist. From tagline, or custom text, on all the others. +* **og:image**: From our specific custom field of the post/page, or if not set from the post/page featured/thumbnail image, or if it doesn't exist from the first image in the post content, or if it doesn't exist from the first image on the post media gallery, or if it doesn't exist from the default image defined on the options menu. The same image chosen here will be used and enclosure/media:content on the RSS feed. +* **og:image:url**: Same as **og:image**. +* **og:image:secure_url**: Same as **og:image** if SSL is being used. +* **og:image:width** and **og:image:height**: Image dimensions. +* **og:type**: "website" or "blog" for the homepage, "product" for WooCommerce products and "article" for all the others. +* **article:author**: From the user (post author) Faceboook Profile URL. +* **article:published_time**: Article published time (for posts only) +* **article:modified_time** and **og:updated_time**: Article modified time (for posts only) +* **article:section**: From post categories. +* **article:publisher**: The website Facebook Page URL. +* **og:locale**: From WordPress locale or chosen by the user. +* **fb:admins**: From settings on the options screen. +* **fb:app_id**: From settings on the options screen. +* **og:price:amount** and **og:price:currency**: Price on WooCommerce products. + += The Twitter Card Tags that this plugin inserts are: = + +* **twitter:title**: Same as `og:title`. +* **twitter:url**: Sames as `og:url`. +* **twitter:description**: Same as `og:description`. +* **twitter:image**: Same as `og:image`. +* **twitter:creator**: From the user (post author) Twitter account. +* **twitter:site**: The website Twitter account. +* **twitter:card**: With value "summary_large_image" or "summary". + += The (Google+) Schema.org Tags that this plugin inserts are: = + +* **name**: Same as `og:title`. +* **headline**: Same as `og:title`. +* **description**: Same as `og:description`. +* **image**: Same as `og:image`. +* **author**: From the user (post author) Display Name. +* **datePublished**: Article published date (for posts only) +* **dateModified**: Article modified time (for posts only) +* **publisher**: The website Google+ Page URL. + += Other Tags: = + +* **canonical**: Same as `og:url`. +* **meta description**: Same as `og:description`. +* **meta author**: From the user (post author) Display Name. +* **meta publisher**: From the website title. +* **enclosure**: On RSS feeds, same as `og:image`. +* **media:content**: On RSS feeds, same as `og:image`. + += 3rd Party Integration: = + +* **[Yoast SEO](https://wordpress.org/plugins/wordpress-seo/)**: Allows you to use title, url (canonical) and description from the Yoast SEO plugin. +* **[WooCommerce](https://wordpress.org/plugins/woocommerce/)**: On product pages sets `og:type` to "product" and adds the price including tax to the `product:price` and `product:availability` tags. Also allows you to use the Product Category thumbnails as Open Graph Image and have Product Gallery images as additional Open Graph Images +* **[WooCommerce Brands](https://woocommerce.com/products/brands/)**: On brand pages uses the brand image as Open Graph Image +* **[SubHeading](https://wordpress.org/extend/plugins/subheading/)**: Add the SubHeading to the post/page title. +* **[Business Directory Plugin](https://wordpress.org/extend/plugins/business-directory-plugin/)**: Allows you to use BDP listing contents as Open Graph Tags. + + +== Installation == + +1. Use the included automatic install feature on your WordPress admin panel and search for “Open Graph and Twitter Card Tagsâ€. +2. Activate the plugin through the `Plugins` menu in WordPress +3. Go to `Options`, `Open Graph and Twitter Card Tags` to set it up + +== Frequently Asked Questions == + += Why aren't you active on the support forums? = + +Because of other commercial projects, including WordPress and WooCommerce plugins, we haven’t been able to reply to support tickets neither release new versions of this plugin, for which we are sorry. + +We will fix any security issue that might arise but, at this moment, we cannot promise we’ll get back to active development and support on this plugin anytime soon. + +If some company wants to make a proposal to take ownership of this plugin, please contact us to info @ webdados .pt +We’ll not pass ownership of the plugin to anyone (person or company) that does not have a solid roadmap and business model for this plugin, in order to guarantee the current users that development and support will be resumed. + += Facebook is not showing up the correct image when I share a post. What can I do? = + +1. Are you using a big enough image? The minimum image size is 200x200 pixels but we recommend 1200x630. +2. Are you sure you only have one `og:image` tag on the source code? Make sure you're not using more than one plugin to set OG tags? +3. Go to the [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/), insert your URL, click `Debug`. Then click on `Scrape Again` to make sure Facebook gets the current version of your HTML code and not a cached version. If the image that shows up on the preview (bottom of the page) is the correct one, then the tags are well set and it "should" be the one that Facebook uses when sharing the post. If it still does not use the correct image when sharing, despite the debugger shows it correctly, there's nothing more we can do about that. That's just Facebook being Facebook. + += What is the "Manually update Facebook cache" button on the "Post updated" notice? = + +It's a shortcut to the Facebook Sharing Debugger, where you should click on `Scrape Again` to make sure Facebook gets the current version of your post or page. + += When I save/edit my post I get the "Facebook Open Graph Tags cache NOT updated/purged" error. Should I worry? = + +Each time you edit a post, if the option "Try to update Facebook Open Graph Tags cache when saving the post" is activated, we'll try to notify Facebook of the changes so it clears up it's cache and read the new Open Graph tags of this specific URL. +If this is a new post and it's the first time you're saving it, the error is "normal" and you should ignore it (we're looking at a workaround to not show you this error). +If this is not a new post and it's not the first time you're saving it, and if this happens always, then maybe your server does not support calling remote URLs with PHP and you should disable the "Try to update Facebook Open Graph Tags cache when saving the post" option. In that scenario we recommend you to use the [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/) to `Scrape Again` each time you update your post. +Sometimes the plugin just can't update the Facebook cache itself and you may need to do it manually on the link provided above. + += Can I authenticate the call to Facebook, with my own app, when trying to update the cache, so I get rid of the "An access token is required to request this resource" error? = + +Yes, you can. Create a Facebook App and fill in the details on the "Facebook Open Graph Tags cache" panel of the plugin settings page. +Do NOT ask us support on this. There is [a blog post on our website](https://www.webdados.pt/2017/12/successfully-update-facebook-cache-using-our-facebook-open-graph-plugin/) explaining everything you need to do. + += Facebook says "The following required properties are missing: fb:app_id". Should I worry? = + +No. Move along. + += How can I share my posts or products as Rich Pins on Pinterest? = + +Pinterest can read Open Graph tags, so no extra tags are needed to share your articles or WooCommerce products as Rich Pins. + +You need however to apply in order to whitelist your domain on Pinterest. Head to [this page](https://developers.pinterest.com/docs/rich-pins/overview/) and follow the instructions starting with "Set up". When in the validator, enter your URL, hit "Validate" and then choose "HTML tags" and hit "Apply now". It's then up to Pinterest to accept your application or not. + += Can this plugin get content from "random plugin"? = + +If there's a popular plugin you think we could get content from to use on the meta tags, use the support forum to tell us that. +If you are a plugin or theme author you can always use our filters `fb_og_title`, `fb_og_desc`, `fb_og_url`, `fb_og_type`, `fb_type_schema`, `fb_og_image`, `fb_og_image_additional`, `fb_og_image_overlay`, `fb_og_locale`, `fb_og_app_id`, `fb_og_thumb_fill_color`, `fb_og_output` and `fb_og_enabled` to customize the Open Graph (and other) meta tags output. + += What is the array structure for the `fb_og_image_additional` filter? + +Check out this [code snippet](https://gist.github.com/webdados/ef5d5db01f01bee6041c2b2e0950d73a). + += I'm getting a white screen of death / truncated HTML = + +Go to the plugin settings and check the `Do not get image size` option. +This happens on some edge cases we haven't yet been able to identify. +Update: Probably fixed for some users on 2.1.4.5 and completely on 2.2 (pending confirmation) + += Yoast SEO shows up a big nasty warning if both plugins are active. Is the world in danger if I keep both plugins active? = + +No it isn't. +You can (and, in our opinion, you should) use both plugins. If you want to use Yoast SEO for your SEO needs and our plugin for social media meta tags you just have to go to "SEO > Social" and disable settings for Facebook, Twitter and Google+. +If you don't find that option, because they've now made it harder to reach, you have to go to "SEO > Dashboard > Features > Advanced settings pages > choose Enabled and Save changes". Then you can reach "SEO > Social". +Then set up our plugin as you wish and you're ready to go. +We like to work with everybody, so (if you want to) our plugin can even integrate with Yoast SEO and use it's title, description and canonical URL on the Facebook, Google+ and Twitter tags. + += There's a similar plugin on the repository, by Heateor. Is this the same? = + +It's similar, yes. They've forked our plugin and gave no credits whatsoever for our original work. + += Do you provide email support? = + +We DO NOT provide email support for this plugin. If you send us an email asking for support you'll be invited to: +1. Post the question on the [support forum](https://wordpress.org/support/plugin/wonderm00ns-simple-facebook-open-graph-tags) +2. Or we can give you a quote on premium email/phone support if you prefer to + +== Changelog == + += 2.2.7.1 = +* Changed name to “Facebook Open Graph, Google+ and Twitter Card Tags†due to Facebook intellectual property and brand violation policies + += 2.2.7 = +* New developer filter `fb_og_overlayed_image_format` to be able to output the overlayed image as png instead of jpg +* Tested with WordPress 5.2.3-RC1-45880 and WooCommerce 3.7.0 + += 2.2.6.1 = +* Stop using the WooCommerce term meta helper functions + += 2.2.6 = +* Add `og:image:url` and `og:image:secure_url` tags +* Small tweaks on the image overlay functionality, including a new `fb_og_thumb_image` filter so you can have a diferent image overlay based on the post id +* Tested with WordPress 5.1.1 and WooCommerce 3.6.0 (RC1) + += 2.2.5 = +* No `og:description` for password protected and private posts (Thanks for the heads up Benoît) +* Tested with WordPress 5.0.3 and WooCommerce 3.5.3 + += 2.2.4.2 = +* Small security fix + += 2.2.4.1 = +* Small security fix + += 2.2.4 = +* Added Pinterest information on que FAQ +* Changed name to "Facebook Open Graph, Google+ and Twitter Card Tags" + += 2.2.3.1 = +* Tested with WooCommerce 3.3 +* Improved readme.txt + += 2.2.3 = +* Small bug fix introduced in 2.2 that would throw a PHP notice if no tool was selected when saving the settings (Thanks @osti47) +* Clear image size cache (transients) on uninstall +* Better debug for support purposes, which can be disabled by returning false on the `fb_og_enable_debug` filter +* Bumped `Tested up to` tag + += 2.2.2 = +* NEW WooCommerce Brands integration: Uses the Brand thumbnail image if the "Use Category thumbnail as Image" option is enabled + += 2.2.1 = +* Added the Schema.org headline, author, datePublished and dateModified tags +* Removed some unnecessary / duplicated `esc_attr` calls + += 2.2 = +* New "Tools" panel on the settings page +* Tool to clear all the plugin transients, thus resetting size caching for all images (use it only ) +* Small bug fix when the settings aren't yet saved at least one time +* When getting the image size, the full image is used again, instead of the partial 32Kb (that caused WSOD in some environments), but this can be overridden (and use the partial again) by returning false to the new `fb_og_image_size_use_partial` filter +* Transient validity is now one week (now that we get the all image and the process can slow down the page load a bit), instead of one day +* Fix when getting the image and description for the blog url when it's set as a page (Thanks @alexiswilke) +* Ability to disable image size cache (transients) completely by returning false to the new filter `fb_og_image_size_cache` (which we do NOT recommend) +* Improved the FAQ + += 2.1.6.3 = +* Fix the "Suppress cache notices" option (Thanks @digbymaass) + += 2.1.6.2 = +* Default `og:type` to `website` on non-singular pages because Facebook deprecated it (Thanks @alexiswilke) +* Automatically disable the overlay feature if GD is not installed (Thanks @tiagomagalhaes) +* Set `og:type` to `website` instead of `article` when a page is set as a blog page +* Use image from the page (our custom field, featured, etc...) when a page is set as a blog page (Thanks @alexiswilke) +* Use description from our custom field when a page is set as a blog page +* Adds the `product:availability` tag for WooCommerce products (Thanks @steveokk) +* Improved the FAQ + += 2.1.6.1 = +* Updated the error message when the Facebook cache is not updated, in order to include instructions and a link to setup the App ID and Secret + += 2.1.6 = +* Added new "App ID" and "App Secret" settings on the "Facebook Open Graph Tags cache" panel, so that the plugin tries to clear the Facebook cache authenticated with you own App details +* Bumped `Tested up to` and `WC tested up to` tags +* Improved the FAQ + += 2.1.5 = +* Stop showing the metabox or trying to update Facebook cache on non-publicly_queryable post types + += 2.1.4.5 = +* Set `CURLOPT_FOLLOWLOCATION` to `true` when trying to get image size via curl and avoid fatal errors (white screen of death) when the response returns 301 or 302 - Thanks [@neonkowy](https://wordpress.org/support/users/neonkowy/) + += 2.1.4.4 = +* Added the `fb_og_update_cache_url` filter so that developers can add their Facebook App ID and Secret to the URL when trying to update/clear cache on Facebook - Thanks [@l3lackcat](https://profiles.wordpress.org/amirullahmn) + += 2.1.4.3 = +* Added a "Share this on Facebook" button to the "Post updated" notice +* Fixed some URLs and links from http:// to https:// +* Removed the option to load Facebook locales from their website as the URL now returns 404 + += 2.1.4.2 = +* Added a "Manually update Facebook cache" button to the "Post updated" notice +* Improved the FAQ + += 2.1.4.1 = +* Better information when showing up the "Facebook Open Graph Tags cache NOT updated/purged" error, as well as a link to update the cache manually +* Improved the FAQ + += 2.1.4 = +* Changed the way the admin notices are generated so we do not have to use PHP sessions + += 2.1.3 = +* Fixed some PHP notices and warnings +* Tested with WooCommerce 3.2 +* Added `WC tested up to` tag on the plugin main file +* Bumped `Tested up to` tag + += 2.1.2 = +* Fix the fact that we are using `sanitize_textarea_field()` that only exists since 4.7.0 although we had a 4.0 minimum requirement (Thanks @l3lackcat) +* Fix the textdomain on a couple of gettext calls +* Bumped the `Requires at least tag` to 4.5 (to encourage the ecosystem to have WordPress updated) +* Added code snippet example for the `fb_og_image_additional` filter + += 2.1.1 = +* Fix on the gettext calls and textdomain so that Glotpress correctly loads translations + += 2.1 = +* New description field on our metabox on post/pages that will override the excerpt or content if filled +* Load the translations from wordpress.org Glotpress and not from the local folder +* Added the `fb_og_app_id` filter so that plugins or themes can override the Open Graph Facebook App ID + += 2.0.9 = +* New option to disable getting the image size and possibly avoid fatal errors (white screen of death) on some edge cases +* New `fb_og_disable` filter to completely disable the output based on the developer own rules - DUPLICATE - Use `fb_og_enabled` instead and return false to it. + += 2.0.8.2 = +* New `fb_og_output` filter on the plugin global output + += 2.0.8.1 = +* Using `get_gallery_image_ids` instead of `get_gallery_attachment_ids`, to get additional WooCommerce product images, from WooCommerce 3.0 up (Thanks Manu Calapez) + += 2.0.8 = +* Tried to fix the white screen of death problem in some server environments +* New option to use "prefix" attribute instead of "xmlns" (Thanks thomasbachem) +* Tested and adapted to work with WooCommerce 3.0.0-rc.2 +* Fixed the WooCommerce [product price tag name](https://developers.facebook.com/docs/reference/opengraph/object-type/product/) from `og:` to `product:` (Thanks davidtrebacz) +* Fixed a bug on the database version update mechanism +* Fixed a bug for custom taxonomy descriptions (Thanks karex) +* Bumped `Tested up to` tag + += 2.0.7 = +* Better error handling when the overlay PNG image is not found or a valid image file; + += 2.0.6.3 = +* When using the overlay PNG option, the image is filled with previously filled with white in case the original OG image is a transparent PNG +* The `fb_og_thumb_fill_color` filter can be used to use another color other than white, by returning an array with the rgb value + += 2.0.6.2 = +* On some server configurations using an overlay PNG would result on a 404 error on the `og:image` url + += 2.0.6.1 = +* Bumped `Tested up to` tag + += 2.0.6 = +* New `fb_og_enabled` filter that allow other plugins/themes to completely disable the tags output on specific situations +* Fix: Use `WP_PLUGIN_DIR` instead of harcoded paths (Thanks thomasbachem) +* Fix: Extra validation when getting Yoast SEO's icon on the 3rd party settings tab + += 2.0.5 = +* Calculated image dimensions are now stored in, 1 day valid, transients in order to avoid unnecessary http requests and improve performance (Thanks Piotr Bogdan) + += 2.0.4 = +* Non-breaking spaces are converted to normal spaces on the description, because they aren't needed there and this way we can really trim the description + += 2.0.3 = +* Fixed WPML homepage custom description translation that was broken on 2.0 +* New default description field (WPML translatable) to be used on any website post / page / cpt / archive / search / ... that has an empty description, instead of using the homepage description like we were using until now +* Fixed some PHP notices and warnings +* Small tweaks on the settings page + += 2.0.2 = +* Fixed a PHP Notice on WPML root pages (Thanks @marcobecker) +* New experimental feature: Added the possibility to set `itemscope itemtype` to the HTML Tag in order to avoid W3C and Structured Data validation errors +* Updated settings page informations to include the existent filters for each option + += 2.0.1 = +* Fixed a PHP Notice on the upgrade routine (Thanks @jluisfreitas) +* Updated FAQs + += 2.0 = +* We would like to thank Heateor, "a creative team with unique ideas in mind" (their words), for forking our plugin (although no credits whatsoever were made regarding our original work), and thus trully inspiring us to make this new version, using also their "unique" ideas, in the spirit of GPL, but giving them the deserved credit in the spirit of civism, integrity and the WordPress way of doing things +* Revised and optimized code with better WordPress standards and best practices +* Completely redesigned settings screen +* Fixed Business Directory Plugin integration (only works with CPT integration activated) +* Removed Google authorship (link rel="author") tag because **[it isn't used anymore](https://support.google.com/webmasters/answer/6083347)** +* Added meta `publisher` tag +* New option to either keep or delete plugin configurations upon uninstall +* Fixed a bug where a custom taxonomy description was not being correctly set +* Fixed `og:price:amount` and `og:price:currency` tags now correctly set as `property` instead of `name` + += 1.7.4.4 = +* Bug fix: WooCommerce price integration wasn't working on WooCommerce >= 2.6 (Thanks @jluisfreitas) +* Bumped `Tested up to` tag + += 1.7.4.3 = +* Version number fix +* Portuguese translation update + += 1.7.4.2 = +* Overlay PNG will only be used on locally hosted images +* New `fb_og_image_overlay` filter to be able to disable Overlay PNG programatically based on whatever needs of the developer +* Better texts about the Overlay PNG function on the settings page +* Minor fixes + += 1.7.4.1 = +* WooCommerce integration: on product pages sets `og:type` to "product" and adds the price including tax to the `product:price` tags + += 1.7.4 = +* New experimental feature: Add overlay PNG logo to the image +* Minor fixes + += 1.7.3.1 = +* Fix: changed `twitter:image:src` meta name to `twitter:image` (Thanks mahler83) +* Tested with WordPres 4.5 RC2 + += 1.7.3 = +* Avoid php notice on the "Members" plugin role edit page + += 1.7.2 = +* Better SubHeading plugin compatibility (choose either to add it Before or After the title) +* Description set the same value as the title if it's empty +* Correct `og:type` for WPML root pages +* Added the `fb_og_type` filter so that plugins or themes can override the Open Graph Type + += 1.7.1 = +* Added the `fb_og_url` filter so that plugins or themes can override the Open Graph URL + += 1.7 = +* WordPress 4.4, WooCommerce 2.4.12 and PHP 7 compatibility check - All good! +* NEW WooCommerce integration: Category thumbnail images and additional product images as Open Graph Images +* New `fb_og_image_additional` filter so other plugins/themes can add additional Open Graph Images +* Hide our meta box on some custom post types, and add a new `fb_og_metabox_exclude_types` filter so other plugins/themes can hide our metabox on their CPTs +* Several tweaks on the settings page + += 1.6.3 = +* Added the `fb_og_locale` filter so that plugins or themes can override the Open Graph locale tag + += 1.6.2.2 = +* Bug fix: Google+, Twitter and Facebook profile fields would not be available on the user profile if Yoast SEO was not active + += 1.6.2.1 = +* Fix: Eliminates php notices introduced on 1.6.2 + += 1.6.2 = +- Fix: Replaces all spaces by %20 on URLs (`og:url`, `og:image`, etc...), thanks to "Doc75" + += 1.6.1 = +* WPML compatibility: If the frontpage is set as "latest posts" and a custom homepage description is used, it can now be translated to other languages in WPML - String translation + += 1.6 = +* Added `og:image:width` and `og:image:height` tags if Facebook is having problems loading the image when the post is shared for the first time +* Added the possibility to choose the Twitter Card Type +* It's now possible to hide the author tags on pages +* Fix: SubHeading plugin was not found on multisite +* Fix: On the image attachment pages the `og:image` tag was not correctly set +* Fix: Several PHP notices fixed +* Updated FacebookLocales.xml + += 1.5.2 = +* Fix: Fatal error integrating with WPSEO's last version +* Fix: Checking for post_type when saving the meta box field and updating/purging Facebook Open Graph Tags cache to avoid doing it when unnecessary + += 1.5.1 = +* Fix: error checking and reporting when updating/purging Facebook Open Graph Tags cache to avoid fatal errors on failure +* Fix: change Facebook cache update call from https to http to avoid errors on some server configurations +* Updated FacebookLocales.xml + += 1.5 = +* Each time a post/page is saved we try to update/purge Facebook Open Graph Tags cache so you can share it right away from the post edit screen +* Forced Excertps support on Pages so that it can be used as the post description +* Added HTTP REFERER and USER AGENT to the cURL calls when trying to get image size by url +* Fix: Some validations when trying to get image size by url +* Fix: A lot of php notices and warnings were supressed + += 1.4.2 = +* Fix: (Another) debug message removed + += 1.4.1 = +* Fix: Debug message removed + += 1.4 = +* Added article published and modified date/time tags +* Added "article:section" tag +* Several fixes regarding getting the content or media gallery image size +* Several fixes on the way the defaults and settings are loaded to avoid php warnings and notices +* Some changes on the default values for first time users + += 1.3.4 = +* Fix getting image size when a remote image is used on the post content (thanks contemplate and Steve) +* Change the way the default settings are load so that even settings that are not user defined will be available (like the new image minimum size which is, for now, "hardcoded") + += 1.3.3 = +* Fix where servers with allow_url_fopen disabled would not be able to get_image_size for post content or media gallery images (thanks joneiseman) + += 1.3.2 = +* Added Google+ Publisher tag +* Fix on some Portuguese translation strings + += 1.3.1 = +* Ignore images bellow 200x200 when searching images from the post content and media gallery, because Facebook also ignores them + += 1.3 = +* Changed name to "Facebook Open Graph, Google+ and Twitter Card Tags" +* Added Twitter Card tags +* Added new tag "article:publisher" in order to link the article with a Facebook page +* Added new tags "article:author", meta author and Google+ link rel in order to link the article with his author (Facebook profile, Name and Google+ profile) +* Title, URL, Description and Image Meta/Google+/Twitter tags can now be set even if Open Graph ones aren't +* Several HTML/CSS tweaks on the settings page +* Fix: esc_attr on all tags + += 1.2 = +* Added filters for title, description and images, so another plugin or theme can override these values. The filters are `fb_og_title`, `fb_og_desc` and `fb_og_image` + += 1.1.2 = +* Fix: Specific post image was not working properly +* Added a "Clear field" button to the specific post image options box +* When the homepage is set as a static page, the "homepage description" section on the settings page will reflect that + += 1.1.1 = +* Fix: a debug var_dump was left uncommented +* readme.txt adjustments + += 1.1 = + +* WordPress SEO by Yoast, now Yoast SEO, integration: title, url (canonical) and description can now be fetched from this very popular SEO plugin +* Fix: small fix on javascript + += 1.0.1 = + +* Corrected a nasty bug which would break the "Add Media" option. Thanks to @flynsarmy (yet again) +* Fix: version field upgrade on the database + += 1.0 = + +* Plugin name changed from "Wonderm00n's Simple Facebook Open Graph Meta Tags" to "Facebook Open Graph Meta Tags for WordPress" +* You can now set a specific Open Graph image per post, if you don't want it to be the same as the post featured image +* Settings are now stored on a array instead of multiple variables on the options table (and necessary changes along the code) +* Internationalization support added +* Portuguese translation added (we welcome other translations if you want to do it) +* Added webdados as contributor (Wonderm00n's company) +* Fix: Several PHP warnings when WP_DEBUG is turned on. Thanks to @flynsarmy (yet again) +* Fix: `og:type` was not set correctly for the homepage in case it was a static page. Thanks to yakitori +* Fix: When the site url was not the same as the WordPress installation folder the wrong url was used in the homepage `og:url`/`canonical` tag. Thanks to theonetruebix +* Using the requested url as `og:url`/`canonical` on not known areas of WordPress. Not really a canonical url but better than using the homepage one + += 0.5.4 = + +* Fix in order to be compatible with "Business Directory Plugin" 3.0 + += 0.5.3 = + +* Minor fix to avoid php notices filling up error logs. Thanks to @flynsarmy (yet again). + += 0.5.2.1 = + +* Fixed version number. + += 0.5.2 = + +* Minor fix to avoid php notices filling up error logs. Thanks to @flynsarmy (again). +* Fixed FacebookLocales.xml URL. +* By default the FacebookLocales.xml is loaded from the local cache (to save on bandwidth) and it's only loaded from Facebook URL by user request. +* Deleted some commented debug stuff and translate portuguese comments to english. + += 0.5.1 = + +* Fixed a typo. +* Added the information about the recommended minimum image size. + += 0.5 = + +* Added meta description and Schema.org name, description and image tags. + += 0.4.3 = + +* Fixed a bug where the original, WordPress stock, Canonical URL was not being removed. + += 0.4.2 = + +* If using the "Business Directory Plugin" integration, the `og:url` tag is now correctly set in the category listing pages. + += 0.4.1 = + +* Added the ability to set/replace the Canonical URL tag. Very important for SEO in the "Business Directory Plugin" integration. + += 0.4 = + +* "Business Directory Plugin" plugin integration. It's now possible to populate `og:title`, `og:url`, `og:description` and `og:image` tags with each listing details. If a featured image is set it will be used. If not, the listing main image is used. + += 0.3.5 = + +* Minor fixes to avoid php notices filling up error logs. Thanks to @flynsarmy. + += 0.3.4 = + +* Fixed a bug where all the settings could be lost when saving other plugins options (Shame on me!!). + += 0.3.3 = + +* Fixed a bug where unset options would become active again. Thanks to @scrumpit. + += 0.3.2 = + +* Fixed a typo on the settings page. + += 0.3.1 = + +* When saving the settings the $_POST array was showned for debug/development reasons. This output has been removed. + += 0.3 = + +* "SubHeading" plugin integration. It's now possible add this field to the `og:title` tag. +* Changed the way defaults and user settings are loaded and saved, to "try" to eliminate the problem some users experienced where the user settings would disappear. +* Bugfix: "Also add image to RSS/RSS2 feeds?" option was not being correctly loaded. +* The plugin version is now showed both as a comment before the open graph tags and on the settings page. + += 0.2.3 = + +* No changes. Had a problem updating to 0.2.2 on the WordPress website. + += 0.2.2 = + +* Bugfix: small change to avoid using the "has_cap" function (deprecated). Thanks to @flynsarmy. + += 0.2.1 = + +* Bugfix: when the `og:image` is not hosted on the same domain as the website/blog. + += 0.2 = + +* If the option is set to true, the same image obtained to the `og:image` will be added to the RSS feed on the `enclosure` and `media:content` tags so that apps like RSS Graffiti and twitterfeed post them correctly. + += 0.1.9.5 = + +* It's now possible to choose how the post/page `og:image` tag is set. It means that if the user doesn't want to use the featured/thumbnail image, or the first image in the post content, or the first image on the media gallery, or even the default image, he can choose not to. + += 0.1.9 = + +* Added the `og:locale` tag. This will be the WordPress locale by default, but can be chosen by the user also. +* The `og:type` tag can now be set as "website" or "blog" for the homepage. +* A final trailing slash can now be added to the homepage url, if the user wants to. Avoids 'circular reference error' on the Facebook debugger. + + += 0.1.8.1 = + +* Fixed the namespace declarations. + += 0.1.8 = + +* Type "website" was being used as default for all the urls beside posts. This is wrong. According to Facebook Open Graph specification only the homepage should be "website" and all the other contents must bu "article". This was fixed. +* On Category and Tags pages, their descriptions, if not blank, are used for the `og:description` tag. +* If the description comes out empty, the title is used on this tag. + += 0.1.7 = + +* Changed the plugin priority, so that it shows up as late as possible on the <head> tag, and it won't be override by another plugin's Open Graph implementation, because other plugins usually don't allow to disable the tags. If you want to keep a specific tag from another plugin, you can just disable that tag on this plugin options. + += 0.1.6 = + +* Settings link now shows up on the plugins list. +* Small fix to ensure admin functions only are running when on the admin interface. +* Some admin options now only show up when the tag is set to be included. + + += 0.1.5 = + +* Fixed the way Categories and Tags pages links were being retrieved that would cause an error on WP 3.0. +* Added the option to use a Custom text as homepage `og:description` instead of the Website Tagline. +* Fixed a bug that wouldn't allow to uncheck the `og:image` tag. + += 0.1.4 = + +* Shortcodes are now stripped from `og:description`. +* Changed `og:app_id` and `og:admins` not to be included by default. + += 0.1.3 = + +* Just fixing some typos. + += 0.1.2 = + +* Fixing a bug for themes that do not support post thumbnail. + += 0.1.1 = + +* Adding Open Graph Namespace to the HTML tag. + += 0.1 = + +* First release. \ No newline at end of file diff --git a/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/wonderm00n-open-graph.php b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/wonderm00n-open-graph.php new file mode 100644 index 0000000..d02a6c3 --- /dev/null +++ b/wp-content/plugins/wonderm00ns-simple-facebook-open-graph-tags/wonderm00n-open-graph.php @@ -0,0 +1,51 @@ +<?php +/* +Plugin Name: Open Graph and Twitter Card Tags +Plugin URI: https://www.webdados.pt/produtos-e-servicos/internet/desenvolvimento-wordpress/facebook-open-graph-meta-tags-wordpress/ +Description: Inserts Facebook Open Graph, Google+/Schema.org, Twitter Card and SEO Meta Tags into your WordPress Blog/Website for more effective and efficient Facebook, Google+ and Twitter sharing results. You can also choose to insert the "enclosure" and "media:content" tags to the RSS feeds, so that apps like RSS Graffiti and Twitterfeed post the image to Facebook correctly. +Version: 2.2.7.1 +Author: Webdados +Author URI: https://www.webdados.pt +Text Domain: wonderm00ns-simple-facebook-open-graph-tags +Domain Path: /lang +WC tested up to: 3.7.0 +*/ + +if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly + +define( 'WEBDADOS_FB_VERSION', '2.2.7.1' ); +define( 'WEBDADOS_FB_PLUGIN_NAME', 'Open Graph and Twitter Card Tags' ); +define( 'WEBDADOS_FB_W', 1200 ); +define( 'WEBDADOS_FB_H', 630 ); + +/* Include core class */ +require plugin_dir_path( __FILE__ ) . 'includes/class-webdados-fb-open-graph.php'; + +/* Uninstall hook */ +register_uninstall_hook(__FILE__, 'webdados_fb_uninstall'); +function webdados_fb_uninstall() { + $options = get_option( 'wonderm00n_open_graph_settings' ); + if ( intval($options['fb_keep_data_uninstall'])==0 ) { + //Settings + delete_option( 'wonderm00n_open_graph_settings' ); + delete_option( 'wonderm00n_open_graph_version' ); + delete_option( 'wonderm00n_open_graph_admin_notice' ); + global $wpdb; + //Post meta + $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key LIKE '_webdados_fb_open_graph%'" ); + //Transients - Image size cache + $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '%webdados_og_image_size_%'" ); + } +} + +/* Run it */ +function webdados_fb_run() { + if ( $webdados_fb = new Webdados_FB( WEBDADOS_FB_VERSION ) ) { + return $webdados_fb; + } else { + return false; + } + +} + +$webdados_fb = webdados_fb_run(); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/css/admin.css b/wp-content/plugins/wp-statistics/assets/css/admin.css new file mode 100644 index 0000000..f8374ab --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/css/admin.css @@ -0,0 +1,417 @@ +/** Setting page **/ +.wp-statistics-settings .widefat { + float: left; +} + +.wp-statistics-settings .postbox-container { + margin-top: 51px; +} + +.wp-statistics-container { + margin: 0 auto; +} + +.wp-statistics-settings ul.tabs { + margin: 0; + padding: 0; + list-style: none; +} + +.wp-statistics-settings ul.tabs li { + background: none; + color: #222; + display: inline-block; + padding: 10px 8px; + cursor: pointer; + border: 1px solid #f1f1f1; + margin: 0; +} + +.wp-statistics-settings ul.tabs li.current { + background: #ffffff; + color: #222; + border-right-color: #e5e5e5; + border-left-color: #e5e5e5; + border-bottom-color: #ffffff; + border-top-color: #e5e5e5; + padding-bottom: 11px; +} + +.wp-statistics-settings .tab-content { + display: none; + background: #ffffff; + padding: 15px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + margin: -1px 0 0 0; +} + +.wp-statistics-settings .tab-content.current { + display: inherit; +} + +.rtl .wp-statistics-settings .widefat { + float: right; +} + +.wp-statistics-settings #update_geoip { + margin-left: 5px; + margin-top: -5px; + line-height: 19px; + font-size: 12px; + height: 25px; +} + +@media only screen and (max-width: 1327px) { + .wp-statistics-settings ul.tabs li { + padding: 10px 5px; + } +} + +/** Add-Ons page **/ +.wp-statistics-plugins .widefat > * { + float: left; +} + +.wp-statistics-plugins .widefat .plugin-card { + position: relative; +} + +.wp-statistics-plugins .widefat .plugin-card .desc, +.wp-statistics-plugins .widefat .plugin-card .name { + margin-right: 0; +} + +.rtl .wp-statistics-plugins .widefat > * { + float: right; +} + +.rtl .wp-statistics-plugins .widefat .plugin-card .desc, +.rtl .wp-statistics-plugins .widefat .plugin-card .name { + margin-right: 148px; + margin-left: 0; +} + +.wp-statistics-plugins .widefat .plugin-card-bottom { + float: initial; +} + +.wp-statistics-plugins .widefat .column-downloaded p { + margin: 2px 0 0 0; +} + +.wp-statistics-plugins .column-price { + display: inline; + margin: 0 8px; + font-size: 15px; + color: #589616; +} + +.wp-statistics-plugins .plugin-card .cover-ribbon { + height: 115px; + width: 115px; + position: absolute; + left: -8px; + top: -7px; + overflow: hidden; +} + +.wp-statistics-plugins .plugin-card .cover-ribbon .cover-ribbon-inside { + background: #EA4335; + color: #FFF; + transform: rotate(-45deg); + position: absolute; + left: -35px; + top: 16px; + padding: 10px; + min-width: 127px; + text-align: center; + z-index: 9; +} + +.wp-statistics-plugins .plugin-card .cover-ribbon .cover-ribbon-inside:before { + width: 0; + height: 0; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 10px solid #992C23; + position: absolute; + left: -5px; + bottom: 0; + content: ""; + top: 34px; + transform: rotate(-45deg); +} + +.wp-statistics-plugins .plugin-card .cover-ribbon .cover-ribbon-inside:after { + width: 0; + height: 0; + border-top: 7px solid transparent; + border-left: 7px solid #992C23; + border-bottom: 7px solid transparent; + position: absolute; + top: 33px; + bottom: 0; + right: 4px; + content: ""; + transform: rotate(-45deg); +} + +.rtl .wp-statistics-plugins .plugin-card .cover-ribbon { + right: -8px; +} + +.rtl .wp-statistics-plugins .plugin-card .cover-ribbon .cover-ribbon-inside { + transform: rotate(45deg); + right: -34px; + left: auto; +} + +.rtl .wp-statistics-plugins .plugin-card .cover-ribbon .cover-ribbon-inside:before { + left: -1px; +} + +.rtl .wp-statistics-plugins .plugin-card .cover-ribbon .cover-ribbon-inside:after { + right: -1px; +} + +/** Other CSS **/ +.wp-statistics-settings .note { + color: #FF0000; + font-size: 11px !important; + font-weight: bold; +} + +.wps-center { + text-align: center; +} + +#wps_about_postbox #about_postbox img { + max-width: 170px; + margin: 0 0 9px 0; +} + +.column-wp-statistics { + width: 52px; +} + +#wpadminbar #wp-admin-bar-wp-statistic-menu .ab-icon:before { + content: '\f184'; + top: 2px; +} + +/** Welcome page **/ +.wp-statistics-welcome .wp-badge { + background-image: url('../images/logo-250-white.png'); + background-color: #1aabec; +} + +.wp-statistics-welcome .nav-tab.donate { + background-color: #459605; + color: #ffffff; +} + +.wp-statistics-welcome .tab-content { + display: none; +} + +.wp-statistics-welcome .tab-content.current { + display: block; +} + +.wp-statistics-welcome ul li { + margin: 0 31px; +} + +.wp-statistics-welcome ul { + list-style-type: square; + line-height: 28px; + margin: 0 0 20px 0; +} + +.wp-statistics-welcome img { + width: auto; +} + +.wp-statistics-welcome .center-section { + padding: 41px 0 60px; + clear: both; + text-align: center; +} + +.wp-statistics-welcome .normal-section .left { + float: left; + width: 50%; + text-align: left; +} + +.wp-statistics-welcome .normal-section .right { + float: right; + width: 50%; +} + +.wp-statistics-welcome .normal-section { + float: left; + width: 100%; + padding: 36px 0 44px; + border-bottom: 1px solid #dedede; +} + +.wp-statistics-welcome .normal-section h2 { + text-align: left; +} + +.wp-statistics-welcome .text-center { + text-align: center !important; +} + +.wp-statistics-welcome .content-padding { + padding: 0 43px; +} + +.wp-statistics-welcome .addons-item img { + width: 120px; + border-radius: 4px; +} + +.wp-statistics-welcome .addons-item a { + display: inline-block; + margin: 0 5px; +} + +.wp-statistics-welcome .center-section.logo img { + width: 150px; +} + +.wp-statistics-welcome .center-section.logo > a { + display: inline-block; +} + +.wp-statistics-welcome .plugin-icon { + width: 128px; + height: 128px; +} + +.wp-statistics-welcome .plugin-card h3 { + margin: 0 0 12px; + font-size: 18px; + line-height: 1.3; +} + +.wp-statistics-welcome .plugin-card { + text-align: left; +} + +/* button Editor tinymce */ +i.mce-i-icon-statistic { + font: 400 20px/1 dashicons; + padding: 0; + vertical-align: top; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + margin-left: -2px; + padding-right: 2px +} + +.wp-statistic-mce-desc { + color: #b1b1b1 !important; + margin-left: 82px !important; +} + +html[dir="rtl"] .wp-statistic-mce-desc { + text-align: right !important; + margin: 0 82px 0px 0px !important; +} + +.about-text img { + width: 90px; +} + +.wps-return-to-dashboard { + margin: 30px 0 0 -5px; + font-size: 14px; + font-weight: 600; +} + +.wps-return-to-dashboard a { + text-decoration: none; + padding: 0 5px; +} + +.wps-gutenberg-chart-js { + height: 350px; +} + +/* Meta Box Loading */ +.wps_loading_box { + width: 100%; + text-align: center; + min-height: 65px; + padding-top: 15px; +} + +/* Admin Page Title */ +.wps_page_title { + display: inline-block; + vertical-align: -15px; + margin-top: 10px; + margin-bottom: 10px; + margin-right: 5px; +} + +.wps_title { + display: inline; + font-size: 1.6em; +} + +/* Refresh button Meta Box */ +.wps-more span, .wps-refresh span { + transition: transform .6s ease-in-out; + -webkit-transition: -webkit-transform .6s ease-in-out; +} + +.wps-more span:hover, .wps-refresh span:hover { + color: #00a0d2; +} + +.wps-refresh span:hover { + transform: rotate(360deg); + -webkit-transform: rotate(360deg); +} + +/* Color Style */ +.wps-text-danger { + color: #DC3545; +} + +.wps-text-success { + color: #459605; +} + +.wps-text-warning { + color: #dc6b26; +} + +.wps-text-muted { + color: #797979; +} + +/* disable Break Link */ +a[href*='?page=wps_break_menu'] { + pointer-events: none; +} + +/* Cursor Default */ +.wps-cursor-default { + cursor: default; +} + +/* Text Wrap */ +.wps-text-wrap { + display: inline-block; + overflow: hidden; + white-space: nowrap; + width: 200px; +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/css/frontend.css b/wp-content/plugins/wp-statistics/assets/css/frontend.css new file mode 100644 index 0000000..187cbfa --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/css/frontend.css @@ -0,0 +1,4 @@ +#wpadminbar #wp-admin-bar-wp-statistic-menu .ab-icon:before { + content: '\f184'; + top: 2px; +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/css/jquery-ui-smoothness.min.css b/wp-content/plugins/wp-statistics/assets/css/jquery-ui-smoothness.min.css new file mode 100644 index 0000000..1e8368f --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/css/jquery-ui-smoothness.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.11.4 - 2015-03-11 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:.4em 2.1em .4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("../images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("../images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("../images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("../images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("../images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("../images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("../images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("../images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("../images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("../images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("../images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("../images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("../images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("../images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} diff --git a/wp-content/plugins/wp-statistics/assets/css/log.css b/wp-content/plugins/wp-statistics/assets/css/log.css new file mode 100644 index 0000000..385ad0f --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/css/log.css @@ -0,0 +1,430 @@ +@media print { + #wpadminbar, + #adminmenuback, + #adminmenuwrap, + #show-settings-link { + display: none; + } + + #wpcontent, #wpfooter { + margin-left: 0px; + } +} + +#wps-postbox-container-1 { + width: 30%; + float: left; +} + +#wps-postbox-container-2 { + margin: 0 0 0 1%; + width: 68%; + float: right; +} + +@media screen and (max-width: 998px) { + #wps-postbox-container-1 { + width: 35%; + } + + #wps-postbox-container-2 { + margin: 0 0 0 1%; + width: 63%; + } +} + +@media screen and (max-width: 758px) { + #wps-postbox-container-1 { + width: 100%; + } + + #wps-postbox-container-2 { + margin: 0 0 0 1%; + width: 100%; + } +} + +@media screen and (max-width: 524px) { + #wps-postbox-container-1 { + width: 100%; + } + + #wps-postbox-container-2 { + margin: 0 0 0 1%; + width: 100%; + } +} + +#last-log { + width: 100%; + direction: ltr; +} + +#wps-postbox-container-1 a, #wps-postbox-container-2 a, #last-log a { + text-decoration: none; +} + +#summary-stats { + background: none repeat scroll 0 0 rgba(0, 0, 0, 0); + border: 1px none; + margin: 0 0 10px; +} + +#summary-stats tr:first-child th { + border-top: 0 none; +} + +#summary-stats span { + color: #21759B !important; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-size: 21px; +} + +#post-stats { + border: none; +} + +#th-colspan { + text-align: center; +} + +#th-colspan span { + color: #459605 !important; + font-size: 30px; +} + +#last-visitor tr { + text-align: center; +} + +#last-visitor tr:first-child { + background: none repeat scroll 0 0 #EEEEEE; + font-weight: bold; + text-align: center; +} + +#last-search tr { + text-align: center; +} + +#last-search tr:first-child { + background: none repeat scroll 0 0 #EEEEEE; + font-weight: bold; + text-align: center; +} + +#last-referrer tr { + text-align: left; +} + +#last-referrer tr:first-child { + background: none repeat scroll 0 0 #EEEEEE; + font-weight: bold; + text-align: center; +} + +.th-center { + text-align: center !important; +} + +.td-align { + text-align: left; +} + +.td-url { + color: #009936 !important; + direction: ltr; + font-size: 10px !important; + text-align: left; + white-space: nowrap; +} + +#map_canvas { + direction: ltr; + height: 300px; + width: 100%; +} + +.map-html-marker { + max-height: 170px; + width: 200px; +} + +.map-html-marker p { + border-bottom: 1px dashed #EFEFEF; + font-size: 10px; + margin: 2px 0; + padding: 3px 0; + text-align: left; +} + +.map-html-marker p:last-child { + border-bottom: 0 none; +} + +.log-latest { +} + +.log-item { + border-bottom: 1px solid #efeeee; + border-top: 1px solid #FFFFFF; + min-height: 46px; + padding: 3px 7px; +} + +.log-item:hover { + background: none repeat scroll 0 0 #f7f7f7; +} + +.show-map { + float: left; +} + +.log-referred { + float: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: auto; +} + +.log-page-title { + float: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + width: 100%; +} + +.log-ip { + direction: ltr; + float: right; + font-size: 10px; + margin-bottom: 5px; + white-space: pre; + overflow: hidden; + text-overflow: ellipsis; + text-align: right; +} + +.log-tools { + float: left; + margin: 0 2px; +} + +.log-agent { + float: left; +} + +.log-url { + direction: ltr; + float: left; + font-size: 10px; + margin: 0 0 0 2px; + white-space: nowrap; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} + +.log-url img { +} + +#wp_statistics_editor_meta_box, +#wp-statistics-browsers-widget, +#wp-statistics-countries-widget, +#wp-statistics-hitsmap-widget, +#wp-statistics-hits-widget, +#wp-statistics-pages-widget, +#wp-statistics-recent-widget, +#wp-statistics-referring-widget, +#wp-statistics-search-widget, +#wp-statistics-summary-widget, +#wp-statistics-words-widget, +#wp-statistics-top-visitors-widget, +#wps_hits_postbox, +#wps_top_visitors_postbox, +#wps_search_postbox, +#wps_words_postbox, +#wps_recent_postbox, +#wps_map_postbox, +#wps_pages_postbox, +#wps_summary_postbox, +#wps_browsers_postbox, +#wps_referring_postbox, +#wps_countries_postbox, +#wps_words_postbox { + overflow: hidden; +} + +#time_zone a { + font-size: 11px; + text-decoration: none; +} + +#visits-log { + direction: ltr; + height: 290px; + width: 100%; +} + +#search-engine-log { + direction: ltr; +} + +#platform-log { + direction: ltr; +} + +#visits-stats { + direction: ltr; +} + +#exclusion-stats { + direction: ltr; +} + +#search-stats { + direction: ltr; +} + +#page-stats { + direction: ltr; +} + +#about-links { + margin: 0 0 10px; +} + +#about-links p { + display: inline; + font-size: 12px; + margin: 0 2px; + font-style: italic; +} + +#about-links a { +} + +.left-div { + float: left; +} + +.right-div { + float: right; +} + +#donate-text { + float: left; +} + +#donate-button { + float: right; + margin: -2px 0 0 0; +} + +#donate-button a { + height: 23px; + line-height: 22px; +} + +.jqvmap-label { + z-index: 10000; +} + +.ui-sortable { + min-height: 100px; +} + +.table-stats tr, .table-stats td { + border-bottom: 1px solid #efeeee; + background-color: white; + transition: 1s all; +} + +.table-stats tr:last-child td { + border-bottom: 0px; +} + +.table-stats tr:hover:not(:first-child) td { + background-color: rgba(241, 241, 241, 0.65) !important; +} + +.table-stats tr:first-child td { + border: 0px none; + text-align: left; +} + +.rtl .table-stats.left-align tr, +.rtl .table-stats.left-align td { + text-align: left !important; +} + +.rtl .table-stats tr, .rtl .table-stats td { + text-align: right !important; +} + +.rtl .table-stats .log-tools { + float: right; +} + +.rtl .table-stats .th-center { + text-align: center !important; +} + +.table-stats { + border: 0px none !important; +} + +.wp-statistics-sub-fullwidth { + width: 100%; +} + +.button-link.wps-more, +.button-link.wps-refresh { + text-decoration: none !important; +} + +.wp-statistics-table { + overflow-x: auto; +} + +.wps-postbox-veronalabs { + margin: 18px 0 0 0; +} + +.wps-postbox-veronalabs img { + width: 116px; +} + +#wps_overview_ads_postbox .inside { + padding: 0; + margin: 0; +} + +#wps_overview_ads_postbox .inside a img { + width: 100%; + height: auto; +} + +#wps_overview_ads_postbox .inside a:focus { + box-shadow: none; +} + +#wps_overview_ads_postbox .inside .close-overview-ads { + position: absolute; + right: 0; + margin: 10px 20px; + opacity: 0; + transition: 1s all; +} + +#wps_overview_ads_postbox .inside .close-overview-ads span.dashicons { + font-size: 21px; + color: #72777c; + cursor: pointer; +} + +#wps_overview_ads_postbox .inside:hover .close-overview-ads { + opacity: 1; +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/css/pagination.css b/wp-content/plugins/wp-statistics/assets/css/pagination.css new file mode 100644 index 0000000..350aee0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/css/pagination.css @@ -0,0 +1,51 @@ +#result-log { + color: #148e00; + direction: rtl; + margin-top: 4px; +} + +.pagination-wrap { + clear: both; + display: block; + overflow: hidden; + text-align: center; + margin-top: 25px; +} + +.pagination-wrap .page-numbers li { + margin-bottom: 0; + display: inline-block; +} + +.pagination-wrap .page-numbers li a, .pagination-wrap .page-numbers li span { + display: inline-block; + padding: 6px 12px; + margin-right: 4px; + border-radius: 3px; + border: solid 1px #c0c0c0; + background: #e9e9e9; + box-shadow: inset 0px 1px 0px rgba(255, 255, 255, .8), 0px 1px 3px rgba(0, 0, 0, .1); + font-size: .875em; + font-weight: bold; + text-decoration: none; + color: #717171; + text-shadow: 0px 1px 0px rgba(255, 255, 255, 1); +} + +.pagination-wrap .page-numbers > li > a:hover, +.pagination-wrap .page-numbers > li > span:hover, +.pagination-wrap .page-numbers > li > a:focus, +.pagination-wrap .page-numbers > li > span:focus { + background: #fefefe; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#FEFEFE), to(#f0f0f0)); + background: -moz-linear-gradient(#FEFEFE, #f0f0f0); +} + +.pagination-wrap .page-numbers li .current { + border: none; + background: #616161 !important; + box-shadow: inset 0px 0px 8px rgba(0, 0, 0, .5), 0px 1px 0px rgba(255, 255, 255, .8) !important; + color: #f0f0f0; + text-shadow: 0px 0px 3px rgba(0, 0, 0, .5); + padding: 7px 14px; +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/css/rtl.css b/wp-content/plugins/wp-statistics/assets/css/rtl.css new file mode 100644 index 0000000..e56c944 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/css/rtl.css @@ -0,0 +1,98 @@ +#left-log { + margin: 0 1% 0 0; +} + +.td-align { + text-align: right; +} + +#donate-button { +} + +.log-referred { + float: right; +} + +.log-ip { + float: left; +} + +#last-log { + direction: rtl; +} + +.ui-widget, .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { + font-family: tahoma, serif; +} + +.ui-tabs .ui-tabs-nav li { + float: right; +} + +.jqvmap-label { + direction: ltr; +} + +.jqplot-table-legend, .jqplot-highlighter-tooltip { + direction: rtl; + font-family: tahoma, serif; +} + +#donate-text { + float: right; +} + +#donate-button { + float: left; +} + +.left-div { + float: right; +} + +.right-div { + float: left; +} + +/** Welcome page **/ +.wp-statistics-welcome .normal-section .left { + float: right; + text-align: right; +} + +.wp-statistics-welcome .normal-section h2 { + text-align: right; +} + +.wp-statistics-welcome .normal-section .right { + float: left; +} + +/** Travod **/ +.wp-statistics-travod .header p { + margin-left: 17px; + margin-right: 0; +} + +.wp-statistics-travod .header .left { + float: right; +} + +.wp-statistics-travod .header .right { + float: left; +} + +.wps-wrap h2,.wps-wrap h3 { + direction: rtl; + font-family: tahoma, serif; + font-weight: 400; +} + +.wps_page_title { + margin-right: 0; + margin-left: 5px; +} + +.wps-wrap table.widefat { + direction: rtl; +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/images/Air.png b/wp-content/plugins/wp-statistics/assets/images/Air.png new file mode 100644 index 0000000000000000000000000000000000000000..8242fe6cd11697cae8865acf723c2040b08a63a3 GIT binary patch literal 640 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47!?A1LR^7dtbh@yfPsOBjqP|+ zdcKNQp^LknvI-L;qbw(Py1lcyi0JpZi$71F_iWM9!(oX>LgH>rpLHoNbyZ#cp6udN zxkdZ@LQlDe><f=uVPrMkH?YOgeMUqa3lo!tq;!*yf4YuAqK#dsjAEX>bDWWBfR?VT zuyC4(mw}>^5HIg^QQ7H&lCq+rm#XV77MA{-KKpND`@hb<Ka~w1b*<hj>b#TH{NFeE zU(duJk;$L*ZT@fB_J7mXf0L*GF0A~KR{Sk0^}BcY2X*7W6Q=!b>;9El^eZ**XL9b( z<eZ;TDc^(QzSw(xHn#t_YVE%jYyK@=^}B!C-`eKS<;{PpoBmcc{4T5cT~hrkxAd!% z|3^);nM>4VfB|Gy666=0%y8+(*=Td2rw?v@d3^u&?OWF_|NHmn_wQdnzJ2}j`SXW& zZ{ECo{P4m3J9lo~ym|HVg$t)n9h*IS<H?=<Kof3yx;TbNT#h~ATE-M8;Be8aHuGTT z?%mPm@*cYxJtyqg^glMBoss$7i@EH^!4A7OA3L<+YSEl(-X)?x_Q|t+*7nw4pKr=} zs7m47taYz%%g5(33S9HpePV*>)J=>BHhQjWk?F5fc0K$rOe;Mu_Rgb&@#>2{3hTa? ze!lsA@$}{W=lxBrURSee2Z*0p^7_&XIin+4k9J+XRH(mnVxH3THFNZhO}70q`SmVq z>89#5qbEA{3k-j}KUyeMKd+!q+L>WuW$AjqORaNV*DE^2nR`r5iMzIE;sQ@bVW%wR Xb;c^mUt1UXg3^(vtDnm{r-UW|^1vZK literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Android.png b/wp-content/plugins/wp-statistics/assets/images/Android.png new file mode 100644 index 0000000000000000000000000000000000000000..f66a27dded202b6b180c843f19dfac24cc57ed4d GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}MSxF;E0A7%)B+PV&e199)j$?s zbl80HQS+{4dR@!(3)<C?rI6VR51Y?FV7B0(dCLOb`dQjQmD9JI02NeC)&i0TZ&dBQ zTDbhU14GS@2|&A5N`m}?8O|ST|FM6<GYgit57sV<jZl*m|M=nd)iayB>XU<geC+M5 zjd=O}KPUp#7kaulhDcoQJ$Ib1#el~(F#QmVlXQaBUYiI1{|h*!h~+$3^F}+;D7WhE zRnJ+M^u96f5l)(G%=B4=N5(0lHTJ5$(6kbHHIC<OulXva{$2Mw#NU3R-}k~S=X3p< v;_DxDe&xRAFsaFX_csZnz`&np&+K5>zMfAyTD<8h&~gS(S3j3^P6<r_i(Qg) literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Chrome.png b/wp-content/plugins/wp-statistics/assets/images/Chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..ae385f6f35ffa7b8f7ad4da85da4f9bd26327dcd GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfs{o%6S0HUS#rcVu@qI1rM{AX> z`<-6;IKGMW_TK90y3p-apqpin<L$+2@AgXlJkJdjyfIJX*(QZ&1#&?4pG%xS&hUG! z^LXZ9_0U5#W$s1W<|FDQn}LdfCcN;pe{5v1;PB(@Mc2<<zf!d1O6a7s{(YyH961@> zwe3Sz#EZC)zjxi;m$-o}3UCEE!_pM!j5~^I_g1KUIwJh-gwUCzSC1aJvgFi--RDkJ zohmOoRGN1*yL4UltCYk!`4R6@L!bHtyguym_KJ1dM(d(kmbE43X=Nslj0~o2R9|PQ zer%5-(6y(e<v*U~-SOhs4WMs@OM?7@89IQ##bp%~xB$V7qTP3Z((623977~7=XPHe zYYGry-Ds^};L6!Ng>U!n|NqNvIQALl8)xS$O{_^=zADP{|96x8BAN707P6Jk(vr_4 z=WzR}eK~ftlqGR-snacit``sAssH`=;lQsDSth6J-=|3O%uw{4bVYx`TMr@EOp`vQ z-V3u{GWp1q%s5kZKt_+TMaU;?)1njZ5?2(S@UZAiD=*mQ%AncYR`e@?aW*S&_tMK> oE~m$DJiIz-uI>6;DwBRNnLiXYIs2wM1?X}HPgg&ebxsLQ0MT&fKmY&$ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Edge.png b/wp-content/plugins/wp-statistics/assets/images/Edge.png new file mode 100644 index 0000000000000000000000000000000000000000..408e3e386f2562ce32ed8c522c438e804485a748 GIT binary patch literal 466 zcmV;@0WJQCP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0001}P)t-s0000~ zioP><y*quuLW0D6r_z_b;4pQ(s>$VxwcKc&&VZ`bzSrqMfWkO>z&m`vONhrvhQ&sN z#72a~HFddNl+09)$Xt=cfvnc1$K*kP!cdIKM1sOvk;zYr$84U?J$<}jmd#g<#a)!l za--8~ozYv8%XX&JSdqzxu-A{b-jul3Xq(TX#^Yw1&wHoSPKw2SsnnOc+%a~&Epxmm zaJngRyCQ42UdRR;0000pbW%=J09xzn*nbT77zkr64&mV2&BnX3tE!(>Ml8?6!ndfR zp_`Y7g@1f@ab{XlPDevNJ2@WX_&rzv005>*L_t&-(@oDu4#O}E1i+2#xTd(5^xnHD z=l?$o3Hy)%c-VzRfDq4OqQ+_9pye$zk>;^0h(TmHyFBFH!IocD1YvlKxfyyu-K3xQ zRbJYp%??;^aIpqp`$kg?oKd@0U(9*)2rM_cF^scToPGXFy5j<HEE<-*PT3ZgkAD$S z?m+k<#L;N7506*1wKE83YPw@6>#mzgmS%;PA0#8C#>vS8eh;e_19^g@g#Z8m07*qo IM6N<$f}%v*wg3PC literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Firefox.png b/wp-content/plugins/wp-statistics/assets/images/Firefox.png new file mode 100644 index 0000000000000000000000000000000000000000..ab620df22c46cf33781a020ee6dfe8dba1e15c0d GIT binary patch literal 895 zcmV-_1AzRAP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D00063P)t-s0000d z8xtQJ7vrEfnXtldj;I?M78^ZVQ#KqP8WtWH6df8CF&YaDHD-t+39>{7nKB2)bQQgI z7I+*8Zy*VGC<=~14L4nbesNm1P6UTa6?#Jzdps4TXBMP>K)I9{WEcu@J`tgH7nNZW zKpqinFAZlq6=pdSx=sW<B@~Wn6^d9LNfHZNHWVfq6AvOeY%vGtco%-g=I^l?*<lat zgbv^G`VxA%3R#;xV~zz+jsQ1n1uR+Yp*ygBH?(Rn)@mT<fEnp_74dZx>U0m@Z4cyW z58-1C%02?&?DehT^RV0Qy3XOP#@k7++efL_)z#HDn9X&m$84*`6@k5fnz#^kw-9l* z6n3-`aI#2_t+>6Y3umMgW~0-|pciSMkdu}tVU+|+hC*_JsFi;JKY04ybA)MgLs)Sh zKWBq<W&kv1IaFmtQDO4DS)h4Xd0$pDH&KLnPyi!K$%9Gnr9`!YMB9f#NIF81Z$Tj} zK>!&#J1;nnS~m2DHK|1@pjjx%pC-I~CGMdi<$597aUtMTA^3VA*@qwYiyp>U9gaU8 z=&c*>nH%bg8uWD<?y4E<lNjrW7~OFe>3kK|Vin$b676{rzF86ViV*B@5X(yst2z(t zeGc=e3e!^x*h~nhF$ljx1++W_v@`^#D+Kjp1H?iDzB&T2Dgxn80X5JoumAu6F?3Q+ zQve|m__K~mMKCZM6AStI`1tVa=G@oQ(9g}sz`V4vt*D}ph=_=Ue|~jpXkk}6I30Fd z;4=UK0Q^ZrK~xyiV*mqoRu&dkb_NLGG0+$H@ia3FNRi+G3uwsjhQ>vEdHW`mF>8Z_ zBwaf?%Y%)KjDj*MndN{w1Pu+HOtPZ<`~xH6?Q9ttwB}BCa_%ol4vDb}i*0IFXHcAJ z>fBzJZ*HEHYGKi6EX$y5I>lsVMQ&ucm9=$F&jfh})oGLFdo(0krd!%%7fm!)V$hl4 z=(cM4?6&%v;!HbRV_gO=zE;Co%eo6~s;lfv^Mtq=7!>9>v>3YB7t~JfO><NOI*d_x zVVA>H6L&Y$d3{pcAh+v@EM2m~V}ZMit286Tdt54_0*e>%i)k`3zyK2`8yhEt3jmil VKlKj+ll}kz002ovPDHLkV1nmMZj%52 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Friendica.png b/wp-content/plugins/wp-statistics/assets/images/Friendica.png new file mode 100644 index 0000000000000000000000000000000000000000..f065ea34a39ef0164adbd3555ea8f440ccedc55f GIT binary patch literal 715 zcmV;+0yO=JP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007#Nkl<ZIE{Ui zJ!q9z7{`ClIp=-f+$7hS7`zt;xhg`Y+D=8>I(4ejr4(AamEzc;Q;X=}P;hZ6bZZxN zDIMw}I!K4oFQ|w?M50M*S~c9<+a&k>I3G`kH&CRI1J7_cJU@QV^XJGfzujYX?b(%M zN6dRh!hz%iF?wPMgy=~z5L3;Qjl_@z#3;V1%JkyN_vg-?J?~alo_=|%zxwIY(iHdr zF#rM7g9b1G>^5Ir%egmmn%?0l>X^Fge@#B#xpuv9<BgxrFTGX3u!hFB%`SihNPZ76 zVtuW{gX!mt>Vn`K(up&C_wDWX-Thy0Dj&QCI~9ZmNRUsUd<h|djbJx<x;)2&-dRdJ zLsL$$b%%|uZSPhe->=yk&+?CeRZ!1IU(_rQ4^iZ_K<)By^8lTJXSh?Mp}|!(vGLyJ zMFF91XEz3RUvm5LfQ=KEp{K2tTISw>Zte-8MvTE3!CHe85inWXYy_}$XA3xVkj`R4 zeS;$8orL-k!mG!<a#KJoy}87n#ozRuqS7EJRVf6?5s`fWwSrsVhtGD2<^sk579<<< z?!|fTEPPJ?*bM5c{SCVP1iA?c$ON)6Q$C>{U_S%dt1?1ewg4xPL#Uho-v0*>Z7Ua$ zh7T__JRA*hS*v9v@@RXWg(D742^E8i0R%UdOM$g$6vP5ML+-8)SU-Ll4yU~sg~ivQ zo7beKHL)acE^{wNqEO&tKqeq%&e2}Zvwp*1QAxf56iErK8jL1D$YO<=jGejjd;Rr| zZ+6M&E!m90<<f35Mq&u<Zw!GD0zrj{C1ulW{d|*h<&PTz7SOA2zu9@`;H;Ug%1VEH x)L}S%l1{E@il}NEk}4Q08k$M7wtNft<X>`IOr1XfsapU5002ovPDHLkV1fZaO+f$v literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Ipad.png b/wp-content/plugins/wp-statistics/assets/images/Ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..f479d51a8c8cec68e95a0dec2e3e8ce03c1b6947 GIT binary patch literal 727 zcmV;|0x127P)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0004NP)t-s0000% zLP9AiDLXqmWo2bfPEKrWY?YOjl$4aErKPd4vAMaq$;rtkCMF~#BsMlSC@3gCK0Z-V zQ79-VM@L6fQ&TxPIa5<pIyyRJWMo7{M2ClmczAe>jErDlU}a@xczAe^kB?wrV2X;0 zWMpKbqM~MIW}%^>ZEbC_v9TK)8*XlH3=9muzP@vFbG*E~v9Yno$H&IT#&U9UZEbBN zBqVfnbN~PV7Z(=?1_nn+Ni#Ase|vpzadTc?UQkg{K0!e~J31sKCJ_=74h{|h0Reu1 zd~9uRXJ=++WMp7qV^&vNT3T62OieB?FDNJ|9v>eA1O@5V%(lkMsJy_swYb%>sI{x6 ztk9*YrKR7&pO&1Mjg^$Ww3Divil>;0h>418hKakdhq0)Izp;Oie|vRzd##3gmxXxJ z#CKP4a*mR5c8PIxcx=9PWN>m}SXy6JRaHz*OGZXUH9kOJLq9DzIypHxARr(OoQ=o; z001|1QchC<{{G~prJQSKRzWlj{q*zj?Cb03+|SI)$-u0np_`M8e0zFwab!|WN;^0$ zDJ3K%9u*Z45D1z2B8vb30OUzTK~xyiEznb&LqQA%;H|l~Z8LLbj!|oEtG0fAXHJ`| zFYiU3Bz?W|?{BZq&mNok(6c-@Jz|k@E#YLn+p6m*DT~3s7@0Yzu*fBGL<of5pQMCs zkHQ9uzkU@mx%8W49p0g^JEZ=6$4X*U2)D<ND4b4c<!I&lhQH;}n2$|$7(p@eB9OQR z4SE@@0Ko(Yq~gEU?_scIv>y5VL$#sk$i?75ONA7qrtq)ItunY61vy*4y8pN%uw?E& z1)tB&u)<veESTT`mJI;TwrRo|&^$2dbo>0>)6eX7m-nRihYnmPEE8D)HTeJl002ov JPDHLkV1f#2Ieq{D literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/MSIE.png b/wp-content/plugins/wp-statistics/assets/images/MSIE.png new file mode 100644 index 0000000000000000000000000000000000000000..11cddd034842e1e64342131c9035689601f8fb3a GIT binary patch literal 855 zcmV-d1E~CoP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0005tP)t-s00001 zWY7*%p!l^i_{~NEWY7#%rVLf4_?0>gRi^m2F}AB-_^vi_nr`^MHvneV1z*7lTC}j9 zO!&t@__{KidusT{Nch1>_`68?&qDaDLB5t}Lwuz8u}AlnED~qB0A|(%V8sequntq8 z;*v`EtVj5hGy!GO{M;M(wnmAFVED8~|L6et%s~I>0RQL!p~&(&x7{_S(|D@V8g0%G zQlRt9M@rf7%GT(f%jUz-<v_;eOrYI*t=z4@+KQ^rM1j2wS*;IPsSj7B8D60G(Nyco zO!&`2^2Rwz<Mzet^rq1Aoy762*znxt@44acg4gcV;OvIH>_W}yhs5cewCH=t=cLf) zN5<u9vgLcL<+04;r?}&}$>N>D;GVGHg}L8Ix7=!&+&Hq?Os?5)q1k1o*ixI<VW8Gu zkJgy2(i3aZ5^K>npU|4H&OMsW>Ez3KoXRhk$}W`2XOPHUmB%iW$3KzBN{Yv%v&CeT z!$^O^F?PZ!hQJ?hz$SCQ2VK2kjJhg%x+Z?P2wb^Tm$xx-v?6q}dy%kXgRmcDtjWHq zSc{?%Q=%D8pFm}u#l@Q|S(P17lo3pkc!-SJ#CdFbW4OIvv9Ma!&s6!%OV7PZ@5n~@ z!#eTCH~5|})~YuD0000mbW%=J03hJRd~k4JBp?y?^6cZ_;NaNS)X&MuySll!vaF<| zprD|jnvI5FTS`1QFD3~HBSCOQ0002?Nkl<Z7}H~b11=U}K4wiQhf#sQ$BkQtkwF&1 zSI;S#YStZ}na!#S=ChhiaCI&43$%zakp`=;o9RBMGSAM+!Yb5+5hx%(-E3Y*r+sv+ zT~>9HB2a+W&0|V`qor@0ePLge00V>04EJf1CRQ068<)2A+B7ieYnaV8o$QifU|`@A z6lv4KpeO0k+U3%m?;Vm`T-%f`$e=q*sJ^1T%qY<?*{CS3Mu~xCu9jnJxsjoDu(e@| zts^Icm<R*AlWkapxu<zRf)g79gE%t-1DmshrN39WgEKqO6%ssL3>+$=Os1wx%A6pF hYfH_SQ{zB{0swn;IV<GagOLCL002ovPDHLkV1oRmw#5Jd literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Opera Next.png b/wp-content/plugins/wp-statistics/assets/images/Opera Next.png new file mode 100644 index 0000000000000000000000000000000000000000..d1180fda587c0065f1d620fe71e718db49772ca2 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47)1hnLR^8|W$f%rq@{rjAehh2 zzL<dlf?C<wvbnkASXh=aGD2h_<P2u!>CDUvn3(1>GEQS>pTf>QiJiS!QnHVoy-!kd zt%}MrP0htd#*^jcmjd-NGixz188R`gVrO5$!LgK$Z6g=gCsENoJUo+`nSmDll#{<H zBy?Ut;Qz%-ciY<jWMm!p_4{pU{oBxRv#RPLdHJUzBD+LH){2N6;OAe-&%d3Mb0HfW z&;j$AnEszQ^?&!?|LZosS-$-B!bSflO#D?_|EI9<epcqaxVZmO(f<O2zXt^T_4NAd z;P63T|GS39Lsiwy%F1h$l-`Ppz7i36E+TSYSa^$|;57k(lYD%~d3ZV*8Rx7u(gS)` zxg^LhnBn^sWA2l?SFP+$jPX#D5fi+6W&i$Nt5+_aJ)^Cztkl?8NApX@kF!AKXFXjU zLnJQi_FSEID1gV6IXLEc?D{Qpx9!-yd-tFJ^%EF=KYj9M4GYKq&+>)89(Gw@?QmH< zG3`|C%XJl7b@#?eu09%jrM~EE#INAMeU}!8y^}ubyxsmp8{?s$DVxgs7hUpH$!WO3 zQyOt7CHe3U)xzcL)Oa>qgoavkR;L+Ho{=;&GXBW9O%`)!E!(MJX#d2t>f4IQ-#VSS zft%9L#IMWz#Qb1xr_le!z3s(;71f$kN*^*ReL13C6>0zKkts`hlO4Nok7bSHjzuha c6B?X8bG|c^3QCm~sRTv2r>mdKI;Vst0RCy?ga7~l literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Opera.png b/wp-content/plugins/wp-statistics/assets/images/Opera.png new file mode 100644 index 0000000000000000000000000000000000000000..d1180fda587c0065f1d620fe71e718db49772ca2 GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47)1hnLR^8|W$f%rq@{rjAehh2 zzL<dlf?C<wvbnkASXh=aGD2h_<P2u!>CDUvn3(1>GEQS>pTf>QiJiS!QnHVoy-!kd zt%}MrP0htd#*^jcmjd-NGixz188R`gVrO5$!LgK$Z6g=gCsENoJUo+`nSmDll#{<H zBy?Ut;Qz%-ciY<jWMm!p_4{pU{oBxRv#RPLdHJUzBD+LH){2N6;OAe-&%d3Mb0HfW z&;j$AnEszQ^?&!?|LZosS-$-B!bSflO#D?_|EI9<epcqaxVZmO(f<O2zXt^T_4NAd z;P63T|GS39Lsiwy%F1h$l-`Ppz7i36E+TSYSa^$|;57k(lYD%~d3ZV*8Rx7u(gS)` zxg^LhnBn^sWA2l?SFP+$jPX#D5fi+6W&i$Nt5+_aJ)^Cztkl?8NApX@kF!AKXFXjU zLnJQi_FSEID1gV6IXLEc?D{Qpx9!-yd-tFJ^%EF=KYj9M4GYKq&+>)89(Gw@?QmH< zG3`|C%XJl7b@#?eu09%jrM~EE#INAMeU}!8y^}ubyxsmp8{?s$DVxgs7hUpH$!WO3 zQyOt7CHe3U)xzcL)Oa>qgoavkR;L+Ho{=;&GXBW9O%`)!E!(MJX#d2t>f4IQ-#VSS zft%9L#IMWz#Qb1xr_le!z3s(;71f$kN*^*ReL13C6>0zKkts`hlO4Nok7bSHjzuha c6B?X8bG|c^3QCm~sRTv2r>mdKI;Vst0RCy?ga7~l literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/Safari.png b/wp-content/plugins/wp-statistics/assets/images/Safari.png new file mode 100644 index 0000000000000000000000000000000000000000..25df14e3265411f205e0fdcb0ac0e66442909edc GIT binary patch literal 796 zcmV+%1LOROP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0005JP)t-s00001 z0RaF200000Zf$MF#l;d669@<hR8&-EW@Z{18f0W-a&mHMXlX`9Mk6F8IXpa|prBM# zR9RVB#>U24T3RM1CWnWI9339MzP?~!U@$Q;#>U1N85uG%GPJX_4h{|%7#LPoR!d7u zVq#(<A|enF5IsFTa&mGrGBZ9tK1R3aj*gCriHUV}b-&x@+v4RurQ3L#(S57TH<iqh zqQ{V+!7PEikDR(?g|@D*uauOOe0+R)cz9)HWm;TZQBzY&t>?GR=0Kw6k;UVF!ryql z-(|et(%Rmpx!yms-Il=IOOx8s*4Z+Y*sZkJdbQSGtJPbp)i|itI-=8kp3-ri(m<Zl zzsb><rqNZV(Z|iujH1xU%+HUn&t#v^WR}jFx6Cw|%rKJ4P@l-h$H!x!#hazXV~@i~ zgTi=}!E2zvIfKAGh`daMyt})*wzs!siMCvnwMcWcbBwd6tg%aeu|9CIdyTL|da!Sa zuU~(!d6=z+lC3Ilt(&8&fQ_h!lc%7grj3`TnxCb9hMQq`nwXfFL1~wNg_D1TkadEM zl7xtXfq{5>dW>mlU|?WMN=mL%G`~w7L|{|^0000hbW%=J01yQk{qc5DGbal6^6l*E z>EGMV%E-va#KF6{wX(5~i-vV>WmZf^LN6xA5<z|d0087kL_t&-(_;Vw4s}ij6rjQ? zDI>1|=W>eV>)6=ZSc_{x)wAk$TBMs=bg}Sig7{p5x(zXr{-$PTt$IRSKmjG)#!w?8 z&#a36l4d()pn$M-VMaojQ|+X->M9*k1_maUma@v6_>Rdvah8@%+zbqiw)N%3#@-R# zfyw4|rS?n=OgvV3ndXT#0q(&`xmJ8YGo;$HP11@?Ttd9UjdkRJ0;+n^Q7MLoK7QIk zu@lvR0!-4q9&Xy&&W^6W6J)_IWfrqbHPF{LC~%Nqgt(nif!{%|&t5<g%!epqXJcb$ a1~UQ9uP_QzF<No}0000<MNUMnLSTZtly^D+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/TRAVOD-logo.png b/wp-content/plugins/wp-statistics/assets/images/TRAVOD-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1a07b2ed5f7b4fce6c258667f945939565ad2516 GIT binary patch literal 8832 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ask.png b/wp-content/plugins/wp-statistics/assets/images/ask.png new file mode 100644 index 0000000000000000000000000000000000000000..990213ebb111eca4a0bb9a64435ef989bc9a8701 GIT binary patch literal 358 zcmV-s0h#`ZP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0001!P)t-s|NsBb z00Gbj2l&|8;$~;xRagG{`qn2X(-Rc?>g)O6;PuPQ^1Hn9x4G?|p6P~(-A73O{r&y? z{Qma$_}bg|)z|mb)$_r^>5Pu&eShV2b>LiG(GCy#`ug_u_3rEI`sU{J#>n%%zVWfM z@UgP+udwc>sP3bs>XDP<Yi!<7QrbN~*f25IEics|A=Din)EgaNxlIuO0053jL_t&- z(~XWt7K1Pl#paJ~Fx?P3r1zftpDu>vJ+^2ktwghNL>P*Umf24WsR6jJc)c2Q(Xwm( zodeD21{?t}M}R#WBp^3XvaJt{im0?b*na%yDOZ3Xs(~&Jbd-qVjz>z=fXl#B$=>g- zyd$CrDnxRVx(CN(NtI@dxYd91GF<fL>`ddH@U6|{3*mYP6CtcnssI2007*qoM6N<$ Ef|U2U5dZ)H literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/baidu.png b/wp-content/plugins/wp-statistics/assets/images/baidu.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e037e725fdc74d3aaf32214f65b52a62f3b7f8 GIT binary patch literal 289 zcmV++0p9+JP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0001KP)t-sDKg>z z|Nrsw{YOvb?e6{5*7?Q9_oAlqo}%((Yw2HR=`T0p{Qdv;`2OPK``zFAy}$OXuk(qH z?tFsnc6;nqT<1|)=jiGD&CmF`yY;iT^rWcrn4Iy3i|%iB>sw;zOjPDQMdUU<<8YFJ z*#H0lb4f%&R2b7`%|{NyFboCJv8pAxxAc1dLk3W21deC<0P?f1*d)-UzPOIn4+2jI zrxi?bC-&e3j>LAdYVrs7g#p_9@WmyACn>wkO$}p)>TH`gXcJN=D@Fs%^}3=oxrY)c nkxBvo4=SK<!$OpkP3-yrOt=H?<+iqA00000NkvXXu0mjf{S%OZ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/bing.png b/wp-content/plugins/wp-statistics/assets/images/bing.png new file mode 100644 index 0000000000000000000000000000000000000000..31955faf4b3ee90c01a125d693c56c9ca24e62aa GIT binary patch literal 483 zcmV<90UZ8`P)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0002VP)t-sCw8|Q zT%8+Pq#RtQAZeu`Yo{Dps3B~qA84ch|NkCdtuczwE`-Y+TdW~$s4$1kEP}%%Z?z$1 zvL9iv{QdqWa=I;m$RcX8A!x83VXh!&s~umd99^gxSe*9x{M6#^D}2ROjK3&#zbALP zKzg(tUZwB!`QqyH*yHZ5%;mVw<dCz}PM6Yqqs&Z^%wCekDR{ywfWaz!!AXU_Dto>u zdcGuVxFTq^LwT<tX09J%s~TCJ@b&t>(Bihr-*KA5MuWRnhq+37ujE0W_W%F@33O6U zQ~VXO{ImSJx2s#(@reKc0KiE^K~xyiRmW#j!ax9o;Z4A@c#3zqOVt#T0MdK4|NkH5 zjWY^7A9nVI(|kC&x^-}a`QyJint-@FBY;&~kfQx(g|%3a3o#mrUu%?pNxr1CGx2@D zgvkxr9Tvr~`#Q;U138mSck$;kuF|YClaL*$`|*-2;!N8>Xo9|;22~YIbrzTq`%U;k z4#wkw=2y7c<FHlr_gjzbz3&pWJs?pks*lgsv5u5V(C|DjN}jA%WN!m*>w*jC`u>dT Z`~c@47kQsJHdz1w002ovPDHLkV1j!K=p_IE literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/clearch.png b/wp-content/plugins/wp-statistics/assets/images/clearch.png new file mode 100644 index 0000000000000000000000000000000000000000..8df72b4f0723a1576ee5e87e051c4e8f35e104e6 GIT binary patch literal 496 zcmV<M0T2F(P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T<mc!T}X1N`L?W02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;Eegmrwuz0bxl*K~y+TWBC97KSh{fO|fd)$!<eC2690~ zl(*obY`K*{!x*7Lq=T|xHP3~)Dg{t3d7vgtv3qr?p$U{rI>^oSU~i6;Te-5*Lli1R zI*4{RlI%~AUo^iyo&zdGI*9VtRhpKeGGl*zJquKbbdcbwt2-@SWfDb(Bzf!U%t%w8 z3i8gsfB$4>&Ya1*YDzs1R2mF`$q0YcC-|Gl&Mh=ubpO)6=9@P!DfRc)3)IxqXvW9K za}*aBi_PgQ<%KFmfGJ%i5|i61gy&DH)Cdg?WiBmE;$2W?vt<5^&bFyN)#0_ZwOP&0 z%|#Uz6<#2Ds5UTQ1o;^x*akG9zpKh%T6eM7{Q7#1^71O*p4zm9E0@nJYH4XnYieqm zQdwD<iEaQ^(A!%m)KXO-Syfe)0knO0b#?U<pf`>I`9?$;fDH2T@@(>RiULAHl7);J m(pc^7fw6=wixQ9jGXMasI@%$Pi0iZf0000<MNUMnLSTXi5YEK_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/duckduckgo.png b/wp-content/plugins/wp-statistics/assets/images/duckduckgo.png new file mode 100644 index 0000000000000000000000000000000000000000..59c3d0e2502106d9fa2cfd074bdc3abf246ca269 GIT binary patch literal 438 zcmV;n0ZIOeP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0002SP)t-s|Nj5Q z7y#rq0M8--^Y{C}6aWo!y8qY!=sN(~E&$9Q0QLF%@bdTIGXUK&00000{`&U(^z!=Z z=Je9a|J(rn)Byd`0QtQD`TG0r^!nD`?7Yt9WTevn@uljQf#iB!|KI@p$pHDb0QIE+ z=y(9;YyjL{0Nzyq)h7V{{OtVj>+s{@=G@=^`Q7!wvGT5++?|#G>VD^rc>C3A?Sp0N za!lfEOwdw9$SoPyJr?`G0QRo{_NxHzlmPFN0M$kS*gOEtCjfjp(m4PC0INwvK~xyi zHO$o-f?y1Q;r*hZfP&H?U3Pch|4qpzzGwTMZJ<n5s15gBqQKIYF|@sPi-7F87-V;T zXo3txl2(0$+ijeAe>On%%=-=oUg{wXyhD3-)yvcS|74=7yEKmUD+~dRg<2%s$_hp_ zn?{mY&o{?$pkde;7T16P!$KEIv6ekV2<b_fTd`^AW+uXso&=12isHo>g9|;;&aA@- gC|eApQ|Cwd0{mhP_YmciQUCw|07*qoM6N<$g2`6g5&!@I literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/000.png b/wp-content/plugins/wp-statistics/assets/images/flags/000.png new file mode 100644 index 0000000000000000000000000000000000000000..d640c19f79f42cf1bbb43ac1a060979c1f27f826 GIT binary patch literal 484 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`!j8!i<;h*8KqrN|v}rlmzFem6RtI zr7{F0X6BXX`MHKDlo{)p>KXbyxA@7x!077f;uvD#pS*xAfjLQ0VVZ(q^OuG%MjdQt z?7q*J;km?Z<iHraDCPCs|Bk`_|F*BV`}zKkr04bh@09;<z8>Qq$b3j)uLARwiL95y zV}8EBu;KgvXPf>1*Z=zW+n!_2&fnkapBzd4pZt8jySanpVTSGJ4kz#`1nhtH>Hi|v z=LgwrYrntU@B7&95Sxnbt{?WL&onpmGEVmUQ=Vb@0c22u^O@{2VY3A}pV$6h>8<zI zKe9&f&D6i)@lB@9F~T-aRbpg0l1&-fa%b`XY0qTac}(zyX^CkB?}vF+Ts^w4zc(Fb zYH`e&VX-M{4cm^d^6bgoyY@cNU`Z5^R_j|Mwwlo|w*8>Q5<xZxu$mc+n@%(-ytz>J zVZWt`V533D+beYfuDl%0Uz&IxuqWv%n5jcT$AH;TUEuSC4#z5oDosWn9){0O+YO6& SjSGRH&fw|l=d#Wzp$Pz~&%r(b literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AD.png b/wp-content/plugins/wp-statistics/assets/images/flags/AD.png new file mode 100644 index 0000000000000000000000000000000000000000..9031e278eed774bfb49a347b15231689734bf56f GIT binary patch literal 540 zcmV+%0^|LOP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-qDe$SRCwB?lh1C`KoEz&wb!mlD5=C>iGq--f~b(_3-rPpaO2hB1>l4@apeh8 zBo1(bfB+#%Qpa&r?{2(19PGw6oTAQU5A)kkGryTpBEm&N0V!~~c{d3MEHyBC`s~#S zfCN=jBjNSS=RNi8$^L(YYwup%(7@39z~e`^kWN`}*b^s*yKPdyjXwemH4wX1pjbL) zr)8~C0FzqT{Hi7`EV{Y_t^$ZPfHf=TxnaJrwE!Xbg0tlg5@H718Il!im_!kkt+g7! z7{h5+vdA5Rpp@|Ac$e_uCTj4F*~5DbvPBCJ!Ih>3l*TgonlaB^T|p$wr)ONxjzN9m z_sJ1kpTD<&(GZ)c4xlWFB25VAJqx6oTwAzuAMdvygceX$7+<vjYb-h)_5cS*Z~1li zfZ$+n?+w%Npq)__Fuvn~btQ2kjr;W!bZWV?|9<VfoF`EbJf-b;u(FPDNl24;?ZLl` zsnVna5S&}B0WOFq&%O|X0u)gsjK@U}@TZv4+oWcl6)*yB1KS(kLIM0#K-|<DZwT;! eQx`qwzXJe0k-`+8vtd#I0000<MNUMnLSTYRsN`n= literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AE.png b/wp-content/plugins/wp-statistics/assets/images/flags/AE.png new file mode 100644 index 0000000000000000000000000000000000000000..260700c0c1cf12a6bd355a2787b48d6cd23c9e13 GIT binary patch literal 645 zcmV;00($+4P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;3rR#lRCwB?lgmyNQ4of|)7>*7s2xO9oCynHf`SW-#CTb#OBW{c5XPtQ4SWIP z-o&_cr%@Kh7%wcu2oXjRhM9>7b8G0!nLc$~FyWH0A=IW)smhnC%Ks~CEk_9jWPuZ% ze3;O{rU&?UpFLVTa75DW?05&Zryo8&>j6DR3|DiP_OE6QgMJPNhvnuff&!&bC@hwl z@;pF~2e?|=w31CW!X}82aWhN~jB(k&018A5AIslK(ij|<zHT2aZ2;E;NVKLN1=Pb9 z-Ch?{h1*nupS)O{Lo5t-`#c!A#q;^Mw8AEia!9n^z78Nt64t{ejjbAEeZ#D^e)FYT zB2_*;#|QZOw@UHfEED~s)VJ!ahfSg+*#n3piW?=0wKA?4%FPwdoyxPNH>rhnhRzI8 z4Js(3`Bkq{+$a&n(Jmm4B2q~aNom9(RykZbKY~XFV}xtDF+4XzBaRT$CY6*p+6zcx zQZa~yAGJS>_fIgp`kwoRNv1B|;PcWOMo*8k*r*^@NW~B*F#y|7j1s#1V<<1nOl6ir zZ=QR@cbKnyL#*X`?j|2r7nolDgz~b82uYOe0(4uGwU(@#0mtRl!aGKK^K^N6j2KEm zz{|PUJAJVh-PSt*ZN(C-tnU-j<E1BnbSeitx1;?1a#ny3<bach^g;lX72tM^<Q@`W f0IiN{=l=r$ot6L-G<qUx00000NkvXXu0mjfOj-<g literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AF.png b/wp-content/plugins/wp-statistics/assets/images/flags/AF.png new file mode 100644 index 0000000000000000000000000000000000000000..484c99101512e6fbe7da9659f7ebc6d9cbdd87f9 GIT binary patch literal 534 zcmV+x0_pvUP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-oJmAMRCwB?ld*~vK@f(&x|!*l-MzgD<OC6Y24O)k+*dFVx!lkP5-z&XH!xB# z5Cj7wlNCX@M0Oo!XV>ZOo#`^TvFBDzmMbVa_=~Uq?y3@1<u)OJ0Z#h!knq4J1&aB6 z{^M`;H4_}y?lP3;=MVlNynXTNZVF7gu46Wv?THyV^net2bnmRUEGWvSt1keP6iB@H ztk-K+t5pPajPM%zhYH_*`l#I*7x-=mkfZ?4Im)u6EX!EraOgM(1pjMG*-WE$Bu6;! zqdS_WVYysVRTY1_(w$97izx&}O-5<!2vC8>xqZN5v7oA|STuh63^_eTH(Ru8`MP=& zwIV+u+sU;X0BbF6+Y&;Esr44x78#AudP~p{vkfh_X$A+@T9PCogb;7pTwIbqd5oa= z4<89HA4aVW9i6iSz&S^r=ZHuwN}Z>9_a1;_6k*Up2)O3PA9(LE#$b%OF`@?P=Ri<Q zk_`Y={BG!iS5@k|-W#OP1Z)pDMybCq|2xhC6u^C8df+b9z?A?=zeve}fDZ6-+jagu Y0NS|Dp3mII=>Px#07*qoM6N<$f?Mm~(EtDd literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AG.png b/wp-content/plugins/wp-statistics/assets/images/flags/AG.png new file mode 100644 index 0000000000000000000000000000000000000000..55dc94bd2c1f4e6a35a5f343d8088d4dc2ec0275 GIT binary patch literal 535 zcmV+y0_gpTP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-ok>JNRCwB?lfP>eK@`V7v$H!{Jj0@3nj==Cogy|V(pZSSh`ntZ|CThtM(hP` zEo>CDvGGS^A;HrmhzfV?ZNQzGo%byExFdKLXTHrV=Dp8*^JczARXL3e;DEEUxQYUB zoCDR-oqIq3nWnQgOEi4;WFrR#ni6Z*t}f5Y01p(4krnVCJ^~DKz-o+W(~!oKMPq^N zjIw?=(7wy@?=5BqvFFdBF#^~eAbF3}Q)D__jGds|j{JUOD7QMgks}^tm>i6?B<}&p z0YckSj3>yn?u!9;qeFf`+|NkIg1g)hKDqu_`<gl6*5Qcw<ui3%&#&;{y5oL1;OR?c zZKvheH(~c}0HCTWilSHm+O|bi5s`jT7M{NfG~0>W4|5K_3XgXKBK>$>*O5{>39#1A z0oK6Ht(@Tn!|NB3!|%$)O&CvPIly~QS(X^nKe!0&J&IThDM6OOl}i~#Vdy##5&VfI zhJbSp=l=eT*7k9K)PtPs0U?ArAgC%$)BKMWf&nUE2&}JI+yF-gurnjs6#)qd=CpSH ZGXNu~!aYoc&D{V1002ovPDHLkV1j&k<yrs$ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AI.png b/wp-content/plugins/wp-statistics/assets/images/flags/AI.png new file mode 100644 index 0000000000000000000000000000000000000000..fc2c726d3b470393de97c6d002f3f1cd40b2f7e4 GIT binary patch literal 609 zcmV-n0-pVeP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-=Sf6CRCwB?lTB+=K^TRf$=pnCKBPkGM@R)%x)M{wm1{*P2yRq#S8=18qJsD% z1iLI)+!{qI)kRlkr_xdslp-{UC8lUoXp-yA&7J!(E|QXfx`;h6%<6rZIp;mX7{gv9 z00rdw_bAf9FAEr3nR~JI!L_M1Jnp*hdA`5I+D4n{b4R)LXbp&g#2<u8<<3D1$i7*3 zxqhLD7$3)fwaNJtMJ`=D$#Pv&Dmj4ZKNf@#7-Lvn-2lj1fShiw5LA93TTR@0gG{YP z+fFk{#O&7s`FsvbB}plX({_<kqICoyEr7WLXSi|p7{Sj5>g6Kg)D&qYdHt?VvsvTe z>=hF3Cdv{7=>jt|Pw{;XfCVsFkUV>`%ojJwePbvuRryAaYsV!!I~@+?ExMl<NKBmK z@R2;*+b*8x4*)kGyd?-MS}l*qB!G_q%<o1Obg+$&2pwpBr&`@2nG6SjZnuLm8R9tV zo3(3N&;5G~Rk9OT3D)b_jSOKJ5=GuHKqIA19Md0W2x6GKU53l2A#Fi<iEJ1XMMGck zeIMKIMf6ws5iEX!R1%sVv7N&AhX7h@lrkt~{d?~^LGLI<92>MAq@az7aGcuzR6z@1 v3@8HoMjUp4x&UOqNOD9#1Zc6>I{zL3#LLd+f^S~>00000NkvXXu0mjf@|gKm literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AL.png b/wp-content/plugins/wp-statistics/assets/images/flags/AL.png new file mode 100644 index 0000000000000000000000000000000000000000..68b61445a16ae71403ea8d6d72438e3e1fa8a4d7 GIT binary patch literal 535 zcmV+y0_gpTP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-ok>JNRCwB?ld*0SK@f(&+1)$)I6Dz3D6r^hAczW{fhr9RZ%D&4@Cb=SK@|yz zgd!9xXUD$X+nu5C5llytzZtDo|G%@NZ^X=ahy<vC*;wzQ1gryacyaRn@;<LGK7D)= zfYwT3a{Ti4!teDbz@J|hKxB80r)L0d0K5$Yx>})EOA^NSlKD{z*$e@k2+zD{;R90y zck~z=1^^!ba*TxQ4(&SBjL+K}PKU_MIRxlbc~RATXlAGgcu$TIfB=yCp6Y4|-8Dsx zp<i>8B44#&W-NSQs3w$HP!Y^_p4)(ayQMxq$GVQK89z52$Kv_2U6V21HFGYtuxaO1 z;^5$b-n)MT=FVZNOn`+5ze=VxP=R&HJavx7KuwW6&?o&H5c>#Kg{d+X;kg9XUis!6 z8F=jjk3?w9NM^{8iMt_=9i)hb03t--&16bIIP!sF#@l*A26{6@1T&*gdqa#VLen61 zg^Y+L;8oQEu))B<$;gN4&NBw2tj5`Lc^?>)0EfT=nBUR70xo1Ex85iCKUIJv4_)Wq Z0{~{d(?(V)I#~b!002ovPDHLkV1kI;-5dY_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AM.png b/wp-content/plugins/wp-statistics/assets/images/flags/AM.png new file mode 100644 index 0000000000000000000000000000000000000000..5f7dc7b327a150c7ad1eaf96c90b976200849030 GIT binary patch literal 414 zcmV;P0b%}$P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-BuPX;RCwB?ld(<$K@f(&$u67(31C5kuV9R|PheqV;}crgSnCtmYHV#tq@e)e zOzw7%-Lbe+4nuL^-)uAU&o?tWqN@By0<?kS>fJ{k__9EMdUHEFr26>beq@2JhCp(D z)(}}x6!-cD(6xZkqCnG>Fkfs(Ypv0m%*hZf3IJmPf^)>>inv-eqcDcxasVvARdUTJ z3|LA|eJLWaYe|D}#4Py)o=Sr(%Xy#7S*ETLLBE&K62BqH@*Fjm7<FgQTk`;l5LvHl zEj(V{aXM^6ks(#A)bjrNX{*D>!gKNbL*N{u78Us|q`QlkfEvl1+Yor~feunGrGa9V zQyTbnjJ!-1hkQmaKpz+by*-mtU@CyA4$16k5CAX#J?HNM0Fc>vZD>0AZvX%Q07*qo IM6N<$f(FQ@PXGV_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AN.png b/wp-content/plugins/wp-statistics/assets/images/flags/AN.png new file mode 100644 index 0000000000000000000000000000000000000000..163d334496bb9f6b8cc19d39c17fb69645770f8c GIT binary patch literal 477 zcmV<30V4j1P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-V@X6oRCwB?lfg;@F%(5lI^)<%i!E-tso=t;LWO>U3&n;1;77U9A8;*h{DvY5 zx)NuwAQmc9XRMR7nZ!k{?M&;U^g<xXeeWhOxldSYSp@}Fga90Ct<DqghsUI;1i*2M z)NgO*lZ9|yz+0s3?e9&G_`gce1)Pyi5r_<<g8(M)BLrHT3~$G(jsVKdlgoIgQRAbZ zWP-LERRCT){mlMWwS?aZxw}5A6aW&b==CN2SP{mGR<lkRDIT7>+&^{+BSq_=P8ch~ zXdIhJ1%L~Xd?!4=q<qE-3WD<>oGbR?>Wk4}2*74#oi%4T{YI%2+E@%=jKvts>CtXx zt_H&~4`^eNO8tqKec!iv1RK@N$iw%23zS^|Ddhr(2n+%Q6c)I3lH&rXnd?k{*c(?U z0Bh#xNsbGkwWi%}X9C`$D6{V6_*pBLfErL-vJE5<3c&fbv$Lc?3Jk@n?ff$Uc|FXv TVF0UW00000NkvXXu0mjf_HV;! literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AO.png b/wp-content/plugins/wp-statistics/assets/images/flags/AO.png new file mode 100644 index 0000000000000000000000000000000000000000..d4fbe001270b8bba6279914146c5575c4960279f GIT binary patch literal 424 zcmV;Z0ayNsP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004RNkl<Zc-muR zpb#)pY(TZSMWv#cxG6cBAH9BknsK(L_x1o2Qx67)|2Q0kOPqmW!<o}N7-u;;Z}->L z^T27%Kd62zW^BBCc?aW6bF1yXDk|6w09wwU_LJe)HD-qIM_4cn*?i~D4#w%)dfR=Z zq_G;n?fIMG&s!!2HnqPDKhLr-{JPGBBERMNvmJ~XGP2tZxp^@RP?Ke1_%85|;nn+p z47~rC7&HU^GaR0V>V)%OzwBV-=H}l1_wQc}0~F<%7&_ZH82TsvWZ+<DWKdIMVwgGi z7m6BYX67A?oSdB7|NQ>#0r4^;10&;qaJbuAvM~Gy24Gb&JHw|>{~1#9zcYOO0#frI z9uzFBtUDOl*x0uJh8lnjY%Ew9JX~2A?%e;!aQpT@26<UVhGlDhLuDDk*0F*NU}0g| z{^!ph+|dXHq9Tk8Z{7m!|Bny@>V+5pWD_(12iO5}OBfKVl4-zg$}<zC1^@sFP<BXU S#%2)!0000<MNUMnLSTYFq`%hy literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AQ.png b/wp-content/plugins/wp-statistics/assets/images/flags/AQ.png new file mode 100644 index 0000000000000000000000000000000000000000..d62f32c36fbdc75151bdd56fdc7d1fc3318e79b8 GIT binary patch literal 586 zcmV-Q0=4~#P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-&`Cr=RCwB?ld*0SK@f(&-94Xee7VR146%b`WRN0?G*Hmd@B%b66ubjHqTm%M zXn6!EXc1BhC<w?BK_ZI5k#Y$!jxcwQZ_jr(6gCMmLCDJAY%%&j&CJfPM1<2w0WRQ8 z-+7b(kpnC~e)evEwmMET1P~FlRuqi+i}3LN^_l}zauJ#rJ(N-aWSP*a`?MN92cf0A z7t;F?15j`jxxkm*5TN1!W}M~-irs@l@=RDL7r3!<o^sKley+l`W|f`ZkhS(6+r5aY z=aQy5fYAVlv87sZxwX24V>DNmeac1Ws8y{LmueoZWuHNm5XC7r9RuJ1q-jdK)8|g( zG7s*qqNk(G>a1Tv1j1p0wG)5_h-1rE@RRk;K1M74;ipyiX)bwee+wCn;y(bR5dhI> z%>S;U<Qm4=v1bCX7Oga|KLotpnEvPqq`@#@{c|6qCZ3}m*f_>RaE#*V^N+lI(?tZT zevx~(uX3SU2H?foSAy>m{uvh=$H#yqv50`{7(|3l5R!}F?rUzY)EGnw?M|Op?*l5O z0wNR7Z$Ogg8A12ci8DWXvVq9txZHx7U2vj+MW6vJ%$bD{*inF)2Fc6`$bdwhHqO5W Y0O7*NYvSLt7XSbN07*qoM6N<$f{4ldOaK4? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AR.png b/wp-content/plugins/wp-statistics/assets/images/flags/AR.png new file mode 100644 index 0000000000000000000000000000000000000000..8acaf688ae65d658a9b4e94fc2a408a0663d30fc GIT binary patch literal 439 zcmV;o0Z9IdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-JxN4CRCwB?lRHiWF%X77$0o{>pcO(yLR2UPNN@xiO3pyR8Mp-<B`qx{;12XD z08t{O@K7LGv+H=r6fB803&keCWQ{zJf9!dv5CY3U0ZpJ&$U1Pq*Z}d_O@FXR_KV~F zt^wM4fZdIDt>C-21fXpIJ#wD+bizkEDLDmH@y~Ld;?@cy=K-_<&>}c5O!E1H{#{__ z1uZhY_pG&{0<l5tRgmN|1Q}M$*4hB{3_zA;L{U`AlDm7pUe5{Qh`I-u=&)qZvJ3zN zkfv$nnYy_{XZ@5AGE{4?V*iaX04LYCtZr_RdYN-OD&%8ve$X-v?920vU^q^YSa7+_ zO_?fsP}X~a&v7y%(2^6G29as})Ag!8k$g(v#Crx0{Y8e+DIf;6fwh{!Bj8B^x>zJ# hlOPA2T6Uek2LN$-r8is!UPS-^002ovPDHLkV1lZYtq=eJ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AS.png b/wp-content/plugins/wp-statistics/assets/images/flags/AS.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c5cd7071ef7dea4db1d2dc8bd5291265dce929 GIT binary patch literal 661 zcmV;G0&4w<P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;8%ab#RCwB?lg~?&aU92A&kyyHO_tJTOPh>IF;Vx}hAxK<4H_zfjLgIcGP>14 zI(Fy}kZxT%)va?7bm&lY=^|ksVh0bA1+%t2y6w^D#~!~O5(z>|d|y7N_xr==^M1c2 zAp|FZ1T+KwgLxb{KwSj_<KvHi{CkfKG-zXoi>kv_{S2ck%OMr;dEP$BWX};qkgy43 zk~r1O;E+xz)rS-g!^*Nx1r*2es8%h?<@y0p23-82hORak>+fXXN&+p_k8M`jDtx5F zp8-%*0NZvjj9m<44;hnQ>P&<+#wPmcn#@3VH=D1XvH9R3R;@uWo#Avk2Y?D-?b*ns z5|<k#CWk`k`59VAlc2Q%;MRAj6xOkeKS70#)HtT)93C3G)iW<vhx0<bdn^8iCwA-W zqTva#`sl8BIp7mpYac|pVhA9n0=%)>`TPYgEk0!~`<mg~Q?z79ph;ujtK;oHN3`4_ zwveSI2%$upVzGGm=2#%Gw4o^Nn5IP&+a#$mf4+_Bg$$9KQ@FtjX5|Tvy@oHigr;3* z^P5RD8ts*Un5HdmXj%}<a{ut$qLVVYR*(7I1xD{rBM&yAXfYHuNTE<59*_SPkmb1z zzyIu!IZ&yRz+g5SVCGti=#3noOcPz#dnMqUB;~*UUlLu~*(TlWGBpz6-uo932?zjP vK-)39Py@b8fO1eI<(L8<;7BK}^REE_`&7%regd#Z00000NkvXXu0mjfX8Ilq literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AT.png b/wp-content/plugins/wp-statistics/assets/images/flags/AT.png new file mode 100644 index 0000000000000000000000000000000000000000..227589646012864241b0fa598aa9fde58b6b5950 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGKYF@2hE&{IGI_Tj zv!Q@%|Mhz<p$>u~nL*3kzL@-B=DqK6ct3-xs+Y54g1BYf3AtG+I&<gVNlQ8T{YRC_ zVwaZSB@LVf`&OHB9q4C#_WE~we{x*Bovj{^!Q?43?!}0^g>f|1*Rjr!bnxyuVKBkY z{D1!G7mJl&uJ%@OW5{Kg^!>^Ed3V02YHm@hEVo#{W^0gk_F9J3YzM02?;hB@oU!0s zDDyWt<_~4n?b+&2-flZ_r$qL>;UC5rj*d*nl}ZgA4-RoW*xSCD@9MVHpT%}x4lpQo ze)zQ2GEJhH>Dd9H9V<-u4@5CmZTHwEG@)UEU+nYyj0}8SQ$Ng#Nc;lyJcFmJpUXO@ GgeCxk-iz-5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AU.png b/wp-content/plugins/wp-statistics/assets/images/flags/AU.png new file mode 100644 index 0000000000000000000000000000000000000000..a70c6b76262316abcd78d1c0f80dd53912ad14b5 GIT binary patch literal 614 zcmV-s0-61ZP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ->`6pHRCwB?lfP?IQ545N_uZFAV%lbC6iU$wiViLfxQK%;)}bKOsaT{?k<z-Q z(&9g0orFxG)NVmq0!7rp$!z{;4Q?X%17e7%0h?H#$-D36-VP1VArT2Z@a5h!oX@$O zbHBnE!$Cp-4$#*=dkF>nwt>X<%I1%^Zj^Gh!EN^y_hbtHXPud`<J@}i?w^E0Vd01k z#Gij~xp8F}kxb$}`O3n@GejN9Rz)#7x*HZuPM&3BqlhtvVzC4ew*fg*+r}?^L)L4! zl`4nIWqw6tq-c@(JcJMefaT?901OWHp;QY%+5jtu&vWzADg5tMoJWrd#>a^{lBX{# z)N199r(2f5^ArF!Kx#;mU*F=r8{v*I+|7SN_Q#nzE!o-m(*amox=cE~9&X{p$VmF5 z@7vVtjjqGWX0I_f_b|*8i5QVcK&f>9qy^AyHVA?Mt#wz;&gR1V#6*f92xvC<o3#NR zmSv%}VS4%;S{ot}iPok=`TQG#K+|k`e*vE7;rp7!#WAwkDdy)dU<?Q$x=QQ)nh>Cr zLTgPXQy`an&Dz=vY}>+d>`=*MoYmFqIF60h2BlOu#G^u7{Q@vB5JO4}r2<^n`|n>i zX7iW;62LIf-=i0Hfr<cR+eorUKnqafpmyFH0HJW^su#u9vj6}907*qoM6N<$g8u>& AegFUf literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AW.png b/wp-content/plugins/wp-statistics/assets/images/flags/AW.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0684b233cd05178961fc74038141aedd3e1414 GIT binary patch literal 453 zcmV;$0XqJPP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-OG!jQRCwB?lf6m<Q4oc{ySs@oF$59_D+(zT3j;QSFQ9_xL--_CK8aR}Ac%;M z5D<cmAc!D>Axp$G`MLXd_gZYs7NYK&(@Ztr%pB$jtu?bq0C`|xQnSbhh89pcK56%~ zfPBuv_d`TV!qMSo-2zHVYnpbE71`slW~21a2q8dgc<BxRN)})mrb(m!#&YYH_pN;% z3X4R60->jOCKqeU#T;Q60hkuRa5UzwTF2Sg;a*i?<o<4)A@ITg01LqL0{Y{Sj;Nz# zkW7pReh28dX9|$gr5hQH-7uAT#e#+M+yvlCNx_^)N9le-g&J4N1hBn+j%}Awk(UZ! z8gn?#fYUF)WowU`-5`ja{Zl#1;KO+Z&SJoB^MchiJJTCJKRH}YHt?_82hjdc5^j6} vRDdO*oUwZVbOc~df@Ed{D8Lu9#`$vqtKfRL?0(IP00000NkvXXu0mjf!Und% literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AX.png b/wp-content/plugins/wp-statistics/assets/images/flags/AX.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe63eecfb3d1be96f4bd264fef2e7108349cfe1 GIT binary patch literal 399 zcmV;A0dW3_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00042Nkl<Zc-pOx zJxjw-6oz9<ErHV1prH;0!L1RT{Foe+P;gUPGAQEcEL0rSNvJrub=A>gM<+i(>g1q* zz&{|mSgjPd*K=-?>q)nu7am@6a-KK2hVc()n6QarLhR5r#wrK5kf2uq+?>k6cM^8F zU}9<S8uimB4f=IpYE-41GdpKNvcoPHOfKwRVXOIo+EGV=uNwV<MOj6)(b4k=-eref zRWQGO3IF&W-u{gOJuke1r)Lu0Wk(nE-=+iUbC#G1aLxF$gm&4{1>c(m5;A~2M465g z&0?7WJG$WIxdeO=-H~71RQy>&yX@!!XSIp(jW+WBIV=M2dHRw;Y3Z4SciGVe*76C8 z>unVL7A>?$EChc*8O>z!E<3uw^cry1E;Q&m!CfikT*6LNP|7YILh^W*#p_B+<={IB tyIf!qWnwNN<<K?Kgh}KQVutSD&JTV(hOwAf(Nq8c002ovPDHLkV1lHVwMzg1 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/AZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/AZ.png new file mode 100644 index 0000000000000000000000000000000000000000..8e903896dffa2e1f4abfd7baaed35f8e7208953c GIT binary patch literal 472 zcmV;}0Vn>6P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-UP(kjRCwB?lf6nqF&xEzw+UKXTLtSEf{SjhK7a~>FW}@P2)=-VPap`sfFL-D zgNu_Wg1&&On}ZJGH~qM!H_1&Cht~EM9a=pQG9>5x|2ZfBz<bYs5CDC^U~}&U2B=D4 zXlecU?Jw1@kJiQ{khRt`KR3~R&mL~?UI4NZ5V5UOu4+C@QO8}M;3P3JJV0#g073$2 z9a9Q5rBHX(gb*pTjscJWXT=jTaugSakVvJlxxvT5;SYgSl&4mFXZl+}DMkOoLqnj6 z@ttidH`ml3AIYyQQ@OZmKP{I-3DFP(P*H@p7MyFX*WEqx3ya_!mGjGvGjA;_idz26 zOzyAV%fcWvYZCSazu4J8My9bJA<tW<vkeoKCgrmUO7Kf|Z8-1HO1DjnjUnwleJR;h z3f_BSV_E{nSx5Q)`7fW*1i%n51>|}phrm++h~^-P9tG-v3I03IUjqQ%QkU`jLE#Pn O0000<MNUMnLSTaMjJ;j} literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BA.png b/wp-content/plugins/wp-statistics/assets/images/flags/BA.png new file mode 100644 index 0000000000000000000000000000000000000000..040bacfbff275f4231a6ad91c3a7150b6a06ec51 GIT binary patch literal 627 zcmV-(0*w8MP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-`AI}URCwB?lRs!vK^(_F_maNE#?VE(6j2m)ag#s?$BGCA5ewDg;G__!Xb~0v z4AsF3>Ld<s?t-GA=u%X)gB5I(f}}~B#-_zm(w9E<y?3v7=kNjvNQcrNeE2PQAHHz+ z6~-90G6JxH?ajTJk-+ab&~@kD`{nA-fSsuij9!{)9ntX(Zy&pGobfl=?l_Q|&Mk8D zS|3ySJv@8$iE{(<O@S3<{4caYDGiXafLLv*!OPbr9H&mcypOTR30SXyE`ch6oNp0U zK)Xn(0Adz^FD1ELiO&-iPW103OdRF*gC2}tix72;b|O?nASD16fae9Qto@}hv&569 z-%+8<>~b$7cXxw!B19c@BSO{jyr5m+Q!K4eTy%K*?kmq<OffWY5J&ZMCc6U@mLv2m zCY-~BWjxPs34GsYJ=ADz&_YmMa2R_yNwVV))y7FqU(A5f5tanu<NNIbuPIO_LK~*P z<r)82<m%<aB)iWuIGh1ggb4B569j>e)&?O&i)}Ww$}0CCP12e4Sa44<INTdOqcH?Q zn?Qyk+8As*hHYEX?ucQh6BLSNzD&$<<4T6~t}JIqjsO}Nh5*C?X|%#^R5$!}KUOu@ zZ@C=U-$|i-h`ym;7_9)L0J?x4Aic>hxIj$+v1XBCn-nNOimlf9-vH>o6htmLB2fSU N002ovPDHLkV1jmX3S0mH literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BB.png b/wp-content/plugins/wp-statistics/assets/images/flags/BB.png new file mode 100644 index 0000000000000000000000000000000000000000..81ed9811457774fa41c5e062f2edbe7ed766167d GIT binary patch literal 573 zcmV-D0>b@?P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-!%0LzRCwB?lfP<IQ4oi}Ip^NHi_xs0i2n+)5sQElQU;86Ha>urV4*MJYgqaU z+K82cl@Nji3lSm)Vj9V2b9YVdz31+ku{cY17po=H49v{=nBSQhF*D9$0u;dciC@G5 z@HYc`8;@WA0l<K<gUtB&=G|QN!)H%G3`~*-KD~c=B?FdXR95fbOn~UX8RRQ-fO{*~ z!5LzLiLv$dH^5Q`_z)t)VNJh(3}X*oA?{9EN=kq2-c4W?E?quH2ob<%08I!C$`b}< z1#OammQ>YkR5LoA{giVG>Tr2_1CRk!Rl~vI31wMhAw}PQ=yB(k0FmwQ!r-U^7ePJd zjH+s80Tnwx$CO7kgbeb?gVh7Jz8wRwu@-p#s(&h>H|UW2b_%HL2E(IjpbBa%FCX&x z%S9AreXUA43>3z#65E*$>Z-<PT{Ie~K{TBF;KkE*GM`iAn`nFlHUk*fQ$W+ybe$n0 zX|+Uv4%e=3PNvXJArTNk)o7X-KxhL+S1Aey;vrL@Gq(pt;ZOfSO$qIE3c*wvm3ygj zGRCd#;T&Kz-1~16fgnH+xB*;P@D@hEz5sr5NPa;;1cIFPoc|2~7OmjnOQIQz00000 LNkvXXu0mjfv61L$ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BD.png b/wp-content/plugins/wp-statistics/assets/images/flags/BD.png new file mode 100644 index 0000000000000000000000000000000000000000..4781f69b9c996082c68f44082e8b1ee4bc5a6498 GIT binary patch literal 577 zcmV-H0>1r;P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-$4Nv%RCwB?ld*0SK@f(&x!XI(iS0u|ia<eB1c@RvE|G$G0}ve*4dQV?R3Jn_ zMH-%gf|@P}1c4$DqQn7noMG?wZg(hbbdG?+%HPaNyYp$Z|NNq=oJ0boKyOwTkpm_M z$gVxUd-&ING<OdFCcL=wXw?8KK6r*}myR`O76uNA6ux&`h#)A+tGzb>D+Y+2ulZ3< z_-b=ZfSWsk&Ch{uqu3Z;o{M?D9#O|r(COt2=WBr2094K~wgqEXaC_Tx<E>JpPz$6A z*AKuI!jsD}G!RKd<s1M8z*ZGUWlr*~;Oe#`ci>Av1g}aSVDmLRJ)1IG29;?~3n(o+ z<4>I5E$F;=R7@ZJQKOJ3{JNO(;f#=(9!V`NptKe>hA&Hj+yqWlP|vv#2biR=-wgyW zG*N@MO>0(Jl{DUS&{wwBBL-GU8b$oHW>(p{Anf;)-~&zYlvUYIP}z#5tb=&r-p~*b zZoO;hJIFimaKmta7$Y+)LkLuM?hjn;NL5Lr1Oy&jNqDvat5!Me3ZntgOdSCTs<^s! z!D-J@e$RtS8IfS<tV|LZJ32CM=71+!29djiC>AjJy;JmBP{asE937q{E~hp#8c P00000NkvXXu0mjfAY<vP literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BE.png b/wp-content/plugins/wp-statistics/assets/images/flags/BE.png new file mode 100644 index 0000000000000000000000000000000000000000..eebb0c4cba3db326a4946d3397834dcfe733ccf6 GIT binary patch literal 452 zcmV;#0XzPQP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-N=ZaPRCwB?lTA*;Fc5`5*J)JxD_F4U71;FzJqxE}(+hA11Y+9-ED!><3Q3R} zJF$mFLmZb?g{6@*dY-43H#15^_|H*53QXJkoMVCS1X!%s>(5j4elv~okK6GdhUMn& zIsqomIaaGxj3%QfO>ai6WQ8D@r)Pjk0%&V3MNzQd??Z(f1JeCz^Lo)i`sxy?YXF@9 z7-Pt?j4aCnf!IiaFX~{N);Logg#sK72X?z1d7jgCMVi**WA4A29y!>`#01;zmORhH z8@GrQ)GxE{doZ6<=|Lc<stOUod*3T@5rOnD-_#tej|sHaCj>t3N)J<YgQ<@m4Sr4Z z-lLT20yzm4LPV&n4GOHaq-jc;_J&c#gQ<qYNR2VUL@OecWf>JbJjOfn-tR(hoE5MD umcZ=HT_}M!1?YB>^qB+>u<F0-{4)ShjH4TW4|u}>0000<MNUMnLSTXh7que* literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BF.png b/wp-content/plugins/wp-statistics/assets/images/flags/BF.png new file mode 100644 index 0000000000000000000000000000000000000000..c8739b08ec94abc5c819c39b742a3cb106014da6 GIT binary patch literal 445 zcmV;u0Yd(XP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-LrFwIRCwB?lf6#EFcgJ9$4OI>LIgvX&IpMCCSHW0LWq~(p;#E;89Kni1S1k- z1?te!grC@Hd>NWH4MHkyk7QZ$^*#6a+-oHwYyt%|fL6J$0t<ZjK-@p=4%VsOxw&rp zKqN&$czpD4$pV<iCxFNYwB$LGrWC_b{r1csrE14|Zx_jP0PO=5#^A;YE=m3__gjV5 z6vhDH1K2Dh7>;nsxJvM#ao|7%`>eq&Dx2oa3C=F|DMCeJt46eq;r9Fi1$3`Ycx#69 z*iK^$ZDP3VO$olUFT5bcNmb@E^0@3BB0$>maCsG*xCu5}ctVyLf+)Z(4At0r+z;Zq z?h?6k<RyVO^FYL*O5c_(5m)!XSW6Qjm^Ni89D=cSPGF^QyuZAzGmKUNG0*|FS4>WU nz5;alk@SiL1z^>t-}z?%e0`AvC2)~x00000NkvXXu0mjfh48dU literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BG.png b/wp-content/plugins/wp-statistics/assets/images/flags/BG.png new file mode 100644 index 0000000000000000000000000000000000000000..4579f08a8411232d9312201df37ee4d101c92ffb GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGpLx1ChE&{IGTGMe zh=D-se$PibiVjPrE^v%tU3Vn%#R^M4S@8u99vn+p#ikrNe9PH!kxpz~oN>{|eIIY+ zA2}1D#8~uT#p>WC2g=z((!N=(-hCpHX$rTRhOj~`gNJZ~z@e1%_a_<Fy<2Cw_F7JD zZ(_B+&i`|JSB0Lu{XC7qWbN~daW}GTSN-;^^LUjjA24}`=*34G2lU=uxW?abdv>*6 zj9<>Iz=kCn6~6-YsvTB$rSiGBF`nrOE8WrfU5=0I$j-uefyeWgGiMk)e)zc7k1wQw v%Ywa6eb)Yl^p}%nocBm!2${C-^LvJc#*v3M9a(4t^f7~{tDnm{r-UW|uUv=T literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BH.png b/wp-content/plugins/wp-statistics/assets/images/flags/BH.png new file mode 100644 index 0000000000000000000000000000000000000000..5e61b9c636f1997b7ac09aaac0523515e2eb0207 GIT binary patch literal 529 zcmV+s0`C2ZP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-mq|oHRCwB?lfi0JK@^6+b7ykPr6#d~ilyiyi0>lqT)20k3wJK+MsQQGw73vo zz)jVSP(;*iY^d5dP^7JhQIgb|xp(eyabuD;5iR}UFmPth&wu_oM^u&5K!6lDGdxd% z0Q4=;RMoEl8Un7p&Ec!p_>a4w3L<}HSl)bc&I0qJOp-8n`4Sonw2YubjYlL4isC=) z0?b>${JAW9efpbEaXatP-r#7X6ELj>G|vHy1&A?XjKM6NrGE7aQcLMSdk!U#%rMRv zqIUpTfDi&%mQn2O^L=#<-)<wuLL!w9$Dt6M9}{@*$+8T)be_d~clr6~G2I6n5F;eh z5|Ty(XOc02bCsOp(`UZjSz++zEh17Cm*o^eS>*f*RX&*{uoo||xO$(~?OWB$7%PHf zA$fs!Zia&W1G?)EIox_V`qo)cRa^*T1>RSNm`0t}%^NhYUqjLqsad2}n+nQuRAYfq z6a}452hDTbyKM$9ws1eX|C~f12+#zUf%*w|p$B}C;UuP$6ZxNrK#<d}^X~xwe`>Ug Ts6*Uc00000NkvXXu0mjf()`|L literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BI.png b/wp-content/plugins/wp-statistics/assets/images/flags/BI.png new file mode 100644 index 0000000000000000000000000000000000000000..8beac2208a8d3142d7c0544dc61c6faa7a0cd860 GIT binary patch literal 740 zcmV<A0vr8_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;YDq*vRCwB?lSyb3aTvva|CuBcleAHb)`hl86c-c`i+b=NrS4Qj(SwM~&4ZWX z!40WkaXE>o;6VgMr4$z^2=<_sTBKkVT&O}qV_U6TE5;;~naO|hd2m6*OX<6Or}y!A zyq^*g#v%oTfY`4)8hJo20K`S)bGG#s->+Q<rBJ~T{F_XHXpMN9vdtTb@7awCn3DrQ zwCmkVR&3isc)@%!x9%Wz0i{6v(oe5xAOb3EQNFQ((BegO488z}8i3jK=qhcg$Ef-9 zn7Dfvlu8h?h^($Bx^4|dECyOLVdoCa#fxZ5J?41VRRA*pAX4H+?*qDrUemaI8<UP5 zg|NlYlWue_OZDLcP;ePBHD@|6llnHq@A3@*&vkLN$Njg@Xly@^6EZ+4Oe=&DwgB+0 zAO{~@<X*Z5S9^G_3qSy%;JBpu$grKkz(D&xBdK1-&z_561{i+*iumj~^k+WtAv=sN zX-wy@1O>;Y=xg%D0<mxetv%AGPm=9VV}JQb--%`%J5R)lU~32MYYLA2X9tOz=1nOt z9%RF;Wt^(pONBPbmx_#wm7@SVpCf7n88JNewV$P9;5p&%CEgynJqsW)_2_!J^y03F zh!lI@$iT`~@_y@f$y{%dOiQZ_?bsuOYa7JxAC#hq9P7Fw6Asl2kN`+rX}>8VBKE^h z>07u&l2d9VHEpIOE2|_~SuM$FGbCAACF!Lr#Ch^mL`0fe&kK-HKvhpq&p@v2E?>`G z0AHg*)_<0$5XVK0v#8kLNTj}w+S=M`1;l~rK-nl+$O7*bVEzKh9OVNa@YGmw{xJZd WiX`Zah(Z(q0000<MNUMnLSTY?o<#!y literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BJ.png b/wp-content/plugins/wp-statistics/assets/images/flags/BJ.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce754796c1a83f47decc2df9b6292bc2c408515 GIT binary patch literal 422 zcmV;X0a^ZuP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-EJ;K`RCwB?lRZwuKoCaX+G{{E5JZuNk^>-d1Fpb{xDN#d=RiXAC;|zA5DJM+ zoc*zPC>&)Sgac8g*<!zW`_0Ub5)rlu1?&L(i*u83z?TLFmp51MKX0!u?*1gCN4G-_ z<V|Qe8=kJ-YP-g?Kz$F8YasQZrgRl!Q$}6$)C!kLok)%m@c^j?u--E@GYT_{BAN7i z4+%}(I@AEh8pgJya22w6Rb(3N{?<WnB4BPTBYC56)l%?${?Th7Idl|h(gjo`*)Bms ztRRH`3Tn^Xg-!{^kmVVn`>ECdl&`VgMSwFFE%|D%mFfkE2*z~));abNvUVtKewMA7 zLcrQM1t(2l^7y)<d6<0u>pLr80Gt2^8}330yeJ@DEK<55paGoPcAdWm02&;OqcsK_ QE&u=k07*qoM6N<$f>sBgNB{r; literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BL.png b/wp-content/plugins/wp-statistics/assets/images/flags/BL.png new file mode 100644 index 0000000000000000000000000000000000000000..95484338c761ac464f57c3ced3091fbf4c462af0 GIT binary patch literal 574 zcmV-E0>S->P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00067Nkl<ZIE~ek zyK7Tn7{-6!cTRITZI7`jX=|Y=wUtmB5Cw0OH&DBF5Etv{;HKaoA#P6M<SKR$N1du5 zLajzDv642iNgH!1X_J$r$vNNWkV-0a7oX*Y2cGA>JTLrf2mo$8TRk=YWAJ9|i+=cO z9{O6G`}Lmt=>?jy2T#bubfr7F+zAt4c6vE79oalGIauIQ{3HHemnoU0^<ClVCfW>u zt2??LjczxQmL&m9fb(PP?zp|pXn%zZ(G-5m!`{f_^@Wf_5qgXg)}%r;HMMmg1Sas( zX&1l%NRHflP$1ZQw7<>c#W|LW<LsvDTsa$KXzn_d+6L~K3F-r3dIL7Yx9?KVY&b91 z)*hJvu}>>RG6m|ZHDZYb!fbJDJBy0P8M%CwqHB>XdzABeX0J^WnweoscJ5*V%$Hvy z%b-?aUN0cgXvd+F3{Xj>u^ffHQl*jFM4XPY^Yt5hnM~Ip;I;6SL@SA9x`4nn3|hG@ zHlIJCnyd3OcoDDJp!nh`(hj4lwXQ)!`VmrtfQI%18WHdzb}Be;-{6d%Bs+B+I~=01 z{0{j!ffRjR1A*==q(Pwfqt<B8Wls(;5*_B2T*R~m)yNo5eitECH^u|??{6^-5Q6fD zC1le<O9SN#cKChGA7KGdof!@~2v7=K7iIW5RJ#R22%vOW)Bg~^0e(!)8)%9My8r+H M07*qoM6N<$f&`-fi~s-t literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BM.png b/wp-content/plugins/wp-statistics/assets/images/flags/BM.png new file mode 100644 index 0000000000000000000000000000000000000000..fa4699fa2e3e0068d4fbe51c69abce4f6bfc55e4 GIT binary patch literal 606 zcmV-k0-^nhP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-<Vi$9RCwB?le=qEaTLctH}~dxV=^RZi`EW4pa@EB<KPk>OCoAP)IkKdI=Q>J zxH^b`K%uLm);egxg49SAl$KPQVl6)6BTW!%$<5>TzVmZvHAT{)=DVEf`#GHNIY$yg z(2fGMDG88gh97xv4UNLG$u;8*W6=Q?zEv4Ixrgw`$foAqnK4BH)aM@!uAJ>b>g>dR zQsPu!4;Rn(GhK8zFmUjnmJ$eomCXUD3Lp>ZGq{-_$Q2!<xXkuKfvOfFflobOpzGER zBvoZ)^dTJ=&f(TqF<)l^<N&~MSCT+Fg?sD-s;1%%4x*h-Gal{3*Q<E(C@UWpSba4~ z{bvzB62`M_02F{kx6J6hX%>wj*M;Ez#3#NI;qrbNzg(g8<uh~NbIcw(jxmwr>QS49 zX*B`ew{Ozx`lKpVYQPzu{vFu`;*;a-P4-fLafcm;j}V($qGXy)fN7b8MF7!gv`qU! zBunJIi<!Da+061%=<KpK04&P_IS88ol*hBor{~a<`{>BzNj%$zWr+;{+eT>0+KO5z zHKo%34u0LuvvWx%?#e9MMibyT4yYj{HP{m10kImyYQgnf8f%_E08a?!Yx;kmatMe4 s+7`VQP?i80P}l2L<O7b>?mPb;0Pyw45QJd|lmGw#07*qoM6N<$g8LH(i2wiq literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BN.png b/wp-content/plugins/wp-statistics/assets/images/flags/BN.png new file mode 100644 index 0000000000000000000000000000000000000000..8afbe1b24b77cc37282b9f38a0f21d3e478f3dab GIT binary patch literal 654 zcmV;90&)F`P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;6iGxuRCwB?lh11tQ51#0H}f)*Or~j!wAxU!Xt7Xj$$)~k;6lZ{?)?)Kw}M;6 zwcD;-2nsGlDhMtFb)jIbB2^b9F+(be)+RH_q)Fz-bCI;VaAD~Omj@T_y9e$$LMg?5 z5P$)shwonK18oUp!p6BDAOU??|A)*jk4eB3#swgSQd^)pKr|GmBQzZq?}+`2a23Fm zfUc!(01DI=Ds&*OfN<#69eTAInd95UK{%Y$K^p@V0O%4RiXwDf2a!W0a)1p$Yjv4! zwZ!PD^Jx7wpiJB?f$9;4t)1^U===UPzvHvr*(MoAC?i4R{sY37uZcG{@izp?`O5@e z5hHsE%~+%#7rA}s-dzDq6$*v*AP8_>mn$Qq9GjZPwJdTIhgm4vq{hZM<azYlZSvQz z0?=$W$!4?D62P7hs5l`FFXm0tWA@V*npVJvS26D&Jt04nV&+#&)jo}7B{@^HF->#V z2UF#>iS=AY=UcT+?VZ4RESYR4nCM895%c{(pQV)^pH)DK5YtR!S!pVj%0Pkd_9z@l zGB=xG&Q^3U!sbJus?c=Ej!Vui_Go>C?pF=hi>TM@e-x~|7+Ie`VeOt+lRyH(&fvPz z9QHzi`!l9oRXly>a`RSaS^$%8pQoLF`dkcF42(3`rs;qbAmQXf>!<)SKpwF6n1vRw oA%<Qs_7s8v5zrU=jq~pT0E^Pjs+qGh8vp<R07*qoM6N<$g2AX4c>n+a literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BO.png b/wp-content/plugins/wp-statistics/assets/images/flags/BO.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b4a78611ccbc1ab7ec3ae01ac592b7970cce20 GIT binary patch literal 461 zcmV;;0W$uHP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Q%OWYRCwB?lgmm2F%*Wsbfz7LR$42xi@MdNUAPi_16OW*7T-t^#20Wc;-+?A z>ZS+<FTKblnVB3HGj>`KZ0!%>z)AAuPjZeD5w?*6DnKodo5%ulAE=KmF30~ly>oZd z@`0+PDM9ymJ<AG2z&!T>sy^UJ9OGs)()W+m)j#i})JocG?jdmu;Q0WFG5C`yZaQ7h zh3AnN1Aq_Ez8({X3S<HZg2Gsz{(T9jQ@ZDhFo>53Gook=?HpiqL>LTm07z2e>#4%S z@PI^>IeZ)vp6Mk(9izR%fz}%804}#EgbhPWBAn8MO}&`Q6r*)q08VdDDDT&Z60>^Q zMi#DmN6;(Mp&t;x&4Cw609I>694fD@zlMmzYF#+6*0O_8$v)**$x`VGg0*%5ur76c z4qpFLj8>67UkBLTaPtfpDZtAc$=eW+0#<F?&ffz75CV&L0NDwq00000NkvXXu0mjf DGVZke literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BR.png b/wp-content/plugins/wp-statistics/assets/images/flags/BR.png new file mode 100644 index 0000000000000000000000000000000000000000..7daab394bed04fbcfef6f13a4c8d02f56e2cccf7 GIT binary patch literal 687 zcmV;g0#N;lP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;HAzH4RCwB?lS@ccVHk#=|D2<9oN=5+hiPmoBt?Zuri_T(wrNvjwC}R2ETm;n zMmu+bix#bdXjit1h!By6Cd?2e8mz{$8t38#&AFV*ob$I4waZ5QHs9j?czF4EUm>Mr zCnJDbpniRCXDpzo0fDp6?iBu3C15%VAn+&-Li|e@?!6n<0H5PJ#KWx{f-MykB*!Dm zC_?fk*F@D7)GF@A%~T-`;L`xrb{*ENGK-ZWhNIFJSmVsTJWZwm36bb$hJWrRwdAKx zb7-oo$95e6RRb_>i$b|V(JIl~lI3)CiJ`|mjK13gRY`YOmYWxoylM#YB;AZ7RZQCg zKm#ZnCXsNC^RW+fMe@8zo?^BV=U5Nqmr9Jh-%rpx&+Yy(x_5o&VfrAm3tIp!o<#=Y zQ#9xWuvP9qDl$5e!XI>Lj(XYK5#UEDOm!tgXXqOP{yDBK#7P1Qz+^$?aw5j$d?V-; z4s~R3s~$?_Dqm)PG5UOk!w2$cfifR+0s0a#l38ujfoT}L&NYz89^q>2D_73FWqKyW z%VZm<3MY<!;$-(zh9=s%H{FVjk6L4O6JQwzUd2nfDj1w>XJkIajs7uiT}XfwtOhNv zr(z^BA$&Dee40(!Ft#|bEOaEgrlM<-)N+Wv@kTCn&f%$Xc`)8W#a0Q`Ie?0b#I!b_ zXi3LqC7t~vWffp>Mh8Gwa|j_Z{}X2c1b`^u-)0xqfQ$gt^&+X;1UP^tc3S7(0|5V~ V=k7i!;DP`E002ovPDHLkV1me<BDVkl literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BS.png b/wp-content/plugins/wp-statistics/assets/images/flags/BS.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa2c4bb1ff69af807c366a2c8a5f7237c37d2c5 GIT binary patch literal 494 zcmV<K0TKR*P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-bV)=(RCwB?lRHZTK@>*MWH#$c5>hBOKET?-Ld1Yr7$2k(3$d}avk)v4#KOk^ zBmMvdu@M!tun^Wp5m6Gu`r6$wGh-1Si6lYsYi6p$xgYlmYc2nY09+vb@%|+Wcy@s7 z_{zpTV+GI}jQ%xYZ$97U04aUE&rp9K4CVj>#<o<pz{%YMK*|B6Qi{jZLrPcIFjfF7 zK^s2n5uzT_(e9#D0zf(daU4@Fmnr)`Jd~g?-*S|M)WjwPzyS!ukYce&5Cqtx117vP zw$^)T^W=x{&p9%LuSL?e0N?isf&hTaOGtaSY_9b*DI!fAiEo1_im=vVi~(R~GQ;Xp zXSL9VsSw4LdVrL&3K$$=duo~Oo#q{+k`B6b5A5<)qUU*tTps2YK_{V-XbLb$;+Gl& zr4;VOEbh!gb(werNeh5M>DMoSvZK>H4GhD@Iat$pb87$Jd!Yo71-gOEA8+9axDixk kU0O;vj0TkW?>WB@058d$5`+!#D*ylh07*qoM6N<$g2E2OZvX%Q literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BT.png b/wp-content/plugins/wp-statistics/assets/images/flags/BT.png new file mode 100644 index 0000000000000000000000000000000000000000..71b9ff505b01c8089c7da60761e0c5f6363e1974 GIT binary patch literal 607 zcmV-l0-*hgP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-<w-<ARCwB?le=paVHCxGcfQ%lW_LqSP|*cN3&DV>jh(F^h=LY&R(4jFf`5R8 ze?Uq*!O}|6K4gho2&)*$gMiUIcHNgV-(zO3MS_VSfsoUj=A3iyg?mI*ISK?wfW|H# z1|As4z_eSty?Kx_k{ne~44_~p2%VJ1&37kbpbk0F#I^re6;NzAhKUO*Q4dUwuwt<v z=K<<5V9)^N5G{KDm=z^0u9C_vlIjU6e1p+CVf8bTdjJyy6uCo8A1(TOYm<X|yj-9# zO~Ph}Y>-lpJoUjUp>Vr8z&neUJt&7z4v?~oFQ&-!Jdte?Vez8@p|?zO?h1$@WElW4 zfOQ$wWEsjKf+N$*Y|B#!hA19FUck>qOy>>KnxzaW*5!Kv&RS?FqK=4+aeRm3#|D#g zFHjncZ#-f0>jx^fk8UiXwFcJ8-U-&GfW^|J8$IAx_Y$Q>Br|u37vEEV{SZ!FBzgQ6 zj-P=%$2q%ygA{LO=x^V{t^^uio?)*)!na>xA|V-f(fOD7^)`}qQBgAI_62B(ww9>0 zW=Td{P^(fqeHJeuaRLTJLDoL)I0U@+e*^sQ1<zc247vpd=#Jp|eJH|?^MH32U>axw tQ-|!r2>34S%uIIqFem^oN3HXp0RW`+?q(hCN234$002ovPDHLkV1mHd`8xmr literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BW.png b/wp-content/plugins/wp-statistics/assets/images/flags/BW.png new file mode 100644 index 0000000000000000000000000000000000000000..551b48a747967ccc765f33564a3bee73a3695a73 GIT binary patch literal 425 zcmV;a0apHrP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-FG)l}RCwB?lRZiUK^TUg*`3`8YgiM(Mqvv*fZz$VwXm@B1bPp_&ce#ms2A`6 zf=y5n0w%^a#QE77i>&5Hi{0dH2Il*DpZS<ic<)(80*Hat@~k5bd`ckQzrN`%;(mL2 zupxn@aGt%bc4cG_+&}jK5($LbI6g*(x1pLz{+W*uV&;B5X`qb*2ql2BhW<#=|I(Ex zf?!+&AOX&I6PnEgYZ~}}aOV|8l00`DmO0y5mOUC{7z_rL2+}kqiXu9l&W;4QxV&Pm z)yCRlVm+@Z6d8rQ_j;ThAB~@IcK1ryDi~^8i6Dt3MZY_lfl`VU|99Fm&Ql@h$2GqV zv{J;*69+*h0_Qw>s)6?2l0Q8x@)@-NQeYEk)-29}7XgIjB84>@6o3}XuJiW*MS^n) T*V#II00000NkvXXu0mjflkKMk literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BY.png b/wp-content/plugins/wp-statistics/assets/images/flags/BY.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a2e3ce90934e1c0a179449b850d4c89f8a856b GIT binary patch literal 441 zcmV;q0Y?6bP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-KS@MERCwB?lg&!QKoo_)$&5`(YWlOVYLS9V@uhqepFzQAaN{fJ69{5=ZmiHk zEyXsiI+-LhZi)?3h@oe5H<yol&%H-D=h#I8r~!?2ts(=g6wv&<e|XO(6I8d${Oac4 zgx=llfdWDyCF=MH*=kceKPwqo;BX{Q&j6tUq|+Lk<p>1X@NLuW3X2vbJ8fK=0!Rg* zM`OG%jqS9saa?Ykl;nv9KmpM2;{yZ%cD^Wd3fOif2Sz6wfS%1zNrD%Kq_4x$3A`vm zORoU%JfbK<)ay8FO93`Z`8IX~SPcfWrVGUB376M<r2t<_mXjPV)&LWR_@Y66*hT!c ze2bj3B)VW?7WjBU9XcIUuF3&ej4{6elg29^hcDQ8$~gF_^v(ik0zF{AViuObNC0vj jBv}!V14ir`=br%pd7pI5n#C#b00000NkvXXu0mjf0D`M+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/BZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/BZ.png new file mode 100644 index 0000000000000000000000000000000000000000..e150f0f20e88ad07d150264a55a3ece68876346f GIT binary patch literal 615 zcmV-t0+{`YP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-?MXyIRCwB?ld)@4Q5431@7<eMo1~2-R*N-Ju@zcH5JA+zLF(ipbaQcY@b7VQ zbZ~L71>Hg?5f@tnwIHUIDz$B-X_}<D_r7=EyAGx{Lj*&=<t&Hqd~klB=bYm>@_+!y zcIO}pfwly4YqJk)eOFx1nLfHyo<A*t%+niBxIS6<zsMdq2g}u6D9>jkAXE$u6|>ti z#EByiDQ;d3D2{jVrR3+%2|iRbDhv_Ar!X>viUAN3ATgR&OVMr`l0@*}e!$ek2Ft4z zOuf$SJ9jyiE%D;5#W_nrLToeuK7i68^`_z1z9xUtW9r-v*{wDOn<m|Y_2=&><+nLI zCaCQh>P>^zApjCUDb3mzY}Ym8V-cBbj`K6OXjhgfW@}uSeN1Dt!GWn!-88gyh)nd6 zfz}FA0pQqgO7_|fBKw&)>tE3aFn4AH-^4VU0S<+Y5^SV;5*ULN4k>(AzA4^+N^|+* zN3N7Iz%)P9Dz%kqmcA&Y^oSCNHKx}fVmR&Nguup*XRj@D_pUKBsqs9hR!h7pcj&}1 zDJik|C=(qS#75yImSF)10K>wfVPWy``yBvAhrB;@C6?Hzzl;@M%KZ0!&?H?F{eO`7 z$kt09kOL-wkpa8V0ye#F=-@E?0E&UoJ8qqS4*;n<-;6)Nu9E-&002ovPDHLkV1kw9 B23Y_A literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CA.png b/wp-content/plugins/wp-statistics/assets/images/flags/CA.png new file mode 100644 index 0000000000000000000000000000000000000000..1b90bea77f8478bf224e7b3e1c3964fa0e7282cc GIT binary patch literal 570 zcmV-A0>%A_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-z)3_wRCwB?lf7;eK@^3**<YK)SOF153W{(9B_@G}p9eq!MLY=wqM$}Zf{ucQ z0wM7TPz0VJU4)>=j!+CJlC52vu)8y}b1Aa^p^30^o0;OCGv}T;SBVIxDFsBpVs*|_ z8u%Rm&4asJhj<Er)t&bzqI&lpOzsyyepn8G1+kXejm`ghHf~=95%SMp02Ttk7h@<# zBg+0@+9`tWbODIgTcC~=>h3=N`E!Ud0Db^qbwQA%xHO&M%fW#D(`^7&-n>Rd#}>IX zMfpCqC;$imbe0ni`nYt6J?N3`?&8ID%H9uDqruV6CsYs;Z?thq0th<GrUZGG5q<06 z(jmIrrT^?Xa`Xp04?K^<hmVM_wOM-d7}MFuYn~+!d;q*Lff$Q8$C*2~S$X#s>UG2z zB+m)f)>wY^lKQQih$|6e$Y&K4c?MAor325Sc71~jFSfBif1#p?=*nfn)}_iE2i8(p zGc$tLNDxk(23Xv>kEwnkTyM=pPa)2c7kWm4Hc*p^)8qOFIL1d2IH5380&Sh+>o5Tz z+1ooYNZ+fzahw&<1Xh8@oVzdrdJ6EXMe^q)C;_cbyUu?H0H9{Vi`1@up8x;=07*qo IM6N<$f-t4)#Q*>R literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CD.png b/wp-content/plugins/wp-statistics/assets/images/flags/CD.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac78b2f9062490384fbf73457662a804f0ada40 GIT binary patch literal 621 zcmV-z0+RiSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-^GQTORCwB?lf7#cQ5400_s#5gva1B+7dA#sAyF)}36}O^X&VqM1sg#KVj%>v z(?&>TTD9|E5CxH#!ZfQcL{yTP%w%`wy*F>J#Re0R6d|WM)%n3a+#{;WK_oyG7}@sy z$N^h1(7Ew)_SatYtT0S;G9Fx7rc?81DM(Z4zp2o^{%Sl1T0sLBk4*dr@G6YPftkr3 zhZ~cGQZP+$%Z6nBGe9c_A|C>&8?c_If5V{^j3{?6bQ!O25`2Wz75~+cEF42K4-mxw z);l(BpTzb7C=pyR+&SN6YV7AQT!pYEY&@wGl9ZqpfEXaRIqP{!;s%te^oy8VlRd7T z`bKaDB2Wjv=W661Jn?aZ%kmvSmRr8?gTxL<T*S@O-<dhPMCk+-!9>dHY@KwWiWyZj zZ<9x6H()?isgXFt)uU@Xy0V05Nl?MGVDnj(<VB2W2DF5-@MNys0odH)>ov}_Q=U$L zq!l}g5MkOSTdymu&s8wh017CGFR<PNU;xsA<50!%e0q@+BN;^zV@4o*TVeHn14JN} zp^KoZ<Zf4qg|j@q{E4aYK80%{4e&i-^<ERQ;Tiv^EU|V6;BKGmGPbe8yZ7<1@eI}; z*0GBo(@@CwerEwXz)4_qpIb<Q6#=5{Aw~NH1i;Bb=lo{?6s7E>KtW+j00000NkvXX Hu0mjfdsPOY literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CF.png b/wp-content/plugins/wp-statistics/assets/images/flags/CF.png new file mode 100644 index 0000000000000000000000000000000000000000..ee3a68c1fa64e7eb25094488bbe0159f59484344 GIT binary patch literal 514 zcmV+d0{#7oP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-h)G02RCwB?lfO&DKorM6XVTOdOD+CFbgPPjsGEy}xQnfhP7eM<t`1I)PVP=F z4pKzWBGL*{1RY|iCFF9+Ii$6w>QMTYyL<P&@4fH4?+L9ngM<JqV6;8<6B76|f&BL2 z*&D#ZoXg`&0U;8^`Nuf``(yh6Xbc3=H^b%W!ITL&N@;et9CkKqTwKl4c+UY~wpIXG zccv49Fh&TC)|#8UR{+NZj8H|~*DV@vGt?Rp@Bu*NJp)k7ucm4rAF~OKApirQsFc!w zg<C3Xw^aUfPbsB=q6r|S#J25UUDBQh|GbivGLZ?eesYA$3cR3|0#)mE049$2Qu%z= z!3=bl!1sN~Sj0L`UlS+m-h3D<LjOkvN*QFt2*!}n1x3vt1Zf#6j);Qb+epQS>%!C0 zq76Do0pHgg048r+J@(5|ee_x0aOX{cAP9kB5NR_CE7O_uwzqvIksy_dxv6-+I_<iN z&O*ii*UkdS1G7M`&%e+F8lvqctK+IZA_Als^gDkI0P+CExU*bX761SM07*qoM6N<$ Ef^nhO9{>OV literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CG.png b/wp-content/plugins/wp-statistics/assets/images/flags/CG.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b28f8aef9393be869d97f3d5f6eb16e827bfc6 GIT binary patch literal 556 zcmV+{0@MA8P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005=Nkl<ZcwVKG zy=xRf7{-4yyLZ{UOYV@67!(nVnnI#jXcH{$C8cdDOTk7Ef>;Pa>?}mEGOgPAFNlIj zOpzc&2_&fGYj5vvzIJw8w#bnpMaT~x-nW?Nd7oxP2!YcefI2W*&68n)UJP{R-!J|< zE?wo4>5k&*&2>5>j!+0hGtmE3qkZqgWDK-?@Z6Y~<|yETU@Z15%xrR|F@rAzvI%xw z(tW!I(29Y`c~52s?CI>#Ts;<nN7px)Oj5jy5J|xOF3rnR1myst7{EA7YWj3b0Tc+V zmpr_-!R+{7DsvtDuHfKhg70SdU;vN++UV+fY6t9_KHGiG{KYlyUigW(J&-BErtB{% z^tX)A-^VHqKn$R?;TM1CngLxKasSdb3s+VttRM)1i~>803E6TTITi@IjgI87fzkuK z&r7r9&e>g_-(E$8f})gcdeYZ1-FGpf+(S`N<PN3Ouz}GAmyB?^o$+e!JFVD~`v}=C z=zXlQw^T#cJp?KVmt&k824n-v)P&{D+zRJL6}gS8s_Ju%ohJ<t0%8scA)u`p2ISW8 z;?@slC;R2zL^Qx{3U(ehK?!7wqZ9?k3<K<gs~e0TZ1Lr53=sqcyU!BLibFO6XpX}Q upaYx-#yA-nuqA*9s8{o3c)*_eJO2ljb^4ivWk=Wm0000<MNUMnLSTXk(EXDD literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CH.png b/wp-content/plugins/wp-statistics/assets/images/flags/CH.png new file mode 100644 index 0000000000000000000000000000000000000000..c8dd942bdabdf5ea47d8c15a905b7386e38cae9d GIT binary patch literal 434 zcmV;j0ZsmiP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-I7vi7RCwB?lRZwuKoEt$&DsGJk_ZYQqzM;59Dt6Rik60x(a=HzEgc6yaDcc8 z2qefK(t3Ao4@C^d5Ft!nv)ZSb_hv>jN<>%$3aA6C`CA1Jcng5`!{O2Mf84h(&o=^~ zL7K9(w_BlT!QS2hGy*`2_hi#4>Fcl*x_NdAz|-+biP!6Ei1z?G07$GwkH%!9@m$Xz ze62=eEdT+4H!<PMkZdvm5xO_mrTEU(1ptHngHO(zxDYV0A?){O0>8jV(X4=03lr!< zAU1|3HApi6qRtKgy~lp({{is{v3G@lH8Cm-kt~~U{f$?N$IgbBSKut715m0I7;W|P zj505o5W6o!w9X;RD^L&rv<V^^))g(dRD}ES=s(No6wn5`K(k`<6c{K#=ZB;#3Z#Hj ci=OlQ074~)an7BjS^xk507*qoM6N<$f{5;^qyPW_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CI.png b/wp-content/plugins/wp-statistics/assets/images/flags/CI.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f13a7fee42e24f6855ca3d1d8dd2761f4d8a77 GIT binary patch literal 428 zcmV;d0aN~oP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-GD$>1RCwB?lS@tlK@f(&W(GtNF~+#ijR)W|#+^HFq8D-J)_4&UJpc(TjFFAJ zWco2wxsc35XGjSDrn^$f*HvAA8C7K$8K4CmuFq}cfkh1TCJ#5`zuDgHV=2CVzW+yf zy1F}yfex}FKJRaQu77%2ir>ZqfKCiVDgpHiWcgJK7|lMj`$@Y?kQ5+_0n*@TBvUk* z)dFVrJG)0Ta3KH?0|aMjE+?p+1JzTR_#B`Htg|`5CYHU`a1E%|aGJMp)H)z?ngg6o zAZmb0EkFvnR8qWk<qD+T0ufA26H+i-5Fyw?3yE_WjZtIJ4UWtHK&4!P_a4~C{0^m3 z%|cF4oc9^Pry{(L${sj=c_~j}@KI@J1N49kpu6QR%z<|UMC(P0wgjvIZ+2bhp8)`> Wzm7PN1tEF>0000<MNUMnLSTXy_@Qh7 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CK.png b/wp-content/plugins/wp-statistics/assets/images/flags/CK.png new file mode 100644 index 0000000000000000000000000000000000000000..b24914b3fa305acfb00906d44e7feeb39146a3af GIT binary patch literal 630 zcmV-+0*U>JP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-{7FPXRCwB?lfP?IaTLWrFW<bEq*ZCsSkXwM1>@32Lx&C`E>@I+;Ns#|{{Sht z_<wZi>Y^fwpo3j>DoqopOORkRiH3%jCZtLD_PzIgzg(hekqV^;E_XWTa_>Dy3xa@? zAjAow0iw9_*8L)*G<Hp%$~<qzuJiS0kHtHeSbF~LNb>6HlW-U?K2;=-@2Aj`N$mGc z?#`rm_~06aEk!mf4^Pw}2w-#b7l084#Nu8N=kqqAyNBG`Wu(!d7mbm_W4U?}AvDtI zapLh9?Y5-fw{RREK!gBR&fXw2e;eoKEsUsvyRbm?-aH@1W{}cmc6O3pZ=XV;j%hkf zPhY?^Edas*x$}b8FAJ2V&a)uk)yMDDImM%^f~l!-*4Jy)>uq#BM6K3FDVIzpNwGK( zSXwUPx`J-k<OK#$0^r?fgt@uPY;06f%KN*&=lNu_$>AGK)5LK+d_Oo;rm2w9CXpCL zDHq=luq=moVuV(!Hx#ff8`tyk2E;$zvRumLZF0FuCMHe;kWMGaTscRj(j4BvRu(aF zhLENa9B`Kq8aq3E^7$&+YzkcuW7{rkYd>hUx<dh_6p@IJVTgasVi<x>XP;83iLMKj za_MwTJkK2p_`XNC+xV|#r99foF(3{^j~N3C=xBfdj6pvRJV0qDjq~pT0Of-3!62L$ QS^xk507*qoM6N<$f-@2oF8}}l literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CL.png b/wp-content/plugins/wp-statistics/assets/images/flags/CL.png new file mode 100644 index 0000000000000000000000000000000000000000..4d9b548b229580ccd34cd71d2e1a95aabb490316 GIT binary patch literal 424 zcmV;Z0ayNsP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-E=fc|RCwB?lTAtkK@f$%o*oAwlTJ1&;zrPgD+M>%djWS|!t3M`?!1N@LBU-> z1)~^2%_KTKJwN4UNXGveQk!b1davqH{gjBXNGKox!ZJ4r2TXmSb9j6*`dU5hAN@aF zsZ}3n<+-r8v&Q;Ln}?@KlPy{vpj}pA!etJ6n+S^A`*B?Y?E@q(<!Ufu_&DME?xhwo z&vO8L02^DL$1yj<SLz<cIXAn)*5!V0VDf?@ifVy9V~DiJ?)lla4-m&Oq30n*@u{(h z#^nsDWRN7`t=p|g2$oRO_iqGV*#3EgARzU1g}_=w1eB^JK}4|D&IuB0K|pE!2dY#7 zkfkJ9IwNqIF<eB^yy3S`UwMl$08RlNU;}73^uh!fDnOS;(hUi6z^O&;{4oIE7<L$0 S>KSza0000<MNUMnLSTZf-K38I literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CM.png b/wp-content/plugins/wp-statistics/assets/images/flags/CM.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae42f2b9587e76e2607dc840484022ff04d7901 GIT binary patch literal 502 zcmV<S0SW$zP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-d`Uz>RCwB?lRHivK@f(&+UXfqULG<52sw0UB<{jxASB`hq(nY|11{l=6+#3^ zmSszp5eV4Xg`poaT@GeE4~SND(j|5E*MD{WC92AMmH-*B+U(0L4?G!QWB=RHEkIw( z$=9nv_V(#Z9gKijhvwtimH{SJtk~Q7JOE_7GJMb2Mzg?3p_~Ft43LCavhW4>cG2dS zzkb92{}F+zr+`h+0FW2}7XrC`W^SKbK%CE!vDOSHpv{@ql(KZSFaYZ;4{ky33$!UD z&T`T(5fQ~-CLN%uKLpzWUaaG%-jMsERq$cwnzh3K72F-Hpq1@P&~>aeeL%q|T_I|0 z0r`1C`aPf#+*E+7_oD&pLazjCNhc|>XDTs~hvN*Sj$7>tXo>3symc6z&~IGKN5eL% zbk-wc3*P~p_l!}px+!&Dn!fUE)&W#;zEj|}ip+le9T@3i_BgnIH!a>c5%2<R0H1)h sC1+s){1G5&1}Rw*Pyt@vJI?<G0DFzJ(|bUikpKVy07*qoM6N<$g2t!K_W%F@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CN.png b/wp-content/plugins/wp-statistics/assets/images/flags/CN.png new file mode 100644 index 0000000000000000000000000000000000000000..173b18157aa9d703cf5dd0e9b0020bd90ca7b667 GIT binary patch literal 469 zcmV;`0V@89P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-TS-JgRCwB?lfOy>K@f+(z1xckCW;mo`V1+>&dwLG$Rk=<_y9hE78VK?qM%JI z(r6OR?f<d3lRHHr(H|@e%gi@BKW3DO@E<9l1N7^A6*=Hd1DoUH(FA}9WIztx{eZd9 zO_?9GcXqm?fpv+I-r<m9H{qW%(p-_=VK9o=ySxIch9!W#z5!U*KrW?6Z%yePO^7EN z_gGa9PttVS`bECIg?JB;Yk*)a_I6H~EbtE*agw3B&^-v4D-Hf@8!FF<)&igbd@%T@ zDduv4Dg-pF4LytVqVgns^FhEF(*R6a(z$;m&1QVQ`iCa?yNTJx1}4uMKv|abvkZ|` zMfmy@El5i#cuJQVfHf9X6i7-fr-1a!@c4kOOsrdQ7SS4%T55ts1mjvJT5F-(Llwnx zGni79Qv+NS;pX+_FRS1bunFt|gB6qKz*yCGb?SQ+MZl^5uJgwL#&?-r@wpHI00000 LNkvXXu0mjf(B;2f literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CO.png b/wp-content/plugins/wp-statistics/assets/images/flags/CO.png new file mode 100644 index 0000000000000000000000000000000000000000..30476c4b0550f4bce9cbf7df6ca740307d60cc59 GIT binary patch literal 387 zcmV-}0et?6P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-2}wjjRCwB?lf6#EKoEq#^POXeiGnC-Xlapn3Oafu9*>Te$Dl#fv=mSTgZc6O zE=7!Tph(!sG}qkB&hE}C5n&rBU;^y*?-)4X-2n60oIh_;UGLu<8lZ*%=5&N<fp7;< z8$gSAl(di*e?Ch_%1|62;sLY)h{0lt2BaBgA{E470Wbj0cj$5f@|IQ2?5>-j?^XgQ zmlt@M@Y>oz2IjMhQaRvuDe%>Gh&H4oYg_&`4#3Am2$=(GJ9ITA{e<eDY{ig>HWRph zy5e|RBX(E|s;YSS{NQZmz{1Whsw@X?AuTz*fQusBH!qun(J5dK909YD<Q8~TfbI`T hj}(Z2Q`?^N_W)v5ZaV9%fh7O{002ovPDHLkV1m4wm|p+@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CR.png b/wp-content/plugins/wp-statistics/assets/images/flags/CR.png new file mode 100644 index 0000000000000000000000000000000000000000..399b9c43327d942eeb310480d67cbd9a03be652e GIT binary patch literal 364 zcmV-y0h9iTP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ+@<~KNRCwB?lf6pBKomyLorG-?H(0C)!Zxwf(q0f-pTNquva|9v_6cn5WM>fs zaS>s6Wx|-uwJ>Y6%VbY849s`t?_N<=c0qs<khfzD9@wNnadC71He~nN-St5VWOc2a zogDT*v%<sUD?lbdsj5$d?k{p|0Gg(W4sSCl!2JA@Y%(FNR`B;%ME=iPOi}Q;Ty}!W zIYxHzBj|w{kEs&V37m7}#-Jhe5`_8-=exC~wN_)X)+$gMfU2sZA90&W0Zy-O$@iyG zg3ZVCufS^vtlt+yO2G?I07t-HWOxm{2#~aml*HB&;APi#{vH5jCyF72>G`q%0000< KMNUMnLSTY@Zj_b) literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CS.png b/wp-content/plugins/wp-statistics/assets/images/flags/CS.png new file mode 100644 index 0000000000000000000000000000000000000000..72a4780e71b12c53ee5bd9784cd300997aaf5f6f GIT binary patch literal 555 zcmV+`0@VG9P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-u}MThRCwB?lf7;eK@^3*>)ExjH@1b02$E^3fD#F!2#J~oTAqMMLgFDP5OhFi z30gW3ia<n4BLBt4o}Jm5xfE-XAS#p7+-B~Xb2Q(Gs&W|#&;)iia~pZ!R|fPCUpzkf zpWBDe-(1gtf)wEE-aiLaHZd=@6aiJZH3BFyz-XvYyCh6zpnw4!n7btuO8nG@9Ef%4 zY;Y9`6@bYAV&&1<f;3-%K)$~s{WRnQhZv>Yy@I(J@S_5p5E}-m8~_=BcNUq>h|^P~ zo#@<~5W7vr%Qn6R*LGLr4_CO+fH28W0d?iMfwh+G+W~R9M7ohMJ|W&|@b1HH>?-H! zgD*6X9p&d0x-g{EF5$jCHz-|6QPm~YD)v=}<|D^!=LbnW`MhHCx<{G|Vj@~qlot~? zYw5%`stMLYJZca=8lLS<2!#^f7fgE@{XBvPjR9x>O5h+VA_7K8<DBw1rx+&MHzJF- zJqADuQom5rdgm;Gt4M2r76`<n7K*Zb*?|VAmoscp&~?4@$G}HT96b5H9fmbrUVuI@ t1iD+2yaWzq!(DSTw^0PVT=qNv9smMb*bqdOX%PSb002ovPDHLkV1itQ-k|^h literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CU.png b/wp-content/plugins/wp-statistics/assets/images/flags/CU.png new file mode 100644 index 0000000000000000000000000000000000000000..54ee2e59d4130c247dad685cbb97e36bfcb2a456 GIT binary patch literal 513 zcmV+c0{;DpP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-he<?1RCwB?lRZnDQ5c4=le}*l@FODD1XL1?n_3(loCVQUL`D1!MHCdFi?(Bb zLwCVN37s5LC>>nHKm{d4@q=iL)o6~#^U+0AP>e6$%i#>q#eMGQ+`>7>dnAAeP=9|0 zkpe0n5IdckE`B%N{EoCk07n}?CR;tA4sDq0v8-4@F5L3EWg&3RvAKN$P$z(Nadd3g zOC)ew)A(f(FP?bY`-SKV0q9$Wvle@K$;HeZ`uM2kurUSz4?xK(e))pv#5m_mU(vG* zESHmHy$)X5Qd47;;@Q7Pz^#<T1_r1f9>ScJxc;`xd~}Nw-A~3(Jp;rVKH!JcBS2QG z++=@oS14dhC1hKQ+2a%$KMD4^1FbE_$cKCSPj8<)7#wkhmbg3Y{^V4C&(%^spLaky z1W=U{@i#{}5$EIDDt@Z7W{6VCCn4S`L~}Erbw58R*AYsA5U&C%<^2bM($+D4+D<kS zg33;y?<{~A&;~RF?7|grD1h*Nk-`B122kR?b^bp9JixsXFYgB%00000NkvXXu0mjf D2!77O literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CV.png b/wp-content/plugins/wp-statistics/assets/images/flags/CV.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf22df44db7060ec29600b8e571c31d8aecfd8c GIT binary patch literal 492 zcmV<I0Tcd-P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-a!Eu%RCwB?le<a-Q4of|+1-fIgcPEp!C0)Fg`$O*&e~4!Nqi2UMDP)`5-%VY z7TW~85f?=XF}rSdH+#my1PzH`^luK#8NTx~=O0m3{v!cKfI{aSMhOr&Kxu1h|M@Sk zA0O{cIly?98CF;4e`i?)Rps*X4q)5?>?Fx}du#Ff8uT=G=OZFL^@)iBNs<BB4nQ0y z)axPj`g^CvbjBkCU09Y7#|Z!qKorHiyo59wp8&Vg1mLz-q}}cZs2ZXu`VNSwR#U<t zVr}V>lk-W^)M91vhSRH=K0v9ICztyoyT0$Ms%ooorr%{u)>rGw_k9Ii2jF&d8&e!b z+YzSOn-UolH0%wVmCy5#w!R#Ao;T2en)F8pp64mx3gBASZnaRDC6|MZ<r){)(^$az z@)JjA<$*sD1dkYVupq#k$j*KD!m*V~IRxOrA0thzA48>jSP`HEl!4-qNp1o)0qo8q i*+T*{Ad&yB^Tz-eL+fRSIk>F=0000<MNUMnLSTZpN6Uu* literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CW.png b/wp-content/plugins/wp-statistics/assets/images/flags/CW.png new file mode 100644 index 0000000000000000000000000000000000000000..cf411ce26def719c56e811dd4c2b87952310d8d5 GIT binary patch literal 332 zcmV-S0ki&zP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0003KNkl<ZIE~Gc zy)Fb%7>1v3=FG$rvum?NROl!rMB)O(1#F|$h)(B16nhH_n`jh%dZmgWQEiYh)$W8{ z^K%rtGa1d!QSp}N<bB@nJ?DeJmH;%Cj_(Dlf!11!3=d0uA_V^P!HNQ?OgQtq&DC1_ z?1|26$n=zhE{7-p3m{2|Ixjsu&t-YBN}OtRIU&jc{eHwr`;o291&$8aiQ|+cF_<A6 zL)kD>b-8;8==KIE3v62>V;&>BQviOq1_)QzpAdzJS4Wq0_yO2iyG4+^_qgN&g7eGK zH-20w-$G_hY?)Fm?~~hKa|&R;wPzYz$OmW*E1ceJIGC(Y5g<4@pyCeRKw>c2pOIe( e!e2%HTYUosFi#ys$X5CQ0000<MNUMnLSTZSWs36v literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CY.png b/wp-content/plugins/wp-statistics/assets/images/flags/CY.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbd09e4f64b34ca4eadcd676211b521ba78aa99 GIT binary patch literal 456 zcmV;(0XP1MP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-PDw;TRCwB?lRHZTK@^3*nb~Yu^4Ne66tNI1@!h0NEq4APdw+wih<`vE8w)E5 z1nfi*l|TrnB*x8Vvb$qpHrWINd7Nfo=ALuso;f3oG0X!2*g&?oP6G|JEWkC!)Mx50 z#Igi3b4-wtfSRb(L_~fK6L`s8WdVd?h*D~#UZd-`h*Tb<n?ykqE4M|eutLlMumH5y zIF9p24BL1w=je}nx{YT{*u{k49-NXY><=8&dLYp0bov59+W2o*v}+Y)8e}?)yL*P6 zAjh1(fbaYLgFq<k;w6RV1A#H5mrD57B3%;=nH6*7sDLmL*VT9K%now(gi6EX;_-$b z-5R>VSOFy@#~X*J$mi+fl`rp;qs<}<PX1p3D>+Y$tnE-*-veNK%&R6n&_NJTE|+Hs yk`{mqtO2<x$=^U#^pa>#oX7z}K#O_5^X~xj9FHO*nL$ec0000<MNUMnLSTYu^tf{X literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/CZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/CZ.png new file mode 100644 index 0000000000000000000000000000000000000000..3e855a504276b8eb4f385300374e250cd2971fdd GIT binary patch literal 492 zcmV<I0Tcd-P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-a!Eu%RCwB?ld(!%K@^6+xpQ|V?rK2TDgi4IQt1m=2x)wP<P8FrHX&^ak))D< zg`Hih6c(bzu1c^mDT75sRwPD4P+a#K=FZ%mIVpD0#bp;S{>?P!e4KOU|CNaF7%89# zlsj)8Ip7AM@_uDc8ci#C1yo|7RNFp8E8*4L3ns?L@=Q^R0G$;y$0t|3`%vTa#sMuK z9tzMAfOU?B$+%1`t83p_SgP{tPjg_W_a1-<z!=9x!*Ko2(r5*~?$vp{u+Ep=<Ng<P z4uH4~FdUtDt`iG@C=KT~?7w--bn8b?b2K_ivpswVkful+6GRYVo`_@7?C{dn5$ou2 zijFaaJAkz*nqj=eR6@dXvc**EZ@ah<qwbq0Qn<`_0n(JAVv$LI#;0VH=OF>5`tC0x zq}?~L8O)@0KAI|Joq;Y4{=5*d*4_f#Z2FV=tM8mjz^N#gofYsDcm|B*%t8YER)FpV iN#_K3z^TW^`Tqb2anRQfQ1~JM0000<MNUMnLSTXq#?NB_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/DE.png b/wp-content/plugins/wp-statistics/assets/images/flags/DE.png new file mode 100644 index 0000000000000000000000000000000000000000..63b86fd6dee14a848841235055f35eb54937ec6f GIT binary patch literal 391 zcmV;20eJq2P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-4M{{nRCwB?lTA*;Fc5{mancGYln7N~Q}!Gn7a+HVQ}hI7!xnb1K}1mk$Ulv3 z7ELJKx$SH$TYhgo*>5Dq$T=mz9Jn0UW6A;FIZ)Ph{c%e7^?H4i1BLgVs;bhEMTjx7 z*=zuc9LSt=^nFj$GzXWb_YskU^W}1ha}FTO0j#yOZA;s>Nfb&cthE5-01sMGd}>0s zh5x@Ia=4!iqUJ{{?j{4HHS?EOLf5AelvkKpz9%rou!s;tNHU1SfbqlL;QG<9x}8Bt z43+W>Z(F$kBXAJ2F;^)FVW*i0tla_^AgN)Dqh@E|1|N8O?oJ7#6QBfEz~V^p7w|4X lHV#sDq=5&VoIB3H0|1WIcFi-E2+RNg002ovPDHLkV1fwlmvR6A literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/DJ.png b/wp-content/plugins/wp-statistics/assets/images/flags/DJ.png new file mode 100644 index 0000000000000000000000000000000000000000..335575c323f643df8b98147a368fe7f3bedaeab6 GIT binary patch literal 514 zcmV+d0{#7oP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-h)G02RCwB?lRHbCK@^6c^UZv_xEB{g(1k71gjm?7N*l;;urVQBAb(-4?EDQ{ zxE9-_Fac2!0ui>d^45qkH^Yjc30`*RoBigS6j@y_tGM{WFwLBYcg}f_c<*_L1V{n7 z_T7staH@eqZL@x`y!s0O6$JMtjK6t4sDbQ@ks_tXIcghqjCF)sZnrFg_nvR{6M(D+ z6u^_A9O<ycr`mV+{}|F*;V=F3vhtabIQIVy132dZC_c(C`tm8ofj$n84GrUH7{}SQ zbJ}!7tr!3eV6CM!_YrR_g}1L6do|45${wrRdr07KI1q`6TFnk1iXu4ri;p4zLLE?g zw#GuU+_evxFpujGIsjt~#rN+n9(?)vf$8-!O2V!H=VOdXt^&^W`A3zhwK9Qdgrqwl zi803B1T5~(P}!J31tCiGt)uilA!^rL^kDw$G}Wz1(z*{N>dpXp60GewuuD4?mUd?e zRf<4NPjMEY0F;1ykGpUJ{FZhSQ|F27K@PC;&~^Sd02*+kv;Bj25dZ)H07*qoM6N<$ Ef;TGL%K!iX literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/DK.png b/wp-content/plugins/wp-statistics/assets/images/flags/DK.png new file mode 100644 index 0000000000000000000000000000000000000000..63db11d17d3008c5ebdf91277469fd4750bc5b84 GIT binary patch literal 416 zcmV;R0bl-!P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-CP_p=RCwB?lQB=jFc5`5*G?fSsDgokN(__<f!JC24=}(_gaQ6Z2VevtR44;O zTN;$w4$d*qrWGkjQQzY8`QDR#ey2o)WuSmMur^t%zyqHKX!cIe-{()ZuP=-E?d;-D zh1Sj0mH`?P0xL&{3ybOp`@gQN5CnI75701xmMlY(gwP+91iqfTKM$RQ-rPX43_u%z z;2inKh<r3E3FJvRr?e(GTkP9uno3oqX(~Xw2H>2l{C!hS4ZvDkSzyXB01w9}*r-lE z9s{u3eJl!}cJ@l-S{(C|`I&(A9x)LpwZLlSoQPokoPcu<R%28YmH7*D<ayBp1Nb1q z-EiiCey3B!ufxH=c2+<WXaVaL`<MVd1?b5j>52jY@M_s{{vH4*m!?K@(lqJ-0000< KMNUMnLSTaYWTbKc literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/DM.png b/wp-content/plugins/wp-statistics/assets/images/flags/DM.png new file mode 100644 index 0000000000000000000000000000000000000000..28291b767dc72815ad48afeedc42e3a70bef6169 GIT binary patch literal 668 zcmV;N0%QG&P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;B1uF+RCwB?lgmq#Q5eR5XU^xRbNAMuh!l)ziIFrBra`%|2=ouARhtlk7Hy*c zAm~DyHW9Q9ENIoDO$D_OO0B@Ok_5><ooSkzb2;DmoztReYG@@sXK@z4!+YNM;eCWL zhTTX2HV~@aJCO@)SwM9B{&cbdRefANnI-jdgN!=Q$hk4DJ-G=@jeoqjcrRuFK~H-m zdJg_2+dkT(1?1i?0;O&uc7WlY0gz1y1O~(0`Vv6U0;KD1lP?uXmvXhi1V2}@w7yLt ztDR)`HM5%A04)LN2t;w+Z2)NjC{K}5c`_;wz_EOV$V{40AWU239l80}44vrURi_^S zpA;xh)lG~SlLuD({ur1XU|7B!BD|n@K6ac^#V|EDOSZq6!3SHl4qGXglLTYSeHOsP zl*H4UWb=6<+HfPgNw`!+v~+VTQ6%Af$9&VAIwEi^L3>yseOBGFxZ^nHUoA|WHB0`G zc{3O@lb43f!>&DMF)`Zk#&H}2#03zKUKv@DZGMVw8Gy-j3l|<QGEntc4H;6N<k{(d zW_mRMLEDd)DU-W1+vfvNWrfxnQ9DmN6wd8dK8}{i>>np`_d1VyRh?_CQRUwzS^#d< z#Wn_8Hr3|}9JcxN)h3xa#F?YR*dKy*rj5a^y7dCC(T2j>kA^M#Jf9`?r9ir}#`62c z|M;JE7C;o}0m3`XLIGG8fUE^c?y!IdxMH_){xtw@)cT)>b}RG%0000<MNUMnLSTZx Cf*jWX literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/DO.png b/wp-content/plugins/wp-statistics/assets/images/flags/DO.png new file mode 100644 index 0000000000000000000000000000000000000000..94340254c8924e5cba3dfb48b26c673985842066 GIT binary patch literal 432 zcmV;h0Z;ykP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Hc3Q5RCwB?lRZwuKoCaXX4e)dK@mtGq;#YMI;d!nxB?AI$9*^h9R&?H;0P&z zE>%E+0x4i(W4!C1p&*2qIE9sIRwK>49ewkS5)qaO1^7T~^419lL<VS|oL{|GRoq_o z0C+h)t0Z)8uD1-(%rfC{Z+qca{{HUF$O=KQcMkwf1L!o%`G_o|;HwglJwBCky|Ip@ zDS$Qr)}{oZB?xULpcs$K!f8!zlWE?K<5=oO9LEB58$T1++Uxu6F#v<3V>TNNB>F5B z?F<J1G!HId#xAXvkIJGyfK3vV=OaZ?twB*XTb>nD4Gciy9AZ3BYN6Zy18p(`u-3xL zD$4V!ec<UifOBpNaJdNg!TVg}TfYxLI2tarvjW;c2Ux4Qh!A*IfSw$Zt_jEir<OhE a?*Ra#gRc_+oWK460000<MNUMnLSTZ#r=oNK literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/DZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/DZ.png new file mode 100644 index 0000000000000000000000000000000000000000..0d08e5f7cec55272314cafa364f564d94d63ba5e GIT binary patch literal 532 zcmV+v0_**WP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-nn^@KRCwB?lg~?AK@i73``*(ci9Tr>FCs>Z2ukVEKo6xyK@0k?co4kk)l2_` zUOm-g&uv;%3V{}(Jv22^u=PiM<Ruz+_hol`Xw(EvAv!SZVP-$W%zQ^U=eUmvpchCt z-)>9;X8{l{Zmu48%6hY~*15V6LjjO7&hRw*_%0o!0>Dp<p{DCZvUU~eF_8ZrQT@3= z`sF-cfBH6n?*XVp6RUHoEk0W)@#13%FE@&bBAl^pKaDW}cmPsKB3UEWbt>wd$#1{N z@9eR(kRz3!!5_*Z{?)pkpw`!b3#ll_hm<Ra?8iqudACa`KHy9J2vgo?Z(<4?SK9ze zsa8OphG}4(#X8G}iI9;$l2BRvu^i)HKjVc1Z2&1{OAAtwSc`QI>l|;VGrXV9^7_>l z)j|Pta*As-Is>$nIA;+}Wg%dFZj6oRIg;&9c!Pt8Am|KGT4Qna_`#JYeGk}tHo~Ko zW&F&;8~eMQK>%oHER`R>Z&gaMSp2V?1rP$mK!2AitN{lC@SBI^cL^|n7WX~pzXJfM W`@t)=c+(jG0000<MNUMnLSTYyUD~4n literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/EC.png b/wp-content/plugins/wp-statistics/assets/images/flags/EC.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb9e33c85e530a206d401ddec99c3c429709799 GIT binary patch literal 564 zcmV-40?Yl0P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-x=BPqRCwB?lgnxpK@^6+x^yb-WE`T23tdD=7D2=i6uf}AbL9glsNlPZYv03# z8*$;vjh970G=UJJ5YR-7Ft?sbcXfAFxu{_#S&lhS6r3u)bNi17A#fTKzzi@qx~H)c z7-*nXcOD%6Pjo&1=7I(qP=j7S@hC+gjFXIZqT2ckKtltHP(kQ}Z;$><{_Hxkp9=Dl zxh28El>{YygvfIcDgdP;x<Jtd(FGZ(?JOS;H2oswyq-Z1GVbL^BxiGQ0+6^+#4-T# z!jj5%%)$kR#gO)|CA!HC-gYb2!WOqzcQB<Jw>~fI1aS4yQz~!hWzl*4+8$3<H+j9k zO*<sqS@_N47wf$LyaGV0X-K36HX@+NbAn3nK7f~O?=IqRB|PkWrLvaB{484^7V(t? z<)~|qbNM8LqOd6ABLGJ~OL_k4CeO?#G=`U(cRBpq1W|)00<0a+X!+g6%iovJGzcRn zK<yRI#}O(K(8^8JXAD1%hTK2cThRcv*8%5_O&pTZi7^7W;~KQsL4RCAS(}t^RW+Rq zO$x(aDS#Gm3208K<P6vsfEq25niAlEQk-_3{|x|HYrZP6mrcU}0000<MNUMnLSTYe CU+KdD literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/EE.png b/wp-content/plugins/wp-statistics/assets/images/flags/EE.png new file mode 100644 index 0000000000000000000000000000000000000000..7cedf4a68b96b602ed7b61a731d0cd24ad17de62 GIT binary patch literal 380 zcmV-?0fYXDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-0!c(cRCwB?lQB-jFc3wb69<Z2lt7V&3T?|RI0na{q~<8poPZ;wqm1N=CI!e# zl*C>qLqWo_5=FB68_Smen{SOri3q1i0cXH^T$jiLwFc7rr`PJ3>d%jNxdvAKAl%+u z&5Nu+1m4UCz)A!0E(moK_^jQ*WkJSws)O^(^*OsB0I>#e-eVibw(+x4MA452Km(L7 z4{Y-sYb}4fqLkvlE@fFpRaJXH+qRTtiM4iCf;3G@l4K9)x(*Rx7=~GZ5CVPQ|L!-& z7+ES~i~yTxO0ZOuCjxNJEe1>;4fqfOMNu5{8NC8h;2OACX#N7;6%dbu6fXqyfLEuE a^Y;Mb_M$=_trbxK0000<MNUMnLSTZB5|Kp! literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/EG.png b/wp-content/plugins/wp-statistics/assets/images/flags/EG.png new file mode 100644 index 0000000000000000000000000000000000000000..ebde6258142907e82cae02de43f972e7b7b816a3 GIT binary patch literal 408 zcmV;J0cZY+P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-9!W$&RCwB?ld(<$K@f(&z1^&s(_DfH4JEe5+Sjo0l`MP_8{fsKRK||P2qEDP z_Sn_ku>c}^76<&z6f^%n|Lo2v5#bOhzyc@hxC;U>H$XAEzWLavd;j6SXMkK{<mmFE zrDcU6_{S%J+yFY2C2>3<PN%=CWoyta=x&!(mH^rSq$~sPA%u3`y(eWqssrbo{6$JZ zYB!YH4JF08k$27sFvwPdzR~2XerNJ>$N2dcKY#nj#EN48mdj<Mz}SMb{uQK8>~XJ= z-*6N#D2n1$Yt3S@X!Qhno)cqaHk+NBjh#-XgHo!MKuYQN2q6TlwODIg3xxHL86b!V zRaNb?j6nef&<9R;Bv-&l0eXE%dPji>1a;^+e-8j;TA*}33tj~P0000<MNUMnLSTYn CW~5vI literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/EH.png b/wp-content/plugins/wp-statistics/assets/images/flags/EH.png new file mode 100644 index 0000000000000000000000000000000000000000..ea55ea947c179cb696ecd4ac8aa24921db4c74a1 GIT binary patch literal 536 zcmV+z0_XjSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-o=HSORCwB?ld)?QK@`S+vpZgJ_q+p7Vi5>}QIal2Gz0}3Az&q(rGG-eDn-hW zB8_cG9U&khR<W_T14$LQQp7^8Iy5TFK{mH<W-c=po=L9Iu;ewvz~lG6_sx7NgurD= z0TrM+I?I#=at+kCn#~_?v#j*=cDp^Pf%JK$!tMKue6WU#7E($PLZH*>0Hhj-3+H%X z4fgPmoxy;UQS)Dalu~1mMx%kX79iFD&KQpSeIAK0F&y%7ZjSwfgMX@sq6lLQ02;uG z5N8=jdCt6ZJOq-xJ*ZYOtrl^uhF(}0gA_$Uk|aa`B7*C7aosM1UXSnF+x%Qz1)#t4 z3O#*`Y;A1}Fs496NQXo4p2|R|K3=A_z5zh}Srhl=GuJma!3T)`_#q-^03(8Oj`Y~F zfA<D2mNmRvIUCmlK5d;|uj&chulyXK5Yoc&e*PxwPw${Ec*+nw#+*|S<-(h#DPBIA z!7IfT@Ba(%1gv$Z0Q>shB)hW-@z-y}zEn1>0_wmNaING|J_33Qh(|$+O9D;+t1cVo a-va;$HL4<iO(mlM0000<MNUMnLSTZ)i`t6- literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ER.png b/wp-content/plugins/wp-statistics/assets/images/flags/ER.png new file mode 100644 index 0000000000000000000000000000000000000000..af4d27cdd774fc0b03df0a36a6c598367bc52df4 GIT binary patch literal 645 zcmV;00($+4P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;3rR#lRCwB?lfh0?K@^6+xih_#mReCj36*xy#88cCASwok58xBHap%hT6uyEB zcW!(HcSLceX_P1;5Q2ae5kwJz(spL<opDhJ>`24EIg68g`Oo?D3-3K=kpM!V>u|Os z1Jo3dtvtBDHFYJ)`^yRbcFEQ{_Hc^1sfW+{6p$|LXddORvcD}@bc)YCA>XqSrvx~_ z`4g4}9?$gp0zg^;(!>!oYJ_H+@*3RehN@A#?G5>GDdgXgE7x*$F_pzQ3m_Fh9BY!p z+ce(oVI>6CQyhuOzf|0F0U!GkyvcPi-;=<Gg1|_$F#sq4F?4|bw2NJ?k({tJD~fo> z6P6u`NyWsLXKW5u&naHzJD4e28m4v((Deqv`ZsK~hALX3O+~!xK{|9*p%3HA8_VO0 zWn-|P7v<|bIRfl0XtJXoJ?{`Wymcf;BFv(MI3|oV9>LEG{md3`^R+a_uS6&CyalLl z82rAVbJ$|$1z|oSa1nCJpk)_d3L{JpjkBD)MlF4wRN$!p{&9Rlv!OY7okpbusk@ry zl%%>c$jq%#=88Aj?9Sl=Ng~oDbseb!OtWzeh?;de0;rQ=cJ2-{<D;w&lsHIcP_d;m ziXe_!kB|Z0gE^6c*~;|tv`}UxSK?2$4}?IiEg??ti4i~+7yvSDc3~e_7l1r0l57(Y f14f*+&i@Ah6QJO|{l|5u00000NkvXXu0mjfCifC& literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ES.png b/wp-content/plugins/wp-statistics/assets/images/flags/ES.png new file mode 100644 index 0000000000000000000000000000000000000000..8d149a38f2841ffd7ec558b4d096e6ea7bc6d519 GIT binary patch literal 493 zcmV<J0TTX+P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-b4f%&RCwB?lTAxoK@^6clNs}&CTXyZU>1VZKhT1ku1Xi~{dN5Z{RyQY1YEh% zg)2dVD40bhe%!>|nYnjny2y<hso=!}!#NCdUfy{)M`Db;Cj_Vht3@so4wz`5J^a4= zH{uagDTR&xpRNX0@HzFbU*70hAV%!bF~EujRCF038RJKz#m93#A`91QZH?$M0Hp!e ze>>FDEyO#lU1EACG`l%k!YeK+_{>2EG=R%e8v2H5a?fpF@o?V3{>W%=Cp2m@L;aFq zo&tq{H7SkSfc&z{aQ}k%X^+-@z+eA_jpRQL+SpVBPysL|1u`nWMeDQX{O}j)(E%0z z0SF*rmgh&ZqNi|RjD?`M*-H4>tnzKslK0M-_G&E0@C0)n-eXMuBrw=9NPU@TP8k!K ze|iE;768m@sRsteK4aiAVl_bZZNnHtz&iIR;Cu|6j7P{!uhcjT&<1)yvt;uaxDr4W ji=;{lc)-bf*ZJQ7N&%fc-7_Pn00000NkvXXu0mjfz!=R? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ET.png b/wp-content/plugins/wp-statistics/assets/images/flags/ET.png new file mode 100644 index 0000000000000000000000000000000000000000..059cbe4fcea492e21072807f8a89c69999fe75f0 GIT binary patch literal 566 zcmV-60?GY}P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-yh%hsRCwB?lf7;eK@^3*`PsF{!AgQdD4>BLL1B@GDg{+UK}VhhO1gAB0j~iK zv=l*rL=!=U6j??JPC~$rWjo&8+1Xr*HFl6_oZM!bneW^)_gp0+T&5Hd16L;JJmrCr z1s0#Y+CILB`s=OjRSPT>Qm}q)?LYlZ?1}oPWdXkYY5^=*zzj0@on~~C;q+oP3P_<4 z0UZexGsx9yoxBJD#sX+bNb><clmIb8wD0JBTfr!ycDqk@bA*~ejM8Kw2fzZn*?fm{ z*FpLa1=`<Nc=q-Yw^om+M1j5C1}`=~(7bm5c?4>SB>740FW_|KiA)=0fVCN)c9&=$ z^k^)1NWE~>&Dr@ZH1D<vz5?om(~$*0m-9%_RgZQ7B52+}WGI$iQelwC9H%v!>m8^F z+68nq$1|Q;Xl)v@DCR6FJvPFS=XZ8^`ThZ7;A#AkwXH5KyIiU|$B*340ONj6;bJ7! z03^gbZnb!5_Bm6EddNt8gk+_F6fjQCePV7>w5x)%(@|wuV#*x&$f4c&fE46DodSFi z;cNfoB4P9jSOjhW^*J98fsO*qWRc9AfCBL9vg`b30Ol08RDBBA@Bjb+07*qoM6N<$ Eg1*M=`Tzg` literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/FI.png b/wp-content/plugins/wp-statistics/assets/images/flags/FI.png new file mode 100644 index 0000000000000000000000000000000000000000..58ed9f656757bde0739d04e290db87686dc0ace6 GIT binary patch literal 405 zcmV;G0c!q<P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-8%ab#RCwB?lR-+uKoo|*A!8)e5?xpqU3Od0wcy4JcoV&Y8~5I%7w`tTfpjS1 zrbTL6VUl#F<H9zHNlQ}tV3^1I`Tu#m_m6PSaZCun2hKM4A&~(;5(u4h(=u}Z@S5ju zqsRTP3(=E6rwZH*`)#}ENWiOB)#M9+7US_GfVCFSD|F_uZe&_(0gwR0+h=;07sQK% z@>YZpT;ILa$me0ebT%&pv`%>+&xjYgz9Uzg9AP)$M6L>fL~EP~Sg+f7!eNZTu9Cbm zP)fOSoL)WUXJ06#95DFnAW5qGZR}&qkpO9${sVpAYZTaWB#;?nh@vP5m){?GUas%5 zvj9S%4|EUw3rpZrY@F!ta%7X2fJ_|woqq=a!xoImTRr}700000NkvXXu0mjf@E4}& literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/FJ.png b/wp-content/plugins/wp-statistics/assets/images/flags/FJ.png new file mode 100644 index 0000000000000000000000000000000000000000..c6fc3d33c561ce9a614b56e9d47853509f68610f GIT binary patch literal 575 zcmV-F0>J%=P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-#Ysd#RCwB?lTB+AQ51%sJ9jdfnkh9Htr9^utw@okOLe8-2NVQ1Zgf@g1KqmO zf8nx%h`UN@5q06pE|msxBcj-ak|xwfVw!Y1bMH*<b<xlkOU2j&hqF2FbKb>yg|(L5 zlmI*+=+0hB1FJ4DP@bG!{t)_9>Jj(Ccg*Z9@#%YuiStLf+s^Jtn7e)UfD7c_d=0sN zsfZ{PP%mp-JW=Gz<x%FVno_^mX4wMo7aIUM7myRpGRfQ$a-~UFt+S_6q2>26Mu&$Z z7Z873-j~awQv)DffXV%*xp8io<VPLv`3utVar!*TtG88}kp|$_@)Vhjix(Q64qrnh z2>>p@*dfXE)I6WV4EL?&+3N+q5peaG<X5!5n9mE2FE#m?b@;iK5GlP0xKmF_3I|yU z5}t5o!|LNjfK>pzn#R;Z28WKY;IzpkF#rxgtYT7QF?Q$nPM%`0m?t~3MrtgviZ>m^ zQH=Br<}Xk6pyhEhILxDPh}0N5(H4MG3g3bdV!N`-EH`qLgAz2rch@x=0Id|Bv3QR2 zPcLYUMQ;IUYg5{lFaHw-Er0=_2=w<TZUa>T$Zn8ikAM!K#ct#LdjKH)%D$Ssaf1K= N002ovPDHLkV1k3i_m}_x literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/FK.png b/wp-content/plugins/wp-statistics/assets/images/flags/FK.png new file mode 100644 index 0000000000000000000000000000000000000000..0f73dc40a2072a72ba090fd4de28a9b29dd5d813 GIT binary patch literal 595 zcmV-Z0<8UsP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000WV@Og>004R= z004l4008;_004mL004C`008P>0026e000+nl3&F}00009a7bBm000XT000XT0n*)m z`~Uy|7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%heMHvEiZ-v9sswMj%lR5(wilm9E+ zaU91#cDfNoN?VJNFJZQm!sQ32#c4mSHRDL_FOaRRWo~!waGk?3oQvGDPQJ{S!dmAC zG%h8UQfR-(FO>h{;r+f7S0~-IcRhN)d%xb#N4?&?-wN<w$e|Xb2p&g?%*d>gx;s3} zN8=*T^n)Dfo5-r{<4a>NzimHI7g$hoOm`!)Qjn>u?c=~a!r!$$j;jr9S;yF4_EV;J z@*vklj6kii1$k}@6=X_5_P-Z(1gLt$VMb|iE%56MB;*=V7g~8gzD=2BowOETs31Ea zn6b}t>HEW(=O-tXuQ^@W<a~S@*H<rb1syzmYNf%o!}-Mp_22yA0{4)QZR0R6>s*05 z&>1}J&2Qj*=MXKJi7V<Pr)`NEOE1N3-f%(lD+j41-6UzcXeenVzR1cWt%J8sZesI9 z|KcJ|GdnCywe!Kd8!ounxCf`_7n37)y6oR?_ahZNspw&9a+=k-IlP1Y#O8MdYmo}l zwB1Y$jN<NhGw|s%$(rl85vd^X4)V={;CxfN7NmzBjtZF-BS}ywD321Eky%A0h!-SA hiOi_({GySAas}>ro|?o=&$j>o002ovPDHLkV1hXq2tEJ+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/FM.png b/wp-content/plugins/wp-statistics/assets/images/flags/FM.png new file mode 100644 index 0000000000000000000000000000000000000000..66180a6849288c24cfd7b241eab5cb13f529b5d7 GIT binary patch literal 565 zcmV-50?Pe~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-yGcYrRCwB?lg)}#K@f$%>b^IV`H2}&2E>)ltljtoqTn0oECzfMSH6TUeFVj= z;Ler08+D}tlPe}6qq(`=eSf-K+-M>WLYUe#be%fXDb5j9<sv0O2iRM_n^Xzp3DAH1 z?CtmS5KW8#SYys*c=YhrK?3YXRjyy{{oPgA?`<K#EDx)d1ytd4HV4>E09)4)7aHb8 zwVYKNRc;<$rjuG;z8N5ZhyY4&C#9|<fK32GU6K2WMQ91?I%16Q>fI0#D11euN@80n zVuVn)*p?tvEQ*SSuStw>u)oc8?#ZSL6zHawEB!8$pPs5xMB5nv1K^w|n-z>EIT7W- zokO~*Wi%=HHZ4%#`0f#%#4w!XWU~V2{AvU599_GOAdF{@r!P*)rUi(iz<B0(^8A$1 zc!3e2sTJ?s8bJu8J1sa=k&lBjj1eyFZDA08<bh9vGpsd;Kob=o!b(E$9#w5G4J6i} zs@%VQgOhtl=<?4<+gDYBUz1Rl0agB786Z)^>-QPf2%Xd->lV>=<~KnZW5a0h;UA}c z{qlb&0;K?b;2O}|Fbi{FD1coC$!<u{0Hs_s&c6l#@m1MZ&@bq900000NkvXXu0mjf DNr>&( literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/FO.png b/wp-content/plugins/wp-statistics/assets/images/flags/FO.png new file mode 100644 index 0000000000000000000000000000000000000000..b8de1071ad51d6ce9acbb53ab97c0f9b56e0f427 GIT binary patch literal 462 zcmV;<0WtoGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-R7pfZRCwB?lRr<wP!z>~uav3*D`1F&F`8f;92iUt`Vm+h9B_AcaVN&l!tUb4 zH;@4aRy0);6O1v^2P9D1J_r7oA{7Z|xyijbCpY(;E0j_!0|6L7d{h^K19Sk=Y6|&c zS-qWKsC==k{sNHJf!MTkb}xk?4$1DO=4}zvfyi|C`J;{d@`|<Ao+l8|06fnNbnVUn zUrJ<m5Xu~Lbb#ZlJGM4W?Ct=?&=tRBV|N`+ukU}66ETDLPdRZRQ$NZ*nx2m@<-g9a znI<x#k*!tsb%3*jOIS(J>HVx+dAKEaax+sPz8Zyo3u+YrGL~fp>`4|%>S-sVl7&*J zg_dP0Afo~FdcCQ12@qmfLonuO0R4VHFf?=x5shN#TByL7qXUlXx>T#x$xt>M)LUQ3 zW+Tv_6=wl#0NcR&g1^uP-oz-0#;ionfd@EZ*?0aP0J=HK)f&(xhX4Qo07*qoM6N<$ Eg4VIN)&Kwi literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/FR.png b/wp-content/plugins/wp-statistics/assets/images/flags/FR.png new file mode 100644 index 0000000000000000000000000000000000000000..3f16223cd0e3ed22d5dbe49420e99dc7ba9f86df GIT binary patch literal 446 zcmV;v0YUzWP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-L`g(JRCwB?lRHksKoEw%^%|onK!lKJC@APCXmWyd9D#Fi4-Uc+XmSJ7P!dHv zM1vAJ&dc7ly+e`2i3vuEGSX^iG^=lC|D91H!ak;e061FiyO;&0KG5oP9=?BPyWRUr z+`qlsB3wN^p8G(vC>-tf<-gZ8ZmyR#D-dD+`~uMQ0c~x;c$_jEPHO???W6Slvr{C? z0JINaj3tU@MA5t!;6~%pFFZ|d(*+D5NeqL*j5wZC_bK@(E`0%PVm1K@y<SEfC-su| z-%DS&PDp)k4M@`jkp|AWdKEWvl4Ycs+XNW2KE%2DrjivvK#ClbTL8R;hz93CDOIkm zj$7qC1x`qeT~}bOB?yEd@avxt98{_?b}gb6DVR(?E9b*7ti-Qz^ryB8XaN_%@s6`F o0lpNVmxH8t1QdW(`;PO^0HMN{q8H0uWB>pF07*qoM6N<$g6Q6_1^@s6 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GA.png b/wp-content/plugins/wp-statistics/assets/images/flags/GA.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc55949cf66e365b2685c2c330b6d0eb4f2ee00 GIT binary patch literal 400 zcmV;B0dM|^P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-7D+@wRCwB?lTA*;Fc5`5*J(-!AyOr}VaXPWD{uu^!euIPAIcRt0tW!GVN*mU z8q)Zu8M7dz6d{qcBUzSgzc=&VcvJ|1T|xmdaM0{s!T}!<kY7&5(`~ZfUW`W(kk(Rj zHah79ewaQ2q!FOKEGgWAnJG3Nt^83+ZJZDHGQ2DSbOd0%=iQXdP1!2Drib+&fC%93 z{GMe02*Ml)zdZh<ODd;YyppX5tf@!_PYpqv-W_61w64I|s=29KTIezMhlJDXEA(JU zS@~A*H0e{@8E`}IOM*cppc>WxEs=mVW?g}Ej#vV5U$?42B;cI;CU8N7;_Z2x&*&78 u1IIwt5nKQ-3ee3U>5c?7;MA_;{5b$s7jE<s_0_xp0000<MNUMnLSTZJNt>zw literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GB.png b/wp-content/plugins/wp-statistics/assets/images/flags/GB.png new file mode 100644 index 0000000000000000000000000000000000000000..c7f7128c3c9f97d76153d257eed05cf82ad46d41 GIT binary patch literal 707 zcmV;!0zCbRP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;Nl8RORCwB?lU+!YQ5eU6XM49fHP?q9F^v+#6=EdPFeK?_7=54_NkxWcL0v@D zMPLR6UKt453QDMig4Bx$QX+_Q6$DWTu8)hNF+V2L2F<VO_P+1w;$4c}iT|5(;PCvO z^ZXzFLQ2VMBmgUro;+8gI549Cj==S{i7orfc{FV2$-@EWV=-Plu4nA*WzbY|AKc<_ zV>bztg$5TK%9AL^Ye{uxXDdKj%kT!8zl?HXZz)CFYUz9S8I#R|eaCjtbWAo2WqVxg z%Td{tXJgjAo95P60BH(f{`Nh@y^TfGOunJim5H;V96g~C4~&4Sq9-(}(jpXPW)LcN z)9D@HgU=6O7C^yFaO9`OW<zTFvLVOLTm)4ox68ZSIJ1ew!UE}=H*Hk_ejRNjHN$}x zjl#dBNC{>WNJ+5j6qp3)#-p;%!QAweaR-RSVwfi)XwfM|vKFZ$6vbevDhPoP0tu*& z4Cd19OMtBV?c`)-B`cQ{a91J|2?_>Z|F?WWcybclrI-LpJnguvyBLaENO|kSf8&nP zS(ixN@Fg&BCFPxuPfZ<o>bfcM+y*cJ`GrpUo}Q!3*UR(%uhf0CCmRU_0)T@DI_P(n zQE}QsXZ|?Fg=?1p-m4X?zw4##WthhII^oc$@l~q=HVXi=(|<U5<R+~@9JtOO<63rT z(Sx|w(@SSq<H|r}am+#g5aT;tNKGT^AL4f;2td<?7J`>*sIRVs{+_r196&CxW`$Xp p2F3(nP6o-mLVyOu#cJdHcK`^3)W~aCa5n$|002ovPDHLkV1jwFHIM)R literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GD.png b/wp-content/plugins/wp-statistics/assets/images/flags/GD.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ebd7e1de89e109c86bc2868040597471c91efc GIT binary patch literal 683 zcmV;c0#yBpP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;F-b&0RCwB?lg&$1VHC!H@7#CpIE`O3l}0x$B~$vqC?+VVpcZXfv=E|X7DCY? z5TZ?+`U_eZMYIW8S;1^0+yoIp1SOFsq&TT)snM8@-S@ut<83j6j!W@u&f=W&oUi8* z#u&C@0<eMFir<WBpd^8Ysh-OV)sgxOn&lyz<mnIq_nk#!k7g;qvB%#0%O(k=2tpS6 zvUHwbp;nfQ8gf;cH_EQ=5|jeTt3nf}?!E;`Nx(9`&y!@Dj)@Z2+h@rn6(+O*v$m<Q zLYCYbo)%gdn@@1k_W>*k5NMC0Ugh<K&DiuFZXPU<Z7vdp0)Ut_49_+4@SDRAFF`u7 zN}v@062Mc6wuM<%G7;l{EpB~q$n7`e<WGnqUKodG;|>u%!uI*?3Owbl18CQ!&i~Gx z=1B%d+8IvQbNl@^E>6x62|<5b2bttNabfUe3?p2$>z1bja9x+jF^8d#JJ{D+;$I-h zbxgyN2>W=zwXOoLFHoT&G7&)(qACCqKq*BK1U!&?X)bx(KQT(*fhjQMGY-VQklkM7 z-f$<2ew=tLM5(G9C{Gg^Lw0wON5@9#Zu&zMNQ@Dc9~gSOr#R{?)BouZpXX|DJ-xny zr#-TZMe=9Aaya7=1}O{)5H<)KBNBu`impb@;F%G6TV_~Q{u-5A@;i4;S2HYqMYB8@ zCvh$Uz<U#;{;E&$`9>!8EdFX0Km*_ab(_?}3NR}Gt0E+8lK>&0#a89~e*k&M?Q2$! RP7nY9002ovPDHLkV1jUY9Ekt` literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GE.png b/wp-content/plugins/wp-statistics/assets/images/flags/GE.png new file mode 100644 index 0000000000000000000000000000000000000000..168c0e30390aaadb7bdf87e859dce5e5d3dbcf85 GIT binary patch literal 509 zcmV<Z0RsMsP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-gGod|RCwB?lf5nkQ5c4wGiP=~cI|HBXE#J8Q3)D_Qi%dB1%*4%xd5Ge(dfB= zN#+9VDugWYzn0lC=X{D8W+qFq@g^syc+YwA{VEaRKT<#uC@1$I3V}C(ars3y=*jiU zs@!aC%U=S<U7!Sj2yZ8+0F*b^K|2%|=W)tq`uvSGa2$Y=3upi_7W42BzqJ-b_-tL` zRBAslXMGg|v<qO2LA#pD-VTVMv<9uQ&#$0#QY}Swe>a601Aq(AoLizaQOCZ#K(;GN zVV|D4T3F6i&#Beu-rc5v_m4-Mi`y8Gk(-n!qMHX)tGpKqDWHCKPNQD$>r-oV8i3hu zr_XD*+b}s919}K*c!>LhLjcB(kK$CU$)%I^gI+I<AP548B19=bATppGP$~sjoA@AM z82?E$<NJPoLW~iyR+^QDG%F1eYvYrV@B0GGxIh?15uWGelN8~q^9sO|=cUm|vH;0A zE1(KY0V4zMLI=23$s`uPCvpH8AXNWd=dS?(&>-&Z$gsnQ00000NkvXXu0mjfvYgE` literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GF.png b/wp-content/plugins/wp-statistics/assets/images/flags/GF.png new file mode 100644 index 0000000000000000000000000000000000000000..117f69e30cead1ff6e4bd8776066dc638acb127b GIT binary patch literal 508 zcmV<Y0R#StP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzo=HSORCwB?Q@<}mQ562}eXp%*nqXjH zB4K0^3zN-a?W#6=2Y-ZrK%!Pm42{V|B$z}Dq?-5{8VO!s(`w&)*LUB2O=}|UOU}C| z=bZ05zwQ-EDfIG5^!V8&A@&1cxy$Saq6nyo<0GKy0YXszK<SQk+c6u(g+<t*@#7s> z&9I)hA<-<IWG#?Z^yxK${Elg%HaZ48-2*-y;@eC`Sb&vamV_Z_((W|~_5t<_9(Z{$ z11y}LsybKk=1~F)^;e4XxT)Oil&Y;yhPt+CUl`*nRij=wJ6BS=E`;yFb{*IbrBX$L z6{h!cXqE%iuN2a|xzMJ4CdPsEeaNrRXa+(;N-OM9NQpSD8|QNvx+x>6>Ud7gVU6wv zeJUJCG$TEOU|<le10tO=T+!vY&TL`ZJq&FtnI$HmFO~eY42>0c)W@^)z~x1oSyJLL zie;i3oLYlD1ggD_=~<NWC#*mR#7RFg91%n*I@j3WT4R)2|A^68GXqqCfxZ^<A2%t& y=;&L(Atc?+RVGzMr<<WzUA`q>^!l8C1Q-AvRJfWxuwS|W0000<MNUMnLSTYyp5FEV literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GG.png b/wp-content/plugins/wp-statistics/assets/images/flags/GG.png new file mode 100644 index 0000000000000000000000000000000000000000..42a0ee11b54968e79e28f4549508123e6986106b GIT binary patch literal 570 zcmV-A0>%A_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz+(|@1RCwB?Q$J7CK@ffWhvSaG-R}bC zz?hI28#*hYh7WKBR8+Kn1q<RAIBQB9qlJYgHkX{V>V*O-D(DC#9Pr}~<nY)XXLk3L zXe`W4@{-Byo7tJ!w~B}`ifN2!w$*BV@ZQ&losib><q8&-7U2@fF!sNGgYI5Jc^_g* zDQK-fT2EA8US5H7i7o}kEJ|<R1BG&o{pezL@fq~s4oC%zG1%VzT({m@IIebl+DQcr zd@;l0-WsrxT6hf{pZB5rITwf*&DCn~e3>rp?!g%ilRbc$s=-tk**Nfgg2{+rUt-}* zIN1z$$rn{BzyXg<uU-;OE21~-PnL+PWul2$qVI?hUt)459N{)L>5y}6n8*)+$!TDn z$5^}J0K;{Gej1^35;rMUV7y>1xv*p#f<2zirWYN`g8t!$x6?5v?wsw2o4Gv$-m(9% z1kCenPaXlhiU9E?CTGGCF6V^YPwh4hSOnLMt9zjND$xxh*uQ@!T*;AKYw|qIp`=S6 zwHdl?TmZ$?GW&(ZkylYVt|a6Rm1X`Eb|V9}W}<)H!Px5G;+I^@lI%5`%_)&`kh8Jy zSrrRka=tA8m9yX8fzG)rcNb)w(37s7;`bx{uQ@g9cm65B0K)_B7#z!_F#rGn07*qo IM6N<$g5$&o8vp<R literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GH.png b/wp-content/plugins/wp-statistics/assets/images/flags/GH.png new file mode 100644 index 0000000000000000000000000000000000000000..0775464680a4963cec3fe8c061668758409d2192 GIT binary patch literal 453 zcmV;$0XqJPP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-OG!jQRCwB?lTAtkK@f$%&P)=A7y<@#ky8vI8xexI5j=-0PvhD<xD(yERWNvh zfSVu)G3Liich5|hi<y|rDt`}(f};9W)$1xHBJ2YNRDi?WZvzX=e4sHnzxvvxdh7Y& z*avEoCRE$uW-Tj)h+ul}05u=*#KySEgmm~_%wFiDR3Yp&j}RLJcs@X4EdFSW8;v*X zqU4bn1Aq^3^7Km(3_->~RyCr;>zhMsNB7L9QZ7m#%?&hj0;3~>YCk8)(0hUFn>pIR z-EF|-#mX3}K{E4}9cZng0pPNP5`>}9?Fd>6owfr{LAqdw(K=odoZh!7H|s=+DGuAs zT=-ZF2Y!`!I0Zf^0a$Giaj1N=)|rUI>J<@<wHzRnvrkzIhhVJzC$N$_e)^xgETdIq v^0k2amXD{vKmlHUNZytNDPYyU=lnMSDJF&HGpv~!00000NkvXXu0mjf-~6>7 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GI.png b/wp-content/plugins/wp-statistics/assets/images/flags/GI.png new file mode 100644 index 0000000000000000000000000000000000000000..2df779c2232836702ac0402236c8d948cf432c82 GIT binary patch literal 516 zcmV+f0{i`mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-ib+I4RCwB?lfiEiQ4oi}d2hRAffgY#u?8vi?6EO=@P9Y<sM13<dMF0EX*8)} z!G`R<W%o@F&@MrereTh6X1>X9-fu)z*(D4+h5%Moi_L@w(yJInsrPzYCy7W90O4k0 z^7#wtXv};xMilD(W1{{sowui(rC|Wr&DZqihUwP<*Wn%tbO-0qtZ!3b1AwwDv3AMH zr&E4?{KVvHj3RiHON5Ruc>ew!VY|(J4?qBr=Q&XnEs+OJPU4u}kMB6yLsh9!V8vh$ z4<AP7d0qjWa}~e_e48X(42S&0&;WXP-n{72wUt`uTm{IotkR!MNxer}9gb{<^&r$p zy(di)qLqaE9s!zXt=8=;Yw`2>18D!{Yeq-^P~hZG3wJ%N%+qKPmn9!&vxDUhN`s0A zkrmZY{Em6HFep&`ogrdTJOJuF*}4Sh7N{{0E-j%z38Z~!T!Ie`x@INy9=E>4MKR~% z_Ww_I1K3X=w{iruf!Y(#AOjLvIWgSk$VZ|Ca@qBq?*;(-ny5Q_q);9J0000<MNUMn GLSTZm4BA)# literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GL.png b/wp-content/plugins/wp-statistics/assets/images/flags/GL.png new file mode 100644 index 0000000000000000000000000000000000000000..aab099a410df40f08c4a475100a9335f28c4ac80 GIT binary patch literal 521 zcmV+k0`~ohP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFGm;eBCjsO7l0ssJqSpWcWTmS&)2mk;v-v9s@mtD)k zYXATNk4Z#9RCwB?lRrxwQ5400Z{9GtuF+jW7Nd|xt<=I+v9Yzu2grA@^b@2@(ptvS zGyy@dPzzD875rDYAPX8~!nnii#+iNdW^Rhzn5;%n_cWLH-aY4X?>$e62)#f79x%{} z&w&A&E-)k_{)?(BRdIk~4;>U;K>vGV{Tssd9Zc;C@7*Y+_Y1g{*N+Kk1&mp1t6FQ! z51-nHWhBo~jz)5W_jZ_(&&zltl`dwMWw@?8?f@8L$deYq$~SBfAkACysDU(7Zck4L zR@NR)(3ra|jMeM)YN=G>Xn6k7W~Z<By3S!3QZARrU4X;MMc#OY2T6YrpH(@k%z+3v z3TL3701JQv&`K?mX82!L|0~eg+{Z=@#O8>}kd`I+75^1TY>Ffa;rDH#t%ELdv~__0 z=_|UwfYJ_1J0L>bnSl#nQUim7#HZ(6E`6jpJ40b=g82BHXk)j%mA<|^Q4wi#Is(S# z!g2Vs{aR~6?c&LHR=^N23cPxz3md?d>NwH6@5m=01B~kRJO3U4as#XLIk$o300000 LNkvXXu0mjfu~pzu literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GM.png b/wp-content/plugins/wp-statistics/assets/images/flags/GM.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f96f79a35aeeccafaa6bf6ae3e94739fc04101 GIT binary patch literal 398 zcmV;90df9`P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-6iGxuRCwB?ld(?2Fcd|P6{o2vC8ZJ_=$N_U2lxgC7QTWHVq<0DUl1$EVkk&O z3ax@@;@EjCg``r4q&<se$$ozKzH22S9D)LR!0~47f(5=c5YMk~7W=$DeSDZ`U?AQT zUCdgxtPq6a=^0?4fk4U<$ufNUwS8I|LK_6*Q=}{b0)WIhCtY#Q36N-j+0`ABvk|K- zr#Td*VAqgFCw&&5O8_*$dY$v~ma@u<RzAeTh)~%^fjmb7O;yQG&0Br|rLS-<|KBIZ zn9d#;V`>jB?{7IeA5-|Um4qk=`FT%k35B)v5yC*XDo`O5w)Vh^uUNi*>=Q<-fEbtp s!;Y6TV6HZ4>iwmv10JyI(C_>^08`!0!D9oAc>n+a07*qoM6N<$f`dAmn*aa+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GN.png b/wp-content/plugins/wp-statistics/assets/images/flags/GN.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa42541b191e8439e5f050164abfd27b4e67b86 GIT binary patch literal 453 zcmV;$0XqJPP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-OG!jQRCwB?lS@v+Fc5}6H%WO@gb+ev1A7n)P686*I-G<fa0RXa>?_IwAtBU9 z0>pM|4~s-`9oSTOll+>@=YKLYN<{e2Q9vKqY@W*;3w)-);PvwQy&FBa{f_k2{rNA# z-Nns*3T%jTtel<3(NstBWbY`_kMBc(jTA_vs*s|<jVIv?R|3*j`jYRoq21LjDnAEE zQUGTRewO3&JOJb?x-r*5C-g8?RT~AcT9b_@HK6H=$XD}^Ydy6AAPTh60ies0{_`ky z;EKq>Xm;GbZ}-<pj08YgmTdNVi1!OAE&_N7vALgPwFv;DH7e_O0KNkV16O%Zr58)E z7D+Quim1@e#I+&u9S6q1>KZD`7Bb?&%<6_U-UMT93$RXvr|Be0_;`rhI32$IInD|g v0EfWVlDkj<uL?+-MM{<gIKZm^uJg|T)S8`2fAHsl00000NkvXXu0mjf@C~`Q literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GP.png b/wp-content/plugins/wp-statistics/assets/images/flags/GP.png new file mode 100644 index 0000000000000000000000000000000000000000..ca40788d47f6d590b5153cfa42802518e63eb289 GIT binary patch literal 509 zcmV<Z0RsMsP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFGm;eBCjsO7l0ssJqSpWcWTmS&)2mk;v-v9s@mtD)k zYXATNgGod|RCwB?lg~<9K@`S+lRL(YvDn5<7mb2$L<;&M#zmK1*M%?87wFDaAE30< zwe6x6q{WRQC>UBu(UKA*rj&At=%tu@XL{$3izJ3<{F}2HhVT4_^PO*mbB=y0MV}=A z&p8+0t62ysf%I*}rwvUQX;fyA?9gEQIxPY3qImIJt$AqK^FqcT6Q(Bes7%*;o&>Pg z;&~lT5blwZQvf_S0dM^;l!F>;)347p)>;50fH4N86eJ-He}VU7B?6}?)nD<hy3KyQ za%m)EOb4K~Mk&Sr##dbU5rZT*@Pto?JFJ#BdU~R@?f{}FYPu>%`FSu&Ii6>?VOieW zBDo?b?Vc{ck6(Fexi`FAU*g~C(Y0H-1gKR1GV?UgtQbR=pD~=xViQYYu5c|N)t+Z^ z{4qiZ01_+l{Qw=o#^w$yA3js9)~@y-j$?|&V$<F54-bdFlX@^f;vC_LU_`<1LrcBx z_l&Xv9s!v<COHC*MJtKvUWvS+EMP>x-}!6+qK~MB)(ehh00000NkvXXu0mjfl$X_M literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GQ.png b/wp-content/plugins/wp-statistics/assets/images/flags/GQ.png new file mode 100644 index 0000000000000000000000000000000000000000..7b99fbcc7a17654cc331f5cc34242d6aa73ddc39 GIT binary patch literal 536 zcmV+z0_XjSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-o=HSORCwB?lRrpXK^(_F_wE^^F-k)y4HiL)RB<g`gic*csT~~b(xFqk3qptD z+`YKF2?ZBd7X_h1?NBVO6-0Tqg*3ru@87$34#pTe1cSfjxaD)-`|$gU5CS(D0Th6t z*4fKgAdP{M7t1TZ)9Nll2ngcZgpafDZpT2$BsC^)Rq4BPcpj<?L;wNU`LhR5iUH|x z{5={bt(TB@_uGIAJ>oxJrC7#!4<KUzV=aw;iu!SdA>#?7yIrG85n(b5Kn$R@#pRMz zXVkxyc{w)E>!<etXfzWxethE5!~-hBwKha4#USr50Gi`^#;J1Td0^qgCbepT*_m-p zRKO=q+`axQDU2}yL;y-FoXhb(aGFbA%|GPX%s2p94%1^(7~@)A&c$f0JHDU{8H1!z zfw{&P-YmZ5=i=pSeSib@TK8yRfJ4{ez*vJW7MV-7So*$-i{h>lLkMWw0cd)7l5Ded zum=4F1hV@E<$2pd4A{rNKJ)zRIy;fTi>Rk{7QhHF3Y2^7!U=FB0NE;%>=EDrD{fln avjG5f_^W-k%IVJl0000<MNUMnLSTaao8dSB literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GR.png b/wp-content/plugins/wp-statistics/assets/images/flags/GR.png new file mode 100644 index 0000000000000000000000000000000000000000..d52e9bdb15eccf4b83bedf378f39b53b73b46126 GIT binary patch literal 433 zcmV;i0Z#sjP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-H%UZ6RCwB?ld(zzK@dRSvYRN0CXylst>i2$L?rftijAGWVc{>Rl_-`LHdeM4 z3Th<@Xnw%zL}Ij&BZ>%#UdZLnv5C1NLAm5L%d#`Wo828HA`F58;=o9Ije-Y!8X&!N zRCuN7Q`lSuVEOPGVj8~xwkvL|WDSrE8Z8zk#ySV{*%T_KS)a}IR2JZ^_C*nr3a~_^ z+*kifO&fq92+&%01*{$4^i0eo;yl0CI(uto>r@u^ujH4x?K8>mUCLj$t}B3L09pi; z>y1vuN4JUb19Cg(DAjF{8jfLFVZ7xyjzq<AoX{YDaDmB;<9h!8Hz$x7GWZ|W(7?9s z$Og7;hXyCNcT82Ak)H7B;T`}3c)O(vlq&sv1y2EKU=kROm|O>56rkIKq$3sx08b4% b&OZYHySVM~L9hX^00000NkvXXu0mjf7g4Ko literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GT.png b/wp-content/plugins/wp-statistics/assets/images/flags/GT.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1f6e79c8c5ecff872fc75bb701f4520439e72c GIT binary patch literal 549 zcmV+=0^0qFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-t4TybRCwB?lg~>PQ545NcV^z?L(PS0Qam#PX=&(6!9^5-n-*pDNA-V1)HWh$ zBQD$|1`^ZispyCV;?t)y_s7hf7S4O~9=^@P1DDJB!u_7_`JQ`}h;W-wKnRSL_b_3B z%K(`8^y~1SqF>4T#YSKLdHe7N!-u8W=>Qnb#pA(vz{2ETexE)aSZ;dkPN`Xe2q$d= zFd6_pl3{a?jra-R1`?d>3a{6EifiwD4?x=t?Q)hUx6m#}yBvUAq}x~r?;Phc00IE# z45_Q}{b&iH03eE+jHn|{(~OaD7M%rs-fL?B@BmVsah6z~Pkp16I9iG0&+#5}^(*cZ zu@gsKyp=f45{uEMQee_6!g`&r`!As*`l8Kd1o5ST{2U3ZDHS55sqRr=9EHH!M?a8~ z;`QnpkLMRzdG>~PFV?%b0EK`tx<`Rd5fQ!|yy{k|)j}Hg8UrUHBBZ)Ufw2|=*5`iW zdkWuEHy(9x-@E>D)>a<aBFkt-yL^mhfL#E#?_Tr~G@}Dl*@CK^vI>|09s=V-?m`=g n72ubP<PS-Z16JL3o&OI2gICc#1i-0w00000NkvXXu0mjf2W9Po literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GU.png b/wp-content/plugins/wp-statistics/assets/images/flags/GU.png new file mode 100644 index 0000000000000000000000000000000000000000..42fde748b645783003f98dd7a549c5feeabd08e1 GIT binary patch literal 532 zcmV+v0_**WP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-nn^@KRCwB?lTT|DK@i1%-7`C8Wi=)X8}X!g^PqSTQScz-JLI05M?Z<5!>eae z!9N%X5k)*ja?+K!ahT0)x@V@l%EJzuT|tO$oto;ZSMOE7Hmb@pVOcT^kUZUd9R8<y z>-m#31u_kho!bx2Hqn48-2LzxAWMNnn!tEma&%NK6c4OmfgiG{wBPR`O#nzzfX3J4 z`3ZS`GAp{01;YIvY9r_0lzgkx)5Td!<7)s?0Pj4bQAtraRFy7)^v;02UWIDl#?_0| zJ3}UPfT;xU{2YLH?C&2^6b>*9aHO|3xG>tlmJN;8{5&{hC>a2&t6ltxI|Xpg6JkVU z>WP95_de}n^%C~@JJ*8cRa`?_&x8<hEdvWsRh|$85kVv}5zE(M!%cn9qlbIE`w}^h zNqaAZAXL@7gvuiw#Te7BN%=TlCwT$SUS4PSS07_SYa0+zd@~17*A0?bvh3W#bA6s% z1|Z7>NM?DFY0nHGim*L-`&X;#A7=x^xm*`m16Kag$sWi}%Pm{rc(#Z@ZI=DczXt%< WQqJWUEYBSP0000<MNUMnLSTZ(!P^o5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GW.png b/wp-content/plugins/wp-statistics/assets/images/flags/GW.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2cedff6ab81d85fef976a8eb9d5af7ad01132d GIT binary patch literal 465 zcmV;?0WSWDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-S4l)cRCwB?lf6nqK@f$%o4ZMji6%x7K~mbPjTXLvrH#E$Aijn#VQuXr<N*{5 zu@Ni`LXg~;sCReo-5rbki;0E|EIV*^4rg}e1R}yB5db-$)W7Em3w$V`+&DRH{zSK~ z;y)R}%FU(%isBskz1>Mv=^3I0(mQ~n0zyd=e7B2hMFSXIJjnV*W09#Mk^qDXAT<W{ z-a$H@VF~g%UAxcVQqvO(V6`S}MbzJ#9A)z;K;&~I7YMU%tP77zK1Kv4j;TLBaQ^bl z<!Y7Ve1V<o!>IyRbIXLL2HcVXh~t?3${H7iA_wami1&Dzeo~(j>#s2d+E8;5XG<k$ zzxUdlv0#b!BwCLMv^998APA6t=fRBmi+HRa`$S_66bg{b4hyrr0sTG%1Y_-xz@}cf zkD`f3?Wfm&t#bgBfo))APA_zUMgW9;BZYGkIKT#r+WC6`0)C<>n|h#r00000NkvXX Hu0mjfiDkFD literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/GY.png b/wp-content/plugins/wp-statistics/assets/images/flags/GY.png new file mode 100644 index 0000000000000000000000000000000000000000..7b4ce14ba752540bac321f6908f0d8765b91a804 GIT binary patch literal 686 zcmV;f0#W^mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;G)Y83RCwB?lgmp~aU8`zzk7dk@1#xI<Rgg42+1B~Bt0afAOfYxTnJVRS1w(L zo1vDiB68s$5J^xi3L<+5HiZybge8*CX-1t#HsjT~_s*U1-WClg1cG=rXZ8JX_;QZ$ zJddqN02;8p=$nxPtVp0N6uOn%)!N9Ukz_IzLx=*pDiK22knpVSc9jH5uYUYaqIx%% zTMuC!t7l~1WI7YaDrE7g0x8u0j=v?R07@mG?$srgqY(y2hN$l<r}NASqM2I4^Fcl* z;w-Gh@w|L7l_2O3kar6Jssu1?n-a&QIpO1VD8YEgQ?B3Cxlwz7Yx_>}W$`$Ju?(ZB z2u3cA>v`CD2LK7+*fze!G@iLciz^uJh5KV^I=Vkmy>pnRU<FN;4a{a6cr#bS*W?0u zXC1({EVP*!T*JTt&I^S<eKw)FB_8zoQSBIb!_;Vkt|M(M*Y$8OTuyjBAfPDVx|FyI zuQDbR%`5bTTr_tHd=(%sGHYJo`A^BaXg|}@$XbG&okMCG*d7n<G=*-1J3SiGe;Cuc z#D~;D9#5nR$9|B?E>NcH2rIV+aPtmEZk0#=c^Z3zTxsuMDs`GCV}4%F{9^p~0EN{o z+oX>jnuexGOxsukOf6;@I(L+oyPepT`{^1m2uH_BTM2Y22xzic)_-#G$gO*#(|@Xt zs<yMdcpG6X{vJFBT}l+8U;^d_brwJwum=ciatq7AoB-6~kkm~ARslzBb<TeW0OIQK UFJ-l~TL1t607*qoM6N<$g7W$zF#rGn literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/HK.png b/wp-content/plugins/wp-statistics/assets/images/flags/HK.png new file mode 100644 index 0000000000000000000000000000000000000000..173b18157aa9d703cf5dd0e9b0020bd90ca7b667 GIT binary patch literal 469 zcmV;`0V@89P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-TS-JgRCwB?lfOy>K@f+(z1xckCW;mo`V1+>&dwLG$Rk=<_y9hE78VK?qM%JI z(r6OR?f<d3lRHHr(H|@e%gi@BKW3DO@E<9l1N7^A6*=Hd1DoUH(FA}9WIztx{eZd9 zO_?9GcXqm?fpv+I-r<m9H{qW%(p-_=VK9o=ySxIch9!W#z5!U*KrW?6Z%yePO^7EN z_gGa9PttVS`bECIg?JB;Yk*)a_I6H~EbtE*agw3B&^-v4D-Hf@8!FF<)&igbd@%T@ zDduv4Dg-pF4LytVqVgns^FhEF(*R6a(z$;m&1QVQ`iCa?yNTJx1}4uMKv|abvkZ|` zMfmy@El5i#cuJQVfHf9X6i7-fr-1a!@c4kOOsrdQ7SS4%T55ts1mjvJT5F-(Llwnx zGni79Qv+NS;pX+_FRS1bunFt|gB6qKz*yCGb?SQ+MZl^5uJgwL#&?-r@wpHI00000 LNkvXXu0mjf(B;2f literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/HN.png b/wp-content/plugins/wp-statistics/assets/images/flags/HN.png new file mode 100644 index 0000000000000000000000000000000000000000..1d47eefeb39f9a797ee294fad6f186e5ff4ee3b8 GIT binary patch literal 432 zcmV;h0Z;ykP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Hc3Q5RCwB?lS@tlK@>$#(G^JeghZkaoY`(bHenpP5qIFo9k>tT(69nVgat^P z5aSQ+0G&#Abyq(Ie5Cy(4ctl9OVzz~-%ULwBJ2YNl!5wk-3As2HPF1g>Avss`orzT zkp^lm6V6Xt#Vjijfx*)!KurT);vCb+@->TdmsjzqA59-LDkP}`@H9Xir%b|xNthIJ z;i(d_P1m(=jFC;))Jb>nvaUDxD;Q%0@B#cF2y%y6mWhZ+e>j%@a4dfz2m%585<nD1 zIg6<iI=vBXzeU?`(dmtTwXxzTz(2ma8|wNYCQb`wP_1av@PoJe>oW~tqZqFWDxdei zkZi#LSO_FB6%oq1R7fBb!6x4VRx-!*^>LTaXcf=|PJqUi<Qed+0B<=+-j)Imuxj6N ao(}-mFVZlY)p{cU0000<MNUMnLSTX`z^EJm literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/HR.png b/wp-content/plugins/wp-statistics/assets/images/flags/HR.png new file mode 100644 index 0000000000000000000000000000000000000000..31c06b4f67a49634e36ea7084d5fd7ffa99d5be0 GIT binary patch literal 553 zcmV+^0@nSBP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-uSrBfRCwB?lfP~gK@i4&yL&!-wnKzL0TB>Ipa_a6XedY*DH2G~<_#htA@K^y zL!^O%nu>>@0O<;ZkRpXpSp1Qq$Q*HOpKsUR8ww|vyL2XB^R0Hi`F3VCqeO&@Kmj4p zI^kL1fI$Gv|9tZNP}ieUEXRnTM9?DSN-<Fyl&&}|zJIq608N>A!j=2eTM@?1h_0Sv z)T#pz4Kmt!pW1MQ(i#!Le)$T}3;@G;jPG`t{7C@VU42ZfuhTd>pm#f>9$e<3g$MCx zd|)tF+xX*S022UAti>Gl$a_5inyK)NA2i6JGawB^`h>XQU|OXycx#JRmeMqpGLkr! z&ZAWkk%E&ru4vLU6<|pN*peH7&ob_O`oQ;vTLt?pt7uMhG(dJPhzR@FZgThVSHYZ{ zm(!d8VEO3|=2DyCXj}+3*EV^1<p%fu9`I^oi`RP%;N$d<q8i>NX9hOQsMiEldg0Ap z1GWAFHnykd@|5I)Emz>2Bg}=cW-4vG{ni2np%KukV&I%B44g<#Kk59>DmVqq1B<}i rjLCiAw*t(`BAFQtJmAzt*ZJQ7N;ls5JD#{000000NkvXXu0mjfKw0ff literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/HT.png b/wp-content/plugins/wp-statistics/assets/images/flags/HT.png new file mode 100644 index 0000000000000000000000000000000000000000..a99c371f4c52660fdf13f3dc56b4971bf4065bd3 GIT binary patch literal 392 zcmV;30eAk1P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-4oO5oRCwB?lfg>EKoEw%%_hatnhJslK7!!MC-5~q`DB9N!I$s}JPAHRp@?Fd z6q4CZc04q+5j<?#|FW0)zxkJ$F{;WjGQb3w_wN`vV3PuiyNBn`L%P2{-e07^tZkLs z>&y7e3U41PfLRJy-*&7w!go>ssnvmJsPnTazU=^P3LxSsDxs((DulHOA|8Mgpl*b( zqGnw+42NP2{5K@+Jv+e5>WO?A2xS?SAjxw|n{cyBP}j_p1Pvhy5L!>|!ajjC4JMmJ z1B`DG@AiPkIW*0-pN^2K(zpRYMBrqK$+Eaz2x05#0j^W!z4$p~8Jz(Zz!h*h(p&*c m1K9qM>_|WdICJbd{|*4TwRobS0WPEf0000<MNUMnLSTaGM4O}l literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/HU.png b/wp-content/plugins/wp-statistics/assets/images/flags/HU.png new file mode 100644 index 0000000000000000000000000000000000000000..c59f41f955b821d1ee408846576a8ef87c17c8f6 GIT binary patch literal 369 zcmV-%0gnEOP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ+_en%SRCwB?lQB*MF%U(c*Je?)pa_s?Ql_CroPe5+YjGZGPJp-rQW_Afl7M$T zyX&FJCZw~I@51uP|NCj=F{;WjGC&EOZT1`q@Z*5#;{M^|kk@A~&({v9bm%#~yG=tj z22~}zz5!GYuqqvKwPN`C-oHKe$C$mcy}CrD1F#OD4}z<g#Cn-VQCRvAw&%I`UUTKW zS72TMgnwzN8a)L-+qT&OqsIZ<JUwDBCj3g1WUk5yL*48MLKBEFViH%3k<f%4fpkKt zN@-7$2%;*|$u>YVM%M42hkQmcz!aDP=b7d;urPq#43f<Z7yvQHj`QCDq??+=V0<py P00000NkvXXu0mjfYz&lx literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ID.png b/wp-content/plugins/wp-statistics/assets/images/flags/ID.png new file mode 100644 index 0000000000000000000000000000000000000000..c66335fc788da379ea6b51700111ea1f5b9665ad GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGFMGN;hE&`-Guf8! zkO5EY{s|1ujvQ>$`sNCjCqC@axwC}%5swa!%N8EbTM2A+A!bb6`5Se9+S;GqCL~zb z$i#Nwg<!BiLpP&Z`_*4Re81Q1o++&`Swd1zTs|s{qv`%zMkD5oOsOU7I@N#2>CSbu zzOY&Ik_p2t2AB6c=V`AC{W_C-ZRb741cs*KFaF>3F5K-3dS7`wvf$rTv1?JDty{wy z7O_8=<9+YI<j?9%_kO1|svl=qm>Yd+)1PM&%}i<zd_BS^O$!1V>TD+YiF7yw?BDk} am*M!%X{(<qP7DNkkHOQ`&t;ucLK6U~nRzV$ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/IE.png b/wp-content/plugins/wp-statistics/assets/images/flags/IE.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b94ac1b9d2a173b45d7a04597c8fc20ac2dd4b GIT binary patch literal 432 zcmV;h0Z;ykP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Hc3Q5RCwB?lg&!QKoEexP12yY(nG<E^z2pe3G{8ec=0_1FFuYwLEb<Sm0oOW ziD|n($?ke+NfX-?N(YABVVG}*`4QfG4iN#wKyUT#BL<j7K>zyb?)$&@`S!74|2*7m z5C-=zXA#h~&T=)p*qN>~yj;~Rz<Y|11fUxMp|K^uYQbclwE}GVUj2jK0IUHBBLHm- z(?!ly&RPL(F|BnjpfDPM2taB{I?u?|jJByX0C);5YXGHqO-E#^y#hOaTf>g~sIs#L zC?)YH9h`UVU34{HS)!z^12o}Lup3bKxe~3HfB--%jq@HMM5P<?LaY^s)U_s>!Vr5$ zyd28*m5t&?HQJa8V7ztYpW{YAk|Yg#@|AC0X94tqbKrE(TgZWt0K(NFg?j=lV8o&4 a{5Jqn0hhoQEY^eo0000<MNUMnLSTZASg&aS literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/IL.png b/wp-content/plugins/wp-statistics/assets/images/flags/IL.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf7c53d4a391abe2ec7c697c89ef9f6f4646bff GIT binary patch literal 468 zcmV;_0W1EAP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-T1iAfRCwB?ld(<$K@f(&g%doHkX)h-YK+*}8N&l;t8bvKiHR@aGx!2NfeEqH z*ig|>kYHoufe}MQFB+8N_V!pC;5eiZ_?yY@%%9nR{#l{5W*!J20WA09G?2iz0c5n+ zZ!>ilV$}drM;CYOZdw0jf!0)>9DtMo#9gWQ{E;|qFH$=gj~EkerIWax0*C|Tlu~*U ziq)nrR+|%ZN+}KG3;-!5rfCkFG#r<!+ecK;LkPirrNP<Z4p}R#kx~K>1Ms}))3cVz z`&XBfgKduYbG&|ZBIHqy0nqJsBgtB;gCF#`ym=rVivgNitHb8X(y(Tfle29*qOaGF zg;HG?O7+Oy0Jd$1GuS)7#<bS({9vMUr(@^jLLAq52_^Wx$D-CGjMyK`N9_#l)%d<Q zw0ON-E<ew*iTQkfLjV~d3#6yyw}FP}Z&PBhRZ}1Uq?q?R{|*3)#M-*9{*jmf0000< KMNUMnLSTX}a>uv; literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/IM.png b/wp-content/plugins/wp-statistics/assets/images/flags/IM.png new file mode 100644 index 0000000000000000000000000000000000000000..441ade49ab6de5d6332c8c0ae71c10f9494b9bea GIT binary patch literal 632 zcmV-;0*C#HP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!8c9S!RCwB?Q%!3WK@fe_-7`BIvk8e{ z0%DYi<f248iHHaaA$}e_h~UAKCt1BHId}|s3^^}E!PQ(8;vY~HQSjmi0Szc#0$~j@ zA0e2SnQp6kKNR#L+t4#jRlPT_-c*xw4&5w;E|+;eGPq#3w$3|S0HUTXNZury{s^=d z$4F_YAb3L0hI`%7`eWFl@I{p8aD|1-8AuukH5c>I6-^qgJhRdoFE3w!v6hS1Qhd8| z$$xOUdJB6$enRE;Bxvj^8rxXrFwmGdjrHCU?73fq_%?KJ9)eX+1e;|rQ3O-&!A9Qz zmZqohe&#hke2+0$y^gQ~Y@fY>-K<iV%YF++u*&xnr!YYXQ;Kk4<_^ZM9l^f(T~=Qp zxj2E<(KAeP648S?*F^|S;4y+Vo*<2(*%TP#`_A80(EqT8Mi^q?@FemDmW(mPVHx1w zy;qEB5wM6fffmD{o4@AJPkcT58R^Xzz@vE#9UI4bwgMgXdD*beV+7l5A>kI-UCl|^ zl!e%t?0`FU4&nY7_SGV=)DK<KJ}<R`5v+3Z5Cz<V=CjsJu+js4d>Xry#o~!7cgEy_ z@;P54Gr$<v@jw)C(5cp7mY8&N1DkK(pz<YV0u3u3QFFKm)KOqaCM`>u-Ta<9nVd*r zbgtHn@gGvEg>L5=L!Lm<+SAqL%0I7EJ4k=0=tly<O6p+8{{LSEb$gwE2`~V<sIC53 Sn0v(l0000<MNUMnLSTX?5*v#E literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/IN.png b/wp-content/plugins/wp-statistics/assets/images/flags/IN.png new file mode 100644 index 0000000000000000000000000000000000000000..d90456d19162d363ee14d79dc435d776905bd570 GIT binary patch literal 431 zcmV;g0Z{&lP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-HAzH4RCwB?lg~=SKoG`%+icaO)+zx(1uN)L(31xr#iM7RNj&*5UcB_!Dio}u z6l+_O>?Yaq&{~=*^p77byUWac`_0Ub5)u9b1*`#^<9!)eV5osw@Am3_mDjhg?{_s& z!R6@v(*-pv5FzU{04f^r#HENG;-b%@vrHvAg;KDCxD>$C09k4%#a~F=Ur2;gC9>2^ zxR0YKYWlukaO(C`9v<7E;Ntv{aI0Lf$8k&$1ScB67{e?<>$yXt`GL!Yu%-#m>IJ(o zBLx~DNs?bOkLr80-=fKR7C$i>;PUQ<a#$tK%-=~r6|cTtC+!YK1qHB)LByfPMVYrm z95$Is!C1=%LV47b`CULT)=mhl<c?nJb(PO(6;J~Xfa;RL1K>pg-guC_B?)rCs{fAj Z_W;<dd5;)zL>2%5002ovPDHLkV1mUyv@ZYv literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/IQ.png b/wp-content/plugins/wp-statistics/assets/images/flags/IQ.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f361c3ce41a5b92d8a1ede992ff0f4f0f729c5 GIT binary patch literal 475 zcmV<10VMv3P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-VM#<mRCwB?lRr-zK@i1%n>}4D9T6f04W%15i0?v^kC854g9?gtDI+21kW!`w zfh;Nusu1hYi9fN=clPeF`zQe8bZ2<YXr!4p?~P`RB;Er9q`=B^Tm~MPB*5x$`%Ceb z=^F<>*ApO92z=byY$@3wgzKLJWC>u^G^i{IclZBSYr*IO?B_MqGypaM2+k2lW8!$+ zPKC7uH=F0(x~?TjgGr&Fs96jOippoDuBIaeMcp<}H5XMONvi8wK=%WHbB;k(@bzei z)9Xw2P7e9~r_bK;KHpCcxT!|`I6LBMa>KV@y9}xV=iIA;JkKRbf2Vhnq-lImP*mYY zx}N>hgQC2mBxyLkmn7wRE})wL^m;w4wNzErY6n@C5kdeUd9l#xbTG!WB8V~0EhGTm zd(t!|P1Du{-upR$mqb~XZ#hP9fK^}v__Snm2@DNjpC8FCNe}>U-uupv0|040;1$FM R-WUJ?002ovPDHLkV1hT%zFq(T literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/IR.png b/wp-content/plugins/wp-statistics/assets/images/flags/IR.png new file mode 100644 index 0000000000000000000000000000000000000000..79801bf11a0489383e779f590042abf9d70f9278 GIT binary patch literal 471 zcmV;|0Vw{7P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-T}ebiRCwB?(@$#?Q4|I6-|LK-{As8PTEv}oBV7oJlr9u^uJ!u}^$Y1ziyy&N zyHFH$RRdKpYD_XSnaOjLVg?r>_HG`$`_8%d-Fr@mF*;8Kw6M82*NGCpQ*1qXaq#tj zsy}~xa5Y7*npbXLxv`>Ah=L%Bj=p_{UW%lwE2DDidp>Hw&gK(BXxv|J_my=8Nx;tG zr#Bz_Sx;HdR<=DCwUd@nG4^QZ-pv&5U)$B`beh$NKg`~~BXVK)mT>7}BR`!^K?+4t zGzjLCiTvo;?EME&RWsd(4;lnTQGgA|^SqJV=yrAX_f&&{YB12*-}~n)XP6X*FJIZ* z-lnP>kFvXW!1(ZW6P+f8r>B1jPM$u~?)Jn*TPxL<WlkpJr5WT?TA7e0#KqcUWO;pY zNe*?TSQ=tk3yy#NT+;*r%786gM}JKvkMJcRSr{o<lb}W!&THpC0|2XNfLB$cm6rej N002ovPDHLkV1n?a$A$m^ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/IS.png b/wp-content/plugins/wp-statistics/assets/images/flags/IS.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7938942c749a3fb39f567b8acbc3b6ac13f219 GIT binary patch literal 494 zcmV<K0TKR*P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-bV)=(RCwB?lT9xJQ51%s>77=ZQbK~TkPz{?AhEP5iH)U=u;M@X750{_h>f4X zFEFvPBfgDD%4nJP-p<@>(VA9UlBRERb8|j&&U^2Bj%AFY9aumD=&anWKmngN(7m*E z_*xq|-QVDOZJnW$W0tp%{;Y6zu-R_|sUR>c%nbetCT6Drn41`A<ZR&l@&zDe1ELg! ze0)l>ULnd0?(PA&e)O>FI`{P?DFq>bumPkj;pHV>UPehemjmFV#`gmuVn|tv>@nZ> zO+6kmE9O7=zHfjr8{ld&Lpsz^*B{)BPB#6#SUOEk#HtKj*KO!<Ju?0;1J`w{45n81 z5FNdI70T}_T<n0>03_#k8yKXLaYFf4W&<FLMYJ|p6_v_zS&?e>M{9#D76GsUlu{(L zArTi<x#RKjJk<Cig|tB_6%|lMYx3FKD8X?Y9=&(o9Osw6**IH3H!uuzwYUp;;K>3+ kWsyXS1wues?XL6p0Qbh~7%zLQcK`qY07*qoM6N<$f=hhPS^xk5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/IT.png b/wp-content/plugins/wp-statistics/assets/images/flags/IT.png new file mode 100644 index 0000000000000000000000000000000000000000..9d4ce40dc1bdb13d4b55d34f89d6d5602eb13279 GIT binary patch literal 440 zcmV;p0Z0CcP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-K1oDDRCwB?lRZwuKoEt$jcq^*B!VJMN;-tZRS-1X2ChQ^oFoOJMi9iGC_-Wr zXMgM+idb<BcBCjHt#(GEefwtSjS>+yF$HV^yT!eZS>PuGx@UJ+Uw^YVr<axZ{rut| zLjU%<7Xt0v=bZEoSAMs3d{j_Y2!gqP0BDCm;Cx16Q${*z1jvRj3qLs6N1Ou)LIC3& z6Fnu?(?$Rv$7SP!fZS*RLI7<vBa;x@6rp}9emp4y0jo_3Fw=%7`6RY!BLnw5T==a{ z2OYGQ0a9AgHeP%qfcP@!Gsn#Or4qCzYDf50qFMq_F2guGX9M$kL_Dfcma3JUS{xBU zTU#<P*0O^T&4*Gi*(j>8F{W&ymE1Fa{HQz_3<j0>b^Ki`X9aYDKCrjuE+oL40)k?Z if;9nhz^YBx`F8-U+>_>LOy{)#0000<MNUMnLSTZ4U8G3> literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/JE.png b/wp-content/plugins/wp-statistics/assets/images/flags/JE.png new file mode 100644 index 0000000000000000000000000000000000000000..2dfc5fb86009f26fc9c695f77e699c9dc3cf9a42 GIT binary patch literal 624 zcmV-$0+0QPP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000WV@Og>004R= z004l4008;_004mL004C`008P>0026e000+nl3&F}00009a7bBm000XT000XT0n*)m z`~Uy|7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%heMHvEiZ-v9ss(n&-?R5(wilTAnz zVI0N>gdhk6W1)-S$Hw-7bx;sLvfLyODXbKUih^{A6a)_vDYbM+DDea8px~i{c-cc2 zJsMG<At5NGD5C7_%rvX+>W1#@$Lu`5|95BCk4A9mf#>kf|9O7zJ6{5T|1#+Ua}M*B z3{4&C3O3Px2fO_rVZ`GMdZfs~I%1k+u9Bim&^-iieg$oBBS2nkZ3A-UWBjRWhpuj$ zQDEzH3uI5LxdP%|8A?qvl>1GHi!uT72vA5vLyKVhc`roAJ!s$Nd11511?5FO8v@}k zvk<R2vD4+|SrT>A04`leXlxSV)w>9dPQX9d2mkxm*c%>)x1bV#KY4&e!VFshNQQyP zj|KQ{)k1MSg;L)RsiY3k#brJ_E^C0P@YgwPUcSw(eNW!fX;}l<5%)dQ5U)ECd^3VT z-vE3?4{$IwbK>}<e*ngQ7=f4X;JaCKR7e3G)f||5fTR-u-M<6%(KE>94T%0)<$>dh zF0SyI`lJK;R)Aki10p|{AQeA^zpWdIz#bo3iM|oFu@h363(?<eX+W-Mufp!z4=`de zGkUft6MQwuUn_M9kj;F9ximvlhq^)*^F`)M8Jap-mcQuv4dD<@Ab-&5h{#X?0000< KMNUMnLSTYb!vrh< literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/JM.png b/wp-content/plugins/wp-statistics/assets/images/flags/JM.png new file mode 100644 index 0000000000000000000000000000000000000000..6c59518984fcd31772fd1462d0bf0fa7bf8f5053 GIT binary patch literal 711 zcmV;&0yzDNP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;O-V#SRCwB?lTAoe0ThM5H*e-SHjQtb(HR`6!6qajZ4<f)%7p|)LKG47BWfWM zQH0^5KZt^mk_2m!t1t>A5>5Nrq_oIDK?;f>+YCgM<G<s~d-LAh7Gp+H3-Q3^E-v?Q z?%^IqL|6+HKm*n<_tn4z7M*}DiM>B2W;Cw74iKAlfh+Uxm9&GfZgF8poU%d_W!+%V z33zU_Cuuob&fQuEkKX6;VKN8QzesEcr2&JZ+ZJ&Xpsjrrz~cnezQHA|%oO!U=4q^S z&^_km$tN#D)*nS2>?>WMp>m#Yu?!s#@)&rY08pI(hG8)NZi>;dY0jV4I94-DvDd@R zk$h}{b5%3!E>AG>%BHQu#NkY17zO}NfMhaBJRWCmZjMteLUX-FQ^PEw>NvJQMKDEI zr^THv69Ig_49R42<+^Aj5|MB?EFO<%r8?UJB34Mm4oTPTf<I>Aa9ARdhyYP1Kq{3& zM95^a#<iZ&Xg;AZ{#nBkg~qxizQ<i$zm=73Sr)c!|5l*uy7>Km2^PBLako!I{L=Hb zL;_c;#CN$$y5E$Dh+q01>QWSPi{I}TUDpMOI)0g0R;n;GkjsI?E-v;5Io@AHBCV3L zR8IDXY3&VBdr)KeSuR_*C@Ur^Ky*({&P31sd`!1SQ*R+Jzj(9Hq%3O`z*MQ;w7|Xn zljPYZhw7$z`oh?(02{`JJ+Y6|Ib0elAU5Ly?LYZ26^ivVS9is!2pVkPnb@cRI#3LF tSDA$c;Hv_t%Ry3CNnit}ver2N8~}s4_8Zkz<-7m@002ovPDHLkV1l)^FTDT& literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/JO.png b/wp-content/plugins/wp-statistics/assets/images/flags/JO.png new file mode 100644 index 0000000000000000000000000000000000000000..899a4a884443f4a40f5b83fa4ab7d81ed3114d9b GIT binary patch literal 521 zcmV+k0`~ohP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-k4Z#9RCwB?ld(%%Q5431_r06Eyl8ke0YMy82uj7FYo&XkRP0c26hRREBhp1W z6}ojd#U)ee=#s5V$xyJHbdVNGX_ChGUhca$$-53JRZJ}p&vK^o<2&a&pRm?)pAtYG zn7r&+$^elBg2U(QzuxylbVfDJW^-Bs6VGIxmB&x`sA4)cy<4&nSZisuS^yIga3f=w z?<+Ri9qRpv<KX~+tNREcZa^xP3dR@!R{{*RCjQeSIE&b|mJh<A(QW@zh2uDAtpSh# zMk(@9h%pJo2`>?Bt-ZkC+X3Gn3sFi@EEX>S>a0gDidp#bnUk40Orb#URgK{El<Bu` zz;SK?ZYa>h5%?b8mLK6rNkM5!o7<FXwXwqhNs?RxXpJ4E$S}rYsXtxh-O5jB?2R4v zrN^Kh{skn);HM71OCGP+7Wh=1Lfm1cwJ9dKwt^e=`TDTT{(6<~Wslr{9w^14FKk2t z=4h$R!RiAB-41lKy|VxUU=}E4%t8qK5P*9bBsU{q1Q>DOIG+yyU&Wq?0>ed800000 LNkvXXu0mjfpCH)> literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/JP.png b/wp-content/plugins/wp-statistics/assets/images/flags/JP.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce0a47e73c79157712c24d22cac76cc1387af79 GIT binary patch literal 471 zcmV;|0Vw{7P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-T}ebiRCwB?lRrxXK@`M)dv`e#V+@Gc1hfbu3SuLuUqBQr1Y5DUv9$3ESlU?F zYGpvN7euf~6*%!<nrLNX6ZKAVcggNrm|S8aNRnw5_RY-OH@p>EYx;ozY+$H<c7qV` zEFi75e(R~b5Mu_A>|=tY1(@x(T1qOHS5$8DpcL`Nc?MUP5q8IvrUf9S#59{eABRVL zp63t<K=75nCb)lOWN$a(NGSm@0Kzbg3f0mJ?(qqt?8AEqWgk%v@N%aFw|C71>lzCn z2m%s`#82V5L{NOdXp2VSQY}6)FgHs>6B+ov9}#1j48pL{wQ5T|3NWz7Cn8=$W3(IC zGt&%jZXuP2QZ7n)Nad1R-ypuU&|%Q=0)WwjePUCScxM+N70I;~(mUI~IIWtj<2bro zIF6%%tObO%T8%=X(90r)0!RZHAl0SV1ztrxYWuH^{09;UMZe$qdjLlXy%s+FM*;u< N002ovPDHLkV1iNtv?Blj literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KE.png b/wp-content/plugins/wp-statistics/assets/images/flags/KE.png new file mode 100644 index 0000000000000000000000000000000000000000..92897f735eb4bc734e40ff519c4eb72990f0b7ad GIT binary patch literal 631 zcmV--0*L*IP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-{YgYYRCwB?lg(=rQ5400FZ1&9;v|#Um}sdKG%mUk!GZ-rFq<xfuEe$AQr!3l z_y_nuh~U<ZAYFA6T)1$Ng;r?9Vi$hYe72p*$K*|Bo{Pj5+|{1V<=zYDau4SSYb|Gi z02Gj$*VDiN0|^vrwOadsuGj1JiUiy^j#*t@Jzgv<EHIf&2!}%e(%CFI*QML-B80$N zOQX>Ma3$avWAJ^SUatp07)9J(TO<E*2kl7quP*bc*<^2T4}emsgfRxd5kPh8<*VKN z`66Z<0$|gU%6^y1(U6o<w1lNyU4lsjfXZrugG1IIJ-j9XuDp27xpEon`(Pmf-uNx< zRaX$w;qA^g4~myi2rQ5)c#Jw703^W3A0qn!i5~zk82W5Z+uY2!=!|0X>o#{~iwkZ6 z5Tv|3BPmV@!tt0q5*u3tkjr{p4+gj<Aw$BAB#Wm#h%FY2ji!Xr^n~EclMRl_CF1F9 zn5Z-x??1D62#(g=Us>ea`Ylou1ArqXzdJp6`T+q{^&P#di<;2PM07om%icvE2g`U; z^ISIh6&>LB`v7RA3H^}pT{sib7=ua_N-D6BiY!06`#dw>5kRCIq;OD<0s%>qU_x{J zg0a>Tbb@0e1vWS_`d`?8`njD2Pym*I{3)Fr06zub%!A~dk{||*IBT5$3;?+|%4$RP Rn+E^@002ovPDHLkV1n5t3!DG| literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KG.png b/wp-content/plugins/wp-statistics/assets/images/flags/KG.png new file mode 100644 index 0000000000000000000000000000000000000000..8406fe31daed8a5e14170c4eecaba054a7f4ccf7 GIT binary patch literal 525 zcmV+o0`mQdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-lSxEDRCwB?le=zIF%X8o@ntXUk`NFGDHIgYl1D&!1q$AcSD>JzK)eGYH7FE` zNC?`?*=3J?eC(k(N9<B=GL0?ypU=O?Goq^8B?K4%(|+A28er{!!^<~sf8FNx;}7qj zIAEeVGdy|q|7ihq$EVqD6^LKY045Hwni9HNk!SNxr6Bhd_qc$C_S&Fp`3JENkI<9= ztOLj~QkE5^svv`XR2ZKo+_TO?z7jT{Jo%>q3t}xfMgSZ@69RrVr!1EMj9*9WQK7vs zAc{Ruh9`#gw;{Bh!zP3+Ak;O3^K;6gf)OwX<eNhJVIc$03wWWu9-@_C76$}twt%{> znHqy?fg19aVjd{s3o=nODfz}wHVUegHc>Za3y2{i-gkfuo6nZ%(~N(apg{Xu*nIR5 zx}r*IiCq!<Co~at4n)8~dts^Gjqoor2&C_pGLv2ns!C{fiWp;r(HQZ*Q+Uun5Wn<) zZ$O5-JyN=y9?)b}&KC3AG-D&cA#e=b-!pjyTnb?OL9%-SGSJ9f$NBF7!}P?p%}qkP P00000NkvXXu0mjf{(IDm literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KH.png b/wp-content/plugins/wp-statistics/assets/images/flags/KH.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2e5570b444dccd292d2c2d0b5ec8544b64ca0d GIT binary patch literal 535 zcmV+y0_gpTP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-ok>JNRCwB?lg(-rQ4oc{`!mx$%nUJvL=wR)RFni0jZa|2mG}g1e1NQUBjN-2 z7}>aWA+CJ_1A^!x3JHS3NQQ}%Zn|%E_bnHOnCxbfv#CW@ovKqmMpd~84A2I8$95VB zka=Kc^XZ%4=c)c-`^ka_x^-i@w|aT9mW@GG+4(X6=z73O9T{iB@US=&tfzFI#@wY2 zQbz#i0p1R_Nz$vt(Fjz*7&Hj&+pCx)A$;7yqzS}-KAX=H20vH=EI=MA%F&qcC!-wa z`1_j(z^xVR-3>yh@DCmmia>doQI5vsp#s1I6h%R6Z=dGi0KdFU_wgfI>ua<Y7r{Gb zU%e!`d4ufTdt`SPH$P9|>{)`IwP;midtFSD&{<zY>k3qH8+Sk|Y`>4z6|t@;B>pEb zMNY>#NIi4Uw(vGW6CgGaBNPI_!t*VLpFg2xj%nh_fUl)1FTSV!CCX4ww8}K`lt;fP zzrMci0Yrp$RN5^!5kZWKh@40eqL2;0o#z<E05iZ9pg(2u5%ALh?)Z`1lmrbR=A!TX ZcL16GtWa2&VYL7N002ovPDHLkV1mH&;1>V@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KI.png b/wp-content/plugins/wp-statistics/assets/images/flags/KI.png new file mode 100644 index 0000000000000000000000000000000000000000..4423050fed16658454e01fc60175473a9e706890 GIT binary patch literal 679 zcmV;Y0$BZtP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;ElET{RCwB?lRHn7VHk$5_wao!)Iv)mq8KC`w4R!PkkFt5lZ(;8n7BGQ=r1r) z<7OOO9Q^|hy6EJj1f6uy#zZg#(1dEG^Z+gW&aXoo7@P>t@+5bjT*-4Kw=l+VkP(0l z9O~@-j0ZF{(7S&9=HLIYmH}UY0nr~~wk0$L$i1_{S1<ZCkT79LEO)M*8Zb7Pv4D6s zL?yucBMCoP&;lU^#u(hfH-Ll&l<|Gcc7w25Z9^h3YX&dyAP(MwjjTw}ZC@&##`r#f z(g30B5Y_8M^?Dl+3W9V*u<2to(6G>T0lM>{l!UGWbRwr(Ls>SsF1Qh1a)<aWhs1ds zAq>rFkJjUE>~c3qh#Uu}Rs%Xpl5?~4Wk)f;ej;lX`mf|UlF!n^cakhIa3M=(W}Ikc z6}ed=GnpfKDZlG`^!~HA%YEq#R|f)GI>yT%5nVdu_O%TnBY6J$Fe(z<7<Q>gnm0v- z*WBdMoy%hypj(E-l;q*U7BMB5I@yQoOYT02gAh!g6+{^B%{S??6*H$Zl$ybwgTi8w zfuk0=p&q;-qOi1qr6iMQQea?ttpWljMp8JgPhqh{x%7JvkUN!TWOR^9-9cND@u3uc z5V29&0Rj1mV@N3|R~=GGoADEAR+byP0Pn%m_h>!O%*1h8ZosE6MU)iGT^z<3c=vG? z%aY7a4YAeq`24kqQUbseKrb)|B=^~cZD3shs#7GjPe2HG;-Gc@Hvmq<+vU%>miPbw N002ovPDHLkV1i5rA{hVx literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KM.png b/wp-content/plugins/wp-statistics/assets/images/flags/KM.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fb7d92010c87b5bcd01aa05a05690dc5373ec8 GIT binary patch literal 561 zcmV-10?z%3P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-w@E}nRCwB?lfg?AQ5?rVZ{|(wYTJUXiz3yf5W_60L(m~*u`U%vP^Td19P|f7 z(78*{-CNN`5TYdn!SGNKDY)Xonk|*qx<#h$xbxoZ%<JINZp0i0f0uW8zt4N0-;b{_ z#;}(Xz&>Dq^Ndp(s7WCG`1RfD?IT}F3OB~n9V8CF$V#9qzn+1_Fjspk97^sWXb`O? z07K}_0dz^gc7(?douJsbNU@S<?BM6-Wz*KwhOoOqSOB&J(7w-&f%D9+F0#IJj1~Vh zHwQ<^b{>c{2!a5RSOBB_C)xJvOqOQZ^fq|AR^ZO7M@)TNh@PO<07!rfeM96|-cjDH z(9@abr>Zf(waU@^_ZXaW2?dxo3oDgk%MvZX^TIUO&*XTvG>vd1whDRhvdooF8md(g z;@>H_F3N;0K)&>b+=+ACI&}$m<2To4mO1-T?Yd@q{@+6~iKpr<fbtYi7ACly%`x@# z7vtsQc=kY~e}|BG{&(QRF2FY)rS}03XNrVMf@9%0R`do!P`dH=2f8+&p<Xb+7qDVw zLkl1c^aH7wS=a{F1YkFVWXA*qfEIg=^Pd3#bcdijhPZaq00000NkvXXu0mjft2F!S literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KN.png b/wp-content/plugins/wp-statistics/assets/images/flags/KN.png new file mode 100644 index 0000000000000000000000000000000000000000..febac132710ef7ccaf0f1e312644e738a6771d57 GIT binary patch literal 662 zcmV;H0%`q;P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;97#k$RCwB?lTAoeVHAd+Z|<Gz&v>13(kyim84@UJi&{hrH`)(DE+c4Hi;&i} z4x<+B+(uB5S&Jde#jK_l1sS;!B${y%qp4%gINkaA?%(&dNHih@@xbA1&UrY8^S(lB z&3-}v7SOa+_YxjZHi7ua<FWj1oxT#p8eydMC%M!*vvVN;>2$iy1Y&^-Id!z>zr%rw z&>9apsq%dLVB+f|3=C)%GG72<CSdrXkK<O^sFt<|6%Z&vZ@Z*@X^j_2fo<Cq3TyNZ zCb&Orka~*|0q}f}qIB5Y%8hE7O|QzC!^_y8=b3y`Vtjm@TrNlVu_9v~9$hmg046}q zl@ux^N^Th$2oBns%Pp&9C-Z!qQ-I*+?HgP_?=zZL_{j<-r}h^>N*2Q<*2*<{J0xd+ zWqAJ3A+!AFoR&_w+y9*lsb)&^QD}3Jrm+L4RBQOLI!3w+^eiqh{W3~6CxDRt(}Ia} zO&p(Tq_83o^&uh*kiG{%1Rw}~uANvR`euRYSM5BVN>P8Hh0#lj*ZnqK&l)JMDufk+ zQV8G2m2zi;E6rIJCd#~@)zsCmFf=s8y;~8kW)jq<EGm{pSYrD_T5F{1?f{aHejtM; zEX(3hr{uv!!SJU9#jgh1)`)+!p_Rh*ylsHDUetg?U!UO4U;~M%2Hq7Ngr&jVUCsiC w108_9M=v<QvH*-NBN=-Hgn%dZYv<ns0Qbi2t;o2Cr~m)}07*qoM6N<$f(EA^4FCWD literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KP.png b/wp-content/plugins/wp-statistics/assets/images/flags/KP.png new file mode 100644 index 0000000000000000000000000000000000000000..f9852b5b8891569bc9c0129b1dc53a89e72d55c7 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`!j8!i<;h*8KqrN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbknf>WWz7JIM-qXb~#KJ%M$N&HKt`aOa8X`D4R6UL;*edMh zS>*Gt``_ed$0|oQjSP4FKmL4dFIgoQ{5g2@xxJ;t67ie^(UM>P8~o8!dG>$(-}Zm? zuV-?IA8s||opANX|KzW~{?F&u{`ddR-uM5jowIp-Pe>eYDA)RxaQnVi#{d6z=?DM! z&vTTRHNmirQ9=CAt<C@cFaPo7zx}n`U;q7%^Ee9|9W!C*xPN=s-~Yuxv(8KY)acrn zxPwuiS?T}e=7($_*mVD#m*zO4a>;->W#dw#Bm)oq6AX0<*O-!ug$zCTJ@lE41&Wyr n`8y?+v`c1-smlFNXJFWV?wCTx?2BK4UT5%h^>bP0l+XkKeo&rO literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KR.png b/wp-content/plugins/wp-statistics/assets/images/flags/KR.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4f8fbeaeb133294fcfb59aff1607c5910a5d58 GIT binary patch literal 658 zcmV;D0&V??P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;7)eAyRCwB?lfg?AVHn1L^Udst?53b>2d9kOi-ZKGMzvsVyNGo1*rEP_Zo$$m zqr10mbw~(=pfC?zWG^MOU~Zz9T4XQjOb6RVbaiyLneXk8yC_8<K9>((zUO&gUVg73 zBAiABU;~N6_atfnyB5$XBAWnF6k!+!N~wQ3wAP3SrfL4^ZWw135O021TwJ77DiMa^ zU*<3jSy@@3SS%hb$1T7FSX*0TetsU?wz=5XN3y${Mx_E;uv01ae4mAd1+>;AlS%sf z`vFX=Ir`4d4vj{G^ynzbjt***lLX7lSP1O{m*{-*luRzi>zNs<)hbaGwZ=&KzAqvo zp67`#BHPbj$j0EHY~H>p-?HOU7#WkTsVVs-BChL-)>?eu7a*kof*=5(r>6%Sc>l42 z`C|k3dzE{&K_>RIJo~hTMTp}#7>3dED1d{50{}eF!$eaa8t0Ch;C_69uc{ke-{<GR z4M5?#E=N7BfI^`_KA-2^>@1HS+#)`frLy0S-rnW%&^aDI%(ArfnS4Ia+}vC%z-k6q zmPITU<IUSyMy_7t!^^uAzpN965!bI=V6R?ddioWP<B&)sjt2xmKqix+TrShr)<#!X z7nXw2k>1v(6&<A0X==3^xm=Fb)zuct=S!v1dJ`6<)PG5gqKH^52Eg#}aIXP$0uFHI sgtt%!JmZi=yGi5;6afw6wCDVL0GDm_^oNYjUH||907*qoM6N<$f^~Z%>;M1& literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KW.png b/wp-content/plugins/wp-statistics/assets/images/flags/KW.png new file mode 100644 index 0000000000000000000000000000000000000000..727c69b6762538675c388864501a263c3a1f0c27 GIT binary patch literal 476 zcmV<20VDp2P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Vo5|nRCwB?lRrxXK@i1%dwY>w&Jh1`AVCBpl0t06#wLgg*4AQe=V!3>ONe0a zN6}y-7%hS}N(>jp+--6@7D*%#6A~O4cBh!PZ{F-vBEo+{0aL(q_nagQ@aY1%gVUo| zuT(&32TAPM2-k;afeZLwH&xabSMav-C~pdBCnG5fP=0#^@LfO~W2is8@O1w`W_Jyl z_s|x4@+dV3GMCQMN)iC=0>p7ly<VqQtMPvI#>VkJ)%5337Fs#PZS%vZP%IWJK@bpz zA-%1X%jJ>tH=9i|narx&D=L)=VHl1rU>wH)xByWUAtG2i{sy8b8U)Z<W39zk4i}{z z9+wJ3n;p;Nxz+02dvvU|EW0T#XBODJz3WInBt?YC^o?MQVcXAgJ{ypCG+zkn_p{QK z96&5_AAs3Qr8yCY*G7Y?{Lwt(J1Zau<bmvjUibiB6rj6C(h~wCfKmUo^Y;M#S&<q; S+0-Ne0000<MNUMnLSTXz2E4}r literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KY.png b/wp-content/plugins/wp-statistics/assets/images/flags/KY.png new file mode 100644 index 0000000000000000000000000000000000000000..550f8151cb1ef27782686e82dd5984c2ae4972af GIT binary patch literal 600 zcmV-e0;m0nP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ--bqA3RCwB?lRaotVHAd+@Ba1LrnG1)h6p;@L4)Za2qJ<Qe<%ivPz1LY7aeu! z=&plfL2<2!Mbx1pm`$`L)F}v7F~(>~kef73?!Djr`5X*1LKI?OIGpJ`oWpxwp_F1L z5`YCHI=vrBV9NkTRu`74Yb~2{&E;0>El)->6ib`To;}Eo`^CQ!^7)&44PfZ?#};$B z6k==)|M_>$r&G*KA7!N?$z+;;t}FyfDGG%Wz>opxv-MSi{04fXPODO5uv})--o+#l z_dX{PLa=9Ck<0$z*{dYP!$=tc=o-Mn_zAS^8G@6iuxyKPY6|;8mKURG>U9^#X`>PW z@2VT<i7gz*#rGuu2Eb%e=kekSA6h2!O7UoUoi8M~I-%n@Z2+#wGW#Q+T2SOpBaQ3& z+koqL-w*@_jfTrZG~hh|54vuz&K+Q2x8mo7qOerOG(!M10MBy?!;m<Rd)Dd0f=_|T zVq0S^9N=6=;CXI0z$Xl2;#l>pnQ6uGBQg8TL5>~LxO^$X^SVy(eIMKYZBZ{>yB!1H z$X&E~x*kyaYT^4`04XJwrLZjHpRc$4GVDBWfRx)VNTnj0&GP?5K?-05NCCrr4mW{{ m0Q63f^gaO*AjMAO{A&PMAm?bOx@YtN0000<MNUMnLSTY^F#&D> literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/KZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/KZ.png new file mode 100644 index 0000000000000000000000000000000000000000..ca599c832de0986ae956917a7c028b07d92bd425 GIT binary patch literal 601 zcmV-f0;c_mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ--$_J4RCwB?le=ycQ4of|bJ@h%jcw(kK<tK#xD??HsGxv`_uv&Mc?Mc~I%*^e zghW9DN)Qq$uq-7pB#s^1*t_<g-91BL3!5T^mA@HjM*1|P`F|xMTty040oG@A8988N zf$EF5uiI98KK;4}x|p*?gRs#1Umu=7+Oa?+QgCZ~myxQ1nx3QtLX!cI_yAd0S%5Dm z7XXn3%pf&%5~10Rr(*?so5wt<eaDO9-SGo{^y)K&uobQ1at~lEfR-^?Hl#PM0GiNF zc)a_WhqZ42OkBeL*;A4{0OipN(rmh&1?a_|Ajs&)!tISCO2(0-3HSjZ3|-1jsYySL zXb!F+WQ<cc2Sjwp(hGi`Z&SAC+$eW=wSSZT=#*SEZyI%KQG@RAI*rac)v+STCUZcm zuUV52uX7GMbt*x^SyJZZ*Jo%v<zNCL9CYh=os)Y@kuCsK7859or@$4OkF7fd)^WGe z=KjWSMp=pXCwsWUfb!(tQ;Zh?{WwQg4GImqpb$fmha3)S9K~CVTu3e&r3FxUfiz9$ zfHekemO@sH`R9Y_$5u(Q5?cG2O%(v%3vL16{!9Xr!#2ay!%JOvnVl6-1?oU~$t(<k nmIBNyNM=bu0XTKlIR700MTFgz%LxV!00000NkvXXu0mjf&yDvq literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LA.png b/wp-content/plugins/wp-statistics/assets/images/flags/LA.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3ce0b11f29c214f18a5951e1bd4cc4c2674079 GIT binary patch literal 530 zcmV+t0`2{YP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-m`OxIRCwB?ld*0SK@>&Lcy_&6oM;mxrN~Ms5iS#%-aTccqyg~>C{@zr1E}}| z{s0;TQYt=x9#9$-n;_yQa@G!u*`3{;c@(xR)7i;wUNi5`z3<(pM1=c50d-(?T9-iq z{PBROfB5YBF2Bd`-)(w8L#!oe?=2`<AqeKnH-Lr*Xemo1O|i-F|JO2SbPl??fs`eH z_5k+719oJC8<kDnS>i|Qyx8Bx*P6Fy=k&S*sA~WoO306J7x;(=kY!^AL!a9;M=D2S zHQ?1zhn+YA;7O~=^OFzU41R;J5wT?17+^w>XF1)U3Ad?1OhvoB#r9S-lf2ms3F?|| zFF}PK(OQ773IJ*VS)Nl?4(9|{Q}lj~=v|Fw1lP%!@0STqgL6V@9a)~wDKHg!rG`a= z)(i(ZhsS4}zU&bAn%8eW)4xg~m_((rHLR&-^L_j&-o9u(XduQcw#p#j;_sNJ{mYgI zV2pv45as)eCCIr+&(uO;Mff@z-X)BM0wN#=)|PBefxZIt^pNzD1QsaNeb4#d06{&b U9!}T;`v3p{07*qoM6N<$g6Hqx#{d8T literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LB.png b/wp-content/plugins/wp-statistics/assets/images/flags/LB.png new file mode 100644 index 0000000000000000000000000000000000000000..08b6dd0125bfe94d8c285c47c3ca4d2516ed4135 GIT binary patch literal 491 zcmV<H0Tlj;P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-aY;l$RCwB?lf6nqK@f$%y&H4YD8Upq5fKtCY=SRfBWQ0U7QTlsU@g9ZZ5lfp zYe5A?{6P>R{y;<xG33{K*P9&+laQNe5k1WmGiUb9%vmKO{09n%0%NT>2n<k*0P+0l z+S^}VPwr(WBS6g7>kKbs`U)K70AR&-X;vVDcYXm7ivSv}5#OizUJ7@Ru0gw?6BD2{ zfCfkfK_I;_wkcaDS=l_?m6G4+%LhRqK*|9y#`MWQdb;BL>4y8)N4Af%)XYbCgDs8& z;QM|kS!`6;Io;!|kmJ7m!v5Vcm#=rBnl>i_;CWuSfmdO1Iz!2?p_Rk>{1PKWZm6cs z`LV%VVv5<s6t^D*o~uPRGAj)AY_iQ!K<XellS_}rke*R~b)V~!Yt&iJKcv4El*?Ev zUAI#>N}+Jjjv}xYE6vVL<?|D-TIq~ntm|@Z{K0JKx=_O?APyvf@d2G&1@fxprfAz$ h1E2{Q_22LOH2@KDysL%ouZsWx002ovPDHLkV1i2{%ANoK literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LC.png b/wp-content/plugins/wp-statistics/assets/images/flags/LC.png new file mode 100644 index 0000000000000000000000000000000000000000..923795c1b73c4e61bb6d1f8ff5862058f6cdab8a GIT binary patch literal 474 zcmV<00VV#4P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004@Nkl<ZcwVKG zziL!b5XOJsIcHZ%3_gHXS|~&@kj_dF6tqw*6t#?kRz5*2d;+ynj6yaVQ9+Ui5bP|> zmX>M6UP!{`&)s`QhAEb8=?;7_cjo(@Gw0rOWoAqgi3vmJ-uKs<w%%yRCb4nj7?>qG zIj!r=@`kP6nrGM^Hnlc_3<nM`UNYSK+NV^jY#+eWUr-cK1@<aDIUT@@O*on$1<cUk z*(^9)00tGN3UmYt15+Kia{>TX{(#lkz<|br0Z0ONTj-WhDWD9G&%)>BC70(YM=yNA zC>DSngOcI_!SoThejMKRKDa#h8YqC0f)P*{O+dUnSU3gipFXnJ7!diwwY$9Dge=Ix zjE*oc$O#m?b7clzzUtA~w99j^c@N3G!3anI`!&W=g8L_7<=q!9UHHxS=RaJYd(C?& zxi=VqBEhcW2xf3qOEC8kE{<-~;-kMXxD9&4YI#66804DmZP?Ar^XweN=WBqWz+6Pg zWl#({KoK14!rHe!I^X-bRbj>~?3ENqpko)?NYv;^B-j=(2W0*)+KGSXe;RV2Nnm`| QHvj+t07*qoM6N<$f&zij5dZ)H literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LI.png b/wp-content/plugins/wp-statistics/assets/images/flags/LI.png new file mode 100644 index 0000000000000000000000000000000000000000..d99a12a938f8636bb4570c231605f83a1f52af17 GIT binary patch literal 462 zcmV;<0WtoGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-R7pfZRCwB?lRYm4Q51%sGk0dJ>>6T2h!CtsvErl9YyAY3KSt$Gkmw1DO++Fp zA&W$;WzF0>GxsWXgP@q@ZBBKbyyxQ;=N$i$03lH6)qZ4vS05PO*xq}<K^R!H@er>V z;c$0r+y}~8=2%;tq%@FHpKWq_HH~#$d%t>iaB_YJQ1$_pW;vtL9h)o1B&lM4tijIy zGWU-aP!{=ys*VhjW;uZJ0kk#*w3(}3(1{g+FQleM>p4V%{D%pp1g#AKK0urp4$emD zyw;hSxZ%1v#pz{)co{DFc_k|uZ`yrKRBNoRUq!jaw%di4=S2~1<*{^jw9s`B$5cEI zXKf*X%~E1xKS$6>f&^h<fTS5Z{j!6^7@Qw~NFji8j>LQcXsw|%hy+2g53;t~(*u~? zIU22}zeK?ZFbqrqLwz>C0Jj3DUXWCufE+OL-#EVy0N34)a?B~TE&u=k07*qoM6N<$ Ef*^&t`Tzg` literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LK.png b/wp-content/plugins/wp-statistics/assets/images/flags/LK.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3aa647386cb07cd01eeba7861f056b704802f4 GIT binary patch literal 586 zcmV-Q0=4~#P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-&`Cr=RCwB?lgnyTQ51&1z4ysEB}s{5@lr2!pg3^ije<UaK7ms~#1{}BLr3}$ zg5W>|(OIFLh+>_HXdSc?gfz*qO_Q_tK4<UcAR+BE?V7C7`qujS|D{BPqm%+tpgHNY zln3?_pcOXnbq=%LEPXhc01c$#>DTK#Bf@P%|5v2_CQeTTm<m;jg*%Efx7Gm~31CD@ zcI_?<x1mh<`Me}O2IWAI07@(L9MqZ+J^X!tg3~uk0FwZO%99s46#pP3l)0yISyR6R z3(E#IugJeg#0&P1F#4ehl?NaJ@V=ls>?0F^&m9sBqg<g+X(WN2^+35TWQz*d4R~Md z1Dq?^=x)HM4`s^mx8?ZV1ivZNs)VGjxcWfQK;>ZN)f~<>0nh-pD5ydS5<wyoBZHm5 zl_#3kqM(O?y{$lYPKYWJs|s5jxWHOR71bEP7~sFbm&bvNj|{!lNc&yj#>*PPfm9l6 zIS8;s$v~-zQ;OID+Y>q;h5U1*R#&v&j$I)}tabYmyf29o!K9!vuDz(EYbjc#^wtc~ zr4Um3D~5d4u=G&ly`Sdf{HNF1)?t#keBWJAKnpkv%+EMK0NM&LlSeW$0s`RGQQ!Ih Y0L!=OV+V*6@Bjb+07*qoM6N<$f;T<<fB*mh literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LR.png b/wp-content/plugins/wp-statistics/assets/images/flags/LR.png new file mode 100644 index 0000000000000000000000000000000000000000..026ebcbb16be7413fb59080e8958c804f833380e GIT binary patch literal 457 zcmV;)0XF`LP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Pf0{URCwB?lfO$sVHAd+&--Z?e{e0)gtlCYen^8Y4&v<8(Erld*uM}BLA15D zv=j~@<Z=m;py+}Uh7LE;@^a()HDqcK<*j!)oZ+1FaL##!Qi}gb03jecjDF+-JqZ}a z;!X<&7)F>*=ar}?IPlD0JESkpQWA&+gOWmFm3)4Ma`_qtiuv8WDfmT10-BToN~Ijx z>>^r7a=d>^dutm$_anrYx<Deq+f5BXlK{<Tooe+KU7z8qQsch<MDqOP$Kjsmfs{yq zkUq<0<&MLnGO6?&&U2q;Huo|4n=1w4ab8-jQJ%4FTltl3+X~1?fQO|uk_uF}H{I=H zQQ8x0$yk=<o4~THF@d$bj;4oEjsvLSe@#kF{2d5g$8!2(0@E~o6PTtsB5)fUn>7Ar z1y=wDumHq-7I%S10cb-bX+9fxfGhrM=l1~s3U>V2e~AG)00000NkvXXu0mjfEHu2j literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LS.png b/wp-content/plugins/wp-statistics/assets/images/flags/LS.png new file mode 100644 index 0000000000000000000000000000000000000000..5865b82eebc0eee4b5c0861fe08ac5e75e6f0fcd GIT binary patch literal 639 zcmV-_0)YLAP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;1xZ9fRCwB?lg&$1VHC!H_j9guGs_wa%)mf|YS+$X+x~=BL5m1#5v__^v=0=d zSwyRJX{As^%hEoC(NR#wsj(rI!b!*JUS{rn=f3aTB29)!5TDIiJwMLjJddHZ<{&Zv z7dW&%_agy>02!^dR#IvurIv}%N=m(#Vj=a=_<{y9Cg1}EOF6{WI`R4{8y{c8e@@#B z1y9}-8GBm-@NK{X@Va^^j}BruF1?p;fnoe(o-c1QJh6z98q;zBEEAw!`OeDoEWzhI zzZRz{X73=jezus$rpnxY{E07XA&sU&pC|xe0#u8$^j^6~64pq9E&6XhBrMGXP>&Ms zkK}kTnxk4%M7mDUHA9kF0>B3F&kYb1avUGHgc1=!afZ$d7b&jRxH|NXnPP=D*T*?l z#_i5iHx*`R?E<1GB6H?E>C^px*0OD0PJiS2qxV#*F}~Y|b*hBZw}7@2n!-m#^;Up! z^ayr3g_4r&s{(hQ&LO3V=ULc&d7PeQl(HZ(Y1)cr6tx1(lt-l&aU=VI@yV}vP8#=c zK<aEBt8*QlIPCmIYlVp7T|gYi%$7E|Hatb4T&2Tr$L{(;s(%i{tAlJqTf5QKXoL`d z0pi)@GJ`KB2pdhjltts@8g_b_#)<}Q?iptT=m5Hb_I-9C0M?A{B)U6^+=nC}jDyzs Z_W&$<5}LkC(o+Bc002ovPDHLkV1oGR6=47X literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LT.png b/wp-content/plugins/wp-statistics/assets/images/flags/LT.png new file mode 100644 index 0000000000000000000000000000000000000000..714784d282e06bb62dd2558ec5663b8908dc3b4e GIT binary patch literal 395 zcmV;60d)R}P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-5lKWrRCwB?lQB-iFcgMA$4*NKkg5_032_EE0RuaiW8)lf14b6a1sD(#0trHk zn%Hst7@Deq$!Y(^vgG&qd$OMr5w?i}M!;UT4v7PP3{bS?)%zy5>&fkr0dnwQ&Id>f z_(y=;09vF$$sEGxzr)fi>Lr;X(g0`!(0YqWN{}*6A|$ll0$>0x@6I?Zrp)Xyg7jq7 zpZzMuIOpSg0^BbFRc(2eH)d`TC2%m>MO#@LRP}-+9TOx(0etYdy4S+Z^#iBrh)`8g zfF#R!X&e_TK<yl2Qcx-iAR^SxtqrWTu#=(EH1ZX~vZe#LR)nYWYm?9D6i@&s!2ZDE pIq<3g-3^i+2xtMPwjJl+0RXw-YhHmx+<5>1002ovPDHLkV1hR6mq`Es literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LU.png b/wp-content/plugins/wp-statistics/assets/images/flags/LU.png new file mode 100644 index 0000000000000000000000000000000000000000..dcd2eda7ee91f251e7690b214121d46130019d4b GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGzk0ejhE&{IGI_t3 zv!Teb`kkJ-K})YVa>-hY%OAdbl>M`2ObuJSqs$yxuBFc2@28s7`}8&My~TCN_jfd3 zV@>=%nR9_khcq=F@a(v8Rfy?BV#C8f@9HYgyq>)Lcs4VSis~=(&3zL^n;yi+F|x5; z5K_KmvgGQo58K|<mhjh_Iwi4OU{k2{zjx)yu6NU%vL}_>KVP{u%xmK{E`zlUd%hp# z%`p{iC|-AC!BvTd+wJMU78~B4VbyuQT55mXA1RCHFFOC^e%qfi@i2=a%ch2lq3+H3 zzS#mr|5CpGD?4Mr#>&&kSrDm_*RYf6OWwqig^o;3R;6?IvoV}rGs7^;cUciI02n-7 L{an^LB{Ts5XJ?N@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LV.png b/wp-content/plugins/wp-statistics/assets/images/flags/LV.png new file mode 100644 index 0000000000000000000000000000000000000000..3b2c2c86eb63e6747082039c2c05dba4500b7d75 GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGzk0ejhE&{IGTAZj zkb!{f{A6ucFYP5t8xv2q*{Uxvf5&=?)53xO0<Tc7OV`wy0{-FxQCgv15At=Q|K%Th zESa8mN16S}fyb4yO04^s4C<oSZrkosAGv-xqsE%t$~e91XKxPloIlI9fTO{GmC0}0 zO}As?-@ST#=jzA9DNaGG9~c)1I-U~JJzW=>BH4Q))w<vCR=`mS-Wll(pSrJw&sAq$ z@w&=j!Dp6+>qnbbewX2Ik9!s%l5_hTyMmH|)Wd%vzvGvdR3747(Dl?Z^4@w$UDYRF zdRZL$)Aod4)jhj{PlDO_LFR&;Om;F4&Nn|{XNq#TyZ7-QTLz}RQ`Z~De(VDV0E4Hi KpUXO@geCyQI*e}s literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/LY.png b/wp-content/plugins/wp-statistics/assets/images/flags/LY.png new file mode 100644 index 0000000000000000000000000000000000000000..dd7dbbb71d7c12a4105e859962f3c177fdcd57d0 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K107+F1C978H@EtzcV zci2I|?S7T4Ia`d&qJ__yEFI4sv9t*Go4~zbi>5=T&h5@?)}PJ=2(T&#-Z;7asEKvH z-PwL)<98F8xgI<edhXE>%op-{``7EbSIytgelDXC?6oE?Tv*qdC;9hAR*m8Vrxmt5 zpO#$x=kv`C*_R?tFIP3<XgJTf$mLbAZ|y4eohLT+Xb3jQC>%Mk(DuR{>0`l#=RV$_ z!lQh|fT`s`-u}gw=96VYQjazr)nCAG8zzxu#c8mlQ6-b5!}eZvNIJtKeg)=^T9?p5 z;rXkCeg_J>wjAQ>I=Uq_B-rH%mq761-*56F-3lF8_b~JuPqt2Y&rolvVlO;_q44{> b&)*ro?QA(FeI{BH7<dexu6{1-oD!M<M&geL literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MA.png b/wp-content/plugins/wp-statistics/assets/images/flags/MA.png new file mode 100644 index 0000000000000000000000000000000000000000..cccbe6d74ce12bc4b50dce87e6c39af994fa8da9 GIT binary patch literal 479 zcmV<50U-W~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Wl2OqRCwB?lfO<IK@i4&bGv6`%zs6pKu9T4Cq<qlO}e}w4Sk-0BH;xn5*Hw0 zgH3X`yLbCh+{%uNNHI(^(rV_npXQq}NxUWu7y)}FZxa!C^1$Kr^Ow7q{C;+M@zw(q z^*uWuKm4C$0|~;9Yk-LdoKhk$m-MswW^tL1%r@TL$uUX^z<Gc!1pMQIyjZM?>RvS7 z$Q4YYNNx===jcKJzyrj#rJl{ni$@Tc;CAfze!538_%!{^$+BNd(9p92v`xe4=4Pe9 zW%28Dmv859$YvZp+;jBviN2_)4i0EtwF%g-DwHz-S>k-w@c!-(GI)32AZ3&XfVxB* z^BNG^0Cf!oAi$@duUEGiqV*LSK`u*|I>Io-q96w3{oqjnj09AMFn02$6Ow4-UqcKr zz<7*}>VNyMvbO-rLr($3E{p5={3Xj64LAhOfc-6-m%!8jR}RT-3Fv`nuRZ7I0RV7$ VuLC@5iID&R002ovPDHLkV1iHY$qWDh literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MC.png b/wp-content/plugins/wp-statistics/assets/images/flags/MC.png new file mode 100644 index 0000000000000000000000000000000000000000..c66335fc788da379ea6b51700111ea1f5b9665ad GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGFMGN;hE&`-Guf8! zkO5EY{s|1ujvQ>$`sNCjCqC@axwC}%5swa!%N8EbTM2A+A!bb6`5Se9+S;GqCL~zb z$i#Nwg<!BiLpP&Z`_*4Re81Q1o++&`Swd1zTs|s{qv`%zMkD5oOsOU7I@N#2>CSbu zzOY&Ik_p2t2AB6c=V`AC{W_C-ZRb741cs*KFaF>3F5K-3dS7`wvf$rTv1?JDty{wy z7O_8=<9+YI<j?9%_kO1|svl=qm>Yd+)1PM&%}i<zd_BS^O$!1V>TD+YiF7yw?BDk} am*M!%X{(<qP7DNkkHOQ`&t;ucLK6U~nRzV$ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MD.png b/wp-content/plugins/wp-statistics/assets/images/flags/MD.png new file mode 100644 index 0000000000000000000000000000000000000000..92c934d3695fe09ffdea73efe24366bad8b67143 GIT binary patch literal 548 zcmV+<0^9wGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-s!2paRCwB?ld*0SK@f(&y}dimv12D7M?h*MBoGZx09_jBX`tnScmklIL6iuA z!~;YKN}zC%j4Wc}^V#Tj_q;n47kn3>u`<mT|LB|9nSYdsaGp>=3iM9jO~L`o7#Q4n z^!&%)>boaT@h+~bWWwY@_aDOk%NKhw(Dh!pedF?3Ro@~?H3&!~q&GV?Oo0g4kDma# zF`!-LDVCO>dD#Hs5%Z}6VCQN?b+py6FYY2$1)yU9>m0MfFe}VD>GR=~$+1Q&7>+&N z;!-m>tyx)H*8wO?$22dQFART{^8VG7>-jd`2j1*h?&WdQoq#i@4Ji3~<e4w*I_JyY zgzvtO^%<+<Z&ah@T8sL9jE)+BF$RfaLdz4qLB%gOLsW-hW|7co8dy~r7g_*o&}<Px z19<$<^Y--!6@<G7n&Me#zEG{O^$=@-HHIt^RBMaFYnuDJDc(cxilR`BDk2!y8lrQK zGze*;TRuy;kR<?kE2t!4T|ol21#lvP#mVT5j}AW+c-uH}ocsUUSpfrJAK2dT78bx* m0s8ci^o9TrICb80{yhLQ`NtyPq(Dyq0000<MNUMnLSTYzujv*5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ME.png b/wp-content/plugins/wp-statistics/assets/images/flags/ME.png new file mode 100644 index 0000000000000000000000000000000000000000..b2650489181b8f461c1fc1ffc12ac2fd2cc00abe GIT binary patch literal 492 zcmV<I0Tcd-P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005ANkl<Zc-muR zpb#)pY(Q<QaixN=xG6cB-~9S~o^fue+jfutRvrut|AEFaf+?)-{Ex(Dfbe%P9^1h< zJKui0$5$f{tX6RUWB4!lkAd+C3s&iU+~;;O&P+Gm?)p;G18f7-CKmbM41Zs-Ft8eY zXJ8Wk%kb+kHv^N%ABI17*-%`xNAmg(#_6$|+nw(yptyi5`6I)>hs+Gj;y_hD7#M!t zVrAe6_{#95SBT;NH$=GaQ+c?9acYpvc8Bv~C<gFWyk%gO|I2Xbs3OCi{{jrrGFKVc z6n`>&EEQ$=_n8T<?ttN|9gI_aM7G-<;YTrmBk&UgPuLfRdB>F){xkh#h%$f4z_^=@ z;mceBl!!lM^Kl2`ByYj(4hQ*A3}8|F$-pS`m*I!c7lv0%{}@#7u`}HKF2o?c_#aBr zIbi>32jh$Yk)4)1Ioyy900kJc!XE~9yYCFF`ac=oXNfT|bNyrZ`x-Si4mbb}nBc*? z-SGe)Ml}8hB@51f3`|0Q8U8(G#hPaKgAH&88gNtydpaNh_FBK&!RTbb7|tf}Uxge4 ie!geCO?hUb)BpfkVU<N5eiY{b0000<MNUMnLSTXid*lKD literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MF.png b/wp-content/plugins/wp-statistics/assets/images/flags/MF.png new file mode 100644 index 0000000000000000000000000000000000000000..7be039c0af6c1ab03ed856a36b80574590e1ff29 GIT binary patch literal 409 zcmV;K0cQS*P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004CNkl<ZIE~GZ zy-Px26o;SpdhHH+uYFJy4Sg+E(9l}{Kx+iGRkK0OHAqlXHaH~|L1VhK)KWAAWeph) zkr6>bX+t`s7e&3k4T?fWxzz)|;lTMloCAN204Q8XGv@M|qj(!b=*~vFX4_rZsQ{>> zBY7jZi#9!p%$QKL8WH3Hl*%B5;l%0lqHnH()`ZMve-p@>KteilN^EC_RC5Aj+mAXt zi2O(+kci5!UsDqZNjP@Tkv75claB1|!nMCc%j^`kl7&r{up#RLpaK+fCumuPzOH`q z@g$kI5G|bx1jpyt2-zuE7AOk!Tvh~XJ8t&@xx@=bw~5s;z|#5!{;eCZw}MSnKCVXq zNGX$&=T^Z3_pe3f7t@5#;-IS_#P>}|@#tw&YNj57heM1_yc0f8fMNfsTtx*ivjx|R z?+Sk)Qa;zA{#pcFRe{HQ7TDX3I?%PUpfSuw7ymh*ciDL317fob00000NkvXXu0mjf DiBYk! literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MG.png b/wp-content/plugins/wp-statistics/assets/images/flags/MG.png new file mode 100644 index 0000000000000000000000000000000000000000..be1ce874c665abd7ad4023bda524da378a23da54 GIT binary patch literal 380 zcmV-?0fYXDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-0!c(cRCwB?lQB*MF%U(cWwX)}AV85OH$a?$OHjZSX*dH7<rauK1xSEI6#|9r zwLKJxAe*%pqWs3id_9e4{wNV)7b&0u4p#3r^1zn?#v<~*S$(~{{*y4hy_pzblq*)} zXN8s(g5Vw=0Y(PUIb(Qw23h;)n)K-j(zXEF0K^#4y30w6MR{;q6P*RX0C?}I>$(e= ze}Gbu+me8{?ib*k>j5sVCdCeps(rLOhWooEz*^fgB}qj<NTJ(79#9Tgn-Z<H!vHm~ zf05Lm!KU_>3(6`XIPZS|K7>HiG#%4?_V%whD_{&vfx|6t;S+dKt0Y#XL=GqdUhR6$ a-va;&k!*=!JH9Re0000<MNUMnLSTZ>^Nqm( literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MH.png b/wp-content/plugins/wp-statistics/assets/images/flags/MH.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc39b16b06060326d631570bc5ed78a49bda987 GIT binary patch literal 698 zcmV;r0!96aP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;KuJVFRCwB?)5}X#aTvz&@9&&5mu8$fX4>QpO;fZm(uEY=hTL?aMHB>Xq*aT| zqD}n|(IyI`MHeChDI%FoxX{25Aq_9kFp3(^SYtXiIy!TXbIz}Y(gZF-d^hjv{qQcH zM@T8z$q2v+<ZbTlj0vPPKtFTs^}Ljz+TinQBvb21RUpLHD=7t78g;wp>3rC}R|CA+ ztW9%6F%_jcWdT1kb4g}@EF+~vkW-|s;8ZP62BI7{dg%nO2B@ZKQB>gNVz7pa5}n9& zf+t<WOnqMhRUlBnQmM{gq_uLKgMNebsvkhr09;Om;-Wmti~Rspmg<xRe1xYGtSwtO z9a*lFhq+oZireESTX`9GZ4h{l1`v-Y85oJuR3D(Os*sV$JpIFS%*E2w?}>9~|7VWu z%aE<TfU~(3;VC4QS_9Ys(q@KG-y~y^Uo_Md(La`8b|%X0s(#w5A`~>9M+9%-@Kuml zF$r~#(-j)Z0U5(Usv2KMfATH7LbYR@561>M6+8?r?~!^vU&0BVb$z6}cY^g~8X;D5 zfMH}%R2{|o&5epr+`XjZIs1r&`zY^vBD{S2is8{1_S!n^a**e9VHwsxA0*S9uAbyU zTZTjDt}~cw;>FWxLOqXJh%SMufJ;O1xd5<jiIK_VfSV^4=xA%9FHuX!{WwE|Z;%-i z+zwp%o-JXrZHZ}`e*rV59iZ{v1dFo+ph$438v!!@A7=sRKq=tcW*1g~m;ltxBB|R1 gEWi{yt@ED&0H8+Pwhy1h^Z)<=07*qoM6N<$f~Kl1J^%m! literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MK.png b/wp-content/plugins/wp-statistics/assets/images/flags/MK.png new file mode 100644 index 0000000000000000000000000000000000000000..253d929e2e60704fe4ab5174a3545aaf0bb1addc GIT binary patch literal 690 zcmV;j0!{siP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;I7vi7RCwB?lRIk^Q2>R%d*{yGS@$tXip4~e7!VNz3sZ?U;y(z9f;NhkAV&NR zLJ&mkG_kNyh$&2?*aU1+q>7af(8|Ju&9cwg+3ei8GuOgk>fmWk_rZbl3FjRD69H(T ze9%XU0s0CETTkcqs&`W2_loF^Mid<`5sW@aAb`%}0%(UD2+G$Cl?6-hmCxwndQAbP z_@hJw7bwrA$k1cBsQ_@&B5>$)J^;bRjNp<bdh65w@D-q>01s_QzQmYsEh;xt{Ao$N zp-`t%&<^vXz_BY9HDPHz(ztXCd;{PqfV6G!Mtfw9i1rec<_v1aBinU=KuryhBbL^Z zCXW-mnj&o{04RW9p@)teq`FVmfZnp8a>G!$Zpp19dadcM_{fm~YQo{4wlEvP)&Zb+ zyF(Z@$)gCnBN%RZsFOJ|%#ae)girMr1eY_^c#f=A>2^JMcmSxs$go{S`b%T$l5AH{ zo=?$dEiQrKwqUTK@KzP7mg7$=nxQ?MP=Ds|l^}~eq=xWrLh{+8alZ%x@;Ik5pU`=( z8SZ;{RYBeUJ)i_gRDyF3f6`G~-Y4rx2A_Pq$qaSIvcIXZdy?An5Iy5?&XK6(5HRc* z3g=VC*HX;)fc|O;S@H3w6?#e`tBU@+63KSJ@wJp-)-Y_Fe-ljMs$u8eE<aa%IxjV{ z7?TeLV{wAa9nF4#C^+&bg0N{QFLnrg4eJ;Igun@)azqy*;I{z01ChKV0y4me|JC`= Y0Qk!BSb_v5asU7T07*qoM6N<$f;{6fHvj+t literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ML.png b/wp-content/plugins/wp-statistics/assets/images/flags/ML.png new file mode 100644 index 0000000000000000000000000000000000000000..2642d9ef00908487ebdbecffe13f7d4db6071071 GIT binary patch literal 463 zcmV;=0WkiFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-RY^oaRCwB?lRZwuKoEt$jqMN!Nd!fjl(a~kfh%wXPQrB%5}X7CqDCPF5K%;l zO`QF)cPMPdUZ|q1wAvkw=FNNaqeO&#jsm*CasBRcEbtQpqpOFT@4w!=%g4Z;UmyKL znB3ovW1wI9l8f<K=#5QacF%h?WrZM^msfy(3`EWsWHx7^vnHaP0kTzE%nrA%==20} z4j_sFjB~8?npCeF09ghMeCnFQMG>XZ6;S|fGz*iF+8n8~imd7ySGHdkEpV{fGyofI zn97{g<}C@+fPs4-Z2z6%5FK^e06CrH05853QU(Cx8=o&68|zyVv?l2%_+Y4f*p(K5 zas|fOiVakHL_DfitpG%YS2b5e(AG8#jJ5O-lBy|nns6{xk_2pwX^Lp2^eo@Lf`F&z zRbYR%yU-eE1&n|RFxYVyGT=i2QN2jfjsPWK)xPWeI{*!9qxp&jfaw4L002ovPDHLk FV1iw}xdH$H literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MM.png b/wp-content/plugins/wp-statistics/assets/images/flags/MM.png new file mode 100644 index 0000000000000000000000000000000000000000..7e58eb743c3329fbd228b8f829c89d44a2df03ab GIT binary patch literal 451 zcmV;!0X+VRP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Nl8RORCwB?le<a-K@^6+*-MB-6AYLpR@#VK=<E0}K7fL6-~-s$*odWtg@vLK zyI>H4C~EFzW_EXuMS@vmk;MGXH0OMCZod){=8*z&z~cCwMHc7>KxuFP;w>xU@ZtDR zLiO~d5&(t73EOLBcGs5yxUIJU$g!DGvO*BdT@9cR0DcrZwpNSmY*YYfcQlue@5GJg zNuw$G<z*y_0Q>;J*qEV-ac(rwp^51ZEUwqh9-Qx!7!5!Gpta%by2)qf3jxk=UIB2O zE@W*<z-p5M7)|3vQLBIa#N?wP(NiO{0<Ty^``!d_balXr=OO*U?~gL&;)tPj6M)eg z73L7<raPV}#zZ#Ng0)Bxf>KifL<DV90Amc~7f@k1-3>Z7${7P}BEo&U^&cx(1(bj) tury<G4`?dD9~;S^5s&~@&1>iH0RXBul6mF=!nOba002ovPDHLkV1n5Qw<G`n literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MN.png b/wp-content/plugins/wp-statistics/assets/images/flags/MN.png new file mode 100644 index 0000000000000000000000000000000000000000..920ede4018d788934dd361987ecce38a47a5af39 GIT binary patch literal 546 zcmV+-0^R+IP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-s7XXYRCwB?lf7;fF%ZXpv$ppx9Jv6I(xj#1LqbBL;VDw^2s{CK3E)X6cnw4c zfr5e}Ae{sOl*{drJKJjy#qRAcN_EOKwltpKeE2`2s$9neD1n>pxs3&2X@R}j(X%sj zfCOG2zrxi4fapqIyga@_IDGr&zycFZiP58n6i&&$A>5sgG06astfRbtuj4D=Kb`<g zEMRmMK^GMJzX|Uw06$g{6PpTZ2lcn_U1oFVHX0*<u>dK1#Lg*p=a>US{A#FT!o}1! zo5+hrKR9DZ-UDC(?9(Nq2fwIi730SlvtLlH6Qi6^AV?z5FZ$*c!g}2Ue7dBVoFh9+ z<c5+LhS}f9C^uPr6yoV=7hg=LtW7Zh)GKmS#3fV#D=13VO+rO;?f|)ttU~Sq)#u3N z!czaVm|IHvBjhKr5m{DX0FYSYn;|xUi}y9l4`VbqWYh%7^MNP;q`#{w>o6Fi&mJjv zkkWRKoCvOHOD+U)u7~A}AN)c{s+`Qv|5Mr7mruA>2cayl_&0JEU=KJ1cDLMx3YZCC k+C?&30um79y6gOJ0Goct$m_H4Bme*a07*qoM6N<$g4BZH&;S4c literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MO.png b/wp-content/plugins/wp-statistics/assets/images/flags/MO.png new file mode 100644 index 0000000000000000000000000000000000000000..e47815482aa277c970448fc7e0562e9750db6856 GIT binary patch literal 647 zcmV;20(kw2P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;4M{{nRCwB?lRaw`VHAa*J2SgGyZPEgvVwt#ABcjWh^QclmT3h$8~;N(YyX0! zm6fexWnmKpK?F@<3<k`)Nz9s^&CF)@op)y5Yq2W{b|I&^aN(SLINT$u%1IzV6_^~) z<G=!g0GN5U@_6^(R)G@mfSHOzRfr2g#@CMG>D`yD0GKGX<b3lgZcJ>2CG7*@bZ7yg zpVw%GCA-E)RS;1&`l|pF0pJ%dC(Q>WSp)(}R-n?PUb{`{a-!rTzYh!mz9@~#9EHmP z`~bif8F3ynU+b}%2BZbtS$M$x#fNy}QK;e5&N~1W8wK4wz!n*d9g}5-p^f;~PnoVX zsre0h={BBt0PGF72)qjQV2agV%+N+;*~n1<Ff@i=vQDdUmPc2XsRtAMjMvD@Ax=v! z&E8<?+!JzVdH#8s_Fx^)gogsg82oBJN?Da=*rFM>h_gLB3AlA;34m_e#uuNW%yA<F zhXRdhkJ$ED>AYrP>H=Xf$wvPRp7>mA-D5Xx(~j3jYy>!rF-I~m22t2IU7QwFy&5JT zpz08WKWPU~1yx6q^+1Kp9Ld013(`PUdB6FJ{cMlRb2qs-dmX2at%D7=lOKHOyg>n9 z{1Im?U|p$ftwjJhjrjic1*ht7Y1ZZe=x1G`;SPac{r?}W05iY>Fm=o>BtS<1e_SO0 hm;xnW<)n4~I{>Cb|2HEevnK!m002ovPDHLkV1h-~5CZ@J literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MP.png b/wp-content/plugins/wp-statistics/assets/images/flags/MP.png new file mode 100644 index 0000000000000000000000000000000000000000..ade07d2bb36730ae0be5992069dd0c574089123b GIT binary patch literal 425 zcmV;a0apHrP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-FG)l}RCwB?lV3{1KoG`%n{0v-HG)(T!H4uweDJ{w2!dzuD4xL6cm!|I=c3>r zC=#?FwrOn=vpYW6TBMsu>G!fQ-^}+7volIWSOp3QfsN_A3`$_6fmlS|Tp7KKOQg&> zyuER|E48bEsLmodJwnQ=sf$PhejWQB^bjf8uNUw&fH4N&U({J^B~Te>r7=Ho4RCjS zMzq($4u*&bVkanXot^6|M1;qa^WPYNza2Av?au{@&y3*y13MW0aj}C8@jSjBp25y% zVd5={VBT>%O;d598zs_>5+|3YsQ_&cAkXufZ?H%;c2ct%-6Wt0L7D#rilT5P*)T_} zo14{WpscEjPN%bw^wb{#FmZ6Rbyh$O8~~e3-a-bvsOct#O&eJQ1C(mjbN(IxN%N{z TzwUsn00000NkvXXu0mjftJJ72 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MQ.png b/wp-content/plugins/wp-statistics/assets/images/flags/MQ.png new file mode 100644 index 0000000000000000000000000000000000000000..44570c3f448b570a4836edf210e4e3815219233f GIT binary patch literal 604 zcmV-i0;BzjP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFGm;eBCjsO7l0ssJqSpWcWTmS&)2mk;v-v9s@mtD)k zYXATN;z>k7RCwB?lfP?IQ545N@7|l2zBbJdQi8NlOChz;mMkg?ZWR$X5%C{z6C67` zcW~7~Tpc><AVqLcP>?zZ9UP2wXth7m=u2MSeJ}UD>yVIG=+Kfc9M16J95~-|j$^H5 z6bVL@1IXJCH_T~peeD(iYwMe*7QcOQUn#)NNI`9}!t6|eOLJ4a|6C`~2G12p<#2iF z0>BCW;p;Ads{rY$m@w+_y&h1V%^`&0*ZvVvH$){4hsRC2CMAq|yqK3rG=LNUVbrDF ziMg^eLn%MTRLP_9HzYABCQ13@Yl5&l;Kh8Fj*bCP0G*De)z<7C_(XBS!Eu1!j)+Z4 z#yT{8jhhkd?e}>jAd2IGiMe+lw_CZ1JSIuc<h+uCcHndK#?qt!(4i)^77J&J)LL|? zha)_CvWfD_EH6}8y*|&=m!D|*A#a}FMM=TE$FH##uGXemy*AIYS6^rx><$k}i2zqc z95xOq7c8~KNyf7=IAGG0!i2%g_Ic5=T+M-P4I4yJgp`5@cUHJKooBgPK?n!ofN(%c z!MNuR_`+Nnt^XUr7=wRQXKO3v=Z^_?cAK=0ci7(khLVD#-*w!KbAtEW=xxCRO2F7T q-#`OR2atf<&*xDB#LlSi{BHo0w%t+$AoRZg0000<MNUMnLSTYnjtHgz literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MR.png b/wp-content/plugins/wp-statistics/assets/images/flags/MR.png new file mode 100644 index 0000000000000000000000000000000000000000..245ca355e850ac7f487f5d44da5ae6fdd184dc3c GIT binary patch literal 567 zcmV-70?7S|P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-y-7qtRCwB?ld)?QK@`S+voqN{?~H+{r!fHw(L#%GU~8e40U@!rwM}g$TKGrU z+A9cl64BN|0#@M;5l`;896__$yP4UWc^13I2thdWnknXcKi+#EpAr#HQVK|c)73jm zdEmeR3mdN<506uXm;j)Ycr4-N`jeIcnjr>OTUQQ0<R9byuI*tLplJYI#6af9?Ah$E z=7-n50`Pq2a!FMsWU)R^5d(lW0Iu--v^o1O$0+cz6c*tCfPI@IK$^f*K$GAK4}bx% z&a&q+GB@Vdg%R%t=TJ&``l*E=K#qvw&eDkYgR@B0a|oDN#}^sU&mC*a9oAQNc(#3& zQ0=1?JX-Al@OdOGH8Zr6qku8VTn&><dC|GV>$@MheQ}pJy%qp#D?=9R1^3?G#3X@f zoZ_tmAOWz}QN)N=kzQV7W2;SnlCpWd%jS(P{YlFGtv0>9hE{<hMr;Kz0Nz@RG*Cc8 z2fpPE9(-tXzFvxUZ4Ir2hK>jz67lxP4V?GX5#~x$FuL4*98LjnCapXy2PPso|HlO{ zA@ZZ!|DPy$1uOu|!2FEO8Sq^Jx(bq>5fA{cP8#Q50|1@E$gta0O@ROa002ovPDHLk FV1fkp>`DLt literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MS.png b/wp-content/plugins/wp-statistics/assets/images/flags/MS.png new file mode 100644 index 0000000000000000000000000000000000000000..679cdad973436a0102b1fe5d2a8476c80c63d602 GIT binary patch literal 592 zcmV-W0<ZmvP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-)=5M`RCwB?lTB+AQ51%sn>!h2Y*V6%6kAIL(QIOE7P@h*2nE57Aa+%8Ed@9J z4^g@;NR^_9c45IUbfF|rT}ZG-Y;8!B64Xq_>0~k=*G<qy>>}pfoU?h~bKpEjD5dB} zG5VAMWMS?>@Xj$P*IlkVZ@HhGr1-VT%-O@t&VSm~yu5r((*XT>$>GZRQA9e8_jr?Y z$49w%;RN|gn~4dhd!hiPU}a?kK-T~{(<tD-s3ENePNmM?a+#)Kk|X5S`WQlVPfn!< z@cjrtY5;QwPIL9lG5oDM`ol*AQ&X6_Wa&)>%c?RyeG=g}*k4`6K9WTb6SUuN0H6Wn z4oVj9=K1KvxuF#Io_uDVK`v(`jm9<!KR_BuQb7$jp27YZ;JU3p0kby?1cAh|To%xQ z4*=ZhtlYLjjJQGI)L6B)Nn2)jfa|(|NfiB?iQL*N#=lo6I0c5kz|m%wwVeT8%R|QZ z5Jn0CsLp-q^oL$QV|pl0EIYtRX^CQ~iRTUP2xzx3<q$C;P=C=S6x^<y;+se^S*-H1 znc?Zy7@k-C4bq@#Ua}L3k)8;&?M+;FA)x_8QHW)g{~Ki!*asLrdRxE`0Z2ga)Ls+< eZPD*L{~7?4w84nqs<TG`0000<MNUMnLSTYhR{kRZ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MT.png b/wp-content/plugins/wp-statistics/assets/images/flags/MT.png new file mode 100644 index 0000000000000000000000000000000000000000..d94b9e7809b13c5eb59368fb2bb9074feccfdba5 GIT binary patch literal 410 zcmV;L0cHM)P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-AW1|)RCwB?lhH~8F%U&hnzT?_w<;>Q^$Wzm@x@>C#XsqT_ybj2!78{~!6chx ze6U*A-KwSY5*Y3r?p!iTMA)Ph&;k03cb)RUs{sZgGAkxi0Je{Y71iD8*-FCj;{3n> zz2bI4;T;Mv50CWs_r64(lj9$j6@uU{uK;=m(1MU+B!)mNePtkwZ$1|NR(f{_DN6ut z0J1zs-_J-fGRX6aIL%+`!D&r&761d_y(h~L8~04bbG<3xty=<|b9B4iMnE~fuJu}3 zhSjYlz*@U9X-TQ>DwMqW^gjR%096LuBJ95bO4VJ7V7;$quyVfLZgllIV*npQU^E&v z0w%@Nuise#17HYjt$7P`V5$JUI3&F$AOc=(dd}|y0FlXn9eUsAVgLXD07*qoM6N<$ Ef<!){oB#j- literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MU.png b/wp-content/plugins/wp-statistics/assets/images/flags/MU.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0aaa91b1285e3522d59ada96a67b38c9a75572 GIT binary patch literal 416 zcmV;R0bl-!P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-CP_p=RCwB?lfg>EP!L7WBZ-Z+B^aTIbt8453laPQzn}<i{6;sTpCT^Yw1{A< z6pbw@=H<m?Tr|{(g(mIYyv^J@cjmrPBEmXQzy{FB-zqS`)CRo4<<)4F?(LiFmJQS; zO{txpl(ei6g!ujepl$<}Bnc9Rq`~LkYAFm_faPx^NdjQm02gkTgUsiH=>LWmU?<z; z$vpz@umK_+^FEH4gqmU~O2ML#B<BFRK&0tC2Ta1a)E>NM4M&-|$<E7Tr?=YzWLh%( z25%$SKkgse09r>N4v;M;3&1y8C%+?{-=49x=M$$%DFZdj;cFNG!<j&A3@(B*3uP%X zgxHw510!k1xc|D!XEX}%fHu&qNDhI40<8Rytcn6DVAQ(j{4)S2HE>!rYj8^d0000< KMNUMnLSTXr(WWy1 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MV.png b/wp-content/plugins/wp-statistics/assets/images/flags/MV.png new file mode 100644 index 0000000000000000000000000000000000000000..a2941593846aa586083a136f9adc4ee6f40f2c4a GIT binary patch literal 537 zcmV+!0_OdRP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-pGibPRCwB?lfR2oK@i73v+pHQaxtFBDIBNR2tq_S?Cfm>J8NwO{|WyR8(R@9 z>;hUTqD@YSa3ZK_RPfg&o4fb&_U)UoNOG4e1mjJ!u<U$y<}>pZGvg>BKpj|_oy$Z3 zc2l7J<L0gJA$3dtzW(IVS_(9&BF)Z~e=Aua3grEF0L>IgtSqsyM}O}edOYVNB8TqX zsa2#107(iEi-Kh2(UIrQ-OB(}T5+{?o{jbzPrvr|lOI0lLz3XK9Do!c<OQ`~JE-?$ z*%&orbM*q7=PvQ$V~_Ffh{R19>2L%FWnLTz6nRGD(`VFs2BR~Cs^oU(I*;Ezqx)@( zlZ_ST!;XUiu62UR4EnT!EXSM!Rn!zGLU;Q$H#*l)GhY7OCUpt3-mq9QDQ&TZ3DT%z zs${7Ej_&Y1);BJm-r%|aK$t^NMPj4~<$=J^B4@RRiLiD5)dKG~0Nh)gj0md6Ub(<v zuMEUv$EnwA{B^Nyy0->Y&hQ%d1wv&;&kz5{3PFH2unx4AOdbPY1W0B^N|qF;fFMV; b^Pd3#aAmwroh<~+00000NkvXXu0mjfw`=9@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MW.png b/wp-content/plugins/wp-statistics/assets/images/flags/MW.png new file mode 100644 index 0000000000000000000000000000000000000000..51b5e3144f32d01307dc280f373d9b9998685e1a GIT binary patch literal 485 zcmV<B0UG{^P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Ye_^wRCwB?ld)<WK@>&L?98rZ*|LfyZVWL=mC6LvxziWq3tZ(Z@>l)?wJ9uc zV@P4+Dg*+{CTpYJd9yPwMPy01v1DI(ykeNkefM&Ws`3^Xpa2e+dlv}s=z#HbI{m%* z;((7Xr_3xCs5Eig2f{P8v)Sy}0S7TgCX>lZ(wQsRH->>RWCj*VIY+tf0|`)7=JPqg zfdj0F&@>HIRq?@E{$@Gvi-I$o1MnjTu0*h@=Qj3~Wr>IYSO?&}r><-2y5@W^#2N^; zV7?(YkAZh6-`fRQmf^i$oy(;=WY~em9DS6PN5&YQQu=HFg$o>+hsAKr=@WtPTK4Ym zNlmkr{d#nScXq9yYg<Mbh-o{55a@!e3BG*&L|%?)d%qRIzS|>I5Af}V3_v=MYQijI zd}&k@(ruXNMHryu|3i5Z3B}9$1ksrIbNA~tRS*M=ffHb~<L3w9rvdD;NOnhp2#9%W bo&OC0=Ubfqp6WuX00000NkvXXu0mjfC+5wL literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MX.png b/wp-content/plugins/wp-statistics/assets/images/flags/MX.png new file mode 100644 index 0000000000000000000000000000000000000000..c1bd33b64c978dab513235418ba364761840f03c GIT binary patch literal 526 zcmV+p0`dKcP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-lu1NERCwB?lfP~gK@i4&=e;vAhO=;#G%nLb0ujkoLLd6jq{uU*Oo`wP((?!u zp~?$TA{hw;5foAWSR@E3iF4;1yL;Xp3WvKh1SBid?2cyUo851|2}Fe3SOC<4d)MbQ zW`SV{wAOZB{P;7vv-WbrKY6zP7eeRF>-i99I&mz`E&R7#{n5kmlLHU|^Wh^vGXzxb z9I4GX*Xch2@}uM8uG$ZfJO@xAfXOYF=8D8zO%yq6ae7ESZsU`rBu*(t#sClkXrnpT zDT&SaJ(V=q>~3$;|N4%NtylQLWr-|cwJrgEYQq8FNlaGceEIYqJ3NCK&*#0jEF2yd zv05CXRjmq;QH$>2#TQ9u*)je0BB~MN<~oQkV=~Io)>pou4N)_~S48!s`;=B=7Uu)H zkC!?1&nt|MFk=$O09I>4xl2$XFmAM2>8@5JS4KqyZ7U>NYnef)kB4%zWTS|pgLq5@ zz<TEy?4M2)^m@GszdyLRQO*I-0y@C`DR&_Sz6F4~UL-XofCFrB+jagm06ML*Lx(=+ QAOHXW07*qoM6N<$g2gM@n*aa+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MY.png b/wp-content/plugins/wp-statistics/assets/images/flags/MY.png new file mode 100644 index 0000000000000000000000000000000000000000..44989608be16a08d2bda84efb7aaaa2ca8f4b328 GIT binary patch literal 509 zcmV<Z0RsMsP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-gGod|RCwB?lU*wWQ5eU6$4*-N($3htgtV+gi72k5d;z&sd<Q-OUqUIlP;Mj_ zu4F@8BaN_0n8aQfZ?n6YY3(>JERmNC|C>|i^!(57InVhEDJB1r0E&T7VfCUMaHjx~ z-l18uA!bshI$T<Qj!w$}2p79dpUiygP`Z{VSAbwm<qg9FkF0Ok^CUtv*4+b;PDjwD zmVV$DK?U&j_3WY_wz9HPLagbG{_ZV6Fh1Xb)jxp{0$J!6peP#UaX$&*Q(m@gthCK- z#-a57fqXs#K=#2#U6}v!a@Tc1QBVNp5-~;wlPp(3@;JcgWE%ii*Fmn^IzN-EDz<3? zyclfg8e?`IEph-d%;IV-NQoNC5Z&4QlEAVo&@==P->axODwiO$cfXr`ID{#n<>I^n zAZ{3j^eV$JBoJ2sQq8Rd`~jrnz=!vKm3;T_K=}Qn9Q*AwuIsvI0$tbN2y$k77t4Q( zLQVh?pc)8!EY1Qc0r(0*@_96Hft>hnoSz2(8x-Z$6Lu^w00000NkvXXu0mjfGH=p5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/MZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/MZ.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d9b6abc6e87f9205a23a75933141152fa27e07 GIT binary patch literal 539 zcmV+$0_6RPP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-p-DtRRCwB?ld(?|VHn1L-`#hmO{qs25Q3>gs{@0x14$DnM?y&OA8>VZa4~V$ z!Hq!^{Ra%IgVC5U8xu!EwJ4-lVlC&{`@XyHUI#!R#%jZ}yxZ@6-Y4&)M1=E50VQDi zXig#v{LnzSx3V7Hy>*43C4VBqi`55n8mN*x9)AefxN!-iJqo2j++Qp!1mS(O4N%p9 zFIff$LvBC)%>A_%MJd3D<2W9r&O&C(HC#~u_zGxt+c!T>U2fpnZ}>?@{rNMf&y2P2 zoI`8f(g4<^bcQ{WYZ3K<qOr2hqh!FV+)}SjlgVM)#|mdc`cWSM4UmpTBw@_Exi-t~ zi+F=4+<EKKi}%^g(m%F`VMq`JX94WN>f(^f_ZagA?!^(CSxT*Zfm8(V6u|S!xKkN7 zw;ESv=lYU#TMP1Op(zse<zMP_Is!Bg9T<!02573xzdj&m3HsySZ;E7hbaH~p47yTb z{$+|k8=wL~vSJJ&$Jq2Yz~+Up`|u0BuD}i;|Jwqr0zzOBs7=^~82G9H|ENg*ga8Lv db>2Gv8UQye#W*~BV;%qi002ovPDHLkV1nSX<qrS= literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NA.png b/wp-content/plugins/wp-statistics/assets/images/flags/NA.png new file mode 100644 index 0000000000000000000000000000000000000000..61cf1e071b6c199a18456f10a142b1681d36a892 GIT binary patch literal 717 zcmV;;0y6!HP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;Q%OWYRCwB?lS@ccaTLaX*L%kqb97>)33W&;%;+H`Mi0bAVYvtid_Y2`U=-CN z(g?y_1hxr@KvD=IYLi(=O^b#=3rZ=YoGc`vlv0}pZPanRkC}V_ZKNrJK>RjmbH3l= zobQu_5UfNJkPJAN=5k~J3ku*mP}dbgK+IH-C5t54`fD>Dw-8ARHHS7+t-mMQeGe-Z zC)?-qC_rl56dWy&QM`SO7w@te{_IVd4U-g?lZxU@3dUYB9~eT}kcZt8fG<@6WK|XH z-u8)H?+BVYf$w=5mL(C_4RSYSQD3wQukQxa!z0Kx8?J-p^cChn+Z9;>&@_`r&)k&m zOr@vS!|c3{p$hhv=5abFjNIAI%v1<R`fBV|Rdg44=y>xG00lrdG@kTl(dExT2oO@7 zV}}bkGB-fv@@=9EDz5c;L{2r(niAyWkRPEL2|&z<GCFQCJric_x@@jBY-FFmjUPRa z5vIVizl^tM>uH+kV|?-pSxz^yZYBVW>LP|FDB81?>t)G!I~$pL9l-8z;68qWyA`{* z6u6JRFh{D*PTVpvG%W#$M09HFN@#J9BAQzXeG8KA$wY3sz{PxpTLX7+2#I9bhAAv! zmPt(g18}Bx3+Gfn;pR^CsLGnc9ei(Tq{$qie{hgA#etM0{eG<w0$tY=fYRO$LV*t; zAhWuLmnW+^KlYSh@GBXPw0|OKAux=@5sjIFL4Mk7I4dh@FUjZTgR5A&hF!KXOZdNW zmH-!!4Wuoz3lU&a0_3G4$;$+ofFZ54&c6l#tK$0}Vv_Qq00000NkvXXu0mjfsL3mB literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NATO.png b/wp-content/plugins/wp-statistics/assets/images/flags/NATO.png new file mode 100644 index 0000000000000000000000000000000000000000..a350da0c8942ae5a04546d394204bf7132b3772c GIT binary patch literal 545 zcmV++0^a?JP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-r%6OXRCwB?lRJ+SK@fz$p53)E#<Jx@CLlS9kc^m&fS*9hPa{R-NJNBWWCSFL z<HVr@;j?#kz4IOduOEWQTqiS9YpQFiswL;lZAyRvaIZg4DF-wqFn#{=_0RvA{_fR_ zMG1^U%shGg;IDS3DoaGb`hXyN${G0h=^9{M0)_Vp-8g=)y8ZK%GF7P%0p}A+$-Z|s z8{vHdC`th5JU6vrRoi}erYs8{olj|7&q{9yKGBmvDZx1pKnc)whUKbbtt}}*RTU@| zSj@-hp=G%?=+@C0kCN>ty3QN`Lh!7#VXYnBCuWlY&z_#MIJ?VqGQhgX*UL3^>!>OP zk_q96L9H8fr)XM7B4cdi{fBQ{|JrbWeup=2KNC~N_hK3w$i6uMSZgUrgp?7W**Gq) zA_B~3BSK7A8xh&M<9#Apdjwz%qbj3%iwXg20vA^`mp^KZ2^31mI~!BRnj;OIa|}~v zP!)$1<jiPTA|k|?d+`nyJLmQQF6GF2`Q<3xTdMkIciYA1-#7~}1s(#E6O*ig?*bJ4 jA{8eBM8L^y*ZI!?QC{Vk_NnU@00000NkvXXu0mjfEk@od literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NC.png b/wp-content/plugins/wp-statistics/assets/images/flags/NC.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc765dea7fbc7c1afc55a4ebbeb8baf0e63acaa GIT binary patch literal 608 zcmV-m0-ybfP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkO1ZP1_K>z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-)=5M`RCwB?lg(=rK^TXh+1+eDHXltYsU_gSmLiG= zF%%Di9~V!8;JJ7b{{unrZxFm05WIUW6e)-_C@9#2mzIKsLj6D+Ow4AxyR$npUXs>5 zN$d;5+@AS8!|xTw7)~+*aDnppo@OL4a)8>62OB^C=k+(8YfT66l+s*2Ux&m2E5<7Z z9L7aVS^_7@MiyWUY;N}fJO{94YBL;IG)kMS+<MQC{okB!6<K|Ei4WV$h`fQnzG}AS zA`=_Hb^ziyB-K8T?!Ba5)qMJ>xOp|lxwEU>eLT-#IGagfS&CSO05|}zg6F6UikZfc zgYSa1^$}OvB^H-#I=7!v>YT}Hq!q%T$J_+q|BA87`y{eQsUUEj5#^Fc5((le=v{&5 zT1OV5QYI4PGysYadr#vyilMLA*-1F)rQ}?V^93q_!DtPWlcq#rbgZy^r-2>JvD;hc zR8_FF2+g{N!<2=s>+rCUQSh8Rs^`PoF(8g&3auGdx)*8hZSi_T@#KYO&|X3`JwRsw z+8E*}K29K|#5D=sXn}5S9_|M`%NL+u#?7gTX$ByrJOW6QYW&aNvNcOW81?^IX93iJ u7Eqb8$v*H^0QPv1>?r{Xkm984{AU2vAHIp_9eeWt0000<MNUMnLSTY;HUi)P literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NE.png b/wp-content/plugins/wp-statistics/assets/images/flags/NE.png new file mode 100644 index 0000000000000000000000000000000000000000..31b8e43c29422cb1acf0a0bafffd622898a260b1 GIT binary patch literal 442 zcmV;r0Y(0aP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-KuJVFRCwB?lQBvIK^TR<&5SYGO-P}n5p3cK#2Z*xinkCHynrHj1Hl8>*$HB0 z;{^my5F0_1plC?4yEB`e-y&<sCPm!j!7woI|KB{`%<qW^%fJK5KrP#gzyf^@G<uhN zokec1pFA`*5ReX0o7)9U3+d}KK%fC7E<xfRGWeP*mWiebiC_(J34qc7skM}%ZzTHp zpNUe5)Y`FhD-6SSwOY;9q@5S+;}r;$caKrcR*sLN2;cX&G=MRNX@U6ml;r6i6u9mO z!QoAgH^u;<0pd8GaTy$(GY|(rW&do3|Lf5JJJ(07tk(#KW-9P3yt|9sv9DK2KKr9M z0IZ2|;_$Li<}D`<YbG36n@~Y0j~-<%1i{*5EMR4r(rv#l@)@lMG=L4DUa+|bym^4i k21ykZNCE3DJI=oY0Lxr?-<HB%nE(I)07*qoM6N<$f~Y30;s5{u literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NF.png b/wp-content/plugins/wp-statistics/assets/images/flags/NF.png new file mode 100644 index 0000000000000000000000000000000000000000..1bbe095a632cb7d4839ec2d19f45656eab1d5347 GIT binary patch literal 480 zcmV<60U!Q}P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-W=TXrRCwB?lRZnrU=YWDPx9zsY83}T#6hczx;crHLlKpNlP-ezZFHz0egeV8 zS$AjOHrp&Nt%xAj8k;sT>63G?D8<FpKOA=)-2dK{i0~gMpdZL|bQ(l}uYsZE?c?WO zvR|C+jB3C!Mp&31`&-FMAtKz~Jpnih$ce~(PyH)3tpTd}JkHc4PN9H3JBKNk@J~-M zwHK7Fe+612BYadUUp7D-hB$=+eTz#p&(7&vT*BGdpxp|In=Rs2&@Bz0&?Eq8fFKC4 zrf2XD4|zQ((tfCt-QC61>m;5Bw%uJpHcQa)X@D>Yh;ObLSX%`V2G-YzuP!mQ8cJ(O zk}d*iw+W-@r-hF&#M|G)luKl`HZkQAZ^a^3)5i*$SS`OxZ2z6utA7*bT-TMfa9vk` zoCcU%IU+MWk!pqh+r#$^B9Vkfz0%7mL<$%J#(}|<!42S10e0t+?34rsh}3`I`EvjU WJJE$Sr8TPn0000<MNUMnLSTXsy~H{I literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NG.png b/wp-content/plugins/wp-statistics/assets/images/flags/NG.png new file mode 100644 index 0000000000000000000000000000000000000000..7b30c22f7ecb8008945afe47405610d8a0c2e1ce GIT binary patch literal 441 zcmV;q0Y?6bP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-KS@MERCwB?lfg>EKoEw%O+wYSl7k?kSHYVHUqYWlulh84)#uQMsCN&Ff>ls# z8&aFiZg<B+Vv|-Q6z4KC{LHtr%#0Ed{$mPg0o~FsV+I&UKzw+4`nITEAD_?VM^|S* z2sbAen-S2NddI=`-k;CyZ|xQ>D}{(~`*H`+iGa{LOPWvkm?VvW$KmTN-e|{IX92<p zz*xgjr;K#k2&ij85MZnUAOgs8&EPX3$;UKJWt7$6Qq)uct+{v4BzoM~!NZ_Gi{sTU zk);O6G6*8P_(niov(93(X$8o&CTy?a#G{H1n*jn-ak%meK>^4SCj=-!m40#K3QZ}6 zI3dsSssm#TD|lMPP=2+#=J6O)O~H8YNuJ*43VOZXT)wD(ud@PTU<X)V@)lB{uYj;T jq;N@q1C09bIe!fR3i6qxm&UuS00000NkvXXu0mjfKt#1h literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NI.png b/wp-content/plugins/wp-statistics/assets/images/flags/NI.png new file mode 100644 index 0000000000000000000000000000000000000000..7247d8380e4dd2de7f41cd6e3665a995e2a08a09 GIT binary patch literal 431 zcmV;g0Z{&lP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-HAzH4RCwB?lfO;^K@i4&v$sMb5DF3+J9z-3wWWy<!#hye`7)M96XGLSSy>ok zVl+k~2JX1qyW6oi4#YDN<lAC4JM+!V&L2@#wt)aOpgEVDzyVVWv`+`axBo=HK0E1J zppkjc(SB#Wlm%4b_F)9jut1Pz%4C)@nj|a6WqCwaopf4t(o6vY3*emNBXo>Iw^kO$ z2+l2Sdr=f=6_LJ=pY(O~sH(H7Hi{JJ8Gs~7eu)!uKD=RYc?CYKXiJU-h~v0o;QbE$ z<3qd}a)scBzT{YdgZ>3UvrCv{2%z%;VR64(A@9~L`LyVK@r5`+Js1QK46-=on|zb% z3(g_~mnPIzsadmD7rZJiT{>_+&-r}0|IaWw0ouSG(AtnZ0iK1Tz%{Cc{tG$aWZQNA Z8UPFDsOL81>#qO+002ovPDHLkV1iswtc?Hw literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NL.png b/wp-content/plugins/wp-statistics/assets/images/flags/NL.png new file mode 100644 index 0000000000000000000000000000000000000000..10e8ea03537e29c79b7064ae693277035c27a68b GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGzk0ejhE&{IGTG3N z*-*fBescQa3`arDjG$#+jTRiTyylPjOzyB2GR`vbVA;rh?As}0li3?W)=buqoTmEU z{=9O3V5r|jMy&^H?t4#Z@MqWAw!M7)@sN01yBMnl*XGQOjqi0a)9|XPVp}1bu=VwY zZL06@{l9nZpfmfX)7)ELGpu1gVW=d}d&%Un#v0Y*1s3b~evi_6znAGXr$f)i9gWrJ zSrl3VWHx-aXgGV;wrtyz*Sn=t*F6s|y7O1)h=4$#&;1Yor*#OmvuLVn1+H2t>#DG5 z$rL_DPuGn5aeY5~PBL&Ou+9;m6`hdHaGQUUF3$-Eqvd^{&oh*toq6=P6~_u-05EvE L`njxgN@xNAFt3SI literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NO.png b/wp-content/plugins/wp-statistics/assets/images/flags/NO.png new file mode 100644 index 0000000000000000000000000000000000000000..f629dc409cdf63e53b6d1fd3c1f2aeba7158acfd GIT binary patch literal 485 zcmV<B0UG{^P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Ye_^wRCwB?lR+;7Q51#0F*B{wreQ&_Ah97r2s=AV36Zd~@^8f2%Ero$4SWA! z5@9VW=!8UdIx_m+bmm&LrbbKBxSMz1yC>(KoOiDwBK#)|AOqxEXD^|FcMB+%H@08C zSH{jyS=&3|@^}|_bLUrv@r$z&3m7Dd$Sy9Vii<NN0A%Oqx`-Ck)iuDN1(*_s#J*2d zc}rk-k5vG|(mfbPiozToLc$Qhv;Z1PVOBljs+WM?YIOi&uhyx(uaAaO$#psi0{IyW zTSxL&1VJFcv;{D`en==8JYS_6<(Ch-npZ4ju?^i;;JR){huqTsp9);pZ7aB4Sw-76 zaqt1a)bl-Y+#Imd=wzn_134a=CSn29wL(lQ<#v+&_yGWkg}PR40;M(5pM#8@fHJoE zm2?tFjM6$G(2)o?UNr%{Iu3rNgyT4rzrA-GX9Fk#6F{NIUGRY?129{QWcEl90owTQ bI)4rTq=x16LoVP900000NkvXXu0mjfTIayE literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NP.png b/wp-content/plugins/wp-statistics/assets/images/flags/NP.png new file mode 100644 index 0000000000000000000000000000000000000000..6dfe9ea6b8b1e3b7e39d7b897e1cd305c543b363 GIT binary patch literal 634 zcmV-=0)_pFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;07*naRCwB?lU+!YVHC%I?><~b+eIeXrv-&dbP-V(fw4wOWjBFPAVoL16k#}A zXqHKo4q^mRfkLB#q6-;aMXe;sp;1YrpquKt;c(XL+I+Y9o-Ug8y5$FS;DP5k56_SD z|DW?HBEo-#h>(Yv+OG@*Zv;a-0A;CfmDvguMX}v<_f4;ziD#n~TW&j6>sNhEC*z9& zOop>Hlg{Ft{9>&i8}`W9c(l|1;LOFIfOR2=5uj)(4RSduwyvRZ)zmuI$Y}q}S7r2^ z|9<U!vWyb!-F3aHcaNEsZ7m=|GH?rR@D<O^>lxWr9dc~8wfCHF`aGWp_6}#a+WIqs z?eGB*L3=s~x(>j5&B5c+s%*S!Q*fZKxf#%l0Bw6aRi8Qpz+0t^A^Y}!>V9G>IrJ%V zDJ&vlF<wkfB+-8)0N6zW^?Q=LyLVm>hpzPlIv_wAn9O@3rXsw>g3VQf?VuBvGEPI} zU29EU$5|kjUkM<Shs_xzySvgOiPJ4I8;J(Dd@HY(d*%D(*s0z?LD!1r;CC{W`nyk0 z15ith`e$M9zN20KLWrdhkQsi>#F68mn8-#y{>i(P7|Y(g^ldoNRr2uBWpCb-xm|Eq zdeo)-fzgd+cRswh&?q9h5wHR%1(q)~{(uIkKvG0<Mt~Wx0p>*t(19F~6%qZ{03rSL U9$!bUqW}N^07*qoM6N<$f+GYNf&c&j literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NR.png b/wp-content/plugins/wp-statistics/assets/images/flags/NR.png new file mode 100644 index 0000000000000000000000000000000000000000..8cffaca8dd646d52bf9c429283d990c248393442 GIT binary patch literal 465 zcmV;?0WSWDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-S4l)cRCwB?lg&y(K^TUgIgU!GorTmQAtGA@K@0b-T}ZU4E9e5cmRbefKy(LQ zLm}Z#=?^u6z@L-GIcJV%riJDYSRC<VU=}m;@P6+*pD@O-N(mqVq{sU*rGSA1>|*iq z6F@1SL?RiPP%d9=N+2~Hh7=0h(Ig8n1}c>XKuQ9!Akg&t9_{w`+~r?;gqVk9vnhf= z1H|M=x}w{4>Gj-5DlE%FDFuK8a9xj1XMp2)%%&oQU~x(Y*YzeT<ln0KCwo1>XeXKv zmW}fjXXo&FPXZj3O28UhxeWm7wbs9YbUF#Rz}2V)-}Bi&*yZl_9Dw7KYpRb8q?8K* zz7JtI<AJX{bZDlo1D0io#|@0uD89*=#`oPRKq*DN*5dT+27uR>4>Fm*Ka|#bE(N7^ zh~qSQxNj~y3Q7PrkOMMHKJEkW0*H+VDYhga1e92HoPP!Y(qNA2>vqb;00000NkvXX Hu0mjf?~%IA literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/NZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/NZ.png new file mode 100644 index 0000000000000000000000000000000000000000..810c8bc467ddd32d6069799d27fd08bbec08a60f GIT binary patch literal 623 zcmV-#0+9WQP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-^+`lQRCwB?lf7$HQ4qy{bMJdEyPLR4u?n&Xf)XpEsl`eZAs|?&g<V7&iy$aL z{0{<Ff)GnVP{a_7g=w^~P?92@gqR|_tQrHdZ}nw&@4FusSvCrygbWPB6mvK;bB=@% z*i8tK00Z5+lQ6)~2pC+Pp82+v6{u~rxS74<+0b#`e{3>-<{&p7uJk6H2N6)R)z8mQ z?2CZ@S06I2oU0<03Z1#noIP6Q;`w7N)D0se*`JgJyoaTwPXPT9pvN1F<gdS?(*{|6 zgHo+VvruFd$NjYfy}@fI%RG3~q+Bl1?l=G)0Zi{b!PV2l<m($Gv(K?(V-yq3i??;s z^a~zA5ty250icw^*&KifV06Fc>Ei{KvzXf<@Z{wxYYcGth^Eol?9ul=ko&;IsX^{6 zw|ieWG(0@HYON+sTYo+G-3t|N&3wmMkBBf(F47n0tgK8OjsTk3CW$KHoX41)5EO9| z5h)13^+)R@kpduufVY;GZEvsOjUkT<_yBPn696IL{1!l@1n)dfB6M(A=W({Pbq|1! zX%jps5fDL%Al+05AqZAQ+`BY{D4}hk)A@~oF^0ZAPm<_=N^f#DB}p{Kd5keV0OP$Q zO>6(vt_^|^(6TLO0S198uxE!}_yN=f&|M?x9RfJO$ZqZYYXF?L(gqf;ZF2ws002ov JPDHLkV1kI11oHp@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/OM.png b/wp-content/plugins/wp-statistics/assets/images/flags/OM.png new file mode 100644 index 0000000000000000000000000000000000000000..282aeeda50dc55626dff8024f77968da00aacc80 GIT binary patch literal 446 zcmV;v0YUzWP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-L`g(JRCwB?lTB&@K@f$%o}N*RiW`wY7BQ!YS$hZX;(<JdrwC*rf(ar*{J|I< z+n(vJEFAm+6P3J8*W%TySJhQYMEDOBkONBDdkZYE3W3VF)%w)68h8&{<7PANJDtnb zm8yk6(Z?~RMuX__iR5E|?e(s8Q49d>jR8Q?1ixNm-v`$U=nz0vtE7`DakooYuM_0* z7c-r60E7T$I7B;#o6oWRK1ypw%_b-XX^L38i!%h33h`ue5ZD+))a&7w%L7s5C_b$o ztYeJUM-Da{%0aM8I@${nL7lNLF2yAFAh0zC6-9{md(w0J<=6i2!aT`z1?{)Y!FG#; z;YpwBj{$n|*sVEoU@cN8Kospsx!nhyg&<g)>;<e7;dQY%A$|47SFN)GD!>C!zVQ~m ofsq1qc1Ze00S8$1-*f&M0LfH~+)x0G(f|Me07*qoM6N<$f_Or-dH?_b literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/OPEC.png b/wp-content/plugins/wp-statistics/assets/images/flags/OPEC.png new file mode 100644 index 0000000000000000000000000000000000000000..0d09ad3d281299c9cfa0180195128d92c0f1ba33 GIT binary patch literal 633 zcmV-<0*3vGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-|4BqaRCwB?lRr-sK^Vq=GdsI1!g1&s{7aP3QA#v+hD!VdHhvCE8(ThvEsd3x zjhz}nj3k~h0TdFEgFBDA<=EZXop~)51QQ#=(@f@_Jiok|JdY9)&Lagx!06F=7FpoH z0QI@WmEC{e<P`sZ_eyUb-<dGLh!bJ<O0AlDAqX^DDN5(j3Y4mhrSmAQ5rmJe1YpDf zf%TrgE$IvjCPpKk&Q3BMXkKsr=4LHsYAhxSGz&|cY;^}TMk1{D0D%F>i;`|u(jDZ? zPhV!bJ`BM8RD<!z5E~7^{p;g=-tM6TO<t4$Xn-`!X{QDI*0HqHCvzU_Jj*+MKJ6tO z77i!EhhIIq*3nK2(kutS90S(G(928KR=4RKTE>P9t$xO>TFikL;xJ(G>keo|y>Nv2 zDL|HHNO%EXIPOi3^WxDA)_I=4|G|UFi#)u23Fn2?y#v0q`jlaSOS4meJR|TPUwZCd z8>2pC0C+NUl|~#g8V0O&583Fac%>-4$K~0{ALLnv7f?p?YQ00VJz#x5<=NZsEG%!) z><lOc8gYmc!As@&yMeWqNFa&~+r5;z#T7!MN%E3+UU>O!7qlWP98qNOQhAO6R(wga z(X4_dkcd>_(+U(M{wRrBRr8ZTS_RaB8$j)hT}XhR3J8vh6r2&@0ISYh=RX4g9LfI) TO!0Im00000NkvXXu0mjf!MY1j literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PA.png b/wp-content/plugins/wp-statistics/assets/images/flags/PA.png new file mode 100644 index 0000000000000000000000000000000000000000..81d3fd544df88165e5dfe9e439fb67b5ffdd929a GIT binary patch literal 514 zcmV+d0{#7oP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-h)G02RCwB?lfO$GK@`V7vpcuvc}BVBAQ7|*B-o_YT0!grHa7Q%na<u?EbIcQ z7Q+1jAr^^{OXBUVxtpDxnP-vH-PIU4{KD{<AAH|;-upf!B0L8QNPv}jTm%-l(ZHIB z{CMis)!`xHJt~eL-Mu<J?Q5WWcQ7j)pFUr){q7~5wg#ZRwS|O$ilVt@1tJu~AwX9H zF~HO~&Od%79eyXv4exhf15jRG{w1g>h<iPxECFH-;Js%liP_uPz*xuL&gT8&Fqt6E zp|q~FM-i?l0MG!|S~{H$E6WK-2X7kx3|R)i!(NrfR0MAiK2S=VEH54v>L$JTXK}~l zG4y&w0OscecReFyrdq$IgqlbEXvE~?1V0)9VCo7?D-gF^1XWAn0)&d-&)FII@i73a zgF%y^Fova;pdMPRhVK4;BQ^-EwIo4ES~asM1v;u)*YC4B7~JoRS{JN{C;$DWnc8{K z5owzK*Uk!91J;2T3(i6gd{c8LCU=fp03NXFx#N600MBNs9OOVCbpQYW07*qoM6N<$ Ef->aPg8%>k literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PE.png b/wp-content/plugins/wp-statistics/assets/images/flags/PE.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2691e77e6534164cc1d5f75844c25fbb49ec8a GIT binary patch literal 536 zcmV+z0_XjSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-o=HSORCwB?lfiD(Fc5}6$4(Y#mr8(;03iVqJrq%TLcQ?>zyTf+i3?od0k|T> zB18r1Z2>_+NTJCtG_f6fI3!KF0uHOr#g;wu`JWk&5)qDL3dn%fZe7M4@XG*edv_oF zXwRf$!i8r~7QDaRd)T=|PzeARpFcfsfE7Yuw6%FO{x2Kdys_|xefthz#Q<8oC(h@D z{3ob?6a1&o?IuR_xwDA(0NMaF)}o7&Sj-j_lm~M{5YCKG6N|C~2pB_SEdU0<S2bzA zPn?ylMBsN_@#@14As(=`ev4RkcM>5{_^KWNRb7!zr>#?$!i)DW*`2)R^6HG;Eal4d zW1m8@Ur-r60P3n@OadYHfKy4z{n=xhH^P^zciOuSAikmYZUES-Mx`kd2f+5`ZN85l zp`vH|`Z{?W0IKoWwuqeqXAy1M;6nvE<J!hXU(o!pJ4zu@sNInwTIY}xCm~D!+eWgq z?}A9gx*-J@MA#_{5a|K=WU>&yR~CH=BuW3B6|e?e0>(?u!W{Uj0No9eUJ?)hr;a<$ ae+B>*&cvo$(U6(|0000<MNUMnLSTXxIon?V literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PF.png b/wp-content/plugins/wp-statistics/assets/images/flags/PF.png new file mode 100644 index 0000000000000000000000000000000000000000..117f69e30cead1ff6e4bd8776066dc638acb127b GIT binary patch literal 508 zcmV<Y0R#StP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzo=HSORCwB?Q@<}mQ562}eXp%*nqXjH zB4K0^3zN-a?W#6=2Y-ZrK%!Pm42{V|B$z}Dq?-5{8VO!s(`w&)*LUB2O=}|UOU}C| z=bZ05zwQ-EDfIG5^!V8&A@&1cxy$Saq6nyo<0GKy0YXszK<SQk+c6u(g+<t*@#7s> z&9I)hA<-<IWG#?Z^yxK${Elg%HaZ48-2*-y;@eC`Sb&vamV_Z_((W|~_5t<_9(Z{$ z11y}LsybKk=1~F)^;e4XxT)Oil&Y;yhPt+CUl`*nRij=wJ6BS=E`;yFb{*IbrBX$L z6{h!cXqE%iuN2a|xzMJ4CdPsEeaNrRXa+(;N-OM9NQpSD8|QNvx+x>6>Ud7gVU6wv zeJUJCG$TEOU|<le10tO=T+!vY&TL`ZJq&FtnI$HmFO~eY42>0c)W@^)z~x1oSyJLL zie;i3oLYlD1ggD_=~<NWC#*mR#7RFg91%n*I@j3WT4R)2|A^68GXqqCfxZ^<A2%t& y=;&L(Atc?+RVGzMr<<WzUA`q>^!l8C1Q-AvRJfWxuwS|W0000<MNUMnLSTYyp5FEV literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PG.png b/wp-content/plugins/wp-statistics/assets/images/flags/PG.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8143f619454a57128af77e8e564bbef3d5dc17 GIT binary patch literal 629 zcmV-*0*d{KP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-`$<GWRCwB?lRs+|Q5400Z|3dn4C^M5l?03dQLBKuSXij7Dbi_a;=d1(U?FLO z!6JTyRDxYTfV-9=Si~Y0Hp}{lh-BH#?6NyMZ)V=SXJOn#Na2zThkLoj;oN&T!dlB| zN&p^k=CF@bDKL=0<cr0{))U_+a2(W0iYz#RB_9ZcJX)XM-kz2~>FsbxaekhALBNdT zkQ^g1i9k*pf?JySeSy5^ARI%oy9-c~fNQkoOBk}#Xz<AQxg7*3V==D9zmel#&naHh zc=Hf$2IOG{n`Hp51W-y5h9R9W<Rx(5^LP-HDV(zuE+)uJ8Y?aNo{OAOWX%FPNdRyF z;y9+=Zqw~{dAz*L*8V=vfBm5Iwa0KhrL&Qcd>C-B854i(W1<5xrA97Xu2!p!R;xv? z*BjmL`aZL1%B!<e+{}v%e1n*<6fPKaYl>bbx%z46iUVMb;n~Ux#+VV-R#*9^H4obz zUh6)k4BVkb?^{fiqf~sPpi-$cthGc@1i;;e1?sihKTa+M0c#Tz6cHqW&t8^sr`i0Y zAW0I8F$f_LLh!C$AI*R9Mk$uMUA~)~GN6t>F-=p9F?gQG#`-#*=bebpz)}=ZQ;LGt zBXx69N-Ko;Z%D_nPfH~W%n4u;m<7sXW}y%K6o7jeBzH`L97x4!<NSL79t!oc!%NTx P00000NkvXXu0mjfkhKl1 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PH.png b/wp-content/plugins/wp-statistics/assets/images/flags/PH.png new file mode 100644 index 0000000000000000000000000000000000000000..2225029aaf607b3bf5cca6a99cf8fbe362e96cf2 GIT binary patch literal 516 zcmV+f0{i`mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-ib+I4RCwB?lRryaVHC!H?|t7~NRwb7kfDx7uqbqGKZ6e4Iu#rWE`baNLJJNd zU!abDfevjcg<5Df?P8aTIJmfokU<xN&7XVU_uhLPZh|4zV(?kcbRHgl=Q&D5c#IU_ z1NqUMMHc88U{2)pa`#7%?GJls?LF9`-L91lkb??qt57QC`SSS)t=0XJ6^Ov$;W<Fg z02%~PynIoiSS;}V-B&Uh%@~iG@+*~cIF|ru0}#g%T6KV!XG;sTTCb>9KjQo5&J>>K zVXXzg0NCLPS+ff=1pf^yD`j@Jp7Xl#2T}hr2}RQ#M7IWE7?AZYKn5eYF}B~Qef8;X z4pD*YjAC(Y5V)sM+yD~L3%KJm%C+YG_@kJ>P9z8d2YNX@?!j-mZ|g{}kIH3JzSD9M zp$jJsQXs+4eY(}nbUFV75lO2yElC)L!6bu_;kWNx*PGxRULpVg1|<pM#1(85o$zbD z0ZO5afx*M;tbjRS9w^NC3x9!*N}Gs3nzJYdta|J_-wXhE$dnXO=fK(k0000<MNUMn GLSTXpt=0qp literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PK.png b/wp-content/plugins/wp-statistics/assets/images/flags/PK.png new file mode 100644 index 0000000000000000000000000000000000000000..e9192a6bb6d085619cd371f77c2bf70089f93469 GIT binary patch literal 600 zcmV-e0;m0nP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ--bqA3RCwB?lRaw`Q51%sJ72r&x`|O7ixq;Pl^{_&6+*0p<R4gwg1<npvC&4b z5fv*zgMyWam4!yM&~}2Yf{76~S@wgOb=RGlyEFG%?Cdftf(dzxdpHN~!^`14LTk-# zBmf84o7J620zC_u)>=14)AQFZfL0)k{}MjjedAg{IX|2`dIGctA%;~cFwLB0fkxwf zSp_ItfSCuZZ+!=y0s>oD%vO)Ewz-Z{DWnPn9GG#D$pFAK0Maxa1N>fq-|gTBEtbwL zVp}%tcAd`eF7u}sm_N0EA2f-j1i%20Su+L%P0E#hoIQSqPoF>H_kZE{0{T%%KMHAe znuKu(fCUi8F{M%ofN!-m2qWBsRot0F)Z1HZwrgNI+<A5zC17f5KlbqJ&_NVMV+Tqr zlu&Fmeo`zHxwLo%)k{%f$Uw#bq*@V0IR_JfZ0kQZzH;xyeQsR5&a8Wwrz_8?lq&2g z6nX2tLx%F-05N)<0yiJuqSmT&b?GuEkIk{N`kn_bA2Ns{;y9Vy!AOo>0F{Daf>tcQ zdc^YUCkV?#hcP%7m=;p@#{iim37+Qx&~0>v;W2Va)R{vefOsO#0+<G>KxK!w&;@ED mOQQ34BDbLwkYcyz{AU15r`Ff1)t!|90000<MNUMnLSTZMSoJgj literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PL.png b/wp-content/plugins/wp-statistics/assets/images/flags/PL.png new file mode 100644 index 0000000000000000000000000000000000000000..079871b72038c9a20ffd67a079342f2751d08ed1 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyG4|%#chE&{IGTEB% zkbwYe`rLj8hZh+Z9HQUt8BA4qMOl^{d40p1S!wCyoX1(m&aX~4G@jPOV7lS&ykNJ+ za?Uqr-`Kq_o7l{3#vQkz&|#xPfJKAE<CIUwEf_-Q>ijTNJ@B<;nWWOn+|3EsO}3<d z6#o)?oR8fwl~af3OX8FR<+eeg5vPPt2z*fN5n6G)OUUJukjmn4d#?puYp(@_S2B73 zxF}>gtFY4U*%t@a8_ezr=7M#M=0D9g&bxSmV};J&bMqM)`Wr)LNF{Ey1p0=-)78&q Iol`;+0H~aAu>b%7 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PR.png b/wp-content/plugins/wp-statistics/assets/images/flags/PR.png new file mode 100644 index 0000000000000000000000000000000000000000..2469b57dc13f62b0259d723a128433fe67edd23b GIT binary patch literal 498 zcmV<O0S*3%P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-cu7P-RCwB?lg}%IaU92A&z^4!v(3+yxGc3CDDp4(QF1{$$jN!;;Ns#RQ1UNG z2~is5pj=#WKv?ZUiN&@ytUcd-pFMjV$O^G1@5|@(d3`>;-=B|W+cy7^2DpLxkLpAU z$P2)~G`jFK?Y?t7y?JLfAOO#v5x~<OV#@tcb+dVX3E&Zcj;T1!2(Dx!^NW*ow0WyE zU`=-cD5ZGLzHpr^5Q%PbeD?PymSq7T0HiD;gwDiRFGoiSW@pw}HckjNDEJ{Im)}Pr zm8t-8xjf-;KjY(l_<VIlq8kjEb;QISJx%gkaAlttscRL0VHg}7ToaEcNhF>y%@Vt= zI6VzTD1V)AL#c#Rr3%0<TkP*&kWOc5Z40m+i!wM6`qhKN?JWd@?|`C`DBDk{rJk+B zIl4NV{xnfaS=r#VXfa%yVWs8_hKG2pBEkFT>?c5thzFwP4d*$>$EY;G53~bbht03R oy$0wXkEA;USb)<0`_69z0KG_y6g#QgHvj+t07*qoM6N<$g6ikbMgRZ+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PS.png b/wp-content/plugins/wp-statistics/assets/images/flags/PS.png new file mode 100644 index 0000000000000000000000000000000000000000..bad06916dff2873ad6ef2080548f43f77688782c GIT binary patch literal 393 zcmV;40e1e0P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0003{Nkl<Zc-muR zpb#)pY(TP^S>-bU0n@)^Xny_r^=ZaA-rn1-3=BM0egDqz;om=!47hml;ts~yE-u^s zwX{5b{Qu7YGUUpiKMV~2A)fn><j4P5{CxA~%^i%htgN>CDJpuv6z%!(gJCrg|M~x) zpbMTnd9s6XhQ9uGA8~OHWC=DcEe4^=N(N>zF}wz>UcGt;<1{6u?cTh+9_W%x{QL|e zeSHiZ#>V&!m?|Z;-HVkK#en}n=X08wGl<Td!N4pegwudkt5)q`oFXp1-J6949tI%t zT%bJzTW&Vc8TgaQ(e3+pFisK?+3o{1-~%TsLtT&>!)Zl+21deR$nfXF^Bs&6g@w2K zGBbNzl;dZp4pw7$%fm)kC(M9z&vr0Q02=VcLCIr=qa4ujq^0cdXCCihR1)V4dm_%Q nN{o}y!T-PiZd0C_C^Y~8MI&@zy(QpF00000NkvXXu0mjf?8dh3 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PT.png b/wp-content/plugins/wp-statistics/assets/images/flags/PT.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8ca65bd4a7fa0b1974af71ea637285809aa1f5 GIT binary patch literal 591 zcmV-V0<iswP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-)k#D_RCwB?lTB+=K@^6cxpR|ia+^j;n<_y>MFg=RxO5|kZp4Lu$e&?xp`dPD zx^f||bR)QkAS#F-RjW}`Z<8j?ojac{8chmj5qe-47&s5_ne)CPgus4E0A*lde9u!F z7{);T+QS>a{=PaPkRfpE_UoCQ!Fl4wAy)3+X~sb6yyx8V2>`qhL?Mu@&K4cK!+!n> zkj8*C&N9$BT{XnZKr7ne_rVPoUwVXt5Q{yCs9pza0AvhMSWQ;!plzRvZj)Mfgzxsq zP9-e9^~elDv}Xuxp#g{i@<Q=rG~)8|JFdUkCLdhIAC>6MCk&5usXa{yC1AX;;2qle z2|%fWp8rl(`apX<L0-CotyO5P-6cQrg=8b$Z5~e|(kklk%9H{%Ldz;0Qz2jIbNa<2 zY&j)9zeTbRi~=MRzXW4Zc|HZm3!-Y7=UYuqu5OdH?{T5s!=24Z9+yBk@Kbv*hC&s) z9}1ugg}{-S3O9eA;lc4HMLD9emJoGHP!b>}C-{I;YN9}E!vO--IKqgSkGjdyvro9P z{I5TQbri<@1L$BK{r4RJY$S+%;8njj+lkg8ml^<C0Ck`R)aJ~>0Qe>VIS!JX6W{<X d_8aFv0{~;I)_obr3OfJ*002ovPDHLkV1n$7^m+gQ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PW.png b/wp-content/plugins/wp-statistics/assets/images/flags/PW.png new file mode 100644 index 0000000000000000000000000000000000000000..f4425f78e49547cb2febdf47edf7224df4531bba GIT binary patch literal 610 zcmV-o0-gPdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-=t)FDRCwB?lQC;kQ5462_uZGgq)|hRrd1~ejT9UdadZ-kf(1thC%-`lSHFSa z;OOY$)KRUQTZHN;wNynDp_-(c=Dm0CefJ)RRujPvr3VgYIENqq!#RH?A{-<XPzDa| z*8PM9wqu~a@Z{Cz|0YBfO6{%i#l35-7^oE?aOq_8Z^H+TpwP<WMWYaO<aZ=15P{WR zAD|Wk+IeAQ9R1Ybe2Mna9*gHznX3)?w%uTP?J^&J%u><?0L_^M=LJB=0M=QCxn*-K zTsXGDgR4)eR#FHNXO0Ih&b?)6<u30BCn)QJC{kEw0f+!HW9g4ATd8BQy+SqVf=R)R z!KBPoy4-HRWSABVGsj?T$;=KQ2FUW9^&(<qEUoH0a33K|9mQE@Yl^SGZXyDWYE10% zDFs<h5dx_#^J%LAaRG!$#swRLCYdcE1e_PLYzkoV94~<&fybTe<XHkq3Oa`*Wt>)c z)L9@9kRTKiFeaa@U~)s%L$&01{pCEjp515Z%5zTFzq3AU@vw7)PWLR8l0~5q4<<7c zfVGAMp{ygyy5LQ3o;%C)Bqf8f2};3{iv1&)fMD$eU_<cy{Ji$>7Xq0mP=W%oJ>FRX wb>I|mc%NPv0bK>?T_fpz0z6>VLGAo|0A+CR=KCl;`Tzg`07*qoM6N<$f*Irf%>V!Z literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/PY.png b/wp-content/plugins/wp-statistics/assets/images/flags/PY.png new file mode 100644 index 0000000000000000000000000000000000000000..21607d3abf5ec493d8563cf44d1ae493bcf43f04 GIT binary patch literal 442 zcmV;r0Y(0aP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-KuJVFRCwB?lfOy>K@i4&m%U3k5)BctP!J>_!6InoI|x?xK8CMhBiQ-^R{jBN zu@?(FiH#N(G2!&?cJFS-!b{|gU@rM!S!TbTnQv!y91&q2I6xI><a-$y;KK!)ulomY zvt(brIA3vrI$1_-yIVrEpzj|5>Mo!pNw7gc)_*VF9o5Hi3dd@xg(L}pasg7UQG+3N zFq}?Ar9!Ip*ldSkD8G@KSbBFi@^pJCCYt2KFchHe0%)!AeZP<->OFFHbxo!`juw~k zy1NBl=L%eaIF2V&Hr6*e+}a^aGa4J634Y|`0(ACHP_-7HQS$ejk53C`-S^1!cfl(F zI*zbbaPlVox2zR(9Q`OT#!$6F)l*Y7!CJu>GY()xEJ6Qymd|J$pb4x23niTc;Kcz{ kK1ix$fDACsyyN^e0Jtlnru|qww*UYD07*qoM6N<$f_UPqg#Z8m literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/QA.png b/wp-content/plugins/wp-statistics/assets/images/flags/QA.png new file mode 100644 index 0000000000000000000000000000000000000000..6442606d8e7d8367e46026acd4ce7badc246fc46 GIT binary patch literal 458 zcmV;*0X6=KP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-P)S5VRCwB?lTA(nK@f$%nrS9M#L;MsiSYy;*^NuD;1OJ4bYWbp5kV0IM7o>) zalt5zqa?(aRC-aJ_g?);jFJC9fDG6y-gRJscLn4z#^>eC_~M%G$r<ME5lPcO8II3S z_Z85n*h+-#=zuhDRtW@%FuA+|Xegj6kqE9o!alU;1R|xh+TAA3W&o)I@ZOUyDY@PN z)9&Ek#)$f*gd|~R?VJq2T1&lNU*tFHBqG@1@JplG!Rd5CV2mjd*!w5OSGV}?D^jaE zaCsA>=4B-STI+I+dpX(m7BP5Yh?NL4&vdF64t^52mjR~NhY*P&l;tBt@6gWt?I7LV zA=}A81SuvbQbYn00@~<u50>EvL)_#8$rMtnHZg{PU7CV*&e3YMzCVm!yL5s^kNTk0 z%5@eX2M&Senzt|p9;MjC?AMK44G&oP?>T=C0O*mR^ph@<&Hw-a07*qoM6N<$g4$WZ Av;Y7A literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/RE.png b/wp-content/plugins/wp-statistics/assets/images/flags/RE.png new file mode 100644 index 0000000000000000000000000000000000000000..129cbb5cab830fc10e928b653ba242bc5db64ab7 GIT binary patch literal 488 zcmV<E0T=#>P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFGm;eBCjsO7l0ssJqSpWcWTmS&)2mk;v-v9s@mtD)k zYXATNZb?KzRCwB?lg%yzQ5c4wGo7}k)2fmZ(g=<CS=d;+0c$s4<r3_y-A<P_7OY5A zCL$zSAyI_VpP`-3>C7CPYAZs}clqT!PfotPpHNCMNHhkF076PB?_aPGx&}lB_&`Jh zLce`2y@2O8**^+t0KV^kgS3I(l21!Dj;|~9Gdh5j62mY)v#Nmqx{cH~*u7X`@4Q5M zc!;gF1wNRrz;)fO!1V&`md4RVf!tw;!@Emv9$rCLpr9c=cGj11UAHH=FIPDz+Uysr z6rbL>tu%PDHB#m#5fd^~4WeP4y3;0iQX(1ESj~icf|_lUHpiH0p0PA;lAIsG&;?_O z7{#jsv)MVEW|MXhCT199vlBc%KJ)~mW|YOn3|=`yy;dbE9E8$H#8RXZag=m$8#X9~ zIUHkpGEKAo(p^{FvMlvef*|-Zvn)#iaUH<(Jo5SczpHEjDPZW2YzwH0P7@=4X=Eop eAjP2P{5}A#7s7%2N2o{u0000<MNUMnLSTaSbi|hc literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/RO.png b/wp-content/plugins/wp-statistics/assets/images/flags/RO.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a4b87c8f77adef575816d4dc72bc66a94b56ee GIT binary patch literal 461 zcmV;;0W$uHP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Q%OWYRCwB?lRZuYF%U+dvzs7DNCX8!a0CPmC*T@X+=(MVOGVEO5QrK<QUDSH zvYSL&|Ll4wh+;d?L|7VGpKL#W9?vKd;XgwG9iTU#R~Z(V<-p+N?DBni_2&E{(Ql`{ zUxdButDPL^HjU@_U^iXOjuN?cxE`4n%>4sEHwQB78YVNtXHkU{ehA3okQ;RadwUCU z4j{_`jCG7Bn(;&jfE0-XU(`XgTGYk>kONee;iIT1r-sF^NU^XB;L9c$0$inIK*i&z zp`4oN%BRGEdmaP>{XSKm1%TEX$#Z;C6FyC96STM*?Q8@vhKvooj{p(_1bon{c9@?e z(gHBL!h1o@U#%A36@>~RUeGp5qP3Qe7dq`Ms?nvw?6iX)@faJPU`0IBuVJ$P_O49y zYw7<iX9Wy^ePDCNUYG(e3drV-l&uJ80IUAn&ffz7B;le3Z0r_N00000NkvXXu0mjf Duy?XO literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/RS.png b/wp-content/plugins/wp-statistics/assets/images/flags/RS.png new file mode 100644 index 0000000000000000000000000000000000000000..a359144961dcef96a7b291d674173e567f3bae2d GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`3dtTpz6=aistgPb%?u1b{{!il z3=E|P3=FRl7#OT(FffScPl`Y422{&g;1OBOz`!j8!i<;h*8KqrN|v}rlmzFem6RtI zr7{F0X6BXX`MHKDlo{)p>KXbyxA@7xz^Lu%;uvD#pS*xAfjLQ0VVZ(q^OuG%Mjdj- zn}7QAvAtxKT+rZKw0pa3n}ijZ*P~N$;^@!+_ck^Bw|@QS|NE63zxM0j;C2-@VtaYi zfT894G^xM#m$HA<`_KOOUpZ_=(Fut>hJNRp^%C=hrv3b%<9FzPaWC(Gel_cV`=bJx zr#l~y;I-IRcl$p(JO97>s+X7kbNA~0pC7ZkYZ0epvT4HYFO~o0=h*)KfAgU8|MTB{ z|J1*}5h&t&LSi+e^seRq_is)8{QvakwEz1Vj(jhF<8ZO1=ONo4cc%VpYyZ@1-2eFh zt@QQA#0TI0=Qyi{un8xaGO+yn`|t1nm)qw4ueYh@6Ftb6z;?pvrwa3gxCxAZ9M-TN yd8U#yL2g1ETbjZ%mLxeLLl1rrebt6WMux2cizdfzJJbaXTLw>8KbLh*2~7Z7zrEG~ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/RU.png b/wp-content/plugins/wp-statistics/assets/images/flags/RU.png new file mode 100644 index 0000000000000000000000000000000000000000..30459ae20c50b2248ffce643d9961e601cd25905 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGpLn`BhE&{IGTG9P z*-^kX{_L|<hvt?iEQMS_=Z@%Fa2tj{;5y>M5xJ@5$O(gY>z3{I$jMP`iqu;9V*jnW z&Y6a)EGrr|*UAZT)rdJHr_Bz$>KY~);6G!*xrQ1hh4TzaJ<U_ueHjaizn^%uY2n|X zH|N{_@4o07yRkCAzhQ3qo;9u8xc9CyKRxNt9nJ;C2D2vz+55NTEB_EaaQL$A^;FMS zWqTQJ79GsyxFg5lXFE+?;SzVk$%0q?vK65@`x;igVc*aa{+Bhw<nhkG5|5ch7cj1C s_}utN_k&usdYH0|B;(YT@BbJx94L?2l^;8G3edj{p00i_>zopr093e!hX4Qo literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/RW.png b/wp-content/plugins/wp-statistics/assets/images/flags/RW.png new file mode 100644 index 0000000000000000000000000000000000000000..f593964c3a677705b45cde1b7655e0b22efb6c0b GIT binary patch literal 437 zcmV;m0ZRUfP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-J4r-ARCwB?lTS+mQ5400&l#<pM6HnM4-ttiYSFGm^-+SpTG2;{piL{+wP_U= z2$d9~<DYQmy?OIm%%rvmM?G-4Jh<nackks2V+`{^02yF8&eK2weH+MMTt9pzWoeVb z7(q%HuFj82HsI*caIl`6NZxWjIb3_@safIfB@5u#fTeUu-w$vH>JPz;^%)w$S*gnQ z;w!2!;6@(<ST=xE0bMVO|6mZ@*DEO1=drbmR8g%B(CpcyQZ^l5jBJ0c$KH+ZKGnA} zt63QM?P1AYyS-B@6co@&ILbV(o2FQ-mu&#g^J1$op+JD==}`-jfHk|o>E#K|#tObx ziRcSfn(vPma2p9osaV30j+QbJAqFYc@CVWa8n@P%<rJg<^1vpLo08lE-bFmUOq{2I f2BetxoPP!YCTM{mnk_iD00000NkvXXu0mjfGaIuD literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SA.png b/wp-content/plugins/wp-statistics/assets/images/flags/SA.png new file mode 100644 index 0000000000000000000000000000000000000000..1b49e613d980b38433676b16c305a95ceab7ff07 GIT binary patch literal 560 zcmV-00?+-4P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-wn;=mRCwB?lTA(=K@^0)o}Pcx7~9A!Y@|fW5;k0dGvx$14r>m;(g?9Z3Kp9P zWCc8C%$S+!neNWU3Pw>DhI)&)di6@GD&d^tGY~)s?5y`T&_Lk>-P7-<zd!Q*{Kxsw z2Rf~3Ir(;i!(oj@2!Rj+=N!&Cgb)BY>yT1{fXnG6K*s}Q(>CO*oNSqK&^y5MJc_cQ z6L;wE_DSOuAq2zTkk+<57tb_p10X#Btu@&)BMKspz8*2&AEQ!5U-cR64(O>K12y1q zc!;%@MX^9@4S)|&Rwawof~?3G-HzDX*&_~Ok|<$St;k<<bfbBgKhT<%r{xo6Rc;WJ zCDZ#Ufeg6$b;Eo)N2Q9ZyDR3)IYn8Z5=9)w%oa0>vLGUQuYeF9UmiKTI714FTaPb% zJkP@zgRurFCEZS!Qg0}z>l!H~7K=(1$6t=|egCfuaTqh+A2Yd~aD8`8YYe7tHwdbV zBuSA%Qq>icpOb&$rV@p<mOutLXQ`|DjX>*$$XUYR|6#0j1wb6eSZCk4psls!v-~4r y)B@-NBS39=`~utyK(31<w<Iut7N4#2p8)_SgVYQ?;$^o00000<MNUMnLSTY@zvip} literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SB.png b/wp-content/plugins/wp-statistics/assets/images/flags/SB.png new file mode 100644 index 0000000000000000000000000000000000000000..833d9c9827d6272a8b194bb8154f40d679c2f6bd GIT binary patch literal 649 zcmV;40(Sk0P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;4@pEpRCwB?lTAoeVHAd+`!m<kDHTGCX3?S_To_0Y*dj2)AgGj#qD{6ci2hs# zQBc#OAgIK05tW54OmLUBkp2r@gc(6l3l|EFI5^Io%iQm~_kLfC#!)CJ@xbA5IER;W zUf$QxTC<Wc00&rAtjh@r<ZYm;<yilWY5w~X6`6#A&7tNA+V+i;Tt8TA1BocoJiOk< ztw$eA%jb{p;CAnaQXhsEF-y_D>nq7EA(uxt0wip}l0ihO`xTjNfxWxy7#jIT=d~dg z=m|xPbu~Fo9(_lqT5@x|fyvx7fMo*+88DagnMp?!M954!!YL0?8baTpaqD-^b-ZRM zTg|i44Xmy3K=}Ze00m!gwQ~=7>G9y{C-TDM&ZYg#&MMlQ-*WcE05^VA(=$<nh;rnl zi!Xiy*Z{uo)6(&nc~_KvZaUb_y^GIDZlC19i)~D~A&J-&8DP$-z!G{1K*0ms1{A_A zqi$20-YflljvKTOHxep?3Ohh8aH2w_FBV@AQW6B3!hD?8rY{V3-RFr{$(ff8XsvO~ zh)8QxF$1OW3u5sCFCXB<EmEh3X+1K=>9Km=Pt{WC1Q>tOgVqYMl!LhC(wFKZQU8;} zBRffZan_WF3*$cpg+|Jt1R%RE4DiOax!bcDtuvIFitK;N*#N45B(Qp!UT}eF1F(ul jvX%)D0n%8hoqr7gW|i;g4mWCj00000NkvXXu0mjf3PKpJ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SC.png b/wp-content/plugins/wp-statistics/assets/images/flags/SC.png new file mode 100644 index 0000000000000000000000000000000000000000..7597d86c921e1e9e070b322bc6631eac42f7be0d GIT binary patch literal 714 zcmV;*0yX`KP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000WV@Og>004R= z004l4008;_004mL004C`008P>0026e000+nl3&F}00009a7bBm000XT000XT0n*)m z`~Uy|8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-_B$IQako0xL;GK~y+Tt<Otq z6Hx%g@jD2DAP9osrcmfkw9UgLO%szeHRfeaY@(IeDv07c##m_!?aq~-!B3z?gc>#Y zSn5{X2ue*eN#>Qw)CWkRi{qIFN?ZoL@Ml)%ckhV*adxx)>|meS8+$7bi0mRn{ys#m z1aayHMDhxZr)Qw9WYJnlKv|7JsYW3?J&;FSSU=)G?eH+Rw>*O)HxDs&7b0^DB7GGi zehJ#+9Dxkf=V@qf<7m45XcA};kcS<pcY#407!s%Fcyp2C>l|O^?PsAs%R{eBL4Pv| z#S?@=Kyi7{a=OrPIEZWmLtWq`Z%^HXNDw%24QAyW+SO^8@A6Q65k|l_$_RMfXt)VD zdx0c@<Q)RHVLq8fr&@qXKnungfnbo0LJfG)8YAFyLiUXG0_84{EW&y*gU-tWk!k2* z0wDsS0OJdSd;tMf{)Lvj*#ji*acsY$1gkOw>s5i{B=pE}7KRof5ca{SwV~C2LTPLg z*y;gNUBFtsz!#i{5lL|vhdw?5JsN^pYoJ{-px1vu<ydWQL1R0BlrBTEfyyk5@ia@o zh{n)a`-IN78q9Sa?fQ2Dzo9iaEV?1eNB;&kDi=ALWGPr*Kfqf1NZ>Pp7Nq4dNON9D zC64Ujf(K&Bw*w4F{DpQj3+weGY<zhSX(0n?KF;q1q@`m7{E!w2FtN<x13$#WfDH`T wz&>_}`TES>*jurS?O}WS%--1Be>p<@0S<qGu)uN*^8f$<07*qoM6N<$g18?jwg3PC literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SD.png b/wp-content/plugins/wp-statistics/assets/images/flags/SD.png new file mode 100644 index 0000000000000000000000000000000000000000..4a54678b35e69fc446debe5a939a1c8f6fa677f2 GIT binary patch literal 498 zcmV<O0S*3%P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-cu7P-RCwB?lf6nLK@^3*n(i6Y9@jrGP|#o^GcnpHFcH=VF!BXf5Cshl)i*FT z)j&ir7Bn#M50^<4bwN=PwCAtu)=XDzu!A!OEjAvwRCGS>Deh6uIldzW<bZthO(O$T ze4uA-eg1js{DHo(o{BKEyFKUw!BL@?%FhXA53c!9jlZz8L(VP$0w3_|af7m{u`-@# zX}3skxq%l64Q!jKC2ydgxD*0-831V*La7o;jpfNvUTl@RXq=el$cM37V>2EAK7bbC zRVtKB4Tt0Rbb*au3lusB5`#oh1YKQZ03sc6^Y+M1_{eSe#BKP*<mMv9>T@DML|Pj} zT9e6kVB2nDZ)TOTU@#G&wQh?LX|h2U>;8XQY3qcExsgP35Cp_=+yaOQzRROfl(tXM zhgT@25&_oQj}eS9bmGuE7sSVR<Z_=MrL`7g%saryp9k*uFVUxe(^kPKpa&QRx>K6V oz`X*zW|6#<fEY09yLJ9I0KDC}a1hk5l>h($07*qoM6N<$g3l4jApigX literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SE.png b/wp-content/plugins/wp-statistics/assets/images/flags/SE.png new file mode 100644 index 0000000000000000000000000000000000000000..22f6e7eab4ba7eef44fb847edbc950ad7163b995 GIT binary patch literal 472 zcmV;}0Vn>6P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-UP(kjRCwB?lgmoOP!NW{lN=g)BTAtgH=?dv@EHVs69w0Wu3Wh73-nPGd<7M^ z;%y^hpxDw&l9M#YMGi??E3|YrbC}D2X8xHGT5Glu0hEB6(VK_@CK7N@ukO5}=cd!k z-e<kezX-S2Crt@d<0Rquppkp*R`zV|?=F@sKx=q-8vs-#U`MfL>_-g7VH%Zum~hSe z_XHspe{R$rqF4ji5<n@%&r~s-Dw8+Nf=4s;r*z8_D5WwI4`*KcrCe@;9szoZ;}ug9 zJNUjwrTKIu0m8ti?7SL)b!O)h1`+@X5ClHB0LhvYj0l1#2WWS@*tI6pFh&5w{<$e1 z+>1U-98z&4^N9ysVx=vF=mac;Nwka>nN1Y5PSTvL0u_ZgT2qpi=`ml*%vO*@YgCj2 zsAN88^!1zt+&|`I7VWFnS&-7V2h=ybg)#6c0NWgry&=FHP-5G2{v7~w&xF<W7dY$y O0000<MNUMnLSTYQ9J<W_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SG.png b/wp-content/plugins/wp-statistics/assets/images/flags/SG.png new file mode 100644 index 0000000000000000000000000000000000000000..aceea6dff370ab895a9b01f779b9fb0c641efa7b GIT binary patch literal 409 zcmV;K0cQS*P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-A4x<(RCwCVlfg;?Q51&1bMH;5DP+J})KU<|r*P}mm-8iji&laK;;I&fQj0(@ zV};J0J9ArPAtb@%rf+jNi~r|vetroda0miafYa?Pg9F|SP<!t8U#guB5=FS_l#u5X z>oua(uMU^P;e`RBO1sTTuScFFh%u-*rdTd1R;xWX3xq&AnE*rv(0GropOXv*R9Y?8 z*Vj~=O|sbxLiiNzpyQa3WdPa$WX|CqA2{xIaW}V^dYx=OCtoZOV}4$t6h2J>FaYnP z5l2x3B4qb><ko`Hh(NI?rI4n$B>CPO*4j`OYi$4;3ShI@l+OQ4^G^)Y?MKUy?xf(n z_l(Emzf{2qPy?=jvy$Rh;7I_zEs`#2kONK*t@FnK6R5A#+vX-S00000NkvXXu0mjf DhLWRV literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SI.png b/wp-content/plugins/wp-statistics/assets/images/flags/SI.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc05e1c55d6560569363294ebcedb4c80117928 GIT binary patch literal 468 zcmV;_0W1EAP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-T1iAfRCwB?le<a-K@^6+Np_<##*HKfL4*`S#L`x48}R{b1UuhBh@B5$VIkOy zg`JI9SXtSLB7%izAS7N^W3t)V>>iukAR2P{n_&k2Z|0oyj}j3^kpd#XWMdsf8u&2) zOGJu8-L6#H0Aiho`GQTk;$X#N%%<X~km|*V89=zXtG?On?O))9E0}(agWMVusYEY8 zI0WGPJ^&H~WHU*2w%5sKl1LEz>uh=qfaQ&2(lZvN*H3a=i!3cn^KcC-o2N*mySIs{ zaf&6o4X8Oao}Pt|Z_V!E4d<7ST-|^1&KO~I7ohBTn5y0eRBH|xCJLe8nVj7@Km>*G zR}r2c;MJWr;G}rOylE0RPG92-RinIk9;>YqTo*A6P^vG0h){Fg_6uCCk!Tc5vp+x( z;A-6hXkUa|+a4y2S^*X?2gC<7mw~)$Br(#N$Ufx*T8;Xhe+K|b3xjp3i2H*80000< KMNUMnLSTY=2D+L6 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SK.png b/wp-content/plugins/wp-statistics/assets/images/flags/SK.png new file mode 100644 index 0000000000000000000000000000000000000000..6c717be54948d032b645bdc86b3af5a6974c73bf GIT binary patch literal 495 zcmV<L0TBL)P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-bxA})RCwB?lRr-zK@dmZ+}@pIfdL6|1&9W_h%iMy02O_jROyo{Uno)vy3imx z8hR)qrSK^Q&Dm09M?zL25o2_Je7lpvmani=U{ABn?%Vy%ycJbtof04fHfQTgssP45 zu&t`Ym2MY_JYZvu1REY;)&LkEz*>tjQ_k;?AMlUcU<@{n**!mBdeT}8fDdqT_Jt_g zVLz(zxy-4x+aQ9Czw`dn75B*qOf{{Ytyc^Oe=0zl<|Gee%1K5z>Z0H7!1D-ycIh`p zbcfH>jGF_V(g{w=3Xr848f@}6Q!eal?!FEv#c;OQ#5r*4k!sZ{-x(w;=N>d~kB*YV zAi$+5!`2(#>N^TG+<2EnNoOIySFh8bOgQcJTGJQgIqLf$Le!19ZcR7tB{7IB092JM z&#MS|QK0oY1OX`Q_d19wg&!^lI7c=f&jE#1<;UaWl3}I)6+oQ>C<NFB4uHlBC3*sW l$;`xX1tTp`$hzP8-vCysm6UY7s>c8T002ovPDHLkV1j#x$MFCF literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SL.png b/wp-content/plugins/wp-statistics/assets/images/flags/SL.png new file mode 100644 index 0000000000000000000000000000000000000000..3daf48282a83fb0a11dcc0e29ed7b9cbf1880e08 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyG|9iSPhE&{IGTG4Y zuz^IYy>*z@#V|o{akE`vuTDkoU~*4*rqwg2nc2W_!$PmvfQ+o8WpCy$^mOnk{B84R z+tTm<mZ$&sa@oPcrP1gbU;Lo)7{k@eumAp=^RB=Ayf*Wh#V&cPecLi0F0NyqA-&*5 z(19{u_W!1yNs)1vmofxMFv!ce$0r~DuEN-RjNN?R^=nZlTepTaY-KArm&$HYVB&Cl z+f63s;|w|SaT;RUed}Hu+ohh}|F>cFOhvQb@$BnLJ(zl#M5IjDJ@os#a+2Sii;et! zGdY%Cocu<8;zv=Q2f;m8c7HFnTO97ddWYe(&nLzoAr2S$gC=SUFs|2=eLkO&p(t(! V!@Rmpz>r{I@O1TaS?83{1OS5nkE8$q literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SM.png b/wp-content/plugins/wp-statistics/assets/images/flags/SM.png new file mode 100644 index 0000000000000000000000000000000000000000..88cca4dde0a8bcc154cd55f653314e6584e08c40 GIT binary patch literal 552 zcmV+@0@wYCP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-u1Q2eRCwB?lTB+AK^(?^GrQUBOO}NQL0hfhTLtk@5A`GT1N1w1>sRSl@aEMQ z3PMgot0(m!7)Y9grZz+hH4WJ$v$NS94<>Dew$S#u49q;w?>{il2xAO4kpLW^G+VDC z4a7DO8DkEwHC>2`1cHkUlTjBn`h6KAumS75ljEZn{oY%^qP(z9R9-sIW=Vi7%l_MK z9v(1`>-=hManOEGqW0MOvBO|IJn_skHh|U|&+`D-KkD)B^BbO84NUY3nQOk+UeoA5 zpc443K77GEa{}1d+(r}v#%jvKy<L9RtGFxAaKo2aq?FPf8nqUmnpMJdi0|5%baV>% zGl+3~2dyR5uTAI&)SWN1yB{H*aN91i-FZx<40ciA6b#8kodQHYrRYe&;JdeYw7kai zyFQE44}_7+#9pJV_Q;a}uV9gzj3hY&P)gxv06F)=Rg7>Lctu8?0x<?rUgnN`Lhhwx zq{vL7&fXx^8UxtYzZW&6e5-4OTmqA0dSh%$AOVn=S!NE<Sw5xLsa>axS^yES2!vM* q4}q?jHPN}Kk(Vd~w7BVa{yPAU;;_*r_(}}`0000<MNUMnLSTY8v+G;{ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SN.png b/wp-content/plugins/wp-statistics/assets/images/flags/SN.png new file mode 100644 index 0000000000000000000000000000000000000000..ebd84c0eb79f4df17a6061c3e31819f1e75ec067 GIT binary patch literal 512 zcmV+b0{{JqP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-hDk(0RCwB?lh2A1K@f+(o<9j8<Aw#Zf`W)gaeaind)~cz_Z<YE$OR!U;57#^ zcvfZ?(Lj*Rj+11jyJxyQWSr^o7Shmk7gT>$zv?O_A{?_6FaVO~JY*SQ69JRUkMCCi z(hvbYyq@>GmsiQ&fzIji?D{MM#<g?2nm+IIgQ8~+&qobFffDrME5JAcLR(klrr@s3 z+YE3ien@+pfZJQ)!&AgsfG`5kl_Aqx{^+e2GxI7Xxcj;V5Cv3P@2>!*E?MiG%y<A< z^XcXh#wjkI{l;ak0|a1;vI7*QCY2?b*|icj`48UBpORNGv*`j!2Q462pHM`h57-gJ zL!7u4kR+P7FTP`4z;slws-qSlwxYDglTc{laf}n`iiqRQ%d~j`xK4tqEP7u=0syT` zq=~NDZ}uz&DAjIpLTS7r8e<tD#9`!R@LyvN;!c7%wCN-mscP=OEqk5#`AgP&|0|Q; zFZ^p~1x$b^z=H#4AqRdcAZ+pt4+PYJQOAz+-vI!jIk=X%kH^da0000<MNUMnLSTYn Cy47p| literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SO.png b/wp-content/plugins/wp-statistics/assets/images/flags/SO.png new file mode 100644 index 0000000000000000000000000000000000000000..b5cd16ed52ae29c31310d2a6bbd1a01535b78935 GIT binary patch literal 514 zcmV+d0{#7oP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-h)G02RCwB?lfO<>K@`S+=iXV=U6-X`jb;-}Y{bHbg3cH48K`^>Y8sz|hDWfq zGKQEy0&1ax5!j#sl7)L`W@qMD+{^w6)h?$wlR4-6=F6P#h^lg*5MTj#T<2NB1J?%V zY;AuzpXc?>jkPBRXvL(wc-p?xkm{UGX%<lBXMX_DGC&?;qHuvhIUIu(7Ml(7EaP(E z$R=3Yj~axS0CEH1hk+X#C~TNgu)f*_;N#xe)O{v`A6C5vz&Xctxj^9pAu6w)FY)H} zGkVJ{0D9dPpAOF1|8X%=;+z{3l%=B|4TTFR@Nd75CV2PuB><nl{^i5&A94{yp!vWM z{RDxvmWQUvttS*nDBpfx5u%a_<Wf~sAtuFIJ3-(qjb<X%o>EoLE(+f7>=A;py3!fd z0Afm5XU7wArA4)JmDHc~{rHLy5&|6jx*XL6P^~Z{1>Sp9!Q|svO`aQO$_c1em|Fs$ zQsDIHa2_*y0XjerXwL{904D<E^&;gn5=6kueb@Q_09MbpIC51S!vFvP07*qoM6N<$ Ef-q9pApigX literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SR.png b/wp-content/plugins/wp-statistics/assets/images/flags/SR.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2a77be4890e2c725671fe0ad3da7a38dbeaaa0 GIT binary patch literal 470 zcmV;{0V)28P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-TuDShRCwB?le<m=K@^6+S$1&=EEo!6Vj=MsI}3YTO{_GOCcc4hV54v08<-e1 z>WkPJ6@!JBkO*?oS(cp{3oZ-Va5>FnX3qTofBthu7-N_w1P}*O-F2J@fTj&(_AZag zldxaxp5$yGskCN2w>XAq!(I6qASr;Q`^LwU8*>Pa9?tD;t>I%^Soo^Vnm4y>1Gw7- z-24KnQW;4@ESrUwQU?qm@Fh;Ag09tIpexC(5Rou6ublr5N<RYdr6gV~qU-g3LVDk3 z_E3TY=G*1#RQ2zybefjuMF7(GNdZPj9yG55k~<PH1I-%?qeWy*81hrCMgT1-5w?v{ z5sUhSw?g8No83ON+qA+k0%+Wx;jgY>7??^0^jIwevB5?P8V`@KvDpDQI6o$n&y6)i zwNkmSAka!tExu1OjDY|$z&zlM`M3eR3Od!r8LD!mP(UE2{m#Dw0HODS3ty1pj{pDw M07*qoM6N<$g6|KyrT_o{ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SS.png b/wp-content/plugins/wp-statistics/assets/images/flags/SS.png new file mode 100644 index 0000000000000000000000000000000000000000..4831146305466988b26adcbfd41c57e1c71fa791 GIT binary patch literal 450 zcmV;z0X_bSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000WV@Og>004R= z004l4008;_004mL004C`008P>0026e000+nl3&F}00009a7bBm000XT000XT0n*)m z`~Uy|7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%heMHvEiZ-v9ssBuPX;R5(v#`2YVu zMHmFwfLI8KB}l{|Js`adq8w`R{~4KBLB^4aMS++>f!}T2e=ftS|BNi$*c9Qz3P8-D z%<sPbKL~T1Gyo0Z!ln=xRt92-0ixckz=mjtulhf&q5uD;=2n6j#eneA+W)?JE&l~P z*8SIUUGRUmiuM27(#m)-+yD`;HUH-<@cBP`zAxAnAnan<@&Bff^#5BzQaCZ(0FVZ+ zoVNe=seND<IJ-~(e^$%l|6Mg*ycop*A<wlyo7ep}&Ry|;%GSC67j2tC5Th6X!aND} z|JmD3|Fd@*5QPy2c&_=+lUn+py~7BrLR=VTfGl@b4#}E97^D|u06!3G0kJuW7^DZJ smw_3GIf0mmL=4iyj5UiAkN-0O0D&%pCn`uAo&W#<07*qoM6N<$g3TSf%K!iX literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ST.png b/wp-content/plugins/wp-statistics/assets/images/flags/ST.png new file mode 100644 index 0000000000000000000000000000000000000000..9279a3738a6aa414bf9ab461782967638e248ae0 GIT binary patch literal 568 zcmV-80>}M{P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-zDYzuRCwB?lg&$1Q5eR5=YEWeGt4L<f`Q`)3PQC|nuWH@RhtM}v<Rx5J9loY zze2$lLPVQz)uu&AMS|!;X`_>lQ{1S5ypA<<?>TqwIW1-!&_Er0H;0G!oR{bQaUNle z;W8zF1dwc;t&{@(IzalxvzgNJL@#cnvADRSH+P@+I6&vUHILrx2p>nga3gcBWdm%M zb^$sazz$7~TkA#qlE=HTE6vNtc!W4Pq`N(Z(lLPT04SxfD@RPf_nAoUGy1rE4!LgP zsE7kN08tp?`aU{5BJ(mPNGLiUNXli{+|XPfx5%U|4$GRY4b6?4nuJvWzyb(@fT&O) zDi)}I|HjX`Uj!dKKCk3?IFn~}B@bqg)rQ{rvWrv_jva(SK+3WZvBs5#%xp-<WJvB1 z9^Dt@rT{d#sk$B>QG_yTLLK@vIQX^Sap89r|B21Drw5Hz6Xz)iN%o612F6Omb%;{Z z9t-BDud*=E4@+k=Y_naeKMsJm^%X=#vUq2R`P*6Cn#R)qKQbr&fgw_=$w0jx@8MOp z4R_l^>Xx#h1ds;$fK-cF_yc$Xup2?LTO1GrN?bP1{{{ebEwEO{f%DP;0000<MNUMn GLSTZq=J5{z literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SV.png b/wp-content/plugins/wp-statistics/assets/images/flags/SV.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb888236b208ac5d5c50baf7745227c4a254a48 GIT binary patch literal 450 zcmV;z0X_bSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-NJ&INRCwB?lRHksKomvKcm`W`5=DFjLXn_IghVQ6VF8Gxum~#H1xsK7h!)X< zL_tBQ5E24`ln=INj6D=_K2Dl^UNgm;d*{A;=Lu^q%aj0Ipq!uclmU7QsGgqRelGI* z&Be*40!nF`aadoUS+WHlUcUiK3Xn;f(TNN{U0t|5ut$g@$y&uDNizVc0JKhM|0cA1 z$xJGwaL^_hDyoNJ*z$e9=upz37lt?pJm1B4R}1|piU@+Bkt@(l5<I=NxPN{mkPgk= zJ&yN}3Vp5n<2nFw98bw?Y;R#bMOR9iJGH6)0HXj7&aP4A4MLp`?8~Qf0JyxmD}V!U zg}>g{h`{I=8T28euqMMBODD4!J*L1Ijb|;ca%M^)vle6Ykigh1rStK!$Y(SHr~);h sGAFnTybD0)izMeHNC6|3UFZJ+0NB)c9)4d0MgRZ+07*qoM6N<$f>BkhY5)KL literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SY.png b/wp-content/plugins/wp-statistics/assets/images/flags/SY.png new file mode 100644 index 0000000000000000000000000000000000000000..0b765ccc8a7b12916ffac6480b7da6bbabac401f GIT binary patch literal 422 zcmV;X0a^ZuP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-EJ;K`RCwB?ld(?2Fcd|PYb#U=sDgn3#w?u>Kf=Vo!rw6PCrAvyzz<YH?34kC z0k$@x1GEi^Y6s`Bv{8+O)U<c8eB^h1{p6=agiWM?2-u#lP2_-Y19XNbr=xXlKe)fy zH$aT{Y#kpp2rbyBXMorMTFR0t%kZCH;n_uhlnSuk+eOL}KpTJ`YtiEg)p)X6h*paq zYwK-N6oo7_vbnsBhcdExz+SVDfE7g{K+*!ROK!bEpR?NwdV_wz&hIV*wp^2>X<9p{ zv#DIYJxDs62JHI%F=S~fKw<#8-7Z>d@;qOu1#ukXy$8T7;<Vds)Sqtur>d&zCl~<d z98nYzMbXLz&bivai3nMit@9b30y@AUu+y+O0|pAv^Fh)L4Lsn~rsMoO09;PZ(12s@ Q*8l(j07*qoM6N<$f~@4MBme*a literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/SZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/SZ.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec4f63cd6a92e2978ba119d5f057d42d92d631f GIT binary patch literal 594 zcmV-Y0<HatP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-*hxe|RCwB?lS^n5VHAbGfBs2hI?*vz+mtD-F~Nnd>`oDsN+qS>TCfWju5~9A z1QCSpTy<NrbR+e#Xpt0OxKOO23X0ZfTS%!6F=^VoI+^*$MPH(V#-7cA%f075I9K?- z&rTqK79hOA&A<W5I$-u+du0Dl_w>!ab{#NW&!;!h_Rk~xKqgxNFmyoPK7Nb9-ovQ1 z;xFm`Pi5QCf)N@AW{HB-0jk%l?1~lfz88@Qd>kI@Cb{lIT)sGn_k5btR2roe0u8xO zP@k&;ur5$*5Xct@m<1|PpVWe2#yW=D)5Xb<py$$g<k2W<ViXxWLEwu+@%_7P0aulo z@7A!b5U-zQ7|Vs})icb$xXZXqa$#tQo->1l>a*Cd9`Z(S$7<8o*8%WK6($yrF!DCZ zsTqTFL5F;;Mu*i&|G)s6(Mt8@G?n4|d`K;Gqm<-RKD2e6_*3&>Hlnw(Qdh*>RlcH_ z3Yd)VZ}8yGJz7Rn6ecHemu(aVOOZ~f+4Pm>5(0=n8L_g7E(70N!~gB(Y{fQN$ROEV zh10`}2_4{U`U>HWcvB`SfBOtvMF$+ETvnDo{?P${v$Ft9zyfwR>Eu;lQ2=t|kz|ts g9^i<bzVnX(0RIE2=uzldF8}}l07*qoM6N<$f)wWm`Tzg` literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TC.png b/wp-content/plugins/wp-statistics/assets/images/flags/TC.png new file mode 100644 index 0000000000000000000000000000000000000000..0d9791e24ec7d23854c28a878188bf65bad5f121 GIT binary patch literal 553 zcmV+^0@nSBP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-uSrBfRCwB?lgn-sK@dexPq*#FkBq^R1qAUBph)Z@WyOyFVF_OWOTK^~;R_I3 zq5u)L0#+<De$RAIcQp%J*gUeZayPZQM|D+oRg97ANC8!#xt_bo0doVS&tJc|e0ery zB!Nz%d2^IfRhlw*5FsYXe+lnjz3m#H5hQT%_yLtzV_#WL?%$%lSH}iVRU1b0F~kT; zp_C%V$cJyI01X3Z=S#BbPm0NyOoTzlFvx_esqpm9L(YdkAUM#gl$~aZ^Cf^b0M<G3 zsiRm-iC*XpzjL#7gJ<`i@UeeJww!?kNGt$Jl3<+!zyRd7pcu>;PG;yjESGJvVnJ^- zKt;ic{E<DbJsUt#aB=>H;bMud!PmQnLhDuTb@pwg`%Nl=4WP(#4s>9Or|TmU1&L~9 zhRs~dhmw%{Er2cP)!=it!Q7Tm21KcUjK2XA2-^{?wH!;Gqq3wXhIb}G{k8VCBu1>Y z8-TNp`Rx{yMw@goW-lgS%#|BR6r9~$!9@}Jr=RF7JpG0tdvu7eBv%5q-&p}Ea0s+^ r?7|GVP=H<+N$&^<fK%74^REE_kHz2xF`>St00000NkvXXu0mjfy}jp% literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TD.png b/wp-content/plugins/wp-statistics/assets/images/flags/TD.png new file mode 100644 index 0000000000000000000000000000000000000000..cace22f5c995795a96d8659b80ad7c8d2cab2660 GIT binary patch literal 461 zcmV;;0W$uHP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Q%OWYRCwB?lS@v+Fc5}6*J&xQB3K|KjsQzez)j#noB|0pT!1?u5L+bL1qdNP z38@r65)X@p#4f7}Z|w1CKL4JF5)uBh6fgp|+I^MffO!V&oSt32FMDq<t`ht0eB%${ z@aB3y12*egI5|2<z1eYMj*iEzWQ8Euhev?T4A8!ADCU;Wyy_#G86e$H>)Cqe(tEpz z_W(Kru-228mb|n*K=MRE`1XC`w5G9UArzo8mXExmC=I_w5h>anFD^n}M{sb)Mu5uj zH2b266*SL@0zcjE&V$JWqX)49gXoM9q%ST_0+0~;@6?{kg&tt7L9cBPI{g44tx5z? zzQ%eN0gPchl*Pl{lWM8udRs&=E&@2`7zJT8)KNg%m})po)L7dm(MbrDpVK7Z?!HLu z*SHE%J1bxZI0Uv=oP`p2QGjj-Nv{ZK0H^*t&OZYH+rOa+{5Aia00000NkvXXu0mjf Dr-Zg^ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TG.png b/wp-content/plugins/wp-statistics/assets/images/flags/TG.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9fd2909a10a215e28db91d73a4273282e4bb00 GIT binary patch literal 494 zcmV<K0TKR*P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-bV)=(RCwB?lRZj9K@^3*$(y{0F-Z|gp@k7eER2el3W7TjcObYCD;J>~un;UP z#0}V31i{K+EDRDcKR%7~UgpQb;9s6a%xwl{&N-a9_a5P#W0(?v4~+HBK`H`XB#^6Z zZ`ZLl7PY&xOiG*Bx8tq7f&|hSL#k8)AxPxM(Y1RL{)eH3d=cN+AC?_Zu2%rk67Z~2 z*dQP|H^<205-KTC7Z>0h`>R(y+V_v=!CoW4lK>_RF|8KawRQZ(5+akKb9UB4KgXE& zFeU^*0(84wl8pv0Cnt<*P3QC!+iHOjY#y)l(Q~OZkL?0*`61AGQY72Agyk~NhX+5v z)%HZ6K-M3{3*DE4&;~f2AZ`-Y_1|f$iB$O6)S25#{-#)z!0T@|=(zEwsooi;=bN(< zKm~6QjR5wKUF-9OQs0`makNHesxZ(RwySmE90^2PTbh-J|3o1YKn|D$G6RwW;9dY; kFG${i0tSf0uyKAL0H9rtZ&e<e{{R3007*qoM6N<$f(wMnLjV8( literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TH.png b/wp-content/plugins/wp-statistics/assets/images/flags/TH.png new file mode 100644 index 0000000000000000000000000000000000000000..643665a54a29cc9c7e8cf54cf97951554930c92c GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGUwOJXhE&{IGI_5b zQ=mZW{>If46k?<`x5RiS>#VI|){;NBe8VT#j%_W{Tsj*HV<+F;n<ycDZR>^yddp|} z6rTGtSJ3#e1V;haoVUqbN*~@b{I{#VQ?jz|=O>%e1011j<=Z)ZrN90WO;B-2OY8Rg z+#U0sA;fg%odTHyXWw+bY*p9K`WNTw^5ebN^T~>{`}c@yoSt;l>ty$@1+VIC9=IfF z2ZV|~liAH|yYZ^*uC;Zaby^Zuawtkn_&SR(=pxXNPyZSp9#QAi*?&vb&GfPE|2Ijk z8V&608VZ$mGF)T&^1c6x|5qV_r#H&~Nis}s>3MeS#-B!@uNgdD{an^LB{Ts5IjD|q literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TJ.png b/wp-content/plugins/wp-statistics/assets/images/flags/TJ.png new file mode 100644 index 0000000000000000000000000000000000000000..1270d4545e4cb87c3ec2183742a2c5d9de2c8b5f GIT binary patch literal 436 zcmV;l0ZaagP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-I!Q!9RCwB?lRZj<K@f(Y{YgY)2og|4uu!qH@fd=4@C+WqQ+Nkk&!B|}DN-4< z5E6q){Ia{>?%3pq)gXzPW}A85nR$0ci3sb20;<6F<Xt5^Ftk9UdwKQ#pX$xK+g%IP zWHh33ezs)K3PcDGPXILw7<@oJhotUDo;>qMWkc)c4)_3I6mVRYW!o5&vv?#GKtkyn z>W4)!My$0b8o+y>!>OPwI!IX{F;EsAQvAvtoG==|IhU)4KBl^d!~zLDOm&}B_OhHQ zV*$qF@vjb&?<1j&NB|{><ReZQy-1+4d4zT?jC;oVHoADEvUR#pzye&~U(h_P6O#Mm z|8C|5^akCR!Cb&QkC3psveYUF3Ge(&z^5p@wR-<qMz4SdZ~)X-ga^Q@0?g!)%!&dL e@M_(2{vH6Dc9qO4meIlh0000<MNUMnLSTYV7_rs> literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TL.png b/wp-content/plugins/wp-statistics/assets/images/flags/TL.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5e4d1d75b15ff84597a84cd5fd271309ca259c GIT binary patch literal 569 zcmV-90>=G`P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-zez+vRCwB?lQC!%K@^6+*_pctcVXdH5{QkJUSX+~2Ue-X0}&yW7_k<v7Xs-l zf>_+uf?dSIMiT@rEX62kLg0!No_bL?w|C0!%<j%u+>tdxAV+?9yqV_XpEvIp&N)sa z0hEF2q)#IQ{8oU!wzRl^PkERgWE1L1wD4|oP63sdUp2w)%iO9-*n#8^c*lAc;2iqn z7C=P-(ip@0&k^0TA+2kY$_GL832<)gMjZ7dg8*kz0I2}9)(nS3y4{f87mwBZiiJz? z>jk8}VpxarJTh&@M}Rnvsn_c?8V$C0W0qI?Z08}tgNVxF0M8Dv2mjR1kTi|~Pyprf z49#W}-}mWsIv8VEekgdeHbZa&<Q#-6V22X}zE50I1)$&mPP^SkDFvcLFq`nCRi;+8 zM9*Nf4t7wyz-1{(o)&;4NqD`n!Qdd`!g<H~YKe;@_|~%M9RPP^1|rMRc~$_l)(9cE zdPVT`PKnxckG)rb{r>~T7iTSr)&;;A!_CGS9@neLN3j0`ggSnKoV93U4gu!+yvN;c z%+}kO)SY}20V4n(I0wv5nS~M16M&oqNlppK0V7Tu=f490N(;7{kzK$f00000NkvXX Hu0mjfy(94Z literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TM.png b/wp-content/plugins/wp-statistics/assets/images/flags/TM.png new file mode 100644 index 0000000000000000000000000000000000000000..4a31703ca69bb400dda6e4186f642a365645272e GIT binary patch literal 577 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47-t9ggt!8^42+B@D9)8X+<vmJ zXOFi_hl?IZgcDPo8)KX+L$nh^j59;53lQ~hU3qKuf@|y7-CV!6YwL=M`?pLzxOMuW z?OnUpw(VFAL<})5OtG$!QyO;^q@5~B-Bgs}JE1mq(FFI2wLsbE`Mu8lRn8M@eWy1w z0aeDh1oqWz$V)y_8oMe#)v>eGwyz><`ShmkD;;_(tb59=d&*rW)iFgo1CdX6>AI+h zm7%dKV<T<b3yeF9Y<eq<+X{@^3ynJpff|{joS7n>T-plfhXgGNi<%V{Y|@ye-IAl- zl&#&IW7bv71oTmaqfLFrk|6J?p1$)#e6*{Q6l+oxt5bBEvYEmifyksZu`<XlHNvAb z#9K8#O0qOovLr^ODw!$F0f@A6!#0Kn?TZdv>18RA5h#!wB9Id-Qxwe<YR?|#sGS+M zqdfRXU-_20berl-tL6gh<^s#6e3SZYz3McLvLwZVX!cM?!6-NRaE}SD#`Byldb}*; z68t4o0wj|IBoh6^qCEv8T#anRUjSo=tt7}Vn1P9%OH^k0q~N1K5r0n?#}J9|-t)V8 z8w_|DE?SF7Dcz`ds*-33X!(=zz{>vQCZ710IlLB48yhRw!he4|V8+0_faMieN=NRw r4S(9&Z;Lt{&D```B{p@p!=t;rfwk-(ZZKzpk_LmPtDnm{r-UW|nk~w3 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TN.png b/wp-content/plugins/wp-statistics/assets/images/flags/TN.png new file mode 100644 index 0000000000000000000000000000000000000000..96549aeb260a80432fa7e2a77e182853f6d6e003 GIT binary patch literal 578 zcmV-I0=@l-P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-$Vo&&RCwB?ld(=4K@>&L?2fSwi;xw`MIt3aLINofKR}K60Fss;pr@y%OKLuW zo}SJH5}PWKu&ZoAY^~R}c4u~W=cVupCq*JTyk?50IdkW}`;>_Al2X715H;sIRRRkQ z>?EhBPyh4!>zkXt2DYec+J}dKc14h?TFTTKlxj395W&VVz?KF=aSlJ9Q>W?jZdDPq z+iV;hKwVQlKH~En)oK9{_IikO0HFq`tR>7ce3l_~jqdf>K0CvwQ(EudvI$H-f1w)x zT&f8IDr*4<0Gu)SG{w(m`0<$T@iFG^4#EHxMYP_3Ao}zXKbhdO44<YrV^)BoC~%_@ zZaAb$67U}T@W96YK2PW8xbNT4dwWz#f*THTqY*_>tN^AcmWGKSd4XRn2>X4^{XMTP zFKO-WQpPco=g%IQ-vQPblyl%cgaNbbYc@|#@RJGR95#-bUR^;DfcGfpu+0}VfUy>7 zMy1+qsw822aY5(k2s0R91_OMWqB@<WN)b$Bq6V;KiFCWrj7e#YI7fba3nHja2NgxD zh<J}J%V$7Yi|}<i{YPlazjhR`1H1vY*G%#p_@RKXS)_1HKn;}YrR)4_0MSeFHq|X~ QUjP6A07*qoM6N<$f|vmEwg3PC literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TO.png b/wp-content/plugins/wp-statistics/assets/images/flags/TO.png new file mode 100644 index 0000000000000000000000000000000000000000..1914b391ddfa5489494bbb00e4ea35ee47ef98a4 GIT binary patch literal 427 zcmV;c0aX5pP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-F-b&0RCwB?ld(?2Fc5}6$8I4iZAAwv;1Lir6K{YR5F<;Ug8?z{99_D?0uO>< zMuGuVFrc;|CAO0s10_jSDy8(6lkK}tzkl5+5n+{3Kpoha=4HYGUj}H4$orzI;qmE0 z!p`mWmH`^&%a8L5I#-wZd2N6157C0Xe*kD0K>t3yo%QnE9rOY4&o7|V3_^D{5$^%C z0Z7vntu@_2pW)F7+jlp4aW<aJYYzevYXL9-&N;#`1ej?C$VTI`@;rPL7l5aOLt05n zHknkiKWMdxj4l9i6wxGrG^+#<pAdUj0BjVaYBeOQ22hE|{+Kvb;4GreoZAZ(WJ2sp zCR*o^^$_Z{Y5>WwuK0pWMR**K{<8{B0c~IxXfE0O3B0Q5B-YClSus+;sa4ncdjJB$ Vb<Wzt_y+(0002ovPDHLkV1jdZq-X#D literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TR.png b/wp-content/plugins/wp-statistics/assets/images/flags/TR.png new file mode 100644 index 0000000000000000000000000000000000000000..668f5f721b18c16936aa111760664fec7323fb0f GIT binary patch literal 575 zcmV-F0>J%=P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-#Ysd#RCwB?ld*0SQ4mGX+xK>DVy~k`3I#4wLX!{32c$}w)IrJzASmD;B2xeb zbZ%2b=~6_3{DdQ@(qPF><S4dd?CkE_=N*b&un-_&<u+5zoqK2QC=ua4P(T3G%eo9K zFg3txe`jYP)}n&tI36D#KQcg#`JBqe2Fe)3IV8_f#-Kd!FPasIkaju%H3MkLGV;lU z`EZE8zK-8);`)8EZntPq>NgG@MM#zbXanHV6g?QQvb{}xcbE9|lzcWrU0>s_u8P6F zzhLk@T$%!40J0?E!P**)y*)+;2TTtSQS}hz8&<ZqxH~%oV~VMznk-2c1aTbG2m%mc zdUS-lxk26D61{jyxWA8At26%i0Z9_j8n4kH)_OsZ#4*{$1t>*zbCXHCjTeRt-?Tu4 z(Yv<`3we$>M`CTU58&amFnnI?enU`1uU@002;B%FO_`mXptJ_(3IY*4&tqsU?a}Cc zp&(5`8^)~`cb`5JJbgme>)|dhQI*Ocmk^Pn=ck3#TBKS<g(3Fq7wmZleE*-pk~}9Z zEf~PgMK~Xii)p`tYX2+F3Rnf2K)B>Dd<S}}Tx3wzWiSV<y6-#x7yw$(z;%j*Aw>WH N002ovPDHLkV1n>^>%#y5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TT.png b/wp-content/plugins/wp-statistics/assets/images/flags/TT.png new file mode 100644 index 0000000000000000000000000000000000000000..655e6eb313556cdc0c60a653b77296aea62388cb GIT binary patch literal 690 zcmV;j0!{siP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;I7vi7RCwB?lQBpeaTLaX|H~QiT1k~8mezK0v_qv}Q4tz+sGvAF6j2Zn!NH29 z(7~y8$Yfh8QVRtkgD!^-Evb{(#VH+H>>yc+h7wVX2Jdp0+}-~=B*ZQb;s-z8_Py`% z-V?s>a~%mF2;8jHtEdDRDiAu+^`qCR6u(m`ZZ|g*A0Fn`>M8}pK&a}a4tLhqqX8iL z%5`U-OiXa5X(+BsMoJzH4pM6vh)4uA8oi*Y2{jVIJ3Qp=-rh$Q2w0}ctz?pCu^4aC zY5r_)V^|h1+uHDT9amLBQL3E-4Gs8?0}xOEq?DNZ`!wk~(*pxop2zpiO%~H>ZuIoP z@i8)=uj1wNxWys>3V>tV$U=eB-CbIf-<TO0;jB<VUt8moVG!!>MrN}YCa0%3wp~sG zG)_h$Gc~y!-pL8Zub(^s{8$WqV}tFjEgE`z>5`KC&JMCrz_%<+&to~8T~q*U%ffeE zkP@M393_)XX0tq>okdE?Ts+R#jt(O2?MTDGcU^4Dx)`Bo+X%-2Da+K=ahymn7Ys5q zI*MbOOwG^pV`zxRmKOZ;bBdJ_$_a`^eBTEl$|wq+rjcJ>=0j^MvHpInT#oUD1rDaB zs1Jv+4CB89r4qiBP*YPy)Yjr?8l|NrKKJ$Uu&aw)Cd2s33g+}QLWt@q-}@2{A6#~A zzT=>ULgdEAc#%ku&17in>?HoUou}{K-xoj#xC_)@@fXg4zoN3rV5MF~9#9h3edm7z Y0P=MVAqRCwp#T5?07*qoM6N<$g0{jb_W%F@ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TV.png b/wp-content/plugins/wp-statistics/assets/images/flags/TV.png new file mode 100644 index 0000000000000000000000000000000000000000..e25dc16f1ae358e77d0c334f991043e0a8a1e537 GIT binary patch literal 601 zcmV-f0;c_mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ--$_J4RCwB?lg~?3Q545N_uV&dX0#Y74PrJyF%VH{TLXzS1R)5c+O$aX4~PmP zAzCCZ+J|mh1VJf9nhV?1CUP3VR<$rUGCiq=V#a*DpZDDs4bx16(BQco4j0b-+<VTs zU!k>TCnf+3*j0_KSO9F9KxTRR`S%Y_ieky-hLh)6M>n6=HyJr|fNNf2Tf(c+{(UCU z{`#}S=-DiyvlIX227^blTsU`}f*o+Iqp?IGKx<gp_yN#v0&=9hO!($2vQoyeOSBb> zY^Kumpm@+dfcWR;y=_TCr2(V~Fx}P5*g%f(TM6sMJkih)X-l%OWK;2irl%W*;Lhpy z^aBP!&wk15lLC_qUqEY~F0OHR-X^z4Qg%biZpf`uOSSmZ3AjFYq&9_vxqFY-qC}dC z7yeiKGpPh=<?!+L<wFL5>w1Jr6YFNTq~Ej;m1ex}-Jfy*e9t4&F{+xR>JCf|=NkZ1 z!+9bdb93%+J-|mRFc5&iK-AXNnO;Ef=+aw2aAoEsTEUhR{RISpPmIQr21#jP)%nAV z1(MQWY_^Z2G%$rpj3x+t08Ai=V?||swV_cHgDZ?Lp5XlbE?{-r?<{}}kOg+PsD)pE nEdW^+l57#6fI#e2&c6o$W%=Y2Omo=s00000NkvXXu0mjfX%Yo? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TW.png b/wp-content/plugins/wp-statistics/assets/images/flags/TW.png new file mode 100644 index 0000000000000000000000000000000000000000..30f98a153418661fb9ad451e6745b7170c9bd231 GIT binary patch literal 461 zcmV;;0W$uHP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Q%OWYRCwB?le<nrK@f(&;T)tuA(}{mv9iHf`4lGh_CA(YR+?yH<r~;on21CR z8zLGF!AlUtoV}d0YXJ%bG!UlPZT|h{pP3!;-ZM)GFbB-{?rFjRoe;=x?H<33QyjdX z{7WdFofbkM8z-L4^#Y}}B|K2AeV|oLrnvDdcE)rqi{QOSUzGu}ArM&WSS{w**)Aa> z>>ZW4DA%#AhhCvFlsQ;hM1l~Ydm3YDwj#7i5TM!8G}{{2YLEAxN)c-fKnM^;iu1}F z_4Xx+^W5CM5=BWD@G~U=1_ov$H4La#8&s|zhZ5Pw{dfbp98nnb0f$ffER(`_Iup&$ z+Zbg{AD|<J05~@)9`|`-i?+58P)6gz^hme=bl^P73^Y+2gO?D=q$dM-hc^8ZOyWJa z>I>A=t6&7k11rG7l#f4wX90rVA_Y?d62Qo;>-;?cB?_F|Sfo)L00000NkvXXu0mjf Dq~^3N literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/TZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/TZ.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a2ec8a446ac0618b36847618782f1057f75c4e GIT binary patch literal 655 zcmV;A0&x9_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;6-h)vRCwB?lTS!gQ51*2%X{<EW@IYMP)R};DWZ(EFbEgXMhFbcXc0kHZd}$v zQ;LQJBM4hY^k>(!h%m5?Ow7_K1F@`3U0D`FIy294-hFT0yDi=@lTeZP+uX&u=R3c1 zI7cX@*op*T0HOT58QH*^4unsQUSIy(F9obS8ZA{BIzw~B?kAc0=*JR?M1>9nUC*O= zPwgL)1&-2atx8gBW*8gYkJu)NL=^9*-vI=5Ky%z2rk!QgG7HI$CkO--r|XtrYLTHQ z3di$fO%3JrT`nR13QY%)Ih&NskdheyELWo{Y|~vc$D60iyoeWFwY5S=XC))Cc3>PG zz>*fL(j+A_WL%vi`%;`Nnc-2?WO7CorhVxg)HF5|eQ=ohdB2zrkhLUp-Vc6Ci{8j0 z_4Cto4@j0){HnWlz^$mkmt;Hr{f7vbr3nPGML=>*Qnok1?UoOGe?H5_I|?Vi9tWFX z;A%OK<DI-5uY>K9oKU!yRRmOrQVcdM5F1(`HdgHSY!`HN9boX`2|j(^2|>SVF6ZG& zSp=M6g5lmAucrk<fUd!fJ}9kjqi6USW?Dl8WdZDY3Tge;!oZaklorA;3@R(&=Cu+g zzaHn_NCb2TBjf?v27qnb1%RDiSAa=lJzO}yo4e1BGVwMHrL+F{|FO;j2m{qX*(Ptn p1ip#9H)Dgx|C0;YVyox;YXHIv(d<7-kNf}t002ovPDHLkV1i725la97 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/UA.png b/wp-content/plugins/wp-statistics/assets/images/flags/UA.png new file mode 100644 index 0000000000000000000000000000000000000000..9b05e4cad66d56ee31a5526ba021d4646ee27432 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K107)3o@978H@Et%}- zcf^3lHU1Wd7^|p>khFlb0Q&<Tk2$Tvg<>k}7~TkKvq&#VTqZR`&2QEQk9JMb?y_T( zrt0MUf1e+HRO03_kqyjmw!W7Te&Egg^y}Nd$JJhxn}@qgY1DAU%=2jr3=>ec+2_m1 z#rtGkr%q4uuiXDE$NlEV&KB9dLyhT)l!MC*-PTIo=7<z8#Yst~4!N!8mj+0>muqP6 z`kxse{WG=Pta@*SrH1X1tOswro=tuB;mgk$W{F^DP64)8?+uQvjW#&ubi$f7$$wXz z{KkV4^S^ko@~p@Uy7uq)Jk@Z;#&r@AuZ4C=?doC7z8);_o|)hOs@iFdE|vR+8|;lL r8TV)_<nwFFM=oG=$*n$T&&+VXq$KTabBPo%Fc~~u{an^LB{Ts52RM#q literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/UG.png b/wp-content/plugins/wp-statistics/assets/images/flags/UG.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc5255d9c9674f346ceb95a1ca9fea413bf69a8 GIT binary patch literal 536 zcmV+z0_XjSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-o=HSORCwB?lfO?>Q545N_s4rhT6hIh7?5JXNHk2avUDJZXq;X77u=YgbaHpZ zjX&Z|ED%gcjER6TKuAadYins=FR%AFQ2JaP3g6`p=iKi(=leZJi3s<B0z#nBdk297 znihyEl}hz4)#Esxut0wOtzx{iI6%|Fuk$a&F?kD^mDLnf6S&Osyoas_1hfWgpfA@$ zkQBgJfU}oZ<Yq4LwTvKq`kZ9-89`wLv$>7i|JIM`F`;vO1%L%`offusfi&vex-zu9 z!d_VB@no5a7msM~Z1o8Q!6mJX;MLEBbpMb>y$(PV&&M})mS&6m*!;|{4O!bdU>F4` zMxzKD1Q~%DZxLw0k9GmbT?-o<?<h~NlUs=R^!@|INlzFm03PHW-e1Gfjihtmzm^VX zrVVh@mQsRqo;2;Ev_fk|E;M92SK#O*Wq#rOi3Ld72{7EZNJJ9^njo;*)N*SffG25p zvJtAU+mwo?m!SUR{lDl?{hf*EQt|B78h2Snr+^5U0!9Y>{0BHyfax8Q8IYh0ICbB1 a{yPAzS(H84Wz;wT0000<MNUMnLSTZn8RRJd literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/US.png b/wp-content/plugins/wp-statistics/assets/images/flags/US.png new file mode 100644 index 0000000000000000000000000000000000000000..09c94a0e14ab91db9e49e0c865e00214b13bc545 GIT binary patch literal 488 zcmV<E0T=#>P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Zb?KzRCwB?lRrp8Q5eO4FCS%CY6LboWH=>31x683Ls`+FMA=r*9OBxb5I7pN zMi7b!fzr^_U=kWs<6CM7;Y~UiB+(ztklP}PJcnK#xcs=ockbci9!Utne<T6jKwpD; zR0G~+z~b>7mHqx1(&>9T(SLT>(P7~F+$I5z<KtVkP$;sn;3AiM)G!*|>>OW`Mr6Q{ zOx_R-t`dvq@p;|E<9WPZH?dd_pKprS_1(6?uE7DmAD#dVGQh^hG^x}bE6Wok5_z_^ zX4|-P71O+4uh&7AkpWImvjhTboSbCY-k#U+Wqh$cy4AvG`MG&_9vobV;o*G|4qpnZ zHK<`HRVoz$I02k?`<{qIGQw;Qh*0QK!*Z{q?L6DY#KVxQWuU66&?{9{1>lqcN~3d_ zj3z|&>vzA;*h8uM(b|EcD7q6UiqcF_D^D(w`CAog5?}%BK)=r6H=rm1hDMPLIt}VT eP5N)0e+B>}lpJ-TPM_ca0000<MNUMnLSTZ{Gs^P- literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/UY.png b/wp-content/plugins/wp-statistics/assets/images/flags/UY.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd1f1a1ee0a7705f8149b769340a80f06d6e7c7 GIT binary patch literal 479 zcmV<50U-W~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-Wl2OqRCwB?lS@hiK@>&L>y&Lw{A3jTpa^m1G!qf$3hu!L2(G}Hh+A+8qTtjG zIE*0ZPz41)sF0S#v~5?_bCA~f1C72(P3j%)t-4oKmH&(YA<&<l-OMx4G{BIm-hxBb zW>f+BnI|G;0~Eob_7+X|5iEo=_+XNao#SsMD{y=s0TczOcpsnew1aK!0$}oUP*~>R zwAtQL`9KIwK(m!HJ6)bK0L~@^zKQyJ`@V}1z}nXb)-Nhj+qP=}QXA6OJ4fixQ1wV* z0jI+H_7O?y2u<(-Fj(l}uHJZqRqpQVC#6y!xxfM7ya7UzH08Tr7J-K-Vr(R{Fu%G- zkT3C=*p9}}^A1$Z8+;sfEUYY67#^9xdH<^b<br^k>kF1PGe8o@sCbayrBcO{#BoQ# z+SVbZ(MDG>jIK`K+>Y03wTr*>pjxd?2rvYU0Rvs`H-Jk4a#@jbT>>2NEdQ<Z%K)V8 Vidm|J4KDxy002ovPDHLkV1jY{$xHwM literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/UZ.png b/wp-content/plugins/wp-statistics/assets/images/flags/UZ.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9e70b0a55d124a073cd6a795e6f304027c4635 GIT binary patch literal 462 zcmV;<0WtoGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-R7pfZRCwB?lf6y?K@^3**_}mTS<nz{h!us6jfJI+F)==fjqhM%&wKa)HYT<v z7R1t6sMu&CKal|YGqdcDg^MI=!OCf7ax>?fxtV)}F@{wnfC5m-);!X{R06f5v+JH^ z3r>%>={yd&x$j}y7FDnGeR@0ze-W<E4>u*?hEYuWWRLFqlpspjZPjth1*9+t1hD}> zD1JRzfH83QJOpqhU~844XDPk0;-x>O;;u39W0KTh34stW_0{*yRkw(*0k9>&fzzdP zImX*+vg3@9y}_SND+B<ZRc2#0<Tk6ff*>$?6$F6+S{8s(D);xzJr+O|MY#cUj|6C6 z?6cl*(6bN$m~24!v7gJ4B}V;t0eGqy>J5iDU2ZBJ%V8Mm1wbo}p@g*LQUF7WRttbm zla#lIkN-qL3!nxx0WYU{0=x>q&Vpp;1SEhKtH$|r02;otsjUSSC;$Ke07*qoM6N<$ Eg0NY)qW}N^ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/VA.png b/wp-content/plugins/wp-statistics/assets/images/flags/VA.png new file mode 100644 index 0000000000000000000000000000000000000000..fef6194756fd270523c17ebc88574e897f50d3e8 GIT binary patch literal 483 zcmV<90UZ8`P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-X-PyuRCwB?lg(-yF%ZXpT4`lFA59=3P<jY<ddjg-`T~JGW?myN5pqa!$f5L5 zY)WC>e0C-6N|S?S$8nt$lYv1<GyG;4{YQxi?=b~fU?ZQaSO6Xju;oX`zyAqK1f{Vb zPhYRD)Sdy>p{3}2Sqk`%ts6j#G)THfVzmG$UNWUcDKr114M1!Ih5iHSW-hyhoSaf1 zws$oC3e!16>m6V+d;<`g8dHvubUO=703`t9>L;`#%Icc1TVZU8?j1b?d|lHkzh}U- zgJuTk^!7=OqOLF5>~3Ri;?a8m3IOM7L>eG1ap)Fjn7=2)VdU;+K#*@Z=bk%o-cKej zX<GgTK$#t)|4LU|iui!m+Y12aK-RLZBsZqAgR!6a&_5u^5A2{1O5xnExf%E-SGNly zE$3B(Js8ZcKF`1aA;!e{#qENSCf{hQvp40efGyw?u({$c+yg@e=-j(r5fFi(-n-6E Z0{~bHp5elI0e1iZ002ovPDHLkV1j~w!N>pr literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/VC.png b/wp-content/plugins/wp-statistics/assets/images/flags/VC.png new file mode 100644 index 0000000000000000000000000000000000000000..8de9ab8ecc563467933d98eadb5da2186d6656d9 GIT binary patch literal 610 zcmV-o0-gPdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-=t)FDRCwB?lRr-sQ5400cV>37D*|G`Kr9rfj7AC*qcIeI12ujCTN6Kpjo*O6 z&cxO)V4(>GF;OW@>`?wF!Xm=#%q}zU?aaLvvjQeGgwwpdTby_9JLia*aTW*=1Lp_l zY2blw1dQH)@_Ogr^xeWM&;U*n7AlY5-aWj&dGP#F1PoP`a_jnJJq_jt!cIV7+!&w6 z%=q&AJHSu`guY*qb{&6`9BdUV0MS~72?SQF5@o$J&RBDpepLd55rFf3_S1s>v;a#0 zVIylX*>Z$p{7hS189o3rI<7|`0j~75D1bb7>?S!$=0Nt?=@vX&oaX&z%*VFyba95Y zqz|%3$M@KG8HFnVh-!kImGz2F=71HpdJ`;d&vJ7tWhC}2Z6*B3wz+!o7i*nsjKt>% zogFDCih{CI)C@{tZeo|0^Pl*Zw)oH<W8vO1^HXgo1vRDAlDs%LM&KM}si+#DpvJ?Q z4Ym&&tY%Ff&8`C#P(RXFrO4gU3a-d$HZBaz6R-dg<;Cr<<Yh=RQYZrm6amZ>cl-~$ z_rz+%jSwUT2|$HAQ(5hQ)vBW*6^$@LF}&{|5_mHu+gk(R^KuF*wf`q1F<IIAFU|st w0+)f|Q+6Q(HU$U=MG8+zPyt@fTIat506VGkIIM$#8vp<R07*qoM6N<$f)e8TiU0rr literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/VE.png b/wp-content/plugins/wp-statistics/assets/images/flags/VE.png new file mode 100644 index 0000000000000000000000000000000000000000..e8af8552f9586667cc7f6dbed081be36c1d01169 GIT binary patch literal 464 zcmV;>0WbcEP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-R!KxbRCwB?lS@hiK@>$#rMlISXa|(|NfcawlMEb*Q+MDV+>hIE0q#H$L=YTB zgYhp$J63*OcGYtdVj~D?y_1^MJ9Y1S^^}P4A1Po4D38xPvOq5YA~Aa}e|mlXxEcT@ zNI^Gpm=<tn0HpxX6#JmwfX<K0k}1k+5u^{G1AxZ<0h{#-op>~rhsDYqt-D>|gaBX| zJ6^+-uJMQn1)#dRKvWJvDNNt;@@Pn%fC5QUhOq+}1H7U6Wa*j&MA+V1<@v3{>7_vg z>dR$TswGa&9}or6V3trN-+)o#5Uug4W^E(lvFEvIb|KV&;_BKkkbv6867AMIsn@tP z<KU=$$a)y!2Sa%JC3t4gg^wb)pP%eZ9M}ZW0Vp+96U7T7n~9KEi_8^aCY%l+p2XS- zz&a5wy76B=qg6lz)PVV%#Rj-nfF3WB&IxdURsUV*uK@tQyOI=Ejs1K80000<MNUMn GLSTZai@K)( literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/VG.png b/wp-content/plugins/wp-statistics/assets/images/flags/VG.png new file mode 100644 index 0000000000000000000000000000000000000000..c751c258a0ba74fc0dd1c4277aa2ccfd6e37b6f2 GIT binary patch literal 618 zcmV-w0+s!VP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-@JU2LRCwB?lg(=rVGzcDo84@Z5}T;0QmXaiQa!Y3!J9}uSg8~QFCutQ+LI?K z^y1&46naz;714`5*o$7Z!FrKm+hAkTl*TIA&1U=V_v^vXRH%oV2Zmt=o*9Pc8AVD- zCy3D@6hJM^y$(LxNh;fd8T$jTvcoKYZ!mfFG}BL3|4Ck0xUXq|{%*}?>UtkaE{FSO zlkvemZr;eVSoIhhvj5(wfRwPbR0hyBK%F!S`0uw+O#{2SO;@EtBbj1^klE5n25!{} zdzzf#EQV4fsGq|B7y+m;fVrNF#Kx}RUm8VE>I4%LB(IGzpB=<B1(t21doGvHjgwYl z{IX0u&jUaM80l4c`FxSDcAN)N^5Sig5@~J^s2Ii$>rI~vk&hqju+gkxi5NoA9x(l= zKoF>yrr;Sm@CAUUt-G}!Tdej9PUQNLIIL7_2$5;aD1^ZGL!wCT8~5@yKg}aN{4`I) z$}*KV5W;B>a2=N*j0jtVa1S|*B*8bAyQvMR%`zG-<F2{5uDk1lbS87hN~MnBI6kt~ z+=T=$h%<cNp#QkT`eqj^rK8BGifKMRqyc!IM<NlS>*~IS(GwBHayP|t_n$iMVp)4s zh@ueFto*l?Q@~*$c|fiM)D=Jl^j1CyLcmixedpf;0Kdfe8p|P?9smFU07*qoM6N<$ Ef-0sCBme*a literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/VI.png b/wp-content/plugins/wp-statistics/assets/images/flags/VI.png new file mode 100644 index 0000000000000000000000000000000000000000..fe753341f8eb19a725c5b7685d973ed3e3e7ef32 GIT binary patch literal 612 zcmV-q0-ODbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ->PbXFRCwB?lTS-jVHC!H?|tt~cg7iKhLC8Ca4gKoghUD<Nf$<|HbK%RsP9nN z2gr?^s9n2)AlkMIgP?+eA-H6A7wR<9KXhg&ok{Op?|n~;#0sW``P)2;a}Jz8&ru@6 zUa;6B3eX}F{#UV5wgtpRwrDqsh~ZxoiUa_08_*_NBlz(MWu?*aLA2e6r8|+}36`xu zPa<ZMC|n?H%_HVBwsR3c+rN6r5lfuI|2~b`c!<RFEUipYTUo?}RdNST(bs*4D0ok3 z9Fo~vSa$Eu4pOfdzBcr}ED39wOn9GsW|o<mGrW9J08#WGU*-1nb0Rf{lf6N4*<tul z2gzhIZ3C=S8@THYMh`c5x-`Jei6O3@p5t=pV8>#_dK;LIYdk29)6=Di>4;XV_4|y2 z-D$>;<QOR&<LwuZSLOY54!lDhtf4yBafXVt%qXAg5hwCVj0nE(17HJa<1==&2Y~A% zXQ|a6BmF0FChkE9I)90|#b-<ok5TB#Q0U4~sZ@3@lJY!H{^UdTqck__(yU&QR{gxZ zDbLG=yR#B*ZSLfFo+m&GAmzHQw8Ly`(-$ePuKg8rT~~mV4G;tYrBbPl)2wY3KvAoh ywpLC6Il$SalYQWu0yGfc*4+>Rf!gak{~Q22wgc!Y<xful0000<MNUMnLSTZQ@Crx( literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/VN.png b/wp-content/plugins/wp-statistics/assets/images/flags/VN.png new file mode 100644 index 0000000000000000000000000000000000000000..dedeb75700e99050d2ccf4c4efc9155fe54502cd GIT binary patch literal 520 zcmV+j0{8uiP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-j!8s8RCwB?lTB(IF%X5nl6rpHV|(I2vaokPfUl4f1Of*8AU;SoIYAcQIph>s zWNESr1g{c9!1T|IBdJ?bWzoaTfFUsP+msN}tEX2_qN+Rx0*rzERow+0uq=T2uk-WY z|I_{W=H_()%t(pJ+1b+*x}|fiSwNL=dkZit0IPjZUMxsewZ5nk#;0k}`oki{hR7Zr zp?wcv3xF5`wrR*s0|H_o)xz|`1K_@tm=}3aq<}HR5CA9udhZ!k6}f3amD$^ly*Cki ztcX=!of!Prg2ksX#6d;x{f59f$LQ{k+_sRR{s58#^D74^;d4p#eu{R01ydj5tlbcJ z=QuD1at0tbLVC!=?*dWCZ6-Y^=1?Jn#)$8_4MFf88I909ywmK1M&<r;5A`s6*JEEM zGz>;c-xCHCR|-Nvi((j&00!FYDX4-#`*DIyhJ654#c!MF>Y5zmKSQH`w$|R`mdiCk zr)9~vly-|@S;FIEC%_yy0S<Od@&foN!(bS%>Mlq?C(r%Pe+K}e=)Ld2a$}tU0000< KMNUMnLSTaa@Y(bL literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/VU.png b/wp-content/plugins/wp-statistics/assets/images/flags/VU.png new file mode 100644 index 0000000000000000000000000000000000000000..0b26c42129b9de67f7f158ec82b04bbbe50d451d GIT binary patch literal 570 zcmV-A0>%A_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-z)3_wRCwB?lg~>OaTvxw-<j`@JIw6Ps$`a8k^L~V0uOfZphN{7A}X+mya@Ft z^gncpx_FSF4qgOLfprg2JV_BPqJ>siO6#uft~=k^nQw;{muesvpUZQ4AKv$Q-bZMy zIS2$`0d9>OfdYyW@SZ=ozA^YYLzgY7pxN(Et*>6RNx&)h7g!$Zq4dt>3`vlh=s&~3 z;s*dn0_NmP#mL<pTfHl+&bbV1q-eGcl&;AL@yD>yl7S!qFeQNR`>cJ+^L{7C#lak} zSDNTsXy&|?1S7^cL!$iv010sJY=tYA@?^8yOpI5#dQDKeyvgj0LtIKW9{I{<U7*SG zc{8)bv94{tuZKK)qPcV1VC0dEy<a9g%H;&ystLTED=~K8Ad}YQ3nBMz2-*+B!*M58 zz_pV^O7Hzax954wr@AGcTVi+smWoNH%AIf`1t#!Uuuj4z+}fq^c>d&`iN}u`T<A5J z{@P0RP&=YSLN$WwzZ*olieKEVdoX%4z&VoU>3S#XbPJY@Ak<)*u_r`ml&YtoW`8<- ztfZkWgfBl}|MgG;@PG~=)nFHPfNz4|Hd!@p1R<crLF@c$01phALR;R%QUCw|07*qo IM6N<$f)20z6951J literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/WS.png b/wp-content/plugins/wp-statistics/assets/images/flags/WS.png new file mode 100644 index 0000000000000000000000000000000000000000..e1d7730d01d208c07514a492499a8e8ecf81e6d7 GIT binary patch literal 492 zcmV<I0Tcd-P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-a!Eu%RCwB?lTAxoK^TRf`ABN9M(U#2x@>F3R9y5QNLx3q`V0Eoy3&Q4TIeEB zx)y|LK!xfegi=t7xi^vAnLBr07gtQAn;Y|PW-;$PoO6bwM1*NZ0d?TX?K#PKU|@my z&Cfd*2xzVN_<osh-%n810`TSEHik%n{*UltZ}*u6W<w#YHx~iuc6+S9eSWv}C~cw< zB5F*u;C>we%v!)WUl4uZ&FUhpAHVsq@tW4pb3}yvs)JE-Pk~u@isU(fu>c_t{Jp&9 z@ar)E`}-ZPQU^dxQq(;KfYt<8-dlj4i`0|Apzrv!wZiV+X(?7g>?J57QE3?auzZ-^ z8G6}Xdw13d1u;!4#jhI;QfpXiAH1>v*>K1l8j4s6AbB9m{m6nFW~f>XiPZoq<hU}# z5|DX^7+adIq96*H9}CfWkIX!VdaW8jBF>L2_(Fts(tAi1yaMKdC17sC$9>?B0?ciZ i%!Ggf@M_vR-wXf?kf1p5V@yo|0000<MNUMnLSTYGw$Jha literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/XK.png b/wp-content/plugins/wp-statistics/assets/images/flags/XK.png new file mode 100644 index 0000000000000000000000000000000000000000..cf0ad173287491ae1d17672e52a2b731c73b38b5 GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl481n*rLR^7d21Z6?B=0yu#;#w| zrccVIU&gjy&Y@r4p?~_yD?l`5`Q^o1ZY|w<Yx|K$D|g)4a^S&|Ew|>Zy*73EWd+B+ zl=}S{O$X<$yFPKrrRJGuswSPvZaZE+;pF6Hmz!psp11CLTH^r)hdu>|p7^T0QDwWc zTMva4?exvtonOCd_Vj7t#asRIc7eoO4#ijRRj}`lDBbO!x7{~qt7rC3&#YZbX7|24 zkh5c1b5OxnprE{6XHdZo&&(}u>Dwxs=4@SDe`{OrgPoZx=d{L^tn|p(DsS8FnX%C! zVVz~{#-i$}54Xi%-H>u=UFzIP4f3|FjtQ$QB9@s)EHepT(bHOcc17&v)lpa0L>yR{ z9FRK8IBcbyO|xahBK?5*dj9iOy_d}F%$nVmSy)`}m(Z{6yFk&d(JFk7L(Br##3kNo z%e~Xr)VEAcDqZTCzTP{1l}E}l=lDf75py)18+6^8486OIe0vOidV}UJFaZWQTS<^# zFar}im#ED0Nx?^fA{m}8jv*3~tp^>sngT=|E>?e)oboU2ZGHM$r=EZs&!G5OC47Gt z%POQTHa_$4WY(#p-=1Bx-BD#ABw|19T_8u*{esIXj_>=n&i$=o5$)?~pz&^=vrx<* qDH+Z#u1OOjH)Jk3b(J?%ZGYUCGO0TkzLhzG;@#8L&t;ucLK6TP%<zo> literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/YE.png b/wp-content/plugins/wp-statistics/assets/images/flags/YE.png new file mode 100644 index 0000000000000000000000000000000000000000..f2902a33294a6b7f64f4d19ed1266c2cab2cb93a GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8NyGKX|%0hE&{IGI^ul zVFQ6S`{UC(pDf~HW0TmO;#4cBHg9sLxZ@sX9-b{zJ4LNa`<8NwaBAlLf12|8-}`gw z^MwS@O=Qy9U~xo9^}%U|)8E^V_Xn@KZ)bm3;=n{>@z=kbmbL!)#Pxt@!P57Vd(`Xm z`ihVL)F>@kyMFzIee4(566BSub|>F>_sldf^iA@dzSROvQ?yzX4y<D8*q>2sTBX&n z?sXUA;^Pb^zRlNWZOcucIk))9oO%XBw^zH|{?7bXFV&V<)x_wbnYi|7l(qDPpjix_ zE+6jA|0Fq?Y1#qVg2;?-2WB&UNt{@ssKD$wclWvb%nXYxCY5`09-a>LJA<dIpUXO@ GgeCyldyJ|8 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/YT.png b/wp-content/plugins/wp-statistics/assets/images/flags/YT.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fa1a14c42dc55f1c56fc0c1513bca6de6ab214 GIT binary patch literal 647 zcmV;20(kw2P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006`Nkl<ZIE|f? zOHWf#6otQYU$(dHEwl)<1vKT6)L=ki03i+>J8|UDu?bUuh;#h`8e{woL=y)LRAPKJ zH6$b@g+6H0$8GOD=QyA(m=I%Jlf4ILt?aeV-hw|N_&4Y=VRv^I%d!ySU%5jCtqH>r zipAm={h!$1-+yJbS}k{^+IaaK;kxL4A15<MaD0S0HG`~Gz;aOC4$<{3qPNxoD3wZ{ zb=gm3xqwy@dDg(m%n@B#B`6<auiin13e~7$O<f<`FbqRmmwg>gW|?1Dz%c~n@(Gp_ zkXb?v0y3E#ej-Kn^n}GxfI=`9*xTE~^E|$O{zN8|Wo7X-iG)IH2*ZG8^C=(Rzay1O z(QdU^TU$GyVkDrHA`*!Z1Oa|OB(UQ=ezL-YM|pH4iSIY?Jdb2DNxfblPi+~7L8sF} zN=c<sA)ZJe!yYeYo}u2vG0@zf4LNQ;#IbG4<udJd`$9k|MJyI0pU>0l^{CbBgi^Dd zEfN-HX}Xf!N6E=)gK#h)nM_hB6fS~fxP7K&5{t*#+_;PHcSzs7M_Lugw{K%FZ_;R1 z+1c6QTExM2>|u&vVVwVBr~@V^COP<d!1neQXB%(n`aNP%7t=Jzwp)BJePeod8o%EK z(g+h_8I~ac7H=$3JFBvgTi~$#i*C0AhM*P(L>w2>Hc5IOreTuH%mZLLhG7MIF!qz4 zm>PDuzn#Gte$Z3Gb={>{EH-C5HnwRZOcSlIyh<$uNGXw067>7{{@{lgZPci0t*_vY hG7~7R#_zS({03fj9v?kHSHb`Q002ovPDHLkV1fX{9Y_EG literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ZA.png b/wp-content/plugins/wp-statistics/assets/images/flags/ZA.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed5ce864776b3a90d1c6ac4e512a15619824403 GIT binary patch literal 600 zcmV-e0;m0nP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ--bqA3RCwB?lRaotQ5c4wbMHxWV-pe*h+u~dP31;J2`#0?$>PuCsDcQB;8f5; zb+e#@gHUj7JLn)tl}d=EgWw+sZVEbe2-IpL-l$*_V{Y!>aY&$IV<7Zh&h$OJ-}{|c zD5cnq1TX+ZJ8wU7fL{`bADuZ_K?Im1hnWp!+4G=)B0!+^B<y?nG%bO_QxiU)zvjX9 zSRD#DGdqp({51*>f&9m_0HtWXeFrco0X_BGCY`IZ^5O>@<qgW_A*S;Oh&*0H;I@bU zl9oz=(*V!~Fg!V)FI~Hu<&&yXcmp^satBAbWhJ^=*J4o|%VO{R?W_QXP17u;(`hc8 zZ(xOWmY>-jw}Nh0O2iUWzE@a(wB80}GMSR=x>T!GZq9`$M<h$d=6}PBN8^MDvH4^( zD*<fV2Bo-hU1!VCSS&Pprti5PzUKq9BaTR$D>DWkrN%-rfFNLOVv5|)b6o-9u%uS| z#(gfg0jJOUd@(c@S3oG6vB@cpCoggL;d|;e7b(RKK(lFWJJ=EdYekQNP{8Q;363Q% za&O@Sz8{cG8C_l2t?d<@<yRiMUd7y>XQXz7J4>s0et^_9Y`gb&7C;;r0%Co3p$?P< mpm&O-_X+R;N9?xFe+B^W8>tr~np4C80000<MNUMnLSTX+bop8U literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ZM.png b/wp-content/plugins/wp-statistics/assets/images/flags/ZM.png new file mode 100644 index 0000000000000000000000000000000000000000..918653fbef5bafb2f109c5f963a5796e1803e8cb GIT binary patch literal 527 zcmV+q0`UEbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-l}SWFRCwB?ld*0SK@f(&*;`+P9TbsBAd!lSf{vaxJP94*ap-8%CK96H5mH5= zqDe%gq```v<BV^2?{<dbEIS5LSeY$GtKI!(cK#VLGah0Bl)(1FZ(<3Ud0^-5r}sba zyXAmw&D=VVU~~u`W2nmUyN^#jFzPh(`uWTM6Aa$84bLp&3*p9uJ<Xh4f9DuR9w^$} zQpY(r^Xjj+h5{E(c##taZ9~~9U!UyrWiSLNJV0s_(@=98>U%$Y2Atu*Id<DXZX*C5 zpoxLW?}{qUxT}geVbCc@hgSd`qzM3@KfGezjoDoSLf|}KQH9xBR23+*(Ovui;5?3d z@MJ`r+?@=X2AoGt*8zZ<fhyU7YJYCIV;*z`h#^o6ACXOwzVHa32H6a<f~^4Lj?ko~ z%)}6}Y&ZlE9MUi8y@`M<_99?P2w{~$N{KC$vKM8o1_KN!OK?W1i)J+?rL+VjRi(Nd z|Jy?XUg6uXDOsS7z09YV(`7pgumkJ^k2jo!8n_mqSPW9JAs_=u9y-o{1^^OT(0xc6 RWflMc002ovPDHLkV1i>#(&GRC literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/flags/ZW.png b/wp-content/plugins/wp-statistics/assets/images/flags/ZW.png new file mode 100644 index 0000000000000000000000000000000000000000..ac356e06201e58bc1daa4e6c9b0f5876ee894923 GIT binary patch literal 591 zcmV-V0<iswP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-)k#D_RCwB?lg(=rQ5400ubE7&lVsFZ!L%53T8dB+x)KE!y6DD_g}AWzALz!7 zE1@n5b|daecdk`Xq!t@#2$g_XT-ZttDFLH(s#R-A#xc!gGS`Kv3q!S`2QH6y;U3OC z?;Rx~YzGR^foS7w1s?E21I&r(sV`&sr}$lQq#j0st*J_19Nwn^#+lQD9O|~n6sI_7 zIfPV%;6KB*^OiIi3a~_^0AS~Gd|e%<|L_O2oo%q05Y+)e4i(MzXaIh_j#Tc_u~0=n zHA?E<D1Eb8_D5p`N;S{NeQL|UEz<zXGp~q*UlKa<nrPbN#J~lfyPYgNxQ_z(i$ve$ z<E*%U?$)>BvXtisW$m*erMX@SN~=;6k@G`CVi-nKB@ziqCX)hK8bD1~=;m%bCt!!! zkK4Y7i5nxFO=UP2i8Uz*hYiXIS2tFuxGtUMEn)}8_*k%ccKs4Zrzh#@ixa4}W)s^L zOFw;h-yo>^HMG4J#l?3N-dy4GwORCG4T91puTWuSaUG6r5LByVvM;zZbCcsI*O>n_ zfN%f%GcD!619>#Sdz5;@?YW1ncgLB0oPaImBL?I>1(-lrqtgl;z*a!05u{Ly1a-hu d+l}+D0RRtJwQ`=Ot3Ut%002ovPDHLkV1lhV`Sbt) literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/google.png b/wp-content/plugins/wp-statistics/assets/images/google.png new file mode 100644 index 0000000000000000000000000000000000000000..9eae488d1db3b223ec5ae5a568dd9f8c6ada5f61 GIT binary patch literal 787 zcmV+u1MK{XP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0005JP)t-s0002c z(9i&KGVJyH0IW*9006ZB0RR90`2YaX(a`~#IRJVx0I*5Ei!AlTDD43N@c;nL000wy z+W=C+EUP;lq&qmTIskq!@wW~7!UFyP0Q>y>u*v8HZPN&A$RD~&0<%X~yg*I3KSHxV zC#gIUpgI7ND7%aj^u-bT$pz^I0ki-B-t74F`u5Z3_TTFD)8g{{>F&bS?L@TgEvxPS z{^;xV=(x}5rp4zZjO3)h<8-y-7m4EvmE!vE-S^$y(&^U@cGoF^(}JPT1$55!%+0X8 z$ToS%|Mthl<HrD7$3%R_WQ@YF+rO{1zj2?xONPG?Y_>adwXNB%_M@#2WUQCat4VUJ z$GWEV<D|r+qX0Ug07#qh-j#&Ol@(Ex>(Z0;;*f5ifAM{O8$^D>vwZBucXPmQJh*D- z#8`N<RuaZh61GWc)<|f>L|(;1WWYgBy+I_nLGZsoJ-9$tvpzntK0mBJY_L24tvs`6 zJT9g?Or|;rojOjqIAX{)1&1>Rf-zW!FdBL<Ijb&?k1GnCDnYd-0B;|yQ6BKK6ZX9d z@Tdmm5(e_e1fvH7^0xrzrU1AA0ImQ4e0+Ln00007bW%=J0Qc|y{_yU7nu2=(0093< zL_t&-(<RE)R>MFPh2cYy!=!->u_mcer7iC6?(XjH?(PmROlI-j?SE~6sLt;G1~T%K z#Kf9AIybMp6md455#oSklogAvOsuDdVNjY1Bux~nTO3#^u!CR*dyUg6Ij}DxyhkYg z1%gGA)QH(9_ec9@H_x9in1wkdSg>-rzPY`(vw90-b*+Vni;o*y9`AwdzJf{DXb)oV z-G#^NQ~mC1nCoh*Ma1Sq)u+nJnhiQIziE0LvFcRzD}iJikl|1`{IzVyi3cUXnPL7z z*Y(%$DQpj(a~yAll#r%rFK-Jt5aj+tBC}hOzI4p<e2fJkff*t*Pgau!{s6OLF(;9o Rgckq+002ovPDHLkV1i)Pev1GA literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/icon.png b/wp-content/plugins/wp-statistics/assets/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1663557bc6ca4605d70cf4fbd3c2083afc7db7a8 GIT binary patch literal 741 zcmV<B0vi2^P)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0004)P)t-s0002m z>ML`h%fQbrX@ilIoJ>7=gGP6NYJ!ZBnNNJL|F6LcKZv7fnZCQsA6bx~4SSM+t>DYs zIVFFW(4ATteUrr?0E3mKpr>OndWh3dI!b?zlb$1cmb9v~PjHT<qOC=Ei>I8TS#EoL zhFxoFnZ0wM$ybl9iLmE=r_~I7m(Scz%-Ki8(KnO1|BbZ&hOYdp%KM|k_>#BwkF@WH zuHu5L+<&Ood8N=_lCmy`rbC9H;OlhS=4adHR?^>9(ceVL)<eb9J-W&$w#6X5&<u*Q z_o2Y>fwS+H!0w#A?TNDNXQbzWwBvfN<AJK<Ri)m)v)yp0+kLIjbE3{@oXjwt#&Mp- zVw=NloWWg~zv1G!W|p{Bl(=P;wq%vIN|3Nbh^$bGrMab|M~I?0g`X9Ho&b57yN`tb zyL!{hdC}u`%IRU$;a%;3T<(KX)Z|as<4@sjPuJs4-0Miz>qhE!JIviSzRfVb%rL^z zE70O9zSk<}IwG{y9nIkytJoQ~;}yZx5v#uix6A|YMgYey0P!FIEw9gq0000bbW%=J z0Q{<|cXw|{EiL)e(#_4w%e}q1xwEr#b8T&AW?^AnT{1EW3AI*8B>(^b*GWV{R2b7^ zfB+>4aYY6MkP~7o@#GSeh4Gmg9UOAK47@#<p!{k_?P6OaeG^kZu!usvla9TejiH{g zhIx=YP=K!rArQjLz`)s5sjH)12-c#h7Qw;5>gufPs9j#*ZlGai5gEk-5~$FvDUEjX zH`7#8jb&lrY;kd^%gGG%(X>!gjZffUVBl_U$j;C64OI(QjZ^0V+9K1KRn(dspsE^U zsct0=a)?N6TUl_TrMh~Ol`z<)Dq`&!Vb&?uscE9hP|ry5r)z0x2}mOOmz|A`9l`<t X;!Z5*hUtrM00000NkvXXu0mjf$-{e3 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/link.png b/wp-content/plugins/wp-statistics/assets/images/link.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2c1efba066a17eb58326a90f05d139b8b826bb GIT binary patch literal 922 zcmV;L17-Y)P)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0006IP)t-s0001P z#9>vXOl`wpH-Ix{x>{AHOm4(sZp2}3#9>QTN==(aX}(=uuTyTsVS<8!Yinz2YidYO zNOE&>N?b`~WMrwTsf~?|XJ=<YY(H+qVKa9yK8QI&UO`GqN=;2oU9VG3n?^owJZ{8c zJ$X4pk3DY0VLWF#NtQxw!eC*vR&K;$Zp2|fKR<57VZ+12k&%%?L_^Ng)7|mE&gHSL zuC8lrYGh?(-QC@c&DU+W&RwX<ZN0>c+q}%{xYO&js_?T(fv=vPo|l)Gq1cLcfQ5sG zgKyk;czAeGQBg}wOh!gV=;-LH-rSJQ+m+MWoY>jb*Vv25*R|f()$i4&+tu3b)VJ-_ zx8u~J)YM+E)5+@5$Li3}>Cms=&(rPBq0r9G&d%ud&1SUCr{BzGvCMVJ%c<_kj={;+ z^2cqn$5WZczTm~Q+Qq8S#JBCiX{Ev9^T3+rzp&T6uhqSO#l5|~y`JE_XS}?$@3n-> zwQa<-&*`vw(XU^ruc@r7VA!Ut*QUGSrNY~#wBDd!h@Xw>oucBKan_o(-k6%-l&{y4 zqtKCT(U5|Oi+Y5LZ-0uU$cUGwh>^*Mkko^7-hyw#f`izBSE+lE$9h?9ct6p1XWMp- zz;<Mbc74%ve!FvXcXMBDa&d8Sc7ASM(`-i2YE9W@d8KAe*JW(0V{Lw6XQNtByjft8 zSYdutqDpP+0000lbW%=J0QU{z_q4REr3C)``}_L$_xJYo_4M!W@9*j9=HlPi(b3Mt z!nv|?Pe?{RJTL`I=_Y0X009a~L_t&-(_;VuZFXixMkzH-1_<EfU~IC>$t`Z=VPyjG z^^{$b!s6qCBNOr_D}Y2eT#PeAVncoXf-*{GvN15|@D)}%<VOVfTV+*snQ&_`uy@)y zq(@s?CRcP!b?=#|%D`;j-WDEXm6|qZ`O2jWnq?Rmji<X8rC8h8Hq2hOc9jVWP+)#< zxph>wO>K4Ej5R<3=9($CrLBEVu8xkbPHvN=8Cbhprp+_(vC!|I5NM%qAj_b|Yrk%x z(JU`>0}perCHle)3~X~(yBQT2mL=+&8m`diXJBAbTyJKy$k5x<)7wx)UxEQBqQYfR wZ|c0*!`W0!TpsLQbs=*zGf5>u0Z}<!0KpPQ0ty}Gl>h($07*qoM6N<$f;-^im;e9( literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/loading.gif b/wp-content/plugins/wp-statistics/assets/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..d60f1b8caffac410cd302e1828ac8005340e1a04 GIT binary patch literal 1737 zcmYk+eN0p99l-I&7WzVgwsH<tdZ8_q*HT*A-qX@IdfIYY3YHho<s#PJmRgWf=s=O{ zoN+#fbDUAvIyYmy#xP@yaa<<gtZ~d2W+28nW{5M!8E1?!#u!7KbN;hUck9CM&nM3> z`Q-T~kEe++)rUnu1pW!YhYueB082|tM~@y227`9H-RX1=3=Et;efq(J2NM$$N~N-* zqC%t57z_rh)!NtBclq*VsZ^RsBwoCD@$%)%YuBzFIB>x4_Xh%jt5>hyxpT*4GNCAX z@ZiC7=gxI^ckkZ4`|;z)6h-Cb<wc{>6DLkYB9WPy8MoWb=kq5gCyyOFCXq<8v$LN) zd-mqdo6*tH{rmT?tgP(Yx9{xPv+v%$d;k9Z+}zy4!ou6PZ|~i^cj3Z?SFc{(y?gh` zlP3=!KD>SV_Wb<(l`B^sJ$kgfy!`t0>-+cbkByC8ym)bHYRc#HwY9Z%b#;Y8A&0|Z zHk)tUxUpl$j=H+K=g*&4RaG52bf~klQ>9WB7Z;y8b*iPMMJyK6G~LtFqtoeb-MY27 zxcKzx(@U2w?b)*@nM|HMd6Fc_BS(&Sy<UPK6bi+eGiQWCp+F!wfBrn1%|3qocv)Fl zK|ukAVZ+12YPFin<qi%G%4D*Rj*kBR{=Iwmeth#EM)B_=*GM$HGrCPa*1vPRJRA#u z8&8C{)%FkdCV=8Y7RdQ{QSl#vzmeSJ!rK~kwOaO?k4H71_CG}g+#^2)kQ%3Hsj^DV z(7Z1;RM$exY@~Ap#bqiDG-_=a#p0|jVK4+a4%mW%!@$;HgIT%aX}zNXX6GT(z|sgg z`RKF}w?nS5a2j!1Ade%Nw!7SrFIp#KEUH3+60et+OSO8wiD!L0UZkkt))`7_to*~J zZ5LBde@*;6G{2U^%AnV*79P$BE$pwma<^=iGQhg-E5T-UV8b`%w6ArOSB#LpV0B>J zlhyVet)p`|$`mwG-sbjMV8&opi|r~wz>1BxW)T!h{P?W7=MHER@n%WKP0%3eC}K1$ z_a9)r&d|g+n>CFg=`w|vch+>ve6BE=BI}!ClcHY$W{Lu=H5njlHSk~t$j>S0=LBn5 z3~+IqIl}zB+*q781^c$Qqo}K6AeTp#Zu482?dmoujEH(uKs2}&))d&&zM&Y@d9`V> zRt-xG`ZWEe#PgT&P}G&i%oHN)y-u5LOO)qJ8BQ9FT110lw8K^Da^e<;=5GwamyY~P zzV^4>zjI`C?A5wtM%PeTBJwNZ9tPA)xE1UBw#58C8drMbQo`okDr~h<WVz17^nTM~ zf%To0Dd5dzLthO)Egtw9#(T|aWbIcl5noJ^#UrrL+LQJTHbYOPJ?*bnLLy`;P5mej zr!=AZQY|$80}RthBa2^3+Vt4a%LzG=o4syLqUsBTmoa9oHhxZwgcH${a&ZF#_^RQk z#NaK^71C~NPN74uXXTWMiYUTlwJ<(;fde`s(iDhpi9@@IOgm$vFzhs@QDO5OzL-Mu zIkPNn+O;bPQU3MR=m;BPJq`EilFd~tN>3tsN>#B#kV9jH)(mThcJk6gCcSq4uisPf z|B16#13xF$I_fJ`VjN)riJKxm8E-hpPNUM0hs4aKMV*~Eg*ogR#%YN5KpX%2RH8!+ zNw+=)?A-0YpSey1xe!e*Y^;D<!g$@;vJGPT<<!<#oH9P5%Y}XqlcgfbNZqDZAG2$0 zD4^avvd)^qmHmR;KmYRK%5VNY@i{SPweDw`#70|##cnCpGQdo_`7GRNYA>ZRRD<e) z5w%n{ImWd%Gvkr@P-xUorrLY)87u|eHP$&=UlP4Jt~ZoGPVJ2ptF9dCs)KXgTrrg9 z2PBNu|C8@v_kjA_2!a-N{y1o&d9AxgcI69Wdt6J=^+Ha*+#C8+mps#!yBc@s2OMKG z6DUex429_lq{r>H(dCR8X|x~|o>!YBal0NWtNls9FLcA^4XP=`RSyLLatiZBV6OUF z(k#0S`ZiZixx2+MDj1y-*Wi%V+%?P;N_Yz((Y909ZX@uxLL#MA^43_(#vr#Oob>SO W*82mFl|TOKCcYm4%cqa;fAe3|e=3gv literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/loading.svg b/wp-content/plugins/wp-statistics/assets/images/loading.svg new file mode 100644 index 0000000..e12d271 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/images/loading.svg @@ -0,0 +1,5 @@ +<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="50px" height="50px" viewBox="0 0 50 50" xml:space="preserve"> +<path fill="#00a0d2" d="M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z" transform="rotate(32.3376 25 25)"> +<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 25 25" to="360 25 25" dur="0.6s" repeatCount="indefinite"></animateTransform> +</path> +</svg> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/images/logo-250-white.png b/wp-content/plugins/wp-statistics/assets/images/logo-250-white.png new file mode 100644 index 0000000000000000000000000000000000000000..6a554ef01f726ac42682957eb1944b6685ae31e4 GIT binary patch literal 4434 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/logo-250.png b/wp-content/plugins/wp-statistics/assets/images/logo-250.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9b7f135305ad2e8930a2c13088e5c5bb993e30 GIT binary patch literal 5366 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/map.png b/wp-content/plugins/wp-statistics/assets/images/map.png new file mode 100644 index 0000000000000000000000000000000000000000..b4482a76568cb701c3bb9cd34dc3a63e2f54fc18 GIT binary patch literal 514 zcmV+d0{#7oP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0002<P)t-sp`oE~ zZ*Thg`t$SiZ*Om*p`oS8c#5fHlDli0!EuneYWMf|Wuw$?s_^Oay_=hxm6er!eSLeL zT6xF)bh-BR_4RG1?(g#IzsaMi%zKQhW`4{2a<uetu<~!N@oS>&>h9!>xZ%9d$<N=! z>-E3w_Px8sq@SOk$KIHakB^Isi-(7YgM)*2cXxDjbe+R<l)P<(q+of(`-IN=dc5<K z((jhk?v}gSYOUC4sMe#y)nc5`(Cf}#lFYl%%3O`g$=b%-?8R%B#nR!!in71m?5?@X ztDUZ^uDhqu<)g*UqQBXZzS)qk&w{18ewMv%jH_psJGSNk0007XQchErmPq8*)c^nh zyh%hsR2b7$$i*6hKomgX>wx3H2nL8?cae5?x9|Tnj%@rmi?jFv!hryqC{Pn(NGcZB znkGrR^0<s*4Dy<^EEMvybEUFk5Jze*H&@lc=2EThQJg{4@6c%Iy3U|Ym7X$HvRnBk z%Qf1D4jm1%lm4RK%3z~KJ7Ci5v3{z_51hf+pe9&pjGwQ&fq#Hg79`S<f1gx>fh!1I zLGb4?uuE@3l7#s4I2)XjCyGf?^hY=ccrFkRAwE#(3;Zw@A*pb=eE<Le07*qoM6N<$ Ef@fA1cmMzZ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/marker.png b/wp-content/plugins/wp-statistics/assets/images/marker.png new file mode 100644 index 0000000000000000000000000000000000000000..576b902f3c4eff65c6c9e5ad808737da4d6bb80d GIT binary patch literal 1206 zcmV;n1WEgeP)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0006FP)t-s00000 z0000000jU7000000000000000)+KEBkh=f?0Q6{~0002nC~yD(0Pky}!W3G}9Algj zO81z*^LDE5RFpXd8qXhQ0002G5>@R|kpKVy-!FFNI)L?xw$mhQ*(q_o7Fpdbb-x*1 z;x>HnSC-Z%Zmkba>`{@?B5BAOUy=|-=|P9sCvf$BufY;n^mVD*EOX^Ng7%KN_Kdf` z5?9O|WU>=e(IIJW4>hM0P|F%&febtFR+dHyBGo2s@n4+PC2Z_KhT17{Fa#CmJc7j+ zUGPkh>`9H}F?w_iHh2#@-!69ADs#aSS@B4Y(jsZ>JA~FJZqOiT!W3KKF?qcZRVXGW z=s1DsHh<tSc-16q&K+dP8DR8cpYc?c@IZ<0K8Ni+h2=GU<uiTE8)Lr`Rx>g)FD@@8 zBqSjn9`}B*^=YH>SC{fpl<`fG@I{Q{GJD%BbJ!_x#THyFD=Z`-BKW4r`;)%)g|zsB zv-WbR^l+y1V4d?_n(;x3+$?q2Cve9YUNJ5&EGa4@AR+pp#rcf5^?$GSb*l7mr{+F{ zj!$XJ8e&;EMK(4!92*-M7Z~?|vGs4J>UO2!YMbI^n7?q5y>XE1OO4D~h}2Su=SGOr zJ$uGHb(30iwmfd8JZOScXNN{&o;hNbHeHJ_R)a87Z#+>wJU%@nE-NW2F(4-_93v+j zAWD4Spa1{>OmtFCQvd`E6&)BSA{G8HClLz@{`ld|zjI|?I4UI{2nPE2`1A7d@9yR0 z;Mvs3!ok41x3jUZr=**di-v=Netvs%a&Bj4S5;I^OFJbJ4*mY$UH||B3`s;mR5;6R z&Q+J2KmdkeA{%YiyIyy9cQ-ttB*4bgxV!th*4^EHW1)Kkfp^Yaeb1RQ06+cUv4Mf( zgJXbn`h(f5HlNpKrw;3-_RHFb<xr_u3YEh%8`q2X3;A#*G#e}gXG4`pWJV-zm7+H5 zTyQ!!9h|e;kXX-c;XbhgLBiHzAvcvP6s=*T8rv-dSEF{sW_|Q{VQFchr))#)&KEZX zV87FjL@F=;uCA=C{&^K)f%&KaY``3`sO@(k(9ZZXKcg`RX4%f)$6RLii4TE5#_uOd z@_p55b`u63xD&Tvj_NmdCx5ll=`ZX9aZtkp8p>tH9ADdhvX%BVeV;M2o2nTAURw!P zyls;$U(@ULzOlFna5KQ~2uQds*mpAB^e!)dvbYH_aX<jBK_C@(zy9d+d4If{k5gcx zehCn?6RLp(G5_TGv!^Z!tU>rDjSyVHlTZQ#L5jTzD2bz|fsXdjcs&VmCF?ki_Dytx zVIzvtG>+pmjiN?o7!Y-mF&feT$H;ij0pbjOiyjZdFdon1<X%9ko2kYmS0mLs3P^Sc zhD|0D48!MTGMN+@y}#Bjg<Re(NlrZAf`=4}b#nQ*1kv=uZ2d}Q7e~6s#o`qEhtzeo znkAeNgS%TyrhOwSm6`=|$zPmJHHLH}DkVDulHJ?ZuhXf!1hcR+7gd5;l%jL~2Vq>F UJ3Jn+`~Uy|07*qoM6N<$g3G!b-v9sr literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/qwant.png b/wp-content/plugins/wp-statistics/assets/images/qwant.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b6ca63701f36f4981cf01f819be8ad40e55573 GIT binary patch literal 723 zcmV;^0xbQBP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0004QP)t-s0001< z#qqG?$DQ2v`ua>glkMj9Wzs*I%T%K7;BEWOllJAB`Od!C=6VKttOuBy=Ji9*054eF zmH&<@{3s><{XiLnmF5u<|4TamE+o3)ME*A{&CWGi-ReBPgs|XBD4wABrbOYuH2#@F zB-O@6+1&iiMEs36GRyljndZ15f{E~;FqNG=+Ret-Nd99(GMAq)%l`gwK>bfcZsPCL zP^bUrNBzxM`teSq@~iyDSy<lIW~sXVeR+lA_E4X@?pj*>d~%EA@54Zn`*L{kjfsN9 z^Vnglj>^@|=y1tbpX&8^rS8+-bhg&(x9+~X1CH+nuc-XxApfZt|0)*d000EP{~Nyi z1E2Oe%H0%~$Reb?2cw@1lbZ>6m(D1U$svux6@g^sezXN~AGmP532uq!Y&OeO?<hyv z@jkfXHoxUH*XuOo<RjV0Bma{k@8lrq${_BfApb8N{k0tbWE}R)8ut_v_Y?{61OQmn zxUK*I08n&NPE!B~4-V3?oSQ{JKNJrL{r&y@`}_Iq>FDL-+S=LJ*VWY1($LJw#>T|M z!@$41y1KZxv$3qJrK6sjlZ}XfcXe}eZDn3sQBg@oIW{yN85aM>qUQhr0K`c|K~xyi zJ&e<mLs0+(C-&O5?Tu~QwvE3}om(gAx9O^BFo^!R+g!c_6v>a@-)%K(YkW2c(wlLw zee`lrZ<HSy^Bd@2h-8r2PAmC;0ODciTmpjoq`2V(<bh2wjagTH3gC8hi3MlAXJCKu zu@rB~E8sBrx)e{TYv41uC#9RcllTI3(}{`-Wjdw@JiDPSBbhACO8l4uz!aKQzb!7X z?!D1FBA{I_WitYR!}EsUK@dI^asqPVMbtEBHwc-G8FT&|A14^{T)hAQ002ovPDHLk FV1jruce4Nh literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/stars.png b/wp-content/plugins/wp-statistics/assets/images/stars.png new file mode 100644 index 0000000000000000000000000000000000000000..c44684464f3a07c7c96524957adc507e23fe6b76 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^AwVp^!3-q#*R1FSQWXI{A+A9B+iLYMr{un`R{OqM z{p&8}udB3xB41C+e?6`MWB}3ULrPx`D}vZ-)PL+%__0Rg|0<dPtF*r!2MK;X0#v5) z`H;ewgNk2Qt9@Og{&lrF(6ny{l)tZ1`@Tl~%O2(LYgNDPRRb#ia#rr!R+X>&l#Xi6 zJq5H|r6kBNnBmdi%M}^|fByV@cH`*5b-7N;oNS-p-#Kw?=Yp2z`n=c}4?F24?6-4) z>bpE$978NluRZH7)@;Dz8ptWGaK)iYKj_APzQv7mC$s*s|8Q})aPX~#zU%@`Sq;vs zZ!LTnyCO`GXYMPdaG5)OyL<nB6rA|>-;;QO6<5>dK2tCV`+qi@<3hxXN!6*mj8)h6 z^R+NZ8S%6<7q@W>{Nk|{klH<W^YViSW4P=)-swE$X+BY>bo+^A(gSX<+Q7rj(>Ejo PUB%$(>gTe~DWM4fIohuY literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/title-logo.png b/wp-content/plugins/wp-statistics/assets/images/title-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e0858d7e625489d18ef9717edf0ab500c027ea1e GIT binary patch literal 673 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoQ!3-oz7qkBdQs)DFLR^8g@bcGEtKR^T#Hu&K zE8g%dfpQ^&KvHt`8@^?)#aDsUz>(pmcR;o@k_bdf6s!zr6p#zl2vV~Kp$nvD%^RRm zKtZ6a!Df&la0Ijk$Yxsf3MhN}?H?dpbNyScMX&t!d{A8bChXt`&t32Nm%olb@-gMu zC!;Oz!}fo4+4X+s)1Q9(J|2Df3#k5xWbr<rmt0DM{DK*H7JYHzXZp3jr`q35P4ei> zw0Mrk=XdQ`J+Up+oaOF~tsCb~DbDgR*40*&7k+!C*49*6QtbGWDed{`iE%;RUY?q2 z3QiNx8#6F4+IqS;hG?A64SZhJY`_zeQ>Nf>i0ACRl>T>jU;UlGQtrdl4^QhNKFvKa ziO=iK%!Pi1);ZfBaCJ2r&irw021`bn)*+UYdpyiHC!|lWIedd_-yXFa(<1eyuKc@u zbXkYmUI$*eb(O(;7VsTTa5q_V+4U!v=nh7q=BI~rw@ef0t6c0GDm3@r{uTZ+K2-h_ z5<h!#X-Qz!g3T-C<m%_KJUp;dRo$yWJLO75<g|$Re|w&P6xmprQU1#8MmMu`LfXo6 zC!Wt=^2VcNGH1_Mnd7rJPbyewWtg9Fi@o#j@91O6W%Kvn+HfYpQ9Q`<U!A;by}oR8 zs|t(3qf2|6)uR7L929zc%FUElWyW&njWeg@EnpM&Uv%WgRTb{dhvLiwR^<tQIUV!) zg0|^Z{$HWmx#I3ea{P}k>0ikeZn1=Uu2S!xQpZ1xysc7dD?+ax1x5^mr>mdKI;Vst E0HifUjsO4v literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-bg_flat_0_aaaaaa_40x100.png b/wp-content/plugins/wp-statistics/assets/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..26a3e8c9aeff6e8606d38744d5300b642dfa49bc GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F$P6UUt$JVyq?iMILR?p^S|wQb`zMgg=jq}Y iqH#W1f^~5N8v_GV1Oww1!@C|p83s>RKbLh*2~7YhUKHN| literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-bg_flat_75_ffffff_40x100.png b/wp-content/plugins/wp-statistics/assets/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..a32f8c2a1876659e0a67a9e4185fa5903ce32f8f GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F$P6UUt$JVyq?iMILR|m<|G)f*^a&uB&(p;* iMB{w21nc4kHU<W!2nNP2hIc)HG7O%selF{r5}E){jTNZ? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_55_fbf9ee_1x400.png b/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..c5728ebcf6e7c81823942c00e3288adc638c5c27 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjkr~Jeoi<|zkYWq)332`X>;0eKpDjBg9s@-L pJzX3_G|neWusSoE^c-qzWH`M#uF-(IL<lI!;OXk;vd$@?2>>oj8V&#e literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_65_ffffff_1x400.png b/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd392aee0288a8073fc3929b2697fa740d1cfab GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjkr~Jeoi<|zkYWq)332`R@8AFb|E2$A$N)ve uJY5_^G|neWur_m>ICzwB2uZhoX=ixAn$);5e)%V$3I<PCKbLh*2~7a8+#Fc| literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_75_dadada_1x400.png b/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP<E-4iDYHYX${Ii)G?xY5!0{fvg8SC7yQ4u<2&oOc%dd<Zm-fx*+& K&t;ucLK6Ud-y?JY literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_75_e6e6e6_1x400.png b/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f8d0606c1c61953ad4ba375f4b19a38132b2eb GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjg&D}2TPFSjNbv{wgt)$Y_wM7zk1t-lc=hVl zn>TM1*nhSFrKCJv978nDCrhw4b89#(WR$RCP-NlgIn>y|z&e#T&?Wq*1yB`(r>mdK II;Vst05QuW7XSbN literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_95_fef1ec_1x400.png b/wp-content/plugins/wp-statistics/assets/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ccf988e17d5caa34e04f4e8bc56dc6c9449333 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJji5bWeGJE6!q<8{+LR|lS{q*n0w|^hs{QLZl zp&;@uP+Y>(#W6(Ve6j><Gq;JuLq>xZ#`Zu90|AC?cH>6ZofEGE)i8Lv`njxgN@xNA DAlo2u literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/wp-content/plugins/wp-statistics/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..78cf4b26a3f58631e2f469d7f73eaedf57115ddb GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!VDz0GPwr>DY*cj5Z80(&OLeZ<k6!?_wV1o zdGqGQix=<QxpVpQ<!jfjUA=nsr@z`)ph`tg7sn8e>&XHOghCpem<@awoY)O=5@s9- gU}#}X@GxdzSntZd(d5YvZlGcYPgg&ebxsLQ0A$)RSO5S3 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-icons_222222_256x240.png b/wp-content/plugins/wp-statistics/assets/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5acdd78fe00b986fd30a47988a6c734811446e GIT binary patch literal 3581 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 GkpBaqSyTc5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-icons_2e83ff_256x240.png b/wp-content/plugins/wp-statistics/assets/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..fa98dddc434d401063d524f39d2835f0038b764e GIT binary patch literal 3588 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 U$b@S_2fr0ysAozn)p3mdAI->eYXATM literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-icons_454545_256x240.png b/wp-content/plugins/wp-statistics/assets/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fe5a8776f569ceae168b02480e7f5c2e6ae499 GIT binary patch literal 3571 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 I%EFWKUvqD9-2eap literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-icons_888888_256x240.png b/wp-content/plugins/wp-statistics/assets/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..208206c02cfc70eb989022c2d4a1ae6b102b01ee GIT binary patch literal 3539 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/ui-icons_cd0a0a_256x240.png b/wp-content/plugins/wp-statistics/assets/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..0bddf4cfbe89c5669e5660988bbe9d94fc6813d2 GIT binary patch literal 3585 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 STt5A$0JHO#jb9q#$^Qe)xK|(m literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/unknown.png b/wp-content/plugins/wp-statistics/assets/images/unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..da7c86d5da5e9d01e81da7c9135a03656472d69e GIT binary patch literal 541 zcmV+&0^<FNP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0002zP)t-s0000m zd#C_ilrMXz09}+RcclPblrMXz09}+bc)82o?n{-*N07+!_xn(r&O(X9|NsBH-tV2z z>8r`)b+p@WqtHHqzBqopH+{TIjkz;@sSjtJ09};I=k&+q^Q6Y&Wu?<ml*w6<#z2L^ z(d_r3)a|*~>%Z0MwAJa3%;~Af<AJ{6o5SCjyxn@Z-IBxHjl9^Ax7Tm2*MF+hU!u}{ zv(S67&|9F;X`jw!pvPaA!bXY0Mvb&Zi?rqL_Q2!w+2-=R;qsiy=CjS^m&oLr!r+0q z-Fvp%e6rbarqX4Z%1DdEOpC(}nfi4A000SeQchC<*Uz1gB_FGwdUAQL0002oNkl<Z z7}G7w)pEly6a>&KS#~0snK?<r%uwd`|Gy^+oR^)QorMcgKv9GQ5$=TJ#B8<9$x*m< zv`Syvy<Yn%U7_o~&Mc=4=-=E**8=~aGOO_3RD)F;D?5qMn3{tFGZwD;=nc$i15o#U zy!@@o`dJOeuU!NY`*NJ3@E+7f>3p&XlFmlcG~O#+)0UkC@Nh26vd@^$<9mpqx%*HQ z#i!Kgk?)!y#kQ;K)G(;7|JbnvK*IjE4k!(3w;vMVaF~y_hktjJhZwF%yr0?jY#$T2 flL$@{OeEmW;|CX8dchjo00000NkvXXu0mjfiIg4C literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/veronalabs.svg b/wp-content/plugins/wp-statistics/assets/images/veronalabs.svg new file mode 100644 index 0000000..c5e4733 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/images/veronalabs.svg @@ -0,0 +1,19 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 562 135"> + <defs> + <style> + .cls-1 { fill:#2f2f2f; } + .cls-2 { fill:#00bdfe; } + </style> + </defs> + + <g> + <path class="cls-1" d="M179.69 129.5c-4.83 0-23.26.26-28.07-.06-9-.6-13.68-5.42-14-14.4q-.39-12.48 0-25c.26-9.06 5.29-14.24 14.34-14.67 7-.33 14-.32 21 0 9.63.41 14.51 5.95 14.61 16 .1 10.5-4.57 16.15-14.31 16.72-6 .35-12 0-18 .18-2.57.08-3.17-1-3-3.23a28.46 28.46 0 0 0 0-5c-.24-2.46.82-3.14 3.15-3.07 4.66.14 9.33 0 14 0 3.63 0 6.91-.54 7-5.13s-2.95-5.45-6.72-5.41c-4.83.05-9.66.07-14.5 0-4.29-.07-6.55 1.76-6.5 6.24.07 6.66 0 13.33 0 20 0 3.86 1.77 5.8 5.8 5.75 8.33-.1 16.67.21 25-.13M109 111.89l20.83-53.5c1.51-3.86 9.19-6.66 12.68-4.49 2 1.25.14 2.74-.29 3.84-7 17.77-14 35.48-21.1 53.21-2 5.09-4.33 10.08-6 15.29-1.09 3.45-3.26 3.59-6.1 3.49-2.67-.1-4.91.19-6.25-3.26q-13.42-34.56-27.4-68.91c-1.37-3.48-.37-3.85 2.76-3.87C86 53.64 86 53.53 89 61z"/> + <path class="cls-2" d="M536.24 129.62h-8.49c-7 0-9-2.78-7.21-9.55.6-2.27 2.2-1.65 3.54-1.66 6.83-.06 13.65-.08 20.48 0 3.62 0 6.9-.3 6.93-5s-3-5.34-6.74-5.25c-4.33.11-8.67.17-13-.05-9.76-.5-14.83-6.19-14.83-16.36s5.07-16 14.81-16.36c7.81-.3 15.65 0 23.47-.13 2.2 0 3.21.42 3.34 3 .45 8.23.57 8.22-7.59 8.22h-17c-2.88 0-5.27.87-5.6 4.37-.37 4 1.41 6 5.34 6.12 4.83.11 9.66-.06 14.48.14 9.47.39 14.28 5.63 14.44 15.45.18 10.78-4.26 16.27-13.94 16.89-4.14.26-8.32 0-12.48 0z"/> + <path class="cls-1" d="M270.65 102.14c0-7.83.09-15.67-.05-23.5 0-2.56.63-3.47 3.33-3.43 10.5.15 21-.09 31.5.13 9.88.21 15.07 5.46 15.21 15.31.17 11.83 0 23.67.13 35.5 0 2.89-.9 3.6-3.68 3.61-7.52 0-7.52.16-7.52-7.17v-29c0-5.79-1.26-7.06-7-7.13-5.33-.06-10.68.21-16-.09-3.66-.21-4.9.77-4.81 4.64.27 11.49-.19 23 .22 34.49.19 5.12-2.8 4.2-5.66 4.16s-6.05 1.16-5.78-4c.41-7.84.11-15.66.11-23.52zM190.57 108.12c0-5.65-.08-11.31 0-17 .2-10.35 5.4-15.55 15.74-15.88a14.84 14.84 0 0 1 2.49 0c1.9.26 4.93-1.06 5.49.8a22.24 22.24 0 0 1 .15 9.38c-.28 1.85-2.56.91-3.92.94-8.08.2-8.81.88-8.82 8.89 0 10-.13 20 .07 29.92.07 3.3-.54 4.69-4.26 4.56-7-.24-7 0-7-7.2q.06-7.18.06-14.41z"/> + <path class="cls-2" d="M43.77.57c-.53 1-.78 1.57-1.13 2.09-4.75 7.19-4.72 7.24.56 13.75a41 41 0 0 1 4 5.71c2.06 3.67 1.72 7.25-.74 10.74-3 4.24-7.64 7.37-8.13 13.33-.16 1.92-2.83.74-4.34.93-1.73.22-2.31-.84-2.27-2.44.08-3.54 1.79-6.23 4.12-8.76 7.58-8.2 7.59-8.27.76-17.18-3.47-4.52-5.22-8.78-2-14.53C36.82.2 39.27-.77 43.77.57z"/> + <path class="cls-2" d="M79.5 123a27.61 27.61 0 0 0-5.22-10.13c-2.57-3.28-4.87-6.85-7.81-9.72-9.69-9.45-11.21-20.61-11.24-34 0-2.8.25-4.32 3.42-4.07 3.65.29 6.41-1.16 6.23-5.27-.17-3.82-2.93-4.73-6.33-4.71q-18.49.09-37 0c-3.46 0-6.21 1-6.39 4.71-.2 4 2.57 5.59 6.25 5.29 3-.24 3.65 1.06 3.56 3.76-.17 5.32-.18 10.66 0 16a10.22 10.22 0 0 1-2.64 7.23c-5.48 6.7-10.77 13.55-16.13 20.35a27 27 0 0 0-6 13c-.94 6.51 1.77 9.8 8.37 9.83 10.49.05 21 0 31.48 0 10 0 20.12.11 30 .11S81.29 130 79.5 123zm-12.08-.09c-1.28 2.8-4.15 2.29-6.6 2.31h-42c-2.31 0-4.94.32-6.15-2.24s.4-4.8 2-6.79c5.53-7.08 10.93-14.28 16.71-21.14a15.05 15.05 0 0 0 3.84-11.35c-.31-5 .19-10-.15-15-.28-4.16 10.36-4.86 10.15-.14-.26 6 0 12-.11 18a9.94 9.94 0 0 0 2.39 6.83c5.91 7.41 11.71 14.92 17.56 22.38 1.66 2.13 3.67 4.23 2.36 7.16z"/> + <path class="cls-1" d="M266.71 89.92c-.38-8.93-5-14-13.86-14.5a208.27 208.27 0 0 0-21.95 0c-8.18.42-12.86 4.49-13.66 12.49a125.62 125.62 0 0 0 .21 30.34c.95 6.61 5.11 10.38 11.69 11a133.05 133.05 0 0 0 25.41 0c7.11-.68 11.49-5.26 12-12.4.33-4.63.17-9.14.17-13.8.05.02.17-8.81-.01-13.13zm-11.09 12.59V113c0 3.49-1.44 5.36-5 5.36h-17.49c-3.32 0-5-1.73-5-4.9q-.12-11 0-22c0-3.22 1.89-4.93 5-5 5.83-.1 11.66-.13 17.48 0 3.38.08 5.09 2 5 5.5s.01 7.04.01 10.55zM373.63 90.57c-.19-9.81-5.38-14.93-15.27-15.26-1 0-1.92 0-2.88-.06h-27.16a1.29 1.29 0 0 0-1.32 1.29v8.61a1.29 1.29 0 0 0 1.29 1.29h28c3.62 0 6.23 1.2 6.23 5.38v21.49c0 3.5-1.91 5.09-5.37 5.07-5.66 0-11.33-.06-17 0-3.59 0-5.25-1.88-5.23-5.21s2-5.07 5.43-5c5.16.07 10.33-.07 15.49 0 2.22 0 3.51-.41 3.3-3a37.28 37.28 0 0 1 0-5.49c.15-2.27-.94-2.83-3-2.79-6.33.13-12.67-.12-19 .23-8.62.47-13.3 6-13.52 15.39-.24 10.11 4.2 16.15 13.1 16.74a200.25 200.25 0 0 0 23 .12c9-.44 13.64-5.4 13.88-14.37.21-8.1.18-16.27.03-24.43z"/> + <rect class="cls-2" x="392.48" y="53.6" width="11.13" height="76.05" rx="2.69" ry="2.69"/> + <path class="cls-2" d="M512.63 89.63c-.23-8.38-4.86-13.48-13.17-14.14a129.71 129.71 0 0 0-19.46-.1l-.12 11.1c4.82-.27 11.1-.09 15.93-.05 3.8 0 5.88 1.76 5.83 5.8q-.12 10.25 0 20.49c0 4-1.9 5.73-5.83 5.66-4.5-.09-9 0-13.5 0-5.67 0-7.54-.44-8.12-3.8V55.8a2.44 2.44 0 0 0-2.44-2.44h-6.49a2.44 2.44 0 0 0-2.44 2.44v58.77c.45 9.89 5.36 14.64 15.41 14.94 7 .21 14 .23 21-.15 8.41-.45 13.14-5.32 13.41-13.76.24-8.6.22-17.32-.01-25.97zM457.62 90.33c-.2-9.34-5.19-14.47-14.52-15-1.34-.07-2.68-.1-4-.11h-25.78a1.55 1.55 0 0 0-1.55 1.55v8.09a1.55 1.55 0 0 0 1.55 1.55h26.92c4.26 0 6.47 1.81 6.36 6.34-.15 6.66-.07 13.33 0 20 0 3.64-1.55 5.64-5.36 5.61-5.66 0-11.33-.06-17 0-3.6 0-5.26-1.86-5.24-5.2s2-5.08 5.45-5c3.83.07 7.66 0 11.49 0 7.91 0 7.81 0 7.35-8-.13-2.36-.87-3.23-3.24-3.17-6.16.14-12.34-.1-18.49.19-8.89.42-13.7 6-13.88 15.59-.18 10.07 4.36 16.05 13.3 16.58 7.47.44 15 .41 22.47.11 9.22-.37 14-5.36 14.17-14.61q.28-12.27 0-24.52z"/> + </g> +</svg> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/icon-github.png b/wp-content/plugins/wp-statistics/assets/images/welcome/icon-github.png new file mode 100644 index 0000000000000000000000000000000000000000..1935f6e646b4604a2dd7cd962428ad0a18a1f5fb GIT binary patch literal 916 zcmV;F18e+=P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW zd<bNS00009a7bBm000XU000XU0RWnu7ytkRHc3Q5R9J=Wmb*)9SrmuAb7s8pfe=NF z5_|>XBaQgPBpMTKEbJ|8(usu#A|lAhM7&6_u@J>h{1Ze-Ku~N<VT71MjADGG5Hu=S z#K9Q%6vI83x#oDnojW#nRcjr7d;h+(_d5G*$>nnWA%vKgWm(7n8!tkLuaeX0{Oc3U zzeQ61M00=~`4i0n_yzELwgb#&GY*G?hK2@8N=gty5Rb<>K0ao5cbBuXv#jQmdV70? z7GZUDHKU`WG&eV^>Vm-_OG`_{Vlhnsnzq2@a<Q_q@}W6ETU#5etE)I1j{gS0>2xwZ zJ&jJM{cF|fbj-}mV7J?U48UkKGC4VkBuSi}p0cp8KsX%Es1Jogc)ebt(I}E6F*P+s zd3m`ifNB$tjEpF69twr<`~CR+ewvz^xVyU}9*+Z1T3Sj`QIP^yUtf>OWFkL5pW)$Q zJRVQ>0F{-MSgls2&dbYF^25W!G;J&vOKZB^+*~E^?(U|dqJrz|>vw%JZb45^Pg?zN zQ?+=jl_W{EAu|G4EEXldxw&CyXGb%@*47pe4-fCor5T{CtW3!-FE0^7({TZS5Q3|# zE2TCV4A}$Z<m9}YYmF~ozGxbs5#aIhQORp+YLFyJv$-tGR8>{IJC|mFi;D{-*X#Az zY&OjR4u^w+f&!(EMx)sS?C<ZV)#Kyin9b%7%^MpV85<i@o$GC6JO=`S0QdLz$g<4h z;v#Oho8{$Y_V)G&27~x~K3-m4fPeOQU|@jO)>b+@JJYu7_V!j4Ama)olS$Us*U{_s z3=Iw8@pwoi5_ENSVYk~A^KV+4&4$%#{jOKm*49X+QrWKnz~<&AcDtSS_I6Ar6K=Pg zy1F_dk;r%2^Ye3BT3XVc1p)#5e!rT9`p-xR!R+iTM@L6YOia+<-w!}>aq+v_w-FA9 znVXwaH3#^uwzl?9H9<0&WP5uXgTcVy;2?c{eLOuqad2>urt9eFz+$l=gkWQ1gZcS+ zo}Zt88~`AdN-51(SXf9T65-_JBu!&98c8G)c)ebHJ|C~IuOFI27FV*L6`y`9{skZd qFCVIYUL<89#8)8s8RkNW*}nlx10|#(Es6&K0000<MNUMnLSTYex1uQk literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/icon-instagram.png b/wp-content/plugins/wp-statistics/assets/images/welcome/icon-instagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e0a7d13c73d3038312694b61febded4c6b27b0c4 GIT binary patch literal 740 zcmV<A0vr8_P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW zd<bNS00009a7bBm000XU000XU0RWnu7ytkQhDk(0R9J=WmQP5NVI0Rl@1t{VrAs#} z(+Yw_a)UxI39>GMqNhNpL)|(=pxz^>$V117k~$UQF(O1X2}}bcOe1t9o|+n4`M0gD zz1w`=4vVFs@B410>)`kNdw$;!&+~nL&!ddDy01w^xhlZQc1p^mCPatww#^gUcJtp9 z36VQ<0AUfiGyjFK1CVQge4_$kwNp~tjMZ5IiekF4x-iSqXb&>}BYOa0wNu&Ng{|zE zDbr+l5t&d^YYS|+>ROn-a{(ETWd~4F+icoAz7oWDqX9GtfFknn+<HlIO%sc+pKQ8L zHv?8@g(-6YEgnmo188y;nNYF14(YDb4`Bvpo~;Z+xS1mU2|~UhP!t^1Uh)f_DPT<l zKoJ6AF&?s60R;N)6C8MuHVY0sq^$7@?&~j*iB#Z3fsH)7!?2g(9FS^+`Jry+hq_sf zhKTql)|msKX$1Q2kq9r4XDcM+8)oI*bEFzI1TfrzWaJxjPj3U@Jasm;?Q6}~K!kk5 zl-8e5*Y7=X#t<O0NvKH^!Q24uUjamCd^oDT8$&1phucfUKe=@PUj`pzKkTNg@ydD# zMR2gW6<c`~Uk4v$1d!1!2z_`(u)mW74VNi8UQft341mM!#a3QLp!Y7}={H*k01)W! z<ol=h>^pst()x1%MEsL{es(Eib8`S2oOgI?gz(geiT1{mR5t_a!YmfYes&-6m@r$f zJx5PsDRQCC&*;|a?!eM$53afvD%-nAgcdP>#S|<>E~0ZESsv@vuN-gl=ynwayC|+{ zGJMtklsZ4d@>p;Bf3TShGa%zJ-S_-&mGeL04#0l^AZ0Rl_A((fAv!=Na$&9^ZvF)D Wvg0W*`KfgP0000<MNUMnLSTZlsX=A{ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/icon-linkedin.png b/wp-content/plugins/wp-statistics/assets/images/welcome/icon-linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..2338655cb3c0731f0859acdd3dd942bd93b8d99c GIT binary patch literal 579 zcmV-J0=)f+P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW zd<bNS00009a7bBm000XU000XU0RWnu7ytkP<w-<AR9J=Wl|4vXQ5c4wdzwUJjbMz8 zii)8PC}L0>q(h-l97-owhtkodrDH*<Lm`ucvmh@13~nxJQ5-DA4zZ=yplzsH8*8J9 z#aL@3H}^US8W)d^S1*OU)8YJl@56V__Z_AA+3+i&>s<(u$2CgRG*uBwz+#3ufDpn0 zbP6-fGh`Jengfsn$N^jk!0&bQu(1ju6vF{5vJLm^E9mWb06^dPXZj}>4F!;9prpv2 zG0r#C94?T7iQpPF?jjs^D+6yrh65=6=Oen|QU5{G3{<)b@q66>L}GskhNIL~JGp!3 z764x&zxjKp^0c*%%2EgMM3S+&Z%lt&HwK`=<D#p*1%Rm!>jcA5nr@f!qOA#lh1D3f zRZeV{<LBh9fP1xNlob~+G_x!P$f^(M8JFhsxKPs?OFwovOr=leJ0ANe$g@ggNi!f* zJdxx{&m`Ns2b4Q+GW_xp4!ezf+YNl465cQWI`{mgJK^kNgzen}05*5_nGbKBtT`R> zvb{8bnm$`ZDOEcSF67~}0#FR>$XNjh0}1|*-|#9WEyGVMF}erm0N9N01Mn{NllWc| zfbY@7nf;@)UwIqa0AOJyCIvA4FEITIasW91p=p|GqJK&#LJ0sVGt70J*GDT0i8}od R!8rf`002ovPDHLkV1oWp@x1^5 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/icon-twitter.png b/wp-content/plugins/wp-statistics/assets/images/welcome/icon-twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..0119c9ccbc666326f1fea18ecdbbe6e22104c41c GIT binary patch literal 687 zcmV;g0#N;lP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW zd<bNS00009a7bBm000XU000XU0RWnu7ytkQQAtEWR9J=Wmdk4sQ51*2nIw%#rjvwX zgSKc(Vtr6?VXcC?=uQw36iUIBe}f=c6+vhzZbaNDZp8<pn=V8*>Lx8d2nb5F52>}W zZLB0sn>NX0#znNyHj}xjsae?H_MCfvALpF=kUDzbT-J3i%ChX_-%7)vN3N1NfE|Nw zxk}~*$vEVynJ+PH0Q~O&_KIv`lW1#J@w)7Mn3&_+&rIb2P9Lb}>H8VdnS9as7N3)A zT_GC$h0|;R4+p3C^gYe~=2~t%8z-+Dru$pA;8a^ZeVsvSH`$8DFP&^!G6#@=u0sLN zAK%XC^un^(ngGC{wNc^L*<I}0rYwsz_?_(D>M6R)RU>nFhnHBQbUQ2oB4cwvq14yU zw9wZX;^<Bv9;Xej+q{GERE`UeM$q!+<p+To=#RuX7*wfK900TjRoa6p1~9vznXXGM zYL@08P=W3fO*rkV(<H#_Dp7&itfjdSz^iBi#bf|WDH=;x2H<XZlE_%9Y=H1^vN8Z! zP3OVyb1kZ9Y@VUX3RM7LK9eUDa0vt4c^MPV6$1D;G0&AJqr_7=%iR9RkFr`O{1}CY zlAOEunXfa8ra1${Np3zL7d8ird!SBn5Uh8xS*@Y1S>;HJ7n>}t$}@n+ucx{FVxr`| zUpBzZT#nX8g=2f`*wg4?rFBNr85l}(e{f28=vGSV=zS-I>~q@*1>E>OcCwm5Je6f+ zYJrTVugUn2g#QDHw8q;nvwvk)OjZ98Z2)Wl$bk8;V!fr4lQHN)$NG|A2XiE@{sLFp VzdjPb?(F~o002ovPDHLkV1jQkJD>mn literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/coupon-code.png b/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/coupon-code.png new file mode 100644 index 0000000000000000000000000000000000000000..1bfc26b156e740b3cdc3183080286fea06391131 GIT binary patch literal 14212 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 U`?Ul(T?bK7)KDmwGym{^0h!H=y8r+H literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-channels.png b/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-channels.png new file mode 100644 index 0000000000000000000000000000000000000000..4690a535ec883b20eb4e97bbfb8d4547190af707 GIT binary patch literal 44594 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%0Axb-sJy9s4SC=2EqH(p>e78Z*6$uLsbgtF!l#+Tj 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 WJ9e&}TQ4Gj4?_dv!^QfvkpBR9x|qNK literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-chatbox.gif b/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-chatbox.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7352cf924de060b38b6ca097e3ff4a000969890 GIT binary patch literal 52827 zcmaI7bwE?^-~Yccwvh@d4KhNcI|nErAgKr<NT+lNNQ0xhMt66OhB3Ok8zls3K~N;! zkN4;Pe(w7hpZj<I*v`53dR=kO^IT_pUXQ(0lou5<)&?#CzkdeYet|~D#4ar@$tE5A zJx@40JFBj(-`w1E`Q-M&!~gGz7M{WJ?Vpb8>+9PF;Pm0|{(-@Yg@d@-ljBmei+Et6 z9!~LlMI{(Z<J8K58)&~HdU*Z#wc1-_Tj#Qco!VfF5mPlGe9EKq>w(4fi8!1VAMmX% zs(b4suc#FJckXK?==;I%Piil<^~{hWYzJ}d=U>`t7q)+2-`;eHoiRe}q~OVESw-_Z z%}JiED?2{c`eRkRt!qcv+tZ$su%d;7>FJr<^OKvSuMI0ZU2`|c?p&e4t6z_u%T{(| zWEJS`%ZpYH|NQyWIC_hY5cS{x>)kb4-gCNha8Q7`8R;=<n_n}@j6K--zO%EVFCgG# zptnC(f@qAD5)j^A?5`Wzs>;Z!n7>+`m^?l{E?YUMS~<Y}xma6UX>DygI5?<XIjCJb zZd^HT{O9$caqX_;xN7CNcHy9M{p8@_F6Fp(?O^}-XTi$1<AdX~gT0I6AK~HQKY#wj z{%d2v626jqtMNiwO^%<N7X$<V0Cz>&s%kJ<V;AGQcZuijj>e`o<}NT3a|<hbNyg*W z4n~-jnIxl@kSedL;|p_3D+Ny{a}Cc|Z%sXIOvTI?pFe|1xWnD;9PP|qjA8C}w)W0& zcS%NLGY1oM_}%_L#XO9#e}%Z%NHR+Q^8xIiHeWb6nZty*g}F@m1o>eiV%&Vfykh)< zoG^Y~J`o;X5gtAPE?z!3uP|Id4EBFE#=F*>%s#-?W##`*TX#p2jFv7gj&L3xH#awK zHvw)3Ckq}vF)=Y7UVa{aey+O+E@uyW7h`uWduOJ9*C1=|Z0cm?=wjty5BsM^V-tr@ zE|QFQJ^imC*g5`pwf4^3{~8Xrse>JlyRjn=A2;tmL;821s_OrLsGZ$^M?1TyoBvOL z|6|3@Z#^8%dDP9F9X>gkn%{*p{nL~q{DqUbv5SM#TL%Z*f1gD)O9vMRXG;f1*oznc zoHbDxtCp3$nS+}%+rM&DRpE;E&MwCGrsj&Wl8kq?a9dfK!3Fu`WCR5TWJHDJ1^M{o z#Kc4d<-~ZU`CjnJy$}%P<@<N8tb^$%J9B%Nf9IP0PwtEVHTNGm*g4*{ENkv$<!Wvw z@8n<y``57HR{win#QxX%{!gyi|K1nr|23EAt}{IUT-^WL#r}8Eor3<^{cq{s9sIZW z&F$|L?{p_^AolO=&Gpsg#h>%vzs^p7o*e%;Iy~6l+uixTz4dK#V}0%Gm(`W!rNxE$ zx!IZNsmY1)vC)y?p}~RvzTTehuFj73HcTtJrMaoGp}wxR231{ESy5hAT2fq8SdgEW zo0FZDnUS8Bnv$H9m=KSQi;annii`*k3k?Yl3Jmb~Lwxr2@%HlcaCdY4<l^k~(b2)) z&eq1-%F^P4xtXbnv5}#HzMihmdu^?Enr}7K->AKQrK+N=q^R&xUQYIfjI`AAXOa@) za4}I4VIe^Qem-6vZZ1v^b~e_hEKiu37#U#nkLhS>sHrF^$jKf(d_YQa{~j?BApt%f z6avNt;oMCS441gzB*13?=iOWZ_-7giK(PoP|A4@t;E>R;@QBE$=$P0zWPCzmQgTXa zT6#uiR(4KqUVcGgQE^FWS$RceRW+)nwywURv8lNQ-HK^z@96C6?&<Bjo7{(nM@GlS zCnl$+XJ+T-7Z#V6S607#U0dJS{I<3IeP?%X|KRZG$MMO})3aZ{&;MLpUR~eZ{>1`7 z1Y06SIb8vG583qwQMo-KBuq*f3N?9s5tIUt3yNy;2V!6^!f6$!P3n=X8fAJzwcBzQ zc=z!DGId2`>7vg2t3!3g6WLM$1awOEB~$tGU_8-y2t!?fHqqkxi-xkfa_u_nFT)Mx z3)MzF;dIK46-#xNm$*{EUMv0pD=aEULAj~wORM|Y{udfyDcyi!0%5tHCe%hx=tGWs zHX!90|G{;WRCIIg_DG6=8yNZh;})M)K?Z(KOa0zV$x$9YadV0^n>KFjE7jJ<qZLad zFIQsf#>17)07An^NQCJi=G$<FB&OwT$0CBB-c*G*X?wEH=5-X}a{h<*6m2IXSd8xg zif~^WZ}&05#Y6W`uxDW|jd$l-*CsknyeqLmA_g9_PuwznZ=aOF^iRymau84wZ8}S6 zRnvM9rRQ%LJ&nN=gTO!d@!3ICNtPy>#OiaoAy9<&y2qoUmz!aNCZcQMoM_QpC%pMx z(=g(3%ejyT)U4lP6qZv=uv)Ugl%t`F@=I$`qVMLmA};zC^Aq$wP{6!pPCsr(let=b zcmC<o#O%XGj?WZhoW*8g#o=E%mm+U3wv$z)+44Qs4vtThkOVf`%?&<fvq)t3PtH$& z-<_(R$8Mb~N0<arEX~Vs3ff6GCr@I<(V6YUArx}?*i}~H+T}-X-M6%tl`T(QW)O_j zc~PeC5*Jk6W{|TFW_Wa9T~WuPtXauu&1Unyz$z}VRPlzr0@YPJY>ijmm_uG4%9u7^ zq(xW8X)^k3kFyGIHa3VHo}*(|-80=<R@PIM7L;$&wNu?eSMd9(CJ;91-!$Q0Zi^16 zO4llVk3t~s=?q?%W7{r+*KNp`4RYkVahqa$2bp6=dEP6!NHIbc9gR{l>-cX7b6v@7 z*$Clkqd3r318;}MiVqC+jr0*uY7J;h^tf>pGcvRQwDkZdB>%OHfIe_*bfXu(!0Ujz zwCAXpd{M3QOAA=Pe)=u}8Nu1YR;}eYQ<ti%nP>kw!uFk-@|fNi4O8t;JX-mhyimAW zqH`bZMWn+bUA$`J5`OuZFunE5$|fB=M-rh9MK3MXAXJ0Q5lZVKg5Cixj6wIa;}@kz zxJv$_cN(DW>+6_D(d2z$JG93O7Y53QKUX0~Kei}D$C|b`kiu>cpy?9ngNk*WLYi#J z5%440##JY*o65_mHqGU7x+cwnFcnGny*gUQWX$nq>wD~XiJ#;1<ezUE^%cH?YbWo- zk0P9S@E-cNL2BCl-uu~adaFc2;umaDJ}Me?GifZ+fn%!XR{6TuNR*hr9M>DhI(>pq z3)xqDo4%%ODfdWD{KC4PT1bF&2b%kO29L@tdeN|zRW1JgG1X5kj12UzLQ5W=8v9T_ zVwg!F@7AUoc6yC#oR{M+!t!eBll&Hv&>7fM;}~TV#zaPl%z0r#$Lm4OL0<l<fkV@( zBJjN!^*fmh9^AJlVGY*{pk!8Ae{<fjbw8c`zn|*a&iNt_<b_2$o}uBBd}t)beI2 z3c6TFVLvbXn*zR24sfp@zNKZFU#dqoHY5^yWks0pXR(fGdvZj0No<i?^wjD+LwUEa z8ZeW->+0B>Li%;9*D*igr9l#WOyq~PH~*I30`qzthikD1Z6_+#9;aw;Y--9h39`L% z3hRz!%vafMdZ9j@_y)bj#gCsv<vFd+u0u;#86=^uBjDk3lYRDesL6!d$xgmvrAuL^ z&B@vksac^5wa4!}CsXH2Gu;JKrM)V960h=7hLCy##8Zw}ZBn9?h}s;Swu$C9xgqLe zKf{|SuP1uXsi6!-BV=)1q^-8zK4mN%5WG*G$j*V;6l>iT84a5(1y#mL*h#;x222<V zU`L-)zwXm?V~8od#dKD^>#JnO!?#u%-5xA+dv&OJ-?-UjR}EiS{Orpw-JdqQ9BVsL z`=!Tu3Tf6{Wy^^wg>P)49z52fNM}z<nvOP6-3D$8Ja4BWa`R*wla)+nnGvh>@hq=k z5LkehcXGQWX{P53N9bJn2)^d5Cr~^}6}>lhQV?-e20ZSo%(WuY#I{Olo%TOlNL2RB zOOM+<4_%dfa9A<jy5c;+tgS<m#PLX=@Ttv6$jW!lCKr`bWoWZ1xk8fe8%c_&GVzE5 z`yi9*(=C>u;)&HX_QL1iC<g@J35yqLwXv8~bFP*ruGmM}guh@?+OuSbA(L%+wk@y# zEa5s4z9>1aYpi13vc6zHVIuC$hVKg%DU;hIFjc-|5YOGWX){WWuVcl3cXewF<FqZy z2x<cQJj*<Tr1~ZpeuP*4(oqZg#TnL<YA5E%ewDYcC0X|q_*wg<HGfQnRDVRQsk_MY zdmbEIzI_qZ{yj-u2b!S~S{R~c3D45-VfG_!p>zt}x<|H|hNZRu*R*Z3pd~U>7D{?F zZ#5^z`eTxk^Te)@pkbF-bKm|39pQEhT$wixa(kMOD<lw-*{4~xzfHW+hhud#j477? z*t@PbCW3xs=cfC^CHq<=$SG%j+C01J$wj3kkLJt>du?Sj5!VFivX)9am-jCAcaMf9 z(fIQ%1~aD08eQi?pEk_4^vfjp-X|l!rK<32v?Sa<;@old-IqW7X;wy1-Ipk#jMram zKX@UPpk}Q+0UH@XqR7)I2Ed`{n%lDmqlp+!jm&FnEv=cFXm2iE*j_00&*Qilmr9$a zR_toH6d~HZO{sf)y|3YEi2K@GmV*vm_^QeG{bJ{{bdY|MaLRqnxDdF`xZ>cOjMEIO zHrL|THR4k9ufyZCu}p35?`qbMGzKOg7j{IEy|i%#BNdLK$B7k196$UFf9J5C`=NNo zIr_)+qhsgMKsy(c7lgn?llnowKgO14y4%x5S1}V;eVg2*S=4rgZY<hXSn2CGJ`#Vv zudIqS<$?&l%FjQnM@p%B3fX<Ul4$s@`ePqMF|uFr=*lJ2GO@YT?gS>$hHIrI8L%L@ zO9Dn0ZufqC=Z+aMViJtnkmGCRp+43)p8E`1Gp_{wjVP-o*r@bfV5XL+WZe{cV|f2? zxq9>5ZN`85Q@;QUlf8#pGHs*3VMVlk;q;V{Ns*78_bd&;ZDh>uRRr7B(!|hJS*Pzg zPb}_5)f;WrbM{GjDUwFR!nd3sf`r92bvR^|S&?c(1ClV@&-lOLO!?khu5Vj=#g@Oj zUnCP;S&+3cauo*i(84&^%-u*D)g@eB!s;APUwq`6QLcI5XGkHF`wjbUS>V~sH!+b! z*~5N~a|;&wPyz-^1#t}!+|i#}fK&0r_STfg>=Qy?iadV?hnQLap{BU!*;8I;-gRSM z?Gnbb{P#xgWDt$_c|tC7?gTGcEompg%TJ{iO(bT|H33>d=l~INM(!F{y&8yUs-}(W z!_b!R?k3%?``s#T8&a(2+I=&DGcE|tke8wEjCPg;4kbYg%u+^7VfOPJv$!(Jl-l8o zypb1z%4RQP@}0WXxq3lbg_hy5BDTnd(0l=<Uov)1%$(J=B6Sx`soDhTgCYeV-9J)> zS9J&Jl1Dz_k1SA&w5?+Us)vs6zG+x=Z4zaB;U0AjjLL^aeZ9b%ud@<tibiw1i_Ue7 z-o-Q8$0ImgjNUno&L)XD-L)uQv?_IvxlwS*_#l)uA9Je^lXYSOGy+%xfCMeEL`$*v zE@Mfk;vR^_J$fHU?h!|s8b{p{M@toFDMe)}9h)g-1Oxzm)}gGaNcI*a=Ms|p63I&y z&o34)_PBVIH$9?lj|><DpYAZHxH{}F^^ii(%_NKi;kP-;m~SxR8V2TG;J09s;n z{cwoa6SPwkby^bjS`wv5$faBG1I<C;$;1yHNtUTe){2ydq)BN~+EO`5PGZR}?~_G_ zaAA9F>WZSkQZix3L|3X5f3XxN{6vF|q*OIcOR1E|C2UIcP=fYklGl>BPb%5R%aoMV z)HJGicaM~KtLKSfWEQB@g7<0ZsmX4qsXUL;wD{7BF4ItKDJ4TJOU<D#i^-~}($OvH z7Gmin>Mo6YuJ7a0G4C__hZ5RbtcD+DtXPuudSpyeWs0U|#6UAj++ozG8PhG9t9wY{ z^{1g>_?H_mx87$FZoR~r%-nCuV!wp@yv_181C%Ms>mUK=9@!UG*>tg4(^i0~{7lv% zTot2uZ8ao&7zC)6AZ`VKoFGXM0OH{+UlPFO`&@ijc7sReo^kGFOZLj%%gyd=PAd@5 zD4y7e_vs!~8zzJ(jsLlUd>Rf&9?E(&ockvXn>$|`12xJ2vzI#^1`zH<600RZ9U)rp z0klp~*7pD$1ei?>^1>6q-jXK`&*f4}@B!e;ha-K|l6*UH<%V#5CIL9SIc!UGzG?uK z$$0gBD0C7C0i^8Z=B&KWmk7_t4kk-<=U=hqP2v}D;sc8{#KA@Y!fmM3iJiJY4!#ku zHwp>q1nzYKBk+OR+TvF0P;a$D%SoUwtVDUXh&8Ne?Gnyq1X4kWagh|K2)rR>&vdoU zcSmPX6X1HM0iIE3!aP}7PfEE1z*17B#GMRa7?=xz;{yZGO_oDU0k6uCeAM*BMis)7 zP>URX-&jD#GEVz2RBAHM7lAEe?F6#Iz^s!vq&UUIj#W5nfJ2?)CU`mQ37{#h{4=|b zv~{WaI`rvsxyA<6auP>}9Y8w`z*o!TVgo>#3V{cOJMfAX0u&djnnSS+4}s*MPNo9@ zeNh#_{TdW?^;wwW@1f#z&kO__ndFJQh3Ce2R{eECsUQGt`$)@uD63-)>r$yHs#JWW zGSj+<U9l`?AKHIaNi%{=hf29gtDT}Mr)979P_On4uhlF=a;((1DN*|xm6)Q6q&jN^ zuaP1)06L>0*7efmaAYt6if+A-Jrxjhl}X8gB1YBI(c~&!mrdd~kh3?$y=<Tl2M~)v z-mlcIc|a{3u@%IQfMV(@p%tV^Ycp#nZUjw%SJGqc-9|^RBIoitDzBypD-fL{M8&Zx zZ@GyvJr|D7WzlWuFD-*Q^OD4tuo2{D?{hs6f8*_lG(A9C$030utxroUOx<fN5dfKV zWS2MvD;t>Zq%!aT>J}T!)mhIlQjD;P@aM=>Q3F^Lw1X!B#DFH7aAd9@(iDKp=-JNA zmcyP3(J4c!zyPT_N!u&PlNErBc)Qhdo&^Axji7p2y!Px7)2}P^19T^@cQHgo^T|m5 z(~-_c73sdZxhpHK_?%rR-LA)aX%rdRRHGSRuDe)>y35n^HCpnUmb;$bbVpKkUx;-# z=wQ2fy?gjFx;>Oqy~;X8Z+ZgQdPJ@|1IW6B;ayT0y;f|!=ZZa*Hs#MMdet$#aFz1c z-sSk~-5Qv_S3|uNO1<;uy|m%IdV2lJdws7k-BlySI=21xn0QN~{-Y=T<VyVx-UFgk z0~O`{YNK85Hv{se1MC&WoQDGl??Dl^L2;rqN!!8Dn?e54!FQtrzX@>HINDP(hSD%Y z8LLBCH$yqJ!+8?J1$x6p-oqss!ztc(cSj#=Zs27`)|U84z1~Qp_egWb2pThjSsiJ= z8R?`Q?Uoqr)f?R!sYc!mYp?dlu8s~#G;pnsP9GvCXq(?ij4ev!RuPTaW{iE+!;Y<b zjeR{FU9laDmKfjC>-16?w4oi@l^9#Eh#I*WpQfE)rXBl5G<2@lvzamR88e}^I`P+g z0H8W_Au);2n>-{M5gs1Jlk6iH>j@gozjr&SL^~DfO-FM$P98Nt*_IZiGDUYZwJl*w zBiXN`*Y0mr^dlm{1df;K75_IKX}X+vIg)U5UFgFL;j7G|SIuVlGRb4rc;eUeH7%jX zGmFl#f$ja><EDx`6=N9zP>V{$)t!?M!;#+4`Wc7*ayi3XPWx1UKu3aXZKV_n%cm6Y z1S7yQHneO@0DIy}JOo61Z03ez0YreidxarD7pYO_m>x8L#9z3vF8W4@T|_9ht02Hy zEgj}9MOJD_svA%o1i)u~k!^_zxD3!QL#j^}ZRr9)wjgPAy^13MT!&f3pNG=Un%yFc zD%-Dzpyr+y5%{=&yKBS<3!IL41U&Nu_MuiNMLb@r;_&2?shl>hG6FBav+GRDt2nD+ zsJap0WFzhV6FYGVh#z0Hie%AC3``deGwMprN--e%h><=t5@l8MxztD?OwoKntz zQrRVpL0T#20R`%wU6w2;L0Ngx$97G^QcxQpYS^m?2%^XFZhLACSRccMoRmy@0oFVK z>jZTwuo55MI!i>3FE3<36`f~YYQYPka|E14fi0BDRMfD%rU)FM)FOW;l=URXnz{|h z0YH>iXvcnI%|VgC>g&e7ZVWe7X0H8N9pg@|Bl6sOs)Sl6Z8PO1E1>4ZsR&M8u7{{S z^Z|S|w*twQV!Y&~NsPX8z6UHEK<lFFgrzop5CHYg@7=ofcrXC#WVyD~oQZ#3n-Zl( zPF-MJ<D=djypcvZuMPCrnsnLLr>M1kiNOb456=!WRrI&hJs~(o02e?3bUiyM0t~#) zfsk}UVD(<l3h~swZ+q4RJ3%a@HiSF3@~M+Qwv#hw-HmN0ju7QJzSCA#AvRuP`)c>? zmj)X@Kz%f%VSJV%8Y%pDmpyeWd1zr`f9BOVc0%nd5=*_{6%D}$;4aeb+tx@8>$FaZ zlS%QCMSP(nvIdX<zCCRr2cv5I32-G^*Eu|zXwyrW4A5Z&Kr7H8w5;x1drgXSUViyk zJVyYn5y+naxKI|$^&?w@p!nMUh)pq%js{@qSk?D8+0d@mYINLGKi8EAxHwWhzT99P zmu0B<Q`iv_yp&ViTKZ_Du}C!!G70^7Rf>_^wI)rr<XvTB%YLm$M%!8iw+DdLTG`nE zDhCy66FJ0yBUy)~7Gr>OSA8(m$?r_0A=PevRV^(CS&{zQv#`1Tp<YM!0g(Ivxy}?* zRF6~kX>$81UHBi5`#oN-|4@GTLq>qT@cY~y&@t}Qu@=VDSIODsojr9FIUQrzANRR8 z{{A#|=3esizSQUa>Gx+Ja?NJnzhZrT!5!Qg{rO6i_Ue<wm9hR6ZTLl1M<;6Hv=+OZ z`FXMl+tad^+j_qXHFnyFy*{A2xe)sk`TEi~J9{AJ=1b{~B>YBB?<R!jwln)`Y~nJ7 zdvf`>Yxa5Xm)BQ`hSwXPd%ne#&(rste7V|t-E}Z=ll1D6DC+Oe&)sKhf1Qc&thAvx z_;-eFFddHXe==-iyu%9UAW*2fsj1KZ7`D~r{!pocw#eLn8@BmvAw?x+*ovk*$9B3U zAZU1`BY{{2{Qq@qkBO6q7Dr3VXYL%^xz@$dWoEuT4Mf;~a%?HuhVo@!r%GB}%Y;|V z9WQs_0vUvM>wcz;B=edMk8V|}4;aw@jJk7d>8s;e*=jNr|8Z<P3F;$V>Sjy5Cft>_ zMdXu*JlW`kSP}Jij;&#nlSHb({%qZpHx4noBIjb0<F^OS9HmxywU%cx94*2&OlT(% z;bTnH0ds5U$-cgXGM8G1FW_O8iddD|8?$VGvr#IoIqBzEt~8gH+PxWBWf2*SO5ON) zCS7)51$6`VXr;%x?%mch=V4zhc1oCNNDA={NaQGlfHa-$6od(ktsee%SkJzdjOJzo z&<k1;!B86m5Rcv6+=HTfzu`OUk3-yEZs6hg<FMM&N`ZRcP@g~rogm~ECp!v2k{kv( zPa^V$EX%f*0ZMPtAqqvnFCl*jj!F&!K!4{+W&rSLLjbtjK9nZT+9yCpoLeE*Z_4-Q zALa&nzR?a3iggdcAz+x^*`V~L?0g9VW;`_r!6OO7q2JE@v!yQZj!Gr!@t0609r)M2 zZ%o3l6D9(ZK~n=Jl9M<{Bo1S2e+)H54G;>UBw-<c_uZq=CH620VWOKgXKrE$_cvy? zxWf8D=+$8-BS8D^QcHkoq}Ees@BPwJ7VXUf^Bi^JG-5Z34|pGft<L=rKx)QG1Thu& zGJw9~3W!Va*1oL#NhVw~(;+9Cxr{NW%Jp%|j@@pE&+{y8g9<eqhN6(MBkQ9lZC`&| zp}Id%P`@jX!I6E3bK?&VZ~RMX+7e|143xkr@jAjJnx!u`t_BMpX7^1W@Ti|N`a85= z9g6Gdrv5E=w8pQ7%y#0wHg)VE)KW3+@x8#e?0vg;TKSSG(B|hLMGSbOnl?hPW{|l_ zf})@LMaC%?2h-u{7*Dz_)35-=A(tBTWvzOZC`Fs1G~8mydEx<9h1|?{*6i18IuSOr zzF1ixGifGInyx{eIFRdn(Ja~Se95x7@_gC0>F9jLae%976-0UznvFkL(ZDH0(fDT# z;ZU0J#QlKIox?|?QdEV{!bfyXFQD~ei(BaH*KhUAuP(oLX}42-kM$yQ8O%t&7r8U< z_ak-pwQ0oE0cwEz`mlcCFZxSLrgzIe%ChQ#^a(D{%}FnX!_CjGhq9tx*=Ik(k9CO6 z;oIu;{oecIFV;eT&1j6@x}Zglz3G=1=6$AsXW!k=;|2y!FW(kpi#I}&WB6`FMmm08 zoPT@X^7j{^9`>eK6i^l82CAU=f!E9i`eE<AWn&ohwU|tBaa~kcN{fjI!HAcFg}yU4 zF$$n%eRf_`W%KA)59Ngs2pH*yZ^1hu|85(4e~wMX>4CAQLZ~FJlH<!q-ef)qBaon! z6aXkiQE5#Hc$pzB3zxlr-*3C;q0%c$eDR(*1zcQ^%Q}E$aPooQuTVC*pJEz;>u0{Z zPY66G?+?|GC43d-co#QCN~5z*g&!|3BtIGcqwYQPq!j(L9K3gqZ}aHVLtkngk&5`d zHN~N40I*8#DJphrn)MG3%IlrP#Re|@E-67PT0apZMs&6!5W#@T4{^}|8K@xM@QmyO z|00*bN7{I}oOl47kG6p+){DTi6KNICib6g6q36O6*n@nH{J~=Z{)ikuQmj7aZDc|i z^@lVPL8<&jCghN+U^u_GBxj+(%O`_Q>?*z<;yG}jSeGk$#_($eqo}UMgx5Gn_Sx!F zg6qB4Ho!+NEu1A)_rhCFe@o~7l1ckLsi+iK6|bF8@>rJUqU~AKbj;^RyJSJ~u`Q{; z3RqQ3m9&PZ<LAd%=zr&*(@qh`F29Wm2w;<whR;Nyi9V6p?aEzl&-4Kki(e4yyoq`z z>Y<a6C8f7Nn|9UtL8c)}-P~H`N$T4YAtTTOymIXUrTN;l-xZds<vI()^Nr}=m5x#6 zdOOtfJiOAy;^q4y4FYP43dTSLafK07d9j=N92KfsVL~yo*bhIiiH*Wmn1MO`9_x*1 zdComGd`S?-s&ZbJLtJV3Qh9k=#uf0PxuP+HeYX6W^Mfp*N?Qx%mE~pOdJyVR_Dn}+ z%(o&78G2+FqP)6Eom^j{dDNzT-JDABr+G4}%B8p!vC7^gG+Jq>#r9Kg-}6uFdY_%O zTY3E`#HG%U$liTn<m);6JbJ4y%_EzA`j>oO>yNQ&-;VUvi*rT<!uf|URK;koyNO%3 zZ`;*acYR7}9mwd8zy*jSSnwLV=j?Dug*p9z0AT`ha!yhc<v^f<QIF~*FKN-F(d0Qr z*Hhrh8t&@mgi_~yjaaFNH@q7(UX&<}lO7!V)j&4cE*K&a7=s0QeS-kz@3XwBL28U{ zQY)W#u3v{l{*gE3c=-;u`-wkZ8KF4~;bp%cT_;j*9m<HCgy&0Hm-ZP0V3g<_$@ck} zR8wPK`H5;GTE7djduU9bo;vzGNeU!EYy4EJ2`FpS9lvL5A!Yc!iFe+~72Is}TW7fj z6gxnW7Q4$2A|Dem=ptA={0<(J!eQL~Nx%#P$#!^vv!5Ng3ykfkLYrs)jQuv{z~DUB zrW^}-=N$5h_5j@LNkF6B331}w0;izI-N;={YYwL<uRZ%ae^fNCt!$VXdJ#0p3mb`$ z9La@vj-widj5s8J^zFB-q-8nS91yM=Ezr~`7olPk>9C7r&F{Yu@?PLj^BR+ucn;3B z3zItD9``zlyIuY`^7u@n`C1Eudc)g@>rZ<GK5QPe<*uiH+-XlW*x93ek3V8cVyDv{ zu}Lp-*v9wO#z#bCHKx;H{597Hl=?Xkf~^TF?)>F+f2oHh_$rWs7Yq;iv<n~jm6bSU zQFKdnU}SMTeteE{aHiUgCh=Tcc=jbC-lv#f&WmYw{2Wc=c6cv9TuXoCRm{rm@xUjq zuO8{IuJW4JHX)eJh=@OtPZrB=el&MbyuMr}`1;dRi+7E0czxK*pfRerte<$|W5w0& zS&3WC{7?O_Q^(gQ$dFzN_19h$$DRi%pKd2aUe79GN73h<^ul{Aq=?#Uy;h8tH8TM$ zNIbIZa>B5WJ>$O5p6>Ij`RZrq`PH|FhS;kw(C2>!)^1NUu-7xMJFYtJ-|lCBzTHjs zz4-PVd$F>1y}8zYvlkn(Vz~R$OVhJDQBzdI`>U&WMv}L|3j_g^XV4!{oJBXHMgEs$ zZUmx!BHs|w4PJ2;o|K~e)S+)FF8r7u`japEffW47O#Qt={2!F~6I*(tL%g{MJ$RdW zIZHf*7QI9$1E8V-_{{;s3jt^9eq4B7j}-#tSOe}4`YELNE4g#Ymjt}N@PE_Hp@HY2 zX&Inp$@QKRu`wHTW`dwv2o!7%l3)!+BLj3Ov3`0b!D-#WMuV>%o7oI^b&a({(q)1x zErO*(gI|<{2snk%B!~E?JoO&@^kK)s$t`p*F0^GQq(j(0TKkDpXo!n;7{5$tfkkNA zA}m=uH1#5EuPcmXH>@D^aqePReoFX6O?dHQcvUD3YB$h6CAe;vw!uBPi88b$l)CjI zq^%jDApp61nv^9(4m3x;lzpX>=wTNco&dsS@CVGhM=e@Lc_VQCyb$UV4U<ub6rEwD zmr*r!il%T;fviVT4F=K-Moc%0(sV<mI&ozm3WIrLtav5Y@az+s#WsyWLkSQD|EEQ! z;f<6r;Y^Q<YQ3dMU|_Y_o84$e%IKmVZ0y@<fQ1pQ?SnWxqu9cL*b~+WLNS%U8`7{% zM%f2(-s?&Xig8czLO0z7HoMqW961<FK(uVJQ_OKtd_>Bk7C`ZZ=?QbNY}Eb*g&Tj| zbJnoGmT`p|@zDq{L`{)<lXI#*;W>VkGiyQuQ{wLpI{I#?#UvglJ~9IoRxtTVaz;Zw zAnw&8K*bhg@J5_vi<otb9v)sazen6)0h#RP-H&kyO&5|oHHp_FP|MiR@G?2cC|O0( z{g^e9Kv4+jp_Swa7;s5Wh)>3;3pGfliwJX%H>I!l2cIWHEY=ykPt<hTQpuK*3pD`7 z{7KwS>CGN0Yg3Y09(cB50`^u|K?ncz#?*A6RLU17WP&0xB0rAdl&*v%b80UQgP)MM zo0!pqTzMonJe1ty{%qPM<;`q*@JTw`!;B6E%B_~?`tR@eBxg19afB%bwJ9i{cu<2; z<ll$*ATzOltf=!Z4Re-~UYO&3xyb&wA$LX<C8fcIr$nWWBL7*R{5mW+1eSFlts)G| zy{6*3_QxYc=KA~LJb>p)?Pfl)#uH%6<9m}p2g^OAN_e893LVbtp9H9*SlO)eUU|4; zv<UD!Wp+dhWOWMUJqr}l3Y5?VD$510t_sws3)Pnkww9cq>f|<Q-={+r>Ma)<TooEo z7n#6|46dG<c@|lw6<MRPMYhXDW>-%gukuW+i}b9ET(9!P_tQZH8Q`>H->YH-b%{T` zBv7X$n7xG0GcyET61iLweN_@mU5cZW`wSg`^ejzDD@{X}`Yz|<p5<mxm*v6B3eY84 zX*@YPWo78Hisdp-rP9cY{3>{Py-s<YXW1&UtPx#~SuPh3FYn4LZ--a(>Qr<Ruy^ZJ z45KTm(n=}@D<-Kc+dM1$kQLLOm5Wy;<J1vL%avczrL*WK^H-HyI#s;XRigY=-_ccv zX?VNr4ExJfr#e+DX|ZRX)fd)<lGNo%Y1MzPDu2U~SUBqJs_F-6HEuczLya0KMcuou zgm}^6U85e2V9Q9aX&&m<P>YvQ5YkY!*1*b3>1b$tsB2kt%b2boKk=&N94TcJXW&?= z<@YM(iJ+^6*NJ+SdwFK@rPn>PDIq$@tndSbNYw`$)hl?_%azxM@)9Vf1LP0tl}GAT zuIq=5>ZO<K)x;ZgbsIuriQd`ZsVg^Vr#HNgXfU>EQ1ogvSZT05XnZT)s886aluo2> z)8tIp^r5xMRJTrSlj|#KGaFU&0FZI;V{>2xZE$)s+a6=6O><LeGg7xXo}(o|ygBHg zIZC%BqP02opgBRgC5{FiDUQy#ZVppMXX&;Ste{J;(O-e+Lh+U~!j^QJ)^c%lPHSr= zZh7t=majQIy;~g9tBdLP!VIQkhFdYCE12<X%p^_Q^c~^kRhWn->=JKVZf#p#Y5RKJ zwocPNtlM^d)tVF6wwd0(-`ak-(*DB>vn8JTHLU$ux8vNa<08GIo2H{CEaB?913=q} zgK4{=iT^9!iI>qyP|*qY4uoPlNoczsjJ6Z2Wd9QHqRi-`9>tKY22)_VV6@!~t6jj0 zE=KQeR!k@Jp)N~CH+M!?c5CZpYd6h8H;;D@0cR54Ng+F9J6}e+po*t(WREOSCqr!^ zy-B+GDo}E@twuLP3R8E3-z=xsM}p~5%ShMV?;QvPa7_aHXnILRd&{qTs8u@5Y_WY~ zt$kdFeNoq#*Q-FCNgS@&z9zQ*#*}`gihl3aw&fJeOQJRtwgDAPAzY2IH(~%I+Dq37 zjJ_G9MGUTv0O?3DE~9P0Nu0RIR)%gM*W|!5&ETj_l+{hIPG_%HDcHNSm!e{@JEec% z(GViCzh`AA)OI9;wk<USSEqA`E*3YtqP0J@EnIxG+or#Pu&V;okF>?WZ~7Y92Dowh zjXC=sEA<Vp3_0kHpfCGPTE?0@hQ3M<`Io1oXj{@ofesZzT{peyD}5_OeelTiACc{< zk)3&~n9nMhk9q^GBmLsGm@0{mk@B&DN29RQKJSyhn8?ZUo55L?32!Ovcv@uop~?`? zG>$*bDACbms>DE3Bp~5t=xf|~`sz?j<Y3g{AYR*aRz=I+O&@dHWLD%9zFt&wL|=Er zFz?ueKGB$X<uK2KsUGo3ZJlApOl0~YW9{Lf>HDe1(b+^!45R*>pYBwR-Vj~R6i?px zL#~mQ%Rczz_~hsu58VjNWG0Gs?xFsW<`JWz#CR9y^gb;>XMOHnW~Xf1Ffb}TXmxai zwq<~Mz%+G4*E_vHZ>(K8r&D)QF>{jIZgQ()mfmR^!iC|A#ntdxT0ZRaKbTWiogiqN z-N(#jdN=3m53Oa)vZyl_c+(c$F6xiXMjR~RbIykP47arOz){$hF^NSTqk*p<7n`US z<?P0?!^aReix9enhhIijRR^3S=la=Jl2un4xt2PJ7ZPa~6z!IyB)+&+PPvQ?KRFtb z^zL;z9LmU?W#syDP}%AAWvo?o4oM3L)F1U%U2O_m35#4UDO(-%`tnz0c}#CzB{HhP z_6w20vYzC4z0WAu<cK2Of@#!RTt-yTK_6|-aKPbgChaO7??CZU^N-98f~tjq$oBKq zQRUH@8u8UO)d`=<#rcuy#e+oyVn$uNWfh;1iQCn1@wGa;%}<gmOSg+JAJ1#34t=6q zp>=Ft#_MPC-yGx{kh!<A<+GKkzfhSuni?^>f3P;>jp_HnCW?CxOOCFwyxMBEnq9c= z92i+L<Qjs#nvrP#mh3%ROT2)mI__~aNNS()@ZJihVq4uOQT1r!Y4qK)-qNxDG_&eL zY~}21Meh^!sB@duFs>;zm95nD@4+gV%)e_9W5rRKV?NP4O?z8=tIZUWGjna<Hi)Kf z^=Gv82X<)|nrQ*1U*?1=mt87{W>*If50{(24r=&JMd=+JuI@)ao71)HC>&pCIOuCk zop|Om`L=y#g|4r7ysngc@L_biyU&E>y^*uS6+O%Z+ujdL-<Ho3Ns1Z025movX=m}H zdozfRpV6)Ut>_yh+!5v8xuRWuAKkxm*wTN9p|4o0UBRAo)3)YHF7bQ!t@%cow-1lf zjH2n9nVy{hvdVGBF_i5K_4kHZuwN(IyPoKe435qWmk(=K94y=Ki`ch|-5YSV9bmsd zsDF6&fR?e=0Mo<ut9PWgi;fYke>6b%Lqp<+qxb0Z>JgJ?T`wblpgGP)2&ery2JYE? z+a6im(f$2lqW!($Vqat*;pgusoTqA^$J9TcyI|V_B6}A?dtIOR;#QwQ4F4dG+m=Fq zJ(4)>(mD0ZzF1Liy;}KW)^Qe2fBEk4qQu}F`T0^-<#N;hGG*<OZB<D-_ACbbC(H1P zlISYW@G{ons^aq%l;p~^`buH;s{VObPBx^b;}S}OebKOXO-KZ+j=4T1v^Rx;OHi!s z**8F2kOj$2%jdCj7<k?&Vc78YoFjQG2HgGpCU@z+1#b#PVDsklzgvcXzkmL_oBemc z<L}|x-yhh&C-m4;hrcKsTnk>9I_mbL7TNTDJg5bZ6v=-?Y)PbWa4ewOR;C4}KL3N* zmK2&=X>0puN&P3pb}TD9SG}(0AH>$DuA#{yVDdj8w%Iw;bwx{;SBrnF)El8VkYDns z|Ag3v;9x<^NdEBU_86G{@3TJ>Nkj4f#n=}9%dyQ+{4d5<X~UhTU?RKr$CT2G`rYw- zg?M)T;rh~<VzqpwOr`%~Y~ftPnyk-qj4nNXFMs@pv7IT?A8D*yxpQoXGnJcuETCXV z`(H+ys@FOYpzFQ^jsHSy4Tw@475ZbDl(SSkP~Tz_1#G^Krk<LQX1<7ctP20J<5Q?n zZlHfv|7;#*I`ZKVzIM3M?7UK$soHeB);V@cPJ?OwxY|=qXE^Tt$;oCcUwP*Sv;6B| zkwGh_uc7tN@p?}L{p)tj<=O5`x#2{6+x4HLrXK&-9qqT*7iR}+!4qq(H(Iw~)^!9f zx#hYqwk2=QpGbIjJ%B`>btCW|%OXJ#<%g1uU|QGR4R!L`(~VH(B+Jb(n&4)FaL&fv z%?RGI5`sv<dCPB6WW%9KuO!ZQzr{#F*tTM2|CW4<Q(!6GLaGSwZN;m}vu!85eP^|u zsQsaIJ4w%VZ#&s2nC*LtnI{$AztC*6f6#0S040C}*!n+cwvXw5M6<(!|3R}e|BYs+ z=2cY(L|OeOG`lw%H5?qSuCDzb(QNH;tMHNiFm)?1@d>fY{~OJwRY2uP`<<?nQ8GQr zL~9*R3!c3AFErbFb@0E@?An4m+3@kpihR%IaMflh`nPQMX;X_B7?X2J3cL6}6i@w2 zHt<>id6Lxg8u7`H(tn}Zw~OnDiKI99s$A%Xe`I6BFLv_FVo}=^8=S?E-uMriotnY7 zbAH4Sto?nHPNf+&hl6wB??b2|Mcs3!n<CaaCW*+<wsT_fxu07TIWxk5)0A(Nutbgz z_N}7UJJY$QBhOSkP3d8pe1t}XiF}M~P>G4huU0Mnmf1hr=zU2)J6=acC}(G#y1P6t zcD68Ur`omIU+;;pH{cV0`J=M!IR*EfZnhi7ve(9zkN^C+IJ*|}mGXG`>%8)g%Ena> z0aIIe<K{RJNo%bK%og5(<=XD`InKnj(2d|4MQsFqzNRR>!<QBp`ViJv-;L!MqP6J* zI;~PRBLgZe-$aZ|Eo9i>Oz$!o2pa_E+cOtgn8ZA1@kqixlJYK@iY3<{Gz|u^Kbeq7 zW)m|7;fS`7CYQcpF7$lMO%_OLX`AbJPsl7zj#$XD3rg)_X;mBqPr8^4lMmYn01Gt( z{K1^fj$OG7%+%drogC8dnX%CxW~uVIKmEXg=+r*2Lt|J;Uf2g?KtVxxYH^$wV`}_k zdeli*IcMkI_uMoCR7qvF4y<3%_*uBd>q5pSR%HpB%)wyp3slhk<XV#Q;tcAvT`)H# z`w`eEwl|O%&*i|bi7|;8OfO{_C__l+PG$S5rz*cpb-*9s520R1yeLQ5>l_r%zVj-n zq!*l%hO$1g<t1>-2$UlvF>{e36vkV(QHA74Sz}vAP88!QbW8REAfpE1Z1ow8)(3fW zMc$U341805#G=Mi(mj;GDVao(pIrle#Sm>yRT6Ii2qfd~&6b`v9?nt1P;lsi$H{Tw z^imt}u|HoAhapIgf5w{$mn-9^F^Hb=yZL7=)80V9pm{GYjyFbQYFUa_im89tG7|at z{N53GaE$%-cxc9d-({G=>^g3Qm&f7-VXT{)y_^&b;6VtCofDFe$&cu?#LJliLbuOJ zJGb#vUXhZ}>DdRMA59sHq4TeR(g(3;HA3O;J$Zi=KRW;e(nj`4%G(13Dp{)rpZWL! z)J3A-fV}Gw^3*tQpSJ+GV!fb?-YWH%SUD(VC+{yKx0rtMq!$RE-}rZ{E>LgLVEI2Y zgn*{`#+l>AqrFZ238O7onx3>f(e5HSrn5rj$!m|C+Qb})9LTChN*Zssvk5)Nix)f2 zh`*Rhba5g!%r|=fTWjdp;AR)#?UwIkekc*idN+g_03-*d?{juTDXxrzpA-yI>8Q05 z|Gvj~3|9ntuY)Lw9Q=BE{C-->iQ>sS`Uk+Ns5xgV19D*|zUwb=xSgJ}aE{tMk_L>b zTau<9jR%wktjG~f`ay_DqkLi7@-8gB4^K%#XyKd6NK2%E)W`SKB;6<8ynRreDaVJg z6nJ{ECDbY^LK-8X+b;b>^TvKyFUN0Yzg_#~AGX(kT|sXkazi2WWB}XTEoP{<JL$7! zZd(dzX=n<`Akc(WUi2aUL(F<Ft}g&8LxKZZdJFQE<o6#AXWnRZ&r%`42jcT0gd4&j zck68+)<qVP5zXPbhV>}AMSYN9DCDDS9ngrdSlmsURM(#?k!<P-Pt@)R8_<~r`U{6| z3IU=ofPvp&5(tGg`z*NkL2(6Uc`lQr{Z_q6&gGLNdrKsb#yOen3qp5YcS3L{k&GV_ z3<*uN<DyM^liVtvz%Ji2XWt4uA(;f=2KUSI6iCH=u3LaYG`T|j*$GdPyLsnos(WK` zpr82)fc@RtOieT6d@Osh(iByda}Y;lHis1S6}*@6bTUM<VX%jDekARIn*2B8O@?%L zHMufH(8EqY<~Z|N+4n}s8QU`XeqI!dA`ncQ!$K`;6acE=3WyP7QkY<yc4@2!mpX?N zKTswG@sbm&80kanP2&JCDf<Y!LpzB4G8EtGQ6TLQkbnSa;;Mr8{FBMRKG{(2@CeR( z-m;toY8+a}ExT83gH)U%yo@@%-n-qlM1?0)X>aCT=|ZFbPR^kjg#qZw7l3C&gFwlv z4c{>`hj0U$gvIbJf@ca3iS9LnSJ|E1Vd+xLhU>a{GLE@n)Z8Vk*3^sm_;_Cml;x%Y zKtY8_InxtOEQnbq70-~l-ZF(mz5oEklW=FkySMNW#{0FgeK#2_F+^t6sURpp+Jx5B zFp$pCQdFuf2_MEWOcz#E(|6Ptl&pEKVf%n5N1BlH#E)MH5CH2$m_AMi$VyMHwPjTp zJ|N@Gs|9Sqjzd*Mz>f#L*TJp!8^r_#$qA)I{uGPN1FBxjc?ylJ0xnApx3~gv%BN<O zcz(dw-?jO3Rd{H3|1=3VB5>1-cL5etX2}?5_eH|+wJ_N@A{ccJg+jgHH_cqm&PTNf z8k~Y~ozl<Xu4!%(D@BcvY4wi|3V25r(PVEyt-rh4^hj7$#CWEjmUlVe4_Ke@=FT1X z3kjHEi68jcOG8ai4fhO!6zEm>)ntPn65gP-!km<>BG`p$pE|depml^ivfiesny}Gh z6bV(#Hlczi?8JkFuk1`paG{B_+wXr4XyGH?tK#53vmB`VCDBw%XuKDT*ub%!_UrBH zl%hp+8R(Kw5w33GsOTfWp}}VY_}*kTS-7_N2eyO{e(VQD1TE3~0SF^sI@994exJ1L zUbYRMx^Kicr({=>_h=!G&*h?rQ-&A!kp#qm0M>JzaWYbXdj06}?Hh|-ROnc-@pJd2 z!X4p6-8V#9SuiO=p~YtMBK?&s{s+w|d8ciV-wT=0g<SX1!P~rY0|tHyr&%IXz~cot zcIa}0sQKCwghy|HBwu%#YUq-MFZi8!_!Jt)sH4Lg?Bh>1aP&prE*r{yi1stanIjNN z=lT6z{&^i?<tr{r;~{0ZQKKSsk#p=pClEJ7nuki_9M~Tobl=0(C%2E*yeuU61<duW z>H5_VqZAL97@t9NdVK0`t}CkpsVaj|=6qeO?xxPiqLEVXd(SVLs~epdsb=pjnuG!x zg%QEzQ`@o<q5Y*lIzTQTU(Y>tl_|1VdintDXr96EJYeQ5W8~05=H?*G>H~JAVgS%5 zxIFOtEEcFtt3Y~RK+M`j^ZG3SI;n&)1AQ_hEw1@2qCwhprfIz6<oHwIsWGT&6U$;% z41xuKU_Bp78=X5oxlI&+AAfw#uRt0o<j5!Fuhrmm_XiIWBb_i2QpzAwqZiNw5CYUp zpT5H_Z27<x!J)s-qWD3OuI_^unV;yn3g=6CuGqlEDIjP-a(grIQ4KHSqA0N=+}j91 z;s|jOBxR^4H3HF8m>O~Y38DfyGZ+JiezRES*d$y4M`YgS$-B+T1n&GHJ*#^WvA|2u zs$Q}Mbq|$MvkZ?Cc<#3Yz1o7Zr%>Y<fpp`82tNS6y<-<-#Up<C;75`x{WqVgTG!9& zTzTJZUiE~%EDWWbg6=~DXeW7h{9pgkk}0P2x9WYTASyyt|9MJVhpSV$DIaU3uYfQt zviAypK%4`nH~~J(0au%FJkZjcXYm^tv;jb*9a2cM$oPonCHdE(<Dvp8-B2p`s8T$U zw|{tnjsW=qy$8;pWdp%21Miyz8L$?91OuTS-$EG~07ATWKT5!14>%aqK*<VkbLCn8 zGP*EKhSLKLQeIGKt4RhG!@WD-d04tv;koZ<x|4vU$V}jIFG9G;4CrNiK+O@KNrTxw zLY{TvoIAOt*RodOuoCPd!}%RyA8Bstj6cOwtB}N!f3!{L5`MLr*edWS@r@A9q|O7R z68=<>%2EW&6qIOC@X3r8DQ^7s?&D8;ad!&}Mku?HGpQ%}i3|YE&x%->-(G@{A0$IT z?rA)De3R308k~p=ah*@O`k9g$@(>Jw$hrf^dhZ<kR4WTm*H&tLe_T6L3TqdxWezBP zn&n*rICn;;DvUlSHM&3UlTi*xCkM=x1I7bDe$1pB6g@SfOdF-jr1_Z+WzC$oiXLAI zjrGV}P|U0xx^w?C*Tu5twGg}7nOl2lo2gmrEm?<4nW!+?mCLNCy{unUSwF=T&OEYR zQnOJF**EWf&Z%;;#By-2k|CZsw;n!_i%bG^D3NE@y{jCzq?||afWJ!y0MA^h54p7L zR*$c8^~v)X(`>19tPZ53pRilmJj~6Ypl$sK;D_f6>f{T1V)I4Q^5N)wiRJufSNT%Z z1v2n|IsM`J7LIu}^Dqlu9Lke_IsNd$w>pLIJPWnc3U$!`52yc~4p<3otD*x|mV(?F z{q{-_bCO~w9SG@3k*jC1JvES&xA<dOvF~!RFLjA~c(FG@NswoWc@D&>tR!@~#G4xW zalIsVx!8HQ#Ky7ICblGUza*^;lC@tNrc;tWT<TqRS5lgMRa(4Unjc<LY+V)-UiL8- zWHIbGF;(D8P#lCV_S-M@yDIl%FaFG4;Wb>`Lr~J0Rxzwo(LY=fT~=16R2D^0IYnLh zQK@n<t+FDma#g7^W4Usj8e6p)URl4NH{k(j9xm-5C>v6$=!6%0qRW5oSB>aYpDkAu z3|CI?mn~aYuE47RHkDUb6+m4Sq#UwsoyEfrU{b3XSE}|Lt~w^Dx$jloyIgT@U443m za?vSUMpx&tS4F_9u+*ppg37eCYG`ZiMjC48B2SeX8tz#!Xk9}dQ6uPexAIT{zb+R_ zuX~tY>!MQu(k*k@2aaBqK3S=J>V;AsseL_CyE+W9?u5LvX<$C6U0RBx;>WRBFBcK7 zH|D4`C9FOQFEKwTkuI-Kw61-OsAoE;R2Oe@(QR7yY;aF+Xt;7xf#Wy=8fi!BU^XSz z2X#T>&6G4vk8QBEUIb;%G)>@$CM}z$g!D@7^rmlR4JA%hL^M#t^t#ZMx_#^BO3#|y zh-NThi~34q97oGr-4;}NSrs8F%|@eZqv<Unx(Z!wbzK(`-bm|(UbC)MrD+8opsQ^# z{ShsjI<2^m>Z(^-?QGDeaP+itbHGUBO&NM)xNX?0sqVVXH65cF(U98OB!ow+N&uar z!7#LznwGbIAgo<zZT<^y>*J`6vMJkK`M-EN%c!XSuwC!zp$7@+jsZc2kP>hRX=IcT z0d+_z`6G%n4&9A(4BaqDmy8HVH%bU%fHZ@k5-NxHJ!hQ{`}1CFueH~+fA_wh>#7|z zc)h&TGrtJ`cD?;e2YlS%xgcMo>_|gtb@##cYl?E)&yf!FcEid@lW5KxVs?+$S<j@) zYp`4Uph2xWs?Ic)yfG5nstoR+?g~C_k^a*nXMO%wp0-B8@U5)dTa}u(!!b?lIW=lr z_3Aa{GJoDGSogi{sNv?ShD+252Xv)u!%eOGO;w=ghW#$MehcgVlvvW0k7?2};9Ng2 zgU5hV?tqKi00Vizt!BWL_MNB7yJyz#o(H`1$$jV7_0De;vPRR-C(-Yd(;sFyXth)6 zPUwG_OV)f}BK5J!fdsyieTj|&;6B2kT>W2Ty23vW<*9VWxe@GX+Z`xCsv(moP?s4u z6iiF{+}WScHA3VXF!?;#<633!JB;QBS9QT_YKC(D^cQf9<g1LVSLNBoRk$a`c62dz z?F`q`4)(?k=F^UZxs6i$*R{CSjHu)_@}0xFd<D%~dBy!MJ4W+PaE;DLjEx$M_2u^a z8Z;LM<QI>QG0gyoRBs73A43B8ER)fWFH)#5nT=omfzIS=^7ynH>3jq(8ZbtGzkkoI zzplFX-DvaHc5mn6n0qL=QW}0=gWW%v`=(qhj0_FL@$>BpxiWF1@Br^6HX8vLm}Gph zLvd4GUgo0BJZbTO?dk@#02%;&3ZI-k7zN^Lw|9EzmS;a-hrT!LAG|(6V>Lk;o^lBV zYcbk9Lfu01F+Nxpx)}xsQJ%?TZ68R&V5s+LHb4^+^k7%mWB0wt#@vPr#0fL|h>S3Z z1pD5<y32ek5D#f{0<=}RspHRkjjdnL(DvR^9b+(>sxz2dteN`tM<}e;C{kFO?$<P( zhsBx+Pcb;EE{cOL0-oRr@E9?ISB<LU7n!B!yP!}D0+_035sMLbUY%k+)H9?^R~a#C z#q)hPv;C4hzv@a3{xfen@-d2Q&K)<E7C+ir-DnYLQ%xt}6TfKu{X+%!A~Qd%__4xL zp3TRwMVYC^=5FQY#uXMDNZ0HHb`k>vW_Y**ee-N;o#wv_PwH?t^9QsW?N*N7UuD|u zPjQ`EFkD_5E&p&o9gXus;}yV@i&nFUJrk`jyIxc>pM!9pm-}WO$bR~pn<ghauO|ll zsr_=;&HHQD%PMW@&ENC;fp~zb==}*l7`WOwZnPS={4v#a6>)Vg)o5hfW-jM+RU&0M z^75^ws0o&@M!^~I;t=@r;zjrS0d9GbmUPe`re05Xr<(IV$QgY~kePju{{f8yg1c`@ z8Re|M=TW8~yYc$tL+jNfx+$OPRVk|lz3Ywo;{uminIvCwR!TFzw9%HC0{Xof?I`?# z*gGuA(-L4yzE>L;dq0V9Q1-Hnjac?OC<dk1wV5i-stKz;Jl}?_22CD+yWiRKR2e$@ zag<&9`((|>&(+@(je1RJCuZWOHWo?$#J8J*F16H+S6v<L*qhZ??fmd(yWwPO(F)%8 zU`P1L&W^;YZ^BmRt@B#pKRb2#Q;eA1Irm+`;N6(zUB6qabjv%LG<%o1cZYUrgWdPI zgZB)VzmmH4HF#F*X!dF7cZ^Q!9dP@<_C~M&t8A;=UH2dJS{eSgvi*Q|_ea(g^gjyX z;WpL89<@}j2<^n*y}g>9?aw?r!m$VJFBrRWXN5+;eyrO5$TM-`-aNHCiRap9dAK|u z^F!<*<KW|V>iu2b^Kk}-1C{(%=K2EGp2Nl<%JE8vChv$<-1j}TcD?fggTz-VpALg4 zM^Dejr6+b)UJnZ2pcqd4<oW#b4$UtU<DY8dd%6#Q^*-pb`gG{h^9%pq>QLuz`@}<i z-klc-gGT@Ddr!Q=KRiDa=9<up9}B#-OnZIr*$X`w-)5Yev}7>%=Pt%oH^x9rq0ZFF z<*AKybuZl~GyjYj1y(@~{>M=T$Gg_e3@;8rQu`wNwQC8Cr;jv{sy;#FGrlJ;l&NCX zOISYMNiY1$I9@R!|Kxg-pf9rLwB}R)zTu(V!@*adj>+RB=!>)VS@28g8^~qNkjt00 zznL~zu)3L~bFXHMZRjXBV9;2^pWlB-oPRa>{=VXx>JRwIL5;kF01G;}L`FGi(p^-u z6VTj=SV?d^N*<ja6adPVkH^Y`oD$3ExQPk!NSPoDGze`Mgeq-rMWM>T#ZGZ_P9XWt zW>gW{qN_jN@EnQmg~tWK;PP--P@p6V=2X;I){@}Vd8YyG9ApSbWOSmq4TCDsWr+e2 zQU3$eICBS6b5%J0Z_-a~pQ=d)NjMM0ZT{cHR!pBuFe>SFU`*NaVQ5i5y9C3Oslb8& z0Cq31t@>tH9A4#5hk}xOnPNxaca-@^Q-zw%tcDy-PE+M8f=I~-Ptx5PcmZoESZgi@ zzakDz%zeBDQ~@ET8fVN-ASg{FYrwHb+gyc^q_QOK5u<+7TehzLV}e6b9V>!QkTd%D zU7IvEJW23!ZomdHJAy&**65(pS8er2)F)2`fAGY#a;INaeF~KEW=K1;>dxt|oo6L0 znYHTDrEjQ+`8Jrk+^0Gg@k1VCG^Sn}OXmf-bcFh;C|l?lDx(vxicNPlPtSKW|LzDK zd|zss5S{kekcQdN8nG(78R%>h%e~FZ-QJ@Slx_o0*2-gXntFr?`^AX;t$ODY3asUX zr9o84(Oxl}I?{7(?GBmKl@YpZ6BeSR$s>B?g(rYQ*inghgW7cN^3Eckz7##YHqBxC zFuc@O5T5x?M_hjPBB^~`YidB#q?p1L6GXeFYrVvrYA0CXlagtB=5><!!kzR6lKEHq z+aw`}-GVQKI^jK^P>Q0)5Qxb!1WY~cq&vgTEdPZ^Hj(I=>ea}O5e_szIB&2OwUkeZ zaGi~Nl1}G@^<GOzoKGSownB&clDt=_`sDSVBU$3VJ>$b7N>!e2aM$&(MS0A{rxj$} zPuYYs*rpFf*n?fl%7Wcu-ZMB`X$wr}K7H?)m@mKjGFERkO~k1TDaThW&pi(@69!Ab zoSuIxBuDD!Sm+n<W@>oem#qPdQMtvVLQAarQD&AL8eZ69Jf(<eDz;GDnE+r!(i!U7 zLxu+G|EWqG)H5NTEoAl5FWqaP5eRX!z4itPLV&;ZZ8=Z)f$tl^EspgO1jiFyAO%oo zg+3B%G@_BInd{{)W5c|h9BK+1Fyq#JvS~A~b_bm#dCcezpsdfm1}srP`4{JBN|&&g zs&E>kW_PqIi>%=^1R&As>PHLCDBX_}eGJ=M11KLI5fO&R<XZT0B-DU7ko#n3Jv}q` zQK*caQw*UnsENy0j1KdARK<?Wg_cVs@_R^9ZOqzyORA4DDNU3O>4*&gg5lrduV~VL zvnV1LqvHT+`|a&{53K9Dn%eZB+t*xxH-~HWQhw8w8y&se3cpA<o@pA2tY~gXHhl8r zy%VwOd?_gT^SjsWYhvH+HsyY7ex3byMtPU`S}Z`^PVLI?EU6wr_k9J`pDZ&hznVU% z2Bm%WXXDI09uQ@mWTU~JUNi?w05p{)C4}u+7@$b$(!rm97G@bG))u|XJRg%J;D@dH z41LHD?bUE;UHma?MKWAuBlv}#rn&&Sm*<ocd1(j2@k%=7XBa9fhX3;oYBq(A`%?Z_ zX88pk=-y--PKu!YHpu6p*qz9K5R0cRX1h6mBS`lNuc2E}U;YN^{N)=6PlYX11@(3m zjfxHAdr0rK(Jy^^kVrWC+B;qW*F2_+7t#90@umchhW91I8E1}GkUC1!2QfZ1g{(`a zud#kVQi*-5wwH!Ts#mAo5g==Ubv7M?_l!navn3F{`FFU*AL(sJZ_(9})m!%xlaq5T z1gz2T#2-v2$d(lHu&0eUD$6Eynyyi;t&emRdh(rDx!FkHj~+6-I%B62P^S2<y~l}~ zi7;2Peyw5Xidec$&XS6Vgx$&5a9C>Y@o0IiVV3r_vcoic@j;Dm+Il{oOj!-1#dJzk z>Ve8fh2KXQq^2r0AFku>rYZHI!tUWh@7&I3KU~*%g1i-#eN@u%O;qeJm7=JIHc^w3 zDbRgaFYz_1#JkT{)jMiBe`_Z9uZouPNmkOZ#d?_B<5Ht1*`qLlLBYtwO4EKSQ?uv$ z1r}>MpB70G*T}({5!P?7TUDBd(ii6Vd~}v9AAXNB_o@)@-%>jHJXe277VNUIW${@5 zrc5qN;SraZ<o?3@-k^ipuCy<>M)6rQ))|O{#knT`iRI0nBC~S&Fc(p}k$X-9FAH8U zRawupo9(}mO-L<udw8yFoa~-b@@uEY4aR=g=7Coet7I*Qt;ZsgVAjltf2=zrK3_5Z zt4+7d?D0gjRqU(6|H37zr2|LwS1nmdb$O*vl1J{#q<a*N<)NQ>FD*6be<<r6tCWfD zT-fXQ9WrcIV%F$#8*-<m%%f&gzJAH_%j@T)eL50!to>v9tqC$ys1?m8=gGrYGClM` zHhwwcYR#9-$!yv?PBa0x64$*G4#G$}qPaL4yW_sy84sVi`CIQ+n0qk^lt{YaPoHgn z^(@_NNH{3GLvL)_v}{L`wxj)uT51~D@)Gwy=j`|@ayaph6aMOY_@CQ<Sx*`m>m;Hf zv0r~F`@Z`x-18cpuET4`ta{xt%;$@G5?rp5(E_Ch;hK(81A?O-2BB>WYqVuDKvZP9 zBl*_cWzH|nNu!3e5>9uo)tl18`jRw6STi1}zQYn(zfM@wEHuC}?oAR!nqFL&0e@<l z^mlzZbM2XF3H+##`_~2xTG890|J4MVAwSsgs@2)}>~w}m-&FA*ZML}SlQ)&=sjAe3 z5Lsjm2#eSHIyo76i}HD_MMSht`muDd$92BhZ$}{yE5`6S*T;k(II+}m1=~OD#q}z3 z$Z93$+k0GHY903yufANSm7Wvhea)K`*?qoZWd0c;5LCz^py+xd_YG?;B!=1YF5qaO z>3RJA*QG4ZZ%_QwXu%9}9qra`VOGAMzdv0Tq`d}*9D%2u$QsE3cMr0c{;Vrbw2ym_ zALgI^`Hp4inDo6G&c^n4LwiD<K56`@?E2qLoWg0AnSqBe=O2W{`5PTOkIzSA>>7g9 zo%8Q*{d$%2cgM-NbMeFYua?fgyAFuXrC{>XW3YdZSv{$vF@cgZT)4gYRc`=Mz}69| z0v41yVyEYMr|-9lZ~*?C@Ms(l8yD@J%X@iMT8(zq`|ih2?9&M_XboGf{D@Gv_VT{P z3_)<^ki(AYtLA?2ltGX|*$vgtCI!B>=K}{H9CZIwFv*?$`L_yZYzwsYtUrq@=gF@= zZ>B^W1*FFEoDB0)9p)75e&=2KNiGO_V?h6zGxNqtX$JT2gWW(vXa2|65r0Yc|NUJo zxN-J-{@>~0$Dm`)8~-w{1<hTyQ@B_tNDA5&gwg^K3?Fpi5nO{zz@VV)O$eHK!omlD zagd;qq^|A}tbvEKHwDu<8LWJFt@^1iFG7fY<O%aJQ6PbkZNeA~M3x9BI)z$ILeA{q zRu~9C2&Kk{a<|>kz=vv7gfgRV&{0AaGDBqn$R!~t2PKRe0Az_E1N4n+PT}%M$Z_ip z(G6!YHiEfMQ1jg&=?!XCp>rR>DTtXaK$`?sO#+Ky0WG#0*D3%gHqt8-tXTp2VG>S_ ziG1c0sfiA!JPiXTBO?a^p9+uw^2QB|C@~b&YY>QLyI}}~B^*ckC_=1`b?i2t1eAv8 zm3iO&ZR5fQ(f=JoVvBvn7Hj4KYqJUU90WSrVzW1Zo0)2uRUmvYwo?}Xh#-}DHI7xF zT{o_~B5Lz#*xQY`0Y%8~rnoWPIO<hk(nn1lA39zU3&n)_qjXC%eFYsOsw_Nn?mDdh zPT1GA|B?BS4IlfP1nboWPTLayIEALR2|KPvLrIW;io{#EBzh8TH#8A8l=!DDzF6@R zXd#MzGl`z>Jc^u|$kLv;bR26X17dDZK2?M;;S;<NFUpQzyeUm6@b=;t@e?pNmxUYu z^kLB8i_^$VRnAJ<Y>d;`03)J9uVTT9NPr%fV08&fj}KSQO1+$=M!S$^v>E$-2GDJT z2xF5p+90>EN%Xjs?@V!;nJ@1|hkiurem@TKoYh!Ob-&7P%pjkt`P}iEGxZ1(@TmlA zv4>s9f_<FR-e;ysQ8L7FAYoiu#7TxqyYR7YX5>(YFeL-Pf*4PbpiSV#J&?FZI5iHO z9GzjT7s?C(!dS3438L;3ew~;RqzB^hWndy)@HWDle8Xd?(u3q8sveoR4W%@+dRzQD zw;e2h_%zGG>jc@5m8BV-!LkY#2eRwLvNMNr3#fo-s_ZtUOAShSV<#EHtGSa4@nw8a zW=x*YDwriHW9%eX`vm;GF>XdI>xXk%tkT7n8JHfQeW;h6zmPwqsO{|QjgH37Uki{# zr|uu)pZHq#ooLv5<i?|*YtdQaIItfTz+zcAS(y~w0Am`?-Eq#_*#zh*;M3588Q((R zdwKL&5S!8^45pACU&yMTU87edX_*y231Q+Z79tj~xfCkugBFzXd0mPRPl_c^v+=Vp z#7+Vwg@PXG1}G4{222Sa_CcN}7JMQ)3@(WYBm}ynAVsf;nOrDX2wKxSFLSUgI`^Tr z8!kKAEQ-?uJ?|(x^eulrT#_(Z{M-^8v3c>N!30aNw`EBps#qwdkR>VKN3SBtx$MhA ziRfmKOQjz|sB~MmRDZ6L5*1(oGk)ko{d*Jes{|iVWtT4&rEVd4vJ0@5Wqu1qA|1j~ zxcsuLD&NYIXW49+B#?JUg+o<&S{9p%OF6l!TD!7b%8%hLr7-*?YpN>CakyM}_C>&& zbM|6N|F4jz(5g>Wr6#|hpcauq!w5AB=oYDNCk6t-g6We$ek5UyBoO^76i<Nc4A=1j za9(_QR7~#k#rmy|`db8uJPv%YSQU@W_fsyA^ef+M7k1$|uleCzHW*X(8xL>osHmWB zXyS<2ee0jmkxtW6+vDu9k{!V-T<7?{R3Y4FZ41Ex)Z79<h>NTai+Dx?BLL93K8PuY zjn1Q52!LaWjVhhsJA43q6?#zB@S9ToI|i;a(x`gYsE99bcBy{81w=$w3F(7bfO_U6 z(3ndqS-e=ADx2*LteeHA8dDsz+2Y7SdZ_gZOkJ8K{=!AT{|aa7*Tq*~EcJ@@tF)IY zwyWxd@t}xy63)3k-V%HZM~b%uS#zr2bS;muYTs6FKgez|$*Ga`YmcX{Z*r*(bg8#< zEwsPVauCy+fU9T9E-b4eIc9_K)WnxnmWx~Gt$juAE5rJh;!XvYU6HQTRzQutYX>n0 z^lBTaLR~}H>dN$Qq0Olnb?r{f0p0gkW5RZnWmmUfX%<xPR6Nadh%H{JE`F}pL5Rt( z@NX&N)V>vykiOXZTIoe^>_drdqM1nQ2Sj4T^~QKy;|t4*Qr{LSO4-pVc+{%GA*Ug& zttH<%lV+#8>I^w^)~v|U;6!tyNBng~OpO%j&0u?rWOnr+NB0Ly@7l;72uA?9Q>2$O z(ZbISH0q0qD0O(*^&9!7&##4vQn1Se{d~P|C8rxB-q%Onz2{nRt+T~@t9#vFO#^si z>eh??^V%w)g?~p6i#4x3DtR9H>QCo+jPwAp=N&#F!-L+1oPfF*8(@^%J0^0UoFd5E z?VS~>U#}e&u+uG-^o|t@@yZ2-)qw8DF@@Chhu6G|Ru6yPH5gB;_1o$d5IOLI#&5^b zJ`3^gNmr+y7?gfqvy66-!UQdI>$}`HT=hpyojhFUrd}CfFkdy4WBr!%>(K5XvGZOo zFTC&U-3uPTv%h5Ib^p+t?G!o=CykbY3&O@N`GG+$H@U8!yg%vIr?%vmrBaGxvt4#} zJ3%4oV=(<d$-x0nv0?ksS6@`d(PgdQM@QvH$CkOAexTp|h_i`MXoH8xxTL?@@$r$; zw!cB1_{)Vqr=469nsmSC<`8i1bC@|<(lsd>Q5yoE64D8<=X(ne9How*S}vUm9+--` z3*)UF{VqQ(6mKm;XN`VLL?Fm;ZsV(eryI@2{rzJWKaRozXDIel%Bm9{vorG7X11(n zGy*M^?$74-&+wPeN>ogD`A%A-JMd6uarZ6ScQh7D(oI!MW4*^FBj?hOMtNV(Tx25j zZt9P@p#rY(#vRSZKkr$!K2*?#h|G7QqbrZEzt6FJf47$CENQ2;>=+dnZqWwIaHEb@ z4O2i5wM~Vm)B=frk)}SO*a{F7)oN`KZczbnU>8hc!*EWEH;(3L;Q@<%BjJ!-{?<~d z^!e}G(GiLX_k3*P(C3lQk<s$VMXIRSh>GZYY$J)-s03tm4%>}SKA}%5VpAkPerHOO zr9?kxiy7S2l%|{SX-V0%o-_Be_tsfba9B!`jC<a;vJfBc^EkDaZMjEsS=M97R_v1) zCUQ=9xz%SmLh%z6S1^TK-r-)>oFAOvP8gMp5gE#<+tncLvTr%QhnE`lIj=koTWPFL z7H|%II~JMWoh;8bqOg!8z>}#u6epmR@F+{opD&4fe039&a%DVHXkqouXlvbaI=9jM z!muAW*MZ{}Lq&Wj*Jhd@R}M7^!h(f;RZO^bucwR<W{OQRt^-W5Fh}41=$KUP@kspD zFe&1&+R54}+xhwudM$x3-63nua^*{VwD11!)o%6``^R%)Vs?*2Qe~Gi<ugHilrSmO zhDBSNMO>D}LYgcg`>sWeTvS&6y=;xa0v19x`fBTpb58259PObsy6f3Z?O7UaSxtJN zKg;DEmT77paQ_QL3gxBKkd?R2_p3tlAGfA5mF<Z;19b9@4Ot*L)Q%1oqOAvcOAnUA z<yTdgv2_%LSr#*s`zT`NPqVxI3FYrMD}Yt7gk_&sRc?r1{$fyBNM#Lxg;@}&3<+>y z%Msu056THWD*4mQE3>YFQ>`33r}?1N%KbO=HTkdee5vw%H(R>1+0ZU~{EJ2Tbro4+ z74OB)D;zoc!3-^b*$-F<SwiBS-}DOehw@GNAd)CB7J!PQ@}BJ7CX2f7%k9hE-(NQ$ z@V}<BW?A(wf5*r75I9fvsREDaWyhc9N{V;p7!-XvIm|EsulZ7b`;@r3l$Gxxp1P(@ z4CR~MD1TL5!Ft~DJqQjafCW||HTp3WwYN0usw*b28-Wx3@WVGEhti#MCDv8UtKc_v zyF#RW+KIzwoJC&OkG?;x_TKufU3uhPwQl*T<t)0`!?otA>)u=O&I$3FA9}D0gjU__ z68nPDCLWL{+4*YEtox@~Plg;Ozn02uP=tOFds4TH{)unpL5y2@{?(s;90k0b4bQXB zyMOAp#)utho_7DHoN^dv&M1|*JUCi^z2PYS=hya!rUa)IrqeIoMBwh{o}Jmt_ZxY; zj+;38O$}O^tFqWVpzr9xw|lxI7ypKfwODih9PX(|sv}wOrq^6KkK?GUndo~;gJcmF z5)Tg-5*DUsW(xX$^kb|vV`i2^jzd<ygG*tdgA(|E3fgvo|4Tovsj|C+cw}bJ$kWMF zkl&Nnk(ra(nQzZ_H${V;nf`*L%p5h&9-kIOCpAvLOb^Vm%YFUIG4H>$@@Yc&BmMjN z1P=DCPvR^`%gpS<^NV}S<mN-|&o@<WjFy>ItQPUpU8WJ++4d%VQ8yr;E5go%^_j&? zDop!1lswIAt#0@@{OR{}D0|?LbURFL0z?%>b6Las$aX@VZER~fRo6Y&*zFKltXVbu zLc@<}UNgB{6r$jBBebeB<3HZG7`<v9_UkR+Xzz82s{V*%Vd;1dop^CC@j3AnAFHe; zv+%o8cu9!PyoDQSR8RGRoM7@(o9p$gsU5|?+;hXTE&{_{ZFbL_{4vY7(dz$wiiIaD zNO81DJ-#`1mXMhls3q{exlOQn4B4tsVf0LMWh~ZvU$Q5}>JmNeAw@{`A_ow#Ijvsw z9TReyNCHJ(ZdN6^e)`wjadUFv^5X)OeeLnVnM~WQJe!uly~C&5pU(eoKHh(mtA)zF z-?!#q%_7F0`Y~ikNoR;P=Gxn38YXOb4(fuIU=x1&hRE*C<bwZf>F7lK9A@?GxG?N} zW@|c%gMjBna&0{-7W^a4Hct>>(VY$++(c*U_b5iiqpX~WAllt!G?doL?ajCN1QqtR zG=*P;k~G1^<B}B2v&sUVU)(oK<CUmSXcFI^AV-3!#4FaN)E#ZVW%;aEe$Nj$ozg65 zvniR%&FTX#x>^I^@`o=NEe-P+KT>U!q?x;HmL?)Oh{bLqRTbi*{DV%#`ANfEB`LO5 zTU9kJ;?ZS&iY`v~RsFW8bESqho$v-iU$^SXa09WLbK!Dr(eu1Tzbh31f0L>!JO52z zaqKmB-EBUw__EZ};4br_uvvTwQJ1K}`B-GewtBB)+hs(ul{-+&HD@@bI=1e+U&__a zi?^hzbN}>xGRIKN^{b6&Rf9)TapUdvJt!R&F*4}gHIFx677gs{e!JIveS0ZV;zvC5 zUD{!?2i{t$7b$MNRk2PD|1l`{A@?zDPga1Zj##KceQoTQoPDVq$1aCcx|+5_=umpQ z19D*nt=z~HdP$3^S&>?=K?B~UrkNED?&b;jh(_}}bN`T^@7)qVdNlwMk}b0rjH1Rl z*Sq%GD5LxZ;FDvMq|eR&&fves52o`fmYrME6oehgm{9O}>I7d=1_!RrH%1-~3SBq2 zbCC?%)~zXRV4!<ztR?4`iq_dGyUAbNWmXiYw2cMY!B9++1~n9y|4IF`(Jk^mEei9N z_Nuw5%Kp$5tnXogBtswtaKe|}RCQ|z*neYOkb`<3YJ5UlYE@Os5&4co;Y-ovUh!`0 zqaQv(R*I9I`#tBk0N}&q((ltq6?oLXiY$QLM;<GU)C#|#=HvUpyh=DS5<o)Ih(8<& z9I-nIFaFB%9a_va&p+M@d@5+Qu%T0)K=oMtw?CAYi+mkCPl-?%&A%x^#B!Y`h0LZx z;d-l38bzBIR_G!oE{w|Zrj#$vFrQA$NnKZt?>t!1p1}H_Vkj_R7eP(<^3Tl)i-10{ zRa`>u&?Bz-QkA<QieV4;%<G(d`64cu7C%ewYOWkGM%^gn=MB}-Rl8ars{4dYUqN}h zdfNu!s1k*O-qYkdJxD@K5&nrQ^;1AHJZ!naf>$a5acfWimzPY>Udyv39%%%@lyO&6 zLglY5OM530_yALijvAORn4VH3G>U<6fQcEeO#uMyF(7_>HFJ1pO*)Z%)bP%w?7=@m z!XXr}lPyygeP-|$x=;_cgGF`MP)l)>+YKsz1iEq!plvDoEF6aEKc8}4<(3ZqZ|4<M z93Wsp7-aDC;usB&0qo^r9AGM&On*)WaRiV;!%qP^cm*0(H5hjJm<b4BbJC>~H~e#A z0uy#ZV`0OFFOHZ>>A2C@&=XPb2Lf!MRM8oz{X|@YTY5|GjHGmGCILAM1HlM1x|qqE za!+Zfg`M;feu;$VZ~5joMCnV&P<AAN8vOGO_30#l+#!H>t+h?rO+dlsrC>cTGR=Tk zbdZc=746N+dzn5$?tRY+PqD%rh(`Tj-)|NqA$qmc#$?NBnTQRHxBz^ZE%d5DZSo{R zgPW8TUWKoue|hD8Z5tg@w~$7X63PHo4uMz`AyuVVCT<X<N2VFo`LWdOGXK2JMTMd5 z@AlQpx9_lf+M&>NPUoJCg^A*On|YKkTAWO-#Kvw9n`hP*wC(ID7R+3u;T*z|A2hco zGDj4*&{0Q;MNjh(X-KeYYJx|^RX!p@ElE;-_-v{No_<O7xc2s618cY0bXgiDDXW=n zQ$zI+B*;=0C!?3~_JD+l7xVO0N@l`8nImyC=rF;qD)Gx{I#|&Mdp8(&8;CN4$`Hu% z1FqINSix>ZZK(Cl9J5D;qKxj`eGh&bP(9OnN%r)r%jfx+lTf36^;7m`u3h2Te;7n! zcJt7^xZ$kEn#-IYkDmB($2`y=3iIfl034H(wvi8J5x3?MI<23f5G=k(jU3Ey^%TaX z+t-&cuc20TUW5$Z@)}`xD&tjFv6b0|RLk!&Sks@`*T)x8tKQGzV$wDUNFEN9NH*1Q zFJg+=&|>^CB&6yIPL9~<6B~DcNBudaTQZF5_IeowBNO1#KI(vN<^}?1^i_v#fzzm2 z!q_8kp;8e)I$^F;#T`J!WNGN0uI*M<-r{U6F=*ET_DcRG#^4tfE}?^h8lP%YP3qe7 zZ<M`xP|lsmp!aPd!U7t_yc?-1u?~UHH|En3LKH7UC2~OS{K%AG+Z#p2dp^}2ysC>f zW}PI%*bh4`_gf3rnb<0+DYo{SKX&Y~LrsqdRCV1$1asHqiL_&#+;*<m)Zd?+*xtak zfk)>{L~HRCr#Lmd`|6R3UA^Y_-%q9JCq!Z&_kNy!R+0PjiBZY0F)4W}PzIOZOy<-0 zB@IGeT#l_)>szGwv4afmi|L4(yB%w~XM}on19QD7I&nJV>ZZ3*#@E=xW3S8F71fAS z*sH=Z8ac9iEYyZ4`m+CrCrmthJA!Jdzx~2m?C8=SJwN303x2!w_&=1_YqLMnT-0A- zKMTCNmfG3=j8Gf9>-iL}iA(}a6@5^;)qmF&sC!vOuz!TJmP0xC{y|$-PiW{Lo?t2} zgYYGPM*hZbRwa@fER|yX^nJraCiaTMwt^RpHIVT=Q#?nQwqK2~vjbWbdLBj1&~zR& zY)TW?7Wk$ieW&-&-etlE1a<fv6|3fp+rP9|KRh-q=Q{na_TlG?dx8Y!Ht}r}LMkgY z(&q(@qE`agg^>*eSOg0>Jz4tj4E3II){N`qu2()LM3^nq;De-caj@NCAj<&ZBuol} z4pq|?-nJu%K(1Xm7L-KOn!gQYIu13|l~HUA)MT@{X>myh?N2jJrFDr`bw12mSJ5~s z_*E)_dEG=g(}q_u==rPg`)v`aIGLp{*C;bojYR|{Ht{dzTqFE!5$_@b<|B;RZ01Go z^E6OBRgAdvL83Dy(yt;Sa4>Qk67>WfWy|LEaXt8I6qWz{1x4eU?Tj}2V6a!zc~l0Q zSX@Q){lVxw#VB@N4B_r|9Yr}zX!HgC*yvcfa^u-zM5w(}^a)s2JUJQ(f?%)!#v_2$ z22RTtXX7biED%SV6y!Pu7;D67;Nw_6E4_^pmKTV>$YJL;l#Qbv8()q#ITmy9x%&Dz zRuHX}YNu<3d(u}7@_(l0f0^prOv1FC(j*(hvTWjrNn(;m;tPAFvEN8lass3s_8y5= zN8ZRsMrD@8M*46)mlF^3_UaST@0o$911gAb>I11@)k(-dJEds^tFcgu5W9+C3F~hk z6~TKcUyiVHN7vP{DFSkS$s`1OU-D3+%2||lP(}==X!1*ROv0tuM(=Ykm8Kh(O*b9B z`Qne#jH%Rsrldb5SW~^1i_8qE%-UA%H%B0eDM>e0nbM);TS%y?lb(|Lf@t3*KCLXp zTE!dnx<Pb}Y0c$&YO@(>Gge6`sGOE=ptGinFA8Ov8U76*oFLg3^umYk2KVWuGpi&& zLm5?O$~UR7`k4Hun9;5q*%_4<R+Q!?<dT+V6d;rpU6KtM%9KVJU7s{a6jH4@;S2c& zZ9LHtCgrd&Gq7)FN60}^oo_9e-oBrupC29jlq#lp$XPEdV{MuyrAQBb&1^~t7nSrt zw%usC54S*N(a7S2WW{|RVzYXmdH0CUQQByj*`D6vY4aLxUg_M(-OP1-&N%ny{qOB| zuB{iwp2yQH5rxiCI#hY3VtMMGqIcyuzQ4S?isj~iZr{sN@bj0O&m3;06f8OCKB0wN zCE`KXOv;mW&3@iB^U6s^LDkZcyUtFNM5GiY9oSN1IrP>(@$1SYdcBhN?lpRJyD%cc z{Oo2S^cPr^or=eSfx*Se{HA@!*Sq@Rck@^*nNevyFkIO42Ud&pgmm0Q8HAevz`Pi^ zCqc?d4>)f=mRBZ@Dn-{__W3?o%=xwWtna=7=q^n&J|mpDspXD4%U#cA|1?s`C%`_U zto#&{|3?@nMSaJ_%gpS^Y6XT9qTF9nLc+AE5bFRAe-6D##@)n2aYP1SGb{&SQWmsX zI~MU~&+~pu+{7UhPu(^a@C;vQf8$CQH`!De88-1aL9^0W7yKRu^4JkqD16sq3+l59 zwfkiwzFKpOQu>inS*Y&_kYOcN3_FiZpltH4%zVGRWyY0~C1+woMa94^^g{3H*eSK& zGZ?0*Eoj~$f3iOLv}SJgi+-#GVNeD3!9jVnQSu0wF#(~B2NYMK^xGs}0_37xZ4AI3 zt}-kU!3D#x7_Hm%n5xoK2l;-v^+h?3WNnX_7f(B`B$U$l2sv#LYk!iF1IG-5>vh{e zeX*$Raaj$0KVBe*eVhzqaWxyEuK((L4%WsXv~gfOA8-ZLeA^#DO_B^;p$wCD^caAs z4~8cp@K|uM3ykaZ;%`~3hi+)~d{sTxL4q^b2l~WR`iWj-W==zO3>GC!T{Hg6oVM&g zWh!Q7JdA+?HOH}h{^_KC0@cP}%wCYv0qMVMNbA_<c_Lzr+-yxYceH^ebTa&?Qj^BM zs)~&L?nm5=N${}p4_TrMYe8u~Y9SrCg?Ln-mOZ2T+~Ihe#mI(EPnn7d2iB%Qjfv0@ z%#$;WpUh<2tx4KT8BDuLAYM$D0Kt)+cyUKq5+`GRHS`Ex=e%9!rj?;2UVi<e^D1ll zEzEm`TxkEh^K#g8uZ;697k;P3sn;#i#UDc<@!M^OXWb8(Iij#mQg?YQHW5rjC=IbY z3X3!+0s8osYx=K%FW2y)#YNF|bQZ}C)P#qT-YsPy3Jw03Jdd?^6)!FCM`@6tAyt7g z0MF=Ac21Oe)O)Rn^&tu126**}(8~rI#hoTBH7#szL}g{2d9UlTOjMtf`K?=hU{q8X zyg-aPztv>#KTLp`A^+_iq|C)(f&w;E0mVHM<ayQ4<WZH#2ey$Iu#JPy#rnO_?TE4H zOY`YNZfV3f_C>u>@at8upydh56%EiVW<5|)&>P&iERl$elC*jEWGm(hjo3+uPSeFU z1#NV-MH+kDc?V})1c?ol9xxQ2IaKqz4CeQ4-5~pV#p@Eo|Dhp6{W^SdJ0?9NHNOnk z8^$);h!jCdxr*3=bujkvOfeQg^OTME`y8tt|i9T*KC{FBsUozZYqm6zTp(O}ca zHpXJ1NIZE)uDLAf6Dip_*0D2|z?Se?V*GuL#b?nV)&=LunsK%Hk=@+kWVZ}bIgJ9} z#I&#YPqzu_sEJ*}k?H`NhTjvkG8648lTf3Oip+^`OGC|E{^lDR=7VDfY*R4RcTb}U zcaF#BnqPg282JsJ;*lhDOGFp(O^<NJ_y$Zbc3}b}v^KoS2NZ?aI8gyqvkXC0<?&z| zANa}Wxv1vYp!%OAV)SH+idS0A)aJ29Ck`Qq4xlnsdY{2bXR0Jif@yJ6$)Mm6+<ON} zkm#!L_hQ3`%bBScxJV2lKUFEqB(6Gju6L&2M`ntdduBpR+*EZA^q0oGJFF9uD#oY5 zWv~1mq9Ng1C5n4*f`#5*f?mSCSC{nu!KTfxrDTOcxHLdnT=fHw65Btkb_u3T9nJ-h ziUuryxHUGxGl<!!;bT{IXBy0S-MC~-mB#ue6(B7|=gkj2&18{A(C~q@NFPUyphmd& zI^8oCLLZGQ0j-?(h&NCRs|H$ZiV&3weF>{k7Fdx46C;8Y0Tt!hEEiygq&n_scRnrk zbg8SiBeXIr_a5V?;;bPhDh3R22?GQ3z>H8Z@YPj^ZcSCwOjANL4##+d(9D2`T4A)6 zgnH4=n)LpfocZZrsWOVUSD3k%K1h5TK+U;?=tNH$gdgc-v_A}K$_a1Ev1^}sBnhJ8 z11Z;il?PTc0wMiMx<U5K#+c9dI2qm=bP=~Q{yt8W-h&1)t8_T$_;vFdEPu##>!W%+ zLT4fxlgTA@Mt7ZTFjxYX9O(UrGrXRJoPKtTqtuBL1DGcP`WGN&K9ILN<bpiosRmel zGzOOf>td>){^mGN*Z~Rga;eRlm<<5VS)YxkW!Kl`a%M`3M376DHP5Fd(4(7!FP3&* z_{<v5Fq-)F7b0QS1P+sIm#1(PKs5;hVLi~eZ8X*c$+vy6@PlVHE0{CygfixDx2X{v z-;Ouqf8OP`toTJX7jR%TZ*DE3S)xEbJz*AS+l>vesk`%+=B$J+L%d{ywBz7h@(;F| zLVze@VLK~(dn<b$aL~Y(F@y`3VF|jm+HQ^oTj+ydUI%)ckzc9GI+^$UJMP5d)`C6P zK1)Qq;&+eb#Lq`3PanOZkEinPxW^*?AjrkkZ>u8udPN!^L<+x7RdTDF11GzBKW^(T zgLuW*oSirsHo1uV*Hn3X(MdkBdPeQbJp6!1Ax{Bwgyue<^X@1KA^b?Hx)qpRZHlTY zxMp^{r)GNP0W$%CHv{WljHQP)xmDFhi>9>inJlk7(QB^Wim2aBXMi_DZcUOTwNc!3 zL<_a)wX@j(kST}JLHUo%2{+xj&9~q$k+jb}Z$^?>U`31VRxSnXw{Q(D`euK(>UC`0 zc~?mp*(bLsAmvr&0W=<PK*qj6f*BmS%fPH;gd(aT01w(K?Gd#4eXnlVr+%_o)d#(| zJ9~%e?@zj&ahSD-xmiz90P2JJs?9K*e5~1KoK$1<(`l=n?m;IA!3Tf===&ZJmI5m6 zdFYmCADv#mJjwR$p>5TVMM3(bzg%0dKD?sVICpQiVxV7b*UtxdS0H-sP}%`&X9QBp zKj^|&C#r31Y)(%vlqen_&(0K)9%jW(&%(;9s7B=FWf5X#*T{&_kYY}W2k1#D%u;lf z;h1b;magt@A$oR9YhQmKR@&u%eRaeCKi>UcU){oo{}=B%I52K8^6c_#U-;^_cemK? zR&ub{(sy?2YxAgJdW$U}g2?!t`PnNe5EG8LF}=Zx5SrMl1XX7H8qgK$e*tD_Mu{Tn zz&~6Ep2wKCtad>n_GopcX~9c^VsAcDF)cI}U`uZ|MvUd${%^G}`K*v$PsRJNXxRS| z!>3Xn88IAcL7?zFS$H6y79)eL9?+4z!p@}r9?6@eV2~zrjdoqU@%6Xt>`91Y;^ni` z_>Xfg`{R5BlMd=%0?3JXtpVV?QA4L@R~^~^43z7rXS_By^tdGxN4u>oemg(bdK3LY zX~2H;%~vfi8xwZ9qi``>y=2<p{~r0=_WmxuWZ8UYk&dZh>)!Cm589M#zMlFC{H_XN zwA^b$Q)TzBRw>DTFQsTySL<|iJ6E^j4FOt}P$o38K!v_2SdDU-iTQVCz(2Zj_2-G# zNH>GikZmRme?gC8#H2Ez3n4%0e)k$IdFkqUI|Lw1eKc*%^L;;{*Y5dCB>c+1k8uM* z#DnDc-ae;8GM)?4BA>JMC1_wi6eh_0s>nlG8Dc&`t=Op8lV$zTrM!c=Uk#%KQWRIB z(GfEXk0c|gCSpy}o!7IR$|}p!%xv4^yzg0RGiT`JwH9UiXk*v21Ac9OFCaXa7LnZ` zpXB9=OfSUe-N3RW`uQgKS`z;^u^phLHi~k;<WeCMl~TUpC>FFy@4toRs8qgT7_(VT z8t5o1b74Mpt__!G+Ny|6k6EcC>a98X^IRN28wN#|OlZy3p1Rge?hIe4e2}8~vbaj^ zCQGcp`1Wq=(DdSHW1frB_ol`96Z)#Ym<7o;%79g6TiAnpbxj+;3a?)0A-=6wUa#pG z@BG2)cJ7gV6yja)^L^d*5&3(GYz-OU^r!T*dC!Y93B0$w@_Iv!*3xOGC1aP&`l#l| z@H-6Wlk&6$>K{!4<(3<M!V_QrGle$pG)_EjdAc1HK0fL?CTKwGW~y+Q`(pz4i1y0} z_sFP65&xNG0%_^X=6~0XbtIp^N%5+IbGo4g-@UsVtKaw@Wm5B0S+!as1gnq`Xpo?R zv>B;(@Q!P#d;I;3?xSa-w)cGahGHl<@hzqGxl9=U8z9s802?V|7<}>_g8Ix)%Ym&U zv&y-PhQam4+xz*dGSnbIl55gw*HC7y;o?gccg5-GZR=KE|51t}h!%w<9MJbN!`Cm# zO`Z2KXD}ow7;D+T*5L8wT0H?$_o1N&)O^OkH(By{D*GY({y!QPm-07XX-n`oAk7as z+M=8e>8tkXXE-uLL=$CZ9|x?Rky-r!2<+;FMniipG>R0=Vv&Sg;3Tg<*9e0dqC)xl z_|~<^sV8FOAhaRqpW|eg)ea~q@k$=pQ4vCINTyYhUZMBE-C&Uc5Z5sej{i0F>>vH- z;euJL_{Gvyr$?<;<v{@F;z8m<i6ASF5T=S%fSw&f4M`$1m+^IrXxYTwZu<z2Js@E2 z{1<1UD99z<nkuP?^&Pgu{-9I<h>v@$j`*9j2&Efz^QcJCc0o`s4y0mEraB+q7T9~{ z-6Hs}Ud#P@Hb9jrt6EwE`c|xQa;yu8M@=UVD5|r)B!)q|Zi6p51z*A-V42we01ycz zVZ%-U$esWrCIVHWsJRyZBj7tzk+l7n*N*Z`0=+_xC(lU`Fz#uDtd;{&$nJ{O-)~XQ z)nK5}y!QH&A7ao@bqQu{>N}fMs4y`PGOIz0Y4OZBPQwDqgmyaSuYfsL9l-Iyndiv> zI2?d_I>R`vrC6AfMC3)Q0AD|87LBAN**radtrdYHfXKaz=D48Gq(-%myi_Qd>Ty8d zz8z;fHJ-~>^P-S8CJb=aHM{66g*_7zh5@i#Q>3ySGfda$yy}iH9(RRU$mX>AR-NiL zA#@P{hbfY=5CY8hk1(q`ovYsWd$fTSj>Q8e37D?a5Q_=|^uM2#)cO?jOXM#wo}WxI z-}oXOA5%MirJgd_WHw0^i+A3Re%Gn;gBn;ZDd}Xp0<+XbN(KCn`~k%4f!8;2`NgD0 z2C+prA$b)+h&y~?v;o*~ZlDkaCkHc;I10?e(nM_fckhSWM^jA_)mVJq(1vXjE}Ih7 z<P<A~!|+yb`eaKK`Kct(7n%948U6CNdE*%Q@z$453A?>Bov6bYoiMMuS48qn$p+XZ z=xx}w3i3|H>byi69)2Ac%%p1&#j{H87CL&1JlEF`?<urF2oZ?FcrwF=+Fck6#o2Gp zI~sgX>l&-lRgV+{TDXFFja?wpfpMV5o+t>{e9Ec}A1Up<<iYdxv8#k*4cJBBhjsf} z7{74gQr_@Q)@Hr|s3i!*m>V4X3<f~=_+VG7THn&avGyRqrc?h5Y)%r246@?A+=jjK zU>p_s-<yvNp+2mN%~#<9Np}k4H;k_A)rs`@hbk|fz;6s5GVH~D*UlT}_EIy;J9Lvy zl*@z$0HH;XSHsw2Guf<ksiHK8voA9XGO<@2(8_;y=!7Rj-|~y|dw!;Vu)|z2L-#|c zoi-O`N@iw324}u>jk;VG231?VNfm%Pk2a0vu(_WzZz?cQ&o<~AU79_>twnNURP0<B zPiSc>H`;ZfAy#*<y}K&0O5=VvyEmQm^NN$<<~{WMB{~2kg~qPMw(;e^S%uZoF%D`j z{cO27_S}0h;&9o1@Duy$?<l*X$6QX>I;&$qk4I+zUM+DEm3T~@KsRGwUU<iX+`_Nh z&64~_fQ?R63lgytlXRSRt=yu_T%3~hppR+x0%b0I#2=jpF8=sTY=8$men|HSz1p)T zb=9;O%;?6!YMK;6ohIuc2U6civH|x~xgO}>h7`%N(;BtBc9)=$#e^KdhBY5VNov{h zqTYL9EDyk{$W#^;_b4GW=x6TvG+{)J@&ooK@OS4(S1U`1I>((KU}ft!G|Gj{s7!nr z*s#0btbBG(>IqlBt_F;JayANq7`IQBuoOl_D_7P;KP2?kdcEs=y1IqL<Ip4NNc&ID zI8e}1{!Tcu7v#ndYg?jd%TRjj=bDZOZv4~AWhD0t*B`8jlwlZdC#*}^nD?XKZ5I_B zREuFQuMP^-Ck4^psAD)Y7<|2t-9LlgF-9_eGlDAO=sCb$pn)qZ|4ckpMCi)v2N5nm zDhVt{!JKqO+&>PU!h5ay@Vef@Oy|-d1)cjUPY7o?UO*<`Bq?Y^Auyc}tc4f6LV)}X zhK#p>c@?FOMTJjW&xL!wz94`JtthBokx+}EaEWH95t#ih1x#dR)CEKQR~dx>J{U!) z=Bx7BBU(p3-orvrN-;Ml38a+-Q3gXW9xzT6oRfkh+zD`a6+)+Z>kBc!{6hfyQ<(EQ z!qEffUamk#ez>C(AhyAekGi&U?c$93;t>uA7>qQWj0_xvhM=Pe7EuwpQQ?YFFPx&{ zHX>nsQ8JT2EL)TzUv%nxRK`YR%zRW_W^{H`RBmQefzL%fC#K9NCVV6O#5-UuIlvc* zb_SrY6l0q#Vq1J-+cIM>Dz;tou@{LenJunYF|M60asU^Z73TIpBf@VcZoEQbaPURl zaonuMd3@%jc*(Z7dZ+l0Y*H6eAA|>R2NPKz5)UegU(QVUbO*o^;P49<-D&~_4Ggr2 ztfM0k<hZT2MA9^X1rq&_73eVVT_@lXS@gnkg~EkZdL(*hCN2#oUZO%9q7o}_(muii zO<p29Q8;-Fymd9{X+$K`y%fSUz%djQNKAG}Npd29k+9Tnx@I*M>@!FvLqhCNBvXT; z)(k;}?&3?{gKEboS)`KNiIj{9PSIT8=Z*$D5nw1{vN21_wFO}zDkeKTq&o~iP8wYJ z$DBi8NZiXXJ^)FveAEjKAOMb0a7jF%Q_0QVo@$2&Xor~S2rwyU0E;^hLlMAsL|h+V z%5dh(#9-5)5I7P@xz>w7CyBT%fE@1$o(W|<t;~S8bBDDv8MD89!Ia4t4L4dyx_eLb zY8z9`CIXR^Q8NTR{gPP1t`<rKLL^bs0a;<>OkXh=wO39U0p`1axc@WW5T6r4PM0Sm zQU!qk)P=ka@tO)WCJN|fMZy4(6XjWWQmWo&W*8>ZiR9m@W43FNP4NV#^pG!osQz<8 zdMl+ytma^-ptfS3QdB91c!2R9GUDEo4J3Qa0x)?GiI~hp@tL)UT?poqoZ5-o_mGbW zz=eniNlHeMiSh&>lO5o^aN1o^EZBj|E=U*|K~;609z-+^ODdEn6*f5lwE9JwO7H+a zvpfAhb|`>)7%>lrK5Wk&xff>PQLNFC`f@t!5mn;nRQNtJAMKk|$>$}dl>d1K*z+m4 zMeTL2=LO2nOx{FLxx9d*icpiF%mqY;Z;_c^`o=vZnvyGzL)z<EAx<stnjxJq<&P#o zXiVgVqYX^J?F=EnKxz;+-G!>e4hMwjBOSI7w{MySP)r?86-?$34thvu0uX=$pd4jx z98ykvrAeoWV;>UqoRRvLNN3E;Am4%rLMfcD`u#oH`_#S<hncF`E9zh7SiCGuO(oh6 z=kB*>Uo4@-Q(5s-Uv#R<JC(|v*w2&QsGtb(^uDT0IHr7mv#>oHOzWG&KAdOg@dON{ zK%61TS;V))xd>(WK2;GVB&A-l!U>y0LFSv@$qHOeD5Z|v+sLlfPb+t3R-h^y*B3_O z!hVPsA_=7r7Yu|r$}&i`5g0SSVMGv6Yb#zm>Pz+dLPyup;HhNBDc&G-YKomqpIihk z#Byl9Qj3n<$Lv}DF33mZTx`s%iRcp1d)4Wf)O}~<g`XLVhg3zm?<q!>L|4ONnJcN7 z2K|UIQg*5((n+im#0O*dW^ctec<47+b~f;CHMC`=2a#&C7tOXh8sy2%?4mGQ_Ov)> z$P3LRsn~L~cy8F@Iq6YlBN9vZq`H1sqn>9vAz~6?LiG~7n$6-25QYnGb-q}L%Iwl_ zfVuz?9XakpHPqLYD96oDEs;BxNSF)6@uWzgs)26=QEyfPzlk*QY7QfSzq_>FYbG6R z)C5!Ka&l%lIj222jYk5!CQ9}2)y_rf|3lYZIJFtJ>!Od45InfMYq8?cP@Dn<+ET0( zC=#qiS{xeO-GaLXcc-|!6xZU?LJcWx4&Pd9&N+L}-hV+dlgvBsb3ga>yK3*_&G-?z zYb&^r?bss9+@$fqLu8xmY;(~X5D3qBUG5uwQ_=Mv@TLd-E~EAz?+g9yBAByFv{C+j zW#PSxz}a3Wh%j-gDCdcX+FjJYftLjy7oiAn-Z%q%S<>+2poT1kMD2CH&QQA^bZ&b= zs0^CZxM_JP(ULAd83g1z!6iS-=*0u>Ji}rJW&m~9vBIOTRZP%N*Z4cy$@5KMRQ9Pp zbT1^^6HL4ctDg{lMdH~Z8i0T-A%~)GBN>HJZzX1u`F(O9R=$ul9xxg#oaQZ-Axw`x z%#y?;q!_ci@V(F*^wfe6v7h3~@)eiSSJf2cG@Qi7{0Th^2eFz0Jln{zQ6Mf~yot<8 zkqIK)Q&!xJFiF{XB8}EKJwUxN?A9_aiXkVivX56P9<&1RyQm;st7OBifdnPmpcB4b z$0BQE5P8YaowTpW<c{=if33C^f&_iCWUw_%GBbV9JRj;zL~B1r{U&=c(}m*<mp@{} zry<>EEc>A)0OOcZ9UXVu%BatReF5TcZqCBDH6MIEA!;}_&U=;?ZxL^6-tjbY2paF* z7U`=;K-(+Vxad3n1@`a-eIIXUNBmA~vk7|uFCg3}`lFWM>e>`wlKgKZG|mx^sB`$& z`ao!2jyeJP;d<mT!wgw=-!qNuoqil!z%U*A^nHV+ElV!f>hv+$EcvUsG+}fBL)>?C zW7_u_35_`}#`%zYeBBv}5GEQ}pJVfr5)+tLa1s`ZNvXY?S0-AJ-S{Z~YC$twKrtpm zqiaEzh+o^OR+w?ofRX2RsoPyDQOR%7tZIHT>!InNiPx__e`Ncx3nRW;`e=uO*w#+i zFfQ58;VyAOO#VtZWydM-W0!pYKD9+b+_R$r#?{+A0NdInzwG7rs}h0d#dbYSwk*kZ zsL143E2(}f=<Jn@u9d8fm7KpTXenrdA9PopBBrV$Sf2P+APRqRwfgUBE#q3f{95Cy zwPwGy*6g+RuC>mMweG)bJw$zy+N&rc;?kH^(~8v!?dXY(^{Kz>GmIN^@*4|&QI9p& zjs2F~QrT!Fi4z2qw;4Bg<u~_UZ65e-9%XNybZwq(Y<~T_dBM2#U2w}5vAPhyvD&q< zkKeMhy!G$z7Jz9Rq_B-+whi^)hUIMIcW)DJZWI68hBL*wL~Y$vZT;hiIIlI)b?-22 z?lAq^VPV>3Q`qG&!|rnV@ABmA@^$YD5HJ68Sf~8@YUuovxY-v8|1VNGUu3$!$ZdX6 z`1b|DwD(wHPuXlw)qn2+@fVSMRA6&Y=ii<#)4smK{&TZ^1OI))oPFc&ebdc-vw!>M zOb3<<2UcbWHvR|5oCEvr1INvSxBm{DnGRhQ4&R#{y89n`<{Wx=ANp<{`u{sbF&zae z90i*lh58?b=Nv_LA4P8-#r`{rXF5()I8HV@PW3-V=NxBrA7^bI=lna)V>;1~-77LX zDe*rk%Q?YxpH%9c6#P4>t=@N#KW#KSZT3HH%{guFKJDB*?f!S#!*tfCaCVO$4Edjp z<eZIlpG|C@P5mQ3n_)ViQ#fBRJOAu|zMOMD!}Py7sgl69|IbMc{y#dY>7hCQaZ*FF zic9|6*DWoqsV#`JYiw$6X>I#oechh8y7BP{yL%~hZhqlEzV3gG1pnVcG(&y6$ceMu z$YY2W<p1QP_6A)J6+Ky~-pNzeANs#LsSiYr!bdD*!|ncmPAbJHPE>oUP-cuqP;t-y z@Vf8!8gdoiD9W)k{I`>OE;Yp6UsebwE&gvO)u}`pPRg^a8;&i=wn+RhCzV%Idi%qK zNvjLV#N?CKT8m=Csh@ud_()U1pd+Rntrh3R*ff4F)x%Vg^87gVm-oKzISnvf1b-@A z1z`IrhbV$bu&wcY&0soj(-WX>|ETKqa4OM#C;j?J(&@tAj;nXu)oa99IfKUUr^|Mt zpN@RrI3Le5Q?=xDb$TVN@w#6Lp_~qn8)9;EpXPq~{p)O_pLmN~;pP?qDx<fWHd@H= zzr)+zasf(sGQr`(WwQa>mo0fgG#RDzRNY?6J3jrd&^zIyPQw-f6n?F*J=qeE*zAsh zOBVi=^-?*(4-U{Tqj{%BjC~&Vc@)MflMNNxD3}#lVgvsY8SNz@A37HWXxKwJ!t0t~ z`>96Rp#{vi3>WNyc=iz#<d)&UAQG8cT`++FvNsH9>wLVMM)|kdDqV+-Gn9mCVY?5P zsx^KPLLHn}R`3wTT5|8C(prW4odiSk13t$OmKY(ukp)qq&OlIH><~^)!dzo%NXq7W z)l6pi$w5iDS)N@%I3NBA#2oz|MFhm*cLea{;o#s)QJE_dNEAgbr|{z&F~*AJTLeJp zklR6(4gU5#Wk#*e0j&}CdiLrFXH-wE?}gr(2DEWTO%-`RQ-Z6B1U$}8sJ8#oC=Ij+ z!c34TFfmmvoToH5kS>q_9+z20U>S|0j3v0<v_jyjT3CTW8pXXpobp?KK_|(F+bX>Z z*XGWZOH+|NRc(Cumy=>Iqu&y6xGhk|5?#Na9b$Y<0T|&cwjkB}1d)fTy}$6)n=#BY z&K*q#IX)XFg!KZ(nH!IfA-R!sm@>&PT9;Guw&JP)!N!>YqG3f8Y8}?7{Zqy7BEX}L zCl95H3!4cE*>Wv(UfK4v^(Dn&Y`lMaG}LW$S@${(|BzZ$@O}taK^OoYm*LR*F+nUF z?Y_EelYpyEE$gpG$N2uf#_RGs>$9%=zHDUxyUA3YCY%G+bMD`>0b)jqJ0s3p3TGYz zC~12Fh~T$^9p0C#fB-!n({Hla3+P^Jo2^X_#Q>FpqsZ+&<IEzl()8K4c}0jK!yRVa z(|uP9tnKYg<qU~5jkdBgPgMcU0Nc-q*n!(hDkGA;#Bwog@E#hp@r6+21rS(%56=F* z&jlC-qaMgGznQZod*G?~-Xwg7${A5cm#6dLYCeSk(W4a3i}7V@GX$|MSG!Z@0R;h; zDxdemJSQvIY>@$g3@JGno1hob!V`iSXHpzMH8`zpxvg<o>{wn;-b9PF5k2rYF)QCs z*fW>lAzXs~Ghdi(CJl+*eQ8+;3xN-87uMDwM^7^sAN(WeC$XLSw##LJ>XROv8XnYR zQCBZRD~?*JTKPxnidg&64mK6Eu;jzUh!@665o4A|5GN-^m~d+{@tLQZT+Sqfd^;aP zwOA25AjF=s7sTb%GiXgj4tW;52jWyuFsF6)?%!i$J}A+kc>a|w_spoH#6Xj}{NjNV zMFdkPeE6XsfJk^CV8SuI-=*n0gvIbVRb)v5*oGtXStbl$29@wkFCizXazuhxzmM0r z2uOZo_~=>CQ<cD3wm0epyxfCr&vUG-g~Si3?&oO+mM11sjm1@5@lV2B64-wasDovC zv?41Tjo>gd6;VTOYv@AILZLddO#HLR=zQ>gMVexWhjx^>cu76^iE>?V_f$+U9@2b2 z<DUABjh(_3$KnM1du%@*5YS^GbHT|YqW^$m;?zn1rxN)7l(QwiZQ1_ERu#mek!3vK z4Hed;yW`^0cLzLtmu+TG<~i5&k20V3j5nhDCe=A`F9wN1FsyM0Qxvhp3S{=+dM>L~ zZ+-*GCv!LPBvv<TYkLPrt!o4X0X}RH0U<@ZwA7x10qqM=1{TxxRrk=P=2Vh~Dj2z$ z3Aey?D!Aw27Tt~2Y$5`Hd(Li4$WJgnYfXULw(dwGPmc*G*RiGJMF9Zb31Tz|=Q>Iu z9Nl|*$}8ewF+RDfa~KFVv%>~4eCH$W3iz#XSp^mD(M_YPs>~<kJW~Qoi)e0K*_nfu zAwaC0^y#pi!E#5waa99Vhv{>s>jL4t{EQNl4H|p?4!MP|?n)_-bT4&3NG%HotQ;-G zi=+Hpyg4Hn@3vuwi47E=7h8qa)fz&!!J@xy!mz(~64#djGcoL{5BU4ZgAjuVq3``~ zQz0rL1TQ1-9TL?B3~Qx6vlH>yE^W4iu+-j{Qw+KyTL|l3@tqj&=_jLyqw_`8_9xI0 zZ<gAdA=GB>*6EA(*)=bC<n5bu+vkcCt|ktlH_|+)19g(3Kbka+_0|x6nqWoUAiC|g zsaI2=_*Z%TGl81PV~PPpl?L^kxmpS^Gje9(aa=~!R0@p$Vc{#5GP-d55vrs5GC6GV znewkWK06pfZ>L!Kkyh;Izx7Q4E<`m!)&US-<Vv%1Erg&^YqnV76|7T6*x(dDZqa58 zC?#y3wETIMrLwUI-QGtR7EEF^^O)%U_GuYYbm+NHW9fHWCHEh?D`z-0(>Tu1@0z0z z`SjudHYTGS#fpG0lQ6524V3%M{3>3LM3K;WqL$kLz==(Y;638SgGLfUW>ivt9X-!0 z?}s0xC;E`D+NWEAi)@HilXZ}@;+Mw&7q`rjeb`l_g7D1IVk&5tLvm1Ly~-WY+1xGC z=Ni`P%kFjElPSLMz#xp?4*Y(C>n|r<W1rID{Tuf7>H}0Q(cl%L2SmqVn~VhuY&`UY z=ya||>3&k&7HOTNVYI*U9BD$}zsok=mN#6gqgP*}bgJ)qFaxPyL=cDzG{TL41H<cB z28HK~i&khs^PnW~Vh-2in3t5mZT}#_U;Vh;fgw~E{E>8Ddpc5IEO>nyPX`foALhGh za=HECK*A{t+Is?P{~8mTj1-@q=U5YL%j3MFX=gKW&H{^1U(iu?bJVdsi#&5<3zbAN zGaPp6cmH&u?Z=IzRGh!^TJ&(hT96UVIA)8wF*^&p1cMbk1hcF?z7FY3H<PLrl8S#I zy?W_e-ylLxsse@rC4{wI<^^&oK2ouwxQh(uU%C^yxIZZM%LH*Vn`4E~3txTU_EGTg ze+4(Cb$LfM8$iV>uPCPeJouyCzJ|vaq4N;HB<Lf(%ex+Zlz}U1Efs}d1}V6ISixVc z27-n21V=(0DQ%tzph+bzbTcdrLT!EMk)EvAx*W)l+UlhGN4St4#W**8979qh{9O)r z(1V?K>@H9Nls|PIc$Mufu9#AsYCwN#sPw`kX1xa`O#*5I&!D^a;ry2*DIb|QH1!q) z`VK?ykJj^VUK+N(gHU-drIA@W1D*R6x}n@sx?sZ(V$tsQQb|gRFtYwd;MOyMwF;>< zC*-~X-tm`szM*{Kh{o-J7*YIdMrZl=2|~UI%CI-SlQ@q>S+Nd$w%nm3#NtP!<~>p0 z$tA+S1H%Ge#7RWly7A{OYA{%sx{^yb7|8z_`G9;LMqc+UQR)70FX=d_*b@{P#4YVw zDB1Q)$niz2scY;+eC)}QpTdlF44Q|z79v+BECLn@OH?DnC3{C{^kxtD4FK5kj8f5! z7NYw+5En?!3P!+<Qu=Wax_p8wW<M7ILN`1!7m*8UdfJPo;y|Ertzc_`qtU%RYOU0+ zpLiY|r|QK-#Y>^7LH@BmJjzw6k($rg8DezIV!}%q9!`c!%l8W`^xIA1)r_JoEsGr< z0Szyi7Hw*#r9?A``|aZt>K@#H=V?ehZw+2=8CEDj5-WD)7G&(K^B9SK8HE1(IYnj` zV2Og7qX0RHI4&S4{6Z#K!zL9^$H6EAV~0}rN{?*Is4eFxT`?@D%`EmxtBFr*jtFU` zrD|%+{IHT)f05afp3;X$gEq=)k<PSH%^DlcoVc-_y2%ou$wo_LFG#x&uh1-~XQwo0 zf1SzRl(yME#%q_(5jDseNXR<E%QohTGF{G5EzeoF%=mtsQx%bM=9Rl@mo3PhbJynj z&(0k{mq#g`CuW!j#pnF#1;cO8Q<=-#t;>aH<iNbcDU9={*z)m3nJCKhpZ4Wz>obz* z7I1kN@MIM5wHFAi76{!I2-6k*FHWkU49ks1<{~Lr68;}2^<K6hbuLmn0Wu+q9^Zm> zyumuRU@iP&MNE+<9q@@}k&#TX=~$7$ZSj-aVs)7k1DO&l{1W6np=w-WZC;{oUqm`n zVsTRPKBLImxYSd#)akaw?jB4vhNA8}(b`MBjLQNwq3q7kZ|UfGQn00FsXe?rfv(K! zzAMeUD4DJ_)w?{%zAU7@JR2WVU<^$(#uR#EQtu1VFwi2ta;H^H1zkl_2BzM)qA3zn zYhTfRUx;RmiD)mY#-mj-FKZjae84YFl_|-NEYHMLrk|95;KO7@Rt%nC7WgpD85K3F z6(urd>+Kb-x7ey(nd*ew3i;KnMUl!0e2mR1W+0<{w7q(KwQ?r1bWWzK)VpE{AG2bQ zanY<!!mq8Ps|K0WHrZF-mE`8<SC_6<C(u<*M;84YtG@Ow|8-J%=3Q0aUV|FLY<gGx zGp>RX)Zb>*u=~^}M%LDil!4;G8OC+vkwqjGr6T-wml<_Gz3T$$YJ@w=SH|iZ+v_&? z>Uk<K%CZ&Zs~9zt#$8OkxB;Uy0C$M5=7O$)Xsx<T<{mR`kZ`Db-qBPfQ=>LsQ)yqM zSW&fYT&vvC_;;+ac?{}I-{Lq^VZGfrK}jcF3r&culqP7j%xseNsquHHV?M1@eA1#x z*X($TZ7w-!j*6;x<!^cK(82_z_3CJO{-i9Zq7Ajy^s=KZi=e{lPZjp0&VH>9K;Pyz z-db7FUNK&g?BFLzfa`tQmgm#Z8rh^STi4Q2vm4pYe%i2$-(t_wR=L(bNZ+zf*8!tx z(s$^%@vcgLQg_<k(Yn^LFjnPF&^bI_RlU{~P2V<NQFh3et=j=@lI<$|)3W5#MCs7l zNznLN2BXejT};s3dE0d@TVF$8KDJgd(GlV$+u}3Ubnad99#i6l=?NX{`9)Xv&A0&~ zP>Qy%d1%r*bJ_%vt9sPY8aLkPwg#=x?CflZ0ts`KSel;EW8|DcLU(<_4E>^V{r}~p z`u0m@^~-ej%dPh-$hG|K_*94alyCx76{r~KXy?-E#yc$}kj0SZK|KHkysRKO;ZDq- zDvZN`>H47A`k?*xppkE%fGkcaALzLpIU9W7-IIYE`nI?5q1ShVD!v1zazk33^}T!m zo3jRMXOP`JcUoKFI0JRsZg*TCa&`C*ryA=x;7M4C&tIuX4@5DH@LmF*IE;i64(y(G zISZ7>$&I~bX>)rr<g-4^NZ*`RNxCFO!V{=V<)R#RnO~Sc+B`NIR@sSNt1vOe6rGJE zn07CvSKrx>Zd!l?8XhpP0%GT1&mXX!T#-WJ&8h{sAm)H(E!z8E(t!or_f~5pUtr8- zeWW*QU?6HNX=1qG1Xv~adR1UtAl*#l7#F^)kDQUKk(;IzNfK^*?Vm?X!#X2FX#yLJ z{#_~MYxq!z6QU{t1ufu?kg;ss4Ruxy<`PaQnGe&;kM*w)9Ni9_-A+*l$ZBmr9cGit zX`J}8BsOLVHe_*_VvsUjczw1gVwX3eODR<n0<BjS<*k}j@H4YB2LJ)IXCa_VxRk{9 zgztqsIS~s9YBoY(%E)mlo?%!mdeMWS?TNssj@Br97pWh$ITAjv77W6zeJ$iQO|wTY zyn!p>tPC2OxDg1~zi&w|d{D;;7zDjQZYX<eiy{FywmmBF9&Gdog^~H3Tx8PZnj9@< zRmISgk<q9Tbj;L;=taz*#euurA-T_V0kW`txdHKTTj$k;{m=dYpoEbCE*x;PZid;A zK(atWoTQ<H%Q(M;q`f}>CIlWpxS%Mgwi7_*1t78?C)krINqdFE6jMRJVU)Fkel`4h zedUDV^O?YEPm!{Sw(%QtZH~POr!T8Sx&k8dqyb@|r(oAWG*sH|<5JO*eF)SxZzch< z4tHJlHwRm?nYU#_k$Lx7a~2Z#VE5gprR>f$rwt;Z3A3&ZR>9AcnsZbEvR<O$hl>Dz zr}ZwE&F=iI!5D#I%XJk9(2G-QP|!56-^^b)T!9F?+$#tXeziUn1C@4Kzjl2vA~iXB z319+@!G+4<Q{$ux!>ifDPx<GlyGfTu7;Ra|OGO@huQVXn6Axr1XQobmCd4@_z*(F~ zL%#F0J{m%nPeY`O*ew<p(4b7RW5OdIBheYi5$IMU9#|F}BA?pxaM+2Anm|XBxpi-= zef{(ycFL>!@KxuY`Kz6ct}&;`ogg8y5T^1i)5VC`k>%{eES;&Cf3x15QzEGLY|Y~o zVzM-|P6NNgT!Eo~4jbxc?JL?l2lRBs3ZDXVPB`jLsLoG@#t*|31{#Hin$0F!h1vrm zPdYbAyZ<$lbRX{voT=!XC06VW6R(a|pH6II&*(4DnlcXOnNIo@`gWtv{mt40O{z$1 zftw0s+X|<PQ!7z#&z&95j)gj;b*rqmzkXvPyVN<Wd)w(OdmeLkywg2+{qLydZQI$` zZ`gmNz;|E4?<$OmM(49vW?qdr>Ym=jqHH=bf0-^Z|9ZQ!2I@7>8RIT#voAV2N9^Oz zaqK79NG>_1NvB^e&R1a^877qALzzrds&6|*bMth^ze#-jK__wvpr0^h_*pIVZOr5+ zO=Js6&CjXoZLQOv0v{Js1UCvc_mWM27{>iDe%)yLdMxYTG3|r4=W(%LNWZtOeq|sf z!BsK)o3-EQ9wSP-BBnU*HHYg-wy&`>Z8VK-wTru`oI2V1^P8IX$~N;S^^TAl%}bh{ z4+vpX!*o*H83RgIFl=UBTf~$u_5Ir^Qg`qke(TfVXYZ(ce;Q_8!?r%fU@uL|#)>ts z=yxJ0XG1?FAhyH|6bCf^u4^050zd}Ag3hlQMLa!UlLv)u&HudfXW3I1sMYy2o1^pR z_Vn5`qNVNxnD~x#2)lK|mHbPEy77nnP`Kh*QzGT8OJA{Xm)`?>2+%JCd-ZM-j|j$t z>+kP}<bmq@6TuDPJaD4mU?N0h5`qyC21+u7LbLsmj6}8wP`F=`zZTLk7y^&9<>5gD z<0eEk+)Jv#a6#M3K@w8?(f{mlVy8ym&d$xxD=jR|JFc!S&)T!w;_BZA_74t^j!#a{ z_UsICLDEx9^n-&iAmji7gozSeH^N7TO>tom;@dhAxFUh+)g25OQ2P`pz^Hpo8j2#p zjbTIqH9%*CxZ%ON&fD|(gFr6WWA`IrE(=^7m=ulqU{Sx0mf%}1<g6Xr6qT&Tjh<Hn zB=AKrx)IQv&<|wMf!K@B6rgfN7+9`J)kait%ShwoO~wt3Bqi<3h|>Q^&}X(g_eQV} zSJ!NHf88E+qv|zNeoSmT^<D-O!X~3m{`jcSu3#C82Ul;G6e-)K;-L%X7@#D;pM*-W zT)fG<Hx=_ttmP2%aafAT0#eWYLNER4++ftv&m`S93UjYgFar>iFB}w%?mtMiAAX?I z*TUDcN-;jOcx1m8`7X4j^XBbVUkv|Mi{GD~%Y%pfcN<UDVAre{#7E={&&ObPbE_Q4 zMqyQDa>YPqULJEr3RXMa_o@VjcXRhOLCZaw0cp_*q0EL1yLudqd5RehdN%|320_cV zLC=9Ss6ZkH7(fyC$xb-Ui(oC7GElJdJDjz}X-?7I&rvNLz<@S<?fFH8cFF6x_ZK4Z zg`yT}pRXU<h<$@5ZI>+=kx~&v6@wH#84`ISLyE~jmsO5FhLM%{WGivKD2+rU00d%j z&hQAPKr?cJCa@F${8rupy2yH9iym$o%-ckPb`{PR>qgdx%Y41eq6H);{Xwa+Y^QdF z`V|lsovdfT%WryL!nWjXc921gmQH51@w?v-u>m7>EPJeQIU6+ybcs6DMac7?uhS?( zugn2Dq_Roby@X%Nfi|SOEbs#9l~tRBYEM>6331&jX1iq;f>J?swhXtSO`HiQ9sEOe zf)zY9q+C@yzC-2VWe-uxGs{BG>UPzMikeYf(;>W`@2&7y@)Z_9%p?5;+eBYL?+g8> zRWzSD@a)0`{Ta1dNHxTQ#x#La^7`yAk%)M5{QGbXWBaE%HbMb^oN+iEVtWA*@WcfU zfG=lYPc(4(|6G2LnHO2%`drbx#+QuSpi<n2pVo3=Lh^&MuG*Y<M~n82s#Q?Yw&v~+ zZOdQm0CFG&B{>Lsw9&^{$<PzVQ-x!03A70bZguhvf2g{D_1rTl!VjnR#tv7DF?u-} z2T`UBT=w$dPr%KCElPXG_8ceGzUSGCWLoaY4UE(=1{^V|y01*Fr_^40IyJ=5kI`>Q zq`mVPJzf7m?faCuS1tH2hwX(+*{=aV694Ceo+_i)pT#T`_}xSk<T(RVAN*tc7WBwh z%!#K^`*LzzCheg^0|Ch@qQ^@70d0$`$<Lxg*4~jY+MkNKINt(t|I0~j%#3B*6&tp~ z)|y|LjQ`7+mD|fc{P<x73S8@fK8&ul#0%a8VMV)M`(1=eP2>~*t&RAG=y@Z1A6!u` z`$Uyk`|-u&9TUxE!q+M+p<-6svb##?6Ub$x;Y0z|EOno4r!%dpsTtX1p`3N{PPBD6 ziY}jK@Jc*BQoC`N>QH@H=4)-#-Iv_&Wy;i|-NG^UghjZ^%c`FiW>BknnT*t<BdR(V zG^!NS)KRU&<i<))Yr0Cba@zq2{KWVW$6@;Zy*?-9nS?T}V!kl7I&~_&I7{(3I-&GV zE!X;_oai1B1g+)=23Ok1=f%QdM#H$ty(!lG`FOU2a$FfApsa~vA+MDu@9*ZKv925? z5-sV9Z}@(gTbmwKjv3a8X^N$FJdXoav{mRSIMbHymB=0PD!yxu&*D(F;!PRV>bRTD zIwZ7`X&IP$(3a%=Q>*Opu)CHmlU{l{;kFl@`~70kLJ~N{P_fEOmtN>+AxqOC&;oDP zP?S(;a$=9`L8Oj7)z1vdaV~XRjP{#U*IYA!<9{4{Pg<<>iCV165wFH{&=}Snacz5T zzovN&ef?6o^U#Ntb<xQN0vV69OJuBD^$MZS%FP)|)GtQ~%M8BLx!9q_zoS)6Z9c@C zY#?Pz)ipiG#4A0EzZkN5&--P3C>m$kruz)Q)h@Y=b{Jt6-{5;L3UA6V>%uyiaYqey zolqovgb0Xj1Hz>8^kTY=`}JtomWO}Om8ln3+Bd*P-+?3=e667@#YT0N2Xl2UDW}qG z9jlx6vpN1TPR}gHLn-N8n%jP&Y5)<Ysk^Cp?GJJ7IZxM46zcQY1$b>DIzEByzZZ;U zJGni$HH|q*ZTYPIjmYWt*|}?4)+S>O3;T@08nnLiG@0Lfar`yG>d*W=-)~PBbrA=e z&)Vz<Fiw}_i)rr9n-|V&f@2g#T5u#gbT_`Da&HVwH}!j49y;-q%I=Vvd;?Pds{poC zSV)BbZum*WV@H0sLtBy1JDc(~D1g?2{K@@)(D#8()1Oxt?qmajcfwv+6;pMxKi8vI zfO^y@hA2d(zU|@Ecj=VQy>(TOPrAen$)$IL36|314>v^<izB`;1WB_IU7LYt<|5PJ zmW1jAKh%b`Y=r-jW{kdY&LHVD=W4l}tVH$z-&zRxTJ%E2G{JC3=a$=JuguhaAscH4 zy|vZlZl{0sviz0N3-uEKP6A?PcTg}ya3B5%ACUb(a2j_2HDR${YjHmAa7ZT;>B6r> zXbI4YUK|Fr3df8NeV2qoh+&_4sH+a`=I!Lzi>u|>OJ{ku%&ue>4jK31M-}H*%00_l z7UD&-=0Q|W1JG6ka2^zYXy-Qn*}ga><V(H9+dr9Wo5Zc$y;ayPy&;x(fZCM>4N-s+ z&NksmAsrRnOq?Rl)aF7g(3n2;+k;#BMq#Sf9=y#LL2gDd_;IlM*Zub5c@}yXp@>jj zb7=IE@s}l3*^9~L<M=4KZ4M9NS8p!BLQ91&RvKP{Q@<)`Y_A+F2n96()vfwNeJ3AX zxz9w|Ulb6u59?0zN7hgf*}8tg>_Dt^<yVd?(>{;yFx`?Id^I2`k~{m%_(wDpU?_dP z@hvm!a#iuGyDru{)ST^h{UdyY9>w_0{O>y>_M0mU=DS)^cZW3s=9wy`=2O$|-VN3* z6FKAT;*mk`nzgq&m9a}dN+EtRDo?$CF$FEieUn&AI(7eyZD~r%4Eq~yjkQ=^Quwy_ zujQ*-n{U7$rkT;JmWxb6Z{#K_Y3Nb+J7(1O!N-jANoud@lt+J+$g$9)>F(bz$Ni?b zxBkLx{eDgx`kQ<B)h($#BKiDnjokO+RT-}H*F(4MVW(eVo>yUh#~$FM{*OtVAdx)Z z5f#+jPZw~j7mF<_tOXG<?AhSqM|6ZT=LEftcc*Ig{`S(7``Uem)86$Ec=XcuC=E=n z8zkWwB!v!=X$_KF4w4xGD;xzOT7gP5!K$9Y>gZrOPmtP+fL&{ovC=^P5q;;yKo@Qr zW!#`8YHfn$5Hp&fo5K)%n$XuYL2uChnyJ>-t)Y&F*ia@EF#EZe>$Qi!t(UuJm?t_c z)#Hh`x}!%K^!<@X6enuC#hYT;Cm8*Lo<^Qg%G1`<6-gD5C>0S)^ZaFLh>2(D%}b9K z<xpgqm0*b*RxC0tnJ`T}a<&JIxmMwS{vw^zWQO`<Xn4S*t9PBv;qQ_>#Z#^DJ*}|A z4#}{Hs6oT*>xc}RAn}qAbhuykh{h_FmCQc0NS#`5ABypesR-ASlVobWdR3$n1>{6w zB%{JceC>jx$lf@o4@cM0AV2XuPlWjeNk(UcM+_}TBSSx$sK4fQx0qX2n={vUM8)9T zJl;V@8UJ?KqVb2oK3=|zg@ngC7slETMgJJVMun6{XTJwWr&;9$+vF^VG~fo=@dWjF zSnwK94?Wa#1w8L5v)*eqJUEKql?*uyRwYa4XKam4Z;hp1ap0iU{$!YF9v(V!6s4GM ztzsK`H=?|o>^6r$u!~bq#B;i`B!O@(zo;hxZIcc>Ri%$PBRu?=Bcgx8;?9r!9jGI& zZR2c4A{1{DZfUfasEAy}p3EU*mS|GmnZM22^B8<)@@*uAdL*7?#R=<<Vn8}urCX)9 z#yv-yn`$KfybdtAj(B&B&b3L{;8Ar2$NTW!1EkvhP_!UkRB(ER4iZfpj-I1V)ejDd z(TFyeLYLzOjUv-6k<p{e=+lw7<N@qsEDTY84R!ZQD{eMSr3T)sYnYoXlH>RYyv(m6 zsjYjNzmb{2<tgnqsaNRC+!A*eDK9%QB8(xCo1)_wOStDqRsv4;1zti3`o%n+2SoCH zOoV@qRqDlc676XAATs)jC%GT_y3|OyFFnoMF3VN%gCIrt$HT`cSnefW><`}OzwAP; zcr%%rQ=8MX|Is=p-z3;0(+3YfG}GoMNoIY9XOy=_E|od(bA?mfW_@2tsj<uD49oqH z=D&H6dYArz`(-)@CORFN@OLx|Wv5J<m*W_pBQjGU$3lb?5ksq5_z;sp)t*sZ9w5W_ zo?$gV#!m0YQ51nx5nEV^y*)Oel{U^EnpKcO*e{`MFYI_bpXQby$*o(AQAdCm?m6gZ zl^Xf0=>a)V-+grcK~w%E9IT3G33yn<j`xw(xX9iUtm0j^Ct>K~ZK%*<ilm_SmBB2J zJl;<({(BRPgN$OL_4{cAjT{X>3@cZlO+rDF-o7lyJ+MeO%5(M7LoSs6Yjy}8*66n( zl8y&2p~3G+%Z5WRIlnQJgBa6WOkGCQ;$f6(Xj!==a%L=wNz*um4zsUp|J}MWRr1B0 zXC=Polb51pTi)^WCn=$k`L&waZ+`~jXojrYmm?!FNk_3;l9l5ZmSQ&+p1c_jiYcXZ zHAXF%pPHV(y{nGPur(3}Whv#^H|X-&j5_s$svneZ_Dcw%^w~c{aMV$pyB4LA_}Nx~ z8eUJd34X}cZLul0$DMH*OD4wQ_T%Pi6!V`N!+jvBlq7XXy*kRrl_emxrBRF^TbQ6O z0$I_i`te#*>FQ;IV$_GO>qObpT*vZs6Q2a73RBgJCgmtqk?rUowqfYQS~8QSZpo&n z<GvKK2})OfGW5+I;msxysi`MPJ9KYYURIB{*f480*+mpe8n=k^N6}<HdFi0eRhsG> zl@b8WNp4RGI`FQdtyBGMv7=HzBHN?``&dPtlyIt%L_m`=?)7%H1=LZKdfL!>n-bem z;XID{p3?Dq3~MUPuU*A|{~hal{}==}SI}n`;~BjUyKxKu(~`v<AQ%-+EZqrx(b@f{ zu-T_$g1>y`xGPwrYwgr&(ZOW-^hwR1TIna5POX{W=s&$W`tUu|pQpVcy~XoUPiT}! ziFrju)Dz?!L02PP?c<bgw~&wug5)3%uss3;XXqu9>!mR5UG@a|*!RM-dg<gaG<Ur$ z6QwM2eGFQ?%)T+4ruQ$ZdawySFZyl=4=@P}m`&YVbo--#V?(aw`=7@ZUt6o_ZvYP~ z{kRdWi52~I!~HZT{R~mfq=<ecQy(_-fy$_X{?dW6;Q^ZRj+j!Yp0BScOTbgB!G)Kd zZDUQ*AFyB%UFP05cCWL{EEqxrJ58W!P$TQk#Fc@fwZW}k93FE8tsg^NRKv|u!!kBQ zpE8F{Dmz>D2DbvBvM$gEj~U$S-~VJE=~5ZN+Kl+cd%6o$*%_5Tl)!O}29+ZS%TchW zVlZ2TEIRsS#@V~9v(ak0`q50URBv#RDRbl-wt?@g@<Gt-TE`kKqq;kz2Gil$Fr2C} zpGf}J4pZhp0NW!MfKb?&j{bxf<?vzhM0jO}<^dEUHVJ{#(a$<(1AvJIljfXY-sRxU z=#bp3gh9TJ-F3eCPSWq8pf~aOqG^+7>r;2?)o&{EWidVWH~x%t>Q|=B5R}lRxq=}8 zi}R3lrj{@(&v+)vd*)IYhv2L!dtrvE%J!?N#cIjy&EPDkw%InqSwnNMfqs&m(MHs~ zxt?;GF(x@Dx$yyG`L6d9QTh3&2J;(+P^qptWJbpZCSFl+A!x#h((SogSMww3vW*iA z)69a7yalI|$kxL}EMHMLpSp3^;@|x#8Ydld`M3$W^jOEwL3efz@;%Z|Lf#QAnF=mh zIr@9ie`d+{a)@5yG?)iITmlddm{be}$}f96&6uy2jgNQDj%#>yEuW|?Z*(sGzUmv5 zO3zk?I-0MLg{}lxy*2L|$)pG739j0nYrJeTE!|iVr`4{QTuozqlVPP=S2bAs2fLF0 ziur4h3dI#8NsK~jmSS(0l8eN%QF#T<4dsr%pCSp9F@M*>0>l7SO4{rSh6qBbFJp6+ zBILoO21!Z^;6Z#!`1UL2=}AHt_=a&?)O+prCclk37nMRbfeIkUsUOWrmg0SgAuUe{ zQm=sbLWqoFcoKknp&h*{v&CezwOYuQq>E>lH^p<`X*nT9<|1(F2Gx4DUDJz;2f#`0 z73ZfWpwE#WaE9*OXEov(;WKP0!my=YWEB7>>^to3V>}u&X2dp(R|ns$7d8?q#6^yu z!~)2RxBYyFf7JtvuT|gz1H;Jnw7LlfW}WYo11qnD@w<&e{W3>*=9ZMOJ8&`zsaXyd zQF7uPhG<c#S{6cWQbwFPkf1sE-Tl?C1)ILG)RiAsMK4@igi&Ok-6DWgB<b*t9y>uD znT{Sniv>;$lyfejc_fCfMh4drp<GFz>#Sphke#%$5T*xk7mL9qcPI%(q;Sc|C3}H% zbGXE$<llDJH^LDaF(^Nx9RzLABi)rj1nr!v;C&20bcVEhh8{Avu{KNofQ*cS8xA!S zz|(^R69C3R0MUOewje&j0D}7?hDQ&pG#R{Ij}qie|FTY$ykLqEC6(%O%y_|Cu81pH zFUy2O&-GYJ){<F*oLzp0AqPC`m;;45Q!42*{GJ5{0T}(yuw;cj2S?;X)4~VkZ6Up8 z%<uHiG|2#)<YIYwWGB%S!c61>bApS+e285R<Q#bg6u+PKh@g(nUzpVvA^0~IB)`M) zH4!ExBHo4)GyBSHqfdDCn1jTHJ!zBK6iDc2E=mX_6yKGq`9Yco2Qb9jHkxrgs)utu z#m@);*su}8-f_XqF5CXeNq-*Y@>sT8jp&=gADF^l*k!y=l<4O@__Qq&{hjxdvj9cG z_gifSPJJqvGp^(%FKr+h0r0DY7;E+gFS#qgBbOWTU{r$S5$h#yf$Q<3OD^I0Uo6wO zPIG`|HlAS-d}2k?KEQR9=yr%Roz5ll+0IP}`J<#jEa}uN!0f)C^X)=MH@fTJ?1g8# z+atVpY`kgMYmF^@9u^2&H!0E?z#YKA{~8u6%H0e4`}Ozr_QxM2eGe-{E;Jtz2=!8~ z0Lf=;#GdS2Q*Qp%Dj+D{CK&?Z^xaGLGk{qVn7@`U48#EP_qXLCitxwfi7*s|LK$QH zkw|}7f<Ii)1Lhl{FPIryjwu(lwzjXWv;LnU?EkFTw*F@bE5bCwM0!85otmDRWRhHv zw67@l6U>RQ6NE<q@%(wVK)!;0n?PG61C$8Hh{zL!l<y-}%Oqg_(9)^A{zObJvr7a{ zBjS0U64~>87Fhi79w1Dt1Pg+}W<UfyU|UB9nUTq-a+(M@3ldeL5){WulD&g^j2gj# zJkLp|K|lj>5U9rOAPv$<a2|`5oH?qW3rB)1fDXK~(H6E`&t?CMkE+tB>Fqv9wb`*& zq(74J2~|~<iS0b*)x0r^1f%SC&2mfK1dJqR#OKt+Lnkov`hp5!JsgWb9N^arVB!d3 z>r=p$O#Ou9EKmWLEPq>!i<F!mMVciY%_44rlZ-8fF0mj+p^VoYZ~sOhOI8YiYlwMZ z-<uxaqU-#mRwa}ICY<`Ma%)h4azE~mfY=pPfU|L(%dgv%R6$dl`3h>)2}4oqnPgU< zHFr8uhn*iaeAsxK7a2q4(RvGf;IB)${`aDkvB6c*9D)uav)s!?KnAnmg8-HRT>3Nl znnFe*0V+WeaximGNPIX8Kk55@O2fmL;?3w!wWU<PzjoA_O-Z+pdQJJEynFG=RCZS2 zWSa85M6Izrt(VplwmF941}jl9L-CiNePtE;KZ`yBjP9YWQoT6v>(a{)GIUf~o)C&C z3v+rKe2&<M3%Zw=ic5vI9ps{*d`EejGRFmU)g!c2*&htN?so)S+X{Urt~HK|(KeW4 zv}ohCC2i!;a#@Op>g|3}qH+82y^}g-&%f78#+On!7rt+tsQM$P+%NL@KThiSaa7&J z7_tg`ym8xKKE=`Qkk*FbJ8N7ps7N8KZ$(x{k7RtPh)s|HW2)y`EzaAH45H5I!tG_b zTQ(9u@E1w<6@O{{=_Rb(e)s#2ee+;9{kwW(lgC8r_Ce&g)cb3Vi~fMV+ZR1ieX_L= zJOVooV+pq4-~pB}ImgOyeBZiG2(?)75Pio!em7H;z>f*VST&~T#vIc(W1z})c8q}1 zDgUH0^?BIj>o&{!DViT=Zq@CNyGpxN=@|zI#b6?CrT1bi_tdax*LaIO)TyR?3T^Um z_OaA<50wc&n1KE~(5Y_ON-3#qli<m#<~aLDcVvpoERf!vaQ@OrK!r9z5Ey{0{XmF) zRj24NN*T5B-uP=%Q*EnXLl*xcDkt>--TEqw2!Uz>7`jwkkOG?GWb=CV!cx=P4m$U` z4mZcqf3>z9L|r0-VwKC7-)1V04A4Lti{emq(>hjqW7OpVYhqcjdcx#kd&zHIKYX3X zj~*!9@xhnPQJRQOl1y7*bV0fX1LcweKJ4P<BhVcJ0;l;B=Jp;0**-#fuoOzYKoz*W zKf-11VV6xBnHKI+L|LPB>BW&3%zQij_O<5JDS1E;*TVGT`T>AuB$~gCp84kePRCEL zV~rWZT)vC~MV!XGuz%`GZ)bW)Cu@r!z@Ep?WKbZPG8_<(Gd_1gVgyzA5jN~wAs)A} zFaw7rn1WCwpQw8$3_rDy%=BlF?)61?7|pwTASMi`D@Cki$o(<OP7&ER-%Q&|^p-7X zXEIe)VGEDMDfiiHPXJj4MqHHfBQPHHtQTh)7|bH5$6&v!r~)(HeGo$fCjTp};c6P_ zM^Ij{3)54jkKXZo!Jzb)%q8?0%``b2HNt5FiUl)#OWB@{q-GEX<12p+sfIJNdfARB zc@sZ()Ud*NkH&u@4yBkOjiiwJPR^XzN9u=;cdY#qr`*WF-P&jgA)m$5$4rrtf(n_3 z%E-K~gGeNF)#d%rWKV^sJ?nS@Sl`ws^0yXb$(O3ab+ag1Ko5`u3jjbGsYHwPw4RHd zDT!rA)HaI?@L$|16KJwi$Sjb!z@=VENs{UZJuiVMT;jN(;eb;YHnPunI&#k<=#m4$ zx%lbqySFnsip%woWIKc<Aq&8hk3$?LPe|Jk2xLI$KxjRW2ne_3KN?Z!t&NqbP7cr7 z0v_lqRUGh^evcq70<v6%hn-xoO?^`5Ou1wUd5gmu2L%i$y=c?X(QbRDjIxZo7I*`| zk1x`y<Nz=twVts6bRP+SCXas+tmvmf`|M|;a|BHQCDnFtSYi*}+qD3)<O@i6z&G6p z<B|h=q*A`1YZU_z5sxYd$-;X;BiD|tdir+1e^EVeFfss38Ih4m%u!yKXSJmc?NwoB zV*?fe)U~%R!xyB|>KOneYPUN|C1!i1R>_Y&HSC@}B1GVUX#kY!+YnYM3+QD?jRSAm zMA0bKJFBYmA%6;{BJs!g$-k87Se)ZTXnG`=^at5+P!wvyJH0&1U!H`%*~ZNWaxjY% z3$nsl@7X4qz@7`HfLdyn<sRs^9e_&Q1?uv68v&^$q;u{3!e~MTVzLa>S8$Qx>AC9i zjqiOFTZzMSc4aM;xI<{iZys7a9@MUKQmi^3o_eOIO~TR#^@N8|I_?ulZwH`r??jF6 z((InAZu#WwN5>fx5d2<;mf*zG8CDBg-km=<5XQ>v0|-2)-rGQrX9jV+eQ)&r@^GE8 zccn}Ie3i5@KTxECO)AfB=go*-Hw(W)PG#3vXB{M^&EcOIJR>mSNOEN*im_Mz!D~_J z-c<b&;$Z!?dI8FRN<{uwvUSgUX=L+x4ergUQKs?oZ#MVRxa>1~a!tz#uEvI-Yy}g3 z@72%5R~Uip^DL)7sv9{!T2$1WTsk_m_WWlvKa?E%PI{U8pXzmNO@4bEVZ1qM!&N1z zedtTxx&?cgRBR#pEoqV7_$D+en_TDeaa$kwZZW$V^6yMZ&6Ms>b?Zn&UrJ4z^mYSd zYu4Y;BXrE&{^P*>JnKo9w@ax;r#hkI7E?d4cgq4}M4y)X1E_MPzjYp}zaD&v>-06F z@XvvO+RuR`onOWCa{G*7GHUYLzc4<Sb&LM?$)#8O*TJ2qc#_FAl0v^r4?EAMrDRwC zRJqq~5l!)NySMKI<+l0AduWl!q8h4C_*zWA`g?ek0zUrgjbr>e2ix?6=UzKM@ITjn z=W`h7Awkd7{ayW2=f<G@$dpG1oh#69x{B#%KuY&TshZ!`3#{ws!u3o08(>YrtDjdB zX8iYc@o+v4EAix^fvZA477eQFj`_8jsRh|K-;a*!H~?~Ti}2TkC@4LHxs<TMzt89` z&rUbur}FIqU5n>bAF%$ET+NC+ucN~=^04`&Kw$*OW43?PiJyL5e&-=Y5S?=SC8+t` z%;J7Oq_*vO?vIeS+g5maajzt+{JoOLdiWeHF)8J7{tgg6OXKb@aa*7YfDGUkT7Zdm zEj1_~-FgI2rUW>K`N)3>m_2loW@Da5I2qQW3}=Ekpg4x{AMXXHs61r?NRSz4P`X-B zX|sRl<G>p|0LK9gF~f{x0WcfjJr4(Y<OdTsI07Vt=#SiWJsmDtiN4{6?sA24tA$S6 z+K*dGWEq6np}A#8Lf;Sj7P-G25)RXQ7A953zku-aHhlQD%thNUH1p*H$u#e<GEXfY z&*<x56>jqd6k#Y$gmO~&q?&i51eRIhyUR_1KPih~7TPh#(BDPMJusZzwuxO5z+8ro z?D*`^21aenX(bK|)Gg}?>PIyn+1GL*YxAN;5=A~1x-}prYEbW>t%OSP^8M;|%OLBz zTIh%&zty}eGY!!+OnbJKkWDvcq#3kx#I{-%P=yRteQCf-!_19{IWQC#?E#~%BGM(C zzoCOJ0^DYt!E!7hQQdf`S3E2|9=|P~a3!AjCLT_k09gUxx3Q9HB#_<2(+4Jyw<XZ? zf|>CWnKTmaRa8!1um>tG>ByJZR^jJ&C+jb9V2LPa{UiymB&qZynYJXkl_Z6mBm`~p zW9eiiX&h%!9Mzj7>3D4N!-!;^n`G7WxJdPgb2Mifj~swD>ECsv=}L;(O^P{f>Z_F~ z=#kGXN33PKy&#Bt?=WeP71w#x*Ht<+$}mMFk26;+b`s>11d<7W-4APAOlh5-vc+~R zvGpiLz5`n88%c^RpxtQGE0+^Xekb}y*zfIf`mFe%c+nS^QS4ITU9E&YKScc^&=Gh} zHX$*4w$T9c^jc}}KkA;g#b_MrhebDOJ?P9X>Nu;VbOv^9{|Iz_AUc6sXkt5Kw=hei zA03aEnZ)}ZOf8dr6C*j0xn%clmn^(nI-_SLy&jQqZJ8OFnl;guRd<keNSir(?9F$T zjr5FQD@#Y&VZ-{Nxu3up<M5mzUN7Gy^kjXGWMS6HO_tkA4)8kXV${FzNBZ?m9)b6R z+nZ?n8P1dA+&m?Jw|SwF3v{$}9#kepfH!+OHN}}a5OSCY$9&+A%wH>)9Be~F@MR+A zY<Atm81W03SF`l-JlCZ7w#ef8j2uc63zm;X`;0PwY2+;O%H`=pT@lO>nc~Xw!chv& zHgI9=sHX%S!J}24F}5P>Fyssmuc>I!L3+`GSAmwXwKcww&yONXzQU4-jOVL`qwv@| zP~lX0Vcqv)cQW(oz!GEWhccizZ~gm=&@w?|2k})(J@29jd~57z@k@M@DUGbU(42RM zY00Blr`H9!LXo+c714s#vbSRy3GHRc871WHIWO9aWxWgcc7TM#vAL0NwTv-vZ_F$T z=UEVjz7SJ^A4|=b6M0)EziNX+SCQyd;f$`x4pIu?t2};I$~9K-nXfnyn)ZGSJ(5uw zx0*4Tp7VM*rykGI{<2`Dy=wg=`^joa%&LvEQDur|`LJ>M@rn@E-42AwhqXr?d`UaE zH~4CwW0juG|FTwZq*geh(q6X)>0P>QUpY~pbFf-`b`y=#<O64xybCMB^~v>Ut^MAf z;>4Hlf@kokA%nsPGj)O<KhC0|E|6QTi~U~Le<L99rQ!`HC|SQ=*sI=3qcK0d-iH^9 z`?}Yw*QjoKAcH1T@Ht(k{#uyMlGv7AM%cpr*0IAEWG<sh*$Q6<)+=MjJH0TYCd5c$ z$g^_HPWt&1(KPZjU}m%qI9I`;6lu~}q~4tFg*ji%7IJ9zHp%%;TfN-g%otftnHiS~ zZgHU}aIR>)EvtSQ-jWY4jXr6D@VBOWg`St9cW<-FZi|v-n0J?()4i+BE?X1U+SAwz z@;v=h@zCX?6->5``948Y;_ZE7=ny<@%v!4}L0e4)w3@%8;l?vNy(K2HqoX2wy}j)k zud{50y?+f8OW!g4r#0<a%X(R!t4;otNv;G(7U6hpw?nNFfpu?GS9C?!Fab7m(??p$ zfq(b3OfIn1OFE0>q@t`Mb5x@~YD~oJPeIaZ>r`Ub2m6M4zO-LH(XE;VdF|-XKW$o> zHCj(FK;w@6@&ccwj{R|;-Si&Qs2Z`B_M0Q<+n)0CKHtsLV)C<`lFyBcW7P{|l9*=6 z8G4|)Ze|}BukdN(QA0OwMNYuytjWis{PcCs>3yJE{8O4Liq7g#{Me-SPwWo8m3-!^ zj=c*GeGTo6#`jO0ZD{Hjs4E=os+%{BfnLe7kJS&pckEy{Z6<h<Az)(S5y>Mk&gnYZ zS6e%zX##ysUhsf?_|!t7{pE11R$)Kg5Y?ZNJK18I)%L{uPYiT<ONQlajvUbx>&N2@ zyIJYHUjdHy7`EoFHb4E;UQwxA&|Ash<_xd<bJIhYA#PCNC2|4oz8jAb@JcTuWHPNP zIBJtFP3;<uCNg#$%gVO9nSinTOiIa28updQ<rMt*@CAhHTnlyBo^%1k#-?Y5vvC#( z)MmNivdv6=y_>pVnEoy|{nK>%x9{|I*7R-X^xgXOzq{$b0^o1H@xKLTzB|sGn-V_P z>OY@-@k=V&5MhyHJP6vJA<2#;?V2fEpZR|R1_}B07hR7TJ<$wZ3>MwdhxpM{DXk+- z(rjqbBO1~bt<n%J(I-vODGk#w$kMaR(KgMAIK8|gz0*7`(=ENxKMm9+E&tRxUDQUs z(n#&oFTK<>Qvk)lVh5litkTn#ThmaTF6~eWny`gv&^TA!)LFgNAfrTC*az6t2Tg?r z4P+(@b~>tn)qbeeW<4zeP!rVH06<U^WzqmzSb<+S*JNGSckM5EeIWUP1t=iaMnV-R zz<nryCR#z)S8Lag@YR|v*Gv)=s?Z0<S0-Z+)~ld}R?Tx#U;q`OAE~|CLDB&2;DrYO z3AyChgssu)tkd~n6E6lCFE-drf<lfx8mDa}K#&^)qEsD_d_0$hLlQ?r0@-uaA5wro z7pB;&VA-07*~z09f#MyQkP^1NBq<>njxZ7CjdTr2j|^o1kERu{jsFIb{nU(28A?Qr z+D(JpZ5or|2a#43|1AJxz!U}`*Dg5T4~PJ?fr7~c0o>O(d|ea*&>v@j1r4~`K!8sr zQGwoV5)SUxj*tfO9omCY38&LkUPvN*T?tZP;pbfm%snk=a5@d(+9q)!RtVf55<dup z-H;F)&|TSuec3`%7nCsu^HUk5U<0}_*`3e`eu0AglZ58fKOO`i1rPvIuHXr-*a5H! zqX88dK0$oYAV%)pS<XiNfCy=TPY*^KpKw4$<w22+PmORI2h`-1A?G>{EEiTGEK%SN z#C=8aR?5==2O!@}RUkj^2!|6M`OS#?EeQQh4pgL6;Ls0*^Zyu>fkG&j5~p1o^^+zB zzy|<=LeK-}*uhfEy$UIj7vKQ_q~YBUh6xYmSdQ@JWrPX>As`b}BC6q73&LlSFcDYa z83-_G!E)arK1cA7JOyq5C}u&}ZCN}%WUJ8Vn}Oht5b0Gp=|)aV2ml=uaSyhE50PL4 zC{O^qQ0Wp@R3`E3jxa%WQ6bq;f!L4|enmyYF$lp&@4E091#kuc1RV`<52NwYYAs`y zH3lg`8SYaMkx+r`-UnIU=dRKY4iZ1_-GDTX29Fj$Svb-Y<{&6w<Eh~7C@my|5F1Jb z=AMupn-LXSUQ;#Y?hYdFe04uxJ_w3^?{k$3`i^J0fd2shp&EH*^IA?2vJM&Gp@5@+ z0)%4|x=}xf@EzzrPmp2rc3~}As3fGl8I7Gid7XTzO^+&1(?#y?L_}PBk$+il7fg^M z3S!Zi-rc7|@2Y+f;1JpQjsT7E<q$ACbrF29LH7!>AtsUN0Av!@-VbAdX9j=;8`9sp z?g*1TPbe_=DPr-~qVYw-5|1`x`j^(Jkk{iK<U)?ycFQ@F-tvwx1}J!a*x?&|)%P~l z2LbTjC8G25WPy)C`MjZET<-U-4)~d%8{km*2QgP?aDDQ<8MC7i^Bxr6bWnm(>fqE) zXkh!b!P&ra_Q;bJ$!!4DZW11$e+51UsQ*P&e*fDbP1H}lBE)q%<!~4MkWU+7>ckHS zC;|d}0S$hLiGB@y5Q<m`1_BU#D2O%z0zd&BjwqIjh(HJhetig}rU(Llqmr(E0tjel zKzs&%C<s7jXb5QsvuBjEOk;dDngIxweaM40e5DXJhgbnpi#Cp--QM5eiVX&7ia-#D z;t)WO2I<}nV?b!1?A``v;eJ>G2U25W`Uo6Iu%N+%2mz+SazFqReW4nlIAHEqA{%JX z1gO*}5f)4V3_OG<Db#^z0nnrygQ5_ck`TC=M3F8dA|@!XAQAvlrKkWveU2-X3=ssN z$u#O5gAxJ?Tz*(?L@`DbO+Qj>l#^%=qW{;g>l76*fUggeJ^~D&DU~SZR{{09jVl+9 zpFe;I^Xkp3kfFn`;8565gb~p@afbmff|pqFx5kSjHckwrtDi=Q9c$i<2#Y&$Y00V; zaF~gKY+er-P>rUe$Io^9{R_CacJ00mM{dUAi&dhOoP!G={&f_Z1Dm7~U;Y)1<wOPg zunh$P4Pez#KlzSjU7y|Aw!`xsvoLpXTQU(Dc+R}Nd%!@VRjT^FzM?)T^1Ved9irzk z20(BI3Tye{mUpt@CEkJr;r5q(5Jo6rB1}Lw;c^E|<kf&W0R|v}hx9?u8Tj~@AZ-jX z=%8*Fw&>!EFnSjti=h+%0XdH02mhN@{F!(ciYbb>VvIx<Y2<_jyad4k1su{q0SDX& zL4RL000fn$(1+lUL8?feUo;*m=9pwEmd1@_y+jrSbP@TTf?b9;WSMl<X{TIcFoeYz z7P|N*ka6xc=beNWYN(qh1}f*5<{j$jqmZ`ur=qqE8tJ8&W(v-vlnTn|gPMja>ZSZ( z0bZwiSvu;ftkzlTsi-FOX_&3nYAcMd!WpYU0F5C<qqhbt?1WgHfkhg+?phE)Qt;#2 zu+T=!+yTZS3#hUKF<a~zeM;-?x8I<3z_H0<+v}$XbPMjf-WDLh8U9#%t+KtQ@#`6b z%yw=X{PyebzW@g;@W2EYZ2$1V2q&!Y!VEX;@WTh63s6J-n0hX@%l6tVwVIq0)5jo( zEb_=Cmu&LMD5tFQ$}G3+^2;#CEOTW*ylbkw81t&o#`q3G^UpvBE%eYt7j5*>NGGlI z(o8q)^wUsBUD+V;VnJ@NIcL1H)ztPp$k$+pE%w-Cmu>dhXs50A+HAM&_S<mB{q`B~ zj(auMSvR<Evs@qG_uqgAF8JVt7jF3Bh$pW2;*2-$_~VdA4!PAgOPsgP_1eof<(zl! z`RAaAF8b)Cmu~v$sHd*_>a4fkx)iX>i}&SvOH3ZbxaY3>?!5Qz`|k|fUM|MM7jOLW z$S1G-^2|5y{PWO9FT(xw)K_o)?0sCX{r22<@BR1ShcCXa<Cky#`RJ#we)zSo@BaJn z$1lJ4?ay!j{rKlEfBpLR@BjY*oF4xINWcObFn|L*paK`jK=mcCfe?(K1g-bL30m-i z7%W}|GswXXMsR~3450`Sn5_|-@Pq^eAqrQ>Li7;?crc8i3};Bg8rl$eFT9}+cgVvY z`tXMa%OMblNW>x<@rVc`2<(=~#3nlNiBOE96sJhVDq8W1Sj?gpx5&jVdhv^3gkm57 F06R6O=$QZj literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-iphone-2.png b/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-iphone-2.png new file mode 100644 index 0000000000000000000000000000000000000000..992d71111061b04aab92111bcfa8df12716df5e0 GIT binary patch literal 180171 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-send.png b/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-send.png new file mode 100644 index 0000000000000000000000000000000000000000..d51b59ce489881fc49bf2f5e3e6f0af76cb6f9e0 GIT binary patch literal 21760 zcmeGEWl&sg7%hl4AwZBo5(pL~5Zv7z0s#^%1b26LX-IH)cZcBa?jAh2LvVMSm+#E2 znyPcF=FGYC^Zwdh^zPleUs=z3)>@kY87Z;XNVrH42;{Z+7ZEuK<b@Ih0;Bc{9{dG^ zuuTyH`3Mmg5tMgI-d}Wd!kD_dI=Ql_*qOzM6nLd>@`C96oy*Z@0hgnXpGCr#;IaeW zzkm5M`)bKGV(IOh7bHZ8JLZm+7dM~E!rtB^HoUoZX)PHX)N|Mx;;k&a*-v0L#OUwu zUlkzu2uI}oM(EXvW&Y1scX|BBejdorfAIH^DjqsSdVY)Oapp_gJ8<+aV?<PXKE7ci zgOPkbcJz>FAwHk}H~uBf^YPV(C{NPoqqgq5vj0A8_Vq>V^F_Qv#Q)EWlzZTpMN5!U z#US|zX$QIdch-{g<&)m0%GuzcAY@cj)Y0bLF{3|w7ZfoyM|jLh!};=5YU=9!eSHFj zQ!TL%&tENc|DiNlYRG_@fWQP?P1EBHf68PgPcK1&#e6n&(e-k5ZS7Z76gp;5_g1%y zi_0km&#w~RJFAm%eI8z3^A@z{YxsNY#lXfUB~goJ1=JAQ>Gk<}F(lB)|5i#hohcp9 zwia%=KK+oKoLq5ELm4yBdSF~pS$Q`&7>wlef}5KgLck9l8qk-lbH5vTnq3OIERd&q zvLTen8E*)SGd~Kuc+l*<a_oJw*%k{BB5Jk=qtMm35<~xXZocsP@Q!e{!5MZiwlv+f zmTr0`k=3$atdlQWVR+X&8dbD#YHfc%S>Lr;L)yiK>+<rluCY;<ElHLFV|qomT<MFX zWTzfehCG$Et?l4DJ|@><Jn(9Gyrf^Rqq`eUOiYXhGpL$3s^5FesB3I&tf6GqjEt7{ zH5lRMW_$~aL*+Rp+>q?NJlz^4D;qnvLu@-Pe3fEMS6A1Cg@p?58pC-N8caMqJS%JK z{)*yut&hCC_>f-y>W88k=?t0h#Kgccqbh<4LSt53CXESwrT=Ec_30n|d6rlhBwr<m zDI7-$vNfDEc>FfYDV9AsCFMqcn9F3+SYUIvI)T@a52B%=@$bS#G=!ixqf_kWv6nQO z=6gV_`JC<TP-$JGAv{5~%5X}f<IZ>%yCBi~1f~OKIXOA2ljD_9#gENRO@Axwxhwh7 zdfSEl5Q~-LaP4ue);1{d@bMFP?BT%&cE*dbYAu%qixv1^TOB5II0xny&&lKpQFQX* zin|HDARr*%;N)1@-yd2_i+!t7Nf+~bN~gV})XK`LZFuUvqoX68T9e4013n_9W=yI( z!YKz85*iwsX`M>51HL^jOP0`-N-#cuz~rPnSWv~QyW26XGL;s(1BxZ>p(%}=cGnc^ zWM6yqm{vD8eS~0`4M#KFVs<Bu|3*)l&aB_#(sv?(L0enC6N4#)Ha9@*c9;CV=Z%KP z#=;AfXMR><uw?5F#DLM7-agw|DCdRu`kBo6aAP;w>-LAJvUhN4DYbi0L8cX|+j4t} zAQ6MIalG2;tx(#1gN$`@e!g*dbX6e389h~~@D@Y<SDIo;hHzYJU44C~TtRB#UPrfN zFb;3z(u3d1`rcrc7~0N4G5PDH>b1O0YD(Em>_Ua&Ou-3Ek>0L!g~Hj!qmNUCJ~n4t zw7(?aPcLRP(N&7c5Cg<H8tWLe2kdSy55*4`>M1pfC_ee3<*4_L<m2JhS)CBa6wa)U zEV@n>D*DkTvB}YtVQ8ZffPL9<9Fes%nZXM$41aUBsl63kP-VJ|<JIn2S;<_v?Jjs# zk`fT)DwN9O{Ey!W`*mWCPWP@o2k$}k?p!mwE<gTf3l9%F71|Uow>HDdEgnZ4g=a*t z3{!kWPKk{bO_{4!x}UJ2Q|FO3nxfjElL?-?_)z)puKS-IS8{SnJ@f%ySJb0p+ZM~} z_FB8f;@StDT)NW!%!SQj?w6k*LTV}j28CMuy5CiWOSc?dGVkkLl-SaHI8Vf=yzp3z z(JAUUrCJltD+^6hiZTvq;!X{0I-89?n6_=^ybAkH+!75gY2Ws)6ZE_~w?m8%3Z+`} z)89nA7dNj1q9Et{+@1!-bMG9s$*AKVzX++JToHIPo8Nwgv^?ILCe~W?-cC^~wQL|@ zK9t4ZX`{g?)k0y(%yG#>_jM18cGT+ae!ATtTVL${fY7No3{38%S>GQ+*@~3=V~giG z?X=La=+#9_XU=x=%UMjPVm~O-mFaiV7b)F-GDz`-czA#Tn5{EL-kUC31Gi%~Ulsbj z7nRX<gr_IuCi(-rg^KI#Ga{cjIBzm4kwqaED+nK@E*dGdqTZnqZ0*mUnJrfb{e-=( zFyE$gFrV)Ni@ATu5)-O%Be_*qm^Z<N$Lr$Fc2rADNtpm`c3nBx^wCHYjOaL$C9dP4 zq@;x4@!2E;Aby9T^sB0h1)vS~%@_mf(Q?R`kyA;{#-zMjv(0$EATMO{@Nfh1)kn=G zNK<n&gaWLt`~@o+&Nuk@!txusr`0ASz9C7@*A&TaH>Yb+pAha)_Yn*x@?~|Wi`06^ zb$cc<jdgFY4!%9LG{aEftKl+?Wk{mkp6`pMsIb<%KM?Qi>}2QW+MKUgtgWqqQT~J* z66<<(lx24+kRxY(xB$msio@+f0s-eu7Jm=A;y3E;mW+dNK-Vxv2wE2E@3<99)q6WT zz3fs@8Ep5j5r6%9p?PtD{tWXUjt5`{b;`9Y)0~~@q*Hm$_m^T)7aLFUkrTMw$)d=D z^_PEo0Z3opIP8x#Z~S9a9Y17{jQ3;GbTZgRe^8eN7a%<cM}BGzvOyFgsFV1U#bZX4 z@%)70IQx+Md$;xxxTya7wYmNMvAv6FeX=N`!H;$+bg(%o_@SYp+1a`2m!}*1v&i=@ zmoG%K5Roy3gnl6+qQYxk1m<kK?i;RMrZ+e&!nwZ2T1oP;y-8R9z-4b12CDBTe*94c zb8gRp2sDJt%`;_YD|>r=0E^hnP$Y{(i;dT>+D0@2k_wsWMn*(LM1Q3q10WUHT5;;b z>#}6h4=o-yss2lOpj5GMI6hI09U=-Q&-iZ@X}#?>bgEYBzm3{Q4M&qB7obvXuzxMy z)zw|DH^wfom10d56If%e!ff23q?4IRA(Q{6VUh#W{R}Qg0$zFEKP05Pz5Qo)HVG(g ztV$FZNJE&&29-EoM79ZWwFp>r>hNvC#qcXj&39VkT9!}u(MS?Z2n+ll?9e<vM{GI< zb-%zwhR=erq^Fl#BVcw~GIP0KwdmW}&>J5g4+wS(9+&Fht~6k9-z7Qp^I<gWqL}me z6Wf7B{}!y&SlYz#-}<(hnOVy9CahVaq3L=uABPj!w7ZTof(h6olqd2aR_A{aO{R)` zr1Cylrt)ZwTispazmUYJg)d${@>yMp$Km=x^&T}86_2+J0n}O32U%G#$r5{u{?GKt zsj+DsyU5V77zf1#di$tK_AMcF)=VfzE+R2;piVqNFjKEUP9Ci|utRp(Up7spcDdRW z4GQI)ZPCTz<Kt@!I{G!(*9S=#o@d)%Xov_&s__(R?-W}NPGfl6HWzeR%i6l)h#Vdr z9UK;h*1q|hL1$9w-Me>?SIEen{F-mKXqCPQ2v`J0zsmSto65n#A=9M9sKRE6<QW%7 z4&bp<`9M-l4eznuW-P~646?R{UbLF07qBK^fHqY%Y5+qfC-<EaT@H770S=qR?&aIJ z5s<GbY+kwuj#1<vA)c3nRYXL$Zzl{!YNq+kx6EFgzF%F<602)4NcsKz>)%-VDWWRD zd!;I;eamxvYX6$T14F;O5KW^BXPK64rrhd#qX`vG2p@+Osn-X?Hae~xZb}wZ{4ko! zX1u^<&5+y<HDbYimnQNiF8mcwQV}z=$mh@95C;8mCs2<?=h=##OGS)-4Jz~u_F_ek zObeWgodg7AlZogjw0z_t{+0iae0n(q9yT@@Lq}H^Myc8j(Iv$fkJCo3#)cK?J=M?J zIC3xeb6Bm8zp_Od<-zZA24u=jXyMWDx>mG5Q7END)Vb{2Mx+EEuL5OTttFA((~6fz z>hH`pQ-2P^%=poWYIiUm5J~jjxzvfFprF7rP%Nwi=5M7gbx*L}>DI7UVJ*KYyLpB} zGg)?ac6el@(1l4xa0-V{0eWxLQ?m{Rl|rESde3ox->Q6x{M!)GGb+opXIj1V=Ch5B z4O2RF_BG(bB_#<HBzQb--mnO$Z`0zxEO|myYK$bT3gn)t9#eu$;gnjvO^oJrF*zrv z4;QQHv0&pB3>+dNqS;(ij81o;9Bma9ZV0@OQ2Q3`{PE>wu0@IpSPX#g4V=C&taH1- zwKthcH(u{Cn{5aIK=no`lfzirHE_~|m0UV?ZL4_MXg-&fj*d==29wQl);B5XL&yi# zHl6Y}A3pR>o6i>jVn`|puWe{3rl&_TsCX~*x6{x2Wn8A~%m^SSV66u>Hgc0or)VGe zhJbRN$ZGK=Xlt11DAvw~n2IYgXHdcFYKd0@4sN{Am7S-VhY=T?hEt?eop^>tFIVb7 zo5*h3kvptfAXiWP`1r`<h7l@Purj_$O+rF)x|$Ayf_wW`wf11+aCmT9T;l3*e)Lj3 zAr4Ws)<|?1cWTU}8c<T_zMAI>cq#6@=?RxWv^QEA&VOcx>CoqPACi=$8au<xWM{;p zviJ3H)PT){EvZqZxW|kw3fz0QPPuQr;kgSh=wbBq^wP(Sio$Ad*1sO^7#m}!qGl@c z<2S}cMxNSvLbvw!Mh&7p6xIpz+^^To_D2cm9>lm(FpCxZ#z#=u6=!I|{xaf(Wb-aw zj-quz*%V%XWM%c~AQd_W<Zjnzf`f~z!gZ7{k;S5~ji~eHauAM$oP0f9ZuLHIc13d= zw%X_UH<Uh9dR`bJ`K(zQzV}G5*Vw*%av=0@iyq~ly$mZ=rorUl;o&&jQ&y=y5cz7y z;(WSAM7$4EJYQ|FSwULI!5x(xsk3;re4zQ?9(_IklICPL)u#w>UQ~QO2{knyK|#`d zwE|+%tO!udcQT&a#HDZV$|@!*2mL*oUjCjk0bN_T)pJkS)F`LnoGGi#4Z5ddg&>8( z;R>~mnCH8+h-%&V4+Z{z>MQ@BG^dxP4L^l41Tti_%9S+4c>f0kP44xvlwy=&Ai)9N z)2tCDlu_o)_&?qPGuytjL=YpPe-?f*03(?<vAVJ04Y;Cc)>v-$^WX?IAxh-D1MM2v zjhC0DZh}Xa&2mAb<0%q3LK!mYas_4@;m;ekE9sbK6zq;9&4ehy!~Yk5^`**-*fArW z`AhZv#o8y$YIMT1w%d>-@fjmC`Prm$%O}Ae=~Q2Zyum}cXMz{;+Kiyg4hN^ocsbxC zDtEl_=_8e5X^2MYlbHEpqeq&CJHlHmEW>pw&9t&I1h+p0+@YbU9Ne7xj-1ao-3QNx zrbMlHKUDK=kHd8rJ3`yBK$$k$^{NvR&*6-lQN3Gka-jloIGXJ}A2pb0Hq>;vBJ`Gu zgJ}aeVzki2n#5*F%E9ppA;zovfmXGa*}aEm&hc=hB2BU4sZDS|v0x<dM<L9gT{{#) z&csCf50&P<QjpZH9;W>)>3sE8O37F{gq6u1=Bk4~AzQ`s)(5xt5KuFvjEY@ASJvOq zYT0u4lk0V2nbxWz&8;>g1UJO@r<b2>skJRC0axVawOCk^zd~Mj@B9bP>OD4@3=>-4 zFg!Q`6&Eh#)_Y$lET7)ty^mUpO$?_k)*s6@t=!?{;aS`5f{8N9G<UvH2g|_c>0F{n zLMUpu*p1@W)cz$jz^uEq4QkiVcill_mVe&V9RBV97sj7?<k@}?Jt8pl;2rd~)-6yh zMKzr^(>jrs3~<By9H#M*uTuZ+ijaqdi3v%JT+H;&bh=3Qc8F7+N;C8k)~~{>n_iwm zGqeSk@8wF?+bj-`RbnrM^9<9gB@xlj%y$1|E)V7hk2Aaiq`#7|(S^EP?0#p^gk0>+ zY))I&ihun|LP;4Q`^opLGg6=C(HMu_@}b9%5H(BxEO-BJb(m~c56qu>G0RLH9i!z- zcK`)#2lI|a7w>7}2_4zlPd5j9N7P;aF>AeQc5%>Ne)K{iWJH2vaQn+(vC!}hlvYmY z{>v=BoA|ai0jN?H2{Ybweox)lI)~kLe(^HFe|rN4tQI(AjFr`9RTO+4&*~3sa%D#1 z&_;K^M#rNleoek}cvw=2m!QS8%*VqwUM%5N=XT82?RD_>6DzZu9rgD0Wzt^Ab7RuM zmdIfmBo)n(_`E%GfO9e?^Gh-=TlT@l?P>}OgIXb2*e}d#y~iF2lftvzXs!7w(CTJf zUo`aoB|Dn5!@;buSA+fW#fkPmF+%IpnMx8evhj4Nds9=>E4m+%eZ65PS684k#%Mxs zd=!ckna%pNdO`^Vt-csP-|JvpX#~3^fjrfFAEfsypx6~%u$nITdwN0=*(~~YS@-gl zKSlp^zhiLiVYwva>Zty}PN~Tmy(x()`_Y3>ZepT9x%O?RA8M{iHB~hIcVAG^-^gXq zv@SOq?$wI@2eF>b#UIp~4e;45AA70_&~bRm_)+N&lez4X2nh-I_c2(^WWw_EDSrPb z9B2{tlciv0PHorf3WoD|QuF3@d)1cG*ouBef(g_q)4PUX6rh^H$WZKCxp9s3>oKhy z9E2?C^-N57k%fGCgM}sb^TiF2jr3>Nj%Lf8k@bZn&h}<2QTAv2mUtT`3Tzcel6eGU zsD31{d+=?KrmPQIwulwT%jExYrBSXy@~qsZ3r|iCPAjEX`WTl+2nsz3BV#~%`n&1d zDlUBEodU?lNJ`RKTnWVLZbV(4ikpX*=g*Ek2baO+fH5<ZKnA4EjBWk++=<3hh=|?! zSq?cO2HPo;)C-%#?qyQ#QP;>w=<UVcM4=&CAQt^ddIsS{<tQXGD~&<#SO9N-pCRe1 zfI*LcfOAK30`v9d9Vy0ZlnjCPdkm^@!k}3lbIk%sP=EYQP`7ut4!l6t*y{Rv=RVGN z95x*m_ghpFO4b-{VR%OK9-5kih0iit9}l=4vt-(Z?DnRxs#QW1Q3+M5%%ln;1!+|4 zebZu}f<?24*w|vjeBJwU1{IB_8}M6}mi`v*1EQpJJBc`Sw`Mw$+UnVFmMeWkFnx;w zi5+TVvAx9zP2>3n*x;BE3*e3z{QR0MJ1SqL!{((j%2Ht=Lkaw<LtBRR|0$|R*#9S= zD~NfIG(It5?dVv0N!<KJMFp4J@u<7MKY}a-7ic(;IuHI}TP!-cJcVy=?(Y7f0qr^? z`_+NYr!On}&(BZQkhba7vi14}_7C;}>zif+t&1#G%*OfICm!M#($dlkiwjQ2$3%e8 zum1bjSFGA<ebDm_ce>QiPi!kAg~K_~+xsOT7yix7yecW7>W!C?<kFBBs#t`T>Ed}3 z5;D0WBW=LH0)m5e+T%1QGL^qy?#~Y9($3#J)D}XXaTAmcuv*cuu(0;ZO<8aOc1O}% zY5=VkG}L%JcHRIZWwXC%1GW^FmHDa<-%~<gT1e;xZgDIR42+1Fn671MM=v=-SV!l{ z`LRGTw4he>d5e_x8L_-0Bn$)EF4Fv^Np@4L=S3?q*%l%plqIri(vInzD_1&IV2UcH zvhhDn`mg89A~ORP-15rG%8Pz10NNsKE-5gBTe@YBShMqk#?PdsYcOhl^0_V&{m+8+ z|4b}2ZZ0`;<itfq;ej$cJ=^!pwTPBT0kO#%GkTbv*5K3v+-iS+zpS=4&N<`xx+hX{ zR5404v8|dXgtuZaK))m4=5C}x)5ZiJ^>)Gn=O;Ph_GAAq%jo~}UHxxp@&5}KsT@6g z;q8Qj8RP?4ADAp8AL7Qrx0X0T-M@q~+NP%7lauG|(*g7%(F&+d>((LS;=%>GvzHev zW)Nwk<U7lP_;_rfke(bL_dQdOC+l}*U8?j%L@<@JUj+m_&ou&`q7({A+1M}*4Gn?h zT+xU})a4N$-2Tpz7ifZUadF<%C$&I8wzjb$=H=yWlzc06-wWIXOI{zLpK_FhKTd4G zP**g*B=Qai?t_zKcXw}8WMt%`KA2Zq4b?V@Z<6clW4ig+DoK>g20Ba$k3U?IF`?f^ zmmVr<CX85koUUcyd7pZ_yUEM0^Yn*Q%fc<O9t8e+A<U|bMs89oRa$f+Yc@JOz*laK zJc%8Uk&;Ix-<xQ!^$e>HCG%e8OsiL2llMp^o{pREUAXYwxe=_sefyt@@#V``x1E~D zf{agm+N<o#&6mKu=qhwEhbdGZbl9Kwh!4e|W3=D3OJp%McK=p55fLAKzQE?vOi-+F zm8TC60VTG3b)CGjsm5>_=J#~Iw2DfieFDHCR@T=i%T^CP-x{tCgMe-m@_{{DCPOIr z-i~M9VgF^{yOv>tO4fgdpbMEYNi&tsn$lrQV)mFeV!#bi)?iQkI%=Lb^P$2GzErKb z=OT%{xHT^~S9v}lG+?!(doW=h2gSogOj>15GYmhmQHuz<<#z725zH>Hy4P&-1+uSb zR`nr0ARAGJP`EZdCjOb+OSE3qN)?LYB=*Xd+zI`3AV*X{fqB7|a%k*ICY8eVO+sSV z_P}DfK8O*W?4f|}wW#hiy^681@xO~(n!#YvPriBEqLvIiieC1FjaOy2+c`A%x2gm@ zZr2_5-fxH-!A^gVg*8|%?27%T7K`vTj)>b=l23fNsBI_c<OLdqFh5Kub-VHzA<ylg zONh#!5?w``P4_T;{?eB#ZSBGv^mt#QFwN_o&)7BxeU+{vQd373;E)4c@IL#|EyDb5 za3}wnLoGu>;e8U7$E!FKj~F%Eq(8sMp%?KDaOZ)tcCUQZJWSB&ZZ!+R;c&XW0+77< z?*#p8{OJ=vf-c$DEwCUK>YRftn(xL6#4On?mR_`VShnPV{{QQp8Jk2-q%pJMnc()J z-QHqaZ&(&nZ5l_yGyASEN7#a%kV5WI@v_Z(N6vTI{cki4d<pqAHIX(35d^|oVE-{& zF?jiT1dr)uDvc4x50QZ(m70h(kLP|uh5-3}P%O<&Vn)Lqo7ZB^wigE<zjNsULAh2N z9gAKczA7RuH0%47h8vSXvVHST<<_5EVMCRggSHfIM?@r=pD8Jk;uCyXf|Zyw%8$&D zAgIz%c$nyTu_He`>ccC~>uaY&KVFE|#oR^Hatk``e3c=13Hh4L<yF#rJDxQPq0_7n z1nPZD3tztcZ<=ag9@UsFcc;4h70p90Z`8Q#kA~B=JH_2`Mfq>_Sa|PVXJ2`?d-L|~ z2N1A2yvXX6&bAF(dY(6B+wHL`{STmVh|?!Ds7yHWP!ftrALroWIN4+m(l~_u1jM2~ zQ$!^`zLwxLo)|QQ*FEg%ACX&cV|`!m!u+ZDCbm0O&>u>>r_5l8d3QzFX2fD`b>zU8 z#FkK^&c&d8YWJ0ldC?UuU1L$jt=S3{)R*FA6Bxjhj3<7RKGxeZ8eV<{zc&3xp+hj? z8R9&9v3^f<!1Pl+f2H<1=7?t9H5aO~o>%i7nj9AgAiZnnI1Jc^hU9a0|AOP<uzpZ0 z67w)c`uFuFb9?-Zj>afiuKU?Imom0a&QxY;i8++oA3SS|80Nono=|yxbHivmr?=&C z^ZHrz=-s+_35RJo)YT7!Q#SJ@sThg(H_rWNMay*oeqjWwK;<SxBOE|mhW3L>>+kR1 z)jN+I)g3%*maE;|0HiUzW<D=xO*ipWPYBp&k}(o7f9niLP1!BBE>jwZ64=wOuQ}LC zRlg-L<)nfAM6D=gB9EM79Muy|i{9}!;JbfNnBkr;>pk>|4~(eqr{2&?$7Lwc`9-pB zFP=9DC<A@HvQ=hF(Qs*_TX{LujEP_IxLojpx;t()6|9b+*sfQEBs|2C;5*Z&cH{55 z<J=e>*>pwShcdEy#lL*X{<<Sqq}C9R%lezqd}|x>_lZ(XaO)f5#olDDLWm4kjb*PR zKi%r&j^=Cylr=O|3Wb2}g{Q=Os<Owp_ZT!Xp7okEFEPxP8bU6QTBS=5)p3}$->Gxk zrHjpsxK;nVqq*zr>(hFm=eOOy)hF(>VAdVz+IIQi^M;taxyHFH_gkXC(^4~2tIvpX z+w2)uJeM)g$cU5?Gm{cv-PL>S-9}8Hb_fBJ66_1X`RU?1t5qfhG<=}&FdIzvVo)iC zvlXjYZ7tN(+)=1hF#s3yB_@53^dOYXaf#=AXA0I+PM^BM@QMKZ6hrkVAT*WkS$$^n z4+{EZDPSR$%qJX*$N6u(;FDiiN}Cn~(1@Omvx~i{)rA{m9=CJ<MAqNyTBXE5prf9# zw7OC7_G$kAWC7;vfzd}yMU@D+)Aw43Z;+8x?%q4vB-lT-ifHhtI3u&RSouFHajQ)f zdWDN~&Az+}>-dx}pTSePO}lblY6#e5rxr_kS>>lspI`xj@f92eYf)TE>T|IIIst)T z$e-UV7D|MkR58@$_PtUqHzq{9x2Wl2%P=T}OxTw6rQ4y3#R}_dYbc;N`T>3Dq;oB2 z<MOI^nI8*aVUBYp8HFd27Xrj;YoAjBgI;tND7F|h@nHyP1mXN18oN^^Z~{{UF@UlE zs;$MkIos0jEm4;*Pz%WXjP$+gi?+#BKB{M75Ow7i-A6h)RKhg8_+f+n$F)N#G&D!R zb0Kxkd+fmDy|&)5!IP&t-9juQ7~R-OJ2_qzKHVM_1N<?D`bVZt_bCrjSh{s5JO+&t zB&)v<Y(7R+8j3Wjsfdgj+s$3prsgKFPC()MUM^Jcaq`Ro=Ur%dl^l;Ar3Tp!7_m{F z{n7f$T-$$th=8&RIB-Rd7Y@Gzi#k_L7Px*FIoYWl_AB6-hlmP4-rszgF{*RBL4p{L zYPwmh2^1>~K9n&)B;essueGsPR})|@jux859);j4i#(p7*w)t8rR(9J*(k#K31=*p zGQsu*f+2(J5|)UlXvJ~TQJw1%!BnAQj?^%&TAiB@>mK`fwl-|Cdh*zgU6t8%^eQ20 zrfZxO2E9h`-#U&xB@(pi#N{JHXbJS`flo9F5p)@VtT_w}Q9?k!%9Rod+;6!eC0Rav z&R;0%@aX^+Bk83H3`P=qLD9ltcOj{Nu#Eui9Du4lcFVUPJ|MTP_sUYlNB~N9t$!np z@?^#EI<ab_t6*Xj-_pe7_eCgY*4UR3HO`%xJo08&yDaD;S6xGc)z#q<WC6{!E#P}z zd2Qw01O^ropl1x&!PDicm_cyd+@$~6iel}*;Og)0ct6^z{jER4y1w-54kqA_0D|{h zT$Px*Iw#O6z-OKKuqOb4x2sE!AZuWWK#^VX_HtipS%Vk*a`odD?R_BdWSN}rm45yD z<sT9Rx>GHtq@uei{eQ*gI3c2@buW(3kF_or;9ercWeDAzn$0zQ+Y(0?YWkre*+wOo z&43sXfI+1a*$|R=(jR{k{Nar9{Xm@VwI6H(i#b_{YSZWtC-SjOq3kdF@UnKT4Oyp` z-GP|eyWZt?hm&4Cv`gDd4|h%thVJ*DtAGEnmf@7Ck+Y{#pc!4!7Dg<1Be5jZO{tiR z64evZUjenMr}~=8wQi4B(FdRLqwsj6AAP!Lv2E@1vJ4eP_(h?jT!9-W7xWLNE4S;t z?dG$C3JhQh91Q>3IIQACR{eeNe!%bWOxewZ4h}=5@+y~P7#$|Rl&CciguhK=FjynG zJ^v^A=;j<C{iRK(A4Qwe*qDQpQ?^#h95iR6SehP^I&$wo@W!iMKu3r8_1;vs5krO3 z?5J9U&3i>fMLc}GFW)3}w-#>f_Lq>$7;LU(o>>X)T-ElUu`Cudr7)e(fjo{)zynwT zL4i6zh|dg$S9YgN-PlY~qjKGQKm(n?1Em>bl>Ya$$^fc<|M0TKI*=Viv&w5SCX5-A zXr*1<gQeqk{(J}lHI6{k`+JKS4&XSF^P%d_t-^*1#p+@cqOa352JRw3if3(Y-)!+x znc*SJ<VPV0?~uk8-~05h_oh!7ff<5NlZx*GDFdU~B1&L_xi$Vn2u<M#C@e$<u^$&$ z!L2yPVL~YM(bwA&bELO@F{L6#IDz$H^9YI|<j*b$mU}WvzNU%3&#&`yyM@I?YkT{L z`HQRl`B5L_xcnc5V4A2@;|RH-k$dbGe;R%ugK1eC%d!HF;VTpxK{*>Hv<?E`qM@{9 zd=e{HqInrZA!uSk^*In@q$13}?+cw~i-gy$y|tB<*7hMU33<++t%q2k+#4ug%~Wn5 zUtHwKw7;OYty`mgi;nK)=hur&xOTT8PV-4LEaTYKheG`~$;k;Ki|M#Oux*rQ0{q>A zrSh`CJ4J&IM~l*5zoHz~S_I53rj#L|9rs7Tg3t;iGc$9x!4_*%NaA~j8z%}pEGPlb zDC6MZ;LYpg?@^NcY#kUZ!k@l;DU)qQ#M9jLMO>=gj4_JZP)aJ5Z#YZrt$eW>A{rX- zaY}$d27)hvl8U7#(4Z|R7XzsE-%3aR)v!-Hi_ISlM^g-!Gdi7IoxxCkogL3HUdV^( zl}hgFABzZlKVW;b<nFLPD_Oid1q^tkKDVMjzO?fc8riQ{fBR*Q83ENIL#BObX#vQ_ zedur6qR6FzR^jB7AK)L{HQSE^pn|f%cw;aLA*#O%pj3Hn?e>ELEu;>>MkoQdRLE|| zMqdOhy)-?Tkh+U`OFSMM3?SSn6n6La`lYIK+ioAK6YwJCX)JQ_IKLb8rB$U=XY&8^ z`-kTcx4>vhtH6N@D*%YDsVSdh|5r%wY5b+)+Shx-DCP4%0v+Ptzj&-i$Ge+*`o1V` zb`UqwQpY4rn{C{>_%&DrT6!^HdjM(-R*~5va_XrHZ0wtwV-L6@L$C<@7aOnoB07^? z>`hj;wl24j++Iti-NX#elw>Frihui-B~qR_S)@VRIOviw?|5i)+$YP!GYKp&phX%j zHqCyh*E3|mmZ8A-JOA{wn*E%nqnCUUdo3Ll5YRp`aaK<tPNX3MvUO|v%_E+qVFPb1 zd4sx7JFNMHn*3+YVquPi{LRQ=B%3Zk=L~pP-yu^MH;}->BO-pPJjkV-g8QFq0*uJJ z>^+Dzf$l4ekUw_NdyQV1Cc#n6#ntu6*aS#&PG_L6cN7Ag1=LG{yovrz!V|#ubnqSZ z4GrTKH-UHoOrb+7JG*FtXYJzX<&N01#`6DCSnz*Ap!mN}9RBZIWQea38H}wmjeyI` z_{jExH%MaJ`*h;ZS`87R(prj^RHz8f6LKA=cDZ6_6m9(b9N7&EU!hxVpanJQYs{zR zZc-~)udHOy3`(W&b%sgC>M&qy%ve-@ZV(lA6YAifW8))w8=_#k9{5<R^e#*0@eyVt zq<u{hu4zzcNg%q%+G=lbpHBMu3r9?mm6~r+Hy#}DD`@tXve+MP&nw`OfCBRfr%es0 zTvUIweu7lo&;Dflgmx`Ai)O=v#{>`sG-7$wZwA%2ayD5%Vb<(%(EPD3j1Y@H2f7{$ zL;&0n`h{toa=qCa*$D+2&6ZR8z1z}CNZ|bUkIR%DguEZOE-AFAu14s(;;G34C$-~0 zS?W6`fXNlXETz@@f&7}3l`;0>0~<`4$CDtm)ix^pG{Y%>3SzfE7nMH#{@-*K8m6tm zziYdDkzE!e(SD})e;rpoLOR7lbEUj;U&a*-C1{Sm_){!K_)CcD*-uBs<3efsDeU*` zk{8e0X9MC1^c5^mP*!9qtJsL%3n^FF-Pl%-q%x-ob^oHom5*gLoq;{xo3)ikDgO48 zm=xz?hXVqzVFV$iVGQ)8Hk;H#z&-k7#Nzg}F0IyJmjFYE3cHf0&;LDFhxPYlekVX~ z7;JW9D&9NPbcqly`C?_Ptg$}eQgL`}DUyA=3tn`+Qr-hTvm2iy%=V~e)hhR?1yjx* z(Y>n^3Ko|6#$`rlHqS!aBYkM3l@mY7PhuTchd4^0`RSdg^k@MVvaq0zh(b4d`z^_M z=F)w-NLB14l4#@f3N~GGly9NIJ?ShjO!l{(a*uSP&>7k51YTWSu~2++9-bFiSc(co zO6?uaX|{(QpXoH3M1+K%b4%BEca^4l@IBHABjMVg>g^9+;5VFSYd>%Sb0vJ>hv|5Z zDS4SdFI}?|gCiN>bz?=w=r4k>@+4v;AfT5_kQQ?vDp_>pus&r;8-4n<HJmtJBdoYP zS<;TSOp~ovA1Ggl8K`nF@*G8Lg`(e_zWh_Ttd&Wyn4?_TV^pQm6HL%Qrc3^h-G~Cg z!E*cF=d8+jBKBWz1PFIU14NvDsQ5MaI+1B3D`F^(IS4VzP^MAA{<n`pbt=DCI|%J< zuWs#1+??ub_Ntzb$i%-RLg7H8P5McRje+>b6p7>TWryGxF<0Xt23TwrPUgHyfG?xq z@IayjM;(KpA1Nt)fN-BRVG<A~y|NXu{0z^9P-S7Qeyufh^a7;<Vz6Qi|AfC)YjqAX z`9VGL`-dqmyQOexi<f_(vrs4e1xPiKl90rA^V4>w&wQ^^dV6`q@7bSjIJXf1;=ey1 zVQ<$C4@aJ>y5cN4&Q1Io7M<*GGkpSIKh?d3a$SUsDbtBMSz&{(NkiS5(l%Q|#*vZl z;@R}y=@0rI3+ADkE!Vsb5tWQ+)0(R>e~zG?oSuv1$jLUyi@UkG^`)`X=Sin@d_NeO zMaFVEB}vWfmb3xI>i+)z-)u2;j+f+Eg)=(wC&Kmp4Uv&#C<y-iYD`M1CIb>_q|PU7 zma^qN7uO{m3419kI5nbuuC7!VVHzF|I5O@w0+hqeipH-1i;06~9I&)?beLkO6a;?y zz&zYBxsJH)&J+%IlwyH0#F#MT<mAL)q{WYf(HACHKtlVia|2OVws2~)a5?<KRMGZf zj<w}c2bBr|f$B%ezy)<&zGf@Y!`%hhsWk?$NfUL+rDe;s1jom#)f%BGLU71dx97^c zGsPjGyXy}SXUW%$8*k46wO!!Lj+SW(r|p)`%+io#M0t7nKEIX!FF54L4E8q;{K0O{ zFF*lT$7RnC0yN*J0~OM&f#w;N^~u<HN942NWoBI=?-vR2tnYUYp1<UBe)Xl%(~Af6 zQ^X`VD`d#5tgJxv;K#hNP{O4pq<Uui5yixMXD%?C(J=&6Vy5yP9J)FQpxg*#=o>>3 zHwPbYc&#YsIsY%qYix|MtG9QeT9Q0k%4Dv}A^<3?H2W}AF}!DdY3&hN<p0JDA%v)e z0V&P+jEvIxvUzWjTdv<3vV%b3PH&E6T)tW}>N4#u3`i?Y{#N%3XUeg@80g=&-Lk#k zpv=rlm8m;+EmE%z*8U_qQLLzmBFZaHNeP19x!>j$Q0|;C)LqWCPsY<u&MvB_fuCyR z=I-_ir9@!$9TCl~HRTT~#f>a&VWZhx-c70><aBhQv&?zu_~^p&@&@5d*dZcfy}*eR zYHq0ZcX5h4Y`$Z(643muSSU2g2m5cjk`NFKQPAO|qYFz&AVClj13<7BB2y{KD(Z2{ z$n9`gGo1~B8WGg|%kHh$_RYLU7_}AnU(ixQ#i-;je0N)9CQ<sSWU7&bV;13_Z90$4 zFH%xc@RRh_6+(hQ;ypY(1fAdGrVEgVbbF=cnw(^9Zf`&j=~r5c77!4iR_~HxlJNt$ zA=^OY0NJ6G278n5c|gDby5RtbaZ+lw;1#Q|z^?4qpMf4NMP;gREMMClB9-zO1Gb(@ zEj12CA7FsM%+CJqhh{Xr3)?o7;ob;QYH))ClXt#97NW-aP%)Vl9X%A8GYBl+9Mu`A z=}nOJS(zJ7I^Uo6@m#2P#vo|-LO?5!<;4gQ9Zaa)&X+IeDWRiFzPX^eI`kW>*L4Ls z_~oa%m!Ji6u{#O`okX5g8j;~ha+6~I$C;AFkHTq!H#YhpbXla__!D@Y(bTH&eNC>` zz~PKWLdulM_(gv<eNX-`(?Ykd9!X!6CN_D>8p$H8d4R5Q5U30%p&)n<*4jGAkAQ%Q z{sd(ysg`~mA1u7>$@mYTVRRO&Ix02V;DALna9Hu5b%Yt|d4U9EL~#+3ms3K**0!$P zrq9SIa_O1^v*&Rr%Sr0>f)WQK{@L*WnR5QGscU4<pVZcUvgK7;^9TX~epc2guI~Rr zLBZWRf*_KjP`KRCivDcI(2|n+fLtZW;%Zz6i-RjXsU!J3r*q}0rc~M4)Lz6o6;fg# z0cHxE&e-P%JcyBj^#bf4Gd4p<%Fzf<(j}MC!~L=od;)M=j|ff09v_xUkYk0KJkQm@ z10vVdmV3*ucG}+^B|mfBn>p6g>pOInY9z%HjrH33T1vS(2K_;AJ>@H4s@J(3aG9&r z>K#480(6q$t=e5aTwk~eTDU&IJS?#Q&w_wL(mp@9XOABV9^rUm9QPt!;xwt|?i35& z+V_!!fYD{v>a!YWP28UT_Ekb>siRb;Kz^UwDPEsi;lcb4%&#|2C4ZjNSSALgTs%(Y zcA5E|R1%@z^VQV<yBe@XWn0v60-NG)l6&rNPGwunlz+XD1iIEtWmix4Sd%fjL>!gA zx<-Z>PRU{u+_M}8WYFL%B+PV$klpDT%jNpPB4^~kO@~-Qzr0}nRyn-CbZ|&+wR&6G zEwm~G#|b@UVg0SRKDjdiJlPz#dK*wWgNZ*QfpyUbG9RyKWRu6+PxHyZ;L%4C(40tB zRDQQvIhGAg=4j77;AX%M0bN(Q?u<n!9)Ew_GEL@DI*~F#oE|(6@8q+RbQDBiAXol^ zpGJ8=aoOEc-Eiix`TFKorSk^}-jPeClCiRexFevIAMaV7TwWSHcF+feg@HDIeJGw6 z&2ybx>U92KJ~)ZR2Xvkh(b4CkqXA%eYW)D&mts<-!5BzOv&oVC-ejc>+8?KP9|jNI z5hy;q8#4S(K31xT2JE-ud5WKEP-u}-bL>Vm21vqgd$Ao=>d!muanV_n{A044UWR?~ zLg{#Frf9Y-A~)p2>fSo6z|MG%xTN%YB_+DGot@rr!|P~DMPJZFfkHTR@1rSx1QKKS ze!%@Z%I@kCd5%tkz+iXads0?XI74#scj)Ni5)!#WHz1H7;YD6vZj=@}JicQ`LPj3N z?r5Qt$^*mX+5x~xdH!Io9M+}zCt(~-CEegoToee$4;i2bNW117E;dT5nel)ibu=nn zH;}~(<V$EE6J#NIIzBdbJG1PS)7d2F@SRB<v|za}y<>uxY_hd@aQFZ~CClIHBlCWC zcFx<&6(Yjd58=T1TV09BvfKHainpWzWW$q{)lcstBkO^{M~L>JqdY3_+IV&}+qlY& zqpY>s9E7eE9?w6WVM2X6qyo~UQSaT{^Ff*s=uV&WCKz=u@g_|i_tI~<SPO0MM$7?Y zs5`qm0)lu7?v&7p>)ia5$1%h1Ou^^nCEn%hdH^{QywA^i^?TmtC@4^Tk(TaVTzn`_ ziqyEbl=$)m(l$Ro-$27f1|QSRE1LBd^n&0qoASz9;k1lrSr;UEN%FGafDE*Emk5dr ztU(YCxfnTU7r}-Dv|uEaR}4Ij0YXA|3sCz8loE|bUjR1Qc4Zf51n6hpz%xd|f}(-v zj{5a<9=2$moSnw&0I(Aie*z*ENuAysfHb6%aqBUiNmr^Y9<YXA0f4B2M?Zc6I|<a4 z(k2jmC*k8GASWkRl~zh51}*KB21eNunL7e%yB15?e(z_G`jM!=N=-bxvIX*%WlUhp zSURb~#;OrxtZBw`x-)?^=F>J8w57!|7aO3P<?H7L&VVIpj2B5v+b~Rb$&>x@=VgDy z`s<^UG)C-@gzf%WL@W=F`o_<%h%}g=&yH!bWzV($AiKj<mj1DO`2C%Rx@>D#menIQ zjlgL`h*Hf#*OFEn3W<~R%HLM@L;V3gM`r-`{E{twfsS$=nS`=U{I4v<To;4~S2Z|a zTBg8%uRJ6%UwpiJ9nKjyo#gT*e-rJFDQWmQ%fC~95$vI4z@}PZ_Ehv5G~4FePw)6$ z>3&<Jt!%FPx>ld&Q~R!<V~L5bhmzoPnndY>hYn77a5m_cOz3epQqT94hhhrX7t3im zxCBlo`bFGr1Vk{TFEzS1+l?1a;hV~aqod_9=~Y9)-T@j$UtcfEomIO1J6X?CEO+Tc zwR)%4ACh|&7fH3pK#lUcyLy;!FdR;jMm@qiKbXbuLlGH-YV?D6(~XrD|LNxNpkt6n zhhPpd6H{b{7yR0KlvfV5LPW;YTLK*MQVVq%*Zc&&Gg~1ciHS;6Lr`JUh7-hcPB z8_R7+`2dnWOLncPtpYQl_~1bgqpkY+W-R?EQK!pY7*X`>Tz$;A2`q~RvMoUx3--~q zU9u-yWTGW?%e{||&qW2VGjNI{)9=$ZBkjDOac}*Q2Xp~04%$10C)JZ!?NRR@r{V7J z@Ah>$b<udfffO`xD|6L*%G1uRpOJT`fBT4LX`f9Hl)F@$j%6C7?{T?!5lPZV0?G1{ zfs{PQ>T<z(&lF@kLPR^K@wqAG%RYAU-$W;|TaL9lO23PWbjEw%4WuRIR_#x)w--HQ zV-a3{VJmy<oh7`kApHty>+eTQQ4kBoTYC9&!{DOfBAQm!7jrmKuI1~ia%<~pcigzA zU+7x1P`rszgyQY~IwSH0=U}RPvWANfPd6W)D>^+0hMbHrF0}-~_xU$O)vusMWm9Jg zBLDT{by}?nihCI9^b7l2L&WTPb9-I3yPf8APLWKA`6TkUQw)4*u2zd1$n)4<{&N-$ zOZu{Uh4dDSP+HVCwaNJfhy9jfiCVqrc@()D*XbvR{W)Pb9gv-_H=3<N{Mj93yFOh^ zb9Z@m_9<V)8WQ-Pw&Pm-JNDmNcFo~5SOFm&;$G=g?atWZuXx<J!xI5tC1YsBJw515 zxi<%5+W8gf)YOtG6{;v493(Pzb^3O;#XvHLdGu|1tG%C{0J`f@{aJSKPrJ68)u7QR zP+>g8T*|t*#nL*1UJ3{se7RodSNRCT;Ox?5HD5SW^1a9?f@aXh$@SSRYSBDJ2bTJw zI#)UL470{!UT|kc4s>r3a-?1yZs#1pks=~yid1*KWGwR_1Tt8i`!=0K&goON<MyiT zlwU`0Yb9xvHwlTr3+-j^^h~w4pGC%gQ&1iLFfDZ{y)~)UsGcq^zL-)qHLotLkvFX_ zu2GRJo-f?|QU0S)K~PW3!JFhwg<)j4p1~oZ*IPA}Y_V5MN88R$@hFB{_co^+t4Yf@ zn|PP_-$#O74|7UdQVDoZ`Knr|F_0n_fDdpJN4K>%qd5q@BkVJGbR+bn^!v8O-g?hz zm}bkjt!al?Utcd^faI!LFhWuwA6cXnTvMZ<;eKI%SbqcqeVF%atO<C5-~D;gy^B%8 zjMw2ppdx>poa-_&8-E=o_L8GMFQvm*jDQ5itZ|6@wYMjkR$BqN`-Z9CYl5M{()$D9 z(e2Gm#?9kS4(++}jjMlx&NoI#$jIV(8D$KWBIRzA8k6j7Os3Pe>UsMmjki=n8E*~_ z4ko9j#!5AD`t<^>IKFZ;J&e-t*d;2l*p`p&?wXW548$ZeJ&2$t+hKQq=B>Z}^|Z0E zLq0D5z5nkCg6;6@<rUXj_n^y5hq?LXG^mM%1zEz^ik#+@dxD!}t9xsVi~WAzKqM7a z)yC;}U86h!Kj`^{`^E6c`?`z{&v&?8{*sEPc`_@_t)FwQ%e$ny!JGaxV9NL-K~^;V zB1f~{H+8+&W5cx7ZKqqWTSv{dlO6JfM8)a$iFYt}*92%O;`a8e5D>4`cK=Lz;*<<3 z&x?fl4H}iIc=0II)g8ms&6`>J)0sGpt$Hj2+nX50?=mt1>gM>=iY3{<e+SwhwKOia zu$wOpaSz79S`F4(ZiDlfZMv*bc~&56%GL(=YjOA2C28-%dT$mY#O#XmaQVzATHQCU zKq{p^ayJoI6opVqU;q8t*68-4BhapTl5Fd@v926xC-)uuyU#iFkoKHB97^9CEx07# zE;?}E2>aceYNCjbiv=!Nb-reY%yL&)Q($CfWqAQx&BNuwgz{B!aWQ0LW5evqZA{rP z+``CU!nAZ;fUIh~&Hu<PE~EB-In2G)iesosH}7<J`Dx_W=OE=8H#pe4IN8Zce=rD) zX8+z?;&MiUmt&Rb&kNCDDzTa*5xr~OI`JLi2*-sU5;9WVcFP@3<Ixfx`vo?eg5vk( zKW*WHUSD!1M6zUwBVI+35iGDqv05(8>-ARR@LS-G8F{ykCJYX|FT`ec!N9ujt!H6j zIi8+BD=1m|%0r#BSJD!goQxM5Z-Y&(SZXkmWUE|l@R}UY5wF?xN@rxDwt+A2hw04e ze$mrtbSJ9*by<dbn&k=BXs&Ii=<n^}9P2%6BpBBRGkDn2CgObhD3SxV0FhrxG@=fd zs5wIpas?P*WJI#Y(mjH#g5r#2YA;6*KLbv#uCg`s(<u7hi!A)RTt(+m$`_JXew|<h z!zFTF`3NPLeuG&xZy9SyT{ieOg&_T8ZaRN3zQeL=Rkv6Bx^tDGUoY|tNhIfRt-j=p zN}+l0`>@^s5#o8?<>?w9B^q>#qmXUF5M9*}YQ-@wOM=y8JR~xLuMV<fsLfK54ULB` z3Gg#o#$nUCe*|1maO=L8E?)Y1UkPolx3mjo{6Y0N^Wl4AIN!qm=e<<KmknX-i*{>s zY66d^JnphEbMW5*N}vBPK&3Pjf#<K)P6}*3Gr!t6k_S^YFH-SH3<g-qND@jd_*fEg zxi%D<18XjBF6GM+?n!o*@Gm4v6?QlU@_`^NR&M?M!mq~C+%&7C1?p!J+EhI7o9bPF z$V{*O#f7~2!k2H~Xpc0%nIQDc&x(tQA*9SNsE~uiQO$*lN=m;J6%}<settH9sJ-Rw z7FNqf)n$?>N;b<9?TcMjvn92&06r}7@sdqq#{=t@i^Ze20U}0bM%e}R0nNR^t0#G> zxsFFm=d?SWh!dgn7I*C1Lz{Q}w}`DRM;fPRu5KHyxf8}*TwFDc_kDBrdv(_p)YnHz z7J9dc6JH$2>UR_OI1e_WI36aW9G#lNM%;oyh-2-9!!X$a3F2`-fj;E&2nU7EgkATm zGdrDZ#(_b?{=g=G>~*v_0=Dj%UoU~-)bFVU=ey$QFoNMd%ck~H0yqDyt(P;<O$nE) z!)kOf>BuT-4zC>E5kYj+jh?+yQf}^~+#UnEr}6IKc}p7dG$)>k&=e$r@86lvmQvB$ z@*_S4h-7BViR0paP_A^qhwRN*YF#8&Lx$W<31*-VqEu9c4VSjZ-iYT1sslGz8Xdc= zraOy`Sm@+m)7{QBAoB7G<whrwC4)>&>{&I%zki1`HER)B4yTPKSq{UdH#evF5j?uj zu(qIH*FM~IS`u!Y(yI$8w?e^pK5x%G1V<SSzCcb}=F-NUSXG?w8Y9AJ3%yX?s|Wee zViHPhcu*C3@!c`P>xTq2!iGp+=MuPMEH|I|@tpqq3VA%A{N8jrx2I-v6H`@H!(dYS zmPWHYa=yit93LMa=pC_&8tx(UN7pc6JX}#gct6=M+U`@sq|2(P2rSibhI_JJ!s6Vz z9txfcC-S1Crq+Gz_{?+am+(9p7A+Utko)UHocqVHFmv{4@>G{Z7URqaisnG(nbgFK z1>|J6@c<Nju9u#jWP}nlnCl_z+kZ+mHQ~>XM(ZA~*2{a-v~B`plAU{u1rmkH2!@(l zn_Bm%&LguA2iwL8%<h6ba>Xac$2$lgugP)uKGf~61#uh&X?_H=28WEryuNf-chghK z2(bF_eoVcps=D0q#t7KWgMWy;I4yP=!8(|_fP$?J>eyk^!#oO}OwV?!6&)Ph4M~*v z;r(jZY@-{CqB<03w3#7k`AM5>`F_qmnd_nJK=kjzxKP@f#`*4#A!G8iuAyFnypobw z>$?#B&4H<^swz8kZp+6Pmvr<;w{?ovj8jR!>mNo4Ul3WeoR~IU%uzR;4=g*`ZCw(P zi|=ZHO<T_A)R<cVeW0MB(c9r3EGQlw68Xks^djPmw?=cIa+wjMrA2e|P$H`-4v!Ti zPSXK#M$`ShWLz`s&H+}5Uk4EvH#f}n+4rzYs}r3T>j_#6toPp)6~$;0l{=Iaro-MB zD!|GpDgC{;oonF2q}Av+{ZXh?X@KtocO!2;*VP1vd~-t&?O!96bUNKJ^c-?WO+p{W zv%cOanIUAmk!i8%-lS2f$lj}0qUl+ULeoEE3tA=>UknRcsP1*KJyex9%l~)lbf|jv zx6T+HE7gNwLYhBHkEy?|{7!D6(BIb=zNCH^iLUNi4tlkBm*6ra>vk4vS#EP-B5`-F zT^jMJ?k?5Ud1q5G-t8X=WJ$T@S8u9YAbMDusI06sL7gMKqT2;m$Lbp~!V6A<`^8Ve z1gwGMk$h?=o09cMkD3u_%U+{tP~7nP?d8Y2keur3n6))xu&amlu{2+{A=5wl3=9ku z=RIj{>3R^elgBMAsLjpIUC%aOF+vwOo?jkWLcMCSXf^;+ZPn?9W)>9@8m3*`sJoT{ z2I9}|s!)4r&F)%KT$shs>IsX6Cv7ZFczSy3FPe$+fh*bz6>k)Jci6e6Kge+q9YsM$ zMb==ywe4wrSJ_e#`NVUz9N_(_Xj!IxTbesYyVE!F!zd9weH@W6yy2y+s<1{F4_Nln zqp3dUN18nw;(p;NDZ}9KCcrzPR*T3m)q%=gQc}6m0zZe86or80m8Xa#at^6G1tDu7 zW0sh#%<&^FKQc1X-^QloM}2*W9a+>@Y!3*j`|X<$(dX5}n#9h$dEAde$QGTLh>J<5 zA`;fbBNgv}*S#bu6A7`rq&bN8aHupCAAhn~yf7FoX^$ikM~eUX|E0i)M`nBCD1o<O zn9E4SBVQP3iAR#a4YmFMKk$Do!~YwjR3#=s7L`3=3@E`N!GIq&7-QqGO0D)61TO!G zGRG()zUVokZ40B&h(}h5Dc6|cR2mGgMSqtfA_$w9ovm;5J12T30du-E>J8C(sV;%Y zbakHKA->(+-B*5%nj?0tZ^2BtdvAhr*o7`_wUZOa<nid1>UJuAdUp1I^m3kGO)py* zMnP$k14uVgBoL}f$IwI#5TppA0+A|Jnt(JRVCWz%p&g``fFQjDf)oV=X#xR5M|$W; z3st<oyY7E*)>-%KeA+X6?^)0L&R$~{B7`zrecgyWx4D6ssAG+ysj(ke-tE0*|NG>i z^f>{$_gyLeHEdc^pGCvxkg6aE0tP*{u+SGvzLBiGxizPS^$yX3+(V&Mh6{BCq0k7R z`=g*)T24;lb#-+~DJff90)dfeoNHNSWkPAGgkiB!ea6KU2<ij?EgTN_;06oNwQJnc zHgr^g=-6K$jR$<jX{FEcmX^gxMgZ29mNvJnw6Kj)00ozK?f3>L#4Yl9y1)A$_WXnM z{uj&G__fbQZDDb;E>l^@4azhgTP(Zd5Q;|a(ns9?<gW-M61utj`Ay)LPhhV<AMesw zUnY4QIy$(JiS*PBr&ITR4jmu}qTa+3+H1T$D1;<?W$jY;V)+c}kb^<p>hEmT=C_VZ zIB?MHw`r9dK>DwGJ6hskN_6o2L2=M3n=j8sdv*S!golrvy0&<ufEqx2+6S8{f`xDK zbZ0OyqI%rf8BiyuN3sP(W)SB3yNxZ37PcUB<Tr<Um>@F)^;}uJnjhqAyVZ);JxyZR zJ`ix~q+~1n$bH^KYC=r@z7u0d{@?_?Ev{ohY64rV<BS_lQ!|@mzlc|*Wd;pjUi88< z)4t48nfdtzUx6sXhlA6)wtt`EPsb<(BUlaJy|l;ae0BZbm7xf%s%K;Wz8(aeTUH&u zK)YPM@6=`JKOA+oGZm6k6^H*WTkDMOF&!f!wl^fkh!=Fr9+~~s@6wTPV2z=ZbwS_h zC3wwSZe^K*wq1k2k<uzjpbu{7iB28y9}2d-5p5kc)`KL>xTZCuUzNkMSFB_j83q%L zv{%=(UtS33xG^L$w<163yjs97o<d(gA^gE9yn|y!$2Lp9R{e?HC*N9RT^VrqJvyW- zeH3ZqPfNgn0#WBSfqN6$lw(RFSjwB(2mA!&nX>D4N7VI>2iGN+Sm&9_v@dgdon&Ex z>pT@Du5S40=!33KQ;@ih%;qdQ>7cKd=9wlmv@J9dp`F;DA<G{T#P{UNw(IPf0bGYK zf!gb!)}^FKUsI-@_fAIhi%p0;N!{zZCWmH&W6vXP7^`dxl1VZ)VDFaz82KLV@mR80 zw+@VCUFdATeAUe*r>c;pq~wnM0|9c}M)zkUnf96-_e~8-Jd|)8X~kA6H;5+)Ty@7n zR%MF(X-H3z_$>6Ko28o=4^p&og)`uw`#3|{7Sakkz1x{YnLTC{R!7M_<5LcOR*~5m z_2NY8v?o88kWx(T;YaD!^f<u0P<$~jA}^1(nQ4%Lmz1ZB{~^C>@!36}3OH-&Ydu%| z&aIHpbxZBNOa$9KCzXK=wJ3}bK{;USfrd@p-d9Z66lxhABQ9>U%qcvmHqrTztZS1^ z3<wOQsAtG4W?#L$xYIt|CFAGIXWsZq+Q@a5B&d0NAtU6D{qrCa>Qtv^L9~Z)R)Gxe zn8B(1?R72?69Yxa;y2P5cZ3i`wGowz;+euJiSTNf9<+~gd&8Gzt$~KOt<wQ8Svil@ zx%{Y(>c6G@rB0bPd*w9a1e7wCcj`wyS1uh^6;wx6@JR=YgZTREvrWE{&({TJj19i# z%%2?|vVaVdQonNY`9{fXXZA<7z`>}6{Igx0&(YKe))rMqh(FUtzrKaBj=Pnr1<VG5 zBbda12h(ZIO*(~I{gVS#Jkk_PVv^I-35(BymcB;ANb<Ei!<-yDeP=%0&rLgmbh-OS znong`PlN2%Tm~wOTheC6t;&_`_=p&h!{1)q3*iS#So-_9ji9#ag@^nIZ1AwlxzDzP zi~ZT4c?Z@}BTFV^kaH`KU*X+Pv$H!q$ofZ<O<`3bC%^VMId)T@{OG93D=l{n4-Sx* z!w*)7#5Zk-RFs#8cS<(3R7X#hI*eX1KuBoAU4qvrvO^n+z49Y>W#8c;kVHq1>K7xj zZdOyXs(ojt3@Jtmo@CE=4IAg21S<gh6o2zCj|g$?)M;`(HT>+;dOHdsbP23fl2jwS z1=sVAnJ9eP6TOGP8TM5;yj>HXDgGd+22FQR)In-uhiu_}zJV9qo{XqlWxbmgLY!P# z<3+PGsQW|v<?1Aw9ASsk0b-{y8xIlj;N@0i`?ZhqL>Yyi-d^$5VZrnRCVCHR1BQ76 zI`x4JXR&qUQExQ^Z{sTlvW0ZoE&b_iFS*#kv{2?+oZ+G^d^MR}K>PiClj4K6{k~W% z`@3H!(PAEXR^~_oCOAXn+ROJxJtI{yqT<WYnwjMU3@*U$&xHWgnz3D<xt21A?a7$5 zaJ)$F&8o0^lC!mu2}@0?^K8FYokX)cOsy%9CnApfTXk%#MA-*Hahi&X39X-J;F9-v zo16EoED+fJv|*K}CPl*u+3my<n(S6`#nc<(IoNN9r7vLNx~spR9J94?_C?;N6)kfU z0w$Vr`<BE{Ehl@1aLU5?*L9P}qn&+(b&>679q`9JgdobrER$-MlYJUut*!0euk??_ zdJ*0FVMhla#d9q9vMfyDR?3};dt%3{jEu+qVVac<d08euB#oRA?xW`+iZ;IV&y@ES zczs_;`W$S3H6w$2EK*C!ZP4W!{R-YG)Y^sTzDHbvyJSC!m(E37KiJvG9mWPvx}u|D z6z-99Hx*cfdh?#&Y_MokbyGCwdi`C!n;ZatWUJ(c1H7MO86gh}(}J)rlF5mwsfXQ% zDcaKKBxu?&PuSU!cTrc{T|Ehnyz0xW{mk)qoq#<KI9KAW*EhZLZr5IsC*6be<(#98 z>kC=u#}l#{oy7QAgYl4k(SnA8$ig^17}4=VDVk`lRhZKlhqbbGF8P2qif%ebX_Zb< zWnRBa7oMc<PwPCE#QoeGw7*Tg{xK*2x}gBq2<OB^?n@b)t{g$8IoZFmmC!`q@iUZ{ zoV_krC*iM_P78TxZWTQ?lR2vGt)cZ0^Y!i#N|y*vNb>s8!ZEFTPlrMF8P`L=awU$B z17n>`fT{SXvh_7-OvSG9EnC9M3cn#S5uzf)Nr?&l*($I<cy2a&3>hbQ*)foWOmp0% z3IsB=F+8gLH7F69Vz#<X<n}7(#mh-H^J1*wXq@v)r-+#_DhR%|eYRzCLoh9>kcGNl zPZ}qX9C`t_?UtymZVrm!N;*~qhm#~T4vr=RJlmMV_gBA2srh4U=_3!<;Yfq{!!E22 z5%Zd&jV&0+o8~m;t7%Y5o3PU$H#eNjzVQ9CwjL@y^gx)XT5C2+nLL}s$E&#pZO86} z44_ti4{v8LJrwTljl<9#ET(WivnK@|i1CvY;_=>YGZKJA;P@n8X}H=a>1J&ZsiBtG zs-8;qE&5B2;mju?eNC}Ug4kKy*qfap%J+DBI08GexjFGUTEo%xW$^nqTtj>?C7;!; zPtC9BOigpGua289nPCf5NH_mjoGBIYc8vQdgFKxY?VM_#h%rSy)l&>`(^K`Wm{#Ed zxF^xuZ!Sa5QI__Kxb5_^@O;&lJ9qh3o=ox$aaP-@LF}{&8_;IA#v~tW37)b`Ra*>g zjnx5URrFmHkShNo@clz&RJj5jS7c+jkf0-6e~JVsOP>`Kf%q@=ua>va6QK;HuVK2f zJh<Xwz+PlIvIK(mPBs#Q%kl^TZwPut)Tr%D27vzy27-ak@_qgVdPU-!PBAc<ORLHZ zEKlbmX*dF4)EEfjr1V!k9U$NS5BiMb5)V4KEC{e69m(uev45yRf+&2hC|VBq*^~+a L*LzTY&ocNwqA&FZ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-settings.png b/wp-content/plugins/wp-statistics/assets/images/welcome/what-is-new/wp-telegram-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..30b5f553c58f5725b9a53c4ce40565c4f9106d4d GIT binary patch literal 59751 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 G1mh=Zl^;4w}Z23Ol#as z6Ac-HW13NTEUo5PT`U{m5~@5|`I8%zAfunv=Rj(RgN4(>LW4ZLEG_=90M6S%5(8Tq zNdXEvX*wy9Yiqn?C9>v2l0!MF+!!k!=BNdkVV%U?bW6*BkLK-~-U(iHug~!bA<opv zl$f0Of$w$YUa*Na*>pEJOkE0T3n{?s&K8n|`-z;*>WdFs<pxLeIF6`_CVsZ^%{pX& zM3yTbhWbr!ochgju6mr7-snc1ePjmRSNgRq<Zb}=$Ef1Tk2lB-9u(`VIa>yu$};4H z+Y5UBFAKog7(2FTE0lTzmbJDXmLTpx$)hf1l}vQ@+Ro`n8xrSMkImNuB)cPwMRnIj zsY==SRbb>(i?)crIuytF9w0co#JzrbcMTA6u)H@9uQ|Tm@xJZuq{~TyK;l_Y6WGvv zX_?ckM^{(7KY>c#9Tvh~!hxkIIT;yidxHk8uTCp<;g9Du1OiSwxYl*#E`TU^yB#hB z=F;l<4b(>pcu9aOsOpX{nSQ%I!q!(*R}UeRY{Cn6<-w0E@Gk%i{s1So_ft0axAK&= zm#9_=dHDmoZM5T)6StRkO~=!zzvdY$E8NJ0+-tWt;VBnPKduollHyqjOh2Fpx$F)Z zKRmao(4+9XL3TQ<Ty^6%gGccQVTp+eG10D2zCagJtmifB!{!@`o{uF3*zBfj*xDK| zK$QC2<3oWai<WzQ2L^wT=JdE38bdUv<kPylGPchAdHgx8XVcWd0|MtBp>yU%S~rl3 zf(5h|rN34sLOZc!RXm|^*CZ>GeJ`u>_VS(Vl&VuZ5qIGP7@}5H*n4VE0YiH+f`5UB zOIK0vV0M1n1dQKxBS91ysBm^<aL)3I$*ihH2lX&W4uL)jRv-YTa1=83JAy4_b-5?p z{jq#<rJrGGfU}VOU*5u12gP!Hz`=?^xy0<ql!ALLX^Bx^hFezIzZ2NrBlDuWU;;&= zud$?V)cvrK>)y~spB0*?ig2UpE6Cpa*W6^%86#iLage%Nh!UC1mL#qb;JISb$1H6- zWUZ{!_0sOq9Xg&<Aw!Tqf5sGbR%2f`Y*hm0EAT+S>#T}&JZ1FMWwRis#((gg4~wBT zg$YGK;w0Ez?Fky%^K!ayPDS-<zx9H}>6+~N`et}y+<5-Dp7(X@O(v5YDWo@a-om)2 zsSuEaeje=BI6M&AG+()UYqTeph9DNmdopZz+hS$#IR7;G@CH-~87nLrAP-Bc<bO$? zHC57Ru*W27|B#z)78Cnk<uphS#{FIFavO-g&r_;z&pxAc0cPr&O}id|;&aof+XKAi zMc!Ko9LO3exSlY$I^1MD?woo=gp)hXm~1<q;R}_O05>_%VEHOI^r*K+|Eg^peAf+w zjPXq1)lcI+Mq3a`89UxrIxV}0L!N1KHmmjOxEN9~yJs1Azz)LT?)t)K@!>b|t6pk- zR{x&Ab2p3(H`1LA2OXr-_r)h6QG#+WS+F)A5&TK|rP1nF_}E!^&G*xK#1s6HIwJY0 z>mZ_`$~wj(4{aDn#I5o)ce@?DQga?B%w;UtUDc@zkkEH152nLA)jk>h-r{g2em6T} zy0`IYRjG`1p@?yC(Rnb8c?~W#O$J!Q{&^McjG}mW%Cerb;2JHwZ_J}#rkH-ePlL+j zCdl)f;L~P%1uBofODZBgC0uh%GO0W5j_aD5F+IUbjT|2m;f&?@Aa4h>Q<d>%Mks-A zxYN<S-AQa;WfQ-0af0E+-)e>C3}k&1$=v_F1C@6MMbriH2SJGl&|h&Q0B4qG{kpUY zT_a8hiXew&uE&>`n{FQ4T9b9|2CLQX1td$(w9M|6JG{%Q`~6;dfkBYn<wQ7#oBgS) zNrymK$a!bd^)>vy*Ao{VgKJ=u?T64l-D6@OWNUGGxoGJ;v*9BfK4*HD!(?P`Lqp<p z<EB`njqcO#4a3vcj=W~g7T}YOJLE(vK2>ZaE=QJ?<Fm;R7N4M+9kEd5alzkkw$=}7 z=K)@EC6cSSb9N@0wt%f(?(-CM;AXlIvgY(sZuR&J0mwzQZ976|3nx)A=YxQk`o(6Z zbVm|#M7y$nsvYiQ>#d;3@$#s^VUMrH!I4S5M9koJ{y7%+VKUx=^m^0%vRv(e&A<<k zJ9Dhelg4ZWl|X`-p*EV{tgo!DKly-g0Bk>jnd>`t0*(Sa&S#)*kB@FI6oHX4myLZZ zcbIam;M~QNw5N!#aGjMVNL8mu?Omf6coGrwp|j9u0d0@BXC7Zrry*J)GjXPa61^!F zh(`D7@!ahk<eviePe&Us?+bqRctyx`uwxY>*c=j0_~GO}xvInG)>%*p_>fu$AUXDg zmB-l{g5GO+U7Qe6bmuc;sj;)72!c8#<yDgZFl6ESt%IZ79(A#0^uS%QUjpu;W}gjU zpvQ1H;DL_}w-hM_`@A8BsXZ96y*DpTRbG4binI=QHO=$@+^Ip2hAx7w2Bawr>pkHS zgP&MWl3AIt^lSe>PU?)N;mKtyQn~J@n$=lAvx__EX#xeIO;$mA$~Ie}V{N}#(07mT zG!J5}G2c8ACtPIz4{L836jv9uZ6d)fkObGD!QC|kcXxM!yF(xZhXBFd-GaM&2oNl| z)403N&hyS!_0`OenW>umAQatw`p7=}tab0TuAA;HG9ZX-Z{sL@{+HG`IFNp@7<YPd z&6_xIJrw%U1+Y&c;(27HG8W%3T2t$4_kJWKjjDA2G7yHyXY9@uaiyeaMdAt`=B^>H zf!O`us3{sy$hL^#E|mAojC6)fSZ%`u(AKBcMY?c;W;qZzFa!ocdj^`tOZnAVvErSb z$9W&Y!afZ%(QX*TM6EA1(-S{JOd{LNaVIC0`dlL@D|HUV2Img0WHVU9Mn-67%k{=X zPR32or>!W61O{q1vvwjBgtiLys+=JL7^g9O_C;V+0^}tsyr*WvR_xynXPia%WB4w^ z@33T1;&z=BQn$D1Rc1#Jh>WKgT$Ueq1jN82h3~{SfCWPUO87*-efM7#lYaUL+MI!m zrzf0Bp?uzFS$3vQW;`LG)t7NT;n$U+VC3)*nc;}{e}hug!QibAqz)11e2RSKKG3-H z`*s#e)7GiIeCYKX13`*$$(UF5*bclo_90OBZnzUJk@zUZ@0jU%lZ__N5u(P>JH$C+ zFrxa71E6YCS%S!mD?<E;o}m2+(QhHy*X)Hb{G1eVyeOA85Ycfr!RgtcB+M1O<-9#j zS8R{1(rY=}My|^V-?Ozlw^_|>x$j?iFs_@6qjF_~NOe7lV<djJp2NgxIMeWlE!QJ` zN4N!=mRqsw42Lb~Y2Tg61NpUga7G$et}3n8?GY9$>-Z!G)wk`k*=(y~jwy~(l+~)+ zFBXGBa$tTZ;IcPbh=^ywM+H<H{p3r+kT+PM_mT2qiDv}gshIIcT<Sm<^wTY*7lYMd z*MYXI)Z^hwBhAYf_&+jU;P{Q!^gjHX3ILuH2Cx(*{rt$FfMf?U*eP<x=w<I4=S2oC zCr*K&5aOno8ikh#dA(K@9fR@PqGvHTH~A?Sj;KR7z8j%)8a93JV3neAz|u;2K96W) z`^;IPQ*U}N!=$LABa_tR!Rx*+>0n3-1Wu^6GyfRM4h;qKjyqrgc^6aYiSF#=?AW>t zTFt+^UDHFUsm&0|@kal%*AocBSn-WGOeefYZA;yj!De+CBJD6}2wZCOG4D9T=UVcj zu3b$VejxGtwes}Pe0G133IP*|e*hQ`KhR!E?UR}HOMXb;v@l*cPr2dPIIpuJc{b<f z<Q9J=Y+`5Z{7&G&N#9!CwHJKA!{l+~F#OP7U2)YAadS7d>KwLN`Zh_Q3b7{v#}e^7 zgoqwmb>e358<QfIqL}E(yFPCN-CU#n9}w^)-5yvxe$UJtz-FPG%;5|V>adD>!{#Z9 z_?P@o1PHl*bjdZYiUD;HSjY8myIq`66K}3=W^U)O#3*U1_I#ew?^zu`iHm8rwzf{b z+)y><b*FltE6}*=^Tw;4n1qCcO5QUp<hT_?5n++uc340>ud`pp4mgmA+8S##XLS%3 zdcOLLTi7WWB#Pt|=OwH9R&7R&|NL*~-Xz1f_1?;z%0+v#g9aj>yD@&hTfZ|g+uN;L zrqJl)k8{bEfNQ<V^zvoTzN23zo;o%qrN47PK*nYcSA5lz&Q`k->|2b+N^<u-T3Yhu zp@-npIbC5VOVCIutxwxl`b>kZw(|`vM(yPyoGyn06nSN5%HO}0uWlcvTGZ$|bUFgV znA$$MsJ_Km^5>eI)T5!H-+0)j12v8ZP)iO+k^>6Kl10BW(slv?TLzg0Cx;Z#->Q=x z$4L4}OPoqbBAOL;X(oFjkQbNV%>iF)!jJzZWYuxl_hh*->(3unKu3+PS&!9pl|!Q~ zIM4kFt<!jt4Q2;0s{uW!e{m57lsST~yuIZjE|D)^rsw81U3kx~p2i1tu_F>}7aOM< z73>281EE0v8Jjn_3)t}-92|sFyy96Np2}vny_>!9)C!nb_#X`e_?zn}q&~UsMS{@U zh7~lx%6>F{PcDusQ8c5hr4|ejo%v!B5z$!*8FGu9wyA!MjErQ|TuHb30??q7oPv@g zfuORr!72mvSncm003%4);Uf8U$JVg0=mF#UjTr}9bZUw}tw!(nD;C}Vl$cPg8yPh% z+125r{R`xTIs;<KE1|Q0mLh|ORz*X@DMzpZ2JA%GS61|e9t43%gU2#o3r?SHr`t~p zpu7nwM$vH5|JOz^@#~*t3KWjO|EJ&lT#4utq@%Qb{eFwA`-f1FiN_#=&-K`!MnEU# zlI50`RQ9b;jK<TVys%Nkd<CswrmP#77j*x<sp>oeTHS=ZK$%xjG8;=z^F@WC071tW zP4YRpZOlVgqeblBE}TMcMxhfaLNo!)wpewHw>J6|M@dCbO0MEvZPi_p2KK*&&h<I! zW<J8-tF=TuS;>n>A|=WhC%@nR_liZB($|06Aw?XM{nt74|Ko3m?kNvDQLfY;W*W2= zSNPcc6Iswif%CD-ecn3qCeBUVI$Gm&dB)6p?6O+Uk=K4ykEq)3b&@?V8ZtX2;{WX( zc)l}_tpss6YQ1OjZ3r6N(4L$fAL<I}+)?#=mr}q{zUmOT%WMGOfJ8ANqY$7ZG0rTs zvG}U`&;y-~GsF6L=fA5&`naB2k5D$dzqPC;CF|n>#dfj_*R}aYUv-+tq2<evq510a zL$2*Nu@D$$lhF?=%@q>PoD%<|vV~jD5|;;B(=}06?qSW=+5ComYARJ>o>AxfF}L~h zi2T+B`}At1R_=hm`IPkUGCvn>Ax|2pz6a;gL5%$~hI&&K^fWDJ`jE+|Izm%{ry~*K zT^tdRk|n#+Hx*%U7DedW!a^4pyPw`+NZi>RR`1w^|91^~-c6N5Cu&u#2QRi<>?F08 zI5!Q^mzfOioA3)Zz3J!Rq$%6{X2*~=dn1YUWN!DWHk$gIoAvMiv(ZJDWlS*qG-}an z&Hm3>cP9Izi?y5Y9VrXL6WGZ19-r5HDJ(FtLZwZK-Y^RZS`N+q0}ugSluuDrLqh|0 zB}oUA3n*)8Nf{cF!UwHm*rc9XC}}B0&s25^4UsfnNH>bVW-L?<(1v?prJMI`_@-fJ z>0FRT0mwxct<#`^T;w*-^I+!3H1F-P1D<)tzBHEv=)!XR4^G4+2eU+Mx%YXkRMI{g zqLHUYr=+|04Jq(cNbbMpwE`)uCQ9Ijvb0bE*VqTYnV3(v4C-H=2SMEr0J#Bx&UZj7 zA-%5xORRtXTfSKRXrcfrJbJQ3YRAQB{yY7ro&R;h{a?rP765LXHj+tYs|U$@ce8ex z!^R-I?G!z3)q%0kdu$niDed(1YuAB^7ZFqlL9vOB7;io!-mN!u3>dt6&~+ENt$ic# zuffiiCLsVzTKZs!Ut_4b{JoR2v_q>vvER8B<R5q`D0nrMa23}y88ur?)XnZgk-SCr zQ&7jx7J@)ruw{sWPQu4H;ez|4MZG3qgL8FdH(Rm#QA&!^E9$EbOoseQl{Ok<QHTk( za?R|bVno$h&kN1jEY7QS``+xJppf|Fn=8ntPcGS&9nql0Gt=XIb(bA7SG&-iALQIj zX_{Z)G*(?!y|8^mFr(R3jNmG2NCjPweOKRzd3`L?Wy(4wP>C{{$k=1b`iAJ;WL<?c z83JL{K7NB5&6coO$&VZV^)tT~xpp=Em!7MoKX)rlt^}NHKDUU|))TslZ5^|;C#x>q zcTN1~Zq^(&f1854MZcMFX1@4t-f>)ugVsaVKdPra)=A#*30>*qf?$OaSVM;>mvk*6 zZYOYJp_3R+59Oqf3>i=MRC(NFxTiL_wlJ+^EhEVn`4HPl9iO!@3%j<AXT^_^-6VP% zOsov}KD(qW!tS6{8byh9gmk)85X6v6K~@onw;rzDPZHkxk^E2biVGOHIf{UQ18DD- z?5U#_RF6^f<?6b2aPaZa!_Ead<cLW{GhN~DMv*Y=hi}hJ_Jk}EYxGQNG>HH_+nHkT z)rSvOpCrT-m9+Z7o|{h%Z~&jM_%%|0x5K6J23tNW%!O28f7tD9*K~f*Z-6<z=^|B! ziUR7)BO_JK$GnmvFWCWsT1tj5V)TfLiwh@jI4fJ2jTeoA5V*G7qj`8DVBv2BO}Td9 z3>Sw4g+$lv4U(`VKU(7LN2tR}#AFyPw_Fu-h-(KUtT{-hkB)5jg{d40RcAFE@tRD~ zY27cgVlyPm7%Jit@zqgMa-=1cspqH@ST3`^4iSBSp^GjhMJ*{SN%5W)xg9-`NpHB# ze&;p*LR{#z?cd8ybhndv8NhWvyW!YyfJN(8)AA%5O{^eg>I~gw#B9>F!=`_X&fsfw zcoB`6DlpMWXDqI)H0=(w*Sza>2PYy8WY|v5KOMYDxvE0lj&zJCK8h72n8_q5sp@_l zj6RCR4-~7wFIT5dNtq{<=a$yjCj&u``Pf3#)(-YWrLRsTFU^NCv%NoNAhVvVF(Gil zr=ck~o&Ra}<Hrw7%t?LppBO|Yy#rCWk%C`C?sAm7GX)Ul+dK*MSDwEH-)7H%dX<uL zy+-u-`IypuuW4(d6?0&7X0tW1{%N7^D6~;4YWc&s=Lf{jFM9m%fjnt1GC8pb5Q@<- za33s`xji4>>YEFEu#jiD>W9!UF&Hi{yrb8t!D<{874ajEjU|Gn9Mve_TI+64j<nwK z5lp-HqLY$%lXAABihMDiqe!DjyG_bSUG-KfE;KBvcU?Ia&<v*bDERo2+*du(8b|xD ziCO_WiDyM0e#iHMXPA15d4D^TG6+4fN^`g|qNA{|B@)lRLsng$IOI(<E97EcbHD8F za?@Rk*A1&)ySuDPmW<=-ZOMnCJBMpoUAwT$NOtWy#O^^I&?taJug#8Q&jh>5kfLxt z{8m?<da6*Kf{!jJKmU{9!<H{Uv80rMoTa9Wk8czpu+OCnx)KKWjNv#77B(~xw_~Gv z4UN%l)$cJWYAN+KR1n;mufPa*r%VkZA=`Z^Xut}QLC4OJ=Ssn|u$pQR02*pfpwIb* z(+Bz?NLq7Nt^Em^^=Ag)Va2J<KtUvDI@!~|TYr8vVMRtR5Vbc&rJ|YKe}6@na{tG4 zMCRh|da()^M!Zf?tM_4lAVLLVHTsd+(L$7}`t0dh$jRD~t?@}_20-IyfxD>I{EF45 zE$Uas171PF3<VV-V9sQCc<<d_#@~D>D}H}A!~#%G4EqPAw{~YfEB-fV6vJbWaKO}X zxM$PxVxGFTxUANALjT#98Zn9dUzOc6_9cFCr7Ng4q+$GE^z;qQ=GjpIyDUEPSMBAI z(Dw(B0W6+0g?#M|K}0?;5*_@_e|Pz5q2cpjuGoduR3VY0<FX`=bL!^cH~?1+jWsR} z*S?{eXxG7^SHIIdT4*S8hR_iEoeBc=+HAWZl87r2X*{~u^!okYEuMO%?w3w~C`U&} zfRX*_`+)rxna6`CNpEO}gp0-MoITUm4F*KQ0Baq1lISz~Mj;v)<vL!T2!-mkx;b6j zz>A1<^WXL5@e7&p2E*N1sv^H9=VRG#N!wj)WQxH44JrcuasGjt&Fyi@jF+-kXSbZl zVnV!QV3I{nNB1TH>peLyFfwJ{@V=rD5=#1c?j#=bjIcQ%6tS2$unC`l1z13m57$H< zJ1G{)w~wRXD&Q0-O98S=Z-~L@nh2}|ch}C>@7Q1JKI3!)Qw0ggZz7)5A6>-<b{o$R zCuX2*A)PPj_pB}7@Q@@qCuek5wjtmJMb4n_e_Pw0F4+XscGjJ&7XV=3vy16VW--A9 zLcVA7JaFL3NKdCXHfdeo-X6QQO{<wt2MtUcM@OSFDh8At7W8{~Dc}#Rr={I({6}g4 z3VViuNY<d^ZftC<RK`I;T?AZBc!_;(9S34a6slHytuV2~9hET4)Sm&{ijYOmgvX2h z3)_c1%TKIPr!S=cGZcOxbNlYUrHT*JC~WWh3e4-xMkpfT(ZERGTXZLd3WjS2#%58e z+6d^aQL{#VhfA&jp>CLUs2JP2>SQqj&rE>!CMF`n2rSN^e?vr}33;3lh5Y@Y(2160 zLeMi5>Bu&9$$$+McLrl5JS>aeCU;W8=<ehVoADMJce)e$pOh&JL==o7H4i8#B|Tmf z_L1RFz;6_O>k^fT$)5F(N?7zBeAgs7Ql0e-en2_sfo*Z?HIARKoB>FVq{DQ6aXoJ~ zt`+X^zTSsD?724q(`?jM%Z0YRZYiHWxxF&HzqE4M#~sdxWRmmTy@K}Rr6@>$qo%Fg z$3b2RyTuM&JCD*zaPH)ch-N!KA>PbYnVp~7vY-t>0M&o_Y2G5=Uy;BJ#bEUI>VTVA z#>Ynpuw<-&F<Xp)Aa;xdu^FPG;&%yMjOKO#P1g0jlJtBimHsHIqpYkeyxIXfJUUt= z8X~{Mb1&HQ5jOd3mhW)2F{E+TD`SC|07J-y<Yvhk!@iv($k*FlMNJJjGmaKlm2Ld3 zQ2`9+U*=5d@_a!ES8&;t4c~TmE4Q|`USnd0DX-@?6@Qf=@lG8YLYITk7B;>0LjiyT z5WP9>PqTnlX-OHG&9xkpt!*4-MO86Rtq(`!TS7mEhX?m2a!>#^FTbDw+`6)ol2Gcc zQEo@%NGK?xMN=lVS|5hSivYv>g=K`9jxOFg1@A8r`k(Q_je|`TVdEZXYwOamu;Wj@ zzC_SpL|nqcdyMNR3tbNiQBOicuK^v$k!BqcxaMy6Vh9b4&wU*;H`y#a0#Cc1%8W%k zeh+4_2Z(5BaBGqq&~0t)u>p0{Y;U(9dFoO$YSus>aCEHEthh=ZTQM~+e1lDe@G&d| zW8;Jg0n}_*IPhken(kbjQD-^M>E$7zU|5W$&Op&n@Rab8GKan!#c|$|MXnX{NLy)t zFfOV6cU3-_BH&N4s3FrZFp^PTvAcOQP)Adn)N3MQT;(+U77@SK%FQ*Iuy*Cnkl)z! z{<lyDARt~DkD)cC1M>R%j2XP*ChkqcW5c=5Ni_88)LL38E+@nY$Z+yW@wY4O;6mm3 zwj$0}F8-=9k-+1!<KNpWIb5j?36AKXtn^j@{zBb}V`)5YkFN&fu<(E>4{|U<(xRMh zBV$0|xZq3N69W2A;9|TW;X>LZhH~gez`~-08zt`J<5M$lL$Ci6rg1SyQWV<{C3cJP z@%_Ia^I%1oQ9(<K(yXB0)B@so_!kpZ+#Uuds9K8wmGCb{nqF>k@pt_*UnJy9a&m!; z7B2)*_#26mKW9(w5j@U2Z<Unv6hG7#&scA4wi?xD2_;Iy33iBpr(qzNu(H+5_6TPZ z*4BhsSy{p4Ar1Uf{hqtaH9NlMg-IYHS&4v}o$nNs=+s{uPWvsd&BjU-wjkRR_FaY> z#(9XS=qA1QGx>#uj&sX5SaS@ib(g63mw2I#jVa~M^Df6&q8^&KGaRm_`B`RNU4C_+ zS5r93l4|`|p#ksNiexf4{9O6|n&j(bF*zMyNO7?psEbq7u%P67AQbTKcRn{|1zwGV zgL6p;B=|w|Hg@>)I7CFFVVe^3{%fR4lau_nUG1i3koB{sy*Vc0);FHJIWTR%^Z_kV z$-c&z9slh5jEuJhC0HzBdTxf<(9oY3I7<GhA%ASzlPKpz5%9k38XZL`fEkf4E2%0o zI{i-eBVkTaL!%c=`XA^^yUgqVbQ&<df6wQ1dny9V3InJ1@)fc?rmYzcW-F=4)|o}W zp+i~@Dz^{kQNd#ltcP&C+z$F)9xuno#j#$WEGmeJ;rTwGXZyBtx`Z8zsEZ?CspEJy zLvZ;`U+Lum0l4<3&AhVH&)VI0tFWzO!<oxEdvh<e?D&*+Hwj)zDE=&NVy>>P9BaPK z9H1U1At3=2<^!W8#>UiBF7^Lw3Mv;TysD@UDBZA(jRd-ko_(1!@QjULlcdNH5CY_3 zvD4ZrhDkA|<~V=6x1?WGv`_F~z4fTB!G0@j+x~SpUpTJII^nZOiJGE)?3@*SRJPja z;2FD*h!X7<zOH)F5<I1o6&zDgThtbGl(xP(XTT_$8y~yhE1in-XCh*Uzgu%yhMz5K zXVATfxb@Z?0)`QZ_a5CilYC?=@U5+vJ-mm>U+vRFMyc2ng^Ft>lcUZ#oSU}}Oq;VE z4uUDM%dfxXyN=!Yrl6j4u;b$Yu3ZUAlA2eA5gER_vO#xf-rCeUI<G%v9Xd$Cm*!`; zv$t<@gW_<tYa62_th|`hE=yQNi8|1-fyi(iE;xrC>2NvC>A6?GbQvLo0=LV@i{csl zyJxNOB!_Aq{P4o(=zi<q&H{Wei*`x^xQ>CCiGsR`@YY#+70=AurN=Ff^cSsySd!Rg z{8H{L`gi}U79fV}cvD%m^uphPa_`ZRamm0WRxat_kF8qS_7UUZySqJ3AzS;+8vOB@ zBS8ZJy`0;t#b(`e{~2pf61$uJZc!5+qy%aGxy{(Q&S?%S-Nv)}d?-e4x6Qi`36L9i zBf+WQxqGK7rp9(@*JmI6BrAY29{8N2oUs}s4aZm%1OoiH#Kez=!lZc;t5N;|Tvv$~ zbA6k!u&y&qZ5VzLon8)9P7{7_{vFmo4eRvb)<81-xi%w@Vi-F4m>Q3%{t5!SwK|n` z<n^fSKjUT~!eM+`0^|Y`*_?ou7T$DuYUKV^@A6m*Pv*3-U6)iLv1eryCIb_U6$Nh+ z|0)w{tm)ZV;D_)MceAwVXu_V#jPL3n{&1^t+6t#h5Pxy@#|rl^%Wdbv_>XOg;@Z}` z-IbM2>!<ufC&BrY0cY~uUBdkf10o%u#N7bDTQJMhyoB1t(+zE&tyx7wK6eHQwP=Cr zprp~Oq&A3M;{*8Gm-1ABE?y07nFl<A>^9;<#tq{h&6|@lq#L&9^MNG8>5|Ff?T`nP zj`?xdWo;*&nAs%Vx$WzJ1p_WfH~ps)V=c5m5Q)=gf{g2OLzcHCv360jmC_Y{Ki4z< z%KO9lcI?uFF~i-JEcj!Xa*55o37r%cfc6(C2aj$89|Z8Ek}m>+?{nHSjW<6rcua$3 zT5Opo|0{&$BR8-D8iWwml8O(8MLaR+paI^Z(glEI5h$M5z30No;NH5dS%Ljl$XSHo zq7fhRQoHcNMsldUn4A`O`oh~R7j^THbkh8$Xv(qQs|7Hs;waXgniWf?K|}z;+Db{C z=aEzaWW4)z&T8(V6b}4?k0PTQv)_NH$S3r72L|DpCeBVa>XF`D+K$JgV8rR_j!i2~ zE-kd9nIus#TdA^7u6IQ0IEBVeuA}Zxz!Xu`oJ(>#&rz`4SaOynIFRQ3Aj|lOi}&XD zVTDEYU%j`gS~<VvA;R__eNpqVXB?&=e5Z4t@2+FN)L~p3?-a&QYiFd>7jNv9@x^PH zkria8F5^+QdDx=Pn_c<TU9s05@AZc6GB;#?*owLuo?gh1Z52!;*wp5@p?vcyC#8v! zr%}A<%egciC1pP__`uHCd3@EGl&dTvmyl3eDh+DNQ;7+l@R8xT35hSgC>e34=XB04 z*s`bCqr)Gzp@h*TBR!ysmZSf*e9b8T$cm9TUn9W{UA#lV)Pa?X1L(20I5-<_&4|e8 z19x<d?QcPy<VcDNi0t0;xpcXSj3HO3%ZPd6*~O#*I3hT~6MHU}_1fVP;nnlDui*5a zKYSa6)u+0<YCbfETBx`Bq5~7LeI9c(O*=$a+_mR|h4p9SW%<qaS-=Vn!t7Pzx6(I4 zQkMuk$rn&pW64D`xL>8?zV;f~H`(z5R4$+o!@vYOH2<b<Z&|hjPI6xDU(U~2e@MeY zihe(j`yzk|y<WSdtgMxW=9ve$JlY!=9IDd+L9$&x<YNv6HH2_wrK8hJD6m|sce4!{ zWxhnL+|P%(;!*C$?1JXS5L8S3rG>XNCY#XTk(wS_-jMrhhz$#VeW15j-THcrTQyxp zC>*uZt=EYbDEq^JkaW!zZ{`twXse?|YF9@i6Z~{fz+%PjljsngG)s(N_}J$AV^(`_ zb_4@eJFv}#V*AIG=Yn-h!)f<+Y^aBc0Eaq4)-m7c!74GuP&xHPIi$NkBsuMSaHD*$ zYgLuS&AhR6hTU;$XV%o68fsPpJX3pW+55o1naY3DlYnArP9b&v+BX9}k^U}|OFwNS z(9?j`af9Ng^Eu1Gwmz*&uMq7!OPBM{LFfQwJQ8?kU^Fq@dq*(m%taxVhKj=kdw10X zcfsRhDWt}sUf97MJ1&&bpC1;l+4wARsm+5sVeKzC^k;ADeR`QX{rUwE+<+^6R$A|d zeWwU0>9@Ten480>*A5!p6e&>7ncM^XmD}4pP$_Wc!7qsnXI_iL5cmrOK*@O$7@M1$ zQNyMKgM%O+3<Dp?o6MfE1`vwdySuzUmd~4KF<WQAUjY%BIW|50llFoYDiyi1=yc8; z0V2}1`Cv4I&GOGLun#w<lOZRH`dae9F7N^}22C-&FEgj$BID$srekjb?Dl@$*>D1{ zB;s0g-+<8%No`H1sa*Q@@gj^OEGKC^hx6@3y>JH{(ZuY!)fwt^BxN;4<&MqT3`u^~ z)4cQT5N0ZJni(7tm7MQEWlspvz%wN}NlJeuxpl@vw*G$OCV_(E$HQ$(XEkpIdh670 z3_5H!NG%31b^##SpO)*oF1!q2r3V}ofbo5&K#Cuh_46Z6^VbbgFB2{K;hh4S5ykV6 zK%ZfqmjE${m?CU-xMJg+K<DAfw}%1=V9{~rF|mJDJaaApmhb;<hduT5;)0rvEofZO zGi!z}Y5m}{`R2Eo!<Bk8CX!gE3muNn0o%Y1LV3;h$Ag!Fo_k=Lx$SmYyVWg0{RCxX z?Uen_{olk-uTsOT*U4YTt*4Fte7@VM)F=E!Yw`Ox`wy1&%NSJPh0^ANUwMQte*pDn z9POy5dRK9Ua5BMphI5u0@}=?1jrbs&xgvrhUGjyn&^axGqJ_m>yr`tdIxkI$(fB-; zwkMv)eFL%2nW2!e&Yeg`M*q!?NpF);wqo^djmV*&IrmHg_G6?raVuG3Umz_lgZy#0 z{p$aW;(W!St8hReA4%mX^Ej*-Oy)c?>*>)sUuk7iqRHu)?GB5#n6GwB)9vX-8&xl- zV(JV4cfEF_HEdVPG<_nYj;NFt(TX?_YT_L$zmMs-IdAQLxLo)qv?F{TX7Z{L(P%Z3 z$dX-qAo7kHIA@Zh?D+R5R`5+8-1g@il8`WQmKy{oC1L29Y-)BK>Zn&~51?@^e;gcA z&o9UX+(Ch2Rq04C9$XbkEbNHjeDaVF3?G2U6V~pD1W0rE+=;SVO5>6%mnT1Om!5!J zW%2-RmmMD@B*?*WBO^}H#8O?#8aE`t`5f8|Gc#%w6q%;GGvv5}8(y>{v`Qtaui)=h z^z}z#^Hru*HR3W{(PIY1e0&UMtM0y-tumSJRx1HBOw5SwKQW0eXmcl^x}>1t_sG`p zn-qRC){>GBJ{MyemNSZqs{I{L5`P<fNvL4+Ep}?X#^9w#tQ}f)FL&`Ux*CWc0NciS z%5-Ua`wH#GlMfEAV3)%wyKJr}S`R_9_FBR-&N?KBQU)Z65+~miGsBcn2IHqR8+_3E z3+j_m9r*9qN&GJvK@u^r?%=@KidZ%lCXbQ=K`yDN&zbCMxf1$mJ1D41+l(f}Am%vi z-Qh+lDCpPc61Dkof?e%4=497$r~ZDiaqDni)y-!0quVu)DlG><pGH#=Q|wv7kag?R zBp`!sIX^$Y{GuX|iX)ZMj+}9N=ctzc{b@$7U4c$QLPVPozQ1oxkB#Eh9(}){U0Oy5 zxMuk+E#X9bobj=l-+GNK4tB0wPB3GnD>llQI!URi(<Wa$poWjS8GbJM$AglC1^Cp- zMl{1+2wx4~GCd*N>vHsuzLAz3(i52{`iED)&9O;Fb3W4vRr6Hy=q@c52|UPH-`+g> z%I=XM38(Z=UPgT=S{PU_XN5XGm?N$g??%fy-r6Z<26uMRMOoMJj;<90v^bF_;q-hu z1u#q>6%B3tqTPxDtga*~#-O#|U7_Qs7ZIRpTic?CTbE}8{|?Wlb_)W*)>@p_TIoF@ zGq`$Ar6S?i&ylEJGz?W{i?bx2cL|NVOU>lqsEaa*Ba}<>oAMJ$)P2SyxeDVld=u-Y zRrS*Z6Mjq$YPGoVgrFa9ree;;efNm$kLbwBZ3|Ek^2{nN)dmWCGXLHO^utvtJv|Qm z`X!yjG>tFnMR}qjl0c`xT5V+_BV)jInNb6hi$2yH3?-F=t>6!D0BpJ2BTSkLJV=9) zY3b+yd?mlBICLr9=D6*E_`c8GV(%x3=Ka(A2D|yLwkil<ON$wa5Lb2H!+cg}g5=G! z@l^YBeR&oK(lzC1hr!Uk+UUeVluOJ(PpT`ye60ln7*@t$QUjSW+4?E8zNhE=gSiUR zYXtk)R4-(q&IoTB5H=PRP}1w3Qm!&&#(XRgFPi~v9iyo;LZ??t<67<3Jn}{H6V>Xb zrs)Mge+C|w%T~6ot5-IAky26?B#n{(u`)cE6#$En=Q{*d8wUpxh5<qtf{)yg-)3u0 zy*l>tCc_(d+!<GgOZ6c)tG+?gKUCWIF61aEjC0?oaJ}fnMH5qTY@<30z7STxt5@De z&lM`H|JtJfV!3wI68ZIv#;OCwIspC;``iyxPwVLAr}Ky@Dl%Wya~#fl2fQ0iQq)fz z52>|?OEMVQQz=p^`SA)4&f(mJ%3%BnHA?%qB=u&Dkd^f}>q*+3lVPjxn~2UQY^ihR zqXMb?!p!C^0fgqp^3tE641ynMR5U<4&-5lPR5&4~H>gRhFVk?izjOq$Ay^GF1vRa} zFCzwIAm+ZzX>Ch3kB`56SRmxH6?)x&POyL49*Cb`TqFw|Fc7-&EjHK~4sR3yJK_!l z)~x+f+BV<z+vip|kom{OIfYY3K;r#4gWJ6uRK91$EU#ymwuIOHn35z8I~(VZ(YNn1 zE_s>P<y{xz@P=Q0F8cN{;oZ|;%H%=D9NQ4XOx!<VJ=S!Z>2jD)dV0N5RmB!hXFiIw z!&P<JN@cjO57FS%mgW?W8Gg3%tFpi1i0N<KJ}3y$av_Da5Be73)fm!8Z)Y#*1voGx z4tELa-&~N43_GtqqI5pS?0xp!DCG8PKwI<hB;w%YApz@i0n1Ti+XLiMhVC0qGTci} z!F&<R!*%t8p5C?T{tn9ll9%{rsM_Gp`hhGd7%MAjiL1w3-@Ow@f;NAIWnP;C9xFgV z@Yoo(@H`Kr)@*cx1Ktv{8TYJtmF+cqvGYq+V9g7Apngt&G-ZmK$ALNa@sY5_J;q|8 zE(wpnSjbiVE*Wp{LvkdQi*|8&akkzAy4=y(1zOjhL-y2%rn3PZQ2EvC7<OV2N1>#m zHV)MP;7QZ>>!*I84H4a2p!J5(_#jb^|E$VU*2@nc56@!w_iu7Oy7=7Ok9JLGRA3Hu zYx(59`A|T|?aZ5kW03was{__@PB5?+N$S_bJqkSPu0q6jMRbw{1n}&mfU;{pBGF}g z)D8^PHmv!}WUV15ht}?Olds`JqHBk<Vou)Cq5n_8;k4BqoKg_zABvqLCv!Y$zu5pT zj~(r;ie)oz-)*ZXss=Z(9K5i~Q;`%{FnO{b;YYOn0?FD5M8VpN6SPO(th@v$kxNut zuKOIf`lH5E$x*!j32PpoGF@k*PH)hY-7Sj8zlGmmJ1?v5hGb?|z<)mO&+^aZwh^g! z<9lsFG_l;P;6SN2S(_~fc3rD;k^tu0eALjow;}*mq7{LTJj5{<ncq+dj70HU1_mY> zDybWnz1V``JT2Mr+hp;7{)|v6Qv;$GAR5~R2I(+A&CCJ&BpS|;z|U2k!E0-;)06Jx z_0`nI<r<>~Y*?LlyYyA9-%%FyPwNPj>)#2erzQOR`e%dzc8bo2e`=nP;cF$OWy_fs zGy^}D5HQ>6dz#_1=(Vm_FCy8l2LWs`1x4f+4KzyHQaW&{N=hp!fZbhS+xrpe@VzCT z@C3TV_(ZQ%>P*7X_!nXcMF*71)@So`r=L7Y31Ktll+=7EMN?-<gm)eV9Nux>H=NMZ zW6d#?2;)W*w9Sq7ub>)T?R&pRGo;QwJco7jJG_qp(3UCtXwlV)*7}VwvbW32ttEXu zjWMV{NCaS<iFXH=&yFm&?cWzvr_O|Fy`B#|XdMoNWc2t*raBVX!fcff3&e}pu(P1l z%8$9~ZA&S{DBynS)XHS)E>?3stWUFgV>pnl6wAKJ*@mWlUyrddl&{oRcWH9d7fb&) zOTIcugrW(hCo6q%b71{DESzs|kxtJ#Y|}C^s+Ry51R_CRCeA|w;^VR&&`?REQb~*~ zVD%Lc!Y${2a!5oILylWdiay(Lfz{(rt9}~L=j^oM-<ZNvQue+EH|DqXgnuj{r7Cn* z(Q!Ljke0NRana@w4MFYO_%6Zz%s#0fM*)NaOw4r(qO0C)t_g-pgvG`aQV=?DEjuCD zYQx2+sD14=6fRJX&5Ruojp3L7)T(}qup;7Vg%pA9Gkl>^m^Zb@?R-z+`+&AK(GA<@ zdLpK8C+O9l$#>im6PQa2(pNmbW6zI0+71V{dB6#<rDfsemb~;8;HB>Up@h%V7jg6y zSZuW4_<}%EU^dF!VbJoH#NObe_Nz4rPN;NAu7;1n_2I&o#ciXmuI?X6NyAgPR^tjs zQ-3ix9C*(>wj%asm}wnWGmq-*-bhI)5g(DipR`J_S#F2{+4KF)0okff`<L(E6#*?i zEIO>9F8_5%@0g0oppur>7l0*L?Gia>Aw-MWuR8@mo3nKUd$#p?3p~DO9$jKk<}2OO z->;;tJ-i~YIB~!M7Q3<)X+p!p49^1l>#QmL!xR)0a#V_Fpnm=?*mP>PdPm%s#%6vF z@~I~S?;9c#u@oVPN47=xDXu7XZDb^**TP<nCYy&x{0AACMVWK_qj$9#+x%kuzr%}& z0|VhOQQ9R>zNVt@k+s`3oIE}!zfx41j(|UV@N2&oWA${~NlBr+7*pxM@V-9WnAJHU zrPnkX*{W%3Upu#!x%RosEb~j4-umR^_UZLoLRt0M*MeG?&^0XW9;fTn9(M(hyIueT zuAf`(``(=byb-W)lDdL%<a%ws3OpdsH@b7h2;C9#ise)@$2e|M88t3~0zJwS1%rW@ zsTM^8zike$n`0Tx;;@;|ZiYWKL!;2w0oi^N1kXD+?#ly|NxJ<!777EFhf{Z2#DQbj zeQoaM&Nn0{2~Y>#w<49A--o*x-l)X9(trwcBM6E=G{D{Ud|vzX(|d6bhe%d8c{UoK zz}!gE{vnoin1u{=*R^iX%SoIm&P3G1eUZ$mR9o|Y?e1?-U1wamxWIh-(Wh5Ldad{2 zQ}@J3l~C~1^HPVhcsVL>zfsI1HKt5_K%Vz~KY8%>Bfa>ys~Po7u6@@felod0Ix=~u zXDC#XL^%^tSo^V*kg09shv<y9+a8z7rVZMWk-E;lcfv)MB4hWiW&do%*(@I4M9fGl z8}oy1ZKGZZ7Q4q+J>-YDsNw+Szq@#{ds16DtO|Gc0QB{|Y|@yWLMrW40v?ZD(($om zDN#{@IbCOt&w?-MPt6D{d(lD>lZMQOwQwvKcPY~|Gv5Uc**}VsBmSHR21MC8m5I^O z=+A5iaDU)U4cYNQI|LaIPt?6QwRvr9oG1d)D;SS<;><Lb_@yOZRDAv)`}@-O*GGfE z(Bju$$9V3eI!v3z7CbSf&<Gi@F-);ZOf2kh0ow3TL_Q@YHxTFm?2f9&jFP&#w5A8Q zd}G$YfEVG>k)|yts3!UPZdA}@V~g$1u$%fvBC)CDwPK)X9rRuM#)d<y9@JkOD)a<( z=cb>;n=JmbF(g7MAa(xfJ?_U#D8KV7V-QFQDQ=T@hf5u3t$GgvgaibjyBe=QM0$9P z4%DT1YER&p_Mcohu1uHo^;5=8w{kHs$kjDAViMbQZBIs<)b<oIwBC74!u$iKE4s8@ z{N}5xYXYXfR1|%E4WL$|-WpFs*O7AFXgyh09JOnuod<jxdSYo>*434AW@hGB+KmBg zEqpB<1j^g(WaDfwE4#Qlpg%&$>?E^&>u^}2$Y)BRk@dphr7$NanryxoDW>|3QA~dJ z8dPko68}|<1>pK_UvSVd<G*!svn{HqNVs;Rp5b61q-Fe6G&MOp+hgMIANNNT0gu;) zVyr?R8QBT2CRJ5AlvgK2)Xd<>$czq0<_GDR1Qo=^vBePR9GlaDBa|ozUO=2Er6NO6 z)pp4g7$hnwMI>xv!vstt0D@EE+kU9Mg8!=T%`!rAXJtSx4d@!M;at>!7rD+yDyiXT zWk}oF{hnDl@?m`2W#fWQGpM{c&O$ytpWhD=gC#yLv3roje`rT8ZNAxrI!WJ+@(p#Q z+32ioU*EOyS{Ev+SMYA~E5V0Da$4HbvwMEoR3B`s5A7lrTN%wSW>W)EpTxy6iS5AQ zrkuT@!c?p;d4h*+5}<8ve&D(Ibx~YaMJZ%21h`0`ARr+Ce=W0<KS1DpvW7*wJV1c# z?G3w_$tb>cXkFIsD4kFg)T#?;Xu$S!A0$%!p#gfj@eAcM20~*^G@Ff)(m3rYsW=nU z?4Hq@n-Ls%_;5MgVC=v`lJEfx1N|?H#aX#sG_OBX2&_gMuVlsP$}||vH006M)Dled zi-0e(EHK**3NhWhL9n#4GG2z1(fk@OXetg6@OE-&UZS9;c5d2XzPm#xuBxIG?7)x; zJNuE8Q0sO?D{OSSmIFqMvc6mBqTd5wYMPE_try%IDmk*xr-}>OI$(jbuA$-V(fP&j z^m|U<z_-n-FABk19cR0!=7P6t0>Dk^qng?~|HlgffYJKtJ18$6i7RSj!`^O8?&uBE z_Ojx$zfTZaC&9XX=`2Yyk=4`le#QGl&&l~FE;d%|^Jf$?BO}z2k-lX-L%d6Es&h&( zENAvPfI*n!)y&*$D-4s94&Uh+PKN<JmEualU*K|nV5D8E!_33uW)1?~yLx<$Y)+S- zl$BL9J8Y1)->Ka`=`*(MI?-dZUF@`vfyLb++~j_<B)#E4457XQS2hnt_!W~sE=|jf zs%n(n>_5a%R(sbiA=iuk5&({%(`aM5(4VBDq(89eyh?G?<p-aSu@#8I)NjdZ#5q4S zx;WnAT2?b3h|BB4-RkTHN@LVP)5Gv^2`YYi)QV+xL33;r!JLx5zO>f>>02?g<pniv zLLxAhoUZ2~D(c!jOFUKaX=yT`Pz6V>H4+X*(C~DPOxNXXyIiY2eP@S?vEx=6RA3Ot zAjA(x4x4_bbnYN(EEl7Zmz;h7R_L7`5{)l34J|D>3rm<`+Q*PGwv=MLB|C;9rBJnl zW9Qc8zrABk{0lanq;%|@tx#~@O?V+HX)J#e`0Eag@DPiWWy2E@MiJoQc+)`-4tY+u z_M4>M`4p<Im;RKm;ki+c=N|kS3}Oj={nUo6DW`WnuV8?uI$d~fUO_=hVWGIP@*f9Y zB9Oz;H;}>zlK6F!sHxRx+j{WZ5uzisd-a25UB_l!5FINU7$}&S2>9M#_MY4Tt+7V4 z9K4C1lYnDJtz5eqq@?Zo3Oe3&T3VvGe0J}Tj<n;H8yAD+iw12tgXAStL}6<j9dTW} z!Xr?s7xNI&(FY(Gn>P>D^MTQI_k9Bko@c>0h__FV>lp5n$A4Nh)#{ziv$RIFW+x_u zwZmr@Cl+$h0_XPX7zH!rWeSw$)<}U}avIzMpK7EyTrDPTSz2gVSXXffXGmiFuT37W z_NUTWxDu#>ZD1?%$z;L`)SsId+q+<4+KEky=;;x#Op@KIR`9VEUpQ}EAs}MRt~-=^ z@aw<tk>yU;KF|~n4iD$Orx1H1{1EBNAiV6_srF7=JN4}0Y1h@Ow3IIFqzwX2R_AIA z12=Btl$4$=8YoZrQRkxSA22)1+0*k8NW0V1gjAdjIGkyqL-fn&Hie)dCirFX=#P2o zLLk8C?xmYqN)%107#PTSc)V&@Tl@XB1|EEirHv&i2Ln;oxD1$XeIKp{Ayevj6Ylah zmbSKVq}<$Jvq>Z96E2R1jK??nD7vtODD`+kW#Mgq#WXq}x@k17)L<agYSED(68e4! zPb861sz)fuwLB5fH+RcZ8pW!bvZ~O|hO>t@fILs^Pu8C>>Om(iR+w1|ahkM(K)7gX z{fLmrmNRW~?-JZsFd016Z^gPH7p}kemHC1s*urzy&MaZ$TK()ebtd-SF4=MEcao@B zh_%A-#1DVcgrI&bVAD|b4hfmvF-L{(jm?axL_MO4M+)lp$bT3&t$BTV=g``^@5fHp zoJ*4|O9fOtX>)Vzvon^aC4(^}x3=;J_#n5c7HyfgVyy;xH{B<5Fw{ZEyKXT>Y_%P^ z%Rx;3V5}e2uAhAw&r4v#Yl-V89@Cp~)$M%QZNKv3dlRqSahtL?vS!b0`EYs{y|a0K zU+>602(PI(O73cAbAtS{^|(2A4n~Uz*{<;br3CZ86(Q)P(XiE%LE{>?6@sHoceo|c zodbCP<B$W?mP<`~Y+Ygn3kL%3xbNzd2d7PSi5wCA;ZyTDN4=Jx_I~YD(nwq6svuQ& zz#>)mg-Hcae!5Y93+8VgEW?bEHhre2hyENW+vQ}Wr=oniE^9lx`{7EVy_*LlBqU1i zzqHV^jZ?HJ*GOc2F|ul8G&HzrV*_&x?oRuPjxNQ!E+gZtO@StfOGxNB&LWwa<-c$K z%&<}&2>5$r86uH=!eGX~q6vTgLBd>4qph(};+MJlZP=9iPwJHl`OR5tJd_L~nO8vF ztH;M7ffvua6wbfMWM5x@d~^VV=OZH7*In~}n*o1uVMD40{~?mKq`cDn_sZ*KSs40% zuY}rBK_~uu<rCL`oBR4YHw_%+zc){g{lD1EVLnndAu$QG+R>i%zwLf}9QXSUbr3{U z5cxD{{5!cL{U~I=v!+}q+vyCY4DW2qLY0fpKXm_p-do%v(B<Xl$(SV27FtZowiADh z{=aGg&|{J?{k@XLFVJBXC#OY()sTv5L((!le4%&j>5SIn+I3m#xR5Y8p*Y{o#QQg0 z4GEU%q<cI;qtDhW&F$xoZ5Q-zn%IlIfg;YzN{{<?Ecouf!#(Mr$l!DKdRltA#<pvA z;jXpAMG@}o^c~uaxQTmhM1B<;Q{uU=90?!XB!PW4FSqGwB8u7f^=DCT$__e)zpp<+ zRVBl#wYxG2hdDev-G>EUbq#hF=AHpq3k%lIzL+74dRs(x+ey6-ic`nNcLT=HCrNpp zrrK`qnQ{M4bD#Tc1%qb6)zR9S<4mZZM8h%*Sya>vgK8shPH#|YpnQ?A9Klm=VDn8n zy`szG!G0|Lyv}eL$<h0l8ml(9Cr!VX0r>M$?P5FUSZwR{ULES#<;CBrdS*+4WKld^ zk!HUKd6t~*up4!`ze*$>o&27{{CB-?^;<Z)_TQO9s}<Ch5Cw>}j%dYd$R!Gd8pdP3 z4MnScZO-xq29uM`H!o16>N~E{rlKg{r{M3{I0IvElu4n)Tq|Csp@OeSsQask3XCt% zbh!#iHdTztCV!{kIYu6lz)``n%Ig2Sssa@{t%$w0=5{=M@o5In=~4YxkB}*W?5=Bn zU1{@=-0XaJ+n*1Z_gxehrJ)kMLQqQ6_D*lPndrVeSX6A+#JJbqDGGc7lo<o|#Zdyh zWhN}BqCt!+TUAazD@TtUae^|nKNIL^(Z~Em|8qqP77?1qTa4%%GvfOP?`9%}Dln3x z*m>HMQF$|)ZLyp&R81y6=(=x9(!&!?lBpMFvV7+(iXm%1YP%k+z3t?H+v2FJg=9L1 zq1QXiOsqs6<G=+74E0U3!DHERV7{?l@A&`=HFQig%<)E9spaA8e>YMGP@fA5;1Hi$ zU;u2gu#gI1@vF5fR_~y)4l9L~)*idVUStHsFs!X@y7ttoB^J-Ty<0d1dd=aoNS5pr zDZ+6+BA$(Dx7J6TdNAU?|B}Ehs5YZdCbDpIMD!Z!W4#SgotvdxIkl+p)MQHT(c)}> zRiFq0XT-JdXM|mazzZ;z&NjKNSeqlVNb)f0%{|s~s6G7Gl>==J*?J!_1h-EV1VYAM z!Nb1Ns!y6MhBFmWXHJWGsULP>cc|5@OQf#7+kJQ{Z5W$vR!CD@oOO+?^erh>@A&+1 zhm$$}x#|TnbW@7#)qY(sUv$)KEug)UKezwW(HXt|3f(5-;T`z;3sUIBT^4v)T(r~s zgDU5{eu%Q#a;OLfiErI^;0g&J1Wiv>{Mn(}cF<22o`ICM%BJsVc4c)3am}d&H)`VV zVPQ@QQM*2hUutUlt?H>)PIWO>JoGQ|;)>6raQpjwG#@G`r{O`S;&%9}KRd`U4O=$_ zRZ&|XS{Sq(*VorWv9mW%9CRO`DX#AJ9bIEtPr(%1@?CFUTYoXJ+A}KDXHMX;9~bEk z(O(V1d9e7Xv_;9}Ief6?@wBG*^`j4w8r)l4HaAp~4xL{!b9#diIzh9p0BB(M30>{6 zXMNoM0(~hRP~I(?@^mk=<av`3$!+@z<MGOl6~WATj>!G|fzN+zw|0E3>Sk$FElCfm z%YP+#e9_rF{%;Y<Xp--Mnugw}3|rRv*!+vx@AQ{HfA-hH28r|PDKjFNI*}>Y$V=>5 zQG`5_P8A8}R(<%g{O(zbvK%>~J44P)27ek(Dx3dG?p{!fnC}qEI<RYsj{3}{sPCAJ z;^&A|A%}K5$zuPTP|%<=v!TJQQ0N9V1rL@7QjWxJ%27=6V;o0V4VEVS&y*VG$H!k_ zLif@IO0U277Rj$Hp_sXqbcw8vCqxvK-tBAWr!g*P5PDx6q*YOSJ5aqDkTcv0RRa97 zl=BfUbnHXQM$)Xu9%N~0X<R{<zp+mZb?miPz1E3B_cUCqF659*o-b*3EqF15qaE$u zw}(>-xU5_3-(m=dnF{4LtNc46CO3;tx2C3eZpv$upYBJ?7poHncCZCK+!@u&qJD-W zqbI(FU2|%tVPNP!xNuq|ayQ}B(QJ3(@o%}Y_i6L^;J)fe$JBX_-1xksE*|x3VDGqu z&SzicT?Nm|ru6{CIhW?VOb&6fcB}FGt|J<nt0@Lv4^ve~xYFi8TnbCT;h~W#kzLQp z#rnma$IVl)uFJ66*Wh4g>tC9)6*{9AFV9>_dcLqVEG&;t!_>HZZuBL?XC6M<H~KO% zbZ>qqkE9gEAdr6kYsqQzH(>6-Xn`_`?JB+YZ|%!#Ik_m%EbL1``N?VU<k)cj+^i{G zen6f#?aV|0mQ;W)t+aOraDR<+O`w63Y~LWYqPmilpC99k&%PCqKE@C(%wZR@edCAw zLNUn!XfO85u@I>koDfjJqI16nP}pF8ykthI{uFcJ^>n!07$Q@Y(W~da)Ng|ElmJ?x zjA9UT@_MDT7ohAOuBtptu6?lLu%wQ%gq>yB#)V!8A8rT@pS>?qE(T<N-OiO|JWRoq z@9xsL9sM22`6DfhP4M7mXEAh%N3YWyc-_DWWt>Zn_zLEi_l@53dC2Pd%EJkZ(-sY= ze;-F-`jy>W9|S;c=v#-RtUb~C_7t7jP*qG_-{c7X0SeuX`GL~n@%fmLG1CoQf&YoA zT%E1+X^a6Bv{l=$3jR)IRSzs9Nk&I3=2carUQc+PJ2*`0KDnu?)(^RWJ>7j-?)|<F zd~fE(Jc?5+vhEOo0QH*(k~w+_$)sGnFsa84i%}qbttcfUMarrESqWdr?-A$vGb=8L zw6-gSmU;uGq0@a=f@M?K!@;7}qu-H7yK#@F-+;^W^KBmL5Mf~6a`)<Sd(tRV<_PdX z234)W-XymK*U7l4X=&Ui>BE1I*7Nf*jE@(ccW26Q%xl9SS-y!^1hZ_U&NLYO9wbI& zWSYOcK-P-$xOco-a~i+>x5FEs=S)D-f$}Ri-s4)Bc)!9bMuKJC=Rz@~Gm#$A-q7gi zKI?Dy=3MX0%usQ^htHsbPG<}MV?Rdj6PR3bTkhqFiHT1#Is_k{yryQ4^UHGsBcV&6 zUcqRWeqB7dWh3CU->MZmiI1<1aW2Y~>%tHV8G+ti<U@ig!*e@g*y`$NPxpTg{u+XR zc300>q=3U<K2&X#ENjlsh%@};rKGj|3#8V#Y<Bd-F(K986>|^OX-o07YRx(F2BXOf z?3vOt*ofvTmp>_I`CZB%idpDVe|^0%JxdFn$elw%+qFM}@@^?bv#x!!Z1o^oYW5C< z*_;(0X1AfU6i^n*%{|Vx=jPj7QJhzN#Q2EUc5nC3<Xs|7>fH$CzAp4{LsyY}jJ`Wr zcd&-csWn!bjBas)P(<rHluY_x1;-M?dbYD7eI9&fDF<@!wG!vOObO(l6cpc9aL{E- z8iF8nV~`r`iP@cxfF3M(*b8Z}MkxM^G5){BsQ>p+_u%?do?R75Ba^VOnvz<AVi}Sc zbjV`JToINXTke!qN&OS_yBMK>(M{1J6~x-qmR8>Xf@Yx>JB;c|e_z-O_oSeHL^+}@ zAxEV83Pvhf17!6#w~tFag+ebaZtTy(0mI|;W}jW@cHiE^r`@h4hM^u1%rDRU7nR>m zx_INPKl;8)kH?ld^M%yBoEdyKY^<T}MAp{x@w(v7Y<ECpv#{SN8NW6LR77pX(W;Oe zqe(QA5{C!e=Lw1Fx~7&^?f==MRIo>X4n^2`1j<J$%zcd*M9g8ugNSoKa@#Au_vfdM zPpiTk^QCjL+B*#x8`{HbZ(`;POARR!X^l|0NpyFw|1X;HV_#ko!!_clDJV?%E3jSH z)CT0{1jAa)>8@DTr@X*!$RI>Rq$+P_53Y;Y6ebNRWO4O>JDPy{g2Lcd34pLrBagNz zvvU&`hRe<^2}0Ph-wdxA{`4)mdlR+}`sAjqktj7omiYDJ|Nh~3_G~OBO6VxpYKpU4 zTWh^Iu?eryL-s@4ZhY}SFOso_rp!h59H0akY|pwkI2_~>(tO?uTa`CgH2&nS0WzR} zLnp5e{DaCd&;VKP<n;6>Rn@oZWmjMMmi&q{b6Ysm^@SK?vgjl(MT=<Y$1C#3wkem) zH{y(Zp-yifZ5S(y+G>dGh0R=EEdTr;g`H<KoYA+&bxE{{7CoXxbfPnQi-d^YYn13w zq7KnT@1jHm(V~|ig9t-JCpx2dqnA;Jd;Hg3cdh&7-uY<OjG1@dbI#t+{_STk|87RE zD4f~-uej|ta96FYpTXvG+e*C6x<XOvhOEgy|KG%E?(;WUkfQ~c29II+(ihLaQpdy! z8ZBv2)`S+^yT=68y-l&Q9}wb+8jmVyIdJ;UO^6KOV_`Z9(^d};Klw;$?HRE<n|^<( zNCV_+of@WkoZ4=xq)MzZuC9C^mK7xKEgW5n`Zs2S#T^{d@7<Q-+gT|W`I2*HF<52+ zRc>5*kCFg|UO16^WlNcLN^DO-CZ__@J5fb%fAd;Ae!hB<hA#^)PfCCxI&{{QSGM$= zQ(B02!Sy8pesuIh{&%7uf+!U*J%nP;(T4X|-<52f+|w15JXjemC?H%o?EN;pDBj#= zWz+yTH*+$%><jCJpBrwNb@=f;|IRVCHt$8{vLMq9Faj5{E;qGx#vtzg^`BIA+8u-A zsRDi(*v1r=)=);P&M;WxmKpfr&eZLh`7eqIJIw}}l9ZHecEaKLPo@W(5mvQ9rh&(3 z5X92drwK51mZ)KI4d-7y4fTL{$M_=W@0T@5{V8p^+B)cN@Xr!hTHnB740S<OPvKl+ zq@<;}PDg5TnZoW2VU><KjJuEax2=uOKzrNe3s+Vt_S^lAGWeJ6iBq-t_ynW(Bkv%x zrQ+xO2&ytI;D1m0pxg9ZY~H&~pJrV<`e9dp1Nms`{^v7TX;TDqznT~V48TqJ_Z`iv zr9%fX@8YCawB+PERTf&rc@6p8#wM7lUxVN{K8h5Mv&|8&X!XmLjfg$Okq#}_c4~47 z6pp&~V)wg?O3k1B`m3`IggXDj&3mUi2wWLwD1W@v#r^eccS`gH`_aE-4N_8SMVoQ+ znh3%U2GXuF-ob)L((y_1iZGEt9$%@xPe<bP>g-4JCNi3unD6I&ByuYadZKw-K2H7X zVCM=&$=(KoF;j$?LchY=8Z)q)@KMWqfojgq4C|(RMDgAI?t{{U6nbVrOv4tA9{*hr zUFJEA=BzgO_2uYjBR}4Ct`e&1U?jnlp59UKwBfOEgj-x;4_`fe;1~k_@Lj*2G?!7% zX=IwUwba4<qS=#ks=-rmroq|#Y&Rz*Wvtq>S6C^Yx;ItNxV`1<>eISytAb-)PG<ok zhFT)As_K3W8yO%kXkD69ySngbvgkmqs-k&|Mz=yge9F-#(3wZP<um9PUD(Lr0r!FO zwO=%Y)xVI@!kRZ|!*CMXu9qSRnd?@1e-whQVST0AW9k774UP9s$)>jMnBZp2Q6oBT z{@pe1`XK_J(Y>l5yncK9wT=$Fx7Oxp_mZG#rADpF;7dhCTrD_o0|KNR#+?^NIC)m1 z*cq6tUI_yiB#6MWS|kr8fvC779oJJ9D|1S}vt3pQQ<M%TCE0@qa#~uWi8Y{q4F_vz zax%!Y5={e20O8^PksW6^<9-GP;%{zJhejCMy?x8_o1tez)9RK4X}ZV+oGj}Q)si-l zWH$KKMM7~lKcP=0U{ba`vZQV=TK1_XnRl|&a@whja%G=Czej>NQ}*!1PB(*!9j&#t z7er|_E}ylrb1-G9@iwJ=z!q%UyePACbX-};3&B94p@7ulr-_w3ICkGb<aDU<w*En% z&4#p-hfYj%u=A>m`{J7B2t_wE=zjJ++?x$JGkKAFjpfoNl~sTUaIO1su-_5yI^*=? z=vXU0@5y~K`i>5gx$ebGLkw_%F;p}LSIU1NtbccMU>LhDJ_Ar$?|6BZew8^SmZ<(A zAyA^+o&t&K_+cC4v;>y%`;)@DA0m9)h3od;UD#Ny?&IZ0#l#Rke!K&^;=fMFTLsV$ zN{S?Rbt!>{OunpGP-`Hi2ELO8^g23Gk&zgWz?i`OeOJS2LmzZ1RfeSfV=6N@A~-y( z6Rvc&|0$X=I4#wr{cXL!m6&2t$CuGOC`a>ww~he5joV%T3E8W5WLQCg-EQNN#xZg< z-uBxKZKX!x`#s3j(bOl@)qd8@?#dOxx8Z*~D|&6sVWS$-wDEdxmI^pvm)CMNHQ@^f zrN%d94ozEIW{JtQxz$$e0zQAKy<uirvP_*EvTN0m3}lWWhkq&Aa;^y&E@ncE-Nz^t z6uR6HQ)F)9*p0Icptyp`7tlp;wS3U#w*QLb2D&K?EDkV10m=(Jhjkx(TPPG#?nJB` zcrEtk4QpeLI<e6B;r@-(i$@D@{zY2+6Rs23hT9&T7ve5zTk-{UEI#6GOQ@=H)jkou zD@~4@JE118MRst2ZcVuV52-17`CS#GPE1CpP8ti!@ATBPZM+bTnrDQ(Ztcfxv6S;! zxNck0X)mUmW1yw&T1{8)K#rZ#zOtBBTo*uob;oq|ZC_6fEs)Fp3l1%*uH}$MQwzd= zhTnDe>&b~=hEJyWuHXJ1&XmUs8tF7;#<yz?64!r-KxU0kfLM>4zxf~>5fT~-3Kfmk z(_wwt2O3cK%Q?xDPBNINzbFTF$R7rQP)NW9DH&PsZ$(<4t0?w|(l$8EUFwU|WjyTn z6Bf3#M}*v;@mKS{?0@;Jp|Q2W@zDZ1B#%Tm>qG@ha|p5L%7AWmXfv6SG@Bl*UX4dL zsTY;IdpnA?nQ{6#j%ePk2o<g8;06zwjR^|Snea?Vh?IgNZ0sp>NMKwh4XtZ4#m=zT z)!bzHqF%kRj18INoDUdD`R-wMYEOoyylZn^m>)^%_-jqg_E5KuCzX!Y^B=GY88ct{ zDdY2N^5e`bn5z;|=;#2`@{~1QUWak$Krt!v!9_qQ4lWs~jpa;*@x7xXv9s9{Q2wbC zD-68S&M!5jA<lWX1pln_>zt@}0R$R1#X4AAZgSGvLAcZM!{$Tp3_aa^eyuO7C^-fR z7o`Oq>zkD0cUNFiIbK>)rz<;1iF%EH!O;UT3e>!OMDdAl%2zrh<owV}^jmLuW!mOQ zy@{r}@izyv+bD)a^|R1_BFFzN057Es3&~eHAbTo2IotMPhGiBupjh2K7yDY|ckFt# zJ!93bs%=K0bM-sZ&ei^I2d6Gah}`BqKU1I(Jzy8PRhNrmDimAKc6pcjZwB7XoVHAI zDN~_!Q<ev5u9}@F1$So5Ix`1FtoQ@#jVI2!XZGGtojPs1OU`>z7QhKlVv$@Xtu&SM z@x$Ir;?S(+?2UCw!4-;>8q2Y1=7}1Iwe@LFqbD3COGlnY2B_g8oKN+BQ}r6r)bEbe z^y_Vw-S#@7whr3*$kCAXfE}T$Z`=0#9jEku=l*k)Tx%{6r3r{OMNHQXk_7)?IYD+; zE>bJ_t6hmy8kb3X5<GXPGBD88*9}iXId*ZPtqFIIpG1tp?!Ao45Y^dmYS~|}7Xm1F zG}YqSIoN5QImc6eH)vb4c!)t~HobQcM<LUj>bbKsPOP^sMpx@nbZN)gT`ieY>loWz zXIb~&gFyo~`EH*Q_on@XTRd9ac3oGO$Lz0|?MtykhTOgATGtk+Yg1fcY+OK9pwF6f zmX-v52(h6=ow!%dXeou7Ym-T~&xJw^9`Ye31tM_IsiNsr2{@vcR7!j|S>~-D;yQOE z^$qzv${r85Ls?42<+#lj*2@zpeDB6dK&szqU_kp6zx*j3H$eTzw9TuZg2GYQ>Ab+j z4}nzYUVSkkb$}~VIXV(d*Cb3_uHHS6dA+hsa@!L;5~}%-aA@3s7q!)A7f%9a^};+@ z@mdmV2eMThx~aA~)EO>-zrh}4!NJN_QPZ`_c+ycg#_U>4`HBk&A^uQYhlJE+)^5rr zYjeIJSrQTm3M1XvmvsVtNK+FL`(~m78AB@(9uo1_`((^uXYOZw%D)exIJEWSA%oJk z=O1<I-Z!dfY)21c0JDr$U=PsF_^PD%iS5cCx8v;zS_+C>lJWAHUztMNlg&=F)h!QD zsAc$f!<LWNJ=9=@(Mf9el-1gR{W)tT<%2@#r$4-0tNkML0Q?17%o(%z)5yZ!@%;gb zy;nw~zkYq#1bY*ue^n4JBUHuVXL8Ijd7qMg(_1N*{?D=9Wv?}LLWa$m9?t@9s1;t6 z%flx6ED54I>>V&I-<nq)h6G-{X_*SD21MKA<;<LdsaL^ZNGO4uhbRCu@=7oG&T-+u z`o*rCL*ne9i`K=pxFDvlPc|dA%F~E=d!ll^7Or-1?pg4SW$DO4Hns=LNO;eB?&5^Y zpoXxhS6RuBv9y$S3QT$BKwk!9aq3m%=~bG7=}yCwlQO2Jm^!IKgncT77p`P}XFDsi zM?7B(3qMpZcWD_-bUM_Uz8PIBSAchtfl~cZ8aIFm5^McPoa3KAfA<*LHa_x(uRZ+4 z$lwQ5DmtC3-STdpS+0JJuYTjc79wCT00s>^u0uFZWy;IT69hcS*KcqXQZI@x2vva? z!5%2`lhV?EG$kP->c7Qa{7*M636*Hkm)*;Ik}kE>4bJ_*6$5;Y=In-3V!Ur>`4z3H ztkG1p)|&#~8(#hH*n#c;j{a^?8=f)Avg8+LG1S4H%d_5cHm|JXNmo%}x#crj{Dc?0 zDhy?+xij089vp0mSHK2_=@4H_Tyozdh^7{>z7rM}2IF(bQw%!?CH|KMQac29-QlVo z+(7D$)ROyh#3XnEBgl|gf4SD5rJP$}cYRePU3DXaIXIXxkipM9L`w*}*do~Q*q^^? z{kxlO!g8izd74#Q{N33c+58eFb>@j@Q&4R`%65<7@ZmG>hZr{bfT_S0yg7Ns#H35J zwT;>~yOt@C$^fL(EeG`W?Y8&g{2;&YKYRUhVT3oDf`-;8gCETyAc#*&Pu~+qpJh<} zj)*`yd(dY+M@_aJlQ=a+Q%6V9$%)7|$46X^DzLA@#BZ|6fdt%tioU*2@ridVx{lfJ z76Tss4W+s*z7|`o?P;KGVwPTHfADzoC}Lm<9{q~k+vVEm3QTAk;@Dpd_R(f^E-0zS z{4w*gU~b@R*j}yAk?_ZlY8mLYvKOBvKX;6!!p^%KHct4q$3Cr4tt4lT{5;xz;7D0s zKeT*r|0<^F&tNYg=6UyEXf}M3G)?V{!6bMzU)I9@A`Rpmg>CHogqIVJ^cv+94!_Om z8jyZ=Z@;s%Jc}6`GPfCoCWpWa`!cS{(aBn>DjV?WLA|9TdC(z9N~+n}4d0*s9thBw z@cyr!wPN(9*HTBhAd$b%nER`jcL4MQ9_{)OOx8Ql+UAIb!E^opAOf1mDc3ahGXVLv z>OyiA1#*N^l8IW^cK^q}>(?IVV}j1MDAP)-k(IlBIY*4ANKVOjl5LE)Z@e>Ao0YNx zfk_1N_~63n#PvJDLVjL3sdDTq6&Sd~<S0uCLQNm%3oUO+2qpCRE+coghLZ17&NSZq z(&nVPI_uk8M?L^s37g9R7Fk;Q?i4w=TyMaem^qssaOrh)I@^@dmj`}rHg$1==rOjr zP<H;!$K)Wthe4~b+M0I_!GLCc)MA9=Ohc?P16so9hf{u269C<;04-NpR#d#gm&cSh zd-<dLPW>jZ&@tcpEaf=em?p8;9AP1kUjqggueIvP7tDQ}Df9e^ocS3IkiK{4Z_=wA z&)<rR)4j+MrwIHdV=`wU>@ub3)NkS8D+O92ffIlS9&?M|87sRj`-E8__JJG!ccV7y zK$*h2x=`txRp<*gQSai+jY(5)7{l-19VISymJ@MKv)-dFpPsor!&O`b8wMcA{x;V; zG%f^31Cp<<zTuU=M`X;gHtZ=5endi2(%<lx67~)*%S+L`wjJMcf^Or&+re}0Xrdp9 zQlhaVHSeBs_V)D8MSyDj9)bA~Ezm8(|8CiUkpBwVjz7d%6>!M|%rvPJ#;I^cT^BG~ zE{|6em9I&HN=s>gD^_g#7d~%S;ad|G;Lfsi=I16Z;l0q_eV2fL2(f!R0=l!SGbtlM z!PAq7l$7*%FIPoh{~@4F*T8Q3h@UA=$}d_*=X?&?hH2hCKnE76%FE62F{>Mh@7bo` z$~qjbNKT$weR?!@`}QZ^Zho`ml=P38s!0aoh=rY|yMFb_hK7dMSob^__~c8<KYYrp z8tVs#FM2dApP=p%6SuFAKK9PRYQjH^(ok6$R%Yz@5>dKk=(Rf=7W_9=&!k&u!nhxH z&S)+`ecoT`g8Ah;EM<_g()_Za{A!bzB<b^bL~(|~c!hzil@+IMSt=>B5|-hhrjo93 zG-W`i&;;VordF35JXP<troo2^{D8~T^=Stl>;#_Q$r*K^&<`dP;eKaJrQn=M20bMP zwx0)pY|nE4&VCQO+JTQ$42{(1KgD)Q$)hMFvaPV7F(F~$m7J6KTN=6za{9!?VL<NH zL=fXVl726Ja5rj$+$rXPjJ^F`^d&2H)%!i?8a(?C3Qz>(;ur~5fzVWkI`dP3%#{`G zip#M|ewyRi_w!~wbQ$f;BsYwldX-kcQNxnwE2HET^p+RLMLmPOYvoh5k#`7~z8KoM zxUh4Sh&Um+k2TbB%_jz&SXfW;%FAOL8@<(O`3aMSvg3Dj=`b+vOsgu$YHz!sh?te* zJCL|o<^=cTWG%qHmi-<9XJI?B*)_UZj1epv+1<|@-Td=M1skwkVUPeV;3opoH9;_6 z(gtOp-?W-$G+FB>F+9w_K>?bmCJ-R?{KM4-n{820hBGvg;FD02QZZ`S_vA5`LqRVo z3(INY*RO;|ukKqgP0ybIoG>yrw&>d_A38}(%%k{W*;x4S7uOr?GxzCzrdv#M2jL#H zwuZN~L{?{&^3QT;8%)gVo)@#udvt@*l6-+x<vxK4+OMnhxgNe$0vkjKpC2%)^&+y( z6~b*%?;c@|wzGFyI-N&Hogs4692^AKbEGLMHE8qep&d2|pUXA{#c(YXt?0q^H!{BB ztpm%etAG}tjmvX~=@{7G1+JsdM1&HPGAqVP9;ILRObdDWwS%sI5)}WZ7X?Kp!xin< zQoyK23s{u(I6h{Xl#x$Pjw1$Xi)Nj$NFqNU!BAHaD;rDAn<Ko(J6<xh`K;|@JwRmx zqT^@b+UI#CC2^N~XsO<GZmaXdRdB0>6VbnT{o3U@F~#V}tc?1A7Z`U5uHx4{e>vx= zy13?MLm*KpxC|ZjN$0)+#%r*H3r?`GFs2u*e~8Fv%3dep+iF@sfXau1^%NKPyx^Nn zLdw4g&>@+bxdmWQ&c#JiM?_7IGDASh%8E5$dAR#yVdC4K<CT}$7V;6Jldm*@KC}9! z5J&^B-xXv0=<WY?47Gkkv@{h68TcJWaK1CD*xA)3_=p=6C*=(cIDpTKwr(03Ek$VQ z+mI#skP`rf0z3$wF+9a(aCNtwyFZ4GKXMRa5IV6A!1CY_os<-E!DkZ5lcsJftH`24 z#h*&DvbrEUx7sv*>~z#s?;%R3pgg_r#q(+Po%mFBfM9MwLq?z^n$RXX%*`rd6oKec zW^CyO=koc=au^|lKnehGZv`>6bnaC+l^G~_@>_PQobF61wn2Lw=U|_YkGa5J*Ud~K z{X7>E0Q~g-jfvE_xDYetSzv&c=Qw~^TYe4R_rjC(J6!`B0q(DFu@0NA9tla=K|R)N zye`s2C-vmybdN;;e4KIwCVyju^x`S4=!;rZts)_{0C|}~{7gR4^GbkeE^a*qROETn z<?ZHWgQ>Cp5dp#qiT93H2TQDympg=xvch-;wn={G(&$Tv+;jle*Z7VJQ1V<Q;4?O+ zcZMqPz!r=%vuHn^?@^r}*RuBIibT|5Vpl7NCa3?*)qtF5C^NQ_#CN~6^k+H!^Tagc zoQu(aA999pXZJiQ2bIxrXzRzC!{>e7glSaljMOVU>MD2uX}}7^2qzqP^jIK`h*kus za~<$>W2MuC7Z<E&fb<RN&uT~jQ%Z*{@?HI4;0I?C5ct?2j2{&hpz;!_W_V$Kx;qtC zN<%FI#VU$@7}Ea@mzSO%5~GCOp&X;67-3pz3$}!PU!4~=WcJv20(|+>>gn;|KaG^> z(d8?}vOyr9M@AkrIL)`OaM-#o;%f0{ID&Kd!*nxEMbnyZxQ(qP!M$7eKrkWA?Sk6Y zvVKbC#g3Ys94}UB)bC*I7;2GEbt#BW)?=&HkE<RY9(>T>){l{--Yv?bnj6QI-(HAC zXG}hULBdqE23VMw06(HTB3Kg{9bHsX{b^&v4j6S&XNZM@L497xK8s&LF9ZYy54>T7 zG|y7*{LD#f@B)N=LPmzSH9rzG6$#qxD7<~^FvKAaeZQVtm2tvyqPlAC#?%`08|6ku zogzh;JJ?&b$ozx{qVO|6_9yg)Dmd5)2!eRTbfJUmw&rV(l9HB6O21ofk2}4{^bohr z6%0#DBd)2bxf>t(Ytc0k3{M8G$sdBe=CLuu7K>t8L`5GeE8}yNY#ysWH<#%$2mN9i z_Vyg$;xY3;7(iJ#==ehnwNUoBFgrM=tPWFZF`bn1OXYl(#G!#f=u3h~jYtrq)q(=) z_<+%e)ZTQ#cmMQhXlVB@V6&bRb5A~E8YRT`^%43*z#$znMmf+>KBF@D@Xv|JY-CSy ze&BPqpI*-Ll_COeBjk8Q4A15KSw0RZSXl6*FVEKd1P7Vf*uvYVn4fTnsi>+_YYqMc z2LZXIC7HdG6Vq=*Gz#_5U*H$odNmFH8GaX?5G_S8Y@&UF;vk=vXl?$|I2uqlJ5eaG zv80!mpD$=PY|lX_2`Lw1p8V!{gYq}b#3(ZI8?5%+*teS#U9-A|AYB9aDRAseWX#ls zs-%Bp=$U=)0mW<Je9sz7<T;Cukj@i%$RA*j<CG;|#%Ncr-z`zZ8|YMRXOA0)zVJQ~ zLqHDi{q;F7+`L-eT#w71nJ8>?^=b7+xB16ZY%l7yZ=)>@B4~qK*GvKWdH9ucPVVyV z?wc&^@4DP!p&cawJbg+?hUS*(fWxwB;o5_;J)*n8A*@1u{?{A~=u5#+9D6FRpi`f! zj5_qi81J{Dph^utx1II%-fn_>7nUMg4iUQQ^FD|XMeo-Rsh~cafTO=uv^FWTtUoU- zX7!%MO%efVg&`+b63uu<Q{%T~fa6lRp^~*Vd0Qjubst-pSJA1t6yowmZ+>m|MBMJJ zQ+|2VCj>g_4yyH9GVaF>Z#ug51SNc(?r^*+zHu@%y#)^Hr~*V3N{8EaTm*SJ<4>%v zeR?@=cKqbOQOnNw%IyyqVJo?%X<zD!jJU5##|^E-*%sGtlDN@DOOxZ}#Oaj3Zs-P# z{CUfhZVPSdawa6s5l7K8e&UT=r6Ci&iS4`6>5t^+#j@%glr{%fVem8N+B;#lb-Vuy zg%m7i&$uip-AdG(0G*HWnkfU98tZDiZQylok4J+4e>^hIMW0Riwlpc{Z<~jwqr-^` nf23wZdJXI0lDjQfN;rTCKB{qZN$7?W4De7@R9C2wGY|eRbz)(U literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/yahoo.png b/wp-content/plugins/wp-statistics/assets/images/yahoo.png new file mode 100644 index 0000000000000000000000000000000000000000..3645304fd517e461d71ec0b3fd582c1bfab769eb GIT binary patch literal 425 zcmV;a0apHrP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D00021P)t-sZ9Ri) zJAq9uZ%Zw1UoUn_ENO&Vrgun<&%fQGfx4A%u}m&=<l5_!YOZ}ypL9W)|NsApU8jLl zqTA2phFhk0MVoa)nS@xSdP$v&VX9s<e^)VksgJvJLyPtD_u<#*;MM5JwbjJ0)4QY0 zw3)@MkHV#hx|eaXj%KWpY^!fTh+;d4YdwZ&I)r35f>AGa@ay#F-tE4p&$*w=w4TJV zmc){9sES~xi)N%aF`_pB000JbQchFf-{0RaFULfm6#xJLr%6OXR2b7u$k!5rFc5{| zwFL`_8wC>-EcA|D-~Y*6#u+Bx#h%$8reGQ99mR7)Jc1xu7!nJtY-z|W2)Nyg_+J2J z{`L|5;?d_cFQN84nc|hp6Fz;%tD%unvI}nK$1gjfY@n4&DPiNWQ0i>U7WU4D+%cqk zj+{LOK`wZseSIh#nAYC5$92frfr9J0yB>{8p%Z#N(4vEJCD=ezW0*}=hRN&)c#;x{ TJ0J0C00000NkvXXu0mjfdymHl literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/images/yandex.png b/wp-content/plugins/wp-statistics/assets/images/yandex.png new file mode 100644 index 0000000000000000000000000000000000000000..b9706e70998ee3d84aed2a41b3ae66a27a417dda GIT binary patch literal 484 zcmV<A0UQ2_P)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0002$P)t-s00030 z|NqCw$M^U5-QC^M(b2@j#Psy^^78WG;o+d5p!)gw*x1<2%*_1!{L<3W%gf8b!NIw? zxuvD0O-)Va=H}4O&b++5udlE9w63hItog2}&Xtw@rjn77k$il7UteGUdR+f09q<ec z(+mvy)z0O^!`Q;Ywzjsiva<K1qx`I#mzS55lat(!kIs#a)r^eggoOEgdvS4bZEbDe zX=!C;W$|2GT3TAyP*DGJOh-pY^g~1cX+iu#LH}7e{!TddFE1}IFaJR**(fL|C@AhF zCFB|!{}U1V3=HKA4B89~3=9kk3JMPiZ_@w(0JTX(K~xyiJ;+xUf-n?C(I-KZNCJr1 zd+)vX-gW-d@#O>d&t3Px+zEOLpg2arqZa|mfRDt#7;Mutja+HB#^qBCnqlCtbq=`1 zJ_AGuA;%0!T?mR5Fi=X%DVix$#daaV7~79o`^l787n+>&`f0I!aYgi?rK3^hUeT4r z29iRE#$(oh3#3f|(w1eduJPdqH<-KuM5WADvvN?CQaVe(p!q`4ABKD+<Vm}L+<e$m a1oQ{w(-D&RLNj~-0000<MNUMnLSTaShw}pf literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-statistics/assets/index.php b/wp-content/plugins/wp-statistics/assets/index.php new file mode 100644 index 0000000..a6ce9c8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/index.php @@ -0,0 +1,2 @@ +<?php +# Silence is golden. diff --git a/wp-content/plugins/wp-statistics/assets/jqvmap/jquery.vmap.js b/wp-content/plugins/wp-statistics/assets/jqvmap/jquery.vmap.js new file mode 100644 index 0000000..caac440 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/jqvmap/jquery.vmap.js @@ -0,0 +1,1281 @@ +/*! + * JQVMap: jQuery Vector Map Library + * @author JQVMap <me@peterschmalfeldt.com> + * @version 1.5.1 + * @link http://jqvmap.com + * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE + * @builddate 2016/05/18 + */ + +var VectorCanvas = function (width, height, params) { + this.mode = window.SVGAngle ? 'svg' : 'vml'; + this.params = params; + + if (this.mode === 'svg') { + this.createSvgNode = function (nodeName) { + return document.createElementNS(this.svgns, nodeName); + }; + } else { + try { + if (!document.namespaces.rvml) { + document.namespaces.add('rvml', 'urn:schemas-microsoft-com:vml'); + } + this.createVmlNode = function (tagName) { + return document.createElement('<rvml:' + tagName + ' class="rvml">'); + }; + } catch (e) { + this.createVmlNode = function (tagName) { + return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'); + }; + } + + document.createStyleSheet().addRule('.rvml', 'behavior:url(#default#VML)'); + } + + if (this.mode === 'svg') { + this.canvas = this.createSvgNode('svg'); + } else { + this.canvas = this.createVmlNode('group'); + this.canvas.style.position = 'absolute'; + } + + this.setSize(width, height); +}; + +VectorCanvas.prototype = { + svgns: 'http://www.w3.org/2000/svg', + mode: 'svg', + width: 0, + height: 0, + canvas: null +}; + +var ColorScale = function (colors, normalizeFunction, minValue, maxValue) { + if (colors) { + this.setColors(colors); + } + if (normalizeFunction) { + this.setNormalizeFunction(normalizeFunction); + } + if (minValue) { + this.setMin(minValue); + } + if (minValue) { + this.setMax(maxValue); + } +}; + +ColorScale.prototype = { + colors: [] +}; + +var JQVMap = function (params) { + params = params || {}; + var map = this; + var mapData = JQVMap.maps[params.map]; + var mapPins; + + if( !mapData){ + throw new Error('Invalid "' + params.map + '" map parameter. Please make sure you have loaded this map file in your HTML.'); + } + + this.selectedRegions = []; + this.multiSelectRegion = params.multiSelectRegion; + + this.container = params.container; + + this.defaultWidth = mapData.width; + this.defaultHeight = mapData.height; + + this.color = params.color; + this.selectedColor = params.selectedColor; + this.hoverColor = params.hoverColor; + this.hoverColors = params.hoverColors; + this.hoverOpacity = params.hoverOpacity; + this.setBackgroundColor(params.backgroundColor); + + this.width = params.container.width(); + this.height = params.container.height(); + + this.resize(); + + jQuery(window).resize(function () { + var newWidth = params.container.width(); + var newHeight = params.container.height(); + + if(newWidth && newHeight){ + map.width = newWidth; + map.height = newHeight; + map.resize(); + map.canvas.setSize(map.width, map.height); + map.applyTransform(); + + var resizeEvent = jQuery.Event('resize.jqvmap'); + jQuery(params.container).trigger(resizeEvent, [newWidth, newHeight]); + + if(mapPins){ + jQuery('.jqvmap-pin').remove(); + map.pinHandlers = false; + map.placePins(mapPins.pins, mapPins.mode); + } + } + }); + + this.canvas = new VectorCanvas(this.width, this.height, params); + params.container.append(this.canvas.canvas); + + this.makeDraggable(); + + this.rootGroup = this.canvas.createGroup(true); + + this.index = JQVMap.mapIndex; + this.label = jQuery('<div/>').addClass('jqvmap-label').appendTo(jQuery('body')).hide(); + + if (params.enableZoom) { + jQuery('<div/>').addClass('jqvmap-zoomin').text('+').appendTo(params.container); + jQuery('<div/>').addClass('jqvmap-zoomout').html('−').appendTo(params.container); + } + + map.countries = []; + + for (var key in mapData.paths) { + var path = this.canvas.createPath({ + path: mapData.paths[key].path + }); + + path.setFill(this.color); + path.id = map.getCountryId(key); + map.countries[key] = path; + + if (this.canvas.mode === 'svg') { + path.setAttribute('class', 'jqvmap-region'); + } else { + jQuery(path).addClass('jqvmap-region'); + } + + jQuery(this.rootGroup).append(path); + } + + jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'mouseover mouseout', function (e) { + var containerPath = e.target, + code = e.target.id.split('_').pop(), + labelShowEvent = jQuery.Event('labelShow.jqvmap'), + regionMouseOverEvent = jQuery.Event('regionMouseOver.jqvmap'); + + code = code.toLowerCase(); + + if (e.type === 'mouseover') { + jQuery(params.container).trigger(regionMouseOverEvent, [code, mapData.paths[code].name]); + if (!regionMouseOverEvent.isDefaultPrevented()) { + map.highlight(code, containerPath); + } + if (params.showTooltip) { + map.label.text(mapData.paths[code].name); + jQuery(params.container).trigger(labelShowEvent, [map.label, code]); + + if (!labelShowEvent.isDefaultPrevented()) { + map.label.show(); + map.labelWidth = map.label.width(); + map.labelHeight = map.label.height(); + } + } + } else { + map.unhighlight(code, containerPath); + + map.label.hide(); + jQuery(params.container).trigger('regionMouseOut.jqvmap', [code, mapData.paths[code].name]); + } + }); + + jQuery(params.container).delegate(this.canvas.mode === 'svg' ? 'path' : 'shape', 'click', function (regionClickEvent) { + + var targetPath = regionClickEvent.target; + var code = regionClickEvent.target.id.split('_').pop(); + var mapClickEvent = jQuery.Event('regionClick.jqvmap'); + + code = code.toLowerCase(); + + jQuery(params.container).trigger(mapClickEvent, [code, mapData.paths[code].name]); + + if ( !params.multiSelectRegion && !mapClickEvent.isDefaultPrevented()) { + for (var keyPath in mapData.paths) { + map.countries[keyPath].currentFillColor = map.countries[keyPath].getOriginalFill(); + map.countries[keyPath].setFill(map.countries[keyPath].getOriginalFill()); + } + } + + if ( !mapClickEvent.isDefaultPrevented()) { + if (map.isSelected(code)) { + map.deselect(code, targetPath); + } else { + map.select(code, targetPath); + } + } + }); + + if (params.showTooltip) { + params.container.mousemove(function (e) { + if (map.label.is(':visible')) { + var left = e.pageX - 15 - map.labelWidth; + var top = e.pageY - 15 - map.labelHeight; + + if(left < 0) { + left = e.pageX + 15; + } + if(top < 0) { + top = e.pageY + 15; + } + + map.label.css({ + left: left, + top: top + }); + } + }); + } + + this.setColors(params.colors); + + this.canvas.canvas.appendChild(this.rootGroup); + + this.applyTransform(); + + this.colorScale = new ColorScale(params.scaleColors, params.normalizeFunction, params.valueMin, params.valueMax); + + if (params.values) { + this.values = params.values; + this.setValues(params.values); + } + + if (params.selectedRegions) { + if (params.selectedRegions instanceof Array) { + for(var k in params.selectedRegions) { + this.select(params.selectedRegions[k].toLowerCase()); + } + } else { + this.select(params.selectedRegions.toLowerCase()); + } + } + + this.bindZoomButtons(); + + if(params.pins) { + mapPins = { + pins: params.pins, + mode: params.pinMode + }; + + this.pinHandlers = false; + this.placePins(params.pins, params.pinMode); + } + + if(params.showLabels){ + this.pinHandlers = false; + + var pins = {}; + for (key in map.countries){ + if (typeof map.countries[key] !== 'function') { + if( !params.pins || !params.pins[key] ){ + pins[key] = key.toUpperCase(); + } + } + } + + mapPins = { + pins: pins, + mode: 'content' + }; + + this.placePins(pins, 'content'); + } + + JQVMap.mapIndex++; +}; + +JQVMap.prototype = { + transX: 0, + transY: 0, + scale: 1, + baseTransX: 0, + baseTransY: 0, + baseScale: 1, + width: 0, + height: 0, + countries: {}, + countriesColors: {}, + countriesData: {}, + zoomStep: 1.4, + zoomMaxStep: 4, + zoomCurStep: 1 +}; + +JQVMap.xlink = 'http://www.w3.org/1999/xlink'; +JQVMap.mapIndex = 1; +JQVMap.maps = {}; + +(function(){ + + var apiParams = { + colors: 1, + values: 1, + backgroundColor: 1, + scaleColors: 1, + normalizeFunction: 1, + enableZoom: 1, + showTooltip: 1, + borderColor: 1, + borderWidth: 1, + borderOpacity: 1, + selectedRegions: 1, + multiSelectRegion: 1 + }; + + var apiEvents = { + onLabelShow: 'labelShow', + onLoad: 'load', + onRegionOver: 'regionMouseOver', + onRegionOut: 'regionMouseOut', + onRegionClick: 'regionClick', + onRegionSelect: 'regionSelect', + onRegionDeselect: 'regionDeselect', + onResize: 'resize' + }; + + jQuery.fn.vectorMap = function (options) { + + var defaultParams = { + map: 'world_en', + backgroundColor: '#a5bfdd', + color: '#f4f3f0', + hoverColor: '#c9dfaf', + hoverColors: {}, + selectedColor: '#c9dfaf', + scaleColors: ['#b6d6ff', '#005ace'], + normalizeFunction: 'linear', + enableZoom: true, + showTooltip: true, + borderColor: '#818181', + borderWidth: 1, + borderOpacity: 0.25, + selectedRegions: null, + multiSelectRegion: false + }, map = this.data('mapObject'); + + if (options === 'addMap') { + JQVMap.maps[arguments[1]] = arguments[2]; + } else if (options === 'set' && apiParams[arguments[1]]) { + map['set' + arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1)].apply(map, Array.prototype.slice.call(arguments, 2)); + } else if (typeof options === 'string' && + typeof map[options] === 'function') { + return map[options].apply(map, Array.prototype.slice.call(arguments, 1)); + } else { + jQuery.extend(defaultParams, options); + defaultParams.container = this; + this.css({ position: 'relative', overflow: 'hidden' }); + + map = new JQVMap(defaultParams); + + this.data('mapObject', map); + + this.unbind('.jqvmap'); + + for (var e in apiEvents) { + if (defaultParams[e]) { + this.bind(apiEvents[e] + '.jqvmap', defaultParams[e]); + } + } + + var loadEvent = jQuery.Event('load.jqvmap'); + jQuery(defaultParams.container).trigger(loadEvent, map); + + return map; + } + }; + +})(jQuery); + +ColorScale.arrayToRgb = function (ar) { + var rgb = '#'; + var d; + for (var i = 0; i < ar.length; i++) { + d = ar[i].toString(16); + rgb += d.length === 1 ? '0' + d : d; + } + return rgb; +}; + +ColorScale.prototype.getColor = function (value) { + if (typeof this.normalize === 'function') { + value = this.normalize(value); + } + + var lengthes = []; + var fullLength = 0; + var l; + + for (var i = 0; i < this.colors.length - 1; i++) { + l = this.vectorLength(this.vectorSubtract(this.colors[i + 1], this.colors[i])); + lengthes.push(l); + fullLength += l; + } + + var c = (this.maxValue - this.minValue) / fullLength; + + for (i = 0; i < lengthes.length; i++) { + lengthes[i] *= c; + } + + i = 0; + value -= this.minValue; + + while (value - lengthes[i] >= 0) { + value -= lengthes[i]; + i++; + } + + var color; + if (i === this.colors.length - 1) { + color = this.vectorToNum(this.colors[i]).toString(16); + } else { + color = (this.vectorToNum(this.vectorAdd(this.colors[i], this.vectorMult(this.vectorSubtract(this.colors[i + 1], this.colors[i]), (value) / (lengthes[i]))))).toString(16); + } + + while (color.length < 6) { + color = '0' + color; + } + return '#' + color; +}; + +ColorScale.rgbToArray = function (rgb) { + rgb = rgb.substr(1); + return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)]; +}; + +ColorScale.prototype.setColors = function (colors) { + for (var i = 0; i < colors.length; i++) { + colors[i] = ColorScale.rgbToArray(colors[i]); + } + this.colors = colors; +}; + +ColorScale.prototype.setMax = function (max) { + this.clearMaxValue = max; + if (typeof this.normalize === 'function') { + this.maxValue = this.normalize(max); + } else { + this.maxValue = max; + } +}; + +ColorScale.prototype.setMin = function (min) { + this.clearMinValue = min; + + if (typeof this.normalize === 'function') { + this.minValue = this.normalize(min); + } else { + this.minValue = min; + } +}; + +ColorScale.prototype.setNormalizeFunction = function (f) { + if (f === 'polynomial') { + this.normalize = function (value) { + return Math.pow(value, 0.2); + }; + } else if (f === 'linear') { + delete this.normalize; + } else { + this.normalize = f; + } + this.setMin(this.clearMinValue); + this.setMax(this.clearMaxValue); +}; + +ColorScale.prototype.vectorAdd = function (vector1, vector2) { + var vector = []; + for (var i = 0; i < vector1.length; i++) { + vector[i] = vector1[i] + vector2[i]; + } + return vector; +}; + +ColorScale.prototype.vectorLength = function (vector) { + var result = 0; + for (var i = 0; i < vector.length; i++) { + result += vector[i] * vector[i]; + } + return Math.sqrt(result); +}; + +ColorScale.prototype.vectorMult = function (vector, num) { + var result = []; + for (var i = 0; i < vector.length; i++) { + result[i] = vector[i] * num; + } + return result; +}; + +ColorScale.prototype.vectorSubtract = function (vector1, vector2) { + var vector = []; + for (var i = 0; i < vector1.length; i++) { + vector[i] = vector1[i] - vector2[i]; + } + return vector; +}; + +ColorScale.prototype.vectorToNum = function (vector) { + var num = 0; + for (var i = 0; i < vector.length; i++) { + num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1); + } + return num; +}; + +JQVMap.prototype.applyTransform = function () { + var maxTransX, maxTransY, minTransX, minTransY; + if (this.defaultWidth * this.scale <= this.width) { + maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale); + minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale); + } else { + maxTransX = 0; + minTransX = (this.width - this.defaultWidth * this.scale) / this.scale; + } + + if (this.defaultHeight * this.scale <= this.height) { + maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale); + minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale); + } else { + maxTransY = 0; + minTransY = (this.height - this.defaultHeight * this.scale) / this.scale; + } + + if (this.transY > maxTransY) { + this.transY = maxTransY; + } else if (this.transY < minTransY) { + this.transY = minTransY; + } + if (this.transX > maxTransX) { + this.transX = maxTransX; + } else if (this.transX < minTransX) { + this.transX = minTransX; + } + + this.canvas.applyTransformParams(this.scale, this.transX, this.transY); +}; + +JQVMap.prototype.bindZoomButtons = function () { + var map = this; + this.container.find('.jqvmap-zoomin').click(function(){ + map.zoomIn(); + }); + this.container.find('.jqvmap-zoomout').click(function(){ + map.zoomOut(); + }); +}; + +JQVMap.prototype.deselect = function (cc, path) { + cc = cc.toLowerCase(); + path = path || jQuery('#' + this.getCountryId(cc))[0]; + + if (this.isSelected(cc)) { + this.selectedRegions.splice(this.selectIndex(cc), 1); + + jQuery(this.container).trigger('regionDeselect.jqvmap', [cc]); + path.currentFillColor = path.getOriginalFill(); + path.setFill(path.getOriginalFill()); + } else { + for (var key in this.countries) { + this.selectedRegions.splice(this.selectedRegions.indexOf(key), 1); + this.countries[key].currentFillColor = this.color; + this.countries[key].setFill(this.color); + } + } +}; + +JQVMap.prototype.getCountryId = function (cc) { + return 'jqvmap' + this.index + '_' + cc; +}; + +JQVMap.prototype.getPin = function(cc){ + var pinObj = jQuery('#' + this.getPinId(cc)); + return pinObj.html(); +}; + +JQVMap.prototype.getPinId = function (cc) { + return this.getCountryId(cc) + '_pin'; +}; + +JQVMap.prototype.getPins = function(){ + var pins = this.container.find('.jqvmap-pin'); + var ret = {}; + jQuery.each(pins, function(index, pinObj){ + pinObj = jQuery(pinObj); + var cc = pinObj.attr('for').toLowerCase(); + var pinContent = pinObj.html(); + ret[cc] = pinContent; + }); + return JSON.stringify(ret); +}; + +JQVMap.prototype.highlight = function (cc, path) { + path = path || jQuery('#' + this.getCountryId(cc))[0]; + if (this.hoverOpacity) { + path.setOpacity(this.hoverOpacity); + } else if (this.hoverColors && (cc in this.hoverColors)) { + path.currentFillColor = path.getFill() + ''; + path.setFill(this.hoverColors[cc]); + } else if (this.hoverColor) { + path.currentFillColor = path.getFill() + ''; + path.setFill(this.hoverColor); + } +}; + +JQVMap.prototype.isSelected = function(cc) { + return this.selectIndex(cc) >= 0; +}; + +JQVMap.prototype.makeDraggable = function () { + var mouseDown = false; + var oldPageX, oldPageY; + var self = this; + + self.isMoving = false; + self.isMovingTimeout = false; + + var lastTouchCount; + var touchCenterX; + var touchCenterY; + var touchStartDistance; + var touchStartScale; + var touchX; + var touchY; + + this.container.mousemove(function (e) { + + if (mouseDown) { + self.transX -= (oldPageX - e.pageX) / self.scale; + self.transY -= (oldPageY - e.pageY) / self.scale; + + self.applyTransform(); + + oldPageX = e.pageX; + oldPageY = e.pageY; + + self.isMoving = true; + if (self.isMovingTimeout) { + clearTimeout(self.isMovingTimeout); + } + + self.container.trigger('drag'); + } + + return false; + + }).mousedown(function (e) { + + mouseDown = true; + oldPageX = e.pageX; + oldPageY = e.pageY; + + return false; + + }).mouseup(function () { + + mouseDown = false; + + clearTimeout(self.isMovingTimeout); + self.isMovingTimeout = setTimeout(function () { + self.isMoving = false; + }, 100); + + return false; + + }).mouseout(function () { + + if(mouseDown && self.isMoving){ + + clearTimeout(self.isMovingTimeout); + self.isMovingTimeout = setTimeout(function () { + mouseDown = false; + self.isMoving = false; + }, 100); + + return false; + } + }); + + jQuery(this.container).bind('touchmove', function (e) { + + var offset; + var scale; + var touches = e.originalEvent.touches; + var transformXOld; + var transformYOld; + + if (touches.length === 1) { + if (lastTouchCount === 1) { + + if(touchX === touches[0].pageX && touchY === touches[0].pageY){ + return; + } + + transformXOld = self.transX; + transformYOld = self.transY; + + self.transX -= (touchX - touches[0].pageX) / self.scale; + self.transY -= (touchY - touches[0].pageY) / self.scale; + + self.applyTransform(); + + if (transformXOld !== self.transX || transformYOld !== self.transY) { + e.preventDefault(); + } + + self.isMoving = true; + if (self.isMovingTimeout) { + clearTimeout(self.isMovingTimeout); + } + } + + touchX = touches[0].pageX; + touchY = touches[0].pageY; + + } else if (touches.length === 2) { + + if (lastTouchCount === 2) { + scale = Math.sqrt( + Math.pow(touches[0].pageX - touches[1].pageX, 2) + + Math.pow(touches[0].pageY - touches[1].pageY, 2) + ) / touchStartDistance; + + self.setScale( + touchStartScale * scale, + touchCenterX, + touchCenterY + ); + + e.preventDefault(); + + } else { + + offset = jQuery(self.container).offset(); + if (touches[0].pageX > touches[1].pageX) { + touchCenterX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2; + } else { + touchCenterX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2; + } + + if (touches[0].pageY > touches[1].pageY) { + touchCenterY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2; + } else { + touchCenterY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2; + } + + touchCenterX -= offset.left; + touchCenterY -= offset.top; + touchStartScale = self.scale; + + touchStartDistance = Math.sqrt( + Math.pow(touches[0].pageX - touches[1].pageX, 2) + + Math.pow(touches[0].pageY - touches[1].pageY, 2) + ); + } + } + + lastTouchCount = touches.length; + }); + + jQuery(this.container).bind('touchstart', function () { + lastTouchCount = 0; + }); + + jQuery(this.container).bind('touchend', function () { + lastTouchCount = 0; + }); +}; + +JQVMap.prototype.placePins = function(pins, pinMode){ + var map = this; + + if(!pinMode || (pinMode !== 'content' && pinMode !== 'id')) { + pinMode = 'content'; + } + + if(pinMode === 'content') {//treat pin as content + jQuery.each(pins, function(index, pin){ + if(jQuery('#' + map.getCountryId(index)).length === 0){ + return; + } + + var pinIndex = map.getPinId(index); + var $pin = jQuery('#' + pinIndex); + if($pin.length > 0){ + $pin.remove(); + } + map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute">' + pin + '</div>'); + }); + } else { //treat pin as id of an html content + jQuery.each(pins, function(index, pin){ + if(jQuery('#' + map.getCountryId(index)).length === 0){ + return; + } + var pinIndex = map.getPinId(index); + var $pin = jQuery('#' + pinIndex); + if($pin.length > 0){ + $pin.remove(); + } + map.container.append('<div id="' + pinIndex + '" for="' + index + '" class="jqvmap-pin" style="position:absolute"></div>'); + $pin.append(jQuery('#' + pin)); + }); + } + + this.positionPins(); + if(!this.pinHandlers){ + this.pinHandlers = true; + var positionFix = function(){ + map.positionPins(); + }; + this.container.bind('zoomIn', positionFix) + .bind('zoomOut', positionFix) + .bind('drag', positionFix); + } +}; + +JQVMap.prototype.positionPins = function(){ + var map = this; + var pins = this.container.find('.jqvmap-pin'); + jQuery.each(pins, function(index, pinObj){ + pinObj = jQuery(pinObj); + var countryId = map.getCountryId(pinObj.attr('for').toLowerCase()); + var countryObj = jQuery('#' + countryId); + + var bbox = document.getElementById(countryId).getBBox(); + var position = countryObj.position(); + + var scale = map.scale; + + var left = position.left + (bbox.width / 2) * scale - pinObj.width() / 2, + top = position.top + (bbox.height / 2) * scale - pinObj.height() / 2; + + pinObj.css('left', left).css('top', top); + }); +}; + +JQVMap.prototype.removePin = function(cc) { + cc = cc.toLowerCase(); + jQuery('#' + this.getPinId(cc)).remove(); +}; + +JQVMap.prototype.removePins = function(){ + this.container.find('.jqvmap-pin').remove(); +}; + +JQVMap.prototype.reset = function () { + for (var key in this.countries) { + this.countries[key].setFill(this.color); + } + this.scale = this.baseScale; + this.transX = this.baseTransX; + this.transY = this.baseTransY; + this.applyTransform(); +}; + +JQVMap.prototype.resize = function () { + var curBaseScale = this.baseScale; + if (this.width / this.height > this.defaultWidth / this.defaultHeight) { + this.baseScale = this.height / this.defaultHeight; + this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale); + } else { + this.baseScale = this.width / this.defaultWidth; + this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale); + } + this.scale *= this.baseScale / curBaseScale; + this.transX *= this.baseScale / curBaseScale; + this.transY *= this.baseScale / curBaseScale; +}; + +JQVMap.prototype.select = function (cc, path) { + cc = cc.toLowerCase(); + path = path || jQuery('#' + this.getCountryId(cc))[0]; + + if (!this.isSelected(cc)) { + if (this.multiSelectRegion) { + this.selectedRegions.push(cc); + } else { + this.selectedRegions = [cc]; + } + + jQuery(this.container).trigger('regionSelect.jqvmap', [cc]); + if (this.selectedColor && path) { + path.currentFillColor = this.selectedColor; + path.setFill(this.selectedColor); + } + } +}; + +JQVMap.prototype.selectIndex = function (cc) { + cc = cc.toLowerCase(); + for (var i = 0; i < this.selectedRegions.length; i++) { + if (cc === this.selectedRegions[i]) { + return i; + } + } + return -1; +}; + +JQVMap.prototype.setBackgroundColor = function (backgroundColor) { + this.container.css('background-color', backgroundColor); +}; + +JQVMap.prototype.setColors = function (key, color) { + if (typeof key === 'string') { + this.countries[key].setFill(color); + this.countries[key].setAttribute('original', color); + } else { + var colors = key; + + for (var code in colors) { + if (this.countries[code]) { + this.countries[code].setFill(colors[code]); + this.countries[code].setAttribute('original', colors[code]); + } + } + } +}; + +JQVMap.prototype.setNormalizeFunction = function (f) { + this.colorScale.setNormalizeFunction(f); + + if (this.values) { + this.setValues(this.values); + } +}; + +JQVMap.prototype.setScale = function (scale) { + this.scale = scale; + this.applyTransform(); +}; + +JQVMap.prototype.setScaleColors = function (colors) { + this.colorScale.setColors(colors); + + if (this.values) { + this.setValues(this.values); + } +}; + +JQVMap.prototype.setValues = function (values) { + var max = 0, + min = Number.MAX_VALUE, + val; + + for (var cc in values) { + cc = cc.toLowerCase(); + val = parseFloat(values[cc]); + + if (isNaN(val)) { + continue; + } + if (val > max) { + max = values[cc]; + } + if (val < min) { + min = val; + } + } + + if (min === max) { + max++; + } + + this.colorScale.setMin(min); + this.colorScale.setMax(max); + + var colors = {}; + for (cc in values) { + cc = cc.toLowerCase(); + val = parseFloat(values[cc]); + colors[cc] = isNaN(val) ? this.color : this.colorScale.getColor(val); + } + this.setColors(colors); + this.values = values; +}; + +JQVMap.prototype.unhighlight = function (cc, path) { + cc = cc.toLowerCase(); + path = path || jQuery('#' + this.getCountryId(cc))[0]; + path.setOpacity(1); + if (path.currentFillColor) { + path.setFill(path.currentFillColor); + } +}; + +JQVMap.prototype.zoomIn = function () { + var map = this; + var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep); + + if (map.zoomCurStep < map.zoomMaxStep) { + map.transX -= (map.width / map.scale - map.width / (map.scale * map.zoomStep)) / 2; + map.transY -= (map.height / map.scale - map.height / (map.scale * map.zoomStep)) / 2; + map.setScale(map.scale * map.zoomStep); + map.zoomCurStep++; + + var $slider = jQuery('#zoomSlider'); + + $slider.css('top', parseInt($slider.css('top'), 10) - sliderDelta); + + map.container.trigger('zoomIn'); + } +}; + +JQVMap.prototype.zoomOut = function () { + var map = this; + var sliderDelta = (jQuery('#zoom').innerHeight() - 6 * 2 - 15 * 2 - 3 * 2 - 7 - 6) / (this.zoomMaxStep - this.zoomCurStep); + + if (map.zoomCurStep > 1) { + map.transX += (map.width / (map.scale / map.zoomStep) - map.width / map.scale) / 2; + map.transY += (map.height / (map.scale / map.zoomStep) - map.height / map.scale) / 2; + map.setScale(map.scale / map.zoomStep); + map.zoomCurStep--; + + var $slider = jQuery('#zoomSlider'); + + $slider.css('top', parseInt($slider.css('top'), 10) + sliderDelta); + + map.container.trigger('zoomOut'); + } +}; + +VectorCanvas.prototype.applyTransformParams = function (scale, transX, transY) { + if (this.mode === 'svg') { + this.rootGroup.setAttribute('transform', 'scale(' + scale + ') translate(' + transX + ', ' + transY + ')'); + } else { + this.rootGroup.coordorigin = (this.width - transX) + ',' + (this.height - transY); + this.rootGroup.coordsize = this.width / scale + ',' + this.height / scale; + } +}; + +VectorCanvas.prototype.createGroup = function (isRoot) { + var node; + if (this.mode === 'svg') { + node = this.createSvgNode('g'); + } else { + node = this.createVmlNode('group'); + node.style.width = this.width + 'px'; + node.style.height = this.height + 'px'; + node.style.left = '0px'; + node.style.top = '0px'; + node.coordorigin = '0 0'; + node.coordsize = this.width + ' ' + this.height; + } + + if (isRoot) { + this.rootGroup = node; + } + return node; +}; + +VectorCanvas.prototype.createPath = function (config) { + var node; + if (this.mode === 'svg') { + node = this.createSvgNode('path'); + node.setAttribute('d', config.path); + + if (this.params.borderColor !== null) { + node.setAttribute('stroke', this.params.borderColor); + } + if (this.params.borderWidth > 0) { + node.setAttribute('stroke-width', this.params.borderWidth); + node.setAttribute('stroke-linecap', 'round'); + node.setAttribute('stroke-linejoin', 'round'); + } + if (this.params.borderOpacity > 0) { + node.setAttribute('stroke-opacity', this.params.borderOpacity); + } + + node.setFill = function (color) { + this.setAttribute('fill', color); + if (this.getAttribute('original') === null) { + this.setAttribute('original', color); + } + }; + + node.getFill = function () { + return this.getAttribute('fill'); + }; + + node.getOriginalFill = function () { + return this.getAttribute('original'); + }; + + node.setOpacity = function (opacity) { + this.setAttribute('fill-opacity', opacity); + }; + } else { + node = this.createVmlNode('shape'); + node.coordorigin = '0 0'; + node.coordsize = this.width + ' ' + this.height; + node.style.width = this.width + 'px'; + node.style.height = this.height + 'px'; + node.fillcolor = JQVMap.defaultFillColor; + node.stroked = false; + node.path = VectorCanvas.pathSvgToVml(config.path); + + var scale = this.createVmlNode('skew'); + scale.on = true; + scale.matrix = '0.01,0,0,0.01,0,0'; + scale.offset = '0,0'; + + node.appendChild(scale); + + var fill = this.createVmlNode('fill'); + node.appendChild(fill); + + node.setFill = function (color) { + this.getElementsByTagName('fill')[0].color = color; + if (this.getAttribute('original') === null) { + this.setAttribute('original', color); + } + }; + + node.getFill = function () { + return this.getElementsByTagName('fill')[0].color; + }; + node.getOriginalFill = function () { + return this.getAttribute('original'); + }; + node.setOpacity = function (opacity) { + this.getElementsByTagName('fill')[0].opacity = parseInt(opacity * 100, 10) + '%'; + }; + } + return node; +}; + +VectorCanvas.prototype.pathSvgToVml = function (path) { + var result = ''; + var cx = 0, cy = 0, ctrlx, ctrly; + + return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g, function (segment, letter, coords) { + coords = coords.replace(/(\d)-/g, '$1,-').replace(/\s+/g, ',').split(','); + if (!coords[0]) { + coords.shift(); + } + + for (var i = 0, l = coords.length; i < l; i++) { + coords[i] = Math.round(100 * coords[i]); + } + + switch (letter) { + case 'm': + cx += coords[0]; + cy += coords[1]; + result = 't' + coords.join(','); + break; + + case 'M': + cx = coords[0]; + cy = coords[1]; + result = 'm' + coords.join(','); + break; + + case 'l': + cx += coords[0]; + cy += coords[1]; + result = 'r' + coords.join(','); + break; + + case 'L': + cx = coords[0]; + cy = coords[1]; + result = 'l' + coords.join(','); + break; + + case 'h': + cx += coords[0]; + result = 'r' + coords[0] + ',0'; + break; + + case 'H': + cx = coords[0]; + result = 'l' + cx + ',' + cy; + break; + + case 'v': + cy += coords[0]; + result = 'r0,' + coords[0]; + break; + + case 'V': + cy = coords[0]; + result = 'l' + cx + ',' + cy; + break; + + case 'c': + ctrlx = cx + coords[coords.length - 4]; + ctrly = cy + coords[coords.length - 3]; + cx += coords[coords.length - 2]; + cy += coords[coords.length - 1]; + result = 'v' + coords.join(','); + break; + + case 'C': + ctrlx = coords[coords.length - 4]; + ctrly = coords[coords.length - 3]; + cx = coords[coords.length - 2]; + cy = coords[coords.length - 1]; + result = 'c' + coords.join(','); + break; + + case 's': + coords.unshift(cy - ctrly); + coords.unshift(cx - ctrlx); + ctrlx = cx + coords[coords.length - 4]; + ctrly = cy + coords[coords.length - 3]; + cx += coords[coords.length - 2]; + cy += coords[coords.length - 1]; + result = 'v' + coords.join(','); + break; + + case 'S': + coords.unshift(cy + cy - ctrly); + coords.unshift(cx + cx - ctrlx); + ctrlx = coords[coords.length - 4]; + ctrly = coords[coords.length - 3]; + cx = coords[coords.length - 2]; + cy = coords[coords.length - 1]; + result = 'c' + coords.join(','); + break; + + default: + break; + } + + return result; + + }).replace(/z/g, ''); +}; + +VectorCanvas.prototype.setSize = function (width, height) { + if (this.mode === 'svg') { + this.canvas.setAttribute('width', width); + this.canvas.setAttribute('height', height); + } else { + this.canvas.style.width = width + 'px'; + this.canvas.style.height = height + 'px'; + this.canvas.coordsize = width + ' ' + height; + this.canvas.coordorigin = '0 0'; + if (this.rootGroup) { + var paths = this.rootGroup.getElementsByTagName('shape'); + for (var i = 0, l = paths.length; i < l; i++) { + paths[i].coordsize = width + ' ' + height; + paths[i].style.width = width + 'px'; + paths[i].style.height = height + 'px'; + } + this.rootGroup.coordsize = width + ' ' + height; + this.rootGroup.style.width = width + 'px'; + this.rootGroup.style.height = height + 'px'; + } + } + this.width = width; + this.height = height; +}; diff --git a/wp-content/plugins/wp-statistics/assets/jqvmap/jquery.vmap.min.js b/wp-content/plugins/wp-statistics/assets/jqvmap/jquery.vmap.min.js new file mode 100644 index 0000000..ea44ea6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/jqvmap/jquery.vmap.min.js @@ -0,0 +1,10 @@ +/*! + * JQVMap: jQuery Vector Map Library + * @author JQVMap <me@peterschmalfeldt.com> + * @version 1.5.1 + * @link http://jqvmap.com + * @license https://github.com/manifestinteractive/jqvmap/blob/master/LICENSE + * @builddate 2016/05/18 + */ + +var VectorCanvas=function(a,b,c){if(this.mode=window.SVGAngle?"svg":"vml",this.params=c,"svg"===this.mode)this.createSvgNode=function(a){return document.createElementNS(this.svgns,a)};else{try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),this.createVmlNode=function(a){return document.createElement("<rvml:"+a+' class="rvml">')}}catch(d){this.createVmlNode=function(a){return document.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)")}"svg"===this.mode?this.canvas=this.createSvgNode("svg"):(this.canvas=this.createVmlNode("group"),this.canvas.style.position="absolute"),this.setSize(a,b)};VectorCanvas.prototype={svgns:"http://www.w3.org/2000/svg",mode:"svg",width:0,height:0,canvas:null};var ColorScale=function(a,b,c,d){a&&this.setColors(a),b&&this.setNormalizeFunction(b),c&&this.setMin(c),c&&this.setMax(d)};ColorScale.prototype={colors:[]};var JQVMap=function(a){a=a||{};var b,c=this,d=JQVMap.maps[a.map];if(!d)throw new Error('Invalid "'+a.map+'" map parameter. Please make sure you have loaded this map file in your HTML.');this.selectedRegions=[],this.multiSelectRegion=a.multiSelectRegion,this.container=a.container,this.defaultWidth=d.width,this.defaultHeight=d.height,this.color=a.color,this.selectedColor=a.selectedColor,this.hoverColor=a.hoverColor,this.hoverColors=a.hoverColors,this.hoverOpacity=a.hoverOpacity,this.setBackgroundColor(a.backgroundColor),this.width=a.container.width(),this.height=a.container.height(),this.resize(),jQuery(window).resize(function(){var d=a.container.width(),e=a.container.height();if(d&&e){c.width=d,c.height=e,c.resize(),c.canvas.setSize(c.width,c.height),c.applyTransform();var f=jQuery.Event("resize.jqvmap");jQuery(a.container).trigger(f,[d,e]),b&&(jQuery(".jqvmap-pin").remove(),c.pinHandlers=!1,c.placePins(b.pins,b.mode))}}),this.canvas=new VectorCanvas(this.width,this.height,a),a.container.append(this.canvas.canvas),this.makeDraggable(),this.rootGroup=this.canvas.createGroup(!0),this.index=JQVMap.mapIndex,this.label=jQuery("<div/>").addClass("jqvmap-label").appendTo(jQuery("body")).hide(),a.enableZoom&&(jQuery("<div/>").addClass("jqvmap-zoomin").text("+").appendTo(a.container),jQuery("<div/>").addClass("jqvmap-zoomout").html("−").appendTo(a.container)),c.countries=[];for(var e in d.paths){var f=this.canvas.createPath({path:d.paths[e].path});f.setFill(this.color),f.id=c.getCountryId(e),c.countries[e]=f,"svg"===this.canvas.mode?f.setAttribute("class","jqvmap-region"):jQuery(f).addClass("jqvmap-region"),jQuery(this.rootGroup).append(f)}if(jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","mouseover mouseout",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("labelShow.jqvmap"),h=jQuery.Event("regionMouseOver.jqvmap");f=f.toLowerCase(),"mouseover"===b.type?(jQuery(a.container).trigger(h,[f,d.paths[f].name]),h.isDefaultPrevented()||c.highlight(f,e),a.showTooltip&&(c.label.text(d.paths[f].name),jQuery(a.container).trigger(g,[c.label,f]),g.isDefaultPrevented()||(c.label.show(),c.labelWidth=c.label.width(),c.labelHeight=c.label.height()))):(c.unhighlight(f,e),c.label.hide(),jQuery(a.container).trigger("regionMouseOut.jqvmap",[f,d.paths[f].name]))}),jQuery(a.container).delegate("svg"===this.canvas.mode?"path":"shape","click",function(b){var e=b.target,f=b.target.id.split("_").pop(),g=jQuery.Event("regionClick.jqvmap");if(f=f.toLowerCase(),jQuery(a.container).trigger(g,[f,d.paths[f].name]),!a.multiSelectRegion&&!g.isDefaultPrevented())for(var h in d.paths)c.countries[h].currentFillColor=c.countries[h].getOriginalFill(),c.countries[h].setFill(c.countries[h].getOriginalFill());g.isDefaultPrevented()||(c.isSelected(f)?c.deselect(f,e):c.select(f,e))}),a.showTooltip&&a.container.mousemove(function(a){if(c.label.is(":visible")){var b=a.pageX-15-c.labelWidth,d=a.pageY-15-c.labelHeight;0>b&&(b=a.pageX+15),0>d&&(d=a.pageY+15),c.label.css({left:b,top:d})}}),this.setColors(a.colors),this.canvas.canvas.appendChild(this.rootGroup),this.applyTransform(),this.colorScale=new ColorScale(a.scaleColors,a.normalizeFunction,a.valueMin,a.valueMax),a.values&&(this.values=a.values,this.setValues(a.values)),a.selectedRegions)if(a.selectedRegions instanceof Array)for(var g in a.selectedRegions)this.select(a.selectedRegions[g].toLowerCase());else this.select(a.selectedRegions.toLowerCase());if(this.bindZoomButtons(),a.pins&&(b={pins:a.pins,mode:a.pinMode},this.pinHandlers=!1,this.placePins(a.pins,a.pinMode)),a.showLabels){this.pinHandlers=!1;var h={};for(e in c.countries)"function"!=typeof c.countries[e]&&(a.pins&&a.pins[e]||(h[e]=e.toUpperCase()));b={pins:h,mode:"content"},this.placePins(h,"content")}JQVMap.mapIndex++};JQVMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,countries:{},countriesColors:{},countriesData:{},zoomStep:1.4,zoomMaxStep:4,zoomCurStep:1},JQVMap.xlink="http://www.w3.org/1999/xlink",JQVMap.mapIndex=1,JQVMap.maps={},function(){var a={colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,enableZoom:1,showTooltip:1,borderColor:1,borderWidth:1,borderOpacity:1,selectedRegions:1,multiSelectRegion:1},b={onLabelShow:"labelShow",onLoad:"load",onRegionOver:"regionMouseOver",onRegionOut:"regionMouseOut",onRegionClick:"regionClick",onRegionSelect:"regionSelect",onRegionDeselect:"regionDeselect",onResize:"resize"};jQuery.fn.vectorMap=function(c){var d={map:"world_en",backgroundColor:"#a5bfdd",color:"#f4f3f0",hoverColor:"#c9dfaf",hoverColors:{},selectedColor:"#c9dfaf",scaleColors:["#b6d6ff","#005ace"],normalizeFunction:"linear",enableZoom:!0,showTooltip:!0,borderColor:"#818181",borderWidth:1,borderOpacity:.25,selectedRegions:null,multiSelectRegion:!1},e=this.data("mapObject");if("addMap"===c)JQVMap.maps[arguments[1]]=arguments[2];else{if("set"!==c||!a[arguments[1]]){if("string"==typeof c&&"function"==typeof e[c])return e[c].apply(e,Array.prototype.slice.call(arguments,1));jQuery.extend(d,c),d.container=this,this.css({position:"relative",overflow:"hidden"}),e=new JQVMap(d),this.data("mapObject",e),this.unbind(".jqvmap");for(var f in b)d[f]&&this.bind(b[f]+".jqvmap",d[f]);var g=jQuery.Event("load.jqvmap");return jQuery(d.container).trigger(g,e),e}e["set"+arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1)].apply(e,Array.prototype.slice.call(arguments,2))}}}(jQuery),ColorScale.arrayToRgb=function(a){for(var b,c="#",d=0;d<a.length;d++)b=a[d].toString(16),c+=1===b.length?"0"+b:b;return c},ColorScale.prototype.getColor=function(a){"function"==typeof this.normalize&&(a=this.normalize(a));for(var b,c=[],d=0,e=0;e<this.colors.length-1;e++)b=this.vectorLength(this.vectorSubtract(this.colors[e+1],this.colors[e])),c.push(b),d+=b;var f=(this.maxValue-this.minValue)/d;for(e=0;e<c.length;e++)c[e]*=f;for(e=0,a-=this.minValue;a-c[e]>=0;)a-=c[e],e++;var g;for(g=e===this.colors.length-1?this.vectorToNum(this.colors[e]).toString(16):this.vectorToNum(this.vectorAdd(this.colors[e],this.vectorMult(this.vectorSubtract(this.colors[e+1],this.colors[e]),a/c[e]))).toString(16);g.length<6;)g="0"+g;return"#"+g},ColorScale.rgbToArray=function(a){return a=a.substr(1),[parseInt(a.substr(0,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(4,2),16)]},ColorScale.prototype.setColors=function(a){for(var b=0;b<a.length;b++)a[b]=ColorScale.rgbToArray(a[b]);this.colors=a},ColorScale.prototype.setMax=function(a){this.clearMaxValue=a,"function"==typeof this.normalize?this.maxValue=this.normalize(a):this.maxValue=a},ColorScale.prototype.setMin=function(a){this.clearMinValue=a,"function"==typeof this.normalize?this.minValue=this.normalize(a):this.minValue=a},ColorScale.prototype.setNormalizeFunction=function(a){"polynomial"===a?this.normalize=function(a){return Math.pow(a,.2)}:"linear"===a?delete this.normalize:this.normalize=a,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},ColorScale.prototype.vectorAdd=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]+b[d];return c},ColorScale.prototype.vectorLength=function(a){for(var b=0,c=0;c<a.length;c++)b+=a[c]*a[c];return Math.sqrt(b)},ColorScale.prototype.vectorMult=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]*b;return c},ColorScale.prototype.vectorSubtract=function(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=a[d]-b[d];return c},ColorScale.prototype.vectorToNum=function(a){for(var b=0,c=0;c<a.length;c++)b+=Math.round(a[c])*Math.pow(256,a.length-c-1);return b},JQVMap.prototype.applyTransform=function(){var a,b,c,d;this.defaultWidth*this.scale<=this.width?(a=(this.width-this.defaultWidth*this.scale)/(2*this.scale),c=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(a=0,c=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(b=(this.height-this.defaultHeight*this.scale)/(2*this.scale),d=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(b=0,d=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>b?this.transY=b:this.transY<d&&(this.transY=d),this.transX>a?this.transX=a:this.transX<c&&(this.transX=c),this.canvas.applyTransformParams(this.scale,this.transX,this.transY)},JQVMap.prototype.bindZoomButtons=function(){var a=this;this.container.find(".jqvmap-zoomin").click(function(){a.zoomIn()}),this.container.find(".jqvmap-zoomout").click(function(){a.zoomOut()})},JQVMap.prototype.deselect=function(a,b){if(a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a))this.selectedRegions.splice(this.selectIndex(a),1),jQuery(this.container).trigger("regionDeselect.jqvmap",[a]),b.currentFillColor=b.getOriginalFill(),b.setFill(b.getOriginalFill());else for(var c in this.countries)this.selectedRegions.splice(this.selectedRegions.indexOf(c),1),this.countries[c].currentFillColor=this.color,this.countries[c].setFill(this.color)},JQVMap.prototype.getCountryId=function(a){return"jqvmap"+this.index+"_"+a},JQVMap.prototype.getPin=function(a){var b=jQuery("#"+this.getPinId(a));return b.html()},JQVMap.prototype.getPinId=function(a){return this.getCountryId(a)+"_pin"},JQVMap.prototype.getPins=function(){var a=this.container.find(".jqvmap-pin"),b={};return jQuery.each(a,function(a,c){c=jQuery(c);var d=c.attr("for").toLowerCase(),e=c.html();b[d]=e}),JSON.stringify(b)},JQVMap.prototype.highlight=function(a,b){b=b||jQuery("#"+this.getCountryId(a))[0],this.hoverOpacity?b.setOpacity(this.hoverOpacity):this.hoverColors&&a in this.hoverColors?(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColors[a])):this.hoverColor&&(b.currentFillColor=b.getFill()+"",b.setFill(this.hoverColor))},JQVMap.prototype.isSelected=function(a){return this.selectIndex(a)>=0},JQVMap.prototype.makeDraggable=function(){var a,b,c=!1,d=this;d.isMoving=!1,d.isMovingTimeout=!1;var e,f,g,h,i,j,k;this.container.mousemove(function(e){return c&&(d.transX-=(a-e.pageX)/d.scale,d.transY-=(b-e.pageY)/d.scale,d.applyTransform(),a=e.pageX,b=e.pageY,d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout),d.container.trigger("drag")),!1}).mousedown(function(d){return c=!0,a=d.pageX,b=d.pageY,!1}).mouseup(function(){return c=!1,clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){d.isMoving=!1},100),!1}).mouseout(function(){return c&&d.isMoving?(clearTimeout(d.isMovingTimeout),d.isMovingTimeout=setTimeout(function(){c=!1,d.isMoving=!1},100),!1):void 0}),jQuery(this.container).bind("touchmove",function(a){var b,c,l,m,n=a.originalEvent.touches;if(1===n.length){if(1===e){if(j===n[0].pageX&&k===n[0].pageY)return;l=d.transX,m=d.transY,d.transX-=(j-n[0].pageX)/d.scale,d.transY-=(k-n[0].pageY)/d.scale,d.applyTransform(),(l!==d.transX||m!==d.transY)&&a.preventDefault(),d.isMoving=!0,d.isMovingTimeout&&clearTimeout(d.isMovingTimeout)}j=n[0].pageX,k=n[0].pageY}else 2===n.length&&(2===e?(c=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))/h,d.setScale(i*c,f,g),a.preventDefault()):(b=jQuery(d.container).offset(),f=n[0].pageX>n[1].pageX?n[1].pageX+(n[0].pageX-n[1].pageX)/2:n[0].pageX+(n[1].pageX-n[0].pageX)/2,g=n[0].pageY>n[1].pageY?n[1].pageY+(n[0].pageY-n[1].pageY)/2:n[0].pageY+(n[1].pageY-n[0].pageY)/2,f-=b.left,g-=b.top,i=d.scale,h=Math.sqrt(Math.pow(n[0].pageX-n[1].pageX,2)+Math.pow(n[0].pageY-n[1].pageY,2))));e=n.length}),jQuery(this.container).bind("touchstart",function(){e=0}),jQuery(this.container).bind("touchend",function(){e=0})},JQVMap.prototype.placePins=function(a,b){var c=this;if((!b||"content"!==b&&"id"!==b)&&(b="content"),"content"===b?jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute">'+b+"</div>")}}):jQuery.each(a,function(a,b){if(0!==jQuery("#"+c.getCountryId(a)).length){var d=c.getPinId(a),e=jQuery("#"+d);e.length>0&&e.remove(),c.container.append('<div id="'+d+'" for="'+a+'" class="jqvmap-pin" style="position:absolute"></div>'),e.append(jQuery("#"+b))}}),this.positionPins(),!this.pinHandlers){this.pinHandlers=!0;var d=function(){c.positionPins()};this.container.bind("zoomIn",d).bind("zoomOut",d).bind("drag",d)}},JQVMap.prototype.positionPins=function(){var a=this,b=this.container.find(".jqvmap-pin");jQuery.each(b,function(b,c){c=jQuery(c);var d=a.getCountryId(c.attr("for").toLowerCase()),e=jQuery("#"+d),f=document.getElementById(d).getBBox(),g=e.position(),h=a.scale,i=g.left+f.width/2*h-c.width()/2,j=g.top+f.height/2*h-c.height()/2;c.css("left",i).css("top",j)})},JQVMap.prototype.removePin=function(a){a=a.toLowerCase(),jQuery("#"+this.getPinId(a)).remove()},JQVMap.prototype.removePins=function(){this.container.find(".jqvmap-pin").remove()},JQVMap.prototype.reset=function(){for(var a in this.countries)this.countries[a].setFill(this.color);this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},JQVMap.prototype.resize=function(){var a=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/a,this.transX*=this.baseScale/a,this.transY*=this.baseScale/a},JQVMap.prototype.select=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],this.isSelected(a)||(this.multiSelectRegion?this.selectedRegions.push(a):this.selectedRegions=[a],jQuery(this.container).trigger("regionSelect.jqvmap",[a]),this.selectedColor&&b&&(b.currentFillColor=this.selectedColor,b.setFill(this.selectedColor)))},JQVMap.prototype.selectIndex=function(a){a=a.toLowerCase();for(var b=0;b<this.selectedRegions.length;b++)if(a===this.selectedRegions[b])return b;return-1},JQVMap.prototype.setBackgroundColor=function(a){this.container.css("background-color",a)},JQVMap.prototype.setColors=function(a,b){if("string"==typeof a)this.countries[a].setFill(b),this.countries[a].setAttribute("original",b);else{var c=a;for(var d in c)this.countries[d]&&(this.countries[d].setFill(c[d]),this.countries[d].setAttribute("original",c[d]))}},JQVMap.prototype.setNormalizeFunction=function(a){this.colorScale.setNormalizeFunction(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setScale=function(a){this.scale=a,this.applyTransform()},JQVMap.prototype.setScaleColors=function(a){this.colorScale.setColors(a),this.values&&this.setValues(this.values)},JQVMap.prototype.setValues=function(a){var b,c=0,d=Number.MAX_VALUE;for(var e in a)e=e.toLowerCase(),b=parseFloat(a[e]),isNaN(b)||(b>c&&(c=a[e]),d>b&&(d=b));d===c&&c++,this.colorScale.setMin(d),this.colorScale.setMax(c);var f={};for(e in a)e=e.toLowerCase(),b=parseFloat(a[e]),f[e]=isNaN(b)?this.color:this.colorScale.getColor(b);this.setColors(f),this.values=a},JQVMap.prototype.unhighlight=function(a,b){a=a.toLowerCase(),b=b||jQuery("#"+this.getCountryId(a))[0],b.setOpacity(1),b.currentFillColor&&b.setFill(b.currentFillColor)},JQVMap.prototype.zoomIn=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep<a.zoomMaxStep){a.transX-=(a.width/a.scale-a.width/(a.scale*a.zoomStep))/2,a.transY-=(a.height/a.scale-a.height/(a.scale*a.zoomStep))/2,a.setScale(a.scale*a.zoomStep),a.zoomCurStep++;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)-b),a.container.trigger("zoomIn")}},JQVMap.prototype.zoomOut=function(){var a=this,b=(jQuery("#zoom").innerHeight()-12-30-6-7-6)/(this.zoomMaxStep-this.zoomCurStep);if(a.zoomCurStep>1){a.transX+=(a.width/(a.scale/a.zoomStep)-a.width/a.scale)/2,a.transY+=(a.height/(a.scale/a.zoomStep)-a.height/a.scale)/2,a.setScale(a.scale/a.zoomStep),a.zoomCurStep--;var c=jQuery("#zoomSlider");c.css("top",parseInt(c.css("top"),10)+b),a.container.trigger("zoomOut")}},VectorCanvas.prototype.applyTransformParams=function(a,b,c){"svg"===this.mode?this.rootGroup.setAttribute("transform","scale("+a+") translate("+b+", "+c+")"):(this.rootGroup.coordorigin=this.width-b+","+(this.height-c),this.rootGroup.coordsize=this.width/a+","+this.height/a)},VectorCanvas.prototype.createGroup=function(a){var b;return"svg"===this.mode?b=this.createSvgNode("g"):(b=this.createVmlNode("group"),b.style.width=this.width+"px",b.style.height=this.height+"px",b.style.left="0px",b.style.top="0px",b.coordorigin="0 0",b.coordsize=this.width+" "+this.height),a&&(this.rootGroup=b),b},VectorCanvas.prototype.createPath=function(a){var b;if("svg"===this.mode)b=this.createSvgNode("path"),b.setAttribute("d",a.path),null!==this.params.borderColor&&b.setAttribute("stroke",this.params.borderColor),this.params.borderWidth>0&&(b.setAttribute("stroke-width",this.params.borderWidth),b.setAttribute("stroke-linecap","round"),b.setAttribute("stroke-linejoin","round")),this.params.borderOpacity>0&&b.setAttribute("stroke-opacity",this.params.borderOpacity),b.setFill=function(a){this.setAttribute("fill",a),null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getAttribute("fill")},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.setAttribute("fill-opacity",a)};else{b=this.createVmlNode("shape"),b.coordorigin="0 0",b.coordsize=this.width+" "+this.height,b.style.width=this.width+"px",b.style.height=this.height+"px",b.fillcolor=JQVMap.defaultFillColor,b.stroked=!1,b.path=VectorCanvas.pathSvgToVml(a.path);var c=this.createVmlNode("skew");c.on=!0,c.matrix="0.01,0,0,0.01,0,0",c.offset="0,0",b.appendChild(c);var d=this.createVmlNode("fill");b.appendChild(d),b.setFill=function(a){this.getElementsByTagName("fill")[0].color=a,null===this.getAttribute("original")&&this.setAttribute("original",a)},b.getFill=function(){return this.getElementsByTagName("fill")[0].color},b.getOriginalFill=function(){return this.getAttribute("original")},b.setOpacity=function(a){this.getElementsByTagName("fill")[0].opacity=parseInt(100*a,10)+"%"}}return b},VectorCanvas.prototype.pathSvgToVml=function(a){var b,c,d="",e=0,f=0;return a.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g,function(a,g,h){h=h.replace(/(\d)-/g,"$1,-").replace(/\s+/g,",").split(","),h[0]||h.shift();for(var i=0,j=h.length;j>i;i++)h[i]=Math.round(100*h[i]);switch(g){case"m":e+=h[0],f+=h[1],d="t"+h.join(",");break;case"M":e=h[0],f=h[1],d="m"+h.join(",");break;case"l":e+=h[0],f+=h[1],d="r"+h.join(",");break;case"L":e=h[0],f=h[1],d="l"+h.join(",");break;case"h":e+=h[0],d="r"+h[0]+",0";break;case"H":e=h[0],d="l"+e+","+f;break;case"v":f+=h[0],d="r0,"+h[0];break;case"V":f=h[0],d="l"+e+","+f;break;case"c":b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"C":b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",");break;case"s":h.unshift(f-c),h.unshift(e-b),b=e+h[h.length-4],c=f+h[h.length-3],e+=h[h.length-2],f+=h[h.length-1],d="v"+h.join(",");break;case"S":h.unshift(f+f-c),h.unshift(e+e-b),b=h[h.length-4],c=h[h.length-3],e=h[h.length-2],f=h[h.length-1],d="c"+h.join(",")}return d}).replace(/z/g,"")},VectorCanvas.prototype.setSize=function(a,b){if("svg"===this.mode)this.canvas.setAttribute("width",a),this.canvas.setAttribute("height",b);else if(this.canvas.style.width=a+"px",this.canvas.style.height=b+"px",this.canvas.coordsize=a+" "+b,this.canvas.coordorigin="0 0",this.rootGroup){for(var c=this.rootGroup.getElementsByTagName("shape"),d=0,e=c.length;e>d;d++)c[d].coordsize=a+" "+b,c[d].style.width=a+"px",c[d].style.height=b+"px";this.rootGroup.coordsize=a+" "+b,this.rootGroup.style.width=a+"px",this.rootGroup.style.height=b+"px"}this.width=a,this.height=b}; \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/jqvmap/jqvmap.css b/wp-content/plugins/wp-statistics/assets/jqvmap/jqvmap.css new file mode 100644 index 0000000..7e122d2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/jqvmap/jqvmap.css @@ -0,0 +1,50 @@ +.jqvmap-label +{ + position: absolute; + display: none; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #292929; + color: white; + font-family: sans-serif, Verdana; + font-size: smaller; + padding: 3px; + pointer-events:none; +} +.jqvmap-pin { + pointer-events:none; +} +.jqvmap-zoomin, .jqvmap-zoomout +{ + position: absolute; + left: 10px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #000000; + padding: 3px; + color: white; + width: 10px; + height: 10px; + cursor: pointer; + line-height: 10px; + text-align: center; +} +.jqvmap-zoomin +{ + top: 10px; +} +.jqvmap-zoomout +{ + top: 30px; +} +.jqvmap-region +{ + cursor: pointer; +} +.jqvmap-ajax_response +{ + width: 100%; + height: 500px; +} diff --git a/wp-content/plugins/wp-statistics/assets/jqvmap/jqvmap.min.css b/wp-content/plugins/wp-statistics/assets/jqvmap/jqvmap.min.css new file mode 100644 index 0000000..a3a93a4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/jqvmap/jqvmap.min.css @@ -0,0 +1 @@ +.jqvmap-label,.jqvmap-pin{pointer-events:none}.jqvmap-label{position:absolute;display:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;color:#fff;font-family:sans-serif,Verdana;font-size:smaller;padding:3px}.jqvmap-zoomin,.jqvmap-zoomout{position:absolute;left:10px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#000;padding:3px;color:#fff;width:10px;height:10px;cursor:pointer;line-height:10px;text-align:center}.jqvmap-zoomin{top:10px}.jqvmap-zoomout{top:30px}.jqvmap-region{cursor:pointer}.jqvmap-ajax_response{width:100%;height:500px} diff --git a/wp-content/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.js b/wp-content/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.js new file mode 100644 index 0000000..6fc1849 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.js @@ -0,0 +1,2 @@ +/** Add World Map Data Points */ +jQuery.fn.vectorMap('addMap', 'world_en', {"width":950,"height":550,"paths":{"id":{"path":"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z","name":"Indonesia"},"pg":{"path":"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z","name":"Papua New Guinea"},"mx":{"path":"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z","name":"Mexico"},"ee":{"path":"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z","name":"Estonia"},"dz":{"path":"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z","name":"Algeria"},"ma":{"path":"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z","name":"Morocco"},"mr":{"path":"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z","name":"Mauritania"},"sn":{"path":"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z","name":"Senegal"},"gm":{"path":"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z","name":"Gambia"},"gw":{"path":"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z","name":"Guinea-Bissau"},"gn":{"path":"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z","name":"Guinea"},"sl":{"path":"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z","name":"Sierra Leone"},"lr":{"path":"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z","name":"Liberia"},"ci":{"path":"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z","name":"Cote d'Ivoire"},"ml":{"path":"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z","name":"Mali"},"bf":{"path":"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z","name":"Burkina Faso"},"ne":{"path":"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z","name":"Niger"},"gh":{"path":"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z","name":"Ghana"},"tg":{"path":"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z","name":"Togo"},"bj":{"path":"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z","name":"Benin"},"ng":{"path":"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z","name":"Nigeria"},"tn":{"path":"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z","name":"Tunisia"},"ly":{"path":"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z","name":"Libya"},"eg":{"path":"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z","name":"Egypt"},"td":{"path":"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z","name":"Chad"},"sd":{"path":"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z","name":"Sudan"},"cm":{"path":"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z","name":"Cameroon"},"er":{"path":"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z","name":"Eritrea"},"dj":{"path":"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z","name":"Djibouti"},"et":{"path":"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z","name":"Ethiopia"},"so":{"path":"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z","name":"Somalia"},"ye":{"path":"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z","name":"Yemen"},"cf":{"path":"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z","name":"Central African Republic"},"st":{"path":"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z","name":"Sao Tome and Principe"},"gq":{"path":"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z","name":"Equatorial Guinea"},"ga":{"path":"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z","name":"Gabon"},"cg":{"path":"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z","name":"Congo"},"ao":{"path":"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z","name":"Angola"},"cd":{"path":"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z","name":"Congo"},"rw":{"path":"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z","name":"Rwanda"},"bi":{"path":"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z","name":"Burundi"},"ug":{"path":"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z","name":"Uganda"},"ke":{"path":"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z","name":"Kenya"},"tz":{"path":"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z","name":"Tanzania"},"zm":{"path":"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z","name":"Zambia"},"mw":{"path":"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z","name":"Malawi"},"mz":{"path":"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z","name":"Mozambique"},"zw":{"path":"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z","name":"Zimbabwe"},"na":{"path":"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z","name":"Namibia"},"bw":{"path":"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z","name":"Botswana"},"sz":{"path":"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z","name":"Swaziland"},"ls":{"path":"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z","name":"Lesotho"},"za":{"path":"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z","name":"South Africa"},"gl":{"path":"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z","name":"Greenland"},"au":{"path":"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z","name":"Australia"},"nz":{"path":"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z","name":"New Zealand"},"nc":{"path":"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z","name":"New Caledonia"},"my":{"path":"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z","name":"Malaysia"},"bn":{"path":"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z","name":"Brunei Darussalam"},"tl":{"path":"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z","name":"Timor-Leste"},"sb":{"path":"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z","name":"Solomon Islands"},"vu":{"path":"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z","name":"Vanuatu"},"fj":{"path":"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z","name":"Fiji"},"ph":{"path":"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z","name":"Philippines"},"cn":{"path":"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z","name":"China"},"tw":{"path":"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z","name":"Taiwan"},"jp":{"path":"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z","name":"Japan"},"ru":{"path":"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z","name":"Russian Federation"},"us":{"path":"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z","name":"United States of America"},"mu":{"path":"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z","name":"Mauritius"},"re":{"path":"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z","name":"Reunion"},"mg":{"path":"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z","name":"Madagascar"},"km":{"path":"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z","name":"Comoros"},"sc":{"path":"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z","name":"Seychelles"},"mv":{"path":"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z","name":"Maldives"},"pt":{"path":"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z","name":"Portugal"},"es":{"path":"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z","name":"Spain"},"cv":{"path":"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z","name":"Cape Verde"},"pf":{"path":"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z","name":"French Polynesia"},"kn":{"path":"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z","name":"Saint Kitts and Nevis"},"ag":{"path":"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z","name":"Antigua and Barbuda"},"dm":{"path":"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z","name":"Dominica"},"lc":{"path":"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z","name":"Saint Lucia"},"bb":{"path":"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z","name":"Barbados"},"gd":{"path":"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z","name":"Grenada"},"tt":{"path":"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z","name":"Trinidad and Tobago"},"do":{"path":"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z","name":"Dominican Republic"},"ht":{"path":"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z","name":"Haiti"},"fk":{"path":"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z","name":"Falkland Islands"},"is":{"path":"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z","name":"Iceland"},"no":{"path":"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z","name":"Norway"},"lk":{"path":"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z","name":"Sri Lanka"},"cu":{"path":"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z","name":"Cuba"},"bs":{"path":"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z","name":"Bahamas"},"jm":{"path":"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z","name":"Jamaica"},"ec":{"path":"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z","name":"Ecuador"},"ca":{"path":"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z","name":"Canada"},"gt":{"path":"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z","name":"Guatemala"},"hn":{"path":"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z","name":"Honduras"},"sv":{"path":"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z","name":"El Salvador"},"ni":{"path":"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z","name":"Nicaragua"},"cr":{"path":"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z","name":"Costa Rica"},"pa":{"path":"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z","name":"Panama"},"co":{"path":"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z","name":"Colombia"},"ve":{"path":"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z","name":"Venezuela"},"gy":{"path":"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z","name":"Guyana"},"sr":{"path":"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z","name":"Suriname"},"gf":{"path":"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z","name":"French Guiana"},"pe":{"path":"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z","name":"Peru"},"bo":{"path":"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z","name":"Bolivia"},"py":{"path":"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z","name":"Paraguay"},"uy":{"path":"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z","name":"Uruguay"},"ar":{"path":"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z","name":"Argentina"},"cl":{"path":"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z","name":"Chile"},"br":{"path":"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z","name":"Brazil"},"bz":{"path":"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z","name":"Belize"},"mn":{"path":"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z","name":"Mongolia"},"kp":{"path":"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z","name":"North Korea"},"kr":{"path":"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z","name":"South Korea"},"kz":{"path":"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z","name":"Kazakhstan"},"tm":{"path":"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z","name":"Turkmenistan"},"uz":{"path":"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z","name":"Uzbekistan"},"tj":{"path":"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z","name":"Tajikistan"},"kg":{"path":"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z","name":"Kyrgyz Republic"},"af":{"path":"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z","name":"Afghanistan"},"pk":{"path":"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z","name":"Pakistan"},"in":{"path":"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z","name":"India"},"np":{"path":"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z","name":"Nepal"},"bt":{"path":"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z","name":"Bhutan"},"bd":{"path":"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z","name":"Bangladesh"},"mm":{"path":"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z","name":"Myanmar"},"th":{"path":"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z","name":"Thailand"},"kh":{"path":"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z","name":"Cambodia"},"la":{"path":"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z","name":"Lao People's Democratic Republic"},"vn":{"path":"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z","name":"Vietnam"},"ge":{"path":"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z","name":"Georgia"},"am":{"path":"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z","name":"Armenia"},"az":{"path":"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z","name":"Azerbaijan"},"ir":{"path":"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z","name":"Iran"},"tr":{"path":"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z","name":"Turkey"},"om":{"path":"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z","name":"Oman"},"ae":{"path":"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z","name":"United Arab Emirates"},"qa":{"path":"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z","name":"Qatar"},"kw":{"path":"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z","name":"Kuwait"},"sa":{"path":"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z","name":"Saudi Arabia"},"sy":{"path":"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z","name":"Syrian Arab Republic"},"iq":{"path":"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z","name":"Iraq"},"jo":{"path":"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z","name":"Jordan"},"lb":{"path":"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z","name":"Lebanon"},"il":{"path":"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z","name":"Israel"},"cy":{"path":"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z","name":"Cyprus"},"gb":{"path":"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z","name":"United Kingdom"},"ie":{"path":"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z","name":"Ireland"},"se":{"path":"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z","name":"Sweden"},"fi":{"path":"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z","name":"Finland"},"lv":{"path":"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z","name":"Latvia"},"lt":{"path":"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z","name":"Lithuania"},"by":{"path":"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z","name":"Belarus"},"pl":{"path":"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z","name":"Poland"},"it":{"path":"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z","name":"Italy"},"fr":{"path":"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z","name":"France"},"nl":{"path":"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z","name":"Netherlands"},"be":{"path":"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z","name":"Belgium"},"de":{"path":"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z","name":"Germany"},"dk":{"path":"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z","name":"Denmark"},"ch":{"path":"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z","name":"Switzerland"},"cz":{"path":"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z","name":"Czech Republic"},"sk":{"path":"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z","name":"Slovakia"},"at":{"path":"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z","name":"Austria"},"hu":{"path":"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z","name":"Hungary"},"si":{"path":"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z","name":"Slovenia"},"hr":{"path":"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z","name":"Croatia"},"ba":{"path":"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z","name":"Bosnia and Herzegovina"},"mt":{"path":"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z","name":"Malta"},"ua":{"path":"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z","name":"Ukraine"},"md":{"path":"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z","name":"Moldova"},"ro":{"path":"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z","name":"Romania"},"rs":{"path":"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z","name":"Serbia"},"bg":{"path":"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z","name":"Bulgaria"},"al":{"path":"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z","name":"Albania"},"mk":{"path":"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z","name":"Macedonia"},"gr":{"path":"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z","name":"Greece"}}}); diff --git a/wp-content/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.min.js b/wp-content/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.min.js new file mode 100644 index 0000000..643296c --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/jqvmap/maps/jquery.vmap.world.min.js @@ -0,0 +1,2 @@ +jQuery.fn.vectorMap("addMap","world_en",{width:950,height:550,paths:{id:{path:"M781.68,324.4l-2.31,8.68l-12.53,4.23l-3.75-4.4l-1.82,0.5l3.4,13.12l5.09,0.57l6.79,2.57v2.57l3.11-0.57l4.53-6.27v-5.13l2.55-5.13l2.83,0.57l-3.4-7.13l-0.52-4.59L781.68,324.4L781.68,324.4M722.48,317.57l-0.28,2.28l6.79,11.41h1.98l14.15,23.67l5.66,0.57l2.83-8.27l-4.53-2.85l-0.85-4.56L722.48,317.57L722.48,317.57M789.53,349.11l2.26,2.77l-1.47,4.16v0.79h3.34l1.18-10.4l1.08,0.3l1.96,9.5l1.87,0.5l1.77-4.06l-1.77-6.14l-1.47-2.67l4.62-3.37l-1.08-1.49l-4.42,2.87h-1.18l-2.16-3.17l0.69-1.39l3.64-1.78l5.5,1.68l1.67-0.1l4.13-3.86l-1.67-1.68l-3.83,2.97h-2.46l-3.73-1.78l-2.65,0.1l-2.95,4.75l-1.87,8.22L789.53,349.11L789.53,349.11M814.19,330.5l-1.87,4.55l2.95,3.86h0.98l1.28-2.57l0.69-0.89l-1.28-1.39l-1.87-0.69L814.19,330.5L814.19,330.5M819.99,345.45l-4.03,0.89l-1.18,1.29l0.98,1.68l2.65-0.99l1.67-0.99l2.46,1.98l1.08-0.89l-1.96-2.38L819.99,345.45L819.99,345.45M753.17,358.32l-2.75,1.88l0.59,1.58l8.75,1.98l4.42,0.79l1.87,1.98l5.01,0.4l2.36,1.98l2.16-0.5l1.97-1.78l-3.64-1.68l-3.14-2.67l-8.16-1.98L753.17,358.32L753.17,358.32M781.77,366.93l-2.16,1.19l1.28,1.39l3.14-1.19L781.77,366.93L781.77,366.93M785.5,366.04l0.39,1.88l2.26,0.59l0.88-1.09l-0.98-1.49L785.5,366.04L785.5,366.04M790.91,370.99l-2.75,0.4l2.46,2.08h1.96L790.91,370.99L790.91,370.99M791.69,367.72l-0.59,1.19l4.42,0.69l3.44-1.98l-1.96-0.59l-3.14,0.89l-1.18-0.99L791.69,367.72L791.69,367.72M831.93,339.34l-4.17,0.47l-2.68,1.96l1.11,2.24l4.54,0.84v0.84l-2.87,2.33l1.39,4.85l1.39,0.09l1.2-4.76h2.22l0.93,4.66l10.83,8.96l0.28,7l3.7,4.01l1.67-0.09l0.37-24.72l-6.29-4.38l-5.93,4.01l-2.13,1.31l-3.52-2.24l-0.09-7.09L831.93,339.34L831.93,339.34z",name:"Indonesia"},pg:{path:"M852.76,348.29l-0.37,24.44l3.52-0.19l4.63-5.41l3.89,0.19l2.5,2.24l0.83,6.9l7.96,4.2l2.04-0.75v-2.52l-6.39-5.32l-3.15-7.28l2.5-1.21l-1.85-4.01l-3.7-0.09l-0.93-4.29l-9.81-6.62L852.76,348.29L852.76,348.29M880.48,349l-0.88,1.25l4.81,4.26l0.66,2.5l1.31-0.15l0.15-2.57l-1.46-1.32L880.48,349L880.48,349M882.89,355.03l-0.95,0.22l-0.58,2.57l-1.82,1.18l-5.47,0.96l0.22,2.06l5.76-0.29l3.65-2.28l-0.22-3.97L882.89,355.03L882.89,355.03M889.38,359.51l1.24,3.45l2.19,2.13l0.66-0.59l-0.22-2.28l-2.48-3.01L889.38,359.51L889.38,359.51z",name:"Papua New Guinea"},mx:{path:"M137.49,225.43l4.83,15.21l-2.25,1.26l0.25,3.02l4.25,3.27v6.05l5.25,5.04l-2.25-14.86l-3-9.83l0.75-6.8l2.5,0.25l1,2.27l-1,5.79l13,25.44v9.07l10.5,12.34l11.5,5.29l4.75-2.77l6.75,5.54l4-4.03l-1.75-4.54l5.75-1.76l1.75,1.01l1.75-1.76h2.75l5-8.82l-2.5-2.27l-9.75,2.27l-2.25,6.55l-5.75,1.01l-6.75-2.77l-3-9.57l2.27-12.07l-4.64-2.89l-2.21-11.59l-1.85-0.79l-3.38,3.43l-3.88-2.07l-1.52-7.73l-15.37-1.61l-7.94-5.97L137.49,225.43L137.49,225.43z",name:"Mexico"},ee:{path:"M517.77,143.66l-5.6-0.2l-3.55,2.17l-0.05,1.61l2.3,2.17l7.15,1.21L517.77,143.66L517.77,143.66M506.76,147.64l-1.55-0.05l-0.9,0.91l0.65,0.96l1.55,0.1l0.8-1.16L506.76,147.64L506.76,147.64z",name:"Estonia"},dz:{path:"M473.88,227.49l-4.08-1.37l-16.98,3.19l-3.7,2.81l2.26,11.67l-6.75,0.27l-4.06,6.53l-9.67,2.32l0.03,4.75l31.85,24.35l5.43,0.46l18.11-14.15l-1.81-2.28l-3.4-0.46l-2.04-3.42v-14.15l-1.36-1.37l0.23-3.65l-3.62-3.65l-0.45-3.88l1.58-1.14l-0.68-4.11L473.88,227.49L473.88,227.49z",name:"Algeria"},ma:{path:"M448.29,232.28h-11.55l-2.26,5.02l-5.21,2.51l-4.3,11.64l-8.38,5.02l-11.77,19.39l11.55-0.23l0.45-5.7h2.94v-7.76h10.19l0.23-10.04l9.74-2.28l4.08-6.62l6.34-0.23L448.29,232.28L448.29,232.28z",name:"Morocco"},mr:{path:"M404.9,276.66l2.18,2.85l-0.45,12.32l3.17-2.28l2.26-0.46l3.17,1.14l3.62,5.02l3.4-2.28l16.53-0.23l-4.08-27.61l4.38-0.02l-8.16-6.25l0.01,4.06l-10.33,0.01l-0.05,7.75l-2.97-0.01l-0.38,5.72L404.9,276.66L404.9,276.66z",name:"Mauritania"},sn:{path:"M412.03,289.84L410.12,290.31L406.18,293.18L405.28,294.78L405,296.37L406.43,297.40L411.28,297.34L414.40,296.5L414.75,298.03L414.46,300.06L414.53,300.09L406.78,300.21L408.03,303.21L408.71,301.37L418,302.15L418.06,302.21L419.03,302.25L422,302.37L422.12,300.62L418.53,296.31L414.53,290.87L412.03,289.84z",name:"Senegal"},gm:{path:"M406.89,298.34l-0.13,1.11l6.92-0.1l0.35-1.03l-0.15-1.04l-1.99,0.81L406.89,298.34L406.89,298.34z",name:"Gambia"},gw:{path:"M408.6,304.53l1.4,2.77l3.93-3.38l0.04-1.04l-4.63-0.67L408.6,304.53L408.6,304.53z",name:"Guinea-Bissau"},gn:{path:"M410.42,307.94l3.04,4.68l3.96-3.44l4.06-0.18l3.38,4.49l2.87,1.89l1.08-2.1l0.96-0.54l-0.07-4.62l-1.91-5.48l-5.86,0.65l-7.25-0.58l-0.04,1.86L410.42,307.94L410.42,307.94z",name:"Guinea"},sl:{path:"M413.93,313.13l5.65,5.46l4.03-4.89l-2.52-3.95l-3.47,0.35L413.93,313.13L413.93,313.13z",name:"Sierra Leone"},lr:{path:"M420.17,319.19l10.98,7.34l-0.26-5.56l-3.32-3.91l-3.24-2.87L420.17,319.19L420.17,319.19z",name:"Liberia"},ci:{path:"M432.07,326.75l4.28-3.03l5.32-0.93l5.43,1.17l-2.77-4.19l-0.81-2.56l0.81-7.57l-4.85,0.23l-2.2-2.1l-4.62,0.12l-2.2,0.35l0.23,5.12l-1.16,0.47l-1.39,2.56l3.58,4.19L432.07,326.75L432.07,326.75z",name:"Cote d'Ivoire"},ml:{path:"M419.46,295.84l3.08-2.11l17.12-0.1l-3.96-27.54l4.52-0.13l21.87,16.69l2.94,0.42l-1.11,9.28l-13.75,1.25l-10.61,7.92l-1.93,5.42l-7.37,0.31l-1.88-5.41l-5.65,0.4l0.22-1.77L419.46,295.84L419.46,295.84z",name:"Mali"},bf:{path:"M450.59,294.28l3.64-0.29l5.97,8.44l-5.54,4.18l-4.01-1.03l-5.39,0.07l-0.87,3.16l-4.52,0.22l-1.24-1.69l1.6-5.14L450.59,294.28L450.59,294.28z",name:"Burkina Faso"},ne:{path:"M460.89,302l2.55-0.06l2.3-3.45l3.86-0.69l4.11,2.51l8.77,0.25l6.78-2.76l2.55-2.19l0.19-2.88l4.73-4.77l1.25-10.53l-3.11-6.52l-7.96-1.94l-18.42,14.36l-2.61-0.25l-1.12,9.97l-9.4,0.94L460.89,302L460.89,302z",name:"Niger"},gh:{path:"M444.34,317.05l1.12,2.63l2.92,4.58l1.62-0.06l4.42-2.51l-0.31-14.29l-3.42-1l-4.79,0.13L444.34,317.05L444.34,317.05z",name:"Ghana"},tg:{path:"M455.22,321.25l2.68-1.57l-0.06-10.35l-1.74-2.82l-1.12,0.94L455.22,321.25L455.22,321.25z",name:"Togo"},bj:{path:"M458.71,319.49h2.12l0.12-6.02l2.68-3.89l-0.12-6.77l-2.43-0.06l-4.17,3.26l1.74,3.32L458.71,319.49L458.71,319.49z",name:"Benin"},ng:{path:"M461.57,319.37l3.92,0.19l4.73,5.27l2.3,0.63l1.8-0.88l2.74-0.38l0.93-3.82l3.73-2.45l4.04-0.19l7.4-13.61l-0.12-3.07l-3.42-2.63l-6.84,3.01l-9.15-0.13l-4.36-2.76l-3.11,0.69l-1.62,2.82l-0.12,7.96l-2.61,3.7L461.57,319.37L461.57,319.37z",name:"Nigeria"},tn:{path:"M474.91,227.33l5.53-2.23l1.82,1.18l0.07,1.44l-0.85,1.11l0.13,1.97l0.85,0.46v3.54l-0.98,1.64l0.13,1.05l3.71,1.31l-2.99,4.65l-1.17-0.07l-0.2,3.74l-1.3,0.2l-1.11-0.98l0.26-3.8l-3.64-3.54l-0.46-3.08l1.76-1.38L474.91,227.33L474.91,227.33z",name:"Tunisia"},ly:{path:"M480.05,248.03l1.56-0.26l0.46-3.6h0.78l3.19-5.24l7.87,2.29l2.15,3.34l7.74,3.54l4.03-1.7l-0.39-1.7l-1.76-1.7l0.2-1.18l2.86-2.42h5.66l2.15,2.88l4.55,0.66l0.59,36.89l-3.38-0.13l-20.42-10.62l-2.21,1.25l-8.39-2.1l-2.28-3.01l-3.32-0.46l-1.69-3.01L480.05,248.03L480.05,248.03z",name:"Libya"},eg:{path:"M521.93,243.06l2.67,0.07l5.2,1.44l2.47,0.07l3.06-2.56h1.43l2.6,1.44h3.29l0.59-0.04l2.08,5.98l0.59,1.93l0.55,2.89l-0.98,0.72l-1.69-0.85l-1.95-6.36l-1.76-0.13l-0.13,2.16l1.17,3.74l9.37,11.6l0.2,4.98l-2.73,3.15L522.32,273L521.93,243.06L521.93,243.06z",name:"Egypt"},td:{path:"M492.79,296l0.13-2.95l4.74-4.61l1.27-11.32l-3.16-6.04l2.21-1.13l21.4,11.15l-0.13,10.94l-3.77,3.21v5.64l2.47,4.78h-4.36l-7.22,7.14l-0.19,2.16l-5.33-0.07l-0.07,0.98l-3.04-0.4l-2.08-3.93l-1.56-0.77l0.2-1.2l1.96-1.5v-7.02l-2.71-0.42l-3.27-2.43L492.79,296L492.79,296L492.79,296z",name:"Chad"},sd:{path:"M520.15,292.43l0.18-11.83l2.46,0.07l-0.28-6.57l25.8,0.23l3.69-3.72l7.96,12.73l-4.36,5.14v7.85l-6.86,14.75l-2.36,1.04l0.75,4.11h2.94l3.99,5.79l-3.2,0.41l-0.82,1.49l-0.08,2.15l-9.6-0.17l-0.98-1.49l-6.71-0.38l-12.32-12.68l1.23-0.74l0.33-2.98l-2.95-1.74l-2.69-5.31l0.15-4.94L520.15,292.43L520.15,292.43z",name:"Sudan"},cm:{path:"M477.82,324.28l3.22,2.96l-0.23,4.58l17.66-0.41l1.44-1.62l-5.06-5.45l-0.75-1.97l3.22-6.03l-2.19-4l-1.84-0.99v-2.03l2.13-1.39l0.12-6.32l-1.69-0.19l-0.03,3.32l-7.42,13.85l-4.54,0.23l-3.11,2.14L477.82,324.28L477.82,324.28z",name:"Cameroon"},er:{path:"M556.71,294.7l-0.25-5.89l3.96-4.62l1.07,0.82l1.95,6.52l9.36,6.97l-1.7,2.09l-6.85-5.89H556.71L556.71,294.7z",name:"Eritrea"},dj:{path:"M571.48,301.54l-0.57,3.36l3.96-0.06l0.06-4.94l-1.45-0.89L571.48,301.54L571.48,301.54z",name:"Djibouti"},et:{path:"M549.49,311.76l7.28-16.2l7.23,0.04l6.41,5.57l-0.45,4.59h4.97l0.51,2.76l8.04,4.81l4.96,0.25l-9.43,10.13l-12.95,3.99h-3.21l-5.72-4.88l-2.26-0.95l-4.38-6.45l-2.89,0.04l-0.34-2.96L549.49,311.76L549.49,311.76z",name:"Ethiopia"},so:{path:"M575.74,305.04l4.08,2.78l1.21-0.06l10.13-3.48l1.15,3.71l-0.81,3.13l-2.19,1.74l-5.47-0.35l-7.83-4.81L575.74,305.04L575.74,305.04M591.97,304.05l4.37-1.68l1.55,0.93l-0.17,3.88l-4.03,11.48l-21.81,23.36l-2.53-1.74l-0.17-9.86l3.28-3.77l6.96-2.15l10.21-10.78l2.67-2.38l0.75-3.48L591.97,304.05L591.97,304.05z",name:"Somalia"},ye:{path:"M599.62,299.65l2.13,2.38l2.88-1.74l1.04-0.35l-1.32-1.28l-2.53,0.75L599.62,299.65L599.62,299.65M571.99,289.23l1.44,4.28v4.18l3.46,3.14l24.38-9.93l0.23-2.73l-3.91-7.02l-9.81,3.13l-5.63,5.54l-6.53-3.86L571.99,289.23L571.99,289.23z",name:"Yemen"},cf:{path:"M495.66,324.05l4.66,5.04l1.84-2.38l2.93,0.12l0.63-2.32l2.88-1.8l5.98,4.12l3.45-3.42l13.39,0.59L519,311.18l1.67-1.04l0.23-2.26l-2.82-1.33h-4.14l-6.67,6.61l-0.23,2.72l-5.29-0.17l-0.17,1.16l-3.45-0.35l-3.11,5.91L495.66,324.05L495.66,324.05z",name:"Central African Republic"},st:{path:"M470.74,337.15l1.15-0.58l0.86,0.7l-0.86,1.33l-1.04-0.41L470.74,337.15L470.74,337.15M473.05,333.5l1.73-0.29l0.58,1.1l-0.86,0.93l-0.86-0.12L473.05,333.5L473.05,333.5z",name:"Sao Tome and Principe"},gq:{path:"M476.84,327.41l-0.46,1.97l1.38,0.75l1.32-0.99l-0.46-2.03L476.84,327.41L476.84,327.41M480.99,332.69l-0.06,1.39l4.54,0.23l-0.06-1.57L480.99,332.69L480.99,332.69z",name:"Equatorial Guinea"},ga:{path:"M486.39,332.63l-0.12,2.49l-5.64-0.12l-3.45,6.67l8.11,8.87l2.01-1.68l-0.06-1.74l-1.38-0.64v-1.22l3.11-1.97l2.76,2.09l3.05,0.06l-0.06-10.49l-4.83-0.23l-0.06-2.2L486.39,332.63L486.39,332.63z",name:"Gabon"},cg:{path:"M491,332.52l-0.06,1.45l4.78,0.12l0.17,12.41l-4.37-0.12l-2.53-1.97l-1.96,1.1l-0.09,0.55l1.01,0.49l0.29,2.55l-2.7,2.32l0.58,1.22l2.99-2.32h1.44l0.46,1.39l1.9,0.81l6.1-5.16l-0.12-3.77l1.27-3.07l3.91-2.9l1.05-9.81l-2.78,0.01l-3.22,4.41L491,332.52L491,332.52z",name:"Congo"},ao:{path:"M486.55,353.23l1.74,2.26l2.25-2.13l-0.66-2.21l-0.56-0.04L486.55,353.23L486.55,353.23M488.62,356.71l3.41,12.73l-0.08,4.02l-4.99,5.36l-0.75,8.71l19.2,0.17l6.24,2.26l5.15-0.67l-3-3.76l0.01-10.74l5.9-0.25v-4.19l-4.79-0.2l-0.96-9.92l-2.02,0.03l-1.09-0.98l-1.19,0.06l-1.58,3.06H502l-1.41-1.42l0.42-2.01l-1.66-2.43L488.62,356.71L488.62,356.71z",name:"Angola"},cd:{path:"M489.38,355.71l10.31-0.18l2.09,2.97l-0.08,2.19l0.77,0.7h5.12l1.47-2.89h2.09l0.85,0.86l2.87-0.08l0.85,10.08l4.96,0.16v0.78l13.33,6.01l0.62,1.17h2.79l-0.31-4.22l-5.04-2.42l0.31-3.2l2.17-5.08l4.96-0.16l-4.26-14.14l0.08-6.01l6.74-10.54l0.08-1.48l-1.01-0.55l0.04-2.86l-1.23-0.11l-1.24-1.58l-20.35-0.92l-3.73,3.63l-6.11-4.02l-2.15,1.32l-1.56,13.13l-3.86,2.98l-1.16,2.64l0.21,3.91l-6.96,5.69l-1.85-0.84l0.25,1.09L489.38,355.71L489.38,355.71z",name:"Congo"},rw:{path:"M537.82,339.9l2.81,2.59l-0.12,2.77l-4.36,0.09v-3.06L537.82,339.9L537.82,339.9z",name:"Rwanda"},bi:{path:"M536.21,346.21l4.27-0.09l-1.11,3.74l-1.08,0.94h-1.32l-0.94-2.53L536.21,346.21L536.21,346.21z",name:"Burundi"},ug:{path:"M538.3,339.09l3.03,2.84l1.9-1.21l5.14-0.84l0.88,0.09l0.33-1.95l2.9-6.1l-2.44-5.08l-7.91,0.05l-0.05,2.09l1.06,1.02l-0.16,2.09L538.3,339.09L538.3,339.09z",name:"Uganda"},ke:{path:"M550.83,326.52l2.66,5.19l-3.19,6.69l-0.42,2.03l15.93,9.85l4.94-7.76l-2.5-2.03l-0.05-10.22l3.13-3.42l-4.99,1.66l-3.77,0.05l-5.9-4.98l-1.86-0.8l-3.45,0.32l-0.61,1.02L550.83,326.52L550.83,326.52z",name:"Kenya"},tz:{path:"M550.57,371.42l17.47-2.14l-3.93-7.6l-0.21-7.28l1.27-3.48l-16.62-10.44l-5.21,0.86l-1.81,1.34l-0.16,3.05l-1.17,4.23l-1.22,1.45l-1.75,0.16l3.35,11.61l5.47,2.57l3.77,0.11L550.57,371.42L550.57,371.42z",name:"Tanzania"},zm:{path:"M514.55,384.7l3.17,4.4l4.91,0.3l1.74,0.96l5.14,0.06l4.43-6.21l12.38-5.54l1.08-4.88l-1.44-6.99l-6.46-3.68l-4.31,0.3l-2.15,4.76l0.06,2.17l5.08,2.47l0.3,5.37l-4.37,0.24l-1.08-1.81l-12.14-5.18l-0.36,3.98l-5.74,0.18L514.55,384.7L514.55,384.7z",name:"Zambia"},mw:{path:"M547.16,379.4l3.11,3.25l-0.06,4.16l0.6,1.75l4.13-4.46l-0.48-5.67l-2.21-1.69l-1.97-9.95l-3.41-0.12l1.55,7.17L547.16,379.4L547.16,379.4z",name:"Malawi"},mz:{path:"M541.17,413.28l2.69,2.23l6.34-3.86l1.02-5.73v-9.46l10.17-8.32l1.74,0.06l6.16-5.91l-0.96-12.18L552,372.17l0.48,3.68l2.81,2.17l0.66,6.63l-5.5,5.37l-1.32-3.01l0.24-3.98l-3.17-3.44l-7.78,3.62l7.24,3.68l0.24,10.73l-4.79,7.11L541.17,413.28L541.17,413.28z",name:"Mozambique"},zw:{path:"M524.66,392.3l8.97,10.13l6.88,1.75l4.61-7.23l-0.36-9.58l-7.48-3.86l-2.81,1.27l-4.19,6.39l-5.8-0.06L524.66,392.3L524.66,392.3z",name:"Zimbabwe"},na:{path:"M496.55,421.96l3.35,0.24l1.97,1.99l4.67,0.06l1.14-13.26v-8.68l2.99-0.6l1.14-9.1l7.6-0.24l2.69-2.23l-4.55-0.18l-6.16,0.84l-6.64-2.41h-18.66l0.48,5.3l6.22,9.16l-1.08,4.7l0.06,2.47L496.55,421.96L496.55,421.96z",name:"Namibia"},bw:{path:"M508.51,411.23l2.15,0.66l-0.3,6.15l2.21,0.3l5.08-4.58l6.1,0.66l1.62-4.1l7.72-7.05l-9.27-10.67l-0.12-1.75l-1.02-0.3l-2.81,2.59l-7.3,0.18l-1.02,9.1l-2.87,0.66L508.51,411.23L508.51,411.23z",name:"Botswana"},sz:{path:"M540.87,414l-2.51,0.42l-1.08,2.95l1.92,1.75h2.33l1.97-2.83L540.87,414L540.87,414z",name:"Swaziland"},ls:{path:"M527.41,425.39l3.05-2.35l1.44,0.06l1.74,2.17l-0.18,2.17l-2.93,1.08v0.84l-3.23-0.18l-0.78-2.35L527.41,425.39L527.41,425.39z",name:"Lesotho"},za:{path:"M534.16,403.63l-7.9,7.3l-1.88,4.51l-6.26-0.78l-5.21,4.63l-3.46-0.34l0.28-6.4l-1.23-0.43l-0.86,13.09l-6.14-0.06l-1.85-2.18l-2.71-0.03l2.47,7.09l4.41,4.17l-3.15,3.67l2.04,4.6l4.72,1.8l3.76-3.2l10.77,0.06l0.77-0.96l4.78-0.84l16.17-16.1l-0.06-5.07l-1.73,2.24h-2.59l-3.15-2.64l1.6-3.98l2.75-0.56l-0.25-8.18L534.16,403.63L534.16,403.63z M530.37,422.13l1.51-0.06l2.45,2.66l-0.07,3.08l-2.87,1.45l-0.18,1.02l-4.38,0.05l-1.37-3.3l1.25-2.42L530.37,422.13L530.37,422.13z",name:"South Africa"},gl:{path:"M321.13,50.07l-1.36,2.17l2.45,2.45l-1.09,2.45l3.54,4.62l4.35-1.36l5.71-0.54l6.53,7.07l4.35,11.69l-3.53,7.34l4.89-0.82l2.72,1.63l0.27,3.54l-5.98,0.27l3.26,3.26l4.08,0.82l-8.97,11.96l-1.09,7.34l1.9,5.98l-1.36,3.54l2.45,7.61l4.62,5.17l1.36-0.27l2.99-0.82l0.27,4.35l1.9,2.72l3.53-0.27l2.72-10.06l8.16-10.06l12.24-4.89l7.61-9.52l3.53,1.63h7.34l5.98-5.98l7.34-2.99l0.82-4.62l-4.62-4.08l-4.08-1.36l-2.18-5.71l5.17-2.99l8.16,4.35l2.72-2.99l-4.35-2.45l9.25-12.51l-1.63-5.44l-4.35-0.27l1.63-4.89l5.44-2.45l11.15-9.79l-3.26-3.53l-12.51,1.09l-6.53,6.53l3.81-8.43l-4.35-1.09l-2.45,4.35l-3.53-2.99l-9.79,1.09l2.72-4.35l16.04-0.54l-4.08-5.44l-17.4-3.26l-7.07,1.09l0.27,3.54l-7.34-2.45l0.27-2.45l-5.17,1.09l-1.09,2.72l5.44,1.9l-5.71,4.08l-4.08-4.62l-5.71-1.63l-0.82,4.35h-5.71l-2.18-4.62l-8.97-1.36l-4.89,2.45l-0.27,3.26l-6.25-0.82l-3.81,1.63l0.27,3.81v1.9l-7.07,1.36l-3.26-2.17l-2.18,3.53l3.26,3.54l6.8-0.82l0.54,2.18l-5.17,2.45L321.13,50.07L321.13,50.07M342.89,92.49l1.63,2.45l-0.82,2.99h-1.63l-2.18-2.45l0.54-1.9L342.89,92.49L342.89,92.49M410.87,85.69l4.62,1.36l-0.27,3.81l-4.89-2.45l-1.09-1.36L410.87,85.69L410.87,85.69z",name:"Greenland"},au:{path:"M761.17,427.98l-0.35,25.38l-3.9,2.86l-0.35,2.5l5.32,3.57l13.13-2.5h6.74l2.48-3.58l14.9-2.86l10.64,3.22l-0.71,4.29l1.42,4.29l8.16-1.43l0.35,2.14l-5.32,3.93l1.77,1.43l3.9-1.43l-1.06,11.8l7.45,5.72l4.26-1.43l2.13,2.14l12.42-1.79l11.71-18.95l4.26-1.07l8.51-15.73l2.13-13.58l-5.32-6.79l2.13-1.43l-4.26-13.23l-4.61-3.22l0.71-17.87l-4.26-3.22l-1.06-10.01h-2.13l-7.1,23.59l-3.9,0.36l-8.87-8.94l4.97-13.23l-9.22-1.79l-10.29,2.86l-2.84,8.22l-4.61,1.07l-0.35-5.72l-18.8,11.44l0.35,4.29l-2.84,3.93h-7.1l-15.26,6.43L761.17,427.98L761.17,427.98M825.74,496.26l-1.77,7.15l0.35,5l5.32-0.36l6.03-9.29L825.74,496.26L825.74,496.26z",name:"Australia"},nz:{path:"M913.02,481.96l1.06,11.8l-1.42,5.36l-5.32,3.93l0.35,4.65v5l1.42,1.79l14.55-12.51v-2.86h-3.55l-4.97-16.8L913.02,481.96L913.02,481.96M902.38,507.7l2.84,5.36l-7.81,7.51l-0.71,3.93l-5.32,0.71l-8.87,8.22l-8.16-3.93l-0.71-2.86l14.9-6.43L902.38,507.7L902.38,507.7z",name:"New Zealand"},nc:{path:"M906.64,420.47l-0.35,1.79l4.61,6.43l2.48,1.07l0.35-2.5L906.64,420.47L906.64,420.47z",name:"New Caledonia"},my:{path:"M764.14,332.92l3.02,3.49l11.58-4.01l2.29-8.84l5.16-0.37l4.72-3.42l-6.12-4.46l-1.4-2.45l-3.02,5.57l1.11,3.2l-1.84,2.67l-3.47-0.89l-8.41,6.17l0.22,3.57L764.14,332.92L764.14,332.92M732.71,315.45l2.01,4.51l0.45,5.86l2.69,4.17l6.49,3.94l2.46,0.23l-0.45-4.06l-2.13-5.18l-3.12-6.63l-0.26,1.16l-3.76-0.17l-2.7-3.88L732.71,315.45L732.71,315.45z",name:"Malaysia"},bn:{path:"M779.77,319.25l-2.88,3.49l2.36,0.74l1.33-1.86L779.77,319.25L779.77,319.25z",name:"Brunei Darussalam"},tl:{path:"M806.14,368.42l-5.11,4.26l0.49,1.09l2.16-0.4l2.55-2.38l5.01-0.69l-0.98-1.68L806.14,368.42L806.14,368.42z",name:"Timor-Leste"},sb:{path:"M895.43,364.65l0.15,2.28l1.39,1.32l1.31-0.81l-1.17-2.43L895.43,364.65L895.43,364.65M897.18,370.31l-1.17,1.25l1.24,2.28l1.46,0.44l-0.07-1.54L897.18,370.31L897.18,370.31M900.03,368.99l1.02,2.5l1.97,2.35l1.09-1.76l-1.46-2.5L900.03,368.99L900.03,368.99M905.14,372.74l0.58,3.09l1.39,1.91l1.17-2.42L905.14,372.74L905.14,372.74M906.74,379.65l-0.51,0.88l1.68,2.21l1.17,0.07l-0.73-2.87L906.74,379.65L906.74,379.65M903.02,384.05l-1.75,0.81l1.53,2.13l1.31-0.74L903.02,384.05L903.02,384.05z",name:"Solomon Islands"},vu:{path:"M920.87,397.22l-1.24,1.66l0.52,1.87l0.62,0.42l1.13-1.46L920.87,397.22L920.87,397.22M921.49,402.31l0.1,1.35l1.34,0.42l0.93-0.52l-0.93-1.46L921.49,402.31L921.49,402.31M923.45,414.37l-0.62,0.94l0.93,1.04l1.55-0.52L923.45,414.37L923.45,414.37z",name:"Vanuatu"},fj:{path:"M948.62,412.29l-1.24,1.66l-0.1,1.87l1.44,1.46L948.62,412.29L948.62,412.29z",name:"Fiji"},ph:{path:"M789.37,297.53l-0.86,1.64l-0.48,2.02l-4.78,6.07l0.29,1.25l2.01-0.29l6.21-6.94L789.37,297.53L789.37,297.53M797.11,295.22l-0.1,5.01l1.82,1.83l0.67,3.56l1.82,0.39l0.86-2.22l-1.43-1.06l-0.38-6.26L797.11,295.22L797.11,295.22M802.28,297.15l-0.1,4.43l1.05,1.73l1.82-2.12l-0.48-3.85L802.28,297.15L802.28,297.15M803.42,293.29l1.82,2.41l0.86,2.31h1.63l-0.29-3.95l-1.82-1.25L803.42,293.29L803.42,293.29M806.96,302.35l0.38,2.89l-3.35,2.7l-2.77,0.29l-2.96,3.18l0.1,1.45l2.77-0.87l1.91-1.25l1.63,4.14l2.87,2.02l1.15-0.39l1.05-1.25l-2.29-2.31l1.34-1.06l1.53,1.25l1.05-1.73l-1.05-2.12l-0.19-4.72L806.96,302.35L806.96,302.35M791.38,272.97l-2.58,1.83l-0.29,5.78l4.02,7.8l1.34,1.06l1.72-1.16l2.96,0.48l0.57,2.6l2.2,0.19l1.05-1.44l-1.34-1.83l-1.63-1.54l-3.44-0.38l-1.82-2.99l2.1-3.18l0.19-2.79l-1.43-3.56L791.38,272.97L791.38,272.97M792.72,290.21l0.76,2.7l1.34,0.87l0.96-1.25l-1.53-2.12L792.72,290.21L792.72,290.21z",name:"Philippines"},cn:{path:"M759.83,270.17l-2.39,0.67l-1.72,2.12l1.43,2.79l2.1,0.19l2.39-2.12l0.57-2.79L759.83,270.17L759.83,270.17M670.4,170.07l-3.46,8.7l-4.77-0.25l-5.03,11.01l4.27,5.44l-8.8,12.15l-4.52-0.76l-3.02,3.8l0.75,2.28l3.52,0.25l1.76,4.05l3.52,0.76l10.81,13.93v7.09l5.28,3.29l5.78-1.01l7.29,4.3l8.8,2.53l4.27-0.51l4.78-0.51l10.05-6.58l3.27,0.51l1.25,2.97l2.77,0.83l3.77,5.57l-2.51,5.57l1.51,3.8l4.27,1.52l0.75,4.56l5.03,0.51l0.75-2.28l7.29-3.8l4.52,0.25l5.28,5.82l3.52-1.52l2.26,0.25l1.01,2.79l1.76,0.25l2.51-3.54l10.05-3.8l9.05-10.89l3.02-10.38l-0.25-6.84l-3.77-0.76l2.26-2.53l-0.5-4.05l-9.55-9.62v-4.81l2.76-3.54l2.76-1.27l0.25-2.79h-7.04l-1.26,3.8l-3.27-0.76l-4.02-4.3l2.51-6.58l3.52-3.8l3.27,0.25l-0.5,5.82l1.76,1.52l4.27-4.3l1.51-0.25l-0.5-3.29l4.02-4.81l3.02,0.25l1.76-5.57l2.06-1.09l0.21-3.47l-2-2.1l-0.17-5.48l3.85-0.25l-0.25-14.13l-2.7,1.62l-1.01,3.62l-4.51-0.01l-13.07-7.35l-9.44-11.38l-9.58-0.1l-2.44,2.12l3.1,7.1l-1.08,6.66l-3.86,1.6l-2.17-0.17l-0.16,6.59l2.26,0.51l4.02-1.77l5.28,2.53v2.53l-3.77,0.25l-3.02,6.58l-2.76,0.25l-9.8,12.91l-10.3,4.56l-7.04,0.51l-4.77-3.29l-6.79,3.55l-7.29-2.28l-1.76-4.81l-12.31-0.76l-6.53-10.63h-2.76l-2.22-4.93L670.4,170.07z",name:"China"},tw:{path:"M787.46,248.31l-3.54,2.7l-0.19,5.2l3.06,3.56l0.76-0.67L787.46,248.31L787.46,248.31z",name:"Taiwan"},jp:{path:"M803.23,216.42l-1.63,1.64l0.67,2.31l1.43,0.1l0.96,5.01l1.15,1.25l2.01-1.83l0.86-3.28l-2.49-3.56L803.23,216.42L803.23,216.42M812.03,213.15l-2.77,2.6l-0.1,2.99l0.67,0.87l3.73-3.18l-0.29-3.18L812.03,213.15L812.03,213.15M808.2,206.98l-4.88,5.59l0.86,1.35l2.39,0.29l4.49-3.47l3.16-0.58l2.87,3.37l2.2-0.77l0.86-3.28l4.11-0.1l4.02-4.82l-2.1-8l-0.96-4.24l2.1-1.73l-4.78-7.22l-1.24,0.1l-2.58,2.89v2.41l1.15,1.35l0.38,6.36l-2.96,3.66l-1.72-1.06l-1.34,2.99l-0.29,2.79l1.05,1.64l-0.67,1.25l-2.2-1.83h-1.53l-1.34,0.77L808.2,206.98L808.2,206.98M816.43,163.44l-1.53,1.35l0.77,2.89l1.34,1.35l-0.1,4.43l-1.72,0.67l-1.34,2.99l3.92,5.39l2.58-0.87l0.48-1.35l-2.77-2.5l1.72-2.22l1.82,0.29l1.43,1.54l0.1-3.18l3.92-3.18l2.2-0.58l-1.82-3.08l-0.86-1.35l-1.43,0.96l-1.24,1.54l-2.68-0.58l-2.77-1.83L816.43,163.44L816.43,163.44z",name:"Japan"},ru:{path:"M506.61,151.72l-1.5-0.15l-2.7,3.23v1.51l0.9,0.35l1.75,0.05l2.9-2.37l0.4-0.81L506.61,151.72L506.61,151.72M830.86,160.45l-2.68,3.76l0.19,1.83l1.34-0.58l3.15-3.95L830.86,160.45L830.86,160.45M834.4,154.96l-0.96,2.6l0.1,1.73l1.63-1.06l1.53-3.08V154L834.4,154.96L834.4,154.96M840.04,132.03l-1.24,1.54l0.1,2.41l1.15-0.1l1.91-3.37L840.04,132.03L840.04,132.03M837.75,137.91v4.24l1.34,0.48l0.96-1.54v-3.27L837.75,137.91L837.75,137.91M798.64,122.59l-0.09,6.17l7.74,11.95l2.77,10.4l4.88,9.25l1.91,0.67l1.63-1.35l0.76-2.22l-6.98-7.61l0.19-3.95l1.53-0.67l0.38-2.31l-13.67-19.36L798.64,122.59L798.64,122.59M852.57,103.42l-1.91,0.19l1.15,1.64l2.39,1.64l0.67-0.77L852.57,103.42L852.57,103.42M856.29,104.58l0.29,1.64l2.96,0.87l0.29-1.16L856.29,104.58L856.29,104.58M547.82,38.79l1.72,0.69l-1.21,2.08v2.95l-2.58,1.56H543l-1.55-1.91l0.17-2.08l1.21-1.56h2.41L547.82,38.79L547.82,38.79M554.36,36.88v2.08l1.72,1.39l2.41-0.17l2.07-1.91v-1.39h-1.89l-1.55,0.52l-1.21-1.39L554.36,36.88L554.36,36.88M564.18,37.06l1.21,2.6l2.41,0.17l1.72-0.69l-0.86-2.43l-2.24-0.52L564.18,37.06L564.18,37.06M573.99,33.59l-1.89-0.35l-1.72,1.74l0.86,1.56l0.52,2.43l2.24-1.73l0.52-1.91L573.99,33.59L573.99,33.59M584.49,51.98l-0.52,2.43l-3.96,3.47l-8.44,1.91l-6.89,11.45l-1.21,3.3l6.89,1.74l1.03-4.16l2.07-6.42l5.34-2.78l4.48-3.47l3.27-1.39h1.72v-4.68L584.49,51.98L584.49,51.98M562.28,77.31l4.65,0.52l1.55,5.38l3.96,4.16l-1.38,2.78h-2.41l-2.24-2.6l-4.99-0.17l-2.07-2.78v-1.91l3.1-0.87L562.28,77.31L562.28,77.31M634.95,18.15l-2.24-1.39h-2.58l-0.52,1.56l-2.75,1.56l-2.07,0.69l-0.34,2.08l4.82,0.35L634.95,18.15L634.95,18.15M640.28,18.67l-1.21,2.6l-2.41-0.17l-3.79,2.78l-1.03,3.47h2.41l1.38-2.26l3.27,2.43l3.1-1.39l2.24-1.91l-0.86-2.95l-1.21-2.08L640.28,18.67L640.28,18.67M645.28,20.58l1.21,4.86l1.89,4.51l2.07-3.64l3.96-0.87v-2.6l-2.58-1.91L645.28,20.58L645.28,20.58M739.76,12.8l2.69,2.26l1.91-0.79l0.56-3.17L741,8.39l-2.58,1.7l-6.28,0.57v2.83l-6.62,0.11v4.63l7.74,5.76l2.02-1.47l-0.45-4.07l4.94-1.24l-1.01-1.92l-1.79-1.81L739.76,12.8L739.76,12.8M746.94,10.09l1.79,3.39l6.96-0.79l1.91-2.49l-0.45-2.15l-1.91-0.79l-1.79,1.36l-5.16,1.13L746.94,10.09L746.94,10.09M746.49,23.31l-3.48-0.9L741,24.56l-0.9,2.94l4.71-0.45l3.59-1.81L746.49,23.31L746.49,23.31M836.68,3.76l-2.92-0.9L830.4,4.1l-1.68,2.49l2.13,2.83l5.61-2.49l1.12-1.24L836.68,3.76L836.68,3.76M817.97,72.93l1.76,6.08l3.52,1.01l3.52-5.57l-2.01-3.8l0.75-3.29h5.28l-1.26,2.53l0.5,9.12l-7.54,18.74l0.75,4.05l-0.25,6.84l14.07,20.51l2.76,0.76l0.25-16.71l2.76-2.53l-3.02-6.58l2.51-2.79l-5.53-7.34l-3.02,0.25l-1-12.15l7.79-2.03l0.5-3.55l4.02-1.01l2.26,2.03l2.76-11.14l4.77-8.1l3.77-2.03l3.27,0.25v-3.8l-5.28-1.01l-7.29-6.08l3.52-4.05l-3.02-6.84l2.51-2.53l3.02,4.05l7.54,2.79l8.29,0.76l1.01-3.54l-4.27-4.3l4.77-6.58l-10.81-3.8l-2.76,5.57l-3.52-4.56l-19.85-6.84l-18.85,3.29l-2.76,1.52v1.52l4.02,2.03l-0.5,4.81l-7.29-3.04l-16.08,6.33l-2.76-5.82h-11.06l-5.03,5.32l-17.84-4.05l-16.33,3.29l-2.01,5.06l2.51,0.76l-0.25,3.8l-15.83,1.77l1.01,5.06l-14.58-2.53l3.52-6.58l-14.83-0.76l1.26,6.84l-4.77,2.28l-4.02-3.8l-16.33,2.79l-6.28,5.82l-0.25,3.54l-4.02,0.25l-0.5-4.05l12.82-11.14v-7.6l-8.29-2.28l-10.81,3.54l-4.52-4.56h-2.01l-2.51,5.06l2.01,2.28l-14.33,7.85l-12.31,9.37l-7.54,10.38v4.3l8.04,3.29l-4.02,3.04l-8.54-3.04l-3.52,3.04l-5.28-6.08l-1.01,2.28l5.78,18.23l1.51,0.51l4.02-2.03l2.01,1.52v3.29l-3.77-1.52l-2.26,1.77l1.51,3.29l-1.26,8.61l-7.79,0.76l-0.5-2.79l4.52-2.79l1.01-7.6l-5.03-6.58l-1.76-11.39l-8.04-1.27l-0.75,4.05l1.51,2.03l-3.27,2.79l1.26,7.6l4.77,2.03l1.01,5.57l-4.78-3.04l-12.31-2.28l-1.51,4.05l-9.8,3.54l-1.51-2.53l-12.82,7.09l-0.25,4.81l-5.03,0.76l1.51-3.54v-3.54l-5.03-1.77l-3.27,1.27l2.76,5.32l2.01,3.54v2.79l-3.77-0.76l-0.75-0.76l-3.77,4.05l2.01,3.54l-8.54-0.25l2.76,3.55l-0.75,1.52h-4.52l-3.27-2.28l-0.75-6.33l-5.28-2.03v-2.53l11.06,2.28l6.03,0.51l2.51-3.8l-2.26-4.05l-16.08-6.33l-5.55,1.38l-1.9,1.63l0.59,3.75l2.36,0.41l-0.55,5.9l7.28,17.1l-5.26,8.34l-0.36,1.88l2.67,1.88l-2.41,1.59l-1.6,0.03l0.3,7.35l2.21,3.13l0.03,3.04l2.83,0.26l4.33,1.65l4.58,6.3l0.05,1.66l-1.49,2.55l3.42-0.19l3.33,0.96l4.5,6.37l11.08,1.01l-0.48,7.58l-3.82,3.27l0.79,1.28l-3.77,4.05l-1,3.8l2.26,3.29l7.29,2.53l3.02-1.77l19.35,7.34l0.75-2.03l-4.02-3.8v-4.81l-2.51-0.76l0.5-4.05l4.02-4.81l-7.21-5.4l0.5-7.51l7.71-5.07l9.05,0.51l1.51,2.79l9.3,0.51l6.79-3.8l-3.52-3.8l0.75-7.09l17.59-8.61l13.53,6.1l4.52-4.05l13.32,12.66l10.05-1.01l3.52,3.54l9.55,1.01l6.28-8.61l8.04,3.55l4.27,0.76l4.27-3.8l-3.77-2.53l3.27-5.06l9.3,3.04l2.01,4.05l4.02,0.25l2.51-1.77l6.79-0.25l0.75,1.77l7.79,0.51l5.28-5.57l10.81,1.27l3.27-1.27l1-6.08l-3.27-7.34l3.27-2.79h10.3l9.8,11.65l12.56,7.09h3.77l0.5-3.04l4.52-2.79l0.5,16.46l-4.02,0.25v4.05l2.26,2.79l-0.42,3.62l1.67,0.69l1.01-2.53l1.51,0.51l1,1.01l4.52-1.01l4.52-13.17l0.5-16.46l-5.78-13.17l-7.29-8.86l-3.52,0.51v2.79l-8.54-3.29l3.27-7.09l2.76-18.74l11.56-3.54l5.53-3.54h6.03L805.86,96l1.51,2.53l5.28-5.57l3.02,0.25l-0.5-3.29l-4.78-1.01l3.27-11.9L817.97,72.93L817.97,72.93z",name:"Russian Federation"},us:{path:"M69.17,53.35l3.46,6.47l2.22-0.5v-2.24L69.17,53.35L69.17,53.35M49.66,110.26l-0.17,3.01l2.16-0.5v-1.34L49.66,110.26L49.66,110.26M46.34,111.6l-4.32,2.18l0.67,2.34l1.66-1.34l3.32-1.51L46.34,111.6L46.34,111.6M28.39,114.44l-2.99-0.67l-0.5,1.34l0.33,2.51L28.39,114.44L28.39,114.44M22.07,114.28l-2.83-1.17l-1,1.84l1.83,1.84L22.07,114.28L22.07,114.28M12.27,111.6l-1.33-1.84l-1.33,0.5v2.51l1.5,1L12.27,111.6L12.27,111.6M1.47,99.71l1.66,1.17l-0.5,1.34H1.47V99.71L1.47,99.71M10,248.7l-0.14,2.33l2.04,1.37l1.22-1.09L10,248.7L10,248.7M15.29,252.13l-1.9,1.37l1.63,2.05l1.9-1.64L15.29,252.13L15.29,252.13M19.1,255.41l-1.63,2.19l0.54,1.37l2.31-1.09L19.1,255.41L19.1,255.41M21.81,259.65l-0.95,5.47l0.95,2.05l3.12-0.96l1.63-2.74l-3.4-3.15L21.81,259.65L21.81,259.65M271.05,281.06l-2.64-0.89l-2.12,1.33l1.06,1.24l3.61,0.53L271.05,281.06L271.05,281.06M93.11,44.89l-8.39,1.99l1.73,9.45l9.13,2.49l0.49,1.99L82.5,65.04l-7.65,12.68l2.71,13.43L82,94.13l3.46-3.23l0.99,1.99l-4.2,4.97l-16.29,7.46l-10.37,2.49l-0.25,3.73l23.94-6.96l9.87-2.74l9.13-11.19l10.12-6.71l-5.18,8.7l5.68,0.75l9.63-4.23l1.73,6.96l6.66,1.49l6.91,6.71l0.49,4.97l-0.99,1.24l1.23,4.72h1.73l0.25-7.96h1.97l0.49,19.64l4.94-4.23l-3.46-20.39h-5.18l-5.68-7.21l27.89-47.25l-27.64-21.63l-30.85,5.97l-1.23,9.45l6.66,3.98l-2.47,6.47L93.11,44.89L93.11,44.89M148.76,158.34l-1,4.02l-3.49-2.26h-1.74l-1,4.27l-12.21,27.36l3.24,23.84l3.99,2.01l0.75,6.53h8.22l7.97,6.02l15.69,1.51l1.74,8.03l2.49,1.76l3.49-3.51l2.74,1.25l2.49,11.54l4.23,2.76l3.49-6.53l10.71-7.78l6.97,3.26l5.98,0.5l0.25-3.76l12.45,0.25l2.49,2.76l0.5,6.27l-1.49,3.51l1.74,6.02h3.74l3.74-5.77l-1.49-2.76l-1.49-6.02l2.24-6.78l10.21-8.78l7.72-2.26l-1-7.28l10.71-11.55l10.71-1.76L272.8,199l10.46-6.02v-8.03l-1-0.5l-3.74,1.25l-0.5,4.92l-12.43,0.15l-9.74,6.47l-15.29,5l-2.44-2.99l6.94-10.5l-3.43-3.27l-2.33-4.44l-4.83-3.88l-5.25-0.44l-9.92-6.77L148.76,158.34L148.76,158.34z",name:"United States of America"},mu:{path:"M613.01,398.99l-1.52,1.99l0.3,2.15l3.2-2.61L613.01,398.99L613.01,398.99z",name:"Mauritius"},re:{path:"M607.38,402.37l-2.28,0.15l-0.15,1.99l1.52,0.31l2.28-1.07L607.38,402.37L607.38,402.37z",name:"Reunion"},mg:{path:"M592.3,372.92l-2.13,5.06l-3.65,6.44l-6.39,0.46l-2.74,3.22l0.46,9.82l-3.96,4.6l0.46,7.82l3.35,3.83l3.96-0.46l3.96-2.92l-0.91-4.6l9.13-15.8l-1.83-1.99l1.83-3.83l1.98,0.61l0.61-1.53l-1.83-7.82l-1.07-3.22L592.3,372.92L592.3,372.92z",name:"Madagascar"},km:{path:"M577.69,371.23l0.46,1.53l1.98,0.31l0.76-1.99L577.69,371.23L577.69,371.23M580.58,374.3l0.76,1.69h1.22l0.61-2.15L580.58,374.3L580.58,374.3z",name:"Comoros"},sc:{path:"M602.35,358.34l-0.61,1.23l1.67,1.38l1.22-1.38L602.35,358.34L602.35,358.34M610.88,349.14l-1.83,1.23l1.37,2.15h1.83L610.88,349.14L610.88,349.14M611.64,354.51l-1.22,1.38l0.91,1.38l1.67,0.31l0.15-2.92L611.64,354.51L611.64,354.51z",name:"Seychelles"},mv:{path:"M656.4,320.76l0.3,2.61l1.67,0.61l0.3-2.3L656.4,320.76L656.4,320.76M658.53,326.28l-0.15,3.22l1.22,0.61l1.07-2.15L658.53,326.28L658.53,326.28M658.84,332.57l-1.07,1.07l1.22,1.07l1.52-1.07L658.84,332.57L658.84,332.57z",name:"Maldives"},pt:{path:"M372.64,217.02l-1.36,1.37l2.44,1.37l0.27-1.91L372.64,217.02L372.64,217.02M379.97,216.2l-1.63,1.09l1.36,1.09l2.17-0.55L379.97,216.2L379.97,216.2M381.05,220.03l-0.81,2.19l1.08,1.37l1.36-1.09L381.05,220.03L381.05,220.03M387.56,224.4l-0.54,1.37l0.81,0.82l2.17-1.37L387.56,224.4L387.56,224.4M408.18,236.42l-1.08,1.37l1.08,1.37l1.63-0.82L408.18,236.42L408.18,236.42M430.93,211.24l-0.62,8.65l-1.77,1.6l0.18,0.98l1.24,2.05l-0.8,2.5l1.33,0.45l3.1-0.36l-0.18-2.5l2.03-11.59l-0.44-1.6L430.93,211.24L430.93,211.24z",name:"Portugal"},es:{path:"M415.62,253.73l-1.75,1.01l0.81,0.82L415.62,253.73L415.62,253.73M409.54,253.92l-2.17,0.55l1.08,1.64h1.63L409.54,253.92L409.54,253.92M404.38,252.28l-1.36,1.37l1.9,1.64l1.08-2.46L404.38,252.28L404.38,252.28M448.36,205h-12.74l-2.57-1.16l-1.24,0.09l-1.5,3.12l0.53,3.21l4.87,0.45l0.62,2.05l-2.12,11.95l0.09,2.14l3.45,1.87l3.98,0.27l7.96-1.96l3.89-4.9l0.09-4.99l6.9-6.24l0.35-2.76l-6.28-0.09L448.36,205L448.36,205M461.1,217.21l-1.59,0.54l0.35,1.43h2.3l0.97-1.07L461.1,217.21L461.1,217.21z",name:"Spain"},cv:{path:"M387.56,290.54l-1.9,1.09l1.36,1.09l1.63-0.82L387.56,290.54L387.56,290.54M392.23,292.74l-1.24,1.1l0.88,1.63l2.12-0.95L392.23,292.74L392.23,292.74M389.52,295.83l-1.59,0.95l1.71,2.29l1.35-0.71L389.52,295.83L389.52,295.83z",name:"Cape Verde"},pf:{path:"M27.25,402.68l-1.9-0.14l-0.14,1.78l1.49,0.96l1.77-1.09L27.25,402.68L27.25,402.68M33.77,404.6l-2.72,1.78l2.04,2.46l1.77-0.41l0.95-1.23L33.77,404.6L33.77,404.6z",name:"French Polynesia"},kn:{path:"M276.6,283.37l-1.5,0.62l0.53,1.33l1.76-1.15l-0.35-0.36L276.6,283.37L276.6,283.37z",name:"Saint Kitts and Nevis"},ag:{path:"M279.07,284.88l-0.88,1.87l1.06,1.42l1.32-1.15L279.07,284.88L279.07,284.88z",name:"Antigua and Barbuda"},dm:{path:"M282.07,290.03l-1.06,0.98l0.79,1.6l1.5-0.44L282.07,290.03L282.07,290.03z",name:"Dominica"},lc:{path:"M281.98,294.03l-0.71,1.51l1.15,1.24l1.5-0.8L281.98,294.03L281.98,294.03z",name:"Saint Lucia"},bb:{path:"M282.07,297.85l-1.23,0.89l0.97,1.78l1.59-0.89L282.07,297.85L282.07,297.85z",name:"Barbados"},gd:{path:"M280.57,301.31l-1.15,1.15l0.44,0.71h1.41l0.44-1.16L280.57,301.31L280.57,301.31z",name:"Grenada"},tt:{path:"M282.24,304.78l-1.06,0.98l-1.15,0.18v1.42l2.12,1.95l0.88-1.42l0.53-1.6l-0.18-1.33L282.24,304.78L282.24,304.78z",name:"Trinidad and Tobago"},do:{path:"M263.11,280.44l-5.29-3.46l-2.5-0.85l-0.84,6l0.88,1.69l1.15-1.33l3.35-0.89l2.91,0.62L263.11,280.44L263.11,280.44z",name:"Dominican Republic"},ht:{path:"M250.86,275.38l3.44,0.36l-0.41,4.22l-0.34,2.22l-4.01-0.22l-0.71,1.07l-1.23-0.09l-0.44-2.31l4.23-0.35l-0.26-2.4l-1.94-0.8L250.86,275.38L250.86,275.38z",name:"Haiti"},fk:{path:"M307.95,508.18l-2.63-0.29l-2.62,1.76l1.9,2.06L307.95,508.18L307.95,508.18M310.57,506.86l-0.87,2.79l-2.48,2.2l0.15,0.73l4.23-1.62l1.75-2.2L310.57,506.86L310.57,506.86z",name:"Falkland Islands"},is:{path:"M406.36,117.31l-1.96-1.11l-2.64,1.67l-2.27,2.1l0.06,1.17l2.94,0.37l-0.18,2.1l-1.04,1.05l0.25,0.68l2.94,0.19v3.4l4.23,0.74l2.51,1.42l2.82,0.12l4.84-2.41l3.74-4.94l0.06-3.34l-2.27-1.92l-1.9-1.61l-0.86,0.62l-1.29,1.67l-1.47-0.19l-1.47-1.61l-1.9,0.18l-2.76,2.29l-1.66,1.79l-0.92-0.8l-0.06-1.98l0.92-0.62L406.36,117.31L406.36,117.31z",name:"Iceland"},no:{path:"M488.26,53.96l-1.65-1.66l-3.66,1.78h-6.72L475.17,58l3.77,3.33l1.65-0.24l2.36-4.04l2,1.43l-1.42,2.85l-0.71,4.16l1.65,2.61l3.54-5.94l4.6-5.59l-1.77-1.54L488.26,53.96L488.26,53.96M490.26,46.83l-2.95,2.73l1.77,2.73h3.18l1.3,1.78l3.89,2.02l4.48-2.61l3.07-2.61l-1.06-2.14l-3.07-1.78l-2.24,2.02l-1.53-1.9l-1.18,0.12l-1.53,3.33l-2.24-2.26l-0.24-1.54L490.26,46.83L490.26,46.83M496.98,59.07l-2.36,2.14l-2,1.54l0.94,1.66l1.89,0.59l3.07-1.43l1.42-1.78l-1.3-2.14L496.98,59.07L496.98,59.07M515.46,102.14l2.02-1.48L517.3,99l-1.28-0.74l0.18-2.03h1.1v-1.11l-4.77-1.29l-7.15,0.74l-0.73,3.14L503,97.16l-1.1-1.85l-3.49,0.18L498.04,99l-1.65,0.74l-0.92-1.85l-7.34,5.91l1.47,1.66l-2.75,1.29l-6.24,12.38l-2.2,1.48l0.18,1.11l2.2,1.11l-0.55,2.4l-3.67-0.19l-1.1-1.29l-2.38,2.77l-1.47,1.11l-0.37,2.59l-1.28,0.74l-3.3,0.74l-1.65,5.18l1.1,8.5l1.28,3.88l1.47,1.48l3.3-0.18l4.77-4.62l1.83-3.14l0.55,4.62l3.12-5.54l0.18-15.53l2.54-1.6l0.76-8.57l7.7-11.09l3.67-1.29l1.65-2.03l5.5,1.29l2.75,1.66l0.92-4.62l4.59-2.77L515.46,102.14L515.46,102.14z", +name:"Norway"},lk:{path:"M680.54,308.05l0.25,2.72l0.25,1.98l-1.47,0.25l0.74,4.45l2.21,1.24l3.43-1.98l-0.98-4.69l0.25-1.73l-3.19-2.96L680.54,308.05L680.54,308.05z",name:"Sri Lanka"},cu:{path:"M220.85,266.92v1.27l5.32,0.1l2.51-1.46l0.39,1.07l5.22,1.27l4.64,4.19l-1.06,1.46l0.19,1.66l3.87,0.97l3.87-1.75l1.74-1.75l-2.51-1.27l-12.95-7.6l-4.54-0.49L220.85,266.92L220.85,266.92z",name:"Cuba"},bs:{path:"M239.61,259.13l-1.26-0.39l-0.1,2.43l1.55,1.56l1.06-1.56L239.61,259.13L239.61,259.13M242.12,262.93l-1.74,0.97l1.64,2.34l0.87-1.17L242.12,262.93L242.12,262.93M247.73,264.68l-1.84-0.1l0.19,1.17l1.35,1.95l1.16-1.27L247.73,264.68L247.73,264.68M246.86,262.35l-3-1.27l-0.58-3.02l1.16-0.49l1.16,2.34l1.16,0.88L246.86,262.35L246.86,262.35M243.96,256.21l-1.55-0.39l-0.29-1.95l-1.64-0.58l1.06-1.07l1.93,0.68l1.45,0.88L243.96,256.21L243.96,256.21z",name:"Bahamas"},jm:{path:"M238.93,279.59l-3.48,0.88v0.97l2.03,1.17h2.13l1.35-1.56L238.93,279.59L238.93,279.59z",name:"Jamaica"},ec:{path:"M230.2,335.85l-4.73,2.94l-0.34,4.36l-0.95,1.43l2.98,2.86l-1.29,1.41l0.3,3.6l5.33,1.27l8.07-9.55l-0.02-3.33l-3.87-0.25L230.2,335.85L230.2,335.85z",name:"Ecuador"},ca:{path:"M203.73,35.89l0.22,4.02l-7.98,8.27l2,6.7l5.76-1.56l3.33-4.92l8.42-3.13l6.87-0.45l-5.32-5.81l-2.66,2.01l-2-0.67l-1.11-2.46l-2.44-2.46L203.73,35.89L203.73,35.89M214.15,24.05l-1.77,3.13l8.65,3.13l3.1-4.69l1.33,3.13h2.22l4.21-4.69l-5.1-1.34l-2-1.56l-2.66,2.68L214.15,24.05L214.15,24.05M229.23,30.31l-6.87,2.9v2.23l8.87,3.35l-2,2.23l1.33,2.9l5.54-2.46h4.66l2.22,3.57l3.77-3.8l-0.89-3.58l-3.1,1.12l-0.44-4.47l1.55-2.68h-1.55l-2.44,1.56l-1.11,0.89l0.67,3.13l-1.77,1.34l-2.66-0.22l-0.67-4.02L229.23,30.31L229.23,30.31M238.32,23.38l-0.67,2.23l4.21,2.01l3.1-1.79l-0.22-1.34L238.32,23.38L238.32,23.38M241.64,19.58l-3.1,1.12l0.22,1.56l6.87-0.45l-0.22-1.56L241.64,19.58L241.64,19.58M256.5,23.38l-0.44,1.56l-1.11,1.56v2.23l4.21-0.67l4.43,3.8h1.55v-3.8l-4.43-4.92L256.5,23.38L256.5,23.38M267.81,27.85l1.77,2.01l-1.55,2.68l1.11,2.9l4.88-2.68v-2.01l-2.88-3.35L267.81,27.85L267.81,27.85M274.24,22.71l0.22,3.57h5.99l1.55,1.34l-0.22,1.56l-5.32,0.67l3.77,5.14l5.1,0.89l7.09-3.13l-10.2-15.42l-3.1,2.01l0.22,2.68l-3.55-1.34L274.24,22.71L274.24,22.71M222.58,47.96l-8.42,2.23l-4.88,4.25l0.44,4.69l8.87,2.68l-2,4.47l-6.43-4.02l-1.77,3.35l4.21,2.9l-0.22,4.69l6.43,1.79l7.76-0.45l1.33-2.46l5.76,6.48l3.99-1.34l0.67-4.47l2.88,2.01l0.44-4.47l-3.55-2.23l0.22-14.07l-3.1-2.46L231.89,56L222.58,47.96L222.58,47.96M249.63,57.79l-2.88-1.34l-1.55,2.01l3.1,4.92l0.22,4.69l6.65-4.02v-5.81l2.44-2.46l-2.44-1.79h-3.99L249.63,57.79L249.63,57.79M263.82,55.78l-4.66,3.8l1.11,4.69h2.88l1.33-2.46l2,2.01l2-0.22l5.32-4.47L263.82,55.78L263.82,55.78M263.37,48.4l-1.11,2.23l4.88,1.79l1.33-2.01L263.37,48.4L263.37,48.4M260.49,39.91l-4.88,0.67l-2.88,2.68l5.32,0.22l-1.55,4.02l1.11,1.79l1.55-0.22l3.77-6.03L260.49,39.91L260.49,39.91M268.92,38.35l-2.66,0.89l0.44,3.57l4.43,2.9l0.22,2.23l-1.33,1.34l0.67,4.47l17.07,5.58l4.66,1.56l4.66-4.02l-5.54-4.47l-5.1,1.34l-7.09-0.67l-2.66-2.68l-0.67-7.37l-4.43-2.23L268.92,38.35L268.92,38.35M282.88,61.59L278,61.14l-5.76,2.23l-3.1,4.24l0.89,11.62l9.53,0.45l9.09,4.47l6.43,7.37l4.88-0.22l-1.33,6.92l-4.43,7.37l-4.88,2.23l-3.55-0.67l-1.77-1.56l-2.66,3.57l1.11,3.57l3.77,0.22l4.66-2.23l3.99,10.28l9.98,6.48l6.87-8.71l-5.76-9.38l3.33-3.8l4.66,7.82l8.42-7.37l-1.55-3.35l-5.76,1.79l-3.99-10.95l3.77-6.25l-7.54-8.04l-4.21,2.9l-3.99-8.71l-8.42,1.12l-2.22-10.5l-6.87,4.69l-0.67,5.81h-3.77l0.44-5.14L282.88,61.59L282.88,61.59M292.86,65.61l-1.77,1.79l1.55,2.46l7.32,0.89l-4.66-4.92L292.86,65.61L292.86,65.61M285.77,40.36v2.01l-4.88,1.12l1.33,2.23l5.54,2.23l6.21,0.67l4.43,3.13l4.43-2.46l-3.1-3.13h3.99l2.44-2.68l5.99-0.89v-1.34l-3.33-2.23l0.44-2.46l9.31,1.56l13.75-5.36l-5.1-1.56l1.33-1.79h10.64l1.77-1.79l-21.51-7.6l-5.1-1.79l-5.54,4.02l-6.21-5.14l-3.33-0.22l-0.67,4.25l-4.21-3.8l-4.88,1.56l0.89,2.46l7.32,1.56l-0.44,3.57l3.99,2.46l9.76-2.46l0.22,3.35l-7.98,3.8l-4.88-3.8l-4.43,0.45l4.43,6.26l-2.22,1.12l-3.33-2.9l-2.44,1.56l2.22,4.24h3.77l-0.89,4.02l-3.1-0.45l-3.99-4.25L285.77,40.36L285.77,40.36M266.01,101.85l-4.23,5.32l-0.26,5.86l3.7-2.13h4.49l3.17,2.93l2.91-2.4L266.01,101.85L266.01,101.85M317.52,171.05l-10.57,10.12l1.06,2.4l12.94,4.79l1.85-3.19l-1.06-5.32l-4.23,0.53l-2.38-2.66l3.96-3.99L317.52,171.05L317.52,171.05M158.22,48.66l1.99,3.01l1,4.02l4.98,1.25l3.49-3.76l2.99,1.51l8.47,0.75l5.98-2.51l1,8.28h3.49V57.7l3.49,0.25l8.72,10.29l5.73,3.51l-2.99,4.77l1.25,1.25L219,80.03l0.25,5.02l2.99,0.5l0.75-7.53l4.73-1.25l3.49,5.27l7.47,3.51l3.74,0.75l2.49-3.01l0.25-4.77l4.48-2.76l1.49,4.02l-3.99,7.03l0.5,3.51l2.24-3.51l4.48-4.02l0.25-5.27l-2.49-4.02l0.75-3.26l5.98-3.01l2.74,2.01l0.5,17.57l4.23-3.76l2.49,1.51l-3.49,6.02l4.48,1l6.48-10.04l5.48,5.77l-2.24,10.29l-5.48,3.01l-5.23-2.51l-9.46,2.01l1,3.26l-2.49,4.02l-7.72,1.76l-8.72,6.78l-7.72,10.29l-1,3.26l5.23,2.01l1.99,5.02l7.22,7.28l11.46,5.02l-2.49,11.54l-0.25,3.26l2.99,2.01l3.99-5.27l0.5-10.04l6.23-0.25l2.99-5.77l0.5-8.78l7.97-15.56l9.96,3.51l5.23,7.28l-2.24,7.28l3.99,2.26l9.71-6.53l2.74,17.82l8.97,10.79l0.25,5.52l-9.96,2.51l-4.73,5.02l-9.96-2.26l-4.98-0.25l-8.72,6.78l5.23-1.25l6.48-1.25l1.25,1.51l-1.74,5.52l0.25,5.02l2.99,2.01l2.99-0.75l1.5-2.26h1.99l-3.24,6.02l-6.23,0.25l-2.74,4.02h-3.49l-1-3.01l4.98-5.02l-5.98,2.01l-0.27-8.53l-1.72-1l-5.23,2.26l-0.5,4.27h-11.96l-10.21,7.03l-13.7,4.52l-1.49-2.01l6.9-10.3l-3.92-3.77l-2.49-4.78l-5.07-3.87l-5.44-0.45l-9.75-6.83l-70.71-11.62l-1.17-4.79l-6.48-6.02v-5.02l1-4.52l-0.5-2.51l-2.49-2.51l-0.5-4.02l6.48-4.52l-3.99-21.58l-5.48-0.25l-4.98-6.53L158.22,48.66L158.22,48.66M133.83,128.41l-1.7,3.26l0.59,2.31l1.11,0.69l-0.26,0.94l-1.19,0.34l0.34,3.43l1.28,1.29l1.02-1.11l-1.28-3.34l0.76-2.66l1.87-2.49l-1.36-2.31L133.83,128.41L133.83,128.41M139.45,147.95l-1.53,0.6l2.81,3.26l0.68,3.86l2.81,3l2.38-0.43v-3.94l-2.89-1.8L139.45,147.95L139.45,147.95z",name:"Canada"},gt:{path:"M194.88,291.52l5.93,4.34l5.98-7.43l-1.02-1.54l-2.04-0.07v-4.35l-1.53-0.93l-4.63,1.38l1.77,4.08L194.88,291.52L194.88,291.52z",name:"Guatemala"},hn:{path:"M207.55,288.78l9.24-0.35l2.74,3.26l-1.71-0.39l-3.29,0.14l-4.3,4.04l-1.84,4.09l-1.21-0.64l-0.01-4.48l-2.66-1.78L207.55,288.78L207.55,288.78z",name:"Honduras"},sv:{path:"M201.65,296.27l4.7,2.34l-0.07-3.71l-2.41-1.47L201.65,296.27L201.65,296.27z",name:"El Salvador"},ni:{path:"M217.74,292.11l2.19,0.44l0.07,4.49l-2.55,7.28l-6.87-0.68l-1.53-3.51l2.04-4.26l3.87-3.6L217.74,292.11L217.74,292.11z",name:"Nicaragua"},cr:{path:"M217.38,304.98l1.39,2.72l1.13,1.5l-1.52,4.51l-2.9-2.04l-4.74-4.34v-2.87L217.38,304.98L217.38,304.98z",name:"Costa Rica"},pa:{path:"M220.59,309.61l-1.46,4.56l4.82,1.25l2.99,0.59l0.51-3.53l3.21-1.62l2.85,1.47l1.12,1.79l1.36-0.16l1.07-3.25l-3.56-1.47l-2.7-1.47l-2.7,1.84l-3.21,1.62l-3.28-1.32L220.59,309.61L220.59,309.61z",name:"Panama"},co:{path:"M253.73,299.78l-2.06-0.21l-13.62,11.23l-1.44,3.95l-1.86,0.21l0.83,8.73l-4.75,11.65l5.16,4.37l6.61,0.42l4.54,6.66l6.6,0.21l-0.21,4.99H256l2.68-9.15l-2.48-3.12l0.62-5.82l5.16-0.42l-0.62-13.52l-11.56-3.74l-2.68-7.28L253.73,299.78L253.73,299.78z",name:"Colombia"},ve:{path:"M250.46,305.92l0.44,2.59l3.25,1.03l0.74-4.77l3.43-3.55l3.43,4.02l7.89,2.15l6.68-1.4l4.55,5.61l3.43,2.15l-3.76,5.73l1.26,4.34l-2.15,2.66l-2.23,1.87l-4.83-2.43l-1.11,1.12v3.46l3.53,1.68l-2.6,2.81l-2.6,2.81l-3.43-0.28l-3.45-3.79l-0.73-14.26l-11.78-4.02l-2.14-6.27L250.46,305.92L250.46,305.92z",name:"Venezuela"},gy:{path:"M285.05,314.13l7.22,6.54l-2.87,3.32l-0.23,1.97l3.77,3.89l-0.09,3.74l-6.56,2.5l-3.93-5.31l0.84-6.38l-1.68-4.75L285.05,314.13L285.05,314.13z",name:"Guyana"},sr:{path:"M293.13,321.14l2.04,1.87l3.16-1.96l2.88,0.09l-0.37,1.12l-1.21,2.52l-0.19,6.27l-5.75,2.34l0.28-4.02l-3.71-3.46l0.19-1.78L293.13,321.14L293.13,321.14z",name:"Suriname"},gf:{path:"M302.13,321.8l5.85,3.65l-3.06,6.08l-1.11,1.4l-3.25-1.87l0.09-6.55L302.13,321.8L302.13,321.8z",name:"French Guiana"},pe:{path:"M225.03,349.52l-1.94,1.96l0.13,3.13l16.94,30.88l17.59,11.34l2.72-4.56l0.65-10.03l-1.42-6.25l-4.79-8.08l-2.85,0.91l-1.29,1.43l-5.69-6.52l1.42-7.69l6.6-4.3l-0.52-4.04l-6.72-0.26l-3.49-5.86l-1.94-0.65l0.13,3.52l-8.66,10.29l-6.47-1.56L225.03,349.52L225.03,349.52z",name:"Peru"},bo:{path:"M258.71,372.79l8.23-3.59l2.72,0.26l1.81,7.56l12.54,4.17l2.07,6.39l5.17,0.65l2.2,5.47l-1.55,4.95l-8.41,0.65l-3.1,7.95l-6.6-0.13l-2.07-0.39l-3.81,3.7l-1.88-0.18l-6.47-14.99l1.79-2.68l0.63-10.6l-1.6-6.31L258.71,372.79L258.71,372.79z",name:"Bolivia"},py:{path:"M291.76,399.51l2.2,2.4l-0.26,5.08l6.34-0.39l4.79,6.13l-0.39,5.47l-3.1,4.69l-6.34,0.26l-0.26-2.61l1.81-4.3l-6.21-3.91h-5.17l-3.88-4.17l2.82-8.06L291.76,399.51L291.76,399.51z",name:"Paraguay"},uy:{path:"M300.36,431.93l-2.05,2.19l0.85,11.78l6.44,1.87l8.19-8.21L300.36,431.93L300.36,431.93z",name:"Uruguay"},ar:{path:"M305.47,418.2l1.94,1.82l-7.37,10.95l-2.59,2.87l0.9,12.51l5.69,6.91l-4.78,8.34l-3.62,1.56h-4.14l1.16,6.51l-6.47,2.22l1.55,5.47l-3.88,12.38l4.79,3.91l-2.59,6.38l-4.4,6.91l2.33,4.82l-5.69,0.91l-4.66-5.73l-0.78-17.85l-7.24-30.32l2.19-10.6l-4.66-13.55l3.1-17.59l2.85-3.39l-0.7-2.57l3.66-3.34l8.16,0.56l4.56,4.87l5.27,0.09l5.4,3.3l-1.59,3.72l0.38,3.76l7.65-0.36L305.47,418.2L305.47,418.2M288.92,518.79l0.26,5.73l4.4-0.39l3.75-2.48l-6.34-1.3L288.92,518.79L288.92,518.79z",name:"Argentina"},cl:{path:"M285.04,514.1l-4.27,9.38l7.37,0.78l0.13-6.25L285.04,514.1L285.04,514.1M283.59,512.63l-3.21,3.55l-0.39,4.17l-6.21-3.52l-6.6-9.51l-1.94-3.39l2.72-3.52l-0.26-4.43l-3.1-1.3l-2.46-1.82l0.52-2.48l3.23-0.91l0.65-14.33l-5.04-2.87l-3.29-74.59l0.85-1.48l6.44,14.85l2.06,0.04l0.67,2.37l-2.74,3.32l-3.15,17.87l4.48,13.76l-2.07,10.42l7.3,30.64l0.77,17.92l5.23,6.05L283.59,512.63L283.59,512.63M262.28,475.14l-1.29,1.95l0.65,3.39l1.29,0.13l0.65-4.3L262.28,475.14L262.28,475.14z",name:"Chile"},br:{path:"M314.24,438.85l6.25-12.02l0.23-10.1l11.66-7.52h6.53l5.13-8.69l0.93-16.68l-2.1-4.46l12.36-11.28l0.47-12.45l-16.79-8.22l-20.28-6.34l-9.56-0.94l2.57-5.4l-0.7-8.22l-2.09-0.69l-3.09,6.14l-1.62,2.03l-4.16-1.84l-13.99,4.93l-4.66-5.87l0.75-6.13l-4.4,4.48l-4.86-2.62l-0.49,0.69l0.01,2.13l4.19,2.25l-6.29,6.63l-3.97-0.04l-4.02-4.09l-4.55,0.14l-0.56,4.86l2.61,3.17l-3.08,9.87l-3.6,0.28l-5.73,3.62l-1.4,7.11l4.97,5.32l0.91-1.03l3.49-0.94l2.98,5.02l8.53-3.66l3.31,0.19l2.28,8.07l12.17,3.86l2.1,6.44l5.18,0.62l2.47,6.15l-1.67,5.47l2.18,2.86l-0.32,4.26l5.84-0.55l5.35,6.76l-0.42,4.75l3.17,2.68l-7.6,11.51L314.24,438.85L314.24,438.85z",name:"Brazil"},bz:{path:"M204.56,282.4l-0.05,3.65h0.84l2.86-5.34h-1.94L204.56,282.4L204.56,282.4z",name:"Belize"},mn:{path:"M673.8,170.17l5.82-7.72l6.99,3.23l4.75,1.27l5.82-5.34l-3.95-2.91l2.6-3.67l7.76,2.74l2.69,4.41l4.86,0.13l2.54-1.89l5.23-0.21l1.14,1.94l8.69,0.44l5.5-5.61l7.61,0.8l-0.44,7.64l3.33,0.76l4.09-1.86l4.33,2.14l-0.1,1.08l-3.14,0.09l-3.27,6.86l-2.54,0.25l-9.88,12.91l-10.09,4.45l-6.31,0.49l-5.24-3.38l-6.7,3.58l-6.6-2.05l-1.87-4.79l-12.5-0.88l-6.4-10.85l-3.11-0.2L673.8,170.17L673.8,170.17z",name:"Mongolia"},kp:{path:"M778.28,194.27l1.84,0.77l0.56,6.44l3.65,0.21l3.44-4.03l-1.19-1.06l0.14-4.32l3.16-3.82l-1.61-2.9l1.05-1.2l0.58-3l-1.83-0.83l-1.56,0.79l-1.93,5.86l-3.12-0.27l-3.61,4.26L778.28,194.27L778.28,194.27z",name:"North Korea"},kr:{path:"M788.34,198.2l6.18,5.04l1.05,4.88l-0.21,2.62l-3.02,3.4l-2.6,0.14l-2.95-6.37l-1.12-3.04l1.19-0.92l-0.28-1.27l-1.47-0.66L788.34,198.2L788.34,198.2z",name:"South Korea"},kz:{path:"M576.69,188.62l4.1-1.75l4.58-0.16l0.32,7h-2.68l-2.05,3.34l2.68,4.45l3.95,2.23l0.36,2.55l1.45-0.48l1.34-1.59l2.21,0.48l1.11,2.23h2.84v-2.86l-1.74-5.09l-0.79-4.13l5.05-2.23l6.79,1.11l4.26,4.29l9.63-0.95l5.37,7.63l6.31,0.32l1.74-2.86l2.21-0.48l0.32-3.18l3.31-0.16l1.74,2.07l1.74-4.13l14.99,2.07l2.52-3.34l-4.26-5.25l5.68-12.4l4.58,0.32l3.16-7.63l-6.31-0.64l-3.63-3.5l-10,1.16l-12.88-12.45l-4.54,4.03l-13.77-6.25l-16.89,8.27l-0.47,5.88l3.95,4.61l-7.7,4.35l-9.99-0.22l-2.09-3.07l-7.83-0.43l-7.42,4.77l-0.16,6.52L576.69,188.62L576.69,188.62z",name:"Kazakhstan"},tm:{path:"M593.85,207.59l-0.62,2.63h-4.15v3.56l4.46,2.94l-1.38,4.03v1.86l1.85,0.31l2.46-3.25l5.54-1.24l11.84,4.49l0.15,3.25l6.61,0.62l7.38-7.75l-0.92-2.48l-4.92-1.08l-13.84-8.99l-0.62-3.25h-5.23l-2.31,4.34h-2.31L593.85,207.59L593.85,207.59z",name:"Turkmenistan"},uz:{path:"M628.92,219.06l3.08,0.16v-5.27l-2.92-1.7l4.92-6.2h2l2,2.33l5.23-2.01l-7.23-2.48l-0.28-1.5l-1.72,0.42l-1.69,2.94l-7.29-0.24l-5.35-7.57l-9.4,0.93l-4.48-4.44l-6.2-1.05l-4.5,1.83l2.61,8.68l0.03,2.92l1.9,0.04l2.33-4.44l6.2,0.08l0.92,3.41l13.29,8.82l5.14,1.18L628.92,219.06L628.92,219.06z",name:"Uzbekistan"},tj:{path:"M630.19,211.84l4.11-5.1h1.55l0.54,1.14l-1.9,1.38v1.14l1.25,0.9l6.01,0.36l1.96-0.84l0.89,0.18l0.6,1.92l3.57,0.36l1.79,3.78l-0.54,1.14l-0.71,0.06l-0.71-1.44l-1.55-0.12l-2.68,0.36l-0.18,2.52l-2.68-0.18l0.12-3.18l-1.96-1.92l-2.98,2.46l0.06,1.62l-2.62,0.9h-1.55l0.12-5.58L630.19,211.84L630.19,211.84z",name:"Tajikistan"},kg:{path:"M636.81,199.21l-0.31,2.53l0.25,1.56l8.7,2.92l-7.64,3.08l-0.87-0.72l-1.65,1.06l0.08,0.58l0.88,0.4l5.36,0.14l2.72-0.82l3.49-4.4l4.37,0.76l5.27-7.3l-14.1-1.92l-1.95,4.73l-2.46-2.64L636.81,199.21L636.81,199.21z",name:"Kyrgyz Republic"},af:{path:"M614.12,227.05l1.59,12.46l3.96,0.87l0.37,2.24l-2.84,2.37l5.29,4.27l10.28-3.7l0.82-4.38l6.47-4.04l2.48-9.36l1.85-1.99l-1.92-3.34l6.26-3.87l-0.8-1.12l-2.89,0.18l-0.26,2.66l-3.88-0.04l-0.07-3.55l-1.25-1.49l-2.1,1.91l0.06,1.75l-3.17,1.2l-5.85-0.37l-7.6,7.96L614.12,227.05L614.12,227.05z",name:"Afghanistan"},pk:{path:"M623.13,249.84l2.6,3.86l-0.25,1.99l-3.46,1.37l-0.25,3.24h3.96l1.36-1.12h7.54l6.8,5.98l0.87-2.87h5.07l0.12-3.61l-5.19-4.98l1.11-2.74l5.32-0.37l7.17-14.95l-3.96-3.11l-1.48-5.23l9.64-0.87l-5.69-8.1l-3.03-0.82l-1.24,1.5l-0.93,0.07l-5.69,3.61l1.86,3.12l-2.1,2.24l-2.6,9.59l-6.43,4.11l-0.87,4.49L623.13,249.84L623.13,249.84z",name:"Pakistan"},in:{path:"M670.98,313.01l4.58-2.24l2.72-9.84l-0.12-12.08l15.58-16.82v-3.99l3.21-1.25l-0.12-4.61l-3.46-6.73l1.98-3.61l4.33,3.99l5.56,0.25v2.24l-1.73,1.87l0.37,1l2.97,0.12l0.62,3.36h0.87l2.23-3.99l1.11-10.46l3.71-2.62l0.12-3.61l-1.48-2.87l-2.35-0.12l-9.2,6.08l0.58,3.91l-6.46-0.02l-2.28-2.79l-1.24,0.16l0.42,3.88l-13.97-1l-8.66-3.86l-0.46-4.75l-5.77-3.58l-0.07-7.37l-3.96-4.53l-9.1,0.87l0.99,3.96l4.46,3.61l-7.71,15.78l-5.16,0.39l-0.85,1.9l5.08,4.7l-0.25,4.75l-5.19-0.08l-0.56,2.36l4.31-0.19l0.12,1.87l-3.09,1.62l1.98,3.74l3.83,1.25l2.35-1.74l1.11-3.11l1.36-0.62l1.61,1.62l-0.49,3.99l-1.11,1.87l0.25,3.24L670.98,313.01L670.98,313.01z",name:"India"},np:{path:"M671.19,242.56l0.46,4.27l8.08,3.66l12.95,0.96l-0.49-3.13l-8.65-2.38l-7.34-4.37L671.19,242.56L671.19,242.56z",name:"Nepal"},bt:{path:"M695.4,248.08l1.55,2.12l5.24,0.04l-0.53-2.9L695.4,248.08L695.4,248.08z",name:"Bhutan"},bd:{path:"M695.57,253.11l-1.31,2.37l3.4,6.46l0.1,5.04l0.62,1.35l3.99,0.07l2.26-2.17l1.64,0.99l0.33,3.07l1.31-0.82l0.08-3.92l-1.1-0.13l-0.69-3.33l-2.78-0.1l-0.69-1.85l1.7-2.27l0.03-1.12h-4.94L695.57,253.11L695.57,253.11z",name:"Bangladesh"},mm:{path:"M729.44,303.65l-2.77-4.44l2.01-2.82l-1.9-3.49l-1.79-0.34l-0.34-5.86l-2.68-5.19l-0.78,1.24l-1.79,3.04l-2.24,0.34l-1.12-1.47l-0.56-3.95l-1.68-3.16l-6.84-6.45l1.68-1.11l0.31-4.67l2.5-4.2l1.08-10.45l3.62-2.47l0.12-3.81l2.17,0.72l3.42,4.95l-2.54,5.44l1.71,4.27l4.23,1.66l0.77,4.65l5.68,0.88l-1.57,2.71l-7.16,2.82l-0.78,4.62l5.26,6.76l0.22,3.61l-1.23,1.24l0.11,1.13l3.92,5.75l0.11,5.97L729.44,303.65L729.44,303.65z",name:"Myanmar"},th:{path:"M730.03,270.47l3.24,4.17v5.07l1.12,0.56l5.15-2.48l1.01,0.34l6.15,7.1l-0.22,4.85l-2.01-0.34l-1.79-1.13l-1.34,0.11l-2.35,3.94l0.45,2.14l1.9,1.01l-0.11,2.37l-1.34,0.68l-4.59-3.16v-2.82l-1.9-0.11l-0.78,1.24l-0.4,12.62l2.97,5.42l5.26,5.07l-0.22,1.47l-2.8-0.11l-2.57-3.83h-2.69l-3.36-2.71l-1.01-2.82l1.45-2.37l0.5-2.14l1.58-2.8l-0.07-6.44l-3.86-5.58l-0.16-0.68l1.25-1.26l-0.29-4.43l-5.14-6.51l0.6-3.75L730.03,270.47L730.03,270.47z",name:"Thailand"},kh:{path:"M740.48,299.47l4.09,4.37l7.61-5.64l0.67-8.9l-3.93,2.71l-2.04-1.14l-2.77-0.37l-1.55-1.09l-0.75,0.04l-2.03,3.33l0.33,1.54l2.06,1.15l-0.25,3.13L740.48,299.47L740.48,299.47z",name:"Cambodia"},la:{path:"M735.47,262.93l-2.42,1.23l-2.01,5.86l3.36,4.28l-0.56,4.73l0.56,0.23l5.59-2.71l7.5,8.38l-0.18,5.28l1.63,0.88l4.03-3.27l-0.33-2.59l-11.63-11.05l0.11-1.69l1.45-1.01l-1.01-2.82l-4.81-0.79L735.47,262.93L735.47,262.93z",name:"Lao People's Democratic Republic"},vn:{path:"M745.06,304.45l1.19,1.87l0.22,2.14l3.13,0.34l3.8-5.07l3.58-1.01l1.9-5.18l-0.89-8.34l-3.69-5.07l-3.89-3.11l-4.95-8.5l3.55-5.94l-5.08-5.83l-4.07-0.18l-3.66,1.97l1.09,4.71l4.88,0.86l1.31,3.63l-1.72,1.12l0.11,0.9l11.45,11.2l0.45,3.29l-0.69,10.4L745.06,304.45L745.06,304.45z",name:"Vietnam"},ge:{path:"M555.46,204.16l3.27,4.27l4.08,1.88l2.51-0.01l4.31-1.17l1.08-1.69l-12.75-4.77L555.46,204.16L555.46,204.16z",name:"Georgia"},am:{path:"M569.72,209.89l4.8,6.26l-1.41,1.65l-3.4-0.59l-4.22-3.78l0.23-2.48L569.72,209.89L569.72,209.89z",name:"Armenia"},az:{path:"M571.41,207.72l-1.01,1.72l4.71,6.18l1.64-0.53l2.7,2.83l1.17-4.96l2.93,0.47l-0.12-1.42l-4.82-4.22l-0.92,2.48L571.41,207.72L571.41,207.72z",name:"Azerbaijan"},ir:{path:"M569.65,217.95l-1.22,1.27l0.12,2.01l1.52,2.13l5.39,5.9l-0.82,2.36h-0.94l-0.47,2.36l3.05,3.9l2.81,0.24l5.63,7.79l3.16,0.24l2.46,1.77l0.12,3.54l9.73,5.67h3.63l2.23-1.89l2.81-0.12l1.64,3.78l10.51,1.46l0.31-3.86l3.48-1.26l0.16-1.38l-2.77-3.78l-6.17-4.96l3.24-2.95l-0.23-1.3l-4.06-0.63l-1.72-13.7l-0.2-3.15l-11.01-4.21l-4.88,1.1l-2.73,3.35l-2.42-0.16l-0.7,0.59l-5.39-0.35l-6.8-4.96l-2.53-2.77l-1.16,0.28l-2.09,2.39L569.65,217.95L569.65,217.95z",name:"Iran"},tr:{path:"M558.7,209.19l-2.23,2.36l-8.2-0.24l-4.92-2.95l-4.8-0.12l-5.51,3.9l-5.16,0.24l-0.47,2.95h-5.86l-2.34,2.13v1.18l1.41,1.18v1.3l-0.59,1.54l0.59,1.3l1.88-0.94l1.88,2.01l-0.47,1.42l-0.7,0.95l1.05,1.18l5.16,1.06l3.63-1.54v-2.24l1.76,0.35l4.22,2.48l4.57-0.71l1.99-1.89l1.29,0.47v2.13h1.76l1.52-2.95l13.36-1.42l5.83-0.71l-1.54-2.02l-0.03-2.73l1.17-1.4l-4.26-3.42l0.23-2.95h-2.34L558.7,209.19L558.7,209.19M523.02,209.7l-0.16,3.55l3.1-0.95l1.42-0.95l-0.42-1.54l-1.47-1.17L523.02,209.7L523.02,209.7z",name:"Turkey"},om:{path:"M598.38,280.84l7.39-4.26l1.31-6.25l-1.62-0.93l0.67-6.7l1.41-0.82l1.51,2.37l8.99,4.7v2.61l-10.89,16.03l-5.01,0.17L598.38,280.84L598.38,280.84z",name:"Oman"},ae:{path:"M594.01,264.94l0.87,3.48l9.86,0.87l0.69-7.14l1.9-1.04l0.52-2.61l-3.11,0.87l-3.46,5.23L594.01,264.94L594.01,264.94z",name:"United Arab Emirates"},qa:{path:"M592.63,259.02l-0.52,4.01l1.54,1.17l1.4-0.13l0.52-5.05l-1.21-0.87L592.63,259.02L592.63,259.02z",name:"Qatar"},kw:{path:"M583.29,247.17l-2.25-1.22l-1.56,1.57l0.17,3.14l3.63,1.39L583.29,247.17L583.29,247.17z",name:"Kuwait"},sa:{path:"M584,253.24l7.01,9.77l2.26,1.8l1.01,4.38l10.79,0.85l1.22,0.64l-1.21,5.4l-7.09,4.18l-10.37,3.14l-5.53,5.4l-6.57-3.83l-3.98,3.48L566,279.4l-3.8-1.74l-1.38-2.09v-4.53l-13.83-16.72l-0.52-2.96h3.98l4.84-4.18l0.17-2.09l-1.38-1.39l2.77-2.26l5.88,0.35l10.03,8.36l5.92-0.27l0.38,1.46L584,253.24L584,253.24z",name:"Saudi Arabia"},sy:{path:"M546.67,229.13l-0.35,2.54l2.82,1.18l-0.12,7.04l2.82-0.06l2.82-2.13l1.06-0.18l6.4-5.09l1.29-7.39l-12.79,1.3l-1.35,2.96L546.67,229.13L546.67,229.13z",name:"Syrian Arab Republic"},iq:{path:"M564.31,225.03l-1.56,7.71l-6.46,5.38l0.41,2.54l6.31,0.43l10.05,8.18l5.62-0.16l0.15-1.89l2.06-2.21l2.88,1.63l0.38-0.36l-5.57-7.41l-2.64-0.16l-3.51-4.51l0.7-3.32l1.07-0.14l0.37-1.47l-4.78-5.03L564.31,225.03L564.31,225.03z",name:"Iraq"},jo:{path:"M548.9,240.78l-2.46,8.58l-0.11,1.31h3.87l4.33-3.82l0.11-1.45l-1.77-1.81l3.17-2.63l-0.46-2.44l-0.87,0.2l-2.64,1.89L548.9,240.78L548.9,240.78z",name:"Jordan"},lb:{path:"M546.2,232.44l0.06,1.95l-0.82,2.96l2.82,0.24l0.18-4.2L546.2,232.44L546.2,232.44z",name:"Lebanon"},il:{path:"M545.32,238.06l-1.58,5.03l2.05,6.03l2.35-8.81v-1.89L545.32,238.06L545.32,238.06z",name:"Israel"},cy:{path:"M543.21,229.84l1.23,0.89l-3.81,3.61l-1.82-0.06l-1.35-0.95l0.18-1.77l2.76-0.18L543.21,229.84L543.21,229.84z",name:"Cyprus"},gb:{path:"M446.12,149.08l-1.83,2.77l0.73,1.11h4.22v1.85l-1.1,1.48l0.73,3.88l2.38,4.62l1.83,4.25l2.93,1.11l1.28,2.22l-0.18,2.03l-1.83,1.11l-0.18,0.92l1.28,0.74l-1.1,1.48l-2.57,1.11l-4.95-0.55l-7.71,3.51l-2.57-1.29l7.34-4.25l-0.92-0.55l-3.85-0.37l2.38-3.51l0.37-2.96l3.12-0.37l-0.55-5.73l-3.67-0.18l-1.1-1.29l0.18-4.25l-2.2,0.18l2.2-7.39l4.04-2.96L446.12,149.08L446.12,149.08M438.42,161.47l-3.3,0.37l-0.18,2.96l2.2,1.48l2.38-0.55l0.92-1.66L438.42,161.47L438.42,161.47z",name:"United Kingdom"},ie:{path:"M439.51,166.55l-0.91,6l-8.07,2.96h-2.57l-1.83-1.29v-1.11l4.04-2.59l-1.1-2.22l0.18-3.14l3.49,0.18l1.6-3.76l-0.21,3.34l2.71,2.15L439.51,166.55L439.51,166.55z",name:"Ireland"},se:{path:"M497.72,104.58l1.96,1.81h3.67l2.02,3.88l0.55,6.65l-4.95,3.51v3.51l-3.49,4.81l-2.02,0.18l-2.75,4.62l0.18,4.44l4.77,3.51l-0.37,2.03l-1.83,2.77l-2.75,2.4l0.18,7.95l-4.22,1.48l-1.47,3.14h-2.02l-1.1-5.54l-4.59-7.04l3.77-6.31l0.26-15.59l2.6-1.43l0.63-8.92l7.41-10.61L497.72,104.58L497.72,104.58M498.49,150.17l-2.11,1.67l1.06,2.45l1.87-1.82L498.49,150.17L498.49,150.17z",name:"Sweden"},fi:{path:"M506.79,116.94l2.07,0.91l1.28,2.4l-1.28,1.66l-6.42,7.02l-1.1,3.7l1.47,5.36l4.95,3.7l6.6-3.14l5.32-0.74l4.95-7.95l-3.67-8.69l-3.49-8.32l0.55-5.36l-2.2-0.37l-0.57-3.91l-2.96-4.83l-3.28,2.27l-1.29,5.27l-3.48-2.09l-4.84-1.18l-1.08,1.26l1.86,1.68l3.39-0.06l2.73,4.41L506.79,116.94L506.79,116.94z",name:"Finland"},lv:{path:"M518.07,151.37l-6.85-1.11l0.15,3.83l6.35,3.88l2.6-0.76l-0.15-2.92L518.07,151.37L518.07,151.37z",name:"Latvia"},lt:{path:"M510.81,154.7l-2.15-0.05l-2.95,2.82h-2.5l0.15,3.53l-1.5,2.77l5.4,0.05l1.55-0.2l1.55,1.87l3.55-0.15l3.4-4.33l-0.2-2.57L510.81,154.7L510.81,154.7z",name:"Lithuania"},by:{path:"M510.66,166.29l1.5,2.47l-0.6,1.97l0.1,1.56l0.55,1.87l3.1-1.76l3.85,0.1l2.7,1.11h6.85l2-4.79l1.2-1.81v-1.21l-4.3-6.05l-3.8-1.51l-3.1-0.35l-2.7,0.86l0.1,2.72l-3.75,4.74L510.66,166.29L510.66,166.29z",name:"Belarus"},pl:{path:"M511.46,174.76l0.85,1.56l0.2,1.66l-0.7,1.61l-1.6,3.08l-1.35,0.61l-1.75-0.76l-1.05,0.05l-2.55,0.96l-2.9-0.86l-4.7-3.33l-4.6-2.47l-1.85-2.82l-0.35-6.65l3.6-3.13l4.7-1.56l1.75-0.2l-0.7,1.41l0.45,0.55l7.91,0.15l1.7-0.05l2.8,4.29l-0.7,1.76l0.3,2.07L511.46,174.76L511.46,174.76z",name:"Poland"},it:{path:"M477.56,213.38l-2.65,1.34l0.35,5.17l2.12,0.36l1.59-1.52v-4.9L477.56,213.38L477.56,213.38M472.27,196.98l-0.62,1.57l0.17,1.71l2.39,2.79l3.76-0.13l8.3,9.64l5.18,1.5l3.06,2.89l0.73,6.59l1.64-0.96l1.42-3.59l-0.35-2.58l2.43-0.22l0.35-1.46l-6.85-3.28l-6.5-6.39l-2.59-3.82l-0.63-3.63l3.31-0.79l-0.85-2.39l-2.03-1.71l-1.75-0.08l-2.44,0.67l-2.3,3.22l-1.39,0.92l-2.15-1.32L472.27,196.98L472.27,196.98M492.44,223.02l-1.45-0.78l-4.95,0.78l0.17,1.34l4.45,2.24l0.67,0.73l1.17,0.17L492.44,223.02L492.44,223.02z",name:"Italy"},fr:{path:"M477.83,206.96l-1.95,1.96l-0.18,1.78l1.59,0.98l0.62-0.09l0.35-2.59L477.83,206.96L477.83,206.96M460.4,178.7l-2.21,0.54l-4.42,4.81l-1.33,0.09l-1.77-1.25l-1.15,0.27l-0.88,2.76l-6.46,0.18l0.18,1.43l4.42,2.94l5.13,4.1l-0.09,4.9l-2.74,4.81l5.93,2.85l6.02,0.18l1.86-2.14l3.8,0.09l1.06,0.98l3.8-0.27l1.95-2.5l-2.48-2.94l-0.18-1.87l0.53-2.05l-1.24-1.78l-2.12,0.62l-0.27-1.6l4.69-5.17v-3.12l-3.1-1.78l-1.59-0.27L460.4,178.7L460.4,178.7z",name:"France"},nl:{path:"M470.09,168.27l-4.53,2.23l0.96,0.87l0.1,2.23l-0.96-0.19l-1.06-1.65l-2.53,4.01l3.89,0.81l1.45,1.53l0.77,0.02l0.51-3.46l2.45-1.03L470.09,168.27L470.09,168.27z",name:"Netherlands"},be:{path:"M461.61,176.52l-0.64,1.6l6.88,4.54l1.98,0.47l0.07-2.15l-1.73-1.94h-1.06l-1.45-1.65L461.61,176.52L461.61,176.52z",name:"Belgium"},de:{path:"M471.14,167.88l3.57-0.58v-2.52l2.99-0.49l1.64,1.65l1.73,0.19l2.7-1.17l2.41,0.68l2.12,1.84l0.29,6.89l2.12,2.82l-2.79,0.39l-4.63,2.91l0.39,0.97l4.14,3.88l-0.29,1.94l-3.85,1.94l-3.57,0.1l-0.87,1.84h-1.83l-0.87-1.94l-3.18-0.78l-0.1-3.2l-2.7-1.84l0.29-2.33l-1.83-2.52l0.48-3.3l2.5-1.17L471.14,167.88L471.14,167.88z",name:"Germany"},dk:{path:"M476.77,151.5l-4.15,4.59l-0.15,2.99l1.89,4.93l2.96-0.56l-0.37-4.03l2.04-2.28l-0.04-1.79l-1.44-3.73L476.77,151.5L476.77,151.5M481.44,159.64l-0.93-0.04l-1.22,1.12l0.15,1.75l2.89,0.08l0.15-1.98L481.44,159.64L481.44,159.64z",name:"Denmark"},ch:{path:"M472.91,189.38l-4.36,4.64l0.09,0.47l1.79-0.56l1.61,2.24l2.72-0.96l1.88,1.46l0.77-0.44l2.32-3.64l-0.59-0.56l-2.29-0.06l-1.11-2.27L472.91,189.38L472.91,189.38z",name:"Switzerland"},cz:{path:"M488.43,184.87h2.97h1.46l2.37,1.69l4.39-3.65l-4.26-3.04l-4.22-2.04l-2.89,0.52l-3.92,2.52L488.43,184.87L488.43,184.87z",name:"Czech Republic"},sk:{path:"M495.84,187.13l0.69,0.61l0.09,1.04l7.63-0.17l5.64-2.43l-0.09-2.47l-1.08,0.48l-1.55-0.83l-0.95-0.04l-2.5,1l-3.4-0.82L495.84,187.13L495.84,187.13z",name:"Slovakia"},at:{path:"M480.63,190.12l-0.65,1.35l0.56,0.96l2.33-0.48h1.98l2.15,1.82l4.57-0.83l3.36-2l0.86-1.35l-0.13-1.74l-3.02-2.26l-4.05,0.04l-0.34,2.3l-4.26,2.08L480.63,190.12L480.63,190.12z",name:"Austria"},hu:{path:"M496.74,189.6l-1.16,1.82l0.09,2.78l1.85,0.95l5.69,0.17l7.93-6.68l0.04-1.48l-0.86-0.43l-5.73,2.6L496.74,189.6L496.74,189.6z",name:"Hungary"},si:{path:"M494.8,191.99l-2.54,1.52l-4.74,1.04l0.95,2.74l3.32,0.04l3.06-2.56L494.8,191.99L494.8,191.99z",name:"Slovenia"},hr:{path:"M495.62,195.16l-3.53,2.91h-3.58l-0.43,2.52l1.64,0.43l0.82-1.22l1.29,1.13l1.03,3.6l7.07,3.3l0.7-0.8l-7.17-7.4l0.73-1.35l6.81-0.26l0.69-2.17l-4.44,0.13L495.62,195.16L495.62,195.16z",name:"Croatia"},ba:{path:"M494.8,198.94l-0.37,0.61l6.71,6.92l2.46-3.62l-0.09-1.43l-2.15-2.61L494.8,198.94L494.8,198.94z",name:"Bosnia and Herzegovina"},mt:{path:"M492.61,230.47l-1.67,0.34l0.06,1.85l1.5,0.5l0.67-0.56L492.61,230.47L492.61,230.47z",name:"Malta"},ua:{path:"M515.57,173.15l-2.9,1.63l0.72,3.08l-2.68,5.65l0.02,2.49l1.26,0.8l8.08,0.4l2.26-1.87l2.42,0.81l3.47,4.63l-2.54,4.56l3.02,0.88l3.95-4.55l2.26,0.41l2.1,1.46l-1.85,2.44l2.5,3.9h2.66l1.37-2.6l2.82-0.57l0.08-2.11l-5.24-0.81l0.16-2.27h5.08l5.48-4.39l2.42-2.11l0.4-6.66l-10.8-0.97l-4.43-6.25l-3.06-1.05l-3.71,0.16l-1.67,4.13l-7.6,0.1l-2.47-1.14L515.57,173.15L515.57,173.15z",name:"Ukraine"},md:{path:"M520.75,187.71l3.1,4.77l-0.26,2.7l1.11,0.05l2.63-4.45l-3.16-3.92l-1.79-0.74L520.75,187.71L520.75,187.71z",name:"Moldova"},ro:{path:"M512.18,187.6l-0.26,1.48l-5.79,4.82l4.84,7.1l3.1,2.17h5.58l1.84-1.54l2.47-0.32l1.84,1.11l3.26-3.71l-0.63-1.86l-3.31-0.85l-2.26-0.11l0.11-3.18l-3-4.72L512.18,187.6L512.18,187.6z",name:"Romania"},rs:{path:"M505.55,194.54l-2.05,1.54h-1l-0.68,2.12l2.42,2.81l0.16,2.23l-3,4.24l0.42,1.27l1.74,0.32l1.37-1.86l0.74-0.05l1.26,1.22l3.84-1.17l-0.32-5.46L505.55,194.54L505.55,194.54z",name:"Serbia"},bg:{path:"M511.44,202.39l0.16,4.98l1.68,3.5l6.31,0.11l2.84-2.01l2.79-1.11l-0.68-3.18l0.63-1.7l-1.42-0.74l-1.95,0.16l-1.53,1.54l-6.42,0.05L511.44,202.39L511.44,202.39z",name:"Bulgaria"},al:{path:"M504.02,209.76v4.61l1.32,2.49l0.95-0.11l1.63-2.97l-0.95-1.33l-0.37-3.29l-1.26-1.17L504.02,209.76L504.02,209.76z",name:"Albania"},mk:{path:"M510.92,208.01l-3.37,1.11l0.16,2.86l0.79,1.01l4-1.86L510.92,208.01L510.92,208.01z",name:"Macedonia"},gr:{path:"M506.71,217.6l-0.11,1.33l4.63,2.33l2.21,0.85l-1.16,1.22l-2.58,0.26l-0.37,1.17l0.89,2.01l2.89,1.54l1.26,0.11l0.16-3.45l1.89-2.28l-5.16-6.1l0.68-2.07l1.21-0.05l1.84,1.48l1.16-0.58l0.37-2.07l5.42,0.05l0.21-3.18l-2.26,1.59l-6.63-0.16l-4.31,2.23L506.71,217.6L506.71,217.6M516.76,230.59l1.63,0.05l0.68,1.01h2.37l1.58-0.58l0.53,0.64l-1.05,1.38l-4.63,0.16l-0.84-1.11l-0.89-0.53L516.76,230.59L516.76,230.59z",name:"Greece"}}}); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/js/Chart.bundle.min.js b/wp-content/plugins/wp-statistics/assets/js/Chart.bundle.min.js new file mode 100644 index 0000000..59afc3f --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/js/Chart.bundle.min.js @@ -0,0 +1,10 @@ +/*! + * Chart.js + * http://chartjs.org/ + * Version: 2.7.3 + * + * Copyright 2018 Chart.js Contributors + * Released under the MIT license + * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function r(o,s,l){function u(e,t){if(!s[e]){if(!o[e]){var n="function"==typeof require&&require;if(!t&&n)return n(e,!0);if(d)return d(e,!0);var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}var a=s[e]={exports:{}};o[e][0].call(a.exports,function(t){return u(o[e][1][t]||t)},a,a.exports,r,o,s,l)}return s[e].exports}for(var d="function"==typeof require&&require,t=0;t<l.length;t++)u(l[t]);return u}({1:[function(t,e,n){var r=t(5);function i(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3})$/i);if(i){i=i[1];for(var a=0;a<e.length;a++)e[a]=parseInt(i[a]+i[a],16)}else if(i=t.match(/^#([a-fA-F0-9]{6})$/i)){i=i[1];for(a=0;a<e.length;a++)e[a]=parseInt(i.slice(2*a,2*a+2),16)}else if(i=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=parseInt(i[a+1]);n=parseFloat(i[4])}else if(i=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=Math.round(2.55*parseFloat(i[a+1]));n=parseFloat(i[4])}else if(i=t.match(/(\w+)/)){if("transparent"==i[1])return[0,0,0,0];if(!(e=r[i[1]]))return}for(a=0;a<e.length;a++)e[a]=d(e[a],0,255);return n=n||0==n?d(n,0,1):1,e[3]=n,e}}function a(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(n)?1:n,0,1)]}}}function o(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(n)?1:n,0,1)]}}}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function l(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function u(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function d(t,e,n){return Math.min(Math.max(e,t),n)}function h(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}e.exports={getRgba:i,getHsla:a,getRgb:function(t){var e=i(t);return e&&e.slice(0,3)},getHsl:function(t){var e=a(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=i(t);{if(e)return e[3];if(e=a(t))return e[3];if(e=o(t))return e[3]}},hexString:function(t){return"#"+h(t[0])+h(t[1])+h(t[2])},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return s(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:s,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return l(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"},percentaString:l,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return u(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:u,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return c[t.slice(0,3)]}};var c={};for(var f in r)c[r[f]]=f},{5:5}],2:[function(t,e,n){var d=t(4),i=t(1),o=function(t){return t instanceof o?t:this instanceof o?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=i.getRgba(t))?this.setValues("rgb",e):(e=i.getHsla(t))?this.setValues("hsl",e):(e=i.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new o(t);var e};o.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return i.hexString(this.values.rgb)},rgbString:function(){return i.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return i.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return i.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return i.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return i.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return i.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return i.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var i=t[n]/255;e[n]=i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return n<e?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return 7.1<=e?"AAA":4.5<=e?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=this,i=t,a=void 0===e?.5:e,r=2*a-1,o=n.alpha()-i.alpha(),s=((r*o==-1?r:(r+o)/(1+r*o))+1)/2,l=1-s;return this.rgb(s*n.red()+l*i.red(),s*n.green()+l*i.green(),s*n.blue()+l*i.blue()).alpha(n.alpha()*a+i.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new o,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i<t.length;i++)n[t.charAt(i)]=e[t][i];return 1!==e.alpha&&(n.a=e.alpha),n},o.prototype.setValues=function(t,e){var n,i,a=this.values,r=this.spaces,o=this.maxes,s=1;if(this.valid=!0,"alpha"===t)s=e;else if(e.length)a[t]=e.slice(0,t.length),s=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)a[t][n]=e[t.charAt(n)];s=e.a}else if(void 0!==e[r[t][0]]){var l=r[t];for(n=0;n<t.length;n++)a[t][n]=e[l[n]];s=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===s?a.alpha:s)),"alpha"===t)return!1;for(n=0;n<t.length;n++)i=Math.max(0,Math.min(o[t][n],a[t][n])),a[t][n]=Math.round(i);for(var u in r)u!==t&&(a[u]=d[t][u](a[t]));return!0},o.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},o.prototype.setChannel=function(t,e,n){var i=this.values[t];return void 0===n?i[e]:(n===i[e]||(i[e]=n,this.setValues(t,i)),this)},"undefined"!=typeof window&&(window.Color=o),e.exports=o},{1:1,4:4}],3:[function(t,e,n){function a(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s==o?e=0:i==s?e=(a-r)/l:a==s?e=2+(r-i)/l:r==s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s==o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]}function i(t){var e,n,i=t[0],a=t[1],r=t[2],o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return n=0==s?0:l/s*1e3/10,s==o?e=0:i==s?e=(a-r)/l:a==s?e=2+(r-i)/l:r==s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,s/255*1e3/10]}function o(t){var e=t[0],n=t[1],i=t[2];return[a(t)[0],100*(1/255*Math.min(e,Math.min(n,i))),100*(i=1-1/255*Math.max(e,Math.max(n,i)))]}function s(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function l(t){return S[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,i=t[2]/255;return[100*(.4124*(e=.04045<e?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=.04045<n?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=.04045<i?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]}function d(t){var e=u(t),n=e[0],i=e[1],a=e[2];return i/=100,a/=108.883,n=.008856<(n/=95.047)?Math.pow(n,1/3):7.787*n+16/116,[116*(i=.008856<i?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(a=.008856<a?Math.pow(a,1/3):7.787*a+16/116))]}function h(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,1<i&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a}function c(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));i*=255;switch(a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}}function f(t){var e,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(1<u&&(s/=u,l/=u),i=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(i=1-i),a=s+i*((n=1-l)-s),e){default:case 6:case 0:r=n,g=a,b=s;break;case 1:r=a,g=n,b=s;break;case 2:r=s,g=n,b=a;break;case 3:r=s,g=a,b=n;break;case 4:r=a,g=s,b=n;break;case 5:r=n,g=s,b=a}return[255*r,255*g,255*b]}function m(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]}function p(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=.0031308<(e=3.2406*a+-1.5372*r+-.4986*o)?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=.0031308<n?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,i=.0031308<i?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]}function v(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=.008856<(e/=95.047)?Math.pow(e,1/3):7.787*e+16/116,[116*(n=.008856<n?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=.008856<i?Math.pow(i,1/3):7.787*i+16/116))]}function y(t){var e,n,i,a,r=t[0],o=t[1],s=t[2];return a=r<=8?(n=100*r/903.3)/100*7.787+16/116:(n=100*Math.pow((r+16)/116,3),Math.pow(n/100,1/3)),[e=e/95.047<=.008856?e=95.047*(o/500+a-16/116)/7.787:95.047*Math.pow(o/500+a,3),n,i=i/108.883<=.008859?i=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]}function _(t){return p(y(t))}function k(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]}function w(t){return M[t]}e.exports={rgb2hsl:a,rgb2hsv:i,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:h,hsl2hsv:function(t){var e=t[0],n=t[1]/100,i=t[2]/100;return 0!==i?[e,100*(2*(n*=(i*=2)<=1?i:2-i)/(i+n)),100*((i+n)/2)]:[0,0,0]},hsl2hwb:function(t){return o(h(t))},hsl2cmyk:function(t){return s(h(t))},hsl2keyword:function(t){return l(h(t))},hsv2rgb:c,hsv2hsl:function(t){var e,n,i=t[0],a=t[1]/100,r=t[2]/100;return e=a*r,[i,100*(e=(e/=(n=(2-a)*r)<=1?n:2-n)||0),100*(n/=2)]},hsv2hwb:function(t){return o(c(t))},hsv2cmyk:function(t){return s(c(t))},hsv2keyword:function(t){return l(c(t))},hwb2rgb:f,hwb2hsl:function(t){return a(f(t))},hwb2hsv:function(t){return i(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return l(f(t))},cmyk2rgb:m,cmyk2hsl:function(t){return a(m(t))},cmyk2hsv:function(t){return i(m(t))},cmyk2hwb:function(t){return o(m(t))},cmyk2keyword:function(t){return l(m(t))},keyword2rgb:w,keyword2hsl:function(t){return a(w(t))},keyword2hsv:function(t){return i(w(t))},keyword2hwb:function(t){return o(w(t))},keyword2cmyk:function(t){return s(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return u(w(t))},xyz2rgb:p,xyz2lab:v,xyz2lch:function(t){return x(v(t))},lab2xyz:y,lab2rgb:_,lab2lch:x,lch2lab:k,lch2xyz:function(t){return y(k(t))},lch2rgb:function(t){return _(k(t))}};var M={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},S={};for(var D in M)S[JSON.stringify(M[D])]=D},{}],4:[function(t,e,n){var a=t(3),r=function(){return new u};for(var i in a){r[i+"Raw"]=function(e){return function(t){return"number"==typeof t&&(t=Array.prototype.slice.call(arguments)),a[e](t)}}(i);var o=/(\w+)2(\w+)/.exec(i),s=o[1],l=o[2];(r[s]=r[s]||{})[l]=r[i]=function(i){return function(t){"number"==typeof t&&(t=Array.prototype.slice.call(arguments));var e=a[i](t);if("string"==typeof e||void 0===e)return e;for(var n=0;n<e.length;n++)e[n]=Math.round(e[n]);return e}}(i)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space,i=this.convs[n];e=r[n][t](i),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(e){u.prototype[e]=function(t){return this.routeSpace(e,arguments)}}),e.exports=r},{3:3}],5:[function(t,e,n){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],6:[function(En,jn,t){var e,n;e=this,n=function(){"use strict";var t,a;function c(){return t.apply(null,arguments)}function s(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function l(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function u(t){return void 0===t}function d(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function h(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function f(t,e){var n,i=[];for(n=0;n<t.length;++n)i.push(e(t[n],n));return i}function g(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function m(t,e){for(var n in e)g(e,n)&&(t[n]=e[n]);return g(e,"toString")&&(t.toString=e.toString),g(e,"valueOf")&&(t.valueOf=e.valueOf),t}function p(t,e,n,i){return De(t,e,n,i,!0).utc()}function v(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function b(t){if(null==t._isValid){var e=v(t),n=a.call(e.parsedDateParts,function(t){return null!=t}),i=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(i=i&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return i;t._isValid=i}return t._isValid}function y(t){var e=p(NaN);return null!=t?m(v(e),t):v(e).userInvalidated=!0,e}a=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,i=0;i<n;i++)if(i in e&&t.call(this,e[i],i,e))return!0;return!1};var r=c.momentProperties=[];function x(t,e){var n,i,a;if(u(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),u(e._i)||(t._i=e._i),u(e._f)||(t._f=e._f),u(e._l)||(t._l=e._l),u(e._strict)||(t._strict=e._strict),u(e._tzm)||(t._tzm=e._tzm),u(e._isUTC)||(t._isUTC=e._isUTC),u(e._offset)||(t._offset=e._offset),u(e._pf)||(t._pf=v(e)),u(e._locale)||(t._locale=e._locale),0<r.length)for(n=0;n<r.length;n++)u(a=e[i=r[n]])||(t[i]=a);return t}var e=!1;function _(t){x(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===e&&(e=!0,c.updateOffset(this),e=!1)}function k(t){return t instanceof _||null!=t&&null!=t._isAMomentObject}function w(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function M(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=w(e)),n}function o(t,e,n){var i,a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length),o=0;for(i=0;i<a;i++)(n&&t[i]!==e[i]||!n&&M(t[i])!==M(e[i]))&&o++;return o+r}function S(t){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function n(a,r){var o=!0;return m(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,a),o){for(var t,e=[],n=0;n<arguments.length;n++){if(t="","object"==typeof arguments[n]){for(var i in t+="\n["+n+"] ",arguments[0])t+=i+": "+arguments[0][i]+", ";t=t.slice(0,-2)}else t=arguments[n];e.push(t)}S(a+"\nArguments: "+Array.prototype.slice.call(e).join("")+"\n"+(new Error).stack),o=!1}return r.apply(this,arguments)},r)}var i,D={};function C(t,e){null!=c.deprecationHandler&&c.deprecationHandler(t,e),D[t]||(S(e),D[t]=!0)}function P(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function T(t,e){var n,i=m({},t);for(n in e)g(e,n)&&(l(t[n])&&l(e[n])?(i[n]={},m(i[n],t[n]),m(i[n],e[n])):null!=e[n]?i[n]=e[n]:delete i[n]);for(n in t)g(t,n)&&!g(e,n)&&l(t[n])&&(i[n]=m({},i[n]));return i}function O(t){null!=t&&this.set(t)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,i=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)g(t,e)&&n.push(e);return n};var I={};function A(t,e){var n=t.toLowerCase();I[n]=I[n+"s"]=I[e]=t}function F(t){return"string"==typeof t?I[t]||I[t.toLowerCase()]:void 0}function R(t){var e,n,i={};for(n in t)g(t,n)&&(e=F(n))&&(i[e]=t[n]);return i}var L={};function Y(t,e){L[t]=e}function W(t,e,n){var i=""+Math.abs(t),a=e-i.length;return(0<=t?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+i}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,z=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},H={};function B(t,e,n,i){var a=i;"string"==typeof i&&(a=function(){return this[i]()}),t&&(H[t]=a),e&&(H[e[0]]=function(){return W(a.apply(this,arguments),e[1],e[2])}),n&&(H[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function E(t,e){return t.isValid()?(e=j(e,t.localeData()),V[e]=V[e]||function(i){var t,a,e,r=i.match(N);for(t=0,a=r.length;t<a;t++)H[r[t]]?r[t]=H[r[t]]:r[t]=(e=r[t]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(t){var e,n="";for(e=0;e<a;e++)n+=P(r[e])?r[e].call(t,i):r[e];return n}}(e),V[e](t)):t.localeData().invalidDate()}function j(t,e){var n=5;function i(t){return e.longDateFormat(t)||t}for(z.lastIndex=0;0<=n&&z.test(t);)t=t.replace(z,i),z.lastIndex=0,n-=1;return t}var U=/\d/,G=/\d\d/,q=/\d{3}/,Z=/\d{4}/,X=/[+-]?\d{6}/,J=/\d\d?/,$=/\d\d\d\d?/,K=/\d\d\d\d\d\d?/,Q=/\d{1,3}/,tt=/\d{1,4}/,et=/[+-]?\d{1,6}/,nt=/\d+/,it=/[+-]?\d+/,at=/Z|[+-]\d\d:?\d\d/gi,rt=/Z|[+-]\d\d(?::?\d\d)?/gi,ot=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,st={};function lt(t,n,i){st[t]=P(n)?n:function(t,e){return t&&i?i:n}}function ut(t,e){return g(st,t)?st[t](e._strict,e._locale):new RegExp(dt(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,i,a){return e||n||i||a})))}function dt(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ht={};function ct(t,n){var e,i=n;for("string"==typeof t&&(t=[t]),d(n)&&(i=function(t,e){e[n]=M(t)}),e=0;e<t.length;e++)ht[t[e]]=i}function ft(t,a){ct(t,function(t,e,n,i){n._w=n._w||{},a(t,n._w,n,i)})}var gt=0,mt=1,pt=2,vt=3,bt=4,yt=5,xt=6,_t=7,kt=8;function wt(t){return Mt(t)?366:365}function Mt(t){return t%4==0&&t%100!=0||t%400==0}B("Y",0,0,function(){var t=this.year();return t<=9999?""+t:"+"+t}),B(0,["YY",2],0,function(){return this.year()%100}),B(0,["YYYY",4],0,"year"),B(0,["YYYYY",5],0,"year"),B(0,["YYYYYY",6,!0],0,"year"),A("year","y"),Y("year",1),lt("Y",it),lt("YY",J,G),lt("YYYY",tt,Z),lt("YYYYY",et,X),lt("YYYYYY",et,X),ct(["YYYYY","YYYYYY"],gt),ct("YYYY",function(t,e){e[gt]=2===t.length?c.parseTwoDigitYear(t):M(t)}),ct("YY",function(t,e){e[gt]=c.parseTwoDigitYear(t)}),ct("Y",function(t,e){e[gt]=parseInt(t,10)}),c.parseTwoDigitYear=function(t){return M(t)+(68<M(t)?1900:2e3)};var St,Dt=Ct("FullYear",!0);function Ct(e,n){return function(t){return null!=t?(Tt(this,e,t),c.updateOffset(this,n),this):Pt(this,e)}}function Pt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Tt(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&Mt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),Ot(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function Ot(t,e){if(isNaN(t)||isNaN(e))return NaN;var n,i=(e%(n=12)+n)%n;return t+=(e-i)/12,1===i?Mt(t)?29:28:31-i%7%2}St=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},B("M",["MM",2],"Mo",function(){return this.month()+1}),B("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),B("MMMM",0,0,function(t){return this.localeData().months(this,t)}),A("month","M"),Y("month",8),lt("M",J),lt("MM",J,G),lt("MMM",function(t,e){return e.monthsShortRegex(t)}),lt("MMMM",function(t,e){return e.monthsRegex(t)}),ct(["M","MM"],function(t,e){e[mt]=M(t)-1}),ct(["MMM","MMMM"],function(t,e,n,i){var a=n._locale.monthsParse(t,i,n._strict);null!=a?e[mt]=a:v(n).invalidMonth=t});var It=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,At="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Ft="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Rt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=M(e);else if(!d(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),Ot(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Lt(t){return null!=t?(Rt(this,t),c.updateOffset(this,!0),this):Pt(this,"Month")}var Yt=ot;var Wt=ot;function Nt(){function t(t,e){return e.length-t.length}var e,n,i=[],a=[],r=[];for(e=0;e<12;e++)n=p([2e3,e]),i.push(this.monthsShort(n,"")),a.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(i.sort(t),a.sort(t),r.sort(t),e=0;e<12;e++)i[e]=dt(i[e]),a[e]=dt(a[e]);for(e=0;e<24;e++)r[e]=dt(r[e]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+i.join("|")+")","i")}function zt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&0<=t&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function Vt(t,e,n){var i=7+e-n;return-((7+zt(t,0,i).getUTCDay()-e)%7)+i-1}function Ht(t,e,n,i,a){var r,o,s=1+7*(e-1)+(7+n-i)%7+Vt(t,i,a);return o=s<=0?wt(r=t-1)+s:s>wt(t)?(r=t+1,s-wt(t)):(r=t,s),{year:r,dayOfYear:o}}function Bt(t,e,n){var i,a,r=Vt(t.year(),e,n),o=Math.floor((t.dayOfYear()-r-1)/7)+1;return o<1?i=o+Et(a=t.year()-1,e,n):o>Et(t.year(),e,n)?(i=o-Et(t.year(),e,n),a=t.year()+1):(a=t.year(),i=o),{week:i,year:a}}function Et(t,e,n){var i=Vt(t,e,n),a=Vt(t+1,e,n);return(wt(t)-i+a)/7}B("w",["ww",2],"wo","week"),B("W",["WW",2],"Wo","isoWeek"),A("week","w"),A("isoWeek","W"),Y("week",5),Y("isoWeek",5),lt("w",J),lt("ww",J,G),lt("W",J),lt("WW",J,G),ft(["w","ww","W","WW"],function(t,e,n,i){e[i.substr(0,1)]=M(t)});B("d",0,"do","day"),B("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),B("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),B("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),B("e",0,0,"weekday"),B("E",0,0,"isoWeekday"),A("day","d"),A("weekday","e"),A("isoWeekday","E"),Y("day",11),Y("weekday",11),Y("isoWeekday",11),lt("d",J),lt("e",J),lt("E",J),lt("dd",function(t,e){return e.weekdaysMinRegex(t)}),lt("ddd",function(t,e){return e.weekdaysShortRegex(t)}),lt("dddd",function(t,e){return e.weekdaysRegex(t)}),ft(["dd","ddd","dddd"],function(t,e,n,i){var a=n._locale.weekdaysParse(t,i,n._strict);null!=a?e.d=a:v(n).invalidWeekday=t}),ft(["d","e","E"],function(t,e,n,i){e[i]=M(t)});var jt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ut="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var Gt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var qt=ot;var Zt=ot;var Xt=ot;function Jt(){function t(t,e){return e.length-t.length}var e,n,i,a,r,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)n=p([2e3,1]).day(e),i=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),r=this.weekdays(n,""),o.push(i),s.push(a),l.push(r),u.push(i),u.push(a),u.push(r);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=dt(s[e]),l[e]=dt(l[e]),u[e]=dt(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function $t(){return this.hours()%12||12}function Kt(t,e){B(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Qt(t,e){return e._meridiemParse}B("H",["HH",2],0,"hour"),B("h",["hh",2],0,$t),B("k",["kk",2],0,function(){return this.hours()||24}),B("hmm",0,0,function(){return""+$t.apply(this)+W(this.minutes(),2)}),B("hmmss",0,0,function(){return""+$t.apply(this)+W(this.minutes(),2)+W(this.seconds(),2)}),B("Hmm",0,0,function(){return""+this.hours()+W(this.minutes(),2)}),B("Hmmss",0,0,function(){return""+this.hours()+W(this.minutes(),2)+W(this.seconds(),2)}),Kt("a",!0),Kt("A",!1),A("hour","h"),Y("hour",13),lt("a",Qt),lt("A",Qt),lt("H",J),lt("h",J),lt("k",J),lt("HH",J,G),lt("hh",J,G),lt("kk",J,G),lt("hmm",$),lt("hmmss",K),lt("Hmm",$),lt("Hmmss",K),ct(["H","HH"],vt),ct(["k","kk"],function(t,e,n){var i=M(t);e[vt]=24===i?0:i}),ct(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),ct(["h","hh"],function(t,e,n){e[vt]=M(t),v(n).bigHour=!0}),ct("hmm",function(t,e,n){var i=t.length-2;e[vt]=M(t.substr(0,i)),e[bt]=M(t.substr(i)),v(n).bigHour=!0}),ct("hmmss",function(t,e,n){var i=t.length-4,a=t.length-2;e[vt]=M(t.substr(0,i)),e[bt]=M(t.substr(i,2)),e[yt]=M(t.substr(a)),v(n).bigHour=!0}),ct("Hmm",function(t,e,n){var i=t.length-2;e[vt]=M(t.substr(0,i)),e[bt]=M(t.substr(i))}),ct("Hmmss",function(t,e,n){var i=t.length-4,a=t.length-2;e[vt]=M(t.substr(0,i)),e[bt]=M(t.substr(i,2)),e[yt]=M(t.substr(a))});var te,ee=Ct("Hours",!0),ne={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:At,monthsShort:Ft,week:{dow:0,doy:6},weekdays:jt,weekdaysMin:Gt,weekdaysShort:Ut,meridiemParse:/[ap]\.?m?\.?/i},ie={},ae={};function re(t){return t?t.toLowerCase().replace("_","-"):t}function oe(t){var e=null;if(!ie[t]&&void 0!==jn&&jn&&jn.exports)try{e=te._abbr,En("./locale/"+t),se(e)}catch(t){}return ie[t]}function se(t,e){var n;return t&&((n=u(e)?ue(t):le(t,e))?te=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),te._abbr}function le(t,e){if(null===e)return delete ie[t],null;var n,i=ne;if(e.abbr=t,null!=ie[t])C("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=ie[t]._config;else if(null!=e.parentLocale)if(null!=ie[e.parentLocale])i=ie[e.parentLocale]._config;else{if(null==(n=oe(e.parentLocale)))return ae[e.parentLocale]||(ae[e.parentLocale]=[]),ae[e.parentLocale].push({name:t,config:e}),null;i=n._config}return ie[t]=new O(T(i,e)),ae[t]&&ae[t].forEach(function(t){le(t.name,t.config)}),se(t),ie[t]}function ue(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return te;if(!s(t)){if(e=oe(t))return e;t=[t]}return function(t){for(var e,n,i,a,r=0;r<t.length;){for(e=(a=re(t[r]).split("-")).length,n=(n=re(t[r+1]))?n.split("-"):null;0<e;){if(i=oe(a.slice(0,e).join("-")))return i;if(n&&n.length>=e&&o(a,n,!0)>=e-1)break;e--}r++}return te}(t)}function de(t){var e,n=t._a;return n&&-2===v(t).overflow&&(e=n[mt]<0||11<n[mt]?mt:n[pt]<1||n[pt]>Ot(n[gt],n[mt])?pt:n[vt]<0||24<n[vt]||24===n[vt]&&(0!==n[bt]||0!==n[yt]||0!==n[xt])?vt:n[bt]<0||59<n[bt]?bt:n[yt]<0||59<n[yt]?yt:n[xt]<0||999<n[xt]?xt:-1,v(t)._overflowDayOfYear&&(e<gt||pt<e)&&(e=pt),v(t)._overflowWeeks&&-1===e&&(e=_t),v(t)._overflowWeekday&&-1===e&&(e=kt),v(t).overflow=e),t}function he(t,e,n){return null!=t?t:null!=e?e:n}function ce(t){var e,n,i,a,r,o=[];if(!t._d){var s,l;for(s=t,l=new Date(c.now()),i=s._useUTC?[l.getUTCFullYear(),l.getUTCMonth(),l.getUTCDate()]:[l.getFullYear(),l.getMonth(),l.getDate()],t._w&&null==t._a[pt]&&null==t._a[mt]&&function(t){var e,n,i,a,r,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)r=1,o=4,n=he(e.GG,t._a[gt],Bt(Ce(),1,4).year),i=he(e.W,1),((a=he(e.E,1))<1||7<a)&&(l=!0);else{r=t._locale._week.dow,o=t._locale._week.doy;var u=Bt(Ce(),r,o);n=he(e.gg,t._a[gt],u.year),i=he(e.w,u.week),null!=e.d?((a=e.d)<0||6<a)&&(l=!0):null!=e.e?(a=e.e+r,(e.e<0||6<e.e)&&(l=!0)):a=r}i<1||i>Et(n,r,o)?v(t)._overflowWeeks=!0:null!=l?v(t)._overflowWeekday=!0:(s=Ht(n,i,a,r,o),t._a[gt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(r=he(t._a[gt],i[gt]),(t._dayOfYear>wt(r)||0===t._dayOfYear)&&(v(t)._overflowDayOfYear=!0),n=zt(r,0,t._dayOfYear),t._a[mt]=n.getUTCMonth(),t._a[pt]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=o[e]=i[e];for(;e<7;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[vt]&&0===t._a[bt]&&0===t._a[yt]&&0===t._a[xt]&&(t._nextDay=!0,t._a[vt]=0),t._d=(t._useUTC?zt:function(t,e,n,i,a,r,o){var s=new Date(t,e,n,i,a,r,o);return t<100&&0<=t&&isFinite(s.getFullYear())&&s.setFullYear(t),s}).apply(null,o),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[vt]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(v(t).weekdayMismatch=!0)}}var fe=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ge=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,me=/Z|[+-]\d\d(?::?\d\d)?/,pe=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],ve=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],be=/^\/?Date\((\-?\d+)/i;function ye(t){var e,n,i,a,r,o,s=t._i,l=fe.exec(s)||ge.exec(s);if(l){for(v(t).iso=!0,e=0,n=pe.length;e<n;e++)if(pe[e][1].exec(l[1])){a=pe[e][0],i=!1!==pe[e][2];break}if(null==a)return void(t._isValid=!1);if(l[3]){for(e=0,n=ve.length;e<n;e++)if(ve[e][1].exec(l[3])){r=(l[2]||" ")+ve[e][0];break}if(null==r)return void(t._isValid=!1)}if(!i&&null!=r)return void(t._isValid=!1);if(l[4]){if(!me.exec(l[4]))return void(t._isValid=!1);o="Z"}t._f=a+(r||"")+(o||""),Me(t)}else t._isValid=!1}var xe=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function _e(t,e,n,i,a,r){var o=[function(t){var e=parseInt(t,10);{if(e<=49)return 2e3+e;if(e<=999)return 1900+e}return e}(t),Ft.indexOf(e),parseInt(n,10),parseInt(i,10),parseInt(a,10)];return r&&o.push(parseInt(r,10)),o}var ke={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function we(t){var e,n,i,a=xe.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(a){var r=_e(a[4],a[3],a[2],a[5],a[6],a[7]);if(e=a[1],n=r,i=t,e&&Ut.indexOf(e)!==new Date(n[0],n[1],n[2]).getDay()&&(v(i).weekdayMismatch=!0,!(i._isValid=!1)))return;t._a=r,t._tzm=function(t,e,n){if(t)return ke[t];if(e)return 0;var i=parseInt(n,10),a=i%100;return(i-a)/100*60+a}(a[8],a[9],a[10]),t._d=zt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),v(t).rfc2822=!0}else t._isValid=!1}function Me(t){if(t._f!==c.ISO_8601)if(t._f!==c.RFC_2822){t._a=[],v(t).empty=!0;var e,n,i,a,r,o,s,l,u=""+t._i,d=u.length,h=0;for(i=j(t._f,t._locale).match(N)||[],e=0;e<i.length;e++)a=i[e],(n=(u.match(ut(a,t))||[])[0])&&(0<(r=u.substr(0,u.indexOf(n))).length&&v(t).unusedInput.push(r),u=u.slice(u.indexOf(n)+n.length),h+=n.length),H[a]?(n?v(t).empty=!1:v(t).unusedTokens.push(a),o=a,l=t,null!=(s=n)&&g(ht,o)&&ht[o](s,l._a,l,o)):t._strict&&!n&&v(t).unusedTokens.push(a);v(t).charsLeftOver=d-h,0<u.length&&v(t).unusedInput.push(u),t._a[vt]<=12&&!0===v(t).bigHour&&0<t._a[vt]&&(v(t).bigHour=void 0),v(t).parsedDateParts=t._a.slice(0),v(t).meridiem=t._meridiem,t._a[vt]=function(t,e,n){var i;if(null==n)return e;return null!=t.meridiemHour?t.meridiemHour(e,n):(null!=t.isPM&&((i=t.isPM(n))&&e<12&&(e+=12),i||12!==e||(e=0)),e)}(t._locale,t._a[vt],t._meridiem),ce(t),de(t)}else we(t);else ye(t)}function Se(t){var e,n,i,a,r=t._i,o=t._f;return t._locale=t._locale||ue(t._l),null===r||void 0===o&&""===r?y({nullInput:!0}):("string"==typeof r&&(t._i=r=t._locale.preparse(r)),k(r)?new _(de(r)):(h(r)?t._d=r:s(o)?function(t){var e,n,i,a,r;if(0===t._f.length)return v(t).invalidFormat=!0,t._d=new Date(NaN);for(a=0;a<t._f.length;a++)r=0,e=x({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[a],Me(e),b(e)&&(r+=v(e).charsLeftOver,r+=10*v(e).unusedTokens.length,v(e).score=r,(null==i||r<i)&&(i=r,n=e));m(t,n||e)}(t):o?Me(t):u(n=(e=t)._i)?e._d=new Date(c.now()):h(n)?e._d=new Date(n.valueOf()):"string"==typeof n?(i=e,null===(a=be.exec(i._i))?(ye(i),!1===i._isValid&&(delete i._isValid,we(i),!1===i._isValid&&(delete i._isValid,c.createFromInputFallback(i)))):i._d=new Date(+a[1])):s(n)?(e._a=f(n.slice(0),function(t){return parseInt(t,10)}),ce(e)):l(n)?function(t){if(!t._d){var e=R(t._i);t._a=f([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),ce(t)}}(e):d(n)?e._d=new Date(n):c.createFromInputFallback(e),b(t)||(t._d=null),t))}function De(t,e,n,i,a){var r,o={};return!0!==n&&!1!==n||(i=n,n=void 0),(l(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||s(t)&&0===t.length)&&(t=void 0),o._isAMomentObject=!0,o._useUTC=o._isUTC=a,o._l=n,o._i=t,o._f=e,o._strict=i,(r=new _(de(Se(o))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Ce(t,e,n,i){return De(t,e,n,i,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var Pe=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=Ce.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:y()}),Te=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=Ce.apply(null,arguments);return this.isValid()&&t.isValid()?this<t?this:t:y()});function Oe(t,e){var n,i;if(1===e.length&&s(e[0])&&(e=e[0]),!e.length)return Ce();for(n=e[0],i=1;i<e.length;++i)e[i].isValid()&&!e[i][t](n)||(n=e[i]);return n}var Ie=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ae(t){var e=R(t),n=e.year||0,i=e.quarter||0,a=e.month||0,r=e.week||0,o=e.day||0,s=e.hour||0,l=e.minute||0,u=e.second||0,d=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===St.call(Ie,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,i=0;i<Ie.length;++i)if(t[Ie[i]]){if(n)return!1;parseFloat(t[Ie[i]])!==M(t[Ie[i]])&&(n=!0)}return!0}(e),this._milliseconds=+d+1e3*u+6e4*l+1e3*s*60*60,this._days=+o+7*r,this._months=+a+3*i+12*n,this._data={},this._locale=ue(),this._bubble()}function Fe(t){return t instanceof Ae}function Re(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Le(t,n){B(t,0,0,function(){var t=this.utcOffset(),e="+";return t<0&&(t=-t,e="-"),e+W(~~(t/60),2)+n+W(~~t%60,2)})}Le("Z",":"),Le("ZZ",""),lt("Z",rt),lt("ZZ",rt),ct(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=We(rt,t)});var Ye=/([\+\-]|\d\d)/gi;function We(t,e){var n=(e||"").match(t);if(null===n)return null;var i=((n[n.length-1]||[])+"").match(Ye)||["-",0,0],a=60*i[1]+M(i[2]);return 0===a?0:"+"===i[0]?a:-a}function Ne(t,e){var n,i;return e._isUTC?(n=e.clone(),i=(k(t)||h(t)?t.valueOf():Ce(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),c.updateOffset(n,!1),n):Ce(t).local()}function ze(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ve(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var He=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Be=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ee(t,e){var n,i,a,r=t,o=null;return Fe(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:d(t)?(r={},e?r[e]=t:r.milliseconds=t):(o=He.exec(t))?(n="-"===o[1]?-1:1,r={y:0,d:M(o[pt])*n,h:M(o[vt])*n,m:M(o[bt])*n,s:M(o[yt])*n,ms:M(Re(1e3*o[xt]))*n}):(o=Be.exec(t))?(n="-"===o[1]?-1:(o[1],1),r={y:je(o[2],n),M:je(o[3],n),w:je(o[4],n),d:je(o[5],n),h:je(o[6],n),m:je(o[7],n),s:je(o[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(a=function(t,e){var n;if(!t.isValid()||!e.isValid())return{milliseconds:0,months:0};e=Ne(e,t),t.isBefore(e)?n=Ue(t,e):((n=Ue(e,t)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Ce(r.from),Ce(r.to)),(r={}).ms=a.milliseconds,r.M=a.months),i=new Ae(r),Fe(t)&&g(t,"_locale")&&(i._locale=t._locale),i}function je(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Ue(t,e){var n={milliseconds:0,months:0};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Ge(i,a){return function(t,e){var n;return null===e||isNaN(+e)||(C(a,"moment()."+a+"(period, number) is deprecated. Please use moment()."+a+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=t,t=e,e=n),qe(this,Ee(t="string"==typeof t?+t:t,e),i),this}}function qe(t,e,n,i){var a=e._milliseconds,r=Re(e._days),o=Re(e._months);t.isValid()&&(i=null==i||i,o&&Rt(t,Pt(t,"Month")+o*n),r&&Tt(t,"Date",Pt(t,"Date")+r*n),a&&t._d.setTime(t._d.valueOf()+a*n),i&&c.updateOffset(t,r||o))}Ee.fn=Ae.prototype,Ee.invalid=function(){return Ee(NaN)};var Ze=Ge(1,"add"),Xe=Ge(-1,"subtract");function Je(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),i=t.clone().add(n,"months");return-(n+(e-i<0?(e-i)/(i-t.clone().add(n-1,"months")):(e-i)/(t.clone().add(n+1,"months")-i)))||0}function $e(t){var e;return void 0===t?this._locale._abbr:(null!=(e=ue(t))&&(this._locale=e),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ke=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});function Qe(){return this._locale}function tn(t,e){B(0,[t,t.length],0,e)}function en(t,e,n,i,a){var r;return null==t?Bt(this,i,a).year:((r=Et(t,i,a))<e&&(e=r),function(t,e,n,i,a){var r=Ht(t,e,n,i,a),o=zt(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}.call(this,t,e,n,i,a))}B(0,["gg",2],0,function(){return this.weekYear()%100}),B(0,["GG",2],0,function(){return this.isoWeekYear()%100}),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),A("weekYear","gg"),A("isoWeekYear","GG"),Y("weekYear",1),Y("isoWeekYear",1),lt("G",it),lt("g",it),lt("GG",J,G),lt("gg",J,G),lt("GGGG",tt,Z),lt("gggg",tt,Z),lt("GGGGG",et,X),lt("ggggg",et,X),ft(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,i){e[i.substr(0,2)]=M(t)}),ft(["gg","GG"],function(t,e,n,i){e[i]=c.parseTwoDigitYear(t)}),B("Q",0,"Qo","quarter"),A("quarter","Q"),Y("quarter",7),lt("Q",U),ct("Q",function(t,e){e[mt]=3*(M(t)-1)}),B("D",["DD",2],"Do","date"),A("date","D"),Y("date",9),lt("D",J),lt("DD",J,G),lt("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),ct(["D","DD"],pt),ct("Do",function(t,e){e[pt]=M(t.match(J)[0])});var nn=Ct("Date",!0);B("DDD",["DDDD",3],"DDDo","dayOfYear"),A("dayOfYear","DDD"),Y("dayOfYear",4),lt("DDD",Q),lt("DDDD",q),ct(["DDD","DDDD"],function(t,e,n){n._dayOfYear=M(t)}),B("m",["mm",2],0,"minute"),A("minute","m"),Y("minute",14),lt("m",J),lt("mm",J,G),ct(["m","mm"],bt);var an=Ct("Minutes",!1);B("s",["ss",2],0,"second"),A("second","s"),Y("second",15),lt("s",J),lt("ss",J,G),ct(["s","ss"],yt);var rn,on=Ct("Seconds",!1);for(B("S",0,0,function(){return~~(this.millisecond()/100)}),B(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),B(0,["SSS",3],0,"millisecond"),B(0,["SSSS",4],0,function(){return 10*this.millisecond()}),B(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),B(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),B(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),B(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),B(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),A("millisecond","ms"),Y("millisecond",16),lt("S",Q,U),lt("SS",Q,G),lt("SSS",Q,q),rn="SSSS";rn.length<=9;rn+="S")lt(rn,nt);function sn(t,e){e[xt]=M(1e3*("0."+t))}for(rn="S";rn.length<=9;rn+="S")ct(rn,sn);var ln=Ct("Milliseconds",!1);B("z",0,0,"zoneAbbr"),B("zz",0,0,"zoneName");var un=_.prototype;function dn(t){return t}un.add=Ze,un.calendar=function(t,e){var n=t||Ce(),i=Ne(n,this).startOf("day"),a=c.calendarFormat(this,i)||"sameElse",r=e&&(P(e[a])?e[a].call(this,n):e[a]);return this.format(r||this.localeData().calendar(a,this,Ce(n)))},un.clone=function(){return new _(this)},un.diff=function(t,e,n){var i,a,r;if(!this.isValid())return NaN;if(!(i=Ne(t,this)).isValid())return NaN;switch(a=6e4*(i.utcOffset()-this.utcOffset()),e=F(e)){case"year":r=Je(this,i)/12;break;case"month":r=Je(this,i);break;case"quarter":r=Je(this,i)/3;break;case"second":r=(this-i)/1e3;break;case"minute":r=(this-i)/6e4;break;case"hour":r=(this-i)/36e5;break;case"day":r=(this-i-a)/864e5;break;case"week":r=(this-i-a)/6048e5;break;default:r=this-i}return n?r:w(r)},un.endOf=function(t){return void 0===(t=F(t))||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))},un.format=function(t){t||(t=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var e=E(this,t);return this.localeData().postformat(e)},un.from=function(t,e){return this.isValid()&&(k(t)&&t.isValid()||Ce(t).isValid())?Ee({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},un.fromNow=function(t){return this.from(Ce(),t)},un.to=function(t,e){return this.isValid()&&(k(t)&&t.isValid()||Ce(t).isValid())?Ee({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},un.toNow=function(t){return this.to(Ce(),t)},un.get=function(t){return P(this[t=F(t)])?this[t]():this},un.invalidAt=function(){return v(this).overflow},un.isAfter=function(t,e){var n=k(t)?t:Ce(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=F(u(e)?"millisecond":e))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},un.isBefore=function(t,e){var n=k(t)?t:Ce(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=F(u(e)?"millisecond":e))?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},un.isBetween=function(t,e,n,i){return("("===(i=i||"()")[0]?this.isAfter(t,n):!this.isBefore(t,n))&&(")"===i[1]?this.isBefore(e,n):!this.isAfter(e,n))},un.isSame=function(t,e){var n,i=k(t)?t:Ce(t);return!(!this.isValid()||!i.isValid())&&("millisecond"===(e=F(e||"millisecond"))?this.valueOf()===i.valueOf():(n=i.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},un.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},un.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},un.isValid=function(){return b(this)},un.lang=Ke,un.locale=$e,un.localeData=Qe,un.max=Te,un.min=Pe,un.parsingFlags=function(){return m({},v(this))},un.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:L[n]});return e.sort(function(t,e){return t.priority-e.priority}),e}(t=R(t)),i=0;i<n.length;i++)this[n[i].unit](t[n[i].unit]);else if(P(this[t=F(t)]))return this[t](e);return this},un.startOf=function(t){switch(t=F(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},un.subtract=Xe,un.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},un.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},un.toDate=function(){return new Date(this.valueOf())},un.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||9999<n.year()?E(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):P(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",E(n,"Z")):E(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},un.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',i=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a=e+'[")]';return this.format(n+i+"-MM-DD[T]HH:mm:ss.SSS"+a)},un.toJSON=function(){return this.isValid()?this.toISOString():null},un.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},un.unix=function(){return Math.floor(this.valueOf()/1e3)},un.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},un.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},un.year=Dt,un.isLeapYear=function(){return Mt(this.year())},un.weekYear=function(t){return en.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},un.isoWeekYear=function(t){return en.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},un.quarter=un.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},un.month=Lt,un.daysInMonth=function(){return Ot(this.year(),this.month())},un.week=un.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},un.isoWeek=un.isoWeeks=function(t){var e=Bt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},un.weeksInYear=function(){var t=this.localeData()._week;return Et(this.year(),t.dow,t.doy)},un.isoWeeksInYear=function(){return Et(this.year(),1,4)},un.date=nn,un.day=un.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e,n,i=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(e=t,n=this.localeData(),t="string"!=typeof e?e:isNaN(e)?"number"==typeof(e=n.weekdaysParse(e))?e:null:parseInt(e,10),this.add(t-i,"d")):i},un.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},un.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null==t)return this.day()||7;var e,n,i=(e=t,n=this.localeData(),"string"==typeof e?n.weekdaysParse(e)%7||7:isNaN(e)?null:e);return this.day(this.day()%7?i:i-7)},un.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},un.hour=un.hours=ee,un.minute=un.minutes=an,un.second=un.seconds=on,un.millisecond=un.milliseconds=ln,un.utcOffset=function(t,e,n){var i,a=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null==t)return this._isUTC?a:ze(this);if("string"==typeof t){if(null===(t=We(rt,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(i=ze(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),a!==t&&(!e||this._changeInProgress?qe(this,Ee(t-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},un.utc=function(t){return this.utcOffset(0,t)},un.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(ze(this),"m")),this},un.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=We(at,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},un.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60==0)},un.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},un.isLocal=function(){return!!this.isValid()&&!this._isUTC},un.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},un.isUtc=Ve,un.isUTC=Ve,un.zoneAbbr=function(){return this._isUTC?"UTC":""},un.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},un.dates=n("dates accessor is deprecated. Use date instead.",nn),un.months=n("months accessor is deprecated. Use month instead",Lt),un.years=n("years accessor is deprecated. Use year instead",Dt),un.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),un.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!u(this._isDSTShifted))return this._isDSTShifted;var t={};if(x(t,this),(t=Se(t))._a){var e=t._isUTC?p(t._a):Ce(t._a);this._isDSTShifted=this.isValid()&&0<o(t._a,e.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var hn=O.prototype;function cn(t,e,n,i){var a=ue(),r=p().set(i,e);return a[n](r,t)}function fn(t,e,n){if(d(t)&&(e=t,t=void 0),t=t||"",null!=e)return cn(t,e,n,"month");var i,a=[];for(i=0;i<12;i++)a[i]=cn(t,i,n,"month");return a}function gn(t,e,n,i){e=("boolean"==typeof t?d(e)&&(n=e,e=void 0):(e=t,t=!1,d(n=e)&&(n=e,e=void 0)),e||"");var a,r=ue(),o=t?r._week.dow:0;if(null!=n)return cn(e,(n+o)%7,i,"day");var s=[];for(a=0;a<7;a++)s[a]=cn(e,(a+o)%7,i,"day");return s}hn.calendar=function(t,e,n){var i=this._calendar[t]||this._calendar.sameElse;return P(i)?i.call(e,n):i},hn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(t){return this._ordinal.replace("%d",t)},hn.preparse=dn,hn.postformat=dn,hn.relativeTime=function(t,e,n,i){var a=this._relativeTime[n];return P(a)?a(t,e,n,i):a.replace(/%d/i,t)},hn.pastFuture=function(t,e){var n=this._relativeTime[0<t?"future":"past"];return P(n)?n(e):n.replace(/%s/i,e)},hn.set=function(t){var e,n;for(n in t)P(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},hn.months=function(t,e){return t?s(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||It).test(e)?"format":"standalone"][t.month()]:s(this._months)?this._months:this._months.standalone},hn.monthsShort=function(t,e){return t?s(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[It.test(e)?"format":"standalone"][t.month()]:s(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(t,e,n){var i,a,r;if(this._monthsParseExact)return function(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)r=p([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(a=St.call(this._shortMonthsParse,o))?a:null:-1!==(a=St.call(this._longMonthsParse,o))?a:null:"MMM"===e?-1!==(a=St.call(this._shortMonthsParse,o))?a:-1!==(a=St.call(this._longMonthsParse,o))?a:null:-1!==(a=St.call(this._longMonthsParse,o))?a:-1!==(a=St.call(this._shortMonthsParse,o))?a:null}.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=p([2e3,i]),n&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[i]||(r="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[i].test(t))return i;if(n&&"MMM"===e&&this._shortMonthsParse[i].test(t))return i;if(!n&&this._monthsParse[i].test(t))return i}},hn.monthsRegex=function(t){return this._monthsParseExact?(g(this,"_monthsRegex")||Nt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(g(this,"_monthsRegex")||(this._monthsRegex=Wt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(t){return this._monthsParseExact?(g(this,"_monthsRegex")||Nt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(g(this,"_monthsShortRegex")||(this._monthsShortRegex=Yt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(t){return Bt(t,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(t,e){return t?s(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:s(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin},hn.weekdaysShort=function(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort},hn.weekdaysParse=function(t,e,n){var i,a,r;if(this._weekdaysParseExact)return function(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=p([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(a=St.call(this._weekdaysParse,o))?a:null:"ddd"===e?-1!==(a=St.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=St.call(this._minWeekdaysParse,o))?a:null:"dddd"===e?-1!==(a=St.call(this._weekdaysParse,o))?a:-1!==(a=St.call(this._shortWeekdaysParse,o))?a:-1!==(a=St.call(this._minWeekdaysParse,o))?a:null:"ddd"===e?-1!==(a=St.call(this._shortWeekdaysParse,o))?a:-1!==(a=St.call(this._weekdaysParse,o))?a:-1!==(a=St.call(this._minWeekdaysParse,o))?a:null:-1!==(a=St.call(this._minWeekdaysParse,o))?a:-1!==(a=St.call(this._weekdaysParse,o))?a:-1!==(a=St.call(this._shortWeekdaysParse,o))?a:null}.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(a=p([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(a,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(a,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(a,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[i].test(t))return i;if(n&&"ddd"===e&&this._shortWeekdaysParse[i].test(t))return i;if(n&&"dd"===e&&this._minWeekdaysParse[i].test(t))return i;if(!n&&this._weekdaysParse[i].test(t))return i}},hn.weekdaysRegex=function(t){return this._weekdaysParseExact?(g(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(g(this,"_weekdaysRegex")||(this._weekdaysRegex=qt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(g(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(g(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Zt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(g(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(g(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Xt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},hn.meridiem=function(t,e,n){return 11<t?n?"pm":"PM":n?"am":"AM"},se("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===M(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",se),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",ue);var mn=Math.abs;function pn(t,e,n,i){var a=Ee(e,n);return t._milliseconds+=i*a._milliseconds,t._days+=i*a._days,t._months+=i*a._months,t._bubble()}function vn(t){return t<0?Math.floor(t):Math.ceil(t)}function bn(t){return 4800*t/146097}function yn(t){return 146097*t/4800}function xn(t){return function(){return this.as(t)}}var _n=xn("ms"),kn=xn("s"),wn=xn("m"),Mn=xn("h"),Sn=xn("d"),Dn=xn("w"),Cn=xn("M"),Pn=xn("y");function Tn(t){return function(){return this.isValid()?this._data[t]:NaN}}var On=Tn("milliseconds"),In=Tn("seconds"),An=Tn("minutes"),Fn=Tn("hours"),Rn=Tn("days"),Ln=Tn("months"),Yn=Tn("years");var Wn=Math.round,Nn={ss:44,s:45,m:45,h:22,d:26,M:11};var zn=Math.abs;function Vn(t){return(0<t)-(t<0)||+t}function Hn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=zn(this._milliseconds)/1e3,i=zn(this._days),a=zn(this._months);e=w((t=w(n/60))/60),n%=60,t%=60;var r=w(a/12),o=a%=12,s=i,l=e,u=t,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Vn(this._months)!==Vn(h)?"-":"",g=Vn(this._days)!==Vn(h)?"-":"",m=Vn(this._milliseconds)!==Vn(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(o?f+o+"M":"")+(s?g+s+"D":"")+(l||u||d?"T":"")+(l?m+l+"H":"")+(u?m+u+"M":"")+(d?m+d+"S":"")}var Bn=Ae.prototype;return Bn.isValid=function(){return this._isValid},Bn.abs=function(){var t=this._data;return this._milliseconds=mn(this._milliseconds),this._days=mn(this._days),this._months=mn(this._months),t.milliseconds=mn(t.milliseconds),t.seconds=mn(t.seconds),t.minutes=mn(t.minutes),t.hours=mn(t.hours),t.months=mn(t.months),t.years=mn(t.years),this},Bn.add=function(t,e){return pn(this,t,e,1)},Bn.subtract=function(t,e){return pn(this,t,e,-1)},Bn.as=function(t){if(!this.isValid())return NaN;var e,n,i=this._milliseconds;if("month"===(t=F(t))||"year"===t)return e=this._days+i/864e5,n=this._months+bn(e),"month"===t?n:n/12;switch(e=this._days+Math.round(yn(this._months)),t){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour":return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+t)}},Bn.asMilliseconds=_n,Bn.asSeconds=kn,Bn.asMinutes=wn,Bn.asHours=Mn,Bn.asDays=Sn,Bn.asWeeks=Dn,Bn.asMonths=Cn,Bn.asYears=Pn,Bn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*M(this._months/12):NaN},Bn._bubble=function(){var t,e,n,i,a,r=this._milliseconds,o=this._days,s=this._months,l=this._data;return 0<=r&&0<=o&&0<=s||r<=0&&o<=0&&s<=0||(r+=864e5*vn(yn(s)+o),s=o=0),l.milliseconds=r%1e3,t=w(r/1e3),l.seconds=t%60,e=w(t/60),l.minutes=e%60,n=w(e/60),l.hours=n%24,s+=a=w(bn(o+=w(n/24))),o-=vn(yn(a)),i=w(s/12),s%=12,l.days=o,l.months=s,l.years=i,this},Bn.clone=function(){return Ee(this)},Bn.get=function(t){return t=F(t),this.isValid()?this[t+"s"]():NaN},Bn.milliseconds=On,Bn.seconds=In,Bn.minutes=An,Bn.hours=Fn,Bn.days=Rn,Bn.weeks=function(){return w(this.days()/7)},Bn.months=Ln,Bn.years=Yn,Bn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e,n,i,a,r,o,s,l,u,d,h,c=this.localeData(),f=(n=!t,i=c,a=Ee(e=this).abs(),r=Wn(a.as("s")),o=Wn(a.as("m")),s=Wn(a.as("h")),l=Wn(a.as("d")),u=Wn(a.as("M")),d=Wn(a.as("y")),(h=r<=Nn.ss&&["s",r]||r<Nn.s&&["ss",r]||o<=1&&["m"]||o<Nn.m&&["mm",o]||s<=1&&["h"]||s<Nn.h&&["hh",s]||l<=1&&["d"]||l<Nn.d&&["dd",l]||u<=1&&["M"]||u<Nn.M&&["MM",u]||d<=1&&["y"]||["yy",d])[2]=n,h[3]=0<+e,h[4]=i,function(t,e,n,i,a){return a.relativeTime(e||1,!!n,t,i)}.apply(null,h));return t&&(f=c.pastFuture(+this,f)),c.postformat(f)},Bn.toISOString=Hn,Bn.toString=Hn,Bn.toJSON=Hn,Bn.locale=$e,Bn.localeData=Qe,Bn.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Hn),Bn.lang=Ke,B("X",0,0,"unix"),B("x",0,0,"valueOf"),lt("x",it),lt("X",/[+-]?\d+(\.\d{1,3})?/),ct("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),ct("x",function(t,e,n){n._d=new Date(M(t))}),c.version="2.22.2",t=Ce,c.fn=un,c.min=function(){return Oe("isBefore",[].slice.call(arguments,0))},c.max=function(){return Oe("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=p,c.unix=function(t){return Ce(1e3*t)},c.months=function(t,e){return fn(t,e,"months")},c.isDate=h,c.locale=se,c.invalid=y,c.duration=Ee,c.isMoment=k,c.weekdays=function(t,e,n){return gn(t,e,n,"weekdays")},c.parseZone=function(){return Ce.apply(null,arguments).parseZone()},c.localeData=ue,c.isDuration=Fe,c.monthsShort=function(t,e){return fn(t,e,"monthsShort")},c.weekdaysMin=function(t,e,n){return gn(t,e,n,"weekdaysMin")},c.defineLocale=le,c.updateLocale=function(t,e){if(null!=e){var n,i,a=ne;null!=(i=oe(t))&&(a=i._config),(n=new O(e=T(a,e))).parentLocale=ie[t],ie[t]=n,se(t)}else null!=ie[t]&&(null!=ie[t].parentLocale?ie[t]=ie[t].parentLocale:null!=ie[t]&&delete ie[t]);return ie[t]},c.locales=function(){return i(ie)},c.weekdaysShort=function(t,e,n){return gn(t,e,n,"weekdaysShort")},c.normalizeUnits=F,c.relativeTimeRounding=function(t){return void 0===t?Wn:"function"==typeof t&&(Wn=t,!0)},c.relativeTimeThreshold=function(t,e){return void 0!==Nn[t]&&(void 0===e?Nn[t]:(Nn[t]=e,"s"===t&&(Nn.ss=e-1),!0))},c.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=un,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},c},"object"==typeof t&&void 0!==jn?jn.exports=n():e.moment=n()},{}],7:[function(t,e,n){var i=t(30)();i.helpers=t(46),t(28)(i),i.Animation=t(22),i.animationService=t(23),i.defaults=t(26),i.Element=t(27),i.elements=t(41),i.Interaction=t(29),i.layouts=t(31),i.platform=t(49),i.plugins=t(32),i.Scale=t(33),i.scaleService=t(34),i.Ticks=t(35),i.Tooltip=t(36),t(24)(i),t(25)(i),t(56)(i),t(54)(i),t(55)(i),t(57)(i),t(58)(i),t(59)(i),t(15)(i),t(16)(i),t(17)(i),t(18)(i),t(19)(i),t(20)(i),t(21)(i),t(8)(i),t(9)(i),t(10)(i),t(11)(i),t(12)(i),t(13)(i),t(14)(i);var a=t(50);for(var r in a)a.hasOwnProperty(r)&&i.plugins.register(a[r]);i.platform.initialize(),e.exports=i,"undefined"!=typeof window&&(window.Chart=i),i.Legend=a.legend._element,i.Title=a.title._element,i.pluginService=i.plugins,i.PluginBase=i.Element.extend({}),i.canvasHelpers=i.helpers.canvas,i.layoutService=i.layouts},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,41:41,46:46,49:49,50:50,54:54,55:55,56:56,57:57,58:58,59:59,8:8,9:9}],8:[function(t,e,n){"use strict";e.exports=function(n){n.Bar=function(t,e){return e.type="bar",new n(t,e)}}},{}],9:[function(t,e,n){"use strict";e.exports=function(n){n.Bubble=function(t,e){return e.type="bubble",new n(t,e)}}},{}],10:[function(t,e,n){"use strict";e.exports=function(n){n.Doughnut=function(t,e){return e.type="doughnut",new n(t,e)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(n){n.Line=function(t,e){return e.type="line",new n(t,e)}}},{}],12:[function(t,e,n){"use strict";e.exports=function(n){n.PolarArea=function(t,e){return e.type="polarArea",new n(t,e)}}},{}],13:[function(t,e,n){"use strict";e.exports=function(n){n.Radar=function(t,e){return e.type="radar",new n(t,e)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(n){n.Scatter=function(t,e){return e.type="scatter",new n(t,e)}}},{}],15:[function(t,e,n){"use strict";var i=t(26),a=t(41),S=t(46);i._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),i._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return 0<t.length&&(t[0].yLabel?n=t[0].yLabel:0<e.labels.length&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),e.exports=function(e){e.controllers.bar=e.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var t;e.DatasetController.prototype.initialize.apply(this,arguments),(t=this.getMeta()).stack=this.getDataset().stack,t.bar=!0},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e<n;++e)this.updateElement(i[e],e,t)},updateElement:function(t,e,n){var i=this,a=i.chart,r=i.getMeta(),o=i.getDataset(),s=t.custom||{},l=a.options.elements.rectangle;t._xScale=i.getScaleForId(r.xAxisID),t._yScale=i.getScaleForId(r.yAxisID),t._datasetIndex=i.index,t._index=e,t._model={datasetLabel:o.label,label:a.data.labels[e],borderSkipped:s.borderSkipped?s.borderSkipped:l.borderSkipped,backgroundColor:s.backgroundColor?s.backgroundColor:S.valueAtIndexOrDefault(o.backgroundColor,e,l.backgroundColor),borderColor:s.borderColor?s.borderColor:S.valueAtIndexOrDefault(o.borderColor,e,l.borderColor),borderWidth:s.borderWidth?s.borderWidth:S.valueAtIndexOrDefault(o.borderWidth,e,l.borderWidth)},i.updateElementGeometry(t,e,n),t.pivot()},updateElementGeometry:function(t,e,n){var i=this,a=t._model,r=i.getValueScale(),o=r.getBasePixel(),s=r.isHorizontal(),l=i._ruler||i.getRuler(),u=i.calculateBarValuePixels(i.index,e),d=i.calculateBarIndexPixels(i.index,e,l);a.horizontal=s,a.base=n?o:u.base,a.x=s?n?o:u.head:d.center,a.y=s?d.center:n?o:u.head,a.height=s?d.size:void 0,a.width=s?void 0:d.size},getValueScaleId:function(){return this.getMeta().yAxisID},getIndexScaleId:function(){return this.getMeta().xAxisID},getValueScale:function(){return this.getScaleForId(this.getValueScaleId())},getIndexScale:function(){return this.getScaleForId(this.getIndexScaleId())},_getStacks:function(t){var e,n,i=this.chart,a=this.getIndexScale().options.stacked,r=void 0===t?i.data.datasets.length:t+1,o=[];for(e=0;e<r;++e)(n=i.getDatasetMeta(e)).bar&&i.isDatasetVisible(e)&&(!1===a||!0===a&&-1===o.indexOf(n.stack)||void 0===a&&(void 0===n.stack||-1===o.indexOf(n.stack)))&&o.push(n.stack);return o},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var n=this._getStacks(t),i=void 0!==e?n.indexOf(e):-1;return-1===i?n.length-1:i},getRuler:function(){var t,e,n=this.getIndexScale(),i=this.getStackCount(),a=this.index,r=n.isHorizontal(),o=r?n.left:n.top,s=o+(r?n.width:n.height),l=[];for(t=0,e=this.getMeta().data.length;t<e;++t)l.push(n.getPixelForValue(null,t,a));return{min:S.isNullOrUndef(n.options.barThickness)?function(t,e){var n,i,a,r,o=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,r=e.length;a<r;++a)o=Math.min(o,e[a]-e[a-1]);for(a=0,r=s.length;a<r;++a)i=t.getPixelForTick(a),o=0<a?Math.min(o,i-n):o,n=i;return o}(n,l):-1,pixels:l,start:o,end:s,stackCount:i,scale:n}},calculateBarValuePixels:function(t,e){var n,i,a,r,o,s,l=this.chart,u=this.getMeta(),d=this.getValueScale(),h=l.data.datasets,c=d.getRightValue(h[t].data[e]),f=d.options.stacked,g=u.stack,m=0;if(f||void 0===f&&void 0!==g)for(n=0;n<t;++n)(i=l.getDatasetMeta(n)).bar&&i.stack===g&&i.controller.getValueScaleId()===d.id&&l.isDatasetVisible(n)&&(a=d.getRightValue(h[n].data[e]),(c<0&&a<0||0<=c&&0<a)&&(m+=a));return r=d.getPixelForValue(m),{size:s=((o=d.getPixelForValue(m+c))-r)/2,base:r,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,n){var i,a,r,o,s,l,u,d,h,c,f,g,m,p,v,b,y,x=n.scale.options,_="flex"===x.barThickness?(h=e,f=x,m=(c=n).pixels,p=m[h],v=0<h?m[h-1]:null,b=h<m.length-1?m[h+1]:null,y=f.categoryPercentage,null===v&&(v=p-(null===b?c.end-p:b-p)),null===b&&(b=p+p-v),g=p-(p-v)/2*y,{chunk:(b-v)/2*y/c.stackCount,ratio:f.barPercentage,start:g}):(i=e,a=n,l=(r=x).barThickness,u=a.stackCount,d=a.pixels[i],s=S.isNullOrUndef(l)?(o=a.min*r.categoryPercentage,r.barPercentage):(o=l*u,1),{chunk:o/u,ratio:s,start:d-o/2}),k=this.getStackIndex(t,this.getMeta().stack),w=_.start+_.chunk*k+_.chunk/2,M=Math.min(S.valueOrDefault(x.maxBarThickness,1/0),_.chunk*_.ratio);return{base:w-M/2,head:w+M/2,center:w,size:M}},draw:function(){var t=this.chart,e=this.getValueScale(),n=this.getMeta().data,i=this.getDataset(),a=n.length,r=0;for(S.canvas.clipArea(t.ctx,t.chartArea);r<a;++r)isNaN(e.getRightValue(i.data[r]))||n[r].draw();S.canvas.unclipArea(t.ctx)}}),e.controllers.horizontalBar=e.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{26:26,41:41,46:46}],16:[function(t,e,n){"use strict";var i=t(26),a=t(41),g=t(46);i._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"",i=e.datasets[t.datasetIndex].data[t.index];return n+": ("+t.xLabel+", "+t.yLabel+", "+i.r+")"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(n){var i=this,t=i.getMeta().data;g.each(t,function(t,e){i.updateElement(t,e,n)})},updateElement:function(t,e,n){var i=this,a=i.getMeta(),r=t.custom||{},o=i.getScaleForId(a.xAxisID),s=i.getScaleForId(a.yAxisID),l=i._resolveElementOptions(t,e),u=i.getDataset().data[e],d=i.index,h=n?o.getPixelForDecimal(.5):o.getPixelForValue("object"==typeof u?u:NaN,e,d),c=n?s.getBasePixel():s.getPixelForValue(u,e,d);t._xScale=o,t._yScale=s,t._options=l,t._datasetIndex=d,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:n?0:l.radius,skip:r.skip||isNaN(h)||isNaN(c),x:h,y:c},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=g.valueOrDefault(n.hoverBackgroundColor,g.getHoverColor(n.backgroundColor)),e.borderColor=g.valueOrDefault(n.hoverBorderColor,g.getHoverColor(n.borderColor)),e.borderWidth=g.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},_resolveElementOptions:function(t,e){var n,i,a,r=this.chart,o=r.data.datasets[this.index],s=t.custom||{},l=r.options.elements.point,u=g.options.resolve,d=o.data[e],h={},c={chart:r,dataIndex:e,dataset:o,datasetIndex:this.index},f=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(n=0,i=f.length;n<i;++n)h[a=f[n]]=u([s[a],o[a],l[a]],c,e);return h.radius=u([s.radius,d?d.r:void 0,o.radius,l.radius],c,e),h}})}},{26:26,41:41,46:46}],17:[function(t,e,n){"use strict";var i=t(26),a=t(41),O=t(46);i._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r<i[0].data.length;++r)e.push('<li><span style="background-color:'+i[0].backgroundColor[r]+'"></span>'),a[r]&&e.push(a[r]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(l){var u=l.data;return u.labels.length&&u.datasets.length?u.labels.map(function(t,e){var n=l.getDatasetMeta(0),i=u.datasets[0],a=n.data[e],r=a&&a.custom||{},o=O.valueAtIndexOrDefault,s=l.options.elements.arc;return{text:t,fillStyle:r.backgroundColor?r.backgroundColor:o(i.backgroundColor,e,s.backgroundColor),strokeStyle:r.borderColor?r.borderColor:o(i.borderColor,e,s.borderColor),lineWidth:r.borderWidth?r.borderWidth:o(i.borderWidth,e,s.borderWidth),hidden:isNaN(i.data[e])||n.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n<i;++n)(a=o.getDatasetMeta(n)).data[r]&&(a.data[r].hidden=!a.data[r].hidden);o.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],i=": "+e.datasets[t.datasetIndex].data[t.index];return O.isArray(n)?(n=n.slice())[0]+=i:n+=i,n}}}}),i._set("pie",O.clone(i.doughnut)),i._set("pie",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:O.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(n){var i=this,t=i.chart,e=t.chartArea,a=t.options,r=a.elements.arc,o=e.right-e.left-r.borderWidth,s=e.bottom-e.top-r.borderWidth,l=Math.min(o,s),u={x:0,y:0},d=i.getMeta(),h=a.cutoutPercentage,c=a.circumference;if(c<2*Math.PI){var f=a.rotation%(2*Math.PI),g=(f+=2*Math.PI*(f>=Math.PI?-1:f<-Math.PI?1:0))+c,m=Math.cos(f),p=Math.sin(f),v=Math.cos(g),b=Math.sin(g),y=f<=0&&0<=g||f<=2*Math.PI&&2*Math.PI<=g,x=f<=.5*Math.PI&&.5*Math.PI<=g||f<=2.5*Math.PI&&2.5*Math.PI<=g,_=f<=-Math.PI&&-Math.PI<=g||f<=Math.PI&&Math.PI<=g,k=f<=.5*-Math.PI&&.5*-Math.PI<=g||f<=1.5*Math.PI&&1.5*Math.PI<=g,w=h/100,M=_?-1:Math.min(m*(m<0?1:w),v*(v<0?1:w)),S=k?-1:Math.min(p*(p<0?1:w),b*(b<0?1:w)),D=y?1:Math.max(m*(0<m?1:w),v*(0<v?1:w)),C=x?1:Math.max(p*(0<p?1:w),b*(0<b?1:w)),P=.5*(D-M),T=.5*(C-S);l=Math.min(o/P,s/T),u={x:-.5*(D+M),y:-.5*(C+S)}}t.borderWidth=i.getMaxBorderWidth(d.data),t.outerRadius=Math.max((l-t.borderWidth)/2,0),t.innerRadius=Math.max(h?t.outerRadius/100*h:0,0),t.radiusLength=(t.outerRadius-t.innerRadius)/t.getVisibleDatasetCount(),t.offsetX=u.x*t.outerRadius,t.offsetY=u.y*t.outerRadius,d.total=i.calculateTotal(),i.outerRadius=t.outerRadius-t.radiusLength*i.getRingIndex(i.index),i.innerRadius=Math.max(i.outerRadius-t.radiusLength,0),O.each(d.data,function(t,e){i.updateElement(t,e,n)})},updateElement:function(t,e,n){var i=this,a=i.chart,r=a.chartArea,o=a.options,s=o.animation,l=(r.left+r.right)/2,u=(r.top+r.bottom)/2,d=o.rotation,h=o.rotation,c=i.getDataset(),f=n&&s.animateRotate?0:t.hidden?0:i.calculateCircumference(c.data[e])*(o.circumference/(2*Math.PI)),g=n&&s.animateScale?0:i.innerRadius,m=n&&s.animateScale?0:i.outerRadius,p=O.valueAtIndexOrDefault;O.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:l+a.offsetX,y:u+a.offsetY,startAngle:d,endAngle:h,circumference:f,outerRadius:m,innerRadius:g,label:p(c.label,e,a.data.labels[e])}});var v=t._model,b=t.custom||{},y=O.valueAtIndexOrDefault,x=this.chart.options.elements.arc;v.backgroundColor=b.backgroundColor?b.backgroundColor:y(c.backgroundColor,e,x.backgroundColor),v.borderColor=b.borderColor?b.borderColor:y(c.borderColor,e,x.borderColor),v.borderWidth=b.borderWidth?b.borderWidth:y(c.borderWidth,e,x.borderWidth),n&&s.animateRotate||(v.startAngle=0===e?o.rotation:i.getMeta().data[e-1]._model.endAngle,v.endAngle=v.startAngle+v.circumference),t.pivot()},calculateTotal:function(){var n,i=this.getDataset(),t=this.getMeta(),a=0;return O.each(t.data,function(t,e){n=i.data[e],isNaN(n)||t.hidden||(a+=Math.abs(n))}),a},calculateCircumference:function(t){var e=this.getMeta().total;return 0<e&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,r=t.length,o=0;o<r;o++)i=(i=i<(e=t[o]._model?t[o]._model.borderWidth:0)?e:i)<(n=t[o]._chart?t[o]._chart.config.data.datasets[a].hoverBorderWidth:0)?n:i;return i}})}},{26:26,41:41,46:46}],18:[function(t,e,n){"use strict";var i=t(26),a=t(41),g=t(46);i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function f(t,e){return g.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var e,n,i,a=this,r=a.getMeta(),o=r.dataset,s=r.data||[],l=a.chart.options,u=l.elements.line,d=a.getScaleForId(r.yAxisID),h=a.getDataset(),c=f(h,l);for(c&&(i=o.custom||{},void 0!==h.tension&&void 0===h.lineTension&&(h.lineTension=h.tension),o._scale=d,o._datasetIndex=a.index,o._children=s,o._model={spanGaps:h.spanGaps?h.spanGaps:l.spanGaps,tension:i.tension?i.tension:g.valueOrDefault(h.lineTension,u.tension),backgroundColor:i.backgroundColor?i.backgroundColor:h.backgroundColor||u.backgroundColor,borderWidth:i.borderWidth?i.borderWidth:h.borderWidth||u.borderWidth,borderColor:i.borderColor?i.borderColor:h.borderColor||u.borderColor,borderCapStyle:i.borderCapStyle?i.borderCapStyle:h.borderCapStyle||u.borderCapStyle,borderDash:i.borderDash?i.borderDash:h.borderDash||u.borderDash,borderDashOffset:i.borderDashOffset?i.borderDashOffset:h.borderDashOffset||u.borderDashOffset,borderJoinStyle:i.borderJoinStyle?i.borderJoinStyle:h.borderJoinStyle||u.borderJoinStyle,fill:i.fill?i.fill:void 0!==h.fill?h.fill:u.fill,steppedLine:i.steppedLine?i.steppedLine:g.valueOrDefault(h.steppedLine,u.stepped),cubicInterpolationMode:i.cubicInterpolationMode?i.cubicInterpolationMode:g.valueOrDefault(h.cubicInterpolationMode,u.cubicInterpolationMode)},o.pivot()),e=0,n=s.length;e<n;++e)a.updateElement(s[e],e,t);for(c&&0!==o._model.tension&&a.updateBezierControlPoints(),e=0,n=s.length;e<n;++e)s[e].pivot()},getPointBackgroundColor:function(t,e){var n=this.chart.options.elements.point.backgroundColor,i=this.getDataset(),a=t.custom||{};return a.backgroundColor?n=a.backgroundColor:i.pointBackgroundColor?n=g.valueAtIndexOrDefault(i.pointBackgroundColor,e,n):i.backgroundColor&&(n=i.backgroundColor),n},getPointBorderColor:function(t,e){var n=this.chart.options.elements.point.borderColor,i=this.getDataset(),a=t.custom||{};return a.borderColor?n=a.borderColor:i.pointBorderColor?n=g.valueAtIndexOrDefault(i.pointBorderColor,e,n):i.borderColor&&(n=i.borderColor),n},getPointBorderWidth:function(t,e){var n=this.chart.options.elements.point.borderWidth,i=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(i.pointBorderWidth)||g.isArray(i.pointBorderWidth)?n=g.valueAtIndexOrDefault(i.pointBorderWidth,e,n):isNaN(i.borderWidth)||(n=i.borderWidth):n=a.borderWidth,n},getPointRotation:function(t,e){var n=this.chart.options.elements.point.rotation,i=this.getDataset(),a=t.custom||{};return isNaN(a.rotation)?isNaN(i.pointRotation)&&!g.isArray(i.pointRotation)||(n=g.valueAtIndexOrDefault(i.pointRotation,e,n)):n=a.rotation,n},updateElement:function(t,e,n){var i,a,r=this,o=r.getMeta(),s=t.custom||{},l=r.getDataset(),u=r.index,d=l.data[e],h=r.getScaleForId(o.yAxisID),c=r.getScaleForId(o.xAxisID),f=r.chart.options.elements.point;void 0!==l.radius&&void 0===l.pointRadius&&(l.pointRadius=l.radius),void 0!==l.hitRadius&&void 0===l.pointHitRadius&&(l.pointHitRadius=l.hitRadius),i=c.getPixelForValue("object"==typeof d?d:NaN,e,u),a=n?h.getBasePixel():r.calculatePointY(d,e,u),t._xScale=c,t._yScale=h,t._datasetIndex=u,t._index=e,t._model={x:i,y:a,skip:s.skip||isNaN(i)||isNaN(a),radius:s.radius||g.valueAtIndexOrDefault(l.pointRadius,e,f.radius),pointStyle:s.pointStyle||g.valueAtIndexOrDefault(l.pointStyle,e,f.pointStyle),rotation:r.getPointRotation(t,e),backgroundColor:r.getPointBackgroundColor(t,e),borderColor:r.getPointBorderColor(t,e),borderWidth:r.getPointBorderWidth(t,e),tension:o.dataset._model?o.dataset._model.tension:0,steppedLine:!!o.dataset._model&&o.dataset._model.steppedLine,hitRadius:s.hitRadius||g.valueAtIndexOrDefault(l.pointHitRadius,e,f.hitRadius)}},calculatePointY:function(t,e,n){var i,a,r,o=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),u=0,d=0;if(l.options.stacked){for(i=0;i<n;i++)if(a=o.data.datasets[i],"line"===(r=o.getDatasetMeta(i)).type&&r.yAxisID===l.id&&o.isDatasetVisible(i)){var h=Number(l.getRightValue(a.data[e]));h<0?d+=h||0:u+=h||0}var c=Number(l.getRightValue(t));return c<0?l.getPixelForValue(d+c):l.getPixelForValue(u+c)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,n,i,a=this.getMeta(),r=this.chart.chartArea,o=a.data||[];function s(t,e,n){return Math.max(Math.min(t,n),e)}if(a.dataset._model.spanGaps&&(o=o.filter(function(t){return!t._model.skip})),"monotone"===a.dataset._model.cubicInterpolationMode)g.splineCurveMonotone(o);else for(t=0,e=o.length;t<e;++t)n=o[t]._model,i=g.splineCurve(g.previousItem(o,t)._model,n,g.nextItem(o,t)._model,a.dataset._model.tension),n.controlPointPreviousX=i.previous.x,n.controlPointPreviousY=i.previous.y,n.controlPointNextX=i.next.x,n.controlPointNextY=i.next.y;if(this.chart.options.elements.line.capBezierPoints)for(t=0,e=o.length;t<e;++t)(n=o[t]._model).controlPointPreviousX=s(n.controlPointPreviousX,r.left,r.right),n.controlPointPreviousY=s(n.controlPointPreviousY,r.top,r.bottom),n.controlPointNextX=s(n.controlPointNextX,r.left,r.right),n.controlPointNextY=s(n.controlPointNextY,r.top,r.bottom)},draw:function(){var t,e=this.chart,n=this.getMeta(),i=n.data||[],a=e.chartArea,r=i.length,o=0;for(f(this.getDataset(),e.options)&&(t=(n.dataset._model.borderWidth||0)/2,g.canvas.clipArea(e.ctx,{left:a.left,right:a.right,top:a.top-t,bottom:a.bottom+t}),n.dataset.draw(),g.canvas.unclipArea(e.ctx));o<r;++o)i[o].draw(a)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth,radius:a.radius},a.backgroundColor=i.hoverBackgroundColor||g.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,g.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor||g.valueAtIndexOrDefault(e.pointHoverBorderColor,n,g.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth||g.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth),a.radius=i.hoverRadius||g.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius)}})}},{26:26,41:41,46:46}],19:[function(t,e,n){"use strict";var i=t(26),a=t(41),_=t(46);i._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r<i[0].data.length;++r)e.push('<li><span style="background-color:'+i[0].backgroundColor[r]+'"></span>'),a[r]&&e.push(a[r]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(s){var l=s.data;return l.labels.length&&l.datasets.length?l.labels.map(function(t,e){var n=s.getDatasetMeta(0),i=l.datasets[0],a=n.data[e].custom||{},r=_.valueAtIndexOrDefault,o=s.options.elements.arc;return{text:t,fillStyle:a.backgroundColor?a.backgroundColor:r(i.backgroundColor,e,o.backgroundColor),strokeStyle:a.borderColor?a.borderColor:r(i.borderColor,e,o.borderColor),lineWidth:a.borderWidth?a.borderWidth:r(i.borderWidth,e,o.borderWidth),hidden:isNaN(i.data[e])||n.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n<i;++n)(a=o.getDatasetMeta(n)).data[r].hidden=!a.data[r].hidden;o.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:_.noop,update:function(n){var t,e,i,a=this,r=a.getDataset(),o=a.getMeta(),s=a.chart.options.startAngle||0,l=a._starts=[],u=a._angles=[];for(a._updateRadius(),o.count=a.countVisibleElements(),t=0,e=r.data.length;t<e;t++)l[t]=s,i=a._computeAngle(t),s+=u[t]=i;_.each(o.data,function(t,e){a.updateElement(t,e,n)})},_updateRadius:function(){var t=this,e=t.chart,n=e.chartArea,i=e.options,a=i.elements.arc,r=Math.min(n.right-n.left,n.bottom-n.top);e.outerRadius=Math.max((r-a.borderWidth/2)/2,0),e.innerRadius=Math.max(i.cutoutPercentage?e.outerRadius/100*i.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,n){var i=this,a=i.chart,r=i.getDataset(),o=a.options,s=o.animation,l=a.scale,u=a.data.labels,d=l.xCenter,h=l.yCenter,c=o.startAngle,f=t.hidden?0:l.getDistanceFromCenterForValue(r.data[e]),g=i._starts[e],m=g+(t.hidden?0:i._angles[e]),p=s.animateScale?0:l.getDistanceFromCenterForValue(r.data[e]);_.extend(t,{_datasetIndex:i.index,_index:e,_scale:l,_model:{x:d,y:h,innerRadius:0,outerRadius:n?p:f,startAngle:n&&s.animateRotate?c:g,endAngle:n&&s.animateRotate?c:m,label:_.valueAtIndexOrDefault(u,e,u[e])}});var v=this.chart.options.elements.arc,b=t.custom||{},y=_.valueAtIndexOrDefault,x=t._model;x.backgroundColor=b.backgroundColor?b.backgroundColor:y(r.backgroundColor,e,v.backgroundColor),x.borderColor=b.borderColor?b.borderColor:y(r.borderColor,e,v.borderColor),x.borderWidth=b.borderWidth?b.borderWidth:y(r.borderWidth,e,v.borderWidth),t.pivot()},countVisibleElements:function(){var n=this.getDataset(),t=this.getMeta(),i=0;return _.each(t.data,function(t,e){isNaN(n.data[e])||t.hidden||i++}),i},_computeAngle:function(t){var e=this,n=this.getMeta().count,i=e.getDataset(),a=e.getMeta();if(isNaN(i.data[t])||a.data[t].hidden)return 0;var r={chart:e.chart,dataIndex:t,dataset:i,datasetIndex:e.index};return _.options.resolve([e.chart.options.elements.arc.angle,2*Math.PI/n],r,t)}})}},{26:26,41:41,46:46}],20:[function(t,e,n){"use strict";var i=t(26),a=t(41),u=t(46);i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:u.noop,update:function(n){var i=this,t=i.getMeta(),e=t.dataset,a=t.data,r=e.custom||{},o=i.getDataset(),s=i.chart.options.elements.line,l=i.chart.scale;void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),u.extend(t.dataset,{_datasetIndex:i.index,_scale:l,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:u.valueOrDefault(o.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:o.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:o.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:o.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==o.fill?o.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:o.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:o.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:o.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:o.borderJoinStyle||s.borderJoinStyle}}),t.dataset.pivot(),u.each(a,function(t,e){i.updateElement(t,e,n)},i),i.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,a=t.custom||{},r=i.getDataset(),o=i.chart.scale,s=i.chart.options.elements.point,l=o.getPointPositionForValue(e,r.data[e]);void 0!==r.radius&&void 0===r.pointRadius&&(r.pointRadius=r.radius),void 0!==r.hitRadius&&void 0===r.pointHitRadius&&(r.pointHitRadius=r.hitRadius),u.extend(t,{_datasetIndex:i.index,_index:e,_scale:o,_model:{x:n?o.xCenter:l.x,y:n?o.yCenter:l.y,tension:a.tension?a.tension:u.valueOrDefault(r.lineTension,i.chart.options.elements.line.tension),radius:a.radius?a.radius:u.valueAtIndexOrDefault(r.pointRadius,e,s.radius),backgroundColor:a.backgroundColor?a.backgroundColor:u.valueAtIndexOrDefault(r.pointBackgroundColor,e,s.backgroundColor),borderColor:a.borderColor?a.borderColor:u.valueAtIndexOrDefault(r.pointBorderColor,e,s.borderColor),borderWidth:a.borderWidth?a.borderWidth:u.valueAtIndexOrDefault(r.pointBorderWidth,e,s.borderWidth),pointStyle:a.pointStyle?a.pointStyle:u.valueAtIndexOrDefault(r.pointStyle,e,s.pointStyle),rotation:a.rotation?a.rotation:u.valueAtIndexOrDefault(r.pointRotation,e,s.rotation),hitRadius:a.hitRadius?a.hitRadius:u.valueAtIndexOrDefault(r.pointHitRadius,e,s.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var a=this.chart.chartArea,r=this.getMeta();u.each(r.data,function(t,e){var n=t._model,i=u.splineCurve(u.previousItem(r.data,e,!0)._model,n,u.nextItem(r.data,e,!0)._model,n.tension);n.controlPointPreviousX=Math.max(Math.min(i.previous.x,a.right),a.left),n.controlPointPreviousY=Math.max(Math.min(i.previous.y,a.bottom),a.top),n.controlPointNextX=Math.max(Math.min(i.next.x,a.right),a.left),n.controlPointNextY=Math.max(Math.min(i.next.y,a.bottom),a.top),t.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth,radius:a.radius},a.radius=n.hoverRadius?n.hoverRadius:u.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:u.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,u.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:u.valueAtIndexOrDefault(e.pointHoverBorderColor,i,u.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:u.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)}})}},{26:26,41:41,46:46}],21:[function(t,e,n){"use strict";t(26)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{26:26}],22:[function(t,e,n){"use strict";var i=t(27);n=e.exports=i.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null});Object.defineProperty(n.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(n.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})},{27:27}],23:[function(t,e,n){"use strict";var i=t(26),r=t(46);i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:r.noop,onComplete:r.noop}}),e.exports={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,r,o=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,r=o.length;a<r;++a)if(o[a].chart===t)return void(o[a]=e);o.push(e),1===o.length&&this.requestAnimationFrame()},cancelAnimation:function(e){var t=r.findIndex(this.animations,function(t){return t.chart===e});-1!==t&&(this.animations.splice(t,1),e.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=r.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;1<t.dropFrames&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,0<t.animations.length&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,a=0;a<i.length;)n=(e=i[a]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),r.callback(e.render,[n,e],n),r.callback(e.onAnimationProgress,[e],n),e.currentStep>=e.numSteps?(r.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(a,1)):++a}}},{26:26,46:46}],24:[function(t,e,n){"use strict";var s=t(22),l=t(23),h=t(26),c=t(46),a=t(29),r=t(31),f=t(49),g=t(32),m=t(34),i=t(36);e.exports=function(u){function d(t){return"top"===t||"bottom"===t}u.types={},u.instances={},u.controllers={},c.extend(u.prototype,{construct:function(t,e){var n,i,a=this;(i=(n=(n=e)||{}).data=n.data||{}).datasets=i.datasets||[],i.labels=i.labels||[],n.options=c.configMerge(h.global,h[n.type],n.options||{}),e=n;var r=f.acquireContext(t,e),o=r&&r.canvas,s=o&&o.height,l=o&&o.width;a.id=c.uid(),a.ctx=r,a.canvas=o,a.config=e,a.width=l,a.height=s,a.aspectRatio=s?l/s:null,a.options=e.options,a._bufferedRender=!1,(a.chart=a).controller=a,u.instances[a.id]=a,Object.defineProperty(a,"data",{get:function(){return a.config.data},set:function(t){a.config.data=t}}),r&&o?(a.initialize(),a.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return g.notify(t,"beforeInit"),c.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),g.notify(t,"afterInit"),t},clear:function(){return c.canvas.clear(this),this},stop:function(){return l.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(c.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:c.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+"px",i.style.height=o+"px",c.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};g.notify(e,"resize",[s]),e.options.onResize&&e.options.onResize(e,s),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;c.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),c.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var o=this,t=o.options,s=o.scales||{},e=[],l=Object.keys(s).reduce(function(t,e){return t[e]=!1,t},{});t.scales&&(e=e.concat((t.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(t.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),t.scale&&e.push({options:t.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),c.each(e,function(t){var e=t.options,n=e.id,i=c.valueOrDefault(e.type,t.dtype);d(e.position)!==d(t.dposition)&&(e.position=t.dposition),l[n]=!0;var a=null;if(n in s&&s[n].type===i)(a=s[n]).options=e,a.ctx=o.ctx,a.chart=o;else{var r=m.getScaleConstructor(i);if(!r)return;a=new r({id:n,type:i,options:e,ctx:o.ctx,chart:o}),s[a.id]=a}a.mergeTicksOptions(),t.isDefault&&(o.scale=a)}),c.each(l,function(t,e){t||delete s[e]}),o.scales=s,m.addScalesToLayout(this)},buildOrUpdateControllers:function(){var r=this,o=[],s=[];return c.each(r.data.datasets,function(t,e){var n=r.getDatasetMeta(e),i=t.type||r.config.type;if(n.type&&n.type!==i&&(r.destroyDatasetMeta(e),n=r.getDatasetMeta(e)),n.type=i,o.push(n.type),n.controller)n.controller.updateIndex(e),n.controller.linkScales();else{var a=u.controllers[n.type];if(void 0===a)throw new Error('"'+n.type+'" is not a chart type.');n.controller=new a(r,e),s.push(n.controller)}},r),s},resetElements:function(){var n=this;c.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.reset()},n)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,n,i=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),n=(e=i).options,c.each(e.scales,function(t){r.removeBox(e,t)}),n=c.configMerge(u.defaults.global,u.defaults[e.config.type],n),e.options=e.config.options=n,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=n.tooltips,e.tooltip.initialize(),g._invalidate(i),!1!==g.notify(i,"beforeUpdate")){i.tooltip._data=i.data;var a=i.buildOrUpdateControllers();c.each(i.data.datasets,function(t,e){i.getDatasetMeta(e).controller.buildOrUpdateElements()},i),i.updateLayout(),i.options.animation&&i.options.animation.duration&&c.each(a,function(t){t.reset()}),i.updateDatasets(),i.tooltip.initialize(),i.lastActive=[],g.notify(i,"afterUpdate"),i._bufferedRender?i._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:i.render(t)}},updateLayout:function(){!1!==g.notify(this,"beforeLayout")&&(r.update(this,this.width,this.height),g.notify(this,"afterScaleUpdate"),g.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==g.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);g.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),n={meta:e,index:t};!1!==g.notify(this,"beforeDatasetUpdate",[n])&&(e.controller.update(),g.notify(this,"afterDatasetUpdate",[n]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var n=t.duration,i=t.lazy;if(!1!==g.notify(e,"beforeRender")){var a=e.options.animation,r=function(t){g.notify(e,"afterRender"),c.callback(a&&a.onComplete,[t],e)};if(a&&(void 0!==n&&0!==n||void 0===n&&0!==a.duration)){var o=new s({numSteps:(n||a.duration)/16.66,easing:t.easing||a.easing,render:function(t,e){var n=c.easing.effects[e.easing],i=e.currentStep,a=i/e.numSteps;t.draw(n(a),a,i)},onAnimationProgress:a.onProgress,onAnimationComplete:r});l.addAnimation(e,o,n,i)}else e.draw(),r(new s({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),c.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==g.notify(e,"beforeDraw",[t])&&(c.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),g.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,n=(this.data.datasets||[]).length;e<n;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==g.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;0<=n;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);g.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),i={meta:n,index:t,easingValue:e};!1!==g.notify(this,"beforeDatasetDraw",[i])&&(n.controller.draw(e),g.notify(this,"afterDatasetDraw",[i]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==g.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),g.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return a.modes.single(this,t)},getElementsAtEvent:function(t){return a.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return a.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=a.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return a.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],i=n._meta&&n._meta[e];i&&(i.controller.destroy(),delete n._meta[e])},destroy:function(){var t,e,n=this,i=n.canvas;for(n.stop(),t=0,e=n.data.datasets.length;t<e;++t)n.destroyDatasetMeta(t);i&&(n.unbindEvents(),c.canvas.clear(n),f.releaseContext(n.ctx),n.canvas=null,n.ctx=null),g.notify(n,"destroy"),delete u.instances[n.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new i({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var e=this,n=e._listeners={},i=function(){e.eventHandler.apply(e,arguments)};c.each(e.options.events,function(t){f.addEventListener(e,t,i),n[t]=i}),e.options.responsive&&(i=function(){e.resize()},f.addEventListener(e,"resize",i),n.resize=i)},unbindEvents:function(){var n=this,t=n._listeners;t&&(delete n._listeners,c.each(t,function(t,e){f.removeEventListener(n,e,t)}))},updateHoverStyle:function(t,e,n){var i,a,r,o=n?"setHoverStyle":"removeHoverStyle";for(a=0,r=t.length;a<r;++a)(i=t[a])&&this.getDatasetMeta(i._datasetIndex).controller[o](i)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==g.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var i=e.handleEvent(t);n&&(i=n._start?n.handleEvent(t):i|n.handleEvent(t)),g.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):i&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,n=this,i=n.options||{},a=i.hover;return n.lastActive=n.lastActive||[],"mouseout"===t.type?n.active=[]:n.active=n.getElementsAtEventForMode(t,a.mode,a),c.callback(i.onHover||i.hover.onHover,[t.native,n.active],n),"mouseup"!==t.type&&"click"!==t.type||i.onClick&&i.onClick.call(n,t.native,n.active),n.lastActive.length&&n.updateHoverStyle(n.lastActive,a.mode,!1),n.active.length&&a.mode&&n.updateHoverStyle(n.active,a.mode,!0),e=!c.arrayEquals(n.active,n.lastActive),n.lastActive=n.active,e}}),u.Controller=u}},{22:22,23:23,26:26,29:29,31:31,32:32,34:34,36:36,46:46,49:49}],25:[function(t,e,n){"use strict";var s=t(46);e.exports=function(t){var r=["push","pop","shift","splice","unshift"];function o(e,t){var n=e._chartjs;if(n){var i=n.listeners,a=i.indexOf(t);-1!==a&&i.splice(a,1),0<i.length||(r.forEach(function(t){delete e[t]}),delete e._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},s.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&o(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;t<e;++t)a[t]=a[t]||this.createMetaData(t);n.dataset=n.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var a,t,e=this,n=e.getDataset(),i=n.data||(n.data=[]);e._data!==i&&(e._data&&o(e._data,e),t=e,(a=i)._chartjs?a._chartjs.listeners.push(t):(Object.defineProperty(a,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[t]}}),r.forEach(function(t){var n="onData"+t.charAt(0).toUpperCase()+t.slice(1),i=a[t];Object.defineProperty(a,t,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),t=i.apply(this,e);return s.each(a._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),t}})})),e._data=i),e.resyncElements()},update:s.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],i=n.length,a=0;a<i;++a)n[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,i=0;for(t.dataset&&t.dataset.draw();i<n;++i)e[i].draw()},removeHoverStyle:function(t){s.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=s.valueAtIndexOrDefault,r=s.getHoverColor,o=t._model;t.$previousStyle={backgroundColor:o.backgroundColor,borderColor:o.borderColor,borderWidth:o.borderWidth},o.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:a(e.hoverBackgroundColor,n,r(o.backgroundColor)),o.borderColor=i.hoverBorderColor?i.hoverBorderColor:a(e.hoverBorderColor,n,r(o.borderColor)),o.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:a(e.hoverBorderWidth,n,o.borderWidth)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,n=t.data.length,i=e.length;i<n?t.data.splice(i,n-i):n<i&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=s.inherits}},{46:46}],26:[function(t,e,n){"use strict";var i=t(46);e.exports={_set:function(t,e){return i.merge(this[t]||(this[t]={}),e)}}},{46:46}],27:[function(t,e,n){"use strict";var g=t(2),i=t(46);var a=function(t){i.extend(this,t),this.initialize.apply(this,arguments)};i.extend(a.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=i.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,i=e._start,a=e._view;return n&&1!==t?(a||(a=e._view={}),i||(i=e._start={}),function(t,e,n,i){var a,r,o,s,l,u,d,h,c,f=Object.keys(n);for(a=0,r=f.length;a<r;++a)if(u=n[o=f[a]],e.hasOwnProperty(o)||(e[o]=u),(s=e[o])!==u&&"_"!==o[0]){if(t.hasOwnProperty(o)||(t[o]=s),(d=typeof u)==typeof(l=t[o]))if("string"===d){if((h=g(l)).valid&&(c=g(u)).valid){e[o]=c.mix(h,i).rgbString();continue}}else if("number"===d&&isFinite(l)&&isFinite(u)){e[o]=l+(u-l)*i;continue}e[o]=u}}(i,a,n,t)):(e._view=n,e._start=null),e},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return i.isNumber(this._model.x)&&i.isNumber(this._model.y)}}),a.extend=i.inherits,e.exports=a},{2:2,46:46}],28:[function(t,e,n){"use strict";var i=t(2),a=t(26),g=t(46),l=t(34);e.exports=function(){function d(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),-1!==t.indexOf("%")&&(i=i/100*e.parentNode[n])):i=t,i}function h(t){return null!=t&&"none"!==t}function e(t,e,n){var i=document.defaultView,a=g._getParentNode(t),r=i.getComputedStyle(t)[e],o=i.getComputedStyle(a)[e],s=h(r),l=h(o),u=Number.POSITIVE_INFINITY;return s||l?Math.min(s?d(r,t,n):u,l?d(o,a,n):u):"none"}g.configMerge=function(){return g.merge(g.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,i){var a=e[t]||{},r=n[t];"scales"===t?e[t]=g.scaleMerge(a,r):"scale"===t?e[t]=g.merge(a,[l.getScaleDefaults(r.type),r]):g._merger(t,e,n,i)}})},g.scaleMerge=function(){return g.merge(g.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a<s;++a)o=n[t][a],r=g.valueOrDefault(o.type,"xAxes"===t?"category":"linear"),a>=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?g.merge(e[t][a],[l.getScaleDefaults(r),o]):g.merge(e[t][a],o)}else g._merger(t,e,n,i)}})},g.where=function(t,e){if(g.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return g.each(t,function(t){e(t)&&n.push(t)}),n},g.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,a=t.length;i<a;++i)if(e.call(n,t[i],i,t))return i;return-1},g.findNextWhere=function(t,e,n){g.isNullOrUndef(n)&&(n=-1);for(var i=n+1;i<t.length;i++){var a=t[i];if(e(a))return a}},g.findPreviousWhere=function(t,e,n){g.isNullOrUndef(n)&&(n=t.length);for(var i=n-1;0<=i;i--){var a=t[i];if(e(a))return a}},g.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g.almostEquals=function(t,e,n){return Math.abs(t-e)<n},g.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&t<n+e},g.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},g.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},g.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:0<t?1:-1},g.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,n=Math.round(e);return t===Math.pow(10,n)?n:e},g.toRadians=function(t){return t*(Math.PI/180)},g.toDegrees=function(t){return t*(180/Math.PI)},g.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},g.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},g.aliasPixel=function(t){return t%2==0?0:.5},g.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},g.EPSILON=Number.EPSILON||1e-14,g.splineCurveMonotone=function(t){var e,n,i,a,r,o,s,l,u,d=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),h=d.length;for(e=0;e<h;++e)if(!(i=d[e]).model.skip){if(n=0<e?d[e-1]:null,(a=e<h-1?d[e+1]:null)&&!a.model.skip){var c=a.model.x-i.model.x;i.deltaK=0!==c?(a.model.y-i.model.y)/c:0}!n||n.model.skip?i.mK=i.deltaK:!a||a.model.skip?i.mK=n.deltaK:this.sign(n.deltaK)!==this.sign(i.deltaK)?i.mK=0:i.mK=(n.deltaK+i.deltaK)/2}for(e=0;e<h-1;++e)i=d[e],a=d[e+1],i.model.skip||a.model.skip||(g.almostEquals(i.deltaK,0,this.EPSILON)?i.mK=a.mK=0:(r=i.mK/i.deltaK,o=a.mK/i.deltaK,(l=Math.pow(r,2)+Math.pow(o,2))<=9||(s=3/Math.sqrt(l),i.mK=r*s*i.deltaK,a.mK=o*s*i.deltaK)));for(e=0;e<h;++e)(i=d[e]).model.skip||(n=0<e?d[e-1]:null,a=e<h-1?d[e+1]:null,n&&!n.model.skip&&(u=(i.model.x-n.model.x)/3,i.model.controlPointPreviousX=i.model.x-u,i.model.controlPointPreviousY=i.model.y-u*i.mK),a&&!a.model.skip&&(u=(a.model.x-i.model.x)/3,i.model.controlPointNextX=i.model.x+u,i.model.controlPointNextY=i.model.y+u*i.mK))},g.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},g.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},g.niceNum=function(t,e){var n=Math.floor(g.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},g.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},g.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;i=s&&0<s.length?(n=s[0].clientX,s[0].clientY):(n=a.clientX,a.clientY);var l=parseFloat(g.getStyle(r,"padding-left")),u=parseFloat(g.getStyle(r,"padding-top")),d=parseFloat(g.getStyle(r,"padding-right")),h=parseFloat(g.getStyle(r,"padding-bottom")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:i=Math.round((i-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},g.getConstraintWidth=function(t){return e(t,"max-width","clientWidth")},g.getConstraintHeight=function(t){return e(t,"max-height","clientHeight")},g._calculatePadding=function(t,e,n){return-1<(e=g.getStyle(t,e)).indexOf("%")?n/parseInt(e,10):parseInt(e,10)},g._getParentNode=function(t){var e=t.parentNode;return e&&e.host&&(e=e.host),e},g.getMaximumWidth=function(t){var e=g._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-g._calculatePadding(e,"padding-left",n)-g._calculatePadding(e,"padding-right",n),a=g.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},g.getMaximumHeight=function(t){var e=g._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-g._calculatePadding(e,"padding-top",n)-g._calculatePadding(e,"padding-bottom",n),a=g.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},g.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},g.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+"px",i.style.width=r+"px")}},g.fontString=function(t,e,n){return e+" "+t+"px "+n},g.longestText=function(e,t,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(a=i.data={},r=i.garbageCollect=[],i.font=t),e.font=t;var o=0;g.each(n,function(t){null!=t&&!0!==g.isArray(t)?o=g.measureText(e,a,r,o,t):g.isArray(t)&&g.each(t,function(t){null==t||g.isArray(t)||(o=g.measureText(e,a,r,o,t))})});var s=r.length/2;if(s>n.length){for(var l=0;l<s;l++)delete a[r[l]];r.splice(0,s)}return o},g.measureText=function(t,e,n,i,a){var r=e[a];return r||(r=e[a]=t.measureText(a).width,n.push(a)),i<r&&(i=r),i},g.numberOfLabelLines=function(t){var e=1;return g.each(t,function(t){g.isArray(t)&&t.length>e&&(e=t.length)}),e},g.color=i?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},g.getHoverColor=function(t){return t instanceof CanvasPattern?t:g.color(t).saturate(.5).darken(.1).rgbString()}}},{2:2,26:26,34:34,46:46}],29:[function(t,e,n){"use strict";var i=t(46);function s(t,e){return t.native?{x:t.x,y:t.y}:i.getRelativePosition(t,e)}function l(t,e){var n,i,a,r,o;for(i=0,r=t.data.datasets.length;i<r;++i)if(t.isDatasetVisible(i))for(a=0,o=(n=t.getDatasetMeta(i)).data.length;a<o;++a){var s=n.data[a];s._view.skip||e(s)}}function u(t,e){var n=[];return l(t,function(t){t.inRange(e.x,e.y)&&n.push(t)}),n}function d(t,i,a,r){var o=Number.POSITIVE_INFINITY,s=[];return l(t,function(t){if(!a||t.inRange(i.x,i.y)){var e=t.getCenterPoint(),n=r(i,e);n<o?(s=[t],o=n):n===o&&s.push(t)}}),s}function h(t){var a=-1!==t.indexOf("x"),r=-1!==t.indexOf("y");return function(t,e){var n=a?Math.abs(t.x-e.x):0,i=r?Math.abs(t.y-e.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(i,2))}}function a(i,t,e){var n=s(t,i);e.axis=e.axis||"x";var a=h(e.axis),r=e.intersect?u(i,n):d(i,n,!1,a),o=[];return r.length?(i.data.datasets.forEach(function(t,e){if(i.isDatasetVisible(e)){var n=i.getDatasetMeta(e).data[r[0]._index];n&&!n._view.skip&&o.push(n)}}),o):[]}e.exports={modes:{single:function(t,e){var n=s(e,t),i=[];return l(t,function(t){if(t.inRange(n.x,n.y))return i.push(t),i}),i.slice(0,1)},label:a,index:a,dataset:function(t,e,n){var i=s(e,t);n.axis=n.axis||"xy";var a=h(n.axis),r=n.intersect?u(t,i):d(t,i,!1,a);return 0<r.length&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},"x-axis":function(t,e){return a(t,e,{intersect:!1})},point:function(t,e){return u(t,s(e,t))},nearest:function(t,e,n){var i=s(e,t);n.axis=n.axis||"xy";var a=h(n.axis),r=d(t,i,n.intersect,a);return 1<r.length&&r.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),r.slice(0,1)},x:function(t,e,n){var i=s(e,t),a=[],r=!1;return l(t,function(t){t.inXRange(i.x)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)}),n.intersect&&!r&&(a=[]),a},y:function(t,e,n){var i=s(e,t),a=[],r=!1;return l(t,function(t){t.inYRange(i.y)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)}),n.intersect&&!r&&(a=[]),a}}}},{46:46}],30:[function(t,e,n){"use strict";t(26)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t}},{26:26}],31:[function(t,e,n){"use strict";var N=t(46);function z(t,e){return N.where(t,function(t){return t.position===e})}function V(t,a){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,e){var n=a?e:t,i=a?t:e;return n.weight===i.weight?n._tmpIndex_-i._tmpIndex_:n.weight-i.weight}),t.forEach(function(t){delete t._tmpIndex_})}e.exports={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var i,a=["fullWidth","position","weight"],r=a.length,o=0;o<r;++o)i=a[o],n.hasOwnProperty(i)&&(e[i]=n[i])},update:function(e,n,t){if(e){var i=e.options.layout||{},a=N.options.toPadding(i.padding),r=a.left,o=a.right,s=a.top,l=a.bottom,u=z(e.boxes,"left"),d=z(e.boxes,"right"),h=z(e.boxes,"top"),c=z(e.boxes,"bottom"),f=z(e.boxes,"chartArea");V(u,!0),V(d,!1),V(h,!0),V(c,!1);var g=n-r-o,m=t-s-l,p=m/2,v=(n-g/2)/(u.length+d.length),b=(t-p)/(h.length+c.length),y=g,x=m,_=[];N.each(u.concat(d,h,c),function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?g:y,b),x-=e.height):(e=t.update(v,x),y-=e.width),_.push({horizontal:n,minSize:e,box:t})});var k=0,w=0,M=0,S=0;N.each(h.concat(c),function(t){if(t.getPadding){var e=t.getPadding();k=Math.max(k,e.left),w=Math.max(w,e.right)}}),N.each(u.concat(d),function(t){if(t.getPadding){var e=t.getPadding();M=Math.max(M,e.top),S=Math.max(S,e.bottom)}});var D=r,C=o,P=s,T=l;N.each(u.concat(d),Y),N.each(u,function(t){D+=t.width}),N.each(d,function(t){C+=t.width}),N.each(h.concat(c),Y),N.each(h,function(t){P+=t.height}),N.each(c,function(t){T+=t.height}),N.each(u.concat(d),function(e){var t=N.findNextWhere(_,function(t){return t.box===e}),n={left:0,right:0,top:P,bottom:T};t&&e.update(t.minSize.width,x,n)}),D=r,C=o,P=s,T=l,N.each(u,function(t){D+=t.width}),N.each(d,function(t){C+=t.width}),N.each(h,function(t){P+=t.height}),N.each(c,function(t){T+=t.height});var O=Math.max(k-D,0);D+=O,C+=Math.max(w-C,0);var I=Math.max(M-P,0);P+=I,T+=Math.max(S-T,0);var A=t-P-T,F=n-D-C;F===y&&A===x||(N.each(u,function(t){t.height=A}),N.each(d,function(t){t.height=A}),N.each(h,function(t){t.fullWidth||(t.width=F)}),N.each(c,function(t){t.fullWidth||(t.width=F)}),x=A,y=F);var R=r+O,L=s+I;N.each(u.concat(h),W),R+=y,L+=x,N.each(d,W),N.each(c,W),e.chartArea={left:D,top:P,right:D+y,bottom:P+x},N.each(f,function(t){t.left=e.chartArea.left,t.top=e.chartArea.top,t.right=e.chartArea.right,t.bottom=e.chartArea.bottom,t.update(y,x)})}function Y(e){var t=N.findNextWhere(_,function(t){return t.box===e});if(t)if(e.isHorizontal()){var n={left:Math.max(D,k),right:Math.max(C,w),top:0,bottom:0};e.update(e.fullWidth?g:y,m/2,n)}else e.update(t.minSize.width,x)}function W(t){t.isHorizontal()?(t.left=t.fullWidth?r:D,t.right=t.fullWidth?n-o:D+y,t.top=L,t.bottom=L+t.height,L=t.bottom):(t.left=R,t.right=R+t.width,t.top=P,t.bottom=P+x,R=t.right)}}}},{46:46}],32:[function(t,e,n){"use strict";var o=t(26),s=t(46);o._set("global",{plugins:{}}),e.exports={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var n=this._plugins;[].concat(t).forEach(function(t){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var i,a,r,o,s,l=this.descriptors(t),u=l.length;for(i=0;i<u;++i)if("function"==typeof(s=(r=(a=l[i]).plugin)[e])&&((o=[t].concat(n||[])).push(a.options),!1===s.apply(r,o)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var i=[],a=[],n=t&&t.config||{},r=n.options&&n.options.plugins||{};return this._plugins.concat(n.plugins||[]).forEach(function(t){if(-1===i.indexOf(t)){var e=t.id,n=r[e];!1!==n&&(!0===n&&(n=s.clone(o.global.plugins[e])),i.push(t),a.push({plugin:t,options:n||{}}))}}),e.descriptors=a,e.id=this._cacheId,a},_invalidate:function(t){delete t.$plugins}}},{26:26,46:46}],33:[function(t,e,n){"use strict";var x=t(26),i=t(27),B=t(46),a=t(35);function _(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(t[e].label);return i}function E(t,e,n){var i=t.getPixelForTick(e);return n&&(i-=0===e?(t.getPixelForTick(1)-i)/2:(i-t.getPixelForTick(e-1))/2),i}function k(t,e,n){return B.isArray(e)?B.longestText(t,n,e):t.measureText(e).width}function w(t){var e=B.valueOrDefault,n=x.global,i=e(t.fontSize,n.defaultFontSize),a=e(t.fontStyle,n.defaultFontStyle),r=e(t.fontFamily,n.defaultFontFamily);return{size:i,style:a,family:r,font:B.fontString(i,a,r)}}function M(t){return B.options.toLineHeight(B.valueOrDefault(t.lineHeight,1.2),B.valueOrDefault(t.fontSize,x.global.defaultFontSize))}x._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",lineHeight:1.2,padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:a.formatters.values,minor:{},major:{}}}),e.exports=i.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){B.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var i,a,r,o,s,l,u=this;for(u.beforeUpdate(),u.maxWidth=t,u.maxHeight=e,u.margins=B.extend({left:0,right:0,top:0,bottom:0},n),u.longestTextCache=u.longestTextCache||{},u.beforeSetDimensions(),u.setDimensions(),u.afterSetDimensions(),u.beforeDataLimits(),u.determineDataLimits(),u.afterDataLimits(),u.beforeBuildTicks(),s=u.buildTicks()||[],u.afterBuildTicks(),u.beforeTickToLabelConversion(),r=u.convertTicksToLabels(s)||u.ticks,u.afterTickToLabelConversion(),i=0,a=(u.ticks=r).length;i<a;++i)o=r[i],(l=s[i])?l.label=o:s.push(l={label:o,major:!1});return u._ticks=s,u.beforeCalculateTickRotation(),u.calculateTickRotation(),u.afterCalculateTickRotation(),u.beforeFit(),u.fit(),u.afterFit(),u.afterUpdate(),u.minSize},afterUpdate:function(){B.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){B.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){B.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){B.callback(this.options.beforeDataLimits,[this])},determineDataLimits:B.noop,afterDataLimits:function(){B.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){B.callback(this.options.beforeBuildTicks,[this])},buildTicks:B.noop,afterBuildTicks:function(){B.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){B.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){B.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){B.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,n=t.options.ticks,i=_(t._ticks),a=w(n);e.font=a.font;var r=n.minRotation||0;if(i.length&&t.options.display&&t.isHorizontal())for(var o,s=B.longestText(e,a.font,i,t.longestTextCache),l=s,u=t.getPixelForTick(1)-t.getPixelForTick(0)-6;u<l&&r<n.maxRotation;){var d=B.toRadians(r);if(o=Math.cos(d),Math.sin(d)*s>t.maxHeight){r--;break}r++,l=o*s}t.labelRotation=r},afterCalculateTickRotation:function(){B.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){B.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=_(t._ticks),i=t.options,a=i.ticks,r=i.scaleLabel,o=i.gridLines,s=i.display,l=t.isHorizontal(),u=w(a),d=i.gridLines.tickMarkLength;if(e.width=l?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&o.drawTicks?d:0,e.height=l?s&&o.drawTicks?d:0:t.maxHeight,r.display&&s){var h=M(r)+B.options.toPadding(r.padding).height;l?e.height+=h:e.width+=h}if(a.display&&s){var c=B.longestText(t.ctx,u.font,n,t.longestTextCache),f=B.numberOfLabelLines(n),g=.5*u.size,m=t.options.ticks.padding;if(l){t.longestLabelWidth=c;var p=B.toRadians(t.labelRotation),v=Math.cos(p),b=Math.sin(p)*c+u.size*f+g*(f-1)+g;e.height=Math.min(t.maxHeight,e.height+b+m),t.ctx.font=u.font;var y=k(t.ctx,n[0],u.font),x=k(t.ctx,n[n.length-1],u.font);0!==t.labelRotation?(t.paddingLeft="bottom"===i.position?v*y+3:v*g+3,t.paddingRight="bottom"===i.position?v*g+3:v*x+3):(t.paddingLeft=y/2+3,t.paddingRight=x/2+3)}else a.mirror?c=0:c+=m+g,e.width=Math.min(t.maxWidth,e.width+c),t.paddingTop=u.size/2,t.paddingBottom=u.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){B.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(B.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:B.noop,getPixelForValue:B.noop,getValueForPixel:B.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),a=i*t+e.paddingLeft;n&&(a+=i/2);var r=e.left+Math.round(a);return r+=e.isFullWidth()?e.margins.left:0}var o=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(o/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,i=e.left+Math.round(n);return i+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:0<t&&0<e?t:0},_autoSkip:function(t){var e,n,i,a,r=this,o=r.isHorizontal(),s=r.options.ticks.minor,l=t.length,u=B.toRadians(r.labelRotation),d=Math.cos(u),h=r.longestLabelWidth*d,c=[];for(s.maxTicksLimit&&(a=s.maxTicksLimit),o&&(e=!1,(h+s.autoSkipPadding)*l>r.width-(r.paddingLeft+r.paddingRight)&&(e=1+Math.floor((h+s.autoSkipPadding)*l/(r.width-(r.paddingLeft+r.paddingRight)))),a&&a<l&&(e=Math.max(e,Math.floor(l/a)))),n=0;n<l;n++)i=t[n],(1<e&&0<n%e||n%e==0&&l<=n+e)&&n!==l-1&&delete i.label,c.push(i);return c},draw:function(S){var D=this,C=D.options;if(C.display){var o=D.ctx,P=x.global,T=C.ticks.minor,t=C.ticks.major||T,O=C.gridLines,e=C.scaleLabel,I=0!==D.labelRotation,A=D.isHorizontal(),F=T.autoSkip?D._autoSkip(D.getTicks()):D.getTicks(),s=B.valueOrDefault(T.fontColor,P.defaultFontColor),l=w(T),u=B.valueOrDefault(t.fontColor,P.defaultFontColor),d=w(t),R=O.drawTicks?O.tickMarkLength:0,n=B.valueOrDefault(e.fontColor,P.defaultFontColor),i=w(e),a=B.options.toPadding(e.padding),L=B.toRadians(D.labelRotation),Y=[],W=D.options.gridLines.lineWidth,N="right"===C.position?D.left:D.right-W-R,z="right"===C.position?D.left+R:D.right,V="bottom"===C.position?D.top+W:D.bottom-R-W,H="bottom"===C.position?D.top+W+R:D.bottom+W;if(B.each(F,function(t,e){if(!B.isNullOrUndef(t.label)){var n,i,a,r,o,s,l,u,d,h,c,f,g,m,p=t.label;r=e===D.zeroLineIndex&&C.offset===O.offsetGridLines?(n=O.zeroLineWidth,i=O.zeroLineColor,a=O.zeroLineBorderDash,O.zeroLineBorderDashOffset):(n=B.valueAtIndexOrDefault(O.lineWidth,e),i=B.valueAtIndexOrDefault(O.color,e),a=B.valueOrDefault(O.borderDash,P.borderDash),B.valueOrDefault(O.borderDashOffset,P.borderDashOffset));var v="middle",b="middle",y=T.padding;if(A){var x=R+y;m="bottom"===C.position?(b=I?"middle":"top",v=I?"right":"center",D.top+x):(b=I?"middle":"bottom",v=I?"left":"center",D.bottom-x);var _=E(D,e,O.offsetGridLines&&1<F.length);_<D.left&&(i="rgba(0,0,0,0)"),_+=B.aliasPixel(n),g=D.getPixelForTick(e)+T.labelOffset,o=l=d=c=_,s=V,u=H,h=S.top,f=S.bottom+W}else{var k,w="left"===C.position;k=T.mirror?(v=w?"left":"right",y):(v=w?"right":"left",R+y),g=w?D.right-k:D.left+k;var M=E(D,e,O.offsetGridLines&&1<F.length);M<D.top&&(i="rgba(0,0,0,0)"),M+=B.aliasPixel(n),m=D.getPixelForTick(e)+T.labelOffset,o=N,l=z,d=S.left,c=S.right+W,s=u=h=f=M}Y.push({tx1:o,ty1:s,tx2:l,ty2:u,x1:d,y1:h,x2:c,y2:f,labelX:g,labelY:m,glWidth:n,glColor:i,glBorderDash:a,glBorderDashOffset:r,rotation:-1*L,label:p,major:t.major,textBaseline:b,textAlign:v})}}),B.each(Y,function(t){if(O.display&&(o.save(),o.lineWidth=t.glWidth,o.strokeStyle=t.glColor,o.setLineDash&&(o.setLineDash(t.glBorderDash),o.lineDashOffset=t.glBorderDashOffset),o.beginPath(),O.drawTicks&&(o.moveTo(t.tx1,t.ty1),o.lineTo(t.tx2,t.ty2)),O.drawOnChartArea&&(o.moveTo(t.x1,t.y1),o.lineTo(t.x2,t.y2)),o.stroke(),o.restore()),T.display){o.save(),o.translate(t.labelX,t.labelY),o.rotate(t.rotation),o.font=t.major?d.font:l.font,o.fillStyle=t.major?u:s,o.textBaseline=t.textBaseline,o.textAlign=t.textAlign;var e=t.label;if(B.isArray(e))for(var n=e.length,i=1.5*l.size,a=D.isHorizontal()?0:-i*(n-1)/2,r=0;r<n;++r)o.fillText(""+e[r],0,a),a+=i;else o.fillText(e,0,0);o.restore()}}),e.display){var r,h,c=0,f=M(e)/2;if(A)r=D.left+(D.right-D.left)/2,h="bottom"===C.position?D.bottom-f-a.bottom:D.top+f+a.top;else{var g="left"===C.position;r=g?D.left+f+a.top:D.right-f-a.top,h=D.top+(D.bottom-D.top)/2,c=g?-.5*Math.PI:.5*Math.PI}o.save(),o.translate(r,h),o.rotate(c),o.textAlign="center",o.textBaseline="middle",o.fillStyle=n,o.font=i.font,o.fillText(e.labelString,0,0),o.restore()}if(O.drawBorder){o.lineWidth=B.valueAtIndexOrDefault(O.lineWidth,0),o.strokeStyle=B.valueAtIndexOrDefault(O.color,0);var m=D.left,p=D.right+W,v=D.top,b=D.bottom+W,y=B.aliasPixel(o.lineWidth);A?(v=b="top"===C.position?D.bottom:D.top,v+=y,b+=y):(m=p="left"===C.position?D.right:D.left,m+=y,p+=y),o.beginPath(),o.moveTo(m,v),o.lineTo(p,b),o.stroke()}}}})},{26:26,27:27,35:35,46:46}],34:[function(t,e,n){"use strict";var i=t(26),a=t(46),r=t(31);e.exports={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=a.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[i.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=a.extend(this.defaults[t],e))},addScalesToLayout:function(e){a.each(e.scales,function(t){t.fullWidth=t.options.fullWidth,t.position=t.options.position,t.weight=t.options.weight,r.addBox(e,t)})}}},{26:26,31:31,46:46}],35:[function(t,e,n){"use strict";var l=t(46);e.exports={formatters:{values:function(t){return l.isArray(t)?t:""+t},linear:function(t,e,n){var i=3<n.length?n[2]-n[1]:n[1]-n[0];1<Math.abs(i)&&t!==Math.floor(t)&&(i=t-Math.floor(t));var a=l.log10(Math.abs(i)),r="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=l.log10(Math.abs(t));r=t.toExponential(Math.floor(o)-Math.floor(a))}else{var s=-1*Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toFixed(s)}else r="0";return r},logarithmic:function(t,e,n){var i=t/Math.pow(10,Math.floor(l.log10(t)));return 0===t?"0":1===i||2===i||5===i||0===e||e===n.length-1?t.toExponential():""}}}},{46:46}],36:[function(t,e,n){"use strict";var i=t(26),a=t(27),R=t(46);i._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:R.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(0<t.length){var r=t[0];r.xLabel?n=r.xLabel:0<a&&r.index<a&&(n=i[r.index])}return n},afterTitle:R.noop,beforeBody:R.noop,beforeLabel:R.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+=t.yLabel},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:R.noop,afterBody:R.noop,beforeFooter:R.noop,footer:R.noop,afterFooter:R.noop}}});var L={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,r=0;for(e=0,n=t.length;e<n;++e){var o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();i+=s.x,a+=s.y,++r}}return{x:Math.round(i/r),y:Math.round(a/r)}},nearest:function(t,e){var n,i,a,r=e.x,o=e.y,s=Number.POSITIVE_INFINITY;for(n=0,i=t.length;n<i;++n){var l=t[n];if(l&&l.hasValue()){var u=l.getCenterPoint(),d=R.distanceBetweenPoints(e,u);d<s&&(s=d,a=l)}}if(a){var h=a.tooltipPosition();r=h.x,o=h.y}return{x:r,y:o}}};function c(t,e){var n=R.color(t);return n.alpha(e*n.alpha()).rgbaString()}function o(t,e){return e&&(R.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function s(t){return("string"==typeof t||t instanceof String)&&-1<t.indexOf("\n")?t.split("\n"):t}function Y(t){var e=i.global,n=R.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:n(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:n(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:n(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:n(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:n(t.titleFontStyle,e.defaultFontStyle),titleFontSize:n(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:n(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:n(t.footerFontStyle,e.defaultFontStyle),footerFontSize:n(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function r(t){return o([],s(t))}(e.exports=a.extend({initialize:function(){this._model=Y(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),n=t.title.apply(this,arguments),i=t.afterTitle.apply(this,arguments),a=[];return a=o(a=o(a=o(a,s(e)),s(n)),s(i))},getBeforeBody:function(){return r(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,n){var i=this,a=i._options.callbacks,r=[];return R.each(t,function(t){var e={before:[],lines:[],after:[]};o(e.before,s(a.beforeLabel.call(i,t,n))),o(e.lines,a.label.call(i,t,n)),o(e.after,s(a.afterLabel.call(i,t,n))),r.push(e)}),r},getAfterBody:function(){return r(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),n=t.footer.apply(this,arguments),i=t.afterFooter.apply(this,arguments),a=[];return a=o(a=o(a=o(a,s(e)),s(n)),s(i))},update:function(t){var e,n,i,a,r,o,s,l,u,d,h,c,f,g,m,p,v,b,y,x,_=this,k=_._options,w=_._model,M=_._model=Y(k),S=_._active,D=_._data,C={xAlign:w.xAlign,yAlign:w.yAlign},P={x:w.x,y:w.y},T={width:w.width,height:w.height},O={x:w.caretX,y:w.caretY};if(S.length){M.opacity=1;var I=[],A=[];O=L[k.position].call(_,S,_._eventPosition);var F=[];for(e=0,n=S.length;e<n;++e)F.push((p=S[e],b=v=void 0,v=p._xScale,b=p._yScale||p._scale,y=p._index,x=p._datasetIndex,{xLabel:v?v.getLabelForIndex(y,x):"",yLabel:b?b.getLabelForIndex(y,x):"",index:y,datasetIndex:x,x:p._model.x,y:p._model.y}));k.filter&&(F=F.filter(function(t){return k.filter(t,D)})),k.itemSort&&(F=F.sort(function(t,e){return k.itemSort(t,e,D)})),R.each(F,function(t){I.push(k.callbacks.labelColor.call(_,t,_._chart)),A.push(k.callbacks.labelTextColor.call(_,t,_._chart))}),M.title=_.getTitle(F,D),M.beforeBody=_.getBeforeBody(F,D),M.body=_.getBody(F,D),M.afterBody=_.getAfterBody(F,D),M.footer=_.getFooter(F,D),M.x=Math.round(O.x),M.y=Math.round(O.y),M.caretPadding=k.caretPadding,M.labelColors=I,M.labelTextColors=A,M.dataPoints=F,C=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.y<e.height?h="top":s.y>l.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;i="center"===h?(n=function(t){return t<=c},function(t){return c<t}):(n=function(t){return t<=e.width/2},function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):i(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,T=function(t,e){var n=t._chart.ctx,i=2*e.yPadding,a=0,r=e.body,o=r.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);o+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,u=e.titleFontSize,d=e.bodyFontSize,h=e.footerFontSize;i+=s*u,i+=s?(s-1)*e.titleSpacing:0,i+=s?e.titleMarginBottom:0,i+=o*d,i+=o?(o-1)*e.bodySpacing:0,i+=l?e.footerMarginTop:0,i+=l*h,i+=l?(l-1)*e.footerSpacing:0;var c=0,f=function(t){a=Math.max(a,n.measureText(t).width+c)};return n.font=R.fontString(u,e._titleFontStyle,e._titleFontFamily),R.each(e.title,f),n.font=R.fontString(d,e._bodyFontStyle,e._bodyFontFamily),R.each(e.beforeBody.concat(e.afterBody),f),c=e.displayColors?d+2:0,R.each(r,function(t){R.each(t.before,f),R.each(t.lines,f),R.each(t.after,f)}),c=0,n.font=R.fontString(h,e._footerFontStyle,e._footerFontFamily),R.each(e.footer,f),{width:a+=2*e.xPadding,height:i}}(this,M)),i=M,a=T,r=C,o=_._chart,s=i.x,l=i.y,u=i.caretSize,d=i.caretPadding,h=i.cornerRadius,c=r.xAlign,f=r.yAlign,g=u+d,m=h+d,"right"===c?s-=a.width:"center"===c&&((s-=a.width/2)+a.width>o.width&&(s=o.width-a.width),s<0&&(s=0)),"top"===f?l+=g:l-="bottom"===f?a.height+g:a.height/2,"center"===f?"left"===c?s+=g:"right"===c&&(s-=g):"left"===c?s-=m:"right"===c&&(s+=m),P={x:s,y:l}}else M.opacity=0;return M.xAlign=C.xAlign,M.yAlign=C.yAlign,M.x=P.x,M.y=P.y,M.width=T.width,M.height=T.height,M.caretX=O.x,M.caretY=O.y,_._model=M,t&&k.custom&&k.custom.call(_,M),_},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,m=e.width,p=e.height;if("center"===c)s=g+p/2,l="left"===h?(a=(i=f)-u,r=i,o=s+u,s-u):(a=(i=f+m)+u,r=i,o=s-u,s+u);else if(r=(i="left"===h?(a=f+d+u)-u:"right"===h?(a=f+m-d-u)-u:(a=n.caretX)-u,a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+p)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n,i){var a=e.title;if(a.length){n.textAlign=e._titleAlign,n.textBaseline="top";var r,o,s=e.titleFontSize,l=e.titleSpacing;for(n.fillStyle=c(e.titleFontColor,i),n.font=R.fontString(s,e._titleFontStyle,e._titleFontFamily),r=0,o=a.length;r<o;++r)n.fillText(a[r],t.x,t.y),t.y+=s+l,r+1===a.length&&(t.y+=e.titleMarginBottom-l)}},drawBody:function(i,a,r,o){var s=a.bodyFontSize,e=a.bodySpacing,t=a.body;r.textAlign=a._bodyAlign,r.textBaseline="top",r.font=R.fontString(s,a._bodyFontStyle,a._bodyFontFamily);var n=0,l=function(t){r.fillText(t,i.x+n,i.y),i.y+=s+e};r.fillStyle=c(a.bodyFontColor,o),R.each(a.beforeBody,l);var u=a.displayColors;n=u?s+2:0,R.each(t,function(t,e){var n=c(a.labelTextColors[e],o);r.fillStyle=n,R.each(t.before,l),R.each(t.lines,function(t){u&&(r.fillStyle=c(a.legendColorBackground,o),r.fillRect(i.x,i.y,s,s),r.lineWidth=1,r.strokeStyle=c(a.labelColors[e].borderColor,o),r.strokeRect(i.x,i.y,s,s),r.fillStyle=c(a.labelColors[e].backgroundColor,o),r.fillRect(i.x+1,i.y+1,s-2,s-2),r.fillStyle=n),l(t)}),R.each(t.after,l)}),n=0,R.each(a.afterBody,l),i.y-=e},drawFooter:function(e,n,i,t){var a=n.footer;a.length&&(e.y+=n.footerMarginTop,i.textAlign=n._footerAlign,i.textBaseline="top",i.fillStyle=c(n.footerFontColor,t),i.font=R.fontString(n.footerFontSize,n._footerFontStyle,n._footerFontFamily),R.each(a,function(t){i.fillText(t,e.x,e.y),e.y+=n.footerFontSize+n.footerSpacing}))},drawBackground:function(t,e,n,i,a){n.fillStyle=c(e.backgroundColor,a),n.strokeStyle=c(e.borderColor,a),n.lineWidth=e.borderWidth;var r=e.xAlign,o=e.yAlign,s=t.x,l=t.y,u=i.width,d=i.height,h=e.cornerRadius;n.beginPath(),n.moveTo(s+h,l),"top"===o&&this.drawCaret(t,i),n.lineTo(s+u-h,l),n.quadraticCurveTo(s+u,l,s+u,l+h),"center"===o&&"right"===r&&this.drawCaret(t,i),n.lineTo(s+u,l+d-h),n.quadraticCurveTo(s+u,l+d,s+u-h,l+d),"bottom"===o&&this.drawCaret(t,i),n.lineTo(s+h,l+d),n.quadraticCurveTo(s,l+d,s,l+d-h),"center"===o&&"left"===r&&this.drawCaret(t,i),n.lineTo(s,l+h),n.quadraticCurveTo(s,l,s+h,l),n.closePath(),n.fill(),0<e.borderWidth&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),(e=!R.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}})).positioners=L},{26:26,27:27,46:46}],37:[function(t,e,n){"use strict";var i=t(26),a=t(27),d=t(46);i._set("global",{elements:{arc:{backgroundColor:i.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),e.exports=a.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var i=d.getAngleFromPoint(n,{x:t,y:e}),a=i.angle,r=i.distance,o=n.startAngle,s=n.endAngle;s<o;)s+=2*Math.PI;for(;s<a;)a-=2*Math.PI;for(;a<o;)a+=2*Math.PI;var l=o<=a&&a<=s,u=r>=n.innerRadius&&r<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{26:26,27:27,46:46}],38:[function(t,e,n){"use strict";var i=t(26),a=t(27),d=t(46),h=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:h.defaultColor,borderWidth:3,borderColor:h.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a=this._view,r=this._chart.ctx,o=a.spanGaps,s=this._children.slice(),l=h.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),r.save(),r.lineCap=a.borderCapStyle||l.borderCapStyle,r.setLineDash&&r.setLineDash(a.borderDash||l.borderDash),r.lineDashOffset=a.borderDashOffset||l.borderDashOffset,r.lineJoin=a.borderJoinStyle||l.borderJoinStyle,r.lineWidth=a.borderWidth||l.borderWidth,r.strokeStyle=a.borderColor||h.defaultColor,r.beginPath(),u=-1,t=0;t<s.length;++t)e=s[t],n=d.previousItem(s,t),i=e._view,0===t?i.skip||(r.moveTo(i.x,i.y),u=t):(n=-1===u?n:s[u],i.skip||(u!==t-1&&!o||-1===u?r.moveTo(i.x,i.y):d.canvas.lineTo(r,n._view,e._view),u=t));r.stroke(),r.restore()}})},{26:26,27:27,46:46}],39:[function(t,e,n){"use strict";var u=t(26),i=t(27),d=t(46),h=u.global.defaultColor;function a(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}u._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:h,borderColor:h,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=i.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:a,inXRange:a,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._model,i=this._chart.ctx,a=e.pointStyle,r=e.rotation,o=e.radius,s=e.x,l=e.y;e.skip||(void 0===t||n.x>=t.left&&1.01*t.right>=n.x&&n.y>=t.top&&1.01*t.bottom>=n.y)&&(i.strokeStyle=e.borderColor||h,i.lineWidth=d.valueOrDefault(e.borderWidth,u.global.elements.point.borderWidth),i.fillStyle=e.backgroundColor||h,d.canvas.drawPoint(i,a,o,s,l,r))}})},{26:26,27:27,46:46}],40:[function(t,e,n){"use strict";var i=t(26),a=t(27);function l(t){return void 0!==t._view.width}function r(t){var e,n,i,a,r=t._view;if(l(t)){var o=r.width/2;e=r.x-o,n=r.x+o,i=Math.min(r.y,r.base),a=Math.max(r.y,r.base)}else{var s=r.height/2;e=Math.min(r.x,r.base),n=Math.max(r.x,r.base),i=r.y-s,a=r.y+s}return{left:e,top:i,right:n,bottom:a}}i._set("global",{elements:{rectangle:{backgroundColor:i.global.defaultColor,borderColor:i.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a,r,o,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(o=l.horizontal?(t=l.base,e=l.x,n=l.y-l.height/2,i=l.y+l.height/2,a=t<e?1:-1,r=1,l.borderSkipped||"left"):(t=l.x-l.width/2,e=l.x+l.width/2,a=1,r=(n=l.y)<(i=l.base)?1:-1,l.borderSkipped||"bottom"),u){var d=Math.min(Math.abs(t-e),Math.abs(n-i)),h=(u=d<u?d:u)/2,c=t+("left"!==o?h*a:0),f=e+("right"!==o?-h*a:0),g=n+("top"!==o?h*r:0),m=i+("bottom"!==o?-h*r:0);c!==f&&(n=g,i=m),g!==m&&(t=c,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var p=[[t,i],[t,n],[e,n],[e,i]],v=["bottom","left","top","right"].indexOf(o,0);function b(t){return p[(v+t)%4]}-1===v&&(v=0);var y=b(0);s.moveTo(y[0],y[1]);for(var x=1;x<4;x++)y=b(x),s.lineTo(y[0],y[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=r(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){if(!this._view)return!1;var n=r(this);return l(this)?t>=n.left&&t<=n.right:e>=n.top&&e<=n.bottom},inXRange:function(t){var e=r(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=r(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return e=l(this)?(t=n.x,(n.y+n.base)/2):(t=(n.x+n.base)/2,n.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{26:26,27:27}],41:[function(t,e,n){"use strict";e.exports={},e.exports.Arc=t(37),e.exports.Line=t(38),e.exports.Point=t(39),e.exports.Rectangle=t(40)},{37:37,38:38,39:39,40:40}],42:[function(t,e,n){"use strict";var i=t(43);n=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2-1e-7,i/2-1e-7);t.moveTo(e+o,n),t.lineTo(e+i-o,n),t.arcTo(e+i,n,e+i,n+o,o),t.lineTo(e+i,n+a-o),t.arcTo(e+i,n+a,e+i-o,n+a,o),t.lineTo(e+o,n+a),t.arcTo(e,n+a,e,n+a-o,o),t.lineTo(e,n+o),t.arcTo(e,n,e+o,n,o),t.closePath(),t.moveTo(e,n)}else t.rect(e,n,i,a)},drawPoint:function(t,e,n,i,a,r){var o,s,l,u,d,h;if(r=r||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(t.save(),t.translate(i,a),t.rotate(r*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,n,0,2*Math.PI),t.closePath();break;case"triangle":d=(s=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,d/3),t.lineTo(s/2,d/3),t.lineTo(0,-2*d/3),t.closePath();break;case"rect":h=1/Math.SQRT2*n,t.rect(-h,-h,2*h,2*h);break;case"rectRounded":var c=n/Math.SQRT2,f=-c,g=-c,m=Math.SQRT2*n;this.roundedRect(t,f,g,m,m,.425*n);break;case"rectRot":h=1/Math.SQRT2*n,t.moveTo(-h,0),t.lineTo(0,h),t.lineTo(h,0),t.lineTo(0,-h),t.closePath();break;case"cross":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0);break;case"crossRot":l=Math.cos(Math.PI/4)*n,u=Math.sin(Math.PI/4)*n,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"star":t.moveTo(0,n),t.lineTo(0,-n),t.moveTo(-n,0),t.lineTo(n,0),l=Math.cos(Math.PI/4)*n,u=Math.sin(Math.PI/4)*n,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"line":t.moveTo(-n,0),t.lineTo(n,0);break;case"dash":t.moveTo(0,0),t.lineTo(n,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,i-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}};i.clear=n.clear,i.drawRoundedRectangle=function(t){t.beginPath(),n.roundedRect.apply(n,arguments)}},{43:43}],43:[function(t,e,n){"use strict";var i,d={noop:function(){},uid:(i=0,function(){return i++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return d.valueOrDefault(d.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,i){var a,r,o;if(d.isArray(t))if(r=t.length,i)for(a=r-1;0<=a;a--)e.call(n,t[a],a);else for(a=0;a<r;a++)e.call(n,t[a],a);else if(d.isObject(t))for(r=(o=Object.keys(t)).length,a=0;a<r;a++)e.call(n,t[o[a]],o[a])},arrayEquals:function(t,e){var n,i,a,r;if(!t||!e||t.length!==e.length)return!1;for(n=0,i=t.length;n<i;++n)if(a=t[n],r=e[n],a instanceof Array&&r instanceof Array){if(!d.arrayEquals(a,r))return!1}else if(a!==r)return!1;return!0},clone:function(t){if(d.isArray(t))return t.map(d.clone);if(d.isObject(t)){for(var e={},n=Object.keys(t),i=n.length,a=0;a<i;++a)e[n[a]]=d.clone(t[n[a]]);return e}return t},_merger:function(t,e,n,i){var a=e[t],r=n[t];d.isObject(a)&&d.isObject(r)?d.merge(a,r,i):e[t]=d.clone(r)},_mergerIf:function(t,e,n){var i=e[t],a=n[t];d.isObject(i)&&d.isObject(a)?d.mergeIf(i,a):e.hasOwnProperty(t)||(e[t]=d.clone(a))},merge:function(t,e,n){var i,a,r,o,s,l=d.isArray(e)?e:[e],u=l.length;if(!d.isObject(t))return t;for(i=(n=n||{}).merger||d._merger,a=0;a<u;++a)if(e=l[a],d.isObject(e))for(s=0,o=(r=Object.keys(e)).length;s<o;++s)i(r[s],t,e,n);return t},mergeIf:function(t,e){return d.merge(t,e,{merger:d._mergerIf})},extend:function(n){for(var t=function(t,e){n[e]=t},e=1,i=arguments.length;e<i;++e)d.each(arguments[e],t);return n},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},i=function(){this.constructor=n};return i.prototype=e.prototype,n.prototype=new i,n.extend=d.inherits,t&&d.extend(n.prototype,t),n.__super__=e.prototype,n}};(e.exports=d).callCallback=d.callback,d.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},d.getValueOrDefault=d.valueOrDefault,d.getValueAtIndexOrDefault=d.valueAtIndexOrDefault},{}],44:[function(t,e,n){"use strict";var i=t(43),a={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return 1<=t?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),e=i<1?(i=1,n/4):n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),e=i<1?(i=1,n/4):n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),e=i<1?(i=1,n/4):n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){return t*t*(2.70158*t-1.70158)},easeOutBack:function(t){return(t-=1)*t*(2.70158*t+1.70158)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},i.easingEffects=a},{43:43}],45:[function(t,e,n){"use strict";var o=t(43);e.exports={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,i,a;return o.isObject(t)?(e=+t.top||0,n=+t.right||0,i=+t.bottom||0,a=+t.left||0):e=n=i=a=+t||0,{top:e,right:n,bottom:i,left:a,height:e+i,width:a+n}},resolve:function(t,e,n){var i,a,r;for(i=0,a=t.length;i<a;++i)if(void 0!==(r=t[i])&&(void 0!==e&&"function"==typeof r&&(r=r(e)),void 0!==n&&o.isArray(r)&&(r=r[n]),void 0!==r))return r}}},{43:43}],46:[function(t,e,n){"use strict";e.exports=t(43),e.exports.easing=t(44),e.exports.canvas=t(42),e.exports.options=t(45)},{42:42,43:43,44:44,45:45}],47:[function(t,e,n){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},{}],48:[function(t,e,n){"use strict";var f=t(46),g="$chartjs",m="chartjs-",p=m+"render-monitor",v=m+"render-animation",b=["animationstart","webkitAnimationStart"],s={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function l(t,e){var n=f.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}var i=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function y(t,e,n){t.addEventListener(e,n,i)}function o(t,e,n){t.removeEventListener(e,n,i)}function x(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function a(e,t,n){var i,a,r,o,s,l,u,d,h=e[g]||(e[g]={}),c=h.resizer=function(t){var e=document.createElement("div"),n=m+"size-monitor",i="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=i,e.className=n,e.innerHTML='<div class="'+n+'-expand" style="'+i+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+n+'-shrink" style="'+i+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var o=function(){e._reset(),t()};return y(a,"scroll",o.bind(a,"expand")),y(r,"scroll",o.bind(r,"shrink")),e}((r=!(i=function(){if(h.resizer)return t(x("resize",n))}),o=[],function(){o=Array.prototype.slice.call(arguments),a=a||this,r||(r=!0,f.requestAnimFrame.call(window,function(){r=!1,i.apply(a,o)}))}));l=function(){if(h.resizer){var t=e.parentNode;t&&t!==c.parentNode&&t.insertBefore(c,t.firstChild),c._reset()}},u=(s=e)[g]||(s[g]={}),d=u.renderProxy=function(t){t.animationName===v&&l()},f.each(b,function(t){y(s,t,d)}),u.reflow=!!s.offsetParent,s.classList.add(p)}function r(t){var e,n,i,a=t[g]||{},r=a.resizer;delete a.resizer,n=(e=t)[g]||{},(i=n.renderProxy)&&(f.each(b,function(t){o(e,t,i)}),delete n.renderProxy),e.classList.remove(p),r&&r.parentNode&&r.parentNode.removeChild(r)}e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,n,i="from{opacity:0.99}to{opacity:1}";e="@-webkit-keyframes "+v+"{"+i+"}@keyframes "+v+"{"+i+"}."+p+"{-webkit-animation:"+v+" 0.001s;animation:"+v+" 0.001s;}",n=(t=this)._style||document.createElement("style"),t._style||(e="/* Chart.js */\n"+e,(t._style=n).setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(function(t,e){var n=t.style,i=t.getAttribute("height"),a=t.getAttribute("width");if(t[g]={initial:{height:i,width:a,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===a||""===a){var r=l(t,"width");void 0!==r&&(t.width=r)}if(null===i||""===i)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var o=l(t,"height");void 0!==r&&(t.height=o)}}(t,e),n):null},releaseContext:function(t){var n=t.canvas;if(n[g]){var i=n[g].initial;["height","width"].forEach(function(t){var e=i[t];f.isNullOrUndef(e)?n.removeAttribute(t):n.setAttribute(t,e)}),f.each(i.style||{},function(t,e){n.style[e]=t}),n.width=n.width,delete n[g]}},addEventListener:function(r,t,o){var e=r.canvas;if("resize"!==t){var n=o[g]||(o[g]={});y(e,t,(n.proxies||(n.proxies={}))[r.id+"_"+t]=function(t){var e,n,i,a;o((n=r,i=s[(e=t).type]||e.type,a=f.getRelativePosition(e,n),x(i,n,a.x,a.y,e)))})}else a(e,o,r)},removeEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=((n[g]||{}).proxies||{})[t.id+"_"+e];a&&o(i,e,a)}else r(i)}},f.addEvent=y,f.removeEvent=o},{46:46}],49:[function(t,e,n){"use strict";var i=t(46),a=t(47),r=t(48),o=r._enabled?r:a;e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},o)},{46:46,47:47,48:48}],50:[function(t,e,n){"use strict";e.exports={},e.exports.filler=t(51),e.exports.legend=t(52),e.exports.title=t(53)},{51:51,52:52,53:53}],51:[function(t,e,n){"use strict";var u=t(26),c=t(41),d=t(46);u._set("global",{plugins:{filler:{propagate:!0}}});var f={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e<r&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,i=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===i?t.y:i}}}};function g(t,e,n){var i,a=t._model||{},r=a.fill;if(void 0===r&&(r=!!a.backgroundColor),!1===r||null===r)return!1;if(!0===r)return"origin";if(i=parseFloat(r,10),isFinite(i)&&Math.floor(i)===i)return"-"!==r[0]&&"+"!==r[0]||(i=e+i),!(i===e||i<0||n<=i)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function m(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,r=null;if(isFinite(a))return null;if("start"===a?r=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?r=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?r=n.scaleZero:i.getBasePosition?r=i.getBasePosition():i.getBasePixel&&(r=i.getBasePixel()),null!=r){if(void 0!==r.x&&void 0!==r.y)return r;if("number"==typeof r&&isFinite(r))return{x:(e=i.isHorizontal())?r:null,y:e?null:r}}return null}function p(t,e,n){var i,a=t[e].fill,r=[e];if(!n)return a;for(;!1!==a&&-1===r.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;r.push(a),a=i.fill}return!1}function y(t){return t&&!t.skip}function x(t,e,n,i,a){var r;if(i&&a){for(t.moveTo(e[0].x,e[0].y),r=1;r<i;++r)d.canvas.lineTo(t,e[r-1],e[r]);for(t.lineTo(n[a-1].x,n[a-1].y),r=a-1;0<r;--r)d.canvas.lineTo(t,n[r],n[r-1],!0)}}e.exports={id:"filler",afterDatasetsUpdate:function(t,e){var n,i,a,r,o,s,l,u=(t.data.datasets||[]).length,d=e.propagate,h=[];for(i=0;i<u;++i)r=null,(a=(n=t.getDatasetMeta(i)).dataset)&&a._model&&a instanceof c.Line&&(r={visible:t.isDatasetVisible(i),fill:g(a,i,u),chart:t,el:a}),n.$filler=r,h.push(r);for(i=0;i<u;++i)(r=h[i])&&(r.fill=p(h,i,d),r.boundary=m(r),r.mapper=(l=void 0,s=(o=r).fill,!(l="dataset")===s?null:(isFinite(s)||(l="boundary"),f[l](o))))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var i=t.ctx,a=n.el,r=a._view,o=a._children||[],s=n.mapper,l=r.backgroundColor||u.global.defaultColor;s&&l&&o.length&&(d.canvas.clipArea(i,t.chartArea),function(t,e,n,i,a,r){var o,s,l,u,d,h,c,f=e.length,g=i.spanGaps,m=[],p=[],v=0,b=0;for(t.beginPath(),o=0,s=f+!!r;o<s;++o)d=n(u=e[l=o%f]._view,l,i),h=y(u),c=y(d),h&&c?(v=m.push(u),b=p.push(d)):v&&b&&(g?(h&&m.push(u),c&&p.push(d)):(x(t,m,p,v,b),v=b=0,m=[],p=[]));x(t,m,p,v,b),t.closePath(),t.fillStyle=a,t.fill()}(i,o,s,r,l,a._loop),d.canvas.unclipArea(i))}}}},{26:26,41:41,46:46}],52:[function(t,e,n){"use strict";var D=t(26),i=t(27),C=t(46),a=t(31),r=C.noop;function P(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}D._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(n){var t=n.data;return C.isArray(t.datasets)?t.datasets.map(function(t,e){return{text:t.label,fillStyle:C.isArray(t.backgroundColor)?t.backgroundColor[0]:t.backgroundColor,hidden:!n.isDatasetVisible(e),lineCap:t.borderCapStyle,lineDash:t.borderDash,lineDashOffset:t.borderDashOffset,lineJoin:t.borderJoinStyle,lineWidth:t.borderWidth,strokeStyle:t.borderColor,pointStyle:t.pointStyle,datasetIndex:e}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var o=i.extend({initialize:function(t){C.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:r,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:r,beforeSetDimensions:r,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:r,beforeBuildLabels:r,buildLabels:function(){var e=this,n=e.options.labels||{},t=C.callback(n.generateLabels,[e.chart],e)||[];n.filter&&(t=t.filter(function(t){return n.filter(t,e.chart.data)})),e.options.reverse&&t.reverse(),e.legendItems=t},afterBuildLabels:r,beforeFit:r,fit:function(){var i=this,t=i.options,a=t.labels,e=t.display,r=i.ctx,n=D.global,o=C.valueOrDefault,s=o(a.fontSize,n.defaultFontSize),l=o(a.fontStyle,n.defaultFontStyle),u=o(a.fontFamily,n.defaultFontFamily),d=C.fontString(s,l,u),h=i.legendHitBoxes=[],c=i.minSize,f=i.isHorizontal();if(c.height=f?(c.width=i.maxWidth,e?10:0):(c.width=e?10:0,i.maxHeight),e)if(r.font=d,f){var g=i.lineWidths=[0],m=i.legendItems.length?s+a.padding:0;r.textAlign="left",r.textBaseline="top",C.each(i.legendItems,function(t,e){var n=P(a,s)+s/2+r.measureText(t.text).width;g[g.length-1]+n+a.padding>=i.width&&(m+=s+a.padding,g[g.length]=i.left),h[e]={left:0,top:0,width:n,height:s},g[g.length-1]+=n+a.padding}),c.height+=m}else{var p=a.padding,v=i.columnWidths=[],b=a.padding,y=0,x=0,_=s+p;C.each(i.legendItems,function(t,e){var n=P(a,s)+s/2+r.measureText(t.text).width;x+_>c.height&&(b+=y+a.padding,v.push(y),x=y=0),y=Math.max(y,n),x+=_,h[e]={left:0,top:0,width:n,height:s}}),b+=y,v.push(y),c.width+=b}i.width=c.width,i.height=c.height},afterFit:r,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var h=this,c=h.options,f=c.labels,g=D.global,m=g.elements.line,p=h.width,v=h.lineWidths;if(c.display){var b,y=h.ctx,x=C.valueOrDefault,t=x(f.fontColor,g.defaultFontColor),_=x(f.fontSize,g.defaultFontSize),e=x(f.fontStyle,g.defaultFontStyle),n=x(f.fontFamily,g.defaultFontFamily),i=C.fontString(_,e,n);y.textAlign="left",y.textBaseline="middle",y.lineWidth=.5,y.strokeStyle=t,y.fillStyle=t,y.font=i;var k=P(f,_),w=h.legendHitBoxes,M=h.isHorizontal();b=M?{x:h.left+(p-v[0])/2,y:h.top+f.padding,line:0}:{x:h.left+f.padding,y:h.top+f.padding,line:0};var S=_+f.padding;C.each(h.legendItems,function(t,e){var n,i,a,r,o,s=y.measureText(t.text).width,l=k+_/2+s,u=b.x,d=b.y;M?p<=u+l&&(d=b.y+=S,b.line++,u=b.x=h.left+(p-v[b.line])/2):d+S>h.bottom&&(u=b.x=u+h.columnWidths[b.line]+f.padding,d=b.y=h.top+f.padding,b.line++),function(t,e,n){if(!(isNaN(k)||k<=0)){y.save(),y.fillStyle=x(n.fillStyle,g.defaultColor),y.lineCap=x(n.lineCap,m.borderCapStyle),y.lineDashOffset=x(n.lineDashOffset,m.borderDashOffset),y.lineJoin=x(n.lineJoin,m.borderJoinStyle),y.lineWidth=x(n.lineWidth,m.borderWidth),y.strokeStyle=x(n.strokeStyle,g.defaultColor);var i=0===x(n.lineWidth,m.borderWidth);if(y.setLineDash&&y.setLineDash(x(n.lineDash,m.borderDash)),c.labels&&c.labels.usePointStyle){var a=_*Math.SQRT2/2,r=a/Math.SQRT2,o=t+r,s=e+r;C.canvas.drawPoint(y,n.pointStyle,a,o,s)}else i||y.strokeRect(t,e,k,_),y.fillRect(t,e,k,_);y.restore()}}(u,d,t),w[e].left=u,w[e].top=d,n=t,i=s,r=k+(a=_/2)+u,o=d+a,y.fillText(n.text,r,o),n.hidden&&(y.beginPath(),y.lineWidth=2,y.moveTo(r,o),y.lineTo(r+i,o),y.stroke()),M?b.x+=l+f.padding:b.y+=S})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var r=t.x,o=t.y;if(r>=e.left&&r<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l<s.length;++l){var u=s[l];if(r>=u.left&&r<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function s(t,e){var n=new o({ctx:t.ctx,options:e,chart:t});a.configure(t,n,e),a.addBox(t,n),t.legend=n}e.exports={id:"legend",_element:o,beforeInit:function(t){var e=t.options.legend;e&&s(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(C.mergeIf(e,D.global.legend),n?(a.configure(t,n,e),n.options=e):s(t,e)):n&&(a.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}},{26:26,27:27,31:31,46:46}],53:[function(t,e,n){"use strict";var _=t(26),i=t(27),k=t(46),a=t(31),r=k.noop;_._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var o=i.extend({initialize:function(t){k.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:r,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:r,beforeSetDimensions:r,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:r,beforeBuildLabels:r,buildLabels:r,afterBuildLabels:r,beforeFit:r,fit:function(){var t=k.valueOrDefault,e=this.options,n=e.display,i=t(e.fontSize,_.global.defaultFontSize),a=this.minSize,r=k.isArray(e.text)?e.text.length:1,o=k.options.toLineHeight(e.lineHeight,i),s=n?r*o+2*e.padding:0;this.isHorizontal()?(a.width=this.maxWidth,a.height=s):(a.width=s,a.height=this.maxHeight),this.width=a.width,this.height=a.height},afterFit:r,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this.ctx,e=k.valueOrDefault,n=this.options,i=_.global;if(n.display){var a,r,o,s=e(n.fontSize,i.defaultFontSize),l=e(n.fontStyle,i.defaultFontStyle),u=e(n.fontFamily,i.defaultFontFamily),d=k.fontString(s,l,u),h=k.options.toLineHeight(n.lineHeight,s),c=h/2+n.padding,f=0,g=this.top,m=this.left,p=this.bottom,v=this.right;t.fillStyle=e(n.fontColor,i.defaultFontColor),t.font=d,this.isHorizontal()?(r=m+(v-m)/2,o=g+c,a=v-m):(r="left"===n.position?m+c:v-c,o=g+(p-g)/2,a=p-g,f=Math.PI*("left"===n.position?-.5:.5)),t.save(),t.translate(r,o),t.rotate(f),t.textAlign="center",t.textBaseline="middle";var b=n.text;if(k.isArray(b))for(var y=0,x=0;x<b.length;++x)t.fillText(b[x],0,y,a),y+=h;else t.fillText(b,0,0,a);t.restore()}}});function s(t,e){var n=new o({ctx:t.ctx,options:e,chart:t});a.configure(t,n,e),a.addBox(t,n),t.titleBlock=n}e.exports={id:"title",_element:o,beforeInit:function(t){var e=t.options.title;e&&s(t,e)},beforeUpdate:function(t){var e=t.options.title,n=t.titleBlock;e?(k.mergeIf(e,_.global.title),n?(a.configure(t,n,e),n.options=e):s(t,e)):n&&(a.removeBox(t,n),delete t.titleBlock)}}},{26:26,27:27,31:31,46:46}],54:[function(t,e,n){"use strict";var i=t(33),a=t(34);e.exports=function(){var t=i.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,n=e.getLabels();e.minIndex=0,e.maxIndex=n.length-1,void 0!==e.options.ticks.min&&(t=n.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=n.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=n[e.minIndex],e.max=n[e.maxIndex]},buildTicks:function(){var t=this.getLabels();this.ticks=0===this.minIndex&&this.maxIndex===t.length-1?t:t.slice(this.minIndex,this.maxIndex+1)},getLabelForIndex:function(t,e){var n=this.chart.data,i=this.isHorizontal();return n.yLabels&&!i?this.getRightValue(n.datasets[e].data[t]):this.ticks[t-this.minIndex]},getPixelForValue:function(t,e){var n,i=this,a=i.options.offset,r=Math.max(i.maxIndex+1-i.minIndex-(a?0:1),1);if(null!=t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){t=n||t;var o=i.getLabels().indexOf(t);e=-1!==o?o:e}if(i.isHorizontal()){var s=i.width/r,l=s*(e-i.minIndex);return a&&(l+=s/2),i.left+Math.round(l)}var u=i.height/r,d=u*(e-i.minIndex);return a&&(d+=u/2),i.top+Math.round(d)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this.options.offset,n=Math.max(this._ticks.length-(e?0:1),1),i=this.isHorizontal(),a=(i?this.width:this.height)/n;return t-=i?this.left:this.top,e&&(t-=a/2),(t<=0?0:Math.round(t/a))+this.minIndex},getBasePixel:function(){return this.bottom}});a.registerScaleType("category",t,{position:"bottom"})}},{33:33,34:34}],55:[function(t,e,n){"use strict";var i=t(26),h=t(46),a=t(34),r=t(35);e.exports=function(t){var e={position:"left",ticks:{callback:r.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){var o=this,s=o.options,l=o.chart,t=l.data.datasets,e=o.isHorizontal();function u(t){return e?t.xAxisID===o.id:t.yAxisID===o.id}o.min=null,o.max=null;var i=s.stacked;if(void 0===i&&h.each(t,function(t,e){if(!i){var n=l.getDatasetMeta(e);l.isDatasetVisible(e)&&u(n)&&void 0!==n.stack&&(i=!0)}}),s.stacked||i){var d={};h.each(t,function(t,e){var i=l.getDatasetMeta(e),n=[i.type,void 0===s.stacked&&void 0===i.stack?e:"",i.stack].join(".");void 0===d[n]&&(d[n]={positiveValues:[],negativeValues:[]});var a=d[n].positiveValues,r=d[n].negativeValues;l.isDatasetVisible(e)&&u(i)&&h.each(t.data,function(t,e){var n=+o.getRightValue(t);isNaN(n)||i.data[e].hidden||(a[e]=a[e]||0,r[e]=r[e]||0,s.relativePoints?a[e]=100:n<0?r[e]+=n:a[e]+=n)})}),h.each(d,function(t){var e=t.positiveValues.concat(t.negativeValues),n=h.min(e),i=h.max(e);o.min=null===o.min?n:Math.min(o.min,n),o.max=null===o.max?i:Math.max(o.max,i)})}else h.each(t,function(t,e){var i=l.getDatasetMeta(e);l.isDatasetVisible(e)&&u(i)&&h.each(t.data,function(t,e){var n=+o.getRightValue(t);isNaN(n)||i.data[e].hidden||(null===o.min?o.min=n:n<o.min&&(o.min=n),null===o.max?o.max=n:n>o.max&&(o.max=n))})});o.min=isFinite(o.min)&&!isNaN(o.min)?o.min:0,o.max=isFinite(o.max)&&!isNaN(o.max)?o.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var n=h.valueOrDefault(e.fontSize,i.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*n)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this.start,n=+this.getRightValue(t),i=this.end-e;return this.isHorizontal()?this.left+this.width/i*(n-e):this.bottom-this.height/i*(n-e)},getValueForPixel:function(t){var e=this.isHorizontal(),n=e?this.width:this.height,i=(e?t-this.left:this.bottom-t)/n;return this.start+(this.end-this.start)*i},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});a.registerScaleType("linear",n,e)}},{26:26,34:34,35:35,46:46}],56:[function(t,e,n){"use strict";var h=t(46),i=t(33);e.exports=function(t){var e=h.noop;t.LinearScaleBase=i.extend({getRightValue:function(t){return"string"==typeof t?+t:i.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=h.sign(t.min),i=h.sign(t.max);n<0&&i<0?t.max=0:0<n&&0<i&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:h.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,i,a,r=[];if(t.stepSize&&0<t.stepSize)a=t.stepSize;else{var o=h.niceNum(e.max-e.min,!1);a=h.niceNum(o/(t.maxTicks-1),!0),void 0!==(i=t.precision)&&(n=Math.pow(10,i),a=Math.ceil(a*n)/n)}var s=Math.floor(e.min/a)*a,l=Math.ceil(e.max/a)*a;h.isNullOrUndef(t.min)||h.isNullOrUndef(t.max)||!t.stepSize||h.almostWhole((t.max-t.min)/t.stepSize,a/1e3)&&(s=t.min,l=t.max);var u=(l-s)/a;u=h.almostEquals(u,Math.round(u),a/1e3)?Math.round(u):Math.ceil(u),a<(i=1)&&(i=Math.pow(10,1-Math.floor(h.log10(a))),s=Math.round(s*i)/i,l=Math.round(l*i)/i),r.push(void 0!==t.min?t.min:s);for(var d=1;d<u;++d)r.push(Math.round((s+d*a)*i)/i);return r.push(void 0!==t.max?t.max:l),r}(i,t);t.handleDirectionalChanges(),t.max=h.max(a),t.min=h.min(a),e.reverse?(a.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){this.ticksAsNumbers=this.ticks.slice(),this.zeroLineIndex=this.ticks.indexOf(0),i.prototype.convertTicksToLabels.call(this)}})}},{33:33,46:46}],57:[function(t,e,n){"use strict";var c=t(46),i=t(33),a=t(34),r=t(35);e.exports=function(h){var t={position:"left",ticks:{callback:r.formatters.logarithmic}},e=i.extend({determineDataLimits:function(){var o=this,n=o.options,s=o.chart,t=s.data.datasets,e=o.isHorizontal();function l(t){return e?t.xAxisID===o.id:t.yAxisID===o.id}o.min=null,o.max=null,o.minNotZero=null;var i=n.stacked;if(void 0===i&&c.each(t,function(t,e){if(!i){var n=s.getDatasetMeta(e);s.isDatasetVisible(e)&&l(n)&&void 0!==n.stack&&(i=!0)}}),n.stacked||i){var u={};c.each(t,function(t,e){var a=s.getDatasetMeta(e),r=[a.type,void 0===n.stacked&&void 0===a.stack?e:"",a.stack].join(".");s.isDatasetVisible(e)&&l(a)&&(void 0===u[r]&&(u[r]=[]),c.each(t.data,function(t,e){var n=u[r],i=+o.getRightValue(t);isNaN(i)||a.data[e].hidden||i<0||(n[e]=n[e]||0,n[e]+=i)}))}),c.each(u,function(t){if(0<t.length){var e=c.min(t),n=c.max(t);o.min=null===o.min?e:Math.min(o.min,e),o.max=null===o.max?n:Math.max(o.max,n)}})}else c.each(t,function(t,e){var i=s.getDatasetMeta(e);s.isDatasetVisible(e)&&l(i)&&c.each(t.data,function(t,e){var n=+o.getRightValue(t);isNaN(n)||i.data[e].hidden||n<0||(null===o.min?o.min=n:n<o.min&&(o.min=n),null===o.max?o.max=n:n>o.max&&(o.max=n),0!==n&&(null===o.minNotZero||n<o.minNotZero)&&(o.minNotZero=n))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks,n=c.valueOrDefault;t.min=n(e.min,t.min),t.max=n(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(c.log10(t.min))-1),t.max=Math.pow(10,Math.floor(c.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(c.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(c.log10(t.min))+1):10),null===t.minNotZero&&(0<t.min?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(c.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),i={min:e.min,max:e.max},a=t.ticks=function(t,e){var n,i,a=[],r=c.valueOrDefault,o=r(t.min,Math.pow(10,Math.floor(c.log10(e.min)))),s=Math.floor(c.log10(e.max)),l=Math.ceil(e.max/Math.pow(10,s));0===o?(n=Math.floor(c.log10(e.minNotZero)),i=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(o),o=i*Math.pow(10,n)):(n=Math.floor(c.log10(o)),i=Math.floor(o/Math.pow(10,n)));for(var u=n<0?Math.pow(10,Math.abs(n)):1;a.push(o),10==++i&&(i=1,u=0<=++n?1:u),o=Math.round(i*Math.pow(10,n)*u)/u,n<s||n===s&&i<l;);var d=r(t.max,o);return a.push(d),a}(i,t);t.max=c.max(a),t.min=c.min(a),e.reverse?(n=!n,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),n&&a.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),i.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(c.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,n,i,a,r,o=this,s=o.options.ticks.reverse,l=c.log10,u=o._getFirstTickValue(o.minNotZero),d=0;return t=+o.getRightValue(t),r=s?(i=o.end,a=o.start,-1):(i=o.start,a=o.end,1),n=o.isHorizontal()?(e=o.width,s?o.right:o.left):(e=o.height,r*=-1,s?o.top:o.bottom),t!==i&&(0===i&&(e-=d=c.getValueOrDefault(o.options.ticks.fontSize,h.defaults.global.defaultFontSize),i=u),0!==t&&(d+=e/(l(a)-l(i))*(l(t)-l(i))),n+=r*d),n},getValueForPixel:function(t){var e,n,i,a,r=this,o=r.options.ticks.reverse,s=c.log10,l=r._getFirstTickValue(r.minNotZero);if(i=o?(n=r.end,r.start):(n=r.start,r.end),(a=r.isHorizontal()?(e=r.width,o?r.right-t:t-r.left):(e=r.height,o?t-r.top:r.bottom-t))!==n){if(0===n){var u=c.getValueOrDefault(r.options.ticks.fontSize,h.defaults.global.defaultFontSize);a-=u,e-=u,n=l}a*=s(i)-s(n),a/=e,a=Math.pow(10,s(n)+a)}return a}});a.registerScaleType("logarithmic",e,t)}},{33:33,34:34,35:35,46:46}],58:[function(t,e,n){"use strict";var i=t(26),_=t(46),a=t(34),r=t(35);e.exports=function(t){var v=i.global,e={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:r.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function b(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function y(t){var e=t.options.pointLabels,n=_.valueOrDefault(e.fontSize,v.defaultFontSize),i=_.valueOrDefault(e.fontStyle,v.defaultFontStyle),a=_.valueOrDefault(e.fontFamily,v.defaultFontFamily);return{size:n,style:i,family:a,font:_.fontString(n,i,a)}}function p(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:t<i||a<t?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function x(t,e,n,i){if(_.isArray(e))for(var a=n.y,r=1.5*i,o=0;o<e.length;++o)t.fillText(e[o],n.x,a),a+=r;else t.fillText(e,n.x,n.y)}function s(t){return _.isNumber(t)?t:0}var n=t.LinearScaleBase.extend({setDimensions:function(){var t=this,e=t.options,n=e.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var i=_.min([t.height,t.width]),a=_.valueOrDefault(n.fontSize,v.defaultFontSize);t.drawingArea=e.display?i/2-(a/2+n.backdropPaddingY):i/2},determineDataLimits:function(){var a=this,n=a.chart,r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY;_.each(n.data.datasets,function(t,e){if(n.isDatasetVisible(e)){var i=n.getDatasetMeta(e);_.each(t.data,function(t,e){var n=+a.getRightValue(t);isNaN(n)||i.data[e].hidden||(r=Math.min(n,r),o=Math.max(n,o))})}}),a.min=r===Number.POSITIVE_INFINITY?0:r,a.max=o===Number.NEGATIVE_INFINITY?0:o,a.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,e=_.valueOrDefault(t.fontSize,v.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*e)))},convertTicksToLabels:function(){t.LinearScaleBase.prototype.convertTicksToLabels.call(this),this.pointLabels=this.chart.data.labels.map(this.options.pointLabels.callback,this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t,e;this.options.pointLabels.display?function(t){var e,n,i,a=y(t),r=Math.min(t.height/2,t.width/2),o={r:t.width,l:0,t:t.height,b:0},s={};t.ctx.font=a.font,t._pointLabelSizes=[];var l,u,d,h=b(t);for(e=0;e<h;e++){i=t.getPointPosition(e,r),l=t.ctx,u=a.size,d=t.pointLabels[e]||"",n=_.isArray(d)?{w:_.longestText(l,l.font,d),h:d.length*u+1.5*(d.length-1)*u}:{w:l.measureText(d).width,h:u},t._pointLabelSizes[e]=n;var c=t.getIndexAngle(e),f=_.toDegrees(c)%360,g=p(f,i.x,n.w,0,180),m=p(f,i.y,n.h,90,270);g.start<o.l&&(o.l=g.start,s.l=c),g.end>o.r&&(o.r=g.end,s.r=c),m.start<o.t&&(o.t=m.start,s.t=c),m.end>o.b&&(o.b=m.end,s.b=c)}t.setReductions(r,o,s)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,n){var i=e.l/Math.sin(n.l),a=Math.max(e.r-this.width,0)/Math.sin(n.r),r=-e.t/Math.cos(n.t),o=-Math.max(e.b-this.height,0)/Math.cos(n.b);i=s(i),a=s(a),r=s(r),o=s(o),this.drawingArea=Math.min(Math.round(t-(i+a)/2),Math.round(t-(r+o)/2)),this.setCenterPoint(i,a,r,o)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-i-a.drawingArea;a.xCenter=Math.round((o+r)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/b(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){if(null===t)return 0;var e=this.drawingArea/(this.max-this.min);return this.options.ticks.reverse?(this.max-t)*e:(t-this.min)*e},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(n)*e)+this.xCenter,y:Math.round(Math.sin(n)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:0<t&&0<e?t:0)},draw:function(){var r=this,t=r.options,o=t.gridLines,s=t.ticks,l=_.valueOrDefault;if(t.display){var u=r.ctx,d=this.getIndexAngle(0),h=l(s.fontSize,v.defaultFontSize),e=l(s.fontStyle,v.defaultFontStyle),n=l(s.fontFamily,v.defaultFontFamily),c=_.fontString(h,e,n);_.each(r.ticks,function(t,e){if(0<e||s.reverse){var n=r.getDistanceFromCenterForValue(r.ticksAsNumbers[e]);if(o.display&&0!==e&&function(t,e,n,i){var a=t.ctx;if(a.strokeStyle=_.valueAtIndexOrDefault(e.color,i-1),a.lineWidth=_.valueAtIndexOrDefault(e.lineWidth,i-1),t.options.gridLines.circular)a.beginPath(),a.arc(t.xCenter,t.yCenter,n,0,2*Math.PI),a.closePath(),a.stroke();else{var r=b(t);if(0===r)return;a.beginPath();var o=t.getPointPosition(0,n);a.moveTo(o.x,o.y);for(var s=1;s<r;s++)o=t.getPointPosition(s,n),a.lineTo(o.x,o.y);a.closePath(),a.stroke()}}(r,o,n,e),s.display){var i=l(s.fontColor,v.defaultFontColor);if(u.font=c,u.save(),u.translate(r.xCenter,r.yCenter),u.rotate(d),s.showLabelBackdrop){var a=u.measureText(t).width;u.fillStyle=s.backdropColor,u.fillRect(-a/2-s.backdropPaddingX,-n-h/2-s.backdropPaddingY,a+2*s.backdropPaddingX,h+2*s.backdropPaddingY)}u.textAlign="center",u.textBaseline="middle",u.fillStyle=i,u.fillText(t,0,-n),u.restore()}}}),(t.angleLines.display||t.pointLabels.display)&&function(t){var e=t.ctx,n=t.options,i=n.angleLines,a=n.pointLabels;e.lineWidth=i.lineWidth,e.strokeStyle=i.color;var r,o,s,l,u=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),d=y(t);e.textBaseline="top";for(var h=b(t)-1;0<=h;h--){if(i.display){var c=t.getPointPosition(h,u);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(c.x,c.y),e.stroke(),e.closePath()}if(a.display){var f=t.getPointPosition(h,u+5),g=_.valueAtIndexOrDefault(a.fontColor,h,v.defaultFontColor);e.font=d.font,e.fillStyle=g;var m=t.getIndexAngle(h),p=_.toDegrees(m);e.textAlign=0===(l=p)||180===l?"center":l<180?"left":"right",r=p,o=t._pointLabelSizes[h],s=f,90===r||270===r?s.y-=o.h/2:(270<r||r<90)&&(s.y-=o.h),x(e,t.pointLabels[h]||"",f,d.size)}}}(r)}}});a.registerScaleType("radialLinear",n,e)}},{26:26,34:34,35:35,46:46}],59:[function(t,e,n){"use strict";var y=t(6);y="function"==typeof y?y:window.moment;var o=t(26),p=t(46),i=t(33),a=t(34),m=Number.MIN_SAFE_INTEGER||-9007199254740991,v=Number.MAX_SAFE_INTEGER||9007199254740991,x={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},_=Object.keys(x);function b(t,e){return t-e}function k(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e<n;++e)a[i=t[e]]||(a[i]=!0,r.push(i));return r}function w(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;0<=o&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]<n)o=i+1;else{if(!(a[e]>n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(n-r[e])/s:0,u=(o[i]-r[i])*l;return r[i]+u}function M(t,e){var n=e.parser,i=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof i?y(t,i):(t instanceof y||(t=y(t)),t.isValid()?t:"function"==typeof i?i(t):t)}function S(t,e){if(p.isNullOrUndef(t))return null;var n=e.options.time,i=M(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function D(t){for(var e=_.indexOf(t)+1,n=_.length;e<n;++e)if(x[_[e]].common)return _[e]}function C(t,e,n,i){var a,r=i.time,o=r.unit||function(t,e,n,i){var a,r,o,s=_.length;for(a=_.indexOf(t);a<s-1;++a)if(o=(r=x[_[a]]).steps?r.steps[r.steps.length-1]:v,r.common&&Math.ceil((n-e)/(o*r.size))<=i)return _[a];return _[s-1]}(r.minUnit,t,e,n),s=D(o),l=p.valueOrDefault(r.stepSize,r.unitStepSize),u="week"===o&&r.isoWeekday,d=i.ticks.major.enabled,h=x[o],c=y(t),f=y(e),g=[];for(l||(l=function(t,e,n,i){var a,r,o,s=e-t,l=x[n],u=l.size,d=l.steps;if(!d)return Math.ceil(s/(i*u));for(a=0,r=d.length;a<r&&(o=d[a],!(Math.ceil(s/(u*o))<=i));++a);return o}(t,e,o,n)),u&&(c=c.isoWeekday(u),f=f.isoWeekday(u)),c=c.startOf(u?"day":o),(f=f.startOf(u?"day":o))<e&&f.add(1,o),a=y(c),d&&s&&!u&&!r.round&&(a.startOf(s),a.add(~~((c-a)/(h.size*l))*l,o));a<f;a.add(l,o))g.push(+a);return g.push(+a),g}e.exports=function(){var t=i.extend({initialize:function(){if(!y)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),i.prototype.initialize.call(this)},update:function(){var t=this.options;return t.time&&t.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),i.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),i.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,i,a,r,o=this,s=o.chart,l=o.options.time,u=l.unit||"day",d=v,h=m,c=[],f=[],g=[];for(t=0,n=s.data.labels.length;t<n;++t)g.push(S(s.data.labels[t],o));for(t=0,n=(s.data.datasets||[]).length;t<n;++t)if(s.isDatasetVisible(t))if(a=s.data.datasets[t].data,p.isObject(a[0]))for(f[t]=[],e=0,i=a.length;e<i;++e)r=S(a[e],o),c.push(r),f[t][e]=r;else c.push.apply(c,g),f[t]=g.slice(0);else f[t]=[];g.length&&(g=k(g).sort(b),d=Math.min(d,g[0]),h=Math.max(h,g[g.length-1])),c.length&&(c=k(c).sort(b),d=Math.min(d,c[0]),h=Math.max(h,c[c.length-1])),d=S(l.min,o)||d,h=S(l.max,o)||h,d=d===v?+y().startOf(u):d,h=h===m?+y().endOf(u)+1:h,o.min=Math.min(d,h),o.max=Math.max(d+1,h),o._horizontal=o.isHorizontal(),o._table=[],o._timestamps={data:c,datasets:f,labels:g}},buildTicks:function(){var t,e,n,i,a,r,o,s,l,u,d,h,c=this,f=c.min,g=c.max,m=c.options,p=m.time,v=[],b=[];switch(m.ticks.source){case"data":v=c._timestamps.data;break;case"labels":v=c._timestamps.labels;break;case"auto":default:v=C(f,g,c.getLabelCapacity(f),m)}for("ticks"===m.bounds&&v.length&&(f=v[0],g=v[v.length-1]),f=S(p.min,c)||f,g=S(p.max,c)||g,t=0,e=v.length;t<e;++t)f<=(n=v[t])&&n<=g&&b.push(n);return c.min=f,c.max=g,c._unit=p.unit||function(t,e,n,i){var a,r,o=y.duration(y(i).diff(y(n)));for(a=_.length-1;a>=_.indexOf(e);a--)if(r=_[a],x[r].common&&o.as(r)>=t.length)return r;return _[e?_.indexOf(e):0]}(b,p.minUnit,c.min,c.max),c._majorUnit=D(c._unit),c._table=function(t,e,n,i){if("linear"===i||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var a,r,o,s,l,u=[],d=[e];for(a=0,r=t.length;a<r;++a)e<(s=t[a])&&s<n&&d.push(s);for(d.push(n),a=0,r=d.length;a<r;++a)l=d[a+1],o=d[a-1],s=d[a],void 0!==o&&void 0!==l&&Math.round((l+o)/2)===s||u.push({time:s,pos:a/(r-1)});return u}(c._timestamps.data,f,g,m.distribution),c._offsets=(i=c._table,a=b,r=f,o=g,h=d=0,(s=m).offset&&a.length&&(s.time.min||(l=1<a.length?a[1]:o,u=a[0],d=(w(i,"time",l,"pos")-w(i,"time",u,"pos"))/2),s.time.max||(l=a[a.length-1],u=1<a.length?a[a.length-2]:r,h=(w(i,"time",l,"pos")-w(i,"time",u,"pos"))/2)),{left:d,right:h}),c._labelFormat=function(t,e){var n,i,a,r=t.length;for(n=0;n<r;n++){if(0!==(i=M(t[n],e)).millisecond())return"MMM D, YYYY h:mm:ss.SSS a";0===i.second()&&0===i.minute()&&0===i.hour()||(a=!0)}return a?"MMM D, YYYY h:mm:ss a":"MMM D, YYYY"}(c._timestamps.data,p),function(t,e){var n,i,a,r,o=[];for(n=0,i=t.length;n<i;++n)a=t[n],r=!!e&&a===+y(a).startOf(e),o.push({value:a,major:r});return o}(b,c._majorUnit)},getLabelForIndex:function(t,e){var n=this.chart.data,i=this.options.time,a=n.labels&&t<n.labels.length?n.labels[t]:"",r=n.datasets[e].data[t];return p.isObject(r)&&(a=this.getRightValue(r)),i.tooltipFormat?M(a,i).format(i.tooltipFormat):"string"==typeof a?a:M(a,i).format(this._labelFormat)},tickFormatFunction:function(t,e,n,i){var a=this.options,r=t.valueOf(),o=a.time.displayFormats,s=o[this._unit],l=this._majorUnit,u=o[l],d=t.clone().startOf(l).valueOf(),h=a.ticks.major,c=h.enabled&&l&&u&&r===d,f=t.format(i||(c?u:s)),g=c?h:a.ticks.minor,m=p.valueOrDefault(g.callback,g.userCallback);return m?m(f,e,n):f},convertTicksToLabels:function(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(this.tickFormatFunction(y(t[e].value),e,t));return i},getPixelForOffset:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=w(e._table,"time",t,"pos");return i+n*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,n){var i=null;if(void 0!==e&&void 0!==n&&(i=this._timestamps.datasets[n][e]),null===i&&(i=S(t,this)),null!==i)return this.getPixelForOffset(i)},getPixelForTick:function(t){var e=this.getTicks();return 0<=t&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=(n?(t-i)/n:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,r=w(e._table,"pos",a,"time");return y(r)},getLabelWidth:function(t){var e=this.options.ticks,n=this.ctx.measureText(t).width,i=p.toRadians(e.maxRotation),a=Math.cos(i),r=Math.sin(i);return n*a+p.valueOrDefault(e.fontSize,o.global.defaultFontSize)*r},getLabelCapacity:function(t){var e=this.options.time.displayFormats.millisecond,n=this.tickFormatFunction(y(t),0,[],e),i=this.getLabelWidth(n),a=this.isHorizontal()?this.width:this.height,r=Math.floor(a/i);return 0<r?r:1}});a.registerScaleType("time",t,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{26:26,33:33,34:34,46:46,6:6}]},{},[7])(7)}); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/js/Chart.min.js b/wp-content/plugins/wp-statistics/assets/js/Chart.min.js new file mode 100644 index 0000000..653e7cf --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/js/Chart.min.js @@ -0,0 +1,10 @@ +/*! + * Chart.js + * http://chartjs.org/ + * Version: 2.7.3 + * + * Copyright 2018 Chart.js Contributors + * Released under the MIT license + * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function o(r,s,l){function u(e,t){if(!s[e]){if(!r[e]){var i="function"==typeof require&&require;if(!t&&i)return i(e,!0);if(d)return d(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var a=s[e]={exports:{}};r[e][0].call(a.exports,function(t){return u(r[e][1][t]||t)},a,a.exports,o,r,s,l)}return s[e].exports}for(var d="function"==typeof require&&require,t=0;t<l.length;t++)u(l[t]);return u}({1:[function(t,e,i){},{}],2:[function(t,e,i){var o=t(6);function n(t){if(t){var e=[0,0,0],i=1,n=t.match(/^#([a-fA-F0-9]{3})$/i);if(n){n=n[1];for(var a=0;a<e.length;a++)e[a]=parseInt(n[a]+n[a],16)}else if(n=t.match(/^#([a-fA-F0-9]{6})$/i)){n=n[1];for(a=0;a<e.length;a++)e[a]=parseInt(n.slice(2*a,2*a+2),16)}else if(n=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=parseInt(n[a+1]);i=parseFloat(n[4])}else if(n=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=Math.round(2.55*parseFloat(n[a+1]));i=parseFloat(n[4])}else if(n=t.match(/(\w+)/)){if("transparent"==n[1])return[0,0,0,0];if(!(e=o[n[1]]))return}for(a=0;a<e.length;a++)e[a]=d(e[a],0,255);return i=i||0==i?d(i,0,1):1,e[3]=i,e}}function a(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var i=parseFloat(e[4]);return[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(i)?1:i,0,1)]}}}function r(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var i=parseFloat(e[4]);return[d(parseInt(e[1]),0,360),d(parseFloat(e[2]),0,100),d(parseFloat(e[3]),0,100),d(isNaN(i)?1:i,0,1)]}}}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function l(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function u(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function d(t,e,i){return Math.min(Math.max(e,t),i)}function c(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}e.exports={getRgba:n,getHsla:a,getRgb:function(t){var e=n(t);return e&&e.slice(0,3)},getHsl:function(t){var e=a(t);return e&&e.slice(0,3)},getHwb:r,getAlpha:function(t){var e=n(t);{if(e)return e[3];if(e=a(t))return e[3];if(e=r(t))return e[3]}},hexString:function(t){return"#"+c(t[0])+c(t[1])+c(t[2])},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return s(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:s,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return l(t,e);var i=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+i+"%, "+n+"%, "+a+"%)"},percentaString:l,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return u(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:u,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return h[t.slice(0,3)]}};var h={};for(var f in o)h[o[f]]=f},{6:6}],3:[function(t,e,i){var d=t(5),n=t(2),r=function(t){return t instanceof r?t:this instanceof r?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=n.getRgba(t))?this.setValues("rgb",e):(e=n.getHsla(t))?this.setValues("hsl",e):(e=n.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new r(t);var e};r.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return n.hexString(this.values.rgb)},rgbString:function(){return n.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return n.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return n.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return n.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return n.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return n.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return n.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],i=0;i<t.length;i++){var n=t[i]/255;e[i]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),i=t.luminosity();return i<e?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return 7.1<=e?"AAA":4.5<=e?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=this,n=t,a=void 0===e?.5:e,o=2*a-1,r=i.alpha()-n.alpha(),s=((o*r==-1?o:(o+r)/(1+o*r))+1)/2,l=1-s;return this.rgb(s*i.red()+l*n.red(),s*i.green()+l*n.green(),s*i.blue()+l*n.blue()).alpha(i.alpha()*a+n.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new r,n=this.values,a=i.values;for(var o in n)n.hasOwnProperty(o)&&(t=n[o],"[object Array]"===(e={}.toString.call(t))?a[o]=t.slice(0):"[object Number]"===e?a[o]=t:console.error("unexpected color value:",t));return i}},r.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},r.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},r.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n<t.length;n++)i[t.charAt(n)]=e[t][n];return 1!==e.alpha&&(i.a=e.alpha),i},r.prototype.setValues=function(t,e){var i,n,a=this.values,o=this.spaces,r=this.maxes,s=1;if(this.valid=!0,"alpha"===t)s=e;else if(e.length)a[t]=e.slice(0,t.length),s=e[t.length];else if(void 0!==e[t.charAt(0)]){for(i=0;i<t.length;i++)a[t][i]=e[t.charAt(i)];s=e.a}else if(void 0!==e[o[t][0]]){var l=o[t];for(i=0;i<t.length;i++)a[t][i]=e[l[i]];s=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===s?a.alpha:s)),"alpha"===t)return!1;for(i=0;i<t.length;i++)n=Math.max(0,Math.min(r[t][i],a[t][i])),a[t][i]=Math.round(n);for(var u in o)u!==t&&(a[u]=d[t][u](a[t]));return!0},r.prototype.setSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i),this)},r.prototype.setChannel=function(t,e,i){var n=this.values[t];return void 0===i?n[e]:(i===n[e]||(n[e]=i,this.setValues(t,n)),this)},"undefined"!=typeof window&&(window.Color=r),e.exports=r},{2:2,5:5}],4:[function(t,e,i){function a(t){var e,i,n=t[0]/255,a=t[1]/255,o=t[2]/255,r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(r+s)/2,[e,100*(s==r?0:i<=.5?l/(s+r):l/(2-s-r)),100*i]}function n(t){var e,i,n=t[0],a=t[1],o=t[2],r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return i=0==s?0:l/s*1e3/10,s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,i,s/255*1e3/10]}function o(t){var e=t[0],i=t[1],n=t[2];return[a(t)[0],100*(1/255*Math.min(e,Math.min(i,n))),100*(n=1-1/255*Math.max(e,Math.max(i,n)))]}function s(t){var e,i=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*((1-i-(e=Math.min(1-i,1-n,1-a)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function l(t){return S[JSON.stringify(t)]}function u(t){var e=t[0]/255,i=t[1]/255,n=t[2]/255;return[100*(.4124*(e=.04045<e?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=.04045<i?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=.04045<n?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=u(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=.008856<(i/=95.047)?Math.pow(i,1/3):7.787*i+16/116,[116*(n=.008856<n?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=.008856<a?Math.pow(a,1/3):7.787*a+16/116))]}function c(t){var e,i,n,a,o,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[o=255*l,o,o];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(n=r+1/3*-(u-1))<0&&n++,1<n&&n--,o=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[u]=255*o;return a}function h(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*n*(1-i),s=255*n*(1-i*o),l=255*n*(1-i*(1-o));n*=255;switch(a){case 0:return[n,l,r];case 1:return[s,n,r];case 2:return[r,n,l];case 3:return[r,s,n];case 4:return[l,r,n];case 5:return[n,r,s]}}function f(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(1<u&&(s/=u,l/=u),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function p(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function m(t){var e,i,n,a=t[0]/100,o=t[1]/100,r=t[2]/100;return i=-.9689*a+1.8758*o+.0415*r,n=.0557*a+-.204*o+1.057*r,e=.0031308<(e=3.2406*a+-1.5372*o+-.4986*r)?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=.0031308<i?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=.0031308<n?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function v(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=.008856<(e/=95.047)?Math.pow(e,1/3):7.787*e+16/116,[116*(i=.008856<i?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=.008856<n?Math.pow(n,1/3):7.787*n+16/116))]}function x(t){var e,i,n,a,o=t[0],r=t[1],s=t[2];return a=o<=8?(i=100*o/903.3)/100*7.787+16/116:(i=100*Math.pow((o+16)/116,3),Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function y(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function k(t){return m(x(t))}function M(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return C[t]}e.exports={rgb2hsl:a,rgb2hsv:n,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return y(d(t))},hsl2rgb:c,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;return 0!==n?[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]:[0,0,0]},hsl2hwb:function(t){return o(c(t))},hsl2cmyk:function(t){return s(c(t))},hsl2keyword:function(t){return l(c(t))},hsv2rgb:h,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,o=t[2]/100;return e=a*o,[n,100*(e=(e/=(i=(2-a)*o)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return o(h(t))},hsv2cmyk:function(t){return s(h(t))},hsv2keyword:function(t){return l(h(t))},hwb2rgb:f,hwb2hsl:function(t){return a(f(t))},hwb2hsv:function(t){return n(f(t))},hwb2cmyk:function(t){return s(f(t))},hwb2keyword:function(t){return l(f(t))},cmyk2rgb:p,cmyk2hsl:function(t){return a(p(t))},cmyk2hsv:function(t){return n(p(t))},cmyk2hwb:function(t){return o(p(t))},cmyk2keyword:function(t){return l(p(t))},keyword2rgb:w,keyword2hsl:function(t){return a(w(t))},keyword2hsv:function(t){return n(w(t))},keyword2hwb:function(t){return o(w(t))},keyword2cmyk:function(t){return s(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return u(w(t))},xyz2rgb:m,xyz2lab:v,xyz2lch:function(t){return y(v(t))},lab2xyz:x,lab2rgb:k,lab2lch:y,lch2lab:M,lch2xyz:function(t){return x(M(t))},lch2rgb:function(t){return k(M(t))}};var C={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},S={};for(var _ in C)S[JSON.stringify(C[_])]=_},{}],5:[function(t,e,i){var a=t(4),o=function(){return new u};for(var n in a){o[n+"Raw"]=function(e){return function(t){return"number"==typeof t&&(t=Array.prototype.slice.call(arguments)),a[e](t)}}(n);var r=/(\w+)2(\w+)/.exec(n),s=r[1],l=r[2];(o[s]=o[s]||{})[l]=o[n]=function(n){return function(t){"number"==typeof t&&(t=Array.prototype.slice.call(arguments));var e=a[n](t);if("string"==typeof e||void 0===e)return e;for(var i=0;i<e.length;i++)e[i]=Math.round(e[i]);return e}}(n)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var i=this.space,n=this.convs[i];e=o[i][t](n),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(e){u.prototype[e]=function(t){return this.routeSpace(e,arguments)}}),e.exports=o},{4:4}],6:[function(t,e,i){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],7:[function(t,e,i){var n=t(30)();n.helpers=t(46),t(28)(n),n.Animation=t(22),n.animationService=t(23),n.defaults=t(26),n.Element=t(27),n.elements=t(41),n.Interaction=t(29),n.layouts=t(31),n.platform=t(49),n.plugins=t(32),n.Scale=t(33),n.scaleService=t(34),n.Ticks=t(35),n.Tooltip=t(36),t(24)(n),t(25)(n),t(56)(n),t(54)(n),t(55)(n),t(57)(n),t(58)(n),t(59)(n),t(15)(n),t(16)(n),t(17)(n),t(18)(n),t(19)(n),t(20)(n),t(21)(n),t(8)(n),t(9)(n),t(10)(n),t(11)(n),t(12)(n),t(13)(n),t(14)(n);var a=t(50);for(var o in a)a.hasOwnProperty(o)&&n.plugins.register(a[o]);n.platform.initialize(),e.exports=n,"undefined"!=typeof window&&(window.Chart=n),n.Legend=a.legend._element,n.Title=a.title._element,n.pluginService=n.plugins,n.PluginBase=n.Element.extend({}),n.canvasHelpers=n.helpers.canvas,n.layoutService=n.layouts},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,41:41,46:46,49:49,50:50,54:54,55:55,56:56,57:57,58:58,59:59,8:8,9:9}],8:[function(t,e,i){"use strict";e.exports=function(i){i.Bar=function(t,e){return e.type="bar",new i(t,e)}}},{}],9:[function(t,e,i){"use strict";e.exports=function(i){i.Bubble=function(t,e){return e.type="bubble",new i(t,e)}}},{}],10:[function(t,e,i){"use strict";e.exports=function(i){i.Doughnut=function(t,e){return e.type="doughnut",new i(t,e)}}},{}],11:[function(t,e,i){"use strict";e.exports=function(i){i.Line=function(t,e){return e.type="line",new i(t,e)}}},{}],12:[function(t,e,i){"use strict";e.exports=function(i){i.PolarArea=function(t,e){return e.type="polarArea",new i(t,e)}}},{}],13:[function(t,e,i){"use strict";e.exports=function(i){i.Radar=function(t,e){return e.type="radar",new i(t,e)}}},{}],14:[function(t,e,i){"use strict";e.exports=function(i){i.Scatter=function(t,e){return e.type="scatter",new i(t,e)}}},{}],15:[function(t,e,i){"use strict";var n=t(26),a=t(41),S=t(46);n._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),n._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var i="";return 0<t.length&&(t[0].yLabel?i=t[0].yLabel:0<e.labels.length&&t[0].index<e.labels.length&&(i=e.labels[t[0].index])),i},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),e.exports=function(e){e.controllers.bar=e.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var t;e.DatasetController.prototype.initialize.apply(this,arguments),(t=this.getMeta()).stack=this.getDataset().stack,t.bar=!0},update:function(t){var e,i,n=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,i=n.length;e<i;++e)this.updateElement(n[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.chart,o=n.getMeta(),r=n.getDataset(),s=t.custom||{},l=a.options.elements.rectangle;t._xScale=n.getScaleForId(o.xAxisID),t._yScale=n.getScaleForId(o.yAxisID),t._datasetIndex=n.index,t._index=e,t._model={datasetLabel:r.label,label:a.data.labels[e],borderSkipped:s.borderSkipped?s.borderSkipped:l.borderSkipped,backgroundColor:s.backgroundColor?s.backgroundColor:S.valueAtIndexOrDefault(r.backgroundColor,e,l.backgroundColor),borderColor:s.borderColor?s.borderColor:S.valueAtIndexOrDefault(r.borderColor,e,l.borderColor),borderWidth:s.borderWidth?s.borderWidth:S.valueAtIndexOrDefault(r.borderWidth,e,l.borderWidth)},n.updateElementGeometry(t,e,i),t.pivot()},updateElementGeometry:function(t,e,i){var n=this,a=t._model,o=n.getValueScale(),r=o.getBasePixel(),s=o.isHorizontal(),l=n._ruler||n.getRuler(),u=n.calculateBarValuePixels(n.index,e),d=n.calculateBarIndexPixels(n.index,e,l);a.horizontal=s,a.base=i?r:u.base,a.x=s?i?r:u.head:d.center,a.y=s?d.center:i?r:u.head,a.height=s?d.size:void 0,a.width=s?void 0:d.size},getValueScaleId:function(){return this.getMeta().yAxisID},getIndexScaleId:function(){return this.getMeta().xAxisID},getValueScale:function(){return this.getScaleForId(this.getValueScaleId())},getIndexScale:function(){return this.getScaleForId(this.getIndexScaleId())},_getStacks:function(t){var e,i,n=this.chart,a=this.getIndexScale().options.stacked,o=void 0===t?n.data.datasets.length:t+1,r=[];for(e=0;e<o;++e)(i=n.getDatasetMeta(e)).bar&&n.isDatasetVisible(e)&&(!1===a||!0===a&&-1===r.indexOf(i.stack)||void 0===a&&(void 0===i.stack||-1===r.indexOf(i.stack)))&&r.push(i.stack);return r},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var i=this._getStacks(t),n=void 0!==e?i.indexOf(e):-1;return-1===n?i.length-1:n},getRuler:function(){var t,e,i=this.getIndexScale(),n=this.getStackCount(),a=this.index,o=i.isHorizontal(),r=o?i.left:i.top,s=r+(o?i.width:i.height),l=[];for(t=0,e=this.getMeta().data.length;t<e;++t)l.push(i.getPixelForValue(null,t,a));return{min:S.isNullOrUndef(i.options.barThickness)?function(t,e){var i,n,a,o,r=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,o=e.length;a<o;++a)r=Math.min(r,e[a]-e[a-1]);for(a=0,o=s.length;a<o;++a)n=t.getPixelForTick(a),r=0<a?Math.min(r,n-i):r,i=n;return r}(i,l):-1,pixels:l,start:r,end:s,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,o,r,s,l=this.chart,u=this.getMeta(),d=this.getValueScale(),c=l.data.datasets,h=d.getRightValue(c[t].data[e]),f=d.options.stacked,g=u.stack,p=0;if(f||void 0===f&&void 0!==g)for(i=0;i<t;++i)(n=l.getDatasetMeta(i)).bar&&n.stack===g&&n.controller.getValueScaleId()===d.id&&l.isDatasetVisible(i)&&(a=d.getRightValue(c[i].data[e]),(h<0&&a<0||0<=h&&0<a)&&(p+=a));return o=d.getPixelForValue(p),{size:s=((r=d.getPixelForValue(p+h))-o)/2,base:o,head:r,center:r+s/2}},calculateBarIndexPixels:function(t,e,i){var n,a,o,r,s,l,u,d,c,h,f,g,p,m,v,b,x,y=i.scale.options,k="flex"===y.barThickness?(c=e,f=y,p=(h=i).pixels,m=p[c],v=0<c?p[c-1]:null,b=c<p.length-1?p[c+1]:null,x=f.categoryPercentage,null===v&&(v=m-(null===b?h.end-m:b-m)),null===b&&(b=m+m-v),g=m-(m-v)/2*x,{chunk:(b-v)/2*x/h.stackCount,ratio:f.barPercentage,start:g}):(n=e,a=i,l=(o=y).barThickness,u=a.stackCount,d=a.pixels[n],s=S.isNullOrUndef(l)?(r=a.min*o.categoryPercentage,o.barPercentage):(r=l*u,1),{chunk:r/u,ratio:s,start:d-r/2}),M=this.getStackIndex(t,this.getMeta().stack),w=k.start+k.chunk*M+k.chunk/2,C=Math.min(S.valueOrDefault(y.maxBarThickness,1/0),k.chunk*k.ratio);return{base:w-C/2,head:w+C/2,center:w,size:C}},draw:function(){var t=this.chart,e=this.getValueScale(),i=this.getMeta().data,n=this.getDataset(),a=i.length,o=0;for(S.canvas.clipArea(t.ctx,t.chartArea);o<a;++o)isNaN(e.getRightValue(n.data[o]))||i[o].draw();S.canvas.unclipArea(t.ctx)}}),e.controllers.horizontalBar=e.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{26:26,41:41,46:46}],16:[function(t,e,i){"use strict";var n=t(26),a=t(41),g=t(46);n._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var i=e.datasets[t.datasetIndex].label||"",n=e.datasets[t.datasetIndex].data[t.index];return i+": ("+t.xLabel+", "+t.yLabel+", "+n.r+")"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(i){var n=this,t=n.getMeta().data;g.each(t,function(t,e){n.updateElement(t,e,i)})},updateElement:function(t,e,i){var n=this,a=n.getMeta(),o=t.custom||{},r=n.getScaleForId(a.xAxisID),s=n.getScaleForId(a.yAxisID),l=n._resolveElementOptions(t,e),u=n.getDataset().data[e],d=n.index,c=i?r.getPixelForDecimal(.5):r.getPixelForValue("object"==typeof u?u:NaN,e,d),h=i?s.getBasePixel():s.getPixelForValue(u,e,d);t._xScale=r,t._yScale=s,t._options=l,t._datasetIndex=d,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:i?0:l.radius,skip:o.skip||isNaN(c)||isNaN(h),x:c,y:h},t.pivot()},setHoverStyle:function(t){var e=t._model,i=t._options;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=g.valueOrDefault(i.hoverBackgroundColor,g.getHoverColor(i.backgroundColor)),e.borderColor=g.valueOrDefault(i.hoverBorderColor,g.getHoverColor(i.borderColor)),e.borderWidth=g.valueOrDefault(i.hoverBorderWidth,i.borderWidth),e.radius=i.radius+i.hoverRadius},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,u=g.options.resolve,d=r.data[e],c={},h={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},f=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(i=0,n=f.length;i<n;++i)c[a=f[i]]=u([s[a],r[a],l[a]],h,e);return c.radius=u([s.radius,d?d.r:void 0,r.radius,l.radius],h,e),c}})}},{26:26,41:41,46:46}],17:[function(t,e,i){"use strict";var n=t(26),a=t(41),A=t(46);n._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o<n[0].data.length;++o)e.push('<li><span style="background-color:'+n[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(l){var u=l.data;return u.labels.length&&u.datasets.length?u.labels.map(function(t,e){var i=l.getDatasetMeta(0),n=u.datasets[0],a=i.data[e],o=a&&a.custom||{},r=A.valueAtIndexOrDefault,s=l.options.elements.arc;return{text:t,fillStyle:o.backgroundColor?o.backgroundColor:r(n.backgroundColor,e,s.backgroundColor),strokeStyle:o.borderColor?o.borderColor:r(n.borderColor,e,s.borderColor),lineWidth:o.borderWidth?o.borderWidth:r(n.borderWidth,e,s.borderWidth),hidden:isNaN(n.data[e])||i.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i<n;++i)(a=r.getDatasetMeta(i)).data[o]&&(a.data[o].hidden=!a.data[o].hidden);r.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var i=e.labels[t.index],n=": "+e.datasets[t.datasetIndex].data[t.index];return A.isArray(i)?(i=i.slice())[0]+=n:i+=n,i}}}}),n._set("pie",A.clone(n.doughnut)),n._set("pie",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:A.noop,getRingIndex:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&++e;return e},update:function(i){var n=this,t=n.chart,e=t.chartArea,a=t.options,o=a.elements.arc,r=e.right-e.left-o.borderWidth,s=e.bottom-e.top-o.borderWidth,l=Math.min(r,s),u={x:0,y:0},d=n.getMeta(),c=a.cutoutPercentage,h=a.circumference;if(h<2*Math.PI){var f=a.rotation%(2*Math.PI),g=(f+=2*Math.PI*(f>=Math.PI?-1:f<-Math.PI?1:0))+h,p=Math.cos(f),m=Math.sin(f),v=Math.cos(g),b=Math.sin(g),x=f<=0&&0<=g||f<=2*Math.PI&&2*Math.PI<=g,y=f<=.5*Math.PI&&.5*Math.PI<=g||f<=2.5*Math.PI&&2.5*Math.PI<=g,k=f<=-Math.PI&&-Math.PI<=g||f<=Math.PI&&Math.PI<=g,M=f<=.5*-Math.PI&&.5*-Math.PI<=g||f<=1.5*Math.PI&&1.5*Math.PI<=g,w=c/100,C=k?-1:Math.min(p*(p<0?1:w),v*(v<0?1:w)),S=M?-1:Math.min(m*(m<0?1:w),b*(b<0?1:w)),_=x?1:Math.max(p*(0<p?1:w),v*(0<v?1:w)),D=y?1:Math.max(m*(0<m?1:w),b*(0<b?1:w)),P=.5*(_-C),I=.5*(D-S);l=Math.min(r/P,s/I),u={x:-.5*(_+C),y:-.5*(D+S)}}t.borderWidth=n.getMaxBorderWidth(d.data),t.outerRadius=Math.max((l-t.borderWidth)/2,0),t.innerRadius=Math.max(c?t.outerRadius/100*c:0,0),t.radiusLength=(t.outerRadius-t.innerRadius)/t.getVisibleDatasetCount(),t.offsetX=u.x*t.outerRadius,t.offsetY=u.y*t.outerRadius,d.total=n.calculateTotal(),n.outerRadius=t.outerRadius-t.radiusLength*n.getRingIndex(n.index),n.innerRadius=Math.max(n.outerRadius-t.radiusLength,0),A.each(d.data,function(t,e){n.updateElement(t,e,i)})},updateElement:function(t,e,i){var n=this,a=n.chart,o=a.chartArea,r=a.options,s=r.animation,l=(o.left+o.right)/2,u=(o.top+o.bottom)/2,d=r.rotation,c=r.rotation,h=n.getDataset(),f=i&&s.animateRotate?0:t.hidden?0:n.calculateCircumference(h.data[e])*(r.circumference/(2*Math.PI)),g=i&&s.animateScale?0:n.innerRadius,p=i&&s.animateScale?0:n.outerRadius,m=A.valueAtIndexOrDefault;A.extend(t,{_datasetIndex:n.index,_index:e,_model:{x:l+a.offsetX,y:u+a.offsetY,startAngle:d,endAngle:c,circumference:f,outerRadius:p,innerRadius:g,label:m(h.label,e,a.data.labels[e])}});var v=t._model,b=t.custom||{},x=A.valueAtIndexOrDefault,y=this.chart.options.elements.arc;v.backgroundColor=b.backgroundColor?b.backgroundColor:x(h.backgroundColor,e,y.backgroundColor),v.borderColor=b.borderColor?b.borderColor:x(h.borderColor,e,y.borderColor),v.borderWidth=b.borderWidth?b.borderWidth:x(h.borderWidth,e,y.borderWidth),i&&s.animateRotate||(v.startAngle=0===e?r.rotation:n.getMeta().data[e-1]._model.endAngle,v.endAngle=v.startAngle+v.circumference),t.pivot()},calculateTotal:function(){var i,n=this.getDataset(),t=this.getMeta(),a=0;return A.each(t.data,function(t,e){i=n.data[e],isNaN(i)||t.hidden||(a+=Math.abs(i))}),a},calculateCircumference:function(t){var e=this.getMeta().total;return 0<e&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,i,n=0,a=this.index,o=t.length,r=0;r<o;r++)n=(n=n<(e=t[r]._model?t[r]._model.borderWidth:0)?e:n)<(i=t[r]._chart?t[r]._chart.config.data.datasets[a].hoverBorderWidth:0)?i:n;return n}})}},{26:26,41:41,46:46}],18:[function(t,e,i){"use strict";var n=t(26),a=t(41),g=t(46);n._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function f(t,e){return g.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var e,i,n,a=this,o=a.getMeta(),r=o.dataset,s=o.data||[],l=a.chart.options,u=l.elements.line,d=a.getScaleForId(o.yAxisID),c=a.getDataset(),h=f(c,l);for(h&&(n=r.custom||{},void 0!==c.tension&&void 0===c.lineTension&&(c.lineTension=c.tension),r._scale=d,r._datasetIndex=a.index,r._children=s,r._model={spanGaps:c.spanGaps?c.spanGaps:l.spanGaps,tension:n.tension?n.tension:g.valueOrDefault(c.lineTension,u.tension),backgroundColor:n.backgroundColor?n.backgroundColor:c.backgroundColor||u.backgroundColor,borderWidth:n.borderWidth?n.borderWidth:c.borderWidth||u.borderWidth,borderColor:n.borderColor?n.borderColor:c.borderColor||u.borderColor,borderCapStyle:n.borderCapStyle?n.borderCapStyle:c.borderCapStyle||u.borderCapStyle,borderDash:n.borderDash?n.borderDash:c.borderDash||u.borderDash,borderDashOffset:n.borderDashOffset?n.borderDashOffset:c.borderDashOffset||u.borderDashOffset,borderJoinStyle:n.borderJoinStyle?n.borderJoinStyle:c.borderJoinStyle||u.borderJoinStyle,fill:n.fill?n.fill:void 0!==c.fill?c.fill:u.fill,steppedLine:n.steppedLine?n.steppedLine:g.valueOrDefault(c.steppedLine,u.stepped),cubicInterpolationMode:n.cubicInterpolationMode?n.cubicInterpolationMode:g.valueOrDefault(c.cubicInterpolationMode,u.cubicInterpolationMode)},r.pivot()),e=0,i=s.length;e<i;++e)a.updateElement(s[e],e,t);for(h&&0!==r._model.tension&&a.updateBezierControlPoints(),e=0,i=s.length;e<i;++e)s[e].pivot()},getPointBackgroundColor:function(t,e){var i=this.chart.options.elements.point.backgroundColor,n=this.getDataset(),a=t.custom||{};return a.backgroundColor?i=a.backgroundColor:n.pointBackgroundColor?i=g.valueAtIndexOrDefault(n.pointBackgroundColor,e,i):n.backgroundColor&&(i=n.backgroundColor),i},getPointBorderColor:function(t,e){var i=this.chart.options.elements.point.borderColor,n=this.getDataset(),a=t.custom||{};return a.borderColor?i=a.borderColor:n.pointBorderColor?i=g.valueAtIndexOrDefault(n.pointBorderColor,e,i):n.borderColor&&(i=n.borderColor),i},getPointBorderWidth:function(t,e){var i=this.chart.options.elements.point.borderWidth,n=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(n.pointBorderWidth)||g.isArray(n.pointBorderWidth)?i=g.valueAtIndexOrDefault(n.pointBorderWidth,e,i):isNaN(n.borderWidth)||(i=n.borderWidth):i=a.borderWidth,i},getPointRotation:function(t,e){var i=this.chart.options.elements.point.rotation,n=this.getDataset(),a=t.custom||{};return isNaN(a.rotation)?isNaN(n.pointRotation)&&!g.isArray(n.pointRotation)||(i=g.valueAtIndexOrDefault(n.pointRotation,e,i)):i=a.rotation,i},updateElement:function(t,e,i){var n,a,o=this,r=o.getMeta(),s=t.custom||{},l=o.getDataset(),u=o.index,d=l.data[e],c=o.getScaleForId(r.yAxisID),h=o.getScaleForId(r.xAxisID),f=o.chart.options.elements.point;void 0!==l.radius&&void 0===l.pointRadius&&(l.pointRadius=l.radius),void 0!==l.hitRadius&&void 0===l.pointHitRadius&&(l.pointHitRadius=l.hitRadius),n=h.getPixelForValue("object"==typeof d?d:NaN,e,u),a=i?c.getBasePixel():o.calculatePointY(d,e,u),t._xScale=h,t._yScale=c,t._datasetIndex=u,t._index=e,t._model={x:n,y:a,skip:s.skip||isNaN(n)||isNaN(a),radius:s.radius||g.valueAtIndexOrDefault(l.pointRadius,e,f.radius),pointStyle:s.pointStyle||g.valueAtIndexOrDefault(l.pointStyle,e,f.pointStyle),rotation:o.getPointRotation(t,e),backgroundColor:o.getPointBackgroundColor(t,e),borderColor:o.getPointBorderColor(t,e),borderWidth:o.getPointBorderWidth(t,e),tension:r.dataset._model?r.dataset._model.tension:0,steppedLine:!!r.dataset._model&&r.dataset._model.steppedLine,hitRadius:s.hitRadius||g.valueAtIndexOrDefault(l.pointHitRadius,e,f.hitRadius)}},calculatePointY:function(t,e,i){var n,a,o,r=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),u=0,d=0;if(l.options.stacked){for(n=0;n<i;n++)if(a=r.data.datasets[n],"line"===(o=r.getDatasetMeta(n)).type&&o.yAxisID===l.id&&r.isDatasetVisible(n)){var c=Number(l.getRightValue(a.data[e]));c<0?d+=c||0:u+=c||0}var h=Number(l.getRightValue(t));return h<0?l.getPixelForValue(d+h):l.getPixelForValue(u+h)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,i,n,a=this.getMeta(),o=this.chart.chartArea,r=a.data||[];function s(t,e,i){return Math.max(Math.min(t,i),e)}if(a.dataset._model.spanGaps&&(r=r.filter(function(t){return!t._model.skip})),"monotone"===a.dataset._model.cubicInterpolationMode)g.splineCurveMonotone(r);else for(t=0,e=r.length;t<e;++t)i=r[t]._model,n=g.splineCurve(g.previousItem(r,t)._model,i,g.nextItem(r,t)._model,a.dataset._model.tension),i.controlPointPreviousX=n.previous.x,i.controlPointPreviousY=n.previous.y,i.controlPointNextX=n.next.x,i.controlPointNextY=n.next.y;if(this.chart.options.elements.line.capBezierPoints)for(t=0,e=r.length;t<e;++t)(i=r[t]._model).controlPointPreviousX=s(i.controlPointPreviousX,o.left,o.right),i.controlPointPreviousY=s(i.controlPointPreviousY,o.top,o.bottom),i.controlPointNextX=s(i.controlPointNextX,o.left,o.right),i.controlPointNextY=s(i.controlPointNextY,o.top,o.bottom)},draw:function(){var t,e=this.chart,i=this.getMeta(),n=i.data||[],a=e.chartArea,o=n.length,r=0;for(f(this.getDataset(),e.options)&&(t=(i.dataset._model.borderWidth||0)/2,g.canvas.clipArea(e.ctx,{left:a.left,right:a.right,top:a.top-t,bottom:a.bottom+t}),i.dataset.draw(),g.canvas.unclipArea(e.ctx));r<o;++r)n[r].draw(a)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth,radius:a.radius},a.backgroundColor=n.hoverBackgroundColor||g.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,g.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor||g.valueAtIndexOrDefault(e.pointHoverBorderColor,i,g.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth||g.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth),a.radius=n.hoverRadius||g.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius)}})}},{26:26,41:41,46:46}],19:[function(t,e,i){"use strict";var n=t(26),a=t(41),k=t(46);n._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o<n[0].data.length;++o)e.push('<li><span style="background-color:'+n[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(s){var l=s.data;return l.labels.length&&l.datasets.length?l.labels.map(function(t,e){var i=s.getDatasetMeta(0),n=l.datasets[0],a=i.data[e].custom||{},o=k.valueAtIndexOrDefault,r=s.options.elements.arc;return{text:t,fillStyle:a.backgroundColor?a.backgroundColor:o(n.backgroundColor,e,r.backgroundColor),strokeStyle:a.borderColor?a.borderColor:o(n.borderColor,e,r.borderColor),lineWidth:a.borderWidth?a.borderWidth:o(n.borderWidth,e,r.borderWidth),hidden:isNaN(n.data[e])||i.data[e].hidden,index:e}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i<n;++i)(a=r.getDatasetMeta(i)).data[o].hidden=!a.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:k.noop,update:function(i){var t,e,n,a=this,o=a.getDataset(),r=a.getMeta(),s=a.chart.options.startAngle||0,l=a._starts=[],u=a._angles=[];for(a._updateRadius(),r.count=a.countVisibleElements(),t=0,e=o.data.length;t<e;t++)l[t]=s,n=a._computeAngle(t),s+=u[t]=n;k.each(r.data,function(t,e){a.updateElement(t,e,i)})},_updateRadius:function(){var t=this,e=t.chart,i=e.chartArea,n=e.options,a=n.elements.arc,o=Math.min(i.right-i.left,i.bottom-i.top);e.outerRadius=Math.max((o-a.borderWidth/2)/2,0),e.innerRadius=Math.max(n.cutoutPercentage?e.outerRadius/100*n.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,i){var n=this,a=n.chart,o=n.getDataset(),r=a.options,s=r.animation,l=a.scale,u=a.data.labels,d=l.xCenter,c=l.yCenter,h=r.startAngle,f=t.hidden?0:l.getDistanceFromCenterForValue(o.data[e]),g=n._starts[e],p=g+(t.hidden?0:n._angles[e]),m=s.animateScale?0:l.getDistanceFromCenterForValue(o.data[e]);k.extend(t,{_datasetIndex:n.index,_index:e,_scale:l,_model:{x:d,y:c,innerRadius:0,outerRadius:i?m:f,startAngle:i&&s.animateRotate?h:g,endAngle:i&&s.animateRotate?h:p,label:k.valueAtIndexOrDefault(u,e,u[e])}});var v=this.chart.options.elements.arc,b=t.custom||{},x=k.valueAtIndexOrDefault,y=t._model;y.backgroundColor=b.backgroundColor?b.backgroundColor:x(o.backgroundColor,e,v.backgroundColor),y.borderColor=b.borderColor?b.borderColor:x(o.borderColor,e,v.borderColor),y.borderWidth=b.borderWidth?b.borderWidth:x(o.borderWidth,e,v.borderWidth),t.pivot()},countVisibleElements:function(){var i=this.getDataset(),t=this.getMeta(),n=0;return k.each(t.data,function(t,e){isNaN(i.data[e])||t.hidden||n++}),n},_computeAngle:function(t){var e=this,i=this.getMeta().count,n=e.getDataset(),a=e.getMeta();if(isNaN(n.data[t])||a.data[t].hidden)return 0;var o={chart:e.chart,dataIndex:t,dataset:n,datasetIndex:e.index};return k.options.resolve([e.chart.options.elements.arc.angle,2*Math.PI/i],o,t)}})}},{26:26,41:41,46:46}],20:[function(t,e,i){"use strict";var n=t(26),a=t(41),u=t(46);n._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:u.noop,update:function(i){var n=this,t=n.getMeta(),e=t.dataset,a=t.data,o=e.custom||{},r=n.getDataset(),s=n.chart.options.elements.line,l=n.chart.scale;void 0!==r.tension&&void 0===r.lineTension&&(r.lineTension=r.tension),u.extend(t.dataset,{_datasetIndex:n.index,_scale:l,_children:a,_loop:!0,_model:{tension:o.tension?o.tension:u.valueOrDefault(r.lineTension,s.tension),backgroundColor:o.backgroundColor?o.backgroundColor:r.backgroundColor||s.backgroundColor,borderWidth:o.borderWidth?o.borderWidth:r.borderWidth||s.borderWidth,borderColor:o.borderColor?o.borderColor:r.borderColor||s.borderColor,fill:o.fill?o.fill:void 0!==r.fill?r.fill:s.fill,borderCapStyle:o.borderCapStyle?o.borderCapStyle:r.borderCapStyle||s.borderCapStyle,borderDash:o.borderDash?o.borderDash:r.borderDash||s.borderDash,borderDashOffset:o.borderDashOffset?o.borderDashOffset:r.borderDashOffset||s.borderDashOffset,borderJoinStyle:o.borderJoinStyle?o.borderJoinStyle:r.borderJoinStyle||s.borderJoinStyle}}),t.dataset.pivot(),u.each(a,function(t,e){n.updateElement(t,e,i)},n),n.updateBezierControlPoints()},updateElement:function(t,e,i){var n=this,a=t.custom||{},o=n.getDataset(),r=n.chart.scale,s=n.chart.options.elements.point,l=r.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),u.extend(t,{_datasetIndex:n.index,_index:e,_scale:r,_model:{x:i?r.xCenter:l.x,y:i?r.yCenter:l.y,tension:a.tension?a.tension:u.valueOrDefault(o.lineTension,n.chart.options.elements.line.tension),radius:a.radius?a.radius:u.valueAtIndexOrDefault(o.pointRadius,e,s.radius),backgroundColor:a.backgroundColor?a.backgroundColor:u.valueAtIndexOrDefault(o.pointBackgroundColor,e,s.backgroundColor),borderColor:a.borderColor?a.borderColor:u.valueAtIndexOrDefault(o.pointBorderColor,e,s.borderColor),borderWidth:a.borderWidth?a.borderWidth:u.valueAtIndexOrDefault(o.pointBorderWidth,e,s.borderWidth),pointStyle:a.pointStyle?a.pointStyle:u.valueAtIndexOrDefault(o.pointStyle,e,s.pointStyle),rotation:a.rotation?a.rotation:u.valueAtIndexOrDefault(o.pointRotation,e,s.rotation),hitRadius:a.hitRadius?a.hitRadius:u.valueAtIndexOrDefault(o.pointHitRadius,e,s.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var a=this.chart.chartArea,o=this.getMeta();u.each(o.data,function(t,e){var i=t._model,n=u.splineCurve(u.previousItem(o.data,e,!0)._model,i,u.nextItem(o.data,e,!0)._model,i.tension);i.controlPointPreviousX=Math.max(Math.min(n.previous.x,a.right),a.left),i.controlPointPreviousY=Math.max(Math.min(n.previous.y,a.bottom),a.top),i.controlPointNextX=Math.max(Math.min(n.next.x,a.right),a.left),i.controlPointNextY=Math.max(Math.min(n.next.y,a.bottom),a.top),t.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,a=t._model;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth,radius:a.radius},a.radius=i.hoverRadius?i.hoverRadius:u.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),a.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:u.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,u.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor?i.hoverBorderColor:u.valueAtIndexOrDefault(e.pointHoverBorderColor,n,u.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:u.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth)}})}},{26:26,41:41,46:46}],21:[function(t,e,i){"use strict";t(26)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{26:26}],22:[function(t,e,i){"use strict";var n=t(27);i=e.exports=n.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null});Object.defineProperty(i.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(i.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})},{27:27}],23:[function(t,e,i){"use strict";var n=t(26),o=t(46);n._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:o.noop,onComplete:o.noop}}),e.exports={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,i,n){var a,o,r=this.animations;for(e.chart=t,n||(t.animating=!0),a=0,o=r.length;a<o;++a)if(r[a].chart===t)return void(r[a]=e);r.push(e),1===r.length&&this.requestAnimationFrame()},cancelAnimation:function(e){var t=o.findIndex(this.animations,function(t){return t.chart===e});-1!==t&&(this.animations.splice(t,1),e.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=o.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),i=0;1<t.dropFrames&&(i=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+i);var n=Date.now();t.dropFrames+=(n-e)/t.frameDuration,0<t.animations.length&&t.requestAnimationFrame()},advance:function(t){for(var e,i,n=this.animations,a=0;a<n.length;)i=(e=n[a]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),o.callback(e.render,[i,e],i),o.callback(e.onAnimationProgress,[e],i),e.currentStep>=e.numSteps?(o.callback(e.onAnimationComplete,[e],i),i.animating=!1,n.splice(a,1)):++a}}},{26:26,46:46}],24:[function(t,e,i){"use strict";var s=t(22),l=t(23),c=t(26),h=t(46),a=t(29),o=t(31),f=t(49),g=t(32),p=t(34),n=t(36);e.exports=function(u){function d(t){return"top"===t||"bottom"===t}u.types={},u.instances={},u.controllers={},h.extend(u.prototype,{construct:function(t,e){var i,n,a=this;(n=(i=(i=e)||{}).data=i.data||{}).datasets=n.datasets||[],n.labels=n.labels||[],i.options=h.configMerge(c.global,c[i.type],i.options||{}),e=i;var o=f.acquireContext(t,e),r=o&&o.canvas,s=r&&r.height,l=r&&r.width;a.id=h.uid(),a.ctx=o,a.canvas=r,a.config=e,a.width=l,a.height=s,a.aspectRatio=s?l/s:null,a.options=e.options,a._bufferedRender=!1,(a.chart=a).controller=a,u.instances[a.id]=a,Object.defineProperty(a,"data",{get:function(){return a.config.data},set:function(t){a.config.data=t}}),o&&r?(a.initialize(),a.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return g.notify(t,"beforeInit"),h.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),g.notify(t,"afterInit"),t},clear:function(){return h.canvas.clear(this),this},stop:function(){return l.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(h.getMaximumWidth(n))),r=Math.max(0,Math.floor(a?o/a:h.getMaximumHeight(n)));if((e.width!==o||e.height!==r)&&(n.width=e.width=o,n.height=e.height=r,n.style.width=o+"px",n.style.height=r+"px",h.retinaScale(e,i.devicePixelRatio),!t)){var s={width:o,height:r};g.notify(e,"resize",[s]),e.options.onResize&&e.options.onResize(e,s),e.stop(),e.update({duration:e.options.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;h.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),h.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var r=this,t=r.options,s=r.scales||{},e=[],l=Object.keys(s).reduce(function(t,e){return t[e]=!1,t},{});t.scales&&(e=e.concat((t.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(t.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),t.scale&&e.push({options:t.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),h.each(e,function(t){var e=t.options,i=e.id,n=h.valueOrDefault(e.type,t.dtype);d(e.position)!==d(t.dposition)&&(e.position=t.dposition),l[i]=!0;var a=null;if(i in s&&s[i].type===n)(a=s[i]).options=e,a.ctx=r.ctx,a.chart=r;else{var o=p.getScaleConstructor(n);if(!o)return;a=new o({id:i,type:n,options:e,ctx:r.ctx,chart:r}),s[a.id]=a}a.mergeTicksOptions(),t.isDefault&&(r.scale=a)}),h.each(l,function(t,e){t||delete s[e]}),r.scales=s,p.addScalesToLayout(this)},buildOrUpdateControllers:function(){var o=this,r=[],s=[];return h.each(o.data.datasets,function(t,e){var i=o.getDatasetMeta(e),n=t.type||o.config.type;if(i.type&&i.type!==n&&(o.destroyDatasetMeta(e),i=o.getDatasetMeta(e)),i.type=n,r.push(i.type),i.controller)i.controller.updateIndex(e),i.controller.linkScales();else{var a=u.controllers[i.type];if(void 0===a)throw new Error('"'+i.type+'" is not a chart type.');i.controller=new a(o,e),s.push(i.controller)}},o),s},resetElements:function(){var i=this;h.each(i.data.datasets,function(t,e){i.getDatasetMeta(e).controller.reset()},i)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,h.each(e.scales,function(t){o.removeBox(e,t)}),i=h.configMerge(u.defaults.global,u.defaults[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),g._invalidate(n),!1!==g.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();h.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&h.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],g.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==g.notify(this,"beforeLayout")&&(o.update(this,this.width,this.height),g.notify(this,"afterScaleUpdate"),g.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==g.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);g.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),i={meta:e,index:t};!1!==g.notify(this,"beforeDatasetUpdate",[i])&&(e.controller.update(),g.notify(this,"afterDatasetUpdate",[i]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var i=t.duration,n=t.lazy;if(!1!==g.notify(e,"beforeRender")){var a=e.options.animation,o=function(t){g.notify(e,"afterRender"),h.callback(a&&a.onComplete,[t],e)};if(a&&(void 0!==i&&0!==i||void 0===i&&0!==a.duration)){var r=new s({numSteps:(i||a.duration)/16.66,easing:t.easing||a.easing,render:function(t,e){var i=h.easing.effects[e.easing],n=e.currentStep,a=n/e.numSteps;t.draw(i(a),a,n)},onAnimationProgress:a.onProgress,onAnimationComplete:o});l.addAnimation(e,r,i,n)}else e.draw(),o(new s({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),h.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==g.notify(e,"beforeDraw",[t])&&(h.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),g.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,i=(this.data.datasets||[]).length;e<i;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==g.notify(e,"beforeDatasetsDraw",[t])){for(var i=(e.data.datasets||[]).length-1;0<=i;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);g.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==g.notify(this,"beforeDatasetDraw",[n])&&(i.controller.draw(e),g.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==g.notify(this,"beforeTooltipDraw",[i])&&(e.draw(),g.notify(this,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return a.modes.single(this,t)},getElementsAtEvent:function(t){return a.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return a.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=a.modes[e];return"function"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return a.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e<i;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,i=this.data.datasets[t],n=i._meta&&i._meta[e];n&&(n.controller.destroy(),delete i._meta[e])},destroy:function(){var t,e,i=this,n=i.canvas;for(i.stop(),t=0,e=i.data.datasets.length;t<e;++t)i.destroyDatasetMeta(t);n&&(i.unbindEvents(),h.canvas.clear(i),f.releaseContext(i.ctx),i.canvas=null,i.ctx=null),g.notify(i,"destroy"),delete u.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new n({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var e=this,i=e._listeners={},n=function(){e.eventHandler.apply(e,arguments)};h.each(e.options.events,function(t){f.addEventListener(e,t,n),i[t]=n}),e.options.responsive&&(n=function(){e.resize()},f.addEventListener(e,"resize",n),i.resize=n)},unbindEvents:function(){var i=this,t=i._listeners;t&&(delete i._listeners,h.each(t,function(t,e){f.removeEventListener(i,e,t)}))},updateHoverStyle:function(t,e,i){var n,a,o,r=i?"setHoverStyle":"removeHoverStyle";for(a=0,o=t.length;a<o;++a)(n=t[a])&&this.getDatasetMeta(n._datasetIndex).controller[r](n)},eventHandler:function(t){var e=this,i=e.tooltip;if(!1!==g.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var n=e.handleEvent(t);i&&(n=i._start?i.handleEvent(t):n|i.handleEvent(t)),g.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):n&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,i=this,n=i.options||{},a=n.hover;return i.lastActive=i.lastActive||[],"mouseout"===t.type?i.active=[]:i.active=i.getElementsAtEventForMode(t,a.mode,a),h.callback(n.onHover||n.hover.onHover,[t.native,i.active],i),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(i,t.native,i.active),i.lastActive.length&&i.updateHoverStyle(i.lastActive,a.mode,!1),i.active.length&&a.mode&&i.updateHoverStyle(i.active,a.mode,!0),e=!h.arrayEquals(i.active,i.lastActive),i.lastActive=i.active,e}}),u.Controller=u}},{22:22,23:23,26:26,29:29,31:31,32:32,34:34,36:36,46:46,49:49}],25:[function(t,e,i){"use strict";var s=t(46);e.exports=function(t){var o=["push","pop","shift","splice","unshift"];function r(e,t){var i=e._chartjs;if(i){var n=i.listeners,a=n.indexOf(t);-1!==a&&n.splice(a,1),0<n.length||(o.forEach(function(t){delete e[t]}),delete e._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},s.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&r(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;t<e;++t)a[t]=a[t]||this.createMetaData(t);i.dataset=i.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var a,t,e=this,i=e.getDataset(),n=i.data||(i.data=[]);e._data!==n&&(e._data&&r(e._data,e),t=e,(a=n)._chartjs?a._chartjs.listeners.push(t):(Object.defineProperty(a,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[t]}}),o.forEach(function(t){var i="onData"+t.charAt(0).toUpperCase()+t.slice(1),n=a[t];Object.defineProperty(a,t,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),t=n.apply(this,e);return s.each(a._chartjs.listeners,function(t){"function"==typeof t[i]&&t[i].apply(t,e)}),t}})})),e._data=n),e.resyncElements()},update:s.noop,transition:function(t){for(var e=this.getMeta(),i=e.data||[],n=i.length,a=0;a<n;++a)i[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],i=e.length,n=0;for(t.dataset&&t.dataset.draw();n<i;++n)e[n].draw()},removeHoverStyle:function(t){s.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=s.valueAtIndexOrDefault,o=s.getHoverColor,r=t._model;t.$previousStyle={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderWidth:r.borderWidth},r.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:a(e.hoverBackgroundColor,i,o(r.backgroundColor)),r.borderColor=n.hoverBorderColor?n.hoverBorderColor:a(e.hoverBorderColor,i,o(r.borderColor)),r.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:a(e.hoverBorderWidth,i,r.borderWidth)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,i=t.data.length,n=e.length;n<i?t.data.splice(n,i-n):i<n&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;i<e;++i)this.addElementAndReset(t+i)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=s.inherits}},{46:46}],26:[function(t,e,i){"use strict";var n=t(46);e.exports={_set:function(t,e){return n.merge(this[t]||(this[t]={}),e)}}},{46:46}],27:[function(t,e,i){"use strict";var g=t(3),n=t(46);var a=function(t){n.extend(this,t),this.initialize.apply(this,arguments)};n.extend(a.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=n.clone(t._model)),t._start={},t},transition:function(t){var e=this,i=e._model,n=e._start,a=e._view;return i&&1!==t?(a||(a=e._view={}),n||(n=e._start={}),function(t,e,i,n){var a,o,r,s,l,u,d,c,h,f=Object.keys(i);for(a=0,o=f.length;a<o;++a)if(u=i[r=f[a]],e.hasOwnProperty(r)||(e[r]=u),(s=e[r])!==u&&"_"!==r[0]){if(t.hasOwnProperty(r)||(t[r]=s),(d=typeof u)==typeof(l=t[r]))if("string"===d){if((c=g(l)).valid&&(h=g(u)).valid){e[r]=h.mix(c,n).rgbString();continue}}else if("number"===d&&isFinite(l)&&isFinite(u)){e[r]=l+(u-l)*n;continue}e[r]=u}}(n,a,i,t)):(e._view=i,e._start=null),e},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return n.isNumber(this._model.x)&&n.isNumber(this._model.y)}}),a.extend=n.inherits,e.exports=a},{3:3,46:46}],28:[function(t,e,i){"use strict";var n=t(3),a=t(26),g=t(46),l=t(34);e.exports=function(){function d(t,e,i){var n;return"string"==typeof t?(n=parseInt(t,10),-1!==t.indexOf("%")&&(n=n/100*e.parentNode[i])):n=t,n}function c(t){return null!=t&&"none"!==t}function e(t,e,i){var n=document.defaultView,a=g._getParentNode(t),o=n.getComputedStyle(t)[e],r=n.getComputedStyle(a)[e],s=c(o),l=c(r),u=Number.POSITIVE_INFINITY;return s||l?Math.min(s?d(o,t,i):u,l?d(r,a,i):u):"none"}g.configMerge=function(){return g.merge(g.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,i,n){var a=e[t]||{},o=i[t];"scales"===t?e[t]=g.scaleMerge(a,o):"scale"===t?e[t]=g.merge(a,[l.getScaleDefaults(o.type),o]):g._merger(t,e,i,n)}})},g.scaleMerge=function(){return g.merge(g.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(t,e,i,n){if("xAxes"===t||"yAxes"===t){var a,o,r,s=i[t].length;for(e[t]||(e[t]=[]),a=0;a<s;++a)r=i[t][a],o=g.valueOrDefault(r.type,"xAxes"===t?"category":"linear"),a>=e[t].length&&e[t].push({}),!e[t][a].type||r.type&&r.type!==e[t][a].type?g.merge(e[t][a],[l.getScaleDefaults(o),r]):g.merge(e[t][a],r)}else g._merger(t,e,i,n)}})},g.where=function(t,e){if(g.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return g.each(t,function(t){e(t)&&i.push(t)}),i},g.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n<a;++n)if(e.call(i,t[n],n,t))return n;return-1},g.findNextWhere=function(t,e,i){g.isNullOrUndef(i)&&(i=-1);for(var n=i+1;n<t.length;n++){var a=t[n];if(e(a))return a}},g.findPreviousWhere=function(t,e,i){g.isNullOrUndef(i)&&(i=t.length);for(var n=i-1;0<=n;n--){var a=t[n];if(e(a))return a}},g.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g.almostEquals=function(t,e,i){return Math.abs(t-e)<i},g.almostWhole=function(t,e){var i=Math.round(t);return i-e<t&&t<i+e},g.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},g.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},g.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:0<t?1:-1},g.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},g.toRadians=function(t){return t*(Math.PI/180)},g.toDegrees=function(t){return t*(180/Math.PI)},g.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),o=Math.atan2(n,i);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},g.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},g.aliasPixel=function(t){return t%2==0?0:.5},g.splineCurve=function(t,e,i,n){var a=t.skip?e:t,o=e,r=i.skip?e:i,s=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),l=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=s/(s+l),d=l/(s+l),c=n*(u=isNaN(u)?0:u),h=n*(d=isNaN(d)?0:d);return{previous:{x:o.x-c*(r.x-a.x),y:o.y-c*(r.y-a.y)},next:{x:o.x+h*(r.x-a.x),y:o.y+h*(r.y-a.y)}}},g.EPSILON=Number.EPSILON||1e-14,g.splineCurveMonotone=function(t){var e,i,n,a,o,r,s,l,u,d=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),c=d.length;for(e=0;e<c;++e)if(!(n=d[e]).model.skip){if(i=0<e?d[e-1]:null,(a=e<c-1?d[e+1]:null)&&!a.model.skip){var h=a.model.x-n.model.x;n.deltaK=0!==h?(a.model.y-n.model.y)/h:0}!i||i.model.skip?n.mK=n.deltaK:!a||a.model.skip?n.mK=i.deltaK:this.sign(i.deltaK)!==this.sign(n.deltaK)?n.mK=0:n.mK=(i.deltaK+n.deltaK)/2}for(e=0;e<c-1;++e)n=d[e],a=d[e+1],n.model.skip||a.model.skip||(g.almostEquals(n.deltaK,0,this.EPSILON)?n.mK=a.mK=0:(o=n.mK/n.deltaK,r=a.mK/n.deltaK,(l=Math.pow(o,2)+Math.pow(r,2))<=9||(s=3/Math.sqrt(l),n.mK=o*s*n.deltaK,a.mK=r*s*n.deltaK)));for(e=0;e<c;++e)(n=d[e]).model.skip||(i=0<e?d[e-1]:null,a=e<c-1?d[e+1]:null,i&&!i.model.skip&&(u=(n.model.x-i.model.x)/3,n.model.controlPointPreviousX=n.model.x-u,n.model.controlPointPreviousY=n.model.y-u*n.mK),a&&!a.model.skip&&(u=(a.model.x-n.model.x)/3,n.model.controlPointNextX=n.model.x+u,n.model.controlPointNextY=n.model.y+u*n.mK))},g.nextItem=function(t,e,i){return i?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},g.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},g.niceNum=function(t,e){var i=Math.floor(g.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},g.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},g.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.target||t.srcElement,r=o.getBoundingClientRect(),s=a.touches;n=s&&0<s.length?(i=s[0].clientX,s[0].clientY):(i=a.clientX,a.clientY);var l=parseFloat(g.getStyle(o,"padding-left")),u=parseFloat(g.getStyle(o,"padding-top")),d=parseFloat(g.getStyle(o,"padding-right")),c=parseFloat(g.getStyle(o,"padding-bottom")),h=r.right-r.left-l-d,f=r.bottom-r.top-u-c;return{x:i=Math.round((i-r.left-l)/h*o.width/e.currentDevicePixelRatio),y:n=Math.round((n-r.top-u)/f*o.height/e.currentDevicePixelRatio)}},g.getConstraintWidth=function(t){return e(t,"max-width","clientWidth")},g.getConstraintHeight=function(t){return e(t,"max-height","clientHeight")},g._calculatePadding=function(t,e,i){return-1<(e=g.getStyle(t,e)).indexOf("%")?i/parseInt(e,10):parseInt(e,10)},g._getParentNode=function(t){var e=t.parentNode;return e&&e.host&&(e=e.host),e},g.getMaximumWidth=function(t){var e=g._getParentNode(t);if(!e)return t.clientWidth;var i=e.clientWidth,n=i-g._calculatePadding(e,"padding-left",i)-g._calculatePadding(e,"padding-right",i),a=g.getConstraintWidth(t);return isNaN(a)?n:Math.min(n,a)},g.getMaximumHeight=function(t){var e=g._getParentNode(t);if(!e)return t.clientHeight;var i=e.clientHeight,n=i-g._calculatePadding(e,"padding-top",i)-g._calculatePadding(e,"padding-bottom",i),a=g.getConstraintHeight(t);return isNaN(a)?n:Math.min(n,a)},g.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},g.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,o=t.width;n.height=a*i,n.width=o*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+"px",n.style.width=o+"px")}},g.fontString=function(t,e,i){return e+" "+t+"px "+i},g.longestText=function(e,t,i,n){var a=(n=n||{}).data=n.data||{},o=n.garbageCollect=n.garbageCollect||[];n.font!==t&&(a=n.data={},o=n.garbageCollect=[],n.font=t),e.font=t;var r=0;g.each(i,function(t){null!=t&&!0!==g.isArray(t)?r=g.measureText(e,a,o,r,t):g.isArray(t)&&g.each(t,function(t){null==t||g.isArray(t)||(r=g.measureText(e,a,o,r,t))})});var s=o.length/2;if(s>i.length){for(var l=0;l<s;l++)delete a[o[l]];o.splice(0,s)}return r},g.measureText=function(t,e,i,n,a){var o=e[a];return o||(o=e[a]=t.measureText(a).width,i.push(a)),n<o&&(n=o),n},g.numberOfLabelLines=function(t){var e=1;return g.each(t,function(t){g.isArray(t)&&t.length>e&&(e=t.length)}),e},g.color=n?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),n(t)}:function(t){return console.error("Color.js not found!"),t},g.getHoverColor=function(t){return t instanceof CanvasPattern?t:g.color(t).saturate(.5).darken(.1).rgbString()}}},{26:26,3:3,34:34,46:46}],29:[function(t,e,i){"use strict";var n=t(46);function s(t,e){return t.native?{x:t.x,y:t.y}:n.getRelativePosition(t,e)}function l(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;n<o;++n)if(t.isDatasetVisible(n))for(a=0,r=(i=t.getDatasetMeta(n)).data.length;a<r;++a){var s=i.data[a];s._view.skip||e(s)}}function u(t,e){var i=[];return l(t,function(t){t.inRange(e.x,e.y)&&i.push(t)}),i}function d(t,n,a,o){var r=Number.POSITIVE_INFINITY,s=[];return l(t,function(t){if(!a||t.inRange(n.x,n.y)){var e=t.getCenterPoint(),i=o(n,e);i<r?(s=[t],r=i):i===r&&s.push(t)}}),s}function c(t){var a=-1!==t.indexOf("x"),o=-1!==t.indexOf("y");return function(t,e){var i=a?Math.abs(t.x-e.x):0,n=o?Math.abs(t.y-e.y):0;return Math.sqrt(Math.pow(i,2)+Math.pow(n,2))}}function a(n,t,e){var i=s(t,n);e.axis=e.axis||"x";var a=c(e.axis),o=e.intersect?u(n,i):d(n,i,!1,a),r=[];return o.length?(n.data.datasets.forEach(function(t,e){if(n.isDatasetVisible(e)){var i=n.getDatasetMeta(e).data[o[0]._index];i&&!i._view.skip&&r.push(i)}}),r):[]}e.exports={modes:{single:function(t,e){var i=s(e,t),n=[];return l(t,function(t){if(t.inRange(i.x,i.y))return n.push(t),n}),n.slice(0,1)},label:a,index:a,dataset:function(t,e,i){var n=s(e,t);i.axis=i.axis||"xy";var a=c(i.axis),o=i.intersect?u(t,n):d(t,n,!1,a);return 0<o.length&&(o=t.getDatasetMeta(o[0]._datasetIndex).data),o},"x-axis":function(t,e){return a(t,e,{intersect:!1})},point:function(t,e){return u(t,s(e,t))},nearest:function(t,e,i){var n=s(e,t);i.axis=i.axis||"xy";var a=c(i.axis),o=d(t,n,i.intersect,a);return 1<o.length&&o.sort(function(t,e){var i=t.getArea()-e.getArea();return 0===i&&(i=t._datasetIndex-e._datasetIndex),i}),o.slice(0,1)},x:function(t,e,i){var n=s(e,t),a=[],o=!1;return l(t,function(t){t.inXRange(n.x)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a},y:function(t,e,i){var n=s(e,t),a=[],o=!1;return l(t,function(t){t.inYRange(n.y)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a}}}},{46:46}],30:[function(t,e,i){"use strict";t(26)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t}},{26:26}],31:[function(t,e,i){"use strict";var B=t(46);function W(t,e){return B.where(t,function(t){return t.position===e})}function V(t,a){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,e){var i=a?e:t,n=a?t:e;return i.weight===n.weight?i._tmpIndex_-n._tmpIndex_:i.weight-n.weight}),t.forEach(function(t){delete t._tmpIndex_})}e.exports={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=["fullWidth","position","weight"],o=a.length,r=0;r<o;++r)n=a[r],i.hasOwnProperty(n)&&(e[n]=i[n])},update:function(e,i,t){if(e){var n=e.options.layout||{},a=B.options.toPadding(n.padding),o=a.left,r=a.right,s=a.top,l=a.bottom,u=W(e.boxes,"left"),d=W(e.boxes,"right"),c=W(e.boxes,"top"),h=W(e.boxes,"bottom"),f=W(e.boxes,"chartArea");V(u,!0),V(d,!1),V(c,!0),V(h,!1);var g=i-o-r,p=t-s-l,m=p/2,v=(i-g/2)/(u.length+d.length),b=(t-m)/(c.length+h.length),x=g,y=p,k=[];B.each(u.concat(d,c,h),function(t){var e,i=t.isHorizontal();i?(e=t.update(t.fullWidth?g:x,b),y-=e.height):(e=t.update(v,y),x-=e.width),k.push({horizontal:i,minSize:e,box:t})});var M=0,w=0,C=0,S=0;B.each(c.concat(h),function(t){if(t.getPadding){var e=t.getPadding();M=Math.max(M,e.left),w=Math.max(w,e.right)}}),B.each(u.concat(d),function(t){if(t.getPadding){var e=t.getPadding();C=Math.max(C,e.top),S=Math.max(S,e.bottom)}});var _=o,D=r,P=s,I=l;B.each(u.concat(d),z),B.each(u,function(t){_+=t.width}),B.each(d,function(t){D+=t.width}),B.each(c.concat(h),z),B.each(c,function(t){P+=t.height}),B.each(h,function(t){I+=t.height}),B.each(u.concat(d),function(e){var t=B.findNextWhere(k,function(t){return t.box===e}),i={left:0,right:0,top:P,bottom:I};t&&e.update(t.minSize.width,y,i)}),_=o,D=r,P=s,I=l,B.each(u,function(t){_+=t.width}),B.each(d,function(t){D+=t.width}),B.each(c,function(t){P+=t.height}),B.each(h,function(t){I+=t.height});var A=Math.max(M-_,0);_+=A,D+=Math.max(w-D,0);var T=Math.max(C-P,0);P+=T,I+=Math.max(S-I,0);var F=t-P-I,O=i-_-D;O===x&&F===y||(B.each(u,function(t){t.height=F}),B.each(d,function(t){t.height=F}),B.each(c,function(t){t.fullWidth||(t.width=O)}),B.each(h,function(t){t.fullWidth||(t.width=O)}),y=F,x=O);var R=o+A,L=s+T;B.each(u.concat(c),N),R+=x,L+=y,B.each(d,N),B.each(h,N),e.chartArea={left:_,top:P,right:_+x,bottom:P+y},B.each(f,function(t){t.left=e.chartArea.left,t.top=e.chartArea.top,t.right=e.chartArea.right,t.bottom=e.chartArea.bottom,t.update(x,y)})}function z(e){var t=B.findNextWhere(k,function(t){return t.box===e});if(t)if(e.isHorizontal()){var i={left:Math.max(_,M),right:Math.max(D,w),top:0,bottom:0};e.update(e.fullWidth?g:x,p/2,i)}else e.update(t.minSize.width,y)}function N(t){t.isHorizontal()?(t.left=t.fullWidth?o:_,t.right=t.fullWidth?i-r:_+x,t.top=L,t.bottom=L+t.height,L=t.bottom):(t.left=R,t.right=R+t.width,t.top=P,t.bottom=P+y,R=t.right)}}}},{46:46}],32:[function(t,e,i){"use strict";var r=t(26),s=t(46);r._set("global",{plugins:{}}),e.exports={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var i=this._plugins;[].concat(t).forEach(function(t){var e=i.indexOf(t);-1!==e&&i.splice(e,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,i){var n,a,o,r,s,l=this.descriptors(t),u=l.length;for(n=0;n<u;++n)if("function"==typeof(s=(o=(a=l[n]).plugin)[e])&&((r=[t].concat(i||[])).push(a.options),!1===s.apply(o,r)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],a=[],i=t&&t.config||{},o=i.options&&i.options.plugins||{};return this._plugins.concat(i.plugins||[]).forEach(function(t){if(-1===n.indexOf(t)){var e=t.id,i=o[e];!1!==i&&(!0===i&&(i=s.clone(r.global.plugins[e])),n.push(t),a.push({plugin:t,options:i||{}}))}}),e.descriptors=a,e.id=this._cacheId,a},_invalidate:function(t){delete t.$plugins}}},{26:26,46:46}],33:[function(t,e,i){"use strict";var y=t(26),n=t(27),H=t(46),a=t(35);function k(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(t[e].label);return n}function j(t,e,i){var n=t.getPixelForTick(e);return i&&(n-=0===e?(t.getPixelForTick(1)-n)/2:(n-t.getPixelForTick(e-1))/2),n}function M(t,e,i){return H.isArray(e)?H.longestText(t,i,e):t.measureText(e).width}function w(t){var e=H.valueOrDefault,i=y.global,n=e(t.fontSize,i.defaultFontSize),a=e(t.fontStyle,i.defaultFontStyle),o=e(t.fontFamily,i.defaultFontFamily);return{size:n,style:a,family:o,font:H.fontString(n,a,o)}}function C(t){return H.options.toLineHeight(H.valueOrDefault(t.lineHeight,1.2),H.valueOrDefault(t.fontSize,y.global.defaultFontSize))}y._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",lineHeight:1.2,padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:a.formatters.values,minor:{},major:{}}}),e.exports=n.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){H.callback(this.options.beforeUpdate,[this])},update:function(t,e,i){var n,a,o,r,s,l,u=this;for(u.beforeUpdate(),u.maxWidth=t,u.maxHeight=e,u.margins=H.extend({left:0,right:0,top:0,bottom:0},i),u.longestTextCache=u.longestTextCache||{},u.beforeSetDimensions(),u.setDimensions(),u.afterSetDimensions(),u.beforeDataLimits(),u.determineDataLimits(),u.afterDataLimits(),u.beforeBuildTicks(),s=u.buildTicks()||[],u.afterBuildTicks(),u.beforeTickToLabelConversion(),o=u.convertTicksToLabels(s)||u.ticks,u.afterTickToLabelConversion(),n=0,a=(u.ticks=o).length;n<a;++n)r=o[n],(l=s[n])?l.label=r:s.push(l={label:r,major:!1});return u._ticks=s,u.beforeCalculateTickRotation(),u.calculateTickRotation(),u.afterCalculateTickRotation(),u.beforeFit(),u.fit(),u.afterFit(),u.afterUpdate(),u.minSize},afterUpdate:function(){H.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){H.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){H.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){H.callback(this.options.beforeDataLimits,[this])},determineDataLimits:H.noop,afterDataLimits:function(){H.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){H.callback(this.options.beforeBuildTicks,[this])},buildTicks:H.noop,afterBuildTicks:function(){H.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){H.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){H.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){H.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,i=t.options.ticks,n=k(t._ticks),a=w(i);e.font=a.font;var o=i.minRotation||0;if(n.length&&t.options.display&&t.isHorizontal())for(var r,s=H.longestText(e,a.font,n,t.longestTextCache),l=s,u=t.getPixelForTick(1)-t.getPixelForTick(0)-6;u<l&&o<i.maxRotation;){var d=H.toRadians(o);if(r=Math.cos(d),Math.sin(d)*s>t.maxHeight){o--;break}o++,l=r*s}t.labelRotation=o},afterCalculateTickRotation:function(){H.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){H.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=k(t._ticks),n=t.options,a=n.ticks,o=n.scaleLabel,r=n.gridLines,s=n.display,l=t.isHorizontal(),u=w(a),d=n.gridLines.tickMarkLength;if(e.width=l?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&r.drawTicks?d:0,e.height=l?s&&r.drawTicks?d:0:t.maxHeight,o.display&&s){var c=C(o)+H.options.toPadding(o.padding).height;l?e.height+=c:e.width+=c}if(a.display&&s){var h=H.longestText(t.ctx,u.font,i,t.longestTextCache),f=H.numberOfLabelLines(i),g=.5*u.size,p=t.options.ticks.padding;if(l){t.longestLabelWidth=h;var m=H.toRadians(t.labelRotation),v=Math.cos(m),b=Math.sin(m)*h+u.size*f+g*(f-1)+g;e.height=Math.min(t.maxHeight,e.height+b+p),t.ctx.font=u.font;var x=M(t.ctx,i[0],u.font),y=M(t.ctx,i[i.length-1],u.font);0!==t.labelRotation?(t.paddingLeft="bottom"===n.position?v*x+3:v*g+3,t.paddingRight="bottom"===n.position?v*g+3:v*y+3):(t.paddingLeft=x/2+3,t.paddingRight=y/2+3)}else a.mirror?h=0:h+=p+g,e.width=Math.min(t.maxWidth,e.width+h),t.paddingTop=u.size/2,t.paddingBottom=u.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){H.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(H.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:H.noop,getPixelForValue:H.noop,getValueForPixel:H.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:0<t&&0<e?t:0},_autoSkip:function(t){var e,i,n,a,o=this,r=o.isHorizontal(),s=o.options.ticks.minor,l=t.length,u=H.toRadians(o.labelRotation),d=Math.cos(u),c=o.longestLabelWidth*d,h=[];for(s.maxTicksLimit&&(a=s.maxTicksLimit),r&&(e=!1,(c+s.autoSkipPadding)*l>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((c+s.autoSkipPadding)*l/(o.width-(o.paddingLeft+o.paddingRight)))),a&&a<l&&(e=Math.max(e,Math.floor(l/a)))),i=0;i<l;i++)n=t[i],(1<e&&0<i%e||i%e==0&&l<=i+e)&&i!==l-1&&delete n.label,h.push(n);return h},draw:function(S){var _=this,D=_.options;if(D.display){var r=_.ctx,P=y.global,I=D.ticks.minor,t=D.ticks.major||I,A=D.gridLines,e=D.scaleLabel,T=0!==_.labelRotation,F=_.isHorizontal(),O=I.autoSkip?_._autoSkip(_.getTicks()):_.getTicks(),s=H.valueOrDefault(I.fontColor,P.defaultFontColor),l=w(I),u=H.valueOrDefault(t.fontColor,P.defaultFontColor),d=w(t),R=A.drawTicks?A.tickMarkLength:0,i=H.valueOrDefault(e.fontColor,P.defaultFontColor),n=w(e),a=H.options.toPadding(e.padding),L=H.toRadians(_.labelRotation),z=[],N=_.options.gridLines.lineWidth,B="right"===D.position?_.left:_.right-N-R,W="right"===D.position?_.left+R:_.right,V="bottom"===D.position?_.top+N:_.bottom-R-N,E="bottom"===D.position?_.top+N+R:_.bottom+N;if(H.each(O,function(t,e){if(!H.isNullOrUndef(t.label)){var i,n,a,o,r,s,l,u,d,c,h,f,g,p,m=t.label;o=e===_.zeroLineIndex&&D.offset===A.offsetGridLines?(i=A.zeroLineWidth,n=A.zeroLineColor,a=A.zeroLineBorderDash,A.zeroLineBorderDashOffset):(i=H.valueAtIndexOrDefault(A.lineWidth,e),n=H.valueAtIndexOrDefault(A.color,e),a=H.valueOrDefault(A.borderDash,P.borderDash),H.valueOrDefault(A.borderDashOffset,P.borderDashOffset));var v="middle",b="middle",x=I.padding;if(F){var y=R+x;p="bottom"===D.position?(b=T?"middle":"top",v=T?"right":"center",_.top+y):(b=T?"middle":"bottom",v=T?"left":"center",_.bottom-y);var k=j(_,e,A.offsetGridLines&&1<O.length);k<_.left&&(n="rgba(0,0,0,0)"),k+=H.aliasPixel(i),g=_.getPixelForTick(e)+I.labelOffset,r=l=d=h=k,s=V,u=E,c=S.top,f=S.bottom+N}else{var M,w="left"===D.position;M=I.mirror?(v=w?"left":"right",x):(v=w?"right":"left",R+x),g=w?_.right-M:_.left+M;var C=j(_,e,A.offsetGridLines&&1<O.length);C<_.top&&(n="rgba(0,0,0,0)"),C+=H.aliasPixel(i),p=_.getPixelForTick(e)+I.labelOffset,r=B,l=W,d=S.left,h=S.right+N,s=u=c=f=C}z.push({tx1:r,ty1:s,tx2:l,ty2:u,x1:d,y1:c,x2:h,y2:f,labelX:g,labelY:p,glWidth:i,glColor:n,glBorderDash:a,glBorderDashOffset:o,rotation:-1*L,label:m,major:t.major,textBaseline:b,textAlign:v})}}),H.each(z,function(t){if(A.display&&(r.save(),r.lineWidth=t.glWidth,r.strokeStyle=t.glColor,r.setLineDash&&(r.setLineDash(t.glBorderDash),r.lineDashOffset=t.glBorderDashOffset),r.beginPath(),A.drawTicks&&(r.moveTo(t.tx1,t.ty1),r.lineTo(t.tx2,t.ty2)),A.drawOnChartArea&&(r.moveTo(t.x1,t.y1),r.lineTo(t.x2,t.y2)),r.stroke(),r.restore()),I.display){r.save(),r.translate(t.labelX,t.labelY),r.rotate(t.rotation),r.font=t.major?d.font:l.font,r.fillStyle=t.major?u:s,r.textBaseline=t.textBaseline,r.textAlign=t.textAlign;var e=t.label;if(H.isArray(e))for(var i=e.length,n=1.5*l.size,a=_.isHorizontal()?0:-n*(i-1)/2,o=0;o<i;++o)r.fillText(""+e[o],0,a),a+=n;else r.fillText(e,0,0);r.restore()}}),e.display){var o,c,h=0,f=C(e)/2;if(F)o=_.left+(_.right-_.left)/2,c="bottom"===D.position?_.bottom-f-a.bottom:_.top+f+a.top;else{var g="left"===D.position;o=g?_.left+f+a.top:_.right-f-a.top,c=_.top+(_.bottom-_.top)/2,h=g?-.5*Math.PI:.5*Math.PI}r.save(),r.translate(o,c),r.rotate(h),r.textAlign="center",r.textBaseline="middle",r.fillStyle=i,r.font=n.font,r.fillText(e.labelString,0,0),r.restore()}if(A.drawBorder){r.lineWidth=H.valueAtIndexOrDefault(A.lineWidth,0),r.strokeStyle=H.valueAtIndexOrDefault(A.color,0);var p=_.left,m=_.right+N,v=_.top,b=_.bottom+N,x=H.aliasPixel(r.lineWidth);F?(v=b="top"===D.position?_.bottom:_.top,v+=x,b+=x):(p=m="left"===D.position?_.right:_.left,p+=x,m+=x),r.beginPath(),r.moveTo(p,v),r.lineTo(m,b),r.stroke()}}}})},{26:26,27:27,35:35,46:46}],34:[function(t,e,i){"use strict";var n=t(26),a=t(46),o=t(31);e.exports={constructors:{},defaults:{},registerScaleType:function(t,e,i){this.constructors[t]=e,this.defaults[t]=a.clone(i)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[n.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=a.extend(this.defaults[t],e))},addScalesToLayout:function(e){a.each(e.scales,function(t){t.fullWidth=t.options.fullWidth,t.position=t.options.position,t.weight=t.options.weight,o.addBox(e,t)})}}},{26:26,31:31,46:46}],35:[function(t,e,i){"use strict";var l=t(46);e.exports={formatters:{values:function(t){return l.isArray(t)?t:""+t},linear:function(t,e,i){var n=3<i.length?i[2]-i[1]:i[1]-i[0];1<Math.abs(n)&&t!==Math.floor(t)&&(n=t-Math.floor(t));var a=l.log10(Math.abs(n)),o="";if(0!==t)if(Math.max(Math.abs(i[0]),Math.abs(i[i.length-1]))<1e-4){var r=l.log10(Math.abs(t));o=t.toExponential(Math.floor(r)-Math.floor(a))}else{var s=-1*Math.floor(a);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o="0";return o},logarithmic:function(t,e,i){var n=t/Math.pow(10,Math.floor(l.log10(t)));return 0===t?"0":1===n||2===n||5===n||0===e||e===i.length-1?t.toExponential():""}}}},{46:46}],36:[function(t,e,i){"use strict";var n=t(26),a=t(27),R=t(46);n._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:R.noop,title:function(t,e){var i="",n=e.labels,a=n?n.length:0;if(0<t.length){var o=t[0];o.xLabel?i=o.xLabel:0<a&&o.index<a&&(i=n[o.index])}return i},afterTitle:R.noop,beforeBody:R.noop,beforeLabel:R.noop,label:function(t,e){var i=e.datasets[t.datasetIndex].label||"";return i&&(i+=": "),i+=t.yLabel},labelColor:function(t,e){var i=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:i.borderColor,backgroundColor:i.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:R.noop,afterBody:R.noop,beforeFooter:R.noop,footer:R.noop,afterFooter:R.noop}}});var L={average:function(t){if(!t.length)return!1;var e,i,n=0,a=0,o=0;for(e=0,i=t.length;e<i;++e){var r=t[e];if(r&&r.hasValue()){var s=r.tooltipPosition();n+=s.x,a+=s.y,++o}}return{x:Math.round(n/o),y:Math.round(a/o)}},nearest:function(t,e){var i,n,a,o=e.x,r=e.y,s=Number.POSITIVE_INFINITY;for(i=0,n=t.length;i<n;++i){var l=t[i];if(l&&l.hasValue()){var u=l.getCenterPoint(),d=R.distanceBetweenPoints(e,u);d<s&&(s=d,a=l)}}if(a){var c=a.tooltipPosition();o=c.x,r=c.y}return{x:o,y:r}}};function h(t,e){var i=R.color(t);return i.alpha(e*i.alpha()).rgbaString()}function r(t,e){return e&&(R.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function s(t){return("string"==typeof t||t instanceof String)&&-1<t.indexOf("\n")?t.split("\n"):t}function z(t){var e=n.global,i=R.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:i(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:i(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:i(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:i(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:i(t.titleFontStyle,e.defaultFontStyle),titleFontSize:i(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:i(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:i(t.footerFontStyle,e.defaultFontStyle),footerFontSize:i(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function o(t){return r([],s(t))}(e.exports=a.extend({initialize:function(){this._model=z(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),i=t.title.apply(this,arguments),n=t.afterTitle.apply(this,arguments),a=[];return a=r(a=r(a=r(a,s(e)),s(i)),s(n))},getBeforeBody:function(){return o(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,i){var n=this,a=n._options.callbacks,o=[];return R.each(t,function(t){var e={before:[],lines:[],after:[]};r(e.before,s(a.beforeLabel.call(n,t,i))),r(e.lines,a.label.call(n,t,i)),r(e.after,s(a.afterLabel.call(n,t,i))),o.push(e)}),o},getAfterBody:function(){return o(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),i=t.footer.apply(this,arguments),n=t.afterFooter.apply(this,arguments),a=[];return a=r(a=r(a=r(a,s(e)),s(i)),s(n))},update:function(t){var e,i,n,a,o,r,s,l,u,d,c,h,f,g,p,m,v,b,x,y,k=this,M=k._options,w=k._model,C=k._model=z(M),S=k._active,_=k._data,D={xAlign:w.xAlign,yAlign:w.yAlign},P={x:w.x,y:w.y},I={width:w.width,height:w.height},A={x:w.caretX,y:w.caretY};if(S.length){C.opacity=1;var T=[],F=[];A=L[M.position].call(k,S,k._eventPosition);var O=[];for(e=0,i=S.length;e<i;++e)O.push((m=S[e],b=v=void 0,v=m._xScale,b=m._yScale||m._scale,x=m._index,y=m._datasetIndex,{xLabel:v?v.getLabelForIndex(x,y):"",yLabel:b?b.getLabelForIndex(x,y):"",index:x,datasetIndex:y,x:m._model.x,y:m._model.y}));M.filter&&(O=O.filter(function(t){return M.filter(t,_)})),M.itemSort&&(O=O.sort(function(t,e){return M.itemSort(t,e,_)})),R.each(O,function(t){T.push(M.callbacks.labelColor.call(k,t,k._chart)),F.push(M.callbacks.labelTextColor.call(k,t,k._chart))}),C.title=k.getTitle(O,_),C.beforeBody=k.getBeforeBody(O,_),C.body=k.getBody(O,_),C.afterBody=k.getAfterBody(O,_),C.footer=k.getFooter(O,_),C.x=Math.round(A.x),C.y=Math.round(A.y),C.caretPadding=M.caretPadding,C.labelColors=T,C.labelTextColors=F,C.dataPoints=O,D=function(t,e){var i,n,a,o,r,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",c="center";s.y<e.height?c="top":s.y>l.height-e.height&&(c="bottom");var h=(u.left+u.right)/2,f=(u.top+u.bottom)/2;n="center"===c?(i=function(t){return t<=h},function(t){return h<t}):(i=function(t){return t<=e.width/2},function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(d="left",a(s.x)&&(d="center",c=r(s.y))):n(s.x)&&(d="right",o(s.x)&&(d="center",c=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:c}}(this,I=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,u=e.titleFontSize,d=e.bodyFontSize,c=e.footerFontSize;n+=s*u,n+=s?(s-1)*e.titleSpacing:0,n+=s?e.titleMarginBottom:0,n+=r*d,n+=r?(r-1)*e.bodySpacing:0,n+=l?e.footerMarginTop:0,n+=l*c,n+=l?(l-1)*e.footerSpacing:0;var h=0,f=function(t){a=Math.max(a,i.measureText(t).width+h)};return i.font=R.fontString(u,e._titleFontStyle,e._titleFontFamily),R.each(e.title,f),i.font=R.fontString(d,e._bodyFontStyle,e._bodyFontFamily),R.each(e.beforeBody.concat(e.afterBody),f),h=e.displayColors?d+2:0,R.each(o,function(t){R.each(t.before,f),R.each(t.lines,f),R.each(t.after,f)}),h=0,i.font=R.fontString(c,e._footerFontStyle,e._footerFontFamily),R.each(e.footer,f),{width:a+=2*e.xPadding,height:n}}(this,C)),n=C,a=I,o=D,r=k._chart,s=n.x,l=n.y,u=n.caretSize,d=n.caretPadding,c=n.cornerRadius,h=o.xAlign,f=o.yAlign,g=u+d,p=c+d,"right"===h?s-=a.width:"center"===h&&((s-=a.width/2)+a.width>r.width&&(s=r.width-a.width),s<0&&(s=0)),"top"===f?l+=g:l-="bottom"===f?a.height+g:a.height/2,"center"===f?"left"===h?s+=g:"right"===h&&(s-=g):"left"===h?s-=p:"right"===h&&(s+=p),P={x:s,y:l}}else C.opacity=0;return C.xAlign=D.xAlign,C.yAlign=D.yAlign,C.x=P.x,C.y=P.y,C.width=I.width,C.height=I.height,C.caretX=A.x,C.caretY=A.y,k._model=C,t&&M.custom&&M.custom.call(k,C),k},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,u=i.caretSize,d=i.cornerRadius,c=i.xAlign,h=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===h)s=g+m/2,l="left"===c?(a=(n=f)-u,o=n,r=s+u,s-u):(a=(n=f+p)+u,o=n,r=s-u,s+u);else if(o=(n="left"===c?(a=f+d+u)-u:"right"===c?(a=f+p-d-u)-u:(a=i.caretX)-u,a+u),"top"===h)s=(r=g)-u,l=r;else{s=(r=g+m)+u,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,e,i,n){var a=e.title;if(a.length){i.textAlign=e._titleAlign,i.textBaseline="top";var o,r,s=e.titleFontSize,l=e.titleSpacing;for(i.fillStyle=h(e.titleFontColor,n),i.font=R.fontString(s,e._titleFontStyle,e._titleFontFamily),o=0,r=a.length;o<r;++o)i.fillText(a[o],t.x,t.y),t.y+=s+l,o+1===a.length&&(t.y+=e.titleMarginBottom-l)}},drawBody:function(n,a,o,r){var s=a.bodyFontSize,e=a.bodySpacing,t=a.body;o.textAlign=a._bodyAlign,o.textBaseline="top",o.font=R.fontString(s,a._bodyFontStyle,a._bodyFontFamily);var i=0,l=function(t){o.fillText(t,n.x+i,n.y),n.y+=s+e};o.fillStyle=h(a.bodyFontColor,r),R.each(a.beforeBody,l);var u=a.displayColors;i=u?s+2:0,R.each(t,function(t,e){var i=h(a.labelTextColors[e],r);o.fillStyle=i,R.each(t.before,l),R.each(t.lines,function(t){u&&(o.fillStyle=h(a.legendColorBackground,r),o.fillRect(n.x,n.y,s,s),o.lineWidth=1,o.strokeStyle=h(a.labelColors[e].borderColor,r),o.strokeRect(n.x,n.y,s,s),o.fillStyle=h(a.labelColors[e].backgroundColor,r),o.fillRect(n.x+1,n.y+1,s-2,s-2),o.fillStyle=i),l(t)}),R.each(t.after,l)}),i=0,R.each(a.afterBody,l),n.y-=e},drawFooter:function(e,i,n,t){var a=i.footer;a.length&&(e.y+=i.footerMarginTop,n.textAlign=i._footerAlign,n.textBaseline="top",n.fillStyle=h(i.footerFontColor,t),n.font=R.fontString(i.footerFontSize,i._footerFontStyle,i._footerFontFamily),R.each(a,function(t){n.fillText(t,e.x,e.y),e.y+=i.footerFontSize+i.footerSpacing}))},drawBackground:function(t,e,i,n,a){i.fillStyle=h(e.backgroundColor,a),i.strokeStyle=h(e.borderColor,a),i.lineWidth=e.borderWidth;var o=e.xAlign,r=e.yAlign,s=t.x,l=t.y,u=n.width,d=n.height,c=e.cornerRadius;i.beginPath(),i.moveTo(s+c,l),"top"===r&&this.drawCaret(t,n),i.lineTo(s+u-c,l),i.quadraticCurveTo(s+u,l,s+u,l+c),"center"===r&&"right"===o&&this.drawCaret(t,n),i.lineTo(s+u,l+d-c),i.quadraticCurveTo(s+u,l+d,s+u-c,l+d),"bottom"===r&&this.drawCaret(t,n),i.lineTo(s+c,l+d),i.quadraticCurveTo(s,l+d,s,l+d-c),"center"===r&&"left"===o&&this.drawCaret(t,n),i.lineTo(s,l+c),i.quadraticCurveTo(s,l,s+c,l),i.closePath(),i.fill(),0<e.borderWidth&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(this.drawBackground(n,e,t,i,a),n.x+=e.xPadding,n.y+=e.yPadding,this.drawTitle(n,e,t,a),this.drawBody(n,e,t,a),this.drawFooter(n,e,t,a))}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],"mouseout"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!R.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}})).positioners=L},{26:26,27:27,46:46}],37:[function(t,e,i){"use strict";var n=t(26),a=t(27),d=t(46);n._set("global",{elements:{arc:{backgroundColor:n.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),e.exports=a.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var i=this._view;if(i){for(var n=d.getAngleFromPoint(i,{x:t,y:e}),a=n.angle,o=n.distance,r=i.startAngle,s=i.endAngle;s<r;)s+=2*Math.PI;for(;s<a;)a-=2*Math.PI;for(;a<r;)a+=2*Math.PI;var l=r<=a&&a<=s,u=o>=i.innerRadius&&o<=i.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,n=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,n),t.arc(e.x,e.y,e.innerRadius,n,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{26:26,27:27,46:46}],38:[function(t,e,i){"use strict";var n=t(26),a=t(27),d=t(46),c=n.global;n._set("global",{elements:{line:{tension:.4,backgroundColor:c.defaultColor,borderWidth:3,borderColor:c.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a=this._view,o=this._chart.ctx,r=a.spanGaps,s=this._children.slice(),l=c.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),o.save(),o.lineCap=a.borderCapStyle||l.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||l.borderDash),o.lineDashOffset=a.borderDashOffset||l.borderDashOffset,o.lineJoin=a.borderJoinStyle||l.borderJoinStyle,o.lineWidth=a.borderWidth||l.borderWidth,o.strokeStyle=a.borderColor||c.defaultColor,o.beginPath(),u=-1,t=0;t<s.length;++t)e=s[t],i=d.previousItem(s,t),n=e._view,0===t?n.skip||(o.moveTo(n.x,n.y),u=t):(i=-1===u?i:s[u],n.skip||(u!==t-1&&!r||-1===u?o.moveTo(n.x,n.y):d.canvas.lineTo(o,i._view,e._view),u=t));o.stroke(),o.restore()}})},{26:26,27:27,46:46}],39:[function(t,e,i){"use strict";var u=t(26),n=t(27),d=t(46),c=u.global.defaultColor;function a(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}u._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:c,borderColor:c,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=n.extend({inRange:function(t,e){var i=this._view;return!!i&&Math.pow(t-i.x,2)+Math.pow(e-i.y,2)<Math.pow(i.hitRadius+i.radius,2)},inLabelRange:a,inXRange:a,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,i=this._model,n=this._chart.ctx,a=e.pointStyle,o=e.rotation,r=e.radius,s=e.x,l=e.y;e.skip||(void 0===t||i.x>=t.left&&1.01*t.right>=i.x&&i.y>=t.top&&1.01*t.bottom>=i.y)&&(n.strokeStyle=e.borderColor||c,n.lineWidth=d.valueOrDefault(e.borderWidth,u.global.elements.point.borderWidth),n.fillStyle=e.backgroundColor||c,d.canvas.drawPoint(n,a,r,s,l,o))}})},{26:26,27:27,46:46}],40:[function(t,e,i){"use strict";var n=t(26),a=t(27);function l(t){return void 0!==t._view.width}function o(t){var e,i,n,a,o=t._view;if(l(t)){var r=o.width/2;e=o.x-r,i=o.x+r,n=Math.min(o.y,o.base),a=Math.max(o.y,o.base)}else{var s=o.height/2;e=Math.min(o.x,o.base),i=Math.max(o.x,o.base),n=o.y-s,a=o.y+s}return{left:e,top:n,right:i,bottom:a}}n._set("global",{elements:{rectangle:{backgroundColor:n.global.defaultColor,borderColor:n.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=a.extend({draw:function(){var t,e,i,n,a,o,r,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(r=l.horizontal?(t=l.base,e=l.x,i=l.y-l.height/2,n=l.y+l.height/2,a=t<e?1:-1,o=1,l.borderSkipped||"left"):(t=l.x-l.width/2,e=l.x+l.width/2,a=1,o=(i=l.y)<(n=l.base)?1:-1,l.borderSkipped||"bottom"),u){var d=Math.min(Math.abs(t-e),Math.abs(i-n)),c=(u=d<u?d:u)/2,h=t+("left"!==r?c*a:0),f=e+("right"!==r?-c*a:0),g=i+("top"!==r?c*o:0),p=n+("bottom"!==r?-c*o:0);h!==f&&(i=g,n=p),g!==p&&(t=h,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var m=[[t,n],[t,i],[e,i],[e,n]],v=["bottom","left","top","right"].indexOf(r,0);function b(t){return m[(v+t)%4]}-1===v&&(v=0);var x=b(0);s.moveTo(x[0],x[1]);for(var y=1;y<4;y++)x=b(y),s.lineTo(x[0],x[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=!1;if(this._view){var n=o(this);i=t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}return i},inLabelRange:function(t,e){if(!this._view)return!1;var i=o(this);return l(this)?t>=i.left&&t<=i.right:e>=i.top&&e<=i.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,i=this._view;return e=l(this)?(t=i.x,(i.y+i.base)/2):(t=(i.x+i.base)/2,i.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{26:26,27:27}],41:[function(t,e,i){"use strict";e.exports={},e.exports.Arc=t(37),e.exports.Line=t(38),e.exports.Point=t(39),e.exports.Rectangle=t(40)},{37:37,38:38,39:39,40:40}],42:[function(t,e,i){"use strict";var n=t(43);i=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,a/2-1e-7,n/2-1e-7);t.moveTo(e+r,i),t.lineTo(e+n-r,i),t.arcTo(e+n,i,e+n,i+r,r),t.lineTo(e+n,i+a-r),t.arcTo(e+n,i+a,e+n-r,i+a,r),t.lineTo(e+r,i+a),t.arcTo(e,i+a,e,i+a-r,r),t.lineTo(e,i+r),t.arcTo(e,i,e+r,i,r),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a,o){var r,s,l,u,d,c;if(o=o||0,!e||"object"!=typeof e||"[object HTMLImageElement]"!==(r=e.toString())&&"[object HTMLCanvasElement]"!==r){if(!(isNaN(i)||i<=0)){switch(t.save(),t.translate(n,a),t.rotate(o*Math.PI/180),t.beginPath(),e){default:t.arc(0,0,i,0,2*Math.PI),t.closePath();break;case"triangle":d=(s=3*i/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(-s/2,d/3),t.lineTo(s/2,d/3),t.lineTo(0,-2*d/3),t.closePath();break;case"rect":c=1/Math.SQRT2*i,t.rect(-c,-c,2*c,2*c);break;case"rectRounded":var h=i/Math.SQRT2,f=-h,g=-h,p=Math.SQRT2*i;this.roundedRect(t,f,g,p,p,.425*i);break;case"rectRot":c=1/Math.SQRT2*i,t.moveTo(-c,0),t.lineTo(0,c),t.lineTo(c,0),t.lineTo(0,-c),t.closePath();break;case"cross":t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i,0),t.lineTo(i,0);break;case"crossRot":l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"star":t.moveTo(0,i),t.lineTo(0,-i),t.moveTo(-i,0),t.lineTo(i,0),l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,t.moveTo(-l,-u),t.lineTo(l,u),t.moveTo(-l,u),t.lineTo(l,-u);break;case"line":t.moveTo(-i,0),t.lineTo(i,0);break;case"dash":t.moveTo(0,0),t.lineTo(i,0)}t.fill(),t.stroke(),t.restore()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){if(i.steppedLine)return"after"===i.steppedLine&&!n||"after"!==i.steppedLine&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y),void t.lineTo(i.x,i.y);i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}};n.clear=i.clear,n.drawRoundedRectangle=function(t){t.beginPath(),i.roundedRect.apply(i,arguments)}},{43:43}],43:[function(t,e,i){"use strict";var n,d={noop:function(){},uid:(n=0,function(){return n++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return d.valueOrDefault(d.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var a,o,r;if(d.isArray(t))if(o=t.length,n)for(a=o-1;0<=a;a--)e.call(i,t[a],a);else for(a=0;a<o;a++)e.call(i,t[a],a);else if(d.isObject(t))for(o=(r=Object.keys(t)).length,a=0;a<o;a++)e.call(i,t[r[a]],r[a])},arrayEquals:function(t,e){var i,n,a,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,n=t.length;i<n;++i)if(a=t[i],o=e[i],a instanceof Array&&o instanceof Array){if(!d.arrayEquals(a,o))return!1}else if(a!==o)return!1;return!0},clone:function(t){if(d.isArray(t))return t.map(d.clone);if(d.isObject(t)){for(var e={},i=Object.keys(t),n=i.length,a=0;a<n;++a)e[i[a]]=d.clone(t[i[a]]);return e}return t},_merger:function(t,e,i,n){var a=e[t],o=i[t];d.isObject(a)&&d.isObject(o)?d.merge(a,o,n):e[t]=d.clone(o)},_mergerIf:function(t,e,i){var n=e[t],a=i[t];d.isObject(n)&&d.isObject(a)?d.mergeIf(n,a):e.hasOwnProperty(t)||(e[t]=d.clone(a))},merge:function(t,e,i){var n,a,o,r,s,l=d.isArray(e)?e:[e],u=l.length;if(!d.isObject(t))return t;for(n=(i=i||{}).merger||d._merger,a=0;a<u;++a)if(e=l[a],d.isObject(e))for(s=0,r=(o=Object.keys(e)).length;s<r;++s)n(o[s],t,e,i);return t},mergeIf:function(t,e){return d.merge(t,e,{merger:d._mergerIf})},extend:function(i){for(var t=function(t,e){i[e]=t},e=1,n=arguments.length;e<n;++e)d.each(arguments[e],t);return i},inherits:function(t){var e=this,i=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},n=function(){this.constructor=i};return n.prototype=e.prototype,i.prototype=new n,i.extend=d.inherits,t&&d.extend(i.prototype,t),i.__super__=e.prototype,i}};(e.exports=d).callCallback=d.callback,d.indexOf=function(t,e,i){return Array.prototype.indexOf.call(t,e,i)},d.getValueOrDefault=d.valueOrDefault,d.getValueAtIndexOrDefault=d.valueAtIndexOrDefault},{}],44:[function(t,e,i){"use strict";var n=t(43),a={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return 1<=t?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),e=n<1?(n=1,i/4):i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),e=n<1?(n=1,i/4):i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),e=n<1?(n=1,i/4):i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){return t*t*(2.70158*t-1.70158)},easeOutBack:function(t){return(t-=1)*t*(2.70158*t+1.70158)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},n.easingEffects=a},{43:43}],45:[function(t,e,i){"use strict";var r=t(43);e.exports={toLineHeight:function(t,e){var i=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,i,n,a;return r.isObject(t)?(e=+t.top||0,i=+t.right||0,n=+t.bottom||0,a=+t.left||0):e=i=n=a=+t||0,{top:e,right:i,bottom:n,left:a,height:e+n,width:a+i}},resolve:function(t,e,i){var n,a,o;for(n=0,a=t.length;n<a;++n)if(void 0!==(o=t[n])&&(void 0!==e&&"function"==typeof o&&(o=o(e)),void 0!==i&&r.isArray(o)&&(o=o[i]),void 0!==o))return o}}},{43:43}],46:[function(t,e,i){"use strict";e.exports=t(43),e.exports.easing=t(44),e.exports.canvas=t(42),e.exports.options=t(45)},{42:42,43:43,44:44,45:45}],47:[function(t,e,i){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},{}],48:[function(t,e,i){"use strict";var f=t(46),g="$chartjs",p="chartjs-",m=p+"render-monitor",v=p+"render-animation",b=["animationstart","webkitAnimationStart"],s={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function l(t,e){var i=f.getStyle(t,e),n=i&&i.match(/^(\d+)(\.\d+)?px$/);return n?Number(n[1]):void 0}var n=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function x(t,e,i){t.addEventListener(e,i,n)}function r(t,e,i){t.removeEventListener(e,i,n)}function y(t,e,i,n,a){return{type:t,chart:e,native:a||null,x:void 0!==i?i:null,y:void 0!==n?n:null}}function a(e,t,i){var n,a,o,r,s,l,u,d,c=e[g]||(e[g]={}),h=c.resizer=function(t){var e=document.createElement("div"),i=p+"size-monitor",n="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=n,e.className=i,e.innerHTML='<div class="'+i+'-expand" style="'+n+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+i+'-shrink" style="'+n+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var a=e.childNodes[0],o=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,o.scrollLeft=1e6,o.scrollTop=1e6};var r=function(){e._reset(),t()};return x(a,"scroll",r.bind(a,"expand")),x(o,"scroll",r.bind(o,"shrink")),e}((o=!(n=function(){if(c.resizer)return t(y("resize",i))}),r=[],function(){r=Array.prototype.slice.call(arguments),a=a||this,o||(o=!0,f.requestAnimFrame.call(window,function(){o=!1,n.apply(a,r)}))}));l=function(){if(c.resizer){var t=e.parentNode;t&&t!==h.parentNode&&t.insertBefore(h,t.firstChild),h._reset()}},u=(s=e)[g]||(s[g]={}),d=u.renderProxy=function(t){t.animationName===v&&l()},f.each(b,function(t){x(s,t,d)}),u.reflow=!!s.offsetParent,s.classList.add(m)}function o(t){var e,i,n,a=t[g]||{},o=a.resizer;delete a.resizer,i=(e=t)[g]||{},(n=i.renderProxy)&&(f.each(b,function(t){r(e,t,n)}),delete i.renderProxy),e.classList.remove(m),o&&o.parentNode&&o.parentNode.removeChild(o)}e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t,e,i,n="from{opacity:0.99}to{opacity:1}";e="@-webkit-keyframes "+v+"{"+n+"}@keyframes "+v+"{"+n+"}."+m+"{-webkit-animation:"+v+" 0.001s;animation:"+v+" 0.001s;}",i=(t=this)._style||document.createElement("style"),t._style||(e="/* Chart.js */\n"+e,(t._style=i).setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(i)),i.appendChild(document.createTextNode(e))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute("height"),a=t.getAttribute("width");if(t[g]={initial:{height:n,width:a,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===a||""===a){var o=l(t,"width");void 0!==o&&(t.width=o)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var r=l(t,"height");void 0!==o&&(t.height=r)}}(t,e),i):null},releaseContext:function(t){var i=t.canvas;if(i[g]){var n=i[g].initial;["height","width"].forEach(function(t){var e=n[t];f.isNullOrUndef(e)?i.removeAttribute(t):i.setAttribute(t,e)}),f.each(n.style||{},function(t,e){i.style[e]=t}),i.width=i.width,delete i[g]}},addEventListener:function(o,t,r){var e=o.canvas;if("resize"!==t){var i=r[g]||(r[g]={});x(e,t,(i.proxies||(i.proxies={}))[o.id+"_"+t]=function(t){var e,i,n,a;r((i=o,n=s[(e=t).type]||e.type,a=f.getRelativePosition(e,i),y(n,i,a.x,a.y,e)))})}else a(e,r,o)},removeEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=((i[g]||{}).proxies||{})[t.id+"_"+e];a&&r(n,e,a)}else o(n)}},f.addEvent=x,f.removeEvent=r},{46:46}],49:[function(t,e,i){"use strict";var n=t(46),a=t(47),o=t(48),r=o._enabled?o:a;e.exports=n.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{46:46,47:47,48:48}],50:[function(t,e,i){"use strict";e.exports={},e.exports.filler=t(51),e.exports.legend=t(52),e.exports.title=t(53)},{51:51,52:52,53:53}],51:[function(t,e,i){"use strict";var u=t(26),h=t(41),d=t(46);u._set("global",{plugins:{filler:{propagate:!0}}});var f={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e<o&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,i=e?e.x:null,n=e?e.y:null;return function(t){return{x:null===i?t.x:i,y:null===n?t.y:n}}}};function g(t,e,i){var n,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),!1===o||null===o)return!1;if(!0===o)return"origin";if(n=parseFloat(o,10),isFinite(n)&&Math.floor(n)===n)return"-"!==o[0]&&"+"!==o[0]||(n=e+n),!(n===e||n<0||i<=n)&&n;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function p(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===i.scaleBottom?n.bottom:i.scaleBottom:"end"===a?o=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?o=i.scaleZero:n.getBasePosition?o=n.getBasePosition():n.getBasePixel&&(o=n.getBasePixel()),null!=o){if(void 0!==o.x&&void 0!==o.y)return o;if("number"==typeof o&&isFinite(o))return{x:(e=n.isHorizontal())?o:null,y:e?null:o}}return null}function m(t,e,i){var n,a=t[e].fill,o=[e];if(!i)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function x(t){return t&&!t.skip}function y(t,e,i,n,a){var o;if(n&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<n;++o)d.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(i[a-1].x,i[a-1].y),o=a-1;0<o;--o)d.canvas.lineTo(t,i[o],i[o-1],!0)}}e.exports={id:"filler",afterDatasetsUpdate:function(t,e){var i,n,a,o,r,s,l,u=(t.data.datasets||[]).length,d=e.propagate,c=[];for(n=0;n<u;++n)o=null,(a=(i=t.getDatasetMeta(n)).dataset)&&a._model&&a instanceof h.Line&&(o={visible:t.isDatasetVisible(n),fill:g(a,n,u),chart:t,el:a}),i.$filler=o,c.push(o);for(n=0;n<u;++n)(o=c[n])&&(o.fill=m(c,n,d),o.boundary=p(o),o.mapper=(l=void 0,s=(r=o).fill,!(l="dataset")===s?null:(isFinite(s)||(l="boundary"),f[l](r))))},beforeDatasetDraw:function(t,e){var i=e.meta.$filler;if(i){var n=t.ctx,a=i.el,o=a._view,r=a._children||[],s=i.mapper,l=o.backgroundColor||u.global.defaultColor;s&&l&&r.length&&(d.canvas.clipArea(n,t.chartArea),function(t,e,i,n,a,o){var r,s,l,u,d,c,h,f=e.length,g=n.spanGaps,p=[],m=[],v=0,b=0;for(t.beginPath(),r=0,s=f+!!o;r<s;++r)d=i(u=e[l=r%f]._view,l,n),c=x(u),h=x(d),c&&h?(v=p.push(u),b=m.push(d)):v&&b&&(g?(c&&p.push(u),h&&m.push(d)):(y(t,p,m,v,b),v=b=0,p=[],m=[]));y(t,p,m,v,b),t.closePath(),t.fillStyle=a,t.fill()}(n,r,s,o,l,a._loop),d.canvas.unclipArea(n))}}}},{26:26,41:41,46:46}],52:[function(t,e,i){"use strict";var _=t(26),n=t(27),D=t(46),a=t(31),o=D.noop;function P(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}_._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var i=e.datasetIndex,n=this.chart,a=n.getDatasetMeta(i);a.hidden=null===a.hidden?!n.data.datasets[i].hidden:null,n.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(i){var t=i.data;return D.isArray(t.datasets)?t.datasets.map(function(t,e){return{text:t.label,fillStyle:D.isArray(t.backgroundColor)?t.backgroundColor[0]:t.backgroundColor,hidden:!i.isDatasetVisible(e),lineCap:t.borderCapStyle,lineDash:t.borderDash,lineDashOffset:t.borderDashOffset,lineJoin:t.borderJoinStyle,lineWidth:t.borderWidth,strokeStyle:t.borderColor,pointStyle:t.pointStyle,datasetIndex:e}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var i=0;i<t.data.datasets.length;i++)e.push('<li><span style="background-color:'+t.data.datasets[i].backgroundColor+'"></span>'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var r=n.extend({initialize:function(t){D.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:o,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:function(){var e=this,i=e.options.labels||{},t=D.callback(i.generateLabels,[e.chart],e)||[];i.filter&&(t=t.filter(function(t){return i.filter(t,e.chart.data)})),e.options.reverse&&t.reverse(),e.legendItems=t},afterBuildLabels:o,beforeFit:o,fit:function(){var n=this,t=n.options,a=t.labels,e=t.display,o=n.ctx,i=_.global,r=D.valueOrDefault,s=r(a.fontSize,i.defaultFontSize),l=r(a.fontStyle,i.defaultFontStyle),u=r(a.fontFamily,i.defaultFontFamily),d=D.fontString(s,l,u),c=n.legendHitBoxes=[],h=n.minSize,f=n.isHorizontal();if(h.height=f?(h.width=n.maxWidth,e?10:0):(h.width=e?10:0,n.maxHeight),e)if(o.font=d,f){var g=n.lineWidths=[0],p=n.legendItems.length?s+a.padding:0;o.textAlign="left",o.textBaseline="top",D.each(n.legendItems,function(t,e){var i=P(a,s)+s/2+o.measureText(t.text).width;g[g.length-1]+i+a.padding>=n.width&&(p+=s+a.padding,g[g.length]=n.left),c[e]={left:0,top:0,width:i,height:s},g[g.length-1]+=i+a.padding}),h.height+=p}else{var m=a.padding,v=n.columnWidths=[],b=a.padding,x=0,y=0,k=s+m;D.each(n.legendItems,function(t,e){var i=P(a,s)+s/2+o.measureText(t.text).width;y+k>h.height&&(b+=x+a.padding,v.push(x),y=x=0),x=Math.max(x,i),y+=k,c[e]={left:0,top:0,width:i,height:s}}),b+=x,v.push(x),h.width+=b}n.width=h.width,n.height=h.height},afterFit:o,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var c=this,h=c.options,f=h.labels,g=_.global,p=g.elements.line,m=c.width,v=c.lineWidths;if(h.display){var b,x=c.ctx,y=D.valueOrDefault,t=y(f.fontColor,g.defaultFontColor),k=y(f.fontSize,g.defaultFontSize),e=y(f.fontStyle,g.defaultFontStyle),i=y(f.fontFamily,g.defaultFontFamily),n=D.fontString(k,e,i);x.textAlign="left",x.textBaseline="middle",x.lineWidth=.5,x.strokeStyle=t,x.fillStyle=t,x.font=n;var M=P(f,k),w=c.legendHitBoxes,C=c.isHorizontal();b=C?{x:c.left+(m-v[0])/2,y:c.top+f.padding,line:0}:{x:c.left+f.padding,y:c.top+f.padding,line:0};var S=k+f.padding;D.each(c.legendItems,function(t,e){var i,n,a,o,r,s=x.measureText(t.text).width,l=M+k/2+s,u=b.x,d=b.y;C?m<=u+l&&(d=b.y+=S,b.line++,u=b.x=c.left+(m-v[b.line])/2):d+S>c.bottom&&(u=b.x=u+c.columnWidths[b.line]+f.padding,d=b.y=c.top+f.padding,b.line++),function(t,e,i){if(!(isNaN(M)||M<=0)){x.save(),x.fillStyle=y(i.fillStyle,g.defaultColor),x.lineCap=y(i.lineCap,p.borderCapStyle),x.lineDashOffset=y(i.lineDashOffset,p.borderDashOffset),x.lineJoin=y(i.lineJoin,p.borderJoinStyle),x.lineWidth=y(i.lineWidth,p.borderWidth),x.strokeStyle=y(i.strokeStyle,g.defaultColor);var n=0===y(i.lineWidth,p.borderWidth);if(x.setLineDash&&x.setLineDash(y(i.lineDash,p.borderDash)),h.labels&&h.labels.usePointStyle){var a=k*Math.SQRT2/2,o=a/Math.SQRT2,r=t+o,s=e+o;D.canvas.drawPoint(x,i.pointStyle,a,r,s)}else n||x.strokeRect(t,e,M,k),x.fillRect(t,e,M,k);x.restore()}}(u,d,t),w[e].left=u,w[e].top=d,i=t,n=s,o=M+(a=k/2)+u,r=d+a,x.fillText(i.text,o,r),i.hidden&&(x.beginPath(),x.lineWidth=2,x.moveTo(o,r),x.lineTo(o+n,r),x.stroke()),C?b.x+=l+f.padding:b.y+=S})}},handleEvent:function(t){var e=this,i=e.options,n="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===n){if(!i.onHover)return}else{if("click"!==n)return;if(!i.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var s=e.legendHitBoxes,l=0;l<s.length;++l){var u=s[l];if(o>=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===n){i.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===n){i.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}});function s(t,e){var i=new r({ctx:t.ctx,options:e,chart:t});a.configure(t,i,e),a.addBox(t,i),t.legend=i}e.exports={id:"legend",_element:r,beforeInit:function(t){var e=t.options.legend;e&&s(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(D.mergeIf(e,_.global.legend),i?(a.configure(t,i,e),i.options=e):s(t,e)):i&&(a.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}}},{26:26,27:27,31:31,46:46}],53:[function(t,e,i){"use strict";var M=t(26),n=t(27),w=t(46),a=t(31),o=w.noop;M._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}});var r=n.extend({initialize:function(t){w.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:o,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:o,beforeSetDimensions:o,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:o,beforeBuildLabels:o,buildLabels:o,afterBuildLabels:o,beforeFit:o,fit:function(){var t=this,e=w.valueOrDefault,i=t.options,n=i.display,a=e(i.fontSize,M.global.defaultFontSize),o=t.minSize,r=w.isArray(i.text)?i.text.length:1,s=w.options.toLineHeight(i.lineHeight,a),l=n?r*s+2*i.padding:0;t.isHorizontal()?(o.width=t.maxWidth,o.height=l):(o.width=l,o.height=t.maxHeight),t.width=o.width,t.height=o.height},afterFit:o,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=w.valueOrDefault,n=t.options,a=M.global;if(n.display){var o,r,s,l=i(n.fontSize,a.defaultFontSize),u=i(n.fontStyle,a.defaultFontStyle),d=i(n.fontFamily,a.defaultFontFamily),c=w.fontString(l,u,d),h=w.options.toLineHeight(n.lineHeight,l),f=h/2+n.padding,g=0,p=t.top,m=t.left,v=t.bottom,b=t.right;e.fillStyle=i(n.fontColor,a.defaultFontColor),e.font=c,t.isHorizontal()?(r=m+(b-m)/2,s=p+f,o=b-m):(r="left"===n.position?m+f:b-f,s=p+(v-p)/2,o=v-p,g=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(r,s),e.rotate(g),e.textAlign="center",e.textBaseline="middle";var x=n.text;if(w.isArray(x))for(var y=0,k=0;k<x.length;++k)e.fillText(x[k],0,y,o),y+=h;else e.fillText(x,0,0,o);e.restore()}}});function s(t,e){var i=new r({ctx:t.ctx,options:e,chart:t});a.configure(t,i,e),a.addBox(t,i),t.titleBlock=i}e.exports={id:"title",_element:r,beforeInit:function(t){var e=t.options.title;e&&s(t,e)},beforeUpdate:function(t){var e=t.options.title,i=t.titleBlock;e?(w.mergeIf(e,M.global.title),i?(a.configure(t,i,e),i.options=e):s(t,e)):i&&(a.removeBox(t,i),delete t.titleBlock)}}},{26:26,27:27,31:31,46:46}],54:[function(t,e,i){"use strict";var n=t(33),a=t(34);e.exports=function(){var t=n.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,i=e.getLabels();e.minIndex=0,e.maxIndex=i.length-1,void 0!==e.options.ticks.min&&(t=i.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=i.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=i[e.minIndex],e.max=i[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var i=this,n=i.chart.data,a=i.isHorizontal();return n.yLabels&&!a?i.getRightValue(n.datasets[e].data[t]):i.ticks[t-i.minIndex]},getPixelForValue:function(t,e){var i,n=this,a=n.options.offset,o=Math.max(n.maxIndex+1-n.minIndex-(a?0:1),1);if(null!=t&&(i=n.isHorizontal()?t.x:t.y),void 0!==i||void 0!==t&&isNaN(e)){t=i||t;var r=n.getLabels().indexOf(t);e=-1!==r?r:e}if(n.isHorizontal()){var s=n.width/o,l=s*(e-n.minIndex);return a&&(l+=s/2),n.left+Math.round(l)}var u=n.height/o,d=u*(e-n.minIndex);return a&&(d+=u/2),n.top+Math.round(d)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,i=e.options.offset,n=Math.max(e._ticks.length-(i?0:1),1),a=e.isHorizontal(),o=(a?e.width:e.height)/n;return t-=a?e.left:e.top,i&&(t-=o/2),(t<=0?0:Math.round(t/o))+e.minIndex},getBasePixel:function(){return this.bottom}});a.registerScaleType("category",t,{position:"bottom"})}},{33:33,34:34}],55:[function(t,e,i){"use strict";var n=t(26),c=t(46),a=t(34),o=t(35);e.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.linear}},i=t.LinearScaleBase.extend({determineDataLimits:function(){var r=this,s=r.options,l=r.chart,t=l.data.datasets,e=r.isHorizontal();function u(t){return e?t.xAxisID===r.id:t.yAxisID===r.id}r.min=null,r.max=null;var n=s.stacked;if(void 0===n&&c.each(t,function(t,e){if(!n){var i=l.getDatasetMeta(e);l.isDatasetVisible(e)&&u(i)&&void 0!==i.stack&&(n=!0)}}),s.stacked||n){var d={};c.each(t,function(t,e){var n=l.getDatasetMeta(e),i=[n.type,void 0===s.stacked&&void 0===n.stack?e:"",n.stack].join(".");void 0===d[i]&&(d[i]={positiveValues:[],negativeValues:[]});var a=d[i].positiveValues,o=d[i].negativeValues;l.isDatasetVisible(e)&&u(n)&&c.each(t.data,function(t,e){var i=+r.getRightValue(t);isNaN(i)||n.data[e].hidden||(a[e]=a[e]||0,o[e]=o[e]||0,s.relativePoints?a[e]=100:i<0?o[e]+=i:a[e]+=i)})}),c.each(d,function(t){var e=t.positiveValues.concat(t.negativeValues),i=c.min(e),n=c.max(e);r.min=null===r.min?i:Math.min(r.min,i),r.max=null===r.max?n:Math.max(r.max,n)})}else c.each(t,function(t,e){var n=l.getDatasetMeta(e);l.isDatasetVisible(e)&&u(n)&&c.each(t.data,function(t,e){var i=+r.getRightValue(t);isNaN(i)||n.data[e].hidden||(null===r.min?r.min=i:i<r.min&&(r.min=i),null===r.max?r.max=i:i>r.max&&(r.max=i))})});r.min=isFinite(r.min)&&!isNaN(r.min)?r.min:0,r.max=isFinite(r.max)&&!isNaN(r.max)?r.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var i=c.valueOrDefault(e.fontSize,n.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*i)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});a.registerScaleType("linear",i,e)}},{26:26,34:34,35:35,46:46}],56:[function(t,e,i){"use strict";var c=t(46),n=t(33);e.exports=function(t){var e=c.noop;t.LinearScaleBase=n.extend({getRightValue:function(t){return"string"==typeof t?+t:n.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=c.sign(t.min),n=c.sign(t.max);i<0&&n<0?t.max=0:0<i&&0<n&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==o&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),n={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,precision:e.precision,stepSize:c.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var i,n,a,o=[];if(t.stepSize&&0<t.stepSize)a=t.stepSize;else{var r=c.niceNum(e.max-e.min,!1);a=c.niceNum(r/(t.maxTicks-1),!0),void 0!==(n=t.precision)&&(i=Math.pow(10,n),a=Math.ceil(a*i)/i)}var s=Math.floor(e.min/a)*a,l=Math.ceil(e.max/a)*a;c.isNullOrUndef(t.min)||c.isNullOrUndef(t.max)||!t.stepSize||c.almostWhole((t.max-t.min)/t.stepSize,a/1e3)&&(s=t.min,l=t.max);var u=(l-s)/a;u=c.almostEquals(u,Math.round(u),a/1e3)?Math.round(u):Math.ceil(u),a<(n=1)&&(n=Math.pow(10,1-Math.floor(c.log10(a))),s=Math.round(s*n)/n,l=Math.round(l*n)/n),o.push(void 0!==t.min?t.min:s);for(var d=1;d<u;++d)o.push(Math.round((s+d*a)*n)/n);return o.push(void 0!==t.max?t.max:l),o}(n,t);t.handleDirectionalChanges(),t.max=c.max(a),t.min=c.min(a),e.reverse?(a.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),n.prototype.convertTicksToLabels.call(t)}})}},{33:33,46:46}],57:[function(t,e,i){"use strict";var h=t(46),n=t(33),a=t(34),o=t(35);e.exports=function(c){var t={position:"left",ticks:{callback:o.formatters.logarithmic}},e=n.extend({determineDataLimits:function(){var r=this,i=r.options,s=r.chart,t=s.data.datasets,e=r.isHorizontal();function l(t){return e?t.xAxisID===r.id:t.yAxisID===r.id}r.min=null,r.max=null,r.minNotZero=null;var n=i.stacked;if(void 0===n&&h.each(t,function(t,e){if(!n){var i=s.getDatasetMeta(e);s.isDatasetVisible(e)&&l(i)&&void 0!==i.stack&&(n=!0)}}),i.stacked||n){var u={};h.each(t,function(t,e){var a=s.getDatasetMeta(e),o=[a.type,void 0===i.stacked&&void 0===a.stack?e:"",a.stack].join(".");s.isDatasetVisible(e)&&l(a)&&(void 0===u[o]&&(u[o]=[]),h.each(t.data,function(t,e){var i=u[o],n=+r.getRightValue(t);isNaN(n)||a.data[e].hidden||n<0||(i[e]=i[e]||0,i[e]+=n)}))}),h.each(u,function(t){if(0<t.length){var e=h.min(t),i=h.max(t);r.min=null===r.min?e:Math.min(r.min,e),r.max=null===r.max?i:Math.max(r.max,i)}})}else h.each(t,function(t,e){var n=s.getDatasetMeta(e);s.isDatasetVisible(e)&&l(n)&&h.each(t.data,function(t,e){var i=+r.getRightValue(t);isNaN(i)||n.data[e].hidden||i<0||(null===r.min?r.min=i:i<r.min&&(r.min=i),null===r.max?r.max=i:i>r.max&&(r.max=i),0!==i&&(null===r.minNotZero||i<r.minNotZero)&&(r.minNotZero=i))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks,i=h.valueOrDefault;t.min=i(e.min,t.min),t.max=i(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(h.log10(t.min))-1),t.max=Math.pow(10,Math.floor(h.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(h.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(h.log10(t.min))+1):10),null===t.minNotZero&&(0<t.min?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(h.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),n={min:e.min,max:e.max},a=t.ticks=function(t,e){var i,n,a=[],o=h.valueOrDefault,r=o(t.min,Math.pow(10,Math.floor(h.log10(e.min)))),s=Math.floor(h.log10(e.max)),l=Math.ceil(e.max/Math.pow(10,s));0===r?(i=Math.floor(h.log10(e.minNotZero)),n=Math.floor(e.minNotZero/Math.pow(10,i)),a.push(r),r=n*Math.pow(10,i)):(i=Math.floor(h.log10(r)),n=Math.floor(r/Math.pow(10,i)));for(var u=i<0?Math.pow(10,Math.abs(i)):1;a.push(r),10==++n&&(n=1,u=0<=++i?1:u),r=Math.round(n*Math.pow(10,i)*u)/u,i<s||i===s&&n<l;);var d=o(t.max,r);return a.push(d),a}(n,t);t.max=h.max(a),t.min=h.min(a),e.reverse?(i=!i,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),i&&a.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),n.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(h.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,i,n,a,o,r=this,s=r.options.ticks.reverse,l=h.log10,u=r._getFirstTickValue(r.minNotZero),d=0;return t=+r.getRightValue(t),o=s?(n=r.end,a=r.start,-1):(n=r.start,a=r.end,1),i=r.isHorizontal()?(e=r.width,s?r.right:r.left):(e=r.height,o*=-1,s?r.top:r.bottom),t!==n&&(0===n&&(e-=d=h.getValueOrDefault(r.options.ticks.fontSize,c.defaults.global.defaultFontSize),n=u),0!==t&&(d+=e/(l(a)-l(n))*(l(t)-l(n))),i+=o*d),i},getValueForPixel:function(t){var e,i,n,a,o=this,r=o.options.ticks.reverse,s=h.log10,l=o._getFirstTickValue(o.minNotZero);if(n=r?(i=o.end,o.start):(i=o.start,o.end),(a=o.isHorizontal()?(e=o.width,r?o.right-t:t-o.left):(e=o.height,r?t-o.top:o.bottom-t))!==i){if(0===i){var u=h.getValueOrDefault(o.options.ticks.fontSize,c.defaults.global.defaultFontSize);a-=u,e-=u,i=l}a*=s(n)-s(i),a/=e,a=Math.pow(10,s(i)+a)}return a}});a.registerScaleType("logarithmic",e,t)}},{33:33,34:34,35:35,46:46}],58:[function(t,e,i){"use strict";var n=t(26),k=t(46),a=t(34),o=t(35);e.exports=function(e){var v=n.global,t={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:o.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function b(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function x(t){var e=t.options.pointLabels,i=k.valueOrDefault(e.fontSize,v.defaultFontSize),n=k.valueOrDefault(e.fontStyle,v.defaultFontStyle),a=k.valueOrDefault(e.fontFamily,v.defaultFontFamily);return{size:i,style:n,family:a,font:k.fontString(i,n,a)}}function m(t,e,i,n,a){return t===n||t===a?{start:e-i/2,end:e+i/2}:t<n||a<t?{start:e-i-5,end:e}:{start:e,end:e+i+5}}function y(t,e,i,n){if(k.isArray(e))for(var a=i.y,o=1.5*n,r=0;r<e.length;++r)t.fillText(e[r],i.x,a),a+=o;else t.fillText(e,i.x,i.y)}function s(t){return k.isNumber(t)?t:0}var i=e.LinearScaleBase.extend({setDimensions:function(){var t=this,e=t.options,i=e.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var n=k.min([t.height,t.width]),a=k.valueOrDefault(i.fontSize,v.defaultFontSize);t.drawingArea=e.display?n/2-(a/2+i.backdropPaddingY):n/2},determineDataLimits:function(){var a=this,i=a.chart,o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;k.each(i.data.datasets,function(t,e){if(i.isDatasetVisible(e)){var n=i.getDatasetMeta(e);k.each(t.data,function(t,e){var i=+a.getRightValue(t);isNaN(i)||n.data[e].hidden||(o=Math.min(i,o),r=Math.max(i,r))})}}),a.min=o===Number.POSITIVE_INFINITY?0:o,a.max=r===Number.NEGATIVE_INFINITY?0:r,a.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,e=k.valueOrDefault(t.fontSize,v.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*e)))},convertTicksToLabels:function(){var t=this;e.LinearScaleBase.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t,e;this.options.pointLabels.display?function(t){var e,i,n,a=x(t),o=Math.min(t.height/2,t.width/2),r={r:t.width,l:0,t:t.height,b:0},s={};t.ctx.font=a.font,t._pointLabelSizes=[];var l,u,d,c=b(t);for(e=0;e<c;e++){n=t.getPointPosition(e,o),l=t.ctx,u=a.size,d=t.pointLabels[e]||"",i=k.isArray(d)?{w:k.longestText(l,l.font,d),h:d.length*u+1.5*(d.length-1)*u}:{w:l.measureText(d).width,h:u},t._pointLabelSizes[e]=i;var h=t.getIndexAngle(e),f=k.toDegrees(h)%360,g=m(f,n.x,i.w,0,180),p=m(f,n.y,i.h,90,270);g.start<r.l&&(r.l=g.start,s.l=h),g.end>r.r&&(r.r=g.end,s.r=h),p.start<r.t&&(r.t=p.start,s.t=h),p.end>r.b&&(r.b=p.end,s.b=h)}t.setReductions(o,r,s)}(this):(t=this,e=Math.min(t.height/2,t.width/2),t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0))},setReductions:function(t,e,i){var n=e.l/Math.sin(i.l),a=Math.max(e.r-this.width,0)/Math.sin(i.r),o=-e.t/Math.cos(i.t),r=-Math.max(e.b-this.height,0)/Math.cos(i.b);n=s(n),a=s(a),o=s(o),r=s(r),this.drawingArea=Math.min(Math.round(t-(n+a)/2),Math.round(t-(o+r)/2)),this.setCenterPoint(n,a,o,r)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-n-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/b(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:0<t&&0<e?t:0)},draw:function(){var o=this,t=o.options,r=t.gridLines,s=t.ticks,l=k.valueOrDefault;if(t.display){var u=o.ctx,d=this.getIndexAngle(0),c=l(s.fontSize,v.defaultFontSize),e=l(s.fontStyle,v.defaultFontStyle),i=l(s.fontFamily,v.defaultFontFamily),h=k.fontString(c,e,i);k.each(o.ticks,function(t,e){if(0<e||s.reverse){var i=o.getDistanceFromCenterForValue(o.ticksAsNumbers[e]);if(r.display&&0!==e&&function(t,e,i,n){var a=t.ctx;if(a.strokeStyle=k.valueAtIndexOrDefault(e.color,n-1),a.lineWidth=k.valueAtIndexOrDefault(e.lineWidth,n-1),t.options.gridLines.circular)a.beginPath(),a.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),a.closePath(),a.stroke();else{var o=b(t);if(0===o)return;a.beginPath();var r=t.getPointPosition(0,i);a.moveTo(r.x,r.y);for(var s=1;s<o;s++)r=t.getPointPosition(s,i),a.lineTo(r.x,r.y);a.closePath(),a.stroke()}}(o,r,i,e),s.display){var n=l(s.fontColor,v.defaultFontColor);if(u.font=h,u.save(),u.translate(o.xCenter,o.yCenter),u.rotate(d),s.showLabelBackdrop){var a=u.measureText(t).width;u.fillStyle=s.backdropColor,u.fillRect(-a/2-s.backdropPaddingX,-i-c/2-s.backdropPaddingY,a+2*s.backdropPaddingX,c+2*s.backdropPaddingY)}u.textAlign="center",u.textBaseline="middle",u.fillStyle=n,u.fillText(t,0,-i),u.restore()}}}),(t.angleLines.display||t.pointLabels.display)&&function(t){var e=t.ctx,i=t.options,n=i.angleLines,a=i.pointLabels;e.lineWidth=n.lineWidth,e.strokeStyle=n.color;var o,r,s,l,u=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),d=x(t);e.textBaseline="top";for(var c=b(t)-1;0<=c;c--){if(n.display){var h=t.getPointPosition(c,u);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(h.x,h.y),e.stroke(),e.closePath()}if(a.display){var f=t.getPointPosition(c,u+5),g=k.valueAtIndexOrDefault(a.fontColor,c,v.defaultFontColor);e.font=d.font,e.fillStyle=g;var p=t.getIndexAngle(c),m=k.toDegrees(p);e.textAlign=0===(l=m)||180===l?"center":l<180?"left":"right",o=m,r=t._pointLabelSizes[c],s=f,90===o||270===o?s.y-=r.h/2:(270<o||o<90)&&(s.y-=r.h),y(e,t.pointLabels[c]||"",f,d.size)}}}(o)}}});a.registerScaleType("radialLinear",i,t)}},{26:26,34:34,35:35,46:46}],59:[function(t,e,i){"use strict";var x=t(1);x="function"==typeof x?x:window.moment;var r=t(26),m=t(46),n=t(33),a=t(34),p=Number.MIN_SAFE_INTEGER||-9007199254740991,v=Number.MAX_SAFE_INTEGER||9007199254740991,y={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},k=Object.keys(y);function b(t,e){return t-e}function M(t){var e,i,n,a={},o=[];for(e=0,i=t.length;e<i;++e)a[n=t[e]]||(a[n]=!0,o.push(n));return o}function w(t,e,i,n){var a=function(t,e,i){for(var n,a,o,r=0,s=t.length-1;0<=r&&r<=s;){if(a=t[(n=r+s>>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]<i)r=n+1;else{if(!(a[e]>i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,u=(r[n]-o[n])*l;return o[n]+u}function C(t,e){var i=e.parser,n=e.parser||e.format;return"function"==typeof i?i(t):"string"==typeof t&&"string"==typeof n?x(t,n):(t instanceof x||(t=x(t)),t.isValid()?t:"function"==typeof n?n(t):t)}function S(t,e){if(m.isNullOrUndef(t))return null;var i=e.options.time,n=C(e.getRightValue(t),i);return n.isValid()?(i.round&&n.startOf(i.round),n.valueOf()):null}function _(t){for(var e=k.indexOf(t)+1,i=k.length;e<i;++e)if(y[k[e]].common)return k[e]}function D(t,e,i,n){var a,o=n.time,r=o.unit||function(t,e,i,n){var a,o,r,s=k.length;for(a=k.indexOf(t);a<s-1;++a)if(r=(o=y[k[a]]).steps?o.steps[o.steps.length-1]:v,o.common&&Math.ceil((i-e)/(r*o.size))<=n)return k[a];return k[s-1]}(o.minUnit,t,e,i),s=_(r),l=m.valueOrDefault(o.stepSize,o.unitStepSize),u="week"===r&&o.isoWeekday,d=n.ticks.major.enabled,c=y[r],h=x(t),f=x(e),g=[];for(l||(l=function(t,e,i,n){var a,o,r,s=e-t,l=y[i],u=l.size,d=l.steps;if(!d)return Math.ceil(s/(n*u));for(a=0,o=d.length;a<o&&(r=d[a],!(Math.ceil(s/(u*r))<=n));++a);return r}(t,e,r,i)),u&&(h=h.isoWeekday(u),f=f.isoWeekday(u)),h=h.startOf(u?"day":r),(f=f.startOf(u?"day":r))<e&&f.add(1,r),a=x(h),d&&s&&!u&&!o.round&&(a.startOf(s),a.add(~~((h-a)/(c.size*l))*l,r));a<f;a.add(l,r))g.push(+a);return g.push(+a),g}e.exports=function(){var t=n.extend({initialize:function(){if(!x)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),n.prototype.initialize.call(this)},update:function(){var t=this.options;return t.time&&t.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),n.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),n.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,i,n,a,o,r=this,s=r.chart,l=r.options.time,u=l.unit||"day",d=v,c=p,h=[],f=[],g=[];for(t=0,i=s.data.labels.length;t<i;++t)g.push(S(s.data.labels[t],r));for(t=0,i=(s.data.datasets||[]).length;t<i;++t)if(s.isDatasetVisible(t))if(a=s.data.datasets[t].data,m.isObject(a[0]))for(f[t]=[],e=0,n=a.length;e<n;++e)o=S(a[e],r),h.push(o),f[t][e]=o;else h.push.apply(h,g),f[t]=g.slice(0);else f[t]=[];g.length&&(g=M(g).sort(b),d=Math.min(d,g[0]),c=Math.max(c,g[g.length-1])),h.length&&(h=M(h).sort(b),d=Math.min(d,h[0]),c=Math.max(c,h[h.length-1])),d=S(l.min,r)||d,c=S(l.max,r)||c,d=d===v?+x().startOf(u):d,c=c===p?+x().endOf(u)+1:c,r.min=Math.min(d,c),r.max=Math.max(d+1,c),r._horizontal=r.isHorizontal(),r._table=[],r._timestamps={data:h,datasets:f,labels:g}},buildTicks:function(){var t,e,i,n,a,o,r,s,l,u,d,c,h=this,f=h.min,g=h.max,p=h.options,m=p.time,v=[],b=[];switch(p.ticks.source){case"data":v=h._timestamps.data;break;case"labels":v=h._timestamps.labels;break;case"auto":default:v=D(f,g,h.getLabelCapacity(f),p)}for("ticks"===p.bounds&&v.length&&(f=v[0],g=v[v.length-1]),f=S(m.min,h)||f,g=S(m.max,h)||g,t=0,e=v.length;t<e;++t)f<=(i=v[t])&&i<=g&&b.push(i);return h.min=f,h.max=g,h._unit=m.unit||function(t,e,i,n){var a,o,r=x.duration(x(n).diff(x(i)));for(a=k.length-1;a>=k.indexOf(e);a--)if(o=k[a],y[o].common&&r.as(o)>=t.length)return o;return k[e?k.indexOf(e):0]}(b,m.minUnit,h.min,h.max),h._majorUnit=_(h._unit),h._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,u=[],d=[e];for(a=0,o=t.length;a<o;++a)e<(s=t[a])&&s<i&&d.push(s);for(d.push(i),a=0,o=d.length;a<o;++a)l=d[a+1],r=d[a-1],s=d[a],void 0!==r&&void 0!==l&&Math.round((l+r)/2)===s||u.push({time:s,pos:a/(o-1)});return u}(h._timestamps.data,f,g,p.distribution),h._offsets=(n=h._table,a=b,o=f,r=g,c=d=0,(s=p).offset&&a.length&&(s.time.min||(l=1<a.length?a[1]:r,u=a[0],d=(w(n,"time",l,"pos")-w(n,"time",u,"pos"))/2),s.time.max||(l=a[a.length-1],u=1<a.length?a[a.length-2]:o,c=(w(n,"time",l,"pos")-w(n,"time",u,"pos"))/2)),{left:d,right:c}),h._labelFormat=function(t,e){var i,n,a,o=t.length;for(i=0;i<o;i++){if(0!==(n=C(t[i],e)).millisecond())return"MMM D, YYYY h:mm:ss.SSS a";0===n.second()&&0===n.minute()&&0===n.hour()||(a=!0)}return a?"MMM D, YYYY h:mm:ss a":"MMM D, YYYY"}(h._timestamps.data,m),function(t,e){var i,n,a,o,r=[];for(i=0,n=t.length;i<n;++i)a=t[i],o=!!e&&a===+x(a).startOf(e),r.push({value:a,major:o});return r}(b,h._majorUnit)},getLabelForIndex:function(t,e){var i=this.chart.data,n=this.options.time,a=i.labels&&t<i.labels.length?i.labels[t]:"",o=i.datasets[e].data[t];return m.isObject(o)&&(a=this.getRightValue(o)),n.tooltipFormat?C(a,n).format(n.tooltipFormat):"string"==typeof a?a:C(a,n).format(this._labelFormat)},tickFormatFunction:function(t,e,i,n){var a=this.options,o=t.valueOf(),r=a.time.displayFormats,s=r[this._unit],l=this._majorUnit,u=r[l],d=t.clone().startOf(l).valueOf(),c=a.ticks.major,h=c.enabled&&l&&u&&o===d,f=t.format(n||(h?u:s)),g=h?c:a.ticks.minor,p=m.valueOrDefault(g.callback,g.userCallback);return p?p(f,e,i):f},convertTicksToLabels:function(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(this.tickFormatFunction(x(t[e].value),e,t));return n},getPixelForOffset:function(t){var e=this,i=e._horizontal?e.width:e.height,n=e._horizontal?e.left:e.top,a=w(e._table,"time",t,"pos");return n+i*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,i){var n=null;if(void 0!==e&&void 0!==i&&(n=this._timestamps.datasets[i][e]),null===n&&(n=S(t,this)),null!==n)return this.getPixelForOffset(n)},getPixelForTick:function(t){var e=this.getTicks();return 0<=t&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,i=e._horizontal?e.width:e.height,n=e._horizontal?e.left:e.top,a=(i?(t-n)/i:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,o=w(e._table,"pos",a,"time");return x(o)},getLabelWidth:function(t){var e=this.options.ticks,i=this.ctx.measureText(t).width,n=m.toRadians(e.maxRotation),a=Math.cos(n),o=Math.sin(n);return i*a+m.valueOrDefault(e.fontSize,r.global.defaultFontSize)*o},getLabelCapacity:function(t){var e=this.options.time.displayFormats.millisecond,i=this.tickFormatFunction(x(t),0,[],e),n=this.getLabelWidth(i),a=this.isHorizontal()?this.width:this.height,o=Math.floor(a/n);return 0<o?o:1}});a.registerScaleType("time",t,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{1:1,26:26,33:33,34:34,46:46}]},{},[7])(7)}); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/js/admin.js b/wp-content/plugins/wp-statistics/assets/js/admin.js new file mode 100644 index 0000000..af273aa --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/js/admin.js @@ -0,0 +1,63 @@ +jQuery(document).ready(function () { + // Check setting page + if (jQuery('.wp-statistics-settings').length) { + var current_tab = getParameterValue('tab'); + if (current_tab) { + enableTab(current_tab); + } + + jQuery('.wp-statistics-settings ul.tabs li').click(function () { + var tab_id = jQuery(this).attr('data-tab'); + enableTab(tab_id); + }); + } + + // Check the Condition Require Setting Api + function wp_statistics_check_condition_view_option(selector, field) { + jQuery(document).on("change", selector, function (e) { + e.preventDefault(); + let option_field = jQuery(field); + if (this.checked) { + option_field.show("slow"); + } else { + option_field.hide("slow"); + option_field.find("input[type=checkbox]").prop('checked', false); + } + }); + } + + // Check the visitor log is checked + wp_statistics_check_condition_view_option("input[name=wps_visitors]", "#visitors_log_tr"); + + // Check the Spam List + wp_statistics_check_condition_view_option("input[name=wps_referrerspam]", "tr.referrerspam_field"); + + /** + * Get Parameter value + * @param name + * @returns {*} + */ + function getParameterValue(name) { + var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); + if (results) { + return results[1]; + } + } + + /** + * Enable Tab + * @param tab_id + */ + function enableTab(tab_id) { + jQuery('.wp-statistics-settings ul.tabs li').removeClass('current'); + jQuery('.wp-statistics-settings .tab-content').removeClass('current'); + + jQuery("[data-tab=" + tab_id + "]").addClass('current'); + jQuery("#" + tab_id).addClass('current'); + + if (jQuery('#wp-statistics-settings-form').length) { + var click_url = jQuery(location).attr('href') + '&tab=' + tab_id; + jQuery('#wp-statistics-settings-form').attr('action', click_url).submit(); + } + } +}); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/js/dashboard.js b/wp-content/plugins/wp-statistics/assets/js/dashboard.js new file mode 100644 index 0000000..8a08ddf --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/js/dashboard.js @@ -0,0 +1,75 @@ +/* + Function to handle the loading of widget content + */ + +function wp_statistics_get_widget_contents(widget, container_id) { + var data = { + 'action': 'wp_statistics_get_widget_contents', + 'widget': widget, + 'format': 'dashboard' + }; + + container = jQuery("#" + container_id); + + if (container.is(':visible')) { + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + // Take the returned result and add it to the DOM. + jQuery("#" + container_id).html("").html(result); + }) + .fail(function (result) { + // If we failed for some reason, like a timeout, try again. + container.html(wp_statistics_loading_image); + wp_statistics_get_widget_contents(widget, container_id); + }); + + } +} + +function wp_statistics_refresh_widget() { + var container_id = this.id.replace('_refresh_button', ''); + container_id = container_id.replace('-widget', '-div'); + + var widget = container_id.replace('wp-statistics-', ''); + widget = widget.replace('-div', ''); + widget = widget.replace('-', '.'); + + container = jQuery("#" + container_id); + + if (container.is(':visible')) { + container.html(wp_statistics_loading_image); + + wp_statistics_get_widget_contents(widget, container_id); + } + + return false; +} + +function wp_statistics_refresh_on_toggle_widget() { + if (this.value.substring(0, 14) != 'wp-statistics-') { + return; + } + + var container_id = this.value.replace('-widget', '-div'); + var widget = container_id.replace('wp-statistics-', ''); + widget = widget.replace('-div', ''); + widget = widget.replace('-', '.'); + + wp_statistics_get_widget_contents(widget, container_id); +} + +function wp_statistics_goto_more() { + var widget = this.id; + + if (wp_statistics_destinations[widget] !== undefined) { + window.location.href = wp_statistics_destinations[widget]; + } + + return false; +} + diff --git a/wp-content/plugins/wp-statistics/assets/js/editor.js b/wp-content/plugins/wp-statistics/assets/js/editor.js new file mode 100644 index 0000000..07cfbe0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/js/editor.js @@ -0,0 +1,66 @@ +/* + Function to handle the loading of widget content + */ + +function wp_statistics_get_widget_contents(widget, container_id) { + var data = { + 'action': 'wp_statistics_get_widget_contents', + 'widget': widget, + 'page-id': wp_statistics_current_id, + }; + + container = jQuery("#" + container_id); + + if (container.is(':visible')) { + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + // Take the returned result and add it to the DOM. + jQuery("#" + container_id).html("").html(result); + }) + .fail(function (result) { + // If we failed for some reason, like a timeout, try again. + container.html(wp_statistics_loading_image); + wp_statistics_get_widget_contents(widget, container_id); + }); + + } +} + +function wp_statistics_refresh_widget() { + var container_id = 'wp-statistics-page-div'; + var widget = 'page'; + + container = jQuery("#" + container_id); + container.html(wp_statistics_loading_image); + + wp_statistics_get_widget_contents(widget, container_id); + + return false; +} + +function wp_statistics_refresh_on_toggle_widget() { + if (this.value != 'wp_statistics_editor_meta_box') { + return; + } + + var container_id = 'wp-statistics-page-div'; + var widget = 'page'; + + wp_statistics_get_widget_contents(widget, container_id); +} + +function wp_statistics_goto_more() { + var widget = this.id; + + if (wp_statistics_destinations[widget] !== undefined) { + window.location.href = wp_statistics_destinations[widget] + wp_statistics_current_id; + } + + return false; +} + diff --git a/wp-content/plugins/wp-statistics/assets/js/log.js b/wp-content/plugins/wp-statistics/assets/js/log.js new file mode 100644 index 0000000..987f759 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/js/log.js @@ -0,0 +1,69 @@ +/* + Function to handle the loading of widget content + */ + +function wp_statistics_get_widget_contents(widget, container_id) { + var data = { + 'action': 'wp_statistics_get_widget_contents', + 'widget': widget, + }; + + container = jQuery("#" + container_id); + + if (container.is(':visible')) { + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + // Take the returned result and add it to the DOM. + jQuery("#" + container_id).html("").html(result); + }) + .fail(function (result) { + // If we failed for some reason, like a timeout, try again. + container.html(wp_statistics_loading_image); + wp_statistics_get_widget_contents(widget, container_id); + }); + + } +} + +function wp_statistics_refresh_widget() { + var widget = this.id.replace('wps_', ''); + widget = widget.replace('_refresh_button', ''); + container_id = widget.replace('.', '_') + '_postbox'; + + container = jQuery("#" + container_id); + + if (container.is(':visible')) { + container.html(wp_statistics_loading_image); + + wp_statistics_get_widget_contents(widget, container_id); + } + + return false; +} + +function wp_statistics_refresh_on_toggle_widget() { + if (this.value.substring(0, 4) != 'wps_') { + return; + } + + var container_id = this.value.replace('wps_', ''); + var widget = container_id.replace('_postbox', ''); + + wp_statistics_get_widget_contents(widget, container_id); +} + +function wp_statistics_goto_more() { + var widget = this.id; + + if (wp_statistics_destinations[widget] !== undefined) { + window.location.href = wp_statistics_destinations[widget]; + } + + return false; +} + diff --git a/wp-content/plugins/wp-statistics/assets/js/moment.min.js b/wp-content/plugins/wp-statistics/assets/js/moment.min.js new file mode 100644 index 0000000..5787a40 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/js/moment.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function h(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Tt(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function v(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function p(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function k(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function S(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function D(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=S(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&D(e[s])!==D(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function b(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function x(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function C(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function H(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function R(e){var t,n,s={};for(n in e)m(e,n)&&(t=H(n))&&(s[t]=e[n]);return s}var U={};function F(e,t){U[e]=t}function L(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return L(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=b(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=b(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(he(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function he(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var de={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),h(n)&&(s=function(e,t){t[n]=D(e)}),t=0;t<e.length;t++)de[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,ve=4,pe=5,we=6,Me=7,ke=8;function Se(e){return De(e)?366:365}function De(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),C("year","y"),F("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):D(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return D(e)+(68<D(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(xe(this,t,e),c.updateOffset(this,n),this):be(this,t)}}function be(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function xe(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&De(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?De(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),C("month","M"),F("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=D(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ce="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var He="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Re(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=D(t);else if(!h(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Ue(e){return null!=e?(Re(this,e),c.updateOffset(this,!0),this):be(this,"Month")}var Fe=ae;var Le=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=he(s[t]),i[t]=he(i[t]);for(t=0;t<24;t++)r[t]=he(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t;if(e<100&&0<=e){var n=Array.prototype.slice.call(arguments);n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return a=o<=0?Se(r=e-1)+o:o>Se(e)?(r=e+1,o-Se(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(Se(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),C("week","w"),C("isoWeek","W"),F("week",5),F("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=D(e)});function je(e,t){return e.slice(t,7).concat(e.slice(0,t))}I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),C("day","d"),C("weekday","e"),C("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=D(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var $e="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var qe=ae;var Je=ae;var Be=ae;function Qe(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=he(o[t]),u[t]=he(u[t]),l[t]=he(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Xe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+L(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),C("hour","h"),F("hour",13),ue("a",et),ue("A",et),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=D(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=D(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i))});var tt,nt=Te("Hours",!0),st={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:He,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function ot(e){var t=null;if(!it[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=tt._abbr,require("./locale/"+e),ut(t)}catch(e){}return it[e]}function ut(e,t){var n;return e&&((n=l(t)?ht(e):lt(e,t))?tt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),tt._abbr}function lt(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ot(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new P(x(s,t)),rt[e]&&rt[e].forEach(function(e){lt(e.name,e.config)}),ut(e),it[e]}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return tt;if(!o(e)){if(t=ot(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=at(e[r]).split("-")).length,n=(n=at(e[r+1]))?n.split("-"):null;0<t;){if(s=ot(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return tt}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[ve]||0!==n[pe]||0!==n[we])?ge:n[ve]<0||59<n[ve]?ve:n[pe]<0||59<n[pe]?pe:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=ke),g(e).overflow=t),e}function ct(e,t,n){return null!=e?e:null!=t?t:n}function ft(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ct(t.GG,e._a[me],Ie(bt(),1,4).year),s=ct(t.W,1),((i=ct(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(bt(),r,a);n=ct(t.gg,e._a[me],l.year),s=ct(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ct(e._a[me],s[me]),(e._dayOfYear>Se(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[ve]&&0===e._a[pe]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var mt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yt=/Z|[+-]\d\d(?::?\d\d)?/,gt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],vt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function wt(e){var t,n,s,i,r,a,o=e._i,u=mt.exec(o)||_t.exec(o);if(u){for(g(e).iso=!0,t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[1])){i=gt[t][0],s=!1!==gt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=vt.length;t<n;t++)if(vt[t][1].exec(u[3])){r=(u[2]||" ")+vt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!yt.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),Yt(e)}else e._isValid=!1}var Mt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function kt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),He.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=Mt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var r=kt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function Yt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,h=l.length,d=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),d+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(de,a)&&de[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=h-d,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ft(e),dt(e)}else Dt(e);else wt(e)}function Ot(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||ht(e._l),null===r||void 0===a&&""===r?p({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),k(r)?new M(dt(r)):(d(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Yt(t),v(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?Yt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):d(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(wt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ft(t)):u(n)?function(e){if(!e._d){var t=R(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ft(e)}}(t):h(n)?t._d=new Date(n):c.createFromInputFallback(t),v(e)||(e._d=null),e))}function Tt(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Ot(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function bt(e,t,n,s){return Tt(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=bt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:p()}),Pt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=bt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:p()});function Wt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return bt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Ct=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=R(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,h=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Ct,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Ct.length;++s)if(e[Ct[s]]){if(n)return!1;parseFloat(e[Ct[s]])!==D(e[Ct[s]])&&(n=!0)}return!0}(t),this._milliseconds=+h+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=ht(),this._bubble()}function Rt(e){return e instanceof Ht}function Ut(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+L(~~(e/60),2)+n+L(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Nt(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Nt(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+D(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Gt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(k(e)||d(e)?e.valueOf():bt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):bt(e).local()}function Vt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Et(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var It=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,At=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function jt(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:h(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=It.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:D(a[ye])*n,h:D(a[ge])*n,m:D(a[ve])*n,s:D(a[pe])*n,ms:D(Ut(1e3*a[we]))*n}):(a=At.exec(e))?(n="-"===a[1]?-1:1,r={y:Zt(a[2],n),M:Zt(a[3],n),w:Zt(a[4],n),d:Zt(a[5],n),h:Zt(a[6],n),m:Zt(a[7],n),s:Zt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Gt(t,e),e.isBefore(t)?n=zt(e,t):((n=zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(bt(r.from),bt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function Zt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function zt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function $t(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),qt(this,jt(e="string"==typeof e?+e:e,t),s),this}}function qt(e,t,n,s){var i=t._milliseconds,r=Ut(t._days),a=Ut(t._months);e.isValid()&&(s=null==s||s,a&&Re(e,be(e,"Month")+a*n),r&&xe(e,"Date",be(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}jt.fn=Ht.prototype,jt.invalid=function(){return jt(NaN)};var Jt=$t(1,"add"),Bt=$t(-1,"subtract");function Qt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Xt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ht(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Kt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function en(){return this._locale}var tn=126227808e5;function nn(e,t){return(e%t+t)%t}function sn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-tn:new Date(e,t,n).valueOf()}function rn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-tn:Date.UTC(e,t,n)}function an(e,t){I(0,[e,e.length],0,t)}function on(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),an("gggg","weekYear"),an("ggggg","weekYear"),an("GGGG","isoWeekYear"),an("GGGGG","isoWeekYear"),C("weekYear","gg"),C("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=D(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),C("quarter","Q"),F("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(D(e)-1)}),I("D",["DD",2],"Do","date"),C("date","D"),F("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=D(e.match(B)[0])});var un=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),C("dayOfYear","DDD"),F("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=D(e)}),I("m",["mm",2],0,"minute"),C("minute","m"),F("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],ve);var ln=Te("Minutes",!1);I("s",["ss",2],0,"second"),C("second","s"),F("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],pe);var hn,dn=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),C("millisecond","ms"),F("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),hn="SSSS";hn.length<=9;hn+="S")ue(hn,ne);function cn(e,t){t[we]=D(1e3*("0."+e))}for(hn="S";hn.length<=9;hn+="S")ce(hn,cn);var fn=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var mn=M.prototype;function _n(e){return e}mn.add=Jt,mn.calendar=function(e,t){var n=e||bt(),s=Gt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(b(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,bt(n)))},mn.clone=function(){return new M(this)},mn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Gt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=H(t)){case"year":r=Qt(this,s)/12;break;case"month":r=Qt(this,s);break;case"quarter":r=Qt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:S(r)},mn.endOf=function(e){var t;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-nn(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-nn(t,1e3)-1;break}return this._d.setTime(t),c.updateOffset(this,!0),this},mn.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},mn.from=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||bt(e).isValid())?jt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.fromNow=function(e){return this.from(bt(),e)},mn.to=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||bt(e).isValid())?jt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.toNow=function(e){return this.to(bt(),e)},mn.get=function(e){return b(this[e=H(e)])?this[e]():this},mn.invalidAt=function(){return g(this).overflow},mn.isAfter=function(e,t){var n=k(e)?e:bt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},mn.isBefore=function(e,t){var n=k(e)?e:bt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},mn.isBetween=function(e,t,n,s){var i=k(e)?e:bt(e),r=k(t)?t:bt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},mn.isSame=function(e,t){var n,s=k(e)?e:bt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},mn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},mn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},mn.isValid=function(){return v(this)},mn.lang=Kt,mn.locale=Xt,mn.localeData=en,mn.max=Pt,mn.min=xt,mn.parsingFlags=function(){return _({},g(this))},mn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:U[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=R(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(b(this[e=H(e)]))return this[e](t);return this},mn.startOf=function(e){var t;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=nn(t,6e4);break;case"second":t=this._d.valueOf(),t-=nn(t,1e3);break}return this._d.setTime(t),c.updateOffset(this,!0),this},mn.subtract=Bt,mn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},mn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},mn.toDate=function(){return new Date(this.valueOf())},mn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):b(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},mn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},mn.toJSON=function(){return this.isValid()?this.toISOString():null},mn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},mn.unix=function(){return Math.floor(this.valueOf()/1e3)},mn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},mn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},mn.year=Oe,mn.isLeapYear=function(){return De(this.year())},mn.weekYear=function(e){return on.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},mn.isoWeekYear=function(e){return on.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},mn.quarter=mn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},mn.month=Ue,mn.daysInMonth=function(){return Pe(this.year(),this.month())},mn.week=mn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},mn.isoWeek=mn.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},mn.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},mn.isoWeeksInYear=function(){return Ae(this.year(),1,4)},mn.date=un,mn.day=mn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},mn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},mn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),"string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},mn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},mn.hour=mn.hours=nt,mn.minute=mn.minutes=ln,mn.second=mn.seconds=dn,mn.millisecond=mn.milliseconds=fn,mn.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Vt(this);if("string"==typeof e){if(null===(e=Nt(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Vt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?qt(this,jt(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},mn.utc=function(e){return this.utcOffset(0,e)},mn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Vt(this),"m")),this},mn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Nt(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},mn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?bt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},mn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},mn.isLocal=function(){return!!this.isValid()&&!this._isUTC},mn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},mn.isUtc=Et,mn.isUTC=Et,mn.zoneAbbr=function(){return this._isUTC?"UTC":""},mn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},mn.dates=n("dates accessor is deprecated. Use date instead.",un),mn.months=n("months accessor is deprecated. Use month instead",Ue),mn.years=n("years accessor is deprecated. Use year instead",Oe),mn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),mn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Ot(e))._a){var t=e._isUTC?y(e._a):bt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var yn=P.prototype;function gn(e,t,n,s){var i=ht(),r=y().set(s,t);return i[n](r,e)}function vn(e,t,n){if(h(e)&&(t=e,e=void 0),e=e||"",null!=t)return gn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=gn(e,s,n,"month");return i}function pn(e,t,n,s){t=("boolean"==typeof e?h(t)&&(n=t,t=void 0):(t=e,e=!1,h(n=t)&&(n=t,t=void 0)),t||"");var i,r=ht(),a=e?r._week.dow:0;if(null!=n)return gn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=gn(t,(i+a)%7,s,"day");return o}yn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return b(s)?s.call(t,n):s},yn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},yn.invalidDate=function(){return this._invalidDate},yn.ordinal=function(e){return this._ordinal.replace("%d",e)},yn.preparse=_n,yn.postformat=_n,yn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return b(i)?i(e,t,n,s):i.replace(/%d/i,e)},yn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return b(n)?n(t):n.replace(/%s/i,t)},yn.set=function(e){var t,n;for(n in e)b(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},yn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},yn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},yn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},yn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},yn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Fe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},yn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},yn.firstDayOfYear=function(){return this._week.doy},yn.firstDayOfWeek=function(){return this._week.dow},yn.weekdays=function(e,t){var n=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?je(n,this._week.dow):e?n[e.day()]:n},yn.weekdaysMin=function(e){return!0===e?je(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},yn.weekdaysShort=function(e){return!0===e?je(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},yn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},yn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},yn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Je),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},yn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Be),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},yn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},yn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ut("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===D(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ut),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",ht);var wn=Math.abs;function Mn(e,t,n,s){var i=jt(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function kn(e){return e<0?Math.floor(e):Math.ceil(e)}function Sn(e){return 4800*e/146097}function Dn(e){return 146097*e/4800}function Yn(e){return function(){return this.as(e)}}var On=Yn("ms"),Tn=Yn("s"),bn=Yn("m"),xn=Yn("h"),Pn=Yn("d"),Wn=Yn("w"),Cn=Yn("M"),Hn=Yn("Q"),Rn=Yn("y");function Un(e){return function(){return this.isValid()?this._data[e]:NaN}}var Fn=Un("milliseconds"),Ln=Un("seconds"),Nn=Un("minutes"),Gn=Un("hours"),Vn=Un("days"),En=Un("months"),In=Un("years");var An=Math.round,jn={ss:44,s:45,m:45,h:22,d:26,M:11};var Zn=Math.abs;function zn(e){return(0<e)-(e<0)||+e}function $n(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Zn(this._milliseconds)/1e3,s=Zn(this._days),i=Zn(this._months);t=S((e=S(n/60))/60),n%=60,e%=60;var r=S(i/12),a=i%=12,o=s,u=t,l=e,h=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var c=d<0?"-":"",f=zn(this._months)!==zn(d)?"-":"",m=zn(this._days)!==zn(d)?"-":"",_=zn(this._milliseconds)!==zn(d)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||h?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(h?_+h+"S":"")}var qn=Ht.prototype;return qn.isValid=function(){return this._isValid},qn.abs=function(){var e=this._data;return this._milliseconds=wn(this._milliseconds),this._days=wn(this._days),this._months=wn(this._months),e.milliseconds=wn(e.milliseconds),e.seconds=wn(e.seconds),e.minutes=wn(e.minutes),e.hours=wn(e.hours),e.months=wn(e.months),e.years=wn(e.years),this},qn.add=function(e,t){return Mn(this,e,t,1)},qn.subtract=function(e,t){return Mn(this,e,t,-1)},qn.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=H(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+Sn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Dn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},qn.asMilliseconds=On,qn.asSeconds=Tn,qn.asMinutes=bn,qn.asHours=xn,qn.asDays=Pn,qn.asWeeks=Wn,qn.asMonths=Cn,qn.asQuarters=Hn,qn.asYears=Rn,qn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*D(this._months/12):NaN},qn._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*kn(Dn(o)+a),o=a=0),u.milliseconds=r%1e3,e=S(r/1e3),u.seconds=e%60,t=S(e/60),u.minutes=t%60,n=S(t/60),u.hours=n%24,o+=i=S(Sn(a+=S(n/24))),a-=kn(Dn(i)),s=S(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},qn.clone=function(){return jt(this)},qn.get=function(e){return e=H(e),this.isValid()?this[e+"s"]():NaN},qn.milliseconds=Fn,qn.seconds=Ln,qn.minutes=Nn,qn.hours=Gn,qn.days=Vn,qn.weeks=function(){return S(this.days()/7)},qn.months=En,qn.years=In,qn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,h,d,c=this.localeData(),f=(n=!e,s=c,i=jt(t=this).abs(),r=An(i.as("s")),a=An(i.as("m")),o=An(i.as("h")),u=An(i.as("d")),l=An(i.as("M")),h=An(i.as("y")),(d=r<=jn.ss&&["s",r]||r<jn.s&&["ss",r]||a<=1&&["m"]||a<jn.m&&["mm",a]||o<=1&&["h"]||o<jn.h&&["hh",o]||u<=1&&["d"]||u<jn.d&&["dd",u]||l<=1&&["M"]||l<jn.M&&["MM",l]||h<=1&&["y"]||["yy",h])[2]=n,d[3]=0<+t,d[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,d));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},qn.toISOString=$n,qn.toString=$n,qn.toJSON=$n,qn.locale=Xt,qn.localeData=en,qn.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",$n),qn.lang=Kt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(D(e))}),c.version="2.24.0",e=bt,c.fn=mn,c.min=function(){return Wt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Wt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return bt(1e3*e)},c.months=function(e,t){return vn(e,t,"months")},c.isDate=d,c.locale=ut,c.invalid=p,c.duration=jt,c.isMoment=k,c.weekdays=function(e,t,n){return pn(e,t,n,"weekdays")},c.parseZone=function(){return bt.apply(null,arguments).parseZone()},c.localeData=ht,c.isDuration=Rt,c.monthsShort=function(e,t){return vn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return pn(e,t,n,"weekdaysMin")},c.defineLocale=lt,c.updateLocale=function(e,t){if(null!=t){var n,s,i=st;null!=(s=ot(e))&&(i=s._config),(n=new P(t=x(i,t))).parentLocale=it[e],it[e]=n,ut(e)}else null!=it[e]&&(null!=it[e].parentLocale?it[e]=it[e].parentLocale:null!=it[e]&&delete it[e]);return it[e]},c.locales=function(){return s(it)},c.weekdaysShort=function(e,t,n){return pn(e,t,n,"weekdaysShort")},c.normalizeUnits=H,c.relativeTimeRounding=function(e){return void 0===e?An:"function"==typeof e&&(An=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==jn[e]&&(void 0===t?jn[e]:(jn[e]=t,"s"===e&&(jn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=mn,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c}); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/assets/js/tinymce.js b/wp-content/plugins/wp-statistics/assets/js/tinymce.js new file mode 100644 index 0000000..b741de9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/assets/js/tinymce.js @@ -0,0 +1,101 @@ +(function() { + jQuery( document ).on( 'tinymce-editor-setup', function( event, editor ) { + editor.addButton( 'wp_statistic_tc_button', { + text: '', + tooltip: editor.getLang('wp_statistic_tinymce_plugin.insert'), + icon: 'icon-statistic dashicons-chart-pie', + onclick: function() { + editor.windowManager.open({ + title: editor.getLang('wp_statistic_tinymce_plugin.insert'), + minWidth: 500, + minHeight: 480, + body: [ + { + type: 'listbox', + name: 'stat', + label: editor.getLang('wp_statistic_tinymce_plugin.stat'), + 'values': [ + {text: editor.getLang('wp_statistic_tinymce_plugin.usersonline'), value: 'usersonline'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.visits'), value: 'visits'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.visitors'), value: 'visitors'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.pagevisits'), value: 'pagevisits'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.searches'), value: 'searches'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.postcount'), value: 'postcount'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.pagecount'), value: 'pagecount'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.commentcount'), value: 'commentcount'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.spamcount'), value: 'spamcount'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.usercount'), value: 'usercount'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.postaverage'), value: 'postaverage'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.commentaverage'), value: 'commentaverage'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.useraverage'), value: 'useraverage'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.lpd'), value: 'lpd'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.referrer'), value: 'referrer'}, + ] + }, + { + type : 'container', + html : '<div class="wp-statistic-mce-desc">' + editor.getLang('wp_statistic_tinymce_plugin.help_stat') + ' </div>' + }, + { + type: 'listbox', + name: 'time', + label: editor.getLang('wp_statistic_tinymce_plugin.time'), + 'values': [ + {text: editor.getLang('wp_statistic_tinymce_plugin.se'), value: '0'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.today'), value: 'today'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.yesterday'), value: 'yesterday'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.week'), value: 'week'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.month'), value: 'month'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.year'), value: 'year'}, + {text: editor.getLang('wp_statistic_tinymce_plugin.total'), value: 'total'} + ] + }, + { + type : 'container', + html : '<div class="wp-statistic-mce-desc">' + editor.getLang('wp_statistic_tinymce_plugin.help_time') + '</div>' + }, + { + type: 'textbox', + name: 'provider', + label: editor.getLang('wp_statistic_tinymce_plugin.provider'), + }, + { + type : 'container', + html : '<div class="wp-statistic-mce-desc">' + editor.getLang('wp_statistic_tinymce_plugin.help_provider') + '</div>' + }, + { + type: 'textbox', + name: 'format', + label: editor.getLang('wp_statistic_tinymce_plugin.format'), + }, + { + type : 'container', + html : '<div class="wp-statistic-mce-desc">' + editor.getLang('wp_statistic_tinymce_plugin.help_format') + '</div>' + }, + { + type: 'textbox', + name: 'id', + label: editor.getLang('wp_statistic_tinymce_plugin.id'), + }, + { + type : 'container', + html : '<div class="wp-statistic-mce-desc">' + editor.getLang('wp_statistic_tinymce_plugin.help_id') + '</div>' + }, + ], + onsubmit: function( e ) { + var wp_statistice_shortcode = '[wpstatistics stat=' + e.data.stat; + if(e.data.time !=='0') {wp_statistice_shortcode +=' time=' + e.data.time;} + var wp_statistic_type = ["provider", "format", "id"]; + wp_statistic_type.forEach(function(entry) { + if(e.data[entry] !=='') { + wp_statistice_shortcode +=' ' + entry + '=' + e.data[entry]; + } + }); + wp_statistice_shortcode +=']'; + editor.insertContent(wp_statistice_shortcode); + } + }); + } + }); + }); +})(); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-admin-pages.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-admin-pages.php new file mode 100644 index 0000000..d2edf6d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-admin-pages.php @@ -0,0 +1,653 @@ +<?php + +/** + * Class WP_Statistics_Admin_Pages + */ +class WP_Statistics_Admin_Pages { + + //Transient For Show Notice Setting + public static $setting_notice = '_show_notice_wp_statistics'; + + /** + * Load Overview Page + */ + static function overview() { + global $WP_Statistics; + + // Right side "wide" widgets + if ( $WP_Statistics->get_option( 'visits' ) ) { + add_meta_box( + 'wps_hits_postbox', + __( 'Hit Statistics', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'normal', + null, + array( 'widget' => 'hits' ) + ); + } + + if ( $WP_Statistics->get_option( 'visitors' ) ) { + add_meta_box( + 'wps_top_visitors_postbox', + __( 'Top Visitors', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'normal', + null, + array( 'widget' => 'top.visitors' ) + ); + add_meta_box( + 'wps_search_postbox', + __( 'Search Engine Referrals', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'normal', + null, + array( 'widget' => 'search' ) + ); + add_meta_box( + 'wps_words_postbox', + __( 'Latest Search Words', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'normal', + null, + array( 'widget' => 'words' ) + ); + add_meta_box( + 'wps_recent_postbox', + __( 'Recent Visitors', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'normal', + null, + array( 'widget' => 'recent' ) + ); + + if ( $WP_Statistics->get_option( 'geoip' ) ) { + add_meta_box( + 'wps_map_postbox', + __( 'Today\'s Visitors Map', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'normal', + null, + array( 'widget' => 'map' ) + ); + } + } + + if ( $WP_Statistics->get_option( 'pages' ) ) { + add_meta_box( + 'wps_pages_postbox', + __( 'Top 10 Pages', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'normal', + null, + array( 'widget' => 'pages' ) + ); + } + + // Left side "thin" widgets. + if ( $WP_Statistics->get_option( 'visitors' ) ) { + add_meta_box( + 'wps_summary_postbox', + __( 'Summary', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'side', + null, + array( 'widget' => 'summary' ) + ); + add_meta_box( + 'wps_browsers_postbox', + __( 'Browsers', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'side', + null, + array( 'widget' => 'browsers' ) + ); + add_meta_box( + 'wps_referring_postbox', + __( 'Top Referring Sites', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'side', + null, + array( 'widget' => 'referring' ) + ); + + if ( $WP_Statistics->get_option( 'geoip' ) ) { + add_meta_box( + 'wps_countries_postbox', + __( 'Top 10 Countries', 'wp-statistics' ), + 'wp_statistics_generate_overview_postbox_contents', + $WP_Statistics->menu_slugs['overview'], + 'side', + null, + array( 'widget' => 'countries' ) + ); + } + } + + //Left Show User online table + if ( $WP_Statistics->get_option( 'useronline' ) ) { + add_meta_box( 'wps_users_online_postbox', __( 'Online Users', 'wp-statistics' ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'side', null, array( 'widget' => 'users_online' ) ); + } + } + + + /** + * Check in admin page + * + * @param $page | For Get List @see \WP_STATISTICS\WP_Statistics::$page + * @return bool + */ + public static function in_page( $page ) { + global $pagenow; + + //Check is custom page + if ( $pagenow == "admin.php" and isset( $_REQUEST['page'] ) and $_REQUEST['page'] == WP_Statistics::$page[ $page ] ) { + return true; + } + + return false; + } + + /** + * Show Page title + * @param string $title + */ + public static function show_page_title( $title = '' ) { + + //Check if $title not Set + if ( empty( $title ) and function_exists( 'get_admin_page_title' ) ) { + $title = get_admin_page_title(); + } + + //show Page title + echo '<img src="' . plugins_url( 'wp-statistics/assets/images/' ) . '/title-logo.png" class="wps_page_title"><h2 class="wps_title">' . $title . '</h2>'; + + //do_action after wp_statistics + do_action( 'wp_statistics_after_title' ); + } + + /** + * Get Admin Url + * + * @param null $page + * @param array $arg + * @area is_admin + * @return string + */ + public static function admin_url( $page = null, $arg = array() ) { + + //Check If Pages is in Wp-statistics + if ( array_key_exists( $page, WP_Statistics::$page ) ) { + $page = WP_Statistics::$page[ $page ]; + } + + return add_query_arg( array_merge( array( 'page' => $page ), $arg ), admin_url( 'admin.php' ) ); + } + + /** + * Show MetaBox button Refresh/Direct Button Link in Top of Meta Box + * + * @param string $export + * @return string + */ + public static function meta_box_button( $export = 'all' ) { + + //Prepare button + $refresh = '</button><button class="handlediv button-link wps-refresh" type="button" id="{{refreshid}}">' . wp_statistics_icons( 'dashicons-update' ) . '<span class="screen-reader-text">' . __( 'Reload', 'wp-statistics' ) . '</span></button>'; + $more = '<button class="handlediv button-link wps-more" type="button" id="{{moreid}}">' . wp_statistics_icons( 'dashicons-external' ) . '<span class="screen-reader-text">' . __( 'More Details', 'wp-statistics' ) . '</span></button>'; + + //Export + if ( $export == 'all' ) { + return $refresh . $more; + } else { + return $$export; + } + } + + /** + * Show Loading Meta Box + */ + public static function loading_meta_box() { + $loading = '<div class="wps_loading_box"><img src=" ' . plugins_url( 'wp-statistics/assets/images/' ) . 'loading.svg" alt="' . __( 'Reloading...', 'wp-statistics' ) . '"></div>'; + return $loading; + } + + /** + * Sanitize Email Subject + * + * @param $subject + * @return string|string[]|null + */ + public static function sanitize_mail_subject( $subject ) { + + # Remove Special character + $str = preg_replace( '/[\'^£$%&*()}{@#~?><>,|=+¬]/', '', $subject ); + + # Replace sequences of spaces with hyphen + $str = preg_replace( '/ */', '-', $str ); + + # You may also want to try this alternative: + $str = preg_replace( '/\\s+/', ' ', $str ); + + return $str; + } + + /** + * Plugins + */ + static function plugins() { + // Activate or deactivate the selected plugin + if ( isset( $_GET['action'] ) ) { + if ( $_GET['action'] == 'activate' ) { + $result = activate_plugin( $_GET['plugin'] . '/' . $_GET['plugin'] . '.php' ); + if ( is_wp_error( $result ) ) { + wp_statistics_admin_notice_result( 'error', $result->get_error_message() ); + } else { + wp_statistics_admin_notice_result( 'success', __( 'Add-On activated.', 'wp-statistics' ) ); + } + } + if ( $_GET['action'] == 'deactivate' ) { + $result = deactivate_plugins( $_GET['plugin'] . '/' . $_GET['plugin'] . '.php' ); + if ( is_wp_error( $result ) ) { + wp_statistics_admin_notice_result( 'error', $result->get_error_message() ); + } else { + wp_statistics_admin_notice_result( 'success', __( 'Add-On deactivated.', 'wp-statistics' ) ); + } + } + } + + $response = wp_remote_get( 'https://wp-statistics.com/wp-json/plugin/addons' ); + $response_code = wp_remote_retrieve_response_code( $response ); + $error = null; + $plugins = array(); + + // Check response + if ( is_wp_error( $response ) ) { + $error = $response->get_error_message(); + } else { + if ( $response_code == '200' ) { + $plugins = json_decode( $response['body'] ); + } else { + $error = $response['body']; + } + } + + include WP_Statistics::$reg['plugin-dir'] . 'includes/templates/plugins.php'; + } + + /** + * Donate + */ + static function donate() { + echo "<script>window.location.href='http://wp-statistics.com/donate';</script>"; + } + + /** + * Loads the optimization page code. + */ + static function optimization() { + global $wpdb, $WP_Statistics; + + // Check the current user has the rights to be here. + if ( ! current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ) ) ) { + wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); + } + + // When we create $WP_Statistics the user has not been authenticated yet so we cannot load the user preferences + // during the creation of the class. Instead load them now that the user exists. + $WP_Statistics->load_user_options(); + + // Get the row count for each of the tables, we'll use this later on in the wps_optimization.php file. + $list_table = wp_statistics_db_table( 'all' ); + $result = array(); + foreach ( $list_table as $tbl_key => $tbl_name ) { + $result[ $tbl_name ] = $wpdb->get_var( "SELECT COUNT(*) FROM `$tbl_name`" ); + } + + include WP_Statistics::$reg['plugin-dir'] . "includes/optimization/wps-optimization.php"; + } + + /** + * This function displays the HTML for the settings page. + */ + static function settings() { + global $WP_Statistics; + + // Check the current user has the rights to be here. + if ( ! current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option( 'read_capability', 'manage_options' ) ) ) ) { + wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); + } + + // When we create $WP_Statistics the user has not been authenticated yet so we cannot load the user preferences + // during the creation of the class. Instead load them now that the user exists. + $WP_Statistics->load_user_options(); + + // Check admin notices. + if ( $WP_Statistics->get_option( 'admin_notices' ) == true ) { + $WP_Statistics->update_option( 'disable_donation_nag', false ); + $WP_Statistics->update_option( 'disable_suggestion_nag', false ); + } + + include WP_Statistics::$reg['plugin-dir'] . "includes/settings/wps-settings.php"; + + // We could let the download happen at the end of the page, but this way we get to give some + // feedback to the users about the result. + if ( $WP_Statistics->get_option( 'geoip' ) and isset( $_POST['update_geoip'] ) and isset( $_POST['geoip_name'] ) ) { + + //Check Geo ip Exist in Database + if ( isset( WP_Statistics_Updates::$geoip[ $_POST['geoip_name'] ] ) ) { + $result = WP_Statistics_Updates::download_geoip( $_POST['geoip_name'], "update" ); + + if ( isset( $result['status'] ) and $result['status'] === false ) { + add_filter( "wp_statistics_redirect_setting", function ( $redirect ) { + $redirect = true; + return $redirect; + } ); + } else { + echo $result['notice']; + } + } + + } + + //Enabled Geo ip Country Or City And download + foreach ( array( "geoip" => "country", "geoip_city" => "city" ) as $geo_opt => $geo_name ) { + if ( ! isset( $_POST['update_geoip'] ) and isset( $_POST[ 'wps_' . $geo_opt ] ) ) { + + //Check File Not Exist + $upload_dir = wp_upload_dir(); + $file = $upload_dir['basedir'] . '/wp-statistics/' . WP_Statistics_Updates::$geoip[ $geo_name ]['file'] . '.mmdb'; + if ( ! file_exists( $file ) ) { + $result = WP_Statistics_Updates::download_geoip( $geo_name ); + if ( isset( $result['status'] ) and $result['status'] === false ) { + add_filter( "wp_statistics_redirect_setting", function ( $redirect ) { + $redirect = true; + return $redirect; + } ); + } else { + echo $result['notice']; + } + } + } + } + + //Redirect Set Setting + self::wp_statistics_redirect_setting(); + } + + /** + * Set Transient Notice + * + * @param $text + * @param string $type + */ + public static function set_admin_notice( $text, $type = 'error' ) { + $get = get_transient( WP_Statistics_Admin_Pages::$setting_notice ); + if ( $get != false ) { + $results = $get; + } + delete_transient( WP_Statistics_Admin_Pages::$setting_notice ); + $results[] = array( "text" => $text, "type" => $type ); + set_transient( WP_Statistics_Admin_Pages::$setting_notice, $results, 1 * HOUR_IN_SECONDS ); + } + + /** + * Notification Setting + */ + public static function wp_statistics_notice_setting() { + global $pagenow, $WP_Statistics; + + //Show Notice By Plugin + $get = get_transient( WP_Statistics_Admin_Pages::$setting_notice ); + if ( $get != false ) { + foreach ( $get as $item ) { + wp_statistics_admin_notice_result( $item['type'], $item['text'] ); + } + delete_transient( WP_Statistics_Admin_Pages::$setting_notice ); + } + + //Check referring Spam Update + if ( $pagenow == "admin.php" and isset( $_GET['page'] ) and $_GET['page'] == WP_Statistics::$page['settings'] and isset( $_GET['update-referrerspam'] ) ) { + + // Update referrer spam + $update_spam = WP_Statistics_Updates::download_referrerspam(); + if ( $update_spam === true ) { + wp_statistics_admin_notice_result( 'success', __( 'Updated Matomo Referrer Spam.', 'wp-statistics' ) ); + } else { + wp_statistics_admin_notice_result( 'error', __( 'error in get referrer spam list. please try again.', 'wp-statistics' ) ); + } + } + } + + /** + * Redirect Jquery + * @param bool $redirect + */ + public static function wp_statistics_redirect_setting( $redirect = false ) { + $redirect = apply_filters( 'wp_statistics_redirect_setting', $redirect ); + if ( $redirect === true ) { + echo '<script>window.location.replace("' . ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ? "https" : "http" ) . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]" . '");</script>'; + } + } + + /** + * @param string $log_type Log Type + */ + static function log( $log_type = "" ) { + global $wpdb, $WP_Statistics, $plugin_page; + + switch ( $plugin_page ) { + case WP_Statistics::$page['browser']: + $log_type = 'all-browsers'; + + break; + case WP_Statistics::$page['countries']: + $log_type = 'top-countries'; + + break; + case WP_Statistics::$page['exclusions']: + $log_type = 'exclusions'; + + break; + case WP_Statistics::$page['hits']: + $log_type = 'hit-statistics'; + + break; + case WP_Statistics::$page['online']: + $log_type = 'online'; + + break; + case WP_Statistics::$page['pages']: + $log_type = 'top-pages'; + + break; + case WP_Statistics::$page['categories']: + $log_type = 'categories'; + + break; + case WP_Statistics::$page['tags']: + $log_type = 'tags'; + + break; + case WP_Statistics::$page['authors']: + $log_type = 'authors'; + + break; + case WP_Statistics::$page['referrers']: + $log_type = 'top-referring-site'; + + break; + case WP_Statistics::$page['searches']: + $log_type = 'search-statistics'; + + break; + case WP_Statistics::$page['words']: + $log_type = 'last-all-search'; + + break; + case WP_Statistics::$page['top-visitors']: + $log_type = 'top-visitors'; + + break; + case WP_Statistics::$page['visitors']: + $log_type = 'last-all-visitor'; + + break; + default: + $log_type = ""; + } + + // When we create $WP_Statistics the user has not been authenticated yet so we cannot load the user preferences + // during the creation of the class. Instead load them now that the user exists. + $WP_Statistics->load_user_options(); + + // We allow for a get style variable to be passed to define which function to use. + if ( $log_type == "" && array_key_exists( 'type', $_GET ) ) { + $log_type = $_GET['type']; + } + + // Verify the user has the rights to see the statistics. + if ( ! current_user_can( + wp_statistics_validate_capability( + $WP_Statistics->get_option( + 'read_capability', + 'manage_option' + ) + ) + ) + ) { + wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); + } + + // We want to make sure the tables actually exist before we blindly start access them. + $result = $wpdb->query( + "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_visitor' OR `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_visit' OR `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_exclusions' OR `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_historical' OR `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_pages' OR `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_useronline' OR `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_search'" + ); + + if ( $result != 7 ) { + + $get_bloginfo_url = WP_Statistics_Admin_Pages::admin_url( 'optimization', array( 'tab' => 'database' ) ); + $missing_tables = array(); + + $result = $wpdb->query( + "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_visitor'" + ); + if ( $result != 1 ) { + $missing_tables[] = $wpdb->prefix . 'statistics_visitor'; + } + $result = $wpdb->query( "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_visit'" ); + if ( $result != 1 ) { + $missing_tables[] = $wpdb->prefix . 'statistics_visit'; + } + $result = $wpdb->query( + "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_exclusions'" + ); + if ( $result != 1 ) { + $missing_tables[] = $wpdb->prefix . 'statistics_exclusions'; + } + $result = $wpdb->query( + "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_historical'" + ); + if ( $result != 1 ) { + $missing_tables[] = $wpdb->prefix . 'statistics_historical'; + } + $result = $wpdb->query( + "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_useronline'" + ); + if ( $result != 1 ) { + $missing_tables[] = $wpdb->prefix . 'statistics_useronline'; + } + $result = $wpdb->query( "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_pages'" ); + if ( $result != 1 ) { + $missing_tables[] = $wpdb->prefix . 'statistics_pages'; + } + $result = $wpdb->query( + "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_search'" + ); + if ( $result != 1 ) { + $missing_tables[] = $wpdb->prefix . 'statistics_search'; + } + + wp_die( + '<div class="error"><p>' . sprintf( + __( + 'The following plugin table(s) do not exist in the database, please re-run the %s install routine %s:', + 'wp-statistics' + ), + '<a href="' . $get_bloginfo_url . '">', + '</a>' + ) . implode( ', ', $missing_tables ) . '</p></div>' + ); + } + + // Load the postbox script that provides the widget style boxes. + wp_enqueue_script( 'common' ); + wp_enqueue_script( 'wp-lists' ); + wp_enqueue_script( 'postbox' ); + + // Load the css we use for the statistics pages. + wp_enqueue_style( 'wpstatistics-log-css', WP_Statistics::$reg['plugin-url'] . 'assets/css/log.css', true, WP_Statistics::$reg['version'] ); + wp_enqueue_style( 'wpstatistics-pagination-css', WP_Statistics::$reg['plugin-url'] . 'assets/css/pagination.css', true, WP_Statistics::$reg['version'] ); + + // The different pages have different files to load. + switch ( $log_type ) { + case 'all-browsers': + case 'top-countries': + case 'hit-statistics': + case 'search-statistics': + case 'exclusions': + case 'online': + case 'top-visitors': + case 'categories': + case 'tags': + case 'authors': + include WP_Statistics::$reg['plugin-dir'] . 'includes/log/' . $log_type . '.php'; + break; + case 'last-all-search': + include WP_Statistics::$reg['plugin-dir'] . 'includes/log/last-search.php'; + + break; + case 'last-all-visitor': + include WP_Statistics::$reg['plugin-dir'] . 'includes/log/last-visitor.php'; + + break; + case 'top-referring-site': + include WP_Statistics::$reg['plugin-dir'] . 'includes/log/top-referring.php'; + + break; + case 'top-pages': + // If we've been given a page id or uri to get statistics for, load the page stats, otherwise load the page stats overview page. + if ( array_key_exists( 'page-id', $_GET ) || array_key_exists( 'page-uri', $_GET ) || array_key_exists( 'prepage', $_GET ) ) { + include WP_Statistics::$reg['plugin-dir'] . 'includes/log/page-statistics.php'; + } else { + include WP_Statistics::$reg['plugin-dir'] . 'includes/log/top-pages.php'; + } + + break; + default: + if ( get_current_screen()->parent_base == WP_Statistics::$page['overview'] ) { + + wp_enqueue_style( 'wpstatistics-jqvmap-css', WP_Statistics::$reg['plugin-url'] . 'assets/jqvmap/jqvmap.css', true, '1.5.1' ); + wp_enqueue_script( 'wpstatistics-jquery-vmap', WP_Statistics::$reg['plugin-url'] . 'assets/jqvmap/jquery.vmap.js', true, '1.5.1' ); + wp_enqueue_script( 'wpstatistics-jquery-vmap-world', WP_Statistics::$reg['plugin-url'] . 'assets/jqvmap/maps/jquery.vmap.world.js', true, '1.5.1' ); + + // Load our custom widgets handling javascript. + wp_enqueue_script( 'wp_statistics_log', WP_Statistics::$reg['plugin-url'] . 'assets/js/log.js' ); + + include WP_Statistics::$reg['plugin-dir'] . 'includes/log/log.php'; + } + + break; + } + } + +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-admin.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-admin.php new file mode 100644 index 0000000..bfe35cf --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-admin.php @@ -0,0 +1,702 @@ +<?php + +/** + * Class WP_Statistics_Admin + */ +class WP_Statistics_Admin { + + /** + * WP_Statistics_Admin constructor. + */ + public function __construct() { + global $WP_Statistics; + + // Check to see if we're installed and are the current version. + WP_Statistics::$installed_version = get_option( 'wp_statistics_plugin_version' ); + if ( WP_Statistics::$installed_version != WP_Statistics::$reg['version'] ) { + new WP_Statistics_Install; + } + + // If we've been flagged to remove all of the data, then do so now. + if ( get_option( 'wp_statistics_removal' ) == 'true' ) { + new WP_Statistics_Uninstall; + } + + // If we've been removed, return without doing anything else. + if ( get_option( 'wp_statistics_removal' ) == 'done' ) { + add_action( 'admin_notices', array( $this, 'removal_admin_notice' ), 10, 2 ); + return; + } + + //Show Admin Menu + add_action( 'admin_menu', array( $this, 'menu' ) ); + if ( is_multisite() ) { + add_action( 'network_admin_menu', 'WP_Statistics_Network_Admin::menu' ); + } + + //Load Script in Admin Area + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); + + //init Export Class + new WP_Statistics_Export; + + //init Ajax Class + new WP_Statistics_Ajax; + + //init Dashboard Widget + new WP_Statistics_Dashboard; + + //Add Custom MetaBox in Wp-statistics Admin Page + add_action( 'add_meta_boxes', 'WP_Statistics_Editor::add_meta_box' ); + + // Display the admin notices if we should. + if ( isset( $pagenow ) && array_key_exists( 'page', $_GET ) ) { + if ( $pagenow == "admin.php" && substr( $_GET['page'], 0, 14 ) == 'wp-statistics/' ) { + add_action( 'admin_notices', array( $this, 'not_enable' ) ); + } + } + + //Change Plugin Action link in Plugin.php admin + add_filter( 'plugin_action_links_' . plugin_basename( WP_Statistics::$reg['main-file'] ), array( $this, 'settings_links' ), 10, 2 ); + add_filter( 'plugin_row_meta', array( $this, 'add_meta_links' ), 10, 2 ); + + //Add Column in Post Type Wp_List Table + add_action( 'load-edit.php', array( $this, 'load_edit_init' ) ); + if ( $WP_Statistics->get_option( 'pages' ) && $WP_Statistics->get_option( 'hit_post_metabox' ) ) { + add_action( 'post_submitbox_misc_actions', array( $this, 'post_init' ) ); + } + + //init ShortCode + add_action( 'admin_init', 'WP_Statistics_Shortcode::shortcake' ); + + // WP-Statistics welcome page hooks + add_action( 'admin_menu', 'WP_Statistics_Welcome::menu' ); + add_action( 'upgrader_process_complete', 'WP_Statistics_Welcome::do_welcome', 10, 2 ); + add_action( 'admin_init', 'WP_Statistics_Welcome::init' ); + + // Runs some scripts at the end of the admin panel inside the body tag + add_action( 'admin_footer', array( $this, 'admin_footer_scripts' ) ); + + // Load TinyMce Function + new WP_Statistics_TinyMCE; + + // Add Notice Use cache plugin + add_action( 'admin_notices', array( $this, 'notification_use_cache_plugin' ) ); + + //Admin Notice Setting + add_action( 'admin_notices', 'WP_Statistics_Admin_Pages::wp_statistics_notice_setting' ); + + //Add Visitors Log Table + add_action( 'admin_init', array( $this, 'register_visitors_log_tbl' ) ); + + // Add Overview Ads + add_action( 'load-toplevel_page_' . WP_Statistics::$page['overview'], array( $this, 'overview_page_ads' ) ); + + //Check Require update page type in database + WP_Statistics_Install::_init_page_type_updater(); + } + + /** + * Create a New Table Visitors Log in mysql + */ + public function register_visitors_log_tbl() { + + //Add Visitor RelationShip Table + if ( WP_Statistics_Admin_Pages::in_page( 'settings' ) and isset( $_POST['wps_visitors_log'] ) and $_POST['wps_visitors_log'] == 1 ) { + WP_Statistics_Install::setup_visitor_relationship_table(); + } + + } + + /** + * This adds a row after WP Statistics in the plugin page + * IF we've been removed via the settings page. + */ + public function removal_admin_notice() { + $screen = get_current_screen(); + + if ( 'plugins' !== $screen->id ) { + return; + } + + ?> + <div class="error"> + <p style="max-width:800px;"><?php + echo '<p>' . __( 'WP Statistics has been removed, please disable and delete it.', 'wp-statistics' ) . '</p>'; + ?></p> + </div> + <?php + } + + /** + * OverView Page Ads + */ + public function overview_page_ads() { + + // Get Overview Ads + $get_overview_ads = get_option( 'wp_statistics_overview_page_ads', false ); + + // Check Expire or not exist + if ( $get_overview_ads === false || ( is_array( $get_overview_ads ) and ( current_time( 'timestamp' ) >= ( $get_overview_ads['timestamp'] + WEEK_IN_SECONDS ) ) ) ) { + + // Check Exist + $overview_ads = ( $get_overview_ads === false ? array() : $get_overview_ads ); + + // Get New Ads from API + $request = wp_remote_get( 'https://wp-statistics.com/wp-json/ads/overview', array( 'timeout' => 30 ) ); + if ( is_wp_error( $request ) ) { + return; + } + + // Get Json Data + $data = json_decode( wp_remote_retrieve_body( $request ), true ); + + // Set new Timestamp + $overview_ads['timestamp'] = current_time( 'timestamp' ); + + // Set Ads + $overview_ads['ads'] = ( empty( $data ) ? array( 'status' => 'no', 'ID' => 'none' ) : $data ); + + // Set Last Viewed + $overview_ads['view'] = ( isset( $get_overview_ads['view'] ) ? $get_overview_ads['view'] : '' ); + + // Set Option + update_option( 'wp_statistics_overview_page_ads', $overview_ads, 'no' ); + } + } + + /** + * This function outputs error messages in the admin interface + * if the primary components of WP Statistics are enabled. + */ + public function not_enable() { + global $WP_Statistics; + + // If the user had told us to be quite, do so. + if ( ! $WP_Statistics->get_option( 'hide_notices' ) ) { + + // Check to make sure the current user can manage WP Statistics, + // if not there's no point displaying the warnings. + $manage_cap = wp_statistics_validate_capability( + $WP_Statistics->get_option( + 'manage_capability', + 'manage_options' + ) + ); + if ( ! current_user_can( $manage_cap ) ) { + return; + } + + + $get_bloginfo_url = WP_Statistics_Admin_Pages::admin_url( 'settings' ); + + $itemstoenable = array(); + if ( ! $WP_Statistics->get_option( 'useronline' ) ) { + $itemstoenable[] = __( 'online user tracking', 'wp-statistics' ); + } + if ( ! $WP_Statistics->get_option( 'visits' ) ) { + $itemstoenable[] = __( 'hit tracking', 'wp-statistics' ); + } + if ( ! $WP_Statistics->get_option( 'visitors' ) ) { + $itemstoenable[] = __( 'visitor tracking', 'wp-statistics' ); + } + if ( ! $WP_Statistics->get_option( 'geoip' ) && wp_statistics_geoip_supported() ) { + $itemstoenable[] = __( 'geoip collection', 'wp-statistics' ); + } + + if ( count( $itemstoenable ) > 0 ) { + echo '<div class="update-nag">' . sprintf( __( 'The following features are disabled, please go to %ssettings page%s and enable them: %s', 'wp-statistics' ), '<a href="' . $get_bloginfo_url . '">', '</a>', implode( __( ',', 'wp-statistics' ), $itemstoenable ) ) . '</div>'; + } + + + $get_bloginfo_url = WP_Statistics_Admin_Pages::admin_url( 'optimization', array( 'tab' => 'database' ) ); + $dbupdatestodo = array(); + + if ( ! $WP_Statistics->get_option( 'search_converted' ) ) { + $dbupdatestodo[] = __( 'search table', 'wp-statistics' ); + } + + // Check to see if there are any database changes the user hasn't done yet. + $dbupdates = $WP_Statistics->get_option( 'pending_db_updates', false ); + + // The database updates are stored in an array so loop thorugh it and output some notices. + if ( is_array( $dbupdates ) ) { + $dbstrings = array( + 'date_ip_agent' => __( 'countries database index', 'wp-statistics' ), + 'unique_date' => __( 'visit database index', 'wp-statistics' ), + ); + + foreach ( $dbupdates as $key => $update ) { + if ( $update == true ) { + $dbupdatestodo[] = $dbstrings[ $key ]; + } + } + + if ( count( $dbupdatestodo ) > 0 ) { + echo '<div class="update-nag">' . sprintf( __( 'Database updates are required, please go to %soptimization page%s and update the following: %s', 'wp-statistics' ), '<a href="' . $get_bloginfo_url . '">', '</a>', implode( __( ',', 'wp-statistics' ), $dbupdatestodo ) ) . '</div>'; + } + } + } + } + + /* + * Check User Active A cache Plugin in Wordpress + */ + static public function user_is_use_cache_plugin() { + $use = array( 'status' => false, 'plugin' => '' ); + + /* Wordpress core */ + if ( defined( 'WP_CACHE' ) && WP_CACHE ) { + return array( 'status' => true, 'plugin' => 'core' ); + } + + /* WP Rocket */ + if ( function_exists( 'get_rocket_cdn_url' ) ) { + return array( 'status' => true, 'plugin' => 'WP Rocket' ); + } + + /* WP Super Cache */ + if ( function_exists( 'wpsc_init' ) ) { + return array( 'status' => true, 'plugin' => 'WP Super Cache' ); + } + + /* Comet Cache */ + if ( function_exists( '___wp_php_rv_initialize' ) ) { + return array( 'status' => true, 'plugin' => 'Comet Cache' ); + } + + /* WP Fastest Cache */ + if ( class_exists( 'WpFastestCache' ) ) { + return array( 'status' => true, 'plugin' => 'WP Fastest Cache' ); + } + + /* Cache Enabler */ + if ( defined( 'CE_MIN_WP' ) ) { + return array( 'status' => true, 'plugin' => 'Cache Enabler' ); + } + + /* W3 Total Cache */ + if ( defined( 'W3TC' ) ) { + return array( 'status' => true, 'plugin' => 'W3 Total Cache' ); + } + + return $use; + } + + /* + * Show Notification Cache Plugin + */ + static public function notification_use_cache_plugin() { + global $WP_Statistics; + + $screen = get_current_screen(); + + if ( $screen->id == "toplevel_page_" . WP_Statistics::$page['overview'] or $screen->id == "statistics_page_" . WP_Statistics::$page['settings'] ) { + $plugin = self::user_is_use_cache_plugin(); + + if ( ! $WP_Statistics->get_option( 'use_cache_plugin' ) and $plugin['status'] === true ) { + echo '<div class="notice notice-warning is-dismissible"><p>'; + + $alert = sprintf( __( 'You Are Using %s Plugin in WordPress', 'wp-statistics' ), $plugin['plugin'] ); + if ( $plugin['plugin'] == "core" ) { + $alert = __( 'WP_CACHE is Enable in Your WordPress', 'wp-statistics' ); + } + + echo $alert . ", " . sprintf( __( 'Please enable %1$sCache Setting%2$s in WP Statistics.', 'wp-statistics' ), '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'settings' ) . '">', '</a>' ); + echo '</p></div>'; + } + } + + // Test Rest Api is Active for Cache + if ( $WP_Statistics->use_cache and $screen->id == "statistics_page_" . WP_Statistics::$page['settings'] ) { + + if ( false === ( $check_rest_api = get_transient( '_check_rest_api_wp_statistics' ) ) ) { + + $set_transient = true; + $alert = '<div class="notice notice-warning is-dismissible"><p>' . sprintf( __( 'Here is an error associated with Connecting WordPress Rest API, Please Flushing rewrite rules or activate wp rest api for performance WP-Statistics Plugin Cache / Go %1$sSettings->Permalinks%2$s', 'wp-statistics' ), '<a href="' . esc_url( admin_url( 'options-permalink.php' ) ) . '">', '</a>' ) . '</div>'; + $request = wp_remote_post( path_join( get_rest_url(), WP_Statistics_Rest::route . '/' . WP_Statistics_Rest::func ), array( + 'method' => 'POST', + 'body' => array( 'rest-api-wp-statistics' => 'wp-statistics' ) + ) ); + if ( is_wp_error( $request ) ) { + echo $alert; + $set_transient = false; + } + $body = wp_remote_retrieve_body( $request ); + $data = json_decode( $body, true ); + if ( ! isset( $data['rest-api-wp-statistics'] ) and $set_transient === true ) { + echo $alert; + $set_transient = false; + } + + if ( $set_transient === true ) { + set_transient( '_check_rest_api_wp_statistics', array( "rest-api-wp-statistics" => "OK" ), 2 * HOUR_IN_SECONDS ); + } + } + + } + } + + /** + * Add a settings link to the plugin list. + * + * @param string $links Links + * @param string $file Not Used! + * + * @return string Links + */ + public function settings_links( $links, $file ) { + global $WP_Statistics; + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ); + if ( current_user_can( $manage_cap ) ) { + array_unshift( $links, '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'settings' ) . '">' . __( 'Settings', 'wp-statistics' ) . '</a>' ); + } + + return $links; + } + + /** + * Add a WordPress plugin page and rating links to the meta information to the plugin list. + * + * @param string $links Links + * @param string $file File + * + * @return array Links + */ + public function add_meta_links( $links, $file ) { + if ( $file == plugin_basename( WP_Statistics::$reg['main-file'] ) ) { + $plugin_url = 'http://wordpress.org/plugins/wp-statistics/'; + + $links[] = '<a href="' . $plugin_url . '" target="_blank" title="' . __( 'Click here to visit the plugin on WordPress.org', 'wp-statistics' ) . '">' . __( 'Visit WordPress.org page', 'wp-statistics' ) . '</a>'; + $rate_url = 'https://wordpress.org/support/plugin/wp-statistics/reviews/?rate=5#new-post'; + $links[] = '<a href="' . $rate_url . '" target="_blank" title="' . __( 'Click here to rate and review this plugin on WordPress.org', 'wp-statistics' ) . '">' . __( 'Rate this plugin', 'wp-statistics' ) . '</a>'; + } + + return $links; + } + + /** + * Call the add/render functions at the appropriate times. + */ + public function load_edit_init() { + global $WP_Statistics; + + $read_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'read_capability', 'manage_options' ) ); + + if ( current_user_can( $read_cap ) && $WP_Statistics->get_option( 'pages' ) && ! $WP_Statistics->get_option( 'disable_column' ) ) { + $post_types = WP_Statistics_Editor::get_list_post_type(); + foreach ( $post_types as $type ) { + add_action( 'manage_' . $type . '_posts_columns', 'WP_Statistics_Admin::add_column', 10, 2 ); + add_action( 'manage_' . $type . '_posts_custom_column', 'WP_Statistics_Admin::render_column', 10, 2 ); + } + } + } + + /** + * Add a custom column to post/pages for hit statistics. + * + * @param array $columns Columns + * + * @return array Columns + */ + static function add_column( $columns ) { + $columns['wp-statistics'] = __( 'Hits', 'wp-statistics' ); + + return $columns; + } + + /** + * Render the custom column on the post/pages lists. + * + * @param string $column_name Column Name + * @param string $post_id Post ID + */ + static function render_column( $column_name, $post_id ) { + if ( $column_name == 'wp-statistics' ) { + echo "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'pages', array( 'page-id' => $post_id ) ) . "'>" . wp_statistics_pages( 'total', "", $post_id ) . "</a>"; + } + } + + /** + * Add the hit count to the publish widget in the post/pages editor. + */ + public function post_init() { + global $post; + + $id = $post->ID; + echo "<div class='misc-pub-section'>" . __( 'WP Statistics - Hits', 'wp-statistics' ) . ": <b><a href='" . WP_Statistics_Admin_Pages::admin_url( 'pages', array( 'page-id' => $id ) ) . "'>" . wp_statistics_pages( 'total', "", $id ) . "</a></b></div>"; + } + + /** + * This function adds the primary menu to WordPress. + */ + public function menu() { + global $WP_Statistics; + + // Get the read/write capabilities required to view/manage the plugin as set by the user. + $read_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'read_capability', 'manage_options' ) ); + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ); + + /** + * List of WP-Statistics Admin Menu + * + * --- Array Arg ----- + * name : Menu name + * title : Page title / if not exist [title == name] + * cap : min require capability @default $read_cap + * icon : Wordpress DashIcon name + * method : method that call in page @default log + * sub : if sub menu , add main menu slug + * page_url : link of Slug Url Page @see WP_Statistics::$page + * break : add new line after sub menu if break key == true + * require : the Condition From Wp-statistics Option if == true for show admin menu + * + */ + $list = array( + 'top' => array( + 'title' => __( 'Statistics', 'wp-statistics' ), + 'page_url' => 'overview', + 'method' => 'log', + 'icon' => 'dashicons-chart-pie', + ), + 'overview' => array( + 'sub' => 'overview', + 'title' => __( 'Overview', 'wp-statistics' ), + 'page_url' => 'overview', + ), + 'hits' => array( + 'require' => array( 'visits' ), + 'sub' => 'overview', + 'title' => __( 'Hits', 'wp-statistics' ), + 'page_url' => 'hits', + ), + 'online' => array( + 'require' => array( 'useronline' ), + 'sub' => 'overview', + 'title' => __( 'Online', 'wp-statistics' ), + 'page_url' => 'online', + ), + 'referrers' => array( + 'require' => array( 'visitors' ), + 'sub' => 'overview', + 'title' => __( 'Referrers', 'wp-statistics' ), + 'page_url' => 'referrers', + ), + 'words' => array( + 'require' => array( 'visitors' ), + 'sub' => 'overview', + 'title' => __( 'Search Words', 'wp-statistics' ), + 'page_url' => 'words', + ), + 'searches' => array( + 'require' => array( 'visitors' ), + 'sub' => 'overview', + 'title' => __( 'Search Engines', 'wp-statistics' ), + 'page_url' => 'searches', + ), + 'pages' => array( + 'require' => array( 'pages' ), + 'sub' => 'overview', + 'title' => __( 'Pages', 'wp-statistics' ), + 'page_url' => 'pages', + ), + 'visitors' => array( + 'require' => array( 'visitors' ), + 'sub' => 'overview', + 'title' => __( 'Visitors', 'wp-statistics' ), + 'page_url' => 'visitors', + ), + 'countries' => array( + 'require' => array( 'geoip', 'visitors' ), + 'sub' => 'overview', + 'title' => __( 'Countries', 'wp-statistics' ), + 'page_url' => 'countries', + ), + 'categories' => array( + 'require' => array( 'pages' ), + 'sub' => 'overview', + 'title' => __( 'Categories', 'wp-statistics' ), + 'page_url' => 'categories', + ), + 'tags' => array( + 'require' => array( 'pages' ), + 'sub' => 'overview', + 'title' => __( 'Tags', 'wp-statistics' ), + 'page_url' => 'tags', + ), + 'authors' => array( + 'require' => array( 'pages' ), + 'sub' => 'overview', + 'title' => __( 'Authors', 'wp-statistics' ), + 'page_url' => 'authors', + ), + 'browsers' => array( + 'require' => array( 'visitors' ), + 'sub' => 'overview', + 'title' => __( 'Browsers', 'wp-statistics' ), + 'page_url' => 'browser', + ), + 'top.visotors' => array( + 'require' => array( 'visitors' ), + 'sub' => 'overview', + 'title' => __( 'Top Visitors Today', 'wp-statistics' ), + 'page_url' => 'top-visitors', + ), + 'exclusions' => array( + 'require' => array( 'record_exclusions' ), + 'sub' => 'overview', + 'title' => __( 'Exclusions', 'wp-statistics' ), + 'page_url' => 'exclusions', + 'break' => true, + ), + 'optimize' => array( + 'sub' => 'overview', + 'title' => __( 'Optimization', 'wp-statistics' ), + 'cap' => $manage_cap, + 'page_url' => 'optimization', + 'method' => 'optimization' + ), + 'settings' => array( + 'sub' => 'overview', + 'title' => __( 'Settings', 'wp-statistics' ), + 'cap' => $manage_cap, + 'page_url' => 'settings', + 'method' => 'settings' + ), + 'plugins' => array( + 'sub' => 'overview', + 'title' => __( 'Add-Ons', 'wp-statistics' ), + 'name' => '<span class="wps-text-warning">' . __( 'Add-Ons', 'wp-statistics' ) . '</span>', + 'page_url' => 'plugins', + 'method' => 'plugins' + ), + 'donate' => array( + 'sub' => 'overview', + 'title' => __( 'Donate', 'wp-statistics' ), + 'name' => '<span class="wps-text-success">' . __( 'Donate', 'wp-statistics' ) . '</span>', + 'page_url' => 'donate', + 'method' => 'donate' + ) + ); + + //Show Admin Menu List + foreach ( $list as $key => $menu ) { + + //Check Default variable + $capability = $read_cap; + $method = 'log'; + $name = $menu['title']; + if ( array_key_exists( 'cap', $menu ) ) { + $capability = $menu['cap']; + } + if ( array_key_exists( 'method', $menu ) ) { + $method = $menu['method']; + } + if ( array_key_exists( 'name', $menu ) ) { + $name = $menu['name']; + } + + //Check if SubMenu or Main Menu + if ( array_key_exists( 'sub', $menu ) ) { + + //Check Conditions For Show Menu + if ( wp_statistics_check_option_require( $menu ) === true ) { + $WP_Statistics->menu_slugs[ $key ] = add_submenu_page( WP_Statistics::$page[ $menu['sub'] ], $menu['title'], $name, $capability, WP_Statistics::$page[ $menu['page_url'] ], 'WP_Statistics_Admin_Pages::' . $method ); + } + + //Check if add Break Line + if ( array_key_exists( 'break', $menu ) ) { + $WP_Statistics->menu_slugs[ 'break_' . $key ] = add_submenu_page( WP_Statistics::$page[ $menu['sub'] ], '', '', $capability, 'wps_break_menu', 'WP_Statistics_Admin_Pages::' . $method ); + } + } else { + $WP_Statistics->menu_slugs[ $key ] = add_menu_page( $menu['title'], $name, $capability, WP_Statistics::$page[ $menu['page_url'] ], "WP_Statistics_Admin_Pages::" . $method, $menu['icon'] ); + } + } + + // Add action to load the meta boxes to the overview page. + add_action( 'load-' . $WP_Statistics->menu_slugs['overview'], 'WP_Statistics_Admin_Pages::overview' ); + } + + /** + * Enqueue Scripts in Admin Area + */ + public function enqueue_scripts() { + global $pagenow, $WP_Statistics; + + // Load our CSS to be used. + wp_enqueue_style( 'wpstatistics-admin-css', WP_Statistics::$reg['plugin-url'] . 'assets/css/admin.css', true, WP_Statistics::$reg['version'] ); + if ( is_rtl() ) { + wp_enqueue_style( 'rtl-css', WP_Statistics::$reg['plugin-url'] . 'assets/css/rtl.css', true, WP_Statistics::$reg['version'] ); + } + + //Load Admin Js + wp_enqueue_script( 'wp-statistics-admin-js', WP_Statistics::$reg['plugin-url'] . 'assets/js/admin.js', array( 'jquery' ), WP_Statistics::$reg['version'] ); + + //Load Chart Js + $load_in_footer = false; + $load_chart = false; + + //Load in Setting Page + $pages_required_chart = array( + 'wps_overview_page', + 'wps_browsers_page', + 'wps_hits_page', + 'wps_pages_page', + 'wps_categories_page', + 'wps_tags_page', + 'wps_authors_page', + 'wps_searches_page', + ); + if ( isset( $_GET['page'] ) and array_search( $_GET['page'], $pages_required_chart ) !== false ) { + $load_chart = true; + } + + //Load in Post Page + if ( $pagenow == "post.php" and $WP_Statistics->get_option( 'hit_post_metabox' ) ) { + $load_chart = true; + } + + if ( $load_chart === true ) { + wp_enqueue_script( 'wp-statistics-chart-js', WP_Statistics::$reg['plugin-url'] . 'assets/js/Chart.bundle.min.js', false, '2.7.3', $load_in_footer ); + } + + } + + /** + * Admin footer scripts + */ + public function admin_footer_scripts() { + global $WP_Statistics; + + // Check to see if the GeoIP database needs to be downloaded and do so if required. + if ( $WP_Statistics->get_option( 'update_geoip' ) ) { + foreach ( WP_Statistics_Updates::$geoip as $geoip_name => $geoip_array ) { + WP_Statistics_Updates::download_geoip( $geoip_name, "update" ); + } + } + + // Check to see if the referrer spam database needs to be downloaded and do so if required. + if ( $WP_Statistics->get_option( 'update_referrerspam' ) ) { + WP_Statistics_Updates::download_referrerspam(); + } + + if ( $WP_Statistics->get_option( 'send_upgrade_email' ) ) { + $WP_Statistics->update_option( 'send_upgrade_email', false ); + + $blogname = get_bloginfo( 'name' ); + $blogemail = get_bloginfo( 'admin_email' ); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if ( $WP_Statistics->get_option( 'email_list' ) == '' ) { + $WP_Statistics->update_option( 'email_list', $blogemail ); + } + + wp_mail( $WP_Statistics->get_option( 'email_list' ), sprintf( __( 'WP Statistics %s installed on', 'wp-statistics' ), WP_Statistics::$reg['version'] ) . ' ' . $blogname, __( 'Installation/upgrade complete!', 'wp-statistics' ), $headers ); + } + } + +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-ajax.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-ajax.php new file mode 100644 index 0000000..0b204cd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-ajax.php @@ -0,0 +1,435 @@ +<?php + +/** + * Class WP_Statistics_Ajax + */ +class WP_Statistics_Ajax { + + /** + * WP_Statistics_Ajax constructor. + */ + function __construct() { + + /** + * List Of Setup Ajax request in Wordpress + */ + $list = array( + 'close_notice', + 'close_overview_ads', + 'delete_agents', + 'delete_platforms', + 'delete_ip', + 'empty_table', + 'purge_data', + 'purge_visitor_hits', + 'get_widget_contents' + ); + foreach ( $list as $method ) { + add_action( 'wp_ajax_wp_statistics_' . $method, array( $this, $method . '_action_callback' ) ); + } + } + + /** + * Setup an AJAX action to close the notice on the overview page. + */ + public function close_notice_action_callback() { + global $WP_Statistics; + + $manage_cap = wp_statistics_validate_capability( + $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) + ); + + if ( current_user_can( $manage_cap ) and isset( $_REQUEST['notice'] ) ) { + switch ( $_REQUEST['notice'] ) { + case 'donate': + $WP_Statistics->update_option( 'disable_donation_nag', true ); + break; + + case 'suggestion': + $WP_Statistics->update_option( 'disable_suggestion_nag', true ); + break; + } + + $WP_Statistics->update_option( 'admin_notices', false ); + } + + wp_die(); + } + + /** + * Close Overview Ads + */ + public function close_overview_ads_action_callback() { + if ( wp_doing_ajax() and isset( $_REQUEST['ads_id'] ) ) { + + // Check Security Nonce + check_ajax_referer( 'overview_ads_nonce', 'wps_nonce' ); + + // Update Option + $get_opt = get_option( 'wp_statistics_overview_page_ads' ); + $get_opt['view'] = $_REQUEST['ads_id']; + update_option( 'wp_statistics_overview_page_ads', $get_opt, 'no' ); + } + exit; + } + + /** + * Setup an AJAX action to delete an agent in the optimization page. + */ + public function delete_agents_action_callback() { + global $WP_Statistics, $wpdb; + + $manage_cap = wp_statistics_validate_capability( + $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) + ); + + if ( current_user_can( $manage_cap ) ) { + $agent = $_POST['agent-name']; + + if ( $agent ) { + + $result = $wpdb->query( + $wpdb->prepare( "DELETE FROM {$wpdb->prefix}statistics_visitor WHERE `agent` = %s", $agent ) + ); + + if ( $result ) { + echo sprintf( + __( '%s agent data deleted successfully.', 'wp-statistics' ), + '<code>' . $agent . '</code>' + ); + } else { + _e( 'No agent data found to remove!', 'wp-statistics' ); + } + + } else { + _e( 'Please select the desired items.', 'wp-statistics' ); + } + } else { + _e( 'Access denied!', 'wp-statistics' ); + } + + wp_die(); + } + + /** + * Setup an AJAX action to delete a platform in the optimization page. + */ + public function delete_platforms_action_callback() { + global $WP_Statistics, $wpdb; + + $manage_cap = wp_statistics_validate_capability( + $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) + ); + + if ( current_user_can( $manage_cap ) ) { + $platform = $_POST['platform-name']; + + if ( $platform ) { + + $result = $wpdb->query( + $wpdb->prepare( "DELETE FROM {$wpdb->prefix}statistics_visitor WHERE `platform` = %s", $platform ) + ); + + if ( $result ) { + echo sprintf( + __( '%s platform data deleted successfully.', 'wp-statistics' ), + '<code>' . htmlentities( $platform, ENT_QUOTES ) . '</code>' + ); + } else { + _e( 'No platform data found to remove!', 'wp-statistics' ); + } + } else { + _e( 'Please select the desired items.', 'wp-statistics' ); + } + } else { + _e( 'Access denied!', 'wp-statistics' ); + } + + wp_die(); + } + + /** + * Setup an AJAX action to delete a ip in the optimization page. + */ + public function delete_ip_action_callback() { + global $WP_Statistics, $wpdb; + + $manage_cap = wp_statistics_validate_capability( + $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) + ); + + if ( current_user_can( $manage_cap ) ) { + $ip_address = sanitize_text_field( $_POST['ip-address'] ); + + if ( $ip_address ) { + + $result = $wpdb->query( + $wpdb->prepare( "DELETE FROM {$wpdb->prefix}statistics_visitor WHERE `ip` = %s", $ip_address ) + ); + + if ( $result ) { + echo sprintf( + __( '%s IP data deleted successfully.', 'wp-statistics' ), + '<code>' . htmlentities( $ip_address, ENT_QUOTES ) . '</code>' + ); + } else { + _e( 'No IP address data found to remove!', 'wp-statistics' ); + } + } else { + _e( 'Please select the desired items.', 'wp-statistics' ); + } + } else { + _e( 'Access denied!', 'wp-statistics' ); + } + + wp_die(); + } + + /** + * Setup an AJAX action to empty a table in the optimization page. + */ + public function empty_table_action_callback() { + global $WP_Statistics; + + //Check isset Table-post + if ( ! isset( $_POST['table-name'] ) ) { + _e( 'Please select the desired items.', 'wp-statistics' ); + exit; + } + + //Check Valid Table name + $table_name = sanitize_text_field( $_POST['table-name'] ); + $list_db_table = wp_statistics_db_table( 'all', 'historical' ); + if ( ! array_key_exists( $table_name, $list_db_table ) ) { + _e( 'Access denied!', 'wp-statistics' ); + exit; + } + + //Check User Cap + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ); + + if ( current_user_can( $manage_cap ) ) { + + if ( $table_name == "all" ) { + $x_tbl = 1; + foreach ( $list_db_table as $tbl_key => $tbl_name ) { + echo ( $x_tbl > 1 ? '<br>' : '' ) . wp_statitiscs_empty_table( $tbl_name ); + $x_tbl ++; + } + } else { + echo wp_statitiscs_empty_table( wp_statistics_db_table( $table_name ) ); + } + + $WP_Statistics->Primary_Values(); + } else { + _e( 'Access denied!', 'wp-statistics' ); + } + + wp_die(); + } + + /** + * Setup an AJAX action to purge old data in the optimization page. + */ + public function purge_data_action_callback() { + global $WP_Statistics; + + require( WP_Statistics::$reg['plugin-dir'] . 'includes/functions/purge.php' ); + + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ); + if ( current_user_can( $manage_cap ) ) { + $purge_days = 0; + + if ( array_key_exists( 'purge-days', $_POST ) ) { + // Get the number of days to purge data before. + $purge_days = intval( $_POST['purge-days'] ); + } + + echo wp_statistics_purge_data( $purge_days ); + } else { + _e( 'Access denied!', 'wp-statistics' ); + } + + wp_die(); + } + + /** + * Setup an AJAX action to purge visitors with more than a defined number of hits. + */ + public function purge_visitor_hits_action_callback() { + global $WP_Statistics; + + require( WP_Statistics::$reg['plugin-dir'] . 'includes/functions/purge-hits.php' ); + + $manage_cap = wp_statistics_validate_capability( + $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) + ); + + if ( current_user_can( $manage_cap ) ) { + $purge_hits = 10; + + if ( array_key_exists( 'purge-hits', $_POST ) ) { + // Get the number of days to purge data before. + $purge_hits = intval( $_POST['purge-hits'] ); + } + + if ( $purge_hits < 10 ) { + _e( 'Number of hits must be greater than or equal to 10!', 'wp-statistics' ); + } else { + echo wp_statistics_purge_visitor_hits( $purge_hits ); + } + } else { + _e( 'Access denied!', 'wp-statistics' ); + } + + wp_die(); + } + + /** + * Setup an AJAX action to purge visitors with more than a defined number of hits. + */ + public function get_widget_contents_action_callback() { + global $WP_Statistics; + + $widgets = array( + 'about', + 'users_online', + 'browsers', + 'map', + 'countries', + 'hits', + 'hitsmap', + 'page', + 'pages', + 'quickstats', + 'recent', + 'referring', + 'search', + 'summary', + 'top.visitors', + 'words' + ); + + if ( array_key_exists( 'format', $_POST ) and $_POST['format'] == 'dashboard' ) { + $size = 220; + $days = 10; + } else { + $size = 110; + $days = 20; + } + + $view_cap = wp_statistics_validate_capability( + $WP_Statistics->get_option( 'read_capability', 'manage_options' ) + ); + + if ( current_user_can( $view_cap ) ) { + $widget = ''; + + if ( array_key_exists( 'widget', $_POST ) ) { + // Get the widget we're going to display. + + if ( in_array( $_POST['widget'], $widgets ) ) { + $widget = $_POST['widget']; + } + } + + if ( $_POST['widget'] == "top_visitors" ) { + $widget = 'top.visitors'; + } + + if ( 'map' == $widget || 'hitsmap' == $widget ) { + $widget = 'jqv.map'; + } + + if ( '' == $widget ) { + _e( 'No matching widget found!', 'wp-statistics' ); + wp_die(); + } + + $ISOCountryCode = $WP_Statistics->get_country_codes(); + $search_engines = wp_statistics_searchengine_list(); + + require( WP_Statistics::$reg['plugin-dir'] . 'includes/log/widgets/' . $widget . '.php' ); + + switch ( $widget ) { + case 'summary': + wp_statistics_generate_summary_postbox_content( $search_engines ); + + break; + case 'quickstats': + wp_statistics_generate_quickstats_postbox_content( $search_engines ); + + break; + + case 'browsers': + wp_statistics_generate_browsers_postbox_content(); + + break; + case 'referring': + wp_statistics_generate_referring_postbox_content(); + + break; + case 'countries': + wp_statistics_generate_countries_postbox_content( $ISOCountryCode ); + + break; + case 'jqv.map': + wp_statistics_generate_map_postbox_content( $ISOCountryCode ); + + break; + case 'hits': + wp_statistics_generate_hits_postbox_content( $size, $days ); + + break; + case 'search': + wp_statistics_generate_search_postbox_content( $search_engines, $size, $days ); + + break; + case 'words': + wp_statistics_generate_words_postbox_content( $ISOCountryCode ); + + break; + case 'page': + if ( array_key_exists( 'page-id', $_POST ) ) { + $pageid = (int) $_POST['page-id']; + + wp_statistics_generate_page_postbox_content( null, $pageid ); + } + + break; + case 'pages': + wp_statistics_generate_pages_postbox_content(); + + break; + case 'recent': + wp_statistics_generate_recent_postbox_content( $ISOCountryCode ); + + break; + case 'top.visitors': + $format = null; + + if ( array_key_exists( 'format', $_POST ) ) { + $format = 'compact'; + } + + wp_statistics_generate_top_visitors_postbox_content( $ISOCountryCode, 'today', 10, $format ); + + break; + case 'users_online': + wp_statistics_generate_users_online_postbox_content( $ISOCountryCode ); + + break; + case 'about': + wp_statistics_generate_about_postbox_content( $ISOCountryCode ); + + break; + default: + _e( 'ERROR: Widget not found!', 'wp-statistics' ); + } + } else { + _e( 'Access denied!', 'wp-statistics' ); + } + + wp_die(); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-dashboard.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-dashboard.php new file mode 100644 index 0000000..cf596e5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-dashboard.php @@ -0,0 +1,341 @@ +<?php + +/** + * Class WP_Statistics_Dashboard + */ +class WP_Statistics_Dashboard { + + /** + * User Meta Set Dashboard Option name + * @var string + */ + public static $dashboard_set = 'dashboard_set'; + + /** + * WP_Statistics_Dashboard constructor. + */ + public function __construct() { + + //Register Dashboard Widget + add_action( 'wp_dashboard_setup', array( $this, 'load_dashboard_widget' ) ); + + //Add Inline Script in Admin Footer + add_action( 'admin_footer', array( $this, 'inline_javascript' ) ); + + } + + /** + * Widget Setup Key + * + * @param $key + * @return string + */ + public static function widget_setup_key( $key ) { + return 'wp-statistics-' . $key . '-widget'; + } + + /** + * Get Widget List + * + * @param bool $widget + * @return array|mixed + */ + public static function widget_list( $widget = false ) { + + /** + * List of WP-Statistics Widget + * + * --- Array Arg ----- + * page_url : link of Widget Page @see WP_Statistics::$page + * name : Name Of Widget Box + * require : the Condition From Wp-statistics Option if == true + * hidden : if set true , Default Hidden Dashboard in Wordpress Admin + * + */ + $list = array( + 'quickstats' => array( + 'page_url' => 'overview', + 'name' => __( 'Quick Stats', 'wp-statistics' ) + ), + 'summary' => array( + 'name' => __( 'Summary', 'wp-statistics' ), + 'hidden' => true + ), + 'browsers' => array( + 'page_url' => 'browser', + 'name' => __( 'Top 10 Browsers', 'wp-statistics' ), + 'require' => array( 'visitors' ), + 'hidden' => true + ), + 'countries' => array( + 'page_url' => 'countries', + 'name' => __( 'Top 10 Countries', 'wp-statistics' ), + 'require' => array( 'geoip', 'visitors' ), + 'hidden' => true + ), + 'hits' => array( + 'page_url' => 'hits', + 'name' => __( 'Hit Statistics', 'wp-statistics' ), + 'require' => array( 'visits' ), + 'hidden' => true + ), + 'pages' => array( + 'page_url' => 'pages', + 'name' => __( 'Top 10 Pages', 'wp-statistics' ), + 'require' => array( 'pages' ), + 'hidden' => true + ), + 'referring' => array( + 'page_url' => 'referrers', + 'name' => __( 'Top Referring Sites', 'wp-statistics' ), + 'require' => array( 'visitors' ), + 'hidden' => true + ), + 'search' => array( + 'page_url' => 'searches', + 'name' => __( 'Search Engine Referrals', 'wp-statistics' ), + 'require' => array( 'visitors' ), + 'hidden' => true + ), + 'words' => array( + 'page_url' => 'words', + 'name' => __( 'Latest Search Words', 'wp-statistics' ), + 'require' => array( 'visitors' ), + 'hidden' => true + ), + 'top-visitors' => array( + 'page_url' => 'top-visitors', + 'name' => __( 'Top 10 Visitors Today', 'wp-statistics' ), + 'require' => array( 'visitors' ), + 'hidden' => true + ), + 'recent' => array( + 'page_url' => 'visitors', + 'name' => __( 'Recent Visitors', 'wp-statistics' ), + 'require' => array( 'visitors' ), + 'hidden' => true + ), + 'hitsmap' => array( + 'name' => __( 'Today\'s Visitors Map', 'wp-statistics' ), + 'require' => array( 'visitors' ), + 'hidden' => true + ) + ); + + //Print List of Dashboard + if ( $widget === false ) { + return $list; + } else { + if ( array_key_exists( $widget, $list ) ) { + return $list[ $widget ]; + } + } + + return array(); + } + + /** + * This function Register Wp-statistics Dashboard to wordpress Admin + */ + public static function register_dashboard_widget() { + + //Check Dashboard Widget + if ( ! function_exists( 'wp_add_dashboard_widget' ) ) { + return; + } + + //Get List Of Wp-statistics Dashboard Widget + $list = self::widget_list(); + foreach ( $list as $widget_key => $dashboard ) { + + //Register Dashboard Widget + if ( wp_statistics_check_option_require( $dashboard ) === true ) { + wp_add_dashboard_widget( self::widget_setup_key( $widget_key ), $dashboard['name'], 'WP_Statistics_Dashboard::generate_postbox_contents', $control_callback = null, array( 'widget' => $widget_key ) ); + } + + } + } + + /** + * Load Dashboard Widget + * This Function add_action to `wp_dashboard_setup` + */ + static function load_dashboard_widget() { + global $WP_Statistics; + + //Load User Options + $WP_Statistics->load_user_options(); + + // If the user does not have at least read access to the status plugin, just return without adding the widgets. + if ( ! current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option( 'read_capability', 'manage_option' ) ) ) ) { + return; + } + + //Check Hidden User Dashboard Option + $user_dashboard = $WP_Statistics->get_user_option( self::$dashboard_set ); + if ( $user_dashboard === false || $user_dashboard != WP_Statistics::$reg['version'] ) { + self::set_user_hidden_dashboard_option(); + } + + // If the admin has disabled the widgets, don't display them. + if ( ! $WP_Statistics->get_option( 'disable_dashboard' ) ) { + self::register_dashboard_widget(); + } + + } + + /** + * Set Default Hidden Dashboard User Option + */ + public static function set_user_hidden_dashboard_option() { + global $WP_Statistics; + + //Get List Of Wp-statistics Dashboard Widget + $dashboard_list = self::widget_list(); + $hidden_opt = 'metaboxhidden_dashboard'; + + //Create Empty Option and save in User meta + $WP_Statistics->update_user_option( self::$dashboard_set, WP_Statistics::$reg['version'] ); + + //Get Dashboard Option User Meta + $hidden_widgets = get_user_meta( $WP_Statistics->user_id, $hidden_opt, true ); + if ( ! is_array( $hidden_widgets ) ) { + $hidden_widgets = array(); + } + + //Set Default Hidden Dashboard in Admin Wordpress + foreach ( $dashboard_list as $widget => $dashboard ) { + if ( array_key_exists( 'hidden', $dashboard ) ) { + $hidden_widgets[] = self::widget_setup_key( $widget ); + } + } + + update_user_meta( $WP_Statistics->user_id, $hidden_opt, $hidden_widgets ); + } + + /** + * Load Widget Script/style + */ + static function load_widget_css_and_scripts() { + global $WP_Statistics; + + // Load the css we use for the statistics pages. + wp_enqueue_style( 'wpstatistics-log-css', WP_Statistics::$reg['plugin-url'] . 'assets/css/log.css', true, '1.2' ); + + // Load the map code. + if ( ! $WP_Statistics->get_option( 'disable_dashboard' ) ) { + wp_enqueue_style( 'jqvmap-css', WP_Statistics::$reg['plugin-url'] . 'assets/jqvmap/jqvmap.css', true, '1.5.1' ); + wp_enqueue_script( 'jquery-vmap', WP_Statistics::$reg['plugin-url'] . 'assets/jqvmap/jquery.vmap.js', true, '1.5.1' ); + wp_enqueue_script( 'jquery-vmap-world', WP_Statistics::$reg['plugin-url'] . 'assets/jqvmap/maps/jquery.vmap.world.js', true, '1.5.1' ); + } + + // Load chart library + if ( ! isset( $_GET['post'] ) ) { + wp_enqueue_script( 'wp-statistics-chart-js', WP_Statistics::$reg['plugin-url'] . 'assets/js/Chart.bundle.min.js', false, '2.7.3', false ); + } + + //Get current screen page + $screen = get_current_screen(); + + // Load our custom widgets handling javascript. + if ( 'post' == $screen->id || 'page' == $screen->id ) { + wp_enqueue_script( 'wp_statistics_editor', WP_Statistics::$reg['plugin-url'] . 'assets/js/editor.js' ); + } else { + wp_enqueue_script( 'wp_statistics_dashboard', WP_Statistics::$reg['plugin-url'] . 'assets/js/dashboard.js' ); + } + } + + /** + * Add inline Script + * For Add button Refresh/Direct Button Link in Top of Meta Box + */ + static function inline_javascript() { + + //if not Dashboard Page + $screen = get_current_screen(); + if ( 'dashboard' != $screen->id ) { + return; + } + + //Load Of Require Jquery Library Function + WP_Statistics_Dashboard::load_widget_css_and_scripts(); + + //Prepare List Of Dashboard + $page_urls = array(); + $dashboards = self::widget_list(); + foreach ( $dashboards as $widget_key => $dashboard ) { + if ( array_key_exists( 'page_url', $dashboard ) ) { + $page_urls[ 'wp-statistics-' . $widget_key . '-widget_more_button' ] = WP_Statistics_Admin_Pages::admin_url( $dashboard['page_url'] ); + } + } + + //Add Extra Pages For Overview Page + foreach ( array( 'exclusions' => 'exclusions', 'users_online' => 'online' ) as $p_key => $p_link ) { + $page_urls[ 'wp-statistics-' . $p_key . '-widget_more_button' ] = WP_Statistics_Admin_Pages::admin_url( $p_link ); + } + + ?> + <script type="text/javascript"> + var wp_statistics_destinations = <?php echo json_encode( $page_urls ); ?>; + var wp_statistics_loading_image = '<?php echo WP_Statistics_Admin_Pages::loading_meta_box(); ?>'; + + function wp_statistics_wait_for_postboxes() { + + if (!jQuery('#show-settings-link').is(':visible')) { + setTimeout(wp_statistics_wait_for_postboxes, 500); + } + + jQuery('.wps-refresh').unbind('click').on('click', wp_statistics_refresh_widget); + jQuery('.wps-more').unbind('click').on('click', wp_statistics_goto_more); + + jQuery('.hide-postbox-tog').on('click', wp_statistics_refresh_on_toggle_widget); + } + + jQuery(document).ready(function () { + + // Add the "more" and "refresh" buttons. + jQuery('.postbox').each(function () { + var temp = jQuery(this); + var temp_id = temp.attr('id'); + + if (temp_id.substr(0, 14) != 'wp-statistics-') { + return; + } + + var temp_html = temp.html(); + if (temp_id == '<?php echo self::widget_setup_key( 'summary' ); ?>') { + new_text = '<?php echo WP_Statistics_Admin_Pages::meta_box_button( 'refresh' );?>'; + new_text = new_text.replace('{{refreshid}}', temp_id + '_refresh_button'); + temp_html = temp_html.replace('</button>', new_text); + } else { + new_text = '<?php echo WP_Statistics_Admin_Pages::meta_box_button();?>'; + new_text = new_text.replace('{{refreshid}}', temp_id + '_refresh_button'); + new_text = new_text.replace('{{moreid}}', temp_id + '_more_button'); + temp_html = temp_html.replace('</button>', new_text); + } + temp.html(temp_html); + }); + + // We have use a timeout here because we don't now what order this code will run in comparison to the postbox code. + // Any timeout value should work as the timeout won't run until the rest of the javascript as run through once. + setTimeout(wp_statistics_wait_for_postboxes, 100); + }); + </script> + <?php + } + + /** + * Generate widget Post Box + * + * @param $post + * @param $args + */ + static function generate_postbox_contents( $post, $args ) { + $widget = $args['args']['widget']; + $container_id = 'wp-statistics-' . str_replace( '.', '-', $widget ) . '-div'; + + echo '<div id="' . $container_id . '">' . WP_Statistics_Admin_Pages::loading_meta_box() . '</div>'; + wp_statistics_generate_widget_load_javascript( $widget, $container_id ); + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-editor.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-editor.php new file mode 100644 index 0000000..1f4effe --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-editor.php @@ -0,0 +1,201 @@ +<?php + +/** + * Class WP_Statistics_Editor + */ +class WP_Statistics_Editor { + + /** + * Adds a box to the main column on the Post and Page edit screens. + */ + static function add_meta_box() { + global $WP_Statistics; + + //Load All User Options + $WP_Statistics->load_user_options(); + + // We need to fudge the display settings for first time users so not all of the widgets are displayed, we only want to do this on + // the first time they visit the dashboard though so check to see if we've been here before. + if ( ! $WP_Statistics->get_user_option( 'editor_set' ) ) { + $WP_Statistics->update_user_option( 'editor_set', WP_Statistics::$reg['version'] ); + + $hidden_widgets = get_user_meta( $WP_Statistics->user_id, 'metaboxhidden_post', true ); + if ( ! is_array( $hidden_widgets ) ) { + $hidden_widgets = array(); + } + + if ( ! in_array( 'wp_statistics_editor_meta_box', $hidden_widgets ) ) { + $hidden_widgets[] = 'wp_statistics_editor_meta_box'; + } + + update_user_meta( $WP_Statistics->user_id, 'metaboxhidden_post', $hidden_widgets ); + + $hidden_widgets = get_user_meta( $WP_Statistics->user_id, 'metaboxhidden_page', true ); + if ( ! is_array( $hidden_widgets ) ) { + $hidden_widgets = array(); + } + + if ( ! in_array( 'wp_statistics_editor_meta_box', $hidden_widgets ) ) { + $hidden_widgets[] = 'wp_statistics_editor_meta_box'; + } + + update_user_meta( $WP_Statistics->user_id, 'metaboxhidden_page', $hidden_widgets ); + } + + // If the user does not have at least read access to the status plugin, just return without adding the widgets. + if ( ! current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option( 'read_capability', 'manage_option' ) ) ) ) { + return; + } + + // If the admin has disabled the widgets don't display them. + if ( $WP_Statistics->get_option( 'disable_editor' ) ) { + return; + } + + // If the admin has disabled the Hit Post MetaBox. + if ( ! $WP_Statistics->get_option( 'hit_post_metabox' ) ) { + return; + } + + //Show Hit Column in All Post Type in Wordpress + $screens = self::get_list_post_type(); + foreach ( $screens as $screen ) { + add_meta_box( 'wp_statistics_editor_meta_box', __( 'Hit Statistics', 'wp-statistics' ), 'WP_Statistics_Editor::meta_box', $screen, 'normal', 'high', + array( + '__block_editor_compatible_meta_box' => true, + '__back_compat_meta_box' => false, + ) + ); + } + } + + + static function meta_box( $post ) { + // If the post isn't published yet, don't output the stats as they take too much memory and CPU to compute for no reason. + if ( $post->post_status != 'publish' && $post->post_status != 'private' ) { + _e( 'This post is not yet published.', 'wp-statistics' ); + return; + } + + add_action( 'admin_footer', 'WP_Statistics_Editor::inline_javascript' ); + WP_Statistics_Editor::generate_postbox_contents( $post->ID, array( 'args' => array( 'widget' => 'page' ) ) ); + } + + static function generate_postbox_contents( $post, $args ) { + if ( self::is_gutenberg() ) { + //If Gutenberg Editor + if ( isset( $_GET['post'] ) and ! empty( $_GET['post'] ) ) { + echo '<div class="wps-gutenberg-chart-js">'; + require( WP_Statistics::$reg['plugin-dir'] . 'includes/log/widgets/page.php' ); + wp_statistics_generate_page_postbox_content( null, $_GET['post'] ); + echo '</div>'; + echo '<style>button#wp_statistics_editor_meta_box_more_button { z-index: 9999;position: absolute;top: 1px;right: 3%;}</style>'; + } + } else { + $widget = $args['args']['widget']; + $container_id = 'wp-statistics-' . str_replace( '.', '-', $widget ) . '-div'; + echo '<div id="' . $container_id . '">' . WP_Statistics_Admin_Pages::loading_meta_box() . '</div>'; + echo '<script type="text/javascript">var wp_statistics_current_id = \'' . $post . '\';</script>'; + wp_statistics_generate_widget_load_javascript( $widget, $container_id ); + } + } + + static function inline_javascript() { + $screen = get_current_screen(); + + $screens = self::get_list_post_type(); + if ( ! in_array( $screen->id, $screens ) ) { + return; + } + + WP_Statistics_Dashboard::load_widget_css_and_scripts(); + $loading_img = WP_Statistics_Admin_Pages::loading_meta_box(); + $new_buttons = '</button>'; + + //If Classic Editor + if ( self::is_gutenberg() === false ) { + $new_buttons .= '<button class="handlediv button-link wps-refresh" type="button" id="{{refreshid}}">' . wp_statistics_icons( 'dashicons-update' ) . '<span class="screen-reader-text">' . __( 'Reload', 'wp-statistics' ) . '</span></button>'; + } + $new_buttons .= '<button class="handlediv button-link wps-more" type="button" id="{{moreid}}">' . wp_statistics_icons( 'dashicons-external' ) . '<span class="screen-reader-text">' . __( 'More Details', 'wp-statistics' ) . '</span></button>'; + + + $admin_url = get_admin_url() . "/admin.php?page="; + $page_urls = array(); + $page_urls['wp_statistics_editor_meta_box_more_button'] = $admin_url . WP_Statistics::$page['pages'] . '&page-id='; + + //Button for Gutenberg + $btn_more_action = 'wp_statistics_goto_more'; + if ( self::is_gutenberg() ) { + $btn_more_action = "function () { window.location.href = '" . wp_normalize_path( $page_urls['wp_statistics_editor_meta_box_more_button'] . ( isset( $_GET['post'] ) === true ? $_GET['post'] : '' ) ) . "';}"; + } + + ?> + <script type="text/javascript"> + var wp_statistics_destinations = <?php echo json_encode( $page_urls ); ?>; + var wp_statistics_loading_image = '<?php echo $loading_img; ?>'; + + function wp_statistics_wait_for_postboxes() { + + if (!jQuery('#show-settings-link').is(':visible')) { + setTimeout(wp_statistics_wait_for_postboxes, 500); + } + + jQuery('.wps-refresh').unbind('click').on('click', wp_statistics_refresh_widget); + jQuery('.wps-more').unbind('click').on('click', <?php echo $btn_more_action; ?>); + jQuery('.hide-postbox-tog').on('click', wp_statistics_refresh_on_toggle_widget); + } + + jQuery(document).ready(function () { + + // Add the "more" and "refresh" buttons. + jQuery('.postbox').each(function () { + var temp = jQuery(this); + var temp_id = temp.attr('id'); + + if (temp_id == 'wp_statistics_editor_meta_box') { + + var temp_html = temp.html(); + + new_text = '<?php echo $new_buttons;?>'; + new_text = new_text.replace('{{refreshid}}', temp_id + '_refresh_button'); + new_text = new_text.replace('{{moreid}}', temp_id + '_more_button'); + + temp_html = temp_html.replace('</button>', new_text); + + temp.html(temp_html); + } + }); + + // We have use a timeout here because we don't now what order this code will run in comparison to the postbox code. + // Any timeout value should work as the timeout won't run until the rest of the javascript as run through once. + setTimeout(wp_statistics_wait_for_postboxes, 100); + }); + </script> + <?php + } + + /** + * Get List Post Type + * @return array + */ + public static function get_list_post_type() { + $post_types = array( 'post', 'page' ); + $get_post_types = get_post_types( array( 'public' => true, '_builtin' => false ), 'names', 'and' ); + foreach ( $get_post_types as $name ) { + $post_types[] = $name; + } + + return $post_types; + } + + /** + * Check Is Gutenberg Editor + */ + public static function is_gutenberg() { + $current_screen = get_current_screen(); + if ( ( method_exists( $current_screen, 'is_block_editor' ) && $current_screen->is_block_editor() ) || ( function_exists( 'is_gutenberg_page' ) ) && is_gutenberg_page() ) { + return true; + } + return false; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-export.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-export.php new file mode 100644 index 0000000..af7e288 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-export.php @@ -0,0 +1,343 @@ +<?php + +/** + * Class WP_Statistics_Export + */ +class WP_Statistics_Export { + + /** + * Setup an Export Report Class + */ + public function __construct() { + + //Export Data + add_action( 'admin_init', array( $this, 'export_data' ), 9 ); + + } + + /** + * Set the headers to download the export file and then stop running WordPress. + */ + public function export_data() { + if ( isset( $_POST['wps_export'] ) ) { + global $WP_Statistics, $wpdb; + + //Set Time Limit Script Run + set_time_limit( 0 ); + + //Check Wp Nonce and Require Field + if ( ! isset( $_POST['table-to-export'] ) || ! isset( $_POST['export-file-type'] ) || ! isset( $_POST['wps_export_file'] ) || ! wp_verify_nonce( $_POST['wps_export_file'], 'wp_statistics_export_nonce' ) ) { + exit; + } + + //Check Current User Capability + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ); + if ( current_user_can( $manage_cap ) ) { + $table = $_POST['table-to-export']; + $type = $_POST['export-file-type']; + + // Validate the table name the user passed to us. + $allow_tbl = array( "useronline", "visit", "visitor", "exclusions", "pages", "search" ); + if ( ! in_array( $table, $allow_tbl ) ) { + $table = false; + } + + // Validate the file type the user passed to us. + if ( ! ( $type == "xml" || $type == "csv" || $type == "tsv" ) ) { + $table = false; + } + + if ( $table && $type ) { + $file_name = 'wp-statistics' . '-' . $WP_Statistics->Current_Date( 'Y-m-d-H-i' ); + + switch ( $type ) { + case 'xml': + $exporter = new ExportDataExcel( 'browser', "{$file_name}.xml" ); + break; + case 'csv': + $exporter = new ExportDataCSV( 'browser', "{$file_name}.csv" ); + break; + case 'tsv': + $exporter = new ExportDataTSV( 'browser', "{$file_name}.tsv" ); + break; + } + + $exporter->initialize(); + + // We need to limit the number of results we retrieve to ensure we don't run out of memory + $query_base = "SELECT * FROM {$wpdb->prefix}statistics_{$table}"; + $query = $query_base . ' LIMIT 0,1000'; + + $i = 1; + $more_results = true; + $result = $wpdb->get_results( $query, ARRAY_A ); + + // If we didn't get any rows, don't output anything. + if ( count( $result ) < 1 ) { + echo "No data in table!"; + exit; + } + + if ( isset( $_POST['export-headers'] ) and $_POST['export-headers'] ) { + foreach ( $result[0] as $key => $col ) { + $columns[] = $key; + } + $exporter->addRow( $columns ); + } + + while ( $more_results ) { + foreach ( $result as $row ) { + $exporter->addRow( $row ); + + // Make sure we've flushed the output buffer so we don't run out of memory on large exports. + ob_flush(); + flush(); + } + + unset( $result ); + $wpdb->flush(); + + $query = $query_base . ' LIMIT ' . ( $i * 1000 ) . ',1000'; + $result = $wpdb->get_results( $query, ARRAY_A ); + + if ( count( $result ) == 0 ) { + $more_results = false; + } + + $i ++; + } + + $exporter->finalize(); + exit; + } + } + } + } + +} + +/** + * ExportData is the base class for exporters to specific file formats. See other + * classes below. + */ +abstract class ExportData { + protected $exportTo; // Set in constructor to one of 'browser', 'file', 'string' + protected $stringData; // stringData so far, used if export string mode + protected $tempFile; // handle to temp file (for export file mode) + protected $tempFilename; // temp file name and path (for export file mode) + public $filename; // file mode: the output file name; browser mode: file name for download; string mode: not used + + public function __construct( $exportTo = "browser", $filename = "exportdata" ) { + if ( ! in_array( $exportTo, array( 'browser', 'file', 'string' ) ) ) { + throw new Exception( "$exportTo is not a valid ExportData export type" ); + } + $this->exportTo = $exportTo; + $this->filename = $filename; + } + + public function initialize() { + + switch ( $this->exportTo ) { + case 'browser': + $this->sendHttpHeaders(); + break; + case 'string': + $this->stringData = ''; + break; + case 'file': + $this->tempFilename = tempnam( sys_get_temp_dir(), 'exportdata' ); + $this->tempFile = fopen( $this->tempFilename, "w" ); + break; + } + + $this->write( $this->generateHeader() ); + } + + public function addRow( $row ) { + $this->write( $this->generateRow( $row ) ); + } + + public function finalize() { + + $this->write( $this->generateFooter() ); + + switch ( $this->exportTo ) { + case 'browser': + flush(); + break; + case 'string': + // do nothing + break; + case 'file': + // close temp file and move it to correct location + fclose( $this->tempFile ); + rename( $this->tempFilename, $this->filename ); + break; + } + } + + public function getString() { + return $this->stringData; + } + + abstract public function sendHttpHeaders(); + + protected function write( $data ) { + switch ( $this->exportTo ) { + case 'browser': + echo $data; + break; + case 'string': + $this->stringData .= $data; + break; + case 'file': + fwrite( $this->tempFile, $data ); + break; + } + } + + protected function generateHeader() { + // can be overridden by subclass to return any data that goes at the top of the exported file + } + + protected function generateFooter() { + // can be overridden by subclass to return any data that goes at the bottom of the exported file + } + + // In subclasses generateRow will take $row array and return string of it formatted for export type + abstract protected function generateRow( $row ); + +} + +/** + * ExportDataTSV - Exports to TSV (tab separated value) format. + */ +class ExportDataTSV extends ExportData { + + function generateRow( $row ) { + foreach ( $row as $key => $value ) { + // Escape inner quotes and wrap all contents in new quotes. + // Note that we are using \" to escape double quote not "" + $row[ $key ] = '"' . str_replace( '"', '\"', $value ) . '"'; + } + return implode( "\t", $row ) . "\n"; + } + + function sendHttpHeaders() { + header( "Content-type: text/tab-separated-values" ); + header( "Content-Disposition: attachment; filename=" . basename( $this->filename ) ); + } +} + +/** + * ExportDataCSV - Exports to CSV (comma separated value) format. + */ +class ExportDataCSV extends ExportData { + + function generateRow( $row ) { + foreach ( $row as $key => $value ) { + // Escape inner quotes and wrap all contents in new quotes. + // Note that we are using \" to escape double quote not "" + $row[ $key ] = '"' . str_replace( '"', '\"', $value ) . '"'; + } + return implode( ",", $row ) . "\n"; + } + + function sendHttpHeaders() { + header( "Content-type: text/csv" ); + header( "Content-Disposition: attachment; filename=" . basename( $this->filename ) ); + } +} + +/** + * Class ExportDataExcel + */ +class ExportDataExcel extends ExportData { + + const XmlHeader = "<?xml version=\"1.0\" encoding=\"%s\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">"; + const XmlFooter = "</Workbook>"; + + public $encoding = 'UTF-8'; // encoding type to specify in file. + // Note that you're on your own for making sure your data is actually encoded to this encoding + + public $title = 'Sheet1'; // title for Worksheet + + function generateHeader() { + + // workbook header + $output = stripslashes( sprintf( self::XmlHeader, $this->encoding ) ) . "\n"; + + // Set up styles + $output .= "<Styles>\n"; + $output .= "<Style ss:ID=\"sDT\"><NumberFormat ss:Format=\"Short Date\"/></Style>\n"; + $output .= "</Styles>\n"; + + // worksheet header + $output .= sprintf( "<Worksheet ss:Name=\"%s\">\n <Table>\n", htmlentities( $this->title ) ); + + return $output; + } + + function generateFooter() { + $output = ''; + + // worksheet footer + $output .= " </Table>\n</Worksheet>\n"; + + // workbook footer + $output .= self::XmlFooter; + + return $output; + } + + function generateRow( $row ) { + $output = ''; + $output .= " <Row>\n"; + foreach ( $row as $k => $v ) { + $output .= $this->generateCell( $v ); + } + $output .= " </Row>\n"; + return $output; + } + + private function generateCell( $item ) { + $output = ''; + $style = ''; + + // Tell Excel to treat as a number. Note that Excel only stores roughly 15 digits, so keep + // as text if number is longer than that. + if ( preg_match( "/^-?\d+(?:[.,]\d+)?$/", $item ) && ( strlen( $item ) < 15 ) ) { + $type = 'Number'; + } + // Sniff for valid dates; should look something like 2010-07-14 or 7/14/2010 etc. Can + // also have an optional time after the date. + // + // Note we want to be very strict in what we consider a date. There is the possibility + // of really screwing up the data if we try to reformat a string that was not actually + // intended to represent a date. + elseif ( preg_match( "/^(\d{1,2}|\d{4})[\/\-]\d{1,2}[\/\-](\d{1,2}|\d{4})([^\d].+)?$/", $item ) && + ( $timestamp = strtotime( $item ) ) && + ( $timestamp > 0 ) && + ( $timestamp < strtotime( '+500 years' ) ) ) { + $type = 'DateTime'; + $item = strftime( "%Y-%m-%dT%H:%M:%S", $timestamp ); + $style = 'sDT'; // defined in header; tells excel to format date for display + } else { + $type = 'String'; + } + + $item = str_replace( ''', ''', htmlspecialchars( $item, ENT_QUOTES ) ); + $output .= " "; + $output .= $style ? "<Cell ss:StyleID=\"$style\">" : "<Cell>"; + $output .= sprintf( "<Data ss:Type=\"%s\">%s</Data>", $type, $item ); + $output .= "</Cell>\n"; + + return $output; + } + + function sendHttpHeaders() { + header( "Content-Type: application/vnd.ms-excel; charset=" . $this->encoding ); + header( "Content-Disposition: inline; filename=\"" . basename( $this->filename ) . "\"" ); + } +} + diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-frontend.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-frontend.php new file mode 100644 index 0000000..4f80413 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-frontend.php @@ -0,0 +1,303 @@ +<?php + +/** + * Class WP_Statistics_Frontend + */ +class WP_Statistics_Frontend { + + public function __construct() { + global $WP_Statistics; + + //Enable Shortcode in Widget + add_filter( 'widget_text', 'do_shortcode' ); + + // Add the honey trap code in the footer. + add_action( 'wp_footer', array( $this, 'add_honeypot' ) ); + + // Enqueue scripts & styles + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); + + //Get Visitor information and Save To Database + add_action( 'wp', array( $this, 'init' ) ); + + //Add inline Rest Request + add_action( 'wp_head', array( $this, 'add_inline_rest_js' ) ); + + //Add Html Comment in head + if ( ! $WP_Statistics->use_cache ) { + add_action( 'wp_head', array( $this, 'html_comment' ) ); + } + + // Check to show hits in posts/pages + if ( $WP_Statistics->get_option( 'show_hits' ) ) { + add_filter( 'the_content', array( $this, 'show_hits' ) ); + } + } + + /* + * Create Comment support Wappalyzer + */ + public function html_comment() { + echo '<!-- Analytics by WP-Statistics v' . WP_Statistics::$reg['version'] . ' - ' . WP_Statistics::$reg['plugin-data']['PluginURI'] . ' -->' . "\n"; + } + + /** + * Footer Action + */ + public function add_honeypot() { + global $WP_Statistics; + if ( $WP_Statistics->get_option( 'use_honeypot' ) && $WP_Statistics->get_option( 'honeypot_postid' ) > 0 ) { + $post_url = get_permalink( $WP_Statistics->get_option( 'honeypot_postid' ) ); + echo '<a href="' . $post_url . '" style="display: none;"> </a>'; + } + } + + /** + * Enqueue Scripts + */ + public function enqueue_scripts() { + + // Load our CSS to be used. + if ( is_admin_bar_showing() ) { + wp_enqueue_style( 'wpstatistics-css', WP_Statistics::$reg['plugin-url'] . 'assets/css/frontend.css', true, WP_Statistics::$reg['version'] ); + } + } + + /* + * Inline Js + */ + public function add_inline_rest_js() { + global $WP_Statistics; + + if ( $WP_Statistics->use_cache ) { + + // Wp-Statistics HTML comment + $this->html_comment(); + + // Prepare Params + $params = array_merge( array( + '_' => time(), + '_wpnonce' => wp_create_nonce( 'wp_rest' ), + WP_Statistics_Rest::_Argument => 'yes', + ), self::set_default_params() ); + + // Return to Page + echo '<script>var WP_Statistics_http = new XMLHttpRequest();WP_Statistics_http.open(\'GET\', \'' . add_query_arg( $params, path_join( get_rest_url(), WP_Statistics_Rest::route . '/' . WP_Statistics_Rest::func ) ) . '\', true);WP_Statistics_http.setRequestHeader("Content-Type", "application/json;charset=UTF-8");WP_Statistics_http.send(null);</script>' . "\n"; + } + } + + /* + * Set Default Params Rest Api + */ + static public function set_default_params() { + global $WP_Statistics; + + /* + * Load Rest Api JavaScript + */ + $params = array(); + + //Set Browser + $result = $WP_Statistics->get_UserAgent(); + $params['browser'] = $result['browser']; + $params['platform'] = $result['platform']; + $params['version'] = $result['version']; + + //set referred + $params['referred'] = $WP_Statistics->get_Referred(); + + //Set ip + $params['ip'] = esc_html( $WP_Statistics->get_IP() ); + + //exclude + $check_exclude = new WP_Statistics_Hits(); + $params['exclude'] = $check_exclude->exclusion_match; + $params['exclude_reason'] = $check_exclude->exclusion_reason; + + //User Agent String + $params['ua'] = ''; + if ( array_key_exists( 'HTTP_USER_AGENT', $_SERVER ) ) { + $params['ua'] = esc_html( $_SERVER['HTTP_USER_AGENT'] ); + } + + //track all page + $params['track_all'] = 0; + if ( WP_Statistics_Hits::is_track_page() === true ) { + $params['track_all'] = 1; + } + + //timestamp + $params['timestamp'] = $WP_Statistics->current_date( 'U' ); + + //Wp_query + $get_page_type = WP_Statistics_Frontend::get_page_type(); + $params['search_query'] = ''; + $params['current_page_type'] = $get_page_type['type']; + $params['current_page_id'] = $get_page_type['id']; + + if ( array_key_exists( "search_query", $get_page_type ) ) { + $params['search_query'] = esc_html( $get_page_type['search_query'] ); + } + + //page url + $params['page_uri'] = wp_statistics_get_uri(); + + //Get User id + $params['user_id'] = 0; + if ( is_user_logged_in() ) { + $params['user_id'] = get_current_user_id(); + } + + return $params; + } + + /** + * Shutdown Action + */ + public function init() { + global $WP_Statistics; + + // If something has gone horribly wrong and $WP_Statistics isn't an object, bail out. + // This seems to happen sometimes with WP Cron calls. + if ( ! is_object( $WP_Statistics ) ) { + return; + } + + //Disable if User Active cache Plugin + if ( ! $WP_Statistics->use_cache ) { + + $h = new WP_Statistics_GEO_IP_Hits; + + // Call the online users tracking code. + if ( $WP_Statistics->get_option( 'useronline' ) ) { + $h->Check_online(); + } + + // Call the visitor tracking code. + if ( $WP_Statistics->get_option( 'visitors' ) ) { + $h->Visitors(); + } + + // Call the visit tracking code. + if ( $WP_Statistics->get_option( 'visits' ) ) { + $h->Visits(); + } + + // Call the page tracking code. + if ( $WP_Statistics->get_option( 'pages' ) ) { + $h->Pages(); + } + } + } + + /** + * @param $content + * + * @return string + */ + public function show_hits( $content ) { + global $WP_Statistics; + + // Get post ID + $post_id = get_the_ID(); + + // Check post ID + if ( ! $post_id ) { + return $content; + } + + // Get post hits + $hits = wp_statistics_pages( 'total', "", $post_id ); + $hits_html = '<p>' . sprintf( __( 'Hits: %s', 'wp-statistics' ), $hits ) . '</p>'; + + // Check hits position + if ( $WP_Statistics->get_option( 'display_hits_position' ) == 'before_content' ) { + return $hits_html . $content; + } elseif ( $WP_Statistics->get_option( 'display_hits_position' ) == 'after_content' ) { + return $content . $hits_html; + } else { + return $content; + } + } + + /** + * Get Page Type + */ + public static function get_page_type() { + + //Set Default Option + $result = array( "type" => "unknown", "id" => 0 ); + + //Check Query object + $id = get_queried_object_id(); + if ( is_numeric( $id ) and $id > 0 ) { + $result['id'] = $id; + } + + //WooCommerce Product + if ( class_exists( 'WooCommerce' ) ) { + if ( is_product() ) { + return wp_parse_args( array( "type" => "product" ), $result ); + } + } + + //Home Page or Front Page + if ( is_front_page() || is_home() ) { + return wp_parse_args( array( "type" => "home" ), $result ); + } + + //attachment View + if ( is_attachment() ) { + $result['type'] = "attachment"; + } + + //is Archive Page + if ( is_archive() ) { + $result['type'] = "archive"; + } + + //Single Post Fro All Post Type + if ( is_singular() ) { + $result['type'] = "post"; + } + + //Single Page + if ( is_page() ) { + $result['type'] = "page"; + } + + //Category Page + if ( is_category() ) { + $result['type'] = "category"; + } + + //Tag Page + if ( is_tag() ) { + $result['type'] = "post_tag"; + } + + //is Custom Term From Taxonomy + if ( is_tax() ) { + $result['type'] = "tax"; + } + + //is Author Page + if ( is_author() ) { + $result['type'] = "author"; + } + + //is search page + $search_query = filter_var( get_search_query( false ), FILTER_SANITIZE_STRING ); + if ( trim( $search_query ) != "" ) { + return array( "type" => "search", "id" => 0, "search_query" => $search_query ); + } + + //is 404 Page + if ( is_404() ) { + $result['type'] = "404"; + } + + return $result; + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-geo-ip-hits.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-geo-ip-hits.php new file mode 100644 index 0000000..4afd56e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-geo-ip-hits.php @@ -0,0 +1,73 @@ +<?php +/* + This is the class for recording GeoIP information for hits on the WordPress site. It extends the Hits class. +*/ + +// Load the classes. +use GeoIp2\Database\Reader; + +class WP_Statistics_GEO_IP_Hits extends WP_Statistics_Hits { + public function __construct() { + global $WP_Statistics; + // Call the parent constructor (WP_Statistics::__constructor). + parent::__construct(); + + // We may have set the location based on a private IP address in the hits class, if so, don't bother looking it up again. + if ( $this->location == '000' ) { + + // Now get the location information from the MaxMind database. + try { + // Get the WordPress upload directory information, which is where we have stored the MaxMind database. + $upload_dir = wp_upload_dir(); + + // Create a new Reader and point it to the database. + $reader = new Reader( $upload_dir['basedir'] . '/wp-statistics/GeoLite2-Country.mmdb' ); + + // Look up the IP address + $record = $reader->country( $WP_Statistics->ip ); + + // Get the location. + $location = $record->country->isoCode; + + // MaxMind returns a blank for location if it can't find it, but we want to use 000 so replace it. + if ( $location == "" ) { + $location = "000"; + } + } catch ( Exception $e ) { + $location = "000"; + } + + // Store the location in the protected $location variable from the parent class. + $this->location = $location; + } + + // Check to see if we are excluded by the GeoIP rules. + if ( ! $this->exclusion_match ) { + // Grab the excluded/included countries lists, force the country codes to be in upper case to match what the GeoIP code uses. + $excluded_countries = explode( + "\n", + strtoupper( str_replace( "\r\n", "\n", $WP_Statistics->get_option( 'excluded_countries' ) ) ) + ); + $included_countries_string = trim( + strtoupper( str_replace( "\r\n", "\n", $WP_Statistics->get_option( 'included_countries' ) ) ) + ); + + // We need to be really sure this isn't an empty string or explode will return an array with one entry instead of none. + if ( $included_countries_string == '' ) { + $included_countries = array(); + } else { + $included_countries = explode( "\n", $included_countries_string ); + } + + // Check to see if the current location is in the excluded countries list. + if ( in_array( $this->location, $excluded_countries ) ) { + $this->exclusion_match = true; + $this->exclusion_reason = "geoip"; + } // Check to see if the current location is not the included countries list. + else if ( ! in_array( $this->location, $included_countries ) && count( $included_countries ) > 0 ) { + $this->exclusion_match = true; + $this->exclusion_reason = "geoip"; + } + } + } +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-hits.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-hits.php new file mode 100644 index 0000000..96ec1c9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-hits.php @@ -0,0 +1,814 @@ +<?php +/* + This is the primary class for recording hits on the WordPress site. It extends the WP_Statistics class and is itself extended by the GEO_IP_Hits class. + This class handles; visits, visitors and pages. +*/ + +use Jaybizzle\CrawlerDetect\CrawlerDetect; +use IPTools\IP; +use IPTools\Network; +use IPTools\Range; + +class WP_Statistics_Hits { + + // Setup our public/private/protected variables. + public $result = null; + + protected $location = '000'; + public $exclusion_match = false; + public $exclusion_reason = ''; + + public $exclusion_record = false; + private $timestamp; + private $current_page_id; + private $current_page_type; + public $current_visitor_id = 0; + + // Construction function. + public function __construct() { + global $wp_version, $WP_Statistics; + + // Set the timestamp value. + $this->timestamp = $WP_Statistics->current_date( 'U' ); + if ( WP_Statistics_Rest::is_rest() ) { + $this->timestamp = WP_Statistics_Rest::params( 'timestamp' ); + } + + // Check to see if the user wants us to record why we're excluding hits. + if ( $WP_Statistics->get_option( 'record_exclusions' ) ) { + $this->exclusion_record = true; + } + + // Create a IP Tools instance from the current IP address for use later. + // Fall back to the localhost if it can't be parsed. + try { + $ip = new IP( $WP_Statistics->ip ); + } catch ( Exception $e ) { + $ip = new IP( '127.0.0.1' ); + } + + // Let's check to see if our subnet matches a private IP address range, if so go ahead and set the location information now. + if ( $WP_Statistics->get_option( 'private_country_code' ) != '000' && + $WP_Statistics->get_option( 'private_country_code' ) != '' + ) { + $private_subnets = array( '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', '127.0.0.1/24', 'fc00::/7' ); + + foreach ( $private_subnets as $psub ) { + + try { + $contains_ip = Range::parse( $psub )->contains( $ip ); + } catch ( Exception $e ) { + $contains_ip = false; + } + + if ( $contains_ip ) { + $this->location = $WP_Statistics->get_option( 'private_country_code' ); + break; + } + } + } + + /* + * The follow exclusion checks are done during the class construction so we don't have to execute them twice if we're tracking visits and visitors. + * + * Order of exclusion checks is: + * 1 - AJAX calls + * 2 - CronJob + * 3 - Robots + * 4 - IP/Subnets + * 5 - Self Referrals, Referrer Spam & login page + * 6 - User roles + * 7 - Host name list + * 8 - Broken link file + * + * The GoeIP exclusions will be processed in the GeoIP hits class constructor. + * + * Note that we stop processing as soon as a match is made by executing a `return` from the function constructor. + * + */ + if ( WP_Statistics_Rest::is_rest() ) { + $this->exclusion_match = ( WP_Statistics_Rest::params( 'exclude' ) == 1 ? true : false ); + $this->exclusion_reason = WP_Statistics_Rest::params( 'exclude_reason' ); + + if ( $this->exclusion_match === true ) { + return; + } + } else { + + // Detect if we're running an ajax request. + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'ajax'; + + return; + } + + if ( ( defined( 'DOING_CRON' ) && DOING_CRON === true ) || ( function_exists( 'wp_doing_cron' ) && wp_doing_cron() === true ) ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'cronjob'; + + return; + } + + $crawler = false; + $ua_string = ''; + + if ( array_key_exists( 'HTTP_USER_AGENT', $_SERVER ) ) { + $ua_string = $_SERVER['HTTP_USER_AGENT']; + } + + /* + * Check Is robot + */ + $CrawlerDetect = new CrawlerDetect; + if ( $CrawlerDetect->isCrawler() ) { + $crawler = true; + } + + // If we're a crawler as per whichbrowser, exclude us, otherwise double check based on the WP Statistics robot list. + if ( $crawler == true ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'CrawlerDetect'; + + return; + } else { + // Pull the robots from the database. + $robots = explode( "\n", $WP_Statistics->get_option( 'robotlist' ) ); + + // Check to see if we match any of the robots. + foreach ( $robots as $robot ) { + $robot = trim( $robot ); + + // If the match case is less than 4 characters long, it might match too much so don't execute it. + if ( strlen( $robot ) > 3 ) { + if ( stripos( $ua_string, $robot ) !== false ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'robot'; + + return; + } + } + } + + // Finally check to see if we have corrupt header information. + if ( ! $this->exclusion_match && $WP_Statistics->get_option( 'corrupt_browser_info' ) ) { + if ( $ua_string == '' || $WP_Statistics->ip == '' ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'robot'; + + return; + } + } + } + + //Check Broken Link File + if ( is_404() ) { + + //Check Current Page + if ( isset( $_SERVER["HTTP_HOST"] ) and isset( $_SERVER["REQUEST_URI"] ) ) { + + //Get Full Url Page + $page_url = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ? "https" : "http" ) . "://{$_SERVER["HTTP_HOST"]}{$_SERVER["REQUEST_URI"]}"; + + //Check Link file + $page_url = parse_url( $page_url, PHP_URL_PATH ); + $ext = pathinfo( $page_url, PATHINFO_EXTENSION ); + if ( ! empty( $ext ) and $ext != 'php' ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'BrokenFile'; + + return; + } + } + } + + // Pull the subnets from the database. + $subnets = explode( "\n", $WP_Statistics->get_option( 'exclude_ip' ) ); + + // Check to see if we match any of the excluded addresses. + foreach ( $subnets as $subnet ) { + $subnet = trim( $subnet ); + + // The shortest ip address is 1.1.1.1, anything less must be a malformed entry. + if ( strlen( $subnet ) > 6 ) { + $range_prased = false; + + try { + $range_prased = Range::parse( $subnet )->contains( $ip ); + } catch ( Exception $e ) { + $range_parased = false; + } + + if ( $range_prased ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'ip match'; + + return; + } + } + } + + // Check to see if we are being referred to ourselves. + if ( $ua_string == 'WordPress/' . $wp_version . '; ' . get_home_url( null, '/' ) || + $ua_string == 'WordPress/' . $wp_version . '; ' . get_home_url() + ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'self referral'; + + return; + } + + // Check to see if we're excluding the login page. + if ( $WP_Statistics->get_option( 'exclude_loginpage' ) ) { + $protocol = strpos( strtolower( $_SERVER['SERVER_PROTOCOL'] ), 'https' ) === false ? 'http' : 'https'; + $host = $_SERVER['HTTP_HOST']; + $script = $_SERVER['SCRIPT_NAME']; + + $currentURL = $protocol . '://' . $host . $script; + $loginURL = wp_login_url(); + + if ( $currentURL == $loginURL ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'login page'; + + return; + } + } + + // Check to see if we're excluding the Admin page. + if ( $WP_Statistics->get_option( 'exclude_adminpage' ) ) { + if ( stristr( $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], "wp-admin" ) ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'admin page'; + + return; + } + } + + // Check to see if we're excluding referrer spam. + if ( $WP_Statistics->get_option( 'referrerspam' ) ) { + $referrer = $WP_Statistics->get_Referred(); + + // Pull the referrer spam list from the database. + $referrerspamlist = explode( "\n", $WP_Statistics->get_option( 'referrerspamlist' ) ); + + // Check to see if we match any of the robots. + foreach ( $referrerspamlist as $item ) { + $item = trim( $item ); + + // If the match case is less than 4 characters long, it might match too much so don't execute it. + if ( strlen( $item ) > 3 ) { + if ( stripos( $referrer, $item ) !== false ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'referrer_spam'; + + return; + } + } + } + } + + // Check to see if we're excluding RSS feeds. + if ( $WP_Statistics->get_option( 'exclude_feeds' ) ) { + if ( is_feed() ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'feed'; + + return; + } + } + + // Check to see if we're excluding 404 pages. + if ( $WP_Statistics->get_option( 'exclude_404s' ) ) { + if ( is_404() ) { + $this->exclusion_match = true; + $this->exclusion_reason = '404'; + + return; + } + } + + // Check to see if we're excluding the current page url. + if ( $WP_Statistics->get_option( 'excluded_urls' ) ) { + $script = $_SERVER['REQUEST_URI']; + $delimiter = strpos( $script, '?' ); + if ( $delimiter > 0 ) { + $script = substr( $script, 0, $delimiter ); + } + + $excluded_urls = explode( "\n", $WP_Statistics->get_option( 'excluded_urls' ) ); + + foreach ( $excluded_urls as $url ) { + $this_url = trim( $url ); + + if ( strlen( $this_url ) > 2 ) { + if ( stripos( $script, $this_url ) === 0 ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'excluded url'; + + return; + } + } + } + } + + // Check to see if we are excluding based on the user role. + if ( is_user_logged_in() ) { + $current_user = wp_get_current_user(); + + foreach ( $current_user->roles as $role ) { + $option_name = 'exclude_' . str_replace( ' ', '_', strtolower( $role ) ); + if ( $WP_Statistics->get_option( $option_name ) == true ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'user role'; + + return; + } + } + } + + // Check to see if we are excluded by the host name. + if ( ! $this->exclusion_match ) { + $excluded_host = explode( "\n", $WP_Statistics->get_option( 'excluded_hosts' ) ); + + // If there's nothing in the excluded host list, don't do anything. + if ( count( $excluded_host ) > 0 ) { + $transient_name = 'wps_excluded_hostname_to_ip_cache'; + + // Get the transient with the hostname cache. + $hostname_cache = get_transient( $transient_name ); + + // If the transient has expired (or has never been set), create one now. + if ( $hostname_cache === false ) { + // Flush the failed cache variable. + $hostname_cache = array(); + + // Loop through the list of hosts and look them up. + foreach ( $excluded_host as $host ) { + if ( strpos( $host, '.' ) > 0 ) { + // We add the extra period to the end of the host name to make sure we don't append the local dns suffix to the resolution cycle. + $hostname_cache[ $host ] = gethostbyname( $host . '.' ); + } + } + + // Set the transient and store it for 1 hour. + set_transient( $transient_name, $hostname_cache, 360 ); + } + + // Check if the current IP address matches one of the ones in the excluded hosts list. + if ( in_array( $WP_Statistics->ip, $hostname_cache ) ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'hostname'; + + return; + } + } + } + } + } + + // This function records visits to the site. + public function Visits() { + global $wpdb, $WP_Statistics; + + // If we're a webcrawler or referral from ourselves or an excluded address don't record the visit. + if ( ! $this->exclusion_match ) { + + // Check to see if we're a returning visitor. + $this->result = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}statistics_visit ORDER BY `{$wpdb->prefix}statistics_visit`.`ID` DESC" ); + + // If we're a returning visitor, update the current record in the database, otherwise, create a new one. + if ( $this->result->last_counter != $WP_Statistics->Current_Date( 'Y-m-d' ) ) { + + // We'd normally use the WordPress insert function, but since we may run in to a race condition where another hit to the site has already created a new entry in the database + // for this IP address we want to do an "INSERT ... ON DUPLICATE KEY" which WordPress doesn't support. + $sqlstring = $wpdb->prepare( + 'INSERT INTO ' . $wpdb->prefix . 'statistics_visit (last_visit, last_counter, visit) VALUES ( %s, %s, %d) ON DUPLICATE KEY UPDATE visit = visit + ' . $WP_Statistics->coefficient, + $WP_Statistics->Current_Date(), + $WP_Statistics->Current_date( 'Y-m-d' ), + $WP_Statistics->coefficient + ); + + $wpdb->query( $sqlstring ); + } else { + $sqlstring = $wpdb->prepare( + 'UPDATE ' . $wpdb->prefix . 'statistics_visit SET `visit` = `visit` + %d, `last_visit` = %s WHERE `last_counter` = %s', + $WP_Statistics->coefficient, + $WP_Statistics->Current_Date(), + $this->result->last_counter + ); + + $wpdb->query( $sqlstring ); + } + } + } + + //Get current Page detail + public function get_page_detail() { + + //if is Cache enable + if ( WP_Statistics_Rest::is_rest() ) { + $this->current_page_id = WP_Statistics_Rest::params( 'current_page_id' ); + $this->current_page_type = WP_Statistics_Rest::params( 'current_page_type' ); + } else { + //Get Page Type + $get_page_type = WP_Statistics_Frontend::get_page_type(); + $this->current_page_id = $get_page_type['id']; + $this->current_page_type = $get_page_type['type']; + } + + } + + + // This function records unique visitors to the site. + public function Visitors() { + global $wpdb, $WP_Statistics; + + //Get Current Page detail + $this->get_page_detail(); + + //Check honeypot Page + if ( $WP_Statistics->get_option( 'use_honeypot' ) && $WP_Statistics->get_option( 'honeypot_postid' ) > 0 && $WP_Statistics->get_option( 'honeypot_postid' ) == $this->current_page_id && $this->current_page_id > 0 ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'honeypot'; + } + + // If we're a webcrawler or referral from ourselves or an excluded address don't record the visit. + // The exception here is if we've matched a honey page, we want to lookup the user and flag them + // as having been trapped in the honey pot for later exclusions. + if ( $this->exclusion_reason == 'honeypot' || ! $this->exclusion_match ) { + + // Check to see if we already have an entry in the database. + $check_ip_db = $WP_Statistics->store_ip_to_db(); + if ( $WP_Statistics->ip_hash != false ) { + $check_ip_db = $WP_Statistics->ip_hash; + } + + //Check Exist This User in Current Day + $this->result = $wpdb->get_row( "SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE `last_counter` = '{$WP_Statistics->Current_Date('Y-m-d')}' AND `ip` = '{$check_ip_db}'" ); + + // Check to see if this is a visit to the honey pot page, flag it when we create the new entry. + $honeypot = 0; + if ( $this->exclusion_reason == 'honeypot' ) { + $honeypot = 1; + } + + // If we don't create a new one, otherwise update the old one. + if ( ! $this->result ) { + + // If we've been told to store the entire user agent, do so. + if ( $WP_Statistics->get_option( 'store_ua' ) == true ) { + if ( WP_Statistics_Rest::is_rest() ) { + $ua = WP_Statistics_Rest::params( 'ua' ); + } else { + $ua = ( isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '' ); + } + } else { + $ua = ''; + } + + // Store the result. + add_filter( 'query', 'wp_statistics_ignore_insert', 10 ); + $wpdb->insert( + $wpdb->prefix . 'statistics_visitor', + array( + 'last_counter' => $WP_Statistics->Current_date( 'Y-m-d' ), + 'referred' => $WP_Statistics->get_Referred(), + 'agent' => $WP_Statistics->agent['browser'], + 'platform' => $WP_Statistics->agent['platform'], + 'version' => $WP_Statistics->agent['version'], + 'ip' => $WP_Statistics->ip_hash ? $WP_Statistics->ip_hash : $WP_Statistics->store_ip_to_db(), + 'location' => $this->location, + 'UAString' => $ua, + 'hits' => 1, + 'honeypot' => $honeypot, + ), + array( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%d', '%s' ) + ); + $this->current_visitor_id = $wpdb->insert_id; + remove_filter( 'query', 'wp_statistics_ignore_insert', 10 ); + + // Now parse the referrer and store the results in the search table if the database has been converted. + // Also make sure we actually inserted a row on the INSERT IGNORE above or we'll create duplicate entries. + if ( $wpdb->insert_id ) { + + $search_engines = wp_statistics_searchengine_list(); + if ( WP_Statistics_Rest::is_rest() ) { + $referred = WP_Statistics_Rest::params( 'referred' ); + } else { + $referred = $WP_Statistics->get_Referred(); + } + + // Parse the URL in to it's component parts. + if ( wp_http_validate_url( $referred ) ) { + $parts = parse_url( $referred ); + + // Loop through the SE list until we find which search engine matches. + foreach ( $search_engines as $key => $value ) { + $search_regex = wp_statistics_searchengine_regex( $key ); + + preg_match( '/' . $search_regex . '/', $parts['host'], $matches ); + + if ( isset( $matches[1] ) ) { + $data['last_counter'] = $WP_Statistics->Current_date( 'Y-m-d' ); + $data['engine'] = $key; + $data['words'] = $WP_Statistics->Search_Engine_QueryString( $referred ); + $data['host'] = $parts['host']; + $data['visitor'] = $wpdb->insert_id; + + if ( $data['words'] == 'No search query found!' ) { + $data['words'] = ''; + } + + $wpdb->insert( $wpdb->prefix . 'statistics_search', $data ); + } + } + } + } + } else { + + // Normally we've done all of our exclusion matching during the class creation, however for the robot threshold is calculated here to avoid another call the database. + if ( $WP_Statistics->get_option( 'robot_threshold' ) > 0 && $this->result->hits + 1 > $WP_Statistics->get_option( 'robot_threshold' ) ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'robot_threshold'; + } else if ( $this->result->honeypot ) { + $this->exclusion_match = true; + $this->exclusion_reason = 'honeypot'; + } else { + + //Get Current Visitors ID + $this->current_visitor_id = $this->result->ID; + + $sqlstring = $wpdb->prepare( + 'UPDATE `' . $wpdb->prefix . 'statistics_visitor` SET `hits` = `hits` + %d, `honeypot` = %d WHERE `ID` = %d', + 1, + $honeypot, + $this->result->ID + ); + + $wpdb->query( $sqlstring ); + } + } + } + + if ( $this->exclusion_match ) { + $this->RecordExclusion(); + } + } + + private function RecordExclusion() { + global $wpdb, $WP_Statistics; + // If we're not storing exclusions, just return. + if ( $this->exclusion_record != true ) { + return; + } + + $this->result = $wpdb->query( "UPDATE {$wpdb->prefix}statistics_exclusions SET `count` = `count` + 1 WHERE `date` = '{$WP_Statistics->Current_Date( 'Y-m-d' )}' AND `reason` = '{$this->exclusion_reason}'" ); + if ( ! $this->result ) { + $wpdb->insert( + $wpdb->prefix . 'statistics_exclusions', + array( + 'date' => $WP_Statistics->Current_date( 'Y-m-d' ), + 'reason' => $this->exclusion_reason, + 'count' => 1, + ) + ); + } + } + + // Check is Track All Page + static public function is_track_page() { + global $WP_Statistics; + + //Check if Track All + if ( $WP_Statistics->get_option( 'track_all_pages' ) || is_single() || is_page() || is_front_page() ) { + return true; + } + + return false; + } + + // This function records page hits. + public function Pages() { + global $wpdb, $WP_Statistics; + + // If we're a web crawler or referral from ourselves or an excluded address don't record the page hit. + if ( ! $this->exclusion_match ) { + + // Don't track anything but actual pages and posts, unless we've been told to. + $is_track_all = false; + if ( WP_Statistics_Rest::is_rest() ) { + if ( WP_Statistics_Rest::params( 'track_all' ) == 1 ) { + $is_track_all = true; + } + } else { + if ( self::is_track_page() ) { + $is_track_all = true; + } + } + + if ( $is_track_all === true ) { + + // Get the pages or posts ID if it exists and we haven't set it in the visitors code. + $this->get_page_detail(); + + // If we didn't find a page id, we don't have anything else to do. + if ( $this->current_page_type == "unknown" ) { + return; + } + + // Get the current page URI. + if ( WP_Statistics_Rest::is_rest() ) { + $page_uri = WP_Statistics_Rest::params( 'page_uri' ); + } else { + $page_uri = wp_statistics_get_uri(); + } + + //Get String Search Wordpress + $is_search = false; + if ( WP_Statistics_Rest::is_rest() ) { + if ( WP_Statistics_Rest::params( 'search_query' ) != "" ) { + $page_uri = "?s=" . WP_Statistics_Rest::params( 'search_query' ); + $is_search = true; + } + } else { + $get_page_type = WP_Statistics_Frontend::get_page_type(); + if ( array_key_exists( "search_query", $get_page_type ) ) { + $page_uri = "?s=" . $get_page_type['search_query']; + $is_search = true; + } + } + + if ( $WP_Statistics->get_option( 'strip_uri_parameters' ) and $is_search === false ) { + $temp = explode( '?', $page_uri ); + if ( $temp !== false ) { + $page_uri = $temp[0]; + } + } + + // Limit the URI length to 255 characters, otherwise we may overrun the SQL field size. + $page_uri = substr( $page_uri, 0, 255 ); + + // If we have already been to this page today (a likely scenario), just update the count on the record. + $exist = $wpdb->get_row( "SELECT `page_id` FROM {$wpdb->prefix}statistics_pages WHERE `date` = '{$WP_Statistics->Current_Date( 'Y-m-d' )}' " . ( $is_search === true ? "AND `uri` = '" . esc_sql( $page_uri ) . "'" : "" ) . "AND `type` = '{$this->current_page_type}' AND `id` = {$this->current_page_id}", ARRAY_A ); + if ( null !== $exist ) { + $sql = $wpdb->prepare( "UPDATE {$wpdb->prefix}statistics_pages SET `count` = `count` + 1 WHERE `date` = '{$WP_Statistics->Current_Date( 'Y-m-d' )}' " . ( $is_search === true ? "AND `uri` = '" . esc_sql( $page_uri ) . "'" : "" ) . "AND `type` = '{$this->current_page_type}' AND `id` = %d", $this->current_page_id ); + $this->result = $wpdb->query( $sql ); + $page_id = $exist['page_id']; + + } else { + add_filter( 'query', 'wp_statistics_ignore_insert', 10 ); + $wpdb->insert( + $wpdb->prefix . 'statistics_pages', + array( + 'uri' => $page_uri, + 'date' => $WP_Statistics->Current_date( 'Y-m-d' ), + 'count' => 1, + 'id' => $this->current_page_id, + 'type' => $this->current_page_type + ) + ); + $page_id = $wpdb->insert_id; + remove_filter( 'query', 'wp_statistics_ignore_insert', 10 ); + } + + //Set Visitor Relationships + if ( $WP_Statistics->get_option( 'visitors' ) == true and $WP_Statistics->get_option( 'visitors_log' ) == true and $this->current_visitor_id > 0 ) { + $this->visitors_relationships( $page_id, $this->current_visitor_id ); + } + + } + } + } + + //Set Visitor Relationships + public function visitors_relationships( $page_id, $visitor_id ) { + global $wpdb; + $wpdb->insert( + $wpdb->prefix . 'statistics_visitor_relationships', + array( + 'visitor_id' => $visitor_id, + 'page_id' => $page_id, + 'date' => current_time( 'mysql' ) + ), + array( '%d', '%d', '%s' ) + ); + } + + // This function checks to see if the current user (as defined by their IP address) has an entry in the database. + // Note we set the $this->result variable so we don't have to re-execute the query when we do the user update. + public function Is_user() { + global $wpdb, $WP_Statistics; + + // Check to see if we already have an entry in the database. + $check_ip_db = $WP_Statistics->store_ip_to_db(); + if ( $WP_Statistics->ip_hash != false ) { + $check_ip_db = $WP_Statistics->ip_hash; + } + + //Check Exist + $this->result = $wpdb->query( "SELECT * FROM {$wpdb->prefix}statistics_useronline WHERE `ip` = '{$check_ip_db}'" ); + + if ( $this->result ) { + return true; + } + } + + // This function add/update/delete the online users in the database. + public function Check_online() { + global $WP_Statistics; + + // If we're a web crawler or referral from ourselves or an excluded address don't record the user as online, unless we've been told to anyway. + if ( ! $this->exclusion_match || $WP_Statistics->get_option( 'all_online' ) ) { + + // If the current user exists in the database already, + // Just update them, otherwise add them + if ( $this->Is_user() ) { + $this->Update_user(); + } else { + $this->Add_user(); + } + } + + } + + // This function adds a user to the database. + public function Add_user() { + global $wpdb, $WP_Statistics; + + //Check is User + if ( ! $this->Is_user() ) { + + // Get the pages or posts ID if it exists and we haven't set it in the visitors code. + $this->get_page_detail(); + + // Insert the user in to the database. + $wpdb->insert( + $wpdb->prefix . 'statistics_useronline', + array( + 'ip' => $WP_Statistics->ip_hash ? $WP_Statistics->ip_hash : $WP_Statistics->store_ip_to_db(), + 'timestamp' => $this->timestamp, + 'created' => $this->timestamp, + 'date' => $WP_Statistics->Current_Date(), + 'referred' => $WP_Statistics->get_Referred(), + 'agent' => $WP_Statistics->agent['browser'], + 'platform' => $WP_Statistics->agent['platform'], + 'version' => $WP_Statistics->agent['version'], + 'location' => $this->location, + 'user_id' => self::get_user_id(), + 'page_id' => $this->current_page_id, + 'type' => $this->current_page_type + ) + ); + } + } + + /** + * Get User ID + */ + public static function get_user_id() { + + //create Empty + $user_id = 0; + + //if Rest Request + if ( WP_Statistics_Rest::is_rest() ) { + if ( WP_Statistics_Rest::params( 'user_id' ) != "" ) { + $user_id = WP_Statistics_Rest::params( 'user_id' ); + } + } else { + if ( is_user_logged_in() ) { + return get_current_user_id(); + } + } + + return $user_id; + } + + // This function updates a user in the database. + public function Update_user() { + global $wpdb, $WP_Statistics; + + // Make sure we found the user earlier when we called Is_user(). + if ( $this->result ) { + + // Get the pages or posts ID if it exists and we haven't set it in the visitors code. + $this->get_page_detail(); + + // Update the database with the new information. + $wpdb->update( + $wpdb->prefix . 'statistics_useronline', + array( + 'timestamp' => $this->timestamp, + 'date' => $WP_Statistics->Current_Date(), + 'referred' => $WP_Statistics->get_Referred(), + 'user_id' => self::get_user_id(), + 'page_id' => $this->current_page_id, + 'type' => $this->current_page_type + ), + array( 'ip' => $WP_Statistics->ip_hash ? $WP_Statistics->ip_hash : $WP_Statistics->store_ip_to_db() ) + ); + } + } + +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-install.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-install.php new file mode 100644 index 0000000..75b37bb --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-install.php @@ -0,0 +1,741 @@ +<?php + +/** + * Class WP_Statistics_Install + */ +class WP_Statistics_Install { + + /** + * List Of wp-statistics Mysql Table + * @var array + */ + public static $db_table = array( 'useronline', 'visit', 'visitor', 'exclusions', 'pages', 'search', 'historical', 'visitor_relationships' ); + + /** + * WP_Statistics_Install constructor. + * + * @internal param $WP_Statistics + */ + function __construct() { + global $WP_Statistics, $wpdb; + if ( is_admin() ) { + + // The follow variables are used to define the table structure for new and upgrade installations. + $create_useronline_table = ( " + CREATE TABLE {$wpdb->prefix}statistics_useronline ( + ID int(11) NOT NULL AUTO_INCREMENT, + ip varchar(60) NOT NULL, + created int(11), + timestamp int(10) NOT NULL, + date datetime NOT NULL, + referred text CHARACTER SET utf8 NOT NULL, + agent varchar(255) NOT NULL, + platform varchar(255), + version varchar(255), + location varchar(10), + PRIMARY KEY (ID) + ) CHARSET=utf8" ); + + $create_visit_table = ( " + CREATE TABLE {$wpdb->prefix}statistics_visit ( + ID int(11) NOT NULL AUTO_INCREMENT, + last_visit datetime NOT NULL, + last_counter date NOT NULL, + visit int(10) NOT NULL, + PRIMARY KEY (ID), + UNIQUE KEY unique_date (last_counter) + ) CHARSET=utf8" ); + + $create_visitor_table = ( " + CREATE TABLE {$wpdb->prefix}statistics_visitor ( + ID int(11) NOT NULL AUTO_INCREMENT, + last_counter date NOT NULL, + referred text NOT NULL, + agent varchar(255) NOT NULL, + platform varchar(255), + version varchar(255), + UAString varchar(255), + ip varchar(60) NOT NULL, + location varchar(10), + hits int(11), + honeypot int(11), + PRIMARY KEY (ID), + UNIQUE KEY date_ip_agent (last_counter,ip,agent(75),platform(75),version(75)), + KEY agent (agent), + KEY platform (platform), + KEY version (version), + KEY location (location) + ) CHARSET=utf8" ); + + $create_visitor_table_old = ( " + CREATE TABLE {$wpdb->prefix}statistics_visitor ( + ID int(11) NOT NULL AUTO_INCREMENT, + last_counter date NOT NULL, + referred text NOT NULL, + agent varchar(255) NOT NULL, + platform varchar(255), + version varchar(255), + UAString varchar(255), + ip varchar(60) NOT NULL, + location varchar(10), + hits int(11), + honeypot int(11), + PRIMARY KEY (ID), + UNIQUE KEY date_ip_agent (last_counter,ip,agent (75),platform (75),version (75)), + KEY agent (agent), + KEY platform (platform), + KEY version (version), + KEY location (location) + ) CHARSET=utf8" ); + + $create_exclusion_table = ( " + CREATE TABLE {$wpdb->prefix}statistics_exclusions ( + ID int(11) NOT NULL AUTO_INCREMENT, + date date NOT NULL, + reason varchar(255) DEFAULT NULL, + count bigint(20) NOT NULL, + PRIMARY KEY (ID), + KEY date (date), + KEY reason (reason) + ) CHARSET=utf8" ); + + $create_pages_table = ( " + CREATE TABLE {$wpdb->prefix}statistics_pages ( + uri varchar(255) NOT NULL, + type varchar(255) NOT NULL, + date date NOT NULL, + count int(11) NOT NULL, + id int(11) NOT NULL, + UNIQUE KEY date_2 (date,uri), + KEY url (uri), + KEY date (date), + KEY id (id), + KEY `uri` (`uri`,`count`,`id`) + ) CHARSET=utf8" ); + + $create_historical_table = ( " + CREATE TABLE {$wpdb->prefix}statistics_historical ( + ID bigint(20) NOT NULL AUTO_INCREMENT, + category varchar(25) NOT NULL, + page_id bigint(20) NOT NULL, + uri varchar(255) NOT NULL, + value bigint(20) NOT NULL, + PRIMARY KEY (ID), + KEY category (category), + UNIQUE KEY page_id (page_id), + UNIQUE KEY uri (uri) + ) CHARSET=utf8" ); + + $create_search_table = ( " + CREATE TABLE {$wpdb->prefix}statistics_search ( + ID bigint(20) NOT NULL AUTO_INCREMENT, + last_counter date NOT NULL, + engine varchar(64) NOT NULL, + host varchar(255), + words varchar(255), + visitor bigint(20), + PRIMARY KEY (ID), + KEY last_counter (last_counter), + KEY engine (engine), + KEY host (host) + ) CHARSET=utf8" ); + + // Check to see if the historical table exists yet, aka if this is a upgrade instead of a first install. + $result = $wpdb->query( "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_historical'" ); + + if ( $result == 1 ) { + // Before we update the historical table, check to see if it exists with the old keys + $result = $wpdb->query( "SHOW COLUMNS FROM {$wpdb->prefix}statistics_historical LIKE 'key'" ); + + if ( $result > 0 ) { + $wpdb->query( "ALTER TABLE `{$wpdb->prefix}statistics_historical` CHANGE `id` `page_id` bigint(20)" ); + $wpdb->query( "ALTER TABLE `{$wpdb->prefix}statistics_historical` CHANGE `key` `ID` bigint(20)" ); + $wpdb->query( "ALTER TABLE `{$wpdb->prefix}statistics_historical` CHANGE `type` `category` varchar(25)" ); + } + } + + // This includes the dbDelta function from WordPress. + if ( ! function_exists( 'dbDelta' ) ) { + require( ABSPATH . 'wp-admin/includes/upgrade.php' ); + } + + // Create/update the plugin tables. + dbDelta( $create_useronline_table ); + dbDelta( $create_visit_table ); + dbDelta( $create_visitor_table ); + dbDelta( $create_exclusion_table ); + dbDelta( $create_pages_table ); + dbDelta( $create_historical_table ); + dbDelta( $create_search_table ); + + // Some old versions (in the 5.0.x line) of MySQL have issue with the compound index on the visitor table + // so let's make sure it was created, if not, use the older format to create the table manually instead of + // using the dbDelta() call. + $result = $wpdb->query( "SHOW TABLES WHERE `Tables_in_{$wpdb->dbname}` = '{$wpdb->prefix}statistics_visitor'" ); + + if ( $result != 1 ) { + $wpdb->query( $create_visitor_table_old ); + } + + // Check to see if the date_ip index still exists, if so get rid of it. + $result = $wpdb->query( "SHOW INDEX FROM {$wpdb->prefix}statistics_visitor WHERE Key_name = 'date_ip'" ); + + // Note, the result will be the number of fields contained in the index. + if ( $result > 1 ) { + $wpdb->query( "DROP INDEX `date_ip` ON {$wpdb->prefix}statistics_visitor" ); + } + + // One final database change, drop the 'AString' column from visitors if it exists as it's a typo from an old version. + $result = $wpdb->query( "SHOW COLUMNS FROM {$wpdb->prefix}statistics_visitor LIKE 'AString'" ); + + if ( $result > 0 ) { + $wpdb->query( "ALTER TABLE `{$wpdb->prefix}statistics_visitor` DROP `AString`" ); + } + + //Added page_id column in statistics_pages if not exist + $result = $wpdb->query( "SHOW COLUMNS FROM {$wpdb->prefix}statistics_pages LIKE 'page_id'" ); + if ( $result == 0 ) { + $wpdb->query( "ALTER TABLE `{$wpdb->prefix}statistics_pages` ADD `page_id` BIGINT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`page_id`);" ); + } + + //Added User_id and Page_id in user online table + $result = $wpdb->query( "SHOW COLUMNS FROM {$wpdb->prefix}statistics_useronline LIKE 'user_id'" ); + if ( $result == 0 ) { + $wpdb->query( "ALTER TABLE `{$wpdb->prefix}statistics_useronline` ADD `user_id` BIGINT(48) NOT NULL AFTER `location`, ADD `page_id` BIGINT(48) NOT NULL AFTER `user_id`, ADD `type` VARCHAR(100) NOT NULL AFTER `page_id`;" ); + $wpdb->query( "DELETE FROM `{$wpdb->prefix}usermeta` WHERE `meta_key` = 'meta-box-order_toplevel_page_wps_overview_page';" ); + } + + // Store the new version information. + update_option( 'wp_statistics_plugin_version', WP_Statistics::$reg['version'] ); + update_option( 'wp_statistics_db_version', WP_Statistics::$reg['version'] ); + + // Now check to see what database updates may be required and record them for a user notice later. + $dbupdates = array( 'date_ip_agent' => false, 'unique_date' => false ); + + // Check the number of index's on the visitors table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query( "SHOW INDEX FROM {$wpdb->prefix}statistics_visitor WHERE Key_name = 'date_ip_agent'" ); + + // Note, the result will be the number of fields contained in the index, so in our case 5. + if ( $result != 5 ) { + $dbupdates['date_ip_agent'] = true; + } + + // Check the number of index's on the visits table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query( "SHOW INDEX FROM {$wpdb->prefix}statistics_visit WHERE Key_name = 'unique_date'" ); + + // Note, the result will be the number of fields contained in the index, so in our case 1. + if ( $result != 1 ) { + $dbupdates['unique_date'] = true; + } + + $WP_Statistics->update_option( 'pending_db_updates', $dbupdates ); + + $default_options = $WP_Statistics->Default_Options(); + + if ( WP_Statistics::$installed_version == false ) { + + // If this is a first time install, we just need to setup the primary values in the tables. + $WP_Statistics->Primary_Values(); + + // By default, on new installs, use the new search table. + $WP_Statistics->update_option( 'search_converted', 1 ); + + } else { + + // If this is an upgrade, we need to check to see if we need to convert anything from old to new formats. + // Check to see if the "new" settings code is in place or not, if not, upgrade the old settings to the new system. + if ( get_option( 'wp_statistics' ) === false ) { + $core_options = array( + 'wps_disable_map', + 'wps_map_location', + 'wps_google_coordinates', + 'wps_schedule_dbmaint', + 'wps_schedule_dbmaint_days', + 'wps_geoip', + 'wps_update_geoip', + 'wps_schedule_geoip', + 'wps_last_geoip_dl', + 'wps_auto_pop', + 'wps_useronline', + 'wps_check_online', + 'wps_visits', + 'wps_visitors', + 'wps_visitors_log', + 'wps_store_ua', + 'wps_coefficient', + 'wps_pages', + 'wps_track_all_pages', + 'wps_use_cache_plugin', + 'wps_geoip_city', + 'wps_disable_column', + 'wps_hit_post_metabox', + 'wps_menu_bar', + 'wps_hide_notices', + 'wps_chart_totals', + 'wps_stats_report', + 'wps_time_report', + 'wps_send_report', + 'wps_content_report', + 'wps_read_capability', + 'wps_manage_capability', + 'wps_record_exclusions', + 'wps_robotlist', + 'wps_exclude_ip', + 'wps_exclude_loginpage', + 'wps_exclude_adminpage', + ); + $var_options = array( 'wps_disable_se_%', 'wps_exclude_%' ); + $widget_options = array( + 'name_widget', + 'useronline_widget', + 'tvisit_widget', + 'tvisitor_widget', + 'yvisit_widget', + 'yvisitor_widget', + 'wvisit_widget', + 'mvisit_widget', + 'ysvisit_widget', + 'ttvisit_widget', + 'ttvisitor_widget', + 'tpviews_widget', + 'ser_widget', + 'select_se', + 'tp_widget', + 'tpg_widget', + 'tc_widget', + 'ts_widget', + 'tu_widget', + 'ap_widget', + 'ac_widget', + 'au_widget', + 'lpd_widget', + 'select_lps', + ); + + // Handle the core options, we're going to strip off the 'wps_' header as we store them in the new settings array. + foreach ( $core_options as $option ) { + $new_name = substr( $option, 4 ); + $WP_Statistics->store_option( $new_name, get_option( $option ) ); + delete_option( $option ); + } + + $widget = array(); + + // Handle the widget options, we're going to store them in a sub-array. + foreach ( $widget_options as $option ) { + $widget[ $option ] = get_option( $option ); + + delete_option( $option ); + } + + $WP_Statistics->store_option( 'widget', $widget ); + + foreach ( $var_options as $option ) { + // Handle the special variables options. + $result = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_name LIKE '{$option}'" ); + + foreach ( $result as $opt ) { + $new_name = substr( $opt->option_name, 4 ); + $WP_Statistics->store_option( $new_name, $opt->option_value ); + delete_option( $opt->option_name ); + } + } + + $WP_Statistics->save_options(); + } + + // If the robot list is empty, fill in the defaults. + $wps_temp_robotslist = $WP_Statistics->get_option( 'robotlist' ); + + if ( trim( $wps_temp_robotslist ) == "" || $WP_Statistics->get_option( 'force_robot_update' ) == true ) { + $WP_Statistics->update_option( 'robotlist', $default_options['robotlist'] ); + } + + // WP Statistics V4.2 and below automatically exclude the administrator for statistics collection + // newer versions allow the option to be set for any role in WordPress, however we should mimic + // 4.2 behaviour when we upgrade, so see if the option exists in the database and if not, set it. + // This will not work correctly on a WordPress install that has removed the administrator role. + // However that seems VERY unlikely. + $exclude_admins = $WP_Statistics->get_option( 'exclude_administrator', '2' ); + if ( $exclude_admins == '2' ) { + $WP_Statistics->update_option( 'exclude_administrator', '1' ); + } + + // WordPress 4.3 broke the diplay of the sidebar widget because it no longer accepted a null value + // to be returned from the widget update function, let's look to see if we need to update any + // occurances in the options table. + $widget_options = get_option( 'widget_wpstatistics_widget' ); + if ( is_array( $widget_options ) ) { + foreach ( $widget_options as $key => $value ) { + // We want to update all null array keys that are integers. + if ( $value === null && is_int( $key ) ) { + $widget_options[ $key ] = array(); + } + } + + // Store the widget options back to the database. + update_option( 'widget_wpstatistics_widget', $widget_options ); + } + } + + // We've already handled some of the default or need to do more logic checks on them so create a list to exclude from the next loop. + $excluded_defaults = array( 'force_robot_update', 'robot_list' ); + + // If this is a first time install or an upgrade and we've added options, set some intelligent defaults. + foreach ( $default_options as $key => $value ) { + if ( ! in_array( $key, $excluded_defaults ) && false === $WP_Statistics->get_option( $key ) ) { + $WP_Statistics->store_option( $key, $value ); + } + } + + if ( WP_Statistics::$installed_version == false ) { + // We now need to set the robot list to update during the next release. This is only done for new installs to ensure we don't overwrite existing custom robot lists. + $WP_Statistics->store_option( 'force_robot_update', true ); + } + + // Save the settings now that we've set them. + $WP_Statistics->save_options(); + + if ( $WP_Statistics->get_option( 'upgrade_report' ) == true ) { + $WP_Statistics->update_option( 'send_upgrade_email', true ); + } + + // Handle multi site implementations + if ( is_multisite() ) { + $current_blog = get_current_blog_id(); + + // Loop through each of the sites. + $sites = $WP_Statistics->get_wp_sites_list(); + foreach ( $sites as $blog_id ) { + + // Since we've just upgraded/installed the current blog, don't execute a remote call for us. + if ( $blog_id != $current_blog ) { + + // Get the admin url for the current site. + $url = get_admin_url( $blog_id ); + + // Go and visit the admin url of the site, this will rerun the install script for each site. + // We turn blocking off because we don't really care about the response so why wait for it. + wp_remote_request( $url, array( 'blocking' => false ) ); + } + } + } + } + } + + /** + * Setup Visitor RelationShip Table + */ + public static function setup_visitor_relationship_table() { + global $wpdb; + + $table_name = $wpdb->prefix . 'statistics_visitor_relationships'; + if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) != $table_name ) { + + // This includes the dbDelta function from WordPress. + if ( ! function_exists( 'dbDelta' ) ) { + require( ABSPATH . 'wp-admin/includes/upgrade.php' ); + } + + $create_visitor_relationships_table = + "CREATE TABLE IF NOT EXISTS $table_name ( + `ID` bigint(20) NOT NULL AUTO_INCREMENT, + `visitor_id` bigint(20) NOT NULL, + `page_id` bigint(20) NOT NULL, + `date` datetime NOT NULL, + PRIMARY KEY (ID), + KEY visitor_id (visitor_id), + KEY page_id (page_id) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8"; + + dbDelta( $create_visitor_relationships_table ); + } + } + + /** + * Update WordPress Page Type for older wp-statistics Version + * + * @since 12.6 + * + * -- List Methods --- + * _init_page_type_updater -> define WordPress Hook + * _get_require_number_update -> Get number of rows that require update page type + * _is_require_update_page -> Check Wp-statistics require update page table + * _get_page_type_by_obj -> Get Page Type by information + */ + public static function _init_page_type_updater() { + + # Check Require Admin Process + if ( self::_is_require_update_page() === true ) { + + # Add Admin Notice + add_action( 'admin_notices', function () { + echo '<div class="notice notice-info is-dismissible" id="wp-statistics-update-page-area" style="display: none;">'; + echo '<p style="margin-top: 17px; float:' . ( is_rtl() ? 'right' : 'left' ) . '">'; + echo __( 'WP-Statistics database requires upgrade.', 'wp-statistics' ); + echo '</p>'; + echo '<div style="float:' . ( is_rtl() ? 'left' : 'right' ) . '">'; + echo '<button type="button" id="wps-upgrade-db" class="button button-primary" style="padding: 20px;line-height: 0px;box-shadow: none !important;border: 0px !important;margin: 10px 0;"/>' . __( 'Upgrade Database', 'wp-statistics' ) . '</button>'; + echo '</div>'; + echo '<div style="clear:both;"></div>'; + echo '</div>'; + } ); + + # Add Script + add_action( 'admin_footer', function () { + ?> + <script> + jQuery(document).ready(function () { + + // Check Page is complete Loaded + jQuery(window).load(function () { + jQuery("#wp-statistics-update-page-area").fadeIn(2000); + jQuery("#wp-statistics-update-page-area button.notice-dismiss").hide(); + }); + + // Update Page type function + function wp_statistics_update_page_type() { + + //Complete Progress + let wps_end_progress = `<div id="wps_end_process" style="display:none;">`; + wps_end_progress += `<p>`; + wps_end_progress += `<?php _e( 'Database upgrade operation completed!', 'wp-statistics' ); ?>`; + wps_end_progress += `</p>`; + wps_end_progress += `</div>`; + wps_end_progress += `<button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button>`; + + //new Ajax Request + jQuery.ajax({ + url: ajaxurl, + type: 'get', + dataType: "json", + cache: false, + data: { + 'action': 'wp_statistics_update_post_type_db', + 'number_all': <?php echo self::_get_require_number_update(); ?> + }, + success: function (data) { + if (data.process_status === "complete") { + + // Get Process Area + let wps_notice_area = jQuery("#wp-statistics-update-page-area"); + //Add Html Content + wps_notice_area.html(wps_end_progress); + //Fade in content + jQuery("#wps_end_process").fadeIn(2000); + //enable demiss button + wps_notice_area.removeClass('notice-info').addClass('notice-success'); + } else { + + //Get number Process + jQuery("span#wps_num_page_process").html(data.number_process); + //Get process Percentage + jQuery("progress#wps_upgrade_html_progress").attr("value", data.percentage); + jQuery("span#wps_num_percentage").html(data.percentage); + //again request + wp_statistics_update_page_type(); + } + }, + error: function () { + jQuery("#wp-statistics-update-page-area").html('<p><?php _e( 'Error occurred during operation. Please refresh the page.', 'wp-statistics' ); ?></p>'); + } + }); + } + + //Click Start Progress + jQuery(document).on('click', 'button#wps-upgrade-db', function (e) { + e.preventDefault(); + + // Added Progress Html + let wps_progress = `<div id="wps_process_upgrade" style="display:none;"><p>`; + wps_progress += `<?php _e( 'Please don\'t close the browser window until the database operation was completed.', 'wp-statistic' ); ?>`; + wps_progress += `</p><p><b>`; + wps_progress += `<?php echo __( 'Item processed', 'wp-statistics' ); ?>`; + wps_progress += ` : <span id="wps_num_page_process">0</span> / <?php echo number_format( self::_get_require_number_update() ); ?>  <span class="wps-text-warning">(<span id="wps_num_percentage">0</span>%)</span></b></p>`; + wps_progress += '<p><progress id="wps_upgrade_html_progress" value="0" max="100" style="height: 20px;width: 100%;"></progress></p></div>'; + + // set new Content + jQuery("#wp-statistics-update-page-area").html(wps_progress); + jQuery("#wps_process_upgrade").fadeIn(2000); + + // Run WordPress Ajax Updator + wp_statistics_update_page_type(); + }); + + //Remove Notice event + jQuery(document).on('click', '#wp-statistics-update-page-area button.notice-dismiss', function (e) { + e.preventDefault(); + jQuery("#wp-statistics-update-page-area").fadeOut('normal'); + }); + }); + </script> + <?php + } ); + + } + + # Add Admin Ajax Process + add_action( 'wp_ajax_wp_statistics_update_post_type_db', function () { + global $wpdb; + + # Create Default Obj + $return = array( 'process_status' => 'complete', 'number_process' => 0, 'percentage' => 0 ); + + # Check is Ajax WordPress + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { + + # Check Status Of Process + if ( self::_is_require_update_page() === true ) { + + # Number Process Per Query + $number_per_query = 80; + + # Check Number Process + $number_process = self::_get_require_number_update(); + $i = 0; + if ( $number_process > 0 ) { + + # Start Query + $query = $wpdb->get_results( "SELECT * FROM `" . wp_statistics_db_table( 'pages' ) . "` WHERE `type` = '' ORDER BY `page_id` DESC LIMIT 0,{$number_per_query}", ARRAY_A ); + foreach ( $query as $row ) { + + # Get Page Type + $page_type = self::_get_page_type_by_obj( $row['id'], $row['uri'] ); + + # Update Table + $wpdb->update( + wp_statistics_db_table( 'pages' ), + array( + 'type' => $page_type + ), + array( 'page_id' => $row['page_id'] ) + ); + + $i ++; + } + + if ( $_GET['number_all'] > $number_per_query ) { + # calculate number process + $return['number_process'] = $_GET['number_all'] - ( $number_process - $i ); + + # Calculate Per + $return['percentage'] = round( ( $return['number_process'] / $_GET['number_all'] ) * 100 ); + + # Set Process + $return['process_status'] = 'incomplete'; + + } else { + + $return['number_process'] = $_GET['number_all']; + $return['percentage'] = 100; + update_option( 'wp_statistics_update_page_type', 'yes' ); + } + } + } else { + + # Closed Process + update_option( 'wp_statistics_update_page_type', 'yes' ); + } + + # Export Data + wp_send_json( $return ); + exit; + } + } ); + + + } + + public static function _get_require_number_update() { + global $wpdb; + return $wpdb->get_var( "SELECT COUNT(*) FROM `" . wp_statistics_db_table( 'pages' ) . "` WHERE `type` = ''" ); + } + + public static function _is_require_update_page() { + + # require update option name + $opt_name = 'wp_statistics_update_page_type'; + + # Check exist option + $get_opt = get_option( $opt_name ); + if ( ! empty( $get_opt ) ) { + return false; + } + + # Check number require row + if ( self::_get_require_number_update() > 0 ) { + return true; + } + + return false; + } + + public static function _get_page_type_by_obj( $obj_ID, $page_url ) { + + //Default page type + $page_type = 'unknown'; + + //check if Home Page + if ( $page_url == "/" ) { + return 'home'; + + } else { + + // Page url + $page_url = ltrim( $page_url, "/" ); + $page_url = trim( get_bloginfo( 'url' ), "/" ) . "/" . $page_url; + + // Check Page Path is exist + $exist_page = url_to_postid( $page_url ); + + //Check Post Exist + if ( $exist_page > 0 ) { + + # Get Post Type + $p_type = get_post_type( $exist_page ); + + # Check Post Type + if ( $p_type == "product" ) { + $page_type = 'product'; + } elseif ( $p_type == "page" ) { + $page_type = 'page'; + } elseif ( $p_type == "attachment" ) { + $page_type = 'attachment'; + } else { + $page_type = 'post'; + } + + } else { + + # Check is Term + $term = get_term( $obj_ID ); + if ( is_wp_error( get_term_link( $term ) ) === true ) { + //Don't Stuff + } else { + //Which Taxonomy + $taxonomy = $term->taxonomy; + + //Check Url is contain + $term_link = get_term_link( $term ); + $term_link = ltrim( str_ireplace( get_bloginfo( 'url' ), "", $term_link ), "/" ); + if ( stristr( $page_url, $term_link ) === false ) { + //Return Unknown + } else { + //Check Type of taxonomy + if ( $taxonomy == "category" ) { + $page_type = 'category'; + } elseif ( $taxonomy == "post_tag" ) { + $page_type = 'post_tag'; + } else { + $page_type = 'tax'; + } + } + + } + } + } + + return $page_type; + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-network-admin.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-network-admin.php new file mode 100644 index 0000000..f82c776 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-network-admin.php @@ -0,0 +1,127 @@ +<?php + +/** + * Class WP_Statistics_Network_Admin + */ +class WP_Statistics_Network_Admin { + + /** + * This function adds the primary menu to WordPress network. + */ + static function menu() { + global $WP_Statistics; + + // Get the read/write capabilities required to view/manage the plugin as set by the user. + $read_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'read_capability', 'manage_options' ) ); + $manage_cap = wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ); + + // Add the top level menu. + add_menu_page( __( 'Statistics', 'wp-statistics' ), __( 'Statistics', 'wp-statistics' ), $read_cap, WP_Statistics::$reg['main-file'], 'WP_Statistics_Network_Admin::overview', 'dashicons-chart-pie' ); + + // Add the sub items. + add_submenu_page( WP_Statistics::$reg['main-file'], __( 'Overview', 'wp-statistics' ), __( 'Overview', 'wp-statistics' ), $read_cap, WP_Statistics::$reg['main-file'], 'WP_Statistics_Network_Admin::overview' ); + + $count = 0; + $sites = $WP_Statistics->get_wp_sites_list(); + + foreach ( $sites as $blog_id ) { + $details = get_blog_details( $blog_id ); + add_submenu_page( WP_Statistics::$reg['main-file'], $details->blogname, $details->blogname, $manage_cap, 'wp_statistics_blogid_' . $blog_id, 'WP_Statistics_Network_Admin::goto_blog' ); + + $count ++; + if ( $count > 15 ) { + break; + } + } + } + + /** + * Network Overview + */ + static function overview() { + global $WP_Statistics; + ?> + <div id="wrap wps-wrap"> + <br/> + <table class="widefat wp-list-table" style="width: auto;"> + <thead> + <tr> + <th style='text-align: left'><?php _e( 'Site', 'wp-statistics' ); ?></th> + <th style='text-align: left'><?php _e( 'Options', 'wp-statistics' ); ?></th> + </tr> + </thead> + <tbody> + <?php + $i = 0; + + $options = array( + __( 'Overview', 'wp-statistics' ) => WP_Statistics::$page['overview'], + __( 'Hits', 'wp-statistics' ) => WP_Statistics::$page['hits'], + __( 'Online', 'wp-statistics' ) => WP_Statistics::$page['online'], + __( 'Referrers', 'wp-statistics' ) => WP_Statistics::$page['referrers'], + __( 'Search Words', 'wp-statistics' ) => WP_Statistics::$page['words'], + __( 'Searches', 'wp-statistics' ) => WP_Statistics::$page['searches'], + __( 'Pages', 'wp-statistics' ) => WP_Statistics::$page['pages'], + __( 'Visitors', 'wp-statistics' ) => WP_Statistics::$page['visitors'], + __( 'Countries', 'wp-statistics' ) => WP_Statistics::$page['countries'], + __( 'Browsers', 'wp-statistics' ) => WP_Statistics::$page['browser'], + __( 'Top Visitors Today', 'wp-statistics' ) => WP_Statistics::$page['top-visitors'], + __( 'Exclusions', 'wp-statistics' ) => WP_Statistics::$page['exclusions'], + __( 'Optimization', 'wp-statistics' ) => WP_Statistics::$page['optimization'], + __( 'Settings', 'wp-statistics' ) => WP_Statistics::$page['settings'], + ); + + $sites = $WP_Statistics->get_wp_sites_list(); + + foreach ( $sites as $blog_id ) { + $details = get_blog_details( $blog_id ); + $url = get_admin_url( $blog_id, '/' ) . 'admin.php?page='; + $alternate = ''; + + if ( $i % 2 == 0 ) { + $alternate = ' class="alternate"'; + } + ?> + + <tr<?php echo $alternate; ?>> + <td style='text-align: left'> + <?php echo $details->blogname; ?> + </td> + <td style='text-align: left'> + <?php + $options_len = count( $options ); + $j = 0; + + foreach ( $options as $key => $value ) { + echo '<a href="' . $url . $value . '">' . $key . '</a>'; + $j ++; + if ( $j < $options_len ) { + echo ' - '; + } + } + ?> + </td> + </tr> + <?php + $i ++; + } + ?> + </tbody> + </table> + </div> + <?php + } + + /** + * Goto Network Blog + */ + static function goto_blog() { + global $plugin_page; + + $blog_id = str_replace( 'wp_statistics_blogid_', '', $plugin_page ); + // Get the admin url for the current site. + $url = get_admin_url( $blog_id ) . '/admin.php?page=' . WP_Statistics::$page['overview']; + echo "<script>window.location.href = '$url';</script>"; + } + +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-rest.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-rest.php new file mode 100644 index 0000000..4632a5f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-rest.php @@ -0,0 +1,156 @@ +<?php + +/** + * Class WP_Statistics_Rest + */ +class WP_Statistics_Rest { + + // Set Default namespace + const route = 'wpstatistics/v1'; + + // Set Default Statistic Save method + const func = 'hit'; + + // Set Default Name + const _Argument = 'wp_statistics_hit_rest'; + + /** + * Setup an Wordpress REst Api action. + */ + public function __construct() { + global $WP_Statistics; + + /* + * add Router Rest Api + */ + if ( isset( $WP_Statistics ) and $WP_Statistics->use_cache ) { + add_action( 'rest_api_init', array( $this, 'register_routes' ) ); + } + } + + /** + * List Of Required Params + * + * @return array + */ + public static function require_params_hit() { + return array( + 'browser', + 'platform', + 'version', + 'ip', + 'track_all', + 'timestamp', + 'page_uri', + 'user_id', + ); + } + + /* + * Add Endpoint Route + */ + public function register_routes() { + + // Create Require Params + $params = array(); + foreach ( self::require_params_hit() as $p ) { + $params[ $p ] = array( 'required' => true ); + } + + // Get Hit + register_rest_route( self::route, '/' . self::func, array( + 'methods' => \WP_REST_Server::READABLE, + 'permission_callback' => function () { + global $WP_Statistics; + return ( $WP_Statistics->get_option( 'use_cache_plugin' ) == 1 ? true : false ); + }, + 'callback' => array( $this, 'hit' ), + 'args' => array_merge( + array( '_wpnonce' => array( + 'required' => true, + 'validate_callback' => function ( $value ) { + return wp_verify_nonce( $value, 'wp_rest' ); + } + ) ), $params ) + ) ); + } + + /* + * Wp Statistic Hit Save + */ + public function hit() { + global $WP_Statistics; + + /* + * Check Is Test Service Request + */ + if ( isset( $_REQUEST['rest-api-wp-statistics'] ) ) { + return array( "rest-api-wp-statistics" => "OK" ); + } + + // Check Isset global + if ( ! is_object( $WP_Statistics ) ) { + return; + } + + $h = new WP_Statistics_GEO_IP_Hits; + + // Call the online users tracking code. + if ( $WP_Statistics->get_option( 'useronline' ) ) { + $h->Check_online(); + } + + // Call the visitor tracking code. + if ( $WP_Statistics->get_option( 'visitors' ) ) { + $h->Visitors(); + } + + // Call the visit tracking code. + if ( $WP_Statistics->get_option( 'visits' ) ) { + $h->Visits(); + } + + // Call the page tracking code. + if ( $WP_Statistics->get_option( 'pages' ) ) { + $h->Pages(); + } + + // Set Return + return new \WP_REST_Response( array( 'status' => true, 'message' => __( 'Visitor Hit was recorded successfully.', 'wp-statistics' ) ) ); + } + + /* + * Check is Rest Request + */ + static public function is_rest() { + global $WP_Statistics; + + if ( isset( $WP_Statistics ) and defined( 'REST_REQUEST' ) && REST_REQUEST and $WP_Statistics->use_cache ) { + if ( isset( $_REQUEST[ self::_Argument ] ) ) { + return true; + } + } + + return false; + } + + /* + * Get Params Request + */ + static public function params( $params ) { + if ( defined( 'REST_REQUEST' ) && REST_REQUEST and isset( $_REQUEST[ self::_Argument ] ) ) { + $data = array(); + foreach ( $_REQUEST as $key => $value ) { + if ( ! in_array( $key, array( '_', '_wpnonce' ) ) ) { + $data[ $key ] = trim( $value ); + } + } + + if ( isset( $data[ $params ] ) ) { + return $data[ $params ]; + } + } + + return false; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-schedule.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-schedule.php new file mode 100644 index 0000000..31c0ab1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-schedule.php @@ -0,0 +1,251 @@ +<?php + +/** + * Class WP_Statistics_Schedule + */ +class WP_Statistics_Schedule { + + /** + * WP_Statistics_Schedule constructor. + * + * @param $WP_Statistics + */ + function __construct() { + global $WP_Statistics; + + // before construct + add_filter( 'cron_schedules', 'WP_Statistics_Schedule::addcron' ); + + //Run This Method Only Admin Area + if ( is_admin() ) { + + //Disable Run to Ajax + if ( ! wp_doing_ajax() ) { + + // Add the GeoIP update schedule if it doesn't exist and it should be. + if ( ! wp_next_scheduled( 'wp_statistics_geoip_hook' ) && $WP_Statistics->get_option( 'schedule_geoip' ) && $WP_Statistics->get_option( 'geoip' ) ) { + wp_schedule_event( time(), 'daily', 'wp_statistics_geoip_hook' ); + } + + // Remove the GeoIP update schedule if it does exist and it should shouldn't. + if ( wp_next_scheduled( 'wp_statistics_geoip_hook' ) && ( ! $WP_Statistics->get_option( 'schedule_geoip' ) || ! $WP_Statistics->get_option( 'geoip' ) ) ) { + wp_unschedule_event( wp_next_scheduled( 'wp_statistics_geoip_hook' ), 'wp_statistics_geoip_hook' ); + } + + //Construct Event + add_action( 'wp_statistics_geoip_hook', array( $this, 'geoip_event' ) ); + } + + } else { + + // Add the report schedule if it doesn't exist and is enabled. + if ( ! wp_next_scheduled( 'report_hook' ) && $WP_Statistics->get_option( 'stats_report' ) ) { + wp_schedule_event( time(), $WP_Statistics->get_option( 'time_report' ), 'report_hook' ); + } + + // Remove the report schedule if it does exist and is disabled. + if ( wp_next_scheduled( 'report_hook' ) && ! $WP_Statistics->get_option( 'stats_report' ) ) { + wp_unschedule_event( wp_next_scheduled( 'report_hook' ), 'report_hook' ); + } + + // Add the referrerspam update schedule if it doesn't exist and it should be. + if ( ! wp_next_scheduled( 'wp_statistics_referrerspam_hook' ) && $WP_Statistics->get_option( 'schedule_referrerspam' ) ) { + wp_schedule_event( time(), 'weekly', 'wp_statistics_referrerspam_hook' ); + } + + // Remove the referrerspam update schedule if it does exist and it should shouldn't. + if ( wp_next_scheduled( 'wp_statistics_referrerspam_hook' ) && ! $WP_Statistics->get_option( 'schedule_referrerspam' ) ) { + wp_unschedule_event( wp_next_scheduled( 'wp_statistics_referrerspam_hook' ), 'wp_statistics_referrerspam_hook' ); + } + + // Add the database maintenance schedule if it doesn't exist and it should be. + if ( ! wp_next_scheduled( 'wp_statistics_dbmaint_hook' ) && $WP_Statistics->get_option( 'schedule_dbmaint' ) ) { + wp_schedule_event( time(), 'daily', 'wp_statistics_dbmaint_hook' ); + } + + // Remove the database maintenance schedule if it does exist and it shouldn't. + if ( wp_next_scheduled( 'wp_statistics_dbmaint_hook' ) && ( ! $WP_Statistics->get_option( 'schedule_dbmaint' ) ) ) { + wp_unschedule_event( wp_next_scheduled( 'wp_statistics_dbmaint_hook' ), 'wp_statistics_dbmaint_hook' ); + } + + // Add the visitor database maintenance schedule if it doesn't exist and it should be. + if ( ! wp_next_scheduled( 'wp_statistics_dbmaint_visitor_hook' ) && $WP_Statistics->get_option( 'schedule_dbmaint_visitor' ) ) { + wp_schedule_event( time(), 'daily', 'wp_statistics_dbmaint_visitor_hook' ); + } + + // Remove the visitor database maintenance schedule if it does exist and it shouldn't. + if ( wp_next_scheduled( 'wp_statistics_dbmaint_visitor_hook' ) && ( ! $WP_Statistics->get_option( 'schedule_dbmaint_visitor' ) ) ) { + wp_unschedule_event( wp_next_scheduled( 'wp_statistics_dbmaint_visitor_hook' ), 'wp_statistics_dbmaint_visitor_hook' ); + } + + // Remove the add visit row schedule if it does exist and it shouldn't. + if ( wp_next_scheduled( 'wp_statistics_add_visit_hook' ) && ( ! $WP_Statistics->get_option( 'visits' ) ) ) { + wp_unschedule_event( wp_next_scheduled( 'wp_statistics_add_visit_hook' ), 'wp_statistics_add_visit_hook' ); + } + + // Add the add visit table row schedule if it does exist and it should. + if ( ! wp_next_scheduled( 'wp_statistics_add_visit_hook' ) && $WP_Statistics->get_option( 'visits' ) ) { + wp_schedule_event( time(), 'daily', 'wp_statistics_add_visit_hook' ); + } + + //after construct + add_action( 'wp_statistics_add_visit_hook', array( $this, 'add_visit_event' ) ); + add_action( 'wp_statistics_dbmaint_hook', array( $this, 'dbmaint_event' ) ); + add_action( 'wp_statistics_dbmaint_visitor_hook', array( $this, 'dbmaint_visitor_event' ) ); + add_action( 'report_hook', array( $this, 'send_report' ) ); + } + + } + + /** + * @param array $schedules + * @return mixed + */ + static function addcron( $schedules ) { + // Adds once weekly to the existing schedules. + if ( ! array_key_exists( 'weekly', $schedules ) ) { + $schedules['weekly'] = array( + 'interval' => 604800, + 'display' => __( 'Once Weekly' ), + ); + } + + if ( ! array_key_exists( 'biweekly', $schedules ) ) { + $schedules['biweekly'] = array( + 'interval' => 1209600, + 'display' => __( 'Once Every 2 Weeks' ), + ); + } + + if ( ! array_key_exists( '4weeks', $schedules ) ) { + $schedules['4weeks'] = array( + 'interval' => 2419200, + 'display' => __( 'Once Every 4 Weeks' ), + ); + } + + return $schedules; + } + + + /** + * adds a record for tomorrow to the visit table to avoid a race condition. + * + */ + public function add_visit_event() { + global $wpdb, $WP_Statistics; + + $wpdb->insert( + $wpdb->prefix . 'statistics_visit', + array( + 'last_visit' => $WP_Statistics->Current_Date( null, '+1' ), + 'last_counter' => $WP_Statistics->Current_date( 'Y-m-d', '+1' ), + 'visit' => 0, + ), + array( '%s', '%s', '%d' ) + ); + } + + /** + * Updates the GeoIP database from MaxMind. + */ + public function geoip_event() { + global $WP_Statistics; + + // Maxmind updates the geoip database on the first Tuesday of the month, to make sure we don't update before they post + // the update, download it two days later. + $thisupdate = strtotime( __( 'First Tuesday of this month', 'wp-statistics' ) ) + ( 86400 * 2 ); + + $lastupdate = $WP_Statistics->get_option( 'last_geoip_dl' ); + + $upload_dir = wp_upload_dir(); + + // We're also going to look to see if our filesize is to small, this means the plugin stub still exists and should + // be replaced with a proper file. + $is_require_update = false; + foreach ( WP_Statistics_Updates::$geoip as $geoip_name => $geoip_array ) { + $file_path = $upload_dir['basedir'] . '/wp-statistics/' . WP_Statistics_Updates::$geoip[ $geoip_name ]['file'] . '.mmdb'; + if ( file_exists( $file_path ) ) { + if ( $lastupdate < $thisupdate ) { + $is_require_update = true; + } + } + } + + + if ( $is_require_update === true ) { + + // We can't fire the download function directly here as we rely on some functions that haven't been loaded yet + // in WordPress, so instead just set the flag in the options table and the shutdown hook will take care of the + // actual download at the end of the page. + $WP_Statistics->update_option( 'update_geoip', true ); + } + } + + /** + * Purges old records on a schedule based on age. + */ + public function dbmaint_event() { + global $WP_Statistics; + if ( ! function_exists( 'wp_statistics_purge_data' ) ) { + require( WP_Statistics::$reg['plugin-dir'] . 'includes/functions/purge.php' ); + } + $purge_days = intval( $WP_Statistics->get_option( 'schedule_dbmaint_days', false ) ); + wp_statistics_purge_data( $purge_days ); + } + + /** + * Purges visitors with more than a defined number of hits in a day. + */ + public function dbmaint_visitor_event() { + global $WP_Statistics; + if ( ! function_exists( 'wp_statistics_purge_visitor_hits' ) ) { + require( WP_Statistics::$reg['plugin-dir'] . 'includes/functions/purge-hits.php' ); + } + $purge_hits = intval( $WP_Statistics->get_option( 'schedule_dbmaint_visitor_hits', false ) ); + wp_statistics_purge_visitor_hits( $purge_hits ); + } + + /** + * Sends the statistics report to the selected users. + */ + public function send_report() { + global $WP_Statistics, $sms; + + // Retrieve the template from the options. + $final_text_report = $WP_Statistics->get_option( 'content_report' ); + + // Process shortcodes in the template. Note that V8.0 upgrade script replaced the old %option% codes with the appropriate short codes. + $final_text_report = do_shortcode( $final_text_report ); + $final_text_report = apply_filters( 'wp_statistics_final_text_report_email', $final_text_report ); + + // Send the report through the selected transport agent. + if ( $WP_Statistics->get_option( 'send_report' ) == 'mail' ) { + + $blogname = get_bloginfo( 'name' ); + $blogemail = get_bloginfo( 'admin_email' ); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if ( $WP_Statistics->get_option( 'email_list' ) == '' ) { + $WP_Statistics->update_option( 'email_list', $blogemail ); + } + + wp_mail( $WP_Statistics->get_option( 'email_list' ), __( 'Statistical reporting', 'wp-statistics' ), $final_text_report, $headers ); + + } else if ( $WP_Statistics->get_option( 'send_report' ) == 'sms' ) { + + if ( class_exists( get_option( 'wp_webservice' ) ) ) { + + $sms->to = array( get_option( 'wp_admin_mobile' ) ); + $sms->msg = $final_text_report; + $sms->SendSMS(); + } + + } + } + + +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-shortcode.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-shortcode.php new file mode 100644 index 0000000..184a465 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-shortcode.php @@ -0,0 +1,223 @@ +<?php + +/** + * Class WP_Statistics_Shortcode + */ +class WP_Statistics_Shortcode { + + /** + * @param $atts + * + * WP-Statistics shortcode is in the format of: + * [wpstatistics stat=xxx time=xxxx provider=xxxx format=xxxxxx id=xxx] + * Where: + * stat = the statistic you want. + * time = is the timeframe, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate + * it. provider = the search provider to get stats on. format = i18n, english, none. id = the page/post id to get + * stats on. + * + * @return array|false|int|null|object|string|void + */ + static function shortcodes( $atts ) { + + if ( ! is_array( $atts ) ) { + return; + } + if ( ! array_key_exists( 'stat', $atts ) ) { + return; + } + + if ( ! array_key_exists( 'time', $atts ) ) { + $atts['time'] = null; + } + if ( ! array_key_exists( 'provider', $atts ) ) { + $atts['provider'] = 'all'; + } + if ( ! array_key_exists( 'format', $atts ) ) { + $atts['format'] = null; + } + if ( ! array_key_exists( 'id', $atts ) ) { + $atts['id'] = - 1; + } + + $formatnumber = array_key_exists( 'format', $atts ); + + switch ( $atts['stat'] ) { + case 'usersonline': + $result = wp_statistics_useronline(); + break; + + case 'visits': + $result = wp_statistics_visit( $atts['time'] ); + break; + + case 'visitors': + $result = wp_statistics_visitor( $atts['time'], null, true ); + break; + + case 'pagevisits': + $result = wp_statistics_pages( $atts['time'], null, $atts['id'] ); + break; + + case 'searches': + $result = wp_statistics_searchengine( $atts['provider'], $atts['time'] ); + break; + + case 'referrer': + $result = wp_statistics_referrer( $atts['time'] ); + break; + + case 'postcount': + $result = wp_statistics_countposts(); + break; + + case 'pagecount': + $result = wp_statistics_countpages(); + break; + + case 'commentcount': + $result = wp_statistics_countcomment(); + break; + + case 'spamcount': + $result = wp_statistics_countspam(); + break; + + case 'usercount': + $result = wp_statistics_countusers(); + break; + + case 'postaverage': + $result = wp_statistics_average_post(); + break; + + case 'commentaverage': + $result = wp_statistics_average_comment(); + break; + + case 'useraverage': + $result = wp_statistics_average_registeruser(); + break; + + case 'lpd': + $result = wp_statistics_lastpostdate(); + $formatnumber = false; + break; + } + + if ( $formatnumber ) { + switch ( strtolower( $atts['format'] ) ) { + case 'i18n': + $result = number_format_i18n( $result ); + + break; + case 'english': + $result = number_format( $result ); + + break; + } + } + + return $result; + } + + /** + * + */ + static function shortcake() { + // ShortCake support if loaded. + if ( function_exists( 'shortcode_ui_register_for_shortcode' ) ) { + $se_list = wp_statistics_searchengine_list(); + + $se_options = array( '' => 'None' ); + + foreach ( $se_list as $se ) { + $se_options[ $se['tag'] ] = $se['translated']; + } + + shortcode_ui_register_for_shortcode( + 'wpstatistics', + array( + + // Display label. String. Required. + 'label' => 'WP Statistics', + + // Icon/image for shortcode. Optional. src or dashicons-$icon. Defaults to carrot. + 'listItemImage' => '<img src="' . + WP_Statistics::$reg['plugin-url'] . + 'assets/images/logo-250.png" width="128" height="128">', + + // Available shortcode attributes and default values. Required. Array. + // Attribute model expects 'attr', 'type' and 'label' + // Supported field types: text, checkbox, textarea, radio, select, email, url, number, and date. + 'attrs' => array( + array( + 'label' => __( 'Statistic', 'wp-statistics' ), + 'attr' => 'stat', + 'type' => 'select', + 'description' => __( 'Select the statistic you wish to display.', 'wp-statistics' ), + 'value' => 'usersonline', + 'options' => array( + 'usersonline' => __( 'Online Users', 'wp-statistics' ), + 'visits' => __( 'Visits', 'wp-statistics' ), + 'visitors' => __( 'Visitors', 'wp-statistics' ), + 'pagevisits' => __( 'Page Visits', 'wp-statistics' ), + 'searches' => __( 'Searches', 'wp-statistics' ), + 'postcount' => __( 'Post Count', 'wp-statistics' ), + 'pagecount' => __( 'Page Count', 'wp-statistics' ), + 'commentcount' => __( 'Comment Count', 'wp-statistics' ), + 'spamcount' => __( 'Spam Count', 'wp-statistics' ), + 'usercount' => __( 'User Count', 'wp-statistics' ), + 'postaverage' => __( 'Post Average', 'wp-statistics' ), + 'commentaverage' => __( 'Comment Average', 'wp-statistics' ), + 'useraverage' => __( 'User Average', 'wp-statistics' ), + 'lpd' => __( 'Last Post Date', 'wp-statistics' ), + 'referrer' => __( 'Referrer', 'wp-statistics' ), + ), + ), + array( + 'label' => __( 'Time Frame', 'wp-statistics' ), + 'attr' => 'time', + 'type' => 'url', + 'description' => __( + 'The time frame to get the statistic for, strtotime() (http://php.net/manual/en/datetime.formats.php) will be used to calculate it. Use "total" to get all recorded dates.', + 'wp-statistics' + ), + 'meta' => array( 'size' => '10' ), + ), + array( + 'label' => __( 'Search Provider', 'wp-statistics' ), + 'attr' => 'provider', + 'type' => 'select', + 'description' => __( 'The search provider to get statistics on.', 'wp-statistics' ), + 'options' => $se_options, + ), + array( + 'label' => __( 'Number Format', 'wp-statistics' ), + 'attr' => 'format', + 'type' => 'select', + 'description' => __( + 'The format to display numbers in: i18n, english, none.', + 'wp-statistics' + ), + 'value' => 'none', + 'options' => array( + 'none' => __( 'None', 'wp-statistics' ), + 'english' => __( 'English', 'wp-statistics' ), + 'i18n' => __( 'International', 'wp-statistics' ), + ), + ), + array( + 'label' => __( 'Post/Page ID', 'wp-statistics' ), + 'attr' => 'id', + 'type' => 'number', + 'description' => __( 'The post/page ID to get page statistics on.', 'wp-statistics' ), + 'meta' => array( 'size' => '5' ), + ), + ), + ) + ); + } + + } +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-tinymce.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-tinymce.php new file mode 100644 index 0000000..e6150f9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-tinymce.php @@ -0,0 +1,150 @@ +<?php + +/** + * Class WP_Statistics_TinyMCE + */ +class WP_Statistics_TinyMCE { + + /** + * Setup an TinyMCE action to close the notice on the overview page. + */ + public function __construct() { + // Add Filter TinyMce Editor + add_action( 'admin_head', array( $this, 'wp_statistic_add_my_tc_button' ) ); + + //Load Text Widget Button + add_action( 'admin_enqueue_scripts', array( $this, 'load_tinymcejs_widget_wp_admin_style' ) ); + + // Add TextLang + add_action( 'admin_footer-widgets.php', array( $this, 'my_post_edit_page_footer' ), 999 ); + } + + /* + * Language List Text Domain + */ + static public function lang() { + if ( ! class_exists( '_WP_Editors' ) ) { + require( ABSPATH . WPINC . '/class-wp-editor.php' ); + } + + $strings = array( + 'insert' => __( 'WP Statistics Shortcodes', 'wp-statistics' ), + 'stat' => __( 'Stat', 'wp-statistics' ), + 'usersonline' => __( 'Online Users', 'wp-statistics' ), + 'visits' => __( 'Visits', 'wp-statistics' ), + 'visitors' => __( 'Visitors', 'wp-statistics' ), + 'pagevisits' => __( 'Page Visits', 'wp-statistics' ), + 'searches' => __( 'Searches', 'wp-statistics' ), + 'postcount' => __( 'Post Count', 'wp-statistics' ), + 'pagecount' => __( 'Page Count', 'wp-statistics' ), + 'commentcount' => __( 'Comment Count', 'wp-statistics' ), + 'spamcount' => __( 'Spam Count', 'wp-statistics' ), + 'usercount' => __( 'User Count', 'wp-statistics' ), + 'postaverage' => __( 'Post Average', 'wp-statistics' ), + 'commentaverage' => __( 'Comment Average', 'wp-statistics' ), + 'useraverage' => __( 'User Average', 'wp-statistics' ), + 'lpd' => __( 'Last Post Date', 'wp-statistics' ), + 'referrer' => __( 'Referrer', 'wp-statistics' ), + 'help_stat' => __( 'The statistics you want, see the next table for available options.', 'wp-statistics' ), + 'time' => __( 'Time', 'wp-statistics' ), + 'se' => __( 'Select item ...', 'wp-statistics' ), + 'today' => __( 'Today', 'wp-statistics' ), + 'yesterday' => __( 'Yesterday', 'wp-statistics' ), + 'week' => __( 'Week', 'wp-statistics' ), + 'month' => __( 'Month', 'wp-statistics' ), + 'year' => __( 'Year', 'wp-statistics' ), + 'total' => __( 'Total', 'wp-statistics' ), + 'help_time' => __( 'Is the time frame (time periods) for the statistic', 'wp-statistics' ), + 'provider' => __( 'Provider', 'wp-statistics' ), + 'help_provider' => __( 'The search provider to get statistics on.', 'wp-statistics' ), + 'format' => __( 'Format', 'wp-statistics' ), + 'help_format' => __( 'The format to display numbers in: i18n, english, none.', 'wp-statistics' ), + 'id' => __( 'ID', 'wp-statistics' ), + 'help_id' => __( 'The post/page ID to get page statistics on.', 'wp-statistics' ), + ); + + $locale = _WP_Editors::$mce_locale; + $translated = 'tinyMCE.addI18n("' . $locale . '.wp_statistic_tinymce_plugin", ' . json_encode( $strings ) . ");\n"; + + return array( 'locale' => $locale, 'translate' => $translated ); + } + + /* + * Add Filter TinyMCE + */ + public function wp_statistic_add_my_tc_button() { + global $typenow; + + // check user permissions + if ( ! current_user_can( 'edit_posts' ) && ! current_user_can( 'edit_pages' ) ) { + return; + } + + // verify the post type + if ( ! in_array( $typenow, array( 'post', 'page' ) ) ) { + return; + } + + // check if WYSIWYG is enabled + if ( get_user_option( 'rich_editing' ) == 'true' ) { + add_filter( "mce_external_plugins", array( $this, 'wp_statistic_add_tinymce_plugin' ) ); + add_filter( 'mce_buttons', array( $this, 'wp_statistic_register_my_tc_button' ) ); + add_filter( 'mce_external_languages', array( $this, 'wp_statistic_tinymce_plugin_add_locale' ) ); + } + } + + /* + * Add Js Bottun to Editor + */ + public function wp_statistic_add_tinymce_plugin( $plugin_array ) { + $plugin_array['wp_statistic_tc_button'] = WP_Statistics::$reg['plugin-url'] . 'assets/js/tinymce.js'; + + return $plugin_array; + } + + /* + * Push Button to TinyMCE Advance + */ + public function wp_statistic_register_my_tc_button( $buttons ) { + array_push( $buttons, "wp_statistic_tc_button" ); + + return $buttons; + } + + /* + * Add Lang Text Domain + */ + public function wp_statistic_tinymce_plugin_add_locale( $locales ) { + $locales ['wp-statistic-tinymce-plugin'] = WP_Statistics::$reg['plugin-dir'] . 'includes/functions/tinymce.php'; + + return $locales; + } + + /* + * Add Button For Text Widget + */ + public function load_tinymcejs_widget_wp_admin_style() { + global $pagenow; + if ( $pagenow == "widgets.php" ) { + wp_enqueue_script( 'add_wp_statistic_button_for_widget_text', WP_Statistics::$reg['plugin-url'] . 'assets/js/tinymce.js' ); + } + } + + /* + * Add Lang for Text Widget + */ + public function my_post_edit_page_footer() { + echo ' + <script type="text/javascript"> + jQuery( document ).on( \'tinymce-editor-setup\', function( event, editor ) { + editor.settings.toolbar1 += \',wp_statistic_tc_button\'; + }); + '; + $lang = WP_Statistics_TinyMCE::lang(); + echo $lang['translate']; + echo ' + tinyMCEPreInit.load_ext("' . rtrim( WP_Statistics::$reg['plugin-url'], "/" ) . '", "' . $lang['locale'] . '"); + </script> + '; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-uninstall.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-uninstall.php new file mode 100644 index 0000000..a94d0c9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-uninstall.php @@ -0,0 +1,58 @@ +<?php + + +/** + * Class WP_Statistics_Uninstall + */ +class WP_Statistics_Uninstall { + + /** + * WP_Statistics_Uninstall constructor. + */ + function __construct() { + if ( is_admin() ) { + global $WP_Statistics; + + // Handle multi site implementations + if ( is_multisite() ) { + + // Loop through each of the sites. + $sites = $WP_Statistics->get_wp_sites_list(); + foreach ( $sites as $blog_id ) { + switch_to_blog( $blog_id ); + $this->wp_statistics_site_removal(); + } + restore_current_blog(); + } else { + $this->wp_statistics_site_removal(); + + } + // Make sure we don't try and remove the data more than once. + update_option( 'wp_statistics_removal', 'done' ); + } + + } + + /** + * Removes database options, user meta keys & tables + */ + public function wp_statistics_site_removal() { + global $wpdb; + + // Delete the options from the WordPress options table. + delete_option( 'wp_statistics' ); + delete_option( 'wp_statistics_db_version' ); + delete_option( 'wp_statistics_plugin_version' ); + delete_option( 'wp_statistics_overview_page_ads' ); + + // Delete the transients. + delete_transient( 'wps_top_referring' ); + delete_transient( 'wps_excluded_hostname_to_ip_cache' ); + + // Delete the user options. + $wpdb->query( "DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key LIKE 'wp_statistics%'" ); + + // Drop the tables + $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}statistics_useronline, {$wpdb->prefix}statistics_visit, {$wpdb->prefix}statistics_visitor, {$wpdb->prefix}statistics_exclusions, {$wpdb->prefix}statistics_pages, {$wpdb->prefix}statistics_historical, {$wpdb->prefix}statistics_search" ); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-updates.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-updates.php new file mode 100644 index 0000000..0fd5d1f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-updates.php @@ -0,0 +1,299 @@ +<?php + +/** + * Class WP_Statistics_Updates + */ +class WP_Statistics_Updates { + + //List Geo ip Library + public static $geoip = array( + 'country' => array( + 'cdn' => 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz', + 'github' => 'https://raw.githubusercontent.com/wp-statistics/GeoLite2-Country/master/GeoLite2-Country.mmdb.gz', + 'file' => 'GeoLite2-Country', + 'opt' => 'geoip' + ), + 'city' => array( + 'cdn' => 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz', + 'github' => 'https://raw.githubusercontent.com/wp-statistics/GeoLite2-City/master/GeoLite2-City.mmdb.gz', + 'file' => 'GeoLite2-City', + 'opt' => 'geoip_city' + ) + ); + + + /** + * Update option process. + */ + static function do_upgrade() { + + } + + /** + * This function downloads the GeoIP database from MaxMind. + * + * @param $pack + * @param string $type + * + * @return string + */ + static function download_geoip( $pack, $type = "enable" ) { + GLOBAL $WP_Statistics; + + //Create Empty Return Function + $result["status"] = false; + + // We need the download_url() function, it should exists on virtually all installs of PHP, but if it doesn't for some reason, bail out. + if ( ! function_exists( 'download_url' ) ) { + include( ABSPATH . 'wp-admin/includes/file.php' ); + } + + // We need the wp_generate_password() function. + if ( ! function_exists( 'wp_generate_password' ) ) { + include( ABSPATH . 'wp-includes/pluggable.php' ); + } + + // We need the gzopen() function, it should exists on virtually all installs of PHP, but if it doesn't for some reason, bail out. + // Also stop trying to update the database as it just won't work :) + if ( false === function_exists( 'gzopen' ) ) { + if ( $type == "enable" ) { + $WP_Statistics->update_option( WP_Statistics_Updates::$geoip[ $pack ]['opt'], '' ); + } + + $result["notice"] = __( 'Error the gzopen() function do not exist!', 'wp-statistics' ); + WP_Statistics_Admin_Pages::set_admin_notice( $result["notice"], $type = 'error' ); + + return $result; + } + + // If GeoIP is disabled, bail out. + if ( $type == "update" and $WP_Statistics->get_option( WP_Statistics_Updates::$geoip[ $pack ]['opt'] ) == '' ) { + return ''; + } + + // This is the location of the file to download. + $download_url = WP_Statistics_Updates::$geoip[ $pack ]['cdn']; + $response = wp_remote_get( $download_url ); + + // Change download url if the maxmind.com doesn't response. + if ( wp_remote_retrieve_response_code( $response ) != '200' ) { + $download_url = WP_Statistics_Updates::$geoip[ $pack ]['github']; + } + + // Get the upload directory from WordPress. + $upload_dir = wp_upload_dir(); + + // Create a variable with the name of the database file to download. + $DBFile = $upload_dir['basedir'] . '/wp-statistics/' . WP_Statistics_Updates::$geoip[ $pack ]['file'] . '.mmdb'; + + // Check to see if the subdirectory we're going to upload to exists, if not create it. + if ( ! file_exists( $upload_dir['basedir'] . '/wp-statistics' ) ) { + if ( ! @mkdir( $upload_dir['basedir'] . '/wp-statistics', 0755 ) ) { + if ( $type == "enable" ) { + $WP_Statistics->update_option( WP_Statistics_Updates::$geoip[ $pack ]['opt'], '' ); + } + + $result["notice"] = sprintf( __( 'Error creating GeoIP database directory, make sure your web server has permissions to create directories in: %s', 'wp-statistics' ), $upload_dir['basedir'] ); + WP_Statistics_Admin_Pages::set_admin_notice( $result["notice"], $type = 'error' ); + + return $result; + } + } + + if ( ! is_writable( $upload_dir['basedir'] . '/wp-statistics' ) ) { + if ( $type == "enable" ) { + $WP_Statistics->update_option( WP_Statistics_Updates::$geoip[ $pack ]['opt'], '' ); + } + + $result["notice"] = sprintf( __( 'Error setting permissions of the GeoIP database directory, make sure your web server has permissions to write to directories in : %s', 'wp-statistics' ), + $upload_dir['basedir'] + ); + WP_Statistics_Admin_Pages::set_admin_notice( $result["notice"], $type = 'error' ); + + return $result; + } + + // Download the file from MaxMind, this places it in a temporary location. + $TempFile = download_url( $download_url ); + + // If we failed, through a message, otherwise proceed. + if ( is_wp_error( $TempFile ) ) { + if ( $type == "enable" ) { + $WP_Statistics->update_option( WP_Statistics_Updates::$geoip[ $pack ]['opt'], '' ); + } + + $result["notice"] = sprintf( __( 'Error downloading GeoIP database from: %s - %s', 'wp-statistics' ), $download_url, $TempFile->get_error_message() ); + WP_Statistics_Admin_Pages::set_admin_notice( $result["notice"], $type = 'error' ); + } else { + // Open the downloaded file to unzip it. + $ZipHandle = gzopen( $TempFile, 'rb' ); + + // Create th new file to unzip to. + $DBfh = fopen( $DBFile, 'wb' ); + + // If we failed to open the downloaded file, through an error and remove the temporary file. Otherwise do the actual unzip. + if ( ! $ZipHandle ) { + if ( $type == "enable" ) { + $WP_Statistics->update_option( WP_Statistics_Updates::$geoip[ $pack ]['opt'], '' ); + } + + $result["notice"] = sprintf( + __( 'Error could not open downloaded GeoIP database for reading: %s', 'wp-statistics' ), + $TempFile + ); + WP_Statistics_Admin_Pages::set_admin_notice( $result["notice"], $type = 'error' ); + + unlink( $TempFile ); + } else { + // If we failed to open the new file, throw and error and remove the temporary file. Otherwise actually do the unzip. + if ( ! $DBfh ) { + if ( $type == "enable" ) { + $WP_Statistics->update_option( WP_Statistics_Updates::$geoip[ $pack ]['opt'], '' ); + } + + $result["notice"] = sprintf( __( 'Error could not open destination GeoIP database for writing %s', 'wp-statistics' ), $DBFile ); + WP_Statistics_Admin_Pages::set_admin_notice( $result["notice"], $type = 'error' ); + + unlink( $TempFile ); + } else { + while ( ( $data = gzread( $ZipHandle, 4096 ) ) != false ) { + fwrite( $DBfh, $data ); + } + + // Close the files. + gzclose( $ZipHandle ); + fclose( $DBfh ); + + // Delete the temporary file. + unlink( $TempFile ); + + // Display the success message. + $result["status"] = true; + $result["notice"] = "<div class='updated settings-error'><p><strong>" . __( 'GeoIP Database updated successfully!', 'wp-statistics' ) . "</strong></p></div>"; + + // Update the options to reflect the new download. + if ( $type == "update" ) { + $WP_Statistics->update_option( 'last_geoip_dl', time() ); + $WP_Statistics->update_option( 'update_geoip', false ); + } + + // Populate any missing GeoIP information if the user has selected the option. + if ( $pack == "country" ) { + if ( $WP_Statistics->get_option( 'geoip' ) && + wp_statistics_geoip_supported() && + $WP_Statistics->get_option( 'auto_pop' ) + ) { + WP_Statistics_Updates::populate_geoip_info(); + } + } + } + } + } + + + if ( $WP_Statistics->get_option( 'geoip_report' ) == true ) { + $blogname = get_bloginfo( 'name' ); + $blogemail = get_bloginfo( 'admin_email' ); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if ( $WP_Statistics->get_option( 'email_list' ) == '' ) { + $WP_Statistics->update_option( 'email_list', $blogemail ); + } + + wp_mail( $WP_Statistics->get_option( 'email_list' ), __( 'GeoIP update on', 'wp-statistics' ) . ' ' . WP_Statistics_Admin_Pages::sanitize_mail_subject( $blogname ), $result['notice'], $headers ); + } + + // All of the messages displayed above are stored in a string, now it's time to actually output the messages. + return $result; + } + + /** + * Downloads the referrer spam database from https://github.com/matomo-org/referrer-spam-blacklist. + * @return string + */ + static function download_referrerspam() { + global $WP_Statistics; + + // If referrer spam is disabled, bail out. + if ( $WP_Statistics->get_option( 'referrerspam' ) == false ) { + return ''; + } + + // This is the location of the file to download. + $download_url = 'https://raw.githubusercontent.com/matomo-org/referrer-spam-blacklist/master/spammers.txt'; + + // Download the file from MaxMind, this places it in a temporary location. + $response = wp_remote_get( $download_url, array( 'timeout' => 30 ) ); + if ( is_wp_error( $response ) ) { + return false; + } + $referrerspamlist = wp_remote_retrieve_body( $response ); + if ( is_wp_error( $referrerspamlist ) ) { + return false; + } + + if ( $referrerspamlist != '' || $WP_Statistics->get_option( 'referrerspamlist' ) != '' ) { + $WP_Statistics->update_option( 'referrerspamlist', $referrerspamlist ); + } + + return true; + } + + /** + * Populate GeoIP information in to the database. + * It is used in two different parts of the plugin; + * When a user manual requests the update to happen and after a new GeoIP database has been download + * (if the option is selected). + * + * @return string + */ + static function populate_geoip_info() { + global $wpdb, $WP_Statistics; + + // Find all rows in the table that currently don't have GeoIP info or have an unknown ('000') location. + $result = $wpdb->get_results( "SELECT id,ip FROM `{$wpdb->prefix}statistics_visitor` WHERE location = '' or location = '000' or location IS NULL" ); + + // Try create a new reader instance. + $reader = false; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + $reader = $WP_Statistics::geoip_loader( 'country' ); + } + + if ( $reader === false ) { + $text_error = __( 'Unable to load the GeoIP database, make sure you have downloaded it in the settings page.', 'wp-statistics' ); + WP_Statistics_Admin_Pages::set_admin_notice( $text_error, $type = 'error' ); + } + + $count = 0; + + // Loop through all the missing rows and update them if we find a location for them. + foreach ( $result as $item ) { + $count ++; + + // If the IP address is only a hash, don't bother updating the record. + if ( substr( $item->ip, 0, 6 ) != '#hash#' and $reader != false ) { + try { + $record = $reader->country( $item->ip ); + $location = $record->country->isoCode; + if ( $location == "" ) { + $location = "000"; + } + } catch ( Exception $e ) { + $location = "000"; + } + + // Update the row in the database. + $wpdb->update( + $wpdb->prefix . "statistics_visitor", + array( 'location' => $location ), + array( 'id' => $item->id ) + ); + } + } + + return "<div class='updated settings-error'><p><strong>" . sprintf( __( 'Updated %s GeoIP records in the visitors database.', 'wp-statistics' ), $count ) . "</strong></p></div>"; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-welcome.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-welcome.php new file mode 100644 index 0000000..99a23bf --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-welcome.php @@ -0,0 +1,102 @@ +<?php + +/** + * Class WP_Statistics_Welcome + */ +class WP_Statistics_Welcome { + /** + * Initial + */ + public static function init() { + global $WP_Statistics; + if ( $WP_Statistics->get_option( 'show_welcome_page', false ) and ( strpos( $_SERVER['REQUEST_URI'], '/wp-admin/index.php' ) !== false or ( isset( $_GET['page'] ) and $_GET['page'] == 'wps_overview_page' ) ) ) { + // Disable show welcome page + $WP_Statistics->update_option( 'first_show_welcome_page', true ); + $WP_Statistics->update_option( 'show_welcome_page', false ); + + // Redirect to welcome page + wp_redirect( WP_Statistics_Admin_Pages::admin_url( 'wps_welcome' ) ); + } + + if ( ! $WP_Statistics->get_option( 'first_show_welcome_page', false ) ) { + $WP_Statistics->update_option( 'show_welcome_page', true ); + } + } + + /** + * Register menu + */ + public static function menu() { + add_submenu_page( __( 'WP-Statistics Welcome', 'wp-statistics' ), __( 'WP-Statistics Welcome', 'wp-statistics' ), __( 'WP-Statistics Welcome', 'wp-statistics' ), 'administrator', 'wps_welcome', 'WP_Statistics_Welcome::page_callback' ); + } + + /** + * Welcome page + */ + public static function page_callback() { + + // Create Default Variable + $error = null; + $plugins = array(); + + // Check List Plugins if in Plugins Tab + if ( isset( $_GET['tab'] ) and $_GET['tab'] == "addons" ) { + $response = wp_remote_get( 'https://wp-statistics.com/wp-json/plugin/addons' ); + $response_code = wp_remote_retrieve_response_code( $response ); + if ( is_wp_error( $response ) ) { + $error = $response->get_error_message(); + } else { + if ( $response_code == '200' ) { + $plugins = json_decode( $response['body'] ); + } else { + $error = $response['body']; + } + } + } + + include( WP_Statistics::$reg['plugin-dir'] . "includes/templates/welcome.php" ); + } + + /** + * @param $upgrader_object + * @param $options + */ + public static function do_welcome( $upgrader_object, $options ) { + $current_plugin_path_name = 'wp-statistics/wp-statistics.php'; + + if ( isset( $options['action'] ) and $options['action'] == 'update' and isset( $options['type'] ) and $options['type'] == 'plugin' and isset( $options['plugins'] ) ) { + foreach ( $options['plugins'] as $each_plugin ) { + if ( $each_plugin == $current_plugin_path_name ) { + global $WP_Statistics; + + // Enable welcome page in database + $WP_Statistics->update_option( 'show_welcome_page', true ); + + // Run the upgrader + WP_Statistics_Updates::do_upgrade(); + } + } + } + } + + /** + * Show change log + */ + public static function show_change_log() { + $response = wp_remote_get( 'https://api.github.com/repos/wp-statistics/wp-statistics/releases/latest' ); + + // Check response + if ( is_wp_error( $response ) ) { + return; + } + + $response_code = wp_remote_retrieve_response_code( $response ); + + if ( $response_code == '200' ) { + $data = json_decode( $response['body'] ); + $Parsedown = new Parsedown(); + + echo $Parsedown->text( nl2br( $data->body ) ); + } + } +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-widget.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-widget.php new file mode 100644 index 0000000..61bdd7f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-widget.php @@ -0,0 +1,435 @@ +<?php + +class WP_Statistics_Widget extends WP_Widget { + + /** + * Sets up the widgets name etc + */ + public function __construct() { + parent::__construct( + 'WP_Statistics_Widget', // Base ID + __( 'Statistics', 'wp-statistics' ), // Name + array( 'description' => __( 'Show site stats in sidebar.', 'wp-statistics' ) ) // Args + ); + } + + /** + * Outputs the content of the widget + * + * @param array $args + * @param array $instance + */ + public function widget( $args, $instance ) { + global $WP_Statistics; + extract( $args ); + $widget_options = $WP_Statistics->get_option( 'widget' ); + + echo $before_widget; + echo $before_title . $widget_options['name_widget'] . $after_title; + echo '<ul>'; + + if ( $widget_options['useronline_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Online Users', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_useronline() ); + echo '</li>'; + } + + if ( $widget_options['tvisit_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Today\'s Visits', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visit( 'today' ) ); + echo '</li>'; + } + + if ( $widget_options['tvisitor_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Today\'s Visitors', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visitor( 'today', null, true ) ); + echo '</li>'; + } + + if ( $widget_options['yvisit_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Yesterday\'s Visits', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visit( 'yesterday' ) ); + echo '</li>'; + } + + if ( $widget_options['yvisitor_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Yesterday\'s Visitors', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visitor( 'yesterday', null, true ) ); + echo '</li>'; + } + + if ( $widget_options['wvisit_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Last 7 Days Visits', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visit( 'week' ) ); + echo '</li>'; + } + + if ( $widget_options['mvisit_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Last 30 Days Visits', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visit( 'month' ) ); + echo '</li>'; + } + + if ( $widget_options['ysvisit_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Last 365 Days Visits', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visit( 'year' ) ); + echo '</li>'; + } + + if ( $widget_options['ttvisit_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Total Visits', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visit( 'total' ) ); + echo '</li>'; + } + + if ( $widget_options['ttvisitor_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Total Visitors', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_visitor( 'total', null, true ) ); + echo '</li>'; + } + + if ( $widget_options['tpviews_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Total Page Views', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_pages( 'total' ) ); + echo '</li>'; + } + + if ( $widget_options['ser_widget'] ) { + + echo '<li>'; + echo '<label>' . __( 'Search Engine Referrals', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_searchengine( $widget_options['select_se'] ) ); + echo '</li>'; + } + + if ( $widget_options['tp_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Total Posts', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_countposts() ); + echo '</li>'; + } + + if ( $widget_options['tpg_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Total Pages', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_countpages() ); + echo '</li>'; + } + + if ( $widget_options['tc_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Total Comments', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_countcomment() ); + echo '</li>'; + } + + if ( $widget_options['ts_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Total Spams', 'wp-statistics' ) . ': </label>'; + echo wp_statistics_countspam(); + echo '</li>'; + } + + if ( $widget_options['tu_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Total Users', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_countusers() ); + echo '</li>'; + } + + if ( $widget_options['ap_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Post Average', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_average_post() ); + echo '</li>'; + } + + if ( $widget_options['ac_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Comment Average', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_average_comment() ); + echo '</li>'; + } + + if ( $widget_options['au_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'User Average', 'wp-statistics' ) . ': </label>'; + echo number_format_i18n( wp_statistics_average_registeruser() ); + echo '</li>'; + } + + if ( $widget_options['lpd_widget'] ) { + echo '<li>'; + echo '<label>' . __( 'Last Post Date', 'wp-statistics' ) . ': </label>'; + echo wp_statistics_lastpostdate(); + echo '</li>'; + } + + echo '</ul>'; + echo $after_widget; + } + + /** + * Processing widget options on save + * + * @param array $new_instance The new options + * @param array $old_instance The previous options + * + * @return array + */ + public function update( $new_instance, $old_instance ) { + GLOBAL $WP_Statistics; + + if ( array_key_exists( 'wp_statistics_control_widget_submit', $_POST ) ) { + $keys = array( + 'name_widget' => 'name_widget', + 'useronline_widget' => 'useronline_widget', + 'tvisit_widget' => 'tvisit_widget', + 'tvisitor_widget' => 'tvisitor_widget', + 'yvisit_widget' => 'yvisit_widget', + 'yvisitor_widget' => 'yvisitor_widget', + 'wvisit_widget' => 'wvisit_widget', + 'mvisit_widget' => 'mvisit_widget', + 'ysvisit_widget' => 'ysvisit_widget', + 'ttvisit_widget' => 'ttvisit_widget', + 'ttvisitor_widget' => 'ttvisitor_widget', + 'tpviews_widget' => 'tpviews_widget', + 'ser_widget' => 'ser_widget', + 'select_se' => 'select_se', + 'tp_widget' => 'tp_widget', + 'tpg_widget' => 'tpg_widget', + 'tc_widget' => 'tc_widget', + 'ts_widget' => 'ts_widget', + 'tu_widget' => 'tu_widget', + 'ap_widget' => 'ap_widget', + 'ac_widget' => 'ac_widget', + 'au_widget' => 'au_widget', + 'lpd_widget' => 'lpd_widget', + 'select_lps' => 'select_lps', + ); + + foreach ( $keys as $key => $post ) { + if ( array_key_exists( $post, $_POST ) ) { + $widget_options[ $key ] = $_POST[ $post ]; + } else { + $widget_options[ $key ] = ''; + } + } + + $WP_Statistics->update_option( 'widget', $widget_options ); + } + + return array(); + } + + /** + * Outputs the options form on admin + * + * @param array $instance The widget options + * + * @return string|void + */ + public function form( $instance ) { + GLOBAL $WP_Statistics; + $widget_options = $WP_Statistics->get_option( 'widget' ); + ?> + <p> + <label for="name_widget"><?php _e( 'Name', 'wp-statistics' ); ?>: + <input id="name_widget" name="name_widget" type="text" + value="<?php echo $widget_options['name_widget']; ?>"/> + </label> + </p> + + <?php _e( 'Items', 'wp-statistics' ); ?>:<br/> + <ul> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'useronline_widget' ) ); ?>" name="useronline_widget" <?php checked( + 'on', + $widget_options['useronline_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'useronline_widget' ) ); ?>"><?php _e( 'Online Users', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'tvisit_widget' ) ); ?>" name="tvisit_widget" <?php checked( + 'on', + $widget_options['tvisit_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'tvisit_widget' ) ); ?>"><?php _e( 'Today\'s Visits', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'tvisitor_widget' ) ); ?>" name="tvisitor_widget" <?php checked( + 'on', + $widget_options['tvisitor_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'tvisitor_widget' ) ); ?>"><?php _e( 'Today\'s Visitors', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'yvisit_widget' ) ); ?>" name="yvisit_widget" <?php checked( + 'on', + $widget_options['yvisit_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'yvisit_widget' ) ); ?>"><?php _e( 'Yesterday\'s Visits', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'yvisitor_widget' ) ); ?>" name="yvisitor_widget" <?php checked( + 'on', + $widget_options['yvisitor_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'yvisitor_widget' ) ); ?>"><?php _e( 'Yesterday\'s Visitors', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'wvisit_widget' ) ); ?>" name="wvisit_widget" <?php checked( + 'on', + $widget_options['wvisit_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'wvisit_widget' ) ); ?>"><?php _e( 'Last 7 Days Visits', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'mvisit_widget' ) ); ?>" name="mvisit_widget" <?php checked( + 'on', + $widget_options['mvisit_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'mvisit_widget' ) ); ?>"><?php _e( 'Last 30 Days Visits', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'ysvisit_widget' ) ); ?>" name="ysvisit_widget" <?php checked( + 'on', + $widget_options['ysvisit_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'ysvisit_widget' ) ); ?>"><?php _e( 'Last 365 Days Visits', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'ttvisit_widget' ) ); ?>" name="ttvisit_widget" <?php checked( + 'on', + $widget_options['ttvisit_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'ttvisit_widget' ) ); ?>"><?php _e( 'Total Visits', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'ttvisitor_widget' ) ); ?>" name="ttvisitor_widget" <?php checked( + 'on', + $widget_options['ttvisitor_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'ttvisitor_widget' ) ); ?>"><?php _e( 'Total Visitors', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'tpviews_widget' ) ); ?>" name="tpviews_widget" <?php checked( + 'on', + $widget_options['tpviews_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'tpviews_widget' ) ); ?>"><?php _e( 'Total Page Views', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'ser_widget' ) ); ?>" class="ser_widget" name="ser_widget" <?php checked( + 'on', + $widget_options['ser_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'ser_widget' ) ); ?>"><?php _e( 'Search Engine Referrals', 'wp-statistics' ); ?></label> + + <p id="ser_option" style="<?php if ( ! $widget_options['ser_widget'] ) { + echo "display: none;"; + } ?>"> + <?php _e( 'Select type of search engine', 'wp-statistics' ); ?>:<br/> + <?php + $search_engines = wp_statistics_searchengine_list(); + + foreach ( $search_engines as $se ) { + echo ' <input type="radio" id="select_' . + $se['tag'] . + '" name="select_se" value="' . + $se['tag'] . + '" '; + checked( $se['tag'], $widget_options['select_se'] ); + echo "/>\n"; + echo ' <label for="' . $se['name'] . '">' . $se['translated'] . "</label>\n"; + echo "\n"; + } + ?> + <input type="radio" id="select_all" name="select_se" value="all" <?php checked( + 'all', + $widget_options['select_se'] + ); ?>/> + <label for="select_all"><?php _e( 'All', 'wp-statistics' ); ?></label> + </p> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'tp_widget' ) ); ?>" name="tp_widget" <?php checked( + 'on', + $widget_options['tp_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'tp_widget' ) ); ?>"><?php _e( 'Total Posts', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'tpg_widget' ) ); ?>" name="tpg_widget" <?php checked( + 'on', + $widget_options['tpg_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'tpg_widget' ) ); ?>"><?php _e( 'Total Pages', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'tc_widget' ) ); ?>" name="tc_widget" <?php checked( + 'on', + $widget_options['tc_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'tc_widget' ) ); ?>"><?php _e( 'Total Comments', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'ts_widget' ) ); ?>" name="ts_widget" <?php checked( + 'on', + $widget_options['ts_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'ts_widget' ) ); ?>"><?php _e( 'Total Spams', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'tu_widget' ) ); ?>" name="tu_widget" <?php checked( + 'on', + $widget_options['tu_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'tu_widget' ) ); ?>"><?php _e( 'Total Users', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'ap_widget' ) ); ?>" name="ap_widget" <?php checked( + 'on', + $widget_options['ap_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'ap_widget' ) ); ?>"><?php _e( 'Post Average', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'ac_widget' ) ); ?>" name="ac_widget" <?php checked( + 'on', + $widget_options['ac_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'ac_widget' ) ); ?>"><?php _e( 'Comment Average', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'au_widget' ) ); ?>" name="au_widget" <?php checked( + 'on', + $widget_options['au_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'au_widget' ) ); ?>"><?php _e( 'User Average', 'wp-statistics' ); ?></label> + </li> + <li> + <input type="checkbox" id="<?php echo esc_attr( $this->get_field_id( 'lpd_widget' ) ); ?>" class="lpd_widget" name="lpd_widget" <?php checked( + 'on', + $widget_options['lpd_widget'] + ); ?>/> + <label for="<?php echo esc_attr( $this->get_field_id( 'lpd_widget' ) ); ?>"><?php _e( 'Last Post Date', 'wp-statistics' ); ?></label> + </li> + </ul> + + <input type="hidden" id="<?php echo esc_attr( $this->get_field_id( 'wp_statistics_control_widget_submit' ) ); ?>" name="wp_statistics_control_widget_submit" + value="1"/> + <?php + } +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics.php b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics.php new file mode 100644 index 0000000..f09395c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics.php @@ -0,0 +1,1558 @@ +<?php + +/** + * Class WP_Statistics + * + * This is the primary class for WP Statistics recording hits on the WordPress site. + * It is extended by the Hits class and the GEO_IP_Hits class. + * This class handles; visits, visitors and pages. + */ +class WP_Statistics { + + /** + * IP address of visitor + * + * @var bool|string + */ + public $ip = false; + /** + * Hash of visitors IP address + * + * @var bool|string + */ + public $ip_hash = false; + /** + * Agent of visitor browser + * + * @var string + */ + public $agent; + /** + * a coefficient to record number of visits + * + * @var int + */ + public $coefficient = 1; + /** + * Visitor User ID + * + * @var int + */ + public $user_id = 0; + /** + * Plugin options (Recorded in database) + * + * @var array + */ + public $options = array(); + /** + * User Options + * + * @var array + */ + public $user_options = array(); + /** + * Menu Slugs + * + * @var array + */ + public $menu_slugs = array(); + /** + * is current request + * + * @var bool + */ + public $is_ajax_logger_request = false; + + /** + * Result of queries + * + * @var + */ + private $result; + /** + * Historical data + * + * @var array + */ + private $historical = array(); + /** + * is user options loaded? + * + * @var bool + */ + private $user_options_loaded = false; + /** + * Timezone offset + * + * @var int|mixed|void + */ + private $tz_offset = 0; + /** + * Country Codes + * + * @var bool|string + */ + private $country_codes = false; + /** + * Referrer + * + * @var bool + */ + private $referrer = false; + + /** + * Installed Version + * + * @var string + */ + public static $installed_version; + /** + * Registry for plugin settings + * + * @var array + */ + public static $reg = array(); + /** + * Pages slugs + * + * @var array + */ + public static $page = array(); + /** + * Rest Api init + * + * @var array + */ + public $restapi; + /** + * Check Plugin Cache is enabled + * + * @var bool|string + */ + public $use_cache = false; + + /** + * __construct + * WP_Statistics constructor. + */ + public function __construct() { + if ( ! isset( WP_Statistics::$reg['plugin-url'] ) ) { + + //Get Plugin Data + if ( ! function_exists( 'get_plugin_data' ) ) { + require( ABSPATH . 'wp-admin/includes/plugin.php' ); + } + $plugin_data = get_plugin_data( WP_STATISTICS_MAIN_FILE ); + + //Prepare Plugin config + WP_Statistics::$reg = array( + 'plugin-data' => $plugin_data, + 'plugin-url' => plugin_dir_url( WP_STATISTICS_MAIN_FILE ), + 'plugin-dir' => plugin_dir_path( WP_STATISTICS_MAIN_FILE ), + 'main-file' => WP_STATISTICS_MAIN_FILE, + 'version' => $plugin_data['Version'], + 'required-php-version' => '5.4.0', + ); + } + } + + /** + * List of $_SERVER + * + * @return array + */ + public static function list_of_server_ip_variable() { + return array( 'REMOTE_ADDR', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'HTTP_X_REAL_IP', 'HTTP_X_CLUSTER_CLIENT_IP' ); + } + + /** + * Get Basis For Get User IP + */ + public static function getIPMethod() { + + // Set Default Method + $method = 'REMOTE_ADDR'; + + // Get Option + $wp_statistics = get_option( 'wp_statistics' ); + if ( isset( $wp_statistics ) and is_array( $wp_statistics ) and isset( $wp_statistics['ip_method'] ) and trim( $wp_statistics['ip_method'] ) != "" ) { + $method = $wp_statistics['ip_method']; + } + + return $method; + } + + /** + * Run when plugin loads + */ + public function run() { + global $WP_Statistics; + + // Check the PHP version, + // if we don't meet the minimum version to run WP Statistics return so we don't cause a critical error. + if ( ! version_compare( phpversion(), WP_Statistics::$reg['required-php-version'], ">=" ) ) { + add_action( 'admin_notices', 'WP_Statistics::unsupported_version_admin_notice', 10, 2 ); + + return; + } + + // Autoload composer + require( WP_Statistics::$reg['plugin-dir'] . 'includes/vendor/autoload.php' ); + + // Define an autoload method to automatically load classes in /includes/classes + spl_autoload_register( array( $this, 'autoload' ) ); + + //Set TimeZone + $this->set_timezone(); + + //Set Options + $this->load_options(); + + //Set coefficient + $this->set_coefficient(); + + // Check the cache option is enabled. + if ( $this->get_option( 'use_cache_plugin' ) == true ) { + $this->use_cache = 1; + } + + //Load Rest Api + $this->init_rest_api(); + + //Get user Ip + $this->get_IP(); + + // Check if the has IP is enabled. + if ( $this->get_option( 'hash_ips' ) == true ) { + $this->ip_hash = $this->get_hash_string(); + } + + //Set Pages + $this->set_pages(); + + // Load Plugin Text Domain + add_action( 'init', array( $this, 'load_textdomain' ) ); + + // Load the rest of the required files for our global functions, + // online user tracking and hit tracking. + if ( ! function_exists( 'wp_statistics_useronline' ) ) { + include WP_Statistics::$reg['plugin-dir'] . 'includes/functions/functions.php'; + } + + //Reset User Online Count + add_action( 'wp_loaded', array( $this, 'reset_user_online' ) ); + + //Get Current User Agent + $this->agent = $this->get_UserAgent(); + $WP_Statistics = $this; + + //Load WP_Statistics_Schedule + new WP_Statistics_Schedule; + + if ( is_admin() ) { + // JUST ADMIN AREA + new WP_Statistics_Admin; + } else { + // JUST FRONTEND AREA + new WP_Statistics_Frontend; + } + + //Show Wordpress Admin Bar + if ( $WP_Statistics->get_option( 'menu_bar' ) ) { + add_action( 'admin_bar_menu', array( $this, 'menubar' ), 20 ); + } + + //Add Wp-statistics Widget + add_action( 'widgets_init', array( $this, 'widget' ) ); + + //Add Short Code `wpstatistics` + add_shortcode( 'wpstatistics', 'WP_Statistics_Shortcode::shortcodes' ); + } + + /** + * Autoload classes of the plugin + * + * @param string $class Class name + */ + public function autoload( $class ) { + // This check is for performance of loading plugin classes + if ( ! class_exists( $class ) && substr( $class, 0, 14 ) === 'WP_Statistics_' ) { + $lower_class_name = str_replace( '_', '-', strtolower( $class ) ); + $class_full_path = WP_Statistics::$reg['plugin-dir'] . 'includes/classes/class-' . $lower_class_name . '.php'; + if ( file_exists( $class_full_path ) ) { + require $class_full_path; + } + } + } + + /** + * Loads the load_plugin_textdomain code. + */ + public function load_textdomain() { + load_plugin_textdomain( 'wp-statistics', false, WP_Statistics::$reg['plugin-dir'] . 'languages' ); + } + + /** + * Check the REST API + */ + public function init_rest_api() { + $this->restapi = new WP_Statistics_Rest(); + } + + /** + * Set Time Zone + */ + public function set_timezone() { + if ( get_option( 'timezone_string' ) ) { + $this->tz_offset = timezone_offset_get( + timezone_open( get_option( 'timezone_string' ) ), + new DateTime() + ); + } elseif ( get_option( 'gmt_offset' ) ) { + $this->tz_offset = get_option( 'gmt_offset' ) * 60 * 60; + } + } + + /** + * Set pages slugs + */ + public function set_pages() { + if ( ! isset( WP_Statistics::$page['overview'] ) ) { + + /** + * List Of Admin Page Slug WP-statistics + * + * -- Array Arg --- + * key : page key for using another methods + * value : Admin Page Slug + */ + $list = array( + 'overview' => 'overview', + 'browser' => 'browsers', + 'countries' => 'countries', + 'exclusions' => 'exclusions', + 'hits' => 'hits', + 'online' => 'online', + 'pages' => 'pages', + 'categories' => 'categories', + 'authors' => 'authors', + 'tags' => 'tags', + 'referrers' => 'referrers', + 'searches' => 'searches', + 'words' => 'words', + 'top-visitors' => 'top_visitors', + 'visitors' => 'visitors', + 'optimization' => 'optimization', + 'settings' => 'settings', + 'plugins' => 'plugins', + 'donate' => 'donate', + ); + foreach ( $list as $page_key => $page_slug ) { + WP_Statistics::$page[ $page_key ] = 'wps_' . $page_slug . '_page'; + } + } + } + + /** + * Set Coefficient + */ + public function set_coefficient() { + // Set the default co-efficient. + $this->coefficient = $this->get_option( 'coefficient', 1 ); + // Double check the co-efficient setting to make sure it's not been set to 0. + if ( $this->coefficient <= 0 ) { + $this->coefficient = 1; + } + } + + /** + * Generate hash string + */ + public function get_hash_string() { + + // Check the user agent has exist. + if ( $this->restapi->is_rest() and trim( $this->restapi->params( 'ua' ) ) != "" ) { + $key = $this->restapi->params( 'ua' ); + } else if ( array_key_exists( 'HTTP_USER_AGENT', $_SERVER ) ) { + $key = $_SERVER['HTTP_USER_AGENT']; + } else { + $key = 'Unknown'; + } + + return '#hash#' . sha1( $this->ip . $key ); + } + + /** + * Loads the options from WordPress + */ + public function load_options() { + $this->options = get_option( 'wp_statistics' ); + + if ( ! is_array( $this->options ) ) { + $this->user_options = array(); + } + } + + /** + * Registers Widget + */ + public function widget() { + register_widget( 'WP_Statistics_Widget' ); + } + + /** + * geo ip Loader + * + * @param $pack + * @return bool|\GeoIp2\Database\Reader + */ + static function geoip_loader( $pack ) { + + $upload_dir = wp_upload_dir(); + $geoip = $upload_dir['basedir'] . '/wp-statistics/' . WP_Statistics_Updates::$geoip[ $pack ]['file'] . '.mmdb'; + if ( file_exists( $geoip ) ) { + try { + $reader = new GeoIp2\Database\Reader( $geoip ); + } catch ( \MaxMind\Db\Reader\InvalidDatabaseException $e ) { + return false; + } + } else { + return false; + } + + return $reader; + } + + /** + * Loads the user options from WordPress. + * It is NOT called during the class constructor. + * + * @param bool|false $force + */ + public function load_user_options( $force = false ) { + if ( $this->user_options_loaded == true && $force != true ) { + return; + } + + if ( $this->user_id == 0 ) { + $this->user_id = get_current_user_id(); + } + + // Not sure why, but get_user_meta() is returning an array or array's unless $single is set to true. + $this->user_options = get_user_meta( $this->user_id, 'wp_statistics', true ); + + if ( ! is_array( $this->user_options ) ) { + $this->user_options = array(); + } + + $this->user_options_loaded = true; + } + + /** + * mimics WordPress's get_option() function but uses the array instead of individual options. + * + * @param $option + * @param null $default + * + * @return bool|null + */ + public function get_option( $option, $default = null ) { + // If no options array exists, return FALSE. + if ( ! is_array( $this->options ) ) { + return false; + } + + // if the option isn't set yet, return the $default if it exists, otherwise FALSE. + if ( ! array_key_exists( $option, $this->options ) ) { + if ( isset( $default ) ) { + return $default; + } else { + return false; + } + } + + // Return the option. + return $this->options[ $option ]; + } + + /** + * mimics WordPress's get_user_meta() function + * But uses the array instead of individual options. + * + * @param $option + * @param null $default + * + * @return bool|null + */ + public function get_user_option( $option, $default = null ) { + // If the user id has not been set or no options array exists, return FALSE. + if ( $this->user_id == 0 ) { + return false; + } + if ( ! is_array( $this->user_options ) ) { + return false; + } + + // if the option isn't set yet, return the $default if it exists, otherwise FALSE. + if ( ! array_key_exists( $option, $this->user_options ) ) { + if ( isset( $default ) ) { + return $default; + } else { + return false; + } + } + + // Return the option. + return $this->user_options[ $option ]; + } + + /** + * Mimics WordPress's update_option() function + * But uses the array instead of individual options. + * + * @param $option + * @param $value + */ + public function update_option( $option, $value ) { + // Store the value in the array. + $this->options[ $option ] = $value; + + // Write the array to the database. + update_option( 'wp_statistics', $this->options ); + } + + /** + * Mimics WordPress's update_user_meta() function + * But uses the array instead of individual options. + * + * @param $option + * @param $value + * + * @return bool + */ + public function update_user_option( $option, $value ) { + // If the user id has not been set return FALSE. + if ( $this->user_id == 0 ) { + return false; + } + + // Store the value in the array. + $this->user_options[ $option ] = $value; + + // Write the array to the database. + update_user_meta( $this->user_id, 'wp_statistics', $this->user_options ); + } + + /** + * This function is similar to update_option, + * but it only stores the option in the array. + * This save some writing to the database if you have multiple values to update. + * + * @param $option + * @param $value + */ + public function store_option( $option, $value ) { + $this->options[ $option ] = $value; + } + + /** + * This function is similar to update_user_option, + * but it only stores the option in the array. + * This save some writing to the database if you have multiple values to update. + * + * @param $option + * @param $value + * + * @return bool + */ + public function store_user_option( $option, $value ) { + // If the user id has not been set return FALSE. + if ( $this->user_id == 0 ) { + return false; + } + + $this->user_options[ $option ] = $value; + } + + /** + * Saves the current options array to the database. + */ + public function save_options() { + update_option( 'wp_statistics', $this->options ); + } + + /** + * Saves the current user options array to the database. + * + * @return bool + */ + public function save_user_options() { + if ( $this->user_id == 0 ) { + return false; + } + + update_user_meta( $this->user_id, 'wp_statistics', $this->user_options ); + } + + /** + * Check to see if an option is currently set or not. + * + * @param $option + * + * @return bool + */ + public function isset_option( $option ) { + if ( ! is_array( $this->options ) ) { + return false; + } + + return array_key_exists( $option, $this->options ); + } + + /** + * check to see if a user option is currently set or not. + * + * @param $option + * + * @return bool + */ + public function isset_user_option( $option ) { + if ( $this->user_id == 0 ) { + return false; + } + if ( ! is_array( $this->user_options ) ) { + return false; + } + + return array_key_exists( $option, $this->user_options ); + } + + /** + * During installation of WP Statistics some initial data needs to be loaded + * in to the database so errors are not displayed. + * This function will add some initial data if the tables are empty. + */ + public function Primary_Values() { + global $wpdb; + + $this->result = $wpdb->query( "SELECT * FROM {$wpdb->prefix}statistics_useronline" ); + + if ( ! $this->result ) { + + $wpdb->insert( + $wpdb->prefix . "statistics_useronline", + array( + 'ip' => $this->store_ip_to_db(), + 'timestamp' => $this->Current_Date( 'U' ), + 'date' => $this->Current_Date(), + 'referred' => $this->get_Referred(), + 'agent' => $this->agent['browser'], + 'platform' => $this->agent['platform'], + 'version' => $this->agent['version'], + ) + ); + } + + $this->result = $wpdb->query( "SELECT * FROM {$wpdb->prefix}statistics_visit" ); + + if ( ! $this->result ) { + + $wpdb->insert( + $wpdb->prefix . "statistics_visit", + array( + 'last_visit' => $this->Current_Date(), + 'last_counter' => $this->Current_date( 'Y-m-d' ), + 'visit' => 1, + ) + ); + } + + $this->result = $wpdb->query( "SELECT * FROM {$wpdb->prefix}statistics_visitor" ); + + if ( ! $this->result ) { + + $wpdb->insert( + $wpdb->prefix . "statistics_visitor", + array( + 'last_counter' => $this->Current_date( 'Y-m-d' ), + 'referred' => $this->get_Referred(), + 'agent' => $this->agent['browser'], + 'platform' => $this->agent['platform'], + 'version' => $this->agent['version'], + 'ip' => $this->store_ip_to_db(), + 'location' => '000', + ) + ); + } + } + + /** + * During installation of WP Statistics some initial options need to be set. + * This function will save a set of default options for the plugin. + * + * @param null $option_name + * + * @return array + */ + public function Default_Options( $option_name = null ) { + $options = array(); + + if ( ! isset( $wps_robotarray ) ) { + // Get the robots list, we'll use this for both upgrades and new installs. + include( WP_Statistics::$reg['plugin-dir'] . 'includes/robotslist.php' ); + } + + $options['robotlist'] = trim( $wps_robotslist ); + + // By default, on new installs, use the new search table. + $options['search_converted'] = 1; + + // If this is a first time install or an upgrade and we've added options, set some intelligent defaults. + $options['anonymize_ips'] = false; + $options['geoip'] = false; + $options['useronline'] = true; + $options['visits'] = true; + $options['visitors'] = true; + $options['pages'] = true; + $options['check_online'] = '120'; + $options['menu_bar'] = false; + $options['coefficient'] = '1'; + $options['stats_report'] = false; + $options['time_report'] = 'daily'; + $options['send_report'] = 'mail'; + $options['content_report'] = ''; + $options['update_geoip'] = true; + $options['store_ua'] = false; + $options['robotlist'] = $wps_robotslist; + $options['exclude_administrator'] = true; + $options['disable_se_clearch'] = true; + $options['disable_se_qwant'] = true; + $options['disable_se_baidu'] = true; + $options['disable_se_ask'] = true; + $options['map_type'] = 'jqvmap'; + $options['ip_method'] = 'REMOTE_ADDR'; + + $options['force_robot_update'] = true; + + if ( $option_name and isset( $options[ $option_name ] ) ) { + return $options[ $option_name ]; + } + + return $options; + } + + /** + * Processes a string that represents an IP address and returns + * either FALSE if it's invalid or a valid IP4 address. + * + * @param $ip + * + * @return bool|string + */ + private function get_ip_value( $ip ) { + // Reject anything that's not a string. + if ( ! is_string( $ip ) ) { + return false; + } + + // Trim off any spaces. + $ip = trim( $ip ); + + // Process IPv4 and v6 addresses separately. + if ( $this->isValidIPv6( $ip ) ) { + // Reject any IPv6 addresses if IPv6 is not compiled in to this version of PHP. + if ( ! defined( 'AF_INET6' ) ) { + return false; + } + } else { + // Trim off any port values that exist. + if ( strstr( $ip, ':' ) !== false ) { + $temp = explode( ':', $ip ); + $ip = $temp[0]; + } + + // Check to make sure the http header is actually an IP address and not some kind of SQL injection attack. + $long = ip2long( $ip ); + + // ip2long returns either -1 or FALSE if it is not a valid IP address depending on the PHP version, so check for both. + if ( $long == - 1 || $long === false ) { + return false; + } + } + + // If the ip address is blank, reject it. + if ( $ip == '' ) { + return false; + } + + // We're got a real IP address, return it. + return $ip; + } + + /** + * Returns the current IP address of the remote client. + * + * @return bool|string + */ + public function get_IP() { + + //Check If Rest Api Request + if ( $this->restapi->is_rest() ) { + $this->ip = sanitize_text_field( $this->restapi->params( 'ip' ) ); + if ( filter_var( $this->ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) !== false ) { + return $this->ip; + } + } + + // Check to see if we've already retrieved the IP address and if so return the last result. + if ( $this->ip !== false ) { + return $this->ip; + } + + // Get User Set $_SERVER HEADER + $ip_method = self::getIPMethod(); + + // Get User IP + if ( isset( $_SERVER[ $ip_method ] ) ) { + $this->ip = esc_html( $_SERVER[ $ip_method ] ); + } + + /** + * This Filter Used For Custom $_SERVER String + */ + $user_ip = apply_filters( 'wp_statistics_sanitize_user_ip', $this->ip ); + + // Check If X_FORWARDED_FOR + foreach ( explode( ',', $user_ip ) as $ip ) { + $ip = trim( $ip ); + if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) !== false ) { + $user_ip = $ip; + } + } + + // If no valid ip address has been found, use 127.0.0.1 (aka localhost). + if ( false === $user_ip ) { + $this->ip = '127.0.0.1'; + } else { + $this->ip = $user_ip; + } + + return $this->ip; + } + + /** + * Store User IP To Database + */ + public function store_ip_to_db() { + + //Get User ip + $user_ip = $this->ip; + + // use 127.0.0.1 If no valid ip address has been found. + if ( false === $user_ip ) { + return '127.0.0.1'; + } + + // If the anonymize IP enabled for GDPR. + if ( $this->get_option( 'anonymize_ips' ) == true ) { + $user_ip = substr( $user_ip, 0, strrpos( $user_ip, '.' ) ) . '.0'; + } + + return $user_ip; + } + + /** + * Check IP contain Special Character + * + * @param $ip + * @return bool + */ + public function check_sanitize_ip( $ip ) { + $preg = preg_replace( '/[^0-9- .:]/', '', $ip ); + return $preg == $ip; + } + + /** + * Validate an IPv6 IP address + * + * @param string $ip + * + * @return boolean - true/false + */ + private function isValidIPv6( $ip ) { + if ( false === filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) { + return false; + } else { + return true; + } + } + + /** + * Calls the user agent parsing code. + * + * @return array|\string[] + */ + public function get_UserAgent() { + //Check If Rest Request + if ( $this->restapi->is_rest() ) { + return array( + 'browser' => $this->restapi->params( 'browser' ), + 'platform' => $this->restapi->params( 'platform' ), + 'version' => $this->restapi->params( 'version' ) + ); + } + + // Check function exist. + if ( function_exists( 'getallheaders' ) ) { + $user_agent = getallheaders(); + } elseif ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) { + $user_agent = $_SERVER['HTTP_USER_AGENT']; + } else { + $user_agent = ''; + } + + $result = new WhichBrowser\Parser( $user_agent ); + $agent = array( + 'browser' => ( isset( $result->browser->name ) ) ? $result->browser->name : _x( 'Unknown', 'Browser', 'wp-statistics' ), + 'platform' => ( isset( $result->os->name ) ) ? $result->os->name : _x( 'Unknown', 'Platform', 'wp-statistics' ), + 'version' => ( isset( $result->os->version->value ) ) ? $result->os->version->value : _x( 'Unknown', 'Version', 'wp-statistics' ), + ); + + return $agent; + } + + /** + * return the referrer link for the current user. + * + * @param bool|false $default_referrer + * + * @return array|bool|string|void + */ + public function get_Referred( $default_referrer = false ) { + + //Check If Rest Request + if ( $this->restapi->is_rest() ) { + $this->referrer = $this->restapi->params( 'referred' ); + + return $this->referrer; + } + + if ( $this->referrer !== false ) { + return $this->referrer; + } + + $this->referrer = ''; + + if ( isset( $_SERVER['HTTP_REFERER'] ) ) { + $this->referrer = $_SERVER['HTTP_REFERER']; + } + if ( $default_referrer ) { + $this->referrer = $default_referrer; + } + + $this->referrer = esc_sql( strip_tags( $this->referrer ) ); + + if ( ! $this->referrer ) { + $this->referrer = get_bloginfo( 'url' ); + } + + if ( $this->get_option( 'addsearchwords', false ) ) { + // Check to see if this is a search engine referrer + $SEInfo = $this->Search_Engine_Info( $this->referrer ); + + if ( is_array( $SEInfo ) ) { + // If we're a known SE, check the query string + if ( $SEInfo['tag'] != '' ) { + $result = $this->Search_Engine_QueryString( $this->referrer ); + + // If there were no search words, let's add the page title + if ( $result == '' || $result == 'No search query found!' ) { + $result = wp_title( '', false ); + if ( $result != '' ) { + $this->referrer = esc_url( + add_query_arg( + $SEInfo['querykey'], + urlencode( '~"' . $result . '"' ), + $this->referrer + ) + ); + } + } + } + } + } + + return $this->referrer; + } + + /** + * Returns a date string in the desired format with a passed in timestamp. + * + * @param $format + * @param $timestamp + * + * @return bool|string + */ + public function Local_Date( $format, $timestamp ) { + return date( $format, $timestamp + $this->tz_offset ); + } + + // Returns a date string in the desired format. + + /** + * @param string $format + * @param null $strtotime + * @param null $relative + * + * @return bool|string + */ + public function Current_Date( $format = 'Y-m-d H:i:s', $strtotime = null, $relative = null ) { + + if ( $strtotime ) { + if ( $relative ) { + return date( $format, strtotime( "{$strtotime} day", $relative ) + $this->tz_offset ); + } else { + return date( $format, strtotime( "{$strtotime} day" ) + $this->tz_offset ); + } + } else { + return date( $format, time() + $this->tz_offset ); + } + } + + /** + * Returns a date string in the desired format. + * + * @param string $format + * @param null $strtotime + * @param null $relative + * + * @return bool|string + */ + public function Real_Current_Date( $format = 'Y-m-d H:i:s', $strtotime = null, $relative = null ) { + + if ( $strtotime ) { + if ( $relative ) { + return date( $format, strtotime( "{$strtotime} day", $relative ) ); + } else { + return date( $format, strtotime( "{$strtotime} day" ) ); + } + } else { + return date( $format, time() ); + } + } + + /** + * Returns an internationalized date string in the desired format. + * + * @param string $format + * @param null $strtotime + * @param string $day + * + * @return string + */ + public function Current_Date_i18n( $format = 'Y-m-d H:i:s', $strtotime = null, $day = ' day' ) { + + if ( $strtotime ) { + return date_i18n( $format, strtotime( "{$strtotime}{$day}" ) + $this->tz_offset ); + } else { + return date_i18n( $format, time() + $this->tz_offset ); + } + } + + /** + * Adds the timezone offset to the given time string + * + * @param $timestring + * + * @return int + */ + public function strtotimetz( $timestring ) { + return strtotime( $timestring ) + $this->tz_offset; + } + + /** + * Adds current time to timezone offset + * + * @return int + */ + public function timetz() { + return time() + $this->tz_offset; + } + + /** + * Checks to see if a search engine exists in the current list of search engines. + * + * @param $search_engine_name + * @param null $search_engine + * + * @return int + */ + public function Check_Search_Engines( $search_engine_name, $search_engine = null ) { + + if ( strstr( $search_engine, $search_engine_name ) ) { + return 1; + } + } + + /** + * Returns an array of information about a given search engine based on the url passed in. + * It is used in several places to get the SE icon or the sql query + * To select an individual SE from the database. + * + * @param bool|false $url + * + * @return array|bool + */ + public function Search_Engine_Info( $url = false ) { + + // If no URL was passed in, get the current referrer for the session. + if ( ! $url ) { + $url = isset( $_SERVER['HTTP_REFERER'] ) ? $this->get_Referred() : false; + } + + // If there is no URL and no referrer, always return false. + if ( $url == false ) { + return false; + } + + // Parse the URL in to it's component parts. + $parts = parse_url( $url ); + + // Get the list of search engines we currently support. + $search_engines = wp_statistics_searchengine_list(); + + // Loop through the SE list until we find which search engine matches. + foreach ( $search_engines as $key => $value ) { + $search_regex = wp_statistics_searchengine_regex( $key ); + + preg_match( '/' . $search_regex . '/', $parts['host'], $matches ); + + if ( isset( $matches[1] ) ) { + // Return the first matched SE. + return $value; + } + } + + // If no SE matched, return some defaults. + return array( + 'name' => _x( 'Unknown', 'Search Engine', 'wp-statistics' ), + 'tag' => '', + 'sqlpattern' => '', + 'regexpattern' => '', + 'querykey' => 'q', + 'image' => 'unknown.png', + ); + } + + /** + * Returns an array of information about a given search engine based on the url passed in. + * It is used in several places to get the SE icon or the sql query + * to select an individual SE from the database. + * + * @param bool|false $engine + * + * @return array|bool + */ + public function Search_Engine_Info_By_Engine( $engine = false ) { + + // If there is no URL and no referrer, always return false. + if ( $engine == false ) { + return false; + } + + // Get the list of search engines we currently support. + $search_engines = wp_statistics_searchengine_list(); + + if ( array_key_exists( $engine, $search_engines ) ) { + return $search_engines[ $engine ]; + } + + // If no SE matched, return some defaults. + return array( + 'name' => _x( 'Unknown', 'Search Engine', 'wp-statistics' ), + 'tag' => '', + 'sqlpattern' => '', + 'regexpattern' => '', + 'querykey' => 'q', + 'image' => 'unknown.png', + ); + } + + /** + * Parses a URL from a referrer and return the search query words used. + * + * @param bool|false $url + * + * @return bool|string + */ + public function Search_Engine_QueryString( $url = false ) { + + // If no URL was passed in, get the current referrer for the session. + if ( ! $url ) { + $url = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : false; + } + + // If there is no URL and no referrer, always return false. + if ( $url == false ) { + return false; + } + + // Parse the URL in to it's component parts. + $parts = parse_url( $url ); + + // Check to see if there is a query component in the URL (everything after the ?). If there isn't one + // set an empty array so we don't get errors later. + if ( array_key_exists( 'query', $parts ) ) { + parse_str( $parts['query'], $query ); + } else { + $query = array(); + } + + // Get the list of search engines we currently support. + $search_engines = wp_statistics_searchengine_list(); + + // Loop through the SE list until we find which search engine matches. + foreach ( $search_engines as $key => $value ) { + $search_regex = wp_statistics_searchengine_regex( $key ); + + preg_match( '/' . $search_regex . '/', $parts['host'], $matches ); + + if ( isset( $matches[1] ) ) { + // Check to see if the query key the SE uses exists in the query part of the URL. + if ( array_key_exists( $search_engines[ $key ]['querykey'], $query ) ) { + $words = strip_tags( $query[ $search_engines[ $key ]['querykey'] ] ); + } else { + $words = ''; + } + + // If no words were found, return a pleasant default. + if ( $words == '' ) { + $words = 'No search query found!'; + } + + return $words; + } + } + + // We should never actually get to this point, but let's make sure we return something + // just in case something goes terribly wrong. + return 'No search query found!'; + } + + /** + * Get historical data + * + * @param $type + * @param string $id + * + * @return int|null|string + */ + public function Get_Historical_Data( $type, $id = '' ) { + global $wpdb; + + $count = 0; + switch ( $type ) { + case 'visitors': + if ( array_key_exists( 'visitors', $this->historical ) ) { + return $this->historical['visitors']; + } else { + $result = $wpdb->get_var( "SELECT value FROM {$wpdb->prefix}statistics_historical WHERE category = 'visitors'" ); + if ( $result > $count ) { + $count = $result; + } + $this->historical['visitors'] = $count; + } + + break; + case 'visits': + if ( array_key_exists( 'visits', $this->historical ) ) { + return $this->historical['visits']; + } else { + $result = $wpdb->get_var( "SELECT value FROM {$wpdb->prefix}statistics_historical WHERE category = 'visits'" ); + if ( $result > $count ) { + $count = $result; + } + $this->historical['visits'] = $count; + } + + break; + case 'uri': + if ( array_key_exists( $id, $this->historical ) ) { + return $this->historical[ $id ]; + } else { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT value FROM {$wpdb->prefix}statistics_historical WHERE category = 'uri' AND uri = %s", $id ) ); + if ( $result > $count ) { + $count = $result; + } + $this->historical[ $id ] = $count; + } + + break; + case 'page': + if ( array_key_exists( $id, $this->historical ) ) { + return $this->historical[ $id ]; + } else { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT value FROM {$wpdb->prefix}statistics_historical WHERE category = 'uri' AND page_id = %d", $id ) ); + if ( $result > $count ) { + $count = $result; + } + $this->historical[ $id ] = $count; + } + + break; + } + + return $count; + } + + /** + * Get country codes + * + * @return array|bool|string + */ + public function get_country_codes() { + if ( $this->country_codes == false ) { + $ISOCountryCode = array(); + include( WP_Statistics::$reg['plugin-dir'] . "includes/functions/country-codes.php" ); + $this->country_codes = $ISOCountryCode; + } + + return $this->country_codes; + } + + /** + * Returns an array of site id's + * + * @return array + */ + public function get_wp_sites_list() { + global $wp_version; + $site_list = array(); + + // wp_get_sites() is deprecated in 4.6 or above and replaced with get_sites(). + if ( version_compare( $wp_version, '4.6', '>=' ) ) { + $sites = get_sites(); + foreach ( $sites as $site ) { + $site_list[] = $site->blog_id; + } + } else { + $sites = wp_get_sites(); + foreach ( $sites as $site ) { + $site_list[] = $site['blog_id']; + } + } + + return $site_list; + } + + /** + * Sanitizes the referrer + * + * @param $referrer + * @param int $length + * + * @return string + */ + public function html_sanitize_referrer( $referrer, $length = - 1 ) { + $referrer = trim( $referrer ); + + if ( 'data:' == strtolower( substr( $referrer, 0, 5 ) ) ) { + $referrer = 'http://127.0.0.1'; + } + + if ( 'javascript:' == strtolower( substr( $referrer, 0, 11 ) ) ) { + $referrer = 'http://127.0.0.1'; + } + + if ( $length > 0 ) { + $referrer = substr( $referrer, 0, $length ); + } + + return htmlentities( $referrer, ENT_QUOTES ); + } + + /** + * Get referrer link + * + * @param string $referrer + * @param string $title + * @param bool $is_blank + * @return string + */ + public function get_referrer_link( $referrer, $title = '', $is_blank = false ) { + $html_referrer = $this->html_sanitize_referrer( $referrer ); + + if ( substr( $html_referrer, 0, 7 ) !== 'http://' and substr( $html_referrer, 0, 8 ) !== 'https://' ) { + // relative address, use '//' to adapt both http and https + $html_nr_referrer = '//' . $html_referrer; + } else { + $html_nr_referrer = $html_referrer; + } + + $base_url = parse_url( $html_nr_referrer ); + $title = ( trim( $title ) == "" ? $html_nr_referrer : $title ); + return "<a href='{$html_nr_referrer}' title='{$title}'" . ( $is_blank === true ? ' target="_blank"' : '' ) . ">{$base_url['host']}</a>"; + } + + + /** + * Unsupported Version Admin Notice + */ + static function unsupported_version_admin_notice() { + + $screen = get_current_screen(); + if ( 'plugins' !== $screen->id ) { + return; + } + ?> + <div class="error"> + <p style="max-width:800px;"> + <b><?php _e( 'WP Statistics Disabled', 'wp-statistics' ); ?></b> <?php _e( '— You are running an unsupported version of PHP.', 'wp-statistics' ); ?> + </p> + + <p style="max-width:800px;"><?php + echo sprintf( __( 'WP Statistics has detected PHP version %s which is unsupported, WP Statistics requires PHP Version %s or higher!', 'wp-statistics' ), phpversion(), WP_Statistics::$reg['required-php-version'] ); + echo '</p><p>'; + echo __( 'Please contact your hosting provider to upgrade to a supported version or disable WP Statistics to remove this message.', 'wp-statistics' ); + ?></p> + </div> + + <?php + } + + /** + * Adds the admin bar menu if the user has selected it. + */ + public function menubar() { + global $wp_admin_bar; + + if ( is_admin_bar_showing() && ( wp_statistics_check_access_user() ) ) { + + /** + * List Of Admin Bar Wordpress + * + * --- Array Arg --- + * Key : ID of Admin bar + */ + $admin_bar_list = array( + 'wp-statistic-menu' => array( + 'title' => '<span class="ab-icon"></span>', + 'href' => WP_Statistics_Admin_Pages::admin_url( 'overview' ) + ), + 'wp-statistics-menu-useronline' => array( + 'parent' => 'wp-statistic-menu', + 'title' => __( 'Online User', 'wp-statistics' ) . ": " . wp_statistics_useronline(), + 'href' => WP_Statistics_Admin_Pages::admin_url( 'online' ) + ), + 'wp-statistics-menu-todayvisitor' => array( + 'parent' => 'wp-statistic-menu', + 'title' => __( 'Today\'s Visitors', 'wp-statistics' ) . ": " . wp_statistics_visitor( 'today' ), + ), + 'wp-statistics-menu-todayvisit' => array( + 'parent' => 'wp-statistic-menu', + 'title' => __( 'Today\'s Visits', 'wp-statistics' ) . ": " . wp_statistics_visit( 'today' ) + ), + 'wp-statistics-menu-yesterdayvisitor' => array( + 'parent' => 'wp-statistic-menu', + 'title' => __( 'Yesterday\'s Visitors', 'wp-statistics' ) . ": " . wp_statistics_visitor( 'yesterday' ), + ), + 'wp-statistics-menu-yesterdayvisit' => array( + 'parent' => 'wp-statistic-menu', + 'title' => __( 'Yesterday\'s Visits', 'wp-statistics' ) . ": " . wp_statistics_visit( 'yesterday' ) + ), + 'wp-statistics-menu-viewstats' => array( + 'parent' => 'wp-statistic-menu', + 'title' => __( 'View Stats', 'wp-statistics' ), + 'href' => WP_Statistics_Admin_Pages::admin_url( 'overview' ) + ) + ); + foreach ( $admin_bar_list as $id => $v_admin_bar ) { + $wp_admin_bar->add_menu( array_merge( array( 'id' => $id ), $v_admin_bar ) ); + } + } + } + + /** + * Reset Online User Process By Option time + * + * @return string + */ + public function reset_user_online() { + global $WP_Statistics, $wpdb; + + //Check User Online is Active in this Wordpress + if ( $WP_Statistics->get_option( 'useronline' ) ) { + + //Get Not timestamp + $now = $WP_Statistics->current_date( 'U' ); + + // Set the default seconds a user needs to visit the site before they are considered offline. + $reset_time = 120; + + // Get the user set value for seconds to check for users online. + if ( $WP_Statistics->get_option( 'check_online' ) ) { + $reset_time = $WP_Statistics->get_option( 'check_online' ); + } + + // We want to delete users that are over the number of seconds set by the admin. + $time_diff = $now - $reset_time; + + //Last check Time + $wps_run = get_option( "wp_statistics_check_useronline" ); + if ( isset( $wps_run ) and is_numeric( $wps_run ) ) { + if ( ( $wps_run + $reset_time ) > $now ) { + return; + } + } + + // Call the deletion query. + $wpdb->query( "DELETE FROM `" . wp_statistics_db_table( 'useronline' ) . "` WHERE timestamp < {$time_diff}" ); + + //Update Last run this Action + update_option( "wp_statistics_check_useronline", $now ); + } + } + + /** + * Get Number Days From install this plugin + * this method used for `ALL` Option in Time Range Pages + */ + public static function get_number_days_install_plugin() { + global $wpdb, $WP_Statistics; + + //Create Empty default Option + $first_day = ''; + + //First Check Visitor Table , if not exist Web check Pages Table + $list_tbl = array( + 'visitor' => array( 'order_by' => 'ID', 'column' => 'last_counter' ), + 'pages' => array( 'order_by' => 'page_id', 'column' => 'date' ), + ); + foreach ( $list_tbl as $tbl => $val ) { + $first_day = $wpdb->get_var( "SELECT `" . $val['column'] . "` FROM `" . wp_statistics_db_table( $tbl ) . "` ORDER BY `" . $val['order_by'] . "` ASC LIMIT 1" ); + if ( ! empty( $first_day ) ) { + break; + } + } + + //Calculate hit day if range is exist + if ( empty( $first_day ) ) { + $result = array( + 'days' => 1, + 'date' => current_time( 'timestamp' ) + ); + } else { + $earlier = new \DateTime( $first_day ); + $later = new \DateTime( $WP_Statistics->Current_date( 'Y-m-d' ) ); + $result = array( + 'days' => $later->diff( $earlier )->format( "%a" ), + 'timestamp' => strtotime( $first_day ), + 'first_day' => $first_day, + ); + } + + return $result; + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/classes/important.txt b/wp-content/plugins/wp-statistics/includes/classes/important.txt new file mode 100644 index 0000000..0a3a1a9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/classes/important.txt @@ -0,0 +1,2 @@ +Please add "WP_Statistics_" before any class name +This is for an internal rule to load classes fast! \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/functions/country-codes.php b/wp-content/plugins/wp-statistics/includes/functions/country-codes.php new file mode 100644 index 0000000..58599b1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/functions/country-codes.php @@ -0,0 +1,287 @@ +<?php +/* + This is a list of all known country codes and their country names. + + It is used in several places in the plugin and is therefore centralized here for ease of update. +*/ +$ISOCountryCode['000'] = _x( 'Unknown', 'Country', 'wp-statistics' ); +$ISOCountryCode['AF'] = "Afghanistan"; +$ISOCountryCode['AX'] = "Ã…land Islands"; +$ISOCountryCode['AL'] = "Albania"; +$ISOCountryCode['DZ'] = "Algeria"; +$ISOCountryCode['AS'] = "American Samoa"; +$ISOCountryCode['AD'] = "Andorra"; +$ISOCountryCode['AO'] = "Angola"; +$ISOCountryCode['AI'] = "Anguilla"; +$ISOCountryCode['AQ'] = "Antarctica"; +$ISOCountryCode['AG'] = "Antigua and Barbuda"; +$ISOCountryCode['AR'] = "Argentina"; +$ISOCountryCode['AM'] = "Armenia"; +$ISOCountryCode['AW'] = "Aruba"; +$ISOCountryCode['AU'] = "Australia"; +$ISOCountryCode['AT'] = "Austria"; +$ISOCountryCode['AZ'] = "Azerbaijan"; +$ISOCountryCode['BS'] = "Bahamas"; +$ISOCountryCode['BH'] = "Bahrain"; +$ISOCountryCode['BD'] = "Bangladesh"; +$ISOCountryCode['BB'] = "Barbados"; +$ISOCountryCode['BY'] = "Belarus"; +$ISOCountryCode['BE'] = "Belgium"; +$ISOCountryCode['BZ'] = "Belize"; +$ISOCountryCode['BJ'] = "Benin"; +$ISOCountryCode['BM'] = "Bermuda"; +$ISOCountryCode['BT'] = "Bhutan"; +$ISOCountryCode['BO'] = "Bolivia, Plurinational State of"; +$ISOCountryCode['BQ'] = "Bonaire, Sint Eustatius and Saba"; +$ISOCountryCode['BA'] = "Bosnia and Herzegovina"; +$ISOCountryCode['BW'] = "Botswana"; +$ISOCountryCode['BV'] = "Bouvet Island"; +$ISOCountryCode['BR'] = "Brazil"; +$ISOCountryCode['BQ'] = "British Antarctic Territory"; +$ISOCountryCode['IO'] = "British Indian Ocean Territory"; +$ISOCountryCode['BN'] = "Brunei Darussalam"; +$ISOCountryCode['BG'] = "Bulgaria"; +$ISOCountryCode['BF'] = "Burkina Faso"; +$ISOCountryCode['BU'] = "Burma"; +$ISOCountryCode['BI'] = "Burundi"; +$ISOCountryCode['BY'] = "Belarus"; +$ISOCountryCode['KH'] = "Cambodia"; +$ISOCountryCode['CM'] = "Cameroon"; +$ISOCountryCode['CA'] = "Canada"; +$ISOCountryCode['CT'] = "Canton and Enderbury Islands"; +$ISOCountryCode['CV'] = "Cape Verde"; +$ISOCountryCode['KY'] = "Cayman Islands"; +$ISOCountryCode['CF'] = "Central African Republic"; +$ISOCountryCode['TD'] = "Chad"; +$ISOCountryCode['CL'] = "Chile"; +$ISOCountryCode['CN'] = "China"; +$ISOCountryCode['CX'] = "Christmas Island"; +$ISOCountryCode['CC'] = "Cocos (Keeling) Islands"; +$ISOCountryCode['CO'] = "Colombia"; +$ISOCountryCode['KM'] = "Comoros"; +$ISOCountryCode['CG'] = "Congo"; +$ISOCountryCode['CD'] = "Congo (the Democratic Republic of the)"; +$ISOCountryCode['CK'] = "Cook Islands"; +$ISOCountryCode['CR'] = "Costa Rica"; +$ISOCountryCode['CI'] = "Côte d’Ivoire"; +$ISOCountryCode['HR'] = "Croatia"; +$ISOCountryCode['CU'] = "Cuba"; +$ISOCountryCode['CW'] = "Curaçao"; +$ISOCountryCode['CY'] = "Cyprus"; +$ISOCountryCode['CZ'] = "Czech Republic"; +$ISOCountryCode['CS'] = "Czechoslovakia"; +$ISOCountryCode['DY'] = "Dahomey"; +$ISOCountryCode['DK'] = "Denmark"; +$ISOCountryCode['DJ'] = "Djibouti"; +$ISOCountryCode['DM'] = "Dominica"; +$ISOCountryCode['DO'] = "Dominican Republic"; +$ISOCountryCode['NQ'] = "Dronning Maud Land"; +$ISOCountryCode['TP'] = "East Timor"; +$ISOCountryCode['EC'] = "Ecuador"; +$ISOCountryCode['EG'] = "Egypt"; +$ISOCountryCode['SV'] = "El Salvador"; +$ISOCountryCode['GQ'] = "Equatorial Guinea"; +$ISOCountryCode['ER'] = "Eritrea"; +$ISOCountryCode['EE'] = "Estonia"; +$ISOCountryCode['ET'] = "Ethiopia"; +$ISOCountryCode['FK'] = "Falkland Islands [Malvinas]"; +$ISOCountryCode['FO'] = "Faroe Islands"; +$ISOCountryCode['FJ'] = "Fiji"; +$ISOCountryCode['FI'] = "Finland"; +$ISOCountryCode['FR'] = "France"; +$ISOCountryCode['FX'] = "France, Metropolitan"; +$ISOCountryCode['AI'] = "French Afars and Issas"; +$ISOCountryCode['GF'] = "French Guiana"; +$ISOCountryCode['PF'] = "French Polynesia"; +$ISOCountryCode['FQ'] = "French Southern and Antarctic Territories"; +$ISOCountryCode['TF'] = "French Southern Territories"; +$ISOCountryCode['GA'] = "Gabon"; +$ISOCountryCode['GM'] = "Gambia"; +$ISOCountryCode['GE'] = "Georgia"; +$ISOCountryCode['DD'] = "German Democratic Republic"; +$ISOCountryCode['DE'] = "Germany"; +$ISOCountryCode['GH'] = "Ghana"; +$ISOCountryCode['GI'] = "Gibraltar"; +$ISOCountryCode['GR'] = "Greece"; +$ISOCountryCode['GL'] = "Greenland"; +$ISOCountryCode['GD'] = "Grenada"; +$ISOCountryCode['GP'] = "Guadeloupe"; +$ISOCountryCode['GU'] = "Guam"; +$ISOCountryCode['GT'] = "Guatemala"; +$ISOCountryCode['GG'] = "Guernsey"; +$ISOCountryCode['GN'] = "Guinea"; +$ISOCountryCode['GW'] = "Guinea-Bissau"; +$ISOCountryCode['GY'] = "Guyana"; +$ISOCountryCode['HT'] = "Haiti"; +$ISOCountryCode['HM'] = "Heard Island and McDonald Islands"; +$ISOCountryCode['VA'] = "Holy See [Vatican City State]"; +$ISOCountryCode['HN'] = "Honduras"; +$ISOCountryCode['HK'] = "Hong Kong"; +$ISOCountryCode['HU'] = "Hungary"; +$ISOCountryCode['IS'] = "Iceland"; +$ISOCountryCode['IN'] = "India"; +$ISOCountryCode['ID'] = "Indonesia"; +$ISOCountryCode['IR'] = "Iran"; +$ISOCountryCode['IQ'] = "Iraq"; +$ISOCountryCode['IE'] = "Ireland"; +$ISOCountryCode['IM'] = "Isle of Man"; +$ISOCountryCode['IL'] = "Israel"; +$ISOCountryCode['IT'] = "Italy"; +$ISOCountryCode['JM'] = "Jamaica"; +$ISOCountryCode['JP'] = "Japan"; +$ISOCountryCode['JE'] = "Jersey"; +$ISOCountryCode['JT'] = "Johnston Island"; +$ISOCountryCode['JO'] = "Jordan"; +$ISOCountryCode['KZ'] = "Kazakhstan"; +$ISOCountryCode['KE'] = "Kenya"; +$ISOCountryCode['KI'] = "Kiribati"; +$ISOCountryCode['KP'] = "Korea (the Democratic People's Republic of)"; +$ISOCountryCode['KR'] = "Korea (the Republic of)"; +$ISOCountryCode['KW'] = "Kuwait"; +$ISOCountryCode['KG'] = "Kyrgyzstan"; +$ISOCountryCode['LA'] = "Lao People's Democratic Republic"; +$ISOCountryCode['LV'] = "Latvia"; +$ISOCountryCode['LB'] = "Lebanon"; +$ISOCountryCode['LS'] = "Lesotho"; +$ISOCountryCode['LR'] = "Liberia"; +$ISOCountryCode['LY'] = "Libya"; +$ISOCountryCode['LI'] = "Liechtenstein"; +$ISOCountryCode['LT'] = "Lithuania"; +$ISOCountryCode['LU'] = "Luxembourg"; +$ISOCountryCode['MO'] = "Macao"; +$ISOCountryCode['MK'] = "Macedonia (the former Yugoslav Republic of)"; +$ISOCountryCode['MG'] = "Madagascar"; +$ISOCountryCode['MW'] = "Malawi"; +$ISOCountryCode['MY'] = "Malaysia"; +$ISOCountryCode['MV'] = "Maldives"; +$ISOCountryCode['ML'] = "Mali"; +$ISOCountryCode['MT'] = "Malta"; +$ISOCountryCode['MH'] = "Marshall Islands"; +$ISOCountryCode['MQ'] = "Martinique"; +$ISOCountryCode['MR'] = "Mauritania"; +$ISOCountryCode['MU'] = "Mauritius"; +$ISOCountryCode['YT'] = "Mayotte"; +$ISOCountryCode['MX'] = "Mexico"; +$ISOCountryCode['FM'] = "Micronesia (the Federated States of)"; +$ISOCountryCode['MI'] = "Midway Islands"; +$ISOCountryCode['MD'] = "Moldova (the Republic of)"; +$ISOCountryCode['MC'] = "Monaco"; +$ISOCountryCode['MN'] = "Mongolia"; +$ISOCountryCode['ME'] = "Montenegro"; +$ISOCountryCode['MS'] = "Montserrat"; +$ISOCountryCode['MA'] = "Morocco"; +$ISOCountryCode['MZ'] = "Mozambique"; +$ISOCountryCode['MM'] = "Myanmar"; +$ISOCountryCode['NA'] = "Namibia"; +$ISOCountryCode['NR'] = "Nauru"; +$ISOCountryCode['NP'] = "Nepal"; +$ISOCountryCode['NL'] = "Netherlands"; +$ISOCountryCode['AN'] = "Netherlands Antilles"; +$ISOCountryCode['NT'] = "Neutral Zone"; +$ISOCountryCode['NC'] = "New Caledonia"; +$ISOCountryCode['NH'] = "New Hebrides"; +$ISOCountryCode['NZ'] = "New Zealand"; +$ISOCountryCode['NI'] = "Nicaragua"; +$ISOCountryCode['NE'] = "Niger"; +$ISOCountryCode['NG'] = "Nigeria"; +$ISOCountryCode['NU'] = "Niue"; +$ISOCountryCode['NF'] = "Norfolk Island"; +$ISOCountryCode['MP'] = "Northern Mariana Islands"; +$ISOCountryCode['NO'] = "Norway"; +$ISOCountryCode['OM'] = "Oman"; +$ISOCountryCode['PC'] = "Pacific Islands (Trust Territory)"; +$ISOCountryCode['PK'] = "Pakistan"; +$ISOCountryCode['PW'] = "Palau"; +$ISOCountryCode['PS'] = "Palestine, State of"; +$ISOCountryCode['PA'] = "Panama"; +$ISOCountryCode['PZ'] = "Panama Canal Zone"; +$ISOCountryCode['PG'] = "Papua New Guinea"; +$ISOCountryCode['PY'] = "Paraguay"; +$ISOCountryCode['PE'] = "Peru"; +$ISOCountryCode['PH'] = "Philippines"; +$ISOCountryCode['PN'] = "Pitcairn"; +$ISOCountryCode['PL'] = "Poland"; +$ISOCountryCode['PT'] = "Portugal"; +$ISOCountryCode['PR'] = "Puerto Rico"; +$ISOCountryCode['QA'] = "Qatar"; +$ISOCountryCode['RE'] = "Réunion"; +$ISOCountryCode['RO'] = "Romania"; +$ISOCountryCode['RU'] = "Russian Federation"; +$ISOCountryCode['RW'] = "Rwanda"; +$ISOCountryCode['BL'] = "Saint Barthélemy"; +$ISOCountryCode['SH'] = "Saint Helena, Ascension and Tristan da Cunha"; +$ISOCountryCode['KN'] = "Saint Kitts and Nevis"; +$ISOCountryCode['LC'] = "Saint Lucia"; +$ISOCountryCode['MF'] = "Saint Martin (French part)"; +$ISOCountryCode['PM'] = "Saint Pierre and Miquelon"; +$ISOCountryCode['VC'] = "Saint Vincent and the Grenadines"; +$ISOCountryCode['WS'] = "Samoa"; +$ISOCountryCode['SM'] = "San Marino"; +$ISOCountryCode['ST'] = "Sao Tome and Principe"; +$ISOCountryCode['SA'] = "Saudi Arabia"; +$ISOCountryCode['SN'] = "Senegal"; +$ISOCountryCode['RS'] = "Serbia"; +$ISOCountryCode['CS'] = "Serbia and Montenegro"; +$ISOCountryCode['SC'] = "Seychelles"; +$ISOCountryCode['SL'] = "Sierra Leone"; +$ISOCountryCode['SK'] = "Sikkim"; +$ISOCountryCode['SG'] = "Singapore"; +$ISOCountryCode['SX'] = "Sint Maarten (Dutch part)"; +$ISOCountryCode['SK'] = "Slovakia"; +$ISOCountryCode['SI'] = "Slovenia"; +$ISOCountryCode['SB'] = "Solomon Islands"; +$ISOCountryCode['SO'] = "Somalia"; +$ISOCountryCode['ZA'] = "South Africa"; +$ISOCountryCode['GS'] = "South Georgia and the South Sandwich Islands"; +$ISOCountryCode['SS'] = "South Sudan "; +$ISOCountryCode['RH'] = "Southern Rhodesia"; +$ISOCountryCode['ES'] = "Spain"; +$ISOCountryCode['LK'] = "Sri Lanka"; +$ISOCountryCode['SD'] = "Sudan"; +$ISOCountryCode['SR'] = "Suriname"; +$ISOCountryCode['SJ'] = "Svalbard and Jan Mayen"; +$ISOCountryCode['SZ'] = "Swaziland"; +$ISOCountryCode['SE'] = "Sweden"; +$ISOCountryCode['CH'] = "Switzerland"; +$ISOCountryCode['SY'] = "Syrian Arab Republic"; +$ISOCountryCode['TW'] = "Taiwan"; +$ISOCountryCode['TJ'] = "Tajikistan"; +$ISOCountryCode['TZ'] = "Tanzania, United Republic of"; +$ISOCountryCode['TH'] = "Thailand"; +$ISOCountryCode['TL'] = "Timor-Leste"; +$ISOCountryCode['TG'] = "Togo"; +$ISOCountryCode['TK'] = "Tokelau"; +$ISOCountryCode['TO'] = "Tonga"; +$ISOCountryCode['TT'] = "Trinidad and Tobago"; +$ISOCountryCode['TN'] = "Tunisia"; +$ISOCountryCode['TR'] = "Turkey"; +$ISOCountryCode['TM'] = "Turkmenistan"; +$ISOCountryCode['TC'] = "Turks and Caicos Islands"; +$ISOCountryCode['TV'] = "Tuvalu"; +$ISOCountryCode['UG'] = "Uganda"; +$ISOCountryCode['UA'] = "Ukraine"; +$ISOCountryCode['AE'] = "United Arab Emirates"; +$ISOCountryCode['GB'] = "United Kingdom"; +$ISOCountryCode['US'] = "United States"; +$ISOCountryCode['UM'] = "United States Minor Outlying Islands"; +$ISOCountryCode['PU'] = "United States Miscellaneous Pacific Islands"; +$ISOCountryCode['HV'] = "Upper Volta"; +$ISOCountryCode['UY'] = "Uruguay"; +$ISOCountryCode['SU'] = "USSR"; +$ISOCountryCode['UZ'] = "Uzbekistan"; +$ISOCountryCode['VU'] = "Vanuatu"; +$ISOCountryCode['VE'] = "Venezuela, Bolivarian Republic of "; +$ISOCountryCode['VN'] = "Viet Nam"; +$ISOCountryCode['VD'] = "Viet-Nam, Democratic Republic of"; +$ISOCountryCode['VG'] = "Virgin Islands (British)"; +$ISOCountryCode['VI'] = "Virgin Islands (U.S.)"; +$ISOCountryCode['WK'] = "Wake Island"; +$ISOCountryCode['WF'] = "Wallis and Futuna"; +$ISOCountryCode['EH'] = "Western Sahara"; +$ISOCountryCode['XK'] = "Kosovo"; +$ISOCountryCode['YE'] = "Yemen"; +$ISOCountryCode['YD'] = "Yemen, Democratic"; +$ISOCountryCode['YU'] = "Yugoslavia"; +$ISOCountryCode['ZR'] = "Zaire"; +$ISOCountryCode['ZM'] = "Zambia"; +$ISOCountryCode['ZW'] = "Zimbabwe"; diff --git a/wp-content/plugins/wp-statistics/includes/functions/country-coordinates.php b/wp-content/plugins/wp-statistics/includes/functions/country-coordinates.php new file mode 100644 index 0000000..994bb58 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/functions/country-coordinates.php @@ -0,0 +1,249 @@ +<?php +/* + This is a list of all known country codes and their latitue/longitude values. + + It is used for the map in the overview page. +*/ +$CountryCoordinates["AF"] = array( "lat" => "33", "lng" => "65" ); +$CountryCoordinates["AL"] = array( "lat" => "41", "lng" => "20" ); +$CountryCoordinates["DZ"] = array( "lat" => "28", "lng" => "3" ); +$CountryCoordinates["AS"] = array( "lat" => "-14.3333", "lng" => "-170" ); +$CountryCoordinates["AD"] = array( "lat" => "42.5", "lng" => "1.6" ); +$CountryCoordinates["AO"] = array( "lat" => "-12.5", "lng" => "18.5" ); +$CountryCoordinates["AI"] = array( "lat" => "18.25", "lng" => "-63.1667" ); +$CountryCoordinates["AQ"] = array( "lat" => "-90", "lng" => "0" ); +$CountryCoordinates["AG"] = array( "lat" => "17.05", "lng" => "-61.8" ); +$CountryCoordinates["AR"] = array( "lat" => "-34", "lng" => "-64" ); +$CountryCoordinates["AM"] = array( "lat" => "40", "lng" => "45" ); +$CountryCoordinates["AW"] = array( "lat" => "12.5", "lng" => "-69.9667" ); +$CountryCoordinates["AU"] = array( "lat" => "-27", "lng" => "133" ); +$CountryCoordinates["AT"] = array( "lat" => "47.3333", "lng" => "13.3333" ); +$CountryCoordinates["AZ"] = array( "lat" => "40.5", "lng" => "47.5" ); +$CountryCoordinates["BS"] = array( "lat" => "24.25", "lng" => "-76" ); +$CountryCoordinates["BH"] = array( "lat" => "26", "lng" => "50.55" ); +$CountryCoordinates["BD"] = array( "lat" => "24", "lng" => "90" ); +$CountryCoordinates["BB"] = array( "lat" => "13.1667", "lng" => "-59.5333" ); +$CountryCoordinates["BY"] = array( "lat" => "53", "lng" => "28" ); +$CountryCoordinates["BE"] = array( "lat" => "50.8333", "lng" => "4" ); +$CountryCoordinates["BZ"] = array( "lat" => "17.25", "lng" => "-88.75" ); +$CountryCoordinates["BJ"] = array( "lat" => "9.5", "lng" => "2.25" ); +$CountryCoordinates["BM"] = array( "lat" => "32.3333", "lng" => "-64.75" ); +$CountryCoordinates["BT"] = array( "lat" => "27.5", "lng" => "90.5" ); +$CountryCoordinates["BO"] = array( "lat" => "-17", "lng" => "-65" ); +$CountryCoordinates["BA"] = array( "lat" => "44", "lng" => "18" ); +$CountryCoordinates["BW"] = array( "lat" => "-22", "lng" => "24" ); +$CountryCoordinates["BV"] = array( "lat" => "-54.4333", "lng" => "3.4" ); +$CountryCoordinates["BR"] = array( "lat" => "-10", "lng" => "-55" ); +$CountryCoordinates["IO"] = array( "lat" => "-6", "lng" => "71.5" ); +$CountryCoordinates["BN"] = array( "lat" => "4.5", "lng" => "114.6667" ); +$CountryCoordinates["BG"] = array( "lat" => "43", "lng" => "25" ); +$CountryCoordinates["BF"] = array( "lat" => "13", "lng" => "-2" ); +$CountryCoordinates["BI"] = array( "lat" => "-3.5", "lng" => "30" ); +$CountryCoordinates["KH"] = array( "lat" => "13", "lng" => "105" ); +$CountryCoordinates["CM"] = array( "lat" => "6", "lng" => "12" ); +$CountryCoordinates["CA"] = array( "lat" => "60", "lng" => "-95" ); +$CountryCoordinates["CV"] = array( "lat" => "16", "lng" => "-24" ); +$CountryCoordinates["KY"] = array( "lat" => "19.5", "lng" => "-80.5" ); +$CountryCoordinates["CF"] = array( "lat" => "7", "lng" => "21" ); +$CountryCoordinates["TD"] = array( "lat" => "15", "lng" => "19" ); +$CountryCoordinates["CL"] = array( "lat" => "-30", "lng" => "-71" ); +$CountryCoordinates["CN"] = array( "lat" => "35", "lng" => "105" ); +$CountryCoordinates["CX"] = array( "lat" => "-10.5", "lng" => "105.6667" ); +$CountryCoordinates["CC"] = array( "lat" => "-12.5", "lng" => "96.8333" ); +$CountryCoordinates["CO"] = array( "lat" => "4", "lng" => "-72" ); +$CountryCoordinates["KM"] = array( "lat" => "-12.1667", "lng" => "44.25" ); +$CountryCoordinates["CG"] = array( "lat" => "-1", "lng" => "15" ); +$CountryCoordinates["CD"] = array( "lat" => "0", "lng" => "25" ); +$CountryCoordinates["CK"] = array( "lat" => "-21.2333", "lng" => "-159.7667" ); +$CountryCoordinates["CR"] = array( "lat" => "10", "lng" => "-84" ); +$CountryCoordinates["CI"] = array( "lat" => "8", "lng" => "-5" ); +$CountryCoordinates["HR"] = array( "lat" => "45.1667", "lng" => "15.5" ); +$CountryCoordinates["CU"] = array( "lat" => "21.5", "lng" => "-80" ); +$CountryCoordinates["CY"] = array( "lat" => "35", "lng" => "33" ); +$CountryCoordinates["CZ"] = array( "lat" => "49.75", "lng" => "15.5" ); +$CountryCoordinates["DK"] = array( "lat" => "56", "lng" => "10" ); +$CountryCoordinates["DJ"] = array( "lat" => "11.5", "lng" => "43" ); +$CountryCoordinates["DM"] = array( "lat" => "15.4167", "lng" => "-61.3333" ); +$CountryCoordinates["DO"] = array( "lat" => "19", "lng" => "-70.6667" ); +$CountryCoordinates["EC"] = array( "lat" => "-2", "lng" => "-77.5" ); +$CountryCoordinates["EG"] = array( "lat" => "27", "lng" => "30" ); +$CountryCoordinates["SV"] = array( "lat" => "13.8333", "lng" => "-88.9167" ); +$CountryCoordinates["GQ"] = array( "lat" => "2", "lng" => "10" ); +$CountryCoordinates["ER"] = array( "lat" => "15", "lng" => "39" ); +$CountryCoordinates["EE"] = array( "lat" => "59", "lng" => "26" ); +$CountryCoordinates["ET"] = array( "lat" => "8", "lng" => "38" ); +$CountryCoordinates["FK"] = array( "lat" => "-51.75", "lng" => "-59" ); +$CountryCoordinates["FO"] = array( "lat" => "62", "lng" => "-7" ); +$CountryCoordinates["FJ"] = array( "lat" => "-18", "lng" => "175" ); +$CountryCoordinates["FI"] = array( "lat" => "64", "lng" => "26" ); +$CountryCoordinates["FR"] = array( "lat" => "46", "lng" => "2" ); +$CountryCoordinates["GF"] = array( "lat" => "4", "lng" => "-53" ); +$CountryCoordinates["PF"] = array( "lat" => "-15", "lng" => "-140" ); +$CountryCoordinates["TF"] = array( "lat" => "-43", "lng" => "67" ); +$CountryCoordinates["GA"] = array( "lat" => "-1", "lng" => "11.75" ); +$CountryCoordinates["GM"] = array( "lat" => "13.4667", "lng" => "-16.5667" ); +$CountryCoordinates["GE"] = array( "lat" => "42", "lng" => "43.5" ); +$CountryCoordinates["DE"] = array( "lat" => "51", "lng" => "9" ); +$CountryCoordinates["GH"] = array( "lat" => "8", "lng" => "-2" ); +$CountryCoordinates["GI"] = array( "lat" => "36.1833", "lng" => "-5.3667" ); +$CountryCoordinates["GR"] = array( "lat" => "39", "lng" => "22" ); +$CountryCoordinates["GL"] = array( "lat" => "72", "lng" => "-40" ); +$CountryCoordinates["GD"] = array( "lat" => "12.1167", "lng" => "-61.6667" ); +$CountryCoordinates["GP"] = array( "lat" => "16.25", "lng" => "-61.5833" ); +$CountryCoordinates["GU"] = array( "lat" => "13.4667", "lng" => "144.7833" ); +$CountryCoordinates["GT"] = array( "lat" => "15.5", "lng" => "-90.25" ); +$CountryCoordinates["GG"] = array( "lat" => "49.5", "lng" => "-2.56" ); +$CountryCoordinates["GN"] = array( "lat" => "11", "lng" => "-10" ); +$CountryCoordinates["GW"] = array( "lat" => "12", "lng" => "-15" ); +$CountryCoordinates["GY"] = array( "lat" => "5", "lng" => "-59" ); +$CountryCoordinates["HT"] = array( "lat" => "19", "lng" => "-72.4167" ); +$CountryCoordinates["HM"] = array( "lat" => "-53.1", "lng" => "72.5167" ); +$CountryCoordinates["VA"] = array( "lat" => "41.9", "lng" => "12.45" ); +$CountryCoordinates["HN"] = array( "lat" => "15", "lng" => "-86.5" ); +$CountryCoordinates["HK"] = array( "lat" => "22.25", "lng" => "114.1667" ); +$CountryCoordinates["HU"] = array( "lat" => "47", "lng" => "20" ); +$CountryCoordinates["IS"] = array( "lat" => "65", "lng" => "-18" ); +$CountryCoordinates["IN"] = array( "lat" => "20", "lng" => "77" ); +$CountryCoordinates["ID"] = array( "lat" => "-5", "lng" => "120" ); +$CountryCoordinates["IR"] = array( "lat" => "32", "lng" => "53" ); +$CountryCoordinates["IQ"] = array( "lat" => "33", "lng" => "44" ); +$CountryCoordinates["IE"] = array( "lat" => "53", "lng" => "-8" ); +$CountryCoordinates["IM"] = array( "lat" => "54.23", "lng" => "-4.55" ); +$CountryCoordinates["IL"] = array( "lat" => "31.5", "lng" => "34.75" ); +$CountryCoordinates["IT"] = array( "lat" => "42.8333", "lng" => "12.8333" ); +$CountryCoordinates["JM"] = array( "lat" => "18.25", "lng" => "-77.5" ); +$CountryCoordinates["JP"] = array( "lat" => "36", "lng" => "138" ); +$CountryCoordinates["JE"] = array( "lat" => "49.21", "lng" => "-2.13" ); +$CountryCoordinates["JO"] = array( "lat" => "31", "lng" => "36" ); +$CountryCoordinates["KZ"] = array( "lat" => "48", "lng" => "68" ); +$CountryCoordinates["KE"] = array( "lat" => "1", "lng" => "38" ); +$CountryCoordinates["KI"] = array( "lat" => "1.4167", "lng" => "173" ); +$CountryCoordinates["KP"] = array( "lat" => "40", "lng" => "127" ); +$CountryCoordinates["KR"] = array( "lat" => "37", "lng" => "127.5" ); +$CountryCoordinates["KW"] = array( "lat" => "29.3375", "lng" => "47.6581" ); +$CountryCoordinates["KG"] = array( "lat" => "41", "lng" => "75" ); +$CountryCoordinates["LA"] = array( "lat" => "18", "lng" => "105" ); +$CountryCoordinates["LV"] = array( "lat" => "57", "lng" => "25" ); +$CountryCoordinates["LB"] = array( "lat" => "33.8333", "lng" => "35.8333" ); +$CountryCoordinates["LS"] = array( "lat" => "-29.5", "lng" => "28.5" ); +$CountryCoordinates["LR"] = array( "lat" => "6.5", "lng" => "-9.5" ); +$CountryCoordinates["LY"] = array( "lat" => "25", "lng" => "17" ); +$CountryCoordinates["LI"] = array( "lat" => "47.1667", "lng" => "9.5333" ); +$CountryCoordinates["LT"] = array( "lat" => "56", "lng" => "24" ); +$CountryCoordinates["LU"] = array( "lat" => "49.75", "lng" => "6.1667" ); +$CountryCoordinates["MO"] = array( "lat" => "22.1667", "lng" => "113.55" ); +$CountryCoordinates["MK"] = array( "lat" => "41.8333", "lng" => "22" ); +$CountryCoordinates["MG"] = array( "lat" => "-20", "lng" => "47" ); +$CountryCoordinates["MW"] = array( "lat" => "-13.5", "lng" => "34" ); +$CountryCoordinates["MY"] = array( "lat" => "2.5", "lng" => "112.5" ); +$CountryCoordinates["MV"] = array( "lat" => "3.25", "lng" => "73" ); +$CountryCoordinates["ML"] = array( "lat" => "17", "lng" => "-4" ); +$CountryCoordinates["MT"] = array( "lat" => "35.8333", "lng" => "14.5833" ); +$CountryCoordinates["MH"] = array( "lat" => "9", "lng" => "168" ); +$CountryCoordinates["MQ"] = array( "lat" => "14.6667", "lng" => "-61" ); +$CountryCoordinates["MR"] = array( "lat" => "20", "lng" => "-12" ); +$CountryCoordinates["MU"] = array( "lat" => "-20.2833", "lng" => "57.55" ); +$CountryCoordinates["YT"] = array( "lat" => "-12.8333", "lng" => "45.1667" ); +$CountryCoordinates["MX"] = array( "lat" => "23", "lng" => "-102" ); +$CountryCoordinates["FM"] = array( "lat" => "6.9167", "lng" => "158.25" ); +$CountryCoordinates["MD"] = array( "lat" => "47", "lng" => "29" ); +$CountryCoordinates["MC"] = array( "lat" => "43.7333", "lng" => "7.4" ); +$CountryCoordinates["MN"] = array( "lat" => "46", "lng" => "105" ); +$CountryCoordinates["ME"] = array( "lat" => "42", "lng" => "19" ); +$CountryCoordinates["MS"] = array( "lat" => "16.75", "lng" => "-62.2" ); +$CountryCoordinates["MA"] = array( "lat" => "32", "lng" => "-5" ); +$CountryCoordinates["MZ"] = array( "lat" => "-18.25", "lng" => "35" ); +$CountryCoordinates["MM"] = array( "lat" => "22", "lng" => "98" ); +$CountryCoordinates["NA"] = array( "lat" => "-22", "lng" => "17" ); +$CountryCoordinates["NR"] = array( "lat" => "-0.5333", "lng" => "166.9167" ); +$CountryCoordinates["NP"] = array( "lat" => "28", "lng" => "84" ); +$CountryCoordinates["NL"] = array( "lat" => "52.5", "lng" => "5.75" ); +$CountryCoordinates["AN"] = array( "lat" => "12.25", "lng" => "-68.75" ); +$CountryCoordinates["NC"] = array( "lat" => "-21.5", "lng" => "165.5" ); +$CountryCoordinates["NZ"] = array( "lat" => "-41", "lng" => "174" ); +$CountryCoordinates["NI"] = array( "lat" => "13", "lng" => "-85" ); +$CountryCoordinates["NE"] = array( "lat" => "16", "lng" => "8" ); +$CountryCoordinates["NG"] = array( "lat" => "10", "lng" => "8" ); +$CountryCoordinates["NU"] = array( "lat" => "-19.0333", "lng" => "-169.8667" ); +$CountryCoordinates["NF"] = array( "lat" => "-29.0333", "lng" => "167.95" ); +$CountryCoordinates["MP"] = array( "lat" => "15.2", "lng" => "145.75" ); +$CountryCoordinates["NO"] = array( "lat" => "62", "lng" => "10" ); +$CountryCoordinates["OM"] = array( "lat" => "21", "lng" => "57" ); +$CountryCoordinates["PK"] = array( "lat" => "30", "lng" => "70" ); +$CountryCoordinates["PW"] = array( "lat" => "7.5", "lng" => "134.5" ); +$CountryCoordinates["PS"] = array( "lat" => "32", "lng" => "35.25" ); +$CountryCoordinates["PA"] = array( "lat" => "9", "lng" => "-80" ); +$CountryCoordinates["PG"] = array( "lat" => "-6", "lng" => "147" ); +$CountryCoordinates["PY"] = array( "lat" => "-23", "lng" => "-58" ); +$CountryCoordinates["PE"] = array( "lat" => "-10", "lng" => "-76" ); +$CountryCoordinates["PH"] = array( "lat" => "13", "lng" => "122" ); +$CountryCoordinates["PN"] = array( "lat" => "-24.7", "lng" => "-127.4" ); +$CountryCoordinates["PL"] = array( "lat" => "52", "lng" => "20" ); +$CountryCoordinates["PT"] = array( "lat" => "39.5", "lng" => "-8" ); +$CountryCoordinates["PR"] = array( "lat" => "18.25", "lng" => "-66.5" ); +$CountryCoordinates["QA"] = array( "lat" => "25.5", "lng" => "51.25" ); +$CountryCoordinates["RE"] = array( "lat" => "-21.1", "lng" => "55.6" ); +$CountryCoordinates["RO"] = array( "lat" => "46", "lng" => "25" ); +$CountryCoordinates["RU"] = array( "lat" => "60", "lng" => "100" ); +$CountryCoordinates["RW"] = array( "lat" => "-2", "lng" => "30" ); +$CountryCoordinates["SH"] = array( "lat" => "-15.9333", "lng" => "-5.7" ); +$CountryCoordinates["KN"] = array( "lat" => "17.3333", "lng" => "-62.75" ); +$CountryCoordinates["LC"] = array( "lat" => "13.8833", "lng" => "-61.1333" ); +$CountryCoordinates["PM"] = array( "lat" => "46.8333", "lng" => "-56.3333" ); +$CountryCoordinates["VC"] = array( "lat" => "13.25", "lng" => "-61.2" ); +$CountryCoordinates["WS"] = array( "lat" => "-13.5833", "lng" => "-172.3333" ); +$CountryCoordinates["SM"] = array( "lat" => "43.7667", "lng" => "12.4167" ); +$CountryCoordinates["ST"] = array( "lat" => "1", "lng" => "7" ); +$CountryCoordinates["SA"] = array( "lat" => "25", "lng" => "45" ); +$CountryCoordinates["SN"] = array( "lat" => "14", "lng" => "-14" ); +$CountryCoordinates["RS"] = array( "lat" => "44", "lng" => "21" ); +$CountryCoordinates["SC"] = array( "lat" => "-4.5833", "lng" => "55.6667" ); +$CountryCoordinates["SL"] = array( "lat" => "8.5", "lng" => "-11.5" ); +$CountryCoordinates["SG"] = array( "lat" => "1.3667", "lng" => "103.8" ); +$CountryCoordinates["SK"] = array( "lat" => "48.6667", "lng" => "19.5" ); +$CountryCoordinates["SI"] = array( "lat" => "46", "lng" => "15" ); +$CountryCoordinates["SB"] = array( "lat" => "-8", "lng" => "159" ); +$CountryCoordinates["SO"] = array( "lat" => "10", "lng" => "49" ); +$CountryCoordinates["ZA"] = array( "lat" => "-29", "lng" => "24" ); +$CountryCoordinates["GS"] = array( "lat" => "-54.5", "lng" => "-37" ); +$CountryCoordinates["ES"] = array( "lat" => "40", "lng" => "-4" ); +$CountryCoordinates["LK"] = array( "lat" => "7", "lng" => "81" ); +$CountryCoordinates["SD"] = array( "lat" => "15", "lng" => "30" ); +$CountryCoordinates["SR"] = array( "lat" => "4", "lng" => "-56" ); +$CountryCoordinates["SJ"] = array( "lat" => "78", "lng" => "20" ); +$CountryCoordinates["SZ"] = array( "lat" => "-26.5", "lng" => "31.5" ); +$CountryCoordinates["SE"] = array( "lat" => "62", "lng" => "15" ); +$CountryCoordinates["CH"] = array( "lat" => "47", "lng" => "8" ); +$CountryCoordinates["SY"] = array( "lat" => "35", "lng" => "38" ); +$CountryCoordinates["TW"] = array( "lat" => "23.5", "lng" => "121" ); +$CountryCoordinates["TJ"] = array( "lat" => "39", "lng" => "71" ); +$CountryCoordinates["TZ"] = array( "lat" => "-6", "lng" => "35" ); +$CountryCoordinates["TH"] = array( "lat" => "15", "lng" => "100" ); +$CountryCoordinates["TL"] = array( "lat" => "-8.55", "lng" => "125.5167" ); +$CountryCoordinates["TG"] = array( "lat" => "8", "lng" => "1.1667" ); +$CountryCoordinates["TK"] = array( "lat" => "-9", "lng" => "-172" ); +$CountryCoordinates["TO"] = array( "lat" => "-20", "lng" => "-175" ); +$CountryCoordinates["TT"] = array( "lat" => "11", "lng" => "-61" ); +$CountryCoordinates["TN"] = array( "lat" => "34", "lng" => "9" ); +$CountryCoordinates["TR"] = array( "lat" => "39", "lng" => "35" ); +$CountryCoordinates["TM"] = array( "lat" => "40", "lng" => "60" ); +$CountryCoordinates["TC"] = array( "lat" => "21.75", "lng" => "-71.5833" ); +$CountryCoordinates["TV"] = array( "lat" => "-8", "lng" => "178" ); +$CountryCoordinates["UG"] = array( "lat" => "1", "lng" => "32" ); +$CountryCoordinates["UA"] = array( "lat" => "49", "lng" => "32" ); +$CountryCoordinates["AE"] = array( "lat" => "24", "lng" => "54" ); +$CountryCoordinates["GB"] = array( "lat" => "54", "lng" => "-2" ); +$CountryCoordinates["US"] = array( "lat" => "38", "lng" => "-97" ); +$CountryCoordinates["UM"] = array( "lat" => "19.2833", "lng" => "166.6" ); +$CountryCoordinates["UY"] = array( "lat" => "-33", "lng" => "-56" ); +$CountryCoordinates["UZ"] = array( "lat" => "41", "lng" => "64" ); +$CountryCoordinates["VU"] = array( "lat" => "-16", "lng" => "167" ); +$CountryCoordinates["VE"] = array( "lat" => "8", "lng" => "-66" ); +$CountryCoordinates["VN"] = array( "lat" => "16", "lng" => "106" ); +$CountryCoordinates["VG"] = array( "lat" => "18.5", "lng" => "-64.5" ); +$CountryCoordinates["VI"] = array( "lat" => "18.3333", "lng" => "-64.8333" ); +$CountryCoordinates["WF"] = array( "lat" => "-13.3", "lng" => "-176.2" ); +$CountryCoordinates["EH"] = array( "lat" => "24.5", "lng" => "-13" ); +$CountryCoordinates["YE"] = array( "lat" => "15", "lng" => "48" ); +$CountryCoordinates["ZM"] = array( "lat" => "-15", "lng" => "30" ); +$CountryCoordinates["ZW"] = array( "lat" => "-20", "lng" => "30" ); diff --git a/wp-content/plugins/wp-statistics/includes/functions/functions.php b/wp-content/plugins/wp-statistics/includes/functions/functions.php new file mode 100644 index 0000000..2f39483 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/functions/functions.php @@ -0,0 +1,2264 @@ +<?php +/* + This is the primary set of functions used to calculate the statistics, they are available for other developers to call. + + NOTE: Many of the functions return an MySQL result object, using this object like a variable (ie. echo $result) will output + the number of rows returned, but you can also use it an a foreach loop to to get the details of the rows. +*/ + +/** + * Get Current Users online + * + * @param array $options + * @return mixed + */ +function wp_statistics_useronline( $options = array() ) { + global $wpdb, $WP_Statistics; + + //Check Parameter + $defaults = array( + /** + * Type Of Page in Wordpress + * @See WP_Statistics_Frontend\get_page_type + * + * -- Acceptable values -- + * + * post -> WordPress Post single page From All of public post Type + * page -> Wordpress page single page + * product -> WooCommerce product single page + * home -> Home Page website + * category -> Wordpress Category Page + * post_tag -> Wordpress Post Tags Page + * tax -> Wordpress Term Page for all Taxonomies + * author -> Wordpress Users page + * 404 -> 404 Not Found Page + * archive -> Wordpress Archive Page + * all -> All Site Page + * + */ + 'type' => 'all', + /** + * Wordpress Query object ID + * @example array('type' => 'product', 'ID' => 5) + */ + 'ID' => 0, + /** + * Get number of logged users or all users + * + * -- Acceptable values -- + * false -> Get Number of all users + * true -> Get Number of all logged users in wordpress + */ + 'logged_users' => false, + /** + * Get number User From Custom Country + * + * -- Acceptable values -- + * ISO Country Code -> For Get List @See \wp-statistics\includes\functions\country-code.php + * + */ + 'location' => 'all', + /** + * Search Filter by User agent name + * e.g : Firefox , Chrome , Safari , Unknown .. + * @see wp_statistics_get_browser_list() + * + */ + 'agent' => 'all', + /** + * Search filter by User Platform name + * e.g : Windows, iPad, Macintosh, Unknown, .. + * + */ + 'platform' => 'all' + ); + + // Parse incoming $args into an array and merge it with $defaults + $arg = wp_parse_args( $options, $defaults ); + + //Basic SQL + $sql = "SELECT COUNT(*) FROM " . wp_statistics_db_table( 'useronline' ); + + //Check Where Condition + $where = false; + + //Check Type of Page + if ( $arg['type'] != "all" ) { + $where[] = "`type`='" . $arg['type'] . "' AND `page_id` = " . $arg['ID']; + } + + //Check Custom user + if ( $arg['logged_users'] === true ) { + $where[] = "`user_id` > 0"; + } + + //Check Location + if ( $arg['location'] != "all" ) { + $ISOCountryCode = $WP_Statistics->get_country_codes(); + if ( array_key_exists( $arg['location'], $ISOCountryCode ) ) { + $where[] = "`location` = '" . $arg['location'] . "'"; + } + } + + //Check User Agent + if ( $arg['agent'] != "all" ) { + $where[] = "`agent` = '" . $arg['agent'] . "'"; + } + + //Check User Platform + if ( $arg['platform'] != "all" ) { + $where[] = "`platform` = '" . $arg['platform'] . "'"; + } + + //Push Conditions to SQL + if ( ! empty( $where ) ) { + $sql .= ' WHERE ' . implode( ' AND ', $where ); + } + + //Return Number od user Online + return $wpdb->get_var( $sql ); +} + +/** + * Create Condition Where Time in MySql + * + * @param string $field : date column name in database table + * @param string $time : Time return + * @param array $range : an array contain two Date e.g : array('start' => 'xx-xx-xx', 'end' => 'xx-xx-xx', 'is_day' => true, 'current_date' => true) + * + * ---- Time Range ----- + * today + * yesterday + * week + * month + * year + * total + * “-x†(i.e., “-10†for the past 10 days) + * ---------------------- + * + * @return string|bool + */ +function wp_statistics_mysql_time_conditions( $field = 'date', $time = 'total', $range = array() ) { + global $WP_Statistics; + + //Get Current Date From WP + $current_date = $WP_Statistics->Current_Date( 'Y-m-d' ); + + //Create Field Sql + $field_sql = function ( $time ) use ( $current_date, $field, $WP_Statistics, $range ) { + $is_current = array_key_exists( 'current_date', $range ); + return "`$field` " . ( $is_current === true ? '=' : 'BETWEEN' ) . " '{$WP_Statistics->Current_Date( 'Y-m-d', (int) $time )}'" . ( $is_current === false ? " AND '{$current_date}'" : "" ); + }; + + //Check Time + switch ( $time ) { + case 'today': + $where = "`$field` = '{$current_date}'"; + break; + case 'yesterday': + $where = "`$field` = '{$WP_Statistics->Current_Date( 'Y-m-d', -1 )}'"; + break; + case 'week': + $where = $field_sql( - 7 ); + break; + case 'month': + $where = $field_sql( - 30 ); + break; + case 'year': + $where = $field_sql( - 365 ); + break; + case 'total': + $where = ""; + break; + default: + if ( array_key_exists( 'is_day', $range ) ) { + //Check a day + $where = "`$field` = '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}'"; + } elseif ( array_key_exists( 'start', $range ) and array_key_exists( 'end', $range ) ) { + //Check Between Two Time + $where = "`$field` BETWEEN '{$WP_Statistics->Current_Date( 'Y-m-d', '-0', strtotime( $range['start'] ) )}' AND '{$WP_Statistics->Current_Date( 'Y-m-d', '-0', strtotime( $range['end'] ) )}'"; + } else { + //Check From a Date To Now + $where = $field_sql( $time ); + } + } + + return $where; +} + +/** + * This function get the visit statistics for a given time frame + * + * @param $time + * @param null $daily + * @return int + */ +function wp_statistics_visit( $time, $daily = null ) { + global $wpdb, $WP_Statistics; + + //Date Column Name in visits table + $table_name = wp_statistics_db_table( 'visit' ); + $date_column = 'last_counter'; + + //Prepare Selector Sql + $selector = 'SUM(visit)'; + if ( $daily == true ) { + $selector = '*'; + } + + //Generate Base Sql + $sql = "SELECT {$selector} FROM {$table_name}"; + + //Create Sum Visits variable + $sum = 0; + + //Check if daily Report + if ( $daily == true ) { + + $result = $wpdb->get_row( $sql . " WHERE `$date_column` = '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}'" ); + if ( null !== $result ) { + $sum = $result->visit; + } + + } else { + + //Generate MySql Time Conditions + $mysql_time_sql = wp_statistics_mysql_time_conditions( $date_column, $time ); + if ( ! empty( $mysql_time_sql ) ) { + $sql = $sql . ' WHERE ' . $mysql_time_sql; + } + + //Request To database + $result = $wpdb->get_var( $sql ); + + //Custom Action + if ( $time == "total" ) { + $result += $WP_Statistics->Get_Historical_Data( 'visits' ); + } + + $sum = $result; + } + + return ! is_numeric( $sum ) ? 0 : $sum; +} + +/** + * This function gets the visitor statistics for a given time frame. + * + * @param $time + * @param null $daily + * @param bool $count_only + * @param array $options + * @return int|null|string + */ +function wp_statistics_visitor( $time, $daily = null, $count_only = false, $options = array() ) { + global $wpdb, $WP_Statistics; + + //Check Parameter + $defaults = array( + /** + * Type Of Page in Wordpress + * @See WP_Statistics_Frontend\get_page_type + * + * -- Acceptable values -- + * + * post -> WordPress Post single page From All of public post Type + * page -> Wordpress page single page + * product -> WooCommerce product single page + * home -> Home Page website + * category -> Wordpress Category Page + * post_tag -> Wordpress Post Tags Page + * tax -> Wordpress Term Page for all Taxonomies + * author -> Wordpress Users page + * 404 -> 404 Not Found Page + * archive -> Wordpress Archive Page + * all -> All Site Page + * + */ + 'type' => 'all', + /** + * Wordpress Query object ID + * @example array('type' => 'product', 'ID' => 5) + */ + 'ID' => 0, + /** + * Get number User From Custom Country + * + * -- Acceptable values -- + * ISO Country Code -> For Get List @See \wp-statistics\includes\functions\country-code.php + * + */ + 'location' => 'all', + /** + * Search Filter by User agent name + * e.g : Firefox , Chrome , Safari , Unknown .. + * @see wp_statistics_get_browser_list() + * + */ + 'agent' => 'all', + /** + * Search filter by User Platform name + * e.g : Windows, iPad, Macintosh, Unknown, .. + * + */ + 'platform' => 'all' + ); + + // Parse incoming $args into an array and merge it with $defaults + $arg = wp_parse_args( $options, $defaults ); + + //Create History Visitors variable + $history = 0; + + //Prepare Selector Sql + $date_column = 'last_counter'; + $selector = '*'; + if ( $count_only == true ) { + $selector = 'count(last_counter)'; + } + + //Generate Base Sql + if ( $arg['type'] != "all" and $WP_Statistics->get_option( 'visitors_log' ) == true ) { + $sql = "SELECT {$selector} FROM `" . wp_statistics_db_table( 'visitor' ) . "` INNER JOIN `" . wp_statistics_db_table( "visitor_relationships" ) . "` ON `" . wp_statistics_db_table( "visitor_relationships" ) . "`.`visitor_id` = `" . wp_statistics_db_table( 'visitor' ) . "`.`ID` INNER JOIN `" . wp_statistics_db_table( 'pages' ) . "` ON `" . wp_statistics_db_table( 'pages' ) . "`.`page_id` = `" . wp_statistics_db_table( "visitor_relationships" ) . "` . `page_id`"; + } else { + $sql = "SELECT {$selector} FROM `" . wp_statistics_db_table( 'visitor' ) . "`"; + } + + //Check Where Condition + $where = false; + + //Check Type of Page + if ( $arg['type'] != "all" and $WP_Statistics->get_option( 'visitors_log' ) == true ) { + $where[] = "`" . wp_statistics_db_table( 'pages' ) . "`.`type`='" . $arg['type'] . "' AND `" . wp_statistics_db_table( 'pages' ) . "`.`page_id` = " . $arg['ID']; + } + + //Check Location + if ( $arg['location'] != "all" ) { + $ISOCountryCode = $WP_Statistics->get_country_codes(); + if ( array_key_exists( $arg['location'], $ISOCountryCode ) ) { + $where[] = "`" . wp_statistics_db_table( 'visitor' ) . "`.`location` = '" . $arg['location'] . "'"; + } + } + + //Check User Agent + if ( $arg['agent'] != "all" ) { + $where[] = "`" . wp_statistics_db_table( 'visitor' ) . "`.`agent` = '" . $arg['agent'] . "'"; + } + + //Check User Platform + if ( $arg['platform'] != "all" ) { + $where[] = "`" . wp_statistics_db_table( 'visitor' ) . "`.`platform` = '" . $arg['platform'] . "'"; + } + + //Check Date Time report + if ( $daily == true ) { + + //Get Only Current Day Visitors + $where[] = "`" . wp_statistics_db_table( 'visitor' ) . "`.`last_counter` = '" . $WP_Statistics->Current_Date( 'Y-m-d', $time ) . "'"; + } else { + + //Generate MySql Time Conditions + $mysql_time_sql = wp_statistics_mysql_time_conditions( $date_column, $time ); + if ( ! empty( $mysql_time_sql ) ) { + $where[] = $mysql_time_sql; + } + } + + //Push Conditions to SQL + if ( ! empty( $where ) ) { + $sql .= ' WHERE ' . implode( ' AND ', $where ); + } + + //Custom Action + if ( $time == "total" and $arg['type'] == "all" ) { + $history = $WP_Statistics->Get_Historical_Data( 'visitors' ); + } + + // Execute the SQL call, if we're only counting we can use get_var(), otherwise we use query(). + if ( $count_only == true ) { + $sum = $wpdb->get_var( $sql ); + $sum += $history; + } else { + $sum = $wpdb->query( $sql ); + } + + return $sum; +} + +/** + * This function returns the statistics for a given page. + * + * @param $time + * @param string $page_uri + * @param int $id + * @param null $rangestartdate + * @param null $rangeenddate + * @param bool $type + * @return int|null|string + */ +function wp_statistics_pages( $time, $page_uri = '', $id = - 1, $rangestartdate = null, $rangeenddate = null, $type = false ) { + global $wpdb, $WP_Statistics; + + //Date Column Name in visits table + $table_name = wp_statistics_db_table( 'pages' ); + $date_column = 'date'; + $history = 0; + + //Check Where Condition + $where = false; + + //Check Query By Page ID or Page Url + if ( $type != false and $id != - 1 ) { + $where[] = "`type`='" . $type . "' AND `page_id` = " . $id; + } else { + + // If no page URI has been passed in, get the current page URI. + if ( $page_uri == '' ) { + $page_uri = wp_statistics_get_uri(); + } + $page_uri_sql = esc_sql( $page_uri ); + + // If a page/post ID has been passed, use it to select the rows, otherwise use the URI. + if ( $id != - 1 ) { + $where[] = "`id`= " . absint( $id ); + $history_key = 'page'; + $history_id = absint( $id ); + } else { + $where[] = "`URI` = '{$page_uri_sql}'"; + $history_key = 'uri'; + $history_id = $page_uri; + } + + //Custom Action + if ( $time == "total" ) { + $history = $WP_Statistics->Get_Historical_Data( $history_key, $history_id ); + } + } + + //Prepare Time + $time_array = array(); + if ( is_numeric( $time ) ) { + $time_array['is_day'] = true; + } + if ( ! is_null( $rangestartdate ) and ! is_null( $rangeenddate ) ) { + $time_array = array( 'start' => $rangestartdate, 'end' => $rangeenddate ); + } + + //Check MySql Time Conditions + $mysql_time_sql = wp_statistics_mysql_time_conditions( $date_column, $time, $time_array ); + if ( ! empty( $mysql_time_sql ) ) { + $where[] = $mysql_time_sql; + } + + //Generate Base Sql + $sql = "SELECT SUM(count) FROM {$table_name}"; + + //Push Conditions to SQL + if ( ! empty( $where ) ) { + $sql .= ' WHERE ' . implode( ' AND ', $where ); + } + + //Request Get data + $sum = $wpdb->get_var( $sql ); + $sum += $history; + + //Return Number Statistic + return ( $sum == '' ? 0 : $sum ); +} + +// This function converts a page URI to a page/post ID. It does this by looking up in the pages database +// the URI and getting the associated ID. This will only work if the page has been visited at least once. +function wp_statistics_uri_to_id( $uri ) { + global $wpdb; + + // Create the SQL query to use. + $sqlstatement = $wpdb->prepare( "SELECT id FROM {$wpdb->prefix}statistics_pages WHERE `URI` = %s AND id > 0 ORDER BY date DESC", $uri ); + + // Execute the query. + $result = $wpdb->get_var( $sqlstatement ); + + // If we returned a false or some other 0 equivalent value, make sure $result is set to an integer 0. + if ( $result == 0 ) { + $result = 0; + } + + return $result; +} + +// We need a quick function to pass to usort to properly sort the most popular pages. +function wp_stats_compare_uri_hits( $a, $b ) { + return $a[1] < $b[1]; +} + +// This function returns a multi-dimensional array, with the total number of pages and an array or URI's sorted in order with their URI, count, id and title. +function wp_statistics_get_top_pages( $rangestartdate = null, $rangeenddate = null ) { + global $wpdb; + + // Get every unique URI from the pages database. + if ( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT `uri`,`id`,`type` FROM {$wpdb->prefix}statistics_pages WHERE `date` BETWEEN %s AND %s GROUP BY `uri`", $rangestartdate, $rangeenddate ), ARRAY_N ); + } else { + $result = $wpdb->get_results( "SELECT `uri`,`id`,`type` FROM {$wpdb->prefix}statistics_pages GROUP BY `uri`", ARRAY_N ); + } + + $total = 0; + $uris = array(); + + // Now get the total page visit count for each unique URI. + foreach ( $result as $out ) { + // Increment the total number of results. + $total ++; + + //Prepare item + list( $url, $page_id, $page_type ) = $out; + + //Get Page Title + $page_info = wp_statistics_get_page_info( $page_id, $page_type ); + $title = mb_substr( $page_info['title'], 0, 200, "utf-8" ); + $page_url = $page_info['link']; + + // Check age Title if page id or type not exist + if ( $page_info['link'] == "" ) { + $page_url = htmlentities( path_join( get_site_url(), $url ), ENT_QUOTES ); + $id = wp_statistics_uri_to_id( $out[0] ); + $post = get_post( $id ); + if ( is_object( $post ) ) { + $title = esc_html( $post->post_title ); + } else { + if ( $out[0] == '/' ) { + $title = get_bloginfo(); + } else { + $title = ''; + } + } + } + + //Check Title is empty + if ( empty( $title ) ) { + $title = '-'; + } + + // Add the current post to the array. + if ( $rangestartdate != null && $rangeenddate != null ) { + $uris[] = array( + $out[0], + wp_statistics_pages( 'range', $out[0], - 1, $rangestartdate, $rangeenddate ), + $page_id, + $title, + $page_url, + ); + } else { + $uris[] = array( $out[0], wp_statistics_pages( 'total', $out[0] ), $page_id, $title, $page_url ); + } + } + + // If we have more than one result, let's sort them using usort. + if ( count( $uris ) > 1 ) { + // Sort the URI's based on their hit count. + usort( $uris, 'wp_stats_compare_uri_hits' ); + } + + return array( $total, $uris ); +} + +// This function gets the current page URI. +function wp_statistics_get_uri() { + // Get the site's path from the URL. + $site_uri = parse_url( site_url(), PHP_URL_PATH ); + $site_uri_len = strlen( $site_uri ); + + // Get the site's path from the URL. + $home_uri = parse_url( home_url(), PHP_URL_PATH ); + $home_uri_len = strlen( $home_uri ); + + // Get the current page URI. + $page_uri = $_SERVER["REQUEST_URI"]; + + /* + * We need to check which URI is longer in case one contains the other. + * + * For example home_uri might be "/site/wp" and site_uri might be "/site". + * + * In that case we want to check to see if the page_uri starts with "/site/wp" before + * we check for "/site", but in the reverse case, we need to swap the order of the check. + */ + if ( $site_uri_len > $home_uri_len ) { + if ( substr( $page_uri, 0, $site_uri_len ) == $site_uri ) { + $page_uri = substr( $page_uri, $site_uri_len ); + } + + if ( substr( $page_uri, 0, $home_uri_len ) == $home_uri ) { + $page_uri = substr( $page_uri, $home_uri_len ); + } + } else { + if ( substr( $page_uri, 0, $home_uri_len ) == $home_uri ) { + $page_uri = substr( $page_uri, $home_uri_len ); + } + + if ( substr( $page_uri, 0, $site_uri_len ) == $site_uri ) { + $page_uri = substr( $page_uri, $site_uri_len ); + } + } + + //Sanitize Xss injection + $page_uri = filter_var( $page_uri, FILTER_SANITIZE_STRING ); + + // If we're at the root (aka the URI is blank), let's make sure to indicate it. + if ( $page_uri == '' ) { + $page_uri = '/'; + } + + return $page_uri; +} + +// This function returns all unique user agents in the database. +function wp_statistics_ua_list( $rangestartdate = null, $rangeenddate = null ) { + + global $wpdb; + + if ( $rangestartdate != null && $rangeenddate != null ) { + if ( $rangeenddate == 'CURDATE()' ) { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT agent FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` BETWEEN %s AND CURDATE()", $rangestartdate ), ARRAY_N ); + } else { + $result = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT agent FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` BETWEEN %s AND %s", $rangestartdate, $rangeenddate ), ARRAY_N ); + } + + } else { + $result = $wpdb->get_results( "SELECT DISTINCT agent FROM {$wpdb->prefix}statistics_visitor", ARRAY_N ); + } + + $Browsers = array(); + $default_browser = wp_statistics_get_browser_list(); + + foreach ( $result as $out ) { + //Check Browser is defined in wp-statistics + if ( array_key_exists( strtolower( $out[0] ), $default_browser ) ) { + $Browsers[] = $out[0]; + } + } + + return $Browsers; +} + +/** + * Count User By User Agent + * + * @param $agent + * @param null $rangestartdate + * @param null $rangeenddate + * @return mixed + */ +function wp_statistics_useragent( $agent, $rangestartdate = null, $rangeenddate = null ) { + global $wpdb; + + if ( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_var( + $wpdb->prepare( + "SELECT COUNT(agent) FROM {$wpdb->prefix}statistics_visitor WHERE `agent` = %s AND `last_counter` BETWEEN %s AND %s", + $agent, + $rangestartdate, + $rangeenddate + ) + ); + } else { + $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(agent) FROM {$wpdb->prefix}statistics_visitor WHERE `agent` = %s", $agent ) ); + } + + return $result; +} + +// This function returns all unique platform types from the database. +function wp_statistics_platform_list( $rangestartdate = null, $rangeenddate = null ) { + + global $wpdb; + + if ( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_results( + $wpdb->prepare( + "SELECT DISTINCT platform FROM {$wpdb->prefix}statistics_visitor WHERE `last_counter` BETWEEN %s AND %s", + $rangestartdate, + $rangeenddate + ), + ARRAY_N + ); + } else { + $result = $wpdb->get_results( "SELECT DISTINCT platform FROM {$wpdb->prefix}statistics_visitor", ARRAY_N ); + } + + $Platforms = array(); + + foreach ( $result as $out ) { + $Platforms[] = $out[0]; + } + + return $Platforms; +} + +// This function returns the count of a given platform in the database. +function wp_statistics_platform( $platform, $rangestartdate = null, $rangeenddate = null ) { + global $wpdb; + + if ( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_var( + $wpdb->prepare( + "SELECT COUNT(platform) FROM {$wpdb->prefix}statistics_visitor WHERE `platform` = %s AND `last_counter` BETWEEN %s AND %s", + $platform, + $rangestartdate, + $rangeenddate + ) + ); + } else { + $result = $wpdb->get_var( + $wpdb->prepare( + "SELECT COUNT(platform) FROM {$wpdb->prefix}statistics_visitor WHERE `platform` = %s", + $platform + ) + ); + } + + return $result; +} + +// This function returns all unique versions for a given agent from the database. +function wp_statistics_agent_version_list( $agent, $rangestartdate = null, $rangeenddate = null ) { + global $wpdb; + + if ( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_results( + $wpdb->prepare( + "SELECT DISTINCT version FROM {$wpdb->prefix}statistics_visitor WHERE agent = %s AND `last_counter` BETWEEN %s AND %s", + $agent, + $rangestartdate, + $rangeenddate + ), + ARRAY_N + ); + } else { + $result = $wpdb->get_results( + $wpdb->prepare( "SELECT DISTINCT version FROM {$wpdb->prefix}statistics_visitor WHERE agent = %s", $agent ), + ARRAY_N + ); + } + + $Versions = array(); + + foreach ( $result as $out ) { + $Versions[] = $out[0]; + } + + return $Versions; +} + +// This function returns the statistics for a given agent/version pair from the database. +function wp_statistics_agent_version( $agent, $version, $rangestartdate = null, $rangeenddate = null ) { + global $wpdb; + + if ( $rangestartdate != null && $rangeenddate != null ) { + $result = $wpdb->get_var( + $wpdb->prepare( + "SELECT COUNT(version) FROM {$wpdb->prefix}statistics_visitor WHERE agent = %s AND version = %s AND `last_counter` BETWEEN %s AND %s", + $agent, + $version, + $rangestartdate, + $rangeenddate + ) + ); + } else { + $result = $wpdb->get_var( + $wpdb->prepare( + "SELECT COUNT(version) FROM {$wpdb->prefix}statistics_visitor WHERE agent = %s AND version = %s", + $agent, + $version + ) + ); + } + + return $result; +} + +// This function returns an array or array's which define what search engines we should look for. +// +// By default will only return ones that have not been disabled by the user, this can be overridden by the $all parameter. +// +// Each sub array is made up of the following items: +// name = The proper name of the search engine +// translated = The proper name translated to the local language +// tag = a short one word, all lower case, representation of the search engine +// sqlpattern = either a single SQL style search pattern OR an array or search patterns to match the hostname in a URL against +// regexpattern = either a single regex style search pattern OR an array or search patterns to match the hostname in a URL against +// querykey = the URL key that contains the search string for the search engine +// image = the name of the image file to associate with this search engine (just the filename, no path info) +// +function wp_statistics_searchengine_list( $all = false ) { + global $WP_Statistics; + + $default = $engines = array( + 'ask' => array( + 'name' => 'Ask.com', + 'translated' => __( 'Ask.com', 'wp-statistics' ), + 'tag' => 'ask', + 'sqlpattern' => '%ask.com%', + 'regexpattern' => 'ask\.com', + 'querykey' => 'q', + 'image' => 'ask.png', + ), + 'baidu' => array( + 'name' => 'Baidu', + 'translated' => __( 'Baidu', 'wp-statistics' ), + 'tag' => 'baidu', + 'sqlpattern' => '%baidu.com%', + 'regexpattern' => 'baidu\.com', + 'querykey' => 'wd', + 'image' => 'baidu.png', + ), + 'bing' => array( + 'name' => 'Bing', + 'translated' => __( 'Bing', 'wp-statistics' ), + 'tag' => 'bing', + 'sqlpattern' => '%bing.com%', + 'regexpattern' => 'bing\.com', + 'querykey' => 'q', + 'image' => 'bing.png', + ), + 'clearch' => array( + 'name' => 'clearch.org', + 'translated' => __( 'clearch.org', 'wp-statistics' ), + 'tag' => 'clearch', + 'sqlpattern' => '%clearch.org%', + 'regexpattern' => 'clearch\.org', + 'querykey' => 'q', + 'image' => 'clearch.png', + ), + 'duckduckgo' => array( + 'name' => 'DuckDuckGo', + 'translated' => __( 'DuckDuckGo', 'wp-statistics' ), + 'tag' => 'duckduckgo', + 'sqlpattern' => array( '%duckduckgo.com%', '%ddg.gg%' ), + 'regexpattern' => array( 'duckduckgo\.com', 'ddg\.gg' ), + 'querykey' => 'q', + 'image' => 'duckduckgo.png', + ), + 'google' => array( + 'name' => 'Google', + 'translated' => __( 'Google', 'wp-statistics' ), + 'tag' => 'google', + 'sqlpattern' => '%google.%', + 'regexpattern' => 'google\.', + 'querykey' => 'q', + 'image' => 'google.png', + ), + 'yahoo' => array( + 'name' => 'Yahoo!', + 'translated' => __( 'Yahoo!', 'wp-statistics' ), + 'tag' => 'yahoo', + 'sqlpattern' => '%yahoo.com%', + 'regexpattern' => 'yahoo\.com', + 'querykey' => 'p', + 'image' => 'yahoo.png', + ), + 'yandex' => array( + 'name' => 'Yandex', + 'translated' => __( 'Yandex', 'wp-statistics' ), + 'tag' => 'yandex', + 'sqlpattern' => '%yandex.ru%', + 'regexpattern' => 'yandex\.ru', + 'querykey' => 'text', + 'image' => 'yandex.png', + ), + 'qwant' => array( + 'name' => 'Qwant', + 'translated' => __( 'Qwant', 'wp-statistics' ), + 'tag' => 'qwant', + 'sqlpattern' => '%qwant.com%', + 'regexpattern' => 'qwant\.com', + 'querykey' => 'q', + 'image' => 'qwant.png', + ) + ); + + if ( $all == false ) { + foreach ( $engines as $key => $engine ) { + if ( $WP_Statistics->get_option( 'disable_se_' . $engine['tag'] ) ) { + unset( $engines[ $key ] ); + } + } + + // If we've disabled all the search engines, reset the list back to default. + if ( count( $engines ) == 0 ) { + $engines = $default; + } + } + + return $engines; +} + +// This function will return the SQL WHERE clause for getting the search words for a given search engine. +function wp_statistics_searchword_query( $search_engine = 'all' ) { + GLOBAL $WP_Statistics; + + // Get a complete list of search engines + $searchengine_list = wp_statistics_searchengine_list(); + $search_query = ''; + + if ( $WP_Statistics->get_option( 'search_converted' ) ) { + // Are we getting results for all search engines or a specific one? + if ( strtolower( $search_engine ) == 'all' ) { + // For all of them? Ok, look through the search engine list and create a SQL query string to get them all from the database. + foreach ( $searchengine_list as $key => $se ) { + $search_query .= "( `engine` = '{$key}' AND `words` <> '' ) OR "; + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + $search_query .= "`engine` = '{$search_engine}' AND `words` <> ''"; + } + } else { + // Are we getting results for all search engines or a specific one? + if ( strtolower( $search_engine ) == 'all' ) { + // For all of them? Ok, look through the search engine list and create a SQL query string to get them all from the database. + // NOTE: This SQL query can be *VERY* long. + foreach ( $searchengine_list as $se ) { + // The SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if ( is_array( $se['sqlpattern'] ) ) { + foreach ( $se['sqlpattern'] as $subse ) { + $search_query .= "(`referred` LIKE '{$subse}{$se['querykey']}=%' AND `referred` NOT LIKE '{$subse}{$se['querykey']}=&%' AND `referred` NOT LIKE '{$subse}{$se['querykey']}=') OR "; + } + } else { + $search_query .= "(`referred` LIKE '{$se['sqlpattern']}{$se['querykey']}=%' AND `referred` NOT LIKE '{$se['sqlpattern']}{$se['querykey']}=&%' AND `referred` NOT LIKE '{$se['sqlpattern']}{$se['querykey']}=') OR "; + } + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + // For just one? Ok, the SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if ( is_array( $searchengine_list[ $search_engine ]['sqlpattern'] ) ) { + foreach ( $searchengine_list[ $search_engine ]['sqlpattern'] as $se ) { + $search_query .= "(`referred` LIKE '{$se}{$searchengine_list[$search_engine]['querykey']}=%' AND `referred` NOT LIKE '{$se}{$searchengine_list[$search_engine]['querykey']}=&%' AND `referred` NOT LIKE '{$se}{$searchengine_list[$search_engine]['querykey']}=') OR "; + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + $search_query .= "(`referred` LIKE '{$searchengine_list[$search_engine]['sqlpattern']}{$searchengine_list[$search_engine]['querykey']}=%' AND `referred` NOT LIKE '{$searchengine_list[$search_engine]['sqlpattern']}{$searchengine_list[$search_engine]['querykey']}=&%' AND `referred` NOT LIKE '{$searchengine_list[$search_engine]['sqlpattern']}{$searchengine_list[$search_engine]['querykey']}=')"; + } + } + } + + return $search_query; +} + +// This function will return the SQL WHERE clause for getting the search engine. +function wp_statistics_searchengine_query( $search_engine = 'all' ) { + GLOBAL $WP_Statistics; + + // Get a complete list of search engines + $searchengine_list = wp_statistics_searchengine_list(); + $search_query = ''; + + if ( $WP_Statistics->get_option( 'search_converted' ) ) { + // Are we getting results for all search engines or a specific one? + if ( strtolower( $search_engine ) == 'all' ) { + // For all of them? Ok, look through the search engine list and create a SQL query string to get them all from the database. + foreach ( $searchengine_list as $key => $se ) { + $key = esc_sql( $key ); + $search_query .= "`engine` = '{$key}' OR "; + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + $search_engine = esc_sql( $search_engine ); + $search_query .= "`engine` = '{$search_engine}'"; + } + } else { + // Are we getting results for all search engines or a specific one? + if ( strtolower( $search_engine ) == 'all' ) { + // For all of them? Ok, look through the search engine list and create a SQL query string to get them all from the database. + // NOTE: This SQL query can be long. + foreach ( $searchengine_list as $se ) { + // The SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if ( is_array( $se['sqlpattern'] ) ) { + foreach ( $se['sqlpattern'] as $subse ) { + $subse = esc_sql( $subse ); + $search_query .= "`referred` LIKE '{$subse}' OR "; + } + } else { + $se['sqlpattern'] = esc_sql( $se['sqlpattern'] ); + $search_query .= "`referred` LIKE '{$se['sqlpattern']}' OR "; + } + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + // For just one? Ok, the SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if ( is_array( $searchengine_list[ $search_engine ]['sqlpattern'] ) ) { + foreach ( $searchengine_list[ $search_engine ]['sqlpattern'] as $se ) { + $se = esc_sql( $se ); + $search_query .= "`referred` LIKE '{$se}' OR "; + } + + // Trim off the last ' OR ' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 4 ); + } else { + $searchengine_list[ $search_engine ]['sqlpattern'] = esc_sql( $searchengine_list[ $search_engine ]['sqlpattern'] ); + $search_query .= "`referred` LIKE '{$searchengine_list[$search_engine]['sqlpattern']}'"; + } + } + } + + return $search_query; +} + +// This function will return a regular expression clause for matching one or more search engines. +function wp_statistics_searchengine_regex( $search_engine = 'all' ) { + + // Get a complete list of search engines + $searchengine_list = wp_statistics_searchengine_list(); + $search_query = ''; + + // Are we getting results for all search engines or a specific one? + if ( strtolower( $search_engine ) == 'all' ) { + foreach ( $searchengine_list as $se ) { + // The SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if ( is_array( $se['regexpattern'] ) ) { + foreach ( $se['regexpattern'] as $subse ) { + $search_query .= "{$subse}|"; + } + } else { + $search_query .= "{$se['regexpattern']}|"; + } + } + + // Trim off the last '|' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 1 ); + } else { + // For just one? Ok, the SQL pattern for a search engine may be an array if it has to handle multiple domains (like google.com and google.ca) or other factors. + if ( is_array( $searchengine_list[ $search_engine ]['regexpattern'] ) ) { + foreach ( $searchengine_list[ $search_engine ]['regexpattern'] as $se ) { + $search_query .= "{$se}|"; + } + + // Trim off the last '|' for the loop above. + $search_query = substr( $search_query, 0, strlen( $search_query ) - 1 ); + } else { + $search_query .= $searchengine_list[ $search_engine ]['regexpattern']; + } + } + + // Add the brackets and return + return "({$search_query})"; +} + +/** + * Get Search engine Statistics + * + * @param string $search_engine + * @param string $time + * @param string $search_by [query / name] + * @return mixed + */ +function wp_statistics_get_search_engine_query( $search_engine = 'all', $time = 'total', $search_by = 'query' ) { + global $wpdb, $WP_Statistics; + + //Prepare Table Name + $table_name = $wpdb->prefix . 'statistics_'; + if ( $WP_Statistics->get_option( 'search_converted' ) ) { + $table_name .= 'search'; + } else { + $table_name .= 'visitor'; + } + + //Date Column table + $date_column = 'last_counter'; + + // Get a complete list of search engines + if ( $search_by == "query" ) { + $search_query = wp_statistics_searchengine_query( $search_engine ); + } else { + $search_query = wp_statistics_searchword_query( $search_engine ); + } + + //Generate Base Sql + $sql = "SELECT * FROM {$table_name} WHERE ({$search_query})"; + + //Generate MySql Time Conditions + $mysql_time_sql = wp_statistics_mysql_time_conditions( $date_column, $time, array( 'current_date' => true ) ); + if ( ! empty( $mysql_time_sql ) ) { + $sql = $sql . ' AND (' . $mysql_time_sql . ')'; + } + + //Request Data + $result = $wpdb->query( $sql ); + return $result; +} + +/** + * This function will return the statistics for a given search engine. + * + * @param string $search_engine + * @param string $time + * @return mixed + */ +function wp_statistics_searchengine( $search_engine = 'all', $time = 'total' ) { + return wp_statistics_get_search_engine_query( $search_engine, $time, $search_by = 'query' ); +} + +//This Function will return the referrer list +function wp_statistics_referrer( $time = null ) { + global $wpdb, $WP_Statistics; + + $timezone = array( + 'today' => 0, + 'yesterday' => - 1, + 'week' => - 7, + 'month' => - 30, + 'year' => - 365, + 'total' => 'ALL', + ); + $sql = "SELECT `referred` FROM `" . $wpdb->prefix . "statistics_visitor` WHERE referred <> ''"; + if ( array_key_exists( $time, $timezone ) ) { + if ( $time != "total" ) { + $sql .= " AND (`last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', $timezone[$time] )}')"; + } + } else { + //Set Default + $sql .= " AND (`last_counter` = '{$WP_Statistics->Current_Date( 'Y-m-d', $time )}')"; + } + $result = $wpdb->get_results( $sql ); + + $urls = array(); + foreach ( $result as $item ) { + $url = parse_url( $item->referred ); + if ( empty( $url['host'] ) || stristr( get_bloginfo( 'url' ), $url['host'] ) ) { + continue; + } + $urls[] = $url['scheme'] . '://' . $url['host']; + } + $get_urls = array_count_values( $urls ); + + return count( $get_urls ); +} + +/** + * This function will return the statistics for a given search engine for a given time frame. + * + * @param string $search_engine + * @param string $time + * @return mixed + */ +function wp_statistics_searchword( $search_engine = 'all', $time = 'total' ) { + return wp_statistics_get_search_engine_query( $search_engine, $time, $search_by = 'word' ); +} + +// This function will return the total number of posts in WordPress. +function wp_statistics_countposts() { + $count_posts = wp_count_posts( 'post' ); + + $ret = 0; + if ( is_object( $count_posts ) ) { + $ret = $count_posts->publish; + } + return $ret; +} + +// This function will return the total number of pages in WordPress. +function wp_statistics_countpages() { + $count_pages = wp_count_posts( 'page' ); + + $ret = 0; + if ( is_object( $count_pages ) ) { + $ret = $count_pages->publish; + } + return $ret; +} + +// This function will return the total number of comments in WordPress. +function wp_statistics_countcomment() { + global $wpdb; + + $countcomms = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_approved = '1'" ); + return $countcomms; +} + +// This function will return the total number of spam comments *IF* akismet is installed. +function wp_statistics_countspam() { + + return number_format_i18n( get_option( 'akismet_spam_count' ) ); +} + +// This function will return the total number of users in WordPress. +function wp_statistics_countusers() { + + $result = count_users(); + + return $result['total_users']; +} + +// This function will return the last date a post was published on your site. +function wp_statistics_lastpostdate() { + + global $wpdb, $WP_Statistics; + + $db_date = $wpdb->get_var( + "SELECT post_date FROM {$wpdb->posts} WHERE post_type='post' AND post_status='publish' ORDER BY post_date DESC LIMIT 1" + ); + + $date_format = get_option( 'date_format' ); + + return $WP_Statistics->Current_Date_i18n( $date_format, $db_date, false ); +} + +// This function will return the average number of posts per day that are published on your site. +// Alternatively if $days is set to true it returns the average number of days between posts on your site. +function wp_statistics_average_post( $days = false ) { + + global $wpdb; + + $get_first_post = $wpdb->get_var( + "SELECT post_date FROM {$wpdb->posts} WHERE post_status = 'publish' ORDER BY post_date LIMIT 1" + ); + $get_total_post = $wpdb->get_var( + "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type = 'post'" + ); + + $days_spend = intval( + ( time() - strtotime( $get_first_post ) ) / 86400 + ); // 86400 = 60 * 60 * 24 = number of seconds in a day + + if ( $days == true ) { + if ( $get_total_post == 0 ) { + $get_total_post = 1; + } // Avoid divide by zero errors. + + return round( $days_spend / $get_total_post, 0 ); + } else { + if ( $days_spend == 0 ) { + $days_spend = 1; + } // Avoid divide by zero errors. + + return round( $get_total_post / $days_spend, 2 ); + } +} + +// This function will return the average number of comments per day that are published on your site. +// Alternatively if $days is set to true it returns the average number of days between comments on your site. +function wp_statistics_average_comment( $days = false ) { + + global $wpdb; + + $get_first_comment = $wpdb->get_var( "SELECT comment_date FROM {$wpdb->comments} ORDER BY comment_date LIMIT 1" ); + $get_total_comment = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_approved = '1'" ); + + $days_spend = intval( + ( time() - strtotime( $get_first_comment ) ) / 86400 + ); // 86400 = 60 * 60 * 24 = number of seconds in a day + + if ( $days == true ) { + if ( $get_total_comment == 0 ) { + $get_total_comment = 1; + } // Avoid divide by zero errors. + + return round( $days_spend / $get_total_comment, 0 ); + } else { + if ( $days_spend == 0 ) { + $days_spend = 1; + } // Avoid divide by zero errors. + + return round( $get_total_comment / $days_spend, 2 ); + } +} + +// This function will return the average number of users per day that are registered on your site. +// Alternatively if $days is set to true it returns the average number of days between user registrations on your site. +function wp_statistics_average_registeruser( $days = false ) { + + global $wpdb; + + $get_first_user = $wpdb->get_var( "SELECT user_registered FROM {$wpdb->users} ORDER BY user_registered LIMIT 1" ); + $get_total_user = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->users}" ); + + $days_spend = intval( + ( time() - strtotime( $get_first_user ) ) / 86400 + ); // 86400 = 60 * 60 * 24 = number of seconds in a day + + if ( $days == true ) { + if ( $get_total_user == 0 ) { + $get_total_user = 1; + } // Avoid divide by zero errors. + + return round( $days_spend / $get_total_user, 0 ); + } else { + if ( $days_spend == 0 ) { + $days_spend = 1; + } // Avoid divide by zero errors. + + return round( $get_total_user / $days_spend, 2 ); + } +} + +// This function handle's the Dashicons in the overview page. +function wp_statistics_icons( $dashicons, $icon_name = null ) { + if ( null == $icon_name ) { + $icon_name = $dashicons; + } + + return '<span class="dashicons ' . $dashicons . '"></span>'; +} + +// This function checks to see if all the PHP modules we need for GeoIP exists. +function wp_statistics_geoip_supported() { + // Check to see if we can support the GeoIP code, requirements are: + $enabled = true; + + // PHP's cURL extension installed + if ( ! function_exists( 'curl_init' ) ) { + $enabled = false; + } + + // PHP NOT running in safe mode + if ( ini_get( 'safe_mode' ) ) { + // Double check php version, 5.4 and above don't support safe mode but the ini value may still be set after an upgrade. + if ( ! version_compare( phpversion(), '5.4', '<' ) ) { + $enabled = false; + } + } + + return $enabled; +} + +/** + * Convert PHP date Format to Moment js + * + * @param $phpFormat + * @return string + * @see https://stackoverflow.com/questions/30186611/php-dateformat-to-moment-js-format + */ +function wp_statistics_convert_php_to_moment_js( $phpFormat ) { + $replacements = array( + 'A' => 'A', + 'a' => 'a', + 'B' => '', + 'c' => 'YYYY-MM-DD[T]HH:mm:ssZ', + 'D' => 'ddd', + 'd' => 'DD', + 'e' => 'zz', + 'F' => 'MMMM', + 'G' => 'H', + 'g' => 'h', + 'H' => 'HH', + 'h' => 'hh', + 'I' => '', + 'i' => 'mm', + 'j' => 'D', + 'L' => '', + 'l' => 'dddd', + 'M' => 'MMM', + 'm' => 'MM', + 'N' => 'E', + 'n' => 'M', + 'O' => 'ZZ', + 'o' => 'YYYY', + 'P' => 'Z', + 'r' => 'ddd, DD MMM YYYY HH:mm:ss ZZ', + 'S' => 'o', + 's' => 'ss', + 'T' => 'z', + 't' => '', + 'U' => 'X', + 'u' => 'SSSSSS', + 'v' => 'SSS', + 'W' => 'W', + 'w' => 'e', + 'Y' => 'YYYY', + 'y' => 'YY', + 'Z' => '', + 'z' => 'DDD' + ); + + // Converts escaped characters. + foreach ( $replacements as $from => $to ) { + $replacements[ '\\' . $from ] = '[' . $from . ']'; + } + + return strtr( $phpFormat, $replacements ); +} + + +// This function creates the date range selector 'widget' used in the various statistics pages. +function wp_statistics_date_range_selector( $page, $current, $range = array(), $desc = array(), $extrafields = '', $pre_extra = '', $post_extra = '' ) { + GLOBAL $WP_Statistics; + + //import DataPicker Jquery Ui Jquery Plugin + wp_enqueue_script( 'jquery-ui-datepicker' ); + wp_register_style( 'jquery-ui-smoothness-css', WP_Statistics::$reg['plugin-url'] . 'assets/css/jquery-ui-smoothness.min.css' ); + wp_enqueue_style( 'jquery-ui-smoothness-css' ); + + //Create Object List Of Default Hit Day to Display + if ( $range == null or count( $range ) == 0 ) { + + //Get Number Of Time Range + $range = array( 10, 20, 30, 60, 90, 180, 270, 365 ); + + //Added All time From installed plugin to now + $installed_date = WP_Statistics::get_number_days_install_plugin(); + array_push( $range, $installed_date['days'] ); + + //Get List Of Text Lang time Range + $desc = array( + __( '10 Days', 'wp-statistics' ), + __( '20 Days', 'wp-statistics' ), + __( '30 Days', 'wp-statistics' ), + __( '2 Months', 'wp-statistics' ), + __( '3 Months', 'wp-statistics' ), + __( '6 Months', 'wp-statistics' ), + __( '9 Months', 'wp-statistics' ), + __( '1 Year', 'wp-statistics' ), + __( 'All', 'wp-statistics' ), + ); + } + if ( count( $desc ) == 0 ) { + $desc = $range; + } + $rcount = count( $range ); + $bold = true; + + // Check to see if there's a range in the URL, if so set it, otherwise use the default. + if ( isset( $_GET['rangestart'] ) and strtotime( $_GET['rangestart'] ) != false ) { + $rangestart = $_GET['rangestart']; + } else { + $rangestart = $WP_Statistics->Current_Date( 'm/d/Y', '-' . $current ); + } + if ( isset( $_GET['rangeend'] ) and strtotime( $_GET['rangeend'] ) != false ) { + $rangeend = $_GET['rangeend']; + } else { + $rangeend = $WP_Statistics->Current_Date( 'm/d/Y' ); + } + + // Convert the text dates to unix timestamps and do some basic sanity checking. + $rangestart_utime = $WP_Statistics->strtotimetz( $rangestart ); + if ( false === $rangestart_utime ) { + $rangestart_utime = time(); + } + $rangeend_utime = $WP_Statistics->strtotimetz( $rangeend ); + if ( false === $rangeend_utime || $rangeend_utime < $rangestart_utime ) { + $rangeend_utime = time(); + } + + // Now get the number of days in the range. + $daysToDisplay = (int) ( ( $rangeend_utime - $rangestart_utime ) / 24 / 60 / 60 ); + $today = $WP_Statistics->Current_Date( 'm/d/Y' ); + + // Re-create the range start/end strings from our utime's to make sure we get ride of any cruft and have them in the format we want. + $rangestart = $WP_Statistics->Local_Date( get_option( "date_format" ), $rangestart_utime ); + $rangeend = $WP_Statistics->Local_Date( get_option( "date_format" ), $rangeend_utime ); + + //Calculate hit day if range is exist + if ( isset( $_GET['rangeend'] ) and isset( $_GET['rangestart'] ) and strtotime( $_GET['rangestart'] ) != false and strtotime( $_GET['rangeend'] ) != false ) { + $earlier = new DateTime( $_GET['rangestart'] ); + $later = new DateTime( $_GET['rangeend'] ); + $current = $daysToDisplay = $later->diff( $earlier )->format( "%a" ); + } + + echo '<form method="get"><ul class="subsubsub wp-statistics-sub-fullwidth">' . "\r\n"; + // Output any extra HTML we've been passed after the form element but before the date selector. + echo $pre_extra; + + for ( $i = 0; $i < $rcount; $i ++ ) { + echo '<li class="all"><a '; + if ( $current == $range[ $i ] ) { + echo 'class="current" '; + $bold = false; + } + + // Don't bother adding he date range to the standard links as they're not needed any may confuse the custom range selector. + echo 'href="?page=' . $page . '&hitdays=' . $range[ $i ] . esc_html( $extrafields ) . '">' . $desc[ $i ] . '</a></li>'; + if ( $i < $rcount - 1 ) { + echo ' | '; + } + echo "\r\n"; + } + echo ' | '; + echo '<input type="hidden" name="page" value="' . $page . '">'; + + parse_str( $extrafields, $parse ); + foreach ( $parse as $key => $value ) { + echo '<input type="hidden" name="' . $key . '" value="' . esc_sql( $value ) . '">'; + } + + if ( $bold ) { + echo ' <b>' . __( 'Time Frame', 'wp-statistics' ) . ':</b> '; + } else { + echo ' ' . __( 'Time Frame', 'wp-statistics' ) . ': '; + } + + //Print Time Range Select Ui + echo '<input type="text" size="18" name="rangestart" id="datestartpicker" value="' . $rangestart . '" placeholder="' . __( wp_statistics_dateformat_php_to_jqueryui( get_option( "date_format" ) ), 'wp-statistics' ) . '" autocomplete="off"> ' . __( 'to', 'wp-statistics' ) . ' <input type="text" size="18" name="rangeend" id="dateendpicker" value="' . $rangeend . '" placeholder="' . __( wp_statistics_dateformat_php_to_jqueryui( get_option( "date_format" ) ), 'wp-statistics' ) . '" autocomplete="off"> <input type="submit" value="' . __( 'Go', 'wp-statistics' ) . '" class="button-primary">' . "\r\n"; + + //Sanitize Time Request + echo '<input type="hidden" name="rangestart" id="rangestart" value="' . $WP_Statistics->Local_Date( "Y-m-d", $rangestart_utime ) . '">'; + echo '<input type="hidden" name="rangeend" id="rangeend" value="' . $WP_Statistics->Local_Date( "Y-m-d", $rangeend_utime ) . '">'; + + // Output any extra HTML we've been passed after the date selector but before the submit button. + echo $post_extra; + + echo '</form>' . "\r\n"; + echo '<script src="' . WP_Statistics::$reg['plugin-url'] . 'assets/js/moment.min.js?ver=2.24.0"></script>'; + echo '<script> + jQuery(function() { + + //From Date + jQuery( "#datestartpicker" ).datepicker({dateFormat: \'' . wp_statistics_dateformat_php_to_jqueryui( get_option( "date_format" ) ) . '\', + onSelect: function(selectedDate) { + if (selectedDate.length > 0) { + jQuery("#rangestart").val(moment(selectedDate, \'' . wp_statistics_convert_php_to_moment_js( get_option( "date_format" ) ) . '\').format(\'YYYY-MM-DD\')); + } + } + }); + //To Date + jQuery( "#dateendpicker" ).datepicker({ + dateFormat: \'' . wp_statistics_dateformat_php_to_jqueryui( get_option( "date_format" ) ) . '\', + onSelect: function(selectedDate) { + if (selectedDate.length > 0) { + jQuery("#rangeend").val(moment(selectedDate, \'' . wp_statistics_convert_php_to_moment_js( get_option( "date_format" ) ) . '\').format(\'YYYY-MM-DD\')); + } + }});}); + </script>' . "\r\n"; +} + +/* + * Prepare Range Time For Time picker + */ +function wp_statistics_prepare_range_time_picker() { + + //Get Default Number To display in All + $installed_date = WP_Statistics::get_number_days_install_plugin(); + $daysToDisplay = $installed_date['days']; + + //List Of Pages For show 20 Days as First Parameter + $list_of_pages = array( 'hits', 'searches', 'pages', 'countries', 'categories', 'tags', 'authors', 'browser', 'exclusions' ); + foreach ( $list_of_pages as $page ) { + if ( isset( $_GET['page'] ) and $_GET['page'] == WP_Statistics::$page[ $page ] ) { + $daysToDisplay = 30; + } + } + + //Set Default Object Time Range + $rangestart = ''; + $rangeend = ''; + + //Check Hit Day + if ( isset( $_GET['hitdays'] ) and $_GET['hitdays'] > 0 ) { + $daysToDisplay = intval( $_GET['hitdays'] ); + } + if ( isset( $_GET['rangeend'] ) and isset( $_GET['rangestart'] ) and strtotime( $_GET['rangestart'] ) != false and strtotime( $_GET['rangeend'] ) != false ) { + $rangestart = $_GET['rangestart']; + $rangeend = $_GET['rangeend']; + + //Calculate hit day if range is exist + $earlier = new DateTime( $_GET['rangestart'] ); + $later = new DateTime( $_GET['rangeend'] ); + $daysToDisplay = $later->diff( $earlier )->format( "%a" ); + } + + return array( $daysToDisplay, $rangestart, $rangeend ); +} + +/** + * Convert php date format to Jquery Ui + * + * @param $php_format + * @return string + */ +function wp_statistics_dateformat_php_to_jqueryui( $php_format ) { + $SYMBOLS_MATCHING = array( + // Day + 'd' => 'dd', + 'D' => 'D', + 'j' => 'd', + 'l' => 'DD', + 'N' => '', + 'S' => '', + 'w' => '', + 'z' => 'o', + // Week + 'W' => '', + // Month + 'F' => 'MM', + 'm' => 'mm', + 'M' => 'M', + 'n' => 'm', + 't' => '', + // Year + 'L' => '', + 'o' => '', + 'Y' => 'yy', + 'y' => 'y', + // Time + 'a' => '', + 'A' => '', + 'B' => '', + 'g' => '', + 'G' => '', + 'h' => '', + 'H' => '', + 'i' => '', + 's' => '', + 'u' => '' + ); + $jqueryui_format = ""; + $escaping = false; + for ( $i = 0; $i < strlen( $php_format ); $i ++ ) { + $char = $php_format[ $i ]; + if ( $char === '\\' ) { + $i ++; + if ( $escaping ) { + $jqueryui_format .= $php_format[ $i ]; + } else { + $jqueryui_format .= '\'' . $php_format[ $i ]; + } + $escaping = true; + } else { + if ( $escaping ) { + $jqueryui_format .= "'"; + $escaping = false; + } + if ( isset( $SYMBOLS_MATCHING[ $char ] ) ) { + $jqueryui_format .= $SYMBOLS_MATCHING[ $char ]; + } else { + $jqueryui_format .= $char; + } + } + } + + return $jqueryui_format; +} + +/** + * This function is used to calculate the number of days and their respective unix timestamps. + * + * @param $days + * @param $start + * @param $end + * @return array + */ +function wp_statistics_date_range_calculator( $days, $start, $end ) { + global $WP_Statistics; + + $daysToDisplay = $days; + $rangestart = $start; + $rangeend = $end; + + //Check Exist params + if ( ! empty( $daysToDisplay ) and ! empty( $rangestart ) and ! empty( $rangeend ) ) { + return array( $daysToDisplay, strtotime( $rangestart ), strtotime( $rangeend ) ); + } + + //Check Not Exist day to display + if ( $daysToDisplay == - 1 ) { + $rangestart_utime = $WP_Statistics->strtotimetz( $rangestart ); + $rangeend_utime = $WP_Statistics->strtotimetz( $rangeend ); + $daysToDisplay = (int) ( ( $rangeend_utime - $rangestart_utime ) / 24 / 60 / 60 ); + + if ( $rangestart_utime == false || $rangeend_utime == false ) { + $daysToDisplay = 20; + $rangeend_utime = $WP_Statistics->timetz(); + $rangestart_utime = $rangeend_utime - ( $daysToDisplay * 24 * 60 * 60 ); + } + } else { + $rangeend_utime = $WP_Statistics->timetz(); + $rangestart_utime = $rangeend_utime - ( $daysToDisplay * 24 * 60 * 60 ); + } + + return array( $daysToDisplay, $rangestart_utime, $rangeend_utime ); +} + + +/** + * Delete All record From Table + * + * @param bool $table_name + * @return string + */ +function wp_statitiscs_empty_table( $table_name = false ) { + global $wpdb; + + if ( $table_name ) { + $result = $wpdb->query( 'DELETE FROM ' . $table_name ); + + if ( $result ) { + return sprintf( __( '%s table data deleted successfully.', 'wp-statistics' ), '<code>' . $table_name . '</code>' ); + } + } + + return sprintf( __( 'Error, %s not emptied!', 'wp-statistics' ), $table_name ); +} + + +/** + * This function creates a small JavaScript that will load the contents of a overview or dashboard widget. + * + * @param $widget + * @param null $container_id + */ +function wp_statistics_generate_widget_load_javascript( $widget, $container_id = null ) { + if ( null == $container_id ) { + $container_id = str_replace( '.', '_', $widget . '_postbox' ); + } + ?> + <script type="text/javascript"> + jQuery(document).ready(function () { + wp_statistics_get_widget_contents('<?php echo $widget; ?>', '<?php echo $container_id; ?>'); + }); + </script> + <?php +} + +/** + * Generate RGBA colors + * + * @param $num + * @param string $opacity + * + * @return string + */ +function wp_statistics_generate_rgba_color( $num, $opacity = '1' ) { + $hash = md5( 'color' . $num ); + + return sprintf( + "'rgba(%s, %s, %s, %s)'", + hexdec( substr( $hash, 0, 2 ) ), + hexdec( substr( $hash, 2, 2 ) ), + hexdec( substr( $hash, 4, 2 ) ), + $opacity + ); +} + +/** + * This function will validate that a capability exists, + * if not it will default to returning the 'manage_options' capability. + * + * @param string $capability Capability + * @return string 'manage_options' + */ +function wp_statistics_validate_capability( $capability ) { + global $wp_roles; + + if ( ! is_object( $wp_roles ) || ! is_array( $wp_roles->roles ) ) { + return 'manage_options'; + } + + foreach ( $wp_roles->roles as $role ) { + $cap_list = $role['capabilities']; + + foreach ( $cap_list as $key => $cap ) { + if ( $capability == $key ) { + return $capability; + } + } + } + + return 'manage_options'; +} + +/** + * Check User Access To WP-Statistics Admin + * + * @param string $type [manage | read ] + * @param string|boolean $export + * @return bool + */ +function wp_statistics_check_access_user( $type = 'both', $export = false ) { + global $WP_Statistics; + + //List Of Default Cap + $list = array( + 'manage' => array( 'manage_capability', 'manage_options' ), + 'read' => array( 'read_capability', 'manage_options' ) + ); + + //User User Cap + $cap = 'both'; + if ( ! empty( $type ) and array_key_exists( $type, $list ) ) { + $cap = $type; + } + + //Check Export Cap name or Validation current_can_user + if ( $export == "cap" ) { + return wp_statistics_validate_capability( $WP_Statistics->get_option( $list[ $cap ][0], $list[ $cap ][1] ) ); + } + + //Check Access + switch ( $type ) { + case "manage": + case "read": + return current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option( $list[ $cap ][0], $list[ $cap ][1] ) ) ); + break; + case "both": + foreach ( array( 'manage', 'read' ) as $c ) { + if ( wp_statistics_check_access_user( $c ) === true ) { + return true; + } + } + break; + } + + return false; +} + +/** + * Notices displayed near the top of admin pages. + * + * @param $type + * @param $message + * @area admin + */ +function wp_statistics_admin_notice_result( $type, $message ) { + + switch ( $type ) { + case 'error': + $class = 'notice notice-error'; + break; + + case 'warning': + $class = 'notice notice-warning'; + break; + + case 'success': + $class = 'notice notice-success'; + break; + } + + printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) ); +} + +/** + * Get All Browser List For Detecting + * + * @param bool $all + * @area utility + * @return array|mixed + */ +function wp_statistics_get_browser_list( $all = true ) { + + //List Of Detect Browser in WP Statistics + $list = array( + "chrome" => __( "Chrome", 'wp-statistics' ), + "firefox" => __( "Firefox", 'wp-statistics' ), + "msie" => __( "Internet Explorer", 'wp-statistics' ), + "edge" => __( "Edge", 'wp-statistics' ), + "opera" => __( "Opera", 'wp-statistics' ), + "safari" => __( "Safari", 'wp-statistics' ) + ); + $browser_key = array_keys( $list ); + + //Return All Browser List + if ( $all === true ) { + return $list; + //Return Browser Keys For detect + } elseif ( $all == "key" ) { + return $browser_key; + } else { + //Return Custom Browser Name by key + if ( array_search( strtolower( $all ), $browser_key ) !== false ) { + return $list[ strtolower( $all ) ]; + } else { + return __( "Unknown", 'wp-statistics' ); + } + } +} + +/** + * Pagination Link + * + * @param array $args + * @area admin + * @return string + */ +function wp_statistics_paginate_links( $args = array() ) { + + //Prepare Arg + $defaults = array( + 'item_per_page' => 10, + 'container' => 'pagination-wrap', + 'query_var' => 'pagination-page', + 'total' => 0, + 'current' => 0, + 'show_now_page' => true + ); + $args = wp_parse_args( $args, $defaults ); + $total_page = ceil( $args['total'] / $args['item_per_page'] ); + + //Show Pagination Ui + if ( $total_page > 1 ) { + echo '<div class="' . $args['container'] . '">'; + echo paginate_links( array( + 'base' => add_query_arg( $args['query_var'], '%#%' ), + 'format' => '', + 'type' => 'list', + 'mid_size' => 3, + 'prev_text' => __( '«' ), + 'next_text' => __( '»' ), + 'total' => $total_page, + 'current' => $args['current'] + ) ); + + if ( $args['show_now_page'] ) { + echo '<p id="result-log">' . sprintf( __( 'Page %1$s of %2$s', 'wp-statistics' ), $args['current'], $total_page ) . '</p>'; + } + + echo '</div>'; + } +} + +/** + * Get Post List From custom Post Type + * + * @param array $args + * @area utility + * @return mixed + */ +function wp_statistics_get_post_list( $args = array() ) { + + //Prepare Arg + $defaults = array( + 'post_type' => 'page', + 'post_status' => 'publish', + 'posts_per_page' => '-1', + 'order' => 'ASC', + 'fields' => 'ids' + ); + $args = wp_parse_args( $args, $defaults ); + + //Get Post List + $query = new WP_Query( $args ); + $list = array(); + foreach ( $query->posts as $ID ) { + $list[ $ID ] = esc_html( get_the_title( $ID ) ); + } + + return $list; +} + +/** + * Get Page information + * + * @param $page_id + * @param string $type + * @return array + */ +function wp_statistics_get_page_info( $page_id, $type = 'post' ) { + + //Create Empty Object + $arg = array(); + $defaults = array( + 'link' => '', + 'edit_link' => '', + 'object_id' => $page_id, + 'title' => '-', + 'meta' => array() + ); + + if ( ! empty( $type ) ) { + switch ( $type ) { + case "product": + case "attachment": + case "post": + case "page": + $arg = array( + 'title' => esc_html( get_the_title( $page_id ) ), + 'link' => get_the_permalink( $page_id ), + 'edit_link' => get_edit_post_link( $page_id ), + 'meta' => array( + 'post_type' => get_post_type( $page_id ) + ) + ); + break; + case "category": + case "post_tag": + case "tax": + $term = get_term( $page_id ); + $arg = array( + 'title' => esc_html( $term->name ), + 'link' => ( is_wp_error( get_term_link( $page_id ) ) === true ? '' : get_term_link( $page_id ) ), + 'edit_link' => get_edit_term_link( $page_id ), + 'meta' => array( + 'taxonomy' => $term->taxonomy, + 'term_taxonomy_id' => $term->term_taxonomy_id, + 'count' => $term->count, + ) + ); + break; + case "home": + $arg = array( + 'title' => __( 'Home Page', 'wp-statistics' ), + 'link' => get_site_url() + ); + break; + case "author": + $user_info = get_userdata( $page_id ); + $arg = array( + 'title' => ( $user_info->display_name != "" ? esc_html( $user_info->display_name ) : esc_html( $user_info->first_name . ' ' . $user_info->last_name ) ), + 'link' => get_author_posts_url( $page_id ), + 'edit_link' => get_edit_user_link( $page_id ), + ); + break; + case "search": + $result['title'] = __( 'Search Page', 'wp-statistics' ); + break; + case "404": + $result['title'] = __( '404 not found', 'wp-statistics' ); + break; + case "archive": + $result['title'] = __( 'Post Archive', 'wp-statistics' ); + break; + } + } + + return wp_parse_args( $arg, $defaults ); +} + +/** + * Table List Wp-statistics + * + * @param string $export + * @param array $except + * @return array|null + */ +function wp_statistics_db_table( $export = 'all', $except = array() ) { + global $wpdb; + + //Create Empty Object + $list = array(); + + //List Of Table + if ( is_string( $except ) ) { + $except = array( $except ); + } + $mysql_list_table = array_diff( WP_Statistics_Install::$db_table, $except ); + foreach ( $mysql_list_table as $tbl ) { + $table_name = $wpdb->prefix . 'statistics_' . $tbl; + if ( $export == "all" ) { + if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) == $table_name ) { + $list[ $tbl ] = $table_name; + } + } else { + $list[ $tbl ] = $table_name; + } + } + + //Export Data + if ( $export == 'all' ) { + return $list; + } else { + if ( array_key_exists( $export, $list ) ) { + return $list[ $export ]; + } + } + + return null; +} + +/** + * Check WP-statistics Option Require + * + * @param array $item + * @param string $condition_key + * @return array|bool + */ +function wp_statistics_check_option_require( $item = array(), $condition_key = 'require' ) { + global $WP_Statistics; + + $condition = true; + if ( array_key_exists( 'require', $item ) ) { + foreach ( $item[ $condition_key ] as $if ) { + if ( ! $WP_Statistics->get_option( $if ) ) { + $condition = false; + break; + } + } + } + + return $condition; +} + +/** + * Modify For IGNORE insert Query + * + * @hook add_action('query', function_name, 10); + * @param $query + * @return string + */ +function wp_statistics_ignore_insert( $query ) { + $count = 0; + $query = preg_replace( '/^(INSERT INTO)/i', 'INSERT IGNORE INTO', $query, 1, $count ); + return $query; +} + +/** + * Get Html Body Page By Url + * + * @param $url string e.g : wp-statistics.com + * @return bool + */ +function wp_statistics_get_html_page( $url ) { + + //sanitize Url + $parse_url = wp_parse_url( $url ); + $urls[] = esc_url_raw( $url ); + + //Check Protocol Url + if ( ! array_key_exists( 'scheme', $parse_url ) ) { + $urls = array(); + $url_parse = wp_parse_url( $url ); + foreach ( array( 'http://', 'https://' ) as $scheme ) { + $urls[] = preg_replace( '/([^:])(\/{2,})/', '$1/', $scheme . path_join( ( isset( $url_parse['host'] ) ? $url_parse['host'] : '' ), ( isset( $url_parse['path'] ) ? $url_parse['path'] : '' ) ) ); + } + } + + //Send Request for Get Page Html + foreach ( $urls as $page ) { + $response = wp_remote_get( $page, array( + 'timeout' => 30, + 'user-agent' => "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" + ) ); + if ( is_wp_error( $response ) ) { + continue; + } + $data = wp_remote_retrieve_body( $response ); + if ( is_wp_error( $data ) ) { + continue; + } + return ( wp_strip_all_tags( $data ) == "" ? false : $data ); + } + + return false; +} + +/** + * Get Site title By Url + * + * @param $url string e.g : wp-statistics.com + * @return bool|string + */ +function wp_statistics_get_site_title( $url ) { + + //Get ody Page + $html = wp_statistics_get_html_page( $url ); + if ( $html === false ) { + return false; + } + + //Get Page Title + if ( class_exists( 'DOMDocument' ) ) { + $dom = new DOMDocument; + @$dom->loadHTML( $html ); + $title = ''; + if ( isset( $dom ) and $dom->getElementsByTagName( 'title' )->length > 0 ) { + $title = $dom->getElementsByTagName( 'title' )->item( '0' )->nodeValue; + } + return ( wp_strip_all_tags( $title ) == "" ? false : wp_strip_all_tags( $title ) ); + } + + return false; +} + + +/** + * Get WebSite IP Server And Country Name + * + * @param $url string domain name e.g : wp-statistics.com + * @return array + */ +function wp_statistics_get_domain_server( $url ) { + global $WP_Statistics; + + //Create Empty Object + $result = array( + 'ip' => '', + 'country' => '' + ); + + //Get Ip by Domain + if ( function_exists( 'gethostbyname' ) ) { + $ip = gethostbyname( $url ); + if ( filter_var( $ip, FILTER_VALIDATE_IP ) ) { + $result['ip'] = $ip; + //Get country Code + if ( $WP_Statistics->get_option( 'geoip' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'country' ); + if ( $geoip_reader != false ) { + try { + $record = $geoip_reader->country( $ip ); + $result['country'] = $record->country->isoCode; + } catch ( Exception $e ) { + } + } + } + } + } + + return $result; +} + +/** + * Show Site Icon by Url + * + * @param $url + * @param int $size + * @param string $style + * @return bool|string + */ +function wp_statistics_show_site_icon( $url, $size = 16, $style = '' ) { + $url = preg_replace( '/^https?:\/\//', '', $url ); + if ( $url != "" ) { + $imgurl = "https://www.google.com/s2/favicons?domain=" . $url; + return '<img src="' . $imgurl . '" width="' . $size . '" height="' . $size . '" style="' . ( $style == "" ? 'vertical-align: -3px;' : '' ) . '" />'; + } + + return false; +} + +/** + * Get Number Referer Domain + * + * @param $url + * @param array $time_rang + * @return integer + */ +function wp_statistics_get_number_referer_from_domain( $url, $time_rang = array() ) { + global $wpdb; + + //Get Domain Name + $search_url = wp_statistics_get_domain_name( esc_url_raw( $url ) ); + + //Prepare SQL + $time_sql = ''; + if ( count( $time_rang ) > 0 and ! empty( $time_rang ) ) { + $time_sql = sprintf( "AND `last_counter` BETWEEN '%s' AND '%s'", $time_rang[0], $time_rang[1] ); + } + $sql = $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->prefix}statistics_visitor` WHERE `referred` REGEXP \"^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}\" AND referred <> '' AND LENGTH(referred) >=12 AND (`referred` LIKE %s OR `referred` LIKE %s OR `referred` LIKE %s OR `referred` LIKE %s) " . $time_sql . " ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC", 'https://www.' . $wpdb->esc_like( $search_url ) . '%', 'https://' . $wpdb->esc_like( $search_url ) . '%', 'http://www.' . $wpdb->esc_like( $search_url ) . '%', 'http://' . $wpdb->esc_like( $search_url ) . '%' ); + + //Get Count + return $wpdb->get_var( $sql ); +} + +/** + * Get Domain name from url + * e.g : https://wp-statistics.com/add-ons/ -> wp-statistics.com + * + * @param $url + * @return mixed + */ +function wp_statistics_get_domain_name( $url ) { + //Remove protocol + $url = preg_replace( "(^https?://)", "", trim( $url ) ); + //remove w(3) + $url = preg_replace( '#^(http(s)?://)?w{3}\.#', '$1', $url ); + //remove all Query + $url = explode( "/", $url ); + + return $url[0]; +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/functions/purge-hits.php b/wp-content/plugins/wp-statistics/includes/functions/purge-hits.php new file mode 100644 index 0000000..f731bec --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/functions/purge-hits.php @@ -0,0 +1,67 @@ +<?php +function wp_statistics_purge_visitor_hits( $purge_hits ) { + GLOBAL $wpdb, $WP_Statistics; + + // If it's less than 10 hits, don't do anything. + if ( $purge_hits > 9 ) { + // Purge the visitor's with more than the defined hits. + $result = $wpdb->get_results( + $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}statistics_visitor WHERE `hits` > %s", $purge_hits ) + ); + + $to_delete = array(); + + // Loop through the results and store the requried information in an array. We don't just process it now as deleting + // the rows from the visitor table will mess up the results from our first query. + foreach ( $result as $row ) { + $to_delete[] = array( $row->ID, $row->last_counter, $row->hits ); + } + if ( count( $to_delete ) > 0 ) { + foreach ( $to_delete as $item ) { + // First update the daily hit count. + $wpdb->query( + $wpdb->prepare( + "UPDATE {$wpdb->prefix}statistics_visit SET `visit` = `visit` - %d WHERE `last_counter` = %s;", + $item[2], + $item[1] + ) + ); + // Next remove the visitor. Note we can't do both in a single query, looks like $wpdb doesn't like executing them together. + $wpdb->query( + $wpdb->prepare( "DELETE FROM {$wpdb->prefix}statistics_visitor WHERE `id` = %s;", $item[0] ) + ); + } + + $result_string = sprintf( + __( '%s records purged successfully.', 'wp-statistics' ), + '<code>' . count( $to_delete ) . '</code>' + ); + } else { + $result_string = __( 'No visitors found to purge.', 'wp-statistics' ); + } + } else { + $result_string = __( 'Number of hits must be greater than or equal to 10!', 'wp-statistics' ); + } + + if ( $WP_Statistics->get_option( 'prune_report' ) == true ) { + $blogname = get_bloginfo( 'name' ); + $blogemail = get_bloginfo( 'admin_email' ); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if ( $WP_Statistics->get_option( 'email_list' ) == '' ) { + $WP_Statistics->update_option( 'email_list', $blogemail ); + } + + wp_mail( + $WP_Statistics->get_option( 'email_list' ), + __( 'Database pruned on', 'wp-statistics' ) . ' ' . $blogname, + $result_string, + $headers + ); + } + + return $result_string; +} diff --git a/wp-content/plugins/wp-statistics/includes/functions/purge.php b/wp-content/plugins/wp-statistics/includes/functions/purge.php new file mode 100644 index 0000000..1f42292 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/functions/purge.php @@ -0,0 +1,154 @@ +<?php +function wp_statistics_purge_data( $purge_days ) { + global $wpdb, $WP_Statistics; + + // If it's less than 30 days, don't do anything. + if ( $purge_days > 30 ) { + // Purge the visit data. + $table_name = $wpdb->prefix . 'statistics_visit'; + $date_string = $WP_Statistics->current_date( 'Y-m-d', '-' . $purge_days ); + + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `last_counter` < %s", $date_string ) ); + + if ( $result ) { + // Update the historical count with what we purged. + $historical_result = $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->prefix}statistics_historical SET value = value + %d WHERE `category` = 'visits'", $result ) ); + if ( $historical_result == 0 ) { + $wpdb->insert( + $wpdb->prefix . "statistics_historical", + array( + 'value' => $result, + 'category' => 'visits', + 'page_id' => - 2, + 'uri' => '-2', + ) + ); + } + + $result_string = sprintf( __( '%s data older than %s days purged successfully.', 'wp-statistics' ), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>' ); + } else { + $result_string = sprintf( __( 'No records found to purge from %s!', 'wp-statistics' ), '<code>' . $table_name . '</code>' ); + } + + // Purge the visitors data. + $table_name = $wpdb->prefix . 'statistics_visitor'; + + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `last_counter` < %s", $date_string ) ); + + if ( $result ) { + // Update the historical count with what we purged. + $historical_result = $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->prefix}statistics_historical SET value = value + %d WHERE `category` = 'visitors'", $result ) ); + if ( $historical_result == 0 ) { + $wpdb->insert( + $wpdb->prefix . "statistics_historical", + array( + 'value' => $result, + 'category' => 'visitors', + 'page_id' => - 1, + 'uri' => '-1', + ) + ); + } + + $result_string .= '<br>' . sprintf( __( '%s data older than %s days purged successfully.', 'wp-statistics' ), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>' ); + } else { + $result_string .= '<br>' . sprintf( __( 'No records found to purge from %s!', 'wp-statistics' ), '<code>' . $table_name . '</code>' ); + } + + // Purge the exclusions data. + $table_name = $wpdb->prefix . 'statistics_exclusions'; + + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `date` < %s", $date_string ) ); + + if ( $result ) { + $result_string .= '<br>' . sprintf( __( '%s data older than %s days purged successfully.', 'wp-statistics' ), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>' ); + } else { + $result_string .= '<br>' . sprintf( __( 'No records found to purge from %s!', 'wp-statistics' ), '<code>' . $table_name . '</code>' ); + } + + // Purge the search data. + $table_name = $wpdb->prefix . 'statistics_search'; + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `last_counter` < %s", $date_string ) ); + + if ( $result ) { + $result_string .= '<br>' . sprintf( __( '%s data older than %s days purged successfully.', 'wp-statistics' ), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>' ); + } else { + $result_string .= '<br>' . sprintf( __( 'No records found to purge from %s!', 'wp-statistics' ), '<code>' . $table_name . '</code>' ); + } + + // Purge the pages data, this is more complex as we want to save the historical data per page. + $table_name = $wpdb->prefix . 'statistics_pages'; + $historical = 0; + + // The first thing we need to do is update the historical data by finding all the unique pages. + $result = $wpdb->get_results( + $wpdb->prepare( "SELECT DISTINCT uri FROM {$table_name} WHERE `date` < %s", $date_string ) + ); + + // If we have a result, let's store the historical data. + if ( $result ) { + // Loop through all the unique rows that were returned. + foreach ( $result as $row ) { + // Use the unique rows to get a total count from the database of all the data from the given URIs/Pageids that we're going to delete later. + $historical = $wpdb->get_var( + $wpdb->prepare( + "SELECT sum(count) FROM {$table_name} WHERE `uri` = %s AND `date` < %s", + $row->uri, + $date_string + ) + ); + + // Do an update of the historical data. + $uresult = $wpdb->query( + $wpdb->prepare( + "UPDATE {$wpdb->prefix}statistics_historical SET `value` = value + %d WHERE `uri` = %s AND `category` = 'uri'", + $historical, + $row->uri, + $date_string + ) + ); + + // If we failed it's because this is the first time we've seen this URI/pageid so let's create a historical row for it. + if ( $uresult == 0 ) { + $wpdb->insert( + $wpdb->prefix . "statistics_historical", + array( + 'value' => $historical, + 'category' => 'uri', + 'uri' => $row->uri, + 'page_id' => wp_statistics_uri_to_id( $row->uri ), + ) + ); + } + } + } + + // Now that we've done all of the required historical data storage, we can actually delete the data from the database. + $result = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table_name} WHERE `date` < %s", $date_string ) ); + + if ( $result ) { + $result_string .= '<br>' . sprintf( __( '%s data older than %s days purged successfully.', 'wp-statistics' ), '<code>' . $table_name . '</code>', '<code>' . $purge_days . '</code>' ); + } else { + $result_string .= '<br>' . sprintf( __( 'No records found to purge from %s!', 'wp-statistics' ), '<code>' . $table_name . '</code>' ); + } + + if ( $WP_Statistics->get_option( 'prune_report' ) == true ) { + $blogname = get_bloginfo( 'name' ); + $blogemail = get_bloginfo( 'admin_email' ); + + $headers[] = "From: $blogname <$blogemail>"; + $headers[] = "MIME-Version: 1.0"; + $headers[] = "Content-type: text/html; charset=utf-8"; + + if ( $WP_Statistics->get_option( 'email_list' ) == '' ) { + $WP_Statistics->update_option( 'email_list', $blogemail ); + } + + wp_mail( $WP_Statistics->get_option( 'email_list' ), __( 'Database pruned on', 'wp-statistics' ) . ' ' . WP_Statistics_Admin_Pages::sanitize_mail_subject( $blogname ), $result_string, $headers ); + } + + return $result_string; + } else { + return __( 'Please select a value over 30 days.', 'wp-statistics' ); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/functions/tinymce.php b/wp-content/plugins/wp-statistics/includes/functions/tinymce.php new file mode 100644 index 0000000..6066e38 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/functions/tinymce.php @@ -0,0 +1,10 @@ +<?php +if ( ! defined( 'ABSPATH' ) ) + exit; + +function wp_statistic_tinymce_plugin_translation() { + $lang = WP_Statistics_TinyMCE::lang(); + $translated = $lang['translate']; + return $translated; +} +$strings = wp_statistic_tinymce_plugin_translation(); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/index.php b/wp-content/plugins/wp-statistics/includes/index.php new file mode 100644 index 0000000..a6ce9c8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/index.php @@ -0,0 +1,2 @@ +<?php +# Silence is golden. diff --git a/wp-content/plugins/wp-statistics/includes/log/all-browsers.php b/wp-content/plugins/wp-statistics/includes/log/all-browsers.php new file mode 100644 index 0000000..ee6632e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/all-browsers.php @@ -0,0 +1,313 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +//Set Default Time Picker Option +list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); +list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend +); + +$rangestartdate = $WP_Statistics->real_current_date( 'Y-m-d', '-0', $rangestart_utime ); +$rangeenddate = $WP_Statistics->real_current_date( 'Y-m-d', '-0', $rangeend_utime ); + +// Browsers +$Browsers = wp_statistics_ua_list(); +if ( ! is_array( $Browsers ) ) { + $Browsers = array(); +} + +natcasesort( $Browsers ); +$BrowserVisits = array(); +$total = 0; +foreach ( $Browsers as $Browser ) { + //Get List Of count Visitor By Agent + $BrowserVisits[ $Browser ] = wp_statistics_useragent( $Browser, $rangestartdate, $rangeenddate ); + //Sum This agent + $total += $BrowserVisits[ $Browser ]; +} + +//Add Unknown Agent to total +$total += $other_agent_count = $wpdb->get_var( 'SELECT COUNT(*) FROM `' . $wpdb->prefix . 'statistics_visitor` WHERE `last_counter` BETWEEN \'' . $rangestartdate . '\' AND \'' . $rangeenddate . '\' AND `agent` NOT IN (\'' . implode( "','", $Browsers ) . '\')' ); + +$browser_name = array(); +$i = 0; +$browser_value = array(); +$browser_color = array(); + +foreach ( $BrowserVisits as $key => $value ) { + if ( $value > 0 ) { + $i ++; + $browser_name[] = "'" . wp_statistics_get_browser_list( strtolower( $key ) ) . "'"; + $browser_value[] = $value; + $browser_color[] = wp_statistics_generate_rgba_color( $i, '0.4' ); + } +} + +//Add Unknown Agent +if ( $other_agent_count > 0 ) { + $browser_name[] = "'" . __( 'Other', 'wp-statistics' ) . "'"; + $browser_value[] = $other_agent_count; + $browser_color[] = wp_statistics_generate_rgba_color( 10, '0.4' ); +} + +// Platforms +$Platforms = wp_statistics_platform_list( null, $rangestartdate, $rangeenddate ); +if ( ! is_array( $Platforms ) ) { + $Platforms = array(); +} + +natcasesort( $Platforms ); +$PlatformVisits = array(); +foreach ( $Platforms as $Platform ) { + $PlatformVisits[ $Platform ] = wp_statistics_platform( $Platform ); +} + +$i = 0; +foreach ( $PlatformVisits as $key => $value ) { + $i ++; + $platform_name[] = "'" . $key . "'"; + $platform_value[] = $value; + $platform_color[] = wp_statistics_generate_rgba_color( $i, '0.4' ); +} +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Browser Statistics', 'wp-statistics' ) ); ?> + <div><?php wp_statistics_date_range_selector( WP_Statistics::$page['browser'], $daysToDisplay ); ?></div> + <div class="postbox-container" style="width: 48%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Browsers', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( __( 'Toggle panel: %s', 'wp-statistics' ), $paneltitle ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + <div class="inside"> + <canvas id="browsers-log" height="200"></canvas> + <script> + var ctx = document.getElementById("browsers-log").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'pie', + data: { + labels: [<?php echo implode( ', ', $browser_name ); ?>], + datasets: [{ + label: '<?php _e( 'Browsers', 'wp-statistics' ); ?>', + data: [<?php echo implode( ', ', $browser_value ); ?>], + backgroundColor: [<?php echo implode( ', ', $browser_color ); ?>], + }] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + tooltips: { + callbacks: { + label: function (tooltipItem, data) { + var dataset = data.datasets[tooltipItem.datasetIndex]; + var total = dataset.data.reduce(function (previousValue, currentValue, currentIndex, array) { + return previousValue + currentValue; + }); + var currentValue = dataset.data[tooltipItem.index]; + var precentage = Math.floor(((currentValue / total) * 100) + 0.5); + return precentage + "% - " + data.labels[tooltipItem.index]; + } + } + } + } + }); + </script> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 48%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Platform', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <canvas id="platforms-log" height="200"></canvas> + <script> + var ctx = document.getElementById("platforms-log").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'pie', + data: { + labels: [<?php echo implode( ', ', $platform_name ); ?>], + datasets: [{ + label: '<?php _e( 'Platforms', 'wp-statistics' ); ?>', + data: [<?php echo implode( ', ', $platform_value ); ?>], + backgroundColor: [<?php echo implode( ', ', $platform_color ); ?>], + }] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + tooltips: { + callbacks: { + label: function (tooltipItem, data) { + var dataset = data.datasets[tooltipItem.datasetIndex]; + var total = dataset.data.reduce(function (previousValue, currentValue, currentIndex, array) { + return previousValue + currentValue; + }); + var currentValue = dataset.data[tooltipItem.index]; + var precentage = Math.floor(((currentValue / total) * 100) + 0.5); + return precentage + "% - " + data.labels[tooltipItem.index]; + } + } + } + } + }); + </script> + </div> + </div> + </div> + </div> + </div> + + <div style="width: 100%; clear: both;"> + <hr/> + </div> + + <div class="postbox-container" style="width: 30%; float: left; margin-right: 20px;"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <?php + $BrowsersCount = count( $Browsers ); + for ( $BrowserCount = 0; $BrowserCount < $BrowsersCount; $BrowserCount ++ ) { + if ( $BrowserCount % 3 == 0 ) { + wp_statistics_browser_version_stats( $Browsers[ $BrowserCount ], $rangestartdate, $rangeenddate ); + } + } + ?> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 30%; float: left; margin-right: 20px;"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <?php + for ( $BrowserCount = 0; $BrowserCount < $BrowsersCount; $BrowserCount ++ ) { + if ( $BrowserCount % 3 == 1 ) { + wp_statistics_browser_version_stats( $Browsers[ $BrowserCount ], $rangestartdate, $rangeenddate ); + } + } + ?> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 30%; float: left"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <?php + for ( $BrowserCount = 0; $BrowserCount < $BrowsersCount; $BrowserCount ++ ) { + if ( $BrowserCount % 3 == 2 ) { + wp_statistics_browser_version_stats( $Browsers[ $BrowserCount ], $rangestartdate, $rangeenddate ); + } + } + ?> + </div> + </div> + </div> +</div> + +<?php +function wp_statistics_browser_version_stats( $Browser, $rangestartdate, $rangeenddate ) { + $id = 'browser-stats-' . $Browser; + $browser_tag = strtolower( preg_replace( '/[^a-zA-Z]/', '', $Browser ) ); + $versions = wp_statistics_agent_version_list( $Browser, $rangestartdate, $rangeenddate ); + $version_name = array(); + $version_value = array(); + $browser_color = array(); + $i = 0; + + if ( count( $versions ) < 10 ) { + return; + } + + foreach ( $versions as $key => $value ) { + $i ++; + $version_value[ $value ] = wp_statistics_agent_version( $Browser, $value, $rangestartdate, $rangeenddate ); + $version_color[] = wp_statistics_generate_rgba_color( $i, '0.4' ); + } + + natcasesort( $version_value ); + $version_value = array_slice( $version_value, - 20 ); + + foreach ( $version_value as $key => $value ) { + $version_name[] = "'" . $key . "'"; + } + ?> + <div class="postbox"> + <?php $paneltitle = sprintf( __( '%s Version', 'wp-statistics' ), wp_statistics_get_browser_list( strtolower( $Browser ) ) ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <canvas id="<?php echo $id; ?>" height="250"></canvas> + <script> + var ctx = document.getElementById("<?php echo $id; ?>").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'doughnut', + data: { + labels: [<?php echo implode( ', ', $version_name ); ?>], + datasets: [{ + label: '<?php _e( 'Platforms', 'wp-statistics' ); ?>', + data: [<?php echo implode( ', ', $version_value ); ?>], + backgroundColor: [<?php echo implode( ', ', $version_color ); ?>], + }] + }, + options: { + responsive: true, + legend: { + display: false, + }, + tooltips: { + callbacks: { + label: function (tooltipItem, data) { + var dataset = data.datasets[tooltipItem.datasetIndex]; + var total = dataset.data.reduce(function (previousValue, currentValue, currentIndex, array) { + return previousValue + currentValue; + }); + var currentValue = dataset.data[tooltipItem.index]; + var precentage = Math.floor(((currentValue / total) * 100) + 0.5); + return precentage + "% - " + data.labels[tooltipItem.index]; + } + } + } + } + }); + </script> + </div> + </div> +<?php } ?> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/authors.php b/wp-content/plugins/wp-statistics/includes/log/authors.php new file mode 100644 index 0000000..c0d56a7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/authors.php @@ -0,0 +1,261 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> + +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Author Statistics', 'wp-statistics' ) ); ?> + <?php + //Set Default Time Picker Option + list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); + if ( array_key_exists( 'author', $_GET ) ) { + $author = intval( $_GET['author'] ); + } else { + if ( array_key_exists( 'preauthor', $_GET ) ) { + $author = intval( $_GET['preauthor'] ); + } else { + $author = 0; + } + } + + $html = __( 'Select Author', 'wp-statistics' ) . ': '; + $html .= '<select name="author" id="author">'; + + $authors_list = get_users( 'who=authors' ); + + foreach ( $authors_list as $author_obj ) { + + if ( $author_obj !== false ) { + if ( $author_obj->ID === $author ) { + $selected = ' SELECTED'; + } else { + $selected = ''; + } + + $html .= '<option value="' . $author_obj->ID . "\"{$selected}>" . ( $author_obj->display_name != "" ? $author_obj->display_name : $author_obj->user_login ) . '</option>'; + } + } + + $html .= '</select>'; + + $html .= ' <input type="submit" value="' . __( 'Select', 'wp-statistics' ) . '" class="button-primary">'; + $html .= '<br>'; + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend + ); + + wp_statistics_date_range_selector( + WP_Statistics::$page['authors'], + $daysToDisplay, + null, + null, + '&preauthor=' . $author, + $html + ); + + $args = array( + 'author' => $author, + ); + + $posts = get_posts( $args ); + + $visit_total = 0; + $daysInThePast = (int) ( ( time() - $rangeend_utime ) / 86400 ); + $posts_stats = array(); + $visits = array(); + + // Setup the array, otherwise PHP may throw an error. + foreach ( $posts as $post ) { + $posts_stats[ $post->ID ] = 0; + } + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Real_Current_Date( 'M j', '-' . $i, $rangeend_utime ) . "'"; + + $stat = 0; + foreach ( $posts as $post ) { + $temp_stat = wp_statistics_pages( '-' . (int) ( $i + $daysInThePast ), null, $post->ID ); + $posts_stats[ $post->ID ] += $temp_stat; + $stat = $temp_stat; + } + + $visits[] = $stat; + $visit_total += $stat; + } + ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Author Statistics Chart', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <canvas id="hit-stats" height="80"></canvas> + <script> + var ctx = document.getElementById("hit-stats").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + { + label: '<?php _e( 'Visits', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $visits ); ?>], + backgroundColor: 'rgba(54, 162, 235, 0.2)', + borderColor: 'rgba(54, 162, 235, 1)', + borderWidth: 1, + fill: true, + }, + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + title: { + display: true, + text: '<?php echo sprintf( __( 'Hits in the last %s days', 'wp-statistics' ), $daysToDisplay ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Author Statistics Summary', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <table width="auto" class="widefat table-stats" id="summary-stats"> + <tbody> + <tr> + <th></th> + <th class="th-center"><?php _e( 'Count', 'wp-statistics' ); ?></th> + </tr> + + <tr> + <th><?php _e( 'Number of posts by author:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php echo number_format_i18n( count( $posts ) ); ?></span> + </th> + </tr> + + <tr> + <th><?php _e( 'Chart Visits Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php echo number_format_i18n( $visit_total ); ?></span> + </th> + </tr> + + <tr> + <th><?php _e( 'All Time Visits Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php + + $stat = 0; + foreach ( $posts as $post ) { + $stat += wp_statistics_pages( 'total', null, $post->ID ); + } + + echo number_format_i18n( $stat ); ?></span></th> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Author Posts Sorted by Hits', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <table width="auto" class="widefat table-stats" id="post-stats"> + <tbody> + <tr> + <th><?php _e( 'Post Title', 'wp-statistics' ); ?></th> + <th class="th-center"><?php _e( 'Hits', 'wp-statistics' ); ?></th> + </tr> + + <?php + arsort( $posts_stats ); + + $posts_by_id = array(); + + foreach ( $posts as $post ) { + $posts_by_id[ $post->ID ] = $post; + } + + foreach ( $posts_stats as $post_id => $post_stat ) { + $post_obj = $posts_by_id[ $post_id ]; + + ?> + <tr> + <th> + <a href="<?php echo get_permalink( + $post_obj + ); ?>"><?php echo esc_html( $post_obj->post_title ); ?></a> + </th> + <th class="th-center"><span><?php echo number_format_i18n( $post_stat ); ?></span> + </th> + </tr> + <?php + } + ?> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/categories.php b/wp-content/plugins/wp-statistics/includes/log/categories.php new file mode 100644 index 0000000..755919a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/categories.php @@ -0,0 +1,248 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Category Statistics', 'wp-statistics' ) ); ?> + <?php + //Set Default Time Picker Option + list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); + if ( array_key_exists( 'cat', $_GET ) ) { + $category = intval( $_GET['cat'] ); + } else { + if ( array_key_exists( 'precat', $_GET ) ) { + $category = intval( $_GET['precat'] ); + } else { + $category = 0; + } + } + + $html = __( 'Select Category', 'wp-statistics' ) . ': '; + + $args = array( + 'selected' => $category, + 'echo' => 0, + ); + + $html .= wp_dropdown_categories( $args ); + $html .= '<input type="submit" value="' . __( 'Select', 'wp-statistics' ) . '" class="button-primary">'; + $html .= '<br>'; + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend + ); + + wp_statistics_date_range_selector( + WP_Statistics::$page['categories'], + $daysToDisplay, + null, + null, + '&precat=' . $category, + $html + ); + + $args = array( + 'category' => $category, + ); + + $posts = get_posts( $args ); + + $visit_total = 0; + $daysInThePast = (int) ( ( time() - $rangeend_utime ) / 86400 ); + $posts_stats = array(); + $visits = array(); + + // Setup the array, otherwise PHP may throw an error. + foreach ( $posts as $post ) { + $posts_stats[ $post->ID ] = 0; + } + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Real_Current_Date( 'M j', '-' . $i, $rangeend_utime ) . "'"; + + $stat = 0; + foreach ( $posts as $post ) { + $temp_stat = wp_statistics_pages( '-' . (int) ( $i + $daysInThePast ), null, $post->ID ); + $posts_stats[ $post->ID ] += $temp_stat; + $stat = $temp_stat; + } + + $visits[] = $stat; + $visit_total += $stat; + } + ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Category Statistics Chart', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <canvas id="hit-stats" height="80"></canvas> + <script> + var ctx = document.getElementById("hit-stats").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + { + label: '<?php _e( 'Visits', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $visits ); ?>], + backgroundColor: 'rgba(54, 162, 235, 0.2)', + borderColor: 'rgba(54, 162, 235, 1)', + borderWidth: 1, + fill: true, + }, + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + title: { + display: true, + text: '<?php echo sprintf( __( 'Hits in the last %s days', 'wp-statistics' ), $daysToDisplay ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Category Statistics Summary', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <table width="auto" class="widefat table-stats" id="summary-stats"> + <tbody> + <tr> + <th></th> + <th class="th-center"><?php _e( 'Count', 'wp-statistics' ); ?></th> + </tr> + + <tr> + <th><?php _e( 'Number of posts in category:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php echo number_format_i18n( count( $posts ) ); ?></span> + </th> + </tr> + + <tr> + <th><?php _e( 'Chart Visits Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php echo number_format_i18n( $visit_total ); ?></span> + </th> + </tr> + + <tr> + <th><?php _e( 'All Time Visits Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php + + $stat = 0; + foreach ( $posts as $post ) { + $stat += wp_statistics_pages( 'total', null, $post->ID ); + } + + echo number_format_i18n( $stat ); ?></span></th> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Category Posts Sorted by Hits', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <table width="auto" class="widefat table-stats" id="post-stats"> + <tbody> + <tr> + <th><?php _e( 'Post Title', 'wp-statistics' ); ?></th> + <th class="th-center"><?php _e( 'Hits', 'wp-statistics' ); ?></th> + </tr> + + <?php + arsort( $posts_stats ); + + $posts_by_id = array(); + + foreach ( $posts as $post ) { + $posts_by_id[ $post->ID ] = $post; + } + + foreach ( $posts_stats as $post_id => $post_stat ) { + $post_obj = $posts_by_id[ $post_id ]; + + ?> + <tr> + <th> + <a href="<?php echo get_permalink( + $post_obj + ); ?>"><?php echo esc_html( $post_obj->post_title ); ?></a> + </th> + <th class="th-center"><span><?php echo number_format_i18n( $post_stat ); ?></span> + </th> + </tr> + <?php + } + ?> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + +</div> diff --git a/wp-content/plugins/wp-statistics/includes/log/exclusions.php b/wp-content/plugins/wp-statistics/includes/log/exclusions.php new file mode 100644 index 0000000..7dc62bd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/exclusions.php @@ -0,0 +1,269 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +if ( $WP_Statistics->get_option( 'record_exclusions' ) != 1 ) { + echo "<div class='updated settings-error'><p><strong>" . + __( + 'Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!', + 'wp-statistics' + ) . + "</strong></p></div>"; +} + +//Set Default Time Picker Option +list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); +list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend +); +$total_stats = $WP_Statistics->get_option( 'chart_totals' ); + +$excluded_reasons = array( + 'Robot', + 'Browscap', + 'IP Match', + 'Self Referral', + 'Login Page', + 'User Role', + 'GeoIP', + 'Hostname', + 'Robot Threshold', + 'Honey Pot', + 'Feeds', + 'Excluded URL', + '404 Pages', + 'Referrer Spam', + 'AJAX Request', + 'CronJob', +); +$excluded_reason_tags = array( + 'Robot' => 'robot', + 'Browscap' => 'browscap', + 'IP Match' => 'ipmatch', + 'Self Referral' => 'selfreferral', + 'Login Page' => 'loginpage', + 'User Role' => 'userrole', + 'Total' => 'total', + 'GeoIP' => 'geoip', + 'Hostname' => 'hostname', + 'Robot Threshold' => 'robot_threshold', + 'Honey Pot' => 'honeypot', + 'Feeds' => 'feed', + 'Excluded URL' => 'excluded_url', + '404 Pages' => 'excluded_404s', + 'Referrer Spam' => 'referrer_spam', + 'AJAX Request' => 'ajax', + 'CronJob' => 'cronjob', +); +$excluded_reason_db = array( + 'Robot' => 'robot', + 'Browscap' => 'browscap', + 'IP Match' => 'ip match', + 'Self Referral' => 'self referral', + 'Login Page' => 'login page', + 'User Role' => 'user role', + 'Total' => 'total', + 'GeoIP' => 'geoip', + 'Hostname' => 'hostname', + 'Robot Threshold' => 'robot_threshold', + 'Honey Pot' => 'honeypot', + 'Feeds' => 'feed', + 'Excluded URL' => 'excluded url', + '404 Pages' => '404', + 'Referrer Spam' => 'referrer_spam', + 'AJAX Request' => 'ajax', + 'CronJob' => 'cronjob', +); +$excluded_reason_translate = array( + 'Robot' => json_encode( __( 'Robot', 'wp-statistics' ) ), + 'Browscap' => json_encode( __( 'Browscap', 'wp-statistics' ) ), + 'IP Match' => json_encode( __( 'IP Match', 'wp-statistics' ) ), + 'Self Referral' => json_encode( __( 'Self Referral', 'wp-statistics' ) ), + 'Login Page' => json_encode( __( 'Login Page', 'wp-statistics' ) ), + 'User Role' => json_encode( __( 'User Role', 'wp-statistics' ) ), + 'Total' => json_encode( __( 'Total', 'wp-statistics' ) ), + 'GeoIP' => json_encode( __( 'GeoIP', 'wp-statistics' ) ), + 'Hostname' => json_encode( __( 'Hostname', 'wp-statistics' ) ), + 'Robot Threshold' => json_encode( __( 'Robot Threshold', 'wp-statistics' ) ), + 'Honey Pot' => json_encode( __( 'Honey Pot', 'wp-statistics' ) ), + 'Feeds' => json_encode( __( 'Feeds', 'wp-statistics' ) ), + 'Excluded URL' => json_encode( __( 'Excluded URL', 'wp-statistics' ) ), + '404 Pages' => json_encode( __( '404 Pages', 'wp-statistics' ) ), + 'Referrer Spam' => json_encode( __( 'Referrer Spam', 'wp-statistics' ) ), + 'AJAX Request' => json_encode( __( 'AJAX Request', 'wp-statistics' ) ), + 'CronJob' => json_encode( __( 'CronJob', 'wp-statistics' ) ), +); +$excluded_results = array( 'Total' => array() ); +$excluded_total = 0; + +foreach ( $excluded_reasons as $reason ) { + // The reasons array above is used both for display and internal purposes. Internally the values are all lower case but the array + // is created with mixed case so it looks nice to the user. Therefore we have to convert it to lower case here. + $thisreason = $excluded_reason_db[ $reason ]; + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + + // We're looping through the days backwards, so let's fine out what date we want to look at. + $thisdate = $WP_Statistics->real_current_date( 'Y-m-d', '-' . $i, $rangeend_utime ); + + // Create the SQL query string to get the data. + $query = $wpdb->prepare( + "SELECT count FROM {$wpdb->prefix}statistics_exclusions WHERE reason = %s AND date = %s", + $thisreason, + $thisdate + ); + + // Execute the query. + $excluded_results[ $reason ][ $i ] = $wpdb->get_var( $query ); + + // If we're returned an error or a FALSE value, then let's make sure it's set to a numerical 0. + if ( $excluded_results[ $reason ][ $i ] < 1 ) { + $excluded_results[ $reason ][ $i ] = 0; + } + + // Make sure to initialize the results so we don't get warnings when WP_DEBUG is enabled. + if ( ! array_key_exists( $i, $excluded_results['Total'] ) ) { + $excluded_results['Total'][ $i ] = 0; + } + + // We're totalling things up here for use later. + $excluded_results['Total'][ $i ] += $excluded_results[ $reason ][ $i ]; + $excluded_total += $excluded_results[ $reason ][ $i ]; + } +} + +$excuded_all_time = $wpdb->get_var( "SELECT SUM(count) FROM {$wpdb->prefix}statistics_exclusions" ); + +// If the chart totals is enabled, cheat a little and just add another reason category to the list so it gets generated later. +if ( $total_stats == 1 ) { + $excluded_reasons[] = 'Total'; +} + +for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Real_Current_Date( 'M j', '-' . $i, $rangeend_utime ) . "'"; +} + +$stats = array(); +foreach ( $excluded_reasons as $reason ) { + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $stats[ $reason ][] = $excluded_results[ $reason ][ $i ]; + } +} +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Exclusions Statistics', 'wp-statistics' ) ); ?> + <?php wp_statistics_date_range_selector( WP_Statistics::$page['exclusions'], $daysToDisplay ); ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Exclusions Statistical Chart', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <div class="inside"> + <canvas id="hit-stats" height="80"></canvas> + <script type='text/javascript' src='<?php echo WP_Statistics::$reg['plugin-url']; ?>assets/js/Chart.bundle.min.js'></script> + <script> + var ctx = document.getElementById("hit-stats").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + <?php foreach ($stats as $key => $value) : $i ++; ?> + { + label: '<?php echo $key; ?>', + data: [<?php echo implode( ',', $value ); ?>], + backgroundColor: <?php echo wp_statistics_generate_rgba_color( $i, '0.2' ); ?>, + borderColor: <?php echo wp_statistics_generate_rgba_color( $i, '1' ); ?>, + borderWidth: 1, + fill: true, + }, + <?php endforeach; ?> + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + title: { + display: true, + text: '<?php echo sprintf( __( 'Hits in the last %s days', 'wp-statistics' ), $daysToDisplay ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + </div> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Hits Statistics Summary', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <table width="auto" class="widefat table-stats" id="summary-stats"> + <tbody> + <tr> + <th></th> + <th class="th-center"><?php _e( 'Exclusions', 'wp-statistics' ); ?></th> + </tr> + + <tr> + <th><?php _e( 'Chart Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php echo number_format_i18n( $excluded_total ); ?></span> + </th> + </tr> + + <tr> + <th><?php _e( 'All Time Total:', 'wp-statistics' ); ?></th> + <th class="th-center"> + <span><?php echo number_format_i18n( $excuded_all_time ); ?></span> + </th> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/hit-statistics.php b/wp-content/plugins/wp-statistics/includes/log/hit-statistics.php new file mode 100644 index 0000000..35e98c6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/hit-statistics.php @@ -0,0 +1,166 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Hit Statistics', 'wp-statistics' ) ); ?> + <?php + //Set Default Time Picker Option + list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend + ); + + wp_statistics_date_range_selector( WP_Statistics::$page['hits'], $daysToDisplay ); + + $visit_total = 0; + $visitor_total = 0; + $daysInThePast = (int) ( ( time() - $rangeend_utime ) / 86400 ); + $visitors = array(); + $visits = array(); + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $stat = wp_statistics_visit( '-' . (int) ( $i + $daysInThePast ), true ); + $visit_total += $stat; + $visits[] = $stat; + } + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $stat = wp_statistics_visitor( '-' . (int) ( $i + $daysInThePast ), true ); + $visitor_total += $stat; + $visitors[] = $stat; + } + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Real_Current_Date( 'M j', '-' . $i, $rangeend_utime ) . "'"; + } + ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Hits Statistics Chart', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <canvas id="hit-stats" height="80"></canvas> + <script> + var ctx = document.getElementById("hit-stats").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + <?php if ( $WP_Statistics->get_option( 'visitors' ) ) { ?> + { + label: '<?php _e( 'Visitors', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $visitors ); ?>], + backgroundColor: 'rgba(255, 99, 132, 0.2)', + borderColor: 'rgba(255, 99, 132, 1)', + borderWidth: 1, + fill: true, + }, + <?php } ?> + <?php if ( $WP_Statistics->get_option( 'visits' ) ) { ?> + { + label: '<?php _e( 'Visits', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $visits ); ?>], + backgroundColor: 'rgba(54, 162, 235, 0.2)', + borderColor: 'rgba(54, 162, 235, 1)', + borderWidth: 1, + fill: true, + }, + <?php } ?> + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + title: { + display: true, + text: '<?php echo sprintf( __( 'Hits in the last %s days', 'wp-statistics' ), $daysToDisplay ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Hits Statistics Summary', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <table width="auto" class="widefat table-stats" id="summary-stats"> + <tbody> + <tr> + <th></th> + <th class="th-center"><?php _e( 'Visits', 'wp-statistics' ); ?></th> + <th class="th-center"><?php _e( 'Visitors', 'wp-statistics' ); ?></th> + </tr> + + <tr> + <th><?php _e( 'Chart Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php echo number_format_i18n( $visit_total ); ?></span> + </th> + <th class="th-center"><span><?php echo number_format_i18n( $visitor_total ); ?></span> + </th> + </tr> + + <tr> + <th><?php _e( 'All Time Total:', 'wp-statistics' ); ?></th> + <th class="th-center"> + <span><?php echo number_format_i18n( wp_statistics_visit( 'total' ) ); ?></span> + </th> + <th class="th-center"> + <span><?php echo number_format_i18n( + wp_statistics_visitor( 'total', null, true ) + ); ?></span> + </th> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + +</div> diff --git a/wp-content/plugins/wp-statistics/includes/log/last-search.php b/wp-content/plugins/wp-statistics/includes/log/last-search.php new file mode 100644 index 0000000..d8cd6c7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/last-search.php @@ -0,0 +1,223 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +$search_engines = wp_statistics_searchengine_list(); + +$search_result['All'] = wp_statistics_searchword( 'all', 'total' ); + +foreach ( $search_engines as $key => $se ) { + $search_result[ $key ] = wp_statistics_searchword( $key, 'total' ); +} + +if ( array_key_exists( 'referred', $_GET ) ) { + if ( $_GET['referred'] != '' ) { + $referred = $_GET['referred']; + } else { + $referred = 'All'; + } +} else { + $referred = 'All'; +} + +$total = $search_result[ $referred ]; +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Latest Search Words', 'wp-statistics' ) ); ?> + <br/> + <ul class="subsubsub"> + <?php + $search_result_count = count( $search_result ); + $i = 0; + $separator = ' | '; + + foreach ( $search_result as $key => $value ) { + $i ++; + + if ( $i == $search_result_count ) { + $separator = ''; + } + + if ( $key == 'All' ) { + $tag = ''; + $name = 'All'; + $translate = __( 'All', 'wp-statistics' ); + } else { + $tag = $search_engines[ $key ]['tag']; + $name = $search_engines[ $key ]['name']; + $translate = $search_engines[ $key ]['translated']; + } + + //Check current class + $current = ""; + if ( ( ! isset( $_GET['referred'] ) and $name == 'All' ) || ( isset( $_GET['referred'] ) and $tag == trim( $_GET['referred'] ) ) ) { + $current = 'class="current" '; + } + + echo "<li><a {$current} href='" . ( $name == 'All' ? WP_Statistics_Admin_Pages::admin_url( 'words' ) : WP_Statistics_Admin_Pages::admin_url( 'words', array( 'referred' => $tag ) ) ) . "'>" . $translate . " <span class='count'>(" . number_format_i18n( $value ) . ")</span></a></li>{$separator}"; + } + ?> + </ul> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Latest Search Word Statistics', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( __( 'Toggle panel: %s', 'wp-statistics' ), $paneltitle ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <div class='log-latest'> + <?php + if ( $total > 0 ) { + // Instantiate pagination object with appropriate arguments + $items_per_page = 10; + $page = isset( $_GET['pagination-page'] ) ? abs( (int) $_GET['pagination-page'] ) : 1; + $offset = ( $page * $items_per_page ) - $items_per_page; + $start = $offset; + $end = $offset + $items_per_page; + + // Retrieve MySQL data + if ( $referred && $referred != '' ) { + $search_query = wp_statistics_searchword_query( $referred ); + } else { + $search_query = wp_statistics_searchword_query( 'all' ); + } + + // Determine if we're using the old or new method of storing search engine info and build the appropriate table name. + $tablename = $wpdb->prefix . 'statistics_'; + + if ( $WP_Statistics->get_option( 'search_converted' ) ) { + $tabletwo = $tablename . 'visitor'; + $tablename .= 'search'; + $result = $wpdb->get_results( + "SELECT * FROM `{$tablename}` INNER JOIN `{$tabletwo}` on {$tablename}.`visitor` = {$tabletwo}.`ID` WHERE {$search_query} ORDER BY `{$tablename}`.`ID` DESC LIMIT {$start}, {$end}" + ); + } else { + $tablename .= 'visitor'; + $result = $wpdb->get_results( + "SELECT * FROM `{$tablename}` WHERE {$search_query} ORDER BY `{$tablename}`.`ID` DESC LIMIT {$start}, {$end}" + ); + } + + $ISOCountryCode = $WP_Statistics->get_country_codes(); + + $dash_icon = wp_statistics_icons( 'dashicons-location-alt', 'map' ); + + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"last-referrer\"><tr>"; + echo "<td>" . __( 'Word', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Browser', 'wp-statistics' ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . __( 'Country', 'wp-statistics' ) . "</td>"; + } + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td>" . __( 'City', 'wp-statistics' ) . "</td>"; + } + echo "<td>" . __( 'Date', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'IP', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Referrer', 'wp-statistics' ) . "</td>"; + echo "</tr>"; + + // Load city name + $geoip_reader = false; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'city' ); + } + + foreach ( $result as $items ) { + + if ( ! $WP_Statistics->Search_Engine_QueryString( $items->referred ) ) { + continue; + } + + if ( $WP_Statistics->get_option( 'search_converted' ) ) { + $this_search_engine = $WP_Statistics->Search_Engine_Info_By_Engine( $items->engine ); + $words = $items->words; + } else { + $this_search_engine = $WP_Statistics->Search_Engine_Info( $items->referred ); + $words = $WP_Statistics->Search_Engine_QueryString( $items->referred ); + } + + echo "<tr>"; + echo "<td style=\"text-align: left\">"; + echo $words; + echo "</td>"; + echo "<td style=\"text-align: left\">"; + if ( array_search( strtolower( $items->agent ), wp_statistics_get_browser_list( 'key' ) ) !== false + ) { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/' ) . $items->agent . ".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons( 'dashicons-editor-help', 'unknown' ); + } + echo "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'agent' => $items->agent ) ) . "'>{$agent}</a>"; + echo "</td>"; + $city = ''; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + if ( $geoip_reader != false ) { + try { + $reader = $geoip_reader->city( $items->ip ); + $city = $reader->city->name; + } catch ( Exception $e ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + + if ( ! $city ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + } + } + + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td style=\"text-align: left\">"; + echo "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $items->location . '.png' ) . "' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + echo "</td>"; + } + + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td style=\"text-align: left\">"; + echo $city; + echo "</td>"; + } + + echo "<td style=\"text-align: left\">"; + echo date( get_option( 'date_format' ), strtotime( $items->last_counter ) ); + echo "</td>"; + + echo "<td style=\"text-align: left\">"; + if ( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __( '#hash#', 'wp-statistics' ); + } else { + $ip_string = "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'type' => 'last-all-visitor', 'ip' => $items->ip ) ) . "'>{$items->ip}</a>"; + } + echo $ip_string; + echo "</td>"; + + echo "<td style=\"text-align: left\">"; + echo $WP_Statistics->get_referrer_link( $items->referred ); + echo "</td>"; + + echo "</tr>"; + } + + echo "</table>"; + } + ?> + </div> + </div> + </div> + <?php + if ( $total > 0 ) { + wp_statistics_paginate_links( array( + 'item_per_page' => $items_per_page, + 'total' => $total, + 'current' => $page, + ) ); + } ?> + </div> + </div> + </div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/last-visitor.php b/wp-content/plugins/wp-statistics/includes/log/last-visitor.php new file mode 100644 index 0000000..1821dec --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/last-visitor.php @@ -0,0 +1,208 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +$ISOCountryCode = $WP_Statistics->get_country_codes(); + +$_var = 'agent'; +$_get = '%'; +$title = 'All'; + +if ( array_key_exists( 'agent', $_GET ) ) { + $_var = 'agent'; + $_get = '%' . $_GET['agent'] . '%'; + $title = htmlentities( $_GET['agent'], ENT_QUOTES ); +} + +if ( array_key_exists( 'ip', $_GET ) ) { + $_var = 'ip'; + $_get = '%' . $_GET['ip'] . '%'; + $title = htmlentities( $_GET['ip'], ENT_QUOTES ); +} + +$_get = esc_attr( $_get ); +$total_visitor = $wpdb->get_var( "SELECT COUNT(*) FROM `{$wpdb->prefix}statistics_visitor`" ); + +if ( $_get != '%' ) { + $total = $wpdb->get_var( + $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->prefix}statistics_visitor` WHERE `{$_var}` LIKE %s", $_get ) + ); +} else { + $total = $total_visitor; +} + +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Recent Visitors', 'wp-statistics' ) ); ?> + <br/> + <ul class="subsubsub"> + <li class="all"><a <?php if ( $_get == '%' ) { + echo 'class="current"'; + } ?>href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'visitors' ); ?>"><?php _e( 'All', 'wp-statistics' ); ?> + <span class="count">(<?php echo number_format_i18n( $total_visitor ); ?>)</span></a></li> + <?php + if ( isset( $_var ) ) { + $spacer = " | "; + + if ( $_var == 'agent' ) { + $Browsers = wp_statistics_ua_list(); + $browser_names = wp_statistics_get_browser_list(); + $i = 0; + $Total = count( $Browsers ); + echo $spacer; + foreach ( $Browsers as $Browser ) { + if ( $Browser == null ) { + continue; + } + + $i ++; + if ( $title == $Browser ) { + $current = 'class="current" '; + } else { + $current = ""; + } + if ( $i == $Total ) { + $spacer = ""; + } + + //Get Browser name + $browser_name = wp_statistics_get_browser_list( strtolower( $Browser ) ); + echo "<li><a " . $current . "href='" . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'agent' => $Browser ) ) . "'> " . $browser_name . " <span class='count'>(" . number_format_i18n( wp_statistics_useragent( $Browser ) ) . ")</span></a></li>"; + echo $spacer; + } + } else { + if ( $_get != '%' ) { + $current = 'class="current" '; + } else { + $current = ""; + } + echo $spacer . "<li><a {$current} href='?page=" . WP_Statistics::$page['visitors'] . "&{$_var}={$_get}'>{$title} <span class='count'>({$total})</span></a></li>"; + } + } + ?> + </ul> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Recent Visitor Statistics', 'wp-statistics' ); + if ( $_get != '%' ) { + $paneltitle = $paneltitle . ' [' . __( 'Filtered by', 'wp-statistics' ) . ': ' . $title . ']'; + } ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( __( 'Toggle panel: %s', 'wp-statistics' ), $paneltitle ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <?php + // Retrieve MySQL data + if ( $_get != '%' ) { + $sql = $wpdb->prepare( "SELECT count(*) FROM `{$wpdb->prefix}statistics_visitor` WHERE `{$_var}` LIKE %s", $_get ); + } else { + $sql = "SELECT count(*) FROM `{$wpdb->prefix}statistics_visitor`"; + } + + // Instantiate pagination object with appropriate arguments + $total = $wpdb->get_var( $sql ); + $items_per_page = 15; + $page = isset( $_GET['pagination-page'] ) ? abs( (int) $_GET['pagination-page'] ) : 1; + $offset = ( $page * $items_per_page ) - $items_per_page; + + //Get Query Result + $query = str_replace( "SELECT count(*) FROM", "SELECT * FROM", $sql ) . " ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC LIMIT {$offset}, {$items_per_page}"; + $result = $wpdb->get_results( $query ); + + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"last-referrer\"><tr>"; + echo "<td>" . __( 'Browser', 'wp-statistics' ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . __( 'Country', 'wp-statistics' ) . "</td>"; + } + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td>" . __( 'City', 'wp-statistics' ) . "</td>"; + } + echo "<td>" . __( 'Date', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'IP', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Referrer', 'wp-statistics' ) . "</td>"; + echo "</tr>"; + + // Load city name + $geoip_reader = false; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'city' ); + } + + foreach ( $result as $items ) { + echo "<tr>"; + echo "<td style=\"text-align: left\">"; + if ( array_search( strtolower( $items->agent ), wp_statistics_get_browser_list( 'key' ) ) !== false ) { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/' ) . $items->agent . ".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons( 'dashicons-editor-help', 'unknown' ); + } + echo "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'agent' => $items->agent ) ) . "'>{$agent}</a>"; + echo "</td>"; + $city = ''; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + if ( $geoip_reader != false ) { + try { + $reader = $geoip_reader->city( $items->ip ); + $city = $reader->city->name; + } catch ( Exception $e ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + + if ( ! $city ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + } + } + + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td style=\"text-align: left\">"; + echo "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $items->location . '.png' ) . "' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + echo "</td>"; + } + + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td style=\"text-align: left\">"; + echo $city; + echo "</td>"; + } + + echo "<td style=\"text-align: left\">"; + echo date_i18n( get_option( 'date_format' ), strtotime( $items->last_counter ) ); + echo "</td>"; + + echo "<td style=\"text-align: left\">"; + if ( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __( '#hash#', 'wp-statistics' ); + } else { + $ip_string = "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'type' => 'last-all-visitor', 'ip' => $items->ip ) ) . "'>{$items->ip}</a>"; + } + echo $ip_string; + echo "</td>"; + + echo "<td style=\"text-align: left\">"; + echo $WP_Statistics->get_referrer_link( $items->referred ); + echo "</td>"; + + echo "</tr>"; + } + echo "</table>"; + ?> + </div> + </div> + <?php + //Show Pagination + wp_statistics_paginate_links( array( + 'item_per_page' => $items_per_page, + 'total' => $total, + 'current' => $page, + ) ); + ?> + </div> + </div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/log.php b/wp-content/plugins/wp-statistics/includes/log/log.php new file mode 100644 index 0000000..88b0181 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/log.php @@ -0,0 +1,140 @@ +<?php +$nag_html = ''; + +if ( ! $WP_Statistics->get_option( 'geoip' ) ) { + $nag_html .= '<div class="notice notice-warning"><p>' . sprintf( __( 'GeoIP collection is not enabled. Please go to <a href="%s">setting page</a> to enable GeoIP for getting more information and location (country) from the visitor.', 'wp-statistics' ), WP_Statistics_Admin_Pages::admin_url( 'settings', array( 'tab' => 'externals-settings' ) ) ) . '</p></div>'; +} + +if ( ! $WP_Statistics->get_option( 'disable_donation_nag', false ) ) { + $nag_html .= '<div class="notice notice-success is-dismissible wps-donate-notice"><p>' . __( 'Have you thought about donating to WP Statistics?', 'wp-statistics' ) . ' <a href="http://wp-statistics.com/donate/" target="_blank">' . __( 'Donate Now!', 'wp-statistics' ) . '</a></p></div>'; +} + +// WP Statistics 10.0 had a bug which could corrupt the metabox display if the user re-ordered the widgets. Check to see if the meta data is corrupt and if so delete it. +$widget_order = get_user_meta( $WP_Statistics->user_id, 'meta-box-order_toplevel_page_wps_overview_page', true ); + +if ( is_array( $widget_order ) && count( $widget_order ) > 2 ) { + delete_user_meta( $WP_Statistics->user_id, 'meta-box-order_toplevel_page_wps_overview_page' ); +} + +// Add the about box here as metaboxes added on the actual page load cannot be closed. +add_meta_box( 'wps_about_postbox', sprintf( __( 'WP Statistics - Version %s', 'wp-statistics' ), WP_Statistics::$reg['version'] ), 'wp_statistics_generate_overview_postbox_contents', $WP_Statistics->menu_slugs['overview'], 'side', null, array( 'widget' => 'about' ) ); + +function wp_statistics_generate_overview_postbox_contents( $post, $args ) { + $widget = $args['args']['widget']; + $container_id = str_replace( '.', '_', $widget . '_postbox' ); + + echo '<div id="' . $container_id . '">' . WP_Statistics_Admin_Pages::loading_meta_box() . '</div>'; + wp_statistics_generate_widget_load_javascript( $widget, $container_id ); +} + +?> +<div class="wrap wps-wrap"> + <?php echo $nag_html; ?> + <?php WP_Statistics_Admin_Pages::show_page_title(); ?> + <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?> + <?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?> + + <div class="metabox-holder" id="overview-widgets"> + <div class="postbox-container" id="wps-postbox-container-1"> + <?php do_meta_boxes( $WP_Statistics->menu_slugs['overview'], 'side', '' ); ?> + </div> + + <div class="postbox-container" id="wps-postbox-container-2"> + <?php do_meta_boxes( $WP_Statistics->menu_slugs['overview'], 'normal', '' ); ?> + </div> + </div> +</div> +<?php + +//Prepare List Of Page Url +$page_urls = array(); +$widget_list = array( 'browsers', 'countries', 'hits', 'pages', 'referring', 'search', 'words', 'top-visitors', 'recent' ); +$all_widget = WP_Statistics_Dashboard::widget_list(); +foreach ( $widget_list as $widget ) { + if ( array_key_exists( $widget, $all_widget ) ) { + $page_urls[ 'wps_' . str_replace( "-", "_", $widget ) . '_more_button' ] = WP_Statistics_Admin_Pages::admin_url( $all_widget[ $widget ]['page_url'] ); + } +} + +//Add Extra Pages For Overview Page +foreach ( array( 'exclusions' => 'exclusions', 'users_online' => 'online' ) as $p_key => $p_link ) { + $page_urls[ 'wps_' . $p_key . '_more_button' ] = WP_Statistics_Admin_Pages::admin_url( $p_link ); +} +?> +<script type="text/javascript"> + var wp_statistics_destinations = <?php echo json_encode( $page_urls ); ?>; + var wp_statistics_loading_image = '<?php echo WP_Statistics_Admin_Pages::loading_meta_box(); ?>' + + jQuery(document).ready(function () { + + // Add the "more" and "refresh" buttons. + jQuery('.postbox').each(function () { + var temp = jQuery(this); + var temp_id = temp.attr('id'); + var temp_html = temp.html(); + if (temp_id == 'wps_summary_postbox' || temp_id == 'wps_map_postbox' || temp_id == 'wps_about_postbox') { + if (temp_id != 'wps_about_postbox') { + new_text = '<?php echo WP_Statistics_Admin_Pages::meta_box_button( 'refresh' );?>'; + new_text = new_text.replace('{{refreshid}}', temp_id.replace('_postbox', '_refresh_button')); + + temp_html = temp_html.replace('</button>', new_text); + } + } else { + new_text = '<?php echo WP_Statistics_Admin_Pages::meta_box_button();?>'; + new_text = new_text.replace('{{refreshid}}', temp_id.replace('_postbox', '_refresh_button')); + new_text = new_text.replace('{{moreid}}', temp_id.replace('_postbox', '_more_button')); + + temp_html = temp_html.replace('</button>', new_text); + } + + temp.html(temp_html); + }); + + // close postboxes that should be closed + jQuery('.if-js-closed').removeClass('if-js-closed').addClass('closed'); + + // postboxes setup + postboxes.add_postbox_toggles('<?php echo $WP_Statistics->menu_slugs['overview']; ?>'); + + jQuery('.wps-refresh').unbind('click').on('click', wp_statistics_refresh_widget); + jQuery('.wps-more').unbind('click').on('click', wp_statistics_goto_more); + jQuery('.hide-postbox-tog').on('click', wp_statistics_refresh_on_toggle_widget); + jQuery('.wps-donate-notice').on('click', '.notice-dismiss', function () { + var data = { + 'action': 'wp_statistics_close_notice', + 'notice': 'donate', + }; + + jQuery.ajax({ + url: ajaxurl, + type: 'get', + data: data, + datatype: 'json', + }); + }); + + // Added New Ads + <?php + $overview_ads = get_option( 'wp_statistics_overview_page_ads', false ); + if($overview_ads != false and is_array( $overview_ads ) and $overview_ads['ads']['ID'] != $overview_ads['view'] and $overview_ads['ads']['status'] == "yes") { + ?> + jQuery(`<div id="wps_overview_ads_postbox" class="postbox"><div class="inside"><div class="close-overview-ads"><span class="dashicons dashicons-dismiss"></span></div><a href="<?php echo( isset( $overview_ads['ads']['link'] ) ? $overview_ads['ads']['link'] : '' ); ?>" title="<?php echo( isset( $overview_ads['ads']['title'] ) ? $overview_ads['ads']['title'] : '' ); ?>" <?php echo( $overview_ads['ads']['_target'] == "yes" ? ' target="_blank"' : '' ); ?>><img style="display: block;" src="<?php echo( isset( $overview_ads['ads']['image'] ) ? $overview_ads['ads']['image'] : '' ); ?>" alt="<?php echo( isset( $overview_ads['ads']['title'] ) ? $overview_ads['ads']['title'] : '' ); ?>"></a></div></div>`).insertAfter("#wps-postbox-container-2 #normal-sortables div.postbox:first"); + jQuery(document).on('click', '.close-overview-ads', function () { + jQuery("#wps_overview_ads_postbox").fadeOut("normal"); + jQuery.ajax({ + url: ajaxurl, + type: 'get', + data: { + 'action': 'wp_statistics_close_overview_ads', + 'ads_id': '<?php echo $overview_ads['ads']['ID']; ?>', + 'wps_nonce': '<?php echo wp_create_nonce( 'overview_ads_nonce' ); ?>' + }, + datatype: 'json' + }); + }); + <?php + } + ?> + + }); +</script> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/online.php b/wp-content/plugins/wp-statistics/includes/log/online.php new file mode 100644 index 0000000..d91960d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/online.php @@ -0,0 +1,169 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Online Users', 'wp-statistics' ) ); ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Online Users', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( __( 'Toggle panel: %s', 'wp-statistics' ), $paneltitle ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + <div class="inside"> + <?php + //Get List ISO country + $ISOCountryCode = $WP_Statistics->get_country_codes(); + + //Get Total User Online + $sql = "SELECT COUNT(*) FROM {$wpdb->prefix}statistics_useronline"; + $total = $wpdb->get_var( $sql ); + + if ( $total > 0 ) { + + // Load city name + $geoip_reader = false; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'city' ); + } + + //Show Table + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"online-users\"><tr>"; + echo "<td>" . __( 'Browser', 'wp-statistics' ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . __( 'Country', 'wp-statistics' ) . "</td>"; + } + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td>" . __( 'City', 'wp-statistics' ) . "</td>"; + } + echo "<td>" . __( 'IP', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Online For', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Page', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Referrer', 'wp-statistics' ) . "</td>"; + echo "<td></td>"; + echo "</tr>"; + + // Instantiate pagination object with appropriate arguments + $items_per_page = 10; + $page = isset( $_GET['pagination-page'] ) ? abs( (int) $_GET['pagination-page'] ) : 1; + $offset = ( $page * $items_per_page ) - $items_per_page; + $start = $offset; + $end = $offset + $items_per_page; + + //Get Query Result + $query = str_replace( "SELECT COUNT(*) FROM", "SELECT * FROM", $sql ) . " ORDER BY `{$wpdb->prefix}statistics_useronline`.`ID` DESC LIMIT {$offset}, {$items_per_page}"; + $result = $wpdb->get_results( $query ); + + foreach ( $result as $items ) { + + //Sanitize Online Table + if ( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __( '#hash#', 'wp-statistics' ); + $map_string = ""; + } else { + $ip_string = "{$items->ip}"; + $map_string = "<a class='wps-text-muted' href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'ip' => $items->ip ) ) . "'>" . wp_statistics_icons( 'dashicons-visibility', 'visibility' ) . "</a><a class='show-map wps-text-muted' href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank' title='" . __( 'Map', 'wp-statistics' ) . "'>" . wp_statistics_icons( 'dashicons-location-alt', 'map' ) . "</a>"; + } + + echo "<tr>"; + + //Show Browser + echo "<td style=\"text-align: left\">"; + if ( array_search( strtolower( $items->agent ), wp_statistics_get_browser_list( 'key' ) ) !== false ) { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/' ) . $items->agent . ".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons( 'dashicons-editor-help', 'unknown' ); + } + echo "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'agent' => $items->agent ) ) . "'>{$agent}</a>"; + echo "</td>"; + + //Show Country + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td style=\"text-align: left\">"; + echo "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $items->location . '.png' ) . "' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + echo "</td>"; + } + + //Show City + $city = ''; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + if ( $geoip_reader != false ) { + try { + $reader = $geoip_reader->city( $items->ip ); + $city = $reader->city->name; + } catch ( Exception $e ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + if ( ! $city ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + } + } + + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td style=\"text-align: left\">"; + echo $city; + echo "</td>"; + } + + //Show IP + echo "<td style=\"text-align: left\">"; + echo $ip_string; + echo "</td>"; + + //Show Online For + echo "<td style=\"text-align: left\">"; + $timediff = ( $items->timestamp - $items->created ); + if ( $timediff > 3600 ) { + $onlinefor = date( "H:i:s", ( $items->timestamp - $items->created ) ); + } else if ( $timediff > 60 ) { + $onlinefor = "00:" . date( "i:s", ( $items->timestamp - $items->created ) ); + } else { + $onlinefor = "00:00:" . date( "s", ( $items->timestamp - $items->created ) ); + } + echo "<span>" . $onlinefor . "</span>"; + echo "</td>"; + + //Show Page + $page_info = wp_statistics_get_page_info( $items->page_id, $items->type ); + echo "<td style=\"text-align: left\">"; + echo ( $page_info['link'] != '' ? '<a href="' . $page_info['link'] . '" target="_blank" class="wps-text-danger">' : '' ) . mb_substr( $page_info['title'], 0, 200, "utf-8" ) . ( $page_info['link'] != '' ? '</a>' : '' ); + echo "</td>"; + + //Show Referrer + echo "<td style=\"text-align: left\">"; + echo $WP_Statistics->get_referrer_link( $items->referred ); + echo "</td>"; + + //Show Link View IP + echo "<td style=\"text-align: center\">"; + echo $map_string; + echo "</td>"; + + echo '</tr>'; + } + + echo "</table>"; + } else { + echo "<div class='wps-center'>" . __( 'Currently there are no online users in the site.', 'wp-statistics' ) . "</div>"; + } + ?> + </div> + </div> + <?php + if ( $total > 0 ) { + wp_statistics_paginate_links( array( + 'item_per_page' => $items_per_page, + 'total' => $total, + 'current' => $page, + ) ); + } ?> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/page-statistics.php b/wp-content/plugins/wp-statistics/includes/log/page-statistics.php new file mode 100644 index 0000000..126861d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/page-statistics.php @@ -0,0 +1,95 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +if ( array_key_exists( 'page-uri', $_GET ) ) { + $pageuri = $_GET['page-uri']; +} else { + $pageuri = null; +} +if ( array_key_exists( 'page-id', $_GET ) ) { + $pageid = (int) $_GET['page-id']; +} else if ( array_key_exists( 'prepage', $_GET ) ) { + $pageid = (int) $_GET['prepage']; +} else { + $pageid = null; +} + +if ( $pageuri && ! $pageid ) { + $pageid = wp_statistics_uri_to_id( $pageuri ); +} + +$post = get_post( $pageid ); +if ( is_object( $post ) ) { + $title = esc_html( $post->post_title ); +} else { + $title = ""; +} + +//Set Default Time Picker Option +list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); + +//Check Page +if ( array_key_exists( 'page-id', $_GET ) ) { + $page = intval( $_GET['page-id'] ); +} else { + if ( array_key_exists( 'prepage', $_GET ) ) { + $page = intval( $_GET['prepage'] ); + } else { + $page = 0; + } +} + +//Check Page Type +$arg = array(); +$post_type = get_post_type( $page ); +if ( $page > 0 and $post_type != "page" ) { + $arg = array( "post_type" => get_post_type( $page ), "posts_per_page" => 50, "order" => "DESC" ); +} + +//Add arg to This Url +$url_fields = '&prepage=' . $pageid; + +//Show Select Box Ui +$html = __( 'Select Page', 'wp-statistics' ) . ': '; +$html .= '<select name="page-id">'; +foreach ( wp_statistics_get_post_list( $arg ) as $post_id => $post_title ) { + $html .= '<option value="' . $post_id . '"' . selected( $post_id, $page, false ) . '>' . $post_title . '</option>'; +} +$html .= '</select>'; +$html .= ' <input type="submit" value="' . __( 'Select', 'wp-statistics' ) . '" class="button-primary">'; +$html .= '<br>'; +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( sprintf( __( 'Page Trend for Post ID %s', 'wp-statistics' ), $pageid ) . ' - ' . $title ); ?> + <?php wp_statistics_date_range_selector( WP_Statistics::$page['pages'], $daysToDisplay, null, null, $url_fields, $html ); ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Page Trend', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( __( 'Toggle panel: %s', 'wp-statistics' ), $paneltitle ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <?php + include( WP_Statistics::$reg['plugin-dir'] . 'includes/log/widgets/page.php' ); + wp_statistics_generate_page_postbox_content( + $pageuri, + $pageid, + $daysToDisplay, + null, + $rangestart, + $rangeend + ); ?> + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/search-statistics.php b/wp-content/plugins/wp-statistics/includes/log/search-statistics.php new file mode 100644 index 0000000..8125fc6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/search-statistics.php @@ -0,0 +1,127 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +$search_engines = wp_statistics_searchengine_list(); + +//Set Default Time Picker Option +list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); +list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend +); +$daysInThePast = round( ( time() - $rangeend_utime ) / 86400, 0 ); + +$total_stats = $WP_Statistics->get_option( 'chart_totals' ); +$date = array(); +$stats = array(); +$total_daily = array(); + +foreach ( $search_engines as $se ) { + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + if ( ! array_key_exists( $i, $total_daily ) ) { + $total_daily[ $i ] = 0; + } + + $stat = wp_statistics_searchengine( $se['tag'], '-' . ( $i + $daysInThePast ) ); + $stats[ $se['name'] ][] = $stat; + $total_daily[ $i ] += $stat; + } +} + +for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Real_Current_Date( 'M j', '-' . $i, $rangeend_utime ) . "'"; +} +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Search Engine Referral Statistics', 'wp-statistics' ) ); ?> + <?php wp_statistics_date_range_selector( WP_Statistics::$page['searches'], $daysToDisplay ); ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Search Engine Referral Statistics', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> + + <div class="inside"> + <canvas id="search-stats" height="80"></canvas> + <script> + var colors = []; + colors['baidu'] = ['rgba(35, 25, 220, 0.2)', 'rgba(35, 25, 220, 1)']; + colors['bing'] = ['rgba(12, 132, 132, 0.2)', 'rgba(12, 132, 132, 1)']; + colors['duckduckgo'] = ['rgba(222, 88, 51, 0.2)', 'rgba(222, 88, 51, 1)']; + colors['google'] = ['rgba(23, 107, 239, 0.2)', 'rgba(23, 107, 239, 1)']; + colors['yahoo'] = ['rgba(64, 0, 144, 0.2)', 'rgba(64, 0, 144, 1)']; + colors['yandex'] = ['rgba(255, 219, 77, 0.2)', 'rgba(255, 219, 77, 1)']; + colors['ask'] = ['rgba(205, 0, 0, 0.2)', 'rgba(205, 0, 0, 1)']; + colors['clearch'] = ['rgba(13, 0, 76, 0.2)', 'rgba(13, 0, 76, 1)']; + colors['qwant'] = ['rgba(53, 60, 82, 0.2)', 'rgba(53, 60, 82, 1)']; + + var ctx = document.getElementById("search-stats").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + <?php foreach ( $search_engines as $se ): ?> + { + label: '<?php echo $se['name']; ?>', + data: [<?php echo implode( ',', $stats[ $se['name'] ] ); ?>], + backgroundColor: colors['<?php echo $se['tag']; ?>'][0], + borderColor: colors['<?php echo $se['tag']; ?>'][1], + borderWidth: 1, + fill: true, + }, + <?php endforeach; ?> + <?php if ( $total_stats == 1 ) : ?> + { + label: '<?php _e( 'Total', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $total_daily ); ?>], + backgroundColor: 'rgba(180, 180, 180, 0.2)', + borderColor: 'rgba(180, 180, 180, 1)', + borderWidth: 1, + fill: false, + }, + <?php endif;?> + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + title: { + display: true, + text: '<?php echo sprintf( __( 'Search engine referrals in the last %s days', 'wp-statistics' ), $daysToDisplay ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + </div> + </div> + </div> + </div> + </div> +</div> diff --git a/wp-content/plugins/wp-statistics/includes/log/tags.php b/wp-content/plugins/wp-statistics/includes/log/tags.php new file mode 100644 index 0000000..9b51eaf --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/tags.php @@ -0,0 +1,264 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Tag Statistics', 'wp-statistics' ) ); ?> + <?php + //Set Default Time Picker Option + list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); + + if ( array_key_exists( 'tag', $_GET ) ) { + $tag = $_GET['tag']; + } else { + if ( array_key_exists( 'pretag', $_GET ) ) { + $tag = $_GET['pretag']; + } else { + $tag = ''; + } + } + + $html = __( 'Select Tag', 'wp-statistics' ) . ': '; + + $tags = get_tags(); + + $html .= '<select name="tag" id="tag">'; + + foreach ( $tags as $tag_obj ) { + // If a tag hasn't been selected yet, use the first one in the tag list. + if ( '' === $tag ) { + $tag = $tag_obj->slug; + } + + // Check to see if this tag is the one that is currently selected. + if ( $tag_obj->slug === $tag ) { + $selected = ' SELECTED'; + } else { + $selected = ''; + } + + $html .= "<option value=\"{$tag_obj->slug}\"{$selected}>{$tag_obj->name}</option>"; + } + + $html .= '</select>'; + $html .= ' <input type="submit" value="' . __( 'Select', 'wp-statistics' ) . '" class="button-primary">'; + $html .= '<br>'; + + // Get TimeStamp + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend + ); + + wp_statistics_date_range_selector( WP_Statistics::$page['tags'], $daysToDisplay, null, null, '&pretag=' . $tag, $html ); + + $args = array( + 'tax_query' => array( + array( + 'taxonomy' => 'post_tag', + 'field' => 'slug', + 'terms' => sanitize_title( $tag ), + ), + ), + ); + + $posts = get_posts( $args ); + + $visit_total = 0; + $daysInThePast = (int) ( ( time() - $rangeend_utime ) / 86400 ); + $posts_stats = array(); + $visits = array(); + + // Setup the array, otherwise PHP may throw an error. + foreach ( $posts as $post ) { + $posts_stats[ $post->ID ] = 0; + } + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Real_Current_Date( 'M j', '-' . $i, $rangeend_utime ) . "'"; + + $stat = 0; + foreach ( $posts as $post ) { + $temp_stat = wp_statistics_pages( '-' . (int) ( $i + $daysInThePast ), null, $post->ID ); + $posts_stats[ $post->ID ] += $temp_stat; + $stat = $temp_stat; + } + + $visits[] = $stat; + $visit_total += $stat; + } + ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Tag Statistics Chart', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></h2> + + <div class="inside"> + <canvas id="hit-stats" height="80"></canvas> + <script> + var ctx = document.getElementById("hit-stats").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + { + label: '<?php _e( 'Visits', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $visits ); ?>], + backgroundColor: 'rgba(54, 162, 235, 0.2)', + borderColor: 'rgba(54, 162, 235, 1)', + borderWidth: 1, + fill: true, + }, + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + title: { + display: true, + text: '<?php echo sprintf( __( 'Hits in the last %s days', 'wp-statistics' ), $daysToDisplay ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Tag Statistics Summary', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></h2> + + <div class="inside"> + <table width="auto" class="widefat table-stats" id="summary-stats"> + <tbody> + <tr> + <th></th> + <th class="th-center"><?php _e( 'Count', 'wp-statistics' ); ?></th> + </tr> + + <tr> + <th><?php _e( 'Number of posts in tag:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php echo number_format_i18n( count( $posts ) ); ?></span> + </th> + </tr> + + <tr> + <th><?php _e( 'Chart Visits Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php echo number_format_i18n( $visit_total ); ?></span> + </th> + </tr> + + <tr> + <th><?php _e( 'All Time Visits Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><span><?php + + $stat = 0; + foreach ( $posts as $post ) { + $stat += wp_statistics_pages( 'total', null, $post->ID ); + } + + echo number_format_i18n( $stat ); ?></span></th> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + + <div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Tag Posts Sorted by Hits', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></h2> + + <div class="inside"> + <table width="auto" class="widefat table-stats" id="post-stats"> + <tbody> + <tr> + <th><?php _e( 'Post Title', 'wp-statistics' ); ?></th> + <th class="th-center"><?php _e( 'Hits', 'wp-statistics' ); ?></th> + </tr> + + <?php + arsort( $posts_stats ); + + $posts_by_id = array(); + + foreach ( $posts as $post ) { + $posts_by_id[ $post->ID ] = $post; + } + + foreach ( $posts_stats as $post_id => $post_stat ) { + $post_obj = $posts_by_id[ $post_id ]; + + ?> + <tr> + <th> + <a href="<?php echo get_permalink( + $post_obj + ); ?>"><?php echo esc_html( $post_obj->post_title ); ?></a> + </th> + <th class="th-center"><span><?php echo number_format_i18n( $post_stat ); ?></span> + </th> + </tr> + <?php + } + ?> + </tbody> + </table> + </div> + </div> + </div> + </div> + </div> + +</div> diff --git a/wp-content/plugins/wp-statistics/includes/log/top-countries.php b/wp-content/plugins/wp-statistics/includes/log/top-countries.php new file mode 100644 index 0000000..1dc0c9d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/top-countries.php @@ -0,0 +1,221 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +//Set Default Time Picker Option +list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); +list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend +); + +//Load ISO +$ISOCountryCode = $WP_Statistics->get_country_codes(); + +//Get Custom Country +$country_name = ''; +$total_visitor = 0; +if ( isset( $_REQUEST['country'] ) ) { + if ( array_key_exists( $_REQUEST['country'], $ISOCountryCode ) ) { + $country_name = $ISOCountryCode[ $_REQUEST['country'] ]; + $total = $wpdb->get_var( "SELECT COUNT(`location`) AS `count` FROM `{$wpdb->prefix}statistics_visitor` WHERE `location` = '" . $_REQUEST['country'] . "'" ); + } else { + echo '<script>window.location.href = "' . WP_Statistics_Admin_Pages::admin_url( 'countries' ) . '";</script>'; + } +} + +?> +<div class="wrap wps-wrap"> + <?php + //Show Time Range only in all list + if ( ! isset( $_REQUEST['country'] ) ) { + WP_Statistics_Admin_Pages::show_page_title( __( 'Top Countries', 'wp-statistics' ) ); + wp_statistics_date_range_selector( WP_Statistics::$page['countries'], $daysToDisplay ); + } else { + WP_Statistics_Admin_Pages::show_page_title( $country_name . ' ' . __( 'Visitors', 'wp-statistics' ) ); + ?> + <br/> + <ul class="subsubsub"> + <li class="all"> + <a href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'countries' ); ?>"><?php _e( 'All', 'wp-statistics' ); ?></a> + </li> + | + <li> + <a class="current" href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'countries', array( 'country' => $_REQUEST['country'] ) ) ?>"> + <?php echo $country_name; ?> + <span class="count">(<?php echo number_format_i18n( $total ); ?>)</span></a> + </li> + </ul> + <?php + } + ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php + if ( ! isset( $_REQUEST['country'] ) ) { + $paneltitle = __( 'Top Countries', 'wp-statistics' ); + } else { + $paneltitle = $country_name; + } + ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( __( 'Toggle panel: %s', 'wp-statistics' ), $paneltitle ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></h2> + + <div class="inside"> + <?php + if ( ! isset( $_REQUEST['country'] ) ) { + ?> + + <table class="widefat table-stats" id="last-referrer" style="width: 100%;"> + <tr> + <td width="10%"><?php _e( 'Rank', 'wp-statistics' ); ?></td> + <td width="30%" style="text-align: center;"><?php _e( 'Flag', 'wp-statistics' ); ?></td> + <td width="30%" style="text-align: center;"><?php _e( 'Country', 'wp-statistics' ); ?></td> + <td width="30%" style="text-align: center;"><?php _e( 'Visitor Count', 'wp-statistics' ); ?></td> + </tr> + + <?php + $rangestartdate = $WP_Statistics->real_current_date( 'Y-m-d', '-0', $rangestart_utime ); + $rangeenddate = $WP_Statistics->real_current_date( 'Y-m-d', '-0', $rangeend_utime ); + + $result = $wpdb->get_results( + sprintf( "SELECT `location`, COUNT(`location`) AS `count` FROM `{$wpdb->prefix}statistics_visitor` WHERE `last_counter` BETWEEN '%s' AND '%s' GROUP BY `location` ORDER BY `count` DESC", + $rangestartdate, + $rangeenddate + ) + ); + $i = 0; + + foreach ( $result as $item ) { + $i ++; + $item->location = strtoupper( $item->location ); + + echo "<tr>"; + echo "<td>$i</td>"; + echo "<td style=\"text-align: center;\"><img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $item->location . '.png' ) . "' title='{$ISOCountryCode[$item->location]}'/></td>"; + echo "<td style='text-align: left; padding-" . ( is_rtl() === true ? 'right' : 'left' ) . ": 12.8%;'>{$ISOCountryCode[$item->location]}</td>"; + echo "<td style=\"text-align: center;\"><a href='" . WP_Statistics_Admin_Pages::admin_url( 'countries', array( 'country' => $item->location ) ) . "'>" . number_format_i18n( $item->count ) . "</a></td>"; + echo "</tr>"; + } + ?> + </table> + <?php } else { + /* + * Show Custom Country + */ + + // Retrieve MySQL data + $sql = "SELECT count(*) FROM `{$wpdb->prefix}statistics_visitor` WHERE `location` = '" . $_REQUEST['country'] . "'"; + + // Instantiate pagination object with appropriate arguments + $total = $wpdb->get_var( $sql ); + $items_per_page = 15; + $page = isset( $_GET['pagination-page'] ) ? abs( (int) $_GET['pagination-page'] ) : 1; + $offset = ( $page * $items_per_page ) - $items_per_page; + + //Get Query Result + $query = str_replace( "SELECT count(*) FROM", "SELECT * FROM", $sql ) . " ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC LIMIT {$offset}, {$items_per_page}"; + $result = $wpdb->get_results( $query ); + + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"last-referrer\"><tr>"; + echo "<td>" . __( 'Browser', 'wp-statistics' ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . __( 'Country', 'wp-statistics' ) . "</td>"; + } + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td>" . __( 'City', 'wp-statistics' ) . "</td>"; + } + echo "<td>" . __( 'Date', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'IP', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Referrer', 'wp-statistics' ) . "</td>"; + echo "</tr>"; + + // Load city name + $geoip_reader = false; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'city' ); + } + + foreach ( $result as $items ) { + echo "<tr>"; + echo "<td style=\"text-align: left\">"; + if ( array_search( strtolower( $items->agent ), wp_statistics_get_browser_list( 'key' ) ) !== false ) { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/' ) . $items->agent . ".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons( 'dashicons-editor-help', 'unknown' ); + } + echo "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'agent' => $items->agent ) ) . "'>{$agent}</a>"; + echo "</td>"; + $city = ''; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + if ( $geoip_reader != false ) { + try { + $reader = $geoip_reader->city( $items->ip ); + $city = $reader->city->name; + } catch ( Exception $e ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + + if ( ! $city ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + } + } + + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td style=\"text-align: left\">"; + echo "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $items->location . '.png' ) . "' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + echo "</td>"; + } + + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td style=\"text-align: left\">"; + echo $city; + echo "</td>"; + } + + echo "<td style=\"text-align: left\">"; + echo date_i18n( get_option( 'date_format' ), strtotime( $items->last_counter ) ); + echo "</td>"; + + echo "<td style=\"text-align: left\">"; + if ( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __( '#hash#', 'wp-statistics' ); + } else { + $ip_string = "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'type' => 'last-all-visitor', 'ip' => $items->ip ) ) . "'>{$items->ip}</a>"; + } + echo $ip_string; + echo "</td>"; + + echo "<td style=\"text-align: left\">"; + echo $WP_Statistics->get_referrer_link( $items->referred ); + echo "</td>"; + + echo "</tr>"; + } + echo "</table>"; + } ?> + </div> + </div> + </div> + </div> + <?php + if ( isset( $_REQUEST['country'] ) ) { + //Show Pagination + wp_statistics_paginate_links( array( + 'item_per_page' => $items_per_page, + 'total' => $total, + 'current' => $page, + ) ); + } + ?> + </div> +</div> diff --git a/wp-content/plugins/wp-statistics/includes/log/top-pages.php b/wp-content/plugins/wp-statistics/includes/log/top-pages.php new file mode 100644 index 0000000..741459a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/top-pages.php @@ -0,0 +1,177 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +//Set Default Time Picker Option +list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); +list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend +); +$daysInThePast = round( ( time() - $rangeend_utime ) / 86400, 0 ); + +list( $total, $uris ) = wp_statistics_get_top_pages( + $WP_Statistics->Real_Current_Date( 'Y-m-d', '-0', $rangestart_utime ), + $WP_Statistics->Real_Current_Date( 'Y-m-d', '-0', $rangeend_utime ) +); +$count = 0; + +$stats = array(); +foreach ( $uris as $uri ) { + $count ++; + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $stats[ $uri[0] ][] = wp_statistics_pages( '-' . ( $i + $daysInThePast ), $uri[0] ); + } + + if ( $count > 4 ) { + break; + } +} + +for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Real_Current_Date( 'M j', '-' . $i, $rangeend_utime ) . "'"; +} +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Top Pages', 'wp-statistics' ) ); ?> + <?php wp_statistics_date_range_selector( WP_Statistics::$page['pages'], $daysToDisplay ); ?> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Top 5 Pages Trends', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( __( 'Toggle panel: %s', 'wp-statistics' ), $paneltitle ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></h2> + + <div class="inside"> + <canvas id="hit-stats" height="80"></canvas> + <script> + var colors = []; + colors[0] = ['rgba(12, 132, 132, 0.2)', 'rgba(12, 132, 132, 1)']; + colors[1] = ['rgba(23, 107, 239, 0.2)', 'rgba(23, 107, 239, 1)']; + colors[2] = ['rgba(222, 88, 51, 0.2)', 'rgba(222, 88, 51, 1)']; + colors[3] = ['rgba(255, 99, 132, 0.2)', 'rgba(255, 99, 132, 1)']; + colors[4] = ['rgba(54, 162, 235, 0.2)', 'rgba(54, 162, 235, 1)']; + + var ctx = document.getElementById("hit-stats").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + <?php foreach ($stats as $key => $value) : $i ++; ?> + { + label: '<?php echo $key; ?>', + data: [<?php echo implode( ',', $value ); ?>], + backgroundColor: colors[<?php echo $i; ?>][0], + borderColor: colors[<?php echo $i; ?>][1], + fill: true, + borderWidth: 1, + }, + <?php endforeach; ?> + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + title: { + display: true, + text: '<?php echo htmlentities( __( 'Top 5 Page Trending Stats', 'wp-statistics' ), ENT_QUOTES ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + </div> + </div> + + <div class="postbox"> + <?php $paneltitle = __( 'Top Pages', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></h2> + + <div class="inside"> + <?php + if ( $total > 0 ) { + // Instantiate pagination object with appropriate arguments + $items_per_page = 10; + $page = isset( $_GET['pagination-page'] ) ? abs( (int) $_GET['pagination-page'] ) : 1; + $offset = ( $page * $items_per_page ) - $items_per_page; + $start = $offset; + $end = $offset + $items_per_page; + $site_url = site_url(); + $count = 0; + + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"last-referrer\"><tr>"; + echo "<td width='10%'>" . __( 'ID', 'wp-statistics' ) . "</td>"; + echo "<td width='40%'>" . __( 'Title', 'wp-statistics' ) . "</td>"; + echo "<td width='40%'>" . __( 'Link', 'wp-statistics' ) . "</td>"; + echo "<td width='10%'>" . __( 'Visits', 'wp-statistics' ) . "</td>"; + echo "</tr>"; + + foreach ( $uris as $uri ) { + $count ++; + if ( $count >= $start ) { + + //Check Pages Id exist + if ( $uri[2] > 0 ) { + $arg = array( 'page-id' => $uri[2] ); + } else { + $arg = array( 'page-uri' => $uri[0] ); + } + + echo "<tr>"; + echo "<td style=\"text-align: left\">" . $count . "</td>"; + echo "<td style=\"text-align: left\">" . $uri[3] . "</td>"; + echo "<td style=\"text-align: left\"><a dir='ltr' href='" . $uri[4] . "' target='_blank'>" . htmlentities( urldecode( $uri[0] ), ENT_QUOTES ) . "</a></td>"; + echo "<td style=\"text-align: left\"><a href='" . WP_Statistics_Admin_Pages::admin_url( 'pages', $arg ) . "'>" . number_format_i18n( $uri[1] ) . "</a></td>"; + } + + if ( $count == $start + 10 ) { + break; + } + + } + + echo "</table>"; + } + ?> + </div> + </div> + <?php if ( $total > 0 ) { + wp_statistics_paginate_links( array( + 'item_per_page' => $items_per_page, + 'total' => $total, + 'current' => $page, + ) ); + } ?> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/top-referring.php b/wp-content/plugins/wp-statistics/includes/log/top-referring.php new file mode 100644 index 0000000..1618bd7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/top-referring.php @@ -0,0 +1,291 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +$date_args = ''; +//Set Default Time Picker Option +list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); +if ( isset( $_GET['hitdays'] ) and $_GET['hitdays'] > 0 ) { + $date_args .= '&hitdays=' . $daysToDisplay; +} +if ( isset( $_GET['rangeend'] ) and isset( $_GET['rangestart'] ) and strtotime( $_GET['rangestart'] ) != false and strtotime( $_GET['rangeend'] ) != false ) { + $date_args .= '&rangestart=' . $rangestart . '&rangeend=' . $rangeend; +} + +list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $daysToDisplay, + $rangestart, + $rangeend +); + +$rangestartdate = $WP_Statistics->real_current_date( 'Y-m-d', '-0', $rangestart_utime ); +$rangeenddate = $WP_Statistics->real_current_date( 'Y-m-d', '-0', $rangeend_utime ); + +if ( array_key_exists( 'referr', $_GET ) ) { + $referr = $title = $_GET['referr']; + $referr_field = '&referr=' . $referr; +} else { + $referr = ''; + $referr_field = null; +} + +$get_urls = array(); +$total = 0; + +if ( $referr ) { + + //Get domain Name + $search_url = wp_statistics_get_domain_name( trim( $_GET['referr'] ) ); + $result = $wpdb->get_results( + $wpdb->prepare( + "SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE `referred` REGEXP \"^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}\" AND referred <> '' AND LENGTH(referred) >=12 AND (`referred` LIKE %s OR `referred` LIKE %s OR `referred` LIKE %s OR `referred` LIKE %s) AND `last_counter` BETWEEN %s AND %s ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC", + 'https://www.' . $wpdb->esc_like( $search_url ) . '%', 'https://' . $wpdb->esc_like( $search_url ) . '%', 'http://www.' . $wpdb->esc_like( $search_url ) . '%', 'http://' . $wpdb->esc_like( $search_url ) . '%', + $rangestartdate, + $rangeenddate + ) + ); + + $total = count( $result ); +} else { + + //Get Wordpress Domain + $where = ''; + $domain_name = rtrim( preg_replace( '/^https?:\/\//', '', get_site_url() ), " / " ); + foreach ( array( "http", "https", "ftp" ) as $protocol ) { + foreach ( array( '', 'www.' ) as $w3 ) { + $where = " AND `referred` NOT LIKE '{$protocol}://{$w3}{$domain_name}%' "; + } + } + + //Get List referred + $result = $wpdb->get_results( + $wpdb->prepare( + "SELECT SUBSTRING_INDEX(REPLACE( REPLACE( referred, 'http://', '') , 'https://' , '') , '/', 1 ) as `domain`, count(referred) as `number` FROM {$wpdb->prefix}statistics_visitor WHERE `referred` REGEXP \"^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}\" AND referred <> '' AND LENGTH(referred) >=12 AND `last_counter` BETWEEN %s AND %s {$where} GROUP BY domain ORDER BY `number` DESC", + $rangestartdate, + $rangeenddate + ) + ); + + //Number Total Row + $total = count( $result ); +} + +//Load country Code +$ISOCountryCode = $WP_Statistics->get_country_codes(); + +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Top Referring Sites', 'wp-statistics' ) ); ?> + <div><?php wp_statistics_date_range_selector( WP_Statistics::$page['referrers'], $daysToDisplay, null, null, $referr_field ); ?></div> + <br class="clear"/> + + <ul class="subsubsub"> + <?php if ( $referr ) { ?> + <li class="all"><a <?php if ( ! $referr ) { + echo 'class="current"'; + } ?>href="?page=<?php echo WP_Statistics::$page['referrers'] . $date_args; ?>"><?php _e( + 'All', + 'wp-statistics' + ); ?></a> + </li>| + <li> + <a class="current" href="?page=<?php echo WP_Statistics::$page['referrers']; ?>&referr=<?php echo $WP_Statistics->html_sanitize_referrer( $referr ) . $date_args; ?>"> <?php echo htmlentities( $title, ENT_QUOTES ); ?> + <span class="count">(<?php echo number_format_i18n( $total ); ?>)</span></a></li> + <?php } else { ?> + <li class="all"><a <?php if ( ! $referr ) { + echo 'class="current"'; + } ?>href="?page=<?php echo WP_Statistics::$page['referrers'] . $date_args; ?>"><?php _e( + 'All', + 'wp-statistics' + ); ?> + <span class="count">(<?php echo number_format_i18n( $total ); ?>)</span></a></li> + <?php } ?> + </ul> + <div class="postbox-container" id="last-log"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php if ( $referr ) { + $paneltitle = sprintf( + __( 'Referring site: %s', 'wp-statistics' ), + $WP_Statistics->html_sanitize_referrer( $referr ) + ); + } else { + $paneltitle = __( 'Top Referring Sites', 'wp-statistics' ); + }; ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( __( 'Toggle panel: %s', 'wp-statistics' ), $paneltitle ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></h2> + + <div class="inside"> + <?php + echo "<div class='log-latest'>"; + + if ( $total > 0 ) { + // Initiate pagination object with appropriate arguments + $items_per_page = 10; + $page = isset( $_GET['pagination-page'] ) ? abs( (int) $_GET['pagination-page'] ) : 1; + $offset = ( $page * $items_per_page ) - $items_per_page; + $start = $offset; + $end = $offset + $items_per_page; + + if ( $referr ) { + + //Show Table + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"top-referring\"><tr>"; + echo "<td>" . __( 'Link', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'IP', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Browser', 'wp-statistics' ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . __( 'Country', 'wp-statistics' ) . "</td>"; + } + echo "<td>" . __( 'Date', 'wp-statistics' ) . "</td>"; + echo "<td></td>"; + echo "</tr>"; + + $i = 1; + foreach ( $result as $items ) { + if ( $i > $start and $i <= $end ) { + + //Sanitize IP + if ( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __( '#hash#', 'wp-statistics' ); + $map_string = ""; + } else { + $ip_string = "{$items->ip}"; + $map_string = "<a class='wps-text-muted' href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'ip' => $items->ip ) ) . "'>" . wp_statistics_icons( 'dashicons-visibility', 'visibility' ) . "</a><a class='show-map wps-text-muted' href='http://www.geoiptool.com/en/?IP={$items->ip}' target='_blank' title='" . __( 'Map', 'wp-statistics' ) . "'>" . wp_statistics_icons( 'dashicons-location-alt', 'map' ) . "</a>"; + } + + echo "<tr>"; + + //show Referrer Link + echo "<td style=\"text-align: left\">"; + echo '<a href="' . $items->referred . '" target="_blank" title="' . $items->referred . '">' . preg_replace( "(^https?://)", "", trim( $items->referred ) ) . '</a>'; + echo "</td>"; + + //Show IP + echo "<td style=\"text-align: left\">"; + echo $ip_string; + echo "</td>"; + + //Show Browser + echo "<td style=\"text-align: left\">"; + if ( array_search( strtolower( $items->agent ), wp_statistics_get_browser_list( 'key' ) ) !== false ) { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/' ) . $items->agent . ".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons( 'dashicons-editor-help', 'unknown' ); + } + echo "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'agent' => $items->agent ) ) . "'>{$agent}</a>"; + echo "</td>"; + + //Show Country + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td style=\"text-align: left\">"; + echo "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $items->location . '.png' ) . "' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + echo "</td>"; + } + + //Show Date + echo "<td style=\"text-align: left\">"; + echo date_i18n( get_option( 'date_format' ), strtotime( $items->last_counter ) ); + echo "</td>"; + + //Show Link View IP + echo "<td style=\"text-align: center\">"; + echo $map_string; + echo "</td>"; + + echo '</tr>'; + + } + $i ++; + } + + echo '</table>'; + } else { + + //Show Table + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"top-referring\"><tr>"; + echo "<td>" . __( 'Rating', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Site Url', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Site Title', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Server IP', 'wp-statistics' ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . __( 'Country', 'wp-statistics' ) . "</td>"; + } + echo "<td>" . __( 'References', 'wp-statistics' ) . "</td>"; + echo "<td></td>"; + echo "</tr>"; + + + //Get Refer Site Detail + $refer_opt = get_option( 'wp_statistics_referrals_detail' ); + $referrer_list = ( empty( $refer_opt ) ? array() : $refer_opt ); + + //Default unknown Column Value + $unknown = '<span aria-hidden="true">—</span><span class="screen-reader-text">' . __( "Unknown", 'wp-statistics' ) . '</span>'; + + $i = 1; + foreach ( $result as $items ) { + if ( $i > $start and $i <= $end ) { + + //Prepare Data + $domain = $items->domain; + $number = wp_statistics_get_number_referer_from_domain( $items->domain, array( $rangestartdate, $rangeenddate ) ); + + //Get Site Link + $referrer_html = $WP_Statistics->html_sanitize_referrer( $domain ); + + //Get Site information if Not Exist + if ( ! array_key_exists( $domain, $referrer_list ) ) { + $get_site_inf = wp_statistics_get_domain_server( $domain ); + $get_site_title = wp_statistics_get_site_title( $domain ); + $referrer_list[ $domain ] = array( + 'ip' => $get_site_inf['ip'], + 'country' => $get_site_inf['country'], + 'title' => ( $get_site_title === false ? '' : $get_site_title ), + ); + } + + echo "<tr>"; + echo "<td>" . number_format_i18n( $i ) . "</td>"; + echo "<td>" . wp_statistics_show_site_icon( $domain ) . " " . $WP_Statistics->get_referrer_link( $domain, $referrer_list[ $domain ]['title'] ) . "</td>"; + echo "<td>" . ( trim( $referrer_list[ $domain ]['title'] ) == "" ? $unknown : $referrer_list[ $domain ]['title'] ) . "</td>"; + echo "<td>" . ( trim( $referrer_list[ $domain ]['ip'] ) == "" ? $unknown : $referrer_list[ $domain ]['ip'] ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . ( trim( $referrer_list[ $domain ]['country'] ) == "" ? $unknown : "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $referrer_list[ $domain ]['country'] . '.png' ) . "' title='{$ISOCountryCode[$referrer_list[ $domain ]['country']]}' class='log-tools'/>" ) . "</td>"; + } + echo "<td><a class='wps-text-success' href='?page=" . WP_Statistics::$page['referrers'] . "&referr=" . $referrer_html . $date_args . "'>" . number_format_i18n( $number ) . "</a></td>"; + echo "</tr>"; + } + $i ++; + } + + echo "</table>"; + + //Save Referrer List Update + update_option( 'wp_statistics_referrals_detail', $referrer_list, 'no' ); + } + } + + echo '</div>'; + ?> + </div> + </div> + <?php + if ( $total > 0 ) { + wp_statistics_paginate_links( array( + 'item_per_page' => $items_per_page, + 'total' => $total, + 'current' => $page, + ) ); + } + ?> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/top-visitors.php b/wp-content/plugins/wp-statistics/includes/log/top-visitors.php new file mode 100644 index 0000000..3791511 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/top-visitors.php @@ -0,0 +1,75 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + postboxes.add_postbox_toggles(pagenow); + }); +</script> +<?php +$ISOCountryCode = $WP_Statistics->get_country_codes(); +include( WP_Statistics::$reg['plugin-dir'] . 'includes/log/widgets/top.visitors.php' ); +?> +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Top 100 Visitors Today', 'wp-statistics' ) ); ?> + <?php + wp_enqueue_script( 'jquery-ui-datepicker' ); + wp_register_style( 'jquery-ui-smoothness-css', WP_Statistics::$reg['plugin-url'] . 'assets/css/jquery-ui-smoothness.min.css' ); + wp_enqueue_style( 'jquery-ui-smoothness-css' ); + + $current = 0; + $statsdate = $WP_Statistics->Current_Date( get_option( "date_format" ), '-' . $current ); + $rang_start = $WP_Statistics->Current_Date( "Y-m-d" ); + if ( isset( $_GET['statsdate'] ) and strtotime( $_GET['statsdate'] ) != false ) { + $statsdate = date( get_option( "date_format" ), strtotime( $_GET['statsdate'] ) ); + $rang_start = date( "Y-m-d", strtotime( $_GET['statsdate'] ) ); + } + + echo '<br><form method="get">' . "\r\n"; + echo ' ' . __( 'Date', 'wp-statistics' ) . ': '; + + echo '<input type="hidden" name="page" value="' . WP_Statistics::$page['top-visitors'] . '">' . "\r\n"; + echo '<input type="text" size="18" name="statsdate" id="statsdate" value="' . htmlentities( $statsdate, ENT_QUOTES ) . '" autocomplete="off" placeholder="' . __( wp_statistics_dateformat_php_to_jqueryui( get_option( "date_format" ) ), 'wp-statistics' ) . '"> <input type="submit" value="' . __( 'Go', 'wp-statistics' ) . '" class="button-primary">' . "\r\n"; + echo '<input type="hidden" name="statsdate" id="stats-date" value="' . $rang_start . '">'; + echo '</form>' . "\r\n"; + + echo '<script src="' . WP_Statistics::$reg['plugin-url'] . 'assets/js/moment.min.js?ver=2.24.0"></script>'; + echo '<script> + jQuery(function() { + jQuery( "#statsdate" ).datepicker({dateFormat: \'' . wp_statistics_dateformat_php_to_jqueryui( get_option( "date_format" ) ) . '\', + onSelect: function(selectedDate) { + if (selectedDate.length > 0) { + jQuery("#stats-date").val(moment(selectedDate, \'' . wp_statistics_convert_php_to_moment_js( get_option( "date_format" ) ) . '\').format(\'YYYY-MM-DD\')); + } + } + }); + }); + </script>' . "\r\n"; + + ?> + <div class="postbox-container" id="last-log" style="width: 100%;"> + <div class="metabox-holder"> + <div class="meta-box-sortables"> + <div class="postbox"> + <?php $paneltitle = __( 'Top Visitors', 'wp-statistics' ); ?> + <button class="handlediv" type="button" aria-expanded="true"> + <span class="screen-reader-text"><?php printf( + __( 'Toggle panel: %s', 'wp-statistics' ), + $paneltitle + ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + <h2 class="hndle"><span><?php echo $paneltitle; ?></h2> + + <div class="inside"> + + <?php wp_statistics_generate_top_visitors_postbox_content( + $ISOCountryCode, + $statsdate, + 100, + false + ); ?> + + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/about.php b/wp-content/plugins/wp-statistics/includes/log/widgets/about.php new file mode 100644 index 0000000..4e2ad90 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/about.php @@ -0,0 +1,30 @@ +<?php +function wp_statistics_generate_about_postbox_content() { + global $WP_Statistics; + ?> + <div style="text-align: center;"> + <a href="https://wp-statistics.com" target="_blank"><img src="<?php echo plugins_url( 'wp-statistics/assets/images/logo-250.png' ); ?>"></a> + </div> + + <div id="about-links" style="text-align: center;"> + <p> + <a href="https://wp-statistics.com" target="_blank"><?php _e( 'Website', 'wp-statistics' ); ?></a></p> | <p> + <a href="https://wordpress.org/support/plugin/wp-statistics/reviews/?rate=5#new-post" target="_blank"><?php _e( 'Rate & Review', 'wp-statistics' ); ?></a> + </p> + <?php + if ( current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ) ) ) { + ?> + | <p> + <a href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'settings', array( 'tab' => 'about' ) ); ?>"><?php _e( 'More Info', 'wp-statistics' ); ?></a> + </p>| <p> + <a href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'wps_welcome' ); ?>"><?php _e( 'What’s New', 'wp-statistics' ); ?>?</a></p> + <?php + } + ?> + <div class="wps-postbox-veronalabs"> + <a href="https://veronalabs.com" target="_blank" title="<?php _e( 'Power by VeronaLabs', 'wp-statistics' ); ?>"><img src="https://veronalabs.com/wp-content/themes/veronalabs.com/assets/images/logo.svg"/></a> + </div> + </div> + <?php +} + diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/browsers.php b/wp-content/plugins/wp-statistics/includes/log/widgets/browsers.php new file mode 100644 index 0000000..d543485 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/browsers.php @@ -0,0 +1,86 @@ +<?php +function wp_statistics_generate_browsers_postbox_content() { + global $wpdb, $WP_Statistics; + $id = 'browser-stats-' . rand( 111, 999 ); + $Browsers = wp_statistics_ua_list(); + $BrowserVisits = array(); + $total = 0; + $count = 0; + $topten = 0; + $topten_browser_name = array(); + $topten_browser_value = array(); + + foreach ( $Browsers as $Browser ) { + //Get List Of count Visitor By Agent + $BrowserVisits[ $Browser ] = wp_statistics_useragent( $Browser ); + //Sum This agent + $total += $BrowserVisits[ $Browser ]; + } + + //Add Unknown Agent to total + $total += $other_agent_count = $wpdb->get_var( 'SELECT COUNT(*) FROM `' . $wpdb->prefix . 'statistics_visitor` WHERE `agent` NOT IN (\'' . implode( "','", $Browsers ) . '\')' ); + + //Sort Browser List By Visitor ASC + arsort( $BrowserVisits ); + + foreach ( $BrowserVisits as $key => $value ) { + $topten += $value; + $count ++; + if ( $count > 9 ) { + break; + } + + //Get Browser name + $browser_name = wp_statistics_get_browser_list( strtolower( $key ) ); + + $topten_browser_name[] = "'" . $browser_name . "'"; + $topten_browser_value[] = $value; + $topten_browser_color[] = wp_statistics_generate_rgba_color( $count, '0.4' ); + } + + if ( $topten_browser_name and $topten_browser_value and $other_agent_count > 0 ) { + $topten_browser_name[] = "'" . __( 'Other', 'wp-statistics' ) . "'"; + $topten_browser_value[] = ( $total - $topten ); + $topten_browser_color[] = wp_statistics_generate_rgba_color( 10, '0.4' ); + } + ?> + <canvas id="<?php echo $id; ?>" height="220"></canvas> + <script> + var ctx = document.getElementById("<?php echo $id; ?>").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'pie', + data: { + labels: [<?php echo implode( ', ', $topten_browser_name ); ?>], + datasets: [{ + label: '<?php _e( 'Browsers', 'wp-statistics' ); ?>', + data: [<?php echo implode( ', ', $topten_browser_value ); ?>], + backgroundColor: [<?php echo implode( ', ', $topten_browser_color ); ?>], + }] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + animation: { + duration: 0, + }, + tooltips: { + callbacks: { + label: function (tooltipItem, data) { + var dataset = data.datasets[tooltipItem.datasetIndex]; + var total = dataset.data.reduce(function (previousValue, currentValue, currentIndex, array) { + return previousValue + currentValue; + }); + var currentValue = dataset.data[tooltipItem.index]; + var precentage = Math.floor(((currentValue / total) * 100) + 0.5); + return precentage + "% - " + data.labels[tooltipItem.index]; + } + } + } + } + }); + </script> + <?php +} diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/countries.php b/wp-content/plugins/wp-statistics/includes/log/widgets/countries.php new file mode 100644 index 0000000..6b33a5f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/countries.php @@ -0,0 +1,29 @@ +<?php +function wp_statistics_generate_countries_postbox_content() { + global $wpdb, $WP_Statistics; + $ISOCountryCode = $WP_Statistics->get_country_codes(); + ?> + <table width="100%" class="widefat table-stats" id="last-referrer"> + <tr> + <td width="10%" style='text-align: left'><?php _e( 'Rank', 'wp-statistics' ); ?></td> + <td width="10%" style='text-align: left'><?php _e( 'Flag', 'wp-statistics' ); ?></td> + <td width="40%" style='text-align: left'><?php _e( 'Country', 'wp-statistics' ); ?></td> + <td width="40%" style='text-align: left'><?php _e( 'Visitor Count', 'wp-statistics' ); ?></td> + </tr> + <?php + $result = $wpdb->get_results( "SELECT `location`, COUNT(`location`) AS `count` FROM `{$wpdb->prefix}statistics_visitor` GROUP BY `location` ORDER BY `count` DESC LIMIT 10" ); + $i = 0; + foreach ( $result as $item ) { + $i ++; + $item->location = strtoupper( $item->location ); + echo "<tr>"; + echo "<td style='text-align: left;'>$i</td>"; + echo "<td style='text-align: left;'><img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $item->location . '.png' ) . "' title='{$ISOCountryCode[$item->location]}'/></td>"; + echo "<td style='text-align: left;'>{$ISOCountryCode[$item->location]}</td>"; + echo "<td style='text-align: left;'><a href='" . WP_Statistics_Admin_Pages::admin_url( 'countries', array( 'country' => $item->location ) ) . "'>" . number_format_i18n( $item->count ) . "</a></td>"; + echo "</tr>"; + } + ?> + </table> + <?php +} diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/hits.php b/wp-content/plugins/wp-statistics/includes/log/widgets/hits.php new file mode 100644 index 0000000..e751fb2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/hits.php @@ -0,0 +1,78 @@ +<?php +function wp_statistics_generate_hits_postbox_content( $size = '300', $days = 20 ) { + global $wpdb, $WP_Statistics; + $id = 'visits-stats-' . rand( 111, 999 ); + $visitors = array(); + $visits = array(); + + for ( $i = $days; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Current_Date( 'M j', '-' . $i ) . "'"; + } + + for ( $i = $days; $i >= 0; $i -- ) { + $visitors[] = wp_statistics_visitor( '-' . $i, true ); + } + + for ( $i = $days; $i >= 0; $i -- ) { + $visits[] = wp_statistics_visit( '-' . $i, true ); + } + ?> + <canvas id="<?php echo $id; ?>" height="<?php echo $size; ?>"></canvas> + <script> + var ctx = document.getElementById("<?php echo $id; ?>").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + <?php if ( $WP_Statistics->get_option( 'visitors' ) ) { ?> + { + label: '<?php _e( 'Visitors', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $visitors ); ?>], + backgroundColor: 'rgba(255, 99, 132, 0.2)', + borderColor: 'rgba(255, 99, 132, 1)', + borderWidth: 1, + fill: true, + }, + <?php } ?> + <?php if ( $WP_Statistics->get_option( 'visits' ) ) { ?> + { + label: '<?php _e( 'Visits', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $visits ); ?>], + backgroundColor: 'rgba(54, 162, 235, 0.2)', + borderColor: 'rgba(54, 162, 235, 1)', + borderWidth: 1, + fill: true, + }, + <?php } ?> + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + animation: { + duration: 0, + }, + title: { + display: true, + text: '<?php echo sprintf( __( 'Hits in the last %s days', 'wp-statistics' ), $days ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + <?php +} diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/jqv.map.php b/wp-content/plugins/wp-statistics/includes/log/widgets/jqv.map.php new file mode 100644 index 0000000..48a2956 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/jqv.map.php @@ -0,0 +1,124 @@ +<?php +function wp_statistics_generate_map_postbox_content( $ISOCountryCode ) { + + global $wpdb, $WP_Statistics; + + if ( $WP_Statistics->get_option( 'geoip' ) && ! $WP_Statistics->get_option( 'disable_map' ) ) { ?> + <div id="map_canvas"></div> + + <?php $result = $wpdb->get_row( + "SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE last_counter = '{$WP_Statistics->Current_Date('Y-m-d')}'" + ); ?> + <script type="text/javascript"> + var country_pin = Array(); + var country_color = Array(); + + jQuery(document).ready(function () { + + <?php + $result = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE last_counter = '{$WP_Statistics->Current_Date('Y-m-d')}'" ); + $final_result = array(); + $final_result['000'] = array(); + + //Load City Geoip + $geoip_reader = false; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'city' ); + } + + if ( $result ) { + foreach ( $result as $new_r ) { + $new_r->location = strtolower( $new_r->location ); + + $final_result[ $new_r->location ][] = array + ( + 'location' => $new_r->location, + 'agent' => $new_r->agent, + 'ip' => $new_r->ip, + ); + } + } + + $final_total = count( $result ) - count( $final_result['000'] ); + + unset( $final_result['000'] ); + + $startColor = array( 200, 238, 255 ); + $endColor = array( 0, 100, 145 ); + + foreach($final_result as $items) { + + foreach ( $items as $markets ) { + + if ( $markets['location'] == '000' ) { + continue; + } + + $flag = "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . strtoupper( $markets['location'] ) . '.png' ) . "' title='{$ISOCountryCode[strtoupper($markets['location'])]}' class='log-tools'/> {$ISOCountryCode[strtoupper($markets['location'])]}"; + + if ( array_search( strtolower( $markets['agent'] ), wp_statistics_get_browser_list( 'key' ) ) !== false ) { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/' ) . $markets['agent'] . ".png' class='log-tools' title='{$markets['agent']}'/>"; + } else { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/unknown.png' ) . "' class='log-tools' title='{$markets['agent']}'/>"; + } + + if ( substr( $markets['ip'], 0, 6 ) == '#hash#' ) { + $markets['ip'] = __( '#hash#', 'wp-statistics' ); + } + + $city = ''; + if ( $geoip_reader != false ) { + try { + $reader = $geoip_reader->city( $markets['ip'] ); + $city = $reader->city->name; + } catch ( Exception $e ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + } + if ( $city != "" ) { + $city = ' - ' . $city; + } + + $get_ipp[ $markets['location'] ][] = "<p>{$agent} {$markets['ip']} {$city}</p>"; + } + + $market_total = count( $get_ipp[ $markets['location'] ] ); + $last_five = ""; + + // Only show the last five visitors, more just makes the map a mess. + for ( $i = $market_total; $i > $market_total - 6; $i -- ) { + if ( array_key_exists( $i, $get_ipp[ $markets['location'] ] ) ) { + $last_five .= $get_ipp[ $markets['location'] ][ $i ]; + } + } + + $summary = ' [' . $market_total . ']'; + + $color = sprintf( "#%02X%02X%02X", round( $startColor[0] + ( $endColor[0] - $startColor[0] ) * $market_total / $final_total ), round( $startColor[1] + ( $endColor[1] - $startColor[1] ) * $market_total / $final_total ), round( $startColor[2] + ( $endColor[2] - $startColor[2] ) * $market_total / $final_total ) ); + ?> + country_pin['<?php echo $markets['location'];?>'] = "<div class='map-html-marker'><?php echo $flag . $summary . '<hr />' . $last_five; ?></div>"; + country_color['<?php echo $markets['location'];?>'] = "<?php echo $color;?>"; + <?php + } + ?> + var data_total = <?php echo $final_total;?>; + + jQuery('#map_canvas').vectorMap({ + map: 'world_en', + colors: country_color, + onLabelShow: function (element, label, code) { + if (country_pin[code] !== undefined) { + label.html(country_pin[code]); + } + else { + label.html(label.html() + ' [0]<hr />'); + } + }, + }); + + + }); + </script> + <?php + } +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/page.php b/wp-content/plugins/wp-statistics/includes/log/widgets/page.php new file mode 100644 index 0000000..b0f1074 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/page.php @@ -0,0 +1,104 @@ +<?php +/** + * @param $pageuri + * @param $pageid + * @param int $days + * @param null $chart_title + * @param string $rangestart + * @param string $rangeend + */ +function wp_statistics_generate_page_postbox_content( + $pageuri, + $pageid, + $days = 20, + $chart_title = null, + $rangestart = '', + $rangeend = '' +) { + GLOBAL $WP_Statistics; + + if ( ! $WP_Statistics->get_option( 'pages' ) ) { + return; + } + + if ( $chart_title == null ) { + $chart_title = __( 'Page Trending Stats', 'wp-statistics' ); + } + + if ( $pageuri && ! $pageid ) { + $pageid = wp_statistics_uri_to_id( $pageuri ); + } + + $post = get_post( $pageid ); + if ( is_object( $post ) ) { + $title = esc_html( $post->post_title ); + } else { + $title = ""; + } + + $urlfields = "&page-id={$pageid}"; + if ( $pageuri ) { + $urlfields .= "&page-uri={$pageuri}"; + } + + list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( + $days, + $rangestart, + $rangeend + ); + $daysInThePast = round( ( time() - $rangeend_utime ) / 86400, 0 ); + + for ( $i = $days; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Current_Date( 'M j', '-' . $i ) . "'"; + } + + for ( $i = $daysToDisplay; $i >= 0; $i -- ) { + $stats[] = wp_statistics_pages( '-' . ( $i + $daysInThePast ), $pageuri, $pageid ); + } + ?> + <canvas id="visits-stats" height="80"></canvas> + <script> + var ctx = document.getElementById("visits-stats").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + <?php if ( $WP_Statistics->get_option( 'visitors' ) ) { ?> + { + label: '<?php echo $title; ?>', + data: [<?php echo implode( ',', $stats ); ?>], + backgroundColor: 'rgba(255, 99, 132, 0.2)', + borderColor: 'rgba(255, 99, 132, 1)', + borderWidth: 1, + fill: true, + }, + <?php } ?> + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + title: { + display: true, + text: '<?php _e( 'Number of Hits', 'wp-statistics' ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + <?php +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/pages.php b/wp-content/plugins/wp-statistics/includes/log/widgets/pages.php new file mode 100644 index 0000000..b96426e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/pages.php @@ -0,0 +1,49 @@ +<?php +function wp_statistics_generate_pages_postbox_content() { + global $wpdb; + + $result = $wpdb->get_results( "SELECT `pages`.`uri`,`pages`.`id`,`pages`.`type`, SUM(`pages`.`count`) + IFNULL(`historical`.`value`, 0) AS `count_sum` FROM `{$wpdb->prefix}statistics_pages` `pages` LEFT JOIN `{$wpdb->prefix}statistics_historical` `historical` ON `pages`.`uri`=`historical`.`uri` AND `historical`.`category`='uri' GROUP BY `uri` ORDER BY `count_sum` DESC LIMIT 10" ); + $site_url = site_url(); + $counter = 0; + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"last-referrer\"><tr>"; + echo "<td width='10%'>" . __( 'ID', 'wp-statistics' ) . "</td>"; + echo "<td width='40%'>" . __( 'Title', 'wp-statistics' ) . "</td>"; + echo "<td width='40%'>" . __( 'Link', 'wp-statistics' ) . "</td>"; + echo "<td width='10%'>" . __( 'Visits', 'wp-statistics' ) . "</td>"; + echo "</tr>"; + + foreach ( $result as $item ) { + $counter += 1; + + // Lookup the post title. + $page_info = wp_statistics_get_page_info( $item->id, $item->type ); + $title = mb_substr( $page_info['title'], 0, 200, "utf-8" ); + $page_link = $page_info['link']; + + /** + * Check Get title by url + * @since v12.5.7 + */ + if ( $page_link == '' ) { + $page_link = htmlentities( $site_url . $item->uri, ENT_QUOTES ); + $id = wp_statistics_uri_to_id( $item->uri ); + $post = get_post( $id ); + if ( is_object( $post ) ) { + $title = esc_html( $post->post_title ); + } else { + if ( $item->uri == '/' ) { + $title = get_bloginfo(); + } + } + } + + echo "<tr>"; + echo "<td style=\"text-align: left\">" . $counter . "</td>"; + echo "<td style=\"text-align: left\">" . $title . "</td>"; + echo '<td style="text-align: left"><a href="' . $page_link . '" target="_blank">' . htmlentities( urldecode( $item->uri ), ENT_QUOTES ) . '</a></td>'; + echo '<td style="text-align: left"><a href="' . WP_Statistics_Admin_Pages::admin_url( 'pages', array( 'page-uri' => htmlentities( $item->uri, ENT_QUOTES ) ) ) . '">' . number_format_i18n( $item->count_sum ) . '</a></td>'; + echo '</tr>'; + + } + echo '</table>'; +} diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/quickstats.php b/wp-content/plugins/wp-statistics/includes/log/widgets/quickstats.php new file mode 100644 index 0000000..7aa64a7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/quickstats.php @@ -0,0 +1,235 @@ +<?php +function wp_statistics_generate_quickstats_postbox_content( $search_engines, $search = false, $time = false ) { + + global $wpdb, $WP_Statistics; + + $show_visitors = $WP_Statistics->get_option( 'visitor' ); + ?> + <table width="100%" class="widefat table-stats" id="summary-stats"> + <tbody> + <?php if ( $WP_Statistics->get_option( 'useronline' ) ) { ?> + <tr> + <th><?php _e( 'Online Users:', 'wp-statistics' ); ?></th> + <th colspan="2" id="th-colspan"> + <span><a href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'online' ); ?>"><?php echo wp_statistics_useronline(); ?></a></span> + </th> + </tr> + <?php } + + if ( $WP_Statistics->get_option( 'visitors' ) || $WP_Statistics->get_option( 'visits' ) ) { + ?> + <tr> + <th width="60%"></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + _e( 'Visitors', 'wp-statistics' ); + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + _e( 'Visits', 'wp-statistics' ); + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Today:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 1 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'today', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 1 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'today' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Yesterday:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 1 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'yesterday', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 1 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'yesterday' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Last 7 Days (Week):', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 7 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'week', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 7 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'week' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Last 30 Days (Month):', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 30 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'month', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 30 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'month' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Last 365 Days (Year):', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 365 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'year', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 365 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'year' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 365 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'total', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 365 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'total' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <?php + } + + if ( $search == true && $WP_Statistics->get_option( 'visitors' ) ) { + + if ( $WP_Statistics->get_option( 'visitors' ) || + $WP_Statistics->get_option( 'visits' ) || + $WP_Statistics->get_option( 'useronline' ) + ) { + ?> + <tr> + <th colspan="3"><br> + <hr> + </th> + </tr> + <?php } ?> + <tr> + <th colspan="3" style="text-align: center;"><?php _e( + 'Search Engine Referrals', + 'wp-statistics' + ); ?></th> + </tr> + + <tr> + <th width="60%"></th> + <th class="th-center"><?php _e( 'Today', 'wp-statistics' ); ?></th> + <th class="th-center"><?php _e( 'Yesterday', 'wp-statistics' ); ?></th> + </tr> + + <?php + $se_today_total = 0; + $se_yesterday_total = 0; + foreach ( $search_engines as $se ) { + ?> + <tr> + <th> + <img src='<?php echo plugins_url( 'wp-statistics/assets/images/' . $se['image'] ); ?>'> <?php _e( + $se['name'], + 'wp-statistics' + ); ?> + : + </th> + <th class="th-center"><span><?php $se_temp = wp_statistics_searchengine( $se['tag'], 'today' ); + $se_today_total += $se_temp; + echo number_format_i18n( $se_temp ); ?></span></th> + <th class="th-center"><span><?php $se_temp = wp_statistics_searchengine( $se['tag'], 'yesterday' ); + $se_yesterday_total += $se_temp; + echo number_format_i18n( $se_temp ); ?></span></th> + </tr> + + <?php + } + ?> + <tr> + <th><?php _e( 'Daily Total:', 'wp-statistics' ); ?></th> + <td id="th-colspan" class="th-center"><span><?php echo number_format_i18n( $se_today_total ); ?></span> + </td> + <td id="th-colspan" class="th-center"> + <span><?php echo number_format_i18n( $se_yesterday_total ); ?></span></td> + </tr> + + <tr> + <th><?php _e( 'Total:', 'wp-statistics' ); ?></th> + <th colspan="2" id="th-colspan"> + <span><?php echo number_format_i18n( wp_statistics_searchengine( 'all' ) ); ?></span></th> + </tr> + <?php + } + + if ( $time == true ) { + ?> + <tr> + <th colspan="3"><br> + <hr> + </th> + </tr> + + <tr> + <th colspan="3" style="text-align: center;"><?php _e( 'Current Time and Date', 'wp-statistics' ); ?> + <span id="time_zone"><a href="<?php echo admin_url( 'options-general.php' ); ?>"><?php _e( + '(Adjustment)', + 'wp-statistics' + ); ?></a></span> + </th> + </tr> + + <tr> + <th colspan="3"><?php echo sprintf( + __( 'Date: %s', 'wp-statistics' ), + '<code dir="ltr">' . + $WP_Statistics->Current_Date_i18n( get_option( 'date_format' ) ) . + '</code>' + ); ?></th> + </tr> + + <tr> + <th colspan="3"><?php echo sprintf( + __( 'Time: %s', 'wp-statistics' ), + '<code dir="ltr">' . + $WP_Statistics->Current_Date_i18n( get_option( 'time_format' ) ) . + '</code>' + ); ?></th> + </tr> + <?php } ?> + </tbody> + </table> + + <br> + <hr width="80%"/><br> + <?php + + // Include the hits chart widget, we're going to display the last 10 days only as the WordPress columns are kind of small to do much else. + include( WP_Statistics::$reg['plugin-dir'] . "includes/log/widgets/hits.php" ); + + wp_statistics_generate_hits_postbox_content( "220px", 10 ); +} + diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/recent.php b/wp-content/plugins/wp-statistics/includes/log/widgets/recent.php new file mode 100644 index 0000000..e312f95 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/recent.php @@ -0,0 +1,86 @@ +<?php +function wp_statistics_generate_recent_postbox_content( $ISOCountryCode, $count = 10 ) { + global $wpdb, $WP_Statistics; + + $result = $wpdb->get_results( + "SELECT * FROM `{$wpdb->prefix}statistics_visitor` ORDER BY `{$wpdb->prefix}statistics_visitor`.`ID` DESC LIMIT 0, {$count}" + ); + + echo "<div class=\"wp-statistics-table\">"; + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"last-referrer\"> + <tr>"; + echo "<td>" . __( 'Browser', 'wp-statistics' ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . __( 'Country', 'wp-statistics' ) . "</td>"; + } + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td>" . __( 'City', 'wp-statistics' ) . "</td>"; + } + echo "<td>" . __( 'Date', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'IP', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Referrer', 'wp-statistics' ) . "</td>"; + echo "</tr>"; + + // Load city name + $geoip_reader = false; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'city' ); + } + + foreach ( $result as $items ) { + echo "<tr>"; + echo "<td style=\"text-align: left\">"; + if ( array_search( strtolower( $items->agent ), wp_statistics_get_browser_list( 'key' ) ) !== false ) { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/' ) . $items->agent . ".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons( 'dashicons-editor-help', 'unknown' ); + } + echo "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'agent' => $items->agent ) ) . "'>{$agent}</a>"; + echo "</td>"; + $city = ''; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + if ( $geoip_reader != false ) { + try { + $reader = $geoip_reader->city( $items->ip ); + $city = $reader->city->name; + } catch ( Exception $e ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + + if ( ! $city ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + } + } + + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td style=\"text-align: left\">"; + echo "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $items->location . '.png' ) . "' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + echo "</td>"; + } + + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td style=\"text-align: left\">"; + echo $city; + echo "</td>"; + } + + echo "<td style=\"text-align: left\">"; + echo date_i18n( get_option( 'date_format' ), strtotime( $items->last_counter ) ); + echo "</td>"; + + echo "<td style=\"text-align: left\">"; + if ( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __( '#hash#', 'wp-statistics' ); + } else { + $ip_string = "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'type' => 'last-all-visitor', 'ip' => $items->ip ) ) . "'>{$items->ip}</a>"; + } + echo $ip_string; + echo "</td>"; + echo "<td style=\"text-align: left\">" . $WP_Statistics->get_referrer_link( $items->referred ) . "</td>"; + echo "</tr>"; + } + + echo "</table>"; + echo "</div>"; +} diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/referring.php b/wp-content/plugins/wp-statistics/includes/log/widgets/referring.php new file mode 100644 index 0000000..a9f338e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/referring.php @@ -0,0 +1,73 @@ +<?php +function wp_statistics_generate_referring_postbox_content( $count = 10 ) { + global $wpdb, $WP_Statistics; + + //Get Top Referring + if ( false === ( $get_urls = get_transient( 'wps_top_referring' ) ) ) { + + //Get Wordpress Domain + $where = ''; + $domain_name = rtrim( preg_replace( '/^https?:\/\//', '', get_site_url() ), " / " ); + foreach ( array( "http", "https", "ftp" ) as $protocol ) { + foreach ( array( '', 'www.' ) as $w3 ) { + $where = " AND `referred` NOT LIKE '{$protocol}://{$w3}{$domain_name}%' "; + } + } + $result = $wpdb->get_results( "SELECT SUBSTRING_INDEX(REPLACE( REPLACE( referred, 'http://', '') , 'https://' , '') , '/', 1 ) as `domain`, count(referred) as `number` FROM {$wpdb->prefix}statistics_visitor WHERE `referred` REGEXP \"^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}\" AND referred <> '' AND LENGTH(referred) >=12 {$where} GROUP BY domain ORDER BY `number` DESC LIMIT $count" ); + foreach ( $result as $items ) { + $get_urls[ $items->domain ] = wp_statistics_get_number_referer_from_domain( $items->domain ); + } + + // Put the results in a transient. Expire after 12 hours. + set_transient( 'wps_top_referring', $get_urls, 12 * HOUR_IN_SECONDS ); + } + ?> + <table width="100%" class="widefat table-stats" id="top-referrer"> + <tr> + <td width="50%"><?php _e( 'Address', 'wp-statistics' ); ?></td> + <td width="40%"><?php _e( 'Server IP', 'wp-statistics' ); ?></td> + <td width="10%"><?php _e( 'References', 'wp-statistics' ); ?></td> + </tr> + <?php + + //Load country Code + $ISOCountryCode = $WP_Statistics->get_country_codes(); + + //Get Refer Site Detail + $refer_opt = get_option( 'wp_statistics_referrals_detail' ); + $referrer_list = ( empty( $refer_opt ) ? array() : $refer_opt ); + + if ( ! $get_urls ) { + return; + } + + foreach ( $get_urls as $domain => $number ) { + + //Get Site Link + $referrer_html = $WP_Statistics->html_sanitize_referrer( $domain ); + + //Get Site information if Not Exist + if ( ! array_key_exists( $domain, $referrer_list ) ) { + $get_site_inf = wp_statistics_get_domain_server( $domain ); + $get_site_title = wp_statistics_get_site_title( $domain ); + $referrer_list[ $domain ] = array( + 'ip' => $get_site_inf['ip'], + 'country' => $get_site_inf['country'], + 'title' => ( $get_site_title === false ? '' : $get_site_title ), + ); + } + + echo "<tr>"; + echo "<td>" . wp_statistics_show_site_icon( $domain ) . " " . $WP_Statistics->get_referrer_link( $domain, $referrer_list[ $domain ]['title'], true ) . "</td>"; + echo "<td><span class='wps-cursor-default' " . ( $referrer_list[ $domain ]['country'] != "" ? 'title="' . $ISOCountryCode[ $referrer_list[ $domain ]['country'] ] . '"' : '' ) . ">" . ( $referrer_list[ $domain ]['ip'] != "" ? $referrer_list[ $domain ]['ip'] : '-' ) . "</span></td>"; + echo "<td><a href='" . WP_Statistics_Admin_Pages::admin_url( 'referrers', array( 'referr' => $referrer_html ) ) . "'>" . number_format_i18n( $number ) . "</a></td>"; + echo "</tr>"; + } + + //Save Referrer List Update + update_option( 'wp_statistics_referrals_detail', $referrer_list, 'no' ); + + ?> + </table> + <?php +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/search.php b/wp-content/plugins/wp-statistics/includes/log/widgets/search.php new file mode 100644 index 0000000..f9f279e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/search.php @@ -0,0 +1,96 @@ +<?php +function wp_statistics_generate_search_postbox_content( $search_engines, $size = "300", $days = 20 ) { + global $wpdb, $WP_Statistics; + $id = 'search-stats-' . rand( 111, 999 ); + $total_stats = $WP_Statistics->get_option( 'chart_totals' ); + $date = array(); + $stats = array(); + $total_daily = array(); + + for ( $i = $days; $i >= 0; $i -- ) { + $date[] = "'" . $WP_Statistics->Current_Date( 'M j', '-' . $i ) . "'"; + } + + foreach ( $search_engines as $se ) { + for ( $i = $days; $i >= 0; $i -- ) { + if ( ! array_key_exists( $i, $total_daily ) ) { + $total_daily[ $i ] = 0; + } + + $stat = wp_statistics_searchengine( $se['tag'], '-' . $i ); + $stats[ $se['name'] ][] = $stat; + $total_daily[ $i ] += $stat; + } + } + ?> + <canvas id="<?php echo $id; ?>" height="<?php echo $size; ?>"></canvas> + <script> + var colors = []; + colors['baidu'] = ['rgba(35, 25, 220, 0.2)', 'rgba(35, 25, 220, 1)']; + colors['bing'] = ['rgba(12, 132, 132, 0.2)', 'rgba(12, 132, 132, 1)']; + colors['duckduckgo'] = ['rgba(222, 88, 51, 0.2)', 'rgba(222, 88, 51, 1)']; + colors['google'] = ['rgba(23, 107, 239, 0.2)', 'rgba(23, 107, 239, 1)']; + colors['yahoo'] = ['rgba(64, 0, 144, 0.2)', 'rgba(64, 0, 144, 1)']; + colors['yandex'] = ['rgba(255, 219, 77, 0.2)', 'rgba(255, 219, 77, 1)']; + colors['ask'] = ['rgba(205, 0, 0, 0.2)', 'rgba(205, 0, 0, 1)']; + colors['clearch'] = ['rgba(13, 0, 76, 0.2)', 'rgba(13, 0, 76, 1)']; + colors['qwant'] = ['rgba(53, 60, 82, 0.2)', 'rgba(53, 60, 82, 1)']; + + var ctx = document.getElementById("<?php echo $id; ?>").getContext('2d'); + <?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> + var ChartJs = new Chart(ctx, { + type: 'line', + data: { + labels: [<?php echo implode( ', ', $date ); ?>], + datasets: [ + <?php foreach ( $search_engines as $se ): ?> + { + label: '<?php echo $se['name']; ?>', + data: [<?php echo implode( ',', $stats[ $se['name'] ] ); ?>], + backgroundColor: colors['<?php echo $se['tag']; ?>'][0], + borderColor: colors['<?php echo $se['tag']; ?>'][1], + borderWidth: 1, + fill: true, + }, + <?php endforeach; ?> + <?php if ( $total_stats == 1 ) : ?> + { + label: '<?php _e( 'Total', 'wp-statistics' ); ?>', + data: [<?php echo implode( ',', $total_daily ); ?>], + backgroundColor: 'rgba(180, 180, 180, 0.2)', + borderColor: 'rgba(180, 180, 180, 1)', + borderWidth: 1, + fill: false, + }, + <?php endif;?> + ] + }, + options: { + responsive: true, + legend: { + position: 'bottom', + }, + animation: { + duration: 0, + }, + title: { + display: true, + text: '<?php echo sprintf( __( 'Search engine referrals in the last %s days', 'wp-statistics' ), $days ); ?>' + }, + tooltips: { + mode: 'index', + intersect: false, + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + } + }] + } + } + }); + </script> + <?php +} + diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/summary.php b/wp-content/plugins/wp-statistics/includes/log/widgets/summary.php new file mode 100644 index 0000000..2965dcc --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/summary.php @@ -0,0 +1,222 @@ +<?php +function wp_statistics_generate_summary_postbox_content( $search_engines, $search = true, $time = true ) { + global $wpdb, $WP_Statistics; + $show_visitors = $WP_Statistics->get_option( 'visitor' ); + ?> + <table width="100%" class="widefat table-stats" id="summary-stats"> + <tbody> + <?php if ( $WP_Statistics->get_option( 'useronline' ) ) { ?> + <tr> + <th><?php _e( 'Online Users:', 'wp-statistics' ); ?></th> + <th colspan="2" id="th-colspan"> + <span><a href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'online' ); ?>"><?php echo wp_statistics_useronline(); ?></a></span> + </th> + </tr> + <?php } + + if ( $WP_Statistics->get_option( 'visitors' ) || $WP_Statistics->get_option( 'visits' ) ) { + ?> + <tr> + <th width="60%"></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + _e( 'Visitors', 'wp-statistics' ); + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + _e( 'Visits', 'wp-statistics' ); + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Today:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 1 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'today', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 1 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'today' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Yesterday:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 1 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'yesterday', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 1 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'yesterday' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Last 7 Days:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 7 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'week', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 7 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'week' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Last 30 Days:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 30 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'month', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 30 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'month' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Last 365 Days:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 365 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'year', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 365 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'year' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <tr> + <th><?php _e( 'Total:', 'wp-statistics' ); ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visitors' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'hitdays' => 365 ) ) . '"><span>' . number_format_i18n( wp_statistics_visitor( 'total', null, true ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + <th class="th-center"><?php if ( $WP_Statistics->get_option( 'visits' ) ) { + echo '<a href="' . WP_Statistics_Admin_Pages::admin_url( 'hits', array( 'hitdays' => 365 ) ) . '"><span>' . number_format_i18n( wp_statistics_visit( 'total' ) ) . '</span></a>'; + } else { + echo ''; + } ?></th> + </tr> + + <?php + } + + if ( $search == true && $WP_Statistics->get_option( 'visitors' ) ) { + + if ( $WP_Statistics->get_option( 'visitors' ) || + $WP_Statistics->get_option( 'visits' ) || + $WP_Statistics->get_option( 'useronline' ) + ) { + ?> + <tr> + <th colspan="3"><br> + <hr> + </th> + </tr> + <?php } ?> + <tr> + <th colspan="3" style="text-align: center;"><?php _e( + 'Search Engine Referrals', + 'wp-statistics' + ); ?></th> + </tr> + + <tr> + <th width="60%"></th> + <th class="th-center"><?php _e( 'Today', 'wp-statistics' ); ?></th> + <th class="th-center"><?php _e( 'Yesterday', 'wp-statistics' ); ?></th> + </tr> + + <?php + $se_today_total = 0; + $se_yesterday_total = 0; + foreach ( $search_engines as $se ) { + ?> + <tr> + <th> + <img src='<?php echo plugins_url( 'wp-statistics/assets/images/' . $se['image'] ); ?>'> <?php _e( + $se['name'], + 'wp-statistics' + ); ?> + : + </th> + <th class="th-center"><span><?php $se_temp = wp_statistics_searchengine( $se['tag'], 'today' ); + $se_today_total += $se_temp; + echo number_format_i18n( $se_temp ); ?></span></th> + <th class="th-center"><span><?php $se_temp = wp_statistics_searchengine( $se['tag'], 'yesterday' ); + $se_yesterday_total += $se_temp; + echo number_format_i18n( $se_temp ); ?></span></th> + </tr> + + <?php + } + ?> + <tr> + <th><?php _e( 'Daily Total:', 'wp-statistics' ); ?></th> + <td id="th-colspan" class="th-center"><span><?php echo number_format_i18n( $se_today_total ); ?></span> + </td> + <td id="th-colspan" class="th-center"> + <span><?php echo number_format_i18n( $se_yesterday_total ); ?></span></td> + </tr> + + <tr> + <th><?php _e( 'Total:', 'wp-statistics' ); ?></th> + <th colspan="2" id="th-colspan"> + <span><?php echo number_format_i18n( wp_statistics_searchengine( 'all' ) ); ?></span></th> + </tr> + <?php + } + + if ( $time == true ) { + ?> + <tr> + <th colspan="3"><br> + <hr> + </th> + </tr> + + <tr> + <th colspan="3" style="text-align: center;"><?php _e( 'Current Time and Date', 'wp-statistics' ); ?> + <span id="time_zone"><a href="<?php echo admin_url( 'options-general.php' ); ?>"><?php _e( '(Adjustment)', 'wp-statistics' ); ?></a></span> + </th> + </tr> + + <tr> + <th colspan="3"><?php echo sprintf( + __( 'Date: %s', 'wp-statistics' ), + '<code dir="ltr">' . + $WP_Statistics->Current_Date_i18n( get_option( 'date_format' ) ) . + '</code>' + ); ?></th> + </tr> + + <tr> + <th colspan="3"><?php echo sprintf( + __( 'Time: %s', 'wp-statistics' ), + '<code dir="ltr">' . + $WP_Statistics->Current_Date_i18n( get_option( 'time_format' ) ) . + '</code>' + ); ?></th> + </tr> + <?php } ?> + </tbody> + </table> + <?php +} + diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/top.visitors.php b/wp-content/plugins/wp-statistics/includes/log/widgets/top.visitors.php new file mode 100644 index 0000000..78127fd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/top.visitors.php @@ -0,0 +1,91 @@ +<?php +function wp_statistics_generate_top_visitors_postbox_content( + $ISOCountryCode, + $day = 'today', + $count = 10, + $compact = false +) { + + global $wpdb, $WP_Statistics; + + if ( $day == 'today' ) { + $sql_time = $WP_Statistics->Current_Date( 'Y-m-d' ); + } else { + $sql_time = date( 'Y-m-d', strtotime( $day ) ); + } + + //Load City Geoip + $geoip_reader = false; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'city' ); + } + + ?> + <div class="wp-statistics-table"> + <table width="100%" class="widefat table-stats" id="last-referrer"> + <tr> + <td><?php _e( 'Rank', 'wp-statistics' ); ?></td> + <td><?php _e( 'Hits', 'wp-statistics' ); ?></td> + <td><?php _e( 'Flag', 'wp-statistics' ); ?></td> + <td><?php _e( 'Country', 'wp-statistics' ); ?></td> + <?php if ( $geoip_reader != false ) { + echo '<td>' . __( 'City', 'wp-statistics' ) . '</td>'; + } ?> + <td><?php _e( 'IP', 'wp-statistics' ); ?></td> + <?php if ( $compact == false ) { ?> + <td><?php _e( 'Agent', 'wp-statistics' ); ?></td> + <td><?php _e( 'Platform', 'wp-statistics' ); ?></td> + <td><?php _e( 'Version', 'wp-statistics' ); ?></td> + <?php } ?> + </tr> + + <?php + $result = $wpdb->get_results( + "SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE last_counter = '{$sql_time}' ORDER BY hits DESC" + ); + + $i = 0; + + foreach ( $result as $visitor ) { + $i ++; + + $item = strtoupper( $visitor->location ); + + if ( $geoip_reader != false ) { + try { + $reader = $geoip_reader->city( $visitor->ip ); + $city = $reader->city->name; + } catch ( Exception $e ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + if ( ! $city ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + } + + echo "<tr>"; + echo "<td>$i</td>"; + echo "<td>" . (int) $visitor->hits . "</td>"; + echo "<td><img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $item . '.png' ) . "' title='{$ISOCountryCode[$item]}'/></td>"; + echo "<td>{$ISOCountryCode[$item]}</td>"; + if ( $geoip_reader != false ) { + echo "<td>{$city}</td>"; + } + echo "<td>{$visitor->ip}</td>"; + + if ( $compact == false ) { + echo "<td>{$visitor->agent}</td>"; + echo "<td>{$visitor->platform}</td>"; + echo "<td>{$visitor->version}</td>"; + } + echo "</tr>"; + + if ( $i == $count ) { + break; + } + } + ?> + </table> + </div> + <?php +} diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/users_online.php b/wp-content/plugins/wp-statistics/includes/log/widgets/users_online.php new file mode 100644 index 0000000..0ec93c9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/users_online.php @@ -0,0 +1,41 @@ +<?php +function wp_statistics_generate_users_online_postbox_content( $ISOCountryCode ) { + global $wpdb, $WP_Statistics; + + $result = $wpdb->get_results( "SELECT * FROM `{$wpdb->prefix}statistics_useronline` ORDER BY `ID` DESC LIMIT 10" ); + $i = 0; + if ( count( $result ) > 0 ) { + + ?> + <table width="100%" class="widefat table-stats" id="current_page"> + <tr> + <td width="10%" style='text-align: left'><?php _e( 'Country', 'wp-statistics' ); ?></td> + <td width="10%" style='text-align: left'><?php _e( 'IP', 'wp-statistics' ); ?></td> + <td width="40%" style='text-align: left'><?php _e( 'Page', 'wp-statistics' ); ?></td> + <td width="40%" style='text-align: left'><?php _e( 'Referrer', 'wp-statistics' ); ?></td> + </tr> + <?php + foreach ( $result as $item ) { + $i ++; + + //Get current Location info + $item->location = strtoupper( $item->location ); + + //Get current Page info + $page_info = wp_statistics_get_page_info( $item->page_id, $item->type ); + + echo "<tr>"; + echo "<td style='text-align: left'><img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $item->location . '.png' ) . "' title='{$ISOCountryCode[$item->location]}'/></td>"; + echo "<td style='text-align: left !important'>{$item->ip}</td>"; + echo "<td style='text-align: left !important'>" . ( $page_info['link'] != '' ? '<a href="' . $page_info['link'] . '" target="_blank">' : '' ) . mb_substr( $page_info['title'], 0, 200, "utf-8" ) . ( $page_info['link'] != '' ? '</a>' : '' ) . "</td>"; + echo "<td style='text-align: left !important'>" . $WP_Statistics->get_referrer_link( $item->referred ) . "</td>"; + echo "</tr>"; + } + + echo '</table>'; + + } else { + _e( "no online users yet.", 'wp-statistics' ); + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/log/widgets/words.php b/wp-content/plugins/wp-statistics/includes/log/widgets/words.php new file mode 100644 index 0000000..1f03cf9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/log/widgets/words.php @@ -0,0 +1,119 @@ +<?php +function wp_statistics_generate_words_postbox_content( $ISOCountryCode, $count = 10 ) { + global $wpdb, $WP_Statistics; + + // Retrieve MySQL data for the search words. + $search_query = wp_statistics_searchword_query( 'all' ); + + // Determine if we're using the old or new method of storing search engine info and build the appropriate table name. + $tablename = $wpdb->prefix . 'statistics_'; + + if ( $WP_Statistics->get_option( 'search_converted' ) ) { + $tabletwo = $tablename . 'visitor'; + $tablename .= 'search'; + $result = $wpdb->get_results( + "SELECT * FROM `{$tablename}` INNER JOIN `{$tabletwo}` on {$tablename}.`visitor` = {$tabletwo}.`ID` WHERE {$search_query} ORDER BY `{$tablename}`.`ID` DESC LIMIT 0, {$count}" + ); + } else { + $tablename .= 'visitor'; + $result = $wpdb->get_results( + "SELECT * FROM `{$tablename}` WHERE {$search_query} ORDER BY `{$tablename}`.`ID` DESC LIMIT 0, {$count}" + ); + } + + if ( sizeof( $result ) > 0 ) { + echo "<div class=\"wp-statistics-table\">"; + echo "<table width=\"100%\" class=\"widefat table-stats\" id=\"last-referrer\"> + <tr>"; + echo "<td>" . __( 'Word', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Browser', 'wp-statistics' ) . "</td>"; + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td>" . __( 'Country', 'wp-statistics' ) . "</td>"; + } + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td>" . __( 'City', 'wp-statistics' ) . "</td>"; + } + echo "<td>" . __( 'Date', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'IP', 'wp-statistics' ) . "</td>"; + echo "<td>" . __( 'Referrer', 'wp-statistics' ) . "</td>"; + echo "</tr>"; + + // Load city name + $geoip_reader = false; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + $geoip_reader = $WP_Statistics::geoip_loader( 'city' ); + } + + foreach ( $result as $items ) { + + if ( ! $WP_Statistics->Search_Engine_QueryString( $items->referred ) ) { + continue; + } + + if ( $WP_Statistics->get_option( 'search_converted' ) ) { + $this_search_engine = $WP_Statistics->Search_Engine_Info_By_Engine( $items->engine ); + $words = $items->words; + } else { + $this_search_engine = $WP_Statistics->Search_Engine_Info( $items->referred ); + $words = $WP_Statistics->Search_Engine_QueryString( $items->referred ); + } + + echo "<tr>"; + echo "<td style=\"text-align: left\"><span title='{$words}' class='wps-cursor-default wps-text-wrap'>".$words."</span></td>"; + echo "<td style=\"text-align: left\">"; + if ( array_search( strtolower( $items->agent ), wp_statistics_get_browser_list( 'key' ) ) !== false ) { + $agent = "<img src='" . plugins_url( 'wp-statistics/assets/images/' ) . $items->agent . ".png' class='log-tools' title='{$items->agent}'/>"; + } else { + $agent = wp_statistics_icons( 'dashicons-editor-help', 'unknown' ); + } + echo "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'overview', array( 'type' => 'last-all-visitor', 'agent' => $items->agent ) ) . "'>{$agent}</a>"; + echo "</td>"; + $city = ''; + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + if ( $geoip_reader != false ) { + try { + $reader = $geoip_reader->city( $items->ip ); + $city = $reader->city->name; + } catch ( Exception $e ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + + if ( ! $city ) { + $city = __( 'Unknown', 'wp-statistics' ); + } + } + } + + if ( $WP_Statistics->get_option( 'geoip' ) ) { + echo "<td style=\"text-align: left\">"; + echo "<img src='" . plugins_url( 'wp-statistics/assets/images/flags/' . $items->location . '.png' ) . "' title='{$ISOCountryCode[$items->location]}' class='log-tools'/>"; + echo "</td>"; + } + + if ( $WP_Statistics->get_option( 'geoip_city' ) ) { + echo "<td style=\"text-align: left\">"; + echo $city; + echo "</td>"; + } + + echo "<td style=\"text-align: left\">"; + echo date_i18n( get_option( 'date_format' ), strtotime( $items->last_counter ) ); + echo "</td>"; + + echo "<td style=\"text-align: left\">"; + if ( substr( $items->ip, 0, 6 ) == '#hash#' ) { + $ip_string = __( '#hash#', 'wp-statistics' ); + } else { + $ip_string = "<a href='" . WP_Statistics_Admin_Pages::admin_url( 'visitors', array( 'type' => 'last-all-visitor', 'ip' => $items->ip ) ) . "'>{$items->ip}</a>"; + } + echo $ip_string; + echo "</td>"; + echo "<td style=\"text-align: left\">" . $WP_Statistics->get_referrer_link( $items->referred ) . "</td>";; + echo "</tr>"; + } + + echo "</table>"; + echo "</div>"; + } +} + diff --git a/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-database.php b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-database.php new file mode 100644 index 0000000..f18b872 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-database.php @@ -0,0 +1,123 @@ +<div class="wrap wps-wrap"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Database Setup', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="index-submit"><?php _e( 'Re-run Install:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="install-submit" class="button button-primary" type="button" value="<?php _e( 'Install Now!', 'wp-statistics' ); ?>" name="install-submit" onclick="location.href=document.URL+'&install=1&tab=database'"> + <p class="description"><?php _e( 'If for some reason your installation of WP Statistics is missing the database tables or other core items, this will re-execute the install process.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Database Index', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="index-submit"><?php _e( 'Countries:', 'wp-statistics' ); ?></label> + </th> + + <td> + <?php + GLOBAL $wpdb, $WP_Statistics; + $wp_prefix = $wpdb->prefix; + + $dbupdates = $WP_Statistics->get_option( 'pending_db_updates' ); + + // Check the number of index's on the visitors table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query( + "SHOW INDEX FROM {$wp_prefix}statistics_visitor WHERE Key_name = 'date_ip_agent'" + ); + + // Note, the result will be the number of fields contained in the index, so in our case 5. + if ( $result != 5 ) { + $dbupdates['date_ip_agent'] = true; + ?> + <input id="index-submit" class="button button-primary" type="button" value="<?php _e( 'Update Now!', 'wp-statistics' ); ?>" name="index-submit" onclick="location.href=document.URL+'&index=1&tab=database'"> + <p class="description"><?php echo __( 'Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case.', 'wp-statistics' ) . ' ' . __( 'Newer installs protect against this with a unique index on the table.', 'wp-statistics' ) . ' ' . __( 'To create the index on the older installs duplicate entries must be deleted first.', 'wp-statistics' ) . ' ' . __( 'Clicking "Update Now" will scan the vistitors table, delete duplicate entries and add the index.', 'wp-statistics' ); ?></p> + <p class="description"><?php _e( 'This operation could take a long time on installs with many rows in the visitors table.', 'wp-statistics' ); ?></p> + <?php + } else { + $dbupdates['date_ip_agent'] = false; + ?> + <p class="description"><?php echo __( 'Older installs of WP Statistics allow for duplicate entries in the visitors table in a corner case.', 'wp-statistics' ) . ' ' . __( 'Newer installs protect against this with a unique index on the table.', 'wp-statistics' ); ?></p> + <p class="description"><?php _e( 'Congratulations, your installation is already up to date, nothing to do.', 'wp-statistics' ); ?></p> + <?php + } + ?> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="index-submit"><?php _e( 'Visits Table:', 'wp-statistics' ); ?></label> + </th> + <td> + <?php + GLOBAL $wpdb; + $wp_prefix = $wpdb->prefix; + + // Check the number of index's on the visits table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query( "SHOW INDEX FROM {$wp_prefix}statistics_visit WHERE Key_name = 'unique_date'" ); + + // Note, the result will be the number of fields contained in the index, so in our case 1. + if ( $result != 1 ) { + $dbupdates['unique_date'] = true; + ?> + <input id="visits-submit" class="button button-primary" type="button" value="<?php _e( 'Update Now!', 'wp-statistics' ); ?>" name="visit-submit" onclick="location.href=document.URL+'&visits=1&tab=database'"> + <p class="description"><?php echo __( 'Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case.', 'wp-statistics' ) . ' ' . __( 'Newer installs protect against this with a unique index on the table.', 'wp-statistics' ) . ' ' . __( 'To create the index on the older installs duplicate entries must be deleted first.', 'wp-statistics' ) . ' ' . __( 'Clicking "Update Now" will scan the vistits table, delete duplicate entries and add the index.', 'wp-statistics' ); ?></p> + <p class="description"><?php _e( 'This operation could take a long time on installs with many rows in the visits table.', 'wp-statistics' ); ?></p> + <?php + } else { + $dbupdates['unique_date'] = false; + ?> + <p class="description"><?php echo __( 'Older installs of WP Statistics allow for duplicate entries in the visits table in a corner case.', 'wp-statistics' ) . ' ' . __( 'Newer installs protect against this with a unique index on the table.', 'wp-statistics' ); ?></p> + <p class="description"><?php _e( 'Congratulations, your installation is already up to date, nothing to do.', 'wp-statistics' ); ?></p> + <?php + } + + $WP_Statistics->update_option( 'pending_db_updates', $dbupdates ); + ?> + </td> + + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Search Table', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="index-submit"><?php _e( 'Convert:', 'wp-statistics' ); ?></label> + </th> + <td> + <?php + // Note, the result will be the number of fields contained in the index, so in our case 1. + if ( $WP_Statistics->get_option( 'search_converted' ) != 1 ) { + ?> + <input id="visits-submit" class="button button-primary" type="button" value="<?php _e( 'Convert Now!', 'wp-statistics' ); ?>" name="search-submit" onclick="location.href=document.URL+'&search=1&tab=database'"> + <p class="description"><?php echo __( 'Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets.', 'wp-statistics' ) . ' ' . __( 'A new table has been created to hold this information in a more scalable fashion, however the old data must first be converted to the new format before it can be used.', 'wp-statistics' ); ?></p> + <p class="description"><?php _e( 'This operation could take a long time on installs with many rows in the visitors table.', 'wp-statistics' ); ?></p> + <?php + } else { + ?> + <p class="description"><?php echo __( 'Older installs of WP Statistics store details of searches in the visitors table which can become a performance issue on large datasets.', 'wp-statistics' ) . ' ' . __( 'A new table has been created to hold this information in a more scalable fashion.', 'wp-statistics' ); ?></p> + <p class="description"><?php _e( 'Congratulations, your installation is already up to date, nothing to do.', 'wp-statistics' ); ?></p> + <?php + } + ?> + </td> + + </tr> + + </tbody> + </table> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-export.php b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-export.php new file mode 100644 index 0000000..d92ffb1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-export.php @@ -0,0 +1,63 @@ +<div class="wrap wps-wrap"> + + <form method="post"> + <input type="hidden" name="wps_export" value="true"> + <?php wp_nonce_field( 'wp_statistics_export_nonce', 'wps_export_file' ); ?> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Export', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="table-to-export"><?php _e( 'Export from:', 'wp-statistics' ); ?></label> + </th> + + <td> + <select dir="ltr" id="table-to-export" name="table-to-export" required> + <option value=""><?php _e( 'Please select', 'wp-statistics' ); ?></option> + <?php + foreach ( wp_statistics_db_table( 'all', array( 'historical', 'visitor_relationships' ) ) as $tbl_key => $tbl_name ) { + echo '<option value="' . $tbl_key . '">' . $tbl_name . '</option>'; + } + ?> + </select> + + <p class="description"><?php _e( 'Select the table for the output file.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="export-file-type"><?php _e( 'Export To:', 'wp-statistics' ); ?></label> + </th> + + <td> + <select dir="ltr" id="export-file-type" name="export-file-type" required> + <option value=""><?php _e( 'Please select', 'wp-statistics' ); ?></option> + <option value="xml">XML</option> + <option value="csv">CSV</option> + <option value="tsv">TSV</option> + </select> + + <p class="description"><?php _e( 'Select the output file type.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="export-headers"><?php _e( 'Include Header Row:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="export-headers" type="checkbox" value="1" name="export-headers"> + <p class="description"><?php _e( 'Include a header row as the first line of the exported file.', 'wp-statistics' ); ?></p> + <?php submit_button( __( 'Start Now!', 'wp-statistics' ), 'primary', 'export-file-submit' ); ?> + </td> + </tr> + + </tbody> + </table> + </form> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-historical.php b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-historical.php new file mode 100644 index 0000000..1100ae3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-historical.php @@ -0,0 +1,78 @@ +<?php +// Get the historical number of visitors to the site +$historical_visitors = $WP_Statistics->Get_Historical_Data( 'visitors' ); + +// Get the historical number of visits to the site +$historical_visits = $WP_Statistics->Get_Historical_Data( 'visits' ); + +?> +<div class="wrap wps-wrap"> + <form id="wps_historical_form" method="post"> + <?php wp_nonce_field( 'historical_form', 'wp-statistics-nonce' ); ?> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Historical Values', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top" id="wps_historical_purge" style="display: none"> + <th scope="row" colspan=2> + <?php _e( + 'Note: As you have just purged the database you must reload this page for these numbers to be correct.', + 'wp-statistics' + ); ?> + </th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'Visitors', 'wp-statistics' ); ?>: + </th> + + <td> + <input type="text" size="10" value="<?php echo $historical_visitors; ?>" + id="wps_historical_visitors" name="wps_historical_visitors"> + + <p class="description"><?php echo sprintf( + __( + 'Number of historical number of visitors to the site (current value is %s).', + 'wp-statistics' + ), + number_format_i18n( $historical_visitors ) + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'Visits', 'wp-statistics' ); ?>: + </th> + + <td> + <input type="text" size="10" value="<?php echo $historical_visits; ?>" id="wps_historical_visits" + name="wps_historical_visits"> + + <p class="description"><?php echo sprintf( + __( + 'Number of historical number of visits to the site (current value is %s).', + 'wp-statistics' + ), + number_format_i18n( $historical_visits ) + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <td colspan=2> + <input id="historical-submit" class="button button-primary" type="submit" + value="<?php _e( 'Update Now!', 'wp-statistics' ); ?>" name="historical-submit"/> + </td> + </tr> + + </tbody> + + </table> + + </form> + +</div> diff --git a/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-purging.php b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-purging.php new file mode 100644 index 0000000..4c88d38 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-purging.php @@ -0,0 +1,341 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + jQuery("#purge-data-submit").click(function () { + + var action = jQuery('#purge-data').val(); + + if (action == 0) + return false; + + var agree = confirm('<?php _e( 'Are you sure?', 'wp-statistics' ); ?>'); + + if (!agree) + return false; + + jQuery("#purge-data-submit").attr("disabled", "disabled"); + jQuery("#purge-data-status").html("<img src='<?php echo plugins_url( 'wp-statistics' ); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_purge_data', + 'purge-days': action, + }; + + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + jQuery("#purge-data-status").html(""); + jQuery("#purge-data-result").html(result); + jQuery("#purge-data-submit").removeAttr("disabled"); + jQuery("#wps_historical_purge").show(); + }); + }); + + jQuery("#purge-visitor-hits-submit").click(function () { + + var action = jQuery('#purge-visitor-hits').val(); + + if (action == 0) + return false; + + var agree = confirm('<?php _e( 'Are you sure?', 'wp-statistics' ); ?>'); + + if (!agree) + return false; + + jQuery("#purge-visitor-hits-submit").attr("disabled", "disabled"); + jQuery("#purge-visitor-hits-status").html("<img src='<?php echo plugins_url( 'wp-statistics' ); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_purge_visitor_hits', + 'purge-hits': action, + }; + + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + jQuery("#purge-visitor-hits-status").html(""); + jQuery("#purge-visitor-hits-result").html(result); + jQuery("#purge-visitor-hits-submit").removeAttr("disabled"); + }); + }); + + jQuery("#empty-table-submit").click(function () { + + var action = jQuery('#empty-table').val(); + + if (action == 0) + return false; + + var agree = confirm('<?php _e( 'Are you sure?', 'wp-statistics' ); ?>'); + + if (!agree) + return false; + + jQuery("#empty-table-submit").attr("disabled", "disabled"); + jQuery("#empty-status").html("<img src='<?php echo plugins_url( 'wp-statistics' ); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_empty_table', + 'table-name': action, + }; + + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + jQuery("#empty-status").html(""); + jQuery("#empty-result").html(result); + jQuery("#empty-table-submit").removeAttr("disabled"); + }); + }); + + jQuery("#delete-agents-submit").click(function () { + + var action = jQuery('#delete-agent').val(); + + if (action == 0) + return false; + + var agree = confirm('<?php _e( 'Are you sure?', 'wp-statistics' ); ?>'); + + if (!agree) + return false; + + jQuery("#delete-agents-submit").attr("disabled", "disabled"); + jQuery("#delete-agents-status").html("<img src='<?php echo plugins_url( 'wp-statistics' ); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_delete_agents', + 'agent-name': action, + }; + + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + jQuery("#delete-agents-status").html(""); + jQuery("#delete-agents-result").html(result); + jQuery("#delete-agents-submit").removeAttr("disabled"); + aid = data['agent-name'].replace(/[^a-zA-Z]/g, ""); + jQuery("#agent-" + aid + "-id").remove(); + }); + }); + + jQuery("#delete-platforms-submit").click(function () { + + var action = jQuery('#delete-platform').val(); + + if (action == 0) + return false; + + var agree = confirm('<?php _e( 'Are you sure?', 'wp-statistics' ); ?>'); + + if (!agree) + return false; + + jQuery("#delete-platforms-submit").attr("disabled", "disabled"); + jQuery("#delete-platforms-status").html("<img src='<?php echo plugins_url( 'wp-statistics' ); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_delete_platforms', + 'platform-name': action, + }; + + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + jQuery("#delete-platforms-status").html(""); + jQuery("#delete-platforms-result").html(result); + jQuery("#delete-platforms-submit").removeAttr("disabled"); + pid = data['platform-name'].replace(/[^a-zA-Z]/g, ""); + jQuery("#platform-" + pid + "-id").remove(); + }); + }); + + jQuery("#delete-ip-submit").click(function () { + + var value = jQuery('#delete-ip').val(); + + if (value == 0) + return false; + + var agree = confirm('<?php _e( 'Are you sure?', 'wp-statistics' ); ?>'); + + if (!agree) + return false; + + jQuery("#delete-ip-submit").attr("disabled", "disabled"); + jQuery("#delete-ip-status").html("<img src='<?php echo plugins_url( 'wp-statistics' ); ?>/assets/images/loading.gif'/>"); + + var data = { + 'action': 'wp_statistics_delete_ip', + 'ip-address': value, + }; + + jQuery.ajax({ + url: ajaxurl, + type: 'post', + data: data, + datatype: 'json', + }) + .always(function (result) { + jQuery("#delete-ip-status").html(""); + jQuery("#delete-ip-result").html(result); + jQuery("#delete-ip-submit").removeAttr("disabled"); + jQuery("#delete-ip").value(''); + }); + }); + }); +</script> + +<div class="wrap wps-wrap"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Data', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="empty-table"><?php _e( 'Empty Table:', 'wp-statistics' ); ?></label> + </th> + + <td> + <select dir="ltr" id="empty-table" name="empty-table"> + <option value="0"><?php _e( 'Please select', 'wp-statistics' ); ?></option> + <?php + foreach ( wp_statistics_db_table( 'all', 'historical' ) as $tbl_key => $tbl_name ) { + echo '<option value="' . $tbl_key . '">' . $tbl_name . '</option>'; + } + ?> + <option value="all"><?php echo __( 'All', 'wp-statistics' ); ?></option> + </select> + + <p class="description"><?php _e( 'All data table will be lost.', 'wp-statistics' ); ?></p> + <input id="empty-table-submit" class="button button-primary" type="submit" value="<?php _e( 'Clear now!', 'wp-statistics' ); ?>" name="empty-table-submit" Onclick="return false;"/> + <span id="empty-status"></span> + <div id="empty-result"></div> + </td> + </tr> + + <tr> + <th scope="row"> + <label for="purge-data"><?php _e( 'Purge records older than:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input type="text" class="small-text code" id="purge-data" name="wps_purge_data" value="365"/> + <label for="purge-data"><?php _e( 'Days', 'wp-statistics' ); ?></label> + + <p class="description"><?php echo __( 'Delete user statistics data older than the selected number of days.', 'wp-statistics' ) . ' ' . __( 'Minimum value is 30 days.', 'wp-statistics' ); ?></p> + <input id="purge-data-submit" class="button button-primary" type="submit" value="<?php _e( 'Purge now!', 'wp-statistics' ); ?>" name="purge-data-submit" Onclick="return false;"/> + <span id="purge-data-status"></span> + <div id="purge-data-result"></div> + </td> + </tr> + + <tr> + <th scope="row"> + <label for="purge-visitor-hits"><?php _e( 'Purge visitors with more than:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input type="text" class="small-text code" id="purge-visitor-hits" name="wps_purge_visitor_hits" value="10"/> + <label for="purge-visitor-hits"><?php _e( 'Hits', 'wp-statistics' ); ?></label> + + <p class="description"><?php echo __( 'Delete user statistics data where the user has more than the defined number of hits in a day.', 'wp-statistics' ) . ' ' . __( 'This can be useful to clear up old data when your site has been hit by a bot.', 'wp-statistics' ) . ' ' . __( 'This will remove the visitor and their hits to the site, however it will not remove individual page hits as that data is not recorded on a per use basis.', 'wp-statistics' ) . ' ' . __( 'Minimum value is 10 hits.', 'wp-statistics' ); ?></p> + <input id="purge-visitor-hits-submit" class="button button-primary" type="submit" value="<?php _e( 'Purge now!', 'wp-statistics' ); ?>" name="purge-visitor-hits-submit" Onclick="return false;"/> + <span id="purge-visitor-hits-status"></span> + <div id="purge-visitor-hits-result"></div> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Delete User Agent Types', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="delete-agent"><?php _e( 'Delete Agents:', 'wp-statistics' ); ?></label> + </th> + + <td> + <select dir="ltr" id="delete-agent" name="delete-agent"> + <option value="0"><?php _e( 'Please select', 'wp-statistics' ); ?></option> + <?php + $agents = wp_statistics_ua_list(); + + foreach ( $agents as $agent ) { + $aid = preg_replace( "/[^a-zA-Z]/", "", $agent ); + echo "<option value='$agent' id='agent-" . $aid . "-id'>" . $agent . "</option>"; + } + ?> + </select> + + <p class="description"><?php _e( 'All visitor data will be lost for this agent type.', 'wp-statistics' ); ?></p> + <input id="delete-agents-submit" class="button button-primary" type="submit" value="<?php _e( 'Delete now!', 'wp-statistics' ); ?>" name="delete-agents-submit" Onclick="return false;"> + <span id="delete-agents-status"></span> + <div id="delete-agents-result"></div> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="delete-platform"><?php _e( 'Delete Platforms:', 'wp-statistics' ); ?></label> + </th> + + <td> + <select dir="ltr" id="delete-platform" name="delete-platform"> + <option value="0"><?php _e( 'Please select', 'wp-statistics' ); ?></option> + <?php + $platforms = wp_statistics_platform_list(); + + foreach ( $platforms as $platform ) { + $pid = preg_replace( "/[^a-zA-Z]/", "", $platform ); + echo "<option value='$platform' id='platform-" . $pid . "-id'>" . $platform . "</option>"; + } + ?> + </select> + + <p class="description"><?php _e( 'All visitor data will be lost for this platform type.', 'wp-statistics' ); ?></p> + <input id="delete-platforms-submit" class="button button-primary" type="submit" value="<?php _e( 'Delete now!', 'wp-statistics' ); ?>" name="delete-platforms-submit" Onclick="return false;"> + <span id="delete-platforms-status"></span> + <div id="delete-platforms-result"></div> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="delete-ip"><?php _e( 'Delete IP:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input dir="ltr" id="delete-ip" type="text" name="delete-ip"/> + + <p class="description"><?php _e( 'All visitor data will be lost for this IP.', 'wp-statistics' ); ?></p> + <input id="delete-ip-submit" class="button button-primary" type="submit" value="<?php _e( 'Delete now!', 'wp-statistics' ); ?>" name="delete-ip-submit" Onclick="return false;"> + <span id="delete-ip-status"></span> + <div id="delete-ip-result"></div> + </td> + </tr> + </tbody> + </table> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-resources.php b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-resources.php new file mode 100644 index 0000000..770d7e8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-resources.php @@ -0,0 +1,294 @@ +<div class="wrap wps-wrap"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Resources', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'Memory usage in PHP', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php echo number_format_i18n( memory_get_usage() ); ?></strong> <?php _e( 'Bytes', 'wp-statistics' ); ?> + <p class="description"><?php _e( 'Memory usage in PHP', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'PHP Memory Limit', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php echo ini_get( 'memory_limit' ); ?></strong> + <p class="description"><?php _e( 'The memory limit a script is allowed to consume, set in php.ini.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <?php + foreach ( $result as $table_name => $number_row ) { + ?> + <tr valign="top"> + <th scope="row"> + <?php echo sprintf( __( 'Number of rows in the %s table', 'wp-statistics' ), '<code>' . $table_name . '</code>' ); ?> + : + </th> + <td> + <strong><?php echo number_format_i18n( $number_row ); ?></strong> <?php echo _n( 'Row', 'Rows', number_format_i18n( $number_row ), 'wp-statistics' ); ?> + <p class="description"><?php _e( 'Number of rows', 'wp-statistics' ); ?></p> + </td> + </tr> + <?php + } + ?> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Version Info', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'WP Statistics Version', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php echo WP_Statistics::$reg['version']; ?></strong> + <p class="description"><?php _e( 'The WP Statistics version you are running.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'PHP Version', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php echo phpversion(); ?></strong> + <p class="description"><?php _e( 'The PHP version you are running.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'PHP Safe Mode', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php if ( ini_get( 'safe_mode' ) ) { + _e( 'Yes', 'wp-statistics' ); + } else { + _e( 'No', 'wp-statistics' ); + } ?></strong> + + <p class="description"><?php _e( 'Is PHP Safe Mode active. The GeoIP code is not supported in Safe Mode.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'PHP IPv6 Enabled', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php if ( defined( 'AF_INET6' ) ) { + _e( 'Yes', 'wp-statistics' ); + } else { + _e( 'No', 'wp-statistics' ); + } ?></strong> + + <p class="description"><?php _e( 'Is PHP compiled with IPv6 support. You may see warning messages in your PHP log if it is not and you receive HTTP headers with IPv6 addresses in them.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'jQuery Version', 'wp-statistics' ); ?>: + </th> + + <td> + <strong> + <script type="text/javascript">document.write(jQuery().jquery);</script> + </strong> + + <p class="description"><?php _e( 'The jQuery version you are running.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'cURL Version', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php if ( function_exists( 'curl_version' ) ) { + $curl_ver = curl_version(); + echo $curl_ver['version']; + } else { + _e( 'cURL not installed', 'wp-statistics' ); + } ?></strong> + + <p class="description"><?php _e( + 'The PHP cURL Extension version you are running. cURL is required for the GeoIP code, if it is not installed GeoIP will be disabled.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'Zlib gzopen()', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php if ( function_exists( 'gzopen' ) ) { + _e( 'Installed', 'wp-statistics' ); + } else { + _e( 'Not installed', 'wp-statistics' ); + } ?></strong> + + <p class="description"><?php _e( 'If the gzopen() function is installed. The gzopen() function is required for the GeoIP database to be downloaded successfully.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'GMP PHP extension', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php if ( extension_loaded( 'gmp' ) ) { + _e( 'Installed', 'wp-statistics' ); + } else { + _e( 'Not installed', 'wp-statistics' ); + } ?></strong> + + <p class="description"><?php _e( 'If the GMP Math PHP extension is loaded, either GMP or BCMath is required for the GeoIP database to be read successfully.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'BCMath PHP extension', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php if ( extension_loaded( 'bcmath' ) ) { + _e( 'Installed', 'wp-statistics' ); + } else { + _e( 'Not installed', 'wp-statistics' ); + } ?></strong> + + <p class="description"><?php _e( 'If the BCMath PHP extension is loaded, either GMP or BCMath is required for the GeoIP database to be read successfully.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'File Info', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'GeoIP Database', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php $upload_dir = wp_upload_dir(); + $GeoIP_filename = $upload_dir['basedir'] . '/wp-statistics/GeoLite2-Country.mmdb'; + $GeoIP_filedate = @filemtime( $GeoIP_filename ); + + if ( $GeoIP_filedate === false ) { + _e( 'Database file does not exist.', 'wp-statistics' ); + } else { + echo size_format( @filesize( $GeoIP_filename ), 2 ) . __( ', created on ', 'wp-statistics' ) . date_i18n( get_option( 'date_format' ) . ' @ ' . get_option( 'time_format' ), $GeoIP_filedate ); + } ?></strong> + + <p class="description"><?php _e( 'The file size and date of the GeoIP database.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Client Info', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'Client IP', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php echo $WP_Statistics->get_IP(); ?></strong> + <p class="description"><?php _e( 'The client IP address.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'User Agent', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php echo htmlentities( $_SERVER['HTTP_USER_AGENT'], ENT_QUOTES ); ?></strong> + <p class="description"><?php _e( 'The client user agent string.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'Browser', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php $agent = $WP_Statistics->get_UserAgent(); + echo $agent['browser']; + ?></strong> + + <p class="description"><?php _e( 'The detected client browser.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'Version', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php echo $agent['version']; ?></strong> + <p class="description"><?php _e( 'The detected client browser version.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <?php _e( 'Platform', 'wp-statistics' ); ?>: + </th> + + <td> + <strong><?php echo $agent['platform']; ?></strong> + <p class="description"><?php _e( 'The detected client platform.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Server Info', 'wp-statistics' ); ?></h3></th> + </tr> + + <?php + $list = array( 'SERVER_SOFTWARE', 'HTTP_HOST', 'REMOTE_ADDR', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'HTTP_X_REAL_IP', ); + foreach ( $list as $server ) { + if ( isset( $_SERVER[ $server ] ) ) { + echo '<tr valign="top"> + <th scope="row"> + ' . $server . ' + </th> + <td> + <strong>' . $_SERVER[ $server ] . '</strong> + </td> + </tr>'; + } + } + ?> + </tbody> + </table> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-updates.php b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-updates.php new file mode 100644 index 0000000..4b2371b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/optimization/tabs/wps-optimization-updates.php @@ -0,0 +1,58 @@ +<script type="text/javascript"> + jQuery(document).ready(function () { + jQuery("#hash-ips-submit").click(function () { + var agree = confirm('<?php _e( 'This will replace all IP addresses in the database with hash values and cannot be undo, are you sure?', 'wp-statistics' ); ?>'); + + if (agree) + location.href = document.URL + '&tab=updates&hash-ips=1'; + + }); + }); +</script> +<div class="wrap wps-wrap"> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'GeoIP Options', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="populate-submit"><?php _e( 'Countries:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="populate-submit" class="button button-primary" type="button" + value="<?php _e( 'Update Now!', 'wp-statistics' ); ?>" name="populate-submit" + onclick="location.href=document.URL+'&tab=updates&populate=1'"> + + <p class="description"><?php _e( + 'Updates any unknown location data in the database, this may take a while', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'IP Addresses', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="populate-submit"><?php _e( 'Hash IP Addresses:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="hash-ips-submit" class="button button-primary" type="button" + value="<?php _e( 'Update Now!', 'wp-statistics' ); ?>" name="hash-ips-submit"> + + <p class="description"><?php _e( + 'Replace IP addresses in the database with hash values, you will not be able to recover the IP addresses in the future to populate location information afterwards and this may take a while', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + </tbody> + </table> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/optimization/wps-optimization.php b/wp-content/plugins/wp-statistics/includes/optimization/wps-optimization.php new file mode 100644 index 0000000..742629f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/optimization/wps-optimization.php @@ -0,0 +1,270 @@ +<?php +global $wpdb, $WP_Statistics; +$wp_prefix = $wpdb->prefix; + +if ( ! is_super_admin() ) { + wp_die( __( 'Access denied!', 'wp-statistics' ) ); +} + +if ( array_key_exists( 'populate', $_GET ) ) { + if ( intval( $_GET['populate'] ) == 1 ) { + echo WP_Statistics_Updates::populate_geoip_info(); + } +} + +if ( array_key_exists( 'hash-ips', $_GET ) ) { + if ( intval( $_GET['hash-ips'] ) == 1 ) { + // Generate a random salt + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $randomString = ''; + for ( $i = 0; $i < 50; $i ++ ) { + $randomString .= $characters[ rand( 0, strlen( $characters ) - 1 ) ]; + } + + // Get the rows from the Visitors table. + $result = $wpdb->get_results( "SELECT DISTINCT ip FROM {$wp_prefix}statistics_visitor" ); + + foreach ( $result as $row ) { + if ( substr( $row->ip, 0, 6 ) != '#hash#' ) { + $wpdb->update( + $wp_prefix . "statistics_visitor", + array( + 'ip' => '#hash#' . sha1( $row->ip . $randomString ), + ), + array( + 'ip' => $row->ip, + ) + ); + } + } + + echo "<div class='updated settings-error'><p><strong>" . __( 'IP Addresses replaced with hash values.', 'wp-statistics' ) . "</strong></p></div>"; + } +} + +if ( array_key_exists( 'install', $_GET ) ) { + if ( intval( $_GET['install'] ) == 1 ) { + $WPS_Installed = "1.0"; + new WP_Statistics_Install( $WP_Statistics ); + echo "<div class='updated settings-error'><p><strong>" . __( 'Install routine complete.', 'wp-statistics' ) . "</strong></p></div>"; + } +} + +if ( array_key_exists( 'index', $_GET ) ) { + if ( intval( $_GET['index'] ) == 1 ) { + // Check the number of index's on the visitors table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query( "SHOW INDEX FROM {$wp_prefix}statistics_visitor WHERE Key_name = 'date_ip'" ); + + if ( $result != 5 ) { + // We have to loop through all the rows in the visitors table to check for duplicates that may have been created in error. + $result = $wpdb->get_results( + "SELECT ID, last_counter, ip FROM {$wp_prefix}statistics_visitor ORDER BY last_counter, ip" + ); + + // Setup the inital values. + $lastrow = array( 'last_counter' => '', 'ip' => '' ); + $deleterows = array(); + + // Ok, now iterate over the results. + foreach ( $result as $row ) { + // if the last_counter (the date) and IP is the same as the last row, add the row to be deleted. + if ( $row->last_counter == $lastrow['last_counter'] && $row->ip == $lastrow['ip'] ) { + $deleterows[] .= $row->ID; + } + + // Update the last row data. + $lastrow['last_counter'] = $row->last_counter; + $lastrow['ip'] = $row->ip; + } + + // Now do the actual deletions. + foreach ( $deleterows as $row ) { + $wpdb->delete( $wp_prefix . 'statistics_visitor', array( 'ID' => $row ) ); + } + + // The table should be ready to be updated now with the new index, so let's do it. + $result = $wpdb->get_results( "ALTER TABLE " . $wp_prefix . 'statistics_visitor' . " ADD UNIQUE `date_ip_agent` ( `last_counter`, `ip`, `agent` (75), `platform` (75), `version` (75) )" ); + + // We might have an old index left over from 7.1-7.3 so lets make sure to delete it. + $wpdb->query( "DROP INDEX `date_ip` ON {$wp_prefix}statistics_visitor" ); + + // Record in the options that we've done this update. + $dbupdates = $WP_Statistics->get_option( 'pending_db_updates' ); + $dbupdates['date_ip_agent'] = false; + $WP_Statistics->update_option( 'pending_db_updates', $dbupdates ); + } + } +} + +if ( array_key_exists( 'visits', $_GET ) ) { + if ( intval( $_GET['visits'] ) == 1 ) { + // Check the number of index's on the visits table, if it's only 5 we need to check for duplicate entries and remove them + $result = $wpdb->query( "SHOW INDEX FROM {$wp_prefix}statistics_visit WHERE Key_name = 'unique_date'" ); + + // Note, the result will be the number of fields contained in the index, so in our case 1. + if ( $result != 1 ) { + // We have to loop through all the rows in the visitors table to check for duplicates that may have been created in error. + $result = $wpdb->get_results( + "SELECT ID, last_counter, visit FROM {$wp_prefix}statistics_visit ORDER BY last_counter, visit DESC" + ); + + // Setup the initial values. + $lastrow = array( 'last_counter' => '', 'visit' => 0, 'id' => 0 ); + $deleterows = array(); + + // Ok, now iterate over the results. + foreach ( $result as $row ) { + // if the last_counter (the date) and IP is the same as the last row, add the row to be deleted. + if ( $row->last_counter == $lastrow['last_counter'] ) { + $deleterows[] .= $row->ID; + } + + // Update the lastrow data. + $lastrow['last_counter'] = $row->last_counter; + $lastrow['id'] = $row->ID; + $lastrow['visit'] = $row->visit; + } + + // Now do the acutal deletions. + foreach ( $deleterows as $row ) { + $wpdb->delete( $wp_prefix . 'statistics_visit', array( 'ID' => $row ) ); + } + + // The table should be ready to be updated now with the new index, so let's do it. + $result = $wpdb->get_results( + "ALTER TABLE " . $wp_prefix . 'statistics_visit' . " ADD UNIQUE `unique_date` ( `last_counter` )" + ); + + // Record in the options that we've done this update. + $dbupdates = $WP_Statistics->get_option( 'pending_db_updates' ); + $dbupdates['unique_date'] = false; + $WP_Statistics->update_option( 'pending_db_updates', $dbupdates ); + } + } +} + +if ( array_key_exists( 'historical-submit', $_POST ) ) { + if ( array_key_exists( 'wps_historical_visitors', $_POST ) ) { + $result = $wpdb->update( + $wp_prefix . "statistics_historical", + array( 'value' => $_POST['wps_historical_visitors'] ), + array( 'category' => 'visitors' ) + ); + + if ( $result == 0 ) { + $result = $wpdb->insert( + $wp_prefix . "statistics_historical", + array( + 'value' => $_POST['wps_historical_visitors'], + 'category' => 'visitors', + 'page_id' => - 1, + 'uri' => '-1', + ) + ); + } + } + + if ( array_key_exists( 'wps_historical_visits', $_POST ) ) { + $result = $wpdb->update( + $wp_prefix . "statistics_historical", + array( 'value' => $_POST['wps_historical_visits'] ), + array( 'category' => 'visits' ) + ); + + if ( $result == 0 ) { + $result = $wpdb->insert( + $wp_prefix . "statistics_historical", + array( + 'value' => $_POST['wps_historical_visits'], + 'category' => 'visits', + 'page_id' => - 2, + 'uri' => '-2', + ) + ); + } + } + +} + +if ( array_key_exists( 'search', $_GET ) ) { + + // Make sure we get all the search engines, even the ones the disabled ones. + $se_list = wp_statistics_searchengine_list(); + $total = 0; + $limitsize = 10000; + + foreach ( $se_list as $key => $se ) { + $sql = wp_statistics_searchengine_query( $key ); + $rowcount = $wpdb->get_var( "SELECT count(*) FROM `{$wpdb->prefix}statistics_visitor` WHERE {$sql}" ); + $offset = 0; + + while ( $rowcount > 0 ) { + $result = $wpdb->get_results( + "SELECT * FROM `{$wpdb->prefix}statistics_visitor` WHERE {$sql} LIMIT {$offset}, {$limitsize}" + ); + foreach ( $result as $row ) { + $parts = parse_url( $row->referred ); + $data['last_counter'] = $row->last_counter; + $data['engine'] = $key; + $data['host'] = $parts['host']; + $data['words'] = $WP_Statistics->Search_Engine_QueryString( $row->referred ); + $data['visitor'] = $row->ID; + + if ( $data['words'] == 'No search query found!' ) { + $data['words'] = ''; + } + + $wpdb->insert( $wpdb->prefix . 'statistics_search', $data ); + $total ++; + } + + $rowcount -= $limitsize; + $offset += $limitsize; + } + } + + $WP_Statistics->update_option( 'search_converted', 1 ); + echo "<div class='updated settings-error'><p><strong>" . sprintf( __( 'Search table conversion complete, %d rows added.', 'wp-statistics' ), $total ) . "</strong></p></div>"; +} +?> +<div class="wrap wps-wrap wp-statistics-settings"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Optimization', 'wp-statistics' ) ); ?> + + <div id="poststuff"> + <div id="post-body" class="metabox-holder columns-2"> + <div class="wp-list-table widefat widefat"> + <div class="wp-statistics-container"> + <ul class="tabs"> + <li class="tab-link current" data-tab="resources"><?php _e( 'Resources/Information', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="export"><?php _e( 'Export', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="purging"><?php _e( 'Purging', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="database"><?php _e( 'Database', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="updates"><?php _e( 'Updates', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="historical"><?php _e( 'Historical', 'wp-statistics' ); ?></li> + </ul> + + <div id="resources" class="tab-content current"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/optimization/tabs/wps-optimization-resources.php' ); ?> + </div> + <div id="export" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/optimization/tabs/wps-optimization-export.php' ); ?> + </div> + <div id="purging" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/optimization/tabs/wps-optimization-purging.php' ); ?> + </div> + <div id="database" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/optimization/tabs/wps-optimization-database.php' ); ?> + </div> + <div id="updates" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/optimization/tabs/wps-optimization-updates.php' ); ?> + </div> + <div id="historical" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/optimization/tabs/wps-optimization-historical.php' ); ?> + </div> + </div><!-- container --> + </div> + + <?php include WP_Statistics::$reg['plugin-dir'] . 'includes/templates/postbox.php'; ?> + </div> + </div> +</div> diff --git a/wp-content/plugins/wp-statistics/includes/robotslist.php b/wp-content/plugins/wp-statistics/includes/robotslist.php new file mode 100644 index 0000000..f28aea7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/robotslist.php @@ -0,0 +1,181 @@ +<?php +global $wps_robotarray, $wps_robotslist; + +$wps_robotarray = array( + '007ac9', + '5bot', + 'A6-Indexer', + 'AbachoBOT', + 'accoona', + 'AcoiRobot', + 'AddThis.com', + 'ADmantX', + 'AdsBot-Google', + 'advbot', + 'AhrefsBot', + 'aiHitBot', + 'alexa', + 'alphabot', + 'AltaVista', + 'AntivirusPro', + 'anyevent', + 'appie', + 'Applebot', + 'archive.org_bot', + 'Ask Jeeves', + 'ASPSeek', + 'Baiduspider', + 'Benjojo', + 'BeetleBot', + 'bingbot', + 'Blekkobot', + 'blexbot', + 'BOT for JCE', + 'bubing', + 'Butterfly', + 'cbot', + 'clamantivirus', + 'cliqzbot', + 'clumboot', + 'coccoc', + 'crawler', + 'CrocCrawler', + 'crowsnest.tv', + 'dbot', + 'dl2bot', + 'dotbot', + 'downloadbot', + 'duckduckgo', + 'Dumbot', + 'EasouSpider', + 'eStyle', + 'EveryoneSocialBot', + 'Exabot', + 'ezooms', + 'facebook.com', + 'facebookexternalhit', + 'FAST', + 'Feedfetcher-Google', + 'feedzirra', + 'findxbot', + 'Firfly', + 'FriendFeedBot', + 'froogle', + 'GeonaBot', + 'Gigabot', + 'girafabot', + 'gimme60bot', + 'glbot', + 'Googlebot', + 'GroupHigh', + 'ia_archiver', + 'IDBot', + 'InfoSeek', + 'inktomi', + 'IstellaBot', + 'jetmon', + 'Kraken', + 'Leikibot', + 'linkapediabot', + 'linkdexbot', + 'LinkpadBot', + 'LoadTimeBot', + 'looksmart', + 'ltx71', + 'Lycos', + 'Mail.RU_Bot', + 'Me.dium', + 'meanpathbot', + 'mediabot', + 'medialbot', + 'Mediapartners-Google', + 'MJ12bot', + 'msnbot', + 'MojeekBot', + 'monobot', + 'moreover', + 'MRBOT', + 'NationalDirectory', + 'NerdyBot', + 'NetcraftSurveyAgent', + 'niki-bot', + 'nutch', + 'Openbot', + 'OrangeBot', + 'owler', + 'p4Bot', + 'PaperLiBot', + 'pageanalyzer', + 'PagesInventory', + 'Pimonster', + 'porkbun', + 'pr-cy', + 'proximic', + 'pwbot', + 'r4bot', + 'rabaz', + 'Rambler', + 'Rankivabot', + 'revip', + 'riddler', + 'rogerbot', + 'Scooter', + 'Scrubby', + 'scrapy.org', + 'SearchmetricsBot', + 'sees.co', + 'SemanticBot', + 'SemrushBot', + 'SeznamBot', + 'sfFeedReader', + 'shareaholic-bot', + 'sistrix', + 'SiteExplorer', + 'Slurp', + 'Socialradarbot', + 'SocialSearch', + 'Sogou web spider', + 'Spade', + 'spbot', + 'SpiderLing', + 'SputnikBot', + 'Superfeedr', + 'SurveyBot', + 'TechnoratiSnoop', + 'TECNOSEEK', + 'Teoma', + 'trendictionbot', + 'TweetmemeBot', + 'Twiceler', + 'Twitterbot', + 'Twitturls', + 'u2bot', + 'uMBot-LN', + 'uni5download', + 'unrulymedia', + 'UptimeRobot', + 'URL_Spider_SQL', + 'Vagabondo', + 'vBSEO', + 'WASALive-Bot', + 'WebAlta Crawler', + 'WebBug', + 'WebFindBot', + 'WebMasterAid', + 'WeSEE', + 'Wotbox', + 'wsowner', + 'wsr-agent', + 'www.galaxy.com', + 'x100bot', + 'XoviBot', + 'xzybot', + 'yandex', + 'Yahoo', + 'Yammybot', + 'YoudaoBot', + 'ZyBorg', + 'ZemlyaCrawl', +); + +$wps_robotslist = implode("\n", $wps_robotarray); diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-about.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-about.php new file mode 100644 index 0000000..3f873b2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-about.php @@ -0,0 +1,163 @@ +<table class="form-table"> + <tbody> + <tr valign="top"> + <td scope="row" align="center"> + <img src="<?php echo plugins_url( 'wp-statistics/assets/images/logo-250.png' ); ?>"></td> + </tr> + + <tr valign="top"> + <td scope="row" align="center"> + <h2><?php echo sprintf( __( 'WP Statistics V%s', 'wp-statistics' ), WP_Statistics::$reg['version'] ); ?></h2> + </td> + </tr> + + <tr valign="top"> + <td scope="row" align="center"> + <?php echo sprintf( + __( 'This product includes GeoLite2 data created by %s.', 'wp-statistics' ), + '<a href="http://www.maxmind.com" target=_blank>MaxMind</a>' + ); ?> + </td> + </tr> + + <tr valign="top"> + <td scope="row" align="center"> + <hr/> + </td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e( 'Donate', 'wp-statistics' ); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php echo sprintf( + __( + 'Feel like showing us how much you enjoy WP Statistics? Drop by our %sdonation%s page and show us some love!', + 'wp-statistics' + ), + '<a href="http://wp-statistics.com/donate" target="_blank">', + '</a>' + ); ?></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e( 'Visit Us Online', 'wp-statistics' ); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php echo sprintf( + __( + 'Come visit our great new %swebsite%s and keep up to date on the latest news about WP Statistics.', + 'wp-statistics' + ), + '<a href="http://wp-statistics.com" target="_blank">', + '</a>' + ); ?></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e( 'Rate and Review at WordPress.org', 'wp-statistics' ); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php printf( + __( + 'Thanks for installing WP Statistics, we encourage you to submit a %srating and review%s over at WordPress.org. Your feedback is greatly appreciated!', + 'wp-statistics' + ), + '<a href="https://wordpress.org/support/plugin/wp-statistics/reviews/?rate=5#new-post" target="_blank">', + '</a>' + ); ?> + </td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e( 'Translations', 'wp-statistics' ); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php echo sprintf( + __( + 'WP Statistics supports internationalization. Please visit %sWP Statistics translations page%s to help translation.', + 'wp-statistics' + ), + '<a href="https://wp-statistics.com/translations/" target="_blank">', + '</a>' + ); ?></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><h2><?php _e( 'Support', 'wp-statistics' ); ?></h2></td> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"> + <p><?php _e( + "We're sorry you're having problem with WP Statistics and we're happy to help out. Here are a few things to do before contacting us:", + 'wp-statistics' + ); ?></p> + + <ul style="list-style-type: disc; list-style-position: inside; padding-left: 25px;"> + <li><?php echo sprintf( + __( 'Have you read the %sFAQs%s?', 'wp-statistics' ), + '<a title="' . + __( 'FAQs', 'wp-statistics' ) . + '" href="http://wp-statistics.com/category/faq/" target="_blank">', + '</a>' + ); ?></li> + <li><?php echo sprintf( + __( 'Have you read the %sdocumentation%s?', 'wp-statistics' ), + '<a title="' . + __( 'Documentation', 'wp-statistics' ) . + '" href="http://wp-statistics.com/category/documentation/">', + '</a>' + ); ?></li> + <li><?php echo sprintf( + __( 'Have you search the %ssupport forum%s for a similar issue?', 'wp-statistics' ), + '<a href="http://wordpress.org/support/plugin/wp-statistics" target="_blank">', + '</a>' + ); ?></li> + <li><?php _e( + 'Have you search the Internet for any error messages you are receiving?', + 'wp-statistics' + ); ?></li> + <li><?php _e( 'Make sure you have access to your PHP error logs.', 'wp-statistics' ); ?></li> + </ul> + + <p><?php _e( 'And a few things to double-check:', 'wp-statistics' ); ?></p> + + <ul style="list-style-type: disc; list-style-position: inside; padding-left: 25px;"> + <li><?php _e( 'How\'s your memory_limit in php.ini?', 'wp-statistics' ); ?></li> + <li><?php _e( + 'Have you tried disabling any other plugins you may have installed?', + 'wp-statistics' + ); ?></li> + <li><?php _e( 'Have you tried using the default WordPress theme?', 'wp-statistics' ); ?></li> + <li><?php _e( 'Have you double checked the plugin settings?', 'wp-statistics' ); ?></li> + <li><?php _e( 'Do you have all the required PHP extensions installed?', 'wp-statistics' ); ?></li> + <li><?php echo __( + 'Are you getting a blank or incomplete page displayed in your browser?', + 'wp-statistics' + ) . + ' ' . + __( + 'Did you view the source for the page and check for any fatal errors?', + 'wp-statistics' + ); ?></li> + <li><?php _e( 'Have you checked your PHP and web server error logs?', 'wp-statistics' ); ?></li> + </ul> + + <p><?php _e( 'Still not having any luck?', 'wp-statistics' ); ?><?php echo sprintf( + __( + 'Then please open a new thread on the %sWordPress.org support forum%s and we\'ll respond as soon as possible.', + 'wp-statistics' + ), + '<a href="http://wordpress.org/support/plugin/wp-statistics" target="_blank">', + '</a>' + ); ?></p> + </td> + </tr> + + </tbody> +</table> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-access-level.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-access-level.php new file mode 100644 index 0000000..f6b84ed --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-access-level.php @@ -0,0 +1,94 @@ +<?php + +//Get List Roles Wordpress +global $wp_roles; +$role_list = $wp_roles->get_names(); + +//Save Option Access +if ( $wps_nonce_valid ) { + $wps_option_list = array_merge( $wps_option_list, array( 'wps_read_capability', 'wps_manage_capability' ) ); + foreach ( $wps_option_list as $option ) { + $new_option = str_replace( "wps_", "", $option ); + + if ( array_key_exists( $option, $_POST ) ) { + $value = $_POST[ $option ]; + } else { + $value = ''; + } + $WP_Statistics->store_option( $new_option, $value ); + } +} + +?> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Access Levels', 'wp-statistics' ); ?></h3></th> + </tr> + <?php + + //Get List Of Capability + foreach ( $wp_roles->roles as $role ) { + $cap_list = $role['capabilities']; + foreach ( $cap_list as $key => $cap ) { + + //remove level_ from List + if ( substr( $key, 0, 6 ) != 'level_' ) { + $all_caps[ $key ] = 1; + } + } + } + + ksort( $all_caps ); + $read_cap = $WP_Statistics->get_option( 'read_capability', 'manage_options' ); + $option_list = ''; + foreach ( $all_caps as $key => $cap ) { + if ( $key == $read_cap ) { + $selected = " SELECTED"; + } else { + $selected = ""; + } + $option_list .= "<option value='{$key}'{$selected}>{$key}</option>"; + } + ?> + <tr valign="top"> + <th scope="row"> + <label for="wps_read_capability"><?php _e( 'Required user level to view WP Statistics:', 'wp-statistics' ) ?></label> + </th> + <td> + <select dir="ltr" id="wps_read_capability" name="wps_read_capability"><?php echo $option_list; ?></select> + </td> + </tr> + + <?php + $manage_cap = $WP_Statistics->get_option( 'manage_capability', 'manage_options' ); + foreach ( $all_caps as $key => $cap ) { + if ( $key == $manage_cap ) { + $selected = " SELECTED"; + } else { + $selected = ""; + } + $option_list .= "<option value='{$key}'{$selected}>{$key}</option>"; + } + ?> + <tr valign="top"> + <th scope="row"> + <label for="wps_manage_capability"><?php _e( 'Required user level to manage WP Statistics:', 'wp-statistics' ) ?></label> + </th> + <td> + <select dir="ltr" id="wps_manage_capability" name="wps_manage_capability"><?php echo $option_list; ?></select> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <p class="description"><?php echo sprintf( __( 'See the %sWordPress Roles and Capabilities page%s for details on capability levels.', 'wp-statistics' ), '<a target=_blank href="http://codex.wordpress.org/Roles_and_Capabilities">', '</a>' ); ?></p> + <p class="description"><?php echo __( 'Hint: manage_network = Super Admin Network, manage_options = Administrator, edit_others_posts = Editor, publish_posts = Author, edit_posts = Contributor, read = Everyone.', 'wp-statistics' ); ?></p> + <p class="description"><?php echo __( 'Each of the above cascades the rights upwards in the default WordPress configuration. So for example selecting publish_posts grants the right to Authors, Editors, Admins and Super Admins.', 'wp-statistics' ); ?></p> + <p class="description"><?php echo sprintf( __( 'If you need a more robust solution to delegate access you might want to look at %s in the WordPress plugin directory.', 'wp-statistics' ), '<a href="http://wordpress.org/plugins/capability-manager-enhanced/" target=_blank>Capability Manager Enhanced</a>' ); ?></p> + </th> + </tr> + + </tbody> + </table> +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-exclusions.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-exclusions.php new file mode 100644 index 0000000..6c2bea4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-exclusions.php @@ -0,0 +1,466 @@ +<?php +global $wp_roles; + +$role_list = $wp_roles->get_names(); + +if ( $wps_nonce_valid ) { + + foreach ( $role_list as $role ) { + $role_post = 'wps_exclude_' . str_replace( " ", "_", strtolower( $role ) ); + + if ( array_key_exists( $role_post, $_POST ) ) { + $value = $_POST[ $role_post ]; + } else { + $value = ''; + } + + $new_option = str_replace( "wps_", "", $role_post ); + $WP_Statistics->store_option( $new_option, $value ); + + } + + if ( array_key_exists( 'wps_create_honeypot', $_POST ) ) { + $my_post = array( + 'post_type' => 'page', + 'post_title' => __( 'WP Statistics Honey Pot Page', 'wp-statistics' ) . + ' [' . + $WP_Statistics->Current_Date() . + ']', + 'post_content' => __( 'This is the Honey Pot for WP Statistics to use, do not delete.', 'wp-statistics' ), + 'post_status' => 'publish', + 'post_author' => 1, + ); + + $_POST['wps_honeypot_postid'] = wp_insert_post( $my_post ); + } + + $wps_option_list = array_merge( + $wps_option_list, + array( + 'wps_record_exclusions', + 'wps_robotlist', + 'wps_exclude_ip', + 'wps_exclude_loginpage', + 'wps_exclude_adminpage', + 'wps_force_robot_update', + 'wps_excluded_countries', + 'wps_included_countries', + 'wps_excluded_hosts', + 'wps_robot_threshold', + 'wps_use_honeypot', + 'wps_honeypot_postid', + 'wps_exclude_feeds', + 'wps_excluded_urls', + 'wps_exclude_404s', + 'wps_corrupt_browser_info', + 'wps_exclude_ajax', + ) + ); + + foreach ( $wps_option_list as $option ) { + $new_option = str_replace( "wps_", "", $option ); + + if ( array_key_exists( $option, $_POST ) ) { + $value = $_POST[ $option ]; + } else { + $value = ''; + } + $WP_Statistics->store_option( $new_option, $value ); + } +} + +?> + + <table class="form-table"> + <tbody> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Exclusions', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><label for="wps-exclusions"><?php _e( 'Record exclusions:', 'wp-statistics' ); ?></label> + </th> + <td> + <input id="wps-exclusions" type="checkbox" value="1" + name="wps_record_exclusions" <?php echo $WP_Statistics->get_option( 'record_exclusions' ) == true + ? "checked='checked'" : ''; ?>><label for="wps-exclusions"><?php _e( + 'Enable', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php echo __( + 'This will record all the excluded hits in a separate table with the reasons why it was excluded but no other information.', + 'wp-statistics' + ) . ' ' . __( + 'This will generate a lot of data but is useful if you want to see the total number of hits your site gets, not just actual user visits.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Exclude User Roles', 'wp-statistics' ); ?></h3></th> + </tr> + <?php + $role_option_list = ''; + + foreach ( $role_list as $role ) { + $store_name = 'exclude_' . str_replace( " ", "_", strtolower( $role ) ); + $option_name = 'wps_' . $store_name; + $role_option_list .= $option_name . ','; + + $translated_role_name = translate_user_role( $role ); + ?> + + <tr valign="top"> + <th scope="row"><label for="<?php echo $option_name; ?>"><?php echo $translated_role_name; ?>:</label> + </th> + <td> + <input id="<?php echo $option_name; ?>" type="checkbox" value="1" + name="<?php echo $option_name; ?>" <?php echo $WP_Statistics->get_option( $store_name ) == true + ? "checked='checked'" : ''; ?>><label for="<?php echo $option_name; ?>"><?php _e( + 'Exclude', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php echo sprintf( + __( 'Exclude %s role from data collection.', 'wp-statistics' ), + $translated_role_name + ); ?></p> + </td> + </tr> + <?php } ?> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'IP/Robot Exclusions', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e( 'Robot list:', 'wp-statistics' ); ?></th> + <td> + <textarea name="wps_robotlist" class="code" dir="ltr" rows="10" cols="60" id="wps_robotlist"><?php + $robotlist = $WP_Statistics->get_option( 'robotlist' ); + + if ( ! isset( $wps_robotarray ) ) { + include( WP_Statistics::$reg['plugin-dir'] . 'includes/robotslist.php' ); + } + + if ( $robotlist == '' ) { + $robotlist = implode( "\n", $wps_robotarray ); + update_option( 'wps_robotlist', $robotlist ); + } + + echo htmlentities( $robotlist, ENT_QUOTES ); ?></textarea> + + <p class="description"><?php echo __( + 'A list of words (one per line) to match against to detect robots. Entries must be at least 4 characters long or they will be ignored.', + 'wp-statistics' + ); ?></p> + <a onclick="var wps_robotlist = getElementById('wps_robotlist'); wps_robotlist.value = '<?php echo implode( + '\n', + $wps_robotarray + ); ?>';" class="button"><?php _e( 'Reset to Default', 'wp-statistics' ); ?></a> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="force_robot_update"><?php _e( 'Force robot list update after upgrades:', 'wp-statistics' ); ?></label> + </th> + <td> + <input id="force_robot_update" type="checkbox" value="1" + name="wps_force_robot_update" <?php echo $WP_Statistics->get_option( 'force_robot_update' ) == true + ? "checked='checked'" : ''; ?>><label for="force_robot_update"><?php _e( + 'Enable', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php echo sprintf( + __( + 'Force the robot list to be reset to the default after an update to WP Statistics takes place. Note if this option is enabled any custom robots you have added to the list will be lost.', + 'wp-statistics' + ), + $role + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><label for="wps_robot_threshold"><?php _e( 'Robot visit threshold:', 'wp-statistics' ); ?></label> + </th> + <td> + <input id="wps_robot_threshold" type="text" size="5" name="wps_robot_threshold" + value="<?php echo $WP_Statistics->get_option( 'robot_threshold' ); ?>"> + + <p class="description"><?php echo __( + 'Treat visitors with more than this number of visits per day as robots. 0 = disabled.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded IP address list:', 'wp-statistics' ); ?></th> + <td> + <textarea id="wps_exclude_ip" name="wps_exclude_ip" rows="5" cols="60" class="code" + dir="ltr"><?php echo htmlentities( + $WP_Statistics->get_option( 'exclude_ip' ), + ENT_QUOTES + ); ?></textarea> + + <p class="description"><?php echo __( + 'A list of IP addresses and subnet masks (one per line) to exclude from statistics collection.', + 'wp-statistics' + ); ?></p> + + <p class="description"><?php echo __( + 'For IPv4 addresses, both 192.168.0.0/24 and 192.168.0.0/255.255.255.0 formats are accepted. To specify an IP address only, use a subnet value of 32 or 255.255.255.255.', + 'wp-statistics' + ); ?></p> + + <p class="description"><?php echo __( + 'For IPv6 addresses use the fc00::/7 format.', + 'wp-statistics' + ); ?></p> + <a onclick="var wps_exclude_ip = getElementById('wps_exclude_ip'); if( wps_exclude_ip != null ) { wps_exclude_ip.value = jQuery.trim( wps_exclude_ip.value + '\n10.0.0.0/8' ); }" + class="button"><?php _e( 'Add 10.0.0.0', 'wp-statistics' ); ?></a> + <a onclick="var wps_exclude_ip = getElementById('wps_exclude_ip'); if( wps_exclude_ip != null ) { wps_exclude_ip.value = jQuery.trim( wps_exclude_ip.value + '\n172.16.0.0/12' ); }" + class="button"><?php _e( 'Add 172.16.0.0', 'wp-statistics' ); ?></a> + <a onclick="var wps_exclude_ip = getElementById('wps_exclude_ip'); if( wps_exclude_ip != null ) { wps_exclude_ip.value = jQuery.trim( wps_exclude_ip.value + '\n192.168.0.0/16' ); }" + class="button"><?php _e( 'Add 192.168.0.0', 'wp-statistics' ); ?></a> + <a onclick="var wps_exclude_ip = getElementById('wps_exclude_ip'); if( wps_exclude_ip != null ) { wps_exclude_ip.value = jQuery.trim( wps_exclude_ip.value + '\nfc00::/7' ); }" + class="button"><?php _e( 'Add fc00::/7', 'wp-statistics' ); ?></a> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e( 'Use Honey Pot:', 'wp-statistics' ); ?></th> + <td> + <input id="use_honeypot" type="checkbox" value="1" + name="wps_use_honeypot" <?php echo $WP_Statistics->get_option( 'use_honeypot' ) == true + ? "checked='checked'" : ''; ?>><label for="wps_use_honeypot"><?php _e( + 'Enable', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php echo __( + 'Use a Honey Pot page to identify robots.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><label for="honeypot_postid"><?php _e( 'Honey Pot post ID', 'wp-statistics' ); ?></label> + </th> + <td> + <input id="honeypot_postid" type="text" + value="<?php echo htmlentities( $WP_Statistics->get_option( 'honeypot_postid' ), ENT_QUOTES ); ?>" + size="5" name="wps_honeypot_postid"> + + <p class="description"><?php echo __( + 'The post ID to use for the Honey Pot page.', + 'wp-statistics' + ); ?></p> + <input id="wps_create_honeypot" type="checkbox" value="1" name="wps_create_honeypot"><label + for="wps_create_honeypot"><?php _e( 'Create a new Honey Pot page', 'wp-statistics' ); ?></label> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="corrupt_browser_info"><?php _e( 'Treat corrupt browser info as a bot:', 'wp-statistics' ); ?></label> + </th> + <td> + <input id="corrupt_browser_info" type="checkbox" value="1" + name="wps_corrupt_browser_info" <?php echo $WP_Statistics->get_option( 'corrupt_browser_info' ) == + true ? "checked='checked'" : ''; ?>><label + for="wps_corrupt_browser_info"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php echo __( + 'Treat any visitor with corrupt browser info (missing IP address or empty user agent string) as a robot.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'GeoIP Exclusions', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded countries list:', 'wp-statistics' ); ?></th> + <td> + <textarea id="wps_excluded_countries" name="wps_excluded_countries" rows="5" cols="10" class="code" + dir="ltr"><?php echo htmlentities( + $WP_Statistics->get_option( 'excluded_countries' ), + ENT_QUOTES + ); ?></textarea> + + <p class="description"><?php echo __( + 'A list of country codes (one per line, two letters each) to exclude from statistics collection.', + 'wp-statistics' + ) . ' ' . __( + 'Use "000" (three zeros) to exclude unknown countries.', + 'wp-statistics' + ).' '.sprintf(__( '(%1$sISO 3166 Country Codes%2$s)', 'wp-statistics' ), '<a href="' . esc_url( 'https://dev.maxmind.com/geoip/legacy/codes/iso3166/' ) . '" target="_blank">','</a>' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e( 'Included countries list:', 'wp-statistics' ); ?></th> + <td> + <textarea id="wps_included_countries" name="wps_included_countries" rows="5" cols="10" class="code" + dir="ltr"><?php echo htmlentities( + $WP_Statistics->get_option( 'included_countries' ), + ENT_QUOTES + ); ?></textarea> + + <p class="description"><?php echo __( + 'A list of country codes (one per line, two letters each) to include in statistics collection, if this list is not empty, only visitors from the included countries will be recorded', + 'wp-statistics' + ) . ' ' . __( + 'Use "000" (three zeros) to exclude unknown countries.', + 'wp-statistics' + ).' '.sprintf(__( '(%1$sISO 3166 Country Codes%2$s)', 'wp-statistics' ), '<a href="' . esc_url( 'https://dev.maxmind.com/geoip/legacy/codes/iso3166/' ) . '" target="_blank">','</a>' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Host Exclusions', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded hosts list:', 'wp-statistics' ); ?></th> + <td> + <textarea id="wps_excluded_hosts" name="wps_excluded_hosts" rows="5" cols="80" class="code" + dir="ltr"><?php echo htmlentities( + $WP_Statistics->get_option( 'excluded_hosts' ), + ENT_QUOTES + ); ?></textarea> + + <p class="description"><?php echo __( + 'A list of fully qualified host names (ie. server.example.com, one per line) to exclude from statistics collection.', + 'wp-statistics' + ); ?></p> + <br> + + <p class="description"><?php echo __( + 'Note: this option will NOT perform a reverse DNS lookup on each page load but instead cache the IP address for the provided hostnames for one hour. If you are excluding dynamically assigned hosts you may find some degree of overlap when the host changes it\'s IP address and when the cache is updated resulting in some hits recorded.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Site URL Exclusions', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded login page:', 'wp-statistics' ); ?></th> + <td> + <input id="wps-exclude-loginpage" type="checkbox" value="1" + name="wps_exclude_loginpage" <?php echo $WP_Statistics->get_option( 'exclude_loginpage' ) == true + ? "checked='checked'" : ''; ?>><label for="wps-exclude-loginpage"><?php _e( + 'Exclude', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php _e( + 'Exclude the login page for registering as a hit.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded Admin page:', 'wp-statistics' ); ?></th> + <td> + <input id="wps-exclude-adminpage" type="checkbox" value="1" + name="wps_exclude_adminpage" <?php echo $WP_Statistics->get_option( 'exclude_adminpage' ) == true + ? "checked='checked'" : ''; ?>><label for="wps-exclude-adminpage"><?php _e( + 'Exclude', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php _e( + 'Exclude any call to the WordPress Admin pages.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded RSS feeds:', 'wp-statistics' ); ?></th> + <td> + <input id="wps-exclude-feeds" type="checkbox" value="1" + name="wps_exclude_feeds" <?php echo $WP_Statistics->get_option( 'exclude_feeds' ) == true + ? "checked='checked'" : ''; ?>><label for="wps-exclude-feeds"><?php _e( + 'Exclude', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php _e( + 'Exclude the RSS feeds for registering as a hit.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded 404 pages:', 'wp-statistics' ); ?></th> + <td> + <input id="wps-exclude-404s" type="checkbox" value="1" + name="wps_exclude_404s" <?php echo $WP_Statistics->get_option( 'exclude_404s' ) == true + ? "checked='checked'" : ''; ?>><label for="wps-exclude-404s"><?php _e( + 'Exclude', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php _e( + 'Exclude any URL that returns a "404 - Not Found" message.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded AJAX calls:', 'wp-statistics' ); ?></th> + <td> + <input id="wps-exclude-ajax" type="checkbox" value="1" + name="wps_exclude_ajax" <?php echo $WP_Statistics->get_option( 'exclude_ajax' ) == true + ? "checked='checked'" : ''; ?>><label for="wps-exclude-ajax"><?php _e( + 'Exclude', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php _e( + 'Exclude any call to the WordPress AJAX system.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e( 'Excluded URLs list:', 'wp-statistics' ); ?></th> + <td> + <textarea id="wps_excluded_urls" name="wps_excluded_urls" rows="5" cols="80" class="code" + dir="ltr"><?php echo htmlentities( + $WP_Statistics->get_option( 'excluded_urls' ), + ENT_QUOTES + ); ?></textarea> + + <p class="description"><?php echo __( + 'A list of local urls (ie. /wordpress/about, one per line) to exclude from statistics collection.', + 'wp-statistics' + ); ?></p> + <br> + + <p class="description"><?php echo __( + 'Note: this option will NOT handle URL parameters (anything after the ?), only to the script name. Entries less than two characters will be ignored.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + </tbody> + </table> + +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-externals.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-externals.php new file mode 100644 index 0000000..c1a6d37 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-externals.php @@ -0,0 +1,315 @@ +<?php +if ( $wps_nonce_valid ) { + + $wps_option_list = array( + 'wps_geoip', + 'wps_update_geoip', + 'wps_schedule_geoip', + 'wps_geoip_city', + 'wps_auto_pop', + 'wps_private_country_code', + 'wps_referrerspam', + 'wps_schedule_referrerspam' + ); + + // For country codes we always use upper case, otherwise default to 000 which is 'unknown'. + if ( array_key_exists( 'wps_private_country_code', $_POST ) ) { + $_POST['wps_private_country_code'] = trim( strtoupper( $_POST['wps_private_country_code'] ) ); + } else { + $_POST['wps_private_country_code'] = '000'; + } + + if ( $_POST['wps_private_country_code'] == '' ) { + $_POST['wps_private_country_code'] = '000'; + } + + foreach ( $wps_option_list as $option ) { + $new_option = str_replace( "wps_", "", $option ); + if ( array_key_exists( $option, $_POST ) ) { + $value = $_POST[ $option ]; + } else { + $value = ''; + } + $WP_Statistics->store_option( $new_option, $value ); + } + +} + +?> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'GeoIP settings', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <?php echo sprintf( + __( 'IP location services are provided by data created by %s.', 'wp-statistics' ), + '<a href="http://www.maxmind.com" target=_blank>MaxMind</a>' + ); ?> + </th> + </tr> + + <?php + if ( wp_statistics_geoip_supported() ) { + ?> + <tr valign="top"> + <th scope="row"> + <label for="geoip-enable"><?php _e( 'GeoIP collection:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="geoip-enable" type="checkbox" name="wps_geoip" <?php echo( $WP_Statistics->get_option( 'geoip' ) === 'on' ? "checked='checked'" : '' ); ?>> + <label for="geoip-enable"> + <?php _e( 'Enable', 'wp-statistics' ); ?> + <form action="" method="post" style="display: inline;"> + <input type="hidden" name="geoip_name" value="country"> + <?php submit_button( __( "Update Database", 'wp-statistics' ), "secondary", "update_geoip", false ); ?> + </form> + </label> + + <p class="description"><?php _e( + 'For getting more information and location (country) from visitor, enable this feature.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-city"><?php _e( 'GeoIP City:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="geoip-city" type="checkbox" name="wps_geoip_city" <?php echo( $WP_Statistics->get_option( 'geoip_city' ) == 'on' ? "checked='checked'" : '' ); ?>> + <label for="geoip-city"> + <?php _e( 'Enable', 'wp-statistics' ); ?> + <form action="" method="post" style="display: inline;"> + <input type="hidden" name="geoip_name" value="city"> + <?php submit_button( __( "Update Database", 'wp-statistics' ), "secondary", "update_geoip", false ); ?> + </form> + </label> + + <p class="description"><?php _e( + 'See Visitor\'s City Name', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-schedule"><?php _e( 'Schedule monthly update of GeoIP DB:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="geoip-schedule" type="checkbox" name="wps_schedule_geoip" <?php echo $WP_Statistics->get_option( 'schedule_geoip' ) == true ? "checked='checked'" : ''; ?>> + <label for="geoip-schedule"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + <?php + if ( $WP_Statistics->get_option( 'schedule_geoip' ) ) { + echo '<p class="description">' . __( 'Next update will be', 'wp-statistics' ) . ': <code>'; + $last_update = $WP_Statistics->get_option( 'last_geoip_dl' ); + $this_month = strtotime( __( 'First Tuesday of this month', 'wp-statistics' ) ); + + if ( $last_update > $this_month ) { + $next_update = strtotime( __( 'First Tuesday of next month', 'wp-statistics' ) ) + + ( 86400 * 2 ); + } else { + $next_update = $this_month + ( 86400 * 2 ); + } + + $next_schedule = wp_next_scheduled( 'wp_statistics_geoip_hook' ); + + if ( $next_schedule ) { + echo $WP_Statistics->Local_Date( get_option( 'date_format' ), $next_update ) . + ' @ ' . + $WP_Statistics->Local_Date( get_option( 'time_format' ), $next_schedule ); + } else { + echo $WP_Statistics->Local_Date( get_option( 'date_format' ), $next_update ) . + ' @ ' . + $WP_Statistics->Local_Date( get_option( 'time_format' ), time() ); + } + + echo '</code></p>'; + } + ?> + <p class="description"><?php _e( + 'Download of the GeoIP database will be scheduled for 2 days after the first Tuesday of the month.', + 'wp-statistics' + ); ?></p> + + <p class="description"><?php _e( + 'This option will also download the database if the local filesize is less than 1k (which usually means the stub that comes with the plugin is still in place).', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-schedule"><?php _e( + 'Populate missing GeoIP after update of GeoIP DB:', + 'wp-statistics' + ); ?></label> + </th> + + <td> + <input id="geoip-auto-pop" type="checkbox" name="wps_auto_pop" <?php echo $WP_Statistics->get_option( 'auto_pop' ) == true + ? "checked='checked'" : ''; ?>> + <label for="geoip-auto-pop"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'Update any missing GeoIP data after downloading a new database.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="geoip-schedule"><?php _e( 'Country code for private IP addresses:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input type="text" size="3" id="geoip-private-country-code" name="wps_private_country_code" value="<?php echo htmlentities( + $WP_Statistics->get_option( 'private_country_code', '000' ), + ENT_QUOTES + ); ?>"> + + <p class="description"><?php echo __( + 'The international standard two letter country code (ie. US = United States, CA = Canada, etc.) for private (non-routable) IP addresses (ie. 10.0.0.1, 192.158.1.1, 127.0.0.1, etc.).', + 'wp-statistics' + ) . ' ' . __( + 'Use "000" (three zeros) to use "Unknown" as the country code.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + <?php + } else { + ?> + <tr valign="top"> + <th scope="row" colspan="2"> + <?php + echo __( 'GeoIP collection is disabled due to the following reasons:', 'wp-statistics' ) . '<br><br>'; + + if ( ! function_exists( 'curl_init' ) ) { + echo '<br>    * '; + _e( + 'GeoIP collection requires the cURL PHP extension and it is not loaded on your version of PHP!', + 'wp-statistics' + ); + echo '<br>'; + } + + if ( ! function_exists( 'bcadd' ) ) { + echo '<br>    * '; + _e( + 'GeoIP collection requires the BC Math PHP extension and it is not loaded on your version of PHP!', + 'wp-statistics' + ); + echo '<br>'; + } + + if ( ini_get( 'safe_mode' ) ) { + echo '<br>    * '; + _e( + 'PHP safe mode detected! GeoIP collection is not supported with PHP\'s safe mode enabled!', + 'wp-statistics' + ); + echo '<br>'; + } + ?> + </th> + </tr> + <?php + } ?> + + <tr valign="top"> + <th scope="row" colspan="2"> + <h3><?php _e( 'Matomo Referrer Spam Blacklist settings', 'wp-statistics' ); ?></h3> + </th> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <?php echo sprintf( + __( 'Referrer spam blacklist is provided by Matomo, available from %s.', 'wp-statistics' ), + '<a href="https://github.com/matomo-org/referrer-spam-blacklist" target=_blank>https://github.com/matomo-org/referrer-spam-blacklist</a>' + ); ?> + </th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="referrerspam-enable"><?php _e( 'Matomo Referrer Spam Blacklist usage:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="referrerspam-enable" type="checkbox" name="wps_referrerspam" <?php echo $WP_Statistics->get_option( 'referrerspam' ) == true ? "checked='checked'" : ''; ?>> + <label for="referrerspam-enable"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'The Matomo Referrer Spam Blacklist database will be downloaded and used to detect referrer spam.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top" class="referrerspam_field"<?php if ( ! $WP_Statistics->get_option( 'referrerspam' ) ) { echo ' style="display:none;"'; } ?>> + <th scope="row"> + <label for="geoip-update"><?php _e( 'Update Matomo Referrer Spam Blacklist Info:', 'wp-statistics' ); ?></label> + </th> + + <td> + <a href = "<?php echo WP_Statistics_Admin_Pages::admin_url( 'settings', array( 'tab' => 'externals-settings', 'update-referrerspam' => 'yes' ) ) ?>" class="button"><?php _e( 'Update', 'wp-staitsitcs' ); ?></a> + <p class="description"><?php _e( 'Click button to download the update.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top" class="referrerspam_field"<?php if ( ! $WP_Statistics->get_option( 'referrerspam' ) ) { echo ' style="display:none;"'; } ?>> + <th scope="row"> + <label for="referrerspam-schedule"><?php _e( 'Schedule weekly update of Matomo Referrer Spam Blacklist DB:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="referrerspam-schedule" type="checkbox" name="wps_schedule_referrerspam" <?php echo $WP_Statistics->get_option( + 'schedule_referrerspam' + ) == true ? "checked='checked'" : ''; ?>> + <label for="referrerspam-schedule"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + <?php + if ( $WP_Statistics->get_option( 'schedule_referrerspam' ) ) { + echo '<p class="description">' . __( 'Next update will be', 'wp-statistics' ) . ': <code>'; + $last_update = $WP_Statistics->get_option( 'schedule_referrerspam' ); + if ( $last_update == 0 ) { + $last_update = time(); + } + $next_update = $last_update + ( 86400 * 7 ); + + $next_schedule = wp_next_scheduled( 'wp_statistics_referrerspam_hook' ); + + if ( $next_schedule ) { + echo date( get_option( 'date_format' ), $next_schedule ) . + ' @ ' . + date( get_option( 'time_format' ), $next_schedule ); + } else { + echo date( get_option( 'date_format' ), $next_update ) . + ' @ ' . + date( get_option( 'time_format' ), time() ); + } + + echo '</code></p>'; + } + ?> + <p class="description"><?php _e( + 'Download of the Matomo Referrer Spam Blacklist database will be scheduled for once a week.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + </tbody> + </table> + +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-general.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-general.php new file mode 100644 index 0000000..5794920 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-general.php @@ -0,0 +1,450 @@ +<?php +$selist = wp_statistics_searchengine_list( true ); +$permalink = get_option( 'permalink_structure' ); +$disable_strip_uri_parameters = false; + +if ( $permalink == '' || strpos( $permalink, '?' ) !== false ) { + $disable_strip_uri_parameters = true; +} + +if ( $wps_nonce_valid ) { + foreach ( $selist as $se ) { + $se_post = 'wps_disable_se_' . $se['tag']; + + if ( array_key_exists( $se_post, $_POST ) ) { + $value = $_POST[ $se_post ]; + } else { + $value = ''; + } + $new_option = str_replace( "wps_", "", $se_post ); + $WP_Statistics->store_option( $new_option, $value ); + } + + $wps_option_list = array( + 'wps_useronline', + 'wps_visits', + 'wps_visitors', + 'wps_visitors_log', + 'wps_pages', + 'wps_track_all_pages', + 'wps_use_cache_plugin', + 'wps_disable_column', + 'wps_hit_post_metabox', + 'wps_show_hits', + 'wps_display_hits_position', + 'wps_check_online', + 'wps_menu_bar', + 'wps_coefficient', + 'wps_chart_totals', + 'wps_hide_notices', + 'wps_all_online', + 'wps_strip_uri_parameters', + 'wps_addsearchwords', + ); + + // We need to check the permalink format for the strip_uri_parameters option, if the permalink is the default or contains uri parameters, we can't strip them. + if ( $disable_strip_uri_parameters ) { + $_POST['wps_strip_uri_parameters'] = ''; + } + + foreach ( $wps_option_list as $option ) { + if ( array_key_exists( $option, $_POST ) ) { + $value = $_POST[ $option ]; + } else { + $value = ''; + } + $new_option = str_replace( "wps_", "", $option ); + $WP_Statistics->store_option( $new_option, $value ); + } +} +?> + <script type="text/javascript"> + function ToggleShowHitsOptions() { + jQuery('[id^="wps_show_hits_option"]').fadeToggle(); + } + </script> + + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Online Users', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="useronline"><?php _e( 'Online User:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="useronline" type="checkbox" value="1" name="wps_useronline" <?php echo $WP_Statistics->get_option( 'useronline' ) == true + ? "checked='checked'" : ''; ?>> + <label for="useronline"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Enable or disable this feature', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="check_online"><?php _e( 'Check for online users every:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input type="text" class="small-text code" id="check_online" name="wps_check_online" value="<?php echo htmlentities( $WP_Statistics->get_option( 'check_online' ), ENT_QUOTES ); ?>"/> + <?php _e( 'Seconds', 'wp-statistics' ); ?> + <p class="description"><?php echo sprintf( + __( 'Time for the check accurate online user in the site. Now: %s Seconds', 'wp-statistics' ), + $WP_Statistics->get_option( 'check_online' ) + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="allonline"><?php _e( 'Record all user:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="allonline" type="checkbox" value="1" name="wps_all_online" <?php echo $WP_Statistics->get_option( 'all_online' ) == true + ? "checked='checked'" : ''; ?>> + <label for="allonline"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'Ignores the exclusion settings and records all users that are online (including self referrals and robots). Should only be used for troubleshooting.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Visits', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="visits"><?php _e( 'Visits:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="visits" type="checkbox" value="1" name="wps_visits" <?php echo $WP_Statistics->get_option( 'visits' ) == true ? "checked='checked'" : ''; ?>> + <label for="visits"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Enable or disable this feature', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Visitors', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top" id="visitors_tr"> + <th scope="row"> + <label for="visitors"><?php _e( 'Visitors:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="visitors" type="checkbox" value="1" name="wps_visitors" <?php echo $WP_Statistics->get_option( 'visitors' ) == true ? "checked='checked'" : ''; ?>> + <label for="visitors"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Enable or disable this feature', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top" id="visitors_log_tr" <?php echo( $WP_Statistics->get_option( 'visitors' ) == false ? 'style="display:none;"' : '' ) ?>> + <th scope="row"> + <label for="visitors_log"><?php _e( 'Visitors logs:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="visitors_log" type="checkbox" value="1" name="wps_visitors_log" <?php echo $WP_Statistics->get_option( 'visitors_log' ) == true ? "checked='checked'" : ''; ?>> + <label for="visitors_log"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'If enabled, you will receive a report of each user\'s visit to the pages', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="coefficient"><?php _e( 'Coefficient per visitor:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input type="text" class="small-text code" id="coefficient" name="wps_coefficient" value="<?php echo htmlentities( $WP_Statistics->get_option( 'coefficient' ), ENT_QUOTES ); ?>"/> + + <p class="description"><?php echo sprintf( + __( 'For each visit to account for several hits. Currently %s.', 'wp-statistics' ), + $WP_Statistics->get_option( 'coefficient' ) + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Pages and Posts', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="pages"><?php _e( 'Pages:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="pages" type="checkbox" value="1" name="wps_pages" <?php echo $WP_Statistics->get_option( 'pages' ) == true ? "checked='checked'" : ''; ?>> + <label for="pages"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Enable or disable this feature', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="all_pages"><?php _e( 'Track all pages:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="all_pages" type="checkbox" value="1" name="wps_track_all_pages" <?php echo $WP_Statistics->get_option( 'track_all_pages' ) == true ? "checked='checked'" : ''; ?>> + <label for="all_pages"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Enable or disable this feature', 'wp-statistics' ); ?></p> + <p class="description"><?php echo sprintf( __( 'Track All Wordpress Page Contains Category, Post Tags, Author, Custom Taxonomy and ...', 'wp-statistics' ), admin_url( 'options-permalink.php' ) ); ?></p> + </td> + </tr> + + <?php + if ( ! $disable_strip_uri_parameters ) { + ?> + <tr valign="top"> + <th scope="row"> + <label for="strip_uri_parameters"><?php _e( 'Strip parameters from URI:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="strip_uri_parameters" type="checkbox" value="1" name="wps_strip_uri_parameters" <?php echo $WP_Statistics->get_option( 'strip_uri_parameters' ) == true ? "checked='checked'" : ''; ?>> + <label for="strip_uri_parameters"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'This will remove anything after the ? in a URL.', 'wp-statistics' ); ?></p> + </td> + </tr> + <?php + } + ?> + <tr valign="top"> + <th scope="row"> + <label for="disable_column"><?php _e( 'Hits column', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="disable_column" type="checkbox" value="1" name="wps_disable_column" <?php echo $WP_Statistics->get_option( 'disable_column' ) == true + ? "checked='checked'" : ''; ?>> + <label for="disable_column"><?php _e( 'Disable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Enable or disable this feature', 'wp-statistics' ); ?></p> + </td> + </tr> + + + <tr valign="top"> + <th scope="row"> + <label for="hit_post_metabox"><?php _e( 'Hit metabox chart:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="hit_post_metabox" type="checkbox" value="1" name="wps_hit_post_metabox" <?php echo $WP_Statistics->get_option( 'hit_post_metabox' ) == true ? "checked='checked'" : ''; ?>> + <label for="hit_post_metabox"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Show hits meta box chart in the edit of all post types page.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="show_hits"><?php _e( 'Hits in single page:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="show_hits" type="checkbox" value="1" name="wps_show_hits" <?php echo $WP_Statistics->get_option( 'show_hits' ) == true + ? "checked='checked'" : ''; ?> onClick='ToggleShowHitsOptions();'> + <label for="show_hits"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Enable or disable show hits in content', 'wp-statistics' ); ?></p> + </td> + </tr> + + <?php if ( $WP_Statistics->get_option( 'show_hits' ) ) { + $hidden = ""; + } else { + $hidden = " style='display: none;'"; + } ?> + <tr valign="top"<?php echo $hidden; ?> id='wps_show_hits_option'> + <td scope="row" style="vertical-align: top;"> + <label for="display_hits_position"><?php _e( 'Display position:', 'wp-statistics' ); ?></label> + </td> + + <td> + <select name="wps_display_hits_position" id="display_hits_position"> + <option value="0" <?php selected( $WP_Statistics->get_option( 'display_hits_position' ), '0' ); ?>><?php _e( + 'Please select', + 'wp-statistics' + ); ?></option> + <option value="before_content" <?php selected( $WP_Statistics->get_option( 'display_hits_position' ), 'before_content' ); ?>><?php _e( + 'Before Content', + 'wp-statistics' + ); ?></option> + + <option value="after_content" <?php selected( $WP_Statistics->get_option( 'display_hits_position' ), 'after_content' ); ?>><?php _e( + 'After Content', + 'wp-statistics' + ); ?></option> + </select> + + <p class="description"><?php _e( + 'Choose the position to show Hits.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Cache Plugin', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="all_pages"><?php _e( 'Use Cache Plugin:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="use_cache_plugin" type="checkbox" value="1" name="wps_use_cache_plugin" <?php echo $WP_Statistics->get_option( 'use_cache_plugin' ) == true + ? "checked='checked'" : ''; ?>> + <label for="use_cache_plugin"><?php _e( 'Yes', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'If you use WordPress Cache Plugins, enable this option.', 'wp-statistics' ); ?></p> + <p class="description"><?php echo sprintf( __( 'To register WP-Statistics REST API endpoint ( %s ) , go to the <a href="%s">Permalink page</a> and update the permalink with press Save Changes.', 'wp-statistics' ), WP_Statistics_Rest::route, admin_url( 'options-permalink.php' ) ); ?></p> + <p class="description"><?php echo __( 'Don\'t forget to clear your enabled plugin cache.', 'wp-statistics' ); ?></p> + </td> + </tr> + + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Miscellaneous', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="menu-bar"><?php _e( 'Show stats in menu bar:', 'wp-statistics' ); ?></label> + </th> + + <td> + <select name="wps_menu_bar" id="menu-bar"> + <option value="0" <?php selected( $WP_Statistics->get_option( 'menu_bar' ), '0' ); ?>><?php _e( + 'No', + 'wp-statistics' + ); ?></option> + <option value="1" <?php selected( $WP_Statistics->get_option( 'menu_bar' ), '1' ); ?>><?php _e( + 'Yes', + 'wp-statistics' + ); ?></option> + </select> + + <p class="description"><?php _e( 'Show stats in admin menu bar', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="hide_notices"><?php _e( 'Hide admin notices about non active features:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="hide_notices" type="checkbox" value="1" name="wps_hide_notices" <?php echo $WP_Statistics->get_option( 'hide_notices' ) == true + ? "checked='checked'" : ''; ?>> + <label for="hide_notices"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'By default WP Statistics displays an alert if any of the core features are disabled on every admin page, this option will disable these notices.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Search Engines', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="addsearchwords"><?php _e( 'Add page title to empty search words:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="addsearchwords" type="checkbox" value="1" name="wps_addsearchwords" <?php echo $WP_Statistics->get_option( 'addsearchwords' ) == true + ? "checked='checked'" : ''; ?>> + <label for="addsearchwords"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'If a search engine is identified as the referrer but it does not include the search query this option will substitute the page title in quotes preceded by "~:" as the search query to help identify what the user may have been searching for.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <p class="description"><?php _e( + 'Disabling all search engines is not allowed, doing so will result in all search engines being active.', + 'wp-statistics' + ); ?></p> + </th> + </tr> + <?php + $se_option_list = ''; + + foreach ( $selist as $se ) { + $option_name = 'wps_disable_se_' . $se['tag']; + $store_name = 'disable_se_' . $se['tag']; + $se_option_list .= $option_name . ','; + ?> + + <tr valign="top"> + <th scope="row"> + <label for="<?php echo $option_name; ?>"><?php _e( $se['name'], 'wp-statistics' ); ?>:</label> + </th> + <td> + <input id="<?php echo $option_name; ?>" type="checkbox" value="1" name="<?php echo $option_name; ?>" <?php echo $WP_Statistics->get_option( $store_name ) == true + ? "checked='checked'" : ''; ?>><label for="<?php echo $option_name; ?>"><?php _e( + 'Disable', + 'wp-statistics' + ); ?></label> + + <p class="description"><?php echo sprintf( + __( 'Disable %s from data collection and reporting.', 'wp-statistics' ), + $se['name'] + ); ?></p> + </td> + </tr> + <?php } ?> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Charts', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="chart-totals"><?php _e( 'Include totals:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="chart-totals" type="checkbox" value="1" name="wps_chart_totals" <?php echo $WP_Statistics->get_option( 'chart_totals' ) == true + ? "checked='checked'" : ''; ?>> + <label for="chart-totals"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'Add a total line to charts with multiple values, like the search engine referrals', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + </tbody> + </table> + +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-maintenance.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-maintenance.php new file mode 100644 index 0000000..baed12e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-maintenance.php @@ -0,0 +1,139 @@ +<?php +if ( $wps_nonce_valid ) { + + $wps_option_list = array( + 'wps_schedule_dbmaint', + 'wps_schedule_dbmaint_days', + 'wps_schedule_dbmaint_visitor', + 'wps_schedule_dbmaint_visitor_hits', + ); + + foreach ( $wps_option_list as $option ) { + $new_option = str_replace( "wps_", "", $option ); + if ( array_key_exists( $option, $_POST ) ) { + $value = $_POST[ $option ]; + } else { + $value = ''; + } + $WP_Statistics->store_option( $new_option, $value ); + } +} + +?> + <script type="text/javascript"> + function DBMaintWarning() { + var checkbox = jQuery('#wps_schedule_dbmaint'); + + if (checkbox.attr('checked') == 'checked') { + if (!confirm('<?php _e( 'This will permanently delete data from the database each day, are you sure you want to enable this option?', 'wp-statistics' ); ?>')) + checkbox.attr('checked', false); + } + + + } + </script> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Purge Old Data Daily', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="wps_schedule_dbmaint"><?php _e( 'Enabled:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="wps_schedule_dbmaint" type="checkbox" + name="wps_schedule_dbmaint" <?php echo $WP_Statistics->get_option( 'schedule_dbmaint' ) == true + ? "checked='checked'" : ''; ?> onclick='DBMaintWarning();'> + <label for="wps_schedule_dbmaint"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'A WP Cron job will be run daily to purge any data older than a set number of days.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="wps_schedule_dbmaint_days"><?php _e( 'Purge data older than:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input type="text" class="small-text code" id="wps_schedule_dbmaint_days" + name="wps_schedule_dbmaint_days" value="<?php echo htmlentities( + $WP_Statistics->get_option( 'schedule_dbmaint_days', "365" ), + ENT_QUOTES + ); ?>"/> + <?php _e( 'Days', 'wp-statistics' ); ?> + <p class="description"><?php echo __( + 'The number of days to keep statistics for.', + 'wp-statistics' + ) . ' ' . __( + 'Minimum value is 30 days.', + 'wp-statistics' + ) . ' ' . __( + 'Invalid values will disable the daily maintenance.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Purge High Hit Count Visitors Daily', 'wp-statistics' ); ?></h3> + </th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="wps_schedule_dbmaint_visitor"><?php _e( 'Enabled:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="wps_schedule_dbmaint_visitor" type="checkbox" + name="wps_schedule_dbmaint_visitor" <?php echo $WP_Statistics->get_option( + 'schedule_dbmaint_visitor' + ) == true ? "checked='checked'" : ''; ?> onclick='DBMaintWarning();'> + <label for="wps_schedule_dbmaint_visitor"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'A WP Cron job will be run daily to purge any users statistics data where the user has more than the defined number of hits in a day (aka they are probably a bot).', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="wps_schedule_dbmaint_visitor_hits"><?php _e( + 'Purge visitors with more than:', + 'wp-statistics' + ); ?></label> + </th> + + <td> + <input type="text" class="small-text code" id="wps_schedule_dbmaint_visitor_hits" + name="wps_schedule_dbmaint_visitor_hits" value="<?php echo htmlentities( + $WP_Statistics->get_option( 'schedule_dbmaint_visitor_hits', '50' ), + ENT_QUOTES + ); ?>"/> + <?php _e( 'Hits', 'wp-statistics' ); ?> + <p class="description"><?php echo __( + 'The number of hits required to delete the visitor.', + 'wp-statistics' + ) . ' ' . __( + 'Minimum value is 10 hits.', + 'wp-statistics' + ) . ' ' . __( + 'Invalid values will disable the daily maintenance.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + </tbody> + </table> + +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-notifications.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-notifications.php new file mode 100644 index 0000000..35da4f9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-notifications.php @@ -0,0 +1,293 @@ +<?php +$selist = wp_statistics_searchengine_list( true ); + +if ( $wps_nonce_valid ) { + + // We need to handle a change in the report schedule manually, so check to see it has been set. + if ( array_key_exists( 'wps_time_report', $_POST ) ) { + // If the report has been changed, we need to update the schedule. + if ( $WP_Statistics->get_option( 'time_report' ) != $_POST['wps_time_report'] ) { + // Remove the old schedule if it exists. + if ( wp_next_scheduled( 'report_hook' ) ) { + wp_unschedule_event( wp_next_scheduled( 'report_hook' ), 'report_hook' ); + } + + // Setup the new schedule, we could just let this fall through and let the code in schedule.php deal with it + // but that would require an extra page load to start the schedule so do it here instead. + wp_schedule_event( time(), $_POST['wps_time_report'], 'report_hook' ); + } + } + + $wps_option_list = array( + "wps_stats_report", + "wps_time_report", + "wps_send_report", + "wps_content_report", + "wps_email_list", + "wps_geoip_report", + "wps_prune_report", + "wps_upgrade_report", + "wps_admin_notices", + ); + + foreach ( $wps_option_list as $option ) { + if ( array_key_exists( $option, $_POST ) ) { + $value = $_POST[ $option ]; + } else { + $value = ''; + } + + // WordPress escapes form data no matter what the setting of magic quotes is in PHP (http://www.theblog.ca/wordpress-addslashes-magic-quotes). + $value = stripslashes( $value ); + + $new_option = str_replace( "wps_", "", $option ); + $WP_Statistics->store_option( $new_option, $value ); + } +} + +?> + <script type="text/javascript"> + function ToggleStatOptions() { + jQuery('[id^="wps_stats_report_option"]').fadeToggle(); + } + </script> + + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Common Report Options', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" style="vertical-align: top;"> + <label for="email-report"><?php _e( 'E-mail addresses:', 'wp-statistics' ); ?></label> + </td> + + <td> + <input dir="ltr" type="text" id="email_list" name="wps_email_list" size="30" value="<?php if ( $WP_Statistics->get_option( 'email_list' ) == '' ) { + $WP_Statistics->store_option( 'email_list', get_bloginfo( 'admin_email' ) ); + } + echo htmlentities( $WP_Statistics->get_option( 'email_list' ), ENT_QUOTES ); ?>"/> + + <p class="description"><?php _e( + 'A comma separated list of e-mail addresses to send reports to.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Update Reports', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row"> + <label for="geoip-report"><?php _e( 'GeoIP:', 'wp-statistics' ); ?></label> + </td> + + <td> + <input id="geoip-report" type="checkbox" value="1" name="wps_geoip_report" <?php echo $WP_Statistics->get_option( 'geoip_report' ) == true + ? "checked='checked'" : ''; ?>> + <label for="geoip-report"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'Send a report whenever the GeoIP database is updated.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <td scope="row"> + <label for="prune-report"><?php _e( 'Pruning:', 'wp-statistics' ); ?></label> + </td> + + <td> + <input id="prune-report" type="checkbox" value="1" name="wps_prune_report" <?php echo $WP_Statistics->get_option( 'prune_report' ) == true + ? "checked='checked'" : ''; ?>> + <label for="prune-report"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'Send a report whenever the pruning of database is run.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <td scope="row"> + <label for="upgrade-report"><?php _e( 'Upgrade:', 'wp-statistics' ); ?></label> + </td> + + <td> + <input id="upgrade-report" type="checkbox" value="1" name="wps_upgrade_report" <?php echo $WP_Statistics->get_option( 'upgrade_report' ) == true + ? "checked='checked'" : ''; ?>> + <label for="upgrade-report"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'Send a report whenever the plugin is upgraded.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Statistical reporting', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="stats-report"><?php _e( 'Statistical reporting:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="stats-report" type="checkbox" value="1" name="wps_stats_report" <?php echo $WP_Statistics->get_option( 'stats_report' ) == true + ? "checked='checked'" : ''; ?> onClick='ToggleStatOptions();'> + <label for="stats-report"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Enable or disable this feature', 'wp-statistics' ); ?></p> + </td> + </tr> + + <?php if ( $WP_Statistics->get_option( 'stats_report' ) ) { + $hidden = ""; + } else { + $hidden = " style='display: none;'"; + } ?> + <tr valign="top"<?php echo $hidden; ?> id='wps_stats_report_option'> + <td scope="row" style="vertical-align: top;"> + <label for="time-report"><?php _e( 'Schedule:', 'wp-statistics' ); ?></label> + </td> + + <td> + <select name="wps_time_report" id="time-report"> + <option value="0" <?php selected( $WP_Statistics->get_option( 'time_report' ), '0' ); ?>><?php _e( + 'Please select', + 'wp-statistics' + ); ?></option> + <?php + function wp_statistics_schedule_sort( $a, $b ) { + if ( $a['interval'] == $b['interval'] ) { + return 0; + } + + return ( $a['interval'] < $b['interval'] ) ? - 1 : 1; + } + + //Get List Of Schedules Wordpress + $schedules = wp_get_schedules(); + uasort( $schedules, 'wp_statistics_schedule_sort' ); + $schedules_item = array(); + + foreach ( $schedules as $key => $value ) { + if ( ! in_array( $value, $schedules_item ) ) { + echo '<option value="' . $key . '" ' . selected( $WP_Statistics->get_option( 'time_report' ), $key ) . '>' . $value['display'] . '</option>'; + $schedules_item[] = $value; + } + } + ?> + </select> + + <p class="description"><?php _e( 'Select how often to receive statistical report.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"<?php echo $hidden; ?> id='wps_stats_report_option'> + <td scope="row" style="vertical-align: top;"> + <label for="send-report"><?php _e( 'Send reports via:', 'wp-statistics' ); ?></label> + </td> + + <td> + <select name="wps_send_report" id="send-report"> + <option value="0" <?php selected( $WP_Statistics->get_option( 'send_report' ), '0' ); ?>><?php _e( + 'Please select', + 'wp-statistics' + ); ?></option> + <option value="mail" <?php selected( $WP_Statistics->get_option( 'send_report' ), 'mail' ); ?>><?php _e( + 'Email', + 'wp-statistics' + ); ?></option> + <?php if ( is_plugin_active( 'wp-sms/wp-sms.php' ) || is_plugin_active( 'wp-sms-pro/wp-sms.php' ) ) { ?> + <option value="sms" <?php selected( + $WP_Statistics->get_option( 'send_report' ), + 'sms' + ); ?>><?php _e( 'SMS', 'wp-statistics' ); ?></option> + <?php } ?> + </select> + + <p class="description"><?php _e( + 'Select delivery method for statistical report.', + 'wp-statistics' + ); ?></p> + + <?php if ( ! is_plugin_active( 'wp-sms/wp-sms.php' ) ) { ?> + <p class="description note"><?php echo sprintf( + __( 'Note: To send SMS text messages please install the %s plugin.', 'wp-statistics' ), + '<a href="http://wordpress.org/extend/plugins/wp-sms/" target="_blank">' . + __( 'WordPress SMS', 'wp-statistics' ) . + '</a>' + ); ?></p> + <?php } ?> + </td> + </tr> + + <tr valign="top"<?php echo $hidden; ?> id='wps_stats_report_option'> + <td scope="row" style="vertical-align: top;"> + <label for="content-report"><?php _e( 'Message body:', 'wp-statistics' ); ?></label> + </td> + + <td> + <?php wp_editor( + $WP_Statistics->get_option( 'content_report' ), + 'content-report', + array( + 'media_buttons' => false, + 'textarea_name' => 'wps_content_report', + 'textarea_rows' => 5, + ) + ); ?> + <p class="description"><?php _e( 'Enter the contents of the report.', 'wp-statistics' ); ?></p> + + <p class="description data"> + <?php _e( + 'Any shortcode supported by your installation of WordPress, include all shortcodes for WP Statistics (see the documentation for a list of codes available) are supported in the body of the message. Here are some examples:', + 'wp-statistics' + ); ?> + <br><br>     <?php _e( 'Online User', 'wp-statistics' ); ?>: <code>[wpstatistics + stat=usersonline]</code><br> +     <?php _e( 'Today\'s Visitors', 'wp-statistics' ); ?>: <code>[wpstatistics + stat=visitors time=today]</code><br> +     <?php _e( 'Today\'s Visits', 'wp-statistics' ); ?>: <code>[wpstatistics + stat=visits time=today]</code><br> +     <?php _e( 'Yesterday\'s Visitors', 'wp-statistics' ); ?>: <code>[wpstatistics + stat=visitors time=yesterday]</code><br> +     <?php _e( 'Yesterday\'s Visits', 'wp-statistics' ); ?>: <code>[wpstatistics + stat=visits time=yesterday]</code><br> +     <?php _e( 'Total Visitors', 'wp-statistics' ); ?>: <code>[wpstatistics + stat=visitors time=total]</code><br> +     <?php _e( 'Total Visits', 'wp-statistics' ); ?>: <code>[wpstatistics + stat=visits time=total]</code><br> + </p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Admin Notices', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row"> + <label for="admin-notices"><?php _e( 'All Notices:', 'wp-statistics' ); ?></label> + </td> + + <td> + <input id="admin-notices" type="checkbox" value="1" name="wps_admin_notices" <?php echo $WP_Statistics->get_option( 'admin_notices' ) == true ? "checked='checked'" : ''; ?>> + <label for="admin-notices"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Show all notices and suggestion from WP-Statistics in the admin.', 'wp-statistics' ); ?></p> + </td> + </tr> + </tbody> + </table> + +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); ?> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-overview-display.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-overview-display.php new file mode 100644 index 0000000..086fd7d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-overview-display.php @@ -0,0 +1,106 @@ +<?php +if ( $wps_nonce_valid ) { + $wps_option_list = array( 'wps_disable_map', 'wps_disable_dashboard', 'wps_disable_editor' ); + + foreach ( $wps_option_list as $option ) { + $new_option = str_replace( 'wps_', '', $option ); + + if ( array_key_exists( $option, $_POST ) ) { + $value = $_POST[ $option ]; + } else { + $value = ''; + } + + $WP_Statistics->store_option( $new_option, $value ); + } +} + +// Only display the global options if the user is an administrator. +if ( $wps_admin ) { + ?> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Dashboard', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php _e( + 'The following items are global to all users.', + 'wp-statistics' + ); ?></td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="disable-map"><?php _e( 'Disable dashboard widgets:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="disable-dashboard" type="checkbox" value="1" + name="wps_disable_dashboard" <?php echo $WP_Statistics->get_option( 'disable_dashboard' ) == true + ? "checked='checked'" : ''; ?>> + <label for="disable-dashboard"><?php _e( 'Disable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Disable the dashboard widgets.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Page/Post Editor', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php _e( + 'The following items are global to all users.', + 'wp-statistics' + ); ?></td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="disable-map"><?php _e( 'Disable post/page editor widget:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="disable-editor" type="checkbox" value="1" + name="wps_disable_editor" <?php echo $WP_Statistics->get_option( 'disable_editor' ) == true + ? "checked='checked'" : ''; ?>> + <label for="disable-editor"><?php _e( 'Disable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Disable the page/post editor widget.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Map', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php _e( + 'The following items are global to all users.', + 'wp-statistics' + ); ?></td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="disable-map"><?php _e( 'Disable map:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="disable-map" type="checkbox" value="1" + name="wps_disable_map" <?php echo $WP_Statistics->get_option( 'disable_map' ) == true + ? "checked='checked'" : ''; ?>> + <label for="disable-map"><?php _e( 'Disable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Disable the map display', 'wp-statistics' ); ?></p> + </td> + </tr> + + </tbody> + </table> + <?php +} + +submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-privacy.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-privacy.php new file mode 100644 index 0000000..bc89eca --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-privacy.php @@ -0,0 +1,89 @@ +<?php +if ( $wps_nonce_valid ) { + $wps_option_list = array( + 'wps_anonymize_ips', + 'wps_hash_ips', + 'wps_store_ua', + 'wps_all_online', + ); + + // If the IP hash's are enabled, disable storing the complete user agent. + if ( array_key_exists( 'wps_hash_ips', $_POST ) ) { + $_POST['wps_store_ua'] = ''; + } + + foreach ( $wps_option_list as $option ) { + if ( array_key_exists( $option, $_POST ) ) { + $value = $_POST[ $option ]; + } else { + $value = ''; + } + $new_option = str_replace( "wps_", "", $option ); + $WP_Statistics->store_option( $new_option, $value ); + } +} +?> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'Privacy and Data Protection', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <td scope="row" colspan="2"><?php echo sprintf( __( 'If you want to delete visitor data, please <a href="%s">click here</a>.', 'wp-statistics' ), WP_Statistics_Admin_Pages::admin_url( 'optimization', array( 'tab' => 'purging' ) ) ); ?></td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="anonymize_ips"><?php _e( 'Anonymize IP Addresses:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="anonymize_ips" type="checkbox" value="1" name="wps_anonymize_ips" <?php echo $WP_Statistics->get_option( 'anonymize_ips' ) == true + ? "checked='checked'" : ''; ?>> + <label for="anonymize_ips"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php echo __( 'This option anonymizes the user IP address for GDPR compliance. For example, 888.888.888.888 > 888.888.888.000.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="hash_ips"><?php _e( 'Hash IP Addresses:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="hash_ips" type="checkbox" value="1" name="wps_hash_ips" <?php echo $WP_Statistics->get_option( 'hash_ips' ) == true + ? "checked='checked'" : ''; ?>> + <label for="hash_ips"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php echo __( + 'This feature will not store IP addresses in the database but instead used a unique hash.', + 'wp-statistics' + ) . ' ' . __( + 'The "Store entire user agent string" setting will be disabled if this is selected.', + 'wp-statistics' + ) . ' ' . __( + 'You will not be able to recover the IP addresses in the future to recover location information if this is enabled.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="store_ua"><?php _e( 'Store entire user agent string:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="store_ua" type="checkbox" value="1" name="wps_store_ua" <?php echo $WP_Statistics->get_option( 'store_ua' ) == true + ? "checked='checked'" : ''; ?>> + <label for="store_ua"><?php _e( 'Enable', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( 'Only enabled for debugging. (If the IP hash\'s are enabled, This option disabling automatically.)', 'wp-statistics' ); ?></p> + </td> + </tr> + </tbody> + </table> + +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-removal.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-removal.php new file mode 100644 index 0000000..2d8ebdb --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-removal.php @@ -0,0 +1,129 @@ +<?php +if ( $wps_nonce_valid ) { + + if ( array_key_exists( 'wps_remove_plugin', $_POST ) ) { + if ( is_super_admin() ) { + update_option( 'wp_statistics_removal', 'true' ); + + // We need to reload the page after we reset the options but it's too late to do it through a HTTP redirect so do a + // JavaScript redirect instead. + echo '<script type="text/javascript">window.location.href="' . admin_url() . 'plugins.php";</script>'; + } + } + + if ( array_key_exists( 'wps_reset_plugin', $_POST ) ) { + if ( is_super_admin() ) { + GLOBAL $wpdb, $WP_Statistics; + + $default_options = $WP_Statistics->Default_Options(); + $excluded_defaults = array( 'force_robot_update', 'robot_list' ); + + // Handle multi site implementations + if ( is_multisite() ) { + // Loop through each of the sites. + $sites = $WP_Statistics->get_wp_sites_list(); + foreach ( $sites as $blog_id ) { + + switch_to_blog( $blog_id ); + + // Delete the wp_statistics option. + update_option( 'wp_statistics', array() ); + // Delete the user options. + $wpdb->query( "DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key LIKE 'wp_statistics%'" ); + + $WP_Statistics->load_options(); + + // Set some intelligent defaults. + foreach ( $default_options as $key => $value ) { + if ( ! in_array( $key, $excluded_defaults ) && false === $WP_Statistics->get_option( $key ) ) { + $WP_Statistics->store_option( $key, $value ); + } + } + + $WP_Statistics->save_options(); + } + + restore_current_blog(); + } else { + // Delete the wp_statistics option. + update_option( 'wp_statistics', array() ); + // Delete the user options. + $wpdb->query( "DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key LIKE 'wp_statistics%'" ); + + $WP_Statistics->load_options(); + + // Set some intelligent defaults. + foreach ( $default_options as $key => $value ) { + if ( ! in_array( $key, $excluded_defaults ) && false === $WP_Statistics->get_option( $key ) ) { + $WP_Statistics->store_option( $key, $value ); + } + } + + $WP_Statistics->save_options(); + } + + // We need to reload the page after we reset the options but it's too late to do it through a HTTP redirect so do a + // JavaScript redirect instead. + echo '<script type="text/javascript">window.location.href="' . WP_Statistics_Admin_Pages::admin_url( 'settings' ) . '";</script>'; + } + } +} + +?> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2"><h3><?php _e( 'WP Statisitcs Removal', 'wp-statistics' ); ?></h3></th> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <?php _e( + 'Uninstalling WP Statistics will not remove the data and settings, you can use this option to remove the WP Statistics data from your install before uninstalling the plugin.', + 'wp-statistics' + ); ?> + <br> + <br> + <?php _e( + 'Once you submit this form the settings will be deleted during the page load, however WP Statistics will still show up in your Admin menu until another page load is executed.', + 'wp-statistics' + ); ?> + </th> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="reset-plugin"><?php _e( 'Reset options:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="reset-plugin" type="checkbox" name="wps_reset_plugin"> + <label for="reset-plugin"><?php _e( 'Reset', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'Reset the plugin options to the defaults. This will remove all user and global settings but will keep all other data. This action cannot be undone. Note: For multisite installs this will reset all sites to the defaults.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <label for="remove-plugin"><?php _e( 'Remove data and settings:', 'wp-statistics' ); ?></label> + </th> + + <td> + <input id="remove-plugin" type="checkbox" name="wps_remove_plugin"> + <label for="remove-plugin"><?php _e( 'Remove', 'wp-statistics' ); ?></label> + + <p class="description"><?php _e( + 'Remove data and settings, this action cannot be undone.', + 'wp-statistics' + ); ?></p> + </td> + </tr> + + </tbody> + </table> + +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); ?> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-visitor-ip.php b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-visitor-ip.php new file mode 100644 index 0000000..7af3052 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/tabs/wps-visitor-ip.php @@ -0,0 +1,168 @@ +<?php + +// Save Option +if ( $wps_nonce_valid and $wps_admin ) { + + $value = 'REMOTE_ADDR'; + if ( isset( $_POST['ip_method'] ) and ! empty( $_POST['ip_method'] ) ) { + + // Check Custom Header + if ( $_POST['ip_method'] == "CUSTOM_HEADER" ) { + if ( trim( $_POST['user_custom_header_ip_method'] ) != "" ) { + $value = $_POST['user_custom_header_ip_method']; + } + } else { + $value = $_POST['ip_method']; + } + } + + $WP_Statistics->update_option( 'ip_method', $value ); +} + +// Get IP Method +$ip_method = WP_Statistics::getIPMethod(); + +// Add TickBox +add_thickbox(); + +?> + <!-- Show Help $_SERVER --> + <style> + #TB_window { + direction: ltr; + } + </style> + <div id="list-of-php-server" style="display:none;"> + <table style="direction: ltr;"> + <tr> + <td width="330" style="color: #3238fb; border-bottom: 1px solid #bcbeff;padding-top:10px;padding-bottom:10px;"> + <b><?php _e( '$_SERVER', 'wp-statistics' ); ?></b></td> + <td style="color: #3238fb; border-bottom: 1px solid #bcbeff;padding-top:10px;padding-bottom:10px;"> <?php _e( 'Value', 'wp-statistics' ); ?></td> + </tr> + <?php + foreach ( $_SERVER as $key => $value ) { + ?> + <tr> + <td width="330" style="padding-top:10px;padding-bottom:10px;"> + <b><?php echo $key; ?></b></td> + <td style="padding-top:10px;padding-bottom:10px;"> <?php echo ( $value == "" ? "-" : substr( str_replace( array( "\n", "\r" ), '', trim( $value ) ), 0, 200 ) ) . ( strlen( $value ) > 200 ? '..' : '' ); ?></td> + </tr> + <?php + } + ?> + </table> + </div> + <table class="form-table"> + <tbody> + <tr valign="top"> + <th scope="row" colspan="2" style="padding-bottom: 10px; font-weight: normal;line-height: 25px;"> + <?php _e( 'Your real IP detected with ipify.org service:', 'wp-statistics' ); ?> + </th> + </tr> + + <tr valign="top"> + <th scope="row" colspan="2"> + <code id="user_real_ip" style="padding: 15px;font-size: 30px;font-weight: 200; letter-spacing: 2px;font-family: 'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',sans-serif;"> + <script type="application/javascript"> + jQuery(document).ready(function () { + jQuery.ajax({ + url: "https://api.ipify.org?format=json", + dataType: 'json', + error: function (jqXHR) { + if (jqXHR.status == 0) { + jQuery("code#user_real_ip").html("<?php _e( 'Please check your internet connection and try again.', 'wp-statistics' ); ?>"); + } + }, + success: function (json) { + jQuery("code#user_real_ip").html(json['ip']); + } + }); + }); + </script> + </code></th> + </tr> + + <tr> + <td colspan="3"> + <p><?php _e( 'The items below return the IP address that is different on each server. Is the best way that you choose.', 'wp-statistics' ); ?></p> + </td> + </tr> + + <?php + foreach ( WP_Statistics::list_of_server_ip_variable() as $method ) { + ?> + <tr valign="top"> + <th scope="row" colspan="2" style="padding-top: 8px;padding-bottom: 8px;"> + <table> + <tr> + <td style="width: 10px; padding: 0px;"> + <input type="radio" name="ip_method" style="vertical-align: -3px;" value="<?php echo $method; ?>"<?php if ( $ip_method == $method ) { + echo " checked=\"checked\""; + } ?>> + </td> + <td style="width: 250px;"> <?php printf( __( 'Use %1$s', 'wp-statistics' ), $method ); ?></td> + <td><code><?php + if ( isset( $_SERVER[ $method ] ) and ! empty( $_SERVER[ $method ] ) ) { + echo $_SERVER[ $method ]; + } else { + _e( 'No available data.', 'wp-statistics' ); + } ?> + </code> + <?php + if ( isset( $_SERVER[ $method ] ) and ! empty( $_SERVER[ $method ] ) and $WP_Statistics->check_sanitize_ip( $_SERVER[ $method ] ) === false ) { + echo '   <a href="https://wp-statistics.com/sanitize-user-ip/" style="color: #d04f4f;" target="_blank" title="' . __( 'Your value required to sanitize user IP', 'wp-statistics' ) . '"><span class="dashicons dashicons-warning"></span></a>'; + } + ?> + </td> + </tr> + </table> + </th> + </tr> + <?php + } + ?> + + <!-- Custom Header --> + <tr valign="top"> + <th scope="row" colspan="2" style="padding-top: 0px;padding-bottom: 0px;"> + <table> + <tr> + <td style="width: 10px; padding: 0px;"> + <input type="radio" name="ip_method" style="vertical-align: -3px;" value="CUSTOM_HEADER" <?php if ( ! in_array( $ip_method, WP_Statistics::list_of_server_ip_variable() ) ) { + echo " checked=\"checked\""; + } ?>> + </td> + <td style="width: 250px;"> <?php echo __( 'Use Custom Header', 'wp-statistics' ); ?></td> + <td style="padding-left: 0px;"> + <input type="text" name="user_custom_header_ip_method" autocomplete="off" style="padding: 5px; width: 250px;height: 35px;" value="<?php if ( ! in_array( $ip_method, WP_Statistics::list_of_server_ip_variable() ) ) { + echo $ip_method; + } ?>"> + + <p class="description"> + <?php if ( ! in_array( $ip_method, WP_Statistics::list_of_server_ip_variable() ) ) { + echo '<code>'; + if ( isset( $_SERVER[ $ip_method ] ) and ! empty( $_SERVER[ $ip_method ] ) ) { + echo $_SERVER[ $ip_method ]; + } else { + _e( 'No available data.', 'wp-statistics' ); + } + } + echo '</code>'; + if ( ! in_array( $ip_method, WP_Statistics::list_of_server_ip_variable() ) and isset( $_SERVER[ $ip_method ] ) and ! empty( $_SERVER[ $ip_method ] ) and $WP_Statistics->check_sanitize_ip( $_SERVER[ $ip_method ] ) === false ) { + echo '   <a href="https://wp-statistics.com/sanitize-user-ip/" style="color: #d04f4f;" target="_blank" title="' . __( 'Your value required to sanitize user IP', 'wp-statistics' ) . '"><span class="dashicons dashicons-warning"></span></a>'; + } + ?></p> + <p class="description"><?php _e( 'If your server use the custom key in <code>$_SERVER</code> for getting IP. e.g. <code>HTTP_CF_CONNECTING_IP</code> in CloudFlare.', 'wp-statistics' ); ?></p> + <p class="description"> + <a href="#TB_inline?&width=850&height=600&inlineId=list-of-php-server" class="thickbox"><?php _e( 'Show all <code>$_SERVER</code> in your server.', 'wp-statistics' ); ?></a> + </p> + </td> + </tr> + </table> + </th> + </tr> + + </tbody> + </table> + +<?php submit_button( __( 'Update', 'wp-statistics' ), 'primary', 'submit' ); \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/settings/wps-settings.php b/wp-content/plugins/wp-statistics/includes/settings/wps-settings.php new file mode 100644 index 0000000..be9124f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/settings/wps-settings.php @@ -0,0 +1,96 @@ +<?php + +//Check Form Security nonce +$wps_nonce_valid = false; +if ( array_key_exists( 'wp-statistics-nonce', $_POST ) ) { + if ( wp_verify_nonce( $_POST['wp-statistics-nonce'], 'update-options' ) ) { + $wps_nonce_valid = true; + } +} + +//Check User Access To Save Setting +$wps_admin = false; +if ( current_user_can( wp_statistics_validate_capability( $WP_Statistics->get_option( 'manage_capability', 'manage_options' ) ) ) ) { + $wps_admin = true; +} + +if ( $wps_admin === false ) { + $wps_admin = 0; +} + +?> + <div class="wrap wps-wrap wp-statistics-settings"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Settings', 'wp-statistics' ) ); ?> + + <div id="poststuff"> + <div id="post-body" class="metabox-holder columns-2"> + <div class="wp-list-table widefat widefat"> + <form id="wp-statistics-settings-form" method="post"> + <?php wp_nonce_field( 'update-options', 'wp-statistics-nonce' ); ?> + <div class="wp-statistics-container"> + <ul class="tabs"> + <?php if ( $wps_admin ) { ?> + <li class="tab-link current" data-tab="general-settings"><?php _e( 'General', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="visitor-ip-settings"><?php _e( 'Visitor IP', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="privacy-settings"><?php _e( 'Privacy', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="notifications-settings"><?php _e( 'Notifications', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="overview-display-settings"><?php _e( 'Dashboard', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="access-settings"><?php _e( 'Access Levels', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="exclusions-settings"><?php _e( 'Exclusions', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="externals-settings"><?php _e( 'Externals', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="maintenance-settings"><?php _e( 'Maintenance', 'wp-statistics' ); ?></li> + <li class="tab-link" data-tab="removal-settings"><?php _e( 'Removal', 'wp-statistics' ); ?></li> + <?php } ?> + <li class="tab-link" data-tab="about"><?php _e( 'About', 'wp-statistics' ); ?></li> + </ul> + + <?php if ( $wps_admin ) { ?> + <div id="general-settings" class="tab-content current"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-general.php' ); ?> + </div> + <div id="visitor-ip-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-visitor-ip.php' ); ?> + </div> + <div id="privacy-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-privacy.php' ); ?> + </div> + <div id="notifications-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-notifications.php' ); ?> + </div> + <div id="overview-display-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-overview-display.php' ); ?> + </div> + <div id="access-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-access-level.php' ); ?> + </div> + <div id="exclusions-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-exclusions.php' ); ?> + </div> + <div id="externals-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-externals.php' ); ?> + </div> + <div id="maintenance-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-maintenance.php' ); ?> + </div> + <div id="removal-settings" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-removal.php' ); ?> + </div> + <?php } ?> + <div id="about" class="tab-content"> + <?php include( WP_Statistics::$reg['plugin-dir'] . 'includes/settings/tabs/wps-about.php' ); ?> + </div> + </div><!-- container --> + </form> + </div> + <?php include WP_Statistics::$reg['plugin-dir'] . 'includes/templates/postbox.php'; ?> + </div> + </div> + </div> + +<?php +if ( $wps_nonce_valid ) { + if ( $wps_admin ) { + $WP_Statistics->save_options(); + } + $WP_Statistics->save_user_options(); +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/templates/add-ons.php b/wp-content/plugins/wp-statistics/includes/templates/add-ons.php new file mode 100644 index 0000000..f7e83ed --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/templates/add-ons.php @@ -0,0 +1,65 @@ +<div id="poststuff" class="wp-statistics-plugins"> + <div id="post-body" class="metabox-holder"> + <div class="wp-list-table widefat widefat plugin-install"> + <div id="the-list"> + <?php foreach ( $plugins->items as $plugin ) : ?> + <div class="plugin-card"> + <?php if ( $plugin->is_feature and $plugin->featured_label ) : ?> + <div class="cover-ribbon"> + <div class="cover-ribbon-inside"><?php echo $plugin->featured_label; ?></div> + </div> + <?php endif; ?> + + <div class="plugin-card-top"> + <div class="name column-name"> + <h3> + <a target="_blank" href="<?php echo $plugin->url; ?>" class="thickbox open-plugin-details-modal"> + <?php echo $plugin->name; ?> + <img src="<?php echo $plugin->icon; ?>" class="plugin-icon" alt=""> + </a> + </h3> + </div> + + <div class="desc column-description"> + <p><?php echo wp_trim_words( $plugin->description, 15 ); ?></p> + </div> + </div> + <div class="plugin-card-bottom"> + <div class="column-downloaded"> + <strong><?php _e( 'Version:', 'wp-statistics' ); ?></strong><?php echo ' ' . + $plugin->version; ?> + <p><strong><?php _e( 'Status:', 'wp-statistics' ); ?></strong> + <?php + if ( is_plugin_active( $plugin->slug . '/' . $plugin->slug . '.php' ) ) { + _e( 'Active', 'wp-statistics' ); + } else if ( file_exists( + WP_PLUGIN_DIR . '/' . $plugin->slug . '/' . $plugin->slug . '.php' + ) ) { + _e( 'Inactive', 'wp-statistics' ); + } else { + _e( 'Not installed', 'wp-statistics' ); + } + ?> + </p> + </div> + <div class="column-compatibility"> + <?php if ( is_plugin_active( $plugin->slug . '/' . $plugin->slug . '.php' ) ) { ?> + <a href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'plugins', array( 'action' => 'deactivate', 'plugin' => $plugin->slug ) ); ?>" class="button"><?php _e( 'Deactivate Add-On', 'wp-statistics' ); ?></a> + <?php } else { ?><?php if ( file_exists( + WP_PLUGIN_DIR . '/' . $plugin->slug . '/' . $plugin->slug . '.php' + ) ) { ?> + <a href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'plugins', array( 'action' => 'activate', 'plugin' => $plugin->slug ) ); ?>" class="button"><?php _e( 'Activate Add-On', 'wp-statistics' ); ?></a> + <?php } else { ?> + <div class="column-price"> + <strong>$<?php echo $plugin->price; ?></strong> + </div> + <a target="_blank" href="<?php echo $plugin->url; ?>" class="button-primary"><?php _e( 'Buy Add-On', 'wp-statistics' ); ?></a> + <?php } ?><?php } ?> + </div> + </div> + </div> + <?php endforeach; ?> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/templates/index.php b/wp-content/plugins/wp-statistics/includes/templates/index.php new file mode 100644 index 0000000..a6ce9c8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/templates/index.php @@ -0,0 +1,2 @@ +<?php +# Silence is golden. diff --git a/wp-content/plugins/wp-statistics/includes/templates/plugins.php b/wp-content/plugins/wp-statistics/includes/templates/plugins.php new file mode 100644 index 0000000..b8ee793 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/templates/plugins.php @@ -0,0 +1,6 @@ +<div class="wrap wps-wrap"> + <?php WP_Statistics_Admin_Pages::show_page_title( __( 'Extensions for WP-Statistics', 'wp-statistics' ) ); ?> + + <p><p><?php _e( 'These extensions add functionality to your WP-Statistics.', 'wp-statistics' ); ?></p><br/></p> + <?php include( WP_Statistics::$reg['plugin-dir'] . "includes/templates/add-ons.php" ); ?> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/templates/postbox.php b/wp-content/plugins/wp-statistics/includes/templates/postbox.php new file mode 100644 index 0000000..cca62b9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/templates/postbox.php @@ -0,0 +1,41 @@ +<div id="postbox-container-1" class="postbox-container"> + <div class="meta-box-sortables"> + <div id="wps-plugins-support" class="postbox"> + <h2 class="hndle"><span><?php _e( 'Subscribe to Newsletter', 'wp-statistics' ); ?></span></h2> + + <div class="inside"> + <form + action="//veronalabs.us7.list-manage.com/subscribe/post?u=628dc1468c7c7db0ba42f0137&id=ea320ea877" + method="post" name="mc-embedded-subscribe-form" target="_blank" novalidate> + <p><?php _e( + 'Subscribe to our mailing list for get any news of the WP-Statistics', + 'wp-statistics' + ); ?></p> + <input name="EMAIL" type="email" class="ltr" value="<?php bloginfo( 'admin_email' ); ?>"> + <input type="hidden" name="b_628dc1468c7c7db0ba42f0137_ea320ea877" tabindex="-1" value=""> + <input type="submit" value="<?php _e( 'Subscribe', 'wp-statistics' ); ?>" name="subscribe" + class="button"> + </form> + </div> + </div> + </div> + + <?php + $response = wp_remote_get( 'https://wp-statistics.com/wp-json/plugin/postbox' ); + $response_code = wp_remote_retrieve_response_code( $response ); + + if ( ! is_wp_error( $response ) and $response_code == '200' ) : + $result = json_decode( $response['body'] ); + foreach ( $result->items as $item ) : ?> + <div class="meta-box-sortables"> + <div id="wps-plugins-support" class="postbox"> + <h2 class="hndle"><span><?php echo $item->title; ?></span></h2> + + <div class="inside"><?php echo $item->content; ?></div> + </div> + </div> + <?php + endforeach; + endif; + ?> +</div> \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/templates/welcome.php b/wp-content/plugins/wp-statistics/includes/templates/welcome.php new file mode 100644 index 0000000..6d55b57 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/templates/welcome.php @@ -0,0 +1,187 @@ +<div class="wrap wps-wrap about-wrap full-width-layout"> + <div class="wp-statistics-welcome"> + <h1><?php printf( __( 'Welcome to WP-Statistics %s', 'wp-statistics' ), WP_Statistics::$reg['version'] ); ?></h1> + + <p class="about-text"> + <?php printf( __( 'Thank you for updating to the latest version! We encourage you to submit a %srating and review%s over at WordPress.org. Your feedback is greatly appreciated!', 'wp-statistics' ), '<a href="https://wordpress.org/support/plugin/wp-statistics/reviews/?rate=5#new-post" target="_blank">', '</a>' ); ?> + <?php _e( 'Submit your rating:', 'wp-statistics' ); ?> + <a href="https://wordpress.org/support/plugin/wp-statistics/reviews/?rate=5#new-post" target="_blank"><img src="<?php echo plugins_url( 'wp-statistics/assets/images/stars.png' ); ?>"/></a> + </p> + + <div class="wp-badge"><?php printf( __( 'Version %s', 'wp-statistics' ), WP_Statistics::$reg['version'] ); ?></div> + + <h2 class="nav-tab-wrapper wp-clearfix"> + <a href="<?php echo add_query_arg( array( 'page' => 'wps_welcome', 'tab' => 'whats-news' ), admin_url( 'admin.php' ) ); ?>" class="nav-tab <?php echo( ( ! isset( $_GET['tab'] ) || ( isset( $_GET['tab'] ) and $_GET['tab'] == "whats-news" ) ) ? "nav-tab-active" : "" ); ?>" data-tab="whats-news"><?php _e( 'New Product', 'wp-statistics' ); ?></a> + <a href="<?php echo add_query_arg( array( 'page' => 'wps_welcome', 'tab' => 'addons' ), admin_url( 'admin.php' ) ); ?>" class="nav-tab <?php echo( ( isset( $_GET['tab'] ) and $_GET['tab'] == "addons" ) ? "nav-tab-active" : "" ); ?>" data-tab="addons"><?php _e( 'Add-Ons', 'wp-statistics' ); ?></a> + <a href="<?php echo add_query_arg( array( 'page' => 'wps_welcome', 'tab' => 'credit' ), admin_url( 'admin.php' ) ); ?>" class="nav-tab <?php echo( ( isset( $_GET['tab'] ) and $_GET['tab'] == "credit" ) ? "nav-tab-active" : "" ); ?>" data-tab="credit"><?php _e( 'Credits', 'wp-statistics' ); ?></a> + <a href="<?php echo add_query_arg( array( 'page' => 'wps_welcome', 'tab' => 'changelog' ), admin_url( 'admin.php' ) ); ?>" class="nav-tab <?php echo( ( isset( $_GET['tab'] ) and $_GET['tab'] == "changelog" ) ? "nav-tab-active" : "" ); ?>" data-tab="changelog"><?php _e( 'Changelog', 'wp-statistics' ); ?></a> + <a href="https://wp-statistics.com/donate/" class="nav-tab donate" data-tab="link" target="_blank"><?php _e( 'Donate', 'wp-statistics' ); ?></a> + </h2> + + <?php if ( ! isset( $_GET['tab'] ) || ( isset( $_GET['tab'] ) and $_GET['tab'] == "whats-news" ) ) { ?> + <div data-content="whats-news" class="tab-content current"> + <section class="center-section"> + <div class="left"> + <div class="content-padding"> + <h2><?php _e( 'WP-Telegram Notifications', 'wp-statistics' ); ?></h2> + <h4><?php echo sprintf( __( 'A new plugin from <a href="%s" target="_blank">VeronaLabs</a>.', 'wp-statistics' ), 'https://veronalabs.com' ); ?></h4> + + <a href="https://wp-telegram.com/purchase/" target="_blank"> + <img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/what-is-new/coupon-code.png' ); ?>"/> + </a> + </div> + </div> + </section> + + <section class="normal-section"> + <div class="left"> + <div class="content-padding"> + <h2><?php _e( 'Connect with customers', 'wp-statistics' ); ?></h2> + <p><?php _e( 'Your customers can easily send their message using the box placed on your website.', 'wp-statistics' ); ?></p> + </div> + </div> + + <style> + div#wp-telegram-chatbox img { + width: 270px; + display: inline-block; + } + </style> + + <div class="right text-center" id="wp-telegram-chatbox"> + <img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/what-is-new/wp-telegram-chatbox.gif' ); ?>"/> + <img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/what-is-new/wp-telegram-iphone-2.png' ); ?>"/> + </div> + </section> + + <section class="normal-section"> + <div class="right"> + <div class="content-padding"> + <h2><?php _e( 'Send messages to your channels/Groups', 'wp-statistics' ); ?></h2> + <p><?php _e( 'Simply send any message through the WordPress admin panel to your channels or groups on the telegram. No need to add a person as an admin to the channel/group to add send messages.', 'wp-statistics' ); ?></p> + </div> + </div> + + <div class="left text-center"> + <img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/what-is-new/wp-telegram-send.png' ); ?>"/> + </div> + </section> + + <section class="normal-section"> + <div class="left"> + <div class="content-padding"> + <h2><?php _e( 'Integrations & Notifications', 'wp-statistics' ); ?></h2> + <p><?php _e( 'Integrate with famous plugins such as WooCommerce, CF7, GravityForms, Quforms and EDD.', 'wp-statistics' ); ?></p> + <p><?php _e( 'For example: Receive the text of the messages sent in a form created with GravityForm on a particular channel or group. ', 'wp-statistics' ); ?></p> + </div> + </div> + + <div class="right text-center"> + <img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/what-is-new/wp-telegram-settings.png' ); ?>"/> + </div> + </section> + + <section class="normal-section"> + <div class="right"> + <div class="content-padding"> + <h2><?php _e( 'Supports multiple channels or groups', 'wp-statistics' ); ?></h2> + <p><?php _e( 'You can add as many channels/groups as you want to the panel and arrange different tasks in different channels/groups.', 'wp-statistics' ); ?></p> + <p><?php _e( 'For example, different groups for sales, marketing, support or technical team.', 'wp-statistics' ); ?></p> + </div> + </div> + + <div class="left text-center"> + <img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/what-is-new/wp-telegram-channels.png' ); ?>"/> + </div> + </section> + + <section class="center-section"> + <div class="left"> + <div class="content-padding"> + <a href="https://wp-telegram.com/purchase/" target="_blank"> + <img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/what-is-new/coupon-code.png' ); ?>"/> + </a> + </div> + </div> + </section> + + <section class="center-section"> + <div class="left"> + <div class="content-padding"> + <h3>Follow us on Social Media</h3> + </div> + + <a href="https://github.com/veronalabs" target="_blank"><img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/icon-github.png' ); ?>"/></a> + <a href="https://www.instagram.com/veronalabs/" target="_blank"><img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/icon-instagram.png' ); ?>"/></a> + <a href="https://www.linkedin.com/company/veronalabs/" target="_blank"><img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/icon-linkedin.png' ); ?>"/></a> + <a href="https://twitter.com/veronalabs" target="_blank"><img src="<?php echo plugins_url( 'wp-statistics/assets/images/welcome/icon-twitter.png' ); ?>"/></a> + </div> + </section> + </div> + <?php } ?> + + <?php if ( isset( $_GET['tab'] ) and $_GET['tab'] == "addons" ) { ?> + <div data-content="addons" class="tab-content current"> + <section class="center-section"> + <?php include( WP_Statistics::$reg['plugin-dir'] . "includes/templates/add-ons.php" ); ?> + </section> + </div> + <?php } ?> + + <?php if ( isset( $_GET['tab'] ) and $_GET['tab'] == "credit" ) { ?> + <div data-content="credit" class="tab-content current"> + <div class="about-wrap-content"> + <p class="about-description"><?php echo sprintf( __( 'WP-Statistics is created by some people and is one of the <a href="%s" target="_blank">VeronaLabs.com</a> projects.', 'wp-statistics' ), 'https://veronalabs.com' ); ?></p> + <h3 class="wp-people-group"><?php _e( 'Project Leaders', 'wp-statistics' ); ?></h3> + <ul class="wp-people-group "> + <li class="wp-person"> + <a href="https://profiles.wordpress.org/mostafas1990" class="web"><?php echo get_avatar( 'mst404@gmail.com', 62, '', '', array( 'class' => 'gravatar' ) ); ?><?php _e( 'Mostafa Soufi', 'wp-statistics' ); ?></a> + <span class="title"><?php _e( 'Original Author', 'wp-statistics' ); ?></span> + </li> + </ul> + <h3 class="wp-people-group"><?php _e( 'Other Contributors', 'wp-statistics' ); ?></h3> + <ul class="wp-people-group"> + <li class="wp-person"> + <a href="https://profiles.wordpress.org/mehrshaddarzi" class="web"><?php echo get_avatar( 'mehrshad198@gmail.com', 62, '', '', array( 'class' => 'gravatar' ) ); ?><?php _e( 'Mehrshad Darzi', 'wp-statistics' ); ?></a> + <span class="title"><?php _e( 'Core Contributor', 'wp-statistics' ); ?></span> + </li> + <li class="wp-person"> + <a href="https://profiles.wordpress.org/ghasemi71ir" class="web"><?php echo get_avatar( 'ghasemi71ir@gmail.com', 62, '', '', array( 'class' => 'gravatar' ) ); ?><?php _e( 'Mohammad Ghasemi', 'wp-statistics' ); ?></a> + <span class="title"><?php _e( 'Core Contributor', 'wp-statistics' ); ?></span> + </li> + <li class="wp-person"> + <a href="https://profiles.wordpress.org/gregross" class="web"><?php echo get_avatar( 'greg@toolstack.com', 62, '', '', array( 'class' => 'gravatar' ) ); ?><?php _e( 'Greg Ross', 'wp-statistics' ); ?></a> + <span class="title"><?php _e( 'Core Contributor', 'wp-statistics' ); ?></span> + </li> + <li class="wp-person"> + <a href="https://profiles.wordpress.org/dedidata" class="web"><?php echo get_avatar( 'dedidata.com@gmail.com', 62, '', '', array( 'class' => 'gravatar' ) ); ?><?php _e( 'Farhad Sakhaei', 'wp-statistics' ); ?></a> + <span class="title"><?php _e( 'Core Contributor', 'wp-statistics' ); ?></span> + </li> + <li class="wp-person"> + <a href="https://profiles.wordpress.org/pedromendonca" class="web"><?php echo get_avatar( 'ped.gaspar@gmail.com', 62, '', '', array( 'class' => 'gravatar' ) ); ?><?php _e( 'Pedro Mendonça', 'wp-statistics' ); ?></a> + <span class="title"><?php _e( 'Language Contributor', 'wp-statistics' ); ?></span> + </li> + </ul> + + <p class="clear"><?php echo sprintf( __( 'WP-Statistics is being developed on GitHub, if you’re interested in contributing to the plugin, please look at the <a href="%s" target="_blank">GitHub page</a>.', 'wp-statistics' ), 'https://github.com/wp-statistics/wp-statistics' ); ?></p> + <h3 class="wp-people-group"><?php _e( 'External Libraries', 'wp-statistics' ); ?></h3> + <p class="wp-credits-list"> + <a target="_blank" href="https://maxmind.com/">MaxMind</a>, + <a target="_blank" href="https://www.chartjs.org/">Chart.js</a>, + <a target="_blank" href="https://whichbrowser.net/">WhichBrowser</a>.</p> + </div> + </div> + <?php } ?> + + <?php if ( isset( $_GET['tab'] ) and $_GET['tab'] == "changelog" ) { ?> + <div data-content="changelog" class="tab-content current"> + <?php WP_Statistics_Welcome::show_change_log(); ?> + </div> + <?php } ?> + + <hr style="clear: both;"> + <div class="wps-return-to-dashboard"> + <a href="<?php echo WP_Statistics_Admin_Pages::admin_url( 'overview' ); ?>"><?php _e( 'Go to Statistics → Overview', 'wp-statistics' ); ?></a> + </div> + </div> +</div> diff --git a/wp-content/plugins/wp-statistics/includes/vendor/autoload.php b/wp-content/plugins/wp-statistics/includes/vendor/autoload.php new file mode 100644 index 0000000..f0a5be6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/autoload.php @@ -0,0 +1,7 @@ +<?php + +// autoload.php @generated by Composer + +require_once __DIR__ . '/composer/autoload_real.php'; + +return ComposerAutoloaderInite38eff48d6e6d75cf438d3ef850d45a7::getLoader(); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/ClassLoader.php b/wp-content/plugins/wp-statistics/includes/vendor/composer/ClassLoader.php new file mode 100644 index 0000000..dc02dfb --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/ClassLoader.php @@ -0,0 +1,445 @@ +<?php + +/* + * This file is part of Composer. + * + * (c) Nils Adermann <naderman@naderman.de> + * Jordi Boggiano <j.boggiano@seld.be> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier <fabien@symfony.com> + * @author Jordi Boggiano <j.boggiano@seld.be> + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath.'\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/LICENSE b/wp-content/plugins/wp-statistics/includes/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +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. + diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_classmap.php b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..71dd9c1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_classmap.php @@ -0,0 +1,9 @@ +<?php + +// autoload_classmap.php @generated by Composer + +$vendorDir = dirname(dirname(__FILE__)); +$baseDir = dirname(dirname($vendorDir)); + +return array( +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_namespaces.php b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..ff07540 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_namespaces.php @@ -0,0 +1,10 @@ +<?php + +// autoload_namespaces.php @generated by Composer + +$vendorDir = dirname(dirname(__FILE__)); +$baseDir = dirname(dirname($vendorDir)); + +return array( + 'Parsedown' => array($vendorDir . '/erusev/parsedown'), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_psr4.php b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_psr4.php new file mode 100644 index 0000000..6122d71 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_psr4.php @@ -0,0 +1,18 @@ +<?php + +// autoload_psr4.php @generated by Composer + +$vendorDir = dirname(dirname(__FILE__)); +$baseDir = dirname(dirname($vendorDir)); + +return array( + 'WhichBrowser\\' => array($vendorDir . '/whichbrowser/parser/src', $vendorDir . '/whichbrowser/parser/tests/src'), + 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), + 'MaxMind\\WebService\\' => array($vendorDir . '/maxmind/web-service-common/src/WebService'), + 'MaxMind\\Exception\\' => array($vendorDir . '/maxmind/web-service-common/src/Exception'), + 'MaxMind\\Db\\' => array($vendorDir . '/maxmind-db/reader/src/MaxMind/Db'), + 'Jaybizzle\\CrawlerDetect\\' => array($vendorDir . '/jaybizzle/crawler-detect/src'), + 'IPTools\\' => array($vendorDir . '/s1lentium/iptools/src'), + 'GeoIp2\\' => array($vendorDir . '/geoip2/geoip2/src'), + 'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_real.php b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_real.php new file mode 100644 index 0000000..ed06dfc --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_real.php @@ -0,0 +1,52 @@ +<?php + +// autoload_real.php @generated by Composer + +class ComposerAutoloaderInite38eff48d6e6d75cf438d3ef850d45a7 +{ + private static $loader; + + public static function loadClassLoader($class) + { + if ('Composer\Autoload\ClassLoader' === $class) { + require __DIR__ . '/ClassLoader.php'; + } + } + + public static function getLoader() + { + if (null !== self::$loader) { + return self::$loader; + } + + spl_autoload_register(array('ComposerAutoloaderInite38eff48d6e6d75cf438d3ef850d45a7', 'loadClassLoader'), true, true); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(); + spl_autoload_unregister(array('ComposerAutoloaderInite38eff48d6e6d75cf438d3ef850d45a7', 'loadClassLoader')); + + $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInite38eff48d6e6d75cf438d3ef850d45a7::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->register(true); + + return $loader; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_static.php b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_static.php new file mode 100644 index 0000000..2726b46 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/autoload_static.php @@ -0,0 +1,101 @@ +<?php + +// autoload_static.php @generated by Composer + +namespace Composer\Autoload; + +class ComposerStaticInite38eff48d6e6d75cf438d3ef850d45a7 +{ + public static $prefixLengthsPsr4 = array ( + 'W' => + array ( + 'WhichBrowser\\' => 13, + ), + 'P' => + array ( + 'Psr\\Cache\\' => 10, + ), + 'M' => + array ( + 'MaxMind\\WebService\\' => 19, + 'MaxMind\\Exception\\' => 18, + 'MaxMind\\Db\\' => 11, + ), + 'J' => + array ( + 'Jaybizzle\\CrawlerDetect\\' => 24, + ), + 'I' => + array ( + 'IPTools\\' => 8, + ), + 'G' => + array ( + 'GeoIp2\\' => 7, + ), + 'C' => + array ( + 'Composer\\CaBundle\\' => 18, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'WhichBrowser\\' => + array ( + 0 => __DIR__ . '/..' . '/whichbrowser/parser/src', + 1 => __DIR__ . '/..' . '/whichbrowser/parser/tests/src', + ), + 'Psr\\Cache\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/cache/src', + ), + 'MaxMind\\WebService\\' => + array ( + 0 => __DIR__ . '/..' . '/maxmind/web-service-common/src/WebService', + ), + 'MaxMind\\Exception\\' => + array ( + 0 => __DIR__ . '/..' . '/maxmind/web-service-common/src/Exception', + ), + 'MaxMind\\Db\\' => + array ( + 0 => __DIR__ . '/..' . '/maxmind-db/reader/src/MaxMind/Db', + ), + 'Jaybizzle\\CrawlerDetect\\' => + array ( + 0 => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src', + ), + 'IPTools\\' => + array ( + 0 => __DIR__ . '/..' . '/s1lentium/iptools/src', + ), + 'GeoIp2\\' => + array ( + 0 => __DIR__ . '/..' . '/geoip2/geoip2/src', + ), + 'Composer\\CaBundle\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', + ), + ); + + public static $prefixesPsr0 = array ( + 'P' => + array ( + 'Parsedown' => + array ( + 0 => __DIR__ . '/..' . '/erusev/parsedown', + ), + ), + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInite38eff48d6e6d75cf438d3ef850d45a7::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInite38eff48d6e6d75cf438d3ef850d45a7::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInite38eff48d6e6d75cf438d3ef850d45a7::$prefixesPsr0; + + }, null, ClassLoader::class); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/LICENSE b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/LICENSE new file mode 100644 index 0000000..c5b5220 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2016 Composer + +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. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/README.md b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/README.md new file mode 100644 index 0000000..04442f9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/README.md @@ -0,0 +1,85 @@ +composer/ca-bundle +================== + +Small utility library that lets you find a path to the system CA bundle, +and includes a fallback to the Mozilla CA bundle. + +Originally written as part of [composer/composer](https://github.com/composer/composer), +now extracted and made available as a stand-alone library. + + +Installation +------------ + +Install the latest version with: + +```bash +$ composer require composer/ca-bundle +``` + + +Requirements +------------ + +* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. + + +Basic usage +----------- + +# `Composer\CaBundle\CaBundle` + +- `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback +- `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file +- `CaBundle::validateCaFile($filename)`: Validates a CA file using opensl_x509_parse only if it is safe to use +- `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse() +- `CaBundle::reset()`: Resets the static caches + + +## To use with curl + +```php +$curl = curl_init("https://example.org/"); + +$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(); +if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) { + curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile); +} else { + curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile); +} + +$result = curl_exec($curl); +``` + +## To use with php streams + +```php +$opts = array( + 'http' => array( + 'method' => "GET" + ) +); + +$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(); +if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) { + $opts['ssl']['capath'] = $caPathOrFile; +} else { + $opts['ssl']['cafile'] = $caPathOrFile; +} + +$context = stream_context_create($opts); +$result = file_get_contents('https://example.com', false, $context); +``` + +## To use with Guzzle + +```php +$client = new \GuzzleHttp\Client([ + \GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath() +]); +``` + +License +------- + +composer/ca-bundle is licensed under the MIT License, see the LICENSE file for details. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/composer.json new file mode 100644 index 0000000..ca2a0d3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/composer.json @@ -0,0 +1,54 @@ +{ + "name": "composer/ca-bundle", + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "type": "library", + "license": "MIT", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Composer\\CaBundle\\": "tests" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "config": { + "platform": { + "php": "5.3.9" + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/res/cacert.pem b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/res/cacert.pem new file mode 100644 index 0000000..09b4ce1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/res/cacert.pem @@ -0,0 +1,3401 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Wed Jan 23 04:12:09 2019 GMT +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl version 1.27. +## SHA256: 18372117493b5b7ec006c31d966143fc95a9464a2b5f8d5188e23c5557b2292d +## + + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) FÅ‘tanúsítvány +======================================== +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +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 +66+KAQ== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +E-Tugra Certification Authority +=============================== +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w +DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls +ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw +NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx +QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl +cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD +DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd +hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K +CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g +ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ +BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 +E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz +rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq +jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 +dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK +kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO +XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 +VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo +a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc +dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV +KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT +Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 +8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G +C7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +QuoVadis Root CA 1 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE +PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm +PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 +Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN +ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l +g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV +7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX +9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f +iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg +t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI +hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 +GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct +Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP ++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh +3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa +wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 +O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 +FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV +hMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +QuoVadis Root CA 2 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh +ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY +NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t +oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o +MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l +V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo +L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ +sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD +6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh +lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI +hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K +pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 +x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz +dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X +U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw +mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD +zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN +JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr +O3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +QuoVadis Root CA 3 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 +IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL +Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe +6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 +I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U +VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 +5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi +Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM +dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt +rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI +hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS +t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ +TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du +DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib +Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD +hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX +0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW +dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 +PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +DigiCert Assured ID Root G2 +=========================== +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw +MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH +35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq +bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw +VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP +YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn +lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO +w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv +0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz +d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW +hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M +jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +DigiCert Assured ID Root G3 +=========================== +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD +VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb +RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs +KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF +UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy +YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy +1vUhZscv6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +DigiCert Global Root G2 +======================= +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx +MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ +kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO +3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV +BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM +UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu +5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr +F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U +WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH +QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ +iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +DigiCert Global Root G3 +======================= +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD +VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw +MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k +aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C +AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O +YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp +Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y +3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 +VOKa5Vt8sycX +-----END CERTIFICATE----- + +DigiCert Trusted Root G4 +======================== +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw +HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp +pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o +k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa +vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY +QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 +MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm +mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 +f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH +dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 +oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY +ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr +yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy +7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah +ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN +5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb +/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa +5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK +G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP +82Z+ +-----END CERTIFICATE----- + +COMODO RSA Certification Authority +================================== +-----BEGIN CERTIFICATE----- +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 +LaZRfyHBNVOFBkpdn627G190 +-----END CERTIFICATE----- + +USERTrust RSA Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +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 +Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +USERTrust ECC Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 +0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez +nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV +HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB +HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu +9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl +OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P +AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV +MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF +JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R5 +=========================== +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 +SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS +h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx +uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 +yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G3 +================================== +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y +olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t +x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy +EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K +Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur +mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 +1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp +07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo +FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE +41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu +yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq +KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 +v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA +8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b +8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r +mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq +1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI +JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV +tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= +-----END CERTIFICATE----- + +Staat der Nederlanden EV Root CA +================================ +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M +MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl +cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk +SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW +O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r +0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 +Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV +XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr +08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV +0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd +74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx +fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa +ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu +c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq +5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN +b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN +f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi +5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 +WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK +DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy +eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== +-----END CERTIFICATE----- + +IdenTrust Commercial Root CA 1 +============================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS +b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES +MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB +IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld +hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ +mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi +1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C +XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl +3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy +NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV +WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg +xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix +uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI +hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg +ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt +ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV +YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX +feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro +kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe +2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz +Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R +cGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +IdenTrust Public Sector Root CA 1 +================================= +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv +ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV +UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS +b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy +P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 +Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI +rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf +qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS +mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn +ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh +LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v +iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL +4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw +DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A +mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt +GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt +m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx +NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 +Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI +ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC +ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ +3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug +b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw +HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT +DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx +OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP +/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz +HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU +s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y +TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx +AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 +0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z +iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi +nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ +vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO +e4pIb4tF9g== +-----END CERTIFICATE----- + +Entrust Root Certification Authority - EC1 +========================================== +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn +YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw +FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy +AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef +9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h +vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 +kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +CFCA EV ROOT +============ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE +CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB +IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw +MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD +DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV +BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD +7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN +uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW +ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 +xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f +py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K +gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol +hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ +tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf +BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q +ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua +4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG +E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX +BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn +aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy +PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX +kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C +ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +Certinomis - Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAbBgNVBAMTFENlcnRpbm9taXMg +LSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMzMTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIx +EzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRD +ZXJ0aW5vbWlzIC0gUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQos +P5L2fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJflLieY6pOo +d5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQVWZUKxkd8aRi5pwP5ynap +z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00 +8B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09x +RLWtwHkziOC/7aOgFLScCbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE +6OXWk6RiwsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJwx3t +FvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SGm/lg0h9tkQPTYKbV +PZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4F2iw4lNVYC2vPsKD2NkJK/DAZNuH +i5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZngWVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGj +YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I +6tNxIqSSaHh02TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF +AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/0KGRHCwPT5iV +WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw +Pk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZSg081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAX +lCOotQqSD7J6wWAsOMwaplv/8gzjqh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJ +y29SWwNyhlCVCNSNh4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9 +Iff/ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8Vbtaw5Bng +DwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwjY/M50n92Uaf0yKHxDHYi +I0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nM +cyrDflOR1m749fPH0FFNjkulW+YZFzvWgQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVr +hkIGuUE= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GB CA +=============================== +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG +EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl +ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw +MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD +VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds +b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX +scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP +rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk +9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o +Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg +GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI +hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD +dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 +VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui +HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +SZAFIR ROOT CA2 +=============== +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG +A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV +BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ +BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD +VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q +qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK +DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE +2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ +ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi +ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC +AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 +O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 +oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul +4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 ++/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +Certum Trusted Network CA 2 +=========================== +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE +BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 +bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y +ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ +TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB +IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 +7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o +CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b +Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p +uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 +GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ +9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB +Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye +hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM +BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW +Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA +L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo +clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM +pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb +w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo +J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm +ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX +is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 +zAYspsbiDrW5viSP +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2015 +======================================================= +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT +BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 +aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx +MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg +QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV +BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw +MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv +bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh +iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ +6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd +FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr +i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F +GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 +fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu +iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI +hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ +D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM +d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y +d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn +82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb +davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F +Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt +J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa +JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q +p/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions ECC RootCA 2015 +=========================================================== +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 +aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw +MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj +IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD +VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 +Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP +dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK +Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA +GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn +dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +ISRG Root X1 +============ +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE +BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD +EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG +EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT +DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r +Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 +3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K +b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN +Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ +4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf +1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu +hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH +usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r +OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G +A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY +9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV +0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt +hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw +TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx +e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA +JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD +YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n +JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ +m+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM +================ +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT +AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw +MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD +TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf +qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr +btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL +j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou +08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw +WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT +tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ +47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC +ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa +i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o +dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s +D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ +j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT +Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW ++YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 +Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d +8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm +5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG +rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +Amazon Root CA 1 +================ +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 +MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH +FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ +gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t +dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce +VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 +DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM +CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy +8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa +2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 +xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +Amazon Root CA 2 +================ +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 +MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 +kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp +N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 +AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd +fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx +kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS +btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 +Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN +c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ +3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw +DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA +A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE +YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW +xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ +gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW +aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV +Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 +KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi +JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= +-----END CERTIFICATE----- + +Amazon Root CA 3 +================ +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB +f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr +Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 +rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc +eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +Amazon Root CA 4 +================ +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN +/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri +83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA +MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 +AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +LuxTrust Global Root 2 +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT +D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr +IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g +TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp +ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD +VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt +c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth +bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 +IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 +6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc +wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 +3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 +WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU +ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc +lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R +e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j +q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +GDCA TrustAUTH R5 ROOT +====================== +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw +BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD +DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow +YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs +AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p +OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr +pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ +9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ +xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM +R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ +D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 +oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx +9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 +H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 +6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd ++PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ +HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD +F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ +8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv +/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT +aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +TrustCor RootCert CA-1 +====================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP +MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig +U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx +MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu +YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe +VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy +dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq +jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4 +pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0 +JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h +gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw +/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j +BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5 +mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf +ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C +qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P +3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk= +-----END CERTIFICATE----- + +TrustCor RootCert CA-2 +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +TrustCor ECA-1 +============== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP +MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig +U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw +N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5 +MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y +IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR +MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23 +xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc +p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+ +fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj +YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL +f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF +AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u +/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F +hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs +J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC +jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g== +-----END CERTIFICATE----- + +SSL.com Root Certification Authority RSA +======================================== +-----BEGIN CERTIFICATE----- +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 +WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +SSL.com Root Certification Authority ECC +======================================== +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv +BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy +MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO +BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ +8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR +hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT +jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW +e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z +5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority RSA R2 +============================================== +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w +DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u +MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI +DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD +VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh +hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w +cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO +Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ +B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh +CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim +9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto +RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm +JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 ++qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp +qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 +++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx +Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G +guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz +OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 +CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq +lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR +rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 +hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX +9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority ECC +=========================================== +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy +BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw +MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx +EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM +LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy +3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O +BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe +5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ +N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm +m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +GlobalSign Root CA - R6 +======================= +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX +R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i +YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs +U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss +grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE +3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF +vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM +PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+ +azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O +WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy +CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP +0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN +b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE +AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV +HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0 +lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY +BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym +Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr +3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1 +0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T +uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK +oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t +JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GC CA +=============================== +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD +SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo +MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa +Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL +ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr +VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab +NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E +AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk +AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +GTS Root R1 +=========== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG +EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv +b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG +A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx +9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r +aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW +r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM +LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly +4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr +06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 +wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om +3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu +JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM +BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1 +d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv +fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm +ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b +gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq +4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr +tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo +pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0 +sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql +CFF1pkgl +-----END CERTIFICATE----- + +GTS Root R2 +=========== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG +EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv +b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG +A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk +k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo +7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI +m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm +dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu +ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz +cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW +Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl +aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy +5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM +BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT +vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ ++YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw +c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da +WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r +n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu +Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ +7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs +gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld +o/DUhgkC +-----END CERTIFICATE----- + +GTS Root R3 +=========== +-----BEGIN CERTIFICATE----- +MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU +Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej +QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP +0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0 +glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa +KaqW04MjyaR7YbPMAuhd +-----END CERTIFICATE----- + +GTS Root R4 +=========== +-----BEGIN CERTIFICATE----- +MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa +6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj +QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV +2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI +N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x +zPKwTdb+mciUqXWi4w== +-----END CERTIFICATE----- + +UCA Global G2 Root +================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG +EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x +NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU +cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT +oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV +8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS +h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o +LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/ +R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe +KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa +4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc +OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97 +8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo +5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A +Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9 +yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX +c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo +jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk +bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x +ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn +RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A== +-----END CERTIFICATE----- + +UCA Extended Validation Root +============================ +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG +EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u +IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G +A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs +iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF +Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu +eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR +59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH +0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR +el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv +B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth +WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS +NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS +3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL +BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM +aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4 +dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb ++7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW +F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi +GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc +GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi +djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr +dhh2n1ax +-----END CERTIFICATE----- + +Certigna Root CA +================ +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE +BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ +MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda +MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz +MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX +stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz +KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8 +JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16 +XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq +4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej +wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ +lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI +jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/ +/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy +dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h +LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl +cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt +OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP +TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq +7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3 +4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd +8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS +6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY +tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS +aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde +E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/src/CaBundle.php b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/src/CaBundle.php new file mode 100644 index 0000000..10bb87c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/ca-bundle/src/CaBundle.php @@ -0,0 +1,308 @@ +<?php + +/* + * This file is part of composer/ca-bundle. + * + * (c) Composer <https://github.com/composer> + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Composer\CaBundle; + +use Psr\Log\LoggerInterface; +use Symfony\Component\Process\PhpProcess; + +/** + * @author Chris Smith <chris@cs278.org> + * @author Jordi Boggiano <j.boggiano@seld.be> + */ +class CaBundle +{ + private static $caPath; + private static $caFileValidity = array(); + private static $useOpensslParse; + + /** + * Returns the system CA bundle path, or a path to the bundled one + * + * This method was adapted from Sslurp. + * https://github.com/EvanDotPro/Sslurp + * + * (c) Evan Coury <me@evancoury.com> + * + * For the full copyright and license information, please see below: + * + * Copyright (c) 2013, Evan Coury + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @param LoggerInterface $logger optional logger for information about which CA files were loaded + * @return string path to a CA bundle file or directory + */ + public static function getSystemCaRootBundlePath(LoggerInterface $logger = null) + { + if (self::$caPath !== null) { + return self::$caPath; + } + + // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that. + // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. + $envCertFile = getenv('SSL_CERT_FILE'); + if ($envCertFile && is_readable($envCertFile) && static::validateCaFile($envCertFile, $logger)) { + return self::$caPath = $envCertFile; + } + + // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that. + // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. + $envCertDir = getenv('SSL_CERT_DIR'); + if ($envCertDir && is_dir($envCertDir) && is_readable($envCertDir)) { + return self::$caPath = $envCertDir; + } + + $configured = ini_get('openssl.cafile'); + if ($configured && strlen($configured) > 0 && is_readable($configured) && static::validateCaFile($configured, $logger)) { + return self::$caPath = $configured; + } + + $configured = ini_get('openssl.capath'); + if ($configured && is_dir($configured) && is_readable($configured)) { + return self::$caPath = $configured; + } + + $caBundlePaths = array( + '/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package) + '/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package) + '/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package) + '/usr/local/share/certs/ca-root-nss.crt', // FreeBSD (ca_root_nss_package) + '/usr/ssl/certs/ca-bundle.crt', // Cygwin + '/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package + '/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option) + '/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat? + '/etc/ssl/cert.pem', // OpenBSD + '/usr/local/etc/ssl/cert.pem', // FreeBSD 10.x + '/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package + ); + + foreach ($caBundlePaths as $caBundle) { + if (@is_readable($caBundle) && static::validateCaFile($caBundle, $logger)) { + return self::$caPath = $caBundle; + } + } + + foreach ($caBundlePaths as $caBundle) { + $caBundle = dirname($caBundle); + if (@is_dir($caBundle) && glob($caBundle.'/*')) { + return self::$caPath = $caBundle; + } + } + + return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort + } + + /** + * Returns the path to the bundled CA file + * + * In case you don't want to trust the user or the system, you can use this directly + * + * @return string path to a CA bundle file + */ + public static function getBundledCaBundlePath() + { + $caBundleFile = __DIR__.'/../res/cacert.pem'; + + // cURL does not understand 'phar://' paths + // see https://github.com/composer/ca-bundle/issues/10 + if (0 === strpos($caBundleFile, 'phar://')) { + file_put_contents( + $tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-'), + file_get_contents($caBundleFile) + ); + + register_shutdown_function(function() use ($tempCaBundleFile) { + @unlink($tempCaBundleFile); + }); + + $caBundleFile = $tempCaBundleFile; + } + + return $caBundleFile; + } + + /** + * Validates a CA file using opensl_x509_parse only if it is safe to use + * + * @param string $filename + * @param LoggerInterface $logger optional logger for information about which CA files were loaded + * + * @return bool + */ + public static function validateCaFile($filename, LoggerInterface $logger = null) + { + static $warned = false; + + if (isset(self::$caFileValidity[$filename])) { + return self::$caFileValidity[$filename]; + } + + $contents = file_get_contents($filename); + + // assume the CA is valid if php is vulnerable to + // https://www.sektioneins.de/advisories/advisory-012013-php-openssl_x509_parse-memory-corruption-vulnerability.html + if (!static::isOpensslParseSafe()) { + if (!$warned && $logger) { + $logger->warning(sprintf( + 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', + PHP_VERSION + )); + $warned = true; + } + + $isValid = !empty($contents); + } else { + $isValid = (bool) openssl_x509_parse($contents); + } + + if ($logger) { + $logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid')); + } + + return self::$caFileValidity[$filename] = $isValid; + } + + /** + * Test if it is safe to use the PHP function openssl_x509_parse(). + * + * This checks if OpenSSL extensions is vulnerable to remote code execution + * via the exploit documented as CVE-2013-6420. + * + * @return bool + */ + public static function isOpensslParseSafe() + { + if (null !== self::$useOpensslParse) { + return self::$useOpensslParse; + } + + if (PHP_VERSION_ID >= 50600) { + return self::$useOpensslParse = true; + } + + // Vulnerable: + // PHP 5.3.0 - PHP 5.3.27 + // PHP 5.4.0 - PHP 5.4.22 + // PHP 5.5.0 - PHP 5.5.6 + if ( + (PHP_VERSION_ID < 50400 && PHP_VERSION_ID >= 50328) + || (PHP_VERSION_ID < 50500 && PHP_VERSION_ID >= 50423) + || (PHP_VERSION_ID < 50600 && PHP_VERSION_ID >= 50507) + ) { + // This version of PHP has the fix for CVE-2013-6420 applied. + return self::$useOpensslParse = true; + } + + if (defined('PHP_WINDOWS_VERSION_BUILD')) { + // Windows is probably insecure in this case. + return self::$useOpensslParse = false; + } + + $compareDistroVersionPrefix = function ($prefix, $fixedVersion) { + $regex = '{^'.preg_quote($prefix).'([0-9]+)$}'; + + if (preg_match($regex, PHP_VERSION, $m)) { + return ((int) $m[1]) >= $fixedVersion; + } + + return false; + }; + + // Hard coded list of PHP distributions with the fix backported. + if ( + $compareDistroVersionPrefix('5.3.3-7+squeeze', 18) // Debian 6 (Squeeze) + || $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) // Debian 7 (Wheezy) + || $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9) // Ubuntu 12.04 (Precise) + ) { + return self::$useOpensslParse = true; + } + + // Symfony Process component is missing so we assume it is unsafe at this point + if (!class_exists('Symfony\Component\Process\PhpProcess')) { + return self::$useOpensslParse = false; + } + + // This is where things get crazy, because distros backport security + // fixes the chances are on NIX systems the fix has been applied but + // it's not possible to verify that from the PHP version. + // + // To verify exec a new PHP process and run the issue testcase with + // known safe input that replicates the bug. + + // Based on testcase in https://github.com/php/php-src/commit/c1224573c773b6845e83505f717fbf820fc18415 + // changes in https://github.com/php/php-src/commit/76a7fd893b7d6101300cc656058704a73254d593 + $cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'; + $script = <<<'EOT' + +error_reporting(-1); +$info = openssl_x509_parse(base64_decode('%s')); +var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']); + +EOT; + $script = '<'."?php\n".sprintf($script, $cert); + + try { + $process = new PhpProcess($script); + $process->mustRun(); + } catch (\Exception $e) { + // In the case of any exceptions just accept it is not possible to + // determine the safety of openssl_x509_parse and bail out. + return self::$useOpensslParse = false; + } + + $output = preg_split('{\r?\n}', trim($process->getOutput())); + $errorOutput = trim($process->getErrorOutput()); + + if ( + count($output) === 3 + && $output[0] === sprintf('string(%d) "%s"', strlen(PHP_VERSION), PHP_VERSION) + && $output[1] === 'string(27) "stefan.esser@sektioneins.de"' + && $output[2] === 'int(-1)' + && preg_match('{openssl_x509_parse\(\): illegal (?:ASN1 data type for|length in) timestamp in - on line \d+}', $errorOutput) + ) { + // This PHP has the fix backported probably by a distro security team. + return self::$useOpensslParse = true; + } + + return self::$useOpensslParse = false; + } + + /** + * Resets the static caches + */ + public static function reset() + { + self::$caFileValidity = array(); + self::$caPath = null; + self::$useOpensslParse = null; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/composer/installed.json b/wp-content/plugins/wp-statistics/includes/vendor/composer/installed.json new file mode 100644 index 0000000..5a2c051 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/composer/installed.json @@ -0,0 +1,481 @@ +[ + { + "name": "composer/ca-bundle", + "version": "1.1.4", + "version_normalized": "1.1.4.0", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" + }, + "time": "2019-01-28T09:30:10+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ] + }, + { + "name": "erusev/parsedown", + "version": "1.7.3", + "version_normalized": "1.7.3.0", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "time": "2019-03-17T18:48:37+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ] + }, + { + "name": "geoip2/geoip2", + "version": "v2.9.0", + "version_normalized": "2.9.0.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/GeoIP2-php.git", + "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/a807fbf65212eef5d8d2db1a1b31082b53633d77", + "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77", + "shasum": "" + }, + "require": { + "maxmind-db/reader": "~1.0", + "maxmind/web-service-common": "~0.5", + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.*", + "squizlabs/php_codesniffer": "3.*" + }, + "time": "2018-04-10T15:32:59+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "GeoIp2\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "http://www.maxmind.com/" + } + ], + "description": "MaxMind GeoIP2 PHP API", + "homepage": "https://github.com/maxmind/GeoIP2-php", + "keywords": [ + "IP", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ] + }, + { + "name": "jaybizzle/crawler-detect", + "version": "v1.2.78", + "version_normalized": "1.2.78.0", + "source": { + "type": "git", + "url": "https://github.com/JayBizzle/Crawler-Detect.git", + "reference": "0f91f34d375ddd5d7034b9eaf6b74acd0b2a0ed6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/0f91f34d375ddd5d7034b9eaf6b74acd0b2a0ed6", + "reference": "0f91f34d375ddd5d7034b9eaf6b74acd0b2a0ed6", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.5|^6.5", + "satooshi/php-coveralls": "1.*" + }, + "time": "2019-01-15T21:21:27+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Jaybizzle\\CrawlerDetect\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Beech", + "email": "m@rkbee.ch", + "role": "Developer" + } + ], + "description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent", + "homepage": "https://github.com/JayBizzle/Crawler-Detect/", + "keywords": [ + "crawler", + "crawler detect", + "crawler detector", + "crawlerdetect", + "php crawler detect" + ] + }, + { + "name": "maxmind-db/reader", + "version": "v1.4.1", + "version_normalized": "1.4.1.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", + "reference": "eb83d0ee1c1f9b8a340206302136bc81ee02ae74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/eb83d0ee1c1f9b8a340206302136bc81ee02ae74", + "reference": "eb83d0ee1c1f9b8a340206302136bc81ee02ae74", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.* || 5.*", + "satooshi/php-coveralls": "1.0.*", + "squizlabs/php_codesniffer": "3.*" + }, + "suggest": { + "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" + }, + "time": "2019-01-04T19:55:56+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "MaxMind\\Db\\": "src/MaxMind/Db" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "http://www.maxmind.com/" + } + ], + "description": "MaxMind DB Reader API", + "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php", + "keywords": [ + "database", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ] + }, + { + "name": "maxmind/web-service-common", + "version": "v0.5.0", + "version_normalized": "0.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/web-service-common-php.git", + "reference": "61a9836fa3bb1743ab89752bae5005d71e78c73b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/61a9836fa3bb1743ab89752bae5005d71e78c73b", + "reference": "61a9836fa3bb1743ab89752bae5005d71e78c73b", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0.3", + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.*", + "squizlabs/php_codesniffer": "3.*" + }, + "time": "2018-02-12T22:31:54+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "MaxMind\\Exception\\": "src/Exception", + "MaxMind\\WebService\\": "src/WebService" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory Oschwald", + "email": "goschwald@maxmind.com" + } + ], + "description": "Internal MaxMind Web Service API", + "homepage": "https://github.com/maxmind/web-service-common-php" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2016-08-06T20:24:11+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ] + }, + { + "name": "s1lentium/iptools", + "version": "v1.1.1", + "version_normalized": "1.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/S1lentium/IPTools.git", + "reference": "f6f8ab6132ca7443bd7cced1681f5066d725fd5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/S1lentium/IPTools/zipball/f6f8ab6132ca7443bd7cced1681f5066d725fd5f", + "reference": "f6f8ab6132ca7443bd7cced1681f5066d725fd5f", + "shasum": "" + }, + "require": { + "ext-bcmath": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "~1.0" + }, + "time": "2018-09-19T06:15:53+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "IPTools\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Safarov Alisher", + "email": "alisher.safarov@outlook.com", + "homepage": "https://github.com/S1lentium" + } + ], + "description": "PHP Library for manipulating network addresses (IPv4 and IPv6)", + "keywords": [ + "IP", + "IP-Tools", + "cidr", + "ipv4", + "ipv6", + "network", + "subnet" + ] + }, + { + "name": "whichbrowser/parser", + "version": "v2.0.37", + "version_normalized": "2.0.37.0", + "source": { + "type": "git", + "url": "https://github.com/WhichBrowser/Parser-PHP.git", + "reference": "9c6ad8eadc23294b1c66d92876c11f13c5d4cf48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WhichBrowser/Parser-PHP/zipball/9c6ad8eadc23294b1c66d92876c11f13c5d4cf48", + "reference": "9c6ad8eadc23294b1c66d92876c11f13c5d4cf48", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/cache": "^1.0" + }, + "require-dev": { + "icomefromthenet/reverse-regex": "0.0.6.3", + "phpunit/php-code-coverage": "^2.2|^3.0", + "phpunit/phpunit": "^4.0|^5.0", + "satooshi/php-coveralls": "^1.0", + "squizlabs/php_codesniffer": "2.5.*", + "symfony/yaml": ">=2.8" + }, + "suggest": { + "cache/array-adapter": "Allows testing of the caching functionality" + }, + "time": "2018-10-02T09:26:41+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "WhichBrowser\\": [ + "src/", + "tests/src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niels Leenheer", + "email": "niels@leenheer.nl", + "role": "Developer" + } + ], + "description": "Useragent sniffing library for PHP", + "homepage": "http://whichbrowser.net", + "keywords": [ + "browser", + "sniffing", + "ua", + "useragent" + ] + } +] diff --git a/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/LICENSE.txt b/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/LICENSE.txt new file mode 100644 index 0000000..8e7c764 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/LICENSE.txt @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013-2018 Emanuil Rusev, erusev.com + +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. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/Parsedown.php b/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/Parsedown.php new file mode 100644 index 0000000..a34b44f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/Parsedown.php @@ -0,0 +1,1693 @@ +<?php + +# +# +# Parsedown +# http://parsedown.org +# +# (c) Emanuil Rusev +# http://erusev.com +# +# For the full license information, view the LICENSE file that was distributed +# with this source code. +# +# + +class Parsedown +{ + # ~ + + const version = '1.7.3'; + + # ~ + + function text($text) + { + # make sure no definitions are set + $this->DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + $markup = $this->lines($lines); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + function setSafeMode($safeMode) + { + $this->safeMode = (bool) $safeMode; + + return $this; + } + + protected $safeMode; + + protected $safeLinksWhitelist = array( + 'http://', + 'https://', + 'ftp://', + 'ftps://', + 'mailto:', + 'data:image/png;base64,', + 'data:image/gif;base64,', + 'data:image/jpeg;base64,', + 'irc:', + 'ircs:', + 'git:', + 'ssh:', + 'news:', + 'steam:', + ); + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = true; + } + + continue; + } + + if (strpos($line, "\t") !== false) + { + $parts = explode("\t", $line); + + $line = $parts[0]; + + unset($parts[0]); + + foreach ($parts as $part) + { + $shortage = 4 - mb_strlen($line, 'utf-8') % 4; + + $line .= str_repeat(' ', $shortage); + $line .= $part; + } + } + + $indent = 0; + + while (isset($line[$indent]) and $line[$indent] === ' ') + { + $indent ++; + } + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + $Blocks []= $CurrentBlock; + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) + { + $CurrentBlock['element']['text'] .= "\n".$text; + } + else + { + $Blocks []= $CurrentBlock; + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + + # ~ + + $Blocks []= $CurrentBlock; + + unset($Blocks[0]); + + # ~ + + $markup = ''; + + foreach ($Blocks as $Block) + { + if (isset($Block['hidden'])) + { + continue; + } + + $markup .= "\n"; + $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); + } + + $markup .= "\n"; + + # ~ + + return $markup; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block'.$Type.'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block'.$Type.'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['element']['text']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['text']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped or $this->safeMode) + { + return; + } + + if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') + { + $Block = array( + 'markup' => $Line['body'], + ); + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['markup'] .= "\n" . $Line['body']; + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([^`]+)?[ ]*$/', $Line['text'], $matches)) + { + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if (isset($matches[1])) + { + /** + * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes + * Every HTML element may have a class attribute specified. + * The attribute, if specified, must have a value that is a set + * of space-separated tokens representing the various classes + * that the element belongs to. + * [...] + * The space characters, for the purposes of this specification, + * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), + * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and + * U+000D CARRIAGE RETURN (CR). + */ + $language = substr($matches[1], 0, strcspn($matches[1], " \t\n\f\r")); + + $class = 'language-'.$language; + + $Element['attributes'] = array( + 'class' => $class, + ); + } + + $Block = array( + 'char' => $Line['text'][0], + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => $Element, + ), + ); + + return $Block; + } + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) + { + $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['text']['text'] .= "\n".$Line['body']; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + if (isset($Line['text'][1])) + { + $level = 1; + + while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') + { + $level ++; + } + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '# '); + + $Block = array( + 'element' => array( + 'name' => 'h' . min(6, $level), + 'text' => $text, + 'handler' => 'line', + ), + ); + + return $Block; + } + } + + # + # List + + protected function blockList($Line) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); + + if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'element' => array( + 'name' => $name, + 'handler' => 'elements', + ), + ); + + if($name === 'ol') + { + $listStart = stristr($matches[0], '.', true); + + if($listStart !== '1') + { + $Block['element']['attributes'] = array('start' => $listStart); + } + } + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $matches[2], + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['li']['text'] []= ''; + + $Block['loose'] = true; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $text, + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + return $Block; + } + + if ($Line['indent'] > 0) + { + $Block['li']['text'] []= ''; + + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + unset($Block['interrupted']); + + return $Block; + } + } + + protected function blockListComplete(array $Block) + { + if (isset($Block['loose'])) + { + foreach ($Block['element']['text'] as &$li) + { + if (end($li['text']) !== '') + { + $li['text'] []= ''; + } + } + } + + return $Block; + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => 'lines', + 'text' => (array) $matches[1], + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text'] []= ''; + + unset($Block['interrupted']); + } + + $Block['element']['text'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['text'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) + { + $Block = array( + 'element' => array( + 'name' => 'hr' + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (chop($Line['text'], $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped or $this->safeMode) + { + return; + } + + if (preg_match('/^<(\w[\w-]*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'depth' => 0, + 'markup' => $Line['text'], + ); + + $length = strlen($matches[0]); + + $remainder = substr($Line['text'], $length); + + if (trim($remainder) === '') + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + $Block['closed'] = true; + + $Block['void'] = true; + } + } + else + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + return; + } + + if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) + { + $Block['closed'] = true; + } + } + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open + { + $Block['depth'] ++; + } + + if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close + { + if ($Block['depth'] > 0) + { + $Block['depth'] --; + } + else + { + $Block['closed'] = true; + } + } + + if (isset($Block['interrupted'])) + { + $Block['markup'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['markup'] .= "\n".$Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (preg_match('/^\[(.+?)\]:[ ]*<?(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) + { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => null, + ); + + if (isset($matches[3])) + { + $Data['title'] = $matches[3]; + } + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'hidden' => true, + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') + { + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + continue; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['text']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'text' => $headerCell, + 'handler' => 'line', + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => 'text-align: '.$alignment.';', + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'handler' => 'elements', + ), + ); + + $Block['element']['text'] []= array( + 'name' => 'thead', + 'handler' => 'elements', + ); + + $Block['element']['text'] []= array( + 'name' => 'tbody', + 'handler' => 'elements', + 'text' => array(), + ); + + $Block['element']['text'][0]['text'] []= array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $HeaderElements, + ); + + return $Block; + } + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); + + foreach ($matches[0] as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => 'line', + 'text' => $cell, + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: '.$Block['alignments'][$index].';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $Elements, + ); + + $Block['element']['text'][1]['text'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + $Block = array( + 'element' => array( + 'name' => 'p', + 'text' => $Line['text'], + 'handler' => 'line', + ), + ); + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '"' => array('SpecialCharacter'), + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), + '>' => array('SpecialCharacter'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!"*_&[:<>`~\\'; + + # + # ~ + # + + public function line($text, $nonNestables=array()) + { + $markup = ''; + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strpos($text, $marker); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + # check to see if the current inline type is nestable in the current context + + if ( ! empty($nonNestables) and in_array($inlineType, $nonNestables)) + { + continue; + } + + $Inline = $this->{'inline'.$inlineType}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # cause the new element to 'inherit' our non nestables + + foreach ($nonNestables as $non_nestable) + { + $Inline['element']['nonNestables'][] = $non_nestable; + } + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $markup .= $this->unmarkedText($unmarkedText); + + # compile the inline + $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $markup .= $this->unmarkedText($unmarkedText); + + $text = substr($text, $markerPosition + 1); + } + + $markup .= $this->unmarkedText($text); + + return $markup; + } + + # + # ~ + # + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(?<!'.$marker.')\1(?!'.$marker.')/s', $Excerpt['text'], $matches)) + { + $text = $matches[2]; + $text = preg_replace("/[ ]*\n/", ' ', $text); + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = 'mailto:' . $url; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => 'line', + 'text' => $matches[1], + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'markup' => $Excerpt['text'][1], + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['text'], + ), + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => 'line', + 'nonNestables' => array('Url', 'Link'), + 'text' => null, + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches)) + { + $Element['text'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*"|\'[^\']*\'))?\s*[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['text']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or $this->safeMode or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w[\w-]*[ ]*>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^<!---?[^>-](?:-?[^-])*-->/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w[\w-]*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) + { + return array( + 'markup' => '&', + 'extent' => 1, + ); + } + + $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); + + if (isset($SpecialCharacter[$Excerpt['text'][0]])) + { + return array( + 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', + 'extent' => 1, + ); + } + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'text' => $matches[1], + 'handler' => 'line', + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) + { + $url = $matches[0][0]; + + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + if ($this->breaksEnabled) + { + $text = preg_replace('/[ ]*\n/', "<br />\n", $text); + } + else + { + $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "<br />\n", $text); + $text = str_replace(" \n", "\n", $text); + } + + return $text; + } + + # + # Handlers + # + + protected function element(array $Element) + { + if ($this->safeMode) + { + $Element = $this->sanitiseElement($Element); + } + + $markup = '<'.$Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= ' '.$name.'="'.self::escape($value).'"'; + } + } + + if (isset($Element['text'])) + { + $markup .= '>'; + + if (!isset($Element['nonNestables'])) + { + $Element['nonNestables'] = array(); + } + + if (isset($Element['handler'])) + { + $markup .= $this->{$Element['handler']}($Element['text'], $Element['nonNestables']); + } + else + { + $markup .= self::escape($Element['text'], true); + } + + $markup .= '</'.$Element['name'].'>'; + } + else + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + foreach ($Elements as $Element) + { + $markup .= "\n" . $this->element($Element); + } + + $markup .= "\n"; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $markup = $this->lines($lines); + + $trimmedMarkup = trim($markup); + + if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '<p>') + { + $markup = $trimmedMarkup; + $markup = substr($markup, 3); + + $position = strpos($markup, "</p>"); + + $markup = substr_replace($markup, '', $position, 4); + } + + return $markup; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + protected function sanitiseElement(array $Element) + { + static $goodAttribute = '/^[a-zA-Z0-9][a-zA-Z0-9-_]*+$/'; + static $safeUrlNameToAtt = array( + 'a' => 'href', + 'img' => 'src', + ); + + if (isset($safeUrlNameToAtt[$Element['name']])) + { + $Element = $this->filterUnsafeUrlInAttribute($Element, $safeUrlNameToAtt[$Element['name']]); + } + + if ( ! empty($Element['attributes'])) + { + foreach ($Element['attributes'] as $att => $val) + { + # filter out badly parsed attribute + if ( ! preg_match($goodAttribute, $att)) + { + unset($Element['attributes'][$att]); + } + # dump onevent attribute + elseif (self::striAtStart($att, 'on')) + { + unset($Element['attributes'][$att]); + } + } + } + + return $Element; + } + + protected function filterUnsafeUrlInAttribute(array $Element, $attribute) + { + foreach ($this->safeLinksWhitelist as $scheme) + { + if (self::striAtStart($Element['attributes'][$attribute], $scheme)) + { + return $Element; + } + } + + $Element['attributes'][$attribute] = str_replace(':', '%3A', $Element['attributes'][$attribute]); + + return $Element; + } + + # + # Static Methods + # + + protected static function escape($text, $allowQuotes = false) + { + return htmlspecialchars($text, $allowQuotes ? ENT_NOQUOTES : ENT_QUOTES, 'UTF-8'); + } + + protected static function striAtStart($string, $needle) + { + $len = strlen($needle); + + if ($len > strlen($string)) + { + return false; + } + else + { + return strtolower(substr($string, 0, $len)) === strtolower($needle); + } + } + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'kbd', 'mark', + 'u', 'xm', 'sub', 'nobr', + 'sup', 'ruby', + 'var', 'span', + 'wbr', 'time', + ); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/README.md b/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/README.md new file mode 100644 index 0000000..b5d9ed2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/README.md @@ -0,0 +1,86 @@ +> I also make [Caret](https://caret.io?ref=parsedown) - a Markdown editor for Mac and PC. + +## Parsedown + +[![Build Status](https://img.shields.io/travis/erusev/parsedown/master.svg?style=flat-square)](https://travis-ci.org/erusev/parsedown) +<!--[![Total Downloads](http://img.shields.io/packagist/dt/erusev/parsedown.svg?style=flat-square)](https://packagist.org/packages/erusev/parsedown)--> + +Better Markdown Parser in PHP + +[Demo](http://parsedown.org/demo) | +[Benchmarks](http://parsedown.org/speed) | +[Tests](http://parsedown.org/tests/) | +[Documentation](https://github.com/erusev/parsedown/wiki/) + +### Features + +* One File +* No Dependencies +* Super Fast +* Extensible +* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown) +* Tested in 5.3 to 7.1 and in HHVM +* [Markdown Extra extension](https://github.com/erusev/parsedown-extra) + +### Installation + +Include `Parsedown.php` or install [the composer package](https://packagist.org/packages/erusev/parsedown). + +### Example + +``` php +$Parsedown = new Parsedown(); + +echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p> +``` + +More examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [this video tutorial](http://youtu.be/wYZBY8DEikI). + +### Security + +Parsedown is capable of escaping user-input within the HTML that it generates. Additionally Parsedown will apply sanitisation to additional scripting vectors (such as scripting link destinations) that are introduced by the markdown syntax itself. + +To tell Parsedown that it is processing untrusted user-input, use the following: +```php +$parsedown = new Parsedown; +$parsedown->setSafeMode(true); +``` + +If instead, you wish to allow HTML within untrusted user-input, but still want output to be free from XSS it is recommended that you make use of a HTML sanitiser that allows HTML tags to be whitelisted, like [HTML Purifier](http://htmlpurifier.org/). + +In both cases you should strongly consider employing defence-in-depth measures, like [deploying a Content-Security-Policy](https://scotthelme.co.uk/content-security-policy-an-introduction/) (a browser security feature) so that your page is likely to be safe even if an attacker finds a vulnerability in one of the first lines of defence above. + +#### Security of Parsedown Extensions + +Safe mode does not necessarily yield safe results when using extensions to Parsedown. Extensions should be evaluated on their own to determine their specific safety against XSS. + +### Escaping HTML +> âš ï¸Â Â **WARNING:** This method isn't safe from XSS! + +If you wish to escape HTML **in trusted input**, you can use the following: +```php +$parsedown = new Parsedown; +$parsedown->setMarkupEscaped(true); +``` + +Beware that this still allows users to insert unsafe scripting vectors, such as links like `[xss](javascript:alert%281%29)`. + +### Questions + +**How does Parsedown work?** + +It tries to read Markdown like a human. First, it looks at the lines. It’s interested in how the lines start. This helps it recognise blocks. It knows, for example, that if a line starts with a `-` then perhaps it belongs to a list. Once it recognises the blocks, it continues to the content. As it reads, it watches out for special characters. This helps it recognise inline elements (or inlines). + +We call this approach "line based". We believe that Parsedown is the first Markdown parser to use it. Since the release of Parsedown, other developers have used the same approach to develop other Markdown parsers in PHP and in other languages. + +**Is it compliant with CommonMark?** + +It passes most of the CommonMark tests. Most of the tests that don't pass deal with cases that are quite uncommon. Still, as CommonMark matures, compliance should improve. + +**Who uses it?** + +[Laravel Framework](https://laravel.com/), [Bolt CMS](http://bolt.cm/), [Grav CMS](http://getgrav.org/), [Herbie CMS](http://www.getherbie.org/), [Kirby CMS](http://getkirby.com/), [October CMS](http://octobercms.com/), [Pico CMS](http://picocms.org), [Statamic CMS](http://www.statamic.com/), [phpDocumentor](http://www.phpdoc.org/), [RaspberryPi.org](http://www.raspberrypi.org/), [Symfony demo](https://github.com/symfony/symfony-demo) and [more](https://packagist.org/packages/erusev/parsedown/dependents). + +**How can I help?** + +Use it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2). diff --git a/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/composer.json new file mode 100644 index 0000000..f8b40f8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/erusev/parsedown/composer.json @@ -0,0 +1,33 @@ +{ + "name": "erusev/parsedown", + "description": "Parser for Markdown.", + "keywords": ["markdown", "parser"], + "homepage": "http://parsedown.org", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "require": { + "php": ">=5.3.0", + "ext-mbstring": "*" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "autoload": { + "psr-0": {"Parsedown": ""} + }, + "autoload-dev": { + "psr-0": { + "TestParsedown": "test/", + "ParsedownTest": "test/", + "CommonMarkTest": "test/", + "CommonMarkTestWeak": "test/" + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/.gitmodules b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/.gitmodules new file mode 100644 index 0000000..820339f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/.gitmodules @@ -0,0 +1,3 @@ +[submodule "maxmind-db"] + path = maxmind-db + url = git://github.com/maxmind/MaxMind-DB.git diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/.php_cs b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/.php_cs new file mode 100644 index 0000000..7d17848 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/.php_cs @@ -0,0 +1,35 @@ +<?php + +return PhpCsFixer\Config::create() + ->setRiskyAllowed(true) + ->setRules([ + '@Symfony' => true, + '@Symfony:risky' => true, + 'array_syntax' => ['syntax' => 'short'], + 'combine_consecutive_unsets' => true, + 'concat_space' => [ 'spacing' => 'one'], + 'heredoc_to_nowdoc' => true, + 'increment_style' => false, + 'list_syntax' => ['syntax' => 'long'], + 'no_extra_consecutive_blank_lines' => ['break', 'continue', 'extra', 'return', 'throw', 'use', 'parenthesis_brace_block', 'square_brace_block', 'curly_brace_block'], + 'no_short_echo_tag' => true, + 'no_unreachable_default_argument_value' => true, + 'no_useless_else' => true, + 'no_useless_return' => true, + 'ordered_imports' => true, + 'pre_increment' => false, + 'php_unit_strict' => true, + 'php_unit_test_class_requires_covers' => true, + 'phpdoc_add_missing_param_annotation' => true, + 'phpdoc_no_alias_tag' => false, + 'phpdoc_order' => true, + 'semicolon_after_instruction' => true, + 'strict_comparison' => true, + 'strict_param' => true, + 'yoda_style' => false, + ]) + ->setFinder( + PhpCsFixer\Finder::create() + ->in(__DIR__) + ) +; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/CHANGELOG.md b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/CHANGELOG.md new file mode 100644 index 0000000..ef8667b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/CHANGELOG.md @@ -0,0 +1,262 @@ +CHANGELOG +========= + +2.9.0 (2018-04-10) +------------------ + +* Refer to account IDs using the terminology "account" rather than "user". + +2.8.0 (2018-01-18) +------------------ + +* The `isInEuropeanUnion` property was added to `GeoIp2\Record\Country` + and `GeoIp2\Record\RepresentedCountry`. This property is `true` if the + country is a member state of the European Union. + +2.7.0 (2017-10-27) +------------------ + +* The following new anonymizer properties were added to `GeoIp2\Record\Traits` + for use with GeoIP2 Precision Insights: `isAnonymous`, `isAnonymousVpn`, + `isHostingProvider`, `isPublicProxy`, and `isTorExitNode`. + +2.6.0 (2017-07-10) +----------------- + +* Code clean-up and tidying. +* Set minimum required PHP version to 5.4 in `composer.json`. Previously, + 5.3 would work but was not tested. Now 5.4 is hard minimum version. + +2.5.0 (2017-05-08) +------------------ + +* Support for PHP 5.3 was dropped. +* Added support for GeoLite2 ASN database. + +2.4.5 (2017-01-31) +------------------ + +* Additional error checking on the data returned from `MaxMind\Db\Reader` + was added to help detect corrupt databases. GitHub #83. + +2.4.4 (2016-10-11) +------------------ + +* `isset()` on `mostSpecificSubdivision` attribute now returns the + correct value. Reported by Juan Francisco Giordana. GitHub #81. + +2.4.3 (2016-10-11) +------------------ + +* `isset()` on `name` attribute now returns the correct value. Reported by + Juan Francisco Giordana. GitHub #79. + +2.4.2 (2016-08-17) +------------------ + +* Updated documentation to clarify what the accuracy radius refers to. +* Upgraded `maxmind/web-service-common` to 0.3.0. This version uses + `composer/ca-bundle` rather than our own CA bundle. GitHub #75. +* Improved PHP documentation generation. + +2.4.1 (2016-06-10) +------------------ + +* Corrected type annotations in documentation. GitHub #66. +* Updated documentation to reflect that the accuracy radius is now included + in City. +* Upgraded web service client, which supports setting a proxy. GitHub #59. + +2.4.0 (2016-04-15) +------------------ + +* Added support for the GeoIP2 Enterprise database. + +2.3.3 (2015-09-24) +------------------ + +* Corrected case on `JsonSerializable` interface. Reported by Axel Etcheverry. + GitHub #56. + +2.3.2 (2015-09-23) +------------------ + +* `JsonSerializable` compatibility interface was moved to `GeoIp2\Compat` + rather than the global namespace to prevent autoloading issues. Reported by + Tomas Buteler. GitHub #54. +* Missing documentation for the `$postal` property was added to the + `GeoIp2\Model\City` class. Fix by Roy Sindre Norangshol. GitHub #51. +* In the Phar distribution, source files for this module no longer have their + documentation stripped, allowing IDE introspection to work properly. + Reported by Dominic Black. GitHub #52. + +2.3.1 (2015-06-30) +------------------ + +* Updated `maxmind/web-service-common` to version with fixes for PHP 5.3 and + 5.4. + +2.3.0 (2015-06-29) +------------------ + +* Support for demographics fields `averageIncome` and `populationDensity` in + the `Location` record, returned by the Insights endpoint. +* The `isAnonymousProxy` and `isSatelliteProvider` properties on + `GeoIP2\Record\Traits` have been deprecated. Please use our [GeoIP2 + Anonymous IP database](https://www.maxmind.com/en/geoip2-anonymous-ip-database) + to determine whether an IP address is used by an anonymizing service. + +2.2.0-beta1 (2015-06-09) +------------------------ + +* Typo fix in documentation. + +2.2.0-alpha2 (2015-06-01) +------------------------- + +* `maxmind-ws/web-service-common` was renamed to `maxmind/web-service-common`. + +2.2.0-alpha1 (2015-05-22) +------------------------- + +* The library no longer uses Guzzle and instead uses curl directly. +* Support for `timeout` and `connectTimout` were added to the `$options` array + passed to the `GeoIp2\WebService\Client` constructor. Pull request by Will + Bradley. GitHub #36. + +2.1.1 (2014-12-03) +------------------ + +* The 2.1.0 Phar builds included a shebang line, causing issues when loading + it as a library. This has been corrected. GitHub #33. + +2.1.0 (2014-10-29) +------------------ + +* Update ApiGen dependency to version that isn't broken on case sensitive + file systems. +* Added support for the GeoIP2 Anonymous IP database. The + `GeoIP2\Database\Reader` class now has an `anonymousIp` method which returns + a `GeoIP2\Model\AnonymousIp` object. +* Boolean attributes like those in the `GeoIP2\Record\Traits` class now return + `false` instead of `null` when they were not true. + +2.0.0 (2014-09-22) +------------------ + +* First production release. + +0.9.0 (2014-09-15) +------------------ + +* IMPORTANT: The deprecated `omni()` and `cityIspOrg()` methods have been + removed from `GeoIp2\WebService\Client`. + +0.8.1 (2014-09-12) +------------------ + +* The check added to the `GeoIP2\Database\Reader` lookup methods in 0.8.0 did + not work with the GeoIP2 City Database Subset by Continent with World + Countries. This has been fixed. Fixes GitHub issue #23. + +0.8.0 (2014-09-10) +------------------ + +* The `GeoIp2\Database\Reader` lookup methods (e.g., `city()`, `isp()`) now + throw a `BadMethodCallException` if they are used with a database that + does not match the method. In particular, doing a `city()` lookup on a + GeoIP2 Country database will result in an exception, and vice versa. +* A `metadata()` method has been added to the `GeoIP2\Database\Reader` class. + This returns a `MaxMind\Db\Reader\Metadata` class with information about the + database. +* The name attribute was missing from the RepresentedCountry class. + +0.7.0 (2014-07-22) +------------------ + +* The web service client API has been updated for the v2.1 release of the web + service. In particular, the `cityIspOrg` and `omni` methods on + `GeoIp2\WebService\Client` should be considered deprecated. The `city` + method now provides all of the data formerly provided by `cityIspOrg`, and + the `omni` method has been replaced by the `insights` method. +* Support was added for GeoIP2 Connection Type, Domain and ISP databases. + + +0.6.3 (2014-05-12) +------------------ + +* With the previous Phar builds, some users received `phar error: invalid url + or non-existent phar` errors. The correct alias is now used for the Phar, + and this should no longer be an issue. + +0.6.2 (2014-05-08) +------------------ + +* The Phar build was broken with Guzzle 3.9.0+. This has been fixed. + +0.6.1 (2014-05-01) +------------------ + +* This API now officially supports HHVM. +* The `maxmind-db/reader` dependency was updated to a version that does not + require BC Math. +* The Composer compatibility autoload rules are now targeted more narrowly. +* A `box.json` file is included to build a Phar package. + +0.6.0 (2014-02-19) +------------------ + +* This API is now licensed under the Apache License, Version 2.0. +* Model and record classes now implement `JsonSerializable`. +* `isset` now works with model and record classes. + +0.5.0 (2013-10-21) +------------------ + +* Renamed $languages constructor parameters to $locales for both the Client + and Reader classes. +* Documentation and code clean-up (Ben Morel). +* Added the interface `GeoIp2\ProviderInterface`, which is implemented by both + `\GeoIp2\Database\Reader` and `\GeoIp2\WebService\Client`. + +0.4.0 (2013-07-16) +------------------ + +* This is the first release with the GeoIP2 database reader. Please see the + `README.md` file and the `\GeoIp2\Database\Reader` class. +* The general exception classes were replaced with specific exception classes + representing particular types of errors, such as an authentication error. + +0.3.0 (2013-07-12) +------------------ + +* In namespaces and class names, "GeoIP2" was renamed to "GeoIp2" to improve + consistency. + +0.2.1 (2013-06-10) +------------------ + +* First official beta release. +* Documentation updates and corrections. + +0.2.0 (2013-05-29) +------------------ + +* `GenericException` was renamed to `GeoIP2Exception`. +* We now support more languages. The new languages are de, es, fr, and pt-BR. +* The REST API now returns a record with data about your account. There is + a new `GeoIP\Records\MaxMind` class for this data. +* The `continentCode` attribute on `Continent` was renamed to `code`. +* Documentation updates. + +0.1.1 (2013-05-14) +------------------ + +* Updated Guzzle version requirement. +* Fixed Composer example in README.md. + + +0.1.0 (2013-05-13) +------------------ + +* Initial release. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/LICENSE b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/README.md b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/README.md new file mode 100644 index 0000000..03b269b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/README.md @@ -0,0 +1,401 @@ +# GeoIP2 PHP API # + +## Description ## + +This package provides an API for the GeoIP2 +[web services](http://dev.maxmind.com/geoip/geoip2/web-services) and +[databases](http://dev.maxmind.com/geoip/geoip2/downloadable). The API also +works with the free +[GeoLite2 databases](http://dev.maxmind.com/geoip/geoip2/geolite2/). + +## Install via Composer ## + +We recommend installing this package with [Composer](http://getcomposer.org/). + +### Download Composer ### + +To download Composer, run in the root directory of your project: + +```bash +curl -sS https://getcomposer.org/installer | php +``` + +You should now have the file `composer.phar` in your project directory. + +### Install Dependencies ### + +Run in your project root: + +``` +php composer.phar require geoip2/geoip2:~2.0 +``` + +You should now have the files `composer.json` and `composer.lock` as well as +the directory `vendor` in your project directory. If you use a version control +system, `composer.json` should be added to it. + +### Require Autoloader ### + +After installing the dependencies, you need to require the Composer autoloader +from your code: + +```php +require 'vendor/autoload.php'; +``` + +## Install via Phar ## + +Although we strongly recommend using Composer, we also provide a +[phar archive](http://php.net/manual/en/book.phar.php) containing most of the +dependencies for GeoIP2. Our latest phar archive is available on +[our releases page](https://github.com/maxmind/GeoIP2-php/releases). + +### Install Dependencies ### + +In order to use the phar archive, you must have the PHP +[Phar extension](http://php.net/manual/en/book.phar.php) installed and +enabled. + +If you will be making web service requests, you must have the PHP +[cURL extension](http://php.net/manual/en/book.curl.php) +installed to use this archive. For Debian based distributions, this can +typically be found in the the `php-curl` package. For other operating +systems, please consult the relevant documentation. After installing the +extension you may need to restart your web server. + +If you are missing this extension, you will see errors like the following: + +``` +PHP Fatal error: Uncaught Error: Call to undefined function MaxMind\WebService\curl_version() +``` + +### Require Package ### + +To use the archive, just require it from your script: + +```php +require 'geoip2.phar'; +``` + +## Optional C Extension ## + +The [MaxMind DB API](https://github.com/maxmind/MaxMind-DB-Reader-php) +includes an optional C extension that you may install to dramatically increase +the performance of lookups in GeoIP2 or GeoLite2 databases. To install, please +follow the instructions included with that API. + +The extension has no effect on web-service lookups. + +## IP Geolocation Usage ## + +IP geolocation is inherently imprecise. Locations are often near the center of +the population. Any location provided by a GeoIP2 database or web service +should not be used to identify a particular address or household. + +## Database Reader ## + +### Usage ### + +To use this API, you must create a new `\GeoIp2\Database\Reader` object with +the path to the database file as the first argument to the constructor. You +may then call the method corresponding to the database you are using. + +If the lookup succeeds, the method call will return a model class for the +record in the database. This model in turn contains multiple container +classes for the different parts of the data such as the city in which the +IP address is located. + +If the record is not found, a `\GeoIp2\Exception\AddressNotFoundException` +is thrown. If the database is invalid or corrupt, a +`\MaxMind\Db\InvalidDatabaseException` will be thrown. + +See the API documentation for more details. + +### City Example ### + +```php +<?php +require_once 'vendor/autoload.php'; +use GeoIp2\Database\Reader; + +// This creates the Reader object, which should be reused across +// lookups. +$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb'); + +// Replace "city" with the appropriate method for your database, e.g., +// "country". +$record = $reader->city('128.101.101.101'); + +print($record->country->isoCode . "\n"); // 'US' +print($record->country->name . "\n"); // 'United States' +print($record->country->names['zh-CN'] . "\n"); // '美国' + +print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota' +print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN' + +print($record->city->name . "\n"); // 'Minneapolis' + +print($record->postal->code . "\n"); // '55455' + +print($record->location->latitude . "\n"); // 44.9733 +print($record->location->longitude . "\n"); // -93.2323 + +``` + +### Anonymous IP Example ### + +```php +<?php +require_once 'vendor/autoload.php'; +use GeoIp2\Database\Reader; + +// This creates the Reader object, which should be reused across +// lookups. +$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Anonymous-IP.mmdb'); + +$record = $reader->anonymousIp('128.101.101.101'); + +if ($record->isAnonymous) { print "anon\n"; } +print($record->ipAddress . "\n"); // '128.101.101.101' + +``` + +### Connection-Type Example ### + +```php +<?php +require_once 'vendor/autoload.php'; +use GeoIp2\Database\Reader; + +// This creates the Reader object, which should be reused across +// lookups. +$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Connection-Type.mmdb'); + +$record = $reader->connectionType('128.101.101.101'); + +print($record->connectionType . "\n"); // 'Corporate' +print($record->ipAddress . "\n"); // '128.101.101.101' + +``` + +### Domain Example ### + +```php +<?php +require_once 'vendor/autoload.php'; +use GeoIp2\Database\Reader; + +// This creates the Reader object, which should be reused across +// lookups. +$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Domain.mmdb'); + +$record = $reader->domain('128.101.101.101'); + +print($record->domain . "\n"); // 'umn.edu' +print($record->ipAddress . "\n"); // '128.101.101.101' + +``` + +### Enterprise Example ### + +```php +<?php +require_once 'vendor/autoload.php'; +use GeoIp2\Database\Reader; + +// This creates the Reader object, which should be reused across +// lookups. +$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Enterprise.mmdb'); + +// Use the ->enterprise method to do a lookup in the Enterprise database +$record = $reader->enterprise('128.101.101.101'); + +print($record->country->confidence . "\n"); // 99 +print($record->country->isoCode . "\n"); // 'US' +print($record->country->name . "\n"); // 'United States' +print($record->country->names['zh-CN'] . "\n"); // '美国' + +print($record->mostSpecificSubdivision->confidence . "\n"); // 77 +print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota' +print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN' + +print($record->city->confidence . "\n"); // 60 +print($record->city->name . "\n"); // 'Minneapolis' + +print($record->postal->code . "\n"); // '55455' + +print($record->location->accuracyRadius . "\n"); // 50 +print($record->location->latitude . "\n"); // 44.9733 +print($record->location->longitude . "\n"); // -93.2323 + +``` + +### ISP Example ### + +```php +<?php +require_once 'vendor/autoload.php'; +use GeoIp2\Database\Reader; + +// This creates the Reader object, which should be reused across +// lookups. +$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-ISP.mmdb'); + +$record = $reader->isp('128.101.101.101'); + +print($record->autonomousSystemNumber . "\n"); // 217 +print($record->autonomousSystemOrganization . "\n"); // 'University of Minnesota' +print($record->isp . "\n"); // 'University of Minnesota' +print($record->organization . "\n"); // 'University of Minnesota' + +print($record->ipAddress . "\n"); // '128.101.101.101' + +``` + +## Web Service Client ## + +### Usage ### + +To use this API, you must create a new `\GeoIp2\WebService\Client` +object with your `$accountId` and `$licenseKey`, then you call the method +corresponding to a specific end point, passing it the IP address you want to +look up. + +If the request succeeds, the method call will return a model class for the end +point you called. This model in turn contains multiple record classes, each of +which represents part of the data returned by the web service. + +If there is an error, a structured exception is thrown. + +See the API documentation for more details. + +### Example ### + +```php +<?php +require_once 'vendor/autoload.php'; +use GeoIp2\WebService\Client; + +// This creates a Client object that can be reused across requests. +// Replace "42" with your account ID and "license_key" with your license +// key. +$client = new Client(42, 'abcdef123456'); + +// Replace "city" with the method corresponding to the web service that +// you are using, e.g., "country", "insights". +$record = $client->city('128.101.101.101'); + +print($record->country->isoCode . "\n"); // 'US' +print($record->country->name . "\n"); // 'United States' +print($record->country->names['zh-CN'] . "\n"); // '美国' + +print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota' +print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN' + +print($record->city->name . "\n"); // 'Minneapolis' + +print($record->postal->code . "\n"); // '55455' + +print($record->location->latitude . "\n"); // 44.9733 +print($record->location->longitude . "\n"); // -93.2323 + +``` + +## Values to use for Database or Array Keys ## + +**We strongly discourage you from using a value from any `names` property as +a key in a database or array.** + +These names may change between releases. Instead we recommend using one of the +following: + +* `GeoIp2\Record\City` - `$city->geonameId` +* `GeoIp2\Record\Continent` - `$continent->code` or `$continent->geonameId` +* `GeoIp2\Record\Country` and `GeoIp2\Record\RepresentedCountry` - + `$country->isoCode` or `$country->geonameId` +* `GeoIp2\Record\Subdivision` - `$subdivision->isoCode` or `$subdivision->geonameId` + +### What data is returned? ### + +While many of the end points return the same basic records, the attributes +which can be populated vary between end points. In addition, while an end +point may offer a particular piece of data, MaxMind does not always have every +piece of data for any given IP address. + +Because of these factors, it is possible for any end point to return a record +where some or all of the attributes are unpopulated. + +See the +[GeoIP2 Precision web service docs](http://dev.maxmind.com/geoip/geoip2/web-services) +for details on what data each end point may return. + +The only piece of data which is always returned is the `ipAddress` +attribute in the `GeoIp2\Record\Traits` record. + +## Integration with GeoNames ## + +[GeoNames](http://www.geonames.org/) offers web services and downloadable +databases with data on geographical features around the world, including +populated places. They offer both free and paid premium data. Each +feature is unique identified by a `geonameId`, which is an integer. + +Many of the records returned by the GeoIP2 web services and databases +include a `geonameId` property. This is the ID of a geographical feature +(city, region, country, etc.) in the GeoNames database. + +Some of the data that MaxMind provides is also sourced from GeoNames. We +source things like place names, ISO codes, and other similar data from +the GeoNames premium data set. + +## Reporting data problems ## + +If the problem you find is that an IP address is incorrectly mapped, +please +[submit your correction to MaxMind](http://www.maxmind.com/en/correction). + +If you find some other sort of mistake, like an incorrect spelling, +please check the [GeoNames site](http://www.geonames.org/) first. Once +you've searched for a place and found it on the GeoNames map view, there +are a number of links you can use to correct data ("move", "edit", +"alternate names", etc.). Once the correction is part of the GeoNames +data set, it will be automatically incorporated into future MaxMind +releases. + +If you are a paying MaxMind customer and you're not sure where to submit +a correction, please +[contact MaxMind support](http://www.maxmind.com/en/support) for help. + +## Other Support ## + +Please report all issues with this code using the +[GitHub issue tracker](https://github.com/maxmind/GeoIP2-php/issues). + +If you are having an issue with a MaxMind service that is not specific +to the client API, please see +[our support page](http://www.maxmind.com/en/support). + +## Requirements ## + +This library requires PHP 5.4 or greater. This library works and is tested +with HHVM. + +This library also relies on the [MaxMind DB Reader](https://github.com/maxmind/MaxMind-DB-Reader-php). + +## Contributing ## + +Patches and pull requests are encouraged. All code should follow the PSR-2 +style guidelines. Please include unit tests whenever possible. You may obtain +the test data for the maxmind-db folder by running `git submodule update +--init --recursive` or adding `--recursive` to your initial clone, or from +https://github.com/maxmind/MaxMind-DB + +## Versioning ## + +The GeoIP2 PHP API uses [Semantic Versioning](http://semver.org/). + +## Copyright and License ## + +This software is Copyright (c) 2013-2018 by MaxMind, Inc. + +This is free software, licensed under the Apache License, Version 2.0. + diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/composer.json new file mode 100644 index 0000000..53ae0b8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/composer.json @@ -0,0 +1,30 @@ +{ + "name": "geoip2/geoip2", + "description": "MaxMind GeoIP2 PHP API", + "keywords": ["geoip", "geoip2", "geolocation", "ip", "maxmind"], + "homepage": "https://github.com/maxmind/GeoIP2-php", + "type": "library", + "license": "Apache-2.0", + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "http://www.maxmind.com/" + } + ], + "require": { + "maxmind-db/reader": "~1.0", + "maxmind/web-service-common": "~0.5", + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.*", + "squizlabs/php_codesniffer": "3.*" + }, + "autoload": { + "psr-4": { + "GeoIp2\\": "src" + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Database/Reader.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Database/Reader.php new file mode 100644 index 0000000..84cf2be --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Database/Reader.php @@ -0,0 +1,283 @@ +<?php + +namespace GeoIp2\Database; + +use GeoIp2\Exception\AddressNotFoundException; +use GeoIp2\ProviderInterface; +use MaxMind\Db\Reader as DbReader; +use MaxMind\Db\Reader\InvalidDatabaseException; + +/** + * Instances of this class provide a reader for the GeoIP2 database format. + * IP addresses can be looked up using the database specific methods. + * + * ## Usage ## + * + * The basic API for this class is the same for every database. First, you + * create a reader object, specifying a file name. You then call the method + * corresponding to the specific database, passing it the IP address you want + * to look up. + * + * If the request succeeds, the method call will return a model class for + * the method you called. This model in turn contains multiple record classes, + * each of which represents part of the data returned by the database. If + * the database does not contain the requested information, the attributes + * on the record class will have a `null` value. + * + * If the address is not in the database, an + * {@link \GeoIp2\Exception\AddressNotFoundException} exception will be + * thrown. If an invalid IP address is passed to one of the methods, a + * SPL {@link \InvalidArgumentException} will be thrown. If the database is + * corrupt or invalid, a {@link \MaxMind\Db\Reader\InvalidDatabaseException} + * will be thrown. + */ +class Reader implements ProviderInterface +{ + private $dbReader; + private $locales; + + /** + * Constructor. + * + * @param string $filename the path to the GeoIP2 database file + * @param array $locales list of locale codes to use in name property + * from most preferred to least preferred + * + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + */ + public function __construct( + $filename, + $locales = ['en'] + ) { + $this->dbReader = new DbReader($filename); + $this->locales = $locales; + } + + /** + * This method returns a GeoIP2 City model. + * + * @param string $ipAddress an IPv4 or IPv6 address as a string + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address is + * not in the database + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + * + * @return \GeoIp2\Model\City + */ + public function city($ipAddress) + { + return $this->modelFor('City', 'City', $ipAddress); + } + + /** + * This method returns a GeoIP2 Country model. + * + * @param string $ipAddress an IPv4 or IPv6 address as a string + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address is + * not in the database + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + * + * @return \GeoIp2\Model\Country + */ + public function country($ipAddress) + { + return $this->modelFor('Country', 'Country', $ipAddress); + } + + /** + * This method returns a GeoIP2 Anonymous IP model. + * + * @param string $ipAddress an IPv4 or IPv6 address as a string + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address is + * not in the database + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + * + * @return \GeoIp2\Model\AnonymousIp + */ + public function anonymousIp($ipAddress) + { + return $this->flatModelFor( + 'AnonymousIp', + 'GeoIP2-Anonymous-IP', + $ipAddress + ); + } + + /** + * This method returns a GeoLite2 ASN model. + * + * @param string $ipAddress an IPv4 or IPv6 address as a string + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address is + * not in the database + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + * + * @return \GeoIp2\Model\Asn + */ + public function asn($ipAddress) + { + return $this->flatModelFor( + 'Asn', + 'GeoLite2-ASN', + $ipAddress + ); + } + + /** + * This method returns a GeoIP2 Connection Type model. + * + * @param string $ipAddress an IPv4 or IPv6 address as a string + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address is + * not in the database + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + * + * @return \GeoIp2\Model\ConnectionType + */ + public function connectionType($ipAddress) + { + return $this->flatModelFor( + 'ConnectionType', + 'GeoIP2-Connection-Type', + $ipAddress + ); + } + + /** + * This method returns a GeoIP2 Domain model. + * + * @param string $ipAddress an IPv4 or IPv6 address as a string + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address is + * not in the database + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + * + * @return \GeoIp2\Model\Domain + */ + public function domain($ipAddress) + { + return $this->flatModelFor( + 'Domain', + 'GeoIP2-Domain', + $ipAddress + ); + } + + /** + * This method returns a GeoIP2 Enterprise model. + * + * @param string $ipAddress an IPv4 or IPv6 address as a string + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address is + * not in the database + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + * + * @return \GeoIp2\Model\Enterprise + */ + public function enterprise($ipAddress) + { + return $this->modelFor('Enterprise', 'Enterprise', $ipAddress); + } + + /** + * This method returns a GeoIP2 ISP model. + * + * @param string $ipAddress an IPv4 or IPv6 address as a string + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address is + * not in the database + * @throws \MaxMind\Db\Reader\InvalidDatabaseException if the database + * is corrupt or invalid + * + * @return \GeoIp2\Model\Isp + */ + public function isp($ipAddress) + { + return $this->flatModelFor( + 'Isp', + 'GeoIP2-ISP', + $ipAddress + ); + } + + private function modelFor($class, $type, $ipAddress) + { + $record = $this->getRecord($class, $type, $ipAddress); + + $record['traits']['ip_address'] = $ipAddress; + $class = 'GeoIp2\\Model\\' . $class; + + return new $class($record, $this->locales); + } + + private function flatModelFor($class, $type, $ipAddress) + { + $record = $this->getRecord($class, $type, $ipAddress); + + $record['ip_address'] = $ipAddress; + $class = 'GeoIp2\\Model\\' . $class; + + return new $class($record); + } + + private function getRecord($class, $type, $ipAddress) + { + if (strpos($this->metadata()->databaseType, $type) === false) { + $method = lcfirst($class); + throw new \BadMethodCallException( + "The $method method cannot be used to open a " + . $this->metadata()->databaseType . ' database' + ); + } + $record = $this->dbReader->get($ipAddress); + if ($record === null) { + throw new AddressNotFoundException( + "The address $ipAddress is not in the database." + ); + } + if (!is_array($record)) { + // This can happen on corrupt databases. Generally, + // MaxMind\Db\Reader will throw a + // MaxMind\Db\Reader\InvalidDatabaseException, but occasionally + // the lookup may result in a record that looks valid but is not + // an array. This mostly happens when the user is ignoring all + // exceptions and the more frequent InvalidDatabaseException + // exceptions go unnoticed. + throw new InvalidDatabaseException( + "Expected an array when looking up $ipAddress but received: " + . gettype($record) + ); + } + + return $record; + } + + /** + * @throws \InvalidArgumentException if arguments are passed to the method + * @throws \BadMethodCallException if the database has been closed + * + * @return \MaxMind\Db\Reader\Metadata object for the database + */ + public function metadata() + { + return $this->dbReader->metadata(); + } + + /** + * Closes the GeoIP2 database and returns the resources to the system. + */ + public function close() + { + $this->dbReader->close(); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php new file mode 100644 index 0000000..d548338 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/AddressNotFoundException.php @@ -0,0 +1,10 @@ +<?php + +namespace GeoIp2\Exception; + +/** + * This class represents a generic error. + */ +class AddressNotFoundException extends GeoIp2Exception +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/AuthenticationException.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/AuthenticationException.php new file mode 100644 index 0000000..2a8b592 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/AuthenticationException.php @@ -0,0 +1,10 @@ +<?php + +namespace GeoIp2\Exception; + +/** + * This class represents a generic error. + */ +class AuthenticationException extends GeoIp2Exception +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/GeoIp2Exception.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/GeoIp2Exception.php new file mode 100644 index 0000000..7c4d745 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/GeoIp2Exception.php @@ -0,0 +1,10 @@ +<?php + +namespace GeoIp2\Exception; + +/** + * This class represents a generic error. + */ +class GeoIp2Exception extends \Exception +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/HttpException.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/HttpException.php new file mode 100644 index 0000000..62ec707 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/HttpException.php @@ -0,0 +1,24 @@ +<?php + +namespace GeoIp2\Exception; + +/** + * This class represents an HTTP transport error. + */ +class HttpException extends GeoIp2Exception +{ + /** + * The URI queried. + */ + public $uri; + + public function __construct( + $message, + $httpStatus, + $uri, + \Exception $previous = null + ) { + $this->uri = $uri; + parent::__construct($message, $httpStatus, $previous); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php new file mode 100644 index 0000000..6464bcb --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php @@ -0,0 +1,26 @@ +<?php + +namespace GeoIp2\Exception; + +/** + * This class represents an error returned by MaxMind's GeoIP2 + * web service. + */ +class InvalidRequestException extends HttpException +{ + /** + * The code returned by the MaxMind web service. + */ + public $error; + + public function __construct( + $message, + $error, + $httpStatus, + $uri, + \Exception $previous = null + ) { + $this->error = $error; + parent::__construct($message, $httpStatus, $uri, $previous); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php new file mode 100644 index 0000000..87a6ade --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Exception/OutOfQueriesException.php @@ -0,0 +1,10 @@ +<?php + +namespace GeoIp2\Exception; + +/** + * This class represents a generic error. + */ +class OutOfQueriesException extends GeoIp2Exception +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/AbstractModel.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/AbstractModel.php new file mode 100644 index 0000000..d4b9b70 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/AbstractModel.php @@ -0,0 +1,67 @@ +<?php + +namespace GeoIp2\Model; + +/** + * @ignore + */ +abstract class AbstractModel implements \JsonSerializable +{ + protected $raw; + + /** + * @ignore + * + * @param mixed $raw + */ + public function __construct($raw) + { + $this->raw = $raw; + } + + /** + * @ignore + * + * @param mixed $field + */ + protected function get($field) + { + if (isset($this->raw[$field])) { + return $this->raw[$field]; + } + if (preg_match('/^is_/', $field)) { + return false; + } + + return null; + } + + /** + * @ignore + * + * @param mixed $attr + */ + public function __get($attr) + { + if ($attr !== 'instance' && property_exists($this, $attr)) { + return $this->$attr; + } + + throw new \RuntimeException("Unknown attribute: $attr"); + } + + /** + * @ignore + * + * @param mixed $attr + */ + public function __isset($attr) + { + return $attr !== 'instance' && isset($this->$attr); + } + + public function jsonSerialize() + { + return $this->raw; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/AnonymousIp.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/AnonymousIp.php new file mode 100644 index 0000000..bdaeb89 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/AnonymousIp.php @@ -0,0 +1,46 @@ +<?php + +namespace GeoIp2\Model; + +/** + * This class provides the GeoIP2 Anonymous IP model. + * + * @property-read bool $isAnonymous This is true if the IP address belongs to + * any sort of anonymous network. + * @property-read bool $isAnonymousVpn This is true if the IP address belongs to + * an anonymous VPN system. + * @property-read bool $isHostingProvider This is true if the IP address belongs + * to a hosting provider. + * @property-read bool $isPublicProxy This is true if the IP address belongs to + * a public proxy. + * @property-read bool $isTorExitNode This is true if the IP address is a Tor + * exit node. + * @property-read string $ipAddress The IP address that the data in the model is + * for. + */ +class AnonymousIp extends AbstractModel +{ + protected $isAnonymous; + protected $isAnonymousVpn; + protected $isHostingProvider; + protected $isPublicProxy; + protected $isTorExitNode; + protected $ipAddress; + + /** + * @ignore + * + * @param mixed $raw + */ + public function __construct($raw) + { + parent::__construct($raw); + + $this->isAnonymous = $this->get('is_anonymous'); + $this->isAnonymousVpn = $this->get('is_anonymous_vpn'); + $this->isHostingProvider = $this->get('is_hosting_provider'); + $this->isPublicProxy = $this->get('is_public_proxy'); + $this->isTorExitNode = $this->get('is_tor_exit_node'); + $this->ipAddress = $this->get('ip_address'); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Asn.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Asn.php new file mode 100644 index 0000000..4144142 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Asn.php @@ -0,0 +1,35 @@ +<?php + +namespace GeoIp2\Model; + +/** + * This class provides the GeoLite2 ASN model. + * + * @property-read int|null $autonomousSystemNumber The autonomous system number + * associated with the IP address. + * @property-read string|null $autonomousSystemOrganization The organization + * associated with the registered autonomous system number for the IP + * address. + * @property-read string $ipAddress The IP address that the data in the model is + * for. + */ +class Asn extends AbstractModel +{ + protected $autonomousSystemNumber; + protected $autonomousSystemOrganization; + protected $ipAddress; + + /** + * @ignore + * + * @param mixed $raw + */ + public function __construct($raw) + { + parent::__construct($raw); + $this->autonomousSystemNumber = $this->get('autonomous_system_number'); + $this->autonomousSystemOrganization = + $this->get('autonomous_system_organization'); + $this->ipAddress = $this->get('ip_address'); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/City.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/City.php new file mode 100644 index 0000000..3285903 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/City.php @@ -0,0 +1,133 @@ +<?php + +namespace GeoIp2\Model; + +/** + * Model class for the data returned by GeoIP2 City web service and database. + * + * The only difference between the City and Insights model classes is which + * fields in each record may be populated. See + * http://dev.maxmind.com/geoip/geoip2/web-services more details. + * + * @property-read \GeoIp2\Record\City $city City data for the requested IP + * address. + * @property-read \GeoIp2\Record\Continent $continent Continent data for the + * requested IP address. + * @property-read \GeoIp2\Record\Country $country Country data for the requested + * IP address. This object represents the country where MaxMind believes the + * end user is located. + * @property-read \GeoIp2\Record\Location $location Location data for the + * requested IP address. + * @property-read \GeoIp2\Record\Postal $postal Postal data for the + * requested IP address. + * @property-read \GeoIp2\Record\MaxMind $maxmind Data related to your MaxMind + * account. + * @property-read \GeoIp2\Record\Country $registeredCountry Registered country + * data for the requested IP address. This record represents the country + * where the ISP has registered a given IP block and may differ from the + * user's country. + * @property-read \GeoIp2\Record\RepresentedCountry $representedCountry + * Represented country data for the requested IP address. The represented + * country is used for things like military bases. It is only present when + * the represented country differs from the country. + * @property-read array $subdivisions An array of {@link \GeoIp2\Record\Subdivision} + * objects representing the country subdivisions for the requested IP + * address. The number and type of subdivisions varies by country, but a + * subdivision is typically a state, province, county, etc. Subdivisions + * are ordered from most general (largest) to most specific (smallest). + * If the response did not contain any subdivisions, this method returns + * an empty array. + * @property-read \GeoIp2\Record\Subdivision $mostSpecificSubdivision An object + * representing the most specific subdivision returned. If the response + * did not contain any subdivisions, this method returns an empty + * {@link \GeoIp2\Record\Subdivision} object. + * @property-read \GeoIp2\Record\Traits $traits Data for the traits of the + * requested IP address. + */ +class City extends Country +{ + /** + * @ignore + */ + protected $city; + /** + * @ignore + */ + protected $location; + /** + * @ignore + */ + protected $postal; + /** + * @ignore + */ + protected $subdivisions = []; + + /** + * @ignore + * + * @param mixed $raw + * @param mixed $locales + */ + public function __construct($raw, $locales = ['en']) + { + parent::__construct($raw, $locales); + + $this->city = new \GeoIp2\Record\City($this->get('city'), $locales); + $this->location = new \GeoIp2\Record\Location($this->get('location')); + $this->postal = new \GeoIp2\Record\Postal($this->get('postal')); + + $this->createSubdivisions($raw, $locales); + } + + private function createSubdivisions($raw, $locales) + { + if (!isset($raw['subdivisions'])) { + return; + } + + foreach ($raw['subdivisions'] as $sub) { + array_push( + $this->subdivisions, + new \GeoIp2\Record\Subdivision($sub, $locales) + ); + } + } + + /** + * @ignore + * + * @param mixed $attr + */ + public function __get($attr) + { + if ($attr === 'mostSpecificSubdivision') { + return $this->$attr(); + } + + return parent::__get($attr); + } + + /** + * @ignore + * + * @param mixed $attr + */ + public function __isset($attr) + { + if ($attr === 'mostSpecificSubdivision') { + // We always return a mostSpecificSubdivision, even if it is the + // empty subdivision + return true; + } + + return parent::__isset($attr); + } + + private function mostSpecificSubdivision() + { + return empty($this->subdivisions) ? + new \GeoIp2\Record\Subdivision([], $this->locales) : + end($this->subdivisions); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/ConnectionType.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/ConnectionType.php new file mode 100644 index 0000000..169e7c1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/ConnectionType.php @@ -0,0 +1,31 @@ +<?php + +namespace GeoIp2\Model; + +/** + * This class provides the GeoIP2 Connection-Type model. + * + * @property-read string|null $connectionType The connection type may take the + * following values: "Dialup", "Cable/DSL", "Corporate", "Cellular". + * Additional values may be added in the future. + * @property-read string $ipAddress The IP address that the data in the model is + * for. + */ +class ConnectionType extends AbstractModel +{ + protected $connectionType; + protected $ipAddress; + + /** + * @ignore + * + * @param mixed $raw + */ + public function __construct($raw) + { + parent::__construct($raw); + + $this->connectionType = $this->get('connection_type'); + $this->ipAddress = $this->get('ip_address'); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Country.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Country.php new file mode 100644 index 0000000..17833a1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Country.php @@ -0,0 +1,71 @@ +<?php + +namespace GeoIp2\Model; + +/** + * Model class for the data returned by GeoIP2 Country web service and database. + * + * The only difference between the City and Insights model classes is which + * fields in each record may be populated. See + * http://dev.maxmind.com/geoip/geoip2/web-services more details. + * + * @property-read \GeoIp2\Record\Continent $continent Continent data for the + * requested IP address. + * @property-read \GeoIp2\Record\Country $country Country data for the requested + * IP address. This object represents the country where MaxMind believes the + * end user is located. + * @property-read \GeoIp2\Record\MaxMind $maxmind Data related to your MaxMind + * account. + * @property-read \GeoIp2\Record\Country $registeredCountry Registered country + * data for the requested IP address. This record represents the country + * where the ISP has registered a given IP block and may differ from the + * user's country. + * @property-read \GeoIp2\Record\RepresentedCountry $representedCountry + * Represented country data for the requested IP address. The represented + * country is used for things like military bases. It is only present when + * the represented country differs from the country. + * @property-read \GeoIp2\Record\Traits $traits Data for the traits of the + * requested IP address. + */ +class Country extends AbstractModel +{ + protected $continent; + protected $country; + protected $locales; + protected $maxmind; + protected $registeredCountry; + protected $representedCountry; + protected $traits; + + /** + * @ignore + * + * @param mixed $raw + * @param mixed $locales + */ + public function __construct($raw, $locales = ['en']) + { + parent::__construct($raw); + + $this->continent = new \GeoIp2\Record\Continent( + $this->get('continent'), + $locales + ); + $this->country = new \GeoIp2\Record\Country( + $this->get('country'), + $locales + ); + $this->maxmind = new \GeoIp2\Record\MaxMind($this->get('maxmind')); + $this->registeredCountry = new \GeoIp2\Record\Country( + $this->get('registered_country'), + $locales + ); + $this->representedCountry = new \GeoIp2\Record\RepresentedCountry( + $this->get('represented_country'), + $locales + ); + $this->traits = new \GeoIp2\Record\Traits($this->get('traits')); + + $this->locales = $locales; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Domain.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Domain.php new file mode 100644 index 0000000..f452e86 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Domain.php @@ -0,0 +1,31 @@ +<?php + +namespace GeoIp2\Model; + +/** + * This class provides the GeoIP2 Domain model. + * + * @property-read string|null $domain The second level domain associated with the + * IP address. This will be something like "example.com" or + * "example.co.uk", not "foo.example.com". + * @property-read string $ipAddress The IP address that the data in the model is + * for. + */ +class Domain extends AbstractModel +{ + protected $domain; + protected $ipAddress; + + /** + * @ignore + * + * @param mixed $raw + */ + public function __construct($raw) + { + parent::__construct($raw); + + $this->domain = $this->get('domain'); + $this->ipAddress = $this->get('ip_address'); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Enterprise.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Enterprise.php new file mode 100644 index 0000000..6b98c05 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Enterprise.php @@ -0,0 +1,47 @@ +<?php + +namespace GeoIp2\Model; + +/** + * Model class for the data returned by GeoIP2 Enterprise database lookups. + * + * The only difference between the City and Enterprise model classes is which + * fields in each record may be populated. See + * http://dev.maxmind.com/geoip/geoip2/web-services more details. + * + * @property-read \GeoIp2\Record\City $city City data for the requested IP + * address. + * @property-read \GeoIp2\Record\Continent $continent Continent data for the + * requested IP address. + * @property-read \GeoIp2\Record\Country $country Country data for the requested + * IP address. This object represents the country where MaxMind believes the + * end user is located. + * @property-read \GeoIp2\Record\Location $location Location data for the + * requested IP address. + * @property-read \GeoIp2\Record\MaxMind $maxmind Data related to your MaxMind + * account. + * @property-read \GeoIp2\Record\Country $registeredCountry Registered country + * data for the requested IP address. This record represents the country + * where the ISP has registered a given IP block and may differ from the + * user's country. + * @property-read \GeoIp2\Record\RepresentedCountry $representedCountry + * Represented country data for the requested IP address. The represented + * country is used for things like military bases. It is only present when + * the represented country differs from the country. + * @property-read array $subdivisions An array of {@link \GeoIp2\Record\Subdivision} + * objects representing the country subdivisions for the requested IP + * address. The number and type of subdivisions varies by country, but a + * subdivision is typically a state, province, county, etc. Subdivisions + * are ordered from most general (largest) to most specific (smallest). + * If the response did not contain any subdivisions, this method returns + * an empty array. + * @property-read \GeoIp2\Record\Subdivision $mostSpecificSubdivision An object + * representing the most specific subdivision returned. If the response + * did not contain any subdivisions, this method returns an empty + * {@link \GeoIp2\Record\Subdivision} object. + * @property-read \GeoIp2\Record\Traits $traits Data for the traits of the + * requested IP address. + */ +class Enterprise extends City +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Insights.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Insights.php new file mode 100644 index 0000000..cefcfb9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Insights.php @@ -0,0 +1,47 @@ +<?php + +namespace GeoIp2\Model; + +/** + * Model class for the data returned by GeoIP2 Precision: Insights web service. + * + * The only difference between the City and Insights model classes is which + * fields in each record may be populated. See + * http://dev.maxmind.com/geoip/geoip2/web-services more details. + * + * @property-read \GeoIp2\Record\City $city City data for the requested IP + * address. + * @property-read \GeoIp2\Record\Continent $continent Continent data for the + * requested IP address. + * @property-read \GeoIp2\Record\Country $country Country data for the requested + * IP address. This object represents the country where MaxMind believes the + * end user is located. + * @property-read \GeoIp2\Record\Location $location Location data for the + * requested IP address. + * @property-read \GeoIp2\Record\MaxMind $maxmind Data related to your MaxMind + * account. + * @property-read \GeoIp2\Record\Country $registeredCountry Registered country + * data for the requested IP address. This record represents the country + * where the ISP has registered a given IP block and may differ from the + * user's country. + * @property-read \GeoIp2\Record\RepresentedCountry $representedCountry + * Represented country data for the requested IP address. The represented + * country is used for things like military bases. It is only present when + * the represented country differs from the country. + * @property-read array $subdivisions An array of {@link \GeoIp2\Record\Subdivision} + * objects representing the country subdivisions for the requested IP + * address. The number and type of subdivisions varies by country, but a + * subdivision is typically a state, province, county, etc. Subdivisions + * are ordered from most general (largest) to most specific (smallest). + * If the response did not contain any subdivisions, this method returns + * an empty array. + * @property-read \GeoIp2\Record\Subdivision $mostSpecificSubdivision An object + * representing the most specific subdivision returned. If the response + * did not contain any subdivisions, this method returns an empty + * {@link \GeoIp2\Record\Subdivision} object. + * @property-read \GeoIp2\Record\Traits $traits Data for the traits of the + * requested IP address. + */ +class Insights extends City +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Isp.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Isp.php new file mode 100644 index 0000000..51e0b68 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Model/Isp.php @@ -0,0 +1,44 @@ +<?php + +namespace GeoIp2\Model; + +/** + * This class provides the GeoIP2 ISP model. + * + * @property-read int|null $autonomousSystemNumber The autonomous system number + * associated with the IP address. + * @property-read string|null $autonomousSystemOrganization The organization + * associated with the registered autonomous system number for the IP + * address. + * @property-read string|null $isp The name of the ISP associated with the IP + * address. + * @property-read string|null $organization The name of the organization associated + * with the IP address. + * @property-read string $ipAddress The IP address that the data in the model is + * for. + */ +class Isp extends AbstractModel +{ + protected $autonomousSystemNumber; + protected $autonomousSystemOrganization; + protected $isp; + protected $organization; + protected $ipAddress; + + /** + * @ignore + * + * @param mixed $raw + */ + public function __construct($raw) + { + parent::__construct($raw); + $this->autonomousSystemNumber = $this->get('autonomous_system_number'); + $this->autonomousSystemOrganization = + $this->get('autonomous_system_organization'); + $this->isp = $this->get('isp'); + $this->organization = $this->get('organization'); + + $this->ipAddress = $this->get('ip_address'); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/ProviderInterface.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/ProviderInterface.php new file mode 100644 index 0000000..44851b0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/ProviderInterface.php @@ -0,0 +1,20 @@ +<?php + +namespace GeoIp2; + +interface ProviderInterface +{ + /** + * @param string $ipAddress an IPv4 or IPv6 address to lookup + * + * @return \GeoIp2\Model\Country a Country model for the requested IP address + */ + public function country($ipAddress); + + /** + * @param string $ipAddress an IPv4 or IPv6 address to lookup + * + * @return \GeoIp2\Model\City a City model for the requested IP address + */ + public function city($ipAddress); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/AbstractPlaceRecord.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/AbstractPlaceRecord.php new file mode 100644 index 0000000..1e079c6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/AbstractPlaceRecord.php @@ -0,0 +1,66 @@ +<?php + +namespace GeoIp2\Record; + +abstract class AbstractPlaceRecord extends AbstractRecord +{ + private $locales; + + /** + * @ignore + * + * @param mixed $record + * @param mixed $locales + */ + public function __construct($record, $locales = ['en']) + { + $this->locales = $locales; + parent::__construct($record); + } + + /** + * @ignore + * + * @param mixed $attr + */ + public function __get($attr) + { + if ($attr === 'name') { + return $this->name(); + } + + return parent::__get($attr); + } + + /** + * @ignore + * + * @param mixed $attr + */ + public function __isset($attr) + { + if ($attr === 'name') { + return $this->firstSetNameLocale() === null ? false : true; + } + + return parent::__isset($attr); + } + + private function name() + { + $locale = $this->firstSetNameLocale(); + + return $locale === null ? null : $this->names[$locale]; + } + + private function firstSetNameLocale() + { + foreach ($this->locales as $locale) { + if (isset($this->names[$locale])) { + return $locale; + } + } + + return null; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/AbstractRecord.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/AbstractRecord.php new file mode 100644 index 0000000..5d8cb0b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/AbstractRecord.php @@ -0,0 +1,61 @@ +<?php + +namespace GeoIp2\Record; + +abstract class AbstractRecord implements \JsonSerializable +{ + private $record; + + /** + * @ignore + * + * @param mixed $record + */ + public function __construct($record) + { + $this->record = isset($record) ? $record : []; + } + + /** + * @ignore + * + * @param mixed $attr + */ + public function __get($attr) + { + // XXX - kind of ugly but greatly reduces boilerplate code + $key = $this->attributeToKey($attr); + + if ($this->__isset($attr)) { + return $this->record[$key]; + } elseif ($this->validAttribute($attr)) { + if (preg_match('/^is_/', $key)) { + return false; + } + + return null; + } + throw new \RuntimeException("Unknown attribute: $attr"); + } + + public function __isset($attr) + { + return $this->validAttribute($attr) && + isset($this->record[$this->attributeToKey($attr)]); + } + + private function attributeToKey($attr) + { + return strtolower(preg_replace('/([A-Z])/', '_\1', $attr)); + } + + private function validAttribute($attr) + { + return in_array($attr, $this->validAttributes, true); + } + + public function jsonSerialize() + { + return $this->record; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/City.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/City.php new file mode 100644 index 0000000..7f495ad --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/City.php @@ -0,0 +1,29 @@ +<?php + +namespace GeoIp2\Record; + +/** + * City-level data associated with an IP address. + * + * This record is returned by all location services and databases besides + * Country. + * + * @property-read int|null $confidence A value from 0-100 indicating MaxMind's + * confidence that the city is correct. This attribute is only available + * from the Insights service and the GeoIP2 Enterprise database. + * @property-read int|null $geonameId The GeoName ID for the city. This attribute + * is returned by all location services and databases. + * @property-read string|null $name The name of the city based on the locales list + * passed to the constructor. This attribute is returned by all location + * services and databases. + * @property-read array|null $names A array map where the keys are locale codes + * and the values are names. This attribute is returned by all location + * services and databases. + */ +class City extends AbstractPlaceRecord +{ + /** + * @ignore + */ + protected $validAttributes = ['confidence', 'geonameId', 'names']; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Continent.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Continent.php new file mode 100644 index 0000000..c6b1705 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Continent.php @@ -0,0 +1,32 @@ +<?php + +namespace GeoIp2\Record; + +/** + * Contains data for the continent record associated with an IP address. + * + * This record is returned by all location services and databases. + * + * @property-read string|null $code A two character continent code like "NA" (North + * America) or "OC" (Oceania). This attribute is returned by all location + * services and databases. + * @property-read int|null $geonameId The GeoName ID for the continent. This + * attribute is returned by all location services and databases. + * @property-read string|null $name Returns the name of the continent based on the + * locales list passed to the constructor. This attribute is returned by all location + * services and databases. + * @property-read array|null $names An array map where the keys are locale codes + * and the values are names. This attribute is returned by all location + * services and databases. + */ +class Continent extends AbstractPlaceRecord +{ + /** + * @ignore + */ + protected $validAttributes = [ + 'code', + 'geonameId', + 'names', + ]; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Country.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Country.php new file mode 100644 index 0000000..477bc1d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Country.php @@ -0,0 +1,41 @@ +<?php + +namespace GeoIp2\Record; + +/** + * Contains data for the country record associated with an IP address. + * + * This record is returned by all location services and databases. + * + * @property-read int|null $confidence A value from 0-100 indicating MaxMind's + * confidence that the country is correct. This attribute is only available + * from the Insights service and the GeoIP2 Enterprise database. + * @property-read int|null $geonameId The GeoName ID for the country. This + * attribute is returned by all location services and databases. + * @property-read bool $isInEuropeanUnion This is true if the country is a + * member state of the European Union. This attribute is returned by all + * location services and databases. + * @property-read string|null $isoCode The + * {@link * http://en.wikipedia.org/wiki/ISO_3166-1 two-character ISO 3166-1 alpha + * code} for the country. This attribute is returned by all location services + * and databases. + * @property-read string|null $name The name of the country based on the locales + * list passed to the constructor. This attribute is returned by all location + * services and databases. + * @property-read array|null $names An array map where the keys are locale codes + * and the values are names. This attribute is returned by all location + * services and databases. + */ +class Country extends AbstractPlaceRecord +{ + /** + * @ignore + */ + protected $validAttributes = [ + 'confidence', + 'geonameId', + 'isInEuropeanUnion', + 'isoCode', + 'names', + ]; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Location.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Location.php new file mode 100644 index 0000000..9b81adf --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Location.php @@ -0,0 +1,52 @@ +<?php + +namespace GeoIp2\Record; + +/** + * Contains data for the location record associated with an IP address. + * + * This record is returned by all location services and databases besides + * Country. + * + * @property-read int|null $averageIncome The average income in US dollars + * associated with the requested IP address. This attribute is only available + * from the Insights service. + * @property-read int|null $accuracyRadius The approximate accuracy radius in + * kilometers around the latitude and longitude for the IP address. This is + * the radius where we have a 67% confidence that the device using the IP + * address resides within the circle centered at the latitude and longitude + * with the provided radius. + * @property-read float|null $latitude The approximate latitude of the location + * associated with the IP address. This value is not precise and should not be + * used to identify a particular address or household. + * @property-read float|null $longitude The approximate longitude of the location + * associated with the IP address. This value is not precise and should not be + * used to identify a particular address or household. + * @property-read int|null $populationDensity The estimated population per square + * kilometer associated with the IP address. This attribute is only available + * from the Insights service. + * @property-read int|null $metroCode The metro code of the location if the location + * is in the US. MaxMind returns the same metro codes as the + * {@link * https://developers.google.com/adwords/api/docs/appendix/cities-DMAregions + * Google AdWords API}. + * @property-read string|null $timeZone The time zone associated with location, as + * specified by the {@link http://www.iana.org/time-zones IANA Time Zone + * Database}, e.g., "America/New_York". + */ +class Location extends AbstractRecord +{ + /** + * @ignore + */ + protected $validAttributes = [ + 'averageIncome', + 'accuracyRadius', + 'latitude', + 'longitude', + 'metroCode', + 'populationDensity', + 'postalCode', + 'postalConfidence', + 'timeZone', + ]; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/MaxMind.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/MaxMind.php new file mode 100644 index 0000000..2e2cc00 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/MaxMind.php @@ -0,0 +1,19 @@ +<?php + +namespace GeoIp2\Record; + +/** + * Contains data about your account. + * + * This record is returned by all location services and databases. + * + * @property-read int|null $queriesRemaining The number of remaining queries you + * have for the service you are calling. + */ +class MaxMind extends AbstractRecord +{ + /** + * @ignore + */ + protected $validAttributes = ['queriesRemaining']; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Postal.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Postal.php new file mode 100644 index 0000000..69508c7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Postal.php @@ -0,0 +1,26 @@ +<?php + +namespace GeoIp2\Record; + +/** + * Contains data for the postal record associated with an IP address. + * + * This record is returned by all location databases and services besides + * Country. + * + * @property-read string|null $code The postal code of the location. Postal codes + * are not available for all countries. In some countries, this will only + * contain part of the postal code. This attribute is returned by all location + * databases and services besides Country. + * @property-read int|null $confidence A value from 0-100 indicating MaxMind's + * confidence that the postal code is correct. This attribute is only + * available from the Insights service and the GeoIP2 Enterprise + * database. + */ +class Postal extends AbstractRecord +{ + /** + * @ignore + */ + protected $validAttributes = ['code', 'confidence']; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/RepresentedCountry.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/RepresentedCountry.php new file mode 100644 index 0000000..13082dd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/RepresentedCountry.php @@ -0,0 +1,39 @@ +<?php + +namespace GeoIp2\Record; + +/** + * Contains data for the represented country associated with an IP address. + * + * This class contains the country-level data associated with an IP address + * for the IP's represented country. The represented country is the country + * represented by something like a military base. + * + * @property-read int|null $confidence A value from 0-100 indicating MaxMind's + * confidence that the country is correct. This attribute is only available + * from the Insights service and the GeoIP2 Enterprise database. + * @property-read int|null $geonameId The GeoName ID for the country. + * @property-read bool $isInEuropeanUnion This is true if the country is a + * member state of the European Union. This attribute is returned by all + * location services and databases. + * @property-read string|null $isoCode The {@link http://en.wikipedia.org/wiki/ISO_3166-1 + * two-character ISO 3166-1 alpha code} for the country. + * @property-read string|null $name The name of the country based on the locales list + * passed to the constructor. + * @property-read array|null $names An array map where the keys are locale codes and + * the values are names. + * @property-read string|null $type A string indicating the type of entity that is + * representing the country. Currently we only return <code>military</code> + * but this could expand to include other types in the future. + */ +class RepresentedCountry extends Country +{ + protected $validAttributes = [ + 'confidence', + 'geonameId', + 'isInEuropeanUnion', + 'isoCode', + 'names', + 'type', + ]; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Subdivision.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Subdivision.php new file mode 100644 index 0000000..386c68d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Subdivision.php @@ -0,0 +1,40 @@ +<?php + +namespace GeoIp2\Record; + +/** + * Contains data for the subdivisions associated with an IP address. + * + * This record is returned by all location databases and services besides + * Country. + * + * @property-read int|null $confidence This is a value from 0-100 indicating + * MaxMind's confidence that the subdivision is correct. This attribute is + * only available from the Insights service and the GeoIP2 Enterprise + * database. + * @property-read int|null $geonameId This is a GeoName ID for the subdivision. + * This attribute is returned by all location databases and services besides + * Country. + * @property-read string|null $isoCode This is a string up to three characters long + * contain the subdivision portion of the + * {@link * http://en.wikipedia.org/wiki/ISO_3166-2 ISO 3166-2 code}. This attribute + * is returned by all location databases and services except Country. + * @property-read string|null $name The name of the subdivision based on the + * locales list passed to the constructor. This attribute is returned by all + * location databases and services besides Country. + * @property-read array|null $names An array map where the keys are locale codes + * and the values are names. This attribute is returned by all location + * databases and services besides Country. + */ +class Subdivision extends AbstractPlaceRecord +{ + /** + * @ignore + */ + protected $validAttributes = [ + 'confidence', + 'geonameId', + 'isoCode', + 'names', + ]; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Traits.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Traits.php new file mode 100644 index 0000000..bc5f07d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/Record/Traits.php @@ -0,0 +1,114 @@ +<?php + +namespace GeoIp2\Record; + +/** + * Contains data for the traits record associated with an IP address. + * + * This record is returned by all location services and databases. + * + * @property-read int|null $autonomousSystemNumber The + * {@link * http://en.wikipedia.org/wiki/Autonomous_system_(Internet) autonomous + * system number} associated with the IP address. This attribute is only + * available from the City and Insights web service and the GeoIP2 + * Enterprise database. + * @property-read string|null $autonomousSystemOrganization The organization + * associated with the registered {@link * http://en.wikipedia.org/wiki/Autonomous_system_(Internet) autonomous + * system number} for the IP address. This attribute is only available from + * the City and Insights web service and the GeoIP2 Enterprise + * database. + * @property-read string|null $connectionType The connection type may take the + * following values: "Dialup", "Cable/DSL", "Corporate", "Cellular". + * Additional values may be added in the future. This attribute is only + * available in the GeoIP2 Enterprise database. + * @property-read string|null $domain The second level domain associated with the + * IP address. This will be something like "example.com" or "example.co.uk", + * not "foo.example.com". This attribute is only available from the + * City and Insights web service and the GeoIP2 Enterprise + * database. + * @property-read string $ipAddress The IP address that the data in the model + * is for. If you performed a "me" lookup against the web service, this + * will be the externally routable IP address for the system the code is + * running on. If the system is behind a NAT, this may differ from the IP + * address locally assigned to it. This attribute is returned by all end + * points. + * @property-read bool $isAnonymous This is true if the IP address belongs to + * any sort of anonymous network. This property is only available from GeoIP2 + * Precision Insights. + * @property-read bool $isAnonymousProxy *Deprecated.* Please see our + * {@link * https://www.maxmind.com/en/geoip2-anonymous-ip-database GeoIP2 + * Anonymous IP database} to determine whether the IP address is used by an + * anonymizing service. + * @property-read bool $isAnonymousVpn This is true if the IP address belongs to + * an anonymous VPN system. This property is only available from GeoIP2 + * Precision Insights. + * @property-read bool $isHostingProvider This is true if the IP address belongs + * to a hosting provider. This property is only available from GeoIP2 + * Precision Insights. + * @property-read bool $isLegitimateProxy This attribute is true if MaxMind + * believes this IP address to be a legitimate proxy, such as an internal + * VPN used by a corporation. This attribute is only available in the GeoIP2 + * Enterprise database. + * @property-read bool $isPublicProxy This is true if the IP address belongs to + * a public proxy. This property is only available from GeoIP2 Precision + * Insights. + * @property-read bool $isSatelliteProvider *Deprecated.* Due to the + * increased coverage by mobile carriers, very few satellite providers now + * serve multiple countries. As a result, the output does not provide + * sufficiently relevant data for us to maintain it. + * @property-read bool $isTorExitNode This is true if the IP address is a Tor + * exit node. This property is only available from GeoIP2 Precision Insights. + * @property-read string|null $isp The name of the ISP associated with the IP + * address. This attribute is only available from the City and Insights web + * services and the GeoIP2 Enterprise database. + * @property-read string|null $organization The name of the organization associated + * with the IP address. This attribute is only available from the City and + * Insights web services and the GeoIP2 Enterprise database. + * @property-read string|null $userType <p>The user type associated with the IP + * address. This can be one of the following values:</p> + * <ul> + * <li>business + * <li>cafe + * <li>cellular + * <li>college + * <li>content_delivery_network + * <li>dialup + * <li>government + * <li>hosting + * <li>library + * <li>military + * <li>residential + * <li>router + * <li>school + * <li>search_engine_spider + * <li>traveler + * </ul> + * <p> + * This attribute is only available from the Insights web service and the + * GeoIP2 Enterprise database. + * </p> + */ +class Traits extends AbstractRecord +{ + /** + * @ignore + */ + protected $validAttributes = [ + 'autonomousSystemNumber', + 'autonomousSystemOrganization', + 'connectionType', + 'domain', + 'ipAddress', + 'isAnonymous', + 'isAnonymousProxy', + 'isAnonymousVpn', + 'isHostingProvider', + 'isLegitimateProxy', + 'isp', + 'isPublicProxy', + 'isSatelliteProvider', + 'isTorExitNode', + 'organization', + 'userType', + ]; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/WebService/Client.php b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/WebService/Client.php new file mode 100644 index 0000000..1a1ccf1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/geoip2/geoip2/src/WebService/Client.php @@ -0,0 +1,239 @@ +<?php + +namespace GeoIp2\WebService; + +use GeoIp2\Exception\AddressNotFoundException; +use GeoIp2\Exception\AuthenticationException; +use GeoIp2\Exception\GeoIp2Exception; +use GeoIp2\Exception\HttpException; +use GeoIp2\Exception\InvalidRequestException; +use GeoIp2\Exception\OutOfQueriesException; +use GeoIp2\ProviderInterface; +use MaxMind\WebService\Client as WsClient; + +/** + * This class provides a client API for all the GeoIP2 Precision web services. + * The services are Country, City, and Insights. Each service returns a + * different set of data about an IP address, with Country returning the + * least data and Insights the most. + * + * Each web service is represented by a different model class, and these model + * classes in turn contain multiple record classes. The record classes have + * attributes which contain data about the IP address. + * + * If the web service does not return a particular piece of data for an IP + * address, the associated attribute is not populated. + * + * The web service may not return any information for an entire record, in + * which case all of the attributes for that record class will be empty. + * + * ## Usage ## + * + * The basic API for this class is the same for all of the web service end + * points. First you create a web service object with your MaxMind `$accountId` + * and `$licenseKey`, then you call the method corresponding to a specific end + * point, passing it the IP address you want to look up. + * + * If the request succeeds, the method call will return a model class for + * the service you called. This model in turn contains multiple record + * classes, each of which represents part of the data returned by the web + * service. + * + * If the request fails, the client class throws an exception. + */ +class Client implements ProviderInterface +{ + private $locales; + private $client; + private static $basePath = '/geoip/v2.1'; + + const VERSION = 'v2.9.0'; + + /** + * Constructor. + * + * @param int $accountId your MaxMind account ID + * @param string $licenseKey your MaxMind license key + * @param array $locales list of locale codes to use in name property + * from most preferred to least preferred + * @param array $options array of options. Valid options include: + * * `host` - The host to use when querying the web service. + * * `timeout` - Timeout in seconds. + * * `connectTimeout` - Initial connection timeout in seconds. + * * `proxy` - The HTTP proxy to use. May include a schema, port, + * username, and password, e.g., + * `http://username:password@127.0.0.1:10`. + */ + public function __construct( + $accountId, + $licenseKey, + $locales = ['en'], + $options = [] + ) { + $this->locales = $locales; + + // This is for backwards compatibility. Do not remove except for a + // major version bump. + if (is_string($options)) { + $options = ['host' => $options]; + } + + if (!isset($options['host'])) { + $options['host'] = 'geoip.maxmind.com'; + } + + $options['userAgent'] = $this->userAgent(); + + $this->client = new WsClient($accountId, $licenseKey, $options); + } + + private function userAgent() + { + return 'GeoIP2-API/' . self::VERSION; + } + + /** + * This method calls the GeoIP2 Precision: City service. + * + * @param string $ipAddress IPv4 or IPv6 address as a string. If no + * address is provided, the address that the web service is called + * from will be used. + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address you + * provided is not in our database (e.g., a private address). + * @throws \GeoIp2\Exception\AuthenticationException if there is a problem + * with the account ID or license key that you provided + * @throws \GeoIp2\Exception\OutOfQueriesException if your account is out + * of queries + * @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is + * invalid for some other reason. This may indicate an issue + * with this API. Please report the error to MaxMind. + * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error code or message was returned. + * This could indicate a problem with the connection between + * your server and the web service or that the web service + * returned an invalid document or 500 error code. + * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent + * class to the above exceptions. It will be thrown directly + * if a 200 status code is returned but the body is invalid. + * + * @return \GeoIp2\Model\City + */ + public function city($ipAddress = 'me') + { + return $this->responseFor('city', 'City', $ipAddress); + } + + /** + * This method calls the GeoIP2 Precision: Country service. + * + * @param string $ipAddress IPv4 or IPv6 address as a string. If no + * address is provided, the address that the web service is called + * from will be used. + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address you provided is not in our database (e.g., + * a private address). + * @throws \GeoIp2\Exception\AuthenticationException if there is a problem + * with the account ID or license key that you provided + * @throws \GeoIp2\Exception\OutOfQueriesException if your account is out of queries + * @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is + * invalid for some other reason. This may indicate an + * issue with this API. Please report the error to MaxMind. + * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error + * code or message was returned. This could indicate a problem + * with the connection between your server and the web service + * or that the web service returned an invalid document or 500 + * error code. + * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent class to the above exceptions. It + * will be thrown directly if a 200 status code is returned but + * the body is invalid. + * + * @return \GeoIp2\Model\Country + */ + public function country($ipAddress = 'me') + { + return $this->responseFor('country', 'Country', $ipAddress); + } + + /** + * This method calls the GeoIP2 Precision: Insights service. + * + * @param string $ipAddress IPv4 or IPv6 address as a string. If no + * address is provided, the address that the web service is called + * from will be used. + * + * @throws \GeoIp2\Exception\AddressNotFoundException if the address you + * provided is not in our database (e.g., a private address). + * @throws \GeoIp2\Exception\AuthenticationException if there is a problem + * with the account ID or license key that you provided + * @throws \GeoIp2\Exception\OutOfQueriesException if your account is out + * of queries + * @throws \GeoIp2\Exception\InvalidRequestException} if your request was received by the web service but is + * invalid for some other reason. This may indicate an + * issue with this API. Please report the error to MaxMind. + * @throws \GeoIp2\Exception\HttpException if an unexpected HTTP error code or message was returned. + * This could indicate a problem with the connection between + * your server and the web service or that the web service + * returned an invalid document or 500 error code. + * @throws \GeoIp2\Exception\GeoIp2Exception This serves as the parent + * class to the above exceptions. It will be thrown directly + * if a 200 status code is returned but the body is invalid. + * + * @return \GeoIp2\Model\Insights + */ + public function insights($ipAddress = 'me') + { + return $this->responseFor('insights', 'Insights', $ipAddress); + } + + private function responseFor($endpoint, $class, $ipAddress) + { + $path = implode('/', [self::$basePath, $endpoint, $ipAddress]); + + try { + $body = $this->client->get('GeoIP2 ' . $class, $path); + } catch (\MaxMind\Exception\IpAddressNotFoundException $ex) { + throw new AddressNotFoundException( + $ex->getMessage(), + $ex->getStatusCode(), + $ex + ); + } catch (\MaxMind\Exception\AuthenticationException $ex) { + throw new AuthenticationException( + $ex->getMessage(), + $ex->getStatusCode(), + $ex + ); + } catch (\MaxMind\Exception\InsufficientFundsException $ex) { + throw new OutOfQueriesException( + $ex->getMessage(), + $ex->getStatusCode(), + $ex + ); + } catch (\MaxMind\Exception\InvalidRequestException $ex) { + throw new InvalidRequestException( + $ex->getMessage(), + $ex->getErrorCode(), + $ex->getStatusCode(), + $ex->getUri(), + $ex + ); + } catch (\MaxMind\Exception\HttpException $ex) { + throw new HttpException( + $ex->getMessage(), + $ex->getStatusCode(), + $ex->getUri(), + $ex + ); + } catch (\MaxMind\Exception\WebServiceException $ex) { + throw new GeoIp2Exception( + $ex->getMessage(), + $ex->getCode(), + $ex + ); + } + + $class = 'GeoIp2\\Model\\' . $class; + + return new $class($body, $this->locales); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/LICENSE b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/LICENSE new file mode 100644 index 0000000..2f4e15e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015-2018 Mark Beech + +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. + diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/README.md b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/README.md new file mode 100644 index 0000000..61da416 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/README.md @@ -0,0 +1,72 @@ +<p align="center"><a href="http://crawlerdetect.io/" target="_blank"><img src="https://cloud.githubusercontent.com/assets/340752/23082173/1bd1a396-f550-11e6-8aba-4d3c75edea2f.png" width="321" height="219" /></a><br><br> +<a href="http://crawlerdetect.io/" target="_blank">crawlerdetect.io</a> +<br><br> +</p> + +<p align="center"> +<a href="https://travis-ci.org/JayBizzle/Crawler-Detect"><img src="https://img.shields.io/travis/JayBizzle/Crawler-Detect/master.svg?style=flat-square" /></a> +<a href="https://packagist.org/packages/jaybizzle/crawler-detect"><img src="https://img.shields.io/packagist/dm/JayBizzle/Crawler-Detect.svg?style=flat-square" /></a> +<a href="https://scrutinizer-ci.com/g/JayBizzle/Crawler-Detect/?branch=master"><img src="https://img.shields.io/scrutinizer/g/JayBizzle/Crawler-Detect.svg?style=flat-square" /></a> +<a href="https://github.com/JayBizzle/Crawler-Detect"><img src="https://img.shields.io/badge/license-MIT-ff69b4.svg?style=flat-square" /></a> +<a href="https://packagist.org/packages/jaybizzle/crawler-detect"><img src="https://img.shields.io/packagist/v/jaybizzle/Crawler-Detect.svg?style=flat-square" /></a> +<a href="https://styleci.io/repos/32755917"><img src="https://styleci.io/repos/32755917/shield" /></a> +<a href="https://coveralls.io/github/JayBizzle/Crawler-Detect"><img src="https://img.shields.io/coveralls/JayBizzle/Crawler-Detect/master.svg?style=flat-square" /></a> +</p> + +## About CrawlerDetect + +CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent and http_from header. Currently able to detect 1,000's of bots/spiders/crawlers. + +### Installation +Run `composer require jaybizzle/crawler-detect 1.*` or add `"jaybizzle/crawler-detect" :"1.*"` to your `composer.json`. + +### Usage +```PHP +use Jaybizzle\CrawlerDetect\CrawlerDetect; + +$CrawlerDetect = new CrawlerDetect; + +// Check the user agent of the current 'visitor' +if($CrawlerDetect->isCrawler()) { + // true if crawler user agent detected +} + +// Pass a user agent as a string +if($CrawlerDetect->isCrawler('Mozilla/5.0 (compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)')) { + // true if crawler user agent detected +} + +// Output the name of the bot that matched (if any) +echo $CrawlerDetect->getMatches(); +``` + +### Contributing +If you find a bot/spider/crawler user agent that CrawlerDetect fails to detect, please submit a pull request with the regex pattern added to the `$data` array in `Fixtures/Crawlers.php` and add the failing user agent to `tests/crawlers.txt`. + +Failing that, just create an issue with the user agent you have found, and we'll take it from there :) + +### Laravel Package +If you would like to use this with Laravel 4/5, please see [Laravel-Crawler-Detect](https://github.com/JayBizzle/Laravel-Crawler-Detect) + +### Symfony Bundle +To use this library with Symfony 2/3/4, check out the [CrawlerDetectBundle](https://github.com/nicolasmure/CrawlerDetectBundle). + +### YII2 Extension +To use this library with the YII2 framework, check out [yii2-crawler-detect](https://github.com/AlikDex/yii2-crawler-detect). + +### ES6 Library +To use this library with NodeJS or any ES6 application based, check out [es6-crawler-detect](https://github.com/JefferyHus/es6-crawler-detect). + +### .NET Library +To use this library in a .net standard (including .net core) based project, check out [NetCrawlerDetect](https://github.com/gplumb/NetCrawlerDetect). + +### Nette Extension +To use this library with the Nette framework, checkout [NetteCrawlerDetect](https://github.com/JanGalek/Crawler-Detect). + +### Ruby Gem + +To use this library with Ruby on Rails or any Ruby-based application, check out [crawler_detect](https://github.com/loadkpi/crawler_detect) gem. + +_Parts of this class are based on the brilliant [MobileDetect](https://github.com/serbanghita/Mobile-Detect)_ + +[![Analytics](https://ga-beacon.appspot.com/UA-72430465-1/Crawler-Detect/readme?pixel)](https://github.com/JayBizzle/Crawler-Detect) diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/composer.json new file mode 100644 index 0000000..0c0babe --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/composer.json @@ -0,0 +1,30 @@ +{ + "name": "jaybizzle/crawler-detect", + "type": "library", + "description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent", + "keywords": ["crawler", "crawler detect", "crawler detector", "crawlerdetect", "php crawler detect"], + "homepage": "https://github.com/JayBizzle/Crawler-Detect/", + "license": "MIT", + "authors": [ + { + "name": "Mark Beech", + "email": "m@rkbee.ch", + "role": "Developer" + } + ], + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.5|^6.5", + "satooshi/php-coveralls": "1.*" + }, + "autoload": { + "psr-4": { + "Jaybizzle\\CrawlerDetect\\": "src/" + } + }, + "scripts": { + "test": "vendor/bin/phpunit" + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/export.php b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/export.php new file mode 100644 index 0000000..4c4b9d5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/export.php @@ -0,0 +1,41 @@ +<?php + +/* + * This file is part of Crawler Detect - the web crawler detection library. + * + * (c) Mark Beech <m@rkbee.ch> + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +require 'src/Fixtures/AbstractProvider.php'; +require 'src/Fixtures/Crawlers.php'; +require 'src/Fixtures/Exclusions.php'; +require 'src/Fixtures/Headers.php'; + +$src = array( + 'Crawlers', + 'Exclusions', + 'Headers', +); + +foreach ($src as $class) { + $class = "Jaybizzle\\CrawlerDetect\\Fixtures\\$class"; + $object = new $class; + + outputJson($object); + outputTxt($object); +} + +function outputJson($object) +{ + $className = (new ReflectionClass($object))->getShortName(); + file_put_contents("raw/$className.json", json_encode($object->getAll())); +} + +function outputTxt($object) +{ + $className = (new ReflectionClass($object))->getShortName(); + file_put_contents("raw/$className.txt", implode($object->getAll(), PHP_EOL)); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Crawlers.json b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Crawlers.json new file mode 100644 index 0000000..888ac30 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Crawlers.json @@ -0,0 +1 @@ +[".*Java.*outbrain"," YLT","^b0t$","^bluefish ","^Calypso v\\\/","^COMODO DCV","^DangDang","^DavClnt","^FDM ","^git\\\/","^Goose\\\/","^Grabber","^HTTPClient\\\/","^Java\\\/","^Jeode\\\/","^Jetty\\\/","^Mail\\\/","^Mget","^Microsoft URL Control","^NG\\\/[0-9\\.]","^NING\\\/","^PHP\\\/[0-9]","^RMA\\\/","^Ruby|Ruby\\\/[0-9]","^VSE\\\/[0-9]","^WordPress\\.com","^XRL\\\/[0-9]","^ZmEu","008\\\/","13TABS","192\\.comAgent","2ip\\.ru","404enemy","7Siters","80legs","a\\.pr-cy\\.ru","a3logics\\.in","A6-Indexer","Abonti","Aboundex","aboutthedomain","Accoona-AI-Agent","acoon","acrylicapps\\.com\\\/pulp","Acunetix","AdAuth\\\/","adbeat","AddThis","ADmantX","AdminLabs","adressendeutschland","adscanner","agentslug","AHC","aihit","aiohttp\\\/","Airmail","akka-http\\\/","akula\\\/","alertra","alexa site audit","Alibaba\\.Security\\.Heimdall","Alligator","allloadin","AllSubmitter","alyze\\.info","amagit","Anarchie","AndroidDownloadManager","Anemone","AngleSharp","annotate_google","Ant\\.com","Anturis Agent","AnyEvent-HTTP\\\/","Apache Droid","Apache OpenOffice","Apache-HttpAsyncClient","Apache-HttpClient","ApacheBench","Apexoo","APIs-Google","AportWorm\\\/","AppBeat\\\/","AppEngine-Google","AppStoreScraperZ","Aprc\\\/[0-9]","Arachmo","arachnode","Arachnophilia","aria2","Arukereso","asafaweb","AskQuickly","Ask Jeeves","ASPSeek","Asterias","Astute","asynchttp","Attach","autocite","Autonomy","axios\\\/","B-l-i-t-z-B-O-T","Backlink-Ceck","backlink-check","BacklinkHttpStatus","BackStreet","BackWeb","Bad-Neighborhood","Badass","baidu\\.com","Bandit","basicstate","BatchFTP","Battleztar Bazinga","baypup\\\/","BazQux","BBBike","BCKLINKS","BDFetch","BegunAdvertising","Bidtellect","BigBozz","Bigfoot","biglotron","BingLocalSearch","BingPreview","binlar","biNu image cacher","Bitacle","biz_Directory","Black Hole","Blackboard Safeassign","BlackWidow","BlockNote\\.Net","Bloglines","Bloglovin","BlogPulseLive","BlogSearch","Blogtrottr","BlowFish","boitho\\.com-dc","BPImageWalker","Braintree-Webhooks","Branch Metrics API","Branch-Passthrough","Brandprotect","BrandVerity","Brandwatch","Brodie\\\/","Browsershots","BUbiNG","Buck\\\/","Buddy","BuiltWith","Bullseye","BunnySlippers","Burf Search","Butterfly\\\/","BuzzSumo","CAAM\\\/[0-9]","CakePHP","Calculon","Canary%20Mail","CaretNail","catexplorador","CC Metadata Scaper","Cegbfeieh","censys","Cerberian Drtrs","CERT\\.at-Statistics-Survey","cg-eye","changedetection","ChangesMeter","Charlotte","CheckHost","checkprivacy","CherryPicker","ChinaClaw","Chirp\\\/","chkme\\.com","Chlooe","Chromaxa","CirrusExplorer","CISPA Vulnerability Notification","Citoid","CJNetworkQuality","Clarsentia","clips\\.ua\\.ac\\.be","Cloud mapping","CloudEndure","CloudFlare-AlwaysOnline","Cloudinary","cmcm\\.com","coccoc","cognitiveseo","colly -","CommaFeed","Commons-HttpClient","commonscan","contactbigdatafr","contentkingapp","convera","CookieReports","copyright sheriff","CopyRightCheck","Copyscape","Cosmos4j\\.feedback","Covario-IDS","Crescent","Crowsnest","Criteo","CSHttp","curb","Curious George","curl","cuwhois\\\/","cybo\\.com","DAP\\\/NetHTTP","DareBoost","DatabaseDriverMysqli","DataCha0s","Datafeedwatch","Datanyze","DataparkSearch","dataprovider","DataXu","Daum(oa)?[ \\\/][0-9]","Demon","DeuSu","developers\\.google\\.com\\\/\\+\\\/web\\\/snippet\\\/","Devil","Digg","Digincore","DigitalPebble","Dirbuster","Disqus\\\/","Dispatch\\\/","DittoSpyder","dlvr","DMBrowser","DNSPod-reporting","docoloc","Dolphin http client","DomainAppender","Donuts Content Explorer","dotMailer content retrieval","dotSemantic","downforeveryoneorjustme","Download Wonder","downnotifier","DowntimeDetector","Drip","drupact","Drupal \\(\\+http:\\\/\\\/drupal\\.org\\\/\\)","DTS Agent","dubaiindex","EARTHCOM","Easy-Thumb","EasyDL","Ebingbong","ec2linkfinder","eCairn-Grabber","eCatch","ECCP","eContext\\\/","Ecxi","EirGrabber","ElectricMonk","elefent","EMail Exractor","EMail Wolf","EmailWolf","Embarcadero","Embed PHP Library","Embedly","endo\\\/","europarchive\\.org","evc-batch","EventMachine HttpClient","Everwall Link Expander","Evidon","Evrinid","ExactSearch","ExaleadCloudview","Excel\\\/","exif","Exploratodo","Express WebPictures","Extreme Picture Finder","EyeNetIE","ezooms","facebookexternalhit","facebookplatform","fairshare","Faraday v","fasthttp","Faveeo","Favicon downloader","faviconkit","FavOrg","Feed Wrangler","Feedable\\\/","Feedbin","FeedBooster","FeedBucket","FeedBunch\\\/","FeedBurner","feeder","Feedly","FeedshowOnline","Feedspot","Feedwind\\\/","FeedZcollector","feeltiptop","Fetch API","Fetch\\\/[0-9]","Fever\\\/[0-9]","FHscan","Fimap","findlink","findthatfile","FlashGet","FlipboardBrowserProxy","FlipboardProxy","FlipboardRSS","Flock\\\/","fluffy","Flunky","flynxapp","forensiq","FoundSeoTool","http:\\\/\\\/www.neomo.de\\\/","free thumbnails","Freeuploader","Funnelback","G-i-g-a-b-o-t","g00g1e\\.net","ganarvisitas","geek-tools","Genieo","GentleSource","GetCode","Getintent","GetLinkInfo","getprismatic","GetRight","getroot","GetURLInfo\\\/","GetWeb","Ghost Inspector","GigablastOpenSource","GIS-LABS","github-camo","github\\.com","Go [\\d\\.]* package http","Go http package","Go-Ahead-Got-It","Go-http-client","Go!Zilla","gobyus","gofetch","GomezAgent","gooblog","Goodzer\\\/","Google AppsViewer","Google Desktop","Google favicon","Google Keyword Suggestion","Google Keyword Tool","Google Page Speed Insights","Google PP Default","Google Search Console","Google Web Preview","Google-Adwords","Google-Apps-Script","Google-Calendar-Importer","Google-HotelAdsVerifier","Google-HTTP-Java-Client","Google-Publisher-Plugin","Google-SearchByImage","Google-Site-Verification","Google-Structured-Data-Testing-Tool","Google-Youtube-Links","google-xrawler","GoogleDocs","GoogleHC\\\/","GoogleProducer","GoogleSites","Google-Transparency-Report","Gookey","GoScraper","GoSpotCheck","gosquared-thumbnailer","Gotit","GoZilla","grabify","GrabNet","Grafula","Grammarly","GrapeFX","Gregarius","GRequests","grokkit","grouphigh","grub-client","gSOAP\\\/","GT::WWW","GTmetrix","GuzzleHttp","gvfs\\\/","HAA(A)?RTLAND http client","Haansoft","hackney\\\/","Hadi Agent","HappyApps-WebCheck","Hatena","Havij","HeadlessChrome","HEADMasterSEO","HeartRails_Capture","help@dataminr\\.com","heritrix","historious","hkedcity","hledejLevne\\.cz","Hloader","HMView","Holmes","HonesoSearchEngine","HootSuite Image proxy","Hootsuite-WebFeed","hosterstats","HostTracker","ht:\\\/\\\/check","htdig","HTMLparser","htmlyse","HTTP Banner Detection","HTTP_Compression_Test","http_request2","http_requester","http-get","HTTP-Header-Abfrage","http-kit","http-request\\\/","HTTP-Tiny","HTTP::Lite","http\\.rb\\\/","http_get","HttpComponents","httphr","HTTPMon","httpRequest","httpscheck","httpssites_power","httpunit","HttpUrlConnection","httrack","huaweisymantec","HubSpot ","Humanlinks","i2kconnect\\\/","Iblog","ichiro","Id-search","IdeelaborPlagiaat","IDG Twitter Links Resolver","IDwhois\\\/","Iframely","igdeSpyder","IlTrovatore","Image Fetch","Image Sucker","ImageEngine\\\/","ImageVisu\\\/","Imagga","imagineeasy","imgsizer","InAGist","inbound\\.li parser","InDesign%20CC","Indy Library","InetURL","infegy","infohelfer","InfoTekies","InfoWizards Reciprocal Link","inpwrd\\.com","instabid","Instapaper","Integrity","integromedb","Intelliseek","InterGET","internet_archive","Internet Ninja","InternetSeer","internetVista monitor","intraVnews","IODC","IOI","iplabel","ips-agent","IPS\\\/[0-9]","IPWorks HTTP\\\/S Component","iqdb\\\/","Iria","Irokez","isitup\\.org","iskanie","isUp\\.li","iThemes Sync\\\/","iZSearch","JAHHO","janforman","Jaunt\\\/","Jbrofuzz","Jersey\\\/","JetCar","Jigsaw","Jobboerse","JobFeed discovery","Jobg8 URL Monitor","jobo","Jobrapido","Jobsearch1\\.5","JoinVision Generic","JolokiaPwn","Joomla","Jorgee","JS-Kit","JustView","Kaspersky Lab CFR link resolver","Kelny\\\/","Kerrigan\\\/","KeyCDN","Keyword Density","Keywords Research","KickFire","KimonoLabs\\\/","Kml-Google","knows\\.is","KOCMOHABT","kouio","kube-probe","kulturarw3","KumKie","L\\.webis","Larbin","Lavf\\\/","LeechFTP","LeechGet","letsencrypt","Lftp","LibVLC","LibWeb","Libwhisker","libwww","Licorne","Liferea\\\/","Lightspeedsystems","Likse","Link Valet","link_thumbnailer","LinkAlarm\\\/","linkCheck","linkdex","LinkExaminer","linkfluence","linkpeek","LinkPreviewGenerator","LinkScan","LinksManager","LinkTiger","LinkWalker","Lipperhey","Litemage_walker","livedoor ScreenShot","LoadImpactRload","localsearch-web","LongURL API","looksystems\\.net","ltx71","lua-resty-http","lwp-request","lwp-trivial","LWP::Simple","lycos","LYT\\.SR","mabontland","Mag-Net","MagpieRSS","Mail\\.Ru","MailChimp","Majestic12","makecontact\\\/","Mandrill","MapperCmd","marketinggrader","MarkMonitor","MarkWatch","Mass Downloader","masscan\\\/","Mata Hari","Mediapartners-Google","mediawords","MegaIndex\\.ru","MeltwaterNews","Melvil Rawi","Metaspinner","MetaURI","MFC_Tear_Sample","Microsearch","Microsoft Office ","Microsoft Outlook","Microsoft Windows Network Diagnostics","Microsoft-WebDAV-MiniRedir","Microsoft Data Access","MIDown tool","MIIxpc","Mindjet","Miniature\\.io","Miniflux","Mister PiX","mixdata dot com","mixed-content-scan","Mixmax-LinkPreview","mixnode","Mnogosearch","mogimogi","Mojeek","Mojolicious \\(Perl\\)","Monit\\\/","monitis","Monitority\\\/","montastic","MonTools","Moreover","Morfeus Fucking Scanner","Morning Paper","MovableType","mowser","Mrcgiguy","MS Web Services Client Protocol","MSFrontPage","mShots","MuckRack\\\/","muhstik-scan","MVAClient","MxToolbox\\\/","nagios","Najdi\\.si","Name Intelligence","Nameprotect","Navroad","NearSite","Needle","Nessus","Net Vampire","NetAnts","NETCRAFT","NetLyzer","NetMechanic","NetNewsWire","Netpursual","netresearch","NetShelter ContentScan","Netsparker","NetTrack","Netvibes","NetZIP","Neustar WPM","NeutrinoAPI","NewRelicPinger","NewsBlur .*Finder","NewsGator","newsme","newspaper\\\/","Nexgate Ruby Client","NG-Search","Nibbler","NICErsPRO","Nikto","nineconnections","NLNZ_IAHarvester","Nmap Scripting Engine","node-superagent","node-urllib","node\\.io","Nodemeter","NodePing","nominet\\.org\\.uk","Norton-Safeweb","Notifixious","notifyninja","nuhk","nutch","Nuzzel","nWormFeedFinder","nyawc\\\/","Nymesis","NYU","Ocelli\\\/","Octopus","oegp","Offline Explorer","Offline Navigator","og-scraper","okhttp","omgili","OMSC","Online Domain Tools","OpenCalaisSemanticProxy","Openfind","OpenLinkProfiler","Openstat\\\/","OpenVAS","Optimizer","Orbiter","OrgProbe\\\/","orion-semantics","Outlook-Express","Outlook-iOS","ow\\.ly","Owler","ownCloud News","OxfordCloudService","Page Valet","page_verifier","page scorer","page2rss","PageGrabber","PagePeeker","PageScorer","Pagespeed\\\/","Panopta","panscient","Papa Foto","parsijoo","Pavuk","PayPal IPN","pcBrowser","Pcore-HTTP","Pearltrees","PECL::HTTP","peerindex","Peew","PeoplePal","Perlu -","PhantomJS Screenshoter","PhantomJS\\\/","Photon\\\/","phpservermon","Pi-Monster","Picscout","Picsearch","PictureFinder","Pimonster","ping\\.blo\\.gs","Pingability","PingAdmin\\.Ru","Pingdom","Pingoscope","PingSpot","pinterest\\.com","Pixray","Pizilla","Plagger\\\/","Ploetz \\+ Zeller","Plukkie","plumanalytics","PocketImageCache","PocketParser","Pockey","POE-Component-Client-HTTP","Polymail\\\/","Pompos","Porkbun","Port Monitor","postano","PostmanRuntime","PostPost","postrank","PowerPoint\\\/","Priceonomics Analysis Engine","PrintFriendly","PritTorrent","Prlog","probethenet","Project 25499","prospectb2b","Protopage","ProWebWalker","proximic","PRTG Network Monitor","pshtt, https scanning","PTST ","PTST\\\/[0-9]+","Pulsepoint XT3 web scraper","Pump","Python-httplib2","python-requests","Python-urllib","Qirina Hurdler","QQDownload","QrafterPro","Qseero","Qualidator","QueryN Metasearch","queuedriver","Quora Link Preview","Qwantify","Radian6","RankActive","RankFlex","RankSonicSiteAuditor","Re-re Studio","Readability","RealDownload","RealPlayer%20Downloader","RebelMouse","Recorder","RecurPost\\\/","redback\\\/","ReederForMac","ReGet","RepoMonkey","request\\.js","ResponseCodeTest","RestSharp","Riddler","Rival IQ","Robosourcer","Robozilla","ROI Hunter","RPT-HTTPClient","RSSOwl","safe-agent-scanner","SalesIntelligent","Saleslift","Sendsay\\.Ru","SauceNAO","SBIder","scalaj-http","scan\\.lol","ScanAlert","Scoop","scooter","ScoutJet","ScoutURLMonitor","ScrapeBox Page Scanner","SimpleScraper","Scrapy","Screaming","ScreenShotService","Scrubby","Scrutiny\\\/","search\\.thunderstone","Search37","searchenginepromotionhelp","Searchestate","SearchExpress","SearchSight","Seeker","semanticdiscovery","semanticjuice","Semiocast HTTP client","Semrush","sentry\\\/","SEO Browser","Seo Servis","seo-nastroj\\.cz","seo4ajax","Seobility","SEOCentro","SeoCheck","SEOkicks","Seomoz","SEOprofiler","SEOsearch","seoscanners","seositecheckup","SEOstats","servernfo","sexsearcher","Seznam","Shelob","Shodan","Shoppimon","ShopWiki","ShortLinkTranslate","shrinktheweb","Sideqik","SimplePie","SimplyFast","Siphon","SISTRIX","Site-Shot\\\/","Site Sucker","Site24x7","SiteBar","Sitebeam","Sitebulb\\\/","SiteCondor","SiteExplorer","SiteGuardian","Siteimprove","SiteIndexed","Sitemap(s)? Generator","SitemapGenerator","SiteMonitor","Siteshooter B0t","SiteSnagger","SiteSucker","SiteTruth","Sitevigil","sitexy\\.com","SkypeUriPreview","Slack\\\/","slider\\.com","slurp","SlySearch","SmartDownload","SMRF URL Expander","SMUrlExpander","Snake","Snappy","SnapSearch","Snarfer\\\/","SniffRSS","sniptracker","Snoopy","SnowHaze Search","sogou web","SortSite","Sottopop","sovereign\\.ai","SpaceBison","SpamExperts","Spammen","Spanner","spaziodati","SPDYCheck","Specificfeeds","speedy","SPEng","Spinn3r","spray-can","Sprinklr ","spyonweb","sqlmap","Sqlworm","Sqworm","SSL Labs","ssl-tools","StackRambler","Statastico\\\/","StatusCake","Steeler","Stratagems Kumo","Stroke\\.cz","StudioFACA","StumbleUpon","suchen","Sucuri","summify","SuperHTTP","Surphace Scout","Suzuran","SwiteScraper","Symfony BrowserKit","Symfony2 BrowserKit","SynHttpClient-Built","Sysomos","sysscan","Szukacz","T0PHackTeam","tAkeOut","Tarantula\\\/","Taringa UGC","TarmotGezgin","Teleport","Telesoft","Telesphoreo","Telesphorep","Tenon\\.io","teoma","terrainformatica","Test Certificate Info","testuri","Tetrahedron","The Drop Reaper","The Expert HTML Source Viewer","The Knowledge AI","The Intraformant","theinternetrules","TheNomad","Thinklab","Thumbshots","ThumbSniper","timewe\\.net","TinEye","Tiny Tiny RSS","TLSProbe\\\/","Toata","topster","touche\\.com","Traackr\\.com","tracemyfile","TrapitAgent","Trendiction","Trendsmap","trendspottr","truwoGPS","TryJsoup","TulipChain","Turingos","Turnitin","tweetedtimes","Tweetminster","Tweezler\\\/","twibble","Twice","Twikle","Twingly","Twisted PageGetter","Typhoeus","ubermetrics-technologies","uclassify","UdmSearch","unirest-java","UniversalFeedParser","Unshorten\\.It","Untiny","UnwindFetchor","updated","updown\\.io daemon","Upflow","Uptimia","URL Verifier","URLitor","urlresolver","Urlstat","UrlTrends Ranking Updater","URLy Warning","URLy\\.Warning","Vacuum","Vagabondo","VB Project","vBSEO","VCI","via ggpht\\.com GoogleImageProxy","VidibleScraper","Virusdie","visionutils","vkShare","VoidEYE","Voil","voltron","voyager\\\/","VSAgent\\\/","VSB-TUO\\\/","Vulnbusters Meter","VYU2","w3af\\.org","W3C_Unicorn","W3C-checklink","W3C-mobileOK","WAC-OFU","Wallpapers\\\/[0-9]+","WallpapersHD","wangling","Wappalyzer","WatchMouse","WbSrch\\\/","WDT\\.io","web-capture\\.net","Web-sniffer","Web Auto","Web Collage","Web Enhancer","Web Fetch","Web Fuck","Web Pix","Web Sauger","Web Sucker","Webalta","Webauskunft","WebAuto","WebCapture","WebClient\\\/","webcollage","WebCookies","WebCopier","WebCorp","WebDataStats","WebDoc","WebEnhancer","WebFetch","WebFuck","WebGazer","WebGo IS","WebImageCollector","WebImages","WebIndex","webkit2png","WebLeacher","webmastercoffee","webmon ","WebPix","WebReaper","WebSauger","webscreenie","Webshag","Webshot","Website Quester","websitepulse agent","WebsiteQuester","Websnapr","WebSniffer","Webster","WebStripper","WebSucker","Webthumb\\\/","WebThumbnail","WebWhacker","WebZIP","WeLikeLinks","WEPA","WeSEE","wf84","Wfuzz\\\/","wget","WhatsApp","WhatsMyIP","WhatWeb","WhereGoes\\?","Whibse","WhoRunsCoinHive","Whynder Magnet","Windows-RSS-Platform","WinPodder","wkhtmlto","wmtips","Woko","Word\\\/","WordPress\\\/","WordupinfoSearch","wotbox","WP Engine Install Performance API","wpif","wprecon\\.com survey","WPScan","wscheck","Wtrace","WWW-Collector-E","WWW-Mechanize","WWW::Document","WWW::Mechanize","www\\.monitor\\.us","WWWOFFLE","x09Mozilla","x22Mozilla","XaxisSemanticsClassifier","Xenu Link Sleuth","XING-contenttabreceiver","xpymep([0-9]?)\\.exe","Y!J-(ASR|BSC)","Y\\!J-BRW","Yaanb","yacy","Yahoo Link Preview","YahooCacheSystem","YahooYSMcm","YandeG","Yandex(?!Search)","yanga","yeti","Yo-yo","Yoleo Consumer","yoogliFetchAgent","YottaaMonitor","Your-Website-Sucks","yourls\\.org","YoYs\\.net","YP\\.PL","Zabbix","Zade","Zao","Zauba","Zemanta Aggregator","Zend_Http_Client","Zend\\\\Http\\\\Client","Zermelo","Zeus","zgrab","ZnajdzFoto","Zombie\\.js","Zoom\\.Mac","ZyBorg","[a-z0-9\\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer)"] \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt new file mode 100644 index 0000000..ee2787b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt @@ -0,0 +1,1203 @@ +.*Java.*outbrain + YLT +^b0t$ +^bluefish +^Calypso v\/ +^COMODO DCV +^DangDang +^DavClnt +^FDM +^git\/ +^Goose\/ +^Grabber +^HTTPClient\/ +^Java\/ +^Jeode\/ +^Jetty\/ +^Mail\/ +^Mget +^Microsoft URL Control +^NG\/[0-9\.] +^NING\/ +^PHP\/[0-9] +^RMA\/ +^Ruby|Ruby\/[0-9] +^VSE\/[0-9] +^WordPress\.com +^XRL\/[0-9] +^ZmEu +008\/ +13TABS +192\.comAgent +2ip\.ru +404enemy +7Siters +80legs +a\.pr-cy\.ru +a3logics\.in +A6-Indexer +Abonti +Aboundex +aboutthedomain +Accoona-AI-Agent +acoon +acrylicapps\.com\/pulp +Acunetix +AdAuth\/ +adbeat +AddThis +ADmantX +AdminLabs +adressendeutschland +adscanner +agentslug +AHC +aihit +aiohttp\/ +Airmail +akka-http\/ +akula\/ +alertra +alexa site audit +Alibaba\.Security\.Heimdall +Alligator +allloadin +AllSubmitter +alyze\.info +amagit +Anarchie +AndroidDownloadManager +Anemone +AngleSharp +annotate_google +Ant\.com +Anturis Agent +AnyEvent-HTTP\/ +Apache Droid +Apache OpenOffice +Apache-HttpAsyncClient +Apache-HttpClient +ApacheBench +Apexoo +APIs-Google +AportWorm\/ +AppBeat\/ +AppEngine-Google +AppStoreScraperZ +Aprc\/[0-9] +Arachmo +arachnode +Arachnophilia +aria2 +Arukereso +asafaweb +AskQuickly +Ask Jeeves +ASPSeek +Asterias +Astute +asynchttp +Attach +autocite +Autonomy +axios\/ +B-l-i-t-z-B-O-T +Backlink-Ceck +backlink-check +BacklinkHttpStatus +BackStreet +BackWeb +Bad-Neighborhood +Badass +baidu\.com +Bandit +basicstate +BatchFTP +Battleztar Bazinga +baypup\/ +BazQux +BBBike +BCKLINKS +BDFetch +BegunAdvertising +Bidtellect +BigBozz +Bigfoot +biglotron +BingLocalSearch +BingPreview +binlar +biNu image cacher +Bitacle +biz_Directory +Black Hole +Blackboard Safeassign +BlackWidow +BlockNote\.Net +Bloglines +Bloglovin +BlogPulseLive +BlogSearch +Blogtrottr +BlowFish +boitho\.com-dc +BPImageWalker +Braintree-Webhooks +Branch Metrics API +Branch-Passthrough +Brandprotect +BrandVerity +Brandwatch +Brodie\/ +Browsershots +BUbiNG +Buck\/ +Buddy +BuiltWith +Bullseye +BunnySlippers +Burf Search +Butterfly\/ +BuzzSumo +CAAM\/[0-9] +CakePHP +Calculon +Canary%20Mail +CaretNail +catexplorador +CC Metadata Scaper +Cegbfeieh +censys +Cerberian Drtrs +CERT\.at-Statistics-Survey +cg-eye +changedetection +ChangesMeter +Charlotte +CheckHost +checkprivacy +CherryPicker +ChinaClaw +Chirp\/ +chkme\.com +Chlooe +Chromaxa +CirrusExplorer +CISPA Vulnerability Notification +Citoid +CJNetworkQuality +Clarsentia +clips\.ua\.ac\.be +Cloud mapping +CloudEndure +CloudFlare-AlwaysOnline +Cloudinary +cmcm\.com +coccoc +cognitiveseo +colly - +CommaFeed +Commons-HttpClient +commonscan +contactbigdatafr +contentkingapp +convera +CookieReports +copyright sheriff +CopyRightCheck +Copyscape +Cosmos4j\.feedback +Covario-IDS +Crescent +Crowsnest +Criteo +CSHttp +curb +Curious George +curl +cuwhois\/ +cybo\.com +DAP\/NetHTTP +DareBoost +DatabaseDriverMysqli +DataCha0s +Datafeedwatch +Datanyze +DataparkSearch +dataprovider +DataXu +Daum(oa)?[ \/][0-9] +Demon +DeuSu +developers\.google\.com\/\+\/web\/snippet\/ +Devil +Digg +Digincore +DigitalPebble +Dirbuster +Disqus\/ +Dispatch\/ +DittoSpyder +dlvr +DMBrowser +DNSPod-reporting +docoloc +Dolphin http client +DomainAppender +Donuts Content Explorer +dotMailer content retrieval +dotSemantic +downforeveryoneorjustme +Download Wonder +downnotifier +DowntimeDetector +Drip +drupact +Drupal \(\+http:\/\/drupal\.org\/\) +DTS Agent +dubaiindex +EARTHCOM +Easy-Thumb +EasyDL +Ebingbong +ec2linkfinder +eCairn-Grabber +eCatch +ECCP +eContext\/ +Ecxi +EirGrabber +ElectricMonk +elefent +EMail Exractor +EMail Wolf +EmailWolf +Embarcadero +Embed PHP Library +Embedly +endo\/ +europarchive\.org +evc-batch +EventMachine HttpClient +Everwall Link Expander +Evidon +Evrinid +ExactSearch +ExaleadCloudview +Excel\/ +exif +Exploratodo +Express WebPictures +Extreme Picture Finder +EyeNetIE +ezooms +facebookexternalhit +facebookplatform +fairshare +Faraday v +fasthttp +Faveeo +Favicon downloader +faviconkit +FavOrg +Feed Wrangler +Feedable\/ +Feedbin +FeedBooster +FeedBucket +FeedBunch\/ +FeedBurner +feeder +Feedly +FeedshowOnline +Feedspot +Feedwind\/ +FeedZcollector +feeltiptop +Fetch API +Fetch\/[0-9] +Fever\/[0-9] +FHscan +Fimap +findlink +findthatfile +FlashGet +FlipboardBrowserProxy +FlipboardProxy +FlipboardRSS +Flock\/ +fluffy +Flunky +flynxapp +forensiq +FoundSeoTool +http:\/\/www.neomo.de\/ +free thumbnails +Freeuploader +Funnelback +G-i-g-a-b-o-t +g00g1e\.net +ganarvisitas +geek-tools +Genieo +GentleSource +GetCode +Getintent +GetLinkInfo +getprismatic +GetRight +getroot +GetURLInfo\/ +GetWeb +Ghost Inspector +GigablastOpenSource +GIS-LABS +github-camo +github\.com +Go [\d\.]* package http +Go http package +Go-Ahead-Got-It +Go-http-client +Go!Zilla +gobyus +gofetch +GomezAgent +gooblog +Goodzer\/ +Google AppsViewer +Google Desktop +Google favicon +Google Keyword Suggestion +Google Keyword Tool +Google Page Speed Insights +Google PP Default +Google Search Console +Google Web Preview +Google-Adwords +Google-Apps-Script +Google-Calendar-Importer +Google-HotelAdsVerifier +Google-HTTP-Java-Client +Google-Publisher-Plugin +Google-SearchByImage +Google-Site-Verification +Google-Structured-Data-Testing-Tool +Google-Youtube-Links +google-xrawler +GoogleDocs +GoogleHC\/ +GoogleProducer +GoogleSites +Google-Transparency-Report +Gookey +GoScraper +GoSpotCheck +gosquared-thumbnailer +Gotit +GoZilla +grabify +GrabNet +Grafula +Grammarly +GrapeFX +Gregarius +GRequests +grokkit +grouphigh +grub-client +gSOAP\/ +GT::WWW +GTmetrix +GuzzleHttp +gvfs\/ +HAA(A)?RTLAND http client +Haansoft +hackney\/ +Hadi Agent +HappyApps-WebCheck +Hatena +Havij +HeadlessChrome +HEADMasterSEO +HeartRails_Capture +help@dataminr\.com +heritrix +historious +hkedcity +hledejLevne\.cz +Hloader +HMView +Holmes +HonesoSearchEngine +HootSuite Image proxy +Hootsuite-WebFeed +hosterstats +HostTracker +ht:\/\/check +htdig +HTMLparser +htmlyse +HTTP Banner Detection +HTTP_Compression_Test +http_request2 +http_requester +http-get +HTTP-Header-Abfrage +http-kit +http-request\/ +HTTP-Tiny +HTTP::Lite +http\.rb\/ +http_get +HttpComponents +httphr +HTTPMon +httpRequest +httpscheck +httpssites_power +httpunit +HttpUrlConnection +httrack +huaweisymantec +HubSpot +Humanlinks +i2kconnect\/ +Iblog +ichiro +Id-search +IdeelaborPlagiaat +IDG Twitter Links Resolver +IDwhois\/ +Iframely +igdeSpyder +IlTrovatore +Image Fetch +Image Sucker +ImageEngine\/ +ImageVisu\/ +Imagga +imagineeasy +imgsizer +InAGist +inbound\.li parser +InDesign%20CC +Indy Library +InetURL +infegy +infohelfer +InfoTekies +InfoWizards Reciprocal Link +inpwrd\.com +instabid +Instapaper +Integrity +integromedb +Intelliseek +InterGET +internet_archive +Internet Ninja +InternetSeer +internetVista monitor +intraVnews +IODC +IOI +iplabel +ips-agent +IPS\/[0-9] +IPWorks HTTP\/S Component +iqdb\/ +Iria +Irokez +isitup\.org +iskanie +isUp\.li +iThemes Sync\/ +iZSearch +JAHHO +janforman +Jaunt\/ +Jbrofuzz +Jersey\/ +JetCar +Jigsaw +Jobboerse +JobFeed discovery +Jobg8 URL Monitor +jobo +Jobrapido +Jobsearch1\.5 +JoinVision Generic +JolokiaPwn +Joomla +Jorgee +JS-Kit +JustView +Kaspersky Lab CFR link resolver +Kelny\/ +Kerrigan\/ +KeyCDN +Keyword Density +Keywords Research +KickFire +KimonoLabs\/ +Kml-Google +knows\.is +KOCMOHABT +kouio +kube-probe +kulturarw3 +KumKie +L\.webis +Larbin +Lavf\/ +LeechFTP +LeechGet +letsencrypt +Lftp +LibVLC +LibWeb +Libwhisker +libwww +Licorne +Liferea\/ +Lightspeedsystems +Likse +Link Valet +link_thumbnailer +LinkAlarm\/ +linkCheck +linkdex +LinkExaminer +linkfluence +linkpeek +LinkPreviewGenerator +LinkScan +LinksManager +LinkTiger +LinkWalker +Lipperhey +Litemage_walker +livedoor ScreenShot +LoadImpactRload +localsearch-web +LongURL API +looksystems\.net +ltx71 +lua-resty-http +lwp-request +lwp-trivial +LWP::Simple +lycos +LYT\.SR +mabontland +Mag-Net +MagpieRSS +Mail\.Ru +MailChimp +Majestic12 +makecontact\/ +Mandrill +MapperCmd +marketinggrader +MarkMonitor +MarkWatch +Mass Downloader +masscan\/ +Mata Hari +Mediapartners-Google +mediawords +MegaIndex\.ru +MeltwaterNews +Melvil Rawi +Metaspinner +MetaURI +MFC_Tear_Sample +Microsearch +Microsoft Office +Microsoft Outlook +Microsoft Windows Network Diagnostics +Microsoft-WebDAV-MiniRedir +Microsoft Data Access +MIDown tool +MIIxpc +Mindjet +Miniature\.io +Miniflux +Mister PiX +mixdata dot com +mixed-content-scan +Mixmax-LinkPreview +mixnode +Mnogosearch +mogimogi +Mojeek +Mojolicious \(Perl\) +Monit\/ +monitis +Monitority\/ +montastic +MonTools +Moreover +Morfeus Fucking Scanner +Morning Paper +MovableType +mowser +Mrcgiguy +MS Web Services Client Protocol +MSFrontPage +mShots +MuckRack\/ +muhstik-scan +MVAClient +MxToolbox\/ +nagios +Najdi\.si +Name Intelligence +Nameprotect +Navroad +NearSite +Needle +Nessus +Net Vampire +NetAnts +NETCRAFT +NetLyzer +NetMechanic +NetNewsWire +Netpursual +netresearch +NetShelter ContentScan +Netsparker +NetTrack +Netvibes +NetZIP +Neustar WPM +NeutrinoAPI +NewRelicPinger +NewsBlur .*Finder +NewsGator +newsme +newspaper\/ +Nexgate Ruby Client +NG-Search +Nibbler +NICErsPRO +Nikto +nineconnections +NLNZ_IAHarvester +Nmap Scripting Engine +node-superagent +node-urllib +node\.io +Nodemeter +NodePing +nominet\.org\.uk +Norton-Safeweb +Notifixious +notifyninja +nuhk +nutch +Nuzzel +nWormFeedFinder +nyawc\/ +Nymesis +NYU +Ocelli\/ +Octopus +oegp +Offline Explorer +Offline Navigator +og-scraper +okhttp +omgili +OMSC +Online Domain Tools +OpenCalaisSemanticProxy +Openfind +OpenLinkProfiler +Openstat\/ +OpenVAS +Optimizer +Orbiter +OrgProbe\/ +orion-semantics +Outlook-Express +Outlook-iOS +ow\.ly +Owler +ownCloud News +OxfordCloudService +Page Valet +page_verifier +page scorer +page2rss +PageGrabber +PagePeeker +PageScorer +Pagespeed\/ +Panopta +panscient +Papa Foto +parsijoo +Pavuk +PayPal IPN +pcBrowser +Pcore-HTTP +Pearltrees +PECL::HTTP +peerindex +Peew +PeoplePal +Perlu - +PhantomJS Screenshoter +PhantomJS\/ +Photon\/ +phpservermon +Pi-Monster +Picscout +Picsearch +PictureFinder +Pimonster +ping\.blo\.gs +Pingability +PingAdmin\.Ru +Pingdom +Pingoscope +PingSpot +pinterest\.com +Pixray +Pizilla +Plagger\/ +Ploetz \+ Zeller +Plukkie +plumanalytics +PocketImageCache +PocketParser +Pockey +POE-Component-Client-HTTP +Polymail\/ +Pompos +Porkbun +Port Monitor +postano +PostmanRuntime +PostPost +postrank +PowerPoint\/ +Priceonomics Analysis Engine +PrintFriendly +PritTorrent +Prlog +probethenet +Project 25499 +prospectb2b +Protopage +ProWebWalker +proximic +PRTG Network Monitor +pshtt, https scanning +PTST +PTST\/[0-9]+ +Pulsepoint XT3 web scraper +Pump +Python-httplib2 +python-requests +Python-urllib +Qirina Hurdler +QQDownload +QrafterPro +Qseero +Qualidator +QueryN Metasearch +queuedriver +Quora Link Preview +Qwantify +Radian6 +RankActive +RankFlex +RankSonicSiteAuditor +Re-re Studio +Readability +RealDownload +RealPlayer%20Downloader +RebelMouse +Recorder +RecurPost\/ +redback\/ +ReederForMac +ReGet +RepoMonkey +request\.js +ResponseCodeTest +RestSharp +Riddler +Rival IQ +Robosourcer +Robozilla +ROI Hunter +RPT-HTTPClient +RSSOwl +safe-agent-scanner +SalesIntelligent +Saleslift +Sendsay\.Ru +SauceNAO +SBIder +scalaj-http +scan\.lol +ScanAlert +Scoop +scooter +ScoutJet +ScoutURLMonitor +ScrapeBox Page Scanner +SimpleScraper +Scrapy +Screaming +ScreenShotService +Scrubby +Scrutiny\/ +search\.thunderstone +Search37 +searchenginepromotionhelp +Searchestate +SearchExpress +SearchSight +Seeker +semanticdiscovery +semanticjuice +Semiocast HTTP client +Semrush +sentry\/ +SEO Browser +Seo Servis +seo-nastroj\.cz +seo4ajax +Seobility +SEOCentro +SeoCheck +SEOkicks +Seomoz +SEOprofiler +SEOsearch +seoscanners +seositecheckup +SEOstats +servernfo +sexsearcher +Seznam +Shelob +Shodan +Shoppimon +ShopWiki +ShortLinkTranslate +shrinktheweb +Sideqik +SimplePie +SimplyFast +Siphon +SISTRIX +Site-Shot\/ +Site Sucker +Site24x7 +SiteBar +Sitebeam +Sitebulb\/ +SiteCondor +SiteExplorer +SiteGuardian +Siteimprove +SiteIndexed +Sitemap(s)? Generator +SitemapGenerator +SiteMonitor +Siteshooter B0t +SiteSnagger +SiteSucker +SiteTruth +Sitevigil +sitexy\.com +SkypeUriPreview +Slack\/ +slider\.com +slurp +SlySearch +SmartDownload +SMRF URL Expander +SMUrlExpander +Snake +Snappy +SnapSearch +Snarfer\/ +SniffRSS +sniptracker +Snoopy +SnowHaze Search +sogou web +SortSite +Sottopop +sovereign\.ai +SpaceBison +SpamExperts +Spammen +Spanner +spaziodati +SPDYCheck +Specificfeeds +speedy +SPEng +Spinn3r +spray-can +Sprinklr +spyonweb +sqlmap +Sqlworm +Sqworm +SSL Labs +ssl-tools +StackRambler +Statastico\/ +StatusCake +Steeler +Stratagems Kumo +Stroke\.cz +StudioFACA +StumbleUpon +suchen +Sucuri +summify +SuperHTTP +Surphace Scout +Suzuran +SwiteScraper +Symfony BrowserKit +Symfony2 BrowserKit +SynHttpClient-Built +Sysomos +sysscan +Szukacz +T0PHackTeam +tAkeOut +Tarantula\/ +Taringa UGC +TarmotGezgin +Teleport +Telesoft +Telesphoreo +Telesphorep +Tenon\.io +teoma +terrainformatica +Test Certificate Info +testuri +Tetrahedron +The Drop Reaper +The Expert HTML Source Viewer +The Knowledge AI +The Intraformant +theinternetrules +TheNomad +Thinklab +Thumbshots +ThumbSniper +timewe\.net +TinEye +Tiny Tiny RSS +TLSProbe\/ +Toata +topster +touche\.com +Traackr\.com +tracemyfile +TrapitAgent +Trendiction +Trendsmap +trendspottr +truwoGPS +TryJsoup +TulipChain +Turingos +Turnitin +tweetedtimes +Tweetminster +Tweezler\/ +twibble +Twice +Twikle +Twingly +Twisted PageGetter +Typhoeus +ubermetrics-technologies +uclassify +UdmSearch +unirest-java +UniversalFeedParser +Unshorten\.It +Untiny +UnwindFetchor +updated +updown\.io daemon +Upflow +Uptimia +URL Verifier +URLitor +urlresolver +Urlstat +UrlTrends Ranking Updater +URLy Warning +URLy\.Warning +Vacuum +Vagabondo +VB Project +vBSEO +VCI +via ggpht\.com GoogleImageProxy +VidibleScraper +Virusdie +visionutils +vkShare +VoidEYE +Voil +voltron +voyager\/ +VSAgent\/ +VSB-TUO\/ +Vulnbusters Meter +VYU2 +w3af\.org +W3C_Unicorn +W3C-checklink +W3C-mobileOK +WAC-OFU +Wallpapers\/[0-9]+ +WallpapersHD +wangling +Wappalyzer +WatchMouse +WbSrch\/ +WDT\.io +web-capture\.net +Web-sniffer +Web Auto +Web Collage +Web Enhancer +Web Fetch +Web Fuck +Web Pix +Web Sauger +Web Sucker +Webalta +Webauskunft +WebAuto +WebCapture +WebClient\/ +webcollage +WebCookies +WebCopier +WebCorp +WebDataStats +WebDoc +WebEnhancer +WebFetch +WebFuck +WebGazer +WebGo IS +WebImageCollector +WebImages +WebIndex +webkit2png +WebLeacher +webmastercoffee +webmon +WebPix +WebReaper +WebSauger +webscreenie +Webshag +Webshot +Website Quester +websitepulse agent +WebsiteQuester +Websnapr +WebSniffer +Webster +WebStripper +WebSucker +Webthumb\/ +WebThumbnail +WebWhacker +WebZIP +WeLikeLinks +WEPA +WeSEE +wf84 +Wfuzz\/ +wget +WhatsApp +WhatsMyIP +WhatWeb +WhereGoes\? +Whibse +WhoRunsCoinHive +Whynder Magnet +Windows-RSS-Platform +WinPodder +wkhtmlto +wmtips +Woko +Word\/ +WordPress\/ +WordupinfoSearch +wotbox +WP Engine Install Performance API +wpif +wprecon\.com survey +WPScan +wscheck +Wtrace +WWW-Collector-E +WWW-Mechanize +WWW::Document +WWW::Mechanize +www\.monitor\.us +WWWOFFLE +x09Mozilla +x22Mozilla +XaxisSemanticsClassifier +Xenu Link Sleuth +XING-contenttabreceiver +xpymep([0-9]?)\.exe +Y!J-(ASR|BSC) +Y\!J-BRW +Yaanb +yacy +Yahoo Link Preview +YahooCacheSystem +YahooYSMcm +YandeG +Yandex(?!Search) +yanga +yeti +Yo-yo +Yoleo Consumer +yoogliFetchAgent +YottaaMonitor +Your-Website-Sucks +yourls\.org +YoYs\.net +YP\.PL +Zabbix +Zade +Zao +Zauba +Zemanta Aggregator +Zend_Http_Client +Zend\\Http\\Client +Zermelo +Zeus +zgrab +ZnajdzFoto +Zombie\.js +Zoom\.Mac +ZyBorg +[a-z0-9\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer) \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Exclusions.json b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Exclusions.json new file mode 100644 index 0000000..76f4cea --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Exclusions.json @@ -0,0 +1 @@ +["Safari.[\\d\\.]*","Firefox.[\\d\\.]*"," Chrome.[\\d\\.]*","Chromium.[\\d\\.]*","MSIE.[\\d\\.]","Opera\\\/[\\d\\.]*","Mozilla.[\\d\\.]*","AppleWebKit.[\\d\\.]*","Trident.[\\d\\.]*","Windows NT.[\\d\\.]*","Android [\\d\\.]*","Macintosh.","Ubuntu","Linux","[ ]Intel","Mac OS X [\\d_]*","(like )?Gecko(.[\\d\\.]*)?","KHTML,","CriOS.[\\d\\.]*","CPU iPhone OS ([0-9_])* like Mac OS X","CPU OS ([0-9_])* like Mac OS X","iPod","compatible","x86_..","i686","x64","X11","rv:[\\d\\.]*","Version.[\\d\\.]*","WOW64","Win64","Dalvik.[\\d\\.]*"," \\.NET CLR [\\d\\.]*","Presto.[\\d\\.]*","Media Center PC","BlackBerry","Build","Opera Mini\\\/\\d{1,2}\\.\\d{1,2}\\.[\\d\\.]*\\\/\\d{1,2}\\.","Opera"," \\.NET[\\d\\.]*","cubot","; M bot","; B bot","; IDbot","; ID bot","; POWER BOT",";"] \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt new file mode 100644 index 0000000..72caee2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt @@ -0,0 +1,47 @@ +Safari.[\d\.]* +Firefox.[\d\.]* + Chrome.[\d\.]* +Chromium.[\d\.]* +MSIE.[\d\.] +Opera\/[\d\.]* +Mozilla.[\d\.]* +AppleWebKit.[\d\.]* +Trident.[\d\.]* +Windows NT.[\d\.]* +Android [\d\.]* +Macintosh. +Ubuntu +Linux +[ ]Intel +Mac OS X [\d_]* +(like )?Gecko(.[\d\.]*)? +KHTML, +CriOS.[\d\.]* +CPU iPhone OS ([0-9_])* like Mac OS X +CPU OS ([0-9_])* like Mac OS X +iPod +compatible +x86_.. +i686 +x64 +X11 +rv:[\d\.]* +Version.[\d\.]* +WOW64 +Win64 +Dalvik.[\d\.]* + \.NET CLR [\d\.]* +Presto.[\d\.]* +Media Center PC +BlackBerry +Build +Opera Mini\/\d{1,2}\.\d{1,2}\.[\d\.]*\/\d{1,2}\. +Opera + \.NET[\d\.]* +cubot +; M bot +; B bot +; IDbot +; ID bot +; POWER BOT +; \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Headers.json b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Headers.json new file mode 100644 index 0000000..718f7f6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Headers.json @@ -0,0 +1 @@ +["HTTP_USER_AGENT","HTTP_X_OPERAMINI_PHONE_UA","HTTP_X_DEVICE_USER_AGENT","HTTP_X_ORIGINAL_USER_AGENT","HTTP_X_SKYFIRE_PHONE","HTTP_X_BOLT_PHONE_UA","HTTP_DEVICE_STOCK_UA","HTTP_X_UCBROWSER_DEVICE_UA","HTTP_FROM","HTTP_X_SCANNER"] \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Headers.txt b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Headers.txt new file mode 100644 index 0000000..5e1ae32 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/raw/Headers.txt @@ -0,0 +1,10 @@ +HTTP_USER_AGENT +HTTP_X_OPERAMINI_PHONE_UA +HTTP_X_DEVICE_USER_AGENT +HTTP_X_ORIGINAL_USER_AGENT +HTTP_X_SKYFIRE_PHONE +HTTP_X_BOLT_PHONE_UA +HTTP_DEVICE_STOCK_UA +HTTP_X_UCBROWSER_DEVICE_UA +HTTP_FROM +HTTP_X_SCANNER \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php new file mode 100644 index 0000000..44f909b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php @@ -0,0 +1,193 @@ +<?php + +/* + * This file is part of Crawler Detect - the web crawler detection library. + * + * (c) Mark Beech <m@rkbee.ch> + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Jaybizzle\CrawlerDetect; + +use Jaybizzle\CrawlerDetect\Fixtures\Headers; +use Jaybizzle\CrawlerDetect\Fixtures\Crawlers; +use Jaybizzle\CrawlerDetect\Fixtures\Exclusions; + +class CrawlerDetect +{ + /** + * The user agent. + * + * @var null + */ + protected $userAgent = null; + + /** + * Headers that contain a user agent. + * + * @var array + */ + protected $httpHeaders = array(); + + /** + * Store regex matches. + * + * @var array + */ + protected $matches = array(); + + /** + * Crawlers object. + * + * @var \Jaybizzle\CrawlerDetect\Fixtures\Crawlers + */ + protected $crawlers; + + /** + * Exclusions object. + * + * @var \Jaybizzle\CrawlerDetect\Fixtures\Exclusions + */ + protected $exclusions; + + /** + * Headers object. + * + * @var \Jaybizzle\CrawlerDetect\Fixtures\Headers + */ + protected $uaHttpHeaders; + + /** + * The compiled regex string. + * + * @var string + */ + protected $compiledRegex; + + /** + * The compiled exclusions regex string. + * + * @var string + */ + protected $compiledExclusions; + + /** + * Class constructor. + */ + public function __construct(array $headers = null, $userAgent = null) + { + $this->crawlers = new Crawlers(); + $this->exclusions = new Exclusions(); + $this->uaHttpHeaders = new Headers(); + + $this->compiledRegex = $this->compileRegex($this->crawlers->getAll()); + $this->compiledExclusions = $this->compileRegex($this->exclusions->getAll()); + + $this->setHttpHeaders($headers); + $this->setUserAgent($userAgent); + } + + /** + * Compile the regex patterns into one regex string. + * + * @param array + * + * @return string + */ + public function compileRegex($patterns) + { + return '('.implode('|', $patterns).')'; + } + + /** + * Set HTTP headers. + * + * @param array|null $httpHeaders + */ + public function setHttpHeaders($httpHeaders) + { + // Use global _SERVER if $httpHeaders aren't defined. + if (! is_array($httpHeaders) || ! count($httpHeaders)) { + $httpHeaders = $_SERVER; + } + + // Clear existing headers. + $this->httpHeaders = array(); + + // Only save HTTP headers. In PHP land, that means + // only _SERVER vars that start with HTTP_. + foreach ($httpHeaders as $key => $value) { + if (strpos($key, 'HTTP_') === 0) { + $this->httpHeaders[$key] = $value; + } + } + } + + /** + * Return user agent headers. + * + * @return array + */ + public function getUaHttpHeaders() + { + return $this->uaHttpHeaders->getAll(); + } + + /** + * Set the user agent. + * + * @param string $userAgent + */ + public function setUserAgent($userAgent) + { + if (is_null($userAgent)) { + foreach ($this->getUaHttpHeaders() as $altHeader) { + if (isset($this->httpHeaders[$altHeader])) { + $userAgent .= $this->httpHeaders[$altHeader].' '; + } + } + } + + return $this->userAgent = $userAgent; + } + + /** + * Check user agent string against the regex. + * + * @param string|null $userAgent + * + * @return bool + */ + public function isCrawler($userAgent = null) + { + $agent = trim(preg_replace( + "/{$this->compiledExclusions}/i", + '', + $userAgent ?: $this->userAgent + )); + + if ($agent == '') { + return false; + } + + $result = preg_match("/{$this->compiledRegex}/i", $agent, $matches); + + if ($matches) { + $this->matches = $matches; + } + + return (bool) $result; + } + + /** + * Return the matches. + * + * @return string|null + */ + public function getMatches() + { + return isset($this->matches[0]) ? $this->matches[0] : null; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php new file mode 100644 index 0000000..26ea8e5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php @@ -0,0 +1,32 @@ +<?php + +/* + * This file is part of Crawler Detect - the web crawler detection library. + * + * (c) Mark Beech <m@rkbee.ch> + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Jaybizzle\CrawlerDetect\Fixtures; + +abstract class AbstractProvider +{ + /** + * The data set. + * + * @var array + */ + protected $data; + + /** + * Return the data set. + * + * @return array + */ + public function getAll() + { + return $this->data; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php new file mode 100644 index 0000000..5554864 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php @@ -0,0 +1,1226 @@ +<?php + +/* + * This file is part of Crawler Detect - the web crawler detection library. + * + * (c) Mark Beech <m@rkbee.ch> + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Jaybizzle\CrawlerDetect\Fixtures; + +class Crawlers extends AbstractProvider +{ + /** + * Array of regular expressions to match against the user agent. + * + * @var array + */ + protected $data = array( + '.*Java.*outbrain', + ' YLT', + '^b0t$', + '^bluefish ', + '^Calypso v\/', + '^COMODO DCV', + '^DangDang', + '^DavClnt', + '^FDM ', + '^git\/', + '^Goose\/', + '^Grabber', + '^HTTPClient\/', + '^Java\/', + '^Jeode\/', + '^Jetty\/', + '^Mail\/', + '^Mget', + '^Microsoft URL Control', + '^NG\/[0-9\.]', + '^NING\/', + '^PHP\/[0-9]', + '^RMA\/', + '^Ruby|Ruby\/[0-9]', + '^VSE\/[0-9]', + '^WordPress\.com', + '^XRL\/[0-9]', + '^ZmEu', + '008\/', + '13TABS', + '192\.comAgent', + '2ip\.ru', + '404enemy', + '7Siters', + '80legs', + 'a\.pr-cy\.ru', + 'a3logics\.in', + 'A6-Indexer', + 'Abonti', + 'Aboundex', + 'aboutthedomain', + 'Accoona-AI-Agent', + 'acoon', + 'acrylicapps\.com\/pulp', + 'Acunetix', + 'AdAuth\/', + 'adbeat', + 'AddThis', + 'ADmantX', + 'AdminLabs', + 'adressendeutschland', + 'adscanner', + 'agentslug', + 'AHC', + 'aihit', + 'aiohttp\/', + 'Airmail', + 'akka-http\/', + 'akula\/', + 'alertra', + 'alexa site audit', + 'Alibaba\.Security\.Heimdall', + 'Alligator', + 'allloadin', + 'AllSubmitter', + 'alyze\.info', + 'amagit', + 'Anarchie', + 'AndroidDownloadManager', + 'Anemone', + 'AngleSharp', + 'annotate_google', + 'Ant\.com', + 'Anturis Agent', + 'AnyEvent-HTTP\/', + 'Apache Droid', + 'Apache OpenOffice', + 'Apache-HttpAsyncClient', + 'Apache-HttpClient', + 'ApacheBench', + 'Apexoo', + 'APIs-Google', + 'AportWorm\/', + 'AppBeat\/', + 'AppEngine-Google', + 'AppStoreScraperZ', + 'Aprc\/[0-9]', + 'Arachmo', + 'arachnode', + 'Arachnophilia', + 'aria2', + 'Arukereso', + 'asafaweb', + 'AskQuickly', + 'Ask Jeeves', + 'ASPSeek', + 'Asterias', + 'Astute', + 'asynchttp', + 'Attach', + 'autocite', + 'Autonomy', + 'axios\/', + 'B-l-i-t-z-B-O-T', + 'Backlink-Ceck', + 'backlink-check', + 'BacklinkHttpStatus', + 'BackStreet', + 'BackWeb', + 'Bad-Neighborhood', + 'Badass', + 'baidu\.com', + 'Bandit', + 'basicstate', + 'BatchFTP', + 'Battleztar Bazinga', + 'baypup\/', + 'BazQux', + 'BBBike', + 'BCKLINKS', + 'BDFetch', + 'BegunAdvertising', + 'Bidtellect', + 'BigBozz', + 'Bigfoot', + 'biglotron', + 'BingLocalSearch', + 'BingPreview', + 'binlar', + 'biNu image cacher', + 'Bitacle', + 'biz_Directory', + 'Black Hole', + 'Blackboard Safeassign', + 'BlackWidow', + 'BlockNote\.Net', + 'Bloglines', + 'Bloglovin', + 'BlogPulseLive', + 'BlogSearch', + 'Blogtrottr', + 'BlowFish', + 'boitho\.com-dc', + 'BPImageWalker', + 'Braintree-Webhooks', + 'Branch Metrics API', + 'Branch-Passthrough', + 'Brandprotect', + 'BrandVerity', + 'Brandwatch', + 'Brodie\/', + 'Browsershots', + 'BUbiNG', + 'Buck\/', + 'Buddy', + 'BuiltWith', + 'Bullseye', + 'BunnySlippers', + 'Burf Search', + 'Butterfly\/', + 'BuzzSumo', + 'CAAM\/[0-9]', + 'CakePHP', + 'Calculon', + 'Canary%20Mail', + 'CaretNail', + 'catexplorador', + 'CC Metadata Scaper', + 'Cegbfeieh', + 'censys', + 'Cerberian Drtrs', + 'CERT\.at-Statistics-Survey', + 'cg-eye', + 'changedetection', + 'ChangesMeter', + 'Charlotte', + 'CheckHost', + 'checkprivacy', + 'CherryPicker', + 'ChinaClaw', + 'Chirp\/', + 'chkme\.com', + 'Chlooe', + 'Chromaxa', + 'CirrusExplorer', + 'CISPA Vulnerability Notification', + 'Citoid', + 'CJNetworkQuality', + 'Clarsentia', + 'clips\.ua\.ac\.be', + 'Cloud mapping', + 'CloudEndure', + 'CloudFlare-AlwaysOnline', + 'Cloudinary', + 'cmcm\.com', + 'coccoc', + 'cognitiveseo', + 'colly -', + 'CommaFeed', + 'Commons-HttpClient', + 'commonscan', + 'contactbigdatafr', + 'contentkingapp', + 'convera', + 'CookieReports', + 'copyright sheriff', + 'CopyRightCheck', + 'Copyscape', + 'Cosmos4j\.feedback', + 'Covario-IDS', + 'Crescent', + 'Crowsnest', + 'Criteo', + 'CSHttp', + 'curb', + 'Curious George', + 'curl', + 'cuwhois\/', + 'cybo\.com', + 'DAP\/NetHTTP', + 'DareBoost', + 'DatabaseDriverMysqli', + 'DataCha0s', + 'Datafeedwatch', + 'Datanyze', + 'DataparkSearch', + 'dataprovider', + 'DataXu', + 'Daum(oa)?[ \/][0-9]', + 'Demon', + 'DeuSu', + 'developers\.google\.com\/\+\/web\/snippet\/', + 'Devil', + 'Digg', + 'Digincore', + 'DigitalPebble', + 'Dirbuster', + 'Disqus\/', + 'Dispatch\/', + 'DittoSpyder', + 'dlvr', + 'DMBrowser', + 'DNSPod-reporting', + 'docoloc', + 'Dolphin http client', + 'DomainAppender', + 'Donuts Content Explorer', + 'dotMailer content retrieval', + 'dotSemantic', + 'downforeveryoneorjustme', + 'Download Wonder', + 'downnotifier', + 'DowntimeDetector', + 'Drip', + 'drupact', + 'Drupal \(\+http:\/\/drupal\.org\/\)', + 'DTS Agent', + 'dubaiindex', + 'EARTHCOM', + 'Easy-Thumb', + 'EasyDL', + 'Ebingbong', + 'ec2linkfinder', + 'eCairn-Grabber', + 'eCatch', + 'ECCP', + 'eContext\/', + 'Ecxi', + 'EirGrabber', + 'ElectricMonk', + 'elefent', + 'EMail Exractor', + 'EMail Wolf', + 'EmailWolf', + 'Embarcadero', + 'Embed PHP Library', + 'Embedly', + 'endo\/', + 'europarchive\.org', + 'evc-batch', + 'EventMachine HttpClient', + 'Everwall Link Expander', + 'Evidon', + 'Evrinid', + 'ExactSearch', + 'ExaleadCloudview', + 'Excel\/', + 'exif', + 'Exploratodo', + 'Express WebPictures', + 'Extreme Picture Finder', + 'EyeNetIE', + 'ezooms', + 'facebookexternalhit', + 'facebookplatform', + 'fairshare', + 'Faraday v', + 'fasthttp', + 'Faveeo', + 'Favicon downloader', + 'faviconkit', + 'FavOrg', + 'Feed Wrangler', + 'Feedable\/', + 'Feedbin', + 'FeedBooster', + 'FeedBucket', + 'FeedBunch\/', + 'FeedBurner', + 'feeder', + 'Feedly', + 'FeedshowOnline', + 'Feedspot', + 'Feedwind\/', + 'FeedZcollector', + 'feeltiptop', + 'Fetch API', + 'Fetch\/[0-9]', + 'Fever\/[0-9]', + 'FHscan', + 'Fimap', + 'findlink', + 'findthatfile', + 'FlashGet', + 'FlipboardBrowserProxy', + 'FlipboardProxy', + 'FlipboardRSS', + 'Flock\/', + 'fluffy', + 'Flunky', + 'flynxapp', + 'forensiq', + 'FoundSeoTool', + 'http:\/\/www.neomo.de\/', //'Francis [Bot]' + 'free thumbnails', + 'Freeuploader', + 'Funnelback', + 'G-i-g-a-b-o-t', + 'g00g1e\.net', + 'ganarvisitas', + 'geek-tools', + 'Genieo', + 'GentleSource', + 'GetCode', + 'Getintent', + 'GetLinkInfo', + 'getprismatic', + 'GetRight', + 'getroot', + 'GetURLInfo\/', + 'GetWeb', + 'Ghost Inspector', + 'GigablastOpenSource', + 'GIS-LABS', + 'github-camo', + 'github\.com', + 'Go [\d\.]* package http', + 'Go http package', + 'Go-Ahead-Got-It', + 'Go-http-client', + 'Go!Zilla', + 'gobyus', + 'gofetch', + 'GomezAgent', + 'gooblog', + 'Goodzer\/', + 'Google AppsViewer', + 'Google Desktop', + 'Google favicon', + 'Google Keyword Suggestion', + 'Google Keyword Tool', + 'Google Page Speed Insights', + 'Google PP Default', + 'Google Search Console', + 'Google Web Preview', + 'Google-Adwords', + 'Google-Apps-Script', + 'Google-Calendar-Importer', + 'Google-HotelAdsVerifier', + 'Google-HTTP-Java-Client', + 'Google-Publisher-Plugin', + 'Google-SearchByImage', + 'Google-Site-Verification', + 'Google-Structured-Data-Testing-Tool', + 'Google-Youtube-Links', + 'google-xrawler', + 'GoogleDocs', + 'GoogleHC\/', + 'GoogleProducer', + 'GoogleSites', + 'Google-Transparency-Report', + 'Gookey', + 'GoScraper', + 'GoSpotCheck', + 'gosquared-thumbnailer', + 'Gotit', + 'GoZilla', + 'grabify', + 'GrabNet', + 'Grafula', + 'Grammarly', + 'GrapeFX', + 'Gregarius', + 'GRequests', + 'grokkit', + 'grouphigh', + 'grub-client', + 'gSOAP\/', + 'GT::WWW', + 'GTmetrix', + 'GuzzleHttp', + 'gvfs\/', + 'HAA(A)?RTLAND http client', + 'Haansoft', + 'hackney\/', + 'Hadi Agent', + 'HappyApps-WebCheck', + 'Hatena', + 'Havij', + 'HeadlessChrome', + 'HEADMasterSEO', + 'HeartRails_Capture', + 'help@dataminr\.com', + 'heritrix', + 'historious', + 'hkedcity', + 'hledejLevne\.cz', + 'Hloader', + 'HMView', + 'Holmes', + 'HonesoSearchEngine', + 'HootSuite Image proxy', + 'Hootsuite-WebFeed', + 'hosterstats', + 'HostTracker', + 'ht:\/\/check', + 'htdig', + 'HTMLparser', + 'htmlyse', + 'HTTP Banner Detection', + 'HTTP_Compression_Test', + 'http_request2', + 'http_requester', + 'http-get', + 'HTTP-Header-Abfrage', + 'http-kit', + 'http-request\/', + 'HTTP-Tiny', + 'HTTP::Lite', + 'http\.rb\/', + 'http_get', + 'HttpComponents', + 'httphr', + 'HTTPMon', + 'httpRequest', + 'httpscheck', + 'httpssites_power', + 'httpunit', + 'HttpUrlConnection', + 'httrack', + 'huaweisymantec', + 'HubSpot ', + 'Humanlinks', + 'i2kconnect\/', + 'Iblog', + 'ichiro', + 'Id-search', + 'IdeelaborPlagiaat', + 'IDG Twitter Links Resolver', + 'IDwhois\/', + 'Iframely', + 'igdeSpyder', + 'IlTrovatore', + 'Image Fetch', + 'Image Sucker', + 'ImageEngine\/', + 'ImageVisu\/', + 'Imagga', + 'imagineeasy', + 'imgsizer', + 'InAGist', + 'inbound\.li parser', + 'InDesign%20CC', + 'Indy Library', + 'InetURL', + 'infegy', + 'infohelfer', + 'InfoTekies', + 'InfoWizards Reciprocal Link', + 'inpwrd\.com', + 'instabid', + 'Instapaper', + 'Integrity', + 'integromedb', + 'Intelliseek', + 'InterGET', + 'internet_archive', + 'Internet Ninja', + 'InternetSeer', + 'internetVista monitor', + 'intraVnews', + 'IODC', + 'IOI', + 'iplabel', + 'ips-agent', + 'IPS\/[0-9]', + 'IPWorks HTTP\/S Component', + 'iqdb\/', + 'Iria', + 'Irokez', + 'isitup\.org', + 'iskanie', + 'isUp\.li', + 'iThemes Sync\/', + 'iZSearch', + 'JAHHO', + 'janforman', + 'Jaunt\/', + 'Jbrofuzz', + 'Jersey\/', + 'JetCar', + 'Jigsaw', + 'Jobboerse', + 'JobFeed discovery', + 'Jobg8 URL Monitor', + 'jobo', + 'Jobrapido', + 'Jobsearch1\.5', + 'JoinVision Generic', + 'JolokiaPwn', + 'Joomla', + 'Jorgee', + 'JS-Kit', + 'JustView', + 'Kaspersky Lab CFR link resolver', + 'Kelny\/', + 'Kerrigan\/', + 'KeyCDN', + 'Keyword Density', + 'Keywords Research', + 'KickFire', + 'KimonoLabs\/', + 'Kml-Google', + 'knows\.is', + 'KOCMOHABT', + 'kouio', + 'kube-probe', + 'kulturarw3', + 'KumKie', + 'L\.webis', + 'Larbin', + 'Lavf\/', + 'LeechFTP', + 'LeechGet', + 'letsencrypt', + 'Lftp', + 'LibVLC', + 'LibWeb', + 'Libwhisker', + 'libwww', + 'Licorne', + 'Liferea\/', + 'Lightspeedsystems', + 'Likse', + 'Link Valet', + 'link_thumbnailer', + 'LinkAlarm\/', + 'linkCheck', + 'linkdex', + 'LinkExaminer', + 'linkfluence', + 'linkpeek', + 'LinkPreviewGenerator', + 'LinkScan', + 'LinksManager', + 'LinkTiger', + 'LinkWalker', + 'Lipperhey', + 'Litemage_walker', + 'livedoor ScreenShot', + 'LoadImpactRload', + 'localsearch-web', + 'LongURL API', + 'looksystems\.net', + 'ltx71', + 'lua-resty-http', + 'lwp-request', + 'lwp-trivial', + 'LWP::Simple', + 'lycos', + 'LYT\.SR', + 'mabontland', + 'Mag-Net', + 'MagpieRSS', + 'Mail\.Ru', + 'MailChimp', + 'Majestic12', + 'makecontact\/', + 'Mandrill', + 'MapperCmd', + 'marketinggrader', + 'MarkMonitor', + 'MarkWatch', + 'Mass Downloader', + 'masscan\/', + 'Mata Hari', + 'Mediapartners-Google', + 'mediawords', + 'MegaIndex\.ru', + 'MeltwaterNews', + 'Melvil Rawi', + 'Metaspinner', + 'MetaURI', + 'MFC_Tear_Sample', + 'Microsearch', + 'Microsoft Office ', + 'Microsoft Outlook', + 'Microsoft Windows Network Diagnostics', + 'Microsoft-WebDAV-MiniRedir', + 'Microsoft Data Access', + 'MIDown tool', + 'MIIxpc', + 'Mindjet', + 'Miniature\.io', + 'Miniflux', + 'Mister PiX', + 'mixdata dot com', + 'mixed-content-scan', + 'Mixmax-LinkPreview', + 'mixnode', + 'Mnogosearch', + 'mogimogi', + 'Mojeek', + 'Mojolicious \(Perl\)', + 'Monit\/', + 'monitis', + 'Monitority\/', + 'montastic', + 'MonTools', + 'Moreover', + 'Morfeus Fucking Scanner', + 'Morning Paper', + 'MovableType', + 'mowser', + 'Mrcgiguy', + 'MS Web Services Client Protocol', + 'MSFrontPage', + 'mShots', + 'MuckRack\/', + 'muhstik-scan', + 'MVAClient', + 'MxToolbox\/', + 'nagios', + 'Najdi\.si', + 'Name Intelligence', + 'Nameprotect', + 'Navroad', + 'NearSite', + 'Needle', + 'Nessus', + 'Net Vampire', + 'NetAnts', + 'NETCRAFT', + 'NetLyzer', + 'NetMechanic', + 'NetNewsWire', + 'Netpursual', + 'netresearch', + 'NetShelter ContentScan', + 'Netsparker', + 'NetTrack', + 'Netvibes', + 'NetZIP', + 'Neustar WPM', + 'NeutrinoAPI', + 'NewRelicPinger', + 'NewsBlur .*Finder', + 'NewsGator', + 'newsme', + 'newspaper\/', + 'Nexgate Ruby Client', + 'NG-Search', + 'Nibbler', + 'NICErsPRO', + 'Nikto', + 'nineconnections', + 'NLNZ_IAHarvester', + 'Nmap Scripting Engine', + 'node-superagent', + 'node-urllib', + 'node\.io', + 'Nodemeter', + 'NodePing', + 'nominet\.org\.uk', + 'Norton-Safeweb', + 'Notifixious', + 'notifyninja', + 'nuhk', + 'nutch', + 'Nuzzel', + 'nWormFeedFinder', + 'nyawc\/', + 'Nymesis', + 'NYU', + 'Ocelli\/', + 'Octopus', + 'oegp', + 'Offline Explorer', + 'Offline Navigator', + 'og-scraper', + 'okhttp', + 'omgili', + 'OMSC', + 'Online Domain Tools', + 'OpenCalaisSemanticProxy', + 'Openfind', + 'OpenLinkProfiler', + 'Openstat\/', + 'OpenVAS', + 'Optimizer', + 'Orbiter', + 'OrgProbe\/', + 'orion-semantics', + 'Outlook-Express', + 'Outlook-iOS', + 'ow\.ly', + 'Owler', + 'ownCloud News', + 'OxfordCloudService', + 'Page Valet', + 'page_verifier', + 'page scorer', + 'page2rss', + 'PageGrabber', + 'PagePeeker', + 'PageScorer', + 'Pagespeed\/', + 'Panopta', + 'panscient', + 'Papa Foto', + 'parsijoo', + 'Pavuk', + 'PayPal IPN', + 'pcBrowser', + 'Pcore-HTTP', + 'Pearltrees', + 'PECL::HTTP', + 'peerindex', + 'Peew', + 'PeoplePal', + 'Perlu -', + 'PhantomJS Screenshoter', + 'PhantomJS\/', + 'Photon\/', + 'phpservermon', + 'Pi-Monster', + 'Picscout', + 'Picsearch', + 'PictureFinder', + 'Pimonster', + 'ping\.blo\.gs', + 'Pingability', + 'PingAdmin\.Ru', + 'Pingdom', + 'Pingoscope', + 'PingSpot', + 'pinterest\.com', + 'Pixray', + 'Pizilla', + 'Plagger\/', + 'Ploetz \+ Zeller', + 'Plukkie', + 'plumanalytics', + 'PocketImageCache', + 'PocketParser', + 'Pockey', + 'POE-Component-Client-HTTP', + 'Polymail\/', + 'Pompos', + 'Porkbun', + 'Port Monitor', + 'postano', + 'PostmanRuntime', + 'PostPost', + 'postrank', + 'PowerPoint\/', + 'Priceonomics Analysis Engine', + 'PrintFriendly', + 'PritTorrent', + 'Prlog', + 'probethenet', + 'Project 25499', + 'prospectb2b', + 'Protopage', + 'ProWebWalker', + 'proximic', + 'PRTG Network Monitor', + 'pshtt, https scanning', + 'PTST ', + 'PTST\/[0-9]+', + 'Pulsepoint XT3 web scraper', + 'Pump', + 'Python-httplib2', + 'python-requests', + 'Python-urllib', + 'Qirina Hurdler', + 'QQDownload', + 'QrafterPro', + 'Qseero', + 'Qualidator', + 'QueryN Metasearch', + 'queuedriver', + 'Quora Link Preview', + 'Qwantify', + 'Radian6', + 'RankActive', + 'RankFlex', + 'RankSonicSiteAuditor', + 'Re-re Studio', + 'Readability', + 'RealDownload', + 'RealPlayer%20Downloader', + 'RebelMouse', + 'Recorder', + 'RecurPost\/', + 'redback\/', + 'ReederForMac', + 'ReGet', + 'RepoMonkey', + 'request\.js', + 'ResponseCodeTest', + 'RestSharp', + 'Riddler', + 'Rival IQ', + 'Robosourcer', + 'Robozilla', + 'ROI Hunter', + 'RPT-HTTPClient', + 'RSSOwl', + 'safe-agent-scanner', + 'SalesIntelligent', + 'Saleslift', + 'Sendsay\.Ru', + 'SauceNAO', + 'SBIder', + 'scalaj-http', + 'scan\.lol', + 'ScanAlert', + 'Scoop', + 'scooter', + 'ScoutJet', + 'ScoutURLMonitor', + 'ScrapeBox Page Scanner', + 'SimpleScraper', + 'Scrapy', + 'Screaming', + 'ScreenShotService', + 'Scrubby', + 'Scrutiny\/', + 'search\.thunderstone', + 'Search37', + 'searchenginepromotionhelp', + 'Searchestate', + 'SearchExpress', + 'SearchSight', + 'Seeker', + 'semanticdiscovery', + 'semanticjuice', + 'Semiocast HTTP client', + 'Semrush', + 'sentry\/', + 'SEO Browser', + 'Seo Servis', + 'seo-nastroj\.cz', + 'seo4ajax', + 'Seobility', + 'SEOCentro', + 'SeoCheck', + 'SEOkicks', + 'Seomoz', + 'SEOprofiler', + 'SEOsearch', + 'seoscanners', + 'seositecheckup', + 'SEOstats', + 'servernfo', + 'sexsearcher', + 'Seznam', + 'Shelob', + 'Shodan', + 'Shoppimon', + 'ShopWiki', + 'ShortLinkTranslate', + 'shrinktheweb', + 'Sideqik', + 'SimplePie', + 'SimplyFast', + 'Siphon', + 'SISTRIX', + 'Site-Shot\/', + 'Site Sucker', + 'Site24x7', + 'SiteBar', + 'Sitebeam', + 'Sitebulb\/', + 'SiteCondor', + 'SiteExplorer', + 'SiteGuardian', + 'Siteimprove', + 'SiteIndexed', + 'Sitemap(s)? Generator', + 'SitemapGenerator', + 'SiteMonitor', + 'Siteshooter B0t', + 'SiteSnagger', + 'SiteSucker', + 'SiteTruth', + 'Sitevigil', + 'sitexy\.com', + 'SkypeUriPreview', + 'Slack\/', + 'slider\.com', + 'slurp', + 'SlySearch', + 'SmartDownload', + 'SMRF URL Expander', + 'SMUrlExpander', + 'Snake', + 'Snappy', + 'SnapSearch', + 'Snarfer\/', + 'SniffRSS', + 'sniptracker', + 'Snoopy', + 'SnowHaze Search', + 'sogou web', + 'SortSite', + 'Sottopop', + 'sovereign\.ai', + 'SpaceBison', + 'SpamExperts', + 'Spammen', + 'Spanner', + 'spaziodati', + 'SPDYCheck', + 'Specificfeeds', + 'speedy', + 'SPEng', + 'Spinn3r', + 'spray-can', + 'Sprinklr ', + 'spyonweb', + 'sqlmap', + 'Sqlworm', + 'Sqworm', + 'SSL Labs', + 'ssl-tools', + 'StackRambler', + 'Statastico\/', + 'StatusCake', + 'Steeler', + 'Stratagems Kumo', + 'Stroke\.cz', + 'StudioFACA', + 'StumbleUpon', + 'suchen', + 'Sucuri', + 'summify', + 'SuperHTTP', + 'Surphace Scout', + 'Suzuran', + 'SwiteScraper', + 'Symfony BrowserKit', + 'Symfony2 BrowserKit', + 'SynHttpClient-Built', + 'Sysomos', + 'sysscan', + 'Szukacz', + 'T0PHackTeam', + 'tAkeOut', + 'Tarantula\/', + 'Taringa UGC', + 'TarmotGezgin', + 'Teleport', + 'Telesoft', + 'Telesphoreo', + 'Telesphorep', + 'Tenon\.io', + 'teoma', + 'terrainformatica', + 'Test Certificate Info', + 'testuri', + 'Tetrahedron', + 'The Drop Reaper', + 'The Expert HTML Source Viewer', + 'The Knowledge AI', + 'The Intraformant', + 'theinternetrules', + 'TheNomad', + 'Thinklab', + 'Thumbshots', + 'ThumbSniper', + 'timewe\.net', + 'TinEye', + 'Tiny Tiny RSS', + 'TLSProbe\/', + 'Toata', + 'topster', + 'touche\.com', + 'Traackr\.com', + 'tracemyfile', + 'TrapitAgent', + 'Trendiction', + 'Trendsmap', + 'trendspottr', + 'truwoGPS', + 'TryJsoup', + 'TulipChain', + 'Turingos', + 'Turnitin', + 'tweetedtimes', + 'Tweetminster', + 'Tweezler\/', + 'twibble', + 'Twice', + 'Twikle', + 'Twingly', + 'Twisted PageGetter', + 'Typhoeus', + 'ubermetrics-technologies', + 'uclassify', + 'UdmSearch', + 'unirest-java', + 'UniversalFeedParser', + 'Unshorten\.It', + 'Untiny', + 'UnwindFetchor', + 'updated', + 'updown\.io daemon', + 'Upflow', + 'Uptimia', + 'URL Verifier', + 'URLitor', + 'urlresolver', + 'Urlstat', + 'UrlTrends Ranking Updater', + 'URLy Warning', + 'URLy\.Warning', + 'Vacuum', + 'Vagabondo', + 'VB Project', + 'vBSEO', + 'VCI', + 'via ggpht\.com GoogleImageProxy', + 'VidibleScraper', + 'Virusdie', + 'visionutils', + 'vkShare', + 'VoidEYE', + 'Voil', + 'voltron', + 'voyager\/', + 'VSAgent\/', + 'VSB-TUO\/', + 'Vulnbusters Meter', + 'VYU2', + 'w3af\.org', + 'W3C_Unicorn', + 'W3C-checklink', + 'W3C-mobileOK', + 'WAC-OFU', + 'Wallpapers\/[0-9]+', + 'WallpapersHD', + 'wangling', + 'Wappalyzer', + 'WatchMouse', + 'WbSrch\/', + 'WDT\.io', + 'web-capture\.net', + 'Web-sniffer', + 'Web Auto', + 'Web Collage', + 'Web Enhancer', + 'Web Fetch', + 'Web Fuck', + 'Web Pix', + 'Web Sauger', + 'Web Sucker', + 'Webalta', + 'Webauskunft', + 'WebAuto', + 'WebCapture', + 'WebClient\/', + 'webcollage', + 'WebCookies', + 'WebCopier', + 'WebCorp', + 'WebDataStats', + 'WebDoc', + 'WebEnhancer', + 'WebFetch', + 'WebFuck', + 'WebGazer', + 'WebGo IS', + 'WebImageCollector', + 'WebImages', + 'WebIndex', + 'webkit2png', + 'WebLeacher', + 'webmastercoffee', + 'webmon ', + 'WebPix', + 'WebReaper', + 'WebSauger', + 'webscreenie', + 'Webshag', + 'Webshot', + 'Website Quester', + 'websitepulse agent', + 'WebsiteQuester', + 'Websnapr', + 'WebSniffer', + 'Webster', + 'WebStripper', + 'WebSucker', + 'Webthumb\/', + 'WebThumbnail', + 'WebWhacker', + 'WebZIP', + 'WeLikeLinks', + 'WEPA', + 'WeSEE', + 'wf84', + 'Wfuzz\/', + 'wget', + 'WhatsApp', + 'WhatsMyIP', + 'WhatWeb', + 'WhereGoes\?', + 'Whibse', + 'WhoRunsCoinHive', + 'Whynder Magnet', + 'Windows-RSS-Platform', + 'WinPodder', + 'wkhtmlto', + 'wmtips', + 'Woko', + 'Word\/', + 'WordPress\/', + 'WordupinfoSearch', + 'wotbox', + 'WP Engine Install Performance API', + 'wpif', + 'wprecon\.com survey', + 'WPScan', + 'wscheck', + 'Wtrace', + 'WWW-Collector-E', + 'WWW-Mechanize', + 'WWW::Document', + 'WWW::Mechanize', + 'www\.monitor\.us', + 'WWWOFFLE', + 'x09Mozilla', + 'x22Mozilla', + 'XaxisSemanticsClassifier', + 'Xenu Link Sleuth', + 'XING-contenttabreceiver', + 'xpymep([0-9]?)\.exe', + 'Y!J-(ASR|BSC)', + 'Y\!J-BRW', + 'Yaanb', + 'yacy', + 'Yahoo Link Preview', + 'YahooCacheSystem', + 'YahooYSMcm', + 'YandeG', + 'Yandex(?!Search)', + 'yanga', + 'yeti', + 'Yo-yo', + 'Yoleo Consumer', + 'yoogliFetchAgent', + 'YottaaMonitor', + 'Your-Website-Sucks', + 'yourls\.org', + 'YoYs\.net', + 'YP\.PL', + 'Zabbix', + 'Zade', + 'Zao', + 'Zauba', + 'Zemanta Aggregator', + 'Zend_Http_Client', + 'Zend\\\\Http\\\\Client', + 'Zermelo', + 'Zeus', + 'zgrab', + 'ZnajdzFoto', + 'Zombie\.js', + 'Zoom\.Mac', + 'ZyBorg', + '[a-z0-9\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer)', + ); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php new file mode 100644 index 0000000..1bd1f04 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php @@ -0,0 +1,71 @@ +<?php + +/* + * This file is part of Crawler Detect - the web crawler detection library. + * + * (c) Mark Beech <m@rkbee.ch> + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Jaybizzle\CrawlerDetect\Fixtures; + +class Exclusions extends AbstractProvider +{ + /** + * List of strings to remove from the user agent before running the crawler regex + * Over a large list of user agents, this gives us about a 55% speed increase! + * + * @var array + */ + protected $data = array( + 'Safari.[\d\.]*', + 'Firefox.[\d\.]*', + ' Chrome.[\d\.]*', + 'Chromium.[\d\.]*', + 'MSIE.[\d\.]', + 'Opera\/[\d\.]*', + 'Mozilla.[\d\.]*', + 'AppleWebKit.[\d\.]*', + 'Trident.[\d\.]*', + 'Windows NT.[\d\.]*', + 'Android [\d\.]*', + 'Macintosh.', + 'Ubuntu', + 'Linux', + '[ ]Intel', + 'Mac OS X [\d_]*', + '(like )?Gecko(.[\d\.]*)?', + 'KHTML,', + 'CriOS.[\d\.]*', + 'CPU iPhone OS ([0-9_])* like Mac OS X', + 'CPU OS ([0-9_])* like Mac OS X', + 'iPod', + 'compatible', + 'x86_..', + 'i686', + 'x64', + 'X11', + 'rv:[\d\.]*', + 'Version.[\d\.]*', + 'WOW64', + 'Win64', + 'Dalvik.[\d\.]*', + ' \.NET CLR [\d\.]*', + 'Presto.[\d\.]*', + 'Media Center PC', + 'BlackBerry', + 'Build', + 'Opera Mini\/\d{1,2}\.\d{1,2}\.[\d\.]*\/\d{1,2}\.', + 'Opera', + ' \.NET[\d\.]*', + 'cubot', + '; M bot', + '; B bot', + '; IDbot', + '; ID bot', + '; POWER BOT', + ';', // Remove the following characters ; + ); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php new file mode 100644 index 0000000..35c60c3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php @@ -0,0 +1,37 @@ +<?php + +/* + * This file is part of Crawler Detect - the web crawler detection library. + * + * (c) Mark Beech <m@rkbee.ch> + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Jaybizzle\CrawlerDetect\Fixtures; + +class Headers extends AbstractProvider +{ + /** + * All possible HTTP headers that represent the user agent string. + * + * @var array + */ + protected $data = array( + // The default User-Agent string. + 'HTTP_USER_AGENT', + // Header can occur on devices using Opera Mini. + 'HTTP_X_OPERAMINI_PHONE_UA', + // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/ + 'HTTP_X_DEVICE_USER_AGENT', + 'HTTP_X_ORIGINAL_USER_AGENT', + 'HTTP_X_SKYFIRE_PHONE', + 'HTTP_X_BOLT_PHONE_UA', + 'HTTP_DEVICE_STOCK_UA', + 'HTTP_X_UCBROWSER_DEVICE_UA', + // Sometimes, bots (especially Google) use a genuine user agent, but fill this header in with their email address + 'HTTP_FROM', + 'HTTP_X_SCANNER', // Seen in use by Netsparker + ); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/CHANGELOG.md b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/CHANGELOG.md new file mode 100644 index 0000000..5704f21 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/CHANGELOG.md @@ -0,0 +1,149 @@ +CHANGELOG +========= + +1.4.1 (2019-01-04) +------------------ + +* The `maxminddb` extension now returns a string when a `uint32` + value is greater than `LONG_MAX`. Previously, the value would + overflow. This generally only affects 32-bit machines. Reported + by Remi Collet. GitHub #79. +* For `uint64` values, the `maxminddb` extension now returns an + integer rather than a string when the value is less than or equal + to `LONG_MAX`. This more closely matches the behavior of the pure + PHP reader. + +1.4.0 (2018-11-20) +------------------ + +* The `maxminddb` extension now has the arginfo when using reflection. + PR by Remi Collet. GitHub #75. +* The `maxminddb` extension now provides `MINFO()` function that + displays the extension version and the libmaxminddb version. PR by + Remi Collet. GitHub #74. +* The `maxminddb` `configure` script now uses `pkg-config` when + available to get libmaxmindb build info. PR by Remi Collet. + GitHub #73. +* The pure PHP reader now correctly decodes integers on 32-bit platforms. + Previously, large integers would overflow. Reported by Remi Collet. + GitHub #77. +* There are small performance improvements for the pure PHP reader. + +1.3.0 (2018-02-21) +------------------ + +* IMPORTANT: The `maxminddb` extension now obeys `open_basedir`. If + `open_basedir` is set, you _must_ store the database within the + specified directory. Placing the file outside of this directory + will result in an exception. Please test your integration before + upgrading the extension. This does not affect the pure PHP + implementation, which has always had this restriction. Reported + by Benoît Burnichon. GitHub #61. +* A custom `autoload.php` file is provided for installations without + Composer. GitHub #56. + +1.2.0 (2017-10-27) +------------------ + +* PHP 5.4 or greater is now required. +* The `Reader` class for the `maxminddb` extension is no longer final. + This was change to match the behavior of the pure PHP class. + Reported and fixed by venyii. GitHub #52 & #54. + +1.1.3 (2017-01-19) +------------------ + +* Fix incorrect version in `ext/php_maxminddb.h`. GitHub #48. + +1.1.2 (2016-11-22) +------------------ + +* Searching for database metadata only occurs within the last 128KB + (128 * 1024 bytes) of the file, speeding detection of corrupt + datafiles. Reported by Eric Teubert. GitHub #42. +* Suggest relevant extensions when installing with Composer. GitHub #37. + +1.1.1 (2016-09-15) +------------------ + +* Development files were added to the `.gitattributes` as `export-ignore` so + that they are not part of the Composer release. Pull request by Michele + Locati. GitHub #39. + +1.1.0 (2016-01-04) +------------------ + +* The MaxMind DB extension now supports PHP 7. Pull request by John Boehr. + GitHub #27. + +1.0.3 (2015-03-13) +------------------ + +* All uses of `strlen` were removed. This should prevent issues in situations + where the function is overloaded or otherwise broken. + +1.0.2 (2015-01-19) +------------------ + +* Previously the MaxMind DB extension would cause a segfault if the Reader + object's destructor was called without first having called the constructor. + (Reported by Matthias Saou & Juan Peri. GitHub #20.) + +1.0.1 (2015-01-12) +------------------ + +* In the last several releases, the version number in the extension was + incorrect. This release is being done to correct it. No other code changes + are included. + +1.0.0 (2014-09-22) +------------------ + +* First production release. +* In the pure PHP reader, a string length test after `fread()` was replaced + with the difference between the start pointer and the end pointer. This + provided a 15% speed increase. + +0.3.3 (2014-09-15) +------------------ + +* Clarified behavior of 128-bit type in documentation. +* Updated phpunit and fixed some test breakage from the newer version. + +0.3.2 (2014-09-10) +------------------ + +* Fixed invalid reference to global class RuntimeException from namespaced + code. Fixed by Steven Don. GitHub issue #15. +* Additional documentation of `Metadata` class as well as misc. documentation + cleanup. + +0.3.1 (2014-05-01) +------------------ + +* The API now works when `mbstring.func_overload` is set. +* BCMath is no longer required. If the decoder encounters a big integer, + it will try to use GMP and then BCMath. If both of those fail, it will + throw an exception. No databases released by MaxMind currently use big + integers. +* The API now officially supports HHVM when using the pure PHP reader. + +0.3.0 (2014-02-19) +------------------ + +* This API is now licensed under the Apache License, Version 2.0. +* The code for the C extension was cleaned up, fixing several potential + issues. + +0.2.0 (2013-10-21) +------------------ + +* Added optional C extension for using libmaxminddb in place of the pure PHP + reader. +* Significantly improved error handling in pure PHP reader. +* Improved performance for IPv4 lookups in an IPv6 database. + +0.1.0 (2013-07-16) +------------------ + +* Initial release diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/LICENSE b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/README.md b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/README.md new file mode 100644 index 0000000..4da03cf --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/README.md @@ -0,0 +1,156 @@ +# MaxMind DB Reader PHP API # + +## Description ## + +This is the PHP API for reading MaxMind DB files. MaxMind DB is a binary file +format that stores data indexed by IP address subnets (IPv4 or IPv6). + +## Installation (Composer) ## + +We recommend installing this package with [Composer](http://getcomposer.org/). + +### Download Composer ### + +To download Composer, run in the root directory of your project: + +```bash +curl -sS https://getcomposer.org/installer | php +``` + +You should now have the file `composer.phar` in your project directory. + +### Install Dependencies ### + +Run in your project root: + +``` +php composer.phar require maxmind-db/reader:~1.0 +``` + +You should now have the files `composer.json` and `composer.lock` as well as +the directory `vendor` in your project directory. If you use a version control +system, `composer.json` should be added to it. + +### Require Autoloader ### + +After installing the dependencies, you need to require the Composer autoloader +from your code: + +```php +require 'vendor/autoload.php'; +``` + +## Installation (Standalone) ## + +If you don't want to use Composer for some reason, a custom +`autoload.php` is provided for you in the project root. To use the +library, simply include that file, + +```php +require('/path/to/MaxMind-DB-Reader-php/autoload.php'); +``` + +and then instantiate the reader class normally: + +```php +use MaxMind\Db\Reader; +$reader = new Reader('example.mmdb'); +``` + +## Usage ## + +## Example ## + +```php +<?php +require_once 'vendor/autoload.php'; + +use MaxMind\Db\Reader; + +$ipAddress = '24.24.24.24'; +$databaseFile = 'GeoIP2-City.mmdb'; + +$reader = new Reader($databaseFile); + +print_r($reader->get($ipAddress)); + +$reader->close(); +``` + +## Optional PHP C Extension ## + +MaxMind provides an optional C extension that is a drop-in replacement for +`MaxMind\Db\Reader`. In order to use this extension, you must install the +Reader API as described above and install the extension as described below. If +you are using an autoloader, no changes to your code should be necessary. + +### Installing Extension ### + +First install [libmaxminddb](https://github.com/maxmind/libmaxminddb) as +described in its [README.md +file](https://github.com/maxmind/libmaxminddb/blob/master/README.md#installing-from-a-tarball). +After successfully installing libmaxmindb, run the following commands from the +top-level directory of this distribution: + +``` +cd ext +phpize +./configure +make +make test +sudo make install +``` + +You then must load your extension. The recommend method is to add the +following to your `php.ini` file: + +``` +extension=maxminddb.so +``` + +Note: You may need to install the PHP development package on your OS such as +php5-dev for Debian-based systems or php-devel for RedHat/Fedora-based ones. + +## 128-bit Integer Support ## + +The MaxMind DB format includes 128-bit unsigned integer as a type. Although +no MaxMind-distributed database currently makes use of this type, both the +pure PHP reader and the C extension support this type. The pure PHP reader +requires gmp or bcmath to read databases with 128-bit unsigned integers. + +The integer is currently returned as a hexadecimal string (prefixed with "0x") +by the C extension and a decimal string (no prefix) by the pure PHP reader. +Any change to make the reader implementations always return either a +hexadecimal or decimal representation of the integer will NOT be considered a +breaking change. + +## Support ## + +Please report all issues with this code using the [GitHub issue tracker] +(https://github.com/maxmind/MaxMind-DB-Reader-php/issues). + +If you are having an issue with a MaxMind service that is not specific to the +client API, please see [our support page](http://www.maxmind.com/en/support). + +## Requirements ## + +This library requires PHP 5.4 or greater. The pure PHP reader included is +compatible with HHVM. + +The GMP or BCMath extension may be required to read some databases +using the pure PHP API. + +## Contributing ## + +Patches and pull requests are encouraged. All code should follow the PSR-1 and +PSR-2 style guidelines. Please include unit tests whenever possible. + +## Versioning ## + +The MaxMind DB Reader PHP API uses [Semantic Versioning](http://semver.org/). + +## Copyright and License ## + +This software is Copyright (c) 2014-2018 by MaxMind, Inc. + +This is free software, licensed under the Apache License, Version 2.0. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/autoload.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/autoload.php new file mode 100644 index 0000000..1314b69 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/autoload.php @@ -0,0 +1,45 @@ +<?php + +/** + * PSR-4 autoloader implementation for the MaxMind\DB namespace. + * First we define the 'mmdb_autoload' function, and then we register + * it with 'spl_autoload_register' so that PHP knows to use it. + * + * @param mixed $class + */ + +/** + * Automatically include the file that defines <code>class</code>. + * + * @param string $class + * the name of the class to load + */ +function mmdb_autoload($class) +{ + /* + * A project-specific mapping between the namespaces and where + * they're located. By convention, we include the trailing + * slashes. The one-element array here simply makes things easy + * to extend in the future if (for example) the test classes + * begin to use one another. + */ + $namespace_map = ['MaxMind\\Db\\' => __DIR__ . '/src/MaxMind/Db/']; + + foreach ($namespace_map as $prefix => $dir) { + /* First swap out the namespace prefix with a directory... */ + $path = str_replace($prefix, $dir, $class); + + /* replace the namespace separator with a directory separator... */ + $path = str_replace('\\', '/', $path); + + /* and finally, add the PHP file extension to the result. */ + $path = $path . '.php'; + + /* $path should now contain the path to a PHP file defining $class */ + if (file_exists($path)) { + include $path; + } + } +} + +spl_autoload_register('mmdb_autoload'); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/composer.json new file mode 100644 index 0000000..dce4428 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/composer.json @@ -0,0 +1,34 @@ +{ + "name": "maxmind-db/reader", + "description": "MaxMind DB Reader API", + "keywords": ["database", "geoip", "geoip2", "geolocation", "maxmind"], + "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php", + "type": "library", + "license": "Apache-2.0", + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "http://www.maxmind.com/" + } + ], + "require": { + "php": ">=5.4" + }, + "suggest": { + "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.* || 5.*", + "satooshi/php-coveralls": "1.0.*", + "squizlabs/php_codesniffer": "3.*" + }, + "autoload": { + "psr-4": { + "MaxMind\\Db\\": "src/MaxMind/Db" + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/config.m4 b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/config.m4 new file mode 100644 index 0000000..675e00c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/config.m4 @@ -0,0 +1,40 @@ +PHP_ARG_WITH(maxminddb, + [Whether to enable the MaxMind DB Reader extension], + [ --with-maxminddb Enable MaxMind DB Reader extension support]) + +PHP_ARG_ENABLE(maxminddb-debug, for MaxMind DB debug support, + [ --enable-maxminddb-debug Enable enable MaxMind DB deubg support], no, no) + +if test $PHP_MAXMINDDB != "no"; then + + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + + AC_MSG_CHECKING(for libmaxminddb) + if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists libmaxminddb; then + dnl retrieve build options from pkg-config + if $PKG_CONFIG libmaxminddb --atleast-version 1.0.0; then + LIBMAXMINDDB_INC=`$PKG_CONFIG libmaxminddb --cflags` + LIBMAXMINDDB_LIB=`$PKG_CONFIG libmaxminddb --libs` + LIBMAXMINDDB_VER=`$PKG_CONFIG libmaxminddb --modversion` + AC_MSG_RESULT(found version $LIBMAXMINDDB_VER) + else + AC_MSG_ERROR(system libmaxminddb must be upgraded to version >= 1.0.0) + fi + PHP_EVAL_LIBLINE($LIBMAXMINDDB_LIB, MAXMINDDB_SHARED_LIBADD) + PHP_EVAL_INCLINE($LIBMAXMINDDB_INC) + else + AC_MSG_RESULT(pkg-config information missing) + AC_MSG_WARN(will use libmaxmxinddb from compiler default path) + + PHP_CHECK_LIBRARY(maxminddb, MMDB_open) + PHP_ADD_LIBRARY(maxminddb, 1, MAXMINDDB_SHARED_LIBADD) + fi + + if test $PHP_MAXMINDDB_DEBUG != "no"; then + CFLAGS="$CFLAGS -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Werror" + fi + + PHP_SUBST(MAXMINDDB_SHARED_LIBADD) + + PHP_NEW_EXTENSION(maxminddb, maxminddb.c, $ext_shared) +fi diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/maxminddb.c b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/maxminddb.c new file mode 100644 index 0000000..91fe8b6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/maxminddb.c @@ -0,0 +1,623 @@ +/* MaxMind, Inc., licenses this file to you under the Apache License, Version + * 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#include "php_maxminddb.h" + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <php.h> +#include <zend.h> +#include "Zend/zend_exceptions.h" +#include "ext/standard/info.h" +#include <maxminddb.h> + +#ifdef ZTS +#include <TSRM.h> +#endif + +#define __STDC_FORMAT_MACROS +#include <inttypes.h> + +#define PHP_MAXMINDDB_NS ZEND_NS_NAME("MaxMind", "Db") +#define PHP_MAXMINDDB_READER_NS ZEND_NS_NAME(PHP_MAXMINDDB_NS, "Reader") +#define PHP_MAXMINDDB_READER_EX_NS \ + ZEND_NS_NAME(PHP_MAXMINDDB_READER_NS, \ + "InvalidDatabaseException") + +#ifdef ZEND_ENGINE_3 +#define Z_MAXMINDDB_P(zv) php_maxminddb_fetch_object(Z_OBJ_P(zv)) +#define _ZVAL_STRING ZVAL_STRING +#define _ZVAL_STRINGL ZVAL_STRINGL +typedef size_t strsize_t; +typedef zend_object free_obj_t; +#else +#define Z_MAXMINDDB_P(zv) (maxminddb_obj *) zend_object_store_get_object(zv TSRMLS_CC) +#define _ZVAL_STRING(a, b) ZVAL_STRING(a, b, 1) +#define _ZVAL_STRINGL(a, b, c) ZVAL_STRINGL(a, b, c, 1) +typedef int strsize_t; +typedef void free_obj_t; +#endif + +#ifdef ZEND_ENGINE_3 +typedef struct _maxminddb_obj { + MMDB_s *mmdb; + zend_object std; +} maxminddb_obj; +#else +typedef struct _maxminddb_obj { + zend_object std; + MMDB_s *mmdb; +} maxminddb_obj; +#endif + +PHP_FUNCTION(maxminddb); + +static const MMDB_entry_data_list_s *handle_entry_data_list( + const MMDB_entry_data_list_s *entry_data_list, + zval *z_value + TSRMLS_DC); +static const MMDB_entry_data_list_s *handle_array( + const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC); +static const MMDB_entry_data_list_s *handle_map( + const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC); +static void handle_uint128(const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC); +static void handle_uint64(const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC); +static void handle_uint32(const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC); +static zend_class_entry * lookup_class(const char *name TSRMLS_DC); + +#define CHECK_ALLOCATED(val) \ + if (!val ) { \ + zend_error(E_ERROR, "Out of memory"); \ + return; \ + } \ + +#define THROW_EXCEPTION(name, ... ) \ + { \ + zend_class_entry *exception_ce = lookup_class(name TSRMLS_CC); \ + zend_throw_exception_ex(exception_ce, 0 TSRMLS_CC, __VA_ARGS__); \ + } \ + + +#if PHP_VERSION_ID < 50399 +#define object_properties_init(zo, class_type) \ + { \ + zval *tmp; \ + zend_hash_copy((*zo).properties, \ + &class_type->default_properties, \ + (copy_ctor_func_t)zval_add_ref, \ + (void *)&tmp, \ + sizeof(zval *)); \ + } +#endif + +static zend_object_handlers maxminddb_obj_handlers; +static zend_class_entry *maxminddb_ce; + +static inline maxminddb_obj *php_maxminddb_fetch_object(zend_object *obj TSRMLS_DC){ +#ifdef ZEND_ENGINE_3 + return (maxminddb_obj *)((char*)(obj) - XtOffsetOf(maxminddb_obj, std)); +#else + return (maxminddb_obj *)obj; +#endif +} + +ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_construct, 0, 0, 1) + ZEND_ARG_INFO(0, db_file) +ZEND_END_ARG_INFO() + +PHP_METHOD(MaxMind_Db_Reader, __construct){ + char *db_file = NULL; + strsize_t name_len; + zval * _this_zval = NULL; + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", + &_this_zval, maxminddb_ce, &db_file, &name_len) == FAILURE) { + THROW_EXCEPTION("InvalidArgumentException", + "The constructor takes exactly one argument."); + return; + } + + if (0 != php_check_open_basedir(db_file TSRMLS_CC) || 0 != access(db_file, R_OK)) { + THROW_EXCEPTION("InvalidArgumentException", + "The file \"%s\" does not exist or is not readable.", + db_file); + return; + } + + MMDB_s *mmdb = (MMDB_s *)emalloc(sizeof(MMDB_s)); + uint16_t status = MMDB_open(db_file, MMDB_MODE_MMAP, mmdb); + + if (MMDB_SUCCESS != status) { + THROW_EXCEPTION( + PHP_MAXMINDDB_READER_EX_NS, + "Error opening database file (%s). Is this a valid MaxMind DB file?", + db_file); + efree(mmdb); + return; + } + + maxminddb_obj *mmdb_obj = Z_MAXMINDDB_P(getThis()); + mmdb_obj->mmdb = mmdb; +} + +ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_get, 0, 0, 1) + ZEND_ARG_INFO(0, ip_address) +ZEND_END_ARG_INFO() + +PHP_METHOD(MaxMind_Db_Reader, get){ + char *ip_address = NULL; + strsize_t name_len; + zval * _this_zval = NULL; + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", + &_this_zval, maxminddb_ce, &ip_address, &name_len) == FAILURE) { + THROW_EXCEPTION("InvalidArgumentException", + "Method takes exactly one argument."); + return; + } + + const maxminddb_obj *mmdb_obj = + (maxminddb_obj *)Z_MAXMINDDB_P(getThis()); + + MMDB_s *mmdb = mmdb_obj->mmdb; + + if (NULL == mmdb) { + THROW_EXCEPTION("BadMethodCallException", + "Attempt to read from a closed MaxMind DB."); + return; + } + + int gai_error = 0; + int mmdb_error = MMDB_SUCCESS; + MMDB_lookup_result_s result = + MMDB_lookup_string(mmdb, ip_address, &gai_error, + &mmdb_error); + + if (MMDB_SUCCESS != gai_error) { + THROW_EXCEPTION("InvalidArgumentException", + "The value \"%s\" is not a valid IP address.", + ip_address); + return; + } + + if (MMDB_SUCCESS != mmdb_error) { + char *exception_name; + if (MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR == mmdb_error) { + exception_name = "InvalidArgumentException"; + } else { + exception_name = PHP_MAXMINDDB_READER_EX_NS; + } + THROW_EXCEPTION(exception_name, + "Error looking up %s. %s", + ip_address, MMDB_strerror(mmdb_error)); + return; + } + + MMDB_entry_data_list_s *entry_data_list = NULL; + + if (!result.found_entry) { + RETURN_NULL(); + } + + int status = MMDB_get_entry_data_list(&result.entry, &entry_data_list); + + if (MMDB_SUCCESS != status) { + THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS, + "Error while looking up data for %s. %s", + ip_address, MMDB_strerror(status)); + MMDB_free_entry_data_list(entry_data_list); + return; + } else if (NULL == entry_data_list) { + THROW_EXCEPTION( + PHP_MAXMINDDB_READER_EX_NS, + "Error while looking up data for %s. Your database may be corrupt or you have found a bug in libmaxminddb.", + ip_address); + return; + } + + handle_entry_data_list(entry_data_list, return_value TSRMLS_CC); + MMDB_free_entry_data_list(entry_data_list); +} + +ZEND_BEGIN_ARG_INFO_EX(arginfo_maxmindbreader_void, 0, 0, 0) +ZEND_END_ARG_INFO() + +PHP_METHOD(MaxMind_Db_Reader, metadata){ + if (ZEND_NUM_ARGS() != 0) { + THROW_EXCEPTION("InvalidArgumentException", + "Method takes no arguments."); + return; + } + + const maxminddb_obj *const mmdb_obj = + (maxminddb_obj *)Z_MAXMINDDB_P(getThis()); + + if (NULL == mmdb_obj->mmdb) { + THROW_EXCEPTION("BadMethodCallException", + "Attempt to read from a closed MaxMind DB."); + return; + } + + const char *const name = ZEND_NS_NAME(PHP_MAXMINDDB_READER_NS, "Metadata"); + zend_class_entry *metadata_ce = lookup_class(name TSRMLS_CC); + + object_init_ex(return_value, metadata_ce); + +#ifdef ZEND_ENGINE_3 + zval _metadata_array; + zval *metadata_array = &_metadata_array; + ZVAL_NULL(metadata_array); +#else + zval *metadata_array; + ALLOC_INIT_ZVAL(metadata_array); +#endif + + MMDB_entry_data_list_s *entry_data_list; + MMDB_get_metadata_as_entry_data_list(mmdb_obj->mmdb, &entry_data_list); + + handle_entry_data_list(entry_data_list, metadata_array TSRMLS_CC); + MMDB_free_entry_data_list(entry_data_list); +#ifdef ZEND_ENGINE_3 + zend_call_method_with_1_params(return_value, metadata_ce, + &metadata_ce->constructor, + ZEND_CONSTRUCTOR_FUNC_NAME, + NULL, + metadata_array); + zval_ptr_dtor(metadata_array); +#else + zend_call_method_with_1_params(&return_value, metadata_ce, + &metadata_ce->constructor, + ZEND_CONSTRUCTOR_FUNC_NAME, + NULL, + metadata_array); + zval_ptr_dtor(&metadata_array); +#endif +} + +PHP_METHOD(MaxMind_Db_Reader, close){ + if (ZEND_NUM_ARGS() != 0) { + THROW_EXCEPTION("InvalidArgumentException", + "Method takes no arguments."); + return; + } + + maxminddb_obj *mmdb_obj = + (maxminddb_obj *)Z_MAXMINDDB_P(getThis()); + + if (NULL == mmdb_obj->mmdb) { + THROW_EXCEPTION("BadMethodCallException", + "Attempt to close a closed MaxMind DB."); + return; + } + MMDB_close(mmdb_obj->mmdb); + efree(mmdb_obj->mmdb); + mmdb_obj->mmdb = NULL; +} + +static const MMDB_entry_data_list_s *handle_entry_data_list( + const MMDB_entry_data_list_s *entry_data_list, + zval *z_value + TSRMLS_DC) +{ + switch (entry_data_list->entry_data.type) { + case MMDB_DATA_TYPE_MAP: + return handle_map(entry_data_list, z_value TSRMLS_CC); + case MMDB_DATA_TYPE_ARRAY: + return handle_array(entry_data_list, z_value TSRMLS_CC); + case MMDB_DATA_TYPE_UTF8_STRING: + _ZVAL_STRINGL(z_value, + (char *)entry_data_list->entry_data.utf8_string, + entry_data_list->entry_data.data_size); + break; + case MMDB_DATA_TYPE_BYTES: + _ZVAL_STRINGL(z_value, (char *)entry_data_list->entry_data.bytes, + entry_data_list->entry_data.data_size); + break; + case MMDB_DATA_TYPE_DOUBLE: + ZVAL_DOUBLE(z_value, entry_data_list->entry_data.double_value); + break; + case MMDB_DATA_TYPE_FLOAT: + ZVAL_DOUBLE(z_value, entry_data_list->entry_data.float_value); + break; + case MMDB_DATA_TYPE_UINT16: + ZVAL_LONG(z_value, entry_data_list->entry_data.uint16); + break; + case MMDB_DATA_TYPE_UINT32: + handle_uint32(entry_data_list, z_value TSRMLS_CC); + break; + case MMDB_DATA_TYPE_BOOLEAN: + ZVAL_BOOL(z_value, entry_data_list->entry_data.boolean); + break; + case MMDB_DATA_TYPE_UINT64: + handle_uint64(entry_data_list, z_value TSRMLS_CC); + break; + case MMDB_DATA_TYPE_UINT128: + handle_uint128(entry_data_list, z_value TSRMLS_CC); + break; + case MMDB_DATA_TYPE_INT32: + ZVAL_LONG(z_value, entry_data_list->entry_data.int32); + break; + default: + THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS, + "Invalid data type arguments: %d", + entry_data_list->entry_data.type); + return NULL; + } + return entry_data_list; +} + +static const MMDB_entry_data_list_s *handle_map( + const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC) +{ + array_init(z_value); + const uint32_t map_size = entry_data_list->entry_data.data_size; + + uint i; + for (i = 0; i < map_size && entry_data_list; i++ ) { + entry_data_list = entry_data_list->next; + + char *key = + estrndup((char *)entry_data_list->entry_data.utf8_string, + entry_data_list->entry_data.data_size); + if (NULL == key) { + THROW_EXCEPTION(PHP_MAXMINDDB_READER_EX_NS, + "Invalid data type arguments"); + return NULL; + } + + entry_data_list = entry_data_list->next; +#ifdef ZEND_ENGINE_3 + zval _new_value; + zval * new_value = &_new_value; + ZVAL_NULL(new_value); +#else + zval *new_value; + ALLOC_INIT_ZVAL(new_value); +#endif + entry_data_list = handle_entry_data_list(entry_data_list, + new_value TSRMLS_CC); + add_assoc_zval(z_value, key, new_value); + efree(key); + } + return entry_data_list; +} + +static const MMDB_entry_data_list_s *handle_array( + const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC) +{ + const uint32_t size = entry_data_list->entry_data.data_size; + + array_init(z_value); + + uint i; + for (i = 0; i < size && entry_data_list; i++) { + entry_data_list = entry_data_list->next; +#ifdef ZEND_ENGINE_3 + zval _new_value; + zval * new_value = &_new_value; + ZVAL_NULL(new_value); +#else + zval *new_value; + ALLOC_INIT_ZVAL(new_value); +#endif + entry_data_list = handle_entry_data_list(entry_data_list, + new_value TSRMLS_CC); + add_next_index_zval(z_value, new_value); + } + return entry_data_list; +} + +static void handle_uint128(const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC) +{ + uint64_t high = 0; + uint64_t low = 0; +#if MMDB_UINT128_IS_BYTE_ARRAY + int i; + for (i = 0; i < 8; i++) { + high = (high << 8) | entry_data_list->entry_data.uint128[i]; + } + + for (i = 8; i < 16; i++) { + low = (low << 8) | entry_data_list->entry_data.uint128[i]; + } +#else + high = entry_data_list->entry_data.uint128 >> 64; + low = (uint64_t)entry_data_list->entry_data.uint128; +#endif + + char *num_str; + spprintf(&num_str, 0, "0x%016" PRIX64 "%016" PRIX64, high, low); + CHECK_ALLOCATED(num_str); + + _ZVAL_STRING(z_value, num_str); + efree(num_str); +} + +static void handle_uint32(const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC) +{ + uint32_t val = entry_data_list->entry_data.uint32; + +#if LONG_MAX >= UINT32_MAX + ZVAL_LONG(z_value, val); + return; +#else + if (val <= LONG_MAX) { + ZVAL_LONG(z_value, val); + return; + } + + char *int_str; + spprintf(&int_str, 0, "%" PRIu32, val); + CHECK_ALLOCATED(int_str); + + _ZVAL_STRING(z_value, int_str); + efree(int_str); +#endif +} + + +static void handle_uint64(const MMDB_entry_data_list_s *entry_data_list, + zval *z_value TSRMLS_DC) +{ + uint64_t val = entry_data_list->entry_data.uint64; + +#if LONG_MAX >= UINT64_MAX + ZVAL_LONG(z_value, val); + return; +#else + if (val <= LONG_MAX) { + ZVAL_LONG(z_value, val); + return; + } + + char *int_str; + spprintf(&int_str, 0, "%" PRIu64, val); + CHECK_ALLOCATED(int_str); + + _ZVAL_STRING(z_value, int_str); + efree(int_str); +#endif +} + +static zend_class_entry *lookup_class(const char *name TSRMLS_DC) +{ +#ifdef ZEND_ENGINE_3 + zend_string *n = zend_string_init(name, strlen(name), 0); + zend_class_entry *ce = zend_lookup_class(n); + zend_string_release(n); + if( NULL == ce ) { + zend_error(E_ERROR, "Class %s not found", name); + } + return ce; +#else + zend_class_entry **ce; + if (FAILURE == + zend_lookup_class(name, strlen(name), + &ce TSRMLS_CC)) { + zend_error(E_ERROR, "Class %s not found", name); + } + return *ce; +#endif +} + +static void maxminddb_free_storage(free_obj_t *object TSRMLS_DC) +{ + maxminddb_obj *obj = php_maxminddb_fetch_object((zend_object *)object TSRMLS_CC); + if (obj->mmdb != NULL) { + MMDB_close(obj->mmdb); + efree(obj->mmdb); + } + + zend_object_std_dtor(&obj->std TSRMLS_CC); +#ifndef ZEND_ENGINE_3 + efree(object); +#endif +} + +#ifdef ZEND_ENGINE_3 +static zend_object *maxminddb_create_handler( + zend_class_entry *type TSRMLS_DC) +{ + maxminddb_obj *obj = (maxminddb_obj *)ecalloc(1, sizeof(maxminddb_obj)); + zend_object_std_init(&obj->std, type TSRMLS_CC); + object_properties_init(&(obj->std), type); + + obj->std.handlers = &maxminddb_obj_handlers; + + return &obj->std; +} +#else +static zend_object_value maxminddb_create_handler( + zend_class_entry *type TSRMLS_DC) +{ + zend_object_value retval; + + maxminddb_obj *obj = (maxminddb_obj *)ecalloc(1, sizeof(maxminddb_obj)); + zend_object_std_init(&obj->std, type TSRMLS_CC); + object_properties_init(&(obj->std), type); + + retval.handle = zend_objects_store_put(obj, NULL, + maxminddb_free_storage, + NULL TSRMLS_CC); + retval.handlers = &maxminddb_obj_handlers; + + return retval; +} +#endif + +/* *INDENT-OFF* */ +static zend_function_entry maxminddb_methods[] = { + PHP_ME(MaxMind_Db_Reader, __construct, arginfo_maxmindbreader_construct, + ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) + PHP_ME(MaxMind_Db_Reader, close, arginfo_maxmindbreader_void, ZEND_ACC_PUBLIC) + PHP_ME(MaxMind_Db_Reader, get, arginfo_maxmindbreader_get, ZEND_ACC_PUBLIC) + PHP_ME(MaxMind_Db_Reader, metadata, arginfo_maxmindbreader_void, ZEND_ACC_PUBLIC) + { NULL, NULL, NULL } +}; +/* *INDENT-ON* */ + +PHP_MINIT_FUNCTION(maxminddb){ + zend_class_entry ce; + + INIT_CLASS_ENTRY(ce, PHP_MAXMINDDB_READER_NS, maxminddb_methods); + maxminddb_ce = zend_register_internal_class(&ce TSRMLS_CC); + maxminddb_ce->create_object = maxminddb_create_handler; + memcpy(&maxminddb_obj_handlers, + zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + maxminddb_obj_handlers.clone_obj = NULL; +#ifdef ZEND_ENGINE_3 + maxminddb_obj_handlers.offset = XtOffsetOf(maxminddb_obj, std); + maxminddb_obj_handlers.free_obj = maxminddb_free_storage; +#endif + + return SUCCESS; +} + +static PHP_MINFO_FUNCTION(maxminddb) +{ + php_info_print_table_start(); + + php_info_print_table_row(2, "MaxMind DB Reader", "enabled"); + php_info_print_table_row(2, "maxminddb extension version", PHP_MAXMINDDB_VERSION); + php_info_print_table_row(2, "libmaxminddb library version", MMDB_lib_version()); + + php_info_print_table_end(); +} + +zend_module_entry maxminddb_module_entry = { + STANDARD_MODULE_HEADER, + PHP_MAXMINDDB_EXTNAME, + NULL, + PHP_MINIT(maxminddb), + NULL, + NULL, + NULL, + PHP_MINFO(maxminddb), + PHP_MAXMINDDB_VERSION, + STANDARD_MODULE_PROPERTIES +}; + +#ifdef COMPILE_DL_MAXMINDDB +ZEND_GET_MODULE(maxminddb) +#endif diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/php_maxminddb.h b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/php_maxminddb.h new file mode 100644 index 0000000..ecb5b10 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/php_maxminddb.h @@ -0,0 +1,24 @@ +/* MaxMind, Inc., licenses this file to you under the Apache License, Version + * 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +#include <zend_interfaces.h> + +#ifndef PHP_MAXMINDDB_H +#define PHP_MAXMINDDB_H 1 +#define PHP_MAXMINDDB_VERSION "1.4.1" +#define PHP_MAXMINDDB_EXTNAME "maxminddb" + +extern zend_module_entry maxminddb_module_entry; +#define phpext_maxminddb_ptr &maxminddb_module_entry + +#endif diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/001-load.phpt b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/001-load.phpt new file mode 100644 index 0000000..09810ee --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/001-load.phpt @@ -0,0 +1,12 @@ +--TEST-- +Check for maxminddb presence +--SKIPIF-- +<?php if (!extension_loaded('maxminddb')) { + echo 'skip'; +} ?> +--FILE-- +<?php +echo 'maxminddb extension is available'; +?> +--EXPECT-- +maxminddb extension is available diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/002-final.phpt b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/002-final.phpt new file mode 100644 index 0000000..d91b7d0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/002-final.phpt @@ -0,0 +1,13 @@ +--TEST-- +Check that Reader class is not final +--SKIPIF-- +<?php if (!extension_loaded('maxminddb')) { + echo 'skip'; +} ?> +--FILE-- +<?php +$reflectionClass = new \ReflectionClass('MaxMind\Db\Reader'); +var_dump($reflectionClass->isFinal()); +?> +--EXPECT-- +bool(false) diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/003-open-basedir.phpt b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/003-open-basedir.phpt new file mode 100644 index 0000000..26e9781 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/ext/tests/003-open-basedir.phpt @@ -0,0 +1,12 @@ +--TEST-- +openbase_dir is followed +--INI-- +open_basedir=/--dne-- +--FILE-- +<?php +use MaxMind\Db\Reader; + +$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb'); +?> +--EXPECTREGEX-- +.*open_basedir restriction in effect.* diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php new file mode 100644 index 0000000..745f7bb --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php @@ -0,0 +1,309 @@ +<?php + +namespace MaxMind\Db; + +use MaxMind\Db\Reader\Decoder; +use MaxMind\Db\Reader\InvalidDatabaseException; +use MaxMind\Db\Reader\Metadata; +use MaxMind\Db\Reader\Util; + +/** + * Instances of this class provide a reader for the MaxMind DB format. IP + * addresses can be looked up using the <code>get</code> method. + */ +class Reader +{ + private static $DATA_SECTION_SEPARATOR_SIZE = 16; + private static $METADATA_START_MARKER = "\xAB\xCD\xEFMaxMind.com"; + private static $METADATA_START_MARKER_LENGTH = 14; + private static $METADATA_MAX_SIZE = 131072; // 128 * 1024 = 128KB + + private $decoder; + private $fileHandle; + private $fileSize; + private $ipV4Start; + private $metadata; + + /** + * Constructs a Reader for the MaxMind DB format. The file passed to it must + * be a valid MaxMind DB file such as a GeoIp2 database file. + * + * @param string $database + * the MaxMind DB file to use + * + * @throws \InvalidArgumentException for invalid database path or unknown arguments + * @throws \MaxMind\Db\Reader\InvalidDatabaseException + * if the database is invalid or there is an error reading + * from it + */ + public function __construct($database) + { + if (\func_num_args() !== 1) { + throw new \InvalidArgumentException( + 'The constructor takes exactly one argument.' + ); + } + + if (!is_readable($database)) { + throw new \InvalidArgumentException( + "The file \"$database\" does not exist or is not readable." + ); + } + $this->fileHandle = @fopen($database, 'rb'); + if ($this->fileHandle === false) { + throw new \InvalidArgumentException( + "Error opening \"$database\"." + ); + } + $this->fileSize = @filesize($database); + if ($this->fileSize === false) { + throw new \UnexpectedValueException( + "Error determining the size of \"$database\"." + ); + } + + $start = $this->findMetadataStart($database); + $metadataDecoder = new Decoder($this->fileHandle, $start); + list($metadataArray) = $metadataDecoder->decode($start); + $this->metadata = new Metadata($metadataArray); + $this->decoder = new Decoder( + $this->fileHandle, + $this->metadata->searchTreeSize + self::$DATA_SECTION_SEPARATOR_SIZE + ); + } + + /** + * Looks up the <code>address</code> in the MaxMind DB. + * + * @param string $ipAddress + * the IP address to look up + * + * @throws \BadMethodCallException if this method is called on a closed database + * @throws \InvalidArgumentException if something other than a single IP address is passed to the method + * @throws InvalidDatabaseException + * if the database is invalid or there is an error reading + * from it + * + * @return array the record for the IP address + */ + public function get($ipAddress) + { + if (\func_num_args() !== 1) { + throw new \InvalidArgumentException( + 'Method takes exactly one argument.' + ); + } + + if (!\is_resource($this->fileHandle)) { + throw new \BadMethodCallException( + 'Attempt to read from a closed MaxMind DB.' + ); + } + + if (!filter_var($ipAddress, FILTER_VALIDATE_IP)) { + throw new \InvalidArgumentException( + "The value \"$ipAddress\" is not a valid IP address." + ); + } + + if ($this->metadata->ipVersion === 4 && strrpos($ipAddress, ':')) { + throw new \InvalidArgumentException( + "Error looking up $ipAddress. You attempted to look up an" + . ' IPv6 address in an IPv4-only database.' + ); + } + $pointer = $this->findAddressInTree($ipAddress); + if ($pointer === 0) { + return null; + } + + return $this->resolveDataPointer($pointer); + } + + private function findAddressInTree($ipAddress) + { + // XXX - could simplify. Done as a byte array to ease porting + $rawAddress = array_merge(unpack('C*', inet_pton($ipAddress))); + + $bitCount = \count($rawAddress) * 8; + + // The first node of the tree is always node 0, at the beginning of the + // value + $node = $this->startNode($bitCount); + + for ($i = 0; $i < $bitCount; ++$i) { + if ($node >= $this->metadata->nodeCount) { + break; + } + $tempBit = 0xFF & $rawAddress[$i >> 3]; + $bit = 1 & ($tempBit >> 7 - ($i % 8)); + + $node = $this->readNode($node, $bit); + } + if ($node === $this->metadata->nodeCount) { + // Record is empty + return 0; + } elseif ($node > $this->metadata->nodeCount) { + // Record is a data pointer + return $node; + } + throw new InvalidDatabaseException('Something bad happened'); + } + + private function startNode($length) + { + // Check if we are looking up an IPv4 address in an IPv6 tree. If this + // is the case, we can skip over the first 96 nodes. + if ($this->metadata->ipVersion === 6 && $length === 32) { + return $this->ipV4StartNode(); + } + // The first node of the tree is always node 0, at the beginning of the + // value + return 0; + } + + private function ipV4StartNode() + { + // This is a defensive check. There is no reason to call this when you + // have an IPv4 tree. + if ($this->metadata->ipVersion === 4) { + return 0; + } + + if ($this->ipV4Start) { + return $this->ipV4Start; + } + $node = 0; + + for ($i = 0; $i < 96 && $node < $this->metadata->nodeCount; ++$i) { + $node = $this->readNode($node, 0); + } + $this->ipV4Start = $node; + + return $node; + } + + private function readNode($nodeNumber, $index) + { + $baseOffset = $nodeNumber * $this->metadata->nodeByteSize; + + // XXX - probably could condense this. + switch ($this->metadata->recordSize) { + case 24: + $bytes = Util::read($this->fileHandle, $baseOffset + $index * 3, 3); + list(, $node) = unpack('N', "\x00" . $bytes); + + return $node; + case 28: + $middleByte = Util::read($this->fileHandle, $baseOffset + 3, 1); + list(, $middle) = unpack('C', $middleByte); + if ($index === 0) { + $middle = (0xF0 & $middle) >> 4; + } else { + $middle = 0x0F & $middle; + } + $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 3); + list(, $node) = unpack('N', \chr($middle) . $bytes); + + return $node; + case 32: + $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 4); + list(, $node) = unpack('N', $bytes); + + return $node; + default: + throw new InvalidDatabaseException( + 'Unknown record size: ' + . $this->metadata->recordSize + ); + } + } + + private function resolveDataPointer($pointer) + { + $resolved = $pointer - $this->metadata->nodeCount + + $this->metadata->searchTreeSize; + if ($resolved > $this->fileSize) { + throw new InvalidDatabaseException( + "The MaxMind DB file's search tree is corrupt" + ); + } + + list($data) = $this->decoder->decode($resolved); + + return $data; + } + + /* + * This is an extremely naive but reasonably readable implementation. There + * are much faster algorithms (e.g., Boyer-Moore) for this if speed is ever + * an issue, but I suspect it won't be. + */ + private function findMetadataStart($filename) + { + $handle = $this->fileHandle; + $fstat = fstat($handle); + $fileSize = $fstat['size']; + $marker = self::$METADATA_START_MARKER; + $markerLength = self::$METADATA_START_MARKER_LENGTH; + $metadataMaxLengthExcludingMarker + = min(self::$METADATA_MAX_SIZE, $fileSize) - $markerLength; + + for ($i = 0; $i <= $metadataMaxLengthExcludingMarker; ++$i) { + for ($j = 0; $j < $markerLength; ++$j) { + fseek($handle, $fileSize - $i - $j - 1); + $matchBit = fgetc($handle); + if ($matchBit !== $marker[$markerLength - $j - 1]) { + continue 2; + } + } + + return $fileSize - $i; + } + throw new InvalidDatabaseException( + "Error opening database file ($filename). " . + 'Is this a valid MaxMind DB file?' + ); + } + + /** + * @throws \InvalidArgumentException if arguments are passed to the method + * @throws \BadMethodCallException if the database has been closed + * + * @return Metadata object for the database + */ + public function metadata() + { + if (\func_num_args()) { + throw new \InvalidArgumentException( + 'Method takes no arguments.' + ); + } + + // Not technically required, but this makes it consistent with + // C extension and it allows us to change our implementation later. + if (!\is_resource($this->fileHandle)) { + throw new \BadMethodCallException( + 'Attempt to read from a closed MaxMind DB.' + ); + } + + return $this->metadata; + } + + /** + * Closes the MaxMind DB and returns resources to the system. + * + * @throws \Exception + * if an I/O error occurs + */ + public function close() + { + if (!\is_resource($this->fileHandle)) { + throw new \BadMethodCallException( + 'Attempt to close a closed MaxMind DB.' + ); + } + fclose($this->fileHandle); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php new file mode 100644 index 0000000..a71b3de --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php @@ -0,0 +1,341 @@ +<?php + +namespace MaxMind\Db\Reader; + +// @codingStandardsIgnoreLine +// We subtract 1 from the log to protect against precision loss. +\define(__NAMESPACE__ . '\_MM_MAX_INT_BYTES', (log(PHP_INT_MAX, 2) - 1) / 8); + +class Decoder +{ + private $fileStream; + private $pointerBase; + private $pointerBaseByteSize; + // This is only used for unit testing + private $pointerTestHack; + private $switchByteOrder; + + const _EXTENDED = 0; + const _POINTER = 1; + const _UTF8_STRING = 2; + const _DOUBLE = 3; + const _BYTES = 4; + const _UINT16 = 5; + const _UINT32 = 6; + const _MAP = 7; + const _INT32 = 8; + const _UINT64 = 9; + const _UINT128 = 10; + const _ARRAY = 11; + const _CONTAINER = 12; + const _END_MARKER = 13; + const _BOOLEAN = 14; + const _FLOAT = 15; + + public function __construct( + $fileStream, + $pointerBase = 0, + $pointerTestHack = false + ) { + $this->fileStream = $fileStream; + $this->pointerBase = $pointerBase; + + $this->pointerBaseByteSize = $pointerBase > 0 ? log($pointerBase, 2) / 8 : 0; + $this->pointerTestHack = $pointerTestHack; + + $this->switchByteOrder = $this->isPlatformLittleEndian(); + } + + public function decode($offset) + { + list(, $ctrlByte) = unpack( + 'C', + Util::read($this->fileStream, $offset, 1) + ); + ++$offset; + + $type = $ctrlByte >> 5; + + // Pointers are a special case, we don't read the next $size bytes, we + // use the size to determine the length of the pointer and then follow + // it. + if ($type === self::_POINTER) { + list($pointer, $offset) = $this->decodePointer($ctrlByte, $offset); + + // for unit testing + if ($this->pointerTestHack) { + return [$pointer]; + } + + list($result) = $this->decode($pointer); + + return [$result, $offset]; + } + + if ($type === self::_EXTENDED) { + list(, $nextByte) = unpack( + 'C', + Util::read($this->fileStream, $offset, 1) + ); + + $type = $nextByte + 7; + + if ($type < 8) { + throw new InvalidDatabaseException( + 'Something went horribly wrong in the decoder. An extended type ' + . 'resolved to a type number < 8 (' + . $type + . ')' + ); + } + + ++$offset; + } + + list($size, $offset) = $this->sizeFromCtrlByte($ctrlByte, $offset); + + return $this->decodeByType($type, $offset, $size); + } + + private function decodeByType($type, $offset, $size) + { + switch ($type) { + case self::_MAP: + return $this->decodeMap($size, $offset); + case self::_ARRAY: + return $this->decodeArray($size, $offset); + case self::_BOOLEAN: + return [$this->decodeBoolean($size), $offset]; + } + + $newOffset = $offset + $size; + $bytes = Util::read($this->fileStream, $offset, $size); + switch ($type) { + case self::_BYTES: + case self::_UTF8_STRING: + return [$bytes, $newOffset]; + case self::_DOUBLE: + $this->verifySize(8, $size); + + return [$this->decodeDouble($bytes), $newOffset]; + case self::_FLOAT: + $this->verifySize(4, $size); + + return [$this->decodeFloat($bytes), $newOffset]; + case self::_INT32: + return [$this->decodeInt32($bytes, $size), $newOffset]; + case self::_UINT16: + case self::_UINT32: + case self::_UINT64: + case self::_UINT128: + return [$this->decodeUint($bytes, $size), $newOffset]; + default: + throw new InvalidDatabaseException( + 'Unknown or unexpected type: ' . $type + ); + } + } + + private function verifySize($expected, $actual) + { + if ($expected !== $actual) { + throw new InvalidDatabaseException( + "The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)" + ); + } + } + + private function decodeArray($size, $offset) + { + $array = []; + + for ($i = 0; $i < $size; ++$i) { + list($value, $offset) = $this->decode($offset); + array_push($array, $value); + } + + return [$array, $offset]; + } + + private function decodeBoolean($size) + { + return $size === 0 ? false : true; + } + + private function decodeDouble($bits) + { + // This assumes IEEE 754 doubles, but most (all?) modern platforms + // use them. + // + // We are not using the "E" format as that was only added in + // 7.0.15 and 7.1.1. As such, we must switch byte order on + // little endian machines. + list(, $double) = unpack('d', $this->maybeSwitchByteOrder($bits)); + + return $double; + } + + private function decodeFloat($bits) + { + // This assumes IEEE 754 floats, but most (all?) modern platforms + // use them. + // + // We are not using the "G" format as that was only added in + // 7.0.15 and 7.1.1. As such, we must switch byte order on + // little endian machines. + list(, $float) = unpack('f', $this->maybeSwitchByteOrder($bits)); + + return $float; + } + + private function decodeInt32($bytes, $size) + { + switch ($size) { + case 0: + return 0; + case 1: + case 2: + case 3: + $bytes = str_pad($bytes, 4, "\x00", STR_PAD_LEFT); + break; + case 4: + break; + default: + throw new InvalidDatabaseException( + "The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)" + ); + } + + list(, $int) = unpack('l', $this->maybeSwitchByteOrder($bytes)); + + return $int; + } + + private function decodeMap($size, $offset) + { + $map = []; + + for ($i = 0; $i < $size; ++$i) { + list($key, $offset) = $this->decode($offset); + list($value, $offset) = $this->decode($offset); + $map[$key] = $value; + } + + return [$map, $offset]; + } + + private function decodePointer($ctrlByte, $offset) + { + $pointerSize = (($ctrlByte >> 3) & 0x3) + 1; + + $buffer = Util::read($this->fileStream, $offset, $pointerSize); + $offset = $offset + $pointerSize; + + switch ($pointerSize) { + case 1: + $packed = (pack('C', $ctrlByte & 0x7)) . $buffer; + list(, $pointer) = unpack('n', $packed); + $pointer += $this->pointerBase; + break; + case 2: + $packed = "\x00" . (pack('C', $ctrlByte & 0x7)) . $buffer; + list(, $pointer) = unpack('N', $packed); + $pointer += $this->pointerBase + 2048; + break; + case 3: + $packed = (pack('C', $ctrlByte & 0x7)) . $buffer; + + // It is safe to use 'N' here, even on 32 bit machines as the + // first bit is 0. + list(, $pointer) = unpack('N', $packed); + $pointer += $this->pointerBase + 526336; + break; + case 4: + // We cannot use unpack here as we might overflow on 32 bit + // machines + $pointerOffset = $this->decodeUint($buffer, $pointerSize); + + $byteLength = $pointerSize + $this->pointerBaseByteSize; + + if ($byteLength <= _MM_MAX_INT_BYTES) { + $pointer = $pointerOffset + $this->pointerBase; + } elseif (\extension_loaded('gmp')) { + $pointer = gmp_strval(gmp_add($pointerOffset, $this->pointerBase)); + } elseif (\extension_loaded('bcmath')) { + $pointer = bcadd($pointerOffset, $this->pointerBase); + } else { + throw new \RuntimeException( + 'The gmp or bcmath extension must be installed to read this database.' + ); + } + } + + return [$pointer, $offset]; + } + + private function decodeUint($bytes, $byteLength) + { + if ($byteLength === 0) { + return 0; + } + + $integer = 0; + + for ($i = 0; $i < $byteLength; ++$i) { + $part = \ord($bytes[$i]); + + // We only use gmp or bcmath if the final value is too big + if ($byteLength <= _MM_MAX_INT_BYTES) { + $integer = ($integer << 8) + $part; + } elseif (\extension_loaded('gmp')) { + $integer = gmp_strval(gmp_add(gmp_mul($integer, 256), $part)); + } elseif (\extension_loaded('bcmath')) { + $integer = bcadd(bcmul($integer, 256), $part); + } else { + throw new \RuntimeException( + 'The gmp or bcmath extension must be installed to read this database.' + ); + } + } + + return $integer; + } + + private function sizeFromCtrlByte($ctrlByte, $offset) + { + $size = $ctrlByte & 0x1f; + + if ($size < 29) { + return [$size, $offset]; + } + + $bytesToRead = $size - 28; + $bytes = Util::read($this->fileStream, $offset, $bytesToRead); + + if ($size === 29) { + $size = 29 + \ord($bytes); + } elseif ($size === 30) { + list(, $adjust) = unpack('n', $bytes); + $size = 285 + $adjust; + } elseif ($size > 30) { + list(, $adjust) = unpack('N', "\x00" . $bytes); + $size = ($adjust & (0x0FFFFFFF >> (32 - (8 * $bytesToRead)))) + + 65821; + } + + return [$size, $offset + $bytesToRead]; + } + + private function maybeSwitchByteOrder($bytes) + { + return $this->switchByteOrder ? strrev($bytes) : $bytes; + } + + private function isPlatformLittleEndian() + { + $testint = 0x00FF; + $packed = pack('S', $testint); + + return $testint === current(unpack('v', $packed)); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php new file mode 100644 index 0000000..d2a9a77 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/InvalidDatabaseException.php @@ -0,0 +1,10 @@ +<?php + +namespace MaxMind\Db\Reader; + +/** + * This class should be thrown when unexpected data is found in the database. + */ +class InvalidDatabaseException extends \Exception +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Metadata.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Metadata.php new file mode 100644 index 0000000..4efdd3d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Metadata.php @@ -0,0 +1,69 @@ +<?php + +namespace MaxMind\Db\Reader; + +/** + * This class provides the metadata for the MaxMind DB file. + * + * @property int nodeCount This is an unsigned 32-bit integer indicating + * the number of nodes in the search tree. + * @property int recordSize This is an unsigned 16-bit integer. It + * indicates the number of bits in a record in the search tree. Note that each + * node consists of two records. + * @property int ipVersion This is an unsigned 16-bit integer which is + * always 4 or 6. It indicates whether the database contains IPv4 or IPv6 + * address data. + * @property string databaseType This is a string that indicates the structure + * of each data record associated with an IP address. The actual definition of + * these structures is left up to the database creator. + * @property array languages An array of strings, each of which is a language + * code. A given record may contain data items that have been localized to + * some or all of these languages. This may be undefined. + * @property int binaryFormatMajorVersion This is an unsigned 16-bit + * integer indicating the major version number for the database's binary + * format. + * @property int binaryFormatMinorVersion This is an unsigned 16-bit + * integer indicating the minor version number for the database's binary format. + * @property int buildEpoch This is an unsigned 64-bit integer that + * contains the database build timestamp as a Unix epoch value. + * @property array description This key will always point to a map + * (associative array). The keys of that map will be language codes, and the + * values will be a description in that language as a UTF-8 string. May be + * undefined for some databases. + */ +class Metadata +{ + private $binaryFormatMajorVersion; + private $binaryFormatMinorVersion; + private $buildEpoch; + private $databaseType; + private $description; + private $ipVersion; + private $languages; + private $nodeByteSize; + private $nodeCount; + private $recordSize; + private $searchTreeSize; + + public function __construct($metadata) + { + $this->binaryFormatMajorVersion = + $metadata['binary_format_major_version']; + $this->binaryFormatMinorVersion = + $metadata['binary_format_minor_version']; + $this->buildEpoch = $metadata['build_epoch']; + $this->databaseType = $metadata['database_type']; + $this->languages = $metadata['languages']; + $this->description = $metadata['description']; + $this->ipVersion = $metadata['ip_version']; + $this->nodeCount = $metadata['node_count']; + $this->recordSize = $metadata['record_size']; + $this->nodeByteSize = $this->recordSize / 4; + $this->searchTreeSize = $this->nodeCount * $this->nodeByteSize; + } + + public function __get($var) + { + return $this->$var; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php new file mode 100644 index 0000000..87ebbf1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php @@ -0,0 +1,26 @@ +<?php + +namespace MaxMind\Db\Reader; + +class Util +{ + public static function read($stream, $offset, $numberOfBytes) + { + if ($numberOfBytes === 0) { + return ''; + } + if (fseek($stream, $offset) === 0) { + $value = fread($stream, $numberOfBytes); + + // We check that the number of bytes read is equal to the number + // asked for. We use ftell as getting the length of $value is + // much slower. + if (ftell($stream) - $offset === $numberOfBytes) { + return $value; + } + } + throw new InvalidDatabaseException( + 'The MaxMind DB file contains bad data' + ); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/CHANGELOG.md b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/CHANGELOG.md new file mode 100644 index 0000000..5a358d5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/CHANGELOG.md @@ -0,0 +1,79 @@ +CHANGELOG +========= + +0.5.0 (2018-02-12) +------------------ + +* Refer to account IDs using the terminology "account" rather than "user". + +0.4.0 (2017-07-10) +------------------ + +* PHP 5.4 is now required. + +0.3.1 (2016-08-10) +------------------ + +* On Mac OS X when using a curl built against SecureTransport, the certs + in the system's keychain will now be used instead of the CA bundle on + the file system. + +0.3.0 (2016-08-09) +------------------ + +* This package now uses `composer/ca-bundle` by default rather than a CA + bundle distributed with this package. `composer/ca-bundle` will first try + to use the system CA bundle and will fall back to the Mozilla CA bundle + when no system bundle is available. You may still specify your own bundle + using the `caBundle` option. + +0.2.1 (2016-06-13) +------------------ + +* Fix typo in code to copy cert to temp directory. + +0.2.0 (2016-06-10) +------------------ + +* Added handling of additional error codes that the web service may return. +* A `USER_ID_UNKNOWN` error will now throw a + `MaxMind\Exception\AuthenticationException`. +* Added support for `proxy` option. Closes #6. + +0.1.0 (2016-05-23) +------------------ + +* A `PERMISSION_REQUIRED` error will now throw a `PermissionRequiredException` + exception. +* Added a `.gitattributes` file to exclude tests from Composer releases. + GitHub #7. +* Updated included cert bundle. + +0.0.4 (2015-07-21) +------------------ + +* Added extremely basic tests for the curl calls. +* Fixed broken POSTs. + +0.0.3 (2015-06-30) +------------------ + +* Floats now work with the `timeout` and `connectTimeout` options. Fix by + Benjamin Pick. GitHub PR #2. +* `curl_error` is now used instead of `curl_strerror`. The latter is only + available for PHP 5.5 or later. Fix by Benjamin Pick. GitHub PR #1. + + +0.0.2 (2015-06-09) +------------------ + +* An exception is now immediately thrown curl error rather than letting later + status code checks throw an exception. This improves the exception message + greatly. +* If this library is inside a phar archive, the CA certs are copied out of the + archive to a temporary file so that curl can use them. + +0.0.1 (2015-06-01) +------------------ + +* Initial release. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/LICENSE b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/README.md b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/README.md new file mode 100644 index 0000000..97a4b15 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/README.md @@ -0,0 +1,26 @@ +# Common Code for MaxMind Web Service Clients # + +This is _not_ intended for direct use by third parties. Rather, it is for +shared code between MaxMind's various web service client APIs. + +## Requirements ## + +The library requires PHP 5.4 or greater. This library works and is tested +with HHVM. + +There are several other dependencies as defined in the `composer.json` file. + +## Contributing ## + +Patches and pull requests are encouraged. All code should follow the PSR-2 +style guidelines. Please include unit tests whenever possible. + +## Versioning ## + +This API uses [Semantic Versioning](http://semver.org/). + +## Copyright and License ## + +This software is Copyright (c) 2015-2018 by MaxMind, Inc. + +This is free software, licensed under the Apache License, Version 2.0. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/composer.json new file mode 100644 index 0000000..1d224ae --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/composer.json @@ -0,0 +1,31 @@ +{ + "name": "maxmind/web-service-common", + "description": "Internal MaxMind Web Service API", + "minimum-stability": "stable", + "homepage": "https://github.com/maxmind/web-service-common-php", + "type": "library", + "license": "Apache-2.0", + "authors": [ + { + "name": "Gregory Oschwald", + "email": "goschwald@maxmind.com" + } + ], + "require": { + "php": ">=5.4", + "composer/ca-bundle": "^1.0.3", + "ext-curl": "*", + "ext-json": "*" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "4.*", + "squizlabs/php_codesniffer": "3.*" + }, + "autoload": { + "psr-4": { + "MaxMind\\Exception\\": "src/Exception", + "MaxMind\\WebService\\": "src/WebService" + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/dev-bin/release.sh b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/dev-bin/release.sh new file mode 100644 index 0000000..a23cbae --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/dev-bin/release.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +set -eu -o pipefail + + +changelog=$(cat CHANGELOG.md) + +regex=' +([0-9]+\.[0-9]+\.[0-9]+) \(([0-9]{4}-[0-9]{2}-[0-9]{2})\) +-* + +((.| +)*) +' + +if [[ ! $changelog =~ $regex ]]; then + echo "Could not find date line in change log!" + exit 1 +fi + +version="${BASH_REMATCH[1]}" +date="${BASH_REMATCH[2]}" +notes="$(echo "${BASH_REMATCH[3]}" | sed -n -e '/^[0-9]\+\.[0-9]\+\.[0-9]\+/,$!p')" + +if [[ "$date" != $(date +"%Y-%m-%d") ]]; then + echo "$date is not today!" + exit 1 +fi + +tag="v$version" + +if [ -n "$(git status --porcelain)" ]; then + echo ". is not clean." >&2 + exit 1 +fi + +php composer.phar self-update +php composer.phar update + +./vendor/bin/phpunit + +echo "Release notes for $tag:" +echo "$notes" + +read -e -p "Commit changes and push to origin? " should_push + +if [ "$should_push" != "y" ]; then + echo "Aborting" + exit 1 +fi + +git push + +message="$version + +$notes" + +hub release create -m "$message" "$tag" + +git push --tags diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php new file mode 100644 index 0000000..ba42362 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/AuthenticationException.php @@ -0,0 +1,10 @@ +<?php + +namespace MaxMind\Exception; + +/** + * This class represents an error authenticating. + */ +class AuthenticationException extends InvalidRequestException +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/HttpException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/HttpException.php new file mode 100644 index 0000000..f158944 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/HttpException.php @@ -0,0 +1,40 @@ +<?php + +namespace MaxMind\Exception; + +/** + * This class represents an HTTP transport error. + */ +class HttpException extends WebServiceException +{ + /** + * The URI queried. + */ + private $uri; + + /** + * @param string $message a message describing the error + * @param int $httpStatus the HTTP status code of the response + * @param string $uri the URI used in the request + * @param \Exception $previous the previous exception, if any + */ + public function __construct( + $message, + $httpStatus, + $uri, + \Exception $previous = null + ) { + $this->uri = $uri; + parent::__construct($message, $httpStatus, $previous); + } + + public function getUri() + { + return $this->uri; + } + + public function getStatusCode() + { + return $this->getCode(); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php new file mode 100644 index 0000000..fe159a2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InsufficientFundsException.php @@ -0,0 +1,10 @@ +<?php + +namespace MaxMind\Exception; + +/** + * Thrown when the account is out of credits. + */ +class InsufficientFundsException extends InvalidRequestException +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InvalidInputException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InvalidInputException.php new file mode 100644 index 0000000..3a6b32a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InvalidInputException.php @@ -0,0 +1,12 @@ +<?php + +namespace MaxMind\Exception; + +/** + * This class represents an error in creating the request to be sent to the + * web service. For example, if the array cannot be encoded as JSON or if there + * is a missing or invalid field. + */ +class InvalidInputException extends WebServiceException +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InvalidRequestException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InvalidRequestException.php new file mode 100644 index 0000000..354f4b6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/InvalidRequestException.php @@ -0,0 +1,37 @@ +<?php + +namespace MaxMind\Exception; + +/** + * Thrown when a MaxMind web service returns an error relating to the request. + */ +class InvalidRequestException extends HttpException +{ + /** + * The code returned by the MaxMind web service. + */ + private $error; + + /** + * @param string $message the exception message + * @param int $error the error code returned by the MaxMind web service + * @param int $httpStatus the HTTP status code of the response + * @param string $uri the URI queries + * @param \Exception $previous the previous exception, if any + */ + public function __construct( + $message, + $error, + $httpStatus, + $uri, + \Exception $previous = null + ) { + $this->error = $error; + parent::__construct($message, $httpStatus, $uri, $previous); + } + + public function getErrorCode() + { + return $this->error; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php new file mode 100644 index 0000000..31608f7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/IpAddressNotFoundException.php @@ -0,0 +1,7 @@ +<?php + +namespace MaxMind\Exception; + +class IpAddressNotFoundException extends InvalidRequestException +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/PermissionRequiredException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/PermissionRequiredException.php new file mode 100644 index 0000000..5f87854 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/PermissionRequiredException.php @@ -0,0 +1,10 @@ +<?php + +namespace MaxMind\Exception; + +/** + * This exception is thrown when the service requires permission to access. + */ +class PermissionRequiredException extends InvalidRequestException +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/WebServiceException.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/WebServiceException.php new file mode 100644 index 0000000..ff33452 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/Exception/WebServiceException.php @@ -0,0 +1,10 @@ +<?php + +namespace MaxMind\Exception; + +/** + * This class represents a generic web service error. + */ +class WebServiceException extends \Exception +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Client.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Client.php new file mode 100644 index 0000000..581bf5d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Client.php @@ -0,0 +1,472 @@ +<?php + +namespace MaxMind\WebService; + +use Composer\CaBundle\CaBundle; +use MaxMind\Exception\AuthenticationException; +use MaxMind\Exception\HttpException; +use MaxMind\Exception\InsufficientFundsException; +use MaxMind\Exception\InvalidInputException; +use MaxMind\Exception\InvalidRequestException; +use MaxMind\Exception\IpAddressNotFoundException; +use MaxMind\Exception\PermissionRequiredException; +use MaxMind\Exception\WebServiceException; +use MaxMind\WebService\Http\RequestFactory; + +/** + * This class is not intended to be used directly by an end-user of a + * MaxMind web service. Please use the appropriate client API for the service + * that you are using. + * + * @internal + */ +class Client +{ + const VERSION = '0.2.0'; + + private $caBundle; + private $connectTimeout; + private $host = 'api.maxmind.com'; + private $httpRequestFactory; + private $licenseKey; + private $proxy; + private $timeout; + private $userAgentPrefix; + private $accountId; + + /** + * @param int $accountId your MaxMind account ID + * @param string $licenseKey your MaxMind license key + * @param array $options an array of options. Possible keys: + * * `host` - The host to use when connecting to the web service. + * * `userAgent` - The prefix of the User-Agent to use in the request. + * * `caBundle` - The bundle of CA root certificates to use in the request. + * * `connectTimeout` - The connect timeout to use for the request. + * * `timeout` - The timeout to use for the request. + * * `proxy` - The HTTP proxy to use. May include a schema, port, + * username, and password, e.g., `http://username:password@127.0.0.1:10`. + */ + public function __construct( + $accountId, + $licenseKey, + $options = [] + ) { + $this->accountId = $accountId; + $this->licenseKey = $licenseKey; + + $this->httpRequestFactory = isset($options['httpRequestFactory']) + ? $options['httpRequestFactory'] + : new RequestFactory(); + + if (isset($options['host'])) { + $this->host = $options['host']; + } + if (isset($options['userAgent'])) { + $this->userAgentPrefix = $options['userAgent'] . ' '; + } + + $this->caBundle = isset($options['caBundle']) ? + $this->caBundle = $options['caBundle'] : $this->getCaBundle(); + + if (isset($options['connectTimeout'])) { + $this->connectTimeout = $options['connectTimeout']; + } + if (isset($options['timeout'])) { + $this->timeout = $options['timeout']; + } + + if (isset($options['proxy'])) { + $this->proxy = $options['proxy']; + } + } + + /** + * @param string $service name of the service querying + * @param string $path the URI path to use + * @param array $input the data to be posted as JSON + * + * @throws InvalidInputException when the request has missing or invalid + * data + * @throws AuthenticationException when there is an issue authenticating the + * request + * @throws InsufficientFundsException when your account is out of funds + * @throws InvalidRequestException when the request is invalid for some + * other reason, e.g., invalid JSON in the POST. + * @throws HttpException when an unexpected HTTP error occurs + * @throws WebServiceException when some other error occurs. This also + * serves as the base class for the above exceptions. + * + * @return array The decoded content of a successful response + */ + public function post($service, $path, $input) + { + $body = json_encode($input); + if ($body === false) { + throw new InvalidInputException( + 'Error encoding input as JSON: ' + . $this->jsonErrorDescription() + ); + } + + $request = $this->createRequest( + $path, + ['Content-Type: application/json'] + ); + + list($statusCode, $contentType, $body) = $request->post($body); + + return $this->handleResponse( + $statusCode, + $contentType, + $body, + $service, + $path + ); + } + + public function get($service, $path) + { + $request = $this->createRequest($path); + + list($statusCode, $contentType, $body) = $request->get(); + + return $this->handleResponse( + $statusCode, + $contentType, + $body, + $service, + $path + ); + } + + private function userAgent() + { + $curlVersion = curl_version(); + + return $this->userAgentPrefix . 'MaxMind-WS-API/' . self::VERSION . ' PHP/' . PHP_VERSION . + ' curl/' . $curlVersion['version']; + } + + private function createRequest($path, $headers = []) + { + array_push( + $headers, + 'Authorization: Basic ' + . base64_encode($this->accountId . ':' . $this->licenseKey), + 'Accept: application/json' + ); + + return $this->httpRequestFactory->request( + $this->urlFor($path), + [ + 'caBundle' => $this->caBundle, + 'connectTimeout' => $this->connectTimeout, + 'headers' => $headers, + 'proxy' => $this->proxy, + 'timeout' => $this->timeout, + 'userAgent' => $this->userAgent(), + ] + ); + } + + /** + * @param int $statusCode the HTTP status code of the response + * @param string $contentType the Content-Type of the response + * @param string $body the response body + * @param string $service the name of the service + * @param string $path the path used in the request + * + * @throws AuthenticationException when there is an issue authenticating the + * request + * @throws InsufficientFundsException when your account is out of funds + * @throws InvalidRequestException when the request is invalid for some + * other reason, e.g., invalid JSON in the POST. + * @throws HttpException when an unexpected HTTP error occurs + * @throws WebServiceException when some other error occurs. This also + * serves as the base class for the above exceptions + * + * @return array The decoded content of a successful response + */ + private function handleResponse( + $statusCode, + $contentType, + $body, + $service, + $path + ) { + if ($statusCode >= 400 && $statusCode <= 499) { + $this->handle4xx($statusCode, $contentType, $body, $service, $path); + } elseif ($statusCode >= 500) { + $this->handle5xx($statusCode, $service, $path); + } elseif ($statusCode !== 200) { + $this->handleUnexpectedStatus($statusCode, $service, $path); + } + + return $this->handleSuccess($body, $service); + } + + /** + * @return string describing the JSON error + */ + private function jsonErrorDescription() + { + $errno = json_last_error(); + switch ($errno) { + case JSON_ERROR_DEPTH: + return 'The maximum stack depth has been exceeded.'; + case JSON_ERROR_STATE_MISMATCH: + return 'Invalid or malformed JSON.'; + case JSON_ERROR_CTRL_CHAR: + return 'Control character error.'; + case JSON_ERROR_SYNTAX: + return 'Syntax error.'; + case JSON_ERROR_UTF8: + return 'Malformed UTF-8 characters.'; + default: + return "Other JSON error ($errno)."; + } + } + + /** + * @param string $path the path to use in the URL + * + * @return string the constructed URL + */ + private function urlFor($path) + { + return 'https://' . $this->host . $path; + } + + /** + * @param int $statusCode the HTTP status code + * @param string $contentType the response content-type + * @param string $body the response body + * @param string $service the service name + * @param string $path the path used in the request + * + * @throws AuthenticationException + * @throws HttpException + * @throws InsufficientFundsException + * @throws InvalidRequestException + */ + private function handle4xx( + $statusCode, + $contentType, + $body, + $service, + $path + ) { + if (strlen($body) === 0) { + throw new HttpException( + "Received a $statusCode error for $service with no body", + $statusCode, + $this->urlFor($path) + ); + } + if (!strstr($contentType, 'json')) { + throw new HttpException( + "Received a $statusCode error for $service with " . + 'the following body: ' . $body, + $statusCode, + $this->urlFor($path) + ); + } + + $message = json_decode($body, true); + if ($message === null) { + throw new HttpException( + "Received a $statusCode error for $service but could " . + 'not decode the response as JSON: ' + . $this->jsonErrorDescription() . ' Body: ' . $body, + $statusCode, + $this->urlFor($path) + ); + } + + if (!isset($message['code']) || !isset($message['error'])) { + throw new HttpException( + 'Error response contains JSON but it does not ' . + 'specify code or error keys: ' . $body, + $statusCode, + $this->urlFor($path) + ); + } + + $this->handleWebServiceError( + $message['error'], + $message['code'], + $statusCode, + $path + ); + } + + /** + * @param string $message the error message from the web service + * @param string $code the error code from the web service + * @param int $statusCode the HTTP status code + * @param string $path the path used in the request + * + * @throws AuthenticationException + * @throws InvalidRequestException + * @throws InsufficientFundsException + */ + private function handleWebServiceError( + $message, + $code, + $statusCode, + $path + ) { + switch ($code) { + case 'IP_ADDRESS_NOT_FOUND': + case 'IP_ADDRESS_RESERVED': + throw new IpAddressNotFoundException( + $message, + $code, + $statusCode, + $this->urlFor($path) + ); + case 'ACCOUNT_ID_REQUIRED': + case 'ACCOUNT_ID_UNKNOWN': + case 'AUTHORIZATION_INVALID': + case 'LICENSE_KEY_REQUIRED': + case 'USER_ID_REQUIRED': + case 'USER_ID_UNKNOWN': + throw new AuthenticationException( + $message, + $code, + $statusCode, + $this->urlFor($path) + ); + case 'OUT_OF_QUERIES': + case 'INSUFFICIENT_FUNDS': + throw new InsufficientFundsException( + $message, + $code, + $statusCode, + $this->urlFor($path) + ); + case 'PERMISSION_REQUIRED': + throw new PermissionRequiredException( + $message, + $code, + $statusCode, + $this->urlFor($path) + ); + default: + throw new InvalidRequestException( + $message, + $code, + $statusCode, + $this->urlFor($path) + ); + } + } + + /** + * @param int $statusCode the HTTP status code + * @param string $service the service name + * @param string $path the URI path used in the request + * + * @throws HttpException + */ + private function handle5xx($statusCode, $service, $path) + { + throw new HttpException( + "Received a server error ($statusCode) for $service", + $statusCode, + $this->urlFor($path) + ); + } + + /** + * @param int $statusCode the HTTP status code + * @param string $service the service name + * @param string $path the URI path used in the request + * + * @throws HttpException + */ + private function handleUnexpectedStatus($statusCode, $service, $path) + { + throw new HttpException( + 'Received an unexpected HTTP status ' . + "($statusCode) for $service", + $statusCode, + $this->urlFor($path) + ); + } + + /** + * @param string $body the successful request body + * @param string $service the service name + * + * @throws WebServiceException if the request body cannot be decoded as + * JSON + * + * @return array the decoded request body + */ + private function handleSuccess($body, $service) + { + if (strlen($body) === 0) { + throw new WebServiceException( + "Received a 200 response for $service but did not " . + 'receive a HTTP body.' + ); + } + + $decodedContent = json_decode($body, true); + if ($decodedContent === null) { + throw new WebServiceException( + "Received a 200 response for $service but could " . + 'not decode the response as JSON: ' + . $this->jsonErrorDescription() . ' Body: ' . $body + ); + } + + return $decodedContent; + } + + private function getCaBundle() + { + $curlVersion = curl_version(); + + // On OS X, when the SSL version is "SecureTransport", the system's + // keychain will be used. + if ($curlVersion['ssl_version'] === 'SecureTransport') { + return; + } + $cert = CaBundle::getSystemCaRootBundlePath(); + + // Check if the cert is inside a phar. If so, we need to copy the cert + // to a temp file so that curl can see it. + if (substr($cert, 0, 7) === 'phar://') { + $tempDir = sys_get_temp_dir(); + $newCert = tempnam($tempDir, 'geoip2-'); + if ($newCert === false) { + throw new \RuntimeException( + "Unable to create temporary file in $tempDir" + ); + } + if (!copy($cert, $newCert)) { + throw new \RuntimeException( + "Could not copy $cert to $newCert: " + . var_export(error_get_last(), true) + ); + } + + // We use a shutdown function rather than the destructor as the + // destructor isn't called on a fatal error such as an uncaught + // exception. + register_shutdown_function( + function () use ($newCert) { + unlink($newCert); + } + ); + $cert = $newCert; + } + if (!file_exists($cert)) { + throw new \RuntimeException("CA cert does not exist at $cert"); + } + + return $cert; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php new file mode 100644 index 0000000..e44e408 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/CurlRequest.php @@ -0,0 +1,110 @@ +<?php + +namespace MaxMind\WebService\Http; + +use MaxMind\Exception\HttpException; + +/** + * This class is for internal use only. Semantic versioning does not not apply. + * + * @internal + */ +class CurlRequest implements Request +{ + private $url; + private $options; + + /** + * @param $url + * @param $options + */ + public function __construct($url, $options) + { + $this->url = $url; + $this->options = $options; + } + + /** + * @param $body + * + * @return array + */ + public function post($body) + { + $curl = $this->createCurl(); + + curl_setopt($curl, CURLOPT_POST, true); + curl_setopt($curl, CURLOPT_POSTFIELDS, $body); + + return $this->execute($curl); + } + + public function get() + { + $curl = $this->createCurl(); + + curl_setopt($curl, CURLOPT_HTTPGET, true); + + return $this->execute($curl); + } + + /** + * @return resource + */ + private function createCurl() + { + $curl = curl_init($this->url); + + if (!empty($this->options['caBundle'])) { + $opts[CURLOPT_CAINFO] = $this->options['caBundle']; + } + $opts[CURLOPT_SSL_VERIFYHOST] = 2; + $opts[CURLOPT_FOLLOWLOCATION] = false; + $opts[CURLOPT_SSL_VERIFYPEER] = true; + $opts[CURLOPT_RETURNTRANSFER] = true; + + $opts[CURLOPT_HTTPHEADER] = $this->options['headers']; + $opts[CURLOPT_USERAGENT] = $this->options['userAgent']; + $opts[CURLOPT_PROXY] = $this->options['proxy']; + + // The defined()s are here as the *_MS opts are not available on older + // cURL versions + $connectTimeout = $this->options['connectTimeout']; + if (defined('CURLOPT_CONNECTTIMEOUT_MS')) { + $opts[CURLOPT_CONNECTTIMEOUT_MS] = ceil($connectTimeout * 1000); + } else { + $opts[CURLOPT_CONNECTTIMEOUT] = ceil($connectTimeout); + } + + $timeout = $this->options['timeout']; + if (defined('CURLOPT_TIMEOUT_MS')) { + $opts[CURLOPT_TIMEOUT_MS] = ceil($timeout * 1000); + } else { + $opts[CURLOPT_TIMEOUT] = ceil($timeout); + } + + curl_setopt_array($curl, $opts); + + return $curl; + } + + private function execute($curl) + { + $body = curl_exec($curl); + if ($errno = curl_errno($curl)) { + $errorMessage = curl_error($curl); + + throw new HttpException( + "cURL error ({$errno}): {$errorMessage}", + 0, + $this->url + ); + } + + $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + $contentType = curl_getinfo($curl, CURLINFO_CONTENT_TYPE); + curl_close($curl); + + return [$statusCode, $contentType, $body]; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/Request.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/Request.php new file mode 100644 index 0000000..27bdd58 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/Request.php @@ -0,0 +1,29 @@ +<?php + +namespace MaxMind\WebService\Http; + +/** + * Interface Request. + * + * @internal + */ +interface Request +{ + /** + * @param $url + * @param $options + */ + public function __construct($url, $options); + + /** + * @param $body + * + * @return mixed + */ + public function post($body); + + /** + * @return mixed + */ + public function get(); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php new file mode 100644 index 0000000..099fb70 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/maxmind/web-service-common/src/WebService/Http/RequestFactory.php @@ -0,0 +1,26 @@ +<?php + +namespace MaxMind\WebService\Http; + +/** + * Class RequestFactory. + * + * @internal + */ +class RequestFactory +{ + public function __construct() + { + } + + /** + * @param $url + * @param $options + * + * @return CurlRequest + */ + public function request($url, $options) + { + return new CurlRequest($url, $options); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/CHANGELOG.md b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/CHANGELOG.md new file mode 100644 index 0000000..58ddab0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/CHANGELOG.md @@ -0,0 +1,16 @@ +# Changelog + +All notable changes to this project will be documented in this file, in reverse chronological order by release. + +## 1.0.1 - 2016-08-06 + +### Fixed + +- Make spacing consistent in phpdoc annotations php-fig/cache#9 - chalasr +- Fix grammar in phpdoc annotations php-fig/cache#10 - chalasr +- Be more specific in docblocks that `getItems()` and `deleteItems()` take an array of strings (`string[]`) compared to just `array` php-fig/cache#8 - GrahamCampbell +- For `expiresAt()` and `expiresAfter()` in CacheItemInterface fix docblock to specify null as a valid parameters as well as an implementation of DateTimeInterface php-fig/cache#7 - GrahamCampbell + +## 1.0.0 - 2015-12-11 + +Initial stable release; reflects accepted PSR-6 specification diff --git a/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/LICENSE.txt b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/LICENSE.txt new file mode 100644 index 0000000..b1c2c97 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2015 PHP Framework Interoperability Group + +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. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/README.md b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/README.md new file mode 100644 index 0000000..c8706ce --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/README.md @@ -0,0 +1,9 @@ +PSR Cache +========= + +This repository holds all interfaces defined by +[PSR-6](http://www.php-fig.org/psr/psr-6/). + +Note that this is not a Cache implementation of its own. It is merely an +interface that describes a Cache implementation. See the specification for more +details. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/composer.json new file mode 100644 index 0000000..e828fec --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/composer.json @@ -0,0 +1,25 @@ +{ + "name": "psr/cache", + "description": "Common interface for caching libraries", + "keywords": ["psr", "psr-6", "cache"], + "license": "MIT", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheException.php b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheException.php new file mode 100644 index 0000000..e27f22f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheException.php @@ -0,0 +1,10 @@ +<?php + +namespace Psr\Cache; + +/** + * Exception interface for all exceptions thrown by an Implementing Library. + */ +interface CacheException +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheItemInterface.php b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheItemInterface.php new file mode 100644 index 0000000..63d05dd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheItemInterface.php @@ -0,0 +1,105 @@ +<?php + +namespace Psr\Cache; + +/** + * CacheItemInterface defines an interface for interacting with objects inside a cache. + * + * Each Item object MUST be associated with a specific key, which can be set + * according to the implementing system and is typically passed by the + * Cache\CacheItemPoolInterface object. + * + * The Cache\CacheItemInterface object encapsulates the storage and retrieval of + * cache items. Each Cache\CacheItemInterface is generated by a + * Cache\CacheItemPoolInterface object, which is responsible for any required + * setup as well as associating the object with a unique Key. + * Cache\CacheItemInterface objects MUST be able to store and retrieve any type + * of PHP value defined in the Data section of the specification. + * + * Calling Libraries MUST NOT instantiate Item objects themselves. They may only + * be requested from a Pool object via the getItem() method. Calling Libraries + * SHOULD NOT assume that an Item created by one Implementing Library is + * compatible with a Pool from another Implementing Library. + */ +interface CacheItemInterface +{ + /** + * Returns the key for the current cache item. + * + * The key is loaded by the Implementing Library, but should be available to + * the higher level callers when needed. + * + * @return string + * The key string for this cache item. + */ + public function getKey(); + + /** + * Retrieves the value of the item from the cache associated with this object's key. + * + * The value returned must be identical to the value originally stored by set(). + * + * If isHit() returns false, this method MUST return null. Note that null + * is a legitimate cached value, so the isHit() method SHOULD be used to + * differentiate between "null value was found" and "no value was found." + * + * @return mixed + * The value corresponding to this cache item's key, or null if not found. + */ + public function get(); + + /** + * Confirms if the cache item lookup resulted in a cache hit. + * + * Note: This method MUST NOT have a race condition between calling isHit() + * and calling get(). + * + * @return bool + * True if the request resulted in a cache hit. False otherwise. + */ + public function isHit(); + + /** + * Sets the value represented by this cache item. + * + * The $value argument may be any item that can be serialized by PHP, + * although the method of serialization is left up to the Implementing + * Library. + * + * @param mixed $value + * The serializable value to be stored. + * + * @return static + * The invoked object. + */ + public function set($value); + + /** + * Sets the expiration time for this cache item. + * + * @param \DateTimeInterface|null $expiration + * The point in time after which the item MUST be considered expired. + * If null is passed explicitly, a default value MAY be used. If none is set, + * the value should be stored permanently or for as long as the + * implementation allows. + * + * @return static + * The called object. + */ + public function expiresAt($expiration); + + /** + * Sets the expiration time for this cache item. + * + * @param int|\DateInterval|null $time + * The period of time from the present after which the item MUST be considered + * expired. An integer parameter is understood to be the time in seconds until + * expiration. If null is passed explicitly, a default value MAY be used. + * If none is set, the value should be stored permanently or for as long as the + * implementation allows. + * + * @return static + * The called object. + */ + public function expiresAfter($time); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheItemPoolInterface.php b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheItemPoolInterface.php new file mode 100644 index 0000000..0351419 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/CacheItemPoolInterface.php @@ -0,0 +1,138 @@ +<?php + +namespace Psr\Cache; + +/** + * CacheItemPoolInterface generates CacheItemInterface objects. + * + * The primary purpose of Cache\CacheItemPoolInterface is to accept a key from + * the Calling Library and return the associated Cache\CacheItemInterface object. + * It is also the primary point of interaction with the entire cache collection. + * All configuration and initialization of the Pool is left up to an + * Implementing Library. + */ +interface CacheItemPoolInterface +{ + /** + * Returns a Cache Item representing the specified key. + * + * This method must always return a CacheItemInterface object, even in case of + * a cache miss. It MUST NOT return null. + * + * @param string $key + * The key for which to return the corresponding Cache Item. + * + * @throws InvalidArgumentException + * If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException + * MUST be thrown. + * + * @return CacheItemInterface + * The corresponding Cache Item. + */ + public function getItem($key); + + /** + * Returns a traversable set of cache items. + * + * @param string[] $keys + * An indexed array of keys of items to retrieve. + * + * @throws InvalidArgumentException + * If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException + * MUST be thrown. + * + * @return array|\Traversable + * A traversable collection of Cache Items keyed by the cache keys of + * each item. A Cache item will be returned for each key, even if that + * key is not found. However, if no keys are specified then an empty + * traversable MUST be returned instead. + */ + public function getItems(array $keys = array()); + + /** + * Confirms if the cache contains specified cache item. + * + * Note: This method MAY avoid retrieving the cached value for performance reasons. + * This could result in a race condition with CacheItemInterface::get(). To avoid + * such situation use CacheItemInterface::isHit() instead. + * + * @param string $key + * The key for which to check existence. + * + * @throws InvalidArgumentException + * If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException + * MUST be thrown. + * + * @return bool + * True if item exists in the cache, false otherwise. + */ + public function hasItem($key); + + /** + * Deletes all items in the pool. + * + * @return bool + * True if the pool was successfully cleared. False if there was an error. + */ + public function clear(); + + /** + * Removes the item from the pool. + * + * @param string $key + * The key to delete. + * + * @throws InvalidArgumentException + * If the $key string is not a legal value a \Psr\Cache\InvalidArgumentException + * MUST be thrown. + * + * @return bool + * True if the item was successfully removed. False if there was an error. + */ + public function deleteItem($key); + + /** + * Removes multiple items from the pool. + * + * @param string[] $keys + * An array of keys that should be removed from the pool. + + * @throws InvalidArgumentException + * If any of the keys in $keys are not a legal value a \Psr\Cache\InvalidArgumentException + * MUST be thrown. + * + * @return bool + * True if the items were successfully removed. False if there was an error. + */ + public function deleteItems(array $keys); + + /** + * Persists a cache item immediately. + * + * @param CacheItemInterface $item + * The cache item to save. + * + * @return bool + * True if the item was successfully persisted. False if there was an error. + */ + public function save(CacheItemInterface $item); + + /** + * Sets a cache item to be persisted later. + * + * @param CacheItemInterface $item + * The cache item to save. + * + * @return bool + * False if the item could not be queued or if a commit was attempted and failed. True otherwise. + */ + public function saveDeferred(CacheItemInterface $item); + + /** + * Persists any deferred cache items. + * + * @return bool + * True if all not-yet-saved items were successfully saved or there were none. False otherwise. + */ + public function commit(); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/InvalidArgumentException.php b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/InvalidArgumentException.php new file mode 100644 index 0000000..be7c6fa --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/psr/cache/src/InvalidArgumentException.php @@ -0,0 +1,13 @@ +<?php + +namespace Psr\Cache; + +/** + * Exception interface for invalid cache arguments. + * + * Any time an invalid argument is passed into a method it must throw an + * exception class which implements Psr\Cache\InvalidArgumentException. + */ +interface InvalidArgumentException extends CacheException +{ +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.codeclimate.yml b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.codeclimate.yml new file mode 100644 index 0000000..e34343a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.codeclimate.yml @@ -0,0 +1,4 @@ +languages: + PHP: true +exclude_paths: +- "tests/*" diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.gitignore b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.gitignore new file mode 100644 index 0000000..4a40460 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.gitignore @@ -0,0 +1,32 @@ +# phpstorm project files +.idea + +# netbeans project files +nbproject + +# zend studio for eclipse project files +.buildpath +.project +.settings + +# windows thumbnail cache +Thumbs.db + +# Mac DS_Store Files +.DS_Store + +# composer vendor dir +/vendor + +# phpunit itself is not needed +phpunit.phar + +# local phpunit config +phpunit.xml +phpunit.xml.dist + +# coverage report +/coverage + +composer.phar +composer.lock \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.travis.yml b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.travis.yml new file mode 100644 index 0000000..287122b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/.travis.yml @@ -0,0 +1,17 @@ +language: php +php: + - 5.4 + - 5.5 + - 5.6 + - 7.0 + +before_script: + - wget http://getcomposer.org/composer.phar + - php composer.phar install --dev --no-interaction + +script: + - mkdir -p build/logs + - phpunit --coverage-clover build/logs/clover.xml + +after_script: + - php vendor/bin/coveralls diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/LICENSE b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/LICENSE new file mode 100644 index 0000000..4611d95 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Safarov Alisher + +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. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/README.md b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/README.md new file mode 100644 index 0000000..147a192 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/README.md @@ -0,0 +1,206 @@ +# IPTools + +PHP Library for manipulating network addresses (IPv4 and IPv6). + +[![Build Status](https://travis-ci.org/S1lentium/IPTools.svg)](https://travis-ci.org/S1lentium/IPTools) +[![Coverage Status](https://coveralls.io/repos/S1lentium/IPTools/badge.svg?branch=master&service=github)](https://coveralls.io/github/S1lentium/IPTools?branch=master) +[![Code Climate](https://codeclimate.com/github/S1lentium/IPTools/badges/gpa.svg)](https://codeclimate.com/github/S1lentium/IPTools) + +[![PHP 5.4](https://img.shields.io/badge/PHP-5.4-8892BF.svg)](http://php.net) +[![PHP 7.0](https://img.shields.io/badge/PHP-7.0-8892BF.svg)](http://php.net) + +## Installation +Composer: +Run in command line: +``` +composer require s1lentium/iptools +``` +or put in composer.json: +```json +{ + "require": { + "s1lentium/iptools": "*" + } +} +``` + +## Usage + +### IP Operations +```php +$ip = new IP('192.168.1.1'); +echo $ip->version;// IPv4 +``` + +```php +$ip = new IP('fc00::'); +echo $ip->version; // IPv6 +``` + +**Parsing IP from integer, binary and hex:** +```php +echo (string)IP::parse(2130706433); // 127.0.0.1 +echo (string)IP::parse('0b11000000101010000000000100000001') // 192.168.1.1 +echo (string)IP::parse('0x0a000001'); // 10.0.0.1 +``` +or: +```php +echo (string)IP::parseLong(2130706433); // 127.0.0.1 +echo (string)IP::parseBin('11000000101010000000000100000001'); // 192.168.1.1 +echo (string)IP::parseHex('0a000001'); // 10.0.0.1 +``` + +**Converting IP to other formats:** +```php +echo IP::parse('192.168.1.1')->bin // 11000000101010000000000100000001 +echo IP::parse('10.0.0.1')->hex // 0a000001 +echo IP::parse('127.0.0.1')->long // 2130706433 +``` + +#### Other public properties: + +`maxPrefixLength` +The max number of bits in the address representation: 32 for IPv4, 128 for IPv6. + +`octetsCount` +The count of octets in IP address: 4 for IPv4, 16 for IPv6 + +`reversePointer` +The name of the reverse DNS PTR for the address: +```php +echo new IP::parse('192.0.2.5')->reversePointer // 5.2.0.192.in-addr.arpa +echo new IP::parse('2001:db8::567:89ab')->reversePointer // b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa +``` + +### Network Operations +```php +echo Network::parse('192.0.0.1 255.0.0.0')->CIDR; // 192.0.0.0/8 +echo (string)Network::parse('192.0.0.1/8')->netmask; // 255.0.0.0 +echo (string)Network::parse('192.0.0.1'); // 192.0.0.1/32 +``` + +**Exclude IP from Network:** +```php +$excluded = Network::parse('192.0.0.0/8')->exclude(new IP('192.168.1.1')); +foreach($excluded as $network) { + echo (string)$network . '<br>'; +} +``` + 192.0.0.0/9 + 192.128.0.0/11 + 192.160.0.0/13 + 192.168.0.0/24 + 192.168.1.0/32 + 192.168.1.2/31 + ... + 192.192.0.0/10 + +**Exclude Subnet from Network:** +```php +$excluded = Network::parse('192.0.0.0/8')->exclude(new Network('192.168.1.0/24')); +foreach($excluded as $network) { + echo (string)$network . '<br>'; +} +``` + 192.0.0.0/9 + 192.128.0.0/11 + 192.160.0.0/13 + 192.168.0.0/24 + 192.168.2.0/23 + ... + 192.192.0.0/10 + +**Split network into equal subnets** +```php +$networks = Network::parse('192.168.0.0/22')->moveTo('24'); +foreach ($networks as $network) { + echo (string)$network . '<br>'; +} +``` + 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 + +**Iterate over Network IP adresses:** +```php +$network = Network::parse('192.168.1.0/24'); +foreach($network as $ip) { + echo (string)$ip . '<br>'; +} +``` + 192.168.1.0 + ... + 192.168.1.255 + +**Get Network hosts adresses as Range:** +```php +$hosts = Network::parse('192.168.1.0/24')->hosts // Range(192.168.1.1, 192.168.1.254); +foreach($hosts as $ip) { + echo (string)$ip . '<br>'; +} +``` + 192.168.1.1 + ... + 192.168.1.254 + +**Count Network IP adresses** +```php +echo count(Network::parse('192.168.1.0/24')) // 254 +``` + +### Range Operations +**Define the range in different formats:** +```php +$range = new Range(new IP('192.168.1.0'), new IP('192.168.1.255')); +$range = Range::parse('192.168.1.0-192.168.1.255'); +$range = Range::parse('192.168.1.*'); +$range = Range::parse('192.168.1.0/24'); +``` +**Check if IP is within Range:** +```php +echo Range::parse('192.168.1.1-192.168.1.254')->contains(new IP('192.168.1.5')); // true +echo Range::parse('::1-::ffff')->contains(new IP('::1234')); // true +``` + +**Iterate over Range IP adresses:** +```php +$range = Range::parse('192.168.1.1-192.168.1.254'); +foreach($range as $ip) { + echo (string)$ip . '<br>'; +} +``` + 192.168.1.1 + ... + 192.168.1.254 + +**Get Networks that fit into a specified range of IP Adresses:** +```php +$networks = Range::parse('192.168.1.1-192.168.1.254')->getNetworks(); + +foreach($networks as $network) { + echo (string)$network . '<br>'; +} +``` + 192.168.1.1/32 + 192.168.1.2/31 + 192.168.1.4/30 + 192.168.1.8/29 + 192.168.1.16/28 + 192.168.1.32/27 + 192.168.1.64/26 + 192.168.1.128/26 + 192.168.1.192/27 + 192.168.1.224/28 + 192.168.1.240/29 + 192.168.1.248/30 + 192.168.1.252/31 + 192.168.1.254/32 + +**Count IP adresses in Range** +```php +echo count(Range::parse('192.168.1.1-192.168.1.254')) // 254 +``` + +# License +The library is released under the [MIT](https://opensource.org/licenses/MIT). diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/composer.json new file mode 100644 index 0000000..bed5a05 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/composer.json @@ -0,0 +1,25 @@ +{ + "name": "s1lentium/iptools", + "type": "library", + "description": "PHP Library for manipulating network addresses (IPv4 and IPv6)", + "keywords": ["IP-Tools", "network", "subnet", "cidr", "IP", "IPv4", "IPv6"], + "license": "MIT", + "authors": [{ + "name": "Safarov Alisher", + "email": "alisher.safarov@outlook.com", + "homepage": "https://github.com/S1lentium" + }], + "require": { + "php": ">=5.4.0", + "ext-bcmath": "*" + }, + "require-dev": { + "satooshi/php-coveralls": "~1.0", + "phpunit/phpunit": "~4.0" + }, + "autoload": { + "psr-4": { + "IPTools\\": "src/" + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/IP.php b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/IP.php new file mode 100644 index 0000000..0358dee --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/IP.php @@ -0,0 +1,286 @@ +<?php +namespace IPTools; + +/** + * @author Safarov Alisher <alisher.safarov@outlook.com> + * @link https://github.com/S1lentium/IPTools + */ +class IP +{ + use PropertyTrait; + + const IP_V4 = 'IPv4'; + const IP_V6 = 'IPv6'; + + const IP_V4_MAX_PREFIX_LENGTH = 32; + const IP_V6_MAX_PREFIX_LENGTH = 128; + + const IP_V4_OCTETS = 4; + const IP_V6_OCTETS = 16; + + /** + * @var string + */ + private $in_addr; + + /** + * @param string ip + * @throws \Exception + */ + public function __construct($ip) + { + if (!filter_var($ip, FILTER_VALIDATE_IP)) { + throw new \Exception("Invalid IP address format"); + } + $this->in_addr = inet_pton($ip); + } + + /** + * @return string + */ + public function __toString() + { + return inet_ntop($this->in_addr); + } + + /** + * @param string ip + * @return IP + */ + public static function parse($ip) + { + if (strpos($ip, '0x') === 0) { + $ip = substr($ip, 2); + return self::parseHex($ip); + } + + if (strpos($ip, '0b') === 0) { + $ip = substr($ip, 2); + return self::parseBin($ip); + } + + if (is_numeric($ip)) { + return self::parseLong($ip); + } + + return new self($ip); + } + + /** + * @param string $binIP + * @throws \Exception + * @return IP + */ + public static function parseBin($binIP) + { + if (!preg_match('/^([0-1]{32}|[0-1]{128})$/', $binIP)) { + throw new \Exception("Invalid binary IP address format"); + } + + $in_addr = ''; + foreach (array_map('bindec', str_split($binIP, 8)) as $char) { + $in_addr .= pack('C*', $char); + } + + return new self(inet_ntop($in_addr)); + } + + /** + * @param string $hexIP + * @throws \Exception + * @return IP + */ + public static function parseHex($hexIP) + { + if (!preg_match('/^([0-9a-fA-F]{8}|[0-9a-fA-F]{32})$/', $hexIP)) { + throw new \Exception("Invalid hexadecimal IP address format"); + } + + return new self(inet_ntop(pack('H*', $hexIP))); + } + + /** + * @param string|int $longIP + * @return IP + */ + public static function parseLong($longIP, $version=self::IP_V4) + { + if ($version === self::IP_V4) { + $ip = new self(long2ip($longIP)); + } else { + $binary = array(); + for ($i = 0; $i < self::IP_V6_OCTETS; $i++) { + $binary[] = bcmod($longIP, 256); + $longIP = bcdiv($longIP, 256, 0); + } + $ip = new self(inet_ntop(call_user_func_array('pack', array_merge(array('C*'), array_reverse($binary))))); + } + + return $ip; + } + + /** + * @param string $inAddr + * @return IP + */ + public static function parseInAddr($inAddr) + { + return new self(inet_ntop($inAddr)); + } + + /** + * @return string + */ + public function getVersion() + { + $version = ''; + + if (filter_var(inet_ntop($this->in_addr), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + $version = self::IP_V4; + } elseif (filter_var(inet_ntop($this->in_addr), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { + $version = self::IP_V6; + } + + return $version; + } + + /** + * @return int + */ + public function getMaxPrefixLength() + { + return $this->getVersion() === self::IP_V4 + ? self::IP_V4_MAX_PREFIX_LENGTH + : self::IP_V6_MAX_PREFIX_LENGTH; + } + + /** + * @return int + */ + public function getOctetsCount() + { + return $this->getVersion() === self::IP_V4 + ? self::IP_V4_OCTETS + : self::IP_V6_OCTETS; + } + + /** + * @return string + */ + public function getReversePointer() + { + if ($this->getVersion() === self::IP_V4) { + $reverseOctets = array_reverse(explode('.', $this->__toString())); + $reversePointer = implode('.', $reverseOctets) . '.in-addr.arpa'; + } else { + $unpacked = unpack('H*hex', $this->in_addr); + $reverseOctets = array_reverse(str_split($unpacked['hex'])); + $reversePointer = implode('.', $reverseOctets) . '.ip6.arpa'; + } + + return $reversePointer; + } + + /** + * @return string + */ + public function inAddr() + { + return $this->in_addr; + } + + /** + * @return string + */ + public function toBin() + { + $binary = array(); + foreach (unpack('C*', $this->in_addr) as $char) { + $binary[] = str_pad(decbin($char), 8, '0', STR_PAD_LEFT); + } + + return implode($binary); + } + + /** + * @return string + */ + public function toHex() + { + return bin2hex($this->in_addr); + } + + /** + * @return string + */ + public function toLong() + { + $long = 0; + if ($this->getVersion() === self::IP_V4) { + $long = sprintf('%u', ip2long(inet_ntop($this->in_addr))); + } else { + $octet = self::IP_V6_OCTETS - 1; + foreach ($chars = unpack('C*', $this->in_addr) as $char) { + $long = bcadd($long, bcmul($char, bcpow(256, $octet--))); + } + } + + return $long; + } + + /** + * @param int $to + * @return IP + * @throws \Exception + */ + public function next($to=1) + { + if ($to < 0) { + throw new \Exception("Number must be greater than 0"); + } + + $unpacked = unpack('C*', $this->in_addr); + + for ($i = 0; $i < $to; $i++) { + for ($byte = count($unpacked); $byte >= 0; --$byte) { + if ($unpacked[$byte] < 255) { + $unpacked[$byte]++; + break; + } + + $unpacked[$byte] = 0; + } + } + + return new self(inet_ntop(call_user_func_array('pack', array_merge(array('C*'), $unpacked)))); + } + + /** + * @param int $to + * @return IP + * @throws \Exception + */ + public function prev($to=1) + { + + if ($to < 0) { + throw new \Exception("Number must be greater than 0"); + } + + $unpacked = unpack('C*', $this->in_addr); + + for ($i = 0; $i < $to; $i++) { + for ($byte = count($unpacked); $byte >= 0; --$byte) { + if ($unpacked[$byte] === 0) { + $unpacked[$byte] = 255; + } else { + $unpacked[$byte]--; + break; + } + } + } + + return new self(inet_ntop(call_user_func_array('pack', array_merge(array('C*'), $unpacked)))); + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/Network.php b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/Network.php new file mode 100644 index 0000000..220f09e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/Network.php @@ -0,0 +1,365 @@ +<?php +namespace IPTools; + +/** + * @author Safarov Alisher <alisher.safarov@outlook.com> + * @link https://github.com/S1lentium/IPTools + */ +class Network implements \Iterator, \Countable +{ + use PropertyTrait; + + /** + * @var IP + */ + private $ip; + /** + * @var IP + */ + private $netmask; + /** + * @var int + */ + private $position = 0; + + /** + * @param IP $ip + * @param IP $netmask + */ + public function __construct(IP $ip, IP $netmask) + { + $this->setIP($ip); + $this->setNetmask($netmask); + } + + /** + * + * @return string + */ + public function __toString() + { + return $this->getCIDR(); + } + + /** + * @param string $data + * @return Network + */ + public static function parse($data) + { + if (preg_match('~^(.+?)/(\d+)$~', $data, $matches)) { + $ip = IP::parse($matches[1]); + $netmask = self::prefix2netmask((int)$matches[2], $ip->getVersion()); + } elseif (strpos($data,' ')) { + list($ip, $netmask) = explode(' ', $data, 2); + $ip = IP::parse($ip); + $netmask = IP::parse($netmask); + } else { + $ip = IP::parse($data); + $netmask = self::prefix2netmask($ip->getMaxPrefixLength(), $ip->getVersion()); + } + + return new self($ip, $netmask); + } + + /** + * @param int $prefixLength + * @param string $version + * @return IP + * @throws \Exception + */ + public static function prefix2netmask($prefixLength, $version) + { + if (!in_array($version, array(IP::IP_V4, IP::IP_V6))) { + throw new \Exception("Wrong IP version"); + } + + $maxPrefixLength = $version === IP::IP_V4 + ? IP::IP_V4_MAX_PREFIX_LENGTH + : IP::IP_V6_MAX_PREFIX_LENGTH; + + if (!is_numeric($prefixLength) + || !($prefixLength >= 0 && $prefixLength <= $maxPrefixLength) + ) { + throw new \Exception('Invalid prefix length'); + } + + $binIP = str_pad(str_pad('', (int)$prefixLength, '1'), $maxPrefixLength, '0'); + + return IP::parseBin($binIP); + } + + /** + * @param IP ip + * @return int + */ + public static function netmask2prefix(IP $ip) + { + return strlen(rtrim($ip->toBin(), 0)); + } + + /** + * @param IP ip + * @throws \Exception + */ + public function setIP(IP $ip) + { + if (isset($this->netmask) && $this->netmask->getVersion() !== $ip->getVersion()) { + throw new \Exception('IP version is not same as Netmask version'); + } + + $this->ip = $ip; + } + + /** + * @param IP ip + * @throws \Exception + */ + public function setNetmask(IP $ip) + { + if (!preg_match('/^1*0*$/',$ip->toBin())) { + throw new \Exception('Invalid Netmask address format'); + } + + if (isset($this->ip) && $ip->getVersion() !== $this->ip->getVersion()) { + throw new \Exception('Netmask version is not same as IP version'); + } + + $this->netmask = $ip; + } + + /** + * @param int $prefixLength + */ + public function setPrefixLength($prefixLength) + { + $this->setNetmask(self::prefix2netmask((int)$prefixLength, $this->ip->getVersion())); + } + + /** + * @return IP + */ + public function getIP() + { + return $this->ip; + } + + /** + * @return IP + */ + public function getNetmask() + { + return $this->netmask; + } + + /** + * @return IP + */ + public function getNetwork() + { + return new IP(inet_ntop($this->getIP()->inAddr() & $this->getNetmask()->inAddr())); + } + + /** + * @return int + */ + public function getPrefixLength() + { + return self::netmask2prefix($this->getNetmask()); + } + + /** + * @return string + */ + public function getCIDR() + { + return sprintf('%s/%s', $this->getNetwork(), $this->getPrefixLength()); + } + + /** + * @return IP + */ + public function getWildcard() + { + return new IP(inet_ntop(~$this->getNetmask()->inAddr())); + } + + /** + * @return IP + */ + public function getBroadcast() + { + return new IP(inet_ntop($this->getNetwork()->inAddr() | ~$this->getNetmask()->inAddr())); + } + + /** + * @return IP + */ + public function getFirstIP() + { + return $this->getNetwork(); + } + + /** + * @return IP + */ + public function getLastIP() + { + return $this->getBroadcast(); + } + + /** + * @return int|string + */ + public function getBlockSize() + { + $maxPrefixLength = $this->ip->getMaxPrefixLength(); + $prefixLength = $this->getPrefixLength(); + + if ($this->ip->getVersion() === IP::IP_V6) { + return bcpow('2', (string)($maxPrefixLength - $prefixLength)); + } + + return pow(2, $maxPrefixLength - $prefixLength); + } + + /** + * @return Range + */ + public function getHosts() + { + $firstHost = $this->getNetwork(); + $lastHost = $this->getBroadcast(); + + if ($this->ip->getVersion() === IP::IP_V4) { + if ($this->getBlockSize() > 2) { + $firstHost = IP::parseBin(substr($firstHost->toBin(), 0, $firstHost->getMaxPrefixLength() - 1) . '1'); + $lastHost = IP::parseBin(substr($lastHost->toBin(), 0, $lastHost->getMaxPrefixLength() - 1) . '0'); + } + } + + return new Range($firstHost, $lastHost); + } + + /** + * @param IP|Network $exclude + * @return Network[] + * @throws \Exception + */ + public function exclude($exclude) + { + $exclude = self::parse($exclude); + + if (strcmp($exclude->getFirstIP()->inAddr() , $this->getLastIP()->inAddr()) > 0 + || strcmp($exclude->getLastIP()->inAddr() , $this->getFirstIP()->inAddr()) < 0 + ) { + throw new \Exception('Exclude subnet not within target network'); + } + + $networks = array(); + + $newPrefixLength = $this->getPrefixLength() + 1; + if ($newPrefixLength > $this->ip->getMaxPrefixLength()) { + return $networks; + } + + $lower = clone $this; + $lower->setPrefixLength($newPrefixLength); + + $upper = clone $lower; + $upper->setIP($lower->getLastIP()->next()); + + while ($newPrefixLength <= $exclude->getPrefixLength()) { + $range = new Range($lower->getFirstIP(), $lower->getLastIP()); + if ($range->contains($exclude)) { + $matched = $lower; + $unmatched = $upper; + } else { + $matched = $upper; + $unmatched = $lower; + } + + $networks[] = clone $unmatched; + + if (++$newPrefixLength > $this->getNetwork()->getMaxPrefixLength()) break; + + $matched->setPrefixLength($newPrefixLength); + $unmatched->setPrefixLength($newPrefixLength); + $unmatched->setIP($matched->getLastIP()->next()); + } + + sort($networks); + + return $networks; + } + + /** + * @param int $prefixLength + * @return Network[] + * @throws \Exception + */ + public function moveTo($prefixLength) + { + $maxPrefixLength = $this->ip->getMaxPrefixLength(); + + if ($prefixLength <= $this->getPrefixLength() || $prefixLength > $maxPrefixLength) { + throw new \Exception('Invalid prefix length '); + } + + $netmask = self::prefix2netmask($prefixLength, $this->ip->getVersion()); + $networks = array(); + + $subnet = clone $this; + $subnet->setPrefixLength($prefixLength); + + while ($subnet->ip->inAddr() <= $this->getLastIP()->inAddr()) { + $networks[] = $subnet; + $subnet = new self($subnet->getLastIP()->next(), $netmask); + } + + return $networks; + } + + /** + * @return IP + */ + public function current() + { + return $this->getFirstIP()->next($this->position); + } + + /** + * @return int + */ + public function key() + { + return $this->position; + } + + public function next() + { + ++$this->position; + } + + public function rewind() + { + $this->position = 0; + } + + /** + * @return bool + */ + public function valid() + { + return strcmp($this->getFirstIP()->next($this->position)->inAddr(), $this->getLastIP()->inAddr()) <= 0; + } + + /** + * @return int + */ + public function count() + { + return (integer)$this->getBlockSize(); + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/PropertyTrait.php b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/PropertyTrait.php new file mode 100644 index 0000000..5763644 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/PropertyTrait.php @@ -0,0 +1,45 @@ +<?php +namespace IPTools; + +/** + * @author Safarov Alisher <alisher.safarov@outlook.com> + * @link https://github.com/S1lentium/IPTools + */ +trait PropertyTrait +{ + /** + * @param string $name + * @return mixed + */ + public function __get($name) + { + if(method_exists($this, $name)) { + return $this->$name(); + } + + foreach (array('get', 'to') as $prefix) { + $method = $prefix . ucfirst($name); + if(method_exists($this, $method)) { + return $this->$method(); + } + } + + trigger_error('Undefined property'); + return null; + } + + /** + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + $method = 'set'. ucfirst($name); + if (!method_exists($this, $method)) { + trigger_error('Undefined property'); + return; + } + $this->$method($value); + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/Range.php b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/Range.php new file mode 100644 index 0000000..08919fa --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/src/Range.php @@ -0,0 +1,228 @@ +<?php +namespace IPTools; + +/** + * @author Safarov Alisher <alisher.safarov@outlook.com> + * @link https://github.com/S1lentium/IPTools + */ +class Range implements \Iterator, \Countable +{ + use PropertyTrait; + + /** + * @var IP + */ + private $firstIP; + /** + * @var IP + */ + private $lastIP; + /** + * @var int + */ + private $position = 0; + + /** + * @param IP $firstIP + * @param IP $lastIP + * @throws \Exception + */ + public function __construct(IP $firstIP, IP $lastIP) + { + $this->setFirstIP($firstIP); + $this->setLastIP($lastIP); + } + + /** + * @param string $data + * @return Range + */ + public static function parse($data) + { + if (strpos($data,'/') || strpos($data,' ')) { + $network = Network::parse($data); + $firstIP = $network->getFirstIP(); + $lastIP = $network->getLastIP(); + } elseif (strpos($data, '*') !== false) { + $firstIP = IP::parse(str_replace('*', '0', $data)); + $lastIP = IP::parse(str_replace('*', '255', $data)); + } elseif (strpos($data, '-')) { + list($first, $last) = explode('-', $data, 2); + $firstIP = IP::parse($first); + $lastIP = IP::parse($last); + } else { + $firstIP = IP::parse($data); + $lastIP = clone $firstIP; + } + + return new self($firstIP, $lastIP); + } + + /** + * @param IP|Network|Range $find + * @return bool + * @throws \Exception + */ + public function contains($find) + { + if ($find instanceof IP) { + $within = (strcmp($find->inAddr(), $this->firstIP->inAddr()) >= 0) + && (strcmp($find->inAddr(), $this->lastIP->inAddr()) <= 0); + } elseif ($find instanceof Range || $find instanceof Network) { + /** + * @var Network|Range $find + */ + $within = (strcmp($find->getFirstIP()->inAddr(), $this->firstIP->inAddr()) >= 0) + && (strcmp($find->getLastIP()->inAddr(), $this->lastIP->inAddr()) <= 0); + } else { + throw new \Exception('Invalid type'); + } + + return $within; + } + + /** + * @param IP $ip + * @throws \Exception + */ + public function setFirstIP(IP $ip) + { + if ($this->lastIP && strcmp($ip->inAddr(), $this->lastIP->inAddr()) > 0) { + throw new \Exception('First IP is grater than second'); + } + + $this->firstIP = $ip; + } + + /** + * @param IP $ip + * @throws \Exception + */ + public function setLastIP(IP $ip) + { + if ($this->firstIP && strcmp($ip->inAddr(), $this->firstIP->inAddr()) < 0) { + throw new \Exception('Last IP is less than first'); + } + + $this->lastIP = $ip; + } + + /** + * @return IP + */ + public function getFirstIP() + { + return $this->firstIP; + } + + /** + * @return IP + */ + public function getLastIP() + { + return $this->lastIP; + } + + /** + * @return Network[] + */ + public function getNetworks() + { + $span = $this->getSpanNetwork(); + + $networks = array(); + + if ($span->getFirstIP()->inAddr() === $this->firstIP->inAddr() + && $span->getLastIP()->inAddr() === $this->lastIP->inAddr() + ) { + $networks = array($span); + } else { + if ($span->getFirstIP()->inAddr() !== $this->firstIP->inAddr()) { + $excluded = $span->exclude($this->firstIP->prev()); + foreach ($excluded as $network) { + if (strcmp($network->getFirstIP()->inAddr(), $this->firstIP->inAddr()) >= 0) { + $networks[] = $network; + } + } + } + + if ($span->getLastIP()->inAddr() !== $this->lastIP->inAddr()) { + if (!$networks) { + $excluded = $span->exclude($this->lastIP->next()); + } else { + $excluded = array_pop($networks); + $excluded = $excluded->exclude($this->lastIP->next()); + } + + foreach ($excluded as $network) { + $networks[] = $network; + if ($network->getLastIP()->inAddr() === $this->lastIP->inAddr()) { + break; + } + } + } + + } + + return $networks; + } + + /** + * @return Network + */ + public function getSpanNetwork() + { + $xorIP = IP::parseInAddr($this->getFirstIP()->inAddr() ^ $this->getLastIP()->inAddr()); + + preg_match('/^(0*)/', $xorIP->toBin(), $match); + + $prefixLength = strlen($match[1]); + + $ip = IP::parseBin(str_pad(substr($this->getFirstIP()->toBin(), 0, $prefixLength), $xorIP->getMaxPrefixLength(), '0')); + + return new Network($ip, Network::prefix2netmask($prefixLength, $ip->getVersion())); + } + + /** + * @return IP + */ + public function current() + { + return $this->firstIP->next($this->position); + } + + /** + * @return int + */ + public function key() + { + return $this->position; + } + + public function next() + { + ++$this->position; + } + + public function rewind() + { + $this->position = 0; + } + + /** + * @return bool + */ + public function valid() + { + return strcmp($this->firstIP->next($this->position)->inAddr(), $this->lastIP->inAddr()) <= 0; + } + + /** + * @return int + */ + public function count() + { + return (integer)bcadd(bcsub($this->lastIP->toLong(), $this->firstIP->toLong()), 1); + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/IPTest.php b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/IPTest.php new file mode 100644 index 0000000..3557794 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/IPTest.php @@ -0,0 +1,255 @@ +<?php + +use IPTools\IP; + +class IPTest extends \PHPUnit_Framework_TestCase +{ + public function testConstructor() + { + $ipv4String = '127.0.0.1'; + $ipv6String = '2001::'; + + $ipv4 = new IP($ipv4String); + $ipv6 = new IP($ipv6String); + + $this->assertEquals(inet_pton($ipv4String), $ipv4->inAddr()); + $this->assertEquals(IP::IP_V4, $ipv4->getVersion()); + $this->assertEquals(IP::IP_V4_MAX_PREFIX_LENGTH, $ipv4->getMaxPrefixLength()); + $this->assertEquals(IP::IP_V4_OCTETS, $ipv4->getOctetsCount()); + + $this->assertEquals(inet_pton($ipv6String), $ipv6->inAddr()); + $this->assertEquals(IP::IP_V6, $ipv6->getVersion()); + $this->assertEquals(IP::IP_V6_MAX_PREFIX_LENGTH, $ipv6->getMaxPrefixLength()); + $this->assertEquals(IP::IP_V6_OCTETS, $ipv6->getOctetsCount()); + } + + /** + * @dataProvider getTestContructorExceptionData + * @expectedException Exception + * @expectedExceptionMessage Invalid IP address format + */ + public function testConstructorException($string) + { + $ip = new IP($string); + } + + public function testProperties() + { + $ip = new IP('127.0.0.1'); + + $this->assertNotEmpty($ip->maxPrefixLength); + $this->assertNotEmpty($ip->octetsCount); + $this->assertNotEmpty($ip->reversePointer); + + $this->assertNotEmpty($ip->bin); + $this->assertNotEmpty($ip->long); + $this->assertNotEmpty($ip->hex); + } + + /** + * @dataProvider getToStringData + */ + public function testToString($actual, $expected) + { + $ip = new IP($actual); + $this->assertEquals($expected, (string)$ip); + + } + + /** + * @dataProvider getTestParseData + */ + public function testParse($ipString, $expected) + { + $ip = IP::parse($ipString); + $this->assertEquals($expected, (string) $ip); + } + + /** + * @dataProvider getParseBinData + */ + public function testParseBin($bin, $expectedString) + { + $ip = IP::parseBin($bin); + + $this->assertEquals($expectedString, (string) $ip); + $this->assertEquals($bin, $ip->toBin()); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Invalid binary IP address format + */ + public function testParseBinException() + { + IP::parseBin('192.168.1.1'); + } + + public function testParseLong() + { + $ipv4long = '2130706433'; + $ipv4 = IP::parseLong($ipv4long); + + $ipv6Long = '340277174624079928635746076935438991360'; + $ipv6 = IP::parseLong($ipv6Long, IP::IP_V6); + + $this->assertEquals('127.0.0.1', (string)$ipv4); + $this->assertEquals($ipv4long, $ipv4->toLong()); + + $this->assertEquals('ffff::', (string)$ipv6); + $this->assertEquals($ipv6Long, $ipv6->toLong()); + } + + public function testParseHex() + { + $hex = '7f000001'; + $ip = IP::parseHex($hex); + + $this->assertEquals('127.0.0.1', (string)$ip); + $this->assertEquals($hex, $ip->toHex()); + + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Invalid hexadecimal IP address format + */ + public function testParseHexException() + { + IP::parseHex('192.168.1.1'); + } + + public function testParseInAddr() + { + $inAddr = inet_pton('127.0.0.1'); + $ip = IP::parseInAddr($inAddr); + + $this->assertEquals($inAddr, $ip->inAddr()); + + $inAddr = inet_pton('2001::8000:0:0:0'); + $ip = IP::parseInAddr($inAddr); + + $this->assertEquals($inAddr, $ip->inAddr()); + } + + /** + * @dataProvider getTestNextData + */ + public function testNext($ip, $step, $expected) + { + $object = new IP($ip); + $next = $object->next($step); + + $this->assertEquals($expected, (string) $next); + } + + /** + * @dataProvider getTestPrevData + */ + public function testPrev($ip, $step, $expected) + { + $object = new IP($ip); + $prev = $object->prev($step); + + $this->assertEquals($expected, (string) $prev); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Number must be greater than 0 + */ + public function testPrevException() + { + $object = new IP('192.168.1.1'); + $object->prev(-1); + } + + /** + * @dataProvider getReversePointerData + */ + public function testReversePointer($ip, $expected) + { + $object = new IP($ip); + $reversePointer = $object->getReversePointer(); + $this->assertEquals($expected, $reversePointer); + } + + public function getTestContructorExceptionData() + { + return array( + array('256.0.0.1'), + array('127.-1.0.1'), + array(123.45), + array(-123.45), + array('cake'), + array('12345'), + array('-12345'), + array('0000:0000:0000:ffff:0127:0000:0000:0001:0000'), + ); + } + + public function getToStringData() + { + return array( + array('127.0.0.1', '127.0.0.1'), + array('2001::', '2001::'), + array('2001:0000:0000:0000:0000:0000:0000:0000', '2001::'), + array('2001:0000:0000:0000:8000:0000:0000:0000', '2001::8000:0:0:0') + ); + } + + public function getTestParseData() + { + return array( + array(2130706433, '127.0.0.1'), //long + array('0b01111111000000000000000000000001', '127.0.0.1'), //bin + array('0x7f000001', '127.0.0.1'), //hex, + array('0x20010000000000008000000000000000', '2001::8000:0:0:0'), //hex + array('127.0.0.1', '127.0.0.1'), + array('2001::', '2001::') + ); + } + + public function getParseBinData() + { + return array( + array( + '00100000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + '2001::' + ), + array('01111111000000000000000000000001', '127.0.0.1') + ); + } + + public function getTestNextData() + { + return array( + array('192.168.0.1', 1, '192.168.0.2'), + array('192.168.0.1', 254, '192.168.0.255'), + array('192.168.0.1', 255, '192.168.1.0'), + array('2001::', 1, '2001::1'), + array('2001::', 65535, '2001::ffff'), + array('2001::', 65536, '2001::1:0') + ); + } + + public function getTestPrevData() + { + return array( + array('192.168.1.1', 1, '192.168.1.0'), + array('192.168.1.0', 1, '192.168.0.255'), + array('192.168.1.1', 258, '192.167.255.255'), + array('2001::1', 1, '2001::'), + array('2001::1:0', 1, '2001::ffff'), + array('2001::1:0', 65536, '2001::'), + ); + } + + public function getReversePointerData() + { + return array( + array('192.0.2.5', '5.2.0.192.in-addr.arpa'), + array('2001:db8::567:89ab', 'b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa'), + ); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/NetworkTest.php b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/NetworkTest.php new file mode 100644 index 0000000..0e90b76 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/NetworkTest.php @@ -0,0 +1,305 @@ +<?php + +use IPTools\Network; +use IPTools\IP; + +class NetworkTest extends \PHPUnit_Framework_TestCase +{ + public function testConstructor() + { + $ipv4 = new IP('127.0.0.1'); + $ipv4Netmask = new IP('255.255.255.0'); + + $ipv6 = new IP('2001::'); + $ipv6Netmask = new IP('ffff:ffff:ffff:ffff:ffff:ffff:ffff::'); + + $ipv4Network = new Network($ipv4, $ipv4Netmask); + $ipv6Network = new Network($ipv6, $ipv6Netmask); + + $this->assertEquals('127.0.0.0/24', (string)$ipv4Network); + $this->assertEquals('2001::/112', (string)$ipv6Network); + } + + public function testProperties() + { + $network = Network::parse('127.0.0.1/24'); + + $network->ip = new IP('192.0.0.2'); + + $this->assertEquals('192.0.0.2', $network->ip); + $this->assertEquals('192.0.0.0/24', (string)$network); + $this->assertEquals('0.0.0.255', (string)$network->wildcard); + $this->assertEquals('192.0.0.0', (string)$network->firstIP); + $this->assertEquals('192.0.0.255', (string)$network->lastIP); + } + + /** + * @dataProvider getTestParseData + */ + public function testParse($data, $expected) + { + $this->assertEquals($expected, (string)Network::parse($data)); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Invalid IP address format + */ + public function testParseWrongNetwork() + { + Network::parse('10.0.0.0/24 abc'); + } + + /** + * @dataProvider getPrefixData + */ + public function testPrefix2Mask($prefix, $version, $mask) + { + $this->assertEquals($mask, Network::prefix2netmask($prefix, $version)); + } + + /** + * @expectedException Exception + * @expectedExceptionMessage Wrong IP version + */ + public function testPrefix2MaskWrongIPVersion() + { + Network::prefix2netmask('128', 'ip_version'); + } + + /** + * @dataProvider getInvalidPrefixData + * @expectedException Exception + * @expectedExceptionMessage Invalid prefix length + */ + public function testPrefix2MaskInvalidPrefix($prefix, $version) + { + Network::prefix2netmask($prefix, $version); + } + + /** + * @dataProvider getHostsData + */ + public function testHosts($data, $expected) + { + foreach(Network::parse($data)->getHosts as $ip) { + $result[] = (string)$ip; + } + + $this->assertEquals($expected, $result); + } + + /** + * @dataProvider getExcludeData + */ + public function testExclude($data, $exclude, $expected) + { + $result = array(); + + foreach(Network::parse($data)->exclude($exclude) as $network) { + $result[] = (string)$network; + } + + $this->assertEquals($expected, $result); + } + + /** + * @dataProvider getExcludeExceptionData + * @expectedException Exception + * @expectedExceptionMessage Exclude subnet not within target network + */ + public function testExcludeException($data, $exclude) + { + Network::parse($data)->exclude($exclude); + } + + /** + * @dataProvider getMoveToData + */ + public function testMoveTo($network, $prefixLength, $expected) + { + $result = array(); + + foreach (Network::parse($network)->moveTo($prefixLength) as $network) { + $result[] = (string)$network; + } + + $this->assertEquals($expected, $result); + } + + /** + * @dataProvider getMoveToExceptionData + * @expectedException Exception + * @expectedExceptionMessage Invalid prefix length + */ + public function testMoveToException($network, $prefixLength) + { + Network::parse($network)->moveTo($prefixLength); + } + + /** + * @dataProvider getTestIterationData + */ + public function testNetworkIteration($data, $expected) + { + foreach (Network::parse($data) as $key => $ip) { + $result[] = (string)$ip; + } + + $this->assertEquals($expected, $result); + } + + /** + * @dataProvider getTestCountData + */ + public function testCount($data, $expected) + { + $this->assertEquals($expected, count(Network::parse($data))); + } + + public function getTestParseData() + { + return array( + array('192.168.0.54/24', '192.168.0.0/24'), + array('2001::2001:2001/32', '2001::/32'), + array('127.168.0.1 255.255.255.255', '127.168.0.1/32'), + array('1234::1234', '1234::1234/128'), + ); + } + + public function getPrefixData() + { + return array( + array('24', IP::IP_V4, IP::parse('255.255.255.0')), + array('32', IP::IP_V4, IP::parse('255.255.255.255')), + array('64', IP::IP_V6, IP::parse('ffff:ffff:ffff:ffff::')), + array('128', IP::IP_V6, IP::parse('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff')) + ); + } + + public function getInvalidPrefixData() + { + return array( + array('-1', IP::IP_V4), + array('33', IP::IP_V4), + array('prefix', IP::IP_V4), + array('-1', IP::IP_V6), + array('129', IP::IP_V6), + ); + } + + public function getHostsData() + { + return array( + array('192.0.2.0/29', + array( + '192.0.2.1', + '192.0.2.2', + '192.0.2.3', + '192.0.2.4', + '192.0.2.5', + '192.0.2.6', + ) + ), + ); + } + + public function getExcludeData() + { + return array( + array('192.0.2.0/28', '192.0.2.1/32', + array( + '192.0.2.0/32', + '192.0.2.2/31', + '192.0.2.4/30', + '192.0.2.8/29', + ) + ), + array('192.0.2.2/32', '192.0.2.2/32', array()), + ); + } + + public function getExcludeExceptionData() + { + return array( + array('192.0.2.0/28', '192.0.3.0/24'), + array('192.0.2.2/32', '192.0.2.3/32'), + ); + } + + public function getMoveToData() + { + return array( + array('192.168.0.0/22', '24', + array( + '192.168.0.0/24', + '192.168.1.0/24', + '192.168.2.0/24', + '192.168.3.0/24' + ) + ), + array('192.168.2.0/24', '25', + array( + '192.168.2.0/25', + '192.168.2.128/25' + ) + ), + array('192.168.2.0/30', '32', + array( + '192.168.2.0/32', + '192.168.2.1/32', + '192.168.2.2/32', + '192.168.2.3/32' + ) + ), + ); + } + + public function getMoveToExceptionData() + { + return array( + array('192.168.0.0/22', '22'), + array('192.168.0.0/22', '21'), + array('192.168.0.0/22', '33'), + array('192.168.0.0/22', 'prefixLength') + ); + } + + public function getTestIterationData() + { + return array( + array('192.168.2.0/29', + array( + '192.168.2.0', + '192.168.2.1', + '192.168.2.2', + '192.168.2.3', + '192.168.2.4', + '192.168.2.5', + '192.168.2.6', + '192.168.2.7', + ) + ), + array('2001:db8::/125', + array( + '2001:db8::', + '2001:db8::1', + '2001:db8::2', + '2001:db8::3', + '2001:db8::4', + '2001:db8::5', + '2001:db8::6', + '2001:db8::7', + ) + ), + ); + } + + public function getTestCountData() + { + return array( + array('127.0.0.0/31', 2), + array('2001:db8::/120', 256), + ); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/RangeTest.php b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/RangeTest.php new file mode 100644 index 0000000..4f81f8a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/RangeTest.php @@ -0,0 +1,146 @@ +<?php + +use IPTools\Range; +use IPTools\Network; +use IPTools\IP; + +class RangeTest extends \PHPUnit_Framework_TestCase +{ + /** + * @dataProvider getTestParseData + */ + public function testParse($data, $expected) + { + $range = Range::parse($data); + + $this->assertEquals($expected[0], $range->firstIP); + $this->assertEquals($expected[1], $range->lastIP); + } + + /** + * @dataProvider getTestNetworksData + */ + public function testGetNetworks($data, $expected) + { + $result = array(); + + foreach (Range::parse($data)->getNetworks() as $network) { + $result[] = (string)$network; + } + + $this->assertEquals($expected, $result); + } + + /** + * @dataProvider getTestContainsData + */ + public function testContains($data, $find, $expected) + { + $this->assertEquals($expected, Range::parse($data)->contains(new IP($find))); + } + + /** + * @dataProvider getTestIterationData + */ + public function testRangeIteration($data, $expected) + { + foreach (Range::parse($data) as $key => $ip) { + $result[] = (string)$ip; + } + + $this->assertEquals($expected, $result); + } + + /** + * @dataProvider getTestCountData + */ + public function testCount($data, $expected) + { + $this->assertEquals($expected, count(Range::parse($data))); + } + + public function getTestParseData() + { + return array( + array('127.0.0.1-127.255.255.255', array('127.0.0.1', '127.255.255.255')), + array('127.0.0.1/24', array('127.0.0.0', '127.0.0.255')), + array('127.*.0.0', array('127.0.0.0', '127.255.0.0')), + array('127.255.255.0', array('127.255.255.0', '127.255.255.0')), + ); + } + + public function getTestNetworksData() + { + return array( + array('192.168.1.*', array('192.168.1.0/24')), + array('192.168.1.208-192.168.1.255', array( + '192.168.1.208/28', + '192.168.1.224/27' + )), + array('192.168.1.0-192.168.1.191', array( + '192.168.1.0/25', + '192.168.1.128/26' + )), + array('192.168.1.125-192.168.1.126', array( + '192.168.1.125/32', + '192.168.1.126/32', + )), + ); + } + + public function getTestContainsData() + { + return array( + array('192.168.*.*', '192.168.245.15', true), + array('192.168.*.*', '192.169.255.255', false), + + /** + * 10.10.45.48 --> 00001010 00001010 00101101 00110000 + * the last 0000 leads error + */ + array('10.10.45.48/28', '10.10.45.58', true), + + array('2001:db8::/64', '2001:db8::ffff', true), + array('2001:db8::/64', '2001:db8:ffff::', false), + ); + } + + public function getTestIterationData() + { + return array( + array('192.168.2.0-192.168.2.7', + array( + '192.168.2.0', + '192.168.2.1', + '192.168.2.2', + '192.168.2.3', + '192.168.2.4', + '192.168.2.5', + '192.168.2.6', + '192.168.2.7', + ) + ), + array('2001:db8::/125', + array( + '2001:db8::', + '2001:db8::1', + '2001:db8::2', + '2001:db8::3', + '2001:db8::4', + '2001:db8::5', + '2001:db8::6', + '2001:db8::7', + ) + ), + ); + } + + public function getTestCountData() + { + return array( + array('127.0.0.0/31', 2), + array('2001:db8::/120', 256), + ); + } + +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/bootstrap.php b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/bootstrap.php new file mode 100644 index 0000000..5a9f5ff --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/s1lentium/iptools/tests/bootstrap.php @@ -0,0 +1,10 @@ +<?php + +if (!class_exists('\PHPUnit_Framework_TestCase') && class_exists('\PHPUnit\Framework\TestCase')) { + class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase'); +} + +require __DIR__ . '/../src/PropertyTrait.php'; +require __DIR__ . '/../src/IP.php'; +require __DIR__ . '/../src/Network.php'; +require __DIR__ . '/../src/Range.php'; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.coveralls.yml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.coveralls.yml new file mode 100644 index 0000000..64139da --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.coveralls.yml @@ -0,0 +1,7 @@ +service_name: travis-ci + +coverage_clover: + - runner.xml + - phpunit.xml + +json_path: coveralls.json \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.gitignore b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.gitignore new file mode 100644 index 0000000..a4ca93a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.gitignore @@ -0,0 +1,12 @@ +runner.log +runner.xml +composer.lock +package-lock.json +vendor/* +package.json +Gruntfile.js +node_modules/* +humbug* +build/* +.vscode +.DS_Store diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.travis.yml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.travis.yml new file mode 100644 index 0000000..6a198e3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/.travis.yml @@ -0,0 +1,39 @@ +sudo: false +dist: trusty +language: php + +php: + - 5.4 + - 5.5 + - 5.6 + - 7.0 + - 7.1 + - 7.2 + +before_script: + - composer self-update + - composer update --prefer-source + + # Install suggested cache/array-adapter on supported versions of PHP + - composer require --dev cache/array-adapter || true + + # Set memory limit to 2 MB + - echo "memory_limit=2048M" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini + + # Disable X-debug on all but PHP 5.6 + - if [ "$TRAVIS_PHP_VERSION" != "5.6" ]; then phpenv config-rm xdebug.ini; fi + +script: + - vendor/bin/phpcs --standard=PSR1,PSR2 -n src + + # Run tests (all except PHP 5.6) + - if [ "$TRAVIS_PHP_VERSION" != "5.6" ]; then php bin/runner.php --show check; fi + - if [ "$TRAVIS_PHP_VERSION" != "5.6" ]; then vendor/bin/phpunit; fi + + # Run tests with coverage enabled (only PHP 5.6) + - if [ "$TRAVIS_PHP_VERSION" = "5.6" ]; then php bin/runner.php --coverage --show check; fi + - if [ "$TRAVIS_PHP_VERSION" = "5.6" ]; then vendor/bin/phpunit --coverage-clover phpunit.xml; fi + +after_script: + # Upload coverage to Coveralls.io + - if [ "$TRAVIS_PHP_VERSION" = "5.6" ]; then travis_retry php vendor/bin/coveralls -v; fi diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/CONTRIBUTING.md b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/CONTRIBUTING.md new file mode 100644 index 0000000..336e963 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/CONTRIBUTING.md @@ -0,0 +1,125 @@ + +# Pull requests + +This project does continuous integration with [Travis](https://travis-ci.org/WhichBrowser/Parser-PHP/) and [Coveralls](https://coveralls.io/github/WhichBrowser/Parser-PHP). This means that every pull request must have the proper PSR-2 code standards and working unit tests. Please make sure your pull request passes all tests before submitting it. + +To test your coding style run: + +``` +vendor/bin/phpcs --standard=PSR1,PSR2 src/ +``` + +Then try the PHPunit unit tests: + +``` +vendor/bin/phpunit +``` + +And finally to test the WhichBrowser analyser: + +``` +php bin/runner.php check --show +``` + +# Unit tests + +This project uses both unit tests for the public API and it's own testing tool for testing if the analyser properly works. + +If you contribute to the public API, please add revelant tests. The API currently has 100% code coverage and any PR should maintain this number. The tests can be found in the `tests/unit/Model/` directory and are checked using PHPunit. This should be fairly simple. + +To run the unit tests: + +``` +vendor/bin/phpunit +``` + +The data for the analyser can be found in the `tests/data/` directories. These are Yaml files containing an entry for every single test that is executed. Currently these directories contain 5000 different tests resulting in almost 100% code coverage. Every entries contains a number of keys, which represent the different parameters of the Parser object and an extra key which contains the result. If you add a new test, you should not provide the result yourself, but instead just provide the parameters and let the testing framework generate the result. + +A very simple test entry looks like this: + +``` +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)' + +``` + +Once the results if generated by it will look like this: + +``` +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)' + result: { browser: { name: 'Internet Explorer', version: '9.0' }, engine: { name: Trident, version: '5.0' }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox 360' } } +``` + +To run the tests: + +``` +php bin/runner.php check --show +``` + +And to rebase the tests to generate the new results: + +``` +php bin/runner.php rebase +``` + +# Data files + +A large part of the device model information is maintained in the data files. You can find these files in the `data/` directory. The files are little more than just arrays with the model number as key and another array a the value for each entry. The value contains a manufacturer, a model name and optionally the device type. If no device type is provided we assume it is a mobile phone. The device types that you are allowed to use are defined in the `src/Contstants/DeviceType.php` file. + +``` +DeviceModels::$ANDROID_MODELS = [ + 'LG-L30L' => [ 'LG', 'F70' ] +]; +``` + +In the example above, the model number is `LG-L30L`, the manufacturer is LG and the model name is F70. And because no device type is provided, it is a mobile phone. + +Things can get a bit more complicated, because the key of the array can also be a regular expression. To mark this, the final character of the key must be an exclamation mark. + +``` +DeviceModels::$ANDROID_MODELS = [ + 'LG-H8(10|11|12|15|18|19)!' => [ 'LG', 'G4' ] +]; +``` + +Because the G4 uses multiple model numbers, like LG-H810, LG-H811, LG-H812 and so on, we do not want to include a seperate line for every single permutation. So we match all different model numbers with just a single regular expression. + +The actual regular expression that is executed will look like this: `/^LG-H8(10|11|12|15|18|19)/iu`. + +As an optimalisation it is also possible to use subsets. One regular expression will be tested to see if the whole subset must be skipped or looked at. A subset is marked by two exclamation marks. + +``` +DeviceModels::$ANDROID_MODELS = [ + 'LG-F[0-9]{3,3}!!' => [ + 'LG-F320!' => [ 'LG', 'G2' ], + 'LG-F340!' => [ 'LG', 'G Flex' ] + ] +]; +``` + +And finally, it is also possible to use backreferences to match multiple models at the same time: + +``` +DeviceModels::$ANDROID_MODELS = [ + 'Aspire ([0-9]{4,4}[A-Z]?)!' => [ 'Acer', 'Aspire $1', DeviceType::DESKTOP ] +]; +``` + +This will both match the "Aspire 5750G", the "Aspire 4738G" and many more similar models. + + +On more thing you need to be aware of, all of the keys are not tested against the raw value extracted from the useragent string, but instead is pre-processed. The code for this can be found in the `DeviceModels::cleanup()` function in the `src/Data/DeviceModels.php` file. + +Indices +------- + +In order to reduce the time needed for model lookups, WhichBrowser uses an index. These files are located in the `data/indices/` directory and are automatically generated by the `update-indices.php` script. This script will evaluate every single regular expression and will try to create a key for every single possible value that matches the regular expression. If the regular expression is too complicated or has too many possible values it will place it in a secondary list of *difficult* regular expressions. + +After making a change to the data files you **need** to regenerate the indices, otherwise the new device model will not be picked up by WhichBrowser. + +To update the indices of all relevant data files: + +``` +php bin/update-indices.php --all +``` diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/LICENSE b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/LICENSE new file mode 100644 index 0000000..4663cce --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2010-2017 Niels Leenheer + +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. diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/README.md b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/README.md new file mode 100644 index 0000000..13606ed --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/README.md @@ -0,0 +1,510 @@ +<img src="https://api.whichbrowser.net/whichbrowser.svg" width="400"> + +This is an extremely complicated and almost completely useless browser sniffing library. Useless because you shouldn't use browser sniffing. So stop right now and go read something about feature detecting instead. I'm serious. Go away. You'll thank me later. + + +WhichBrowser/Parser-PHP +======================= + +The PHP version of WhichBrowser for use on a server. Fully compatible with PHP 5.4 or higher, including PHP 7 and HHVM. + +[![Build Status](https://travis-ci.org/WhichBrowser/Parser-PHP.svg?branch=master)](https://travis-ci.org/WhichBrowser/Parser) +[![Coverage Status](https://coveralls.io/repos/WhichBrowser/Parser-PHP/badge.svg?branch=master&service=github)](https://coveralls.io/github/WhichBrowser/Parser-PHP?branch=master) +[![License](https://poser.pugx.org/whichbrowser/parser/license)](https://packagist.org/packages/whichbrowser/parser) +[![Latest Stable Version](https://poser.pugx.org/whichbrowser/parser/v/stable)](https://packagist.org/packages/whichbrowser/parser) + +[![Twitter Follow](https://img.shields.io/twitter/follow/whichbrowserlib.svg?style=social)](https://twitter.com/whichbrowserlib) + +Also available: + +- [WhichBrowser/Parser-JavaScript](https://github.com/WhichBrowser/Parser-JavaScript)<br> + A JavaScript version of WhichBrowser for use with Node.js on the server + +- [WhichBrowser/Server](https://github.com/WhichBrowser/Server)<br> + A server written in PHP that provides a JavaScript API for use in the browser + +--- + + +About WhichBrowser +------------------ + +**But why *almost completely useless* and not completely useless?** +Well, there is always an exception to the rule. There are valid reasons to do browser sniffing: to improve the user experience or to gather intelligence about which browsers are used on your website. My website is html5test.com and I wanted to know which score belongs to which browser. And to do that you need a browser sniffing library. + +**Why is it extremely complicated?** +Because everybody lies. Seriously, there is not a single browser that is completely truthful. Almost all browsers say they are Netscape 5 and almost all WebKit browsers say they are based on Gecko. Even Internet Explorer 11 now no longer claims to be IE at all, but instead an unnamed browser that is like Gecko. And it gets worse. That is why it is complicated. + +**What kind of information does it give?** +You get a nice object which has information about the browser, rendering engine, os and device. It gives you names and versions and even device manufacturer and model. And WhichBrowser is pretty tenacious. It gives you info that others don't. For example: + + JUC (Linux; U; 2.3.6; zh-cn; GT-I8150; 480*800) UCWEB8.7.4.225/145/800 + UC Browser 8.7 on a Samsung Galaxy W running Android 2.3.6 + +Android is never mentioned + + Mozilla/5.0 (Series40; Nokia501/10.0.2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.73 + Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform + +Despite the useragent header claiming to be a Series40 device, we know it's actually running the Asha Platform and we also know that OviBrowser has been renamed to Nokia Xpress. + + Opera/9.80 (X11; Linux zvav; U; zh) Presto/2.8.119 Version/11.10 + Opera Mini on a Nokia 5230 running Series60 5.0 + +The useragent header looks like Opera 11.10 on Linux, but we know it's Opera Mini. We can even figure out the real operating system and device model from other headers. + + + +Requirements +----------------- + +WhichBrowser requires with PHP 5.4 or higher and supports PHP 7 and HHVM. WhichBrowser is compatible with the PSR-4 autoloading standard and follows PSR-1 and PSR-2 coding style. + + +How to install it +----------------- + +You can install WhichBrowser by using Composer - the standard package manager for PHP. The package is called `whichbrowser/parser`. + + composer require whichbrowser/parser + +You can easily update WhichBrowser by running a simple command. + + composer update whichbrowser/parser + +You should run this command as often as possible. You might even want to consider setting up a cron job for this purpose. + + + + +How to use it +------------- + +The first step require the Composer autoloader: + +```php +<?php + + require 'vendor/autoload.php'; +``` + +The second step is to create a new `WhichBrowser\Parser` object. This object will contain all the information the library could find about the browser. The object has a required parameter, either the headers send by the browser, or a useragent string. Using the headers is preferable, because it will allow a better detection, but if you have just the useragent string, this will also work. + +For example: + +```php +$result = new WhichBrowser\Parser(getallheaders()); +``` + +or: + +```php +$result = new WhichBrowser\Parser($_SERVER['HTTP_USER_AGENT']); +``` + + +The variable `$result` now contains an object which you can query for information. There are various ways to access the information. + + +First of all, you can call to `toString()` function to get a human readable identification: + +```php +"You are using " . $result->toString(); +// You are using Chrome 27 on OS X Mountain Lion 10.8 +``` + +Another possiblity is to query the object: + +```php +$result->isType('desktop'); +// true + +$result->isType('mobile', 'tablet', 'media', 'gaming:portable'); +// false + +$result->isBrowser('Maxthon', '<', '4.0.5'); +// false + +$result->isOs('iOS', '>=', '8'); +// false + +$result->isOs('OS X'); +// true + +$result->isEngine('Blink'); +// true +``` + +You can also access these properties directly: + +```php +$result->browser->toString(); +// Chrome 27 + +$result->engine->toString(); +// Blink + +$result->os->toString(); +// OS X Mountain Lion 10.8 +``` + +Or access parts of these properties directly: + +```php +$result->browser->name; +// Chrome + +$result->browser->name . ' ' . $result->browser->version.toString(); +// Chrome 27 + +$result->browser->version->value; +// 27.0.1453.110 + +$result->engine->name; +// Blink +``` + +Finally you can also query versions directly: + +```php +$result->browser->version->is('>', 26); +// true + +$result->os->version->is('<', '10.7.4'); +// false +``` + +Options +------- + +It is possible to set additional options by passing an array as the second parameter when creating the `Parser` object. + +### Disabling detection of bots + +In some cases you may want to disable the detection of bots. This allows the bot the deliberately fool WhichBrowser, so you can pick up the identity of useragent what the bot tries to mimic. This is especially handy when you want to use WhichBrowser to switch between different variants of your website and want to make sure crawlers see the right variant of the website. For example, a bot that mimics a mobile device will see the mobile variant of you site. + +```php +$result = new WhichBrowser\Parser(getallheaders(), [ 'detectBots' => false ]); +``` + +Enable result caching +--------------------- + +WhichBrowser supports PSR-6 compatible cache adapters for caching results between requests. Using a cache is especially useful if you use WhichBrowser on every page of your website and a user visits multiple pages. During the first visit the headers will be parsed and the result will be cached. Upon further visits, the cached results will be used, which is much faster than having to parse the headers again and again. + +There are adapters available for other types of caches, such as APC, Doctrine, Memcached, MongoDB, Redis and many more. The configuration of these adapters all differ from each other, but once configured, all you have to do is pass it as an option when creating the `Parser` object, or use the `setCache()` function to set it afterwards. WhichBrowser has been tested to work with the adapters provided by [PHP Cache](http://php-cache.readthedocs.org/en/latest/). For a list of other packages that provide adapters see [Packagist](https://packagist.org/providers/psr/cache-implementation). + +For example, if you want to enable a memcached based cache you need to install an extra composer package: + + composer require cache/memcached-adapter + +And change the call to WhichBrowser/Parser as follows: + +```php +$client = new \Memcached(); +$client->addServer('localhost', 11211); + +$pool = new \Cache\Adapter\Memcached\MemcachedCachePool($client); + +$result = new WhichBrowser\Parser(getallheaders(), [ 'cache' => $pool ]); +``` + +or + +```php +$client = new \Memcached(); +$client->addServer('localhost', 11211); + +$pool = new \Cache\Adapter\Memcached\MemcachedCachePool($client); + +$result = new WhichBrowser\Parser(); +$result->setCache($pool); +$result->analyse(getallheaders()); +``` + +You can also specify after how many seconds a cached result should be discarded. The default value is 900 seconds or 15 minutes. If you think WhichBrowser uses too much memory for caching, you should lower this value. You can do this by setting the `cacheExpires` option or passing it as a second parameter to the `setCache()` function. + + +API reference +------------- + +### The Parser object + +After a new `WhichBrowser\Parser` object is created, it contains a number of properties and functions. All of these properties are guaranteed to be present. + +**Properties:** + +* `browser` + an object that contains information about the browser itself +* `engine` + an object that contains information about the rendering engine +* `os` + an object that contains information about the operating system +* `device` + an object that contains information about the device + +**Functions:** + +`getType()` +Returns the `type` and `subtype` property of the `device` object. If a subtype is present it is concatenated to the type and seperated by a semicolor, for example: `mobile:smart` or `gaming:portable`. If the subtype is not applicable, it just return the type, for example: `desktop` or `ereader`. + +`isType($type [,$type [,$type [,$type]]])` +If a single argument is used, the function returns `true` if the argument matches the `type` propery of `device` object. The argument can optionally also provide a subtype by concatenating it to the type and seperating it with a semicolon. It can use multiple arguments in which case the function returns `true` if one of the arguments matches. If none of the arguments matches, it returns `false` + +`isMobile()` +Return `true` if the browser is a mobile device, like a phone, tablet, ereader, camera, portable media player, watch or portable gaming console. Otherwise it returns `false`. + +`isBrowser($name [, $comparison, $version])` +Is used to query the `name` and `version` property of the `browser` object. The funcion can contain a single argument to a simple comparison based on `name`, or three arguments to compare both `name` and `version`. The first argument always contains the name of the browser. The second arguments is a string that can container either `<`, `<=`, `=`, `=>` or `>`. The third is an integer, float or string that contains the version. You can use versions like `10`, `10.7` or `'10.7.4'`. For more information about how version comparisons are performed, please see the `is()` function of the `Version` object. + +`isEngine($name [, $comparison, $version])` +Is used to query the `name` and `version` property of the `engine` object. This function works in exactly the same way as `isBrowser`. + +`isOs($name [, $comparison, $version])` +Is used to query the `name` and `version` property of the `os` object. This function works in exactly the same way as `isBrowser`. + +`isDetected()` +Is there actually some browser detected, for did we fail to detect anything? + +`toString()` +Get a human readable representation of the detected browser, including operating system and device information. + + +### The browser object + +An object of the `WhichBrowser\Model\Browser` class is used for the `browser` property of the main `WhichBrowser\Parser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined. + +**Properties:** + +* `name` + a string containing the name of the browser +* `alias` + a string containing an alternative name of the browser +* `version` + a version object containing information about the version of the browser +* `stock` + a boolean, true if the browser is the default browser of the operating system, false otherwise +* `channel` + a string containing the distribution channel, ie. 'Nightly' or 'Next'. +* `mode` + a string that can contain the operating mode of the browser, ie. 'proxy'. +* `hidden` + a boolean that is true if the browser does not have a name and is the default of the operating system. +* `family` + an object that contains information about to which family this browser belongs +* `using` + an object that contains information about to which kind of webview this browser uses + +**Functions:** + +`isFamily($name)` +Does the family of this browser have this name, or does the browser itself have this name. + +`isUsing($name)` +Is the browser using a webview using with the provided name. + +`getName()` +Get the name of the browser + +`getVersion()` +Get the version of the browser + +`toString()` +Get a human readable representation of the detected browser + + +### The engine object + +An object of the `WhichBrowser\Model\Engine` class is used for the `engine` property of the main `WhichBrowser\Parser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined. + +**Properties:** + +* `name` + a string containing the name of the rendering engine +* `version` + a version object containing information about the version of the rendering engine + +**Functions:** + +`getName()` +Get the name of the rendering engine + +`getVersion()` +Get the version of the rendering engine + +`toString()` +Get a human readable representation of the detected rendering engine + + +### The os object + +An object of the `WhichBrowser\Model\Os` class is used for the `os` property of the main `WhichBrowser\Parser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined. + +**Properties:** + +* `name` + a string containing the name of the operating system +* `version` + a version object containing information about the version of the operating system +* `family` + an object that contains information about to which family this operating system belongs + +**Functions:** + +`isFamily($name)` +Does the family of this operating system have this name, or does the operating system itself have this name. + +`getName()` +Get the name of the operating system + +`getVersion()` +Get the version of the operating system + +`toString()` +Get a human readable representation of the detected operating system + + +### The device object + +An object of the `WhichBrowser\Model\Device` class is used for the `device` property of the main `WhichBrowser\Parser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined. + +**Properties:** + +* `type` + a string containing the type of the browser. +* `subtype` + a string containing the subtype of the browser. +* `identified` + a boolean that is true if the device has been positively identified. +* `manufacturer` + a string containing the manufacturer of the device, ie. 'Apple' or 'Samsung'. +* `model` + as string containing the model of the device, ie. 'iPhone' or 'Galaxy S4'. + +The `type` property can contain any value from the following list: + +* desktop +* mobile +* tablet +* gaming +* headset +* ereader +* media +* emulator +* television +* monitor +* camera +* signage +* whiteboard +* car +* pos +* bot + +If the `type` is "mobile", the `subtype` property can contain any value from the following list: + +* feature +* smart + +If the `type` is "gaming", the `subtype` property can contain any value from the following list: + +* console +* portable + +**Functions:** + +`getManufacturer()` +Get the name of the manufacturer + +`getModel()` +Get the name of the model + +`toString()` +Get a human readable representation of the detected device + + +### The family object + +An object of the `WhichBrowser\Model\Family` class is used for the `family` property of the `WhichBrowser\Model\Browser` and `WhichBrowser\Model\Os` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined. + +**Properties:** + +* `name` + a string containing the name of the family +* `version` + a version object containing information about the version of the family + +**Functions:** + +`getName()` +Get the name of the family + +`getVersion()` +Get the version of the family + +`toString()` +Get a human readable representation of the family + + +### The using object + +An object of the `WhichBrowser\Model\Using` class is used for the `using` property of the `WhichBrowser\Model\Browser` object and contains a number of properties. If a property is not applicable in this situation it will be null or undefined. + +**Properties:** + +* `name` + a string containing the name of the webview +* `version` + a version object containing information about the version of the webview + +**Functions:** + +`getName()` +Get the name of the webview + +`getVersion()` +Get the version of the webview + +`toString()` +Get a human readable representation of the webview + + +### The version object + +An object of the `WhichBrowser\Model\Version` class is used for the `version` property of the `browser`, `engine` and `os` object and contains a number of properties and functions. If a property is not applicable in this situation it will be null or undefined. + +**Properties:** + +* `value` + a string containing the original version number. +* `alias` + a string containing an alias for the version number, ie. 'XP' for Windows '5.1'. +* `details` + an integer containing the number of digits of the version number that should be printed. + +**Functions:** + +`is($version)` or `is($comparison, $version)` +Using this function it is easy to compare a version to another version. If you specify only one argument, this function will return if the versions are the same. You can also specify two arguments, in that case the first argument contains the comparison operator, such as `<`, `<=`, `=`, `=>` or `>`. The second argument is the version you want to compare it to. You can use versions like `10`, `10.7` or `'10.7.4'`, but be aware that `10` is not the same as `10.0`. For example if our OS version is `10.7.4`: + +```php +$result->os->version->is('10.7.4'); +// true + +$result->os->version->is('10.7'); +// true + +$result->os->version->is('10'); +// true + +$result->os->version->is('10.0'); +// false + +$result->os->version->is('>', '10'); +// false + +$result->os->version->is('>', '10.7'); +// false + +$result->os->version->is('>', '10.7.3'); +// true +``` diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/bootstrap.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/bootstrap.php new file mode 100644 index 0000000..ca25a8f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/bootstrap.php @@ -0,0 +1,10 @@ +<?php + +$standaloneAutoloader = __DIR__ . '/../vendor/autoload.php'; +$packageAutoloader = __DIR__ . '/../../../autoload.php'; + +if (file_exists($packageAutoloader)) { + require_once $packageAutoloader; +} else { + require_once $standaloneAutoloader; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/query.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/query.php new file mode 100644 index 0000000..90f380d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/query.php @@ -0,0 +1,42 @@ +<?php + +include_once __DIR__ . '/bootstrap.php'; + +use WhichBrowser\Parser; + +$command = 'exec'; +$options = []; +$payload = []; + +array_shift($argv); + +if (count($argv)) { + foreach ($argv as $argument) { + if (in_array($argument, [ 'exec' ])) { + $command = $argument; + } elseif (substr($argument, 0, 2) == '--') { + $options[] = substr($argument, 2); + } else { + $payload[] = $argument; + } + } +} + +$payload = implode(' ', $payload); + + +if ($command == 'exec') { + if ($payload == '') { + $payload = file_get_contents('php://stdin'); + } + + if ($payload != '') { + echo "\n\033[0;32mInput:\033[0;0m\n" . trim($payload) . "\n"; + + $result = new Parser(trim($payload)); + echo "\n\033[0;32mHuman readable:\033[0;0m\n" . $result->toString() . "\n"; + echo "\n\033[0;32mData:\033[0;0m\n"; + echo json_encode($result, JSON_PRETTY_PRINT); + echo "\n\n"; + } +} \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/runner.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/runner.php new file mode 100644 index 0000000..a7ed648 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/runner.php @@ -0,0 +1,101 @@ +<?php + +include_once __DIR__ . '/bootstrap.php'; + +use WhichBrowser\Testrunner; +use WhichBrowser\Tests; + +set_error_handler(function ($errno, $errstr, $errfile, $errline, array $errcontext) { + // error was suppressed with the @-operator + if (0 === error_reporting()) { + return false; + } + + throw new ErrorException($errstr, 0, $errno, $errfile, $errline); +}); + + + +$all = false; +$command = 'compare'; +$files = []; +$options = []; + +array_shift($argv); + +if (count($argv)) { + foreach ($argv as $argument) { + if (in_array($argument, [ 'compare', 'check', 'rebase', 'list' ])) { + $command = $argument; + } elseif (substr($argument, 0, 2) == '--') { + $options[] = substr($argument, 2); + } else { + if (fnmatch("*.yaml", $argument)) { + $files[] = $argument; + } else { + $files = array_merge($files, Tests::getFromCategory($argument)); + } + } + } +} + +if (count($files) === 0) { + $files = Tests::getAll(); +} + +switch ($command) { + case 'list': + Testrunner::search($files); + break; + + case 'check': + if (in_array('coverage', $options)) { + $coverage = new PHP_CodeCoverage; + $coverage->filter()->addDirectoryToWhitelist('src'); + $coverage->start('Testrunner'); + } + + $result = Testrunner::compare($files, false); + + if (in_array('coverage', $options)) { + $coverage->stop(); + + $writer = new PHP_CodeCoverage_Report_Clover; + $writer->process($coverage, 'runner.xml'); + + echo "\nCoverage saved as runner.xml\n\n"; + } + + if (!$result) { + echo "\033[0;31mTestrunner failed, please fix or rebase before building or deploying!\033[0m\n\n"; + + if (in_array('show', $options)) { + echo file_get_contents('runner.log') . "\n\n"; + echo "Done!\n\n"; + } + + exit(1); + } + + break; + + case 'compare': + $result = Testrunner::compare($files, false); + + if (!$result) { + echo "\033[0;31mTestrunner failed, please look at runner.log for the details!\033[0m\n\n"; + + if (in_array('show', $options)) { + echo file_get_contents('runner.log') . "\n\n"; + echo "Done!\n\n"; + } + + exit(1); + } + + break; + + case 'rebase': + Testrunner::rebase($files, false); + break; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-browser-ids.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-browser-ids.php new file mode 100644 index 0000000..449ef20 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-browser-ids.php @@ -0,0 +1,34 @@ +<?php + + include_once __DIR__ . '/bootstrap.php'; + + echo "Updating browser ids...\n"; + + $ids = json_decode(file_get_contents("https://api.whichbrowser.net/resources/browser-ids.json")); + + $result = ""; + $result .= "<?php\n"; + $result .= "\n"; + $result .= "/* This file is automatically generated, do not edit manually! */\n"; + $result .= "\n"; + $result .= "namespace WhichBrowser\\Data;\n"; + $result .= "\n"; + $result .= "BrowserIds::\$ANDROID_BROWSERS = [\n"; + + foreach($ids as $key => $id) { + $result .= " '" . addslashes(trim($id->browserId)) . "'" . str_repeat(" ", max(0, 100 - strlen($id->browserId))); + $result .= "=> " . deviceString($id->browserName) . ",\n"; + } + + $result .= "];\n"; + + file_put_contents(__DIR__ . '/../data/id-android.php', $result); + + + function deviceString($s) { + if (is_null($s) || $s == '') { + return 'null'; + } + + return "'" . addslashes(trim($s)) . "'"; + } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-chrome.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-chrome.php new file mode 100644 index 0000000..0857d99 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-chrome.php @@ -0,0 +1,58 @@ +<?php + + include_once __DIR__ . '/bootstrap.php'; + include __DIR__ . '/../data/browsers-chrome.php'; + + echo "Updating chrome versions...\n"; + + $stable = [ + 'desktop' => [], + 'mobile' => [] + ]; + + + $omaha = explode("\n", file_get_contents("http://omahaproxy.appspot.com/history")); + foreach ($omaha as $i => $line) { + $items = explode(",", $line); + + if ($items[0] == 'mac' && $items[1] == 'stable') { + $stable['desktop'][] = implode('.', array_slice(explode('.', $items[2]), 0, 3)); + } + + if ($items[0] == 'android' && $items[1] == 'stable') { + $stable['mobile'][] = implode('.', array_slice(explode('.', $items[2]), 0, 3)); + } + } + + $stable['desktop'] = array_unique($stable['desktop']); + $stable['mobile'] = array_unique($stable['mobile']); + + sort($stable['desktop']); + sort($stable['mobile']); + + + foreach ($stable['desktop'] as $i => $version) { + if (!isset(WhichBrowser\Data\Chrome::$DESKTOP[$version])) { + WhichBrowser\Data\Chrome::$DESKTOP[$version] = 'stable'; + } + } + + foreach ($stable['mobile'] as $i => $version) { + if (!isset(WhichBrowser\Data\Chrome::$MOBILE[$version])) { + WhichBrowser\Data\Chrome::$MOBILE[$version] = 'stable'; + } + } + + + $result = ""; + $result .= "<?php\n\n"; + $result .= "namespace WhichBrowser\Data;\n\n"; + $result .= "Chrome::\$DESKTOP = [\n"; + foreach (WhichBrowser\Data\Chrome::$DESKTOP as $version => $channel) $result .= " '{$version}' => '{$channel}',\n"; + $result .= "];\n\n"; + $result .= "Chrome::\$MOBILE = [\n"; + foreach (WhichBrowser\Data\Chrome::$MOBILE as $version => $channel) $result .= " '{$version}' => '{$channel}',\n"; + $result .= "];\n"; + + + file_put_contents(__DIR__ . '/../data/browsers-chrome.php', $result); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-indices.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-indices.php new file mode 100644 index 0000000..bd82735 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-indices.php @@ -0,0 +1,199 @@ +<?php + +include_once __DIR__ . '/bootstrap.php'; + +use WhichBrowser\Data\DeviceModels; +use ReverseRegex\Lexer; + +$command = 'list'; +$types = []; +$options = []; + +array_shift($argv); + +if (count($argv)) { + foreach ($argv as $argument) { + if (in_array($argument, [ 'list' ])) { + $command = $argument; + } elseif (substr($argument, 0, 2) == '--') { + $options[] = substr($argument, 2); + } else { + $types[] = $argument; + } + } +} + +if (in_array('all', $options)) { + $types = [ + 'android', 'asha', 'bada', 'brew', 'feature', 'firefoxos', + 'kddi', 'palmos', 's30plus', 's40', 'symbian', 'tizen', + 'touchwiz', 'wm', 'wp' + ]; +} + + +foreach ($types as $i => $type) { + command($command, $type); +} + + +function command($command, $type) { + switch($command) { + case 'list': + command_list($type); + break; + } +} + +function command_list($type) { + echo "Creating index for 'data/models-{$type}.php'...\n"; + + require_once __DIR__ . '/../data/models-' . $type . '.php'; + + $name = strtoupper($type) . '_MODELS'; + $list = DeviceModels::$$name; + + $index = []; + + foreach ($list as $key => $value) { + + if (substr($key, -2) == '!!') { + $keys = getKeysFromRegexp(substr($key, 0, -2)); + } + elseif (substr($key, -1) == '!') { + $keys = getKeysFromRegexp(substr($key, 0, -1)); + } + else { + $keys = [ substr(strtoupper($key), 0, 2) ]; + } + + foreach ($keys as $k => $v) { + if ($v == '**') { + $v = ''; + } + + if (!isset($index['@'.$v])) { + $index['@'.$v] = []; + } + + $index['@'.$v][] = $key; + } + } + + ksort($index); + + $file = "<" . "?php\n"; + $file .= "\n"; + $file .= "namespace WhichBrowser\\Data;\n"; + $file .= "\n"; + $file .= "DeviceModels::\$" . strtoupper($type) . "_INDEX = " . var_export($index, true) . ";\n"; + + file_put_contents(__DIR__ . '/../data/indices/models-' . $type . '.php', $file); +} + +function getKeysFromRegexp($regexp) { + $lexer = new Lexer($regexp); + $lexer->moveNext(); + + $keys = readKeysFromLexer($lexer); + + return array_unique($keys); +} + + +function readKeysFromLexer($lexer) { + $keys = []; + + if ($lexer->isNextTokenAny([ Lexer::T_LITERAL_CHAR,Lexer::T_LITERAL_NUMERIC ])) { + $current = strtoupper($lexer->lookahead['value']); + + $lexer->moveNext(); + if ($lexer->isNextTokenAny([ Lexer::T_LITERAL_CHAR,Lexer::T_LITERAL_NUMERIC ])) { + $keys[] = $current . strtoupper($lexer->lookahead['value']); + } + else { + $keys[] = '**'; + } + } + + else if ($lexer->isNextToken(Lexer::T_GROUP_OPEN)) { + $current = ''; + $active = true; + + while ($lexer->moveNext()) { + if ($lexer->isNextTokenAny([ Lexer::T_LITERAL_CHAR,Lexer::T_LITERAL_NUMERIC ])) { + if ($active && strlen($current) < 2) { + $current .= strtoupper($lexer->lookahead['value']); + } + } + + else if ($lexer->isNextToken(Lexer::T_CHOICE_BAR)) { + $keys[] = $current; + $current = ''; + $active = true; + } + + else if ($lexer->isNextToken(Lexer::T_GROUP_OPEN)) { + if ($lexer->moveNext()) { + $more = readKeysFromLexer($lexer); + + if (count($more)) { + $keys = array_merge($keys, $more); + } else { + break; + } + } + } + + else if ($lexer->isNextToken(Lexer::T_GROUP_CLOSE)) { + if (strlen($current) == 2) { + $keys[] = $current; + } else { + $keys[] = '**'; + } + + $current = ''; + $active = true; + break; + } + + else if ($lexer->isNextToken(Lexer::T_DOT)) { + $keys[] = '**'; + $current = ''; + $active = false; + break; + } + + else { + $active = false; + } + } + + while ($lexer->moveNext()) { + if ($lexer->isNextToken(Lexer::T_QUANTIFIER_QUESTION)) { + if ($lexer->moveNext()) { + $more = readKeysFromLexer($lexer); + + if (count($more)) { + $keys = array_merge($keys, $more); + } else { + break; + } + } + } + else { + break; + } + } + } + + else if ($lexer->isNextToken(Lexer::T_SET_OPEN)) { + $keys[] = '**'; + } + + else if ($lexer->isNextToken(Lexer::T_DOT)) { + $keys[] = '**'; + } + + return array_unique($keys); +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-profiles.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-profiles.php new file mode 100644 index 0000000..fe2b9f2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-profiles.php @@ -0,0 +1,47 @@ +<?php + + include_once __DIR__ . '/bootstrap.php'; + + echo "Downloading..."; + + $profiles = json_decode(file_get_contents("https://api.whichbrowser.net/resources/profiles.json")); + + $total = count($profiles); + + $result = ""; + $result .= "<?php\n"; + $result .= "\n"; + $result .= "/* This file is automatically generated, do not edit manually! */\n"; + $result .= "\n"; + $result .= "namespace WhichBrowser\\Data;\n"; + $result .= "\n"; + $result .= "use WhichBrowser\\Constants\\DeviceType;\n"; + $result .= "\n"; + $result .= "DeviceProfiles::\$PROFILES = [\n"; + + foreach($profiles as $key => $profile) { + $result .= " '" . addslashes(trim($profile->url)) . "'" . str_repeat(" ", max(0, 100 - strlen($profile->url))); + $result .= "=> [ " . deviceString($profile->deviceManufacturer) . ", " . deviceString($profile->deviceModel); + $result .= ", " . deviceString($profile->osName) . ", " . deviceType($profile->deviceType) . " ],\n"; + } + + $result .= "];\n"; + + echo " and writing {$total} profiles...\n"; + file_put_contents(__DIR__ . '/../data/profiles.php', $result); + + + function deviceString($s) { + if (is_null($s) || $s == '') { + return 'null'; + } + + return "'" . addslashes(trim($s)) . "'"; + } + + function deviceType($type) { + switch ($type) { + case 'mobile': return 'DeviceType::MOBILE'; + case 'tablet': return 'DeviceType::TABLET'; + } + } \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-regexes.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-regexes.php new file mode 100644 index 0000000..16b807a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bin/update-regexes.php @@ -0,0 +1,118 @@ +<?php + +include_once __DIR__ . '/bootstrap.php'; + +use WhichBrowser\Data\Applications; + +$command = 'list'; +$types = []; +$options = []; + +array_shift($argv); + +if (count($argv)) { + foreach ($argv as $argument) { + if (in_array($argument, [ 'list' ])) { + $command = $argument; + } elseif (substr($argument, 0, 2) == '--') { + $options[] = substr($argument, 2); + } else { + $types[] = $argument; + } + } +} + +if (in_array('all', $options)) { + $types = [ + 'applications-bots', + 'applications-browsers', + 'applications-others' + ]; +} + + +foreach ($types as $i => $type) { + command($command, $type); +} + + +function command($command, $type) { + switch($command) { + case 'list': + command_list($type); + break; + } +} + +function command_list($type) { + echo "Creating regex for 'data/{$type}.php'...\n"; + + require_once __DIR__ . '/../data/' . $type . '.php'; + + if ($type == 'applications-bots') { + $list = Applications::$BOTS; + + $ids = []; + + foreach ($list as $i => $bot) { + $ids[] = $bot['id']; + } + + $ids = array_unique($ids); + $regex = '/(' . implode('|', $ids) . ')/i'; + + $file = "<" . "?php\n"; + $file .= "\n"; + $file .= "namespace WhichBrowser\\Data;\n"; + $file .= "\n"; + $file .= "Applications::\$BOTS_REGEX = '" . $regex . "';\n"; + + file_put_contents(__DIR__ . '/../data/regexes/' . $type . '.php', $file); + } + + if ($type == 'applications-browsers') { + $list = Applications::$BROWSERS; + + $ids = []; + + foreach ($list as $t => $l) { + foreach ($l as $i => $item) { + $ids[] = $item['id']; + } + } + + $ids = array_unique($ids); + $regex = '/(' . implode('|', $ids) . ')/i'; + + $file = "<" . "?php\n"; + $file .= "\n"; + $file .= "namespace WhichBrowser\\Data;\n"; + $file .= "\n"; + $file .= "Applications::\$BROWSERS_REGEX = '" . $regex . "';\n"; + + file_put_contents(__DIR__ . '/../data/regexes/' . $type . '.php', $file); + } + + if ($type == 'applications-others') { + $list = Applications::$OTHERS; + + $ids = []; + + foreach ($list as $t => $l) { + foreach ($l as $i => $item) { + $ids[] = $item['id']; + } + } + + $ids = array_unique($ids); + $regex = '/(' . implode('|', $ids) . ')/i'; + + $file = "<" . "?php\n"; + $file .= "\n"; + $file .= "namespace WhichBrowser\\Data;\n"; + $file .= "\n"; + $file .= "Applications::\$OTHERS_REGEX = '" . $regex . "';\n"; + + file_put_contents(__DIR__ . '/../data/regexes/' . $type . '.php', $file); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bootstrap.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bootstrap.php new file mode 100644 index 0000000..2892a53 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/bootstrap.php @@ -0,0 +1,30 @@ +<?php + +spl_autoload_register(function ($class) { + + // project-specific namespace prefix + $prefix = 'WhichBrowser\\'; + + // base directory for the namespace prefix + $base_dir = __DIR__ . '/src/'; + + // does the class use the namespace prefix? + $len = strlen($prefix); + if (strncmp($prefix, $class, $len) !== 0) { + // no, move to the next registered autoloader + return; + } + + // get the relative class name + $relative_class = substr($class, $len); + + // replace the namespace prefix with the base directory, replace namespace + // separators with directory separators in the relative class name, append + // with .php + $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php'; + + // if the file exists, require it + if (file_exists($file)) { + require $file; + } +}); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/composer.json b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/composer.json new file mode 100644 index 0000000..034afe7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/composer.json @@ -0,0 +1,47 @@ +{ + "name": "whichbrowser/parser", + + "description": "Useragent sniffing library for PHP", + "keywords": ["useragent","browser","sniffing", "ua"], + "homepage": "http://whichbrowser.net", + "license": "MIT", + "authors": [ + { + "name": "Niels Leenheer", + "email": "niels@leenheer.nl", + "role": "Developer" + } + ], + + "require": { + "php": ">=5.4.0", + "psr/cache": "^1.0" + }, + + "autoload": { + "psr-4": { + "WhichBrowser\\": [ "src/", "tests/src/" ] + } + }, + + "suggest": { + "cache/array-adapter": "Allows testing of the caching functionality" + }, + + "require-dev": { + "symfony/yaml": ">=2.8", + "phpunit/php-code-coverage": "^2.2|^3.0", + "phpunit/PHPUnit": "^4.0|^5.0", + "satooshi/php-coveralls": "^1.0", + "icomefromthenet/reverse-regex" : "0.0.6.3", + "squizlabs/php_codesniffer": "2.5.*" + }, + + "autoload-dev": { + "psr-4": { + "WhichBrowserTest\\": "tests/unit" + }, + + "files": [ "tests/src/polyfills.php" ] + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-bots.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-bots.php new file mode 100644 index 0000000..2490f67 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-bots.php @@ -0,0 +1,293 @@ +<?php + +namespace WhichBrowser\Data; + +Applications::$BOTS = [ + [ 'name' => '80legs', 'id' => '008', 'regexp' => '/(?:^|\s)008\/([0-9.]*)/u' ], + [ 'name' => '360spider', 'id' => '360', 'regexp' => '/360Spider/u' ], + [ 'name' => '360spider', 'id' => '360', 'regexp' => '/360spider-image/u' ], + [ 'name' => 'A6 Indexer', 'id' => 'a6', 'regexp' => '/A6-Indexer(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Aboundex', 'id' => 'abound', 'regexp' => '/Aboundex\/([0-9.]*)/u' ], + [ 'name' => 'Ad Muncher', 'id' => 'muncher', 'regexp' => '/Ad Muncher v([0-9.]*)/u' ], + [ 'name' => 'Adaxas', 'id' => 'adaxas', 'regexp' => '/Adaxas Spider/u' ], + [ 'name' => 'AddThis.com', 'id' => 'addthis', 'regexp' => '/AddThis.com/u' ], + [ 'name' => 'ADmantX', 'id' => 'admantx', 'regexp' => '/ADmantX Platform Semantic Analyzer/u' ], + [ 'name' => 'AhrefsBot', 'id' => 'ahrefsbot', 'regexp' => '/AhrefsBot.Feeds v([0-9.]*)/u' ], + [ 'name' => 'AhrefsBot', 'id' => 'ahrefsbot', 'regexp' => '/AhrefsBot\/([0-9.]*)/u' ], + [ 'name' => 'Alexa', 'id' => 'archiver', 'regexp' => '/ia_archiver/u' ], + [ 'name' => 'AltaVista', 'id' => 'altavista', 'regexp' => '/AltaVista Intranet V([0-9.]*)/u' ], + [ 'name' => 'Analytics SEO', 'id' => 'curious', 'regexp' => '/Curious George - www.analyticsseo.com\/crawler/u' ], + [ 'name' => 'Amazon CloudFront', 'id' => 'cloudfront', 'regexp' => '/Amazon CloudFront/u' ], + [ 'name' => 'Amorank Spider', 'id' => 'amorank', 'regexp' => '/AmorankSpider\/([0-9.]*)/u' ], + [ 'name' => 'ArchiveBot', 'id' => 'archive', 'regexp' => '/ArchiveTeam ArchiveBot/u' ], + [ 'name' => 'Archive.org', 'id' => 'archive', 'regexp' => '/archive.org_bot(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Archive.org', 'id' => 'archive', 'regexp' => '/special_archiver(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Ask Jeeves', 'id' => 'jeeves', 'regexp' => '/Ask Jeeves\/Teoma/u' ], + [ 'name' => 'AstraSpider', 'id' => 'astra', 'regexp' => '/AstraSpider V([0-9.]*)/u' ], + [ 'name' => 'Backlink-Check', 'id' => 'backlink', 'regexp' => '/Backlink-Ceck.de/u' ], + [ 'name' => 'BacklinkCrawler', 'id' => 'backlink', 'regexp' => '/BacklinkCrawler/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider[\+ ]\([\+ ]/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider\/([0-9.]*)/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/baiduspider-mobile-gate/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/\+http:\/\/www.baidu.com\/search\/spider.html/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/BaiduImagespider/u' ], + [ 'name' => 'BazQux', 'id' => 'bazqux', 'regexp' => '/BazQux\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'bingbot', 'regexp' => '/bingbot\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-UDiscovery\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-media\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/MsnBot-Media \/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-NewsBlogs\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/MSNBOT_Mobile/u' ], + [ 'name' => 'Bing', 'id' => 'msmobot', 'regexp' => '/MSMOBOT/u' ], + [ 'name' => 'Bing Preview', 'id' => 'bing', 'regexp' => '/BingPreview\/([0-9.]*)/u' ], + [ 'name' => 'BlogBridge', 'id' => 'blogbridge', 'regexp' => '/BlogBridge ([0-9.]*)/u' ], + [ 'name' => 'Bloglines', 'id' => 'bloglines', 'regexp' => '/Bloglines\/([0-9.]*)/u' ], + [ 'name' => 'Bloglovin', 'id' => 'bloglovin', 'regexp' => '/Bloglovin\/([0-9.]*)/u' ], + [ 'name' => 'BlogPulse', 'id' => 'blogpulse', 'regexp' => '/BlogPulse \(ISSpider-([0-9.]*)/u' ], + [ 'name' => 'Blogram', 'id' => 'blogram', 'regexp' => '/BlogramCrawler\/([0-9.]*)/u' ], + [ 'name' => 'Blogtrottr', 'id' => 'blogtrot', 'regexp' => '/Blogtrottr\/([0-9.]*)/u' ], + [ 'name' => 'Blogshares', 'id' => 'blogshares', 'regexp' => '/Blogshares/u' ], + [ 'name' => 'BoardReader', 'id' => 'boardreader', 'regexp' => '/BoardReader\/([0-9.]*)/u' ], + [ 'name' => 'Browsershots', 'id' => 'browsershots', 'regexp' => '/Browsershots/u' ], + [ 'name' => 'BUbiNG', 'id' => 'bubing', 'regexp' => '/BUbiNG/u' ], + [ 'name' => 'Butterfly', 'id' => 'butterfly', 'regexp' => '/Butterfly\/([0-9.]*)/u' ], + [ 'name' => 'CiteSeerX', 'id' => 'heritrix', 'regexp' => '/heritrix\/([0-9.]*)/u' ], + [ 'name' => 'Cliqzbot', 'id' => 'cliqz', 'regexp' => '/Cliqzbot\/([0-9.]*)/u' ], + [ 'name' => 'CloudFare Always Online', 'id' => 'cloudflare', 'regexp' => '/CloudFlare-AlwaysOnline\/([0-9.]*)/u' ], + [ 'name' => 'Comodo', 'id' => 'comodo', 'regexp' => '/Comodo Spider ([0-9.]*)/u' ], + [ 'name' => 'CommaFeed', 'id' => 'commafeed', 'regexp' => '/CommaFeed\/([0-9.]*)/u' ], + [ 'name' => 'CommonCrawl', 'id' => 'cbot', 'regexp' => '/CCBot\/([0-9.]*)/u' ], + [ 'name' => 'Data Hotel Watchdog', 'id' => 'watchdog', 'regexp' => '/Data-Hotel-Watchdog\/([0-9.]*)/u' ], + [ 'name' => 'DataparkSearch', 'id' => 'datasearch', 'regexp' => '/DataparkSearch\/([0-9.]*)/u' ], + [ 'name' => 'Daumoa', 'id' => 'daumoa', 'regexp' => '/Daumoa ([0-9.]*)/u' ], + [ 'name' => 'Digg', 'id' => 'digg', 'regexp' => '/Digg Deeper\/v([0-9.]*)/u' ], + [ 'name' => 'Digg', 'id' => 'digg', 'regexp' => '/Digg\/([0-9.]*)/u' ], + [ 'name' => 'Domain Re-Animator', 'id' => 'domain', 'regexp' => '/Domain Re-Animator Bot/u' ], + [ 'name' => 'Exabot Thumbnails', 'id' => 'exabot', 'regexp' => '/Exabot-Thumbnails/u' ], + [ 'name' => 'ExactSeek', 'id' => 'exactseek', 'regexp' => '/ExactSeek Crawler/u' ], + [ 'name' => 'Ezooms Crawler', 'id' => 'ezooms', 'regexp' => '/Ezooms\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookplatform\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookexternalhit\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookscraper\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/FacebookSecurity\/([0-9.]*)/u' ], + [ 'name' => 'FAST Crawler', 'id' => 'fast', 'regexp' => '/FAST Crawler ([0-9.]*)/u' ], + [ 'name' => 'FAST Crawler', 'id' => 'fast', 'regexp' => '/FastCrawler3/u' ], + [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST Enterprise Crawler\/([0-9.]*)/u' ], + [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST Enterprise Crawler ([0-9.]*)/u' ], + [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST EnterpriseCrawler ([0-9.]*)/u' ], + [ 'name' => 'FAST MetaWeb Crawler', 'id' => 'fast', 'regexp' => '/FAST MetaWeb Crawler/u' ], + [ 'name' => 'FAST mSEARCH Crawler', 'id' => 'fast', 'regexp' => '/FAST-mSEARCH Crawler ([0-9.]*)/u' ], + [ 'name' => 'FAST Web Crawler', 'id' => 'fast', 'regexp' => '/FAST-WebCrawler\/([0-9.]*)/u' ], + [ 'name' => 'Flamingo Search', 'id' => 'flamingo', 'regexp' => '/Flamingo_SearchEngine/u' ], + [ 'name' => 'Fastladder', 'id' => 'fastladder', 'regexp' => '/Fastladder FeedFetcher\/([0-9.]*)/u' ], + [ 'name' => 'Feedbin', 'id' => 'feed', 'regexp' => '/Feedbin/u' ], + [ 'name' => 'FeedWrangler', 'id' => 'wrangler', 'regexp' => '/Feed Wrangler\/([0-9.]*)/u' ], + [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/FeedlyApp\/([0-9.]*)/u' ], + [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/FeedlyBot\/([0-9.]*)/u' ], + [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/MetaFeedly\/([0-9.]*)/u' ], + [ 'name' => 'Feedspot', 'id' => 'feed', 'regexp' => '/Feedspot/u' ], + [ 'name' => 'FeedValidator', 'id' => 'validator', 'regexp' => '/FeedValidator\/([0-9.]*)/u' ], + [ 'name' => 'FeedZirra', 'id' => 'feed', 'regexp' => '/feedzirra/u' ], + [ 'name' => 'Fever', 'id' => 'fever', 'regexp' => '/Fever\/([0-9.]*)/u' ], + [ 'name' => 'Friendica', 'id' => 'friendica', 'regexp' => '/Friendica/u' ], + [ 'name' => 'FTRF: Friendly Robot', 'id' => 'robot', 'regexp' => '/FTRF: Friendly robot\/([0-9.]*)/u' ], + [ 'name' => 'Genieo Web Filter', 'id' => 'genieo', 'regexp' => '/Genieo\/([0-9.]*)/u' ], + [ 'name' => 'GNIP', 'id' => 'fetchor', 'regexp' => '/UnwindFetchor\/([0-9.]*)/u' ], + [ 'name' => 'Gocrawl', 'id' => 'google', 'regexp' => '/Googlebot \(gocrawl v([0-9.]*)\)/u' ], + [ 'name' => 'GomezAgent', 'id' => 'gomez', 'regexp' => '/GomezAgent ([0-9.]+)/u' ], + [ 'name' => 'Goo', 'id' => 'ichiro', 'regexp' => '/ichiro\/mobile goo/u' ], + [ 'name' => 'Goo Blog Search', 'id' => 'gooblog', 'regexp' => '/gooblog\/([0-9.]*)/u' ], + [ 'name' => 'Goo Blog Search', 'id' => 'gooblog', 'regexp' => '/gooblogsearch\/([0-9.]*)/u' ], + [ 'name' => 'Goo RSS Reader', 'id' => 'goorss', 'regexp' => '/gooRSSreader([0-9.]*)/u' ], + [ 'name' => 'Googlebot', 'id' => 'google', 'regexp' => '/Google[Bb]ot\/([0-9.]*)/u' ], + [ 'name' => 'Googlebot Mobile', 'id' => 'google', 'regexp' => '/Googlebot-Mobile\/([0-9.]*)/u' ], + [ 'name' => 'Googlebot Image', 'id' => 'google', 'regexp' => '/Googlebot-Image\/([0-9.]*)/u' ], + [ 'name' => 'Googlebot Video', 'id' => 'google', 'regexp' => '/Googlebot-Video\/([0-9.]*)/u' ], + [ 'name' => 'Google Ads Bot', 'id' => 'google', 'regexp' => '/AdsBot-Google/u' ], + [ 'name' => 'Google Adsense Snapshot', 'id' => 'google', 'regexp' => '/Adsense-Snapshot-Google/u' ], + [ 'name' => 'Google App Engine', 'id' => 'google', 'regexp' => '/AppEngine-Google/u' ], + [ 'name' => 'Google Web Preview', 'id' => 'google', 'regexp' => '/Google Web Preview/u' ], + [ 'name' => 'Google Page Speed', 'id' => 'google', 'regexp' => '/Google Page Speed Insights/u' ], + [ 'name' => 'Google FeedBurner', 'id' => 'feed', 'regexp' => '/FeedBurner\/([0-9.]*)/u' ], + [ 'name' => 'Google Feedfetcher', 'id' => 'google', 'regexp' => '/Feedfetcher-Google/iu' ], + [ 'name' => 'Google Font Analysis', 'id' => 'google', 'regexp' => '/Google-FontAnalysis\/([0-9.]*)/u' ], + [ 'name' => 'Google Sitemaps', 'id' => 'google', 'regexp' => '/Google-Sitemaps\/([0-9.]*)/u' ], + [ 'name' => 'Google Site Verification', 'id' => 'google', 'regexp' => '/Google-Site-Verification\/([0-9.]*)/u' ], + [ 'name' => 'Google Rich Snippets', 'id' => 'google', 'regexp' => '/Googlebot-richsnippets/u' ], + [ 'name' => 'Google Mediapartners', 'id' => 'google', 'regexp' => '/Mediapartners-Google\/([0-9.]*)/u' ], + [ 'name' => 'Google Mediapartners', 'id' => 'google', 'regexp' => '/Mediapartners-Google/u' ], + [ 'name' => 'Google News', 'id' => 'google', 'regexp' => '/Googlebot-News/u' ], + [ 'name' => 'Google Wireless Transcoder', 'id' => 'google', 'regexp' => '/Google Wireless Transcoder/u' ], + [ 'name' => 'Google Play Newsstand', 'id' => 'google', 'regexp' => '/GoogleProducer/u' ], + [ 'name' => 'Google YouTube Sample', 'id' => 'google', 'regexp' => '/Google-YouTubeSample\/([0-9.]*)/u' ], + [ 'name' => 'Grammarly', 'id' => 'grammarly', 'regexp' => '/Grammarly\/([0-9.]*)/u' ], + [ 'name' => 'Grub', 'id' => 'grub', 'regexp' => '/grub-client-([0-9.]*)/u' ], + [ 'name' => 'Hatena Antenna', 'id' => 'hatena', 'regexp' => '/Hatena Antenna\/([0-9.]*)/u' ], + [ 'name' => 'Hatena Diary', 'id' => 'hatena', 'regexp' => '/Hatena Diary RSS Module/u' ], + [ 'name' => 'Hatena Pagetitle', 'id' => 'hatena', 'regexp' => '/Hatena Pagetitle Agent\/([0-9.]*)/u' ], + [ 'name' => 'HeartRails Capture', 'id' => 'capture', 'regexp' => '/HeartRails_Capture\/([0-9.]*)/u' ], + [ 'name' => 'Heureka Feed', 'id' => 'heureka', 'regexp' => '/Heurekabot-Feed/u' ], + [ 'name' => 'htdig', 'id' => 'htdig', 'regexp' => '/htdig\/([0-9.]*)/u' ], + [ 'name' => 'HTTPMon', 'id' => 'httpmon', 'regexp' => '/HTTPMon\/([0-9.]*)/u' ], + [ 'name' => 'HubPages', 'id' => 'hubpages', 'regexp' => '/HubPages V([0-9.]*)/u' ], + [ 'name' => 'iAsk Spider', 'id' => 'spider', 'regexp' => '/iaskspider\/([0-9.]*)/u' ], + [ 'name' => 'iAsk Spider', 'id' => 'spider', 'regexp' => '/iaskspider2/u' ], + [ 'name' => 'Ichiro', 'id' => 'ichiro', 'regexp' => '/ichiro\/([0-9.]*)/u' ], + [ 'name' => 'Internet Archive', 'id' => 'archive', 'regexp' => '/InternetArchive\/([0-9.]*)/u' ], + [ 'name' => 'JamesBOT', 'id' => 'crawler', 'regexp' => '/James BOT - WebCrawler/u' ], + [ 'name' => 'Jayde', 'id' => 'crawler', 'regexp' => '/Jayde Crawler./u' ], + [ 'name' => 'Kouio', 'id' => 'kouio', 'regexp' => '/kouio.com/u' ], + [ 'name' => 'Larbin', 'id' => 'larbin', 'regexp' => '/[Ll]arbin[\/_]([0-9.]*)/u' ], + [ 'name' => 'Linkedin Bot', 'id' => 'linkedin', 'regexp' => '/LinkedInBot\/([0-9.]*)/u' ], + [ 'name' => 'Linkdex Bot', 'id' => 'linkdex', 'regexp' => '/linkdexbot-mobile\/([0-9.]*)/u' ], + [ 'name' => 'Linkdex Bot', 'id' => 'linkdex', 'regexp' => '/linkdex.com\/v([0-9.]*)/u' ], + [ 'name' => 'Livedoor', 'id' => 'livedoor', 'regexp' => '/livedoor/u' ], + [ 'name' => 'LTX71', 'id' => 'ltx71', 'regexp' => '/ltx71/u' ], + [ 'name' => 'Magpie RSS', 'id' => 'magpie', 'regexp' => '/MagpieRSS\/([0-9.]*)/u' ], + [ 'name' => 'Mapian News Bot', 'id' => 'mapion', 'regexp' => '/mapion-news-bot\/([0-9.]*)/u' ], + [ 'name' => 'Microsoft Social Streams', 'id' => 'socialstreams', 'regexp' => '/Microsoft MSN SocialStreams Bot/u' ], + [ 'name' => 'Mixi', 'id' => 'mixi', 'regexp' => '/mixi-check\/([0-9.]*)/u' ], + [ 'name' => 'MnoGoSearch', 'id' => 'mnogo', 'regexp' => '/MnoGoSearch\/([0-9.]*)/u' ], + [ 'name' => 'Monitor.us', 'id' => 'monitor', 'regexp' => '/monitor.us/u' ], + [ 'name' => 'Naver Yeti', 'id' => 'yeti', 'regexp' => '/Yeti\/([0-9.]*)/u' ], + [ 'name' => 'Netcraft Survey Bot', 'id' => 'netcraft', 'regexp' => '/Netcraft Web Server Survey/u' ], + [ 'name' => 'Netvibes', 'id' => 'netvibes', 'regexp' => '/Netvibes/u' ], + [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Favicon Fetcher/u' ], + [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Feed Fetcher/u' ], + [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Feed Finder/u' ], + [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Page Fetcher/u' ], + [ 'name' => 'NewsGator', 'id' => 'newsgator', 'regexp' => '/NewsGator\/([0-9.]*)/u' ], + [ 'name' => 'NewsGator', 'id' => 'newsgator', 'regexp' => '/NewsGatorOnline\/([0-9.]*)/u' ], + [ 'name' => 'NewsGator FetchLinks', 'id' => 'newsgator', 'regexp' => '/NewsGator FetchLinks extension\/([0-9.]*)/u' ], + [ 'name' => 'OpenWebSpider', 'id' => 'spider', 'regexp' => '/OpenWebSpider v([0-9.]*)/u' ], + [ 'name' => 'OrangeBot', 'id' => 'orange', 'regexp' => '/OrangeBot-Collector\/([0-9.]*)/u' ], + [ 'name' => 'OrangeBot', 'id' => 'orange', 'regexp' => '/OrangeBot-Mobile/u' ], + [ 'name' => 'PagesInventory ', 'id' => 'pages', 'regexp' => '/PagesInventory/u' ], + [ 'name' => 'Picsearch bot', 'id' => 'psbot', 'regexp' => '/psbot-page/u' ], + [ 'name' => 'Pingdom', 'id' => 'pingdom', 'regexp' => '/Pingdom.com_bot_version_([0-9.]*)/u' ], + [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' => '/Pinterest\/([0-9.]+)( \(+|$)/u' ], + [ 'name' => 'PostRank', 'id' => 'postrank', 'regexp' => '/PostRank\/([0-9.]*)/u' ], + [ 'name' => 'PowerMapper', 'id' => 'crawler', 'regexp' => '/CrawlerProcess \(http:\/\/www\.PowerMapper\.com\) \/([0-9.]*)/u' ], + [ 'name' => 'Radian 6', 'id' => 'feed', 'regexp' => '/R6_FeedFetcher/u' ], + [ 'name' => 'Radian 6', 'id' => 'comment', 'regexp' => '/R6_CommentReader/u' ], + [ 'name' => 'RssBar', 'id' => 'rssbar', 'regexp' => '/RssBar\/([0-9.]*)/u' ], + [ 'name' => 'ROI Hunter', 'id' => 'hunter', 'regexp' => '/ROI Hunter/u' ], + [ 'name' => 'QuerySeekerSpider', 'id' => 'spider', 'regexp' => '/QuerySeekerSpider(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Quora Link Preview', 'id' => 'quora', 'regexp' => '/Quora Link Preview\/([0-9.]*)/u' ], + [ 'name' => 'SafeSearch Microdata', 'id' => 'safesearch', 'regexp' => '/SafeSearch microdata crawler/u' ], + [ 'name' => 'Scrapy', 'id' => 'scrapy', 'regexp' => '/Scrapy\/([0-9.]*)/u' ], + [ 'name' => 'ScreenerBot', 'id' => 'crawler', 'regexp' => '/ScreenerBot Crawler Beta ([0-9.]*)/u' ], + [ 'name' => 'Server Density', 'id' => 'monitor', 'regexp' => '/Server Density Service Monitoring/u' ], + [ 'name' => 'Seznam bot', 'id' => 'seznam', 'regexp' => '/SeznamBot|SklikBot|Seznam screenshot-generator/u' ], + [ 'name' => 'Seznam Email Proxy', 'id' => 'seznam', 'regexp' => '/SeznamEmailProxy/u' ], + [ 'name' => 'Seznam Zbozi.cz', 'id' => 'seznam', 'regexp' => '/Seznam-Zbozi-robot/u' ], + [ 'name' => 'ShopWiki', 'id' => 'shopwiki', 'regexp' => '/ShopWiki\/([0-9.]*)/u' ], + [ 'name' => 'SilverReader', 'id' => 'reader', 'regexp' => '/SilverReader\/([0-9.]*)/u' ], + [ 'name' => 'SimplePie', 'id' => 'simplepie', 'regexp' => '/SimplePie\/([0-9.]*)/u' ], + [ 'name' => 'Site24x7', 'id' => 'site24', 'regexp' => '/Site24x7/u' ], + [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/sogou spider/u' ], + [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou pic spider\/([0-9.]*)/u' ], + [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou inst spider\/([0-9.]*)/u' ], + [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou web spider\/([0-9.]*)/u' ], + [ 'name' => 'Sogou Mobile Spider', 'id' => 'sogou', 'regexp' => '/Sogou Mobile Spider([0-9.]*)/u' ], + [ 'name' => 'Sophora Linkchecker', 'id' => 'sophora', 'regexp' => '/Sophora Linkchecker/u' ], + [ 'name' => 'Soso Web Spider', 'id' => 'soso', 'regexp' => '/Sosospider\/([0-9.]*)/u' ], + [ 'name' => 'Soso Web Spider', 'id' => 'soso', 'regexp' => '/Sosospider/u' ], + [ 'name' => 'Soso Image Spider', 'id' => 'soso', 'regexp' => '/Sosoimagespider/u' ], + [ 'name' => 'SPDYCheck', 'id' => 'spdycheck', 'regexp' => '/SPDYCheck SPDY Protocol Tester/iu' ], + [ 'name' => 'Spinn3r', 'id' => 'spinn', 'regexp' => '/Spinn3r ([0-9.]*)/iu' ], + [ 'name' => 'Spiderlytics', 'id' => 'spider', 'regexp' => '/Spiderlytics\/([0-9.]*)/iu' ], + [ 'name' => 'StatusCake Error Detector', 'id' => 'detector', 'regexp' => '/StatusCake Error Detector/iu' ], + [ 'name' => 'Summify', 'id' => 'summify', 'regexp' => '/Summify\/([0-9.]*)/u' ], + [ 'name' => 'TelegramBot', 'id' => 'telegram', 'regexp' => '/TelegramBot/u' ], + [ 'name' => 'Twisted PageGetter', 'id' => 'twisted', 'regexp' => '/Twisted PageGetter/u' ], + [ 'name' => 'Twitterbot', 'id' => 'twitter', 'regexp' => '/Twitterbot\/([0-9.]*)/u' ], + [ 'name' => 'Tiny Tiny RSS', 'id' => 'tiny', 'regexp' => '/Tiny Tiny RSS\/([0-9.]*)/u' ], + [ 'name' => 'TLSProber', 'id' => 'tlsprober', 'regexp' => '/TLSProber\/([0-9.]*)/u' ], + [ 'name' => 'Typhoeus', 'id' => 'typhoeus', 'regexp' => '/Typhoeus/u' ], + [ 'name' => 'Vagabondo', 'id' => 'vagabondo', 'regexp' => '/Vagabondo\/([0-9.]*)/u' ], + [ 'name' => 'Voilabot', 'id' => 'voila', 'regexp' => '/Voila[Bb]ot/u' ], + [ 'name' => 'VocusBot', 'id' => 'vocus', 'regexp' => '/VocusBot ([0-9.]*)/u' ], + [ 'name' => 'Vodafone mCrawler', 'id' => 'mcrawler', 'regexp' => '/Vodafone mCrawler/u' ], + [ 'name' => 'W3Bot', 'id' => 'w3bot', 'regexp' => '/W3Bot ([0-9.]*)/u' ], + [ 'name' => 'W3C CSS Validator', 'id' => 'jigsaw', 'regexp' => '/Jigsaw\/([0-9.]*)/u' ], + [ 'name' => 'W3C Internationalization Checker', 'id' => 'w3c', 'regexp' => '/W3C_I18n-Checker\/([0-9.]*)/u' ], + [ 'name' => 'W3C Line Mode', 'id' => 'w3c', 'regexp' => '/W3CLineMode\/([0-9.]*)/u' ], + [ 'name' => 'W3C Link Checker', 'id' => 'w3c', 'regexp' => '/W3C-checklink\/([0-9.]*)/u' ], + [ 'name' => 'W3C Markup Validator', 'id' => 'w3c', 'regexp' => '/W3C_Validator\/([0-9.]*)/u' ], + [ 'name' => 'W3C MobileOK Checker', 'id' => 'w3c', 'regexp' => '/W3C-mobileOK\/DDC-([0-9.]*)/u' ], + [ 'name' => 'W3C Multipage Validator', 'id' => 'w3c', 'regexp' => '/W3C_Multipage_Validator\/([0-9.]*)/u' ], + [ 'name' => 'W3C Robot', 'id' => 'w3c', 'regexp' => '/W3CRobot\/([0-9.]*)/u' ], + [ 'name' => 'W3C Unified Validator', 'id' => 'w3c', 'regexp' => '/W3C_Unicorn\/([0-9.]*)/u' ], + [ 'name' => 'W3C Validator.nu', 'id' => 'validator', 'regexp' => '/Validator.nu\//u' ], + [ 'name' => 'Wayback Archive', 'id' => 'wayback', 'regexp' => '/waybackarchive.org\/([0-9.]*)/u' ], + [ 'name' => 'WebbCrawler', 'id' => 'crawler', 'regexp' => '/WebbCrawler ([0-9.]*)/u' ], + [ 'name' => 'WebIndexer', 'id' => 'webindexer', 'regexp' => '/WebIndexer\//u' ], + [ 'name' => 'WordPress', 'id' => 'wordpress', 'regexp' => '/WordPress\/([0-9.]*)/u' ], + [ 'name' => 'WordPress.com', 'id' => 'wordpress', 'regexp' => '/WordPress\.com; http/u' ], + [ 'name' => 'WordPress Jetpack', 'id' => 'wordpress', 'regexp' => '/Jetpack by WordPress\.com/u' ], + [ 'name' => 'WWW Mechanize', 'id' => 'mechanize', 'regexp' => '/WWW-Mechanize\/([0-9.]*)/u' ], + [ 'name' => 'Xerka WebBot', 'id' => 'xerka', 'regexp' => '/Xerka WebBot v([0-9.]*)/u' ], + [ 'name' => 'XML Sitemaps Generator', 'id' => 'sitemap', 'regexp' => '/XML-Sitemaps\/([0-9.]*)/u' ], + [ 'name' => 'XMLSitemapGenerator', 'id' => 'sitemap', 'regexp' => '/XmlSitemapGenerator/u' ], + [ 'name' => 'YaCy Bot', 'id' => 'yacy', 'regexp' => '/yacy(?:\/|\s|bot)/u' ], + [ 'name' => 'Yandex Anti Virus', 'id' => 'yandex', 'regexp' => '/YandexAntivirus\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Blogs', 'id' => 'yandex', 'regexp' => '/YandexBlogs\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Bot', 'id' => 'yandex', 'regexp' => '/YandexBot\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Direct', 'id' => 'yandex', 'regexp' => '/YandexDirect\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Favicons', 'id' => 'yandex', 'regexp' => '/YandexFavicons\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Image Resizer', 'id' => 'yandex', 'regexp' => '/YandexImageResizer\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Images', 'id' => 'yandex', 'regexp' => '/YandexImages\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Metrika', 'id' => 'yandex', 'regexp' => '/YandexMetrika\/([0-9.]*)/u' ], + [ 'name' => 'Yandex News', 'id' => 'yandex', 'regexp' => '/YandexNews\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Newslinks', 'id' => 'yandex', 'regexp' => '/YandexNewslinks(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Yahoo! Ad Monitoring', 'id' => 'yahoo', 'regexp' => '/Yahoo Ad monitoring/u' ], + [ 'name' => 'Yahoo! Blogs', 'id' => 'yahoo', 'regexp' => '/Yahoo-Blogs\/v([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Cache System', 'id' => 'yahoo', 'regexp' => '/YahooCacheSystem/u' ], + [ 'name' => 'Yahoo! Feed Seeker', 'id' => 'yahoo', 'regexp' => '/YahooFeedSeeker\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Feed Seeker', 'id' => 'yahoo', 'regexp' => '/YahooFeedSeeker Testing\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Image', 'id' => 'yahoo', 'regexp' => '/Yahoo-MMCrawler\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Link Expander', 'id' => 'yahoo', 'regexp' => '/Yahoo:LinkExpander/u' ], + [ 'name' => 'Yahoo! Link Preview', 'id' => 'yahoo', 'regexp' => '/Yahoo Link Preview/u' ], + [ 'name' => 'Yahoo! Video', 'id' => 'yahoo', 'regexp' => '/Yahoo-MMAudVid\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Mindset', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Mindset/u' ], + [ 'name' => 'Yahoo! Product Search', 'id' => 'yahoo', 'regexp' => '/YahooSeeker\/ProductSearch([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Slurp', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Slurp\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Slurp', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Slurp/u' ], + [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/YahooSeeker(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/YahooSeeker-Testing\/v([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/yahooseeker-jp-mobile/u' ], + [ 'name' => 'Yahoo! Site Checker', 'id' => 'y\!j', 'regexp' => '/Y\!J SiteChecker/u' ], + [ 'name' => 'Yahoo! Pipes', 'id' => 'yahoo', 'regexp' => '/Yahoo Pipes ([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Video Search', 'id' => 'yahoo', 'regexp' => '/YahooVideoSearch/u' ], + [ 'name' => 'Yahoo! Japan', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Japan/u' ], + [ 'name' => 'Yahoo! Japan', 'id' => 'y\!j', 'regexp' => '/(^|\(compatible; )Y\!J-/u' ], + + [ 'name' => 'Inktomi Slurp', 'id' => 'slurp', 'regexp' => '/Slurp\/([0-9.]*)/u' ], + [ 'name' => 'Inktomi Slurp', 'id' => 'slurp', 'regexp' => '/Slurp\.so\/([0-9.]*)/u' ], + + /* Generic bots */ + [ 'name' => 'Apache Httpd', 'id' => 'httpclient', 'regexp' => '/Apache-HttpClient(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Apache Jakarta', 'id' => 'httpclient', 'regexp' => '/Jakarta Commons-HttpClient(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Apache Nutch', 'id' => 'nutch', 'regexp' => '/\/Nutch-([0-9.]*)/u' ], + [ 'name' => 'Apache Nutch', 'id' => 'nutch', 'regexp' => '/Nutch(?:CVS|Org)\/([0-9.]*)/u' ], + [ 'name' => 'Apache Synapse', 'id' => 'synapse', 'regexp' => '/compatible; Synapse/u' ], + [ 'name' => 'Borland Delphi', 'id' => 'indy', 'regexp' => '/Indy Library/u' ], + [ 'name' => 'Wget', 'id' => 'wget', 'regexp' => '/Wget\/([0-9.]*)/u' ], + [ 'name' => 'Curl', 'id' => 'curl', 'regexp' => '/^curl\/([0-9.]*)/u' ], + + [ 'name' => 'Go', 'id' => 'package', 'regexp' => '/Go [0-9\.]+ package http/u' ], + [ 'name' => 'Java', 'id' => 'java', 'regexp' => '/^Java\/([0-9.]*)/u' ], + [ 'name' => 'Perl', 'id' => 'simple', 'regexp' => '/LWP::Simple\//u' ], + [ 'name' => 'Perl', 'id' => 'libwww', 'regexp' => '/libwww-perl\//u' ], + [ 'name' => 'Perl', 'id' => 'lwp', 'regexp' => '/lwp-trivial\//u' ], + [ 'name' => 'Python', 'id' => 'urllib', 'regexp' => '/Python-urllib/u' ], + [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/ PHP\/([0-9.]*)/u' ], + [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/^PHP/u' ], + [ 'name' => 'PHP', 'id' => 'pear', 'regexp' => '/PEAR HTTP_Request class/u' ], + [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/CakePHP/u' ], + [ 'name' => 'PHP', 'id' => 'zend', 'regexp' => '/Zend_Http_Client/u' ], + [ 'name' => 'Ruby', 'id' => 'ruby', 'regexp' => '/^Ruby/u' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-browsers.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-browsers.php new file mode 100644 index 0000000..346034a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-browsers.php @@ -0,0 +1,253 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants; + +Applications::$BROWSERS = [ + + Constants\BrowserType::BROWSER => [ + + /* Desktop browsers */ + [ 'name' => '115 Browser', 'id' => '115', 'regexp' =>'/115Browser\/([0-9.]*)/u' ], + [ 'name' => '115 Chrome', 'id' => '115', 'regexp' =>'/115Chrome\/([0-9.]*)/u' ], + [ 'name' => '126 Browser', 'id' => '126', 'regexp' =>'/126BROWSER/u' ], + [ 'name' => '2345 Explorer', 'id' => '2345', 'regexp' =>'/2345Explorer\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => '2345 Explorer', 'id' => '2345', 'regexp' =>'/2345Explorer v([0-9.]*)/u', 'details' => 3 ], + [ 'name' => '2345 Chrome', 'id' => '2345', 'regexp' =>'/2345chrome v([0-9.]*)/u', 'details' => 3 ], + [ 'name' => '360 Extreme Explorer', 'id' => 'qihu', 'regexp' =>'/QIHU 360EE/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => '360 Safe Explorer', 'id' => 'qihu', 'regexp' =>'/QIHU 360SE/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => '7Star', 'id' => '7star', 'regexp' =>'/7Star\/([0-9.]*)/u' ], // see: http://www.qixing123.com + [ 'name' => 'ABrowse', 'id' => 'abrowse', 'regexp' =>'/A[Bb]rowse ([0-9.]*)/u' ], // browser for the Syllable OS + [ 'name' => 'Abrowser', 'id' => 'abrowse', 'regexp' =>'/Abrowser\/([0-9.]*)/u' ], // unbranded version of Firefox + [ 'name' => 'Acorn Browse', 'id' => 'acorn', 'regexp' =>'/Acorn Browse ([0-9.]+)/u' ], + [ 'name' => 'Acorn Browse', 'id' => 'acorn', 'regexp' =>'/Acorn Phoenix ([0-9.]+)/u' ], + [ 'name' => 'Acoo Browser', 'id' => 'acoo', 'regexp' =>'/Acoo Browser/u' ], + [ 'name' => 'AOL Desktop', 'id' => 'aol', 'regexp' =>'/AOL ([0-9.]*); AOLBuild/i' ], + [ 'name' => 'AOL Browser', 'id' => 'america', 'regexp' =>'/America Online Browser (?:[0-9.]*); rev([0-9.]*);/i' ], + [ 'name' => 'Arachne', 'id' => 'arachne', 'regexp' =>'/xChaos_Arachne\/[0-9]\.([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: www.glennmcc.org + [ 'name' => 'Arora', 'id' => 'arora', 'regexp' =>'/[Aa]rora\/([0-9.]*)/u' ], // see: www.arora-browser.org + [ 'name' => 'AWeb', 'id' => 'aweb', 'regexp' =>'/Amiga-AWeb(?:\/([0-9.]*))?/u' ], + [ 'name' => 'AvantGo', 'id' => 'avant', 'regexp' =>'/AvantGo ([0-9.]+)/u' ], + [ 'name' => 'Avant Browser', 'id' => 'avant', 'regexp' =>'/Avant Browser/u' ], + [ 'name' => 'Avant Browser', 'id' => 'avant', 'regexp' =>'/Avant TriCore/u' ], + [ 'name' => 'Avast SafeZone', 'id' => 'asw', 'regexp' =>'/ASW\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Aviator', 'id' => 'aviator', 'regexp' =>'/Aviator\/([0-9.]*)/u', 'details' => 1 ], // see: https://github.com/WhiteHatSecurity/Aviator + [ 'name' => 'Baidu Browser', 'id' => 'flyflow', 'regexp' =>'/FlyFlow\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Baidu Browser', 'id' => 'bdbrowser', 'regexp' =>'/bdbrowser\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Browser', 'id' => 'bdbrowser', 'regexp' =>'/bdbrowser_i18n\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Spark', 'id' => 'bdspark', 'regexp' =>'/BDSpark\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Beamrise', 'id' => 'beamrise', 'regexp' =>'/Beamrise\/([0-9.]*)/u' ], // see: http://beamrise.com + [ 'name' => 'Black Wren', 'id' => 'blackwren', 'regexp' =>'/BlackWren\/([0-9.]*)/u', 'details' => 2 ], // see: https://github.com/conmarap/jetbrowser + [ 'name' => 'Brave', 'id' => 'brave', 'regexp' =>'/brave\/([0-9.]*)/u' ], + [ 'name' => 'Byffox', 'id' => 'byffox', 'regexp' =>'/Byffox\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Camino', 'id' => 'camino', 'regexp' =>'/Camino\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Canure', 'id' => 'canure', 'regexp' =>'/Canure\/([0-9.]*)/u', 'details' => 3 ], // see: http://canure.weebly.com/index.html + [ 'name' => 'Charon', 'id' => 'charon', 'regexp' =>'/Charon/' ], // see: http://www.vitanuova.com/inferno/man/1/charon.html + [ 'name' => 'ChromePlus', 'id' => 'chromeplus', 'regexp' =>'/ChromePlus(?:\/([0-9.]*))?$/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'CometBird', 'id' => 'cometbird', 'regexp' =>'/CometBird\/([0-9.]*)/u' ], // see: http://www.cometbird.com + [ 'name' => 'Comodo Dragon', 'id' => 'comodo', 'regexp' =>'/Comodo_Dragon\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Comodo Dragon', 'id' => 'dragon', 'regexp' =>'/Dragon\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Comodo IceDragon', 'id' => 'dragon', 'regexp' =>'/IceDragon\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Conkeror', 'id' => 'conkeror', 'regexp' =>'/[Cc]onkeror\/([0-9.]*)/u' ], + [ 'name' => 'CoolNovo', 'id' => 'coolnovo', 'regexp' =>'/(?:CoolNovo|CoolNovoChromePlus)\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Cunaguaro', 'id' => 'cunaguaro', 'regexp' =>'/Cunaguaro\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Cyberfox', 'id' => 'cyberfox', 'regexp' =>'/Cyberfox\/([0-9.]*)/u', 'details' => 2 ], // see: https://cyberfox.8pecxstudios.com + [ 'name' => 'Daedalus', 'id' => 'daedalus', 'regexp' =>'/Daedalus ([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Dillo', 'id' => 'dillo', 'regexp' =>'/Dillo\/([0-9.]*)/u' ], // see: http://www.dillo.org + [ 'name' => 'Doga Rhodonit', 'id' => 'rhodonit', 'regexp' =>'/DogaRhodonit/u' ], + [ 'name' => 'EudoraWeb', 'id' => 'eudoraweb', 'regexp' =>'/EudoraWeb ([0-9.]*)/u' ], + [ 'name' => 'Flock', 'id' => 'flock', 'regexp' =>'/Flock\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Galeon', 'id' => 'galeon', 'regexp' =>'/Galeon\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'GNOME Web', 'id' => 'epiphany', 'regexp' =>'/Epiphany\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'IBrowse', 'id' => 'ibrowse', 'regexp' =>'/IBrowse[\/ ]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'iCab', 'id' => 'icab', 'regexp' =>'/iCab(?: J)?[\/ ](?:Pre)?([0-9.]*)/u' ], + [ 'name' => 'Iceape', 'id' => 'iceape', 'regexp' =>'/Iceape\/([0-9.]*)/u' ], + [ 'name' => 'IceCat', 'id' => 'icecat', 'regexp' =>'/IceCat[ \/]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.gnu.org/software/gnuzilla/ + [ 'name' => 'Iceweasel', 'id' => 'iceweasel', 'regexp' =>'/Iceweasel\/([0-9.]*)/iu', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Iridium', 'id' => 'iridium', 'regexp' =>'/Iridium\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.srware.net/en/software_srware_iron.php + [ 'name' => 'Iron', 'id' => 'iron', 'regexp' =>'/Iron\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.srware.net/en/software_srware_iron.php + [ 'name' => 'Kazehakase', 'id' => 'kazehakase', 'regexp' =>'/Kazehakase\/([0-9.]*)/u' ], // see: http://kazehakase.osdn.jp + [ 'name' => 'KChrome', 'id' => 'kchrome', 'regexp' =>'/KChrome\/([0-9.]*)/u', 'details' => 3 ], // see: http://www.kchrome.com + [ 'name' => 'K-Meleon', 'id' => 'meleon', 'regexp' =>'/K-Meleon\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://kmeleonbrowser.org + [ 'name' => 'LieBao', 'id' => 'lbbrowser', 'regexp' =>'/LBBROWSER/u' ], // see: http://www.liebao.cn + [ 'name' => 'Lobo', 'id' => 'lobo', 'regexp' =>'/Lobo\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://sourceforge.net/projects/xamj/files/Lobo%20Browser/ + [ 'name' => 'Lunascape', 'id' => 'lunascape', 'regexp' =>'/ Lunascape[\/| ]([0-9.]*)/u', 'details' => 3 ], // see: http://www.lunascape.tv + [ 'name' => 'Naenara', 'id' => 'naenara', 'regexp' =>'/NaenaraBrowser\/([0-9.]*)/u', 'details' => 2 ], // Firefox based browser used with Red Star OS + [ 'name' => 'Maxthon', 'id' => 'mxbrowser', 'regexp' =>'/MxBrowser\/([0-9.]*)/u' ], + [ 'name' => 'Maxthon', 'id' => 'mxbrowser', 'regexp' =>'/MxBrowser-iPhone\/([0-9.]*)/u' ], + [ 'name' => 'MixShark', 'id' => 'mixshark', 'regexp' =>'/MixShark\/([0-9.]*)/u' ], // see: http://terbaddo.free.fr/mixshark.php + [ 'name' => 'mlbrowser', 'id' => 'mlbrowser', 'regexp' =>'/mlbrowser/u' ], // see: https://github.com/Topguy/mlbrowser + [ 'name' => 'NetPositive', 'id' => 'netpositive', 'regexp' =>'/NetPositive\/([0-9.]*)/u' ], + [ 'name' => 'Origyn', 'id' => 'origyn', 'regexp' =>'/Origyn Web Browser/u' ], + [ 'name' => 'Odyssey', 'id' => 'owb', 'regexp' =>'/OWB\/([0-9.]*)/u' ], + [ 'name' => 'Orca', 'id' => 'orca', 'regexp' =>'/Orca\/([0-9.]*)/u' ], + [ 'name' => 'Oregano', 'id' => 'oregano', 'regexp' =>'/Oregano ([0-9.]*)/u' ], // see: http://www.xat.nl/en/riscos/sw/oregano/ + [ 'name' => 'Otter', 'id' => 'otter', 'regexp' =>'/Otter(?: Browser)?\/([0-9.]*)/u' ], // see: https://otter-browser.org + [ 'name' => 'Pale Moon', 'id' => 'palemoon', 'regexp' =>'/Pale[mM]oon\/([0-9.]*)/u' ], // see: https://www.palemoon.org + [ 'name' => 'Qihoo 360', 'id' => 'qihu', 'regexp' =>'/QIHU THEWORLD/u' ], + [ 'name' => 'QtWeb', 'id' => 'qtweb', 'regexp' =>'/QtWeb Internet Browser\/([0-9.]*)/u' ], + [ 'name' => 'QupZilla', 'id' => 'qupzilla', 'regexp' =>'/QupZilla\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'rekonq', 'id' => 'rekonq', 'regexp' =>'/rekonq(?:\/([0-9.]*))?/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Ryouko', 'id' => 'ryouko', 'regexp' =>'/Ryouko\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/foxhead128/ryouko + [ 'name' => 'SaaYaa Explorer', 'id' => 'saayaa', 'regexp' =>'/SaaYaa/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Sleipnir', 'id' => 'sleipnir', 'regexp' =>'/Sleipnir\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Sogou Explorer', 'id' => 'metasr', 'regexp' =>'/SE 2.X MetaSr/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Stainless', 'id' => 'stainless', 'regexp' =>'/Stainless\/([0-9.]*)/u' ], // see: http://www.stainlessapp.com + [ 'name' => 'SunChrome', 'id' => 'sunchrome', 'regexp' =>'/SunChrome\/([0-9.]*)/u' ], + [ 'name' => 'Superbird', 'id' => 'superbird', 'regexp' =>'/Super[Bb]ird\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Swing Browser', 'id' => 'swing', 'regexp' =>'/Swing(?:\(And\))?\/([0-9.]*)/u', 'details' => 3 ], // see: http://swing-browser.com + [ 'name' => 'Tencent Traveler', 'id' => 'tencent', 'regexp' =>'/TencentTraveler ([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'TenFourFox', 'id' => 'tenfourfox', 'regexp' =>'/TenFourFox\//u' ], + [ 'name' => 'The World', 'id' => 'theworld', 'regexp' =>'/TheWorld(?: ([0-9.]*))?/u' ], + [ 'name' => 'Tungsten Browser', 'id' => 'tungsten', 'regexp' =>'/TungstenBrowser\/([0-9.]*)/u' ], + [ 'name' => 'Vivaldi', 'id' => 'vivaldi', 'regexp' =>'/Vivaldi\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Voyager', 'id' => 'voyager', 'regexp' =>'/AmigaVoyager\/([0-9.]*)/u' ], + [ 'name' => 'Waterfox', 'id' => 'waterfox', 'regexp' =>'/Waterfox\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Yandex Browser', 'id' => 'yabrowser', 'regexp' =>'/YaBrowser\/([0-9.]*)/u', 'details' => 2 ], + + /* Mobile browsers */ + [ 'name' => '1Browser', 'id' => '1password', 'regexp' =>'/1Password\/([0-9.]*)/u' ], + [ 'name' => '2345 Browser', 'id' => '2345', 'regexp' =>'/Mb2345Browser\/([0-9.]*)/u' ], + [ 'name' => '3G Explorer', 'id' => '3g explorer', 'regexp' =>'/3G Explorer\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => '4G Explorer', 'id' => '4g explorer', 'regexp' =>'/4G Explorer\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Atomic', 'id' => 'atomiclite', 'regexp' =>'/AtomicLite\/([0-9.]*)/u' ], // see: http://atomicwebbrowser.com + [ 'name' => 'AU', 'id' => 'au', 'regexp' =>'/(?:^| )AU(?:.Browser)?\/([0-9.]+)/u' ], + [ 'name' => 'Awakening', 'id' => 'awakening', 'regexp' =>'/Awakening Browser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Baidu Browser', 'id' => 'baidu', 'regexp' =>'/M?BaiduBrowser\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Browser', 'id' => 'bdmobile', 'regexp' =>'/BdMobile\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Browser', 'id' => 'bidu', 'regexp' =>'/BIDUBrowser[ \/]([0-9.]*)/u' ], + [ 'name' => 'Baidu Browser', 'id' => 'baidu', 'regexp' =>'/BaiduHD\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Baidu Browser', 'id' => 'baiduboxapp', 'regexp' =>'/baiduboxapp\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Browser', 'id' => 'browser', 'regexp' =>'/ browser\/([0-9.]*) \(; P1/i' ], + [ 'name' => 'Blazer', 'id' => 'blazer', 'regexp' =>'/Blazer\/([0-9.]*)/u' ], + [ 'name' => 'CM Browser', 'id' => 'acheetahi', 'regexp' =>'/ACHEETAHI\//u' ], + [ 'name' => 'Cornowser', 'id' => 'cornowser', 'regexp' =>'/Cornowser\/([0-9.]*)/u' ], + [ 'name' => 'Cool Market', 'id' => 'coolmarket', 'regexp' =>'/CoolMarket\/([0-9.]*)/u' ], + [ 'name' => 'CuteBrowser', 'id' => 'cute', 'regexp' =>'/CuteBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Digia @Web', 'id' => 'digia', 'regexp' =>'/Digia @Web\/([0-9.]*)/u' ], + [ 'name' => 'Doris', 'id' => 'doris', 'regexp' =>'/Doris\/([0-9.]*)/u' ], + [ 'name' => 'Dorothy', 'id' => 'doroty', 'regexp' =>'/Dorothy$/u' ], + [ 'name' => 'EMOBILE Browser', 'id' => 'www browser', 'regexp' =>'/WWW Browser\/ver([0-9.]*)/u' ], + [ 'name' => 'EUI Browser', 'id' => 'eui', 'regexp' =>'/EUI Browser\/[^0-9\s]*([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Go.Web', 'id' => 'go\.web', 'regexp' =>'/Go\.Web\/([0-9.]*)/u' ], // used on early Blackberry, by GoAmerica + [ 'name' => 'Helium', 'id' => 'helium', 'regexp' =>'/HeliumMobileBrowser\/([0-9.]*)/u' ], + [ 'name' => 'Huohou Browser', 'id' => 'huohoubrowser', 'regexp' =>'/HuohouBrowser\/([0-9.]*)/u' ], + [ 'name' => 'iCab', 'id' => 'icab', 'regexp' =>'/iCabMobile\/([0-9.]*)/u' ], + [ 'name' => 'iLunascape', 'id' => 'lunascape', 'regexp' =>'/iLunascape\/([0-9.]*)/u', 'details' => 3 ], // see: http://www.lunascape.tv + [ 'name' => 'InternetSurfboard', 'id' => 'surfboard', 'regexp' =>'/InternetSurfboard\/([0-9.]*)/u' ], + [ 'name' => 'iSurf', 'id' => 'isurf', 'regexp' =>'/iSurf version \/v([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Jig Browser', 'id' => 'jig browser', 'regexp' =>'/jig browser(?: web| core|9i?)?;? ?([0-9.]+)?/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Jumanji', 'id' => 'jumanji', 'regexp' =>'/jumanji/u' ], // see: jumanji browser ubuntu + [ 'name' => 'Kiosk', 'id' => 'kiosk', 'regexp' =>'/Kiosk\/([0-9.]*)/u' ], // see: http://www.kioskbrowser.net + [ 'name' => 'LeBrowser', 'id' => 'lebrowser', 'regexp' =>'/LeBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'LieBaoFast', 'id' => 'liebao', 'regexp' =>'/LieBaoFast\/([0-9.]*)/u' ], // see: http://www.liebao.cn + [ 'name' => 'MaCross Mobile', 'id' => 'macross', 'regexp' =>'/MaCross\/([0-9.]*)/u' ], + [ 'name' => 'Mammoth', 'id' => 'mammoth', 'regexp' =>'/Mammoth\/([0-9.]*)/u' ], // see: https://itunes.apple.com/cn/app/meng-ma-liu-lan-qi/id403760998?mt=8 + [ 'name' => 'mCent Browser', 'id' => 'mcent', 'regexp' =>'/mCent\/([0-9.]*)/u' ], + [ 'name' => 'Motorola Internet Browser', 'id' => 'mib', 'regexp' =>'/MIB\/([0-9.]*)/u' ], + [ 'name' => 'Motorola Internet Browser', 'id' => 'mib', 'regexp' =>'/MIB([0-9.]+)\//u' ], + [ 'name' => 'Motorola Internet Browser', 'id' => 'cmcs', 'regexp' =>'/Browser\/CMCS([0-9.]*)/u' ], + [ 'name' => 'Motorola WebKit', 'id' => 'motorola', 'regexp' =>'/MotorolaWebKit(?:\/([0-9.]*))?/u', 'details' => 3 ], + [ 'name' => 'NetFront Life Browser', 'id' => 'netfrontlife', 'regexp' =>'/NetFrontLifeBrowser\/([0-9.]*)/u' ], + [ 'name' => 'OneBrowser', 'id' => 'onebrowser', 'regexp' =>'/OneBrowser\/([0-9.]*)/u' ], + [ 'name' => 'PocketLink', 'id' => 'plink', 'regexp' =>'/PLink ([0-9.]+)/iu', 'details' => 2 ], + [ 'name' => 'Polaris', 'id' => 'polaris', 'regexp' =>'/Polaris[\/ ]v?([0-9.]*)/iu', 'details' => 2 ], + [ 'name' => 'Polaris', 'id' => 'polaris', 'regexp' =>'/POLARIS([0-9.]+)/u', 'details' => 2 ], + [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Open[Ww]ave\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Openwave Mobile Browser ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Browser\/OpenWave([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'up', 'regexp' =>'/UP\. ?Browser(?:\/([a-z0-9.]*))?/iu', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'km', 'regexp' =>'/KM\.Browser\/([0-9.]+)/iu', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'up', 'regexp' =>'/UP\/([0-9.]+)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Quark Browser', 'id' => 'quark', 'regexp' =>'/Quark\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'SEMC Browser', 'id' => 'semc', 'regexp' =>'/SEMC-Browser\/([0-9.]*)/u' ], + [ 'name' => 'STNC HitchHiker' , 'id' => 'stnc', 'regexp' =>'/STNC-WTL\/[0-9.]*/u' ], + [ 'name' => 'Sogou Mobile', 'id' => 'sogou', 'regexp' =>'/SogouMobileBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Swing Browser', 'id' => 'swing', 'regexp' =>'/Swing\(And\)\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Symphony', 'id' => 'symphony', 'regexp' =>'/Symphony ([0-9.]+)$/u' ], + [ 'name' => 'TinY', 'id' => 'ucpro', 'regexp' =>'/ucpro\/([0-9.]+)/iu' ], + [ 'name' => 'WebLite', 'id' => 'weblite', 'regexp' =>'/WebLite\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + + /* Television browsers */ + [ 'name' => 'AltiBrowser', 'id' => 'alti', 'regexp' =>'/AltiBrowser\/([0-9.]*)/i' ], + [ 'name' => 'Aplix', 'id' => 'aplix', 'regexp' =>'/Aplix_SANYO_browser\/([0-9](?:.[0-9.]+)?)/u' ], // browser for the Sega Saturn + [ 'name' => 'AwoX', 'id' => 'awox', 'regexp' =>'/AwoX(?:\/([0-9.]*))? Browser/i' ], + [ 'name' => 'Isis', 'id' => 'browserserver', 'regexp' =>'/BrowserServer/u' ], + [ 'name' => 'Isis', 'id' => 'isis', 'regexp' =>'/ISIS\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Spyglass', 'id' => 'spyglass', 'regexp' =>'/Spyglass ([0-9.]+); OpenTV/u' ], + [ 'name' => 'Oregan Browser', 'id' => 'oregan', 'regexp' =>'/OreganMediaBrowser(?:\/([0-9.]*))?/u', 'details' => 2 ], + [ 'name' => 'Viera Browser', 'id' => 'viera', 'regexp' =>'/Viera\/([0-9.]*)/u' ], + [ 'name' => 'Zetakey', 'id' => 'zetakey', 'regexp' =>'/Zetakey Webkit\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ], + [ 'name' => 'Zetakey', 'id' => 'zetakey', 'regexp' =>'/Zetakey\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ], + + /* Gaming browsers */ + [ 'name' => 'Aplix', 'id' => 'aplix', 'regexp' =>'/Aplix_SEGASATURN_browser\/([0-9](?:.[0-9.]+)?)/u' ], // browser for the Sega Saturn + [ 'name' => 'Bunjalloo', 'id' => 'bunjalloo', 'regexp' =>'/Bunjalloo\/([0-9.]*)/u' ], // browser for the Nintento DS + [ 'name' => 'Nintendo Web Framework', 'id' => 'nwf', 'regexp' =>'/NWF\/([0-9.]*)/u', 'details' => 2 ], // browser for the Sega Dreamcast + [ 'name' => 'Nuanti Meta', 'id' => 'nuanti', 'regexp' =>'/Nuanti(?:Meta)?\/([0-9.]*)/u' ], // browser for the Playstation + + /* Other browsers */ + [ 'name' => 'Wear Internet Browser','id' => 'wib', 'regexp' =>'/WIB\/([0-9.]*)/u' ], + + /* PDF renderers */ + [ 'name' => 'Prince', 'id' => 'prince', 'regexp' =>'/Prince\/([0-9.]*)/u' ], + + /* Unsorted */ + [ 'name' => 'Demobrowser', 'id' => 'demobrowser', 'regexp' =>'/demobrowser\/([0-9.]*)/u' ], + [ 'name' => 'Dooble', 'id' => 'dooble', 'regexp' =>'/Dooble(?:\/([0-9.]*))?/u' ], // see: http://dooble.sourceforge.net + [ 'name' => 'DWB', 'id' => 'dwb', 'regexp' =>'/dwb(?:-hg)?(?:\/([0-9.]*))?/u' ], + [ 'name' => 'EVM Browser', 'id' => 'evm', 'regexp' =>'/EVMBrowser\/([0-9.]*)/u' ], + [ 'name' => 'FireWeb', 'id' => 'fireweb', 'regexp' =>'/FireWeb\/([0-9.]*)/u' ], + [ 'name' => 'Hive Explorer', 'id' => 'hive', 'regexp' =>'/HiveE/u' ], + [ 'name' => 'Intermec Browser', 'id' => 'intermec', 'regexp' =>'/Intermec\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Phantom', 'id' => 'phantom', 'regexp' =>'/Phantom\/V([0-9.]*)/u' ], + [ 'name' => 'QtCreator', 'id' => 'qt', 'regexp' =>'/QtCreator\/([0-9.]*)/u' ], + [ 'name' => 'QtQmlViewer', 'id' => 'qt', 'regexp' =>'/QtQmlViewer/u' ], + [ 'name' => 'QtMiniBrowser', 'id' => 'qt', 'regexp' =>'/QtMiniBrowser\/([0-9.]*)/u' ], + [ 'name' => 'QtTestBrowser', 'id' => 'qt', 'regexp' =>'/QtTestBrowser\/([0-9.]*)/u' ], + [ 'name' => 'Roccat', 'id' => 'roccat', 'regexp' =>'/Roccat\/([0-9]\.[0-9.]*)/u' ], + [ 'name' => 'Raven for Mac', 'id' => 'raven', 'regexp' =>'/Raven for Mac\/([0-9.]*)/u' ], + [ 'name' => 'RockMelt', 'id' => 'rockmelt', 'regexp' =>'/RockMelt\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Scope', 'id' => 'scope', 'regexp' =>'/Scope\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.programmer.co.jp/scope.shtml + [ 'name' => 'SlimBoat', 'id' => 'slim', 'regexp' =>'/SlimBoat\/([0-9.]*)/u' ], + [ 'name' => 'SlimBrowser', 'id' => 'slim', 'regexp' =>'/SlimBrowser(?:\/([0-9.]*))?/u' ], + [ 'name' => 'SMBrowser', 'id' => 'smbrowser', 'regexp' =>'/SMBrowser/u' ], + [ 'name' => 'Snowshoe', 'id' => 'snowshoe', 'regexp' =>'/Snowshoe\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Sputnik', 'id' => 'sputnik', 'regexp' =>'/Sputnik\/([0-9.]*)/iu', 'details' => 3 ], + [ 'name' => 'Surf', 'id' => 'surf', 'regexp' =>'/Surf\/([0-9.]*)/u' ], + [ 'name' => 'TaoBrowser', 'id' => 'tao', 'regexp' =>'/TaoBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'TaomeeBrowser', 'id' => 'tao', 'regexp' =>'/TaomeeBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'TazWeb', 'id' => 'taz', 'regexp' =>'/TazWeb/u' ], + [ 'name' => 'Uzbl', 'id' => 'uzbl', 'regexp' =>'/^Uzbl/u' ], + [ 'name' => 'Villanova', 'id' => 'villanova', 'regexp' =>'/Villanova\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Vimb', 'id' => 'vimb', 'regexp' =>'/vimb\/([0-9.]*)/u' ], + [ 'name' => 'WADA Browser', 'id' => 'wada', 'regexp' =>'/WadaBrowser\/([0-9.]*)/u' ], + [ 'name' => 'Wavelink Velocity', 'id' => 'wavelink', 'regexp' =>'/Wavelink Velocity Browser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'WebRender', 'id' => 'webrender', 'regexp' =>'/WebRender/u' ], + [ 'name' => 'Webster', 'id' => 'webster', 'regexp' =>'/Webster ([0-9.]*)/u' ], + [ 'name' => 'Wyzo', 'id' => 'wyzo', 'regexp' =>'/Wyzo\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Yelang', 'id' => 'yelang', 'regexp' =>'/Yelang\/([0-9.]*)/u', 'details' => 3 ], // see: wellgo.org + [ 'name' => 'YRC Weblink', 'id' => 'yrcweb', 'regexp' =>'/YRCWeblink\/([0-9.]*)/u' ], + [ 'name' => '冲浪æµè§ˆå™¨', 'id' => 'surf', 'regexp' =>'/CMSurfClient-Android/u' ], + ], + + Constants\BrowserType::BROWSER_TEXT => [ + [ 'name' => 'CERN LineMode', 'id' => 'linemode', 'regexp' =>'/CERN-LineMode\/([0-9.]*)/u' ], + [ 'name' => 'Lynx', 'id' => 'lynx', 'regexp' =>'/Lynx\/([0-9.]*)/u' ], + [ 'name' => 'Lynx', 'id' => 'lynx', 'regexp' =>'/Lynx \(textmode\)/u' ], + [ 'name' => 'ELinks', 'id' => 'links', 'regexp' =>'/E[Ll]inks(?:\/| \()([0-9.]*[0-9])/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Links', 'id' => 'links', 'regexp' =>'/Links \(([0-9.]*)/u' ], + [ 'name' => 'w3m', 'id' => 'w3m', 'regexp' =>'/w3m\/([0-9.]*)/u' ], + ], + + Constants\BrowserType::UNKNOWN => [ + [ 'name' => 'PhantomJS', 'id' => 'phantom', 'regexp' =>'/PhantomJS\/([0-9.]*)/u' ], + [ 'name' => 'Nimbus', 'id' => 'nimbus', 'regexp' =>'/Nimbus\/([0-9.]*)/u' ], + [ 'name' => 'McAfee Web Gateway', 'id' => 'Webwasher', 'regexp' =>'/Webwasher\/([0-9.]*)/u' ], + [ 'name' => 'Open Sankoré', 'id' => 'sankore', 'regexp' =>'/Open-Sankore\/([0-9.]*)/u', 'type' => Constants\DeviceType::WHITEBOARD ], + [ 'name' => 'Adapi', 'id' => 'adapi', 'regexp' =>'/ ADAPI\/([0-9.]*)/u', 'hidden' => true, 'type' => Constants\DeviceType::SIGNAGE ], + [ 'name' => 'BrightSign', 'id' => 'brightsign', 'regexp' =>'/BrightSign\/([0-9.]*)/u', 'type' => Constants\DeviceType::SIGNAGE ], + [ 'name' => 'Coship MMCP', 'id' => 'coship', 'regexp' =>'/Coship_MMCP_([0-9.]*)/u', 'type' => Constants\DeviceType::SIGNAGE ], + ] +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-others.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-others.php new file mode 100644 index 0000000..a739a63 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/applications-others.php @@ -0,0 +1,146 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants; + +Applications::$OTHERS = [ + + Constants\BrowserType::APP_MEDIAPLAYER => [ + [ 'name' => 'iTunes', 'id' => 'itunes', 'regexp' =>'/iTunes\/(?:xaa.)?([0-9.]*)/u' ], + [ 'name' => 'iTunes', 'id' => 'itunes', 'regexp' =>'/iTunes-AppleTV\//u' ], + [ 'name' => 'QuickTime', 'id' => 'qt', 'regexp' =>'/\(qtver=([0-9.]*);/u' ], + [ 'name' => 'Bluefish', 'id' => 'bluefish', 'regexp' =>'/bluefish ([0-9.]*)/u' ], + [ 'name' => 'Nightingale', 'id' => 'nightingale', 'regexp' =>'/Nightingale\/([0-9.]*)/u' ], + [ 'name' => 'Songbird', 'id' => 'songbird', 'regexp' =>'/Songbird\/([0-9.]*)/u' ], + [ 'name' => 'Stagefright', 'id' => 'stagefright', 'regexp' =>'/stagefright\/([0-9.]*)/u' ], + [ 'name' => 'SubStream', 'id' => 'substream', 'regexp' =>'/SubStream\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'VLC', 'id' => 'vlc', 'regexp' =>'/VLC media player - version ([0-9.]*)/u' ], + [ 'name' => 'VLC', 'id' => 'vlc', 'regexp' =>'/VLC\/([0-9.]*)/u' ], + [ 'name' => 'Windows Media Player', 'id' => 'windows-media', 'regexp' =>'/Windows-Media-Player\/([0-9.]*)/u', 'details' => 1 ], + [ 'name' => 'CorePlayer', 'id' => 'coreplayer', 'regexp' =>'/CorePlayer\/([0-9.]*)/u' ], + [ 'name' => 'FlyCast', 'id' => 'flycast', 'regexp' =>'/FlyCast\/([0-9.]*)/u' ], + [ 'name' => 'Boxee', 'id' => 'boxee', 'regexp' => '/Boxee(?:\/([0-9.]*))?/u', 'type' => Constants\DeviceType::TELEVISION ], + [ 'name' => 'Kodi', 'id' => 'kodi', 'regexp' => '/^Kodi\/([0-9.]+)/u', 'details' => 2 ], + [ 'name' => 'XBMC', 'id' => 'xbmc', 'regexp' => '/^XBMC\/(?:PRE-)?([0-9.]+)/u', 'details' => 2 ], + ], + + Constants\BrowserType::APP_EMAIL => [ + [ 'name' => 'Lightning', 'id' => 'lightning', 'regexp' =>'/Lightning\/([0-9.]*)/u' ], + [ 'name' => 'Thunderbird', 'id' => 'thunderbird', 'regexp' =>'/Thunderbird[\/ ]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Microsoft Outlook', 'id' => 'outlook', 'regexp' =>'/Microsoft Outlook IMO, Build ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Microsoft Outlook', 'id' => 'outlook', 'regexp' =>'/Microsoft Outlook ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Microsoft Outlook Express', 'id' => 'outlook', 'regexp' =>'/Outlook-Express\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Lotus Notes', 'id' => 'lotus', 'regexp' =>'/Lotus-Notes\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Postbox', 'id' => 'postbox', 'regexp' =>'/Postbox[\/ ]([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'The Bat!', 'id' => 'bat', 'regexp' =>'/The Bat! ([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Yahoo Mail', 'id' => 'yahoo', 'regexp' =>'/YahooMobile\/1.0 \(mail; ([0-9.]+)\)/u', 'details' => 3 ], + ], + + Constants\BrowserType::APP_NEWS => [ + [ 'name' => 'Daum', 'id' => 'daum', 'regexp' =>'/DaumApps\/([0-9.]*)/u' ], + [ 'name' => 'Daum', 'id' => 'daum', 'regexp' =>'/daumcafe\/([0-9.]*)/u' ], + [ 'name' => 'Flipboard', 'id' => 'flipboard', 'regexp' =>'/Flipboard\/([0-9.]+)/u' ], + ], + + Constants\BrowserType::APP_FEEDREADER => [ + [ 'name' => 'Akregator', 'id' => 'akregator', 'regexp' =>'/Akregator\/([0-9.]*)/u' ], + [ 'name' => 'Blogos', 'id' => 'blogos', 'regexp' =>'/Blogos\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Cococ', 'id' => 'cococ', 'regexp' =>'/cococ\/([0-9.]*)/u' ], + [ 'name' => 'FeedDemon', 'id' => 'feed', 'regexp' =>'/FeedDemon\/([0-9.]*)/u' ], + [ 'name' => 'Feeddler', 'id' => 'feed', 'regexp' =>'/FeeddlerRSS[ \/]([0-9.]*)/u' ], + [ 'name' => 'Feeddler Pro', 'id' => 'feed', 'regexp' =>'/FeeddlerPro\/([0-9.]*)/u' ], + [ 'name' => 'Liferea', 'id' => 'liferea', 'regexp' =>'/Liferea\/([0-9.]*)/u' ], + [ 'name' => 'NewsBlur', 'id' => 'news', 'regexp' =>'/NewsBlur\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Newsbeuter', 'id' => 'news', 'regexp' =>'/newsbeuter\/([0-9.]*)/u' ], + [ 'name' => 'JetBrains Omea Reader','id' => 'jetbrains', 'regexp' =>'/JetBrains Omea Reader ([0-9.]*)/u' ], + [ 'name' => 'RSS Bandit', 'id' => 'rss', 'regexp' =>'/RssBandit\/([0-9.]*)/u' ], + [ 'name' => 'RSS Junkie', 'id' => 'rss', 'regexp' =>'/RSS Junkie Daemon/u' ], + [ 'name' => 'RSS Owl', 'id' => 'rss', 'regexp' =>'/RSSOwl\/([0-9.]*)/u' ], + [ 'name' => 'Reeder', 'id' => 'reeder', 'regexp' =>'/Reeder\/([0-9.]*)/u' ], + [ 'name' => 'ReedKit', 'id' => 'reedkit', 'regexp' =>'/ReedKit\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Rome', 'id' => 'rome', 'regexp' =>'/Rome Client/u' ], + [ 'name' => 'jsRSS++', 'id' => 'rss', 'regexp' =>'/jsRSS++\/([0-9.]*)/u' ], + [ 'name' => 'Windows RSS Platorm', 'id' => 'rss', 'regexp' =>'/Windows-RSS-Platform\/([0-9.]*)/u' ], + ], + + Constants\BrowserType::APP_PODCAST => [ + [ 'name' => 'Ziepod', 'id' => 'ziepod', 'regexp' =>'/Ziepod\+? ([0-9.]*)/u' ], + ], + + Constants\BrowserType::APP_CHAT => [ + [ 'name' => 'Facebook Messenger', 'id' => 'messenger', 'regexp' =>'/FBAN\/MessengerForiOS/u' ], + [ 'name' => 'Facebook Messenger', 'id' => 'messenger', 'regexp' =>'/FB_IAB\/MESSENGER/u' ], + [ 'name' => 'Kik', 'id' => 'kik', 'regexp' =>'/Kik\/([0-9.]*?)(\.0)?\.[0-9]{3,4}/u' ], + [ 'name' => 'WeChat', 'id' => 'messenger', 'regexp' =>'/MicroMessenger\/([0-9.]*)/u' ], + [ 'name' => 'Wire', 'id' => 'wire', 'regexp' =>'/Wire\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo Messenger', 'id' => 'yahoo', 'regexp' =>'/YahooMobile\/1.0 \(im; ([0-9.]+)\)/u', 'details' => 3 ], + [ 'name' => 'Yammer', 'id' => 'yammer', 'regexp' =>'/Yammer\/([0-9.]*)/u', 'details' => 2 ], + ], + + Constants\BrowserType::APP_SOCIAL => [ + [ 'name' => 'Facebook', 'id' => 'fbios', 'regexp' =>'/FBAN\/FBIOS/u' ], + [ 'name' => 'Facebook', 'id' => 'fb4a', 'regexp' =>'/FBAN\/FB4A/u' ], + [ 'name' => 'Facebook', 'id' => 'fb4a', 'regexp' =>'/FB_IAB\/FB4A/u' ], + [ 'name' => 'Google+', 'id' => 'googleplus', 'regexp' =>'/com.google.GooglePlus/u' ], + [ 'name' => 'Instagram', 'id' => 'instagram', 'regexp' =>'/Instagram ([0-9.]+)/u' ], + [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' =>'/\[Pinterest\/(Android|iOS)\]/u' ], + [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' =>'/Pinterest\/[0-9.]+/u' ], + [ 'name' => 'Sina Weibo', 'id' => 'weibo', 'regexp' =>'/weibo__([0-9.]*)/u' ], + [ 'name' => 'Tumblr', 'id' => 'tumblr', 'regexp' =>'/Tumblr\/([0-9.]*)/u' ], + [ 'name' => 'Twitter', 'id' => 'twitter', 'regexp' =>'/TwitterAndroid/u' ], + [ 'name' => 'Twitter', 'id' => 'twitter', 'regexp' =>'/Twitter for iPhone/u' ], + [ 'name' => 'WordPress', 'id' => 'wp-android', 'regexp' =>'/wp-android\/([0-9.]*)/u' ], + ], + + Constants\BrowserType::APP_OFFICE => [ + [ 'name' => 'LibreOffice', 'id' => 'office', 'regexp' =>'/LibreOffice/u' ], + [ 'name' => 'Microsoft Office', 'id' => 'office', 'regexp' =>'/MSOffice ([0-9.]*)/u' ], + [ 'name' => 'Microsoft Office', 'id' => 'office', 'regexp' =>'/Microsoft Office Mobile ?\/([0-9.]*)/u' ], + [ 'name' => 'Microsoft Excel', 'id' => 'office', 'regexp' =>'/Microsoft Office Excel ([0-9.]*)/u' ], + [ 'name' => 'Microsoft OneNote', 'id' => 'office', 'regexp' =>'/Microsoft Office OneNote ([0-9.]*)/u' ], + [ 'name' => 'Microsoft PowerPoint', 'id' => 'office', 'regexp' =>'/Microsoft Office PowerPoint ([0-9.]*)/u' ], + [ 'name' => 'Microsoft Word', 'id' => 'office', 'regexp' =>'/Microsoft Office Word ([0-9.]*)/u' ], + [ 'name' => 'OpenOffice', 'id' => 'office', 'regexp' =>'/OpenOffice\/([0-9.]*)/u' ], + ], + + Constants\BrowserType::APP_SEARCH => [ + [ 'name' => 'Bing Search', 'id' => 'bingweb', 'regexp' =>'/BingWeb\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Baidu Hao123', 'id' => 'hao123', 'regexp' =>'/hao123\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Google Search', 'id' => 'gsa', 'regexp' =>'/GSA\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'NAVER', 'id' => 'naver', 'regexp' =>'/NAVER\(inapp; search; [0-9]+; ([0-9.]*)\)/u' ], + [ 'name' => 'Sogou Search', 'id' => 'sogousearch', 'regexp' =>'/SogouSearch Android(?:[0-9.]*) version([0-9.]*)/u' ], + [ 'name' => 'Yandex Search', 'id' => 'yandex', 'regexp' =>'/YandexSearch\/([0-9.]*)/u' ], + ], + + Constants\BrowserType::APP_EDITOR => [ + [ 'name' => 'Atom', 'id' => 'atom', 'regexp' =>'/Atom\/([0-9.]*)/u' ], + [ 'name' => 'Adobe GoLive', 'id' => 'golive', 'regexp' =>'/GoLive ([0-9.]*)/u' ], + [ 'name' => 'Brackets', 'id' => 'brackets', 'regexp' =>'/Brackets\/([0-9.]*)/u' ], + [ 'name' => 'iWeb', 'id' => 'iweb', 'regexp' =>'/(?:^| )iWeb\/([0-9])/u' ], + [ 'name' => 'Microsoft FrontPage', 'id' => 'frontpage', 'regexp' =>'/MS ?FrontPage[ \/]([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'W3C Amaya', 'id' => 'amaya', 'regexp' =>'/amaya\/([0-9.]*)/u' ], + [ 'name' => 'IBM WebSphere Homepage Builder', 'id' => 'websphere', 'regexp' =>'/IBM WebSphere Homepage Builder V([0-9.]*)/u' ], + ], + + Constants\BrowserType::APP_DOWNLOAD => [ + [ 'name' => 'Download Manager', 'id' => 'download', 'regexp' =>'/AndroidDownloadManager\//u' ], + [ 'name' => 'Tanso Download Manager', 'id' => 'tansodl', 'regexp' =>'/TansoDL/u' ], + ], + + Constants\BrowserType::APP_GAME => [ + [ 'name' => 'EA Origin', 'id' => 'origin', 'regexp' =>'/Origin\/([0-9.]*)/u' ], + [ 'name' => 'SecondLife', 'id' => 'secondlife', 'regexp' =>'/SecondLife\/([0-9.]*)/u' ], + [ 'name' => 'Valve Steam', 'id' => 'valve', 'regexp' =>'/Valve Steam/u' ], + [ 'name' => 'Raptr', 'id' => 'raptr', 'regexp' =>'/Raptr/u' ], + ], + + Constants\BrowserType::APP => [ + [ 'name' => 'AliPay', 'id' => 'alipay', 'regexp' =>'/AlipayClient\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Cooliris', 'id' => 'cooliris', 'regexp' =>'/Cooliris\/([0-9.]*)/u' ], + [ 'name' => 'Google Earth', 'id' => 'google', 'regexp' =>'/Google Earth\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Google Desktop', 'id' => 'google', 'regexp' =>'/Google Desktop\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Leechcraft', 'id' => 'leechcraft', 'regexp' =>'/Leechcraft(?:\/([0-9.]*))?/u', 'details' => 2 ], + [ 'name' => 'Lotus Expeditor', 'id' => 'expeditor', 'regexp' =>'/Gecko Expeditor ([0-9.]*)/u', 'details' => 3 ], + ] +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/browsers-chrome.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/browsers-chrome.php new file mode 100644 index 0000000..c27a5c0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/browsers-chrome.php @@ -0,0 +1,127 @@ +<?php + +namespace WhichBrowser\Data; + +Chrome::$DESKTOP = [ + '0.2.149' => 'beta', + '0.3.154' => 'beta', + '0.4.154' => 'beta', + '1.0.154' => 'stable', + '2.0.172' => 'stable', + '3.0.195' => 'stable', + '4.0.249' => 'stable', + '4.1.249' => 'stable', + '5.0.375' => 'stable', + '6.0.472' => 'stable', + '7.0.517' => 'stable', + '8.0.552' => 'stable', + '9.0.597' => 'stable', + '10.0.648' => 'stable', + '11.0.696' => 'stable', + '12.0.742' => 'stable', + '13.0.782' => 'stable', + '14.0.835' => 'stable', + '15.0.874' => 'stable', + '16.0.912' => 'stable', + '17.0.963' => 'stable', + '18.0.1025' => 'stable', + '19.0.1084' => 'stable', + '20.0.1132' => 'stable', + '21.0.1180' => 'stable', + '22.0.1229' => 'stable', + '23.0.1271' => 'stable', + '24.0.1312' => 'stable', + '25.0.1364' => 'stable', + '26.0.1410' => 'stable', + '27.0.1453' => 'stable', + '28.0.1500' => 'stable', + '29.0.1547' => 'stable', + '30.0.1599' => 'stable', + '31.0.1650' => 'stable', + '32.0.1700' => 'stable', + '33.0.1750' => 'stable', + '34.0.1847' => 'stable', + '35.0.1916' => 'stable', + '36.0.1985' => 'stable', + '37.0.2062' => 'stable', + '38.0.2125' => 'stable', + '39.0.2171' => 'stable', + '40.0.2214' => 'stable', + '41.0.2272' => 'stable', + '42.0.2311' => 'stable', + '43.0.2357' => 'stable', + '44.0.2403' => 'stable', + '45.0.2454' => 'stable', + '46.0.2490' => 'stable', + '47.0.2526' => 'stable', + '48.0.2564' => 'stable', + '49.0.2623' => 'stable', + '50.0.2661' => 'stable', + '51.0.2704' => 'stable', + '52.0.2743' => 'stable', + '53.0.2785' => 'stable', + '54.0.2840' => 'stable', + '55.0.2883' => 'stable', + '56.0.2924' => 'stable', + '57.0.2987' => 'stable', + '58.0.3029' => 'stable', + '59.0.3071' => 'stable', + '60.0.3112' => 'stable', + '61.0.3163' => 'stable', + '62.0.3202' => 'stable', + '63.0.3239' => 'stable', + '64.0.3282' => 'stable', + '65.0.3325' => 'stable', + '66.0.3359' => 'stable', + '67.0.3396' => 'stable', + '68.0.3440' => 'stable', + '69.0.3497' => 'stable', +]; + +Chrome::$MOBILE = [ + '16.0.912' => 'beta', + '18.0.1025' => 'stable', + '25.0.1364' => 'stable', + '27.0.1453' => 'stable', + '29.0.1547' => 'stable', + '30.0.1599' => 'stable', + '31.0.1650' => 'stable', + '32.0.1700' => 'stable', + '33.0.1750' => 'stable', + '34.0.1847' => 'stable', + '35.0.1916' => 'stable', + '36.0.1985' => 'stable', + '37.0.2062' => 'stable', + '38.0.2125' => 'stable', + '39.0.2171' => 'stable', + '40.0.2214' => 'stable', + '41.0.2272' => 'stable', + '42.0.2311' => 'stable', + '43.0.2357' => 'stable', + '44.0.2403' => 'stable', + '45.0.2454' => 'stable', + '46.0.2490' => 'stable', + '47.0.2526' => 'stable', + '48.0.2564' => 'stable', + '49.0.2623' => 'stable', + '50.0.2661' => 'stable', + '51.0.2704' => 'stable', + '52.0.2743' => 'stable', + '53.0.2785' => 'stable', + '54.0.2840' => 'stable', + '55.0.2883' => 'stable', + '56.0.2924' => 'stable', + '57.0.2987' => 'stable', + '58.0.3029' => 'stable', + '59.0.3071' => 'stable', + '60.0.3112' => 'stable', + '61.0.3163' => 'stable', + '62.0.3202' => 'stable', + '63.0.3239' => 'stable', + '64.0.3282' => 'stable', + '65.0.3325' => 'stable', + '66.0.3359' => 'stable', + '67.0.3396' => 'stable', + '68.0.3440' => 'stable', + '69.0.3497' => 'stable', +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/build-android.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/build-android.php new file mode 100644 index 0000000..aa01e44 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/build-android.php @@ -0,0 +1,244 @@ +<?php + +namespace WhichBrowser\Data; + +BuildIds::$ANDROID_BUILDS = [ + 'CUPCAKE' => '1.5', + 'DONUT' => '1.6', + 'ECLAIR' => '2.0', + 'FROYO' => '2.2', + 'GINGERBREAD' => '2.3', + + 'DRC83' => '1.6', + 'DRC92' => '1.6', + 'DRD08' => '1.6', + 'DRD20' => '1.6', + 'DMD64' => '1.6', + 'ESD20' => '2.0', + 'ESD56' => '2.0.1', + 'ERD79' => '2.1', + 'ERE27' => '2.1', + 'EPE54B' => '2.1', + 'ESE81' => '2.1', + 'EPF21B' => '2.1', + 'FRF85B' => '2.2', + 'FRF91' => '2.2', + 'FRG01B' => '2.2', + 'FRG22D' => '2.2', + 'FRG83' => '2.2.1', + 'FRG83D' => '2.2.1', + 'FRG83G' => '2.2.2', + 'FRK76' => '2.2.3', + 'FRK76C' => '2.2.3', + 'GRH55' => '2.3', + 'GRH78' => '2.3.1', + 'GRH78C' => '2.3.2', + 'GRI40' => '2.3.3', + 'GRI54' => '2.3.3', + 'GRJ06D' => '2.3.4', + 'GRJ22' => '2.3.4', + 'GRJ90' => '2.3.5', + 'GRK39C' => '2.3.6', + 'GRK39F' => '2.3.6', + 'GWK74' => '2.3.7', + + 'HRI39' => '3.0', + 'HRI66' => '3.0', + 'HWI69' => '3.0', + 'HRI83' => '3.0', + 'HMJ37' => '3.1', + 'HTJ85B' => '3.2', + 'HTK55D' => '3.2.1', + 'HTK75' => '3.2.1', + 'HTK75D' => '3.2.1', + 'HLK75C' => '3.2.2', + 'HLK75D' => '3.2.2', + 'HLK75F' => '3.2.4', + 'HLK75H' => '3.2.6', + + 'ITL41D' => '4.0.1', + 'ITL41E' => '4.0.1', + 'ITL41F' => '4.0.1', + 'ICL53F' => '4.0.2', + 'IML74K' => '4.0.3', + 'IML77' => '4.0.3', + 'IMM76' => '4.0.4', + 'IMM76D' => '4.0.4', + 'IMM76I' => '4.0.4', + 'IMM76K' => '4.0.4', + 'IMM76L' => '4.0.4', + 'JRO03C' => '4.1.1', + 'JRO03D' => '4.1.1', + 'JRO03E' => '4.1.1', + 'JRO03H' => '4.1.1', + 'JRO03L' => '4.1.1', + 'JRO03O' => '4.1.1', + 'JRO03R' => '4.1.1', + 'JRO03S' => '4.1.1', + 'JZO54K' => '4.1.2', + 'JZO54M' => '4.1.2', + 'JVP15S' => '4.2', // Interim build used by the Nexus 7 + 'JOP40C' => '4.2', + 'JOP40D' => '4.2.1', + 'JOP40F' => '4.2.1', + 'JOP40G' => '4.2.1', + 'JDQ39' => '4.2.2', + 'JDQ39B' => '4.2.2', + 'JDQ39E' => '4.2.2', + 'JWR66L' => '4.3', + 'JWR66N' => '4.3', + 'JWR66N.S005' => '4.3', // Google Play Edition - Samsung Galaxy S4 + 'JWR66V' => '4.3', + 'JWR66V.H10' => '4.3', // Google Play Edition - HTC One + 'JWR66V.S014' => '4.3', // Google Play Edition - Samsung Galaxy S4 + 'JWR66Y' => '4.3', + 'JWR66Y.S003' => '4.3', // Google Play Edition - Samsung Galaxy S4 + 'JSR78D' => '4.3', + 'JSS15J' => '4.3', + 'JSS15Q' => '4.3', + 'KRT16S' => '4.4', + 'KRT16M' => '4.4', + 'KOT49E' => '4.4.1', + 'KOT49H' => '4.4.2', + 'KVT49L' => '4.4.2', + 'KTU84L' => '4.4.3', + 'KTU84M' => '4.4.3', + 'KTU84P' => '4.4.4', + + 'LPV79' => ['value' => '5.0', 'alias' => 'L'], + 'LPV81C' => ['value' => '5.0', 'alias' => 'L'], + 'LPX13D' => ['value' => '5.0', 'alias' => 'L'], + + 'LRX21L' => '5.0', + 'LRX21M' => '5.0', + 'LRX21O' => '5.0', + 'LRX21P' => '5.0', + 'LRX21Q' => '5.0', + 'LRX21R' => '5.0', + 'LRX21T' => '5.0', + 'LRX21V' => '5.0', + 'LRX22C' => '5.0.1', + 'LRX22G' => '5.0.2', + 'LRX22L' => '5.0.2', + 'LGZ23.S3' => '5.0.2', // Sony Bravia Android TV + 'LGZ23.S15' => '5.0.2', // Sony Bravia Android TV + 'LGZ23.S37' => '5.0.2', // Sony Bravia Android TV + 'LGZ23.S49' => '5.0.2', // Sony Bravia Android TV + 'LGZ23.S55' => '5.0.2', // Sony Bravia Android TV + 'LGZ23.S59' => '5.0.2', // Sony Bravia Android TV + 'LGZ23.S61' => '5.0.2', // Sony Bravia Android TV + 'LGZ23.S73' => '5.0.2', // Sony Bravia Android TV + 'LGY70.S1' => '5.0.2', // Sony Bravia Android TV + 'LGY75.S91' => '5.0.2', // Sony Bravia Android TV + 'LGY75.S105' => '5.0.2', // Sony Bravia Android TV + 'LGY75.S109' => '5.0.2', // Sony Bravia Android TV + 'LGY75.S131' => '5.0.2', // Sony Bravia Android TV + 'LGY75.S143' => '5.0.2', // Sony Bravia Android TV + 'LGY75.S147' => '5.0.2', // Sony Bravia Android TV + 'LMY47D' => '5.1', + 'LMY47E' => '5.1', + 'LMY47I' => '5.1', + 'LMY47M' => '5.1', + 'LMY47O' => '5.1', + 'LMY47V' => '5.1.1', + 'LMY47X' => '5.1.1', + 'LMY47Z' => '5.1.1', + 'LMY48B' => '5.1.1', + 'LMY48E.S1' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S39' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S63' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S81' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S89' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S91' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S117' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S127' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S143' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S153' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S155' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S167' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S185' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S191' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S195' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S197' => '5.1.1', // Sony Bravia Android TV + 'LMY48E.S223' => '5.1.1', // Sony Bravia Android TV + 'LMY48B' => '5.1.1', + 'LMY48G' => '5.1.1', + 'LMY48I' => '5.1.1', + 'LMY48J' => '5.1.1', + 'LMY48M' => '5.1.1', + 'LMY48N' => '5.1.1', + 'LMY48P' => '5.1.1', + 'LMY48T' => '5.1.1', + 'LMY48U' => '5.1.1', + 'LMY48W' => '5.1.1', + 'LMY48X' => '5.1.1', + 'LMY48Y' => '5.1.1', + 'LMY48Z' => '5.1.1', + 'LMY49F' => '5.1.1', + 'LMY49G' => '5.1.1', + 'LMY49H' => '5.1.1', + 'LMY49I' => '5.1.1', + 'LMY49J' => '5.1.1', + 'LVY48C' => '5.1.1', + 'LVY48E' => '5.1.1', + 'LVY48F' => '5.1.1', + 'LVY48H' => '5.1.1', + 'LYZ28E' => '5.1.1', + 'LYZ28J' => '5.1.1', + 'LYZ28K' => '5.1.1', + 'LYZ28M' => '5.1.1', + 'LYZ28N' => '5.1.1', + + 'MPZ44Q' => ['value' => '6.0', 'alias' => 'M'], + 'MPZ79M' => ['value' => '6.0', 'alias' => 'M'], + + 'MRA58K' => '6.0', + 'MRA58N' => '6.0', + 'MRA58U' => '6.0', + 'MRA58V' => '6.0', + 'MRA58X' => '6.0', + 'MRA59B' => '6.0', + 'MDA89D' => '6.0', + 'MDA89E' => '6.0', + 'MDB08I' => '6.0', + 'MDB08K' => '6.0', + 'MDB08L' => '6.0', + 'MDB08M' => '6.0', + 'MMB29N' => '6.0', + 'MMB29K' => '6.0.1', + 'MMB29M' => '6.0.1', + 'MMB29O' => '6.0.1', + 'MMB29P' => '6.0.1', + 'MMB29S' => '6.0.1', + 'MMB29T' => '6.0.1', + 'MMB29Q' => '6.0.1', + 'MMB29R' => '6.0.1', + 'MMB29U' => '6.0.1', + 'MMB29V' => '6.0.1', + 'MMB29X' => '6.0.1', + 'MHC19I' => '6.0.1', + 'MHC19J' => '6.0.1', + 'MHC19Q' => '6.0.1', + 'MOB30D' => '6.0.1', + 'MOB30G' => '6.0.1', + 'MOB30H' => '6.0.1', + 'MOB30I' => '6.0.1', + 'MOB30J' => '6.0.1', + 'MTC19T' => '6.0.1', + 'MXB48J' => '6.0.1', + 'MXB48K' => '6.0.1', + 'MXB48T' => '6.0.1', + 'MXC14G' => '6.0.1', + 'MXC89F' => '6.0.1', + 'M5C14J' => '6.0.1', + + 'NPC56P' => ['value' => '7.0', 'alias' => 'N'], + 'NPC56W' => ['value' => '7.0', 'alias' => 'N'], + 'NPC56X' => ['value' => '7.0', 'alias' => 'N'], + 'NPC91K' => ['value' => '7.0', 'alias' => 'N'], + 'NPD35K' => ['value' => '7.0', 'alias' => 'N'], + 'NRD21D' => ['value' => '7.0', 'alias' => 'N'], + 'NRD28C' => ['value' => '7.0', 'alias' => 'N'], +]; + +// Source: http://source.android.com/source/build-numbers.html diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/id-android.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/id-android.php new file mode 100644 index 0000000..8780e1d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/id-android.php @@ -0,0 +1,323 @@ +<?php + +/* This file is automatically generated, do not edit manually! */ + +namespace WhichBrowser\Data; + +BrowserIds::$ANDROID_BROWSERS = [ + 'com.agilebits.onepassword' => '1Password', + 'com.browser2345' => '2345 Browser', + 'com.browser2345_ucc' => '2345 Browser', + 'com.browser2345hd' => '2345 Browser HD', + 'air.stage.web.view' => 'Adobe AIR', + 'air.stagewebview' => 'Adobe AIR', + 'air.StageWebViewBridgeTest.debug' => 'Adobe AIR', + 'air.StageWebViewVideo.debug' => 'Adobe AIR', + 'com.adobe.phonegap.app' => 'Adobe Phonegap', + 'com.adobe.reader' => 'Adobe Reader', + 'com.adobe.shadow.android' => 'Adobe Shadow', + 'com.airwatch.browser' => 'AirWatch Browser', + 'com.aliyun.mobile.browser' => 'Aliyun Browser', + 'net.adgjm.angel' => 'Angel Browser', + 'com.apc.browser' => 'APC', + 'com.apc.browser.standard' => 'APC', + 'com.apc.browser.standard6j8s' => 'APC', + 'com.apusapps.browser' => 'APUS Browser', + 'com.apusapps.browser.lark' => 'APUS Browser', + 'com.apusapps.browser.turbo' => 'APUS Browser', + 'com.asus.browser' => 'Asus Browser', + 'com.wAuroraWebBrowser' => 'Aurora Web Browser', + 'bdmobile.android.app' => 'Baidu Browser', + 'com.baidu.blink.testapp' => 'Baidu Browser', + 'com.baidu.blink.v38' => 'Baidu Browser', + 'com.baidu.browser.apps' => 'Baidu Browser', + 'com.baidu.browser.apps.lite' => 'Baidu Browser', + 'com.baidu.browser.apps_mr' => 'Baidu Browser', + 'com.baidu.browser.apps_neo' => 'Baidu Browser', + 'com.baidu.browser.apps_sj' => 'Baidu Browser', + 'com.baidu.browser.apps_yt' => 'Baidu Browser', + 'com.baidu.browser.app_bw' => 'Baidu Browser', + 'com.baidu.browser.blink.apps' => 'Baidu Browser', + 'com.baidu.browser.brower' => 'Baidu Browser', + 'com.baidu.browser.chrome' => 'Baidu Browser', + 'com.baidu.browser.inter' => 'Baidu Browser', + 'com.baidu.browser.inter.mini' => 'Baidu Browser', + 'com.baidu.browser.interyb' => 'Baidu Browser', + 'com.baidu.browser.lab' => 'Baidu Browser', + 'com.baidu.browser.pad' => 'Baidu Browser', + 'com.baidu.browserhd.inter' => 'Baidu Browser', + 'com.baidu.demo.webview' => 'Baidu Browser', + 'com.baidu.hi' => 'Baidu Browser', + 'com.baidu.searchbox' => 'Baidu Browser', + 'com.baidu.searchbox.pad' => 'Baidu Browser', + 'com.baidu.searchbox_bbk' => 'Baidu Browser', + 'com.baidu.searchbox_coolpad' => 'Baidu Browser', + 'com.baidu.searchbox_gionee' => 'Baidu Browser', + 'com.baidu.searchbox_hisense' => 'Baidu Browser', + 'com.baidu.searchbox_htc' => 'Baidu Browser', + 'com.baidu.searchbox_huawei' => 'Baidu Browser', + 'com.baidu.searchbox_ktouch' => 'Baidu Browser', + 'com.baidu.searchbox_lenovo' => 'Baidu Browser', + 'com.baidu.searchbox_oppo' => 'Baidu Browser', + 'com.baidu.searchbox_samsung' => 'Baidu Browser', + 'com.baidu.searchbox_sj' => 'Baidu Browser', + 'com.baidu.searchbox_sony' => 'Baidu Browser', + 'com.baidu.searchbox_tianyi' => 'Baidu Browser', + 'com.baidu.searchbox_zte' => 'Baidu Browser', + 'com.baidu.zeustest' => 'Baidu Browser', + 'com.wBestBrowser' => 'Best Browser', + 'com.boatbrowser.free' => 'Boat Browser', + 'com.boatbrowser.tablet' => 'Boat Browser', + 'com.boatgo.browser' => 'Boat Browser Mini', + 'com.ericsson.research.mario' => 'Bowser', + 'com.dotsandlines.carbon' => 'Carbon', + 'app.chameleon_browser' => 'Chameleon browser', + 'com.coship.mmcp' => 'Coship MMCP', + 'com.coship.tvos.web' => 'Coship MMCP', + 'com.coship.webapp' => 'Coship MMCP', + 'net.daum.android.daum' => 'Daum', + 'com.phikod.deviceportinfo' => 'Device Info Android', + 'com.dolphin.browser.android.jp' => 'Dolphin', + 'com.dolphin.browser.id' => 'Dolphin', + 'com.dolphin.browser.pad' => 'Dolphin', + 'com.dolphin.browser.tuna' => 'Dolphin', + 'com.dolphin.web.browser.android' => 'Dolphin', + 'mobi.mgeek.TunnyBrowser' => 'Dolphin', + 'mobile.mgeek.TunnyBrowser' => 'Dolphin', + 'com.dolphin.browser.xf' => 'Dolphin (Fighter Edition)', + 'com.dolphin.browser.lab.cn' => 'Dolphin Beta', + 'com.dolphin.browser.lab.en' => 'Dolphin Beta', + 'com.dolphin.browser.express.web' => 'Dolphin Express', + 'com.dolphin.browser.express.web.beta' => 'Dolphin Express', + 'com.dolphin.browser' => 'Dolphin Mini', + 'com.dolphin.browser.cn' => 'Dolphin Mini', + 'com.dolphin.browser.zero' => 'Dolphin Zero', + 'com.duckduckgo.mobile.android' => 'DuckDuckGo', + 'easy.browser' => 'Easy Browser', + 'easy.browser.classic' => 'Easy Browser', + 'easy.browser.com' => 'Easy Browser', + 'it.blogspot.fedeveloper' => 'Emergency Browser', + 'com.easy.browser' => 'ES Browser', + 'org.espier.browser' => 'Espier Browser', + 'com.exsoul' => 'Exsoul Web Browser', + 'com.jv.falcon' => 'Falcon', + 'com.jv.falcon.pro' => 'Falcon Pro', + 'com.devhd.feedly' => 'Feedly', + 'com.firemonkeybrowser' => 'FireMonkey', + 'com.comespice.browser' => 'Flash Browser', + 'com.funnyeden.browser' => 'Flash Browser', + 'com.whattheapps.fbrowser' => 'Flash Browser', + 'flipboard.app' => 'Flipboard', + 'flipboard.cn' => 'Flipboard', + 'com.lwi.android.flapps' => 'Floating Apps', + 'com.lwi.android.flappsfull' => 'Floating Apps', + 'gpc.myweb.hinet.net.PopupWeb' => 'Floating Browser Flux', + 'com.fortune.browser' => 'Fortune Web Browser', + 'com.browser.frogbrowser' => 'Frog Browser', + 'com.crowbar.beaverbrowser' => 'Frost Browser', + 'com.crowbar.beaverlite' => 'Frost Browser', + 'galaxy.browser.gb.free' => 'Galaxy Browser', + 'galaxy.browser.gb.pro' => 'Galaxy Browser', + 'com.mybro.browsah' => 'Genie Browser', + 'com.noinnion.android.greader.reader' => 'gReader', + 'com.noinnion.android.greader.readerpro' => 'gReader Pro', + 'jp.ddo.pigsty.HabitBrowser' => 'Habit Browser', + 'jp.ddo.pigsty.Habit_Browser' => 'Habit Browser', + 'com.baidu.hao123' => 'Hao123', + 'com.baidu.hao123.chrome.browser' => 'Hao123', + 'com.baidu.hao123.global' => 'Hao123', + 'com.htc.browser' => 'HTC Sense Browser', + 'com.htc.sense.browser' => 'HTC Sense Browser', + 'com.huawei.android.browser' => 'Huawei Emotion Browser', + 'com.huawei.browser' => 'Huawei Emotion Browser', + 'jp.co.lunascape.android.ilunascape' => 'iLunascape 2', + 'nu.tommie.inbrowser' => 'InBrowser', + 'nu.tommie.inbrowser.beta' => 'InBrowser Beta', + 'com.infamous.browser' => 'Infamous Browser', + 'derek.iSurf' => 'iSurf', + 'com.jerky.browser' => 'Javelin Incognito Browser', + 'com.jerky.browser2' => 'Javelin Incognito Browser', + 'com.adsi.kioware.client.mobile.app' => 'KioWare Kiosk', + 'com.kroniapp.browse' => 'Kronia Browser', + 'com.web.browser.labaadibrowser' => 'Labaadi Browser', + 'com.vng.android.zingbrowser' => 'Laban', + 'com.lastpass.lpandroid' => 'LastPass', + 'com.lenovo.browser' => 'Lenovo Browser', + 'com.lenovo.lps.simple' => 'Lenovo Browser', + 'com.light.browser' => 'Light Browser', + 'acr.browser.barebones' => 'Lightning Browser', + 'acr.browser.butterfly' => 'Lightning Browser', + 'acr.browser.lightning' => 'Lightning Browser', + 'acr.browser.lightning2' => 'Lightning Browser', + 'acr.browser.lightningq16w' => 'Lightning Browser', + 'acr.browser.spartancompany' => 'Lightning Browser', + 'acr.browser.spartancompanypaid' => 'Lightning Browser', + 'acr.browser.thunder' => 'Lightning Browser', + 'com.MoNTE.Lime' => 'Lime', + 'com.alphonso.pulse' => 'LinkedIn Pulse', + 'com.logio.logos' => 'Logos Browser', + 'it.lombardo.Lombardo' => 'Lombardo', + 'com.powerpoint45.lucidbrowser' => 'Lucid Browser', + 'com.powerpoint45.lucidbrowserfree' => 'Lucid Browser', + 'com.fiberlink.maas360.android.securebrowser' => 'MaaS360 Browser', + 'com.mx.browser' => 'Maxthon', + 'com.mx.browser.appendix' => 'Maxthon', + 'com.mx.browser.fast' => 'Maxthon', + 'com.mx.browser.free.mx100000000000' => 'Maxthon', + 'com.mx.browser.free.mx100000001915' => 'Maxthon', + 'com.mx.browser.free.mx100000002422' => 'Maxthon', + 'com.mx.browser.free.mx100000003135' => 'Maxthon', + 'com.mx.browser.free.mx100000003415' => 'Maxthon', + 'com.mx.browser.free.mx100000004211' => 'Maxthon', + 'com.mx.browser.free.mx100000004981' => 'Maxthon', + 'com.mx.browser.free.mx100000005137' => 'Maxthon', + 'com.mx.browser.free.mx200000000239' => 'Maxthon', + 'com.mx.browser.free.mx200000006760' => 'Maxthon', + 'com.mx.browser.free.mx200000013070' => 'Maxthon', + 'com.mx.browser.free.mx200000014602' => 'Maxthon', + 'com.mx.browser.free.mx200000014853' => 'Maxthon', + 'com.mx.browser.hg' => 'Maxthon', + 'com.mx.browser.kids' => 'Maxthon', + 'com.mx.browser.mtk' => 'Maxthon', + 'com.mx.browser.tablet' => 'Maxthon', + 'jp.co.inos.c1Browser' => 'MDM Browser', + 'com.ilegendsoft.mercury' => 'Mercury', + 'com.dmkho.mbm' => 'MiniBrowser Mobile', + 'com.dmkho.mbmbeta' => 'MiniBrowser Mobile', + 'com.mseven.msecure' => 'mSecure', + 'com.visvanoid.secretbrowse' => 'My Internet', + 'com.fevdev.nakedbrowser' => 'Naked Browser', + 'com.fevdev.nakedbrowserNDM' => 'Naked Browser', + 'com.fevdev.nakedbrowserpro' => 'Naked Browser Pro', + 'com.nanobrowser' => 'Nano Browser', + 'com.bos.ebrowser' => 'Navegador eBrowser', + 'com.nhn.android.navercafe' => 'Naver', + 'com.nhn.android.naverdic' => 'Naver', + 'com.nhn.android.search' => 'Naver', + 'com.access_company.android.livebrowser' => 'NetFront Life Browser', + 'com.access_company.android.nflifebrowser.lite' => 'NetFront Life Browser', + 'com.access_company.android.nflifeconnect' => 'NetFront Life Connect', + 'com.jiubang.browser' => 'Next Browser', + 'com.ninesky.browser' => 'Ninesky', + 'com.ninesky.browsercn' => 'Ninesky', + 'com.ninesky.browserzh' => 'Ninesky', + 'com.ninesky.nqbrowsercn' => 'Ninesky', + 'com.ninesky.nsbrowser' => 'Ninesky', + 'com.ninesky.sebrowser' => 'Ninesky', + 'com.appsverse.privatebrowser' => 'Nova Private Browser', + 'com.browser.nowadvanced' => 'Now Browser', + 'com.browser.nowbasic' => 'Now Browser', + 'com.browser.nowpro' => 'Now Browser', + 'com.browser.nowpro412t' => 'Now Browser', + 'com.wNewVisionBrowser' => 'NVision Browser', + 'com.compal.android.browser' => 'Ocean Browser', + 'com.maskyn.oldbrowser' => 'Old But Gold Internet Browser', + 'com.tencent.ibibo.mtt' => 'One Browser', + 'info.guardianproject.browser' => 'Orweb', + 'com.oupeng.browser' => 'Oupeng Browser', + 'com.oupeng.browser.beta10' => 'Oupeng Browser', + 'com.oupeng.browser.turbobeta' => 'Oupeng Browser', + 'com.oupeng.browserpre.cmcc' => 'Oupeng Browser', + 'com.oupeng.mini.android' => 'Oupeng Browser', + 'com.oupeng.xbrowser' => 'Oupeng Browser', + 'com.oupeng.xbrowser.beta' => 'Oupeng Browser', + 'com.myboyfriendisageek.airbrowser' => 'OverSkreen', + 'com.panasonic.pavc.viera.vieraremote2' => 'Panasonic TV Remote', + 'com.wPcBrowser' => 'PC Browser Mini', + 'com.penguinbrowser.penguinbrowser' => 'Penguin browser', + 'com.appsverse.photon' => 'Photon Browser', + 'com.appsverse.photonamazon' => 'Photon Browser', + 'com.levelup.touiteur' => 'Plume', + 'com.ideashower.readitlater.pro' => 'Pocket', + 'com.gflam.portal' => 'Portal', + 'com.hat.privatebrowser' => 'Private Browser', + 'com.JamesBecwar.FreePrivateBrowser' => 'Private Browser', + 'com.JamesBecwar.PrivateBrowser' => 'Private Browser', + 'com.qihoa.browser' => 'Qihoo 360 Browser', + 'com.qihoo.androidbrowser' => 'Qihoo 360 Browser', + 'com.qihoo.appstore' => 'Qihoo 360 Browser', + 'com.qihoo.browser' => 'Qihoo 360 Browser', + 'com.qihoo.browsertest' => 'Qihoo 360 Browser', + 'com.qihoo.express.browser' => 'Qihoo 360 Browser', + 'com.qihoo.expressbrowser' => 'Qihoo 360 Browser', + 'com.qihoo.haosou' => 'Qihoo 360 Browser', + 'com.qihoo.padbrowser' => 'Qihoo 360 Browser', + 'com.qihoo.padbrowser7' => 'Qihoo 360 Browser', + 'com.qihoo360.mobilesafe' => 'Qihoo 360 Browser', + 'com.qihoo360.mobilesafe_meizu' => 'Qihoo 360 Browser', + 'com.qihoo360.mobilesafe_mtk6573' => 'Qihoo 360 Browser', + 'com.tencent.android.pad' => 'QQ Browser', + 'com.tencent.blink' => 'QQ Browser', + 'com.tencent.hd.qq' => 'QQ Browser', + 'com.tencent.internat.mtt' => 'QQ Browser', + 'com.tencent.international.mtt' => 'QQ Browser', + 'com.tencent.mobileqq' => 'QQ Browser', + 'com.tencent.mtt' => 'QQ Browser', + 'com.tencent.padbrowser' => 'QQ Browser', + 'appinventor.ai_progetto2003.SCAN' => 'QR Barcode Scanner', + 'com.rarster.QuantumBrowser' => 'QuantumBrowser', + 'net.virifi.android.quickbrowser' => 'Quick ICS Browser', + 'net.virifi.android.quickbrowserpro' => 'Quick ICS Browser', + 'com.bjy.quicklinkbrowser' => 'Quick Link Browser', + 'com.rapid.browser' => 'Rapid Browser Pro', + 'com.rapid.browser2' => 'Rapid Browser Pro', + 'com.andrewshu.android.reddit' => 'Reddit is fun', + 'com.andrewshu.android.redditdonation' => 'Reddit is fun', + 'reddit.news' => 'Reddit News', + 'com.laurencedawson.reddit_sync.dev' => 'Reddit Sync Dev', + 'com.laurencedawson.reddit_sync.pro' => 'Reddit Sync Pro', + 'org.quantumbadger.redreader' => 'RedReader', + 'de.bomhard.android.RetroBrowser' => 'RetroBrowser', + 'com.rocket.browser' => 'Rocket Browser', + 'com.springdesign.screenshare.browser.client' => 'ScreenShare', + 'com.springdesign.screenshare.browser.server' => 'ScreenShare', + 'com.shark.sharkbrowser' => 'Shark Browser', + 'com.sina.weibo' => 'Sina Weibo', + 'com.sina.weibog3' => 'Sina Weibo', + 'com.sithagi.sithbrowser' => 'Sith Browser', + 'com.skyfire.browser' => 'SkyFire', + 'com.skyfire.browser.toolbar' => 'SkyFire', + 'com.skyfire.consumer.browser' => 'Skyfire', + 'jp.co.fenrir.android.sleipnir' => 'Sleipnir', + 'jp.co.fenrir.android.sleipnir_black' => 'Sleipnir', + 'jp.co.fenrir.android.sleipnir_ngp' => 'Sleipnir', + 'jp.co.fenrir.android.sleipnir_test' => 'Sleipnir', + 'jp.gocro.smartnews.android' => 'SmartNews', + 'com.cmcc.sofabrowser' => 'Sofa Browser', + 'sogou.mobile.explorer' => 'Sogou Mobile', + 'com.solo.browser' => 'Solo', + 'com.sonymobile.smallbrowser' => 'Sony Small Browser', + 'com.speedy.browser' => 'Speedy Browser', + 'com.appestry.split_browser' => 'Split Browser', + 'com.appestry.split_browser_trial' => 'Split Browser', + 'com.stumbleupon.android.app' => 'StumbleUpon', + 'iron.web.jalepano.browser' => 'Super Fast Browser', + 'com.gears42.surefox' => 'SureFox', + 'com.mns.android.swing' => 'Swing Browser', + 'net.biniok.tampermonkey' => 'Tampermonkey', + 'com.tcl.browser' => 'TCL Browser', + 'com.thuban.browser' => 'Thuban Handset Browser', + 'org.tint' => 'Tint Browser', + 'com.twidroid' => 'UberSocial', + 'com.uc.browser' => 'UC Browser', + 'com.uc.browser.en2ly5' => 'UC Browser', + 'com.uc.browser.hd.x86' => 'UC Browser', + 'com.uc.browser.hdx3kg' => 'UC Browser', + 'com.UCMobile' => 'UC Browser', + 'com.UCMobile.labs' => 'UC Browser', + 'com.UCMobile.ucsdk' => 'UC Browser', + 'com.UCMobile295d' => 'UC Browser', + 'com.UCMobile2jm4' => 'UC Browser', + 'com.UCMobile9jpo' => 'UC Browser', + 'com.UCMobileodw6' => 'UC Browser', + 'com.uc.browser.hd' => 'UC Browser HD', + 'com.uc.browser.en' => 'UC Browser Mini', + 'com.tencent.mm' => 'WeChat', + 'sui.mRelease' => 'xScope Browser Pro', + 'jp.co.yahoo.android.ybrowser' => 'Yahoo! JAPAN', + 'jp.co.yahoo.android.yjtop' => 'Yahoo! JAPAN', + 'ru.yandex.shell' => 'Yandex Shell', + 'com.zetakey.browser' => 'Zetakey', + 'org.zirco' => 'Zirco Browser', + 'com.zte.browser' => 'ZTE Browser', +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-android.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-android.php new file mode 100644 index 0000000..89ebb5a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-android.php @@ -0,0 +1,8273 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$ANDROID_INDEX = array ( + '@' => + array ( + 0 => 'A[0-9]{3,3}!!', + 1 => 'E[0-9]{2,2}0?!!', + 2 => 'S[0-9]{2,2}0?!!', + 3 => 'V[0-9]{2,2}0!!', + 4 => 'Z[0-9]{3,3}!!', + 5 => '[0-9]0[0-9]F!!', + 6 => '(Haier[- ])?H[ETW]- ?[A-Z][0-9]!!', + 7 => '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', + 8 => '[SX06][0-9]{2,2}HT!!', + 9 => '(Huawei )?[MSTX](1|2|7|8|10)\\-[A-Z0-9][0-9]{2,2}!!', + 10 => 'G[0-9]{3,3}!!', + 11 => 'Y[0-9]{3,3}!!', + 12 => '[0-9AS][0-9]{2,2}HW!!', + 13 => '(USCC-|KYOCERA-)?E[0-9]{4,4}!!', + 14 => '(USCC-|KYOCERA-)?C[0-9]{4,4}!!', + 15 => '[0-9]0[0-9]KC?!!', + 16 => 'K\\-?Touch!!', + 17 => '(Lenovo ?)?(IdeaTab ?)?[AB][0-9]{4,4}!!', + 18 => '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', + 19 => '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!', + 20 => '[0-9]0[0-9]LG!!', + 21 => 'M\\-PP!!', + 22 => 'M\\-MP!!', + 23 => 'M\\-IPRO!!', + 24 => '(MEDION|(MD )?LIFETAB)!!', + 25 => 'M\\.T\\.T\\.!!', + 26 => 'O\\+!!', + 27 => '[0-9]{2,2}PFH6[0-9]{3,3}!', + 28 => '(?:RIVO )?RHYTHM RX ?([0-9]+)!', + 29 => '[4567A]0[0-9]SH!!', + 30 => '(3|5|6|7)0[0-9]SH!!', + 31 => 'C[0-9]{4,4}!!', + 32 => 'D[0-9]{4,4}!!', + 33 => 'E[0-9]{4,4}!!', + 34 => 'F[0-9]{4,4}!!', + 35 => 'G[0-9]{4,4}!!', + 36 => 'H[0-9]{4,4}!!', + 37 => 'E[0-9]{2,2}[a-z]!!', + 38 => 'L[0-9]{2,2}[a-z]!!', + 39 => '(SNM\\-)?M[0-9]{2,2}[a-z]!!', + 40 => 'S[0-9]{2,2}[a-z]!!', + 41 => '(XOLO )?[ABQX][0-9]{3,4}!!', + 42 => '(ZTE ?)?N[0-9]{3,3}!!', + 43 => '(ZXY-)?(ZTE )?N[0-9]{4,4}!!', + 44 => '(ZTE ?)?U[0-9]{3,3}!!', + 45 => '(ZTE ?)?V[0-9]{3,3}[A-Z]!!', + 46 => '(ZTE ?)?V ?[0-9]{3,3}!!', + 47 => '(ZTE ?)?X[0-9]{3,3}!!', + 48 => '(ZTE )?Z[0-9]!!', + 49 => '[a-z][a-z](?:-[a-z][a-z])?, SmartTabII7!', + ), + '@00' => + array ( + 0 => '001DL', + 1 => '003P', + 2 => '003Z', + 3 => '008Z', + 4 => '009Z', + ), + '@0P' => + array ( + 0 => '0PCV1', + 1 => '0PM92', + 2 => '0PJA1!', + 3 => '0PJA2!', + 4 => '0PKV1', + 5 => '0PAJ5', + ), + '@10' => + array ( + 0 => '101DL', + 1 => '101N', + 2 => '101T', + 3 => '101P', + 4 => '102P', + ), + '@11' => + array ( + 0 => 1105, + 1 => 1107, + ), + '@12' => + array ( + 0 => '1216[X]!', + 1 => 1201, + ), + '@15' => + array ( + 0 => '1501-A02', + 1 => '1501 M02', + 2 => '1501-M02', + 3 => '1503-A01', + 4 => '1503-M02', + 5 => '1505-A01', + 6 => '1505-A02', + ), + '@16' => + array ( + 0 => '1605-A01', + 1 => '1607-A01', + ), + '@17' => + array ( + 0 => '1713-A01', + ), + '@18' => + array ( + 0 => '1801-A01', + ), + '@2 ' => + array ( + 0 => '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', + ), + '@20' => + array ( + 0 => '201M', + 1 => '(Xiaomi )?20!!', + 2 => '(Xiaomi |HM)?20!!', + ), + '@2P' => + array ( + 0 => '2PQ93', + 1 => '2PS64', + ), + '@3' => + array ( + 0 => '(3|5|6|7)0[0-9]SH!!', + ), + '@36' => + array ( + 0 => '360 N4S', + ), + '@3G' => + array ( + 0 => '3G7334i', + 1 => '(Lenovo |Lephone )?3GC101!', + 2 => '(Lenovo |Lephone )?3GW100!', + 3 => '(Lenovo |Lephone )?3GW101!', + ), + '@40' => + array ( + 0 => '4002[X]!', + 1 => '4003[AJ]!', + 2 => '4007[D]!', + 3 => '4008[A]!', + 4 => '4009[ADEFIKMSX]!', + 5 => '4013[ADEJKMX]!', + 6 => '4014[AMX]!', + 7 => '4015[ANTX]!', + 8 => '4015[D]!', + 9 => '4016[ADX]!', + 10 => '4017[ADEFX]!', + 11 => '4018[ADEFMX]!', + 12 => '4024[DEX]!', + 13 => '4027[ADNX]!', + 14 => '4028[AEJS]!', + 15 => '4032[ADEX]!', + 16 => '4033[AL]!', + 17 => '4034[ADEFGX]!', + 18 => '4035[ADYX]!', + 19 => '4036[E]!', + 20 => '4037[AX]!', + 21 => '4037[T]!', + 22 => '4037[V]!', + 23 => '4045[ADEFLOYX]!', + 24 => '4055[JU]!', + 25 => '4060[A]!', + 26 => '4060[W]!', + 27 => '40[0-9]SC!!', + 28 => '40[0-9]SO!!', + 29 => '402ZT', + ), + '@48' => + array ( + 0 => '(48|50|55)AX600C!', + ), + '@5' => + array ( + 0 => '(3|5|6|7)0[0-9]SH!!', + ), + '@50' => + array ( + 0 => '5010[DEGSUX]!', + 1 => '5012[G]!', + 2 => '5015[ADEX]!', + 3 => '5016[AJ]!', + 4 => '5017[B]!', + 5 => '5017[ADEOX]!', + 6 => '5019[D]!', + 7 => '5020[A]!', + 8 => '5022[DEX]!', + 9 => '5023[F]!', + 10 => '5025[DEGX]!', + 11 => '5027[B]!', + 12 => '5036[D]!', + 13 => '5038[ADEX]!', + 14 => '5042[ADEFGTWXY]!', + 15 => '5044[ADOY]!', + 16 => '5045[ADGJTX]!', + 17 => '5046[DGJY]!', + 18 => '5047[DUY]!', + 19 => '5049[EGSWZ]!', + 20 => '5050[ASYX]!', + 21 => '5051[ADJMX]!', + 22 => '5052[D]!', + 23 => '5054[ADOSTX]!', + 24 => '5054[NW]!', + 25 => '5056[ADENUWX]!', + 26 => '5056[O]!', + 27 => '5057[M]!', + 28 => '5065[ADJNWX]!', + 29 => '5070[DJX]!', + 30 => '5080[DFQX]!', + 31 => '5085[CDJNY]!', + 32 => '5090[Y]!', + 33 => '5095[BIKY]!', + 34 => '5096[AI]!', + 35 => '5098[OS]!', + 36 => '5099[ADY]!', + 37 => '504Q', + 38 => '504Q+', + 39 => '504QP', + 40 => '501LV', + 41 => '(48|50|55)AX600C!', + 42 => '5080C Pro', + 43 => '50[0-9]SO!!', + 44 => '502ZT', + ), + '@55' => + array ( + 0 => '5560S', + 1 => '(48|50|55)AX600C!', + ), + '@58' => + array ( + 0 => 5832, + 1 => 5855, + 2 => 5860, + 3 => '5860A', + 4 => '5860E', + 5 => '5860S', + 6 => 5870, + ), + '@6' => + array ( + 0 => '(3|5|6|7)0[0-9]SH!!', + ), + '@60' => + array ( + 0 => '6014[DX]!', + 1 => '6016[ADEX]!', + 2 => '6031[X]!', + 3 => '6036[AYX]!', + 4 => '6037[BIKY]!', + 5 => '6039[AHJKSY]!', + 6 => '6042[D]!', + 7 => '6043[AD]!', + 8 => '6044D', + 9 => '6045[BFGIKOXY]!', + 10 => '6050[AFWY]!', + 11 => '6055[ABDHIKPUY]!', + 12 => '6070[KOY]!', + 13 => '602LV', + 14 => '60[0-9]SO!!', + 15 => '602ZT', + 16 => '6034R ORANGE Niva', + ), + '@70' => + array ( + 0 => '7030[L]!', + 1 => '7040[DNR]!', + 2 => '7040[T]!', + 3 => '7043[AEKY]!', + 4 => '7044[AXY]!', + 5 => '7045[Y]!', + 6 => '7046[T]!', + 7 => '7048[ASWX]!', + 8 => '7050[Y]!', + 9 => '7051[X]!', + 10 => '7053[D]!', + 11 => '7055[AW]!', + 12 => '704DC', + 13 => '70[0-9]SO!!', + ), + '@71' => + array ( + 0 => '710C', + ), + '@72' => + array ( + 0 => 7260, + 1 => 7266, + ), + '@75' => + array ( + 0 => '7500IPS', + ), + '@7D' => + array ( + 0 => '7D-501u', + ), + '@80' => + array ( + 0 => '8020[D]!', + 1 => '8030[BY]!', + 2 => 8022, + 3 => '801ES', + 4 => '80-1', + 5 => '801a', + 6 => '801s', + 7 => '802w', + 8 => '800P31C', + ), + '@81' => + array ( + 0 => '8190Q', + ), + '@82' => + array ( + 0 => '825 T-Mobile', + ), + '@83' => + array ( + 0 => '831C', + ), + '@86' => + array ( + 0 => '8681-M02', + 1 => '8692-M02', + ), + '@87' => + array ( + 0 => 8720, + 1 => '8720L', + ), + '@88' => + array ( + 0 => 8810, + ), + '@89' => + array ( + 0 => 8950, + ), + '@8X' => + array ( + 0 => '8x-1000', + ), + '@90' => + array ( + 0 => '9001[DIX]!', + 1 => '9002[AWX]!', + 2 => '9003[AX]!', + 3 => '9005[X]!', + 4 => '9006[W]!', + 5 => '9007[ATX]!', + 6 => '9008[ADIJTUX]!', + 7 => '9010[X]!', + 8 => '9015[BJWQ]!', + 9 => '9022[SX]!', + 10 => '9024[OW]!', + 11 => '9025[MQ]!', + 12 => '9021[AM]!', + 13 => '909d', + 14 => 9088, + 15 => '9020[A]!', + ), + '@93' => + array ( + 0 => 9300, + 1 => '9300+', + 2 => '932i', + ), + '@97' => + array ( + 0 => '97FC', + ), + '@A0' => + array ( + 0 => 'A001', + 1 => 'A0001', + 2 => 'A0002', + 3 => 'A05510', + ), + '@A1' => + array ( + 0 => 'A1-[0-9]{3,3}!!', + 1 => 'A10', + 2 => 'A13-?MID!', + 3 => 'A101B', + 4 => 'A101C', + 5 => 'A101B2-LZ', + 6 => 'A101IT', + 7 => 'A10 MID', + 8 => 'A10MID', + 9 => 'A101B-CF', + 10 => 'A1001T', + 11 => '(GIO-)?(GiONEE[- ])?A1$!', + 12 => 'A19S', + 13 => 'A11', + 14 => 'A111', + 15 => 'A106', + 16 => 'A1 07', + 17 => 'A13', + 18 => 'A110Q', + 19 => 'A110Q Canvas 2 Plus', + 20 => 'A110Q Canvas 2+', + 21 => 'A1680', + 22 => 'A1001', + 23 => 'A11w', + 24 => 'A1603', + 25 => 'A1601', + 26 => 'A10H(D5W6)', + 27 => 'A10HD(N9A3)', + 28 => 'A10t(5DM3)', + 29 => 'A10T(8DM1)', + 30 => 'A11(M5A7)', + 31 => 'A11s(M5A7)', + 32 => 'A15(E6C2)', + ), + '@A2' => + array ( + 0 => 'A206G', + 1 => 'A2', + 2 => 'A21', + ), + '@A3' => + array ( + 0 => 'A3-A[0-9]{2,2}!!', + 1 => 'A32', + 2 => 'A35DE', + 3 => 'A320a', + 4 => 'A3380', + 5 => 'A30t', + 6 => 'A380T', + 7 => 'A31', + 8 => 'A31c', + 9 => 'A31t', + 10 => 'A33f', + 11 => 'A33w', + 12 => 'A37f', + 13 => 'A37fw', + 14 => 'A3', + ), + '@A4' => + array ( + 0 => 'A450TL', + 1 => 'A460G', + 2 => 'A460T', + 3 => 'A462C', + 4 => 'A463BG', + 5 => 'A464BG', + 6 => 'A466BG', + 7 => 'A466T', + 8 => 'A480G', + 9 => 'A43', + 10 => 'A400CG', + 11 => 'A45', + 12 => 'A47', + 13 => 'A4', + ), + '@A5' => + array ( + 0 => 'A520L', + 1 => 'A520R', + 2 => 'A521L', + 3 => 'A554C', + 4 => 'A556C', + 5 => 'A560G', + 6 => 'A562G', + 7 => 'A564R', + 8 => 'A564C', + 9 => 'A570BL', + 10 => 'A571VL', + 11 => 'A573VC', + 12 => 'A5 Easy', + 13 => 'A5 Easy TM', + 14 => 'A5 Lite', + 15 => 'A5 Quad Plus', + 16 => 'A5 Quad Plus TM', + 17 => 'A500CG', + 18 => 'A55i', + 19 => 'A52', + 20 => 'A51f', + 21 => 'A51w', + 22 => 'A5000', + 23 => 'a5', + ), + '@A6' => + array ( + 0 => 'A621BL', + 1 => 'A621R', + 2 => 'A622GL', + 3 => 'A622VL', + 4 => 'A6 Duo', + 5 => 'A6 Lite', + 6 => 'A6277', + 7 => 'A6020', + 8 => 'A6S', + ), + '@A7' => + array ( + 0 => 'A7 Lite', + 1 => 'A726T', + 2 => 'A70HB', + 3 => 'A70BHT', + 4 => 'A70BHT-LZ', + 5 => 'A70BHT-PR', + 6 => 'A70CHT', + 7 => 'A70H', + 8 => 'A70S', + 9 => 'A7EB', + 10 => 'a7272', + 11 => 'A7272+(HTC DesireZ)', + 12 => 'A7 HD', + 13 => 'A7*', + 14 => 'A7+', + 15 => 'A708T', + 16 => 'A750', + 17 => 'A7000-a', + 18 => 'A7010a48', + 19 => 'A7272+', + 20 => 'A70(CY6T)', + 21 => 'A78h四核(C1V3)', + ), + '@A8' => + array ( + 0 => 'A845L', + 1 => 'A846L', + 2 => 'A851L', + 3 => 'A862W', + 4 => 'A80KSC!', + 5 => 'A80HF', + 6 => 'A89', + 7 => 'A820t', + 8 => 'A87', + 9 => 'A853', + 10 => 'A853 Milestone', + 11 => 'A878 Duo', + 12 => 'A898 Duo', + 13 => 'A8HD', + 14 => 'A80håŒæ ¸(A4P9)', + 15 => 'A80 se??(M5MA)', + 16 => 'A80 se四核(M5MC)', + 17 => 'A80HD四核(C4H6)', + 18 => 'A88 mini四核(M1C5)', + 19 => 'A81E', + ), + '@A9' => + array ( + 0 => 'A995L', + 1 => 'A95', + 2 => 'A97i', + 3 => '(GIO-)?(GiONEE[- ])?A9$!', + 4 => 'A90S', + 5 => 'A953', + 6 => 'A955', + ), + '@AA' => + array ( + 0 => 'AA3-600', + ), + '@AC' => + array ( + 0 => 'Acer Chromebook R11', + 1 => 'Acer Chromebook R11 (CB5-132T / C738T)', + 2 => 'Acer Chromebook 15 (CB3-532)', + 3 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 4 => 'AC45BHE', + 5 => 'AC50BHE', + 6 => 'AC50DHE', + 7 => 'AC45NE', + 8 => 'ACM3066-8', + 9 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 10 => 'ACT2000', + 11 => 'ACU Volvo', + 12 => 'Acqua', + ), + '@AD' => + array ( + 0 => 'ADT-1', + 1 => 'ADVAN Q7A', + 2 => 'ADVAN E1C+', + 3 => 'ADVAN S3', + 4 => 'ADVAN S3+', + 5 => 'ADVAN S3A', + 6 => 'ADVAN S3C', + 7 => 'ADVAN S3C 3502', + 8 => 'ADVAN S4', + 9 => 'ADVAN S4+', + 10 => 'ADVAN S4A', + 11 => 'ADVAN S4C', + 12 => 'ADVAN S4E', + 13 => 'Advan S4P [Official]', + 14 => 'ADVAN S5E', + 15 => 'ADVAN S5E Pro', + 16 => 'ADVAN S5F+', + 17 => 'ADVAN S5H', + 18 => 'ADVAN S5I', + 19 => 'Advan S5K', + 20 => 'ADVAN S5M', + 21 => 'ADVAN S5Q', + 22 => 'ADVAN S6A', + 23 => 'ADVAN T1G', + 24 => 'ADVAN T1J', + 25 => 'ADVAN T1J+', + 26 => 'ADVAN T1L', + 27 => 'ADVAN T1M', + 28 => 'ADVAN T1X', + 29 => 'ADVAN T2E', + 30 => 'ADVAN T2F', + 31 => 'ADVAN T3E+', + 32 => 'ADVAN T5C', + 33 => 'Advent Vega', + 34 => 'ADR3010', + 35 => 'AD683G', + 36 => '(HTC|PCD|USCC)?ADR[0-9]{4,4}!!', + 37 => 'Adam', + 38 => 'ADM816KC', + 39 => 'ADM816HC', + 40 => 'ADM712HC', + 41 => 'ADM8000KP A', + 42 => 'ADM8000KP B', + 43 => 'ADR8995!', + 44 => 'ADR910L', + 45 => 'ADR910L 4G', + 46 => 'ADR930L', + 47 => 'ADR930L 4G', + 48 => 'AD686G', + 49 => 'AD687G', + 50 => 'AD6893G', + 51 => 'AD682H', + 52 => 'Admire Alpha', + 53 => 'Admire Curve', + ), + '@AE' => + array ( + 0 => 'Aero A2-110', + 1 => 'Aegis2', + ), + '@AF' => + array ( + 0 => 'AFTB', + 1 => 'AFTS', + 2 => 'AFTN', + 3 => 'AFTRS', + 4 => 'AFTM', + 5 => 'AFTT', + ), + '@AG' => + array ( + 0 => 'AG Chrome Selfie', + 1 => 'AG CHROME ULTRA', + 2 => 'AG Tab 7 0', + 3 => 'AG Go-Tab Access', + 4 => 'AG Chrome Go Tab 7.0', + 5 => 'AGS-(L09|W09)!', + 6 => '(KATBL|Kogan|Agora)!!', + ), + '@AI' => + array ( + 0 => 'aigoPad', + 1 => 'aigoPadM60', + 2 => 'AigoPad M60', + 3 => 'aigoPad M80D', + 4 => 'aigoPad M80E', + 5 => 'Ainovo Aurora-II', + 6 => 'Ainovo Flame (Nexus 7)', + 7 => 'AIRIS GN135', + 8 => 'AIRIS S211', + 9 => 'AIRIS TM([0-9]+[A-Z]*)!', + 10 => 'AIRIS OnePAD 725', + 11 => 'AIRIS OnePAD700', + 12 => 'AIRIS OnePAD 730', + 13 => 'AirisOnePad1000', + 14 => 'AirBook TTJ702', + 15 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 16 => 'Air!!', + 17 => 'Aiki-4S', + 18 => 'Aiki-5', + ), + '@AK' => + array ( + 0 => 'AK330', + 1 => 'AK330s', + 2 => 'AKAI NEO', + 3 => 'AKAI N8800', + 4 => 'AKAI PHA-4800', + 5 => 'AKAIPHA 5800', + 6 => 'AKAI MIDMA-7002S', + ), + '@AL' => + array ( + 0 => 'alien jolla bionic', + 1 => 'alien ubuntu qt', + 2 => 'Alcatel A851L', + 3 => 'Alcatel one touch 908F', + 4 => 'Alcatel one touch 918', + 5 => 'Alcatel ONETOUCH 918', + 6 => 'ALCATEL OT 919', + 7 => 'Alcatel one touch 990', + 8 => 'Alcatel one touch 990S', + 9 => 'Alcatel OT M\'pop 5020D', + 10 => 'Alcatel 5098O', + 11 => 'Alcatel 7046T', + 12 => 'Alcatel 7049D', + 13 => 'Alcor Access Q913M', + 14 => 'Alcor Zest Q813I', + 15 => 'Alcor Zest Q813IS', + 16 => 'Alcor Zest Q813IX', + 17 => 'Alcor Zest Q933R', + 18 => 'ALLVIEW A4ALL', + 19 => 'ALLVIEW A6 Quad', + 20 => 'ALLVIEW P1', + 21 => 'Allview P2', + 22 => 'ALLVIEW P4', + 23 => 'ALLVIEW P4i', + 24 => 'Allview P5', + 25 => 'Allview P5-Mini', + 26 => 'ALLVIEW P5 Quad', + 27 => 'ALLVIEW P5 Qmax', + 28 => 'ALLVIEW P6', + 29 => 'ALLVIEW P6 Quad', + 30 => 'ALLVIEW TX1 Quasar', + 31 => 'ALLVIEW X2 Soul', + 32 => 'ALLVIEW-X3 Soul', + 33 => '(Allview|Alldro)!!', + 34 => 'Allwinner A10', + 35 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 36 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 37 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 38 => 'Alfa A93 POP', + 39 => 'Alfa L', + 40 => 'Ally', + 41 => 'Altus 18', + 42 => 'Altus 24', + ), + '@AM' => + array ( + 0 => 'amd brazos', + 1 => 'amd persimmon', + 2 => 'Amlogic M1 reference board', + 3 => 'AML8726M', + 4 => 'AMLOGIC8726MX', + 5 => 'AM335XEVM', + 6 => 'AM335XEVM SK', + 7 => 'am3517evm', + 8 => 'AM437XEVM', + 9 => 'AM-H200', + 10 => 'Amazon Kindle Fire!', + 11 => 'Amazon Otter', + 12 => 'Amazon OtterX', + 13 => 'Amazon Otter2', + 14 => 'Amazon Tate', + 15 => 'Amazon Jem', + 16 => 'AMI-TT2', + 17 => 'AMI-TT2C', + 18 => 'AMI-TT2E', + 19 => 'AMI-TT4', + 20 => 'AMI-TTS', + 21 => 'AMI-TTLITE', + 22 => 'AMI-TTFORCE', + 23 => 'AML-MX REF', + 24 => '(AMO-)?AMOI!!', + 25 => 'AMD120', + 26 => '(Amaze|Hitech)!!', + 27 => 'Amaze 4G', + 28 => '(Amazing|Fantastic)!!', + ), + '@AN' => + array ( + 0 => 'Android', + 1 => 'Android-for-Rockchip-2818', + 2 => 'AN7CG2', + 3 => 'AN7G2', + 4 => 'AN7G2DTE', + 5 => 'AN7G2I', + 6 => 'AN7G3', + 7 => 'AN7BG2', + 8 => 'AN7BG2DT', + 9 => 'AN7BG3', + 10 => 'AN7CG3', + 11 => 'AN7DG3', + 12 => 'AN7DG3B', + 13 => 'AN7DG3-CP', + 14 => 'AN7DG3ST-CP', + 15 => 'AN7FG3', + 16 => 'AN7HG3', + 17 => 'AN7IG3', + 18 => 'AN7SP', + 19 => 'AN8G2', + 20 => 'AN8G2I', + 21 => 'AN8G3', + 22 => 'AN8BG2', + 23 => 'AN8BG3', + 24 => 'AN8CG3', + 25 => 'AN9G2', + 26 => 'AN9G2I', + 27 => 'AN9G3', + 28 => 'AN10G2', + 29 => 'AN10G2-KN', + 30 => 'AN10G2-LN', + 31 => 'AN10G2I', + 32 => 'AN10BG2', + 33 => 'AN10BG2DT', + 34 => 'AN10BG2I', + 35 => 'AN10BG3', + 36 => 'AN10BG3DT', + 37 => 'AN10CG3', + 38 => 'AN10DG3', + 39 => 'AN13FP', + 40 => 'AN8BG3-LZ', + 41 => 'AN10G2-LZ', + 42 => 'AN10BG3-LZ', + 43 => 'AN7DG3C', + 44 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 45 => '(iBall )?Andi!!', + 46 => 'AND1', + 47 => 'AND1E', + 48 => 'AND1E TV', + 49 => 'Android edition by sfr STARADDICT', + 50 => 'Android Edition Starnaute', + 51 => 'Android Edition StarText', + 52 => 'Android Edition StarTrail', + 53 => '(Smartfren|Andromax)!!', + 54 => 'Androtab 7', + 55 => '(Starway )?Andromeda!!', + 56 => '(Andy|Yezz)!!', + ), + '@AO' => + array ( + 0 => 'AOLE 828', + 1 => 'AOSON G18', + 2 => 'Aoson M11', + 3 => 'Aoson M19', + 4 => 'aoson m33', + 5 => 'aoson M33 3G', + 6 => 'AOSON M82T', + 7 => 'AOSON M97F', + 8 => 'AOSON M106NB', + 9 => 'AOSON M701TG-C', + 10 => 'AOSON M706T', + 11 => 'AOSON M721S', + 12 => 'aoson M787T', + 13 => 'AOSON M1016', + 14 => '(cm|aokp) tenderloin!', + 15 => 'AO5510', + ), + '@AP' => + array ( + 0 => 'App Runtime for Chrome', + 1 => 'apollo', + 2 => 'Apanda.A60!', + 3 => 'apanda-A80S', + 4 => 'apanda A80S', + 5 => 'apanda-A80T', + 6 => 'apanda-A100', + 7 => 'apanda-A101', + 8 => 'Aprix D97+', + ), + '@AQ' => + array ( + 0 => '(bq|Aquaris|Edison|Maxwell)!!', + 1 => 'Aquila 070-0508', + 2 => 'Aquila 070-0508 3G', + 3 => 'Aquila 080-0508', + 4 => 'AQUILA 080-1008', + 5 => 'Aquila 097-0508', + 6 => 'AQUILA 097-1006', + 7 => 'AQUILA 097-1016', + 8 => 'AQUILA 097-1016 BT + 3G', + 9 => 'AQUILA 097-1016 BT 3G', + 10 => 'Aquila 101', + 11 => 'Aquila 101-1008 3G', + 12 => 'Aquila LE 080-0508', + 13 => 'Aquila SE 090-0508', + 14 => '(Intex )?Aqua!!', + 15 => 'AQUOS!!', + 16 => 'aqua', + 17 => 'AQT80', + ), + '@AR' => + array ( + 0 => 'ARCHM901', + 1 => 'Arnova 7G2', + 2 => 'ARNOVA8G2', + 3 => 'Arnova 10G2', + 4 => 'ARNOVA 90G3', + 5 => 'ARNOVA 90 G4', + 6 => 'ARNOVA 97G4', + 7 => 'ARNOVA 101 G4', + 8 => 'ARCHOS 50PL', + 9 => 'ARCHOS 79XE', + 10 => 'Archos5', + 11 => 'ARCHOS 70it2', + 12 => 'ARCHOS 70it2G8', + 13 => 'Archos 80 Internet Tablet', + 14 => 'Archos 101 Internet Tablet', + 15 => 'Archos!!', + 16 => 'Artes D708', + 17 => 'Artes D821', + 18 => 'Artes i701', + 19 => 'ARTES I709', + 20 => 'Artes Q812', + 21 => 'Arya A1+', + 22 => 'Arya Z2', + 23 => 'ARMM2V', + 24 => 'ARMM3V', + 25 => 'arrowsM03', + 26 => 'ARIES 101', + 27 => 'ARIES 785', + 28 => 'ARA YS608', + 29 => 'Arctic450', + 30 => 'Arc', + 31 => 'Arc S', + ), + '@AS' => + array ( + 0 => 'ASUS Chromebook Flip C100PA', + 1 => 'ASUS Chromebook Flip C302', + 2 => 'Astone A108', + 3 => 'aspire1000s', + 4 => 'Aspire!!', + 5 => 'ASK SP[0-9]{3,3}!!', + 6 => 'ASTRI', + 7 => 'asus laptop', + 8 => 'ASUS T20', + 9 => 'ASUS Pad ME370T', + 10 => 'Asus Fonepad ME371MG 8GB', + 11 => 'AST21', + 12 => 'asus google cube', + 13 => 'ASP-4300W', + 14 => 'ASP-4500Z', + 15 => 'ASP-5000H', + 16 => 'Asus A10', + 17 => '(Huawei|Ascend|HW-)!!', + 18 => 'AS740', + 19 => 'AS870 4G', + 20 => 'AS985', + 21 => 'AS650C', + 22 => 'Aster', + 23 => 'Aster T', + ), + '@AT' => + array ( + 0 => 'AT390', + 1 => 'AT102HC', + 2 => 'AT104GS', + 3 => 'AT107F', + 4 => 'AT108F', + 5 => 'AT197F', + 6 => 'AT10H-A10WP', + 7 => 'AT101-014', + 8 => 'AT101T-114', + 9 => 'AT1A*', + 10 => 'AT1C', + 11 => 'AT1C*', + 12 => 'AT1D', + 13 => 'AT1G*', + 14 => 'AT7E', + 15 => 'ATP515CKIT', + 16 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 17 => 'aTab9.7 IPS', + 18 => 'AT735', + 19 => 'Atrix 2', + 20 => 'Atrix 2 WeifanZ', + 21 => 'Atrix 4G', + 22 => 'Atrix 4G ME860', + 23 => 'Atrix 4G MB860', + 24 => 'Atrix HD', + 25 => 'AtrixHD', + 26 => 'ATLANTIS', + 27 => 'ATP7526', + 28 => 'ATP7683', + 29 => 'AT1S0', + 30 => 'AT7-A', + 31 => 'AT7-B', + 32 => 'AT7-C', + 33 => 'AT10-A', + 34 => 'AT10LE-A', + 35 => 'AT10PE-A', + 36 => 'AT100', + 37 => 'AT200', + 38 => 'AT270', + 39 => 'AT300', + 40 => 'AT300SE', + 41 => 'AT330', + 42 => 'AT374', + 43 => 'AT400', + 44 => 'AT470', + 45 => 'AT500', + 46 => 'AT500a', + 47 => 'AT503', + 48 => 'AT570', + 49 => 'AT703', + 50 => 'AT830', + 51 => 'AT-A[QS][0-9]{2,2}!!', + 52 => 'ATLAS W', + ), + '@AU' => + array ( + 0 => 'Aurora-II', + 1 => 'AUX!!', + 2 => '(Aura|iberry|AUXUS)!!', + 3 => 'AURUS III', + ), + '@AV' => + array ( + 0 => 'Avea!!', + 1 => '(Ilium )?Avvio!!', + ), + '@AX' => + array ( + 0 => 'AX3Party', + 1 => 'AX4Nano plus', + 2 => '(Axioo[\\- ])?PICO!!', + 3 => '(AXPAD|Axxion)!!', + 4 => '(Bmobile )?AX[0-9]{3,4}!!', + 5 => 'AX7OO', + 6 => 'AX600C', + ), + '@AZ' => + array ( + 0 => 'Azumi!!', + 1 => '(AZ|BT)[0-9]{3,3}!!', + ), + '@B1' => + array ( + 0 => 'B1-[A0-9][A0-9]{2,2}!!', + 1 => 'B15', + 2 => 'B15Q', + ), + '@B3' => + array ( + 0 => 'B3-A10', + 1 => 'B3-A20', + 2 => 'B3-A20B', + 3 => 'B3-A30', + 4 => 'B3-A32', + 5 => 'B3-A40', + 6 => 'B3-A40FHD', + 7 => 'B3000', + ), + '@B9' => + array ( + 0 => 'B916C', + ), + '@BA' => + array ( + 0 => 'Bay Trail Generic Platform', + 1 => 'Bayley Bay', + 2 => 'baoxue', + 3 => 'Barnes & Noble Nook Tablet', + 4 => 'Barnes & Noble Nook HD', + 5 => 'Barnes & Noble Nook HD+', + 6 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 7 => 'BAH-(W09|AL00|L09)!', + 8 => '(HW-|HUAWEI )?BAC-(AL00|L03|L21|L22|TL00)!', + 9 => 'Backflip', + 10 => 'Backflip Me600', + 11 => 'Bambook S1', + 12 => 'BARRY', + 13 => 'BASE!!', + ), + '@BB' => + array ( + 0 => 'BB EH7', + 1 => 'BB EH7LE', + 2 => '(BB )?Q5$!', + 3 => '(BB )?Q10$!', + 4 => '(BB )?Z10$!', + 5 => '(BB )?Z30$!', + 6 => 'BBA100-[0-9]!', + 7 => 'BBB100-[0-9]!', + 8 => 'BBC100-[0-9]!', + 9 => 'BBD100-[0-9]!', + 10 => 'BBE100-[0-9]!', + 11 => 'BBF100-[0-9]!', + 12 => '(BBG-|VIV-)?vivo!!', + 13 => 'Bbox Miami', + ), + '@BC' => + array ( + 0 => 'bcm platform', + 1 => 'bcm7231', + 2 => 'bcm7425', + 3 => 'bcm7429', + 4 => 'bcm7435', + 5 => 'bcm7439', + 6 => 'bcm7445', + 7 => 'bcm7584', + 8 => 'BCM21654!', + 9 => 'BCM21664!', + 10 => 'BCM23550!', + 11 => 'BCM28145!', + 12 => 'BCM28155!', + 13 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 14 => 'BC1003', + ), + '@BD' => + array ( + 0 => '(BDS|BHX|BKO)\\-!!', + ), + '@BE' => + array ( + 0 => 'BEAGLEBONE', + 1 => 'BeagleBone Black', + 2 => 'BEAGLEBONEBLACK', + 3 => 'BEAGLEBONEBLACK.A5C', + 4 => 'berlin', + 5 => 'berlin bg2!', + 6 => 'berlin generic!', + 7 => 'BenQ JD-130', + 8 => 'BenQ Android TV', + 9 => 'BenWee 5100', + 10 => 'BEE 9500', + 11 => 'BenQ!!', + 12 => 'BenWee!!', + 13 => 'BePhone UN030', + 14 => 'Best ?sonny!!', + 15 => 'BEAN 454', + 16 => 'beetle', + 17 => 'Be Touch 2', + 18 => 'Beeline!!', + ), + '@BF' => + array ( + 0 => 'BF[ \\-]!!', + 1 => 'BFB!!', + 2 => 'BF[0-9]{2,2}00!!', + ), + '@BG' => + array ( + 0 => 'bg2 !', + 1 => 'bg2ct !', + 2 => 'bg2q4k !', + 3 => 'bg2qa0v4 !', + 4 => 'bg2qv4 !', + 5 => 'BGO-(DL09|L03)!', + 6 => 'BG2-(U01)!', + ), + '@BH' => + array ( + 0 => '(BDS|BHX|BKO)\\-!!', + ), + '@BI' => + array ( + 0 => 'bird75v2', + 1 => 'BioniQ!!', + 2 => 'Bird!!', + 3 => 'BizSmartPhone', + 4 => 'BIP-6000', + 5 => 'BIRDY', + ), + '@BK' => + array ( + 0 => '(BDS|BHX|BKO)\\-!!', + 1 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@BL' => + array ( + 0 => 'Blaze', + 1 => 'Blaze Tablet', + 2 => 'BlueStacks!', + 3 => 'BlackBerry Runtime for Android Apps', + 4 => 'BLACKBERRY P\'9982', + 5 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 6 => 'Bluboo S1', + 7 => 'Blaze S180', + 8 => 'BLADE LE 70', + 9 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 10 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 11 => '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', + 12 => '(BLF-)?lephone!!', + 13 => 'Blackphone 2', + 14 => 'BLOOM', + 15 => 'BLACK', + 16 => '(ZTE )?Blade!!', + ), + '@BM' => + array ( + 0 => 'BMOBILE DASH 3.5', + 1 => '(Bmobile )?AX[0-9]{3,4}!!', + 2 => 'Bmobile T35AC', + 3 => 'BM999', + ), + '@BN' => + array ( + 0 => '(NOOK )?BNRV(200|300)!', + 1 => '(NOOK )?BNTV250!', + 2 => '(NOOK )?BNRV350!', + 3 => '(NOOK )?BNTV(400)!', + 4 => '(NOOK )?BNTV(450)!', + 5 => '(NOOK )?BNTV(600)!', + 6 => '(NOOK )?BNTV(800)!', + 7 => 'BN Nook HD', + 8 => 'BN NookHD+', + 9 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@BO' => + array ( + 0 => 'Boost', + 1 => 'BO-FRSP4', + 2 => 'BO-LFSPBS5', + 3 => 'BOVO S-F16', + 4 => 'BOWAY!!', + 5 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 6 => 'Bouygues Telecom Bs 351', + 7 => 'Bouygues Telecom Bs 402', + 8 => 'Bouygues Telecom Bs 403', + 9 => 'Bouygues Telecom Bs 451', + 10 => 'Boston 4G', + 11 => 'Boston', + ), + '@BP' => + array ( + 0 => 'BP710A', + ), + '@BQ' => + array ( + 0 => '(bq|Aquaris|Edison|Maxwell)!!', + 1 => 'BQS-3510', + 2 => 'BQS-3552', + 3 => 'BQS-4001', + 4 => 'BQS-4004', + 5 => 'BQS-4005', + 6 => 'BQS-4007', + 7 => 'BQS-4008', + 8 => 'BQS-4009', + 9 => 'BQS-4010', + 10 => 'BQS-4501 Bristol', + 11 => 'BQS-4502', + 12 => 'BQS-4503', + 13 => 'BQS-4510', + 14 => 'BQS-4515', + 15 => 'BQS-4516', + 16 => 'BQS-4525', + 17 => 'BQS-4552', + 18 => 'BQS-4555', + 19 => 'BQS-4560', + 20 => 'BQS-4700', + 21 => 'BQS-4701', + 22 => 'BQS-4702', + 23 => 'BQS-4707', + 24 => 'BQS-4800', + 25 => 'BQS-5000 Tokyo', + 26 => 'BQS-5003', + 27 => 'BQS-5004', + 28 => 'BQS-5005', + 29 => 'BQS-5009', + 30 => 'BQS-5001', + 31 => 'BQS 5007', + 32 => 'BQS-5010', + 33 => 'BQS-5011', + 34 => 'BQS-5020', + 35 => 'BQS-5025', + 36 => 'BQS-5040', + 37 => 'BQS-5045', + 38 => 'BQS-5050', + 39 => 'BQS-5065', + 40 => 'BQS-5070', + 41 => 'BQS-5200', + 42 => 'BQS-5500', + 43 => 'BQS-5502', + 44 => 'BQS-5505', + 45 => 'BQS 5505', + ), + '@BR' => + array ( + 0 => 'Bravo', + 1 => 'BRAVIA 2015', + 2 => 'BRAVIA 4K 2015', + 3 => 'BRAVIA 4K GB', + 4 => 'BroadSign Xpress!', + 5 => 'Broncho M7', + 6 => '(BRS-)?BROR!!', + 7 => 'BRAVIA', + ), + '@BS' => + array ( + 0 => 'Bs 451', + 1 => 'Bs 501', + 2 => 'Bs541', + 3 => 'BSTB-200C', + ), + '@BT' => + array ( + 0 => 'BTV-(DL09|W09)!', + 1 => '(AZ|BT)[0-9]{3,3}!!', + ), + '@BU' => + array ( + 0 => 'BUSH!!', + 1 => 'Burst S280', + 2 => 'Butterfly S', + 3 => 'Bucare Y330-U05', + ), + '@BV' => + array ( + 0 => 'BV8000Pro', + ), + '@C2' => + array ( + 0 => 'C2', + ), + '@C5' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?C500!', + 1 => 'C525c', + ), + '@C6' => + array ( + 0 => 'C6 Duo', + 1 => 'C6Quad 4G', + 2 => '(GIO-)?(GiONEE[- ])?C600!', + 3 => '(GIO-)?(GiONEE[- ])?C610!', + 4 => '(GIO-)?(GiONEE[- ])?C620!', + ), + '@C7' => + array ( + 0 => 'C771', + 1 => '(GIO-)?(GiONEE[- ])?C700!', + ), + '@C8' => + array ( + 0 => 'C811 4G', + 1 => 'C8297W', + 2 => 'C8660', + 3 => '(GIO-)?(GiONEE[- ])?C800!', + 4 => 'C8817D', + 5 => 'C8817E', + 6 => 'C8[0-9]{3,3}!!', + 7 => 'C868', + ), + '@C9' => + array ( + 0 => 'C908', + ), + '@CA' => + array ( + 0 => 'Cardhu', + 1 => 'CA907AAC0G', + 2 => 'Camangi-Mangrove7', + 3 => 'CAPTIVA!!', + 4 => 'Carpad T5', + 5 => 'Carpad T61 2g', + 6 => 'CAL21', + 7 => 'CA201SP', + 8 => 'CA-201L', + 9 => 'Casper VIA!!', + 10 => 'CAT!!', + 11 => 'Candy TV', + 12 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 13 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 14 => '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!', + 15 => '(HW-|HUAWEI )?CAN-(L01|L11|L12)!', + 16 => 'calgary', + 17 => 'Captivate-I897', + 18 => 'capricorn', + ), + '@CC' => + array ( + 0 => 'CCE SK352', + ), + '@CE' => + array ( + 0 => 'cedartrail', + 1 => 'CENTURION', + 2 => 'CENTURION 3', + 3 => 'Celkon!!', + ), + '@CH' => + array ( + 0 => 'Chacer', + 1 => 'ChangHong!!', + 2 => 'CHER!!', + 3 => 'Cherry Mobile Burst', + 4 => 'Cherry Life', + 5 => 'Cherry Razor', + 6 => 'Cherry Mobile Razor', + 7 => 'CHERRY SNAP', + 8 => 'Cherry Sonic', + 9 => 'Cherry thunder2.0', + 10 => 'Cherry Mobile Amber W380', + 11 => 'Cherry w500', + 12 => 'CHUWI!!', + 13 => 'CHONG!!', + 14 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 15 => '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', + 16 => 'chagall', + 17 => 'chiron', + ), + '@CI' => + array ( + 0 => 'cius', + 1 => 'CIUS-7!', + 2 => 'Citycall!!', + 3 => 'CINK', + 4 => 'CINK+', + 5 => 'CINK FIVE', + 6 => 'CINK KING', + 7 => 'CINK PEAX', + 8 => 'CINK PEAX+', + 9 => 'CINK PEAX 2', + 10 => 'CINK SLIM', + 11 => 'Cink Slim A', + 12 => 'Cink Slim B', + 13 => 'CINK SLIM 2', + ), + '@CJ' => + array ( + 0 => '(CJ-)?ThL!!', + ), + '@CL' => + array ( + 0 => 'Clarion Mirage 2', + 1 => '(Cloudfone|CloudPad|Excite|Thrill)!!', + 2 => 'Clanga 079-1016', + 3 => 'Clanga 097-2016', + 4 => 'Clanga SE 097-1008', + 5 => 'CLP281X', + 6 => 'Click', + 7 => '(Intex )?Cloud!!', + 8 => 'CLIQ', + 9 => 'CLIQ XT', + 10 => 'CLIQ2', + ), + '@CM' => + array ( + 0 => 'CMP!!', + 1 => '(cm|aokp) tenderloin!', + 2 => 'CM980', + 3 => 'CM990', + ), + '@CN' => + array ( + 0 => 'CnM!!', + 1 => 'CN51 [NQ]!', + ), + '@CO' => + array ( + 0 => 'Colibri-T20', + 1 => 'Commodore!!', + 2 => 'Commtiva-HD710', + 3 => 'Commtiva-N700', + 4 => 'Connspeed IP71', + 5 => '(Colorfly|CT[0-9]{3,3})!!', + 6 => 'Colors!!', + 7 => 'ConCorde!!', + 8 => 'Coolgen!!', + 9 => 'Coolpad!!', + 10 => 'COSHIP F2', + 11 => 'COWON!!', + 12 => 'COZCO C1 Plus', + 13 => 'Collo DG100', + 14 => 'Collo 2 DG120', + 15 => 'Connect-2G-2.0', + 16 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 17 => 'Coquettish Red', + 18 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 19 => 'Comet', + 20 => 'Corvair', + 21 => 'COOLPIX S800c', + 22 => 'COOLPIX S810c', + 23 => 'Constellation V', + ), + '@CP' => + array ( + 0 => 'CP-DX!!', + 1 => 'CP3700A', + 2 => 'CP8676!', + 3 => 'CP8298!', + 4 => 'CPN-(W09|AL00|L09)!', + 5 => 'CPH1605', + 6 => 'CPH1701', + 7 => 'CPH1717', + 8 => 'CPH1609', + 9 => 'CPH1613', + 10 => 'CPH1723', + 11 => 'CPH1611', + ), + '@CR' => + array ( + 0 => 'Crespo!', + 1 => 'CRESTA.CTP888', + 2 => 'Cross!!', + 3 => 'Crosscall!!', + 4 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 5 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 6 => 'CRONO 22', + 7 => 'Crescent', + ), + '@CS' => + array ( + 0 => 'CS-1A13', + 1 => '(CSL[- ])?(Spice[- ]?)?Mi(-| )?[0-9]{3,3}!!', + ), + '@CT' => + array ( + 0 => 'CT[0-9]{3,4}!!', + 1 => 'CT-1', + 2 => 'CT910', + 3 => '(Colorfly|CT[0-9]{3,3})!!', + 4 => 'CTP828BT', + 5 => '(GIO-)?(GiONEE[- ])?Ctrl V1!', + 6 => '(GIO-)?(GiONEE[- ])?Ctrl V2!', + 7 => '(GIO-)?(GiONEE[- ])?Ctrl V3!', + 8 => '(GIO-)?(GiONEE[- ])?Ctrl V4!', + 9 => '(GIO-)?(GiONEE[- ])?Ctrl V5!', + 10 => 'CT50', + 11 => 'CT720G', + 12 => 'CT720HD', + 13 => 'CT920', + 14 => 'CT1006', + 15 => 'CT9973W43M', + ), + '@CU' => + array ( + 0 => 'CUBOT!!', + 1 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + 2 => 'CUBE!!', + 3 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + ), + '@CW' => + array ( + 0 => 'CW[- ]!!', + ), + '@CX' => + array ( + 0 => 'CX-919', + 1 => 'CX-921', + 2 => 'CX-921B', + 3 => 'CX-929', + 4 => 'CX-950', + 5 => 'CX-958', + ), + '@CY' => + array ( + 0 => 'Cydle M7!', + 1 => 'Cynus!!', + 2 => 'Cyclone!!', + ), + '@D-' => + array ( + 0 => 'd-01G', + 1 => 'd-01H', + 2 => 'd-01J', + 3 => 'd-02H', + ), + '@D0' => + array ( + 0 => 'D000-0000(13|18|19)-[0-9]{3,3}!', + 1 => 'D000-0000(01|07)-[A-Z][0-9]{2,2}!', + 2 => 'D000-000002-[W0][0-9]{2,2}!', + 3 => 'D000-0000(10|11)-N!', + 4 => 'D000 000043', + ), + '@D2' => + array ( + 0 => 'D2-[0-9]{3,3}!!', + 1 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + ), + '@D5' => + array ( + 0 => 'D530', + 1 => 'D539', + ), + '@D7' => + array ( + 0 => 'D709', + 1 => 'D7800AD', + 2 => 'D75E', + 3 => 'D70W', + ), + '@D8' => + array ( + 0 => 'D820X', + 1 => 'D816(d|t|v|w|x)!', + 2 => 'D816G', + 3 => 'D820mt', + 4 => 'D80', + ), + '@D9' => + array ( + 0 => 'D9702', + 1 => 'D91', + ), + '@DA' => + array ( + 0 => 'DA2[0-9]{2,2}[A-Z]+!!', + 1 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 2 => 'Dakele A380', + 3 => 'DAKELE MC001', + 4 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 5 => 'DATAM803HC', + 6 => 'DATAM805HC', + 7 => 'DATAM819HD!', + 8 => 'DARKFULL', + 9 => 'DARKMOON', + 10 => 'DARKNIGHT', + 11 => 'DARKSIDE', + ), + '@DE' => + array ( + 0 => 'Dell!!', + 1 => 'Dell XCD35', + 2 => 'DEM752HCF', + 3 => '(DENVER-)?TA[CD]-[0-9]{4,5}!!', + 4 => 'deovo V5', + 5 => 'DESAY!!', + 6 => 'DEXP Ixion ML 5', + 7 => 'DEXP Ixion XL 5', + 8 => 'desire200', + 9 => 'Desire 310 dual sim', + 10 => 'Desire 500', + 11 => 'Desire 500 Plus', + 12 => 'Desire 510', + 13 => 'Desire 610', + 14 => 'Desire 619d', + 15 => 'Desire 816', + 16 => 'Desire 816 dual sim', + 17 => 'Desire ?HD!', + 18 => 'desirec', + 19 => 'Desire L by HTC', + 20 => 'Desire ?S!', + 21 => 'Desire X', + 22 => 'Desire Z', + 23 => 'Desire!', + 24 => 'DEOX', + 25 => 'DEFY', + 26 => 'Defy(\\+| Plus)!', + 27 => 'DEDY+', + 28 => 'Dext', + 29 => 'Devour', + 30 => 'DEM752NC', + ), + '@DG' => + array ( + 0 => 'DG310', + 1 => 'DG750 Iron Bone', + ), + '@DI' => + array ( + 0 => 'Dialog!!', + 1 => 'DIT[0-9]{4,6}!!', + 2 => 'DIGICELDL1plus', + 3 => 'DIGICEL DL800', + 4 => 'DIGICEL DL1000', + 5 => '(Digma )?iD[jmnsx][DQ]?[0-9]*!!', + 6 => 'DISTAB9000R', + 7 => 'DishTV Smartvu A2020', + 8 => 'Discovery DG500', + 9 => 'Discovery2-DG500C', + 10 => '(HW-|HUAWEI )?DIG-(AL00|L01|L03|L21|TL10)!', + 11 => 'DIAMOND D1', + 12 => 'DIAMOND S3', + 13 => 'Discovery', + 14 => 'Discovery Elite', + 15 => 'Discovery II Mini', + ), + '@DJ' => + array ( + 0 => 'DJC Touchtab3', + 1 => 'DJC Touchtab4', + ), + '@DK' => + array ( + 0 => 'DKL01', + 1 => 'Dk1031', + ), + '@DL' => + array ( + 0 => 'DL750', + 1 => 'DL8006', + 2 => 'DLX', + 3 => 'DLXU', + 4 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 5 => 'dL1', + ), + '@DM' => + array ( + 0 => 'DM0[0-9]{2,2}(K|SH)!!', + 1 => 'DM-01G', + 2 => 'DM-01K', + 3 => 'DM-02H', + 4 => 'DMC-CM1', + 5 => 'DM-01H', + 6 => 'DM-01J', + ), + '@DN' => + array ( + 0 => 'DNS Airbook TYT701', + 1 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 2 => 'DNS S!!', + 3 => 'DNSS4003', + 4 => 'DNS4502M', + ), + '@DO' => + array ( + 0 => 'Dooderbutt!', + 1 => 'domod G20', + 2 => 'Doogee X5 Max Pro', + 3 => 'DOOGEE-TITANS-DG150', + 4 => 'DOOV!!', + 5 => 'Doro Liberto!!', + 6 => 'Doro 8030', + 7 => 'Doro 824', + 8 => 'Doro PhoneEasy 745', + 9 => 'Dolphin 70e Black', + 10 => 'Docomo HT-03A', + ), + '@DP' => + array ( + 0 => 'DPS Dream 7', + 1 => 'DPS Dream 9', + 2 => 'DP-X1', + 3 => 'DPH-D710', + ), + '@DR' => + array ( + 0 => 'Dream', + 1 => '(GIO-)?(GiONEE[- ])?Dream D1!', + 2 => 'Droid Incredible', + 3 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + 4 => 'DroniX-0.5', + 5 => 'Droid', + 6 => 'DROID', + 7 => 'DROID ?2!', + 8 => 'DROID ?3!', + 9 => 'DROID ?4!', + 10 => 'DroidPro', + 11 => 'DROID Pro', + 12 => 'DROID HD', + 13 => 'DROID BIONIC!', + 14 => 'DROID RAZR HD!', + 15 => 'DROID ?RAZR!', + 16 => 'DROID SPYDER', + 17 => 'DROID ?X2!', + 18 => 'DROID ?X!', + 19 => 'DROIDZ Duo', + 20 => 'DROIDZ Active 3G', + 21 => 'DROIDZ ATOM S', + 22 => 'DROIDZ Beat TV', + 23 => 'DROIDZ Drive+', + 24 => 'DROIDZ Excel', + 25 => 'DROIDZ Excite', + 26 => 'DROIDZ Force', + 27 => 'DROIDZ Match TV', + 28 => 'DROIDZ Mini Q', + 29 => 'DROIDZ Portal X', + 30 => 'DROIDZ Quad', + 31 => 'DROIDZ Race', + 32 => 'DROIDZ Race X', + 33 => 'DROIDZ Sport', + 34 => 'DROIDZ Ultimate', + ), + '@DS' => + array ( + 0 => 'Dslide!!', + ), + '@DT' => + array ( + 0 => 'Dtac phone Joey Jet 2', + 1 => 'dtab01', + ), + '@DU' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@DW' => + array ( + 0 => 'DW-PS3G5', + 1 => 'DW-UBT7W', + 2 => 'DW-UBT7SC*', + 3 => 'DW-UBT27Cz', + 4 => 'DW-UBT23G7', + ), + '@DY' => + array ( + 0 => 'dyno 7.80', + 1 => 'dyno 7.85', + 2 => 'Dynamic Fun', + 3 => 'Dynamic Jump', + 4 => 'Dynamic Maxi', + 5 => 'Dynamic Milo', + 6 => 'Dynamic Racing 2', + 7 => 'Dynamic Raging Go', + 8 => 'Dynamic Shake', + 9 => 'Dynamic Wide', + 10 => 'Dynamic Wing', + 11 => 'Dynamic Racing 3', + ), + '@E' => + array ( + 0 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + ), + '@E-' => + array ( + 0 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + ), + '@E1' => + array ( + 0 => 'E1 v360', + 1 => 'E170BS', + 2 => 'E1031', + 3 => 'e1808 v75!', + 4 => 'e1109 v73!', + ), + '@E2' => + array ( + 0 => 'E2 Jump', + 1 => 'E239', + 2 => 'E270BSA', + 3 => 'E2281', + 4 => '(Moto)?E2$!', + 5 => '(Moto)?E2\\(4G-LTE\\)$!', + ), + '@E3' => + array ( + 0 => 'E3 Living', + 1 => 'E3 Sign', + 2 => '(GIO-)?(GiONEE[- ])?E3T!', + 3 => '(GIO-)?(GiONEE[- ])?E3$!', + ), + '@E4' => + array ( + 0 => 'E4', + 1 => 'E4 Lite', + ), + '@E5' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?E5$!', + ), + '@E6' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?E6mini!', + 1 => '(GIO-)?(GiONEE[- ])?E6$!', + 2 => '(GIO-)?(GiONEE[- ])?E6T$!', + 3 => 'E6782', + 4 => 'E650', + 5 => 'E60w', + ), + '@E7' => + array ( + 0 => 'E70[0-9]{2,2}H[DG]!!', + 1 => '(GIO-)?(GiONEE[- ])?E7$!', + 2 => 'E780', + 3 => 'E731', + ), + '@E8' => + array ( + 0 => 'E80[0-9]{2,2}H[DG]!!', + 1 => 'E860', + 2 => 'E800', + 3 => 'E815', + 4 => 'E812', + 5 => 'E810', + ), + '@E9' => + array ( + 0 => 'E900', + 1 => 'E912', + ), + '@EA' => + array ( + 0 => 'eagle75v1 2', + 1 => 'EasyPhone EP5', + 2 => 'EasyPad 971', + ), + '@EB' => + array ( + 0 => 'EBEN!!', + 1 => 'EBEST!!', + 2 => 'EB-4063-X', + 3 => 'EB-A71GJ', + 4 => 'EB-W51GJ', + 5 => 'EB-WX1GJ', + 6 => 'EB-L76G-B', + ), + '@EC' => + array ( + 0 => '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', + 1 => 'Eco9 v1', + 2 => 'Eco9 v2', + 3 => 'Eco11 v2', + ), + '@ED' => + array ( + 0 => '(bq|Aquaris|Edison|Maxwell)!!', + 1 => 'edgejr', + 2 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 3 => 'edenTAB ET-701', + ), + '@EE' => + array ( + 0 => 'eeepc', + 1 => 'eee 701', + 2 => '(Eee Pad )?Transformer Prime TF201!', + ), + '@EF' => + array ( + 0 => 'EFM710A', + ), + '@EG' => + array ( + 0 => 'EG98', + 1 => 'EG680', + 2 => 'EG968B', + ), + '@EI' => + array ( + 0 => 'EIS01PT', + ), + '@EK' => + array ( + 0 => 'EK-[GK][CN][0-9]{3,3}!!', + ), + '@EL' => + array ( + 0 => 'EL72B', + 1 => 'ELF-II', + 2 => 'Elephone!!', + 3 => 'ELIYA S1', + 4 => 'ELIFE-E3', + 5 => 'Elife E5', + 6 => 'ElifeE6', + 7 => 'Elektra L', + 8 => 'Elektra XL', + 9 => 'Electrify', + 10 => 'Eluga A2', + 11 => 'ELUGA A3', + 12 => 'ELUGA A3 Pro', + 13 => 'ELUGA I2', + 14 => 'ELUGA I2 Activ', + 15 => 'ELUGA I4', + 16 => 'Eluga Arc 2', + 17 => 'Eluga Mark 2', + 18 => 'ELUGA Note', + 19 => 'ELUGA Prim', + 20 => 'ELUGA Pulse X', + 21 => 'ELUGA Ray', + 22 => 'ELUGA Ray Max', + 23 => 'ELUGA Ray X', + 24 => 'Eluga Ray 700', + 25 => 'ELUGA Turbo', + 26 => 'Elite', + 27 => 'Elite 11', + 28 => '(SENCOR )?ELEMENT!!', + 29 => 'Elite 5.5L+', + 30 => 'Elite 6.0L', + ), + '@EM' => + array ( + 0 => 'EMBT3C', + 1 => 'EM63', + 2 => 'EM01F', + 3 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 4 => 'eMAX mini', + 5 => 'EMR1879', + ), + '@EN' => + array ( + 0 => 'Endeavour!!', + 1 => 'ENR U', + 2 => 'EndeavorU', + 3 => 'Enjoy 71', + 4 => 'Enjoy 7 Plus', + ), + '@EP' => + array ( + 0 => 'EPAD', + 1 => 'epade!!', + ), + '@EQ' => + array ( + 0 => 'equiso.smart.tv.pro', + ), + '@ER' => + array ( + 0 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 1 => 'Eris', + 2 => 'ERIS ADR6200', + 3 => 'era 2', + 4 => 'era X', + 5 => 'era1X', + 6 => 'Era 2X', + 7 => 'era HD', + 8 => 'era 4G', + 9 => 'era 4K', + ), + '@ES' => + array ( + 0 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 1 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 2 => 'eSTAR!!', + ), + '@ET' => + array ( + 0 => 'ETBW11AA', + 1 => 'Etel!!', + 2 => 'ETOOSPAD5', + 3 => 'ETOOSPAD6', + 4 => 'ET1', + 5 => 'Etisalat Smartphone', + 6 => 'etab5', + ), + '@EV' => + array ( + 0 => 'EVOKE HDI Box', + 1 => 'EVDO1000', + 2 => 'EvoPAD!!', + 3 => '(EVAS )?EVERCOSS[- ]A!!', + 4 => 'EVERPAD SC-710', + 5 => 'Ever!!', + 6 => 'EVO', + 7 => 'Evo HD2', + 8 => 'EVO ?3D!', + 9 => 'EVO 4G', + 10 => 'Evo V 4G', + 11 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 12 => '(EV|KM)-[ES][0-9]{3,3}!!', + 13 => 'Event', + 14 => 'EVERY35', + ), + '@EX' => + array ( + 0 => 'Exynos5410', + 1 => '(Cloudfone|CloudPad|Excite|Thrill)!!', + 2 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 3 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 4 => 'Explorer A310e', + ), + '@EZ' => + array ( + 0 => 'Ezcast', + 1 => 'eZee!!', + ), + '@F&' => + array ( + 0 => 'F&U ETB!!', + ), + '@F-' => + array ( + 0 => 'F-[0-9]{2,2}[A-Z]!!', + 1 => 'F-074', + ), + '@F1' => + array ( + 0 => 'f12[a-z]{3,3}!!', + 1 => '(GIO-)?(GiONEE[- ])?F103!', + 2 => 'F100', + 3 => 'F1f', + 4 => 'F1w', + 5 => 'F13', + 6 => 'F15', + ), + '@F3' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?F301!', + ), + '@F5' => + array ( + 0 => 'F50Q', + ), + '@F6' => + array ( + 0 => 'F600', + ), + '@FA' => + array ( + 0 => 'FAR7', + 1 => 'FAR70B', + 2 => 'FARTM933KZ', + 3 => 'Fablet F3', + 4 => '(Amazing|Fantastic)!!', + ), + '@FC' => + array ( + 0 => 'FC6100', + ), + '@FD' => + array ( + 0 => 'FDT!!', + 1 => 'FDR-A01w', + ), + '@FE' => + array ( + 0 => 'FEVER', + 1 => 'ferrari', + ), + '@FH' => + array ( + 0 => 'FHMD001', + ), + '@FI' => + array ( + 0 => 'FIH-FB0', + 1 => 'FIH-!!', + 2 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 3 => 'Find 5', + 4 => 'FIND7', + ), + '@FJ' => + array ( + 0 => 'FJ[LT][0-9]{2,2}!!', + 1 => 'FJJB091', + ), + '@FL' => + array ( + 0 => 'Flo', + 1 => 'Flounder', + 2 => 'Flame2', + 3 => 'Flare S100', + 4 => 'Flare 2.0', + 5 => 'Flare 2.1', + 6 => 'Flare2X', + 7 => 'Flare 5', + 8 => 'FlareA1', + 9 => 'Flare J1', + 10 => 'FLARE J1 PLUS', + 11 => 'FLARE J2', + 12 => 'Flare J2 DTV', + 13 => 'Flare J3 Plus', + 14 => 'Flare P1 Mini', + 15 => 'Flare S3 Power', + 16 => 'Flare S4', + 17 => 'Flare S4 Max', + 18 => 'Flare S4 Mini', + 19 => 'FLARE S5 MAX', + 20 => 'Flare S6 Max', + 21 => 'Fly F[0-9]{2,3}!!', + 22 => 'Fly Phoenix 2', + 23 => 'Fly Ego Art 2', + 24 => '(Fly )?IQ ?[0-9]{3,4}!!', + 25 => 'Flylife!!', + 26 => 'Fly Flylife Web 7.85 Slim', + 27 => 'Flyer', + 28 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + 29 => 'Flair E1', + 30 => 'Flair E2', + 31 => 'FlairE3', + 32 => 'Flair P1', + 33 => 'Flair P1i', + 34 => 'Flair P8', + 35 => 'Flair S1', + 36 => 'Flair Z1', + ), + '@FN' => + array ( + 0 => '(tablet )?fnac!!', + ), + '@FO' => + array ( + 0 => 'Forward Active', + 1 => 'Forward Art', + 2 => 'Forward Escape', + 3 => 'Forward Endurance', + 4 => 'ForwardEndurance', + 5 => 'FORWARD EVOLVE', + 6 => 'Forward Infinity', + 7 => 'Forward Next', + 8 => 'Forward Prime', + 9 => 'Forward Racing 3', + 10 => 'Forward Ruby', + 11 => 'ForwardRuby', + 12 => 'Forward Shake', + 13 => 'ForwardXtreme', + 14 => 'Forward Young', + 15 => 'ForwardZero', + 16 => 'Forward 5 5', + 17 => 'Forward 5.5', + 18 => 'Folio 100', + 19 => 'folio100', + ), + '@FP' => + array ( + 0 => 'FP1', + 1 => 'FP1U', + 2 => 'FP2', + ), + '@FR' => + array ( + 0 => 'Freelander I20', + 1 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 2 => '(MODECOM )?FreeTAB!!', + ), + '@FS' => + array ( + 0 => 'FS403', + 1 => 'FS407', + 2 => 'FS451', + 3 => 'FS514', + ), + '@FT' => + array ( + 0 => 'FTJ152A', + 1 => 'FTJ161B', + 2 => 'FTJ162E', + ), + '@FU' => + array ( + 0 => 'full Android on Microsoft Windows, pad, pc, n*books', + 1 => 'Fusion Bolt', + 2 => 'FUSIONideos', + 3 => 'Fuel F2', + ), + '@FW' => + array ( + 0 => 'FWS[0-9]{3,3}!!', + ), + '@FZ' => + array ( + 0 => 'FZ-A1(A|B)!', + 1 => 'FZ-A2A', + 2 => 'FZ-B2(B|D)!', + 3 => 'FZ-N1', + 4 => 'FZ-T1', + 5 => 'FZ-X1', + ), + '@G ' => + array ( + 0 => 'G Watch', + 1 => 'G Watch R', + ), + '@G0' => + array ( + 0 => 'G0215D', + 1 => 'G0775', + ), + '@G1' => + array ( + 0 => 'G1-715', + 1 => 'G1-725', + 2 => 'G100W', + 3 => 'G17(B5DV)', + 4 => 'G17(B7DV)', + 5 => 'G17h 3G??(K5E2)', + 6 => 'G17h 3G??(K6E2', + 7 => 'G17h 3G四核(K5E2)', + 8 => 'G17h 3G四核(K6E2)', + 9 => 'G17s 3G', + 10 => 'G17s 3G??(K5E5)', + 11 => 'G17s 3G四核(K5E5)', + 12 => 'G17s 3G四核(K5E4)', + 13 => 'G17s 3G四核(K5E3)', + 14 => 'G18 3G四核(C6B9)', + 15 => 'G18mini(C5B9)', + 16 => 'G18d 3G四核(D3A2)', + 17 => 'G18d mini(FV2C)', + ), + '@G2' => + array ( + 0 => 'G2S', + 1 => 'G2SMNT', + ), + '@G3' => + array ( + 0 => '(Moto)?G3$!', + 1 => '(Moto)?G3-TE$!', + 2 => 'G3SMNTS22', + 3 => 'G3SMNTS23', + ), + '@G6' => + array ( + 0 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + ), + '@G7' => + array ( + 0 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + ), + '@G9' => + array ( + 0 => 'G9', + ), + '@GA' => + array ( + 0 => '(Google )?Galaxy Nexus!', + 1 => 'Galaxy S4 Google Editon', + 2 => 'Garmin!!', + 3 => 'Galaxy!!', + ), + '@GE' => + array ( + 0 => 'generic', + 1 => 'generic x86', + 2 => 'Gear Live', + 3 => 'Genius!!', + 4 => '(GP-|Geeksphone)!!', + 5 => 'Gemei!!', + 6 => 'GEM[0-9]{4,4}!!', + 7 => 'GEM-702L', + 8 => 'GEM-703L', + 9 => 'GETAWAY', + 10 => 'gemini', + 11 => 'General Mobile 4G', + 12 => 'General Mobile 4G Dual', + ), + '@GF' => + array ( + 0 => 'GFIVE!!', + ), + '@GH' => + array ( + 0 => 'Ghost', + 1 => 'GHIA!!', + ), + '@GI' => + array ( + 0 => '(Gsmart|Gigabyte|Rio)!!', + 1 => 'Gigaset!!', + 2 => '(GIO-)?(GiONEE[- ])?A1$!', + 3 => '(GIO-)?(GiONEE[- ])?A9$!', + 4 => '(GIO-)?(GiONEE[- ])?C500!', + 5 => '(GIO-)?(GiONEE[- ])?C600!', + 6 => '(GIO-)?(GiONEE[- ])?C610!', + 7 => '(GIO-)?(GiONEE[- ])?C620!', + 8 => '(GIO-)?(GiONEE[- ])?C700!', + 9 => '(GIO-)?(GiONEE[- ])?C800!', + 10 => '(GIO-)?(GiONEE[- ])?Dream D1!', + 11 => '(GIO-)?(GiONEE[- ])?E3T!', + 12 => '(GIO-)?(GiONEE[- ])?E3$!', + 13 => '(GIO-)?(GiONEE[- ])?E5$!', + 14 => '(GIO-)?(GiONEE[- ])?E6mini!', + 15 => '(GIO-)?(GiONEE[- ])?E6$!', + 16 => '(GIO-)?(GiONEE[- ])?E6T$!', + 17 => '(GIO-)?(GiONEE[- ])?E7$!', + 18 => '(GIO-)?(GiONEE[- ])?F103!', + 19 => '(GIO-)?(GiONEE[- ])?F301!', + 20 => '(GIO-)?(GiONEE[- ])?GN5001!', + 21 => '(GIO-)?(GiONEE[- ])?GN5002!', + 22 => '(GIO-)?(GiONEE[- ])?GN8001!', + 23 => '(GIO-)?(GiONEE[- ])?GN9000!', + 24 => '(GIO-)?(GiONEE[- ])?GN9001!', + 25 => '(GIO-)?(GiONEE[- ])?GN9002!', + 26 => '(GIO-)?(GiONEE[- ])?GN9004!', + 27 => '(GIO-)?(GiONEE[- ])?GN9005!', + 28 => '(GIO-)?(GiONEE[- ])?GN9006!', + 29 => '(GIO-)?(GiONEE[- ])?GN9007!', + 30 => '(GIO-)?(GiONEE[- ])?GN9008!', + 31 => '(GIO-)?(GiONEE[- ])?GN9010!', + 32 => '(GIO-)?(GiONEE[- ])?GN100T!', + 33 => '(GIO-)?(GiONEE[- ])?GN100!', + 34 => '(GIO-)?(GiONEE[- ])?GN105!', + 35 => '(GIO-)?(GiONEE[- ])?GN106!', + 36 => '(GIO-)?(GiONEE[- ])?GN107!', + 37 => '(GIO-)?(GiONEE[- ])?GN108!', + 38 => '(GIO-)?(GiONEE[- ])?GN109!', + 39 => '(GIO-)?(GiONEE[- ])?GN135!', + 40 => '(GIO-)?(GiONEE[- ])?GN136!', + 41 => '(GIO-)?(GiONEE[- ])?GN137!', + 42 => '(GIO-)?(GiONEE[- ])?GN139!', + 43 => '(GIO-)?(GiONEE[- ])?GN150!', + 44 => '(GIO-)?(GiONEE[- ])?GN151!', + 45 => '(GIO-)?(GiONEE[- ])?GN152!', + 46 => '(GIO-)?(GiONEE[- ])?GN160T!', + 47 => '(GIO-)?(GiONEE[- ])?GN160!', + 48 => '(GIO-)?(GiONEE[- ])?GN168T!', + 49 => '(GIO-)?(GiONEE[- ])?GN170!', + 50 => '(GIO-)?(GiONEE[- ])?GN180!', + 51 => '(GIO-)?(GiONEE[- ])?GN181!', + 52 => '(GIO-)?(GiONEE[- ])?GN200!', + 53 => '(GIO-)?(GiONEE[- ])?GN205!', + 54 => '(GIO-)?(GiONEE[- ])?GN210!', + 55 => '(GIO-)?(GiONEE[- ])?GN305!', + 56 => '(GIO-)?(GiONEE[- ])?GN320!', + 57 => '(GIO-)?(GiONEE[- ])?GN360!', + 58 => '(GIO-)?(GiONEE[- ])?GN380!', + 59 => '(GIO-)?(GiONEE[- ])?GN600!', + 60 => '(GIO-)?(GiONEE[- ])?GN700T!', + 61 => '(GIO-)?(GiONEE[- ])?GN700W!', + 62 => '(GIO-)?(GiONEE[- ])?GN705T!', + 63 => '(GIO-)?(GiONEE[- ])?GN705W!', + 64 => '(GIO-)?(GiONEE[- ])?GN706L!', + 65 => '(GIO-)?(GiONEE[- ])?GN708T!', + 66 => '(GIO-)?(GiONEE[- ])?GN708W!', + 67 => '(GIO-)?(GiONEE[- ])?GN787!', + 68 => '(GIO-)?(GiONEE[- ])?GN800!', + 69 => '(GIO-)?(GiONEE[- ])?GN810!', + 70 => '(GIO-)?(GiONEE[- ])?GN818T!', + 71 => '(GIO-)?(GiONEE[- ])?GN858!', + 72 => '(GIO-)?(GiONEE[- ])?GN868!', + 73 => '(GIO-)?(GiONEE[- ])?GN878!', + 74 => 'Gionee M1', + 75 => 'Gionee M2', + 76 => 'Gionee-M2', + 77 => 'Gionee M3S', + 78 => 'Gionee M5', + 79 => '(GIO-)?(GiONEE[- ])?S101!', + 80 => 'GiONEE TD500', + 81 => '(GIO-)?(GiONEE[- ])?V182!', + 82 => '(GIO-)?(GiONEE[- ])?V185!', + 83 => '(GIO-)?(GiONEE[- ])?V188!', + 84 => '(GIO-)?(GiONEE[- ])?W800!', + 85 => '(GIO-)?(GiONEE[- ])?X817!', + 86 => '(GIO-)?(GiONEE[- ])?Ctrl V1!', + 87 => '(GIO-)?(GiONEE[- ])?Ctrl V2!', + 88 => '(GIO-)?(GiONEE[- ])?Ctrl V3!', + 89 => '(GIO-)?(GiONEE[- ])?Ctrl V4!', + 90 => '(GIO-)?(GiONEE[- ])?Ctrl V5!', + 91 => '(GIO-)?(GiONEE[- ])?Pioneer P1!', + 92 => '(GIO-)?(GiONEE[- ])?Pioneer P2!', + 93 => '(GIO-)?(GiONEE[- ])?Pioneer P3!', + 94 => '(GIO-)?(GiONEE[- ])?Pioneer P4!', + 95 => 'Gionee P3', + 96 => 'Gionee P4', + 97 => 'GIONEE P7', + 98 => 'GiONEE S7', + 99 => 'GIONEE S10', + 100 => '(GIO-)?(GiONEE[- ])?Gpad G1!', + 101 => '(GIO-)?(GiONEE[- ])?Gpad G2!', + 102 => '(GIO-)?(GiONEE[- ])?Gpad G3!', + 103 => 'GinDream/GinMagic', + ), + '@GK' => + array ( + 0 => 'GK802', + ), + '@GL' => + array ( + 0 => 'Glass 1', + 1 => 'GLADIATOR', + 2 => 'GLADIATOR-2', + 3 => 'GLADIATOR 3', + 4 => 'GLADIATOR 4', + 5 => 'Glory', + 6 => 'Glory 2', + 7 => 'Glory3', + 8 => 'GLORY 4', + 9 => 'GloryG1000', + 10 => 'GL-900', + 11 => 'GLX!!', + 12 => 'GL07S', + ), + '@GM' => + array ( + 0 => 'Gm Discovery', + 1 => 'GM Discovery II', + 2 => 'GM Discovery II+', + 3 => 'GM FOX', + 4 => 'GM Ultimate Slim', + 5 => 'GM 5', + 6 => 'GM 5 d', + 7 => 'GM 5 Plus', + 8 => 'GM 5 Plus d', + 9 => 'GM 6', + 10 => 'GM 6 d', + 11 => 'GM Discovery tab 8', + ), + '@GN' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?GN5001!', + 1 => '(GIO-)?(GiONEE[- ])?GN5002!', + 2 => '(GIO-)?(GiONEE[- ])?GN8001!', + 3 => '(GIO-)?(GiONEE[- ])?GN9000!', + 4 => '(GIO-)?(GiONEE[- ])?GN9001!', + 5 => '(GIO-)?(GiONEE[- ])?GN9002!', + 6 => '(GIO-)?(GiONEE[- ])?GN9004!', + 7 => '(GIO-)?(GiONEE[- ])?GN9005!', + 8 => '(GIO-)?(GiONEE[- ])?GN9006!', + 9 => '(GIO-)?(GiONEE[- ])?GN9007!', + 10 => '(GIO-)?(GiONEE[- ])?GN9008!', + 11 => '(GIO-)?(GiONEE[- ])?GN9010!', + 12 => '(GIO-)?(GiONEE[- ])?GN100T!', + 13 => '(GIO-)?(GiONEE[- ])?GN100!', + 14 => '(GIO-)?(GiONEE[- ])?GN105!', + 15 => '(GIO-)?(GiONEE[- ])?GN106!', + 16 => '(GIO-)?(GiONEE[- ])?GN107!', + 17 => '(GIO-)?(GiONEE[- ])?GN108!', + 18 => '(GIO-)?(GiONEE[- ])?GN109!', + 19 => '(GIO-)?(GiONEE[- ])?GN135!', + 20 => '(GIO-)?(GiONEE[- ])?GN136!', + 21 => '(GIO-)?(GiONEE[- ])?GN137!', + 22 => '(GIO-)?(GiONEE[- ])?GN139!', + 23 => '(GIO-)?(GiONEE[- ])?GN150!', + 24 => '(GIO-)?(GiONEE[- ])?GN151!', + 25 => '(GIO-)?(GiONEE[- ])?GN152!', + 26 => '(GIO-)?(GiONEE[- ])?GN160T!', + 27 => '(GIO-)?(GiONEE[- ])?GN160!', + 28 => '(GIO-)?(GiONEE[- ])?GN168T!', + 29 => '(GIO-)?(GiONEE[- ])?GN170!', + 30 => '(GIO-)?(GiONEE[- ])?GN180!', + 31 => '(GIO-)?(GiONEE[- ])?GN181!', + 32 => '(GIO-)?(GiONEE[- ])?GN200!', + 33 => '(GIO-)?(GiONEE[- ])?GN205!', + 34 => '(GIO-)?(GiONEE[- ])?GN210!', + 35 => '(GIO-)?(GiONEE[- ])?GN305!', + 36 => '(GIO-)?(GiONEE[- ])?GN320!', + 37 => '(GIO-)?(GiONEE[- ])?GN360!', + 38 => '(GIO-)?(GiONEE[- ])?GN380!', + 39 => '(GIO-)?(GiONEE[- ])?GN600!', + 40 => '(GIO-)?(GiONEE[- ])?GN700T!', + 41 => '(GIO-)?(GiONEE[- ])?GN700W!', + 42 => '(GIO-)?(GiONEE[- ])?GN705T!', + 43 => '(GIO-)?(GiONEE[- ])?GN705W!', + 44 => '(GIO-)?(GiONEE[- ])?GN706L!', + 45 => '(GIO-)?(GiONEE[- ])?GN708T!', + 46 => 'GN 708T', + 47 => '(GIO-)?(GiONEE[- ])?GN708W!', + 48 => '(GIO-)?(GiONEE[- ])?GN787!', + 49 => '(GIO-)?(GiONEE[- ])?GN800!', + 50 => '(GIO-)?(GiONEE[- ])?GN810!', + 51 => '(GIO-)?(GiONEE[- ])?GN818T!', + 52 => '(GIO-)?(GiONEE[- ])?GN858!', + 53 => '(GIO-)?(GiONEE[- ])?GN868!', + 54 => '(GIO-)?(GiONEE[- ])?GN878!', + 55 => 'Gnappo Ideos', + ), + '@GO' => + array ( + 0 => 'google sdk', + 1 => 'Google Ion', + 2 => '(Google )?Nexus S!', + 3 => '(Google )?Galaxy Nexus!', + 4 => '(Google )?Nexus ?4!', + 5 => '(Google )?Nexus ?5!', + 6 => '(Google )?Nexus ?6P!', + 7 => '(Google )?Nexus ?6!', + 8 => '(Google )?Nexus ?7 2013!', + 9 => '(Google )?Nexus ?7!', + 10 => '(Google )?Nexus ?9!', + 11 => '(Google )?Nexus ?10!', + 12 => 'Google Pixel', + 13 => 'Google Pixel XL', + 14 => 'Google Pixel 2', + 15 => 'Google Pixel 2XL', + 16 => 'Google Chromebook Pixel (2015)', + 17 => 'google cube', + 18 => 'GOCL!!', + 19 => 'GO Live!!', + 20 => 'GOOPHONE!!', + 21 => 'GO !!', + 22 => 'GOA', + 23 => 'GO504', + 24 => 'GO778', + 25 => 'GO960', + 26 => 'GO963', + 27 => 'GO980', + 28 => 'GO984', + 29 => 'Gomobile GO1001', + ), + '@GP' => + array ( + 0 => '(GP-|Geeksphone)!!', + 1 => 'GP-431', + 2 => 'GP-720', + 3 => 'GPLUS GN708W', + 4 => 'GPLUS N809', + 5 => '(GIO-)?(GiONEE[- ])?Gpad G1!', + 6 => '(GIO-)?(GiONEE[- ])?Gpad G2!', + 7 => '(GIO-)?(GiONEE[- ])?Gpad G3!', + 8 => 'Gpad G5', + ), + '@GR' => + array ( + 0 => 'Grouper', + 1 => 'GR-TB!!', + 2 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 3 => 'greenridge', + 4 => 'Graphos A10', + 5 => '(ZTE )?(Grand|Mimosa)!!', + ), + '@GS' => + array ( + 0 => 'GS01', + 1 => '(Gsmart|Gigabyte|Rio)!!', + 2 => 'GS02', + 3 => 'GS03', + ), + '@GT' => + array ( + 0 => 'GT-I9505G', + 1 => 'GT-810', + 2 => 'GT-I7105', + 3 => 'GT-I9810', + 4 => 'GT-[HN][0-9]{4,4}!!', + 5 => 'GT-9000', + 6 => 'GT-[0-9]{4,4}!!', + 7 => 'GT-i9377', + 8 => 'GT-T9500', + 9 => 'GT540', + 10 => 'GT540f', + 11 => 'GTV100', + 12 => 'GT-B[0-9]{4,4}!!', + 13 => 'GT-I[0-9]{3,4}!!', + 14 => 'GT-N[0-9]{4,4}!!', + 15 => 'GT-P[0-9]{4,4}!!', + 16 => 'GT-S[0-9]{4,4}!!', + 17 => 'GT-T959!', + 18 => 'GT9100', + 19 => 'GTablet', + 20 => 'GtabComb', + ), + '@GU' => + array ( + 0 => 'gucci', + ), + '@GV' => + array ( + 0 => 'GVON 898', + ), + '@GW' => + array ( + 0 => 'GW620', + ), + '@GX' => + array ( + 0 => 'GX1210V TV', + ), + '@H1' => + array ( + 0 => 'H120', + ), + '@H2' => + array ( + 0 => 'H2000+', + ), + '@H3' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@H6' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@H7' => + array ( + 0 => 'H701', + 1 => 'H7100', + 2 => 'H7500+', + 3 => 'H710VL', + 4 => 'H715BL', + ), + '@H8' => + array ( + 0 => 'H8 Life', + 1 => 'H866C', + 2 => 'H882L', + ), + '@H9' => + array ( + 0 => 'H940', + 1 => 'H9500', + ), + '@HA' => + array ( + 0 => 'HammerHead', + 1 => '(Haier[- ])?H[ETW]- ?[A-Z][0-9]!!', + 2 => 'Haier-W700', + 3 => 'Haier-SY0880', + 4 => 'Hasee E50 S1', + 5 => 'Hasee H45 T2', + 6 => 'Hasee W50 T2', + 7 => 'Hasee-X50TS', + 8 => 'HannsComb', + 9 => 'Hannspadd', + 10 => 'Hayabusa', + ), + '@HB' => + array ( + 0 => 'HB-100 DASAN', + 1 => 'HB-100 DASAN Networks, Inc.', + 2 => 'HB-1000', + ), + '@HD' => + array ( + 0 => 'HD2', + 1 => 'HD2 LEO', + 2 => 'HD7 Pro', + 3 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@HE' => + array ( + 0 => 'HEDY!!', + 1 => 'HERO H7500+', + 2 => 'Hero', + 3 => 'HERO CDMA', + 4 => 'HERO200', + ), + '@HI' => + array ( + 0 => 'HiBook pro', + 1 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 2 => 'Himax Pure', + 3 => 'HIKe!!', + 4 => 'HILIVE H7', + 5 => '(HS-)?Hisense!!', + 6 => 'Hisense AD686G', + 7 => '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', + 8 => 'Hisense Google TV TV', + 9 => 'hisense gx1200v', + 10 => '(Amaze|Hitech)!!', + 11 => 'HITO HT-3', + 12 => 'Hikari-iFrame!', + 13 => 'HIGHWAY', + 14 => 'HIGHWAY PURE', + 15 => 'HIGHWAY SIGNS', + ), + '@HK' => + array ( + 0 => 'HKPHONE H8-3G', + ), + '@HL' => + array ( + 0 => 'HLV-T!!', + ), + '@HM' => + array ( + 0 => 'HMP8100 ATV 93', + 1 => 'HMP8100 ATV INT', + 2 => '(Xiaomi )?(Redmi|RedRice|HM)!!', + 3 => '(Xiaomi )?(Redmi|HM)[ \\-]?Note!!', + 4 => '(Xiaomi |HM)?20!!', + ), + '@HN' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@HO' => + array ( + 0 => 'HOSIN!!', + 1 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 2 => 'Honor3c2G-T', + 3 => 'Honor Bee', + 4 => 'HOMESYNCT2WIFI', + ), + '@HP' => + array ( + 0 => 'HP Chromebook x360 11 G1 EE', + 1 => '(HP|Slate)!!', + 2 => 'HP!!', + 3 => 'HP-TouchPad', + 4 => '(HP )?Touchpad!', + ), + '@HS' => + array ( + 0 => 'HS-[0-9]{1,2}DTB!!', + 1 => 'HS-[EFHITUX][0-9]!!', + 2 => 'HS-E[GT][0-9]{3,3}!!', + 3 => '(HS-)?Hisense!!', + 4 => 'HS-EG98', + 5 => 'HS U978', + ), + '@HT' => + array ( + 0 => '(HTC )?Nexus ?One!', + 1 => 'HTC One', + 2 => 'HT7 Pro', + 3 => 'HT17Pro', + 4 => 'HT20Pro', + 5 => 'HTC!!', + 6 => '(HTC|PCD|USCC)?ADR[0-9]{4,4}!!', + 7 => '(HTC )?HT[LV][0-9]{2,2}!!', + 8 => 'HTX21', + 9 => 'HTC Dream', + 10 => 'HTC Dream G1', + 11 => 'HTC Dream SparksMod ', + 12 => 'HTC Vision', + 13 => 'HTC T-Mobile myTouch 3G Slide', + 14 => 'HTC my ?Touch 3G Slide!', + 15 => 'HTC Glacier', + 16 => 'HTC Panache', + 17 => 'HTC My ?Touch ?4G$!', + 18 => 'HTC S910m', + 19 => 'HTC myTouch 4G Slide', + 20 => 'HTC Doubleshot', + ), + '@HU' => + array ( + 0 => 'HUAWEI WATCH', + 1 => 'Huawei MediaPad', + 2 => 'Huawei OsiMood MediaPad', + 3 => 'HUAWEI MediaPad M1 8.0', + 4 => 'Huawei MediaPad T1 7.0 3G', + 5 => 'Huawei MediaPad T1 8.0 4G', + 6 => 'Huawei MediaPad T1 10 4G', + 7 => '(Huawei )?[MSTX](1|2|7|8|10)\\-[A-Z0-9][0-9]{2,2}!!', + 8 => 'HUAWEI GEM-703L', + 9 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 10 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + 11 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 12 => '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', + 13 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 14 => 'HUAWEI A168-(AL10|DL09|L09|L29)!', + 15 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 16 => '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!', + 17 => '(HW-|HUAWEI )?CAN-(L01|L11|L12)!', + 18 => '(HW-|HUAWEI )?MLA-(L01|L03|L11|L12|L13)!', + 19 => '(HW-|HUAWEI )?DIG-(AL00|L01|L03|L21|TL10)!', + 20 => '(HW-|HUAWEI )?BAC-(AL00|L03|L21|L22|TL00)!', + 21 => '(HW-|HUAWEI )?HWI-(AL00|TL00)!', + 22 => '(HW-|HUAWEI )?MLA-(AL00|AL10)!', + 23 => '(HW-|HUAWEI )?MLA-(TL00|TL10|UL00)!', + 24 => 'Huawei P7 mini', + 25 => 'Huawei P8max', + 26 => '(Huawei|Ascend|HW-)!!', + 27 => 'HUAWEI Honor 3c w', + 28 => 'Huawei S7', + 29 => 'Hudl HT7S3', + 30 => 'Hudl 2', + 31 => 'HUAWEI U8686', + 32 => 'Huawei 858', + ), + '@HW' => + array ( + 0 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + 1 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 2 => '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', + 3 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 4 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 5 => '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!', + 6 => '(HW-|HUAWEI )?CAN-(L01|L11|L12)!', + 7 => '(HW-|HUAWEI )?MLA-(L01|L03|L11|L12|L13)!', + 8 => '(HW-|HUAWEI )?DIG-(AL00|L01|L03|L21|TL10)!', + 9 => '(HW-|HUAWEI )?BAC-(AL00|L03|L21|L22|TL00)!', + 10 => '(HW-|HUAWEI )?HWI-(AL00|TL00)!', + 11 => '(HW-|HUAWEI )?MLA-(AL00|AL10)!', + 12 => '(HW-|HUAWEI )?MLA-(TL00|TL10|UL00)!', + 13 => '(Huawei|Ascend|HW-)!!', + 14 => 'hwu8812D', + 15 => 'HW-01E', + 16 => 'HW-01K', + 17 => 'HW-03E', + 18 => 'HWT31', + 19 => 'HWV32', + ), + '@HY' => + array ( + 0 => 'HY5001', + 1 => 'HYUNDAI!!', + 2 => 'Hydro', + 3 => 'Hydro PLUS', + 4 => 'HYPER X BLADE', + ), + '@I ' => + array ( + 0 => 'I 7520', + ), + '@I-' => + array ( + 0 => 'i-Joy i-Call', + 1 => 'i-Call 300', + 2 => 'i-Call 300v2', + 3 => 'i-Call 504', + 4 => '(i-mobile|i-style|IQ)!!', + ), + '@I1' => + array ( + 0 => 'I110', + 1 => 'i1', + ), + '@I3' => + array ( + 0 => 'i3000', + ), + '@I5' => + array ( + 0 => 'i5300', + 1 => 'i5350', + ), + '@I6' => + array ( + 0 => 'i6000', + ), + '@I7' => + array ( + 0 => 'I7500', + ), + '@I8' => + array ( + 0 => 'i8400', + 1 => 'i8450', + 2 => 'i803w', + 3 => 'I897', + ), + '@I9' => + array ( + 0 => 'I9220', + 1 => 'i9400', + 2 => 'i9430', + 3 => 'i9480', + 4 => 'i9500', + 5 => 'i9570', + 6 => 'I9000', + 7 => 'I9300 Galaxy SIII ', + 8 => 'I9300', + ), + '@IB' => + array ( + 0 => '(iBall )?Andi!!', + 1 => 'iBall!!', + 2 => '(Aura|iberry|AUXUS)!!', + ), + '@IC' => + array ( + 0 => 'ICONIA!!', + 1 => 'IconBit NetTab Thor Mini', + ), + '@ID' => + array ( + 0 => '(Digma )?iD[jmnsx][DQ]?[0-9]*!!', + 1 => 'IDEOS!!', + 2 => 'IdeaPad A1', + 3 => 'IdeaPadA10', + 4 => 'Ideapad K1!', + 5 => 'Ideapad S10-3T', + 6 => '(Lenovo ?)?(IdeaTab ?)?[AB][0-9]{4,4}!!', + 7 => '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!', + 8 => 'idea ?tv!!', + ), + '@IF' => + array ( + 0 => 'ifive!!', + ), + '@IG' => + array ( + 0 => 'IGGY', + ), + '@IL' => + array ( + 0 => '(Ilium )?Avvio!!', + 1 => 'ILT-MX100', + 2 => '(Lanix )?(Ilium|llium)!!', + ), + '@IM' => + array ( + 0 => 'imx50!', + 1 => 'imx51!', + 2 => 'imx53!', + 3 => 'imx6q!', + 4 => 'IMO!!', + 5 => 'Im(Smart|PAD)!!', + 6 => '(SKY )?IM[- ][A-Z][0-9]{3,3}!!', + 7 => 'IM-100K', + 8 => 'IM-100S', + ), + '@IN' => + array ( + 0 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 1 => 'INSIGNIA 5', + 2 => 'INSIGNIA 5X', + 3 => 'Inspire HD', + 4 => 'Incredible', + 5 => 'Incredible 2', + 6 => 'Incredible ?S!', + 7 => 'Incredible ?2!', + 8 => 'Incredible 4G LTE', + 9 => 'Inspire 4G', + 10 => 'INFOBAR!!', + 11 => 'Infinix!!', + 12 => 'IN[0-9]{3,3}!!', + 13 => 'Infocus!!', + 14 => 'INHON PAPILIO G1', + 15 => 'intki E86', + 16 => 'Innos!!', + 17 => '(Intex )?Aqua!!', + 18 => '(Intex )?Cloud!!', + 19 => 'INTEX IRIS-II', + 20 => 'INQ Cloud Touch', + 21 => 'INQ Mayfair (EU)', + 22 => '(iNote|itel)!!', + 23 => 'Infinity', + 24 => 'Internet TV', + 25 => 'Internet TV Box', + ), + '@IO' => + array ( + 0 => 'iOCEAN!!', + ), + '@IP' => + array ( + 0 => 'iP977', + 1 => 'IPRO i5S', + ), + '@IQ' => + array ( + 0 => '(Fly )?IQ ?[0-9]{3,4}!!', + 1 => 'iQ(Talk|Tab)!!', + 2 => 'iQ7 8GB', + 3 => '(i-mobile|i-style|IQ)!!', + ), + '@IR' => + array ( + 0 => 'Iris!!', + ), + '@IS' => + array ( + 0 => 'IS11CA', + 1 => 'ISW?[0-9]{2,2}F!!', + 2 => 'ISW[0-9]{2,2}HT!!', + 3 => 'ISW11K', + 4 => 'IS11LG', + 5 => 'ISW11M', + 6 => 'IS12M', + 7 => 'IS11N', + 8 => 'IS06', + 9 => 'IS11PT', + 10 => 'IS703C', + 11 => 'IS801C', + 12 => 'ISW11SC', + 13 => 'IS0[0-9]!!', + 14 => 'ISW?1[0-9]SH!!', + 15 => 'IS[0-9]{2,2}S!!', + 16 => 'IS04', + 17 => 'IS11T', + ), + '@IT' => + array ( + 0 => '(iNote|itel)!!', + 1 => 'ITP-XD10W', + 2 => 'ITP-XD80L', + 3 => 'ITP-XD97W', + ), + '@IU' => + array ( + 0 => 'IUNI U810', + ), + '@IV' => + array ( + 0 => 'IVIO!!', + ), + '@IW' => + array ( + 0 => 'iwoo i900', + ), + '@IX' => + array ( + 0 => 'iX101T1', + 1 => 'iX101T1-2G', + 2 => 'iX101T1-XS', + ), + '@JA' => + array ( + 0 => 'Jaguar3', + 1 => 'Jaguar7', + ), + '@JC' => + array ( + 0 => 'JC-S9220', + 1 => 'JC-A[0-9]{3,3}!!', + 2 => 'JC-KSP8000', + ), + '@JD' => + array ( + 0 => 'JDN-W09', + ), + '@JI' => + array ( + 0 => '(JIAYU|JY)!!', + 1 => 'JIMMY', + ), + '@JJ' => + array ( + 0 => 'JJ5S+', + ), + '@JM' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@JO' => + array ( + 0 => 'Jolla', + 1 => 'Joy', + 2 => 'JOIN', + ), + '@JT' => + array ( + 0 => 'JT SmartPC02', + 1 => 'JT-Smart PC01', + 2 => 'JT-H580VT', + 3 => 'JT-H581VT', + 4 => 'JT-B1', + ), + '@JX' => + array ( + 0 => 'JXD!!', + ), + '@JY' => + array ( + 0 => '(JIAYU|JY)!!', + ), + '@K0' => + array ( + 0 => 'K00C', + 1 => 'K010', + 2 => 'K010E', + 3 => 'K018', + 4 => 'K014', + 5 => 'K01B', + 6 => 'K00G', + 7 => 'K00E', + 8 => 'K00Y', + 9 => 'K00Z', + 10 => 'K012', + 11 => 'K019', + 12 => 'K01F', + 13 => 'K01N', + 14 => 'K01Q', + 15 => 'K016', + 16 => 'K01E', + 17 => 'K00X', + 18 => 'K00R', + 19 => 'K007', + 20 => 'K013', + 21 => 'K013C', + 22 => 'K017', + 23 => 'K01A', + 24 => 'K012 2', + 25 => 'K01U', + 26 => 'K00S', + 27 => 'K00U', + 28 => 'K011', + 29 => 'K015', + 30 => 'K01H', + 31 => 'K00L', + 32 => 'K00F', + 33 => 'K080', + ), + '@K1' => + array ( + 0 => 'K11', + 1 => 'K1', + 2 => 'K10000 Pro', + ), + '@K3' => + array ( + 0 => 'K3', + 1 => 'K30-T', + 2 => 'K30-W', + 3 => 'K3 Note', + ), + '@K8' => + array ( + 0 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + ), + '@K9' => + array ( + 0 => 'K9 Smart 4G', + ), + '@KA' => + array ( + 0 => 'Karbonn!!', + 1 => '(Karbonn|Titanium)!!', + 2 => 'Karbonn Aura 9', + 3 => '(KAZAM|Thunder|Tornado|Trooper)!!', + 4 => '(KATBL|Kogan|Agora)!!', + 5 => 'Kavak Y625-U03', + ), + '@KB' => + array ( + 0 => 'KB901', + ), + '@KC' => + array ( + 0 => 'KC-01', + 1 => 'KC-S301AE', + 2 => 'KC-S701', + 3 => 'KCP01K', + ), + '@KE' => + array ( + 0 => 'KENEKSI!!', + 1 => 'kenzo', + ), + '@KF' => + array ( + 0 => 'KFOTE?!', + 1 => 'KFTT', + 2 => 'KFJW(I|A)!', + 3 => 'KFJMWI', + 4 => 'KFSOWI', + 5 => 'KFTHW(I|A)!', + 6 => 'KFAPW(I|A)!', + 7 => 'KFARWI', + 8 => 'KFASWI', + 9 => 'KFSAW(I|A)!', + 10 => 'KFFOWI', + 11 => 'KFMEWI', + 12 => 'KFTBWI', + 13 => 'KFAUWI', + 14 => 'KFGIWI', + 15 => 'KFDOWI', + 16 => 'KFSUWI', + ), + '@KI' => + array ( + 0 => 'Kindle Fire', + 1 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 2 => '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', + 3 => 'KIOTO 793', + 4 => 'KITE', + 5 => '(ZTE )?Kis!!', + ), + '@KM' => + array ( + 0 => '(EV|KM)-[ES][0-9]{3,3}!!', + ), + '@KN' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@KO' => + array ( + 0 => 'Konka Amber3', + 1 => 'KOB-(L09|W09)!', + 2 => '(KATBL|Kogan|Agora)!!', + 3 => 'KOMU!!', + 4 => 'KONKA!!', + 5 => 'koobee-T550', + 6 => 'Koobe!!', + 7 => 'KORIDY H15', + 8 => 'KORIDY H16', + ), + '@KP' => + array ( + 0 => 'KPT!!', + 1 => 'KPN!!', + ), + '@KS' => + array ( + 0 => 'KSP8000', + ), + '@KU' => + array ( + 0 => 'Kurio!!', + 1 => 'KU9500', + 2 => 'KUNO4', + 3 => 'KUNO 4+', + ), + '@KY' => + array ( + 0 => 'KYV33', + 1 => 'Kyobo mirasol eReader', + 2 => 'KYL[0-9]{2,2}!!', + 3 => '(USCC-|KYOCERA-)?E[0-9]{4,4}!!', + 4 => '(USCC-|KYOCERA-)?C[0-9]{4,4}!!', + 5 => 'KY[FLTYV][0-9]{2,2}!!', + 6 => 'Kyivstar!!', + ), + '@L' => + array ( + 0 => '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', + ), + '@L-' => + array ( + 0 => 'L-0[0-9][A-Z]!!', + ), + '@L3' => + array ( + 0 => 'L3', + ), + '@L9' => + array ( + 0 => 'l97D', + ), + '@LA' => + array ( + 0 => 'LA-!!', + 1 => '(Lanix )?(Ilium|llium)!!', + 2 => 'Lark!!', + 3 => 'LAVA iris 351', + 4 => 'LAVA iRIS 504q', + 5 => 'LAVA A1', + 6 => 'Lava A89', + 7 => 'LAVA R1', + 8 => 'LAVA R1s', + 9 => 'LAVA S12', + 10 => 'LAVA V5', + 11 => 'LAP250U', + 12 => 'LAP255U', + 13 => 'LaVieTab!!', + 14 => 'land', + 15 => 'LA-I Dual core', + 16 => 'LA-M3', + 17 => 'LA1-L', + 18 => 'LA2-E', + 19 => 'LA2-E1', + 20 => 'LA2-L', + 21 => 'LA2-T', + 22 => 'LA2-T1', + 23 => 'LA2-S', + 24 => 'LA2-SN', + 25 => 'LA2-W', + 26 => 'LA2-W1', + 27 => 'LA3-W', + 28 => 'LA3S', + 29 => 'LA5-W', + ), + '@LC' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 1 => 'LC-Ux30US', + 2 => 'LC-[0-9]{2,2}((LE|UE)[0-9]{1,3}[A-Z])!', + 3 => 'LC-((A|S|LX)[0-9]{1,3}[A-Z])!', + 4 => 'LCD-((S|V|LX|UF)[0-9]{1,3}[A-Z])!', + ), + '@LD' => + array ( + 0 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 1 => 'LDK-ICK v1.4', + ), + '@LE' => + array ( + 0 => '(LE[0-9]{2,2}[BMU][0-9]{4,4}[A-Z]+)!', + 1 => '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', + 2 => 'Legend', + 3 => 'LEAGOOLG13', + 4 => 'Le 1S', + 5 => 'Le 1 Pro', + 6 => 'Le 2', + 7 => 'Le 2 Pro', + 8 => 'Le Max', + 9 => 'LEX626', + 10 => 'LEX720', + 11 => 'LEX820', + 12 => 'Le X500', + 13 => 'Le X501', + 14 => 'Le X506', + 15 => 'Le X507', + 16 => 'Le X509', + 17 => 'Le X520', + 18 => 'Le X522', + 19 => 'Le X526', + 20 => 'Le X527', + 21 => 'Le X528', + 22 => 'Le X620', + 23 => 'Le X621', + 24 => 'Le X622', + 25 => 'Le X625', + 26 => 'Le X820', + 27 => 'Le X821', + 28 => 'Le X822', + 29 => 'Le X829', + 30 => 'Le X829M', + 31 => 'Le X920', + 32 => 'LETV Letv X500', + 33 => 'LeTv 1s', + 34 => 'Letv X500', + 35 => 'Letv X501', + 36 => 'Letv X502', + 37 => 'Letv X507', + 38 => 'Letv X520', + 39 => 'Letv X600', + 40 => 'Letv X900', + 41 => 'Letv X910', + 42 => 'Letv Max4-70', + 43 => 'Letv C1S', + 44 => 'Letv U2', + 45 => 'Letv S40 Air', + 46 => 'Letv S40 Air L', + 47 => 'Letv S50 Air', + 48 => 'Letv X3-40', + 49 => 'Letv X3-50 UHD', + 50 => 'Letv X3-55', + 51 => 'Letv X3-55 Pro', + 52 => 'Letv X3-65', + 53 => 'LeTVX60', + 54 => 'leepoo!!', + 55 => 'LEMON P7', + 56 => 'Lemon S3', + 57 => 'Lemon S8', + 58 => 'Lenco!!', + 59 => 'LENCM900HZ', + 60 => 'Lenovo A1-32AB0', + 61 => 'Lenovo A1-32AJ0', + 62 => 'Lenovo IdeaPad Yoga 11S', + 63 => 'Lenovo IdeaPad Yoga 13', + 64 => '(Lenovo ?)?(IdeaTab ?)?[AB][0-9]{4,4}!!', + 65 => 'Lenovo YB1-X90L', + 66 => 'Lenovo YB1-X90F', + 67 => 'Lenovo YB-Q501F', + 68 => 'Lenovo YT3-X50F', + 69 => 'Lenovo YT3-X50L', + 70 => 'Lenovo YT3-850F', + 71 => 'Lenovo YT-X703F', + 72 => 'Lenovo YT3-X90F', + 73 => 'Lenovo YT3-X90L', + 74 => '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', + 75 => 'Lenovo TB-7304F', + 76 => 'Lenovo TB-X103F', + 77 => 'Lenovo TB2-X30F', + 78 => 'Lenovo TB2-X30L', + 79 => 'Lenovo TB3-730X', + 80 => 'Lenovo TB3-710F', + 81 => 'Lenovo TB3-710I', + 82 => 'Lenovo TB-7703X', + 83 => 'Lenovo TB3-850F', + 84 => 'Lenovo TB3-850M', + 85 => 'Lenovo TB3-X70F', + 86 => 'Lenovo TB3-X70L', + 87 => 'Lenovo TB-8504F', + 88 => 'Lenovo TB-8703F', + 89 => 'Lenovo TB-8704F', + 90 => 'Lenovo TB-X304F', + 91 => 'Lenovo TB-X704F', + 92 => 'Lenovo TB-X704L', + 93 => '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!', + 94 => 'Lenovo Pad A4', + 95 => 'Lenovo', + 96 => 'lepad 001b', + 97 => 'lepad 001n', + 98 => '(Lenovo |Lephone )?3GC101!', + 99 => '(Lenovo |Lephone )?3GW100!', + 100 => '(Lenovo |Lephone )?3GW101!', + 101 => '(Lenovo )?S1[- ]37AH0!', + 102 => '(Lenovo )?S2[- ]38A(H0|T0)!', + 103 => 'Lenovo!!', + 104 => 'LenovoTV 40S9', + 105 => 'LenovoTV 50S52', + 106 => 'Lenovo Z2', + 107 => '(BLF-)?lephone!!', + 108 => 'Le Pan Mini', + 109 => 'Le Pan TC802A', + 110 => 'Le Pan TC1010', + 111 => 'Le Pan TC1020', + 112 => 'LePanII', + 113 => 'Le Pan S', + 114 => 'LENNY', + 115 => 'LENNY2', + 116 => 'LENNY3', + ), + '@LG' => + array ( + 0 => 'LGE-lap crespo', + 1 => 'LGE-lap maguro', + 2 => 'LGE-maguro cappuccino', + 3 => 'LGE-lap mako', + 4 => 'LG-Nexus5', + 5 => 'LG-Watch Urbane', + 6 => 'LG-AN160', + 7 => 'LG-AK495', + 8 => 'LG-?AS[0-9]{3,3}!!', + 9 => 'LG-?C[0-9]{3,3}!!', + 10 => 'LG-CX670', + 11 => 'LG-?D[0-9]{3,3}!!', + 12 => 'LG-DS1203', + 13 => 'LG-?E[0-9]{3,3}!!', + 14 => 'LG-F[0-9]{3,3}!!', + 15 => 'LG-GT540!', + 16 => 'LG-GW620!', + 17 => 'LG-H[0-9]{3,3}!!', + 18 => 'LG-K[0-9]{3,3}!!', + 19 => 'LG-KH5200', + 20 => 'LG-KS1024', + 21 => 'LG-KU[0-9]{4,4}!!', + 22 => 'LG-?L[0-9]{2,3}[A-Z]!!', + 23 => 'LG-LG[0-9]{3,3}!!', + 24 => 'LGLK430', + 25 => 'LG-LK460', + 26 => 'LG-?LS[0-9]{3,3}!!', + 27 => 'LG-LU[0-9]{4,4}!!', + 28 => 'LG-LW690', + 29 => 'LG-LW770', + 30 => 'LG-M[0-9]{3,3}!!', + 31 => 'LG-?MS[0-9]{3,3}!!', + 32 => 'LGMP260', + 33 => 'LG-P[0-9]{3,3}!!', + 34 => 'LG-SU[0-9]{3,3}!!', + 35 => 'LG-T480!', + 36 => 'LG-T540!', + 37 => 'LG-TP260', + 38 => 'LG-TP450', + 39 => 'LG-SU-760', + 40 => 'LGUK410', + 41 => 'LG-UK495', + 42 => 'LGUK750', + 43 => 'LGUK932', + 44 => 'LG-UN350', + 45 => 'LG-?US[0-9]{3,3}!!', + 46 => 'LG-V[0-9]{3,3}!!', + 47 => 'LG-VK[0-9]{3,3}!!', + 48 => 'LG-VN[0-9]{3,3}!!', + 49 => 'LG-VM[0-9]{3,3}!!', + 50 => 'LG-VS[0-9]{3,3}!!', + 51 => 'LG-X[0-9]{3,3}!!', + 52 => 'LGM-[GKVX][0-9]{3,3}!!', + 53 => 'LGMP450', + 54 => 'lge-F160!', + 55 => 'LGE-E988!', + 56 => 'lgp-970', + 57 => 'LG[LSTV][0-9]{2,2}!!', + 58 => 'LG!!', + 59 => 'LG-Google TV!!', + 60 => 'LG-ANDROID MINI BOX', + 61 => 'LG-P999', + 62 => 'LG-E739', + 63 => 'LG-C800', + ), + '@LI' => + array ( + 0 => 'Liquid!!', + 1 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 2 => 'Liberty', + 3 => '(MEDION|(MD )?LIFETAB)!!', + 4 => 'Life', + 5 => 'Liberty Tab G100', + 6 => 'Live ?With ?Walkman!', + 7 => 'libra', + 8 => 'lithium', + 9 => 'Light Tab', + 10 => 'Light Tab 2', + 11 => 'Light Tab 2W', + ), + '@LL' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 1 => '(Lanix )?(Ilium|llium)!!', + ), + '@LM' => + array ( + 0 => 'LM-G710!', + 1 => 'LM-G715!', + 2 => 'LM-Q610!', + 3 => 'LM-Q710!', + 4 => 'LM-V350!', + 5 => 'LM-X210!', + 6 => 'LM-X410!', + 7 => 'LM-X415!', + 8 => 'LM-X510!', + 9 => 'LM-Y110!', + ), + '@LO' => + array ( + 0 => 'LogicPD Zoom2', + 1 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 2 => 'Loox', + ), + '@LS' => + array ( + 0 => 'LS670', + 1 => 'LS740', + 2 => 'LS-4001', + 3 => 'LS-4002', + 4 => 'LS-4003', + 5 => 'LS-4004', + 6 => 'LS-4005', + 7 => 'LS-4006', + 8 => 'LS-4008', + 9 => 'LS-4503', + 10 => 'LS-4505', + 11 => 'LS-5002', + 12 => 'LS-5004', + 13 => 'LS-5005', + 14 => 'LS-5006', + 15 => 'LS-5007', + 16 => 'LS-5008', + 17 => 'LS-5009', + 18 => 'LS-5010', + 19 => 'LS-5013', + 20 => 'LS-5014', + 21 => 'LS-5015', + 22 => 'LS-5016', + 23 => 'LS-5017', + 24 => 'LS-5018', + 25 => 'LS-5020', + 26 => 'LS-5021', + 27 => 'LS-5201', + 28 => 'LS-5501', + 29 => 'LS-5502', + 30 => 'LS-5503', + 31 => 'LS-5504', + 32 => 'LS-5505', + 33 => 'LS-5506', + 34 => 'LS-5507', + 35 => 'LS-6001', + ), + '@LT' => + array ( + 0 => 'LT[0-9]{4,4}!!', + 1 => 'LTB-HS', + 2 => 'LT-TLA', + 3 => 'LT-NA7', + 4 => 'LT-NA7F', + 5 => '(SNM\\-)?LT[0-9]{2,2}[a-z]?!!', + ), + '@LU' => + array ( + 0 => 'LUXURY', + 1 => 'LUXURY 3', + 2 => 'LUXURY 4', + 3 => 'LUXURY 5', + 4 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 5 => 'Lucky Ultra Sonic U8650', + 6 => 'LU2300', + 7 => 'Lumia800', + 8 => 'Lumia 900', + 9 => 'Luna TAB07-920N', + 10 => 'Luna TAB07-100', + 11 => 'Luna TAB07-101', + 12 => 'Luna TAB274', + 13 => 'Luna TAB374', + 14 => 'Luna TAB474', + 15 => 'Luna TAB10-150', + 16 => 'Luno', + ), + '@LY' => + array ( + 0 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 1 => 'LYF LS-4006', + 2 => 'LYF LS-5009', + ), + '@M' => + array ( + 0 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + ), + '@M ' => + array ( + 0 => 'M POP 5020A', + 1 => 'M POP', + ), + '@M-' => + array ( + 0 => 'M-270', + 1 => 'M-PAD N8', + ), + '@M0' => + array ( + 0 => 'M01', + 1 => 'M02', + 2 => 'M01T', + 3 => 'M009F', + 4 => 'M030', + 5 => 'M031', + 6 => 'M032', + 7 => 'M040', + 8 => 'M045', + ), + '@M1' => + array ( + 0 => 'M19', + 1 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 2 => 'M1050S', + 3 => 'M1', + 4 => 'm1 metal', + 5 => 'm1 note', + 6 => 'M1001', + 7 => 'M12', + ), + '@M2' => + array ( + 0 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 1 => 'M210', + 2 => 'm2 note', + 3 => 'm2', + 4 => 'M2mini', + ), + '@M3' => + array ( + 0 => 'M3 Enjoy TV Box', + 1 => 'M3-2200', + 2 => 'M305', + 3 => 'M350', + 4 => 'M363', + 5 => 'M310', + 6 => 'M370i', + 7 => 'm3 note', + 8 => 'm3', + 9 => 'M3s', + 10 => 'M351', + 11 => 'M353', + 12 => 'M355', + 13 => 'M356', + ), + '@M4' => + array ( + 0 => 'M4301', + 1 => 'M470BSA', + 2 => 'M470BSE', + 3 => 'M4', + 4 => 'M4(TEL)? SS[0-9]{3,4}!!', + ), + '@M5' => + array ( + 0 => 'M555', + 1 => 'M532', + 2 => 'M5 lite', + 3 => 'M571C', + 4 => 'M5 Note', + 5 => 'M578C', + 6 => 'M5', + ), + '@M6' => + array ( + 0 => 'M623C', + 1 => 'M650', + 2 => 'M660', + 3 => 'M6 Note', + 4 => 'M6', + ), + '@M7' => + array ( + 0 => 'M701C', + 1 => 'M702', + 2 => 'M758A', + 3 => 'M7CDTU', + 4 => 'M70', + 5 => 'M785', + 6 => 'M726HC', + 7 => 'M70014', + ), + '@M8' => + array ( + 0 => 'M801', + 1 => 'M8047IU', + 2 => 'M812C', + 3 => 'm8wl', + 4 => 'M860', + 5 => 'M865', + 6 => 'M886', + 7 => 'M8', + 8 => 'M8 pro', + ), + '@M9' => + array ( + 0 => 'M975', + 1 => 'M9300', + 2 => 'M9', + 3 => 'M9-unlocked', + 4 => 'M9 pro', + 5 => 'M9000', + ), + '@MA' => + array ( + 0 => 'Maguro', + 1 => 'Mako', + 2 => 'manta', + 3 => '(bq|Aquaris|Edison|Maxwell)!!', + 4 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 5 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 6 => 'MAX FIND 5.0', + 7 => 'Malata!!', + 8 => 'Masstel!!', + 9 => 'MASTONE!!', + 10 => 'Maxtron!!', + 11 => 'magi', + 12 => 'MagicBox', + 13 => '(Xiaomi )?(MI )?MAX$!', + 14 => '(Xiaomi )?(MI )?MAX 2$!', + 15 => 'markf', + 16 => 'markw', + ), + '@MB' => + array ( + 0 => 'MBX DVBT reference board (c03ref)', + 1 => 'MBX Dongle board!', + 2 => 'MBX reference board!', + 3 => '(NMP|MBR|XDK|XDS|XMP)\\-!!', + 4 => 'MBS BEAN 454', + 5 => 'MB[0-9]{3,3}!!', + ), + '@MC' => + array ( + 0 => 'MC002', + 1 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 2 => 'MC32N0', + 3 => 'MC40N0', + 4 => 'MC67NA', + ), + '@MD' => + array ( + 0 => '(MEDION|(MD )?LIFETAB)!!', + 1 => 'MD-[0-9]{4,4}!!', + ), + '@ME' => + array ( + 0 => 'ME102A', + 1 => 'ME180A', + 2 => 'ME171', + 3 => 'ME172V', + 4 => 'ME173X', + 5 => 'ME301T', + 6 => 'ME302C', + 7 => 'ME302KL', + 8 => 'ME370T', + 9 => 'ME371MG', + 10 => 'ME372CG', + 11 => 'ME372CL-FF', + 12 => 'ME560CG', + 13 => 'ME581CL', + 14 => 'MeMO Pad 7', + 15 => 'MediaPad!!', + 16 => 'Mediacom 810C', + 17 => '(MEDION|(MD )?LIFETAB)!!', + 18 => 'MEEG!!', + 19 => 'MEIZU E3', + 20 => 'meizu m1note', + 21 => 'MEIZU M5', + 22 => 'MEIZU M9', + 23 => 'MEIZU MX', + 24 => 'Meizu S6', + 25 => '(MEO )?Smart A!!', + 26 => 'MEU AN!!', + 27 => 'ME[0-9]{3,3}!!', + 28 => 'MEM02', + 29 => 'MegaFon SP-AI', + 30 => 'MegaFon SP-A3', + 31 => 'MegaFon SP-A5', + 32 => 'MegaFon SP-A10', + 33 => 'MegaFon V9', + 34 => 'MegaFon V9+', + 35 => 'MegaFon SIM+', + 36 => 'MegaFon Login 3', + ), + '@MF' => + array ( + 0 => 'mfld (dv10|dv20|gi|lw00|pr2|pr3)!', + 1 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 2 => 'MFC[0-9]!!', + 3 => 'MF97B', + ), + '@MH' => + array ( + 0 => 'MH350', + 1 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + ), + '@MI' => + array ( + 0 => 'MID1040C', + 1 => 'MID[0-9]{4,4}!!', + 2 => 'Mini 3iG', + 3 => 'MINT-DG330', + 4 => 'MID1018', + 5 => 'MID1028', + 6 => 'MID Ser(ai|ia)ls!', + 7 => 'MIUI.us Sensation 4G', + 8 => 'MID[0-9]!!', + 9 => 'Mi-A402', + 10 => 'Micromax!!', + 11 => 'Mio!!', + 12 => 'MITO!!', + 13 => 'MIZ Z2', + 14 => 'Milestone XT711', + 15 => 'Milestone XT720', + 16 => 'Milestone', + 17 => 'Milestone X', + 18 => 'Milestone X2', + 19 => 'Milestone MAXX', + 20 => 'MILESTONE3', + 21 => 'MID7C', + 22 => 'MID43C', + 23 => 'MID74C', + 24 => 'MID77C', + 25 => 'MID82C', + 26 => 'MID84C', + 27 => 'MID102C', + 28 => 'MID103C', + 29 => 'MID104C', + 30 => 'MID114C', + 31 => 'MID[C012]!!', + 32 => 'Mi438S', + 33 => '(CSL[- ])?(Spice[- ]?)?Mi(-| )?[0-9]{3,3}!!', + 34 => 'miTab!!', + 35 => '(Xiaomi )?(Xiaomi|Xiaomi M|MI)!!', + 36 => '(Xiaomi|Xiaomi Mi|MI) Note!!', + 37 => '(Xiaomi )?(MI )?MAX$!', + 38 => '(Xiaomi )?(MI )?MAX 2$!', + 39 => '(Xiaomi )?(MI )?MIX$!', + 40 => '(Xiaomi )?(MI )?MIX 2$!', + 41 => '(Xiaomi )?(MI )?MIX 2S$!', + 42 => 'mido', + 43 => '(Xiaomi|Xiaomi Mi|MI) Pad!!', + 44 => '(Xiaomi|Xiaomi Mi|MI)Box!!', + 45 => '(Xiaomi|Xiaomi Mi|MI)TV!!', + 46 => '(ZTE )?(Grand|Mimosa)!!', + ), + '@MK' => + array ( + 0 => 'MK808', + 1 => 'MK808B', + 2 => 'MK809', + 3 => 'MK809B', + 4 => 'MK809IV', + 5 => 'MK818B', + 6 => 'MK908', + 7 => 'MK908II', + 8 => 'MK16(a|i|$)!', + ), + '@ML' => + array ( + 0 => '(HW-|HUAWEI )?MLA-(L01|L03|L11|L12|L13)!', + 1 => '(HW-|HUAWEI )?MLA-(AL00|AL10)!', + 2 => '(HW-|HUAWEI )?MLA-(TL00|TL10|UL00)!', + 3 => 'MLLED!!', + ), + '@MM' => + array ( + 0 => 'MM-3201', + ), + '@MO' => + array ( + 0 => 'Moto E', + 1 => 'Moto G', + 2 => 'Moto G LTE', + 3 => 'Moto G 2014', + 4 => 'Moto G 2014 LTE', + 5 => 'Moto G (2014)', + 6 => 'Moto X', + 7 => 'Moto 360', + 8 => 'Mobile Sosh', + 9 => 'Monterra', + 10 => 'Mobiistar!!', + 11 => 'MOCHE SMART A16', + 12 => '(MODECOM )?FreeTAB!!', + 13 => 'MOGU!!', + 14 => 'moii!!', + 15 => 'MORAL N01', + 16 => 'Moto Droid', + 17 => 'Motorola Pro XT610', + 18 => 'Motorola Milestone MAXX', + 19 => 'Motorola Backflip Me600', + 20 => 'Moto ME860', + 21 => 'Moto C', + 22 => 'Moto C Plus', + 23 => '(Moto)?E2$!', + 24 => '(Moto)?E2\\(4G-LTE\\)$!', + 25 => 'Motorola MotoE2!', + 26 => 'Moto E (4)', + 27 => 'Moto E (4) Plus', + 28 => 'moto e5 cruise', + 29 => '(Moto)?G3$!', + 30 => '(Moto)?G3-TE$!', + 31 => 'MOTOROLA MOTOG', + 32 => 'Moto G Play', + 33 => 'Moto G4', + 34 => 'Moto G (4)', + 35 => 'Moto G4 Plus', + 36 => 'Moto G (5)', + 37 => 'Moto G (5) Plus', + 38 => 'Moto G (5S) Plus', + 39 => 'moto g(6)', + 40 => 'moto g(6) plus', + 41 => 'Moto Z (2)', + 42 => 'Moto Z2 Play', + 43 => 'Moto X Pro', + 44 => 'moto x4', + 45 => 'Moto Backflip', + 46 => 'MOTOROLA XOOM MZ606', + 47 => 'MOTOROLA RAZR', + 48 => 'MOTWX435KT', + 49 => '(PLOYER-)?MOMO!!', + 50 => 'MOB-5045', + 51 => 'Mobii 7', + 52 => 'MoFing', + 53 => 'mocha', + 54 => 'MO-01J', + 55 => 'MO-01K', + 56 => 'Movistar Express', + 57 => 'Movistar Link', + 58 => 'Movistar Motion', + 59 => 'Movistar Prime', + 60 => 'MOVE', + ), + '@MP' => + array ( + 0 => 'MP[0-9]{3,3}C!!', + 1 => 'MP717', + 2 => 'MP843', + 3 => 'MP888', + 4 => 'MP959', + 5 => 'MP969', + 6 => 'MP1010', + 7 => 'MP7007', + 8 => 'MPDC100 BT', + 9 => 'MPDC110 BT IPS', + 10 => 'MPDC112 BT IPS', + 11 => 'MPDC8 BT', + 12 => 'MPDC88 BT IPS', + 13 => 'MPDC706', + 14 => 'MPDC903', + 15 => 'MPQC704 HD', + 16 => 'MPQC784 IPS', + 17 => 'MPQC804HD', + 18 => 'MPQC1010', + ), + '@MS' => + array ( + 0 => 'MStar Amber3', + 1 => 'MSM', + 2 => 'msm(7227|7627)!', + 3 => 'msm7630!', + 4 => 'msm8660!', + 5 => 'msm(8x25|8625|8960)!', + 6 => 'msm8x30!', + 7 => 'msm8610!', + 8 => 'msm8909!', + 9 => 'msm(8226|8228)!', + 10 => 'MSM8926!', + 11 => 'msm8916!', + 12 => 'msm8952!', + 13 => 'msm8974!', + 14 => 'MSM8992!', + 15 => 'msm8994!', + 16 => 'MS840 4G', + 17 => 'MS3B', + 18 => 'MS4A', + 19 => 'MS3A', + ), + '@MT' => + array ( + 0 => 'mt5396!', + 1 => 'mt5399!', + 2 => 'mt5861!', + 3 => 'mt5880!', + 4 => 'mt5882!', + 5 => 'mt5890!', + 6 => 'mt6515!', + 7 => 'MTK6515', + 8 => 'mt6517!', + 9 => 'mt6571!', + 10 => 'mt6572!', + 11 => 'mt6575!', + 12 => 'mt6577!', + 13 => 'mt6582!', + 14 => 'mt6589!', + 15 => 'MTK-MT6589', + 16 => 'MTK6589!', + 17 => 'mt6592!', + 18 => 'MTK-MT6592', + 19 => 'MTK6592', + 20 => 'mt6595!', + 21 => 'mt6599!', + 22 => 'mt8125!', + 23 => 'mt8127!', + 24 => 'mt8135!', + 25 => 'MTK--8312', + 26 => 'mt8377!', + 27 => 'mt8389!', + 28 => 'mt8580!', + 29 => 'mt8658!', + 30 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 31 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 32 => 'MTC Android', + 33 => 'MT791', + 34 => 'MT70[0-9]{2,2}!!', + 35 => 'MTK6516', + 36 => 'MT[0-9]{3,3}!!', + 37 => 'MTS-SP100', + 38 => 'MTS-SP101', + 39 => 'MT[0-9]{2,2}[a-z]!!', + 40 => 'MT7A', + 41 => 'MTC!!', + ), + '@MU' => + array ( + 0 => 'muPAD 7M', + 1 => 'Multilaser Diamond', + 2 => 'Multilaser Orion', + 3 => 'Multilaser Oxy', + 4 => 'Multilaser Titanium', + ), + '@MW' => + array ( + 0 => 'MWND1', + 1 => 'mw07', + 2 => 'MW0710', + 3 => 'MW0711', + 4 => 'MW0712', + 5 => 'MW0731', + 6 => 'MW0731PLUS', + 7 => 'MW0733', + 8 => 'MW0811', + 9 => 'MW0812', + 10 => 'MW0812 V2.0', + 11 => 'MW0821', + 12 => 'MW0821 V2.0', + 13 => 'MW0821+', + 14 => 'MW0831', + 15 => 'MW0831Plus', + 16 => 'MW0922', + 17 => 'MW0931', + 18 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 19 => 'MW1031', + ), + '@MX' => + array ( + 0 => 'MX Enjoy TV BOX', + 1 => 'MX2', + 2 => 'MX4', + 3 => 'MX4 Pro', + 4 => 'MX5', + 5 => 'MX6', + ), + '@MY' => + array ( + 0 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 1 => 'MyPhone A818g Duo', + 2 => 'MyPhone A818 Slim Duo', + 3 => 'MyPhone A848 Duo', + 4 => 'MyPhone A848i Duo', + 5 => 'MyPhone A848g Duo', + 6 => 'MyPhone A888', + 7 => 'MyPhone A888 Duo', + 8 => 'My|Phone A888 Duo', + 9 => 'MyPhone A919 Duo', + 10 => 'MyPhone A919 3D Duo', + 11 => 'MyPhone A919i', + 12 => 'MyPhone A919i Duo', + 13 => 'MyPhone Agua Cyclone', + 14 => 'MyPhone Agua Hail', + 15 => 'MyPhone Agua Iceberg', + 16 => 'MyPhone Agua Iceberg Mini', + 17 => 'MyPhone Agua Iceberg Slim', + 18 => 'MyPhone Agua Infinity', + 19 => 'MyPhone Agua Ocean Lite', + 20 => 'MyPhone Agua Ocean Mini', + 21 => 'MyPhone Agua Ocean Pro', + 22 => 'MyPhone Agua Rain 2G', + 23 => 'MyPhone Agua Rain 3G', + 24 => 'MyPhone Agua Rio', + 25 => 'MyPhone Agua Rio Fun', + 26 => 'MyPhone Agua Rio Lite', + 27 => 'MyPhone Agua Storm', + 28 => 'MyPhone Agua Vortex', + 29 => 'myPhone C Smart', + 30 => 'myPhone Cube', + 31 => 'myPhone Cube 16GB', + 32 => 'myPhone Duosmart', + 33 => 'myPhone FUN 2', + 34 => 'myPhone Funky', + 35 => 'myPhone Hammer', + 36 => 'myPhone INFINITY 3G', + 37 => 'myPhone NEXT', + 38 => 'myPhone NEXTS', + 39 => 'myPhone NEXT S', + 40 => 'myPhone Smart', + 41 => 'myPhone S-line', + 42 => 'MyPhone Rio Craze', + 43 => 'MyPhone Rio Grande', + 44 => 'MyPhone Rio Junior TV', + 45 => 'MyPhone Rio 2', + 46 => 'MyPhone Rio 2 Fun', + 47 => 'MyPhone UNO', + 48 => 'MyPhone Xperia Rain 3G', + 49 => 'Myphone MY25', + 50 => 'MyPhone MY26', + 51 => 'MyPhone MY28S', + 52 => 'MyPad 2', + 53 => 'MyPad 750HD', + 54 => 'MyPad 1000 HD', + 55 => 'MY ?SAGA!!', + 56 => 'My ?Touch ?4G$!', + 57 => 'myTouch 4G Slide', + 58 => 'myTouch Slide 4G', + ), + '@MZ' => + array ( + 0 => 'MZ-m2 note', + 1 => 'MZ-M571C', + 2 => 'MZ-m3 note', + 3 => 'MZ-M5', + 4 => 'MZ-MEIZU M6', + 5 => 'MZ-MX4', + 6 => 'MZ-MX4 Pro', + 7 => 'MZ-MX5', + 8 => 'MZ[0-9]{3,3}!!', + ), + '@N-' => + array ( + 0 => 'N-0[0-9][A-Z]!!', + ), + '@N1' => + array ( + 0 => 'N1', + 1 => 'N12', + 2 => 'N12R', + 3 => 'N101 DUAL CORE!', + ), + '@N2' => + array ( + 0 => 'N2T', + ), + '@N3' => + array ( + 0 => 'N3-2200', + 1 => 'N320', + ), + '@N5' => + array ( + 0 => 'N51(10|11|16|17)!', + 1 => 'N52(06|07|09)!', + 2 => 'N5PRO2jingying', + 3 => 'N50', + 4 => 'N50DT!', + 5 => 'N50GT', + 6 => 'N50GT A', + ), + '@N6' => + array ( + 0 => 'N612', + 1 => 'N6', + ), + '@N7' => + array ( + 0 => 'N700', + 1 => 'N710', + 2 => 'N70', + 3 => 'N70 3G', + 4 => 'N70 C', + 5 => 'N70DC', + 6 => 'N70-S', + 7 => 'N70HD', + 8 => 'N70 DUAL CORE', + 9 => 'N70DC-S', + 10 => 'N70DC-T', + ), + '@N8' => + array ( + 0 => 'N8730-411', + 1 => 'N8730-41101', + 2 => 'N8730-41102', + 3 => 'N80($| from moage.com)!', + 4 => 'N80DC', + 5 => 'N80IPS', + 6 => 'N861', + ), + '@N9' => + array ( + 0 => 'N930', + 1 => 'N9600', + 2 => 'N90', + 3 => 'N90 DUAL CORE!', + 4 => 'N90FHDRK', + 5 => 'N918St', + ), + '@NA' => + array ( + 0 => 'NABI!!', + 1 => 'NaviPad TM-7055HD 3G', + 2 => 'NaviPad TM-7855 3G', + 3 => 'NaviPad TM-7858 3G (revision 1)', + 4 => 'natrium', + 5 => 'NATCOM N8302', + ), + '@NB' => + array ( + 0 => 'NB036', + 1 => 'NBX-T7013N', + 2 => 'NBX-T7023N', + ), + '@NC' => + array ( + 0 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + ), + '@NE' => + array ( + 0 => '(HTC )?Nexus ?One!', + 1 => '(Google )?Nexus S!', + 2 => '(Google )?Nexus ?4!', + 3 => 'Nexus 5X', + 4 => '(Google )?Nexus ?5!', + 5 => 'Nexus 6P', + 6 => '(Google )?Nexus ?6P!', + 7 => '(Google )?Nexus ?6!', + 8 => '(Google )?Nexus ?7 2013!', + 9 => '(Google )?Nexus ?7!', + 10 => '(Google )?Nexus ?9!', + 11 => '(Google )?Nexus ?10!', + 12 => 'Nexus Player', + 13 => 'NEO-G4', + 14 => 'NEO-G4-108A', + 15 => 'NEO-G4 a', + 16 => 'NEO-U9-H', + 17 => 'NEO-X5', + 18 => 'NEO X5', + 19 => 'Neo-X5-B', + 20 => 'NEO-X5-116A', + 21 => 'NEO-X5-mini', + 22 => 'NEO X5 mini', + 23 => 'NEO-X6', + 24 => 'NEO-X7-216A', + 25 => 'NEO-X7-mini', + 26 => 'NEO-X8', + 27 => 'NEO-X8-H', + 28 => 'NEO-X8H-PLUS', + 29 => 'Neon', + 30 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 31 => 'NexusHD2', + 32 => 'Nexus HD2', + 33 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 34 => 'Neon7', + 35 => 'Neon9', + 36 => '(NetTab|NT-)!!', + 37 => 'Newman K1', + 38 => 'NewmanK1', + 39 => 'Newman K2', + 40 => 'Newman N1', + 41 => 'Newman N2!', + 42 => 'Newman-N2!', + 43 => 'Newpad', + 44 => 'Newpad-K97', + 45 => 'Newpad-NP900', + 46 => 'Newpad P9', + 47 => 'Newpad P72', + 48 => 'Newsmy P72', + 49 => 'Newsmy P72-C', + 50 => 'Newsmy T3', + 51 => 'Newsmy T7II', + 52 => 'NEC-STR', + 53 => 'NEC-0912', + 54 => 'NEC-101S', + 55 => 'NECTEL-101S', + 56 => 'NEC-101T', + 57 => 'NEC-101TH', + 58 => 'NEC-102', + 59 => 'NE-103T', + 60 => 'NEC909e', + 61 => 'NE-202', + 62 => 'NE-201A1A', + 63 => 'NEC-NE-201A1A', + 64 => 'NEC-NEC-NE-201A1A', + 65 => 'NEC PC-TE508S1', + 66 => 'neken!!', + 67 => 'NEO!!', + 68 => '(Nexian )?NX-A[0-9]{3,3}!!', + 69 => 'Nextbook Premium 7', + 70 => 'Next7C12!', + 71 => 'Next7D12!', + 72 => 'Next7P12!', + 73 => 'Next7Q12!', + 74 => 'Next7P', + 75 => 'Next7S', + 76 => 'Nextbook Premium 7 SE', + 77 => 'NEXT8P', + 78 => 'Next8P11', + 79 => 'Next8P12', + 80 => 'Next9P', + 81 => 'Next10P12', + 82 => 'NEXT', + 83 => 'New Andromax-i', + 84 => 'Neo V', + 85 => 'NEBULA6.9', + ), + '@NG' => + array ( + 0 => 'NGM Black Hole', + 1 => 'NGM Dynamic Racing 2', + 2 => 'NGM Dynamic Racing 3', + 3 => 'NGM Dynamic Star', + 4 => 'NGM Dynamic Stylo', + 5 => 'NGM Forward Infinity', + 6 => 'NGM Forward Racing HD', + 7 => 'NGM Forward Young', + 8 => 'NGM Harley', + 9 => 'NGM Orion', + 10 => 'NGM Spirit', + 11 => 'NGM Time', + 12 => 'NGM Vanity Smart', + 13 => 'NGM Action', + 14 => 'NGM Legend', + 15 => 'NGM-Legend/Legend', + 16 => 'NGM Legend2', + 17 => 'NGM LegendXL', + 18 => 'NGM Miracle', + 19 => 'NGM P0laris', + 20 => 'NGM Wilco', + 21 => 'NGM WINN', + ), + '@NI' => + array ( + 0 => 'NITROGEN6X', + 1 => 'NID 7010', + 2 => 'Nibiru H1', + 3 => 'Nibiru H1c', + 4 => 'nine i7400', + 5 => 'nikeh', + 6 => 'nikel', + ), + '@NM' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 1 => '(NMP|MBR|XDK|XDS|XMP)\\-!!', + ), + '@NO' => + array ( + 0 => 'Novo7', + 1 => 'Novo7 -?Aurora!', + 2 => 'novo Aurora', + 3 => 'Novo 7 Aurora', + 4 => 'Novo7 Advanced', + 5 => 'Novo7Advanced!', + 6 => 'Novo7 Advanced2', + 7 => 'Novo7 Basic', + 8 => 'NovoCrystal', + 9 => 'Novo 7 Crystal!', + 10 => 'Novo7 ELF', + 11 => 'Novo7 Fire', + 12 => 'Novo7 Flame', + 13 => 'Novo7 Grace', + 14 => 'Novo7 Legend', + 15 => 'novo7Legend!', + 16 => 'NOVO7 Mars', + 17 => 'Novo7 PALADIN', + 18 => 'Novo7 Rainbow', + 19 => 'Novo7 -Rainbow', + 20 => 'NOVO7 Tornados', + 21 => 'Novo7 Venus', + 22 => 'Novo 7 Venus', + 23 => 'Novo7 Venus QuadCore', + 24 => 'Novo 7 Venus QuadCore', + 25 => 'Novo8 Advanced', + 26 => 'Novo8 Discover Quadcore', + 27 => 'Novo8 Disover Quadcore', + 28 => 'Novo8 Dream QuadCore', + 29 => 'Novo8mini', + 30 => 'novo9-Spark', + 31 => 'NOVO9 Spark II', + 32 => 'Novo 10 Hero', + 33 => 'Novo10 ?Hero!', + 34 => 'Novo 10 Hero QuadCore', + 35 => 'Novo Captain', + 36 => 'Novo10 captain QuadCore', + 37 => 'NOOK', + 38 => 'Nook ?Color!', + 39 => '(NOOK )?BNRV(200|300)!', + 40 => 'Nook ?Tablet!', + 41 => 'NOOK Slate', + 42 => '(NOOK )?BNTV250!', + 43 => '(NOOK )?BNRV350!', + 44 => '(NOOK )?BNTV(400)!', + 45 => '(NOOK )?BNTV(450)!', + 46 => '(NOOK )?BNTV(600)!', + 47 => '(NOOK )?BNTV(800)!', + 48 => 'Nook HD', + 49 => 'Nook HD+', + 50 => 'Novapad!!', + 51 => 'Nova!!', + 52 => 'Now', + 53 => 'NO1 S6', + 54 => 'NOAIN!!', + 55 => 'Nokia N9', + 56 => 'Nokia N900', + 57 => 'Nokia X', + 58 => 'Nokia X Dual SIM', + 59 => 'Nokia X+', + 60 => 'Nokia Xplus', + 61 => 'Nokia XL 4G', + 62 => 'Nokia XL', + 63 => 'Nokia XL Dual SIM', + 64 => 'Nokia X2', + 65 => 'NokiaX2DS', + 66 => 'Notion Ink ADAM', + 67 => 'Note III', + 68 => 'Nozomi', + 69 => 'Noble TAB07-485', + 70 => '(QMobile|QTab|Q-Smart|Noir)!!', + ), + '@NP' => + array ( + 0 => 'npm702-NOVO7PALADIN', + ), + '@NS' => + array ( + 0 => 'NS115', + 1 => 'NS2816', + 2 => 'NS-14T002', + 3 => 'NS-13T001', + 4 => 'NSZ-G[A-Z][0-9]!!', + ), + '@NT' => + array ( + 0 => '(NetTab|NT-)!!', + ), + '@NU' => + array ( + 0 => 'Numy!!', + 1 => 'nuvi!!', + 2 => 'NUU A3', + 3 => 'NuclearSX-SP5', + 4 => 'nubia Z5', + 5 => 'Nubia Z9 Max', + 6 => 'Nura 2', + ), + '@NW' => + array ( + 0 => 'NWZ?-Z1000Series!', + ), + '@NX' => + array ( + 0 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 1 => '(Nexian )?NX-A[0-9]{3,3}!!', + 2 => 'NXA8QC116', + 3 => 'NX16A8116K', + 4 => 'NXM726', + 5 => 'NXM726HN', + 6 => 'NXM726HN C030', + 7 => 'NXM726HN HASTINGS', + 8 => 'NXM727KC!', + 9 => 'NXM803HC', + 10 => 'NXM803HD', + 11 => 'NX868QW8G', + 12 => 'NXM805ND', + 13 => 'NXM805ND EN', + 14 => 'NXM908HC', + 15 => 'NXM703U', + 16 => 'NXM901', + 17 => 'NXM736', + 18 => 'NX700QC', + 19 => 'NX785QC8G', + 20 => 'NXM900MC', + 21 => '(ZXY-)?NX[0-9]{2,3}!!', + ), + '@NY' => + array ( + 0 => 'NYX!!', + ), + '@O2' => + array ( + 0 => 'O2 Joggler', + ), + '@OB' => + array ( + 0 => 'OB-OPPO A31c', + 1 => 'OB-OPPO 3005', + 2 => 'Obreey SURFpad', + ), + '@OC' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + ), + '@OD' => + array ( + 0 => 'odroida', + 1 => 'ODROID-A', + 2 => 'ODROIDC', + 3 => 'ODROIDC2', + 4 => 'ODROID-U', + 5 => 'ODROID-U2', + 6 => 'ODROID-X', + 7 => 'ODROID-XU', + 8 => 'ODROID-XU3', + 9 => 'ODROID-XU3-ATV', + 10 => 'ODROID-XU4', + 11 => 'ODROID-X2', + 12 => 'ODYS-Chrono', + 13 => 'ODYS-EVO', + 14 => 'Odys-Loox', + 15 => 'ODYS-NOON', + 16 => 'ODYS-Q', + 17 => 'ODYS Space', + 18 => 'ODYS Space TKI BRR233v7', + 19 => 'ODYS Space TKI BRR233v9', + 20 => 'ODYS-Xpress', + 21 => 'ODYS Xtreme', + 22 => 'OD103', + ), + '@OL' => + array ( + 0 => 'Olivetti Olipad 100', + ), + '@OM' => + array ( + 0 => 'Omap5panda', + 1 => 'OMAP', + 2 => 'OMAP SS', + 3 => 'omap3evm', + 4 => 'OMAP3ETPP', + 5 => 'Omap5sevm', + 6 => 'OMS TTD', + 7 => 'OMS1 6', + 8 => 'omega', + 9 => 'Omega 5.0', + 10 => 'Omega 5.5', + ), + '@ON' => + array ( + 0 => 'One 7 M77GHG', + 1 => 'OnePAD 785I', + 2 => 'OnePAD 900HD', + 3 => 'OnePAD 970', + 4 => 'OnePAD 1100x2', + 5 => 'ONETOUCH Flash Plus', + 6 => 'one touch 890!', + 7 => 'one touch 891!', + 8 => 'one touch 900!', + 9 => 'one touch 903!', + 10 => 'one touch 906!', + 11 => 'one touch 908!', + 12 => 'one touch 909!', + 13 => 'one touch 910!', + 14 => 'one touch 913!', + 15 => 'one touch 916!', + 16 => 'one touch 918!', + 17 => 'one touch 922!', + 18 => 'one touch 927!', + 19 => 'one touch 928!', + 20 => 'one touch 930!', + 21 => 'one touch 960!', + 22 => 'one touch 976!', + 23 => 'one touch 978!', + 24 => 'one touch 979 HelloKitty', + 25 => 'one touch 979!', + 26 => 'one touch 980!', + 27 => 'one touch 981!', + 28 => 'one touch 983!', + 29 => 'one touch 985!', + 30 => 'one touch 986!', + 31 => 'one touch 988!', + 32 => 'one touch 990!', + 33 => 'one touch 991!', + 34 => 'one touch 992!', + 35 => 'ONE TOCH 992D', + 36 => 'one touch 993!', + 37 => 'one touch 995!', + 38 => 'one touch 997!', + 39 => 'one touch 998!', + 40 => 'one touch D662', + 41 => 'one touch D668', + 42 => 'one touch D820', + 43 => 'one touch D920', + 44 => 'one touch J320', + 45 => 'one ?touch 40(05|10|11)!', + 46 => 'one ?touch 4007!', + 47 => 'one ?touch 4008!', + 48 => 'one ?touch 4009!', + 49 => 'one ?touch 4013!', + 50 => 'one ?touch 4014!', + 51 => 'one ?touch 40(15|16)!', + 52 => 'one ?touch 4024!', + 53 => 'one ?touch 4027!', + 54 => 'one ?touch 4029!', + 55 => 'one ?touch 4030!', + 56 => 'one ?touch 4031!', + 57 => 'one ?touch 4032!', + 58 => 'one ?touch 4033!', + 59 => 'ONETOUCH POPC3', + 60 => 'one ?touch 40(35|36|37)!', + 61 => 'one ?touch 5045!', + 62 => 'one ?touch 5020!', + 63 => 'one ?touch 5021!', + 64 => 'one ?touch 5035!', + 65 => 'one ?touch 50(36|37)!', + 66 => 'ONETOUCH POPC5', + 67 => 'one ?touch 50(38)!', + 68 => 'one ?touch 5042!', + 69 => 'one ?touch 5050!', + 70 => 'one ?touch 6010!', + 71 => 'one ?touch 6012!', + 72 => 'ONE TOUCH IDOL MINI', + 73 => 'one ?touch 6014!', + 74 => 'one ?touch 6016!', + 75 => 'one ?touch 6030!', + 76 => 'one ?touch 6032!', + 77 => 'one ?touch 6033!', + 78 => 'one ?touch 60(34|35)!', + 79 => 'one ?touch 6036!', + 80 => 'one ?touch 6037!', + 81 => 'one ?touch 6039!', + 82 => 'one ?touch 6040!', + 83 => 'one ?touch 6043!', + 84 => 'one ?touch 6045!', + 85 => 'one ?touch 6050!', + 86 => 'one ?touch 7024!', + 87 => 'one touch fierce!', + 88 => 'one ?touch 70(25|30)!', + 89 => 'one ?touch 70(40|41)!', + 90 => 'one ?touch 7042!', + 91 => 'one ?touch 7043!', + 92 => 'one ?touch 7044!', + 93 => 'one ?touch 7045!', + 94 => 'one ?touch 7047!', + 95 => 'one ?touch 7050!', + 96 => 'one ?touch 8000!', + 97 => 'one ?touch 8008!', + 98 => 'one ?touch 8020!', + 99 => 'one ?touch 8030!', + 100 => 'one ?touch T10!', + 101 => 'one ?touch T20!', + 102 => 'one ?touch T60!', + 103 => 'ONE TOUCH TAB 7', + 104 => 'ONE TOUCH TAB 7HD', + 105 => 'ONE TOUCH TAB 8HD', + 106 => 'ONE TOUCH EVO7', + 107 => 'onetouch EVO7', + 108 => 'ONE TOUCH E710', + 109 => 'ONE TOUCH EVO 7HD', + 110 => 'ONE TOUCH EVO7HD', + 111 => 'ONE TOUCH EVO8HD', + 112 => 'ONETOUCH POP 7 LTE', + 113 => 'ONE ?TOUCH P310(A|X)!', + 114 => 'ONE ?TOUCH P320(A|X)!', + 115 => 'ONE ?TOUCH P321!', + 116 => 'ONE ?TOUCH POP 8S P350X!', + 117 => 'One S', + 118 => 'One X', + 119 => 'One X+', + 120 => 'One XL', + 121 => 'One V', + 122 => 'One', + 123 => 'One M7', + 124 => 'one m8', + 125 => 'One A0001', + 126 => 'OnePlus One', + 127 => 'OnePlus One A0001', + 128 => 'ONE A2001', + 129 => 'ONE A2003', + 130 => 'ONE A2005', + 131 => 'OnePlus2', + 132 => 'ONE A3000', + 133 => 'ONE A3003', + 134 => 'ONEPLUS A3000', + 135 => 'ONEPLUS A3003', + 136 => 'OnePlus3', + 137 => 'ONEPLUS A3010', + 138 => 'ONEPLUS A5000', + 139 => 'ONEPLUS A5010', + 140 => 'ONEPLUS A6000', + 141 => 'ONE E1000', + 142 => 'ONE E1001', + 143 => 'ONE E1003', + 144 => 'ONE E1005', + 145 => 'ONDA MID', + 146 => 'ONDA A9 Core4', + 147 => 'ONDA VI10', + 148 => 'Onda V812', + 149 => 'ONDA v975m', + 150 => 'ONDA V989', + 151 => 'ONDA V989 Core8', + ), + '@OP' => + array ( + 0 => 'OPPOLenovo A60', + 1 => 'Optimus!!', + 2 => 'Opus One', + 3 => 'OPS-DRD Digital Signage Player', + 4 => 'OP110', + 5 => 'OPPO A30', + 6 => 'OPPO A31', + 7 => 'OPPO A31t', + 8 => 'OPPO A33', + 9 => 'OPPO A33m', + 10 => 'OPPO A37m', + 11 => 'OPPO A53', + 12 => 'OPPO A53m', + 13 => 'OPPO A57', + 14 => 'OPPO A57t', + 15 => 'OPPO A59m', + 16 => 'OPPO A59s', + 17 => 'OPPO A59st', + 18 => 'OPPO A77', + 19 => 'OPPO A77t', + 20 => 'OPPO A800', + 21 => 'OPPOX905', + 22 => 'OPPOX907', + 23 => 'OPPO Find5', + 24 => 'OPPOX909', + 25 => 'OPPO X909', + 26 => 'OPPOX9015', + 27 => 'OPPOX9017', + 28 => 'OPPO find7', + 29 => 'OPPOR601', + 30 => 'OPPOR801', + 31 => 'OPPOR803', + 32 => 'OPPOR805', + 33 => 'OPPOR807', + 34 => 'OPPO R811', + 35 => 'OPPO R813T', + 36 => 'OPPO R815', + 37 => 'OPPOR817', + 38 => 'Oppo R819', + 39 => 'OPPO R821', + 40 => 'OPPO R831', + 41 => 'Oppo R831 Limited Edition', + 42 => 'OPPO R1001', + 43 => 'OPPOR8015', + 44 => 'OPPOR8111', + 45 => 'OPPOT29', + 46 => '(OPPO-?)?T703!', + 47 => 'OPPOU701', + 48 => 'OPPOU7011', + 49 => 'OPPOU7015', + 50 => 'OPPO N1', + 51 => 'OPPO R7', + 52 => 'OPPO R7s', + 53 => 'OPPO R7sm', + 54 => 'OPPO R7st', + 55 => 'OPPO R7t', + 56 => 'OPPO R9m', + 57 => 'OPPO R9tm', + 58 => 'OPPO R9km', + 59 => 'OPPO R9s', + 60 => 'OPPO R9sk', + 61 => 'OPPO R9st', + 62 => 'OPPO R9t', + 63 => 'OPPO R11', + 64 => 'OPPO R11t', + 65 => 'OPPO R7 Plus', + 66 => 'OPPO R7sPlus', + 67 => 'OPPO R9 Plusm A', + 68 => 'OPPO R9 Plustm A', + 69 => 'OPPO R9s Plus', + 70 => 'OPPO R11 Plus', + 71 => 'OPPO R11 Plusk', + 72 => 'OPPO R11 Pluskt', + 73 => 'OPPO R11s Plus', + 74 => 'OPSSON!!', + 75 => 'OP0118-12', + 76 => 'Optimus Barcelona', + 77 => 'Optimus Boston', + 78 => 'Optimus Madrid', + 79 => 'Optimus Monte Carlo', + 80 => 'Optimus San Francisco', + 81 => 'Optimus San Remo', + 82 => 'Optimus Zali', + ), + '@OR' => + array ( + 0 => 'Orange HUAWEI GRA-L09', + 1 => 'Orbis', + 2 => 'Orange Boston', + 3 => 'Orange Covo', + 4 => 'Orange Daytona', + 5 => 'Orange Dublin', + 6 => 'Orange Fova', + 7 => 'Orange Gova', + 8 => 'Orange Hi 4G', + 9 => 'Orange Hiro', + 10 => 'Orange infinity 996', + 11 => 'Orange Infinity 8008X', + 12 => 'Orange Kivo', + 13 => 'Orange Monte Carlo', + 14 => 'Orange Neva 80', + 15 => 'Orange Niva', + 16 => 'Orange Nura', + 17 => 'Orange Novi', + 18 => 'Orange Reyo', + 19 => 'Orange Rise 30', + 20 => 'Orange Rono', + 21 => 'Orange Roya', + 22 => 'Orange Runo', + 23 => 'Orange San Francisco', + 24 => 'Orange Sego', + 25 => 'Orange Tactile internet 2', + 26 => 'Orange Tado', + 27 => 'Orange Yomi', + 28 => 'Orange Yumo', + 29 => 'Orange Zali', + ), + '@OT' => + array ( + 0 => 'OT 918', + 1 => 'OT 919', + 2 => 'OT 919 HelloKitty', + 3 => 'OT-990C', + 4 => 'OT 990M', + 5 => 'OT-995', + ), + '@OU' => + array ( + 0 => 'OUYA( Console)?!', + ), + '@OV' => + array ( + 0 => '(OV-|Overmax|Vertis)!!', + ), + '@OY' => + array ( + 0 => 'Oysters Pacific 800', + 1 => 'Oysters T3 3G', + 2 => 'Oysters T7B 3G', + 3 => 'Oysters T7X 3G', + 4 => 'OYSTERS T14N 3G', + 5 => 'Oysters T37', + 6 => 'Oysters T72H 3G', + 7 => 'Oysters T72HRi 3G', + 8 => 'OYSTERS T80 3G', + ), + '@OZ' => + array ( + 0 => 'OZZY', + ), + '@P' => + array ( + 0 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + ), + '@P-' => + array ( + 0 => 'P-0[0-9][A-Z]!!', + ), + '@P0' => + array ( + 0 => 'P001', + 1 => 'P001 2', + 2 => 'P002', + 3 => 'P00C', + 4 => 'P00I', + 5 => 'P01M', + 6 => 'P01MA', + 7 => 'P01T', + 8 => 'P01T 1', + 9 => 'P01V', + 10 => 'P01W', + 11 => 'P01Y', + 12 => 'P01Z', + 13 => 'P021', + 14 => 'P022', + 15 => 'P023', + 16 => 'P024', + ), + '@P1' => + array ( + 0 => 'P10AN', + 1 => 'P105', + 2 => 'P1m', + 3 => 'P1ma40', + 4 => 'P1050X', + 5 => 'P10HD??(E6NA)', + 6 => 'P11HD', + 7 => 'P11HD四核(G9X6)', + 8 => 'P11HD??(G9X6)', + 9 => 'P11HD四核(G9X7)', + 10 => 'P19HD(E1K3)', + 11 => 'P19HD(E1K5)', + ), + '@P2' => + array ( + 0 => 'P2A700', + 1 => 'P2Lite', + 2 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + ), + '@P3' => + array ( + 0 => 'P330X', + 1 => 'P350X', + 2 => 'P360X', + 3 => 'P300(Funbook)', + ), + '@P4' => + array ( + 0 => 'P4i', + 1 => 'P4', + 2 => 'P4D Sirius', + ), + '@P5' => + array ( + 0 => 'P5 Energy', + 1 => 'P5Life', + 2 => 'P5Life TM', + 3 => 'P5', + ), + '@P6' => + array ( + 0 => 'P6 Energy', + 1 => 'P6 Energy TM', + 2 => 'P6 Pro', + 3 => 'P6 Qmax', + 4 => 'P6 Quad', + 5 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + ), + '@P7' => + array ( + 0 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 1 => 'P700i', + 2 => 'P701', + 3 => 'P7', + 4 => 'P70 3Gå…«æ ¸(C2B7)', + 5 => 'P70h(A5C2)', + 6 => 'P72', + 7 => 'P72w', + 8 => 'P75a(G7E3)', + 9 => 'P75HD(M3E5)', + 10 => 'P76a(K3G5)', + 11 => 'P76aåŒæ ¸(M4Q5)', + 12 => 'P76e(A3E1)', + 13 => 'P76e(G6R8)', + 14 => 'P76håŒæ ¸(K8V1)', + 15 => 'P76såŒæ ¸(DKH5)', + 16 => 'P76TI', + 17 => 'P76v(A3V5)', + 18 => 'P78åŒæ ¸(G1M5)', + 19 => 'P78s(G1M5)', + 20 => 'P78s(G1M6)', + 21 => 'P78s(G1M7)', + 22 => 'P78HD四核(C4A5)', + 23 => 'P78HD??(C4A5)', + 24 => 'P79HD(A3V9)', + 25 => 'P79HD 3G(C4K5)', + 26 => 'p7901a', + ), + '@P8' => + array ( + 0 => 'P8 Energy', + 1 => 'P8 Energy mini', + 2 => 'P8 Energy mini TM', + 3 => 'P80 四核 (BV8K)', + 4 => 'P80 四核 (BV9K)', + 5 => 'P80s 四核(EF6W)', + 6 => 'P80 3G四核 (B1KC)', + 7 => 'P80 3G四核 (B4KC)', + 8 => 'P80 3Gå…«æ ¸(A4LL)', + 9 => 'P80 3Gå…«æ ¸(A5LL)', + 10 => 'P80 3Gå…«æ ¸(A6LL)', + 11 => 'P80 4G(K2G3)', + 12 => 'P81HD', + 13 => 'P85(A9D3)', + 14 => 'P85(A9D5)', + 15 => 'P85(R8A1)', + 16 => 'P85mini(DT8W)', + 17 => 'P85s mini(EWE8)', + 18 => 'P85t mini(KW8P)', + 19 => 'P85HDåŒæ ¸(K6N2)', + 20 => 'P86(F8G6)', + 21 => 'P88åŒæ ¸(H3D7)', + 22 => 'P88(H3D7)', + 23 => 'P88(GT4K)', + 24 => 'P88s mini??(F2V6)', + 25 => 'P88s mini四核(F2V7)', + 26 => 'P88HD(C5GV)', + 27 => 'P89 3Gå…«æ ¸(D1H8)', + 28 => 'P89 3Gk8(D1H8)', + 29 => 'P89mini(E2W6)', + 30 => 'P89 mini(E2W6)', + 31 => 'P89s(F8A5)', + 32 => 'P89s mini(F8A2)', + ), + '@P9' => + array ( + 0 => 'P940', + 1 => 'P990', + 2 => 'P90(H3U6)', + 3 => 'P90(H3U7)', + 4 => 'P98(F2K9)', + 5 => 'P98 å…«æ ¸(B9A3)', + 6 => 'P98 3Gk8(A4HY)', + 7 => 'P98 3G??(A4HY)', + 8 => 'P98 3G(M1Q2)', + 9 => 'P98 3Gå…«æ ¸(A3HY)', + 10 => 'P98 3Gå…«æ ¸(A4HY)', + 11 => 'P98 4G??(A8H6)', + 12 => 'P98 Air?? (C6V8)', + 13 => 'P98Air(C6V8)', + 14 => 'P98HD(A2Q6)', + 15 => 'P98HD+M6', + 16 => 'P98T(K3C4)', + ), + '@PA' => + array ( + 0 => 'Panda(Board)?!', + 1 => 'Passion', + 2 => '(Transformer )?(Pad )?TF300(T|TG|TL)!', + 3 => '(Transformer )?(Pad )?TF502(T)!', + 4 => '(Transformer )?(Pad )?TF700(T|K)!', + 5 => 'PadFone', + 6 => 'PadFone 2', + 7 => 'PadFone Infinity', + 8 => 'PadFone Infinity A86', + 9 => 'PadFone T004', + 10 => 'PadFone-T004', + 11 => 'PadFone T008', + 12 => 'PadFone T00C', + 13 => 'PadFone X', + 14 => 'PadFone X mini', + 15 => 'Patio100', + 16 => 'Patio100 3G', + 17 => 'PAD[0-9]{3,3}!!', + 18 => 'Panasonic!!', + 19 => 'pandigital9hr', + 20 => 'pandigital9hr2', + 21 => 'pandigitalopc1', + 22 => 'pandigitalopp1', + 23 => 'pandigitalp1hr', + 24 => 'PantechP!!', + 25 => 'PAT712W', + 26 => 'PATG7506HD', + 27 => 'PAP[0-9]{4,4}!!', + 28 => 'PAD1001', + ), + '@PB' => + array ( + 0 => 'PB99400', + ), + '@PC' => + array ( + 0 => 'PC1038', + 1 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 2 => '(HTC|PCD|USCC)?ADR[0-9]{4,4}!!', + 3 => 'PC36100!', + 4 => 'PC-TE307N1W', + 5 => 'PC-TE508BAW', + 6 => 'PC-TS508FAM', + 7 => 'PC-TS508T1W', + 8 => 'PC-TS708T1W', + ), + '@PD' => + array ( + 0 => 'PD10-DYD', + 1 => 'PD6D1J', + ), + '@PE' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 1 => 'PEDI', + 2 => 'Penta!!', + 3 => 'Pentagram!!', + 4 => 'pepper', + ), + '@PF' => + array ( + 0 => '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + ), + '@PG' => + array ( + 0 => 'PG06100', + 1 => 'PG41200', + 2 => 'PG86100!', + 3 => 'PGM 398', + 4 => 'PGPS7795', + ), + '@PH' => + array ( + 0 => 'PH7M EU 5596', + 1 => 'PHA-3850', + 2 => 'PHA-3880', + 3 => 'PHA-4850', + 4 => 'PHA-5850', + 5 => 'PH-1', + 6 => 'photon', + 7 => 'PH44100', + 8 => 'Photon', + 9 => 'Photon 4G', + 10 => 'Photon Q', + 11 => 'Photon Q LTE', + 12 => 'PH350', + 13 => 'PH520', + 14 => 'PHICOMM!!', + 15 => 'Philips I908', + 16 => 'Philips I928', + 17 => 'Philips S301', + 18 => 'Philips S307', + 19 => 'Philips S308', + 20 => 'Philips S309', + 21 => 'Philips S316T', + 22 => 'Philips S326', + 23 => 'Philips S337', + 24 => 'Philips S358', + 25 => 'Philips S388!', + 26 => 'Philips S396', + 27 => 'Philips S398', + 28 => 'Philips S616', + 29 => 'Philips T3500', + 30 => 'Philips T3566', + 31 => 'Philips V377', + 32 => 'Philips V387', + 33 => 'Philips V526', + 34 => 'Philips V787', + 35 => 'Philips Xenium V787', + 36 => 'Philips X588', + 37 => 'Philips W336', + 38 => 'Philips W536', + 39 => 'Philips W626', + 40 => 'Philips W632', + 41 => 'Philips W635', + 42 => 'PhilipsW635', + 43 => 'Philips W737', + 44 => 'Philips W832', + 45 => 'Philips W3500', + 46 => 'Philips W3509', + 47 => 'Philips W3550', + 48 => 'Philips W3568', + 49 => 'Philips W6350', + 50 => 'PhilipsW6350', + 51 => 'Philips W6610', + 52 => 'Philips W6618', + 53 => 'Philips W7555', + 54 => 'Philips-W7555', + 55 => 'Philips-W8500', + 56 => 'Philips W8510', + 57 => 'Philips W8555', + 58 => 'Philips W8560', + 59 => 'Philips GoGear Connect', + 60 => 'Philips PI5000', + 61 => 'PHABLET 4S', + 62 => 'Phablet 4.5Q', + 63 => 'Phablet 5,3 Q', + ), + '@PI' => + array ( + 0 => 'Pixel C', + 1 => 'Pixel', + 2 => 'Pixel XL', + 3 => 'Pixel 2', + 4 => 'Pixel 2XL', + 5 => 'Pixel 2 XL', + 6 => '(Axioo[\\- ])?PICO!!', + 7 => 'picoBit-L', + 8 => '(GIO-)?(GiONEE[- ])?Pioneer P1!', + 9 => '(GIO-)?(GiONEE[- ])?Pioneer P2!', + 10 => '(GIO-)?(GiONEE[- ])?Pioneer P3!', + 11 => '(GIO-)?(GiONEE[- ])?Pioneer P4!', + 12 => 'PixelV1', + 13 => 'Pixel V2', + 14 => 'Pixel V2+', + 15 => 'PI2000', + 16 => 'PI2010', + 17 => 'PI2011', + 18 => 'PI3100', + 19 => 'PI3100-93', + 20 => 'PI3100Z3 93', + 21 => 'PI3105', + 22 => 'PI3106', + 23 => 'PI3110', + 24 => 'PI3205G', + 25 => 'PI3210G', + 26 => 'PI3900', + 27 => 'PI3900-93', + 28 => 'PI3910', + 29 => 'PI4010G', + 30 => 'PI7000', + 31 => 'PI7100 93', + 32 => '(PNR-)?Pioneer!!', + 33 => 'PIRANHA!!', + ), + '@PJ' => + array ( + 0 => 'PJ83100', + 1 => 'PJ35100', + ), + '@PL' => + array ( + 0 => 'PLE-701L', + 1 => 'PLE-703L', + 2 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 3 => 'Planet II v2', + 4 => 'PLANET', + 5 => 'Playboy PB-S3', + 6 => '(PLOYER-)?MOMO!!', + 7 => 'PlayTabPro', + 8 => 'PLT!!', + 9 => 'PlayBook', + 10 => 'Plus E', + 11 => 'Play 6X-1000', + 12 => 'Play8X-1100', + ), + '@PM' => + array ( + 0 => 'PM36100', + 1 => 'PM63100', + 2 => 'PMID!!', + 3 => 'PMP[0-9]{4,4}!!', + 4 => 'PMT[0-9]{4,4}!!', + ), + '@PN' => + array ( + 0 => 'pnx8473 kiryung', + 1 => 'PNDPP4MT9G2', + 2 => 'PNDPP44QC7', + 3 => 'PNDPP48GP', + 4 => 'PNDPP4MT9G3', + 5 => 'PNDPP410GP', + 6 => '(PNR-)?Pioneer!!', + ), + '@PO' => + array ( + 0 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 1 => 'PocketBook A7', + 2 => 'PocketBook A10', + 3 => 'PocketBook A10 3G', + 4 => 'PocketBook SURFpad2', + 5 => 'PocketBook SURFpad 3 (7,85")', + 6 => 'PocketBook SURFpad 4 S', + 7 => 'PocketBook SURFpad 4 M', + 8 => 'PocketBook SURFpad 4 L', + 9 => 'POV-Mobii-7', + 10 => 'POV Mobii 7', + 11 => 'POV TAB-P506!', + 12 => 'POV TAB-P517!', + 13 => 'POV TAB-P527!', + 14 => 'POV TAB-P629!', + 15 => 'POV TAB-P701!', + 16 => 'POV TAB-P703!', + 17 => 'POV TAB-P720!', + 18 => 'POV TAB-P721A!', + 19 => 'POV TAB-P721!', + 20 => 'POV TAB-P722C!', + 21 => 'POV TAB-P731N!', + 22 => 'POV TAB-P825!', + 23 => 'POV TAB-P925!', + 24 => 'POV TAB-PR945!', + 25 => 'POV TAB-P1025!', + 26 => 'POV TAB-P1030!', + 27 => 'POV TAB-PI1045!', + 28 => 'POV TAB-P1325!', + 29 => '(POV )?TAB-PLAYTABPRO!', + 30 => '(POV )?TAB-PROTAB25!', + 31 => '(POV )?TAB-PROTAB26!', + 32 => 'POV TAB-PROTAB27', + 33 => '(POV )?TAB-PROTAB30!', + 34 => '(POV )?TAB-PROTAB2XXL(4)!', + 35 => '(POV )?TAB NAVI7 3G M!', + 36 => 'POV_TAB-NAVI7-3G-M', + 37 => 'POV TAB-P547(v1.0)', + 38 => 'POV TV-HDMI-200BT', + 39 => 'POV TV-HDMI-200BT(V2.0)', + 40 => 'POV TV-HDMI-210', + 41 => 'POV TV-HDMI-KB-01', + 42 => 'POV TV-SMARTTV-500', + 43 => 'Polaroid PSPT401', + 44 => 'Polaroid PSPC505', + 45 => 'Polaroid PSPC550', + 46 => 'Polaroid P4005A', + 47 => 'Polaroid P5005A', + 48 => 'Polaroid P5046A', + 49 => 'Polaroid P5525A', + 50 => 'Polaroid P5526A', + 51 => 'POLY ?PAD!!', + 52 => 'POLYTRON!!', + 53 => 'POMP!!', + 54 => 'Positivo Mini', + 55 => 'POSITIVO YPY 07FTB', + 56 => 'Positivo Ypy AB7E', + 57 => 'Positivo Ypy AB7EC', + 58 => 'Positivo Ypy AB7F', + 59 => 'Positivo AB7F', + 60 => 'Positivo Ypy AB7H', + 61 => 'Positivo Ypy AB10E', + 62 => 'Positivo Ypy AB10EC', + 63 => 'Positivo Ypy AB10H', + 64 => 'Positivo BGH Ypy L700', + 65 => 'Positivo Ypy L700', + 66 => 'Positivo Ypy L700 Ed. Especial', + 67 => 'Positivo Ypy L700+', + 68 => 'Positivo Ypy L700 Kids', + 69 => 'Positivo BGH Ypy L700 Kids', + 70 => 'Positivo Ypy L700+ Kids', + 71 => 'Positivo Ypy L1000', + 72 => 'Positivo Ypy L1000AB', + 73 => 'Positivo Ypy L1000F', + 74 => 'Positivo Ypy L1050', + 75 => 'Positivo Ypy L1050E', + 76 => 'Positivo Ypy L1050F', + 77 => 'Positivo S380', + 78 => 'Positivo S440', + 79 => 'Positivo S480', + 80 => 'Positivo S550', + 81 => 'Positivo X400', + 82 => 'Positivo X800', + ), + '@PP' => + array ( + 0 => 'PP4MT-7', + 1 => 'PP4MT-9', + ), + '@PR' => + array ( + 0 => 'Project Tango Tablet Development Kit', + 1 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 2 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 3 => 'Pro 10 dual core', + 4 => 'Prada 3.0', + 5 => 'PRO 5', + 6 => 'PRO 6', + 7 => 'PRO 6s', + 8 => 'PRO 6 Plus', + 9 => 'Primo76', + 10 => 'Primo 91', + 11 => 'PRIME PLUS 3G', + 12 => 'PROTAB2XXL', + 13 => 'PROV!!', + 14 => 'PRO!!', + 15 => 'Prestigio PAP5000TDUO', + 16 => 'PRBT 100', + 17 => 'printer-tablet', + 18 => 'PRS-T1', + 19 => 'Preo Teknosa P1', + 20 => 'PRIMO7', + 21 => 'PRIMO8', + 22 => 'PRO7D', + 23 => 'Primo C2', + 24 => 'Primo C3 3G', + 25 => 'Primo C3', + 26 => 'PrimoC4', + 27 => 'Primo-D1', + 28 => 'Primo D2', + 29 => 'Primo D3', + 30 => 'Primo D4', + 31 => 'Primo D5', + 32 => 'Primo D6', + 33 => 'Primo D7', + 34 => 'Primo E1', + 35 => 'Primo E2', + 36 => 'PRIMO E3', + 37 => 'Primo E4', + 38 => 'Primo E4+', + 39 => 'Primo E5', + 40 => 'Primo E6', + 41 => 'Primo E7', + 42 => 'Primo E7 Plus', + 43 => 'Primo EF', + 44 => 'Primo EF2', + 45 => 'Primo EF3', + 46 => 'Primo EF4', + 47 => 'Primo EF4+', + 48 => 'Primo EM', + 49 => 'Primo F1', + 50 => 'Primo F2', + 51 => 'Primo-F2', + 52 => 'Primo F3', + 53 => 'Primo F3i', + 54 => 'Primo F4', + 55 => 'Primo F5', + 56 => 'Primo F6', + 57 => 'Primo F7', + 58 => 'Primo-G1', + 59 => 'Primo G1', + 60 => 'Primo G2', + 61 => 'Primo-G3', + 62 => 'Primo G4', + 63 => 'Primo G5', + 64 => 'Primo G6', + 65 => 'Primo-GF', + 66 => 'Primo GF2', + 67 => 'Primo GF3', + 68 => 'Primo GF4', + 69 => 'Primo GH', + 70 => 'Primo GH+', + 71 => 'Primo-GH2', + 72 => 'Primo GH2', + 73 => 'Primo GH2 [AOSP]', + 74 => 'Primo-GH2 (AOSP KITKAT)', + 75 => 'Primo GH3', + 76 => 'Primo-GH3', + 77 => 'Primo GH4', + 78 => 'Primo GH5', + 79 => 'Primo GH5 Plus', + 80 => 'Primo GH5 mini', + 81 => 'Primo GH6', + 82 => 'Primo GH6+', + 83 => 'Primo GM', + 84 => 'Primo GM mini', + 85 => 'Primo H2', + 86 => 'Primo-H3', + 87 => 'Primo H3', + 88 => 'Primo H4', + 89 => 'Primo H5', + 90 => 'Primo H6', + 91 => 'Primo HM', + 92 => 'Primo HM2', + 93 => 'Primo HM3', + 94 => 'Primo HM3+', + 95 => 'Primo-N', + 96 => 'Primo-N1', + 97 => 'Primo N2', + 98 => 'Primo NF', + 99 => 'Primo NF+', + 100 => 'Primo NF2', + 101 => 'Primo NF2+', + 102 => 'Primo NH', + 103 => 'Primo NH Lite', + 104 => 'Primo NH2 Lite', + 105 => 'Primo NH3 Lite', + 106 => 'Primo NX', + 107 => 'Primo NX2', + 108 => 'Primo NX3', + 109 => 'Primo NX3 Plus', + 110 => 'Primo NX4 mini', + 111 => 'Primo R1', + 112 => 'Primo R2', + 113 => 'Primo R3', + 114 => 'Primo R4', + 115 => 'Primo R4 Plus', + 116 => 'Primo R4s', + 117 => 'Primo RH', + 118 => 'Primo RH2', + 119 => 'Primo RM', + 120 => 'Primo RM2', + 121 => 'Primo RM2 mini', + 122 => 'Primo RX', + 123 => 'Primo RX2', + 124 => 'PrimoRX2', + 125 => 'Primo RX3', + 126 => 'Primo RX4', + 127 => 'Primo RX5', + 128 => 'Primo S1', + 129 => 'PrimoS2', + 130 => 'Primo S3', + 131 => 'Primo S3 mini', + 132 => 'Primo S4', + 133 => 'Primo V1', + 134 => 'Primo V2', + 135 => 'Primo VX', + 136 => 'Primo VX+', + 137 => '(WALTON )?Primo-X1!', + 138 => 'Primo-X2', + 139 => 'Primo X2mini', + 140 => 'Primo X3', + 141 => 'Primo X3mini', + 142 => 'Primo X4', + 143 => 'Primo Z', + 144 => 'Primo-ZX', + 145 => 'Primo ZX2', + 146 => 'Primo ZX2 Lite', + 147 => 'Primo ZX2 mini', + 148 => 'Primo Walpad 1', + 149 => 'Primo Walpad 7', + 150 => 'Primo Walpad 8', + 151 => 'Primo Walpad 8W', + 152 => 'Proton Lite', + 153 => 'prada', + 154 => 'Prism', + 155 => 'Prism II', + ), + '@PS' => + array ( + 0 => 'PSPT350', + 1 => 'PSP[0-9]{4,4}!!', + 2 => 'PS47', + ), + '@PT' => + array ( + 0 => 'PTL21', + ), + '@PU' => + array ( + 0 => 'PURE XL', + 1 => 'PURE III', + 2 => 'PULID F6', + 3 => 'PULID F7', + 4 => 'PULID F11', + 5 => 'PULID T3', + 6 => 'PULP', + 7 => 'PULP 4G', + 8 => 'Pulse', + 9 => 'Pulse Mini', + ), + '@PY' => + array ( + 0 => 'Pyramid', + ), + '@Q-' => + array ( + 0 => 'Q-Wave!!', + 1 => '(QMobile|QTab|Q-Smart|Noir)!!', + ), + '@Q0' => + array ( + 0 => 'Q07CL01', + ), + '@Q1' => + array ( + 0 => '(BB )?Q10$!', + ), + '@Q5' => + array ( + 0 => '(BB )?Q5$!', + ), + '@QI' => + array ( + 0 => 'Qilive!!', + ), + '@QK' => + array ( + 0 => 'QK1505', + 1 => 'QK1505 A01', + 2 => 'QK1605-A01', + ), + '@QM' => + array ( + 0 => 'QM151E', + 1 => 'QM152E', + 2 => 'QM163E', + 3 => 'QM734-8G', + 4 => 'QM735-8G', + 5 => '(QMobile|QTab|Q-Smart|Noir)!!', + 6 => 'QMV7A', + 7 => 'QMV7B', + ), + '@QO' => + array ( + 0 => 'QOOQ', + ), + '@QS' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + ), + '@QT' => + array ( + 0 => '(QMobile|QTab|Q-Smart|Noir)!!', + 1 => 'QTAQZ3', + 2 => 'QTAQZ3KID', + 3 => 'QTAIR7', + ), + '@QU' => + array ( + 0 => 'Quest', + 1 => 'Quicki[ -]?([0-9]+)!', + 2 => 'QUANTUM 4', + 3 => 'QUANTUM 700m', + 4 => 'QUANTUM 1010N', + 5 => 'Quechua Phone 5', + 6 => 'QUBE[ -](B[0-9]S?\\+?)!', + 7 => 'QUBE[ -](T[0-9])!', + 8 => 'QUMO[ -]QUEST[ -]?([0-9]+i?)!', + 9 => 'QUMO Altair ([0-9]+i?)!', + 10 => 'QUMO Vega ([0-9]+i?)!', + 11 => 'QuickFone Mini', + 12 => 'QuickFone-Mini', + 13 => 'QuickFone ([NXZ][0-9]\\+?)!', + ), + '@QV' => + array ( + 0 => 'QV151E', + ), + '@QW' => + array ( + 0 => 'QW ?TB-[0-9]{4,4}!!', + ), + '@R1' => + array ( + 0 => 'R1 HD', + 1 => 'R1001', + 2 => 'R1011', + ), + '@R2' => + array ( + 0 => 'R2001', + 1 => 'R2010', + 2 => 'R2017', + ), + '@R3' => + array ( + 0 => 'R30GT', + ), + '@R6' => + array ( + 0 => 'R6006', + 1 => 'R6007', + ), + '@R7' => + array ( + 0 => 'R7005', + 1 => 'R7007', + 2 => 'R7f', + 3 => 'R7i', + 4 => 'R7kf', + 5 => 'R7sf', + 6 => 'R7Plus', + 7 => 'R7plusf', + 8 => 'R7Plusm', + ), + '@R8' => + array ( + 0 => 'R801', + 1 => 'R801T', + 2 => 'R803', + 3 => 'R805', + 4 => 'R807', + 5 => 'R809T', + 6 => 'R811', + 7 => 'R813T', + 8 => 'R815', + 9 => 'R815T', + 10 => 'R815W', + 11 => 'R817', + 12 => 'R817T', + 13 => 'R819', + 14 => 'R819T!', + 15 => 'R821', + 16 => 'R821T', + 17 => 'R823T', + 18 => 'R827', + 19 => 'R827T', + 20 => 'R829', + 21 => 'R829T', + 22 => 'R830', + 23 => 'R830S', + 24 => 'R831K', + 25 => 'R831L', + 26 => 'R831T', + 27 => 'R831S', + 28 => 'R831', + 29 => 'R833T', + 30 => 'R850', + 31 => 'R883T', + 32 => 'R8000', + 33 => 'R8001', + 34 => 'R8006', + 35 => 'R8007', + 36 => 'R8015', + 37 => 'R8106', + 38 => 'R8107', + 39 => 'R8109', + 40 => 'R8111', + 41 => 'R8113', + 42 => 'R8200', + 43 => 'R8201', + 44 => 'R8205', + 45 => 'R8206', + 46 => 'R8207', + 47 => 'R800(a|at|i|iv|x)!', + ), + '@RA' => + array ( + 0 => 'Rage', + 1 => 'RAPAXSE080-0508', + 2 => 'RAZR', + 3 => 'RAZR HD', + 4 => 'RAZR M', + 5 => 'RAZR MAXX', + 6 => 'ramos i7s ', + 7 => 'Ramos i7s Series', + 8 => 'Ramosi8', + 9 => 'Ramosi8c', + 10 => 'Ramosi9', + 11 => 'Ramosi9-3G', + 12 => 'Ramos i9s', + 13 => 'Ramos i9s Series', + 14 => 'Ramos i9s pro', + 15 => 'Ramosi10', + 16 => 'Ramos i11 pro', + 17 => 'Ramosi12c', + 18 => 'Ramos i100 pro', + 19 => 'Ramos K100', + 20 => 'Ramos K300', + 21 => 'Ramos M7', + 22 => 'ramos R9', + 23 => 'Ramos W6HD', + 24 => 'Ramos W12', + 25 => 'Ramos W12HD', + 26 => 'Ramos W17Pro V3.0', + 27 => 'Ramos W21', + 28 => 'Ramos W25HD', + 29 => 'Ramos W27Pro', + 30 => 'Ramos W31', + 31 => 'Ramos w36', + 32 => 'Ramos W41', + 33 => 'Ramos W41 QuadCore', + 34 => 'Ramos X10 PRO!', + 35 => 'Rayhov!!', + 36 => 'RAINBOW', + 37 => 'RAINBOW 4G', + 38 => 'RAINBOW JAM', + 39 => '(ZTE )?Racer!!', + ), + '@RB' => + array ( + 0 => 'RBK-490', + ), + '@RC' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 1 => 'RCT6703W12', + 2 => 'RCT6203W46', + 3 => 'RCT6203W46L', + 4 => 'RCT6223W87', + 5 => 'RCT6303W87DK', + 6 => 'RCT6303W87M', + 7 => 'RCT6303W87M7', + 8 => 'RCT6K03W13', + 9 => 'RCT6603W47M7', + 10 => 'RCT6603W87M7', + 11 => 'RCT6873W42', + 12 => 'RCT6773W22B', + 13 => 'RCT6773W22BM', + 14 => 'RCT6973W43', + 15 => 'RCT6513W87', + 16 => 'RCT6213W87DK', + 17 => 'RCT6673W23M', + 18 => 'RCT6673W43M', + 19 => 'RCT6S03W12', + ), + '@RE' => + array ( + 0 => 'redhookbay', + 1 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 2 => 'Rezound', + 3 => 'Renesas!', + 4 => 'Readboy!!', + 5 => 'ReederA8R', + 6 => 'reeder A8i Quad 2', + 7 => '(Xiaomi )?(Redmi|RedRice|HM)!!', + 8 => '(Xiaomi )?(Redmi|HM)[ \\-]?Note!!', + 9 => 'REVVLPLUS C3701A', + ), + '@RH' => + array ( + 0 => '(?:RIVO )?RHYTHM RX ?([0-9]+)!', + ), + '@RI' => + array ( + 0 => 'Rikomagic MK802', + 1 => 'Rikomagic MK802 ?II!', + 2 => 'Rikomagic MK802III', + 3 => 'Rikomagic MK802IIIS', + 4 => '(Gsmart|Gigabyte|Rio)!!', + 5 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 6 => 'Rise', + 7 => '(Ritmix )?RM[DP]-?[0-9]{3,3}!!', + 8 => 'RIDGE', + 9 => 'RIDGE 4G', + 10 => 'RIDGE FAB 4G', + ), + '@RK' => + array ( + 0 => 'rksdk', + 1 => 'rk2808(sdk)?!', + 2 => 'rk2818(sdk)?!', + 3 => 'RK2906', + 4 => 'RK2918', + 5 => 'rk2926-q8', + 6 => 'rk2928sdk', + 7 => 'rk29sdk', + 8 => 'rk30sdk!', + 9 => 'rk30mtk', + 10 => 'rk3026', + 11 => 'rk3028a', + 12 => 'rk3028sdk', + 13 => 'rk3036', + 14 => 'rk3066', + 15 => 'rk31sdk', + 16 => 'rk31 5931', + 17 => 'rk31 8089', + 18 => 'rk31 872xu', + 19 => 'rk31au', + 20 => 'rk31rtl', + 21 => 'rk312x', + 22 => 'rk3188!', + 23 => 'rk3288!', + 24 => 'rk3990!', + 25 => 'RKM MK602', + 26 => 'RKM MK802IIIS', + 27 => 'RKM MK802IV', + 28 => 'RKM MK902', + 29 => 'RKM MK902II', + ), + '@RM' => + array ( + 0 => 'RM02', + 1 => 'RM-980', + 2 => 'RM-1061', + 3 => '(Ritmix )?RM[DP]-?[0-9]{3,3}!!', + 4 => 'RMD-[0-9]{2,3}G!!', + ), + '@RN' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + ), + '@RO' => + array ( + 0 => 'Rock-(AL00|CL00|L01|L03)!', + 1 => 'roiX', + 2 => 'RoverPad 3W T71D', + 3 => 'ROAR', + 4 => 'Roar A50', + 5 => 'Roar V25', + 6 => 'rolex', + ), + '@RP' => + array ( + 0 => 'RP-UDM01A', + ), + '@RS' => + array ( + 0 => 'RS988', + ), + '@RT' => + array ( + 0 => 'RTC-700A', + ), + '@RW' => + array ( + 0 => 'RW107', + ), + '@S-' => + array ( + 0 => 'S-F16', + ), + '@S0' => + array ( + 0 => 'S01', + ), + '@S1' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?S101!', + 1 => '(Lenovo )?S1[- ]37AH0!', + 2 => 'S1005KTAB', + ), + '@S2' => + array ( + 0 => 'S222', + 1 => '(Lenovo )?S2[- ]38A(H0|T0)!', + 2 => 'S2', + ), + '@S3' => + array ( + 0 => 's3c6410', + 1 => 'S30', + 2 => 'S308', + 3 => 'S3', + ), + '@S4' => + array ( + 0 => 'S40', + 1 => 'S4503Q', + 2 => 'S4505M', + 3 => 'S4', + ), + '@S5' => + array ( + 0 => 'S5PV210', + 1 => 'S5-F', + 2 => 'S50', + 3 => 'S50c', + 4 => 'S5', + 5 => 'S5 Mini!', + 6 => 'S51SE', + ), + '@S6' => + array ( + 0 => 'S658t', + 1 => 'S6 Edge+!', + ), + '@S7' => + array ( + 0 => 'S710d', + 1 => 'S710D', + 2 => 'S720i', + 3 => 'S7', + 4 => 's732', + ), + '@S8' => + array ( + 0 => 'S8600', + 1 => 'S88 DISCOVERY', + 2 => 'S850', + 3 => 'S880', + ), + '@SA' => + array ( + 0 => 'sama5d3', + 1 => 'SABRESD-MX6DQ', + 2 => 'saltbay', + 3 => 'Samsung Chromebook 3', + 4 => 'SA3CNT', + 5 => 'Salora E1', + 6 => 'Salora-E1', + 7 => 'Salora-E4', + 8 => 'Salora-E5', + 9 => 'SALORA-E6', + 10 => 'SALORA-E7', + 11 => 'SALORA E8', + 12 => 'Sansui[ -]([A-Z]{1,2}[0-9]+[A-Z]?\\+?)!', + 13 => 'Sansui Cosmic SP ([0-9]+)!', + 14 => 'SANSUI ETAB ([0-9]+) ?VP!', + 15 => 'Satellite!!', + 16 => 'sagit', + 17 => 'santoni', + 18 => 'San Remo Mini', + 19 => 'San Francisco', + 20 => 'San Francisco for', + 21 => 'San Francisco II', + ), + '@SB' => + array ( + 0 => 'SBM[0-9]0[0-9]SH!!', + ), + '@SC' => + array ( + 0 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 1 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 2 => '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + 3 => 'SCH-[iI][0-9]{3,3}!!', + 4 => 'SCH-L710!', + 5 => 'SCH-M828!', + 6 => 'SCH-N719', + 7 => 'SCH-P[0-9]{3,3}!!', + 8 => 'SCH-R[0-9]{3,3}!!', + 9 => 'SCH-S[0-9]{3,3}!!', + 10 => 'SCH-V727', + 11 => 'SCH-W[0-9]{3,4}!!', + 12 => 'SC-?0[0-9][A-Z]!!', + 13 => 'SC[LTV][23][0-9]!!', + 14 => 'Scroll!!', + 15 => 'SC-!!', + 16 => 'scorpio', + ), + '@SD' => + array ( + 0 => 'sdk', + 1 => 'SD4930UR', + ), + '@SE' => + array ( + 0 => 'sec smdkc210', + 1 => 'sec smdkv210', + 2 => 'SENSUELLE', + 3 => 'SensationXE!', + 4 => 'SensationXL!', + 5 => 'Sensation XL with Beats Audio', + 6 => 'Sensation!', + 7 => '(SENCOR )?ELEMENT!!', + 8 => 'SENSEIT R390', + 9 => 'SENWA S970', + ), + '@SF' => + array ( + 0 => 'SFR-G8800', + 1 => 'SFR-G8800 TV', + 2 => 'SFR StarTab', + ), + '@SG' => + array ( + 0 => 'SGH-[EILNMS][0-9]{3,4}!!', + 1 => 'SGH-T[0-9]{3,3}!!', + 2 => 'SGH-U468!', + 3 => 'SGH-W2013!', + 4 => 'SGP[ST0-9][0-9]{2,2}!!', + ), + '@SH' => + array ( + 0 => 'Shark Bay Client platform', + 1 => 'shamu', + 2 => 'SHIELD Console', + 3 => 'SHIELD Android TV', + 4 => 'SHIELD Andr0id TV', + 5 => 'SHIELD', + 6 => 'shieldtablet', + 7 => 'SHIELD Tablet', + 8 => 'SHIELD Tablet K1', + 9 => 'SHIELD Tablet X1', + 10 => 'SHIELD Tablet II', + 11 => 'Shine', + 12 => 'SH940C-LN', + 13 => 'SH940C-LN TV', + 14 => 'SH960C-LN', + 15 => 'Sholes', + 16 => 'SHV-E[0-9]{3,3}!!', + 17 => 'SHW-M[0-9]{3,3}!!', + 18 => 'SH01D', + 19 => 'SH-M01', + 20 => 'SH-M02', + 21 => 'SH-M02-EVA20', + 22 => 'SH-M03', + 23 => 'SH-M07', + 24 => 'SH-RM02', + 25 => 'SH-[01][0-9][A-Z]!!', + 26 => '(SHP-)?(SHARP )?SH[0-9]{2,3}!!', + 27 => 'SH[FLTV][0-9]{2,2}!!', + 28 => 'SHARP-ADS1', + ), + '@SI' => + array ( + 0 => 'SiRF Dream', + 1 => 'simvalley SP-142', + 2 => 'Signature Touch', + 3 => 'Signature Touch L', + ), + '@SK' => + array ( + 0 => 'SK351', + 1 => 'SKT01', + 2 => '(SKY )?IM[- ][A-Z][0-9]{3,3}!!', + 3 => 'Skyworth!!', + 4 => 'SK17(a|i|iv|i-o)!', + 5 => 'SK-Mtek GT7305', + 6 => '(ZTE )?Skate!!', + ), + '@SL' => + array ( + 0 => 'Slider SL101', + 1 => 'SL930', + 2 => '(HP|Slate)!!', + 3 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + 4 => 'Slidepad!!', + 5 => 'SLIDE', + ), + '@SM' => + array ( + 0 => 'smdk6410', + 1 => 'SMDKC110', + 2 => 'SMDKV210', + 3 => 'SMDK4x12', + 4 => 'SMDK4412', + 5 => 'SMDK5250', + 6 => 'SMDK5410', + 7 => 'smp86xx', + 8 => 'smp8734', + 9 => 'smp8756', + 10 => 'SM-G900FG', + 11 => 'SmartWatch 3', + 12 => 'Smart!!', + 13 => 'SM-H900A', + 14 => 'SmartTab1', + 15 => 'SmartPad!!', + 16 => '(MEO )?Smart A!!', + 17 => 'Smart Monitor 17', + 18 => 'SMARTTVBOX', + 19 => 'SMT-E5015', + 20 => 'SMT-i9100', + 21 => 'SM-A[0-9]{3,3}!!', + 22 => 'SM-C[0-9]{3,3}!!', + 23 => 'SM-E[0-9]{3,3}!!', + 24 => 'SM-G[0-9]{3,3}!!', + 25 => 'SM-I9500', + 26 => 'SM-J[0-9]{3,3}!!', + 27 => 'SM-N[0-9]{3,4}!!', + 28 => 'SM-P[0-9]{3,3}!!', + 29 => 'SM-S[0-9]{3,3}!!', + 30 => 'SM-T[0-9]{3,3}!!', + 31 => 'SM-V700', + 32 => 'SM-W[0-9]{4,4}!!', + 33 => 'Smartphone Android by SFR STARADDICT II', + 34 => '(Smartfren|Andromax)!!', + 35 => 'Smartfren Tab 7', + 36 => 'SM919', + 37 => 'SM701', + 38 => 'SM801', + 39 => 'SmartQ!!', + 40 => 'SMART Sprint', + 41 => 'SMART Start', + 42 => 'SMART Surf2 4G', + 43 => 'SmartTab!!', + ), + '@SN' => + array ( + 0 => 'SN[0-9]!!', + 1 => 'Snexian!!', + 2 => '(SNM\\-)?LT[0-9]{2,2}[a-z]?!!', + 3 => '(SNM\\-)?M[0-9]{2,2}[a-z]!!', + ), + '@SO' => + array ( + 0 => 'SoftwinerEvb', + 1 => 'SoftwinerEvb0308', + 2 => 'SoftwinerEvd', + 3 => 'Softwinerkf026', + 4 => 'Softwinerf721', + 5 => 'Softwinerf761', + 6 => 'Softwinerf761I', + 7 => 'Softwinerf900', + 8 => 'SoftwinerEvbV13', + 9 => 'soho', + 10 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 11 => 'SONIC', + 12 => 'Sonim!!', + 13 => 'SO-0[0-9][A-Z]!!', + 14 => 'SO[LTV][0-9]{2,2}!!', + 15 => 'Sony Xperia Ray', + 16 => 'SonyEricssonMT15', + 17 => 'SonyEricssonST15', + 18 => 'Soshphone 4G', + 19 => 'soft stone', + ), + '@SP' => + array ( + 0 => 'Sprint!!', + 1 => 'Sparkle V', + 2 => 'SPNG9716DC', + 3 => 'SPH-D[0-9]{3,3}!!', + 4 => 'SPH-L[0-9]{3,3}!!', + 5 => 'SPH-M[0-9]{3,3}!!', + 6 => 'SPH-P[0-9]{3,3}!!', + 7 => 'SP-120', + 8 => 'SPX-5', + 9 => 'SPX-5 3G', + 10 => 'SPX-6', + 11 => 'SPX-12', + 12 => 'SpeedUp S3', + 13 => '(CSL[- ])?(Spice[- ]?)?Mi(-| )?[0-9]{3,3}!!', + 14 => 'Spice N-300', + 15 => 'Spice N-500', + 16 => 'Spice Xlife-425 3G', + 17 => 'Spice Xlife-435Q', + 18 => 'Spice Xlife-451Q', + 19 => 'Spice-Xlife-511Pro', + 20 => 'Spice Xlife-512', + 21 => 'Spice Xlife-520HD', + 22 => 'Spice Xlife-M5+', + 23 => 'Spice Xlife-M45q', + 24 => 'Spice Xlife-M46q', + 25 => 'Spice Xlife-Proton4', + 26 => 'Spice Xplor-Proton5', + 27 => 'SPICE IV', + 28 => 'Spro2', + 29 => 'SP-A20i', + 30 => 'SpringBoard', + ), + '@SR' => + array ( + 0 => 'SRT!!', + ), + '@ST' => + array ( + 0 => 'ste l8540!', + 1 => 'ste u8500', + 2 => 'ste u9540', + 3 => 'Stingray', + 4 => 'Stream', + 5 => 'Status', + 6 => 'Style', + 7 => 'STV100-[0-9]!', + 8 => 'STH100-[0-9]!', + 9 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 10 => 'streak7', + 11 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 12 => 'ST7001', + 13 => 'ST8000', + 14 => 'ST9001', + 15 => '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!', + 16 => 'ST10', + 17 => 'ST940I-UP', + 18 => 'STM[0-9]{3,3}H!!', + 19 => 'Stylo', + 20 => 'STARACTIVE', + 21 => 'STARACTIVE 2', + 22 => 'STARADDICT II', + 23 => 'STARADDICT II Plus', + 24 => 'STARADDICT III', + 25 => 'STARADDICT 4', + 26 => 'STARADDICT 5', + 27 => 'STARADDICT 6', + 28 => 'STARNAUTE II', + 29 => 'STARNAUTE 3', + 30 => 'STARNAUTE3', + 31 => 'STARNAUTE4', + 32 => 'Starshine', + 33 => 'STARSHINE II', + 34 => 'STARSHINE III', + 35 => 'STARSHINE 4', + 36 => 'STARSHINE5', + 37 => 'STARTEXT II', + 38 => 'STARTRAIL II', + 39 => 'StarTrail III', + 40 => 'STARTRAIL4', + 41 => 'STARTRAIL 4', + 42 => 'STARTRAIL5', + 43 => 'STARTRAIL 6 4G', + 44 => 'STARTRAIL6', + 45 => 'STARTRAIL7', + 46 => 'STARTRAIL 8', + 47 => 'STARTRAIL 9', + 48 => 'STARXTREM', + 49 => 'STARXTREM II', + 50 => 'STARXTREM3', + 51 => 'STARXTREM 4', + 52 => 'STARXTREM5', + 53 => 'STARXTREM 6', + 54 => 'STARTAB', + 55 => 'ST[0-9]{2,2}[a-z]?!!', + 56 => 'Star N8000', + 57 => 'Star N9500', + 58 => 'Star N9589', + 59 => 'Star Q9000', + 60 => 'STAR S5', + 61 => 'STAR S7589', + 62 => 'Starmobile!!', + 63 => '(Starway )?Andromeda!!', + 64 => 'STX!!', + 65 => 'STOREX LinkBox', + 66 => 'StarTab 715x', + 67 => 'ST[0-9]{5,5}-[0-9]!!', + 68 => 'ST-PAD', + 69 => 'ST-PAD2', + 70 => 'STAIRWAY', + 71 => 'StarTrail TT', + ), + '@SU' => + array ( + 0 => 'Surfing TAB B 9.7 3G', + 1 => 'Surfing Tab C 3G', + 2 => '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', + 3 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 4 => 'surnia', + 5 => 'SUGAR ([A-Z][0-9]?(?: Pro)?)!', + 6 => 'SUPRA (M[0-9]{2,3}[A-Z]{0,2})!', + 7 => 'SUBLIM', + 8 => 'SUNSET', + 9 => 'SUNSET2', + ), + '@SV' => + array ( + 0 => 'sv8860', + 1 => 'SVP-DTV15', + ), + '@SW' => + array ( + 0 => 'Swift', + 1 => 'Swift Plus', + 2 => 'Swift 2 Plus', + 3 => 'Swift 2 X', + ), + '@SX' => + array ( + 0 => 'SXZ-PD!!', + 1 => 'SX9701W', + ), + '@SY' => + array ( + 0 => 'Sygnus', + 1 => 'SYTABEX7-2', + 2 => '(Symphony|Xplorer)!!', + 3 => 'Synrgic Uno M1', + ), + '@SZ' => + array ( + 0 => 'SZJ-JS101', + 1 => 'SZENIO!!', + ), + '@T-' => + array ( + 0 => 'T-07B', + 1 => 'T-800', + 2 => 'T-200', + 3 => 'T-Smart!!', + 4 => 'T-01C', + 5 => 'T-01D', + 6 => 'T-02D', + 7 => 'T-Mobile G1', + 8 => 'T-Mobile G2', + 9 => 'T-Mobile G2 Touch', + 10 => 'T-Mobile HTC G2', + 11 => 'T-Mobile myTouch', + 12 => 'T-Mobile myTouch 3G', + 13 => 'T-Mobile myTouch 3G Slide', + 14 => 'T-mobile my touch 3g slide', + 15 => 'T-Mobile Espresso', + 16 => 'T-Mobile myTouch 4G', + 17 => 'T-Mobile myTouch Q', + 18 => 'T-Mobile Opal', + 19 => 'T-Mobile Vivacity', + 20 => 'T-Hub2', + ), + '@T0' => + array ( + 0 => 'T01', + 1 => 'T012', + 2 => 'T02', + 3 => 'T05', + 4 => 'T03', + 5 => 'T04', + 6 => 'T00C', + 7 => 'T00E', + 8 => 'T00N', + 9 => 'T00D', + 10 => 'T00S', + 11 => 'T00T', + 12 => 'T001', + 13 => 'T00I', + 14 => 'T00I-D', + 15 => 'T00F', + 16 => 'T00J', + 17 => 'T00J-D', + 18 => 'T00K', + 19 => 'T00P', + 20 => 'T00G', + 21 => 'T00Q', + ), + '@T1' => + array ( + 0 => 'T1-B', + 1 => 'T1-D', + 2 => 'T1-E', + 3 => 'T1K Plus', + 4 => 'T1 7.0', + 5 => 'T11AD!', + ), + '@T2' => + array ( + 0 => 'T20', + ), + '@T3' => + array ( + 0 => 'T320a', + 1 => 'T30', + 2 => 'T3696', + 3 => 'T301', + ), + '@T6' => + array ( + 0 => 'T6', + ), + '@T7' => + array ( + 0 => '(OPPO-?)?T703!', + 1 => 'T720 SE', + 2 => 'T760 from moage.com', + ), + '@T8' => + array ( + 0 => 'T8[0-9]{3,3}!!', + ), + '@T9' => + array ( + 0 => 'T9108', + 1 => 'T92', + 2 => 'T9199h', + 3 => 'T9[0-9]{3,3}!!', + 4 => 'T959', + 5 => 'T98 4G??(C6R2)', + ), + '@TA' => + array ( + 0 => 'Tango', + 1 => 'TA272HUL', + 2 => 'Tablet P1801-T', + 3 => 'Tablet P1802-T', + 4 => '(DENVER-)?TA[CD]-[0-9]{4,5}!!', + 5 => 'Tablet-P27', + 6 => 'TA10CA3', + 7 => '(tablet )?fnac!!', + 8 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + 9 => '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', + 10 => 'TA-FONE!!', + 11 => 'TAB1011', + 12 => 'TAB-1030', + 13 => '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', + 14 => 'TAB950', + 15 => 'TAB1062', + 16 => 'TAB192', + 17 => 'TA-10(07|29)!', + 18 => 'TA-10(84)!', + 19 => 'TA-10(20|28|32|38)!', + 20 => 'TA-10(24|27|44|53)!', + 21 => 'TA-10(61|75|81|88)!', + 22 => 'TA-10(00|03|21|25|33|39)!', + 23 => 'TA-10(43|50|54|68)!', + 24 => 'TA-10(41)!', + 25 => 'TA-10(62)!', + 26 => 'TA-10(04|12|52)!', + 27 => 'TA-10(99)!', + 28 => 'TA-11(03|16)!', + 29 => '(POV )?TAB-PLAYTABPRO!', + 30 => '(POV )?TAB-PROTAB25!', + 31 => '(POV )?TAB-PROTAB26!', + 32 => '(POV )?TAB-PROTAB30!', + 33 => 'TAB-PROTAB2-IPS9', + 34 => 'TAB-PROTAB2-IPS-3G', + 35 => 'TAB-PROTAB2-IPS-16', + 36 => 'TAB-PROTAB2.4', + 37 => 'TAB-PROTAB2XL', + 38 => 'TAB-PROTAB2.4XL', + 39 => 'TAB-PROTAB2XXL', + 40 => 'TAB-PROTAB2XXL(4)', + 41 => '(POV )?TAB-PROTAB2XXL(4)!', + 42 => '(POV )?TAB NAVI7 3G M!', + 43 => 'Tablet P', + 44 => 'Tablet S', + 45 => 'Tabra QAV801', + 46 => 'TAB 7 3G V8', + 47 => 'TAB 8 3G V8', + 48 => 'TAB9 3G', + 49 => 'TAB9 3G V8', + 50 => 'TAB 10 3G V16', + 51 => 'TAB 7i 3G', + 52 => 'TAB 10Q', + 53 => 'TAB09-410', + 54 => 'TAB10-410', + 55 => 'TAB07-485', + 56 => 'TAB07-200', + 57 => 'TAB9-200', + 58 => 'TAB10-201', + 59 => 'TAB210', + 60 => 'TAB220', + 61 => 'TAB224', + 62 => 'TAB250', + 63 => 'TAB275', + 64 => 'TAB260', + 65 => 'TAB264', + 66 => 'TAB360', + 67 => 'TAB364', + 68 => 'TAB410', + 69 => 'TAB411', + 70 => 'TAB420', + 71 => 'TAB424', + 72 => 'TAB450', + 73 => 'TAB460', + 74 => 'TAB461', + 75 => 'TAB464', + 76 => 'TAB465EUK', + 77 => 'TAB468', + 78 => 'TAB469', + 79 => 'TAB466EUK', + 80 => 'TAB467', + 81 => 'TAB462', + ), + '@TB' => + array ( + 0 => 'TB-X103F', + 1 => 'TB07FTA', + 2 => 'TB100', + 3 => 'TB782B', + 4 => 'TBD753B', + 5 => 'TBDB763', + 6 => 'TBDB863', + 7 => 'TBDC1093', + 8 => 'TBDG734', + 9 => 'TBDG874', + 10 => 'TBDG1073', + 11 => 'TBQC1063', + ), + '@TC' => + array ( + 0 => 'TCC8920 STB!', + 1 => 'TCC893X!', + 2 => 'TCC8935 HDMI!', + 3 => 'TCC8975 STB!', + 4 => 'TCC8920 EVM', + 5 => 'TCC8925 HDMI DONGLE', + 6 => 'TCC8930 STB EV', + 7 => 'TCC8930 STB1', + 8 => 'TCC8935 HDMI DONGLE', + 9 => 'TCL ONE TOUCH 990', + 10 => 'TC970', + 11 => 'TC970 (Wi-Fi)', + 12 => 'TC975', + 13 => 'TC55', + 14 => 'TC55CH', + 15 => 'TC70', + 16 => 'TC75', + 17 => 'TCL!!', + ), + '@TD' => + array ( + 0 => 'TD070VA1', + 1 => 'TD600', + 2 => 'TD-1010', + 3 => 'TD506', + ), + '@TE' => + array ( + 0 => 'Telechips M801 Evaluation Board', + 1 => 'Telechips TCC8800 eMMC Evaluation Board', + 2 => 'Telechips TCC8800 Evaluation Board', + 3 => 'Telechips TCC8900 Evaluation Board', + 4 => 'Telechips TCC8900 Evaluation Board (US)', + 5 => 'Telechips TCC8902 Tablet-PC (DE)', + 6 => 'Telechips TCC9300 Evaluation Board', + 7 => 'Tegra!!', + 8 => 'TECNO!!', + 9 => 'Teclast A10', + 10 => 'Teclast P76e!', + 11 => 'Teclast P85!', + 12 => 'Teclast X80h', + 13 => 'tegav2', + 14 => 'Tele2fon V3', + 15 => 'Tele2fon v5', + 16 => 'TELEFUNKEN Diamond TD1', + 17 => 'Telpad Dual S', + 18 => 'Telpad Quad S', + 19 => 'Telpad QS', + 20 => 'Tensent S9000', + 21 => 'teXet X-alpha', + 22 => 'Texet TM-4083', + 23 => 'teXet X-start', + 24 => 'teXet iX-mini', + 25 => 'teXet X-navi', + 26 => 'TEXET TM-4677', + 27 => 'teXet X-medium plus', + 28 => 'teXet X-maxi qHD', + 29 => 'TeamDRH ICS for GTablet', + 30 => 'Telenor!!', + ), + '@TF' => + array ( + 0 => 'TF101', + 1 => 'TF101-WiMAX', + 2 => 'TF201', + 3 => 'tf201t', + 4 => '(Transformer )?(Pad )?TF300(T|TG|TL)!', + 5 => '(Transformer )?(Pad )?TF502(T)!', + 6 => '(Transformer )?(Pad )?TF700(T|K)!', + ), + '@TG' => + array ( + 0 => 'TG-L800S', + 1 => 'TG-L900S', + ), + '@TH' => + array ( + 0 => 'thor', + 1 => 'Thunder S220', + 2 => '(Cloudfone|CloudPad|Excite|Thrill)!!', + 3 => '(KAZAM|Thunder|Tornado|Trooper)!!', + 4 => 'ThinkPad( Tablet)?!', + 5 => '(CJ-)?ThL!!', + 6 => 'THRiVE', + ), + '@TI' => + array ( + 0 => 'Tilapia', + 1 => 'Titan TV S320', + 2 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + 3 => '(Karbonn|Titanium)!!', + 4 => 'TI320-DU', + 5 => 'TI320-DU TV', + 6 => 'TizzBird!!', + 7 => 'tiffany', + ), + '@TL' => + array ( + 0 => 'TLINK[0-9]{3,3}!!', + ), + '@TM' => + array ( + 0 => 'TM400', + 1 => 'TM105', + 2 => 'TM105A', + 3 => 'TM-3200R', + 4 => 'TM-3204R', + 5 => 'TM-3500', + 6 => 'TM-4003', + 7 => 'TM-4004', + 8 => 'TM-4071', + 9 => 'TM-4082R/X-driver', + 10 => 'TM-4377', + 11 => 'TM-4515', + 12 => 'TM-4577', + 13 => 'TM-4677', + 14 => 'TM-4982', + 15 => 'TM-5005', + 16 => 'TM-5200', + 17 => 'TM-5377', + 18 => 'TM-7011', + 19 => 'TM-7016', + 20 => 'TM-7021', + 21 => 'TM-7023', + 22 => 'TM-7024', + 23 => 'TM-7025', + 24 => 'TM-7026', + 25 => 'TM-7026 (revision 4)', + 26 => 'TM-7037W', + 27 => 'TM-7038W', + 28 => 'TM-7041', + 29 => 'TM-7043XD', + 30 => 'TM-7047HD 3G', + 31 => 'TM-7096', + 32 => 'TM-7099', + 33 => 'TM-7854', + 34 => 'TM-8041HD', + 35 => 'TM-8048 revision1', + 36 => 'TM-8051', + 37 => 'TM-9720', + 38 => 'TM-9725', + 39 => 'TM-9740', + 40 => 'TM-9741', + 41 => 'TM-9743W', + 42 => 'TM-9747!', + 43 => 'TM-9748 3G', + 44 => 'TM-9750HD', + 45 => 'TM-9751HD', + 46 => 'TM-9757', + 47 => 'TM-9757 3G rev1', + 48 => 'TM-9767', + 49 => 'TM-1058', + 50 => 'tmn!!', + ), + '@TO' => + array ( + 0 => 'Toro', + 1 => 'Toro-VZW', + 2 => 'TOUCAN Stick HD', + 3 => 'TOUCAN Stick G4', + 4 => 'Toucan Stick 4K', + 5 => 'TOUCAN Stick 3D mk2', + 6 => 'TOUCAN Stick 3D Pro', + 7 => 'TOUCHBOOK7.0 3G', + 8 => '(HP )?Touchpad!', + 9 => 'Touch Pro 2', + 10 => '(KAZAM|Thunder|Tornado|Trooper)!!', + 11 => 'Torque', + 12 => 'Touchlet X10.dual', + 13 => 'tolino tab!!', + 14 => 'TomTom Bridge', + 15 => 'TomTom PRO 8275', + 16 => 'TOOKY!!', + 17 => 'TOSHIBA AC AND AZ', + 18 => 'TOSHIBA FOLIO AND A', + 19 => 'Tostab03', + 20 => 'TOSHIBA WT7-C', + 21 => 'TOSHIBA WT8-A', + ), + '@TP' => + array ( + 0 => 'TPA60W', + 1 => 'TPC-7151', + ), + '@TQ' => + array ( + 0 => 'TQ150', + ), + '@TR' => + array ( + 0 => 'Transformer', + 1 => 'Transformer TF101(G)?!', + 2 => '(Eee Pad )?Transformer Prime TF201!', + 3 => 'Transformer TF201', + 4 => 'Transformer TF201G', + 5 => 'Transformer Prime', + 6 => 'Transformer Prime TF300T', + 7 => 'Transformer 300', + 8 => 'Transformer Pad', + 9 => '(Transformer )?(Pad )?TF300(T|TG|TL)!', + 10 => '(Transformer )?(Pad )?TF502(T)!', + 11 => 'Transformer Pad TF600T', + 12 => '(Transformer )?(Pad )?TF700(T|K)!', + 13 => 'Transformer (Pad )?Infinity!', + 14 => 'TR720F', + 15 => 'TR10CS1', + 16 => 'TripNiCE Pyramid', + 17 => '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!', + 18 => 'TR10RS1', + 19 => '(KAZAM|Thunder|Tornado|Trooper)!!', + 20 => 'Triumph', + 21 => 'TRACER OXYGEN GS1', + 22 => 'Trevi PHABLET 4C', + 23 => 'Trevi PHABLET 5 S', + 24 => 'TREQ!!', + 25 => 'Trevi REVERSE 5.5Q', + 26 => 'Trevi PHABLET 6 S', + 27 => 'TRUE BEYOND 3G', + ), + '@TS' => + array ( + 0 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 1 => 'TSP21', + 2 => 'TSB CLOUD COMPANION;TOSHIBA AC AND AZ', + ), + '@TT' => + array ( + 0 => 'TT101', + ), + '@TU' => + array ( + 0 => 'TURBO DG2014', + 1 => 'Turbo C4 Plus', + 2 => 'Turbo-X pi', + 3 => 'Turbo-X Ice', + 4 => 'Turbo-X Tablet Spice III', + 5 => 'Turkcell!!', + 6 => 'Turk Telekom TT175', + ), + '@TV' => + array ( + 0 => 'TVE9603I', + 1 => 'TVPAD Slim K3409', + ), + '@TX' => + array ( + 0 => 'TX201LA', + 1 => 'TX201LAF', + 2 => 'TX85', + 3 => 'TX18', + ), + '@U1' => + array ( + 0 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + 1 => 'U1', + 2 => 'U1203', + ), + '@U2' => + array ( + 0 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + 1 => 'U20(a|i|iv)!', + ), + '@U3' => + array ( + 0 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + ), + '@U5' => + array ( + 0 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + ), + '@U6' => + array ( + 0 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + ), + '@U7' => + array ( + 0 => 'U701', + 1 => 'U701T', + 2 => 'U702', + 3 => 'U705', + 4 => 'U705T', + 5 => 'U705W', + 6 => 'U707', + 7 => 'U707T', + 8 => 'U708', + 9 => 'U7011', + 10 => 'U7015', + ), + '@U8' => + array ( + 0 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + 1 => 'U8[0-9]{3,3}!!', + 2 => 'U8220', + ), + '@U9' => + array ( + 0 => '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', + 1 => 'U9[0-9]{3,3}!!', + ), + '@UG' => + array ( + 0 => 'ugglite', + ), + '@UL' => + array ( + 0 => 'Ultra', + 1 => 'Ultra Flare v2', + 2 => 'Ultimix!!', + 3 => 'Ultra Air', + 4 => 'Ultra Charm', + 5 => 'Ultra Energy', + 6 => 'Ultra Energy Lite', + 7 => 'Ultra Energy Plus', + 8 => 'Ultra Latitude', + 9 => 'Ultra Style', + 10 => 'Ultra Wave', + 11 => 'Ultimate10', + 12 => 'Ultimate10-Android4.0', + 13 => 'Ultimate 10', + 14 => 'Ulefone Be Touch2', + 15 => 'ultrafone!!', + 16 => 'Ultym 5', + 17 => 'Ultym 5L', + 18 => 'Ultym 5.2', + ), + '@UM' => + array ( + 0 => 'UM840', + 1 => 'UMI!!', + ), + '@UN' => + array ( + 0 => 'unknown M200-L09', + 1 => 'UNO X8', + 2 => 'UNO X10', + 3 => 'Unusual!!', + ), + '@UO' => + array ( + 0 => 'UOOGOU!!', + ), + '@UR' => + array ( + 0 => 'URBANO PROGRESSO', + ), + '@US' => + array ( + 0 => 'USCC ALCATEL one touch 909B', + 1 => 'USCC ALCATEL one touch 988', + 2 => '(HTC|PCD|USCC)?ADR[0-9]{4,4}!!', + 3 => 'USCCADR[0-9]{4,4}!!', + 4 => '(USCC-|KYOCERA-)?E[0-9]{4,4}!!', + 5 => '(USCC-|KYOCERA-)?C[0-9]{4,4}!!', + 6 => 'USCC-(LG)?US!!', + 7 => 'Usmart!!', + ), + '@UT' => + array ( + 0 => 'UTime!!', + ), + '@V ' => + array ( + 0 => '(ZTE ?)?V ?[0-9]{3,3}!!', + ), + '@V-' => + array ( + 0 => 'V-T100', + ), + '@V1' => + array ( + 0 => 'V1 Viper', + 1 => 'V1 Viper E', + 2 => 'V1 Viper I', + 3 => 'V1 Viper I4G', + 4 => 'V1 Viper I4G PL', + 5 => 'V1 Viper I4G TM', + 6 => 'V1 Viper L', + 7 => 'V1 ViperS', + 8 => 'V1 Viper S4G', + 9 => 'V1 Viper S4G TM', + 10 => 'V11', + 11 => 'V17HD', + 12 => 'V105A4-A-C1', + 13 => 'V100MDT', + 14 => '(GIO-)?(GiONEE[- ])?V182!', + 15 => '(GIO-)?(GiONEE[- ])?V185!', + 16 => '(GIO-)?(GiONEE[- ])?V188!', + 17 => 'V1', + 18 => 'V1277', + ), + '@V2' => + array ( + 0 => 'V2 Viper', + 1 => 'V2 Viper I', + 2 => 'V2 Viper I TM', + 3 => 'V2 Viper I4G', + 4 => 'V2 Viper S', + 5 => 'V2 Viper X', + 6 => 'V2 Viper X plus', + ), + '@V3' => + array ( + 0 => 'v360 E1', + ), + '@V5' => + array ( + 0 => 'V5U-simvalley SP-142', + 1 => 'V55', + ), + '@V7' => + array ( + 0 => 'V701s Core4', + 1 => 'V711s Core4', + 2 => 'V712 Core4', + 3 => 'V719 3G', + ), + '@V8' => + array ( + 0 => 'V801 Core4', + 1 => 'V801s Core4', + 2 => 'V811 Core4', + 3 => 'V812 Core4', + 4 => 'V813 Core4', + 5 => 'V813s Core4', + 6 => 'V818', + 7 => 'V818mini', + 8 => 'V819mini', + 9 => 'V819 3G', + 10 => 'V819i', + 11 => 'V8000 USA Cricket', + 12 => 'V8110', + 13 => 'V8403', + 14 => 'V8405', + 15 => 'V8408', + 16 => 'V8409', + 17 => 'V8412', + 18 => 'V8413', + 19 => 'V8501', + 20 => 'V8502', + 21 => 'V8503', + 22 => 'V8505', + 23 => 'V8507', + 24 => 'V8508', + 25 => 'V8510', + 26 => 'V8511', + 27 => 'V8602', + 28 => 'V8603', + ), + '@V9' => + array ( + 0 => 'V99', + 1 => 'V936', + 2 => 'V985', + 3 => 'V971 Core4', + 4 => 'V971s Core4', + 5 => 'V972 Core4', + 6 => 'V973 Core4', + 7 => 'V975 Core4', + 8 => 'V975i', + 9 => 'V975m', + 10 => 'V975m Core4', + 11 => 'V975s Core4', + 12 => 'V961', + 13 => 'V9', + 14 => 'V9S', + 15 => 'V9e', + 16 => 'V9e+', + 17 => 'V9A', + 18 => 'V9C', + ), + '@VA' => + array ( + 0 => 'Vandroid S5E', + 1 => 'Vandroid T1J', + 2 => 'Vandroid T3-A', + 3 => 'Vandroid T3i', + 4 => 'Vandroid T', + 5 => 'VAP430', + ), + '@VE' => + array ( + 0 => 'vexpress a9', + 1 => 'Ventana', + 2 => 'Vendor Optimus', + 3 => 'VEOLO', + 4 => 'VEOLO2', + 5 => 'Vega', + 6 => 'VegaBean!', + 7 => 'Venture', + 8 => 'Venue!!', + 9 => '(OV-|Overmax|Vertis)!!', + 10 => 'VEGA NO.6', + 11 => 'Verifone Carbon-8', + 12 => 'verykool!!', + 13 => 'Vertu Aster T', + 14 => 'Vertu Signature Touch', + 15 => 'VERTU Ti', + 16 => 'Venus_V3 5040', + 17 => 'Venus V3 5570', + 18 => 'Venus V3 5580', + ), + '@VF' => + array ( + 0 => 'VF685', + 1 => 'VF695', + 2 => 'VF696', + 3 => 'VF-696', + 4 => 'VF-795', + 5 => 'VF-895N', + 6 => 'VF945', + 7 => 'VFD 100', + 8 => 'VFD 200', + 9 => 'VFD 300', + 10 => 'VFD 301', + 11 => 'VFD 311', + 12 => 'VFD 500', + 13 => 'VFD 501', + 14 => 'VFD 510', + 15 => 'VFD 511', + 16 => 'VFD 513', + 17 => 'VFD 600', + 18 => 'VFD 610', + 19 => 'VFD 700', + 20 => 'VFD 710', + 21 => 'VFD 900', + 22 => 'VF-1397', + 23 => 'VF-1497', + 24 => 'VFD 1100', + 25 => 'VFD 1300', + 26 => 'VFD 1400', + 27 => 'VFD1400', + ), + '@VI' => + array ( + 0 => 'VirtualBox!', + 1 => 'victoriabay', + 2 => 'Viva C701', + 3 => 'Viva H701', + 4 => 'Viva H701 LTE CZ', + 5 => 'VivaH7LTE', + 6 => 'VivaH8LTE', + 7 => 'VivaH10LTE', + 8 => 'Viva i7G', + 9 => 'VIVA i7', + 10 => 'Viva i10HD', + 11 => 'Viva i701G TM', + 12 => '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', + 13 => 'VICTORY', + 14 => 'Victory 2', + 15 => 'Victory 3', + 16 => 'VICTORY 4', + 17 => 'Victory 5', + 18 => 'VIA F1', + 19 => 'VIA S10', + 20 => 'Vibo-A688', + 21 => 'VitMod ExtraLite 1.6.5.fullodex for HTC HD7 Pro', + 22 => 'Vivid 4G', + 23 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 24 => 'Vibe K5 Plus', + 25 => 'VIBE X2 (X2)', + 26 => 'VIBE X3', + 27 => 'VIBE Z2 Pro (K920)', + 28 => 'Vibrantmtd', + 29 => 'Vibrant T959', + 30 => 'victorys s8', + 31 => 'Victorys V8', + 32 => 'Videocon!!', + 33 => 'ViewSonic-V350', + 34 => 'ViewSonic V500', + 35 => 'ViewPhone3', + 36 => 'ViewPad 4', + 37 => 'ViewSonic-ViewPad4', + 38 => 'ViewPad7', + 39 => 'ViewPad 7D', + 40 => 'ViewPad 7D Pro', + 41 => 'ViewSonic-ViewPad7e', + 42 => 'ViewPad7e', + 43 => 'ViewPad 7Q', + 44 => 'ViewPad 7Q Plus', + 45 => 'ViewPad 7Q Pro', + 46 => 'ViewPad7X', + 47 => 'ViewPad 8E', + 48 => 'ViewPad 9Q', + 49 => 'ViewPad 10e', + 50 => 'ViewPad 10S', + 51 => 'ViewPad 70Q', + 52 => 'ViewPad97A', + 53 => 'ViewPad97a K1', + 54 => 'ViewPad97a Pro', + 55 => 'ViewPad 97Q', + 56 => 'ViewPad 100Q', + 57 => 'ViewPad 100N Pro', + 58 => 'ViewPad 701N', + 59 => 'ViewPad i7D', + 60 => 'ViewPad E100', + 61 => 'ViewSonic VB733', + 62 => 'VINUS!!', + 63 => '(BBG-|VIV-)?vivo!!', + 64 => 'Viettel i5', + 65 => 'Viettel I8', + 66 => 'VIETTEL V8404!', + 67 => 'Viettel V8410', + 68 => 'VIETTEL V8411', + 69 => 'Viettel V8502', + 70 => 'VIETTEL V8506', + 71 => 'VIETTEL V8509', + ), + '@VK' => + array ( + 0 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 1 => 'VK410', + 2 => 'VK700', + 3 => 'VK810 4G', + 4 => 'VK815', + ), + '@VL' => + array ( + 0 => 'VL-[0-9]{3,3}!!', + ), + '@VM' => + array ( + 0 => 'VMware Virtual Platform', + 1 => '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', + 2 => 'VM670', + ), + '@VN' => + array ( + 0 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + ), + '@VO' => + array ( + 0 => 'Vogue', + 1 => 'Volantis', + 2 => 'Volantisg', + 3 => 'VOYAGER DG300', + 4 => 'VOYAGER2 DG310', + 5 => 'Vox', + 6 => 'Vortex', + 7 => 'vollo Vi86', + 8 => 'VOTO GT2++', + 9 => 'VOTO GT7', + 10 => 'VOTO GT11', + 11 => 'VOTO GT11 Pro', + 12 => 'VOTO GT18', + 13 => 'VOTO V5', + 14 => 'VOTO VT868', + 15 => 'VOTO VT888', + 16 => 'VOTO VT898', + 17 => 'VOTO VT898S', + 18 => 'VOTO W5300', + 19 => 'VOTO X2', + 20 => 'VOYO A15', + 21 => 'voyo X6', + 22 => 'Vodafone!!', + ), + '@VS' => + array ( + 0 => 'VS[0-9]{3,3}!!', + 1 => 'VS TOUCH!!', + 2 => 'VSP250g', + 3 => 'VSP250s', + 4 => 'VSD220', + 5 => 'VSD221', + 6 => 'VSD224', + 7 => 'VSD231', + 8 => 'VSD241', + 9 => 'Vsun HEXA', + 10 => 'VSUN ILLUSION', + 11 => 'VSUN RACE', + 12 => 'Vsun SPARK', + 13 => 'VSUN TOUCH', + 14 => 'Vsun D3B', + 15 => 'Vsun H3', + 16 => 'Vsun H9', + 17 => 'Vsun i1', + 18 => 'Vsun i5', + 19 => 'Vsun i9', + 20 => 'Vsun V9', + ), + '@VT' => + array ( + 0 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 1 => 'VT6078', + 2 => 'VT75C', + 3 => 'VT77C', + 4 => 'VT79C', + 5 => 'VT87C+', + 6 => 'VTAB1008', + 7 => 'VTAB3010', + ), + '@VW' => + array ( + 0 => 'VW RCBKK1', + ), + '@VX' => + array ( + 0 => 'VX-100', + 1 => 'VX580A', + 2 => 'VX580W', + 3 => 'VX610A', + ), + '@W1' => + array ( + 0 => 'W10', + 1 => 'W10 V2.0', + 2 => 'w13pro', + 3 => 'W13PRO V2.0', + 4 => 'W17PRO(Dualcore)', + 5 => 'W17PRO JB Dualcore', + 6 => 'W100', + ), + '@W2' => + array ( + 0 => 'W200', + 1 => 'W22PRO', + 2 => 'W22PRO 3G', + 3 => 'W27(Dualcore)', + 4 => 'W28(Dualcore)', + 5 => 'W20', + ), + '@W3' => + array ( + 0 => 'W337', + 1 => 'W3620', + 2 => 'W30(QuadCore)', + 3 => 'w30hd(QuadCore)', + 4 => 'W30HDPRO', + ), + '@W4' => + array ( + 0 => 'w42(QuadCore)', + ), + '@W5' => + array ( + 0 => 'W5510', + ), + '@W6' => + array ( + 0 => 'W606', + 1 => 'W619', + 2 => 'W686', + 3 => 'W626', + 4 => 'W6350', + 5 => 'W6360', + 6 => 'W6500', + 7 => 'W6620', + 8 => 'W6', + 9 => 'W6HD ICS', + 10 => 'W6HD ICS FULL', + ), + '@W7' => + array ( + 0 => 'W711', + 1 => 'W757', + 2 => 'W700', + 3 => 'W732', + ), + '@W8' => + array ( + 0 => 'W820', + 1 => '(GIO-)?(GiONEE[- ])?W800!', + 2 => 'W800', + 3 => 'W806', + 4 => 'W808', + 5 => 'W810', + 6 => 'W880', + 7 => 'W8', + 8 => 'W8 beyond', + ), + '@W9' => + array ( + 0 => 'W900', + 1 => 'W990', + ), + '@WA' => + array ( + 0 => '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!', + 1 => 'WA-U420D', + 2 => 'WALSUN S1 Pro', + 3 => 'WALSUN S2', + 4 => 'Walton Primo', + 5 => 'WALTON Primo C1', + 6 => 'WALTON Primo-D1', + 7 => 'WALTON Primo E8+', + 8 => 'Walton F2', + 9 => 'Walton Primo F2', + 10 => 'WALTON Primo-G1', + 11 => 'WALTON Primo G1', + 12 => 'Walton-GH2', + 13 => 'Walton Primo H1', + 14 => 'Walton Primo H3', + 15 => 'WALTON H3', + 16 => 'WALTON Primo HMmini', + 17 => 'WALTON Primo-N1', + 18 => 'Walton Primo R1', + 19 => 'Walton RM2', + 20 => 'WALTON Primo S3', + 21 => 'Walton Primo VX+', + 22 => '(WALTON )?Primo-X1!', + 23 => 'Walpad 8b', + 24 => 'Walpad 8x', + 25 => 'Walpad 10b', + 26 => 'Walpad 10x', + 27 => 'Walpad C', + 28 => 'Walpad G', + 29 => 'Walpad G2', + 30 => 'Walpad G2i', + 31 => 'Walpad M', + 32 => 'WAX', + ), + '@WE' => + array ( + 0 => 'WellcoM-A86', + 1 => 'WellcoM-A88', + 2 => 'WellcoM-A89', + 3 => 'WellcoM-A89-Plus', + 4 => 'WellcoM-A99', + 5 => 'WellcoM-A800', + 6 => 'WEXLER. ZEN 5', + 7 => 'WEXLER TAB7ID', + 8 => 'WEXLER-TAB-7iS', + 9 => 'WEXLER-TAB-7T', + 10 => 'WEXLER.BOOK T7008', + ), + '@WF' => + array ( + 0 => 'WF7C', + ), + '@WH' => + array ( + 0 => 'WHAM D5', + 1 => 'WHAM Q4', + 2 => 'WHAM-WD38', + 3 => 'WHAM WG40', + 4 => 'WHAM WG50', + 5 => 'WHAM WK41', + 6 => 'Wham WK44', + 7 => 'WHAM WS35', + 8 => 'WHAM WS36', + 9 => 'WHAM WS43', + 10 => 'WHAMWHAM WS43 Maui', + 11 => 'WHAM WT72', + ), + '@WI' => + array ( + 0 => 'Wingray', + 1 => 'Wildfire S!', + 2 => 'Wildfire!', + 3 => 'Wiko Cink Five', + 4 => 'Wiko Cink Peax', + 5 => 'WIKO-CINK PEAX', + 6 => 'Wiko Cink Slim', + 7 => 'WIKO-CINK SLIM', + 8 => 'Wiko Rainbow', + 9 => 'Wiko Stairway', + 10 => 'Wileyfox Spark', + 11 => 'Wileyfox Spark +', + 12 => 'Wileyfox Spark X', + 13 => 'Wileyfox Storm', + 14 => 'Wileyfox Swift', + 15 => 'Wink City S', + ), + '@WL' => + array ( + 0 => 'WL-101GQC', + ), + '@WM' => + array ( + 0 => 'WM8650', + 1 => 'WM8650-mid', + 2 => 'wm8710-tvbox', + 3 => 'WM8850-mid', + ), + '@WO' => + array ( + 0 => 'Woxter!!', + ), + '@WS' => + array ( + 0 => 'WS171', + ), + '@WT' => + array ( + 0 => 'WT[0-9]{2,2}[a-z]!!', + ), + '@WX' => + array ( + 0 => 'WX04K', + 1 => 'WX06K', + 2 => 'WX10K', + 3 => 'WX[0-9]{3,3}!!', + 4 => 'WX04SH', + 5 => 'WX05SH', + 6 => 'Wxt Tab PC 65CXi', + ), + '@X-' => + array ( + 0 => '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 1 => 'X-treme PQ11', + 2 => 'X-treme PQ15', + 3 => 'X-tremePQ22', + 4 => 'X-treme-PQ30', + 5 => 'X-basic', + 6 => 'X-basic2', + 7 => 'X-maxi', + 8 => 'X-medium', + ), + '@X0' => + array ( + 0 => 'X007D', + 1 => 'X008D', + 2 => 'X008DA', + 3 => 'X008DB', + 4 => 'X008DC', + 5 => 'X009D', + 6 => 'X009DA', + 7 => 'X009DB', + 8 => 'X009DD', + 9 => 'X00AD', + 10 => 'X00ADA', + 11 => 'X00ADC', + 12 => 'X00BD', + 13 => 'X00DD', + 14 => 'X00DDA', + 15 => 'X00DDB', + 16 => 'X00HD', + 17 => 'X00GD', + 18 => 'X013D', + 19 => 'X013DA', + 20 => 'X013DB', + 21 => 'X013DC', + 22 => 'X015D', + 23 => 'X014D', + 24 => 'X002', + 25 => 'X003', + 26 => 'X005', + 27 => 'X008', + ), + '@X1' => + array ( + 0 => 'X1 Soul', + 1 => 'X1 Soul Mini', + 2 => 'X1 mini Soul', + 3 => 'X1 Soul Xtreme', + 4 => 'X1 Xtreme Mini', + 5 => 'X1', + 6 => 'X1 7.0', + 7 => 'X1 atom', + 8 => 'X1 atom L', + 9 => 'X1 Atom s', + 10 => 'X1 Beats', + 11 => 'X1 Grand', + 12 => 'X1 mini', + 13 => 'X1 Selfie', + 14 => 'X1010', + 15 => 'X10(a|i|iv|i-o|s)?$!', + 16 => 'X10 ?(Mini ?Pro)$!', + 17 => 'X10 ?(Mini)$!', + 18 => 'X10H(G3C5)', + 19 => 'X10HD 3G(M6K6)', + 20 => 'X16 Plus(D3A5)', + 21 => 'X16 Power(D6F7)', + 22 => 'X16 PRO(D6F8)', + 23 => 'X16HD (K3J3)', + 24 => 'X16HD 3G(M5J4)', + 25 => 'X16HD 3G(M5J5)', + 26 => 'X16HD 3G(M5J5', + 27 => 'X16HD 3G(M5J6)', + ), + '@X2' => + array ( + 0 => 'X2 Soul', + 1 => 'X2 Soul Lite', + 2 => 'X2 Soul Lite TM', + 3 => 'X2 Soul Mini', + 4 => 'X2 Soul Mini TM', + 5 => 'X2 Soul PRO', + 6 => 'X2 Soul Style', + 7 => 'X2 Soul Style TM', + 8 => 'X2 Soul Style Plus', + 9 => 'X2 Soul Xtreme', + 10 => 'X2 Twin', + ), + '@X3' => + array ( + 0 => 'X3 Soul', + 1 => 'X3 Soul Lite', + 2 => 'X3 Soul Lite TM', + 3 => 'X3 Soul mini', + 4 => 'X3 Soul PLUS', + 5 => 'X3 Soul PRO', + 6 => 'X3 Soul Style', + 7 => 'X325a', + 8 => 'X3-Ice MIUI XT720 Memorila Classics', + ), + '@X4' => + array ( + 0 => 'X403', + ), + '@X5' => + array ( + 0 => 'X550', + 1 => 'X515d', + 2 => 'X515e', + 3 => 'X525a', + 4 => 'X527', + 5 => 'X505', + 6 => 'X506', + 7 => 'X506S', + 8 => 'X507Q', + ), + '@X7' => + array ( + 0 => 'X710d', + 1 => 'X720D', + 2 => 'X710E', + 3 => 'X7G', + 4 => 'X720', + 5 => 'X70(C6F9)', + 6 => 'X70 3G (C5D9)', + 7 => 'X70 R(C7F9)', + 8 => 'X70 R(C8F9)', + 9 => 'X708S', + ), + '@X8' => + array ( + 0 => '(GIO-)?(GiONEE[- ])?X817!', + 1 => 'X800+', + 2 => 'X8', + 3 => 'X80(C4M5)', + 4 => 'X80h', + 5 => 'X80h(FB5M)', + 6 => 'X80h(FB6M)', + 7 => 'X80HD', + 8 => 'X80HD(G2N3)', + 9 => 'X80HD(G2N4)', + 10 => 'X80HD(G2N5)', + 11 => 'X80HD(G2N6)', + 12 => 'X80HD(G2N8)', + 13 => 'X80HD(G2N9)', + 14 => 'X80HD(G2N9', + 15 => 'X80 Plus(H5C5)', + 16 => 'X80 Plus(H6C3)', + 17 => 'X80 Plus(H6C3', + 18 => 'X80 Plus(H6C4)', + 19 => 'X80 Power(B2N3)', + 20 => 'X80 Power(B2N4)', + 21 => 'X80 Power(B2N6)', + 22 => 'X80 Pro(E2E9)', + 23 => 'X80 Pro(E3E6)', + 24 => 'X80 Pro(E3E7)', + 25 => 'X80 Pro(E3E8)', + 26 => 'X80 Pro (E3E9)', + 27 => 'X81-8G3D', + 28 => 'X89 (E7ED)', + 29 => 'X89 (KR89)', + 30 => 'X89HD (H21C)', + ), + '@X9' => + array ( + 0 => 'X920e', + 1 => 'X9', + 2 => 'X903', + 3 => 'X903S', + 4 => 'X905', + 5 => 'X906', + 6 => 'X907', + 7 => 'X909', + 8 => 'X909T', + 9 => 'X9000', + 10 => 'X9006', + 11 => 'X9007', + 12 => 'X9009', + 13 => 'X9015', + 14 => 'X9017', + 15 => 'X9070', + 16 => 'X9076', + 17 => 'X9077', + 18 => 'X9079', + 19 => 'X90HD (M2PC)', + 20 => 'X98 3G(HKC1)', + 21 => 'X98 3G(HKC2)', + 22 => 'X98 3G(HKC3', + 23 => 'X98 3G(HKC3)', + 24 => 'X98 3G(lite)', + 25 => 'X98 Air(C5KN)', + 26 => 'X98 Air Smile', + 27 => 'X98 Air 3G', + 28 => 'X98 Air 3G(Smile)', + 29 => 'X98 Air 3G(C5J5)', + 30 => 'X98 Air 3G(C5J6)', + 31 => 'X98 Air 3G(C5J8)', + 32 => 'X98 Air 3G(C6J6)', + 33 => 'X98 Air 3G(C6J6', + 34 => 'X98 Air 3G(C8J6)', + 35 => 'X98 Air 3G(C8J7)', + 36 => 'X98 Air 3G(C9J6)', + 37 => 'X98 Air 3G(C9J7)', + 38 => 'X98 Air 3G(C9J8)', + 39 => 'X98 Air II', + 40 => 'X98 Air II(HG5N)', + 41 => 'X98 Air II(HG6M)', + 42 => 'X98 Air II(HG7N)', + 43 => 'X98 Air II(HG8N)', + 44 => 'X98 Air II(HG9M)', + 45 => 'X98 Air II(HG9N)', + 46 => 'X98 Air II(HG9N', + 47 => 'X98 Air ? HG9M', + 48 => 'X98 Air â…¡ HG9M', + 49 => 'X98 Air II(Smile)', + 50 => 'X98 Air III', + 51 => 'X98 Air III(M5C5)', + 52 => 'X98 Air III(M5C5', + 53 => 'X98 Air III(M5C6)', + 54 => 'X98 Plus', + 55 => 'X98 Plus(A6C7)', + 56 => 'X98 Plus(A5C8)', + 57 => 'X98 Plus 3G(A6C9)', + 58 => 'X98 Plus II (C2D4)', + 59 => 'X98 Plus II (C2D6)', + 60 => 'X98 Plus II (C2D8)', + 61 => 'X98 Plus II (C2E3)', + 62 => 'X98 Pro', + 63 => 'X98 Pro (K9C6)', + 64 => 'X98 Pro (K9C6', + 65 => 'X9180', + ), + '@XA' => + array ( + 0 => 'Xamarin Android Player!', + ), + '@XC' => + array ( + 0 => 'XCD 28', + 1 => 'XCD35', + ), + '@XD' => + array ( + 0 => '(NMP|MBR|XDK|XDS|XMP)\\-!!', + 1 => 'XDP-100R', + ), + '@XE' => + array ( + 0 => 'XELIO', + 1 => 'XELIO7PHONETAB', + 2 => 'Xelio 7 pro', + 3 => 'XELIO7PRO', + 4 => 'XELIO10 QUAD', + 5 => 'XELIO10 PLUS 3G', + 6 => 'XELIO10EXTREME', + 7 => 'Xelio 10 Pro', + 8 => 'Xelio10Pro', + 9 => 'XELIOPT2', + 10 => 'XelioPT2Pro', + 11 => 'Xelio PT4 Pro', + 12 => 'XELIO P900A', + 13 => 'Xenta-TAB07-210', + 14 => 'Xenta-TAB07-211', + 15 => 'Xenta TAB07-200', + 16 => 'Xenta TAB08-200', + 17 => 'Xenta TAB08-201-3G', + 18 => 'Xenta TAB9-200', + 19 => 'Xenta TAB09-211', + 20 => 'Xenta TAB10-211', + 21 => 'Xenta TAB10-201', + 22 => 'Xenta TAB13-201', + ), + '@XI' => + array ( + 0 => 'Xiaomi', + 1 => '(Xiaomi )?(Xiaomi|Xiaomi M|MI)!!', + 2 => '(Xiaomi|Xiaomi Mi|MI) Note!!', + 3 => '(Xiaomi )?(MI )?MAX$!', + 4 => '(Xiaomi )?(MI )?MAX 2$!', + 5 => '(Xiaomi )?(MI )?MIX$!', + 6 => '(Xiaomi )?(MI )?MIX 2$!', + 7 => '(Xiaomi )?(MI )?MIX 2S$!', + 8 => '(Xiaomi )?20!!', + 9 => '(Xiaomi )?(Redmi|RedRice|HM)!!', + 10 => '(Xiaomi )?(Redmi|HM)[ \\-]?Note!!', + 11 => '(Xiaomi |HM)?20!!', + 12 => 'Xiaomi MDT2!', + 13 => 'Xiaomi MCT1!', + 14 => 'Xiaomi MAT136!', + 15 => 'Xiaomi MBT6A5!', + 16 => '(Xiaomi|Xiaomi Mi|MI) Pad!!', + 17 => '(Xiaomi|Xiaomi Mi|MI)Box!!', + 18 => '(Xiaomi|Xiaomi Mi|MI)TV!!', + ), + '@XL' => + array ( + 0 => 'XL39h', + 1 => 'Xlife-348E+', + 2 => 'Xlife-350', + 3 => 'Xlife-364 3G+', + 4 => 'Xlife-405', + 5 => 'Xlife-410 3G', + 6 => 'Xlife-415', + 7 => 'Xlife-431Q', + 8 => 'Xlife-431Q Lite', + 9 => 'Xlife-480q', + 10 => 'Xlife-481q', + 11 => 'Xlife-482q', + 12 => 'Xlife-514Q', + 13 => 'Xlife-515Q', + 14 => 'Xlife-M5q+', + 15 => 'Xlife-M44Q', + 16 => 'Xlife-Electro55HD', + 17 => 'Xlife-Ezy', + 18 => 'Xlife-Victor4', + ), + '@XM' => + array ( + 0 => '(NMP|MBR|XDK|XDS|XMP)\\-!!', + 1 => 'XM50h', + 2 => 'XM50t', + ), + '@XO' => + array ( + 0 => 'XOOM', + 1 => 'XOOM 2!', + 2 => 'XOOM MZ606', + 3 => 'Xoom Wifi', + 4 => 'Xoom LTE', + 5 => 'Xoom 3G', + 6 => 'XO Learning tablet', + 7 => '(XOLO )?[ABQX][0-9]{3,4}!!', + 8 => 'XOLO One', + 9 => 'XOLO One16', + 10 => 'XOLO One HD', + 11 => 'XOLO One LFC', + 12 => 'XOLO Play', + 13 => 'XOLO PLAY T1000', + 14 => 'XOLO T1000', + 15 => 'Xolo QC800', + ), + '@XP' => + array ( + 0 => 'Xperia Z Ultra', + 1 => 'XPRESS PRO', + 2 => 'Xperia!!', + 3 => '(Symphony|Xplorer)!!', + 4 => 'xPAD-70', + ), + '@XT' => + array ( + 0 => 'Xtreme X2', + 1 => 'XT751', + 2 => 'XT[0-9]{3,3}!!', + 3 => 'xt880b', + 4 => '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', + 5 => 'Xteam Smartpad 810c', + 6 => 'Xteam 4.8 Smartpad 810c', + 7 => 'XT[0-9]{3,4}!!', + 8 => 'Xtab1081HD', + 9 => 'Xtreme V10', + 10 => 'Xtreme V10i', + 11 => 'Xtreme V12', + 12 => 'Xtreme V15', + 13 => 'Xtreme V20', + 14 => 'Xtreme V21', + 15 => 'Xtreme V22', + 16 => 'Xtreme V25', + 17 => 'Xtreme-V30', + 18 => 'Xtreme V40i', + 19 => 'Xtreme V44', + 20 => 'xTAB-7X', + 21 => 'xTAB-9', + 22 => 'xTAB-70!', + 23 => 'xTAB-100!', + 24 => 'Xtouch X405', + 25 => 'Xtreamer Mobile AiKi', + 26 => 'Xtreamer Mobile AiKi a7*', + 27 => 'Xtreamer Mobile Aiki5s', + 28 => 'Xtreamer Joyz', + 29 => 'Xtreamer Wonder', + ), + '@XW' => + array ( + 0 => 'XW-I8', + ), + '@Y2' => + array ( + 0 => 'Y2', + ), + '@Y5' => + array ( + 0 => 'Y538', + ), + '@Y6' => + array ( + 0 => 'Y6 Max', + 1 => 'Y6 Piano', + ), + '@YD' => + array ( + 0 => 'YD201', + 1 => 'YD202', + 2 => 'YD203', + 3 => 'YD206', + ), + '@YE' => + array ( + 0 => 'Yellowstone', + 1 => '(Andy|Yezz)!!', + ), + '@YO' => + array ( + 0 => 'youwave custom', + 1 => 'YOGA Tablet!!', + ), + '@YP' => + array ( + 0 => 'YPY-72SIM', + 1 => 'YPY-73G', + 2 => 'Ypy 7 - TB07FTA', + 3 => 'YPY 07FTA', + 4 => 'YPY 07FTAB', + 5 => 'YPY 07FTAB PA', + 6 => 'YPY 07FTB', + 7 => 'YPY 07FTBF', + 8 => 'Ypy 7 - TB07STA', + 9 => 'YPY 07STB', + 10 => 'YPY 07STBF', + 11 => 'YPY 10FTA', + 12 => 'YPY10FTA', + 13 => 'YPY 10FTB', + 14 => 'YPY 10FTBF', + 15 => 'YPY 10STB', + 16 => 'YPY 10STBF', + 17 => 'YPY AB7D', + 18 => 'YPY AB7DC', + 19 => 'YPY AB10D', + 20 => 'YPY AB10DC', + 21 => 'YPY ABXD', + 22 => 'YPY J213', + 23 => 'YPY S350', + 24 => 'YPY S350 PLUS', + 25 => 'YPY S400', + 26 => 'YPY S405', + 27 => 'YPY S450', + 28 => 'YPY S460', + 29 => 'YPY S500', + 30 => 'YPY TQ7', + 31 => 'YP-G!!', + 32 => 'YP712', + ), + '@YQ' => + array ( + 0 => 'YQ601', + ), + '@YU' => + array ( + 0 => 'yukkabeach', + 1 => 'YU4711', + 2 => 'YU5010', + 3 => 'YU5010A', + 4 => 'YU5011', + 5 => 'YU5040', + 6 => 'YU5050', + 7 => 'YUREKA', + 8 => 'YU5200', + 9 => 'YUreka+', + 10 => 'YU5510', + 11 => 'YU5510A', + 12 => 'YU5530', + 13 => 'YU5551', + 14 => 'YU 6000', + 15 => 'YUSUN A7', + 16 => 'YUSUN A8', + 17 => 'YUSUN E98', + 18 => 'YUSUN L29', + 19 => 'YUSUN L63', + 20 => 'YUSUN L71', + 21 => 'YUSUN L88', + 22 => 'YUSUN LA2-T', + 23 => 'YUSUN LA2 T', + 24 => 'YUSUN LA2-T1', + 25 => 'YUSUN LA2 T1', + 26 => 'YUSUN LA2-W', + 27 => 'YUSUN LA2 W1', + 28 => 'YUSUN LA5-W', + 29 => 'YUSUN T22', + 30 => 'YUSUN-T22', + 31 => 'YUSUN T29', + 32 => 'YUSUN T30', + 33 => 'YUSUN T31', + 34 => 'YUSUN T35!', + 35 => 'YUSUN T50', + 36 => 'YUSUN T85', + 37 => 'YUSUN T808', + 38 => 'YUSUN W35', + 39 => 'YUSUN W90', + 40 => 'YUSUN W91', + 41 => 'YUSUN W306', + 42 => 'yusun W702', + 43 => 'YUSUN W706', + 44 => 'YUSUN W708', + 45 => 'YUSUN - W 800', + 46 => 'YUSUN--W 800', + 47 => 'YUSUN W808', + 48 => 'YUSUN -- W 900', + ), + '@YX' => + array ( + 0 => 'YX-YUSUN E80', + 1 => 'YX-YUSUN E89', + 2 => 'YX-YUSUN E96', + ), + '@Z0' => + array ( + 0 => 'Z002', + 1 => 'Z007', + 2 => 'Z008', + 3 => 'Z008D', + 4 => 'Z00A', + 5 => 'Z00AD', + 6 => 'Z00ADA', + 7 => 'Z00ADB', + 8 => 'Z00AS', + 9 => 'Z00D', + 10 => 'Z00ED', + 11 => 'Z00EDB', + 12 => 'Z00LD', + 13 => 'Z00LDC', + 14 => 'Z00LDD', + 15 => 'Z00MD', + 16 => 'Z00RD', + 17 => 'Z00TD', + 18 => 'Z00TDA', + 19 => 'Z00WD', + 20 => 'Z011D', + 21 => 'Z011DD', + 22 => 'Z00UD', + 23 => 'Z00UDA', + 24 => 'Z00UDB', + 25 => 'Z00UDC', + 26 => 'Z00UDH', + 27 => 'Z00SD', + 28 => 'Z00VD', + 29 => 'Z00XS', + 30 => 'Z00XSA', + 31 => 'Z00XSB', + 32 => 'Z010D', + 33 => 'Z010DA', + 34 => 'Z010DB', + 35 => 'Z010DD', + 36 => 'Z012D', + 37 => 'Z012DA', + 38 => 'Z012DB', + 39 => 'Z012DC', + 40 => 'Z012DE', + 41 => 'Z012S', + 42 => 'Z016D', + 43 => 'Z016S', + 44 => 'Z017D', + 45 => 'Z017DA', + 46 => 'Z017DB', + 47 => 'Z017DC', + 48 => 'Z01BD', + 49 => 'Z01BDA', + 50 => 'Z01BDB', + 51 => 'Z01BDC', + 52 => 'Z01BS', + 53 => 'Z01FD', + 54 => 'Z01GD', + 55 => 'Z01HD', + 56 => 'Z01HDA', + 57 => 'Z01KD', + 58 => 'Z01KDA', + 59 => 'Z01MDA', + 60 => 'Z00YD', + ), + '@Z1' => + array ( + 0 => '(BB )?Z10$!', + 1 => 'Z1-H39LW', + 2 => '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!', + 3 => 'Z1i', + ), + '@Z2' => + array ( + 0 => 'Z2 Plus', + 1 => 'Z2 Rio', + 2 => 'Z282 C91', + ), + '@Z3' => + array ( + 0 => '(BB )?Z30$!', + 1 => 'Z30Aire', + 2 => 'Z30Dart', + 3 => 'Z30Lite', + 4 => 'Z30PACE', + ), + '@Z4' => + array ( + 0 => 'Z4', + 1 => 'Z40Lite+', + 2 => 'Z40Pro', + 3 => 'Z4OPro', + 4 => 'Z40ProLite', + 5 => 'Z4OProLite', + 6 => 'Z40QStar', + 7 => 'Z41 AIRE', + 8 => 'Z41Aire', + 9 => 'Z41Lite+', + 10 => 'Z42 Nova', + 11 => 'Z45 Amaze', + 12 => 'Z45 Dazzle', + 13 => 'Z45 Nova', + 14 => 'Z45 Nova+', + 15 => 'Z45 Quad', + 16 => 'Z45Q Star', + 17 => 'Z45Q Star+', + 18 => 'Z4 mini', + ), + '@Z5' => + array ( + 0 => 'Z520e', + 1 => 'Z520m', + 2 => 'Z50 Nova', + 3 => 'Z50Pro', + 4 => 'Z50 Quad', + 5 => 'Z50Q Lite', + 6 => 'Z50Q Star', + 7 => 'Z51 blaze', + 8 => 'Z51 Nova', + 9 => 'Z51 Nova+', + 10 => 'Z51 PUNCH', + 11 => 'Z51 Quad', + 12 => 'Z51Q Star', + 13 => 'Z52 Inspire', + 14 => 'Z52 Thunder', + 15 => 'Z52 Thunder+', + ), + '@Z7' => + array ( + 0 => 'Z71', + 1 => 'Z710', + 2 => 'Z710e', + 3 => 'Z715e', + ), + '@ZA' => + array ( + 0 => 'Zaffire 785', + 1 => 'Zaffire 970', + 2 => 'ZA400', + 3 => 'ZA402', + 4 => 'ZA450', + 5 => 'ZA451', + 6 => 'ZA459', + 7 => 'ZA500', + 8 => 'ZA501', + 9 => 'ZA509', + 10 => 'ZA705', + 11 => 'ZA935', + 12 => 'ZA940', + 13 => 'ZA945', + 14 => 'ZA950', + 15 => 'ZA955', + 16 => 'ZA990', + 17 => 'ZA966', + 18 => 'ZA977', + 19 => 'ZA985', + 20 => 'ZA987', + ), + '@ZB' => + array ( + 0 => 'ZB551KL', + 1 => 'ZB500KG', + 2 => 'ZB500KL', + 3 => 'ZB501KL', + 4 => 'ZBOX-ID18', + 5 => 'ZBOX-ID81', + ), + '@ZC' => + array ( + 0 => 'ZC551KL', + 1 => 'ZC553KL', + 2 => 'ZC554KL', + ), + '@ZE' => + array ( + 0 => 'ZenWatch', + 1 => 'ZenWatch 2', + 2 => 'Zenith', + 3 => 'Zenfone 5 LTE', + 4 => 'ZenFone 2', + 5 => 'ZenFone 2E', + 6 => 'ZE520KL', + 7 => 'ZE550KL', + 8 => 'ZE552KL', + 9 => 'ZE553KL', + 10 => 'ZE554KL', + 11 => 'ZEN Touch 2', + 12 => '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', + 13 => 'ZEN 4.5', + 14 => 'ZEN 4.7', + 15 => 'ZEN 5+', + 16 => 'ZENITHINK C94!', + 17 => 'Zen PO neo', + 18 => 'ZEN U1', + 19 => 'ZEN U4', + 20 => 'ZEN U5', + 21 => 'ZEN 303 3G', + ), + '@ZI' => + array ( + 0 => 'Zii!!', + 1 => 'Zio P2', + 2 => 'Zio', + 3 => 'ZiiLABS ViewBook 730', + 4 => 'ZIGO EON5I', + 5 => 'Zigo Eon6i', + 6 => 'Zigo Eon7i', + 7 => 'Zigo Eon52i', + 8 => 'Zigo Eon 53', + 9 => 'Zigo Nebula6 9', + 10 => 'Zigo Nebula Tab 7.1', + 11 => 'Zigo N81', + 12 => 'Ziss Ranger HD', + 13 => 'Zilo', + ), + '@ZO' => + array ( + 0 => 'Zoom', + 1 => '(Zopo )?ZP ?[0-9]{3,3}!!', + ), + '@ZP' => + array ( + 0 => '(Zopo )?ZP ?[0-9]{3,3}!!', + ), + '@ZT' => + array ( + 0 => 'zt180', + 1 => 'ZTE A[0-9]{3,3}!!', + 2 => 'ZTE B[0-9]{3,3}!!', + 3 => 'ZTE BA[0-9]{3,3}!!', + 4 => 'ZTE BV0[0-9]{3,3}!!', + 5 => 'ZTE C[0-9]{3,3}!!', + 6 => 'ZTE C N[0-9]{3,3}!!', + 7 => 'ZTE C R[0-9]{3,3}!!', + 8 => 'ZTE C X[0-9]{3,3}!!', + 9 => 'ZTE ?G[0-9]{3,3}!!', + 10 => '(ZTE ?)?N[0-9]{3,3}!!', + 11 => '(ZXY-)?(ZTE )?N[0-9]{4,4}!!', + 12 => 'ZTE K813', + 13 => 'ZTE M[0-9]{3,3}!!', + 14 => 'ZTE P[0-9]{3,3}!!', + 15 => 'ZTE ?Q[0-9]{3,3}!!', + 16 => 'ZTE Q[0-9]!!', + 17 => 'ZTE R[0-9]{3,3}!!', + 18 => 'ZTE S[0-9]{3,3}!!', + 19 => 'ZTE T[0-9]!!', + 20 => 'ZTE T ?U[0-9]{3,3}!!', + 21 => '(ZTE ?)?U[0-9]{3,3}!!', + 22 => 'ZTE U N[0-9]{3,3}!!', + 23 => 'ZTE U[ \\(\\-]V[\\)\\-]?[0-9]{3,3}!!', + 24 => 'ZTE U X[0-9]{3,3}!!', + 25 => '(ZTE ?)?V[0-9]{3,3}[A-Z]!!', + 26 => '(ZTE ?)?V ?[0-9]{3,3}!!', + 27 => '(ZTE ?)?X[0-9]{3,3}!!', + 28 => '(ZTE )?Z[0-9]!!', + 29 => '(ZTE )?Blade!!', + 30 => 'ZTE Geek!!', + 31 => '(ZTE )?(Grand|Mimosa)!!', + 32 => '(ZTE )?Kis!!', + 33 => '(ZTE )?Racer!!', + 34 => '(ZTE )?Skate!!', + 35 => 'ZTE Libra', + 36 => 'ZTE LINK', + 37 => 'ZTE T T9', + 38 => 'ZTE V7073', + 39 => 'ZTE V9', + 40 => 'ZTE V9A', + 41 => 'ZTE C V9E', + 42 => 'ZTE V7273', + 43 => 'ZTE e-Learning PAD E8Q', + 44 => 'ZTE E10T', + 45 => 'ZTE E10Q', + 46 => 'ZTE R22', + 47 => 'ZTE R83', + 48 => 'ZTE R84', + 49 => 'ZTE V10', + 50 => 'ZTE V70', + 51 => 'ZTE V72', + 52 => 'ZTE V72A', + 53 => 'ZTE K88', + 54 => 'ZTE K97', + 55 => 'ZTE T T98', + 56 => 'ZTE TT98', + 57 => 'ZTE Crescent', + 58 => 'ZTE JOE', + 59 => 'ZTE 975', + 60 => 'ZTE Tureis', + 61 => 'ZTE CLARO Q1', + 62 => 'ZTE LEO M1', + 63 => 'ZTE LeoM1', + 64 => 'ZTE LEO S1', + 65 => 'ZTE LEO S2', + 66 => 'ZTE LEO Q1', + 67 => 'ZTE LEO Q2', + 68 => 'ZTE GV821', + 69 => 'ZTE-860U', + 70 => 'ZTE Roamer', + 71 => 'ZTE V9800', + 72 => 'ZTE U9810', + 73 => 'ZTE U9815', + 74 => 'ZTE V9815', + 75 => 'ZTE Grand Memo LTE', + 76 => 'ZTE V9820', + 77 => 'ZTE Nubia Z7', + 78 => 'ZTE Nubia X6', + 79 => 'ZTE Switch X1', + 80 => 'ZTE Switch X2', + 81 => 'ZTE Maxx', + 82 => 'ZTE Fit 4G Smart', + 83 => 'ZTE N5', + 84 => 'ZTE N5L', + 85 => 'ZTE N5S', + 86 => 'ZTE U5', + 87 => 'ZTE U5S', + 88 => 'ZTEU5S', + 89 => 'ZTE V5S', + 90 => 'ZTEV5S', + 91 => 'ZTE A2015', + 92 => 'ZTE A2016', + 93 => 'ZTE Axon 7', + 94 => 'ZTE A2017', + 95 => 'ZTE A2017G', + 96 => 'ZTE A2017U', + 97 => 'ZTE B2015', + 98 => 'ZTE B2016', + 99 => 'ZTE B2017', + 100 => 'ZTE B2017G', + 101 => 'ZTE B2019G', + 102 => 'ZTE C2016', + 103 => 'ZTE C2017', + 104 => 'ZTE STAR', + 105 => 'ZTE Star 1', + 106 => 'ZTE S2004', + 107 => 'ZTE S2005', + 108 => 'ZTE S2007', + 109 => 'ZTE S2010', + 110 => 'ZTE S2014', + 111 => 'ZTE U9180', + 112 => 'ZTE U9370', + 113 => 'ZTE V6500', + 114 => 'ZTE V8110', + 115 => 'ZTE B860A', + 116 => 'ZTE B860AV1', + 117 => 'ZTE W1010', + ), + '@ZU' => + array ( + 0 => 'ZUK Z1', + 1 => 'ZUK Z2', + 2 => 'ZUK Z2131', + 3 => 'ZUK Z2151', + 4 => 'ZUK Z2 Plus', + 5 => 'ZUK Z2132', + 6 => 'ZUK Z2 Pro', + 7 => 'ZUK Z2121', + 8 => 'ZUK Z2122', + 9 => 'ZUK Edge', + ), + '@ZV' => + array ( + 0 => 'ZVII', + ), + '@ZX' => + array ( + 0 => '(ZXY-)?(ZTE )?N[0-9]{4,4}!!', + 1 => '(ZXY-)?NX[0-9]{2,3}!!', + 2 => 'ZXY-ZTE-C X920', + 3 => 'ZXY-ZTE V6700', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-asha.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-asha.php new file mode 100644 index 0000000..47fdbdc --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-asha.php @@ -0,0 +1,24 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$ASHA_INDEX = array ( + '@50' => + array ( + 0 => 500, + 1 => 501, + 2 => '501s', + 3 => '501.1', + 4 => '501.2', + 5 => 502, + 6 => 503, + 7 => '503s', + ), + '@AS' => + array ( + 0 => 'Asha230SingleSIM', + 1 => 'Asha230DualSIM', + 2 => 'Asha500SingleSIM', + 3 => 'Asha500DualSIM', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-bada.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-bada.php new file mode 100644 index 0000000..c601c7e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-bada.php @@ -0,0 +1,27 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$BADA_INDEX = array ( + '@GT' => + array ( + 0 => 'GT- ?S52(50|53)!', + 1 => 'GT-S53(30|33)!', + 2 => 'GT-S5380!', + 3 => 'GT-S57(50|53)!', + 4 => 'GT-S57(80)!', + 5 => 'GT-S72(30|33)!', + 6 => 'GT-S7250!', + 7 => 'GT-S8500!', + 8 => 'GT- ?S8530!', + 9 => 'GT- ?S8600!', + ), + '@SC' => + array ( + 0 => 'SCH-F859!', + ), + '@SH' => + array ( + 0 => 'SHW-M410', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-brew.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-brew.php new file mode 100644 index 0000000..9938341 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-brew.php @@ -0,0 +1,180 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$BREW_INDEX = array ( + '@AX' => + array ( + 0 => 'AX8575', + ), + '@CD' => + array ( + 0 => 'CDM8992', + 1 => 'CDM8999', + ), + '@CO' => + array ( + 0 => 'Coolpad D508', + 1 => 'Coolpad D510', + 2 => 'Coolpad E600', + ), + '@E4' => + array ( + 0 => 'E4255', + ), + '@EX' => + array ( + 0 => 'EX200!', + ), + '@HS' => + array ( + 0 => 'HS-E316!', + ), + '@HU' => + array ( + 0 => 'HUAWEI U526', + 1 => 'HUAWEI U528', + 2 => 'HUAWEI U2801!', + 3 => 'HUAWEI U5200!', + 4 => 'HUAWEI U5300!', + 5 => 'HUAWEI U5310!', + 6 => 'HUAWEI U6150!', + ), + '@LG' => + array ( + 0 => 'LG272', + 1 => 'LG510', + 2 => 'LGE AX840', + 3 => 'LGE LG700', + 4 => 'LGE LG840', + 5 => 'LGE UX700', + 6 => 'LGE UX840', + 7 => 'LGE VX11K', + 8 => 'LGE VX8575', + 9 => 'LGE VX9700', + ), + '@LN' => + array ( + 0 => 'LN240', + 1 => 'LN510', + ), + '@LX' => + array ( + 0 => 'LX610', + ), + '@M2' => + array ( + 0 => 'M260!', + ), + '@M3' => + array ( + 0 => 'M350!', + 1 => 'M370!', + 2 => 'M380!', + 3 => 'M390!', + ), + '@M5' => + array ( + 0 => 'M550!', + 1 => 'M560!', + ), + '@NO' => + array ( + 0 => 'NOKIA 7705', + ), + '@P5' => + array ( + 0 => 'P5000', + ), + '@P6' => + array ( + 0 => 'P6020', + 1 => 'P6030', + ), + '@PA' => + array ( + 0 => 'Pantech CDM8992!', + 1 => 'Pantech CDM8999!', + 2 => 'Pantech TXT8045!', + ), + '@PL' => + array ( + 0 => 'PLS M330', + ), + '@S2' => + array ( + 0 => 'S2151!', + ), + '@SA' => + array ( + 0 => 'sam-r631', + 1 => 'sam-r640', + 2 => 'sam-r900', + ), + '@SC' => + array ( + 0 => 'SCH-B309!', + 1 => 'SCH-F839', + 2 => 'SCH-M519!', + 3 => 'SCH-S559!', + 4 => 'SCH-S579!', + 5 => 'SCH-U380!', + 6 => 'SCH-U485', + 7 => 'SCH-U640!', + 8 => 'SCH-U660!', + 9 => 'SCH-U680!', + 10 => 'SCH-U750!', + 11 => 'SCH-U820!', + 12 => 'SCH-U960!', + 13 => 'SCH-W709!', + 14 => 'SCH-W799!', + 15 => 'SCP-3810', + 16 => 'SCP3810', + 17 => 'SCP-6750', + 18 => 'SCP6760', + 19 => 'SCP-6760', + 20 => 'SCP6780', + ), + '@SG' => + array ( + 0 => 'SGH-A937!', + 1 => 'SGH-A947!', + ), + '@SM' => + array ( + 0 => 'SM-B690V', + ), + '@SP' => + array ( + 0 => 'SPH M330', + 1 => 'SPH-M570', + 2 => 'Sprint M850', + ), + '@TX' => + array ( + 0 => 'TXT8045', + ), + '@VN' => + array ( + 0 => 'VN170!', + 1 => 'VN250!', + 2 => 'VN271!', + 3 => 'VN280!', + 4 => 'VN360!', + 5 => 'VN370!', + 6 => 'VN530', + ), + '@VX' => + array ( + 0 => 'VX5600!', + 1 => 'VX9200!', + 2 => 'VX9600!', + 3 => 'VX11000!', + ), + '@ZT' => + array ( + 0 => 'ZTE F-450!', + 1 => 'ZTE R516!', + 2 => 'ZTE R518!', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-feature.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-feature.php new file mode 100644 index 0000000..e8da01b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-feature.php @@ -0,0 +1,231 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$FEATURE_INDEX = array ( + '@AM' => + array ( + 0 => 'Amstrad Gamma', + ), + '@BE' => + array ( + 0 => 'Benefon Q', + ), + '@CK' => + array ( + 0 => 'CK13[ai]?$!', + 1 => 'CK15[ai]?$!', + ), + '@CO' => + array ( + 0 => 'COCOON', + ), + '@EF' => + array ( + 0 => 'EF71', + ), + '@EX' => + array ( + 0 => 'EX115', + 1 => 'EX118', + 2 => 'EX119', + 3 => 'EX128', + 4 => 'EX225', + 5 => 'EX226', + 6 => 'EX430', + ), + '@F1' => + array ( + 0 => 'F100[ai]?$!', + ), + '@GM' => + array ( + 0 => 'GM360', + ), + '@GR' => + array ( + 0 => 'GR700', + ), + '@GS' => + array ( + 0 => 'GS290', + 1 => 'GS500', + ), + '@GT' => + array ( + 0 => 'GT500!', + 1 => 'GT550', + 2 => 'GT-B2710', + 3 => 'GT-B3210', + 4 => 'GT-B3313', + 5 => 'GT-C3200', + 6 => 'GT-C3222', + 7 => 'GT-C3322', + 8 => 'GT-C3500', + 9 => 'GT-C5010!', + 10 => 'GT-E1282!', + 11 => 'GT-E2152', + 12 => 'GT-E2220', + 13 => 'GT-E2222', + 14 => 'GT-E2202', + 15 => 'GT-E2250', + 16 => 'GT-E2252', + 17 => 'GT-E3213', + 18 => 'GT-E3309I', + 19 => 'GT-M8910', + 20 => 'GT-S3332', + 21 => 'GT-S33(50|53)!', + 22 => 'GT-S35(70|72)!', + 23 => 'GT-S5229', + 24 => 'GT-S5270!', + 25 => 'GT-S5610!', + 26 => 'GT-I6410!', + 27 => 'GT-I8320!', + 28 => 'GT-I8330!', + ), + '@J1' => + array ( + 0 => 'J105[ai]?$!', + 1 => 'J108[ai]?$!', + 2 => 'J10(i2?)?$!', + ), + '@J2' => + array ( + 0 => 'J20[ai]?$!', + ), + '@K6' => + array ( + 0 => 'K612', + ), + '@KC' => + array ( + 0 => 'KC910i', + ), + '@KP' => + array ( + 0 => 'KP500!', + 1 => 'KP570!', + ), + '@KU' => + array ( + 0 => 'KU990i', + ), + '@LG' => + array ( + 0 => 'LG-KU380', + 1 => 'LG-KU580', + 2 => 'LG-KU990', + ), + '@LI' => + array ( + 0 => 'Lightpipe', + ), + '@M3' => + array ( + 0 => 'm3510c', + ), + '@MO' => + array ( + 0 => 'MOTOQA1', + ), + '@P7' => + array ( + 0 => 'P7000', + ), + '@P9' => + array ( + 0 => 'P9020', + 1 => 'P9050', + ), + '@PL' => + array ( + 0 => 'PLS6600KJ', + ), + '@PM' => + array ( + 0 => 'PM-8200', + ), + '@S7' => + array ( + 0 => 'S7350', + ), + '@SA' => + array ( + 0 => 'sam-r560', + ), + '@SC' => + array ( + 0 => 'SCP-5300', + 1 => 'SCP-5500', + 2 => 'SCP-6600', + 3 => 'SCH-W169', + 4 => 'SCH-W279', + ), + '@SE' => + array ( + 0 => 'Sendo Wap', + ), + '@SG' => + array ( + 0 => 'SGH-A667', + 1 => 'SGH-A697', + 2 => 'SGH-A877', + 3 => 'SGH-A927', + 4 => 'SGH-A997', + 5 => 'SGH-D880', + 6 => 'SGH-E250i', + 7 => 'SGH-E250V', + 8 => 'SGH-G600', + 9 => 'SGH-J700i', + 10 => 'SGH-J700V', + 11 => 'SGH-M200', + 12 => 'SGH-S150G', + 13 => 'SGH-S390G', + 14 => 'SGH-T189N', + 15 => 'SGHX660V', + 16 => 'SGH-Z107!', + 17 => 'SGH-Z130!', + 18 => 'SGH-Z500!', + ), + '@SM' => + array ( + 0 => 'SM-B313E', + 1 => 'SM-B350E', + 2 => 'SM-B360E', + 3 => 'SM-B780(A|W)!', + ), + '@TE' => + array ( + 0 => 'tecnot36', + ), + '@U1' => + array ( + 0 => 'U100[ai]?$!', + 1 => 'U10[ai]?$!', + ), + '@VO' => + array ( + 0 => 'Vodafone 575', + ), + '@W1' => + array ( + 0 => 'W100i?$!', + 1 => 'W150i?$!', + ), + '@W2' => + array ( + 0 => 'W20i?$!', + ), + '@WI' => + array ( + 0 => 'WIDETEL WCX150', + ), + '@WT' => + array ( + 0 => 'WT13i$!', + ), + '@X5' => + array ( + 0 => 'X5i$!', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-firefoxos.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-firefoxos.php new file mode 100644 index 0000000..422a011 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-firefoxos.php @@ -0,0 +1,72 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$FIREFOXOS_INDEX = array ( + '@' => + array ( + 0 => '.LYF\\/.F30C!', + 1 => '.LYF\\/.F101K!', + ), + '@AL' => + array ( + 0 => 'ALCATEL ONE TOUCH FIRE', + 1 => 'ALCATEL ONE TOUCH 4012A', + 2 => 'ALCATEL ONE TOUCH 4012X', + 3 => 'ALCATELOneTouch4012A!', + 4 => 'ALCATELOneTouch4012X!', + 5 => 'ALCATELOneTouch4019A!', + 6 => 'ALCATELOneTouch4019X!', + 7 => 'ALCATELOneTouch4020D!', + 8 => 'ALCATELOneTouch4022!', + 9 => 'ALCATELOneTouch4023!', + 10 => 'ALCATELOneTouch6015X!', + 11 => 'ALCATEL4044[MNOTVW]!', + 12 => 'ALCATEL4044C!', + ), + '@HU' => + array ( + 0 => 'HUAWEI Ascend Y300-F1', + 1 => 'HUAWEIY300-F1', + ), + '@LG' => + array ( + 0 => 'LG-D3(00|01)!', + 1 => 'LGL25', + ), + '@LY' => + array ( + 0 => 'LYF\\/F30C!', + 1 => 'LYF\\/F41T!', + 2 => 'LYF\\/F50Y!', + 3 => 'LYF\\/F61F!', + 4 => 'LYF\\/F81E!', + 5 => 'LYF\\/F90M!', + 6 => 'LYF\\/F101K!', + ), + '@MA' => + array ( + 0 => 'madai', + ), + '@ON' => + array ( + 0 => 'OneTouch4019A', + ), + '@OP' => + array ( + 0 => 'OPEN', + 1 => 'OpenC', + 2 => 'Open C', + 3 => 'OPENC2', + 4 => 'OPEN2', + ), + '@OR' => + array ( + 0 => 'Orange KLIF', + 1 => 'Orange KLIFD', + ), + '@ZT' => + array ( + 0 => 'ZTEOPEN', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-kddi.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-kddi.php new file mode 100644 index 0000000..044fc9b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-kddi.php @@ -0,0 +1,393 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$KDDI_INDEX = array ( + '@CA' => + array ( + 0 => 'CA11', + 1 => 'CA12', + 2 => 'CA13', + 3 => 'CA14', + 4 => 'CA21', + 5 => 'CA22', + 6 => 'CA23', + 7 => 'CA24', + 8 => 'CA25', + 9 => 'CA26', + 10 => 'CA27', + 11 => 'CA28', + 12 => 'CA31', + 13 => 'CA32', + 14 => 'CA33', + 15 => 'CA34', + 16 => 'CA35', + 17 => 'CA36', + 18 => 'CA37', + 19 => 'CA38', + 20 => 'CA39', + 21 => 'CA3A', + 22 => 'CA3B', + 23 => 'CA3C', + 24 => 'CA3D', + 25 => 'CA3E', + 26 => 'CA3F', + 27 => 'CA3G', + 28 => 'CA3H', + 29 => 'CA3I', + 30 => 'CA3J', + 31 => 'CA3K', + ), + '@DN' => + array ( + 0 => 'DN01', + 1 => 'DN11', + ), + '@ER' => + array ( + 0 => 'ERK0', + ), + '@FJ' => + array ( + 0 => 'FJ31', + ), + '@HI' => + array ( + 0 => 'HI01', + 1 => 'HI02', + 2 => 'HI11', + 3 => 'HI12', + 4 => 'HI13', + 5 => 'HI14', + 6 => 'HI21', + 7 => 'HI23', + 8 => 'HI24', + 9 => 'HI31', + 10 => 'HI32', + 11 => 'HI33', + 12 => 'HI34', + 13 => 'HI35', + 14 => 'HI36', + 15 => 'HI37', + 16 => 'HI38', + 17 => 'HI39', + 18 => 'HI3A', + 19 => 'HI3B', + 20 => 'HI3C', + 21 => 'HI3D', + 22 => 'HI3E', + 23 => 'HI3F', + 24 => 'HI3G', + 25 => 'HI3H', + ), + '@KC' => + array ( + 0 => 'KC3Q', + 1 => 'KC3S', + 2 => 'KC3V', + 3 => 'KC11', + 4 => 'KC12', + 5 => 'KC13', + 6 => 'KC14', + 7 => 'KC15', + 8 => 'KC21', + 9 => 'KC22', + 10 => 'KC23', + 11 => 'KC24', + 12 => 'KC25', + 13 => 'KC26', + 14 => 'KC27', + 15 => 'KC28', + 16 => 'KC29', + 17 => 'KC2A', + 18 => 'KC31', + 19 => 'KC32', + 20 => 'KC33', + 21 => 'KC34', + 22 => 'KC35', + 23 => 'KC36', + 24 => 'KC37', + 25 => 'KC38', + 26 => 'KC39', + 27 => 'KC3A', + 28 => 'KC3B', + 29 => 'KC3D', + 30 => 'KC3E', + 31 => 'KC3G', + 32 => 'KC3H', + 33 => 'KC3I', + 34 => 'KC3K', + 35 => 'KC3M', + 36 => 'KC3N', + 37 => 'KC3O', + 38 => 'KC3P', + 39 => 'KC3R', + 40 => 'KC3T', + 41 => 'KC3U', + 42 => 'KC3W', + 43 => 'KC3X', + 44 => 'KC3Y', + 45 => 'KC3Z', + 46 => 'KC41', + 47 => 'KC42', + 48 => 'KC43', + 49 => 'KC44', + 50 => 'KC45', + 51 => 'KC46', + 52 => 'KC47', + 53 => 'KC48', + 54 => 'KC4A', + 55 => 'KCC1', + 56 => 'KCC2', + 57 => 'KCI1', + 58 => 'KCI2', + 59 => 'KCT1', + 60 => 'KCT2', + 61 => 'KCT3', + 62 => 'KCT4', + 63 => 'KCT5', + 64 => 'KCT6', + 65 => 'KCT7', + 66 => 'KCT8', + 67 => 'KCT9', + 68 => 'KCTA', + 69 => 'KCTB', + 70 => 'KCTC', + ), + '@MA' => + array ( + 0 => 'MA11', + 1 => 'MA12', + 2 => 'MA13', + 3 => 'MA21', + 4 => 'MA31', + 5 => 'MA32', + 6 => 'MA33', + 7 => 'MA34', + 8 => 'MA35', + 9 => 'MAC1', + 10 => 'MAC2', + 11 => 'MAI1', + 12 => 'MAI2', + 13 => 'MAT1', + 14 => 'MAT2', + 15 => 'MAT3', + ), + '@MI' => + array ( + 0 => 'MIT1', + ), + '@PT' => + array ( + 0 => 'PT21', + 1 => 'PT23', + 2 => 'PT33', + 3 => 'PT34', + 4 => 'PT35', + 5 => 'PT36', + ), + '@SA' => + array ( + 0 => 'SA21', + 1 => 'SA22', + 2 => 'SA24', + 3 => 'SA25', + 4 => 'SA26', + 5 => 'SA27', + 6 => 'SA28', + 7 => 'SA29', + 8 => 'SA2A', + 9 => 'SA31', + 10 => 'SA32', + 11 => 'SA33', + 12 => 'SA34', + 13 => 'SA35', + 14 => 'SA36', + 15 => 'SA37', + 16 => 'SA38', + 17 => 'SA39', + 18 => 'SA3A', + 19 => 'SA3B', + 20 => 'SA3C', + 21 => 'SA3D', + 22 => 'SA3E', + ), + '@SH' => + array ( + 0 => 'SH31', + 1 => 'SH32', + 2 => 'SH33', + 3 => 'SH34', + 4 => 'SH35', + 5 => 'SH36', + 6 => 'SH37', + 7 => 'SH38', + 8 => 'SH39', + 9 => 'SH3A', + 10 => 'SH3B', + 11 => 'SH3C', + 12 => 'SH3D', + 13 => 'SH3E', + 14 => 'SH3F', + 15 => 'SH3G', + 16 => 'SH3H', + 17 => 'SH3I', + 18 => 'SH3J', + 19 => 'SH3K', + 20 => 'SH3L', + ), + '@SN' => + array ( + 0 => 'SN3K', + 1 => 'SN3T', + 2 => 'SN11', + 3 => 'SN13', + 4 => 'SN14', + 5 => 'SN15', + 6 => 'SN16', + 7 => 'SN17', + 8 => 'SN21', + 9 => 'SN22', + 10 => 'SN23', + 11 => 'SN24', + 12 => 'SN25', + 13 => 'SN26', + 14 => 'SN27', + 15 => 'SN28', + 16 => 'SN29', + 17 => 'SN31', + 18 => 'SN32', + 19 => 'SN33', + 20 => 'SN34', + 21 => 'SN35', + 22 => 'SN36', + 23 => 'SN37', + 24 => 'SN38', + 25 => 'SN39', + 26 => 'SN3A', + 27 => 'SN3B', + 28 => 'SN3C', + 29 => 'SN3D', + 30 => 'SN3E', + 31 => 'SN3F', + 32 => 'SN3G', + 33 => 'SN3H', + 34 => 'SN3I', + 35 => 'SN3J', + 36 => 'SN3L', + 37 => 'SN3M', + 38 => 'SN3N', + 39 => 'SN3O', + 40 => 'SN3P', + 41 => 'SN3Q', + 42 => 'SN3R', + 43 => 'SN3S', + 44 => 'SN3U', + 45 => 'SN3V', + ), + '@ST' => + array ( + 0 => 'ST22', + 1 => 'ST33', + 2 => 'ST11', + 3 => 'ST12', + 4 => 'ST13', + 5 => 'ST14', + 6 => 'ST21', + 7 => 'ST23', + 8 => 'ST24', + 9 => 'ST25', + 10 => 'ST26', + 11 => 'ST27', + 12 => 'ST28', + 13 => 'ST29', + 14 => 'ST2A', + 15 => 'ST2C', + 16 => 'ST2D', + 17 => 'ST31', + 18 => 'ST32', + 19 => 'ST34', + ), + '@SY' => + array ( + 0 => 'SY12', + 1 => 'SY13', + 2 => 'SY14', + 3 => 'SY15', + 4 => 'SYC1', + 5 => 'SYT1', + 6 => 'SYT2', + 7 => 'SYT3', + 8 => 'SYT4', + 9 => 'SY01', + 10 => 'SY02', + 11 => 'SY03', + 12 => 'SY11', + ), + '@TS' => + array ( + 0 => 'TS3Q', + 1 => 'TS3U', + 2 => 'TS3W', + 3 => 'TS01', + 4 => 'TS11', + 5 => 'TS12', + 6 => 'TS13', + 7 => 'TS14', + 8 => 'TS21', + 9 => 'TS22', + 10 => 'TS23', + 11 => 'TS24', + 12 => 'TS25', + 13 => 'TS26', + 14 => 'TS27', + 15 => 'TS28', + 16 => 'TS29', + 17 => 'TS2A', + 18 => 'TS2B', + 19 => 'TS2C', + 20 => 'TS2D', + 21 => 'TS2E', + 22 => 'TS31', + 23 => 'TS32', + 24 => 'TS33', + 25 => 'TS34', + 26 => 'TS35', + 27 => 'TS36', + 28 => 'TS37', + 29 => 'TS38', + 30 => 'TS39', + 31 => 'TS3A', + 32 => 'TS3B', + 33 => 'TS3C', + 34 => 'TS3D', + 35 => 'TS3E', + 36 => 'TS3G', + 37 => 'TS3H', + 38 => 'TS3I', + 39 => 'TS3J', + 40 => 'TS3K', + 41 => 'TS3L', + 42 => 'TS3M', + 43 => 'TS3N', + 44 => 'TS3O', + 45 => 'TS3P', + 46 => 'TS3R', + 47 => 'TS3S', + 48 => 'TS3T', + 49 => 'TS3V', + 50 => 'TS3X', + 51 => 'TS3Y', + 52 => 'TS3Z', + 53 => 'TS41', + 54 => 'TSC1', + 55 => 'TSI1', + 56 => 'TST1', + 57 => 'TST2', + 58 => 'TST3', + 59 => 'TST4', + 60 => 'TST5', + 61 => 'TST6', + 62 => 'TST7', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-palmos.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-palmos.php new file mode 100644 index 0000000..3fed398 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-palmos.php @@ -0,0 +1,115 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$PALMOS_INDEX = array ( + '@AC' => + array ( + 0 => 'acer-momo', + 1 => 'acer-coco', + 2 => 'Acea-MZ01', + 3 => 'Acea-PD01', + ), + '@GR' => + array ( + 0 => 'grmn-3200', + 1 => 'grmn-3600', + 2 => 'grmn-3700', + ), + '@GS' => + array ( + 0 => 'gsRl-zicn', + 1 => 'gsRl-zcn2', + 2 => 'gsRl-zcn5', + ), + '@HS' => + array ( + 0 => 'hspr-H101', + 1 => 'hspr-H102', + ), + '@KW' => + array ( + 0 => 'kwc.-7135', + ), + '@PA' => + array ( + 0 => 'Palm-D061', + 1 => 'Palm-D062', + 2 => 'Palm-TunX', + 3 => 'Palm-stuj', + 4 => 'Palm-hbbs', + 5 => 'Palm-trnd', + 6 => 'Palm-ecty', + 7 => 'Palm-lith', + 8 => 'Palm-sky1', + 9 => 'Palm-D053', + 10 => 'Palm-D052', + 11 => 'Palm-D060', + 12 => 'Palm-MT64', + 13 => 'Palm-Cct1', + 14 => 'Palm-Zir4', + 15 => 'Palm-Frg1', + 16 => 'Palm-Frg2', + 17 => 'Palm-Arz1', + 18 => 'Palm-TnT5', + 19 => 'Palm-atc1', + 20 => 'Palm-D050', + 21 => 'Palm-Cubs', + 22 => 'Palm-Zi21', + 23 => 'Palm-D051', + 24 => 'Palm-Zi22', + 25 => 'Palm-Zpth', + 26 => 'Palm-Zi72', + ), + '@QC' => + array ( + 0 => 'qcom-qc20', + ), + '@SM' => + array ( + 0 => 'smsn-phix', + 1 => 'smsn-Phx2', + 2 => 'smsn-blch', + 3 => 'smsn-BLFM', + 4 => 'smsn-glxy', + ), + '@SO' => + array ( + 0 => 'sony-ystn', + 1 => 'sony-ysmt', + 2 => 'sony-ysm2', + 3 => 'sony-nsca', + 4 => 'sony-nsc2', + 5 => 'sony-vnce', + 6 => 'sony-mdna', + 7 => 'sony-npls', + 8 => 'sony-rdwd', + 9 => 'sony-crdb', + 10 => 'sony-tldo', + 11 => 'sony-mdrd', + 12 => 'sony-grnd', + 13 => 'sony-frta', + 14 => 'sony-cocs', + 15 => 'sony-glps', + 16 => 'sony-mcnd', + 17 => 'sony-vrna', + 18 => 'sony-atom', + 19 => 'sony-goha', + 20 => 'sony-leia', + 21 => 'sony-hwai', + 22 => 'sony-goku', + 23 => 'sony-luke', + 24 => 'sony-amno', + 25 => 'sony-prmr', + 26 => 'sony-ancy', + ), + '@TP' => + array ( + 0 => 'Tpwv-Rdog', + ), + '@TR' => + array ( + 0 => 'trgp-trg1', + 1 => 'trgp-trg2', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s30plus.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s30plus.php new file mode 100644 index 0000000..75b0dfd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s30plus.php @@ -0,0 +1,20 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$S30PLUS_INDEX = array ( + '@21' => + array ( + 0 => 215, + ), + '@22' => + array ( + 0 => 220, + 1 => 222, + 2 => 225, + ), + '@23' => + array ( + 0 => 230, + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s40.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s40.php new file mode 100644 index 0000000..8ec1e7a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-s40.php @@ -0,0 +1,249 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$S40_INDEX = array ( + '@10' => + array ( + 0 => 109, + ), + '@11' => + array ( + 0 => 110, + 1 => 111, + 2 => '111.1', + 3 => 112, + 4 => 114, + ), + '@16' => + array ( + 0 => '1682c', + ), + '@20' => + array ( + 0 => 200, + 1 => 201, + 2 => 202, + 3 => 203, + 4 => 205, + 5 => '205.1', + 6 => '205.3', + 7 => 206, + 8 => '206.1', + 9 => 208, + 10 => '208.1', + 11 => '208.2', + 12 => '208.3', + 13 => '208.4', + 14 => 2055, + 15 => 2060, + ), + '@21' => + array ( + 0 => 210, + 1 => '210.2', + 2 => '210.3', + 3 => '210.4', + 4 => '210.5', + ), + '@22' => + array ( + 0 => '2220s!', + ), + '@23' => + array ( + 0 => '2320c!', + 1 => '2322c!', + 2 => '2323c!', + 3 => '2330c!', + ), + '@26' => + array ( + 0 => '2600c!', + 1 => '2680s!', + 2 => 2690, + 3 => 2692, + ), + '@27' => + array ( + 0 => '2700c!', + 1 => '2710c', + 2 => '2710c-2', + 3 => '2720a!', + 4 => '2730c!', + ), + '@30' => + array ( + 0 => 300, + 1 => 301, + 2 => '301.1', + 3 => 302, + 4 => 303, + 5 => 305, + 6 => 306, + 7 => 308, + 8 => 309, + 9 => 3020, + ), + '@31' => + array ( + 0 => 310, + 1 => 311, + 2 => '3109c', + 3 => '3110c', + 4 => '3120c', + 5 => '3120classic', + ), + '@32' => + array ( + 0 => '3208c', + ), + '@35' => + array ( + 0 => '3500c', + 1 => '3555b', + ), + '@36' => + array ( + 0 => '3600s', + 1 => '3610a', + ), + '@37' => + array ( + 0 => '3710fold', + 1 => '3720c', + ), + '@50' => + array ( + 0 => '5000!', + ), + '@51' => + array ( + 0 => 515, + 1 => '515.2', + 2 => '5130!', + 3 => '5130c!', + 4 => 5132, + ), + '@52' => + array ( + 0 => '5200!', + 1 => '5220!', + ), + '@53' => + array ( + 0 => '5300!', + 1 => '5310!', + 2 => 5330, + 3 => '5330-1d', + ), + '@56' => + array ( + 0 => '5610d!', + ), + '@60' => + array ( + 0 => '6070!', + ), + '@62' => + array ( + 0 => '6208c', + 1 => '6212c', + 2 => '6260s!', + 3 => '6230i!', + 4 => 6233, + 5 => 6234, + 6 => '6263!', + 7 => 6280, + ), + '@63' => + array ( + 0 => 6300, + 1 => '6300i', + 2 => 6301, + 3 => '6303c', + 4 => '6303classic', + 5 => '6303iclassic', + 6 => '6303ci', + 7 => 6350, + ), + '@65' => + array ( + 0 => '6500s!', + ), + '@66' => + array ( + 0 => '6600f!', + 1 => '6600s!', + 2 => '6600i!', + ), + '@67' => + array ( + 0 => '6700c!', + 1 => '6750c', + ), + '@70' => + array ( + 0 => '7070!', + ), + '@71' => + array ( + 0 => '7100s!', + ), + '@72' => + array ( + 0 => '7210s!', + 1 => '7210Supernova!', + 2 => '7230!', + ), + '@73' => + array ( + 0 => '7310c!', + ), + '@75' => + array ( + 0 => 7500, + 1 => '7510Supernova!', + ), + '@76' => + array ( + 0 => '7610Supernova!', + ), + '@88' => + array ( + 0 => '8800!', + ), + '@C1' => + array ( + 0 => 'C1-01!', + 1 => 'C1-02!', + 2 => 'C1-03!', + ), + '@C2' => + array ( + 0 => 'C2-00!', + 1 => 'C2-01!', + 2 => 'C2-02!', + 3 => 'C2-03!', + 4 => 'C2-05!', + 5 => 'C2-06!', + ), + '@C3' => + array ( + 0 => 'C3-00!', + 1 => 'C3-01!', + ), + '@X2' => + array ( + 0 => 'X2-00!', + 1 => 'X2-01!', + 2 => 'X2-02!', + 3 => 'X2-03!', + 4 => 'X2-05!', + ), + '@X3' => + array ( + 0 => 'X3-00!', + 1 => 'X3-02!', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-symbian.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-symbian.php new file mode 100644 index 0000000..769ec1a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-symbian.php @@ -0,0 +1,344 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$SYMBIAN_INDEX = array ( + '@' => + array ( + 0 => '(?i)U1(a|i|iv)?$!', + 1 => '(?i)U5(a|i|iv)?$!', + 2 => '(?i)U8(a|i)?$!', + ), + '@32' => + array ( + 0 => 3230, + 1 => 3250, + ), + '@36' => + array ( + 0 => 3650, + 1 => 3660, + ), + '@50' => + array ( + 0 => 500, + ), + '@52' => + array ( + 0 => 5228, + 1 => '5233!', + 2 => '5230!', + 3 => 5232, + 4 => '5235!', + 5 => 5236, + 6 => 5238, + 7 => 5250, + ), + '@53' => + array ( + 0 => '5320!', + ), + '@55' => + array ( + 0 => '5500d!', + 1 => '5530!', + ), + '@56' => + array ( + 0 => '5630!', + ), + '@57' => + array ( + 0 => '5700!', + 1 => '5730!', + ), + '@58' => + array ( + 0 => '5800!', + ), + '@60' => + array ( + 0 => 600, + 1 => 603, + ), + '@61' => + array ( + 0 => '6110Navigator', + 1 => '6120c!', + 2 => '6121c!', + 3 => '6122c!', + 4 => '6124c', + ), + '@62' => + array ( + 0 => '6210 ?Navigator!', + 1 => '6220c!', + 2 => 6260, + 3 => '6290!', + ), + '@66' => + array ( + 0 => 6600, + 1 => 6630, + 2 => '6650d!', + 3 => 6670, + 4 => 6680, + 5 => 6681, + ), + '@67' => + array ( + 0 => '6700s', + 1 => '6700s-1c', + 2 => 6708, + 3 => '6710s', + 4 => '6720c!', + 5 => '6730c!', + 6 => '6760s!', + 7 => 6788, + 8 => '6788i', + 9 => '6790s-1b!', + 10 => '6790s-1c!', + ), + '@70' => + array ( + 0 => 700, + 1 => 701, + 2 => '702T', + ), + '@76' => + array ( + 0 => 7610, + 1 => 7650, + 2 => 7660, + ), + '@80' => + array ( + 0 => '801T', + 1 => 808, + 2 => '808PureView', + 3 => '808 PureView', + ), + '@A1' => + array ( + 0 => 'A1000', + ), + '@A9' => + array ( + 0 => 'A920', + 1 => 'A925', + ), + '@BE' => + array ( + 0 => 'BenQ P30', + 1 => 'BenQ P31', + ), + '@C5' => + array ( + 0 => 'C5-00!', + 1 => 'C5-01', + 2 => 'C5-03!', + 3 => 'C5-04', + 4 => 'C5-05', + 5 => 'C5-06', + ), + '@C6' => + array ( + 0 => 'C6-00!', + 1 => 'C6-01!', + ), + '@C7' => + array ( + 0 => 'C7-00!', + ), + '@CO' => + array ( + 0 => 'ConstellationT', + 1 => 'ConstellationQuest', + ), + '@E-' => + array ( + 0 => 'E-90-1', + ), + '@E5' => + array ( + 0 => 'E5-00!', + 1 => 'E50(-[1-9])?$!', + 2 => 'E51(-[1-9])?$!', + 3 => 'E52(-[1-9])?$!', + 4 => 'E55(-[1-9])?$!', + ), + '@E6' => + array ( + 0 => 'E6', + 1 => 'E6-00', + 2 => 'E60(-[1-9])?$!', + 3 => 'E61i!', + 4 => 'E61(-[1-9])?$!', + 5 => 'E62(-[1-9])?$!', + 6 => 'E63(-[1-9])?$!', + 7 => 'E65(-[1-9])?$!', + 8 => 'E66(-[1-9])?$!', + ), + '@E7' => + array ( + 0 => 'E7-00', + 1 => 'E70(-[1-9])?$!', + 2 => 'E71x', + 3 => 'E71(-[1-9])?$!', + 4 => 'E72(-[1-9])?$!', + 5 => 'E73(-[1-9])?$!', + 6 => 'E75(-[1-9])?$!', + ), + '@E9' => + array ( + 0 => 'E90(-[1-9])?$!', + ), + '@G7' => + array ( + 0 => 'G700', + ), + '@G9' => + array ( + 0 => 'G900', + ), + '@I7' => + array ( + 0 => 'I7710', + ), + '@I8' => + array ( + 0 => 'I8510', + 1 => 'I8910', + ), + '@LG' => + array ( + 0 => 'LG KS10', + 1 => 'LGKT610', + 2 => 'LGKT615', + ), + '@M1' => + array ( + 0 => 'M1000', + ), + '@M6' => + array ( + 0 => 'M600i', + ), + '@N-' => + array ( + 0 => 'N-Gage', + 1 => 'N-GageQD', + ), + '@N5' => + array ( + 0 => 'N5233!', + ), + '@N7' => + array ( + 0 => 'N70(-[1-9])?$!', + 1 => 'N71(-[1-9])?$!', + 2 => 'N72(-[1-9])?$!', + 3 => 'N73(-[1-9])?$!', + 4 => 'N75(-[1-9])?$!', + 5 => 'N76(-[1-9])?$!', + 6 => 'N77(-[1-9])?$!', + 7 => 'N78(-[1-9])?$!', + 8 => 'N79(-[1-9])?$!', + ), + '@N8' => + array ( + 0 => 'N8-00', + 1 => 'N80(-[1-9])?$!', + 2 => 'N81(-[1-9])?$!', + 3 => 'N82(-[1-9])?$!', + 4 => 'N85(-[1-9])?$!', + 5 => 'N86(-[1-9])?$!', + 6 => 'N86 ?8MP$!', + ), + '@N9' => + array ( + 0 => 'N90(-[1-9])?$!', + 1 => 'N91(-[1-9])?$!', + 2 => 'N92(-[1-9])?$!', + 3 => 'N93(-[1-9])?$!', + 4 => 'N93i', + 5 => 'N95(-[1-9])?$!', + 6 => 'N95[ -]8GB(-[1-9])?!', + 7 => 'N96(-[1-9])?$!', + 8 => 'N97(-[1-3])?$!', + 9 => 'N97i', + 10 => 'N97(-[4-5])?$!', + 11 => 'N97 ?mini!', + ), + '@NO' => + array ( + 0 => 'Nokia N81', + 1 => 'Nokia N81 8GB', + ), + '@OR' => + array ( + 0 => 'Oro', + ), + '@P1' => + array ( + 0 => 'P1i', + ), + '@P9' => + array ( + 0 => 'P910i', + 1 => 'P990i', + ), + '@PA' => + array ( + 0 => 'Panasonic-X700', + 1 => 'Panasonic-X800', + ), + '@RI' => + array ( + 0 => 'RIZR-Z8', + 1 => 'RIZR-Z10', + ), + '@SG' => + array ( + 0 => 'SGH-D720', + 1 => 'SGH-D728', + 2 => 'SGH-D730', + 3 => 'SGH-i400!', + 4 => 'SGH-i408!', + 5 => 'SGH-i450!', + 6 => 'SGH-i455!', + 7 => 'SGH-i458!', + 8 => 'SGH-i520!', + 9 => 'SGH-i550!', + 10 => 'SGH-i560!', + 11 => 'SGH-i568!', + 12 => 'SGH-i570!', + 13 => 'SGH-G810', + ), + '@T7' => + array ( + 0 => 'T7-00', + ), + '@U' => + array ( + 0 => 'U', + ), + '@W9' => + array ( + 0 => 'W950i', + 1 => 'W960i', + ), + '@X5' => + array ( + 0 => 'X5-00', + 1 => 'X5-01', + ), + '@X6' => + array ( + 0 => 'X6-00!', + ), + '@X7' => + array ( + 0 => 'X7-00!', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-tizen.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-tizen.php new file mode 100644 index 0000000..d5bdc8f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-tizen.php @@ -0,0 +1,120 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$TIZEN_INDEX = array ( + '@AR' => + array ( + 0 => '(ARMV7 )?SM-Z9005!', + ), + '@BA' => + array ( + 0 => 'Baltic', + ), + '@EM' => + array ( + 0 => 'Emulator', + ), + '@FA' => + array ( + 0 => 'FamilyHub', + ), + '@GT' => + array ( + 0 => 'GT-I8800!', + 1 => 'GT-I8805!', + 2 => 'GT-I9500!', + ), + '@HA' => + array ( + 0 => 'hawkp', + ), + '@KI' => + array ( + 0 => 'KIRAN', + ), + '@MO' => + array ( + 0 => 'Mobile-RD-PQ', + 1 => 'Mobile-Emulator', + ), + '@NX' => + array ( + 0 => 'NX300', + ), + '@RF' => + array ( + 0 => 'RF10M9995!', + 1 => 'RF23M8590!', + 2 => 'RF265BEAE!', + 3 => 'RF28M9580!', + 4 => 'RF56M9540!', + 5 => 'RF85K9993!', + 6 => 'RF85M95A2!', + ), + '@RH' => + array ( + 0 => 'RH81M8090!', + ), + '@SC' => + array ( + 0 => 'SC-03F', + ), + '@SD' => + array ( + 0 => 'sdk', + ), + '@SE' => + array ( + 0 => 'SEC SC-001', + 1 => 'SEC SC-03F', + ), + '@SG' => + array ( + 0 => 'SGH-N099', + ), + '@SM' => + array ( + 0 => 'SM-HIGGS', + 1 => '(ARMV7 )?SM-Z9005!', + 2 => 'SM-Z130!', + 3 => 'SM-Z200!', + 4 => 'SM-Z250!', + 5 => 'SM-Z300!', + 6 => 'SM-Z400!', + 7 => 'SM-Z500!', + 8 => 'SM-Z700!', + 9 => 'SM-Z900!', + 10 => 'SM-Z910!', + 11 => 'SM-G870F0', + 12 => 'SM-R360!', + 13 => 'SM-R600!', + 14 => 'SM-R720!', + 15 => 'SM-R730!', + 16 => 'SM-R732!', + 17 => 'SM-R735!', + 18 => 'SM-R750!', + 19 => 'SM-R760!', + 20 => 'SM-R765!', + 21 => 'SM-R770!', + 22 => 'SM-R805!', + ), + '@TI' => + array ( + 0 => 'TIZEN SM-Z130!', + 1 => 'TIZEN SM-Z300!', + 2 => 'TIZEN Emulator', + ), + '@TM' => + array ( + 0 => 'TM1', + ), + '@XU' => + array ( + 0 => 'xu3', + ), + '@Z3' => + array ( + 0 => 'Z3 Z910F', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-touchwiz.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-touchwiz.php new file mode 100644 index 0000000..9b35f05 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-touchwiz.php @@ -0,0 +1,55 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$TOUCHWIZ_INDEX = array ( + '@GT' => + array ( + 0 => 'GT-B5310!', + 1 => 'GT-B3410', + 2 => 'GT-B7722', + 3 => 'GT-C3262', + 4 => 'GT-C33(00|03)!', + 5 => 'GT-C3312R', + 6 => 'GT-C3312!', + 7 => 'GT-C3330', + 8 => 'GT-C6712', + 9 => 'GT-E2652!', + 10 => 'GT-I6230!', + 11 => 'GT-I6712!', + 12 => 'GT-M3710', + 13 => 'GT-M5650', + 14 => 'GT-S3370!', + 15 => 'GT-S36(50|53)!', + 16 => 'GT-S3770!', + 17 => 'GT-S38(00|02)!', + 18 => 'GT-S3850', + 19 => 'GT-S5220', + 20 => 'GT-S5222R', + 21 => 'GT-S5222', + 22 => 'GT-S52(30|33)!', + 23 => 'GT-S5260P', + 24 => 'GT-S52(60|63)!', + 25 => 'GT-S5292R', + 26 => 'GT-S5292', + 27 => 'GT-S5560!', + 28 => 'GT-S5600', + 29 => 'GT-S5603', + 30 => 'GT-S5620!', + 31 => 'GT-S5680', + 32 => 'GT-S7550', + 33 => 'GT-S8000c', + 34 => 'GT-S8003', + ), + '@S8' => + array ( + 0 => 'S80(00|03)!', + ), + '@SG' => + array ( + 0 => 'SGH-A597', + 1 => 'SGH-F480', + 2 => 'SGH-F480I', + 3 => 'SGH-T528g', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wm.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wm.php new file mode 100644 index 0000000..a9cdd80 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wm.php @@ -0,0 +1,535 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$WM_INDEX = array ( + '@' => + array ( + 0 => '.*T5555!', + 1 => '.*T8585!', + 2 => '.*S521!', + 3 => '.*T33(20|33|35)!', + 4 => '.*T5353!', + 5 => '.*P3700!', + 6 => '.*T82(82|83)!', + 7 => '.*T73(73|80)!', + 8 => '.*T7272!', + 9 => '.*T2223!', + ), + '@-G' => + array ( + 0 => '-GalaxyII', + 1 => '-GalaxyMini', + ), + '@-P' => + array ( + 0 => '-P525!', + 1 => '-P526!', + 2 => '-P527!', + 3 => '-P552w!', + 4 => '-P552!', + 5 => '-P565!', + 6 => '-P735!', + ), + '@12' => + array ( + 0 => 1210, + ), + '@A3' => + array ( + 0 => 'A3100', + 1 => 'A3300c', + ), + '@A4' => + array ( + 0 => 'A4500!', + ), + '@AL' => + array ( + 0 => 'Alltel HTC PPC6800', + 1 => 'Alltel HTC Touch', + 2 => 'Alltel HTC Touch Diamond', + ), + '@AM' => + array ( + 0 => 'Ameo!', + ), + '@BI' => + array ( + 0 => 'Bird T900', + ), + '@C6' => + array ( + 0 => 'C6625', + ), + '@CH' => + array ( + 0 => 'CHT 9100!', + ), + '@CO' => + array ( + 0 => 'Coolpad F800', + ), + '@DA' => + array ( + 0 => 'Datalogic Memor', + ), + '@DO' => + array ( + 0 => 'Dopod838Pro', + 1 => 'DopodD810', + 2 => 'dopod-S900c', + 3 => 'dopodT5588', + 4 => 'dopodT8388', + 5 => 'dopodT8588', + ), + '@DX' => + array ( + 0 => 'DX900', + ), + '@E1' => + array ( + 0 => 'E100', + ), + '@ES' => + array ( + 0 => 'ES405B!', + ), + '@F9' => + array ( + 0 => 'F900', + ), + '@GA' => + array ( + 0 => 'garmin-asus-Nuvifone-M10', + ), + '@GI' => + array ( + 0 => 'GIGABYTE-MS800', + ), + '@GM' => + array ( + 0 => 'GM730', + 1 => 'GM750Q', + ), + '@GT' => + array ( + 0 => 'GT-B5722', + 1 => 'GT-B6520', + 2 => 'GT-B7300', + 3 => 'GT-B7320!', + 4 => 'GT-B7330!', + 5 => 'GT-B7350', + 6 => 'GT-B7610', + 7 => 'GT-C6625', + 8 => 'GT-I8000!', + ), + '@GW' => + array ( + 0 => 'GW550', + 1 => 'GW825', + ), + '@H-' => + array ( + 0 => 'H-21', + ), + '@HD' => + array ( + 0 => '(HTC )?HD mini!', + 1 => '(HTC )?HD2!', + ), + '@HP' => + array ( + 0 => 'HP iPAQ 510', + 1 => 'HPiPAQ510!', + 2 => 'HPiPAQ610', + 3 => 'HPiPAQ910!', + 4 => 'HP iPAQ h6300', + 5 => 'HP iPAQ hw6500!', + 6 => 'HPiPAQhw6900!', + 7 => 'HPiPAQrw6800!', + 8 => 'HPiPAQrw6815!', + 9 => 'HPiPAQDataMessenger!', + 10 => 'HPiPAQVoiceMessenger!', + 11 => 'HPiPAQGlisten', + 12 => 'HP KB1', + ), + '@HT' => + array ( + 0 => 'HTC8500', + 1 => 'HTC P3300', + 2 => 'HTC love', + 3 => 'HTC P3350', + 4 => 'HTC P3400!', + 5 => 'HTC P3450!', + 6 => 'HTC HERALD', + 7 => 'HTC P6300', + 8 => 'HTC P6500', + 9 => 'HTC X7500', + 10 => 'HTC X7510', + 11 => '(HTC )?HD mini!', + 12 => '(HTC )?HD2!', + 13 => 'HTC T8290', + 14 => 'HTC MAX 4G', + 15 => 'HTC MTeoR', + 16 => 'HTC Prophet', + 17 => 'HTC Snap!', + 18 => 'HTC Maple S520', + 19 => 'HTC S620!', + 20 => 'HTC Excalibur', + 21 => 'HTC S630', + 22 => 'HTC S710', + 23 => 'HTC S730', + 24 => 'HTC S740', + 25 => 'HTC Touch', + 26 => 'HTC Elf', + 27 => 'HTC 6900', + 28 => 'HTC6900', + 29 => 'HTC6900-MR1', + 30 => 'HTC TouchDual', + 31 => 'HTC Touch 3G!', + 32 => 'HTC Jade', + 33 => 'HTC Mega!', + 34 => 'HTC Touch2!', + 35 => 'HTC Touch Cruise!', + 36 => 'HTC P3650', + 37 => 'HTC P3651', + 38 => 'HTC Polaris', + 39 => 'HTC Touch Diamond2!', + 40 => 'HTC Touch Diamond!', + 41 => 'HTC Diamond', + 42 => 'HTC P3701', + 43 => 'HTC P5500', + 44 => 'HTC P5310!', + 45 => 'HTC Touch HD2!', + 46 => 'HTC Touch HD!', + 47 => 'HTC Touch Pro2!', + 48 => 'HTC Touch Pro!', + 49 => 'HTC P4600', + 50 => 'HTC Raphael', + 51 => 'HTC Touch Viva!', + 52 => 'HTC Trinity', + 53 => 'HTC P3600', + 54 => 'HTC P3600i', + 55 => 'HTC v3600', + 56 => 'HTC TyTN II', + 57 => 'HTC Kaiser', + 58 => 'HTC TyTN!', + 59 => 'HTC Mercury', + 60 => 'HTC wizard', + 61 => 'HTCPPC6850!', + 62 => 'HTC VDA V', + 63 => 'HTC v1510', + 64 => 'HTC VPACompactIV', + 65 => 'HT01A', + ), + '@I-' => + array ( + 0 => 'i-mate JAMA', + 1 => 'i-mate JAMAQ', + 2 => 'i-mate JAMin', + 3 => 'i-mate JASJAM', + 4 => 'i-mate JAQ', + 5 => 'i-mate JAQ3', + 6 => 'i-mate K-JAM', + 7 => 'i-mate PDAL', + 8 => 'i-mate 6150', + 9 => 'i-mate 8150!', + 10 => 'i-mate 8502', + 11 => 'i-mate 9502!', + ), + '@K-' => + array ( + 0 => 'K-Touch W366!', + ), + '@KD' => + array ( + 0 => 'KDDI-HT01', + ), + '@KY' => + array ( + 0 => 'Kyocera-E4000', + ), + '@LE' => + array ( + 0 => 'Lenovo ET860', + 1 => 'LENOVO-ET980', + ), + '@LG' => + array ( + 0 => 'LG-GM730!', + 1 => 'LG-GM750!', + 2 => 'LG-GW550!', + 3 => 'LG-KS20', + 4 => 'LG-MS25', + 5 => 'LGE VS750', + ), + '@M1' => + array ( + 0 => 'M1i', + ), + '@M5' => + array ( + 0 => 'M530w!', + ), + '@M9' => + array ( + 0 => 'M930!', + ), + '@MC' => + array ( + 0 => 'MC45!', + 1 => 'MC659B!', + ), + '@MD' => + array ( + 0 => 'MDA III!', + 1 => 'MDA compact II!', + 2 => 'MDA compact!', + 3 => 'MDA Pro!', + 4 => 'MDA Touch!', + 5 => 'MDA Vario!', + ), + '@NU' => + array ( + 0 => 'Nuvifone-M10', + 1 => 'Nuvifone-M20', + ), + '@O2' => + array ( + 0 => 'o2 Xda comet', + 1 => 'O2 Xda 2mini', + 2 => 'O2 Xda 2s', + ), + '@P3' => + array ( + 0 => 'P3470!', + 1 => 'P3450', + 2 => 'P3650', + 3 => 'P3650t', + 4 => 'P3600!', + ), + '@P4' => + array ( + 0 => 'P400', + 1 => 'P4350!', + 2 => 'P4550', + ), + '@P5' => + array ( + 0 => 'P550', + ), + '@P7' => + array ( + 0 => 'P750', + ), + '@PA' => + array ( + 0 => 'Palm500!', + 1 => 'Palm750', + 2 => 'Palm850!', + 3 => 'Palm Treo850e', + 4 => 'PANTECH-C810', + ), + '@PP' => + array ( + 0 => 'PPC6850!', + ), + '@Q-' => + array ( + 0 => 'Q-UMTS', + ), + '@Q8' => + array ( + 0 => 'Q8', + ), + '@Q9' => + array ( + 0 => 'Q9', + 1 => 'Q9c!', + 2 => 'Q9m!', + ), + '@S0' => + array ( + 0 => 'S01SH', + 1 => 'S01SH2', + ), + '@S1' => + array ( + 0 => 'S11HT', + 1 => 'S12HT', + ), + '@S2' => + array ( + 0 => 'S200', + 1 => 'S21HT', + 2 => 'S22HT', + ), + '@SC' => + array ( + 0 => 'SCH-M490', + 1 => 'SCH-M710', + 2 => 'SCH-M715', + 3 => 'SCH-i220!', + 4 => 'SCH-i225!', + 5 => 'SCH-i760!', + 6 => 'SCH-i770!', + 7 => 'SCHI910!', + 8 => 'SCH-i920', + 9 => 'SC-01B', + ), + '@SF' => + array ( + 0 => 'SFR v3650!', + ), + '@SG' => + array ( + 0 => 'SGH-i600!', + 1 => 'SGH-i601!', + 2 => 'SGH-I607', + 3 => 'SGH-i608!', + 4 => 'SGH-I617', + 5 => 'SGH-I637', + 6 => 'SGH-i640!', + 7 => 'SGH-i718', + 8 => 'SGH-i718plus', + 9 => 'SGH-i728', + 10 => 'SGH-i780!', + 11 => 'SGH-i900!', + 12 => 'SGH-i908E', + ), + '@SI' => + array ( + 0 => 'SIE-SX66', + 1 => 'sigmarion3', + ), + '@SP' => + array ( + 0 => 'Sprint:MotoQ9c', + 1 => 'Sprint Treo850e', + 2 => 'SPH-M7200', + 3 => 'SPH-M7350', + 4 => 'SPH-M8400', + 5 => 'SPHI325!', + 6 => 'Spice D1100', + 7 => 'SPV E600', + 8 => 'SPV E650', + 9 => 'SPV M700', + 10 => 'SPV M2000', + 11 => 'SPV M3100', + 12 => 'Sprint S511', + 13 => 'Sprint:SPH-ip830w', + 14 => 'Sprint:PPC6600-1', + 15 => 'Sprint:PPC-6700', + 16 => 'Sprint:PPC6800', + 17 => 'Sprint PPC6850SP', + 18 => 'Sprint MP6850SP', + 19 => 'Sprint MP6900SP', + 20 => 'Sprint MP6950SP', + ), + '@T-' => + array ( + 0 => 'T-Mobile Atlas', + 1 => 'T-Mobile Dash', + 2 => 'T-Mobile LEO', + 3 => 'T-Mobile Cleopatra', + 4 => 'T-01A!', + 5 => 'T-01B!', + ), + '@T5' => + array ( + 0 => 'T5388', + ), + '@T9' => + array ( + 0 => 'T9188', + 1 => 'T9199', + ), + '@TG' => + array ( + 0 => '(Toshiba[- ])?TG01!', + ), + '@TO' => + array ( + 0 => '(Toshiba[- ])?TG01!', + ), + '@TR' => + array ( + 0 => 'Treo800w', + ), + '@V1' => + array ( + 0 => 'v1415', + 1 => 'v1240', + 2 => 'v1210', + 3 => 'v1640', + ), + '@VE' => + array ( + 0 => 'Velocity', + ), + '@VI' => + array ( + 0 => 'VIP12!', + ), + '@VP' => + array ( + 0 => 'VPA Touch', + ), + '@W3' => + array ( + 0 => 'W366', + ), + '@WS' => + array ( + 0 => 'WS003SH', + 1 => 'WS004SH', + 2 => 'WS007SH', + 3 => 'WS011SH', + 4 => 'WS020SH', + 5 => 'WS027SH', + ), + '@X0' => + array ( + 0 => 'X01T', + 1 => 'X02T!', + 2 => 'X01HT', + 3 => 'X02HT', + 4 => 'X03HT', + 5 => 'X04HT', + 6 => 'X05HT', + 7 => 'X01SC', + ), + '@X1' => + array ( + 0 => 'X1', + 1 => 'X1[ia]!', + ), + '@X2' => + array ( + 0 => 'X2', + 1 => 'X2[ia]!', + ), + '@XD' => + array ( + 0 => 'Xda diamond', + 1 => 'Xda neo', + 2 => 'Xda nova', + 3 => 'Xda orbit', + 4 => 'Xda terra', + 5 => 'Xda trion', + ), + '@XV' => + array ( + 0 => 'XV6175!', + 1 => 'XV6850!', + 2 => 'XV6875!', + 3 => 'XV6900', + 4 => 'XV6975', + ), + '@ZT' => + array ( + 0 => 'ZTE E N72', + 1 => 'ZTE E X70', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wp.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wp.php new file mode 100644 index 0000000..85b0204 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/indices/models-wp.php @@ -0,0 +1,548 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$WP_INDEX = array ( + '@' => + array ( + 0 => '(HD7|.*T92(92|95|96))!', + 1 => '((7 )?Mozart|.*T86(97|98))!', + 2 => '(7 Pro|.*T75(75|76))!', + 3 => '.*T8788!', + 4 => '((7 )?Trophy|.*T8686)!', + 5 => '(Radar|.*C110e)!', + 6 => '.*X310e!', + 7 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!', + ), + '@- ' => + array ( + 0 => '- BUSH Windows Phone', + 1 => '- Lazer SMART WIND', + ), + '@0P' => + array ( + 0 => '0P6B140', + 1 => '0P6B180', + ), + '@40' => + array ( + 0 => '40 Cesium', + ), + '@47' => + array ( + 0 => 47, + ), + '@4A' => + array ( + 0 => '4Afrika', + ), + '@69' => + array ( + 0 => '6990LVW', + ), + '@7 ' => + array ( + 0 => '((7 )?Mozart|.*T86(97|98))!', + 1 => '7 HTC MOZART', + 2 => '(7 Pro|.*T75(75|76))!', + 3 => '7 Surround', + 4 => '((7 )?Trophy|.*T8686)!', + ), + '@75' => + array ( + 0 => '75eL0N', + ), + '@8S' => + array ( + 0 => '8S', + 1 => '8S by HTC', + ), + '@8X' => + array ( + 0 => '8X', + 1 => '8X by HTC', + ), + '@;H' => + array ( + 0 => ';HD2', + ), + '@;P' => + array ( + 0 => ';PD67100', + ), + '@<M' => + array ( + 0 => '<model>!', + ), + '@A6' => + array ( + 0 => 'A620(b|d|e|m|t)!', + ), + '@AC' => + array ( + 0 => 'AC50CE', + 1 => 'ACD U', + 2 => 'Accord', + ), + '@AL' => + array ( + 0 => 'Allegro', + 1 => 'Alpha Neon', + 2 => 'ALPHA PRIME 5', + ), + '@AN' => + array ( + 0 => 'Andi4L', + 1 => 'Android!', + ), + '@AT' => + array ( + 0 => 'Ativ S', + 1 => 'ATIV S Neo', + ), + '@BI' => + array ( + 0 => 'Billy 4', + 1 => 'Billy 4.7', + ), + '@BP' => + array ( + 0 => 'BP30.BM180', + ), + '@C6' => + array ( + 0 => 'C620(d|e|t)!', + 1 => 'C625(a|b)!', + ), + '@CE' => + array ( + 0 => 'CETUS', + ), + '@CH' => + array ( + 0 => 'CHERRY-MOBILE Alpha Luxe', + ), + '@DO' => + array ( + 0 => 'DolphinCT50', + ), + '@E2' => + array ( + 0 => 'E260T+', + ), + '@E6' => + array ( + 0 => 'E600', + ), + '@ET' => + array ( + 0 => 'Eternity', + ), + '@FI' => + array ( + 0 => 'FierceXL', + ), + '@FO' => + array ( + 0 => 'Focus i917!', + 1 => 'FOCUS S', + ), + '@FT' => + array ( + 0 => 'FTJ152E', + 1 => 'FTJ152F', + ), + '@FZ' => + array ( + 0 => 'FZ-E1', + ), + '@GA' => + array ( + 0 => 'Galaxy6', + ), + '@GO' => + array ( + 0 => 'Gold', + ), + '@GT' => + array ( + 0 => 'GT-[IS][0-9]{4,4}!!', + ), + '@GW' => + array ( + 0 => 'GW910', + ), + '@H8' => + array ( + 0 => 'H883G', + ), + '@HA' => + array ( + 0 => 'Harley Davidson', + 1 => 'Harley-Davidson', + 2 => 'Haden', + ), + '@HD' => + array ( + 0 => 'HD2', + 1 => 'HD2(Leo', + 2 => 'HD2 LEO', + 3 => '(HD7|.*T92(92|95|96))!', + ), + '@HE' => + array ( + 0 => 'HELSINKI', + ), + '@HT' => + array ( + 0 => 'HTC HD2', + 1 => 'HTC Mozart', + 2 => 'htc mpw6958', + 3 => 'htcmpw6958', + 4 => 'HTC 7 Trophy', + 5 => 'HTC Trophy', + 6 => 'HTC6690LVW', + 7 => 'HTC6990LVW', + 8 => 'HTC6990LVW 4G', + 9 => 'htc 8x', + 10 => 'HTCPO881', + 11 => 'HTC6995LVW', + ), + '@HU' => + array ( + 0 => 'HUAWEI Ascend W1!', + 1 => 'HUAWEI ?W1-(C00|U00|U34)!', + 2 => 'HUAWEI ?W2-(T00|T01|U00|U051)!', + ), + '@I9' => + array ( + 0 => 'I917', + ), + '@ID' => + array ( + 0 => 'IDOL 4 PRO', + 1 => 'IDOL 4S with Windows 10', + 2 => 'id[0-9]{3,3}!!', + ), + '@IM' => + array ( + 0 => 'Impera I', + 1 => 'Impera M', + 2 => 'Impera S', + ), + '@IN' => + array ( + 0 => 'InfoPath!', + ), + '@IQ' => + array ( + 0 => 'IQ400W', + 1 => 'IQ500W', + ), + '@IR' => + array ( + 0 => 'iris Win 1', + ), + '@IS' => + array ( + 0 => 'IS12T', + ), + '@IX' => + array ( + 0 => 'Ixion W 5', + ), + '@LE' => + array ( + 0 => 'LEO', + ), + '@LG' => + array ( + 0 => 'LG-E740!', + 1 => 'LG-E-?900!', + 2 => 'LG-E906', + 3 => 'LG-C900!', + ), + '@LI' => + array ( + 0 => 'Linux!', + ), + '@LU' => + array ( + 0 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!', + ), + '@M1' => + array ( + 0 => 'M1010', + ), + '@M2' => + array ( + 0 => 'M220!', + ), + '@M3' => + array ( + 0 => 'M310', + ), + '@M5' => + array ( + 0 => 'M5w', + ), + '@MA' => + array ( + 0 => 'Mazaa', + ), + '@ME' => + array ( + 0 => 'MegaFon SP-W1', + ), + '@MI' => + array ( + 0 => 'MICROMAX-W121', + 1 => 'MI4', + 2 => 'Microsoft!', + ), + '@MO' => + array ( + 0 => 'MOBILE Alpha Luxe', + 1 => 'MOBILE Alpha Style', + 2 => 'MOBILE Alpha View', + 3 => 'Mondrian', + 4 => '((7 )?Mozart|.*T86(97|98))!', + 5 => 'MouseComputer MADOSMA Q501', + ), + '@MW' => + array ( + 0 => 'MWP6885', + 1 => 'mwp6985', + 2 => 'MWP-47!', + ), + '@N8' => + array ( + 0 => 'N880e!', + ), + '@NE' => + array ( + 0 => 'NEO', + ), + '@NO' => + array ( + 0 => '(Lumia ?|Nokia ?)?[0-9]{3,4}!!', + ), + '@OM' => + array ( + 0 => 'Omega', + 1 => 'OM(NI|IN)A ?7!', + 2 => 'Omnia W', + ), + '@ON' => + array ( + 0 => 'ONE TOUCH 5040X', + 1 => 'ONIX AWP4-215', + ), + '@PC' => + array ( + 0 => 'PC93100', + 1 => 'PC40100', + 2 => 'PC40200', + ), + '@PD' => + array ( + 0 => 'PD67100', + ), + '@PI' => + array ( + 0 => 'PI39100', + 1 => 'PI86100', + ), + '@PK' => + array ( + 0 => 'PKT-407', + ), + '@PM' => + array ( + 0 => 'PM23300', + ), + '@PR' => + array ( + 0 => 'PRESTIGIO-PSP8500DUO', + ), + '@PS' => + array ( + 0 => 'PSP8400DUO', + 1 => 'PSP8500DUO', + ), + '@QS' => + array ( + 0 => 'QSMART STORM W408', + 1 => 'QSMART DREAM W473', + 2 => 'QSMART STORM W510', + ), + '@QU' => + array ( + 0 => 'Quantum', + ), + '@RA' => + array ( + 0 => '(Radar|.*C110e)!', + ), + '@RI' => + array ( + 0 => 'RIO U', + ), + '@RM' => + array ( + 0 => 'RM-[0-9]{3,4}!!', + ), + '@S5' => + array ( + 0 => 'S58', + ), + '@S6' => + array ( + 0 => 'S606', + ), + '@SC' => + array ( + 0 => 'Schubert!', + 1 => 'SCH-R860U', + 2 => 'SCH-I930', + ), + '@SE' => + array ( + 0 => 'SeaRay', + 1 => 'Semaphore', + ), + '@SG' => + array ( + 0 => 'SG 7', + 1 => 'SGH-[IT][0-9]{3,3}!!', + ), + '@SM' => + array ( + 0 => 'SM-W750V', + ), + '@SO' => + array ( + 0 => 'SOUL2', + ), + '@SP' => + array ( + 0 => 'Spark', + 1 => 'SPH-I800', + ), + '@SU' => + array ( + 0 => 'Surround', + 1 => 'Surface Phone', + ), + '@T6' => + array ( + 0 => 'T698', + ), + '@TA' => + array ( + 0 => 'Taylor', + 1 => 'Tania', + ), + '@TC' => + array ( + 0 => 'TC70', + ), + '@TG' => + array ( + 0 => 'TG01', + ), + '@TH' => + array ( + 0 => 'Thunder 340W', + 1 => 'Thunder 450W', + ), + '@TI' => + array ( + 0 => 'Titan', + 1 => 'Titanium Wind W4', + ), + '@TO' => + array ( + 0 => 'Touch-IT HD7', + 1 => 'Touch-IT Trophy', + ), + '@TR' => + array ( + 0 => '((7 )?Trophy|.*T8686)!', + ), + '@TS' => + array ( + 0 => 'TSUNAGI', + ), + '@UL' => + array ( + 0 => 'Ultimate', + ), + '@US' => + array ( + 0 => 'USCCHTC-PC93100', + 1 => 'USCCN859', + ), + '@V9' => + array ( + 0 => 'V965W', + ), + '@VE' => + array ( + 0 => 'Venue Pro', + ), + '@VI' => + array ( + 0 => 'Virtual!', + ), + '@VW' => + array ( + 0 => 'VW820', + ), + '@W1' => + array ( + 0 => 'W1i', + 1 => 'W10', + 2 => 'W1-(C00|U00|U34)!', + 3 => 'W121', + ), + '@W2' => + array ( + 0 => 'W2-(T00|T01|U00|U051)!', + ), + '@W4' => + array ( + 0 => 'W4', + ), + '@WI' => + array ( + 0 => 'WIN HD LTE', + 1 => 'WIN HD W510l', + 2 => 'WIN HD W510u', + 3 => 'WIN JR LTE', + 4 => 'WIN JR W410a', + 5 => 'WIN JR W410i', + 6 => 'WIN JR W410l', + 7 => 'WIN JR W410u', + 8 => 'WIN 400', + 9 => 'WINJOY', + 10 => 'WinWin', + 11 => 'Windows Phone 8X by HTC!', + 12 => 'WindowsPhone8Xby', + 13 => 'Windows Phone 8S by HTC!', + 14 => 'WindowsPhone8Sby', + 15 => 'Win1', + 16 => 'Win-Q900S', + 17 => 'Win Q1000', + 18 => 'WinQ1000', + 19 => 'Windows!', + ), + '@WP' => + array ( + 0 => 'WP 4.7', + ), + '@XX' => + array ( + 0 => 'XXX!', + ), +); diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/manufacturer-names.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/manufacturer-names.php new file mode 100644 index 0000000..77af419 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/manufacturer-names.php @@ -0,0 +1,40 @@ +<?php + +namespace WhichBrowser\Data; + +Manufacturers::$GENERIC = [ + 'LG Electronics' => 'LG', + 'LGE' => 'LG', + 'TOSHIBA' => 'Toshiba', + 'SAMSUNG' => 'Samsung', + 'SHARP' => 'Sharp', + 'SONY' => 'Sony', +]; + +Manufacturers::$TELEVISION = [ + 'ALDISUED' => 'Aldi', + 'BANGOLUFSEN' => 'Bang & Olufsen', + 'CHANGHONG' => 'Changhong', + 'changhong' => 'Changhong', + 'FINLUX' => 'Finlux', + 'HHW HAIER' => 'Haier', + 'HITACHI' => 'Hitachi', + 'HYUNDAI' => 'Hyundai', + 'inverto' => 'Inverto', + 'LOEWE' => 'Loewe', + 'MEDION' => 'Medion', + 'Nagra OpenTV' => 'NAGRA', + 'PANASONIC' => 'Panasonic', + 'Sagemcom_Broadband_SAS' => 'Sagemcom', + 'SERAPHIC' => 'Seraphic', + 'selevision' => 'Selevision', + 'smart' => 'Smart', + 'Sky_worth' => 'Skyworth', + 'TechnoTrend Goerler' => 'TechnoTrend', + 'TechnoTrend Goerler/Kathrein' => 'TechnoTrend', + 'TELEFUNKEN' => 'Telefunken', + 'THOM' => 'Thomson', + 'THOMSON' => 'Thomson', + 'tv2n' => 'TV2N', + 'VESTEL' => 'Vestel' +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-android.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-android.php new file mode 100644 index 0000000..c9d2639 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-android.php @@ -0,0 +1,18691 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\DeviceType; +use WhichBrowser\Constants\DeviceSubType; +use WhichBrowser\Constants\Flag; + +DeviceModels::$ANDROID_MODELS = [ + + /* Generic identifiers */ + 'Android' => [ null, null ], + 'google sdk' => [ null, null, DeviceType::EMULATOR ], + 'sdk' => [ null, null, DeviceType::EMULATOR ], + 'generic' => [ null, null ], + 'generic x86' => [ null, null ], + 'VirtualBox!' => [ null, null, DeviceType::EMULATOR ], + + /* Development boards and kits */ + 'amd brazos' => [ 'AMD', 'Fusion based device', DeviceType::DEVBOARD ], + 'amd persimmon' => [ 'AMD', 'Persimmon based device', DeviceType::DEVBOARD ], + 'Amlogic M1 reference board' => [ 'Amlogic', 'M1 reference board', DeviceType::DEVBOARD ], + 'AML8726M' => [ 'Amlogic', 'AML8726-M based device', DeviceType::DEVBOARD ], + 'AMLOGIC8726MX' => [ 'Amlogic', 'AML8726-MX based device', DeviceType::DEVBOARD ], + 'vexpress a9' => [ 'ARM', 'Versatile Express development platform', DeviceType::DEVBOARD ], + 'sama5d3' => [ 'Atmel', 'SAMA5D3 based device', DeviceType::DEVBOARD ], + 'BEAGLEBONE' => [ 'BeagleBoard', 'BeagleBone', DeviceType::DEVBOARD ], + 'BeagleBone Black' => [ 'BeagleBoard', 'BeagleBone Black', DeviceType::DEVBOARD ], + 'BEAGLEBONEBLACK' => [ 'BeagleBoard', 'BeagleBone Black', DeviceType::DEVBOARD ], + 'BEAGLEBONEBLACK.A5C' => [ 'BeagleBoard', 'BeagleBone Black', DeviceType::DEVBOARD ], + 'NITROGEN6X' => [ 'Boundary Devices', 'Nitrogen6X', DeviceType::DEVBOARD ], + 'bcm platform' => [ 'Broadcom', 'BCM based device', DeviceType::DEVBOARD ], + 'bcm7231' => [ 'Broadcom', 'BCM7231 based device', DeviceType::DEVBOARD ], + 'bcm7425' => [ 'Broadcom', 'BCM7425 based device', DeviceType::DEVBOARD ], + 'bcm7429' => [ 'Broadcom', 'BCM7429 based device', DeviceType::DEVBOARD ], + 'bcm7435' => [ 'Broadcom', 'BCM7435 based device', DeviceType::DEVBOARD ], + 'bcm7439' => [ 'Broadcom', 'BCM7439 based device', DeviceType::DEVBOARD ], + 'bcm7445' => [ 'Broadcom', 'BCM7445 based device', DeviceType::DEVBOARD ], + 'bcm7584' => [ 'Broadcom', 'BCM7584 based device', DeviceType::DEVBOARD ], + 'BCM21654!' => [ 'Broadcom', 'BCM21654 based device', DeviceType::DEVBOARD ], + 'BCM21664!' => [ 'Broadcom', 'BCM21664 based device', DeviceType::DEVBOARD ], + 'BCM23550!' => [ 'Broadcom', 'BCM23550 based device', DeviceType::DEVBOARD ], + 'BCM28145!' => [ 'Broadcom', 'BCM28145 based device', DeviceType::DEVBOARD ], + 'BCM28155!' => [ 'Broadcom', 'BCM28155 based device', DeviceType::DEVBOARD ], + 'imx50!' => [ 'Freescale', 'i.MX50 based device', DeviceType::DEVBOARD ], + 'imx51!' => [ 'Freescale', 'i.MX51 based device', DeviceType::DEVBOARD ], + 'imx53!' => [ 'Freescale', 'i.MX53 based device', DeviceType::DEVBOARD ], + 'imx6q!' => [ 'Freescale', 'i.MX6Q based device', DeviceType::DEVBOARD ], + 'SABRESD-MX6DQ' => [ 'Freescale', 'i.MX6DQ based device', DeviceType::DEVBOARD ], + 'odroida' => [ 'Hardkernel', 'ODROID-A developer tablet', DeviceType::TABLET ], + 'ODROID-A' => [ 'Hardkernel', 'ODROID-A developer tablet', DeviceType::TABLET ], + 'ODROIDC' => [ 'Hardkernel', 'ODROID-C1 developer tablet', DeviceType::TABLET ], + 'ODROIDC2' => [ 'Hardkernel', 'ODROID-C2 developer tablet', DeviceType::TABLET ], + 'ODROID-U' => [ 'Hardkernel', 'ODROID-U developer board', DeviceType::DEVBOARD ], + 'ODROID-U2' => [ 'Hardkernel', 'ODROID-U2 developer board', DeviceType::DEVBOARD ], + 'ODROID-X' => [ 'Hardkernel', 'ODROID-X developer board', DeviceType::DEVBOARD ], + 'ODROID-XU' => [ 'Hardkernel', 'ODROID-XU developer board', DeviceType::DEVBOARD ], + 'ODROID-XU3' => [ 'Hardkernel', 'ODROID-XU3 developer board', DeviceType::DEVBOARD ], + 'ODROID-XU3-ATV' => [ 'Hardkernel', 'ODROID-XU3 developer board', DeviceType::DEVBOARD ], + 'ODROID-XU4' => [ 'Hardkernel', 'ODROID-XU4 developer board', DeviceType::DEVBOARD ], + 'ODROID-X2' => [ 'Hardkernel', 'ODROID-X2 developer board', DeviceType::DEVBOARD ], + 'Bay Trail Generic Platform' => [ 'Intel', 'Bay Trail based device', DeviceType::DEVBOARD ], + 'Bayley Bay' => [ 'Intel', 'Bay Trail based device', DeviceType::DEVBOARD ], + 'cedartrail' => [ 'Intel', 'Cedar Trail based device', DeviceType::DEVBOARD ], + 'mfld (dv10|dv20|gi|lw00|pr2|pr3)!' => [ 'Intel', 'Medfield based device', DeviceType::DEVBOARD ], + 'redhookbay' => [ 'Intel', 'Merrifield based device', DeviceType::DEVBOARD ], + 'saltbay' => [ 'Intel', 'Merrifield based device', DeviceType::DEVBOARD ], + 'victoriabay' => [ 'Intel', 'Merrifield based device', DeviceType::DEVBOARD ], + 'Shark Bay Client platform' => [ 'Intel', 'Haswell based device', DeviceType::DEVBOARD ], + 'BP710A' => [ 'Intel', 'Yukka Beach based device', DeviceType::DEVBOARD ], + 'yukkabeach' => [ 'Intel', 'Yukka Beach based device', DeviceType::DEVBOARD ], + 'berlin' => [ 'Marvell', 'Armada based device', DeviceType::DEVBOARD ], + 'berlin bg2!' => [ 'Marvell', 'Armada based device', DeviceType::DEVBOARD ], + 'berlin generic!' => [ 'Marvell', 'Armada based device', DeviceType::DEVBOARD ], + 'bg2 !' => [ 'Marvell', 'Armada based device', DeviceType::DEVBOARD ], + 'bg2ct !' => [ 'Marvell', 'Armada based device', DeviceType::DEVBOARD ], + 'bg2q4k !' => [ 'Marvell', 'Armada based device', DeviceType::DEVBOARD ], + 'bg2qa0v4 !' => [ 'Marvell', 'Armada based device', DeviceType::DEVBOARD ], + 'bg2qv4 !' => [ 'Marvell', 'Armada based device', DeviceType::DEVBOARD ], + 'MStar Amber3' => [ 'MStar', 'Amber3 based device', DeviceType::DEVBOARD ], + 'Konka Amber3' => [ 'MStar', 'Amber3 based device', DeviceType::DEVBOARD ], + 'mt5396!' => [ 'Mediatek', 'MT5396 based device', DeviceType::DEVBOARD ], + 'mt5399!' => [ 'Mediatek', 'MT5399 based device', DeviceType::DEVBOARD ], + 'mt5861!' => [ 'Mediatek', 'MT5861 based device', DeviceType::DEVBOARD ], + 'mt5880!' => [ 'Mediatek', 'MT5880 based device', DeviceType::DEVBOARD ], + 'mt5882!' => [ 'Mediatek', 'MT5882 based device', DeviceType::DEVBOARD ], + 'mt5890!' => [ 'Mediatek', 'MT5890 based device', DeviceType::DEVBOARD ], + 'mt6515!' => [ 'Mediatek', 'MT6515 based device', DeviceType::DEVBOARD ], + 'MTK6515' => [ 'Mediatek', 'MT6515 based device', DeviceType::DEVBOARD ], + 'mt6517!' => [ 'Mediatek', 'MT6517 based device', DeviceType::DEVBOARD ], + 'mt6571!' => [ 'Mediatek', 'MT6571 based device', DeviceType::DEVBOARD ], + 'mt6572!' => [ 'Mediatek', 'MT6572 based device', DeviceType::DEVBOARD ], + 'baoxue' => [ 'Mediatek', 'MT6573 based device', DeviceType::DEVBOARD ], + 'bird75v2' => [ 'Mediatek', 'MT6575 based device', DeviceType::DEVBOARD ], + 'eagle75v1 2' => [ 'Mediatek', 'MT6575 based device', DeviceType::DEVBOARD ], + 'mt6575!' => [ 'Mediatek', 'MT6575 based device', DeviceType::DEVBOARD ], + 'mt6577!' => [ 'Mediatek', 'MT6577 based device', DeviceType::DEVBOARD ], + 'mt6582!' => [ 'Mediatek', 'MT6582 based device', DeviceType::DEVBOARD ], + 'mt6589!' => [ 'Mediatek', 'MT6589 based device', DeviceType::DEVBOARD ], + 'MTK-MT6589' => [ 'Mediatek', 'MT6589 based device', DeviceType::DEVBOARD ], + 'MTK6589!' => [ 'Mediatek', 'MT6589 based device', DeviceType::DEVBOARD ], + 'mt6592!' => [ 'Mediatek', 'MT6592 based device', DeviceType::DEVBOARD ], + 'MTK-MT6592' => [ 'Mediatek', 'MT6592 based device', DeviceType::DEVBOARD ], + 'MTK6592' => [ 'Mediatek', 'MT6592 based device', DeviceType::DEVBOARD ], + 'mt6595!' => [ 'Mediatek', 'MT6595 based device', DeviceType::DEVBOARD ], + 'mt6599!' => [ 'Mediatek', 'MT6599 based device', DeviceType::DEVBOARD ], + 'mt8125!' => [ 'Mediatek', 'MT8125 based device', DeviceType::DEVBOARD ], + 'mt8127!' => [ 'Mediatek', 'MT8127 based device', DeviceType::DEVBOARD ], + 'mt8135!' => [ 'Mediatek', 'MT8135 based device', DeviceType::DEVBOARD ], + 'MTK--8312' => [ 'Mediatek', 'MT8312 based device', DeviceType::DEVBOARD ], + 'mt8377!' => [ 'Mediatek', 'MT8377 based device', DeviceType::DEVBOARD ], + 'mt8389!' => [ 'Mediatek', 'MT8389 based device', DeviceType::DEVBOARD ], + 'mt8580!' => [ 'Mediatek', 'MT8580 based device', DeviceType::DEVBOARD ], + 'mt8658!' => [ 'Mediatek', 'MT8658 based device', DeviceType::DEVBOARD ], + 'MBX DVBT reference board (c03ref)' => [ 'MBX', 'DVBT reference board', DeviceType::DEVBOARD ], + 'MBX Dongle board!' => [ 'MBX', 'Dongle board', DeviceType::DEVBOARD ], + 'MBX reference board!' => [ 'MBX', 'Reference board', DeviceType::DEVBOARD ], + 'NS115' => [ 'Nufront', 'NuSmart 115 based device', DeviceType::DEVBOARD ], + 'NS2816' => [ 'Nufront', 'NuSmart 2816 based device', DeviceType::DEVBOARD ], + 'Ventana' => [ 'Nvidia', 'Tegra Ventana development kit', DeviceType::DEVBOARD ], + 'Cardhu' => [ 'Nvidia', 'Tegra 3 based device', DeviceType::DEVBOARD ], + 'Panda(Board)?!' => [ 'Pandaboard', 'Development Kit', DeviceType::DEVBOARD ], + 'Omap5panda' => [ 'Pandaboard', 'Development Kit', DeviceType::DEVBOARD ], + 'MSM' => [ 'Qualcomm', 'Snapdragon based device', DeviceType::DEVBOARD ], + 'msm(7227|7627)!' => [ 'Qualcomm', 'Snapdragon S1 based device', DeviceType::DEVBOARD ], + 'msm7630!' => [ 'Qualcomm', 'Snapdragon S2 based device', DeviceType::DEVBOARD ], + 'msm8660!' => [ 'Qualcomm', 'Snapdragon S3 based device', DeviceType::DEVBOARD ], + 'msm(8x25|8625|8960)!' => [ 'Qualcomm', 'Snapdragon S4 based device', DeviceType::DEVBOARD ], + 'msm8x30!' => [ 'Qualcomm', 'Snapdragon S4 Plus based device', DeviceType::DEVBOARD ], + 'msm8610!' => [ 'Qualcomm', 'Snapdragon 200 based device', DeviceType::DEVBOARD ], + 'msm8909!' => [ 'Qualcomm', 'Snapdragon 210 based device', DeviceType::DEVBOARD ], + 'msm(8226|8228)!' => [ 'Qualcomm', 'Snapdragon 400 based device', DeviceType::DEVBOARD ], + 'MSM8926!' => [ 'Qualcomm', 'Snapdragon 400 based device', DeviceType::DEVBOARD ], + 'msm8916!' => [ 'Qualcomm', 'Snapdragon 410 based device', DeviceType::DEVBOARD ], + 'msm8952!' => [ 'Qualcomm', 'Snapdragon 615 based device', DeviceType::DEVBOARD ], + 'msm8974!' => [ 'Qualcomm', 'Snapdragon 800 based device', DeviceType::DEVBOARD ], + 'MSM8992!' => [ 'Qualcomm', 'Snapdragon 808 based device', DeviceType::DEVBOARD ], + 'msm8994!' => [ 'Qualcomm', 'Snapdragon 810 based device', DeviceType::DEVBOARD ], + 'rksdk' => [ 'Rockchip', 'based device', DeviceType::DEVBOARD ], + 'rk2808(sdk)?!' => [ 'Rockchip', 'RK2808 based device', DeviceType::DEVBOARD ], + 'rk2818(sdk)?!' => [ 'Rockchip', 'RK2818 based device', DeviceType::DEVBOARD ], + 'Android-for-Rockchip-2818' => [ 'Rockchip', 'RK2818 based device', DeviceType::DEVBOARD ], + 'RK2906' => [ 'Rockchip', 'RK2906 based device', DeviceType::DEVBOARD ], + 'RK2918' => [ 'Rockchip', 'RK2918 based device', DeviceType::DEVBOARD ], + 'rk2926-q8' => [ 'Rockchip', 'RK2926 based device', DeviceType::DEVBOARD ], + 'rk2928sdk' => [ 'Rockchip', 'RK2928 based device', DeviceType::DEVBOARD ], + 'rk29sdk' => [ 'Rockchip', 'RK29 based device', DeviceType::DEVBOARD ], + 'rk30sdk!' => [ 'Rockchip', 'RK30 based device', DeviceType::DEVBOARD ], + 'rk30mtk' => [ 'Rockchip', 'RK30 based device', DeviceType::DEVBOARD ], + 'rk3026' => [ 'Rockchip', 'RK3026 based device', DeviceType::DEVBOARD ], + 'rk3028a' => [ 'Rockchip', 'RK3028 based device', DeviceType::DEVBOARD ], + 'rk3028sdk' => [ 'Rockchip', 'RK3028 based device', DeviceType::DEVBOARD ], + 'rk3036' => [ 'Rockchip', 'RK3036 based device', DeviceType::DEVBOARD ], + 'rk3066' => [ 'Rockchip', 'RK3066 based device', DeviceType::DEVBOARD ], + 'rk31sdk' => [ 'Rockchip', 'RK31 based device', DeviceType::DEVBOARD ], + 'rk31 5931' => [ 'Rockchip', 'RK31 based device', DeviceType::DEVBOARD ], + 'rk31 8089' => [ 'Rockchip', 'RK31 based device', DeviceType::DEVBOARD ], + 'rk31 872xu' => [ 'Rockchip', 'RK31 based device', DeviceType::DEVBOARD ], + 'rk31au' => [ 'Rockchip', 'RK31 based device', DeviceType::DEVBOARD ], + 'rk31rtl' => [ 'Rockchip', 'RK31 based device', DeviceType::DEVBOARD ], + 'rk312x' => [ 'Rockchip', 'RK312X based device', DeviceType::DEVBOARD ], + 'rk3188!' => [ 'Rockchip', 'RK3188 based device', DeviceType::DEVBOARD ], + 'rk3288!' => [ 'Rockchip', 'RK3288 based device', DeviceType::DEVBOARD ], + 'rk3990!' => [ 'Rockchip', 'RK3990 based device', DeviceType::DEVBOARD ], + 's3c6410' => [ 'Samsung', 'S3C6410 based device', DeviceType::DEVBOARD ], + 'smdk6410' => [ 'Samsung', 'S3C6410 based device', DeviceType::DEVBOARD ], + 'SMDKC110' => [ 'Samsung', 'Exynos 3110 based device', DeviceType::DEVBOARD ], + 'SMDKV210' => [ 'Samsung', 'Exynos 4210 based device', DeviceType::DEVBOARD ], + 'S5PV210' => [ 'Samsung', 'Exynos 4210 based device', DeviceType::DEVBOARD ], + 'sec smdkc210' => [ 'Samsung', 'Exynos 4210 based device', DeviceType::DEVBOARD ], + 'sec smdkv210' => [ 'Samsung', 'Exynos 4210 based device', DeviceType::DEVBOARD ], + 'SMDK4x12' => [ 'Samsung', 'Exynos 4212 or 4412 based device', DeviceType::DEVBOARD ], + 'SMDK4412' => [ 'Samsung', 'Exynos 4412 based device', DeviceType::DEVBOARD ], + 'SMDK5250' => [ 'Samsung', 'Exynos 5250 based device', DeviceType::DEVBOARD ], + 'SMDK5410' => [ 'Samsung', 'Exynos 5410 based device', DeviceType::DEVBOARD ], + 'Exynos5410' => [ 'Samsung', 'Exynos 5410 based device', DeviceType::DEVBOARD ], + 'smp86xx' => [ 'Sigma', 'SMP86xx based device', DeviceType::DEVBOARD ], + 'smp8734' => [ 'Sigma', 'SMP8734 based device', DeviceType::DEVBOARD ], + 'smp8756' => [ 'Sigma', 'SMP8756 based device', DeviceType::DEVBOARD ], + 'sv8860' => [ 'Skyviia', 'SV8860 based device', DeviceType::DEVBOARD ], + 'ste l8540!' => [ 'ST Ericsson', 'Novathor L8540 based device', DeviceType::DEVBOARD ], + 'ste u8500' => [ 'ST Ericsson', 'Novathor U8500 based device', DeviceType::DEVBOARD ], + 'ste u9540' => [ 'ST Ericsson', 'Novathor U9540 based device', DeviceType::DEVBOARD ], + 'Telechips M801 Evaluation Board' => [ 'Telechips', 'M801 based device', DeviceType::DEVBOARD ], + 'Telechips TCC8800 eMMC Evaluation Board' => [ 'Telechips', 'TCC8800 based device', DeviceType::DEVBOARD ], + 'Telechips TCC8800 Evaluation Board' => [ 'Telechips', 'TCC8800 based device', DeviceType::DEVBOARD ], + 'Telechips TCC8900 Evaluation Board' => [ 'Telechips', 'TCC8900 based device', DeviceType::DEVBOARD ], + 'Telechips TCC8900 Evaluation Board (US)' => [ 'Telechips', 'TCC8900 based device', DeviceType::DEVBOARD ], + 'Telechips TCC8902 Tablet-PC (DE)' => [ 'Telechips', 'TCC8902 based device', DeviceType::DEVBOARD ], + 'TCC8920 STB!' => [ 'Telechips', 'TCC8920 based device', DeviceType::DEVBOARD ], + 'TCC893X!' => [ 'Telechips', 'TCC893X based device', DeviceType::DEVBOARD ], + 'TCC8935 HDMI!' => [ 'Telechips', 'TCC8935 based device', DeviceType::DEVBOARD ], + 'TCC8975 STB!' => [ 'Telechips', 'TCC8975 based device', DeviceType::DEVBOARD ], + 'Telechips TCC9300 Evaluation Board' => [ 'Telechips', 'TCC9300 based device', DeviceType::DEVBOARD ], + 'OMAP' => [ 'Texas Instruments', 'OMAP based device', DeviceType::DEVBOARD ], + 'OMAP SS' => [ 'Texas Instruments', 'OMAP based device', DeviceType::DEVBOARD ], + 'LogicPD Zoom2' => [ 'Texas Instruments', 'OMAP based device', DeviceType::DEVBOARD ], + 'omap3evm' => [ 'Texas Instruments', 'OMAP3 based device', DeviceType::DEVBOARD ], + 'OMAP3ETPP' => [ 'Texas Instruments', 'OMAP3 based device', DeviceType::DEVBOARD ], + 'Omap5sevm' => [ 'Texas Instruments', 'OMAP5 based device', DeviceType::DEVBOARD ], + 'AM335XEVM' => [ 'Texas Instruments', 'Sitara AM335 based device', DeviceType::DEVBOARD ], + 'AM335XEVM SK' => [ 'Texas Instruments', 'Sitara AM335 based device', DeviceType::DEVBOARD ], + 'am3517evm' => [ 'Texas Instruments', 'Sitara AM351 based device', DeviceType::DEVBOARD ], + 'AM437XEVM' => [ 'Texas Instruments', 'Sitara AM437 based device', DeviceType::DEVBOARD ], + 'Colibri-T20' => [ 'Toradex', 'Colibri T20', DeviceType::DEVBOARD ], + 'pnx8473 kiryung' => [ 'Trident', 'PNX8473 based device', DeviceType::DEVBOARD ], + + /* Official Google development devices */ + 'Bravo' => [ 'HTC', 'Desire' ], + 'Dream' => [ 'HTC', 'Dream' ], + 'Vogue' => [ 'HTC', 'Touch' ], + 'Vendor Optimus' => [ 'LG', 'Optimus' ], + 'Stingray' => [ 'Motorola', 'XOOM', DeviceType::TABLET ], + 'Wingray' => [ 'Motorola', 'XOOM', DeviceType::TABLET ], + 'Blaze' => [ 'Texas Instruments', 'Blaze Tablet', DeviceType::TABLET ], + 'Blaze Tablet' => [ 'Texas Instruments', 'Blaze Tablet', DeviceType::TABLET ], + 'Google Ion' => [ 'Google', 'Ion' ], + 'Project Tango Tablet Development Kit' => [ 'Google', 'Project Tango' ], + 'Yellowstone' => [ 'Google', 'Project Tango' ], + 'Tango' => [ 'Google', 'Project Tango' ], + 'ADT-1' => [ 'Google', 'ADT-1 Developer Kit', DeviceType::TELEVISION, Flag::ANDROIDTV ], + + /* Nexus Devices (without official model no. */ + 'Passion' => [ 'HTC', 'Nexus One' ], + '(HTC )?Nexus ?One!' => [ 'HTC', 'Nexus One' ], + 'Crespo!' => [ 'Samsung', 'Nexus S' ], + '(Google )?Nexus S!' => [ 'Samsung', 'Nexus S' ], + 'Dooderbutt!' => [ 'Samsung', 'Nexus S' ], + 'LGE-lap crespo' => [ 'Samsung', 'Nexus S' ], + 'Maguro' => [ 'Samsung', 'Galaxy Nexus' ], + 'Toro' => [ 'Samsung', 'Galaxy Nexus' ], + 'Toro-VZW' => [ 'Samsung', 'Galaxy Nexus' ], + '(Google )?Galaxy Nexus!' => [ 'Samsung', 'Galaxy Nexus' ], + 'LGE-lap maguro' => [ 'Samsung', 'Galaxy Nexus' ], + 'LGE-maguro cappuccino' => [ 'Samsung', 'Galaxy Nexus' ], + '(Google )?Nexus ?4!' => [ 'LG', 'Nexus 4' ], + 'Mako' => [ 'LG', 'Nexus 4' ], + 'LGE-lap mako' => [ 'LG', 'Nexus 4' ], + 'Nexus 5X' => [ 'LG', 'Nexus 5X' ], + '(Google )?Nexus ?5!' => [ 'LG', 'Nexus 5' ], + 'HammerHead' => [ 'LG', 'Nexus 5' ], + 'LG-Nexus5' => [ 'LG', 'Nexus 5' ], + 'Nexus 6P' => [ 'Huawei', 'Nexus 6P' ], + '(Google )?Nexus ?6P!' => [ 'Huawei', 'Nexus 6P' ], + 'shamu' => [ 'Motorola', 'Nexus 6' ], + '(Google )?Nexus ?6!' => [ 'Motorola', 'Nexus 6' ], + '(Google )?Nexus ?7 2013!' => [ 'Asus', 'Nexus 7 (2013)', DeviceType::TABLET ], + 'Flo' => [ 'Asus', 'Nexus 7 (2013)', DeviceType::TABLET ], + 'Grouper' => [ 'Asus', 'Nexus 7', DeviceType::TABLET ], + 'Tilapia' => [ 'Asus', 'Nexus 7', DeviceType::TABLET ], + '(Google )?Nexus ?7!' => [ 'Asus', 'Nexus 7', DeviceType::TABLET ], + 'Flounder' => [ 'HTC', 'Nexus 9', DeviceType::TABLET ], + 'Volantis' => [ 'HTC', 'Nexus 9', DeviceType::TABLET ], + 'Volantisg' => [ 'HTC', 'Nexus 9', DeviceType::TABLET ], + '(Google )?Nexus ?9!' => [ 'HTC', 'Nexus 9', DeviceType::TABLET ], + 'manta' => [ 'Samsung', 'Nexus 10', DeviceType::TABLET ], + '(Google )?Nexus ?10!' => [ 'Samsung', 'Nexus 10', DeviceType::TABLET ], + + /* Pixel Devices */ + 'Pixel C' => [ 'Google', 'Pixel C', DeviceType::TABLET ], + 'Pixel' => [ 'Google', 'Pixel' ], + 'Google Pixel' => [ 'Google', 'Pixel' ], + 'Pixel XL' => [ 'Google', 'Pixel XL' ], + 'Google Pixel XL' => [ 'Google', 'Pixel XL' ], + 'Pixel 2' => [ 'Google', 'Pixel 2' ], + 'Google Pixel 2' => [ 'Google', 'Pixel 2' ], + 'Pixel 2XL' => [ 'Google', 'Pixel 2 XL' ], + 'Pixel 2 XL' => [ 'Google', 'Pixel 2 XL' ], + 'Google Pixel 2XL' => [ 'Google', 'Pixel 2 XL' ], + + /* Google Edition */ + 'HTC One' => [ 'HTC', 'One (Google Edition)' ], + 'Moto E' => [ 'Motorola', 'Moto E (Google Edition)' ], + 'Moto G' => [ 'Motorola', 'Moto G (Google Edition)' ], + 'Moto G LTE' => [ 'Motorola', 'Moto G (Google Edition)' ], + 'Moto G 2014' => [ 'Motorola', 'Moto G (Google Edition, 2014)' ], + 'Moto G 2014 LTE' => [ 'Motorola', 'Moto G (Google Edition, 2014)' ], + 'Moto G (2014)' => [ 'Motorola', 'Moto G (Google Edition, 2014)' ], + 'Moto X' => [ 'Motorola', 'Moto X (Google Edition)' ], + 'GT-I9505G' => [ 'Samsung', 'Galaxy S4 (Google Edition)' ], + 'Galaxy S4 Google Editon' => [ 'Samsung', 'Galaxy S4 (Google Edition)' ], + 'SM-G900FG' => [ 'Samsung', 'Galaxy S5 (Google Edition)' ], + 'Xperia Z Ultra' => [ 'Sony', 'Xperia Z Ultra (Google Edition)' ], + + /* Google Glass */ + 'Glass 1' => [ 'Google', 'Glass', DeviceType::HEADSET, Flag::GOOGLEGLASS ], + + /* Android Wear */ + 'ZenWatch' => [ 'Asus', 'ZenWatch', DeviceType::WATCH, Flag::ANDROIDWEAR ], + 'ZenWatch 2' => [ 'Asus', 'ZenWatch 2', DeviceType::WATCH, Flag::ANDROIDWEAR ], + 'HUAWEI WATCH' => [ 'Huawei', 'Watch', DeviceType::WATCH, Flag::ANDROIDWEAR ], + 'G Watch' => [ 'LG', 'G Watch', DeviceType::WATCH, Flag::ANDROIDWEAR ], + 'G Watch R' => [ 'LG', 'G Watch R', DeviceType::WATCH, Flag::ANDROIDWEAR ], + 'LG-Watch Urbane' => [ 'LG', 'G Watch Urbane', DeviceType::WATCH, Flag::ANDROIDWEAR ], + 'Moto 360' => [ 'Motorola', 'Moto 360', DeviceType::WATCH, Flag::ANDROIDWEAR ], + 'Gear Live' => [ 'Samsung', 'Gear Live', DeviceType::WATCH, Flag::ANDROIDWEAR ], + 'SmartWatch 3' => [ 'Sony', 'SmartWatch 3', DeviceType::WATCH, Flag::ANDROIDWEAR ], + + /* Android TV */ + 'Nexus Player' => [ 'Asus', 'Nexus Player', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'SVP-DTV15' => [ 'Sony', 'Bravia Android TV (2015)', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'BRAVIA 2015' => [ 'Sony', 'Bravia Android TV (2015)', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'BRAVIA 4K 2015' => [ 'Sony', 'Bravia Android TV (2015)', DeviceType::TELEVISION, Flag::ANDROIDTV ], + 'BRAVIA 4K GB' => [ 'Sony', 'Bravia Android TV (2016)', DeviceType::TELEVISION, Flag::ANDROIDTV ], + 'QV151E' => [ 'Philips', 'Android TV (2015)', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'QM151E' => [ 'Philips', 'Android TV (2015)', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'QM152E' => [ 'Philips', 'Android TV (2015)', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'QM163E' => [ 'Philips', 'Android TV (2016)', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'PH7M EU 5596' => [ 'Philips', 'Android TV (2016)', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'SHIELD Console' => [ 'Nvidia', 'SHIELD Android TV', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'SHIELD Android TV' => [ 'Nvidia', 'SHIELD Android TV', DeviceType::TELEVISION, Flag::ANDROIDTV], + 'SHIELD Andr0id TV' => [ 'Nvidia', 'SHIELD Android TV', DeviceType::TELEVISION, Flag::ANDROIDTV], + + /* Chromebook */ + + 'Acer Chromebook R11' => [ 'Acer', 'Chromebook R11', DeviceType::DESKTOP ], + 'Acer Chromebook R11 (CB5-132T / C738T)' => [ 'Acer', 'Chromebook R11', DeviceType::DESKTOP ], + 'Acer Chromebook 15 (CB3-532)' => [ 'Acer', 'Chromebook 15', DeviceType::DESKTOP ], + 'ASUS Chromebook Flip C100PA' => [ 'Asus', 'Chromebook Flip', DeviceType::DESKTOP ], + 'ASUS Chromebook Flip C302' => [ 'Asus', 'Chromebook Flip', DeviceType::DESKTOP ], + 'Google Chromebook Pixel (2015)' => [ 'Google', 'Chromebook Pixel (2015)', DeviceType::DESKTOP ], + 'HP Chromebook x360 11 G1 EE' => [ 'Google', 'Chromebook x360 11 G1 EE', DeviceType::DESKTOP ], + 'Samsung Chromebook 3' => [ 'Samsung', 'Chromebook 3', DeviceType::DESKTOP ], + + /* Middleware and emulators */ + 'BlueStacks!' => [ 'BlueStacks', 'App Player', DeviceType::DESKTOP ], + 'App Runtime for Chrome' => [ 'Google', 'App Runtime for Chrome', DeviceType::DESKTOP ], + 'youwave custom' => [ 'Youwave', 'Android on PC', DeviceType::DESKTOP ], + 'BlackBerry Runtime for Android Apps' => [ 'RIM', 'BlackBerry (Android Runtime)', DeviceType::MOBILE ], + 'alien jolla bionic' => [ 'Jolla', 'Sailfish (Android Runtime)', DeviceType::MOBILE ], + 'Jolla' => [ 'Jolla', 'Sailfish (Android Runtime)', DeviceType::MOBILE ], + 'alien ubuntu qt' => [ 'Ubuntu', 'Touch (Android Runtime)', DeviceType::MOBILE ], + 'full Android on Microsoft Windows, pad, pc, n*books' => [ 'SocketeQ', 'WindowsAndroid', DeviceType::DESKTOP ], + 'VMware Virtual Platform' => [ 'VMWare', 'Virtual Platform', DeviceType::DESKTOP ], + 'Xamarin Android Player!' => [ 'Xamarin', 'Android Player', DeviceType::EMULATOR ], + + /* TV sticks */ + 'CX-919' => [ null, 'CX-919', DeviceType::TELEVISION ], + 'CX-921' => [ null, 'CX-921', DeviceType::TELEVISION ], + 'CX-921B' => [ null, 'CX-921B', DeviceType::TELEVISION ], + 'CX-929' => [ null, 'CX-929', DeviceType::TELEVISION ], + 'CX-950' => [ null, 'CX-950', DeviceType::TELEVISION ], + 'CX-958' => [ null, 'CX-958', DeviceType::TELEVISION ], + 'VEOLO' => [ 'A.C. Ryan', 'VEOLO Smart Android Hub', DeviceType::TELEVISION ], + 'VEOLO2' => [ 'A.C. Ryan', 'VEOLO2 Smart Android Hub', DeviceType::TELEVISION ], + 'Astone A108' => [ 'Astone', 'A108', DeviceType::TELEVISION ], + 'BenQ JD-130' => [ 'BenQ', 'JD-130', DeviceType::TELEVISION ], + 'BenQ Android TV' => [ 'BenQ', 'JD-130', DeviceType::TELEVISION ], + 'EVOKE HDI Box' => [ 'Evoke', 'HDI TV Box', DeviceType::TELEVISION ], + 'Ezcast' => [ 'Ezcast', 'Dongle', DeviceType::TELEVISION ], + 'JT SmartPC02' => [ 'Joy-IT', 'Smart PC', DeviceType::TELEVISION ], + 'M3 Enjoy TV Box' => [ 'Geniatech', 'Enjoy TV', DeviceType::TELEVISION ], + 'MX Enjoy TV BOX' => [ 'Geniatech', 'Enjoy TV', DeviceType::TELEVISION ], + 'TOUCAN Stick HD' => [ 'iconBit', 'Toucan Stick HD', DeviceType::TELEVISION ], + 'TOUCAN Stick G4' => [ 'iconBit', 'Toucan Stick G4', DeviceType::TELEVISION ], + 'Toucan Stick 4K' => [ 'iconBit', 'Toucan Stick 4K', DeviceType::TELEVISION ], + 'TOUCAN Stick 3D mk2' => [ 'iconBit', 'Toucan Stick 3D', DeviceType::TELEVISION ], + 'TOUCAN Stick 3D Pro' => [ 'iconBit', 'Toucan Stick 3D Pro', DeviceType::TELEVISION ], + 'NEO-G4' => [ 'Minix', 'Neo G4', DeviceType::TELEVISION ], + 'NEO-G4-108A' => [ 'Minix', 'Neo G4', DeviceType::TELEVISION ], + 'NEO-G4 a' => [ 'Minix', 'Neo G4 a', DeviceType::TELEVISION ], + 'NEO-U9-H' => [ 'Minix', 'Neo U9-H', DeviceType::TELEVISION ], + 'NEO-X5' => [ 'Minix', 'Neo X5', DeviceType::TELEVISION ], + 'NEO X5' => [ 'Minix', 'Neo X5', DeviceType::TELEVISION ], + 'Neo-X5-B' => [ 'Minix', 'Neo X5', DeviceType::TELEVISION ], + 'NEO-X5-116A' => [ 'Minix', 'Neo X5', DeviceType::TELEVISION ], + 'NEO-X5-mini' => [ 'Minix', 'Neo X5 mini', DeviceType::TELEVISION ], + 'NEO X5 mini' => [ 'Minix', 'Neo X5 mini', DeviceType::TELEVISION ], + 'NEO-X6' => [ 'Minix', 'Neo X6', DeviceType::TELEVISION ], + 'NEO-X7-216A' => [ 'Minix', 'Neo X7', DeviceType::TELEVISION ], + 'NEO-X7-mini' => [ 'Minix', 'Neo X7 mini', DeviceType::TELEVISION ], + 'NEO-X8' => [ 'Minix', 'Neo X8', DeviceType::TELEVISION ], + 'NEO-X8-H' => [ 'Minix', 'Neo X8', DeviceType::TELEVISION ], + 'NEO-X8H-PLUS' => [ 'Minix', 'Neo X8+', DeviceType::TELEVISION ], + 'RKM MK602' => [ 'Rikomagic', 'MK602', DeviceType::TELEVISION ], + 'Rikomagic MK802' => [ 'Rikomagic', 'MK802', DeviceType::TELEVISION ], + 'Rikomagic MK802 ?II!' => [ 'Rikomagic', 'MK802 II', DeviceType::TELEVISION ], + 'Rikomagic MK802III' => [ 'Rikomagic', 'MK802 III', DeviceType::TELEVISION ], + 'Rikomagic MK802IIIS' => [ 'Rikomagic', 'MK802 IIIS', DeviceType::TELEVISION ], + 'RKM MK802IIIS' => [ 'Rikomagic', 'MK802 IIIS', DeviceType::TELEVISION ], + 'RKM MK802IV' => [ 'Rikomagic', 'MK802 IV', DeviceType::TELEVISION ], + 'MK808' => [ 'Rikomagic', 'MK808', DeviceType::TELEVISION ], + 'MK808B' => [ 'Rikomagic', 'MK808 B', DeviceType::TELEVISION ], + 'MK809' => [ 'Rikomagic', 'MK809', DeviceType::TELEVISION ], + 'MK809B' => [ 'Rikomagic', 'MK809 B', DeviceType::TELEVISION ], + 'MK809IV' => [ 'Rikomagic', 'MK809 IV', DeviceType::TELEVISION ], + 'MK818B' => [ 'Rikomagic', 'MK818 B', DeviceType::TELEVISION ], + 'RKM MK902' => [ 'Rikomagic', 'MK902', DeviceType::TELEVISION ], + 'RKM MK902II' => [ 'Rikomagic', 'MK902 II', DeviceType::TELEVISION ], + 'MK908' => [ 'Rikomagic', 'MK908', DeviceType::TELEVISION ], + 'MK908II' => [ 'Rikomagic', 'MK908 II', DeviceType::TELEVISION ], + 'GK802' => [ 'Rikomagic', 'GK802', DeviceType::TELEVISION ], + 'XW-I8' => [ 'Sambao', 'XW-I8', DeviceType::TELEVISION ], + 'TCC8920 EVM' => [ 'Telechips', 'TCC8920', DeviceType::TELEVISION ], + 'TCC8925 HDMI DONGLE' => [ 'Telechips', 'TCC8925', DeviceType::TELEVISION ], + 'TCC8930 STB EV' => [ 'Telechips', 'TCC8930', DeviceType::TELEVISION ], + 'TCC8930 STB1' => [ 'Telechips', 'TCC8930', DeviceType::TELEVISION ], + 'TCC8935 HDMI DONGLE' => [ 'Telechips', 'TCC8935', DeviceType::TELEVISION ], + + /* Game consoles */ + 'OUYA( Console)?!' => [ 'OUYA', 'OUYA', [ DeviceType::GAMING, DeviceSubType::CONSOLE ] ], + 'SHIELD' => [ 'Nvidia', 'SHIELD', [ DeviceType::GAMING, DeviceSubType::CONSOLE ] ], + 'shieldtablet' => [ 'Nvidia', 'SHIELD Tablet', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ], + 'SHIELD Tablet' => [ 'Nvidia', 'SHIELD Tablet', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ], + 'SHIELD Tablet K1' => [ 'Nvidia', 'SHIELD Tablet K1', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ], + 'SHIELD Tablet X1' => [ 'Nvidia', 'SHIELD Tablet X1', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ], + 'SHIELD Tablet II' => [ 'Nvidia', 'SHIELD Tablet II', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ], + + 'EMBT3C' => [ 'EPSON', 'MOVERIO BT-300', DeviceType::HEADSET ], + + /* Regular devices */ + 'EL72B' => [ '3Q', 'Qoo! Q-Book EL72B', DeviceType::TABLET ], + + '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!' => [ + 'AC0731B' => [ '3Q', 'Qoo! Q-Pad AC0731B', DeviceType::TABLET ], + 'AC1024C' => [ '3Q', 'Qoo! Q-Pad AC1024C', DeviceType::TABLET ], + 'AC7803C' => [ '3Q', 'Qoo! Q-Pad AC7803C', DeviceType::TABLET ], + 'BC9710A' => [ '3Q', 'Qoo! Q-Pad BC9710A', DeviceType::TABLET ], + 'BC9710AM' => [ '3Q', 'Qoo! Q-Pad BC9710A', DeviceType::TABLET ], + 'LC0720C' => [ '3Q', 'Qoo! Q-Pad LC0720C', DeviceType::TABLET ], + 'LC0723B' => [ '3Q', 'Qoo! Q-Pad LC0723B', DeviceType::TABLET ], + 'LC0725B' => [ '3Q', 'Qoo! Q-Pad LC0725B', DeviceType::TABLET ], + 'LC0804B' => [ '3Q', 'Qoo! Q-Pad LC0804B', DeviceType::TABLET ], + 'LC0808B' => [ '3Q', 'Qoo! Q-Pad LC0808B', DeviceType::TABLET ], + 'LC0809B' => [ '3Q', 'Qoo! Q-Pad LC0809B', DeviceType::TABLET ], + 'LC0810C' => [ '3Q', 'Qoo! Q-Pad LC0810C', DeviceType::TABLET ], + 'LC0816C' => [ '3Q', 'Qoo! Q-Pad LC0816C', DeviceType::TABLET ], + 'LC0901D' => [ '3Q', 'Qoo! Q-Pad LC0901D', DeviceType::TABLET ], + 'LC1016C' => [ '3Q', 'Qoo! Q-Pad LC1016C', DeviceType::TABLET ], + 'LC9721C' => [ '3Q', 'Qoo! Q-Pad LC9721C', DeviceType::TABLET ], + 'MT0724B' => [ '3Q', 'Qoo! Q-Pad MT0724B', DeviceType::TABLET ], + 'MT0729B' => [ '3Q', 'Qoo! Q-Pad MT0729B', DeviceType::TABLET ], + 'MT0729D' => [ '3Q', 'Qoo! Q-Pad MT0729D', DeviceType::TABLET ], + 'MT0811B' => [ '3Q', 'Qoo! Q-Pad MT0811B', DeviceType::TABLET ], + 'MT7801C' => [ '3Q', 'Qoo! Q-Pad MT7801C', DeviceType::TABLET ], + 'RC0709B' => [ '3Q', 'Qoo! Q-Pad RC0709B', DeviceType::TABLET ], + 'RC0710B' => [ '3Q', 'Qoo! Q-Pad RC0710B', DeviceType::TABLET ], + 'RC0718C' => [ '3Q', 'Qoo! Q-Pad RC0718C', DeviceType::TABLET ], + 'RC0719H' => [ '3Q', 'Qoo! Q-Pad RC0719H', DeviceType::TABLET ], + 'RC0721B' => [ '3Q', 'Qoo! Q-Pad RC0721B', DeviceType::TABLET ], + 'RC0722C' => [ '3Q', 'Qoo! Q-Pad RC0722C', DeviceType::TABLET ], + 'RC0726B' => [ '3Q', 'Qoo! Q-Pad RC0726B', DeviceType::TABLET ], + 'RC0734H' => [ '3Q', 'Qoo! Q-Pad RC0734H', DeviceType::TABLET ], + 'RC0738C' => [ '3Q', 'Qoo! Q-Pad RC0738C', DeviceType::TABLET ], + 'RC0743H' => [ '3Q', 'Qoo! Q-Pad RC0743H', DeviceType::TABLET ], + 'RC0813C' => [ '3Q', 'Qoo! Q-Pad RC0813C', DeviceType::TABLET ], + 'RC0813CM' => [ '3Q', 'Qoo! Q-Pad RC0813CM', DeviceType::TABLET ], + 'RC0817C' => [ '3Q', 'Qoo! Q-Pad RC0817C', DeviceType::TABLET ], + 'RC1018C' => [ '3Q', 'Qoo! Q-Pad RC1018C', DeviceType::TABLET ], + 'RC1019G' => [ '3Q', 'Qoo! Q-Pad RC1019G', DeviceType::TABLET ], + 'RC1025F' => [ '3Q', 'Qoo! Q-Pad RC1025F', DeviceType::TABLET ], + 'RC1301C' => [ '3Q', 'Qoo! Q-Pad RC1301C', DeviceType::TABLET ], + 'RC7802F' => [ '3Q', 'Qoo! Q-Pad RC7802F', DeviceType::TABLET ], + 'RC9711B' => [ '3Q', 'Qoo! Q-Pad RC9711B', DeviceType::TABLET ], + 'RC9712C' => [ '3Q', 'Qoo! Q-Pad RC9712C', DeviceType::TABLET ], + 'RC9716B' => [ '3Q', 'Qoo! Q-Pad RC9716B', DeviceType::TABLET ], + 'RC9717B' => [ '3Q', 'Qoo! Q-Pad RC9717B', DeviceType::TABLET ], + 'RC9724C' => [ '3Q', 'Qoo! Q-Pad RC9724C', DeviceType::TABLET ], + 'RC9726C' => [ '3Q', 'Qoo! Q-Pad RC9726C', DeviceType::TABLET ], + 'RC9727F' => [ '3Q', 'Qoo! Q-Pad RC9727F', DeviceType::TABLET ], + 'RC9730C' => [ '3Q', 'Qoo! Q-Pad RC9730C', DeviceType::TABLET ], + 'RC9731C' => [ '3Q', 'Qoo! Q-Pad RC9731C', DeviceType::TABLET ], + 'QS0715C' => [ '3Q', 'Qoo! Q-Pad QS0715C', DeviceType::TABLET ], + 'QS0716D' => [ '3Q', 'Qoo! Q-Pad QS0716D', DeviceType::TABLET ], + 'QS0717D' => [ '3Q', 'Qoo! Q-Pad QS0717D', DeviceType::TABLET ], + 'QS0728C' => [ '3Q', 'Qoo! Q-Pad QS0728C', DeviceType::TABLET ], + 'QS0730C' => [ '3Q', 'Qoo! Q-Pad QS0730C', DeviceType::TABLET ], + 'QS0815C' => [ '3Q', 'Qoo! Q-Pad QS0815C', DeviceType::TABLET ], + 'QS9718C' => [ '3Q', 'Qoo! Q-Pad QS9718C', DeviceType::TABLET ], + 'VM1017A' => [ '3Q', 'Qoo! Q-Pad VM1017A', DeviceType::TABLET ], + 'TS0807B' => [ '3Q', 'Qoo! Q-Note TS0807B', DeviceType::TABLET ], + 'TS1003T' => [ '3Q', 'Qoo! Surf Tablet TS1003T', DeviceType::TABLET ], + 'TS1004T' => [ '3Q', 'Qoo! Surf Tablet TS1004T', DeviceType::TABLET ], + 'TS1009B' => [ '3Q', 'Qoo! Surf Tablet TS1009B', DeviceType::TABLET ], + 'TS1013B' => [ '3Q', 'Qoo! Surf Tablet TS1013B', DeviceType::TABLET ], + 'TS9708B' => [ '3Q', 'Qoo! Surf Tablet TS9708B', DeviceType::TABLET ], + 'OC1020A' => [ '3Q', 'Qoo! Surf Tablet OC1020A', DeviceType::TABLET ], + 'QS9715F' => [ '3Q', 'Qoo! Surf Tablet QS9715F', DeviceType::TABLET ], + 'QS9719D' => [ '3Q', 'Qoo! Surf Tablet QS9719D', DeviceType::TABLET ], + 'QS1023H' => [ '3Q', 'Qoo! Surf Tablet QS1023H', DeviceType::TABLET ], + 'VM0711A' => [ '3Q', 'Qoo! Surf Tablet VM0711A', DeviceType::TABLET ], + ], + + 'BioniQ!!' => [ + 'BioniQ 700' => [ 'a-rival', 'BioniQ 700', DeviceType::TABLET ], + 'BioniQ700HX' => [ 'a-rival', 'BioniQ 700 HX', DeviceType::TABLET ], + 'BioniQ 800' => [ 'a-rival', 'BioniQ 800', DeviceType::TABLET ], + 'BioniQ 1001' => [ 'a-rival', 'BioniQ 1001', DeviceType::TABLET ], + 'BioniQ 8008' => [ 'a-rival', 'BioniQ 8008', DeviceType::TABLET ], + ], + + 'RTC-700A' => [ 'Aaeon', 'RTC-700A', DeviceType::TABLET ], + 'aspire1000s' => [ 'Acer', '1000 Series', DeviceType::DESKTOP ], + + 'A[0-9]{3,3}!!' => [ + 'A100' => [ 'Acer', 'Iconia Tab A100', DeviceType::TABLET ], + 'A101' => [ 'Acer', 'Iconia Tab A101', DeviceType::TABLET ], + 'A110' => [ 'Acer', 'Iconia Tab A110', DeviceType::TABLET ], + 'A200' => [ 'Acer', 'Iconia Tab A200', DeviceType::TABLET ], + 'A200 3G' => [ 'Acer', 'Iconia Tab A200', DeviceType::TABLET ], + 'A210' => [ 'Acer', 'Iconia Tab A210', DeviceType::TABLET ], + 'A211' => [ 'Acer', 'Iconia Tab A211', DeviceType::TABLET ], + 'A500' => [ 'Acer', 'Iconia Tab A500', DeviceType::TABLET ], + 'A501' => [ 'Acer', 'Iconia Tab A501', DeviceType::TABLET ], + 'A510' => [ 'Acer', 'Iconia Tab A510', DeviceType::TABLET ], + 'A511' => [ 'Acer', 'Iconia Tab A511', DeviceType::TABLET ], + 'A700' => [ 'Acer', 'Iconia Tab A700', DeviceType::TABLET ], + 'A701' => [ 'Acer', 'Iconia Tab A701', DeviceType::TABLET ], + 'A800' => [ 'Acer', 'Iconia Tab A800', DeviceType::TABLET ], + ], + + 'P2A700' => [ 'Acer', 'Iconia Tab A700', DeviceType::TABLET ], + + 'A1-[0-9]{3,3}!!' => [ + 'A1-713' => [ 'Acer', 'Iconia Tab 7 A1-713', DeviceType::TABLET ], + 'A1-713HD' => [ 'Acer', 'Iconia Tab 7 A1-713 HD', DeviceType::TABLET ], + 'A1-724' => [ 'Acer', 'Iconia TalkTab 7 A1-724', DeviceType::TABLET ], + 'A1-734' => [ 'Acer', 'Iconia Talk S A1-734', DeviceType::TABLET ], + 'A1-810' => [ 'Acer', 'Iconia A1-810', DeviceType::TABLET ], + 'A1-811' => [ 'Acer', 'Iconia A1-811', DeviceType::TABLET ], + 'A1-812' => [ 'Acer', 'Iconia A1-812', DeviceType::TABLET ], + 'A1-820' => [ 'Acer', 'Iconia A1-820', DeviceType::TABLET ], + 'A1-830' => [ 'Acer', 'Iconia A1-830', DeviceType::TABLET ], + 'A1-840' => [ 'Acer', 'Iconia Tab 8 A1-840', DeviceType::TABLET ], + 'A1-840FHD' => [ 'Acer', 'Iconia Tab 8 A1-840 FHD', DeviceType::TABLET ], + 'A1-841' => [ 'Acer', 'Iconia Tab 8 A1-841', DeviceType::TABLET ], + 'A1-850' => [ 'Acer', 'Iconia One 8 A1-850', DeviceType::TABLET ], + 'A1-860' => [ 'Acer', 'Iconia Tab 8 A1-860', DeviceType::TABLET ], + ], + + 'A3-A[0-9]{2,2}!!' => [ + 'A3-A10' => [ 'Acer', 'Iconia A3-A10', DeviceType::TABLET ], + 'A3-A11' => [ 'Acer', 'Iconia A3-A11', DeviceType::TABLET ], + 'A3-A20' => [ 'Acer', 'Iconia Tab 10 A3-A20', DeviceType::TABLET ], + 'A3-A20FHD' => [ 'Acer', 'Iconia Tab 10 A3-A20 FHD', DeviceType::TABLET ], + 'A3-A30' => [ 'Acer', 'Iconia Tab 10 A3-A30', DeviceType::TABLET ], + 'A3-A40' => [ 'Acer', 'Iconia Tab 10 A3-A40', DeviceType::TABLET ], + ], + + 'B1-[A0-9][A0-9]{2,2}!!' => [ + 'B1-A71' => [ 'Acer', 'Iconia B1-A71', DeviceType::TABLET ], + 'B1-710' => [ 'Acer', 'Iconia B1-710', DeviceType::TABLET ], + 'B1-711' => [ 'Acer', 'Iconia B1-711', DeviceType::TABLET ], + 'B1-713' => [ 'Acer', 'Iconia B1-713', DeviceType::TABLET ], + 'B1-720' => [ 'Acer', 'Iconia B1-720', DeviceType::TABLET ], + 'B1-721' => [ 'Acer', 'Iconia B1-721', DeviceType::TABLET ], + 'B1-723' => [ 'Acer', 'Iconia B1-723', DeviceType::TABLET ], + 'B1-730' => [ 'Acer', 'Iconia One 7 B1-730', DeviceType::TABLET ], + 'B1-730HD' => [ 'Acer', 'Iconia One 7 B1-730 HD', DeviceType::TABLET ], + 'B1-750' => [ 'Acer', 'Iconia One 7 B1-750', DeviceType::TABLET ], + 'B1-760' => [ 'Acer', 'Iconia One 7 B1-760', DeviceType::TABLET ], + 'B1-760HD' => [ 'Acer', 'Iconia One 7 B1-760 HD', DeviceType::TABLET ], + 'B1-770' => [ 'Acer', 'Iconia One 7 B1-770', DeviceType::TABLET ], + 'B1-780' => [ 'Acer', 'Iconia One 7 B1-780', DeviceType::TABLET ], + 'B1-790' => [ 'Acer', 'Iconia One 7 B1-790', DeviceType::TABLET ], + 'B1-7A0' => [ 'Acer', 'Iconia One 7 B1-7A0', DeviceType::TABLET ], + 'B1-810' => [ 'Acer', 'Iconia One 8 B1-810', DeviceType::TABLET ], + 'B1-820' => [ 'Acer', 'Iconia One 8 B1-820', DeviceType::TABLET ], + 'B1-830' => [ 'Acer', 'Iconia One 8 B1-830', DeviceType::TABLET ], + 'B1-850' => [ 'Acer', 'Iconia One 8 B1-850', DeviceType::TABLET ], + 'B1-860A' => [ 'Acer', 'Iconia One 8 B1-860A', DeviceType::TABLET ], + ], + + 'B3-A10' => [ 'Acer', 'Iconia One 10 B3-A10', DeviceType::TABLET ], + 'B3-A20' => [ 'Acer', 'Iconia One 10 B3-A20', DeviceType::TABLET ], + 'B3-A20B' => [ 'Acer', 'Iconia One 10 B3-A20B', DeviceType::TABLET ], + 'B3-A30' => [ 'Acer', 'Iconia One 10 B3-A30', DeviceType::TABLET ], + 'B3-A32' => [ 'Acer', 'Iconia One 10 B3-A32', DeviceType::TABLET ], + 'B3-A40' => [ 'Acer', 'Iconia One 10 B3-A40', DeviceType::TABLET ], + 'B3-A40FHD' => [ 'Acer', 'Iconia One 10 B3-A40FHD', DeviceType::TABLET ], + + 'One 7 M77GHG' => [ 'Acer', 'Iconia One 7 M77GHG', DeviceType::TABLET ], + 'TD070VA1' => [ 'Acer', 'Iconia One 7 TD070VA1', DeviceType::TABLET ], + + 'ICONIA!!' => [ + 'ICONIA Tab W500' => [ 'Acer', 'Iconia W500', DeviceType::TABLET ], + 'ICONIA Tab W500P' => [ 'Acer', 'Iconia W500P', DeviceType::TABLET ], + 'ICONIA Tab W501' => [ 'Acer', 'Iconia W501', DeviceType::TABLET ], + 'ICONIA W700' => [ 'Acer', 'Iconia W700', DeviceType::TABLET ], + ], + + 'GT-810' => [ 'Acer', 'Predator 8', DeviceType::TABLET ], + + 'E[0-9]{2,2}0?!!' => [ + 'E110' => [ 'Acer', 'beTouch E110' ], + 'E120' => [ 'Acer', 'beTouch E120' ], + 'E130' => [ 'Acer', 'beTouch E130' ], + 'E140' => [ 'Acer', 'beTouch E140' ], + 'E210' => [ 'Acer', 'beTouch E210' ], + 'E310' => [ 'Acer', 'Liquid mini' ], + 'E320' => [ 'Acer', 'Liquid Express' ], + 'E330' => [ 'Acer', 'Liquid Glow' ], + 'E350' => [ 'Acer', 'Liquid Gallant' ], + 'E380' => [ 'Acer', 'Liquid E3' ], + 'E400' => [ 'Acer', 'beTouch E400' ], + 'E600' => [ 'Acer', 'Liquid E600' ], + 'E39' => [ 'Acer', 'Liquid E700' ], + ], + + 'I110' => [ 'Acer', 'Liquid C1' ], + + 'S[0-9]{2,2}0?!!' => [ + 'S100' => [ 'Acer', 'Liquid' ], + 'S110' => [ 'Acer', 'Stream' ], + 'S120' => [ 'Acer', 'Liquid mt' ], + 'S300' => [ 'Acer', 'Iconia Smart' ], + 'S500' => [ 'Acer', 'CloudMobile' ], + 'S510' => [ 'Acer', 'Liquid S' ], + 'S520' => [ 'Acer', 'Liquid S2' ], + 'S53' => [ 'Acer', 'Liquid S3' ], + 'S55' => [ 'Acer', 'Liquid Jade' ], + 'S56' => [ 'Acer', 'Liquid Jade S' ], + 'S57' => [ 'Acer', 'Liquid Jade Z' ], + 'S59' => [ 'Acer', 'Liquid X2' ], + ], + + 'V[0-9]{2,2}0!!' => [ + 'V360' => [ 'Acer', 'Liquid E1' ], + 'V370' => [ 'Acer', 'Liquid E2' ], + 'V380' => [ 'Acer', 'Liquid E3' ], + ], + + 'Z[0-9]{3,3}!!' => [ + 'Z110' => [ 'Acer', 'Liquid Z' ], + 'Z120' => [ 'Acer', 'Liquid Z2' ], + 'Z130' => [ 'Acer', 'Liquid Z3' ], + 'Z140' => [ 'Acer', 'Liquid Z4' ], + 'Z150' => [ 'Acer', 'Liquid Z5' ], + 'Z160' => [ 'Acer', 'Liquid Z4' ], + 'Z200' => [ 'Acer', 'Liquid Z200' ], + 'Z205' => [ 'Acer', 'Liquid Z205' ], + 'Z205P' => [ 'Acer', 'Liquid Z205' ], + 'Z220' => [ 'Acer', 'Liquid Z220' ], + 'Z410' => [ 'Acer', 'Liquid Z410' ], + 'Z500' => [ 'Acer', 'Liquid Z500' ], + 'Z520' => [ 'Acer', 'Liquid Z520' ], + 'Z530' => [ 'Acer', 'Liquid Z530' ], + ], + + 'Z4' => [ 'Acer', 'Liquid Z4' ], + 'T01' => [ 'Acer', 'Liquid Z330' ], + 'T012' => [ 'Acer', 'Liquid Z330' ], + 'T02' => [ 'Acer', 'Liquid Z530' ], + 'T05' => [ 'Acer', 'Liquid Z530S' ], + 'T03' => [ 'Acer', 'Liquid Z630' ], + 'T04' => [ 'Acer', 'Liquid Z630S' ], + 'TD600' => [ 'Acer', 'beTouch TD600' ], + 'AK330' => [ 'Acer', 'Liquid Gallant Duo' ], + 'AK330s' => [ 'Acer', 'Liquid Gallant Duo' ], + 'AT390' => [ 'Acer', 'Liquid C' ], + 'E1 v360' => [ 'Acer', 'Liquid E1' ], + 'v360 E1' => [ 'Acer', 'Liquid E1' ], + + 'Liquid!!' => [ + 'Liquid' => [ 'Acer', 'Liquid' ], + 'Liquid E' => [ 'Acer', 'Liquid E' ], + 'LIQUID E1' => [ 'Acer', 'Liquid E1 ' ], + 'LIQUID E2' => [ 'Acer', 'Liquid E2 ' ], + 'LIQUID E3' => [ 'Acer', 'Liquid E3 ' ], + 'Liquid MT' => [ 'Acer', 'Liquid mt' ], + 'Liquid Metal' => [ 'Acer', 'Liquid mt' ], + 'Liquid Z205' => [ 'Acer', 'Liquid Z205' ], + ], + + 'Stream' => [ 'Acer', 'Stream' ], + 'M3-2200' => [ 'Acer', 'M3-2200', DeviceType::TABLET ], + 'MWND1' => [ 'Acer', 'MWND1 Android Dongle', DeviceType::TELEVISION ], + + 'DA2[0-9]{2,2}[A-Z]+!!' => [ + 'DA220HQL' => [ 'Acer', 'Touch and 3D Monitor DA220HQL', DeviceType::MONITOR ], + 'DA221HQL' => [ 'Acer', 'Touch and 3D Monitor DA221HQL', DeviceType::MONITOR ], + 'DA222HQL' => [ 'Acer', 'Touch and 3D Monitor DA222HQL', DeviceType::MONITOR ], + 'DA222HQLA' => [ 'Acer', 'Touch and 3D Monitor DA222HQL', DeviceType::MONITOR ], + 'DA223HQL' => [ 'Acer', 'All-in-One DA223HQL', DeviceType::MONITOR ], + 'DA226HQ' => [ 'Acer', 'All-in-One DA226HQ', DeviceType::MONITOR ], + 'DA241HL' => [ 'Acer', 'All-in-One DA241HL', DeviceType::MONITOR ], + 'DA245HQL' => [ 'Acer', 'Touch and 3D Monitor DA245HQL', DeviceType::MONITOR ], + ], + + 'TA272HUL' => [ 'Acer', 'All-in-One TA272HUL', DeviceType::MONITOR ], + + 'AA3-600' => [ 'Acer', 'Aspire A3', DeviceType::DESKTOP ], + + 'Aspire!!' => [ + 'Aspire (A[0-9])!' => [ 'Acer', 'Aspire $1', DeviceType::DESKTOP ], + 'Aspire ([0-9]{4,4}[A-Z]?)!' => [ 'Acer', 'Aspire $1', DeviceType::DESKTOP ], + 'Aspire ([A-Z][A-Z0-9]-[0-9]{3,3}[A-Z]?)!' => [ 'Acer', 'Aspire $1', DeviceType::DESKTOP ], + 'Aspire ([A-Z][0-9]{4,4}[A-Z]?)!' => [ 'Acer', 'Aspire $1', DeviceType::DESKTOP ], + 'Aspire ([A-Z]{2,2}[0-9]-[0-9]{3,3})!' => [ 'Acer', 'Aspire $1', DeviceType::DESKTOP ], + 'Aspire one' => [ 'Acer', 'Aspire One', DeviceType::DESKTOP ], + 'Aspire one Pro' => [ 'Acer', 'Aspire One Pro', DeviceType::DESKTOP ], + ], + + 'C908' => [ 'Acho', 'C908', DeviceType::TABLET ], + + 'ADVAN Q7A' => [ 'Advan', 'Vandroid Q7A' ], + 'ADVAN E1C+' => [ 'Advan', 'Vandroid E1-C+', DeviceType::TABLET ], + 'ADVAN S3' => [ 'Advan', 'Vandroid S3', DeviceType::TABLET ], + 'ADVAN S3+' => [ 'Advan', 'Vandroid S3+', DeviceType::TABLET ], + 'ADVAN S3A' => [ 'Advan', 'Vandroid S3-A', DeviceType::TABLET ], + 'ADVAN S3C' => [ 'Advan', 'Vandroid S3-C', DeviceType::TABLET ], + 'ADVAN S3C 3502' => [ 'Advan', 'Vandroid S3-C', DeviceType::TABLET ], + 'ADVAN S4' => [ 'Advan', 'Vandroid S4', DeviceType::TABLET ], + 'ADVAN S4+' => [ 'Advan', 'Vandroid S4+', DeviceType::TABLET ], + 'ADVAN S4A' => [ 'Advan', 'Vandroid S4-A', DeviceType::TABLET ], + 'ADVAN S4C' => [ 'Advan', 'Vandroid S4-C', DeviceType::TABLET ], + 'ADVAN S4E' => [ 'Advan', 'Vandroid S4-E', DeviceType::TABLET ], + 'Advan S4P [Official]' => [ 'Advan', 'Vandroid S4-P', DeviceType::TABLET ], + 'ADVAN S5E' => [ 'Advan', 'Vandroid S5-E', DeviceType::TABLET ], + 'Vandroid S5E' => [ 'Advan', 'Vandroid S5-E', DeviceType::TABLET ], + 'ADVAN S5E Pro' => [ 'Advan', 'Vandroid S5-E Pro', DeviceType::TABLET ], + 'S5-F' => [ 'Advan', 'Vandroid S5-F', DeviceType::TABLET ], + 'ADVAN S5F+' => [ 'Advan', 'Vandroid S5-F+', DeviceType::TABLET ], + 'ADVAN S5H' => [ 'Advan', 'Vandroid S5-H', DeviceType::TABLET ], + 'ADVAN S5I' => [ 'Advan', 'Vandroid S5-I', DeviceType::TABLET ], + 'Advan S5K' => [ 'Advan', 'Vandroid S5-K', DeviceType::TABLET ], + 'ADVAN S5M' => [ 'Advan', 'Vandroid S5-M', DeviceType::TABLET ], + 'ADVAN S5Q' => [ 'Advan', 'Vandroid S5-Q', DeviceType::TABLET ], + 'ADVAN S6A' => [ 'Advan', 'Vandroid S6-A', DeviceType::TABLET ], + 'T1-B' => [ 'Advan', 'Vandroid T1-B', DeviceType::TABLET ], + 'T1-D' => [ 'Advan', 'Vandroid T1-D', DeviceType::TABLET ], + 'T1-E' => [ 'Advan', 'Vandroid T1-E', DeviceType::TABLET ], + 'ADVAN T1G' => [ 'Advan', 'Vandroid T1-G', DeviceType::TABLET ], + 'ADVAN T1J' => [ 'Advan', 'Vandroid T1-J', DeviceType::TABLET ], + 'Vandroid T1J' => [ 'Advan', 'Vandroid T1-J', DeviceType::TABLET ], + 'ADVAN T1J+' => [ 'Advan', 'Vandroid T1-J+', DeviceType::TABLET ], + 'T1K Plus' => [ 'Advan', 'Vandroid T1-K Plus', DeviceType::TABLET ], + 'ADVAN T1L' => [ 'Advan', 'Vandroid T1-L', DeviceType::TABLET ], + 'ADVAN T1M' => [ 'Advan', 'Vandroid T1-M', DeviceType::TABLET ], + 'ADVAN T1X' => [ 'Advan', 'Vandroid T1-X', DeviceType::TABLET ], + 'ADVAN T2E' => [ 'Advan', 'Vandroid T2-E', DeviceType::TABLET ], + 'ADVAN T2F' => [ 'Advan', 'Vandroid T2-F', DeviceType::TABLET ], + 'Vandroid T3-A' => [ 'Advan', 'Vandroid T3-A', DeviceType::TABLET ], + 'ADVAN T3E+' => [ 'Advan', 'Vandroid T3-E+', DeviceType::TABLET ], + 'Vandroid T3i' => [ 'Advan', 'Vandroid T3i', DeviceType::TABLET ], + 'ADVAN T5C' => [ 'Advan', 'Vandroid T5-C', DeviceType::TABLET ], + 'Vandroid T' => [ 'Advan', 'Vandroid T', DeviceType::TABLET ], + 'Vega' => [ 'Advent', 'Vega', DeviceType::TABLET ], + 'VegaBean!' => [ 'Advent', 'Vega', DeviceType::TABLET ], + 'Advent Vega' => [ 'Advent', 'Vega', DeviceType::TABLET ], + 'Boost' => [ 'AG Mobile', 'Boost' ], + 'Chacer' => [ 'AG Mobile', 'Chacer' ], + 'AG Chrome Selfie' => [ 'AG Mobile', 'Chrome Selfie' ], + 'AG CHROME ULTRA' => [ 'AG Mobile', 'Chrome Ultra' ], + 'Ghost' => [ 'AG Mobile', 'Ghost' ], + 'Neon' => [ 'AG Mobile', 'Neon' ], + 'Quest' => [ 'AG Mobile', 'Quest' ], + 'Rage' => [ 'AG Mobile', 'Rage' ], + 'Shine' => [ 'AG Mobile', 'Shine' ], + 'Status' => [ 'AG Mobile', 'Status' ], + 'Style' => [ 'AG Mobile', 'Style' ], + 'Swift' => [ 'AG Mobile', 'Swift' ], + 'Swift Plus' => [ 'AG Mobile', 'Swift Plus' ], + 'Ultra' => [ 'AG Mobile', 'Ultra' ], + 'Zenith' => [ 'AG Mobile', 'Zenith' ], + 'Zoom' => [ 'AG Mobile', 'Zoom' ], + 'AG Tab 7 0' => [ 'AG Mobile', 'Tab 7.0', DeviceType::TABLET ], + 'AG Go-Tab Access' => [ 'AG Mobile', 'Go-Tab Access', DeviceType::TABLET ], + 'AG Chrome Go Tab 7.0' => [ 'AG Mobile', 'Go-Tab Chrome', DeviceType::TABLET ], + 'aigoPad' => [ 'aigo', 'aigoPad', DeviceType::TABLET ], + 'aigoPadM60' => [ 'aigo', 'aigoPad M60', DeviceType::TABLET ], + 'AigoPad M60' => [ 'aigo', 'aigoPad M60', DeviceType::TABLET ], + 'aigoPad M80D' => [ 'aigo', 'aigoPad M80', DeviceType::TABLET ], + 'aigoPad M80E' => [ 'aigo', 'aigoPad M80', DeviceType::TABLET ], + 'M801' => [ 'aigo', 'aigoPad M801', DeviceType::TABLET ], + 'N700' => [ 'aigo', 'aigoPad N700', DeviceType::TABLET ], + 'AT102HC' => [ 'Aikun', 'iTouch AT102HC', DeviceType::TABLET ], + 'AT104GS' => [ 'Aikun', 'iTouch AT104GS', DeviceType::TABLET ], + + 'Numy!!' => [ + 'Numy 3G AW1' => [ 'Ainol', 'Numy 3G AW1', DeviceType::TABLET ], + 'Numy 3G AX1' => [ 'Ainol', 'Numy 3G AX1', DeviceType::TABLET ], + 'Numy 3G AX10t' => [ 'Ainol', 'Numy 3G AX10t', DeviceType::TABLET ], + 'Numy 3G AX3' => [ 'Ainol', 'Numy 3G AX3', DeviceType::TABLET ], + 'Numy 3G BW1' => [ 'Ainol', 'Numy 3G BW1', DeviceType::TABLET ], + 'Numy 3G Vegas' => [ 'Ainol', 'Numy 3G Vegas', DeviceType::TABLET ], + 'Numy Note 9' => [ 'Ainol', 'Numy Note 9', DeviceType::TABLET ], + ], + + 'Novo7' => [ 'Ainovo', 'Novo7', DeviceType::TABLET ], + 'Novo7 -?Aurora!' => [ 'Ainovo', 'Novo7 Aurora', DeviceType::TABLET ], + 'novo Aurora' => [ 'Ainovo', 'Novo7 Aurora', DeviceType::TABLET ], + 'Novo 7 Aurora' => [ 'Ainovo', 'Novo7 Aurora', DeviceType::TABLET ], + 'Ainovo Aurora-II' => [ 'Ainovo', 'Novo7 Aurora II', DeviceType::TABLET ], + 'Aurora-II' => [ 'Ainovo', 'Novo7 Aurora II', DeviceType::TABLET ], + 'Novo7 Advanced' => [ 'Ainovo', 'Novo7 Advanced', DeviceType::TABLET ], + 'Novo7Advanced!' => [ 'Ainovo', 'Novo7 Advanced', DeviceType::TABLET ], + 'Novo7 Advanced2' => [ 'Ainovo', 'Novo7 Advanced 2', DeviceType::TABLET ], + 'Novo7 Basic' => [ 'Ainovo', 'Novo7 Basic', DeviceType::TABLET ], + 'NovoCrystal' => [ 'Ainovo', 'Novo7 Crystal', DeviceType::TABLET ], + 'Novo 7 Crystal!' => [ 'Ainovo', 'Novo7 Crystal', DeviceType::TABLET ], + 'Novo7 ELF' => [ 'Ainovo', 'Novo7 Elf', DeviceType::TABLET ], + 'ELF-II' => [ 'Ainovo', 'Novo7 Elf II', DeviceType::TABLET ], + 'Novo7 Fire' => [ 'Ainovo', 'Novo7 Fire', DeviceType::TABLET ], + 'Novo7 Flame' => [ 'Ainovo', 'Novo7 Flame', DeviceType::TABLET ], + 'Ainovo Flame (Nexus 7)' => [ 'Ainovo', 'Novo7 Flame', DeviceType::TABLET ], + 'Novo7 Grace' => [ 'Ainovo', 'Novo7 Grace', DeviceType::TABLET ], + 'Novo7 Legend' => [ 'Ainovo', 'Novo7 Legend', DeviceType::TABLET ], + 'novo7Legend!' => [ 'Ainovo', 'Novo7 Legend', DeviceType::TABLET ], + 'NOVO7 Mars' => [ 'Ainovo', 'Novo7 Mars', DeviceType::TABLET ], + 'Novo7 PALADIN' => [ 'Ainovo', 'Novo7 Paladin', DeviceType::TABLET ], + 'npm702-NOVO7PALADIN' => [ 'Ainovo', 'Novo7 Paladin', DeviceType::TABLET ], + 'Novo7 Rainbow' => [ 'Ainovo', 'Novo7 Rainbow', DeviceType::TABLET ], + 'Novo7 -Rainbow' => [ 'Ainovo', 'Novo7 Rainbow', DeviceType::TABLET ], + 'NOVO7 Tornados' => [ 'Ainovo', 'Novo7 Tornados', DeviceType::TABLET ], + 'Novo7 Venus' => [ 'Ainovo', 'Novo7 Venus', DeviceType::TABLET ], + 'Novo 7 Venus' => [ 'Ainovo', 'Novo7 Venus', DeviceType::TABLET ], + 'Novo7 Venus QuadCore' => [ 'Ainovo', 'Novo7 Venus', DeviceType::TABLET ], + 'Novo 7 Venus QuadCore' => [ 'Ainovo', 'Novo7 Venus', DeviceType::TABLET ], + 'Novo8 Advanced' => [ 'Ainovo', 'Novo8 Advanced', DeviceType::TABLET ], + 'Novo8 Discover Quadcore' => [ 'Ainovo', 'Novo8 Discover', DeviceType::TABLET ], + 'Novo8 Disover Quadcore' => [ 'Ainovo', 'Novo8 Discover', DeviceType::TABLET ], + 'Novo8 Dream QuadCore' => [ 'Ainovo', 'Novo8 Dream', DeviceType::TABLET ], + 'Novo8mini' => [ 'Ainovo', 'Novo8 Mini', DeviceType::TABLET ], + 'novo9-Spark' => [ 'Ainovo', 'Novo9 Spark', DeviceType::TABLET ], + 'NOVO9 Spark II' => [ 'Ainovo', 'Novo9 Spark II', DeviceType::TABLET ], + 'Novo 10 Hero' => [ 'Ainovo', 'Novo10 Hero', DeviceType::TABLET ], + 'Novo10 ?Hero!' => [ 'Ainovo', 'Novo10 Hero', DeviceType::TABLET ], + 'Novo 10 Hero QuadCore' => [ 'Ainovo', 'Novo10 Hero', DeviceType::TABLET ], + 'Novo Captain' => [ 'Ainovo', 'Novo10 Captain', DeviceType::TABLET ], + 'Novo10 captain QuadCore' => [ 'Ainovo', 'Novo10 Captain', DeviceType::TABLET ], + 'AIRIS GN135' => [ 'Airis', 'GN135' ], + 'AIRIS S211' => [ 'Airis', 'S211' ], + 'AIRIS TM([0-9]+[A-Z]*)!' => [ 'Airis', 'TM$1' ], + 'TM400' => [ 'Airis', 'TM400' ], + 'AIRIS OnePAD 725' => [ 'Airis', 'OnePAD 725' ], + 'AIRIS OnePAD700' => [ 'Airis', 'OnePAD 700' ], + 'AIRIS OnePAD 730' => [ 'Airis', 'OnePAD 730' ], + 'OnePAD 785I' => [ 'Airis', 'OnePAD 785I' ], + 'OnePAD 900HD' => [ 'Airis', 'OnePAD 900HD' ], + 'OnePAD 970' => [ 'Airis', 'OnePAD 970' ], + 'AirisOnePad1000' => [ 'Airis', 'OnePAD 1000' ], + 'OnePAD 1100x2' => [ 'Airis', 'OnePAD 1100x2' ], + 'AKAI NEO' => [ 'AKAI', 'Neo' ], + 'AKAI N8800' => [ 'AKAI', 'N8800' ], + 'PHA-3850' => [ 'AKAI', 'PHA-3850' ], + 'PHA-3880' => [ 'AKAI', 'PHA-3880 Glory F1' ], + 'AKAI PHA-4800' => [ 'AKAI', 'PHA-4800 Glory G1' ], + 'PHA-4850' => [ 'AKAI', 'PHA-4850 Glory L1' ], + 'AKAIPHA 5800' => [ 'AKAI', 'PHA-5800' ], + 'PHA-5850' => [ 'AKAI', 'PHA-5850 Glory O1' ], + 'AKAI MIDMA-7002S' => [ 'AKAI', 'MIDMA 7002S', DeviceType::TABLET ], + 'MID1040C' => [ 'AKAI', 'MID1040C', DeviceType::TABLET ], + 'A206G' => [ 'Alcatel', 'A206G' ], + 'A450TL' => [ 'Alcatel', 'One Touch Pixi Charm' ], + 'A460G' => [ 'Alcatel', 'One Touch Pixi Pulsar' ], + 'A460T' => [ 'Alcatel', 'One Touch Pixi 3' ], + 'A462C' => [ 'Alcatel', 'One Touch Pixi Eclipse' ], + 'A463BG' => [ 'Alcatel', 'One Touch Pixi Glitz' ], + 'A464BG' => [ 'Alcatel', 'One Touch Pixi Glitz' ], + 'A466BG' => [ 'Alcatel', 'One Touch Pixi Unite' ], + 'A466T' => [ 'Alcatel', 'Lume' ], + 'A480G' => [ 'Alcatel', 'One Touch Pop C1' ], + 'A520L' => [ 'Alcatel', 'One Touch Pop Nova' ], + 'A520R' => [ 'Alcatel', 'One Touch Pop Nova' ], + 'A521L' => [ 'Alcatel', 'One Touch Pop Star 2' ], + 'A554C' => [ 'Alcatel', 'One Touch Juke' ], + 'A556C' => [ 'Alcatel', 'A556C' ], + 'A560G' => [ 'Alcatel', 'A560G' ], + 'A562G' => [ 'Alcatel', 'A562G' ], + 'A564R' => [ 'Alcatel', 'One Touch Pop Icon' ], + 'A564C' => [ 'Alcatel', 'One Touch Pop Icon' ], + 'A570BL' => [ 'Alcatel', 'One Touch Pixi Avion' ], + 'A571VL' => [ 'Alcatel', 'One Touch Pixi Avion' ], + 'A573VC' => [ 'Alcatel', 'One Touch Pixi Bond' ], + 'A621BL' => [ 'Alcatel', 'One Touch Pixi Glory' ], + 'A621R' => [ 'Alcatel', 'One Touch Pop 3 (5.5)' ], + 'A622GL' => [ 'Alcatel', 'Jitterbug Smart' ], + 'A622VL' => [ 'Alcatel', 'One Touch Pixi 3 (5.5)' ], + 'A845L' => [ 'Alcatel', 'One Touch Pop Star' ], + 'A846L' => [ 'Alcatel', 'One Touch Pop Icon 2' ], + 'Alcatel A851L' => [ 'Alcatel', 'One Touch Sonic' ], + 'A851L' => [ 'Alcatel', 'One Touch Sonic' ], + 'A995L' => [ 'Alcatel', 'One Touch Pop Mega' ], + 'ONETOUCH Flash Plus' => [ 'Alcatel', 'One Touch Flash Plus' ], + 'AM-H200' => [ 'Alcatel', 'One Touch Idol 3 (5.5)' ], + 'one touch 890!' => [ 'Alcatel', 'One Touch 890' ], + 'one touch 891!' => [ 'Alcatel', 'One Touch 891' ], + 'one touch 900!' => [ 'Alcatel', 'One Touch 900' ], + 'one touch 903!' => [ 'Alcatel', 'One Touch 903' ], + 'one touch 906!' => [ 'Alcatel', 'One Touch 906' ], + 'Alcatel one touch 908F' => [ 'Alcatel', 'One Touch 908' ], + 'one touch 908!' => [ 'Alcatel', 'One Touch 908' ], + 'one touch 909!' => [ 'Alcatel', 'One Touch 909' ], + 'USCC ALCATEL one touch 909B' => [ 'Alcatel', 'One Touch 909' ], + 'one touch 910!' => [ 'Alcatel', 'One Touch 910' ], + 'one touch 913!' => [ 'Alcatel', 'One Touch 913' ], + 'one touch 916!' => [ 'Alcatel', 'One Touch 916' ], + 'one touch 918!' => [ 'Alcatel', 'One Touch 918' ], + 'Alcatel one touch 918' => [ 'Alcatel', 'One Touch 918' ], + 'Alcatel ONETOUCH 918' => [ 'Alcatel', 'One Touch 918' ], + 'OT 918' => [ 'Alcatel', 'One Touch 918' ], + 'ALCATEL OT 919' => [ 'Alcatel', 'One Touch 919' ], + 'OT 919' => [ 'Alcatel', 'One Touch 919' ], + 'OT 919 HelloKitty' => [ 'Alcatel', 'One Touch 919 Hello Kitty' ], + 'one touch 922!' => [ 'Alcatel', 'One Touch 922' ], + 'one touch 927!' => [ 'Alcatel', 'One Touch 927' ], + 'one touch 928!' => [ 'Alcatel', 'One Touch 928' ], + 'one touch 930!' => [ 'Alcatel', 'One Touch 930' ], + 'one touch 960!' => [ 'Alcatel', 'One Touch 960' ], + 'one touch 976!' => [ 'Alcatel', 'One Touch 976' ], + 'one touch 978!' => [ 'Alcatel', 'One Touch 978' ], + 'one touch 979 HelloKitty' => [ 'Alcatel', 'One Touch 979 Hello Kitty' ], + 'one touch 979!' => [ 'Alcatel', 'One Touch 979' ], + 'one touch 980!' => [ 'Alcatel', 'One Touch 980' ], + 'one touch 981!' => [ 'Alcatel', 'One Touch 981' ], + 'one touch 983!' => [ 'Alcatel', 'One Touch 983' ], + 'one touch 985!' => [ 'Alcatel', 'One Touch 985' ], + 'one touch 986!' => [ 'Alcatel', 'One Touch 986' ], + 'one touch 988!' => [ 'Alcatel', 'One Touch 988' ], + 'USCC ALCATEL one touch 988' => [ 'Alcatel', 'One Touch 988' ], + 'one touch 990!' => [ 'Alcatel', 'One Touch 990' ], + 'Alcatel one touch 990' => [ 'Alcatel', 'One Touch 990' ], + 'Alcatel one touch 990S' => [ 'Alcatel', 'One Touch 990' ], + 'TCL ONE TOUCH 990' => [ 'Alcatel', 'One Touch 990' ], + 'OT-990C' => [ 'Alcatel', 'One Touch 990' ], + 'OT 990M' => [ 'Alcatel', 'One Touch 990' ], + 'one touch 991!' => [ 'Alcatel', 'One Touch 991' ], + 'one touch 992!' => [ 'Alcatel', 'One Touch 992' ], + 'ONE TOCH 992D' => [ 'Alcatel', 'One Touch 992' ], + 'one touch 993!' => [ 'Alcatel', 'One Touch 993' ], + 'one touch 995!' => [ 'Alcatel', 'One Touch 995' ], + 'OT-995' => [ 'Alcatel', 'One Touch 995' ], + 'one touch 997!' => [ 'Alcatel', 'One Touch 997' ], + 'one touch 998!' => [ 'Alcatel', 'One Touch 998' ], + 'one touch D662' => [ 'Alcatel', 'One Touch D662' ], + 'one touch D668' => [ 'Alcatel', 'One Touch D668' ], + 'one touch D820' => [ 'Alcatel', 'One Touch D820' ], + 'one touch D920' => [ 'Alcatel', 'One Touch D920' ], + 'one touch J320' => [ 'Alcatel', 'One Touch J320' ], + '1216[X]!' => [ 'Alcatel', 'One Touch Pixi 3 (7)' ], + '4002[X]!' => [ 'Alcatel', 'One Touch Pop Fit' ], + '4003[AJ]!' => [ 'Alcatel', 'One Touch Pixi 3 (4)' ], + 'one ?touch 40(05|10|11)!' => [ 'Alcatel', 'One Touch T\'Pop' ], + 'one ?touch 4007!' => [ 'Alcatel', 'One Touch Pixi' ], + '4007[D]!' => [ 'Alcatel', 'One Touch Pixi' ], + 'one ?touch 4008!' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)' ], + '4008[A]!' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)' ], + 'one ?touch 4009!' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)' ], + '4009[ADEFIKMSX]!' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)' ], + 'one ?touch 4013!' => [ 'Alcatel', 'One Touch Pixi 3 (4)' ], + '4013[ADEJKMX]!' => [ 'Alcatel', 'One Touch Pixi 3 (4)' ], + 'one ?touch 4014!' => [ 'Alcatel', 'One Touch Pixi 3 (4)' ], + '4014[AMX]!' => [ 'Alcatel', 'One Touch Pixi 3 (4)' ], + 'one ?touch 40(15|16)!' => [ 'Alcatel', 'One Touch Pop C1' ], + '4015[ANTX]!' => [ 'Alcatel', 'One Touch Pop C1' ], + '4015[D]!' => [ 'Alcatel', 'One Touch Pixi 2' ], + '4016[ADX]!' => [ 'Alcatel', 'One Touch Pop C1' ], + '4017[ADEFX]!' => [ 'Alcatel', 'One Touch Pixi 4 (3.5)' ], + '4018[ADEFMX]!' => [ 'Alcatel', 'One Touch Pop D1' ], + 'one ?touch 4024!' => [ 'Alcatel', 'One Touch Pixi First' ], + '4024[DEX]!' => [ 'Alcatel', 'One Touch Pixi First' ], + 'one ?touch 4027!' => [ 'Alcatel', 'One Touch Pixi 3 (4.5)' ], + '4027[ADNX]!' => [ 'Alcatel', 'One Touch Pixi 3 (4.5)' ], + '4028[AEJS]!' => [ 'Alcatel', 'One Touch Pixi 3 (4.5)' ], + 'one ?touch 4029!' => [ 'Alcatel', 'One Touch S\'Pop' ], + 'one ?touch 4030!' => [ 'Alcatel', 'One Touch S\'Pop' ], + 'one ?touch 4031!' => [ 'Alcatel', 'One Touch Flash Mini' ], + 'one ?touch 4032!' => [ 'Alcatel', 'One Touch Pop C2' ], + '4032[ADEX]!' => [ 'Alcatel', 'One Touch Pop C2' ], + 'one ?touch 4033!' => [ 'Alcatel', 'One Touch Pop C3' ], + '4033[AL]!' => [ 'Alcatel', 'One Touch Pop C3' ], + 'ONETOUCH POPC3' => [ 'Alcatel', 'One Touch Pop C3' ], + '4034[ADEFGX]!' => [ 'Alcatel', 'One Touch Pixi 4 (4)' ], + 'one ?touch 40(35|36|37)!' => [ 'Alcatel', 'One Touch Pop D3' ], + '4035[ADYX]!' => [ 'Alcatel', 'One Touch Pop D3' ], + '4036[E]!' => [ 'Alcatel', 'One Touch Pop D3' ], + '4037[AX]!' => [ 'Alcatel', 'One Touch Pop D3' ], + '4037[T]!' => [ 'Alcatel', 'One Touch Evolve 2' ], + '4037[V]!' => [ 'Alcatel', 'One Touch Elevate' ], + 'one ?touch 5045!' => [ 'Alcatel', 'One Touch Pop 2 (4)' ], + '4045[ADEFLOYX]!' => [ 'Alcatel', 'One Touch Pop 2 (4)' ], + '4055[JU]!' => [ 'Alcatel', 'One Touch Pixi 5 (4)' ], + '4060[A]!' => [ 'Alcatel', 'IDEAL' ], + '4060[W]!' => [ 'Alcatel', 'One Touch Pixi 4 (5)' ], + '5010[DEGSUX]!' => [ 'Alcatel', 'One Touch Pixi 4 (5)' ], + '5012[G]!' => [ 'Alcatel', 'One Touch Pixi 4 (5.5)' ], + '5015[ADEX]!' => [ 'Alcatel', 'One Touch Pixi 3 (5)' ], + '5016[AJ]!' => [ 'Alcatel', 'One Touch Pixi 3 (5)' ], + '5017[B]!' => [ 'Alcatel', 'One Touch Elevate' ], + '5017[ADEOX]!' => [ 'Alcatel', 'One Touch Pixi 3 (4.5)' ], + '5019[D]!' => [ 'Alcatel', 'One Touch Pixi 3 (4.5)' ], + 'one ?touch 5020!' => [ 'Alcatel', 'One Touch M\'Pop' ], + 'Alcatel OT M\'pop 5020D' => [ 'Alcatel', 'One Touch M\'Pop' ], + 'M POP 5020A' => [ 'Alcatel', 'One Touch M\'Pop' ], + 'M POP' => [ 'Alcatel', 'One Touch M\'Pop' ], + '5020[A]!' => [ 'Alcatel', 'One Touch M\'Pop' ], + 'one ?touch 5021!' => [ 'Alcatel', 'One Touch Soleil' ], + '5022[DEX]!' => [ 'Alcatel', 'One Touch Pop Star' ], + '5023[F]!' => [ 'Alcatel', 'One Touch Pixi 4 Plus Power' ], + '5025[DEGX]!' => [ 'Alcatel', 'One Touch Pop 3' ], + '5027[B]!' => [ 'Alcatel', 'One Touch Dawn' ], + 'one ?touch 5035!' => [ 'Alcatel', 'One Touch X\'Pop' ], + '5036[D]!' => [ 'Alcatel', 'One Touch Pop C5' ], + 'one ?touch 50(36|37)!' => [ 'Alcatel', 'One Touch Pop C5' ], + 'ONETOUCH POPC5' => [ 'Alcatel', 'One Touch Pop C5' ], + 'one ?touch 50(38)!' => [ 'Alcatel', 'One Touch Pop D5' ], + '5038[ADEX]!' => [ 'Alcatel', 'One Touch Pop D5' ], + 'one ?touch 5042!' => [ 'Alcatel', 'One Touch Pop 2 (4.5)' ], + '5042[ADEFGTWXY]!' => [ 'Alcatel', 'One Touch Pop 2 (4.5)' ], + '5044[ADOY]!' => [ 'Alcatel', 'U5' ], + '5045[ADGJTX]!' => [ 'Alcatel', 'One Touch Pixi 4 (5.0)' ], + '5046[DGJY]!' => [ 'Alcatel', 'A3' ], + '5047[DUY]!' => [ 'Alcatel', 'U5 HD' ], + '5049[EGSWZ]!' => [ 'Alcatel', 'A30 Fierce' ], + 'one ?touch 5050!' => [ 'Alcatel', 'One Touch Pop S3' ], + '5050[ASYX]!' => [ 'Alcatel', 'One Touch Pop S3' ], + '5051[ADJMX]!' => [ 'Alcatel', 'One Touch Pop 4 (5.0)' ], + '5052[D]!' => [ 'Alcatel', '3' ], + '5054[ADOSTX]!' => [ 'Alcatel', 'One Touch Pixi 3 (5.5)' ], + '5054[NW]!' => [ 'Alcatel', 'One Touch Fierce XL' ], + '5056[ADENUWX]!' => [ 'Alcatel', 'One Touch Pop 4+' ], + '5056[O]!' => [ 'Alcatel', 'One Touch Allura' ], + '5057[M]!' => [ 'Alcatel', 'One Touch Pop Mirage' ], + '5065[ADJNWX]!' => [ 'Alcatel', 'One Touch Pixi 3 (5)' ], + '5070[DJX]!' => [ 'Alcatel', 'One Touch Pop Star' ], + '5080[DFQX]!' => [ 'Alcatel', 'One Touch Pixi 4 (6)' ], + '5085[CDJNY]!' => [ 'Alcatel', 'A5 LED' ], + '5090[Y]!' => [ 'Alcatel', 'A7' ], + '5095[BIKY]!' => [ 'Alcatel', 'One Touch Pop 4S' ], + '5096[AI]!' => [ 'Alcatel', 'One Touch Net' ], + '5098[OS]!' => [ 'Alcatel', 'One Touch Pixi 4 (6)' ], + 'Alcatel 5098O' => [ 'Alcatel', 'One Touch Pixi 4 (6)' ], + '5099[ADY]!' => [ 'Alcatel', '3V' ], + 'one ?touch 6010!' => [ 'Alcatel', 'One Touch Star' ], + 'one ?touch 6012!' => [ 'Alcatel', 'One Touch Idol Mini' ], + 'ONE TOUCH IDOL MINI' => [ 'Alcatel', 'One Touch Idol Mini' ], + 'one ?touch 6014!' => [ 'Alcatel', 'One Touch Idol Mini' ], + '6014[DX]!' => [ 'Alcatel', 'One Touch Idol Mini' ], + 'one ?touch 6016!' => [ 'Alcatel', 'One Touch Idol 2 Mini' ], + '6016[ADEX]!' => [ 'Alcatel', 'One Touch Idol 2 Mini' ], + 'one ?touch 6030!' => [ 'Alcatel', 'One Touch Idol' ], + '6031[X]!' => [ 'Alcatel', 'One Touch Idol Ultra' ], + 'one ?touch 6032!' => [ 'Alcatel', 'One Touch Idol α' ], + 'one ?touch 6033!' => [ 'Alcatel', 'One Touch Idol Ultra' ], + 'one ?touch 60(34|35)!' => [ 'Alcatel', 'One Touch Idol S' ], + 'one ?touch 6036!' => [ 'Alcatel', 'One Touch Idol 2 Mini S' ], + '6036[AYX]!' => [ 'Alcatel', 'One Touch Idol 2 Mini S' ], + 'one ?touch 6037!' => [ 'Alcatel', 'One Touch Idol 2 Dual' ], + '6037[BIKY]!' => [ 'Alcatel', 'One Touch Idol 2 Dual' ], + 'one ?touch 6039!' => [ 'Alcatel', 'One Touch Idol 3 (4.7)' ], + '6039[AHJKSY]!' => [ 'Alcatel', 'One Touch Idol 3 (4.7)' ], + 'one ?touch 6040!' => [ 'Alcatel', 'One Touch Idol X' ], + '6042[D]!' => [ 'Alcatel', 'One Touch Flash' ], + 'one ?touch 6043!' => [ 'Alcatel', 'One Touch Idol X+' ], + '6043[AD]!' => [ 'Alcatel', 'One Touch Idol X+' ], + '6044D' => [ 'Alcatel', 'One Touch Pop Up' ], + 'one ?touch 6045!' => [ 'Alcatel', 'One Touch Idol 3 (5.5)' ], + '6045[BFGIKOXY]!' => [ 'Alcatel', 'One Touch Idol 3 (5.5)' ], + 'one ?touch 6050!' => [ 'Alcatel', 'One Touch Idol 2S' ], + '6050[AFWY]!' => [ 'Alcatel', 'One Touch Idol 2S' ], + '6055[ABDHIKPUY]!' => [ 'Alcatel', 'One Touch Idol 4' ], + '6070[KOY]!' => [ 'Alcatel', 'One Touch Idol 4s' ], + 'one ?touch 7024!' => [ 'Alcatel', 'One Touch Fierce' ], + 'one touch fierce!' => [ 'Alcatel', 'One Touch Fierce' ], + 'one ?touch 70(25|30)!' => [ 'Alcatel', 'One Touch Snap' ], + '7030[L]!' => [ 'Alcatel', 'One Touch Snap' ], + 'one ?touch 70(40|41)!' => [ 'Alcatel', 'One Touch Pop C7' ], + '7040[DNR]!' => [ 'Alcatel', 'One Touch Pop C7' ], + '7040[T]!' => [ 'Alcatel', 'One Touch Fierce 2' ], + 'one ?touch 7042!' => [ 'Alcatel', 'One Touch Snap' ], + 'one ?touch 7043!' => [ 'Alcatel', 'One Touch Pop 2 (5)' ], + '7043[AEKY]!' => [ 'Alcatel', 'One Touch Pop 2 (5)' ], + 'one ?touch 7044!' => [ 'Alcatel', 'One Touch Pop 2 (5) Premium' ], + '7044[AXY]!' => [ 'Alcatel', 'One Touch Pop 2 (5) Premium' ], + 'one ?touch 7045!' => [ 'Alcatel', 'One Touch Pop S7' ], + '7045[Y]!' => [ 'Alcatel', 'One Touch Pop S7' ], + '7046[T]!' => [ 'Alcatel', 'One Touch Conquest' ], + 'Alcatel 7046T' => [ 'Alcatel', 'One Touch Conquest' ], + 'one ?touch 7047!' => [ 'Alcatel', 'One Touch Pop C9' ], + '7048[ASWX]!' => [ 'Alcatel', 'One Touch Go Play' ], + 'Alcatel 7049D' => [ 'Alcatel', 'Flash 2' ], + 'one ?touch 7050!' => [ 'Alcatel', 'One Touch Pop S9' ], + '7050[Y]!' => [ 'Alcatel', 'One Touch Pop S9' ], + '7051[X]!' => [ 'Alcatel', 'One Touch Pop 3 (5)' ], + '7053[D]!' => [ 'Alcatel', 'X1' ], + '7055[AW]!' => [ 'Alcatel', 'One Touch Hero 2C' ], + '7051[X]!' => [ 'Alcatel', 'One Touch Pop 2 (5) Premium' ], + 'one ?touch 8000!' => [ 'Alcatel', 'One Touch Scribe Easy' ], + 'one ?touch 8008!' => [ 'Alcatel', 'One Touch Scribe HD' ], + 'one ?touch 8020!' => [ 'Alcatel', 'One Touch Hero' ], + '8020[D]!' => [ 'Alcatel', 'One Touch Hero' ], + 'one ?touch 8030!' => [ 'Alcatel', 'One Touch Hero 2' ], + '8030[BY]!' => [ 'Alcatel', 'One Touch Hero 2' ], + '9001[DIX]!' => [ 'Alcatel', 'One Touch Pixi 4 (6)' ], + '9002[AWX]!' => [ 'Alcatel', 'One Touch Pixi 3 (7)', DeviceType::TABLET ], + '9003[AX]!' => [ 'Alcatel', 'One Touch Pixi 4 (7)', DeviceType::TABLET ], + '9005[X]!' => [ 'Alcatel', 'One Touch Pixi 3 (8)', DeviceType::TABLET ], + '9006[W]!' => [ 'Alcatel', 'One Touch Pixi 4 (7)', DeviceType::TABLET ], + '9007[ATX]!' => [ 'Alcatel', 'One Touch Pixi 3 (7)', DeviceType::TABLET ], + '9008[ADIJTUX]!' => [ 'Alcatel', 'A3 XL', DeviceType::TABLET ], + '9010[X]!' => [ 'Alcatel', 'One Touch Pixi 3 (10)', DeviceType::TABLET ], + '9015[BJWQ]!' => [ 'Alcatel', 'One Touch POP7', DeviceType::TABLET ], + '9022[SX]!' => [ 'Alcatel', 'One Touch Pixi 3 (8)', DeviceType::TABLET ], + '9024[OW]!' => [ 'Alcatel', 'A30', DeviceType::TABLET ], + '9025[MQ]!' => [ 'Alcatel', 'One Touch Pop 4 (7)', DeviceType::TABLET ], + 'one ?touch T10!' => [ 'Alcatel', 'One Touch T10', DeviceType::TABLET ], + 'one ?touch T20!' => [ 'Alcatel', 'One Touch T20', DeviceType::TABLET ], + 'one ?touch T60!' => [ 'Alcatel', 'One Touch T60', DeviceType::TABLET ], + 'ONE TOUCH TAB 7' => [ 'Alcatel', 'One Touch Tab 7', DeviceType::TABLET ], + 'ONE TOUCH TAB 7HD' => [ 'Alcatel', 'One Touch Tab 7HD', DeviceType::TABLET ], + 'ONE TOUCH TAB 8HD' => [ 'Alcatel', 'One Touch Tab 8HD', DeviceType::TABLET ], + 'ONE TOUCH EVO7' => [ 'Alcatel', 'One Touch Evo 7', DeviceType::TABLET ], + 'onetouch EVO7' => [ 'Alcatel', 'One Touch Evo 7', DeviceType::TABLET ], + 'ONE TOUCH E710' => [ 'Alcatel', 'One Touch Evo 7 HD', DeviceType::TABLET ], + 'ONE TOUCH EVO 7HD' => [ 'Alcatel', 'One Touch Evo 7 HD', DeviceType::TABLET ], + 'ONE TOUCH EVO7HD' => [ 'Alcatel', 'One Touch Evo 7 HD', DeviceType::TABLET ], + 'ONE TOUCH EVO8HD' => [ 'Alcatel', 'One Touch Evo 8 HD', DeviceType::TABLET ], + 'D820X' => [ 'Alcatel', 'One Touch Hero 8', DeviceType::TABLET ], + 'ONETOUCH POP 7 LTE' => [ 'Alcatel', 'One Touch POP7', DeviceType::TABLET ], + 'ONE ?TOUCH P310(A|X)!' => [ 'Alcatel', 'One Touch POP7', DeviceType::TABLET ], + 'ONE ?TOUCH P320(A|X)!' => [ 'Alcatel', 'One Touch POP8', DeviceType::TABLET ], + 'ONE ?TOUCH P321!' => [ 'Alcatel', 'One Touch POP8', DeviceType::TABLET ], + '9021[AM]!' => [ 'Alcatel', 'One Touch POP8', DeviceType::TABLET ], + 'P330X' => [ 'Alcatel', 'One Touch POP7S', DeviceType::TABLET ], + 'P350X' => [ 'Alcatel', 'One Touch POP8S', DeviceType::TABLET ], + 'ONE ?TOUCH POP 8S P350X!' => [ 'Alcatel', 'One Touch POP8S', DeviceType::TABLET ], + 'P360X' => [ 'Alcatel', 'One Touch POP10', DeviceType::TABLET ], + 'ADR3010' => [ 'Alcatel', 'Authority' ], + 'Venture' => [ 'Alcatel', 'Venture' ], + 'Mobile Sosh' => [ 'Alcatel', 'Le mobile Sosh' ], + 'Alcor Access Q913M' => [ 'Alcor', 'Access Q913M', DeviceType::TABLET ], + 'Alcor Zest Q813I' => [ 'Alcor', 'Zest Q813I', DeviceType::TABLET ], + 'Alcor Zest Q813IS' => [ 'Alcor', 'Zest Q813IS', DeviceType::TABLET ], + 'Alcor Zest Q813IX' => [ 'Alcor', 'Zest Q813IX', DeviceType::TABLET ], + 'Alcor Zest Q933R' => [ 'Alcor', 'Zest Q933R', DeviceType::TABLET ], + 'ALLVIEW A4ALL' => [ 'Allview', 'A4 All' ], + 'A5 Easy' => [ 'Allview', 'A5 Easy' ], + 'A5 Easy TM' => [ 'Allview', 'A5 Easy' ], + 'A5 Lite' => [ 'Allview', 'A5 Lite' ], + 'A5 Quad Plus' => [ 'Allview', 'A5 Quad Plus' ], + 'A5 Quad Plus TM' => [ 'Allview', 'A5 Quad Plus' ], + 'A6 Duo' => [ 'Allview', 'A6 Duo' ], + 'A6 Lite' => [ 'Allview', 'A6 Lite' ], + 'ALLVIEW A6 Quad' => [ 'Allview', 'A6 Quad' ], + 'A7 Lite' => [ 'Allview', 'A7 Lite' ], + 'AX3Party' => [ 'Allview', 'AX3 Party' ], + 'AX4Nano plus' => [ 'Allview', 'AX4 Nano Plus' ], + 'C6 Duo' => [ 'Allview', 'C6 Duo' ], + 'C6Quad 4G' => [ 'Allview', 'C6 Quad' ], + 'E2 Jump' => [ 'Allview', 'E2 Jump' ], + 'E3 Living' => [ 'Allview', 'E3 Living' ], + 'E3 Sign' => [ 'Allview', 'E3 Sign' ], + 'E4' => [ 'Allview', 'E4' ], + 'E4 Lite' => [ 'Allview', 'E4 Lite' ], + 'ALLVIEW P1' => [ 'Allview', 'P1 Alldro' ], + 'Allview P2' => [ 'Allview', 'P2 Alldro' ], + 'ALLVIEW P4' => [ 'Allview', 'P4 Alldro' ], + 'ALLVIEW P4i' => [ 'Allview', 'P4 Duo' ], + 'P4i' => [ 'Allview', 'P4 Duo' ], + 'Allview P5' => [ 'Allview', 'P5' ], + 'P5 Energy' => [ 'Allview', 'P5 Energy' ], + 'P5Life' => [ 'Allview', 'P5 Life' ], + 'P5Life TM' => [ 'Allview', 'P5 Life' ], + 'Allview P5-Mini' => [ 'Allview', 'P5 Mini' ], + 'ALLVIEW P5 Quad' => [ 'Allview', 'P5 Quad' ], + 'ALLVIEW P5 Qmax' => [ 'Allview', 'P5 Qmax' ], + 'ALLVIEW P6' => [ 'Allview', 'P6' ], + 'P6 Energy' => [ 'Allview', 'P6 Energy' ], + 'P6 Energy TM' => [ 'Allview', 'P6 Energy' ], + 'P6 Pro' => [ 'Allview', 'P6 Pro' ], + 'P6 Qmax' => [ 'Allview', 'P6 Qmax' ], + 'ALLVIEW P6 Quad' => [ 'Allview', 'P6 Quad' ], + 'P6 Quad' => [ 'Allview', 'P6 Quad' ], + 'P8 Energy' => [ 'Allview', 'P8 Energy' ], + 'P8 Energy mini' => [ 'Allview', 'P8 Energy Mini' ], + 'P8 Energy mini TM' => [ 'Allview', 'P8 Energy Mini' ], + 'ALLVIEW TX1 Quasar' => [ 'Allview', 'TX1 Quasar' ], + 'V1 Viper' => [ 'Allview', 'V1 Viper' ], + 'V1 Viper E' => [ 'Allview', 'V1 Viper E' ], + 'V1 Viper I' => [ 'Allview', 'V1 Viper I' ], + 'V1 Viper I4G' => [ 'Allview', 'V1 Viper I' ], + 'V1 Viper I4G PL' => [ 'Allview', 'V1 Viper I' ], + 'V1 Viper I4G TM' => [ 'Allview', 'V1 Viper I' ], + 'V1 Viper L' => [ 'Allview', 'V1 Viper L' ], + 'V1 ViperS' => [ 'Allview', 'V1 Viper S' ], + 'V1 Viper S4G' => [ 'Allview', 'V1 Viper S' ], + 'V1 Viper S4G TM' => [ 'Allview', 'V1 Viper S' ], + 'V2 Viper' => [ 'Allview', 'V2 Viper' ], + 'V2 Viper I' => [ 'Allview', 'V2 Viper I' ], + 'V2 Viper I TM' => [ 'Allview', 'V2 Viper I' ], + 'V2 Viper I4G' => [ 'Allview', 'V2 Viper I' ], + 'V2 Viper S' => [ 'Allview', 'V2 Viper S' ], + 'V2 Viper X' => [ 'Allview', 'V2 Viper X' ], + 'V2 Viper X plus' => [ 'Allview', 'V2 Viper X Plus' ], + 'Viva C701' => [ 'Allview', 'Viva C701' ], + 'Viva H701' => [ 'Allview', 'Viva H701' ], + 'Viva H701 LTE CZ' => [ 'Allview', 'Viva H701' ], + 'VivaH7LTE' => [ 'Allview', 'Viva H7' ], + 'VivaH8LTE' => [ 'Allview', 'Viva H8' ], + 'H8 Life' => [ 'Allview', 'Viva H8 Life' ], + 'VivaH10LTE' => [ 'Allview', 'Viva H10' ], + 'Viva i7G' => [ 'Allview', 'Viva i7G', DeviceType::TABLET ], + 'VIVA i7' => [ 'Allview', 'Viva i9', DeviceType::TABLET ], + 'Viva i10HD' => [ 'Allview', 'Viva i10 HD', DeviceType::TABLET ], + 'Viva i701G TM' => [ 'Allview', 'Viva i701G', DeviceType::TABLET ], + 'X1 Soul' => [ 'Allview', 'X1 Soul' ], + 'X1 Soul Mini' => [ 'Allview', 'X1 Soul Mini' ], + 'X1 mini Soul' => [ 'Allview', 'X1 Soul Mini' ], + 'X1 Soul Xtreme' => [ 'Allview', 'X1 Soul Xtreme' ], + 'X1 Xtreme Mini' => [ 'Allview', 'X1 Xtreme Mini' ], + 'Xtreme X2' => [ 'Allview', 'X2 Extreme' ], + 'X2 Soul' => [ 'Allview', 'X2 Soul' ], + 'ALLVIEW X2 Soul' => [ 'Allview', 'X2 Soul' ], + 'X2 Soul Lite' => [ 'Allview', 'X2 Soul Lite' ], + 'X2 Soul Lite TM' => [ 'Allview', 'X2 Soul Lite' ], + 'X2 Soul Mini' => [ 'Allview', 'X2 Soul Mini' ], + 'X2 Soul Mini TM' => [ 'Allview', 'X2 Soul Mini' ], + 'X2 Soul PRO' => [ 'Allview', 'X2 Soul Pro' ], + 'X2 Soul Style' => [ 'Allview', 'X2 Soul Style' ], + 'X2 Soul Style TM' => [ 'Allview', 'X2 Soul Style' ], + 'X2 Soul Style Plus' => [ 'Allview', 'X2 Soul Style Plus' ], + 'X2 Soul Xtreme' => [ 'Allview', 'X2 Soul Xtreme' ], + 'X2 Twin' => [ 'Allview', 'X2 Twin' ], + 'X3 Soul' => [ 'Allview', 'X3 Soul' ], + 'ALLVIEW-X3 Soul' => [ 'Allview', 'X3 Soul' ], + 'X3 Soul Lite' => [ 'Allview', 'X3 Soul Lite' ], + 'X3 Soul Lite TM' => [ 'Allview', 'X3 Soul Lite' ], + 'X3 Soul mini' => [ 'Allview', 'X3 Soul Mini' ], + 'X3 Soul PLUS' => [ 'Allview', 'X3 Soul Plus' ], + 'X3 Soul PRO' => [ 'Allview', 'X3 Soul Pro' ], + 'X3 Soul Style' => [ 'Allview', 'X3 Soul Style' ], + + '(Allview|Alldro)!!' => [ + 'Allview AX1 Shine' => [ 'Allview', 'AX1 Shine', DeviceType::TABLET ], + 'AllviewAX2' => [ 'Allview', 'AX2 Frenzy', DeviceType::TABLET ], + 'AllviewAX2Frenzy' => [ 'Allview', 'AX2 Frenzy', DeviceType::TABLET ], + 'ALLVIEW SPEEDI' => [ 'Allview', 'Alldro Speed', DeviceType::TABLET ], + 'AllviewSpeed' => [ 'Allview', 'Alldro Speed', DeviceType::TABLET ], + 'ALLDROSPEED' => [ 'Allview', 'Alldro Speed', DeviceType::TABLET ], + 'AllviewSpeedi' => [ 'Allview', 'Alldro Speed i', DeviceType::TABLET ], + 'AllviewSpeedDuo' => [ 'Allview', 'Alldro Speed Duo', DeviceType::TABLET ], + 'AllviewSpeedEco' => [ 'Allview', 'Alldro Speed Eco', DeviceType::TABLET ], + 'AllviewSpeedSatellite' => [ 'Allview', 'Alldro Speed Satellite', DeviceType::TABLET ], + 'AllviewSpeedSatelite' => [ 'Allview', 'Alldro Speed Satellite', DeviceType::TABLET ], + 'ALLDRO2SPEED' => [ 'Allview', 'Alldro Speed 2', DeviceType::TABLET ], + 'Allview2SpeedDuo' => [ 'Allview', 'Alldro Speed 2 Duo', DeviceType::TABLET ], + 'Allview 2 Speed QUAD' => [ 'Allview', 'Alldro Speed 2 Quad', DeviceType::TABLET ], + 'AllviewSpeed2' => [ 'Allview', 'Alldro Speed 2', DeviceType::TABLET ], + 'AllviewSpeed2+' => [ 'Allview', 'Alldro Speed 2', DeviceType::TABLET ], + 'AllviewSpeed3' => [ 'Allview', 'Alldro Speed 3', DeviceType::TABLET ], + 'AllviewSpeed3G' => [ 'Allview', 'Alldro Speed 3G', DeviceType::TABLET ], + 'AllviewSpeed3HD' => [ 'Allview', 'Alldro Speed 3HD', DeviceType::TABLET ], + 'AllviewSpeed3T' => [ 'Allview', 'Alldro Speed 3T', DeviceType::TABLET ], + 'Alldro3Speed DUO' => [ 'Allview', 'Alldro Speed 3 Duo', DeviceType::TABLET ], + 'Allview3SpeedQuad' => [ 'Allview', 'Alldro Speed 3 Quad', DeviceType::TABLET ], + 'Allview3SpeedQUADHD' => [ 'Allview', 'Alldro Speed 3 Quad HD', DeviceType::TABLET ], + 'AllviewCity' => [ 'Allview', 'Alldro City', DeviceType::TABLET ], + 'AllviewCityPlus' => [ 'Allview', 'Alldro City Plus', DeviceType::TABLET ], + 'AllviewCityLife' => [ 'Allview', 'Alldro City Life', DeviceType::TABLET ], + 'ALLVIEW VIPER I' => [ 'Allview', 'Viper I', DeviceType::TABLET ], + 'Allview Viva H8' => [ 'Allview', 'Viva H8', DeviceType::TABLET ], + 'ALLVIEW3CONECT' => [ 'Allview', '3 Conect', DeviceType::TABLET ], + ], + + 'A10' => [ 'AllWinner', 'A10', DeviceType::TABLET ], + 'Allwinner A10' => [ 'AllWinner', 'A10', DeviceType::TABLET ], + '97FC' => [ 'AllWinner', 'A10 97FC', DeviceType::TABLET ], + 'A13-?MID!' => [ 'AllWinner', 'A13', DeviceType::TABLET ], + 'SoftwinerEvb' => [ 'AllWinner', 'A13', DeviceType::TABLET ], + 'SoftwinerEvb0308' => [ 'AllWinner', 'A13', DeviceType::TABLET ], + 'SoftwinerEvd' => [ 'AllWinner', 'A13', DeviceType::TABLET ], + 'Softwinerkf026' => [ 'AllWinner', 'A13', DeviceType::TABLET ], + 'Softwinerf721' => [ 'AllWinner', 'F721', DeviceType::TABLET ], + 'Softwinerf761' => [ 'AllWinner', 'F761', DeviceType::TABLET ], + 'Softwinerf761I' => [ 'AllWinner', 'F761', DeviceType::TABLET ], + 'Softwinerf900' => [ 'AllWinner', 'F900', DeviceType::TABLET ], + 'SoftwinerEvbV13' => [ 'AllWinner', 'V13', DeviceType::TABLET ], + 'GT-I7105' => [ 'Alps', 'GT-I7105' ], + 'GT-I9810' => [ 'Alps', 'GT-I9810' ], + 'muPAD 7M' => [ 'Alps', 'muPAD 7M', DeviceType::TABLET ], + 'AT107F' => [ 'Aluratek', 'Cinepad AT107F', DeviceType::TABLET ], + 'AT108F' => [ 'Aluratek', 'Cinepad AT108F', DeviceType::TABLET ], + 'AT197F' => [ 'Aluratek', 'Cinepad AT197F', DeviceType::TABLET ], + 'Amazon Kindle Fire!' => [ 'Amazon', 'Kindle Fire', DeviceType::TABLET ], // 1st generation or unknown variant using unofficial firmware + 'Amazon Otter' => [ 'Amazon', 'Kindle Fire', DeviceType::TABLET ], // "Otter" 1st generation 7" (1024 x 600) + 'Amazon OtterX' => [ 'Amazon', 'Kindle Fire', DeviceType::TABLET ], // "Otter" 1st generation 7" (1024 x 600) + 'Amazon Otter2' => [ 'Amazon', 'Kindle Fire (2012)', DeviceType::TABLET ], // "Otter2" 2nd generation 7" (1024 x 600) + 'Amazon Tate' => [ 'Amazon', 'Kindle Fire HD (2012)', DeviceType::TABLET ], // "Tate" 2nd generation 7" HD (1280 x 800) + 'Amazon Jem' => [ 'Amazon', 'Kindle Fire HD 8.9 (2012)', DeviceType::TABLET ], // "Jem" 2nd generation 8.9" HD (1920 x 1200) + 'soho' => [ 'Amazon', 'Kindle Fire HD (2013)', DeviceType::TABLET ], // "Soho" 3rd generation 7" HD (1280 x 800) + 'thor' => [ 'Amazon', 'Kindle Fire HDX (2013)', DeviceType::TABLET ], // "Thor" 3rd generation 7" HDX (1920 x 1200) + 'apollo' => [ 'Amazon', 'Kindle Fire HDX 8.9 (2013)', DeviceType::TABLET ], // "Apollo" 3rd generation 8.9" HDX (2560 x 1600) + 'Kindle Fire' => [ 'Amazon', 'Kindle Fire', DeviceType::TABLET, Flag::FIREOS ], // "Otter" 1st generation 7" (1024 x 600) + 'KFOTE?!' => [ 'Amazon', 'Kindle Fire (2012)', DeviceType::TABLET, Flag::FIREOS ], // "Otter2" 2nd generation 7" (1024 x 600) + 'KFTT' => [ 'Amazon', 'Kindle Fire HD (2012)', DeviceType::TABLET, Flag::FIREOS ], // "Tate" 2nd generation 7" HD (1280 x 800) + 'KFJW(I|A)!' => [ 'Amazon', 'Kindle Fire HD 8.9 (2012)', DeviceType::TABLET, Flag::FIREOS ], // "Jem" 2nd generation 8.9" HD (1920 x 1200) + 'KFJMWI' => [ 'Amazon', 'Kindle Fire', DeviceType::TABLET, Flag::FIREOS ], // 3rd generation (1280 x 800) + 'KFSOWI' => [ 'Amazon', 'Kindle Fire HD (2013)', DeviceType::TABLET, Flag::FIREOS ], // "Soho" 3rd generation 7" HD (1280 x 800) + 'KFTHW(I|A)!' => [ 'Amazon', 'Kindle Fire HDX (2013)', DeviceType::TABLET, Flag::FIREOS ], // "Thor" 3rd generation 7" HDX (1920 x 1200) + 'KFAPW(I|A)!' => [ 'Amazon', 'Kindle Fire HDX 8.9 (2013)', DeviceType::TABLET, Flag::FIREOS ], // "Apollo" 3rd generation 8.9" HDX (2560 x 1600) + 'KFARWI' => [ 'Amazon', 'Fire HD 6 (2014)', DeviceType::TABLET, Flag::FIREOS ], // 4th generation 6" HD (1280 x 800) + 'KFASWI' => [ 'Amazon', 'Fire HD 7 (2014)', DeviceType::TABLET, Flag::FIREOS ], // 4th generation 7" HD (1280 x 800) + 'KFSAW(I|A)!' => [ 'Amazon', 'Fire HDX 8.9 (2014)', DeviceType::TABLET, Flag::FIREOS ], // 4th generation 8.9" HDX (2560 x 1600) + 'KFFOWI' => [ 'Amazon', 'Fire (2015)', DeviceType::TABLET, Flag::FIREOS ], // 5th generation 7" (1024 x 600) + 'KFMEWI' => [ 'Amazon', 'Fire HD 8 (2015)', DeviceType::TABLET, Flag::FIREOS ], // 5th generation 8" HD (1280 x 800) + 'KFTBWI' => [ 'Amazon', 'Fire HD 10 (2015)', DeviceType::TABLET, Flag::FIREOS ], // 5th generation 10" HD (1280 x 800) + 'KFAUWI' => [ 'Amazon', 'Fire 7 (2017)', DeviceType::TABLET, Flag::FIREOS ], // xth generation 7" (1024 x 600) + 'KFGIWI' => [ 'Amazon', 'Fire HD 8 (2016)', DeviceType::TABLET, Flag::FIREOS ], // xth generation 8" HD (1280 x 800) + 'KFDOWI' => [ 'Amazon', 'Fire HD 8 (2017)', DeviceType::TABLET, Flag::FIREOS ], // xth generation 8" HD (1280 x 800) + 'KFSUWI' => [ 'Amazon', 'Fire HD 10 (2017)', DeviceType::TABLET, Flag::FIREOS ], // 5th generation 10" HD (1280 x 800) + // 'KFSLWI' + // 'KFBJWI' + // 'KFHDX' + 'SD4930UR' => [ 'Amazon', 'Fire Phone', DeviceType::MOBILE, Flag::FIREOS ], + 'AFTB' => [ 'Amazon', 'Fire TV', DeviceType::TELEVISION, Flag::FIREOS ], + 'AFTS' => [ 'Amazon', 'Fire TV (2015)', DeviceType::TELEVISION, Flag::FIREOS ], + 'AFTN' => [ 'Amazon', 'Fire TV (2017)', DeviceType::TELEVISION, Flag::FIREOS ], + 'AFTRS' => [ 'Amazon', 'Fire TV Edition', DeviceType::TELEVISION, Flag::FIREOS ], + 'AFTM' => [ 'Amazon', 'Fire TV Stick', DeviceType::TELEVISION, Flag::FIREOS ], + 'AFTT' => [ 'Amazon', 'Fire TV Stick (2016)', DeviceType::TELEVISION, Flag::FIREOS ], + 'AMI-TT2' => [ 'Amicroe', 'TouchTab II', DeviceType::TABLET ], + 'AMI-TT2C' => [ 'Amicroe', 'TouchTab IIC', DeviceType::TABLET ], + 'AMI-TT2E' => [ 'Amicroe', 'TouchTab IIE', DeviceType::TABLET ], + 'AMI-TT4' => [ 'Amicroe', 'TouchTab IV', DeviceType::TABLET ], + 'AMI-TTS' => [ 'Amicroe', 'TouchTab S', DeviceType::TABLET ], + 'AMI-TTLITE' => [ 'Amicroe', 'TouchTab Lite', DeviceType::TABLET ], + 'AMI-TTFORCE' => [ 'Amicroe', 'TouchTab Force', DeviceType::TABLET ], + 'AML-MX REF' => [ 'AmLogic', 'MX', DeviceType::TABLET ], + + '(AMO-)?AMOI!!' => [ + 'AMOI 1570W' => [ 'Amoi', '1570W' ], + 'AMOI-A702' => [ 'Amoi', 'A702' ], + 'AMOI A726T' => [ 'Amoi', 'A726T' ], + 'AMOI A860w' => [ 'Amoi', 'A860W' ], + 'AMOI-A862W' => [ 'Amoi', 'A862W' ], + 'AMOI A900T' => [ 'Amoi', 'A900T' ], + 'AMOI A900W' => [ 'Amoi', 'A900W' ], + 'AMOI A918T' => [ 'Amoi', 'A918T' ], + 'AMOI A920' => [ 'Amoi', 'A920' ], + 'AMOI A920T' => [ 'Amoi', 'A920T' ], + 'AMOI A920W' => [ 'Amoi', 'A920W' ], + 'AMOI A928W' => [ 'Amoi', 'A928W' ], + 'AMOI A955T' => [ 'Amoi', 'A955T' ], + 'AMO-AMOI E700C' => [ 'Amoi', 'E700C' ], + 'AMOI E800C' => [ 'Amoi', 'E800C' ], + 'AMOI N79+' => [ 'Amoi', 'N79' ], + 'AMOI N89' => [ 'Amoi', 'N89' ], + 'AMOI N807' => [ 'Amoi', 'N807' ], + 'AMOI N808' => [ 'Amoi', 'N808' ], + 'AMOI N816' => [ 'Amoi', 'N816' ], + 'AMOI N818' => [ 'Amoi', 'N818' ], + 'AMOI N820' => [ 'Amoi', 'N820' ], + 'AMOI N821' => [ 'Amoi', 'N821' ], + 'AMOI[ -]N828!' => [ 'Amoi', 'N828' ], + 'AMOI N850' => [ 'Amoi', 'N850' ], + 'AMOI N890' => [ 'Amoi', 'N890' ], + 'AMOI M8228' => [ 'Amoi', 'M8228' ], + 'AMOI M8448' => [ 'Amoi', 'M8448' ], + 'AMOI M8458' => [ 'Amoi', 'M8458' ], + 'AMOI-X4' => [ 'Amoi', 'X4' ], + 'Amoi Q50H' => [ 'Amoi', 'Q50H', DeviceType::TABLET ], + ], + + 'A726T' => [ 'Amoi', 'A726T' ], + 'A862W' => [ 'Amoi', 'A862W' ], + 'AMD120' => [ 'AnyDATA', 'AnyTAB AMD120', DeviceType::TABLET ], + 'mw07' => [ 'AOC', 'Breeze MW07', DeviceType::TABLET ], + 'MW0710' => [ 'AOC', 'Breeze MW0710', DeviceType::TABLET ], + 'MW0711' => [ 'AOC', 'Breeze MW0711', DeviceType::TABLET ], + 'MW0712' => [ 'AOC', 'Breeze MW0712', DeviceType::TABLET ], + 'MW0731' => [ 'AOC', 'Breeze MW0731', DeviceType::TABLET ], + 'MW0731PLUS' => [ 'AOC', 'Breeze MW0731 Plus', DeviceType::TABLET ], + 'MW0733' => [ 'AOC', 'Breeze MW0733', DeviceType::TABLET ], + 'MW0811' => [ 'AOC', 'Breeze MW0811', DeviceType::TABLET ], + 'MW0812' => [ 'AOC', 'Breeze MW0812', DeviceType::TABLET ], + 'MW0812 V2.0' => [ 'AOC', 'Breeze MW0812', DeviceType::TABLET ], + 'MW0821' => [ 'AOC', 'Breeze MW0821', DeviceType::TABLET ], + 'MW0821 V2.0' => [ 'AOC', 'Breeze MW0821', DeviceType::TABLET ], + 'MW0821+' => [ 'AOC', 'Breeze MW0821 Plus', DeviceType::TABLET ], + 'MW0831' => [ 'AOC', 'Breeze MW0831', DeviceType::TABLET ], + 'MW0831Plus' => [ 'AOC', 'Breeze MW0831 Plus', DeviceType::TABLET ], + 'MW0922' => [ 'AOC', 'Breeze MW0922', DeviceType::TABLET ], + 'MW0931' => [ 'AOC', 'Breeze MW0931', DeviceType::TABLET ], + 'AOLE 828' => [ 'Aole', '828' ], + 'AOSON G18' => [ 'Aoson', 'G18', DeviceType::TABLET ], + 'Aoson M11' => [ 'Aoson', 'M11', DeviceType::TABLET ], + 'M19' => [ 'Aoson', 'M19', DeviceType::TABLET ], + 'Aoson M19' => [ 'Aoson', 'M19', DeviceType::TABLET ], + 'aoson m33' => [ 'Aoson', 'M33', DeviceType::TABLET ], + 'aoson M33 3G' => [ 'Aoson', 'M33', DeviceType::TABLET ], + 'AOSON M82T' => [ 'Aoson', 'M82T', DeviceType::TABLET ], + 'AOSON M97F' => [ 'Aoson', 'M97F', DeviceType::TABLET ], + 'AOSON M106NB' => [ 'Aoson', 'M106NB', DeviceType::TABLET ], + 'AOSON M701TG-C' => [ 'Aoson', 'M701TG-C', DeviceType::TABLET ], + 'AOSON M706T' => [ 'Aoson', 'M706T', DeviceType::TABLET ], + 'AOSON M721S' => [ 'Aoson', 'M721S', DeviceType::TABLET ], + 'aoson M787T' => [ 'Aoson', 'M787T', DeviceType::TABLET ], + 'AOSON M1016' => [ 'Aoson', 'M1016', DeviceType::TABLET ], + 'Apanda.A60!' => [ 'Apanda', 'A60' ], + 'apanda-A80S' => [ 'Apanda', 'A80S' ], + 'apanda A80S' => [ 'Apanda', 'A80S' ], + 'apanda-A80T' => [ 'Apanda', 'A80T' ], + 'apanda-A100' => [ 'Apanda', 'A100' ], + 'apanda-A101' => [ 'Apanda', 'A101' ], + 'Quicki[ -]?([0-9]+)!' => [ 'Apollo', 'Quicki $1', DeviceType::TABLET ], + 'Aprix D97+' => [ 'Aprix', 'D97+', DeviceType::TABLET ], + 'ARCHM901' => [ 'Archos', 'Arnova M901', DeviceType::TABLET ], + 'AN7CG2' => [ 'Archos', 'Arnova 7c G2', DeviceType::TABLET ], + 'Arnova 7G2' => [ 'Archos', 'Arnova 7 G2', DeviceType::TABLET ], + 'AN7G2' => [ 'Archos', 'Arnova 7 G2', DeviceType::TABLET ], + 'AN7G2DTE' => [ 'Archos', 'Arnova 7 G2', DeviceType::TABLET ], + 'AN7G2I' => [ 'Archos', 'Arnova 7 G2', DeviceType::TABLET ], + 'AN7G3' => [ 'Archos', 'Arnova 7 G3', DeviceType::TABLET ], + 'AN7BG2' => [ 'Archos', 'Arnova 7b G2', DeviceType::TABLET ], + 'AN7BG2DT' => [ 'Archos', 'Arnova 7b G2', DeviceType::TABLET ], + 'AN7BG3' => [ 'Archos', 'Arnova 7b G3', DeviceType::TABLET ], + 'AN7CG3' => [ 'Archos', 'Arnova 7c G3', DeviceType::TABLET ], + 'AN7DG3' => [ 'Archos', 'Arnova 7d G3', DeviceType::TABLET ], + 'AN7DG3B' => [ 'Archos', 'Arnova 7d G3', DeviceType::TABLET ], + 'AN7DG3-CP' => [ 'Archos', 'Arnova Childpad', DeviceType::TABLET ], + 'AN7DG3ST-CP' => [ 'Archos', 'Arnova Childpad', DeviceType::TABLET ], + 'AN7FG3' => [ 'Archos', 'Arnova 7f G3', DeviceType::TABLET ], + 'AN7HG3' => [ 'Archos', 'Arnova 7h G3', DeviceType::TABLET ], + 'AN7IG3' => [ 'Archos', 'Arnova 7i G3', DeviceType::TABLET ], + 'AN7SP' => [ 'Archos', 'Arnova Soundpad', DeviceType::TABLET ], + 'A80KSC!' => [ 'Archos', 'Arnova 8', DeviceType::TABLET ], + 'ARNOVA8G2' => [ 'Archos', 'Arnova 8 G2', DeviceType::TABLET ], + 'AN8G2' => [ 'Archos', 'Arnova 8 G2', DeviceType::TABLET ], + 'AN8G2I' => [ 'Archos', 'Arnova 8 G2', DeviceType::TABLET ], + 'AN8G3' => [ 'Archos', 'Arnova 8 G3', DeviceType::TABLET ], + 'AN8BG2' => [ 'Archos', 'Arnova 8b G2', DeviceType::TABLET ], + 'AN8BG3' => [ 'Archos', 'Arnova 8b G3', DeviceType::TABLET ], + 'AN8CG3' => [ 'Archos', 'Arnova 8c G3', DeviceType::TABLET ], + 'AN9G2' => [ 'Archos', 'Arnova 9 G2', DeviceType::TABLET ], + 'AN9G2I' => [ 'Archos', 'Arnova 9i G2', DeviceType::TABLET ], + 'AN9G3' => [ 'Archos', 'Arnova 9 G3', DeviceType::TABLET ], + 'A101B' => [ 'Archos', 'Arnova 10', DeviceType::TABLET ], + 'Arnova 10G2' => [ 'Archos', 'Arnova 10 G2', DeviceType::TABLET ], + 'A101C' => [ 'Archos', 'Arnova 10 G2', DeviceType::TABLET ], + 'AN10G2' => [ 'Archos', 'Arnova 10 G2', DeviceType::TABLET ], + 'AN10G2-KN' => [ 'Archos', 'Arnova 10 G2', DeviceType::TABLET ], + 'AN10G2-LN' => [ 'Archos', 'Arnova 10 G2', DeviceType::TABLET ], + 'AN10G2I' => [ 'Archos', 'Arnova 10 G2', DeviceType::TABLET ], + 'AN10BG2' => [ 'Archos', 'Arnova 10b G2', DeviceType::TABLET ], + 'AN10BG2DT' => [ 'Archos', 'Arnova 10b G2', DeviceType::TABLET ], + 'AN10BG2I' => [ 'Archos', 'Arnova 10b G2', DeviceType::TABLET ], + 'AN10BG3' => [ 'Archos', 'Arnova 10b G3', DeviceType::TABLET ], + 'AN10BG3DT' => [ 'Archos', 'Arnova 10b G3', DeviceType::TABLET ], + 'AN10CG3' => [ 'Archos', 'Arnova 10c G3', DeviceType::TABLET ], + 'AN10DG3' => [ 'Archos', 'Arnova 10d G3', DeviceType::TABLET ], + 'AN13FP' => [ 'Archos', 'Arnova Familypad', DeviceType::TABLET ], + 'ARNOVA 90G3' => [ 'Archos', 'Arnova 90 G3', DeviceType::TABLET ], + 'ARNOVA 90 G4' => [ 'Archos', 'Arnova 90 G4', DeviceType::TABLET ], + 'ARNOVA 97G4' => [ 'Archos', 'Arnova 97 G4', DeviceType::TABLET ], + 'ARNOVA 101 G4' => [ 'Archos', 'Arnova 101 G4', DeviceType::TABLET ], + 'AN8BG3-LZ' => [ 'Archos', 'Lazer 8.0', DeviceType::TABLET ], + 'A101B2-LZ' => [ 'Archos', 'Lazer 10.1', DeviceType::TABLET ], + 'AN10G2-LZ' => [ 'Archos', 'Lazer 10.1', DeviceType::TABLET ], + 'AN10BG3-LZ' => [ 'Archos', 'Lazer 10.1', DeviceType::TABLET ], + 'AN7DG3C' => [ 'Archos', 'Tabeo', DeviceType::TABLET ], + 'A32' => [ 'Archos', '32', 'media' ], + 'A35DE' => [ 'Archos', '35 Smart Home Phone' ], + 'A43' => [ 'Archos', '43', 'media' ], + 'ARCHOS 50PL' => [ 'Archos', '50PL', 'media' ], + 'ARCHOS 79XE' => [ 'Archos', '79XE', 'media' ], + 'Archos5' => [ 'Archos', '5', 'media' ], + 'A70HB' => [ 'Archos', '7 Home Tablet', DeviceType::TABLET ], // G7 + 'A70BHT' => [ 'Archos', '7 Home Tablet', DeviceType::TABLET ], + 'A70BHT-LZ' => [ 'Archos', '7 Home Tablet', DeviceType::TABLET ], + 'A70BHT-PR' => [ 'Archos', '7 Home Tablet', DeviceType::TABLET ], + 'A70CHT' => [ 'Archos', '7c Home Tablet', DeviceType::TABLET ], + 'A80HF' => [ 'Archos', '8 Home Tablet', DeviceType::TABLET ], + 'A70H' => [ 'Archos', '70 Internet Tablet', DeviceType::TABLET ], // G8 + 'A70S' => [ 'Archos', '70s Internet Tablet', DeviceType::TABLET ], + 'A7EB' => [ 'Archos', '70b eReader', DeviceType::TABLET ], + 'ARCHOS 70it2' => [ 'Archos', '70b Internet Tablet', DeviceType::TABLET ], + 'ARCHOS 70it2G8' => [ 'Archos', '70b Internet Tablet', DeviceType::TABLET ], + 'Archos 80 Internet Tablet' => [ 'Archos', '80 Internet Tablet', DeviceType::TABLET ], + 'A101IT' => [ 'Archos', '101 Internet Tablet', DeviceType::TABLET ], + 'Archos 101 Internet Tablet' => [ 'Archos', '101 Internet Tablet', DeviceType::TABLET ], + 'AC45BHE' => [ 'Archos', '45b Helium' ], + 'AC50BHE' => [ 'Archos', '50b Helium' ], + 'AC50DHE' => [ 'Archos', '50d Helium' ], + 'AC45NE' => [ 'Archos', '45 Neon' ], + + 'Archos!!' => [ + 'ARCHOS 80G9' => [ 'Archos', '80 G9', DeviceType::TABLET ], + 'ARCHOS 101G9' => [ 'Archos', '101 G9', DeviceType::TABLET ], + 'ARCHOS 97XSLG10' => [ 'Archos', '97 XS', DeviceType::TABLET ], + 'ARCHOS 80XSK' => [ 'Archos', '80 XS', DeviceType::TABLET ], + 'ARCHOS 101G10' => [ 'Archos', '101 XS', DeviceType::TABLET ], + 'ARCHOS 101 XS 2' => [ 'Archos', '101 XS 2', DeviceType::TABLET ], + 'Archos 101 XS 2 Moi' => [ 'Archos', '101 XS 2', DeviceType::TABLET ], + 'Archos 101XS3' => [ 'Archos', '101 XS 3', DeviceType::TABLET ], + 'ARCHOS 101b XS2' => [ 'Archos', '101b XS 2', DeviceType::TABLET ], + 'Archos 70 Carbon' => [ 'Archos', '70 Carbon', DeviceType::TABLET ], + 'ARCHOS 80 Carbon' => [ 'Archos', '80 Carbon', DeviceType::TABLET ], + 'ARCHOS 97 CARBON' => [ 'Archos', '97 Carbon', DeviceType::TABLET ], + 'Archos 50 Cobalt' => [ 'Archos', '50 Cobalt' ], + 'Archos 50B Cobalt' => [ 'Archos', '50b Cobalt' ], + 'Archos 55 Cobalt Plus' => [ 'Archos', '55 Cobalt Plus' ], + 'Archos 55B Cobalt' => [ 'Archos', '55b Cobalt' ], + 'ARCHOS 70 Cobalt' => [ 'Archos', '70 Cobalt', DeviceType::TABLET ], + 'Archos 70b Cobalt' => [ 'Archos', '70b Cobalt', DeviceType::TABLET ], + 'Archos 70c Cobalt' => [ 'Archos', '70c Cobalt', DeviceType::TABLET ], + 'Archos 79 Cobalt' => [ 'Archos', '79 Cobalt', DeviceType::TABLET ], + 'ARCHOS 80 COBALT' => [ 'Archos', '80 Cobalt', DeviceType::TABLET ], + 'Archos 97 Cobalt' => [ 'Archos', '97 Cobalt', DeviceType::TABLET ], + 'Archos 101 Cobalt' => [ 'Archos', '101 Cobalt', DeviceType::TABLET ], + 'Archos 70 Copper' => [ 'Archos', '70 Copper', DeviceType::TABLET ], + 'Archos 70b Copper' => [ 'Archos', '70b Copper', DeviceType::TABLET ], + 'Archos 90 Copper' => [ 'Archos', '90 Copper', DeviceType::TABLET ], + 'Archos 90b Copper' => [ 'Archos', '90b Copper', DeviceType::TABLET ], + 'Archos 101 Copper' => [ 'Archos', '101 Copper', DeviceType::TABLET ], + 'Archos 101b Copper' => [ 'Archos', '101b Copper', DeviceType::TABLET ], + 'Archos 101c Copper' => [ 'Archos', '101c Copper', DeviceType::TABLET ], + 'Archos 50 Diamond' => [ 'Archos', '50 Diamond' ], + 'Archos 55 Diamond 2 Plus' => [ 'Archos', '55 Diamond 2 Plus' ], + 'Archos 55 diamond Selfie' => [ 'Archos', '55 Diamond Selfie' ], + 'Archos Diamond S' => [ 'Archos', 'Diamond S' ], + 'Archos Diamond Plus' => [ 'Archos', 'Diamond Plus' ], + 'Archos 40 Helium' => [ 'Archos', '40 Helium' ], + 'Archos 45 Helium 4G' => [ 'Archos', '45 Helium' ], + 'ARCHOS 45b Helium' => [ 'Archos', '45b Helium' ], + 'Archos 45c Helium' => [ 'Archos', '45c Helium' ], + 'Archos 50 Helium 4G' => [ 'Archos', '50 Helium' ], + 'Archos 50b Helium 4G' => [ 'Archos', '50b Helium' ], + 'Archos 50c Helium' => [ 'Archos', '50c Helium' ], + 'Archos 50d Helium' => [ 'Archos', '50d Helium' ], + 'Archos 50e Helium' => [ 'Archos', '50e Helium' ], + 'Archos 50f Helium' => [ 'Archos', '50f Helium' ], + 'Archos 50 Helium Plus' => [ 'Archos', '50 Helium Plus' ], + 'Archos 55 Helium' => [ 'Archos', '55 Helium' ], + 'Archos 55 Helium Plus' => [ 'Archos', '55 Helium Plus' ], + 'Archos 70 Helium' => [ 'Archos', '70 Helium', DeviceType::TABLET ], + 'Archos 70b Helium' => [ 'Archos', '70b Helium', DeviceType::TABLET ], + 'Archos 80 Helium 4G' => [ 'Archos', '80 Helium', DeviceType::TABLET ], + 'Archos 80b Helium' => [ 'Archos', '80b Helium', DeviceType::TABLET ], + 'Archos 80b Helium v2' => [ 'Archos', '80b Helium', DeviceType::TABLET ], + 'Archos 101 Helium' => [ 'Archos', '101 Helium', DeviceType::TABLET ], + 'Archos 101c Helium' => [ 'Archos', '101c Helium', DeviceType::TABLET ], + 'ARCHOS 101 Magnus' => [ 'Archos', '101 Magnus', DeviceType::TABLET ], + 'Archos 101 Magnus Plus' => [ 'Archos', '101 Magnus Plus', DeviceType::TABLET ], + 'Archos 40 Neon' => [ 'Archos', '40 Neon' ], + 'Archos 45 Neon' => [ 'Archos', '45 Neon' ], + 'Archos 45b Neon' => [ 'Archos', '45b Neon' ], + 'Archos 50 Neon' => [ 'Archos', '50 Neon' ], + 'ARCHOS 50c Neon' => [ 'Archos', '50c Neon' ], + 'Archos 50b Neon' => [ 'Archos', '50b Neon' ], + 'Archos 50d Neon' => [ 'Archos', '50d Neon' ], + 'Archos 50e Neon' => [ 'Archos', '50e Neon' ], + 'Archos 50f Neon' => [ 'Archos', '50f Neon' ], + 'Archos 70 Neon' => [ 'Archos', '70 Neon', DeviceType::TABLET ], + 'Archos 70 Neon Plus' => [ 'Archos', '70 Neon Plus', DeviceType::TABLET ], + 'Archos 70b Neon' => [ 'Archos', '70b Neon', DeviceType::TABLET ], + 'Archos 70c Neon' => [ 'Archos', '70c Neon', DeviceType::TABLET ], + 'Archos 79 Neon' => [ 'Archos', '79 Neon', DeviceType::TABLET ], + 'Archos 79b Neon' => [ 'Archos', '79b Neon', DeviceType::TABLET ], + 'Archos 79c Neon' => [ 'Archos', '79c Neon', DeviceType::TABLET ], + 'Archos 90 Neon' => [ 'Archos', '90 Neon', DeviceType::TABLET ], + 'Archos 90b Neon' => [ 'Archos', '90b Neon', DeviceType::TABLET ], + 'Archos 97 Neon' => [ 'Archos', '97 Neon', DeviceType::TABLET ], + 'Archos 101 Neon' => [ 'Archos', '101 Neon', DeviceType::TABLET ], + 'Archos 101b Neon' => [ 'Archos', '101b Neon', DeviceType::TABLET ], + 'Archos 101c Neon' => [ 'Archos', '101c Neon', DeviceType::TABLET ], + 'Archos 101d Neon' => [ 'Archos', '101d Neon', DeviceType::TABLET ], + 'Archos 101e Neon' => [ 'Archos', '101e Neon', DeviceType::TABLET ], + 'Archos 116 Neon' => [ 'Archos', '116 Neon', DeviceType::TABLET ], + 'Archos 121 Neon' => [ 'Archos', '121 Neon', DeviceType::TABLET ], + 'Archos 50 Oxygen' => [ 'Archos', '50 Oxygen' ], + 'Archos 50b Oxygen' => [ 'Archos', '50b Oxygen' ], + 'Archos 50c Oxygen' => [ 'Archos', '50c Oxygen' ], + 'Archos 50d Oxygen' => [ 'Archos', '50d Oxygen' ], + 'Archos 50 Oxygen Plus' => [ 'Archos', '50 Oxygen Plus' ], + 'Archos 70 Oxygen' => [ 'Archos', '70 Oxygen', DeviceType::TABLET ], + 'Archos 80 Oxygen' => [ 'Archos', '80 Oxygen', DeviceType::TABLET ], + 'Archos 101 Oxygen' => [ 'Archos', '101 Oxygen', DeviceType::TABLET ], + 'Archos 101b Oxygen' => [ 'Archos', '101b Oxygen', DeviceType::TABLET ], + 'Archos 133 Oxygen' => [ 'Archos', '133 Oxygen', DeviceType::TABLET ], + 'Archos 156 Oxygen' => [ 'Archos', '156 Oxygen', DeviceType::TABLET ], + 'Archos 45 Platinum' => [ 'Archos', '45 Platinum' ], + 'Archos 45b Platinum' => [ 'Archos', '45b Platinum' ], + 'Archos 45c Platinum' => [ 'Archos', '45c Platinum' ], + 'Archos 45d Platinum' => [ 'Archos', '45d Platinum' ], + 'Archos 50 Platinum' => [ 'Archos', '50 Platinum' ], + 'Archos 50 Platinum 4G' => [ 'Archos', '50 Platinum' ], + 'Archos 50b Platinum' => [ 'Archos', '50b Platinum' ], + 'Archos 50c Platinum' => [ 'Archos', '50c Platinum' ], + 'Archos 52 Platinum' => [ 'Archos', '52 Platinum' ], + 'Archos 53 Platinum' => [ 'Archos', '53 Platinum' ], + 'Archos 5.3s Platinum' => [ 'Archos', '53s Platinum' ], + 'Archos 55 Platinum' => [ 'Archos', '55 Platinum' ], + 'Archos 55b Platinum' => [ 'Archos', '55b Platinum' ], + 'Archos 60 Platinum' => [ 'Archos', '60 Platinum' ], + 'Archos 70 Platinum' => [ 'Archos', '70 Platinum', DeviceType::TABLET ], + 'Archos 70 Platinum 3G' => [ 'Archos', '70 Platinum', DeviceType::TABLET ], + 'Archos 70 Platinum v3' => [ 'Archos', '70 Platinum', DeviceType::TABLET ], + 'ARCHOS 79 Platinum' => [ 'Archos', '79 Platinum', DeviceType::TABLET ], + 'ARCHOS 80 Platinum' => [ 'Archos', '80 Platinum', DeviceType::TABLET ], + 'ARCHOS 80b PLATINUM' => [ 'Archos', '80b Platinum', DeviceType::TABLET ], + 'Archos 80c Platinum' => [ 'Archos', '80c Platinum', DeviceType::TABLET ], + 'ARCHOS 97 Platinum' => [ 'Archos', '97 Platinum', DeviceType::TABLET ], + 'ARCHOS 97b PLATINUM' => [ 'Archos', '97b Platinum', DeviceType::TABLET ], + 'Archos 97c Platinum' => [ 'Archos', '97c Platinum', DeviceType::TABLET ], + 'ARCHOS 101 PLATINUM' => [ 'Archos', '101 Platinum', DeviceType::TABLET ], + 'Archos 101 Platinum 3G' => [ 'Archos', '101 Platinum', DeviceType::TABLET ], + 'Archos 101 Platinium 3G' => [ 'Archos', '101 Platinum', DeviceType::TABLET ], + 'Archos 101b Platinium' => [ 'Archos', '101b Platinum', DeviceType::TABLET ], + 'Archos 101c Platinum' => [ 'Archos', '101c Platinum', DeviceType::TABLET ], + 'Archos 101d Platinum v3' => [ 'Archos', '101d Platinum', DeviceType::TABLET ], + 'Archos 40 Power' => [ 'Archos', '40 Power' ], + 'Archos 50 Power' => [ 'Archos', '50 Power' ], + 'Archos 50 Saphir' => [ 'Archos', '50 Saphir' ], + 'Archos 35 Titanium' => [ 'Archos', '35 Titanium' ], + 'Archos 35b Titanium' => [ 'Archos', '35b Titanium' ], + 'Archos 40 Titanium' => [ 'Archos', '40 Titanium' ], + 'Archos 40b Titanium Surround' => [ 'Archos', '40b Titanium' ], + 'Archos 40c Titanium' => [ 'Archos', '40c Titanium' ], + 'ARCHOS 40C TIv2' => [ 'Archos', '40c Titanium' ], + 'ARCHOS 40d Titanium' => [ 'Archos', '40d Titanium' ], + 'Archos 45 Titanium' => [ 'Archos', '45 Titanium' ], + 'Archos 45B Titanium' => [ 'Archos', '45b Titanium' ], + 'Archos 45c Titanium' => [ 'Archos', '45c Titanium' ], + 'Archos 50 Titanium' => [ 'Archos', '50 Titanium' ], + 'Archos 50b Titanium 4G' => [ 'Archos', '50b Titanium' ], + 'Archos 53 Titanium' => [ 'Archos', '53 Titanium' ], + 'Archos 59 Titanium' => [ 'Archos', '59 Titanium' ], + 'ARCHOS 70 Titanium' => [ 'Archos', '70 Titanium', DeviceType::TABLET ], + 'ARCHOS 70b TITANIUM' => [ 'Archos', '70b Titanium', DeviceType::TABLET ], + 'Archos 70c Titanium' => [ 'Archos', '70c Titanium', DeviceType::TABLET ], + 'ARCHOS 80 TITANIUM' => [ 'Archos', '80 Titanium', DeviceType::TABLET ], + 'ARCHOS 97 TITANIUMHD' => [ 'Archos', '97 Titanium', DeviceType::TABLET ], + 'ARCHOS 97B TITANIUM' => [ 'Archos', '97b Titanium', DeviceType::TABLET ], + 'ARCHOS 101 Titanium' => [ 'Archos', '101 Titanium', DeviceType::TABLET ], + 'Archos 59 Xenon' => [ 'Archos', '59 Xenon' ], + 'Archos 62 Xenon' => [ 'Archos', '62 Xenon' ], + 'Archos 64 Xenon' => [ 'Archos', '64 Xenon' ], + 'Archos 70 Xenon' => [ 'Archos', '70 Xenon', DeviceType::TABLET ], + 'Archos 70b Xenon' => [ 'Archos', '70b Xenon', DeviceType::TABLET ], + 'Archos 70c Xenon' => [ 'Archos', '70c Xenon', DeviceType::TABLET ], + 'Archos 70 Xenon Color' => [ 'Archos', '70 Xenon Color', DeviceType::TABLET ], + 'Archos 79 Xenon' => [ 'Archos', '79 Xenon', DeviceType::TABLET ], + 'Archos 80 Xenon' => [ 'Archos', '80 Xenon', DeviceType::TABLET ], + 'Archos 80b Xenon' => [ 'Archos', '80b Xenon', DeviceType::TABLET ], + 'Archos 80c Xenon' => [ 'Archos', '80c Xenon', DeviceType::TABLET ], + 'Archos 80d Xenon' => [ 'Archos', '80d Xenon', DeviceType::TABLET ], + 'Archos 96 Xenon' => [ 'Archos', '96 Xenon', DeviceType::TABLET ], + 'ARCHOS 97 XENON' => [ 'Archos', '97 Xenon', DeviceType::TABLET ], + 'Archos 101 Xenon' => [ 'Archos', '101 Xenon', DeviceType::TABLET ], + 'Archos 101 Xenon v2' => [ 'Archos', '101 Xenon', DeviceType::TABLET ], + 'Archos 101b Xenon v2' => [ 'Archos', '101b Xenon', DeviceType::TABLET ], + 'Archos 101c Xenon' => [ 'Archos', '101c Xenon', DeviceType::TABLET ], + 'ARCHOS 101 Xenon Lite' => [ 'Archos', '101 Xenon Lite', DeviceType::TABLET ], + 'ARCHOS 80 CHILDPAD' => [ 'Archos', '80 Childpad', DeviceType::TABLET ], + 'ARCHOS 101 CHILDPAD' => [ 'Archos', '101 Childpad', DeviceType::TABLET ], + 'Archos Chefpad' => [ 'Archos', 'ChefPad', DeviceType::TABLET ], + 'ARCHOS GAMEPAD' => [ 'Archos', 'Gamepad', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ], + 'ARCHOS GAMEPAD2' => [ 'Archos', 'Gamepad 2', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ], + 'ARCHOS FAMILYPAD 2' => [ 'Archos', 'Familypad 2', DeviceType::TABLET ], + 'Archos 101 DB' => [ 'Archos', 'ArcBook', DeviceType::TABLET ], + 'Archos Smart Home Tablet' => [ 'Archos', 'Smart Home Tablet', DeviceType::TABLET ], + 'ARCHOS LUDOG10' => [ 'Archos', 'TV Connect', DeviceType::TELEVISION ], + 'Archos Access 45 4G' => [ 'Archos', 'Access 45' ], + 'Archos Access 50 4G' => [ 'Archos', 'Access 50' ], + 'Archos Access 50 Color 3G' => [ 'Archos', 'Access 50 Color' ], + 'Archos Access 70 3G' => [ 'Archos', 'Access 70', DeviceType::TABLET ], + 'Archos Access 101 3G' => [ 'Archos', 'Access 101', DeviceType::TABLET ], + 'Archos Access 101 3G V2' => [ 'Archos', 'Access 101', DeviceType::TABLET ], + 'Archos Core 55 4G' => [ 'Archos', 'Core 55' ], + 'Archos Core 70 3G' => [ 'Archos', 'Core 70', DeviceType::TABLET ], + 'Archos Core 101 3G' => [ 'Archos', 'Core 101', DeviceType::TABLET ], + 'Archos Sense 55 DC' => [ 'Archos', 'Sense 55' ], + ], + + 'Artes D708' => [ 'Artes', 'D708', DeviceType::TABLET ], + 'Artes D821' => [ 'Artes', 'D821', DeviceType::TABLET ], + 'D9702' => [ 'Artes', 'D9702', DeviceType::TABLET ], + 'Artes i701' => [ 'Artes', 'i701', DeviceType::TABLET ], + 'ARTES I709' => [ 'Artes', 'i709', DeviceType::TABLET ], + 'Artes Q812' => [ 'Artes', 'Q812', DeviceType::TABLET ], + 'AT10H-A10WP' => [ 'Artview', 'AT10H-A10WP', DeviceType::TABLET ], + 'Arya A1+' => [ 'Arya', 'A1 Plus' ], + 'Arya Z2' => [ 'Arya', 'Z2' ], + + 'ASK SP[0-9]{3,3}!!' => [ + 'ASK SP440 3G' => [ 'ASK', 'SP440' ], + 'ASK SP460 HD' => [ 'ASK', 'SP460 HD' ], + 'ASK SP461 3G' => [ 'ASK', 'SP461' ], + 'ASK SP510 HD' => [ 'ASK', 'SP510 HD' ], + 'ASK SP516 IPS' => [ 'ASK', 'SP516' ], + 'ASK SP516+ IPS' => [ 'ASK', 'SP516+' ], + 'ASK SP551 HD' => [ 'ASK', 'SP551 HD' ], + 'ASK SP551+HD' => [ 'ASK', 'SP551+ HD' ], + 'ASK SP553 HD' => [ 'ASK', 'SP553 HD' ], + 'ASK SP554 HD' => [ 'ASK', 'SP554 HD' ], + 'ASK SP554+ HD' => [ 'ASK', 'SP554+ HD' ], + 'ASK SP581 HD' => [ 'ASK', 'SP581 HD' ], + 'ASK SP583 HD' => [ 'ASK', 'SP583 HD' ], + 'ASK SP584 FHD' => [ 'ASK', 'SP584 FHD' ], + 'ASK SP591' => [ 'ASK', 'SP591' ], + 'ASK SP628 HD' => [ 'ASK', 'SP628 HD' ], + ], + + 'ASTRI' => [ 'ASTRI', 'e-reader', DeviceType::EREADER ], + 'eeepc' => [ 'Asus', 'Eee Pc' ], + 'asus laptop' => [ 'Asus', 'Eee Pc' ], + 'eee 701' => [ 'Asus', 'Eee Pc' ], + 'OMS TTD' => [ 'Asus', 'Eee Pc T10' ], + 'ASUS T20' => [ 'Asus', 'Eee Pc T20' ], + 'ME102A' => [ 'Asus', 'MeMO Pad 10 (ME102A)', DeviceType::TABLET ], + 'ME180A' => [ 'Asus', 'MeMO Pad HD 8 (ME180A)', DeviceType::TABLET ], + 'ME171' => [ 'Asus', 'Eee Pad MeMO (ME171)', DeviceType::TABLET ], + 'ME172V' => [ 'Asus', 'MeMO Pad (ME172V)', DeviceType::TABLET ], + 'ME173X' => [ 'Asus', 'MeMO Pad HD 7 (ME173X)', DeviceType::TABLET ], + 'ME301T' => [ 'Asus', 'MeMO Pad Smart 10 (ME301T)', DeviceType::TABLET ], + 'ME302C' => [ 'Asus', 'MeMO Pad 10 (ME302C)', DeviceType::TABLET ], + 'ME302KL' => [ 'Asus', 'MeMO Pad FHD 10 (ME302KL)', DeviceType::TABLET ], + 'ASUS Pad ME370T' => [ 'Asus', 'Eee Pad MeMO (ME370T)', DeviceType::TABLET ], + 'ME370T' => [ 'Asus', 'Eee Pad MeMO (ME370T)', DeviceType::TABLET ], + 'ME371MG' => [ 'Asus', 'Fonepad (ME371MG)', DeviceType::TABLET ], + 'Asus Fonepad ME371MG 8GB' => [ 'Asus', 'Fonepad (ME371MG)', DeviceType::TABLET ], + 'ME372CG' => [ 'Asus', 'Fonepad 7 (ME372CG)', DeviceType::TABLET ], + 'ME372CL-FF' => [ 'Asus', 'Fonepad 7 (ME372CL)', DeviceType::TABLET ], + 'ME560CG' => [ 'Asus', 'Fonepad Note 6 (ME560CG)', DeviceType::TABLET ], + 'ME581CL' => [ 'Asus', 'MeMO Pad 8 (ME581CL)', DeviceType::TABLET ], + 'Slider SL101' => [ 'Asus', 'Eee Pad Slider', DeviceType::TABLET ], + 'EPAD' => [ 'Asus', 'Eee Pad Transformer', DeviceType::TABLET ], + 'TF101' => [ 'Asus', 'Eee Pad Transformer', DeviceType::TABLET ], + 'TF101-WiMAX' => [ 'Asus', 'Eee Pad Transformer', DeviceType::TABLET ], + 'Transformer' => [ 'Asus', 'Eee Pad Transformer', DeviceType::TABLET ], + 'Transformer TF101(G)?!' => [ 'Asus', 'Eee Pad Transformer', DeviceType::TABLET ], + 'TF201' => [ 'Asus', 'Eee Pad Transformer Prime', DeviceType::TABLET ], + 'tf201t' => [ 'Asus', 'Eee Pad Transformer Prime', DeviceType::TABLET ], + '(Eee Pad )?Transformer Prime TF201!' => [ 'Asus', 'Eee Pad Transformer Prime', DeviceType::TABLET ], + 'Transformer TF201' => [ 'Asus', 'Eee Pad Transformer Prime', DeviceType::TABLET ], + 'Transformer TF201G' => [ 'Asus', 'Eee Pad Transformer Prime', DeviceType::TABLET ], + 'Transformer Prime' => [ 'Asus', 'Eee Pad Transformer Prime', DeviceType::TABLET ], + 'Transformer Prime TF300T' => [ 'Asus', 'Eee Pad Transformer Prime', DeviceType::TABLET ], + 'Transformer 300' => [ 'Asus', 'Transformer Pad 300', DeviceType::TABLET ], + 'Transformer Pad' => [ 'Asus', 'Transformer Pad 300', DeviceType::TABLET ], + '(Transformer )?(Pad )?TF300(T|TG|TL)!' => [ 'Asus', 'Transformer Pad 300', DeviceType::TABLET ], + '(Transformer )?(Pad )?TF502(T)!' => [ 'Asus', 'Transformer Pad 502', DeviceType::TABLET ], + 'Transformer Pad TF600T' => [ 'Asus', 'Transformer Pad 600', DeviceType::TABLET ], + '(Transformer )?(Pad )?TF700(T|K)!' => [ 'Asus', 'Transformer Pad Infinity 700', DeviceType::TABLET ], + 'Transformer (Pad )?Infinity!' => [ 'Asus', 'Transformer Pad Infinity 700', DeviceType::TABLET ], + 'Tablet P1801-T' => [ 'Asus', 'Transformer AiO P1801', DeviceType::TABLET ], + 'Tablet P1802-T' => [ 'Asus', 'Transformer AiO P1802', DeviceType::TABLET ], + 'PadFone' => [ 'Asus', 'PadFone', DeviceType::TABLET ], + 'PadFone 2' => [ 'Asus', 'PadFone 2', DeviceType::TABLET ], + 'PadFone Infinity' => [ 'Asus', 'PadFone Infinity', DeviceType::TABLET ], + 'PadFone Infinity A86' => [ 'Asus', 'PadFone Infinity', DeviceType::TABLET ], + 'PadFone T004' => [ 'Asus', 'PadFone Infinity', DeviceType::TABLET ], + 'PadFone-T004' => [ 'Asus', 'PadFone Infinity', DeviceType::TABLET ], + 'PadFone T008' => [ 'Asus', 'PadFone E', DeviceType::TABLET ], + 'PadFone T00C' => [ 'Asus', 'PadFone mini', DeviceType::TABLET ], + 'PadFone X' => [ 'Asus', 'PadFone X', DeviceType::TABLET ], + 'PadFone X mini' => [ 'Asus', 'PadFone X mini (PF450CL)', DeviceType::TABLET ], + 'ETBW11AA' => [ 'Asus', 'Tough' ], + 'K00C' => [ 'Asus', 'Transformer Pad Infinity', DeviceType::TABLET ], + 'K010' => [ 'Asus', 'Transformer Pad TF103', DeviceType::TABLET ], + 'K010E' => [ 'Asus', 'Transformer Pad TF103', DeviceType::TABLET ], + 'K018' => [ 'Asus', 'Transformer Pad TF103', DeviceType::TABLET ], + 'K014' => [ 'Asus', 'Transformer Pad TF303', DeviceType::TABLET ], + 'K01B' => [ 'Asus', 'Transformer Pad TF303', DeviceType::TABLET ], + 'K00G' => [ 'Asus', 'Fonepad Note 6 (ME560CG)', DeviceType::TABLET ], + 'K00E' => [ 'Asus', 'Fonepad 7 (ME372CG)', DeviceType::TABLET ], + 'K00Y' => [ 'Asus', 'Fonepad 7 (ME372CL)', DeviceType::TABLET ], + 'K00Z' => [ 'Asus', 'Fonepad 7 (ME175CG)', DeviceType::TABLET ], + 'K012' => [ 'Asus', 'Fonepad 7 (FE170CG)', DeviceType::TABLET ], + 'K019' => [ 'Asus', 'Fonepad 7 (FE375CG)', DeviceType::TABLET ], + 'K01F' => [ 'Asus', 'Fonepad 7 (FE171MG)', DeviceType::TABLET ], + 'K01N' => [ 'Asus', 'Fonepad 7 (FE171CG)', DeviceType::TABLET ], + 'K01Q' => [ 'Asus', 'Fonepad 7 (FE375CL)', DeviceType::TABLET ], + 'K016' => [ 'Asus', 'Fonepad 8 (FE380CG)', DeviceType::TABLET ], + 'K01E' => [ 'Asus', 'MeMO Pad (ME103K)', DeviceType::TABLET ], + 'K00X' => [ 'Asus', 'MeMO Pad 7 (ME7530CL)', DeviceType::TABLET ], + 'K00R' => [ 'Asus', 'MeMO Pad 7 (ME572CL)', DeviceType::TABLET ], + 'K007' => [ 'Asus', 'MeMO Pad 7 (ME572C)', DeviceType::TABLET ], + 'K013' => [ 'Asus', 'MeMO Pad 7 (ME176C)', DeviceType::TABLET ], + 'K013C' => [ 'Asus', 'MeMO Pad 7 (ME176C)', DeviceType::TABLET ], + 'K017' => [ 'Asus', 'MeMO Pad 7 (ME170C)', DeviceType::TABLET ], + 'K01A' => [ 'Asus', 'MeMO Pad 7 (ME70C)', DeviceType::TABLET ], + 'MeMO Pad 7' => [ 'Asus', 'MeMo Pad 7 (ME375CL)', DeviceType::TABLET ], + 'K012 2' => [ 'Asus', 'MeMO Pad 7 (FE7010CG)', DeviceType::TABLET ], + 'K01U' => [ 'Asus', 'MeMO Pad 7 (ME171C)', DeviceType::TABLET ], + 'K00S' => [ 'Asus', 'MeMO Pad HD 7 (ME175KG)', DeviceType::TABLET ], + 'K00U' => [ 'Asus', 'MeMO Pad HD 7 (ME173XX)', DeviceType::TABLET ], + 'K011' => [ 'Asus', 'MeMO Pad 8 (ME181C)', DeviceType::TABLET ], + 'AST21' => [ 'Asus', 'MeMO Pad 8 AST21', DeviceType::TABLET, 'carrier' => 'au' ], + 'K015' => [ 'Asus', 'MeMO Pad 8 AST21', DeviceType::TABLET, 'carrier' => 'au' ], + 'K01H' => [ 'Asus', 'MeMO Pad 8 (ME581C)', DeviceType::TABLET ], + 'K00L' => [ 'Asus', 'MeMO Pad HD 8 (ME180A)', DeviceType::TABLET ], + 'K00F' => [ 'Asus', 'MeMO Pad 10 (ME102A)', DeviceType::TABLET ], + 'T00C' => [ 'Asus', 'PadFone mini', DeviceType::TABLET ], + 'T00E' => [ 'Asus', 'PadFone mini (PF400CG)', DeviceType::TABLET ], + 'T00N' => [ 'Asus', 'PadFone S (PF500KL)', DeviceType::TABLET ], + 'T00D' => [ 'Asus', 'PadFone X mini (PF450CL)', DeviceType::TABLET ], + 'T00S' => [ 'Asus', 'PadFone X mini (PF450CL)', DeviceType::TABLET ], + 'T00T' => [ 'Asus', 'PadFone X mini (PF450CL)', DeviceType::TABLET ], + 'T001' => [ 'Asus', 'ZenFone 4 (A400CG)' ], + 'T00I' => [ 'Asus', 'ZenFone 4 (A400CG)' ], + 'T00I-D' => [ 'Asus', 'ZenFone 4 (A400CG)' ], + 'A400CG' => [ 'Asus', 'ZenFone 4 (A400CG)' ], + 'T00F' => [ 'Asus', 'ZenFone 5 (A500CG)' ], + 'A500CG' => [ 'Asus', 'ZenFone 5 (A500CG)' ], + 'T00J' => [ 'Asus', 'ZenFone 5 (A501CG)' ], + 'T00J-D' => [ 'Asus', 'ZenFone 5 (A501CG)' ], + 'T00K' => [ 'Asus', 'ZenFone 5 (A502CG)' ], + 'T00P' => [ 'Asus', 'ZenFone 5 LTE (A500KL)' ], + 'Zenfone 5 LTE' => [ 'Asus', 'ZenFone 5 LTE (A500KL)' ], + 'T00G' => [ 'Asus', 'ZenFone 6 (A600CG)' ], + 'T00Q' => [ 'Asus', 'ZenFone 4 (A450CG)' ], + 'P001' => [ 'Asus', 'ZenPad C 7.0 (Z170MG)', DeviceType::TABLET ], + 'P001 2' => [ 'Asus', 'ZenPad C 7.0 (Z170MG)', DeviceType::TABLET ], + 'P002' => [ 'Asus', 'ZenPad 7.0 (Z370KL)', DeviceType::TABLET ], + 'P00C' => [ 'Asus', 'ZenPad 10 (Z300M)', DeviceType::TABLET ], + 'P00I' => [ 'Asus', 'ZenPad Z10 (Z500KL)', DeviceType::TABLET ], + 'P01M' => [ 'Asus', 'ZenPad S 8.0 (Z580C)', DeviceType::TABLET ], + 'P01MA' => [ 'Asus', 'ZenPad S 8.0 (Z580CA)', DeviceType::TABLET ], + 'P01T' => [ 'Asus', 'ZenPad 10 (Z300CL)', DeviceType::TABLET ], + 'P01T 1' => [ 'Asus', 'ZenPad 10 (Z300CL)', DeviceType::TABLET ], + 'P01V' => [ 'Asus', 'ZenPad 7.0 (Z370CG)', DeviceType::TABLET ], + 'P01W' => [ 'Asus', 'ZenPad 7.0 (Z370C)', DeviceType::TABLET ], + 'P01Y' => [ 'Asus', 'ZenPad C 7.0 (Z170CG)', DeviceType::TABLET ], + 'P01Z' => [ 'Asus', 'ZenPad C 7.0 (Z170C)', DeviceType::TABLET ], + 'P021' => [ 'Asus', 'ZenPad 10 (Z300CG)', DeviceType::TABLET ], + 'P022' => [ 'Asus', 'ZenPad 8.0 (Z380C)', DeviceType::TABLET ], + 'P023' => [ 'Asus', 'ZenPad 10 (Z300C)', DeviceType::TABLET ], + 'P024' => [ 'Asus', 'ZenPad 8.0 (Z380KL)', DeviceType::TABLET ], + // '' => [ 'Asus', 'ZenPad 10 (Z300CNL)', DeviceType::TABLET ], + 'A001' => [ 'Asus', 'ZenFone 3 Ultra (ZU680KL)' ], + 'X007D' => [ 'Asus', 'ZenFone Go (ZB552KL)' ], + 'X008D' => [ 'Asus', 'ZenFone 3 Max (ZC520TL)' ], + 'X008DA' => [ 'Asus', 'ZenFone 3 Max (ZC520TL)' ], + 'X008DB' => [ 'Asus', 'ZenFone 3 Max (ZC520TL)' ], + 'X008DC' => [ 'Asus', 'ZenFone 3 Max (ZC520TL)' ], + 'X009D' => [ 'Asus', 'ZenFone Go (ZB450KL)' ], + 'X009DA' => [ 'Asus', 'ZenFone Go (ZB450KL)' ], + 'X009DB' => [ 'Asus', 'ZenFone Go (ZB450KL)' ], + 'X009DD' => [ 'Asus', 'ZenFone Go (ZB450KL)' ], + 'X00AD' => [ 'Asus', 'ZenFone Go (ZB500KL)' ], + 'X00ADA' => [ 'Asus', 'ZenFone Go (ZB500KL)' ], + 'X00ADC' => [ 'Asus', 'ZenFone Go (ZB500KL)' ], + 'X00BD' => [ 'Asus', 'ZenFone Go (ZB500KG)' ], + 'X00DD' => [ 'Asus', 'ZenFone 3 Max (ZC553KL)' ], + 'X00DDA' => [ 'Asus', 'ZenFone 3 Max (ZC553KL)' ], + 'X00DDB' => [ 'Asus', 'ZenFone 3 Max (ZC553KL)' ], + 'X00HD' => [ 'Asus', 'ZenFone 4 Max (ZC520KL)' ], + 'X00GD' => [ 'Asus', 'ZenFone 3S Max (ZC521TL)' ], + 'X013D' => [ 'Asus', 'ZenFone Go (ZB551KL)' ], + 'X013DA' => [ 'Asus', 'ZenFone Go (ZB551KL)' ], + 'X013DB' => [ 'Asus', 'ZenFone Go (ZB551KL)' ], + 'X013DC' => [ 'Asus', 'ZenFone Go (ZB551KL)' ], + 'X015D' => [ 'Asus', 'ZenFone 3 Max (ZC550TL)' ], + 'X013DB' => [ 'Asus', 'ZenFone Go TV (ZB551KL)' ], + 'X013DC' => [ 'Asus', 'ZenFone Go (ZB551KL)' ], + 'ZB551KL' => [ 'Asus', 'ZenFone Go (ZB551KL)' ], + 'X014D' => [ 'Asus', 'ZenFone Go (ZB452KG)' ], + 'Z002' => [ 'Asus', 'ZenFone 6 (A601CG)' ], + 'Z007' => [ 'Asus', 'ZenFone C (ZC451CG)' ], + 'ZenFone 2' => [ 'Asus', 'ZenFone 2 (ZE550ML)' ], + 'Z008' => [ 'Asus', 'ZenFone 2 (ZE550ML)' ], + 'Z008D' => [ 'Asus', 'ZenFone 2 (ZE550ML)' ], + 'Z00A' => [ 'Asus', 'ZenFone 2 (ZE551ML)' ], + 'Z00AD' => [ 'Asus', 'ZenFone 2 (ZE551ML)' ], + 'Z00ADA' => [ 'Asus', 'ZenFone 2 (ZE551ML)' ], + 'Z00ADB' => [ 'Asus', 'ZenFone 2 (ZE551ML)' ], + 'Z00AS' => [ 'Asus', 'ZenFone 2 (ZE551ML)' ], + 'Z00D' => [ 'Asus', 'ZenFone 2 (ZE500CL)' ], + 'ZenFone 2E' => [ 'Asus', 'ZenFone 2E' ], + 'Z00ED' => [ 'Asus', 'ZenFone 2 Laser (ZE500KL)' ], + 'Z00EDB' => [ 'Asus', 'ZenFone 2 Laser (ZE500KL)' ], + 'Z00LD' => [ 'Asus', 'ZenFone 2 Laser (ZE550KL)' ], + 'Z00LDC' => [ 'Asus', 'ZenFone 2 Laser (ZE550KL)' ], + 'Z00LDD' => [ 'Asus', 'ZenFone 2 Laser (ZE550KL)' ], + 'Z00MD' => [ 'Asus', 'ZenFone 2 Laser (ZE600KL)' ], + 'Z00RD' => [ 'Asus', 'ZenFone 2 Laser (ZE500KG)' ], + 'Z00TD' => [ 'Asus', 'ZenFone 2 Laser (ZE551KL)' ], + 'Z00TDA' => [ 'Asus', 'ZenFone 2 Laser (ZE551KL)' ], + 'Z00WD' => [ 'Asus', 'ZenFone 2 Laser (ZE550KG)' ], + 'Z011D' => [ 'Asus', 'ZenFone 2 Laser (ZE601KL)' ], + 'Z011DD' => [ 'Asus', 'ZenFone 2 Laser (ZE601KL)' ], + 'Z00UD' => [ 'Asus', 'ZenFone Selfie (ZD551KL)' ], + 'Z00UDA' => [ 'Asus', 'ZenFone Selfie (ZD551KL)' ], + 'Z00UDB' => [ 'Asus', 'ZenFone Selfie (ZD551KL)' ], + 'Z00UDC' => [ 'Asus', 'ZenFone Selfie (ZD551KL)' ], + 'Z00UDH' => [ 'Asus', 'ZenFone Selfie (ZD551KL)' ], + 'Z00SD' => [ 'Asus', 'ZenFone Go (ZC451TG)' ], + 'Z00VD' => [ 'Asus', 'ZenFone Go (ZC500TG)' ], + 'Z00XS' => [ 'Asus', 'ZenFone Zoom (ZX551ML)' ], + 'Z00XSA' => [ 'Asus', 'ZenFone Zoom (ZX551ML)' ], + 'Z00XSB' => [ 'Asus', 'ZenFone Zoom (ZX551ML)' ], + 'Z010D' => [ 'Asus', 'ZenFone Max (ZC550KL)' ], + 'Z010DA' => [ 'Asus', 'ZenFone Max (ZC550KL)' ], + 'Z010DB' => [ 'Asus', 'ZenFone Max (ZC550KL)' ], + 'Z010DD' => [ 'Asus', 'ZenFone Max (ZC550KL)' ], + 'Z012D' => [ 'Asus', 'ZenFone 3 (ZE552KL)' ], + 'Z012DA' => [ 'Asus', 'ZenFone 3 (ZE552KL)' ], + 'Z012DB' => [ 'Asus', 'ZenFone 3 (ZE552KL)' ], + 'Z012DC' => [ 'Asus', 'ZenFone 3 (ZE552KL)' ], + 'Z012DE' => [ 'Asus', 'ZenFone 3 (ZE552KL)' ], + 'Z012S' => [ 'Asus', 'ZenFone 3 (ZE552KL)' ], + 'Z016D' => [ 'Asus', 'ZenFone 3 Deluxe (ZS570KL)' ], + 'Z016S' => [ 'Asus', 'ZenFone 3 Deluxe (ZS570KL)' ], + 'Z017D' => [ 'Asus', 'ZenFone 3 Deluxe (ZS570KL)' ], + 'Z017DA' => [ 'Asus', 'ZenFone 3 Deluxe (ZS570KL)' ], + 'Z017DB' => [ 'Asus', 'ZenFone 3 Deluxe (ZS570KL)' ], + 'Z017DC' => [ 'Asus', 'ZenFone 3 Deluxe (ZS570KL)' ], + 'Z01BD' => [ 'Asus', 'ZenFone 3 Laser (ZC551KL)' ], + 'Z01BDA' => [ 'Asus', 'ZenFone 3 Laser (ZC551KL)' ], + 'Z01BDB' => [ 'Asus', 'ZenFone 3 Laser (ZC551KL)' ], + 'Z01BDC' => [ 'Asus', 'ZenFone 3 Laser (ZC551KL)' ], + 'Z01BS' => [ 'Asus', 'ZenFone 3 Laser (ZC551KL)' ], + 'Z01FD' => [ 'Asus', 'ZenFone 3 Deluxe (ZS550KL)' ], + 'Z01GD' => [ 'Asus', 'ZenFone 4 Pro (ZS551KL)' ], + 'Z01HD' => [ 'Asus', 'ZenFone 3 Zoom (ZE553KL)' ], + 'Z01HDA' => [ 'Asus', 'ZenFone 3 Zoom (ZE553KL)' ], + 'Z01KD' => [ 'Asus', 'ZenFone 4 (ZE554KL)' ], + 'Z01KDA' => [ 'Asus', 'ZenFone 4 (ZE554KL)' ], + 'Z01MDA' => [ 'Asus', 'ZenFone 4 Selfie Pro (ZD552KL)' ], + + 'ZB500KG' => [ 'Asus', 'ZenFone Go (ZB500KG)' ], + 'ZB500KL' => [ 'Asus', 'ZenFone Go (ZB500KL)' ], + 'ZB501KL' => [ 'Asus', 'ZenFone Live (ZB501KL)' ], + 'ZC551KL' => [ 'Asus', 'ZenFone 3 Laser (ZC551KL)' ], + 'ZC553KL' => [ 'Asus', 'ZenFone 3 Max (ZC553KL)' ], + 'ZC554KL' => [ 'Asus', 'ZenFone 4 Max (ZC554KL)' ], + 'ZE520KL' => [ 'Asus', 'ZenFone 3 (ZE520KL)' ], + 'ZE550KL' => [ 'Asus', 'ZenFone 2 Laser (ZE550KL)' ], + 'ZE552KL' => [ 'Asus', 'ZenFone 3 (ZE552KL)' ], + 'ZE553KL' => [ 'Asus', 'ZenFone 3 Zoom (ZE553KL)' ], + 'ZE554KL' => [ 'Asus', 'ZenFone 4 (ZE554KL)' ], + + 'Z00YD' => [ 'Asus', 'Live' ], + 'X002' => [ 'Asus', 'Pegasus' ], + 'X003' => [ 'Asus', 'Pegasus' ], + 'X005' => [ 'Asus', 'Pegasus 2 Plus' ], + 'X008' => [ 'Asus', 'Pegasus 3' ], + 'X550' => [ 'Asus', 'Pegasus 2 Plus' ], + 'TX201LA' => [ 'Asus', 'Transformer Book Trio', DeviceType::TABLET ], + 'TX201LAF' => [ 'Asus', 'Transformer Book Trio', DeviceType::TABLET ], + 'asus google cube' => [ 'Asus', 'Cube with Google TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'google cube' => [ 'Asus', 'Cube with Google TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + + 'RTC-700A' => [ 'Asus', 'AAEON RTC-700A', DeviceType::TABLET ], + + 'Qilive!!' => [ + 'Qilive 40' => [ 'Auchan', 'QiLive 4†Smartphone' ], + 'Qilive 45' => [ 'Auchan', 'QiLive 4.5†Smartphone' ], + 'Qilive 50' => [ 'Auchan', 'QiLive 5†Smartphone' ], + 'Qilive 50 QC' => [ 'Auchan', 'QiLive 5†Smartphone' ], + 'Qilive 53' => [ 'Auchan', 'QiLive 5.3†Smartphone' ], + 'Qilive 7' => [ 'Auchan', 'QiLive 7†Dual core tablet', DeviceType::TABLET ], + 'Qilive 70v2' => [ 'Auchan', 'QiLive 7†Dual core tablet', DeviceType::TABLET ], + 'Qilive 79' => [ 'Auchan', 'QiLive 7.9†Dual core tablet', DeviceType::TABLET ], + 'Qilive 97R-2' => [ 'Auchan', 'QiLive 7.9†Quad core tablet', DeviceType::TABLET ], + 'QiLive 8' => [ 'Auchan', 'QiLive 8†Dual core tablet', DeviceType::TABLET ], + 'QiLive 8QC' => [ 'Auchan', 'QiLive 8†Quad core tablet', DeviceType::TABLET ], + 'QiLive 97' => [ 'Auchan', 'QiLive 9.7†Dual core tablet', DeviceType::TABLET ], + 'QiLive 97R' => [ 'Auchan', 'QiLive 9.7R Quad core tablet', DeviceType::TABLET ], + 'QILIVE 101' => [ 'Auchan', 'QiLive 10.1†Dual core tablet', DeviceType::TABLET ], + ], + + 'T-07B' => [ 'AudioSonic', 'T07B', DeviceType::TABLET ], + 'T-800' => [ 'AudioSonic', 'T800', DeviceType::TABLET ], + + 'AUX!!' => [ + 'AUX 909+P' => [ 'AUX', '909+P' ], + 'AUX 910+' => [ 'AUX', '910+' ], + 'AUX 939+' => [ 'AUX', '939+' ], + 'AUX M959P' => [ 'AUX', 'M959P' ], + 'AUX T5100L' => [ 'AUX', 'T5100L' ], + 'AUX V900' => [ 'AUX', 'V900' ], + 'AUX V900P' => [ 'AUX', 'V900P' ], + 'AUX V920' => [ 'AUX', 'V920' ], + 'AUX V920P' => [ 'AUX', 'V920P' ], + 'AUX V926T' => [ 'AUX', 'V926T' ], + 'AUX V950' => [ 'AUX', 'V950' ], + 'AUX V950P' => [ 'AUX', 'V950P' ], + 'AUX V965T' => [ 'AUX', 'V965T' ], + 'AUX W6' => [ 'AUX', 'W6' ], + ], + + 'Avea!!' => [ + 'Avea inTouch 2' => [ 'Avea', 'inTouch 2', DeviceType::TABLET ], + 'Avea inTouch 3' => [ 'Avea', 'inTouch 3', DeviceType::TABLET ], + 'Avea inTouch 3 Large' => [ 'Avea', 'inTouch 3', DeviceType::TABLET ], + 'Avea inTouch 4' => [ 'Avea', 'inTouch 4', DeviceType::TABLET ], + ], + + '(Ilium )?Avvio!!' => [ + 'Avvio 489' => [ 'Avvio', '489' ], + 'Avvio 710' => [ 'Avvio', '710' ], + 'Avvio 735s' => [ 'Avvio', '735' ], + 'Avvio 750' => [ 'Avvio', '750' ], + 'Avvio 753' => [ 'Avvio', '753' ], + 'Ilium AVVIO 760' => [ 'Avvio', '760' ], + 'AVVIO 765!' => [ 'Avvio', '765' ], + 'Avvio 768' => [ 'Avvio', '768' ], + 'Avvio774' => [ 'Avvio', '774' ], + 'Avvio 775' => [ 'Avvio', '775' ], + 'Avvio-775s' => [ 'Avvio', '775s' ], + 'Avvio 776' => [ 'Avvio', '776' ], + 'Avvio 778' => [ 'Avvio', '778' ], + 'Avvio 780' => [ 'Avvio', '780' ], + 'Avvio 785' => [ 'Avvio', '785' ], + 'Avvio786' => [ 'Avvio', '786' ], + 'Avvio 790' => [ 'Avvio', '790' ], + 'Avvio 790s' => [ 'Avvio', '790s' ], + 'Avvio 792' => [ 'Avvio', '792' ], + 'Avvio 792s' => [ 'Avvio', '792s' ], + 'Avvio 793' => [ 'Avvio', '793' ], + 'Avvio 794Q' => [ 'Avvio', '794Q' ], + 'Avvio L500 Claro' => [ 'Avvio', 'L500' ], + 'Avvio Q797' => [ 'Avvio', 'Q797' ], + 'Avvio PAD' => [ 'Avvio', 'Pad', DeviceType::TABLET ], + 'Avvio PAD10.1' => [ 'Avvio', 'Pad', DeviceType::TABLET ], + ], + + '(Axioo[\- ])?PICO!!' => [ + 'PICOphone 2' => [ 'Axioo', 'PICOphone 2' ], + 'PICOphone 4' => [ 'Axioo', 'PICOphone 4' ], + 'Picophone4' => [ 'Axioo', 'PICOphone 4' ], + 'PICOphone4 GDF' => [ 'Axioo', 'PICOphone 4' ], + 'PICOphone4 GDX' => [ 'Axioo', 'PICOphone 4' ], + 'PICOphone M1' => [ 'Axioo', 'PICOphone M1' ], + 'PICOphone M2!' => [ 'Axioo', 'PICOphone M2' ], + 'PICOphone M4N!' => [ 'Axioo', 'PICOphone M4N' ], + 'PICOphone M4P!' => [ 'Axioo', 'PICOphone M4P' ], + 'PICOphone M4S!' => [ 'Axioo', 'PICOphone M4S' ], + 'PICOphone M4U!' => [ 'Axioo', 'PICOphone M4U' ], + 'PICOpad S1(7 3G)' => [ 'Axioo', 'PICOpad S1', DeviceType::TABLET ], + 'PICOpad 7H(7 3G)' => [ 'Axioo', 'PICOpad 7H', DeviceType::TABLET ], + 'PICOpad 7H2 7H(7 3G)' => [ 'Axioo', 'PICOpad 7H2', DeviceType::TABLET ], + 'PICOpadGCE' => [ 'Axioo', 'PICOpad GCE', DeviceType::TABLET ], + 'Axioo PICOpad GDK' => [ 'Axioo', 'PICOpad GDK', DeviceType::TABLET ], + 'PICOpad GDK' => [ 'Axioo', 'PICOpad GDK', DeviceType::TABLET ], + 'PICOpad GDS' => [ 'Axioo', 'PICOpad GDS', DeviceType::TABLET ], + 'PICOpad GEA' => [ 'Axioo', 'PICOpad GEA', DeviceType::TABLET ], + 'PICOpad GEW' => [ 'Axioo', 'PICOpad GEW', DeviceType::TABLET ], + 'PICOpad GFI' => [ 'Axioo', 'PICOpad GFI', DeviceType::TABLET ], + 'PICOpad GGA' => [ 'Axioo', 'PICOpad GGA', DeviceType::TABLET ], + 'PICOpad GGD' => [ 'Axioo', 'PICOpad GGD', DeviceType::TABLET ], + 'PICOpad GGG' => [ 'Axioo', 'PICOpad GGG', DeviceType::TABLET ], + 'PICOpad GHM' => [ 'Axioo', 'PICOpad GHM', DeviceType::TABLET ], + 'Axioo PICOpad GIM' => [ 'Axioo', 'PICOpad GIM', DeviceType::TABLET ], + 'PICOpad GJE' => [ 'Axioo', 'PICOpad GJE', DeviceType::TABLET ], + 'PICOpad GJT' => [ 'Axioo', 'PICOpad GJT', DeviceType::TABLET ], + 'PICOpad-QGN' => [ 'Axioo', 'PICOpad QGN', DeviceType::TABLET ], + 'Axioo-VIGO350' => [ 'Axioo', 'Vigo 350' ], + 'Axioo-VIGO410' => [ 'Axioo', 'Vigo 410' ], + ], + + '(AXPAD|Axxion)!!' => [ + 'AXPAD 7E01' => [ 'Axtrom', 'Axpad 7" Series-7E01', DeviceType::TABLET ], + 'AXPAD 7E02' => [ 'Axtrom', 'Axpad 7" Series-7E02', DeviceType::TABLET ], + 'AXPAD 7I04' => [ 'Axtrom', 'Axpad 7" Series-7I04', DeviceType::TABLET ], + 'AXPAD 9P01' => [ 'Axtrom', 'Axpad 9" Series-9P01', DeviceType::TABLET ], + 'Axxion ATAB-701' => [ 'Axxion', 'ATAB-701', DeviceType::TABLET ], + 'Axxion ATAB-902' => [ 'Axxion', 'ATAB-902', DeviceType::TABLET ], + ], + + 'A10 MID' => [ 'Azhuo', 'A10 MID', DeviceType::TABLET ], + 'A10MID' => [ 'Azhuo', 'A10 MID', DeviceType::TABLET ], + + 'Azumi!!' => [ + 'Azumi A35C Lite' => [ 'Azumi', 'A35c Lite' ], + 'Azumi A35S Lite' => [ 'Azumi', 'A35s Lite' ], + 'Azumi A35S' => [ 'Azumi', 'A35s' ], + 'Azumi A40Style Lite' => [ 'Azumi', 'A40 Style Lite' ], + 'Azumi A40C' => [ 'Azumi', 'A40c' ], + 'Azumi A45S' => [ 'Azumi', 'A45s' ], + 'Azumi A45T' => [ 'Azumi', 'A45t' ], + 'AZUMI A50' => [ 'Azumi', 'A50' ], + 'Azumi A50c' => [ 'Azumi', 'A50c' ], + 'AZUMI A50c+' => [ 'Azumi', 'A50c+' ], + 'Azumi LT50' => [ 'Azumi', 'LT50' ], + 'Azumi LT50+' => [ 'Azumi', 'LT50+' ], + 'Azumi KL32' => [ 'Azumi', 'KL32' ], + 'Azumi IRO A5 Q' => [ 'Azumi', 'Iro A5Q' ], + 'Azumi IRO A5 QL' => [ 'Azumi', 'Iro A5QL' ], + 'Azumi AT7' => [ 'Azumi', 'AT7', DeviceType::TABLET ], + ], + + '(BDS|BHX|BKO)\-!!' => [ + 'BDS-S100' => [ 'B box', 'B tv BDS-S100', DeviceType::TELEVISION ], + 'BDS-S200' => [ 'B box', 'B tv BDS-S200', DeviceType::TELEVISION ], + 'BHX-S100' => [ 'B box', 'B tv BHX-S100', DeviceType::TELEVISION ], + 'BHX-S100 TV' => [ 'B box', 'B tv BHX-S100', DeviceType::TELEVISION ], + 'BHX-UH200' => [ 'B box', 'B tv UHD BHX-UH200', DeviceType::TELEVISION ], + 'BHX-UH400' => [ 'B box', 'B tv UHD BHX-UH400', DeviceType::TELEVISION ], + 'BHX-UH600' => [ 'B box', 'B tv UHD BHX-UH600', DeviceType::TELEVISION ], + 'BKO-UA500' => [ 'B box', 'B tv BKO-UA500', DeviceType::TELEVISION ], + 'BKO-UH400' => [ 'B box', 'B tv UHD BHO-UH400', DeviceType::TELEVISION ], + 'BKO-UH600' => [ 'B box', 'B tv UHD BHO-UH600', DeviceType::TELEVISION ], + 'BKO-S200' => [ 'B box', 'B tv BKO-S200', DeviceType::TELEVISION ], + 'BKO-S200 TV' => [ 'B box', 'B tv BKO-S200', DeviceType::TELEVISION ], + ], + + 'Aero A2-110' => [ 'Banghó', 'Aero A2 110', DeviceType::TABLET ], + 'NOOK' => [ 'Barnes & Noble', 'NOOK', DeviceType::EREADER ], + 'Nook ?Color!' => [ 'Barnes & Noble', 'NOOK Color', DeviceType::EREADER ], + '(NOOK )?BNRV(200|300)!' => [ 'Barnes & Noble', 'NOOK Color', DeviceType::EREADER ], + 'Nook ?Tablet!' => [ 'Barnes & Noble', 'NOOK Tablet', DeviceType::EREADER ], + 'NOOK Slate' => [ 'Barnes & Noble', 'NOOK Tablet', DeviceType::EREADER ], + 'Barnes & Noble Nook Tablet' => [ 'Barnes & Noble', 'NOOK Tablet', DeviceType::EREADER ], + '(NOOK )?BNTV250!' => [ 'Barnes & Noble', 'NOOK Tablet', DeviceType::EREADER ], + '(NOOK )?BNRV350!' => [ 'Barnes & Noble', 'NOOK Simple Touch', DeviceType::EREADER ], + '(NOOK )?BNTV(400)!' => [ 'Barnes & Noble', 'NOOK HD Tablet', DeviceType::EREADER ], + '(NOOK )?BNTV(450)!' => [ 'Barnes & Noble', 'NOOK 7"', DeviceType::EREADER ], + '(NOOK )?BNTV(600)!' => [ 'Barnes & Noble', 'NOOK HD+ Tablet', DeviceType::EREADER ], + '(NOOK )?BNTV(800)!' => [ 'Barnes & Noble', 'NOOK 8"', DeviceType::EREADER ], + 'Barnes & Noble Nook HD' => [ 'Barnes & Noble', 'NOOK HD Tablet', DeviceType::EREADER ], + 'Barnes & Noble Nook HD+' => [ 'Barnes & Noble', 'NOOK HD+ Tablet', DeviceType::EREADER ], + 'Nook HD' => [ 'Barnes & Noble', 'NOOK HD Tablet', DeviceType::EREADER ], + 'BN Nook HD' => [ 'Barnes & Noble', 'NOOK HD Tablet', DeviceType::EREADER ], + 'BN NookHD+' => [ 'Barnes & Noble', 'NOOK HD+ Tablet', DeviceType::EREADER ], + 'Nook HD+' => [ 'Barnes & Noble', 'NOOK HD+ Tablet', DeviceType::EREADER ], + 'HY5001' => [ 'Bedove', 'HY5001' ], + 'BenWee 5100' => [ 'BenWee', '5100' ], + 'ASP-4300W' => [ 'Bauhn', 'ASP-4300W' ], + 'ASP-4500Z' => [ 'Bauhn', 'ASP-4500Z' ], + 'ASP-5000H' => [ 'Bauhn', 'ASP-5000H' ], + 'AT101-014' => [ 'Bauhn', 'AT101-014', DeviceType::TABLET ], + 'AT101T-114' => [ 'Bauhn', 'AT101T-114', DeviceType::TABLET ], + 'WL-101GQC' => [ 'Bauhn', 'WL-101GQC', DeviceType::TABLET ], + 'BEE 9500' => [ 'Bee Mobile', 'Bee 9500' ], + + 'BF[ \-]!!' => [ + 'BF A8' => [ 'Bellefonte', 'A8' ], + 'BF-A10' => [ 'Bellefonte', 'A10' ], + 'BF A11' => [ 'Bellefonte', 'A11' ], + 'BF A12P' => [ 'Bellefonte', 'A12P' ], + 'BF A16' => [ 'Bellefonte', 'A16' ], + 'BF C7' => [ 'Bellefonte', 'C7' ], + 'BF G11' => [ 'Bellefonte', 'G11' ], + 'BF V5T!' => [ 'Bellefonte', 'V5T' ], + ], + + 'BenQ!!' => [ + 'BenQ A3s' => [ 'BenQ', 'A3s' ], + 'BenQ F5' => [ 'BenQ', 'F5' ], + 'BenQ T3' => [ 'BenQ', 'T3' ], + 'BenQ R71' => [ 'BenQ', 'R71', DeviceType::TABLET ], + ], + + 'BenWee!!' => [ + 'BenWee 550S' => [ 'BenWee', '550S' ], + 'BenWee 5100S' => [ 'BenWee', '5100S' ], + 'BenWee N7' => [ 'BenWee', 'N7' ], + 'BenWee N9' => [ 'BenWee', 'N9' ], + ], + + 'BePhone UN030' => [ 'BePhone', 'UN030' ], + + 'Best ?sonny!!' => [ + 'Best sonny L82' => [ 'Best Sonny', 'L82' ], + 'Best sonny LT986' => [ 'Best Sonny', 'LT986' ], + 'Bestsonny LT988' => [ 'Best Sonny', 'LT988' ], + 'Best sonny T898' => [ 'Best Sonny', 'T898' ], + 'BestsonnyT961' => [ 'Best Sonny', 'T961' ], + 'BestsonnyT962' => [ 'Best Sonny', 'T962' ], + ], + + 'CA907AAC0G' => [ 'Besta', 'CA907AAC0G' ], + + 'BFB!!' => [ + 'BFB S7' => [ 'BFB', 'S7' ], + 'BFB W9000' => [ 'BFB', 'W9000' ], + 'BFB W9900' => [ 'BFB', 'W9900' ], + ], + + 'BF[0-9]{2,2}00!!' => [ + 'BF5200' => [ 'Bifer', 'BF5200' ], + 'BF9100' => [ 'Bifer', 'BF9100' ], + 'BF9200' => [ 'Bifer', 'BF9200' ], + ], + + 'Bird!!' => [ + 'BIRD A11C' => [ 'Bird', 'A11C' ], + 'BIRD E700' => [ 'Bird', 'E700' ], + 'Bird-Doeasy E700' => [ 'Bird', 'Doeasy E700' ], + 'Bird i7' => [ 'Bird', 'I7' ], + 'Bird i8' => [ 'Bird', 'I8' ], + 'Bird i9' => [ 'Bird', 'I9' ], + 'Bird i500' => [ 'Bird', 'I500' ], + 'Bird i580' => [ 'Bird', 'I580' ], + 'Bird i600' => [ 'Bird', 'I600' ], + 'BIRD I720 WIFI 3000' => [ 'Bird', 'I720' ], + 'Bird i900' => [ 'Bird', 'I900' ], + 'Bird L9' => [ 'Bird', 'L9' ], + 'BIRD L108' => [ 'Bird', 'L108' ], + 'Bird LT01' => [ 'Bird', 'LT01' ], + 'Bird LT02' => [ 'Bird', 'LT02' ], + 'BIRD S6' => [ 'Bird', 'S6' ], + 'BIRD T40' => [ 'Bird', 'T40' ], + 'BIRD T900' => [ 'Bird', 'T900' ], + 'Bird T9500' => [ 'Bird', 'T9500' ], + 'Bird T9508' => [ 'Bird', 'T9508' ], + 'BIRD T9600' => [ 'Bird', 'T9600' ], + 'Bird T9608' => [ 'Bird', 'T9608' ], + 'BIRD-V8' => [ 'Bird', 'V8' ], + 'BIRD-W3' => [ 'Bird', 'W3' ], + 'BIRD W5' => [ 'Bird', 'W5' ], + 'Bird W188' => [ 'Bird', 'W188' ], + 'Bird XL100' => [ 'Bird', 'XL100' ], + ], + + 'T9108' => [ 'Bird', 'T9108' ], + 'BB EH7' => [ 'BestBuy', 'EH7', DeviceType::TABLET ], + 'BB EH7LE' => [ 'BestBuy', 'EH7LE', DeviceType::TABLET ], + '(BB )?Q5$!' => [ 'BlackBerry', 'Q5' ], + '(BB )?Q10$!' => [ 'BlackBerry', 'Q10' ], + '(BB )?Z10$!' => [ 'BlackBerry', 'Z10' ], + '(BB )?Z30$!' => [ 'BlackBerry', 'Z30' ], + 'BLACKBERRY P\'9982' => [ 'BlackBerry', 'Porsche Design P\'9982' ], + 'STV100-[0-9]!' => [ 'BlackBerry', 'PRIV' ], + 'STH100-[0-9]!' => [ 'BlackBerry', 'DTEK50' ], + 'BBA100-[0-9]!' => [ 'BlackBerry', 'DTEK60' ], + 'BBB100-[0-9]!' => [ 'BlackBerry', 'KEYone' ], + 'BBC100-[0-9]!' => [ 'BlackBerry', 'Aurora' ], + 'BBD100-[0-9]!' => [ 'BlackBerry', 'Motion' ], + 'BBE100-[0-9]!' => [ 'BlackBerry', '"BBE100"' ], + 'BBF100-[0-9]!' => [ 'BlackBerry', 'KEY2' ], + + 'BV8000Pro' => [ 'Blackview', 'BV8000 Pro' ], + 'P2Lite' => [ 'Blackview', 'P2 Lite' ], + + 'Endeavour!!' => [ + 'Endeavour101' => [ 'Blaupunkt', 'Endeavour 101', DeviceType::TABLET ], + 'Endeavour 101G' => [ 'Blaupunkt', 'Endeavour 101 G', DeviceType::TABLET ], + 'Endeavour 101M' => [ 'Blaupunkt', 'Endeavour 101 M', DeviceType::TABLET ], + 'Endeavour 700BN' => [ 'Blaupunkt', 'Endeavour 700 BN', DeviceType::TABLET ], + 'Endeavour 785' => [ 'Blaupunkt', 'Endeavour 785', DeviceType::TABLET ], + 'Endeavour 800NG' => [ 'Blaupunkt', 'Endeavour 800 NG', DeviceType::TABLET ], + 'Endeavour 1000WS' => [ 'Blaupunkt', 'Endeavour 1000 WS', DeviceType::TABLET ], + 'Endeavour 1000QC' => [ 'Blaupunkt', 'Endeavour 1000 QC', DeviceType::TABLET ], + 'Endeavour 1001' => [ 'Blaupunkt', 'Endeavour 1001', DeviceType::TABLET ], + 'Endeavour 1001 DVB-T' => [ 'Blaupunkt', 'Endeavour 1001 DVB-T', DeviceType::TABLET ], + 'Endeavour 1010' => [ 'Blaupunkt', 'Endeavour 1010', DeviceType::TABLET ], + 'Endeavour 1013' => [ 'Blaupunkt', 'Endeavour 1013', DeviceType::TABLET ], + 'Endeavour 1100' => [ 'Blaupunkt', 'Endeavour 1100', DeviceType::TABLET ], + ], + + '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!' => [ + 'BLU ADVANCE 3.5' => [ 'BLU', 'Advance 3.5' ], + 'BLU ADVANCE 4.0' => [ 'BLU', 'Advance 4.0' ], + 'BLU ADVANCE 4.0 L' => [ 'BLU', 'Advance 4.0 L' ], + 'BLU ADVANCE 4.0 L2' => [ 'BLU', 'Advance 4.0 L2' ], + 'BLU Advance 5.0' => [ 'BLU', 'Advance 5.0' ], + 'BLU AMOUR' => [ 'BLU', 'Amour' ], + 'BLU DASH' => [ 'BLU', 'Dash' ], + 'DASH JR' => [ 'BLU', 'Dash Jr' ], + 'BLU DASH JR' => [ 'BLU', 'Dash Jr' ], + 'DASH JR 3G' => [ 'BLU', 'Dash Jr' ], + 'BLU DASH JR SOCIAL' => [ 'BLU', 'Dash Jr Social' ], + 'DASH JR K' => [ 'BLU', 'Dash Jr K' ], + 'DASHJRTV' => [ 'BLU', 'Dash Jr TV' ], + 'DASH JR. 4.0' => [ 'BLU', 'Dash Jr 4.0' ], + 'BLU DASH JR 4.0 K' => [ 'BLU', 'Dash Jr 4.0 K' ], + '(BLU )?DASH 3.2!' => [ 'BLU', 'Dash 3.2' ], + 'Blu Dash3.5' => [ 'BLU', 'Dash 3.5' ], + 'BLU DASH 3.5!' => [ 'BLU', 'Dash 3.5' ], + 'DASH 3.5' => [ 'BLU', 'Dash 3.5' ], + 'DASH 3.5 II' => [ 'BLU', 'Dash 3.5 II' ], + 'BLU DASH 4.0' => [ 'BLU', 'Dash 4.0' ], + 'BLU Dash 4.0 Ce' => [ 'BLU', 'Dash 4.0 CE' ], + 'BLU DASH 4.5' => [ 'BLU', 'Dash 4.5' ], + 'BLU DASH 5.0' => [ 'BLU', 'Dash 5.0' ], + 'DASH 5.0+' => [ 'BLU', 'Dash 5.0+' ], + 'Dash 5.5' => [ 'BLU', 'Dash 5.5' ], + 'BLU DASH5.5' => [ 'BLU', 'Dash 5.5' ], + 'BLU DASH MUSIC 4.0' => [ 'BLU', 'Dash Music 4.0' ], + 'BLU DASH MUSIC 4.5' => [ 'BLU', 'Dash Music 4.5' ], + 'BLU DASH MUSIC II' => [ 'BLU', 'Dash Music II' ], + 'DASH MUSIC JR' => [ 'BLU', 'Dash Music Jr' ], + 'DASHMUSICJR' => [ 'BLU', 'Dash Music Jr' ], + 'DASH C MUSIC' => [ 'BLU', 'Dash C Music' ], + 'BLU DASH J' => [ 'BLU', 'Dash J' ], + 'BLU DASH L' => [ 'BLU', 'Dash L' ], + 'BLU DASH M' => [ 'BLU', 'Dash M' ], + 'BLU DASH M2' => [ 'BLU', 'Dash M2' ], + 'BLU DASH X' => [ 'BLU', 'Dash X' ], + 'BLU DASH X LTE' => [ 'BLU', 'Dash X' ], + 'DASH X PLUS' => [ 'BLU', 'Dash X Plus' ], + 'DASH X PLUS LTE' => [ 'BLU', 'Dash X Plus' ], + 'BLU DASH X2' => [ 'BLU', 'Dash X2' ], + 'BLU Elite 3.8' => [ 'BLU', 'Elite 3.8' ], + 'BLU ENERGY DIAMOND' => [ 'BLU', 'Energy Diamond' ], + 'BLU ENERGY X PLUS' => [ 'BLU', 'Energy X Plus' ], + 'BLU GRAND 5.5 HD' => [ 'BLU', 'Grand 5.5 HD' ], + 'BLU LIFE 8' => [ 'BLU', 'Life 8' ], + 'BLU LIFE 8 XL' => [ 'BLU', 'Life 8 XL' ], + 'BLU LIFE MARK' => [ 'BLU', 'Life Mark' ], + 'BLU Life One' => [ 'BLU', 'Life One' ], + 'BLU LIFE ONE M' => [ 'BLU', 'Life One M' ], + 'BLU LIFE ONE X' => [ 'BLU', 'Life One X' ], + 'BLU LIFE ONE XL' => [ 'BLU', 'Life One XL' ], + 'LIFE PLAY' => [ 'BLU', 'Life Play' ], + 'LIFE PLAY 2' => [ 'BLU', 'Life Play 2' ], + 'BLU LIFE PLAY S' => [ 'BLU', 'Life Play S' ], + 'LIFE PLAY X' => [ 'BLU', 'Life Play X' ], + 'BLU LIFE PLAY MINI' => [ 'BLU', 'Life Play Mini' ], + 'LIFE PRO' => [ 'BLU', 'Life Pro' ], + 'LIFE PURE' => [ 'BLU', 'Life Pure' ], + 'LIFE PURE MINI' => [ 'BLU', 'Life Pure Mini' ], + 'LIFE PURE XL' => [ 'BLU', 'Life Pure XL' ], + 'BLU Life View' => [ 'BLU', 'Life View' ], + 'BLU LIFE XL' => [ 'BLU', 'Life XL' ], + 'BLU Magic' => [ 'BLU', 'Magic' ], + 'BLU Neo 3.5' => [ 'BLU', 'Neo 3.5' ], + 'Neo 3.5' => [ 'BLU', 'Neo 3.5' ], + 'NEO 4.0 JR' => [ 'BLU', 'Neo 4.0 Jr' ], + 'BLU NEO 5.0' => [ 'BLU', 'Neo 5.0' ], + 'BLU Neo JR' => [ 'BLU', 'Neo Jr' ], + 'BLU PURE XL' => [ 'BLU', 'Pure XL' ], + 'BLU Quattro 4.5' => [ 'BLU', 'Quattro 4.5' ], + 'BLU Quattro 4.5 HD' => [ 'BLU', 'Quattro 4.5 HD' ], + 'BLU Quattro 5.7HD' => [ 'BLU', 'Quattro 5.7 HD' ], + 'BLU SPORT 4.5' => [ 'BLU', 'Sport 4.5' ], + 'BLU STAR4.0' => [ 'BLU', 'Star 4.0' ], + 'BLU STUDIO 5.0' => [ 'BLU', 'Studio 5.0' ], + 'BLU STUDIO 5.0 C' => [ 'BLU', 'Studio 5.0c' ], + 'BLU STUDIO 5.0 Ce' => [ 'BLU', 'Studio 5.0ce' ], + 'BLU STUDIO 5.0 C HD' => [ 'BLU', 'Studio 5.0c HD' ], + 'STUDIO 5.0e' => [ 'BLU', 'Studio 5.0e' ], + 'STUDIO 5.0K' => [ 'BLU', 'Studio 5.0k' ], + 'Studio 5.0s' => [ 'BLU', 'Studio 5.0s' ], + 'BLU Studio 5.0 S II' => [ 'BLU', 'Studio 5.0s II' ], + 'Studio 5.0 S II' => [ 'BLU', 'Studio 5.0s II' ], + 'Studio-5.0sII' => [ 'BLU', 'Studio 5.0s II' ], + 'Studio-5.0-s-II' => [ 'BLU', 'Studio 5.0s II' ], + 'BLU STUDIO 5.0 II' => [ 'BLU', 'Studio 5.0 II' ], + 'Studio 5.0LTE' => [ 'BLU', 'Studio 5.0 LTE' ], + 'Studio 5.0 HD LTE' => [ 'BLU', 'Studio 5.0 HD LTE' ], + 'BLU Studio 5.3' => [ 'BLU', 'Studio 5.3' ], + 'Studio 5.3s' => [ 'BLU', 'Studio 5.3s' ], + 'BLU STUDIO 5.3 II' => [ 'BLU', 'Studio 5.3 II' ], + 'STUDIO 5.5' => [ 'BLU', 'Studio 5.5' ], + 'BLU STUDIO 5.5 C' => [ 'BLU', 'Studio 5.5c' ], + 'BLU STUDIO 5.5 S' => [ 'BLU', 'Studio 5.5s' ], + 'STUDIO6 0HD' => [ 'BLU', 'Studio 6.0 HD' ], + 'STUDIO6.0HD' => [ 'BLU', 'Studio 6.0 HD' ], + 'BLU STUDIO 6.0 HD' => [ 'BLU', 'Studio 6.0 HD' ], + 'Studio 6.0 LTE' => [ 'BLU', 'Studio 6.0 LTE' ], + 'BLU STUDIO 7.0' => [ 'BLU', 'Studio 7.0' ], + 'STUDIO 7.0 LTE' => [ 'BLU', 'Studio 7.0 LTE' ], + 'BLU STUDIO 7.0 LTE' => [ 'BLU', 'Studio 7.0 LTE' ], + 'BLU STUDIO 7.0 II' => [ 'BLU', 'Studio 7.0 II' ], + 'STUDIO C' => [ 'BLU', 'Studio C' ], + 'BLU STUDIO C' => [ 'BLU', 'Studio C' ], + 'BLU STUDIO C MINI' => [ 'BLU', 'Studio C Mini' ], + 'BLU STUDIO C HD' => [ 'BLU', 'Studio C HD' ], + 'Studio C HD' => [ 'BLU', 'Studio C HD' ], + 'BLU STUDIO C 5+5' => [ 'BLU', 'Studio C 5+5' ], + 'BLU STUDIO C 5+5 LTE' => [ 'BLU', 'Studio C 5+5' ], + 'BLU STUDIO C SUPER CAMERA' => [ 'BLU', 'Studio C Super Camera' ], + 'STUDIO C8' => [ 'BLU', 'Studio C8' ], + 'BLU STUDIO G' => [ 'BLU', 'Studio G' ], + 'Studio G HD LTE' => [ 'BLU', 'Studio G HD' ], + 'BLU STUDIO G PLUS' => [ 'BLU', 'Studio G Plus' ], + 'STUDIO G PLUS' => [ 'BLU', 'Studio G Plus' ], + 'Studio G2 HD' => [ 'BLU', 'Studio G2 HD' ], + 'STUDIO M LTE' => [ 'BLU', 'Studio M' ], + 'STUDIO M HD' => [ 'BLU', 'Studio M HD' ], + 'BLU STUDIO X' => [ 'BLU', 'Studio X' ], + 'STUDIO-X' => [ 'BLU', 'Studio X' ], + 'STUDIO X PLUS' => [ 'BLU', 'Studio X Plus' ], + 'STUDIO X5' => [ 'BLU', 'Studio X5' ], + 'BLU STUDIO X8 HD' => [ 'BLU', 'Studio X8 HD' ], + 'STUDIO XL' => [ 'BLU', 'Studio XL' ], + 'BLU STUDIO XL' => [ 'BLU', 'Studio XL' ], + 'Studio XL 2' => [ 'BLU', 'Studio XL 2' ], + 'STUDIO ENERGY' => [ 'BLU', 'Studio Energy' ], + 'STUDIO ENERGY 2' => [ 'BLU', 'Studio Energy 2' ], + 'Studio Mega' => [ 'BLU', 'Studio Mega' ], + 'Studio Mini LTE' => [ 'BLU', 'Studio Mini LTE' ], + 'BLU STUDIO ONE PLUS' => [ 'BLU', 'Studio One Plus' ], + 'STUDIO SELFIE' => [ 'BLU', 'Studio Selfie' ], + 'BLU STUDIO SELFIE LTE' => [ 'BLU', 'Studio Selfie LTE' ], + 'BLU STUDIO SELFIE 2' => [ 'BLU', 'Studio Selfie 2' ], + 'BLU Tank4.5' => [ 'BLU', 'Tank 4.5' ], + 'BLU Tigo' => [ 'BLU', 'Tigo' ], + 'BLU TOUCH BOOK 7.0' => [ 'BLU', 'Touch Book 7.0', DeviceType::TABLET ], + 'BLU Touch Book 7.0 LITE' => [ 'BLU', 'Touch Book 7.0 Lite', DeviceType::TABLET ], + 'BLU P100i' => [ 'BLU', 'Touch Book 7.0 Plus', DeviceType::TABLET ], + '(BLU )?VIVO 4.3!' => [ 'BLU', 'Vivo 4.3' ], + '(BLU )?VIVO 4.65!' => [ 'BLU', 'Vivo 4.65' ], + 'VIVO 4.8 HD' => [ 'BLU', 'Vivo 4.8 HD' ], + 'VIVO 5' => [ 'BLU', 'Vivo 5' ], + 'Vivo 5R' => [ 'BLU', 'Vivo 5R' ], + 'Vivo 5 Mini' => [ 'BLU', 'Vivo 5 Mini' ], + 'Vivo 6' => [ 'BLU', 'Vivo 6' ], + 'VIVO IV' => [ 'BLU', 'Vivo IV' ], + 'VIVO AIR' => [ 'BLU', 'Vivo Air' ], + 'BLU VIVO AIR LTE' => [ 'BLU', 'Vivo Air' ], + 'BLU VIVO SELFIE' => [ 'BLU', 'Vivo Selfie' ], + 'VIVO XL' => [ 'BLU', 'Vivo XL' ], + 'Vivo XL2' => [ 'BLU', 'Vivo XL2' ], + ], + + 'R1 HD' => [ 'BLU', 'R1 HD' ], + 'PURE XL' => [ 'BLU', 'Pure XL' ], + 'TOUCHBOOK7.0 3G' => [ 'BLU', 'Touch Book 7.0', DeviceType::TABLET ], + 'BMOBILE DASH 3.5' => [ 'BLU', 'Dash 3.5' ], + 'B3000' => [ 'BlueBo', 'B3000' ], + 'Bluboo S1' => [ 'Bluboo', 'S1' ], + + '(Bmobile )?AX[0-9]{3,4}!!' => [ + 'AX410' => [ 'Bmobile', 'AX410' ], + 'Bmobile AX512' => [ 'Bmobile', 'AX512' ], + 'AX512' => [ 'Bmobile', 'AX512' ], + 'AX515' => [ 'Bmobile', 'AX515' ], + 'AX520' => [ 'Bmobile', 'AX520' ], + 'AX525' => [ 'Bmobile', 'AX525' ], + 'AX530' => [ 'Bmobile', 'AX530' ], + 'AX535' => [ 'Bmobile', 'AX535' ], + 'Bmobile AX524' => [ 'Bmobile', 'AX524' ], + 'Bmobile AX530' => [ 'Bmobile', 'AX530' ], + 'Bmobile AX535' => [ 'Bmobile', 'AX535' ], + 'AX540' => [ 'Bmobile', 'AX540' ], + 'Bmobile AX540' => [ 'Bmobile', 'AX540' ], + 'AX570' => [ 'Bmobile', 'AX570' ], + 'Bmobile AX570' => [ 'Bmobile', 'AX570' ], + 'Bmobile AX600' => [ 'Bmobile', 'AX600' ], + 'AX600' => [ 'Bmobile', 'AX600' ], + 'Bmobile AX605' => [ 'Bmobile', 'AX605' ], + 'AX610' => [ 'Bmobile', 'AX610' ], + 'Bmobile AX610' => [ 'Bmobile', 'AX610' ], + 'AX620' => [ 'Bmobile', 'AX620' ], + 'Bmobile AX620' => [ 'Bmobile', 'AX620' ], + 'Bmobile AX650' => [ 'Bmobile', 'AX650' ], + 'AX650' => [ 'Bmobile', 'AX650' ], + 'Bmobile AX660' => [ 'Bmobile', 'AX660' ], + 'AX660' => [ 'Bmobile', 'AX660' ], + 'Bmobile AX670' => [ 'Bmobile', 'AX670' ], + 'Bmobile AX675' => [ 'Bmobile', 'AX675' ], + 'Bmobile AX680' => [ 'Bmobile', 'AX680' ], + 'Bmobile AX685' => [ 'Bmobile', 'AX685' ], + 'Bmobile AX710' => [ 'Bmobile', 'AX710' ], + 'AX745' => [ 'Bmobile', 'AX745' ], + 'Bmobile AX745' => [ 'Bmobile', 'AX745' ], + 'Bmobile AX800' => [ 'Bmobile', 'AX800' ], + 'Bmobile AX810' => [ 'Bmobile', 'AX810' ], + 'Bmobile AX960' => [ 'Bmobile', 'AX960' ], + 'AX1020' => [ 'Bmobile', 'AX1020' ], + 'BMOBILE AX1020' => [ 'Bmobile', 'AX1020' ], + 'Bmobile AX1030' => [ 'Bmobile', 'AX1030' ], + 'Bmobile AX1035' => [ 'Bmobile', 'AX1035' ], + 'Bmobile AX1050' => [ 'Bmobile', 'AX1050' ], + 'Bmobile AX1055' => [ 'Bmobile', 'AX1055' ], + 'AX1055' => [ 'Bmobile', 'AX1055' ], + 'BMOBILE AX1060' => [ 'Bmobile', 'AX1060' ], + 'AX1060' => [ 'Bmobile', 'AX1060' ], + 'Bmobile AX1065' => [ 'Bmobile', 'AX1065' ], + ], + + 'AX7OO' => [ 'Bmobile', 'AX700' ], + 'Bmobile T35AC' => [ 'Bmobile', 'T35AC' ], + 'JC-S9220' => [ 'Bmorn', 'Phone One' ], + 'BM999' => [ 'Bmorn', 'BM999', DeviceType::TABLET ], + 'V11' => [ 'Bmorn', 'V11', DeviceType::TABLET ], + 'V99' => [ 'Bmorn', 'V99', DeviceType::TABLET ], + 'BO-FRSP4' => [ 'Bogo', 'Friendly 4DC' ], + 'BO-LFSPBS5' => [ 'Bogo', 'Lifestyle 5BS' ], + 'BOVO S-F16' => [ 'Bovo', 'Walker S-F16' ], + 'S-F16' => [ 'Bovo', 'Walker S-F16' ], + + 'BOWAY!!' => [ + 'BOWAY F3' => [ 'Boway', 'F3' ], + 'BOWAY I3' => [ 'Boway', 'I3' ], + 'BOWAY I5' => [ 'Boway', 'I5' ], + 'BOWAY I9' => [ 'Boway', 'I9' ], + 'BOWAY L3' => [ 'Boway', 'L3' ], + 'BOWAY P1' => [ 'Boway', 'P1' ], + 'BOWAY TL100' => [ 'Boway', 'TL100' ], + 'BOWAY TL600' => [ 'Boway', 'TL600' ], + 'BOWAY U1' => [ 'Boway', 'U1' ], + 'BOWAY-BOWAY-U1' => [ 'Boway', 'U1' ], + 'BOWAY U2' => [ 'Boway', 'U2' ], + 'BOWAY-BOWAY-U2' => [ 'Boway', 'U2' ], + 'BOWAY U3' => [ 'Boway', 'U3' ], + 'BOWAY U6' => [ 'Boway', 'U6' ], + 'BOWAY U7' => [ 'Boway', 'U7' ], + 'BOWAY U11' => [ 'Boway', 'U11' ], + 'BOWAY U12' => [ 'Boway', 'U12' ], + 'BOWAY V2C' => [ 'Boway', 'V2C' ], + 'BOWAY V7' => [ 'Boway', 'V7' ], + 'BOWAY V7A' => [ 'Boway', 'V7A' ], + 'BOWAY V9' => [ 'Boway', 'V9' ], + 'BOWAY V70' => [ 'Boway', 'V70' ], + 'BOWAY V80' => [ 'Boway', 'V80' ], + 'BOWAY V95Pro' => [ 'Boway', 'V95 Pro' ], + 'BOWAY X6' => [ 'Boway', 'X6' ], + ], + + 'BroadSign Xpress!' => [ 'BroadSign', 'Xpress', DeviceType::SIGNAGE ], + 'Broncho M7' => [ 'Broncho', 'M7', DeviceType::TABLET ], + 'CENTURION' => [ 'Brondi', 'CENTURION' ], + 'CENTURION 3' => [ 'Brondi', 'CENTURION 3' ], + 'GLADIATOR' => [ 'Brondi', 'GLADIATOR' ], + 'GLADIATOR-2' => [ 'Brondi', 'GLADIATOR 2' ], + 'GLADIATOR 3' => [ 'Brondi', 'GLADIATOR 3' ], + 'GLADIATOR 4' => [ 'Brondi', 'GLADIATOR 4' ], + 'Glory' => [ 'Brondi', 'GLORY' ], + 'Glory 2' => [ 'Brondi', 'GLORY 2' ], + 'Glory3' => [ 'Brondi', 'GLORY 3' ], + 'GLORY 4' => [ 'Brondi', 'GLORY 4' ], + 'LUXURY' => [ 'Brondi', 'LUXURY' ], + 'LUXURY 3' => [ 'Brondi', 'LUXURY 3' ], + 'LUXURY 4' => [ 'Brondi', 'LUXURY 4' ], + 'LUXURY 5' => [ 'Brondi', 'LUXURY 5' ], + 'SENSUELLE' => [ 'Brondi', 'SENSUELLE' ], + 'VICTORY' => [ 'Brondi', 'VICTORY' ], + 'Victory 2' => [ 'Brondi', 'VICTORY 2' ], + 'Victory 3' => [ 'Brondi', 'VICTORY 3' ], + 'VICTORY 4' => [ 'Brondi', 'VICTORY 4' ], + 'Victory 5' => [ 'Brondi', 'VICTORY 5' ], + 'Surfing TAB B 9.7 3G' => [ 'Brondi', 'SURFING TAB B', DeviceType::TABLET ], + 'Surfing Tab C 3G' => [ 'Brondi', 'SURFING TAB C', DeviceType::TABLET ], + + '(BRS-)?BROR!!' => [ + 'BROR F2' => [ 'BROR', 'F2' ], + 'BROR G2' => [ 'BROR', 'G2' ], + 'BRS-BROR S3' => [ 'BROR', 'S3' ], + 'BROR S9' => [ 'BROR', 'S9' ], + 'BRS-BROR S9' => [ 'BROR', 'S9' ], + 'BROR T5' => [ 'BROR', 'T5' ], + 'BROR T70' => [ 'BROR', 'T70' ], + 'BRS-BROR W58' => [ 'BROR', 'W58' ], + 'BROR W58' => [ 'BROR', 'W58' ], + 'BROR W60' => [ 'BROR', 'W60' ], + 'BROR W60+' => [ 'BROR', 'W60+' ], + 'BROR W61' => [ 'BROR', 'W61' ], + 'BROR W65' => [ 'BROR', 'W65' ], + 'BROR W68' => [ 'BROR', 'W68' ], + 'BRS-BROR W70' => [ 'BROR', 'W70' ], + 'BROR W80' => [ 'BROR', 'W80' ], + 'BRS-BROR W80' => [ 'BROR', 'W80' ], + ], + + '(bq|Aquaris|Edison|Maxwell)!!' => [ + 'bq Aquaris' => [ 'bq', 'Aquaris' ], + 'bq Aquaris 3.5' => [ 'bq', 'Aquaris 3.5' ], + 'bq Aquaris 4' => [ 'bq', 'Aquaris 4' ], + 'bq Aquaris 5' => [ 'bq', 'Aquaris 5' ], + 'bq Aquaris5' => [ 'bq', 'Aquaris 5' ], + 'BqAquaris5' => [ 'bq', 'Aquaris 5' ], + 'bq Aquaris 5 HD' => [ 'bq', 'Aquaris 5 HD' ], + 'bq Aquaris 5.7' => [ 'bq', 'Aquaris 5.7' ], + 'Aquaris A4.5' => [ 'bq', 'Aquaris A4.5' ], + 'Aquaris E4' => [ 'bq', 'Aquaris E4' ], + 'Aquaris E4.5' => [ 'bq', 'Aquaris E4.5' ], + 'Aquaris E5' => [ 'bq', 'Aquaris E5' ], + 'Aquaris E5 HD' => [ 'bq', 'Aquaris E5 HD' ], + 'Aquaris E5 FHD' => [ 'bq', 'Aquaris E5 FHD' ], + 'Aquaris E6' => [ 'bq', 'Aquaris E6' ], + 'Aquaris E10' => [ 'bq', 'Aquaris E10', DeviceType::TABLET ], + 'Aquaris E10 3G' => [ 'bq', 'Aquaris E10', DeviceType::TABLET ], + 'Aquaris M4.5' => [ 'bq', 'Aquaris M4.5' ], + 'Aquaris M5' => [ 'bq', 'Aquaris M5' ], + 'Aquaris M5.5' => [ 'bq', 'Aquaris M5.5' ], + 'Aquaris M8' => [ 'bq', 'Aquaris M8', DeviceType::TABLET ], + 'Aquaris M10' => [ 'bq', 'Aquaris M10', DeviceType::TABLET ], + 'Aquaris M10 FHD' => [ 'bq', 'Aquaris M10 FHD', DeviceType::TABLET ], + 'Aquaris U' => [ 'bq', 'Aquaris U' ], + 'Aquaris U Lite' => [ 'bq', 'Aquaris U Lite' ], + 'Aquaris U Plus' => [ 'bq', 'Aquaris U Plus' ], + 'Aquaris X' => [ 'bq', 'Aquaris X' ], + 'Aquaris X5' => [ 'bq', 'Aquaris X5' ], + 'Aquaris X5 Plus' => [ 'bq', 'Aquaris X5 Plus' ], + 'bq Curie' => [ 'bq', 'Curie', DeviceType::TABLET ], + 'bq Curie 2' => [ 'bq', 'Curie 2', DeviceType::TABLET ], + 'bq Curie 2 3G' => [ 'bq', 'Curie 2', DeviceType::TABLET ], + 'bq Curie 2 Quad Core' => [ 'bq', 'Curie 2', DeviceType::TABLET ], + 'bq Curie 2 Quad Core 3G' => [ 'bq', 'Curie 2', DeviceType::TABLET ], + 'Bq Darwin' => [ 'bq', 'Darwin', DeviceType::TABLET ], + 'bq DaVinci' => [ 'bq', 'DaVinci', DeviceType::TABLET ], + 'bq Elcano' => [ 'bq', 'Elcano', DeviceType::TABLET ], + 'bq Elcano 2 Quad Core' => [ 'bq', 'Elcano 2', DeviceType::TABLET ], + 'bq Edison' => [ 'bq', 'Edison', DeviceType::TABLET ], + 'bq Edison 3G' => [ 'bq', 'Edison', DeviceType::TABLET ], + 'bq Edison 2' => [ 'bq', 'Edison 2', DeviceType::TABLET ], + 'bq Edison 2 3G' => [ 'bq', 'Edison 2', DeviceType::TABLET ], + 'bq Edison 2 Quad Core' => [ 'bq', 'Edison 2', DeviceType::TABLET ], + 'bq Edison 2 Quad Core 3G' => [ 'bq', 'Edison 2', DeviceType::TABLET ], + 'Edison 3' => [ 'bq', 'Edison 3', DeviceType::TABLET ], + 'Edison 3 3G' => [ 'bq', 'Edison 3', DeviceType::TABLET ], + 'Edison 3 mini' => [ 'bq', 'Edison 3 mini', DeviceType::TABLET ], + 'bq Livingstone 2' => [ 'bq', 'Livingstone 2', DeviceType::TABLET ], + 'bq Livingstone 3n!' => [ 'bq', 'Livingstone 3n', DeviceType::TABLET ], + 'Maxwell' => [ 'bq', 'Maxwell', DeviceType::TABLET ], + 'Maxwell Lite' => [ 'bq', 'Maxwell Lite', DeviceType::TABLET ], + 'bq Maxwell Plus' => [ 'bq', 'Maxwell Plus', DeviceType::TABLET ], + 'bq Maxwell 2' => [ 'bq', 'Maxwell 2', DeviceType::TABLET ], + 'bq Maxwell 2 Lite' => [ 'bq', 'Maxwell 2 Lite', DeviceType::TABLET ], + 'bq Maxwell 2 Plus' => [ 'bq', 'Maxwell 2 Plus', DeviceType::TABLET ], + 'bq Maxwell 2 Quad Core' => [ 'bq', 'Maxwell 2', DeviceType::TABLET ], + 'bq Pascal 2!' => [ 'bq', 'Pascal 2', DeviceType::TABLET ], + 'bq Verne Plus' => [ 'bq', 'Verne Plus', DeviceType::TABLET ], + 'bq Verne Plus 3G' => [ 'bq', 'Verne Plus', DeviceType::TABLET ], + 'bq Voltaire' => [ 'bq', 'Voltaire', DeviceType::TABLET ], + ], + + 'BUSH!!' => [ + 'Bush 4 Android' => [ 'Bush', '4' ], + 'BUSH 5 Android' => [ 'Bush', '5' ], + 'Bush 5" Android' => [ 'Bush', '5' ], + 'Bush 5" 4G' => [ 'Bush', '5 4G' ], + 'Bush Spira C2 5" Smartphone' => [ 'Bush', '5 4G' ], + 'Bush 5.5" 4G' => [ 'Bush', '5.5 4G' ], + 'Bush Spira D2 5.5" Smartphone' => [ 'Bush', '5.5 4G' ], + 'BUSH 7.0 TABLET' => [ 'Bush', '7.0 Tablet', DeviceType::TABLET ], + 'BUSH 7.85 TABLET' => [ 'Bush', '7.85 Tablet', DeviceType::TABLET ], + 'Bush 8.0 MyTablet' => [ 'Bush', '8.0 MyTablet', DeviceType::TABLET ], + 'BUSH 10.1 TABLET' => [ 'Bush', '10.1 Tablet', DeviceType::TABLET ], + 'Bush 7.0 MyTablet' => [ 'Bush', '7.0 MyTablet', DeviceType::TABLET ], + 'Bush 10.0 MyTablet' => [ 'Bush', '10.0 MyTablet', DeviceType::TABLET ], + 'Bush Mytablet 2' => [ 'Bush', 'MyTablet 2', DeviceType::TABLET ], + ], + + 'CT[0-9]{3,4}!!' => [ + 'CT700' => [ 'Carrefour', 'Touch Tablet CT700', DeviceType::TABLET ], + 'CT701' => [ 'Carrefour', 'Touch Tablet CT701', DeviceType::TABLET ], + 'CT704' => [ 'Carrefour', 'Touch Tablet CT704', DeviceType::TABLET ], + 'CT705' => [ 'Carrefour', 'Touch Tablet CT705', DeviceType::TABLET ], + 'CT705FR' => [ 'Carrefour', 'Touch Tablet CT705', DeviceType::TABLET ], + 'CT710' => [ 'Carrefour', 'Touch Tablet CT710', DeviceType::TABLET ], + 'CT715' => [ 'Carrefour', 'Touch Tablet CT715', DeviceType::TABLET ], + 'CT720' => [ 'Carrefour', 'Touch Tablet CT720', DeviceType::TABLET ], + 'CT726' => [ 'Carrefour', 'Touch Tablet CT726', DeviceType::TABLET ], + 'CT820' => [ 'Carrefour', 'Touch Tablet CT820', DeviceType::TABLET ], + 'CT826' => [ 'Carrefour', 'Touch Tablet CT826', DeviceType::TABLET ], + 'CT1000' => [ 'Carrefour', 'Touch Tablet CT1000', DeviceType::TABLET ], + 'CT1002' => [ 'Carrefour', 'Touch Tablet CT1002', DeviceType::TABLET ], + 'CT1002PLUS' => [ 'Carrefour', 'Touch Tablet CT1002 plus', DeviceType::TABLET ], + 'CT1010' => [ 'Carrefour', 'Touch Tablet CT1010', DeviceType::TABLET ], + 'CT1020W' => [ 'Carrefour', 'Touch Tablet CT1020W', DeviceType::TABLET ], + ], + + 'EM63' => [ 'Carrefour', 'Touch Tablet CT720', DeviceType::TABLET ], + 'A101B-CF' => [ 'Carrefour', 'Touch Tablet CT1001', DeviceType::TABLET ], + 'TVE9603I' => [ 'Carrefour', 'Touch Tablet CT1050', DeviceType::TABLET ], + 'Camangi-Mangrove7' => [ 'Camangi', 'Mangrove 7', DeviceType::TABLET ], + 'WS171' => [ 'Camangi', 'WebStation', DeviceType::TABLET ], + + 'CAPTIVA!!' => [ + 'CAPTIVA PAD 7' => [ 'Captiva', 'Pad 7', DeviceType::TABLET ], + 'CAPTIVA PAD 8' => [ 'Captiva', 'Pad 8', DeviceType::TABLET ], + 'CAPTIVA PAD 8 Pro' => [ 'Captiva', 'Pad 8 Pro', DeviceType::TABLET ], + 'CAPTIVA PAD 8 GPS' => [ 'Captiva', 'Pad 8 GPS', DeviceType::TABLET ], + 'CAPTIVA 9.7 Super FHD' => [ 'Captiva', 'Pad 9.7 Super FHD', DeviceType::TABLET ], + 'CAPTIVA PAD 10' => [ 'Captiva', 'Pad 10.1', DeviceType::TABLET ], + 'CAPTIVA PAD 10.1' => [ 'Captiva', 'Pad 10.1', DeviceType::TABLET ], + 'CAPTIVA 10.1 HD' => [ 'Captiva', 'Pad 10.1 HD', DeviceType::TABLET ], + 'CAPTIVA PAD 10.1 Quad FHD' => [ 'Captiva', 'Pad 10.1 Quad FHD', DeviceType::TABLET ], + 'CAPTIVA PAD 10.1 Quad FHD 3G' => [ 'Captiva', 'Pad 10.1 Quad FHD', DeviceType::TABLET ], + ], + + 'Carpad T5' => [ 'Carpad', 'T5' ], + 'Carpad T61 2g' => [ 'Carpad', 'T61' ], + 'CAL21' => [ 'Casio', 'GzOne Type-L CAL21', 'carrier' => 'au' ], + 'CA201SP' => [ 'Casio', 'GzOne CA-201SP' ], + 'CA-201L' => [ 'Casio', 'GzOne CA-201L' ], + 'IS11CA' => [ 'Casio', 'GzOne Commando IS11CA', 'carrier' => 'au' ], + 'C771' => [ 'Casio', 'GzOne Commando' ], + 'C811 4G' => [ 'Casio', 'GzOne Commando 811' ], + 'VX-100' => [ 'Casio', 'VX-100 EPOS Terminal', DeviceType::POS ], + + 'Casper VIA!!' => [ + 'Casper VIA A3216' => [ 'Casper', 'VIA A3216' ], + 'Casper VIA A6108' => [ 'Casper', 'VIA A6108' ], + 'Casper VIA V4' => [ 'Casper', 'VIA V4' ], + 'Casper VIA V5' => [ 'Casper', 'VIA V5' ], + 'Casper VIA V8' => [ 'Casper', 'VIA V8' ], + ], + + 'VIA F1' => [ 'Casper', 'VIA F1' ], + 'VIA S10' => [ 'Casper', 'VIA S10' ], + 'B15' => [ 'CAT', 'B15' ], + 'B15Q' => [ 'CAT', 'B15Q' ], + 'S30' => [ 'CAT', 'S30' ], + 'S40' => [ 'CAT', 'S40' ], + 'S50' => [ 'CAT', 'S50' ], + 'S50c' => [ 'CAT', 'S50c' ], + + 'CAT!!' => [ + 'Cat Comet' => [ 'CAT', 'COMET', DeviceType::TABLET ], + 'CAT NOVA' => [ 'CAT', 'NOVA', DeviceType::TABLET ], + 'Cat Tablet Android 4.0.4' => [ 'CAT', 'NOVA', DeviceType::TABLET ], + 'CatNova8' => [ 'CAT', 'NOVA8', DeviceType::TABLET ], + 'Cat Tablet PHOENIX 8J0' => [ 'CAT', 'PHOENIX', DeviceType::TABLET ], + 'Cat Tablet PHOENIX 8.1J0' => [ 'CAT', 'PHOENIX', DeviceType::TABLET ], + 'Cat Tablet Galactica 9[.,]7CA!' => [ 'CAT', 'GALACTICA', DeviceType::TABLET ], + 'Cat Tablet Galactica X 9[.,]7CA!' => [ 'CAT', 'GALACTICA X', DeviceType::TABLET ], + 'Cat Tablet GalacticaX 9.7JA' => [ 'CAT', 'GALACTICA X', DeviceType::TABLET ], + 'Cat Tablet PEGASUS T 8J0' => [ 'CAT', 'PEGASUS', DeviceType::TABLET ], + 'Cat StarGate' => [ 'CAT', 'STARGATE', DeviceType::TABLET ], + 'Cat Tablet CSG 7J0' => [ 'CAT', 'STARGATE', DeviceType::TABLET ], + 'Cat Tablet StarGate 2' => [ 'CAT', 'STARGATE 2', DeviceType::TABLET ], + 'Cat Tablet CSG2 7.1J0' => [ 'CAT', 'STARGATE 2', DeviceType::TABLET ], + ], + + 'SK351' => [ 'CCE', 'Motion.Plus SK351' ], + 'CCE SK352' => [ 'CCE', 'Motion.Plus SK352' ], + + 'Celkon!!' => [ + 'Celkon A8+' => [ 'Celkon', 'A8+' ], + 'CELKON A9 Dual' => [ 'Celkon', 'A9' ], + 'CELKON A9+' => [ 'Celkon', 'A9+' ], + 'Celkon A10' => [ 'Celkon', 'Campus A10' ], + 'Celkon A15' => [ 'Celkon', 'Campus A15' ], + 'Celkon A15K' => [ 'Celkon', 'Campus A15K' ], + 'Celkon A20' => [ 'Celkon', 'Campus A20' ], + 'Celkon A21' => [ 'Celkon', 'A21' ], + 'Celkon A 22' => [ 'Celkon', 'A22' ], + 'Celkon A27' => [ 'Celkon', 'A27' ], + 'Celkon A35K' => [ 'Celkon', 'A35K' ], + 'Celkon A35K Remote' => [ 'Celkon', 'Remote A35K' ], + 'Celkon A43' => [ 'Celkon', 'A43' ], + 'Celkon A58' => [ 'Celkon', 'A58' ], + 'Celkon A 59' => [ 'Celkon', 'A59' ], + 'Celkon A62' => [ 'Celkon', 'A62' ], + 'Celkon A 63' => [ 'Celkon', 'A63' ], + 'CELKON A64' => [ 'Celkon', 'A64' ], + 'Celkon A66' => [ 'Celkon', 'A66' ], + 'Celkon A67' => [ 'Celkon', 'A67' ], + 'Celkon A75' => [ 'Celkon', 'A75' ], + 'Celkon A 77' => [ 'Celkon', 'A77' ], + 'Celkon A79' => [ 'Celkon', 'A79' ], + 'CELKON A83' => [ 'Celkon', 'A83' ], + 'Celkon A 85' => [ 'Celkon', 'A85' ], + 'Celkon*A86' => [ 'Celkon', 'A86' ], + 'Celkon A88' => [ 'Celkon', 'A88' ], + 'CELKON A 90' => [ 'Celkon', 'A90' ], + 'Celkon*A95*Pro' => [ 'Celkon', 'A95 Pro' ], + 'Celkon A97' => [ 'Celkon', 'A97' ], + 'Celkon A98' => [ 'Celkon', 'A98' ], + 'Celkon A101' => [ 'Celkon', 'A101' ], + 'Celkon A105+' => [ 'Celkon', 'Signature Vista A105+' ], + 'Celkon A107' => [ 'Celkon', 'Signature One A107' ], + 'Celkon A107+' => [ 'Celkon', 'Signature One A107+' ], + 'Celkon A112' => [ 'Celkon', 'Signature Swift A112' ], + 'Celkon A118' => [ 'Celkon', 'Signature HD A118' ], + 'Celkon A119' => [ 'Celkon', 'Signature HD A119' ], + 'Celkon A119Q' => [ 'Celkon', 'Signature HD A119Q' ], + 'Celkon A125' => [ 'Celkon', 'Campus A125' ], + 'Celkon A 200' => [ 'Celkon', 'A200' ], + 'Celkon A200' => [ 'Celkon', 'A200' ], + 'Celkon A 220' => [ 'Celkon', 'A220' ], + 'Celkon A 225' => [ 'Celkon', 'A225' ], + 'Celkon A350' => [ 'Celkon', 'Campus Mini A350' ], + 'Celkon A401' => [ 'Celkon', 'Campus Colt A401' ], + 'Celkon A402' => [ 'Celkon', 'Campus A402' ], + 'Celkon A404' => [ 'Celkon', 'Campus Buddy A404' ], + 'Celkon A406' => [ 'Celkon', 'Campus A406' ], + 'Celkon A500' => [ 'Celkon', 'Signature Two A500' ], + 'Celkon A900' => [ 'Celkon', 'A900' ], + 'Celkon A.R 40' => [ 'Celkon', 'AR40' ], + 'Celkon A.R 45' => [ 'Celkon', 'AR45' ], + 'Celkon A.R 50' => [ 'Celkon', 'AR50' ], + 'Celkon C720' => [ 'Celkon', 'C720', DeviceType::TABLET ], + 'CELKON CT2' => [ 'Celkon', 'CT2', DeviceType::TABLET ], + 'Celkon CT3' => [ 'Celkon', 'CT3', DeviceType::TABLET ], + 'Celkon CT7' => [ 'Celkon', 'CT7', DeviceType::TABLET ], + 'Celkon CT 9' => [ 'Celkon', 'CT9', DeviceType::TABLET ], + 'CELKON CT 888' => [ 'Celkon', 'CT888', DeviceType::TABLET ], + 'Celkon CT 910' => [ 'Celkon', 'CT910', DeviceType::TABLET ], + 'Celkon CT 910+' => [ 'Celkon', 'CT910+', DeviceType::TABLET ], + 'Celkon IQ180' => [ 'Celkon', 'IQ180' ], + 'Celkon S1' => [ 'Celkon', 'S1' ], + 'Celkon Q4GPlus' => [ 'Celkon', 'Diamond 4G Plus' ], + 'Celkon Q40+' => [ 'Celkon', 'Q40 Plus' ], + 'Celkon Q42' => [ 'Celkon', 'Q42' ], + 'Celkon Q44' => [ 'Celkon', 'Q44' ], + 'Celkon Q405' => [ 'Celkon', 'Campus Q405' ], + 'CELKON Q450' => [ 'Celkon', 'Millennia Q450' ], + 'Celkon Q452' => [ 'Celkon', 'Millennia Q452' ], + 'Celkon Q455' => [ 'Celkon', 'Millennium Vogue Q455' ], + 'Celkon Q470' => [ 'Celkon', 'Millennium Elite Q470' ], + 'Celkon Q500' => [ 'Celkon', 'Millennium Ultra Q500' ], + 'Celkon Q550' => [ 'Celkon', 'Millennia Epic Q550' ], + 'Celkon Q567' => [ 'Celkon', 'Millennia Q567' ], + 'Celkon Q3000' => [ 'Celkon', 'Millennia Power Q3000' ], + 'Celkon 4G TAB-8' => [ 'Celkon', '4G Tab-8', DeviceType::TABLET ], + ], + + 'A89' => [ 'Celkon', 'A89' ], + 'A95' => [ 'Celkon', 'A95' ], + 'A97i' => [ 'Celkon', 'A97i' ], + 'CT-1' => [ 'Celkon', 'CT1', DeviceType::TABLET ], + 'CT910' => [ 'Celkon', 'CT910', DeviceType::TABLET ], + 'W820' => [ 'Cellon', 'HW-W820' ], + 'M8047IU' => [ 'Cellon', 'M8047IU' ], + 'picoBit-L' => [ 'Celluon', 'PicoBit', DeviceType::PROJECTOR ], + + 'ChangHong!!' => [ + 'ChangHong-Z-ME' => [ 'ChangHong', 'Z-me' ], + 'ChanghongA898T' => [ 'ChangHong', 'A898T' ], + 'ChanghongC100' => [ 'ChangHong', 'C100' ], + 'ChanghongC600' => [ 'ChangHong', 'C600' ], + 'ChanghongC770' => [ 'ChangHong', 'C770' ], + 'ChanghongC800' => [ 'ChangHong', 'C800' ], + 'Changhong H5018' => [ 'ChangHong', 'H5018' ], + 'ChangHongV5t' => [ 'ChangHong', 'V5t' ], + 'ChangHong ?V7!' => [ 'ChangHong', 'V7' ], + 'ChonghongV8' => [ 'ChangHong', 'V8' ], + 'ChangHongV11t' => [ 'ChangHong', 'V11t' ], + 'ChangHongW3' => [ 'ChangHong', 'W3' ], + 'ChangHong W3' => [ 'ChangHong', 'W3' ], + 'ChanghongW6' => [ 'ChangHong', 'W6' ], + 'ChanghongW7' => [ 'ChangHong', 'W7' ], + 'ChangHong W8' => [ 'ChangHong', 'W8' ], + 'ChangHong W22' => [ 'ChangHong', 'W22' ], + 'ChangHong ?Z1!' => [ 'ChangHong', 'Z1' ], + 'ChanghongZ3t' => [ 'ChangHong', 'Z3t' ], + 'ChangHongZ9' => [ 'ChangHong', 'Z9' ], + 'changhong TV' => [ 'ChangHong', null ], + ], + + 'CHER!!' => [ + 'CHER A50' => [ 'Cher', 'A50' ], + 'CHER A55w' => [ 'Cher', 'A55w' ], + 'CHER A90' => [ 'Cher', 'A90' ], + 'CHER A91' => [ 'Cher', 'A91' ], + ], + + 'PC1038' => [ 'Cherry', 'Pro-Line 2', DeviceType::TABLET ], + 'Candy TV' => [ 'Cherry Mobile', 'Candy TV' ], + 'Titan TV S320' => [ 'Cherry Mobile', 'Titan TV' ], + 'Flame2' => [ 'Cherry Mobile', 'Flame 2.0' ], + 'Flare S100' => [ 'Cherry Mobile', 'Flare' ], + 'Flare 2.0' => [ 'Cherry Mobile', 'Flare 2.0' ], + 'Flare 2.1' => [ 'Cherry Mobile', 'Flare 2.1' ], + 'Flare2X' => [ 'Cherry Mobile', 'Flare 2X' ], + 'Flare 5' => [ 'Cherry Mobile', 'Flare 5' ], + 'FlareA1' => [ 'Cherry Mobile', 'Flare A1' ], + 'Flare J1' => [ 'Cherry Mobile', 'Flare J1' ], + 'FLARE J1 PLUS' => [ 'Cherry Mobile', 'Flare J1 Plus' ], + 'FLARE J2' => [ 'Cherry Mobile', 'Flare J2' ], + 'Flare J2 DTV' => [ 'Cherry Mobile', 'Flare J2 DTV' ], + 'Flare J3 Plus' => [ 'Cherry Mobile', 'Flare J3 Plus' ], + 'Flare P1 Mini' => [ 'Cherry Mobile', 'Flare P1 Mini' ], + 'Flare S3 Power' => [ 'Cherry Mobile', 'Flare S3 Power' ], + 'Flare S4' => [ 'Cherry Mobile', 'Flare S4' ], + 'Flare S4 Max' => [ 'Cherry Mobile', 'Flare S4 Max' ], + 'Flare S4 Mini' => [ 'Cherry Mobile', 'Flare S4 Mini' ], + 'FLARE S5 MAX' => [ 'Cherry Mobile', 'Flare S5 Max' ], + 'Flare S6 Max' => [ 'Cherry Mobile', 'Flare S6 Max' ], + 'Blaze S180' => [ 'Cherry Mobile', 'Blaze S180' ], + 'Burst S280' => [ 'Cherry Mobile', 'Burst W280' ], + 'Cherry Mobile Burst' => [ 'Cherry Mobile', 'Burst W280' ], + 'Cherry Life' => [ 'Cherry Mobile', 'Life' ], + 'Cherry Razor' => [ 'Cherry Mobile', 'Razor' ], + 'Cherry Mobile Razor' => [ 'Cherry Mobile', 'Razor' ], + 'CHERRY SNAP' => [ 'Cherry Mobile', 'Snap' ], + 'Cherry Sonic' => [ 'Cherry Mobile', 'Sonic' ], + 'Cherry thunder2.0' => [ 'Cherry Mobile', 'Thunder 2.0' ], + 'Thunder S220' => [ 'Cherry Mobile', 'Thunder S220' ], + 'Ultra Flare v2' => [ 'Cherry Mobile', 'Ultra Flare' ], + 'H120' => [ 'Cherry Mobile', 'H120' ], + 'H940' => [ 'Cherry Mobile', 'H940' ], + 'W200' => [ 'Cherry Mobile', 'W200' ], + 'Cherry Mobile Amber W380' => [ 'Cherry Mobile', 'Amber W380' ], + 'Cherry w500' => [ 'Cherry Mobile', 'W500' ], + 'W900' => [ 'Cherry Mobile', 'W900' ], + 'Fusion Bolt' => [ 'Cherry Mobile', 'Fusion Bolt', DeviceType::TABLET ], + + 'LA-!!' => [ + 'LA-E' => [ 'Chili', 'E' ], + 'LA-I' => [ 'Chili', 'I' ], + 'LA-I2' => [ 'Chili', 'I2' ], + 'LA-M1' => [ 'Chili', 'M1' ], + 'LA-M1Y' => [ 'Chili', 'M1Y' ], + 'LA-M2' => [ 'Chili', 'M2' ], + 'LA-Q1' => [ 'Chili', 'Q1' ], + ], + + 'M623C' => [ 'China Mobile', 'M623C', DeviceType::TABLET ], + 'M812C' => [ 'China Mobile', 'M812C', DeviceType::TABLET ], + 'M701C' => [ 'China Tablet', 'M701C', DeviceType::TABLET ], + 'TR720F' => [ 'China Tablet', 'TR720F', DeviceType::TABLET ], + 'ARMM2V' => [ 'chinaleap', 'ARMM2V', DeviceType::TABLET ], + 'ARMM3V' => [ 'chinaleap', 'ARMM3V', DeviceType::TABLET ], + 'V936' => [ 'Chiva', 'V936' ], + + 'HiBook pro' => [ 'Chuwi', 'HiBook Pro', DeviceType::TABLET ], + + 'CHUWI!!' => [ + 'CHUWI V3' => [ 'Chuwi', 'V3', DeviceType::TABLET ], + 'CHUWI-V8-HD' => [ 'Chuwi', 'V8 HD', DeviceType::TABLET ], + 'CHUWI V9' => [ 'Chuwi', 'V9', DeviceType::TABLET ], + ], + + 'cius' => [ 'Cisco', 'Cius', DeviceType::TABLET ], + 'CIUS-7!' => [ 'Cisco', 'Cius', DeviceType::TABLET ], + + 'CP-DX!!' => [ + 'CP-DX70' => [ 'Cisco', 'DX70', DeviceType::TABLET ], + 'CP-DX80' => [ 'Cisco', 'DX80', DeviceType::TABLET ], + 'CP-DX650' => [ 'Cisco', 'DX650', DeviceType::TABLET ], + ], + + 'Citycall!!' => [ + 'Citycall A1' => [ 'Citycall', 'A1' ], + 'Citycall i310+' => [ 'Citycall', 'i310+' ], + 'Citycall i930+' => [ 'Citycall', 'i930+' ], + ], + + 'Clarion Mirage 2' => [ 'Clarion', 'Mirage 2', DeviceType::CAR ], + + '(Cloudfone|CloudPad|Excite|Thrill)!!' => [ + 'Cloudfone Excite320e' => [ 'Cloudfone', 'Excite 320e' ], + 'Cloudfone Excite320g' => [ 'Cloudfone', 'Excite 320g' ], + 'Cloudfone Excite350e' => [ 'Cloudfone', 'Excite 350e' ], + 'Cloudfone Excite350g' => [ 'Cloudfone', 'Excite 350g' ], + 'Cloudfone Excite 350g' => [ 'Cloudfone', 'Excite 350g' ], + 'Cloudfone Excite 350i' => [ 'Cloudfone', 'Excite 350i' ], + 'Cloudfone Excite 354g' => [ 'Cloudfone', 'Excite 354g' ], + 'Cloudfone Excite 400d' => [ 'Cloudfone', 'Excite 400d' ], + 'Cloudfone Excite 402d' => [ 'Cloudfone', 'Excite 402d' ], + 'Excite 402d' => [ 'Cloudfone', 'Excite 402d' ], + 'Cloudfone Excite 452q' => [ 'Cloudfone', 'Excite 452q' ], + 'Cloudfone Excite 500d' => [ 'Cloudfone', 'Excite 500d' ], + 'Excite 501o' => [ 'Cloudfone', 'Excite 501o' ], + 'Cloudfone Excite 502q' => [ 'Cloudfone', 'Excite 502q' ], + 'Cloudfone Excite 504d' => [ 'Cloudfone', 'Excite 504d' ], + 'Cloudfone GEO 400q+' => [ 'Cloudfone', 'Geo 400q' ], + 'Cloudfone GEO 402q' => [ 'Cloudfone', 'Geo 402q' ], + 'Cloudfone ICE 2Gs' => [ 'Cloudfone', 'Ice 2Gs' ], + 'cloudfone ice 350e!' => [ 'Cloudfone', 'Ice 350e' ], + 'Cloudfone ICE 500e' => [ 'Cloudfone', 'Ice 500e' ], + 'Cloudfone Thrill 400g' => [ 'Cloudfone', 'Thrill 400g' ], + 'Cloudfone Thrill 430d' => [ 'Cloudfone', 'Thrill 430d' ], + 'Cloudfone Thrill 430g' => [ 'Cloudfone', 'Thrill 430g' ], + 'Thrill 430x' => [ 'Cloudfone', 'Thrill 430x' ], + 'Cloudfone Thrill 500g' => [ 'Cloudfone', 'Thrill 500g' ], + 'Thrill 530qx' => [ 'Cloudfone', 'Thrill 530qx' ], + 'Thrill HD' => [ 'Cloudfone', 'Thrill HD' ], + 'Thrill Access' => [ 'Cloudfone', 'Thrill Access' ], + 'Thrill Boost' => [ 'Cloudfone', 'Thrill Boost' ], + 'Thrill Lite' => [ 'Cloudfone', 'Thrill Lite' ], + 'Thrill Plus 16GB' => [ 'Cloudfone', 'Thrill Plus' ], + 'CloudPad 700d' => [ 'Cloudfone', 'CloudPad 700d' ], + 'CloudPad 700w' => [ 'Cloudfone', 'CloudPad 700w' ], + 'CloudPad 700TV' => [ 'Cloudfone', 'CloudPad 700tv' ], + 'CloudPad 701tv' => [ 'Cloudfone', 'CloudPad 701tv' ], + 'Cloudpad 705w' => [ 'Cloudfone', 'CloudPad 705w' ], + 'CloudPad 707qw' => [ 'Cloudfone', 'CloudPad 707qw' ], + 'Cloudpad 800d' => [ 'Cloudfone', 'CloudPad 800d' ], + ], + + 'CW[- ]!!' => [ + 'CW V7 SIM' => [ 'Chuwi', 'V7' ], + 'CW V8 Dual' => [ 'Chuwi', 'V8' ], + 'CW-V9 DUAL' => [ 'Chuwi', 'V9' ], + 'CW-V17HD' => [ 'Chuwi', 'V17HD' ], + 'CW-V18' => [ 'Chuwi', 'V18' ], + 'CW V70' => [ 'Chuwi', 'V70' ], + 'CW V80' => [ 'Chuwi', 'V80' ], + 'CW-V88-QUAD' => [ 'Chuwi', 'V88' ], + 'CW-V88S' => [ 'Chuwi', 'V88s' ], + 'CW-V88S-QUAD' => [ 'Chuwi', 'V88s' ], + 'CW-V99' => [ 'Chuwi', 'V99' ], + 'CW-V99-QUAD' => [ 'Chuwi', 'V99' ], + 'CW-VX8-3G' => [ 'Chuwi', 'VX8 3G' ], + 'CW-Hi8Pro' => [ 'Chuwi', 'Hi8 Pro', DeviceType::TABLET ], + ], + + 'V17HD' => [ 'Chuwi', 'V17HD' ], + 'Aquila 070-0508' => [ 'CMX', 'Aquila 070-0508', DeviceType::TABLET ], + 'Aquila 070-0508 3G' => [ 'CMX', 'Aquila 070-0508', DeviceType::TABLET ], + 'Aquila 080-0508' => [ 'CMX', 'Aquila 080-0508', DeviceType::TABLET ], + 'AQUILA 080-1008' => [ 'CMX', 'Aquila 080-1008', DeviceType::TABLET ], + 'Aquila 097-0508' => [ 'CMX', 'Aquila 097-0508', DeviceType::TABLET ], + 'AQUILA 097-1006' => [ 'CMX', 'Aquila 097-1006', DeviceType::TABLET ], + 'AQUILA 097-1016' => [ 'CMX', 'Aquila 097-1016', DeviceType::TABLET ], + 'AQUILA 097-1016 BT + 3G' => [ 'CMX', 'Aquila 097-1016', DeviceType::TABLET ], + 'AQUILA 097-1016 BT 3G' => [ 'CMX', 'Aquila 097-1016', DeviceType::TABLET ], + 'Aquila 101' => [ 'CMX', 'Aquila 101', DeviceType::TABLET ], + 'Aquila 101-1008 3G' => [ 'CMX', 'Aquila 101-1008', DeviceType::TABLET ], + 'Aquila LE 080-0508' => [ 'CMX', 'Aquila LE 080-0508', DeviceType::TABLET ], + 'Aquila SE 090-0508' => [ 'CMX', 'Aquila SE 090-0508', DeviceType::TABLET ], + 'Clanga 079-1016' => [ 'CMX', 'Clanga 079-1016', DeviceType::TABLET ], + 'Clanga 097-2016' => [ 'CMX', 'Clanga 097-2016', DeviceType::TABLET ], + 'Clanga SE 097-1008' => [ 'CMX', 'Clanga SE 097-1008', DeviceType::TABLET ], + 'RAPAXSE080-0508' => [ 'CMX', 'Rapax SE 080-0508', DeviceType::TABLET ], + + 'CnM!!' => [ + 'CnM TouchPad 7' => [ 'CnM', 'TouchPad 7', DeviceType::TABLET ], + 'CnM-TOUCHPAD 7' => [ 'CnM', 'TouchPad 7', DeviceType::TABLET ], + 'CnM-TOUCHPAD7' => [ 'CnM', 'TouchPad 7', DeviceType::TABLET ], + 'CnM TouchPad 7DC' => [ 'CnM', 'TouchPad 7 DC', DeviceType::TABLET ], + 'CnM-TP-8DC-16-B' => [ 'CnM', 'TouchPad 7 DC', DeviceType::TABLET ], + 'CnM TouchPad 9DC' => [ 'CnM', 'TouchPad 8 DC', DeviceType::TABLET ], + 'CnM TOUCHPAD 9' => [ 'CnM', 'TouchPad 9', DeviceType::TABLET ], + 'CnM-TOUCHPAD9' => [ 'CnM', 'TouchPad 9', DeviceType::TABLET ], + 'Cnm TOUCHPAD 9.7' => [ 'CnM', 'TouchPad 9.7', DeviceType::TABLET ], + 'CnM-TP-10DC-16-B' => [ 'CnM', 'TouchPad 10 DC', DeviceType::TABLET ], + 'CnM TouchPad 10.1DC' => [ 'CnM', 'TouchPad 10.1 DC', DeviceType::TABLET ], + ], + + 'MID[0-9]{4,4}!!' => [ + 'MID1024' => [ 'Coby', 'Kyros MID1024', DeviceType::TABLET ], + 'MID1042' => [ 'Coby', 'Kyros MID1042', DeviceType::TABLET ], + 'MID1045' => [ 'Coby', 'Kyros MID1045', DeviceType::TABLET ], + 'MID1048' => [ 'Coby', 'Kyros MID1048', DeviceType::TABLET ], + 'MID1060' => [ 'Coby', 'Kyros MID1060', DeviceType::TABLET ], + 'MID1065' => [ 'Coby', 'Kyros MID1065', DeviceType::TABLET ], + 'MID1125' => [ 'Coby', 'Kyros MID1125', DeviceType::TABLET ], + 'MID1126' => [ 'Coby', 'Kyros MID1126', DeviceType::TABLET ], + 'MID4331' => [ 'Coby', 'Kyros MID4331', DeviceType::MEDIA ], + 'MID7002' => [ 'Coby', 'Kyros MID7002', DeviceType::TABLET ], + 'MID7005' => [ 'Coby', 'Kyros MID7005', DeviceType::TABLET ], + 'MID7010' => [ 'Coby', 'Kyros MID7010', DeviceType::TABLET ], + 'MID7011' => [ 'Coby', 'Kyros MID7011', DeviceType::TABLET ], + 'MID7012' => [ 'Coby', 'Kyros MID7012', DeviceType::TABLET ], + 'MID7014' => [ 'Coby', 'Kyros MID7014', DeviceType::TABLET ], + 'MID7015!' => [ 'Coby', 'Kyros MID7015', DeviceType::TABLET ], + 'MID7016' => [ 'Coby', 'Kyros MID7016', DeviceType::TABLET ], + 'MID7020' => [ 'Coby', 'Kyros MID7020', DeviceType::TABLET ], + 'MID7022' => [ 'Coby', 'Kyros MID7022', DeviceType::TABLET ], + 'MID7024' => [ 'Coby', 'Kyros MID7024', DeviceType::TABLET ], + 'MID7025' => [ 'Coby', 'Kyros MID7025', DeviceType::TABLET ], + 'MID7032' => [ 'Coby', 'Kyros MID7032', DeviceType::TABLET ], + 'MID7033' => [ 'Coby', 'Kyros MID7033', DeviceType::TABLET ], + 'MID7034' => [ 'Coby', 'Kyros MID7034', DeviceType::TABLET ], + 'MID7035' => [ 'Coby', 'Kyros MID7035', DeviceType::TABLET ], + 'MID7036' => [ 'Coby', 'Kyros MID7036', DeviceType::TABLET ], + 'MID7038' => [ 'Coby', 'Kyros MID7038', DeviceType::TABLET ], + 'MID7042' => [ 'Coby', 'Kyros MID7042', DeviceType::TABLET ], + 'MID7046' => [ 'Coby', 'Kyros MID7046', DeviceType::TABLET ], + 'MID7047' => [ 'Coby', 'Kyros MID7047', DeviceType::TABLET ], + 'MID7048' => [ 'Coby', 'Kyros MID7048', DeviceType::TABLET ], + 'MID7051' => [ 'Coby', 'Kyros MID7051', DeviceType::TABLET ], + 'MID7052' => [ 'Coby', 'Kyros MID7052', DeviceType::TABLET ], + 'MID7055' => [ 'Coby', 'Kyros MID7052', DeviceType::TABLET ], + 'MID7065' => [ 'Coby', 'Kyros MID7065', DeviceType::TABLET ], + 'MID7120' => [ 'Coby', 'Kyros MID7120', DeviceType::TABLET ], + 'MID7125' => [ 'Coby', 'Kyros MID7125', DeviceType::TABLET ], + 'MID7127' => [ 'Coby', 'Kyros MID7127', DeviceType::TABLET ], + 'MID8024' => [ 'Coby', 'Kyros MID8024', DeviceType::TABLET ], + 'MID8042' => [ 'Coby', 'Kyros MID8042', DeviceType::TABLET ], + 'MID8048' => [ 'Coby', 'Kyros MID8048', DeviceType::TABLET ], + 'MID8065' => [ 'Coby', 'Kyros MID8065', DeviceType::TABLET ], + 'MID8120' => [ 'Coby', 'Kyros MID8120', DeviceType::TABLET ], + 'MID8125' => [ 'Coby', 'Kyros MID8125', DeviceType::TABLET ], + 'MID8127' => [ 'Coby', 'Kyros MID8127', DeviceType::TABLET ], + 'MID8128' => [ 'Coby', 'Kyros MID8128', DeviceType::TABLET ], + 'MID9042' => [ 'Coby', 'Kyros MID9042', DeviceType::TABLET ], + 'MID9724' => [ 'Coby', 'Kyros MID9724', DeviceType::TABLET ], + 'MID9740' => [ 'Coby', 'Kyros MID9740', DeviceType::TABLET ], + 'MID9742' => [ 'Coby', 'Kyros MID9742', DeviceType::TABLET ], + 'MID9760' => [ 'Coby', 'Kyros MID9760', DeviceType::TABLET ], + ], + + 'Ultimix!!' => [ + 'Ultimix77' => [ 'Codegen', 'Ultimix 77', DeviceType::TABLET ], + 'Ultimix 88' => [ 'Codegen', 'Ultimix 88', DeviceType::TABLET ], + 'Ultimix94' => [ 'Codegen', 'Ultimix 94', DeviceType::TABLET ], + 'Ultimix95' => [ 'Codegen', 'Ultimix 95', DeviceType::TABLET ], + 'Ultimix99' => [ 'Codegen', 'Ultimix 99', DeviceType::TABLET ], + ], + + 'BLADE LE 70' => [ 'COMMAX', 'BLADE LE 70', DeviceType::TABLET ], + + 'Commodore!!' => [ + 'Commodore IS-7107C' => [ 'Commodore', 'IS-7107C', DeviceType::TABLET ], + 'Commodore IS-7107C' => [ 'Commodore', 'IS-7107C', DeviceType::TABLET ], + ], + + 'Z71' => [ 'Commtiva', 'Z71' ], + 'V-T100' => [ 'Commtiva', 'V-T100' ], + 'FIH-FB0' => [ 'Commtiva', 'HD700'], + 'Commtiva-HD710' => [ 'Commtiva', 'HD710'], + 'Commtiva-N700' => [ 'Commtiva', 'N700'], + 'Connspeed IP71' => [ 'Connspeed', 'IP71' ], + + '(Colorfly|CT[0-9]{3,3})!!' => [ + 'Colorfly CT102 Qise 3' => [ 'Colorfly', 'CT102 Qise 3', DeviceType::TABLET ], + 'CT704 D·Bok' => [ 'Colorfly', 'CT704 D·Bok', DeviceType::TABLET ], + 'CT801 Eyas' => [ 'Colorfly', 'CT801 Eyas', DeviceType::TABLET ], + 'CT801 Q.Ait' => [ 'Colorfly', 'CT801 Q·Ait', DeviceType::TABLET ], + 'Colorfly CT972Q·Vanilla' => [ 'Colorfly', 'CT972 Q·Vanilla', DeviceType::TABLET ], + 'Colorfly CT972Q·Vanilla' => [ 'Colorfly', 'CT972 Q·Vanilla', DeviceType::TABLET ], + 'Colorfly CT972Q·Vanilla' => [ 'Colorfly', 'CT972 Q·Vanilla', DeviceType::TABLET ], + 'CT972 Q.Vanilla 2' => [ 'Colorfly', 'CT972 Q·Vanilla 2', DeviceType::TABLET ], + 'CT974 Ivory 3' => [ 'Colorfly', 'CT974 Ivory 3', DeviceType::TABLET ], + 'Colorfly E708' => [ 'Colorfly', 'E708', DeviceType::TABLET ], + 'Colorfly E708 Q1' => [ 'Colorfly', 'E708 Q1', DeviceType::TABLET ], + 'Colorfly E708 Q1s' => [ 'Colorfly', 'E708 Q1s', DeviceType::TABLET ], + 'Colorfly E708 Q2' => [ 'Colorfly', 'E708 Q2', DeviceType::TABLET ], + 'Colorfly G708' => [ 'Colorfly', 'G708', DeviceType::TABLET ], + 'Colorfly S782 Q1' => [ 'Colorfly', 'S782 Q1', DeviceType::TABLET ], + 'Colorfly U781 Q1' => [ 'Colorfly', 'U781 Q1', DeviceType::TABLET ], + ], + + 'K11' => [ 'Colors', 'K11' ], + 'XT751' => [ 'Colors', 'XT751' ], + + 'Colors!!' => [ + 'Colors K22' => [ 'Colors', 'K22' ], + 'Colors X27' => [ 'Colors', 'Xfactor Wave X27' ], + 'Colors X45' => [ 'Colors', 'X45' ], + 'Colors X115' => [ 'Colors', 'Xfactor Quad II X115' ], + ], + + 'ConCorde!!' => [ + 'ConCorde SmartPhone 4300' => [ 'ConCorde', 'SmartPhone 4300' ], + 'ConCorde SmartPhone5000' => [ 'ConCorde', 'SmartPhone 5000' ], + 'ConCorde Smartphone 5005 NFC' => [ 'ConCorde', 'SmartPhone 5005 NFC' ], + 'ConCorde SmartPhone5700' => [ 'ConCorde', 'SmartPhone 5700' ], + 'ConCorde SmartPhone6500' => [ 'ConCorde', 'SmartPhone 6500' ], + 'ConCorde tab 9.7IPS PLUS' => [ 'ConCorde', 'tab 9.7IPS Plus', DeviceType::TABLET ], + 'ConCorde tab NOVUM' => [ 'ConCorde', 'tab NOVUM', DeviceType::TABLET ], + 'Concorde Tab Omega 3G' => [ 'ConCorde', 'tab OMEGA', DeviceType::TABLET ], + 'ConCorde tab PLAY' => [ 'ConCorde', 'tab PLAY', DeviceType::TABLET ], + 'ConCorde tab Speed' => [ 'ConCorde', 'tab SPEED', DeviceType::TABLET ], + 'ConCorde Tab T10' => [ 'ConCorde', 'tab T10', DeviceType::TABLET ], + ], + + 'Coolgen!!' => [ + 'Coolgen E68+' => [ 'Coolgen', 'E68+' ], + 'Coolgen E69+' => [ 'Coolgen', 'E69+' ], + 'Coolgen E70' => [ 'Coolgen', 'E70' ], + 'Coolgen E70 G' => [ 'Coolgen', 'E70 G' ], + 'Coolgen E71' => [ 'Coolgen', 'E71' ], + 'Coolgen E72 Note 3G' => [ 'Coolgen', 'E72' ], + 'Coolgen E72 Note8' => [ 'Coolgen', 'E72' ], + ], + + 'Coolpad!!' => [ + 'Coolpad A8-531' => [ 'Coolpad', 'A8-531' ], + 'Coolpad A8-930' => [ 'Coolpad', 'Max A8-930' ], + 'Coolpad A8-931' => [ 'Coolpad', 'Max A8-931' ], + 'Coolpad A8-932' => [ 'Coolpad', 'Max A8-932' ], + 'Coolpad A118' => [ 'Coolpad', 'Roar 3' ], + 'Coolpad B770' => [ 'Coolpad', 'B770' ], + 'Coolpad D510' => [ 'Coolpad', 'D510' ], + 'Coolpad D530' => [ 'Coolpad', 'D530' ], + 'Coolpad D530TW' => [ 'Coolpad', 'D530' ], + 'Coolpad D539' => [ 'Coolpad', 'D539' ], + 'Coolpad E239' => [ 'Coolpad', 'E239' ], + 'Coolpad E501!' => [ 'Coolpad', 'Modena' ], + 'Coolpad E502' => [ 'Coolpad', 'Modena 2' ], + 'Coolpad E560' => [ 'Coolpad', 'Porto' ], + 'Coolpad E570' => [ 'Coolpad', 'Porto S' ], + 'Coolpad F101' => [ 'Coolpad', 'Soar' ], + 'Coolpad F103' => [ 'Coolpad', 'Star' ], + 'Coolpad N930' => [ 'Coolpad', 'N930' ], + 'Coolpad N950' => [ 'Coolpad', 'N950' ], + 'Coolpad R106' => [ 'Coolpad', 'Shine' ], + 'Coolpad S6-NT' => [ 'Coolpad', 'S6' ], + 'Coolpad T1' => [ 'Coolpad', 'T1' ], + 'Coolpad T2-00' => [ 'Coolpad', 'T2' ], + 'Coolpad T2-C01' => [ 'Coolpad', 'T2' ], + 'Coolpad V1-C' => [ 'Coolpad', 'Bodun' ], + 'Coolpad W706!' => [ 'Coolpad', 'W706' ], + 'Coolpad W708' => [ 'Coolpad', 'W708' ], + 'Coolpad Y1' => [ 'Coolpad', 'Y1' ], + 'Coolpad Y60!' => [ 'Coolpad', 'Y60' ], + 'Coolpad Y70!' => [ 'Coolpad', 'Y70' ], + 'Coolpad Y71!' => [ 'Coolpad', 'Y71' ], + 'Coolpad Y75!' => [ 'Coolpad', 'Y75' ], + 'Coolpad Y76!' => [ 'Coolpad', 'Y76' ], + 'Coolpad Y80!' => [ 'Coolpad', 'Y80' ], + 'Coolpad Y82!' => [ 'Coolpad', 'Y82' ], + 'Coolpad Y83!' => [ 'Coolpad', 'Y83' ], + 'Coolpad Y90!' => [ 'Coolpad', 'Y90' ], + 'Coolpad 3300A' => [ 'Coolpad', 'Avail' ], + 'Coolpad 3320A' => [ 'Coolpad', 'Roque' ], + 'Coolpad 3503I' => [ 'Coolpad', 'Mega 3 3503' ], + 'Coolpad 3505I' => [ 'Coolpad', 'Note 5 Lite 3505' ], + 'Coolpad 3600I' => [ 'Coolpad', 'Note 5 3600' ], + 'Coolpad 3622A' => [ 'Coolpad', 'Catalyst' ], + 'Coolpad 5010' => [ 'Coolpad', '5010' ], + 'Coolpad 5108' => [ 'Coolpad', '5108' ], + 'Coolpad 5109' => [ 'Coolpad', '5109' ], + 'Coolpad 5110' => [ 'Coolpad', '5110' ], + 'Coolpad 5200' => [ 'Coolpad', '5200' ], + 'Coolpad 5200S' => [ 'Coolpad', '5200S' ], + 'Coolpad 5210!' => [ 'Coolpad', '5210' ], + 'Coolpad 5211' => [ 'Coolpad', '5211' ], + 'Coolpad 5213' => [ 'Coolpad', '5213' ], + 'Coolpad 5216!' => [ 'Coolpad', '5216' ], + 'Coolpad 5217' => [ 'Coolpad', '5217' ], + 'Coolpad 5218!' => [ 'Coolpad', '5218' ], + 'Coolpad 5219' => [ 'Coolpad', '5219' ], + 'Coolpad 5230!' => [ 'Coolpad', '5230' ], + 'Coolpad 5261!' => [ 'Coolpad', '5261' ], + 'Coolpad 5263!' => [ 'Coolpad', '5263' ], + 'Coolpad 5310' => [ 'Coolpad', '5310' ], + 'Coolpad 5311' => [ 'Coolpad', '5311' ], + 'Coolpad 5313' => [ 'Coolpad', '5313' ], + 'Coolpad 5313S' => [ 'Coolpad', '5313S' ], + 'Coolpad 5316' => [ 'Coolpad', '5316' ], + 'Coolpad 5360' => [ 'Coolpad', '5360' ], + 'Coolpad 5820' => [ 'Coolpad', '5820' ], + 'Coolpad 5832' => [ 'Coolpad', '5832' ], + 'Coolpad 5860!' => [ 'Coolpad', '5860' ], + 'Coolpad 5870' => [ 'Coolpad', '5870' ], + 'Coolpad 5872' => [ 'Coolpad', '5872' ], + 'Coolpad 5876' => [ 'Coolpad', '5876' ], + 'Coolpad 5879' => [ 'Coolpad', '5879' ], + 'Coolpad 5879T' => [ 'Coolpad', '5879T' ], + 'Coolpad 5880' => [ 'Coolpad', '5880' ], + 'Coolpad 5890' => [ 'Coolpad', '5890' ], + 'Coolpad 5891!' => [ 'Coolpad', '5891' ], + 'Coolpad 5892!' => [ 'Coolpad', '5892' ], + 'Coolpad 5910' => [ 'Coolpad', '5910' ], + 'Coolpad 5930!' => [ 'Coolpad', '5930' ], + 'Coolpad 5950' => [ 'Coolpad', '5950' ], + 'Coolpad 5950T' => [ 'Coolpad', 'Monster' ], + 'Coolpad 5951' => [ 'Coolpad', '5951' ], + 'Coolpad 5952' => [ 'Coolpad', '5952' ], + 'Coolpad 5956' => [ 'Coolpad', '5956' ], + 'Coolpad 7005' => [ 'Coolpad', '7005' ], + 'Coolpad 7011' => [ 'Coolpad', '7011' ], + 'Coolpad 7019!' => [ 'Coolpad', '7019' ], + 'Coolpad 7020' => [ 'Coolpad', '7020' ], + 'Coolpad 7060!' => [ 'Coolpad', '7060' ], + 'Coolpad 7061' => [ 'Coolpad', '7061' ], + 'Coolpad 7105' => [ 'Coolpad', '7105' ], + 'Coolpad 7230!' => [ 'Coolpad', '7230' ], + 'Coolpad 7231' => [ 'Coolpad', '7231' ], + 'Coolpad 7232' => [ 'Coolpad', '7232' ], + 'Coolpad 7235' => [ 'Coolpad', '7235' ], + 'Coolpad 7236' => [ 'Coolpad', '7236' ], + 'Coolpad 7251' => [ 'Coolpad', '7251' ], + 'Coolpad 7260!' => [ 'Coolpad', '7260' ], + 'Coolpad 7266' => [ 'Coolpad', '7266' ], + 'Coolpad 7268' => [ 'Coolpad', '7268' ], + 'Coolpad 7269' => [ 'Coolpad', '7269' ], + 'Coolpad 7270' => [ 'Coolpad', '7270' ], + 'Coolpad 7270 W00' => [ 'Coolpad', '7270' ], + 'Coolpad 7275' => [ 'Coolpad', '7275' ], + 'Coolpad 7290' => [ 'Coolpad', '7290' ], + 'Coolpad 7295!' => [ 'Coolpad', '7295' ], + 'Coolpad 7296' => [ 'Coolpad', '7296' ], + 'Coolpad 7296S' => [ 'Coolpad', '7296S' ], + 'Coolpad 7298A' => [ 'Coolpad', '7298A' ], + 'Coolpad 7298D' => [ 'Coolpad', '7298D' ], + 'Coolpad 7320' => [ 'Coolpad', '7320' ], + 'Coolpad 7560U' => [ 'Coolpad', '7560U' ], // Orange Nivo + 'Coolpad 7620L!' => [ 'Coolpad', 'K1' ], + 'Coolpad 7722' => [ 'Coolpad', '7722' ], + 'Coolpad 7728' => [ 'Coolpad', '7728' ], + 'Coolpad 8010' => [ 'Coolpad', '8010' ], + 'Coolpad 8012' => [ 'Coolpad', '8012' ], + 'Coolpad 8013' => [ 'Coolpad', '8013' ], + 'Coolpad 8017!' => [ 'Coolpad', '8017' ], + 'Coolpad 8020!' => [ 'Coolpad', '8020' ], + 'Coolpad 8021' => [ 'Coolpad', '8021' ], + 'Coolpad 8022' => [ 'Coolpad', '8022' ], + 'Coolpad 8026' => [ 'Coolpad', '8026' ], + 'Coolpad 8028' => [ 'Coolpad', '8028' ], + 'Coolpad 8029' => [ 'Coolpad', '8029' ], + 'Coolpad 8050' => [ 'Coolpad', '8050' ], + 'Coolpad 8056' => [ 'Coolpad', '8056' ], + 'Coolpad -8056' => [ 'Coolpad', '8056' ], + 'Coolpad 8060' => [ 'Coolpad', '8060' ], + 'Coolpad 8070' => [ 'Coolpad', '8070' ], + 'Coolpad 8070D' => [ 'Coolpad', '8070D' ], + 'Coolpad 8071' => [ 'Coolpad', '8071' ], + 'Coolpad 8076' => [ 'Coolpad', '8076' ], + 'Coolpad -8076!' => [ 'Coolpad', '8076' ], + 'Coolpad 8076D' => [ 'Coolpad', '8076' ], + 'Coolpad 8079' => [ 'Coolpad', '8079' ], + 'Coolpad 8085' => [ 'Coolpad', '8085' ], + 'Coolpad 8085Q' => [ 'Coolpad', '8085' ], + 'Coolpad 8089' => [ 'Coolpad', '8089' ], + 'Coolpad 8105' => [ 'Coolpad', '8105' ], + 'Coolpad 8122' => [ 'Coolpad', '8122' ], + 'Coolpad 8150S' => [ 'Coolpad', '8150' ], + 'Coolpad -?8190!' => [ 'Coolpad', '8190' ], + 'Coolpad 8198T' => [ 'Coolpad', '8198T' ], + 'Coolpad 8295M' => [ 'Coolpad', '8295M' ], + 'Coolpad 8295!' => [ 'Coolpad', '8295' ], + 'Coolpad 8297!' => [ 'Coolpad', 'Dashen F1' ], + 'Coolpad F1 8297W' => [ 'Coolpad', 'Dashen F1' ], + 'Coolpad F1' => [ 'Coolpad', 'Dashen F1' ], + 'Coolpad 8670' => [ 'Coolpad', 'Note 8670' ], + 'Coolpad 8675!' => [ 'Coolpad', 'Dashen F2' ], + 'Coolpad Note 3' => [ 'Coolpad', 'Note 3 8676' ], + 'Coolpad 8676!' => [ 'Coolpad', 'Note 3 8676' ], + 'Coolpad 8690!' => [ 'Coolpad', 'Dashen X7' ], + 'Coolpad 8702' => [ 'Coolpad', '8702' ], + 'Coolpad 8702D' => [ 'Coolpad', '8702D' ], + 'Coolpad 8705' => [ 'Coolpad', '8705' ], + 'Coolpad 8707' => [ 'Coolpad', '8707' ], + 'Coolpad 8713' => [ 'Coolpad', '8713' ], + 'Coolpad 8720L' => [ 'Coolpad', '8720L' ], + 'Coolpad 8720Q' => [ 'Coolpad', '8720Q' ], + 'Coolpad 8722V' => [ 'Coolpad', '8722V' ], + 'Coolpad 8729' => [ 'Coolpad', '8729' ], + 'Coolpad 8730L' => [ 'Coolpad', '8730L' ], + 'Coolpad 8732' => [ 'Coolpad', '8732' ], + 'Coolpad 8735' => [ 'Coolpad', '8735' ], + 'Coolpad 8736' => [ 'Coolpad', '8736' ], + 'Coolpad 8750' => [ 'Coolpad', 'Xuan Ying SII 8750' ], + 'Coolpad 8809' => [ 'Coolpad', '8809' ], + 'Coolpad 8810' => [ 'Coolpad', '8810' ], + 'Coolpad 8811' => [ 'Coolpad', '8811' ], + 'Coolpad 8860!' => [ 'Coolpad', '8860' ], + 'Coolpad 8870!' => [ 'Coolpad', '8870' ], + 'Coolpad 8908' => [ 'Coolpad', '8908' ], + 'Coolpad 8920' => [ 'Coolpad', 'Quattro II 8920' ], + 'Coolpad 8970L' => [ 'Coolpad', 'Grand 4 8970' ], + 'Coolpad 8971' => [ 'Coolpad', '8971' ], + 'Coolpad 9070' => [ 'Coolpad', '9070+XO' ], + 'Coolpad 9080W' => [ 'Coolpad', '9080' ], + 'Coolpad 9100' => [ 'Coolpad', '9100' ], + 'Coolpad 9120' => [ 'Coolpad', '9120' ], + 'Coolpad 9150' => [ 'Coolpad', 'Air 9150' ], + 'Coolpad 9150W' => [ 'Coolpad', 'Air 9150' ], + 'Coolpad 9190L!' => [ 'Coolpad', 'S6 9190' ], + 'Coolpad 9190 T00' => [ 'Coolpad', 'S6 9190' ], + 'Coolpad 9900' => [ 'Coolpad', '9900' ], + 'Coolpad 9960' => [ 'Coolpad', 'Grand HD 9960' ], + 'Coolpad 9970' => [ 'Coolpad', 'Grand 4 9970' ], + 'Coolpad 9976!' => [ 'Coolpad', '9976' ], + 'Coolpad Flo' => [ 'Coolpad', 'Flo' ], + ], + + 'D530' => [ 'Coolpad', 'D530' ], + 'D539' => [ 'Coolpad', 'D539' ], + 'E239' => [ 'Coolpad', 'E239' ], + 'N930' => [ 'Coolpad', 'N930' ], + 'W711' => [ 'Coolpad', 'W711' ], + 'CP3700A' => [ 'Coolpad', '3700A' ], + '5560S' => [ 'Coolpad', '5560S' ], + '5832' => [ 'Coolpad', '5832' ], + '5855' => [ 'Coolpad', '5855' ], + '5860' => [ 'Coolpad', '5860' ], + '5860A' => [ 'Coolpad', '5860A' ], + '5860E' => [ 'Coolpad', 'Quattro 4G 5860E' ], + '5860S' => [ 'Coolpad', '5860S' ], + '5870' => [ 'Coolpad', '5870' ], + '7260' => [ 'Coolpad', '7260' ], + '7266' => [ 'Coolpad', '7266' ], + '8022' => [ 'Coolpad', '8022' ], + '8190Q' => [ 'Coolpad', '8190' ], + '8720' => [ 'Coolpad', '8720' ], + '8720L' => [ 'Coolpad', '8720' ], + '8810' => [ 'Coolpad', '8810' ], + '801ES' => [ 'Coolpad', 'Quattro II 4G' ], + 'C8297W' => [ 'Coolpad', 'Dashen F1' ], + 'CP8676!' => [ 'Coolpad', 'Note 3 8676' ], + 'CP8298!' => [ 'Coolpad', 'Note 3 Lite 8298' ], + + 'V105A4-A-C1' => [ 'Coolux', 'Q6 Pico Mini Pocket Projector', DeviceType::PROJECTOR ], + + 'COSHIP F2' => [ 'Coship', 'F2' ], + + 'COWON!!' => [ + 'COWON D3' => [ 'Cowon', 'D3 Plenue', DeviceType::MEDIA ], + 'COWON Z2' => [ 'Cowon', 'Z2 Plenue', DeviceType::MEDIA ], + ], + + 'COZCO C1 Plus' => [ 'Cozco', 'C1 Plus' ], + 'CLP281X' => [ 'Craig', 'CLP281x', DeviceType::TABLET ], + + 'CMP!!' => [ + 'CMP741d' => [ 'Craig', 'CMP741d', DeviceType::TABLET ], + 'CMP741E' => [ 'Craig', 'CMP741e', DeviceType::TABLET ], + 'CMP745E' => [ 'Craig', 'CMP745e', DeviceType::TABLET ], + 'CMP748' => [ 'Craig', 'CMP748', DeviceType::TABLET ], + 'CMP749' => [ 'Craig', 'CMP749', DeviceType::TABLET ], + 'CMP756' => [ 'Craig', 'CMP756', DeviceType::TABLET ], + 'CMP 765' => [ 'Craig', 'CMP765', DeviceType::TABLET ], + ], + + 'ZEN Touch 2' => [ 'Creative', 'ZEN Touch 2', DeviceType::MEDIA ], + + 'Zii!!' => [ + 'ZiiO7' => [ 'Creative', 'ZiiO 7', DeviceType::TABLET ], + 'ZiiLABS ZiiO7' => [ 'Creative', 'ZiiO 7', DeviceType::TABLET ], + 'ZiiLABS ZiiO10' => [ 'Creative', 'ZiiO 10', DeviceType::TABLET ], + 'ZiiLABS ZiiO10 ' => [ 'Creative', 'ZiiO 10', DeviceType::TABLET ], + 'ZiiLABS ZiiO10+' => [ 'Creative', 'ZiiO 10', DeviceType::TABLET ], + 'ZiiLABS ZiiO Shenbi' => [ 'Creative', 'ZiiO ShenBi', DeviceType::TABLET ], + 'Zii EGG' => [ 'Creative', 'Zii Egg', DeviceType::MEDIA ], + ], + + 'CTP828BT' => [ 'Cresta', 'CTP828BT', DeviceType::TABLET ], + 'CRESTA.CTP888' => [ 'Cresta', 'CTP888', DeviceType::TABLET ], + + 'Cross!!' => [ + 'CROSS-A1' => [ 'Cross', 'A1' ], + 'Cross A2' => [ 'Cross', 'A2' ], + 'CROSS A5' => [ 'Cross', 'A5' ], + 'CROSS A5B' => [ 'Cross', 'A5B' ], + 'Cross A7*' => [ 'Cross', 'A7' ], + 'CROSS A7#' => [ 'Cross', 'A7' ], + 'Cross Andromeda A7*' => [ 'Cross', 'A7' ], + 'CROSS A7S' => [ 'Cross', 'A7S' ], + 'CROSSA7S' => [ 'Cross', 'A7S' ], + 'CROSS A10' => [ 'Cross', 'A10' ], + 'CROSS A11' => [ 'Cross', 'A11' ], + 'CrossA18' => [ 'Cross', 'A18' ], + 'CROSS-A20G' => [ 'Cross', 'A20G' ], + 'Cross A22' => [ 'Cross', 'A22' ], + 'Cross A25' => [ 'Cross', 'A25' ], + 'CROSS A26' => [ 'Cross', 'A26' ], + 'CROSS A27' => [ 'Cross', 'A27' ], + 'CROSS A28' => [ 'Cross', 'A28' ], + 'CROSS A66' => [ 'Cross', 'A66' ], + 'CROSS A88' => [ 'Cross', 'A88' ], + 'CROSS AT1' => [ 'Cross', 'AT1', DeviceType::TABLET ], + 'CROSS AT1G' => [ 'Cross', 'AT1G', DeviceType::TABLET ], + 'CROSS AT1G*' => [ 'Cross', 'AT1G', DeviceType::TABLET ], + ], + + 'Crosscall!!' => [ + 'Crosscall ELEMENT' => [ 'Crosscall', 'ELEMENT' ], + 'CROSSCALL WILD' => [ 'Crosscall', 'WILD' ], + ], + + 'Novapad!!' => [ + 'Novapad 70 D124 FC' => [ 'Crypto', 'NovaPad 70 D124', DeviceType::TABLET ], + 'Novapad 70 S124 FC' => [ 'Crypto', 'NovaPad 70 S124', DeviceType::TABLET ], + 'NovaPad80C104' => [ 'Crypto', 'NovaPad 80 C104', DeviceType::TABLET ], + 'NovaPad 80 C124' => [ 'Crypto', 'NovaPad 80 C124', DeviceType::TABLET ], + 'Novapad D7000' => [ 'Crypto', 'NovaPad D7000', DeviceType::TABLET ], + 'Novapad D7001' => [ 'Crypto', 'NovaPad D7001', DeviceType::TABLET ], + 'Novapad D7002' => [ 'Crypto', 'NovaPad D7002', DeviceType::TABLET ], + ], + + 'CUBOT!!' => [ + 'CUBOT C7' => [ 'Cubot', 'C7' ], + 'CUBOT C7+' => [ 'Cubot', 'C7+' ], + 'CUBOT C9+' => [ 'Cubot', 'C9+' ], + 'CUBOT C9W' => [ 'Cubot', 'C9W' ], + 'CUBOT C11' => [ 'Cubot', 'C11' ], + 'CUBOT GT72E' => [ 'Cubot', 'GT72E' ], + 'CUBOT GT99' => [ 'Cubot', 'GT99' ], + 'CUBOT ONE' => [ 'Cubot', 'One' ], + 'CUBOT ONE-S' => [ 'Cubot', 'One S' ], + 'CUBOT P7' => [ 'Cubot', 'P7' ], + 'CUBOT P9' => [ 'Cubot', 'P9' ], + 'CUBOT S108' => [ 'Cubot', 'S108' ], + 'CUBOT S222' => [ 'Cubot', 'S222' ], + 'CUBOT X6' => [ 'Cubot', 'X6' ], + ], + + 'S222' => [ 'Cubot', 'S222' ], + 'S308' => [ 'Cubot', 'S308' ], + + '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!' => [ + 'CUBE K8GT' => [ 'Cube', 'K8GT', DeviceType::TABLET ], + 'CUBE K8GT A' => [ 'Cube', 'K8GT A', DeviceType::TABLET ], + 'CUBE K8GT B' => [ 'Cube', 'K8GT B', DeviceType::TABLET ], + 'K8GT C' => [ 'Cube', 'K8GT C', DeviceType::TABLET ], + 'K8GT H' => [ 'Cube', 'K8GT H', DeviceType::TABLET ], + 'CUBE K8GT H' => [ 'Cube', 'K8GT H', DeviceType::TABLET ], + 'K8GT W' => [ 'Cube', 'K8GT W', DeviceType::TABLET ], + 'CUBE U8GT' => [ 'Cube', 'U8GT', DeviceType::TABLET ], + 'CUBE U9GT' => [ 'Cube', 'U9GT', DeviceType::TABLET ], + 'CUBE U9 GT' => [ 'Cube', 'U9GT', DeviceType::TABLET ], + 'U9GT' => [ 'Cube', 'U9GT', DeviceType::TABLET ], + 'U9GT S' => [ 'Cube', 'U9GT S', DeviceType::TABLET ], + 'U9GT-S' => [ 'Cube', 'U9GT S', DeviceType::TABLET ], + 'U9GT S A' => [ 'Cube', 'U9GT SA', DeviceType::TABLET ], + 'U9GTS A' => [ 'Cube', 'U9GT SA', DeviceType::TABLET ], + 'U9GT-SA' => [ 'Cube', 'U9GT SA', DeviceType::TABLET ], + 'U9GT V' => [ 'Cube', 'U9GT V', DeviceType::TABLET ], + 'U9GT V Core 4' => [ 'Cube', 'U9GT V', DeviceType::TABLET ], + 'CUBE U9GT ?2!' => [ 'Cube', 'U9GT2', DeviceType::TABLET ], + 'Cube U9GT-2' => [ 'Cube', 'U9GT2', DeviceType::TABLET ], + 'U9GT2!' => [ 'Cube', 'U9GT2', DeviceType::TABLET ], + 'N90 From moage.com' => [ 'Cube', 'U9GT2', DeviceType::TABLET ], + 'U9GT3' => [ 'Cube', 'U9GT3', DeviceType::TABLET ], + 'U9GT3-S' => [ 'Cube', 'U9GT3 S', DeviceType::TABLET ], + 'U9GT4' => [ 'Cube', 'U9GT4', DeviceType::TABLET ], + 'U10GT A' => [ 'Cube', 'U10GT A', DeviceType::TABLET ], + 'U10GT-A' => [ 'Cube', 'U10GT A', DeviceType::TABLET ], + 'U10GT S' => [ 'Cube', 'U10GT S', DeviceType::TABLET ], + 'U10GT 2' => [ 'Cube', 'U10GT2', DeviceType::TABLET ], + 'CUBE U15GT' => [ 'Cube', 'U15GT', DeviceType::TABLET ], + 'U18GT' => [ 'Cube', 'U18GT', DeviceType::TABLET ], + 'U18GT-H' => [ 'Cube', 'U18GT H', DeviceType::TABLET ], + 'U18GT-S' => [ 'Cube', 'U18GT S', DeviceType::TABLET ], + 'U18GT-W' => [ 'Cube', 'U18GT W', DeviceType::TABLET ], + 'U18GTW' => [ 'Cube', 'U18GT W', DeviceType::TABLET ], + 'U18GT2' => [ 'Cube', 'U18GT2', DeviceType::TABLET ], + 'U19GT-W' => [ 'Cube', 'U19GT W', DeviceType::TABLET ], + 'U21GT' => [ 'Cube', 'U21GT', DeviceType::TABLET ], + 'U20GT' => [ 'Cube', 'U20GT', DeviceType::TABLET ], + 'U20GT WS' => [ 'Cube', 'U20GT WS', DeviceType::TABLET ], + 'U23GT' => [ 'Cube', 'U23GT', DeviceType::TABLET ], + 'U23GT-S' => [ 'Cube', 'U23GT S', DeviceType::TABLET ], + 'U23GTC4' => [ 'Cube', 'U23GT C4', DeviceType::TABLET ], + 'U25GT' => [ 'Cube', 'U25GT', DeviceType::TABLET ], + 'CUBE U25GT' => [ 'Cube', 'U25GT', DeviceType::TABLET ], + 'U25GT PRO' => [ 'Cube', 'U25GT Pro', DeviceType::TABLET ], + 'U25GT-W' => [ 'Cube', 'U25GT W', DeviceType::TABLET ], + 'U25GT-W4' => [ 'Cube', 'U25GT W4', DeviceType::TABLET ], + 'U25GT-BN' => [ 'Cube', 'U25GT BN', DeviceType::TABLET ], + 'U25GT-C4' => [ 'Cube', 'U25GT C4', DeviceType::TABLET ], + 'U25GT-C4W' => [ 'Cube', 'U25GT C4W', DeviceType::TABLET ], + 'U25GT-C4WB' => [ 'Cube', 'U25GT C4WB', DeviceType::TABLET ], + 'U25GT-C4Y' => [ 'Cube', 'U25GT C4Y', DeviceType::TABLET ], + 'U25GT-YR' => [ 'Cube', 'U25GT YR', DeviceType::TABLET ], + 'U25GT2-H' => [ 'Cube', 'U25GT2 H', DeviceType::TABLET ], + 'U25GT2-T' => [ 'Cube', 'U25GT2 T', DeviceType::TABLET ], + 'U27GT' => [ 'Cube', 'U27GT', DeviceType::TABLET ], + 'U27GT-C8' => [ 'Cube', 'U27GT C8', DeviceType::TABLET ], + 'U27GT-C8P' => [ 'Cube', 'U27GT C8P', DeviceType::TABLET ], + 'U27GT-SD' => [ 'Cube', 'U27GT SD', DeviceType::TABLET ], + 'U27GT-3G' => [ 'Cube', 'U27GT 3G', DeviceType::TABLET ], + 'U27GT-3GH' => [ 'Cube', 'U27GT 3GH', DeviceType::TABLET ], + 'U27GT-3GHY' => [ 'Cube', 'U27GT 3GHY', DeviceType::TABLET ], + 'U28GT' => [ 'Cube', 'U28GT', DeviceType::TABLET ], + 'U30GT' => [ 'Cube', 'U30GT', DeviceType::TABLET ], + 'U30GT C4' => [ 'Cube', 'U30GT C4', DeviceType::TABLET ], + 'U30GT-H' => [ 'Cube', 'U30GT H', DeviceType::TABLET ], + 'U30GT-H By BiscuitTeam' => [ 'Cube', 'U30GT H', DeviceType::TABLET ], + 'U30GT-HS' => [ 'Cube', 'U30GT HS', DeviceType::TABLET ], + 'U30GT-M' => [ 'Cube', 'U30GT M', DeviceType::TABLET ], + 'U30GT-MS' => [ 'Cube', 'U30GT MS', DeviceType::TABLET ], + 'U30GTm2' => [ 'Cube', 'U30GT M2', DeviceType::TABLET ], + 'U30GT MINI' => [ 'Cube', 'U30GT Mini', DeviceType::TABLET ], + 'U30GT-mini' => [ 'Cube', 'U30GT Mini', DeviceType::TABLET ], + 'U30GT-W' => [ 'Cube', 'U30GT W', DeviceType::TABLET ], + 'u30gt2' => [ 'Cube', 'U30GT2', DeviceType::TABLET ], + 'U30GT 2' => [ 'Cube', 'U30GT2', DeviceType::TABLET ], + 'U30GT-2' => [ 'Cube', 'U30GT2', DeviceType::TABLET ], + 'U30GT 2MH' => [ 'Cube', 'U30GT2 MH', DeviceType::TABLET ], + 'U31GT' => [ 'Cube', 'U31GT', DeviceType::TABLET ], + 'U33GT' => [ 'Cube', 'U33GT', DeviceType::TABLET ], + 'U35GT' => [ 'Cube', 'U35GT', DeviceType::TABLET ], + 'U35GT-W' => [ 'Cube', 'U35GT W', DeviceType::TABLET ], + 'U35GT2' => [ 'Cube', 'U35GT2', DeviceType::TABLET ], + 'U39GT' => [ 'Cube', 'U39GT', DeviceType::TABLET ], + 'U39GT-W' => [ 'Cube', 'U39GT W', DeviceType::TABLET ], + 'U39GT-3G' => [ 'Cube', 'U39GT 3G', DeviceType::TABLET ], + 'U51GT' => [ 'Cube', 'U51GT', DeviceType::TABLET ], + 'U51GT-S' => [ 'Cube', 'U51GT S', DeviceType::TABLET ], + 'U51GT-W' => [ 'Cube', 'U51GT W', DeviceType::TABLET ], + 'U51GT C4' => [ 'Cube', 'U51GT C4', DeviceType::TABLET ], + 'U51GT-C4' => [ 'Cube', 'U51GT C4', DeviceType::TABLET ], + 'U51GT-C4B' => [ 'Cube', 'U51GT C4B', DeviceType::TABLET ], + 'U51GT-C4BD' => [ 'Cube', 'U51GT C4BD', DeviceType::TABLET ], + 'U51GT-C8' => [ 'Cube', 'U51GT C8', DeviceType::TABLET ], + 'U51GT-C8P' => [ 'Cube', 'U51GT C8S', DeviceType::TABLET ], + 'U51GT-C8S' => [ 'Cube', 'U51GT C8S', DeviceType::TABLET ], + 'U51GT-4G' => [ 'Cube', 'U51GT 4G', DeviceType::TABLET ], + 'U55GT' => [ 'Cube', 'U55GT', DeviceType::TABLET ], + 'U55GT C8' => [ 'Cube', 'U55GT C8', DeviceType::TABLET ], + 'U55GT S' => [ 'Cube', 'U55GT S', DeviceType::TABLET ], + 'U59GT-C4' => [ 'Cube', 'U59GT C4', DeviceType::TABLET ], + 'U65GT' => [ 'Cube', 'U65GT', DeviceType::TABLET ], + ], + + 'CUBE!!' => [ + 'CUBE Q7PRO' => [ 'Cube', 'Q7 Pro', DeviceType::TABLET ], + 'CUBE Q7PRO J' => [ 'Cube', 'Q7 Pro', DeviceType::TABLET ], + 'CUBE TALK7X' => [ 'Cube', 'Talk 7X', DeviceType::TABLET ], + 'CUBE TALK7X C4' => [ 'Cube', 'Talk 7X C4', DeviceType::TABLET ], + ], + + 'LT[0-9]{4,4}!!' => [ + 'LT7033' => [ 'Curtis', 'Klu LT7033', DeviceType::TABLET ], + 'LT7035-F' => [ 'Curtis', 'Klu LT7035-F', DeviceType::TABLET ], + 'LT7035-J' => [ 'Curtis', 'Klu LT7035-J', DeviceType::TABLET ], + 'LT7035-L' => [ 'Curtis', 'Klu LT7035-L', DeviceType::TABLET ], + 'LT7052' => [ 'Curtis', 'Klu LT7052', DeviceType::TABLET ], + 'LT8088' => [ 'Curtis', 'Klu LT8088', DeviceType::TABLET ], + ], + + 'Cydle M7!' => [ 'Cydle', 'M7 MultiPAD', DeviceType::TABLET ], + 'EVDO1000' => [ 'Cyrus', 'EVDO 1000' ], + 'GloryG1000' => [ 'Cyrus', 'Glory G1000' ], + 'TVPAD Slim K3409' => [ 'Cyrus', 'TVPad Slim K3409', DeviceType::TABLET ], + + 'D2-[0-9]{3,3}!!' => [ + 'D2-711' => [ 'D2pad', 'D2-711', DeviceType::TABLET ], + 'D2-712' => [ 'D2pad', 'D2-712', DeviceType::TABLET ], + 'D2-721' => [ 'D2pad', 'D2-721', DeviceType::TABLET ], + 'D2-721G' => [ 'D2pad', 'D2-721G', DeviceType::TABLET ], + 'D2-727' => [ 'D2pad', 'D2-727', DeviceType::TABLET ], + 'D2-751G' => [ 'D2pad', 'D2-751G', DeviceType::TABLET ], + 'D2-911' => [ 'D2pad', 'D2-911', DeviceType::TABLET ], + 'D2-912' => [ 'D2pad', 'D2-912', DeviceType::TABLET ], + 'D2-927G' => [ 'D2pad', 'D2-927G', DeviceType::TABLET ], + 'D2-961G' => [ 'D2pad', 'D2-961G', DeviceType::TABLET ], + ], + + 'Dakele A380' => [ 'Dakele', 'A380' ], + 'DKL01' => [ 'Dakele', 'DKL01' ], + 'DAKELE MC001' => [ 'Dakele', 'MC001' ], + 'MC002' => [ 'Dakele', 'MC002' ], + + 'Dslide!!' => [ + 'Dslide 700' => [ 'Danew', 'DSlide 700', DeviceType::TABLET ], + 'Dslide 702' => [ 'Danew', 'DSlide 702', DeviceType::TABLET ], + 'Dslide 703R' => [ 'Danew', 'DSlide 703R', DeviceType::TABLET ], + 'Dslide 704' => [ 'Danew', 'DSlide 704', DeviceType::TABLET ], + 'Dslide 706' => [ 'Danew', 'DSlide 706', DeviceType::TABLET ], + 'Dslide 707' => [ 'Danew', 'DSlide 707', DeviceType::TABLET ], + 'Dslide800' => [ 'Danew', 'DSlide 800', DeviceType::TABLET ], + 'Dslide801' => [ 'Danew', 'DSlide 801', DeviceType::TABLET ], + 'Dslide900' => [ 'Danew', 'DSlide 900', DeviceType::TABLET ], + 'Dslide 971' => [ 'Danew', 'DSlide 971', DeviceType::TABLET ], + 'Dslide971DC' => [ 'Danew', 'DSlide 971', DeviceType::TABLET ], + 'DSlide972' => [ 'Danew', 'DSlide 972', DeviceType::TABLET ], + 'DSlide973' => [ 'Danew', 'DSlide 973', DeviceType::TABLET ], + 'Dslide973QC' => [ 'Danew', 'DSlide 973', DeviceType::TABLET ], + 'DSlide 1013' => [ 'Danew', 'DSlide 1013', DeviceType::TABLET ], + ], + + 'Genius!!' => [ + 'Genius TAB GIII' => [ 'Dany', 'Genius Tab G3', DeviceType::TABLET ], + 'GENIUS-G4' => [ 'Dany', 'Genius Tab G4', DeviceType::TABLET ], + 'Genius TAB G4' => [ 'Dany', 'Genius Tab G4', DeviceType::TABLET ], + 'Genius Tab Q4' => [ 'Dany', 'Genius Tab Q4', DeviceType::TABLET ], + ], + + 'EvoPAD!!' => [ + 'EvoPAD A7000' => [ 'Dark', 'EvoPad A7000', DeviceType::TABLET ], + 'EvoPad-R1020' => [ 'Dark', 'EvoPad R1020', DeviceType::TABLET ], + 'EVOPad R8000' => [ 'Dark', 'EvoPad R8000', DeviceType::TABLET ], + 'EVOPad R8020' => [ 'Dark', 'EvoPad R8020', DeviceType::TABLET ], + 'EVOPad R9720' => [ 'Dark', 'EvoPad R9720', DeviceType::TABLET ], + 'EvoPAD R9740' => [ 'Dark', 'EvoPad R9740', DeviceType::TABLET ], + 'EvoPAD-R9722' => [ 'Dark', 'EvoPad R9722', DeviceType::TABLET ], + 'Evopad R9730' => [ 'Dark', 'EvoPad R9730', DeviceType::TABLET ], + ], + + 'HB-100 DASAN' => [ 'Dasan', 'HB-100', DeviceType::TELEVISION ], + 'HB-100 DASAN Networks, Inc.' => [ 'Dasan', 'HB-100', DeviceType::TELEVISION ], + + 'DW-PS3G5' => [ 'Datawind', 'PocketSurfer 3G 5' ], + 'DW-UBT7W' => [ 'Datawind', 'Ubislate 7W', DeviceType::TABLET ], + 'DW-UBT7SC*' => [ 'Datawind', 'Ubislate 7SC', DeviceType::TABLET ], + 'DW-UBT27Cz' => [ 'Datawind', 'Ubislate 7C', DeviceType::TABLET ], + 'DW-UBT23G7' => [ 'Datawind', 'Ubislate 3G 7', DeviceType::TABLET ], + + 'Mini 3iG' => [ 'Dell', 'Aero' ], + 'BizSmartPhone' => [ 'Dell', 'Biz SmartPhone' ], + '001DL' => [ 'Dell', 'STREAK 001DL', DeviceType::TABLET, 'carrier' => 'Softbank' ], + '101DL' => [ 'Dell', 'STREAK PRO 101DL', DeviceType::TABLET, 'carrier' => 'Softbank' ], + 'GS01' => [ 'Dell', 'STREAK PRO GS01', DeviceType::TABLET, 'carrier' => 'EMOBILE' ], + 'streak7' => [ 'Dell', 'Streak 7', DeviceType::TABLET ], + 'CS-1A13' => [ 'Dell', 'Wyse Cloud Connect', DeviceType::TELEVISION ], + + 'Dell!!' => [ + 'Dell Aero' => [ 'Dell', 'Aero' ], + 'Dell Grappa' => [ 'Dell', 'Aero' ], + 'Dell M01M' => [ 'Dell', 'Streak', DeviceType::TABLET ], + 'Dell Mini 5' => [ 'Dell', 'Streak', DeviceType::TABLET ], + 'Dell Streak mini5' => [ 'Dell', 'Streak', DeviceType::TABLET ], + 'Dell Streak' => [ 'Dell', 'Streak', DeviceType::TABLET ], + 'Dell V04B' => [ 'Dell', 'Streak Pro', DeviceType::TABLET ], + 'Dell Streak Pro' => [ 'Dell', 'Streak Pro', DeviceType::TABLET ], + 'Dell Streak Pro (D43)' => [ 'Dell', 'Streak Pro', DeviceType::TABLET ], + 'Dell Streak Pro (GS01)' => [ 'Dell', 'Streak Pro', DeviceType::TABLET ], + 'Dell Streak Pro D43' => [ 'Dell', 'Streak Pro', DeviceType::TABLET ], + 'Dell Streak 7' => [ 'Dell', 'Streak 7', DeviceType::TABLET ], + 'Dell Streak 10 Pro' => [ 'Dell', 'Streak 10 Pro', DeviceType::TABLET ], + 'Dell streak 10 Pro 940' => [ 'Dell', 'Streak 10 Pro', DeviceType::TABLET ], + 'Dell Venue' => [ 'Dell', 'Venue' ], + ], + + 'Venue!!' => [ + 'venue 7' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue 7 3730' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue 7 3736' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue 7 3740' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue7 3740' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue7 3740 LTE' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue7 3740 HSPA+' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue 3740 LTE' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue 7 3741' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue 7 HSPA+' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue 7 WWAN' => [ 'Dell', 'Venue 7', DeviceType::TABLET ], + 'Venue 8 HSPA+' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue 8 WiFi' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue 8 3830' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue 8 3840' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue8 3840' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue8 3840 LTE' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue 8 7040' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue 8 7840' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue 8 7840 LTE' => [ 'Dell', 'Venue 8', DeviceType::TABLET ], + 'Venue 10 5050' => [ 'Dell', 'Venue 10', DeviceType::TABLET ], + 'Venue 10 7040' => [ 'Dell', 'Venue 10', DeviceType::TABLET ], + 'Venue 11 Pro 7130 MS' => [ 'Dell', 'Venue 11', DeviceType::TABLET ], + ], + + 'XCD 28' => [ 'Dell', 'XCD28' ], + 'Dell XCD35' => [ 'Dell', 'XCD35' ], + 'XCD35' => [ 'Dell', 'XCD35' ], + 'DEM752HCF' => [ 'Denver', 'TAC-7018', DeviceType::TABLET ], + + '(DENVER-)?TA[CD]-[0-9]{4,5}!!' => [ + 'TAC-7028' => [ 'Denver', 'TAC-7028', DeviceType::TABLET ], + 'TAC-10011' => [ 'Denver', 'TAC-10011', DeviceType::TABLET ], + 'TAC-10031' => [ 'Denver', 'TAC-10031', DeviceType::TABLET ], + 'TAC-10031 MK2' => [ 'Denver', 'TAC-10031', DeviceType::TABLET ], + 'TAC-70031' => [ 'Denver', 'TAC-70031', DeviceType::TABLET ], + 'TAC-70041' => [ 'Denver', 'TAC-70041', DeviceType::TABLET ], + 'TAC-70051' => [ 'Denver', 'TAC-70051', DeviceType::TABLET ], + 'TAC-70061' => [ 'Denver', 'TAC-70061', DeviceType::TABLET ], + 'TAC-70072' => [ 'Denver', 'TAC-70072', DeviceType::TABLET ], + 'TAC-70072kc' => [ 'Denver', 'TAC-70072', DeviceType::TABLET ], + 'TAD-70092 PINK MK2 PO8318' => [ 'Denver', 'TAC-70092', DeviceType::TABLET ], + 'TAD-70102G' => [ 'Denver', 'TAC-70102G', DeviceType::TABLET ], + 'TAC-70111' => [ 'Denver', 'TAC-70111', DeviceType::TABLET ], + 'TAC-70111 PO8195' => [ 'Denver', 'TAC-70111', DeviceType::TABLET ], + 'TAC-70111 PO8241' => [ 'Denver', 'TAC-70111', DeviceType::TABLET ], + 'TAC-70111 PO8242' => [ 'Denver', 'TAC-70111', DeviceType::TABLET ], + 'TAD-70111 PO8306' => [ 'Denver', 'TAC-70111', DeviceType::TABLET ], + 'TAD-70111MK2' => [ 'Denver', 'TAC-70111', DeviceType::TABLET ], + 'TAD-70112 PO8278' => [ 'Denver', 'TAC-70112', DeviceType::TABLET ], + 'TAD-70112KC PO8347' => [ 'Denver', 'TAC-70112', DeviceType::TABLET ], + 'TAD-70132 PO8575' => [ 'Denver', 'TAC-70132', DeviceType::TABLET ], + 'TAC-80011' => [ 'Denver', 'TAC-80011', DeviceType::TABLET ], + 'TAC-90011' => [ 'Denver', 'TAC-90011', DeviceType::TABLET ], + 'TAC-90012' => [ 'Denver', 'TAC-90012', DeviceType::TABLET ], + 'TAC-97032' => [ 'Denver', 'TAC-97032', DeviceType::TABLET ], + 'TAC-97052' => [ 'Denver', 'TAC-97052', DeviceType::TABLET ], + 'TAD-10021' => [ 'Denver', 'TAD-10021', DeviceType::TABLET ], + 'TAD-10023' => [ 'Denver', 'TAD-10023', DeviceType::TABLET ], + 'TAD-10062' => [ 'Denver', 'TAD-10062', DeviceType::TABLET ], + 'TAD-10063 MK2 PO8311' => [ 'Denver', 'TAD-10063', DeviceType::TABLET ], + 'DENVER-TAD-10082' => [ 'Denver', 'TAD-10082', DeviceType::TABLET ], + 'TAD-70091' => [ 'Denver', 'TAD-70091', DeviceType::TABLET ], + 'TAD-70092' => [ 'Denver', 'TAD-70092', DeviceType::TABLET ], + 'TAD-70092 BLACK MK2 PO8341' => [ 'Denver', 'TAD-70092', DeviceType::TABLET ], + 'TAD-70111PO8275' => [ 'Denver', 'TAD-70111', DeviceType::TABLET ], + 'TAD-70111 PO8307' => [ 'Denver', 'TAD-70111', DeviceType::TABLET ], + 'TAD-70112PO8197' => [ 'Denver', 'TAD-70112', DeviceType::TABLET ], + 'TAD-70112 PO8292' => [ 'Denver', 'TAD-70112', DeviceType::TABLET ], + 'TAD-70112KC PO8360' => [ 'Denver', 'TAD-70112', DeviceType::TABLET ], + 'TAD-90021' => [ 'Denver', 'TAD-90021', DeviceType::TABLET ], + 'TAD-90022' => [ 'Denver', 'TAD-90022', DeviceType::TABLET ], + 'TAD-97052' => [ 'Denver', 'TAD-97052', DeviceType::TABLET ], + 'TAD-97052mk2' => [ 'Denver', 'TAD-97052', DeviceType::TABLET ], + 'TAD-97072G' => [ 'Denver', 'TAD-97072', DeviceType::TABLET ], + 'TAD-97082!' => [ 'Denver', 'TAD-97082', DeviceType::TABLET ], + ], + + 'deovo V5' => [ 'deovo', 'V5' ], + + 'DESAY!!' => [ + 'DESAY TS808' => [ 'Desay', 'TS808' ], + 'DESAY TS908' => [ 'Desay', 'TS908' ], + 'DESAY TS928' => [ 'Desay', 'TS928' ], + 'DESAY TS1008' => [ 'Desay', 'TS1008' ], + 'DESAY TS1018' => [ 'Desay', 'TS1018' ], + 'DESAY TS1218' => [ 'Desay', 'TS1218' ], + ], + + 'iP977' => [ 'Dex', 'iP977', DeviceType::TABLET ], + + 'DEXP Ixion ML 5' => [ 'DEXP', 'Ixion ML 5' ], + 'DEXP Ixion XL 5' => [ 'DEXP', 'Ixion XL 5' ], + + 'Dialog!!' => [ + 'Dialog i35' => [ 'Dialog', 'i35' ], + 'Dialog i43' => [ 'Dialog', 'i43' ], + 'Dialog i43(ICS)' => [ 'Dialog', 'i43' ], + 'Dialog K35' => [ 'Dialog', 'K35' ], + 'Dialog K45' => [ 'Dialog', 'K45' ], + 'Dialog K235' => [ 'Dialog', 'K235' ], + 'Dialog Q143L' => [ 'Dialog', 'Q143L' ], + 'Dialog Q178' => [ 'Dialog', 'Q178' ], + 'Dialog Q243' => [ 'Dialog', 'Q243' ], + ], + + 'DIT[0-9]{4,6}!!' => [ + 'DIT1010' => [ 'Difrnce', 'DIT1010', DeviceType::TABLET ], + 'DIT7000' => [ 'Difrnce', 'DIT7000', DeviceType::TABLET ], + 'DIT7070' => [ 'Difrnce', 'DIT7070', DeviceType::TABLET ], + 'DIT8070' => [ 'Difrnce', 'DIT8070', DeviceType::TABLET ], + 'DIT9720' => [ 'Difrnce', 'DIT9720', DeviceType::TABLET ], + 'DIT101201' => [ 'Difrnce', 'DIT101201', DeviceType::TABLET ], + 'DIT102201' => [ 'Difrnce', 'DIT102201', DeviceType::TABLET ], + 'DIT102202' => [ 'Difrnce', 'DIT102202', DeviceType::TABLET ], + 'DIT701101' => [ 'Difrnce', 'DIT701101', DeviceType::TABLET ], + 'DIT702101' => [ 'Difrnce', 'DIT702101', DeviceType::TABLET ], + 'DIT902101' => [ 'Difrnce', 'DIT902101', DeviceType::TABLET ], + 'DIT902102' => [ 'Difrnce', 'DIT902102', DeviceType::TABLET ], + 'DIT902103' => [ 'Difrnce', 'DIT902103', DeviceType::TABLET ], + ], + + 'NID 7010' => [ 'Difrnce', 'DIT702201', DeviceType::TABLET ], + 'DIGICELDL1plus' => [ 'Digicel', 'DL1 Plus' ], + 'DL750' => [ 'Digicel', 'DL750' ], + 'DIGICEL DL800' => [ 'Digicel', 'DL800' ], + 'DIGICEL DL1000' => [ 'Digicel', 'DL1000' ], + 'DL8006' => [ 'DigiLand', 'DL8006', DeviceType::TABLET ], + + '(Digma )?iD[jmnsx][DQ]?[0-9]*!!' => [ + 'Digma iDj7!' => [ 'Digma', 'iDj7', DeviceType::TABLET ], + 'iDj7n' => [ 'Digma', 'iDj7n', DeviceType::TABLET ], + 'Digma iDm7' => [ 'Digma', 'iDm7', DeviceType::TABLET ], + 'Digma iDn7' => [ 'Digma', 'iDn7', DeviceType::TABLET ], + 'ids7' => [ 'Digma', 'iDs7', DeviceType::TABLET ], + 'ids10' => [ 'Digma', 'iDs10', DeviceType::TABLET ], + 'DIGMA iDs10!' => [ 'Digma', 'iDs10', DeviceType::TABLET ], + 'iDx5' => [ 'Digma', 'iDx5' ], + 'iDx7' => [ 'Digma', 'iDx7', DeviceType::TABLET ], + 'iDx7 Type2 4' => [ 'Digma', 'iDx7', DeviceType::TABLET ], + 'iDx10!' => [ 'Digma', 'iDx10', DeviceType::TABLET ], + 'iDnD7' => [ 'Digma', 'iDnD7', DeviceType::TABLET ], + 'DIGMA IDSD' => [ 'Digma', 'iDsD', DeviceType::TABLET ], + 'DIGMA iDsD7!' => [ 'Digma', 'iDsD7', DeviceType::TABLET ], + 'DIGMA iDsD8!' => [ 'Digma', 'iDsD8', DeviceType::TABLET ], + 'DIGMA iDsD10!' => [ 'Digma', 'iDsD10', DeviceType::TABLET ], + 'iDxD4' => [ 'Digma', 'iDxD4' ], + 'IDXD8' => [ 'Digma', 'iDxD8', DeviceType::TABLET ], + 'iDxD8 3G' => [ 'Digma', 'iDxD8', DeviceType::TABLET ], + 'iDxD7 3G' => [ 'Digma', 'iDxD7', DeviceType::TABLET ], + 'IDXD10' => [ 'Digma', 'iDxD10', DeviceType::TABLET ], + 'iDxD10 3G' => [ 'Digma', 'iDxD10', DeviceType::TABLET ], + 'iDxQ5' => [ 'Digma', 'iDxQ5' ], + ], + + 'DISTAB9000R' => [ 'Disgo', 'Distab 9000R', DeviceType::TABLET ], + 'DishTV Smartvu A2020' => [ 'DishTV', 'SmartVU-mini', DeviceType::TELEVISION ], + + 'DM0[0-9]{2,2}(K|SH)!!' => [ + 'DM009SH' => [ 'Sharp', 'DM009SH', 'carrier' => 'Disney Mobile' ], + 'DM010SH' => [ 'Sharp', 'DM010SH', 'carrier' => 'Disney Mobile' ], + 'DM011SH' => [ 'Sharp', 'DM011SH', 'carrier' => 'Disney Mobile' ], + 'DM012SH' => [ 'Sharp', 'DM012SH', 'carrier' => 'Disney Mobile' ], + 'DM013SH' => [ 'Sharp', 'DM013SH', 'carrier' => 'Disney Mobile' ], + 'DM014SH' => [ 'Sharp', 'DM014SH', 'carrier' => 'Disney Mobile' ], + 'DM015K' => [ 'Kyocera', 'DM015K', 'carrier' => 'Disney Mobile' ], + 'DM016SH' => [ 'Sharp', 'DM016SH', 'carrier' => 'Disney Mobile' ], + ], + + 'DJC Touchtab3' => [ 'DJC', 'Touchtab3', DeviceType::TABLET ], + 'DJC Touchtab4' => [ 'DJC', 'Touchtab4', DeviceType::TABLET ], + 'AirBook TTJ702' => [ 'DNS', 'Airbook TTJ702', DeviceType::TABLET ], + 'DNS Airbook TYT701' => [ 'DNS', 'Airbook TYT701', DeviceType::TABLET ], + + '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!' => [ + 'DNS Airtab E73' => [ 'DNS', 'AirTab E73', DeviceType::TABLET ], + 'AirTab ES70' => [ 'DNS', 'AirTab ES70', DeviceType::TABLET ], + 'AirTab M81g' => [ 'DNS', 'AirTab M81g', DeviceType::TABLET ], + 'AirTab M81w' => [ 'DNS', 'AirTab M81w', DeviceType::TABLET ], + 'M83w' => [ 'DNS', 'AirTab M83w', DeviceType::TABLET ], + 'M84g' => [ 'DNS', 'AirTab M84g', DeviceType::TABLET ], + 'M100qw' => [ 'DNS', 'AirTab M100qw', DeviceType::TABLET ], + 'M101g' => [ 'DNS', 'AirTab M101g', DeviceType::TABLET ], + 'AirTab M104G' => [ 'DNS', 'AirTab M104g', DeviceType::TABLET ], + 'AirTab m971g' => [ 'DNS', 'AirTab M971g', DeviceType::TABLET ], + 'M971w' => [ 'DNS', 'AirTab M971w', DeviceType::TABLET ], + 'M972g' => [ 'DNS', 'AirTab M972g', DeviceType::TABLET ], + 'M972w' => [ 'DNS', 'AirTab M972w', DeviceType::TABLET ], + 'DNS AirTab M974w' => [ 'DNS', 'AirTab M974w', DeviceType::TABLET ], + 'AirTab M975w' => [ 'DNS', 'AirTab M975w', DeviceType::TABLET ], + 'DNS M975W' => [ 'DNS', 'AirTab M975W', DeviceType::TABLET ], + 'AirTab MA7001' => [ 'DNS', 'AirTab MA7001', DeviceType::TABLET ], + 'AirTab MC1011' => [ 'DNS', 'AirTab MC1011', DeviceType::TABLET ], + 'DNS AirTab MF1011' => [ 'DNS', 'AirTab MF1011', DeviceType::TABLET ], + 'AirTab MW1011' => [ 'DNS', 'AirTab MW1011', DeviceType::TABLET ], + 'AirTab MW7851' => [ 'DNS', 'AirTab MW7851', DeviceType::TABLET ], + 'AirTab P70qw' => [ 'DNS', 'AirTab P70qw', DeviceType::TABLET ], + 'AirTab P71g' => [ 'DNS', 'AirTab P71g', DeviceType::TABLET ], + 'DNS AirTab P71g' => [ 'DNS', 'AirTab P71g', DeviceType::TABLET ], + 'AirTab P83' => [ 'DNS', 'AirTab P83', DeviceType::TABLET ], + 'DNS AirTab P101w' => [ 'DNS', 'AirTab P101w', DeviceType::TABLET ], + 'AirTab P970g' => [ 'DNS', 'AirTab P970g', DeviceType::TABLET ], + 'AirTab P970w' => [ 'DNS', 'AirTab P970w', DeviceType::TABLET ], + 'AirTab PC9701' => [ 'DNS', 'AirTab PC9701', DeviceType::TABLET ], + 'DNS AirTab PF7001' => [ 'DNS', 'AirTab PF7001', DeviceType::TABLET ], + ], + + 'DNS S!!' => [ + 'DNS S3501' => [ 'DNS', 'S3501' ], + 'DNS s4003' => [ 'DNS', 'S4003' ], + 'DNS S4006' => [ 'DNS', 'S4006' ], + 'DNS S4008' => [ 'DNS', 'S4008' ], + 'DNS S4502' => [ 'DNS', 'S4502' ], + 'DNS S4502M' => [ 'DNS', 'S4502M' ], + 'DNS S4507' => [ 'DNS', 'S4507' ], + 'DNS S4508' => [ 'DNS', 'S4508' ], + 'DNS S4704' => [ 'DNS', 'S4704' ], + 'DNS S4705' => [ 'DNS', 'S4705' ], + 'DNS S5005' => [ 'DNS', 'S5005' ], + 'DNS S5008' => [ 'DNS', 'S5008' ], + 'DNS s5301' => [ 'DNS', 'S5301' ], + 'DNS S5701' => [ 'DNS', 'S5701' ], + ], + + 'DNSS4003' => [ 'DNS', 'S4003' ], + 'DNS4502M' => [ 'DNS', 'S4502M' ], + 'S4503Q' => [ 'DNS', 'S4503Q' ], + 'S4505M' => [ 'DNS', 'S4505M' ], + + 'DPS Dream 7' => [ 'DPS', 'Dream 7', DeviceType::TABLET ], + 'DPS Dream 9' => [ 'DPS', 'Dream 9', DeviceType::TABLET ], + 'domod G20' => [ 'Domod', 'G20' ], + 'Y6 Max' => [ 'Doogee', 'Y6 Max' ], + 'Y6 Piano' => [ 'Doogee', 'Y6 Piano' ], + 'Doogee X5 Max Pro' => [ 'Doogee', 'X5 Max Pro' ], + 'Collo DG100' => [ 'Doogee', 'Collo DG100' ], + 'Collo 2 DG120' => [ 'Doogee', 'Collo 2 DG120' ], + 'DOOGEE-TITANS-DG150' => [ 'Doogee', 'Titans DG150' ], + 'VOYAGER DG300' => [ 'Doogee', 'Voyager DG300' ], + 'VOYAGER2 DG310' => [ 'Doogee', 'Voyager 2 DG310' ], + 'DG310' => [ 'Doogee', 'Voyager 2 DG310' ], + 'MINT-DG330' => [ 'Doogee', 'Mint DG330' ], + 'Discovery DG500' => [ 'Doogee', 'Discovery DG500' ], + 'Discovery2-DG500C' => [ 'Doogee', 'Discovery 2 DG500C' ], + 'DG750 Iron Bone' => [ 'Doogee', 'Iron Bone DG750' ], + 'TURBO DG2014' => [ 'Doogee', 'Turbo DG2014' ], + + 'DOOV!!' => [ + 'DOOV C1' => [ 'DOOV', 'C1' ], + 'DOOV C7' => [ 'DOOV', 'C7' ], + 'DOOV D2' => [ 'DOOV', 'D2' ], + 'DOOV D3' => [ 'DOOV', 'D3' ], + 'DOOV D5' => [ 'DOOV', 'D5' ], + 'DOOV D7' => [ 'DOOV', 'D7' ], + 'DOOV D8' => [ 'DOOV', 'D8' ], + 'DOOV D9' => [ 'DOOV', 'D9' ], + 'DOOV D10' => [ 'DOOV', 'D10' ], + 'DOOV D30' => [ 'DOOV', 'D30' ], + 'DOOV-DOOV D300' => [ 'DOOV', 'D300' ], + 'DOOV D300' => [ 'DOOV', 'D300' ], + 'DOOV D350' => [ 'DOOV', 'D350' ], + 'DOOV D360' => [ 'DOOV', 'D360' ], + 'DOOV D500' => [ 'DOOV', 'D500' ], + 'DOOV D700' => [ 'DOOV', 'D700' ], + 'DOOV D708' => [ 'DOOV', 'D708' ], + 'DOOV D710' => [ 'DOOV', 'D710' ], + 'DOOV D720' => [ 'DOOV', 'D720' ], + 'DOOV D770' => [ 'DOOV', 'D770' ], + 'DOOV D800' => [ 'DOOV', 'D800' ], + 'DOOV D910T' => [ 'DOOV', 'D910T' ], + 'DOOV D920' => [ 'DOOV', 'D920' ], + 'DOOV L1' => [ 'DOOV', 'L1' ], + 'DOOV L1M' => [ 'DOOV', 'L1M' ], + 'DOOV L3' => [ 'DOOV', 'L3' ], + 'DOOV L5' => [ 'DOOV', 'L5' ], + 'DOOV L5Pro' => [ 'DOOV', 'L5 Pro' ], + 'DOOV S1' => [ 'DOOV', 'S1' ], + 'DOOV S2' => [ 'DOOV', 'S2' ], + 'DOOV S2y' => [ 'DOOV', 'S2y' ], + 'DOOV S3' => [ 'DOOV', 'S3' ], + 'DOOV S5' => [ 'DOOV', 'S5' ], + 'DOOV T20L' => [ 'DOOV', 'T20L' ], + 'DOOV T35' => [ 'DOOV', 'T35' ], + 'DOOV T60' => [ 'DOOV', 'T60' ], + 'DOOV T90' => [ 'DOOV', 'T90' ], + ], + + 'Doro Liberto!!' => [ + 'Doro Liberto 810' => [ 'Doro', 'Liberto 810' ], + 'Doro Liberto 820' => [ 'Doro', 'Liberto 820' ], + 'Doro Liberto 820 Mini' => [ 'Doro', 'Liberto 820 Mini' ], + 'Doro Liberto 822' => [ 'Doro', 'Liberto 822' ], + 'Doro Liberto 825' => [ 'Doro', 'Liberto 825' ], + ], + + 'Doro 8030' => [ 'Doro', 'Liberto 822' ], + 'Doro 824' => [ 'Doro', 'Liberto 824' ], + '825 T-Mobile' => [ 'Doro', 'Liberto 825' ], + 'Doro PhoneEasy 745' => [ 'Doro', 'PhoneEasy 745' ], + 'M975' => [ 'Double Power', 'M975', DeviceType::TABLET ], + 'TD-1010' => [ 'Double Power', 'TD-1010', DeviceType::TABLET ], + 'Tablet-P27' => [ 'DracoTek', 'P27 Tablet', DeviceType::TABLET ], + 'Dtac phone Joey Jet 2' => [ 'Dtac', 'Joey Jet 2' ], + 'dyno 7.80' => [ 'Dyno', '7.80', DeviceType::TABLET ], + 'dyno 7.85' => [ 'Dyno', '7.85', DeviceType::TABLET ], + 'ACM3066-8' => [ 'MY|eebo', 'Color Tablet', DeviceType::TABLET ], + + '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!' => [ + 'Eruption V200' => [ 'E-Boda', 'Eruption V200', DeviceType::TABLET ], + 'E-Boda Essential A150' => [ 'E-Boda', 'Essential A150', DeviceType::TABLET ], + 'Essential A330' => [ 'E-Boda', 'Essential A330', DeviceType::TABLET ], + 'E-Boda IMPRESSPE3D E1' => [ 'E-Boda', 'Impresspeed E1', DeviceType::TABLET ], + 'E-Boda IMPRESSPEED E 250DC' => [ 'E-Boda', 'Impresspeed E250', DeviceType::TABLET ], + 'E-Boda Impresspeed E300' => [ 'E-Boda', 'Impresspeed E300', DeviceType::TABLET ], + 'E-Boda Supreme X80 Dual Core' => [ 'E-Boda', 'Supreme X80', DeviceType::TABLET ], + 'E-Boda Supreme Dual Core X190' => [ 'E-Boda', 'Supreme X190', DeviceType::TABLET ], + 'SUPREME IPS Dual Core X200' => [ 'E-Boda', 'Supreme X200', DeviceType::TABLET ], + 'E-Boda Supreme X400 Quad Core' => [ 'E-Boda', 'Supreme X400', DeviceType::TABLET ], + 'E-Boda Supreme XL200IPS' => [ 'E-Boda', 'Supreme XL200', DeviceType::TABLET ], + 'E-Boda Supreme XL400QC' => [ 'E-Boda', 'Supreme XL400', DeviceType::TABLET ], + 'E-Boda Rainbow V47' => [ 'E-Boda', 'Rainbow V47' ], + 'Revo R80' => [ 'E-Boda', 'Revo R80' ], + 'E-Boda Storm V50' => [ 'E-Boda', 'Storm V50' ], + 'Storm V100' => [ 'E-Boda', 'Storm V100' ], + 'Storm X450' => [ 'E-Boda', 'Storm X450' ], + ], + + 'Etel!!' => [ + 'Etel i3' => [ 'E-tel', 'Curiosity i3' ], + 'Etel i4' => [ 'E-tel', 'Curiosity i4' ], + 'Etel i6' => [ 'E-tel', 'Curiosity i6' ], + 'Etel i8' => [ 'E-tel', 'Curiosity i8' ], + ], + + 'EasyPhone EP5' => [ 'Easypix', 'EasyPhone EP5' ], + 'EasyPad 971' => [ 'Easypix', 'EasyPad 971', DeviceType::TABLET ], + + 'EBEN!!' => [ + 'EBEN A3' => [ 'EBEN', 'A3', DeviceType::TABLET ], + 'EBEN S1' => [ 'EBEN', 'S1', DeviceType::TABLET ], + 'EBEN T6' => [ 'EBEN', 'T6', DeviceType::TABLET ], + 'EBEN T7' => [ 'EBEN', 'T7', DeviceType::TABLET ], + 'EBEN T8' => [ 'EBEN', 'T8', DeviceType::TABLET ], + ], + + 'EBEST!!' => [ + 'EBEST A35' => [ 'EBEST', 'A35' ], + 'EBEST F5' => [ 'EBEST', 'F5' ], + 'EBEST N4' => [ 'EBEST', 'N4' ], + 'EBEST T5' => [ 'EBEST', 'T5' ], + 'EBEST T7' => [ 'EBEST', 'T7' ], + 'EBEST U1' => [ 'EBEST', 'U1' ], + 'EBEST V5' => [ 'EBEST', 'V5' ], + 'EBEST V6' => [ 'EBEST', 'V6' ], + 'EBEST V7' => [ 'EBEST', 'V7' ], + 'EBEST V8' => [ 'EBEST', 'V8' ], + 'EBEST W16A' => [ 'EBEST', 'W16A' ], + 'EBEST W18' => [ 'EBEST', 'W18' ], + 'EBEST W66' => [ 'EBEST', 'W66' ], + 'EBEST W66A' => [ 'EBEST', 'W66A' ], + 'EBEST W70' => [ 'EBEST', 'W70' ], + 'EBEST Z5' => [ 'EBEST', 'Z5' ], + 'EBEST Z7' => [ 'EBEST', 'Z7' ], + ], + + 'TA10CA3' => [ 'ECS', 'TA10CA3', DeviceType::TABLET ], + 'TM105' => [ 'ECS', 'TM105', DeviceType::TABLET ], + 'TM105A' => [ 'ECS', 'TM105A', DeviceType::TABLET ], + 'TR10CS1' => [ 'ECS', 'TR10CS1', DeviceType::TABLET ], + + 'Elephone!!' => [ + 'Elephone G1' => [ 'Elephone', 'G1' ], + 'Elephone G2' => [ 'Elephone', 'G2' ], + 'Elephone G3' => [ 'Elephone', 'G3' ], + 'Elephone G4' => [ 'Elephone', 'G4' ], + 'Elephone G5' => [ 'Elephone', 'G5' ], + 'Elephone G6' => [ 'Elephone', 'G6' ], + 'Elephone G7' => [ 'Elephone', 'G7' ], + 'Elephone G9' => [ 'Elephone', 'G9' ], + 'Elephone P6' => [ 'Elephone', 'P6' ], + 'Elephone P8' => [ 'Elephone', 'P8' ], + 'Elephone P8 Pro' => [ 'Elephone', 'P8 Pro' ], + 'Elephone P10' => [ 'Elephone', 'P10' ], + 'Elephone-P10C' => [ 'Elephone', 'P10C' ], + 'Elephone-P2000' => [ 'Elephone', 'P2000' ], + 'Elephone P2000' => [ 'Elephone', 'P2000' ], + 'Elephone-P2000C' => [ 'Elephone', 'P2000C' ], + 'Elephone P3000!' => [ 'Elephone', 'P3000' ], + 'Elephone P4000!' => [ 'Elephone', 'P4000' ], + 'Elephone P5000!' => [ 'Elephone', 'P5000' ], + 'Elephone P6000!' => [ 'Elephone', 'P6000' ], + 'Elephone P7000' => [ 'Elephone', 'P7000' ], + 'Elephone P8000!' => [ 'Elephone', 'P8000' ], + 'Elephone S2' => [ 'Elephone', 'S2' ], + 'Elephone S2 Plus' => [ 'Elephone', 'S2 Plus' ], + ], + + 'D709' => [ 'Empire Electronix', 'Tablet D709', DeviceType::TABLET ], + 'C8660' => [ 'Enspire', 'C8660' ], + 'edgejr' => [ 'EnTourage', 'Pocket eDGe', DeviceType::TABLET ], + 'l97D' => [ 'EPad', 'l97D', DeviceType::TABLET ], + 'A1001T' => [ 'Elijah', 'A1001T', DeviceType::TABLET ], + 'ELIYA S1' => [ 'Eliya', 'S1' ], + 'V100MDT' => [ 'Envizen', 'V100MDT', DeviceType::TABLET ], + + 'epade!!' => [ + 'epade A3' => [ 'epade', 'A3' ], + 'epade A7' => [ 'epade', 'A7' ], + 'epade A45' => [ 'epade', 'A45' ], + 'epade A300' => [ 'epade', 'A300' ], + 'epade A360S' => [ 'epade', 'A360S' ], + 'epade A718' => [ 'epade', 'A718' ], + 'epade N01' => [ 'epade', 'N01' ], + 'epade Q3' => [ 'epade', 'Q3' ], + 'epade S300' => [ 'epade', 'S300' ], + 'EPADE S3' => [ 'epade', 'S3' ], + 'epade S5' => [ 'epade', 'S5' ], + 'epade S7' => [ 'epade', 'S7' ], + 'epade V05' => [ 'epade', 'V05' ], + ], + + 'equiso.smart.tv.pro' => [ 'Equiso', 'SmartTV', DeviceType::TELEVISION ], + + 'PH-1' => [ 'Essential', 'Phone' ], + + 'ST7001' => [ 'Essentiel B', 'Black Diamond' ], + 'ST8000' => [ 'Essentiel B', 'Smart\'Tab 8000', DeviceType::TABLET ], + 'ST9001' => [ 'Essentiel B', 'Smart\'Tab 9001', DeviceType::TABLET ], + + 'eSTAR!!' => [ + 'eSTAR BEAUTY HD Quad core' => [ 'eSTAR', 'Beauty HD', DeviceType::TABLET ], + 'eSTAR CRYSTAL' => [ 'eSTAR', 'Crystal', DeviceType::TABLET ], + 'eSTAR Easy' => [ 'eSTAR', 'Easy', DeviceType::TABLET ], + 'eSTAR GO!' => [ 'eSTAR', 'Go!', DeviceType::TABLET ], + 'eSTAR GRAND' => [ 'eSTAR', 'Grand', DeviceType::TABLET ], + 'eSTAR GRAND HD' => [ 'eSTAR', 'Grand HD', DeviceType::TABLET ], + 'eSTAR GRAND HD Quad 3G' => [ 'eSTAR', 'Grand HD 3G', DeviceType::TABLET ], + 'eSTAR GRAND HD Intel Quad core 3G' => [ 'eSTAR', 'Grand HD 3G', DeviceType::TABLET ], + 'eSTAR Gemini' => [ 'eSTAR', 'Gemini', DeviceType::TABLET ], + 'eSTAR MINI' => [ 'eSTAR', 'Mini', DeviceType::TABLET ], + 'eSTAR MINI 3G' => [ 'eSTAR', 'Mini 3G', DeviceType::TABLET ], + 'eSTAR Zoom Quad' => [ 'eSTAR', 'Zoom', DeviceType::TABLET ], + 'eSTAR ZOOM HD Duo' => [ 'eSTAR', 'Zoom HD', DeviceType::TABLET ], + 'eSTAR Zoom HD Quad' => [ 'eSTAR', 'Zoom HD', DeviceType::TABLET ], + ], + + 'MID1018' => [ 'eSTAR', 'MID1018', DeviceType::TABLET ], + 'MID1028' => [ 'eSTAR', 'MID1028', DeviceType::TABLET ], + 'M4301' => [ 'Eston', 'MID M4301', DeviceType::MEDIA ], + + 'ETOOSPAD5' => [ 'ETOOS', 'PAD 5', DeviceType::TABLET ], + 'ETOOSPAD6' => [ 'ETOOS', 'PAD 6', DeviceType::TABLET ], + + '(EVAS )?EVERCOSS[- ]A!!' => [ + 'EVERCOSS A5' => [ 'EVERCOSS', 'A5' ], + 'EVERCOSS A5A*' => [ 'EVERCOSS', 'A5A' ], + 'EVERCOSS A5C' => [ 'EVERCOSS', 'A5C' ], + 'EVERCOSS A5K' => [ 'EVERCOSS', 'A5K' ], + 'EVERCOSS A5P' => [ 'EVERCOSS', 'A5P' ], + 'EVERCOSS A5P*' => [ 'EVERCOSS', 'A5P' ], + 'EVERCOSS A5V' => [ 'EVERCOSS', 'A5V' ], + 'EVERCOSS A5Z' => [ 'EVERCOSS', 'A5Z' ], + 'EVERCOSS A7A' => [ 'EVERCOSS', 'A7A' ], + 'EVERCOSS A7A*' => [ 'EVERCOSS', 'A7A' ], + 'EVERCOSS A7B' => [ 'EVERCOSS', 'A7B' ], + 'EVERCOSS A7F' => [ 'EVERCOSS', 'A7F' ], + 'EVERCOSS A7K' => [ 'EVERCOSS', 'A7K' ], + 'EVERCOSS A7L' => [ 'EVERCOSS', 'A7L' ], + 'EVERCOSS A7N' => [ 'EVERCOSS', 'A7N' ], + 'EVERCOSS A7R' => [ 'EVERCOSS', 'A7R' ], + 'EVERCOSS A7S' => [ 'EVERCOSS', 'A7S' ], + 'EVAS evercoss-a7s' => [ 'EVERCOSS', 'A7S' ], + 'EVERCOSS A7T' => [ 'EVERCOSS', 'A7T' ], + 'EVERCOSS A7T*' => [ 'EVERCOSS', 'A7T' ], + 'EVERCOSS A7V' => [ 'EVERCOSS', 'A7V' ], + 'EVERCOSS A7V+' => [ 'EVERCOSS', 'A7V' ], + 'EVERCOSS A7Z' => [ 'EVERCOSS', 'A7Z' ], + 'EVERCOSS A28A' => [ 'EVERCOSS', 'A28A' ], + 'EVERCOSS A28M' => [ 'EVERCOSS', 'A28M' ], + 'EVERCOSS A53B' => [ 'EVERCOSS', 'A53B' ], + 'EVERCOSS A54' => [ 'EVERCOSS', 'A54' ], + 'EVERCOSS A65' => [ 'EVERCOSS', 'A65' ], + 'Evercoss A66A' => [ 'EVERCOSS', 'A66A' ], + 'EVERCOSS A66S' => [ 'EVERCOSS', 'A66S' ], + 'EVERCOSS A66V' => [ 'EVERCOSS', 'A66V' ], + 'EVERCOSS A74A' => [ 'EVERCOSS', 'A74A' ], + 'EVERCOSS A74C' => [ 'EVERCOSS', 'A74C' ], + 'EVERCOSS A74D' => [ 'EVERCOSS', 'A74D' ], + 'EVERCOSS-A75L' => [ 'EVERCOSS', 'A75L' ], + 'EVERCOSS A75W' => [ 'EVERCOSS', 'A75W' ], + 'EVERCOSS A80A' => [ 'EVERCOSS', 'A80A' ], + 'EVERCOSS A200' => [ 'EVERCOSS', 'A200' ], + 'EVERCOSS AT1A' => [ 'EVERCOSS', 'AT1A', DeviceType::TABLET ], + 'EVERCOSS AT1A*' => [ 'EVERCOSS', 'AT1A', DeviceType::TABLET ], + 'EVERCOSS AT1G' => [ 'EVERCOSS', 'AT1G', DeviceType::TABLET ], + 'EVERCOSS AT8D' => [ 'EVERCOSS', 'AT8D', DeviceType::TABLET ], + ], + + 'AT1A*' => [ 'EVERCOSS', 'AT1A', DeviceType::TABLET ], + 'AT1C' => [ 'EVERCOSS', 'AT1C', DeviceType::TABLET ], + 'AT1C*' => [ 'EVERCOSS', 'AT1C', DeviceType::TABLET ], + 'AT1D' => [ 'EVERCOSS', 'AT1D', DeviceType::TABLET ], + 'AT1G*' => [ 'EVERCOSS', 'AT1G', DeviceType::TABLET ], + 'AT7E' => [ 'EVERCOSS', 'AT7E', DeviceType::TABLET ], + + 'EVERPAD SC-710' => [ 'Everest', 'Everpad SC-710', DeviceType::TABLET ], + + 'Ever!!' => [ + 'EverClassic' => [ 'Evertek', 'EverClassic' ], + 'EverFancy D40' => [ 'Evertek', 'EverFancy D40' ], + 'EverGlory' => [ 'Evertek', 'EverGlory' ], + 'EverMagic' => [ 'Evertek', 'EverMagic' ], + 'EverMellow D45' => [ 'Evertek', 'EverMellow D45' ], + 'EverMellow D50' => [ 'Evertek', 'EverMellow D50' ], + 'EverMiracle' => [ 'Evertek', 'EverMiracle' ], + 'EverMiracle mini' => [ 'Evertek', 'EverMiracle Mini' ], + 'EverMiracle Nano' => [ 'Evertek', 'EverMiracle Nano' ], + 'EverShine' => [ 'Evertek', 'EverShine' ], + 'EverTrendy' => [ 'Evertek', 'EverTrendy' ], + ], + + 'E70[0-9]{2,2}H[DG]!!' => [ + 'E7020HD' => [ 'Evertek', 'Everpad E7020HD', DeviceType::TABLET ], + 'E7050HD' => [ 'Evertek', 'Everpad E7050HD', DeviceType::TABLET ], + ], + + 'E80[0-9]{2,2}H[DG]!!' => [ + 'E8050HG' => [ 'Evertek', 'Everpad E8050HG', DeviceType::TABLET ], + 'E8051HD' => [ 'Evertek', 'Everpad E8051HD', DeviceType::TABLET ], + ], + + 'P10AN' => [ 'Exper', 'Easypad P10AN', DeviceType::TABLET ], + + '(Explay|X-tremer|ActiveD|Informer|Surfer)!!' => [ + 'Explay A320' => [ 'Explay', 'A320' ], + 'Explay Advance' => [ 'Explay', 'Advance' ], + 'Explay Dream' => [ 'Explay', 'Dream' ], + 'Explay Fresh' => [ 'Explay', 'Fresh' ], + 'Explay Indigo' => [ 'Explay', 'Indigo' ], + 'Explay Infinity' => [ 'Explay', 'Infinity' ], + 'Explay A350' => [ 'Explay', 'Star' ], + 'Explay Star' => [ 'Explay', 'Star' ], + 'Explay Vega' => [ 'Explay', 'Vega' ], + 'X-tremer' => [ 'Explay', 'X-tremer' ], + 'Explay X-tremer' => [ 'Explay', 'X-tremer' ], + 'ActiveD 7.4 3G' => [ 'Explay', 'ActiveD 7.4 3G', DeviceType::TABLET ], + 'Explay Informer 701' => [ 'Explay', 'Informer 701', DeviceType::TABLET ], + 'Informer 701' => [ 'Explay', 'Informer 701', DeviceType::TABLET ], + 'Explay Informer 702' => [ 'Explay', 'Informer 702', DeviceType::TABLET ], + 'Informer-702' => [ 'Explay', 'Informer 702', DeviceType::TABLET ], + 'Explay Informer 703' => [ 'Explay', 'Informer 703', DeviceType::TABLET ], + 'Informer 703' => [ 'Explay', 'Informer 703', DeviceType::TABLET ], + 'Informer 704' => [ 'Explay', 'Informer 704', DeviceType::TABLET ], + 'Informer 705' => [ 'Explay', 'Informer 705', DeviceType::TABLET ], + 'Explay Informer 705' => [ 'Explay', 'Informer 705', DeviceType::TABLET ], + 'Informer-801' => [ 'Explay', 'Informer 801', DeviceType::TABLET ], + 'Explay Informer 801' => [ 'Explay', 'Informer 801', DeviceType::TABLET ], + 'Explay Informer 804' => [ 'Explay', 'Informer 804', DeviceType::TABLET ], + 'informer 901' => [ 'Explay', 'Informer 901', DeviceType::TABLET ], + 'informer 920' => [ 'Explay', 'Informer 920', DeviceType::TABLET ], + 'informer 921' => [ 'Explay', 'Informer 921', DeviceType::TABLET ], + 'Explay Surfer 7.02' => [ 'Explay', 'Surfer 7.02', DeviceType::TABLET ], + 'Surfer7.03' => [ 'Explay', 'Surfer 7.03', DeviceType::TABLET ], + 'Surfer 7.04' => [ 'Explay', 'Surfer 7.04', DeviceType::TABLET ], + 'Surfer 7.31 3G' => [ 'Explay', 'Surfer 7.31 3G', DeviceType::TABLET ], + 'Surfer 7.32 3G' => [ 'Explay', 'Surfer 7.32 3G', DeviceType::TABLET ], + 'Surfer 7.34' => [ 'Explay', 'Surfer 7.34', DeviceType::TABLET ], + 'Explay surfer 8.01' => [ 'Explay', 'Surfer 8.01', DeviceType::TABLET ], + 'Surfer 8 02' => [ 'Explay', 'Surfer 8.02', DeviceType::TABLET ], + 'Surfer 8.02' => [ 'Explay', 'Surfer 8.02', DeviceType::TABLET ], + 'Surfer 8.31 3G' => [ 'Explay', 'Surfer 8.31 3G', DeviceType::TABLET ], + 'Surfer 10.11' => [ 'Explay', 'Surfer 10.11', DeviceType::TABLET ], + ], + + 'Smart!!' => [ + 'Smart402' => [ 'Fareastone', 'Smart 402' ], + 'Smart 403' => [ 'Fareastone', 'Smart 403' ], + 'Smart501' => [ 'Fareastone', 'Smart 501' ], + 'Smart 502' => [ 'Fareastone', 'Smart 502' ], + 'Smart503' => [ 'Fareastone', 'Smart 503' ], + 'Smart 505' => [ 'Fareastone', 'Smart 505' ], + 'Smart 701' => [ 'Fareastone', 'Smart 701', DeviceType::TABLET ], + ], + + 'FP1' => [ 'Fairphone', '1' ], + 'FP1U' => [ 'Fairphone', '1' ], + 'FP2' => [ 'Fairphone', '2' ], + + 'FDT!!' => [ + 'FDT C838' => [ 'FDT', 'C838' ], + 'FDT E5' => [ 'FDT', 'E5' ], + 'FDT E6' => [ 'FDT', 'E6' ], + 'FDT E829' => [ 'FDT', 'E829' ], + 'FDT E969' => [ 'FDT', 'E969' ], + 'FDT G18' => [ 'FDT', 'G18' ], + 'FDT G505' => [ 'FDT', 'G505' ], + ], + + 'GT-[HN][0-9]{4,4}!!' => [ + 'GT-H9001' => [ 'Feiteng', 'GT-H9001' ], + 'GT-H9500' => [ 'Feiteng', 'GT-H9500' ], + 'GT-N9300' => [ 'Feiteng', 'GT-N9300' ], + ], + + 'GT-9000' => [ 'Feiteng', 'H5W' ], + '9300' => [ 'Feiteng', 'GT-N9300' ], + + 'iOCEAN!!' => [ + 'iOCEAN X7' => [ 'FHD', 'iOCEAN X7' ], + 'iOCEAN X7 HD' => [ 'FHD', 'iOCEAN X7 HD' ], + 'iOCEAN X7S' => [ 'FHD', 'iOCEAN X7S' ], + 'iOCEAN X7T' => [ 'FHD', 'iOCEAN X7T' ], + 'iOCEAN X8' => [ 'FHD', 'iOCEAN X8' ], + ], + + 'FIH-!!' => [ + 'FIH-F0X' => [ 'FIH', 'F0X' ], + 'FIH-FBO' => [ 'FIH', 'FBO' ], + 'FIH-FD1' => [ 'FIH', 'FD1' ], + 'FIH-VKY' => [ 'FIH', 'VKY' ], + ], + + 'Vibo-A688' => [ 'FIH', 'Vibo A688' ], + + 'XT[0-9]{3,3}!!' => [ + 'XT712' => [ 'Flipkart', 'Digiflip Pro XT712', DeviceType::TABLET ], + 'XT801' => [ 'Flipkart', 'Digiflip Pro XT801', DeviceType::TABLET ], + 'XT811' => [ 'Flipkart', 'Digiflip Pro XT811', DeviceType::TABLET ], + ], + + 'Fly F[0-9]{2,3}!!' => [ + 'Fly F40' => [ 'Fly', 'F40' ], + 'FLY F45s' => [ 'Fly', 'F45s' ], + 'FLY F50s' => [ 'Fly', 'F50s' ], + 'Fly F350' => [ 'Fly', 'F350' ], + ], + + 'F50Q' => [ 'Fly', 'F50Q' ], + 'FS403' => [ 'Fly', 'FS403 Cumulus 1' ], + 'FS407' => [ 'Fly', 'FS407 Stratus 6' ], + 'FS451' => [ 'Fly', 'FS451 Nimbus 1' ], + 'FS514' => [ 'Fly', 'FS514 Cirrus 8' ], + 'Fly Phoenix 2' => [ 'Fly', 'IQ4410i Phoenix 2' ], + 'Fly Ego Art 2' => [ 'Fly', 'IQ455 Ego Art 2' ], + + '(Fly )?IQ ?[0-9]{3,4}!!' => [ + '(Fly )?IQ4413!' => [ 'Fly', 'IQ4413 Evo Chic 3' ], + '(Fly )?IQ4417!' => [ 'Fly', 'IQ4417 Quad Era Energy 3' ], + '(Fly )?IQ4516!' => [ 'Fly', 'IQ4516 Tornado Slim' ], + '(Fly )?IQ230!' => [ 'Fly', 'IQ230 Compact' ], + '(Fly )?IQ235!' => [ 'Fly', 'IQ235 Uno' ], + '(Fly )?IQ236!' => [ 'Fly', 'IQ236 Victory' ], + '(Fly )?IQ237!' => [ 'Fly', 'IQ237 Dynamic' ], + '(Fly )?IQ238!' => [ 'Fly', 'IQ238 Jazz' ], + '(Fly )?IQ239!' => [ 'Fly', 'IQ239 Era Nano 2' ], + '(Fly )?IQ240!' => [ 'Fly', 'IQ240 Whizz' ], + '(Fly )?IQ245!' => [ 'Fly', 'IQ245 Wizard' ], + '(Fly )?IQ245 Plus!' => [ 'Fly', 'IQ245 Wizard Plus' ], + '(Fly )?IQ246!' => [ 'Fly', 'IQ246 Power' ], + '(Fly )?IQ250!' => [ 'Fly', 'IQ250 Swift' ], + '(Fly )?IQ255!' => [ 'Fly', 'IQ255 Pride' ], + '(Fly )?IQ256!' => [ 'Fly', 'IQ256 Vogue' ], + '(Fly )?IQ260!' => [ 'Fly', 'IQ260 BlackBird' ], + '(Fly )?IQ270!' => [ 'Fly', 'IQ270 Firebird' ], + '(Fly )?IQ275!' => [ 'Fly', 'IQ275 Marathon' ], + '(Fly )?IQ280!' => [ 'Fly', 'IQ280 Tech' ], + '(Fly )?IQ285!' => [ 'Fly', 'IQ285 Turbo' ], + '(Fly )?IQ310!' => [ 'Fly', 'IQ310 Panorama', DeviceType::TABLET ], + '(Fly )?IQ320!' => [ 'Fly', 'IQ320', DeviceType::TABLET ], + '(Fly )?IQ430!' => [ 'Fly', 'IQ430 Evoke' ], + 'IQ 430' => [ 'Fly', 'IQ430 Evoke' ], + '(Fly )?IQ431!' => [ 'Fly', 'IQ431 Glory' ], + '(Fly )?IQ432!' => [ 'Fly', 'IQ432 Era Nano 1' ], + '(Fly )?IQ434!' => [ 'Fly', 'IQ434 Era Nano 5' ], + '(Fly )?IQ436!' => [ 'Fly', 'IQ434 Era Nano 9' ], + '(Fly )?IQ440!' => [ 'Fly', 'IQ440 Energie' ], + '(Fly )?IQ441!' => [ 'Fly', 'IQ441 Radiance' ], + '(Fly )?IQ442!' => [ 'Fly', 'IQ442 Miracle' ], + '(Fly )?IQ443!' => [ 'Fly', 'IQ443 Trend' ], + '(Fly )?IQ444!' => [ 'Fly', 'IQ444 Diamond' ], + '(Fly )?IQ445!' => [ 'Fly', 'IQ445 Genius' ], + '(Fly )?IQ446!' => [ 'Fly', 'IQ446 Magic' ], + 'IQ 446' => [ 'Fly', 'IQ446 Magic' ], + '(Fly )?IQ447!' => [ 'Fly', 'IQ447 Era Life 1' ], + '(Fly )?IQ448!' => [ 'Fly', 'IQ448 Chic' ], + '(Fly )?IQ449!' => [ 'Fly', 'IQ449 Pronto' ], + '(Fly )?IQ450!' => [ 'Fly', 'IQ450 Horizon' ], + '(Fly )?IQ451!' => [ 'Fly', 'IQ451 Vista' ], + 'IQ 451' => [ 'Fly', 'IQ451 Vista' ], + '(Fly )?IQ452!' => [ 'Fly', 'IQ452 Ego Vision 1' ], + '(Fly )?IQ453!' => [ 'Fly', 'IQ453 Luminor' ], + '(Fly )?IQ454!' => [ 'Fly', 'IQ454 Evo Tech 1' ], + '(Fly )?IQ455!' => [ 'Fly', 'IQ455 Ego Art 2' ], + 'IQ456' => [ 'Fly', 'IQ456 Era Life 2' ], + '(Fly )?IQ458!' => [ 'Fly', 'IQ458 Evo Tech 2' ], + '(Fly )?IQ459!' => [ 'Fly', 'IQ459 Evo Chic 2' ], + 'IQ588' => [ 'Fly', 'IQ588 Nimbuzz' ], + 'IQ4601' => [ 'Fly', 'IQ4601 Era Style 2' ], + 'IQ4602 Quad' => [ 'Fly', 'IQ4602 Thunder' ], + ], + + 'Flylife!!' => [ + 'Flylife Connect 7 3G' => [ 'Fly', 'Flylife Connect 7 3G', DeviceType::TABLET ], + 'Flylife Connect 7 3G 2' => [ 'Fly', 'Flylife Connect 7 3G 2', DeviceType::TABLET ], + 'Flylife Connect 7.85 3G 2' => [ 'Fly', 'Flylife Connect 7.85 3G 2', DeviceType::TABLET ], + 'Flylife Connect 7.85 3G Slim' => [ 'Fly', 'Flylife Connect 7.85 3G Slim', DeviceType::TABLET ], + 'Flylife Connect 10.1 3G' => [ 'Fly', 'Flylife Connect 10.1 3G', DeviceType::TABLET ], + 'Flylife Web 7' => [ 'Fly', 'Flylife Web 7', DeviceType::TABLET ], + 'Flylife Web 7.85 Slim' => [ 'Fly', 'Flylife Web 7.85 Slim', DeviceType::TABLET ], + ], + + 'Fly Flylife Web 7.85 Slim' => [ 'Fly', 'Flylife Web 7.85 Slim', DeviceType::TABLET ], + 'F600' => [ 'Flying', 'F600' ], + 'BC1003' => [ 'Flytouch', 'BC1003', DeviceType::TABLET ], + + '(tablet )?fnac!!' => [ + 'fnac 3.5' => [ 'Fnac', 'Smartphone 3.5' ], + 'fnac 4' => [ 'Fnac', 'Smartphone 4' ], + 'fnac 4.5' => [ 'Fnac', 'Smartphone 4.5' ], + 'fnac 5' => [ 'Fnac', 'Smartphone 5' ], + 'fnac 5 HD' => [ 'Fnac', 'Smartphone 5 HD' ], + 'fnac 5.7' => [ 'Fnac', 'Smartphone 5.7' ], + 'tablet Fnac 7' => [ 'Fnac', 'Tablet 7', DeviceType::TABLET ], + 'tablet Fnac 8' => [ 'Fnac', 'Tablet 8', DeviceType::TABLET ], + 'fnac 8 3G v2' => [ 'Fnac', 'Tablet 8 3G v2', DeviceType::TABLET ], + 'tablet Fnac 10' => [ 'Fnac', 'Tablet 10', DeviceType::TABLET ], + 'tablet Fnac 10 3G' => [ 'Fnac', 'Tablet 10 3G', DeviceType::TABLET ], + 'fnac 10 v2' => [ 'Fnac', 'Tablet 10 v2', DeviceType::TABLET ], + 'fnac 3.0 8' => [ 'Fnac', 'Tablet 3.0 8', DeviceType::TABLET ], + 'fnac 3.0 10 Plus' => [ 'Fnac', 'Tablet 3.0 10', DeviceType::TABLET ], + ], + + 'ifive!!' => [ + 'ifive 2' => [ 'FNF', 'iFive 2', DeviceType::TABLET ], + 'ifive2S' => [ 'FNF', 'iFive 2S', DeviceType::TABLET ], + 'ifive3' => [ 'FNF', 'iFive 3', DeviceType::TABLET ], + 'ifive MX' => [ 'FNF', 'iFive MX', DeviceType::TABLET ], + 'ifive MX100' => [ 'FNF', 'iFive MX100', DeviceType::TABLET ], + 'ifive X' => [ 'FNF', 'iFive X', DeviceType::TABLET ], + 'ifiveX2' => [ 'FNF', 'iFive X2', DeviceType::TABLET ], + 'ifive X2' => [ 'FNF', 'iFive X2', DeviceType::TABLET ], + 'ifiveX3' => [ 'FNF', 'iFive X3', DeviceType::TABLET ], + 'ifive MINI 2' => [ 'FNF', 'iFive Mini 2', DeviceType::TABLET ], + 'IfiveMini3' => [ 'FNF', 'iFive Mini 3', DeviceType::TABLET ], + 'ifive mini 3GS' => [ 'FNF', 'iFive Mini 3GS', DeviceType::TABLET ], + 'IfiveMini4' => [ 'FNF', 'iFive Mini 4', DeviceType::TABLET ], + ], + + 'Freelander I20' => [ 'Freelander', 'i20' ], + 'PD10-DYD' => [ 'Freelander', 'PD10', DeviceType::TABLET ], + + 'SXZ-PD!!' => [ + 'SXZ-PD10' => [ 'Freelander', 'PD10', DeviceType::TABLET ], + 'SXZ-PDX0-01' => [ 'Freelander', 'PD20', DeviceType::TABLET ], + 'SXZ-PDX0-03' => [ 'Freelander', 'PD90', DeviceType::TABLET ], + 'SXZ-PDX-03' => [ 'Freelander', 'PD90', DeviceType::TABLET ], + ], + + 'FTJ152A' => [ 'Freetel', 'Priori 3' ], + 'FTJ161B' => [ 'Freetel', 'Samurai Rei' ], + 'FTJ162E' => [ 'Freetel', 'Raijin' ], + + 'NABI!!' => [ + 'NABI-A' => [ 'Fuhu', 'nabi Kids tablet', DeviceType::TABLET ], + 'NABIJR-NV5A' => [ 'Fuhu', 'nabi Jr.', DeviceType::TABLET ], + 'NABIJR-NV5B' => [ 'Fuhu', 'nabi Jr.', DeviceType::TABLET ], + 'NABI2-NV3D' => [ 'Fuhu', 'nabi 2', DeviceType::TABLET ], + 'NABI2-NV7A' => [ 'Fuhu', 'nabi 2', DeviceType::TABLET ], + 'NABI2-NV7A-D' => [ 'Fuhu', 'nabi 2', DeviceType::TABLET ], + 'NABI2-NV7A-IE' => [ 'Fuhu', 'nabi 2', DeviceType::TABLET ], + 'NABI2-NV7A-UK' => [ 'Fuhu', 'nabi 2', DeviceType::TABLET ], + 'NABI2-NV7A-3D' => [ 'Fuhu', 'nabi 2', DeviceType::TABLET ], + 'NABIXD-NV10A' => [ 'Fuhu', 'nabi XD', DeviceType::TABLET ], + 'NABIXD-NV10B' => [ 'Fuhu', 'nabi XD', DeviceType::TABLET ], + 'NABIXD-NV10C' => [ 'Fuhu', 'nabi XD', DeviceType::TABLET ], + ], + + '[0-9]0[0-9]F!!' => [ + '101F' => [ 'Fujitsu', 'ARROWS A 101F', 'carrier' => 'Softbank' ], + '201F' => [ 'Fujitsu', 'ARROWS A 201F', 'carrier' => 'Softbank' ], + '202F' => [ 'Fujitsu', 'ARROWS A 202F', 'carrier' => 'Softbank' ], + '301F' => [ 'Fujitsu', 'ARROWS A 301F', 'carrier' => 'Softbank' ], + ], + + 'ISW?[0-9]{2,2}F!!' => [ + 'ISW11F' => [ 'Fujitsu', 'ARROWS Z ISW11F', 'carrier' => 'au' ], + 'ISW13F' => [ 'Fujitsu', 'ARROWS Z ISW13F', 'carrier' => 'au' ], + 'IS12F' => [ 'Fujitsu', 'ARROWS ES IS12F', 'carrier' => 'au' ], + ], + + 'F-[0-9]{2,2}[A-Z]!!' => [ + 'F-01D' => [ 'Fujitsu', 'ARROWS Tab LTE F-01D', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'F-01F' => [ 'Fujitsu', 'ARROWS NX F-01F', 'carrier' => 'DoCoMo' ], + 'F-01H' => [ 'Fujitsu', 'arrows Fit F-01H', 'carrier' => 'DoCoMo' ], + 'F-01J' => [ 'Fujitsu', 'arrows NX F-01J', 'carrier' => 'DoCoMo' ], + 'F-01K' => [ 'Fujitsu', 'arrows NX F-01K', 'carrier' => 'DoCoMo' ], + 'F-02E' => [ 'Fujitsu', 'ARROWS X F-02E', 'carrier' => 'DoCoMo' ], + 'F-02F' => [ 'Fujitsu', 'ARROWS Tab F-02F', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'F-02G' => [ 'Fujitsu', 'ARROWS NX F-02G', 'carrier' => 'DoCoMo' ], + 'F-02H' => [ 'Fujitsu', 'arrows NX F-02H', 'carrier' => 'DoCoMo' ], + 'F-02K' => [ 'Fujitsu', 'ARROWS Tab F-02K', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'F-03D' => [ 'Fujitsu', 'ARROWS Kiss F-03D', 'carrier' => 'DoCoMo' ], + 'F-03E' => [ 'Fujitsu', 'ARROWS Kiss with JILL STUART F-03E', 'carrier' => 'DoCoMo' ], + 'F-03F' => [ 'Fujitsu', 'F-03F', 'carrier' => 'Disney Mobile' ], + 'F-03G' => [ 'Fujitsu', 'ARROWS Tab F-03G', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'F-03H' => [ 'Fujitsu', 'arrows SV F-03H', 'carrier' => 'DoCoMo' ], + 'F-03K' => [ 'Fujitsu', 'me F-03K', 'carrier' => 'DoCoMo' ], + 'F-04E' => [ 'Fujitsu', 'ARROWS V F-04E', 'carrier' => 'DoCoMo' ], + 'F-04F' => [ 'Fujitsu', 'Business Smartphone F-04F', 'carrier' => 'DoCoMo' ], + 'F-04G' => [ 'Fujitsu', 'ARROWS NX F-04G', 'carrier' => 'DoCoMo' ], + 'F-04H' => [ 'Fujitsu', 'ARROWS Tab F-04H', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'F-04J' => [ 'Fujitsu', 'らãらãスマートフォン4 F-04J', 'carrier' => 'DoCoMo' ], + 'F-04K' => [ 'Fujitsu', 'ARROWS Be F-04K', 'carrier' => 'DoCoMo' ], + 'F-05D' => [ 'Fujitsu', 'ARROWS X LTE F-05D', 'carrier' => 'DoCoMo' ], + 'F-05E' => [ 'Fujitsu', 'ARROWS Tab F-05E', 'carrier' => 'DoCoMo' ], + 'F-05F' => [ 'Fujitsu', 'ARROWS NX F-05F', 'carrier' => 'DoCoMo' ], + 'F-05G' => [ 'Fujitsu', 'ARROWS F-05G', 'carrier' => 'DoCoMo' ], + 'F-05J' => [ 'Fujitsu', 'ARROWS Be F-05J', 'carrier' => 'DoCoMo' ], + 'F-06E' => [ 'Fujitsu', 'ARROWS NX F-06E', 'carrier' => 'DoCoMo' ], + 'F-06F' => [ 'Fujitsu', 'Easy Smartphone 3 F-06F', 'carrier' => 'DoCoMo' ], + 'F-07D' => [ 'Fujitsu', 'ARROWS μ F-07D', 'carrier' => 'DoCoMo' ], + 'F-07E' => [ 'Fujitsu', 'F-07E', 'carrier' => 'Disney Mobile' ], + 'F-08D' => [ 'Fujitsu', 'F-08D', 'carrier' => 'Disney Mobile' ], + 'F-08E' => [ 'Fujitsu', 'Easy Smartphone 2 F-08E', 'carrier' => 'DoCoMo' ], + 'F-09D' => [ 'Fujitsu', 'ANTEPRIMA F-09D', 'carrier' => 'DoCoMo' ], + 'F-09E' => [ 'Fujitsu', 'Easy Smartphone Premium F-09E', 'carrier' => 'DoCoMo' ], + 'F-10D' => [ 'Fujitsu', 'ARROWS X F-10D', 'carrier' => 'DoCoMo' ], + 'F-11D' => [ 'Fujitsu', 'ARROWS Me F-11D', 'carrier' => 'DoCoMo' ], + 'F-12C' => [ 'Fujitsu', 'GLOBE-TROTTER F-12C', 'carrier' => 'DoCoMo' ], + 'F-12D' => [ 'Fujitsu', 'Easy Smartphone F-12D', 'carrier' => 'DoCoMo' ], + ], + + 'f12[a-z]{3,3}!!' => [ + 'f12arc' => [ 'Fujitsu', 'F12arc' ], + 'f12bob' => [ 'Fujitsu', 'F12bob' ], + ], + + 'FJ[LT][0-9]{2,2}!!' => [ + 'FJL21' => [ 'Fujitsu', 'ARROWS ef FJL21', 'carrier' => 'au' ], + 'FJL22' => [ 'Fujitsu', 'ARROWS Z FJL22', 'carrier' => 'au' ], + 'FJT21' => [ 'Fujitsu', 'ARROWS Tab FJT21', DeviceType::TABLET, 'carrier' => 'au' ], + ], + + 'SZJ-JS101' => [ 'Fujitsu', 'SZJ-JS101' ], + + 'FHMD001' => [ 'Fujitsu', 'FHMD001', DeviceType::HEADSET ], + + 'F-074' => [ 'Fujitsu', 'ARROWS μ F-07D', 'carrier' => 'DoCoMo' ], + 'FJJB091' => [ 'Fujitsu', 'ARROWS μ F-07D', 'carrier' => 'DoCoMo' ], + 'EM01F' => [ 'Fujitsu', 'ARROWS S EM01F', 'carrier' => 'EMOBILE' ], + 'M01' => [ 'Fujitsu', 'ARROWS M01' ], + 'M02' => [ 'Fujitsu', 'ARROWS M02' ], + 'RM02' => [ 'Fujitsu', 'ARROWS M02' ], + 'arrowsM03' => [ 'Fujitsu', 'ARROWS M03' ], + 'M305' => [ 'Fujitsu', 'ARROWS M305' ], + 'M01T' => [ 'Fujitsu', 'ARROWS Tab M01T', DeviceType::TABLET ], + 'M555' => [ 'Fujitsu', 'ARROWS Tab M555', DeviceType::TABLET ], + 'FAR7' => [ 'Fujitsu', 'ARROWS Tab FAR70A', DeviceType::TABLET ], + 'FAR70B' => [ 'Fujitsu', 'ARROWS Tab FAR70B', DeviceType::TABLET ], + 'FARTM933KZ' => [ 'Fujitsu', 'ARROWS Tab M504', DeviceType::TABLET ], + + 'M350' => [ 'Fujitsu', 'Stylistic M350', DeviceType::TABLET ], + 'M532' => [ 'Fujitsu', 'Stylistic M532', DeviceType::TABLET ], + 'M363' => [ 'Fujitsu', 'Stylistic M363', DeviceType::TABLET ], + 'M702' => [ 'Fujitsu', 'Stylistic M702', DeviceType::TABLET ], + 'MH350' => [ 'Fujitsu', 'Stylistic MH350', DeviceType::TABLET ], + 'S01' => [ 'Fujitsu', 'Stylistic S01', DeviceType::TABLET ], + + 'Patio100' => [ 'Fujitsu', 'Patio100', DeviceType::POS ], + 'Patio100 3G' => [ 'Fujitsu', 'Patio100', DeviceType::POS ], + + 'F&U ETB!!' => [ + 'F&U ETB7506' => [ 'F&U', 'ETB7506', DeviceType::TABLET ], + 'F&U ETB7818' => [ 'F&U', 'ETB7818', DeviceType::TABLET ], + 'F&U ETB9543' => [ 'F&U', 'ETB9543', DeviceType::TABLET ], + 'F&U ETB9544' => [ 'F&U', 'ETB9544', DeviceType::TABLET ], + 'F&U ETB1063' => [ 'F&U', 'ETB1063', DeviceType::TABLET ], + 'F&U ETB1065' => [ 'F&U', 'ETB1065', DeviceType::TABLET ], + ], + + 'Asus A10' => [ 'Garmin-Asus', 'Nuvifone A10' ], + 'Monterra' => [ 'Garmin', 'Monterra', DeviceType::GPS ], + + 'Garmin!!' => [ + 'Garminfone' => [ 'Garmin-Asus', 'Garminfone' ], + 'Garmin-Asus A10' => [ 'Garmin-Asus', 'Nuvifone A10' ], + 'Garmin-Asus A50' => [ 'Garmin-Asus', 'Nuvifone A50' ], + ], + + 'nuvi!!' => [ + 'nuvi 3590' => [ 'Garmin', 'Nuvi 3590', DeviceType::GPS ], + 'nuvi 3592' => [ 'Garmin', 'Nuvi 3592', DeviceType::GPS ], + 'nuvi 3595' => [ 'Garmin', 'Nuvi 3595', DeviceType::GPS ], + 'nuvifone A50' => [ 'Garmin-Asus', 'Nuvifone A50' ], + ], + + 'G1-715' => [ 'Gateway', 'G1-715', DeviceType::TABLET ], + 'G1-725' => [ 'Gateway', 'G1-725', DeviceType::TABLET ], + 'N3-2200' => [ 'Gateway', 'N3-2200', DeviceType::TABLET ], + 'TPA60W' => [ 'Gateway', 'TPA60W', DeviceType::TABLET ], + + '(GP-|Geeksphone)!!' => [ + 'GP-KEON' => [ 'Geeksphone', 'Keon'], + 'GP-PEAK' => [ 'Geeksphone', 'Peak'], + 'Geeksphone ZERO' => [ 'Geeksphone', 'ZERO'], + 'Geeksphone ONE' => [ 'Geeksphone', 'ONE'], + ], + + 'Gemei!!' => [ + 'Gemei G2' => [ 'Gemei', 'G2', DeviceType::TABLET ], + 'Gemei G3' => [ 'Gemei', 'G3', DeviceType::TABLET ], + 'gemei G6' => [ 'Gemei', 'G6', DeviceType::TABLET ], + 'Gemei G9' => [ 'Gemei', 'G9', DeviceType::TABLET ], + 'gemei G9T' => [ 'Gemei', 'G9T', DeviceType::TABLET ], + ], + + 'GEM[0-9]{4,4}!!' => [ + 'GEM7008' => [ 'Gemini', 'JoyTab GEM7008', DeviceType::TABLET ], + 'GEM7020' => [ 'Gemini', 'JoyTab GEM7020', DeviceType::TABLET ], + 'GEM7032G-rev2' => [ 'Gemini', 'JoyTab GEM7032', DeviceType::TABLET ], + 'GEM10313BK' => [ 'Gemini', 'JoyTab GEM10313', DeviceType::TABLET ], + 'GEM10313S' => [ 'Gemini', 'JoyTab GEM10313', DeviceType::TABLET ], + ], + + 'GP-431' => [ 'Genesis', 'GP-431' ], + + 'GT-[0-9]{4,4}!!' => [ + 'GT-7200' => [ 'Genesis', 'Tab GT-7200', DeviceType::TABLET ], + 'GT-7204' => [ 'Genesis', 'Tab GT-7204', DeviceType::TABLET ], + 'GT-7204R' => [ 'Genesis', 'Tab GT-7204R', DeviceType::TABLET ], + 'GT-7240' => [ 'Genesis', 'Tab GT-7240', DeviceType::TABLET ], + 'GT-7240R' => [ 'Genesis', 'Tab GT-7240R', DeviceType::TABLET ], + 'GT-7245' => [ 'Genesis', 'Tab GT-7245', DeviceType::TABLET ], + 'GT-7326' => [ 'Genesis', 'Tab GT-7326', DeviceType::TABLET ], + ], + + 'GP-720' => [ 'Genius', 'GP-720', DeviceType::TABLET ], + + 'G9' => [ 'GFive', 'G9' ], + + 'GFIVE!!' => [ + 'GFIVE A5' => [ 'GFive', 'A5' ], + 'GFIVE A800' => [ 'GFive', 'A800' ], + 'GFIVE Aurora(A79)' => [ 'GFive', 'Aurora' ], + 'GFIVE A68' => [ 'GFive', 'Beam' ], + 'GFIVE Blade (F500)' => [ 'GFive', 'Blade' ], + 'GFIVE Bravo' => [ 'GFive', 'Bravo' ], + 'GFIVE Bravo(G95)' => [ 'GFive', 'Bravo' ], + 'GFIVE A77' => [ 'GFive', 'Bravo' ], + 'GFIVE A57' => [ 'GFive', 'Fanse' ], + 'GFIVE Glory' => [ 'GFive', 'Glory' ], + 'GFIVE Glory(A86)' => [ 'GFive', 'Glory' ], + 'GFIVE A86' => [ 'GFive', 'Glory' ], + 'GFIVE Glory Bee(E670)' => [ 'GFive', 'Glory Bee' ], + 'GFIVE Prado' => [ 'GFive', 'Prado' ], + 'GFIVE President A97' => [ 'GFive', 'President' ], + 'GFIVE president(G6)' => [ 'GFive', 'President G6' ], + 'GFIVE President G6 Plus' => [ 'GFive', 'President G6 Plus' ], + 'GFIVE President G6C s' => [ 'GFive', 'President G6c S' ], + 'GFIVE President(G7)' => [ 'GFive', 'President G7' ], + 'GFIVE President(G9)' => [ 'GFive', 'President G9' ], + 'GFIVE G9' => [ 'GFive', 'President G9' ], + 'GFIVE.G9' => [ 'GFive', 'President G9' ], + 'GFIVE President G10 Fashion' => [ 'GFive', 'President G10' ], + 'GFIVE G10 mini' => [ 'GFive', 'President G10 Mini' ], + 'GFIVE President Smart A98' => [ 'GFive', 'President Smart' ], + 'GFIVE President Smart 1' => [ 'GFive', 'President Smart 1' ], + 'GFIVE President Smart 1s' => [ 'GFive', 'President Smart 1s' ], + 'GFIVE President Smart 2' => [ 'GFive', 'President Smart 2' ], + 'GFIVE President Smart 5' => [ 'GFive', 'President Smart 5' ], + 'GFIVE President Smart 6' => [ 'GFive', 'President Smart 6' ], + 'GFIVE President Shark 3' => [ 'GFive', 'President Shark 3' ], + 'GFIVE Spark(A1)' => [ 'GFive', 'Spark' ], + 'GFIVE GPad701' => [ 'GFive', 'GPad 701', DeviceType::TABLET ], + ], + + 'GHIA!!' => [ + 'GHIA 20218P' => [ 'Ghia', 'Any 20218P', DeviceType::TABLET ], + 'GHIA 27154P' => [ 'Ghia', 'Any 27154P', DeviceType::TABLET ], + 'GHIA V2.0 27158N' => [ 'Ghia', 'Any 27158N', DeviceType::TABLET ], + 'GHIA 27214P' => [ 'Ghia', 'Any 27214P', DeviceType::TABLET ], + 'GHIA 27258B' => [ 'Ghia', 'Any 27258B', DeviceType::TABLET ], + 'GHIA 27258N' => [ 'Ghia', 'Any 27258N', DeviceType::TABLET ], + 'GHIA V2.0 27258N' => [ 'Ghia', 'Any 27258N', DeviceType::TABLET ], + 'GHIA 29214P' => [ 'Ghia', 'Any 29214P', DeviceType::TABLET ], + ], + + '(Gsmart|Gigabyte|Rio)!!' => [ + 'GSmart Aku A1' => [ 'Gigabyte', 'GSmart Aku A1' ], + 'GSmart Alto A2' => [ 'Gigabyte', 'GSmart Alto A2' ], + 'GSmart Arty A3' => [ 'Gigabyte', 'GSmart Arty A3' ], + 'GSmart Akta A4' => [ 'Gigabyte', 'GSmart Akta A4' ], + 'GSmart Essence 4' => [ 'Gigabyte', 'GSmart Essence 4' ], + 'GSmart-G1305' => [ 'Gigabyte', 'GSmart G1305' ], + 'GSmart G1310' => [ 'Gigabyte', 'GSmart G1310' ], + 'GSmart G1315!' => [ 'Gigabyte', 'GSmart G1315' ], + 'GSmart G1317!' => [ 'Gigabyte', 'GSmart G1317' ], + 'GSmart G1342' => [ 'Gigabyte', 'GSmart G1342' ], + 'GSmart G1345' => [ 'Gigabyte', 'GSmart G1345' ], + 'GSmart G1355' => [ 'Gigabyte', 'GSmart G1355' ], + 'GSmart G1362' => [ 'Gigabyte', 'GSmart G1362' ], + 'GSmart GS202!' => [ 'Gigabyte', 'GSmart GS202' ], + 'GSmart Guru G1' => [ 'Gigabyte', 'GSmart Guru G1' ], + 'GSmart Maya M1' => [ 'Gigabyte', 'GSmart Maya M1' ], + 'GSmart Maya M1v2' => [ 'Gigabyte', 'GSmart Maya M1 v2' ], + 'GSmart Maya M1 v2' => [ 'Gigabyte', 'GSmart Maya M1 v2' ], + 'GSmart Mika M2' => [ 'Gigabyte', 'GSmart Mika M2' ], + 'GSmart Mika M3' => [ 'Gigabyte', 'GSmart Mika M3' ], + 'GSmart Rio R1' => [ 'Gigabyte', 'GSmart Rio R1' ], + 'GIGABYTE GSmart Rio R1' => [ 'Gigabyte', 'GSmart Rio R1' ], + 'Gigabyte RIO R1' => [ 'Gigabyte', 'GSmart Rio R1' ], + 'Rio R1' => [ 'Gigabyte', 'GSmart Rio R1' ], + 'GSmart Roma R2' => [ 'Gigabyte', 'GSmart Roma R2' ], + 'GSmart Rey R3' => [ 'Gigabyte', 'GSmart Rey R3' ], + 'GSmart Saga S3' => [ 'Gigabyte', 'GSmart Saga S3' ], + 'GSmart Sierra S1' => [ 'Gigabyte', 'GSmart Sierra S1' ], + 'GSmart Tuku T2' => [ 'Gigabyte', 'GSmart Tuku T2' ], + 'GSmart T4' => [ 'Gigabyte', 'GSmart T4' ], + 'Gigabyte TB100' => [ 'Gigabyte', 'TB100', DeviceType::TABLET ], + ], + + 'Gigaset!!' => [ + 'Gigaset GS160' => [ 'Gigaset', 'GS160' ], + 'Gigaset GS170' => [ 'Gigaset', 'GS170' ], + 'Gigaset QV830' => [ 'Gigaset', 'QV830', DeviceType::TABLET ], + 'Gigaset QV831' => [ 'Gigaset', 'QV831', DeviceType::TABLET ], + 'Gigaset QV1030' => [ 'Gigaset', 'QV1030', DeviceType::TABLET ], + ], + + '80-1' => [ 'Gigaset', 'Maxwell 10', DeviceType::DECT ], + 'SL930' => [ 'Gigaset', 'SL930', DeviceType::DECT ], + + '(GIO-)?(GiONEE[- ])?A1$!' => [ 'Gionee', 'A1' ], + '(GIO-)?(GiONEE[- ])?A9$!' => [ 'Gionee', 'A9' ], + '(GIO-)?(GiONEE[- ])?C500!' => [ 'Gionee', 'C500' ], + '(GIO-)?(GiONEE[- ])?C600!' => [ 'Gionee', 'C600' ], + '(GIO-)?(GiONEE[- ])?C610!' => [ 'Gionee', 'C610' ], + '(GIO-)?(GiONEE[- ])?C620!' => [ 'Gionee', 'C620' ], + '(GIO-)?(GiONEE[- ])?C700!' => [ 'Gionee', 'C700' ], + '(GIO-)?(GiONEE[- ])?C800!' => [ 'Gionee', 'C800' ], + '(GIO-)?(GiONEE[- ])?Dream D1!' => [ 'Gionee', 'Dream D1' ], + '(GIO-)?(GiONEE[- ])?E3T!' => [ 'Gionee', 'Elife E3T' ], + '(GIO-)?(GiONEE[- ])?E3$!' => [ 'Gionee', 'Elife E3' ], + 'ELIFE-E3' => [ 'Gionee', 'Elife E3' ], + '(GIO-)?(GiONEE[- ])?E5$!' => [ 'Gionee', 'Elife E5' ], + 'Elife E5' => [ 'Gionee', 'Elife E5' ], + '(GIO-)?(GiONEE[- ])?E6mini!' => [ 'Gionee', 'Elife E6 mini' ], + '(GIO-)?(GiONEE[- ])?E6$!' => [ 'Gionee', 'Elife E6' ], + 'ElifeE6' => [ 'Gionee', 'Elife E6' ], + '(GIO-)?(GiONEE[- ])?E6T$!' => [ 'Gionee', 'Elife E6T' ], + '(GIO-)?(GiONEE[- ])?E7$!' => [ 'Gionee', 'Elife E7' ], + '(GIO-)?(GiONEE[- ])?F103!' => [ 'Gionee', 'F103' ], + '(GIO-)?(GiONEE[- ])?F301!' => [ 'Gionee', 'F301' ], + '(GIO-)?(GiONEE[- ])?GN5001!' => [ 'Gionee', 'GN5001' ], + '(GIO-)?(GiONEE[- ])?GN5002!' => [ 'Gionee', 'GN5002' ], + '(GIO-)?(GiONEE[- ])?GN8001!' => [ 'Gionee', 'GN8001' ], + '(GIO-)?(GiONEE[- ])?GN9000!' => [ 'Gionee', 'GN9000' ], + '(GIO-)?(GiONEE[- ])?GN9001!' => [ 'Gionee', 'GN9001' ], + '(GIO-)?(GiONEE[- ])?GN9002!' => [ 'Gionee', 'GN9002' ], + '(GIO-)?(GiONEE[- ])?GN9004!' => [ 'Gionee', 'GN9004' ], + '(GIO-)?(GiONEE[- ])?GN9005!' => [ 'Gionee', 'GN9005' ], + '(GIO-)?(GiONEE[- ])?GN9006!' => [ 'Gionee', 'GN9006' ], + '(GIO-)?(GiONEE[- ])?GN9007!' => [ 'Gionee', 'GN9007' ], + '(GIO-)?(GiONEE[- ])?GN9008!' => [ 'Gionee', 'GN9008' ], + '(GIO-)?(GiONEE[- ])?GN9010!' => [ 'Gionee', 'GN9010' ], + '(GIO-)?(GiONEE[- ])?GN100T!' => [ 'Gionee', 'GN100T' ], + '(GIO-)?(GiONEE[- ])?GN100!' => [ 'Gionee', 'GN100' ], + '(GIO-)?(GiONEE[- ])?GN105!' => [ 'Gionee', 'GN105' ], + '(GIO-)?(GiONEE[- ])?GN106!' => [ 'Gionee', 'GN106' ], + '(GIO-)?(GiONEE[- ])?GN107!' => [ 'Gionee', 'GN107' ], + '(GIO-)?(GiONEE[- ])?GN108!' => [ 'Gionee', 'GN108' ], + '(GIO-)?(GiONEE[- ])?GN109!' => [ 'Gionee', 'GN109' ], + '(GIO-)?(GiONEE[- ])?GN135!' => [ 'Gionee', 'GN135' ], + '(GIO-)?(GiONEE[- ])?GN136!' => [ 'Gionee', 'GN136' ], + '(GIO-)?(GiONEE[- ])?GN137!' => [ 'Gionee', 'GN137' ], + '(GIO-)?(GiONEE[- ])?GN139!' => [ 'Gionee', 'GN139' ], + '(GIO-)?(GiONEE[- ])?GN150!' => [ 'Gionee', 'GN150' ], + '(GIO-)?(GiONEE[- ])?GN151!' => [ 'Gionee', 'GN151' ], + '(GIO-)?(GiONEE[- ])?GN152!' => [ 'Gionee', 'GN152' ], + '(GIO-)?(GiONEE[- ])?GN160T!' => [ 'Gionee', 'GN160T' ], + '(GIO-)?(GiONEE[- ])?GN160!' => [ 'Gionee', 'GN160' ], + '(GIO-)?(GiONEE[- ])?GN168T!' => [ 'Gionee', 'GN168T' ], + '(GIO-)?(GiONEE[- ])?GN170!' => [ 'Gionee', 'GN170' ], + '(GIO-)?(GiONEE[- ])?GN180!' => [ 'Gionee', 'GN180' ], + '(GIO-)?(GiONEE[- ])?GN181!' => [ 'Gionee', 'GN181' ], + '(GIO-)?(GiONEE[- ])?GN200!' => [ 'Gionee', 'GN200' ], + '(GIO-)?(GiONEE[- ])?GN205!' => [ 'Gionee', 'GN205' ], + '(GIO-)?(GiONEE[- ])?GN210!' => [ 'Gionee', 'GN210' ], + '(GIO-)?(GiONEE[- ])?GN305!' => [ 'Gionee', 'GN305' ], + '(GIO-)?(GiONEE[- ])?GN320!' => [ 'Gionee', 'GN320' ], + '(GIO-)?(GiONEE[- ])?GN360!' => [ 'Gionee', 'GN360' ], + '(GIO-)?(GiONEE[- ])?GN380!' => [ 'Gionee', 'GN380' ], + '(GIO-)?(GiONEE[- ])?GN600!' => [ 'Gionee', 'GN600' ], + '(GIO-)?(GiONEE[- ])?GN700T!' => [ 'Gionee', 'GN700T' ], + '(GIO-)?(GiONEE[- ])?GN700W!' => [ 'Gionee', 'GN700W' ], + '(GIO-)?(GiONEE[- ])?GN705T!' => [ 'Gionee', 'GN705T' ], + '(GIO-)?(GiONEE[- ])?GN705W!' => [ 'Gionee', 'GN705W' ], + '(GIO-)?(GiONEE[- ])?GN706L!' => [ 'Gionee', 'GN706L' ], + '(GIO-)?(GiONEE[- ])?GN708T!' => [ 'Gionee', 'GN708T' ], + 'GN 708T' => [ 'Gionee', 'GN708T' ], + '(GIO-)?(GiONEE[- ])?GN708W!' => [ 'Gionee', 'GN708W' ], + 'GPLUS GN708W' => [ 'Gionee', 'GN708W' ], + '(GIO-)?(GiONEE[- ])?GN787!' => [ 'Gionee', 'GN787' ], + '(GIO-)?(GiONEE[- ])?GN800!' => [ 'Gionee', 'GN800' ], + '(GIO-)?(GiONEE[- ])?GN810!' => [ 'Gionee', 'GN810' ], + '(GIO-)?(GiONEE[- ])?GN818T!' => [ 'Gionee', 'GN818T' ], + '(GIO-)?(GiONEE[- ])?GN858!' => [ 'Gionee', 'GN858' ], + '(GIO-)?(GiONEE[- ])?GN868!' => [ 'Gionee', 'GN868' ], + '(GIO-)?(GiONEE[- ])?GN878!' => [ 'Gionee', 'GN878' ], + 'Gionee M1' => [ 'Gionee', 'M1' ], + 'Gionee M2' => [ 'Gionee', 'M2' ], + 'Gionee-M2' => [ 'Gionee', 'M2' ], + 'Gionee M3S' => [ 'Gionee', 'Maraton M3s' ], + 'Gionee M5' => [ 'Gionee', 'Maraton M5' ], + 'M5 lite' => [ 'Gionee', 'Maraton M5 Lite' ], + 'GPLUS N809' => [ 'Gionee', 'N809' ], + '(GIO-)?(GiONEE[- ])?S101!' => [ 'Gionee', 'S101' ], + 'GiONEE TD500' => [ 'Gionee', 'TD500' ], + '(GIO-)?(GiONEE[- ])?V182!' => [ 'Gionee', 'V182' ], + '(GIO-)?(GiONEE[- ])?V185!' => [ 'Gionee', 'V185' ], + '(GIO-)?(GiONEE[- ])?V188!' => [ 'Gionee', 'V188' ], + '(GIO-)?(GiONEE[- ])?W800!' => [ 'Gionee', 'W800' ], + '(GIO-)?(GiONEE[- ])?X817!' => [ 'Gionee', 'X817' ], + '(GIO-)?(GiONEE[- ])?Ctrl V1!' => [ 'Gionee', 'CTRL V1' ], + '(GIO-)?(GiONEE[- ])?Ctrl V2!' => [ 'Gionee', 'CTRL V2' ], + '(GIO-)?(GiONEE[- ])?Ctrl V3!' => [ 'Gionee', 'CTRL V3' ], + '(GIO-)?(GiONEE[- ])?Ctrl V4!' => [ 'Gionee', 'CTRL V4' ], + '(GIO-)?(GiONEE[- ])?Ctrl V5!' => [ 'Gionee', 'CTRL V5' ], + '(GIO-)?(GiONEE[- ])?Pioneer P1!' => [ 'Gionee', 'Pioneer P1' ], + '(GIO-)?(GiONEE[- ])?Pioneer P2!' => [ 'Gionee', 'Pioneer P2' ], + '(GIO-)?(GiONEE[- ])?Pioneer P3!' => [ 'Gionee', 'Pioneer P3' ], + '(GIO-)?(GiONEE[- ])?Pioneer P4!' => [ 'Gionee', 'Pioneer P4' ], + 'Gionee P3' => [ 'Gionee', 'Pioneer P3' ], + 'Gionee P4' => [ 'Gionee', 'Pioneer P4' ], + 'P4' => [ 'Gionee', 'Pioneer P4' ], + 'GIONEE P7' => [ 'Gionee', 'Pioneer P7' ], + 'GiONEE S7' => [ 'Gionee', 'Elife S7' ], + 'GIONEE S10' => [ 'Gionee', 'S10' ], + '(GIO-)?(GiONEE[- ])?Gpad G1!' => [ 'Gionee', 'Gpad G1' ], + '(GIO-)?(GiONEE[- ])?Gpad G2!' => [ 'Gionee', 'Gpad G2' ], + '(GIO-)?(GiONEE[- ])?Gpad G3!' => [ 'Gionee', 'Gpad G3' ], + 'Gpad G5' => [ 'Gionee', 'Gpad G5' ], + 'GL-900' => [ 'GlobusGPS', 'GL-900', DeviceType::GPS ], + + 'GLX!!' => [ + 'GLX Jet' => [ 'GLX', 'Jet', DeviceType::TABLET ], + 'GLX Luster a' => [ 'GLX', 'Luster', DeviceType::TABLET ], + 'GLX SpiderI' => [ 'GLX', 'Spider', DeviceType::TABLET ], + ], + + 'GOCL!!' => [ + 'GOCLEVER ANDROID BOX 500' => [ 'Goclever', 'Android Box 500', ], + 'GOCLEVER' => [ 'Goclever', 'TAB', DeviceType::TABLET ], + 'GOCLEVER TAB A73' => [ 'Goclever', 'TAB A73', DeviceType::TABLET ], + 'GOCLEVER TAB A93' => [ 'Goclever', 'TAB A93', DeviceType::TABLET ], + 'GOCLEVER TAB A93.2' => [ 'Goclever', 'TAB A93', DeviceType::TABLET ], + 'GOCLEVER TAB A101' => [ 'Goclever', 'TAB A101', DeviceType::TABLET ], + 'GOCLEVER TAB A103' => [ 'Goclever', 'TAB A103', DeviceType::TABLET ], + 'GOCLEVER A103' => [ 'Goclever', 'TAB A103', DeviceType::TABLET ], + 'GOCLEVER TAB A104!' => [ 'Goclever', 'TAB A104', DeviceType::TABLET ], + 'GOCLEVER TAB A971' => [ 'Goclever', 'TAB A971', DeviceType::TABLET ], + 'GOCLEVER TAB A972BK' => [ 'Goclever', 'TAB A972', DeviceType::TABLET ], + 'GOCLEVER TAB I71' => [ 'Goclever', 'TAB I71', DeviceType::TABLET ], + 'GOCLEVER TAB M703G' => [ 'Goclever', 'TAB M703G', DeviceType::TABLET ], + 'GOCLEVER TAB M713G' => [ 'Goclever', 'TAB M713G', DeviceType::TABLET ], + 'GOCLEVER TAB M723G' => [ 'Goclever', 'TAB M723G', DeviceType::TABLET ], + 'GOCLEVER TAB M813G' => [ 'Goclever', 'TAB M813G', DeviceType::TABLET ], + 'GOCLEVER TAB R70' => [ 'Goclever', 'TAB R70', DeviceType::TABLET ], + 'GOCLEVER TAB R76.1' => [ 'Goclever', 'TAB R76', DeviceType::TABLET ], + 'GOCLEVER TAB R104' => [ 'Goclever', 'TAB R104', DeviceType::TABLET ], + 'GOCLEVER TAB R106' => [ 'Goclever', 'TAB R106', DeviceType::TABLET ], + 'GOCLEVER TAB T75' => [ 'Goclever', 'TAB T75', DeviceType::TABLET ], + 'GOCLEVER TAB T76' => [ 'Goclever', 'TAB T76', DeviceType::TABLET ], + 'GOCLEVER TAB 9300' => [ 'Goclever', 'TAB 9300', DeviceType::TABLET ], + 'GOCLM7000KD' => [ 'Goclever', 'Terra 70', DeviceType::TABLET ], + 'GOCLEVER HYBRID' => [ 'Goclever', 'Hybrid', DeviceType::TABLET ], + 'GOCLEVER NETBOOK I102' => [ 'Goclever', 'Netbook I102' ], + 'GOCLEVER NETBOOK R103' => [ 'Goclever', 'Netbook R103' ], + ], + + 'ARIES 101' => [ 'Goclever', 'ARIES 101', DeviceType::TABLET ], + 'ARIES 785' => [ 'Goclever', 'ARIES 785', DeviceType::TABLET ], + 'INSIGNIA 5' => [ 'Goclever', 'INSIGNIA 5' ], + 'INSIGNIA 5X' => [ 'Goclever', 'INSIGNIA 5X' ], + 'QUANTUM 4' => [ 'Goclever', 'QUANTUM 4' ], + 'QUANTUM 700m' => [ 'Goclever', 'QUANTUM 700M' ], + 'QUANTUM 1010N' => [ 'Goclever', 'QUANTUM 1010N' ], + + 'GO Live!!' => [ + 'GO Live S1' => [ 'GoLive', 'S1' ], + 'GO Live Dual Core' => [ 'GoLive', 'Dual Core' ], + ], + + 'GOOPHONE!!' => [ + 'GOOPHONE i5C' => [ 'Goophone', 'i5C' ], + 'GOOPHONE i5S' => [ 'Goophone', 'i5S' ], + 'Goophone i9' => [ 'Goophone', 'i9' ], + 'GOOPHONE M3+' => [ 'Goophone', 'M3+' ], + 'GooPhone S5 Pro' => [ 'Goophone', 'S5 Pro' ], + 'GOOPHONE X1' => [ 'Goophone', 'X1' ], + 'GOOPHONE X7' => [ 'Goophone', 'X7' ], + ], + + 'CHONG!!' => [ + 'GHONG T618' => [ 'Guohong', 'T618' ], + 'GHONGV10' => [ 'Guohong', 'V10' ], + 'GHONGV12' => [ 'Guohong', 'V12' ], + 'GHONG W100' => [ 'Guohong', 'W100' ], + ], + + 'M758A' => [ 'Gpad', 'M758A', DeviceType::TABLET ], + + 'G0215D' => [ 'Gree', 'G0215D' ], + + 'GO !!' => [ + 'GO C2' => [ 'GreenOrange', 'C2' ], + 'GO M1' => [ 'GreenOrange', 'M1' ], + 'GO M2' => [ 'GreenOrange', 'M2' ], + 'GO M2S' => [ 'GreenOrange', 'M2S' ], + 'GO M3' => [ 'GreenOrange', 'M3' ], + 'GO N1' => [ 'GreenOrange', 'N1' ], + 'GO N1-Y' => [ 'GreenOrange', 'N1-Y' ], + 'GO N1S' => [ 'GreenOrange', 'N1S' ], + 'GO N2' => [ 'GreenOrange', 'N2' ], + 'GO N3S' => [ 'GreenOrange', 'N3S' ], + 'GO NX' => [ 'GreenOrange', 'NX' ], + 'GO S2' => [ 'GreenOrange', 'S2' ], + ], + + 'GR-TB!!' => [ + 'GR-TB7' => [ 'Grundig', 'Style Tab GR-TB7', DeviceType::TABLET ], + 'GR-TB10S' => [ 'Grundig', 'Style Tab GR-TB10S', DeviceType::TABLET ], + ], + + 'GVON 898' => [ 'Gvon', 'Aero 898' ], + + '(Haier[- ])?H[ETW]- ?[A-Z][0-9]!!' => [ + '(Haier[- ])?HE-E80!' => [ 'Haier', 'E80' ], + '(Haier[- ])?HE-E617!' => [ 'Haier', 'E617' ], + '(Haier[- ])?HE-E700!' => [ 'Haier', 'E700' ], + '(Haier[- ])?HE-E760!' => [ 'Haier', 'E760' ], + '(Haier[- ])?HT-I600!' => [ 'Haier', 'I600' ], + '(Haier[- ])?HT-I617!' => [ 'Haier', 'I617' ], + '(Haier[- ])?HT-I619!' => [ 'Haier', 'I619' ], + '(Haier[- ])?HT-I710!' => [ 'Haier', 'I710' ], + '(Haier[- ])?HT-I736!' => [ 'Haier', 'I736' ], + '(Haier[- ])?HT-I756!' => [ 'Haier', 'I756' ], + '(Haier[- ])?HT-I816!' => [ 'Haier', 'I816' ], + '(Haier[- ])?HT-I860!' => [ 'Haier', 'I860' ], + '(Haier[- ])?HT-I928!' => [ 'Haier', 'I928' ], + '(Haier[- ])?HW-N66W!' => [ 'Haier', 'N66W' ], + '(Haier[- ])?HW-N86W!' => [ 'Haier', 'N86W' ], + '(Haier[- ])?(HW-)?N88W!' => [ 'Haier', 'N88W' ], + '(Haier[- ])?HW-N620E!' => [ 'Haier', 'N620E' ], + '(Haier[- ])?HW-N800!' => [ 'Haier', 'N800' ], + '(Haier[- ])?(HW-)?W617!' => [ 'Haier', 'W617' ], + '(Haier[- ])?(HW-)?W716!' => [ 'Haier', 'W716' ], + '(Haier[- ])?(HW-)?W718!' => [ 'Haier', 'W718' ], + '(Haier[- ])?HW-W820!' => [ 'Haier', 'W820' ], + '(Haier[- ])?HW-W850!' => [ 'Haier', 'W850' ], + '(Haier[- ])?HW-W860!' => [ 'Haier', 'W860' ], + '(Haier[- ])?HW-W910!' => [ 'Haier', 'W910' ], + ], + + 'Haier-W700' => [ 'Haier', 'W700' ], + 'W757' => [ 'Haier', 'W757' ], + 'Haier-SY0880' => [ 'Haier', 'SY0880' ], + '(LE[0-9]{2,2}[BMU][0-9]{4,4}[A-Z]+)!' => [ 'Haier', '$1', DeviceType::TELEVISION ], + + 'Zio P2' => [ 'Haier', 'Zio P2' ], + + 'PAD[0-9]{3,3}!!' => [ + 'PAD511' => [ 'Haier', 'Pad 511', DeviceType::TABLET ], + 'PAD711' => [ 'Haier', 'Pad 711', DeviceType::TABLET ], + 'PAD722' => [ 'Haier', 'Pad 722', DeviceType::TABLET ], + 'PAD821' => [ 'Haier', 'Pad 821', DeviceType::TABLET ], + 'PAD822' => [ 'Haier', 'Pad 822', DeviceType::TABLET ], + ], + + 'I9220' => [ 'Haipai', 'I9220' ], + 'GT-i9377' => [ 'Haipai', 'I9377' ], + 'X710d' => [ 'Haipai', 'X710D' ], + 'X720D' => [ 'Haipai', 'X720D' ], + + 'SN[0-9]!!' => [ + 'SN10T1' => [ 'HANNspree', 'HANNSpad SN10T1', DeviceType::TABLET ], + 'SN10T2' => [ 'HANNspree', 'HANNSpad SN10T2', DeviceType::TABLET ], + 'SN14T71' => [ 'HANNspree', 'HANNSpad SN14T71', DeviceType::TABLET ], + 'SN97T41W' => [ 'HANNspree', 'HANNSpad SN97T41W', DeviceType::TABLET ], + 'SN1AT71W(B)' => [ 'HANNspree', 'HANNSpad SN1AT71WB', DeviceType::TABLET ], + ], + + 'Hasee E50 S1' => [ 'Hasee', 'E50 S1' ], + 'Hasee H45 T2' => [ 'Hasee', 'H45 T2' ], + 'Hasee W50 T2' => [ 'Hasee', 'W50 T2' ], + 'Hasee-X50TS' => [ 'Hasee', 'X50 TS' ], + 'HannsComb' => [ 'HANNspree', 'HANNSpad', DeviceType::TABLET ], + 'Hannspadd' => [ 'HANNspree', 'HANNSpad', DeviceType::TABLET ], + + 'U1' => [ 'HCL', 'ME U1', DeviceType::TABLET ], + 'X1' => [ 'HCL', 'ME X1', DeviceType::TABLET ], + 'Y2' => [ 'HCL', 'ME Y2', DeviceType::TABLET ], + 'Connect-2G-2.0' => [ 'HCL', 'ME Connect 2G 2.0', DeviceType::TABLET ], + 'H701' => [ 'Hedy', 'H701' ], + + 'HEDY!!' => [ + 'HEDY H701' => [ 'Hedy', 'H701' ], + 'HEDY H712' => [ 'Hedy', 'H712' ], + 'HEDY H770' => [ 'Hedy', 'H770' ], + 'HEDY S801' => [ 'Hedy', 'S801' ], + 'HEDY S803' => [ 'Hedy', 'S803' ], + 'HEDY T700' => [ 'Hedy', 'T700' ], + ], + + '9300+' => [ 'Hero', '9300+' ], + 'H2000+' => [ 'Hero', 'H2000+' ], + 'H7100' => [ 'Hero', 'H7100' ], + 'H7500+' => [ 'Hero', 'H7500+' ], + 'HERO H7500+' => [ 'Hero', 'H7500+' ], + 'H9500' => [ 'Hero', 'H9500' ], + 'MID Ser(ai|ia)ls!' => [ 'Herotab', 'C8', DeviceType::TABLET ], + + '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!' => [ + 'Alpha Ice' => [ 'Highscreen', 'Alpha Ice' ], + 'Alpha GT' => [ 'Highscreen', 'Alpha GT' ], + 'Alpha GTR' => [ 'Highscreen', 'Alpha GTR' ], + 'HIGHSCREEN GTR' => [ 'Highscreen', 'Alpha GTR' ], + 'Alpha GTX' => [ 'Highscreen', 'Alpha GTX' ], + 'Alpha R' => [ 'Highscreen', 'Alpha R' ], + 'Alpha Rage' => [ 'Highscreen', 'Alpha Rage' ], + 'Bay' => [ 'Highscreen', 'Bay' ], + 'HighScreen Boost' => [ 'Highscreen', 'Boost' ], + 'Boost II' => [ 'Highscreen', 'Boost 2' ], + 'Boost IIse' => [ 'Highscreen', 'Boost 2 SE' ], + 'Highscreen Boost 2 SE' => [ 'Highscreen', 'Boost 2 SE' ], + 'Boost3' => [ 'Highscreen', 'Boost 3' ], + 'Boost 3 SE' => [ 'Highscreen', 'Boost 3 SE' ], + 'Cosmo' => [ 'Highscreen', 'Cosmo', DeviceType::TABLET ], + 'COSMO DUO' => [ 'Highscreen', 'Cosmo Duo', DeviceType::TABLET ], + 'Explosion' => [ 'Highscreen', 'Explosion' ], + 'HIGHSCREEN Jet Duo' => [ 'Highscreen', 'Jet Duo', DeviceType::TABLET ], + 'PowerFive' => [ 'Highscreen', 'Power Five' ], + 'PowerFour' => [ 'Highscreen', 'Power Four' ], + 'Power Ice' => [ 'Highscreen', 'Power Ice' ], + 'Highscreen power ice evo' => [ 'Highscreen', 'Power Ice Evo' ], + 'Power Rage' => [ 'Highscreen', 'Power Rage' ], + 'Prime L' => [ 'Highscreen', 'Prime L' ], + 'Highscreen Spark' => [ 'Highscreen', 'Spark' ], + 'ZeraF' => [ 'Highscreen', 'Zera F' ], + 'Zera F' => [ 'Highscreen', 'Zera F' ], + 'Zera f rev.S' => [ 'Highscreen', 'Zera F' ], + 'Zera S' => [ 'Highscreen', 'Zera S' ], + 'Zera S Rev.S' => [ 'Highscreen', 'Zera S' ], + 'Zera-S-Power' => [ 'Highscreen', 'Zera S Power' ], + 'Zera U' => [ 'Highscreen', 'Zera U' ], + ], + + 'HLV-T!!' => [ + 'HLV-T701' => [ 'Hi-Level', 'HLV-T701', DeviceType::TABLET ], + 'HLV-T702' => [ 'Hi-Level', 'HLV-T702', DeviceType::TABLET ], + 'HLV-T704' => [ 'Hi-Level', 'HLV-T704', DeviceType::TABLET ], + 'HLV-T707' => [ 'Hi-Level', 'HLV-T707', DeviceType::TABLET ], + 'HLV-T1001W' => [ 'Hi-Level', 'HLV-T1001W', DeviceType::TABLET ], + 'HLV-T1002W' => [ 'Hi-Level', 'HLV-T1002W', DeviceType::TABLET ], + 'HLV-T9701' => [ 'Hi-Level', 'HLV-T9701', DeviceType::TABLET ], + 'HLV-TN75' => [ 'Hi-Level', 'HLV-TN75', DeviceType::TABLET ], + ], + + 'Himax Pure' => [ 'Himax', 'Pure' ], + 'PURE III' => [ 'Himax', 'Pure III' ], + + 'HIKe!!' => [ + 'HIKe 716' => [ 'HIKe', 'Q1' ], + 'HIKe 818' => [ 'HIKe', 'Pandora 2' ], + 'HIKe 828' => [ 'HIKe', 'X1' ], + 'HIKe 828A' => [ 'HIKe', 'X1' ], + 'HIKe 848' => [ 'HIKe', 'X2' ], + 'HIKe 868' => [ 'HIKe', 'Z1' ], + ], + + 'HILIVE H7' => [ 'Hilive', 'H7' ], + + 'HS-[0-9]{1,2}DTB!!' => [ + 'HS-7DTB4!' => [ 'Hipstreet', 'Titan 7"', DeviceType::TABLET ], + 'HS-7DTB25!' => [ 'Hipstreet', 'Titan 2 7"', DeviceType::TABLET ], + 'HS-7DTB26!' => [ 'Hipstreet', 'Titan+ 7"', DeviceType::TABLET ], + 'HS-7DTB27!' => [ 'Hipstreet', 'Titan+ 7"', DeviceType::TABLET ], + 'HS-7DTB29!' => [ 'Hipstreet', 'Astro 7"', DeviceType::TABLET ], + 'HS-7DTB39!' => [ 'Hipstreet', 'Titan 2 7"', DeviceType::TABLET ], + 'HS-7DTB5!' => [ 'Hipstreet', 'Nova 7"', DeviceType::TABLET ], + 'HS-7DTB6!' => [ 'Hipstreet', 'Aurora 7"', DeviceType::TABLET ], + 'HS-785TB2!' => [ 'Hipstreet', 'Hyperion 7"', DeviceType::TABLET ], + 'HS-785TB3!' => [ 'Hipstreet', 'i8', DeviceType::TABLET ], + 'HS-8DTB!' => [ 'Hipstreet', 'Flash 8"', DeviceType::TABLET ], + 'HS-9DTB4!' => [ 'Hipstreet', 'Flare 9"', DeviceType::TABLET ], + 'HS-9DTB7!' => [ 'Hipstreet', 'Flare 2 9"', DeviceType::TABLET ], + 'HS-9DTB37!' => [ 'Hipstreet', 'Flare 3 9"', DeviceType::TABLET ], + 'HS-10DTB2!' => [ 'Hipstreet', 'Equinox 10"', DeviceType::TABLET ], + 'HS-10DTB4!' => [ 'Hipstreet', 'Equinox 4 10"', DeviceType::TABLET ], + 'HS-10DTB5!' => [ 'Hipstreet', 'Spectrum 10"', DeviceType::TABLET ], + 'HS-10DTB8!' => [ 'Hipstreet', 'Equinox 3 10"', DeviceType::TABLET ], + 'HS-10DTB12!' => [ 'Hipstreet', 'Phoenix 10"', DeviceType::TABLET ], + ], + + 'HS-[EFHITUX][0-9]!!' => [ + 'HS-X1' => [ 'Hisense', 'X1' ], + 'HS-X5T' => [ 'Hisense', 'X5T' ], + 'HS-X6C' => [ 'Hisense', 'X6C' ], + 'HS-X8C' => [ 'Hisense', 'X8C' ], + 'HS-X8T' => [ 'Hisense', 'X8T' ], + 'HS-U8' => [ 'Hisense', 'U8' ], + 'HS-U9' => [ 'Hisense', 'U9' ], + 'HS-U98' => [ 'Hisense', 'U98' ], + 'HS-U609' => [ 'Hisense', 'U609' ], + 'HS-U800' => [ 'Hisense', 'U800' ], + 'HS-U820' => [ 'Hisense', 'U820' ], + 'HS-U850' => [ 'Hisense', 'U850' ], + 'HS-U860' => [ 'Hisense', 'U860' ], + 'HS-U909' => [ 'Hisense', 'U909' ], + 'HS-U909B' => [ 'Hisense', 'U909B' ], + 'HS-U912' => [ 'Hisense', 'U912' ], + 'HS-U912C' => [ 'Hisense', 'U912C' ], + 'HS-U930' => [ 'Hisense', 'U930' ], + 'HS-U936' => [ 'Hisense', 'U936' ], + 'HS-U939' => [ 'Hisense', 'U939' ], + 'HS-U950' => [ 'Hisense', 'U950' ], + 'HS-U958' => [ 'Hisense', 'U958' ], + 'HS-U960Q' => [ 'Hisense', 'U960' ], + 'HS-U961' => [ 'Hisense', 'U961' ], + 'HS-U966' => [ 'Hisense', 'U966' ], + 'HS-U970' => [ 'Hisense', 'U970' ], + 'HS-U971' => [ 'Hisense', 'U971' ], + 'HS-U978' => [ 'Hisense', 'U978' ], + 'HS-U980' => [ 'Hisense', 'U980' ], + 'HS-U988' => [ 'Hisense', 'U988' ], + 'HS-T9' => [ 'Hisense', 'T9' ], + 'HS-T92' => [ 'Hisense', 'T92' ], + 'HS-T96' => [ 'Hisense', 'T96' ], + 'HS-T818' => [ 'Hisense', 'T818' ], + 'HS-T820' => [ 'Hisense', 'T820' ], + 'HS-T830' => [ 'Hisense', 'T830' ], + 'HS-T909' => [ 'Hisense', 'T909' ], + 'HS-T912' => [ 'Hisense', 'T912' ], + 'HS-T928' => [ 'Hisense', 'T928' ], + 'HS-T930' => [ 'Hisense', 'T930' ], + 'HS-T950' => [ 'Hisense', 'T950' ], + 'HS-T958' => [ 'Hisense', 'T958' ], + 'HS-T959' => [ 'Hisense', 'T959' ], + 'HS-T959S1' => [ 'Hisense', 'T959' ], + 'HS-T967' => [ 'Hisense', 'T967' ], + 'HS-T968' => [ 'Hisense', 'T968' ], + 'HS-T970' => [ 'Hisense', 'T970' ], + 'HS-T978' => [ 'Hisense', 'T978' ], + 'HS-I630T' => [ 'Hisense', 'I630T' ], + 'HS-H800T' => [ 'Hisense', 'H800T' ], + 'HS-F1' => [ 'Hisense', 'F1' ], + 'HS-F5180' => [ 'Hisense', 'F5180' ], + 'HS-E86' => [ 'Hisense', 'E86' ], + 'HS-E200T' => [ 'Hisense', 'E200T' ], + 'HS-E260T' => [ 'Hisense', 'E260T' ], + 'HS-E600M' => [ 'Hisense', 'E600M' ], + 'HS-E620M' => [ 'Hisense', 'E620M' ], + 'HS-E820' => [ 'Hisense', 'E820' ], + 'HS-E830' => [ 'Hisense', 'E830' ], + 'HS-E860' => [ 'Hisense', 'E860' ], + 'HS-E909' => [ 'Hisense', 'E909' ], + 'HS-E910' => [ 'Hisense', 'E910' ], + 'HS-E912!' => [ 'Hisense', 'E912' ], + 'HS-E913' => [ 'Hisense', 'E913' ], + 'HS-E917' => [ 'Hisense', 'E917' ], + 'HS-E920' => [ 'Hisense', 'E920' ], + 'HS-E926' => [ 'Hisense', 'E926' ], + 'HS-E930' => [ 'Hisense', 'E930' ], + 'HS-E936' => [ 'Hisense', 'E936' ], + 'HS-E956' => [ 'Hisense', 'E956' ], + 'HS-E956Q' => [ 'Hisense', 'E956' ], + 'HS-E968' => [ 'Hisense', 'E968' ], + ], + + 'HS-E[GT][0-9]{3,3}!!' => [ + 'HS-EG870' => [ 'Hisense', 'EG870' ], + 'HS-EG900' => [ 'Hisense', 'EG900' ], + 'HS-EG901' => [ 'Hisense', 'EG901' ], + 'HS-EG902' => [ 'Hisense', 'EG902' ], + 'HS-EG906' => [ 'Hisense', 'EG906' ], + 'HS-EG909' => [ 'Hisense', 'EG909' ], + 'HS-EG916' => [ 'Hisense', 'EG916' ], + 'HS-EG929' => [ 'Hisense', 'EG929' ], + 'HS-EG936D' => [ 'Hisense', 'EG936' ], + 'HS-EG939' => [ 'Hisense', 'EG939' ], + 'HS-EG950' => [ 'Hisense', 'EG950' ], + 'HS-EG958' => [ 'Hisense', 'EG958' ], + 'HS-EG966' => [ 'Hisense', 'EG966' ], + 'HS-EG970' => [ 'Hisense', 'EG970' ], + 'HS-EG971' => [ 'Hisense', 'EG971' ], + 'HS-EG978' => [ 'Hisense', 'EG978' ], + 'HS-EG980' => [ 'Hisense', 'EG980' ], + 'HS-EG981' => [ 'Hisense', 'EG981' ], + 'HS-ET919' => [ 'Hisense', 'ET919' ], + ], + + '(HS-)?Hisense!!' => [ + 'Hisense C1' => [ 'Hisense', 'C1' ], + 'Hisense-U8' => [ 'Hisense', 'U8' ], + 'Hisense U980' => [ 'Hisense', 'U980' ], + 'Hisense T92' => [ 'Hisense', 'T92' ], + 'Hisense I639T' => [ 'Hisense', 'I639T' ], + 'Hisense I639M' => [ 'Hisense', 'I639M' ], + 'Hisense-E360M' => [ 'Hisense', 'E360M' ], + 'Hisense E602M' => [ 'Hisense', 'E602M' ], + 'Hisense HS-E910' => [ 'Hisense', 'E910' ], + 'Hisense EG909' => [ 'Hisense', 'EG909' ], + 'HS-Hisense F20T' => [ 'Hisense', 'F20T' ], + 'Hisense F31' => [ 'Hisense', 'F31' ], + 'HS-Hisense I632T' => [ 'Hisense', 'I632T' ], + 'HS-Hisense I635T' => [ 'Hisense', 'I635T' ], + 'HS-Hisense I639T' => [ 'Hisense', 'I639T' ], + 'HS-Hisense E602T' => [ 'Hisense', 'E602T' ], + 'HS-Hisense E621T' => [ 'Hisense', 'E621T' ], + 'HS-Hisense E625T' => [ 'Hisense', 'E625T' ], + 'HS-Hisense F21T' => [ 'Hisense', 'F21T' ], + 'Hisense M30T' => [ 'Hisense', 'M30T' ], + ], + + 'T92' => [ 'Hisense', 'T92' ], + 'E860' => [ 'Hisense', 'E860' ], + 'EG98' => [ 'Hisense', 'EG98' ], + 'HS-EG98' => [ 'Hisense', 'EG98' ], + 'EG680' => [ 'Hisense', 'EG680' ], + 'HS U978' => [ 'Hisense', 'U978' ], + 'AD683G' => [ 'Hisense', 'EG909' ], + 'EG968B' => [ 'Hisense', 'EG968B' ], + 'E170BS' => [ 'Hisense', 'E170BS', DeviceType::TABLET ], + 'Hisense AD686G' => [ 'Hisense', 'AD686G' ], + 'E270BSA' => [ 'Hisense', 'Sero 7 Lite', DeviceType::TABLET ], + 'M470BSA' => [ 'Hisense', 'Sero 7 Pro', DeviceType::TABLET ], + 'M470BSE' => [ 'Hisense', 'Sero 7 Pro', DeviceType::TABLET ], + 'E2281' => [ 'Hisense', 'Sero 8', DeviceType::TABLET ], + 'xt880b' => [ 'Hisense', 'XT880', DeviceType::TELEVISION ], + 'GX1210V TV' => [ 'Hisense', 'GX1210', DeviceType::TELEVISION ], + + '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!' + => [ 'Hisense', '$2', DeviceType::TELEVISION ], + + 'Hisense Google TV TV' => [ 'Hisense', 'Pulse', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'hisense gx1200v' => [ 'Hisense', 'Pulse', DeviceType::TELEVISION, Flag::GOOGLETV ], + + '(Amaze|Hitech)!!' => [ + 'Hitech Air A2' => [ 'Hi-Tech', 'Air A2' ], + 'Amaze HT-808' => [ 'Hi-Tech', 'Amaze HT-808' ], + 'Hitech Amaze S1' => [ 'Hi-Tech', 'Amaze S1' ], + 'Amaze S2' => [ 'Hi-Tech', 'Amaze S2' ], + 'AMAZE S3' => [ 'Hi-Tech', 'Amaze S3' ], + 'Amaze S5' => [ 'Hi-Tech', 'Amaze S5' ], + 'Amaze S5 Plus' => [ 'Hi-Tech', 'Amaze S5 Plus' ], + 'Amaze S9' => [ 'Hi-Tech', 'Amaze S9' ], + 'AMAZE S200' => [ 'Hi-Tech', 'Amaze S200' ], + 'Hitech Amaze S200 3G' => [ 'Hi-Tech', 'Amaze S200' ], + 'Amaze S230' => [ 'Hi-Tech', 'Amaze S230' ], + 'AMAZE S250' => [ 'Hi-Tech', 'Amaze S250' ], + 'Amaze S305' => [ 'Hi-Tech', 'Amaze S305' ], + 'Hitech Amaze S306' => [ 'Hi-Tech', 'Amaze S306' ], + 'Amaze S310' => [ 'Hi-Tech', 'Amaze S310' ], + 'Hitech Amaze S315' => [ 'Hi-Tech', 'Amaze S315' ], + 'AMAZE S330' => [ 'Hi-Tech', 'Amaze S330' ], + 'Amaze S400' => [ 'Hi-Tech', 'Amaze S400' ], + 'Amaze S405' => [ 'Hi-Tech', 'Amaze S405' ], + 'Amaze S406' => [ 'Hi-Tech', 'Amaze S406' ], + 'Hitech Amaze S406' => [ 'Hi-Tech', 'Amaze S406' ], + 'Amaze S430 Plus' => [ 'Hi-Tech', 'Amaze S430 Plus' ], + 'Hitech S450' => [ 'Hi-Tech', 'Amaze S450' ], + 'Amaze S500' => [ 'Hi-Tech', 'Amaze S500' ], + 'AMAZE TAB' => [ 'Hi-Tech', 'Amaze Tab', DeviceType::TABLET ], + 'AMAZE TAB 2' => [ 'Hi-Tech', 'Amaze Tab 2', DeviceType::TABLET ], + 'AMAZE TAB 3' => [ 'Hi-Tech', 'Amaze Tab 3', DeviceType::TABLET ], + ], + + 'HITO HT-3' => [ 'Hito', 'HT-3' ], + 'HKPHONE H8-3G' => [ 'HKPhone', 'H8 3G' ], + 'HT7 Pro' => [ 'Homtom', 'HT7 Pro' ], + 'HT17Pro' => [ 'Homtom', 'HT17 Pro' ], + 'HT20Pro' => [ 'Homtom', 'HT20 Pro' ], + 'D7800AD' => [ 'Honeywell', 'D7800AD' ], + 'Dolphin 70e Black' => [ 'Honeywell', 'Dolphin 70e' ], + 'D75E' => [ 'Honeywell', 'Dolphin 75e' ], + 'CT50' => [ 'Honeywell', 'Dolphin CT50' ], + 'CN51 [NQ]!' => [ 'Honeywell', 'Intermec CN51' ], + + 'HOSIN!!' => [ + 'HOSIN A608' => [ 'Hosin', 'A608' ], + 'HOSIN T70(OPEN)' => [ 'Hosin', 'T70' ], + 'HOSIN T70' => [ 'Hosin', 'T70' ], + 'HOSIN T80' => [ 'Hosin', 'T80' ], + 'HOSIN U2' => [ 'Hosin', 'U2' ], + 'HOSIN U3' => [ 'Hosin', 'U3' ], + 'Hosin U7' => [ 'Hosin', 'U7' ], + 'HOSIN V60' => [ 'Hosin', 'V60' ], + 'HOSIN V70' => [ 'Hosin', 'V70' ], + 'HOSIN V708T' => [ 'Hosin', 'V708T' ], + ], + + '(HP|Slate)!!' => [ + 'HP 7' => [ 'HP', '7', DeviceType::TABLET ], + 'HP 7.1' => [ 'HP', '7.1', DeviceType::TABLET ], + 'HP 7 G2' => [ 'HP', '7 G2', DeviceType::TABLET ], + 'HP 7 Plus' => [ 'HP', '7 Plus', DeviceType::TABLET ], + 'HP 7 Plus G2' => [ 'HP', '7 Plus G2', DeviceType::TABLET ], + 'HP 8' => [ 'HP', '8', DeviceType::TABLET ], + 'HP 8 G2' => [ 'HP', '8 G2', DeviceType::TABLET ], + 'HP 10' => [ 'HP', '10', DeviceType::TABLET ], + 'HP 10 Tablet' => [ 'HP', '10', DeviceType::TABLET ], + 'HP 10 G2 Tablet' => [ 'HP', '10 G2', DeviceType::TABLET ], + 'HP 10 G2 Tablet 2301' => [ 'HP', '10 G2', DeviceType::TABLET ], + 'HP 10 Plus' => [ 'HP', '10 Plus', DeviceType::TABLET ], + 'HP Slate 6 Voice Tab' => [ 'HP', 'Slate 6 Voice Tab', DeviceType::TABLET ], + 'HP Slate 6 VoiceTab Plus' => [ 'HP', 'Slate 6 Voice Tab Plus', DeviceType::TABLET ], + 'HP Slate 6 Voice Tab II' => [ 'HP', 'Slate 6 Voice Tab II', DeviceType::TABLET ], + 'HP Slate 7' => [ 'HP', 'Slate 7', DeviceType::TABLET ], + 'HP Slate 7 3G' => [ 'HP', 'Slate 7', DeviceType::TABLET ], + 'HP Slate 7 Beats Special Edition' => [ 'HP', 'Slate 7', DeviceType::TABLET ], + 'HP Slate7 Beats Special Edition' => [ 'HP', 'Slate 7', DeviceType::TABLET ], + 'HP Slate 7 Plus' => [ 'HP', 'Slate 7 Plus', DeviceType::TABLET ], + 'HP Slate 7 HD' => [ 'HP', 'Slate 7 HD', DeviceType::TABLET ], + 'HP Slate7 Extreme' => [ 'HP', 'Slate 7 Extreme', DeviceType::TABLET ], + 'HP Slate 7 Voice Tab' => [ 'HP', 'Slate 7 Voice Tab', DeviceType::TABLET ], + 'HP 7 VoiceTab' => [ 'HP', 'Slate 7 Voice Tab', DeviceType::TABLET ], + 'HP Slate 7 VoiceTab Ultra' => [ 'HP', 'Slate 7 Voice Tab Ultra', DeviceType::TABLET ], + 'HP Slate 8 Plus' => [ 'HP', 'Slate 8 Plus', DeviceType::TABLET ], + 'HP Slate 8 Pro' => [ 'HP', 'Slate 8 Pro', DeviceType::TABLET ], + 'HP Slate 10 HD' => [ 'HP', 'Slate 10 HD', DeviceType::TABLET ], + 'Slate 10 HD' => [ 'HP', 'Slate 10 HD', DeviceType::TABLET ], + 'HP Slate 10 Plus' => [ 'HP', 'Slate 10 Plus', DeviceType::TABLET ], + 'HP Slate 17' => [ 'HP', 'Slate 17', DeviceType::TABLET ], + 'Slate 21' => [ 'HP', 'Slate 21', DeviceType::TABLET ], + 'Slate 21 Pro' => [ 'HP', 'Slate 21 Pro', DeviceType::TABLET ], + 'HP SlateBook 10 x2 PC' => [ 'HP', 'SlateBook 10 x2', DeviceType::TABLET ], + 'HP SlateBook 14 PC' => [ 'HP', 'SlateBook 14 HD', DeviceType::TABLET ], + 'HP Pro Slate 8' => [ 'HP', 'Pro Slate 8', DeviceType::TABLET ], + 'HP Pro Slate 10 EE G1' => [ 'HP', 'Pro Slate 10', DeviceType::TABLET ], + 'HP Pro Slate 12' => [ 'HP', 'Pro Slate 12', DeviceType::TABLET ], + ], + + 'HP!!' => [ + 'HP Compaq ([0-9]{4,4}[a-z])!' => [ 'HP', 'Compaq $1', DeviceType::DESKTOP ], + 'HP Compaq ([a-z]{2,2}[0-9]{4,4})!' => [ 'HP', 'Compaq $1', DeviceType::DESKTOP ], + 'HP Elite ([0-9]{4,4})!' => [ 'HP', 'Elite $1', DeviceType::DESKTOP ], + 'HP EliteBook ([0-9]{4,4}[a-z])!' => [ 'HP', 'EliteBook $1', DeviceType::DESKTOP ], + 'HP EliteBook Revolve ([0-9]{3,3})!' => [ 'HP', 'EliteBook Revolve $1', DeviceType::DESKTOP ], + 'HP ENVY (.*) Notebook PC!' => [ 'HP', 'ENVY $1', DeviceType::DESKTOP ], + 'HP ENVY Sleekbook (.*) PC!' => [ 'HP', 'ENVY Sleekbook $1', DeviceType::DESKTOP ], + 'HP ([0-9]{2,4}) Notebook PC!' => [ 'HP', '$1', DeviceType::DESKTOP ], + 'HP ([0-9]{2,4} G[0-9]{1,2}) Notebook PC!' => [ 'HP', '$1', DeviceType::DESKTOP ], + 'HP (G[0-9]{2,4}) Notebook PC!' => [ 'HP', '$1', DeviceType::DESKTOP ], + 'HP Mini!' => [ 'HP', 'Mini', DeviceType::DESKTOP ], + 'HP Pavilion ([0-9]+)!' => [ 'HP', 'Pavilion $1', DeviceType::DESKTOP ], + 'HP Pavilion ([a-z]{1,2} ?[0-9]+)!' => [ 'HP', 'Pavilion $1', DeviceType::DESKTOP ], + 'HP Pavilion Sleekbook (.*) PC!' => [ 'HP', 'Pavilion Sleekbook $1', DeviceType::DESKTOP ], + 'HP ProBook ([0-9]{4,4}[a-z])!' => [ 'HP', 'ProBook $1', DeviceType::DESKTOP ], + 'HP ProBook ([0-9]{3,3} G[0-9])!' => [ 'HP', 'ProBook $1', DeviceType::DESKTOP ], + 'HP Spectre ((?:[0-9]+ )?x2)!' => [ 'HP', 'Spectre $1', DeviceType::DESKTOP ], + 'HP Split ((?:[0-9]+ )?x2)!' => [ 'HP', 'Split $1', DeviceType::DESKTOP ], + ], + + 'HP-TouchPad' => [ 'HP', 'TouchPad', DeviceType::TABLET ], + '(HP )?Touchpad!' => [ 'HP', 'TouchPad', DeviceType::TABLET ], + '(cm|aokp) tenderloin!' => [ 'HP', 'TouchPad', DeviceType::TABLET ], + + 'HTC!!' => [ + 'HTC (Amaze|Ruby)!' => [ 'HTC', 'Amaze 4G' ], + 'HTC (Aria|Gratia|Liberty)!' => [ 'HTC', 'Aria' ], + 'HTC A63(66|80)!' => [ 'HTC', 'Aria' ], + 'HTC Bee' => [ 'HTC', 'Bee' ], + 'HTC ?ChaCha!' => [ 'HTC', 'ChaCha' ], + 'HTC A810e' => [ 'HTC', 'ChaCha' ], + 'HTC Status' => [ 'HTC', 'ChaCha' ], + 'HTC PH06130' => [ 'HTC', 'ChaCha' ], + 'HTC A9188!' => [ 'HTC', 'Cullinan' ], + 'HTC Desire 10 lifestyle' => [ 'HTC', 'Desire 10 Lifestyle' ], + 'HTC Desire 10 pro' => [ 'HTC', 'Desire 10 Pro' ], + 'HTC D10i' => [ 'HTC', 'Desire 10 Pro' ], + 'HTC D10w' => [ 'HTC', 'Desire 10 Pro' ], + 'HTC Desire 12+' => [ 'HTC', 'Desire 12+' ], + 'HTC Desire 200' => [ 'HTC', 'Desire 200' ], + 'HTC Desire 210 dual sim' => [ 'HTC', 'Desire 210' ], + 'HTC Desire 300' => [ 'HTC', 'Desire 300' ], + 'HTC 0P6A1' => [ 'HTC', 'Desire 300' ], + 'HTC 301e' => [ 'HTC', 'Desire 300' ], + 'HTC D310(n|w)!' => [ 'HTC', 'Desire 310' ], + 'HTC Desire 310' => [ 'HTC', 'Desire 310' ], + 'HTC Desire 310 dual sim' => [ 'HTC', 'Desire 310' ], + 'HTC 0PF11' => [ 'HTC', 'Desire 310' ], + 'HTC 0PF110' => [ 'HTC', 'Desire 310' ], + 'HTC 0PF120' => [ 'HTC', 'Desire 310' ], + 'HTC V1' => [ 'HTC', 'Desire 310' ], + 'HTC D316d' => [ 'HTC', 'Desire 316' ], + 'HTC Desire 320' => [ 'HTC', 'Desire 320' ], + 'htc v01' => [ 'HTC', 'Desire 320' ], + 'HTC Desire 326G dual sim' => [ 'HTC', 'Desire 326G' ], + 'HTC 2PNT1' => [ 'HTC', 'Desire 326G' ], + 'HTC Desire 400' => [ 'HTC', 'Desire 400' ], + 'HTC Desire 400 dual sim' => [ 'HTC', 'Desire 400' ], + 'HTC Desire 500' => [ 'HTC', 'Desire 500' ], + 'HTC Desire 500 dual sim' => [ 'HTC', 'Desire 500' ], + 'HTC 5060' => [ 'HTC', 'Desire 500' ], + 'HTC 0P3Z11' => [ 'HTC', 'Desire 500' ], + 'HTC 0PFJ50' => [ 'HTC', 'Desire 500' ], + 'HTC Desire 501' => [ 'HTC', 'Desire 501' ], + 'HTC Desire 501 dual sim' => [ 'HTC', 'Desire 501' ], + 'HTC 603h' => [ 'HTC', 'Desire 501' ], + 'HTC PO091' => [ 'HTC', 'Desire 501' ], + 'HTC Desire 510' => [ 'HTC', 'Desire 510' ], + 'HTC D510' => [ 'HTC', 'Desire 510' ], + 'HTC 0PCV2' => [ 'HTC', 'Desire 510' ], + 'HTC 0PCV20' => [ 'HTC', 'Desire 510' ], + 'HTC 0PCV220' => [ 'HTC', 'Desire 510' ], + 'HTC Desire 512' => [ 'HTC', 'Desire 512' ], + 'HTC D516' => [ 'HTC', 'Desire 516' ], + 'HTC D516(d|t|w)!' => [ 'HTC', 'Desire 516' ], + 'HTC Desire 516 dual sim' => [ 'HTC', 'Desire 516' ], + 'HTC C2' => [ 'HTC', 'Desire 516' ], + 'HTC V2' => [ 'HTC', 'Desire 516' ], + 'HTC Desire 520' => [ 'HTC', 'Desire 520' ], + 'HTC 0PGQ1' => [ 'HTC', 'Desire 520' ], + 'HTC Desire 526' => [ 'HTC', 'Desire 526' ], + 'HTCD100LVW' => [ 'HTC', 'Desire 526' ], + 'HTC D100LVW' => [ 'HTC', 'Desire 526' ], + 'HTC D100LVWPP' => [ 'HTC', 'Desire 526' ], + 'HTC 0PM31' => [ 'HTC', 'Desire 526' ], + 'HTC 0PM1100' => [ 'HTC', 'Desire 526G' ], + 'HTC Desire 526G' => [ 'HTC', 'Desire 526G' ], + 'HTC Desire 526G dual sim' => [ 'HTC', 'Desire 526G' ], + 'HTC D526(h)!' => [ 'HTC', 'Desire 526G+' ], + 'HTC Desire 526GPLUS dual sim' => [ 'HTC', 'Desire 526G+' ], + 'HTC 0PL41!' => [ 'HTC', 'Desire 526G+' ], + 'HTC 0PL42!' => [ 'HTC', 'Desire 526G+' ], + 'HTC Desire 530' => [ 'HTC', 'Desire 530' ], + 'HTC D530u' => [ 'HTC', 'Desire 530' ], + 'HTC 2PST1!' => [ 'HTC', 'Desire 530' ], + 'HTC 2PST2!' => [ 'HTC', 'Desire 530' ], + 'HTCD160LVW' => [ 'HTC', 'Desire 530' ], + 'HTCD160LVWPP' => [ 'HTC', 'Desire 530' ], + 'HTC Desire 550' => [ 'HTC', 'Desire 550' ], + 'HTC Desire 555' => [ 'HTC', 'Desire 555' ], + 'HTC Desire 600' => [ 'HTC', 'Desire 600' ], + 'HTC Desire 600 dual sim' => [ 'HTC', 'Desire 600' ], + 'HTC PO491' => [ 'HTC', 'Desire 600' ], + 'HTC PO49120' => [ 'HTC', 'Desire 600' ], + 'HTC Desire 600c dual sim' => [ 'HTC', 'Desire 600c' ], + 'HTC 609d' => [ 'HTC', 'Desire 600c' ], + 'HTC Desire 601' => [ 'HTC', 'Desire 601' ], + 'HTC Desire 601 dual sim' => [ 'HTC', 'Desire 601' ], + 'HTC Desire 601-LS' => [ 'HTC', 'Desire 601' ], + 'HTC ?0P4E!' => [ 'HTC', 'Desire 601' ], + 'HTC 606w' => [ 'HTC', 'Desire 606w' ], + 'HTC 608' => [ 'HTC', 'Desire 608' ], + 'HTC 608t' => [ 'HTC', 'Desire 608t' ], + 'HTC Desire 610' => [ 'HTC', 'Desire 610' ], + 'HTC D610' => [ 'HTC', 'Desire 610' ], + 'HTC D610t' => [ 'HTC', 'Desire 610' ], + 'HTC D610x' => [ 'HTC', 'Desire 610' ], + 'HTC 0P9O110' => [ 'HTC', 'Desire 610' ], + 'HTC 0P9O2' => [ 'HTC', 'Desire 610' ], + 'HTC331ZLVW' => [ 'HTC', 'Desire 610' ], + 'htc a3qhdul' => [ 'HTC', 'Desire 610' ], + 'HTC Desire 612' => [ 'HTC', 'Desire 612' ], + 'HTC331ZLVWPP' => [ 'HTC', 'Desire 612' ], + 'HTC 0P9O30' => [ 'HTC', 'Desire 612' ], + 'HTC Desire 616' => [ 'HTC', 'Desire 616' ], + 'HTC Desire 616 dual sim!' => [ 'HTC', 'Desire 616' ], + 'HTC 616 Dual Sim' => [ 'HTC', 'Desire 616' ], + 'HTC D616w!' => [ 'HTC', 'Desire 616' ], + 'HTC V3' => [ 'HTC', 'Desire 616' ], + 'HTC 619d!' => [ 'HTC', 'Desire 619d' ], + 'HTC D620(h|u)!' => [ 'HTC', 'Desire 620' ], + 'HTC Desire 620' => [ 'HTC', 'Desire 620' ], + 'HTC Desire 620 dual sim' => [ 'HTC', 'Desire 620' ], + 'HTC 0PE64!' => [ 'HTC', 'Desire 620' ], + 'HTC Desire 620G' => [ 'HTC', 'Desire 620G' ], + 'HTC Desire 620G dual sim' => [ 'HTC', 'Desire 620G' ], + 'HTC 0PE65' => [ 'HTC', 'Desire 620G' ], + 'HTC Desire 625' => [ 'HTC', 'Desire 625' ], + 'HTC D626(d|q|t|w|x)!' => [ 'HTC', 'Desire 626' ], + 'HTC Desire 626' => [ 'HTC', 'Desire 626' ], + 'HTC Desire 626 dual sim' => [ 'HTC', 'Desire 626' ], + 'HTC 0PKX2' => [ 'HTC', 'Desire 626' ], + 'HTC D630x' => [ 'HTC', 'Desire 626' ], + 'HTC D200LVW' => [ 'HTC', 'Desire 626' ], + 'HTC D200LVWPP' => [ 'HTC', 'Desire 626' ], + 'HTC DESIRE 626G' => [ 'HTC', 'Desire 626G' ], + 'HTC Desire 626G dual sim' => [ 'HTC', 'Desire 626G' ], + 'HTC D626(ph)!' => [ 'HTC', 'Desire 626G' ], + 'HTC Desire 626GPLUS dual sim' => [ 'HTC', 'Desire 626G+' ], + 'HTC 0PM11' => [ 'HTC', 'Desire 626G+' ], + 'HTC Desire 626s' => [ 'HTC', 'Desire 626s' ], + 'HTC 0PM91' => [ 'HTC', 'Desire 626s' ], + 'HTC 0PM912!' => [ 'HTC', 'Desire 626s' ], + 'HTC 0PM92' => [ 'HTC', 'Desire 626s' ], + 'HTC D628u' => [ 'HTC', 'Desire 628' ], + 'HTC Desire 628' => [ 'HTC', 'Desire 628' ], + 'HTC Desire 628 dual sim' => [ 'HTC', 'Desire 628' ], + 'HTC Desire 630 dual sim' => [ 'HTC', 'Desire 630' ], + 'HTC 2PST5' => [ 'HTC', 'Desire 630' ], + 'HTC Desire 650' => [ 'HTC', 'Desire 650' ], + 'HTC Desire 650 dual sim' => [ 'HTC', 'Desire 650' ], + 'HTC 2PYA1' => [ 'HTC', 'Desire 650' ], + 'HTC 2PYR1' => [ 'HTC', 'Desire 650' ], + 'HTC 2PYR2' => [ 'HTC', 'Desire 650' ], + 'HTC Desire 700 dual sim' => [ 'HTC', 'Desire 700' ], + 'HTC 709d' => [ 'HTC', 'Desire 709d' ], + 'HTC Desire 728' => [ 'HTC', 'Desire 728' ], + 'HTC Desire 728 dual sim' => [ 'HTC', 'Desire 728' ], + 'HTC D728(w|x)!' => [ 'HTC', 'Desire 728' ], + 'HTC Desire 728G dual sim' => [ 'HTC', 'Desire 728G' ], + 'HTC 2PQ83' => [ 'HTC', 'Desire 728G' ], + 'HTC D816' => [ 'HTC', 'Desire 816' ], + 'HTC D816(d|t|v|w|x)!' => [ 'HTC', 'Desire 816' ], + 'HTC D816(h)!' => [ 'HTC', 'Desire 816G' ], + 'HTC Desire 816' => [ 'HTC', 'Desire 816' ], + 'HTC Desire 816 dual sim' => [ 'HTC', 'Desire 816' ], + 'htc a5ul' => [ 'HTC', 'Desire 816' ], + 'htc a5chl' => [ 'HTC', 'Desire 816' ], + 'HTC 0P9C2' => [ 'HTC', 'Desire 816' ], + 'HTC 0P9C8' => [ 'HTC', 'Desire 816' ], + 'HTC D816e' => [ 'HTC', 'Desire 816' ], + 'HTC Desire 816G' => [ 'HTC', 'Desire 816G' ], + 'HTC Desire 816G dual sim!' => [ 'HTC', 'Desire 816G' ], + 'HTC 816G dual sim' => [ 'HTC', 'Desire 816G' ], + 'HTC Desire 816W' => [ 'HTC', 'Desire 816W' ], + 'HTC D820(G|pi|ts|us)!' => [ 'HTC', 'Desire 820G' ], + 'HTC Desire 820G dual sim' => [ 'HTC', 'Desire 820G' ], + 'HTC Desire 820G !' => [ 'HTC', 'Desire 820G' ], + 'HTC Desire 820G+' => [ 'HTC', 'Desire 820G+' ], + 'HTC Desire 820G PLUS dual sim' => [ 'HTC', 'Desire 820G+' ], + 'HTC 820G Plus Dual Sim' => [ 'HTC', 'Desire 820G+' ], + 'HTC D820' => [ 'HTC', 'Desire 820' ], + 'HTC D820(f|m|mt|mu|s|t|u|x)!' => [ 'HTC', 'Desire 820' ], + 'HTC Desire 820' => [ 'HTC', 'Desire 820' ], + 'HTC Desire 820 dual sim' => [ 'HTC', 'Desire 820' ], + 'HTC 0PFJ4' => [ 'HTC', 'Desire 820' ], + 'htc a51dtul' => [ 'HTC', 'Desire 820' ], + 'HTC Desire 820q dual sim' => [ 'HTC', 'Desire 820q' ], + 'HTC Desire 820s' => [ 'HTC', 'Desire 820s' ], + 'HTC Desire 820s dual sim' => [ 'HTC', 'Desire 820s' ], + 'HTC D820(ys)!' => [ 'HTC', 'Desire 820s' ], + 'HTC Desire 820ts' => [ 'HTC', 'Desire 820ts' ], + 'HTC Desire 820 mini' => [ 'HTC', 'Desire 820 mini' ], + 'HTC Desire 825' => [ 'HTC', 'Desire 825' ], + 'HTC Desire 825 dual sim' => [ 'HTC', 'Desire 825' ], + 'HTC D825u' => [ 'HTC', 'Desire 825' ], + 'HTC 2PUK2!' => [ 'HTC', 'Desire 825' ], + 'HTC Desire 826' => [ 'HTC', 'Desire 826' ], + 'HTC Desire 826 dual sim' => [ 'HTC', 'Desire 826' ], + 'HTC D826' => [ 'HTC', 'Desire 826' ], + 'HTC D826(d|t|w|y)!' => [ 'HTC', 'Desire 826' ], + 'HTC D828(g|w|x)!' => [ 'HTC', 'Desire 828' ], + 'HTC Desire 828' => [ 'HTC', 'Desire 828' ], + 'HTC Desire 828 dual sim' => [ 'HTC', 'Desire 828' ], + 'HTC 2PRE2' => [ 'HTC', 'Desire 828' ], + 'HTC Desire 830' => [ 'HTC', 'Desire 830' ], + 'HTC Desire 830 dual sim' => [ 'HTC', 'Desire 830' ], + 'HTC D830(u|x)!' => [ 'HTC', 'Desire 830' ], + 'HTC 5088' => [ 'HTC', 'Desire 5088' ], + 'HTC 6160' => [ 'HTC', 'Desire 6160' ], + 'HTC 7060' => [ 'HTC', 'Desire 7060' ], + 'HTC ?7088!' => [ 'HTC', 'Desire 7088' ], + 'HTC 8060' => [ 'HTC', 'Desire 8060' ], + 'HTC Desire C' => [ 'HTC', 'Desire C' ], + 'HTC Desire C N' => [ 'HTC', 'Desire C' ], + 'HTC H1000C' => [ 'HTC', 'Desire C' ], + 'HTC A320e' => [ 'HTC', 'Desire C' ], + 'HTC A320E DESIRE C' => [ 'HTC', 'Desire C' ], + 'HTC Desire ?HD!' => [ 'HTC', 'Desire HD' ], + 'HTC A91(91|92)!' => [ 'HTC', 'Desire HD' ], + 'HTC 0PFH1!' => [ 'HTC', 'Desire Eye' ], + 'HTC 0PFH2!' => [ 'HTC', 'Desire Eye' ], + 'HTC Desire EYE' => [ 'HTC', 'Desire Eye' ], + 'HTC M910x' => [ 'HTC', 'Desire Eye' ], + 'HTC Desire L dual sim' => [ 'HTC', 'Desire L' ], + 'HTC PM6014' => [ 'HTC', 'Desire L' ], + 'HTC Desire P' => [ 'HTC', 'Desire P' ], + 'HTC Desire Q' => [ 'HTC', 'Desire Q' ], + 'HTC ?Desire ?S( |$)!' => [ 'HTC', 'Desire S' ], + 'HTC S510(b|e)!' => [ 'HTC', 'Desire S' ], + 'HTC Passion S510e' => [ 'HTC', 'Desire S' ], + 'HTC Desire Saga' => [ 'HTC', 'Desire S' ], + 'HTC Saga' => [ 'HTC', 'Desire S' ], + 'HTC DesireSV' => [ 'HTC', 'Desire SV' ], + 'HTC Desire SV' => [ 'HTC', 'Desire SV' ], + 'HTC DesireU' => [ 'HTC', 'Desire U' ], + 'HTC Desire U' => [ 'HTC', 'Desire U' ], + 'HTC Desire U dual sim' => [ 'HTC', 'Desire U' ], + 'HTC T327w' => [ 'HTC', 'Desire U' ], + 'HTC Desire V' => [ 'HTC', 'Desire V' ], + 'HTC T328w' => [ 'HTC', 'Desire V' ], + 'HTC PROMIN U' => [ 'HTC', 'Desire V' ], + 'HTC PRO DS' => [ 'HTC', 'Desire V' ], + 'HTC Desire VC' => [ 'HTC', 'Desire VC' ], + 'HTC Desire VC T328d' => [ 'HTC', 'Desire VC' ], + 'HTC T328d' => [ 'HTC', 'Desire VC' ], + 'HTC PRO DD' => [ 'HTC', 'Desire VC' ], + 'HTC Desire VT' => [ 'HTC', 'Desire VT' ], + 'HTC T328t' => [ 'HTC', 'Desire VT' ], + 'HTC Desire XC!' => [ 'HTC', 'Desire XC' ], + 'HTC Desire XS!' => [ 'HTC', 'Desire XS' ], + 'HTC Desire ?X!' => [ 'HTC', 'Desire X' ], + 'HTC T329w' => [ 'HTC', 'Desire X' ], + 'HTC POO U' => [ 'HTC', 'Desire X' ], + 'HTC Desire ?Z!' => [ 'HTC', 'Desire Z' ], + 'HTC A72(71|72|75)!' => [ 'HTC', 'Desire Z' ], + 'HTC ?Vision!' => [ 'HTC', 'Desire Z' ], + 'HTC T329d' => [ 'HTC', 'T329d' ], + 'HTC ?Desire!' => [ 'HTC', 'Desire' ], + 'HTC Bravo' => [ 'HTC', 'Desire' ], + 'HTC Bravo C' => [ 'HTC', 'Desire' ], + 'HTC eris' => [ 'HTC', 'Desire' ], + 'HTC A81(81|83)!' => [ 'HTC', 'Desire' ], + 'HTC ?X06HTII!' => [ 'HTC', 'Desire X06HTII', 'carrier' => 'Softbank' ], + 'HTC ?X06HT!' => [ 'HTC', 'Desire X06HT', 'carrier' => 'Softbank' ], + 'HTC Desire CDMA' => [ 'HTC', 'Desire' ], + 'HTC PLS7373ADR' => [ 'HTC', 'Detail' ], + 'HTC 603e' => [ 'HTC', 'E1' ], + 'HTC Evo' => [ 'HTC', 'EVO 3D' ], + 'HTC ?EVO ?3D!' => [ 'HTC', 'EVO 3D' ], + 'HTC X51(5a|5c|5d|5m)!' => [ 'HTC', 'EVO 3D' ], + 'HTC Shooter' => [ 'HTC', 'EVO 3D' ], + 'htc shooteru' => [ 'HTC', 'EVO 3D' ], + 'HTC ?EVO ?V ?4G!' => [ 'HTC', 'EVO 3D' ], + 'HTC EVO 4G\+!' => [ 'HTC', 'EVO 4G+' ], + 'HTC X515e!' => [ 'HTC', 'EVO 4G+' ], + 'HTC ?EVO ?4G!' => [ 'HTC', 'EVO 4G' ], + 'HTC jewel' => [ 'HTC', 'EVO 4G' ], + 'HTC EVO LTE' => [ 'HTC', 'EVO 4G' ], + 'HTC EVO G20 T9399 For Sprint' => [ 'HTC', 'EVO 4G' ], + 'htc supersonic' => [ 'HTC', 'EVO 4G' ], + 'HTC ?(EVO ?)?Design ?4G!' => [ 'HTC', 'EVO Design 4G' ], + 'HTC EVO Design C715e!' => [ 'HTC', 'EVO Design 4G' ], + 'HTC C715c' => [ 'HTC', 'EVO Design 4G' ], + 'HTC Acquire' => [ 'HTC', 'EVO Design 4G' ], + 'HTC Kingdom' => [ 'HTC', 'EVO Design 4G' ], + 'HTC EVO Shift!' => [ 'HTC', 'EVO Shift' ], + 'HTC EVO View 4G' => [ 'HTC', 'EVO View 4G' ], + 'HTC ?Explorer!' => [ 'HTC', 'Explorer' ], + 'HTC A31(0b|0e)!' => [ 'HTC', 'Explorer' ], + 'HTC Pico Incredible HD' => [ 'HTC', 'Explorer' ], + 'HTC first' => [ 'HTC', 'First' ], + 'HTC PM33100' => [ 'HTC', 'First' ], + 'HTC Flyer!' => [ 'HTC', 'Flyer', DeviceType::TABLET ], + 'HTC P51(0e|2|5e)!' => [ 'HTC', 'Flyer', DeviceType::TABLET ], + 'HTC HD' => [ 'HTC', 'HD' ], + 'HTC HD2!' => [ 'HTC', 'HD2' ], + 'HTC T8585' => [ 'HTC', 'HD2' ], + 'HTC HD7!' => [ 'HTC', 'HD7' ], + 'HTC T92(98|99)!' => [ 'HTC', 'HD7' ], + 'HTC HD7S!' => [ 'HTC', 'HD7s' ], + 'HTC T(93|98)99!' => [ 'HTC', 'HD7s' ], + 'HTC HD Mini' => [ 'HTC', 'HD mini' ], + 'HTC HERO200' => [ 'HTC', 'Hero 200' ], /* Sprint */ + 'HTC Hero ?S!' => [ 'HTC', 'Hero S' ], /* US Cellular */ + 'HTC Hero!' => [ 'HTC', 'Hero' ], + 'HTC IMAGIO' => [ 'HTC', 'Imagio' ], + 'HTC Incredible' => [ 'HTC', 'Incredible' ], + 'HTC Incredible CDMA' => [ 'HTC', 'Incredible' ], + 'HTC Incredible T9199 for Vodafone' => [ 'HTC', 'Incredible' ], + 'HTC Incredible E S715e' => [ 'HTC', 'Incredible E' ], + 'HTC Incredible ?S!' => [ 'HTC', 'Incredible S' ], + 'HTC ?Vivo!' => [ 'HTC', 'Incredible S' ], + 'HTC S710e!' => [ 'HTC', 'Incredible S' ], + 'HTC S710d' => [ 'HTC', 'Incredible S' ], + 'HTC Incredible 2' => [ 'HTC', 'Incredible S' ], + 'HTC Innovation' => [ 'HTC', 'Innovation' ], + 'HTC (HD7 )?Inspire!' => [ 'HTC', 'Inspire 4G' ], + 'HTC J Z321e' => [ 'HTC', 'J' ], + 'HTC X920e' => [ 'HTC', 'J Butterfly' ], + 'HTC Butterfly' => [ 'HTC', 'J Butterfly' ], + 'HTC J Butterfly' => [ 'HTC', 'J Butterfly' ], + 'HTC Butterfly J' => [ 'HTC', 'J Butterfly' ], + 'HTC DLX WLJ' => [ 'HTC', 'J Butterfly' ], + 'HTC DLX WL' => [ 'HTC', 'J Butterfly' ], + 'HTC DLX U' => [ 'HTC', 'J Butterfly' ], + 'HTC DLXUB1' => [ 'HTC', 'J Butterfly' ], + 'HTC J One' => [ 'HTC', 'J One' ], + 'HTC Butterfly s' => [ 'HTC', 'Butterfly S' ], + 'HTC Butterfly s 901s' => [ 'HTC', 'Butterfly S' ], + 'HTC PO68' => [ 'HTC', 'Butterfly S' ], + 'HTC 9060' => [ 'HTC', 'Butterfly S' ], + 'HTC 9066' => [ 'HTC', 'Butterfly S' ], + 'HTC 9088' => [ 'HTC', 'Butterfly S' ], + 'HTC 901e' => [ 'HTC', 'Butterfly S' ], + 'HTC 909d' => [ 'HTC', 'Butterfly S' ], + 'HTC 919d' => [ 'HTC', 'Butterfly S' ], + 'HTC B810x' => [ 'HTC', 'Butterfly 2' ], + 'HTC Butterfly 2' => [ 'HTC', 'Butterfly 2' ], + 'HTC Butterfly 3' => [ 'HTC', 'Butterfly 3' ], + 'HTC B830x' => [ 'HTC', 'Butterfly 3' ], + 'HTC P715!' => [ 'HTC', 'Jetstream', DeviceType::TABLET ], + 'HTC PG09410' => [ 'HTC', 'Jetstream', DeviceType::TABLET ], + 'HTC Legend!' => [ 'HTC', 'Legend' ], + 'HTC Magic!' => [ 'HTC', 'Magic' ], + 'HTC Sapphire' => [ 'HTC', 'Magic' ], + 'HTC Merge' => [ 'HTC', 'Merge' ], + 'HTC Lexikon' => [ 'HTC', 'Merge' ], + 'HTC One SC' => [ 'HTC', 'One SC' ], + 'HTC One SC T528d' => [ 'HTC', 'One SC' ], + 'HTC T528d' => [ 'HTC', 'One SC' ], + 'HTC T528t' => [ 'HTC', 'One ST' ], + 'HTC T528w' => [ 'HTC', 'One SU' ], + 'HTC One Su' => [ 'HTC', 'One SU' ], + 'HTC One ?SV!' => [ 'HTC', 'One SV' ], + 'HTC C525c' => [ 'HTC', 'One SV' ], + 'HTC C525u' => [ 'HTC', 'One SV' ], + 'HTC H3000C' => [ 'HTC', 'One SV' ], + 'HTC K2!' => [ 'HTC', 'One SV' ], + 'HTC One S' => [ 'HTC', 'One S' ], + 'HTC One S !' => [ 'HTC', 'One S' ], + 'HTC Ville!' => [ 'HTC', 'One S' ], + 'HTC Z(52|56)0e!' => [ 'HTC', 'One S' ], + 'HTC One VX' => [ 'HTC', 'One VX' ], + 'htc totem' => [ 'HTC', 'One VX' ], + 'HTC PM36100' => [ 'HTC', 'One VX' ], + 'HTC One V' => [ 'HTC', 'One V' ], + 'HTC T120C' => [ 'HTC', 'One V' ], + 'HTC T320e' => [ 'HTC', 'One V' ], + 'HTC H2000C' => [ 'HTC', 'One V' ], + 'htc primou' => [ 'HTC', 'One V' ], + 'HTC X720d' => [ 'HTC', 'One XC' ], + 'HTC ?One ?XL+!' => [ 'HTC', 'One XL+' ], + 'HTC ?One ?XL!' => [ 'HTC', 'One XL' ], + 'htc evita' => [ 'HTC', 'One XL' ], + 'HTC S720t!' => [ 'HTC', 'One XT' ], + 'HTC One X+' => [ 'HTC', 'One X+' ], + 'HTC OneXplus!' => [ 'HTC', 'One X+' ], + 'HTC PM63100' => [ 'HTC', 'One X+' ], + 'HTC ?One ?X!' => [ 'HTC', 'One X' ], + 'HTC Endeavour!' => [ 'HTC', 'One X' ], + 'HTC S720e' => [ 'HTC', 'One X' ], + 'HTC One X S720e' => [ 'HTC', 'One X' ], + 'HTC One X with Beats Audio' => [ 'HTC', 'One X' ], + 'HTC M7' => [ 'HTC', 'One' ], + 'HTC 801e' => [ 'HTC', 'One' ], + 'HTC 801s' => [ 'HTC', 'One' ], + 'HTC ?802d!' => [ 'HTC', 'One' ], + 'HTC ?802t!' => [ 'HTC', 'One' ], + 'HTC 802w' => [ 'HTC', 'One' ], + 'HTC PN071' => [ 'HTC', 'One' ], + 'HTC PN072' => [ 'HTC', 'One' ], + 'HTC PN0711' => [ 'HTC', 'One' ], + 'HTC PN07120' => [ 'HTC', 'One' ], + 'HTC PN07310' => [ 'HTC', 'One' ], + 'HTC HTC6500LVW' => [ 'HTC', 'One' ], + 'HTC6500LVW' => [ 'HTC', 'One' ], + 'HTC6500LVW 4G' => [ 'HTC', 'One' ], + 'HTC6445LVW 4G' => [ 'HTC', 'One' ], + 'HTC One 801e' => [ 'HTC', 'One' ], + 'HTC One 801s' => [ 'HTC', 'One' ], + 'HTC one 802d' => [ 'HTC', 'One' ], + 'HTC One dual' => [ 'HTC', 'One' ], + 'HTC One dual 802d' => [ 'HTC', 'One' ], + 'HTC One dual sim' => [ 'HTC', 'One' ], + 'HTCONE' => [ 'HTC', 'One' ], + 'HTC6515LVW' => [ 'HTC', 'One Remix' ], + 'HTC 601e' => [ 'HTC', 'One Mini' ], + 'HTC PO581' => [ 'HTC', 'One Mini' ], + 'HTC PO582' => [ 'HTC', 'One Mini' ], + 'HTC PO58220' => [ 'HTC', 'One Mini' ], + 'HTC One mini' => [ 'HTC', 'One Mini' ], + 'HTC One mini 601e' => [ 'HTC', 'One Mini' ], + 'HTC 809d' => [ 'HTC', 'One Max' ], + 'HTC 8060' => [ 'HTC', 'One Max' ], + 'HTC 8088' => [ 'HTC', 'One Max' ], + 'HTC 8160' => [ 'HTC', 'One Max' ], + 'HTC ?0P3P[0-9]!' => [ 'HTC', 'One Max' ], + 'HTC6600LVW' => [ 'HTC', 'One Max' ], + 'HTC6600LVW 4G' => [ 'HTC', 'One Max' ], + 'HTC One max' => [ 'HTC', 'One Max' ], + 'HTC One max dual' => [ 'HTC', 'One Max' ], + 'HTC One A9' => [ 'HTC', 'One (A9)' ], + 'HTC A9' => [ 'HTC', 'One (A9)' ], + 'HTC A9(u|w)!' => [ 'HTC', 'One (A9)' ], + 'HTC 2PQ910' => [ 'HTC', 'One (A9)' ], + 'HTC 2PQ912!' => [ 'HTC', 'One (A9)' ], + 'HTC One A9s' => [ 'HTC', 'One (A9s)' ], + 'HTC E9' => [ 'HTC', 'One (E9)' ], + 'HTC One E9' => [ 'HTC', 'One (E9)' ], + 'HTC One E9 dual sim' => [ 'HTC', 'One (E9)' ], + 'HTC 0PL31' => [ 'HTC', 'One (E9)' ], + 'HTCE9t' => [ 'HTC', 'One (E9)' ], + 'HTC E9 Plus' => [ 'HTC', 'One (E9 Plus)' ], + 'HTC One E9PLUS dual sim' => [ 'HTC', 'One (E9 Plus)' ], + 'HTC One E9s' => [ 'HTC', 'One (E9s)' ], + 'HTC One E9s dual sim' => [ 'HTC', 'One (E9s)' ], + 'HTC D826sw' => [ 'HTC', 'One (E9s)' ], + 'HTC E9sx' => [ 'HTC', 'One (E9s)' ], + 'HTC One M9' => [ 'HTC', 'One (M9)' ], + 'HTC One M9s' => [ 'HTC', 'One (M9)' ], + 'HTC 0PJA1!' => [ 'HTC', 'One (M9)' ], + 'HTC 0PJA2!' => [ 'HTC', 'One (M9)' ], + 'HTC6535LRA' => [ 'HTC', 'One (M9)' ], + 'HTC6535LVW' => [ 'HTC', 'One (M9)' ], + 'HTC M9(e|pt|px|u|w)!' => [ 'HTC', 'One (M9)' ], + 'HTC One M9PLUS' => [ 'HTC', 'One (M9 Plus)' ], + 'HTC One M9PLUS Prime Camera Edition' => [ 'HTC', 'One (M9 Plus)' ], + 'HTC M9pw' => [ 'HTC', 'One (M9 Plus)' ], + 'HTC 0PK71' => [ 'HTC', 'One (M9 Plus)' ], + 'HTC 0PK72' => [ 'HTC', 'One (M9 Plus)' ], + 'HTC X9u' => [ 'HTC', 'One (X9)' ], + 'HTC 2PS511' => [ 'HTC', 'One (X9)' ], + 'HTC 2PS5200' => [ 'HTC', 'One (X9)' ], + 'HTC 2PXH1' => [ 'HTC', 'One (X10)' ], + 'HTC 2PXH2' => [ 'HTC', 'One (X10)' ], + 'HTC 2PXH3' => [ 'HTC', 'One (X10)' ], + 'HTC M9et' => [ 'HTC', 'One ME' ], + 'HTCM9et' => [ 'HTC', 'One ME' ], + 'HTC M9ew' => [ 'HTC', 'One ME' ], + 'htc hima ace ml dtul' => [ 'HTC', 'One ME' ], + 'HTC One ME dual sim' => [ 'HTC', 'One ME' ], + 'HTC 0PLA1' => [ 'HTC', 'One ME' ], + 'HTC One M8' => [ 'HTC', 'One (M8)' ], + 'HTC One M8 dual sim' => [ 'HTC', 'One (M8)' ], + 'HTC One(M8)' => [ 'HTC', 'One (M8)' ], + 'htc m8' => [ 'HTC', 'One (M8)' ], + 'HTC M8(d|dug|e|si|t|v|w|x)!' => [ 'HTC', 'One (M8)' ], + 'HTCM8t' => [ 'HTC', 'One (M8)' ], + 'HTC6525LVW' => [ 'HTC', 'One (M8)' ], + 'HTC One M8 Eye' => [ 'HTC', 'One (M8 Eye)' ], + 'HTC M8(et|Et|Ew)!' => [ 'HTC', 'One (M8 Eye)' ], + 'HTCM8Et' => [ 'HTC', 'One (M8 Eye)' ], + 'HTC 0P6B!' => [ 'HTC', 'One (M8 Eye)' ], + 'htc melstuhl' => [ 'HTC', 'One (M8 Eye)' ], + 'HTC One M8s' => [ 'HTC', 'One (M8s)' ], + 'HTC 0PKV1' => [ 'HTC', 'One (M8s)' ], + 'HTC One E8' => [ 'HTC', 'One (E8)' ], + 'HTC One E8 dual sim' => [ 'HTC', 'One (E8)' ], + 'HTC M8S(d|s|t|w|x|y)!' => [ 'HTC', 'One (E8)' ], + 'HTCM8St' => [ 'HTC', 'One (E8)' ], + 'htc mecwhl' => [ 'HTC', 'One (E8)' ], + 'HTC 0PAJ1' => [ 'HTC', 'One (E8)' ], + 'HTC 0PAJ2' => [ 'HTC', 'One (E8)' ], + 'HTC 0PAJ4' => [ 'HTC', 'One (E8)' ], + 'HTC E9(pw|pt|t|w|x)!' => [ 'HTC', 'One (E9)' ], + 'HTC One E9s dual sim' => [ 'HTC', 'One (E9)' ], + 'HTC 0P8B2!' => [ 'HTC', 'One Mini 2' ], + 'HTC M8MINx' => [ 'HTC', 'One Mini 2' ], + 'HTC One mini 2' => [ 'HTC', 'One Mini 2' ], + 'htc memul' => [ 'HTC', 'One Mini 2' ], + 'HTC 10' => [ 'HTC', '10' ], // a.k.a. HTC One (M10) + 'HTC m10' => [ 'HTC', '10' ], // a.k.a. HTC One (M10) + 'HTC M10(h|u)!' => [ 'HTC', '10' ], // a.k.a. HTC One (M10) + 'HTC 2PS62' => [ 'HTC', '10' ], // a.k.a. HTC One (M10) + 'HTC 2PS6200' => [ 'HTC', '10' ], // a.k.a. HTC One (M10) + 'HTC 2PS650' => [ 'HTC', '10' ], // a.k.a. HTC One (M10) + 'HTC6545LVW' => [ 'HTC', '10' ], // a.k.a. HTC One (M10) + 'HTC 10 evo' => [ 'HTC', '10 evo' ], + 'HTC Raider!' => [ 'HTC', 'Raider 4G' ], + 'HTC Holiday' => [ 'HTC', 'Raider 4G' ], + 'HTC X710(a|e|s)!' => [ 'HTC', 'Raider 4G' ], + 'HTC PH39100!' => [ 'HTC', 'Raider 4G' ], + 'HTCRaider' => [ 'HTC', 'Raider 4G' ], + 'HTC Rezound' => [ 'HTC', 'Rezound' ], + 'HTC Rhyme!' => [ 'HTC', 'Rhyme' ], + 'HTC Bliss!' => [ 'HTC', 'Rhyme' ], + 'HTC S510b' => [ 'HTC', 'Rhyme' ], + 'HTC Salsa!' => [ 'HTC', 'Salsa' ], + 'HTC C510e' => [ 'HTC', 'Salsa' ], + 'HTC Sensation.*XE!' => [ 'HTC', 'Sensation XE' ], + 'HTC .*Z715(a|e)!' => [ 'HTC', 'Sensation XE' ], + 'HTC Sensation.*XL!' => [ 'HTC', 'Sensation XL' ], + 'HTC Runnymede' => [ 'HTC', 'Sensation XL' ], + 'HTC .*X315(b|e)!' => [ 'HTC', 'Sensation XL' ], + 'HTC G21!' => [ 'HTC', 'Sensation XL' ], + 'HTC ?Sensation!' => [ 'HTC', 'Sensation' ], + 'HTC Pyramid!' => [ 'HTC', 'Sensation' ], + 'HTC .*Z710(a|e|t)?!' => [ 'HTC', 'Sensation' ], + 'HTC G14!' => [ 'HTC', 'Sensation' ], + 'HTC Tattoo!' => [ 'HTC', 'Tattoo' ], + 'HTC Click' => [ 'HTC', 'Tattoo' ], + 'HTC A3288' => [ 'HTC', 'Tattoo' ], + 'HTC A9188' => [ 'HTC', 'Tianxi' ], + 'HTC X310e' => [ 'HTC', 'Titan' ], + 'HTC ETERNITY' => [ 'HTC', 'Titan' ], + 'HTC Polaris' => [ 'HTC', 'Touch Cruise' ], + 'HTC TOUCH DUAL' => [ 'HTC', 'Touch Dual' ], + 'HTC DiamondII EX' => [ 'HTC', 'Touch Diamond II' ], + 'HTC T7373' => [ 'HTC', 'Touch Pro II' ], + 'HTC Touch Pro' => [ 'HTC', 'Touch Pro' ], + 'HTC ThunderBolt( 4G)?!' => [ 'HTC', 'ThunderBolt'], + 'HTC Mecha' => [ 'HTC', 'ThunderBolt'], + 'HTC Kaiser' => [ 'HTC', 'TyTN II'], + 'HTC U Play' => [ 'HTC', 'U Play'], + 'HTC 2PZM1' => [ 'HTC', 'U Play'], + 'HTC 2PZM3' => [ 'HTC', 'U Play'], + 'HTC U Ultra' => [ 'HTC', 'U Ultra'], + 'HTC U-1w' => [ 'HTC', 'U Ultra'], + 'HTC 2PZF1' => [ 'HTC', 'U Ultra'], + 'HTC U11' => [ 'HTC', 'U11'], + 'HTC U-3w' => [ 'HTC', 'U11'], + 'HTC U-3u' => [ 'HTC', 'U11'], + 'HTC 2PZC100' => [ 'HTC', 'U11'], + 'HTC 2Q4D200' => [ 'HTC', 'U11 Plus'], + 'HTC 2Q3F2' => [ 'HTC', 'U11 Plus'], + 'HTC 2Q3F3' => [ 'HTC', 'U11 Plus'], + 'HTC Velocity!' => [ 'HTC', 'Velocity 4G'], + 'HTCVelocity 4G' => [ 'HTC', 'Velocity 4G'], + 'HTC Vivid' => [ 'HTC', 'Vivid'], + 'HTC ?Wildfire ?S!' => [ 'HTC', 'Wildfire S' ], + 'HTC .*A510(a|b|c|e)!' => [ 'HTC', 'Wildfire S' ], + 'HTC ?PG762!' => [ 'HTC', 'Wildfire S' ], + 'HTC Wildfire!' => [ 'HTC', 'Wildfire' ], + 'HTC Buzz!' => [ 'HTC', 'Wildfire' ], + 'HTC .*A33(33|35|66|80)!' => [ 'HTC', 'Wildfire' ], + 'HTC A3360' => [ 'HTC', 'Wildfire' ], + 'HTC A6390' => [ 'HTC', 'A6390' ], + 'HTC A8180' => [ 'HTC', 'A8180' ], + 'HTC S610d' => [ 'HTC', 'S610d' ], + 'HTC S715e' => [ 'HTC', 'S715e' ], + 'HTC T327d' => [ 'HTC', 'T327d' ], + 'HTC T327t' => [ 'HTC', 'T327t' ], + 'HTC T329t' => [ 'HTC', 'T329t' ], + 'HTC Z510d' => [ 'HTC', 'Z510d' ], + 'HTC PO681' => [ 'HTC', 'Droid DNA 2' ], + 'HTC PO682' => [ 'HTC', 'Butterfly S' ], + 'HTC GOF U' => [ 'HTC', 'Desire C' ], + 'HTC VLE U' => [ 'HTC', 'One S' ], + 'HTC VLE#U' => [ 'HTC', 'One S' ], + 'HTC VIE U' => [ 'HTC', 'One S' ], + 'HTC K2 UL' => [ 'HTC', 'One SV' ], + 'HTC Droid DNA' => [ 'HTC', 'Droid DNA' ], + 'HTC6435LRA' => [ 'HTC', 'Droid DNA' ], + 'HTC6435LVW!' => [ 'HTC', 'Droid DNA' ], + 'HTC Droid Incredible' => [ 'HTC', 'Droid Incredible' ], + 'HTC IncredibleC' => [ 'HTC', 'Droid Incredible' ], + 'HTC Droid Incredible 2' => [ 'HTC', 'Droid Incredible 2' ], + 'HTC EVA UTL' => [ 'HTC', 'One X' ], + 'HTC EVA UL' => [ 'HTC', 'One X' ], + 'HTC ENR U' => [ 'HTC', 'One X' ], + 'HTC EVARE UL' => [ 'HTC', 'One X+' ], + 'HTC ENRC2B' => [ 'HTC', 'One X+' ], + 'HTC 9089' => [ 'HTC', '9089' ], // COS + 'HTC ?909d!' => [ 'HTC', '909d' ], // COS + ], + + 'DLX' => [ 'HTC', 'Droid DNA' ], + 'DLXU' => [ 'HTC', 'Butterfly' ], + 'ENR U' => [ 'HTC', 'One X' ], + + 'Amaze 4G' => [ 'HTC', 'Amaze 4G' ], + 'Liberty' => [ 'HTC', 'Aria' ], + 'Butterfly S' => [ 'HTC', 'Butterfly S' ], + 'desire200' => [ 'HTC', 'Desire 200' ], + 'Desire 310 dual sim' => [ 'HTC', 'Desire 310' ], + 'Desire 500' => [ 'HTC', 'Desire 500' ], + 'Desire 500 Plus' => [ 'HTC', 'Desire 500' ], + 'Desire 510' => [ 'HTC', 'Desire 510' ], + 'Desire 610' => [ 'HTC', 'Desire 610' ], + 'Desire 619d' => [ 'HTC', 'Desire 619d' ], + 'Desire 816' => [ 'HTC', 'Desire 816' ], + 'Desire 816 dual sim' => [ 'HTC', 'Desire 816' ], + 'Desire ?HD!' => [ 'HTC', 'Desire HD' ], + 'Inspire HD' => [ 'HTC', 'Desire HD' ], + 'desirec' => [ 'HTC', 'Desire C' ], + 'Desire L by HTC' => [ 'HTC', 'Desire L' ], + 'Desire ?S!' => [ 'HTC', 'Desire S' ], + 'Desire X' => [ 'HTC', 'Desire X' ], + 'Desire Z' => [ 'HTC', 'Desire Z' ], + 'Desire!' => [ 'HTC', 'Desire' ], + 'Dream' => [ 'HTC', 'Dream' ], + 'GinDream/GinMagic' => [ 'HTC', 'Dream' ], + 'SiRF Dream' => [ 'HTC', 'Dream' ], + 'Eris' => [ 'HTC', 'Droid Eris' ], + 'Droid Incredible' => [ 'HTC', 'Droid Incredible' ], + 'Incredible' => [ 'HTC', 'Droid Incredible' ], /* Verizon */ + 'Incredible 2' => [ 'HTC', 'Droid Incredible 2' ], /* Verizon */ + 'EVO' => [ 'HTC', 'EVO' ], + 'Evo HD2' => [ 'HTC', 'EVO HD' ], + 'EVO ?3D!' => [ 'HTC', 'EVO 3D' ], + 'EVO 4G' => [ 'HTC', 'EVO 4G' ], + 'Evo V 4G' => [ 'HTC', 'EVO V 4G' ], + 'Explorer A310e' => [ 'HTC', 'Explorer' ], + 'Flyer' => [ 'HTC', 'Flyer', DeviceType::TABLET ], + 'photon' => [ 'HTC', 'HD mini' ], + 'HD2' => [ 'HTC', 'HD2' ], + 'NexusHD2' => [ 'HTC', 'HD2' ], + 'Nexus HD2' => [ 'HTC', 'HD2' ], + 'HD2 LEO' => [ 'HTC', 'HD2' ], + 'HD7 Pro' => [ 'HTC', 'HD7 Pro' ], + 'Hero' => [ 'HTC', 'Hero' ], + 'HERO CDMA' => [ 'HTC', 'Hero' ], + 'HERO200' => [ 'HTC', 'Hero 200' ], + 'Incredible ?S!' => [ 'HTC', 'Incredible S' ], + 'Incredible ?2!' => [ 'HTC', 'Incredible 2' ], + 'Incredible 4G LTE' => [ 'HTC', 'Incredible' ], + 'Inspire 4G' => [ 'HTC', 'Inspire 4G' ], + 'Legend' => [ 'HTC', 'Legend' ], + 'Docomo HT-03A' => [ 'HTC', 'Magic HT-03A', 'carrier' => 'DoCoMo' ], + 'One S' => [ 'HTC', 'One S' ], + 'One X' => [ 'HTC', 'One X' ], + 'One X+' => [ 'HTC', 'One X+' ], + 'One XL' => [ 'HTC', 'One XL' ], + 'One V' => [ 'HTC', 'One V' ], + 'One' => [ 'HTC', 'One' ], + 'One M7' => [ 'HTC', 'One' ], + 'EndeavorU' => [ 'HTC', 'One X' ], + '2PQ93' => [ 'HTC', 'One (A9)' ], + 'm8wl' => [ 'HTC', 'One (M8)' ], + 'one m8' => [ 'HTC', 'One (M8)' ], + 'Rezound' => [ 'HTC', 'Rezound' ], + 'MIUI.us Sensation 4G' => [ 'HTC', 'Sensation 4G' ], + 'SensationXE!' => [ 'HTC', 'Sensation XE' ], + 'SensationXL!' => [ 'HTC', 'Sensation XL' ], + 'Sensation XL with Beats Audio' => [ 'HTC', 'Sensation XL' ], + 'Sensation!' => [ 'HTC', 'Sensation' ], + 'Pyramid' => [ 'HTC', 'Sensation' ], + 'Touch Pro 2' => [ 'HTC', 'Touch Pro II' ], + 'TripNiCE Pyramid' => [ 'HTC', 'Sensation' ], + 'VitMod ExtraLite 1.6.5.fullodex for HTC HD7 Pro' => [ 'HTC', 'HD7 Pro' ], + 'Vivid 4G' => [ 'HTC', 'Vivid 4G' ], + 'Wildfire S!' => [ 'HTC', 'Wildfire S' ], + 'Wildfire!' => [ 'HTC', 'Wildfire' ], + 'Click' => [ 'HTC', 'Tattoo' ], + + 'Sprint!!' => [ + 'Sprint APX515CKT' => [ 'HTC', 'EVO 3D' ], + 'Sprint APA9292KT' => [ 'HTC', 'EVO 4G' ], + 'Sprint APA7373KT' => [ 'HTC', 'EVO Shift 4G' ], + 'Sprint APC715CKT' => [ 'HTC', 'EVO Design 4G' ], + 'Sprint ATP515CKIT' => [ 'HTC', 'EVO View 4G', DeviceType::TABLET ], + ], + + '710C' => [ 'HTC', 'Desire 816' ], + '801a' => [ 'HTC', 'One' ], + '801s' => [ 'HTC', 'One' ], + '802w' => [ 'HTC', 'One' ], + '831C' => [ 'HTC', 'One (M8)' ], + '909d' => [ 'HTC', '909d' ], // COS + '9088' => [ 'HTC', '9088' ], // COS + + 'A320a' => [ 'HTC', 'Desire C' ], + 'A3380' => [ 'HTC', 'Wildfire' ], + 'A6277' => [ 'HTC', 'Hero' ], + 'a7272' => [ 'HTC', 'Desire Z' ], + 'A7272+(HTC DesireZ)' => [ 'HTC', 'Desire Z' ], + 'C525c' => [ 'HTC', 'One SV' ], + 'D816(d|t|v|w|x)!' => [ 'HTC', 'Desire 816' ], + 'D816G' => [ 'HTC', 'Desire 816G' ], + 'D820mt' => [ 'HTC', 'Desire 820 Mini' ], + 'S710d' => [ 'HTC', 'Droid Incredible 2' ], + 'S710D' => [ 'HTC', 'Droid Incredible 2' ], + 'T320a' => [ 'HTC', 'One V' ], + 'X325a' => [ 'HTC', 'One X' ], + 'X515d' => [ 'HTC', 'EVO 3D' ], + 'X515e' => [ 'HTC', 'EVO 4G+' ], + 'X525a' => [ 'HTC', 'One X+' ], + 'X710E' => [ 'HTC', 'Raider 4G' ], + 'X920e' => [ 'HTC', 'J Butterfly' ], + 'Z520e' => [ 'HTC', 'One S' ], + 'Z520m' => [ 'HTC', 'One S' ], + 'Z710' => [ 'HTC', 'Sensation' ], + 'Z710e' => [ 'HTC', 'Sensation' ], + 'Z715e' => [ 'HTC', 'Sensation XE' ], + 'T9199h' => [ 'HTC', 'T9199h' ], + + '(HTC|PCD|USCC)?ADR[0-9]{4,4}!!' => [ + 'ADR6200' => [ 'HTC', 'Droid Eris' ], + 'ADR6225' => [ 'HTC', 'Wildfire 6225' ], + 'HTCADR6290US' => [ 'HTC', 'One V' ], + 'ADR6300' => [ 'HTC', 'Droid Incredible' ], + 'ADR6325!' => [ 'HTC', 'Merge' ], + 'ADR6330VW' => [ 'HTC', 'Rhyme' ], + 'ADR6350' => [ 'HTC', 'Droid Incredible 2' ], + 'ADR6400L!' => [ 'HTC', 'Thunderbolt 4G' ], + 'ADR6410LRA!' => [ 'HTC', 'Droid Incredible 4G' ], + 'ADR6410LVW!' => [ 'HTC', 'Droid Incredible 4G' ], + 'ADR6410OM' => [ 'HTC', 'Droid Incredible 4G' ], + 'ADR6425LVW!' => [ 'HTC', 'Rezound' ], + 'pcdadr6350' => [ 'HTC', 'Droid Incredible 2' ], + 'USCCADR6275US!' => [ 'HTC', 'Desire' ], + 'USCCADR6285US!' => [ 'HTC', 'Hero S' ], + 'USCCADR6325US!' => [ 'HTC', 'Merge' ], + 'USCCADR6230US!' => [ 'HTC', 'Wildfire S' ], + ], + + 'ERIS ADR6200' => [ 'HTC', 'Droid Eris' ], + 'ATP515CKIT' => [ 'HTC', 'EVO View 4G' ], + 'Coquettish Red' => [ 'HTC', 'Rezound' ], + 'PB99400' => [ 'HTC', 'Desire' ], + 'PC36100!' => [ 'HTC', 'EVO 4G' ], + 'PG06100' => [ 'HTC', 'EVO Shift 4G' ], + 'PG41200' => [ 'HTC', 'EVO View 4G', DeviceType::TABLET ], + 'PG86100!' => [ 'HTC', 'EVO 3D' ], + 'PH44100' => [ 'HTC', 'EVO Design 4G' ], + 'PJ83100' => [ 'HTC', 'One X' ], + 'PJ35100' => [ 'HTC', 'One VX' ], + 'PM36100' => [ 'HTC', 'One VX' ], + 'PM63100' => [ 'HTC', 'One X+' ], + '0PCV1' => [ 'HTC', 'Desire 510' ], + '0PM92' => [ 'HTC', 'Desire 626s' ], + '0PJA1!' => [ 'HTC', 'One (M9)' ], + '0PJA2!' => [ 'HTC', 'One (M9)' ], + '0PKV1' => [ 'HTC', 'One (M8s)' ], + '0PAJ5' => [ 'HTC', 'One (E8)' ], + '2PS64' => [ 'HTC', '10' ], + 'M7CDTU' => [ 'HTC', 'One' ], + + '[SX06][0-9]{2,2}HT!!' => [ + 'S31HT' => [ 'HTC', 'Aria S31HT', 'carrier' => 'EMOBILE' ], + 'X06HT' => [ 'HTC', 'Desire X06HT', 'carrier' => 'Softbank' ], + '001HT' => [ 'HTC', 'Desire HD 001HT', 'carrier' => 'Softbank' ], + '601HT' => [ 'HTC', 'U11 601HT', 'carrier' => 'Softbank' ], + ], + + 'ISW[0-9]{2,2}HT!!' => [ + 'ISW11HT!' => [ 'HTC', 'EVO WiMAX ISW11HT', 'carrier' => 'au' ], + 'ISW12HT!' => [ 'HTC', 'EVO 3D ISW12HT', 'carrier' => 'au' ], + 'ISW13HT!' => [ 'HTC', 'J ISW13HT', 'carrier' => 'au' ], + ], + + '(HTC )?HT[LV][0-9]{2,2}!!' => [ + 'HTL21!' => [ 'HTC', 'J Butterfly HTL21', 'carrier' => 'au' ], + 'HTL22' => [ 'HTC', 'J One HTL22', 'carrier' => 'au' ], + 'HTC HTL22' => [ 'HTC', 'J One HTL22', 'carrier' => 'au' ], + 'HTL23!' => [ 'HTC', 'J Butterfly HTL23', 'carrier' => 'au' ], + 'HTV31!' => [ 'HTC', 'J Butterfly HTV31', 'carrier' => 'au' ], + 'HTV32!' => [ 'HTC', '10 HTV32', 'carrier' => 'au' ], + ], + + 'GT-T9500' => [ 'HTM', 'GT-T9500' ], + 'SM-H900A' => [ 'HTM', 'SM-H900A' ], + 'Z1-H39LW' => [ 'HTM', 'Z1-H39LW' ], + + 'Huawei MediaPad' => [ 'Huawei', 'MediaPad', DeviceType::TABLET ], + 'Huawei OsiMood MediaPad' => [ 'Huawei', 'MediaPad', DeviceType::TABLET ], + 'HUAWEI MediaPad M1 8.0' => [ 'Huawei', 'MediaPad M1', DeviceType::TABLET ], + 'Huawei MediaPad T1 7.0 3G' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'Huawei MediaPad T1 8.0 4G' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'Huawei MediaPad T1 10 4G' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + + 'MediaPad!!' => [ + 'MediaPad' => [ 'Huawei', 'MediaPad', DeviceType::TABLET ], + 'MediaPad 7 FHD' => [ 'Huawei', 'MediaPad 7', DeviceType::TABLET ], + 'MediaPad 7 Classic' => [ 'Huawei', 'MediaPad 7 Classic', DeviceType::TABLET ], + 'MediaPad 7 Lite' => [ 'Huawei', 'MediaPad 7 Lite', DeviceType::TABLET ], + 'MediaPad 7 Lite+' => [ 'Huawei', 'MediaPad 7 Lite+', DeviceType::TABLET ], + 'MediaPad 7 Lite II' => [ 'Huawei', 'MediaPad 7 Lite II', DeviceType::TABLET ], + 'MediaPad 7 Vivid' => [ 'Huawei', 'MediaPad 7 Vivid', DeviceType::TABLET ], + 'MediaPad 7 Vogue' => [ 'Huawei', 'MediaPad 7 Vogue', DeviceType::TABLET ], + 'MediaPad 7 Voguevivi' => [ 'Huawei', 'MediaPad 7 Vogue', DeviceType::TABLET ], + 'MediaPad 7 Youth' => [ 'Huawei', 'MediaPad 7 Youth', DeviceType::TABLET ], + 'MediaPad 7 Youth2' => [ 'Huawei', 'MediaPad 7 Youth 2', DeviceType::TABLET ], + 'MediaPad 7 Youth 2' => [ 'Huawei', 'MediaPad 7 Youth 2', DeviceType::TABLET ], + 'MediaPad 8 Vogue' => [ 'Huawei', 'MediaPad 8 Vogue', DeviceType::TABLET ], + 'MediaPad 10 FHD' => [ 'Huawei', 'MediaPad 10', DeviceType::TABLET ], + 'MediaPad 10 LINK' => [ 'Huawei', 'MediaPad 10 Link', DeviceType::TABLET ], + 'MediaPad 10 Link+' => [ 'Huawei', 'MediaPad 10 Link', DeviceType::TABLET ], + 'MediaPad M1 8.0' => [ 'Huawei', 'MediaPad M1', DeviceType::TABLET ], + 'MediaPad M1 8.0 (LTE)' => [ 'Huawei', 'MediaPad M1', DeviceType::TABLET ], + 'MediaPad M1 8.0 (WIFI)' => [ 'Huawei', 'MediaPad M1', DeviceType::TABLET ], + 'MediaPad T1 8.0' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'MediaPad T1 8.0 LTE' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'MediaPad T1 8.0 Pro' => [ 'Huawei', 'MediaPad T1 Pro', DeviceType::TABLET ], + 'MediaPad X1 7.0' => [ 'Huawei', 'MediaPad X1', DeviceType::TABLET ], + 'MediaPad X1' => [ 'Huawei', 'MediaPad X1', DeviceType::TABLET ], + 'MediaPad 7D' => [ 'Huawei', 'MediaPad X1', DeviceType::TABLET ], + 'MediaPad X1 S 7.0' => [ 'Huawei', 'MediaPad X1 S', DeviceType::TABLET ], + ], + + '(Huawei )?[MSTX](1|2|7|8|10)\-[A-Z0-9][0-9]{2,2}!!' => [ + 'Huawei S7-312u' => [ 'Huawei', 'MediaPad', DeviceType::TABLET ], + 'S7-721u' => [ 'Huawei', 'MediaPad 7 Youth 2', DeviceType::TABLET ], + 'S10-232L' => [ 'Huawei', 'MediaPad 10 Link', DeviceType::TABLET ], + 'S8-303L' => [ 'Huawei', 'MediaPad M1', DeviceType::TABLET ], + 'S8-303LT' => [ 'Huawei', 'MediaPad M1', DeviceType::TABLET ], + 'S8-306L' => [ 'Huawei', 'MediaPad M1', DeviceType::TABLET ], + 'HUAWEI M2-A01L' => [ 'Huawei', 'MediaPad M2', DeviceType::TABLET ], + 'HUAWEI M2-A01W' => [ 'Huawei', 'MediaPad M2', DeviceType::TABLET ], + 'HUAWEI M2-801L' => [ 'Huawei', 'MediaPad M2', DeviceType::TABLET ], + 'HUAWEI M2-801W' => [ 'Huawei', 'MediaPad M2', DeviceType::TABLET ], + 'Huawei M2-802L' => [ 'Huawei', 'MediaPad M2', DeviceType::TABLET ], + 'HUAWEI M2-803L' => [ 'Huawei', 'MediaPad M2', DeviceType::TABLET ], + 'S8-701u' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-A21L' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-A21w' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-A22L' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-A23L' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-701u' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-701ua' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-701w' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-821w' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-821L' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'T1-823L' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'S8-701w' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'S8-821w' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + ], + + 'T1 7.0' => [ 'Huawei', 'MediaPad T1', DeviceType::TABLET ], + 'X1 7.0' => [ 'Huawei', 'MediaPad X1', DeviceType::TABLET ], + '7D-501u' => [ 'Huawei', 'MediaPad X1', DeviceType::TABLET ], + 'GEM-702L' => [ 'Huawei', 'MediaPad X2', DeviceType::TABLET ], + 'GEM-703L' => [ 'Huawei', 'MediaPad X2', DeviceType::TABLET ], + 'HUAWEI GEM-703L' => [ 'Huawei', 'MediaPad X2', DeviceType::TABLET ], + 'PLE-701L' => [ 'Huawei', 'MediaPad T2', DeviceType::TABLET ], + 'PLE-703L' => [ 'Huawei', 'MediaPad T2', DeviceType::TABLET ], + 'FDR-A01w' => [ 'Huawei', 'MediaPad T2', DeviceType::TABLET ], + 'BGO-(DL09|L03)!' => [ 'Huawei', 'MediaPad T2', DeviceType::TABLET ], + 'KOB-(L09|W09)!' => [ 'Huawei', 'MediaPad T3', DeviceType::TABLET ], + 'AGS-(L09|W09)!' => [ 'Huawei', 'MediaPad T3', DeviceType::TABLET ], + 'BG2-(U01)!' => [ 'Huawei', 'MediaPad T3', DeviceType::TABLET ], + 'BTV-(DL09|W09)!' => [ 'Huawei', 'MediaPad M3', DeviceType::TABLET ], + 'CPN-(W09|AL00|L09)!' => [ 'Huawei', 'MediaPad M3 Lite', DeviceType::TABLET ], + 'BAH-(W09|AL00|L09)!' => [ 'Huawei', 'MediaPad M3 Lite', DeviceType::TABLET ], + + 'JDN-W09' => [ 'Huawei', 'Honor Pad 2', DeviceType::TABLET ], + + '(HUAWEI )?(ALP|BLA|CRR|LON|MATE|MHA|MT1|MT2|MT7|M200|NXT|Z100)!!' => [ + '(HW-|HUAWEI )?MT1-(T00|U06)!' => [ 'Huawei', 'Ascend Mate' ], + '(HW-|HUAWEI )?MATE-U06!' => [ 'Huawei', 'Ascend Mate' ], + '(HW-|HUAWEI )?MT2-?(C00|L01|L02|L03|L05)!' => [ 'Huawei', 'Ascend Mate 2' ], + '(HW-|HUAWEI )?MT7-(L09|J1|CL00|TL00|TL10|UL00)!' => [ 'Huawei', 'Ascend Mate 7' ], + '(HW-|HUAWEI )?Z100-(L09|TL00|TL10)!' => [ 'Huawei', 'Ascend Mate 7' ], + '(HW-|HUAWEI )?NXT-(AL10|CL00|DL00|L09|L29|TL00|UL00|UL10)!' => [ 'Huawei', 'Mate 8' ], + '(HW-|HUAWEI )?M200-(L09|UL00)!' => [ 'Huawei', 'Mate 8' ], + '(HW-|HUAWEI )?MHA-(AL00|L09|L29|TL00)!' => [ 'Huawei', 'Mate 9' ], + '(HW-|HUAWEI )?LON-(AL00|L29)!' => [ 'Huawei', 'Mate 9 Pro' ], + '(HW-|HUAWEI )?ALP-(AL00|L09|L29|TL00)!' => [ 'Huawei', 'Mate 10' ], + '(HW-|HUAWEI )?BLA-(A09|AL00|L09|L29|L30|TL00)!' => [ 'Huawei', 'Mate 10 Pro' ], + '(HW-|HUAWEI )?CRR-(L09|CL00|CL20|TL00|UL00|UL20)!' => [ 'Huawei', 'Mate S' ], + ], + + '(HW-|HUAWEI )?(DRA|FLA|TIT|TAG|NCE|TRT|SLA)!!' => [ + '(HW-|HUAWEI )?TIT-(AL00|CL00|CL10|L01|TL00|U02)!' => [ 'Huawei', 'Enjoy 5' ], + '(HW-|HUAWEI )?TAG-(AL00|CL00|L13|TL00)!' => [ 'Huawei', 'Enjoy 5S' ], + '(HW-|HUAWEI )?NCE-(AL00|AL10|TL10)!' => [ 'Huawei', 'Enjoy 6' ], + '(HW-|HUAWEI )?SLA-(AL00|L02|L03|L22|TL10)!' => [ 'Huawei', 'Enjoy 7' ], + '(HW-|HUAWEI )?TRT-(AL00|L21|L53|LX1|LX2|LX3|TL10)!' => [ 'Huawei', 'Enjoy 7 Plus' ], + '(HW-|HUAWEI )?FLA-(AL10|AL20|LX1|LX2|LX3|TL10)!' => [ 'Huawei', 'Enjoy 8 Plus' ], + '(HW-|HUAWEI )?DRA-(AL00|L01|L21|LX2)!' => [ 'Huawei', 'Enjoy 8e' ], + ], + + '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HN3|H30|H60|HOL|JMM|KIW|LLD|NEM|NMO|PE|PLK|RNE|SCL|KNT|CAM|STF|HDN)!!' => [ + 'H30 U10' => [ 'Huawei', 'Honor 3C' ], + '(HW-|HUAWEI )?HN3-(U00|U01)!' => [ 'Huawei', 'Honor 3' ], + '(HW-|HUAWEI |HONOR )?H30[- ](C00|L01|L02|T00|T10|U10)!' => [ 'Huawei', 'Honor 3C' ], + '(HW-|HUAWEI )?HOL-(T00|U10|U19|U40)!' => [ 'Huawei', 'Honor 3C' ], + '(HW-|HUAWEI )?CHM-(CL00|TL00H|TL00|U01|UL00)!' => [ 'Huawei', 'Honor Play 4C' ], + '(HW-|HUAWEI )?SCL-(L01|L02|L03|L04|L21|L32|L001|L004|AL00|CL00|TL00|TL00H|TL10|U23|U31)!' => [ 'Huawei', 'Honor 4A' ], + '(HW-|HUAWEI )?CHE-(TL00|TL00H)!' => [ 'Huawei', 'Honor 4X' ], + '(HW-|HUAWEI )?Che1-(L04|CL10|CL20)!' => [ 'Huawei', 'Honor 4X' ], + '(HW-|HUAWEI )?Che2-(L11|L12|L23|TL00|UL00)!' => [ 'Huawei', 'Honor 4X' ], + '(HW-|HUAWEI )?NEM-(AL10|CL00|L21|L22|L51|TL00|TL00H|UL10)!' => [ 'Huawei', 'Honor 5C' ], + '(HW-|HUAWEI )?NMO-(L22|L23|L31)!' => [ 'Huawei', 'Honor 5C' ], + '(HW-|HUAWEI )?KIW-(AL10|CL00|L21|L22|L24|UL00|TL00|TL00H)!' => [ 'Huawei', 'Honor 5X' ], + '(HW-|HUAWEI )?H60-(J1|L01|L02|L03|L04|L11|L12|L21)!' => [ 'Huawei', 'Honor 6' ], + '(HW-|HUAWEI )?DLI-(AL10|L22|L42|TL20)!' => [ 'Huawei', 'Honor 6A' ], + '(HW-|HUAWEI )?BLN-(AL10|AL20|AL30|AL40|L21|L22|L24|TL00|TL10)!' => [ 'Huawei', 'Honor 6X' ], + '(HW-|HUAWEI )?PE-(CL00|TL00|TL00M|TL10|TL20|UL00)!' => [ 'Huawei', 'Honor 6 Plus' ], + '(HW-|HUAWEI |HONOR )?PLK-(L01|AL10|CL00|UL00|TL00|TL01H)!' => [ 'Huawei', 'Honor 7' ], + '(HW-|HUAWEI )?ATH-(AL00|CL00|TL00|TL00H|UL00)!' => [ 'Huawei', 'Honor 7i' ], + '(HW-|HUAWEI )?BND-(AL00|AL10|L21|L24|L31|L34|TL10)!' => [ 'Huawei', 'Honor 7X' ], + '(HW-|HUAWEI )?DUA-(AL00)!' => [ 'Huawei', 'Honor 7 Play' ], + '(HW-|HUAWEI )?FRD-(AL00|AL10|DL00|L02|L04|L09|L14|L19)!' => [ 'Huawei', 'Honor 8' ], + '(HW-|HUAWEI )?ATH-(UL01|UL06)!' => [ 'Huawei', 'Honor ShotX' ], + '(HW-|HUAWEI )?KNT-(AL10|AL20|TL10|UL10)!' => [ 'Huawei', 'Honor V8' ], + '(HW-|HUAWEI )?EDI-(AL10)!' => [ 'Huawei', 'Honor Note 8' ], + '(HW-|HUAWEI )?STF-(AL00|AL10|L09|TL10)!' => [ 'Huawei', 'Honor 9' ], + '(HW-|HUAWEI )?LLD-(AL00|AL10|AL20|L21|L31)!' => [ 'Huawei', 'Honor 9 Lite' ], + '(HW-|HUAWEI )?RNE-(AL00|L01|L02|L03|L21|L22|L23|L31)!' => [ 'Huawei', 'Honor 9i' ], + '(HW-|HUAWEI )?COL-(AL00|AL10|L29|TL00|TL10)!' => [ 'Huawei', 'Honor 10' ], + '(HW-|HUAWEI )?DUK-(AL20|L09|TL30)!' => [ 'Huawei', 'Honor V9' ], + '(HW-|HUAWEI )?JMM-(AL00|AL10|L22|L22HN|TL00)!' => [ 'Huawei', 'Honor V9 Play' ], + '(HW-|HUAWEI )?BKL-(AL00|AL20|L04|L09)!' => [ 'Huawei', 'Honor V10' ], + '(HW-|HUAWEI )?HDN-(L09|W09)!' => [ 'Huawei', 'Honor WaterPlay', DeviceType::TABLET ], + ], + + '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!' => [ + '(HW-|HUAWEI )?CHC-(U01|U03|U23)!' => [ 'Huawei', 'G Play Mini' ], + '(HW-|HUAWEI )?TAG-(L01|L03|L21|L22|L23|L32)!' => [ 'Huawei', 'GR3' ], + '(HW-|HUAWEI )?KII-(L03|L05|L21|L22|L23|L33)!' => [ 'Huawei', 'GR5' ], + '(HW-|HUAWEI )?BLL-(L21|L22|L23)!' => [ 'Huawei', 'GR5 (2017)' ], + ], + + '(HW-|HUAWEI )?(ALE|ANE|D2|DAV|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|VIE|VKY|VNS|VTR|WAS)!!' => [ + 'HUAWEI D2' => [ 'Huawei', 'Ascend D2' ], + '(HW-|HUAWEI )?D2-(0082|2010|5000|6070|6114)!' => [ 'Huawei', 'Ascend D2' ], + '(HW-|HUAWEI )?G6-(C00|L11|L22|L33|T00|U00|U10|U34|U251)!' => [ 'Huawei', 'Ascend G6' ], + '(HW-|HUAWEI )?G7-(L01|L02|L03|L11|TL00|UL20)!' => [ 'Huawei', 'Ascend G7' ], + 'HUAWEI G7' => [ 'Huawei', 'Ascend G7' ], + '(HW-|HUAWEI )?RIO-(L01|L02|L03|AL00|UL00|CL00|TL00)!' => [ 'Huawei', 'Ascend G8' ], + '(HW-|HUAWEI )?SC-(CL00|UL10)!' => [ 'Huawei', 'Ascend GX1' ], + '(HW-|HUAWEI )?P2-(0000|6011|6070)!' => [ 'Huawei', 'Ascend P2' ], + '(HW-|HUAWEI )?P6-(C00|U00|U06|T00|T00V|VIP)!' => [ 'Huawei', 'Ascend P6' ], + '(HW-|HUAWEI )?P6 ?S-U06!' => [ 'Huawei', 'Ascend P6' ], + '(HW-|HUAWEI )?Sophia-(L07|L10)!' => [ 'Huawei', 'Ascend P7' ], + '(HW-|HUAWEI )?P7-(L00|L01|L05|L07|L09|L10|L11|L12)!' => [ 'Huawei', 'Ascend P7' ], + '(HW-|HUAWEI )?M100-(CL00|L09|TL00|UL00)!' => [ 'Huawei', 'P8' ], + '(HW-|HUAWEI )?GRA-(CL00|CL10|L09|TL00|UL00|UL10)!' => [ 'Huawei', 'P8' ], + '(HW-|HUAWEI )?ALE-?(L02|L04|L21|L23|CL00|TL00|UL00)!' => [ 'Huawei', 'P8 Lite' ], + '(HW-|HUAWEI )?PRA-?(AL00|LA1|LX1|LX2|LX3|TL10)!' => [ 'Huawei', 'P8 Lite (2017)' ], + '(HW-|HUAWEI )?DAV-?(703L)!' => [ 'Huawei', 'P8 Max' ], + '(HW-|HUAWEI )?EVA-?(AL00|AL10|CL00|DL00|L09|L19|L29|TL00)!' => [ 'Huawei', 'P9' ], + '(HW-|HUAWEI )?VNS-?(AL00|DL00|L21|L22|L23|L31|L52|L53|L62|TL00)!' => [ 'Huawei', 'P9 Lite' ], + '(HW-|HUAWEI )?VIE-?(AL00|AL10|L09|L29)!' => [ 'Huawei', 'P9 Plus' ], + '(HW-|HUAWEI )?VTR-?(AL00|L09|L29|TL00)!' => [ 'Huawei', 'P10' ], + '(HW-|HUAWEI )?WAS-?(AL00|L03T|LX1|LX1A|LX2|LX2J|LX3|TL10)!' => [ 'Huawei', 'P10 Lite' ], + '(HW-|HUAWEI )?VKY-?(AL00|L09|L29|TL00)!' => [ 'Huawei', 'P10 Plus' ], + '(HW-|HUAWEI )?FIG-?(AL00|AL10|LA1|LX1|LX3|TL00)!' => [ 'Huawei', 'P Smart' ], + '(HW-|HUAWEI )?EML-?(AL00|L09|L29|TL00)!' => [ 'Huawei', 'P20' ], + '(HW-|HUAWEI )?ANE-?(AL00|L21|LX1|LX2|LX2J|LX3)!' => [ 'Huawei', 'P20 lite' ], + ], + + 'Rock-(AL00|CL00|L01|L03)!' => [ 'Huawei', 'Ascend G7' ], + 'HUAWEI A168-(AL10|DL09|L09|L29)!' => [ 'Huawei', 'P9' ], + + '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!' => [ + '(HW-|HUAWEI )?CRO-(L02|L03|L22|U00)!' => [ 'Huawei', 'Y3 (2017)' ], + '(HW-|HUAWEI )?LUA-(L01|L02|L03|L13|L21|L22|L23|U02|U03|U22|U23)!' => [ 'Huawei', 'Y3 II' ], + '(HW-|HUAWEI )?CUN-(AL00|L01|L02|L03|L21|L22|L23|L33|TL00|U29)!' => [ 'Huawei', 'Y5 II' ], + '(HW-|HUAWEI )?MYA-(AL10|L02|L03|L11|L13|L22|L23|L41|TL10)!' => [ 'Huawei', 'Y5 (2017)' ], + '(HW-|HUAWEI )?SCC-(U21)!' => [ 'Huawei', 'Y6' ], + '(HW-|HUAWEI )?SCU-(U31)!' => [ 'Huawei', 'Y6C' ], + '(HW-|HUAWEI )?CAM-(L01|L03|L11|L21|L23|L32|AL00|CL00|TL00|UL00)!' => [ 'Huawei', 'Y6 II' ], + '(HW-|HUAWEI )?LYO-(L01|L02|L21)!' => [ 'Huawei', 'Y6 II Compact' ], + '(HW-|HUAWEI )?LDN-(AL00|L01|L21|LX2|LX3|TL00)!' => [ 'Huawei', 'Y7 Prime (2018)' ], + ], + + '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!' => [ 'Huawei', 'Nova' ], + '(HW-|HUAWEI )?CAN-(L01|L11|L12)!' => [ 'Huawei', 'Nova' ], + '(HW-|HUAWEI )?MLA-(L01|L03|L11|L12|L13)!' => [ 'Huawei', 'Nova Plus' ], + '(HW-|HUAWEI )?DIG-(AL00|L01|L03|L21|TL10)!' => [ 'Huawei', 'Nova Smart' ], + '(HW-|HUAWEI )?BAC-(AL00|L03|L21|L22|TL00)!' => [ 'Huawei', 'Nova 2 Plus' ], + '(HW-|HUAWEI )?HWI-(AL00|TL00)!' => [ 'Huawei', 'Nova 2S' ], + '(HW-|HUAWEI )?MLA-(AL00|AL10)!' => [ 'Huawei', 'Maimang 5' ], + '(HW-|HUAWEI )?MLA-(TL00|TL10|UL00)!' => [ 'Huawei', 'G9 Plus' ], + + 'Huawei P7 mini' => [ 'Huawei', 'Ascend P7 mini' ], + 'Huawei P8max' => [ 'Huawei', 'P8 Max' ], + + 'G[0-9]{3,3}!!' => [ + 'G350-(U00|U151)!' => [ 'Huawei', 'Ascend G350' ], + 'G521-(L076|L176)!' => [ 'Huawei', 'Ascend G521' ], + 'G526-(L11|L22|L33)!' => [ 'Huawei', 'Ascend G526' ], + 'G527-(U081)!' => [ 'Huawei', 'Ascend G527' ], + 'G535-(L11)!' => [ 'Huawei', 'Ascend G535' ], + 'G610[ -](T00|T11|U00|U15)!' => [ 'Huawei', 'Ascend G610' ], + 'G615-U10' => [ 'Huawei', 'Ascend G615' ], + 'G616-T00' => [ 'Huawei', 'Ascend G616' ], + 'G618' => [ 'Huawei', 'Ascend G618' ], + 'G620-L75' => [ 'Huawei', 'Ascend G620' ], + 'G620S-(L01|L02|L03|UL00)!' => [ 'Huawei', 'Ascend G620S' ], + 'G621-(TL00|TL00M)!' => [ 'Huawei', 'Ascend G621' ], + 'G629-(UL00)!' => [ 'Huawei', 'Ascend G629' ], + 'G630-(U00|U10|U20|U251)!' => [ 'Huawei', 'Ascend G630' ], + 'G700-(U10|U20|T00)!' => [ 'Huawei', 'Ascend G700' ], + 'G730-(U00|T00)!' => [ 'Huawei', 'Ascend G730' ], + 'G735-(L03|L12|L23)!' => [ 'Huawei', 'Ascend G735' ], + 'G740-L00' => [ 'Huawei', 'Ascend G740' ], + 'G750-(T00|T01|T20)!' => [ 'Huawei', 'Ascend G750' ], + 'G760-(L01|TL00)!' => [ 'Huawei', 'Ascend G760' ], + ], + + 'Y[0-9]{3,3}!!' => [ + 'Y220-(U00|U05|U10|U17)!' => [ 'Huawei', 'Ascend Y220' ], + 'Y220T' => [ 'Huawei', 'Ascend Y220' ], + 'Y221-(U22)!' => [ 'Huawei', 'Ascend Y221' ], + 'Y301-(A1|A2)!' => [ 'Huawei', 'Valiant' ], + 'Y320-(U01|U10|U151)!' => [ 'Huawei', 'Ascend Y320' ], + 'Y325-T00' => [ 'Huawei', 'Ascend Y325' ], + 'Y330-U11' => [ 'Huawei', 'Ascend Y330' ], + 'Y340-U081' => [ 'Huawei', 'Ascend Y340' ], + 'Y511' => [ 'Huawei', 'Ascend Y511' ], + 'Y511-(T00|U00|U30)!' => [ 'Huawei', 'Ascend Y511' ], + 'Y536A1' => [ 'Huawei', 'Ascend Y536' ], + 'Y540-U01' => [ 'Huawei', 'Ascend Y540' ], + 'Y541-U02' => [ 'Huawei', 'Ascend Y541' ], + 'Y550-(L02|L03)!' => [ 'Huawei', 'Ascend Y550' ], + 'Y560-L01' => [ 'Huawei', 'Ascend Y560' ], + 'Y600-U00' => [ 'Huawei', 'Ascend Y600' ], + 'Y618-T00' => [ 'Huawei', 'Ascend Y618' ], + 'Y635-(L01|L02|L03|L21|L22)!' => [ 'Huawei', 'Ascend Y635' ], + ], + + '(Huawei|Ascend|HW-)!!' => [ + 'Huawei A199' => [ 'Huawei', 'A199' ], + 'Huawei B199' => [ 'Huawei', 'B199' ], + 'Huawei C199' => [ 'Huawei', 'C199' ], + 'HUAWEI C199s' => [ 'Huawei', 'C199s' ], + 'Huawei C8500!' => [ 'Huawei', 'C8500' ], + 'HUAWEI C8550!' => [ 'Huawei', 'C8550' ], + 'Huawei C8600' => [ 'Huawei', 'C8600' ], + 'HW-C8600!' => [ 'Huawei', 'C8600' ], + 'Huawei C8650!' => [ 'Huawei', 'C8650' ], + 'Huawei C8655' => [ 'Huawei', 'Ascend Y201C' ], + 'Huawei C8800' => [ 'Huawei', 'IDEOS X5' ], + 'Huawei C8810!' => [ 'Huawei', 'Ascend G300' ], + 'Huawei C8812!' => [ 'Huawei', 'Ascend C8812' ], + 'Ascend C8812' => [ 'Huawei', 'Ascend C8812' ], + 'Huawei C8813!' => [ 'Huawei', 'Ascend C8813' ], + 'Ascend c8813' => [ 'Huawei', 'Ascend C8813' ], + 'Ascend C8813Q' => [ 'Huawei', 'Ascend C8813' ], + 'Huawei C8815!' => [ 'Huawei', 'Ascend C8815' ], + 'Huawei C8816!' => [ 'Huawei', 'Ascend C8816' ], + 'Huawei C8817!' => [ 'Huawei', 'C8817' ], + 'HW-C8817D!' => [ 'Huawei', 'C8817' ], + 'HUAWEI C8818!' => [ 'Huawei', 'C8818' ], + 'Huawei C8825D' => [ 'Huawei', 'Ascend G330C' ], + 'Huawei C8826D' => [ 'Huawei', 'Ascend G500C' ], + 'Huawei C8850' => [ 'Huawei', 'C8850' ], + 'Huawei C8860E' => [ 'Huawei', 'Honor' ], + 'Huawei C8950D' => [ 'Huawei', 'Honor+' ], + 'Huawei G7500' => [ 'Huawei', 'G7500' ], + 'Huawei CM990' => [ 'Huawei', 'Evolución 3' ], + 'Huawei Evolucion 3' => [ 'Huawei', 'Evolución 3' ], + 'Huawei H866C' => [ 'Huawei', 'H866C' ], + 'Huawei H867G' => [ 'Huawei', 'H867G' ], + 'Huawei H868C' => [ 'Huawei', 'Glory' ], + 'Huawei H870C' => [ 'Huawei', 'H870C' ], + 'Huawei H871G' => [ 'Huawei', 'Magna' ], + 'Huawei H881C' => [ 'Huawei', 'Ascend Plus' ], + 'HUAWEI H891L' => [ 'Huawei', 'Pronto' ], + 'HUAWEI H892L' => [ 'Huawei', 'Honor 4X' ], + 'Huawei M835' => [ 'Huawei', 'M835' ], + 'Huawei M860' => [ 'Huawei', 'Ascend' ], + 'Huawei M866' => [ 'Huawei', 'Ascend Y' ], + 'Huawei M868' => [ 'Huawei', 'M868' ], + 'HUAWEI M881' => [ 'Huawei', 'Asura' ], + 'Huawei M920' => [ 'Huawei', 'M920' ], + 'Huawei M921' => [ 'Huawei', 'M921' ], + 'Huawei M931' => [ 'Huawei', 'M931' ], + 'Ascend Mate 2' => [ 'Huawei', 'Ascend Mate 2' ], + 'Huawei S8520' => [ 'Huawei', 'S8520' ], + 'Huawei S8600' => [ 'Huawei', 'S8600' ], + 'Huawei T8100' => [ 'Huawei', 'T8100' ], + 'Huawei T8300' => [ 'Huawei', 'T8300' ], + 'Huawei ?T8500!' => [ 'Huawei', 'T8500' ], + 'Huawei T8600' => [ 'Huawei', 'T8600' ], + 'Huawei T8620' => [ 'Huawei', 'Ascend Y200T' ], + 'Huawei T8808D' => [ 'Huawei', 'Ascend G306T' ], + 'Huawei T8828' => [ 'Huawei', 'Ascend G305T' ], + 'Huawei T8830' => [ 'Huawei', 'Ascend G309T' ], + 'Huawei T8830 ?Pro!' => [ 'Huawei', 'Ascend G309T Pro' ], + 'Huawei T8833' => [ 'Huawei', 'Ascend Y300' ], + 'Huawei T8950!' => [ 'Huawei', 'Honor+' ], + 'Huawei T8951!' => [ 'Huawei', 'Ascend G510' ], + 'Huawei T9200' => [ 'Huawei', 'Ascend P1' ], + 'Huawei U8110' => [ 'Huawei', 'U8110' ], + 'Huawei U8160' => [ 'Huawei', 'U8160' ], + 'Huawei U8220' => [ 'Huawei', 'U8220' ], + 'Huawei ?U8300!' => [ 'Huawei', 'U8300' ], + 'Huawei ?U8500!' => [ 'Huawei', 'IDEOS X2' ], + 'Huawei ?U8520!' => [ 'Huawei', 'U8520 Duplex' ], + 'Huawei U8600' => [ 'Huawei', 'U8600' ], + 'Huawei ?U8650!' => [ 'Huawei', 'Sonic' ], + 'Huawei U8651' => [ 'Huawei', 'Prism' ], + 'Huawei U8652' => [ 'Huawei', 'Sonic' ], + 'Huawei U8661' => [ 'Huawei', 'Sonic+' ], + 'Huawei U8665' => [ 'Huawei', 'Fusion 2' ], + 'Huawei U8666!' => [ 'Huawei', 'Ascend Y201' ], + 'Huawei U8681' => [ 'Huawei', 'Ascend G312' ], + 'Huawei U8687' => [ 'Huawei', 'Chronos' ], + 'Huawei U8800!' => [ 'Huawei', 'IDEOS X5' ], + 'Huawei U8815!' => [ 'Huawei', 'Ascend G300' ], + 'Huawei U8818' => [ 'Huawei', 'Ascend G300' ], + 'Huawei U8825D' => [ 'Huawei', 'Ascend G330D' ], + 'Huawei U8825-1' => [ 'Huawei', 'Ascend G330' ], + 'HUAWEI G330-0100' => [ 'Huawei', 'Ascend G330' ], + 'Huawei u8833' => [ 'Huawei', 'Ascend Y300' ], + 'Huawei u8836d' => [ 'Huawei', 'Ascend G500' ], + 'Huawei U8850' => [ 'Huawei', 'Vision' ], + 'Huawei U8860' => [ 'Huawei', 'Honor' ], + 'Huawei Honor' => [ 'Huawei', 'Honor' ], + 'Huawei U8950!' => [ 'Huawei', 'Ascend G600' ], + 'HUAWEI U8951!' => [ 'Huawei', 'Ascend G510' ], + 'Huawei ?U9000!' => [ 'Huawei', 'Ascend X' ], + 'HUAWEI HONOR 2' => [ 'Huawei', 'Honor 2' ], + 'Huawei U9508' => [ 'Huawei', 'Honor 2' ], + 'Huawei ?U9508!' => [ 'Huawei', 'Honor 2 Quad-core' ], + 'Ascend D1' => [ 'Huawei', 'Ascend D1' ], + 'Huawei U9510!' => [ 'Huawei', 'Ascend D quad' ], + 'Huawei EDGE' => [ 'Huawei', 'Ascend P6' ], + 'Huawei Ascend P6' => [ 'Huawei', 'Ascend P6' ], + 'Ascend P7' => [ 'Huawei', 'Ascend P7' ], + 'Huawei Ideos X1' => [ 'Huawei', 'IDEOS X1' ], + 'Huawei IDEOS U8500' => [ 'Huawei', 'IDEOS X2' ], + 'Huawei IDEOS U8650' => [ 'Huawei', 'Sonic' ], + 'Huawei IDEOS X3' => [ 'Huawei', 'IDEOS X3' ], + 'Huawei Ideos X5!' => [ 'Huawei', 'IDEOS X5' ], + 'Huawei X6' => [ 'Huawei', 'IDEOS X6' ], + 'Huawei IDEOS Y 200' => [ 'Huawei', 'IDEOS Y200' ], + 'Huawei SONIC' => [ 'Huawei', 'Sonic' ], + 'Huawei 8100-9' => [ 'Huawei', 'U8100' ], + 'Huawei UM840' => [ 'Huawei', 'UM840' ], + 'Huawei Ascend G 300' => [ 'Huawei', 'Ascend G300' ], + 'Huawei G300' => [ 'Huawei', 'Ascend G300' ], + 'Ascend G300' => [ 'Huawei', 'Ascend G300' ], + 'Ascend G301' => [ 'Huawei', 'Ascend G301' ], + 'Ascend G330' => [ 'Huawei', 'Ascend G330' ], + 'Huawei Ascend G 330' => [ 'Huawei', 'Ascend G330' ], + 'Huawei G350!' => [ 'Huawei', 'Ascend G350' ], + 'Huawei G506!' => [ 'Huawei', 'Ascend G506' ], + 'Huawei ?G510!' => [ 'Huawei', 'Ascend G510' ], + 'Ascend G510c' => [ 'Huawei', 'Ascend G510c' ], + 'Huawei Ascend G510' => [ 'Huawei', 'Ascend G510' ], + 'Ascend G510' => [ 'Huawei', 'Ascend G510' ], + 'Huawei G520!' => [ 'Huawei', 'Ascend G520' ], + 'HUAWEI G521!' => [ 'Huawei', 'Ascend G521' ], + 'Huawei G525!' => [ 'Huawei', 'Ascend G525' ], + 'HUAWEI Ascend G525' => [ 'Huawei', 'Ascend G525' ], + 'Huawei G535!' => [ 'Huawei', 'Ascend G535' ], + 'Ascend G600' => [ 'Huawei', 'Ascend G600' ], + 'Huawei G606!' => [ 'Huawei', 'Ascend G606' ], + 'Huawei G610!' => [ 'Huawei', 'Ascend G610' ], + 'Huawei G615!' => [ 'Huawei', 'Ascend G615' ], + 'HUAWEI G616!' => [ 'Huawei', 'Ascend G616' ], + 'Huawei G620!' => [ 'Huawei', 'Ascend G620' ], + 'Huawei G621!' => [ 'Huawei', 'Ascend G621' ], + 'Huawei G628!' => [ 'Huawei', 'Ascend G628' ], + 'Huawei G629!' => [ 'Huawei', 'Ascend G629' ], + 'Huawei G630!' => [ 'Huawei', 'Ascend G630' ], + 'HUAWEI G660!' => [ 'Huawei', 'Ascend G660' ], + 'Huawei G700!' => [ 'Huawei', 'Ascend G700' ], + 'Huawei G701!' => [ 'Huawei', 'Ascend G701' ], + 'Huawei ?G716!' => [ 'Huawei', 'Ascend G716' ], + 'Huawei G718!' => [ 'Huawei', 'Ascend G718' ], + 'Huawei G730!' => [ 'Huawei', 'Ascend G730' ], + 'Huawei G750!' => [ 'Huawei', 'Ascend G750' ], + 'Huawei G760-(L01|L071)!' => [ 'Huawei', 'Ascend G760' ], + 'Huawei G760S-(UL00)!' => [ 'Huawei', 'Ascend G760' ], + 'Huawei Ascend Y 210' => [ 'Huawei', 'Ascend Y210' ], + 'Huawei Ascend Y 210D' => [ 'Huawei', 'Ascend Y210' ], + 'Huawei Asend Y 210D' => [ 'Huawei', 'Ascend Y210' ], + 'Huawei Y210!' => [ 'Huawei', 'Ascend Y210' ], + 'Ascend Y201PRO' => [ 'Huawei', 'Ascend Y210 Pro' ], + 'Huawei Y ?220T!' => [ 'Huawei', 'Ascend Y220' ], + 'Huawei Y-220T' => [ 'Huawei', 'Ascend Y220' ], + 'Huawei Y220-(T10)!' => [ 'Huawei', 'Ascend Y220' ], + 'HUAWEI Y221-(U03|U12|U22|U33|U43|U53)!' => [ 'Huawei', 'Ascend Y221' ], + 'Huawei ?Y300!' => [ 'Huawei', 'Ascend Y300' ], + 'Ascend Y300' => [ 'Huawei', 'Ascend Y300' ], + 'Huawei Ascend Y300' => [ 'Huawei', 'Ascend Y300' ], + 'Huawei Y301!' => [ 'Huawei', 'Ascend Y301' ], + 'Huawei Y310!' => [ 'Huawei', 'Ascend Y310' ], + 'Huawei Y320!' => [ 'Huawei', 'Ascend Y320' ], + 'Huawei Y321!' => [ 'Huawei', 'Ascend Y321' ], + 'Huawei Y325!' => [ 'Huawei', 'Ascend Y325' ], + 'Huawei Y330!' => [ 'Huawei', 'Ascend Y330' ], + 'HUAWEI Y336!' => [ 'Huawei', 'Ascend Y336' ], + 'HUAWEI Y360!' => [ 'Huawei', 'Ascend Y360' ], + 'Huawei Y500!' => [ 'Huawei', 'Ascend Y500' ], + 'Huawei Y511!' => [ 'Huawei', 'Ascend Y511' ], + 'Huawei Y516!' => [ 'Huawei', 'Ascend Y516' ], + 'Huawei Y518!' => [ 'Huawei', 'Ascend Y518' ], + 'HUAWEI Y520!' => [ 'Huawei', 'Ascend Y520' ], + 'Huawei Y523!' => [ 'Huawei', 'Ascend Y523' ], + 'Huawei Y530!' => [ 'Huawei', 'Ascend Y530' ], + 'HUAWEI Y535!' => [ 'Huawei', 'Ascend Y535' ], + 'HUAWEI Y536A1' => [ 'AT&T', 'Tribute' ], + 'HUAWEI Y536!' => [ 'Huawei', 'Ascend Y536' ], + 'HUAWEI Y540-(U01)!' => [ 'Huawei', 'Ascend Y540' ], + 'HUAWEI Y541!' => [ 'Huawei', 'Ascend Y541' ], + 'HUAWEI Y550' => [ 'Huawei', 'Ascend Y550' ], + 'HUAWEI Y550-(L01|L02|L03)!' => [ 'Huawei', 'Ascend Y550' ], + 'HUAWEI Y552-(L02)!' => [ 'Huawei', 'Ascend Y552' ], + 'HUAWEI Y560-(CL00|L01|L02|L03|L23|U02|U03|U12|U23)!' => [ 'Huawei', 'Ascend Y560' ], + 'Huawei Y600-(U00|U20|U40|U151|U351)!' => [ 'Huawei', 'Ascend Y600' ], + 'HUAWEI Y600D-C00' => [ 'Huawei', 'Ascend Y600D' ], + 'HUAWEI Y604-U155' => [ 'Huawei', 'Ascend Y604' ], + 'HUAWEI Y610-U00' => [ 'Huawei', 'Ascend Y610' ], + 'HUAWEI Y618-T00' => [ 'Huawei', 'Ascend Y618' ], + 'HUAWEI Y625-(U13|U21|U32|U43|U51)!' => [ 'Huawei', 'Ascend Y625' ], + 'HUAWEI Y635!' => [ 'Huawei', 'Ascend Y635' ], + 'Huawei Ascend' => [ 'Huawei', 'Ascend' ], + 'Huawei Ascend X' => [ 'Huawei', 'Ascend X' ], + ], + + 'C8817D' => [ 'Huawei', 'Honor 4X' ], + 'C8817E' => [ 'Huawei', 'C8817E' ], + 'Y538' => [ 'Huawei', 'Union' ], + 'M650' => [ 'Huawei', 'Express' ], + 'M660' => [ 'Huawei', 'Ascend Q' ], + 'unknown M200-L09' => [ 'Huawei', 'Mate 8' ], + 'Honor3c2G-T' => [ 'Huawei', 'Honor 3C' ], + 'HUAWEI Honor 3c w' => [ 'Huawei', 'Honor 3C' ], + 'Honor Bee' => [ 'Huawei', 'Honor Bee' ], + 'Orange HUAWEI GRA-L09' => [ 'Huawei', 'Ascend P8' ], + 'FUSIONideos' => [ 'Huawei', 'IDEOS' ], + 'Gnappo Ideos' => [ 'Huawei', 'IDEOS' ], + 'hwu8812D' => [ 'Huawei', 'Ascend G302D' ], + + 'IDEOS!!' => [ + 'Ideos' => [ 'Huawei', 'IDEOS' ], + 'IDEOS X1' => [ 'Huawei', 'IDEOS X1' ], + 'IDEOS X5' => [ 'Huawei', 'IDEOS X5' ], + 'IDEOS X5 PRO' => [ 'Huawei', 'IDEOS X5 Pro' ], + 'IDEOS S7!' => [ 'Huawei', 'IDEOS S7', DeviceType::TABLET ], + ], + + 'Huawei S7' => [ 'Huawei', 'IDEOS S7', DeviceType::TABLET ], + 'SONIC' => [ 'Huawei', 'Sonic' ], + 'Lucky Ultra Sonic U8650' => [ 'Huawei', 'Sonic' ], + 'MTC Android' => [ 'Huawei', 'U8110' ], + + '[0-9AS][0-9]{2,2}HW!!' => [ + 'A01HW' => [ 'Huawei', 'A01HW', DeviceType::TABLET, 'carrier' => 'EMOBILE' ], + 'S31HW' => [ 'Huawei', 'Pocket WiFi S S31HW', 'carrier' => 'EMOBILE' ], + 'S41HW' => [ 'Huawei', 'Pocket WiFi S II S41HW', 'carrier' => 'EMOBILE' ], + 'S42HW' => [ 'Huawei', 'smart bar S42HW', 'carrier' => 'EMOBILE' ], + '007HW' => [ 'Huawei', 'Vision 007HW', 'carrier' => 'Softbank' ], + '201HW' => [ 'Huawei', 'STREAM 201HW', 'carrier' => 'Softbank' ], + '204HW' => [ 'Huawei', '204HW', 'carrier' => 'Softbank' ], + '301HW' => [ 'Huawei', 'Pocket WiFi 301HW', 'carrier' => 'Softbank' ], + '302HW' => [ 'Huawei', 'STREAM S 302HW', 'carrier' => 'Y! Mobile' ], + '402HW' => [ 'Huawei', 'MediaPad 10 Link+ 402HW', DeviceType::TABLET, 'carrier' => 'Softbank' ], + '403HW' => [ 'Huawei', 'MediaPad M1 8.0 403HW', DeviceType::TABLET, 'carrier' => 'Y! Mobile' ], + '503HW' => [ 'Huawei', 'LUMIERE 503HW', 'carrier' => 'Y! Mobile' ], + '605HW' => [ 'Huawei', 'MediaPad T2 Pro 605HW', DeviceType::TABLET, 'carrier' => 'Softbank' ], + '606HW' => [ 'Huawei', 'MediaPad T2 Pro 606HW', DeviceType::TABLET, 'carrier' => 'Y! Mobile' ], + '608HW' => [ 'Huawei', 'nova lite 608HW', 'carrier' => 'Y! Mobile' ], + '704HW' => [ 'Huawei', 'nova lite 2 704HW', 'carrier' => 'Softbank' ], + ], + + 'CM980' => [ 'Huawei', 'Evolution II' ], + 'CM990' => [ 'Huawei', 'Evolución 3' ], + 'UM840' => [ 'Huawei', 'Evolution' ], + 'M310' => [ 'Huawei', 'MediaQ M310', DeviceType::TELEVISION ], + 'M860' => [ 'Huawei', 'Ascend' ], + 'M865' => [ 'Huawei', 'Ascend II' ], + 'M886' => [ 'Huawei', 'Glory' ], + 'S8600' => [ 'Huawei', 'S8600' ], + + 'C8[0-9]{3,3}!!' => [ + 'C8150' => [ 'Huawei', 'IDEOS' ], + 'C8500!' => [ 'Huawei', 'C8500' ], + 'C8600' => [ 'Huawei', 'C8600' ], + 'C8650!' => [ 'Huawei', 'C8650' ], + 'C8800' => [ 'Huawei', 'C8800' ], + 'C8810' => [ 'Huawei', 'Ascend G300C' ], + 'C8812!' => [ 'Huawei', 'Ascend C8812' ], + 'C8815!' => [ 'Huawei', 'Ascend C8815' ], + 'C8860!' => [ 'Huawei', 'Honor' ], + ], + + 'T8[0-9]{3,3}!!' => [ + 'T8620' => [ 'Huawei', 'Ascend Y200T' ], + 'T8808!' => [ 'Huawei', 'Ascend G306T' ], + 'T8830!' => [ 'Huawei', 'Ascend G309T' ], + ], + + 'T9[0-9]{3,3}!!' => [ + 'T9200' => [ 'Huawei', 'Ascend P1' ], + 'T9510E' => [ 'Huawei', 'Ascend D1 Quad XL' ], + ], + + 'U8[0-9]{3,3}!!' => [ + 'U8100' => [ 'Huawei', 'U8100' ], + 'U8110' => [ 'Huawei', 'U8110' ], + 'U8120' => [ 'Huawei', 'U8120' ], + 'U8180' => [ 'Huawei', 'IDEOS X1' ], + 'U8300' => [ 'Huawei', 'U8300' ], + 'U8350' => [ 'Huawei', 'Boulder' ], + 'U8150' => [ 'Huawei', 'IDEOS' ], + 'U8160' => [ 'Huawei', 'U8160' ], + 'U8180' => [ 'Huawei', 'IDEOS X1' ], + 'U8185' => [ 'Huawei', 'Ascend Y100' ], + 'U8186' => [ 'Huawei', 'Ascend Y101' ], + 'U8230' => [ 'Huawei', 'U8230' ], + 'U8500' => [ 'Huawei', 'IDEOS X2' ], + 'U8500 HiQQ' => [ 'Huawei', 'U8500 HiQQ Edition' ], + 'U8510!' => [ 'Huawei', 'IDEOS X3' ], + 'U8520' => [ 'Huawei', 'U8520 Duplex' ], + 'U8600' => [ 'Huawei', 'U8600' ], + 'U8650!' => [ 'Huawei', 'Sonic' ], + 'U8651!' => [ 'Huawei', 'Talon U8651' ], + 'U8652!' => [ 'Huawei', 'Fusion U8652' ], + 'U8655!' => [ 'Huawei', 'Ascend Y200' ], + 'U8660' => [ 'Huawei', 'Sonic' ], + 'U8665' => [ 'Huawei', 'Fusion 2' ], + 'U8666!' => [ 'Huawei', 'Ascend Y201' ], + 'U8667' => [ 'Huawei', 'U8667' ], + 'U8800 ?Pro!' => [ 'Huawei', 'IDEOS X5 Pro' ], + 'U8800!' => [ 'Huawei', 'IDEOS X5' ], + 'U8812' => [ 'Huawei', 'Ascend G302D' ], + 'U8812D' => [ 'Huawei', 'Ascend G302D' ], + 'U8815N' => [ 'Huawei', 'Ascend G300' ], + 'U8815-51' => [ 'Huawei', 'Ascend G300' ], + 'U8815' => [ 'Huawei', 'Ascend G300' ], + 'U8816' => [ 'Huawei', 'Ascend G301' ], + 'U8818' => [ 'Huawei', 'Ascend G300' ], + 'U8820' => [ 'Huawei', 'Titan' ], + 'U8832D' => [ 'Huawei', 'Ascend G500' ], + 'U8836D' => [ 'Huawei', 'Ascend G500' ], + 'U8850' => [ 'Huawei', 'Vision' ], + 'U8860!' => [ 'Huawei', 'Honor' ], + ], + + 'U9[0-9]{3,3}!!' => [ + 'U9000' => [ 'Huawei', 'Ascend X' ], + 'U9200!' => [ 'Huawei', 'Ascend P1' ], + 'U9202!' => [ 'Huawei', 'Ascend P1' ], + 'U9500' => [ 'Huawei', 'Ascend D1' ], + 'U9500E' => [ 'Huawei', 'Ascend D1 XL' ], + 'U9501L' => [ 'Huawei', 'Ascend D LTE' ], + 'U9508' => [ 'Huawei', 'Honor 2' ], + 'U9510!' => [ 'Huawei', 'Ascend D quad' ], + ], + + 'Comet' => [ 'Huawei', 'Comet' ], + 'Joy' => [ 'Huawei', 'Joy' ], + 'DroniX-0.5' => [ 'Huawei', 'U8180' ], + 'TSP21' => [ 'Huawei', 'U8110' ], + + 'GS02' => [ 'Huawei', 'GS02', 'carrier' => 'EMOBILE' ], + 'GS03' => [ 'Huawei', 'GS03', 'carrier' => 'EMOBILE' ], + 'GL07S' => [ 'Huawei', 'STREAM X GL07S', 'carrier' => 'EMOBILE' ], + 'HW-01E' => [ 'Huawei', 'Ascend HW-01E', 'carrier' => 'DoCoMo' ], + 'HW-01K' => [ 'Huawei', 'P20 Pro HW-01K', 'carrier' => 'DoCoMo' ], + 'HW-03E' => [ 'Huawei', 'Ascend D2 HW-03E', 'carrier' => 'DoCoMo' ], + 'HWT31' => [ 'Huawei', 'Qua tab 02 HWT31', 'carrier' => 'au' ], + 'HWV32' => [ 'Huawei', 'P20 lite HWV32', 'carrier' => 'au' ], + 'H710VL' => [ 'Huawei', 'Sensa' ], + 'H715BL' => [ 'Huawei', 'Sensa LTE' ], + 'H866C' => [ 'Huawei', 'Ascend Y H866C' ], + 'H882L' => [ 'Huawei', 'Ascend Y301-A' ], + + 'USCCADR[0-9]{4,4}!!' => [ + 'USCCADR3305' => [ 'Huawei', 'Ascend II' ], + 'USCCADR3310' => [ 'Huawei', 'Ascend II' ], + ], + + 'HYUNDAI!!' => [ + 'HYUNDAI H6' => [ 'Hyundai', 'Storm H6' ], + 'HYUNDAI H6 B' => [ 'Hyundai', 'Storm H6' ], + 'HYUNDAI H8' => [ 'Hyundai', 'H8' ], + 'HYUNDAI H8Q' => [ 'Hyundai', 'H8Q' ], + 'HYUNDAI H9' => [ 'Hyundai', 'H9' ], + 'HYUNDAI H10' => [ 'Hyundai', 'H10' ], + 'HYUNDAI H11' => [ 'Hyundai', 'H11' ], + 'Hyundai HT-10G' => [ 'Hyundai', 'HT-10G', DeviceType::TABLET ], + 'HYUNDAI Q5' => [ 'Hyundai', 'Q5' ], + 'HYUNDAI Q5X' => [ 'Hyundai', 'Q5X' ], + 'HYUNDAI T7' => [ 'Hyundai', 'T7', DeviceType::TABLET ], + 'HYUNDAI T7S' => [ 'Hyundai', 'T7s', DeviceType::TABLET ], + 'HYUNDAI T10' => [ 'Hyundai', 'T10', DeviceType::TABLET ], + 'HYUNDAI T31' => [ 'Hyundai', 'T31', DeviceType::TABLET ], + 'HYUNDAI X7' => [ 'Hyundai', 'X7' ], + 'HYUNDAI X900' => [ 'Hyundai', 'X900', DeviceType::TABLET ], + ], + + 'Ultra Air' => [ 'Hyundai', 'Ultra Air' ], + 'Ultra Charm' => [ 'Hyundai', 'Ultra Charm' ], + 'Ultra Energy' => [ 'Hyundai', 'Ultra Energy' ], + 'Ultra Energy Lite' => [ 'Hyundai', 'Ultra Energy Lite' ], + 'Ultra Energy Plus' => [ 'Hyundai', 'Ultra Energy Plus' ], + 'Ultra Latitude' => [ 'Hyundai', 'Ultra Latitude' ], + 'Ultra Style' => [ 'Hyundai', 'Ultra Style' ], + 'Ultra Wave' => [ 'Hyundai', 'Ultra Wave' ], + 'A7 HD' => [ 'Hyundai', 'A7 HD', DeviceType::TABLET ], + 'MW1031' => [ 'Hyundai', 'MW1031', DeviceType::TABLET ], + 'Elektra L' => [ 'i-Joy', 'Elektra L' ], + 'Elektra XL' => [ 'i-Joy', 'Elektra XL' ], + 'i-Joy i-Call' => [ 'i-Joy', 'i-Call' ], + 'i-Call 300' => [ 'i-Joy', 'i-Call 300' ], + 'i-Call 300v2' => [ 'i-Joy', 'i-Call 300' ], + 'i-Call 504' => [ 'i-Joy', 'i-Call 504' ], + 'DEOX' => [ 'i-Joy', 'Deox', DeviceType::TABLET ], + 'Neon7' => [ 'i-Joy', 'Neon7', DeviceType::TABLET ], + 'Neon9' => [ 'i-Joy', 'Neon9', DeviceType::TABLET ], + 'Planet II v2' => [ 'i-Joy', 'Planet II', DeviceType::TABLET ], + 'Sygnus' => [ 'i-Joy', 'Sygnus', DeviceType::TABLET ], + + '(NMP|MBR|XDK|XDS|XMP)\-!!' => [ + 'NMP-302w' => [ 'IAdea', 'MBR-1100', DeviceType::SIGNAGE ], + 'MBR-1100' => [ 'IAdea', 'MBR-1100', DeviceType::SIGNAGE ], + 'XDK-1160' => [ 'IAdea', 'XDK-1160', DeviceType::SIGNAGE ], + 'XDK-1560' => [ 'IAdea', 'XDK-1560', DeviceType::SIGNAGE ], + 'XDS-0548' => [ 'IAdea', 'XDS-0548', DeviceType::SIGNAGE ], + 'XDS-1078' => [ 'IAdea', 'XDS-1078', DeviceType::SIGNAGE ], + 'XDS-2170' => [ 'IAdea', 'XDS-2170', DeviceType::SIGNAGE ], + 'XDS-2370' => [ 'IAdea', 'XDS-2370', DeviceType::SIGNAGE ], + 'XMP-6200' => [ 'IAdea', 'XMP-6200', DeviceType::SIGNAGE ], + 'XMP-6250' => [ 'IAdea', 'XMP-6250', DeviceType::SIGNAGE ], + 'XMP-6400' => [ 'IAdea', 'XMP-6400', DeviceType::SIGNAGE ], + 'XMP-7300' => [ 'IAdea', 'XMP-7300', DeviceType::SIGNAGE ], + ], + + '(iBall )?Andi!!' => [ + 'Andi3n' => [ 'iBall', 'Andi 3n' ], + 'iBall Andi3e' => [ 'iBall', 'Andi 3e' ], + 'iBall Andi3.5' => [ 'iBall', 'Andi 3.5' ], + 'Andi 3.5i' => [ 'iBall', 'Andi 3.5i' ], + 'Andi3.5r' => [ 'iBall', 'Andi 3.5r' ], + 'iBall Andi3.5 Classique' => [ 'iBall', 'Andi 3.5 Classique' ], + 'Andi3.5F Grabit' => [ 'iBall', 'Andi 3.5F Grabit' ], + 'Andi3.5KKe' => [ 'iBall', 'Andi 3.5KKe' ], + 'Andi 3.5KKe+' => [ 'iBall', 'Andi 3.5KKe Plus' ], + 'iBall Andi 3.5KKe Genius' => [ 'iBall', 'Andi 3.5KKe Genius' ], + 'Andi3.5KKe Glam' => [ 'iBall', 'Andi 3.5KKe Glam' ], + 'Andi3.5KKe Glory' => [ 'iBall', 'Andi 3.5KKe Glory' ], + 'Andi3.5KKe Super' => [ 'iBall', 'Andi 3.5KKe Super' ], + 'iBall Andi 3.5KKe Winner' => [ 'iBall', 'Andi 3.5KKe Winner' ], + 'Andi 3.5KKe Winner+' => [ 'iBall', 'Andi 3.5KKe Winner Plus' ], + 'Andi3.5V Genius2' => [ 'iBall', 'Andi 3.5V Genius 2' ], + 'Andi4 Arc' => [ 'iBall', 'Andi 4 Arc' ], + 'Andi 4 IPS GEM(1GB)' => [ 'iBall', 'Andi 4 Gem' ], + 'iBall Andi 4 IPS TIGER 1GB' => [ 'iBall', 'Andi 4 Tiger' ], + 'Andi 4 IPS Tiger' => [ 'iBall', 'Andi 4 Tiger' ], + 'Andi4a Projector' => [ 'iBall', 'Andi 4A Projector' ], + 'Andi4a Radium' => [ 'iBall', 'Andi 4A Radium' ], + 'iBall Andi4-B2' => [ 'iBall', 'Andi 4B2' ], + 'Andi4-B2 3G' => [ 'iBall', 'Andi 4B2' ], + 'Andi4 B20' => [ 'iBall', 'Andi 4B20' ], + 'Andi4d' => [ 'iBall', 'Andi 4D' ], + 'iball Andi4di' => [ 'iBall', 'Andi 4Di' ], + 'iBall Andi 4di+' => [ 'iBall', 'Andi 4Di' ], + 'Andi 4F ARC3' => [ 'iBall', 'Andi 4F Arc3' ], + 'Andi4F Waves' => [ 'iBall', 'Andi 4F Waves' ], + 'Andi4G ARC2' => [ 'iBall', 'Andi 4G Arc2' ], + 'Andi4H Tiger+' => [ 'iBall', 'Andi 4H Tiger Plus' ], + 'Andi 4P Class-X' => [ 'iBall', 'Andi 4P Class-X' ], + 'iBall Andi4P IPS GEM' => [ 'iBall', 'Andi 4P Gem' ], + 'iBall Andi4P IPS Velvet' => [ 'iBall', 'Andi 4P Velvet' ], + 'Andi4U Frisbee' => [ 'iBall', 'Andi 4U Frisbee' ], + 'Andi4U Frisbee(8GB)' => [ 'iBall', 'Andi 4U Frisbee' ], + 'Andi4v' => [ 'iBall', 'Andi 4V' ], + 'Andi 4.3a' => [ 'iBall', 'Andi 4.3A' ], + 'iBall Andi4.3J' => [ 'iBall', 'Andi 4.3J' ], + 'iBall Andi4.3J+' => [ 'iBall', 'Andi 4.3J' ], + 'Andi 4.5 O\'Buddy' => [ 'iBall', 'Andi 4.5 O\'Buddy' ], + 'iBall Andi4.5 Ripple 3G' => [ 'iBall', 'Andi 4.5 Ripple' ], + 'iBall Andi4.5 Ripple' => [ 'iBall', 'Andi 4.5 Ripple' ], + 'Andi4.5 Ripple 3G 1GB IPS' => [ 'iBall', 'Andi 4.5 Ripple' ], + 'Andi 4.5C Magnifico' => [ 'iBall', 'Andi 4.5C Magnifico' ], + 'Andi 4.5C Magnifico(1+8 GB)' => [ 'iBall', 'Andi 4.5C Magnifico' ], + 'iBall Andi4.5d quadro' => [ 'iBall', 'Andi 4.5D Quadro' ], + 'iBALL Andi4.5h' => [ 'iBall', 'Andi 4.5H' ], + 'Andi4.5h' => [ 'iBall', 'Andi 4.5H' ], + 'Andi4.5K6' => [ 'iBall', 'Andi 4.5K6' ], + 'Andi4.5K6+' => [ 'iBall', 'Andi 4.5K6 Plus' ], + 'Andi4.5 K6+' => [ 'iBall', 'Andi 4.5K6 Plus' ], + 'Andi4.5M Enigma' => [ 'iBall', 'Andi 4.5M Enigma' ], + 'Andi4.5M Enigma+' => [ 'iBall', 'Andi 4.5M Enigma Plus' ], + 'Andi 4.5P Glitter' => [ 'iBall', 'Andi 4.5P Glitter' ], + 'Andi4.5P IPS Glitter' => [ 'iBall', 'Andi 4.5P Glitter' ], + 'iBall Andi4.5q' => [ 'iBall', 'Andi 4.5Q' ], + 'Andi4.5V Baby Panther' => [ 'iBall', 'Andi 4.5V Baby Panther' ], + 'Andi 4.5z' => [ 'iBall', 'Andi 4.5Z' ], + 'iBall Cobalt Oomph 4.7D' => [ 'iBall', 'Andi 4.7D Cobalt Oomph' ], + 'Andi4.7G COBALT' => [ 'iBall', 'Andi 4.7G Cobalt' ], + 'Andi5 Stallion' => [ 'iBall', 'Andi 5 Stallion' ], + 'Andi5 Stallion+' => [ 'iBall', 'Andi 5 Stallion Plus' ], + 'Andi 5F Infinito' => [ 'iBall', 'Andi 5F Infinito' ], + 'Andi 5G Blink 4G' => [ 'iBall', 'Andi 5G Blink' ], + 'Andi5h quadro' => [ 'iBall', 'Andi 5H Quadro' ], + 'Andi 5K infinito2' => [ 'iBall', 'Andi 5K Infinito 2' ], + 'Andi5K Panther' => [ 'iBall', 'Andi 5K Panther' ], + 'Andi5K Sparkle' => [ 'iBall', 'Andi 5K Sparkle' ], + 'Andi5K Sparkle(1GB)' => [ 'iBall', 'Andi 5K Sparkle' ], + 'iBall Andi5L' => [ 'iBall', 'Andi 5L' ], + 'Andi 5L Rider' => [ 'iBall', 'Andi 5L Rider' ], + 'Andi5Li' => [ 'iBall', 'Andi 5Li' ], + 'Andi5M Xotic 2GB' => [ 'iBall', 'Andi 5M Xotic' ], + 'Andi5Q Cobalt Solus' => [ 'iBall', 'Andi 5Q Cobalt Solus' ], + 'Andi 5Q Gold 4G' => [ 'iBall', 'Andi 5Q Gold' ], + 'Andi 5S Cobalt3' => [ 'iBall', 'Andi 5S Cobalt 3' ], + 'iBall Andi5T Cobalt2' => [ 'iBall', 'Andi 5T Cobalt 2' ], + 'iBall Andi 5T Cobalt2' => [ 'iBall', 'Andi 5T Cobalt 2' ], + 'Andi5U_Platino' => [ 'iBall', 'Andi 5U Platino' ], + 'Andi5U Platino(1+8GB)' => [ 'iBall', 'Andi 5U Platino' ], + 'iBall Andi5-E7' => [ 'iBall', 'Andi 5-E7' ], + 'iBall Andi5-M8' => [ 'iBall', 'Andi 5-M8' ], + 'Andi 5.5H Weber' => [ 'iBall', 'Andi 5.5H Weber' ], + 'Andi 5.5H Weber 4G' => [ 'iBall', 'Andi 5.5H Weber' ], + 'Andi5.5 N2' => [ 'iBall', 'Andi 5.5 N2' ], + 'Andi107' => [ 'iBall', 'Andi 107' ], + 'Andi Avonte5' => [ 'iBall', 'Andi Avonte 5' ], + 'Andi Hd6' => [ 'iBall', 'Andi HD6' ], + 'iBall Andi i9' => [ 'iBall', 'Andi i9' ], + 'Andi Sprinter 4G' => [ 'iBall', 'Andi Sprinter 4G' ], + 'Andi Uddaan' => [ 'iBall', 'Andi Uddaan' ], + 'Andi Uddaan (1GB )' => [ 'iBall', 'Andi Uddaan' ], + 'Andi Uddaan Quad core' => [ 'iBall', 'Andi Uddaan' ], + 'Andi Mini Uddaan' => [ 'iBall', 'Andi Uddaan Mini' ], + ], + + 'iBall!!' => [ + 'iBall Slide Brillante' => [ 'iBall', 'Slide Brillante', DeviceType::TABLET ], + 'iBall Slide i5715' => [ 'iBall', 'Slide i5715', DeviceType::TABLET ], + 'iBall i6012' => [ 'iBall', 'Slide i6012', DeviceType::TABLET ], + 'iBall Slide i6030' => [ 'iBall', 'Slide i6030', DeviceType::TABLET ], + 'iBall Slide 6309i' => [ 'iBall', 'Slide i6309', DeviceType::TABLET ], + 'iBall Slide 6318i' => [ 'iBall', 'Slide i6318', DeviceType::TABLET ], + 'iBall Slide i6516' => [ 'iBall', 'Slide i6516', DeviceType::TABLET ], + 'iBall Slide i7011' => [ 'iBall', 'Slide i7011', DeviceType::TABLET ], + 'iBall Slide i7119' => [ 'iBall', 'Slide i7119', DeviceType::TABLET ], + 'iBall Slide i9702' => [ 'iBall', 'Slide i9702', DeviceType::TABLET ], + 'iBall Slide 3G7271' => [ 'iBall', 'Slide 3G 7271', DeviceType::TABLET ], + 'iBall Slide 3G 7307' => [ 'iBall', 'Slide 3G 7307', DeviceType::TABLET ], + 'IBall 3G 7316' => [ 'iBall', 'Slide 3G 7316', DeviceType::TABLET ], + 'iBall Slide 3G 7316' => [ 'iBall', 'Slide 3G 7316', DeviceType::TABLET ], + 'iBall Slide 3G 7334' => [ 'iBall', 'Slide 3G 7334', DeviceType::TABLET ], + 'iBall Slide 3G Q45i' => [ 'iBall', 'Slide 3G Q45i', DeviceType::TABLET ], + 'iBall Slide 3G Q1035' => [ 'iBall', 'Slide 3G Q1035', DeviceType::TABLET ], + ], + + '3G7334i' => [ 'iBall', 'Slide 3G 7334', DeviceType::TABLET ], + + '(Aura|iberry|AUXUS)!!' => [ + 'Aura A1' => [ 'iBerry', 'Auxus Aura A1', DeviceType::TABLET ], + 'AUXUS AX01' => [ 'iBerry', 'Auxus AX01', DeviceType::TABLET ], + 'iberry AUXUS AX02' => [ 'iBerry', 'Auxus AX02', DeviceType::TABLET ], + 'AUXUS CoreX2 3G' => [ 'iBerry', 'Auxus CoreX2', DeviceType::TABLET ], + 'AUXUS CoreX4 3G' => [ 'iBerry', 'Auxus CoreX4', DeviceType::TABLET ], + 'AUXUS Nuclea N1' => [ 'iBerry', 'Auxus Nuclea N1' ], + 'AUXUS Nuclea N2' => [ 'iBerry', 'Auxus Nuclea N2' ], + ], + + '(NetTab|NT-)!!' => [ + 'NetTab iconBIT' => [ 'IconBit', 'NetTab', DeviceType::TABLET ], + 'NetTAB Matrix' => [ 'IconBit', 'NetTab Matrix', DeviceType::TABLET ], + 'NT-0704M' => [ 'IconBit', 'NetTab Matrix Ultra', DeviceType::TABLET ], + 'NT-0705M' => [ 'IconBit', 'NetTab Matrix Quad', DeviceType::TABLET ], + 'NetTAB MATRIX HD' => [ 'IconBit', 'NetTab Matrix HD', DeviceType::TABLET ], + 'NT-0708M' => [ 'IconBit', 'NetTab Matrix HD', DeviceType::TABLET ], + 'NT-0709M' => [ 'IconBit', 'NetTab Matrix DX', DeviceType::TABLET ], + 'NT-0711M' => [ 'IconBit', 'NetTab Matrix DX', DeviceType::TABLET ], + 'NetTAB Pocket' => [ 'IconBit', 'NetTab Pocket', DeviceType::TABLET ], + 'NetTAB PRIDE' => [ 'IconBit', 'NetTab Pride', DeviceType::TABLET ], + 'NetTAB RUNE' => [ 'IconBit', 'NetTab Rune', DeviceType::TABLET ], + 'NT-0801C' => [ 'IconBit', 'NetTab Skat RX', DeviceType::TABLET ], + 'NT-0806C' => [ 'IconBit', 'NetTab Skat LE', DeviceType::TABLET ], + 'NetTAB SKY' => [ 'IconBit', 'NetTab Sky', DeviceType::TABLET ], + 'NT-0701S' => [ 'IconBit', 'NetTab Sky Net', DeviceType::TABLET ], + 'NetTAB SKY II' => [ 'IconBit', 'NetTab Sky II', DeviceType::TABLET ], + 'NetTAB Space 3G' => [ 'IconBit', 'NetTab Space', DeviceType::TABLET ], + 'NetTAB SPACE II' => [ 'IconBit', 'NetTab Space II', DeviceType::TABLET ], + 'NetTAB SPACE II Plus' => [ 'IconBit', 'NetTab Space II Plus', DeviceType::TABLET ], + 'NetTAB SPACE III' => [ 'IconBit', 'NetTab Space III', DeviceType::TABLET ], + 'NT-0901S' => [ 'IconBit', 'NetTab Space Quad HD', DeviceType::TABLET ], + 'NT-0902S' => [ 'IconBit', 'NetTab Space Quad RX', DeviceType::TABLET ], + 'NetTAB THOR' => [ 'IconBit', 'NetTab Thor', DeviceType::TABLET ], + 'NetTAB THOR V4.10' => [ 'IconBit', 'NetTab Thor', DeviceType::TABLET ], + 'NT-0907T' => [ 'IconBit', 'NetTab Thor ZX', DeviceType::TABLET ], + 'NT-0909T' => [ 'IconBit', 'NetTab Thor IZ', DeviceType::TABLET ], + 'NetTAB THOR mini' => [ 'IconBit', 'NetTab Thor Mini', DeviceType::TABLET ], + 'NetTAB THOR-LE' => [ 'IconBit', 'NetTab Thor LE', DeviceType::TABLET ], + 'NT-1001T' => [ 'IconBit', 'NetTab Thor LE', DeviceType::TABLET ], + 'NT-1002T' => [ 'IconBit', 'NetTab Thor LE', DeviceType::TABLET ], + 'NT-1004T' => [ 'IconBit', 'NetTab Thor Quad FHD', DeviceType::TABLET ], + 'NT-1005T' => [ 'IconBit', 'NetTab Thor Quad', DeviceType::TABLET ], + 'NT-1006T' => [ 'IconBit', 'NetTab Thor Quad MX', DeviceType::TABLET ], + 'NT-1008T' => [ 'IconBit', 'NetTab Thor 3GTS', DeviceType::TABLET ], + 'NT-1009T' => [ 'IconBit', 'NetTab Thor Quad II', DeviceType::TABLET ], + 'NT-1010T' => [ 'IconBit', 'NetTab Thor LE', DeviceType::TABLET ], + 'NT-1011T' => [ 'IconBit', 'NetTab Thor LE', DeviceType::TABLET ], + 'NT-1020T' => [ 'IconBit', 'NetTab Thor LX', DeviceType::TABLET ], + 'NT-1021T' => [ 'IconBit', 'NetTab Thor LX', DeviceType::TABLET ], + 'NT-1501C' => [ 'IconBit', 'NetTab Callisto 100', DeviceType::WATCH ], + 'NT-3506M' => [ 'IconBit', 'NetTab Mercury Quad FHD' ], + 'NT-3507M' => [ 'IconBit', 'NetTab Mercury Quad' ], + 'NT-3509M' => [ 'IconBit', 'NetTab Mercury Q4' ], + 'NT-3510M' => [ 'IconBit', 'NetTab Mercury Q5' ], + 'NT-3513M!' => [ 'IconBit', 'NetTab Mercury LX' ], + 'NT-3601P!' => [ 'IconBit', 'NetTab Pocket' ], + 'NT-3602M' => [ 'IconBit', 'NetTab Mercury Q7' ], + 'NT-3701S' => [ 'IconBit', 'NetTab Sky 3G Duo', DeviceType::TABLET ], + 'NT-3702M' => [ 'IconBit', 'NetTab Matrix 3G Duo', DeviceType::TABLET ], + 'NT-3702S' => [ 'IconBit', 'NetTab Sky HD 3G', DeviceType::TABLET ], + 'NT-3710S' => [ 'IconBit', 'NetTab Sky 3G Plus', DeviceType::TABLET ], + 'NT-3801P' => [ 'IconBit', 'NetTab Parus 3G Duo', DeviceType::TABLET ], + 'NT-3803C' => [ 'IconBit', 'NetTab Skat 3G', DeviceType::TABLET ], + 'NT-3805C' => [ 'IconBit', 'NetTab Skat 3G Quad', DeviceType::TABLET ], + 'NT-3902S' => [ 'IconBit', 'NetTab Space 3G Duo', DeviceType::TABLET ], + ], + + 'IconBit NetTab Thor Mini' => [ 'IconBit', 'NetTab Thor Mini', DeviceType::TABLET ], + 'D70W' => [ 'Icoo', 'D70W', DeviceType::TABLET ], + 'D80' => [ 'Icoo', 'D80', DeviceType::TABLET ], + 'AURUS III' => [ 'Idea', 'Aurus III' ], + + 'CT720G' => [ 'IdeaUSA', 'CT720G', DeviceType::TABLET ], + 'CT720HD' => [ 'IdeaUSA', 'CT720HD', DeviceType::TABLET ], + 'CT920' => [ 'IdeaUSA', 'CT920', DeviceType::TABLET ], + 'CT1006' => [ 'IdeaUSA', 'CT1006', DeviceType::TABLET ], + + 'INFOBAR!!' => [ + 'INFOBAR A01' => [ 'iida', 'INFOBAR A01', 'carrier' => 'au' ], // by Sharp + 'INFOBAR A01-2' => [ 'iida', 'INFOBAR A01', 'carrier' => 'au' ], // by Sharp + 'INFOBAR C01' => [ 'iida', 'INFOBAR C01', 'carrier' => 'au' ], // by Sharp + ], + + 'HTX21' => [ 'iida', 'INFOBAR A02', 'carrier' => 'au' ], // by HTC + 'KYV33' => [ 'iida', 'INFOBAR A03', 'carrier' => 'au' ], // by Kyocera + + + 'IMO!!' => [ + 'IMO Discovery II' => [ 'IMO', 'Discovery II' ], + 'IMO Discovery 2' => [ 'IMO', 'Discovery II' ], + 'IMO Q8' => [ 'IMO', 'Q8 Clarity' ], + 'IMO S50' => [ 'IMO', 'Light S50' ], + 'IMO S67' => [ 'IMO', 'Blast S67' ], + 'IMO S68' => [ 'IMO', 'Snow S68' ], + 'IMO S70' => [ 'IMO', 'Miracle 2 S70' ], + 'IMO S78' => [ 'IMO', 'Glory S78' ], + 'IMO S78 NEW STYLE' => [ 'IMO', 'Glory S78' ], + 'IMO S79' => [ 'IMO', 'Explorer S79' ], + 'IMO S79 EXPLORER' => [ 'IMO', 'Explorer S79' ], + 'IMO S79 MIUI' => [ 'IMO', 'Explorer S79' ], + 'IMO S87' => [ 'IMO', 'Raptor S87' ], + 'Imo Raptor S87' => [ 'IMO', 'Raptor S87' ], + 'IMO S88' => [ 'IMO', 'Discovery S88' ], + 'IMO S89' => [ 'IMO', 'Miracle S89' ], + 'IMO S90' => [ 'IMO', 'Buzz S90' ], + 'IMO S98' => [ 'IMO', 'Champion S98' ], + 'IMO S99' => [ 'IMO', 'Ocean S99' ], + 'IMO S900' => [ 'IMO', 'Groovy S900' ], + 'IMO X2' => [ 'IMO', 'Normandy X2' ], + 'IMO X2 NORMANDY' => [ 'IMO', 'Normandy X2' ], + 'IMO TAB' => [ 'IMO', 'Tab', DeviceType::TABLET ], + 'IMO X5' => [ 'IMO', 'Tab X5 Mars', DeviceType::TABLET ], + 'IMO TAB X9' => [ 'IMO', 'Tab X9 Claire', DeviceType::TABLET ], + 'IMO Y-ONE' => [ 'IMO', 'Tab Y-One', DeviceType::TABLET ], + 'IMO Y5' => [ 'IMO', 'Tab Y3', DeviceType::TABLET ], + 'IMO Y5' => [ 'IMO', 'Tab Y5 i-Play', DeviceType::TABLET ], + 'IMO Z-ONE' => [ 'IMO', 'Tab Z-One', DeviceType::TABLET ], + 'IMO Z6' => [ 'IMO', 'Tab Z6 Avengers', DeviceType::TABLET ], + 'IMO Z7' => [ 'IMO', 'Tab Z7 Orion', DeviceType::TABLET ], + 'IMO Z8' => [ 'IMO', 'Tab Z8 Spin', DeviceType::TABLET ], + 'IMO Z9' => [ 'IMO', 'Tab Z9 Ice', DeviceType::TABLET ], + 'IMO Z10' => [ 'IMO', 'Tab Z10 Fortune', DeviceType::TABLET ], + ], + + 'S88 DISCOVERY' => [ 'IMO', 'Discovery S88' ], + + 'Im(Smart|PAD)!!' => [ + 'ImSmart 1.40' => [ 'Impression', 'ImSMART 1.40' ], + 'ImPAD 0114' => [ 'Impression', 'ImPAD 0114', DeviceType::TABLET ], + 'ImPAD 0413' => [ 'Impression', 'ImPAD 0413', DeviceType::TABLET ], + 'ImPAD1001' => [ 'Impression', 'ImPAD 1001', DeviceType::TABLET ], + 'ImPAD1311' => [ 'Impression', 'ImPAD 1311', DeviceType::TABLET ], + 'ImPAD 1412' => [ 'Impression', 'ImPAD 1412', DeviceType::TABLET ], + 'ImPAD 1412 rev2' => [ 'Impression', 'ImPAD 1412', DeviceType::TABLET ], + 'ImPAD 2113' => [ 'Impression', 'ImPAD 2113', DeviceType::TABLET ], + 'ImPAD 2413' => [ 'Impression', 'ImPAD 2413', DeviceType::TABLET ], + 'ImPAD 3113' => [ 'Impression', 'ImPAD 3113', DeviceType::TABLET ], + 'ImPAD 3412' => [ 'Impression', 'ImPAD 3412', DeviceType::TABLET ], + 'ImPAD 4213' => [ 'Impression', 'ImPAD 4213', DeviceType::TABLET ], + 'ImPAD 4313' => [ 'Impression', 'ImPAD 4313', DeviceType::TABLET ], + 'ImPAD 6213M' => [ 'Impression', 'ImPAD 6213M', DeviceType::TABLET ], + 'ImPAD6213M v2' => [ 'Impression', 'ImPAD 6213M', DeviceType::TABLET ], + 'ImPAD 6413' => [ 'Impression', 'ImPAD 6413', DeviceType::TABLET ], + 'ImPAD 8213' => [ 'Impression', 'ImPAD 8213', DeviceType::TABLET ], + 'ImPAD 8901' => [ 'Impression', 'ImPAD 8901', DeviceType::TABLET ], + 'ImPAD 9702' => [ 'Impression', 'ImPAD 9702', DeviceType::TABLET ], + 'ImPAD9704' => [ 'Impression', 'ImPAD 9704', DeviceType::TABLET ], + 'ImPAD 9707' => [ 'Impression', 'ImPAD 9707', DeviceType::TABLET ], + ], + + 'TX85' => [ 'iMuz', 'TX85', DeviceType::TABLET ], + 'i3000' => [ 'iNew', 'i3000' ], + 'i6000' => [ 'iNew', 'i6000' ], + + 'Infinix!!' => [ + 'Infinix BUZZ' => [ 'Infinix', 'Buzz X260' ], + 'Infinix X351' => [ 'Infinix', 'Surf Smart X351' ], + 'Infinix X352' => [ 'Infinix', 'Surf Smart 2 X352' ], + 'Infinix X400' => [ 'Infinix', 'Race X400' ], + 'Infinix X401' => [ 'Infinix', 'Race Lite X401' ], + 'Infinix X402' => [ 'Infinix', 'Diamond X402' ], + 'Infinix X405' => [ 'Infinix', 'Surf Viva X405' ], + 'Infinix X450' => [ 'Infinix', 'Race Bolt X450' ], + 'Infinix X451' => [ 'Infinix', 'Race Bolt Q X451' ], + 'Infinix X452' => [ 'Infinix', 'Surf Goal X452' ], + 'Infinix X454' => [ 'Infinix', 'Race Bolt 2 X454' ], + 'Infinix X455' => [ 'Infinix', 'Race Bolt 3 X455' ], + 'Infinix X500' => [ 'Infinix', 'Race Eagle X500' ], + 'Infinix X501' => [ 'Infinix', 'Race Jet X501' ], + 'Infinix X502' => [ 'Infinix', 'Alpha Marvel X502' ], + 'Infinix X503' => [ 'Infinix', 'Surf Bravo X503' ], + 'Infinix X505' => [ 'Infinix', 'Race Jet X505' ], + 'Infinix X506' => [ 'Infinix', 'Zero X506' ], + 'Infinix X506S' => [ 'Infinix', 'Zero X506' ], + 'Infinix Zero X506' => [ 'Infinix', 'Zero X506' ], + 'Infinix X507' => [ 'Infinix', 'Hot X507' ], + 'Infinix X509' => [ 'Infinix', 'Zero 2 X509' ], + 'Infinix X510' => [ 'Infinix', 'Hot 2 X510' ], + 'Infinix Hot 2' => [ 'Infinix', 'Hot 2 X510' ], + 'Infinix X511' => [ 'Infinix', 'Hot Note X511' ], + 'Infinix-X521' => [ 'Infinix', 'Hot S X521' ], + 'Infinix X521' => [ 'Infinix', 'Hot S X521' ], + 'Infinix S2 Pro' => [ 'Infinix', 'S2 Pro X522' ], + 'Infinix X530' => [ 'Infinix', 'Race Max Q X530' ], + 'Infinix X550' => [ 'Infinix', 'Alpha 8 X550' ], + 'Infinix X551' => [ 'Infinix', 'Hot Note X551' ], + 'Infinix-X551' => [ 'Infinix', 'Hot Note X551' ], + 'Infinix-X552' => [ 'Infinix', 'Zero 3 X552' ], + 'Infinix Zero 3' => [ 'Infinix', 'Zero 3 X552' ], + 'Infinix-X554' => [ 'Infinix', 'Hot 3 X554' ], + 'Infinix HOT 3' => [ 'Infinix', 'Hot 3 X554' ], + 'Infinix HOT 3 LTE' => [ 'Infinix', 'Hot 3 X554' ], + 'Infinix X556 LTE' => [ 'Infinix', 'Hot 4 Pro X556' ], + 'Infinix HOT 4 Pro' => [ 'Infinix', 'Hot 4 Pro X556' ], + 'Infinix X557' => [ 'Infinix', 'Hot 4 X557' ], + 'Infinix HOT 4' => [ 'Infinix', 'Hot 4 X557' ], + 'Infinix HOT 4 Lite' => [ 'Infinix', 'Hot 4 Lite X557' ], + 'Infinix X570' => [ 'Infinix', 'Alpha X570' ], + 'Infinix X572' => [ 'Infinix', 'Note 4 X572' ], + 'INFINIX-X600' => [ 'Infinix', 'Note 2 X600' ], + 'Infinix-X600-LTE' => [ 'Infinix', 'Note 2 X600' ], + 'Infinix NOTE 2' => [ 'Infinix', 'Note 2 X600' ], + 'Infinix NOTE 2 LTE' => [ 'Infinix', 'Note 2 X600' ], + 'Infinix X601 LTE' => [ 'Infinix', 'Note 3 X601' ], + 'Infinix NOTE 3' => [ 'Infinix', 'Note 3 X601' ], + 'Infinix NOTE 3 Pro' => [ 'Infinix', 'Note 3 Pro X601' ], + 'Infinix Zero 4' => [ 'Infinix', 'Zero 4 X602' ], + 'Infinix Zero 4 Plus' => [ 'Infinix', 'Zero 4 Plus X602' ], + 'Infinix X603' => [ 'Infinix', 'Zero 5 X603' ], + 'Infinix X800' => [ 'Infinix', 'Joypad 8 X800', DeviceType::TABLET ], + 'Infinix X801' => [ 'Infinix', 'Joypad 8S X801', DeviceType::TABLET ], + 'Infinix X1000' => [ 'Infinix', 'Joypad 10 X1000', DeviceType::TABLET ], + ], + + 'IN[0-9]{3,3}!!' => [ + 'IN260' => [ 'InFocus', 'IN260' ], + 'IN330' => [ 'InFocus', 'IN330' ], + 'IN335' => [ 'InFocus', 'IN335' ], + 'IN610' => [ 'InFocus', 'IN610' ], + 'IN810' => [ 'InFocus', 'IN810' ], + 'IN815' => [ 'InFocus', 'IN815' ], + ], + + 'M210' => [ 'InFocus', 'M210' ], + 'M370i' => [ 'InFocus', 'M370' ], + + 'Infocus!!' => [ + 'InFocus M2' => [ 'InFocus', 'M2' ], + 'InFocus M2 3G' => [ 'InFocus', 'M2' ], + 'InFocus M2PLUS' => [ 'InFocus', 'M2 Plus' ], + 'InFocus M260' => [ 'InFocus', 'M260' ], + 'InFocus M310' => [ 'InFocus', 'M310' ], + 'InFocus M320!' => [ 'InFocus', 'M320' ], + 'InFocus M330!' => [ 'InFocus', 'M330' ], + 'InFocus M350!' => [ 'InFocus', 'M350' ], + 'InFocus M415' => [ 'InFocus', 'M415' ], + 'InFocus M425' => [ 'InFocus', 'M425' ], + 'InFocus M430' => [ 'InFocus', 'M430' ], + 'InFocus M510!' => [ 'InFocus', 'M510' ], + 'InFocus M511!' => [ 'InFocus', 'M511' ], + 'InFocus M512!' => [ 'InFocus', 'M512' ], + 'InFocus M530' => [ 'InFocus', 'M530' ], + 'InFocus M535' => [ 'InFocus', 'M535' ], + 'InFocus M550!' => [ 'InFocus', 'M550' ], + 'InFocus M560' => [ 'InFocus', 'M560' ], + 'InFocus M680' => [ 'InFocus', 'M680' ], + 'InFocus M808!' => [ 'InFocus', 'M808' ], + 'InFocus M810!' => [ 'InFocus', 'M810' ], + 'InFocus M812!' => [ 'InFocus', 'M812' ], + ], + + 'M009F' => [ 'Infotmic', 'M009F' ], + 'Dk1031' => [ 'Infotmic', 'Flytouch 3', DeviceType::TABLET ], + 'INHON PAPILIO G1' => [ 'Inhon', 'Papilio G1' ], + 'intki E86' => [ 'intki', 'E86' ], + + 'Innos!!' => [ + 'Innos D5C' => [ 'Innos', 'D5C' ], + 'innos D9' => [ 'Innos', 'D9' ], + 'innos D9C' => [ 'Innos', 'D9C' ], + 'innos i5' => [ 'Innos', 'i5' ], + 'innos i6' => [ 'Innos', 'i6' ], + 'INNOS I6 (DNS S4503)' => [ 'Innos', 'i6' ], + 'innos i6C' => [ 'Innos', 'i6C' ], + 'Innos i6cp' => [ 'Innos', 'i6CP' ], + ], + + 'NS-14T002' => [ 'Insignia', 'Flex 8', DeviceType::TABLET ], + + '(AZ|BT)[0-9]{3,3}!!' => [ + 'AZ210A' => [ 'Intel', 'AZ210A' ], + 'AZ210B' => [ 'Intel', 'AZ210B' ], + 'AZ510' => [ 'Intel', 'AZ510' ], + 'BT210' => [ 'Intel', 'BT210' ], + 'BT230' => [ 'Intel', 'BT230' ], + 'BT510' => [ 'Intel', 'BT510' ], + ], + + 'greenridge' => [ 'Intel', 'Green Ridge', DeviceType::TABLET ], + 'TR10RS1' => [ 'Intel', 'TR10RS1', DeviceType::TABLET ], + + '(Intex )?Aqua!!' => [ + 'Aqua 3G' => [ 'Intex', 'Aqua 3G' ], + 'Aqua 3G 512' => [ 'Intex', 'Aqua 3G' ], + 'Aqua 3G+' => [ 'Intex', 'Aqua 3G+' ], + 'Aqua 3G mini' => [ 'Intex', 'Aqua 3G mini' ], + 'Aqua 3G N' => [ 'Intex', 'Aqua 3G N' ], + 'Aqua 3G NS' => [ 'Intex', 'Aqua 3G NS' ], + 'Aqua 3G Neo' => [ 'Intex', 'Aqua 3G Neo' ], + 'Aqua 3G Pro' => [ 'Intex', 'Aqua 3G Pro' ], + 'Aqua 3G Pro Q' => [ 'Intex', 'Aqua 3G Pro Q' ], + 'Aqua 3G Star' => [ 'Intex', 'Aqua 3G Star' ], + 'Aqua 3G Strong' => [ 'Intex', 'Aqua 3G Strong' ], + 'Aqua 4G' => [ 'Intex', 'Aqua 4G' ], + 'Aqua 4G+' => [ 'Intex', 'Aqua 4G+' ], + 'Aqua 4G Strong' => [ 'Intex', 'Aqua 4G Strong' ], + 'Intex Aqua 3X' => [ 'Intex', 'Aqua 3X' ], + 'AQUA 4X' => [ 'Intex', 'Aqua 4X' ], + 'Aqua 5X' => [ 'Intex', 'Aqua 5X' ], + 'Intex Aqua 3.2' => [ 'Intex', 'Aqua 3.2' ], + 'AQUA 4.0' => [ 'Intex', 'Aqua 4.0' ], + 'INTEX AQUA 4.0 4G' => [ 'Intex', 'Aqua 4.0 4G' ], + 'Intex Aqua 4.5E' => [ 'Intex', 'Aqua 4.5E' ], + 'Aqua 4.5Pro' => [ 'Intex', 'Aqua 4.5 Pro' ], + 'Aqua 4.5 3G' => [ 'Intex', 'Aqua 3.5 3G' ], + 'AQUA 5.0' => [ 'Intex', 'Aqua 5.0' ], + 'Aqua 5.5 VR' => [ 'Intex', 'Aqua 5.5 VR' ], + 'Aqua Ace' => [ 'Intex', 'Aqua Ace' ], + 'Aqua Ace II' => [ 'Intex', 'Aqua Ace II' ], + 'Aqua Ace Mini' => [ 'Intex', 'Aqua Ace Mini' ], + 'Aqua.Active' => [ 'Intex', 'Aqua Active' ], + 'Aqua Active' => [ 'Intex', 'Aqua Active' ], + 'Aqua Air' => [ 'Intex', 'Aqua Air' ], + 'Aqua Air II' => [ 'Intex', 'Aqua Air II' ], + 'Aqua Amaze' => [ 'Intex', 'Aqua Amaze' ], + 'Aqua Amoled' => [ 'Intex', 'Aqua Amoled' ], + 'Aqua Classic' => [ 'Intex', 'Aqua Classic' ], + 'Aqua Cloud V' => [ 'Intex', 'Cloud V' ], + 'aQUa COSTA' => [ 'Intex', 'Aqua Costa' ], + 'Aqua Craze' => [ 'Intex', 'Aqua Craze' ], + 'Aqua Craze 2' => [ 'Intex', 'Aqua Craze 2' ], + 'INTEX AQUA CRYSTAL' => [ 'Intex', 'Aqua Crystal' ], + 'Aqua Curve' => [ 'Intex', 'Aqua Curve' ], + 'Aqua Curve mini' => [ 'Intex', 'Aqua Curve Mini' ], + 'Aqua Desire' => [ 'Intex', 'Aqua Desire' ], + 'Intex Aqua Desire HD' => [ 'Intex', 'Aqua Desire HD' ], + 'Intex Aqua Dream' => [ 'Intex', 'Aqua Dream' ], + 'Aqua Dream II' => [ 'Intex', 'Aqua Dream II' ], + 'Aqua Eco' => [ 'Intex', 'Aqua Eco' ], + 'Aqua Eco 4G' => [ 'Intex', 'Aqua Eco 4G' ], + 'Aqua flash' => [ 'Intex', 'Aqua Flash' ], + 'Aqua Freedom' => [ 'Intex', 'Aqua Freedom' ], + 'Aqua GenX' => [ 'Intex', 'Aqua GenX' ], + 'Aqua Glam' => [ 'Intex', 'Aqua Glam' ], + 'Aqua Glory' => [ 'Intex', 'Aqua Glory' ], + 'Aqua Glow' => [ 'Intex', 'Aqua Glow' ], + 'Aqua HD' => [ 'Intex', 'Aqua HD' ], + 'Aqua HD 5.0' => [ 'Intex', 'Aqua HD' ], + 'Aqua HD Power' => [ 'Intex', 'Aqua HD Power' ], + 'Aqua Joy' => [ 'Intex', 'Aqua Joy' ], + 'Aqua KAT' => [ 'Intex', 'Aqua KAT' ], + 'Aqua Life' => [ 'Intex', 'Aqua Life' ], + 'Aqua Life II' => [ 'Intex', 'Aqua Life II' ], + 'Aqua LifeIII' => [ 'Intex', 'Aqua Life III' ], + 'Aqua Life V' => [ 'Intex', 'Aqua Life V' ], + 'Aqua Lions 3G' => [ 'Intex', 'Aqua Lions 3G' ], + 'Aqua Lions 3G S' => [ 'Intex', 'Aqua Lions 3G S' ], + 'INTEX AQUA LIONS 4G' => [ 'Intex', 'Aqua Lions 4G' ], + 'INTEX AQUA LIONS 2' => [ 'Intex', 'Aqua Lions 2' ], + 'INTEX AQUA LIONS 3' => [ 'Intex', 'Aqua Lions 3' ], + 'Aqua Lite' => [ 'Intex', 'Aqua Lite' ], + 'Intex Aqua Marvel' => [ 'Intex', 'Aqua Marvel' ], + 'Aqua Music' => [ 'Intex', 'Aqua Music' ], + 'AQUA OCTA' => [ 'Intex', 'Aqua Octa' ], + 'Intex Aqua Play' => [ 'Intex', 'Aqua Play' ], + 'Aqua Power' => [ 'Intex', 'Aqua Power' ], + 'Aqua Power+' => [ 'Intex', 'Aqua Power+' ], + 'Aqua Power HD' => [ 'Intex', 'Aqua Power HD' ], + 'Aqua Power HD-4G' => [ 'Intex', 'Aqua Power HD 4G' ], + 'Aqua Power II' => [ 'Intex', 'Aqua Power II' ], + 'Aqua Power 4G' => [ 'Intex', 'Aqua Power 4G' ], + 'Aqua Power M' => [ 'Intex', 'Aqua Power M' ], + 'Aqua Pride' => [ 'Intex', 'Aqua Pride' ], + 'Aqua Pro' => [ 'Intex', 'Aqua Pro' ], + 'Aqua Pro 4G' => [ 'Intex', 'Aqua Pro 4G' ], + 'Aqua QWERTY' => [ 'Intex', 'Aqua Qwerty' ], + 'Aqua Raze' => [ 'Intex', 'Aqua Raze' ], + 'Aqua Ring' => [ 'Intex', 'Aqua Ring' ], + 'Aqua Secure' => [ 'Intex', 'Aqua Secure' ], + 'AquaSense5.0' => [ 'Intex', 'Aqua Sense 5.0' ], + 'Aqua Sense 5 1' => [ 'Intex', 'Aqua Sense 5.1' ], + 'Aqua Shine 4G' => [ 'Intex', 'Aqua Shine 4G' ], + 'Aqua Slice' => [ 'Intex', 'Aqua Slice' ], + 'Aqua Slice II' => [ 'Intex', 'Aqua Slice II' ], + 'Aqua Speed' => [ 'Intex', 'Aqua Speed' ], + 'Aqua Speed HD' => [ 'Intex', 'Aqua Speed HD' ], + 'Aqua Star' => [ 'Intex', 'Aqua Star' ], + 'Aqua Star 4G' => [ 'Intex', 'Aqua Star 4G' ], + 'Aqua Star L' => [ 'Intex', 'Aqua Star L' ], + 'Aqua Star II' => [ 'Intex', 'Aqua Star II' ], + 'Aqua Star II 16GB' => [ 'Intex', 'Aqua Star II' ], + 'Aqua Star II HD' => [ 'Intex', 'Aqua Star II HD' ], + 'Aqua Star 5.0' => [ 'Intex', 'Aqua Star 5.0' ], + 'Aqua Star HD' => [ 'Intex', 'Aqua Star HD' ], + 'Aqua Star Power' => [ 'Intex', 'Aqua Star Power' ], + 'Aqua Strong 5.1' => [ 'Intex', 'Aqua Strong 5.1' ], + 'Intex Aqua Strong 5.1+' => [ 'Intex', 'Aqua Strong 5.1+' ], + 'Aqua Style' => [ 'Intex', 'Aqua Style' ], + 'Aqua Style 4.0' => [ 'Intex', 'Aqua Style 4.0' ], + 'Aqua Style Mini' => [ 'Intex', 'Aqua Style Mini' ], + 'Aqua Style Pro' => [ 'Intex', 'Aqua Style Pro' ], + 'Aqua Style VX' => [ 'Intex', 'Aqua Style VX' ], + 'Aqua Style X' => [ 'Intex', 'Aqua Style X' ], + 'Aqua Super' => [ 'Intex', 'Aqua Super' ], + 'Intex Aqua Superb' => [ 'Intex', 'Aqua Superb' ], + 'Intex Aqua Supreme+' => [ 'Intex', 'Aqua Supreme' ], + 'Intex Aqua Swadesh' => [ 'Intex', 'Aqua Swadesh' ], + 'Aqua Trend' => [ 'Intex', 'Aqua Trend' ], + 'INTEX AQUA TREND LITE' => [ 'Intex', 'Aqua Trend Lite' ], + 'Aqua Trendy' => [ 'Intex', 'Aqua Trendy' ], + 'Aqua Turbo 4G' => [ 'Intex', 'Aqua Turbo 4G' ], + 'Aqua Twist' => [ 'Intex', 'Aqua Twist' ], + 'Aqua View' => [ 'Intex', 'Aqua View' ], + 'Aqua Viturbo' => [ 'Intex', 'Aqua Viturbo' ], + 'Intex Aqua Wave' => [ 'Intex', 'Aqua Wave' ], + 'Aqua Wing' => [ 'Intex', 'Aqua Wing' ], + 'Aqua Wonder' => [ 'Intex', 'Aqua Wonder' ], + 'Aqua Wonder Quad Core' => [ 'Intex', 'Aqua Wonder' ], + 'Aqua X' => [ 'Intex', 'Aqua X' ], + 'Aqua Xtreme' => [ 'Intex', 'Aqua Xtreme' ], + 'Intex Aqua Xtreme II' => [ 'Intex', 'Aqua Xtreme II' ], + 'Aqua XtremeV' => [ 'Intex', 'Aqua Xtreme V' ], + 'Aqua Young' => [ 'Intex', 'Aqua Young' ], + 'INTEX AQUA ZENITH' => [ 'Intex', 'Aqua Zenith' ], + 'Aqua i2' => [ 'Intex', 'Aqua i2' ], + 'Intex Aqua I3' => [ 'Intex', 'Aqua i3' ], + 'Intex Aqua I3 K' => [ 'Intex', 'Aqua i3 K' ], + 'Aqua I-4' => [ 'Intex', 'Aqua i4' ], + 'Aqua i-4+' => [ 'Intex', 'Aqua i4' ], + 'Aqua I-5' => [ 'Intex', 'Aqua i5' ], + 'Aqua I5' => [ 'Intex', 'Aqua i5' ], + 'Aqua i5 HD' => [ 'Intex', 'Aqua i5 HD' ], + 'Aqua i5 mini' => [ 'Intex', 'Aqua i5 mini' ], + 'Aqua I5 Octa' => [ 'Intex', 'Aqua i5 Octa' ], + 'Aqua i6' => [ 'Intex', 'Aqua i6' ], + 'Aqua i7' => [ 'Intex', 'Aqua i7' ], + 'Aqua I14' => [ 'Intex', 'Aqua i14' ], + 'Aqua i15' => [ 'Intex', 'Aqua i15' ], + 'Aqua A1' => [ 'Intex', 'Aqua A1' ], + 'Aqua A2' => [ 'Intex', 'Aqua A2' ], + 'INTEX AQUA A4' => [ 'Intex', 'Aqua A4' ], + 'Aqua G2' => [ 'Intex', 'Aqua G2' ], + 'Aqua M5' => [ 'Intex', 'Aqua M5' ], + 'Aqua N2' => [ 'Intex', 'Aqua N2' ], + 'Aqua N7' => [ 'Intex', 'Aqua N7' ], + 'Aqua N8' => [ 'Intex', 'Aqua N8' ], + 'Intex Aqua N11' => [ 'Intex', 'Aqua N11' ], + 'Aqua N15' => [ 'Intex', 'Aqua N15' ], + 'Aqua N17' => [ 'Intex', 'Aqua N17' ], + 'Aqua P2' => [ 'Intex', 'Aqua P2' ], + 'Aqua P3' => [ 'Intex', 'Aqua P3' ], + 'Aqua Q1' => [ 'Intex', 'Aqua Q1' ], + 'Aqua Q1+' => [ 'Intex', 'Aqua Q1' ], + 'AQUA Q2' => [ 'Intex', 'Aqua Q2' ], + 'Aqua Q3' => [ 'Intex', 'Aqua Q3' ], + 'Aqua Q4' => [ 'Intex', 'Aqua Q4' ], + 'Aqua Q5' => [ 'Intex', 'Aqua Q5' ], + 'Aqua Q7' => [ 'Intex', 'Aqua Q7' ], + 'Aqua Q7 Pro' => [ 'Intex', 'Aqua Q7 Pro' ], + 'Aqua Q7N' => [ 'Intex', 'Aqua Q7N' ], + 'Aqua Q7N Pro' => [ 'Intex', 'Aqua Q7N Pro' ], + 'Aqua R2' => [ 'Intex', 'Aqua R2' ], + 'Aqua R3' => [ 'Intex', 'Aqua R3' ], + 'Aqua R3+' => [ 'Intex', 'Aqua R3' ], + 'Aqua R4' => [ 'Intex', 'Aqua R4' ], + 'Aqua R4+' => [ 'Intex', 'Aqua R4' ], + 'Aqua S' => [ 'Intex', 'Aqua S' ], + 'INTEX AQUA S3' => [ 'Intex', 'Aqua S3' ], + 'Aqua S7' => [ 'Intex', 'Aqua S7' ], + 'Aqua Sx' => [ 'Intex', 'Aqua Sx' ], + 'Aqua T2' => [ 'Intex', 'Aqua T2' ], + 'Aqua T3' => [ 'Intex', 'Aqua T3' ], + 'Aqua T4' => [ 'Intex', 'Aqua T4' ], + 'Intex Aqua T5' => [ 'Intex', 'Aqua T5' ], + 'Aqua T6' => [ 'Intex', 'Aqua T6' ], + 'Aqua V+' => [ 'Intex', 'Aqua V+' ], + 'Aqua V2' => [ 'Intex', 'Aqua V2' ], + 'Aqua V3' => [ 'Intex', 'Aqua V3' ], + 'Aqua V3G' => [ 'Intex', 'Aqua V3G' ], + 'Aqua V4' => [ 'Intex', 'Aqua V4' ], + 'Aqua V5' => [ 'Intex', 'Aqua V5' ], + 'Aqua X15' => [ 'Intex', 'Aqua X15' ], + 'Aqua Y2' => [ 'Intex', 'Aqua Y2' ], + 'Aqua Y2 1GB' => [ 'Intex', 'Aqua Y2' ], + 'Aqua Y2 IPS' => [ 'Intex', 'Aqua Y2' ], + 'Aqua Y2+' => [ 'Intex', 'Aqua Y2+' ], + 'Aqua Y2 Pro' => [ 'Intex', 'Aqua Y2 Pro' ], + 'Aqua Y2 Power' => [ 'Intex', 'Aqua Y2 Power' ], + 'Aqua Y2 Remote' => [ 'Intex', 'Aqua Y2 Remote' ], + 'Aqua Y2 Ultra' => [ 'Intex', 'Aqua Y2 Ultra' ], + 'Aqua Y3' => [ 'Intex', 'Aqua Y3' ], + 'Aqua Y4' => [ 'Intex', 'Aqua Y3' ], + ], + + '(Intex )?Cloud!!' => [ + 'Cloud N12' => [ 'Intex', 'Cloud N12' ], + 'Cloud Q11' => [ 'Intex', 'Cloud Q11' ], + 'Intex Cloud X+' => [ 'Intex', 'Cloud X' ], + 'INTEX CLOUD X1' => [ 'Intex', 'Cloud X1' ], + 'Cloud X2' => [ 'Intex', 'Cloud X2' ], + 'Cloud X3' => [ 'Intex', 'Cloud X3' ], + 'Intex Cloud X4' => [ 'Intex', 'Cloud X4' ], + 'Cloud X5' => [ 'Intex', 'Cloud X5' ], + 'INTEX Cloud X11' => [ 'Intex', 'Cloud X11' ], + 'Cloud X12' => [ 'Intex', 'Cloud X12' ], + 'Intex Cloud Y1' => [ 'Intex', 'Cloud Y1' ], + 'Cloud Y2' => [ 'Intex', 'Cloud Y2' ], + 'Cloud Y3' => [ 'Intex', 'Cloud Y3' ], + 'INTEX Cloud Y4' => [ 'Intex', 'Cloud Y4' ], + 'INTEX Cloud Y4+' => [ 'Intex', 'Cloud Y4+' ], + 'Cloud Y5' => [ 'Intex', 'Cloud Y5' ], + 'Intex Cloud Y7' => [ 'Intex', 'Cloud Y7' ], + 'Intex Cloud Y11' => [ 'Intex', 'Cloud Y11' ], + 'Intex Cloud y12' => [ 'Intex', 'Cloud Y12' ], + 'Cloud Y13 Plus' => [ 'Intex', 'Cloud Y13 Plus' ], + 'Cloud Y17+' => [ 'Intex', 'Cloud Y17 Plus' ], + 'Cloud Z5' => [ 'Intex', 'Cloud Z5' ], + 'Cloud 3G Candy' => [ 'Intex', 'Cloud 3G Candy' ], + 'Cloud 3G Gem' => [ 'Intex', 'Cloud 3G Gem' ], + 'Cloud 4G Smart' => [ 'Intex', 'Cloud 4G Smart' ], + 'Cloud 4G Star' => [ 'Intex', 'Cloud 4G Star' ], + 'Cloud Breeze' => [ 'Intex', 'Cloud Breeze' ], + 'Cloud Champ' => [ 'Intex', 'Cloud Champ' ], + 'Cloud Cube' => [ 'Intex', 'Cloud Cube' ], + 'Cloud Flash' => [ 'Intex', 'Cloud Flash' ], + 'Cloud Force' => [ 'Intex', 'Cloud Force' ], + 'Cloud Gem+' => [ 'Intex', 'Cloud Gem+' ], + 'Cloud Jewel' => [ 'Intex', 'Cloud Jewel' ], + 'Cloud Pace' => [ 'Intex', 'Cloud Pace' ], + 'Cloud Power+' => [ 'Intex', 'Cloud Power+' ], + 'Cloud String HD' => [ 'Intex', 'Cloud String HD' ], + 'Intex Cloud Style 4G' => [ 'Intex', 'Cloud Style 4G' ], + 'Cloud Swift' => [ 'Intex', 'Cloud Swift' ], + 'Intex Cloud Swing' => [ 'Intex', 'Cloud Swing' ], + 'Cloud Zest' => [ 'Intex', 'Cloud Zest' ], + ], + + 'INTEX IRIS-II' => [ 'Intex', 'Iris 2', DeviceType::TABLET ], + 'INQ Cloud Touch' => [ 'INQ', 'Cloud Touch' ], + 'INQ Mayfair (EU)' => [ 'INQ', 'Mayfair' ], + 'A19S' => [ 'ISA', 'A19S' ], + 'NS-13T001' => [ 'Insignia', 'Flex Tablet', DeviceType::TABLET ], + 'MAX FIND 5.0' => [ 'iONE', 'Max Find 5.0' ], + 'IPRO i5S' => [ 'IPRO', 'i5S' ], + 'TX18' => [ 'Irbis', 'TX18', DeviceType::TABLET ], + 'ILT-MX100' => [ 'iRiver', 'Tab', DeviceType::TABLET ], + 'MM-3201' => [ 'iRiver', 'Tab MM-3201', DeviceType::TABLET ], + + '(iNote|itel)!!' => [ + 'iNote beyond' => [ 'iTel', 'iNote beyond' ], + 'iNote mini' => [ 'iTel', 'iNote mini' ], + 'itel IT1351' => [ 'iTel', 'IT1351' ], + 'itel IT1351E' => [ 'iTel', 'IT1351E' ], + 'itel it1400' => [ 'iTel', 'IT1400' ], + 'itel it1403' => [ 'iTel', 'IT1403' ], + 'itel it1403+' => [ 'iTel', 'IT1403 Plus' ], + 'itel it1404' => [ 'iTel', 'IT1404' ], + 'itel it1407' => [ 'iTel', 'IT1407' ], + 'itel it1409' => [ 'iTel', 'IT1409' ], + 'itel-it1410' => [ 'iTel', 'IT1410' ], + 'itel it1500' => [ 'iTel', 'IT1500' ], + 'itel it1501' => [ 'iTel', 'IT1501' ], + 'itel it1502' => [ 'iTel', 'IT1502' ], + 'itel it1503' => [ 'iTel', 'IT1503' ], + 'itel it1507' => [ 'iTel', 'IT1507' ], + 'itel it1508' => [ 'iTel', 'IT1508' ], + 'itel it1511' => [ 'iTel', 'IT1511' ], + 'itel-it1512' => [ 'iTel', 'IT1512' ], + 'itel it1516 Plus' => [ 'iTel', 'IT1516 Plus' ], + 'itel it1701' => [ 'iTel', 'IT1701' ], + 'itel it1702' => [ 'iTel', 'IT1702' ], + 'itel it1703' => [ 'iTel', 'IT1703' ], + 'itel A21' => [ 'iTel', 'A21' ], + 'itel A41' => [ 'iTel', 'A41' ], + 'itel P12' => [ 'iTel', 'P12' ], + 'itel P41' => [ 'iTel', 'P41' ], + 'itel P51' => [ 'iTel', 'P51' ], + 'itel S11' => [ 'iTel', 'S11' ], + 'itel S11Plus' => [ 'iTel', 'S11 Plus' ], + 'itel S31' => [ 'iTel', 'S31' ], + ], + + 'IUNI U810' => [ 'IUni', 'U810 U2' ], + + 'IVIO!!' => [ + 'IVIO-DG20' => [ 'Ivio', 'DG20' ], + 'IVIO DE38' => [ 'Ivio', 'DE38' ], + ], + + 'iwoo i900' => [ 'iwoo', 'i900' ], + + '(JIAYU|JY)!!' => [ + 'JIAYU F1' => [ 'Jiayu', 'F1' ], + 'JY-F1' => [ 'Jiayu', 'F1' ], + 'JY-F2' => [ 'Jiayu', 'F2' ], + 'JY-G1' => [ 'Jiayu', 'G1' ], + 'JY-G2' => [ 'Jiayu', 'G2' ], + 'JY-G2 DualCore(Standard)' => [ 'Jiayu', 'G2' ], + 'JY-G2 Plus' => [ 'Jiayu', 'G2 Plus' ], + 'JY-G2 64' => [ 'Jiayu', 'G2' ], + 'JY G2F' => [ 'Jiayu', 'G2F' ], + 'JY-G2F' => [ 'Jiayu', 'G2F' ], + 'JY-G2H' => [ 'Jiayu', 'G2H' ], + 'JY-G2L' => [ 'Jiayu', 'G2L' ], + 'JY-G2LS' => [ 'Jiayu', 'G2LS' ], + 'Jiayu G2' => [ 'Jiayu', 'G2' ], + 'Jiayu G2H' => [ 'Jiayu', 'G2H' ], + 'Jiayu G2L' => [ 'Jiayu', 'G2L' ], + 'Jiayu G2s' => [ 'Jiayu', 'G2 Plus' ], + 'JY-G3' => [ 'Jiayu', 'G3' ], + 'Jiayu G3' => [ 'Jiayu', 'G3' ], + 'JIAYU-G3' => [ 'Jiayu', 'G3' ], + 'JY-G3C' => [ 'Jiayu', 'G3C' ], + 'JY-G3N!' => [ 'Jiayu', 'G3N' ], + 'JYG3N' => [ 'Jiayu', 'G3N' ], + 'JY-G3S' => [ 'Jiayu', 'G3S' ], + 'JIAYU G3S' => [ 'Jiayu', 'G3S' ], + 'JIAYU.G3S' => [ 'Jiayu', 'G3S' ], + 'JY-G4' => [ 'Jiayu', 'G4' ], + 'JY-G4\G5' => [ 'Jiayu', 'G4' ], + 'JY-G4 G5' => [ 'Jiayu', 'G4' ], + 'JY-G4C' => [ 'Jiayu', 'G4C' ], + 'JY G4C' => [ 'Jiayu', 'G4C' ], + 'Jiayu G4S' => [ 'Jiayu', 'G4S' ], + 'JY-G4S' => [ 'Jiayu', 'G4S' ], + 'JIAYU-G4S' => [ 'Jiayu', 'G4S' ], + 'JY-G4T' => [ 'Jiayu', 'G4T' ], + 'JY-G5' => [ 'Jiayu', 'G5' ], + 'Jiayu G5S' => [ 'Jiayu', 'G5S' ], + 'JY-G5S' => [ 'Jiayu', 'G5S' ], + 'JY-G5S+' => [ 'Jiayu', 'G5S+' ], + 'JY-G6' => [ 'Jiayu', 'G6' ], + 'JY-S1' => [ 'Jiayu', 'S1' ], + 'JY-S2' => [ 'Jiayu', 'S2' ], + 'JY-S3' => [ 'Jiayu', 'S3' ], + 'JIAYU S3' => [ 'Jiayu', 'S3' ], + 'JY-S3S' => [ 'Jiayu', 'S3S' ], + ], + + 'G2S' => [ 'Jiayu', 'G2 Plus' ], + 'JT-Smart PC01' => [ 'Joy-IT', 'JT-Smart PC-01' ], + 'JJ5S+' => [ 'Jugate', 'JJ5S+' ], + + 'JC-A[0-9]{3,3}!!' => [ + 'JC-A107' => [ 'JuiCell', 'JC-A107' ], + 'JC-A109' => [ 'JuiCell', 'JC-A109' ], + ], + + 'JXD!!' => [ + 'JXD S601WIFI' => [ 'JXD', 'S601 WIFI', 'media' ], + 'JXD V5200' => [ 'JXD', 'V5200', 'media' ], + 'JXD P200' => [ 'JXD', 'P200', DeviceType::TABLET ], + 'JXD P300' => [ 'JXD', 'P300', DeviceType::TABLET ], + 'JXD-P1000!' => [ 'JXD', 'P1000', DeviceType::TABLET ], + 'JXD-S80' => [ 'JXD', 'S80', DeviceType::TABLET ], + 'JXD-S6600!' => [ 'JXD', 'S6600', DeviceType::TABLET ], + 'JXD S7600' => [ 'JXD', 'S7600', DeviceType::TABLET ], + 'JXD-S8000' => [ 'JXD', 'S8000', DeviceType::TABLET ], + 'JXD-S9000' => [ 'JXD', 'S9000', DeviceType::TABLET ], + 'JXD-S9100' => [ 'JXD', 'S9100', DeviceType::TABLET ], + ], + + 'A2' => [ 'KakaTech', 'A2' ], + + 'Karbonn!!' => [ + 'Karbonn A1' => [ 'Karbonn', 'A1' ], + 'Karbonn A1*' => [ 'Karbonn', 'A1' ], + 'Karbonn A1 Champ' => [ 'Karbonn', 'A1 Champ' ], + 'Karbonn A1 Plus Champ' => [ 'Karbonn', 'A1 Champ Plus' ], + 'Karbonn A1 1 Plus Champ' => [ 'Karbonn', 'A1 Champ Plus' ], + 'Karbonn A1+ Duple' => [ 'Karbonn', 'A1+' ], + 'Karbonn A1+ Super' => [ 'Karbonn', 'A1+' ], + 'Karbonn A2' => [ 'Karbonn', 'A2' ], + 'Karbonn A2+' => [ 'Karbonn', 'A2+' ], + 'Karbonn A2*' => [ 'Karbonn', 'A2*' ], + 'Karbonn A4' => [ 'Karbonn', 'A4' ], + 'Karbonn A5' => [ 'Karbonn', 'A5' ], + 'Karbonn A5i' => [ 'Karbonn', 'A5i' ], + 'Karbonn A5s' => [ 'Karbonn', 'A5s' ], + 'Karbonn A5*' => [ 'Karbonn', 'A5*' ], + 'Karbonn A6' => [ 'Karbonn', 'A6' ], + 'Karbonn A6+' => [ 'Karbonn', 'A6+' ], + 'Karbonn A7*' => [ 'Karbonn', 'A7' ], + 'Karbonn A8' => [ 'Karbonn', 'A8' ], + 'Karbonn A9' => [ 'Karbonn', 'A9' ], + 'Karbonn A9*' => [ 'Karbonn', 'A9' ], + 'Karbonn A9s' => [ 'Karbonn', 'A9s' ], + 'Karbonn A9+' => [ 'Karbonn', 'A9+' ], + 'Karbonn A10' => [ 'Karbonn', 'A10' ], + 'Karbonn A11*' => [ 'Karbonn', 'A11' ], + 'Karbonn A12' => [ 'Karbonn', 'A12' ], + 'Karbonn A12*' => [ 'Karbonn', 'A12' ], + 'Karbonn A12+' => [ 'Karbonn', 'A12+' ], + 'Karbonn A14' => [ 'Karbonn', 'A14' ], + 'Karbonn A18' => [ 'Karbonn', 'A18' ], + 'Karbonn A18+' => [ 'Karbonn', 'A18+' ], + 'Karbonn A19' => [ 'Karbonn', 'A19' ], + 'Karbonn A20' => [ 'Karbonn', 'A20' ], + 'Karbonn A21!' => [ 'Karbonn', 'A21' ], + 'Karbonn A25' => [ 'Karbonn', 'A25' ], + 'Karbonn A25+' => [ 'Karbonn', 'A25+' ], + 'Karbonn A26' => [ 'Karbonn', 'A26' ], + 'KarbonnA26' => [ 'Karbonn', 'A26' ], + 'Karbonn A27+' => [ 'Karbonn', 'A27' ], + 'Karbonn A30' => [ 'Karbonn', 'A30' ], + 'Karbonn A35' => [ 'Karbonn', 'A35' ], + 'Karbonn A40' => [ 'Karbonn', 'A40' ], + 'Karbonn A40Plus' => [ 'Karbonn', 'A40 Plus' ], + 'Karbonn A50' => [ 'Karbonn', 'A50' ], + 'Karbonn A51 Lite' => [ 'Karbonn', 'A51 Lite' ], + 'Karbonn A51+' => [ 'Karbonn', 'A51+' ], + 'Karbonn A52+' => [ 'Karbonn', 'A52+' ], + 'Karbonn_A60' => [ 'Karbonn', 'A60' ], + 'Karbonn A66' => [ 'Karbonn', 'A66' ], + 'Karbonn A91' => [ 'Karbonn', 'A91' ], + 'Karbonn A92Plus' => [ 'Karbonn', 'A92 Plus' ], + 'Karbonn A93' => [ 'Karbonn', 'A93' ], + 'Karbonn A96' => [ 'Karbonn', 'A96' ], + 'Karbonn A101' => [ 'Karbonn', 'A101' ], + 'Karbonn A108' => [ 'Karbonn', 'A108' ], + 'karbonn A109' => [ 'Karbonn', 'A109' ], + 'Karbonn A119' => [ 'Karbonn', 'A119' ], + 'Karbonn A202' => [ 'Karbonn', 'A202' ], + 'Karbonn A240' => [ 'Karbonn', 'A240' ], + 'Karbonn E8222' => [ 'Karbonn', 'E8222' ], + 'Karbonn ST52' => [ 'Karbonn', 'ST52', DeviceType::TABLET ], + 'Karbonn ST72' => [ 'Karbonn', 'ST72', DeviceType::TABLET ], + ], + + 'TA-FONE!!' => [ + 'TA-FONE A34' => [ 'Karbonn', 'Ta-Fone A34' ], + 'TA-FONE A34 HD' => [ 'Karbonn', 'Ta-Fone A34 HD' ], + 'TA-FONE A37' => [ 'Karbonn', 'Ta-Fone A37' ], + 'TA-FONE A37 HD' => [ 'Karbonn', 'Ta-Fone A37 HD' ], + 'TA-FONE A39 HD' => [ 'Karbonn', 'Ta-Fone A39 HD' ], + ], + + '(Karbonn|Titanium)!!' => [ + 'Karbonn Titanium Hexa' => [ 'Karbonn', 'Titanium Hexa' ], + 'Titanium Octane' => [ 'Karbonn', 'Titanium Octane' ], + 'Titanium Octane Plus' => [ 'Karbonn', 'Titanium Octane Plus' ], + 'Titanium K9 Smart' => [ 'Karbonn', 'Titanium K9 Smart' ], + 'Titanium S1' => [ 'Karbonn', 'Titanium S1' ], + 'Titanium S1 Plus' => [ 'Karbonn', 'Titanium S1 Plus' ], + 'Karbonn Titanium S1 Plus' => [ 'Karbonn', 'Titanium S1 Plus' ], + 'Karbonn S2' => [ 'Karbonn', 'Titanium S2' ], + 'Karbonn Titanium S3' => [ 'Karbonn', 'Titanium S3' ], + 'Titanium S2 Plus' => [ 'Karbonn', 'Titanium S2 Plus' ], + 'Titanium S2Plus' => [ 'Karbonn', 'Titanium S2 Plus' ], + 'Karbonn Titanium S4' => [ 'Karbonn', 'Titanium S4' ], + 'Karbonn Titanium S4 Plus' => [ 'Karbonn', 'Titanium S4 Plus' ], + 'Titanium S5' => [ 'Karbonn', 'Titanium S5' ], + 'karbonn Titanium S5' => [ 'Karbonn', 'Titanium S5' ], + 'TitaniumS5-Karbonnroms' => [ 'Karbonn', 'Titanium S5' ], + 'Karbonn S5i' => [ 'Karbonn', 'Titanium S5i' ], + 'Karbonn Titanium S5 Plus' => [ 'Karbonn', 'Titanium S5 Plus' ], + 'Karbonn Titanium S5+' => [ 'Karbonn', 'Titanium S5 Plus' ], + 'Titanium S5+!' => [ 'Karbonn', 'Titanium S5 Plus' ], + 'Titanium S5 Ultra' => [ 'Karbonn', 'Titanium S5 Ultra' ], + 'Karbonn Titanium S6' => [ 'Karbonn', 'Titanium S6' ], + 'Karbonn Titanium S8' => [ 'Karbonn', 'Titanium S8' ], + 'Karbonn Titanium S9' => [ 'Karbonn', 'Titanium S9' ], + 'Titanium S10' => [ 'Karbonn', 'Titanium S10' ], + 'Karbonn Titanium S11' => [ 'Karbonn', 'Titanium S11' ], + 'Titanium S12 Delite' => [ 'Karbonn', 'Titanium S12 Delite' ], + 'Titanium S15' => [ 'Karbonn', 'Titanium S15' ], + 'Karbonn Titanium S15 Plus' => [ 'Karbonn', 'Titanium S15 Plus' ], + 'Titanium S15 Ultra' => [ 'Karbonn', 'Titanium S15 Ultra' ], + 'Titanium S18' => [ 'Karbonn', 'Titanium S18' ], + 'Titanium S19' => [ 'Karbonn', 'Titanium S19' ], + 'Karbonn TITANIUM S20' => [ 'Karbonn', 'Titanium S20' ], + 'Titanium S21' => [ 'Karbonn', 'Titanium S21' ], + 'Titanium S22' => [ 'Karbonn', 'Titanium S22' ], + 'Karbonn Titanium S25' => [ 'Karbonn', 'Titanium S25' ], + 'Karbonn Titanium S29 Elite' => [ 'Karbonn', 'Titanium S29 Elite' ], + 'Titanium S30' => [ 'Karbonn', 'Titanium S30' ], + 'Titanium S35' => [ 'Karbonn', 'Titanium S35' ], + 'Titanium S99' => [ 'Karbonn', 'Titanium S99' ], + 'Karbonn Titanium S99' => [ 'Karbonn', 'Titanium S99' ], + 'Titanium S109' => [ 'Karbonn', 'Titanium S109' ], + 'Titanium S200 HD' => [ 'Karbonn', 'Titanium S200 HD' ], + 'Titanium S201' => [ 'Karbonn', 'Titanium Dazzle S201' ], + 'Titanium S202' => [ 'Karbonn', 'Titanium Dazzle2 S202' ], + 'Titanium S203' => [ 'Karbonn', 'Titanium High 2 S203' ], + 'karbonn Titanium S203' => [ 'Karbonn', 'Titanium High 2 S203' ], + 'Titanium S204' => [ 'Karbonn', 'Titanium Dazzle3 S204' ], + 'TITANIUM S205 2GB' => [ 'Karbonn', 'Titanium S205' ], + 'S2052GB' => [ 'Karbonn', 'Titanium S205' ], + 'Titanium S315' => [ 'Karbonn', 'Titanium Pop S315' ], + 'Titanium S320' => [ 'Karbonn', 'Titanium S320' ], + 'Karbonn Titanium S320+' => [ 'Karbonn', 'Titanium S320 Plus' ], + 'Titanium S360' => [ 'Karbonn', 'Titanium Mach Two S360' ], + 'Karbonn Titanium S360' => [ 'Karbonn', 'Titanium Mach Two S360' ], + 'Karbonn Titanium X' => [ 'Karbonn', 'Titanium X' ], + ], + + 'A7*' => [ 'Karbonn', 'A7' ], + 'A7+' => [ 'Karbonn', 'A7+' ], + 'A11' => [ 'Karbonn', 'A11' ], + 'A21' => [ 'Karbonn', 'A21' ], + 'A55i' => [ 'Karbonn', 'Smart A55i' ], + 'Alfa A93 POP' => [ 'Karbonn', 'Alfa A93 Pop' ], + 'A111' => [ 'Karbonn', 'A111' ], + 'K9 Smart 4G' => [ 'Karbonn', 'K9 Smart 4G' ], + 'Karbonn Aura 9' => [ 'Karbonn', 'Aura 9' ], + 'Sparkle V' => [ 'Karbonn', 'Sparkle V' ], + 'ST10' => [ 'Karbonn', 'Smart Tab 10 Cosmic', DeviceType::TABLET ], + 'SmartTab1' => [ 'Karbonn', 'Smart Tab 1', DeviceType::TABLET ], + 'KB901' => [ 'Kaser', 'KB901', DeviceType::TABLET ], + + '(KAZAM|Thunder|Tornado|Trooper)!!' => [ + 'KAZAM TV 45' => [ 'KAZAM', 'TV 45' ], + 'KAZAM Thunder 345' => [ 'KAZAM', 'Thunder 345' ], + 'KAZAM Thunder 345 LTE' => [ 'KAZAM', 'Thunder 345' ], + 'KAZAM Thunder 345L' => [ 'KAZAM', 'Thunder 345L' ], + 'Thunder 347' => [ 'KAZAM', 'Thunder 347' ], + 'KAZAM Thunder 350L' => [ 'KAZAM', 'Thunder 350L' ], + 'KAZAM Thunder 550' => [ 'KAZAM', 'Thunder 550' ], + 'KAZAM Thunder 550L' => [ 'KAZAM', 'Thunder 550L' ], + 'KAZAM Thunder Q45' => [ 'KAZAM', 'Thunder Q4.5' ], + 'KAZAM THUNDER2 45L' => [ 'KAZAM', 'Thunder 2 4.5L' ], + 'KAZAM Thunder2 50' => [ 'KAZAM', 'Thunder 2 5.0' ], + 'Thunder3 45 LTE' => [ 'KAZAM', 'Thunder 3 4.5' ], + 'Tornado 348' => [ 'KAZAM', 'Tornado 348' ], + 'KAZAM Tornado 350' => [ 'KAZAM', 'Tornado 350' ], + 'KAZAM Tornado 455L' => [ 'KAZAM', 'Tornado 455L' ], + 'KAZAM Tornado2 50' => [ 'KAZAM', 'Tornado 2 5.0' ], + 'KAZAM Trooper 440L' => [ 'KAZAM', 'Trooper 440L' ], + 'KAZAM Trooper 445L' => [ 'KAZAM', 'Trooper 445L' ], + 'KAZAM Trooper 450' => [ 'KAZAM', 'Trooper 450' ], + 'KAZAM Trooper 450L' => [ 'KAZAM', 'Trooper 450L' ], + 'KAZAM Trooper 451' => [ 'KAZAM', 'Trooper 451' ], + 'KAZAM Trooper 455' => [ 'KAZAM', 'Trooper 455' ], + 'KAZAM Trooper 540' => [ 'KAZAM', 'Trooper 540' ], + 'KAZAM Trooper 550' => [ 'KAZAM', 'Trooper 550' ], + 'KAZAM Trooper 550L' => [ 'KAZAM', 'Trooper 550L' ], + 'KAZAM Trooper 551' => [ 'KAZAM', 'Trooper 551' ], + 'KAZAM Trooper 555' => [ 'KAZAM', 'Trooper 555' ], + 'Trooper X35' => [ 'KAZAM', 'Trooper X3.5' ], + 'Trooper X40' => [ 'KAZAM', 'Trooper X4.0' ], + 'KAZAM Trooper X45' => [ 'KAZAM', 'Trooper X4.5' ], + 'KAZAM Trooper X50' => [ 'KAZAM', 'Trooper X5.0' ], + 'Trooper X55' => [ 'KAZAM', 'Trooper X5.5' ], + 'KAZAM Trooper2 40' => [ 'KAZAM', 'Trooper 2 4.0' ], + 'Trooper2 45' => [ 'KAZAM', 'Trooper 2 4.5' ], + 'KAZAM Trooper2 50' => [ 'KAZAM', 'Trooper 2 5.0' ], + 'Kazam Trooper2 60' => [ 'KAZAM', 'Trooper 2 6.0' ], + ], + + 'MT791' => [ 'Keen High', 'MT791' ], + + 'KENEKSI!!' => [ + 'KENEKSI FIRE' => [ 'KENEKSI', 'Fire' ], + 'KENEKSI-Fire' => [ 'KENEKSI', 'Fire' ], + 'KENEKSI-Norma' => [ 'KENEKSI', 'Norma' ], + 'KENEKSI-SIGMA' => [ 'KENEKSI', 'Sigma' ], + 'KENEKSI-ZETA' => [ 'KENEKSI', 'Zeta' ], + ], + + 'Pro 10 dual core' => [ 'Kiano', 'Pro 10 Dual', DeviceType::TABLET ], + 'KIOTO 793' => [ 'KIOTO', '793' ], + 'D91' => [ 'KK', 'D91', DeviceType::TABLET ], + 'K080' => [ 'Kobo', 'K080', DeviceType::EREADER ], + 'Vox' => [ 'Kobo', 'Vox', DeviceType::EREADER ], + 'M1050S' => [ 'KOCASO', 'M1050S', DeviceType::TABLET ], + 'SX9701W' => [ 'KOCASO', 'SX9701W', DeviceType::TABLET ], + + '(KATBL|Kogan|Agora)!!' => [ + 'KATBL07AND' => [ 'Kogan', 'Agora' ], + 'KATBL10A16DA' => [ 'Kogan', 'Agora' ], + 'KATBL10A16E' => [ 'Kogan', 'Agora' ], + 'KATBL10AND' => [ 'Kogan', 'Agora' ], + 'Agora 4G' => [ 'Kogan', 'Agora 4G' ], + 'Agora HD+' => [ 'Kogan', 'Agora HD+' ], + 'Agora Quad Core' => [ 'Kogan', 'Agora Quad Core' ], + 'Kogan Agora 6Plus' => [ 'Kogan', 'Agora 6 Plus' ], + ], + + 'KOMU!!' => [ + 'Komu Color' => [ 'Komu', 'Color' ], + 'KOMU ENERGY' => [ 'Komu', 'Energy' ], + 'KOMU-MINI' => [ 'Komu', 'Mini' ], + ], + + 'V1' => [ 'Konka', 'KOMI V1' ], + + 'KONKA!!' => [ + 'KONKA V615' => [ 'Konka', 'V615' ], + 'KONKA-V915' => [ 'Konka', 'V915' ], + 'KONKA V923' => [ 'Konka', 'V923' ], + 'KONKA V926' => [ 'Konka', 'V926' ], + 'KONKA V927' => [ 'Konka', 'V927' ], + 'KONKA V931' => [ 'Konka', 'V931' ], + 'KONKA V980' => [ 'Konka', 'V980' ], + 'KONKA V983' => [ 'Konka', 'V983' ], + 'konka W970' => [ 'Konka', 'W970' ], + 'konka W976' => [ 'Konka', 'W976' ], + ], + + 'K3' => [ 'Konka', 'K3' ], + 'V985' => [ 'Konka', 'V985' ], + 'W990' => [ 'Konka', 'W990' ], + 'A106' => [ 'koobee', 'A160' ], + 'koobee-T550' => [ 'koobee', 'T550' ], + + 'Koobe!!' => [ + 'Koobe S7 Easy tablet' => [ 'Koobe', 'S7 Easy tablet', DeviceType::TABLET ], + 'Koobe X8 Slim Quadrum tablet' => [ 'Koobe', 'X8 Slim Quadrum tablet', DeviceType::TABLET ], + ], + + 'KORIDY H15' => [ 'Koridy', 'H15' ], + 'KORIDY H16' => [ 'Koridy', 'H16' ], + + 'KPT!!' => [ + 'KPT A5' => [ 'KPT', 'A5' ], + 'KPT A6' => [ 'KPT', 'A6' ], + 'KPT A9' => [ 'KPT', 'A9' ], + 'KPT A9PLUS' => [ 'KPT', 'A9+' ], + 'KPT A11PLUS' => [ 'KPT', 'A11+' ], + 'KPT A58T' => [ 'KPT', 'A58T' ], + 'KPT A81PLUS' => [ 'KPT', 'A81+' ], + 'KPT A88' => [ 'KPT', 'A88' ], + ], + + '(EV|KM)-[ES][0-9]{3,3}!!' => [ + 'EV-S100' => [ 'Kttech', 'Take EV-S100' ], + 'KM-E100' => [ 'Kttech', 'Take LTE KM-E100' ], + 'KM-S120' => [ 'Kttech', 'Take 2 KM-S120' ], + 'KM-S200' => [ 'Kttech', 'Take Janus KM-S200' ], + 'KM-S220' => [ 'Kttech', 'Take Tachy KM-S220' ], + 'KM-S220H' => [ 'Kttech', 'Take Tachy KM-S220' ], + 'KM-S300' => [ 'Kttech', 'Take HD KM-S300' ], + 'KM-S330' => [ 'Kttech', 'Take Fit KM-S330' ], + ], + + 'Kurio!!' => [ + 'KurioPhone' => [ 'Kurio', 'Phone' ], + 'Kurio4S' => [ 'Kurio', '4S' ], + 'Kurio7' => [ 'Kurio', '7', DeviceType::TABLET ], + 'Kurio7S' => [ 'Kurio', '7S', DeviceType::TABLET ], + 'Kurio-LTE' => [ 'Kurio', '7X', DeviceType::TABLET ], + 'Kurio10S' => [ 'Kurio', '10S', DeviceType::TABLET ], + 'Kurio-Lite' => [ 'Kurio', 'Lite', DeviceType::TABLET ], + ], + + 'Kyobo mirasol eReader' => [ 'Kyobo', 'eReader', DeviceType::EREADER ], + 'ISW11K' => [ 'Kyocera', 'DIGNO ISW11K', 'carrier' => 'au' ], + + 'KYL[0-9]{2,2}!!' => [ + 'KYL21' => [ 'Kyocera', 'DIGNO S KYL21', 'carrier' => 'au' ], + 'KYL22' => [ 'Kyocera', 'DIGNO M KYL22', 'carrier' => 'au' ], + ], + + 'KC-01' => [ 'Kyocera', 'KC-01' ], + 'KC-S301AE' => [ 'Kyocera', 'S301' ], + 'KC-S701' => [ 'Kyocera', 'TORQUE' ], + 'KCP01K' => [ 'Kyocera', 'LUCE' ], + 'SKT01' => [ 'Kyocera', 'TORQUE SKT01' ], + + 'WX04K' => [ 'Kyocera', 'DIGNO Dual WX04K', 'carrier' => 'Willcom' ], + 'WX06K' => [ 'Kyocera', 'HONEY BEE WX06K', 'carrier' => 'Willcom' ], + 'WX10K' => [ 'Kyocera', 'DIGNO Dual 2 WX10K', 'carrier' => 'Willcom' ], + 'JC-KSP8000' => [ 'Kyocera', 'Echo' ], + 'KSP8000' => [ 'Kyocera', 'Echo' ], + 'Event' => [ 'Kyocera', 'Event' ], + 'Rise' => [ 'Kyocera', 'Rise' ], + 'Torque' => [ 'Kyocera', 'Torque' ], + 'Zio' => [ 'Kyocera', 'Zio' ], + 'E6782' => [ 'Kyocera', 'Brigadier' ], + 'Hydro' => [ 'Kyocera', 'Hydro' ], + 'Hydro PLUS' => [ 'Kyocera', 'Hydro PLUS' ], + + '(USCC-|KYOCERA-)?E[0-9]{4,4}!!' => [ + 'KYOCERA-E6560' => [ 'Kyocera', 'DuraForce' ], + 'E6560C' => [ 'Kyocera', 'DuraForce' ], + 'E6560L' => [ 'Kyocera', 'DuraForce' ], + 'E6560T' => [ 'Kyocera', 'DuraForce' ], + 'E6715' => [ 'Kyocera', 'Torque XT' ], + 'KYOCERA-E6715' => [ 'Kyocera', 'Torque XT' ], + 'USCC-E6762' => [ 'Kyocera', 'DuraForce' ], + 'KYOCERA-E6762' => [ 'Kyocera', 'DuraForce' ], + 'E6782L' => [ 'Kyocera', 'DuraScout' ], + 'KYOCERA-E6790' => [ 'Kyocera', 'DuraForce XD' ], + ], + + '(USCC-|KYOCERA-)?C[0-9]{4,4}!!' => [ + 'C51(20|21)!' => [ 'Kyocera', 'Milano' ], + 'C5155' => [ 'Kyocera', 'Rise' ], + 'C5170' => [ 'Kyocera', 'Hydro' ], + 'C5215' => [ 'Kyocera', 'Hydro EDGE' ], + 'C5216' => [ 'Kyocera', 'Hydro EDGE' ], + 'C6522' => [ 'Kyocera', 'Hydro XTRM' ], + 'C6522N' => [ 'Kyocera', 'Hydro XTRM' ], + 'USCC-C6721' => [ 'Kyocera', 'Hydro XTRM' ], + 'C6530' => [ 'Kyocera', 'Hydro LIFE' ], + 'C6530N' => [ 'Kyocera', 'Hydro LIFE' ], + 'C6725' => [ 'Kyocera', 'Hydro VIBE' ], + 'C6730' => [ 'Kyocera', 'Hydro ICON' ], + 'C6740' => [ 'Kyocera', 'Hydro WAVE' ], + 'C6740N' => [ 'Kyocera', 'Hydro WAVE' ], + 'C6742' => [ 'Kyocera', 'Hydro VIEW' ], + 'KYOCERA-C6742' => [ 'Kyocera', 'Hydro VIEW' ], + 'C6743' => [ 'Kyocera', 'Hydro REACH' ], + 'C6745' => [ 'Kyocera', 'Hydro AIR' ], + 'KYOCERA-C6745' => [ 'Kyocera', 'Hydro AIR' ], + 'C6750' => [ 'Kyocera', 'Hydro Elite' ], + ], + + 'M9300' => [ 'Kyocera', 'Echo' ], + + 'KY[FLTYV][0-9]{2,2}!!' => [ + 'KYF31' => [ 'Kyocera', 'GRATINA KYF31', 'carrier' => 'au' ], + 'KYF37' => [ 'Kyocera', 'GRATINA KYF37', 'carrier' => 'au' ], + 'KYL23' => [ 'Kyocera', 'miraie KYL23', 'carrier' => 'au' ], + 'KYY21' => [ 'Kyocera', 'URBANO L01', 'carrier' => 'au' ], + 'KYY22' => [ 'Kyocera', 'URBANO L02', 'carrier' => 'au' ], + 'KYY23' => [ 'Kyocera', 'URBANO L03', 'carrier' => 'au' ], + 'KYY24' => [ 'Kyocera', 'TORQUE G01', 'carrier' => 'au' ], + 'KYV31' => [ 'Kyocera', 'URBANO V01', 'carrier' => 'au' ], + 'KYV32' => [ 'Kyocera', 'BASIO KYV32', 'carrier' => 'au' ], + 'KYV34' => [ 'Kyocera', 'URBANO V02', 'carrier' => 'au' ], + 'KYV35' => [ 'Kyocera', 'TORQUE G02', 'carrier' => 'au' ], + 'KYV36' => [ 'Kyocera', 'DIGNO rafre KYV36', 'carrier' => 'au' ], + 'KYV37' => [ 'Kyocera', 'Qua phone', 'carrier' => 'au' ], + 'KYV38' => [ 'Kyocera', 'URBANO V03 KYV38', 'carrier' => 'au' ], + 'KYV40' => [ 'Kyocera', 'rafre KYV40', 'carrier' => 'au' ], + 'KYV40U' => [ 'Kyocera', 'DIGNO W KYV40U', 'carrier' => 'UQ mobile' ], + 'KYV41' => [ 'Kyocera', 'TORQUE G03 KYV41', 'carrier' => 'au' ], + 'KYV42' => [ 'Kyocera', 'Qua phone QX', 'carrier' => 'au' ], + 'KYT31' => [ 'Kyocera', 'Qua tab', DeviceType::TABLET, 'carrier' => 'au' ], + 'KYT33' => [ 'Kyocera', 'Qua tab QZ10', DeviceType::TABLET, 'carrier' => 'au' ], + ], + + 'URBANO PROGRESSO' => [ 'Kyocera', 'URBANO PROGRESSO', 'carrier' => 'au' ], + + '[0-9]0[0-9]KC?!!' => [ + '101K' => [ 'Kyocera', 'HONEY BEE 101K', 'carrier' => 'Softbank' ], + '201K' => [ 'Kyocera', 'HONEY BEE 201K', 'carrier' => 'Softbank' ], + '202K' => [ 'Kyocera', 'DIGNO R 202K', 'carrier' => 'Softbank' ], + '302KC' => [ 'Kyocera', 'DIGNO T 302KC', 'carrier' => 'EMOBILE' ], + '404KC' => [ 'Kyocera', 'DIGNO C 404KC', 'carrier' => 'Y! Mobile' ], + '503KC' => [ 'Kyocera', 'DIGNO E 503KC', 'carrier' => 'Y! Mobile' ], + '602KC' => [ 'Kyocera', 'DIGNO G 602KC', 'carrier' => 'Softbank' ], + '704KC' => [ 'Kyocera', 'DIGNO J 704KC', 'carrier' => 'Softbank' ], + ], + + 'K\-?Touch!!' => [ + 'K-touch A9' => [ 'K-Touch', 'A9' ], + 'K-touch A10 Pro' => [ 'K-Touch', 'A10 Pro' ], + 'Ktouch A11' => [ 'K-Touch', 'A11' ], + 'K-touch A11plus' => [ 'K-Touch', 'A11+' ], + 'Ktouch A15' => [ 'K-Touch', 'A15' ], + 'K-Touch C666t' => [ 'K-Touch', 'C666' ], + 'K-Touch C960t' => [ 'K-Touch', 'C960' ], + 'K-Touch C966e' => [ 'K-Touch', 'C966' ], + 'K-Touch C980t' => [ 'K-Touch', 'C980' ], + 'K-Touch C986t' => [ 'K-Touch', 'C986' ], + 'K-Touch C986t+' => [ 'K-Touch', 'C986' ], + 'K-Touch C988t' => [ 'K-Touch', 'C988' ], + 'K-Touch C990' => [ 'K-Touch', 'C990' ], + 'K-Touch E7' => [ 'K-Touch', 'E7' ], + 'K-Touch E79' => [ 'K-Touch', 'E79' ], + 'K-Touch E70' => [ 'K-Touch', 'E70' ], + 'K-Touch E80' => [ 'K-Touch', 'E80' ], + 'K-Touch E88' => [ 'K-Touch', 'E88' ], + 'K-Touch E616' => [ 'K-Touch', 'E616' ], + 'K Touch E616' => [ 'K-Touch', 'E616' ], + 'K-Touch E619' => [ 'K-Touch', 'E619' ], + 'K-Touch E619+' => [ 'K-Touch', 'E619+' ], + 'K-Touch E621' => [ 'K-Touch', 'E621' ], + 'K-Touch E656' => [ 'K-Touch', 'E656' ], + 'K-Touch E688' => [ 'K-Touch', 'E688' ], + 'K-Touch E780' => [ 'K-Touch', 'E780' ], + 'K-Touch E800' => [ 'K-Touch', 'E800' ], + 'K-Touch E806' => [ 'K-Touch', 'E806' ], + 'K-Touch L820' => [ 'K-Touch', 'L820' ], + 'K-Touch Q4' => [ 'K-Touch', 'Q4' ], + 'K-Touch S2' => [ 'K-Touch', 'S2' ], + 'K-Touch S5' => [ 'K-Touch', 'S5' ], + 'K-Touch S5 Beiaigeqian' => [ 'K-Touch', 'S5' ], + 'K-Touch S5t' => [ 'K-Touch', 'S5t' ], + 'K-Touch Titan S100' => [ 'K-Touch', 'Titan S100' ], + 'K-Touch S757!' => [ 'K-Touch', 'S757' ], + 'K-Touch S787' => [ 'K-Touch', 'S787' ], + 'K-Touch T6' => [ 'K-Touch', 'T6' ], + 'K-Touch T60' => [ 'K-Touch', 'T60' ], + 'K-Touch T85+' => [ 'K-Touch', 'T85' ], + 'K-Touch T90' => [ 'K-Touch', 'T90' ], + 'K-Touch T91' => [ 'K-Touch', 'T91' ], + 'K-Touch T93' => [ 'K-Touch', 'T93' ], + 'K-Touch T96' => [ 'K-Touch', 'T96' ], + 'K-TouchT580' => [ 'K-Touch', 'T580' ], + 'K-Touch T619' => [ 'K-Touch', 'T619' ], + 'K-Touch T-619' => [ 'K-Touch', 'T619' ], + 'K-Touch T619+' => [ 'K-Touch', 'T619+' ], + 'K-Touch T621' => [ 'K-Touch', 'T621' ], + 'K-Touch T660' => [ 'K-Touch', 'T660' ], + 'K-Touch T760' => [ 'K-Touch', 'T760' ], + 'K-Touch T780' => [ 'K-Touch', 'T780' ], + 'K-Touch T780+' => [ 'K-Touch', 'T780+' ], + 'K-Touch T789' => [ 'K-Touch', 'T789' ], + 'K-Touch T800' => [ 'K-Touch', 'T800' ], + 'K-touch U2' => [ 'K-Touch', 'U2' ], + 'K-Touch U6' => [ 'K-Touch', 'U6' ], + 'K-Touch U7' => [ 'K-Touch', 'U7' ], + 'K-Touch U8' => [ 'K-Touch', 'U8' ], + 'K-Touch U9' => [ 'K-Touch', 'U9' ], + 'K-Touch U10' => [ 'K-Touch', 'U10' ], + 'K-Touch U81t' => [ 'K-Touch', 'U81t' ], + 'K-Touch U83t' => [ 'K-Touch', 'U83t' ], + 'K-Touch U86' => [ 'K-Touch', 'U86 Kiss' ], + 'K-Touch Kiss' => [ 'K-Touch', 'U86 Kiss' ], + 'K-Touch U90' => [ 'K-Touch', 'U90' ], + 'K-Touch V5' => [ 'K-Touch', 'V5' ], + 'KTouch v8' => [ 'K-Touch', 'V8' ], + 'K-Touch V8' => [ 'K-Touch', 'V8' ], + 'KTouch v9' => [ 'K-Touch', 'V9' ], + 'K-Touch V9' => [ 'K-Touch', 'V9' ], + 'K-Touch W68' => [ 'K-Touch', 'W68' ], + 'K-Touch W70' => [ 'K-Touch', 'W70' ], + 'K-Touch W88' => [ 'K-Touch', 'W88' ], + 'K-Touch W610' => [ 'K-Touch', 'W610' ], + 'K-TOUCH W610D' => [ 'K-Touch', 'W610D' ], + 'K-Touch W619!' => [ 'K-Touch', 'W619' ], + 'K-Touch W621' => [ 'K-Touch', 'W621' ], + 'K-Touch W650!' => [ 'K-Touch', 'W650' ], + 'K-Touch W655' => [ 'K-Touch', 'W655' ], + 'K-Touch W656' => [ 'K-Touch', 'W656' ], + 'K-Touch W658' => [ 'K-Touch', 'W658' ], + 'K-Touch W688' => [ 'K-Touch', 'W688' ], + 'K-Touch W700' => [ 'K-Touch', 'W700' ], + 'Ktouch w700' => [ 'K-Touch', 'W700' ], + 'K-Touch W700+' => [ 'K-Touch', 'W700+' ], + 'K-Touch W710' => [ 'K-Touch', 'W710' ], + 'K-Touch W719' => [ 'K-Touch', 'W719' ], + 'K-Touch W760' => [ 'K-Touch', 'W760' ], + 'K-Touch W780' => [ 'K-Touch', 'W780' ], + 'K-Touch W806!' => [ 'K-Touch', 'W806' ], + 'K-Touch W808' => [ 'K-Touch', 'W808' ], + 'K-Touch Kis 1' => [ 'K-Touch', 'Kis 1' ], + 'K-Touch Kis 2' => [ 'K-Touch', 'Kis 2' ], + 'K-Touch Tou ch 1' => [ 'K-Touch', 'Tou ch 1' ], + 'K-Touch Tou ch 2' => [ 'K-Touch', 'Tou ch 2' ], + 'K-Touch Tou ch2' => [ 'K-Touch', 'Tou ch 2' ], + 'K-Touch Tou ch 2c' => [ 'K-Touch', 'Tou ch 2 c' ], + 'K-Touch Tou ch 3' => [ 'K-Touch', 'Tou ch 3' ], + 'K-Touch Tou ch3' => [ 'K-Touch', 'Tou ch 3' ], + 'K-Touch Tou ch3c' => [ 'K-Touch', 'Tou ch 3 c' ], + 'K-Touch Tou ch3es' => [ 'K-Touch', 'Tou ch 3 es' ], + 'K-Touch Tou ch 5' => [ 'K-Touch', 'Tou ch 5' ], + ], + + 'Nibiru H1' => [ 'K-Touch', 'Niburu H1' ], + 'Nibiru H1c' => [ 'K-Touch', 'Niburu H1c' ], + 'E650' => [ 'K-Touch', 'E650' ], + 'E780' => [ 'K-Touch', 'E780' ], + 'E800' => [ 'K-Touch', 'E800' ], + 'E815' => [ 'K-Touch', 'E815' ], + 'W606' => [ 'K-Touch', 'W606' ], + 'W619' => [ 'K-Touch', 'W619' ], + 'W686' => [ 'K-Touch', 'W686' ], + 'W700' => [ 'K-Touch', 'W700' ], + 'W732' => [ 'K-Touch', 'W732' ], + 'W800' => [ 'K-Touch', 'W800' ], + 'W806' => [ 'K-Touch', 'W806' ], + 'W808' => [ 'K-Touch', 'W808' ], + 'W810' => [ 'K-Touch', 'W810' ], + 'W880' => [ 'K-Touch', 'W880' ], + + '(Lanix )?(Ilium|llium)!!' => [ + 'ILIUM L400' => [ 'Lanix', 'Ilium L400' ], + 'Ilium L820' => [ 'Lanix', 'Ilium L820' ], + 'ILIUM L900' => [ 'Lanix', 'Ilium L900' ], + 'ILIUM L950' => [ 'Lanix', 'Ilium L950' ], + 'ILIUM L1000' => [ 'Lanix', 'Ilium L1000' ], + 'ILIUM L1100' => [ 'Lanix', 'Ilium L1100' ], + 'Ilium L1200' => [ 'Lanix', 'Ilium L1200' ], + 'Ilium LT500' => [ 'Lanix', 'Ilium LT500' ], + 'Ilium S100' => [ 'Lanix', 'Ilium S100' ], + 'Ilium S105' => [ 'Lanix', 'Ilium S105' ], + 'ILIUM S106' => [ 'Lanix', 'Ilium S106' ], + 'Lanix Ilium S115' => [ 'Lanix', 'Ilium S115' ], + 'Ilium S115' => [ 'Lanix', 'Ilium S115' ], + 'LANIX ILIUM S120' => [ 'Lanix', 'Ilium S120' ], + 'ILIUM S120' => [ 'Lanix', 'Ilium S120' ], + 'LANIX S120-U151' => [ 'Lanix', 'Ilium S120' ], + 'ILIUM S130' => [ 'Lanix', 'Ilium S130' ], + 'Ilium S200' => [ 'Lanix', 'Ilium S200' ], + 'Lanix Ilium S210' => [ 'Lanix', 'Ilium S210' ], + 'ILIUM S215' => [ 'Lanix', 'Ilium S215' ], + 'LANIX ILIUM S220' => [ 'Lanix', 'Ilium S220' ], + 'Lanix Ilium S400' => [ 'Lanix', 'Ilium S400' ], + 'Ilium S400' => [ 'Lanix', 'Ilium S400' ], + 'Lanix ILIUM S410' => [ 'Lanix', 'Ilium S410' ], + 'Lanix Ilium S420' => [ 'Lanix', 'Ilium S420' ], + 'Lanix Ilium S500' => [ 'Lanix', 'Ilium S500' ], + 'ILIUM S520' => [ 'Lanix', 'Ilium S520' ], + 'ILIUM S600' => [ 'Lanix', 'Ilium S600' ], + 'ILIUM S670' => [ 'Lanix', 'Ilium S670' ], + 'LANIX ILIUM S700' => [ 'Lanix', 'Ilium S700' ], + 'ILIUM S700' => [ 'Lanix', 'Ilium S700' ], + 'ILIUM X100' => [ 'Lanix', 'Ilium X100' ], + 'ILIUM X110' => [ 'Lanix', 'Ilium X110' ], + 'Ilium X200' => [ 'Lanix', 'Ilium X200' ], + 'Ilium X210' => [ 'Lanix', 'Ilium X210' ], + 'ILIUM X400' => [ 'Lanix', 'Ilium X400' ], + 'Ilium X500B' => [ 'Lanix', 'Ilium X500B' ], + 'iliumPAD' => [ 'Lanix', 'Ilium Pad', DeviceType::TABLET ], + 'ilium Pad E8' => [ 'Lanix', 'Ilium Pad E8', DeviceType::TABLET ], + 'ilium Pad E10' => [ 'Lanix', 'Ilium Pad E10', DeviceType::TABLET ], + 'ILIUM PAD E10Si' => [ 'Lanix', 'Ilium Pad E10 Si', DeviceType::TABLET ], + 'llium Pad L8' => [ 'Lanix', 'Ilium Pad L8', DeviceType::TABLET ], + ], + + 'Lark!!' => [ + 'Lark Evolution X2 7' => [ 'Lark', 'Evolution X2 7', DeviceType::TABLET ], + 'Lark Evolution X2 7 3G-GPS' => [ 'Lark', 'Evolution X2 7', DeviceType::TABLET ], + 'Lark FreeMe X2 7' => [ 'Lark', 'FreeMe X2 7', DeviceType::TABLET ], + 'Lark FreeMe X2 7 ver.2' => [ 'Lark', 'FreeMe X2 7', DeviceType::TABLET ], + ], + + 'Flair E1' => [ 'Lava', 'Flair E1' ], + 'Flair E2' => [ 'Lava', 'Flair E2' ], + 'FlairE3' => [ 'Lava', 'Flair E3' ], + 'Flair P1' => [ 'Lava', 'Flair P1' ], + 'Flair P1i' => [ 'Lava', 'Flair P1i' ], + 'Flair P8' => [ 'Lava', 'Flair P8' ], + 'Flair S1' => [ 'Lava', 'Flair S1' ], + 'Flair Z1' => [ 'Lava', 'Flair Z1' ], + + 'Iris!!' => [ + 'Iris78W' => [ 'Lava', 'Iris 78w' ], + 'iris 250' => [ 'Lava', 'Iris 250' ], + 'iris310s' => [ 'Lava', 'Iris 310s' ], + 'iris 325Style' => [ 'Lava', 'Iris 325 Style' ], + 'iris348' => [ 'Lava', 'Iris 348' ], + 'Iris 349' => [ 'Lava', 'Iris 349' ], + 'Iris 349+' => [ 'Lava', 'Iris 349+' ], + 'Iris349i' => [ 'Lava', 'Iris 349i' ], + 'Iris349s' => [ 'Lava', 'Iris 349s' ], + 'Iris 350' => [ 'Lava', 'Iris 350' ], + 'iris 350m' => [ 'Lava', 'Iris 350M' ], + 'iris 352Flair' => [ 'Lava', 'Iris 352 Flair' ], + 'iris 352E' => [ 'Lava', 'Iris 352e' ], + 'iris353' => [ 'Lava', 'Iris 353' ], + 'iris354' => [ 'Lava', 'Iris 354' ], + 'iris 354' => [ 'Lava', 'Iris 354' ], + 'iris354e' => [ 'Lava', 'Iris 354e' ], + 'IRIS355' => [ 'Lava', 'Iris 355' ], + 'iris356' => [ 'Lava', 'Iris 356' ], + 'Iris 300' => [ 'Lava', 'Iris 300' ], + 'iris360' => [ 'Lava', 'Iris 360' ], + 'iris 360m' => [ 'Lava', 'Iris 360M' ], + 'iris370' => [ 'Lava', 'Iris 370' ], + 'iris400c' => [ 'Lava', 'Iris 400 Colour' ], + 'iris 400s' => [ 'Lava', 'Iris 400s' ], + 'iris400Q' => [ 'Lava', 'Iris 400Q' ], + 'iris 401' => [ 'Lava', 'Iris 401' ], + 'iris 401e' => [ 'Lava', 'Iris 401e' ], + 'IRIS402' => [ 'Lava', 'Iris 402' ], + 'iris402+' => [ 'Lava', 'Iris 402' ], + 'iris 402e' => [ 'Lava', 'Iris 402e' ], + 'iris402e' => [ 'Lava', 'Iris 402e' ], + 'iris402P' => [ 'Lava', 'Iris 402P' ], + 'iris 404Flair' => [ 'Lava', 'Iris 404 Flair' ], + 'iris404e' => [ 'Lava', 'Iris 404e' ], + 'iris405' => [ 'Lava', 'Iris 405' ], + 'iris405+' => [ 'Lava', 'Iris 405+' ], + 'iris 406Q' => [ 'Lava', 'Iris 406Q' ], + 'iris 408e' => [ 'Lava', 'Iris 408e' ], + 'iris410' => [ 'Lava', 'Iris 410' ], + 'iris 412' => [ 'Lava', '3G 412' ], + 'iris 414' => [ 'Lava', 'Iris 414' ], + 'Iris 415' => [ 'Lava', '3G 415' ], + 'iris444' => [ 'Lava', 'Iris 444' ], + 'iris450' => [ 'Lava', 'Iris 450' ], + 'iris 450P' => [ 'Lava', 'Iris 450P' ], + 'iris454' => [ 'Lava', '3G 454' ], + 'IRIS 455' => [ 'Lava', 'Iris 455' ], + 'iris456' => [ 'Lava', 'Iris 456' ], + 'iris458Q' => [ 'Lava', 'Iris 458Q' ], + 'iris460' => [ 'Lava', 'Iris 460' ], + 'iris465' => [ 'Lava', 'Iris 465' ], + 'iris500' => [ 'Lava', 'Iris 500' ], + 'iris 500' => [ 'Lava', 'Iris 500' ], + 'IRIS 501' => [ 'Lava', 'Iris 501' ], + 'iris502' => [ 'Lava', 'Iris 502' ], + 'iris503' => [ 'Lava', 'Iris 503' ], + 'iris503e' => [ 'Lava', 'Iris 503e' ], + 'iris504Q' => [ 'Lava', 'Iris 504Q' ], + 'iris505' => [ 'Lava', 'Iris 505' ], + 'iris 505' => [ 'Lava', 'Iris 505' ], + 'iris506Q' => [ 'Lava', 'Iris 506Q' ], + 'iris510' => [ 'Lava', 'Iris 510' ], + 'iris 600' => [ 'Lava', 'Iris 600' ], + 'iris700' => [ 'Lava', 'Iris 700' ], + 'iris702' => [ 'Lava', 'Iris 702' ], + 'iris 705' => [ 'Lava', 'Iris 705' ], + 'iris708' => [ 'Lava', 'Iris 708' ], + 'iris 750' => [ 'Lava', 'Iris 750' ], + 'iris800' => [ 'Lava', 'Iris 800' ], + 'iris 810' => [ 'Lava', 'Iris 810' ], + 'iris 870' => [ 'Lava', 'Iris 870' ], + 'iris fuel10' => [ 'Lava', 'Iris fuel10' ], + 'iris Fuel20' => [ 'Lava', 'Iris fuel20' ], + 'iris fuel25' => [ 'Lava', 'Iris fuel25' ], + 'iris Fuel50' => [ 'Lava', 'Iris fuel50' ], + 'iris Fuel60' => [ 'Lava', 'Iris fuel60' ], + 'Iris Fuel F1' => [ 'Lava', 'Iris Fuel F1' ], + 'iris pro 20' => [ 'Lava', 'Iris Pro 20' ], + 'iris pro 30' => [ 'Lava', 'Iris Pro 30' ], + 'iris SELFIE50' => [ 'Lava', 'Iris selfie 50' ], + 'iris X1' => [ 'Lava', 'Iris X1' ], + 'irisX1+' => [ 'Lava', 'Iris X1+' ], + 'iris X1 Grand' => [ 'Lava', 'Iris X1 Grand' ], + 'iris X5' => [ 'Lava', 'Iris X5' ], + 'irisX8' => [ 'Lava', 'Iris X8' ], + 'Iris X8 L' => [ 'Lava', 'Iris X8 L' ], + 'iris X8q' => [ 'Lava', 'Iris X8q' ], + 'iris X9' => [ 'Lava', 'Iris X9' ], + 'irisalfa' => [ 'Lava', 'Iris Alpha' ], + 'iris Atom2' => [ 'Lava', 'Iris Atom 2' ], + 'iris ATOM X' => [ 'Lava', 'Iris Atom X' ], + ], + + '504Q' => [ 'Lava', 'Iris 504Q' ], + '504Q+' => [ 'Lava', 'Iris 504Q+' ], + '504QP' => [ 'Lava', 'Iris 504QP' ], + 'Alfa L' => [ 'Lava', 'Iris Alfa L' ], + 'Fuel F2' => [ 'Lava', 'Iris Fuel F2' ], + 'N320' => [ 'Lava', 'Iris N320' ], + 'X1 atom' => [ 'Lava', 'Iris X1 Atom' ], + 'X1 atom L' => [ 'Lava', 'Iris X1 Atom L' ], + 'X1 Atom s' => [ 'Lava', 'Iris X1 Atom S' ], + 'X1 Beats' => [ 'Lava', 'Iris X1 Beats' ], + 'X1 Grand' => [ 'Lava', 'Iris X1 Grand' ], + 'X1 mini' => [ 'Lava', 'Iris X1 mini' ], + 'X1 Selfie' => [ 'Lava', 'Iris X1 Selfie' ], + 'X9' => [ 'Lava', 'Iris X9' ], + 'LAVA iris 351' => [ 'Lava', 'Iris 351' ], + 'LAVA iRIS 504q' => [ 'Lava', 'Iris 504Q' ], + + 'PixelV1' => [ 'Lava', 'Pixel V1' ], + 'Pixel V2' => [ 'Lava', 'Pixel V2' ], + 'Pixel V2+' => [ 'Lava', 'Pixel V2+' ], + + 'LAVA A1' => [ 'Lava', 'Bond A1' ], + 'Lava A89' => [ 'Lava', 'A89' ], + 'LAVA R1' => [ 'Lava', 'R1' ], + 'LAVA R1s' => [ 'Lava', 'R1s' ], + 'LAVA S12' => [ 'Lava', 'S12' ], + 'LAVA V5' => [ 'Lava', 'V5' ], + + 'R30GT' => [ 'Lavios', 'Revo R30GT', DeviceType::TABLET ], + 'LEAGOOLG13' => [ 'LEAGOOL', 'G13' ], + + 'Le 1S' => [ 'LeEco', 'Le 1s X500' ], + 'Le 1 Pro' => [ 'LeEco', 'Le 1 Pro X800' ], + 'Le 2' => [ 'LeEco', 'Le 2 X520' ], + 'Le 2 Pro' => [ 'LeEco', 'Le 2 Pro X620' ], + 'Le Max' => [ 'LeEco', 'Le Max X900' ], + + 'X527' => [ 'LeEco', 'Le 2 X527' ], + 'LEX626' => [ 'LeEco', 'Le S3 X626' ], + 'LEX720' => [ 'LeEco', 'Le 3 Pro X720' ], + 'X800+' => [ 'LeEco', 'Le 1 Pro X800' ], + 'LEX820' => [ 'LeEco', 'Le Max 2 X820' ], + + 'Le X500' => [ 'LeEco', 'Le 1s X500' ], + 'Le X501' => [ 'LeEco', 'Le 1s X501' ], + 'Le X506' => [ 'LeEco', 'Le 1s X506' ], + 'Le X507' => [ 'LeEco', 'Le 1s X507' ], + 'Le X509' => [ 'LeEco', 'Le 1s X509' ], + 'Le X520' => [ 'LeEco', 'Le 2 X520' ], + 'Le X522' => [ 'LeEco', 'Le S3 X522' ], + 'Le X526' => [ 'LeEco', 'Le 2 X526' ], + 'Le X527' => [ 'LeEco', 'Le 2 X527' ], + 'Le X528' => [ 'LeEco', 'Le 2 X528' ], + 'Le X620' => [ 'LeEco', 'Le 2 Pro X620' ], + 'Le X621' => [ 'LeEco', 'Le 2 Pro X621' ], + 'Le X622' => [ 'LeEco', 'Le S3 X622' ], + 'Le X625' => [ 'LeEco', 'Le 2 Pro X625' ], + 'Le X820' => [ 'LeEco', 'Le Max 2 X820' ], + 'Le X821' => [ 'LeEco', 'Le Max 2 X821' ], + 'Le X822' => [ 'LeEco', 'Le Max 2 X822' ], + 'Le X829' => [ 'LeEco', 'Le Max 2 X829' ], + 'Le X829M' => [ 'LeEco', 'Le Max 2 X829' ], + 'Le X920' => [ 'LeEco', 'Le Max 3 X920' ], + + 'LETV Letv X500' => [ 'LeEco', 'Le 1s X500' ], + 'LeTv 1s' => [ 'LeEco', 'Le 1s X500' ], + + 'Letv X500' => [ 'LeEco', 'Le 1s X500' ], + 'Letv X501' => [ 'LeEco', 'Le 1s X501' ], + 'Letv X502' => [ 'LeEco', 'Le 1s X502' ], + 'Letv X507' => [ 'LeEco', 'Le 1s X507' ], + 'Letv X520' => [ 'LeEco', 'Le 2 X520' ], + 'Letv X600' => [ 'LeEco', 'Le 1 X600' ], + 'Letv X900' => [ 'LeEco', 'Le Max X900' ], + 'Letv X910' => [ 'LeEco', 'Le Max Pro X910' ], + + 'Letv Max4-70' => [ 'LeEco', 'Max4-70', DeviceType::TABLET ], + + 'Letv C1S' => [ 'LeEco', 'LeTV Box C1S', DeviceType::TELEVISION ], + 'Letv U2' => [ 'LeEco', 'LeTV Box U2', DeviceType::TELEVISION ], + + 'Letv S40 Air' => [ 'LeEco', 'LeTV S40 Air', DeviceType::TELEVISION ], + 'Letv S40 Air L' => [ 'LeEco', 'LeTV S40 Air L', DeviceType::TELEVISION ], + 'Letv S50 Air' => [ 'LeEco', 'LeTV S50 Air', DeviceType::TELEVISION ], + 'Letv X3-40' => [ 'LeEco', 'LeTV X3-40', DeviceType::TELEVISION ], + 'Letv X3-50 UHD' => [ 'LeEco', 'LeTV X3-50', DeviceType::TELEVISION ], + 'Letv X3-55' => [ 'LeEco', 'LeTV X3-55', DeviceType::TELEVISION ], + 'Letv X3-55 Pro' => [ 'LeEco', 'LeTV X3-55 Pro', DeviceType::TELEVISION ], + 'Letv X3-65' => [ 'LeEco', 'LeTV X3-65', DeviceType::TELEVISION ], + 'LeTVX60' => [ 'LeEco', 'LeTV X60', DeviceType::TELEVISION ], + + 'leepoo!!' => [ + 'leepoo i500' => [ 'Leepoo', 'i500' ], + 'leepoo i580' => [ 'Leepoo', 'i580' ], + 'leepoo i600' => [ 'Leepoo', 'i600' ], + 'leepoo i800' => [ 'Leepoo', 'i800' ], + ], + + 'P5' => [ 'Lemon', 'P5' ], + 'LEMON P7' => [ 'Lemon', 'P7' ], + 'P105' => [ 'Lemon', 'P105' ], + 'Lemon S3' => [ 'Lemon', 'S3' ], + 'Lemon S8' => [ 'Lemon', 'S8' ], + + 'Lenco!!' => [ + 'Lenco CARTAB-920' => [ 'Lenco', 'CarTab 920', DeviceType::TABLET ], + 'Lenco CARTAB-925' => [ 'Lenco', 'CarTab 925', DeviceType::TABLET ], + 'Lenco CoolTab-70' => [ 'Lenco', 'CoolTab 70', DeviceType::TABLET ], + 'Lenco CoolTAB-72' => [ 'Lenco', 'CoolTab 72', DeviceType::TABLET ], + 'Lenco CoolTab-80' => [ 'Lenco', 'CoolTab 80', DeviceType::TABLET ], + 'Lenco KidzTab-70' => [ 'Lenco', 'KidzTab 70', DeviceType::TABLET ], + 'Lenco KidzTab-520' => [ 'Lenco', 'KidzTab 520', DeviceType::TABLET ], + 'Lenco TAB-704' => [ 'Lenco', 'TAB 704', DeviceType::TABLET ], + 'Lenco TAB-712' => [ 'Lenco', 'TAB 712', DeviceType::TABLET ], + 'Lenco TAB-813' => [ 'Lenco', 'TAB 813', DeviceType::TABLET ], + 'Lenco TAB-832' => [ 'Lenco', 'TAB 832', DeviceType::TABLET ], + 'Lenco TAB-900' => [ 'Lenco', 'TAB 900', DeviceType::TABLET ], + 'Lenco TAB-925' => [ 'Lenco', 'TAB 925', DeviceType::TABLET ], + 'Lenco TAB-1014' => [ 'Lenco', 'TAB 1014', DeviceType::TABLET ], + 'Lenco TAB-1020' => [ 'Lenco', 'TAB 1020', DeviceType::TABLET ], + 'Lenco TAB-1022' => [ 'Lenco', 'TAB 1022', DeviceType::TABLET ], + 'Lenco TAB-1030' => [ 'Lenco', 'TAB 1030', DeviceType::TABLET ], + 'Lenco TAB-9720' => [ 'Lenco', 'TAB 9720', DeviceType::TABLET ], + ], + + 'LENCM900HZ' => [ 'Lenco', 'TAB 811', DeviceType::TABLET ], + 'TAB1011' => [ 'Lenco', 'TAB 1011', DeviceType::TABLET ], + 'TAB-1030' => [ 'Lenco', 'TAB 1030', DeviceType::TABLET ], + 'ThinkPad( Tablet)?!' => [ 'Lenovo', 'ThinkPad Tablet', DeviceType::TABLET ], + 'IdeaPad A1' => [ 'Lenovo', 'IdeaPad A1', DeviceType::TABLET ], + 'Lenovo A1-32AB0' => [ 'Lenovo', 'IdeaPad A1', DeviceType::TABLET ], + 'Lenovo A1-32AJ0' => [ 'Lenovo', 'IdeaPad A1', DeviceType::TABLET ], + 'IdeaPadA10' => [ 'Lenovo', 'IdeaPad A10', DeviceType::TABLET ], + 'K1' => [ 'Lenovo', 'IdeaPad K1', DeviceType::TABLET ], + 'Ideapad K1!' => [ 'Lenovo', 'IdeaPad K1', DeviceType::TABLET ], + 'Ideapad S10-3T' => [ 'Lenovo', 'IdeaPad S10-3T', DeviceType::TABLET ], + 'Lenovo IdeaPad Yoga 11S' => [ 'Lenovo', 'IdeaPad Yoga 11S', DeviceType::TABLET ], + 'Lenovo IdeaPad Yoga 13' => [ 'Lenovo', 'IdeaPad Yoga 13', DeviceType::TABLET ], + + '(Lenovo ?)?(IdeaTab ?)?[AB][0-9]{4,4}!!' => [ + 'Lenovo A1000L-F' => [ 'Lenovo', 'IdeaTab A1000', DeviceType::TABLET ], + 'IdeaTab ?A1000(-F|-G|-T)!' => [ 'Lenovo', 'IdeaTab A1000', DeviceType::TABLET ], + 'IdeaTab ?A1000(L-F)!' => [ 'Lenovo', 'IdeaTab A1000', DeviceType::TABLET ], + 'IdeaTab ?A1010(-T)!' => [ 'Lenovo', 'IdeaTab A1010', DeviceType::TABLET ], + 'IdeaTab ?A1020(-T)!' => [ 'Lenovo', 'IdeaTab A1020', DeviceType::TABLET ], + 'IdeaTab ?A1107!' => [ 'Lenovo', 'IdeaTab A1107', DeviceType::TABLET ], + 'Lenovo A2010-a' => [ 'Lenovo', 'IdeaTab A2010', DeviceType::TABLET ], + 'Lenovo A2010l36' => [ 'Lenovo', 'IdeaTab A2010', DeviceType::TABLET ], + 'Lenovo A2020a40' => [ 'Lenovo', 'IdeaTab A2020', DeviceType::TABLET ], + 'Lenovo A2105' => [ 'Lenovo', 'IdeaTab A2105', DeviceType::TABLET ], + 'Lenovo A2107' => [ 'Lenovo', 'IdeaTab A2107', DeviceType::TABLET ], + 'IdeaTab ?A2107(A-F|A-H)!' => [ 'Lenovo', 'IdeaTab A2107', DeviceType::TABLET ], + 'A2107A-H' => [ 'Lenovo', 'IdeaTab A2107', DeviceType::TABLET ], + 'IdeaTab ?A2109(A)!' => [ 'Lenovo', 'IdeaTab A2109', DeviceType::TABLET ], + 'A2109A' => [ 'Lenovo', 'IdeaTab A2109', DeviceType::TABLET ], + 'IdeaTab ?A2207(A-H)!' => [ 'Lenovo', 'IdeaTab A2207', DeviceType::TABLET ], + 'IdeaTab ?A3000-(F|H)!' => [ 'Lenovo', 'IdeaTab A3000', DeviceType::TABLET ], + 'Lenovo A3000-H!' => [ 'Lenovo', 'IdeaTab A3000', DeviceType::TABLET ], + 'LENOVO IdeaTab A3000-H' => [ 'Lenovo', 'IdeaTab A3000', DeviceType::TABLET ], + 'Lenovo ?A3300(-H|-HV|-GV|-T)!' => [ 'Lenovo', 'IdeaTab A3300', DeviceType::TABLET ], + 'Lenovo A3500(-F|-FL|-H|-HV)!' => [ 'Lenovo', 'IdeaTab A3500', DeviceType::TABLET ], + 'IdeaTab ?A5000-E!' => [ 'Lenovo', 'IdeaTab A5000', DeviceType::TABLET ], + 'Lenovo A5500(-F|-HV|-H|HV)?!' => [ 'Lenovo', 'IdeaTab A5500', DeviceType::TABLET ], + 'Lenovo A7600(-F|-HV|-H|H)!' => [ 'Lenovo', 'IdeaTab A7600', DeviceType::TABLET ], + 'Lenovo B6000(-F|-H)!' => [ 'Lenovo', 'B6000 Yoga Tablet 8', DeviceType::TABLET ], + 'Lenovo B8000(-F|-H)!' => [ 'Lenovo', 'B8000 Yoga Tablet 10', DeviceType::TABLET ], + 'Lenovo B8080(-F|-H|-HV)!' => [ 'Lenovo', 'B8080 Yoga Tablet 10', DeviceType::TABLET ], + ], + + 'YOGA Tablet!!' => [ + 'YOGA Tablet 2-830F' => [ 'Lenovo', 'Yoga Tablet 2 830F', DeviceType::TABLET ], + 'YOGA Tablet 2-830L' => [ 'Lenovo', 'Yoga Tablet 2 830L', DeviceType::TABLET ], + 'YOGA Tablet 2-830LC' => [ 'Lenovo', 'Yoga Tablet 2 830LC', DeviceType::TABLET ], + 'YOGA Tablet 2-1050F' => [ 'Lenovo', 'Yoga Tablet 2 1050F', DeviceType::TABLET ], + 'YOGA Tablet 2-1050L' => [ 'Lenovo', 'Yoga Tablet 2 1050L', DeviceType::TABLET ], + 'YOGA Tablet 2-1050LC' => [ 'Lenovo', 'Yoga Tablet 2 1050LC', DeviceType::TABLET ], + 'YOGA Tablet 2 Pro-1380F' => [ 'Lenovo', 'Yoga Tablet 2 Pro 1380F', DeviceType::TABLET ], + 'YOGA Tablet 2 Pro-1380L' => [ 'Lenovo', 'Yoga Tablet 2 Pro 1380L', DeviceType::TABLET ], + 'YOGA Tablet 3 Pro-1381L' => [ 'Lenovo', 'Yoga Tablet 3 Pro 1381L', DeviceType::TABLET ], + 'YOGA Tablet 8 Pro-1386L' => [ 'Lenovo', 'Yoga Tablet 8 Pro 1386L', DeviceType::TABLET ], + ], + + 'Lenovo YB1-X90L' => [ 'Lenovo', 'Yoga Book', DeviceType::TABLET ], + 'Lenovo YB1-X90F' => [ 'Lenovo', 'Yoga Book', DeviceType::TABLET ], + 'Lenovo YB-Q501F' => [ 'Lenovo', 'Yoga A12', DeviceType::TABLET ], + 'Lenovo YT3-X50F' => [ 'Lenovo', 'Yoga Tablet 3', DeviceType::TABLET ], + 'Lenovo YT3-X50L' => [ 'Lenovo', 'Yoga Tablet 3', DeviceType::TABLET ], + 'Lenovo YT3-850F' => [ 'Lenovo', 'Yoga Tablet 3', DeviceType::TABLET ], + 'Lenovo YT-X703F' => [ 'Lenovo', 'Yoga Tablet 3 Plus', DeviceType::TABLET ], + 'Lenovo YT3-X90F' => [ 'Lenovo', 'Yoga Tablet 3 Pro', DeviceType::TABLET ], + 'Lenovo YT3-X90L' => [ 'Lenovo', 'Yoga Tablet 3 Pro', DeviceType::TABLET ], + + '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!' => [ + 'Lenovo A7' => [ 'Lenovo', 'Tab A7', DeviceType::TABLET ], + 'Lenovo A7-60HC' => [ 'Lenovo', 'Tab A7', DeviceType::TABLET ], + 'Lenovo A10-70LC' => [ 'Lenovo', 'Tab A10', DeviceType::TABLET ], + 'Lenovo 2 A7-30(F|HC|TC)!' => [ 'Lenovo', 'Tab 2 A7', DeviceType::TABLET ], + 'Tab2A7-(10|20)!' => [ 'Lenovo', 'Tab 2 A7', DeviceType::TABLET ], + 'Lenovo TAB 2 A7-30(D|F|H|DC|GC|HC)!' => [ 'Lenovo', 'Tab 2 A7', DeviceType::TABLET ], + 'Lenovo 2 A8-50(F|L|LC)!' => [ 'Lenovo', 'Tab 2 A8', DeviceType::TABLET ], + 'Lenovo TAB 2 A8-50(F|L|LC)!' => [ 'Lenovo', 'Tab 2 A8', DeviceType::TABLET ], + 'Lenovo TAB 2 A10-70(F|L)!' => [ 'Lenovo', 'Tab 2 A10', DeviceType::TABLET ], + 'Lenovo TAB S8-50(F|L|LC)!' => [ 'Lenovo', 'Tab S8', DeviceType::TABLET ], + 'Lenovo S8-50LC' => [ 'Lenovo', 'Tab S8', DeviceType::TABLET ], + ], + + 'Lenovo TB-7304F' => [ 'Lenovo', 'Tab 7 Essential', DeviceType::TABLET ], + 'Lenovo TB-X103F' => [ 'Lenovo', 'Tab 10', DeviceType::TABLET ], + 'TB-X103F' => [ 'Lenovo', 'Tab 10', DeviceType::TABLET ], + 'Lenovo TB2-X30F' => [ 'Lenovo', 'Tab 2 A10', DeviceType::TABLET ], + 'Lenovo TB2-X30L' => [ 'Lenovo', 'Tab 2 A10', DeviceType::TABLET ], + 'Lenovo TB3-730X' => [ 'Lenovo', 'Tab 3 7', DeviceType::TABLET ], + 'Lenovo TB3-710F' => [ 'Lenovo', 'Tab 3 7 Essential', DeviceType::TABLET ], + 'Lenovo TB3-710I' => [ 'Lenovo', 'Tab 3 7 Essential', DeviceType::TABLET ], + 'Lenovo TB-7703X' => [ 'Lenovo', 'Tab 3 7 Plus', DeviceType::TABLET ], + 'Lenovo TB3-850F' => [ 'Lenovo', 'Tab 3 8', DeviceType::TABLET ], + 'Lenovo TB3-850M' => [ 'Lenovo', 'Tab 3 8', DeviceType::TABLET ], + 'Lenovo TB3-X70F' => [ 'Lenovo', 'Tab 3 10 Business', DeviceType::TABLET ], + 'Lenovo TB3-X70L' => [ 'Lenovo', 'Tab 3 10 Business', DeviceType::TABLET ], + 'Lenovo TB-8504F' => [ 'Lenovo', 'Tab 4 8', DeviceType::TABLET ], + 'Lenovo TB-8703F' => [ 'Lenovo', 'Tab 4 8 Plus', DeviceType::TABLET ], + 'Lenovo TB-8704F' => [ 'Lenovo', 'Tab 4 8 Plus', DeviceType::TABLET ], + 'Lenovo TB-X304F' => [ 'Lenovo', 'Tab 4 10', DeviceType::TABLET ], + 'Lenovo TB-X704F' => [ 'Lenovo', 'Tab 4 10 Plus', DeviceType::TABLET ], + 'Lenovo TB-X704L' => [ 'Lenovo', 'Tab 4 10 Plus', DeviceType::TABLET ], + + '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!' => [ + 'IdeaTab ?K2110A-(F)!' => [ 'Lenovo', 'IdeaTab K2110', DeviceType::TABLET ], + 'S2005A-H' => [ 'Lenovo', 'IdeaTab S2005', DeviceType::TABLET ], + 'lenovo S2005' => [ 'Lenovo', 'IdeaTab S2005', DeviceType::TABLET ], + 'IdeaTab ?S2007A-(D|F|H)!' => [ 'Lenovo', 'IdeaTab S2007', DeviceType::TABLET ], + 'IdeaTab ?S2010A-(D|F|H)!' => [ 'Lenovo', 'IdeaTab S2010', DeviceType::TABLET ], + 'IdeaTab ?S2109A-(F)!' => [ 'Lenovo', 'IdeaTab S2109', DeviceType::TABLET ], + 'IdeaTab ?S2110(AF|AH)!' => [ 'Lenovo', 'IdeaTab S2110', DeviceType::TABLET ], + 'IdeaTab ?A2207A-(F)!' => [ 'Lenovo', 'IdeaTab S2207', DeviceType::TABLET ], + 'Lenovo S5000' => [ 'Lenovo', 'IdeaTab S5000', DeviceType::TABLET ], + 'Lenovo S5000-(F|H)!' => [ 'Lenovo', 'IdeaTab S5000', DeviceType::TABLET ], + 'IdeaTab ?S6000L?-(F|H)!' => [ 'Lenovo', 'IdeaTab S6000', DeviceType::TABLET ], + 'Lenovo S6000-H' => [ 'Lenovo', 'IdeaTab S6000', DeviceType::TABLET ], + 'Lenovo S6000L-(F|H)!' => [ 'Lenovo', 'IdeaTab S6000', DeviceType::TABLET ], + 'LENOVO IdeaTab S6000-H' => [ 'Lenovo', 'IdeaTab S6000', DeviceType::TABLET ], + 'IdeaTab ?V2007(A|A-D-I)!' => [ 'Lenovo', 'IdeaTab V2007', DeviceType::TABLET ], + 'IdeaTab ?V2010(A)!' => [ 'Lenovo', 'IdeaTab V2010', DeviceType::TABLET ], + ], + + 'Lenovo Pad A4' => [ 'Lenovo', 'Pad A4', DeviceType::TABLET ], + + 'Lenovo' => [ 'Lenovo', 'LePad', DeviceType::TABLET ], + 'A1 07' => [ 'Lenovo', 'LePad', DeviceType::TABLET ], + 'lepad 001b' => [ 'Lenovo', 'LePad', DeviceType::TABLET ], + 'lepad 001n' => [ 'Lenovo', 'LePad', DeviceType::TABLET ], + + '(Lenovo |Lephone )?3GC101!' => [ 'Lenovo', 'LePhone 3GC101' ], + '(Lenovo |Lephone )?3GW100!' => [ 'Lenovo', 'LePhone 3GW100' ], + '(Lenovo |Lephone )?3GW101!' => [ 'Lenovo', 'LePhone 3GW101' ], + '(Lenovo )?S1[- ]37AH0!' => [ 'Lenovo', 'LePhone S1' ], + '(Lenovo )?S2[- ]38A(H0|T0)!' => [ 'Lenovo', 'LePhone S2' ], + + 'Lenovo!!' => [ + 'Lenovo A1000' => [ 'Lenovo', 'A1000' ], + 'Lenovo A1600-d' => [ 'Lenovo', 'A1600' ], + 'Lenovo A1900' => [ 'Lenovo', 'A1900' ], + 'Lenovo A2580' => [ 'Lenovo', 'A2580' ], + 'Lenovo A2800-d' => [ 'Lenovo', 'A2800' ], + 'Lenovo A2860!' => [ 'Lenovo', 'A2860' ], + 'Lenovo A3500' => [ 'Lenovo', 'A3500' ], + 'Lenovo A5000!' => [ 'Lenovo', 'A5000' ], + 'Lenovo A6000!' => [ 'Lenovo', 'A6000' ], + 'Lenovo A7000!' => [ 'Lenovo', 'A7000' ], + 'Lenovo A116!' => [ 'Lenovo', 'A116' ], + 'Lenovo A208!' => [ 'Lenovo', 'A208' ], + 'Lenovo A218!' => [ 'Lenovo', 'A218' ], + 'Lenovo A228t' => [ 'Lenovo', 'A228t' ], + 'Lenovo A238!' => [ 'Lenovo', 'A238' ], + 'Lenovo A269!' => [ 'Lenovo', 'A269' ], + 'Lenovo A278!' => [ 'Lenovo', 'A278' ], + 'Lenovo ?A288!' => [ 'Lenovo', 'A288' ], + 'Lenovo ?A298!' => [ 'Lenovo', 'A298' ], + 'Lenovo A300!' => [ 'Lenovo', 'A300' ], + 'Lenovo A305!' => [ 'Lenovo', 'A305' ], + 'Lenovo A308!' => [ 'Lenovo', 'A308' ], + 'Lenovo A316!' => [ 'Lenovo', 'A316' ], + 'Lenovo A318!' => [ 'Lenovo', 'A318' ], + 'Lenovo A319!' => [ 'Lenovo', 'A319' ], + 'Lenovo A320!' => [ 'Lenovo', 'A320' ], + 'Lenovo A326!' => [ 'Lenovo', 'A326' ], + 'Lenovo A328!' => [ 'Lenovo', 'A328' ], + 'Lenovo A330!' => [ 'Lenovo', 'A330' ], + 'Lenovo A338!' => [ 'Lenovo', 'A338' ], + 'Lenovo A355!' => [ 'Lenovo', 'A355' ], + 'Lenovo A356!' => [ 'Lenovo', 'A356' ], + 'Lenovo A358!' => [ 'Lenovo', 'A358' ], + 'Lenovo A360!' => [ 'Lenovo', 'A360' ], + 'Lenovo A365!' => [ 'Lenovo', 'A365' ], + 'Lenovo A366!' => [ 'Lenovo', 'A366' ], + 'Lenovo A368!' => [ 'Lenovo', 'A368' ], + 'Lenovo A369!' => [ 'Lenovo', 'A369' ], + 'Lenovo A370!' => [ 'Lenovo', 'A370' ], + 'Lenovo A370!' => [ 'Lenovo', 'A370' ], + 'Lenovo A375!' => [ 'Lenovo', 'A375' ], + 'Lenovo A376!' => [ 'Lenovo', 'A376' ], + 'Lenovo A378!' => [ 'Lenovo', 'A378' ], + 'Lenovo A380!' => [ 'Lenovo', 'A380' ], + 'Lenovo A385!' => [ 'Lenovo', 'A385' ], + 'Lenovo A388!' => [ 'Lenovo', 'A388' ], + 'Lenovo A390!' => [ 'Lenovo', 'A390' ], + 'Lenovo A395!' => [ 'Lenovo', 'A395' ], + 'Lenovo A396!' => [ 'Lenovo', 'A396' ], + 'Lenovo A398!' => [ 'Lenovo', 'A398' ], + 'Lenovo A399' => [ 'Lenovo', 'A399' ], + 'Lenovo A500!' => [ 'Lenovo', 'A505' ], + 'Lenovo A505!' => [ 'Lenovo', 'A500' ], + 'Lenovo A516!' => [ 'Lenovo', 'A516' ], + 'Lenovo A520!' => [ 'Lenovo', 'A520' ], + 'Lenovo A526!' => [ 'Lenovo', 'A526' ], + 'Lenovo A529!' => [ 'Lenovo', 'A529' ], + 'Lenovo A530!' => [ 'Lenovo', 'A530' ], + 'Lenovo A536!' => [ 'Lenovo', 'A536' ], + 'Lenovo A560!' => [ 'Lenovo', 'A560' ], + 'Lenovo A580!' => [ 'Lenovo', 'A580' ], + 'Lenovo A586!' => [ 'Lenovo', 'A586' ], + 'Lenovo ?A588!' => [ 'Lenovo', 'A588' ], + 'Lenovo A590!' => [ 'Lenovo', 'A590' ], + 'Lenovo A600!' => [ 'Lenovo', 'A600' ], + 'Lenovo A606!' => [ 'Lenovo', 'A606' ], + 'Lenovo A616!' => [ 'Lenovo', 'A616' ], + 'Lenovo A628!' => [ 'Lenovo', 'A628' ], + 'Lenovo A630!' => [ 'Lenovo', 'A630' ], + 'Lenovo A656!' => [ 'Lenovo', 'A656' ], + 'Lenovo A658!' => [ 'Lenovo', 'A658' ], + 'Lenovo A660!' => [ 'Lenovo', 'A660' ], + 'Lenovo A668!' => [ 'Lenovo', 'A668' ], + 'Lenovo A670!' => [ 'Lenovo', 'A670' ], + 'Lenovo A678!' => [ 'Lenovo', 'A678' ], + 'Lenovo A680!' => [ 'Lenovo', 'A680' ], + 'Lenovo A690!' => [ 'Lenovo', 'A690' ], + 'Lenovo A698!' => [ 'Lenovo', 'A698' ], + 'Lenovo A700!' => [ 'Lenovo', 'A700' ], + 'Lenovo A706!' => [ 'Lenovo', 'A706' ], + 'Lenovo A708!' => [ 'Lenovo', 'A708' ], + 'Lenovo A710!' => [ 'Lenovo', 'A710' ], + 'Lenovo A718!' => [ 'Lenovo', 'A718' ], + 'Lenovo A720!' => [ 'Lenovo', 'A720' ], + 'Lenovo A750!' => [ 'Lenovo', 'A750' ], + 'Lenovo A760!' => [ 'Lenovo', 'A760' ], + 'Lenovo A765!' => [ 'Lenovo', 'A765' ], + 'Lenovo A766!' => [ 'Lenovo', 'A766' ], + 'Lenovo A768t' => [ 'Lenovo', 'A768t' ], + 'Lenovo A770!' => [ 'Lenovo', 'A770' ], + 'Lenovo A780!' => [ 'Lenovo', 'A780' ], + 'Lenovo A785!' => [ 'Lenovo', 'A785' ], + 'Lenovo A788!' => [ 'Lenovo', 'A788' ], + 'Lenovo A789!' => [ 'Lenovo', 'A789' ], + 'Lenovo A790!' => [ 'Lenovo', 'A790' ], + 'Lenovo A798!' => [ 'Lenovo', 'A798' ], + 'Lenovo A800!' => [ 'Lenovo', 'A800' ], + 'Lenovo A805!' => [ 'Lenovo', 'A805' ], + 'Lenovo A806!' => [ 'Lenovo', 'A806' ], + 'Lenovo A808!' => [ 'Lenovo', 'A808' ], + 'Lenovo A816!' => [ 'Lenovo', 'A816' ], + 'Lenovo ?A820!' => [ 'Lenovo', 'A820' ], + 'lenovo-A820t' => [ 'Lenovo', 'A820' ], + 'Lenovo A828!' => [ 'Lenovo', 'A828' ], + 'Lenovo A830!' => [ 'Lenovo', 'A830' ], + 'Lenovo A850!' => [ 'Lenovo', 'A850' ], + 'Lenovo A858!' => [ 'Lenovo', 'A858' ], + 'Lenovo A859!' => [ 'Lenovo', 'A859' ], + 'Lenovo A860!' => [ 'Lenovo', 'A860' ], + 'Lenovo A880!' => [ 'Lenovo', 'A880' ], + 'Lenovo A889!' => [ 'Lenovo', 'A889' ], + 'Lenovo A890!' => [ 'Lenovo', 'A890' ], + 'Lenovo A916!' => [ 'Lenovo', 'A916' ], + 'Lenovo A936!' => [ 'Lenovo', 'A936' ], + 'Lenovo A938!' => [ 'Lenovo', 'A938' ], + 'Lenovo A998!' => [ 'Lenovo', 'A998' ], + 'Lenovo A60+?!' => [ 'Lenovo', 'A60' ], + 'Lenovo A65!' => [ 'Lenovo', 'A65' ], + 'Lenovo A66!' => [ 'Lenovo', 'A66' ], + 'Lenovo A68!' => [ 'Lenovo', 'A68' ], + 'Lenovo K800' => [ 'Lenovo', 'K800' ], + 'Lenovo K860!' => [ 'Lenovo', 'K860' ], + 'Lenovo K900!' => [ 'Lenovo', 'K900' ], + 'Lenovo K910!' => [ 'Lenovo', 'K910' ], + 'Lenovo K920!' => [ 'Lenovo', 'K920' ], + 'Lenovo K80M' => [ 'Lenovo', 'K80' ], + 'Lenovo K2' => [ 'Lenovo', 'K2' ], + 'Lenovo k30' => [ 'Lenovo', 'K3' ], + 'Lenovo K30-T' => [ 'Lenovo', 'K3' ], + 'Lenovo K30-TM' => [ 'Lenovo', 'K3' ], + 'Lenovo K30-W' => [ 'Lenovo', 'K3' ], + 'Lenovo K31-t3' => [ 'Lenovo', 'K3' ], + 'Lenovo K3' => [ 'Lenovo', 'K3' ], + 'Lenovo K3 Note' => [ 'Lenovo', 'K3 Note' ], + 'Lenovo K50a40' => [ 'Lenovo', 'K3 Note' ], + 'Lenovo K50-t3s' => [ 'Lenovo', 'K3 Note' ], + 'Lenovo K50-T5' => [ 'Lenovo', 'K3 Note' ], + 'Lenovo K50t5' => [ 'Lenovo', 'K3 Note' ], + 'Lenovo K6' => [ 'Lenovo', 'K6' ], + 'Lenovo N300' => [ 'Lenovo', 'N300', DeviceType::DESKTOP ], + 'Lenovo N308' => [ 'Lenovo', 'N308', DeviceType::DESKTOP ], + 'Lenovo N908' => [ 'Lenovo', 'N908' ], + 'Lenovo O3' => [ 'Lenovo', 'O3' ], + 'Lenovo P70' => [ 'Lenovo', 'P70' ], + 'Lenovo P70-A' => [ 'Lenovo', 'P70' ], + 'Lenovo P70-t' => [ 'Lenovo', 'P70' ], + 'Lenovo P90' => [ 'Lenovo', 'P90' ], + 'Lenovo P700!' => [ 'Lenovo', 'P700' ], + 'Lenovo P770!' => [ 'Lenovo', 'P770' ], + 'Lenovo-P770' => [ 'Lenovo', 'P770' ], + 'Lenovo P780!' => [ 'Lenovo', 'P780' ], + 'Lenovo P786!' => [ 'Lenovo', 'P786' ], + 'Lenovo S60-a' => [ 'Lenovo', 'S60' ], + 'Lenovo S60-t' => [ 'Lenovo', 'S60' ], + 'Lenovo S60-w' => [ 'Lenovo', 'S60' ], + 'Lenovo S90-A' => [ 'Lenovo', 'S90' ], + 'Lenovo S90-e' => [ 'Lenovo', 'S90' ], + 'Lenovo S90-L' => [ 'Lenovo', 'S90' ], + 'Lenovo S90-t' => [ 'Lenovo', 'S90' ], + 'Lenovo S90-u' => [ 'Lenovo', 'S90' ], + 'Lenovo S560' => [ 'Lenovo', 'S560' ], + 'Lenovo S580' => [ 'Lenovo', 'S580' ], + 'Lenovo S650' => [ 'Lenovo', 'S650' ], + 'Lenovo S658t' => [ 'Lenovo', 'S658' ], + 'Lenovo S660' => [ 'Lenovo', 'S660' ], + 'Lenovo S668t' => [ 'Lenovo', 'S668' ], + 'Lenovo S680' => [ 'Lenovo', 'S680' ], + 'Lenovo S686' => [ 'Lenovo', 'S686' ], + 'Lenovo S696' => [ 'Lenovo', 'S696' ], + 'Lenovo S720!' => [ 'Lenovo', 'S720' ], + 'Lenovo S750' => [ 'Lenovo', 'S750' ], + 'Lenovo S760' => [ 'Lenovo', 'S760' ], + 'Lenovo S790' => [ 'Lenovo', 'S790' ], + 'Lenovo S810!' => [ 'Lenovo', 'S810' ], + 'Lenovo S820!' => [ 'Lenovo', 'S820' ], + 'Lenovo S850!' => [ 'Lenovo', 'S850' ], + 'Lenovo S856!' => [ 'Lenovo', 'S856' ], + 'Lenovo S858!' => [ 'Lenovo', 'S858' ], + 'Lenovo S860!' => [ 'Lenovo', 'S860' ], + 'Lenovo S868t' => [ 'Lenovo', 'S868' ], + 'Lenovo S870e' => [ 'Lenovo', 'S870' ], + 'Lenovo S880!' => [ 'Lenovo', 'S880' ], + 'Lenovo S890' => [ 'Lenovo', 'S890' ], + 'Lenovo S898!' => [ 'Lenovo', 'S898' ], + 'Lenovo ?S899!' => [ 'Lenovo', 'S899' ], + 'lenovo S900i' => [ 'Lenovo', 'S900' ], + 'Lenovo ?S920!' => [ 'Lenovo', 'S920' ], + 'Lenovo S930' => [ 'Lenovo', 'S930' ], + 'Lenovo S938!' => [ 'Lenovo', 'S938' ], + 'Lenovo S939' => [ 'Lenovo', 'S939' ], + 'Lenovo S950' => [ 'Lenovo', 'S950' ], + 'Lenovo S960' => [ 'Lenovo', 'S960' ], + 'Lenovo S968!' => [ 'Lenovo', 'S968' ], + 'Lenovo W100' => [ 'Lenovo', 'W100' ], + 'Lenovo K8' => [ 'Lenovo', 'K8' ], + 'Lenovo K8 Note' => [ 'Lenovo', 'K8 Note' ], + 'Lenovo K8 Plus' => [ 'Lenovo', 'K8 Plus' ], + 'Lenovo A1010a20' => [ 'Lenovo', 'A Plus' ], + 'Lenovo A2016a40' => [ 'Lenovo', 'Vibe B' ], + 'Lenovo A7010a48' => [ 'Lenovo', 'Vibe K4 Note' ], + 'Lenovo A7020a40' => [ 'Lenovo', 'Vibe K5 Note' ], + 'Lenovo A7020a48' => [ 'Lenovo', 'Vibe K5 Note' ], + 'Lenovo K33b36' => [ 'Lenovo', 'Vibe K6' ], + 'Lenovo K33a48' => [ 'Lenovo', 'Vibe K6' ], + 'Lenovo K53b36' => [ 'Lenovo', 'Vibe K6 Plus' ], + 'Lenovo K53a48' => [ 'Lenovo', 'Vibe K6 Plus' ], + 'Lenovo K33a42' => [ 'Lenovo', 'Vibe K6 Power' ], + 'Lenovo K10a40' => [ 'Lenovo', 'Vibe C2' ], + 'Lenovo P1a42' => [ 'Lenovo', 'Vibe P1' ], + 'Lenovo P1c72' => [ 'Lenovo', 'Vibe P1' ], + 'Lenovo P1c58' => [ 'Lenovo', 'Vibe P1' ], + 'Lenovo P1ma40' => [ 'Lenovo', 'Vibe P1m' ], + 'Lenovo P2a42' => [ 'Lenovo', 'Vibe P2' ], + 'Lenovo P2c72' => [ 'Lenovo', 'Vibe P2' ], + 'Lenovo S1a40' => [ 'Lenovo', 'Vibe S1' ], + 'Lenovo S1c58' => [ 'Lenovo', 'Vibe S1' ], + 'Lenovo X2-(AP|CU|EU|TO|TR)!' => [ 'Lenovo', 'Vibe X2' ], + 'Lenovo X3a40' => [ 'Lenovo', 'Vibe X3' ], + 'Lenovo X3c50' => [ 'Lenovo', 'Vibe X3' ], + 'Lenovo K51c78' => [ 'Lenovo', 'Vibe X3 Lite' ], + 'Lenovo Z90!' => [ 'Lenovo', 'Vibe Shot' ], + 'Lenovo PB1-750M' => [ 'Lenovo', 'Phab' ], + 'Lenovo PB1-770(M|N|P)!' => [ 'Lenovo', 'Phab Plus' ], + 'Lenovo PB2-670M' => [ 'Lenovo', 'Phab 2 Plus' ], + 'Lenovo X910' => [ 'Lenovo', 'X910' ], + ], + + 'A30t' => [ 'Lenovo', 'A30' ], + 'OPPOLenovo A60' => [ 'Lenovo', 'A60' ], + 'A380T' => [ 'Lenovo', 'A380T' ], + 'A708T' => [ 'Lenovo', 'A708T' ], + 'A750' => [ 'Lenovo', 'A750' ], + 'A820t' => [ 'Lenovo', 'A820T' ], + 'A7000-a' => [ 'Lenovo', 'A7000' ], + 'K30-T' => [ 'Lenovo', 'K3' ], + 'K30-W' => [ 'Lenovo', 'K3' ], + 'K3 Note' => [ 'Lenovo', 'K3 Note' ], + 'P700i' => [ 'Lenovo', 'P700i' ], + 'S658t' => [ 'Lenovo', 'S658' ], + 'S720i' => [ 'Lenovo', 'S720' ], + 'S850' => [ 'Lenovo', 'S850' ], + 'S880' => [ 'Lenovo', 'S880' ], + + 'A7010a48' => [ 'Lenovo', 'Vibe K4 Note' ], + 'A6020' => [ 'Lenovo', 'Vibe K5' ], + 'Vibe K5 Plus' => [ 'Lenovo', 'Vibe K5 Plus' ], + 'P1m' => [ 'Lenovo', 'Vibe P1m' ], + 'P1ma40' => [ 'Lenovo', 'Vibe P1m' ], + 'VIBE X2 (X2)' => [ 'Lenovo', 'Vibe X2' ], + 'VIBE X3' => [ 'Lenovo', 'Vibe X3' ], + 'VIBE Z2 Pro (K920)' => [ 'Lenovo', 'Vibe Z2 Pro' ], + + 'idea ?tv!!' => [ + 'ideatv A21' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'ideatv K72' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'ideatv K82' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'ideatv K91' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'IDEA TV T100' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'IDEA TV K91' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'ideatv S9' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'ideatv S31' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'ideatv S51' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'ideatv S52' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + 'ideatv S61' => [ 'Lenovo', 'IDEA TV', DeviceType::TELEVISION ], + ], + + 'LenovoTV 40S9' => [ 'Lenovo', 'TV 40S9', DeviceType::TELEVISION ], + 'LenovoTV 50S52' => [ 'Lenovo', 'TV 50S52', DeviceType::TELEVISION ], + '501LV' => [ 'Lenovo', 'Tab2 501LV', 'carrier' => 'Softbank' ], + '602LV' => [ 'Lenovo', 'Tab3 602LV', 'carrier' => 'Softbank' ], + + 'ZUK Z1' => [ 'Lenovo', 'ZUK Z1' ], + 'ZUK Z2' => [ 'Lenovo', 'ZUK Z2' ], + 'ZUK Z2131' => [ 'Lenovo', 'ZUK Z2' ], + 'ZUK Z2151' => [ 'Lenovo', 'ZUK Z2' ], + 'ZUK Z2 Plus' => [ 'Lenovo', 'ZUK Z2 Plus' ], + 'Z2 Plus' => [ 'Lenovo', 'ZUK Z2 Plus' ], + 'ZUK Z2132' => [ 'Lenovo', 'ZUK Z2 Plus' ], + 'ZUK Z2 Pro' => [ 'Lenovo', 'ZUK Z2 Pro' ], + 'ZUK Z2121' => [ 'Lenovo', 'ZUK Z2 Pro' ], + 'ZUK Z2122' => [ 'Lenovo', 'ZUK Z2 Pro' ], + 'Z2 Rio' => [ 'Lenovo', 'ZUK Z2 Rio Edition' ], + 'Lenovo Z2' => [ 'Lenovo', 'ZUK Z2' ], + 'ZUK Edge' => [ 'Lenovo', 'ZUK Edge' ], + + '(BLF-)?lephone!!' => [ + 'lephone 1800' => [ 'Lephone', '1800' ], + 'BLF-lephone 1900' => [ 'Lephone', '1900' ], + 'lephone 2800' => [ 'Lephone', '2800' ], + 'lephone 2900' => [ 'Lephone', '2900' ], + 'lephone T708' => [ 'Lephone', 'T708' ], + 'Lephone TD506' => [ 'Lephone', 'TD506' ], + 'Lephone TD8208' => [ 'Lephone', 'TD8208' ], + ], + + 'TD506' => [ 'Lephone', 'TD506' ], + + 'MFC[0-9]!!' => [ + 'MFC190BBFR' => [ 'Lexibook', 'Barbie Tablet', DeviceType::TABLET ], + 'MFC150DEX' => [ 'Lexibook', 'First Tablet', DeviceType::TABLET ], + 'MFC195FUDE' => [ 'Lexibook', 'Furby Tablet', DeviceType::TABLET ], + 'MFC195FUFR' => [ 'Lexibook', 'Furby Tablet', DeviceType::TABLET ], + 'MFC140FR1' => [ 'Lexibook', 'LapTab', DeviceType::TABLET ], + 'MFC141FR' => [ 'Lexibook', 'LapTab 2', DeviceType::TABLET ], + 'MFC162DE' => [ 'Lexibook', 'Power Tablet', DeviceType::TABLET ], + 'MFC162FR' => [ 'Lexibook', 'Power Tablet', DeviceType::TABLET ], + 'MFC180FR' => [ 'Lexibook', 'Tablet Advanced', DeviceType::TABLET ], + 'MFC181FR' => [ 'Lexibook', 'Tablet Advanced 2', DeviceType::TABLET ], + 'MFC195DCFR' => [ 'Lexibook', 'Tablet Disney Cars HD', DeviceType::TABLET ], + 'MFC195DPFR' => [ 'Lexibook', 'Tablet Disney Princesse HD', DeviceType::TABLET ], + 'MFC250FR' => [ 'Lexibook', 'Tablet Junior', DeviceType::TABLET ], + 'MFC280FR' => [ 'Lexibook', 'Tablet Junior 2', DeviceType::TABLET ], + 'MFC280DE' => [ 'Lexibook', 'Tablet Junior 2', DeviceType::TABLET ], + 'MFC270DE' => [ 'Lexibook', 'Tablet Junior Power Touch', DeviceType::TABLET ], + 'MFC270EN 09' => [ 'Lexibook', 'Tablet Junior Power Touch', DeviceType::TABLET ], + 'MFC270FR' => [ 'Lexibook', 'Tablet Junior Power Touch', DeviceType::TABLET ], + 'mfc142fr' => [ 'Lexibook', 'Tablet Kids', DeviceType::TABLET ], + 'MFC155EN 09' => [ 'Lexibook', 'Tablet Master', DeviceType::TABLET ], + 'MFC155ES' => [ 'Lexibook', 'Tablet Master', DeviceType::TABLET ], + 'MFC155FR' => [ 'Lexibook', 'Tablet Master', DeviceType::TABLET ], + 'MFC157FR' => [ 'Lexibook', 'Tablet Master 2', DeviceType::TABLET ], + 'MFC157CZ' => [ 'Lexibook', 'Tablet Master 2', DeviceType::TABLET ], + 'MFC163FR' => [ 'Lexibook', 'Tablet Master 3', DeviceType::TABLET ], + 'MFC156FR' => [ 'Lexibook', 'Tablet One', DeviceType::TABLET ], + 'MFC170FR' => [ 'Lexibook', 'Tablet Ultra', DeviceType::TABLET ], + 'MFC175FR' => [ 'Lexibook', 'Tablet Ultra', DeviceType::TABLET ], + 'MFC375FR' => [ 'Lexibook', 'Tablet Ultra 2', DeviceType::TABLET ], + 'mfc500fr' => [ 'Lexibook', 'Tablet XL', DeviceType::TABLET ], + 'MFC045FR' => [ 'Lexibook', 'TabTab', DeviceType::TABLET ], + ], + + 'Le Pan Mini' => [ 'Le Pan', 'Mini', DeviceType::TABLET ], + 'Le Pan TC802A' => [ 'Le Pan', 'Mini', DeviceType::TABLET ], + 'TC970' => [ 'Le Pan', 'TC970', DeviceType::TABLET ], + 'TC970 (Wi-Fi)' => [ 'Le Pan', 'TC970', DeviceType::TABLET ], + 'Le Pan TC1010' => [ 'Le Pan', 'TC1010', DeviceType::TABLET ], + 'Le Pan TC1020' => [ 'Le Pan', 'TC1020', DeviceType::TABLET ], + 'LePanII' => [ 'Le Pan', 'II', DeviceType::TABLET ], + 'TC975' => [ 'Le Pan', 'III', DeviceType::TABLET ], + 'Le Pan S' => [ 'Le Pan', 'S', DeviceType::TABLET ], + 'LG-AN160' => [ 'LG', 'Fluid' ], + 'LG-AK495' => [ 'LG', 'G Pad F 8.0 (2nd gen.)' ], + + 'LG-?AS[0-9]{3,3}!!' => [ + 'LGAS323' => [ 'LG', 'L70' ], + 'LG-AS323' => [ 'LG', 'L70' ], + 'LG-AS330' => [ 'LG', 'K7' ], + 'LGAS375' => [ 'LG', 'K8' ], + 'LG-AS680' => [ 'LG', 'Optimus 2' ], + 'LG-AS695' => [ 'LG', 'Optimus Plus' ], + 'LG-AS730' => [ 'LG', 'Optimus Select' ], + 'LG-AS750' => [ 'LG', 'L70' ], + 'LG-AS780' => [ 'LG', 'Optimus F7' ], + 'LG-AS811' => [ 'LG', 'G4' ], + 'LG-AS840' => [ 'LG', 'Optimus Tag' ], + 'LG-AS855' => [ 'LG', 'Ignite' ], + 'LG-AS870' => [ 'LG', 'Optimus F5' ], + 'LG-AS876' => [ 'LG', 'L70' ], + 'LG-AS9(85|90)!' => [ 'LG', 'G3' ], + 'LGAS991' => [ 'LG', 'G4' ], + 'LG-AS9(91)!' => [ 'LG', 'G4' ], + 'LGAS992' => [ 'LG', 'G5' ], + 'LGAS995' => [ 'LG', 'G Flex 2' ], + ], + + 'LG-?C[0-9]{3,3}!!' => [ + 'LG-C520' => [ 'LG', 'C520' ], + 'LG-C5(50|55)!' => [ 'LG', 'Optimus Chat' ], + 'LGC660!' => [ 'LG', 'Optimus Pro' ], + 'LG-C660!' => [ 'LG', 'Optimus Pro' ], + 'LG-C710!' => [ 'LG', 'Aloha' ], + 'LG-C729' => [ 'LG', 'DoublePlay' ], + 'LG-C800G' => [ 'LG', 'Eclypse' ], + ], + + 'LG-CX670' => [ 'LG', 'Optimus One' ], + + 'LG-?D[0-9]{3,3}!!' => [ + 'LG-D1(00|05|07)!' => [ 'LG', 'L20' ], + 'LG-D1(20|23|25|27)!' => [ 'LG', 'L30 Sporty' ], + 'LG-D1(50|57)!' => [ 'LG', 'L35' ], + 'LG-D1(60|65|70|75|80)!' => [ 'LG', 'L40' ], + 'LG-D2(13|21|27)!' => [ 'LG', 'L50 Sporty' ], + 'LG-D2(80|85)!' => [ 'LG', 'L65' ], + 'LG-D2(90|95)!' => [ 'LG', 'L Fino' ], + 'LG-D3(15|17)!' => [ 'LG', 'F70' ], + 'LG-D3(20|21|25|29|30)!' => [ 'LG', 'L70' ], + 'LGD321' => [ 'LG', 'L70' ], + 'LG-D3(30|31|35)!' => [ 'LG', 'L Bello' ], + 'LG-D3(32)!' => [ 'LG', 'L80+' ], + 'LG-D3(37)!' => [ 'LG', 'L Prime' ], + 'LG-D340!' => [ 'LG', 'L70 Tri' ], + 'LG-D3(70|73|75|80|85)!' => [ 'LG', 'L80' ], + 'LG-D3(90|92|93)!' => [ 'LG', 'F60' ], + 'LG-D4(00|05|10|15)!' => [ 'LG', 'L90' ], + 'LG-D486!' => [ 'LG', 'Wine Smart' ], + 'LGD500' => [ 'LG', 'Optimus F6' ], + 'LG-D5(00|05)!' => [ 'LG', 'Optimus F6' ], + 'LG-D520!' => [ 'LG', 'Optimus F3Q' ], + 'LG-D605!' => [ 'LG', 'Optimus L9 II' ], + 'LG-D6(10|18|20|25)!' => [ 'LG', 'G2 mini' ], + 'LGD618' => [ 'LG', 'G2 mini' ], + 'LG-D6(31)!' => [ 'LG', 'G3 Vista' ], + 'LG-D6(80|81|82|83|84)!' => [ 'LG', 'G Pro Lite' ], + 'LG-D6(85|86)!' => [ 'LG', 'G Pro Lite Dual' ], + 'LG-D6(90|93)!' => [ 'LG', 'G3 Stylus' ], + 'LG-D700!' => [ 'LG', 'Optimus L9' ], + 'LG-D722J!' => [ 'LG', 'G3 Beat' ], + 'LG-D7(22|24)!' => [ 'LG', 'G3 S' ], + 'LG-D7(23)!' => [ 'LG', 'G3 mini' ], + 'LG-D7(25|26|27)!' => [ 'LG', 'G3 Vigor' ], + 'LG-D7(28|29)!' => [ 'LG', 'G3 Beat' ], + 'LG-D8(00|01|02|03|05|06)!' => [ 'LG', 'G2' ], + 'LG-D8(20|21)!' => [ 'LG', 'Nexus 5' ], + 'LG-D8(30|37|38)!' => [ 'LG', 'G Pro 2' ], + 'LG-D8(50|51|52|55|56|58|59)!' => [ 'LG', 'G3' ], + 'LGD850' => [ 'LG', 'G3' ], + 'LGD855' => [ 'LG', 'G3' ], + 'LG-D8(57)!' => [ 'LG', 'Titan' ], + 'LG-D9(50|51|55|56|58|59)!' => [ 'LG', 'G Flex' ], + ], + + 'LG-DS1203' => [ 'LG', 'G2' ], + + 'LG-?E[0-9]{3,3}!!' => [ + 'LG-E400!' => [ 'LG', 'Optimus L3' ], + 'LG-E405!' => [ 'LG', 'Optimus L3 Dual' ], + 'LG-E4(10|11)!' => [ 'LG', 'Optimus L1 II' ], + 'LG-E4(15|20)!' => [ 'LG', 'Optimus L1 II Dual' ], + 'LG-E4(25|30|31)!' => [ 'LG', 'Optimus L3 II' ], + 'LG-E435!' => [ 'LG', 'Optimus L3 II Dual' ], + 'LG-E440!' => [ 'LG', 'Optimus L4 II' ], + 'LG-E445!' => [ 'LG', 'Optimus L4 II Dual' ], + 'LG-E4(50|51|60)!' => [ 'LG', 'Optimus L5 II' ], + 'LG-E455!' => [ 'LG', 'Optimus L5 II Dual' ], + 'LG-E465!' => [ 'LG', 'Optimus L4 II' ], + 'LG-E467!' => [ 'LG', 'Optimus L4 II Dual' ], + 'LG-E470!' => [ 'LG', 'Optimus L4 II Triple' ], + 'LG-E475!' => [ 'LG', 'Optimus L1 II Tri' ], + 'LG-E510!' => [ 'LG', 'Optimus Hub' ], + 'LG-E6(10|12|17)!' => [ 'LG', 'Optimus L5' ], + 'LGE610' => [ 'LG', 'Optimus L5' ], + 'LG-E6(14|15)!' => [ 'LG', 'Optimus L5 Dual' ], + 'LGE615F' => [ 'LG', 'Optimus L5 Dual' ], + 'LG-E720!' => [ 'LG', 'Optimus Chic' ], + 'LG-E730!' => [ 'LG', 'Optimus Sol' ], + 'LG-E805!' => [ 'LG', 'Optimus G2' ], + 'LG-E940!' => [ 'LG', 'Optimus G Pro' ], + 'LG-E960!' => [ 'LG', 'Nexus 4' ], + 'LG-E9(70|71|73|75|76|77|78|87)!' => [ 'LG', 'Optimus G' ], + 'LG-E9(80|81|85|86|88|89)!' => [ 'LG', 'Optimus G Pro' ], + ], + + 'LG-F[0-9]{3,3}!!' => [ + 'LG-F100!' => [ 'LG', 'Optimus Vu' ], + 'LG-F120!' => [ 'LG', 'Optimus LTE Tag' ], + 'LG-F160!' => [ 'LG', 'Optimus LTE II' ], + 'LG-F180!' => [ 'LG', 'Optimus G' ], + 'LG-F200!' => [ 'LG', 'Optimus Vu II' ], + 'LG-F220!' => [ 'LG', 'Optimus GK' ], + 'LG-F240!' => [ 'LG', 'Optimus G Pro' ], + 'LG-F260!' => [ 'LG', 'Optimus LTE III' ], + 'LG-F300!' => [ 'LG', 'Vu 3' ], + 'LG-F310!' => [ 'LG', 'GX' ], + 'LG-F320!' => [ 'LG', 'G2' ], + 'LG-F340!' => [ 'LG', 'G Flex' ], + 'LG-F350!' => [ 'LG', 'G Pro 2' ], + 'LG-F370!' => [ 'LG', 'F70' ], + 'LG-F390!' => [ 'LG', 'G2 mini' ], + 'LG-F400!' => [ 'LG', 'G3' ], + 'LG-F410!' => [ 'LG', 'G3 A' ], + 'LG-F430!' => [ 'LG', 'Gx2' ], + 'LG-F440!' => [ 'LG', 'ice cream smart' ], + 'LG-F460!' => [ 'LG', 'G3 Cat.6' ], + 'LG-F470!' => [ 'LG', 'G3 Beat' ], + 'LG-F480!' => [ 'LG', 'Wine Smart' ], + 'LG-F490!' => [ 'LG', 'G3 Screen' ], + 'LG-F500!' => [ 'LG', 'G4' ], + 'LG-F510!' => [ 'LG', 'G Flex 2' ], + 'LG-F520!' => [ 'LG', 'AKA' ], + 'LG-F540!' => [ 'LG', 'Volt' ], + 'LG-F560!' => [ 'LG', 'G Stylo' ], + 'LG-F570!' => [ 'LG', 'band Play' ], + 'LG-F580!' => [ 'LG', 'Gentle' ], + 'LG-F590!' => [ 'LG', 'L5000' ], + 'LG-F600!' => [ 'LG', 'V10' ], + 'LG-F610!' => [ 'LG', 'Wine Smart Jazz' ], + 'LG-F620!' => [ 'LG', 'Class' ], + 'LG-F640!' => [ 'LG', 'Volt S' ], + 'LG-F650!' => [ 'LG', 'X Screen' ], + 'LG-F670!' => [ 'LG', 'K10' ], + 'LG-F690!' => [ 'LG', 'X Cam' ], + 'LG-F700!' => [ 'LG', 'G5' ], + 'LG-F720!' => [ 'LG', 'Stylus 2' ], + 'LG-F740!' => [ 'LG', 'X Skin' ], + 'LG-F750!' => [ 'LG', 'X Power' ], + 'LG-F770!' => [ 'LG', 'X5' ], + 'LG-F800!' => [ 'LG', 'V20' ], + 'LG-F820!' => [ 'LG', 'U' ], + ], + + 'LG-GT540!' => [ 'LG', 'Optimus' ], + 'LG-GW620!' => [ 'LG', 'GW620 Eve' ], + + 'LG-H[0-9]{3,3}!!' => [ + 'LG-H2(20|21|22)!' => [ 'LG', 'Joy' ], + 'LG-H3(20|24|26)!' => [ 'LG', 'Leon' ], + 'LG-H3(40|42|45)!' => [ 'LG', 'Leon' ], + 'LG-H3(43)!' => [ 'LG', 'Risio' ], + 'LG-H410!' => [ 'LG', 'Wine Smart' ], + 'LG-H4(20|40|41)!' => [ 'LG', 'Spirit' ], + 'LG-H4(22|42)!' => [ 'LG', 'Volt' ], + 'LG-H4(43|45)!' => [ 'LG', 'Escape2' ], + 'LG-H5(00|02|20)!' => [ 'LG', 'Magna' ], + 'LG-H5(22)!' => [ 'LG', 'Prime Plus' ], + 'LG-H5(25)!' => [ 'LG', 'G4c' ], + 'LG-H5(40|42)!' => [ 'LG', 'G4 Stylus' ], + 'LG-H6(30|31|34|35|36)!' => [ 'LG', 'G Stylo' ], + 'LG-H650!' => [ 'LG', 'Zero' ], + 'LG-H700!' => [ 'LG', 'H700' ], + 'LG-H7(31)!' => [ 'LG', 'G4 Vigor' ], + 'LG-H7(34|35|36)!' => [ 'LG', 'G4s' ], + 'LG-H7(40)!' => [ 'LG', 'G Vista 2' ], + 'LG-H7(78|79|88)!' => [ 'LG', 'AKA' ], + 'LG-H8(10|11|12|15|18|19)!' => [ 'LG', 'G4' ], + 'LG-H8(20|30|31|50|60|68)!' => [ 'LG', 'G5' ], + 'LG-H8(40|45|48)!' => [ 'LG', 'G5 SE' ], + 'LG-H8(58)!' => [ 'LG', 'G5 Speed' ], + 'LG-H8(70|71|72|73)!' => [ 'LG', 'G6' ], + 'LG-H9(10|15|18)!' => [ 'LG', 'V20' ], + 'LG-H9(50|55|59)!' => [ 'LG', 'G Flex 2' ], + 'LG-H9(00|01|60|61|62|68)!' => [ 'LG', 'V10' ], + 'LG-H9(30|31|32)!' => [ 'LG', 'V30' ], + 'LG-H9(90)!' => [ 'LG', 'V20' ], + ], + + 'LG-K[0-9]{3,3}!!' => [ + 'LG-K1(00)!' => [ 'LG', 'K3' ], + 'LG-K1(20|21|30)!' => [ 'LG', 'K4' ], + 'LG-K2(00)!' => [ 'LG', 'X Style' ], + 'LG-K2(10|12|20)!' => [ 'LG', 'X Power' ], + 'LG-K2(40)!' => [ 'LG', 'X Mach' ], + 'LG-K3(30|32|)!' => [ 'LG', 'K7' ], + 'LG-K4(10|20|25|28|30)!' => [ 'LG', 'K10' ], + 'LG-K4(50)!' => [ 'LG', 'X Power' ], + 'LG-K5(00)!' => [ 'LG', 'X Screen' ], + 'LG-K5(20)!' => [ 'LG', 'Stylus 2' ], + 'LG-K5(30|35)!' => [ 'LG', 'Stylus 2 Plus' ], + 'LG-K5(40)!' => [ 'LG', 'Stylo 2' ], + 'LG-K5(50|57)!' => [ 'LG', 'Stylo 2 Plus' ], + 'LG-K5(80)!' => [ 'LG', 'X Cam' ], + 'LG-K6(00)!' => [ 'LG', 'X Mach' ], + ], + + 'LG-KH5200' => [ 'LG', 'Andro-1' ], + 'LG-KS1024' => [ 'LG', 'KS1024' ], + + 'LG-KU[0-9]{4,4}!!' => [ + 'LG-KU3700' => [ 'LG', 'Optimus One' ], + 'LG-KU5400!' => [ 'LG', 'PRADA 3.0' ], + 'LG-KU5900' => [ 'LG', 'Optimus Black' ], + 'LG-KU6900' => [ 'LG', 'Optimus Pad', DeviceType::TABLET ], + 'LG-KU8800' => [ 'LG', 'Optimus EX' ], + ], + + 'LG-?L[0-9]{2,3}[A-Z]!!' => [ + 'LG-L01F' => [ 'LG', 'G2' ], + 'LGL15G!' => [ 'LG', 'Sunrise' ], + 'LG-L15G' => [ 'LG', 'Sunrise' ], + 'LGL16C!' => [ 'LG', 'Lucky' ], + 'LGL17AG' => [ 'LG', 'Classic' ], + 'LGL18VC' => [ 'LG', 'Classic' ], + 'LGL21G!' => [ 'LG', 'Destiny' ], + 'LGL22C!' => [ 'LG', 'Power' ], + 'LGL25L' => [ 'LG', 'Optimus Quest' ], + 'LG-L25L' => [ 'LG', 'Optimus Quest' ], + 'LG-L30L' => [ 'LG', 'F70' ], + 'LGL31L!' => [ 'LG', 'Access' ], + 'LG-L31L' => [ 'LG', 'Access' ], + 'LGL33L!' => [ 'LG', 'Sunset' ], + 'LGL34C!' => [ 'LG', 'Optimus Fuel' ], + 'LG-L34C' => [ 'LG', 'Optimus Fuel' ], + 'LGL35G!' => [ 'LG', 'Optimus Logic' ], + 'LG-L38C!' => [ 'LG', 'Optimus Dynamic' ], + 'LGL38C!' => [ 'LG', 'Optimus Dynamic' ], + 'LGL39C!' => [ 'LG', 'Optimus Dynamic II' ], + 'LG-L40G' => [ 'LG', 'Optimus Extreme' ], + 'LGL41C!' => [ 'LG', 'Ultimate 2' ], + 'LG-L41C' => [ 'LG', 'Ultimate 2' ], + 'LG-L42G' => [ 'LG', 'L70' ], + 'LGL43AL!' => [ 'LG', 'Rebel' ], + 'LGL44V' => [ 'LG', 'Rebel' ], + 'LGL44VL!' => [ 'LG', 'Rebel' ], + 'LGL45C!' => [ 'LG', 'Optimus Net' ], + 'LGL51AL!' => [ 'LG', 'Treasure' ], + 'LGL52VL!' => [ 'LG', 'Treasure' ], + 'LGL53BL!' => [ 'LG', 'X Style' ], + 'LGL55C!' => [ 'LG', 'Optimus Q' ], + 'LGL56VL!' => [ 'LG', 'X Style' ], + 'LGL57BL!' => [ 'LG', 'Rebel 2' ], + 'LGL58VL!' => [ 'LG', 'Rebel 2' ], + 'LGL59BL!' => [ 'LG', 'Grace' ], + 'LGL61AL!' => [ 'LG', 'Premier' ], + 'LGL62VL!' => [ 'LG', 'Premier' ], + 'LGL63BL!' => [ 'LG', 'Fiesta' ], + 'LGL64VL!' => [ 'LG', 'Fiesta' ], + 'LGL75C!' => [ 'LG', 'Optimus Zip' ], + 'LGL81AL!' => [ 'LG', 'Stylo 2' ], + 'LGL82VL!' => [ 'LG', 'Stylo 2' ], + 'LGL83BL!' => [ 'LG', 'Stylo 3' ], + 'LGL84VL!' => [ 'LG', 'Stylo 3' ], + 'LGL85C!' => [ 'LG', 'Optimus Black' ], + 'LGL86C!' => [ 'LG', 'Optimus Showtime' ], + 'LG-L95G!' => [ 'LG', 'L95G' ], + 'LGL96G' => [ 'LG', 'Ultimate' ], + 'LG-L160L' => [ 'LG', 'Optimus LTE2' ], + 'LGL163BL' => [ 'LG', 'Fiesta 2' ], + 'LGL164VL' => [ 'LG', 'Fiesta' ], + 'LGL996L!' => [ 'LG', 'G2' ], + ], + + 'LG-LG[0-9]{3,3}!!' => [ + 'LG-LG730' => [ 'LG', 'Venice' ], + 'LG-LG855' => [ 'LG', 'Marquee' ], + 'LG-LG870' => [ 'LG', 'Optimus F7' ], + ], + + 'LGLK430' => [ 'LG', 'G Pad F 7.0', DeviceType::TABLET ], + 'LG-LK460' => [ 'LG', 'G Pad F2 8.0', DeviceType::TABLET ], + + 'LG-?LS[0-9]{3,3}!!' => [ + 'LGLS450' => [ 'LG', 'K3' ], + 'LG-LS620' => [ 'LG', 'Realm' ], + 'LGLS620' => [ 'LG', 'Realm' ], + 'LG-LS660' => [ 'LG', 'Tribute' ], + 'LGLS660' => [ 'LG', 'Tribute' ], + 'LGLS665' => [ 'LG', 'Tribute 2' ], + 'LG-LS670' => [ 'LG', 'Optimus S' ], + 'LGLS675' => [ 'LG', 'M1' ], + 'LGLS676' => [ 'LG', 'Tribute HD' ], + 'LG-LS685' => [ 'LG', 'Optimus Net' ], + 'LG-LS696' => [ 'LG', 'Elite' ], + 'LG-LS700' => [ 'LG', 'Optimus Slider' ], + 'LG-LS720' => [ 'LG', 'Optimus F3' ], + 'LGLS740' => [ 'LG', 'Volt' ], + 'LG-LS740' => [ 'LG', 'Volt' ], + 'LGLS751' => [ 'LG', 'Volt 2' ], + 'LGLS755' => [ 'LG', 'X Power' ], + 'LGLS770' => [ 'LG', 'G Stylo' ], + 'LGLS775' => [ 'LG', 'G Stylo 2' ], + 'LG-LS777' => [ 'LG', 'Stylo 3' ], + 'LG-LS840' => [ 'LG', 'Viper' ], + 'LG-LS855' => [ 'LG', 'Marquee' ], + 'LG-LS860' => [ 'LG', 'Mach' ], + 'LGLS885' => [ 'LG', 'G3 Vigor' ], + 'LG-LS885' => [ 'LG', 'G3 Vigor' ], + 'LG-LS970' => [ 'LG', 'Optimus G' ], + 'LG-LS980' => [ 'LG', 'G2' ], + 'LGLS990' => [ 'LG', 'G3' ], + 'LG-LS990' => [ 'LG', 'G3' ], + 'LGLS991' => [ 'LG', 'G4' ], + 'LG-LS991' => [ 'LG', 'G4' ], + 'LGLS992' => [ 'LG', 'G5' ], + 'LG-LS993' => [ 'LG', 'G6' ], + 'LG-LS995' => [ 'LG', 'G Flex' ], + 'LGLS996' => [ 'LG', 'G Flex 2' ], + 'LG-LS996' => [ 'LG', 'G Flex 2' ], + 'LG-LS997' => [ 'LG', 'V20' ], + 'LG-LS998' => [ 'LG', 'V30+' ], + ], + + 'LG-LU[0-9]{4,4}!!' => [ + 'LG-LU3000' => [ 'LG', 'Optimus Mach' ], + 'LG-LU3100' => [ 'LG', 'Optimus Chic' ], + 'LG-LU3700' => [ 'LG', 'Optimus One' ], + 'LG-LU5400' => [ 'LG', 'PRADA 3.0' ], + 'LG-LU6200' => [ 'LG', 'Optimus LTE' ], + 'LG-LU6500' => [ 'LG', 'Optimus Q2' ], + 'LG-LU6800' => [ 'LG', 'Optimus Big' ], + 'LG-LU6900' => [ 'LG', 'Optimus Pad', DeviceType::TABLET ], + 'LG-LU8300' => [ 'LG', 'Optimus Pad LTE', DeviceType::TABLET ], + ], + + 'LG-LW690' => [ 'LG', 'Optimus C' ], + 'LG-LW770' => [ 'LG', 'Regard' ], + + 'LG-M[0-9]{3,3}!!' => [ + 'LG-M1(50)!' => [ 'LG', 'Phoenix 3' ], + 'LG-M1(51|60)!' => [ 'LG', 'K4 2017' ], + 'LG-M1(53)!' => [ 'LG', 'Fortune' ], + 'LG-M1(54)!' => [ 'LG', 'Risio 2' ], + 'LG-M2(00)!' => [ 'LG', 'K8 2017' ], + 'LG-M2(10)!' => [ 'LG', 'Aristo' ], + 'LG-M2(50)!' => [ 'LG', 'K10 2017' ], + 'LG-M2(55)!' => [ 'LG', 'K20' ], + 'LG-M2(57)!' => [ 'LG', 'Harmony' ], + 'LG-M3(20)!' => [ 'LG', 'X Power II' ], + 'LG-M3(22|27)!' => [ 'LG', 'X charge' ], + 'LG-M4(00)!' => [ 'LG', 'Stylus 3' ], + 'LG-M4(30)!' => [ 'LG', 'Stylo 3' ], + 'LG-M4(70)!' => [ 'LG', 'Stylo 3 Plus' ], + 'LG-M7(00|03)!' => [ 'LG', 'Q6' ], + ], + + 'LG-?MS[0-9]{3,3}!!' => [ + 'LGMS323' => [ 'LG', 'L70' ], + 'LG-MS323' => [ 'LG', 'L70' ], + 'LGMS330' => [ 'LG', 'K7' ], + 'LGMS345' => [ 'LG', 'Leon' ], + 'LGMS395' => [ 'LG', 'F60' ], + 'LG-MS415' => [ 'LG', 'L90' ], + 'LGMS428' => [ 'LG', 'K10' ], + 'LGMS500' => [ 'LG', 'Optimus F6' ], + 'LG-MS500' => [ 'LG', 'Optimus F6' ], + 'LGMS550' => [ 'LG', 'G Stylo 2' ], + 'LGMS631' => [ 'LG', 'G Stylo' ], + 'LG-MS659' => [ 'LG', 'Optimus F3' ], + 'LGMS659' => [ 'LG', 'Optimus F3' ], + 'LG-MS690' => [ 'LG', 'Optimus M' ], + 'LGMS769' => [ 'LG', 'Optimus L9' ], + 'LG-MS770' => [ 'LG', 'Motion 4G' ], + 'LGMS770' => [ 'LG', 'Motion 4G' ], + 'LG-MS790' => [ 'LG', 'Optimus F3' ], + 'LG-MS840' => [ 'LG', 'Connect 4G' ], + 'LG-MS870' => [ 'LG', 'Spirit 4G' ], + 'LG-MS910' => [ 'LG', 'Esteem' ], + 'LG-MS695' => [ 'LG', 'Optimus M+' ], + ], + + 'LGMP260' => [ 'LG', 'K20 Plus' ], + + 'LG-P[0-9]{3,3}!!' => [ + 'LG-P350!' => [ 'LG', 'Optimus Me' ], + 'LG-P355' => [ 'LG', 'P355' ], + 'LG-P490!' => [ 'LG', 'P490' ], // Unknown + 'LG-P5(00|03|04)!' => [ 'LG', 'Optimus One' ], + 'LG-P505!' => [ 'LG', 'Phoenix' ], + 'LG-P506' => [ 'LG', 'Thrive' ], + 'LG-P509' => [ 'LG', 'Optimus T' ], + 'LG-P6(55|59)!' => [ 'LG', 'Optimus F3' ], + 'LG-P6(90|92|99)!' => [ 'LG', 'Optimus Net' ], + 'LG-P693!' => [ 'LG', 'P693' ], + 'LG-P698!' => [ 'LG', 'Optimus Net Dual' ], + 'LG-P7(00|05|08)!' => [ 'LG', 'Optimus L7' ], + 'LG-P7(10|12|13|14)!' => [ 'LG', 'Optimus L7 II' ], + 'LG-P7(15|16)!' => [ 'LG', 'Optimus L7 II Dual' ], + 'LG-P720!' => [ 'LG', 'Optimus Chic' ], + 'LG-P725' => [ 'LG', 'Optimus 3D Max' ], + 'LG-P7(60|65|68|69|78)!' => [ 'LG', 'Optimus L9' ], + 'LG-P860' => [ 'LG', 'P860' ], + 'LG-P870!' => [ 'LG', 'Escape' ], + 'LG-P875!' => [ 'LG', 'Optimus F5' ], + 'LG-P880!' => [ 'LG', 'Optimus 4X HD' ], + 'LG-P895!' => [ 'LG', 'Optimus Vu' ], + 'LG-P920!' => [ 'LG', 'Optimus 3D' ], + 'LG-P9(25|29)!' => [ 'LG', 'Thrill' ], + 'LG-P930!' => [ 'LG', 'Nitro HD' ], + 'LG-P9(35|36)!' => [ 'LG', 'Optimus LTE' ], + 'LG-P940!' => [ 'LG', 'PRADA 3.0' ], + 'LG-P970!' => [ 'LG', 'Optimus Black' ], + 'LG-P990!' => [ 'LG', 'Optimus 2X Speed' ], + 'LG-P993' => [ 'LG', 'Optimus 2X' ], + + 'LG-P451!' => [ 'LG', 'G Pad IV 8.0', DeviceType::TABLET ], + 'LG-P530!' => [ 'LG', 'G Pad IV 8.0', DeviceType::TABLET ], + 'LG-P755!' => [ 'LG', 'G Pad III 10.1', DeviceType::TABLET ], + 'LG-P815!' => [ 'LG', 'G Pad II 8.3', DeviceType::TABLET ], + ], + + 'LG-SU[0-9]{3,3}!!' => [ + 'LG-SU370' => [ 'LG', 'Optimus One' ], + 'LG-SU540' => [ 'LG', 'PRADA 3.0' ], + 'LG-SU640' => [ 'LG', 'Optimus LTE' ], + 'LG-SU660' => [ 'LG', 'Optimus 2X' ], + 'LG-SU760' => [ 'LG', 'Optimus 3D' ], + 'LG-SU870' => [ 'LG', 'Optimus 3D Cube' ], + 'LG-SU880' => [ 'LG', 'Optimus EX' ], + ], + + 'LG-T480!' => [ 'LG', 'Wine Smart' ], + 'LG-T540!' => [ 'LG', 'Magna' ], + + 'LG-TP260' => [ 'LG', 'K20 Plus' ], + 'LG-TP450' => [ 'LG', 'Stylo 3 Plus' ], + + 'RS988' => [ 'LG', 'G5' ], + + 'LG-SU-760' => [ 'LG', 'Optimus 3D' ], + 'LGUK410' => [ 'LG', 'G Pad 7.0', DeviceType::TABLET ], + 'LG-UK495' => [ 'LG', 'G Pad F 8.0', DeviceType::TABLET ], + 'LGUK750' => [ 'LG', 'G Pad X II 10.1', DeviceType::TABLET ], + 'LGUK932' => [ 'LG', 'G Pad II 10.1', DeviceType::TABLET ], + 'LG-UN350' => [ 'LG', 'UN350' ], + + 'LG-?US[0-9]{3,3}!!' => [ + 'LGUS110' => [ 'LG', 'K3 2017' ], + 'LGUS215' => [ 'LG', 'K8 2017' ], + 'LGUS375' => [ 'LG', 'K8' ], + 'LGUS550' => [ 'LG', 'Logos' ], + 'LGUS610' => [ 'LG', 'X Power' ], + 'LG-US670' => [ 'LG', 'Optimus U' ], + 'LG-US701' => [ 'LG', 'X venture' ], + 'LG-US730' => [ 'LG', 'Splendor' ], + 'LG-US780' => [ 'LG', 'Optimus F7' ], + 'LGUS990!' => [ 'LG', 'G3' ], + 'LG-US990' => [ 'LG', 'G3' ], + 'LGUS991!' => [ 'LG', 'G4' ], + 'LGUS992' => [ 'LG', 'G5' ], + 'LGUS995!' => [ 'LG', 'G Flex 2' ], + 'LG-US996!' => [ 'LG', 'V20' ], + 'LG-US997' => [ 'LG', 'G6' ], + ], + + 'LG-V[0-9]{3,3}!!' => [ + 'LG-V4(00|10|11)!' => [ 'LG', 'G Pad 7.0', DeviceType::TABLET ], + 'LG-V4(80|90)!' => [ 'LG', 'G Pad 8.0', DeviceType::TABLET ], + 'LG-V4(95|96|97|99)!' => [ 'LG', 'G Pad F 8.0', DeviceType::TABLET ], + 'LG-V498!' => [ 'LG', 'G Pad II 8.0', DeviceType::TABLET ], + 'LG-V5(00|07)!' => [ 'LG', 'G Pad 8.3', DeviceType::TABLET ], + 'LG-V510!' => [ 'LG', 'G Pad 8.3 (Google Edition)', DeviceType::TABLET ], + 'LG-V5(20|21)!' => [ 'LG', 'G Pad X 8.0', DeviceType::TABLET ], + 'LG-V5(22|25)!' => [ 'LG', 'G Pad III 8.0', DeviceType::TABLET ], + 'LG-V5(30)!' => [ 'LG', 'G Pad X 2 8.0', DeviceType::TABLET ], + 'LG-V5(33)!' => [ 'LG', 'G Pad IV 8.0', DeviceType::TABLET ], + 'LG-V607L' => [ 'LG', 'G Pad II 8.0', DeviceType::TABLET ], + 'LG-V700!' => [ 'LG', 'G Pad 10.1', DeviceType::TABLET ], + 'LG-V755!' => [ 'LG', 'G Pad III 10.1', DeviceType::TABLET ], + 'LG-V9(00|01)!' => [ 'LG', 'Optimus Pad', DeviceType::TABLET ], + 'LG-V9(05|09)!' => [ 'LG', 'Optimus G-Slate', DeviceType::TABLET ], + 'LG-V930' => [ 'LG', 'G Pad X 10.1', DeviceType::TABLET ], + 'LG-V9(35|40)!' => [ 'LG', 'G Pad II 10.1', DeviceType::TABLET ], + ], + + 'LG-VK[0-9]{3,3}!!' => [ + 'LG-VK410' => [ 'LG', 'G Pad 7.0', DeviceType::TABLET ], + 'LG-VK700' => [ 'LG', 'G Pad 10.1', DeviceType::TABLET ], + 'LG-VK810' => [ 'LG', 'G Pad 8.3', DeviceType::TABLET ], + 'LG-VK815' => [ 'LG', 'G Pad X 8.3', DeviceType::TABLET ], + ], + + 'LG-VN[0-9]{3,3}!!' => [ + 'LG-VN170' => [ 'LG', 'VN-170' ], // Unknown + 'LG-VN280' => [ 'LG', 'Extravert 2' ], + 'LG-VN360' => [ 'LG', 'Exalt' ], + ], + + 'LG-VM[0-9]{3,3}!!' => [ + 'LG-VM670' => [ 'LG', 'Optimus V' ], + 'LG-VM696' => [ 'LG', 'Optimus Elite' ], + 'LG-VM701' => [ 'LG', 'Optimus Slider' ], + 'LG-VM720' => [ 'LG', 'Optimus F5' ], + ], + + 'LG-VS[0-9]{3,3}!!' => [ + 'LG-VS410!' => [ 'LG', 'Optimus Zone' ], + 'LG-VS415!' => [ 'LG', 'Optimus Zone 2' ], // aka L40 + 'LG-VS450!' => [ 'LG', 'Optimus Exceed 2' ], // aka L70 + 'LG-VS660' => [ 'LG', 'Vortex' ], + 'LG-VS700!' => [ 'LG', 'Enlighten' ], + 'LG-VS740' => [ 'LG', 'Ally' ], + 'LG-VS810' => [ 'LG', 'Transpyre' ], + 'LG-VS840' => [ 'LG', 'Lucid' ], + 'LG-VS870' => [ 'LG', 'Lucid 2' ], + 'LG-VS876' => [ 'LG', 'Lucid 3' ], // aka F90 + 'LG-VS880' => [ 'LG', 'G3 Vista' ], + 'LG-VS890' => [ 'LG', 'Enact' ], + 'LG-VS910' => [ 'LG', 'Revolution' ], + 'LG-VS930' => [ 'LG', 'Spectrum II' ], + 'LG-VS950' => [ 'LG', 'Intuition' ], + 'LG-VS980!' => [ 'LG', 'G2' ], + 'LG-VS985' => [ 'LG', 'G3' ], + 'LG-VS995' => [ 'LG', 'V20' ], + 'LG-VS999' => [ 'LG', 'G4' ], + ], + + 'LG-X[0-9]{3,3}!!' => [ + 'LG-X130!' => [ 'LG', 'L40' ], + 'LG-X132' => [ 'LG', 'L45' ], + 'LG-X1(35|40|45|47)!' => [ 'LG', 'L60' ], + 'LG-X137' => [ 'LG', 'L60i' ], + 'LG-X150' => [ 'LG', 'Bello 2' ], + 'LG-X1(55|60|65)!' => [ 'LG', 'Max' ], + 'LG-X1(70)!' => [ 'LG', 'Prime 2' ], + 'LG-X180!' => [ 'LG', 'Zone' ], + 'LG-X190!' => [ 'LG', 'Ray' ], + 'LG-X210!' => [ 'LG', 'K7' ], + 'LG-X220!' => [ 'LG', 'K5' ], + 'LG-X230!' => [ 'LG', 'K7 2017' ], + 'LG-X240!' => [ 'LG', 'K8 2017' ], + 'LG-X760!' => [ 'LG', 'G Pad III 10.1', DeviceType::TABLET ], + ], + + 'LGM-[GKVX][0-9]{3,3}!!' => [ + 'LGM-G600[KLSV]!' => [ 'LG', 'G6' ], + 'LGM-K120[KLS]!' => [ 'LG', 'X300' ], + 'LGM-K121[KLS]!' => [ 'LG', 'X400' ], + 'LGM-V300[KLS]!' => [ 'LG', 'V30' ], + 'LGM-X320[KLS]!' => [ 'LG', 'X500' ], + 'LGM-X401[S]!' => [ 'LG', 'X401' ], + 'LGM-X600[KLS]!' => [ 'LG', 'Q6' ], + 'LGM-X800[KLS]!' => [ 'LG', 'Q8' ], + ], + + 'LM-G710!' => [ 'LG', 'G7 ThinQ' ], + 'LM-G715!' => [ 'LG', 'G7 ThinQ' ], + 'LM-Q610!' => [ 'LG', 'Q7' ], + 'LM-Q710!' => [ 'LG', 'Q Stylus+' ], + 'LM-V350!' => [ 'LG', 'V35 ThinQ' ], + 'LM-X210!' => [ 'LG', 'Aristo 2' ], + 'LM-X410!' => [ 'LG', 'X4' ], + 'LM-X415!' => [ 'LG', 'X4+' ], + 'LM-X510!' => [ 'LG', 'X5' ], + 'LM-Y110!' => [ 'LG', 'Folder' ], + + 'LGMP450' => [ 'LG', 'Stylo 3 Plus' ], + + 'lge-F160!' => [ 'LG', 'Optimus LTE II' ], + 'LGE-E988!' => [ 'LG', 'Optimus G Pro' ], + 'lgp-970' => [ 'LG', 'Optimus Black' ], + 'AS740' => [ 'LG', 'Axis' ], + 'AS870 4G' => [ 'LG', 'Optimus F5' ], + 'AS985' => [ 'LG', 'G3' ], + 'E900' => [ 'LG', 'Optimus 7' ], + 'GT540' => [ 'LG', 'Optimus' ], + 'GT540f' => [ 'LG', 'Optimus' ], + 'GW620' => [ 'LG', 'Eve' ], + 'KU9500' => [ 'LG', 'Optimus Z' ], + + 'LG[LSTV][0-9]{2,2}!!' => [ + 'LGL21' => [ 'LG', 'Optimus G LGL21', 'carrier' => 'au' ], + 'LGL22' => [ 'LG', 'isai LGL22', 'carrier' => 'au' ], + 'LGL23' => [ 'LG', 'G Flex LGL23', 'carrier' => 'au' ], + 'LGL24' => [ 'LG', 'isai FL LGL24', 'carrier' => 'au' ], + 'LGL25' => [ 'LG', 'Fx0 LGL25', 'carrier' => 'au' ], + 'LGS01' => [ 'LG', 'Wine Smart LGS01', 'carrier' => 'J:COM' ], + 'LGV31' => [ 'LG', 'isai VL LGV31', 'carrier' => 'au' ], + 'LGV32' => [ 'LG', 'isai vivid LGV32', 'carrier' => 'au' ], + 'LGV33' => [ 'LG', 'Qua phone PX LGV33', 'carrier' => 'au' ], + 'LGV34' => [ 'LG', 'isai Beat LGV34', 'carrier' => 'au' ], + 'LGV35' => [ 'LG', 'isai V30+ LGV35', 'carrier' => 'au' ], + 'LGT01' => [ 'LG', 'G Pad 8.0 L LGT01', 'carrier' => 'J:COM', DeviceType::TABLET ], + 'LGT02' => [ 'LG', 'G Pad 8.0 III LGT02', 'carrier' => 'J:COM', DeviceType::TABLET ], + 'LGT31' => [ 'LG', 'Qua tab PX LGT31', 'carrier' => 'au', DeviceType::TABLET ], + 'LGT32' => [ 'LG', 'Qua tab PZ LGT32', 'carrier' => 'au', DeviceType::TABLET ], + ], + + 'LU2300' => [ 'LG', 'Optimus Q' ], + 'LS670' => [ 'LG', 'Optimus S' ], + 'LS740' => [ 'LG', 'F90' ], // aka Volt + 'MS840 4G' => [ 'LG', 'Connect 4G' ], + 'P940' => [ 'LG', 'PRADA 3.0' ], + 'P990' => [ 'LG', 'Optimus 2X Speed' ], + + 'USCC-(LG)?US!!' => [ + 'USCC-US730' => [ 'LG', 'Splendor' ], + 'USCC-US760' => [ 'LG', 'Genesis' ], + 'USCC-US780' => [ 'LG', 'Optimus F7' ], + 'USCC-US855' => [ 'LG', 'Optimus Black' ], + 'USCC-LGUS990' => [ 'LG', 'G3' ], + ], + + 'VK410' => [ 'LG', 'G Pad 7.0', DeviceType::TABLET ], + 'VK700' => [ 'LG', 'G Pad 10.1', DeviceType::TABLET ], + 'VK810 4G' => [ 'LG', 'G Pad 8.3', DeviceType::TABLET ], + 'VK815' => [ 'LG', 'G Pad X 8.3', DeviceType::TABLET ], + 'VM670' => [ 'LG', 'Optimus V' ], + + 'VS[0-9]{3,3}!!' => [ + 'VS415PP' => [ 'LG', 'Optimus Zone 2' ], + 'VS425PP' => [ 'LG', 'Optimus Zone 3' ], + 'VS500PP' => [ 'LG', 'K8 V' ], + 'VS810PP' => [ 'LG', 'Transpyre' ], + 'VS820' => [ 'LG', 'Lancet' ], + 'VS835' => [ 'LG', 'G Stylo 2 V' ], + 'VS840PP' => [ 'LG', 'Optimus Exceed' ], + 'VS840 4G' => [ 'LG', 'Lucid' ], + 'VS870 4G' => [ 'LG', 'Escape' ], + 'VS876' => [ 'LG', 'Lucid 3' ], // aka F90 + 'VS880' => [ 'LG', 'G3 Vista' ], + 'VS880PP' => [ 'LG', 'G3 Vista' ], + 'VS890 4G' => [ 'LG', 'Enact' ], + 'VS900-4G' => [ 'LG', 'Enlighten' ], + 'VS910 4G' => [ 'LG', 'Revolution 4G' ], + 'VS920 4G' => [ 'LG', 'Spectrum' ], + 'VS930 4G' => [ 'LG', 'Spectrum 2' ], + 'VS950 4G' => [ 'LG', 'Intuition' ], + 'VS980 4G' => [ 'LG', 'G2' ], + 'VS985 4G' => [ 'LG', 'G3' ], + 'VS986' => [ 'LG', 'G4' ], + 'VS987' => [ 'LG', 'G5' ], + 'VS990' => [ 'LG', 'V10' ], + 'VS995' => [ 'LG', 'V20' ], + ], + + 'L-0[0-9][A-Z]!!' => [ + 'L-01D' => [ 'LG', 'Optimus LTE L-01D', 'carrier' => 'DoCoMo' ], + 'L-01E' => [ 'LG', 'Optimus G L-01E', 'carrier' => 'DoCoMo' ], + 'L-01F' => [ 'LG', 'G2 L-01F', 'carrier' => 'DoCoMo' ], + 'L-01J' => [ 'LG', 'V20 PRO L-01J', 'carrier' => 'DoCoMo' ], + 'L-01K' => [ 'LG', 'V30+ L-01K', 'carrier' => 'DoCoMo' ], + 'L-02D' => [ 'LG', 'PRADA phone L-02D', 'carrier' => 'DoCoMo' ], + 'L-02E' => [ 'LG', 'Optimus LIFE L-02E', 'carrier' => 'DoCoMo' ], + 'L-02F' => [ 'LG', 'WiFi STATION L-02F', 'carrier' => 'DoCoMo' ], + 'L-02K' => [ 'LG', 'JOJO L-02K', 'carrier' => 'DoCoMo' ], + 'L-03K' => [ 'LG', 'style L-03K', 'carrier' => 'DoCoMo' ], + 'L-04C' => [ 'LG', 'Optimus chat L-04C', 'carrier' => 'DoCoMo' ], + 'L-04E' => [ 'LG', 'Optimus G Pro L-04E', 'carrier' => 'DoCoMo' ], + 'L-05D' => [ 'LG', 'Optimus it L-05D', 'carrier' => 'DoCoMo' ], + 'L-05E' => [ 'LG', 'Optimus it L-05E', 'carrier' => 'DoCoMo' ], + 'L-06C' => [ 'LG', 'Optimus Pad L-06C', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'L-06D' => [ 'LG', 'Optimus Vu L-06D', 'carrier' => 'DoCoMo' ], + 'L-06DJOJO' => [ 'LG', 'JOJO L-06D', 'carrier' => 'DoCoMo' ], + 'L-07C' => [ 'LG', 'Optimus bright L-07C', 'carrier' => 'DoCoMo' ], + ], + + '[0-9]0[0-9]LG!!' => [ + '401LG' => [ 'LG', '401LG', 'carrier' => 'Softbank' ], // Unknown + '402LG' => [ 'LG', 'Spray 402LG', 'carrier' => 'Y! Mobile' ], + ], + + 'DM-01G' => [ 'LG', 'DM-01G', 'carrier' => 'Disney Mobile' ], + 'DM-01K' => [ 'LG', 'DM-01K', 'carrier' => 'Disney Mobile' ], + 'DM-02H' => [ 'LG', 'DM-02H', 'carrier' => 'Disney Mobile' ], + + 'LG!!' => [ + 'LG-Eve' => [ 'LG', 'Eve' ], + 'LG-G2' => [ 'LG', 'G2' ], + 'LG-G3' => [ 'LG', 'G3' ], + 'LG-G3 D855' => [ 'LG', 'G3' ], + 'LG-Optimus One P500' => [ 'LG', 'Optimus One' ], + 'LG-Optimus 2X' => [ 'LG', 'Optimus 2X' ], + 'LG-GT540 Optimus' => [ 'LG', 'Optimus' ], + 'LG-Optimus' => [ 'LG', 'Optimus' ], + 'LG-Optimus Black' => [ 'LG', 'Optimus Black' ], + 'LG-OptimusG' => [ 'LG', 'Optimus G' ], + 'LG-Optimus G' => [ 'LG', 'Optimus G' ], + 'LG-gee' => [ 'LG', 'Optimus G' ], + 'LG-Optimus G Pro' => [ 'LG', 'Optimus G Pro' ], + 'LG-G PRO' => [ 'LG', 'Optimus G Pro' ], + 'LG-Optimus GK' => [ 'LG', 'Optimus GK' ], + 'LG-Optimus L3!' => [ 'LG', 'Optimus L3' ], + 'LG-Optimus LTE2' => [ 'LG', 'Optimus LTE2' ], + 'LG-Optimus Net' => [ 'LG', 'Optimus Net' ], + 'LG-Optimus One' => [ 'LG', 'Optimus One' ], + 'LG-Optimus V' => [ 'LG', 'Optimus V' ], + 'LG-OPTIMUS-L5!' => [ 'LG', 'Optimus L7' ], + 'LG-optimus L7' => [ 'LG', 'Optimus L7' ], + 'LG-Swift L9' => [ 'LG', 'Optimus L9' ], + 'LG-OPTIMUS HD LTE' => [ 'LG', 'Optimus HD' ], + 'LG-OPTIMUS LTE HD' => [ 'LG', 'Optimus HD' ], + 'LG-Optimus Pad L-06C' => [ 'LG', 'Optimus Pad', DeviceType::TABLET ], + 'LG-vortex' => [ 'LG', 'Vortex' ], + ], + + 'Ally' => [ 'LG', 'Ally' ], + + 'Optimus!!' => [ + 'Optimus' => [ 'LG', 'Optimus' ], + 'OptimusBlack' => [ 'LG', 'Optimus Black' ], + 'Optimus G' => [ 'LG', 'Optimus G' ], + 'Optimus G Pro' => [ 'LG', 'Optimus G Pro' ], + 'Optimus Me' => [ 'LG', 'Optimus Me' ], + 'optimus me p350' => [ 'LG', 'Optimus Me' ], + 'Optimus Net' => [ 'LG', 'Optimus Net' ], + 'Optimus One' => [ 'LG', 'Optimus One' ], + 'Optimus Pro' => [ 'LG', 'Optimus Pro' ], + 'Optimus 2X' => [ 'LG', 'Optimus 2X' ], + 'Optimus 2x' => [ 'LG', 'Optimus 2X' ], + 'Optimus 4X HD' => [ 'LG', 'Optimus 4X HD' ], + 'OptimusX4HD' => [ 'LG', 'Optimus 4X HD' ], + 'Optimus4XHD' => [ 'LG', 'Optimus 4X HD' ], + 'Optimusx4' => [ 'LG', 'Optimus X4' ], + ], + + 'IS11LG' => [ 'LG', 'Optimus X IS11LG', 'carrier' => 'au' ], + 'Vortex' => [ 'LG', 'Vortex' ], + 'LDK-ICK v1.4' => [ 'LG', 'Esteem' ], + 'Prada 3.0' => [ 'LG', 'PRADA 3.0' ], + + 'LG-Google TV!!' => [ + 'LG-Google TV' => [ 'LG', 'Android TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'LG-Google TV TV' => [ 'LG', 'Android TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'LG-Google TV G3' => [ 'LG', 'Android TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'LG-Google TV G3 KR' => [ 'LG', 'Android TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'LG-Google TV G3 TV' => [ 'LG', 'Android TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'LG-Google TV G3 KR TV' => [ 'LG', 'Android TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + ], + + 'LG-ANDROID MINI BOX' => [ 'LG', 'Android Mini-Box', DeviceType::TELEVISION ], + 'SH940C-LN' => [ 'LG', 'Smartbox HD', DeviceType::TELEVISION ], + 'SH940C-LN TV' => [ 'LG', 'Smartbox HD', DeviceType::TELEVISION ], + 'SH960C-LN' => [ 'LG', 'Smartbox HD', DeviceType::TELEVISION ], + 'LAP250U' => [ 'LG', 'U+ tv G', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'LAP255U' => [ 'LG', 'U+ tv G', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'TI320-DU' => [ 'LG', 'U+ tv G', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'TI320-DU TV' => [ 'LG', 'U+ tv G', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'ST940I-UP' => [ 'LG', 'U+ tv G 4K', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'WA-U420D' => [ 'LG', 'U+ tvLINK', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'SFR-G8800' => [ 'LG', 'SFR-G8800', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'SFR-G8800 TV' => [ 'LG', 'SFR-G8800', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'E731' => [ 'Logicom', 'E731', DeviceType::TABLET ], + 'E812' => [ 'Logicom', 'E812', DeviceType::TABLET ], + 'E912' => [ 'Logicom', 'E912', DeviceType::TABLET ], + 'E1031' => [ 'Logicom', 'E1031', DeviceType::TABLET ], + 'TAB950' => [ 'Logicom', 'TAB950', DeviceType::TABLET ], + 'TAB1062' => [ 'Logicom', 'TAB1062', DeviceType::TABLET ], + 'LS-4001' => [ 'LYF', 'Flame 3' ], + 'LS-4002' => [ 'LYF', 'Flame 5' ], + 'LS-4003' => [ 'LYF', 'Flame 4' ], + 'LS-4004' => [ 'LYF', 'Flame 2' ], + 'LS-4005' => [ 'LYF', 'Flame 6' ], + 'LS-4006' => [ 'LYF', 'Flame 7' ], + 'LYF LS-4006' => [ 'LYF', 'Flame 7' ], + 'LS-4008' => [ 'LYF', 'Flame 7S' ], + 'LS-4503' => [ 'LYF', 'Flame 1' ], + 'LS-4505' => [ 'LYF', 'Flame 8' ], + 'LS-5002' => [ 'LYF', 'Water 1' ], + 'LS-5004' => [ 'LYF', 'Water 7' ], + 'LS-5005' => [ 'LYF', 'Water 4' ], + 'LS-5006' => [ 'LYF', 'Water 6' ], + 'LS-5007' => [ 'LYF', 'Water 5' ], + 'LS-5008' => [ 'LYF', 'Water 2' ], + 'LS-5009' => [ 'LYF', 'Wind 6' ], + 'LYF LS-5009' => [ 'LYF', 'Wind 6' ], + 'LS-5010' => [ 'LYF', 'Wind 1' ], + 'LS-5013' => [ 'LYF', 'Wind 5' ], + 'LS-5014' => [ 'LYF', 'Wind 4' ], + 'LS-5015' => [ 'LYF', 'Water 8' ], + 'LS-5016' => [ 'LYF', 'Wind 7' ], + 'LS-5017' => [ 'LYF', 'Water 11' ], + 'LS-5018' => [ 'LYF', 'Wind 4S' ], + 'LS-5020' => [ 'LYF', 'Water 10' ], + 'LS-5021' => [ 'LYF', 'Earth 2' ], + 'LS-5201' => [ 'LYF', 'Water F1S' ], + 'LS-5501' => [ 'LYF', 'Earth 1' ], + 'LS-5502' => [ 'LYF', 'Wind 3' ], + 'LS-5503' => [ 'LYF', 'Water 3' ], + 'LS-5504' => [ 'LYF', 'Water 7' ], + 'LS-5505' => [ 'LYF', 'Water F1' ], + 'LS-5506' => [ 'LYF', 'Water 9' ], + 'LS-5507' => [ 'LYF', 'Water 7S' ], + 'LS-6001' => [ 'LYF', 'Wind 2' ], + 'aTab9.7 IPS' => [ 'M-Tech', 'aTab 9.7', DeviceType::TABLET ], + 'CRONO 22' => [ 'Majestic', 'Chrono 22' ], + 'TAB192' => [ 'Majestic', 'TAB-192', DeviceType::TABLET ], + + 'Malata!!' => [ + 'MALATA I5' => [ 'Malata', 'I5' ], + 'MALATA I8' => [ 'Malata', 'I8' ], + 'MALATA I10' => [ 'Malata', 'I10' ], + 'MALATA I50' => [ 'Malata', 'I50' ], + 'MALATA I60' => [ 'Malata', 'I60' ], + 'MALATA TD60' => [ 'Malata', 'TD60' ], + 'MALATA TD95' => [ 'Malata', 'TD95' ], + 'MALATA S501' => [ 'Malata', 'S501' ], + 'Malata SMBA1002' => [ 'Malata', 'Tablet SMB-A1002', DeviceType::TABLET ], + 'Malata SMBA9701' => [ 'Malata', 'Tablet SMB-A9701', DeviceType::TABLET ], + ], + + 'T6' => [ 'Malata', 'Zpad T6', DeviceType::TABLET ], + + 'MID[0-9]!!' => [ + 'MID05V2' => [ 'Manta', 'Power Tab', DeviceType::TABLET ], + 'MID06N' => [ 'Manta', 'Power Tab X', DeviceType::TABLET ], + 'MID701' => [ 'Manta', 'Power Tab Basic', DeviceType::TABLET ], + 'MID704' => [ 'Manta', 'Power Tab 7', DeviceType::TABLET ], + 'MID705' => [ 'Manta', 'Power Tab', DeviceType::TABLET ], + 'MID706A' => [ 'Manta', 'Duo Power 7', DeviceType::TABLET ], + 'MID801' => [ 'Manta', 'Duo Power 8 HD', DeviceType::TABLET ], + 'MID802' => [ 'Manta', 'Duo Power 8 HD', DeviceType::TABLET ], + 'MID9701' => [ 'Manta', 'Duo Power 9.7', DeviceType::TABLET ], + 'MID9702' => [ 'Manta', 'Duo Power 9.7 HD', DeviceType::TABLET ], + 'MID1001' => [ 'Manta', 'Power Tab 10.1 HD', DeviceType::TABLET ], + ], + + 'Masstel!!' => [ + 'Masstel M11' => [ 'Masstel', 'M11' ], + 'Masstel-M11' => [ 'Masstel', 'M11' ], + 'Masstel M15' => [ 'Masstel', 'M15' ], + 'Masstel M25' => [ 'Masstel', 'M25' ], + 'Masstel M120' => [ 'Masstel', 'M120' ], + 'Masstel M250' => [ 'Masstel', 'M250' ], + 'Masstel M320' => [ 'Masstel', 'M320' ], + 'Masstel N405' => [ 'Masstel', 'N405' ], + 'Masstel Tab 700' => [ 'Masstel', 'Tab 700', DeviceType::TABLET ], + 'Masstel Tab 720' => [ 'Masstel', 'Tab 720', DeviceType::TABLET ], + 'Masstel Tab 720i' => [ 'Masstel', 'Tab 720i', DeviceType::TABLET ], + 'Masstel Tab 740' => [ 'Masstel', 'Tab 740', DeviceType::TABLET ], + 'Masstel Tab 750' => [ 'Masstel', 'Tab 750', DeviceType::TABLET ], + 'Masstel Tab 840' => [ 'Masstel', 'Tab 840', DeviceType::TABLET ], + 'Masstel Tab 850' => [ 'Masstel', 'Tab 850', DeviceType::TABLET ], + ], + + 'MASTONE!!' => [ + 'MASTONE G3' => [ 'Mastone', 'G3' ], + 'MASTONE G4' => [ 'Mastone', 'G4' ], + 'MASTONE G9' => [ 'Mastone', 'G9' ], + 'MASTONE G13' => [ 'Mastone', 'G13' ], + 'MASTONE G15' => [ 'Mastone', 'G15' ], + 'MASTONE W16' => [ 'Mastone', 'W16' ], + ], + + 'M-270' => [ 'Maylong', 'M-270', DeviceType::TABLET ], + 'T-200' => [ 'Maylong', 'T-200', DeviceType::TABLET ], + 'M70' => [ 'Maxsun', 'M70', DeviceType::TABLET ], + + 'Maxtron!!' => [ + 'Maxtron AMOR â…¡' => [ 'Maxtron', 'Amor 2' ], + 'Maxtron Diamond' => [ 'Maxtron', 'Diamond' ], + 'Maxtron Venus' => [ 'Maxtron', 'Venus' ], + 'Maxtron T1' => [ 'Maxtron', 'T1', DeviceType::TABLET ], + ], + + 'M785' => [ 'Mecer', 'Xpress Smartlife M785', DeviceType::TABLET ], + '800P31C' => [ 'Mecer', 'Xpress Smartlife 800P31C', DeviceType::TABLET ], + 'X1010' => [ 'Mecer', 'X1010', DeviceType::TABLET ], + + 'M\-PP!!' => [ + 'M-PPxG400' => [ 'Mediacom', 'PhonePad Duo G400' ], + 'M-PPAG500' => [ 'Mediacom', 'PhonePad Duo G500' ], + 'M-PPBG500' => [ 'Mediacom', 'PhonePad Duo G500' ], + 'M-PPCG500' => [ 'Mediacom', 'PhonePad Duo G500' ], + 'M-PPxG501' => [ 'Mediacom', 'PhonePad Duo G501' ], + 'M-PP2G530' => [ 'Mediacom', 'PhonePad Duo G530' ], + 'M-PPAG550' => [ 'Mediacom', 'PhonePad Duo G550' ], + 'M-PPG700' => [ 'Mediacom', 'PhonePad Duo G700' ], + 'M-PPG702' => [ 'Mediacom', 'PhonePad Duo G702' ], + 'M-PPxS470' => [ 'Mediacom', 'PhonePad Duo S470' ], + 'M-PP2S500' => [ 'Mediacom', 'PhonePad Duo S500' ], + 'M-PP2S500B' => [ 'Mediacom', 'PhonePad Duo S500' ], + 'M-PP2S500C' => [ 'Mediacom', 'PhonePad Duo S500' ], + 'M-PPxS501' => [ 'Mediacom', 'PhonePad Duo S501' ], + 'M-PPxS531' => [ 'Mediacom', 'PhonePad Duo S531' ], + 'M-PP2S550' => [ 'Mediacom', 'PhonePad Duo S550' ], + 'M-PPxS551U' => [ 'Mediacom', 'PhonePad Duo S551' ], + 'M-PP2S650' => [ 'Mediacom', 'PhonePad Duo S650' ], + 'M-PP2S650C' => [ 'Mediacom', 'PhonePad Duo S650' ], + 'M-PPAX470U' => [ 'Mediacom', 'PhonePad Duo X470' ], + 'M PPAX510U' => [ 'Mediacom', 'PhonePad Duo X510' ], + 'M-PPxX520U' => [ 'Mediacom', 'PhonePad Duo X520' ], + ], + + 'M\-MP!!' => [ + 'M-MP5303G' => [ 'Mediacom', 'SmartPad Mini Mobile', DeviceType::TABLET ], + 'M-MP705I' => [ 'Mediacom', 'SmartPad 705i', DeviceType::TABLET ], + 'M-MP706I' => [ 'Mediacom', 'SmartPad 706i', DeviceType::TABLET ], + 'M-MP707i' => [ 'Mediacom', 'SmartPad 707i', DeviceType::TABLET ], + 'M-MP711i' => [ 'Mediacom', 'SmartPad 711i', DeviceType::TABLET ], + 'M-MP715I' => [ 'Mediacom', 'SmartPad 715i', DeviceType::TABLET ], + 'M-MP720I' => [ 'Mediacom', 'SmartPad 720i', DeviceType::TABLET ], + 'M-MP722I' => [ 'Mediacom', 'SmartPad 722i', DeviceType::TABLET ], + 'M-MP815I' => [ 'Mediacom', 'SmartPad 815i', DeviceType::TABLET ], + 'M-MP855i' => [ 'Mediacom', 'SmartPad 855i', DeviceType::TABLET ], + 'M-MP860S2' => [ 'Mediacom', 'SmartPad 860 S2', DeviceType::TABLET ], + 'M-MP85S23G' => [ 'Mediacom', 'SmartPad 875 S2', DeviceType::TABLET ], + 'M-MP875S2' => [ 'Mediacom', 'SmartPad 875 S2', DeviceType::TABLET ], + 'M-MP917I' => [ 'Mediacom', 'SmartPad 917i', DeviceType::TABLET ], + 'M-MP927I' => [ 'Mediacom', 'SmartPad 927i', DeviceType::TABLET ], + 'M-MP940M' => [ 'Mediacom', 'SmartPad 940', DeviceType::TABLET ], + 'M-MP1010i' => [ 'Mediacom', 'SmartPad 1010i', DeviceType::TABLET ], + 'M-MP102S2B' => [ 'Mediacom', 'SmartPad 102 S2', DeviceType::TABLET ], + 'M-MP102S2W' => [ 'Mediacom', 'SmartPad 102 S2', DeviceType::TABLET ], + 'M-MP1040S2' => [ 'Mediacom', 'SmartPad 10.1 S2', DeviceType::TABLET ], + 'M-MP10S4' => [ 'Mediacom', 'SmartPad 10.1 S4', DeviceType::TABLET ], + 'M-MP12S4' => [ 'Mediacom', 'SmartPad 10.1 S4', DeviceType::TABLET ], + 'M-MP1040M' => [ 'Mediacom', 'SmartPad 10.1 HD S4', DeviceType::TABLET ], + 'M-MP1040MC' => [ 'Mediacom', 'SmartPad 10.1 HD S4', DeviceType::TABLET ], + 'M-MP710GO' => [ 'Mediacom', 'SmartPad 7.0 Go', DeviceType::TABLET ], + 'M-MP720GO' => [ 'Mediacom', 'SmartPad 7.0 Go', DeviceType::TABLET ], + 'M-MP726GOx' => [ 'Mediacom', 'SmartPad 7.0 Go', DeviceType::TABLET ], + 'M-MP740GOx' => [ 'Mediacom', 'SmartPad 7.0 Go', DeviceType::TABLET ], + 'M-MP720M' => [ 'Mediacom', 'SmartPad 7.0 Mobile', DeviceType::TABLET ], + 'M-MP721M' => [ 'Mediacom', 'SmartPad 7.0 Mobile', DeviceType::TABLET ], + 'M-MP722M' => [ 'Mediacom', 'SmartPad 7.0 Mobile', DeviceType::TABLET ], + 'M-MP75S23G' => [ 'Mediacom', 'SmartPad 7.0 S2', DeviceType::TABLET ], + 'M-MP7S2A3G' => [ 'Mediacom', 'SmartPad 7.0 S2', DeviceType::TABLET ], + 'M-MP7S2B3G' => [ 'Mediacom', 'SmartPad 7.0 S2', DeviceType::TABLET ], + 'M-MP7S2D3G' => [ 'Mediacom', 'SmartPad 7.0 S2', DeviceType::TABLET ], + 'M-MP7S2K3G' => [ 'Mediacom', 'SmartPad 7.0 S2', DeviceType::TABLET ], + 'M-MP7S4A3G' => [ 'Mediacom', 'SmartPad 7.0 S4', DeviceType::TABLET ], + 'M-MP840M' => [ 'Mediacom', 'SmartPad 8.0 Mobile', DeviceType::TABLET ], + 'M-MP842M' => [ 'Mediacom', 'SmartPad 8.0 Mobile', DeviceType::TABLET ], + 'M-MP876S2' => [ 'Mediacom', 'SmartPad 8.0 S2', DeviceType::TABLET ], + 'M-MP8S23G' => [ 'Mediacom', 'SmartPad 8.0 S2', DeviceType::TABLET ], + 'M-MP8S2A3G' => [ 'Mediacom', 'SmartPad 8.0 S2', DeviceType::TABLET ], + 'M-MP8S2B3G' => [ 'Mediacom', 'SmartPad 8.0 S2', DeviceType::TABLET ], + 'M-MP82S4' => [ 'Mediacom', 'SmartPad 8.0 S4', DeviceType::TABLET ], + 'M-MP84S4' => [ 'Mediacom', 'SmartPad 8.0 S4', DeviceType::TABLET ], + 'M-MP8S4A3G' => [ 'Mediacom', 'SmartPad 8.0 S4', DeviceType::TABLET ], + 'M-MP8S4B3G' => [ 'Mediacom', 'SmartPad 8.0 S4', DeviceType::TABLET ], + 'M-MP8PA3G' => [ 'Mediacom', 'SmartPad 8.0 HD Pro', DeviceType::TABLET ], + 'M-MP9S4A3G' => [ 'Mediacom', 'SmartPad 9.7 S4', DeviceType::TABLET ], + 'M-MP980S4' => [ 'Mediacom', 'SmartPad 9.7 HD S4', DeviceType::TABLET ], + 'M-MP99S4' => [ 'Mediacom', 'SmartPad 9.7 HD S4', DeviceType::TABLET ], + 'M-MP101S2' => [ 'Mediacom', 'SmartPad 10.1 S2', DeviceType::TABLET ], + 'M-MP1041S2' => [ 'Mediacom', 'SmartPad 10.1 S2', DeviceType::TABLET ], + 'M-MP1051S2' => [ 'Mediacom', 'SmartPad 10.1 S2', DeviceType::TABLET ], + 'M-MP1S2A3G' => [ 'Mediacom', 'SmartPad 10.1 S2', DeviceType::TABLET ], + 'M-MP1S4A3G' => [ 'Mediacom', 'SmartPad 10.1 S4', DeviceType::TABLET ], + 'M-MP1S4B3G' => [ 'Mediacom', 'SmartPad 10.1 S4', DeviceType::TABLET ], + 'M-MP10PA' => [ 'Mediacom', 'SmartPad 10.1 HD Pro', DeviceType::TABLET ], + 'M-MP10PA3G' => [ 'Mediacom', 'SmartPad 10.1 HD Pro', DeviceType::TABLET ], + 'M-MPI7A3G' => [ 'Mediacom', 'SmartPad i7', DeviceType::TABLET ], + ], + + 'M\-IPRO!!' => [ + 'M-IPRO110B' => [ 'Mediacom', 'SmartPad 8.0 HD iPro110', DeviceType::TABLET ], + 'M-IPRO800B' => [ 'Mediacom', 'SmartPad 8.0 HD iPro800', DeviceType::TABLET ], + 'M-IPRO810B' => [ 'Mediacom', 'SmartPad 8.0 HD iPro810', DeviceType::TABLET ], + 'M-IPRO810W' => [ 'Mediacom', 'SmartPad 8.0 HD iPro810', DeviceType::TABLET ], + ], + + 'MP[0-9]{3,3}C!!' => [ + 'MP705C' => [ 'Mediacom', 'SmartPad 705c', DeviceType::TABLET ], + 'MP810C' => [ 'Mediacom', 'SmartPad 810c', DeviceType::TABLET ], + 'MP907C' => [ 'Mediacom', 'SmartPad 907c', DeviceType::TABLET ], + ], + + 'STM[0-9]{3,3}H!!' => [ + 'STM712HCZ' => [ 'Mediacom', 'SmartPad 712c', DeviceType::TABLET ], + 'STM722HC' => [ 'Mediacom', 'SmartPad 722c', DeviceType::TABLET ], + 'STM722HCZ' => [ 'Mediacom', 'SmartPad 722c', DeviceType::TABLET ], + 'STM803HC' => [ 'Mediacom', 'SmartPad 810c', DeviceType::TABLET ], + ], + + 'SmartPad!!' => [ + 'SmartPad7503G' => [ 'Mediacom', 'SmartPad 750', DeviceType::TABLET ], + 'SmartPad810c' => [ 'Mediacom', 'SmartPad 810c', DeviceType::TABLET ], + 'SmartPad 852i' => [ 'Mediacom', 'SmartPad 825i', DeviceType::TABLET ], + 'SmartPad870' => [ 'Mediacom', 'SmartPad 870 S2', DeviceType::TABLET ], + 'Smartpad 910i aka Teclast A10T' => [ 'Mediacom', 'SmartPad 910i', DeviceType::TABLET ], + 'SmartPad 95s23G' => [ 'Mediacom', 'SmartPad 950 S2', DeviceType::TABLET ], + 'SmartPad970s2' => [ 'Mediacom', 'SmartPad 970 S2', DeviceType::TABLET ], + 'SmartPad970s23G' => [ 'Mediacom', 'SmartPad 970 S2', DeviceType::TABLET ], + 'SmartPad1010i' => [ 'Mediacom', 'SmartPad 1010i', DeviceType::TABLET ], + 'SmartPad 85S23G' => [ 'Mediacom', 'SmartPad 8.0 S2', DeviceType::TABLET ], + ], + + 'Mediacom 810C' => [ 'Mediacom', 'SmartPad 810c', DeviceType::TABLET ], + 'Xteam Smartpad 810c' => [ 'Mediacom', 'SmartPad 810c', DeviceType::TABLET ], + 'Xteam 4.8 Smartpad 810c' => [ 'Mediacom', 'SmartPad 810c', DeviceType::TABLET ], + '932i' => [ 'Mediacom', 'SmartPad 932i', DeviceType::TABLET ], + + 'MT70[0-9]{2,2}!!' => [ + 'MT7000' => [ 'Mediadroid', 'MASTER-MID GPS', DeviceType::TABLET ], + 'MT7001' => [ 'Mediadroid', 'ENGAGE HQ PRO', DeviceType::TELEVISION ], + 'MT7002' => [ 'Mediadroid', 'ENGAGE HQ', DeviceType::TELEVISION ], + 'MT7003' => [ 'Mediadroid', 'IMPERIUS' ], + 'MT7004' => [ 'Mediadroid', 'CASSIUS', DeviceType::TABLET ], + 'MT7005' => [ 'Mediadroid', 'IMPERIUS AERO' ], + 'MT7005' => [ 'Mediadroid', 'IMPERIUS 4.3 HQ' ], + 'MT7007' => [ 'Mediadroid', 'IMPERIUS II' ], + 'MT7008' => [ 'Mediadroid', 'IMPERIUS N3XT' ], + 'MT7009' => [ 'Mediadroid', 'IMPERIUS SEVEN 3G', DeviceType::TABLET ], + 'MT7010' => [ 'Mediadroid', 'IMPERIUS TAB 10 LT', DeviceType::TABLET ], + 'MT7011' => [ 'Mediadroid', 'IMPERIUS TAB 10', DeviceType::TABLET ], + 'MT7012' => [ 'Mediadroid', 'IMPERIUS TAB 10 3G', DeviceType::TABLET ], + 'MT7013' => [ 'Mediadroid', 'IMPERIUS EN3RGY' ], + 'MT7014' => [ 'Mediadroid', 'IMPERIUS AERO SLIM' ], + 'MT7015' => [ 'Mediadroid', 'IMPERIUS MINI' ], + 'MT7017' => [ 'Mediadroid', 'IMPERIUS ALPHA' ], + ], + + 'MTK6516' => [ 'Mediatek', 'MTK6516' ], + + '(MEDION|(MD )?LIFETAB)!!' => [ + 'MEDION Smartphone LIFE E3501' => [ 'Medion', 'Life E3501' ], + 'MEDION E4001' => [ 'Medion', 'E4001' ], + 'MEDION E4002' => [ 'Medion', 'E4002' ], + 'MEDION E4005' => [ 'Medion', 'E4005' ], + 'MEDION E4502' => [ 'Medion', 'E4502' ], + 'MEDION E4503' => [ 'Medion', 'E4503' ], + 'MEDION E4504' => [ 'Medion', 'E4504' ], + 'MEDION E4506' => [ 'Medion', 'E4506' ], + 'LIFETAB E7310' => [ 'Medion', 'Lifetab E7310', DeviceType::TABLET ], + 'LIFETAB E7312' => [ 'Medion', 'Lifetab E7312', DeviceType::TABLET ], + 'LIFETAB E7313' => [ 'Medion', 'Lifetab E7313', DeviceType::TABLET ], + 'LIFETAB E7316' => [ 'Medion', 'Lifetab E7316', DeviceType::TABLET ], + 'LIFETAB E723X' => [ 'Medion', 'Lifetab E723X', DeviceType::TABLET ], + 'LIFETAB E732X' => [ 'Medion', 'Lifetab E732X', DeviceType::TABLET ], + 'LIFETAB E733X' => [ 'Medion', 'Lifetab E733X', DeviceType::TABLET ], + 'LIFETAB E10310' => [ 'Medion', 'Lifetab E10310', DeviceType::TABLET ], + 'LIFETAB E10312' => [ 'Medion', 'Lifetab E10312', DeviceType::TABLET ], + 'LIFETAB E10316' => [ 'Medion', 'Lifetab E10316', DeviceType::TABLET ], + 'LIFETAB E10320' => [ 'Medion', 'Lifetab E10320', DeviceType::TABLET ], + 'LIFETAB P733X' => [ 'Medion', 'Lifetab P733X', DeviceType::TABLET ], + 'LIFETAB P831X' => [ 'Medion', 'Lifetab P831X', DeviceType::TABLET ], + 'LIFETAB P831X.2' => [ 'Medion', 'Lifetab P831X', DeviceType::TABLET ], + 'LIFETAB P891X' => [ 'Medion', 'Lifetab P891X', DeviceType::TABLET ], + 'LIFETAB P1034X' => [ 'Medion', 'Lifetab P1034X', DeviceType::TABLET ], + 'P1035X' => [ 'Medion', 'Lifetab P1035X', DeviceType::TABLET ], + 'LIFETAB S7316' => [ 'Medion', 'Lifetab S7316', DeviceType::TABLET ], + 'LIFETAB S732X' => [ 'Medion', 'Lifetab S732X', DeviceType::TABLET ], + 'LIFETAB S785X' => [ 'Medion', 'Lifetab S785X', DeviceType::TABLET ], + 'LIFETAB S786X' => [ 'Medion', 'Lifetab S786X', DeviceType::TABLET ], + 'LIFETAB S831X' => [ 'Medion', 'Lifetab S831X', DeviceType::TABLET ], + 'LIFETAB S9512' => [ 'Medion', 'Lifetab S9512', DeviceType::TABLET ], + 'LIFETAB S9714' => [ 'Medion', 'Lifetab S9714', DeviceType::TABLET ], + 'LIFETAB S1033X' => [ 'Medion', 'Lifetab S1033X', DeviceType::TABLET ], + 'LIFETAB S1034X' => [ 'Medion', 'Lifetab S1034X', DeviceType::TABLET ], + 'LIFETAB S1036X' => [ 'Medion', 'Lifetab S1036X', DeviceType::TABLET ], + 'MEDION LIFE P4012' => [ 'Medion', 'Life P4012' ], + 'MEDION P4013' => [ 'Medion', 'Life P4013' ], + 'MEDION-P4013' => [ 'Medion', 'Life P4013' ], + 'MEDION LIFE P4310' => [ 'Medion', 'Life P4310' ], + 'MEDION P5001' => [ 'Medion', 'Life P5001' ], + 'MEDION X4701' => [ 'Medion', 'X4701' ], + 'MEDION X5004' => [ 'Medion', 'X5004' ], + 'MEDION X5020' => [ 'Medion', 'X5020' ], + 'LIFETAB P9514' => [ 'Medion', 'Lifetab P9514', DeviceType::TABLET ], + 'MD LIFETAB P9516' => [ 'Medion', 'Lifetab P9516', DeviceType::TABLET ], + ], + + 'P1050X' => [ 'Medion', 'Lifetab P1050X', DeviceType::TABLET ], + + 'MEEG!!' => [ + 'MEEG 101' => [ 'MEEG', '101' ], + 'MEEG 101M' => [ 'MEEG', '101M' ], + 'MEEG 105' => [ 'MEEG', '105' ], + 'MEEG 105S' => [ 'MEEG', '105S' ], + 'MEEG 106' => [ 'MEEG', '106' ], + 'MEEG 201' => [ 'MEEG', '201' ], + 'MEEG 210R' => [ 'MEEG', '210R' ], + ], + + 'MEIZU E3' => [ 'Meizu', 'E3' ], + 'M1' => [ 'Meizu', 'M1' ], + 'm1 metal' => [ 'Meizu', 'M1 Metal' ], + 'meizu m1note' => [ 'Meizu', 'M1 Note' ], + 'm1 note' => [ 'Meizu', 'M1 Note' ], + 'm2 note' => [ 'Meizu', 'M2 Note' ], + 'MZ-m2 note' => [ 'Meizu', 'M2 Note' ], + 'M571C' => [ 'Meizu', 'M2 Note' ], + 'MZ-M571C' => [ 'Meizu', 'M2 Note' ], + 'm3 note' => [ 'Meizu', 'M3 Note' ], + 'MZ-m3 note' => [ 'Meizu', 'M3 Note' ], + 'M5 Note' => [ 'Meizu', 'M5 Note' ], + 'M6 Note' => [ 'Meizu', 'M6 Note' ], + 'm2' => [ 'Meizu', 'M2' ], + 'M578C' => [ 'Meizu', 'M2' ], + 'M2mini' => [ 'Meizu', 'M2 Mini' ], + 'm3' => [ 'Meizu', 'M3' ], + 'M3s' => [ 'Meizu', 'M3s' ], + 'M4' => [ 'Meizu', 'M4' ], + 'M5' => [ 'Meizu', 'M5' ], + 'MZ-M5' => [ 'Meizu', 'M5' ], + 'MEIZU M5' => [ 'Meizu', 'M5' ], + 'MZ-MEIZU M6' => [ 'Meizu', 'M6' ], + 'M8' => [ 'Meizu', 'M8' ], + 'M9' => [ 'Meizu', 'M9' ], + 'M9-unlocked' => [ 'Meizu', 'M9' ], + 'MEIZU M9' => [ 'Meizu', 'M9' ], + 'MEIZU MX' => [ 'Meizu', 'MX' ], + 'M030' => [ 'Meizu', 'MX M030' ], + 'M031' => [ 'Meizu', 'MX M031' ], + 'M032' => [ 'Meizu', 'MX M032' ], + 'MX2' => [ 'Meizu', 'MX2' ], + 'M040' => [ 'Meizu', 'MX2 M040' ], + 'M045' => [ 'Meizu', 'MX2 M045' ], + 'M351' => [ 'Meizu', 'MX3 M351' ], + 'M353' => [ 'Meizu', 'MX3 M353' ], + 'M355' => [ 'Meizu', 'MX3 M355' ], + 'M356' => [ 'Meizu', 'MX3 M356' ], + 'MX4' => [ 'Meizu', 'MX4' ], + 'MZ-MX4' => [ 'Meizu', 'MX4' ], + 'MX4 Pro' => [ 'Meizu', 'MX4 Pro' ], + 'MZ-MX4 Pro' => [ 'Meizu', 'MX4 Pro' ], + 'MX5' => [ 'Meizu', 'MX5' ], + 'MZ-MX5' => [ 'Meizu', 'MX5' ], + 'MX6' => [ 'Meizu', 'MX6' ], + 'PRO 5' => [ 'Meizu', 'PRO 5' ], + 'PRO 6' => [ 'Meizu', 'PRO 6' ], + 'PRO 6s' => [ 'Meizu', 'PRO 6s' ], + 'PRO 6 Plus' => [ 'Meizu', 'PRO 6 Plus' ], + 'Meizu S6' => [ 'Meizu', 'S6' ], + + '(MEO )?Smart A!!' => [ + 'meo smart a12' => [ 'MEO', 'Smart A12' ], + 'MEO SMART A16' => [ 'MEO', 'Smart A16' ], + 'MEO Smart A40' => [ 'MEO', 'Smart A40' ], + 'Smart A65' => [ 'MEO', 'Smart A65' ], + 'Smart A66' => [ 'MEO', 'Smart A66' ], + 'MEO Smart A68' => [ 'MEO', 'Smart A68' ], + 'meo smart a70' => [ 'MEO', 'Smart A70' ], + 'MEO Smart A75' => [ 'MEO', 'Smart A75' ], + 'MEO A75' => [ 'MEO', 'Smart A75' ], + 'MEO Smart A80' => [ 'MEO', 'Smart A80' ], + ], + + 'MEU AN!!' => [ + 'MEU AN400' => [ 'MEU', 'AN400' ], + 'MEU AN500' => [ 'MEU', 'AN500' ], + ], + + 'Slidepad!!' => [ + 'Slidepad' => [ 'Memup', 'Slidepad', DeviceType::TABLET ], + 'SlidePad 104' => [ 'Memup', 'Slidepad 104', DeviceType::TABLET ], + 'SlidePad 108' => [ 'Memup', 'Slidepad 108', DeviceType::TABLET ], + 'SlidePad704CE' => [ 'Memup', 'Slidepad 704CE', DeviceType::TABLET ], + 'SlidePad 816P' => [ 'Memup', 'Slidepad 816P', DeviceType::TABLET ], + 'SlidePad Elite 9708' => [ 'Memup', 'Slidepad Elite 9708', DeviceType::TABLET ], + 'SlidePad Kids' => [ 'Memup', 'Slidepad Kids', DeviceType::TABLET ], + 'SlidePad NG 116DC' => [ 'Memup', 'Slidepad NG 116DC', DeviceType::TABLET ], + 'SlidePad NG 704DC' => [ 'Memup', 'Slidepad NG 704DC', DeviceType::TABLET ], + ], + + '704DC' => [ 'Memup', 'Slidepad 704DC', DeviceType::TABLET ], + + 'SPNG9716DC' => [ 'Memup', 'Slidepad NG 9716DC', DeviceType::TABLET ], + 'Mi-A402' => [ 'Mi-fone', 'FAB 4.0' ], + + 'Micromax!!' => [ + 'Micromax A24' => [ 'Micromax', 'A24 Bolt' ], + 'Micromax A25' => [ 'Micromax', 'A25 Smarty' ], + 'Micromax A26' => [ 'Micromax', 'A26 Bolt' ], + 'Micromax A27' => [ 'Micromax', 'A27 Bolt' ], + 'Micromax A28' => [ 'Micromax', 'A28 Bolt' ], + 'Micromax A30' => [ 'Micromax', 'A30 Smarty' ], + 'Micromax A34' => [ 'Micromax', 'A34' ], + 'Micromax A35' => [ 'Micromax', 'A35 Bolt' ], + 'Micromax A36' => [ 'Micromax', 'A36 Bolt' ], + 'Micromax A37' => [ 'Micromax', 'A37 Bolt' ], + 'Micromax A37B' => [ 'Micromax', 'A37B Bolt' ], + 'Micromax A40' => [ 'Micromax', 'A40 Bolt' ], + 'Micromax A44' => [ 'Micromax', 'A44 Punk' ], + 'Micromax A46' => [ 'Micromax', 'A46 Bolt' ], + 'Micromax A47' => [ 'Micromax', 'A47 Bolt' ], + 'Micromax A50' => [ 'Micromax', 'A50 Ninja' ], + 'Micromax A51' => [ 'Micromax', 'A51 Bolt' ], + 'Micromax A52' => [ 'Micromax', 'A52 Aisha' ], + 'Micromax-Xzoom A52' => [ 'Micromax', 'A52 Aisha' ], + 'Micromax A54' => [ 'Micromax', 'A54 Ninja' ], + 'Micromax A56' => [ 'Micromax', 'A56 Ninja 2' ], + 'Micromax A57' => [ 'Micromax', 'A57 Ninja 3' ], + 'Micromax A58' => [ 'Micromax', 'A58 Bolt' ], + 'Micromax A59' => [ 'Micromax', 'A59 Bolt' ], + 'Micromax A60' => [ 'Micromax', 'A60 Andro' ], + 'Micromax A61' => [ 'Micromax', 'A61 Bolt' ], + 'Micromax A62' => [ 'Micromax', 'A62 Bolt' ], + 'Micromax A63' => [ 'Micromax', 'A63 Canvas Fun' ], + 'Micromax A65' => [ 'Micromax', 'A65 Smarty' ], + 'Micromax A66' => [ 'Micromax', 'A66 Bolt' ], + 'Micromax A67' => [ 'Micromax', 'A67 Bolt' ], + 'Micromax A68' => [ 'Micromax', 'A68 Smarty' ], + 'Micromax A69' => [ 'Micromax', 'A69 Bolt' ], + 'Micromax A70' => [ 'Micromax', 'A70 Andro' ], + 'Micromax A71' => [ 'Micromax', 'A71 Bolt' ], + 'Micromax A72' => [ 'Micromax', 'A72 Canvas Viva' ], + 'Micromax A73' => [ 'Micromax', 'A73 Buzz' ], + 'Micromax A74' => [ 'Micromax', 'A74 Canvas Fun' ], + 'Micromax A75' => [ 'Micromax', 'A75 Lite' ], + 'Micromax A76' => [ 'Micromax', 'A76 Canvas Fun' ], + 'Micromax A77' => [ 'Micromax', 'A77 Canvas Juice' ], + 'Micromax A78' => [ 'Micromax', 'A78 Gossip' ], + 'Micromax A79' => [ 'Micromax', 'A79 Bolt' ], + 'Micromax A80' => [ 'Micromax', 'A80 Infinity' ], + 'Micromax A82' => [ 'Micromax', 'A82 Bolt' ], + 'Micromax A84' => [ 'Micromax', 'A84' ], + 'Micromax A85' => [ 'Micromax', 'A85' ], + 'Micromax A86' => [ 'Micromax', 'A86 Bling 3' ], + 'Micromax A87!' => [ 'Micromax', 'A87 Ninja 4' ], + 'Micromax A88' => [ 'Micromax', 'A88 Canvas Music' ], + 'Micromax A89' => [ 'Micromax', 'A89 Ninja' ], + 'Micromax A90!' => [ 'Micromax', 'A90 Pixel' ], + 'Micromax A91' => [ 'Micromax', 'A91 Ninja' ], + 'Micromax A92' => [ 'Micromax', 'A92 Canvas Lite' ], + 'Micromax A93' => [ 'Micromax', 'A93 Canvas Elanza' ], + 'Micromax A94' => [ 'Micromax', 'A94 Canvas Mad' ], + 'Micromax A96' => [ 'Micromax', 'A96 Canvas Power' ], + 'Micromax A99' => [ 'Micromax', 'A99 Canvas Xpress' ], + 'Micromax A064' => [ 'Micromax', 'A064 Bolt' ], + 'Micromax A065' => [ 'Micromax', 'A065 Bolt' ], + 'Micromax A066' => [ 'Micromax', 'A066 Bolt' ], + 'Micromax A067' => [ 'Micromax', 'A067 Bolt' ], + 'Micromax A068' => [ 'Micromax', 'A068 Bolt' ], + 'Micromax A069' => [ 'Micromax', 'A069 Bolt' ], + 'Micromax A075' => [ 'Micromax', 'A075 Bolt' ], + 'Micromax A082' => [ 'Micromax', 'A082 Bolt' ], + 'Micromax A089' => [ 'Micromax', 'A089 Bolt' ], + 'Micromax A091' => [ 'Micromax', 'A091 Canvas Engage' ], + 'Micromax A092' => [ 'Micromax', 'A092 Canvas Unite' ], + 'Micromax A093' => [ 'Micromax', 'A093 Canvas Fire' ], + 'Micromax A096' => [ 'Micromax', 'A096 Canvas Fire 3' ], + 'Micromax A100' => [ 'Micromax', 'A100 Canvas' ], + 'Micromax A101' => [ 'Micromax', 'A101' ], + 'Micromax A102' => [ 'Micromax', 'A102 Canvas Doodle 3' ], + 'Micromax A104' => [ 'Micromax', 'A104 Canvas Fire' ], + 'Micromax A105' => [ 'Micromax', 'A105 Canvas Entice' ], + 'Micromax A106' => [ 'Micromax', 'A106 Unite 2' ], + 'Micromax A107' => [ 'Micromax', 'A107 Canvas Fire 4' ], + 'Micromax A108' => [ 'Micromax', 'A108 Canvas L' ], + 'Micromax A109' => [ 'Micromax', 'A109 Canvas XL2' ], + 'Micromax A110' => [ 'Micromax', 'A110 Canvas 2' ], + 'Micromax Canvas 2' => [ 'Micromax', 'A110 Canvas 2' ], + 'Micromax A110 (Canvas 2)' => [ 'Micromax', 'A110 Canvas 2' ], + 'Micromax A110Q' => [ 'Micromax', 'A110Q Canvas 2 Plus' ], + 'Micromax A111!' => [ 'Micromax', 'A111 Canvas Doodle' ], + 'Micromax A114' => [ 'Micromax', 'A114 Canvas 2.2' ], + 'Micromax A114R' => [ 'Micromax', 'A114R Canvas Beat' ], + 'Micromax A115' => [ 'Micromax', 'A115 Canvas 3D' ], + 'Micromax A116' => [ 'Micromax', 'A116 Canvas HD' ], + 'Micromax A116i' => [ 'Micromax', 'A116i Canvas HD' ], + 'Micromax A117' => [ 'Micromax', 'A117 Canvas Magnus' ], + 'Micromax A118R' => [ 'Micromax', 'A118 Canvas Tube' ], + 'Micromax A119' => [ 'Micromax', 'A119 Canvas XL' ], + 'Micromax A120' => [ 'Micromax', 'A120 Canvas 2 Colors' ], + 'Micromax A121' => [ 'Micromax', 'A120 Canvas Elanza 2' ], + 'Micromax A177' => [ 'Micromax', 'A177 Canvas Juice' ], + 'Micromax A190' => [ 'Micromax', 'A190 Canvas HD Plus' ], + 'Micromax A200' => [ 'Micromax', 'A200 Canvas Turbo Mini' ], + 'Micromax A210' => [ 'Micromax', 'A210 Canvas 4' ], + 'Micromax A240' => [ 'Micromax', 'A240 Canvas Doodle 2' ], + 'Micromax A250' => [ 'Micromax', 'A250 Canvas Turbo' ], + 'Micromax A255' => [ 'Micromax', 'A255 Canvas Selfie' ], + 'Micromax A290' => [ 'Micromax', 'A290 Canvas Knight Cameo' ], + 'Micromax A300' => [ 'Micromax', 'A300 Canvas Gold' ], + 'Micromax A310' => [ 'Micromax', 'A310 Canvas Nitro' ], + 'Micromax A311' => [ 'Micromax', 'A311 Canvas Nitro' ], + 'Micromax A315' => [ 'Micromax', 'A315 Canvas 4 Plus' ], + 'Micromax A316' => [ 'Micromax', 'A316 Canvas Hue 2' ], + 'Micromax A350' => [ 'Micromax', 'A350 Canvas Knight' ], + 'Micromax AD3520' => [ 'Micromax', 'AD3520 Bolt' ], + 'Micromax AE90' => [ 'Micromax', 'AE90 Canvas Duet' ], + 'Micromax AD4500' => [ 'Micromax', 'AQ4500 Bolt' ], + 'Micromax AQ4501' => [ 'Micromax', 'AQ4501 Canvas A1' ], + 'Micromax AQ4502' => [ 'Micromax', 'AQ4502 Canvas A1' ], + 'Micromax AQ5000' => [ 'Micromax', 'AQ5000 Canvas Hue' ], + 'Micromax AQ5001' => [ 'Micromax', 'AQ5001 Canvas Juice 2' ], + 'Micromax D200' => [ 'Micromax', 'D200 Bolt' ], + 'Micromax D303' => [ 'Micromax', 'D303 Bolt' ], + 'Micromax D304' => [ 'Micromax', 'D304 Bolt' ], + 'Micromax D320' => [ 'Micromax', 'D320 Bolt' ], + 'Micromax D321' => [ 'Micromax', 'D321 Bolt' ], + 'Micromax E311' => [ 'Micromax', 'E311 Canvas Nitro 2' ], + 'Micromax E313' => [ 'Micromax', 'E313 Canvas Express 2' ], + 'Micromax E352' => [ 'Micromax', 'E352 Canvas Nitro 3' ], + 'Micromax E353' => [ 'Micromax', 'E353 Canvas Mega' ], + 'Micromax E451' => [ 'Micromax', 'E451 Canvas Pulse 4G' ], + 'Micromax E453' => [ 'Micromax', 'E453 Canvas Evok Note' ], + 'Micromax E455' => [ 'Micromax', 'E455 Canvas Nitro 4G' ], + 'Micromax E457' => [ 'Micromax', 'E457 Canvas Amaze 2' ], + 'Micromax E471' => [ 'Micromax', 'E471 Canvas Knight 2' ], + 'Micromax E481' => [ 'Micromax', 'E481 Canvas 5' ], + 'Micromax E484' => [ 'Micromax', 'E484 Canvas 6 Pro' ], + 'Micromax E485' => [ 'Micromax', 'E485 Canvas 6' ], + 'Micromax EG111' => [ 'Micromax', 'EG111 Canvas Duet 2' ], + 'Micromax F666' => [ 'Micromax', 'F666' ], + 'Micromax P250(Funbook)' => [ 'Micromax', 'Funbook Alpha P250', DeviceType::TABLET ], + 'Micromax P255' => [ 'Micromax', 'Funbook P255', DeviceType::TABLET ], + 'Micromax P275' => [ 'Micromax', 'Funbook Infinity P275', DeviceType::TABLET ], + 'Micromax P280' => [ 'Micromax', 'Funbook P280', DeviceType::TABLET ], + 'Micromax P290' => [ 'Micromax', 'Canvas Tab P290', DeviceType::TABLET ], + 'Micromax P350' => [ 'Micromax', 'Funbook P350', DeviceType::TABLET ], + 'Micromax P360' => [ 'Micromax', 'Funbook Talk P360', DeviceType::TABLET ], + 'Micromax P362' => [ 'Micromax', 'Funbook Talk P362', DeviceType::TABLET ], + 'Micromax P365' => [ 'Micromax', 'Funbook P365', DeviceType::TABLET ], + 'Micromax P410' => [ 'Micromax', 'Funbook Mini P410', DeviceType::TABLET ], + 'Micromax P410i' => [ 'Micromax', 'Funbook Mini P410i', DeviceType::TABLET ], + 'Micromax P470' => [ 'Micromax', 'Canvas Tab P470', DeviceType::TABLET ], + 'MicromaxP480' => [ 'Micromax', 'Canvas Tab P480', DeviceType::TABLET ], + 'Micromax P500(Funbook)' => [ 'Micromax', 'Funbook Pro P500', DeviceType::TABLET ], + 'Micromax P560' => [ 'Micromax', 'Funbook 3G P560', DeviceType::TABLET ], + 'Micromax P580' => [ 'Micromax', 'Funbook Ultra HD P580', DeviceType::TABLET ], + 'Micromax P600' => [ 'Micromax', 'Funbook 3G P600', DeviceType::TABLET ], + 'Micromax P650' => [ 'Micromax', 'Canvas Tab P650', DeviceType::TABLET ], + 'Micromax P666' => [ 'Micromax', 'Canvas Tab P666', DeviceType::TABLET ], + 'MicromaxP680' => [ 'Micromax', 'Canvas Tab P680', DeviceType::TABLET ], + 'Micromax P690' => [ 'Micromax', 'Canvas Tab P690', DeviceType::TABLET ], + 'MicromaxP702' => [ 'Micromax', 'Canvas Tab P702', DeviceType::TABLET ], + 'Micromax Q300' => [ 'Micromax', 'Q300 Bolt Supreme' ], + 'Micromax Q301' => [ 'Micromax', 'Q301 Bolt Supreme 2' ], + 'Micromax Q303' => [ 'Micromax', 'Q303 Bolt Supreme 3' ], + 'Micromax Q323' => [ 'Micromax', 'Q323 Bolt' ], + 'Micromax Q324' => [ 'Micromax', 'Q324 Bolt' ], + 'Micromax Q325' => [ 'Micromax', 'Q325 Bolt' ], + 'Micromax Q326' => [ 'Micromax', 'Q326 Bolt' ], + 'Micromax Q327' => [ 'Micromax', 'Q327 Bolt' ], + 'Micromax Q331' => [ 'Micromax', 'Q331 Bolt' ], + 'Micromax Q332' => [ 'Micromax', 'Q332 Bolt' ], + 'Micromax Q333' => [ 'Micromax', 'Q333 Bolt' ], + 'Micromax Q334' => [ 'Micromax', 'Q334 Canvas Spark 2' ], + 'Micromax Q335' => [ 'Micromax', 'Q335 Bolt' ], + 'Micromax Q336' => [ 'Micromax', 'Q336 Bolt' ], + 'Micromax Q338' => [ 'Micromax', 'Q338 Bolt' ], + 'Micromax Q340' => [ 'Micromax', 'Q340 Canvas Selfie 2' ], + 'Micromax Q345' => [ 'Micromax', 'Q345 Canvas Selfie Lens' ], + 'Micromax Q346' => [ 'Micromax', 'Q346 Bolt' ], + 'Micromax Q348' => [ 'Micromax', 'Q348 Canvas Selfie 3' ], + 'Micromax Q349' => [ 'Micromax', 'Q349 Canvas Selfie 4' ], + 'Micromax Q350' => [ 'Micromax', 'Q350 Canvas Spark 2 Plus' ], + 'Micromax Q352' => [ 'Micromax', 'Q355 Bolt Supreme 4' ], + 'Micromax Q355' => [ 'Micromax', 'Q355 Canvas Play' ], + 'Micromax Q370' => [ 'Micromax', 'Q370 Canvas Pep' ], + 'Micromax Q371' => [ 'Micromax', 'Q371 Canvas Pep' ], + 'Micromax Q372' => [ 'Micromax', 'Q372 Unite 3' ], + 'Micromax Q375' => [ 'Micromax', 'Q375 Canvas Pep' ], + 'Micromax Q379' => [ 'Micromax', 'Q379 Unite 3' ], + 'Micromax Q380' => [ 'Micromax', 'Q380 Canvas Spark' ], + 'Micromax Q380N' => [ 'Micromax', 'Q380 Canvas Spark' ], + 'Micromax Q381' => [ 'Micromax', 'Q381 Bolt' ], + 'Micromax Q382' => [ 'Micromax', 'Q382 Canvas Juice 4' ], + 'Micromax Q383' => [ 'Micromax', 'Q383 Bolt' ], + 'Micromax Q385' => [ 'Micromax', 'Q385 Canvas Spark 3' ], + 'Micromax Q386' => [ 'Micromax', 'Q386 Canvas Fire 5' ], + 'Micromax Q391' => [ 'Micromax', 'Q391 Canvas Doodle 4' ], + 'Micromax Q392' => [ 'Micromax', 'Q392 Canvas Juice 3' ], + 'Micromax Q394' => [ 'Micromax', 'Q394 Canvas Juice 3+' ], + 'Micromax Q395' => [ 'Micromax', 'Q395 Canvas Amaze' ], + 'Micromax Q400' => [ 'Micromax', 'Q400 Canvas Blaze' ], + 'Micromax Q411' => [ 'Micromax', 'Q411 Canvas Fire' ], + 'Micromax Q412' => [ 'Micromax', 'Q412 Canvas Play' ], + 'Micromax Q413' => [ 'Micromax', 'Q413 Canvas Xpress' ], + 'Micromax Q414' => [ 'Micromax', 'Q414 Canvas Blaze 4G+' ], + 'Micromax Q415' => [ 'Micromax', 'Q415 Spark Vdeo' ], + 'Micromax Q416' => [ 'Micromax', 'Q416 Canvas Pace' ], + 'Micromax Q417' => [ 'Micromax', 'Q417 Canvas Mega' ], + 'Micromax Q424' => [ 'Micromax', 'Q424 Bolt Selfie' ], + 'Micromax Q426' => [ 'Micromax', 'Q426 Canvas Mega 2' ], + 'Micromax Q427' => [ 'Micromax', 'Q427 Canvas Unite 4' ], + 'Micromax Q428' => [ 'Micromax', 'Q428 Canvas Fire 6' ], + 'Micromax Q437' => [ 'Micromax', 'Q437 Bharat 3' ], + 'Micromax Q450' => [ 'Micromax', 'Q450 Sliver 5' ], + 'Micromax Q452' => [ 'Micromax', 'Q452 Spark 4G' ], + 'Micromax Q461' => [ 'Micromax', 'Q461 Canvas Juice' ], + 'Micromax Q465' => [ 'Micromax', 'Q465 Canvas Juice 4 Gold' ], + 'Micromax Q469' => [ 'Micromax', 'Q469 Canvas Play' ], + 'Micromax Q491' => [ 'Micromax', 'Q491 Canvas Doodle 4' ], + 'Micromax Q4001' => [ 'Micromax', 'Q4001 Vdeo 1' ], + 'Micromax Q4101' => [ 'Micromax', 'Q4101 Vdeo 2' ], + 'Micromax Q4251' => [ 'Micromax', 'Q4251 Canvas Juice A1' ], + 'Micromax Q4260' => [ 'Micromax', 'Q4260 Canvas Evok Power' ], + 'Micromax S300' => [ 'Micromax', 'S300 Bolt' ], + 'Micromax S301' => [ 'Micromax', 'S301 Bolt' ], + 'Micromax S302' => [ 'Micromax', 'S302 Bolt' ], + ], + + 'A13' => [ 'Micromax', 'A13' ], + 'A45' => [ 'Micromax', 'A45 Punk' ], + 'A47' => [ 'Micromax', 'A47 Bolt' ], + 'A52' => [ 'Micromax', 'A52 Aisha' ], + 'A87' => [ 'Micromax', 'A87 Ninja 4' ], + 'A90S' => [ 'Micromax', 'A90S Pixel' ], + 'A110Q' => [ 'Micromax', 'A110Q Canvas 2 Plus' ], + 'A110Q Canvas 2 Plus' => [ 'Micromax', 'A110Q Canvas 2 Plus' ], + 'A110Q Canvas 2+' => [ 'Micromax', 'A110Q Canvas 2 Plus' ], + 'P300(Funbook)' => [ 'Micromax', 'Funbook P300', DeviceType::TABLET ], + 'P701' => [ 'Micromax', 'Canvas Tab P701', DeviceType::TABLET ], + + 'MLLED!!' => [ + 'MLLED M1B' => [ 'MLLED', 'M1B' ], + 'MLLED M2+' => [ 'MLLED', 'M2+' ], + 'MLLED M3 MINI' => [ 'MLLED', 'M3 MINI' ], + 'MLLED M7S' => [ 'MLLED', 'M7S' ], + 'MLLED M8' => [ 'MLLED', 'M8' ], + 'MLLED M8S' => [ 'MLLED', 'M8S' ], + 'MLLED X3S' => [ 'MLLED', 'X3S' ], + ], + + 'Mio!!' => [ + 'MioCARE A105' => [ 'Mitac', 'MioCARE A105' ], + 'MioCare 6119' => [ 'Mitac', 'MioCARE 6119' ], + 'MioPad 6' => [ 'Mitac', 'MioPad 6', DeviceType::TABLET ], + ], + + 'MITO!!' => [ + 'MITO A10' => [ 'MITO', 'A10' ], + 'MITO A15' => [ 'MITO', 'A15' ], + 'MITO A18' => [ 'MITO', 'A18' ], + 'MITO A30' => [ 'MITO', 'A30' ], + 'MITO A33' => [ 'MITO', 'A33' ], + 'MITO A38' => [ 'MITO', 'A38' ], + 'MITO A50' => [ 'MITO', 'A50' ], + 'MITO A55' => [ 'MITO', 'A55' ], + 'MITO A60' => [ 'MITO', 'A60' ], + 'MITO A68' => [ 'MITO', 'A68' ], + 'MITO 68' => [ 'MITO', 'A68' ], + 'MITO A72' => [ 'MITO', 'A72' ], + 'MITO A73' => [ 'MITO', 'A73' ], + 'MITO A75' => [ 'MITO', 'A75' ], + 'MITO A77' => [ 'MITO', 'A77' ], + 'MITO A78' => [ 'MITO', 'A78' ], + 'MITO A80' => [ 'MITO', 'A80' ], + 'MITO A82' => [ 'MITO', 'A82' ], + 'MITO A95' => [ 'MITO', 'A95' ], + 'MITO A99' => [ 'MITO', 'A99' ], + 'MITO A100' => [ 'MITO', 'A100' ], + 'MITO A120' => [ 'MITO', 'A120' ], + 'MITO A160' => [ 'MITO', 'A160' ], + 'MITO A180' => [ 'MITO', 'A180' ], + 'MITO A200' => [ 'MITO', 'A200' ], + 'MITO A210' => [ 'MITO', 'A210' ], + 'MITO A220' => [ 'MITO', 'A220' ], + 'MITO A222' => [ 'MITO', 'A222' ], + 'MITO A250' => [ 'MITO', 'A250' ], + 'MITO A260' => [ 'MITO', 'A260' ], + 'MITO A300' => [ 'MITO', 'A300' ], + 'MITO A310' => [ 'MITO', 'A310' ], + 'MITO A313' => [ 'MITO', 'A313' ], + 'MITO A322' => [ 'MITO', 'A322' ], + 'MITO A330' => [ 'MITO', 'A330' ], + 'MITO A350' => [ 'MITO', 'A350' ], + 'MITO A355' => [ 'MITO', 'A355' ], + 'MITO A360' => [ 'MITO', 'A360' ], + 'MITO A363' => [ 'MITO', 'A363' ], + 'MITO A390' => [ 'MITO', 'A390' ], + 'MITO A550' => [ 'MITO', 'A550' ], + 'MITO A660' => [ 'MITO', 'A660' ], + 'MITO A700' => [ 'MITO', 'A700' ], + 'MITO A750' => [ 'MITO', 'A750' ], + 'MITO A780' => [ 'MITO', 'A780' ], + 'MITOA800' => [ 'MITO', 'A800' ], + 'MITO A810' => [ 'MITO', 'A810' ], + 'MITO A850' => [ 'MITO', 'A850' ], + 'MITO T10' => [ 'MITO', 'T10', DeviceType::TABLET ], + 'MITO T35' => [ 'MITO', 'T35', DeviceType::TABLET ], + 'MITO T55' => [ 'MITO', 'T55', DeviceType::TABLET ], + 'MITO T66' => [ 'MITO', 'T66', DeviceType::TABLET ], + 'MITO T77' => [ 'MITO', 'T77', DeviceType::TABLET ], + 'MITO T80' => [ 'MITO', 'T80', DeviceType::TABLET ], + 'MITO T81' => [ 'MITO', 'T81', DeviceType::TABLET ], + 'MITO T89' => [ 'MITO', 'T89', DeviceType::TABLET ], + 'MITO T100' => [ 'MITO', 'T100', DeviceType::TABLET ], + 'MITO t300' => [ 'MITO', 'T300', DeviceType::TABLET ], + 'MITO T330' => [ 'MITO', 'T330', DeviceType::TABLET ], + 'MITO t510' => [ 'MITO', 'T510', DeviceType::TABLET ], + 'MITO t550' => [ 'MITO', 'T550', DeviceType::TABLET ], + 'MITO T660' => [ 'MITO', 'T660', DeviceType::TABLET ], + 'MITO T777' => [ 'MITO', 'T777', DeviceType::TABLET ], + 'MITO T888' => [ 'MITO', 'T888', DeviceType::TABLET ], + 'MITO T979' => [ 'MITO', 'T979', DeviceType::TABLET ], + ], + + 'MIZ Z2' => [ 'Miz', 'Z2' ], + + 'iQ(Talk|Tab)!!' => [ + 'iQTalk Crystal' => [ 'MLS', 'iQTalk Crystal' ], + 'iQTalk Crystal Max' => [ 'MLS', 'iQTalk Crystal Max' ], + 'iQTalk King' => [ 'MLS', 'iQTalk King' ], + 'iQTab' => [ 'MLS', 'iQTab', DeviceType::TABLET ], + 'iQTab 3G' => [ 'MLS', 'iQTab 3G', DeviceType::TABLET ], + 'iQTab Astro 3G' => [ 'MLS', 'iQTab Astro 3G', DeviceType::TABLET ], + ], + + 'Nova!!' => [ + 'Nova A' => [ 'Mobell', 'Nova A' ], + 'Nova E' => [ 'Mobell', 'Nova E' ], + 'Nova F' => [ 'Mobell', 'Nova F' ], + ], + + 'Mobiistar!!' => [ + 'mobiistar PRIME 558' => [ 'Mobiistar', 'Prime 558' ], + 'Mobiistar S01' => [ 'Mobiistar', 'Touch S01' ], + 'Mobiistar Touch S01' => [ 'Mobiistar', 'Touch S01' ], + 'Mobiistar Touch S02i' => [ 'Mobiistar', 'Touch S02i' ], + 'Mobiistar Touch S03' => [ 'Mobiistar', 'Touch S03' ], + 'Mobiistar Touch S05' => [ 'Mobiistar', 'Touch S05' ], + 'Mobiistar Touch S06' => [ 'Mobiistar', 'Touch S06' ], + 'Mobiistar Touch S07' => [ 'Mobiistar', 'Touch S07' ], + 'Mobiistar Touch S08' => [ 'Mobiistar', 'Touch S08' ], + 'Mobiistar Touch S30' => [ 'Mobiistar', 'Touch S30' ], + 'mobiistar touch S31' => [ 'Mobiistar', 'Touch S31' ], + 'mobiistar touch BEAN 402' => [ 'Mobiistar', 'Touch Bean 402' ], + 'mobiistar touch BEAN 402c' => [ 'Mobiistar', 'Touch Bean 402C' ], + 'mobiistar touch Bean 402s' => [ 'Mobiistar', 'Touch Bean 402S' ], + 'mobiistar touch BEAN 402m' => [ 'Mobiistar', 'Touch Bean 402M' ], + 'Mobiistar Touch Bean 452' => [ 'Mobiistar', 'Touch Bean 452' ], + 'Mobiistar Touch JellyBean 452' => [ 'Mobiistar', 'Touch Bean 452' ], + 'Mobiistar Touch Jelly Bean 452' => [ 'Mobiistar', 'Touch Bean 452' ], + 'mobiistar touch BEAN 452T' => [ 'Mobiistar', 'Touch Bean 452T' ], + 'Mobiistar Bean 452T' => [ 'Mobiistar', 'Touch Bean 452T' ], + 'mobiistar touch BEAN 454' => [ 'Mobiistar', 'Touch Bean 454' ], + 'Mobiistar Touch Kem 350' => [ 'Mobiistar', 'Touch Kem 350' ], + 'Mobiistar Touch Kem 351' => [ 'Mobiistar', 'Touch Kem 351' ], + 'Mobiistar Touch Kem 402' => [ 'Mobiistar', 'Touch Kem 402' ], + 'Mobiistar Touch Kem 432' => [ 'Mobiistar', 'Touch Kem 432' ], + 'Mobiistar Touch Kem 452' => [ 'Mobiistar', 'Touch Kem 452' ], + 'Mobiistar Touch KEM 452 HDMI' => [ 'Mobiistar', 'Touch Kem 452' ], + 'Mobiistar touch KEM 462' => [ 'Mobiistar', 'Touch Kem 462' ], + 'Mobiistar Touch Lai 502' => [ 'Mobiistar', 'Touch Lai 502' ], + 'mobiistar touch LAI 504' => [ 'Mobiistar', 'Touch Lai 504' ], + 'mobiistar LAI 504m' => [ 'Mobiistar', 'Touch Lai 504M' ], + 'mobiistar touch LAI 504Q' => [ 'Mobiistar', 'Touch Lai 504Q' ], + 'mobiistar touch LAI 512' => [ 'Mobiistar', 'Touch Lai 512' ], + ], + + 'BEAN 454' => [ 'Mobiistar', 'Touch Bean 454' ], + 'MBS BEAN 454' => [ 'Mobiistar', 'Touch Bean 454' ], + 'edenTAB ET-701' => [ 'Mobile In Style', 'Eden TAB ET-701', DeviceType::TABLET ], + + 'Cynus!!' => [ + 'Cynus E1' => [ 'Mobistel', 'Cynus E1' ], + 'Cynus F3' => [ 'Mobistel', 'Cynus F3' ], + 'Cynus F4' => [ 'Mobistel', 'Cynus F4' ], + 'Cynus F5' => [ 'Mobistel', 'Cynus F5' ], + 'Cynus F6' => [ 'Mobistel', 'Cynus F6' ], + 'Cynus F8' => [ 'Mobistel', 'Cynus F8' ], + 'Cynus T1' => [ 'Mobistel', 'Cynus T1' ], + 'Cynus T2' => [ 'Mobistel', 'Cynus T2' ], + 'Cynus T5' => [ 'Mobistel', 'Cynus T5' ], + 'Cynus T6' => [ 'Mobistel', 'Cynus T6' ], + 'Cynus T7' => [ 'Mobistel', 'Cynus T7' ], + 'Cynus T8' => [ 'Mobistel', 'Cynus T8' ], + ], + + 'MOCHE SMART A16' => [ 'Moche', 'Smart A16' ], + + '(MODECOM )?FreeTAB!!' => [ + 'FreeTAB 7.5 IPS X4 3G+' => [ 'Modecom', 'FreeTAB 7.5 IPS X4', DeviceType::TABLET ], + 'FreeTAB 10.1 Silver' => [ 'Modecom', 'FreeTAB 10.1 Silver', DeviceType::TABLET ], + 'FreeTAB 1001' => [ 'Modecom', 'FreeTAB 1001', DeviceType::TABLET ], + 'MODECOM FreeTab 1002 IPS X2' => [ 'Modecom', 'FreeTAB 1002 IPS X2', DeviceType::TABLET ], + 'FreeTAB 1003' => [ 'Modecom', 'FreeTAB 1003', DeviceType::TABLET ], + 'FreeTAB1003' => [ 'Modecom', 'FreeTAB 1003', DeviceType::TABLET ], + 'FreeTAB 1014 IPS X4+' => [ 'Modecom', 'FreeTAB 1014 IPS X4', DeviceType::TABLET ], + 'FreeTAB 1014 IPS X4 3G+' => [ 'Modecom', 'FreeTAB 1014 IPS X4', DeviceType::TABLET ], + 'MODECOM FreeTAB 2096+ X2 4GB' => [ 'Modecom', 'FreeTAB 2096 X2', DeviceType::TABLET ], + 'FreeTAB 7001 HD IC' => [ 'Modecom', 'FreeTAB 7001 HD IC', DeviceType::TABLET ], + 'FreeTAB 7003 HD+ X2 3G+' => [ 'Modecom', 'FreeTAB 7003 HD+ X2', DeviceType::TABLET ], + 'FreeTAB 7800 IPS IC' => [ 'Modecom', 'FreeTAB 7800 IPS IC', DeviceType::TABLET ], + 'FreeTAB 8001 IPS X2 3G+' => [ 'Modecom', 'FreeTAB 8001 IPS X2', DeviceType::TABLET ], + 'MODECOM FreeTAB 8001 IPS X23G' => [ 'Modecom', 'FreeTAB 8001 IPS X2', DeviceType::TABLET ], + 'FreeTAB 8014 IPS X4' => [ 'Modecom', 'FreeTAB 8014 IPS X4', DeviceType::TABLET ], + 'FreeTAB 9000 IPS IC' => [ 'Modecom', 'FreeTAB 9000 IPS IC', DeviceType::TABLET ], + 'FreeTAB 9000 IPS ICG' => [ 'Modecom', 'FreeTAB 9000 IPS ICG', DeviceType::TABLET ], + 'FreeTAB 9000 IPS ICG 3G' => [ 'Modecom', 'FreeTAB 9000 IPS ICG', DeviceType::TABLET ], + 'FreeTAB 9701' => [ 'Modecom', 'FreeTAB 9701', DeviceType::TABLET ], + 'FreeTAB 9701 HD X1' => [ 'Modecom', 'FreeTAB 9701 HD X1', DeviceType::TABLET ], + 'FreeTAB 9701 IPS' => [ 'Modecom', 'FreeTAB 9701 IPS', DeviceType::TABLET ], + 'FreeTAB 9702 HD X2' => [ 'Modecom', 'FreeTAB 9702 HD X2', DeviceType::TABLET ], + 'FreeTAB 9702 HD X4' => [ 'Modecom', 'FreeTAB 9702 HD X4', DeviceType::TABLET ], + 'MODECOM FreeTAB 9702 IPS X2' => [ 'Modecom', 'FreeTAB 9702 IPS X2', DeviceType::TABLET ], + 'FreeTAB 9704 IPS2 X4' => [ 'Modecom', 'FreeTAB 9704 IPS2 X4', DeviceType::TABLET ], + ], + + 'MOGU!!' => [ + 'MOGU-M0' => [ 'Mogu', 'M0' ], + 'MOGU M2' => [ 'Mogu', 'M2' ], + 'MOGU M2 ROM' => [ 'Mogu', 'M2' ], + 'MOGU-M2' => [ 'Mogu', 'M2' ], + ], + + 'moii!!' => [ + 'moii-E502' => [ 'moii', 'E502' ], + 'moii E505' => [ 'moii', 'E505' ], + 'moii E598' => [ 'moii', 'E598' ], + 'Moii E801' => [ 'moii', 'E801' ], + 'moii E893' => [ 'moii', 'E893' ], + 'Moii E990' => [ 'moii', 'E990' ], + 'moii E996' => [ 'moii', 'E996' ], + ], + + 'AT735' => [ 'Moinstone', 'AT735', DeviceType::TABLET ], + 'MORAL N01' => [ 'Moral', 'N01' ], + 'i1' => [ 'Motorola', 'i1' ], + 'A853' => [ 'Motorola', 'Milestone' ], + 'A953' => [ 'Motorola', 'Milestone 2' ], + 'A955' => [ 'Motorola', 'Droid 2' ], + 'A1680' => [ 'Motorola', 'MOTO A1680' ], + 'F100' => [ 'Motorola', 'MOTOACTV', DeviceType::WATCH ], + + 'MB[0-9]{3,3}!!' => [ + 'MB200' => [ 'Motorola', 'CLIQ' ], + 'MB300' => [ 'Motorola', 'BACKFLIP' ], + 'MB501' => [ 'Motorola', 'CLIQ XT' ], + 'MB502' => [ 'Motorola', 'CHARM' ], + 'MB508' => [ 'Motorola', 'FLIPSIDE' ], + 'MB511' => [ 'Motorola', 'FLIPOUT' ], + 'MB520' => [ 'Motorola', 'BRAVO' ], + 'MB525!' => [ 'Motorola', 'DEFY' ], + 'MB526!' => [ 'Motorola', 'DEFY+' ], + 'MB610' => [ 'Motorola', 'CLIQ 2' ], + 'MB611' => [ 'Motorola', 'CLIQ 2' ], + 'MB612' => [ 'Motorola', 'XPRT' ], + 'MB626' => [ 'Motorola', 'MB632' ], + 'MB632' => [ 'Motorola', 'PRO+' ], + 'MB810' => [ 'Motorola', 'Droid X' ], + 'MB853' => [ 'Motorola', 'Electrify' ], + 'MB855' => [ 'Motorola', 'PHOTON 4G' ], + 'MB8(60|61)!' => [ 'Motorola', 'ATRIX' ], + 'MB865' => [ 'Motorola', 'ATRIX 2' ], + 'MB870' => [ 'Motorola', 'Droid X2' ], + 'MB886' => [ 'Motorola', 'DINARA' ], + ], + + 'ME[0-9]{3,3}!!' => [ + 'ME501' => [ 'Motorola', 'CLIQ XT' ], + 'ME502' => [ 'Motorola', 'CHARM' ], + 'ME511' => [ 'Motorola', 'FLIPOUT' ], + 'ME525!' => [ 'Motorola', 'MOTO ME525' ], + 'ME526!' => [ 'Motorola', 'DEFY+' ], + 'ME600' => [ 'Motorola', 'BACKFLIP' ], + 'ME611' => [ 'Motorola', 'CLIQ 2' ], + 'ME632' => [ 'Motorola', 'PRO+' ], + 'ME722' => [ 'Motorola', 'Milestone 2' ], + 'ME811' => [ 'Motorola', 'Droid X' ], + 'ME860' => [ 'Motorola', 'ATRIX' ], + 'ME863' => [ 'Motorola', 'Milestone 3' ], + 'ME865' => [ 'Motorola', 'ATRIX 2' ], + ], + + 'MT[0-9]{3,3}!!' => [ + 'MT620!' => [ 'Motorola', 'MOTO MT620' ], + 'MT680' => [ 'Motorola', 'MOTOLUXE MT680' ], + 'MT716' => [ 'Motorola', 'MOTO MT716' ], + 'MT788' => [ 'Motorola', 'RAZR i' ], + 'MT810' => [ 'Motorola', 'MOTO MT810' ], + 'MT870' => [ 'Motorola', 'MOTO MT870' ], + 'MT887' => [ 'Motorola', 'RAZR V' ], + 'MT917' => [ 'Motorola', 'MT917' ], + ], + + 'MZ[0-9]{3,3}!!' => [ + 'MZ505' => [ 'Motorola', 'XOOM Family Edition', DeviceType::TABLET ], + 'MZ600' => [ 'Motorola', 'XOOM 4G LTE', DeviceType::TABLET ], + 'MZ601' => [ 'Motorola', 'XOOM 3G', DeviceType::TABLET ], + 'MZ602' => [ 'Motorola', 'XOOM 4G LTE', DeviceType::TABLET ], + 'MZ603' => [ 'Motorola', 'XOOM 3G', DeviceType::TABLET ], + 'MZ604' => [ 'Motorola', 'XOOM WiFi', DeviceType::TABLET ], + 'MZ605' => [ 'Motorola', 'XOOM 3G', DeviceType::TABLET ], + 'MZ606' => [ 'Motorola', 'XOOM WiFi', DeviceType::TABLET ], + 'MZ607' => [ 'Motorola', 'XOOM 2 WiFi Media Edition', DeviceType::TABLET ], + 'MZ608' => [ 'Motorola', 'XOOM 2 3G Media Edition', DeviceType::TABLET ], + 'MZ609!' => [ 'Motorola', 'Droid XYBOARD 8.2', DeviceType::TABLET ], + 'MZ615' => [ 'Motorola', 'XOOM 2 WiFi', DeviceType::TABLET ], + 'MZ616' => [ 'Motorola', 'XOOM 2 3G', DeviceType::TABLET ], + 'MZ617!' => [ 'Motorola', 'Droid XYBOARD 10.1', DeviceType::TABLET ], + ], + + 'WX[0-9]{3,3}!!' => [ + 'WX435' => [ 'Motorola', 'TRIUMPH WX435' ], + 'WX442' => [ 'Motorola', 'CITRUS WX442' ], + 'WX445' => [ 'Motorola', 'CITRUS WX445' ], + ], + + 'XT[0-9]{3,4}!!' => [ + 'XT300' => [ 'Motorola', 'SPICE' ], + 'XT301' => [ 'Motorola', 'MOTO XT301' ], + 'XT303' => [ 'Motorola', 'MOTOSMART XT303' ], + 'XT305' => [ 'Motorola', 'MOTOSMART XT305' ], + 'XT311' => [ 'Motorola', 'FIRE' ], + 'XT316' => [ 'Motorola', 'MOTO XT316' ], + 'XT317' => [ 'Motorola', 'SPICE Key' ], + 'XT319' => [ 'Motorola', 'MOTO XT319' ], + 'XT3(20|21)!' => [ 'Motorola', 'DEFY Mini' ], + 'XT389' => [ 'Motorola', 'MOTOSMART XT389' ], + 'XT390' => [ 'Motorola', 'MOTOSMART XT390' ], + 'XT500' => [ 'Motorola', 'MOTO XT500' ], + 'xt-500' => [ 'Motorola', 'MOTO XT500' ], + 'XT502' => [ 'Motorola', 'QUENCH XT5' ], + 'XT5(30|31)!' => [ 'Motorola', 'FIRE XT' ], + 'XT532' => [ 'Motorola', 'MOTO XT532' ], + 'XT535' => [ 'Motorola', 'DEFY' ], + 'XT536' => [ 'Motorola', 'DEFY Diana' ], + 'XT5(50|53)!' => [ 'Motorola', 'MOTOSMART MIX' ], + 'XT5(55|56|57)!' => [ 'Motorola', 'DEFY XT' ], + 'XT560' => [ 'Motorola', 'DEFY Pro' ], + 'XT603' => [ 'Motorola', 'ADMIRAL' ], + 'XT605' => [ 'Motorola', 'Master XT605' ], + 'XT610' => [ 'Motorola', 'Droid Pro' ], + 'Pro XT610' => [ 'Motorola', 'Droid Pro' ], + 'XT611' => [ 'Motorola', 'MOTOSMART Flip' ], + 'XT615' => [ 'Motorola', 'MOTO XT615' ], + 'XT621' => [ 'Motorola', 'Primus XT621' ], + 'XT623' => [ 'Motorola', 'Kairos XT623' ], + 'XT626' => [ 'Motorola', 'MOTO XT626' ], + 'XT627' => [ 'Motorola', 'Kairos XT627' ], + 'XT681' => [ 'Motorola', 'MOTO XT681' ], + 'XT682' => [ 'Motorola', 'ATRIX TV' ], + 'XT685' => [ 'Motorola', 'MOTO XT685' ], + 'XT687' => [ 'Motorola', 'ATRIX TV' ], + 'XT701' => [ 'Motorola', 'XT701' ], + 'XT702!' => [ 'Motorola', 'MOTO XT702' ], + 'XT711' => [ 'Motorola', 'MOTO XT711' ], + 'XT720' => [ 'Motorola', 'Milestone' ], + 'XT760' => [ 'Motorola', 'MOTO XT760' ], + 'XT788' => [ 'Motorola', 'XT788' ], + 'XT875' => [ 'Motorola', 'Droid Bionic' ], + 'XT800W' => [ 'Motorola', 'MOTO Glam' ], + 'XT800!' => [ 'Motorola', 'MOTO XT800' ], + 'XT806' => [ 'Motorola', 'MOTO XT806' ], + 'XT810' => [ 'Motorola', 'MOTO XT810' ], + 'XT830C' => [ 'Motorola', 'Moto E' ], + 'XT8(60|83)!' => [ 'Motorola', 'Milestone 3' ], + 'XT862' => [ 'Motorola', 'Droid 3' ], + 'XT865' => [ 'Motorola', 'Droid Bionic' ], + 'XT881' => [ 'Motorola', 'Electrify 2' ], + 'XT882' => [ 'Motorola', 'MOTO XT882' ], + 'XT8(85|86|89)!' => [ 'Motorola', 'RAZR V' ], + 'XT890' => [ 'Motorola', 'RAZR i' ], + 'XT894!' => [ 'Motorola', 'Droid 4' ], + 'XT897!' => [ 'Motorola', 'PHOTON Q' ], + 'XT901' => [ 'Motorola', 'Electrify M' ], + 'XT905' => [ 'Motorola', 'RAZR M' ], + 'XT907!' => [ 'Motorola', 'Droid RAZR M' ], + 'XT908' => [ 'Motorola', 'RAZR MAXX' ], + 'XT910!' => [ 'Motorola', 'RAZR' ], + 'XT912!' => [ 'Motorola', 'Droid RAZR' ], + 'XT9(14|15|16|18)!' => [ 'Motorola', 'Droid RAZR D1' ], + 'XT9(19|20)!' => [ 'Motorola', 'Droid RAZR D3' ], + 'XT9(23|25|26)!' => [ 'Motorola', 'Droid RAZR HD' ], + 'XT928' => [ 'Motorola', 'XT928' ], + 'XT939G' => [ 'Motorola', 'Moto G' ], + 'XT10(19|21|22|23|25)!' => [ 'Motorola', 'Moto E' ], + 'XT1030!' => [ 'Motorola', 'Droid Mini' ], + 'XT10(08|28|31|32|33|34|35|39|40|42|45)!' => [ 'Motorola', 'Moto G' ], + 'XT10(02|03)!' => [ 'Motorola', 'Moto G Ferrari' ], + 'XT10(49|50|52|53|55|56|58|60)!' => [ 'Motorola', 'Moto X' ], + 'XT10(63|64|68|69|72|77|78|79)!' => [ 'Motorola', 'Moto G (2014)' ], + 'XT1080!' => [ 'Motorola', 'Droid Ultra' ], + 'XT10(85|92|93|94|95|96|97|98)!' => [ 'Motorola', 'Moto X (2014)' ], + 'XT11(00|03)!' => [ 'Motorola', 'Nexus 6' ], + 'XT1115!' => [ 'Motorola', 'Moto X Pro' ], + 'XT1225' => [ 'Motorola', 'Moto Maxx' ], + 'XT12(50|54)!' => [ 'Motorola', 'Droid Turbo' ], + 'XT15(14|21|23|24|26|27|28)!' => [ 'Motorola', 'Moto E (2015)' ], + 'XT15(40|41|42|43|44|48|50)!' => [ 'Motorola', 'Moto G (2015)' ], + 'XT1557' => [ 'Motorola', 'Moto G Turbo' ], + 'XT15(62|63|64)!' => [ 'Motorola', 'Moto X Play' ], + 'XT1565' => [ 'Motorola', 'Droid MAXX 2' ], + 'XT15(70|72|73)!' => [ 'Motorola', 'Moto X Style' ], + 'XT1575' => [ 'Motorola', 'Moto X Pure Edition' ], + 'XT1578' => [ 'Motorola', '"Clark"' ], + 'XT15(80|81)!' => [ 'Motorola', 'Moto X Force' ], + 'XT1585' => [ 'Motorola', 'Droid Turbo 2' ], + 'XT16(06|09)!' => [ 'Motorola', 'Moto G4 Play' ], + 'XT1625' => [ 'Motorola', 'Moto G4' ], + 'XT16(35)!' => [ 'Motorola', 'Moto Z Play' ], + 'XT1644' => [ 'Motorola', 'Moto G4 Plus' ], + 'XT16(50)!' => [ 'Motorola', 'Moto X4' ], + 'XT16(62|63)!' => [ 'Motorola', 'Moto M' ], + 'XT16(75)!' => [ 'Motorola', 'Moto G5' ], + 'XT16(80|81|83|84|85|86|87)!' => [ 'Motorola', 'Moto G5 Plus' ], + 'XT17(00|06)!' => [ 'Motorola', 'Moto E (2016)' ], + 'XT17(26)!' => [ 'Motorola', 'Moto C Plus' ], + 'XT17(10)!' => [ 'Motorola', 'Moto Z (2017)' ], + 'XT17(55|56|57|58)!' => [ 'Motorola', 'Moto E4' ], + 'XT17(89)!' => [ 'Motorola', 'Moto Z2 Force' ], + 'XT17(90)!' => [ 'Motorola', 'Moto G5S' ], + 'XT18(02)!' => [ 'Motorola', 'Moto G5S Plus TV' ], + 'XT18(06)!' => [ 'Motorola', 'Moto G5S Plus' ], + 'XT19(02)!' => [ 'Lenovo', 'K8 Note' ], + ], + + 'Atrix 2' => [ 'Motorola', 'ATRIX 2' ], + 'Atrix 2 WeifanZ' => [ 'Motorola', 'ATRIX 2' ], + 'Atrix 4G' => [ 'Motorola', 'ATRIX 4G' ], + 'Atrix 4G ME860' => [ 'Motorola', 'ATRIX 4G' ], + 'Atrix 4G MB860' => [ 'Motorola', 'ATRIX 4G' ], + 'Atrix HD' => [ 'Motorola', 'ATRIX HD' ], + 'AtrixHD' => [ 'Motorola', 'ATRIX HD' ], + 'Backflip' => [ 'Motorola', 'BACKFLIP' ], + 'CLIQ' => [ 'Motorola', 'CLIQ' ], + 'CLIQ XT' => [ 'Motorola', 'CLIQ XT' ], + 'CLIQ2' => [ 'Motorola', 'CLIQ 2' ], + 'Corvair' => [ 'Motorola', 'Corvair', DeviceType::TABLET ], + 'DEFY' => [ 'Motorola', 'DEFY' ], + 'Defy(\\+| Plus)!' => [ 'Motorola', 'DEFY+' ], + 'DEDY+' => [ 'Motorola', 'DEFY+' ], + 'Dext' => [ 'Motorola', 'Dext' ], + 'Droid' => [ 'Motorola', 'Droid' ], + 'Moto Droid' => [ 'Motorola', 'Droid' ], + 'Sholes' => [ 'Motorola', 'Droid' ], + 'DROID' => [ 'Motorola', 'Droid' ], + 'DROID ?2!' => [ 'Motorola', 'Droid 2' ], + 'DROID ?3!' => [ 'Motorola', 'Droid 3' ], + 'DROID ?4!' => [ 'Motorola', 'Droid 4' ], + 'DroidPro' => [ 'Motorola', 'Droid Pro' ], + 'DROID Pro' => [ 'Motorola', 'Droid Pro' ], + 'Motorola Pro XT610' => [ 'Motorola', 'Droid Pro' ], + 'DROID HD' => [ 'Motorola', 'Droid HD' ], + 'DROID BIONIC!' => [ 'Motorola', 'Droid Bionic' ], + 'DROID RAZR HD!' => [ 'Motorola', 'Droid RAZR HD' ], + 'DROID ?RAZR!' => [ 'Motorola', 'Droid RAZR' ], + 'DROID SPYDER' => [ 'Motorola', 'Droid RAZR' ], + 'DROID ?X2!' => [ 'Motorola', 'Droid X2' ], + 'DROID ?X!' => [ 'Motorola', 'Droid X' ], + 'Devour' => [ 'Motorola', 'Droid Devour' ], + 'calgary' => [ 'Motorola', 'Droid Devour' ], + 'Electrify' => [ 'Motorola', 'Electrify' ], + 'Milestone XT711' => [ 'Motorola', 'Milestone' ], + 'Milestone XT720' => [ 'Motorola', 'Milestone' ], + 'Milestone' => [ 'Motorola', 'Milestone' ], + 'A853 Milestone' => [ 'Motorola', 'Milestone' ], + 'Milestone X' => [ 'Motorola', 'Milestone X' ], + 'Milestone X2' => [ 'Motorola', 'Milestone X2' ], + 'Milestone MAXX' => [ 'Motorola', 'Milestone MAXX' ], + 'Motorola Milestone MAXX' => [ 'Motorola', 'Milestone MAXX' ], + 'MILESTONE3' => [ 'Motorola', 'Milestone 3' ], + 'Backflip Me600' => [ 'Motorola', 'BACKFLIP' ], + 'Motorola Backflip Me600' => [ 'Motorola', 'BACKFLIP' ], + 'Moto ME860' => [ 'Motorola', 'ATRIX' ], + 'Moto C' => [ 'Motorola', 'Moto C' ], + 'Moto C Plus' => [ 'Motorola', 'Moto C Plus' ], + '(Moto)?E2$!' => [ 'Motorola', 'Moto E (2015)' ], + '(Moto)?E2\(4G-LTE\)$!' => [ 'Motorola', 'Moto E (2015)' ], + 'surnia' => [ 'Motorola', 'Moto E (2015)' ], + 'Motorola MotoE2!' => [ 'Motorola', 'Moto E2' ], + 'Moto E (4)' => [ 'Motorola', 'Moto E4' ], + 'Moto E (4) Plus' => [ 'Motorola', 'Moto E4 Plus' ], + 'moto e5 cruise' => [ 'Motorola', 'Moto E5 Cruise' ], + '(Moto)?G3$!' => [ 'Motorola', 'Moto G (2015)' ], + '(Moto)?G3-TE$!' => [ 'Motorola', 'Moto G (2015)' ], + 'MOTOROLA MOTOG' => [ 'Motorola', 'Moto G' ], + 'Moto G Play' => [ 'Motorola', 'Moto G Play' ], + 'Moto G4' => [ 'Motorola', 'Moto G4' ], + 'Moto G (4)' => [ 'Motorola', 'Moto G4' ], + 'Moto G4 Plus' => [ 'Motorola', 'Moto G4 Plus' ], + 'Moto G (5)' => [ 'Motorola', 'Moto G5' ], + 'Moto G (5) Plus' => [ 'Motorola', 'Moto G5 Plus' ], + 'Moto G (5S) Plus' => [ 'Motorola', 'Moto G5S Plus' ], + 'moto g(6)' => [ 'Motorola', 'Moto G6' ], + 'moto g(6) plus' => [ 'Motorola', 'Moto G6 Plus' ], + 'Moto Z (2)' => [ 'Motorola', 'Moto Z2' ], + 'Moto Z2 Play' => [ 'Motorola', 'Moto Z2 Play' ], + 'Moto X Pro' => [ 'Motorola', 'Moto X Pro' ], + 'moto x4' => [ 'Motorola', 'Moto X4' ], + 'roiX' => [ 'Motorola', 'Droid X' ], + 'Moto Backflip' => [ 'Motorola', 'BACKFLIP' ], + 'RAZR' => [ 'Motorola', 'RAZR' ], + 'RAZR HD' => [ 'Motorola', 'RAZR HD' ], + 'RAZR M' => [ 'Motorola', 'RAZR M' ], + 'RAZR MAXX' => [ 'Motorola', 'RAZR MAXX' ], + 'Triumph' => [ 'Motorola', 'TRIUMPH' ], + 'Opus One' => [ 'Motorola', 'i1' ], + 'Photon' => [ 'Motorola', 'PHOTON' ], + 'Photon 4G' => [ 'Motorola', 'PHOTON 4G' ], + 'Photon Q' => [ 'Motorola', 'PHOTON Q' ], + 'Photon Q LTE' => [ 'Motorola', 'PHOTON Q' ], + 'XOOM' => [ 'Motorola', 'XOOM', DeviceType::TABLET ], + 'MOTOROLA XOOM MZ606' => [ 'Motorola', 'XOOM', DeviceType::TABLET ], + 'XOOM 2!' => [ 'Motorola', 'XOOM 2', DeviceType::TABLET ], + 'XOOM MZ606' => [ 'Motorola', 'XOOM WiFi', DeviceType::TABLET ], + 'Xoom Wifi' => [ 'Motorola', 'XOOM WiFi', DeviceType::TABLET ], + 'Xoom LTE' => [ 'Motorola', 'XOOM 4G LTE', DeviceType::TABLET ], + 'Xoom 3G' => [ 'Motorola', 'XOOM 3G', DeviceType::TABLET ], + '201M' => [ 'Motorola', 'RAZR M 201M', 'carrier' => 'Softbank' ], + 'ISW11M' => [ 'Motorola', 'PHOTON ISW11M', 'carrier' => 'au' ], + 'IS12M' => [ 'Motorola', 'RAZR IS12M', 'carrier' => 'au' ], + 'MOTOROLA RAZR' => [ 'Motorola', 'RAZR' ], + 'MOTWX435KT' => [ 'Motorola', 'TRIUMPH' ], + 'X3-Ice MIUI XT720 Memorila Classics' => [ 'Motorola', 'Milestone' ], + 'ET1' => [ 'Motorola', 'ET1 Enterprise Tablet', DeviceType::TABLET ], /* Products of Motorola Solutions */ + 'MC32N0' => [ 'Motorola', 'MC32 Mobile Computer', DeviceType::POS ], + 'MC40N0' => [ 'Motorola', 'MC40 Mobile Computer', DeviceType::POS ], + 'MC67NA' => [ 'Motorola', 'MC67 Mobile Computer', DeviceType::POS ], + 'TC55' => [ 'Motorola', 'TC55 Touch Computer' ], + 'TC55CH' => [ 'Motorola', 'TC55 Touch Computer' ], + 'TC70' => [ 'Motorola', 'TC70 Touch Computer' ], + 'TC75' => [ 'Motorola', 'TC75 Touch Computer' ], + 'PH350' => [ 'Mpman', 'PH350' ], + 'PH520' => [ 'Mpman', 'PH520' ], + 'MID7C' => [ 'Mpman', 'MID7C', DeviceType::TABLET ], + 'MID43C' => [ 'Mpman', 'MID43C', DeviceType::TABLET ], + 'MID74C' => [ 'Mpman', 'MID74C', DeviceType::TABLET ], + 'MID77C' => [ 'Mpman', 'MID77C', DeviceType::TABLET ], + 'MID82C' => [ 'Mpman', 'MID82C', DeviceType::TABLET ], + 'MID84C' => [ 'Mpman', 'MID84C', DeviceType::TABLET ], + 'MID102C' => [ 'Mpman', 'MID102C', DeviceType::TABLET ], + 'MID103C' => [ 'Mpman', 'MID103C', DeviceType::TABLET ], + 'MID104C' => [ 'Mpman', 'MID104C', DeviceType::TABLET ], + 'MID114C' => [ 'Mpman', 'MID114C', DeviceType::TABLET ], + 'MP717' => [ 'Mpman', 'MP717', DeviceType::TABLET ], + 'MP843' => [ 'Mpman', 'MP843', DeviceType::TABLET ], + 'MP888' => [ 'Mpman', 'MP888', DeviceType::TABLET ], + 'MP959' => [ 'Mpman', 'MP959', DeviceType::TABLET ], + 'MP969' => [ 'Mpman', 'MP969', DeviceType::TABLET ], + 'MP1010' => [ 'Mpman', 'MP1010', DeviceType::TABLET ], + 'MP7007' => [ 'Mpman', 'MP7007', DeviceType::TABLET ], + 'MPDC100 BT' => [ 'Mpman', 'MPDC100 BT', DeviceType::TABLET ], + 'MPDC110 BT IPS' => [ 'Mpman', 'MPDC110 BT', DeviceType::TABLET ], + 'MPDC112 BT IPS' => [ 'Mpman', 'MPDC112 BT', DeviceType::TABLET ], + 'MPDC8 BT' => [ 'Mpman', 'MPDC8 BT', DeviceType::TABLET ], + 'MPDC88 BT IPS' => [ 'Mpman', 'MPDC88 BT', DeviceType::TABLET ], + 'MPDC706' => [ 'Mpman', 'MPDC706', DeviceType::TABLET ], + 'MPDC903' => [ 'Mpman', 'MPDC903', DeviceType::TABLET ], + 'MPQC704 HD' => [ 'Mpman', 'MPQC704 HD', DeviceType::TABLET ], + 'MPQC784 IPS' => [ 'Mpman', 'MPQC784', DeviceType::TABLET ], + 'MPQC804HD' => [ 'Mpman', 'MPQC804 HD', DeviceType::TABLET ], + 'MPQC1010' => [ 'Mpman', 'MPQC1010', DeviceType::TABLET ], + 'Primo76' => [ 'MSI', 'Primo 76', DeviceType::TABLET ], + 'Primo 91' => [ 'MSI', 'Primo 91', DeviceType::TABLET ], + 'Enjoy 71' => [ 'MSI', 'Enjoy 71', DeviceType::TABLET ], + 'Enjoy 7 Plus' => [ 'MSI', 'WindPad Enjoy 7 Plus', DeviceType::TABLET ], + 'MTS-SP100' => [ 'MTS', 'Lifewire SP 100' ], + 'MTS-SP101' => [ 'MTS', 'Mtag 3.1 SP 101' ], + 'Multilaser Diamond' => [ 'Multilaser', 'Diamond', DeviceType::TABLET ], + 'Multilaser Orion' => [ 'Multilaser', 'Orion' ], + 'Multilaser Oxy' => [ 'Multilaser', 'Oxy', DeviceType::TABLET ], + 'Multilaser Titanium' => [ 'Multilaser', 'Titanium' ], + 'NB036' => [ 'Multilaser', 'Vibe NB036', DeviceType::TABLET ], + + 'M4(TEL)? SS[0-9]{3,4}!!' => [ + 'M4TEL SS550' => [ 'M4Tel', 'Genius' ], + 'M4TEL SS880' => [ 'M4Tel', 'Mirage' ], + 'M4TEL SS990' => [ 'M4Tel', 'E-Motion' ], + 'M4 SS1050' => [ 'M4Tel', 'SS1050' ], + 'M4 SS1060' => [ 'M4Tel', 'M4Live' ], + 'M4 SS1070' => [ 'M4Tel', 'Sense' ], + 'M4 SS1080' => [ 'M4Tel', 'Max One' ], + 'M4 SS1090' => [ 'M4Tel', 'Max Ultra' ], + 'M4 SS4040' => [ 'M4Tel', 'SS4040' ], + 'M4 SS4041' => [ 'M4Tel', 'SS4041' ], + 'M4 SS4045' => [ 'M4Tel', 'SS4045' ], + 'M4 SS4350' => [ 'M4Tel', 'SS4350' ], + 'M4 SS4450' => [ 'M4Tel', 'SS4450' ], + 'M4 SS4451' => [ 'M4Tel', 'SS4451' ], + 'M4 SS4452' => [ 'M4Tel', 'SS4452' ], + 'M4 SS4456' => [ 'M4Tel', 'SS4456' ], + ], + + 'MyPhone A818g Duo' => [ 'MyPhone', 'A818g Duo' ], + 'MyPhone A818 Slim Duo' => [ 'MyPhone', 'A818 Slim Duo' ], + 'MyPhone A848 Duo' => [ 'MyPhone', 'A848 Duo' ], + 'MyPhone A848i Duo' => [ 'MyPhone', 'A848i Duo' ], + 'MyPhone A848g Duo' => [ 'MyPhone', 'A848g Duo' ], + 'A878 Duo' => [ 'MyPhone', 'A878 Duo' ], + 'MyPhone A888' => [ 'MyPhone', 'A888 Duo' ], + 'MyPhone A888 Duo' => [ 'MyPhone', 'A888 Duo' ], + 'My|Phone A888 Duo' => [ 'MyPhone', 'A888 Duo' ], + 'A898 Duo' => [ 'MyPhone', 'A898 Duo' ], + 'MyPhone A919 Duo' => [ 'MyPhone', 'A919 Duo' ], + 'MyPhone A919 3D Duo' => [ 'MyPhone', 'A919 3D Duo' ], + 'MyPhone A919i' => [ 'MyPhone', 'A919i' ], + 'MyPhone A919i Duo' => [ 'MyPhone', 'A919i Duo' ], + 'MyPhone Agua Cyclone' => [ 'MyPhone', 'Agua Cyclone' ], + 'MyPhone Agua Hail' => [ 'MyPhone', 'Agua Hail' ], + 'MyPhone Agua Iceberg' => [ 'MyPhone', 'Agua Iceberg' ], + 'MyPhone Agua Iceberg Mini' => [ 'MyPhone', 'Agua Iceberg Mini' ], + 'MyPhone Agua Iceberg Slim' => [ 'MyPhone', 'Agua Iceberg Slim' ], + 'MyPhone Agua Infinity' => [ 'MyPhone', 'Agua Infinity' ], + 'MyPhone Agua Ocean Lite' => [ 'MyPhone', 'Agua Ocean Lite' ], + 'MyPhone Agua Ocean Mini' => [ 'MyPhone', 'Agua Ocean Mini' ], + 'MyPhone Agua Ocean Pro' => [ 'MyPhone', 'Agua Ocean Pro' ], + 'MyPhone Agua Rain 2G' => [ 'MyPhone', 'Agua Rain' ], + 'MyPhone Agua Rain 3G' => [ 'MyPhone', 'Agua Rain' ], + 'MyPhone Agua Rio' => [ 'MyPhone', 'Agua Rio' ], + 'MyPhone Agua Rio Fun' => [ 'MyPhone', 'Agua Rio Fun' ], + 'MyPhone Agua Rio Lite' => [ 'MyPhone', 'Agua Rio Lite' ], + 'MyPhone Agua Storm' => [ 'MyPhone', 'Agua Storm' ], + 'MyPhone Agua Vortex' => [ 'MyPhone', 'Agua Vortex' ], + 'myPhone C Smart' => [ 'MyPhone', 'C Smart' ], + 'myPhone Cube' => [ 'MyPhone', 'Cube' ], + 'myPhone Cube 16GB' => [ 'MyPhone', 'Cube' ], + 'myPhone Duosmart' => [ 'MyPhone', 'Duosmart' ], + 'myPhone FUN 2' => [ 'MyPhone', 'Fun 2' ], + 'myPhone Funky' => [ 'MyPhone', 'Funky' ], + 'myPhone Hammer' => [ 'MyPhone', 'Hammer' ], + 'myPhone INFINITY 3G' => [ 'MyPhone', 'Infinity' ], + 'myPhone NEXT' => [ 'MyPhone', 'NEXT' ], + 'myPhone NEXTS' => [ 'MyPhone', 'NEXT S' ], + 'myPhone NEXT S' => [ 'MyPhone', 'NEXT S' ], + 'myPhone Smart' => [ 'MyPhone', 'Smart' ], + 'myPhone S-line' => [ 'MyPhone', 'S-line' ], + 'MyPhone Rio Craze' => [ 'MyPhone', 'Rio Craze' ], + 'MyPhone Rio Grande' => [ 'MyPhone', 'Rio Grande' ], + 'MyPhone Rio Junior TV' => [ 'MyPhone', 'Rio Junior TV' ], + 'MyPhone Rio 2' => [ 'MyPhone', 'Rio 2' ], + 'MyPhone Rio 2 Fun' => [ 'MyPhone', 'Rio 2 Fun' ], + 'MyPhone UNO' => [ 'MyPhone', 'Uno' ], + 'MyPhone Xperia Rain 3G' => [ 'MyPhone', 'Xperia Rain' ], + 'Myphone MY25' => [ 'MyPhone', 'My25' ], + 'MyPhone MY26' => [ 'MyPhone', 'My26' ], + 'MyPhone MY28S' => [ 'MyPhone', 'My28S' ], + 'MyPad 2' => [ 'MyPhone', 'MyPad 2', DeviceType::TABLET ], + 'MyPad 750HD' => [ 'MyPhone', 'MyPad 750 HD', DeviceType::TABLET ], + 'MyPad 1000 HD' => [ 'MyPhone', 'MyPad 1000 HD', DeviceType::TABLET ], + + 'MY ?SAGA!!' => [ + 'MySAGA C1' => [ 'Mysaga', 'C1' ], + 'MY SAGA C2' => [ 'Mysaga', 'C2' ], + 'MY SAGA C3' => [ 'Mysaga', 'C3' ], + 'MYSAGA M1' => [ 'Mysaga', 'M1' ], + ], + + 'M\.T\.T\.!!' => [ + 'M.T.T. SmartFun' => [ 'M.T.T.', 'Smart Fun' ], + 'M.T.T.SmartMax' => [ 'M.T.T.', 'Smart Max' ], + 'M.T.T. Smart Multimedia' => [ 'M.T.T.', 'Smart Multimedia' ], + 'M.T.T. Tablet' => [ 'M.T.T.', 'Tablet', DeviceType::TABLET ], + ], + + 'iQ7 8GB' => [ 'Navon', 'IQ7', DeviceType::TABLET ], + 'Newman K1' => [ 'Newman', 'K1' ], + 'NewmanK1' => [ 'Newman', 'K1' ], + 'Newman K2' => [ 'Newman', 'K2' ], + 'N1' => [ 'Newman', 'N1' ], + 'Newman N1' => [ 'Newman', 'N1' ], + 'Newman N2!' => [ 'Newman', 'N2' ], + 'Newman-N2!' => [ 'Newman', 'N2' ], + 'Newpad' => [ 'Newsmy', 'Newpad', DeviceType::TABLET ], + 'Newpad-K97' => [ 'Newsmy', 'Newpad K97', DeviceType::TABLET ], + 'Newpad-NP900' => [ 'Newsmy', 'Newpad NP900', DeviceType::TABLET ], + 'P7' => [ 'Newsmy', 'Newpad P7', DeviceType::TABLET ], + 'Newpad P9' => [ 'Newsmy', 'Newpad P9', DeviceType::TABLET ], + 'Newpad P72' => [ 'Newsmy', 'Newpad P72', DeviceType::TABLET ], + 'Newsmy P72' => [ 'Newsmy', 'Newpad P72', DeviceType::TABLET ], + 'Newsmy P72-C' => [ 'Newsmy', 'Newpad P72', DeviceType::TABLET ], + 'Newsmy T3' => [ 'Newsmy', 'Newpad T3', DeviceType::TABLET ], + 'Newsmy T7II' => [ 'Newsmy', 'Newpad T7 II', DeviceType::TABLET ], + 'M-PAD N8' => [ 'Newsmy', 'M-pad N8', DeviceType::TABLET ], + + 'LTB-HS' => [ 'NEC', 'LifeTouch B' ], + 'LT-TLA' => [ 'NEC', 'LifeTouch L' ], + 'NEC-STR' => [ 'NEC', 'LifeTouch L' ], + 'LT-NA7' => [ 'NEC', 'LifeTouch Note' ], + 'LT-NA7F' => [ 'NEC', 'LifeTouch Note' ], + + 'D000-0000(13|18|19)-[0-9]{3,3}!' => [ 'NEC', 'LifeTouch B' ], + 'D000-0000(01|07)-[A-Z][0-9]{2,2}!' => [ 'NEC', 'LifeTouch S' ], + 'D000-000002-[W0][0-9]{2,2}!' => [ 'NEC', 'LifeTouch W' ], + 'D000-0000(10|11)-N!' => [ 'NEC', 'LifeTouch Note' ], + + 'D000 000043' => [ 'NEC', 'NS8368', DeviceType::TELEVISION ], + + 'N-0[0-9][A-Z]!!' => [ + 'N-01D' => [ 'NEC', 'MEDIAS PP N-01D', 'carrier' => 'DoCoMo' ], + 'N-02E' => [ 'NEC', 'MEDIAS U N-02E', 'carrier' => 'DoCoMo' ], + 'N-03E' => [ 'NEC', 'N-03E', 'carrier' => 'Disney Mobile' ], + 'N-04C' => [ 'NEC', 'MEDIAS N-04C', 'carrier' => 'DoCoMo' ], + 'N-04D' => [ 'NEC', 'MEDIAS LTE N-04D', 'carrier' => 'DoCoMo' ], + 'N-04E' => [ 'NEC', 'MEDIAS X N-04E', 'carrier' => 'DoCoMo' ], + 'N-05D' => [ 'NEC', 'MEDIAS ES N-05D', 'carrier' => 'DoCoMo' ], + 'N-05E' => [ 'NEC', 'MEDIAS W N-05E', 'carrier' => 'DoCoMo' ], + 'N-06C' => [ 'NEC', 'MEDIAS WP N-06C', 'carrier' => 'DoCoMo' ], + 'N-06D' => [ 'NEC', 'MEDIAS Tab N-06D', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'N-06E' => [ 'NEC', 'MEDIAS X N-06E', 'carrier' => 'DoCoMo' ], + 'N-07D' => [ 'NEC', 'MEDIAS X N-07D', 'carrier' => 'DoCoMo' ], + 'N-08D' => [ 'NEC', 'MEDIAS Tab UL N-08D', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + ], + + 'NEC-0912' => [ 'NEC', 'MEDIAS U N-02E', 'carrier' => 'DoCoMo' ], + 'IS11N' => [ 'NEC', 'MEDIAS BR IS11N', 'carrier' => 'au' ], + '101N' => [ 'NEC', 'MEDIAS CH 101N', 'carrier' => 'Softbank' ], + 'NEC-101S' => [ 'NEC', 'MEDIAS 101S' ], + 'NECTEL-101S' => [ 'NEC', 'MEDIAS 101S' ], + 'NEC-101T' => [ 'NEC', 'MEDIAS 101T' ], + '101T' => [ 'NEC', 'MEDIAS 101T' ], + 'NEC-101TH' => [ 'NEC', 'MEDIAS 101TH' ], + 'NEC-102' => [ 'NEC', 'MEDIAS 102' ], + 'NE-103T' => [ 'NEC', 'MEDIAS U 103T' ], + 'NEC909e' => [ 'NEC', 'MEDIAS 909e' ], + 'NE-202' => [ 'NEC', 'MEDIAS', 'carrier' => 'Biglobe' ], + 'NE-201A1A' => [ 'NEC', 'Terrain' ], + 'NEC-NE-201A1A' => [ 'NEC', 'Terrain' ], + 'NEC-NEC-NE-201A1A' => [ 'NEC', 'Terrain' ], + + 'LaVieTab!!' => [ + 'LaVieTab PC-TE508S1' => [ 'NEC', 'LaVie Tab E TE508', DeviceType::TABLET ], + 'LaVieTab PC-TE510N1B' => [ 'NEC', 'LaVie Tab E TE510', DeviceType::TABLET ], + 'LaVieTab PC-TE510S1' => [ 'NEC', 'LaVie Tab E TE510', DeviceType::TABLET ], + 'LaVieTab TE510S1' => [ 'NEC', 'LaVie Tab E TE510', DeviceType::TABLET ], + 'LaVieTab PC-TS507N1S' => [ 'NEC', 'LaVie Tab S TS507', DeviceType::TABLET ], + ], + + 'PC-TE307N1W' => [ 'NEC', 'LaVie Tab E TE307', DeviceType::TABLET ], + 'NEC PC-TE508S1' => [ 'NEC', 'LaVie Tab E TE508', DeviceType::TABLET ], + 'PC-TE508BAW' => [ 'NEC', 'LaVie Tab E TE508', DeviceType::TABLET ], + 'PC-TS508FAM' => [ 'NEC', 'LaVie Tab S TS508', DeviceType::TABLET ], + 'PC-TS508T1W' => [ 'NEC', 'LaVie Tab S TS508', DeviceType::TABLET ], + 'PC-TS708T1W' => [ 'NEC', 'LaVie Tab S TS708', DeviceType::TABLET ], + + 'N8730-411' => [ 'NEC', 'AGT10', DeviceType::TABLET ], + 'N8730-41101' => [ 'NEC', 'AGT10', DeviceType::TABLET ], + 'N8730-41102' => [ 'NEC', 'AGT10', DeviceType::TABLET ], + + 'OPS-DRD Digital Signage Player' => [ 'NEC', 'OPS-DRD Digital Signage Player', DeviceType::SIGNAGE ], + + 'neken!!' => [ + 'neken N5' => [ 'Neken', 'N5' ], + 'neken N6' => [ 'Neken', 'N6' ], + 'neken NX' => [ 'Neken', 'NX' ], + ], + + 'GTV100' => [ 'NETGEAR', 'NeoTV Prime', DeviceType::TELEVISION, Flag::GOOGLETV ], + + 'NEO!!' => [ + 'NEO N01' => [ 'NEO', 'N01' ], + 'NEO N002' => [ 'NEO', 'N002' ], + 'NEO N002i' => [ 'NEO', 'N002i' ], + ], + + 'ARA YS608' => [ 'NESO', 'ARA YS608' ], + + '(Nexian )?NX-A[0-9]{3,3}!!' => [ + 'NX-A712' => [ 'Nexian', 'Explorer' ], + 'Nexian NX-A890' => [ 'Nexian', 'Journey' ], + 'NX-A890' => [ 'Nexian', 'Journey' ], + 'NX-A891' => [ 'Nexian', 'Ultra Journey' ], + 'NX-A895' => [ 'Nexian', 'Cosmo Journey' ], + 'NX-A899' => [ 'Nexian', 'Xtreme' ], + ], + + 'NXA8QC116' => [ 'Nextbook', 'Ares 8', DeviceType::TABLET], + 'NX16A8116K' => [ 'Nextbook', 'Ares 8A', DeviceType::TABLET ], + 'Nextbook Premium 7' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'M726HC' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'Next7C12!' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'Next7D12!' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'Next7P12!' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'Next7Q12!' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'Next7P' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'Next7S' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'NXM726' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'NXM726HN' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'NXM726HN C030' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'NXM726HN HASTINGS' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'NXM727KC!' => [ 'Nextbook', 'Premium 7', DeviceType::EREADER ], + 'Nextbook Premium 7 SE' => [ 'Nextbook', 'Premium 7 SE', DeviceType::EREADER ], + 'NEXT8P' => [ 'Nextbook', 'Premium 8', DeviceType::EREADER ], + 'Next8P11' => [ 'Nextbook', 'Premium 8', DeviceType::EREADER ], + 'Next8P12' => [ 'Nextbook', 'Premium 8', DeviceType::EREADER ], + 'NXM803HC' => [ 'Nextbook', 'Premium 8', DeviceType::EREADER ], + 'NXM803HD' => [ 'Nextbook', 'Premium 8', DeviceType::EREADER ], + 'NX868QW8G' => [ 'Nextbook', 'Premium 8', DeviceType::EREADER ], + 'DATAM803HC' => [ 'Nextbook', 'Premium 8', DeviceType::EREADER ], + 'DATAM805HC' => [ 'Nextbook', 'Premium 8 SE', DeviceType::EREADER ], + 'NXM805ND' => [ 'Nextbook', 'Premium 8 SE', DeviceType::EREADER ], + 'NXM805ND EN' => [ 'Nextbook', 'Premium 8 SE', DeviceType::EREADER ], + 'DATAM819HD!' => [ 'Nextbook', 'Premium 8', DeviceType::EREADER ], + 'Next9P' => [ 'Nextbook', 'Premium 9', DeviceType::EREADER ], + 'NXM908HC' => [ 'Nextbook', 'Premium 9', DeviceType::EREADER ], + 'Next10P12' => [ 'Nextbook', 'Premium 10', DeviceType::EREADER ], + 'NEXT' => [ 'Nextbook', 'Next', DeviceType::EREADER ], + 'NXM703U' => [ 'Nextbook', 'Next 2', DeviceType::EREADER ], + 'NXM901' => [ 'Nextbook', 'Next 3', DeviceType::EREADER], + 'NXM736' => [ 'Nextbook', 'Next 6', DeviceType::EREADER], + 'NX700QC' => [ 'Nextbook', '7', DeviceType::TABLET], + 'NX785QC8G' => [ 'Nextbook', '8', DeviceType::TABLET], + 'NXM900MC' => [ 'Nextbook', '8 HD', DeviceType::TABLET], + 'ATLANTIS' => [ 'NGM', 'Atlantis' ], + 'NGM Black Hole' => [ 'NGM', 'Black Hole' ], + 'Dynamic Fun' => [ 'NGM', 'Dynamic Fun' ], + 'Dynamic Jump' => [ 'NGM', 'Dynamic Jump' ], + 'Dynamic Maxi' => [ 'NGM', 'Dynamic Maxi' ], + 'Dynamic Milo' => [ 'NGM', 'Dynamic Milo' ], + 'Dynamic Racing 2' => [ 'NGM', 'Dynamic Racing 2' ], + 'NGM Dynamic Racing 2' => [ 'NGM', 'Dynamic Racing 2' ], + 'NGM Dynamic Racing 3' => [ 'NGM', 'Dynamic Racing 3' ], + 'Dynamic Raging Go' => [ 'NGM', 'Dynamic Racing Go' ], + 'Dynamic Shake' => [ 'NGM', 'Dynamic Shake' ], + 'NGM Dynamic Star' => [ 'NGM', 'Dynamic Star' ], + 'Stylo' => [ 'NGM', 'Dynamic Stylo' ], + 'NGM Dynamic Stylo' => [ 'NGM', 'Dynamic Stylo' ], + 'Dynamic Wide' => [ 'NGM', 'Dynamic Wide' ], + 'Dynamic Wing' => [ 'NGM', 'Dynamic Wing' ], + 'Forward Active' => [ 'NGM', 'Forward Active' ], + 'Forward Art' => [ 'NGM', 'Forward Art' ], + 'Forward Escape' => [ 'NGM', 'Forward Escape' ], + 'Forward Endurance' => [ 'NGM', 'Forward Endurance' ], + 'ForwardEndurance' => [ 'NGM', 'Forward Endurance' ], + 'FORWARD EVOLVE' => [ 'NGM', 'Forward Evolve' ], + 'Forward Infinity' => [ 'NGM', 'Forward Infinity' ], + 'NGM Forward Infinity' => [ 'NGM', 'Forward Infinity' ], + 'Forward Next' => [ 'NGM', 'Forward Next' ], + 'Now' => [ 'NGM', 'Forward Now' ], + 'Forward Prime' => [ 'NGM', 'Forward Prime' ], + 'Forward Racing 3' => [ 'NGM', 'Forward Racing 3' ], + 'Dynamic Racing 3' => [ 'NGM', 'Forward Racing 3' ], + 'NGM Forward Racing HD' => [ 'NGM', 'Forward Racing HD' ], + 'Forward Ruby' => [ 'NGM', 'Forward Ruby' ], + 'ForwardRuby' => [ 'NGM', 'Forward Ruby' ], + 'Forward Shake' => [ 'NGM', 'Forward Shake' ], + 'ForwardXtreme' => [ 'NGM', 'Forward Xtreme' ], + 'Forward Young' => [ 'NGM', 'Forward Young' ], + 'NGM Forward Young' => [ 'NGM', 'Forward Young' ], + 'ForwardZero' => [ 'NGM', 'Forward Zero' ], + 'Forward 5 5' => [ 'NGM', 'Forward 5.5' ], + 'Forward 5.5' => [ 'NGM', 'Forward 5.5' ], + 'NGM Harley' => [ 'NGM', 'Harley Davidson' ], + 'Infinity' => [ 'NGM', 'Infinity' ], + 'Life' => [ 'NGM', 'Life' ], + 'NGM Orion' => [ 'NGM', 'Orion' ], + 'NGM Spirit' => [ 'NGM', 'Spirit' ], + 'NGM Time' => [ 'NGM', 'Time' ], + 'NGM Vanity Smart' => [ 'NGM', 'Vanity Smart' ], + 'NGM Action' => [ 'NGM', 'WeMove Action' ], + 'NGM Legend' => [ 'NGM', 'WeMove Legend' ], + 'NGM-Legend/Legend' => [ 'NGM', 'WeMove Legend' ], + 'NGM Legend2' => [ 'NGM', 'WeMove Legend 2' ], + 'NGM LegendXL' => [ 'NGM', 'WeMove Legend XL' ], + 'NGM Miracle' => [ 'NGM', 'WeMove Miracle' ], + 'NGM P0laris' => [ 'NGM', 'WeMove Polaris' ], + 'NGM Wilco' => [ 'NGM', 'WeMove Wilco' ], + 'NGM WINN' => [ 'NGM', 'Winn' ], + 'COOLPIX S800c' => [ 'Nikon', 'Coolpix S800c', DeviceType::CAMERA ], + 'COOLPIX S810c' => [ 'Nikon', 'Coolpix S810c', DeviceType::CAMERA ], + 'i5300' => [ 'Ninetology', 'Palette' ], + 'i5350' => [ 'Ninetology', 'Pearl Mini' ], + 'nine i7400' => [ 'Ninetology', 'Black Pearl' ], + 'I 7520' => [ 'Ninetology', 'Stealth' ], + 'i8400' => [ 'Ninetology', 'U9 P1' ], + 'i8450' => [ 'Ninetology', 'U9 Q1' ], + 'i9400' => [ 'Ninetology', 'Black Pearl II' ], + 'i9430' => [ 'Ninetology', 'Insight' ], + 'i9480' => [ 'Ninetology', 'U9 X1' ], + 'i9500' => [ 'Ninetology', 'Stealth II' ], + 'i9570' => [ 'Ninetology', 'U9 Z1' ], + 'NO1 S6' => [ 'No.1', 'S6' ], + + 'NOAIN!!' => [ + 'NOAIN A700' => [ 'Noain', 'A700' ], + 'NOAIN A900' => [ 'Noain', 'A900' ], + 'NOAIN A900S' => [ 'Noain', 'A900S' ], + 'NOAIN A903' => [ 'Noain', 'A903' ], + 'NOAIN A918' => [ 'Noain', 'A918' ], + ], + + 'NBX-T7013N' => [ 'Noblex', 'T7013N', DeviceType::TABLET ], + 'NBX-T7023N' => [ 'Noblex', 'T7023N', DeviceType::TABLET ], + 'TA-10(07|29)!' => [ 'Nokia', '2' ], + 'TA-10(84)!' => [ 'Nokia', '2.1' ], + 'TA-10(20|28|32|38)!' => [ 'Nokia', '3' ], + // 'TA-10()!' => [ 'Nokia', '3.1' ], + 'TA-10(24|27|44|53)!' => [ 'Nokia', '5' ], + 'TA-10(61|75|81|88)!' => [ 'Nokia', '5.1' ], + 'TA-10(00|03|21|25|33|39)!' => [ 'Nokia', '6' ], + 'TA-10(43|50|54|68)!' => [ 'Nokia', '6.1' ], + 'TA-10(41)!' => [ 'Nokia', '7' ], + 'TA-10(62)!' => [ 'Nokia', '7 plus' ], + 'TA-10(04|12|52)!' => [ 'Nokia', '8' ], + 'TA-10(99)!' => [ 'Nokia', 'X6' ], + 'TA-11(03|16)!' => [ 'Nokia', 'X6' ], + 'Nokia N9' => [ 'Nokia', 'N9' ], + 'Nokia N900' => [ 'Nokia', 'N900' ], + 'Nokia X' => [ 'Nokia', 'X', DeviceType::MOBILE, Flag::NOKIAX ], + 'Nokia X Dual SIM' => [ 'Nokia', 'X', DeviceType::MOBILE, Flag::NOKIAX ], + 'RM-980' => [ 'Nokia', 'X', DeviceType::MOBILE, Flag::NOKIAX ], + 'Nokia X+' => [ 'Nokia', 'X+', DeviceType::MOBILE, Flag::NOKIAX ], + 'Nokia Xplus' => [ 'Nokia', 'X+', DeviceType::MOBILE, Flag::NOKIAX ], + 'Nokia XL 4G' => [ 'Nokia', 'XL', DeviceType::MOBILE, Flag::NOKIAX ], + 'Nokia XL' => [ 'Nokia', 'XL', DeviceType::MOBILE, Flag::NOKIAX ], + 'Nokia XL Dual SIM' => [ 'Nokia', 'XL', DeviceType::MOBILE, Flag::NOKIAX ], + 'RM-1061' => [ 'Nokia', 'XL', DeviceType::MOBILE, Flag::NOKIAX ], + 'Nokia X2' => [ 'Nokia', 'X2', DeviceType::MOBILE, Flag::NOKIAX ], + 'NokiaX2DS' => [ 'Nokia', 'X2', DeviceType::MOBILE, Flag::NOKIAX ], + 'Lumia800' => [ 'Nokia', 'Lumia 800' ], + 'Lumia 900' => [ 'Nokia', 'Lumia 900' ], + 'Notion Ink ADAM' => [ 'Notion Ink', 'ADAM', DeviceType::TABLET ], + 'Adam' => [ 'Notion Ink', 'ADAM', DeviceType::TABLET ], + 'AND1' => [ 'NUgen', 'AND1' ], + 'Zaffire 785' => [ 'Nuqleo', 'Zaffire 785', DeviceType::TABLET ], + 'Zaffire 970' => [ 'Nuqleo', 'Zaffire 970', DeviceType::TABLET ], + 'NUU A3' => [ 'NUU', 'A3' ], + 'P4D Sirius' => [ 'Nvsbl', 'P4D SIRIUS', DeviceType::TABLET ], + + 'Tegra!!' => [ + 'Tegra Note 7' => [ 'Nvidia', 'Tegra Note 7', DeviceType::TABLET ], + 'Tegra Note 8' => [ 'Nvidia', 'Tegra Note 8', DeviceType::TABLET ], + 'TegraNote-Premium' => [ 'Nvidia', 'Tegra Note Premium', DeviceType::TABLET ], + 'TegraNote-P1640' => [ 'Nvidia', 'Tegra Note P1640', DeviceType::TABLET ], + ], + + 'NYX!!' => [ + 'NYX FLY' => [ 'NYX Mobile', 'Fly' ], + 'NYX FLY II' => [ 'NYX Mobile', 'Fly II' ], + 'NYX NOBA II' => [ 'NYX Mobile', 'Noba II' ], + 'NYX ZEUZ HD' => [ 'NYX Mobile', 'Zeuz HD' ], + ], + + 'JOIN' => [ 'NYX Mobile', 'Join' ], + 'Orbis' => [ 'NYX Mobile', 'Orbis' ], + + 'O\+!!' => [ + 'O+8.1Android' => [ 'O+', '8.1' ], + 'O+ 8.12 Android' => [ 'O+', '8.12' ], + 'O+ 8.15 Android' => [ 'O+', '8.15' ], + 'O+ 8.16 Android' => [ 'O+', '8.16' ], + 'O+ 8.31z Android' => [ 'O+', '8.31' ], + 'O+ 8.33 Android' => [ 'O+', '8.33' ], + 'O+ 8.36z Android' => [ 'O+', '8.36' ], + 'O+ 8.37' => [ 'O+', '8.37' ], + 'O+ 8.37 Android' => [ 'O+', '8.37' ], + 'O+ 8.38 Android' => [ 'O+', '8.38' ], + 'O+ 8.5 Android' => [ 'O+', '8.5' ], + 'O+ 8.52 Android' => [ 'O+', '8.52' ], + 'O+ 8.6 Android' => [ 'O+', '8.6' ], + 'O+ 8.7 Android' => [ 'O+', '8.7' ], + 'O+ 8.75 Android' => [ 'O+', '8.75' ], + 'O+ 8.9 Android' => [ 'O+', '8.9' ], + 'O+ 8.91 Android' => [ 'O+', '8.91' ], + 'O+ 8.92 Android' => [ 'O+', '8.92' ], + 'O+ 8.93 Android' => [ 'O+', '8.93' ], + 'O+ 9.76' => [ 'O+', '9.76' ], + 'O+ 360' => [ 'O+', '360' ], + 'O+ 360 HD' => [ 'O+', '360 HD' ], + 'O+ 360 HD 2.0' => [ 'O+', '360 HD' ], + 'O+ 360 ALPHA PLUS' => [ 'O+', '360 Alpha Plus' ], + 'O+ 360 Alpha Plus 2.0' => [ 'O+', '360 Alpha Plus' ], + 'O+ AIR' => [ 'O+', 'Air' ], + 'O+ FAB 3G' => [ 'O+', 'Fab' ], + 'O+FAB COLOR' => [ 'O+', 'Fab Color' ], + 'O+ FAB ELITE' => [ 'O+', 'Fab Elite' ], + 'O+ Grande' => [ 'O+', 'Grande' ], + 'O+ Ultra' => [ 'O+', 'Ultra' ], + 'O+ TABLET' => [ 'O+', 'Tablet', DeviceType::TABLET ], + ], + + 'EFM710A' => [ 'Oblio', 'Mint 7x', DeviceType::TABLET ], + 'ODYS-Chrono' => [ 'Odys', 'Chrono', DeviceType::TABLET ], + 'ODYS-EVO' => [ 'Odys', 'Evo', DeviceType::TABLET ], + 'Loox' => [ 'Odys', 'Loox', DeviceType::TABLET ], + 'Odys-Loox' => [ 'Odys', 'Loox', DeviceType::TABLET ], + 'ADM816KC' => [ 'Odys', 'Neo S8 Plus', DeviceType::TABLET ], + 'ADM816HC' => [ 'Odys', 'Neo X', DeviceType::TABLET ], + 'ADM712HC' => [ 'Odys', 'Neo X7', DeviceType::TABLET ], + 'ODYS-NOON' => [ 'Odys', 'Noon', DeviceType::TABLET ], + 'PEDI' => [ 'Odys', 'Pedi', DeviceType::TABLET ], + 'PRIME PLUS 3G' => [ 'Odys', 'Prime Plus', DeviceType::TABLET ], + 'ODYS-Q' => [ 'Odys', 'Q', DeviceType::TABLET ], + 'ODYS Space' => [ 'Odys', 'Space', DeviceType::TABLET ], + 'ODYS Space TKI BRR233v7' => [ 'Odys', 'Space', DeviceType::TABLET ], + 'ODYS Space TKI BRR233v9' => [ 'Odys', 'Space', DeviceType::TABLET ], + 'ADM8000KP A' => [ 'Odys', 'Titan', DeviceType::TABLET ], + 'ADM8000KP B' => [ 'Odys', 'Titan', DeviceType::TABLET ], + 'UNO X8' => [ 'Odys', 'Uno X8', DeviceType::TABLET ], + 'UNO X10' => [ 'Odys', 'Uno X10', DeviceType::TABLET ], + 'XELIO' => [ 'Odys', 'Xelio', DeviceType::TABLET ], + 'XELIO7PHONETAB' => [ 'Odys', 'Xelio 7 Phone Tab', DeviceType::TABLET ], + 'Xelio 7 pro' => [ 'Odys', 'Xelio 7 Pro', DeviceType::TABLET ], + 'XELIO7PRO' => [ 'Odys', 'Xelio 7 Pro', DeviceType::TABLET ], + 'XELIO10 QUAD' => [ 'Odys', 'Xelio 10', DeviceType::TABLET ], + 'XELIO10 PLUS 3G' => [ 'Odys', 'Xelio 10 Plus', DeviceType::TABLET ], + 'XELIO10EXTREME' => [ 'Odys', 'Xelio 10 Extreme', DeviceType::TABLET ], + 'Xelio 10 Pro' => [ 'Odys', 'Xelio 10 Pro', DeviceType::TABLET ], + 'Xelio10Pro' => [ 'Odys', 'Xelio 10 Pro', DeviceType::TABLET ], + 'XELIOPT2' => [ 'Odys', 'Xelio PT2', DeviceType::TABLET ], + 'XelioPT2Pro' => [ 'Odys', 'Xelio PT2 Pro', DeviceType::TABLET ], + 'Xelio PT4 Pro' => [ 'Odys', 'Xelio PT4 Pro', DeviceType::TABLET ], + 'ODYS-Xpress' => [ 'Odys', 'Xpress', DeviceType::TABLET ], + 'XPRESS PRO' => [ 'Odys', 'Xpress Pro', DeviceType::TABLET ], + 'ODYS Xtreme' => [ 'Odys', 'Xtreme', DeviceType::TABLET ], + 'Olivetti Olipad 100' => [ 'Olivetti', 'Olipad 100', DeviceType::TABLET ], + 'OP110' => [ 'Olivetti', 'Olipad 110', DeviceType::TABLET ], + 'Graphos A10' => [ 'Olivetti', 'Olipad Graphos A10', DeviceType::TABLET ], + 'A0001' => [ 'OnePlus', 'One' ], + 'One A0001' => [ 'OnePlus', 'One' ], + 'OnePlus One' => [ 'OnePlus', 'One' ], + 'OnePlus One A0001' => [ 'OnePlus', 'One' ], + 'A1001' => [ 'OnePlus', 'One' ], + 'A0002' => [ 'OnePlus', '2' ], + 'ONE A2001' => [ 'OnePlus', '2' ], + 'ONE A2003' => [ 'OnePlus', '2' ], + 'ONE A2005' => [ 'OnePlus', '2' ], + 'OnePlus2' => [ 'OnePlus', '2' ], + 'ONE A3000' => [ 'OnePlus', '3' ], + 'ONE A3003' => [ 'OnePlus', '3' ], + 'ONEPLUS A3000' => [ 'OnePlus', '3' ], + 'ONEPLUS A3003' => [ 'OnePlus', '3' ], + 'OnePlus3' => [ 'OnePlus', '3' ], + 'ONEPLUS A3010' => [ 'OnePlus', '3T' ], + 'ONEPLUS A5000' => [ 'OnePlus', '5' ], + 'ONEPLUS A5010' => [ 'OnePlus', '5T' ], + 'ONEPLUS A6000' => [ 'OnePlus', '6' ], + 'ONE E1000' => [ 'OnePlus', 'X' ], + 'ONE E1001' => [ 'OnePlus', 'X' ], + 'ONE E1003' => [ 'OnePlus', 'X' ], + 'ONE E1005' => [ 'OnePlus', 'X' ], + 'ONDA MID' => [ 'Onda', 'MID', DeviceType::TABLET ], + 'ONDA A9 Core4' => [ 'Onda', 'A9 Quad Core', DeviceType::TABLET ], + 'ONDA VI10' => [ 'Onda', 'VI10', DeviceType::TABLET ], + 'V701s Core4' => [ 'Onda', 'V701s Quad Core', DeviceType::TABLET ], + 'V711s Core4' => [ 'Onda', 'V711s Quad Core', DeviceType::TABLET ], + 'V712 Core4' => [ 'Onda', 'V712 Quad Core', DeviceType::TABLET ], + 'V719 3G' => [ 'Onda', 'V719 3G', DeviceType::TABLET ], + 'V801 Core4' => [ 'Onda', 'V801 Quad Core', DeviceType::TABLET ], + 'V801s Core4' => [ 'Onda', 'V801s Quad Core', DeviceType::TABLET ], + 'V811 Core4' => [ 'Onda', 'V811 Quad Core', DeviceType::TABLET ], + 'Onda V812' => [ 'Onda', 'V812', DeviceType::TABLET ], + 'V812 Core4' => [ 'Onda', 'V812 Quad Core', DeviceType::TABLET ], + 'V813 Core4' => [ 'Onda', 'V813 Quad Core', DeviceType::TABLET ], + 'V813s Core4' => [ 'Onda', 'V813s Quad Core', DeviceType::TABLET ], + 'V818' => [ 'Onda', 'V818', DeviceType::TABLET ], + 'V818mini' => [ 'Onda', 'V818 Mini', DeviceType::TABLET ], + 'V819mini' => [ 'Onda', 'V819 Mini', DeviceType::TABLET ], + 'V819 3G' => [ 'Onda', 'V819 3G', DeviceType::TABLET ], + 'V819i' => [ 'Onda', 'V819i', DeviceType::TABLET ], + 'V971 Core4' => [ 'Onda', 'V971 Quad Core', DeviceType::TABLET ], + 'V971s Core4' => [ 'Onda', 'V971s Quad Core', DeviceType::TABLET ], + 'V972 Core4' => [ 'Onda', 'V972 Quad Core', DeviceType::TABLET ], + 'V973 Core4' => [ 'Onda', 'V973 Quad Core', DeviceType::TABLET ], + 'V975 Core4' => [ 'Onda', 'V975 Quad Core', DeviceType::TABLET ], + 'V975i' => [ 'Onda', 'V975i Quad Core', DeviceType::TABLET ], + 'V975m' => [ 'Onda', 'V975m', DeviceType::TABLET ], + 'V975m Core4' => [ 'Onda', 'V975m Quad Core', DeviceType::TABLET ], + 'ONDA v975m' => [ 'Onda', 'V975m Quad Core', DeviceType::TABLET ], + 'V975s Core4' => [ 'Onda', 'V975s Quad Core', DeviceType::TABLET ], + 'ONDA V989' => [ 'Onda', 'V989', DeviceType::TABLET ], + 'ONDA V989 Core8' => [ 'Onda', 'V989 Octo Core', DeviceType::TABLET ], + 'VX580A' => [ 'Onda', 'VX580A', DeviceType::TABLET ], + 'VX580W' => [ 'Onda', 'VX580W', DeviceType::TABLET ], + 'VX610A' => [ 'Onda', 'VX610A', DeviceType::TABLET ], + 'TQ150' => [ 'Onda', 'TQ150' ], + 'TT101' => [ 'Onda', 'TT101', DeviceType::TABLET ], + 'DP-X1' => [ 'Onkyo', 'DP-X1', DeviceType::MEDIA ], + 'N2T' => [ 'ONN', 'N2T', DeviceType::TABLET ], + 'Renesas!' => [ 'Opad', 'Renesas', DeviceType::TABLET ], + 'A11w' => [ 'Oppo', 'Joy 3' ], + 'OPPO A30' => [ 'Oppo', 'A30' ], + 'A31' => [ 'Oppo', 'A31' ], + 'OPPO A31' => [ 'Oppo', 'A31' ], + 'OB-OPPO A31c' => [ 'Oppo', 'A31c' ], + 'A31c' => [ 'Oppo', 'A31c' ], + 'A31t' => [ 'Oppo', 'A31t' ], + 'OPPO A31t' => [ 'Oppo', 'A31t' ], + 'OPPO A33' => [ 'Oppo', 'A33' ], + 'A33f' => [ 'Oppo', 'A33f' ], + 'OPPO A33m' => [ 'Oppo', 'A33m' ], + 'A33w' => [ 'Oppo', 'A33w' ], + 'A37f' => [ 'Oppo', 'A37f' ], + 'A37fw' => [ 'Oppo', 'A37fw' ], + 'OPPO A37m' => [ 'Oppo', 'A37m' ], + 'CPH1605' => [ 'Oppo', 'A39' ], + 'A51f' => [ 'Oppo', 'A51f' ], + 'OPPO A53' => [ 'Oppo', 'A53' ], + 'OPPO A53m' => [ 'Oppo', 'A53m' ], + 'CPH1701' => [ 'Oppo', 'A57' ], + 'OPPO A57' => [ 'Oppo', 'A57' ], + 'OPPO A57t' => [ 'Oppo', 'A57t' ], + 'OPPO A59m' => [ 'Oppo', 'A59m' ], + 'OPPO A59s' => [ 'Oppo', 'A59s' ], + 'OPPO A59st' => [ 'Oppo', 'A59st' ], + 'CPH1717' => [ 'Oppo', 'A71' ], + 'OPPO A77' => [ 'Oppo', 'A77' ], + 'OPPO A77t' => [ 'Oppo', 'A77t' ], + 'OPPO A800' => [ 'Oppo', 'A800' ], + 'A1603' => [ 'Oppo', 'C1' ], + 'F1f' => [ 'Oppo', 'F1f' ], + 'A1601' => [ 'Oppo', 'F1s' ], + 'F1w' => [ 'Oppo', 'F1w' ], + 'CPH1609' => [ 'Oppo', 'F3' ], + 'CPH1613' => [ 'Oppo', 'F3 Plus' ], + 'CPH1723' => [ 'Oppo', 'F5' ], + 'Find 5' => [ 'Oppo', 'Find 5' ], + 'X903' => [ 'Oppo', 'Find Me X903' ], + 'X903S' => [ 'Oppo', 'Find X903S' ], + 'X905' => [ 'Oppo', 'Find 3 X905' ], + 'OPPOX905' => [ 'Oppo', 'Find 3 X905' ], + 'X906' => [ 'Oppo', 'Finder X906' ], + 'X907' => [ 'Oppo', 'Finder X907' ], + 'OPPOX907' => [ 'Oppo', 'Finder X907' ], + 'OPPO Find5' => [ 'Oppo', 'Find 5 X909' ], + 'OPPOX909' => [ 'Oppo', 'Find 5 X909' ], + 'OPPO X909' => [ 'Oppo', 'Find 5 X909' ], + 'X909' => [ 'Oppo', 'Find 5 X909' ], + 'X909T' => [ 'Oppo', 'Find 5 X909T' ], + 'X9000' => [ 'Oppo', 'Find 7a X9000' ], + 'X9006' => [ 'Oppo', 'Find 7a X9006' ], + 'X9007' => [ 'Oppo', 'Find 7a X9007' ], + 'X9009' => [ 'Oppo', 'F1 Plus X9009' ], + 'X9015' => [ 'Oppo', 'Find X9015' ], + 'OPPOX9015' => [ 'Oppo', 'Find X9015' ], + 'X9017' => [ 'Oppo', 'Finder X9017' ], + 'OPPOX9017' => [ 'Oppo', 'Finder X9017' ], + 'FIND7' => [ 'Oppo', 'Find 7 X9070' ], + 'OPPO find7' => [ 'Oppo', 'Find 7 X9070' ], + 'X9070' => [ 'Oppo', 'Find 7 X9070' ], + 'X9076' => [ 'Oppo', 'Find 7 X9076' ], + 'X9077' => [ 'Oppo', 'Find 7 X9077' ], + 'X9079' => [ 'Oppo', 'R9 Plus X9079' ], + 'OPPOR601' => [ 'Oppo', 'Real R601' ], + 'R801' => [ 'Oppo', 'Real R801' ], + 'OPPOR801' => [ 'Oppo', 'Real R801' ], + 'R801T' => [ 'Oppo', 'Real R801T' ], + 'OPPOR803' => [ 'Oppo', 'Real R803' ], + 'R803' => [ 'Oppo', 'Real R803' ], + 'R805' => [ 'Oppo', 'Real R805' ], + 'OPPOR805' => [ 'Oppo', 'Real R805' ], + 'R807' => [ 'Oppo', 'Real R807' ], + 'OPPOR807' => [ 'Oppo', 'Real R807' ], + 'R809T' => [ 'Oppo', 'R809T' ], + 'R811' => [ 'Oppo', 'R811' ], + 'OPPO R811' => [ 'Oppo', 'R811' ], + 'R813T' => [ 'Oppo', 'R813T' ], + 'OPPO R813T' => [ 'Oppo', 'R813T' ], + 'OPPO R815' => [ 'Oppo', 'Find Clover R815' ], + 'R815' => [ 'Oppo', 'Find Clover R815' ], + 'R815T' => [ 'Oppo', 'Find Clover R815T' ], + 'R815W' => [ 'Oppo', 'Real R815W' ], + 'OPPOR817' => [ 'Oppo', 'Real R817' ], + 'R817' => [ 'Oppo', 'Real R817' ], + 'R817T' => [ 'Oppo', 'Real R817T' ], + 'R819' => [ 'Oppo', 'R819' ], + 'Oppo R819' => [ 'Oppo', 'R819' ], + 'R819T!' => [ 'Oppo', 'Real R819T' ], + 'OPPO R821' => [ 'Oppo', 'Find Muse R821' ], + 'R821' => [ 'Oppo', 'Find Muse R821' ], + 'R821T' => [ 'Oppo', 'Find Muse R821T' ], + 'R823T' => [ 'Oppo', 'R823T' ], + 'R827' => [ 'Oppo', 'Find 5 mini R827' ], + 'R827T' => [ 'Oppo', 'Find 5 mini R827T' ], + 'R829' => [ 'Oppo', 'R1 R829' ], + 'R829T' => [ 'Oppo', 'R1 R829T' ], + 'R830' => [ 'Oppo', 'Neo R830' ], + 'R830S' => [ 'Oppo', 'Neo R830S' ], + 'OPPO R831' => [ 'Oppo', 'Neo R831' ], + 'Oppo R831 Limited Edition' => [ 'Oppo', 'Neo R831' ], + 'R831K' => [ 'Oppo', 'Real 20 R831K' ], + 'R831L' => [ 'Oppo', 'Neo 5 R831L' ], + '1201' => [ 'Oppo', 'Neo 5 R831L' ], + 'R831T' => [ 'Oppo', 'Neo R831T' ], + 'R831S' => [ 'Oppo', 'R831S' ], + 'R831' => [ 'Oppo', 'Neo R831' ], + 'R833T' => [ 'Oppo', 'R833T' ], + 'R850' => [ 'Oppo', 'R850' ], + 'R883T' => [ 'Oppo', 'R883T' ], + 'R1001' => [ 'Oppo', 'Joy R1001' ], + 'OPPO R1001' => [ 'Oppo', 'Joy R1001' ], + 'R1011' => [ 'Oppo', 'Joy Plus R1011' ], + 'R2001' => [ 'Oppo', 'Yoyo R2001' ], + 'R2010' => [ 'Oppo', 'R2010' ], + 'R2017' => [ 'Oppo', 'R2017' ], + 'R6006' => [ 'Oppo', 'Find 7 mini R6006' ], + 'R6007' => [ 'Oppo', 'R6007' ], + 'R7005' => [ 'Oppo', 'R3 R7005' ], + 'R7007' => [ 'Oppo', 'R3 R7007' ], + 'R8000' => [ 'Oppo', 'R1S R8000' ], + 'R8001' => [ 'Oppo', 'R1K R8001' ], + 'R8006' => [ 'Oppo', 'R1L R8006' ], + 'R8007' => [ 'Oppo', 'R1S R8007' ], + 'OPPOR8015' => [ 'Oppo', 'Find Guitar R8015' ], + 'R8015' => [ 'Oppo', 'Find Guitar R8015' ], + 'R8106' => [ 'Oppo', 'R5 R8106' ], + 'R8107' => [ 'Oppo', 'R5 R8107' ], + 'R8109' => [ 'Oppo', 'R8109' ], + 'R8111' => [ 'Oppo', 'Find Melody R8111' ], + 'OPPOR8111' => [ 'Oppo', 'Find Melody R8111' ], + 'R8113' => [ 'Oppo', 'Find Piano R8113' ], + 'R8200' => [ 'Oppo', 'R1c R8200' ], + 'R8201' => [ 'Oppo', 'R1x R8201' ], + 'R8205' => [ 'Oppo', 'R1c R8205' ], + 'R8206' => [ 'Oppo', 'R1x R8206' ], + 'R8207' => [ 'Oppo', 'R1c R8207' ], + 'OPPOT29' => [ 'Oppo', 'T29' ], + '(OPPO-?)?T703!' => [ 'Oppo', 'T703' ], + 'OPPOU701' => [ 'Oppo', 'Ulike U701' ], + 'U701' => [ 'Oppo', 'Ulike U701' ], + 'U701T' => [ 'Oppo', 'U701T' ], + 'U702' => [ 'Oppo', 'U702' ], + 'U705' => [ 'Oppo', 'U705' ], + 'U705T' => [ 'Oppo', 'Ulike 2 U705T' ], + 'U705W' => [ 'Oppo', 'Ulike 2 U705W' ], + 'U707' => [ 'Oppo', 'Find Way S U707' ], + 'U707T' => [ 'Oppo', 'Find Way S U707T' ], + 'U708' => [ 'Oppo', 'U2S U708' ], + 'U7011' => [ 'Oppo', 'Find Gemini U7011' ], + 'OPPOU7011' => [ 'Oppo', 'Find Gemini U7011' ], + 'OPPOU7015' => [ 'Oppo', 'Find Way U7015' ], + 'U7015' => [ 'Oppo', 'Find Way U7015' ], + 'A51w' => [ 'Oppo', 'Mirror 5' ], + 'OPPO N1' => [ 'Oppo', 'N1' ], + 'N51(10|11|16|17)!' => [ 'Oppo', 'N1 mini' ], + 'N52(06|07|09)!' => [ 'Oppo', 'N3' ], + 'OPPO R7' => [ 'Oppo', 'R7' ], + 'R7f' => [ 'Oppo', 'R7f' ], + 'R7i' => [ 'Oppo', 'R7i' ], + 'R7kf' => [ 'Oppo', 'R7kf' ], + 'OPPO R7s' => [ 'Oppo', 'R7s' ], + 'R7sf' => [ 'Oppo', 'R7sf' ], + 'OPPO R7sm' => [ 'Oppo', 'R7sm' ], + 'OPPO R7st' => [ 'Oppo', 'R7st' ], + 'OPPO R7t' => [ 'Oppo', 'R7t' ], + 'OPPO R9m' => [ 'Oppo', 'R9m' ], + 'OPPO R9tm' => [ 'Oppo', 'R9tm' ], + 'OPPO R9km' => [ 'Oppo', 'R9km' ], + 'OPPO R9s' => [ 'Oppo', 'R9s' ], + 'OPPO R9sk' => [ 'Oppo', 'R9sk' ], + 'OPPO R9st' => [ 'Oppo', 'R9st' ], + 'OPPO R9t' => [ 'Oppo', 'R9t' ], + 'OPPO R9tm' => [ 'Oppo', 'R9tm' ], + 'OPPO R11' => [ 'Oppo', 'R11' ], + 'OPPO R11t' => [ 'Oppo', 'R11t' ], + 'OPPO R7 Plus' => [ 'Oppo', 'R7 Plus' ], + 'R7Plus' => [ 'Oppo', 'R7 Plus' ], + 'R7plusf' => [ 'Oppo', 'R7 Plus' ], + 'R7Plusm' => [ 'Oppo', 'R7 Plus' ], + 'OPPO R7sPlus' => [ 'Oppo', 'R7s Plus' ], + 'OPPO R9 Plusm A' => [ 'Oppo', 'R9 Plus' ], + 'OPPO R9 Plustm A' => [ 'Oppo', 'R9 Plus' ], + 'CPH1611' => [ 'Oppo', 'R9s Plus' ], + 'OPPO R9s Plus' => [ 'Oppo', 'R9s Plus' ], + 'OPPO R11 Plus' => [ 'Oppo', 'R11 Plus' ], + 'OPPO R11 Plusk' => [ 'Oppo', 'R11 Plus' ], + 'OPPO R11 Pluskt' => [ 'Oppo', 'R11 Plus' ], + 'OPPO R11s Plus' => [ 'Oppo', 'R11s Plus' ], + 'W8' => [ 'Oppo', 'W8' ], + '1105' => [ 'Oppo', '1105' ], + '1107' => [ 'Oppo', '1107' ], + 'OB-OPPO 3005' => [ 'Oppo', '3005' ], + + 'OPSSON!!' => [ + 'OPSSON D1' => [ 'Opsson', 'D1' ], + 'OPSSON D1s' => [ 'Opsson', 'D1s' ], + 'OPSSON S1' => [ 'Opsson', 'S1' ], + 'OPSSON S7' => [ 'Opsson', 'S7' ], + 'OPSSON X5' => [ 'Opsson', 'X5' ], + 'OPSSON IDO 5000' => [ 'Opsson', 'IDO 5000' ], + 'OPSSON IDO5300' => [ 'Opsson', 'IDO 5300' ], + 'OPSSON IDO 5311' => [ 'Opsson', 'IDO 5311' ], + 'OPSSON IDO 5322' => [ 'Opsson', 'IDO 5322' ], + 'OPSSON IDO5355' => [ 'Opsson', 'IDO 5355' ], + 'OPSSON iMO850' => [ 'Opsson', 'IMO 850' ], + 'OPSSON iMO1000' => [ 'Opsson', 'IMO 1000' ], + 'OPSSON IVO6600' => [ 'Opsson', 'IVO 6600' ], + 'OPSSON IVO6622' => [ 'Opsson', 'IVO 6622' ], + 'OPSSON IVO6633' => [ 'Opsson', 'IVO 6633' ], + 'OPSSON IVO6655' => [ 'Opsson', 'IVO 6655' ], + 'OPSSON IVO6666' => [ 'Opsson', 'IVO 6666' ], + 'OPSSON IVO 6677' => [ 'Opsson', 'IVO 6677' ], + 'OPSSON IVO 8800' => [ 'Opsson', 'IVO 8800' ], + ], + + 'OP0118-12' => [ 'Oregon Scientific', 'Meep!', DeviceType::TABLET ], + 'Bucare Y330-U05' => [ 'Orinoquia', 'Bucare Y330' ], + 'Kavak Y625-U03' => [ 'Orinoquia', 'Kavak Y625' ], + + 'K10000 Pro' => [ 'Oukitel', 'K10000 Pro' ], + + '(OV-|Overmax|Vertis)!!' => [ + 'OV-TB-07B' => [ 'Overmax', 'TB-07B', DeviceType::TABLET ], + 'OV-TB-08 II' => [ 'Overmax', 'TB-08 II', DeviceType::TABLET ], + 'OV-TB-O9C' => [ 'Overmax', 'TB-09C', DeviceType::TABLET ], + 'OV-BaseCore10' => [ 'Overmax', 'BaseCore 10', DeviceType::TABLET ], + 'OV-BaseoneII' => [ 'Overmax', 'BaseOne II', DeviceType::TABLET ], + 'OV-BasicTab' => [ 'Overmax', 'BasicTab', DeviceType::TABLET ], + 'OV-DualDriveMax2' => [ 'Overmax', 'DualDrive Max II', DeviceType::TABLET ], + 'OV-Newbase2' => [ 'Overmax', 'NewBase 2', DeviceType::TABLET ], + 'OV-Quattor10' => [ 'Overmax', 'Quatttor 10', DeviceType::TABLET ], + 'OV-Quattor 10+' => [ 'Overmax', 'Quatttor 10+', DeviceType::TABLET ], + 'OV-Solution 7II' => [ 'Overmax', 'Solution 7 II', DeviceType::TABLET ], + 'OV-Solution 10II' => [ 'Overmax', 'Solution 10 II', DeviceType::TABLET ], + 'OV-SteelCore7' => [ 'Overmax', 'SteelCore 7', DeviceType::TABLET ], + 'OV-STEELCORE 10+ (Z)' => [ 'Overmax', 'SteelCore 10+', DeviceType::TABLET ], + 'OV-SteelCore10+II' => [ 'Overmax', 'SteelCore 10+ II', DeviceType::TABLET ], + 'OV-Steelcore10III' => [ 'Overmax', 'SteelCore 10 III', DeviceType::TABLET ], + 'OV-Steelcore 10III(Z)' => [ 'Overmax', 'SteelCore 10 III', DeviceType::TABLET ], + 'Overmax Vertis' => [ 'Overmax', 'Vertis 01' ], + 'Overmax Vertis 01' => [ 'Overmax', 'Vertis 01' ], + 'OV-Vertis-01' => [ 'Overmax', 'Vertis 01' ], + 'OV-Vertis-02' => [ 'Overmax', 'Vertis 02' ], + 'Vertis Expi' => [ 'Overmax', 'Vertis Expi' ], + 'Vertis Famy' => [ 'Overmax', 'Vertis Famy' ], + ], + + 'Arctic450' => [ 'Oysters', 'Arctic 450' ], + 'Oysters Pacific 800' => [ 'Oysters', 'Pacific 800' ], + 'Oysters T3 3G' => [ 'Oysters', 'T3' ], + 'Oysters T7B 3G' => [ 'Oysters', 'T7B' ], + 'Oysters T7X 3G' => [ 'Oysters', 'T7X' ], + 'OYSTERS T14N 3G' => [ 'Oysters', 'T14N' ], + 'Oysters T37' => [ 'Oysters', 'T37' ], + 'Oysters T72H 3G' => [ 'Oysters', 'T72' ], + 'Oysters T72HRi 3G' => [ 'Oysters', 'T72' ], + 'OYSTERS T80 3G' => [ 'Oysters', 'T80' ], + 'Liberty Tab G100' => [ 'Packard Bell', 'Liberty Tab G100', DeviceType::TABLET ], + 'G100W' => [ 'Packard Bell', 'Liberty Tab G100', DeviceType::TABLET ], + + 'P-0[0-9][A-Z]!!' => [ + 'P-01D' => [ 'Panasonic', 'P-01D', 'carrier' => 'DoCoMo' ], + 'P-02D' => [ 'Panasonic', 'LUMIX Phone P-02D', 'carrier' => 'DoCoMo' ], + 'P-02E' => [ 'Panasonic', 'ELUGA X P-02E', 'carrier' => 'DoCoMo' ], + 'P-03E' => [ 'Panasonic', 'ELUGA P P-03E', 'carrier' => 'DoCoMo' ], + 'P-04D' => [ 'Panasonic', 'P-04D', 'carrier' => 'DoCoMo' ], + 'P-05D' => [ 'Panasonic', 'P-05D', 'carrier' => 'Disney Mobile' ], + 'P-06D' => [ 'Panasonic', 'ELUGA V P-06D', 'carrier' => 'DoCoMo' ], + 'P-07C' => [ 'Panasonic', 'P-07C', 'carrier' => 'DoCoMo' ], + 'P-07D' => [ 'Panasonic', 'ELUGA power P-07D', 'carrier' => 'DoCoMo' ], + 'P-08D' => [ 'Panasonic', 'ELUGA Live P-08D', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + ], + + '003P' => [ 'Panasonic', 'Sweety 003P', 'carrier' => 'Softbank' ], + '101P' => [ 'Panasonic', 'LUMIX Phone 101P', 'carrier' => 'Softbank' ], + '102P' => [ 'Panasonic', 'ELUGA dL1 102P', 'carrier' => 'Softbank' ], + + 'DMC-CM1' => [ 'Panasonic', 'Lumix DMC-CM1', DeviceType::CAMERA ], + 'dL1' => [ 'Panasonic', 'Eluga dL1' ], + 'EB-4063-X' => [ 'Panasonic', 'Eluga X' ], + + 'Panasonic!!' => [ + 'Panasonic dL1' => [ 'Panasonic', 'Eluga dL1' ], + 'Panasonic ELUGA A' => [ 'Panasonic', 'Eluga A' ], + 'Panasonic ELUGA A2' => [ 'Panasonic', 'Eluga A2' ], + 'Panasonic ELUGA I' => [ 'Panasonic', 'Eluga I' ], + 'Panasonic Eluga I3' => [ 'Panasonic', 'Eluga I3' ], + 'Panasonic ELUGA L 4G' => [ 'Panasonic', 'Eluga L' ], + 'Panasonic ELUGA L2' => [ 'Panasonic', 'Eluga L2' ], + 'Panasonic ELUGA S' => [ 'Panasonic', 'Eluga S' ], + 'Panasonic ELUGA S Mini' => [ 'Panasonic', 'Eluga S Mini' ], + 'Panasonic ELUGA U' => [ 'Panasonic', 'Eluga U' ], + 'Panasonic ELUGA U2' => [ 'Panasonic', 'Eluga U2' ], + 'Panasonic ELUGA Arc' => [ 'Panasonic', 'Eluga Arc' ], + 'Panasonic ELUGA Icon' => [ 'Panasonic', 'Eluga Icon' ], + 'Panasonic ELUGA Icon 2' => [ 'Panasonic', 'Eluga Icon 2' ], + 'Panasonic ELUGA Mark' => [ 'Panasonic', 'Eluga Mark' ], + 'Panasonic ELUGA Switch' => [ 'Panasonic', 'Eluga Switch' ], + 'Panasonic ELUGA Tapp' => [ 'Panasonic', 'Eluga Tapp' ], + 'Panasonic ELUGA Z' => [ 'Panasonic', 'Eluga Z' ], + 'Panasonic P01 Novo' => [ 'Panasonic', 'P01 Novo' ], + 'Panasonic P02 Novo' => [ 'Panasonic', 'P02 Novo' ], + 'Panasonic P11' => [ 'Panasonic', 'P11' ], + 'Panasonic P31' => [ 'Panasonic', 'P31' ], + 'Panasonic P41' => [ 'Panasonic', 'P41' ], + 'Panasonic P41HD' => [ 'Panasonic', 'P41 HD' ], + 'Panasonic P51' => [ 'Panasonic', 'P51' ], + 'Panasonic P50' => [ 'Panasonic', 'P50' ], + 'Panasonic P55' => [ 'Panasonic', 'P55' ], + 'Panasonic P55 Novo' => [ 'Panasonic', 'P55 Novo' ], + 'Panasonic P61' => [ 'Panasonic', 'P61' ], + 'Panasonic P75' => [ 'Panasonic', 'P75' ], + 'Panasonic P77' => [ 'Panasonic', 'P77' ], + 'PanasonicP81' => [ 'Panasonic', 'P81' ], + 'Panasonic P81' => [ 'Panasonic', 'P81' ], + 'Panasonic P85' => [ 'Panasonic', 'P85' ], + 'Panasonic T9' => [ 'Panasonic', 'T9' ], + 'Panasonic T11' => [ 'Panasonic', 'T11' ], + 'Panasonic T21' => [ 'Panasonic', 'T21' ], + 'Panasonic T30' => [ 'Panasonic', 'T30' ], + 'Panasonic T31' => [ 'Panasonic', 'T31' ], + 'Panasonic T33' => [ 'Panasonic', 'T33' ], + 'Panasonic T35' => [ 'Panasonic', 'T35' ], + 'Panasonic T40' => [ 'Panasonic', 'T40' ], + 'Panasonic T41' => [ 'Panasonic', 'T41' ], + 'Panasonic T44' => [ 'Panasonic', 'T44' ], + 'Panasonic T45 4G' => [ 'Panasonic', 'T45' ], + 'Panasonic T50' => [ 'Panasonic', 'T50' ], + 'Panasonic KX-PRXA10' => [ 'Panasonic', 'KX-PRXA10', DeviceType::DECT ], + 'Panasonic KX-PRXA15' => [ 'Panasonic', 'KX-PRXA15', DeviceType::DECT ], + 'Panasonic SV-ME970' => [ 'Panasonic', 'Viera SV-ME970', DeviceType::TABLET ], + 'Panasonic SV-ME1000' => [ 'Panasonic', 'Viera SV-ME1000', DeviceType::TABLET ], + 'Panasonic SV-MV100' => [ 'Panasonic', 'SV-MV100', DeviceType::MEDIA ], + 'Panasonic UN-MT300' => [ 'Panasonic', 'UN-MT300', DeviceType::MEDIA ], + 'Panasonic UN-W700' => [ 'Panasonic', 'Multimedia System UN-W700', DeviceType::MEDIA ], + 'Panasonic UT-PB1' => [ 'Panasonic', 'Raboo UT-PB1', DeviceType::EREADER ], + ], + + 'Eluga A2' => [ 'Panasonic', 'Eluga A2' ], + 'ELUGA A3' => [ 'Panasonic', 'Eluga A3' ], + 'ELUGA A3 Pro' => [ 'Panasonic', 'Eluga A3 Pro' ], + 'ELUGA I2' => [ 'Panasonic', 'Eluga I2' ], + 'ELUGA I2 Activ' => [ 'Panasonic', 'Eluga I2 Activ' ], + 'ELUGA I4' => [ 'Panasonic', 'Eluga I4' ], + 'Eluga Arc 2' => [ 'Panasonic', 'Eluga Arc 2' ], + 'Eluga Mark 2' => [ 'Panasonic', 'Eluga Mark 2' ], + 'ELUGA Note' => [ 'Panasonic', 'Eluga Note' ], + 'ELUGA Prim' => [ 'Panasonic', 'Eluga Prim' ], + 'ELUGA Pulse X' => [ 'Panasonic', 'Eluga Pulse X' ], + 'ELUGA Ray' => [ 'Panasonic', 'Eluga Ray' ], + 'ELUGA Ray Max' => [ 'Panasonic', 'Eluga Ray Max' ], + 'ELUGA Ray X' => [ 'Panasonic', 'Eluga Ray X' ], + 'Eluga Ray 700' => [ 'Panasonic', 'Eluga Ray 700' ], + 'ELUGA Turbo' => [ 'Panasonic', 'Eluga Turbo' ], + + 'JT-H580VT' => [ 'Panasonic', 'BizPad 7', DeviceType::TABLET ], + 'JT-H581VT' => [ 'Panasonic', 'BizPad 10', DeviceType::TABLET ], + 'JT-B1' => [ 'Panasonic', 'Toughpad JT-B1', DeviceType::TABLET ], + 'FZ-A1(A|B)!' => [ 'Panasonic', 'Toughpad FZ-A1', DeviceType::TABLET ], + 'FZ-A2A' => [ 'Panasonic', 'Toughpad FZ-A2', DeviceType::TABLET ], + 'FZ-B2(B|D)!' => [ 'Panasonic', 'Toughpad FZ-B1', DeviceType::TABLET ], + 'FZ-N1' => [ 'Panasonic', 'Toughpad FZ-N1' ], + 'FZ-T1' => [ 'Panasonic', 'Toughbook FZ-T1' ], + 'FZ-X1' => [ 'Panasonic', 'Toughpad FZ-X1' ], + + 'Altus 18' => [ 'Panasonic', 'Altus 18', DeviceType::INFLIGHT ], + 'Altus 24' => [ 'Panasonic', 'Altus 24', DeviceType::INFLIGHT ], + 'Elite' => [ 'Panasonic', 'Elite', DeviceType::INFLIGHT ], + 'Elite 11' => [ 'Panasonic', 'Elite', DeviceType::INFLIGHT ], + 'Eco9 v1' => [ 'Panasonic', 'Eco 9', DeviceType::INFLIGHT ], + 'Eco9 v2' => [ 'Panasonic', 'Eco 9', DeviceType::INFLIGHT ], + 'Eco11 v2' => [ 'Panasonic', 'Eco 11', DeviceType::INFLIGHT ], + 'Smart Monitor 17' => [ 'Panasonic', 'Smart Monitor 17', DeviceType::INFLIGHT ], + + '(48|50|55)AX600C!' => [ 'Panasonic', 'Viera AX600C', DeviceType::TELEVISION ], + 'AX600C' => [ 'Panasonic', 'Viera AX600C', DeviceType::TELEVISION ], + 'AS650C' => [ 'Panasonic', 'Viera AS650C', DeviceType::TELEVISION ], + + 'VW RCBKK1' => [ 'Panasonic', 'Boukenkun Reciever VW-RCBKK1', DeviceType::TELEVISION ], + 'SMARTTVBOX' => [ 'Panasonic', 'SmartTVBox', DeviceType::TELEVISION ], + + 'pandigital9hr' => [ 'Pandigital', '9HR', DeviceType::TABLET ], + 'pandigital9hr2' => [ 'Pandigital', '9HR2', DeviceType::TABLET ], + 'pandigitalopc1' => [ 'Pandigital', 'OPC1', DeviceType::TABLET ], + 'pandigitalopp1' => [ 'Pandigital', 'OPP1', DeviceType::TABLET ], + 'pandigitalp1hr' => [ 'Pandigital', 'p1hr', DeviceType::TABLET ], + + '(SKY )?IM[- ][A-Z][0-9]{3,3}!!' => [ + 'SKY IM-A600S' => [ 'Pantech', 'SIRIUS α' ], + 'IM-A600!' => [ 'Pantech', 'SIRIUS α' ], + 'SKY IM-A630K' => [ 'Pantech', 'Izar' ], + 'IM-A630!' => [ 'Pantech', 'Izar' ], + 'SKY IM-A650S' => [ 'Pantech', 'Vega' ], + 'IM-A650!' => [ 'Pantech', 'Vega' ], + 'IM-A690!' => [ 'Pantech', 'Mirach' ], + 'IM[- ]A7(10|20)!' => [ 'Pantech', 'VegaXpress' ], + 'IM-A725!' => [ 'Pantech', 'Vega X+' ], + 'IM-A730!' => [ 'Pantech', 'Vega S' ], + 'IM-A7(40|50)!' => [ 'Pantech', 'Mirach A' ], + 'IM-A7(60|70|75|80)!' => [ 'Pantech', 'Vega Racer' ], + 'IM-A800!' => [ 'Pantech', 'Vega LTE' ], + 'IM-A810!' => [ 'Pantech', 'Vega LTE M' ], + 'IM-A820!' => [ 'Pantech', 'Vega LTE EX' ], + 'IM-A830!' => [ 'Pantech', 'Vega Racer 2' ], + 'IM-A840!' => [ 'Pantech', 'Vega S5' ], + 'IM-A850!' => [ 'Pantech', 'Vega R3' ], + 'IM-A860!' => [ 'Pantech', 'Vega NËš 6' ], + 'IM-A870!' => [ 'Pantech', 'Vega Iron' ], + 'IM-A880!' => [ 'Pantech', 'Vega LTE-A' ], + 'IM-A890!' => [ 'Pantech', 'Vega Secret Note' ], + 'IM-A900!' => [ 'Pantech', 'Vega Secret Up' ], + 'IM-A910!' => [ 'Pantech', 'Vega Iron 2' ], + 'IM-A920!' => [ 'Pantech', 'IM-A920' ], + 'IM-A930!' => [ 'Pantech', 'IM-A930' ], + 'IM-T100K' => [ 'Pantech', 'Vega NËš 5', DeviceType::TABLET ], + ], + + 'IM-100K' => [ 'Pantech', 'I`m back' ], + 'IM-100S' => [ 'Pantech', 'I`m back' ], + 'VEGA NO.6' => [ 'Pantech', 'Vega NËš 6' ], + 'PLANET' => [ 'Pantech', 'Pocket' ], + 'ADR8995!' => [ 'Pantech', 'Breakout' ], + 'ADR910L' => [ 'Pantech', 'Marauder' ], + 'ADR910L 4G' => [ 'Pantech', 'Marauder' ], + 'ADR930L' => [ 'Pantech', 'Perception' ], + 'ADR930L 4G' => [ 'Pantech', 'Perception' ], + + 'PantechP!!' => [ + 'PantechP4100!' => [ 'Pantech', 'Element', DeviceType::TABLET ], + 'PantechP7050!' => [ 'Pantech', 'P7050' ], + 'PantechP8000!' => [ 'Pantech', 'Crossover' ], + 'PantechP8010!' => [ 'Pantech', 'Flex' ], + 'PantechP9060!' => [ 'Pantech', 'Pocket' ], + 'PantechP9070!' => [ 'Pantech', 'Burst' ], + 'PantechP9090!' => [ 'Pantech', 'Magnus' ], + ], + + 'IS06' => [ 'Pantech', 'SIRIUS α IS06', 'carrier' => 'au' ], + 'PTL21' => [ 'Pantech', 'Vega PTL21', 'carrier' => 'au' ], + 'IS11PT' => [ 'Pantech', 'Mirach IS11PT', 'carrier' => 'au' ], + 'EIS01PT' => [ 'Pantech', 'EIS01PT', 'carrier' => 'au' ], + + 'FC6100' => [ 'Parrot', 'FC6100', DeviceType::CAR ], + 'chagall' => [ 'Pegatron', 'Chagall', DeviceType::TABLET ], + 'PAT712W' => [ 'Perfeo', '712 W', DeviceType::TABLET ], + '7500IPS' => [ 'Perfeo', '7500 IPS', DeviceType::TABLET ], + 'PATG7506HD' => [ 'Perfeo', '7506 HD', DeviceType::TABLET ], + 'X7G' => [ 'Pearl', 'Touchlet X7G', DeviceType::TABLET ], + 'Touchlet X10.dual' => [ 'Pearl', 'Touchlet X10.dual', DeviceType::TABLET ], + 'PP4MT-7' => [ 'Pendo', 'Pendopad 4', DeviceType::TABLET ], + 'PP4MT-9' => [ 'Pendo', 'Pendopad 4', DeviceType::TABLET ], + 'PNDPP4MT9G2' => [ 'Pendo', 'Pendopad 4', DeviceType::TABLET ], + 'PNDPP44QC7' => [ 'Pendo', 'Pendopad 7', DeviceType::TABLET ], + 'PNDPP48GP' => [ 'Pendo', 'Pendopad 8', DeviceType::TABLET ], + 'PNDPP4MT9G3' => [ 'Pendo', 'Pendopad 9.7', DeviceType::TABLET ], + 'PNDPP410GP' => [ 'Pendo', 'Pendopad 10.1', DeviceType::TABLET ], + + 'Penta!!' => [ + 'Penta IS701C' => [ 'Penta', 'T-Pad IS701C', DeviceType::TABLET ], + 'Penta IS701X' => [ 'Penta', 'T-Pad IS701X', DeviceType::TABLET ], + 'Penta IS703C' => [ 'Penta', 'T-Pad IS703C', DeviceType::TABLET ], + 'Penta WS702C' => [ 'Penta', 'T-Pad WS702C', DeviceType::TABLET ], + 'Penta WS704D' => [ 'Penta', 'T-Pad WS704D', DeviceType::TABLET ], + 'Penta WS704DX' => [ 'Penta', 'T-Pad WS704DX', DeviceType::TABLET ], + 'Penta WS704X' => [ 'Penta', 'T-Pad WS704X', DeviceType::TABLET ], + 'Penta WS707C' => [ 'Penta', 'T-Pad WS707C', DeviceType::TABLET ], + 'Penta WS802C' => [ 'Penta', 'T-Pad WS802C', DeviceType::TABLET ], + 'Penta WS907Q' => [ 'Penta', 'T-Pad WS907Q', DeviceType::TABLET ], + 'Penta PS650' => [ 'Penta', 'PS650', DeviceType::TABLET ], + ], + + 'IS703C' => [ 'Penta', 'T-Pad IS703C', DeviceType::TABLET ], + 'IS801C' => [ 'Penta', 'T-Pad IS801C', DeviceType::TABLET ], + + 'Pentagram!!' => [ + 'Pentagram Ego' => [ 'Pentagram', 'Ego' ], + 'PENTAGRAM EON PRIX' => [ 'Pentagram', 'Eon PRIX', DeviceType::TABLET ], + 'Pentagram Monster' => [ 'Pentagram', 'Monster' ], + 'PENTAGRAM TAB 7.3' => [ 'Pentagram', 'Tab 7.3', DeviceType::TABLET ], + 'PENTAGRAM TAB 7.5' => [ 'Pentagram', 'Tab 7.5', DeviceType::TABLET ], + 'PentagramTAB7.6' => [ 'Pentagram', 'Tab 7.6', DeviceType::TABLET ], + 'PENTAGRAM TAB Quadra 9.7' => [ 'Pentagram', 'Quadra 9.7', DeviceType::TABLET ], + ], + + 'PHICOMM!!' => [ + 'PHICOMM CLUE L' => [ 'Phicomm', 'Clue L' ], + 'PHICOMM ENERGY M' => [ 'Phicomm', 'Energy M' ], + 'PHICOMM Energy M+' => [ 'Phicomm', 'Energy M+' ], + 'PHICOMM CLUE C230' => [ 'Phicomm', 'C230' ], + 'PHICOMM C230v' => [ 'Phicomm', 'C230v' ], + 'Phicomm C230w' => [ 'Phicomm', 'C230w' ], + 'PHICOMM C630' => [ 'Phicomm', 'C630' ], + 'PHICOMM-E561Lv' => [ 'Phicomm', 'E561Lv' ], + 'PHICOMM E653' => [ 'Phicomm', 'E653' ], + 'PHICOMM i360' => [ 'Phicomm', 'i360' ], + 'PHICOMM i370' => [ 'Phicomm', 'i370' ], + 'PHICOMM i508' => [ 'Phicomm', 'i508' ], + 'PHICOMM i600' => [ 'Phicomm', 'i600' ], + 'PHICOMM-i700v' => [ 'Phicomm', 'i700v' ], + 'PHICOMM i800' => [ 'Phicomm', 'i800' ], + 'PHICOMM i803' => [ 'Phicomm', 'i803' ], + 'PHICOMM i803wa' => [ 'Phicomm', 'i803wa' ], + 'PHICOMM i813' => [ 'Phicomm', 'i813' ], + 'PHICOMM P660' => [ 'Phicomm', 'Passion P660' ], + 'PHICOMM X100w' => [ 'Phicomm', 'X100w' ], + 'PHICOMM X100wEU' => [ 'Phicomm', 'X100w' ], + 'PHICOMM X130v' => [ 'Phicomm', 'X130v' ], + 'PHICOMM X130va' => [ 'Phicomm', 'X130va' ], + 'PHICOMM X130wEU' => [ 'Phicomm', 'X130W' ], + ], + + 'FWS[0-9]{3,3}!!' => [ + 'FWS610' => [ 'Phicomm', 'FWS610' ], + 'FWS610 EU' => [ 'Phicomm', 'FWS610' ], + 'FWS710' => [ 'Phicomm', 'FWS710' ], + 'FWS710EU' => [ 'Phicomm', 'FWS710' ], + 'FWS710a' => [ 'Phicomm', 'FWS710' ], + 'FWS810' => [ 'Phicomm', 'FWS810' ], + ], + + 'i803w' => [ 'Phicomm', 'i803w' ], + 'Philips I908' => [ 'Philips', 'I908' ], + 'Philips I928' => [ 'Philips', 'I928' ], + 'Philips S301' => [ 'Philips', 'S301' ], + 'Philips S307' => [ 'Philips', 'S307' ], + 'Philips S308' => [ 'Philips', 'S308' ], + 'Philips S309' => [ 'Philips', 'S309' ], + 'Philips S316T' => [ 'Philips', 'S316T' ], + 'Philips S326' => [ 'Philips', 'S326' ], + 'Philips S337' => [ 'Philips', 'S337' ], + 'Philips S358' => [ 'Philips', 'S358' ], + 'Philips S388!' => [ 'Philips', 'S388' ], + 'Philips S396' => [ 'Philips', 'S396' ], + 'Philips S398' => [ 'Philips', 'S398' ], + 'Philips S616' => [ 'Philips', 'S616' ], + 'Philips T3500' => [ 'Philips', 'T3500' ], + 'Philips T3566' => [ 'Philips', 'T3566' ], + + 'Philips V377' => [ 'Philips', 'Xenium V377' ], + 'Philips V387' => [ 'Philips', 'Xenium V387' ], + 'Philips V526' => [ 'Philips', 'Xenium V526' ], + 'Philips V787' => [ 'Philips', 'Xenium V787' ], + 'Philips Xenium V787' => [ 'Philips', 'Xenium V787' ], + 'Philips X588' => [ 'Philips', 'Xenium X588' ], + + + 'Philips W336' => [ 'Philips', 'W336' ], + 'W337' => [ 'Philips', 'W337' ], + 'Philips W536' => [ 'Philips', 'W536' ], + 'Philips W626' => [ 'Philips', 'W626' ], + 'W626' => [ 'Philips', 'W626' ], + 'Philips W632' => [ 'Philips', 'W632' ], + 'Philips W635' => [ 'Philips', 'W635' ], + 'PhilipsW635' => [ 'Philips', 'W635' ], + 'Philips W737' => [ 'Philips', 'W737' ], + 'Philips W832' => [ 'Philips', 'W832' ], + 'Philips W3500' => [ 'Philips', 'W3500' ], + 'Philips W3509' => [ 'Philips', 'W3509' ], + 'Philips W3550' => [ 'Philips', 'W3550' ], + 'Philips W3568' => [ 'Philips', 'W3568' ], + 'W3620' => [ 'Philips', 'W3620' ], + 'W5510' => [ 'Philips', 'W5510' ], + 'W6350' => [ 'Philips', 'W6350' ], + 'Philips W6350' => [ 'Philips', 'W6350' ], + 'PhilipsW6350' => [ 'Philips', 'W6350' ], + 'W6360' => [ 'Philips', 'W6360' ], + 'W6500' => [ 'Philips', 'W6500' ], + 'Philips W6610' => [ 'Philips', 'W6610' ], + 'W6620' => [ 'Philips', 'W6620' ], + 'Philips W6618' => [ 'Philips', 'W6618' ], + 'Philips W7555' => [ 'Philips', 'W7555' ], + 'Philips-W7555' => [ 'Philips', 'W7555' ], + 'Philips-W8500' => [ 'Philips', 'W8500' ], + 'Philips W8510' => [ 'Philips', 'W8510' ], + 'Philips W8555' => [ 'Philips', 'W8555' ], + 'Philips W8560' => [ 'Philips', 'W8560' ], + + 'SA3CNT' => [ 'Philips', 'GoGear', DeviceType::MEDIA ], + 'Philips GoGear Connect' => [ 'Philips', 'GoGear Connect', DeviceType::MEDIA ], + + 'PI2000' => [ 'Philips', 'PI2000', DeviceType::TABLET ], + 'PI2010' => [ 'Philips', 'PI2010', DeviceType::TABLET ], + 'PI2011' => [ 'Philips', 'PI2011', DeviceType::TABLET ], + 'PI3100' => [ 'Philips', 'PI3100', DeviceType::TABLET ], + 'PI3100-93' => [ 'Philips', 'PI3100', DeviceType::TABLET ], + 'PI3100Z3 93' => [ 'Philips', 'PI3100', DeviceType::TABLET ], + 'PI3105' => [ 'Philips', 'PI3105', DeviceType::TABLET ], + 'PI3106' => [ 'Philips', 'PI3106', DeviceType::TABLET ], + 'PI3110' => [ 'Philips', 'PI3110', DeviceType::TABLET ], + 'PI3205G' => [ 'Philips', 'PI3205', DeviceType::TABLET ], + 'PI3210G' => [ 'Philips', 'PI3210', DeviceType::TABLET ], + 'PI3900' => [ 'Philips', 'PI3900', DeviceType::TABLET ], + 'PI3900-93' => [ 'Philips', 'PI3900', DeviceType::TABLET ], + 'PI3910' => [ 'Philips', 'PI3910', DeviceType::TABLET ], + 'PI4010G' => [ 'Philips', 'PI4010', DeviceType::TABLET ], + 'Philips PI5000' => [ 'Philips', 'PI5000', DeviceType::TABLET ], + 'PI7000' => [ 'Philips', 'PI7000', DeviceType::TABLET ], + 'PI7100 93' => [ 'Philips', 'PI7100', DeviceType::TABLET ], + + '[0-9]{2,2}PFH6[0-9]{3,3}!' => [ 'Philips', '6000 Series', DeviceType::TELEVISION ], + 'AND1E' => [ 'Philips', 'Android TV (2014)', DeviceType::TELEVISION ], + 'AND1E TV' => [ 'Philips', 'Android TV (2014)', DeviceType::TELEVISION ], + 'HMP8100 ATV 93' => [ 'Philips', 'Smart TV Box', DeviceType::TELEVISION ], + 'HMP8100 ATV INT' => [ 'Philips', 'Smart TV Box', DeviceType::TELEVISION ], + + 'G2SMNT' => [ 'Philips', 'Smart All-in-One', DeviceType::MONITOR ], + 'G3SMNTS22' => [ 'Philips', 'Smart All-in-One', DeviceType::MONITOR ], + 'G3SMNTS23' => [ 'Philips', 'Smart All-in-One', DeviceType::MONITOR ], + + 'BIP-6000' => [ 'Pidion', 'BIP-6000' ], + + 'XDP-100R' => [ 'Pioneer', 'XDP-100R', DeviceType::MEDIA ], + + '(PNR-)?Pioneer!!' => [ + 'Pioneer E71t' => [ 'Pioneer', 'E71t' ], + 'Pioneer E80w' => [ 'Pioneer', 'E80w' ], + 'Pioneer E81c' => [ 'Pioneer', 'E81c' ], + 'PNR-Pioneer E81c' => [ 'Pioneer', 'E81c' ], + 'Pioneer E90w' => [ 'Pioneer', 'E90w' ], + 'Pioneer P81' => [ 'Pioneer', 'P81' ], + 'Pioneer S90w' => [ 'Pioneer', 'S90w' ], + ], + + 'E60w' => [ 'Pioneer', 'E60w' ], + + 'M6' => [ 'PiPO', 'M6', DeviceType::TABLET ], + 'M8 pro' => [ 'PiPO', 'M8 Pro', DeviceType::TABLET ], + 'M9 pro' => [ 'PiPO', 'M9 Pro', DeviceType::TABLET ], + + 'PIRANHA!!' => [ + 'PIRANHA BUSINESS TAB 7"' => [ 'Piranha', 'Business Tab 7.0', DeviceType::TABLET ], + 'PIRANHA BUSINESS TAB 10.1' => [ 'Piranha', 'Business Tab 10.1', DeviceType::TABLET ], + 'PIRANHA BUSINESS TAB 10.1 ZEUS WHITE' => [ 'Piranha', 'Business Tab 10.1', DeviceType::TABLET ], + 'PIRANHA BUSINESS II TAB 9.0' => [ 'Piranha', 'Business II Tab 9.0', DeviceType::TABLET ], + 'PIRANHA BUSINESS II TAB 9"' => [ 'Piranha', 'Business II Tab 9.0', DeviceType::TABLET ], + 'PIRANHA BUSINESS III TAB 10.1 ZEUS WHITE' => [ 'Piranha', 'Business III Tab 10.1', DeviceType::TABLET ], + 'PIRANHA BUSINESS III TAB 10.1' => [ 'Piranha', 'Business III Tab 10.1', DeviceType::TABLET ], + 'PIRANHA Pro II Tab 7.0' => [ 'Piranha', 'Pro II Tab 7.0', DeviceType::TABLET ], + 'PIRANHA Ultra Tab 7.0' => [ 'Piranha', 'Ultra Tab 7.0', DeviceType::TABLET ], + 'PIRANHA Ultra Tab Zeus White 10.1' => [ 'Piranha', 'Ultra Tab 10.1', DeviceType::TABLET ], + 'PIRANHA ULTRA TAB 10.1"' => [ 'Piranha', 'Ultra Tab 10.1', DeviceType::TABLET ], + 'PIRANHA ULTRA II TAB 7' => [ 'Piranha', 'Ultra II Tab 7.0', DeviceType::TABLET ], + 'PIRANHA Ultra II TAB 9.0' => [ 'Piranha', 'Ultra II Tab 9.0', DeviceType::TABLET ], + ], + + 'PGM 398' => [ 'Pixcom', 'PGM 398' ], + 'Playboy PB-S3' => [ 'Playboy', 'Note 5' ], + + '(PLOYER-)?MOMO!!' => [ + 'PLOYER-MOMO' => [ 'Ployer', 'MOMO', DeviceType::TABLET ], + 'MOMO' => [ 'Ployer', 'MOMO', DeviceType::TABLET ], + 'momo-mini' => [ 'Ployer', 'MOMO Mini', DeviceType::TABLET ], + 'MOMO7' => [ 'Ployer', 'MOMO7', DeviceType::TABLET ], + 'MOMO7star' => [ 'Ployer', 'MOMO7 Star', DeviceType::TABLET ], + 'MOMO7 Talent' => [ 'Ployer', 'MOMO7 Talent', DeviceType::TABLET ], + 'MOMO8' => [ 'Ployer', 'MOMO8', DeviceType::TABLET ], + 'MOMO8A' => [ 'Ployer', 'MOMO8 A', DeviceType::TABLET ], + 'MOMO8 bird' => [ 'Ployer', 'MOMO8 Bird', DeviceType::TABLET ], + 'MOMO8 Star!' => [ 'Ployer', 'MOMO8 Star', DeviceType::TABLET ], + 'MOMO8 Xing!' => [ 'Ployer', 'MOMO8 Xing', DeviceType::TABLET ], + 'MOMO9' => [ 'Ployer', 'MOMO9', DeviceType::TABLET ], + 'MOMO93G' => [ 'Ployer', 'MOMO9 3G', DeviceType::TABLET ], + 'MOMO9 3G' => [ 'Ployer', 'MOMO9 3G', DeviceType::TABLET ], + 'MOMO9-V P706' => [ 'Ployer', 'MOMO9 V', DeviceType::TABLET ], + 'MOMO9 STAR' => [ 'Ployer', 'MOMO9 Star', DeviceType::TABLET ], + 'MOMO9star' => [ 'Ployer', 'MOMO9 Star', DeviceType::TABLET ], + 'MOMO9 plus III' => [ 'Ployer', 'MOMO9 Plus III', DeviceType::TABLET ], + 'MOMO9-3' => [ 'Ployer', 'MOMO9 III', DeviceType::TABLET ], + 'MOMO9-3S' => [ 'Ployer', 'MOMO9 III', DeviceType::TABLET ], + 'MOMO9 Plus-3' => [ 'Ployer', 'MOMO9 III', DeviceType::TABLET ], + 'MOMO9 3GQ' => [ 'Ployer', 'MOMO9 3GQ', DeviceType::TABLET ], + 'MOMO11' => [ 'Ployer', 'MOMO11', DeviceType::TABLET ], + 'MOMO11 III' => [ 'Ployer', 'MOMO11 III', DeviceType::TABLET ], + 'MOMO11-3' => [ 'Ployer', 'MOMO11 III', DeviceType::TABLET ], + 'MOMO11 bird' => [ 'Ployer', 'MOMO11 Bird', DeviceType::TABLET ], + 'MOMO11bird3' => [ 'Ployer', 'MOMO11 Bird 3', DeviceType::TABLET ], + 'MOMO11 bird3' => [ 'Ployer', 'MOMO11 Bird 3', DeviceType::TABLET ], + 'MOMO11Master' => [ 'Ployer', 'MOMO11 Master', DeviceType::TABLET ], + 'MOMO11Speed' => [ 'Ployer', 'MOMO11 Speed', DeviceType::TABLET ], + 'MOMO11speed3' => [ 'Ployer', 'MOMO11 Speed 3', DeviceType::TABLET ], + 'MOMO12' => [ 'Ployer', 'MOMO12', DeviceType::TABLET ], + 'MOMO15' => [ 'Ployer', 'MOMO15', DeviceType::TABLET ], + 'MOMO19' => [ 'Ployer', 'MOMO19', DeviceType::TABLET ], + 'MOMO19HD' => [ 'Ployer', 'MOMO19 HD', DeviceType::TABLET ], + 'MOMO20' => [ 'Ployer', 'MOMO20', DeviceType::TABLET ], + 'MOMO20-AU' => [ 'Ployer', 'MOMO20', DeviceType::TABLET ], + 'MOMO20S' => [ 'Ployer', 'MOMO20', DeviceType::TABLET ], + ], + + 'PocketBook A7' => [ 'PocketBook', 'A7', DeviceType::TABLET ], + 'PocketBook A10' => [ 'PocketBook', 'A10', DeviceType::TABLET ], + 'PocketBook A10 3G' => [ 'PocketBook', 'A10 3G', DeviceType::TABLET ], + 'Obreey SURFpad' => [ 'PocketBook', 'SURFpad', DeviceType::TABLET ], + 'PocketBook SURFpad2' => [ 'PocketBook', 'SURFpad 2', DeviceType::TABLET ], + 'PocketBook SURFpad 3 (7,85")' => [ 'PocketBook', 'SURFpad 3', DeviceType::TABLET ], + 'PocketBook SURFpad 4 S' => [ 'PocketBook', 'SURFpad 4 S', DeviceType::TABLET ], + 'PocketBook SURFpad 4 M' => [ 'PocketBook', 'SURFpad 4 M', DeviceType::TABLET ], + 'PocketBook SURFpad 4 L' => [ 'PocketBook', 'SURFpad 4 L', DeviceType::TABLET ], + 'MOB-5045' => [ 'Point Of View', 'Mobii Phone 5045' ], + 'Mobii 7' => [ 'Point Of View', 'Mobii 7', DeviceType::TABLET ], + 'POV-Mobii-7' => [ 'Point Of View', 'Mobii 7', DeviceType::TABLET ], + 'POV Mobii 7' => [ 'Point Of View', 'Mobii 7', DeviceType::TABLET ], + 'POV TAB-P506!' => [ 'Point Of View', 'Mobii 506', DeviceType::TABLET ], + 'POV TAB-P517!' => [ 'Point Of View', 'Mobii 517', DeviceType::TABLET ], + 'POV TAB-P527!' => [ 'Point Of View', 'Mobii 527', DeviceType::TABLET ], + 'POV TAB-P629!' => [ 'Point Of View', 'Mobii 629', DeviceType::TABLET ], + 'POV TAB-P701!' => [ 'Point Of View', 'Mobii 701', DeviceType::TABLET ], + 'POV TAB-P703!' => [ 'Point Of View', 'Mobii 703', DeviceType::TABLET ], + 'POV TAB-P720!' => [ 'Point Of View', 'Mobii 720', DeviceType::TABLET ], + 'POV TAB-P721A!' => [ 'Point Of View', 'Mobii 721A', DeviceType::TABLET ], + 'POV TAB-P721!' => [ 'Point Of View', 'Mobii 721', DeviceType::TABLET ], + 'POV TAB-P722C!' => [ 'Point Of View', 'Mobii 722C', DeviceType::TABLET ], + 'POV TAB-P731N!' => [ 'Point Of View', 'Mobii 731N', DeviceType::TABLET ], + 'POV TAB-P825!' => [ 'Point Of View', 'Mobii 825', DeviceType::TABLET ], + 'POV TAB-P925!' => [ 'Point Of View', 'Mobii 925', DeviceType::TABLET ], + 'POV TAB-PR945!' => [ 'Point Of View', 'Mobii 945 HD+', DeviceType::TABLET ], + 'POV TAB-P1025!' => [ 'Point Of View', 'Mobii 1025', DeviceType::TABLET ], + 'POV TAB-P1030!' => [ 'Point Of View', 'Mobii 1030', DeviceType::TABLET ], + 'POV TAB-PI1045!' => [ 'Point Of View', 'Mobii 1045', DeviceType::TABLET ], + 'POV TAB-P1325!' => [ 'Point Of View', 'Mobii 1325', DeviceType::TABLET ], + 'PlayTabPro' => [ 'Point Of View', 'PlayTabPro', DeviceType::TABLET ], + '(POV )?TAB-PLAYTABPRO!' => [ 'Point Of View', 'PlayTabPro', DeviceType::TABLET ], + '(POV )?TAB-PROTAB25!' => [ 'Point Of View', 'ProTab 25', DeviceType::TABLET ], + '(POV )?TAB-PROTAB26!' => [ 'Point Of View', 'ProTab 26', DeviceType::TABLET ], + 'POV TAB-PROTAB27' => [ 'Point Of View', 'ProTab 27', DeviceType::TABLET ], + '(POV )?TAB-PROTAB30!' => [ 'Point Of View', 'ProTab 30', DeviceType::TABLET ], + 'TAB-PROTAB2-IPS9' => [ 'Point Of View', 'ProTab2', DeviceType::TABLET ], + 'TAB-PROTAB2-IPS-3G' => [ 'Point Of View', 'ProTab2', DeviceType::TABLET ], + 'TAB-PROTAB2-IPS-16' => [ 'Point Of View', 'ProTab2', DeviceType::TABLET ], + 'TAB-PROTAB2.4' => [ 'Point Of View', 'ProTab2 4', DeviceType::TABLET ], + 'TAB-PROTAB2XL' => [ 'Point Of View', 'ProTab2 XL', DeviceType::TABLET ], + 'TAB-PROTAB2.4XL' => [ 'Point Of View', 'ProTab2 XL 4', DeviceType::TABLET ], + 'PROTAB2XXL' => [ 'Point Of View', 'ProTab2 XXL', DeviceType::TABLET ], + 'TAB-PROTAB2XXL' => [ 'Point Of View', 'ProTab2 XXL', DeviceType::TABLET ], + 'TAB-PROTAB2XXL(4)' => [ 'Point Of View', 'ProTab2 XXL', DeviceType::TABLET ], + '(POV )?TAB-PROTAB2XXL(4)!' => [ 'Point Of View', 'ProTab2 XXL', DeviceType::TABLET ], + '(POV )?TAB NAVI7 3G M!' => [ 'Point Of View', 'Onyx 507', DeviceType::TABLET ], + 'POV_TAB-NAVI7-3G-M' => [ 'Point Of View', 'Onyx 507', DeviceType::TABLET ], + 'POV TAB-P547(v1.0)' => [ 'Point Of View', 'Onyx 547', DeviceType::TABLET ], + 'POV TV-HDMI-200BT' => [ 'Point Of View', 'Smart TV', DeviceType::TELEVISION ], + 'POV TV-HDMI-200BT(V2.0)' => [ 'Point Of View', 'Smart TV', DeviceType::TELEVISION ], + 'POV TV-HDMI-210' => [ 'Point Of View', 'Smart TV', DeviceType::TELEVISION ], + 'POV TV-HDMI-KB-01' => [ 'Point Of View', 'Smart TV', DeviceType::TELEVISION ], + 'POV TV-SMARTTV-500' => [ 'Point Of View', 'Smart TV', DeviceType::TELEVISION ], + + 'MID[C012]!!' => [ + 'MIDC409' => [ 'Polaroid', 'Diamond III 9', DeviceType::TABLET ], + 'MIDC410' => [ 'Polaroid', 'Diamond 10.1', DeviceType::TABLET ], + 'MID2407' => [ 'Polaroid', 'Infinite 7', DeviceType::TABLET ], + 'MID1014' => [ 'Polaroid', 'Pearl 10.1', DeviceType::TABLET ], + 'MID1047' => [ 'Polaroid', 'Platinum 10.1', DeviceType::TABLET ], + 'MIDC407' => [ 'Polaroid', 'Rainbow 7', DeviceType::TABLET ], + 'MID0714' => [ 'Polaroid', 'MID0714', DeviceType::TABLET ], + 'MID0714PCE01' => [ 'Polaroid', 'MID0714', DeviceType::TABLET ], + 'MID0714PGE02.133' => [ 'Polaroid', 'MID0714', DeviceType::TABLET ], + 'MIDC010PR001' => [ 'Polaroid', 'MIDC010', DeviceType::TABLET ], + 'MIDC110' => [ 'Polaroid', 'MIDC110', DeviceType::TABLET ], + 'MIDC124' => [ 'Polaroid', 'MIDC124', DeviceType::TABLET ], + 'MIDC127' => [ 'Polaroid', 'MIDC127', DeviceType::TABLET ], + 'MIDC128' => [ 'Polaroid', 'MIDC128', DeviceType::TABLET ], + 'MIDC408' => [ 'Polaroid', 'MIDC408', DeviceType::TABLET ], + 'MIDC408PR002' => [ 'Polaroid', 'MIDC408', DeviceType::TABLET ], + 'MIDC410PR' => [ 'Polaroid', 'MIDC410', DeviceType::TABLET ], + 'MIDC430' => [ 'Polaroid', 'MIDC430', DeviceType::TABLET ], + 'MIDC497' => [ 'Polaroid', 'MIDC497', DeviceType::TABLET ], + 'MIDC700PR001' => [ 'Polaroid', 'MIDC700', DeviceType::TABLET ], + 'MIDC800PR001' => [ 'Polaroid', 'MIDC800', DeviceType::TABLET ], + 'MIDC801' => [ 'Polaroid', 'MIDC801', DeviceType::TABLET ], + 'MIDC802' => [ 'Polaroid', 'MIDC802', DeviceType::TABLET ], + 'MIDC901' => [ 'Polaroid', 'MIDC901', DeviceType::TABLET ], + 'MIDC970' => [ 'Polaroid', 'MIDC970', DeviceType::TABLET ], + 'MIDCD10' => [ 'Polaroid', 'MIDCD10', DeviceType::TABLET ], + 'MIDCD97' => [ 'Polaroid', 'MIDCD97', DeviceType::TABLET ], + ], + + 'PMID!!' => [ + 'PMID70C' => [ 'Polaroid', 'PMID 70c', DeviceType::TABLET ], + 'PMID70DC' => [ 'Polaroid', 'PMID 70dc', DeviceType::TABLET ], + 'PMID71C' => [ 'Polaroid', 'PMID 71c', DeviceType::TABLET ], + 'PMID80C' => [ 'Polaroid', 'PMID 80c', DeviceType::TABLET ], + 'PMID700' => [ 'Polaroid', 'PMID 700', DeviceType::TABLET ], + 'PMID700BF' => [ 'Polaroid', 'PMID 700bf', DeviceType::TABLET ], + 'PMID701C' => [ 'Polaroid', 'PMID 701c', DeviceType::TABLET ], + 'PMID701DC' => [ 'Polaroid', 'PMID 701dc', DeviceType::TABLET ], + 'PMID702DC' => [ 'Polaroid', 'PMID 702dc', DeviceType::TABLET ], + 'PMID703C' => [ 'Polaroid', 'PMID 703c', DeviceType::TABLET ], + 'PMID703DC' => [ 'Polaroid', 'PMID 703dc', DeviceType::TABLET ], + 'PMID703GK' => [ 'Polaroid', 'PMID 703gk', DeviceType::TABLET ], + 'PMID704G' => [ 'Polaroid', 'PMID 704g', DeviceType::TABLET ], + 'PMID704GK' => [ 'Polaroid', 'PMID 704gk', DeviceType::TABLET ], + 'PMID705' => [ 'Polaroid', 'PMID 705', DeviceType::TABLET ], + 'PMID705X' => [ 'Polaroid', 'PMID 705x', DeviceType::TABLET ], + 'PMID706' => [ 'Polaroid', 'PMID 706', DeviceType::TABLET ], + 'PMID720' => [ 'Polaroid', 'PMID 720', DeviceType::TABLET ], + 'PMID800' => [ 'Polaroid', 'PMID 800', DeviceType::TABLET ], + 'PMID901' => [ 'Polaroid', 'PMID 901', DeviceType::TABLET ], + 'PMID920' => [ 'Polaroid', 'PMID 920', DeviceType::TABLET ], + 'PMID-973G' => [ 'Polaroid', 'PMID 973g', DeviceType::TABLET ], + 'PMID1000B' => [ 'Polaroid', 'PMID 1000b', DeviceType::TABLET ], + 'PMID1000B V2' => [ 'Polaroid', 'PMID 1000b', DeviceType::TABLET ], + 'PMID-1000DC' => [ 'Polaroid', 'PMID 1000dc', DeviceType::TABLET ], + 'PMID1000!' => [ 'Polaroid', 'PMID 1000', DeviceType::TABLET ], + 'PMID4311' => [ 'Polaroid', 'PMID 4311', DeviceType::TABLET ], + 'PMID4312' => [ 'Polaroid', 'PMID 4312', DeviceType::TABLET ], + ], + + 'PSPT350' => [ 'Polaroid', 'PSPT350' ], + 'Polaroid PSPT401' => [ 'Polaroid', 'Turbo 401' ], + 'Polaroid PSPC505' => [ 'Polaroid', 'Cosmo 505' ], + 'Polaroid PSPC550' => [ 'Polaroid', 'Cosmo 550' ], + 'Polaroid P4005A' => [ 'Polaroid', 'Turbo C4' ], + 'Turbo C4 Plus' => [ 'Polaroid', 'Turbo C4 Plus' ], + 'Polaroid P5005A' => [ 'Polaroid', 'Turbo C5' ], + 'Polaroid P5046A' => [ 'Polaroid', 'Cosmo P5s Dorado' ], + 'Polaroid P5525A' => [ 'Polaroid', 'Cosmo Q5s Gris' ], + 'Polaroid P5526A' => [ 'Polaroid', 'Cosmo K Plus' ], + + 'PROV!!' => [ + 'PROV350' => [ 'Polaroid', 'PROV350' ], + 'PROV400' => [ 'Polaroid', 'PROV400' ], + ], + + 'PRO!!' => [ + 'PRO400B' => [ 'Polaroid', 'PRO400B' ], + 'PRO450B' => [ 'Polaroid', 'PRO450B' ], + 'PRO4006' => [ 'Polaroid', 'PRO4006' ], + 'PRO4611PR201' => [ 'Polaroid', 'PRO4611' ], + 'PRO5701' => [ 'Polaroid', 'PRO5701' ], + 'PRO7111' => [ 'Polaroid', 'PRO7111' ], + ], + + 'POLY ?PAD!!' => [ + 'POLY PAD 8208HD' => [ 'Polypad', '8208 HD', DeviceType::TABLET ], + 'POLY PAD 8216HD' => [ 'Polypad', '8216 HD', DeviceType::TABLET ], + 'POLY PAD 9708HD' => [ 'Polypad', '9708 HD', DeviceType::TABLET ], + 'POLY PAD 9716HD' => [ 'Polypad', '9716 HD', DeviceType::TABLET ], + 'Polypad C508' => [ 'Polypad', 'C508', DeviceType::TABLET ], + ], + + 'POLYTRON!!' => [ + 'POLYTRON L501' => [ 'Polytron', 'L501 Rocket 4G C1' ], + 'POLYTRON P520' => [ 'Polytron', 'P520 Prime 7s' ], + 'POLYTRON R1500' => [ 'Polytron', 'R1500 Rocket Q-Five' ], + 'POLYTRON R2403' => [ 'Polytron', 'R2403 Rocket R1' ], + 'POLYTRON R2406' => [ 'Polytron', 'R2406 Rocket R2' ], + 'POLYTRON R2407' => [ 'Polytron', 'R2407 Rocket R3' ], + 'POLYTRON R2452' => [ 'Polytron', 'R2452 Rocket S1' ], + 'POLYTRON-R2457' => [ 'Polytron', 'R2457 Rocket S2' ], + 'POLYTRON R2501' => [ 'Polytron', 'R2501 Rocket T1' ], + 'POLYTRON-R2507' => [ 'Polytron', 'R2507 Rocket T3' ], + 'POLYTRON R2506' => [ 'Polytron', 'R2506 Rocket T4' ], + 'POLYTRON R3450' => [ 'Polytron', 'R3450 Rocket Jetz' ], + 'POLYTRON R3500' => [ 'Polytron', 'R3500 Jetz 5.0' ], + 'POLYTRON S2350' => [ 'Polytron', 'S2350 Rocket' ], + 'POLYTRON T7800' => [ 'Polytron', 'T7800 Cosmica' ], + 'Polytron W1320' => [ 'Polytron', 'W1320' ], + 'POLYTRON W1351' => [ 'Polytron', 'W1351 Rocket Lite' ], + 'POLYTRON W1400' => [ 'Polytron', 'W1400 Rocket Jetz 4.0' ], + 'POLYTRON W2430' => [ 'Polytron', 'W2430 Wizard Twins' ], + 'POLYTRON W2500' => [ 'Polytron', 'W2500 Wizard Twins' ], + 'POLYTRON W3430' => [ 'Polytron', 'W3430 Wizard Crystal' ], + 'POLYTRON W6450' => [ 'Polytron', 'W6450 Rocket Star' ], + 'POLYTRON W6500' => [ 'Polytron', 'W7500 Rocket Quadra 5.0' ], + 'POLYTRON W7430' => [ 'Polytron', 'W7430 Wizard Quadra Mini' ], + 'POLYTRON W7450' => [ 'Polytron', 'W7450 Wizard Quadra' ], + 'POLYTRON W7451' => [ 'Polytron', 'W7451 Quadra S' ], + 'POLYTRON W7452' => [ 'Polytron', 'W7452 Quadra S2' ], + 'POLYTRON W7531' => [ 'Polytron', 'W7531 Wizard Quadra V' ], + 'POLYTRON W7550 LITE' => [ 'Polytron', 'W7550 Rocket Quadra Lite' ], + 'POLYTRON W8470' => [ 'Polytron', 'W8470 Wizard Quadra HD' ], + 'POLYTRON 4G450' => [ 'Polytron', '4G450 Zap 5' ], + 'POLYTRON 4G501' => [ 'Polytron', '4G501 Zap 6 Posh' ], + 'POLYTRON 4G551' => [ 'Polytron', '4G551 Zap 6 Posh Note' ], + ], + + 'POMP!!' => [ + 'POMP C6' => [ 'POMP', 'C6' ], + 'POMP P8' => [ 'POMP', 'P8' ], + 'POMP W88' => [ 'POMP', 'W88' ], + 'POMP-W88A' => [ 'POMP', 'W88A' ], + 'POMP-W88S' => [ 'POMP', 'W88S' ], + 'POMP W89' => [ 'POMP', 'W89' ], + 'POMP-W89' => [ 'POMP', 'W89' ], + 'POMP W99' => [ 'POMP', 'W99' ], + 'POMP W99A' => [ 'POMP', 'W99A' ], + ], + + 'ACT2000' => [ 'Poptronix', 'ACT2000', DeviceType::TABLET ], + + 'Air!!' => [ + 'Air 7.85 3G' => [ 'Roverpad', 'Air 7.85 3G', DeviceType::TABLET ], + 'Air 10.1 3G' => [ 'Roverpad', 'Air 10.1 3G', DeviceType::TABLET ], + 'Air S70' => [ 'Roverpad', 'Air S70', DeviceType::TABLET ], + ], + + 'PMP[0-9]{4,4}!!' => [ + 'PMP3007C' => [ 'Prestigio', 'Multipad Rider 7.0', DeviceType::TABLET ], + 'PMP3007C3G' => [ 'Prestigio', 'Multipad Rider 7.0 3G', DeviceType::TABLET ], + 'PMP3074B' => [ 'Prestigio', 'Multipad 3074', DeviceType::TABLET ], + 'PMP3074BRU' => [ 'Prestigio', 'Multipad 3074', DeviceType::TABLET ], + 'PMP3084B' => [ 'Prestigio', 'Multipad 3084', DeviceType::TABLET ], + 'PMP3084BA' => [ 'Prestigio', 'Multipad 3084', DeviceType::TABLET ], + 'PMP3084BPL' => [ 'Prestigio', 'Multipad 3084', DeviceType::TABLET ], + 'PMP3084BRU' => [ 'Prestigio', 'Multipad 3084', DeviceType::TABLET ], + 'PMP3170B' => [ 'Prestigio', 'Multipad 3170 Pro', DeviceType::TABLET ], + 'PMP3170BEN' => [ 'Prestigio', 'Multipad 3170 Pro', DeviceType::TABLET ], + 'PMP3270B' => [ 'Prestigio', 'Multipad 3270 Prime', DeviceType::TABLET ], + 'PMP3370B' => [ 'Prestigio', 'Multipad 3370', DeviceType::TABLET ], + 'PMP3384B' => [ 'Prestigio', 'Multipad 3384', DeviceType::TABLET ], + 'PMP3384BRU' => [ 'Prestigio', 'Multipad 3384', DeviceType::TABLET ], + 'PMP3470B' => [ 'Prestigio', 'Multipad 3470 Prime+', DeviceType::TABLET ], + 'PMP3570C' => [ 'Prestigio', 'Multipad 7.0 Ultra+', DeviceType::TABLET ], + 'PMP3670B' => [ 'Prestigio', 'Multipad 3670 Ultra+', DeviceType::TABLET ], + 'PMP3670B-WH' => [ 'Prestigio', 'Multipad 3670 Ultra+', DeviceType::TABLET ], + 'PMP3770B' => [ 'Prestigio', 'Multipad 3770', DeviceType::TABLET ], + 'PMP3970B' => [ 'Prestigio', 'Multipad 3970 Duo', DeviceType::TABLET ], + 'PMP5080B' => [ 'Prestigio', 'Multipad 5080', DeviceType::TABLET ], + 'PMP5080BRU' => [ 'Prestigio', 'Multipad 5080', DeviceType::TABLET ], + 'PMP5080CPRO' => [ 'Prestigio', 'Multipad 5080 Pro', DeviceType::TABLET ], + 'PMP5097CPRO' => [ 'Prestigio', 'Multipad 5097 Pro', DeviceType::TABLET ], + 'PMP5101C QUAD' => [ 'Prestigio', 'Multipad 4 Quantum 10.1', DeviceType::TABLET ], + 'PMP5101C3G QUAD' => [ 'Prestigio', 'Multipad 4 Quantum 10.1 3G', DeviceType::TABLET ], + 'PMP5101D QUAD' => [ 'Prestigio', 'Multipad 4 Quantum 10.1', DeviceType::TABLET ], + 'PMP5101D3G QUAD' => [ 'Prestigio', 'Multipad 4 Quantum 10.1 3G', DeviceType::TABLET ], + 'PMP5197DULTRA' => [ 'Prestigio', 'Multipad 5197 Ultra', DeviceType::TABLET ], + 'PMP5297C QUAD' => [ 'Prestigio', 'Multipad 4 Quantum 9.7', DeviceType::TABLET ], + 'PMP5570C' => [ 'Prestigio', 'Multipad 5570 Pro', DeviceType::TABLET ], + 'PMP5580C' => [ 'Prestigio', 'Multipad 5580 Prime', DeviceType::TABLET ], + 'PMP5588C' => [ 'Prestigio', 'Multipad 8.0 HD', DeviceType::TABLET ], + 'PMP5597D' => [ 'Prestigio', 'Multipad 5597 Ultra Duo', DeviceType::TABLET ], + 'PMP5670C DUO' => [ 'Prestigio', 'Multipad 2 Pro Duo 7.0', DeviceType::TABLET ], + 'PMP5770D' => [ 'Prestigio', 'Multipad 5770 Pro', DeviceType::TABLET ], + 'PMP5785C3G QUAD' => [ 'Prestigio', 'Multipad 4 Quantum 7.85 3G', DeviceType::TABLET ], + 'PMP7100D3G QUAD' => [ 'Prestigio', 'Multipad 7100', DeviceType::TABLET ], + 'PMP7280D3G QUAD' => [ 'Prestigio', 'Multipad 7280', DeviceType::TABLET ], + 'PMP7480D3G QUAD' => [ 'Prestigio', 'Multipad 7480', DeviceType::TABLET ], + 'PMP7880D3G' => [ 'Prestigio', 'Multipad 7880', DeviceType::TABLET ], + 'PMP5780D' => [ 'Prestigio', 'Multipad 2 Prime Duo 8.0', DeviceType::TABLET ], + 'PMP5785C QUAD' => [ 'Prestigio', 'Multipad 4 Quantum 7.85', DeviceType::TABLET ], + 'PMP5870C' => [ 'Prestigio', 'Multipad 7.0 Ultra Duo', DeviceType::TABLET ], + 'PMP5880D' => [ 'Prestigio', 'Multipad 8.0 Ultra Duo', DeviceType::TABLET ], + 'PMP7070C3G' => [ 'Prestigio', 'Multipad 4 Diamond 7.0 3G', DeviceType::TABLET ], + 'PMP7074B3G' => [ 'Prestigio', 'Multipad 7074', DeviceType::TABLET ], + 'PMP7074B3GRU' => [ 'Prestigio', 'Multipad 7074', DeviceType::TABLET ], + 'PMP7079D QUAD' => [ 'Prestigio', 'Multipad 4 Diamond 7.85', DeviceType::TABLET ], + 'PMP7079D3G QUAD' => [ 'Prestigio', 'Multipad 4 Diamond 7.85 3G', DeviceType::TABLET ], + 'PMP7079E3G QUAD' => [ 'Prestigio', 'Multipad 4 Diamond 7.85 3G', DeviceType::TABLET ], + 'PMP7100D' => [ 'Prestigio', 'Multipad 4 10.1 Ultimate', DeviceType::TABLET ], + 'PMP7100D3G' => [ 'Prestigio', 'Multipad 4 10.1 Ultimate 3G', DeviceType::TABLET ], + 'PMP7100D3G QUAD' => [ 'Prestigio', 'Multipad 4 10.1 Ultimate 3G', DeviceType::TABLET ], + 'PMP7110D3G' => [ 'Prestigio', 'Multipad 4 Diamond 10.1 3G', DeviceType::TABLET ], + 'PMP7170B3G' => [ 'Prestigio', 'Multipad 7.0 Prime 3G', DeviceType::TABLET ], + 'PMP7170B3GCE' => [ 'Prestigio', 'Multipad 7.0 Prime 3G', DeviceType::TABLET ], + 'PMP7170B3G DUO' => [ 'Prestigio', 'Multipad 7.0 Prime Duo 3G', DeviceType::TABLET ], + 'PMP7280C' => [ 'Prestigio', 'Multipad 2 Ultra Duo 8.0', DeviceType::TABLET ], + 'PMP7280C3G' => [ 'Prestigio', 'Multipad 2 Ultra Duo 8.0 3G', DeviceType::TABLET ], + 'PMP7280C3G DUO' => [ 'Prestigio', 'Multipad 2 Ultra Duo 8.0 3G', DeviceType::TABLET ], + 'PMP7280C3G QUAD' => [ 'Prestigio', 'Multipad 4 Ultra Quad 8.0 3G', DeviceType::TABLET ], + 'PMP7380D3G' => [ 'Prestigio', 'Multipad 2 Pro Duo 8.0 3G', DeviceType::TABLET ], + 'PMP7380D3G QUAD' => [ 'Prestigio', 'Multipad 2 Pro Quad 8.0 3G', DeviceType::TABLET ], + ], + + 'PMT[0-9]{4,4}!!' => [ + 'PMT3008 WI C' => [ 'Prestigio', 'Multipad Wize 3008', DeviceType::TABLET ], + 'PMT3009 Wi C' => [ 'Prestigio', 'Multipad Wize 3009', DeviceType::TABLET ], + 'PMT3011 3G' => [ 'Prestigio', 'Multipad Wize 3011', DeviceType::TABLET ], + 'PMT3017 WI' => [ 'Prestigio', 'Multipad Wize 3017', DeviceType::TABLET ], + 'PMT3018 WI' => [ 'Prestigio', 'Multipad Wize 3018', DeviceType::TABLET ], + 'PMT3021 3G' => [ 'Prestigio', 'Multipad Wize 3021', DeviceType::TABLET ], + 'PMT3031 3G' => [ 'Prestigio', 'Multipad Wize 3031', DeviceType::TABLET ], + 'PMT3037 3G' => [ 'Prestigio', 'Multipad Wize 3037', DeviceType::TABLET ], + 'PMT3038 3G' => [ 'Prestigio', 'Multipad Wize 3038', DeviceType::TABLET ], + 'PMT3047 3G' => [ 'Prestigio', 'Multipad 3047', DeviceType::TABLET ], + 'PMT3057 3G' => [ 'Prestigio', 'Multipad Wize 3057', DeviceType::TABLET ], + 'PMT3067 3G' => [ 'Prestigio', 'Multipad Wize 3067', DeviceType::TABLET ], + 'PMT3077 3G' => [ 'Prestigio', 'Multipad Rider 7.0 3G', DeviceType::TABLET ], + 'PMT3108 3G' => [ 'Prestigio', 'Multipad Wize 3108', DeviceType::TABLET ], + 'PMT3111 Wi' => [ 'Prestigio', 'Multipad Wize 3111', DeviceType::TABLET ], + 'PMT3177 3G' => [ 'Prestigio', 'Multipad Journey 7.0 3G', DeviceType::TABLET ], + 'PMT3277 3G' => [ 'Prestigio', 'Multipad Ranger 7.0 3G', DeviceType::TABLET ], + 'PMT3287 3G' => [ 'Prestigio', 'Multipad Ranger 8.0 3G', DeviceType::TABLET ], + 'PMT3308 3G' => [ 'Prestigio', 'Multipad Wize 3308', DeviceType::TABLET ], + 'PMT3331 3G' => [ 'Prestigio', 'Multipad Wize 3331', DeviceType::TABLET ], + 'PMT3341 3G' => [ 'Prestigio', 'Multipad Wize 3341', DeviceType::TABLET ], + 'PMT3377 Wi' => [ 'Prestigio', 'Multipad Thunder 7.0i', DeviceType::TABLET ], + 'PMT3677 Wi' => [ 'Prestigio', 'Multipad Ultra+ 7.0', DeviceType::TABLET ], + 'PMT3757 3G' => [ 'Prestigio', 'Multipad Wize 3757', DeviceType::TABLET ], + 'PMT3777 3G' => [ 'Prestigio', 'Multipad Color 2 3G', DeviceType::TABLET ], + 'PMT3787 3G' => [ 'Prestigio', 'Multipad Wize 3787', DeviceType::TABLET ], + 'PMT5001 3G' => [ 'Prestigio', 'Multipad Muze 5001 3G', DeviceType::TABLET ], + 'PMT5002 Wi' => [ 'Prestigio', 'Multipad Wize 5002', DeviceType::TABLET ], + 'PMT5008 3G' => [ 'Prestigio', 'Multipad Muze 5008 3G', DeviceType::TABLET ], + 'PMT5287 4G' => [ 'Prestigio', 'Multipad Ranger 8.0 4G', DeviceType::TABLET ], + 'PMT5487 3G' => [ 'Prestigio', 'Multipad Quantum 8.0 3G', DeviceType::TABLET ], + 'PMT5587 Wi' => [ 'Prestigio', 'Multipad 8.0 HD', DeviceType::TABLET ], + 'PMT5777 3G' => [ 'Prestigio', 'Multipad Color 7.0 3G', DeviceType::TABLET ], + 'PMT5887 3G' => [ 'Prestigio', 'Multipad Color 8.0 3G', DeviceType::TABLET ], + 'PMT7008 4G' => [ 'Prestigio', 'Multipad Consul 7008 4G', DeviceType::TABLET ], + 'PMT7077 3G' => [ 'Prestigio', 'Multipad 4 Diamond 7.85 3G', DeviceType::TABLET ], + 'PMT7177 3G' => [ 'Prestigio', 'Multipad 4 Diamond 10.1 3G', DeviceType::TABLET ], + 'PMT7287 3G' => [ 'Prestigio', 'Multipad 4 Ultra Quad 8.0 3G', DeviceType::TABLET ], + 'PMT7787 3G' => [ 'Prestigio', 'Multipad Thunder 8.0i', DeviceType::TABLET ], + ], + + 'PAP[0-9]{4,4}!!' => [ + 'PAP3350DUO' => [ 'Prestigio', 'Multiphone 3350 Duo' ], + 'PAP3400DUO' => [ 'Prestigio', 'Multiphone 3400 Duo' ], + 'PAP3500 DUO' => [ 'Prestigio', 'Multiphone 3500 Duo' ], + 'PAP3501DUO' => [ 'Prestigio', 'Multiphone 3501 Duo' ], + 'PAP3540DUO' => [ 'Prestigio', 'Multiphone 3540 Duo' ], + 'PAP4020DUO' => [ 'Prestigio', 'Multiphone 4020 Duo' ], + 'PAP4040 DUO' => [ 'Prestigio', 'Multiphone 4040 Duo' ], + 'PAP4044DUO' => [ 'Prestigio', 'Multiphone 4044 Duo' ], + 'PAP4055DUO' => [ 'Prestigio', 'Multiphone 4055 Duo' ], + 'PAP4300' => [ 'Prestigio', 'Multiphone 4300' ], + 'PAP4300 DUO' => [ 'Prestigio', 'Multiphone 4300 Duo' ], + 'PAP4322DUO' => [ 'Prestigio', 'Multiphone 4322 Duo' ], + 'PAP4500DUO' => [ 'Prestigio', 'Multiphone 4500 Duo' ], + 'PAP4500TDUO' => [ 'Prestigio', 'Multiphone 4500 Duo' ], + 'PAP4505DUO' => [ 'Prestigio', 'Multiphone 4505 Duo' ], + 'PAP5000DUO' => [ 'Prestigio', 'Multiphone 5000 Duo' ], + 'PAP5000TDUO' => [ 'Prestigio', 'Multiphone 5000 Duo' ], + 'PAP5044DUO' => [ 'Prestigio', 'Multiphone 5044 Duo' ], + 'PAP5300DUO' => [ 'Prestigio', 'Multiphone 5300 Duo' ], + 'PAP5400DUO' => [ 'Prestigio', 'Multiphone 5400 Duo' ], + 'PAP5430' => [ 'Prestigio', 'Multiphone 5430' ], + 'PAP5450' => [ 'Prestigio', 'Multiphone 5450' ], + 'PAP5450DUO' => [ 'Prestigio', 'Multiphone 5450 Duo' ], + 'PAP5451DUO' => [ 'Prestigio', 'Multiphone 5451 Duo' ], + 'PAP5500DUO' => [ 'Prestigio', 'Multiphone 5500 Duo' ], + 'PAP5501' => [ 'Prestigio', 'Multiphone 5501' ], + 'PAP5503' => [ 'Prestigio', 'Multiphone 5503' ], + 'PAP5503DUO' => [ 'Prestigio', 'Multiphone 5503 Duo' ], + 'PAP7500' => [ 'Prestigio', 'Multiphone 7500' ], + 'PAP7600DUO' => [ 'Prestigio', 'Multiphone 7600 Duo' ], + ], + + 'PSP[0-9]{4,4}!!' => [ + 'PSP3404DUO' => [ 'Prestigio', 'Multiphone 3404 Duo' ], + 'PSP3405DUO' => [ 'Prestigio', 'Multiphone 3405 Duo' ], + 'PSP3423DUO' => [ 'Prestigio', 'Multiphone Wize R3' ], + 'PSP3450' => [ 'Prestigio', 'Multiphone 3450' ], + 'PSP3450DUO' => [ 'Prestigio', 'Multiphone 3450 Duo' ], + 'PSP3452DUO' => [ 'Prestigio', 'Multiphone Muze A3' ], + 'PSP3453DUO' => [ 'Prestigio', 'Multiphone Wize A3' ], + 'PSP3455DUO' => [ 'Prestigio', 'Multiphone Grace X3' ], + 'PSP3456DUO' => [ 'Prestigio', 'Multiphone 3456 Duo' ], + 'PSP3502DUO' => [ 'Prestigio', 'Multiphone 3502 Duo' ], + 'PSP3503DUO' => [ 'Prestigio', 'Multiphone 3503 Duo' ], + 'PSP3504DUO' => [ 'Prestigio', 'Multiphone 3504 Duo' ], + 'PSP3505DUO' => [ 'Prestigio', 'Multiphone 3505 Duo' ], + 'PSP3530DUO' => [ 'Prestigio', 'Multiphone 3530 Duo' ], + 'PSP3531DUO' => [ 'Prestigio', 'Multiphone 3531 Duo' ], + 'PSP5047DUO' => [ 'Prestigio', 'Multiphone 5048 Duo' ], + 'PSP5307DUO' => [ 'Prestigio', 'Multiphone 5307 Duo' ], + 'PSP5453DUO' => [ 'Prestigio', 'Multiphone 5453 Duo' ], + 'PSP5454DUO' => [ 'Prestigio', 'Multiphone 5454 Duo' ], + 'PSP5455DUO' => [ 'Prestigio', 'Multiphone 5455 Duo' ], + 'PSP5457DUO' => [ 'Prestigio', 'Multiphone 5457 Duo' ], + 'PSP5470DUO' => [ 'Prestigio', 'Multiphone Grace X5' ], + 'PSP5504DUO' => [ 'Prestigio', 'Multiphone 5504 Duo' ], + 'PSP5505DUO' => [ 'Prestigio', 'Multiphone 5505 Duo' ], + 'PSP5507DUO' => [ 'Prestigio', 'Multiphone 5507 Duo' ], + 'PSP5508DUO' => [ 'Prestigio', 'Multiphone 5508 Duo' ], + 'PSP5517DUO' => [ 'Prestigio', 'Multiphone 5517 Duo' ], + 'PSP5550DUO' => [ 'Prestigio', 'Multiphone 5550 Duo' ], + 'PSP7505DUO' => [ 'Prestigio', 'Multiphone Grace X7' ], + 'PSP7557' => [ 'Prestigio', 'Multiphone 7557 Grace' ], + ], + + 'Prestigio PAP5000TDUO' => [ 'Prestigio', 'Multiphone 5000 Duo' ], + '5080C Pro' => [ 'Prestigio', 'Multipad 5080 Pro', DeviceType::TABLET ], + 'PGPS7795' => [ 'Prestigio', 'Geovision Tour', DeviceType::GPS ], + 'PRBT 100' => [ 'Probook', 'PRBT 100', DeviceType::TABLET ], + + 'MD-[0-9]{4,4}!!' => [ + 'MD-0651' => [ 'Prolink', 'MD-0651', DeviceType::TABLET ], + 'MD-0696B' => [ 'Prolink', 'MD-0696B', DeviceType::TABLET ], + 'MD-0697' => [ 'Prolink', 'MD-0697', DeviceType::TABLET ], + ], + + 'PLT!!' => [ + 'PLT1044' => [ 'Proscan', 'PLT1044', DeviceType::TABLET ], + 'PLT1066' => [ 'Proscan', 'PLT1066', DeviceType::TABLET ], + 'PLT1077G' => [ 'Proscan', 'PLT1077G', DeviceType::TABLET ], + 'PLT4311' => [ 'Proscan', 'PLT4311', DeviceType::TABLET ], + 'PLT7035' => [ 'Proscan', 'PLT7035', DeviceType::TABLET ], + 'PLT7035-B' => [ 'Proscan', 'PLT7035', DeviceType::TABLET ], + 'PLT7035-C' => [ 'Proscan', 'PLT7035', DeviceType::TABLET ], + 'PLT7035-PL' => [ 'Proscan', 'PLT7035', DeviceType::TABLET ], + 'PLT7044K' => [ 'Proscan', 'PLT7044K', DeviceType::TABLET ], + 'PLT7044K-B' => [ 'Proscan', 'PLT7044K', DeviceType::TABLET ], + 'PLT7050' => [ 'Proscan', 'PLT7050', DeviceType::TABLET ], + 'PLT7100G' => [ 'Proscan', 'PLT7100G', DeviceType::TABLET ], + 'PLT7223G' => [ 'Proscan', 'PLT7223G', DeviceType::TABLET ], + 'PLT7602G' => [ 'Proscan', 'PLT7602G', DeviceType::TABLET ], + 'PLT7777' => [ 'Proscan', 'PLT7777', DeviceType::TABLET ], + 'PLT7802' => [ 'Proscan', 'PLT7802', DeviceType::TABLET ], + 'PLT7803G' => [ 'Proscan', 'PLT7803G', DeviceType::TABLET ], + 'PLT7804G' => [ 'Proscan', 'PLT7804G', DeviceType::TABLET ], + 'PLT7810K' => [ 'Proscan', 'PLT7810K', DeviceType::TABLET ], + 'PLT8088' => [ 'Proscan', 'PLT8088', DeviceType::TABLET ], + 'PLT8223G' => [ 'Proscan', 'PLT8223G', DeviceType::TABLET ], + 'PLT8235G' => [ 'Proscan', 'PLT8235G', DeviceType::TABLET ], + 'PLT8802G' => [ 'Proscan', 'PLT8802G', DeviceType::TABLET ], + 'PLT8816K' => [ 'Proscan', 'PLT8816K', DeviceType::TABLET ], + 'PLT9045K' => [ 'Proscan', 'PLT9045K', DeviceType::TABLET ], + 'PLT9045K-BLACK' => [ 'Proscan', 'PLT9045K', DeviceType::TABLET ], + 'PLT9602G' => [ 'Proscan', 'PLT9602G', DeviceType::TABLET ], + 'PLT9606G' => [ 'Proscan', 'PLT9606G', DeviceType::TABLET ], + ], + + 'Positivo Mini' => [ 'Positivo', 'Mini', DeviceType::TABLET ], + 'YPY-72SIM' => [ 'Positivo', 'YPY 72SIM', DeviceType::TABLET ], + 'YPY-73G' => [ 'Positivo', 'YPY 73G', DeviceType::TABLET ], + 'TB07FTA' => [ 'Positivo', 'YPY 07FTA', DeviceType::TABLET ], + 'Ypy 7 - TB07FTA' => [ 'Positivo', 'YPY 07FTA', DeviceType::TABLET ], + 'YPY 07FTA' => [ 'Positivo', 'YPY 07FTA', DeviceType::TABLET ], + 'YPY 07FTAB' => [ 'Positivo', 'YPY 07FTAB', DeviceType::TABLET ], + 'YPY 07FTAB PA' => [ 'Positivo', 'YPY 07FTAB', DeviceType::TABLET ], + 'YPY 07FTB' => [ 'Positivo', 'YPY 07FTB', DeviceType::TABLET ], + 'POSITIVO YPY 07FTB' => [ 'Positivo', 'YPY 07FTB', DeviceType::TABLET ], + 'YPY 07FTBF' => [ 'Positivo', 'YPY 07FTBF', DeviceType::TABLET ], + 'Ypy 7 - TB07STA' => [ 'Positivo', 'YPY 07STA', DeviceType::TABLET ], + 'YPY 07STB' => [ 'Positivo', 'YPY 07STB', DeviceType::TABLET ], + 'YPY 07STBF' => [ 'Positivo', 'YPY 07STBF', DeviceType::TABLET ], + 'YPY 10FTA' => [ 'Positivo', 'YPY 10FTA', DeviceType::TABLET ], + 'YPY10FTA' => [ 'Positivo', 'YPY 10FTA', DeviceType::TABLET ], + 'YPY 10FTB' => [ 'Positivo', 'YPY 10FTB', DeviceType::TABLET ], + 'YPY 10FTBF' => [ 'Positivo', 'YPY 10FTBF', DeviceType::TABLET ], + 'YPY 10STB' => [ 'Positivo', 'YPY 10STB', DeviceType::TABLET ], + 'YPY 10STBF' => [ 'Positivo', 'YPY 10STBF', DeviceType::TABLET ], + 'YPY AB7D' => [ 'Positivo', 'YPY AB7D', DeviceType::TABLET ], + 'YPY AB7DC' => [ 'Positivo', 'YPY AB7DC', DeviceType::TABLET ], + 'Positivo Ypy AB7E' => [ 'Positivo', 'YPY AB7E', DeviceType::TABLET ], + 'Positivo Ypy AB7EC' => [ 'Positivo', 'YPY AB7EC', DeviceType::TABLET ], + 'Positivo Ypy AB7F' => [ 'Positivo', 'YPY AB7F', DeviceType::TABLET ], + 'Positivo AB7F' => [ 'Positivo', 'YPY AB7F', DeviceType::TABLET ], + 'Positivo Ypy AB7H' => [ 'Positivo', 'YPY AB7H', DeviceType::TABLET ], + 'YPY AB10D' => [ 'Positivo', 'YPY AB10D', DeviceType::TABLET ], + 'YPY AB10DC' => [ 'Positivo', 'YPY AB10DC', DeviceType::TABLET ], + 'Positivo Ypy AB10E' => [ 'Positivo', 'YPY AB10E', DeviceType::TABLET ], + 'Positivo Ypy AB10EC' => [ 'Positivo', 'YPY AB10EC', DeviceType::TABLET ], + 'Positivo Ypy AB10H' => [ 'Positivo', 'YPY AB10H', DeviceType::TABLET ], + 'YPY ABXD' => [ 'Positivo', 'YPY ABXD', DeviceType::TABLET ], + 'YPY J213' => [ 'Positivo', 'YPY J213' ], + 'Positivo BGH Ypy L700' => [ 'Positivo', 'YPY L700', DeviceType::TABLET ], + 'Positivo Ypy L700' => [ 'Positivo', 'YPY L700', DeviceType::TABLET ], + 'Positivo Ypy L700 Ed. Especial' => [ 'Positivo', 'YPY L700 Edição Especial', DeviceType::TABLET ], + 'Positivo Ypy L700+' => [ 'Positivo', 'YPY L700+', DeviceType::TABLET ], + 'Positivo Ypy L700 Kids' => [ 'Positivo', 'YPY L700 Kids', DeviceType::TABLET ], + 'Positivo BGH Ypy L700 Kids' => [ 'Positivo', 'YPY L700 Kids', DeviceType::TABLET ], + 'Positivo Ypy L700+ Kids' => [ 'Positivo', 'YPY L700+ Kids', DeviceType::TABLET ], + 'Positivo Ypy L1000' => [ 'Positivo', 'YPY L1000', DeviceType::TABLET ], + 'Positivo Ypy L1000AB' => [ 'Positivo', 'YPY L1000AB', DeviceType::TABLET ], + 'Positivo Ypy L1000F' => [ 'Positivo', 'YPY L1000F', DeviceType::TABLET ], + 'Positivo Ypy L1050' => [ 'Positivo', 'YPY L1050', DeviceType::TABLET ], + 'Positivo Ypy L1050E' => [ 'Positivo', 'YPY L1050E', DeviceType::TABLET ], + 'Positivo Ypy L1050F' => [ 'Positivo', 'YPY L1050F', DeviceType::TABLET ], + 'YPY S350' => [ 'Positivo', 'YPY S350' ], + 'YPY S350 PLUS' => [ 'Positivo', 'YPY S350 Plus' ], + 'Positivo S380' => [ 'Positivo', 'YPY S380' ], + 'YPY S400' => [ 'Positivo', 'YPY S400' ], + 'YPY S405' => [ 'Positivo', 'YPY S405' ], + 'Positivo S440' => [ 'Positivo', 'YPY S440' ], + 'YPY S450' => [ 'Positivo', 'YPY S450' ], + 'YPY S460' => [ 'Positivo', 'YPY S460' ], + 'Positivo S480' => [ 'Positivo', 'YPY S480' ], + 'YPY S500' => [ 'Positivo', 'YPY S500' ], + 'Positivo S550' => [ 'Positivo', 'YPY S550' ], + 'Positivo X400' => [ 'Positivo', 'YPY X400' ], + 'Positivo X800' => [ 'Positivo', 'YPY X800' ], + 'YPY TQ7' => [ 'Positivo', 'YPY TQ7', DeviceType::TABLET ], + 'PULID F6' => [ 'PULID', 'F6' ], + 'PULID F7' => [ 'PULID', 'F7' ], + 'PULID F11' => [ 'PULID', 'F11' ], + 'F13' => [ 'PULID', 'F13' ], + 'F15' => [ 'PULID', 'F15' ], + 'PULID T3' => [ 'PULID', 'T3' ], + '1501-A02' => [ 'Qihoo 360', 'F4' ], + '1501 M02' => [ 'Qihoo 360', 'F4' ], + '1501-M02' => [ 'Qihoo 360', 'F4' ], + '1503-A01' => [ 'Qihoo 360', 'N4' ], + '1503-M02' => [ 'Qihoo 360', 'N4' ], + 'QK1505' => [ 'Qihoo 360', 'N4S' ], + 'QK1505 A01' => [ 'Qihoo 360', 'N4S' ], + '1505-A01' => [ 'Qihoo 360', 'N4S' ], + '1505-A02' => [ 'Qihoo 360', 'N4S' ], + '360 N4S' => [ 'Qihoo 360', 'N4S' ], + '1605-A01' => [ 'Qihoo 360', 'N5' ], + 'QK1605-A01' => [ 'Qihoo 360', 'N5' ], + '1607-A01' => [ 'Qihoo 360', 'N5S' ], + '1713-A01' => [ 'Qihoo 360', 'N6 Lite' ], + '1801-A01' => [ 'Qihoo 360', 'N6 Pro' ], + '8681-M02' => [ 'Qihoo 360', 'Q Luna' ], + '8692-M02' => [ 'Qihoo 360', 'Q Terra' ], + + 'Q-Wave!!' => [ + 'Q-Wave70M' => [ 'Quantum', 'Q-Wave 70M', DeviceType::TABLET ], + 'Q-Wave70M2' => [ 'Quantum', 'Q-Wave 70M2', DeviceType::TABLET ], + 'Q-Wave71' => [ 'Quantum', 'Q-Wave 71', DeviceType::TABLET ], + 'Q-Wave71M' => [ 'Quantum', 'Q-Wave 71M', DeviceType::TABLET ], + 'Q-Wave71N' => [ 'Quantum', 'Q-Wave 71N', DeviceType::TABLET ], + 'Q-Wave781N' => [ 'Quantum', 'Q-Wave 781N', DeviceType::TABLET ], + 'Q-WaveA101' => [ 'Quantum', 'Q-Wave A101', DeviceType::TABLET ], + 'Q-Wave L70N' => [ 'Quantum', 'Q-Wave L70N', DeviceType::TABLET ], + ], + + 'Quechua Phone 5' => [ 'Quechua', 'Phone 5' ], + + 'QUBE[ -](B[0-9]S?\+?)!' => [ 'Qube', '$1' ], + 'QUBE[ -](T[0-9])!' => [ 'Qube', '$1', DeviceType::TABLET ], + 'QUMO[ -]QUEST[ -]?([0-9]+i?)!' => [ 'QUMO', 'Quest $1' ], + 'QUMO Altair ([0-9]+i?)!' => [ 'QUMO', 'Altair $1', DeviceType::TABLET ], + 'QUMO Vega ([0-9]+i?)!' => [ 'QUMO', 'Vega $1', DeviceType::TABLET ], + + + 'QW ?TB-[0-9]{4,4}!!' => [ + 'QW TB-1007' => [ 'Qware', 'Pro3 (7.0 inch, 1st gen)', DeviceType::TABLET ], + 'QW TB-1207' => [ 'Qware', 'Pro3 (7.0 inch, 2nd gen)', DeviceType::TABLET ], + 'QW TB-1217' => [ 'Qware', 'Pro3 (7.0 inch, 3nd gen)', DeviceType::TABLET ], + 'QW TB-1210' => [ 'Qware', 'Pro3 (10.0 inch)', DeviceType::TABLET ], + 'QW TB-9718' => [ 'Qware', 'Pro4 Slim 9.7', DeviceType::TABLET ], + 'QWTB-9718HD' => [ 'Qware', 'Pro4 Slim HD 9.7', DeviceType::TABLET ], + 'QW TB-1317Q' => [ 'Qware', 'Pro5 HD 7.0', DeviceType::TABLET ], + 'QW TB-1380QHD' => [ 'Qware', 'Pro5 QHD 8.0', DeviceType::TABLET ], + 'QW TB-9718QHD' => [ 'Qware', 'Pro5 QHD 9.7', DeviceType::TABLET ], + 'QW TB-1517' => [ 'Qware', 'Tabby', DeviceType::TABLET ], + 'QW TB-1517D' => [ 'Qware', 'Tabby2', DeviceType::TABLET ], + ], + + 'ramos i7s ' => [ 'Ramos', 'I7s', DeviceType::TABLET ], + 'Ramos i7s Series' => [ 'Ramos', 'I7s', DeviceType::TABLET ], + 'Ramosi8' => [ 'Ramos', 'I8', DeviceType::TABLET ], + 'Ramosi8c' => [ 'Ramos', 'I8c', DeviceType::TABLET ], + 'Ramosi9' => [ 'Ramos', 'I9', DeviceType::TABLET ], + 'Ramosi9-3G' => [ 'Ramos', 'I9 3G', DeviceType::TABLET ], + 'Ramos i9s' => [ 'Ramos', 'I9s', DeviceType::TABLET ], + 'Ramos i9s Series' => [ 'Ramos', 'I9s', DeviceType::TABLET ], + 'Ramos i9s pro' => [ 'Ramos', 'I9s Pro', DeviceType::TABLET ], + 'Ramosi10' => [ 'Ramos', 'I10', DeviceType::TABLET ], + 'Ramos i11 pro' => [ 'Ramos', 'I11 Pro', DeviceType::TABLET ], + 'Ramosi12c' => [ 'Ramos', 'I12c', DeviceType::TABLET ], + 'Ramos i100 pro' => [ 'Ramos', 'I100 Pro', DeviceType::TABLET ], + 'Ramos K100' => [ 'Ramos', 'K100', DeviceType::TABLET ], + 'Ramos K300' => [ 'Ramos', 'K300', DeviceType::TABLET ], + 'Ramos M7' => [ 'Ramos', 'M7' ], + 'ramos R9' => [ 'Ramos', 'R9' ], + 'W6' => [ 'Ramos', 'W6', DeviceType::TABLET ], + 'W6HD ICS' => [ 'Ramos', 'W6HD', DeviceType::TABLET ], + 'W6HD ICS FULL' => [ 'Ramos', 'W6HD', DeviceType::TABLET ], + 'Ramos W6HD' => [ 'Ramos', 'W6HD', DeviceType::TABLET ], + 'W10' => [ 'Ramos', 'W10', DeviceType::TABLET ], + 'W10 V2.0' => [ 'Ramos', 'W10 v2.0', DeviceType::TABLET ], + 'Ramos W12' => [ 'Ramos', 'W12', DeviceType::TABLET ], + 'Ramos W12HD' => [ 'Ramos', 'W12HD', DeviceType::TABLET ], + 'w13pro' => [ 'Ramos', 'W13 Pro', DeviceType::TABLET ], + 'W13PRO V2.0' => [ 'Ramos', 'W13 Pro', DeviceType::TABLET ], + 'Ramos W17Pro V3.0' => [ 'Ramos', 'W17 Pro', DeviceType::TABLET ], + 'W17PRO(Dualcore)' => [ 'Ramos', 'W17 Pro', DeviceType::TABLET ], + 'W17PRO JB Dualcore' => [ 'Ramos', 'W17 Pro', DeviceType::TABLET ], + 'Ramos W21' => [ 'Ramos', 'W21', DeviceType::TABLET ], + 'W22PRO' => [ 'Ramos', 'W22 Pro', DeviceType::TABLET ], + 'W22PRO 3G' => [ 'Ramos', 'W22 Pro 3G', DeviceType::TABLET ], + 'Ramos W25HD' => [ 'Ramos', 'W25HD', DeviceType::TABLET ], + 'Ramos W27Pro' => [ 'Ramos', 'W27 Pro', DeviceType::TABLET ], + 'W27(Dualcore)' => [ 'Ramos', 'W27 Dual Core', DeviceType::TABLET ], + 'W28(Dualcore)' => [ 'Ramos', 'W28 Dual Core', DeviceType::TABLET ], + 'W30(QuadCore)' => [ 'Ramos', 'W30 Quad Core', DeviceType::TABLET ], + 'w30hd(QuadCore)' => [ 'Ramos', 'W30HD Quad Core', DeviceType::TABLET ], + 'W30HDPRO' => [ 'Ramos', 'W30HD Pro', DeviceType::TABLET ], + 'Ramos W31' => [ 'Ramos', 'W31', DeviceType::TABLET ], + 'Ramos w36' => [ 'Ramos', 'W36', DeviceType::TABLET ], + 'Ramos W41' => [ 'Ramos', 'W41', DeviceType::TABLET ], + 'Ramos W41 QuadCore' => [ 'Ramos', 'W41 Quad Core', DeviceType::TABLET ], + 'w42(QuadCore)' => [ 'Ramos', 'W42 Quad Core', DeviceType::TABLET ], + 'Ramos X10 PRO!' => [ 'Ramos', 'X10 Pro', DeviceType::TABLET ], + 'T11AD!' => [ 'Ramos', 'T11AD', DeviceType::TABLET ], + + 'Rayhov!!' => [ + 'Rayhov X3' => [ 'Rayhov', 'X3' ], + 'Rayhov X6' => [ 'Rayhov', 'X6' ], + 'Rayhov X9' => [ 'Rayhov', 'X9' ], + ], + + 'Readboy!!' => [ + 'Readboy G12' => [ 'Readboy', 'G12', DeviceType::TABLET ], + 'Readboy G18' => [ 'Readboy', 'G18', DeviceType::TABLET ], + 'Readboy G50' => [ 'Readboy', 'G50', DeviceType::TABLET ], + 'Readboy G100' => [ 'Readboy', 'G100', DeviceType::TABLET ], + ], + + 'ReederA8R' => [ 'Reeder', 'A8R', DeviceType::TABLET ], + 'reeder A8i Quad 2' => [ 'Reeder', 'A8i Quad 2', DeviceType::TABLET ], + + 'CT9973W43M' => [ 'RCA', 'Mercury 7', DeviceType::TABLET ], + 'RCT6703W12' => [ 'RCA', 'Atlas 10', DeviceType::TABLET ], + 'RCT6203W46' => [ 'RCA', 'Pro 10', DeviceType::TABLET ], + 'RCT6203W46L' => [ 'RCA', 'Pro 10 Edition II', DeviceType::TABLET ], + 'RCT6223W87' => [ 'RCA', 'Pro 12', DeviceType::TABLET ], + 'RCT6303W87DK' => [ 'RCA', '10 Viking Pro', DeviceType::TABLET ], + 'RCT6303W87M' => [ 'RCA', '10 Viking Pro', DeviceType::TABLET ], + 'RCT6303W87M7' => [ 'RCA', '10 Viking Pro', DeviceType::TABLET ], + 'RCT6K03W13' => [ 'RCA', '10 Viking Pro', DeviceType::TABLET ], + 'RCT6603W47M7' => [ 'RCA', '10 Viking II', DeviceType::TABLET ], + 'RCT6603W87M7' => [ 'RCA', '10 Viking II Pro', DeviceType::TABLET ], + 'RCT6873W42' => [ 'RCA', '7 Voyager', DeviceType::TABLET ], + 'RCT6773W22B' => [ 'RCA', '7 Voyager II', DeviceType::TABLET ], + 'RCT6773W22BM' => [ 'RCA', '7 Voyager II', DeviceType::TABLET ], + 'RCT6973W43' => [ 'RCA', '7 Voyager III', DeviceType::TABLET ], + 'RCT6513W87' => [ 'RCA', '11 Galileo Pro', DeviceType::TABLET ], + 'RCT6213W87DK' => [ 'RCA', '11 Maven Pro', DeviceType::TABLET ], + 'RCT6673W23M' => [ 'RCA', '7 Mercury', DeviceType::TABLET ], + 'RCT6673W43M' => [ 'RCA', '7 Mercury', DeviceType::TABLET ], + 'RCT6S03W12' => [ 'RCA', 'RCT6S03W12', DeviceType::TABLET ], + + 'PlayBook' => [ 'RIM', 'BlackBerry PlayBook', DeviceType::TABLET ], + 'RBK-490' => [ 'Ritmix', 'RBK-490', DeviceType::TABLET ], + + '(Ritmix )?RM[DP]-?[0-9]{3,3}!!' => [ + 'RMD-720' => [ 'Ritmix', 'RMD-720', DeviceType::TABLET ], + 'RMD-721' => [ 'Ritmix', 'RMD-721', DeviceType::TABLET ], + 'RMD-722' => [ 'Ritmix', 'RMD-722', DeviceType::TABLET ], + 'RITMIX RMD-740' => [ 'Ritmix', 'RMD-740', DeviceType::TABLET ], + 'Ritmix RMD745' => [ 'Ritmix', 'RMD-745', DeviceType::TABLET ], + 'RMD-755' => [ 'Ritmix', 'RMD-755', DeviceType::TABLET ], + 'RMD-757' => [ 'Ritmix', 'RMD-757', DeviceType::TABLET ], + 'RMD-770' => [ 'Ritmix', 'RMD-770', DeviceType::TABLET ], + 'RMD-785' => [ 'Ritmix', 'RMD-785', DeviceType::TABLET ], + 'RMD-787' => [ 'Ritmix', 'RMD-787', DeviceType::TABLET ], + 'Ritmix RMD840' => [ 'Ritmix', 'RMD-840', DeviceType::TABLET ], + 'RMD-855' => [ 'Ritmix', 'RMD-855', DeviceType::TABLET ], + 'RMD-900' => [ 'Ritmix', 'RMD-900', DeviceType::TABLET ], + 'RMD-1026' => [ 'Ritmix', 'RMD-1026', DeviceType::TABLET ], + 'RMD-1027' => [ 'Ritmix', 'RMD-1027', DeviceType::TABLET ], + 'RMD-1030' => [ 'Ritmix', 'RMD-1030', DeviceType::TABLET ], + 'RMD-1035' => [ 'Ritmix', 'RMD-1035', DeviceType::TABLET ], + 'RMD-1040' => [ 'Ritmix', 'RMD-1040', DeviceType::TABLET ], + 'RMD-1050' => [ 'Ritmix', 'RMD-1050', DeviceType::TABLET ], + 'RMD-1055' => [ 'Ritmix', 'RMD-1055', DeviceType::TABLET ], + 'RMD-1058' => [ 'Ritmix', 'RMD-1058', DeviceType::TABLET ], + 'RMD-1070' => [ 'Ritmix', 'RMD-1070', DeviceType::TABLET ], + 'RMP400' => [ 'Ritmix', 'RMP-400', DeviceType::TABLET ], + 'RMP-450' => [ 'Ritmix', 'RMP-450', DeviceType::TABLET ], + 'RMP-530' => [ 'Ritmix', 'RMP-530', DeviceType::TABLET ], + 'RMP-600' => [ 'Ritmix', 'RMP-600', DeviceType::TABLET ], + ], + + '(?:RIVO )?RHYTHM RX ?([0-9]+)!' => [ 'Rivo', 'Rhythm RX$1' ], + + 'RMD-[0-9]{2,3}G!!' => [ + 'RMD-73G' => [ 'Ross&Moor', 'RMD-73G', DeviceType::TABLET ], + 'RMD-917G' => [ 'Ross&Moor', 'RMD-917G', DeviceType::TABLET ], + 'RMD-973G' => [ 'Ross&Moor', 'RMD-973G', DeviceType::TABLET ], + ], + + 'RoverPad 3W T71D' => [ 'RoverPad', '3W T71D', DeviceType::TABLET ], + + 'Snexian!!' => [ + 'Snexian Mi320' => [ 'S Nexian', 'Chronos Mi320' ], + 'Snexian Mi430' => [ 'S Nexian', 'Xtreme2 Mi430' ], + ], + + 'Mi438S' => [ 'S Nexian', 'Journey One Mi438' ], + 'A8HD' => [ 'Saayi', 'Dropad A8HD', DeviceType::TABLET ], + 'Salora E1' => [ 'Salora', 'ValuMaxx E1' ], + 'Salora-E1' => [ 'Salora', 'ValuMaxx E1' ], + 'Salora-E4' => [ 'Salora', 'Njoy E4' ], + 'Salora-E5' => [ 'Salora', 'Njoy G E5' ], + 'SALORA-E6' => [ 'Salora', 'Njoy X E6' ], + 'SALORA-E7' => [ 'Salora', 'Njoy Slim X E7' ], + 'SALORA E8' => [ 'Salora', 'Njoy Power X E8' ], + + 'Sansui[ -]([A-Z]{1,2}[0-9]+[A-Z]?\+?)!' => [ 'Sansui', '$1' ], + 'Sansui Cosmic SP ([0-9]+)!' => [ 'Sansui', 'Cosmic SP$1' ], + 'SANSUI ETAB ([0-9]+) ?VP!' => [ 'Sansui', 'Etab $1VP', DeviceType::TABLET ], + + 'DPH-D710' => [ 'Samsung', 'Galaxy S II' ], + + 'EK-[GK][CN][0-9]{3,3}!!' => [ + 'EK-GC100!' => [ 'Samsung', 'Galaxy Camera', DeviceType::CAMERA ], + 'EK-GC110!' => [ 'Samsung', 'Galaxy Camera', DeviceType::CAMERA ], + 'EK-GC120!' => [ 'Samsung', 'Galaxy Camera LTE', DeviceType::CAMERA ], + 'EK-GC200!' => [ 'Samsung', 'Galaxy Camera 2', DeviceType::CAMERA ], + 'EK-GN100!' => [ 'Samsung', 'Galaxy NX', DeviceType::CAMERA ], + 'EK-GN120!' => [ 'Samsung', 'Galaxy NX', DeviceType::CAMERA ], + 'EK-KC100!' => [ 'Samsung', 'Galaxy Camera', DeviceType::CAMERA ], + 'EK-KC120!' => [ 'Samsung', 'Galaxy Camera LTE', DeviceType::CAMERA ], + ], + + 'GT-B[0-9]{4,4}!!' => [ + 'GT-B5330!' => [ 'Samsung', 'Galaxy Chat' ], + 'GT-B5510!' => [ 'Samsung', 'Galaxy Y Pro' ], + 'GT-B5512!' => [ 'Samsung', 'Galaxy Y Pro Duos' ], + 'GT-B7510!' => [ 'Samsung', 'Galaxy Pro' ], + 'GT-B7810!' => [ 'Samsung', 'Galaxy M Pro 2' ], + 'GT-B9062!' => [ 'Samsung', 'GT-B9062' ], + 'GT-B9120!' => [ 'Samsung', 'GT-B9120' ], + 'GT-B9150!' => [ 'Samsung', 'Galaxy HomeSync', DeviceType::TELEVISION ], + 'GT-B9388!' => [ 'Samsung', 'GT-B9388' ], + ], + + 'GT-I[0-9]{3,4}!!' => [ + 'GT-I55(00|03|08)!' => [ 'Samsung', 'Galaxy Europa' ], + 'GT-I5510!' => [ 'Samsung', 'Galaxy 551' ], + 'GT-I5700!' => [ 'Samsung', 'Galaxy Spica' ], + 'GT-I58(00|01)!' => [ 'Samsung', 'Galaxy Apollo' ], + 'GT-I6500!' => [ 'Samsung', 'Saturn' ], + 'GT-I7500!' => [ 'Samsung', 'Galaxy' ], + 'GT-I777!' => [ 'Samsung', 'Singa' ], + 'GT-I8000!' => [ 'Samsung', 'Omnia 2' ], + 'GT-I8150!' => [ 'Samsung', 'Galaxy W' ], + 'GT-I8160!' => [ 'Samsung', 'Galaxy Ace 2' ], + 'GT-I81(90|91)!' => [ 'Samsung', 'Galaxy S III Mini' ], + 'GT-I8200!' => [ 'Samsung', 'Galaxy S III Mini Value Edition' ], + 'GT-I8240!' => [ 'Samsung', 'GT-I8240' ], + 'GT-I8245!' => [ 'Samsung', 'GT-I8245' ], + 'GT-I8250!' => [ 'Samsung', 'Galaxy Beam' ], + 'GT-I8258!' => [ 'Samsung', 'Galaxy M Style' ], + 'GT-I82(60|62)!' => [ 'Samsung', 'Galaxy Core' ], + 'GT-I8268!' => [ 'Samsung', 'GT-I8268' ], + 'GT-I85(20|30)!' => [ 'Samsung', 'Galaxy Beam' ], + 'GT-I85(50|52|58)!' => [ 'Samsung', 'Galaxy Win' ], + 'GT-I8580' => [ 'Samsung', 'Galaxy Core Advance' ], + 'GT-I8730!' => [ 'Samsung', 'Galaxy Express' ], + 'GT-I90(00|08|18|88)!' => [ 'Samsung', 'Galaxy S' ], + 'GT-I9001!' => [ 'Samsung', 'Galaxy S Plus' ], + 'GT-I9003!' => [ 'Samsung', 'Galaxy SL' ], + 'GT-I9010!' => [ 'Samsung', 'Galaxy S Giorgio Armani' ], + 'GT-I9050!' => [ 'Samsung', 'GT-I9050' ], + 'GT-I9060!' => [ 'Samsung', 'Galaxy Grand Neo' ], + 'GT-I9063!' => [ 'Samsung', 'Galaxy Grand Neo Duos' ], + 'GT-I9070!' => [ 'Samsung', 'Galaxy S Advance' ], + 'GT-I9080!' => [ 'Samsung', 'Galaxy Grand' ], + 'GT-I9082!' => [ 'Samsung', 'Galaxy Grand Duos' ], + 'GT-I91(00|08)!' => [ 'Samsung', 'Galaxy S II' ], + 'GT-I9103!' => [ 'Samsung', 'Galaxy R' ], + 'GT-I9105!' => [ 'Samsung', 'Galaxy S II Plus' ], + 'GT-I91(18|28)!' => [ 'Samsung', 'Galaxy Grand' ], + 'GT-I91(50|58)!' => [ 'Samsung', 'Galaxy Mega 5.8' ], + 'GT-I9152!' => [ 'Samsung', 'Galaxy Mega 5.8 Plus' ], + 'GT-I9168!' => [ 'Samsung', 'Galaxy Grand Neo+' ], + 'GT-I9188!' => [ 'Samsung', 'GT-I9188' ], + 'GT-I91(90|95|97)!' => [ 'Samsung', 'Galaxy S4 Mini' ], + 'GT-I9192!' => [ 'Samsung', 'Galaxy S4 Mini Duos' ], + 'GT-I92(00|05|08)!' => [ 'Samsung', 'Galaxy Mega 6.3' ], + 'GT-I9210!' => [ 'Samsung', 'Galaxy S II LTE' ], + 'GT-I92(20|28)!' => [ 'Samsung', 'Galaxy Note' ], + 'GT-I92(30|35)!' => [ 'Samsung', 'Galaxy Golden' ], + 'GT-I9250!' => [ 'Samsung', 'Galaxy Nexus' ], + 'GT-I92(60|68)!' => [ 'Samsung', 'Galaxy Premier' ], + 'GT-I9295!' => [ 'Samsung', 'Galaxy S4 Active' ], + 'GT-I93(00|03|05|08)!' => [ 'Samsung', 'Galaxy S III' ], + 'GT-I93(01)!' => [ 'Samsung', 'Galaxy S3 Neo' ], + 'GT-I9400' => [ 'Samsung', 'GT-I9400' ], // Unknown + 'GT-I9405!' => [ 'Samsung', 'GT-I9405' ], // Unknown + 'GT-I9406!' => [ 'Samsung', 'GT-I9406' ], // Unknown + 'GT-I95(00|05|07)!' => [ 'Samsung', 'Galaxy S4' ], + 'GT-I95(02|08)!' => [ 'Samsung', 'Galaxy S4 Duos' ], + 'GT-I95(06)!' => [ 'Samsung', 'Galaxy S4 Advance' ], + 'GT-I9515!' => [ 'Samsung', 'Galaxy S4 Neo' ], // Maybe + 'GT-I9600!' => [ 'Samsung', 'GT-I9600' ], // Unknown + 'GT-I9800!' => [ 'Samsung', 'GT-I9800' ], // Unknown + ], + + 'GT-N[0-9]{4,4}!!' => [ + 'GT-N51(00|05|10|20)!' => [ 'Samsung', 'Galaxy Note 8.0', DeviceType::TABLET ], + 'GT-N70(00|05)!' => [ 'Samsung', 'Galaxy Note' ], + 'GT-N71(00|02|05|08)!' => [ 'Samsung', 'Galaxy Note II' ], + 'GT-N7200!' => [ 'Samsung', 'Galaxy Note 3' ], // Fake? + 'GT-N80(00|05|10|13|20)!' => [ 'Samsung', 'Galaxy Note 10.1', DeviceType::TABLET ], + 'GT-N90(00|02||05|06|08)!' => [ 'Samsung', 'Galaxy Note 3' ], + ], + + 'GT-P[0-9]{4,4}!!' => [ + 'GT-P10(00|10|13)!' => [ 'Samsung', 'Galaxy Tab 7.0', DeviceType::TABLET ], + 'GT-P31(00|05|08|10|13)!' => [ 'Samsung', 'Galaxy Tab 2 7.0', DeviceType::TABLET ], + 'GT-P32(00|10)!' => [ 'Samsung', 'Galaxy Tab 3 7.0', DeviceType::TABLET ], + 'GT-P51(00|10|13)!' => [ 'Samsung', 'Galaxy Tab 2 10.1', DeviceType::TABLET ], + 'GT-P52(00|10|20)!' => [ 'Samsung', 'Galaxy Tab 3 10.1', DeviceType::TABLET ], + 'GT-P62(00|10)!' => [ 'Samsung', 'Galaxy Tab 7.0 Plus', DeviceType::TABLET ], + 'GT-P62(01|11)!' => [ 'Samsung', 'Galaxy Tab 7.0 Plus N', DeviceType::TABLET ], + 'GT-P68(00|10|13)!' => [ 'Samsung', 'Galaxy Tab 7.7', DeviceType::TABLET ], + 'GT-P7100!' => [ 'Samsung', 'Galaxy Tab 10.1V', DeviceType::TABLET ], + 'GT-P73(00|10|20)!' => [ 'Samsung', 'Galaxy Tab 8.9', DeviceType::TABLET ], + 'GT-P75(00|03|10)!' => [ 'Samsung', 'Galaxy Tab 10.1', DeviceType::TABLET ], + 'GT-P75(01|11)!' => [ 'Samsung', 'Galaxy Tab 10.1N', DeviceType::TABLET ], + 'GT-P7580!' => [ 'Samsung', 'Galaxy Tab 10.1', DeviceType::TABLET ], + 'GT-P8110!' => [ 'Samsung', 'Nexus 10', DeviceType::TABLET ], + 'GT-P8200!' => [ 'Samsung', 'Galaxy Tab 3 Plus (10.1)', DeviceType::TABLET ], + ], + + 'GT-S[0-9]{4,4}!!' => [ + 'GT-S52(80|82)!' => [ 'Samsung', 'Galaxy Star' ], + 'GT-S5283!' => [ 'Samsung', 'Galaxy Star Trios' ], + 'GT-S5300!' => [ 'Samsung', 'Galaxy Pocket' ], + 'GT-S5301!' => [ 'Samsung', 'Galaxy Pocket Plus' ], + 'GT-S5302!' => [ 'Samsung', 'Galaxy Pocket Duos' ], + 'GT-S5303!' => [ 'Samsung', 'Galaxy Y Plus' ], + 'GT-S5310!' => [ 'Samsung', 'Galaxy Pocket Neo' ], + 'GT-S5312!' => [ 'Samsung', 'Galaxy Pocket Neo Duos' ], + 'GT-S53(60|63|68|69)!' => [ 'Samsung', 'Galaxy Y' ], + 'GT-S5367!' => [ 'Samsung', 'Galaxy Y TV' ], + 'GT-S55(70|78)!' => [ 'Samsung', 'Galaxy Mini' ], + 'GT-S5660!' => [ 'Samsung', 'Galaxy Gio' ], + 'GT-S5670!' => [ 'Samsung', 'Galaxy Fit' ], + 'GT-S56(90|98)!' => [ 'Samsung', 'Galaxy Xcover' ], + 'GT-S58(20|30|31|38|39)!' => [ 'Samsung', 'Galaxy Ace' ], + 'GT-S6010!' => [ 'Samsung', 'Galaxy Music' ], + 'GT-S6012!' => [ 'Samsung', 'Galaxy Music Duos' ], + 'GT-S6102!' => [ 'Samsung', 'Galaxy Y Duos' ], + 'GT-S6108!' => [ 'Samsung', 'Galaxy Y Pop' ], + 'GT-S6293!' => [ 'Samsung', 'Galaxy Young Plus' ], + 'GT-S6310!' => [ 'Samsung', 'Galaxy Young' ], + 'GT-S6312!' => [ 'Samsung', 'Galaxy Young Duos' ], + 'GT-S6313!' => [ 'Samsung', 'Galaxy Y Duos TV' ], + 'GT-S6352!' => [ 'Samsung', 'Galaxy Ace Duos' ], + 'GT-S6358!' => [ 'Samsung', 'Galaxy Ace' ], + 'GT-S6500!' => [ 'Samsung', 'Galaxy Mini 2' ], + 'GT-S6702!' => [ 'Samsung', 'Galaxy Y Duos' ], + 'GT-S6790!' => [ 'Samsung', 'Galaxy Fame Lite' ], + 'GT-S6792!' => [ 'Samsung', 'Galaxy Fame Lite Duos' ], + 'GT-S6800!' => [ 'Samsung', 'Galaxy Ace Advance' ], + 'GT-S6802!' => [ 'Samsung', 'Galaxy Ace Duos' ], + 'GT-S68(10|12|18)!' => [ 'Samsung', 'Galaxy Fame' ], + 'GT-S72(60|62)!' => [ 'Samsung', 'Galaxy Star Pro' ], + 'GT-S72(70|75|78)!' => [ 'Samsung', 'Galaxy Ace 3' ], + 'GT-S7273T' => [ 'Samsung', 'Galaxy S II TV' ], + 'GT-S72(72|73)!' => [ 'Samsung', 'Galaxy Ace 3 Duos' ], + 'GT-S7390!' => [ 'Samsung', 'Galaxy Trend Lite' ], // Aka Galaxy Fresh + 'GT-S7392!' => [ 'Samsung', 'Galaxy Trend' ], + 'GT-S75(00|08)!' => [ 'Samsung', 'Galaxy Ace Plus' ], + 'GT-S7560!' => [ 'Samsung', 'Galaxy Ace II x' ], + 'GT-S75(62|66|68)!' => [ 'Samsung', 'Galaxy S Duos' ], + 'GT-S7570!' => [ 'Samsung', 'Galaxy Trend II' ], + 'GT-S7572!' => [ 'Samsung', 'Galaxy Trend II Duos' ], + 'GT-S75(80|83)!' => [ 'Samsung', 'Galaxy Trend Plus' ], + 'GT-S75(82)!' => [ 'Samsung', 'Galaxy S Duos 2' ], + 'GT-S7710!' => [ 'Samsung', 'Galaxy Xcover 2' ], + 'GT-S7898!' => [ 'Samsung', 'Galaxy Trend 2' ], + 'GT-S8500' => [ 'Samsung', 'Wave' ], + 'GT-S8530' => [ 'Samsung', 'Wave II' ], + 'GT-S9081' => [ 'Samsung', 'GT-S9081' ], // Unknown + ], + + 'GT-T959!' => [ 'Samsung', 'Galaxy S Vibrant' ], + + 'SCH-[iI][0-9]{3,3}!!' => [ + 'SCH-i509!' => [ 'Samsung', 'Galaxy Y' ], + 'SCH-i559' => [ 'Samsung', 'Galaxy Pop' ], + 'SCH-i569' => [ 'Samsung', 'Galaxy Gio' ], + 'SCH-i579' => [ 'Samsung', 'Galaxy Ace' ], + 'SCH-i589' => [ 'Samsung', 'Galaxy Ace Duos' ], + 'SCH-i705!' => [ 'Samsung', 'Galaxy Tab 2 7.0', DeviceType::TABLET ], + 'SCH-i809' => [ 'Samsung', 'Galaxy S' ], + 'SCH-i889' => [ 'Samsung', 'Galaxy Note' ], + 'SCH-i899' => [ 'Samsung', 'Galaxy' ], + 'SCH-i909' => [ 'Samsung', 'Galaxy S' ], + 'SCH-i919' => [ 'Samsung', 'Galaxy S Duos' ], + 'SCH-i929' => [ 'Samsung', 'Galaxy S II Duos' ], + 'SCH-I100' => [ 'Samsung', 'Gem' ], + 'SCH-I110' => [ 'Samsung', 'Illusion' ], + 'SCH-I200PP' => [ 'Samsung', 'Galaxy Legend' ], + 'SCH-I200( 4G)?$!' => [ 'Samsung', 'Galaxy Stellar' ], + 'SCH-I339' => [ 'Samsung', 'SCH-I339' ], + 'SCH-I400' => [ 'Samsung', 'Continuum' ], + 'SCH-I405( 4G)?$!' => [ 'Samsung', 'Stratosphere' ], + 'SCH-I405U' => [ 'Samsung', 'Galaxy Metrix' ], + 'SCH-I415( 4G)?$!' => [ 'Samsung', 'Stratosphere II' ], + 'SCH-I425' => [ 'Samsung', 'Stratosphere 3' ], + 'SCH-I435!' => [ 'Samsung', 'Galaxy S4 Mini' ], + 'SCH-I500' => [ 'Samsung', 'Fascinate' ], + 'SCH-I510' => [ 'Samsung', 'Stealth V' ], + 'SCH-I510 4G' => [ 'Samsung', 'Droid Charge' ], + 'SCH-I515' => [ 'Samsung', 'Galaxy Nexus' ], + 'SCH-I519' => [ 'Samsung', 'SCH-I519' ], + 'SCH-I535!' => [ 'Samsung', 'Galaxy S III' ], + 'SCH-I545!' => [ 'Samsung', 'Galaxy S4' ], + 'SCH-I605!' => [ 'Samsung', 'Galaxy Note II' ], + 'SCH-I619' => [ 'Samsung', 'Galaxy Ace A+' ], + 'SCH-I629' => [ 'Samsung', 'Galaxy Fame' ], + 'SCH-I639' => [ 'Samsung', 'SCH-I639' ], + 'SCH-I659' => [ 'Samsung', 'Galaxy Ace Plus' ], + 'SCH-I665' => [ 'Samsung', 'SCH-I665' ], // Unknown + 'SCH-I679' => [ 'Samsung', 'SCH-I679' ], + 'SCH-I699!' => [ 'Samsung', 'Galaxy Trend' ], + 'SCH-I739' => [ 'Samsung', 'Galaxy Trend 2' ], + 'SCH-I747' => [ 'Samsung', 'Galaxy S III' ], + 'SCH-I759' => [ 'Samsung', 'Galaxy Infinite' ], + 'SCH-I779' => [ 'Samsung', 'Saga' ], + 'SCH-I800' => [ 'Samsung', 'Galaxy Tab 7.0', DeviceType::TABLET ], + 'SCH-I815!' => [ 'Samsung', 'Galaxy Tab 7.7', DeviceType::TABLET ], + 'SCH-I829' => [ 'Samsung', 'Galaxy Style Duos' ], + 'SCH-I869' => [ 'Samsung', 'Galaxy Win' ], + 'SCH-I879!' => [ 'Samsung', 'Galaxy Grand' ], + 'SCH-I905!' => [ 'Samsung', 'Galaxy Tab 10.1', DeviceType::TABLET ], + 'SCH-I909' => [ 'Samsung', 'Galaxy S' ], + 'SCH-I915!' => [ 'Samsung', 'Galaxy Tab 2 10.1', DeviceType::TABLET ], + 'SCH-I919!' => [ 'Samsung', 'Galaxy S Duos' ], + 'SCH-I925!' => [ 'Samsung', 'Galaxy Note 10.1', DeviceType::TABLET ], + 'SCH-I939!' => [ 'Samsung', 'Galaxy S III' ], + 'SCH-I959' => [ 'Samsung', 'Galaxy S4' ], + ], + + 'SCH-L710!' => [ 'Samsung', 'Galaxy S III' ], + 'SCH-M828!' => [ 'Samsung', 'Galaxy Precedent' ], + 'SCH-N719' => [ 'Samsung', 'Galaxy Note II' ], + + 'SCH-P[0-9]{3,3}!!' => [ + 'SCH-P709!' => [ 'Samsung', 'Galaxy Mega 5.8' ], + 'SCH-P729' => [ 'Samsung', 'Galaxy Mega 6.3' ], + 'SCH-P739' => [ 'Samsung', 'Galaxy Tab 8.9', DeviceType::TABLET ], + ], + + 'SCH-R[0-9]{3,3}!!' => [ + 'SCH-R530!' => [ 'Samsung', 'Galaxy S III' ], + 'SCH-R680!' => [ 'Samsung', 'Repp' ], + 'SCH-R710!' => [ 'Samsung', 'Suede' ], + 'SCH-R720!' => [ 'Samsung', 'Admire' ], + 'SCH-R730!' => [ 'Samsung', 'Transfix' ], + 'SCH-R740!' => [ 'Samsung', 'Galaxy Discover' ], + 'SCH-R760!' => [ 'Samsung', 'Galaxy S II' ], + 'SCH-R820!' => [ 'Samsung', 'Admire' ], + 'SCH-R830!' => [ 'Samsung', 'Galaxy Axiom' ], + 'SCH-R880!' => [ 'Samsung', 'Acclaim' ], + 'SCH-R890!' => [ 'Samsung', 'SCH-R890' ], + 'SCH-R910!' => [ 'Samsung', 'Galaxy Indulge 4G' ], + 'SCH-R915!' => [ 'Samsung', 'Galaxy Indulge' ], + 'SCH-R920!' => [ 'Samsung', 'Galaxy Attain 4G' ], + 'SCH-R930!' => [ 'Samsung', 'Galaxy S Aviator' ], + 'SCH-R940!' => [ 'Samsung', 'Galaxy S Lightray' ], + 'SCH-R950!' => [ 'Samsung', 'Galaxy Note II' ], + 'SCH-R960!' => [ 'Samsung', 'Galaxy Mega 6.3' ], + 'SCH-R970!' => [ 'Samsung', 'Galaxy S4' ], + ], + + 'SCH-S[0-9]{3,3}!!' => [ + 'SCH-S720!' => [ 'Samsung', 'Galaxy Proclaim' ], + 'SCH-S735!' => [ 'Samsung', 'Galaxy Discover' ], + 'SCH-S738!' => [ 'Samsung', 'Galaxy Centura' ], + 'SCH-S950!' => [ 'Samsung', 'Galaxy S Showcase' ], + 'SCH-S9(60|68)!' => [ 'Samsung', 'Galaxy S III' ], + ], + + 'SCH-V727' => [ 'Samsung', 'Galaxy S4' ], + + 'SCH-W[0-9]{3,4}!!' => [ + 'SCH-W789!' => [ 'Samsung', 'SCH-W789' ], + 'SCH-W799!' => [ 'Samsung', 'SCH-W799' ], + 'SCH-W899' => [ 'Samsung', 'SCH-W899' ], + 'SCH-W999' => [ 'Samsung', 'SCH-W999' ], + 'SCH-W2013' => [ 'Samsung', 'SCH-W2013' ], + 'SCH-W9913' => [ 'Samsung', 'SCH-W9913' ], + ], + + 'SGH-[EILNMS][0-9]{3,4}!!' => [ + 'SGH-E258' => [ 'Samsung', 'SGH-E258' ], + 'SGH-I317!' => [ 'Samsung', 'Galaxy Note II' ], + 'SGH-I237!' => [ 'Samsung', 'SGH-I237' ], // Developer device + 'SGH-I257!' => [ 'Samsung', 'Galaxy S4 Mini' ], + 'SGH-I317!' => [ 'Samsung', 'Galaxy Note II' ], + 'SGH-I337!' => [ 'Samsung', 'Galaxy S4' ], + 'SGH-I407!' => [ 'Samsung', 'Galaxy Amp' ], + 'SGH-I437!' => [ 'Samsung', 'Galaxy Express' ], + 'SGH-I467!' => [ 'Samsung', 'Galaxy Note 8.0', DeviceType::TABLET ], + 'SGH-I497' => [ 'Samsung', 'Galaxy Tab 2 10.1', DeviceType::TABLET ], + 'SGH-I527!' => [ 'Samsung', 'Galaxy Mega 6.3' ], + 'SGH-I535!' => [ 'Samsung', 'Galaxy S III' ], + 'SGH-I537!' => [ 'Samsung', 'Galaxy S4 Active' ], + 'SGH-I545!' => [ 'Samsung', 'Galaxy S4' ], + 'SGH-I547!' => [ 'Samsung', 'Galaxy Rugby Pro' ], + 'SGH-I577!' => [ 'Samsung', 'Galaxy Exhilarate' ], + 'SGH-I717!' => [ 'Samsung', 'Galaxy Note' ], + 'SGH-I727R' => [ 'Samsung', 'Galaxy S II' ], + 'SGH-I727!' => [ 'Samsung', 'Galaxy S II Skyrocket' ], + 'SGH-I7(47|48)!' => [ 'Samsung', 'Galaxy S III' ], + 'SGH-I757!' => [ 'Samsung', 'Galaxy S II Skyrocket HD' ], + 'SGH-I9?777!' => [ 'Samsung', 'Galaxy S II' ], + 'SGH-I807' => [ 'Samsung', 'SGH-I807' ], + 'SGH-I827!' => [ 'Samsung', 'Galaxy Appeal' ], + 'SGH-I847' => [ 'Samsung', 'Rugby Smart' ], + 'SGH-I857' => [ 'Samsung', 'DoubleTime' ], + 'SGH-I8(96|97)!' => [ 'Samsung', 'Captivate' ], + 'SGH-I927!' => [ 'Samsung', 'Captivate Glide' ], + 'SGH-I957!' => [ 'Samsung', 'Galaxy Tab 8.9', DeviceType::TABLET ], + 'SGH-I987' => [ 'Samsung', 'Galaxy Tab 7.0', DeviceType::TABLET ], + 'SGH-I997!' => [ 'Samsung', 'Infuse 4G' ], + 'SGH-I9000' => [ 'Samsung', 'Galaxy S' ], + 'SGH-I9300' => [ 'Samsung', 'Galaxy S III' ], + 'SGH-L710' => [ 'Samsung', 'Galaxy S III' ], + 'SGH-N014!' => [ 'Samsung', 'GALAXY Tab 10.1 LTE SC-01D', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'SGH-N075!' => [ 'Samsung', 'GALAXY J SC-02F', 'carrier' => 'DoCoMo' ], + 'SGH-M819!' => [ 'Samsung', 'Galaxy Mega 6.3' ], + 'SGH-M909!' => [ 'Samsung', 'Galaxy S III' ], + 'SGH-M919!' => [ 'Samsung', 'Galaxy S4' ], + 'SGH-S730!' => [ 'Samsung', 'Galaxy Discover' ], + 'SGH-S959!' => [ 'Samsung', 'Galaxy S II' ], + 'SGH-S970G' => [ 'Samsung', 'Galaxy S4' ], + ], + + 'SGH-T[0-9]{3,3}!!' => [ + 'SGH-T289!' => [ 'Samsung', 'Gravity Q' ], + 'SGH-T399!' => [ 'Samsung', 'Galaxy Light' ], // Codename Garda + 'SGH-T499!' => [ 'Samsung', 'Dart' ], + 'SGH-T499[VY]!' => [ 'Samsung', 'Galaxy Mini' ], + 'SGH-T589!' => [ 'Samsung', 'Gravity Smart' ], + 'SGH-T599!' => [ 'Samsung', 'Galaxy Exhibit' ], + 'SGH-T679!' => [ 'Samsung', 'Galaxy Exhibit II' ], + 'SGH-T699' => [ 'Samsung', 'Galaxy S Relay' ], + 'SGH-T727' => [ 'Samsung', 'Galaxy S II Skyrocket' ], + 'SGH-T759' => [ 'Samsung', 'Exhibit 4G' ], + 'SGH-T769' => [ 'Samsung', 'Galaxy S Blaze' ], + 'SGH-T779' => [ 'Samsung', 'Galaxy Tab 2 10.1', DeviceType::TABLET ], + 'SGH-T839!' => [ 'Samsung', 'T-Mobile Sidekick' ], + 'SGH-T849' => [ 'Samsung', 'Galaxy Tab 7.0', DeviceType::TABLET ], + 'SGH-T859' => [ 'Samsung', 'Galaxy Tab 10.1', DeviceType::TABLET ], + 'SGH-T869' => [ 'Samsung', 'Galaxy Tab 7.0 Plus', DeviceType::TABLET ], + 'SGH-T879' => [ 'Samsung', 'Galaxy Note' ], + 'SGH-T889!' => [ 'Samsung', 'Galaxy Note II' ], + 'SGH-T959' => [ 'Samsung', 'Vibrant' ], + 'SGH-T959D' => [ 'Samsung', 'Galaxy S Fascinate 3G+' ], + 'SGH-T959P' => [ 'Samsung', 'Galaxy S Fascinate 4G' ], + 'SGH-T959V' => [ 'Samsung', 'Galaxy S 4G' ], + 'SGH-T959W' => [ 'Samsung', 'Galaxy S 4G' ], + 'SGH-T989' => [ 'Samsung', 'Galaxy S II' ], + 'SGH-T989D' => [ 'Samsung', 'Galaxy S II X' ], + 'SGH-T999!' => [ 'Samsung', 'Galaxy S III' ], + ], + + 'SGH-U468!' => [ 'Samsung', 'Galaxy S4' ], + 'SGH-W2013!' => [ 'Samsung', 'SGH-W2013' ], + + 'SHV-E[0-9]{3,3}!!' => [ + 'SHV-E120!' => [ 'Samsung', 'Galaxy S II HD LTE' ], + 'SHV-E110!' => [ 'Samsung', 'Galaxy S II LTE' ], + 'SHV-E140!' => [ 'Samsung', 'Galaxy Tab 8.9', DeviceType::TABLET ], + 'SHV-E150!' => [ 'Samsung', 'Galaxy Tab 7.7', DeviceType::TABLET ], + 'SHV-E160!' => [ 'Samsung', 'Galaxy Note' ], + 'SHV-E170!' => [ 'Samsung', 'Galaxy R' ], + 'SHV-E210!' => [ 'Samsung', 'Galaxy S III' ], + 'SHV-E220!' => [ 'Samsung', 'Galaxy Pop' ], + 'SHV-E230!' => [ 'Samsung', 'Galaxy Note 10.1', DeviceType::TABLET ], + 'SHV-E250!' => [ 'Samsung', 'Galaxy Note II' ], + 'SHV-E2(70|75)!' => [ 'Samsung', 'Galaxy Grand' ], + 'SHV-E300!' => [ 'Samsung', 'Galaxy S4' ], + 'SHV-E310!' => [ 'Samsung', 'Galaxy Mega 6.3' ], + 'SHV-E330!' => [ 'Samsung', 'Galaxy S4' ], + 'SHV-E370!' => [ 'Samsung', 'Galaxy S4 Mini' ], + 'SHV-E400!' => [ 'Samsung', 'Galaxy Folder' ], + 'SHV-E470!' => [ 'Samsung', 'Galaxy S4 Active' ], + 'SHV-E500!' => [ 'Samsung', 'Galaxy Win' ], + 'SHV-E510!' => [ 'Samsung', 'SHV-E510' ], + ], + + 'SHW-M[0-9]{3,3}!!' => [ + 'SHW-M100!' => [ 'Samsung', 'Galaxy A' ], + 'SHW-M110!' => [ 'Samsung', 'Galaxy S' ], + 'SHW-M115!' => [ 'Samsung', 'SHW-M115' ], + 'SHW-M130L!' => [ 'Samsung', 'Galaxy U' ], + 'SHW-M130K!' => [ 'Samsung', 'Galaxy K' ], + 'SHW-M135!' => [ 'Samsung', 'Galaxy W' ], + 'SHW-M1(80|85)!' => [ 'Samsung', 'Galaxy Tab 7.0', DeviceType::TABLET ], + 'SHW-M190!' => [ 'Samsung', 'Galaxy S Hoppin' ], + 'SHW-M220!' => [ 'Samsung', 'Galaxy Neo' ], + 'SHW-M240!' => [ 'Samsung', 'Galaxy Ace' ], + 'SHW ?-M250!' => [ 'Samsung', 'Galaxy S II' ], + 'SHW-M280!' => [ 'Samsung', 'SHW-M280' ], + 'SHW-M290!' => [ 'Samsung', 'Galaxy Gio' ], + 'SHW-M300!' => [ 'Samsung', 'Galaxy Tab 10.1', DeviceType::TABLET ], + 'SHW-M305!' => [ 'Samsung', 'Galaxy Tab 8.9', DeviceType::TABLET ], + 'SHW-M340!' => [ 'Samsung', 'Galaxy M Style' ], + 'SHW-M380!' => [ 'Samsung', 'Galaxy Tab 10.1', DeviceType::TABLET ], + 'SHW-M420!' => [ 'Samsung', 'Galaxy Nexus' ], + 'SHW-M430!' => [ 'Samsung', 'Galaxy Tab 7.0 Plus', DeviceType::TABLET ], + 'SHW-M440!' => [ 'Samsung', 'Galaxy S III' ], + 'SHW-M460!' => [ 'Samsung', 'Galaxy Ace Plus' ], + 'SHW-M4(80|85|86)!' => [ 'Samsung', 'Galaxy Note 10.1', DeviceType::TABLET ], + 'SHW-M500!' => [ 'Samsung', 'Galaxy Note 8.0', DeviceType::TABLET ], + 'SHW-M550!' => [ 'Samsung', 'SHW-M550' ], // Unknown + 'SHW-M570!' => [ 'Samsung', 'Galaxy Core Advance' ], + 'SHW-M5(80|85)!' => [ 'Samsung', 'Galaxy Core Safe' ], + ], + + 'SMT-E5015' => [ 'Samsung', 'Olleh SkyLife Smart Settopbox', DeviceType::TELEVISION ], + 'SMT-i9100' => [ 'Samsung', 'Galaxy Tab 7.0', DeviceType::TABLET ], + + 'SM-A[0-9]{3,3}!!' => [ + 'SM-A300!' => [ 'Samsung', 'Galaxy A3' ], + 'SM-A310!' => [ 'Samsung', 'Galaxy A3 (2016)' ], + 'SM-A320!' => [ 'Samsung', 'Galaxy A3 (2017)' ], + 'SM-A430!' => [ 'Samsung', 'Galaxy A4' ], + 'SM-A450!' => [ 'Samsung', 'Galaxy A4 (2017)' ], + 'SM-A500!' => [ 'Samsung', 'Galaxy A5' ], + 'SM-A510!' => [ 'Samsung', 'Galaxy A5 (2016)' ], + 'SM-A520!' => [ 'Samsung', 'Galaxy A5 (2017)' ], + 'SM-A530!' => [ 'Samsung', 'Galaxy A8 (2018)' ], + 'SM-A600!' => [ 'Samsung', 'Galaxy A6 (2018)' ], + 'SM-A6050!' => [ 'Samsung', 'Galaxy A9 Star Lite' ], + 'SM-A605!' => [ 'Samsung', 'Galaxy A6+ (2018)' ], + 'SM-A700!' => [ 'Samsung', 'Galaxy A7' ], + 'SM-A710!' => [ 'Samsung', 'Galaxy A7 (2016)' ], + 'SM-A720!' => [ 'Samsung', 'Galaxy A7 (2017)' ], + 'SM-A730!' => [ 'Samsung', 'Galaxy A8+ (2018)' ], + 'SM-A800!' => [ 'Samsung', 'Galaxy A8' ], + 'SM-A810!' => [ 'Samsung', 'Galaxy A8 (2016)' ], + 'SM-A850!' => [ 'Samsung', 'Galaxy Alpha' ], + 'SM-A900!' => [ 'Samsung', 'Galaxy A9 (2016)' ], + 'SM-A910!' => [ 'Samsung', 'Galaxy A9 Pro' ], + ], + + 'SM-C[0-9]{3,3}!!' => [ + 'SM-C10[15]!' => [ 'Samsung', 'Galaxy S4 Zoom' ], + 'SM-C11[15]!' => [ 'Samsung', 'Galaxy K Zoom' ], + 'SM-C500!' => [ 'Samsung', 'Galaxy C5' ], + 'SM-C501!' => [ 'Samsung', 'Galaxy C5 Pro' ], + 'SM-C700!' => [ 'Samsung', 'Galaxy C7' ], + 'SM-C701!' => [ 'Samsung', 'Galaxy C7 Pro' ], + 'SM-C710!' => [ 'Samsung', 'Galaxy C7 (2017)' ], + 'SM-C900!' => [ 'Samsung', 'Galaxy C9' ], + ], + + 'SM-E[0-9]{3,3}!!' => [ + 'SM-E500!' => [ 'Samsung', 'Galaxy E5' ], + 'SM-E700!' => [ 'Samsung', 'Galaxy E7' ], + ], + + 'SM-G[0-9]{3,3}!!' => [ + 'SM-G110!' => [ 'Samsung', 'Galaxy Pocket 2' ], + 'SM-G130BT' => [ 'Samsung', 'Galaxy Young 2' ], + 'SM-G130BU' => [ 'Samsung', 'Galaxy Young 2' ], + 'SM-G130E' => [ 'Samsung', 'Galaxy Star 2' ], + 'SM-G130H' => [ 'Samsung', 'Galaxy Young 2' ], + 'SM-G130U' => [ 'Samsung', 'Galaxy Young 2' ], + 'SM-G130HN' => [ 'Samsung', 'Galaxy Young 2 Duos' ], + 'SM-G130M' => [ 'Samsung', 'Galaxy Young 2 Duos' ], + 'SM-G1(50|55)!' => [ 'Samsung', 'Galaxy Folder' ], + 'SM-G1(60|65)!' => [ 'Samsung', 'Galaxy Folder 2' ], + 'SM-G310H' => [ 'Samsung', 'Galaxy Ace 4' ], + 'SM-G310HN' => [ 'Samsung', 'Galaxy Ace Style' ], + 'SM-G310R5' => [ 'Samsung', 'GreatCall Touch 3' ], + 'SM-G313HU!' => [ 'Samsung', 'Galaxy S Duos 3' ], + 'SM-G313!' => [ 'Samsung', 'Galaxy Ace 4' ], + 'SM-G316HU!' => [ 'Samsung', 'Galaxy S Duos 3-VE' ], + 'SM-G316!' => [ 'Samsung', 'Galaxy Ace 4' ], + 'SM-G318!' => [ 'Samsung', 'Galaxy Ace 4 Neo' ], + 'SM-G350[289]!' => [ 'Samsung', 'Galaxy Trend 3' ], + 'SM-G350!' => [ 'Samsung', 'Galaxy Core Plus' ], + 'SM-G3518!' => [ 'Samsung', 'Galaxy Core' ], + 'SM-G355!' => [ 'Samsung', 'Galaxy Core 2' ], + 'SM-G3568!' => [ 'Samsung', 'Galaxy Core Mini' ], + 'SM-G357!' => [ 'Samsung', 'Galaxy Ace Style' ], + 'SM-G358[689]!' => [ 'Samsung', 'Galaxy Core Lite' ], + 'SM-G360BT' => [ 'Samsung', 'Galaxy Win 2 Duos TV' ], + 'SM-G360AZ' => [ 'Samsung', 'Galaxy Core Prime' ], + 'SM-G360R6!' => [ 'Samsung', 'Galaxy Core Prime' ], + 'SM-G360[FGHMPTV689]!' => [ 'Samsung', 'Galaxy Core Prime' ], + 'SM-G361!' => [ 'Samsung', 'Galaxy Core Prime VE' ], + 'SM-G3812B!' => [ 'Samsung', 'Galaxy S III Slim' ], + 'SM-G3812' => [ 'Samsung', 'Galaxy Win Pro' ], + 'SM-G3815' => [ 'Samsung', 'Galaxy Express 2' ], + 'SM-G381[89]!' => [ 'Samsung', 'Galaxy Win Pro' ], + 'SM-G3858!' => [ 'Samsung', 'Galaxy Beam 2' ], + 'SM-G386!' => [ 'Samsung', 'Galaxy Core' ], // LTE variant + 'SM-G388!' => [ 'Samsung', 'Galaxy Xcover 3' ], + 'SM-G389!' => [ 'Samsung', 'Galaxy Xcover 3 VE' ], + 'SM-G390!' => [ 'Samsung', 'Galaxy Xcover 4' ], + 'SM-G420!' => [ 'Samsung', 'SM-G420' ], // Unknown + 'SM-G430!' => [ 'Samsung', 'SM-G430' ], // Unknown + 'SM-G480!' => [ 'Samsung', 'Galaxy S8' ], + 'SM-G485!' => [ 'Samsung', 'Galaxy S8+' ], + 'SM-G510!' => [ 'Samsung', 'Galaxy Core Max' ], + 'SM-G530!' => [ 'Samsung', 'Galaxy Grand Prime' ], + 'SM-G531!' => [ 'Samsung', 'Galaxy Grand Prime VE' ], + 'SM-G532!' => [ 'Samsung', 'Galaxy Grand Prime+' ], + 'SM-G550!' => [ 'Samsung', 'Galaxy On5' ], + 'SM-G55[12]!' => [ 'Samsung', 'Galaxy On5 (2016)' ], + 'SM-G570!' => [ 'Samsung', 'Galaxy J5 Prime' ], + 'SM-G600!' => [ 'Samsung', 'Galaxy On7' ], + 'SM-G610!' => [ 'Samsung', 'Galaxy J7 Prime' ], + 'SM-G611!' => [ 'Samsung', 'Galaxy On7 Prime (2018)' ], + 'SM-G615!' => [ 'Samsung', 'Galaxy J7 Max' ], + 'SM-G620!' => [ 'Samsung', 'Galaxy J7 Prime (2018)' ], + 'SM-G710!' => [ 'Samsung', 'Galaxy Grand 2' ], + 'SM-G720!' => [ 'Samsung', 'Galaxy Grand 3' ], + 'SM-G730!' => [ 'Samsung', 'Galaxy S III Mini' ], + 'SM-G750!' => [ 'Samsung', 'Galaxy Mega 2 ' ], + 'SM-G770!' => [ 'Samsung', 'Galaxy On7' ], + 'SM-G800!' => [ 'Samsung', 'Galaxy S5 Mini' ], + 'SM-G850!' => [ 'Samsung', 'Galaxy Alpha' ], + 'SM-G860!' => [ 'Samsung', 'Galaxy S5 Sport' ], + 'SM-G870!' => [ 'Samsung', 'Galaxy S5 Active' ], + 'SM-G880!' => [ 'Samsung', 'Galaxy S7 mini' ], + 'SM-G885Y!' => [ 'Samsung', 'Galaxy A8 Star' ], + 'SM-G8850!' => [ 'Samsung', 'Galaxy A9 Star' ], + 'SM-G890!' => [ 'Samsung', 'Galaxy S6 Active' ], + 'SM-G891!' => [ 'Samsung', 'Galaxy S7 Active' ], + 'SM-G892!' => [ 'Samsung', 'Galaxy S8 Active' ], + 'SM-G90[016]!' => [ 'Samsung', 'Galaxy S5' ], + 'SM-G903!' => [ 'Samsung', 'Galaxy S5 Neo' ], + 'SM-G9092!' => [ 'Samsung', 'Galaxy G9092' ], + 'SM-G9098!' => [ 'Samsung', 'Galaxy G9098' ], + 'SM-G909D' => [ 'Samsung', 'Galaxy S5' ], // Chinese dual sim variant + 'SM-G910!' => [ 'Samsung', 'Galaxy Round' ], + 'SM-G919!' => [ 'Samsung', 'SM-G9198' ], + 'SM-G920!' => [ 'Samsung', 'Galaxy S6' ], + 'SM-G925!' => [ 'Samsung', 'Galaxy S6 Edge' ], + 'SM-G928!' => [ 'Samsung', 'Galaxy S6 Edge+' ], + 'SM-G929!' => [ 'Samsung', '"Project Valley"' ], + 'SM-G930!' => [ 'Samsung', 'Galaxy S7' ], + 'SM-G935!' => [ 'Samsung', 'Galaxy S7 Edge' ], + 'SM-G950!' => [ 'Samsung', 'Galaxy S8' ], + 'SM-G955!' => [ 'Samsung', 'Galaxy S8+' ], + 'SM-G960!' => [ 'Samsung', 'Galaxy S9' ], + 'SM-G965!' => [ 'Samsung', 'Galaxy S9+' ], + ], + + 'SM-I9500' => [ 'Samsung', 'Galaxy S4' ], + + 'SM-J[0-9]{3,3}!!' => [ + 'SM-J100!' => [ 'Samsung', 'Galaxy J1' ], + 'SM-J105!' => [ 'Samsung', 'Galaxy J1 Mini' ], + 'SM-J106!' => [ 'Samsung', 'Galaxy J1 Mini Prime' ], + 'SM-J11[01]!' => [ 'Samsung', 'Galaxy J1 Ace' ], + 'SM-J120!' => [ 'Samsung', 'Galaxy J1 (2016)' ], + 'SM-J200!' => [ 'Samsung', 'Galaxy J2' ], + 'SM-J210!' => [ 'Samsung', 'Galaxy J2 (2016)' ], + 'SM-J250!' => [ 'Samsung', 'Galaxy J2 (2018)' ], + 'SM-J3(10|20)!' => [ 'Samsung', 'Galaxy J3' ], + 'SM-J311!' => [ 'Samsung', 'Galaxy J3 (2016)' ], + 'SM-J321!' => [ 'Samsung', 'Galaxy Sol' ], + 'SM-J326!' => [ 'Samsung', 'Galaxy Sol 2' ], + 'SM-J327!' => [ 'Samsung', 'Galaxy J3 Emerge' ], + 'SM-J330!' => [ 'Samsung', 'Galaxy J3 (2017)' ], + 'SM-J337!' => [ 'Samsung', 'Galaxy J3 (2018)' ], + 'SM-J500!' => [ 'Samsung', 'Galaxy J5' ], + 'SM-J510!' => [ 'Samsung', 'Galaxy J5 (2016)' ], + 'SM-J530!' => [ 'Samsung', 'Galaxy J5 (2017)' ], + 'SM-J700!' => [ 'Samsung', 'Galaxy J7' ], + 'SM-J701!' => [ 'Samsung', 'Galaxy J7 Core' ], + 'SM-J710!' => [ 'Samsung', 'Galaxy J7 (2016)' ], + 'SM-J727!' => [ 'Samsung', 'Galaxy J7 Perx' ], + 'SM-J730!' => [ 'Samsung', 'Galaxy J7 (2017)' ], + 'SM-J737!' => [ 'Samsung', 'Galaxy Wide 3' ], + 'SM-J800!' => [ 'Samsung', 'Galaxy J8' ], + 'SM-J810!' => [ 'Samsung', 'Galaxy J8 (2018)' ], + 'SM-J900!' => [ 'Samsung', 'Galaxy J9' ], + ], + + 'SM-N[0-9]{3,4}!!' => [ + 'SM-N750[025789][QV]?!' => [ 'Samsung', 'Galaxy Note 3 Neo' ], + 'SM-N750[LS]?!' => [ 'Samsung', 'Galaxy Note 3 Neo' ], + 'SM-N8000' => [ 'Samsung', 'Galaxy Note 800', DeviceType::TABLET ], + 'SM-N900[0256789]?!' => [ 'Samsung', 'Galaxy Note 3' ], + 'SM-N900!' => [ 'Samsung', 'Galaxy Note 3' ], + 'SM-N910[06]' => [ 'Samsung', 'Galaxy Note 4' ], + 'SM-N91[06]!' => [ 'Samsung', 'Galaxy Note 4' ], + 'SM-N915!' => [ 'Samsung', 'Galaxy Note Edge' ], + 'SM-N920!' => [ 'Samsung', 'Galaxy Note 5' ], + 'SM-N930!' => [ 'Samsung', 'Galaxy Note 7' ], + 'SM-N935!' => [ 'Samsung', 'Galaxy Note FE' ], + 'SM-N95[05]!' => [ 'Samsung', 'Galaxy Note 8' ], + 'SM-N960!' => [ 'Samsung', 'Galaxy Note 9' ], + ], + + 'SM-P[0-9]{3,3}!!' => [ + 'SM-P35[015]!' => [ 'Samsung', 'Galaxy Tab A Plus 8.0', DeviceType::TABLET ], + 'SM-P55[015]!' => [ 'Samsung', 'Galaxy Tab A Plus 9.7', DeviceType::TABLET ], + 'SM-P58[058]!' => [ 'Samsung', 'Galaxy Tab A 10.1 with S Pen (2016)', DeviceType::TABLET ], + 'SM-P60[01257]!' => [ 'Samsung', 'Galaxy Note 10.1 (2014)', DeviceType::TABLET ], + 'SM-P90[01257]!' => [ 'Samsung', 'Galaxy Note Pro', DeviceType::TABLET ], + ], + + 'SM-S[0-9]{3,3}!!' => [ + 'SM-S120VL' => [ 'Samsung', 'Galaxy Luna' ], + 'SM-S320VL' => [ 'Samsung', 'Galaxy Sky' ], + 'SM-S327VL' => [ 'Samsung', 'Galaxy J3 Luna Pro' ], + 'SM-S337TL' => [ 'Samsung', 'Galaxy J3 Luna Pro' ], + 'SM-S550TL' => [ 'Samsung', 'Galaxy On5' ], + 'SM-S727VL' => [ 'Samsung', 'Galaxy J7 Sky Pro' ], + 'SM-S737TL' => [ 'Samsung', 'Galaxy J7 Sky Pro' ], + 'SM-S765C' => [ 'Samsung', 'Galaxy Ace Style' ], + 'SM-S766C' => [ 'Samsung', 'Galaxy Stardust' ], + 'SM-S777C' => [ 'Samsung', 'Galaxy J1' ], + 'SM-S780L' => [ 'Samsung', 'Galaxy Mega 6.3' ], + 'SM-S820L' => [ 'Samsung', 'Galaxy Core Prime' ], + 'SM-S890L' => [ 'Samsung', 'Galaxy S4 Mini' ], + 'SM-S902L' => [ 'Samsung', 'Galaxy S5' ], + 'SM-S903VL' => [ 'Samsung', 'Galaxy S5' ], + 'SM-S906L' => [ 'Samsung', 'Galaxy S6' ], + 'SM-S907VL' => [ 'Samsung', 'Galaxy S6' ], + 'SM-S920L' => [ 'Samsung', 'Galaxy Grand Prime' ], + 'SM-S975L' => [ 'Samsung', 'Galaxy S4' ], + 'SM-S978L' => [ 'Samsung', 'Galaxy E5' ], + ], + + 'SM-T[0-9]{3,3}!!' => [ + 'SM-T11[01]!' => [ 'Samsung', 'Galaxy Tab 3 Lite', DeviceType::TABLET ], + 'SM-T11[36]!' => [ 'Samsung', 'Galaxy Tab 3V 7.0', DeviceType::TABLET ], + 'SM-T2105' => [ 'Samsung', 'Galaxy Tab 3 Kids', DeviceType::TABLET ], + 'SM-T21[01257]!' => [ 'Samsung', 'Galaxy Tab 3 7.0', DeviceType::TABLET ], + 'SM-T2519' => [ 'Samsung', 'Galaxy Tab Q' ], + 'SM-T255[68S]!' => [ 'Samsung', 'Galaxy Tab Q' ], + 'SM-T23[012579]!' => [ 'Samsung', 'Galaxy Tab 4 7.0', DeviceType::TABLET ], + 'SM-T28[057]!' => [ 'Samsung', 'Galaxy Tab A 7.0', DeviceType::TABLET ], + 'SM-T31[0125]!' => [ 'Samsung', 'Galaxy Tab 3 8.0', DeviceType::TABLET ], + 'SM-T32[0125]!' => [ 'Samsung', 'Galaxy Tab Pro 8.4', DeviceType::TABLET ], + 'SM-T33[01257]!' => [ 'Samsung', 'Galaxy Tab 4 8.0', DeviceType::TABLET ], + 'SM-T33[3]!' => [ 'Samsung', 'Galaxy Tab 4 8.0 (2015)', DeviceType::TABLET ], + 'SM-T35[0157]!' => [ 'Samsung', 'Galaxy Tab A 8.0', DeviceType::TABLET ], + 'SM-T36[05]!' => [ 'Samsung', 'Galaxy Tab Active 8.0', DeviceType::TABLET ], + 'SM-T37[578]!' => [ 'Samsung', 'Galaxy Tab E 8.0', DeviceType::TABLET ], + 'SM-T38[05]!' => [ 'Samsung', 'Galaxy Tab A 8.0 (2017)', DeviceType::TABLET ], + 'SM-T39[5]!' => [ 'Samsung', 'Galaxy Tab Active2 8.0', DeviceType::TABLET ], + 'SM-T520CC' => [ 'Samsung', 'Galaxy Tab Pro 10.1 Chef Collection', DeviceType::TABLET ], + 'SM-T52[057]!' => [ 'Samsung', 'Galaxy Tab Pro 10.1', DeviceType::TABLET ], + 'SM-T530NU' => [ 'Samsung', 'Galaxy Tab 4 Nook 10.1', DeviceType::TABLET ], + 'SM-T53[023]!' => [ 'Samsung', 'Galaxy Tab 4 10.1', DeviceType::TABLET ], + 'SM-T53[6]!' => [ 'Samsung', 'Galaxy Tab 4 10.1 Advanced', DeviceType::TABLET ], + 'SM-T53[157]!' => [ 'Samsung', 'Galaxy Tab 4 10.0', DeviceType::TABLET ], + 'SM-T55[015]!' => [ 'Samsung', 'Galaxy Tab A 9.7', DeviceType::TABLET ], + 'SM-T58[057]!' => [ 'Samsung', 'Galaxy Tab A 10.1 (2016)', DeviceType::TABLET ], + 'SM-T56[0127]!' => [ 'Samsung', 'Galaxy Tab E 9.6', DeviceType::TABLET ], + 'SM-T67[07]!' => [ 'Samsung', 'Galaxy View', DeviceType::TABLET ], + 'SM-T70[057]!' => [ 'Samsung', 'Galaxy Tab S 8.4', DeviceType::TABLET ], + 'SM-T71[05]!' => [ 'Samsung', 'Galaxy Tab S2 8.0', DeviceType::TABLET ], + 'SM-T71[39]!' => [ 'Samsung', 'Galaxy Tab S2 8.0 (2016)', DeviceType::TABLET ], + 'SM-T80[0157]!' => [ 'Samsung', 'Galaxy Tab S 10.5', DeviceType::TABLET ], + 'SM-T81[057]!' => [ 'Samsung', 'Galaxy Tab S2 9.7', DeviceType::TABLET ], + 'SM-T81[39]!' => [ 'Samsung', 'Galaxy Tab S2 9.7 (2016)', DeviceType::TABLET ], + 'SM-T81[8]!' => [ 'Samsung', 'Galaxy Tab S2 Plus 9.7', DeviceType::TABLET ], + 'SM-T82[057]!' => [ 'Samsung', 'Galaxy Tab S3 9.7', DeviceType::TABLET ], + 'SM-T83[057]!' => [ 'Samsung', 'Galaxy Tab S4 10.5', DeviceType::TABLET ], + 'SM-T90[05]!' => [ 'Samsung', 'Galaxy Tab Pro 12.2', DeviceType::TABLET ], + ], + + 'SM-V700' => [ 'Samsung', 'Galaxy Gear', DeviceType::WATCH ], + + 'SM-W[0-9]{4,4}!!' => [ + 'SM-W2014' => [ 'Samsung', 'Galaxy W2014' ], + 'SM-W2015' => [ 'Samsung', 'Galaxy Golden 2' ], + 'SM-W2016' => [ 'Samsung', 'Galaxy Golden 3' ], + 'SM-W2017' => [ 'Samsung', 'Veyron' ], + ], + + 'SPH-D[0-9]{3,3}!!' => [ + 'SPH-D600' => [ 'Samsung', 'Conquer 4G' ], + 'SPH-D700' => [ 'Samsung', 'Epic 4G' ], + 'SPH-D705' => [ 'Samsung', 'Epic 4G 2' ], + 'SPH-D710!' => [ 'Samsung', 'Galaxy S II' ], + 'SPH-D720!' => [ 'Samsung', 'Nexus S' ], + ], + + 'SPH-L[0-9]{3,3}!!' => [ + 'SPH-L300' => [ 'Samsung', 'Galaxy Victory' ], + 'SPH-L500' => [ 'Samsung', 'SPH-L500' ], + 'SPH-L520' => [ 'Samsung', 'Galaxy S4 Mini' ], + 'SPH-L600' => [ 'Samsung', 'Galaxy Mega 6.3' ], + 'SPH-L700' => [ 'Samsung', 'Galaxy Nexus' ], + 'SPH-L710!' => [ 'Samsung', 'Galaxy S III' ], + 'SPH-L72A!' => [ 'Samsung', 'Galaxy S4' ], + 'SPH-L720!' => [ 'Samsung', 'Galaxy S4' ], + 'SPH-L900!' => [ 'Samsung', 'Galaxy Note II' ], + ], + + 'SPH-M[0-9]{3,3}!!' => [ + 'SPH-M820!' => [ 'Samsung', 'Galaxy Prevail' ], + 'SPH-M828!' => [ 'Samsung', 'Galaxy Precedent' ], + 'SPH-M830!' => [ 'Samsung', 'Galaxy Rush' ], + 'SPH-M840' => [ 'Samsung', 'Galaxy Ring' ], + 'SPH-M580!' => [ 'Samsung', 'Replenish' ], + 'SPH-M900' => [ 'Samsung', 'Moment' ], + 'SPH-M910' => [ 'Samsung', 'Intercept' ], + 'SPH-M920' => [ 'Samsung', 'Transform' ], + 'SPH-M930!' => [ 'Samsung', 'Transform Ultra' ], + 'SPH-M950' => [ 'Samsung', 'Galaxy Reverb' ], + ], + + 'SPH-P[0-9]{3,3}!!' => [ + 'SPH-P100!' => [ 'Samsung', 'Galaxy Tab 7.0', DeviceType::TABLET ], + 'SPH-P500' => [ 'Samsung', 'Galaxy Tab 2 10.1', DeviceType::TABLET ], + 'SPH-P600' => [ 'Samsung', 'Galaxy Note 10.1', DeviceType::TABLET ], + ], + + 'YP-G!!' => [ + 'YP-GB1' => [ 'Samsung', 'Galaxy Player', 'media' ], + 'YP-GB70' => [ 'Samsung', 'Galaxy Player 70', 'media' ], + 'YP-GB70D' => [ 'Samsung', 'Galaxy Player 70 Plus', 'media' ], + 'YP-GH1' => [ 'Samsung', 'IceTouch', 'media' ], + 'YP-GP1' => [ 'Samsung', 'Galaxy Player 5.8', 'media' ], + 'YP-GS1' => [ 'Samsung', 'Galaxy S WiFi 3.6', 'media' ], + 'YP-G1' => [ 'Samsung', 'Galaxy S WiFi 4.0', 'media' ], + 'YP-GI1' => [ 'Samsung', 'Galaxy S WiFi 4.2', 'media' ], + 'YP-GI2' => [ 'Samsung', 'Galaxy 070', 'media' ], + 'YP-G50' => [ 'Samsung', 'Galaxy Player', 'media' ], + 'YP-G70' => [ 'Samsung', 'Galaxy S WiFi 5.0', 'media' ], + ], + + 'GT9100' => [ 'Samsung', 'Galaxy S II' ], + 'I897' => [ 'Samsung', 'Captivate' ], + 'I7500' => [ 'Samsung', 'Galaxy' ], + 'I9000' => [ 'Samsung', 'Galaxy S' ], + 'T959' => [ 'Samsung', 'Galaxy S Vibrant' ], + + 'Galaxy!!' => [ + 'Galaxy' => [ 'Samsung', 'Galaxy' ], + 'Galaxy with MCR 1.2' => [ 'Samsung', 'Galaxy' ], + 'Galaxy ACE' => [ 'Samsung', 'Galaxy Ace' ], + 'Galaxy Ace 8' => [ 'Samsung', 'Galaxy Ace' ], + 'Galaxy Express' => [ 'Samsung', 'Galaxy Express' ], + 'Galaxy Mini' => [ 'Samsung', 'Galaxy Mini' ], + 'Galaxy Mini Plus 4G' => [ 'Samsung', 'Galaxy Mini Plus' ], + 'Galaxy Note' => [ 'Samsung', 'Galaxy Note' ], + 'Galaxy Note I' => [ 'Samsung', 'Galaxy Note' ], + 'Galaxy Note II' => [ 'Samsung', 'Galaxy Note II' ], + 'Galaxy Note 2' => [ 'Samsung', 'Galaxy Note II' ], + 'GALAXY Note III' => [ 'Samsung', 'Galaxy Note 3' ], + 'GALAXY Note 3' => [ 'Samsung', 'Galaxy Note 3' ], + 'Galaxy Note 3 N9000' => [ 'Samsung', 'Galaxy Note 3' ], + 'Galaxy NoteIII' => [ 'Samsung', 'Galaxy Note 3' ], + 'Galaxy N3' => [ 'Samsung', 'Galaxy Note 3' ], + 'GalaxyNote3' => [ 'Samsung', 'Galaxy Note 3' ], + 'Galaxy Note 4' => [ 'Samsung', 'Galaxy Note 4' ], + 'GALAXY Note4' => [ 'Samsung', 'Galaxy Note 4' ], + 'GalaxyS' => [ 'Samsung', 'Galaxy S' ], + 'Galaxy S' => [ 'Samsung', 'Galaxy S' ], + 'Galaxy S II' => [ 'Samsung', 'Galaxy S II' ], + 'Galaxy S2' => [ 'Samsung', 'Galaxy S II' ], + 'GalaxyS2' => [ 'Samsung', 'Galaxy S II' ], + 'Galaxy S2!' => [ 'Samsung', 'Galaxy S II' ], + 'Galaxy S III' => [ 'Samsung', 'Galaxy S III' ], + 'GALAXY SIII' => [ 'Samsung', 'Galaxy S III' ], + 'Galaxy S3' => [ 'Samsung', 'Galaxy S III' ], + 'GalaxyS4' => [ 'Samsung', 'Galaxy S4' ], + 'Galaxy S4' => [ 'Samsung', 'Galaxy S4' ], + 'Galaxy-S4' => [ 'Samsung', 'Galaxy S4' ], + 'Galaxy SIV' => [ 'Samsung', 'Galaxy S4' ], + 'Galaxy S IV(I950X)' => [ 'Samsung', 'Galaxy S4' ], + 'Galaxy S4 Mini GT-I9505' => [ 'Samsung', 'Galaxy S4 Mini' ], + 'Galaxy S4 Zoom' => [ 'Samsung', 'Galaxy S4 Zoom' ], + 'GALAXY S5' => [ 'Samsung', 'Galaxy S5' ], + 'Galaxy S5 Sprint' => [ 'Samsung', 'Galaxy S5' ], + 'Galaxy S5 spezial' => [ 'Samsung', 'Galaxy S5' ], + 'Galaxy S6' => [ 'Samsung', 'Galaxy S6' ], + 'Galaxy S6 Edge' => [ 'Samsung', 'Galaxy S6 Edge' ], + 'Galaxy X' => [ 'Samsung', 'Galaxy X' ], + 'Galaxy Spica' => [ 'Samsung', 'Galaxy Spica' ], + 'Galaxy pop plus 4G' => [ 'Samsung', 'Galaxy Pop Plus' ], + 'Galaxy Precedent' => [ 'Samsung', 'Galaxy Precedent' ], + 'GALAXY Tab' => [ 'Samsung', 'Galaxy Tab', DeviceType::TABLET ], + 'Galaxy Tab3' => [ 'Samsung', 'Galaxy Tab 3', DeviceType::TABLET ], + ], + + 'S2' => [ 'Samsung', 'Galaxy S II' ], + 'S3' => [ 'Samsung', 'Galaxy S III' ], + 'I9300 Galaxy SIII ' => [ 'Samsung', 'Galaxy S III' ], + 'S4' => [ 'Samsung', 'Galaxy S4' ], + 'S5' => [ 'Samsung', 'Galaxy S5' ], + 'S5 Mini!' => [ 'Samsung', 'Galaxy S5 Mini' ], + 'S6 Edge+!' => [ 'Samsung', 'Galaxy S6 Edge+' ], + 'Note III' => [ 'Samsung', 'Galaxy Note 3' ], + 'Captivate-I897' => [ 'Samsung', 'Captivate' ], + 'Aegis2' => [ 'Samsung', 'Stratosphere II' ], + 'Vibrantmtd' => [ 'Samsung', 'Vibrant' ], + 'Vibrant T959' => [ 'Samsung', 'Vibrant' ], + 'HOMESYNCT2WIFI' => [ 'Samsung', 'Galaxy HomeSync', DeviceType::TELEVISION ], + + 'SC-?0[0-9][A-Z]!!' => [ + 'SC-01C' => [ 'Samsung', 'GALAXY Tab SC-01C', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'SC-01D' => [ 'Samsung', 'GALAXY Tab 10.1 LTE SC-01D', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'SC-01E' => [ 'Samsung', 'GALAXY Tab 7.7 Plus SC-01E', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'SC-01F' => [ 'Samsung', 'GALAXY Note 3 SC-01F', 'carrier' => 'DoCoMo' ], + 'SC-01G' => [ 'Samsung', 'GALAXY Note Edge SC-01G', 'carrier' => 'DoCoMo' ], + 'SC-01H' => [ 'Samsung', 'GALAXY Active neo SC-01H', 'carrier' => 'DoCoMo' ], + 'SC-01K' => [ 'Samsung', 'GALAXY Note 8 SC-01K', 'carrier' => 'DoCoMo' ], + 'SC-02B' => [ 'Samsung', 'GALAXY S SC-02B', 'carrier' => 'DoCoMo' ], + 'SC-02C' => [ 'Samsung', 'GALAXY S II SC-02C', 'carrier' => 'DoCoMo' ], + 'SC-02D' => [ 'Samsung', 'GALAXY Tab 7.0 Plus SC-02D', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'SC-02E' => [ 'Samsung', 'GALAXY Note II SC-02E', 'carrier' => 'DoCoMo' ], + 'SC-02F' => [ 'Samsung', 'GALAXY J SC-02F', 'carrier' => 'DoCoMo' ], + 'SC-02G' => [ 'Samsung', 'GALAXY S5 Active SC-02G', 'carrier' => 'DoCoMo' ], + 'SC-02H' => [ 'Samsung', 'Galaxy S7 Edge SC-02H', 'carrier' => 'DoCoMo' ], + 'SC-02J' => [ 'Samsung', 'Galaxy S8 SC-02J', 'carrier' => 'DoCoMo' ], + 'SC-02K' => [ 'Samsung', 'Galaxy S9 SC-02K', 'carrier' => 'DoCoMo' ], + 'SC-03D' => [ 'Samsung', 'GALAXY S II LTE SC-03D', 'carrier' => 'DoCoMo' ], + 'SC-03E' => [ 'Samsung', 'GALAXY S III α SC-03E', 'carrier' => 'DoCoMo' ], + 'SC03E' => [ 'Samsung', 'GALAXY S III α SC-03E', 'carrier' => 'DoCoMo' ], + 'SC-03G' => [ 'Samsung', 'GALAXY Tab S 8.4 SC-03G', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'SC-03J' => [ 'Samsung', 'GALAXY S8+ SC-03J', 'carrier' => 'DoCoMo' ], + 'SC-03K' => [ 'Samsung', 'GALAXY S9+ SC-03K', 'carrier' => 'DoCoMo' ], + 'SC-04D' => [ 'Samsung', 'GALAXY NEXUS SC-04D', 'carrier' => 'DoCoMo' ], + 'SC-04E' => [ 'Samsung', 'GALAXY S4 SC-04E', 'carrier' => 'DoCoMo' ], + 'SC-04F' => [ 'Samsung', 'GALAXY S5 SC-04F', 'carrier' => 'DoCoMo' ], + 'SC-04G' => [ 'Samsung', 'GALAXY S6 Edge SC-04G', 'carrier' => 'DoCoMo' ], + 'SC-04J' => [ 'Samsung', 'GALAXY Feel SC-04J', 'carrier' => 'DoCoMo' ], + 'SC-05D' => [ 'Samsung', 'GALAXY Note SC-05D', 'carrier' => 'DoCoMo' ], + 'SC-05G' => [ 'Samsung', 'GALAXY S6 SC-05G', 'carrier' => 'DoCoMo' ], + 'SC-06D' => [ 'Samsung', 'GALAXY S III SC-06D', 'carrier' => 'DoCoMo' ], + ], + + 'SC[LTV][23][0-9]!!' => [ + 'SCL21' => [ 'Samsung', 'GALAXY S III Progre SCL21', 'carrier' => 'au' ], + 'SCL22' => [ 'Samsung', 'GALAXY Note 3 SCL22', 'carrier' => 'au' ], + 'SCL23' => [ 'Samsung', 'GALAXY S5 SCL23', 'carrier' => 'au' ], + 'SCL24' => [ 'Samsung', 'GALAXY Note Edge SCL24', 'carrier' => 'au' ], + 'SCT21' => [ 'Samsung', 'GALAXY Tab S SCT21', DeviceType::TABLET, 'carrier' => 'au' ], + 'SCV31' => [ 'Samsung', 'GALAXY S6 Edge SCV31', 'carrier' => 'au' ], + 'SCV32' => [ 'Samsung', 'GALAXY A8 SCV32', 'carrier' => 'au' ], + 'SCV33' => [ 'Samsung', 'GALAXY S7 edge Injustice Edition SCV33', 'carrier' => 'au' ], + 'SCV35' => [ 'Samsung', 'GALAXY S8+ SCV35', 'carrier' => 'au' ], + 'SCV36' => [ 'Samsung', 'GALAXY S8 SCV36', 'carrier' => 'au' ], + 'SCV37' => [ 'Samsung', 'GALAXY Note8 SCV37', 'carrier' => 'au' ], + ], + + 'ISW11SC' => [ 'Samsung', 'GALAXY S II WiMAX ISW11SC', 'carrier' => 'au' ], + + '40[0-9]SC!!' => [ + '403SC' => [ 'Samsung', 'GALAXY Tab 4 7.0 403SC', DeviceType::TABLET, 'carrier' => 'Softbank' ], + '404SC' => [ 'Samsung', 'GALAXY S6 Edge 404SC', 'carrier' => 'Softbank' ], + ], + + 'printer-tablet' => [ 'Samsung', 'ProXpress', DeviceType::PRINTER ], + + '(SENCOR )?ELEMENT!!' => [ + 'ELEMENT7V2' => [ 'Sencor', 'Element 7 V2', DeviceType::TABLET ], + 'ELEMENT 7 V2 BASIC' => [ 'Sencor', 'Element 7 V2 Basic', DeviceType::TABLET ], + 'ELEMENT 7V3' => [ 'Sencor', 'Element 7 V3', DeviceType::TABLET ], + 'ELEMENT8' => [ 'Sencor', 'Element 8', DeviceType::TABLET ], + 'SENCOR ELEMENT 8V2' => [ 'Sencor', 'Element 8 V2', DeviceType::TABLET ], + 'ELEMENT 8V3' => [ 'Sencor', 'Element 8 V3', DeviceType::TABLET ], + 'SENCOR ELEMENT 9.7V3' => [ 'Sencor', 'Element 9.7 V3', DeviceType::TABLET ], + 'ELEMENT10 1' => [ 'Sencor', 'Element 10.1', DeviceType::TABLET ], + 'ELEMENT P501' => [ 'Sencor', 'Element P501' ], + ], + + 'SENSEIT R390' => [ 'Senseit', 'R390' ], + 'QuickFone Mini' => [ 'Sensonic', 'QuickFone Mini' ], + 'QuickFone-Mini' => [ 'Sensonic', 'QuickFone Mini' ], + 'QuickFone ([NXZ][0-9]\+?)!' => [ 'Sensonic', 'QuickFone $1' ], + 'SENWA S970' => [ 'Senwa', 'S970' ], + 'S1005KTAB' => [ 'Serioux', 'GoTab S1005KTAB', DeviceType::TABLET ], + 'STARACTIVE' => [ 'SFR', 'STARACTIVE' ], + 'STARACTIVE 2' => [ 'SFR', 'STARACTIVE 2' ], + 'Android edition by sfr STARADDICT' => [ 'SFR', 'STARADDICT' ], + 'V961' => [ 'SFR', 'STARADDICT II' ], + 'Smartphone Android by SFR STARADDICT II' => [ 'SFR', 'STARADDICT II' ], + 'STARADDICT II' => [ 'SFR', 'STARADDICT II' ], + 'STARADDICT II Plus' => [ 'SFR', 'STARADDICT II Plus' ], + 'STARADDICT III' => [ 'SFR', 'STARADDICT III' ], + 'STARADDICT 4' => [ 'SFR', 'STARADDICT 4' ], + 'STARADDICT 5' => [ 'SFR', 'STARADDICT 5' ], + 'STARADDICT 6' => [ 'SFR', 'STARADDICT 6' ], + 'Android Edition Starnaute' => [ 'SFR', 'STARNAUTE' ], + 'STARNAUTE II' => [ 'SFR', 'STARNAUTE II' ], + 'STARNAUTE 3' => [ 'SFR', 'STARNAUTE 3' ], + 'STARNAUTE3' => [ 'SFR', 'STARNAUTE 3' ], + 'STARNAUTE4' => [ 'SFR', 'STARNAUTE 4' ], + 'Starshine' => [ 'SFR', 'STARSHINE' ], + 'STARSHINE II' => [ 'SFR', 'STARSHINE II' ], + 'STARSHINE III' => [ 'SFR', 'STARSHINE III' ], + 'STARSHINE 4' => [ 'SFR', 'STARSHINE 4' ], + 'STARSHINE5' => [ 'SFR', 'STARSHINE 5' ], + 'Android Edition StarText' => [ 'SFR', 'STARTEXT' ], + 'STARTEXT II' => [ 'SFR', 'STARTEXT II' ], + 'Android Edition StarTrail' => [ 'SFR', 'STARTRAIL' ], + 'STARTRAIL II' => [ 'SFR', 'STARTRAIL II' ], + 'StarTrail III' => [ 'SFR', 'STARTRAIL III' ], + 'STARTRAIL4' => [ 'SFR', 'STARTRAIL 4' ], + 'STARTRAIL 4' => [ 'SFR', 'STARTRAIL 4' ], + 'STARTRAIL5' => [ 'SFR', 'STARTRAIL 5' ], + 'STARTRAIL 6 4G' => [ 'SFR', 'STARTRAIL 6' ], + 'STARTRAIL6' => [ 'SFR', 'STARTRAIL 6' ], + 'STARTRAIL7' => [ 'SFR', 'STARTRAIL 7' ], + 'STARTRAIL 8' => [ 'SFR', 'STARTRAIL 8' ], + 'STARTRAIL 9' => [ 'SFR', 'STARTRAIL 9' ], + 'STARXTREM' => [ 'SFR', 'STARXTREM' ], + 'STARXTREM II' => [ 'SFR', 'STARXTREM II' ], + 'STARXTREM3' => [ 'SFR', 'STARXTREM 3' ], + 'STARXTREM 4' => [ 'SFR', 'STARXTREM 4' ], + 'STARXTREM5' => [ 'SFR', 'STARXTREM 5' ], + 'STARXTREM 6' => [ 'SFR', 'STARXTREM 6' ], + 'STARTAB' => [ 'SFR', 'STARTAB', DeviceType::TABLET ], + 'SFR StarTab' => [ 'SFR', 'STARTAB', DeviceType::TABLET ], + 'Bambook S1' => [ 'Shanda', 'Bambook S1', DeviceType::TABLET ], + + '[4567A]0[0-9]SH!!' => [ + '401SH' => [ 'Sharp', '401SH', 'carrier' => 'Softbank' ], + '402SH' => [ 'Sharp', 'AQUOS CRYSTAL X 402SH', 'carrier' => 'Softbank' ], + '403SH' => [ 'Sharp', 'AQUOS CRYSTAL 2 403SH', 'carrier' => 'Softbank' ], + '404SH' => [ 'Sharp', 'AQUOS Xx 404SH', 'carrier' => 'Softbank' ], + '502SH' => [ 'Sharp', 'AQUOS Xx2 502SH', 'carrier' => 'Softbank' ], + '503SH' => [ 'Sharp', 'AQUOS Xx2 mini 503SH', 'carrier' => 'Softbank' ], + '603SH' => [ 'Sharp', 'AQUOS Xx3 mini 603SH', 'carrier' => 'Softbank' ], + '701SH' => [ 'Sharp', 'AQUOS R compact 701SH', 'carrier' => 'Softbank' ], + 'A01SH' => [ 'Sharp', 'GALAPAGOS A01SH', 'carrier' => 'Y! Mobile' ], + ], + + 'IS0[0-9]!!' => [ + 'IS01' => [ 'Sharp', 'IS01', 'carrier' => 'au' ], + 'IS03' => [ 'Sharp', 'IS03', 'carrier' => 'au' ], + 'IS05' => [ 'Sharp', 'IS05', 'carrier' => 'au' ], + ], + + 'ISW?1[0-9]SH!!' => [ + 'IS11SH' => [ 'Sharp', 'AQUOS PHONE IS11SH', 'carrier' => 'au' ], + 'IS12SH' => [ 'Sharp', 'AQUOS PHONE IS12SH', 'carrier' => 'au' ], + 'IS13SH' => [ 'Sharp', 'AQUOS PHONE IS13SH', 'carrier' => 'au' ], + 'IS14SH' => [ 'Sharp', 'AQUOS PHONE IS14SH', 'carrier' => 'au' ], + 'IS15SH' => [ 'Sharp', 'AQUOS PHONE SL IS15SH', 'carrier' => 'au' ], + 'ISW16SH' => [ 'Sharp', 'AQUOS PHONE SERIE ISW16SH', 'carrier' => 'au' ], + 'IS17SH' => [ 'Sharp', 'AQUOS PHONE CL IS17SH', 'carrier' => 'au' ], + ], + + 'EB-A71GJ' => [ 'Sharp', 'EB-A71GJ', DeviceType::TABLET ], + 'EB-W51GJ' => [ 'Sharp', 'EB-W51GJ', DeviceType::TABLET ], + 'EB-WX1GJ' => [ 'Sharp', 'EB-WX1GJ', DeviceType::TABLET ], + 'EB-L76G-B' => [ 'Sharp', 'EB-L76G-B', DeviceType::TABLET ], + 'RW107' => [ 'Sharp', 'RW-T107', DeviceType::TABLET ], + + 'SBM[0-9]0[0-9]SH!!' => [ + 'SBM003SH' => [ 'Sharp', 'GALAPAGOS 003SH', 'carrier' => 'Softbank' ], + 'SBM005SH' => [ 'Sharp', 'GALAPAGOS 005SH', 'carrier' => 'Softbank' ], + 'SBM006SH' => [ 'Sharp', 'AQUOS PHONE 006SH', 'carrier' => 'Softbank' ], + 'SBM007SH' => [ 'Sharp', 'AQUOS PHONE THE HYBRID 007SH', 'carrier' => 'Softbank' ], + 'SBM007SHJ' => [ 'Sharp', 'AQUOS PHONE THE HYBRID 007SH J', 'carrier' => 'Softbank' ], + 'SBM007SHK' => [ 'Sharp', '007SH KT', 'carrier' => 'Softbank' ], + 'SBM009SH' => [ 'Sharp', 'AQUOS PHONE THE PREMIUM 009SH', 'carrier' => 'Softbank' ], + 'SBM009SHY' => [ 'Sharp', 'Yahoo! Phone 009SH Y', 'carrier' => 'Softbank' ], + 'SBM101SH' => [ 'Sharp', 'AQUOS PHONE THE HYBRID 101SH', 'carrier' => 'Softbank' ], + 'SBM102SH' => [ 'Sharp', 'AQUOS PHONE 102SH', 'carrier' => 'Softbank' ], + 'SBM102SH2' => [ 'Sharp', 'AQUOS PHONE 102SH II', 'carrier' => 'Softbank' ], + 'SBM103SH' => [ 'Sharp', 'AQUOS PHONE 103SH', 'carrier' => 'Softbank' ], + 'SBM104SH' => [ 'Sharp', 'AQUOS PHONE 104SH', 'carrier' => 'Softbank' ], + 'SBM106SH' => [ 'Sharp', 'AQUOS PHONE Xx 106SH', 'carrier' => 'Softbank' ], + 'SBM107SH' => [ 'Sharp', 'PANTONE 5 107SH', 'carrier' => 'Softbank' ], + 'SBM107SHB' => [ 'Sharp', 'AQUOS PHONE 107SH B', 'carrier' => 'Softbank' ], + 'SBM200SH' => [ 'Sharp', 'PANTONE 6 200SH', 'carrier' => 'Softbank' ], + 'SBM203SH' => [ 'Sharp', 'AQUOS PHONE Xx 203SH', 'carrier' => 'Softbank' ], + 'SBM204SH' => [ 'Sharp', 'シンプルスマホ 204SH', 'carrier' => 'Softbank' ], + 'SBM205SH' => [ 'Sharp', 'AQUOS PHONE ss 205SH', 'carrier' => 'Softbank' ], + 'SBM206SH' => [ 'Sharp', 'AQUOS PHONE Xx 206SH', 'carrier' => 'Softbank' ], + 'SBM302SH' => [ 'Sharp', 'AQUOS PHONE Xx 302SH', 'carrier' => 'Softbank' ], + 'SBM303SH' => [ 'Sharp', 'AQUOS PHONE Xx mini 303SH', 'carrier' => 'Softbank' ], + 'SBM305SH' => [ 'Sharp', 'AQUOS CRYSTAL 305SH', 'carrier' => 'Softbank' ], + 'SBM306SH' => [ 'Sharp', 'AQUOS CRYSTAL 306SH' ], // The U.S. Sprint version (now part of Softbank) + ], + + '(3|5|6|7)0[0-9]SH!!' => [ + '304SH' => [ 'Sharp', 'AQUOS Xx 304SH', 'carrier' => 'Softbank' ], + '305SH' => [ 'Sharp', 'AQUOS CRYSTAL 305SH', 'carrier' => 'Softbank' ], + '306SH' => [ 'Sharp', 'AQUOS CRYSTAL 306SH' ], // The U.S. Sprint version (now part of Softbank) + '506SH' => [ 'Sharp', 'AQUOS Xx3 506SH', 'carrier' => 'Softbank' ], + '507SH' => [ 'Sharp', 'Android One 507SH', 'carrier' => 'Y! Mobile' ], + '509SH' => [ 'Sharp', 'シンプルスマホ3 509SH', 'carrier' => 'Softbank' ], + '605SH' => [ 'Sharp', 'AQUOS R 605SH', 'carrier' => 'Softbank' ], + '606SH' => [ 'Sharp', 'AQUOS ea 606SH', 'carrier' => 'Softbank' ], + '706SH' => [ 'Sharp', 'AQUOS R2 706SH', 'carrier' => 'Softbank' ], + ], + + 'SH01D' => [ 'Sharp', 'AQUOS PHONE SH-01D', 'carrier' => 'DoCoMo' ], + 'DM-01H' => [ 'Sharp', 'DM-01H', 'carrier' => 'Disney Mobile' ], + 'DM-01J' => [ 'Sharp', 'DM-01J', 'carrier' => 'Disney Mobile' ], + + 'SH-M01' => [ 'Sharp', 'AQUOS SH-M01' ], + 'SH-M02' => [ 'Sharp', 'AQUOS SH-M02' ], + 'SH-M02-EVA20' => [ 'Sharp', 'AQUOS SH-M02' ], + 'SH-M03' => [ 'Sharp', 'AQUOS mini SH-M03' ], + 'SH-M07' => [ 'Sharp', 'AQUOS sense plus SH-M07' ], + 'SH-RM02' => [ 'Sharp', 'AQUOS SH-RM02' ], + + 'SH-[01][0-9][A-Z]!!' => [ + 'SH-01D' => [ 'Sharp', 'AQUOS PHONE SH-01D', 'carrier' => 'DoCoMo' ], + 'SH-01E' => [ 'Sharp', 'AQUOS PHONE si SH-01E', 'carrier' => 'DoCoMo' ], + 'SH-01EVW' => [ 'Sharp', 'Vivienne Westwood SH-01EVW', 'carrier' => 'DoCoMo' ], + 'SH-01F' => [ 'Sharp', 'AQUOS PHONE ZETA SH-01F', 'carrier' => 'DoCoMo' ], + 'SH-01FDQ' => [ 'Sharp', 'SH-01F DRAGON QUEST', 'carrier' => 'DoCoMo' ], + 'SH-01G' => [ 'Sharp', 'AQUOS PHONE ZETA SH-01G', 'carrier' => 'DoCoMo' ], + 'SH-01H' => [ 'Sharp', 'AQUOS PHONE ZETA SH-01H', 'carrier' => 'DoCoMo' ], + 'SH-01J' => [ 'Sharp', 'AQUOS ケータイ SH-01J', 'carrier' => 'DoCoMo' ], + 'SH-01K' => [ 'Sharp', 'AQUOS sense SH-01K', 'carrier' => 'DoCoMo' ], + 'SH-02D' => [ 'Sharp', 'AQUOS PHONE slider SH-02D', 'carrier' => 'DoCoMo' ], + 'SH-02E' => [ 'Sharp', 'AQUOS PHONE ZETA SH-02E', 'carrier' => 'DoCoMo' ], + 'SH-02F' => [ 'Sharp', 'AQUOS PHONE EX SH-02F', 'carrier' => 'DoCoMo' ], + 'SH-02G' => [ 'Sharp', 'SH-02G', 'carrier' => 'Disney Mobile' ], + 'SH-02H' => [ 'Sharp', 'AQUOS Compact SH-02H', 'carrier' => 'DoCoMo' ], + 'SH-02J' => [ 'Sharp', 'AQUOS EVER SH-02J', 'carrier' => 'DoCoMo' ], + 'SH-03C' => [ 'Sharp', 'LYNX 3D SH-03C', 'carrier' => 'DoCoMo' ], + 'SH-03F' => [ 'Sharp', 'スマートフォン for ジュニア2 SH-03F', 'carrier' => 'DoCoMo' ], + 'SH-03G' => [ 'Sharp', 'AQUOS ZETA SH-03G', 'carrier' => 'DoCoMo' ], + 'SH-03H' => [ 'Sharp', 'SH-03H', 'carrier' => 'DoCoMo' ], + 'SH-03J' => [ 'Sharp', 'AQUOS R SH-03J', 'carrier' => 'DoCoMo' ], + 'SH-03K' => [ 'Sharp', 'AQUOS R2 SH-03K', 'carrier' => 'DoCoMo' ], + 'SH-04D' => [ 'Sharp', 'Q-pot.Phone SH-04D', 'carrier' => 'DoCoMo' ], + 'SH-04E' => [ 'Sharp', 'AQUOS PHONE EX SH-04E', 'carrier' => 'DoCoMo' ], + 'SH-04F' => [ 'Sharp', 'AQUOS ZETA SH-04F', 'carrier' => 'DoCoMo' ], + 'SH-04G' => [ 'Sharp', 'AQUOS EVER SH-04G', 'carrier' => 'DoCoMo' ], + 'SH-04H' => [ 'Sharp', 'AQUOS ZETA SH-04H', 'carrier' => 'DoCoMo' ], + 'SH-05E' => [ 'Sharp', 'スマートフォン for ジュニア SH-05E', 'carrier' => 'DoCoMo' ], + 'SH-05F' => [ 'Sharp', 'SH-05F', 'carrier' => 'Disney Mobile' ], + 'SH-05G' => [ 'Sharp', 'AQUOS PAD SH-05G', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'SH-06D' => [ 'Sharp', 'AQUOS PHONE SH-06D', 'carrier' => 'DoCoMo' ], + 'SH-06DNERV' => [ 'Sharp', 'SH-06D NERV', 'carrier' => 'DoCoMo' ], + 'SH-06E' => [ 'Sharp', 'AQUOS PHONE ZETA SH-06E', 'carrier' => 'DoCoMo' ], + 'SH-06F' => [ 'Sharp', 'AQUOS PAD SH-06F', 'carrier' => 'DoCoMo' ], + 'SH-06G' => [ 'Sharp', 'AQUOS SH-06G', 'carrier' => 'DoCoMo' ], + 'SH-07C' => [ 'Sharp', 'GALAPAGOS SH-07C', 'carrier' => 'DoCoMo' ], + 'SH-07D' => [ 'Sharp', 'AQUOS PHONE st SH-07D', 'carrier' => 'DoCoMo' ], + 'SH-07E' => [ 'Sharp', 'AQUOS PHONE si SH-07E', 'carrier' => 'DoCoMo' ], + 'SH-08E' => [ 'Sharp', 'AQUOS PAD SH-08E', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], + 'SH-09D' => [ 'Sharp', 'AQUOS PHONE ZETA SH-09D', 'carrier' => 'DoCoMo' ], + 'SH-10B' => [ 'Sharp', 'LYNX SH-10B', 'carrier' => 'DoCoMo' ], + 'SH-10D' => [ 'Sharp', 'AQUOS PHONE sv SH-10D', 'carrier' => 'DoCoMo' ], + 'SH-12C' => [ 'Sharp', 'AQUOS PHONE SH-12C', 'carrier' => 'DoCoMo' ], + 'SH-13C' => [ 'Sharp', 'AQUOS PHONE f SH-13C', 'carrier' => 'DoCoMo' ], + ], + + '(SHP-)?(SHARP )?SH[0-9]{2,3}!!' => [ + 'SH80F' => [ 'Sharp', 'Aquos SH80F' ], + 'SH90B' => [ 'Sharp', 'Aquos SH90B', 'carrier' => 'Biglobe' ], + 'SH330U' => [ 'Sharp', 'SH330U' ], + 'SHP-SH330T' => [ 'Sharp', 'SH330T' ], + 'SH330T(Yiliao)' => [ 'Sharp', 'SH330T' ], + 'SH530U' => [ 'Sharp', 'SH530U' ], + 'SH630E' => [ 'Sharp', 'SH630E' ], + 'SHP-SH630E' => [ 'Sharp', 'SH630E' ], + 'SH-631M' => [ 'Sharp', 'SH631M' ], + 'SH631W' => [ 'Sharp', 'SH631W' ], + 'SH825Wi' => [ 'Sharp', 'Aquos Crystal SH825Wi' ], + 'SH831T' => [ 'Sharp', 'SH831T' ], + 'SHP-SH831T' => [ 'Sharp', 'SH831T' ], + 'SH837M' => [ 'Sharp', 'SH837M' ], + 'SH837W' => [ 'Sharp', 'SH837W' ], + 'SH930W' => [ 'Sharp', 'SH930W' ], + 'SH931W' => [ 'Sharp', 'SH931W' ], + 'SH72x8U' => [ 'Sharp', 'SH72x8U' ], + 'SH7218U' => [ 'Sharp', 'SH7218U' ], + 'SH7218T' => [ 'Sharp', 'SH7218T' ], + 'SHP-SH7218T' => [ 'Sharp', 'SH7218T' ], + 'SH8118U' => [ 'Sharp', 'SH8118U' ], + 'SHARP SH8118U' => [ 'Sharp', 'SH8118U' ], + 'SH8128U' => [ 'Sharp', 'SH8128U' ], + 'SH8158U' => [ 'Sharp', 'SH8158U' ], + 'SH8168U' => [ 'Sharp', 'SH8168U' ], + 'SH8188U' => [ 'Sharp', 'SH8188U' ], + 'SHARP SH8188U' => [ 'Sharp', 'SH8188U' ], + 'SH8288U' => [ 'Sharp', 'SH8288U' ], + 'SH8268U' => [ 'Sharp', 'SH8268U' ], + 'SH8298U' => [ 'Sharp', 'SH8298U' ], + ], + + 'SH[FLTV][0-9]{2,2}!!' => [ + 'SHF31' => [ 'Sharp', 'AQUOS K SHF31', 'carrier' => 'au' ], + 'SHF32' => [ 'Sharp', 'AQUOS K SHF32', 'carrier' => 'au' ], + 'SHF33' => [ 'Sharp', 'AQUOS K SHF33', 'carrier' => 'au' ], + 'SHL21' => [ 'Sharp', 'AQUOS PHONE SERIE SHL21', 'carrier' => 'au' ], + 'SHL22' => [ 'Sharp', 'AQUOS PHONE SERIE SHL22', 'carrier' => 'au' ], + 'SHL23' => [ 'Sharp', 'AQUOS PHONE SERIE SHL23', 'carrier' => 'au' ], + 'SHL24' => [ 'Sharp', 'AQUOS PHONE SERIE mini SHL24', 'carrier' => 'au' ], + 'SHL25' => [ 'Sharp', 'AQUOS SERIE SHL25', 'carrier' => 'au' ], + 'SHT21' => [ 'Sharp', 'AQUOS PAD SHT21', DeviceType::TABLET, 'carrier' => 'au' ], + 'SHT22' => [ 'Sharp', 'AQUOS PAD SHT22', DeviceType::TABLET, 'carrier' => 'au' ], + 'SHV31' => [ 'Sharp', 'AQUOS SERIE mini SHV31', 'carrier' => 'au' ], + 'SHV32' => [ 'Sharp', 'AQUOS SERIE SHV32', 'carrier' => 'au' ], + 'SHV33' => [ 'Sharp', 'AQUOS SERIE mini SHV33', 'carrier' => 'au' ], + 'SHV34' => [ 'Sharp', 'AQUOS SERIE SHV34', 'carrier' => 'au' ], + 'SHV35' => [ 'Sharp', 'AQUOS U SHV35', 'carrier' => 'au' ], + 'SHV36' => [ 'Sharp', 'BASIO2 SHV36', 'carrier' => 'au' ], + 'SHV37' => [ 'Sharp', 'AQUOS U SHV37', 'carrier' => 'au' ], + 'SHV38' => [ 'Sharp', 'AQUOS SERIE mini SHV38', 'carrier' => 'au' ], + 'SHV39' => [ 'Sharp', 'AQUOS R SHV39', 'carrier' => 'au' ], + 'SHV40' => [ 'Sharp', 'AQUOS sense SHV40', 'carrier' => 'au' ], + 'SHV41' => [ 'Sharp', 'AQUOS R compact SHV41', 'carrier' => 'au' ], + 'SHV42' => [ 'Sharp', 'AQUOS R2 SHV42', 'carrier' => 'au' ], + ], + 'WX04SH' => [ 'Sharp', 'AQUOS PHONE es WX04SH', 'carrier' => 'Willcom' ], + 'WX05SH' => [ 'Sharp', 'AQUOS PHONE ef WX05SH', 'carrier' => 'Willcom' ], + 'SHARP-ADS1' => [ 'Sharp', 'FX Plus' ], + + 'TG-L800S' => [ 'Sharp', 'Luna' ], + 'TG-L900S' => [ 'Sharp', 'Luna S' ], + + 'AQUOS!!' => [ + 'AQUOS 50S1' => [ 'Sharp', 'Aquos S1', DeviceType::TELEVISION ], + 'AQUOS 50U1' => [ 'Sharp', 'Aquos U1', DeviceType::TELEVISION ], + 'AQUOS 58U1' => [ 'Sharp', 'Aquos U1', DeviceType::TELEVISION ], + 'AQUOS 50U3A' => [ 'Sharp', 'Aquos U3A', DeviceType::TELEVISION ], + 'AQUOS 58U3A' => [ 'Sharp', 'Aquos U3A', DeviceType::TELEVISION ], + 'AQUOS 52UE20A' => [ 'Sharp', 'Aquos UE20A', DeviceType::TELEVISION ], + 'AQUOS 60UE20A' => [ 'Sharp', 'Aquos UE20A', DeviceType::TELEVISION ], + 'AQUOS 70LX765A' => [ 'Sharp', 'Aquos LX765A', DeviceType::TELEVISION ], + ], + + 'LC-Ux30US' => [ 'Sharp', 'Aquos UH30U', DeviceType::TELEVISION ], + 'LC-[0-9]{2,2}((LE|UE)[0-9]{1,3}[A-Z])!' => [ 'Sharp', 'Aquos $1', DeviceType::TELEVISION ], + 'LC-((A|S|LX)[0-9]{1,3}[A-Z])!' => [ 'Sharp', 'Aquos $1', DeviceType::TELEVISION ], + 'LCD-((S|V|LX|UF)[0-9]{1,3}[A-Z])!' => [ 'Sharp', 'Aquos $1', DeviceType::TELEVISION ], + + 'X-treme PQ11' => [ 'Sigma Mobile', 'X-treme PQ11' ], + 'X-treme PQ15' => [ 'Sigma Mobile', 'X-treme PQ15' ], + 'X-tremePQ22' => [ 'Sigma Mobile', 'X-treme PQ22' ], + 'X-treme-PQ30' => [ 'Sigma Mobile', 'X-treme PQ30' ], + 'Blackphone 2' => [ 'Silent Circle', 'Blackphone 2' ], + 'SP-120' => [ 'Simvalley', 'SP-120' ], + 'simvalley SP-142' => [ 'Simvalley', 'SP-142' ], + 'V5U-simvalley SP-142' => [ 'Simvalley', 'SP-142' ], + 'SPX-5' => [ 'Simvalley', 'SPX-5' ], + 'SPX-5 3G' => [ 'Simvalley', 'SPX-5 3G' ], + 'SPX-6' => [ 'Simvalley', 'SPX-6' ], + 'SPX-12' => [ 'Simvalley', 'SPX-12' ], + 'X720' => [ 'Simmtronics', 'XPAD X-720', DeviceType::TABLET ], + 'HYPER X BLADE' => [ 'SKK Mobile', 'Hyper X Blade' ], + + 'Elite 5.5L+' => [ 'Sky Devices', 'Elite 5.5L+' ], + 'Elite 6.0L' => [ 'Sky Devices', 'Elite 6.0L' ], + + 'Skyworth!!' => [ + 'Skyworth PE90' => [ 'Skyworth', 'PE90' ], + 'Skyworth 8S51 E510' => [ 'Skyworth', 'E510', DeviceType::TELEVISION ], + 'Skyworth 8S50 E510E' => [ 'Skyworth', 'E510', DeviceType::TELEVISION ], + 'Skyworth 8S53 E660C' => [ 'Skyworth', 'E660', DeviceType::TELEVISION ], + 'Skyworth 8K55 E680' => [ 'Skyworth', 'E680', DeviceType::TELEVISION ], + 'Skyworth 9R10 E690U' => [ 'Skyworth', 'E690', DeviceType::TELEVISION ], + 'Skyworth 9R15 E710U' => [ 'Skyworth', 'E710', DeviceType::TELEVISION ], + 'Skyworth 8K93 E780U' => [ 'Skyworth', 'E780', DeviceType::TELEVISION ], + 'Skyworth 8R98 E790U' => [ 'Skyworth', 'E790', DeviceType::TELEVISION ], + 'Skyworth A55 Coocaa' => [ 'Skyworth', 'Coocaa Honor A55', DeviceType::TELEVISION ], + ], + + 'WF7C' => [ 'Smartbitt', 'WF7C', DeviceType::TABLET ], + + '(Smartfren|Andromax)!!' => [ + 'Smartfren A16C3H' => [ 'Smartfren', 'Andromax A' ], + 'Andromax A16C3H' => [ 'Smartfren', 'Andromax A' ], + 'Andromax A A16C3H' => [ 'Smartfren', 'Andromax A' ], + 'Andromax A26C4H' => [ 'Smartfren', 'Andromax B' ], + 'Andromax-c' => [ 'Smartfren', 'Andromax C' ], + 'Andromax C' => [ 'Smartfren', 'Andromax C' ], + 'Andromax-C.purwanto' => [ 'Smartfren', 'Andromax C' ], + 'Andromax C Sulthan Rafi XPERIA Mod' => [ 'Smartfren', 'Andromax C' ], + 'Andromax C+' => [ 'Smartfren', 'Andromax C+' ], + 'Smartfren Andromax AD688G' => [ 'Smartfren', 'Andromax C2' ], + 'Andromax C2' => [ 'Smartfren', 'Andromax C2' ], + 'Smartfren Andromax NEWAD688G' => [ 'Smartfren', 'Andromax C2' ], + 'AD688G' => [ 'Smartfren', 'Andromax C2' ], + 'Smartfren Andromax AD6B1H' => [ 'Smartfren', 'Andromax C3' ], + 'AD6B1H' => [ 'Smartfren', 'Andromax C3' ], + 'Andromax NC36B1H' => [ 'Smartfren', 'Andromax C3s' ], + 'Smartfren Andromax NC36B1G' => [ 'Smartfren', 'Andromax C3s' ], + 'Andromaxx-D_E1000' => [ 'Smartfren', 'Andromax D' ], + 'Andromax C46B2G' => [ 'Smartfren', 'Andromax Ec' ], + 'Andromax C46B2H' => [ 'Smartfren', 'Andromax Ec' ], + 'Andromax B16C2G' => [ 'Smartfren', 'Andromax E2+' ], + 'Andromax B16C2H' => [ 'Smartfren', 'Andromax E3' ], + 'Andromax AD687G' => [ 'Smartfren', 'Andromax G' ], + 'Andromax G' => [ 'Smartfren', 'Andromax G' ], + 'Andromax-G' => [ 'Smartfren', 'Andromax G' ], + 'Smartfren Andromax AD681H' => [ 'Smartfren', 'Andromax G2' ], + 'Smartfren Andromax AD9A1H' => [ 'Smartfren', 'Andromax G2 Qwerty' ], + 'Andromax SD6D1U' => [ 'Smartfren', 'Andromax G2 LE' ], + 'AndroMAXI AD683G' => [ 'Smartfren', 'Andromax I' ], + 'Andromax Vocused' => [ 'Smartfren', 'Andromax I' ], + 'androMax-i AS Ripped' => [ 'Smartfren', 'Andromax I' ], + 'Andromax AD683J' => [ 'Smartfren', 'Andromax I2' ], + 'Andromax-i2' => [ 'Smartfren', 'Andromax I2' ], + 'Andromax I2' => [ 'Smartfren', 'Andromax I2' ], + 'Andromax GT-I9500 i2' => [ 'Smartfren', 'Andromax I2' ], + 'Smartfren Andromax AD689G' => [ 'Smartfren', 'Andromax I3' ], + 'Smartfren Andromax AD682H' => [ 'Smartfren', 'Andromax I3s' ], + 'Andromax B26D2H' => [ 'Smartfren', 'Andromax L' ], + 'Andromax G36C1G' => [ 'Smartfren', 'Andromax Qi' ], + 'Andromax G36C1H' => [ 'Smartfren', 'Andromax Qi' ], + 'Andromax I46D1G' => [ 'Smartfren', 'Andromax R' ], + 'Andromax I56D2G' => [ 'Smartfren', 'Andromax R2' ], + 'Andromax AD682J' => [ 'Smartfren', 'Andromax T' ], + 'Andromax T AD628J' => [ 'Smartfren', 'Andromax T' ], + 'Andromax U!' => [ 'Smartfren', 'Andromax U' ], + 'Andromax-U' => [ 'Smartfren', 'Andromax U' ], + 'Smartfren Andromax U3' => [ 'Smartfren', 'Andromax U3' ], + ], + + 'AD686G' => [ 'Smartfren', 'Andromax C' ], + 'AD687G' => [ 'Smartfren', 'Andromax G' ], + 'AD6893G' => [ 'Smartfren', 'Andromax I3' ], + 'AD682H' => [ 'Smartfren', 'Andromax I3s' ], + 'PD6D1J' => [ 'Smartfren', 'Andromax V3s' ], + 'New Andromax-i' => [ 'Smartfren', 'Andromax I' ], + 'Androtab 7' => [ 'Smartfren', 'Androtab 7', DeviceType::TABLET ], + 'Smartfren Tab 7' => [ 'Smartfren', 'Tab 7', DeviceType::TABLET ], + 'S7' => [ 'Smartfren', 'Tab 7', DeviceType::TABLET ], + + 'SM919' => [ 'Smartisan', 'M1L' ], + 'OD103' => [ 'Smartisan', 'Nut Pro' ], + 'SM701' => [ 'Smartisan', 'T1' ], + 'SM801' => [ 'Smartisan', 'T2' ], + 'YQ601' => [ 'Smartisan', 'U1' ], + + 'SmartQ!!' => [ + 'SmartQ G7' => [ 'SmartQ', 'G7', DeviceType::TABLET ], + 'SmartQR10' => [ 'SmartQ', 'R10', DeviceType::TABLET ], + 'SmartQT7' => [ 'SmartQ', 'T7', DeviceType::TABLET ], + 'SmartQT10' => [ 'SmartQ', 'T10', DeviceType::TABLET ], + 'SmartQT12' => [ 'SmartQ', 'T12', DeviceType::TABLET ], + 'SmartQT13' => [ 'SmartQ', 'T13', DeviceType::TABLET ], + 'SmartQT15' => [ 'SmartQ', 'T15', DeviceType::TABLET ], + 'SmartQT19' => [ 'SmartQ', 'T19', DeviceType::TABLET ], + 'SmartQT20' => [ 'SmartQ', 'T20', DeviceType::TABLET ], + 'SmartQT30' => [ 'SmartQ', 'T30', DeviceType::TABLET ], + 'SmartQ V5' => [ 'SmartQ', 'V5', DeviceType::TABLET ], + 'SmartQV5II' => [ 'SmartQ', 'V5 II', DeviceType::TABLET ], + 'SmartQ V7' => [ 'SmartQ', 'V7', DeviceType::TABLET ], + ], + + 'T20' => [ 'SmartQ', 'T20', DeviceType::TABLET ], + 'T30' => [ 'SmartQ', 'T30', DeviceType::TABLET ], + + 'SZENIO!!' => [ + 'SZENIO 2000' => [ 'Szenio', '2000', DeviceType::TABLET ], + 'SZENIO 2500' => [ 'Szenio', '2500', DeviceType::TABLET ], + ], + + 'Sonim!!' => [ + 'Sonim Sonim-XP5700' => [ 'Sonim', 'XP5700' ], + 'Sonim XP5700' => [ 'Sonim', 'XP5700' ], + 'Sonim-XP5700' => [ 'Sonim', 'XP5700' ], + 'Sonim-XP5705' => [ 'Sonim', 'XP5705' ], + 'SONIM-XP5800' => [ 'Sonim', 'XP5800' ], + 'Sonim-XP6700' => [ 'Sonim', 'XP6700' ], + 'sonim/XP6700' => [ 'Sonim', 'XP6700' ], + 'Sonim XP6700' => [ 'Sonim', 'XP6700' ], + 'Sonim XP6711Z1' => [ 'Sonim', 'XP6711' ], + 'Sonim XP7700' => [ 'Sonim', 'XP7700' ], + 'Sonim-XP7700' => [ 'Sonim', 'XP7700' ], + 'sonim/XP7700' => [ 'Sonim', 'XP7700' ], + ], + + 'OMS1 6' => [ 'Sony Ericsson', 'A8i' ], + + 'C[0-9]{4,4}!!' => [ + 'C15(04|05|06)!' => [ 'Sony', 'Xperia E' ], // NanHu + 'C16(04|05)!' => [ 'Sony', 'Xperia E dual' ], // NanHu + 'C19(04|05)!' => [ 'Sony', 'Xperia M' ], // Nicki + 'C20(04|05)!' => [ 'Sony', 'Xperia M dual' ], // Nicki + 'C21(04|05)!' => [ 'Sony', 'Xperia L' ], // TaoShan + 'C23(04|05)!' => [ 'Sony', 'Xperia C' ], // Pelican + 'C3602' => [ 'Sony', 'Xperia "C3602"' ], // ... + 'C53(02|03|06)!' => [ 'Sony', 'Xperia SP' ], // HuaShan + 'C55(02|03)!' => [ 'Sony', 'Xperia ZR' ], // Dogo + 'C65(02|03|06)!' => [ 'Sony', 'Xperia ZL' ], // Odin + 'C66(02|03|06|16|33)!' => [ 'Sony', 'Xperia Z' ], // Yuga + 'C670[0-9]!' => [ 'Sony', 'C670x' ], // Itsuki + 'C68(02|06|33|43)!' => [ 'Sony', 'Xperia Z Ultra' ], // Togari + 'C69(02|03|06|43)!' => [ 'Sony', 'Xperia Z1' ], // Honami + 'C6916' => [ 'Sony', 'Xperia Z1s' ], // Honami + ], + + 'D[0-9]{4,4}!!' => [ + 'D20(04|05)!' => [ 'Sony', 'Xperia E1' ], // Falcon + 'D21(04|05|14)!' => [ 'Sony', 'Xperia E1 dual' ], // Falcon + 'D22(02|03|06|43)!' => [ 'Sony', 'Xperia E3' ], // ... + 'D22(12)!' => [ 'Sony', 'Xperia E3 dual' ], // ... + 'D23(02|03|05|06)!' => [ 'Sony', 'Xperia M2' ], // Eagle + 'D24(03|06)!' => [ 'Sony', 'Xperia M2 Aqua' ], // ... + 'D25(02)!' => [ 'Sony', 'Xperia C3 dual' ], // ... + 'D25(33)!' => [ 'Sony', 'Xperia C3' ], // ... + 'D51(02|03|06)!' => [ 'Sony', 'Xperia T3' ], // Seagull + 'D53(03|06|16)!' => [ 'Sony', 'Xperia T2 Ultra' ], // Tianchi + 'D53(22)!' => [ 'Sony', 'Xperia T2 Ultra dual' ], // Tianchi + 'D55(03)!' => [ 'Sony', 'Xperia Z1 Compact' ], // Amami + 'D57(88)!' => [ 'Sony', 'Xperia J1 Compact' ], // ... + 'D58(03|33)!' => [ 'Sony', 'Xperia Z3 Compact' ], // ... + 'D65(02|03|43)!' => [ 'Sony', 'Xperia Z2' ], // Sirius + 'D65(63)!' => [ 'Sony', 'Xperia Z2a' ], // Canopus + 'D66(03|16|33|43|46|53)!' => [ 'Sony', 'Xperia Z3' ], // ... + 'D66(83)!' => [ 'Sony', 'Xperia Z3 dual' ], // ... + 'D6708' => [ 'Sony', 'Xperia Z3v' ], // ... + ], + + 'E[0-9]{4,4}!!' => [ + 'E20(03|06|53)!' => [ 'Sony', 'Xperia E4g' ], + 'E20(33|43)!' => [ 'Sony', 'Xperia E4g dual' ], + 'E21(04|05)!' => [ 'Sony', 'Xperia E4' ], + 'E21(15|24)!' => [ 'Sony', 'Xperia E4 dual' ], + 'E23(03|06|53)!' => [ 'Sony', 'Xperia M4 Aqua' ], + 'E23(12|33|63)!' => [ 'Sony', 'Xperia M4 Aqua dual' ], + 'E53(03|06|53)!' => [ 'Sony', 'Xperia C4' ], + 'E53(33|43|63)!' => [ 'Sony', 'Xperia C4 dual' ], + 'E55(06|53)!' => [ 'Sony', 'Xperia C5 Ultra' ], + 'E55(33|63)!' => [ 'Sony', 'Xperia C5 Ultra dual' ], + 'E56(03|06|53)!' => [ 'Sony', 'Xperia M5' ], + 'E56(33|43|63)!' => [ 'Sony', 'Xperia M5 dual' ], + 'E58(03|23)!' => [ 'Sony', 'Xperia Z5 Compact' ], + 'E63(33)!' => [ 'Sony', 'Xperia Z3+ dual' ], + 'E65(08)!' => [ 'Sony', 'Xperia Z4v' ], + 'E65(33|53)!' => [ 'Sony', 'Xperia Z3+' ], + 'E66(03|46|53)!' => [ 'Sony', 'Xperia Z5' ], + 'E66(33|83)!' => [ 'Sony', 'Xperia Z5 dual' ], + 'E68(53)!' => [ 'Sony', 'Xperia Z5 Premium' ], + 'E68(33|83)!' => [ 'Sony', 'Xperia Z5 Premium dual' ], + ], + + 'F[0-9]{4,4}!!' => [ + 'F31(11|12|13|15|16)!' => [ 'Sony', 'Xperia XA' ], + 'F32(11|12|13|15|16)!' => [ 'Sony', 'Xperia XA Ultra' ], + 'F33(11|13)!' => [ 'Sony', 'Xperia E5' ], + 'F51(06)!' => [ 'Sony', 'Xperia T3' ], + 'F51(21|22)!' => [ 'Sony', 'Xperia X' ], + 'F53(21)!' => [ 'Sony', 'Xperia X Compact' ], + 'F81(31|32)!' => [ 'Sony', 'Xperia X Performance' ], + 'F83(31|32|33)!' => [ 'Sony', 'Xperia XZ' ], + ], + + 'G[0-9]{4,4}!!' => [ + 'G31(12|16|21|23|25)!' => [ 'Sony', 'Xperia XA1' ], + 'G32(12|21|23|26)!' => [ 'Sony', 'Xperia XA1 Ultra' ], + 'G33(11|12|13)!' => [ 'Sony', 'Xperia L1' ], + 'G34(12|16|21|23|26)!' => [ 'Sony', 'Xperia XA1 Plus' ], + 'G81(41|42|88)!' => [ 'Sony', 'Xperia XZ Premium' ], + 'G82(31|32)!' => [ 'Sony', 'Xperia XZs' ], + 'G83(41|42|43)!' => [ 'Sony', 'Xperia XZ1' ], + 'G84(41|42)!' => [ 'Sony', 'Xperia XZ1 Compact' ], + ], + + 'H[0-9]{4,4}!!' => [ + 'H42(33)!' => [ 'Sony', 'Xperia XA2 Ultra' ], + ], + + 'E[0-9]{2,2}[a-z]!!' => [ + 'E10(a|i|iv)!' => [ 'Sony Ericsson', 'Xperia X10 Mini' ], // Robyn + 'E15(a|av|i|iv|i-o)?$!' => [ 'Sony Ericsson', 'Xperia X8' ], // Shakira + 'E16i!' => [ 'Sony Ericsson', 'W8 Walkman' ], // Shakira Walkman + ], + + 'L[0-9]{2,2}[a-z]!!' => [ + 'L35h' => [ 'Sony', 'Xperia ZL' ], // Odin + 'L36h' => [ 'Sony', 'Xperia Z' ], // Yuga + 'L39(h|t|u)!' => [ 'Sony', 'Xperia Z1' ], // Honami + 'L50(w|t|u)!' => [ 'Sony', 'Xperia Z2' ], // Sirius + 'L55(t|u)!' => [ 'Sony', 'Xperia Z3' ], // ... + ], + + '(SNM\-)?LT[0-9]{2,2}[a-z]?!!' => [ + 'LT11i!' => [ 'Sony Ericsson', 'Xperia Neo V' ], // Haida + 'LT15(a|at|av|i|iv|i-o)?$!' => [ 'Sony Ericsson', 'Xperia Arc' ], // Anzu + 'LT15i Speed Edition' => [ 'Sony Ericsson', 'Xperia Arc' ], // Anzu + 'LT18(a|i|iv|i-o)?$!' => [ 'Sony Ericsson', 'Xperia Arc S' ], // Ayame + 'LT22i!' => [ 'Sony', 'Xperia P' ], // Nypon + 'LT25i!' => [ 'Sony', 'Xperia V' ], // Tsubasa + '(SNM\-)?LT25c!' => [ 'Sony', 'Xperia VC' ], // Tsubasa + 'LT26ii!' => [ 'Sony', 'Xperia SL' ], // Nozomi2 + 'LT26(i|i-o)!' => [ 'Sony', 'Xperia S' ], // Nozomi + 'LT26w!' => [ 'Sony', 'Xperia Acro S' ], // Hikari + 'LT28(at|h|i)!' => [ 'Sony', 'Xperia Ion' ], // Aoba + 'LT29i!' => [ 'Sony', 'Xperia TX' ], // Hayabusa + 'LT30(at)!' => [ 'Sony', 'Xperia TL' ], // Mint + 'LT30(a|p)!' => [ 'Sony', 'Xperia T' ], // Mint + ], + + '(SNM\-)?M[0-9]{2,2}[a-z]!!' => [ + '(SNM\-)?M35(c|h|t|ts)!' => [ 'Sony', 'Xperia SP' ], // HuaShan + 'M36h!' => [ 'Sony', 'Xperia ZR' ], // Dogo + 'M50w!' => [ 'Sony', 'Xperia T3' ], // Seagull + 'M51w!' => [ 'Sony', 'Xperia Z1 Compact' ], // Amami + 'M55w!' => [ 'Sony', 'Xperia Z3 Compact' ], // ... + ], + + 'MK16(a|i|$)!' => [ 'Sony Ericsson', 'Xperia Pro' ], // Iyokan + + 'MT[0-9]{2,2}[a-z]!!' => [ + 'MT11(a|i|iv|i-o)!' => [ 'Sony Ericsson', 'Xperia Neo V' ], // Haida + 'MT15(a|i|iv|i-o|$)!' => [ 'Sony Ericsson', 'Xperia Neo' ], // Hallon + 'MT25i!' => [ 'Sony', 'Xperia Neo L' ], // Phoenix + 'MT27i!' => [ 'Sony', 'Xperia Sola' ], // Pepper + ], + + 'R800(a|at|i|iv|x)!' => [ 'Sony Ericsson', 'Xperia Play' ], // Zeus + + 'S[0-9]{2,2}[a-z]!!' => [ + 'S36h' => [ 'Sony', 'Xperia L' ], // TaoShan + 'S39h' => [ 'Sony', 'Xperia C' ], // CN3 + 'S50h' => [ 'Sony', 'Xperia M2 dual' ], // Eagle + 'S55(t|u)!' => [ 'Sony', 'Xperia C3 dual' ], // ... + ], + + 'SK17(a|i|iv|i-o)!' => [ 'Sony Ericsson', 'Xperia Mini Pro' ], // Mango + + 'ST[0-9]{2,2}[a-z]?!!' => [ + 'ST15(a|i)!' => [ 'Sony Ericsson', 'Xperia Mini' ], // Smultron + 'ST17(a|i)!' => [ 'Sony Ericsson', 'Xperia Active' ], // Satsuma + 'ST18(a|av|i|iv)?!' => [ 'Sony Ericsson', 'Xperia Ray' ], // Urushi + 'ST21(a|i|i-o|iv)?$!' => [ 'Sony', 'Xperia Tipo' ], // Tapioca + 'ST21(a2|i2)!' => [ 'Sony', 'Xperia Tipo Dual' ], // Tapioca + 'ST23(a|i)?!' => [ 'Sony', 'Xperia Miro' ], // Mesona + 'ST25(a|i)!' => [ 'Sony', 'Xperia U' ], // Kumquat + 'ST26(a|i)?!' => [ 'Sony', 'Xperia J' ], // JLo + 'ST27(a|i)!' => [ 'Sony', 'Xperia Go' ], // Lotus + ], + + 'U20(a|i|iv)!' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro' ], // Mimmi + + 'WT[0-9]{2,2}[a-z]!!' => [ + 'WT18i!' => [ 'Sony Ericsson', 'Walkman' ], // Mulberry + 'WT19(a|i|iv)!' => [ 'Sony Ericsson', 'Live with Walkman' ], // Coconut + ], + + 'X8' => [ 'Sony Ericsson', 'Xperia X8' ], // Shakira + 'X10(a|i|iv|i-o|s)?$!' => [ 'Sony Ericsson', 'Xperia X10' ], // Rachael + 'X10 ?(Mini ?Pro)$!' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro' ], // Mimmi + 'X10 ?(Mini)$!' => [ 'Sony Ericsson', 'Xperia X10 Mini' ], // Robyn + 'XL39h' => [ 'Sony', 'Xperia Z Ultra' ], // Togari + 'XM50h' => [ 'Sony', 'Xperia T2 Ultra dual' ], // Tianchi + 'XM50t' => [ 'Sony', 'Xperia T2 Ultra' ], // Tianchi + 'Z1i' => [ 'Sony Ericsson', 'Xperia Play' ], // Zeus + + 'S51SE' => [ 'Sony Ericsson', 'mini S51SE', 'carrier' => 'EMOBILE' ], // Smultron + + 'IS[0-9]{2,2}S!!' => [ + 'IS11S' => [ 'Sony Ericsson', 'Xperia acro IS11S', 'carrier' => 'au' ], // Akane + 'IS12S' => [ 'Sony Ericsson', 'Xperia acro HD IS12S', 'carrier' => 'au' ], // Hayate + ], + + 'SO-0[0-9][A-Z]!!' => [ + 'SO-01B' => [ 'Sony Ericsson', 'Xperia SO-01B', 'carrier' => 'DoCoMo' ], // Rachael + 'SO-01C' => [ 'Sony Ericsson', 'Xperia arc SO-01C', 'carrier' => 'DoCoMo' ], // Anzu + 'SO-01D' => [ 'Sony Ericsson', 'Xperia PLAY SO-01D', 'carrier' => 'DoCoMo' ], // Zeus + 'SO-01E' => [ 'Sony', 'Xperia AX SO-01E', 'carrier' => 'DoCoMo' ], // Tsubasa + 'SO-01F' => [ 'Sony', 'Xperia Z1 SO-01F', 'carrier' => 'DoCoMo' ], // Honami + 'SO-01G' => [ 'Sony', 'Xperia Z3 SO-01G', 'carrier' => 'DoCoMo' ], // ... + 'SO-01H' => [ 'Sony', 'Xperia Z5 SO-01H', 'carrier' => 'DoCoMo' ], // ... + 'SO-01J' => [ 'Sony', 'Xperia XZ SO-01J', 'carrier' => 'DoCoMo' ], // ... + 'SO-01K' => [ 'Sony', 'Xperia XZ1 SO-01K', 'carrier' => 'DoCoMo' ], // ... + 'SO-02C' => [ 'Sony Ericsson', 'Xperia acro SO-02C', 'carrier' => 'DoCoMo' ], // Azusa + 'SO-02D' => [ 'Sony Ericsson', 'Xperia NX SO-02D', 'carrier' => 'DoCoMo' ], // Nozomi + 'SO-02E' => [ 'Sony', 'Xperia Z SO-02E', 'carrier' => 'DoCoMo' ], // Yuga + 'SO-02F' => [ 'Sony', 'Xperia Z1 f SO-02F', 'carrier' => 'DoCoMo' ], // Itsuki + 'SO-02G' => [ 'Sony', 'Xperia Z3 Compact SO-02G', 'carrier' => 'DoCoMo' ], // ... + 'SO-02H' => [ 'Sony', 'Xperia Z5 Compact SO-02H', 'carrier' => 'DoCoMo' ], // ... + 'SO-02J' => [ 'Sony', 'Xperia X Compact SO-02J', 'carrier' => 'DoCoMo' ], // ... + 'SO-02K' => [ 'Sony', 'Xperia XZ1 Compact SO-02K', 'carrier' => 'DoCoMo' ], // ... + 'SO-03C' => [ 'Sony Ericsson', 'Xperia ray SO-03C', 'carrier' => 'DoCoMo' ], // Urushi + 'SO-03D' => [ 'Sony Ericsson', 'Xperia acro HD SO-03D', 'carrier' => 'DoCoMo' ], // Hikari + 'SO-03E' => [ 'Sony', 'Xperia Tablet Z SO-03E', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], // Pollux + 'SO-03F' => [ 'Sony', 'Xperia Z2 SO-03F', 'carrier' => 'DoCoMo' ], // Sirius + 'SO-03G' => [ 'Sony', 'Xperia Z4 SO-03G', 'carrier' => 'DoCoMo' ], + 'SO-03H' => [ 'Sony', 'Xperia Z5 Premium SO-03H', 'carrier' => 'DoCoMo' ], + 'SO-03J' => [ 'Sony', 'Xperia XZs SO-03J', 'carrier' => 'DoCoMo' ], + 'SO-03K' => [ 'Sony', 'Xperia XZ2 SO-03K', 'carrier' => 'DoCoMo' ], + 'SO-04D' => [ 'Sony', 'Xperia GX SO-04D', 'carrier' => 'DoCoMo' ], // Hayabusa + 'SO-04E' => [ 'Sony', 'Xperia A SO-04E', 'carrier' => 'DoCoMo' ], // Dogo + 'SO-04EM' => [ 'Sony', 'Xperia feat. HATSUNE MIKU SO-04E', 'carrier' => 'DoCoMo' ], + 'SO-04F' => [ 'Sony', 'Xperia A2 SO-04F', 'carrier' => 'DoCoMo' ], // Altair + 'SO-04G' => [ 'Sony', 'Xperia A4 SO-04G', 'carrier' => 'DoCoMo' ], + 'SO-04H' => [ 'Sony', 'Xperia X Performance SO-04H', 'carrier' => 'DoCoMo' ], + 'SO-04J' => [ 'Sony', 'Xperia XZ Premium SO-04J', 'carrier' => 'DoCoMo' ], + 'SO-05D' => [ 'Sony', 'Xperia SX SO-05D', 'carrier' => 'DoCoMo' ], // Komachi + 'SO-05F' => [ 'Sony', 'Xperia Tablet Z2 SO-05F', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], // Castor + 'SO-05G' => [ 'Sony', 'Xperia Tablet Z4 SO-05G', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], // ... + 'SO-05K' => [ 'Sony', 'Xperia XZ2 Compact SO-05K', 'carrier' => 'DoCoMo' ], + 'SO-07D' => [ 'Sony', 'SO-07D', DeviceType::TABLET, 'carrier' => 'DoCoMo' ], // ... + ], + + 'SO[LTV][0-9]{2,2}!!' => [ + 'SOL21' => [ 'Sony', 'Xperia VL SOL21', 'carrier' => 'au' ], // Surf + 'SOL22' => [ 'Sony', 'Xperia UL SOL22', 'carrier' => 'au' ], // Gaga + 'SOL23' => [ 'Sony', 'Xperia Z1 SOL23', 'carrier' => 'au' ], // Honami + 'SOL24' => [ 'Sony', 'Xperia Z Ultra SOL24', 'carrier' => 'au' ], // Togari + 'SOL25' => [ 'Sony', 'Xperia ZL2 SOL25', 'carrier' => 'au' ], // Canopus + 'SOL26' => [ 'Sony', 'Xperia Z3 SOL26', 'carrier' => 'au' ], // ... + 'SOT21' => [ 'Sony', 'Xperia Tablet Z2 SOT21', DeviceType::TABLET, 'carrier' => 'au' ], // Castor + 'SOT31' => [ 'Sony', 'Xperia Tablet Z4 SOT31', DeviceType::TABLET, 'carrier' => 'au' ], // Castor + 'SOV31' => [ 'Sony', 'Xperia Z4 SOV31', 'carrier' => 'au' ], // ... + 'SOV32' => [ 'Sony', 'Xperia Z5 SOV32', 'carrier' => 'au' ], // ... + 'SOV33' => [ 'Sony', 'Xperia X Performance SOV33', 'carrier' => 'au' ], // ... + 'SOV34' => [ 'Sony', 'Xperia XZ SOV34', 'carrier' => 'au' ], // ... + 'SOV35' => [ 'Sony', 'Xperia XZs SOV35', 'carrier' => 'au' ], // ... + 'SOV36' => [ 'Sony', 'Xperia XZ1 SOV36', 'carrier' => 'au' ], // ... + 'SOV37' => [ 'Sony', 'Xperia XZ2 SOV37', 'carrier' => 'au' ], // ... + ], + + '40[0-9]SO!!' => [ + '401SO' => [ 'Sony', 'Xperia Z3 401SO', 'carrier' => 'Softbank' ], // ... + '402SO' => [ 'Sony', 'Xperia Z4 402SO', 'carrier' => 'Softbank' ], // ... + ], + + '50[0-9]SO!!' => [ + '501SO' => [ 'Sony', 'Xperia Z5 501SO', 'carrier' => 'Softbank' ], // ... + '502SO' => [ 'Sony', 'Xperia X Performance 502SO', 'carrier' => 'Softbank' ], // ... + ], + + '60[0-9]SO!!' => [ + '601SO' => [ 'Sony', 'Xperia XZ 601SO', 'carrier' => 'Softbank' ], // ... + '602SO' => [ 'Sony', 'Xperia XZs 602SO', 'carrier' => 'Softbank' ], // ... + ], + + '70[0-9]SO!!' => [ + '701SO' => [ 'Sony', 'Xperia XZ1 701SO', 'carrier' => 'Softbank' ], // ... + '702SO' => [ 'Sony', 'Xperia XZ2 702SO', 'carrier' => 'Softbank' ], // ... + ], + + 'Xperia!!' => [ + 'Xperia X1' => [ 'Sony Ericsson', 'Xperia X1' ], + 'Xperia X8' => [ 'Sony Ericsson', 'Xperia X8' ], // Shakira + 'Xperia X10' => [ 'Sony Ericsson', 'Xperia X10' ], // Rachael + 'Xperia x10 Mini Pro' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro' ], // Mimmi + 'Xperia Acro S' => [ 'Sony', 'Xperia Acro S' ], // Hikari + 'Xperia Active' => [ 'Sony Ericsson', 'Xperia Active' ], // Satsuma + 'Xperia Arc' => [ 'Sony Ericsson', 'Xperia Arc' ], // Anzu + 'Xperia Arc (LT15i)' => [ 'Sony Ericsson', 'Xperia Arc' ], // Anzu + 'Xperia Arc S' => [ 'Sony Ericsson', 'Xperia Arc S' ], // Ayame + 'Xperia Arc S (LT18i)' => [ 'Sony Ericsson', 'Xperia Arc S' ], // Ayame + 'Xperia C' => [ 'Sony', 'Xperia C' ], // Pelican + 'Xperia C4 Dual' => [ 'Sony', 'Xperia C4' ], + 'Xperia E' => [ 'Sony', 'Xperia E' ], // NanHu + 'Xperia E dual' => [ 'Sony', 'Xperia E dual' ], // NanHu + 'Xperia E3' => [ 'Sony', 'Xperia E3' ], + 'Xperia Go' => [ 'Sony', 'Xperia Go' ], // Lotus + 'Xperia ion' => [ 'Sony', 'Xperia Ion' ], // Aoba + 'Xperia J' => [ 'Sony', 'Xperia J' ], // JLo + 'Xperia L' => [ 'Sony', 'Xperia L' ], // TaoShan + 'Xperia M' => [ 'Sony', 'Xperia M' ], // Nicki + 'XPERIA M2' => [ 'Sony', 'Xperia M2' ], + 'Xperia M4 Aqua Dual' => [ 'Sony', 'Xperia M4 Aqua' ], + 'Xperia Miro' => [ 'Sony', 'Xperia Miro' ], // Mesona + 'Xperia Mini' => [ 'Sony Ericsson', 'Xperia Mini' ], // Smultron + 'Xperia Mini Pro' => [ 'Sony Ericsson', 'Xperia Mini Pro' ], // Mango + 'Xperia Neo' => [ 'Sony Ericsson', 'Xperia Neo' ], // Hallon + 'Xperia NeoV' => [ 'Sony Ericsson', 'Xperia Neo V' ], // Haida + 'Xperia Neo V!' => [ 'Sony Ericsson', 'Xperia Neo V' ], // Haida + 'Xperia Neo L' => [ 'Sony', 'Xperia Neo L' ], // Phoenix + 'Xperia P' => [ 'Sony', 'Xperia P' ], // Nypon + 'Xperia Play' => [ 'Sony Ericsson', 'Xperia Play' ], // Zeus + 'Xperia Pro' => [ 'Sony Ericsson', 'Xperia Pro' ], // Iyokan + 'Xperia Ray' => [ 'Sony Ericsson', 'Xperia Ray' ], // Urushi + 'Xperia Ray (ST18i)' => [ 'Sony Ericsson', 'Xperia Ray' ], // Urushi + 'Xperia S' => [ 'Sony', 'Xperia S' ], // Nozomi + 'Xperia SL' => [ 'Sony', 'Xperia SL' ], // Nozomi2 + 'Xperia SP' => [ 'Sony', 'Xperia SP' ], // HuaShan + 'Xperiaâ„¢ SP' => [ 'Sony', 'Xperia SP' ], // HuaShan + 'Xperia Sola' => [ 'Sony', 'Xperia Sola' ], // Pepper + 'Xperia T' => [ 'Sony', 'Xperia T' ], // Mint + 'Xperia TX' => [ 'Sony', 'Xperia TX' ], // Hayabusa + 'Xperia Tipo' => [ 'Sony', 'Xperia Tipo' ], // Tapioca + 'Xperia U' => [ 'Sony', 'Xperia U' ], // Kumquat + 'Xperia V' => [ 'Sony', 'Xperia V' ], // Tsubasa + 'Xperia.X8' => [ 'Sony Ericsson', 'Xperia X8' ], // Shakira + 'Xperia X10 Mini' => [ 'Sony Ericsson', 'Xperia X10 Mini' ], // Robyn + 'Xperia Z' => [ 'Sony', 'Xperia Z' ], // Yuga + 'Xperia Z (AOSP)' => [ 'Sony', 'Xperia Z' ], // Yuga + 'Xperia Z Ultra' => [ 'Sony', 'Xperia Z Ultra' ], // Togari + 'Xperia Z Ultra (AOSP)' => [ 'Sony', 'Xperia Z Ultra' ], // Togari + 'Xperia ZL' => [ 'Sony', 'Xperia ZL' ], // Odin + 'Xperia ZR' => [ 'Sony', 'Xperia ZR' ], // Dogo + 'Xperia Z1' => [ 'Sony', 'Xperia Z1' ], // Honami + 'Xperia Z1 V3' => [ 'Sony', 'Xperia Z1' ], // Honami + 'Xperia Z1 Compact' => [ 'Sony', 'Xperia Z1 Compact' ], // Amami + 'Xperia Z2' => [ 'Sony', 'Xperia Z2' ], // Sirius + 'Xperia Z3' => [ 'Sony', 'Xperia Z3' ], // ... + 'Xperia Z3 Dual' => [ 'Sony', 'Xperia Z3' ], // ... + 'Xperia Z3+' => [ 'Sony', 'Xperia Z3+' ], // ... + 'XPERIA Z3 Compact' => [ 'Sony', 'Xperia Z3 Compact' ], + 'Xperia Z3C' => [ 'Sony', 'Xperia Z3 Compact' ], + 'XPERIA Z4' => [ 'Sony', 'Xperia Z4' ], // ... + 'Xperia Z4 Xtreme' => [ 'Sony', 'Xperia Z4' ], // ... + 'Xperia-Z' => [ 'Sony', 'Xperia Z' ], // Yuga + 'Xperia-Z1' => [ 'Sony', 'Xperia Z1' ], // Honami + 'Xperiaâ„¢ C' => [ 'Sony', 'Xperia C' ], // Pelican + 'Xperiaâ„¢ ZL39H' => [ 'Sony', 'Xperia Z Ultra' ], // Togari + 'Xperiaâ„¢ Miku' => [ 'Sony', 'Xperia Feat. Hatsune Miku' ], // Dogo + 'Xperia Tablet S' => [ 'Sony', 'Xperia Tablet S', DeviceType::TABLET ], + 'Xperia Live with Walkman' => [ 'Sony Ericsson', 'Live with Walkman' ], // Coconut + 'Xperia Tablet Z' => [ 'Sony', 'Xperia Tablet Z', DeviceType::TABLET ], + 'Xperia Tablet Z LTE' => [ 'Sony', 'Xperia Tablet Z', DeviceType::TABLET ], + 'Xperia Tablet Z Wi-Fi' => [ 'Sony', 'Xperia Tablet Z', DeviceType::TABLET ], + 'Xperia Tablet Z WiFi' => [ 'Sony', 'Xperia Tablet Z', DeviceType::TABLET ], + 'Xperia Z2 Tablet Wifi' => [ 'Sony', 'Xperia Tablet Z2', DeviceType::TABLET ], + ], + + 'Sony Xperia Ray' => [ 'Sony Ericsson', 'Xperia Ray' ], // Urushi + 'SonyEricssonMT15' => [ 'Sony Ericsson', 'Xperia Neo' ], // Hallon + 'SonyEricssonST15' => [ 'Sony Ericsson', 'Xperia Mini' ], // Smultron + 'Live ?With ?Walkman!' => [ 'Sony Ericsson', 'Live with Walkman' ], // Coconut + 'Arc' => [ 'Sony Ericsson', 'Xperia Arc' ], // Anzu + 'Arc S' => [ 'Sony Ericsson', 'Xperia Arc S' ], // Ayame + 'Neo V' => [ 'Sony Ericsson', 'Xperia Neo V' ], // Haida + 'Hayabusa' => [ 'Sony', 'Xperia GX or TX' ], // Hayabusa + 'Nozomi' => [ 'Sony', 'Xperia S' ], // Nozomi + 'pepper' => [ 'Sony', 'Xperia Sola' ], // Pepper + 'Tablet P' => [ 'Sony', 'Tablet P', DeviceType::TABLET ], + 'Tablet S' => [ 'Sony', 'Tablet S', DeviceType::TABLET ], + + 'SGP[ST0-9][0-9]{2,2}!!' => [ + 'SGPS(21)!' => [ 'Sony', 'Xperia Tablet Z2', DeviceType::TABLET ], + 'SGPT(12|13)!' => [ 'Sony', 'Xperia Tablet S', DeviceType::TABLET ], + 'SGP3(11|12|21|41|51)!' => [ 'Sony', 'Xperia Tablet Z', DeviceType::TABLET ], + 'SGP4(12)!' => [ 'Sony', 'Xperia Tablet Z Ultra', DeviceType::TABLET ], + 'SGP5(11|12|21|41|51|61)!' => [ 'Sony', 'Xperia Tablet Z2', DeviceType::TABLET ], // Castor + 'SGP6(11|12|21|41)!' => [ 'Sony', 'Xperia Tablet Z3 Compact', DeviceType::TABLET ], + 'SGP7(12|71)!' => [ 'Sony', 'Xperia Tablet Z4', DeviceType::TABLET ], + ], + + 'NWZ?-Z1000Series!' => [ 'Sony', 'Walkman Z', DeviceType::MEDIA ], + + 'NSZ-G[A-Z][0-9]!!' => [ + 'NSZ-GP9' => [ 'Sony', 'NSZ-GP9', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'NSZ-GS7' => [ 'Sony', 'NSZ-GS7', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'NSZ-GS8' => [ 'Sony', 'NSZ-GS8', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'NSZ-GT1' => [ 'Sony', 'NSZ-GT1', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'NSZ-GU1' => [ 'Sony', 'BRAVIA Smart Stick NSZ-GU1', DeviceType::TELEVISION, Flag::GOOGLETV ], + ], + + 'beetle' => [ 'Sony', 'NSZ-GS7', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'magi' => [ 'Sony', 'BRAVIA Smart Stick NSZ-GU1', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'Internet TV' => [ 'Sony', 'Internet TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'Internet TV Box' => [ 'Sony', 'Internet TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'BRAVIA' => [ 'Sony', 'Bravia W80', DeviceType::TELEVISION ], + 'PRS-T1' => [ 'Sony', 'Reader PRS-T1', DeviceType::EREADER ], + 'SpeedUp S3' => [ 'SpeedUp', 'Tab S3', DeviceType::TABLET ], + + '(CSL[- ])?(Spice[- ]?)?Mi(-| )?[0-9]{3,3}!!' => [ + 'Spice Mi-270' => [ 'Spice', 'Mi-270' ], + 'Spice Mi280' => [ 'Spice', 'Mi-280' ], + 'SPICE-MI280' => [ 'Spice', 'Mi-280' ], + 'SPICE Mi-285' => [ 'Spice', 'Mi-285 Stellar' ], + 'Spice Mi300' => [ 'Spice', 'Mi-300' ], + 'CSL Spice MI300' => [ 'Spice', 'Mi-300' ], + 'Spice Mi-310' => [ 'Spice', 'Mi-310' ], + 'Mi320' => [ 'Spice', 'Mi-320' ], + 'Spice Mi-320' => [ 'Spice', 'Mi-320' ], + 'Mi-347' => [ 'Spice', 'Mi-347' ], + 'Mi-348E' => [ 'Spice', 'Mi-348 Smart Flo' ], + 'Spice Mi-349' => [ 'Spice', 'Mi-349 Smart Flo Edge' ], + 'Spice Mi-350!' => [ 'Spice', 'Mi-350' ], + 'CSL-MI350' => [ 'Spice', 'Mi-350' ], + 'Spice Mi-351' => [ 'Spice', 'Mi-351 Smart Flo' ], + 'Spice MI352' => [ 'Spice', 'Mi-352 Stellar Xtacy' ], + 'Spice MI-352' => [ 'Spice', 'Mi-352 Stellar Xtacy' ], + 'Spice MI-353' => [ 'Spice', 'Mi-353 Stellar Jazz' ], + 'Spice Mi-354' => [ 'Spice', 'Mi-354 Smart Flo Space' ], + 'Spice Mi-355' => [ 'Spice', 'Mi-355 Stellar Craze' ], + 'MI-355' => [ 'Spice', 'Mi-355 Stellar Craze' ], + 'MI355' => [ 'Spice', 'Mi-355 Stellar Craze' ], + 'Mi-356' => [ 'Spice', 'Mi-356 Smart Flo Mettle 3.5X' ], + 'Spice Mi-358' => [ 'Spice', 'Mi-358 Smart Flo' ], + 'Spice Mi-359' => [ 'Spice', 'Mi-359 Smart Flo' ], + 'Spice Mi-359 3G' => [ 'Spice', 'Mi-359 Smart Flo' ], + 'Mi-360' => [ 'Spice', 'Mi-360 Stellar' ], + 'Spice Mi-361' => [ 'Spice', 'Mi-361 Stellar' ], + 'Mi361' => [ 'Spice', 'Mi-361 Stellar' ], + 'Mi-362' => [ 'Spice', 'Mi-362 Stellar' ], + 'Mi363' => [ 'Spice', 'Mi-363 Switch Star Neo' ], + 'Mi-364' => [ 'Spice', 'Mi-364' ], + 'MI-402' => [ 'Spice', 'Mi-402' ], + 'MI-403E' => [ 'Spice', 'Mi-403 Smart Flo' ], + 'Mi-404' => [ 'Spice', 'Mi-404' ], + 'Spice Mi-405' => [ 'Spice', 'Mi-405 Stellar' ], + 'Mi-406' => [ 'Spice', 'Mi-406 Switch Pluto' ], + 'Mi406' => [ 'Spice', 'Mi-406 Switch Pluto' ], + 'SPICE-Mi 407' => [ 'Spice', 'Mi-407' ], + 'CSL-MI410' => [ 'Spice', 'Mi-410' ], + 'Spice MI410' => [ 'Spice', 'Mi-410' ], + 'Spice Mi 415' => [ 'Spice', 'Mi-415' ], + 'Spice Mi-422' => [ 'Spice', 'Mi-422 Smart Flo Pace' ], + 'Mi-423' => [ 'Spice', 'Mi-423 Smart Flo Ivory 2' ], + 'Spice Mi-424' => [ 'Spice', 'Mi-424 Stellar' ], + 'Spice Mi-425' => [ 'Spice', 'Mi-425 Stellar' ], + 'Mi-426' => [ 'Spice', 'Mi-426 Smart Flo Mettle 4X' ], + 'Spice Mi-430' => [ 'Spice', 'Mi-430 Stellar' ], + 'Spice Mi-431' => [ 'Spice', 'Mi-431 Stellar' ], + 'Spice Mi-435' => [ 'Spice', 'Mi-435 Stellar Nhance' ], + 'Spice Mi-436' => [ 'Spice', 'Mi-436 Stellar Glamour' ], + 'Spice Mi-437' => [ 'Spice', 'Mi-437 Stellar Nhance 2' ], + 'Mi438' => [ 'Spice', 'Mi-438 Stellar Glide' ], + 'MI-438' => [ 'Spice', 'Mi-438 Stellar Glide' ], + 'Mi-439' => [ 'Spice', 'Mi-439 Stellar' ], + 'Mi-440' => [ 'Spice', 'Mi-440 Stellar' ], + 'SpiceMi441' => [ 'Spice', 'Mi-441 Stellar' ], + 'Spice Mi-445' => [ 'Spice', 'Mi-445 Stellar' ], + 'SpiceMi-449' => [ 'Spice', 'Mi-449 Stellar' ], + 'Spice Mi-449 3G' => [ 'Spice', 'Mi-449 Stellar' ], + 'Spice Mi-450' => [ 'Spice', 'Mi-450 Smart Flo Ivory' ], + 'Spice Mi-451' => [ 'Spice', 'Mi-451 Smart Flo Poise' ], + 'Spice Mi-451 3G' => [ 'Spice', 'Mi-451 Smart Flo Poise' ], + 'Mi-470' => [ 'Spice', 'Mi-470 Stellar' ], + 'Mi-491' => [ 'Spice', 'Mi-491 Stellar Virtuoso Pro' ], + 'Spice Mi-492' => [ 'Spice', 'Mi-492 Stellar Virtuoso Pro+' ], + 'Spice Mi-495' => [ 'Spice', 'Mi-495 Stellar Virtuoso' ], + 'Spice Mi-496' => [ 'Spice', 'Mi-496 Coolpad 2' ], + 'Spice Mi-497' => [ 'Spice', 'Mi-497 Stellar' ], + 'Spice Mi-498' => [ 'Spice', 'Mi-498 Dream Uno' ], + 'Spice Mi-498H' => [ 'Spice', 'Mi-498 Dream Uno' ], + 'Mi-498 Dream Uno' => [ 'Spice', 'Mi-498 Dream Uno' ], + 'Spice Mi-500' => [ 'Spice', 'Mi-500 Stellar Horizon' ], + 'Mi501' => [ 'Spice', 'Mi-501 Switch Mercury' ], + 'Spice Mi-501' => [ 'Spice', 'Mi-501 Switch Mercury' ], + 'Spice Mi 502' => [ 'Spice', 'Mi-502 Smart Flo Pace2' ], + 'Spice Mi-502' => [ 'Spice', 'Mi-502 Smart Flo Pace2' ], + 'Spice Mi-502n' => [ 'Spice', 'Mi-502 Smart Flo Pace2' ], + 'SpiceMI502' => [ 'Spice', 'Mi-502 Smart Flo Pace2' ], + 'Mi-503' => [ 'Spice', 'Mi-503 Stellar' ], + 'Spice Mi-504' => [ 'Spice', 'Mi-504 Smart Flo Mettle 5X' ], + 'Spice Mi-505' => [ 'Spice', 'Mi-505 Stellar Horizon Pro' ], + 'Spice Mi-506' => [ 'Spice', 'Mi-506 Stellar Mettle Icon' ], + 'Spice Mi-507' => [ 'Spice', 'Mi-507 Stellar' ], + 'Mi-508' => [ 'Spice', 'Mi-508 Stellar' ], + 'MI-509' => [ 'Spice', 'Mi-509 Stellar' ], + 'SpiceMI-509' => [ 'Spice', 'Mi-509 Stellar' ], + 'SpiceMi-511' => [ 'Spice', 'Mi-511' ], + 'Spice Mi-514' => [ 'Spice', 'Mi-514' ], + 'Spice Mi-515' => [ 'Spice', 'Mi-515 Coolpad' ], + 'Mi-516' => [ 'Spice', 'Mi-516 Stellar' ], + 'SpiceMi517' => [ 'Spice', 'Mi-517' ], + 'Spice Mi-518' => [ 'Spice', 'Mi-518 Stellar' ], + 'Spice Mi-519' => [ 'Spice', 'Mi-519 Stellar' ], + 'SpiceMI-520' => [ 'Spice', 'Mi-520 Stellar' ], + 'SpiceMI-520N' => [ 'Spice', 'Mi-520 Stellar' ], + 'Spice Mi-524' => [ 'Spice', 'Mi-524 Stellar' ], + 'Spice Mi-525' => [ 'Spice', 'Mi-525 Stellar Pinnacle FHD' ], + 'Spice Mi-526' => [ 'Spice', 'Mi-526 Stellar' ], + 'Spice Mi-526n' => [ 'Spice', 'Mi-526N Stellar' ], + 'Spice Mi-530' => [ 'Spice', 'Mi-530 Stellar Pinnacle' ], + 'Mi530' => [ 'Spice', 'Mi-530 Stellar Pinnacle' ], + 'Mi531' => [ 'Spice', 'Mi-531' ], + 'Spice Mi-535' => [ 'Spice', 'Mi-535 Stellar Pinnacle Pro' ], + 'Spice Mi-549' => [ 'Spice', 'Mi-549' ], + 'Spice Mi-550' => [ 'Spice', 'Mi-550 Pinnacle Stylus' ], + 'Spice Mi-551' => [ 'Spice', 'Mi-551' ], + 'Mi-600' => [ 'Spice', 'Mi-600 Stellar' ], + 'CSL Spice MI700' => [ 'Spice', 'Mi-700', DeviceType::TABLET ], + 'Spice-MI-710' => [ 'Spice', 'Mi-710', DeviceType::TABLET ], + 'SPICE Mi-720' => [ 'Spice', 'Mi-720 Tab', DeviceType::TABLET ], + 'Spice Mi-725' => [ 'Spice', 'Mi-725 Stellar Slatepad', DeviceType::TABLET ], + 'Mi730' => [ 'Spice', 'Mi-730 Tab', DeviceType::TABLET ], + 'Spice Mi-730' => [ 'Spice', 'Mi-730 Tab', DeviceType::TABLET ], + 'Spice Mi-740' => [ 'Spice', 'Mi-740', DeviceType::TABLET ], + 'SpiceMi1010' => [ 'Spice', 'Mi-1010 Stellar Pad', DeviceType::TABLET ], + ], + + 'Spice N-300' => [ 'Spice', 'Buddy N300' ], + 'Spice N-500' => [ 'Spice', 'Communicator N500' ], + + 'Xlife-348E+' => [ 'Spice', 'Xlife 348E+' ], + 'Xlife-350' => [ 'Spice', 'Xlife 350' ], + 'Xlife-364 3G+' => [ 'Spice', 'Xlife 364' ], + 'Xlife-405' => [ 'Spice', 'Xlife 405' ], + 'Xlife-410 3G' => [ 'Spice', 'Xlife 410' ], + 'Xlife-415' => [ 'Spice', 'Xlife 415' ], + 'Spice Xlife-425 3G' => [ 'Spice', 'Xlife 425' ], + 'Xlife-431Q' => [ 'Spice', 'Xlife 431Q' ], + 'Xlife-431Q Lite' => [ 'Spice', 'Xlife 431Q Lite' ], + 'Spice Xlife-435Q' => [ 'Spice', 'Xlife 435Q' ], + 'Spice Xlife-451Q' => [ 'Spice', 'Xlife 451Q' ], + 'Xlife-480q' => [ 'Spice', 'Xlife 480Q' ], + 'Xlife-481q' => [ 'Spice', 'Xlife 481Q' ], + 'Xlife-482q' => [ 'Spice', 'Xlife 482Q' ], + 'Spice-Xlife-511Pro' => [ 'Spice', 'Xlife 511 Pro' ], + 'Spice Xlife-512' => [ 'Spice', 'Xlife 512' ], + 'Xlife-514Q' => [ 'Spice', 'Xlife 514Q' ], + 'Xlife-515Q' => [ 'Spice', 'Xlife 515Q' ], + 'Spice Xlife-520HD' => [ 'Spice', 'Xlife 520 HD' ], + 'Spice Xlife-M5+' => [ 'Spice', 'Xlife M5+' ], + 'Xlife-M5q+' => [ 'Spice', 'Xlife M5q+' ], + 'Xlife-M44Q' => [ 'Spice', 'Xlife M44q' ], + 'Spice Xlife-M45q' => [ 'Spice', 'Xlife M45q' ], + 'Spice Xlife-M46q' => [ 'Spice', 'Xlife M46q' ], + 'Xlife-Electro55HD' => [ 'Spice', 'Xlife Electro 55 HD' ], + 'Xlife-Ezy' => [ 'Spice', 'Xlife Ezy' ], + 'Spice Xlife-Proton4' => [ 'Spice', 'Xlife Proton 4' ], + 'Xlife-Victor4' => [ 'Spice', 'Xlife Victor 4' ], + + 'Spice Xplor-Proton5' => [ 'Spice', 'Xplor Proton 5' ], + + 'A5000' => [ 'Star', 'A5000' ], + 'A7272+' => [ 'Star', 'A7272+' ], + 'I9300' => [ 'Star', 'I9300' ], + 'N710' => [ 'Star', 'N710' ], + 'e1808 v75!' => [ 'Star', 'N8000' ], + 'Star N8000' => [ 'Star', 'N8000' ], + 'Star N9500' => [ 'Star', 'N9500' ], + 'Star N9589' => [ 'Star', 'N9589' ], + 'N9600' => [ 'Star', 'N9600' ], + 'Star Q9000' => [ 'Star', 'Q9000' ], + 'S5' => [ 'Star', 'S5' ], + 'STAR S5' => [ 'Star', 'S5' ], + 'STAR S7589' => [ 'Star', 'S7589' ], + 'V1277' => [ 'Star', 'V1277' ], + 'e1109 v73!' => [ 'Star', 'X18i' ], + + 'Starmobile!!' => [ + 'Starmobile ASTRA' => [ 'Starmobile', 'Astra' ], + 'Starmobile CRYSTAL' => [ 'Starmobile', 'Crystal' ], + 'Starmobile DIAMOND' => [ 'Starmobile', 'Diamond' ], + 'Starmobile DIAMOND D3' => [ 'Starmobile', 'Diamond D3' ], + 'Starmobile Diamond S1' => [ 'Starmobile', 'Diamond S1' ], + 'Starmobile Diamond S2' => [ 'Starmobile', 'Diamond S2' ], + 'Starmobile DIAMOND V3' => [ 'Starmobile', 'Diamond V3' ], + 'Starmobile Diamond X1' => [ 'Starmobile', 'Diamond X1' ], + 'Starmobile ENERGY' => [ 'Starmobile', 'Energy' ], + 'Starmobile ENGAGE' => [ 'Starmobile', 'Engage' ], + 'Starmobile Engage7 3G' => [ 'Starmobile', 'Engage 7' ], + 'Starmobile ENGAGE 9i' => [ 'Starmobile', 'Engage 9i' ], + 'Starmobile FLIRT' => [ 'Starmobile', 'Flirt' ], + 'Starmobile GOAL' => [ 'Starmobile', 'Goal' ], + 'Starmobile Hit' => [ 'Starmobile', 'Hit' ], + 'Starmobile JUMP' => [ 'Starmobile', 'Jump' ], + 'Starmobile KNIGHT' => [ 'Starmobile', 'Knight' ], + 'Starmobile Knight Vision' => [ 'Starmobile', 'Knight Vision' ], + 'Starmobile Like' => [ 'Starmobile', 'Like' ], + 'Starmobile MUSE' => [ 'Starmobile', 'Muse' ], + 'Starmobile NAVI' => [ 'Starmobile', 'Navi' ], + 'Starmobile OCTA' => [ 'Starmobile', 'Octa' ], + 'Starmobile PLAY' => [ 'Starmobile', 'Play' ], + 'Starmobile PLAY Click' => [ 'Starmobile', 'Play Click' ], + 'Starmobile PLAY Max' => [ 'Starmobile', 'Play Max' ], + 'Starmobile Play Neo' => [ 'Starmobile', 'Play Neo' ], + 'Starmobile Play Spark' => [ 'Starmobile', 'Play Spark' ], + 'Starmobile QUEST' => [ 'Starmobile', 'Quest' ], + 'Starmobile UP' => [ 'Starmobile', 'Up' ], + 'Starmobile UP Max' => [ 'Starmobile', 'Up Max' ], + 'Starmobile VIDA' => [ 'Starmobile', 'Vida' ], + ], + + 'DIAMOND D1' => [ 'Starmobile', 'Diamond D1' ], + 'DIAMOND S3' => [ 'Starmobile', 'Diamond S3' ], + 'ROAR' => [ 'Starmobile', 'Roar' ], + + '(Starway )?Andromeda!!' => [ + 'Starway Andromeda S705' => [ 'Starway', 'Andromeda S705', DeviceType::TABLET ], + 'Andromeda S707' => [ 'Starway', 'Andromeda S707', DeviceType::TABLET ], + 'Andromeda S770' => [ 'Starway', 'Andromeda S770', DeviceType::TABLET ], + 'Andromeda S840' => [ 'Starway', 'Andromeda S840', DeviceType::TABLET ], + 'Andromeda S845' => [ 'Starway', 'Andromeda S840', DeviceType::TABLET ], + 'STARWAY Andromeda S900' => [ 'Starway', 'Andromeda S900', DeviceType::TABLET ], + 'Starway Andromeda S910' => [ 'Starway', 'Andromeda S910', DeviceType::TABLET ], + 'Andromeda S910' => [ 'Starway', 'Andromeda S910', DeviceType::TABLET ], + 'Andromeda S940' => [ 'Starway', 'Andromeda S940', DeviceType::TABLET ], + ], + + 'STX!!' => [ + 'STX EVO' => [ 'Stonex', 'STX Evo' ], + 'STX Mini' => [ 'Stonex', 'STX Mini' ], + 'STX MINI 2' => [ 'Stonex', 'STX Mini 2' ], + 'STX ULTRA' => [ 'Stonex', 'STX Ultra' ], + 'STX ULTRA 2' => [ 'Stonex', 'STX Ultra 2' ], + ], + + 'Scroll!!' => [ + 'Scroll Engage' => [ 'Storage Options', 'Scroll Engage', DeviceType::TABLET ], + 'Scroll Essential' => [ 'Storage Options', 'Scroll Essential', DeviceType::TABLET ], + 'Scroll Essential II' => [ 'Storage Options', 'Scroll Essential 2', DeviceType::TABLET ], + 'Scroll Evoke' => [ 'Storage Options', 'Scroll Evoke', DeviceType::TABLET ], + 'Scroll Excel' => [ 'Storage Options', 'Scroll Excel', DeviceType::TABLET ], + 'Scroll Excel 2' => [ 'Storage Options', 'Scroll Excel 2', DeviceType::TABLET ], + 'Scroll Extreme' => [ 'Storage Options', 'Scroll Extreme', DeviceType::TABLET ], + 'Scroll Tablet' => [ 'Storage Options', 'Scroll Tablet', DeviceType::TABLET ], + 'Scroll Tablet PC' => [ 'Storage Options', 'Scroll Tablet PC', DeviceType::TABLET ], + ], + + 'eZee!!' => [ + 'eZee\'Tab10c' => [ 'Storex', 'eZee\'Tab 10c', DeviceType::TABLET ], + 'eZee\'Tab702' => [ 'Storex', 'eZee\'Tab 702', DeviceType::TABLET ], + 'eZee\' Tab702' => [ 'Storex', 'eZee\'Tab 702', DeviceType::TABLET ], + 'eZee\'Tab703' => [ 'Storex', 'eZee\'Tab 703', DeviceType::TABLET ], + 'eZee\'Tab705' => [ 'Storex', 'eZee\'Tab 705', DeviceType::TABLET ], + 'eZee\'TAB706' => [ 'Storex', 'eZee\'Tab 706', DeviceType::TABLET ], + 'eZee\'TAB707' => [ 'Storex', 'eZee\'Tab 707', DeviceType::TABLET ], + 'eZee\'Tab709' => [ 'Storex', 'eZee\'Tab 709', DeviceType::TABLET ], + 'eZee\'Tab785' => [ 'Storex', 'eZee\'Tab 785', DeviceType::TABLET ], + 'eZee\'Tab785D11-S' => [ 'Storex', 'eZee\'Tab 785', DeviceType::TABLET ], + 'eZee\'Tab785Q11-M' => [ 'Storex', 'eZee\'Tab 785', DeviceType::TABLET ], + 'eZee\'Tab802' => [ 'Storex', 'eZee\'Tab 802', DeviceType::TABLET ], + 'eZee\'Tab803' => [ 'Storex', 'eZee\'Tab 803', DeviceType::TABLET ], + 'eZee\'Tab804' => [ 'Storex', 'eZee\'Tab 804', DeviceType::TABLET ], + 'eZee Tab805' => [ 'Storex', 'eZee\'Tab 805', DeviceType::TABLET ], + 'Ezee\'TAB901' => [ 'Storex', 'eZee\'Tab 901', DeviceType::TABLET ], + 'eZee\'Tab903' => [ 'Storex', 'eZee\'Tab 903', DeviceType::TABLET ], + 'eZee\'Tab904' => [ 'Storex', 'eZee\'Tab 904', DeviceType::TABLET ], + 'eZee Tab973' => [ 'Storex', 'eZee\'Tab 973', DeviceType::TABLET ], + 'eZee\'TAB973' => [ 'Storex', 'eZee\'Tab 973', DeviceType::TABLET ], + 'eZee\'Tab1001' => [ 'Storex', 'eZee\'Tab 1001', DeviceType::TABLET ], + 'EzeeTab\'1001' => [ 'Storex', 'eZee\'Tab 1001', DeviceType::TABLET ], + 'eZeeTab1003' => [ 'Storex', 'eZee\'Tab 1003', DeviceType::TABLET ], + 'eZee\'Tab1004' => [ 'Storex', 'eZee\'Tab 1004', DeviceType::TABLET ], + 'eZee\' Tab10010-S' => [ 'Storex', 'eZee\'Tab 10010s', DeviceType::TABLET ], + 'eZeeTab7c2' => [ 'Storex', 'eZee\'Tab 7c2', DeviceType::TABLET ], + 'eZeeTab7c5' => [ 'Storex', 'eZee\'Tab 7c5', DeviceType::TABLET ], + 'eZee\'Tab7D10-S' => [ 'Storex', 'eZee\'Tab 7d10s', DeviceType::TABLET ], + 'eZee\'TAB7D12-S' => [ 'Storex', 'eZee\'Tab 7d12s', DeviceType::TABLET ], + 'eZee\'Tab7D13-S' => [ 'Storex', 'eZee\'Tab 7d13s', DeviceType::TABLET ], + 'eZee\'Tab7D14-S' => [ 'Storex', 'eZee\'Tab 7d14s', DeviceType::TABLET ], + 'eZeeTab7D15-M' => [ 'Storex', 'eZee\'Tab 7d15s', DeviceType::TABLET ], + 'eZee\'tab7Q12-S' => [ 'Storex', 'eZee\'Tab 7q12s', DeviceType::TABLET ], + 'eZee\'Tab785D12-S' => [ 'Storex', 'eZee\'Tab 785d12s', DeviceType::TABLET ], + 'eZee\'Tab8D11-S' => [ 'Storex', 'eZee\'Tab 8d11s', DeviceType::TABLET ], + 'eZee\'Tab97D11-S' => [ 'Storex', 'eZee\'Tab 97d11s', DeviceType::TABLET ], + 'eZee\'Tab10D11-M' => [ 'Storex', 'eZee\'Tab 10d11m', DeviceType::TABLET ], + 'eZee\'tab10D12-S' => [ 'Storex', 'eZee\'Tab 10d12s', DeviceType::TABLET ], + 'eZee\'Tab13Q10-M' => [ 'Storex', 'eZee\'Tab 13q10m', DeviceType::TABLET ], + ], + + 'STOREX LinkBox' => [ 'Storex', 'LinkBox', DeviceType::TELEVISION ], + + 'SRT!!' => [ + 'SRT AN4' => [ 'Strong', 'SRT AN4', DeviceType::TELEVISION ], + 'SRT AN4M' => [ 'Strong', 'SRT AN4M', DeviceType::TELEVISION ], + ], + + 'Cyclone!!' => [ + 'Cyclone Explorer' => [ 'Sumvision', 'Cyclone Explorer', DeviceType::TABLET ], + 'CYCLONE EXPLORER II' => [ 'Sumvision', 'Cyclone Explorer 2', DeviceType::TABLET ], + 'cyclone Titan' => [ 'Sumvision', 'Cyclone Titan', DeviceType::TABLET ], + 'Cyclone Voyager' => [ 'Sumvision', 'Cyclone Voyager', DeviceType::TABLET ], + 'Cyclone Voyager 2' => [ 'Sumvision', 'Cyclone Voyager 2', DeviceType::TABLET ], + ], + + 'M1001' => [ 'Superpad', 'M1001', DeviceType::TABLET ], + + 'SC-!!' => [ + 'SC-71MID' => [ 'Supersonic', 'Matrix SC-71MID', DeviceType::TABLET ], + 'SC-72J' => [ 'Supersonic', 'Matrix SC-72J', DeviceType::TABLET ], + 'SC-72JB' => [ 'Supersonic', 'Matrix SC-72JB', DeviceType::TABLET ], + 'SC-72JB Fast' => [ 'Supersonic', 'Matrix SC-72JB', DeviceType::TABLET ], + 'SC-72MID' => [ 'Supersonic', 'Matrix SC-72MID', DeviceType::TABLET ], + 'SC-74JB' => [ 'Supersonic', 'Matrix SC-74JB', DeviceType::TABLET ], + 'SC-75MID' => [ 'Supersonic', 'Matrix SC-75MID', DeviceType::TABLET ], + 'SC-90JB' => [ 'Supersonic', 'Matrix SC-90JB', DeviceType::TABLET ], + 'SC-90MID' => [ 'Supersonic', 'Matrix SC-90MID', DeviceType::TABLET ], + 'SC-91JB' => [ 'Supersonic', 'Matrix SC-91JB', DeviceType::TABLET ], + 'SC-91MID' => [ 'Supersonic', 'Matrix SC-91MID', DeviceType::TABLET ], + ], + + 'SUGAR ([A-Z][0-9]?(?: Pro)?)!' => [ 'SUGAR', '$1', DeviceType::TABLET ], + 'SUPRA (M[0-9]{2,3}[A-Z]{0,2})!' => [ 'SUPRA', '$1', DeviceType::TABLET ], + 'Fablet F3' => [ 'Swipe', 'Fablet F3' ], + 'SYTABEX7-2' => [ 'Sylvania', 'SYTABEX7', DeviceType::TABLET ], + + '(Symphony|Xplorer)!!' => [ + 'Symphony R100' => [ 'Symphony', 'R100' ], + 'Symphony S101' => [ 'Symphony', 'S101' ], + 'Symphony Play W17' => [ 'Symphony', 'Play W17' ], + 'Xplorer T7i' => [ 'Symphony', 'Xplorer T7i', DeviceType::TABLET ], + 'Xplorer T8i' => [ 'Symphony', 'Xplorer T8i', DeviceType::TABLET ], + 'Symphony T8Q' => [ 'Symphony', 'Xplorer T8Q', DeviceType::TABLET ], + 'SYMPHONY E76' => [ 'Symphony', 'Xplorer E76' ], + 'Xplorer H20' => [ 'Symphony', 'Xplorer H20' ], + 'SYMPHONY H50' => [ 'Symphony', 'Xplorer H50' ], + 'Symphony H100' => [ 'Symphony', 'Xplorer H100' ], + 'Xplorer H200' => [ 'Symphony', 'Xplorer H200' ], + 'Symphony Xplorer P6' => [ 'Symphony', 'Xplorer P6' ], + 'Symphony P7' => [ 'Symphony', 'Xplorer P7' ], + 'Symphony Xplorer P8' => [ 'Symphony', 'Xplorer P8' ], + 'Symphony W10' => [ 'Symphony', 'Xplorer W10' ], + 'Xplorer W12' => [ 'Symphony', 'Xplorer W12' ], + 'Symphony W15' => [ 'Symphony', 'Xplorer W15' ], + 'Symphony Xplorer W15i' => [ 'Symphony', 'Xplorer W15i' ], + 'Symphony Xplorer W16' => [ 'Symphony', 'Xplorer W16' ], + 'Symphony W18' => [ 'Symphony', 'Xplorer W18' ], + 'Symphony Xplorer W21' => [ 'Symphony', 'Xplorer W21' ], + 'Symphony Xplorer W22' => [ 'Symphony', 'Xplorer W22' ], + 'Symphony W25' => [ 'Symphony', 'Xplorer W25' ], + 'Symphony Xplorer W31' => [ 'Symphony', 'Xplorer W31' ], + 'Symphony Xplorer W32' => [ 'Symphony', 'Xplorer W32' ], + 'Symphony Xplorer W35' => [ 'Symphony', 'Xplorer W35' ], + 'Symphony W65' => [ 'Symphony', 'Xplorer W65' ], + 'Symphony W65i' => [ 'Symphony', 'Xplorer W65i' ], + 'Symphony W66' => [ 'Symphony', 'Xplorer W66' ], + 'Symphony W67' => [ 'Symphony', 'Xplorer W67' ], + 'Symphony W68' => [ 'Symphony', 'Xplorer W68' ], + 'Symphony W68Q' => [ 'Symphony', 'Xplorer W68Q' ], + 'Symphony W69' => [ 'Symphony', 'Xplorer W69' ], + 'Symphony Xplorer W69Q' => [ 'Symphony', 'Xplorer W69Q' ], + 'Symphony Xplorer W70Q' => [ 'Symphony', 'Xplorer W70Q' ], + 'Symphony Xplorer W71' => [ 'Symphony', 'Xplorer W71' ], + 'Symphony Xplorer W71i' => [ 'Symphony', 'Xplorer W71i' ], + 'Symphony W72' => [ 'Symphony', 'Xplorer W72' ], + 'Symphony W82' => [ 'Symphony', 'Xplorer W82' ], + 'Symphony W85' => [ 'Symphony', 'Xplorer W85' ], + 'Symphony Xplorer W86' => [ 'Symphony', 'Xplorer W86' ], + 'SYMPHONY W90' => [ 'Symphony', 'Xplorer W90' ], + 'Symphony W91' => [ 'Symphony', 'Xplorer W91' ], + 'Symphony W92' => [ 'Symphony', 'Xplorer W92' ], + 'Symphony W94' => [ 'Symphony', 'Xplorer W94' ], + 'Symphony W95' => [ 'Symphony', 'Xplorer W95' ], + 'Xplorer W125' => [ 'Symphony', 'Xplorer W125' ], + 'Symphony W125' => [ 'Symphony', 'Xplorer W125' ], + 'Symphony W128' => [ 'Symphony', 'Xplorer W128' ], + 'Symphony W130' => [ 'Symphony', 'Xplorer W130' ], + 'Symphony Xplorer w130' => [ 'Symphony', 'Xplorer W130' ], + 'Symphony Xplorer W140' => [ 'Symphony', 'Xplorer W140' ], + 'Symphony W160' => [ 'Symphony', 'Xplorer W160' ], + 'Symphony ZII' => [ 'Symphony', 'Xplorer ZI' ], + 'Xplorer Z III' => [ 'Symphony', 'Xplorer ZIII' ], + 'Xplorer ZV' => [ 'Symphony', 'Xplorer ZV' ], + 'Symphony ZIV' => [ 'Symphony', 'Xplorer ZIV' ], + 'Symphony Z9' => [ 'Symphony', 'Xplorer Z9' ], + ], + + 'W20' => [ 'Symphony', 'Xplorer W20' ], + 'ZVII' => [ 'Symphony', 'Xplorer ZVII' ], + 'Roar A50' => [ 'Symphony', 'Roar A50' ], + 'Roar V25' => [ 'Symphony', 'Roar V25' ], + 'Synrgic Uno M1' => [ 'Synrgic', 'Uno M1' ], + + 'T-Smart!!' => [ + 'T-smart D18X' => [ 'T-smart', 'D18X' ], + 'T-smart D28' => [ 'T-smart', 'D28' ], + 'T-smart D28X' => [ 'T-smart', 'D28X' ], + 'T-SmartD58X' => [ 'T-smart', 'D58X' ], + 'T-smart D58X' => [ 'T-smart', 'D58X' ], + 'T-smart D68X' => [ 'T-smart', 'D68X' ], + 'T-SmartD98X' => [ 'T-smart', 'D98X' ], + 'T-smart G18' => [ 'T-smart', 'G18' ], + 'T-smart G28' => [ 'T-smart', 'G28' ], + 'T-smart G58' => [ 'T-smart', 'G58' ], + 'T-smart I08' => [ 'T-smart', 'I08' ], + 'T-smart I58 TD' => [ 'T-smart', 'I58' ], + 'T-smart L818' => [ 'T-smart', 'L818' ], + ], + + 'Tabra QAV801' => [ 'Tabra', 'QAV801', DeviceType::TABLET ], + + 'TCL!!' => [ + 'TCL-309T' => [ 'TCL', '309T' ], + 'TCL-550' => [ 'TCL', '550' ], + 'TCL 580' => [ 'TCL', '580' ], + 'TCL 750' => [ 'TCL', '750' ], + 'TCL 919' => [ 'TCL', '919' ], + 'TCL A506' => [ 'TCL', 'A506' ], + 'TCL A510' => [ 'TCL', 'A510' ], + 'TCL A860' => [ 'TCL', 'A860' ], + 'TCL A865' => [ 'TCL', 'A865' ], + 'TCL A890!' => [ 'TCL', 'A890' ], + 'TCL A906' => [ 'TCL', 'A906' ], + 'TCL A909' => [ 'TCL', 'A909' ], + 'TCL A916' => [ 'TCL', 'A916' ], + 'TCL A919' => [ 'TCL', 'A919' ], + 'TCL A966' => [ 'TCL', 'A966' ], + 'TCL A966 RUS' => [ 'TCL', 'A966' ], + 'TCL A968' => [ 'TCL', 'A968' ], + 'TCL A980' => [ 'TCL', 'A980' ], + 'TCL A986' => [ 'TCL', 'A986' ], + 'TCL A988' => [ 'TCL', 'A988' ], + 'TCL A990' => [ 'TCL', 'A990' ], + 'TCL[- ]A996!' => [ 'TCL', 'A996' ], + 'TCL A998' => [ 'TCL', 'A998' ], + 'TCL C990' => [ 'TCL', 'C990' ], + 'TCL C990+' => [ 'TCL', 'C990+' ], + 'TCL C995' => [ 'TCL', 'C995' ], + 'TCL D35' => [ 'TCL', 'D35' ], + 'TCL D40 DUAL' => [ 'TCL', 'D40' ], + 'TCL D55' => [ 'TCL', 'D55' ], + 'TCL D515' => [ 'TCL', 'D515' ], + 'TCL-D662' => [ 'TCL', 'D662' ], + 'TCL D662' => [ 'TCL', 'D662' ], + 'TCL-D668' => [ 'TCL', 'D668' ], + 'TCL D668' => [ 'TCL', 'D668' ], + 'TCL D706' => [ 'TCL', 'D706' ], + 'TCL D768' => [ 'TCL', 'D768' ], + 'TCL-D768' => [ 'TCL', 'D768' ], + 'TCL D920' => [ 'TCL', 'D920' ], + 'TCL-D920' => [ 'TCL', 'D920' ], + 'TCL GENESEE E708' => [ 'TCL', 'Genesee E708' ], + 'TCL-E906' => [ 'TCL', 'E906' ], + 'TCL E928' => [ 'TCL', 'E928' ], + 'TCL H900M' => [ 'TCL', 'H900M' ], + 'TCL i708U' => [ 'TCL', 'i708U' ], + 'TCL i709M' => [ 'TCL', 'i709M' ], + 'TCL i718M' => [ 'TCL', 'i718M' ], + 'TCL i800' => [ 'TCL', 'i800' ], + 'TCL i806' => [ 'TCL', 'i806' ], + 'TCL J210' => [ 'TCL', 'J210' ], + 'TCL J210C' => [ 'TCL', 'J210' ], + 'TCL-J210C' => [ 'TCL', 'J210' ], + 'TCL J300' => [ 'TCL', 'J300' ], + 'TCL J305T' => [ 'TCL', 'J305' ], + 'TCL J310' => [ 'TCL', 'J310' ], + 'TCL J320' => [ 'TCL', 'J320' ], + 'TCL J320C' => [ 'TCL', 'J320' ], + 'TCL-J320D' => [ 'TCL', 'J320' ], + 'TCL J320D' => [ 'TCL', 'J320' ], + 'TCL J320T' => [ 'TCL', 'J320' ], + 'TCL J600T' => [ 'TCL', 'J600' ], + 'TCL J610' => [ 'TCL', 'J610' ], + 'TCL J620' => [ 'TCL', 'J620' ], + 'TCL J630T' => [ 'TCL', 'J630' ], + 'TCL J636D' => [ 'TCL', 'J636' ], + 'TCL J636D+' => [ 'TCL', 'J636' ], + 'TCL J706T' => [ 'TCL', 'J706' ], + 'TCL J720' => [ 'TCL', 'J720' ], + 'TCL J726T' => [ 'TCL', 'J726' ], + 'TCL-J736L' => [ 'TCL', 'J736' ], + 'TCL J738M' => [ 'TCL', 'J738' ], + 'TCL J900' => [ 'TCL', 'J900' ], + 'TCL-J900C' => [ 'TCL', 'J900' ], + 'TCL J900T' => [ 'TCL', 'J900' ], + 'TCL J920' => [ 'TCL', 'J9260' ], + 'TCL J926T' => [ 'TCL', 'J926' ], + 'TCL J928' => [ 'TCL', 'J928' ], + 'TCL-J929L' => [ 'TCL', 'J929' ], + 'TCL J936D' => [ 'TCL', 'J936' ], + 'TCL J938M' => [ 'TCL', 'J938' ], + 'TCL M2L' => [ 'TCL', 'M2L' ], + 'TCL M2M' => [ 'TCL', 'M2M' ], + 'TCL M2U' => [ 'TCL', 'M2U' ], + 'TCL M3G' => [ 'TCL', 'M3G' ], + 'TCL TK8263!' => [ 'TCL', 'TK8263' ], + 'TCL P301C' => [ 'TCL', 'P301' ], + 'TCL P301M' => [ 'TCL', 'P301' ], + 'TCL P302C' => [ 'TCL', 'P302' ], + 'TCL-P306C' => [ 'TCL', 'P306' ], + 'TCL-P308L' => [ 'TCL', 'P308' ], + 'TCL P308L' => [ 'TCL', 'P308' ], + 'TCL P308M' => [ 'TCL', 'P308' ], + 'TCL-P316L' => [ 'TCL', 'P316' ], + 'TCL P316L' => [ 'TCL', 'P316' ], + 'TCL-P318L' => [ 'TCL', 'P318' ], + 'TCL P331M' => [ 'TCL', 'P331' ], + 'TCL P332U' => [ 'TCL', 'P332' ], + 'TCL P335M' => [ 'TCL', 'P335' ], + 'TCL P360W' => [ 'TCL', 'P360' ], + 'TCL P500M' => [ 'TCL', 'P500' ], + 'TCL P501M' => [ 'TCL', 'P501' ], + 'TCL P502U' => [ 'TCL', 'P502' ], + 'TCL-P516L' => [ 'TCL', 'P516' ], + 'TCL P518L' => [ 'TCL', 'P518' ], + 'TCL-P520L' => [ 'TCL', 'P520' ], + 'TCL P520L' => [ 'TCL', 'P520' ], + 'TCL P528D' => [ 'TCL', 'P528' ], + 'TCL P560M' => [ 'TCL', 'P560' ], + 'TCL P561U' => [ 'TCL', 'P561' ], + 'TCL-P580L' => [ 'TCL', 'P580' ], + 'TCL-P588L' => [ 'TCL', 'P588' ], + 'TCL P588L' => [ 'TCL', 'P588' ], + 'TCL-P590L' => [ 'TCL', 'P590' ], + 'TCL P590L' => [ 'TCL', 'P590' ], + 'TCL P600' => [ 'TCL', 'P600' ], + 'TCL P606!' => [ 'TCL', 'P606' ], + 'TCL P618L' => [ 'TCL', 'P618' ], + 'TCL-P618L' => [ 'TCL', 'P618' ], + 'TCL P620M' => [ 'TCL', 'P620' ], + 'TCL P631M' => [ 'TCL', 'P631' ], + 'TCL P650M' => [ 'TCL', 'P650' ], + 'TCL-P668L' => [ 'TCL', 'P668' ], + 'TCL P688L' => [ 'TCL', 'P688' ], + 'TCL P689L' => [ 'TCL', 'P689' ], + 'TCL-P688L' => [ 'TCL', 'P688' ], + 'TCL P728M' => [ 'TCL', 'P728' ], + 'TCL P900' => [ 'TCL', 'P900' ], + 'TCL S300T' => [ 'TCL', 'S300' ], + 'TCL S500' => [ 'TCL', 'S500' ], + 'TCL S520' => [ 'TCL', 'S520' ], + 'TCL S530T' => [ 'TCL', 'S530' ], + '(TCL )?S600!' => [ 'TCL', 'S600' ], + 'TCL S700' => [ 'TCL', 'S700' ], + 'TCL S700T' => [ 'TCL', 'S700' ], + 'TCL S710' => [ 'TCL', 'S710' ], + 'TCL S720' => [ 'TCL', 'S720' ], + 'TCL S720T' => [ 'TCL', 'S720' ], + 'TCL S725T' => [ 'TCL', 'S725' ], + 'TCL S800' => [ 'TCL', 'S800' ], + 'TCL-S806' => [ 'TCL', 'S806' ], + 'TCL S810' => [ 'TCL', 'S810' ], + 'TCL S820' => [ 'TCL', 'S820' ], + 'TCL S826L' => [ 'TCL', 'S826' ], + 'TCL S830' => [ 'TCL', 'S830' ], + 'TCL S830U' => [ 'TCL', 'S830' ], + 'TCL S838M' => [ 'TCL', 'S838' ], + 'TCL S850' => [ 'TCL', 'S850' ], + 'TCL S850L' => [ 'TCL', 'S850' ], + 'TCL-S850L' => [ 'TCL', 'S850' ], + 'TCL S860' => [ 'TCL', 'S860' ], + 'TCL S900' => [ 'TCL', 'S900' ], + 'TCL S950!' => [ 'TCL', 'S950' ], + 'TCL S960!' => [ 'TCL', 'S960' ], + 'TCL T500L' => [ 'TCL', 'T500' ], + 'TCL U980' => [ 'TCL', 'U980' ], + 'TCL W939' => [ 'TCL', 'W939' ], + 'TCL W969' => [ 'TCL', 'W969' ], + 'TCLW989' => [ 'TCL', 'W989' ], + 'TCL Y710' => [ 'TCL', 'Y710' ], + 'TCL Y900' => [ 'TCL', 'Y900' ], + 'TCL Y910' => [ 'TCL', 'Hero N3' ], + 'TCL Y910T' => [ 'TCL', 'Hero N3' ], + 'TCL TAB 7' => [ 'TCL', 'Tab 7', DeviceType::TABLET ], + 'TCL Google TV TV' => [ 'TCL', 'MoVo UD TV', DeviceType::TELEVISION, Flag::GOOGLETV ], + ], + + 'TECNO!!' => [ + 'TECNO-A7' => [ 'Tecno', 'Phantom Z' ], + 'TECNO B3' => [ 'Tecno', 'B3' ], + 'TECNO B5S' => [ 'Tecno', 'B5S' ], + 'TECNO-C5' => [ 'Tecno', 'C5' ], + 'TECNO C5' => [ 'Tecno', 'C5' ], + 'TECNO-C5S' => [ 'Tecno', 'C5S' ], + 'TECNO-C7' => [ 'Tecno', 'C7' ], + 'TECNO-C8' => [ 'Tecno', 'C8' ], + 'TECNO-CAMON C8' => [ 'Tecno', 'C8' ], + 'TECNO-C9' => [ 'Tecno', 'C9' ], + 'TECNO CX Air' => [ 'Tecno', 'Camon CX Air' ], + 'TECNO D1' => [ 'Tecno', 'D1' ], + 'TECNO D1E' => [ 'Tecno', 'D1E' ], + 'TECNO D3' => [ 'Tecno', 'D3' ], + 'TECNO D5' => [ 'Tecno', 'D5' ], + 'TECNO D7' => [ 'Tecno', 'D7' ], + 'TECNO D9' => [ 'Tecno', 'D9' ], + 'TECNO F5' => [ 'Tecno', 'F5' ], + 'TECNO F6' => [ 'Tecno', 'F6' ], + 'TECNO F7' => [ 'Tecno', 'Phantom A' ], + 'TECNO F8' => [ 'Tecno', 'Phantom AII' ], + 'TECNO G9' => [ 'Tecno', 'Phantom Pad 2', DeviceType::TABLET ], + 'TECNO-H3' => [ 'Tecno', 'H3' ], + 'TECNO H3' => [ 'Tecno', 'H3' ], + 'TECNO H5' => [ 'Tecno', 'H5' ], + 'TECNO H6' => [ 'Tecno', 'H6' ], + 'TECNO H7' => [ 'Tecno', 'H7' ], + 'TECNO-J5' => [ 'Tecno', 'J5' ], + 'TECNO-J7' => [ 'Tecno', 'J7' ], + 'TECNO J7' => [ 'Tecno', 'J7' ], + 'TECNO-J8' => [ 'Tecno', 'J8' ], + 'TECNO L3' => [ 'Tecno', 'L3' ], + 'TECNO-L5' => [ 'Tecno', 'L5' ], + 'TECNO L6' => [ 'Tecno', 'L6' ], + 'TECNO L7' => [ 'Tecno', 'L7' ], + 'TECNO-L8' => [ 'Tecno', 'L8' ], + 'TECNO-L8Plus' => [ 'Tecno', 'L8 Plus' ], + 'TECNO M3' => [ 'Tecno', 'M3' ], + 'TECNO-M3' => [ 'Tecno', 'M3' ], + 'TECNO M3M' => [ 'Tecno', 'M3M' ], + 'TECNO M3S' => [ 'Tecno', 'M3S' ], + 'TECNO M5' => [ 'Tecno', 'M5' ], + 'TECNO M6' => [ 'Tecno', 'M6' ], + 'TECNO-M6S' => [ 'Tecno', 'M6S' ], + 'TECNO M7' => [ 'Tecno', 'M7' ], + 'TECNO M9' => [ 'Tecno', 'Phantom AIII' ], + 'TECNO-N2' => [ 'Tecno', 'N2' ], + 'TECNO-N2S' => [ 'Tecno', 'N2S' ], + 'TECNO N3' => [ 'Tecno', 'N3' ], + 'TECNO N3S' => [ 'Tecno', 'N3S' ], + 'TECNO N5' => [ 'Tecno', 'N5' ], + 'TECNO N5S' => [ 'Tecno', 'N5S' ], + 'TECNO N6S' => [ 'Tecno', 'N6S' ], + 'TECNO-N6S' => [ 'Tecno', 'N6S' ], + 'TECNO N7' => [ 'Tecno', 'N7' ], + 'TECNO-N9' => [ 'Tecno', 'Phantom Pad', DeviceType::TABLET ], + 'TECNO N9' => [ 'Tecno', 'Phantom Pad', DeviceType::TABLET ], + 'TECNO P3' => [ 'Tecno', 'P3' ], + 'TECNO P3S' => [ 'Tecno', 'P3S' ], + 'TECNO P5' => [ 'Tecno', 'P5' ], + 'TECNO P5 PLUS' => [ 'Tecno', 'P5 Plus' ], + 'TECNO P5S' => [ 'Tecno', 'P5S' ], + 'TECNO P6' => [ 'Tecno', 'P6' ], + 'TECNO P9' => [ 'Tecno', 'Phantom Pad Mini', DeviceType::TABLET ], + 'TECNO Q1' => [ 'Tecno', 'Q1' ], + 'TECNO R5' => [ 'Tecno', 'R5' ], + 'TECNO R7' => [ 'Tecno', 'R7' ], + 'TECNO S3' => [ 'Tecno', 'S3' ], + 'TECNO S3+' => [ 'Tecno', 'S3+' ], + 'TECNO S3C' => [ 'Tecno', 'S3C' ], + 'TECNO S3M' => [ 'Tecno', 'S3M' ], + 'TECNO S5' => [ 'Tecno', 'S5' ], + 'TECNO S7' => [ 'Tecno', 'S7' ], + 'TECNO S9' => [ 'Tecno', 'S9' ], + 'TECNO S9S' => [ 'Tecno', 'S9S' ], + 'TECNO T1' => [ 'Tecno', 'T1' ], + 'TECNO T3' => [ 'Tecno', 'T3' ], + 'TECNO W1' => [ 'Tecno', 'W1' ], + 'TECNO W2' => [ 'Tecno', 'W2' ], + 'TECNO-W3' => [ 'Tecno', 'W3' ], + 'TECNO-W3LTE' => [ 'Tecno', 'W3' ], + 'TECNO-W4' => [ 'Tecno', 'W4' ], + 'TECNO W4' => [ 'Tecno', 'W4' ], + 'TECNO-W5' => [ 'Tecno', 'W5' ], + 'TECNO W5 Lite' => [ 'Tecno', 'W5 Lite' ], + 'TECNO WX3LTE' => [ 'Tecno', 'WX3' ], + 'TECNO-Y2' => [ 'Tecno', 'Y2' ], + 'TECNO-Y3' => [ 'Tecno', 'Y3' ], + 'TECNO-Y3+' => [ 'Tecno', 'Y3+' ], + 'TECNO-Y4' => [ 'Tecno', 'Y4' ], + 'TECNO-Y5' => [ 'Tecno', 'Y5' ], + 'TECNO-Y5S' => [ 'Tecno', 'Y5S' ], + 'TECNO-Y6' => [ 'Tecno', 'Y6' ], + 'TECNO 7C' => [ 'Tecno', 'DroiPad 7', DeviceType::TABLET ], + 'TECNO 7CS' => [ 'Tecno', 'DroiPad 7', DeviceType::TABLET ], + 'TECNO DP7CPRO' => [ 'Tecno', 'DroiPad 7C Pro', DeviceType::TABLET ], + 'TECNO P701' => [ 'Tecno', 'DroiPad 7D', DeviceType::TABLET ], + 'TECNO 8H' => [ 'Tecno', 'DroiPad 8', DeviceType::TABLET ], + 'TECNO P904' => [ 'Tecno', 'DroiPad 10D', DeviceType::TABLET ], + 'TECNO DP10A' => [ 'Tecno', 'DroiPad 10 Pro II', DeviceType::TABLET ], + ], + + 'L3' => [ 'Tecno', 'L3' ], + 'Xtab1081HD' => [ 'Techtab', 'Xtab 1081 HD', DeviceType::TABLET ], + 'Teclast A10' => [ 'Teclast', 'A10', DeviceType::TABLET ], + 'A10H(D5W6)' => [ 'Teclast', 'A10H', DeviceType::TABLET ], + 'A10HD(N9A3)' => [ 'Teclast', 'A10HD', DeviceType::TABLET ], + 'A10t(5DM3)' => [ 'Teclast', 'A10T', DeviceType::TABLET ], + 'A10T(8DM1)' => [ 'Teclast', 'A10T', DeviceType::TABLET ], + 'A11(M5A7)' => [ 'Teclast', 'A11', DeviceType::TABLET ], + 'A11s(M5A7)' => [ 'Teclast', 'A11s', DeviceType::TABLET ], + 'A15(E6C2)' => [ 'Teclast', 'A15', DeviceType::TABLET ], + 'A70(CY6T)' => [ 'Teclast', 'A70', DeviceType::TABLET ], + 'A78h四核(C1V3)' => [ 'Teclast', 'A78h', DeviceType::TABLET ], + 'A80håŒæ ¸(A4P9)' => [ 'Teclast', 'A80h', DeviceType::TABLET ], + 'A80 se??(M5MA)' => [ 'Teclast', 'A80se', DeviceType::TABLET ], + 'A80 se四核(M5MC)' => [ 'Teclast', 'A80se', DeviceType::TABLET ], + 'A80HD四核(C4H6)' => [ 'Teclast', 'A80HD', DeviceType::TABLET ], + 'A88 mini四核(M1C5)' => [ 'Teclast', 'A88 mini', DeviceType::TABLET ], + 'G17(B5DV)' => [ 'Teclast', 'G17', DeviceType::TABLET ], + 'G17(B7DV)' => [ 'Teclast', 'G17', DeviceType::TABLET ], + 'G17h 3G??(K5E2)' => [ 'Teclast', 'G17h', DeviceType::TABLET ], + 'G17h 3G??(K6E2' => [ 'Teclast', 'G17h', DeviceType::TABLET ], + 'G17h 3G四核(K5E2)' => [ 'Teclast', 'G17h', DeviceType::TABLET ], + 'G17h 3G四核(K6E2)' => [ 'Teclast', 'G17h', DeviceType::TABLET ], + 'G17s 3G' => [ 'Teclast', 'G17s', DeviceType::TABLET ], + 'G17s 3G??(K5E5)' => [ 'Teclast', 'G17s', DeviceType::TABLET ], + 'G17s 3G四核(K5E5)' => [ 'Teclast', 'G17s', DeviceType::TABLET ], + 'G17s 3G四核(K5E4)' => [ 'Teclast', 'G17s', DeviceType::TABLET ], + 'G17s 3G四核(K5E3)' => [ 'Teclast', 'G17s', DeviceType::TABLET ], + 'G18 3G四核(C6B9)' => [ 'Teclast', 'G18', DeviceType::TABLET ], + 'G18mini(C5B9)' => [ 'Teclast', 'G18 mini', DeviceType::TABLET ], + 'G18d 3G四核(D3A2)' => [ 'Teclast', 'G18d', DeviceType::TABLET ], + 'G18d mini(FV2C)' => [ 'Teclast', 'G18d mini', DeviceType::TABLET ], + 'P10HD??(E6NA)' => [ 'Teclast', 'P10HD', DeviceType::TABLET ], + 'P11HD' => [ 'Teclast', 'P11HD', DeviceType::TABLET ], + 'P11HD四核(G9X6)' => [ 'Teclast', 'P11HD', DeviceType::TABLET ], + 'P11HD??(G9X6)' => [ 'Teclast', 'P11HD', DeviceType::TABLET ], + 'P11HD四核(G9X7)' => [ 'Teclast', 'P11HD', DeviceType::TABLET ], + 'P19HD(E1K3)' => [ 'Teclast', 'P19HD', DeviceType::TABLET ], + 'P19HD(E1K5)' => [ 'Teclast', 'P19HD', DeviceType::TABLET ], + 'P70 3Gå…«æ ¸(C2B7)' => [ 'Teclast', 'P70 3G', DeviceType::TABLET ], + 'P70h(A5C2)' => [ 'Teclast', 'P70h', DeviceType::TABLET ], + 'P72' => [ 'Teclast', 'P72', DeviceType::TABLET ], + 'P72w' => [ 'Teclast', 'P72w', DeviceType::TABLET ], + 'P75a(G7E3)' => [ 'Teclast', 'P75a', DeviceType::TABLET ], + 'P75HD(M3E5)' => [ 'Teclast', 'P75HD', DeviceType::TABLET ], + 'P76a(K3G5)' => [ 'Teclast', 'P76a', DeviceType::TABLET ], + 'P76aåŒæ ¸(M4Q5)' => [ 'Teclast', 'P76a', DeviceType::TABLET ], + 'Teclast P76e!' => [ 'Teclast', 'P76e', DeviceType::TABLET ], + 'P76e(A3E1)' => [ 'Teclast', 'P76e', DeviceType::TABLET ], + 'P76e(G6R8)' => [ 'Teclast', 'P76e', DeviceType::TABLET ], + 'P76håŒæ ¸(K8V1)' => [ 'Teclast', 'P76h', DeviceType::TABLET ], + 'P76såŒæ ¸(DKH5)' => [ 'Teclast', 'P76s', DeviceType::TABLET ], + 'P76TI' => [ 'Teclast', 'P76Ti', DeviceType::TABLET ], + 'P76v(A3V5)' => [ 'Teclast', 'P76v', DeviceType::TABLET ], + 'P78åŒæ ¸(G1M5)' => [ 'Teclast', 'P78', DeviceType::TABLET ], + 'P78s(G1M5)' => [ 'Teclast', 'P78s', DeviceType::TABLET ], + 'P78s(G1M6)' => [ 'Teclast', 'P78s', DeviceType::TABLET ], + 'P78s(G1M7)' => [ 'Teclast', 'P78s', DeviceType::TABLET ], + 'P78HD四核(C4A5)' => [ 'Teclast', 'P78HD', DeviceType::TABLET ], + 'P78HD??(C4A5)' => [ 'Teclast', 'P78HD', DeviceType::TABLET ], + 'P79HD(A3V9)' => [ 'Teclast', 'P79HD', DeviceType::TABLET ], + 'P79HD 3G(C4K5)' => [ 'Teclast', 'P79HD 3G', DeviceType::TABLET ], + 'P80 四核 (BV8K)' => [ 'Teclast', 'P80', DeviceType::TABLET ], + 'P80 四核 (BV9K)' => [ 'Teclast', 'P80', DeviceType::TABLET ], + 'P80s 四核(EF6W)' => [ 'Teclast', 'P80s', DeviceType::TABLET ], + 'P80 3G四核 (B1KC)' => [ 'Teclast', 'P80 3G', DeviceType::TABLET ], + 'P80 3G四核 (B4KC)' => [ 'Teclast', 'P80 3G', DeviceType::TABLET ], + 'P80 3Gå…«æ ¸(A4LL)' => [ 'Teclast', 'P80 3G', DeviceType::TABLET ], + 'P80 3Gå…«æ ¸(A5LL)' => [ 'Teclast', 'P80 3G', DeviceType::TABLET ], + 'P80 3Gå…«æ ¸(A6LL)' => [ 'Teclast', 'P80 3G', DeviceType::TABLET ], + 'P80 4G(K2G3)' => [ 'Teclast', 'P80 4G', DeviceType::TABLET ], + 'P81HD' => [ 'Teclast', 'P81HD', DeviceType::TABLET ], + 'P85(A9D3)' => [ 'Teclast', 'P85', DeviceType::TABLET ], + 'P85(A9D5)' => [ 'Teclast', 'P85', DeviceType::TABLET ], + 'P85(R8A1)' => [ 'Teclast', 'P85', DeviceType::TABLET ], + 'Teclast P85!' => [ 'Teclast', 'P85', DeviceType::TABLET ], + 'P85mini(DT8W)' => [ 'Teclast', 'P85 mini', DeviceType::TABLET ], + 'P85s mini(EWE8)' => [ 'Teclast', 'P85s mini', DeviceType::TABLET ], + 'P85t mini(KW8P)' => [ 'Teclast', 'P85t mini', DeviceType::TABLET ], + 'P85HDåŒæ ¸(K6N2)' => [ 'Teclast', 'P85HD', DeviceType::TABLET ], + 'P86(F8G6)' => [ 'Teclast', 'P86', DeviceType::TABLET ], + 'P88åŒæ ¸(H3D7)' => [ 'Teclast', 'P88', DeviceType::TABLET ], + 'P88(H3D7)' => [ 'Teclast', 'P88', DeviceType::TABLET ], + 'P88(GT4K)' => [ 'Teclast', 'P88', DeviceType::TABLET ], + 'P88s mini??(F2V6)' => [ 'Teclast', 'P88s mini', DeviceType::TABLET ], + 'P88s mini四核(F2V7)' => [ 'Teclast', 'P88s mini', DeviceType::TABLET ], + 'P88HD(C5GV)' => [ 'Teclast', 'P88HD', DeviceType::TABLET ], + 'P89 3Gå…«æ ¸(D1H8)' => [ 'Teclast', 'P89 3G', DeviceType::TABLET ], + 'P89 3Gk8(D1H8)' => [ 'Teclast', 'P89 3G', DeviceType::TABLET ], + 'P89mini(E2W6)' => [ 'Teclast', 'P89 mini', DeviceType::TABLET ], + 'P89 mini(E2W6)' => [ 'Teclast', 'P89 mini', DeviceType::TABLET ], + 'P89s(F8A5)' => [ 'Teclast', 'P89s', DeviceType::TABLET ], + 'P89s mini(F8A2)' => [ 'Teclast', 'P89s mini', DeviceType::TABLET ], + 'P90(H3U6)' => [ 'Teclast', 'P90', DeviceType::TABLET ], + 'P90(H3U7)' => [ 'Teclast', 'P90', DeviceType::TABLET ], + 'P98(F2K9)' => [ 'Teclast', 'P98', DeviceType::TABLET ], + 'P98 å…«æ ¸(B9A3)' => [ 'Teclast', 'P98', DeviceType::TABLET ], + 'P98 3Gk8(A4HY)' => [ 'Teclast', 'P98', DeviceType::TABLET ], + 'P98 3G??(A4HY)' => [ 'Teclast', 'P98', DeviceType::TABLET ], + 'P98 3G(M1Q2)' => [ 'Teclast', 'P98 3G', DeviceType::TABLET ], + 'P98 3Gå…«æ ¸(A3HY)' => [ 'Teclast', 'P98 3G', DeviceType::TABLET ], + 'P98 3Gå…«æ ¸(A4HY)' => [ 'Teclast', 'P98 3G', DeviceType::TABLET ], + 'P98 4G??(A8H6)' => [ 'Teclast', 'P98 4G', DeviceType::TABLET ], + 'P98 Air?? (C6V8)' => [ 'Teclast', 'P98 Air', DeviceType::TABLET ], + 'P98Air(C6V8)' => [ 'Teclast', 'P98 Air', DeviceType::TABLET ], + 'P98HD(A2Q6)' => [ 'Teclast', 'P98HD', DeviceType::TABLET ], + 'P98HD+M6' => [ 'Teclast', 'P98HD', DeviceType::TABLET ], + 'P98T(K3C4)' => [ 'Teclast', 'P98T', DeviceType::TABLET ], + 'T98 4G??(C6R2)' => [ 'Teclast', 'T98', DeviceType::TABLET ], + 'T720 SE' => [ 'Teclast', 'T720', DeviceType::TABLET ], + 'T760 from moage.com' => [ 'Teclast', 'T760', DeviceType::TABLET ], + 'X10H(G3C5)' => [ 'Teclast', 'X10H', DeviceType::TABLET ], + 'X10HD 3G(M6K6)' => [ 'Teclast', 'X10HD 3G', DeviceType::TABLET ], + 'X16 Plus(D3A5)' => [ 'Teclast', 'X16 Plus', DeviceType::TABLET ], + 'X16 Power(D6F7)' => [ 'Teclast', 'X16 Power', DeviceType::TABLET ], + 'X16 PRO(D6F8)' => [ 'Teclast', 'X16 Pro', DeviceType::TABLET ], + 'X16HD (K3J3)' => [ 'Teclast', 'X16HD', DeviceType::TABLET ], + 'X16HD 3G(M5J4)' => [ 'Teclast', 'X16HD 3G', DeviceType::TABLET ], + 'X16HD 3G(M5J5)' => [ 'Teclast', 'X16HD 3G', DeviceType::TABLET ], + 'X16HD 3G(M5J5' => [ 'Teclast', 'X16HD 3G', DeviceType::TABLET ], + 'X16HD 3G(M5J6)' => [ 'Teclast', 'X16HD 3G', DeviceType::TABLET ], + 'X70(C6F9)' => [ 'Teclast', 'X70', DeviceType::TABLET ], + 'X70 3G (C5D9)' => [ 'Teclast', 'X70 3G', DeviceType::TABLET ], + 'X70 R(C7F9)' => [ 'Teclast', 'X70 R', DeviceType::TABLET ], + 'X70 R(C8F9)' => [ 'Teclast', 'X70 R', DeviceType::TABLET ], + 'X80(C4M5)' => [ 'Teclast', 'X80', DeviceType::TABLET ], + 'Teclast X80h' => [ 'Teclast', 'X80h', DeviceType::TABLET ], + 'X80h' => [ 'Teclast', 'X80h', DeviceType::TABLET ], + 'X80h(FB5M)' => [ 'Teclast', 'X80h', DeviceType::TABLET ], + 'X80h(FB6M)' => [ 'Teclast', 'X80h', DeviceType::TABLET ], + 'X80HD' => [ 'Teclast', 'X80HD', DeviceType::TABLET ], + 'X80HD(G2N3)' => [ 'Teclast', 'X80HD', DeviceType::TABLET ], + 'X80HD(G2N4)' => [ 'Teclast', 'X80HD', DeviceType::TABLET ], + 'X80HD(G2N5)' => [ 'Teclast', 'X80HD', DeviceType::TABLET ], + 'X80HD(G2N6)' => [ 'Teclast', 'X80HD', DeviceType::TABLET ], + 'X80HD(G2N8)' => [ 'Teclast', 'X80HD', DeviceType::TABLET ], + 'X80HD(G2N9)' => [ 'Teclast', 'X80HD', DeviceType::TABLET ], + 'X80HD(G2N9' => [ 'Teclast', 'X80HD', DeviceType::TABLET ], + 'X80 Plus(H5C5)' => [ 'Teclast', 'X80 Plus', DeviceType::TABLET ], + 'X80 Plus(H6C3)' => [ 'Teclast', 'X80 Plus', DeviceType::TABLET ], + 'X80 Plus(H6C3' => [ 'Teclast', 'X80 Plus', DeviceType::TABLET ], + 'X80 Plus(H6C4)' => [ 'Teclast', 'X80 Plus', DeviceType::TABLET ], + 'X80 Power(B2N3)' => [ 'Teclast', 'X80 Power', DeviceType::TABLET ], + 'X80 Power(B2N4)' => [ 'Teclast', 'X80 Power', DeviceType::TABLET ], + 'X80 Power(B2N6)' => [ 'Teclast', 'X80 Power', DeviceType::TABLET ], + 'X80 Pro(E2E9)' => [ 'Teclast', 'X80 Pro', DeviceType::TABLET ], + 'X80 Pro(E3E6)' => [ 'Teclast', 'X80 Pro', DeviceType::TABLET ], + 'X80 Pro(E3E7)' => [ 'Teclast', 'X80 Pro', DeviceType::TABLET ], + 'X80 Pro(E3E8)' => [ 'Teclast', 'X80 Pro', DeviceType::TABLET ], + 'X80 Pro (E3E9)' => [ 'Teclast', 'X80 Pro', DeviceType::TABLET ], + 'X81-8G3D' => [ 'Teclast', 'X81', DeviceType::TABLET ], + 'X89 (E7ED)' => [ 'Teclast', 'X89', DeviceType::TABLET ], + 'X89 (KR89)' => [ 'Teclast', 'X89', DeviceType::TABLET ], + 'X89HD (H21C)' => [ 'Teclast', 'X89HD', DeviceType::TABLET ], + 'X90HD (M2PC)' => [ 'Teclast', 'X90HD', DeviceType::TABLET ], + 'X98 3G(HKC1)' => [ 'Teclast', 'X98 3G', DeviceType::TABLET ], + 'X98 3G(HKC2)' => [ 'Teclast', 'X98 3G', DeviceType::TABLET ], + 'X98 3G(HKC3' => [ 'Teclast', 'X98 3G', DeviceType::TABLET ], + 'X98 3G(HKC3)' => [ 'Teclast', 'X98 3G', DeviceType::TABLET ], + 'X98 3G(lite)' => [ 'Teclast', 'X98 3G', DeviceType::TABLET ], + 'X98 Air(C5KN)' => [ 'Teclast', 'X98 Air', DeviceType::TABLET ], + 'X98 Air Smile' => [ 'Teclast', 'X98 Air', DeviceType::TABLET ], + 'X98 Air 3G' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(Smile)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C5J5)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C5J6)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C5J8)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C6J6)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C6J6' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C8J6)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C8J7)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C9J6)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C9J7)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air 3G(C9J8)' => [ 'Teclast', 'X98 Air 3G', DeviceType::TABLET ], + 'X98 Air II' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air II(HG5N)' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air II(HG6M)' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air II(HG7N)' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air II(HG8N)' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air II(HG9M)' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air II(HG9N)' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air II(HG9N' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air ? HG9M' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air â…¡ HG9M' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air II(Smile)' => [ 'Teclast', 'X98 Air II', DeviceType::TABLET ], + 'X98 Air III' => [ 'Teclast', 'X98 Air III', DeviceType::TABLET ], + 'X98 Air III(M5C5)' => [ 'Teclast', 'X98 Air III', DeviceType::TABLET ], + 'X98 Air III(M5C5' => [ 'Teclast', 'X98 Air III', DeviceType::TABLET ], + 'X98 Air III(M5C6)' => [ 'Teclast', 'X98 Air III', DeviceType::TABLET ], + 'X98 Plus' => [ 'Teclast', 'X98 Plus', DeviceType::TABLET ], + 'X98 Plus(A6C7)' => [ 'Teclast', 'X98 Plus', DeviceType::TABLET ], + 'X98 Plus(A5C8)' => [ 'Teclast', 'X98 Plus', DeviceType::TABLET ], + 'X98 Plus 3G(A6C9)' => [ 'Teclast', 'X98 Plus', DeviceType::TABLET ], + 'X98 Plus II (C2D4)' => [ 'Teclast', 'X98 Plus II', DeviceType::TABLET ], + 'X98 Plus II (C2D6)' => [ 'Teclast', 'X98 Plus II', DeviceType::TABLET ], + 'X98 Plus II (C2D8)' => [ 'Teclast', 'X98 Plus II', DeviceType::TABLET ], + 'X98 Plus II (C2E3)' => [ 'Teclast', 'X98 Plus II', DeviceType::TABLET ], + 'X98 Pro' => [ 'Teclast', 'X98 Pro', DeviceType::TABLET ], + 'X98 Pro (K9C6)' => [ 'Teclast', 'X98 Pro', DeviceType::TABLET ], + 'X98 Pro (K9C6' => [ 'Teclast', 'X98 Pro', DeviceType::TABLET ], + 'tegav2' => [ 'Tegatech', 'TEGA v2', DeviceType::TABLET ], + 'Preo Teknosa P1' => [ 'Teknosa', 'Preo P1' ], + 'Tele2fon V3' => [ 'Tele2fon', 'v3' ], + 'Tele2fon v5' => [ 'Tele2fon', 'v5' ], + 'TELEFUNKEN Diamond TD1' => [ 'Telefunken', 'Diamond TD1' ], + 'Telpad Dual S' => [ 'Telpad', 'Dual S', DeviceType::TABLET ], + 'Telpad Quad S' => [ 'Telpad', 'Quad S', DeviceType::TABLET ], + 'Telpad QS' => [ 'Telpad', 'Quad S', DeviceType::TABLET ], + 'T3696' => [ 'Telsda', 'T3696' ], + 'Tensent S9000' => [ 'Tensent', 'S9000' ], + 'Hudl HT7S3' => [ 'Tesco', 'Hudl', DeviceType::TABLET ], + 'Hudl 2' => [ 'Tesco', 'Hudl 2', DeviceType::TABLET ], + 'TM-3200R' => [ 'teXet', 'TM-3200R' ], + 'TM-3204R' => [ 'teXet', 'TM-3204R' ], + 'TM-3500' => [ 'teXet', 'X-mini 2 TM-3500' ], + 'teXet X-alpha' => [ 'teXet', 'X-alpha TM-3521' ], + 'TM-4003' => [ 'teXet', 'TM-4003' ], + 'TM-4004' => [ 'teXet', 'TM-4004' ], + 'TM-4071' => [ 'teXet', 'X-smart TM-4071' ], + 'X-basic' => [ 'teXet', 'X-basic TM-4072' ], + 'TM-4082R/X-driver' => [ 'teXet', 'X-driver TM-4082R' ], + 'Texet TM-4083' => [ 'teXet', 'TM-4083' ], + 'teXet X-start' => [ 'teXet', 'X-start TM-4172' ], + 'X-basic2' => [ 'teXet', 'X-basic2 TM-4272' ], + 'TM-4377' => [ 'teXet', 'TM-4377' ], + 'X-maxi' => [ 'teXet', 'X-maxi TM-5172' ], + 'X-medium' => [ 'teXet', 'X-medium TM-4572' ], + 'teXet iX-mini' => [ 'teXet', 'iX-mini TM-4182' ], + 'TM-4515' => [ 'teXet', 'X-style TM-4515' ], + 'TM-4577' => [ 'teXet', 'TM-4577' ], + 'teXet X-navi' => [ 'teXet', 'X-navi TM-4672' ], + 'TEXET TM-4677' => [ 'teXet', 'TM-4677' ], + 'TM-4677' => [ 'teXet', 'TM-4677' ], + 'teXet X-medium plus' => [ 'teXet', 'X-medium plus TM-4872' ], + 'TM-4982' => [ 'teXet', 'TM-4982' ], + 'TM-5005' => [ 'teXet', 'TM-5005' ], + 'teXet X-maxi qHD' => [ 'teXet', 'X-maxi TM-5172' ], + 'TM-5200' => [ 'teXet', 'TM-5200' ], + 'TM-5377' => [ 'teXet', 'TM-5377' ], + 'TM-7011' => [ 'teXet', 'TM-7011', DeviceType::TABLET ], + 'TM-7016' => [ 'teXet', 'TM-7016', DeviceType::TABLET ], + 'TM-7021' => [ 'teXet', 'TM-7021', DeviceType::TABLET ], + 'TM-7023' => [ 'teXet', 'TM-7023', DeviceType::TABLET ], + 'TM-7024' => [ 'teXet', 'TM-7024', DeviceType::TABLET ], + 'TM-7025' => [ 'teXet', 'TM-7025', DeviceType::TABLET ], + 'TM-7026' => [ 'teXet', 'TM-7026', DeviceType::TABLET ], + 'TM-7026 (revision 4)' => [ 'teXet', 'TM-7026', DeviceType::TABLET ], + 'TM-7037W' => [ 'teXet', 'TM-7037W', DeviceType::TABLET ], + 'TM-7038W' => [ 'teXet', 'TM-7038W', DeviceType::TABLET ], + 'TM-7041' => [ 'teXet', 'TM-7041', DeviceType::TABLET ], + 'TM-7043XD' => [ 'teXet', 'TM-7043XD', DeviceType::TABLET ], + 'TM-7047HD 3G' => [ 'teXet', 'TM-7047HD', DeviceType::TABLET ], + 'NaviPad TM-7055HD 3G' => [ 'teXet', 'NaviPad HD TM-7055', DeviceType::TABLET ], + 'TM-7096' => [ 'teXet', 'X-pad NAVI 7.3 TM-7096', DeviceType::TABLET ], + 'TM-7099' => [ 'teXet', 'TM-7099', DeviceType::TABLET ], + 'TM-7854' => [ 'teXet', 'TM-7854', DeviceType::TABLET ], + 'NaviPad TM-7855 3G' => [ 'teXet', 'NaviPad TM-7855', DeviceType::TABLET ], + 'NaviPad TM-7858 3G (revision 1)' => [ 'teXet', 'NaviPad TM-7858', DeviceType::TABLET ], + 'TM-8041HD' => [ 'teXet', 'TM-8041HD', DeviceType::TABLET ], + 'TM-8048 revision1' => [ 'teXet', 'X-force 8 TM-8048', DeviceType::TABLET ], + 'TM-8051' => [ 'teXet', 'X-pad FORCE 8i TM-8051', DeviceType::TABLET ], + 'TM-9720' => [ 'teXet', 'TM-9720', DeviceType::TABLET ], + 'TM-9725' => [ 'teXet', 'TM-9725', DeviceType::TABLET ], + 'TM-9740' => [ 'teXet', 'TM-9740', DeviceType::TABLET ], + 'TM-9741' => [ 'teXet', 'TM-9741', DeviceType::TABLET ], + 'TM-9743W' => [ 'teXet', 'TM-9743W', DeviceType::TABLET ], + 'TM-9747!' => [ 'teXet', 'TM-9747', DeviceType::TABLET ], + 'TM-9748 3G' => [ 'teXet', 'TM-9748', DeviceType::TABLET ], + 'TM-9750HD' => [ 'teXet', 'TM-9750HD', DeviceType::TABLET ], + 'TM-9751HD' => [ 'teXet', 'TM-9751HD', DeviceType::TABLET ], + 'TM-9757' => [ 'teXet', 'TM-9757', DeviceType::TABLET ], + 'TM-9757 3G rev1' => [ 'teXet', 'TM-9757', DeviceType::TABLET ], + 'TM-9767' => [ 'teXet', 'X-pad STYLE 10 TM-9767', DeviceType::TABLET ], + 'TM-1058' => [ 'teXet', 'X-force 10 TM-1058', DeviceType::TABLET ], + 'ITP-XD10W' => [ 'Thinkware', 'XD10 Duo', DeviceType::TABLET ], + 'ITP-XD80L' => [ 'Thinkware', 'Pad8', DeviceType::TABLET ], + 'ITP-XD97W' => [ 'Thinkware', 'XD9 Neo', DeviceType::TABLET ], + 'EVERY35' => [ 'Thomson', 'Every35' ], + + 'TLINK[0-9]{3,3}!!' => [ + 'TLINK350' => [ 'Thomson', 'Tlink350' ], + 'TLINK351' => [ 'Thomson', 'Tlink351' ], + 'TLINK355' => [ 'Thomson', 'Tlink355' ], + 'TLINK405' => [ 'Thomson', 'Tlink405' ], + 'TLINK410' => [ 'Thomson', 'Tlink410' ], + 'TLINK455' => [ 'Thomson', 'Tlink455' ], + 'TLINK475' => [ 'Thomson', 'Tlink475' ], + 'TLINK535' => [ 'Thomson', 'Tlink535' ], + ], + + 'MoFing' => [ 'Thomson', 'MoFing', DeviceType::TABLET ], + '8950' => [ 'Thomson', '3G 8950', DeviceType::TABLET ], + 'PRIMO7' => [ 'Thomson', 'Primo 7', DeviceType::TABLET ], + 'PRIMO8' => [ 'Thomson', 'Primo 8', DeviceType::TABLET ], + 'QM734-8G' => [ 'Thomson', 'QM734-8G', DeviceType::TABLET ], + 'QM735-8G' => [ 'Thomson', 'QM735-8G', DeviceType::TABLET ], + + '(CJ-)?ThL!!' => [ + 'ThL A1' => [ 'THL', 'A1' ], + 'ThL A2' => [ 'THL', 'A2' ], + 'ThL-I95' => [ 'THL', 'I95' ], + 'ThL-I95S' => [ 'THL', 'I95S' ], + 'thl L969' => [ 'THL', 'L969' ], + 'ThL T1' => [ 'THL', 'T1' ], + 'ThL T3' => [ 'THL', 'T3' ], + 'thl T5' => [ 'THL', 'T5' ], + 'THL T5S' => [ 'THL', 'T5S' ], + 'thl T6' => [ 'THL', 'T6' ], + 'thl T6 pro' => [ 'THL', 'T6 Pro' ], + 'thl T6C' => [ 'THL', 'T6C' ], + 'thl T6S' => [ 'THL', 'T6S' ], + 'thl T7' => [ 'THL', 'T7' ], + 'thl T9' => [ 'THL', 'T9' ], + 'thl T9 Pro' => [ 'THL', 'T9 Pro' ], + 'thl T11' => [ 'THL', 'T11' ], + 'thl T12' => [ 'THL', 'T12' ], + 'thl T100' => [ 'THL', 'T100' ], + 'thl T100S' => [ 'THL', 'T100S' ], + 'thl T100S' => [ 'THL', 'T100S' ], + 'ThL V7' => [ 'THL', 'V7' ], + 'ThL V8' => [ 'THL', 'V8' ], + 'ThL V9' => [ 'THL', 'V9' ], + 'ThL V11' => [ 'THL', 'V11' ], + 'CJ-ThL V11' => [ 'THL', 'V11' ], + 'ThL V12' => [ 'THL', 'V12' ], + 'ThL W1' => [ 'THL', 'W1' ], + 'CJ-ThL W1' => [ 'THL', 'W1' ], + 'ThL W1+' => [ 'THL', 'W1+' ], + 'ThL W2' => [ 'THL', 'W2' ], + 'CJ-ThL W2' => [ 'THL', 'W2' ], + 'ThL W3' => [ 'THL', 'W3' ], + 'ThL W3dc' => [ 'THL', 'W3' ], + 'ThL W3 (Dual Core)' => [ 'THL', 'W3' ], + 'ThL W3+ (Dual Core)' => [ 'THL', 'W3+' ], + 'ThL W5' => [ 'THL', 'W5' ], + 'ThL W6' => [ 'THL', 'W6' ], + 'ThL W7' => [ 'THL', 'W7' ], + 'THL W7s' => [ 'THL', 'W7s' ], + 'ThL W8' => [ 'THL', 'W8' ], + 'ThL W8s' => [ 'THL', 'W8s' ], + 'ThL W9' => [ 'THL', 'W9' ], + 'ThL W11' => [ 'THL', 'W11' ], + 'Thl w100' => [ 'THL', 'W100' ], + 'THL W100S' => [ 'THL', 'W100s' ], + 'THL W200' => [ 'THL', 'W200' ], + 'ThL W200C' => [ 'THL', 'W200c' ], + 'ThL W200S' => [ 'THL', 'W200s' ], + 'ThL W300' => [ 'THL', 'W300' ], + 'thl 2015' => [ 'THL', '2015' ], + 'thl 2015A' => [ 'THL', '2015A' ], + 'thl 4000' => [ 'THL', '4000' ], + 'thl 4400' => [ 'THL', '4400' ], + 'thl5000' => [ 'THL', '5000' ], + 'thl 5000' => [ 'THL', '5000' ], + 'thl 5000T' => [ 'THL', '5000T' ], + ], + + 'W8 beyond' => [ 'THL', 'W8 beyond' ], + 'W100' => [ 'THL', 'W100' ], + + 'TizzBird!!' => [ + 'TizzBird N1G' => [ 'TizzBird', 'N1', DeviceType::TELEVISION ], + 'TizzBird S20A' => [ 'TizzBird', 'S20A', DeviceType::TELEVISION ], + 'TizzBird S20T' => [ 'TizzBird', 'S20T', DeviceType::TELEVISION ], + ], + + 'MagicBox' => [ 'Tmall', 'MagicBox', DeviceType::TELEVISION ], + + 'tolino tab!!' => [ + 'tolino tab 7' => [ 'Tolino', 'Tab 7', DeviceType::TABLET ], + 'tolino tab 8' => [ 'Tolino', 'Tab 8', DeviceType::TABLET ], + 'tolino tab 8.9' => [ 'Tolino', 'Tab 8.9', DeviceType::TABLET ], + ], + + 'ATP7526' => [ 'Tomtec', 'Ultimate10', DeviceType::TABLET ], + 'ATP7683' => [ 'Tomtec', 'Ultimate10', DeviceType::TABLET ], + 'Ultimate10' => [ 'Tomtec', 'Ultimate10', DeviceType::TABLET ], + 'Ultimate10-Android4.0' => [ 'Tomtec', 'Ultimate10', DeviceType::TABLET ], + 'Ultimate 10' => [ 'Tomtec', 'Ultimate10', DeviceType::TABLET ], + + 'TomTom Bridge' => [ 'TomTom', 'Bridge', DeviceType::CAR ], + 'TomTom PRO 8275' => [ 'TomTom', 'PRO 8275', DeviceType::CAR ], + + 'TOOKY!!' => [ + 'TOOKY A6' => [ 'Tooky', 'A6' ], + 'TOOKY A9' => [ 'Tooky', 'A9' ], + 'TOOKY A9PLUS' => [ 'Tooky', 'A9 Plus' ], + 'TOOKY A19PLUS' => [ 'Tooky', 'A19 Plus' ], + 'TOOKY A81' => [ 'Tooky', 'A81' ], + 'TOOKY A110' => [ 'Tooky', 'A110' ], + 'TOOKY K1' => [ 'Tooky', 'K1' ], + 'TOOKY T83' => [ 'Tooky', 'T83' ], + 'TOOKY T85' => [ 'Tooky', 'T85' ], + 'TOOKY T88' => [ 'Tooky', 'T88' ], + 'TOOKY T1981' => [ 'Tooky', 'T1981' ], + 'Tooky T1981+' => [ 'Tooky', 'T1981 Plus' ], + 'TOOKY T1981PLUS' => [ 'Tooky', 'T1981 Plus' ], + 'TOOKY T1982' => [ 'Tooky', 'T1982' ], + 'TOOKY T1992' => [ 'Tooky', 'T1992' ], + 'TOOKY W1' => [ 'Tooky', 'W1' ], + ], + + 'DROIDZ Duo' => [ 'Torque', 'DROIDZ Duo', DeviceType::TABLET ], + 'DROIDZ Duo' => [ 'Torque', 'DROIDZ Duo', DeviceType::TABLET ], + 'DROIDZ Active 3G' => [ 'Torque', 'DROIDZ Active', DeviceType::TABLET ], + 'DROIDZ ATOM S' => [ 'Torque', 'DROIDZ Atom S', DeviceType::TABLET ], + 'DROIDZ Beat TV' => [ 'Torque', 'DROIDZ Beat TV', DeviceType::TABLET ], + 'DROIDZ Drive+' => [ 'Torque', 'DROIDZ Drive+', DeviceType::TABLET ], + 'DROIDZ Duo' => [ 'Torque', 'DROIDZ Duo', DeviceType::TABLET ], + 'DROIDZ Excel' => [ 'Torque', 'DROIDZ Excel', DeviceType::TABLET ], + 'DROIDZ Excite' => [ 'Torque', 'DROIDZ Excite', DeviceType::TABLET ], + 'DROIDZ Force' => [ 'Torque', 'DROIDZ Force', DeviceType::TABLET ], + 'DROIDZ Match TV' => [ 'Torque', 'DROIDZ Match TV', DeviceType::TABLET ], + 'DROIDZ Mini Q' => [ 'Torque', 'DROIDZ Mini Q', DeviceType::TABLET ], + 'DROIDZ Portal X' => [ 'Torque', 'DROIDZ Portal X', DeviceType::TABLET ], + 'DROIDZ Quad' => [ 'Torque', 'DROIDZ Quad', DeviceType::TABLET ], + 'DROIDZ Race' => [ 'Torque', 'DROIDZ Race', DeviceType::TABLET ], + 'DROIDZ Race X' => [ 'Torque', 'DROIDZ Race X', DeviceType::TABLET ], + 'DROIDZ Sport' => [ 'Torque', 'DROIDZ Sport', DeviceType::TABLET ], + 'DROIDZ Ultimate' => [ 'Torque', 'DROIDZ Ultimate', DeviceType::TABLET ], + + 'TSB CLOUD COMPANION;TOSHIBA AC AND AZ' => [ 'Toshiba', 'Dynabook AZ', 'desktop' ], + 'TOSHIBA AC AND AZ' => [ 'Toshiba', 'Dynabook AZ', 'desktop' ], + 'TOSHIBA FOLIO AND A' => [ 'Toshiba', 'Folio 100', DeviceType::TABLET ], + 'T-01C' => [ 'Toshiba', 'REGZA Phone T-01C', 'carrier' => 'DoCoMo' ], + 'T-01D' => [ 'Toshiba', 'REGZA Phone T-01D', 'carrier' => 'DoCoMo' ], + 'T-02D' => [ 'Toshiba', 'REGZA Phone T-02D', 'carrier' => 'DoCoMo' ], + 'IS04' => [ 'Toshiba', 'REGZA Phone IS04', 'carrier' => 'au' ], + 'IS11T' => [ 'Toshiba', 'REGZA Phone IS11T', 'carrier' => 'au' ], + 'AT1S0' => [ 'Toshiba', 'Regza AT1S0' ], + 'AT7-A' => [ 'Toshiba', 'Excite AT7-A', DeviceType::TABLET ], + 'AT7-B' => [ 'Toshiba', 'Excite AT7-B', DeviceType::TABLET ], + 'AT7-C' => [ 'Toshiba', 'Excite AT7-C', DeviceType::TABLET ], + 'AT10-A' => [ 'Toshiba', 'Excite AT10-A', DeviceType::TABLET ], + 'AT10LE-A' => [ 'Toshiba', 'Excite AT10LE-A', DeviceType::TABLET ], + 'AT10PE-A' => [ 'Toshiba', 'Excite AT10PE-A', DeviceType::TABLET ], + 'Tostab03' => [ 'Toshiba', 'Regza AT100', DeviceType::TABLET ], + 'AT100' => [ 'Toshiba', 'Regza AT100', DeviceType::TABLET ], + 'AT200' => [ 'Toshiba', 'Regza AT200', DeviceType::TABLET ], + 'AT270' => [ 'Toshiba', 'Regza AT270', DeviceType::TABLET ], + 'AT300' => [ 'Toshiba', 'Regza AT300', DeviceType::TABLET ], + 'AT300SE' => [ 'Toshiba', 'Regza AT300SE', DeviceType::TABLET ], + 'AT330' => [ 'Toshiba', 'Regza AT330', DeviceType::TABLET ], + 'AT374' => [ 'Toshiba', 'Regza AT374', DeviceType::TABLET ], + 'AT400' => [ 'Toshiba', 'Regza AT400', DeviceType::TABLET ], + 'AT470' => [ 'Toshiba', 'Regza AT470', DeviceType::TABLET ], + 'AT500' => [ 'Toshiba', 'Regza AT500', DeviceType::TABLET ], + 'AT500a' => [ 'Toshiba', 'Regza AT500', DeviceType::TABLET ], + 'AT503' => [ 'Toshiba', 'Regza AT503', DeviceType::TABLET ], + 'AT570' => [ 'Toshiba', 'Regza AT570', DeviceType::TABLET ], + 'AT703' => [ 'Toshiba', 'Regza AT703', DeviceType::TABLET ], + 'AT830' => [ 'Toshiba', 'Regza AT830', DeviceType::TABLET ], + 'Folio 100' => [ 'Toshiba', 'Folio 100', DeviceType::TABLET ], + 'folio100' => [ 'Toshiba', 'Folio 100', DeviceType::TABLET ], + 'TOSHIBA WT7-C' => [ 'Toshiba', 'Encore Mini', DeviceType::TABLET ], + 'TOSHIBA WT8-A' => [ 'Toshiba', 'Encore', DeviceType::TABLET ], + 'THRiVE' => [ 'Toshiba', 'THRiVE', DeviceType::TABLET ], + 'Hikari-iFrame!' => [ 'Toshiba', 'Hikari iFrame', DeviceType::TABLET, 'carrier' => 'NTT' ], + + 'Satellite!!' => [ + 'Satellite ([A-Z][0-9]{3,3}[A-Z]?)!' => [ 'Toshiba', 'Satellite $1', DeviceType::DESKTOP ], + 'Satellite ([A-Z][0-9]{2,2}[A-Z]+-[A-Z])!' => [ 'Toshiba', 'Satellite $1', DeviceType::DESKTOP ], + 'Satellite ([A-Z][0-9]{2,2}-[A-Z]?)!' => [ 'Toshiba', 'Satellite $1', DeviceType::DESKTOP ], + 'Satellite Pro ([A-Z][0-9]{3,3})!' => [ 'Toshiba', 'Satellite Pro $1', DeviceType::DESKTOP ], + ], + + 'StarTab 715x' => [ 'Touch+', 'Startab 715', DeviceType::TABLET ], + 'TRACER OXYGEN GS1' => [ 'Tracer', 'Oxygen GS1' ], + + 'ST[0-9]{5,5}-[0-9]!!' => [ + 'ST70104-1!' => [ 'Trekstor', 'Surftab Breeze 7.0', DeviceType::TABLET ], + 'ST70104-2!' => [ 'Trekstor', 'Surftab Breeze 7.0', DeviceType::TABLET ], + 'ST70208-1!' => [ 'Trekstor', 'Surftab Ventos 7.0', DeviceType::TABLET ], + 'ST70208-2!' => [ 'Trekstor', 'Surftab Ventos 7.0', DeviceType::TABLET ], + 'ST70208-4!' => [ 'Trekstor', 'Surftab Ventos 7.0', DeviceType::TABLET ], + 'ST70216-1!' => [ 'Trekstor', 'Surftab Ventos 7.0', DeviceType::TABLET ], + 'ST80208-1!' => [ 'Trekstor', 'Surftab Ventos 8.0', DeviceType::TABLET ], + 'ST80208-2!' => [ 'Trekstor', 'Surftab Ventos 8.0', DeviceType::TABLET ], + 'ST80216-1!' => [ 'Trekstor', 'Surftab Ventos 8.0', DeviceType::TABLET ], + 'ST80216-2!' => [ 'Trekstor', 'Surftab Ventos 8.0', DeviceType::TABLET ], + 'ST97216-1!' => [ 'Trekstor', 'Surftab Ventos 9.7', DeviceType::TABLET ], + 'ST10216-1!' => [ 'Trekstor', 'Surftab Ventos 10.1', DeviceType::TABLET ], + 'ST10216-2!' => [ 'Trekstor', 'Surftab Ventos 10.1', DeviceType::TABLET ], + 'ST10216-2!' => [ 'Trekstor', 'Surftab Ventos 10.1', DeviceType::TABLET ], + 'ST10216-3!' => [ 'Trekstor', 'Surftab Ventos 10.1', DeviceType::TABLET ], + 'ST70404-1!' => [ 'Trekstor', 'Surftab Xirion 7.0', DeviceType::TABLET ], + 'ST70408-1!' => [ 'Trekstor', 'Surftab Xirion 7.0', DeviceType::TABLET ], + 'ST10416-1!' => [ 'Trekstor', 'Surftab Xirion 10.1', DeviceType::TABLET ], + ], + + 'Trevi PHABLET 4C' => [ 'Trevi', 'Phablet 4C' ], + 'PHABLET 4S' => [ 'Trevi', 'Phablet 4S' ], + 'Phablet 4.5Q' => [ 'Trevi', 'Phablet 4.5Q' ], + 'Trevi PHABLET 5 S' => [ 'Trevi', 'Phablet 5S' ], + + 'TREQ!!' => [ + 'TREQ A10C' => [ 'Treq', 'A10C', DeviceType::TABLET ], + 'TREQ A10C 2' => [ 'Treq', 'A10C 2', DeviceType::TABLET ], + 'TREQ A10G 3G' => [ 'Treq', 'A10G', DeviceType::TABLET ], + 'treq A10G Duo' => [ 'Treq', 'A10G', DeviceType::TABLET ], + 'TREQ A10 basic' => [ 'Treq', 'Basic', DeviceType::TABLET ], + 'TREQ Basic 2' => [ 'Treq', 'Basic 2', DeviceType::TABLET ], + 'Treq 3G Basic 2' => [ 'Treq', 'Basic 2', DeviceType::TABLET ], + 'Treq Basic 2K-8' => [ 'Treq', 'Basic 2K', DeviceType::TABLET ], + 'TREQ A10 Basic 2+' => [ 'Treq', 'Basic 2+', DeviceType::TABLET ], + 'TREQ basic 3' => [ 'Treq', 'Basic 3', DeviceType::TABLET ], + 'Treq 3G Basic 3' => [ 'Treq', 'Basic 3', DeviceType::TABLET ], + 'Treq Book 3G' => [ 'Treq', 'Book 3G', DeviceType::TABLET ], + 'Treq Call 7K' => [ 'Treq', 'Call 7K', DeviceType::TABLET ], + 'Treq A10 Pocket' => [ 'Treq', 'Pocket', DeviceType::TABLET ], + 'TREQ A10 Pocket2' => [ 'Treq', 'Pocket 2', DeviceType::TABLET ], + 'TREQ POCKET STAR 5' => [ 'Treq', 'Pocket Star 5', DeviceType::TABLET ], + 'TREQ TUNE' => [ 'Treq', 'Tune', DeviceType::TABLET ], + 'TREQ Tune Z' => [ 'Treq', 'Tune Z', DeviceType::TABLET ], + 'TREQ Turbo' => [ 'Treq', 'Turbo', DeviceType::TABLET ], + 'TREQ-TURBO' => [ 'Treq', 'Turbo', DeviceType::TABLET ], + 'TREQ 3G Turbo' => [ 'Treq', 'Turbo', DeviceType::TABLET ], + ], + + 'Phablet 5,3 Q' => [ 'Trevi', 'Phablet 5.3 Q' ], + 'Trevi REVERSE 5.5Q' => [ 'Trevi', 'Phablet 5.5 Q REVERSE' ], + 'Trevi PHABLET 6 S' => [ 'Trevi', 'Phablet 6 S' ], + 'TAB 7 3G V8' => [ 'Trevi', 'Tab 7 V8', DeviceType::TABLET ], + 'TAB 8 3G V8' => [ 'Trevi', 'Tab 8 V8', DeviceType::TABLET ], + 'TAB9 3G' => [ 'Trevi', 'Tab 9', DeviceType::TABLET ], + 'TAB9 3G V8' => [ 'Trevi', 'Tab 9 V8', DeviceType::TABLET ], + 'TAB 10 3G V16' => [ 'Trevi', 'Tab 10 V16', DeviceType::TABLET ], + 'Turbo-X pi' => [ 'Turbo-X', 'Pi' ], + 'Turbo-X Ice' => [ 'Turbo-X', 'Ice', DeviceType::TABLET ], + 'Turbo-X Tablet Spice III' => [ 'Turbo-X', 'Spice III', DeviceType::TABLET ], + 'SPICE IV' => [ 'Turbo-X', 'Spice IV', DeviceType::TABLET ], + 'NuclearSX-SP5' => [ 'TVC', 'Nuclear SX-SP5' ], + + '(Amazing|Fantastic)!!' => [ + 'Amazing A1' => [ 'TWM', 'Amazing A1' ], + 'Amazing A3' => [ 'TWM', 'Amazing A3' ], + 'Amazing A4' => [ 'TWM', 'Amazing A4' ], + 'Amazing A4C' => [ 'TWM', 'Amazing A4C' ], + 'Amazing A4S' => [ 'TWM', 'Amazing A4S' ], + 'Amazing A5S' => [ 'TWM', 'Amazing A5S' ], + 'Amazing A6' => [ 'TWM', 'Amazing A6' ], + 'Amazing A7' => [ 'TWM', 'Amazing A7' ], + 'Amazing A8' => [ 'TWM', 'Amazing A8' ], + 'Amazing P6' => [ 'TWM', 'Amazing P6' ], + 'Amazing X1' => [ 'TWM', 'Amazing X1' ], + 'Amazing X2' => [ 'TWM', 'Amazing X2' ], + 'Amazing X3' => [ 'TWM', 'Amazing X3' ], + 'Amazing X3s' => [ 'TWM', 'Amazing X3s' ], + 'Amazing X3s 16G' => [ 'TWM', 'Amazing X3s' ], + 'Amazing X5' => [ 'TWM', 'Amazing X5' ], + 'Amazing X5s' => [ 'TWM', 'Amazing X5s' ], + 'Amazing X6' => [ 'TWM', 'Amazing X6' ], + 'Amazing X7' => [ 'TWM', 'Amazing X7' ], + 'Fantastic T3' => [ 'TWM', 'Fantastic T3' ], + ], + + 'A6S' => [ 'TWM', 'Amazing A6S' ], + 'Be Touch 2' => [ 'Ulefone', 'Be Touch 2' ], + 'Ulefone Be Touch2' => [ 'Ulefone', 'Be Touch 2' ], + 'TB100' => [ 'Unitech', 'TB100', DeviceType::TABLET ], + 'M70014' => [ 'United Star Technology', 'M70014', DeviceType::TABLET ], + 'QOOQ' => [ 'Unowhy', 'QOOQ', DeviceType::TABLET ], + + 'UMI!!' => [ + 'UMI C1' => [ 'UMI', 'C1' ], + 'UMI-R1' => [ 'UMI', 'R1' ], + 'UMI-R1(TD)' => [ 'UMI', 'R1' ], + 'UMI S1' => [ 'UMI', 'S1' ], + 'UMI X1' => [ 'UMI', 'X1' ], + 'UMI X1S' => [ 'UMI', 'X1s' ], + 'UMI X1-PRO' => [ 'UMI', 'X1' ], + 'UMI X2' => [ 'UMI', 'X1 Pro' ], + 'UMI-X2' => [ 'UMI', 'X2' ], + 'UmiX2' => [ 'UMI', 'X2' ], + 'UMI X3' => [ 'UMI', 'X3' ], + 'UMIDIGI Z' => [ 'UMI', 'Z' ], + 'UMI CROSS' => [ 'UMI', 'Cross' ], + 'UMI Diamond' => [ 'UMI', 'Diamond' ], + 'UMI Diamond X' => [ 'UMI', 'Diamond X' ], + 'UMI eMAX' => [ 'UMI', 'eMax' ], + 'UMI London' => [ 'UMI', 'London' ], + 'UMI MAX' => [ 'UMI', 'Max' ], + 'UMI Plus E' => [ 'UMI', 'Plus E' ], + 'Umi Rome-x' => [ 'UMI', 'Rome X' ], + 'UMI Super' => [ 'UMI', 'Super' ], + 'UMI TOUCH' => [ 'UMI', 'Touch' ], + 'UMI TOUCH X' => [ 'UMI', 'Touch X' ], + 'UMI ZERO' => [ 'UMI', 'Zero' ], + ], + + 'eMAX mini' => [ 'UMI', 'eMax mini' ], + 'Plus E' => [ 'UMI', 'Plus E' ], + 'U1203' => [ 'Uniscope', 'U1203' ], + + 'Unusual!!' => [ + 'UNUSUAL U7X' => [ 'Unusual', 'U7X', DeviceType::TABLET ], + 'Unusual U10Z' => [ 'Unusual', 'U10Z', DeviceType::TABLET ], + 'UNUSUAL 7X' => [ 'Unusual', '7X', DeviceType::TABLET ], + 'Unusual 7X Quad' => [ 'Unusual', '7X', DeviceType::TABLET ], + 'UNUSUAL 7X+' => [ 'Unusual', '7X+', DeviceType::TABLET ], + 'UNUSUAL 10M' => [ 'Unusual', '10M', DeviceType::TABLET ], + 'UNUSUAL 10X' => [ 'Unusual', '10X', DeviceType::TABLET ], + 'UNUSUAL 10XQUAD' => [ 'Unusual', '10X', DeviceType::TABLET ], + 'Unusual 10Z' => [ 'Unusual', '10Z', DeviceType::TABLET ], + 'UNUSUAL 40Y' => [ 'Unusual', '40Y', DeviceType::TABLET ], + ], + + 'UOOGOU!!' => [ + 'UOOGOU F2' => [ 'Uoogou', 'F2' ], + 'UOOGOU P1' => [ 'Uoogou', 'P1' ], + 'UOOGOU Q6' => [ 'Uoogou', 'Q6' ], + 'UOOGOU Q7' => [ 'Uoogou', 'Q7' ], + 'UOOGOU-Q9' => [ 'Uoogou', 'Q9' ], + 'UOOGOU R5' => [ 'Uoogou', 'R5' ], + 'UOOGOU T1' => [ 'Uoogou', 'T1' ], + 'UOOGOU-T8' => [ 'Uoogou', 'T8' ], + 'UOOGOU X3' => [ 'Uoogou', 'X3' ], + 'UOOGOU X5' => [ 'Uoogou', 'X5' ], + 'UOOGOU X6' => [ 'Uoogou', 'X6' ], + ], + + 'UTime!!' => [ + 'UTime i8' => [ 'UTime', 'i8' ], + 'UTime U100' => [ 'UTime', 'U100' ], + 'UTime X1' => [ 'UTime', 'X1' ], + ], + + 'Usmart!!' => [ + 'USmart CL600' => [ 'USmart', 'CL600' ], + 'Usmart F450' => [ 'USmart', 'F450' ], + 'Usmart-F450' => [ 'USmart', 'F450' ], + ], + + 'KUNO4' => [ 'uWriteTouch', 'KUNO 4', DeviceType::TABLET ], + 'KUNO 4+' => [ 'uWriteTouch', 'KUNO 4+', DeviceType::TABLET ], + + 'PS47' => [ 'Velocity Micro', 'Cruz PS47', DeviceType::TABLET ], + 'T301' => [ 'Velocity Micro', 'Cruz T301', DeviceType::TABLET ], + + 'Verifone Carbon-8' => [ 'Verifone', 'Carbon 8', DeviceType::POS ], + + 'VS TOUCH!!' => [ + 'VS TOUCHPAD9 A' => [ 'Versus', 'Touchpad 9', DeviceType::TABLET ], + 'Vs TOUCHPAD 9.7' => [ 'Versus', 'Touchpad 9.7', DeviceType::TABLET ], + 'VS TOUCHTAB 7DC' => [ 'Versus', 'Touchtab 7 Dual Core', DeviceType::TABLET ], + 'VS TOUCHTAB 7DC V' => [ 'Versus', 'Touchtab 7 Dual Core', DeviceType::TABLET ], + 'VS TOUCHTAB 8DC' => [ 'Versus', 'Touchtab 8 Dual Core', DeviceType::TABLET ], + 'VS TOUCHTAB 9' => [ 'Versus', 'Touchtab 9', DeviceType::TABLET ], + 'VS TOUCHTAB 10.1DC' => [ 'Versus', 'Touchtab 10.1 Dual Core', DeviceType::TABLET ], + ], + + 'verykool!!' => [ + 'verykool RS75' => [ 'verykool', 'Flint RS75' ], + 'verykool RS76' => [ 'verykool', 'RS76' ], + 'verykool RS90' => [ 'verykool', 'Vortex RS90' ], + 'verykool S351' => [ 'verykool', 'Beryl s351' ], + 'verykool S352' => [ 'verykool', 'Jasper II s352' ], + 'verykool S353' => [ 'verykool', 'Jasper s353' ], + 'verykool S354' => [ 'verykool', 'Mystic s354' ], + 'verykool S400' => [ 'verykool', 'Ruby s400' ], + 'verykool S400T' => [ 'verykool', 'Ruby s400' ], + 'verykool S401' => [ 'verykool', 'Aura s401' ], + 'verykool S450' => [ 'verykool', 'Onyx s450' ], + 'verykool S470' => [ 'verykool', 'Black Pearl s470' ], + 'verykool s505' => [ 'verykool', 'Spark s505' ], + 'verykool S732' => [ 'verykool', 's732' ], + 'verykool s3501' => [ 'verykool', 'Lynx s3501' ], + 'verykool Lynx II s3502' => [ 'verykool', 'Lynx II s3502' ], + 'verykool s3503' => [ 'verykool', 'Lynx II s3503' ], + 'verykool Lynx II s3503' => [ 'verykool', 'Lynx II s3503' ], + 'verykool S3504' => [ 'verykool', 'Mystic II s3504' ], + 'verykool Leo s4002' => [ 'verykool', 'Leo s4002' ], + 'verykool Leo II s4003' => [ 'verykool', 'Leo II s4003' ], + 'verykool Leo 3G Jr s4005' => [ 'verykool', 'Leo 3G Jr. s4005' ], + 'verykool s4006' => [ 'verykool', 'Leo 3G s4006' ], + 'VerykoolS4006' => [ 'verykool', 'Leo 3G s4006' ], + 'VerykoolS4006Q' => [ 'verykool', 'Leo 3G s4006' ], + 'verykools4006T' => [ 'verykool', 'Leo 3G s4006' ], + 'verykool s4010' => [ 'verykool', 'Gazelle s4010' ], + 'verykool s4010t' => [ 'verykool', 'Gazelle s4010' ], + 'verykool s4010u' => [ 'verykool', 'Gazelle s4010' ], + 'verykool s4510' => [ 'verykool', 'Luna s4510' ], + 'verykool s4510u' => [ 'verykool', 'Luna s4510' ], + 'verykool Luna s4510u' => [ 'verykool', 'Luna s4510' ], + 'verykool Luna II s4512' => [ 'verykool', 'Luna II s4512' ], + 'verykools5001' => [ 'verykool', 'Lotus s5001' ], + 'verykool s5001' => [ 'verykool', 'Lotus s5001' ], + 'verykool Lotus s5001' => [ 'verykool', 'Lotus s5001' ], + 'verykool Sol Jr s5002' => [ 'verykool', 'Sol Jr. s5002' ], + 'verykool Sol Quatro Jr s5003' => [ 'verykool', 'Sol Quatro Jr. s5003' ], + 'verykools5004' => [ 'verykool', 's5004' ], + 'verykools5005' => [ 'verykool', 'Lotus II s5005' ], + 'verykoolS5007' => [ 'verykool', 'Lotus Plus s5007' ], + 'verykool s5012' => [ 'verykool', 'Orbit s5012' ], + 'verykool Sol s5013' => [ 'verykool', 'Sol s5013' ], + 'verykool s5014' => [ 'verykool', 'Atlas s5014' ], + 'verykool Atlas s5014' => [ 'verykool', 'Atlas s5014' ], + 'verykool s5015' => [ 'verykool', 'Spark II s5015' ], + 'verykool s5015 Nextel Chile' => [ 'verykool', 'Spark II s5015' ], + 'verykool s5015 WOM Chile' => [ 'verykool', 'Spark II s5015' ], + 'verykool Sol Quatro s5016' => [ 'verykool', 'Sol Quattro s5016' ], + 'verykool s5017' => [ 'verykool', 'Dorado s5017' ], + 'VerykoolS5017Q' => [ 'verykool', 'Dorado s5017' ], + 'verykool Dorado s5017' => [ 'verykool', 'Dorado s5017' ], + 'verykool Dorado s5017Q' => [ 'verykool', 'Dorado s5017' ], + 'verykool Giant s5020' => [ 'verykool', 'Giant s5020' ], + 'verykool Helix s5025' => [ 'verykool', 'Helix s5025' ], + 'verykoolS5027' => [ 'verykool', 'Bolt Pro s5027' ], + 'VerykoolS5030' => [ 'verykool', 'Helix II s5030' ], + 'verykool s5510' => [ 'verykool', 'Juno s5510' ], + 'Verykool Juno s5510' => [ 'verykool', 'Juno s5510' ], + 'verykool s5511' => [ 'verykool', 'Juno Quatro s5511' ], + 'verykool Juno Quatro s5511' => [ 'verykool', 'Juno Quatro s5511' ], + 'verykool s5516' => [ 'verykool', 'Maverick Jr. s5516' ], + 'verykool s5518' => [ 'verykool', 'Maverick s5518' ], + 'verykool s5518Q' => [ 'verykool', 'Maverick s5518' ], + 'verykoolS5524' => [ 'verykool', 'Maverick III Jr. s5524' ], + 'verykoolS5530' => [ 'verykool', 'Maverick II s5530' ], + 'verykool Cyprus s6001' => [ 'verykool', 'Cyprus s6001' ], + 'verykool Cyprus II Jr S6004' => [ 'verykool', 'Cyprus II Jr. s6004' ], + 'verykoolS6005' => [ 'verykool', 'Cyprus II s6005' ], + 'verykoolSL4050' => [ 'verykool', 'Leo SL4050' ], + 'verykool SL4050' => [ 'verykool', 'Leo SL4050' ], + 'verykool Fusion SL4500' => [ 'verykool', 'Fusion SL4500' ], + 'verykool Fusion II SL4502' => [ 'verykool', 'Fusion II SL4502' ], + 'verykool SL5009' => [ 'verykool', 'Jet SL5009' ], + 'verykoolSL5011' => [ 'verykool', 'Spark SL5011' ], + 'verykool SL5011' => [ 'verykool', 'Spark SL5011' ], + 'VerykoolSL5550' => [ 'verykool', 'Maverick SL5550' ], + 'verykoolSL6010' => [ 'verykool', 'Cyprus SL6010' ], + 'verykool SL6010' => [ 'verykool', 'Cyprus SL6010' ], + 'verykool T742' => [ 'verykool', 'Kolorpad T742', DeviceType::TABLET ], + 'verykool T7440' => [ 'verykool', 'Kolorpad II T7440', DeviceType::TABLET ], + 'verykoolT7442' => [ 'verykool', 'Kolorpad III T7442', DeviceType::TABLET ], + 'VerykoolTL8010' => [ 'verykool', 'Kolorpad TL8010', DeviceType::TABLET ], + ], + + 's732' => [ 'verykool', 's732' ], + + 'Aster' => [ 'Vertu', 'Aster' ], + 'Aster T' => [ 'Vertu', 'Aster T' ], + 'Vertu Aster T' => [ 'Vertu', 'Aster T' ], + 'Constellation V' => [ 'Vertu', 'Constellation V' ], + 'Vertu Signature Touch' => [ 'Vertu', 'Signature Touch' ], + 'Signature Touch' => [ 'Vertu', 'Signature Touch' ], + 'Signature Touch L' => [ 'Vertu', 'Signature Touch L' ], + 'VERTU Ti' => [ 'Vertu', 'Ti' ], + 'Venus_V3 5040' => [ 'Vestel', 'Venus V3 5040' ], + 'Venus V3 5570' => [ 'Vestel', 'Venus V3 5570' ], + 'Venus V3 5580' => [ 'Vestel', 'Venus V3 5580' ], + 'VSP250g' => [ 'Vestel', 'Venus V5' ], + 'VSP250s' => [ 'Vestel', 'Venus V5' ], + + 'VT6078' => [ 'VIA', 'ALTA DS', DeviceType::SIGNAGE ], + 'victorys s8' => [ 'Victory\'s', 'S8' ], + 'Victorys V8' => [ 'Victory\'s', 'V8' ], + + 'Videocon!!' => [ + 'Videocon A10' => [ 'Videocon', 'A10' ], + 'Videocon A10F' => [ 'Videocon', 'A10F' ], + 'Videocon A15' => [ 'Videocon', 'A15' ], + 'Videocon A20' => [ 'Videocon', 'A20' ], + 'Videocon A22' => [ 'Videocon', 'A22' ], + 'Videocon A26' => [ 'Videocon', 'A26' ], + 'Videocon A27' => [ 'Videocon', 'A27' ], + 'Videocon A27i' => [ 'Videocon', 'A27i' ], + 'Videocon A30' => [ 'Videocon', 'A30' ], + 'Videocon A42' => [ 'Videocon', 'A42' ], + 'Videocon A45' => [ 'Videocon', 'A45' ], + 'Videocon A47' => [ 'Videocon', 'A47' ], + 'Videocon A51' => [ 'Videocon', 'A51' ], + 'Videocon A54' => [ 'Videocon', 'A54' ], + 'Videocon V3502' => [ 'Videocon', 'V3502' ], + 'Videocon V5014' => [ 'Videocon', 'V5014' ], + 'Videocon V7400' => [ 'Videocon', 'V7400' ], + 'Videocon v7500' => [ 'Videocon', 'V7500' ], + 'Videocon-V7500' => [ 'Videocon', 'V7500' ], + 'Videocon VA75K' => [ 'Videocon', 'VA75K', DeviceType::TABLET ], + 'Videocon VT85C' => [ 'Videocon', 'VT85C' ], + 'Videocon V50FA3' => [ 'Videocon', 'Krypton V50FA' ], + 'Videocon Z40Lite' => [ 'Videocon', 'Infinium Z40 Lite' ], + 'Videocon Z40Lite+' => [ 'Videocon', 'Infinium Z40 Lite+' ], + 'Videocon Z41 AIRE' => [ 'Videocon', 'Infinium Z41 Aire' ], + 'VIDEOCON Z55 Dash' => [ 'Videocon', 'Infinium Z55 Dash' ], + 'VIDEOCON Z55 Delite' => [ 'Videocon', 'Infinium Z55 Delite' ], + 'VIDEOCON Z55 Krypton' => [ 'Videocon', 'Infinium Z55 Krypton' ], + 'Videocon Z55Krypton' => [ 'Videocon', 'Infinium Z55 Krypton' ], + 'VIDEOCON ZEST FLAME' => [ 'Videocon', 'Zest Flame' ], + 'VIDEOCON ZEST FLASH' => [ 'Videocon', 'Zest Flash' ], + 'Videocon V35DC' => [ 'Videocon', 'Zest V35DC' ], + ], + + 'Z30Aire' => [ 'Videocon', 'Infinium Z30 Aire' ], + 'Z30Dart' => [ 'Videocon', 'Infinium Z30 Dart' ], + 'Z30Lite' => [ 'Videocon', 'Infinium Z30 Lite' ], + 'Z30PACE' => [ 'Videocon', 'Infinium Z30 Pace' ], + 'Z40Lite+' => [ 'Videocon', 'Infinium Z40 Lite+' ], + 'Z40Pro' => [ 'Videocon', 'Infinium Z40 Pro' ], + 'Z4OPro' => [ 'Videocon', 'Infinium Z40 Pro' ], + 'Z40ProLite' => [ 'Videocon', 'Infinium Z40 Pro Lite' ], + 'Z4OProLite' => [ 'Videocon', 'Infinium Z40 Pro Lite' ], + 'Z40QStar' => [ 'Videocon', 'Infinium Z40Q Star' ], + 'Z41 AIRE' => [ 'Videocon', 'Infinium Z41 Aire' ], + 'Z41Aire' => [ 'Videocon', 'Infinium Z41 Aire' ], + 'Z41Lite+' => [ 'Videocon', 'Infinium Z41 Lite+' ], + 'Z42 Nova' => [ 'Videocon', 'Infinium Z42 Nova' ], + 'Z45 Amaze' => [ 'Videocon', 'Infinium Z45 Amaze' ], + 'Z45 Dazzle' => [ 'Videocon', 'Infinium Z45 Dazzle' ], + 'Z45 Nova' => [ 'Videocon', 'Infinium Z45 Nova' ], + 'Z45 Nova+' => [ 'Videocon', 'Infinium Z45 Nova+' ], + 'Z45 Quad' => [ 'Videocon', 'Infinium Z45 Quad' ], + 'Z45Q Star' => [ 'Videocon', 'Infinium Z45Q Star' ], + 'Z45Q Star+' => [ 'Videocon', 'Infinium Z45Q Star+' ], + 'Z50 Nova' => [ 'Videocon', 'Infinium Z50 Nova' ], + 'Z50Pro' => [ 'Videocon', 'Infinium Z50 Pro' ], + 'Z50 Quad' => [ 'Videocon', 'Infinium Z50 Quad' ], + 'Z50Q Lite' => [ 'Videocon', 'Infinium Z50Q Lite' ], + 'Z50Q Star' => [ 'Videocon', 'Infinium Z50Q Star' ], + 'Z51 blaze' => [ 'Videocon', 'Infinium Z51 Blaze' ], + 'Z51 Nova' => [ 'Videocon', 'Infinium Z51 Nova' ], + 'Z51 Nova+' => [ 'Videocon', 'Infinium Z51 Nova+' ], + 'Z51 PUNCH' => [ 'Videocon', 'Infinium Z51 Punch' ], + 'Z51 Quad' => [ 'Videocon', 'Infinium Z51 Quad' ], + 'Z51Q Star' => [ 'Videocon', 'Infinium Z51Q Star' ], + 'Z52 Inspire' => [ 'Videocon', 'Infinium Z52 Inspire' ], + 'Z52 Thunder' => [ 'Videocon', 'Infinium Z52 Thunder' ], + 'Z52 Thunder+' => [ 'Videocon', 'Infinium Z52 Thunder+' ], + + 'VT75C' => [ 'Videocon', 'VT75C' ], + 'VT77C' => [ 'Videocon', 'VT77C' ], + 'VT79C' => [ 'Videocon', 'VT79C' ], + 'VT87C+' => [ 'Videocon', 'VT87C+' ], + + 'ViewSonic-V350' => [ 'ViewSonic', 'V350' ], + 'ViewSonic V500' => [ 'ViewSonic', 'V500' ], + 'ViewPhone3' => [ 'ViewSonic', 'ViewPhone 3' ], + 'GTablet' => [ 'ViewSonic', 'gTablet', DeviceType::TABLET ], + 'GtabComb' => [ 'ViewSonic', 'gTablet', DeviceType::TABLET ], + 'TeamDRH ICS for GTablet' => [ 'ViewSonic', 'gTablet', DeviceType::TABLET ], + 'ViewPad 4' => [ 'ViewSonic', 'ViewPad 4', DeviceType::MEDIA ], + 'ViewSonic-ViewPad4' => [ 'ViewSonic', 'ViewPad 4', DeviceType::MEDIA ], + 'ViewPad7' => [ 'ViewSonic', 'ViewPad 7', DeviceType::TABLET ], + 'ViewPad 7D' => [ 'ViewSonic', 'ViewPad 7d', DeviceType::TABLET ], + 'ViewPad 7D Pro' => [ 'ViewSonic', 'ViewPad 7d Pro', DeviceType::TABLET ], + 'ViewSonic-ViewPad7e' => [ 'ViewSonic', 'ViewPad 7e', DeviceType::TABLET ], + 'ViewPad7e' => [ 'ViewSonic', 'ViewPad 7e', DeviceType::TABLET ], + 'ViewPad 7Q' => [ 'ViewSonic', 'ViewPad 7q', DeviceType::TABLET ], + 'ViewPad 7Q Plus' => [ 'ViewSonic', 'ViewPad 7q Plus', DeviceType::TABLET ], + 'ViewPad 7Q Pro' => [ 'ViewSonic', 'ViewPad 7q Pro', DeviceType::TABLET ], + 'ViewPad7X' => [ 'ViewSonic', 'ViewPad 7x', DeviceType::TABLET ], + 'ViewPad 8E' => [ 'ViewSonic', 'ViewPad 8e', DeviceType::TABLET ], + 'ViewPad 9Q' => [ 'ViewSonic', 'ViewPad 9q', DeviceType::TABLET ], + 'ViewPad 10e' => [ 'ViewSonic', 'ViewPad 10e', DeviceType::TABLET ], + 'ViewPad 10S' => [ 'ViewSonic', 'ViewPad 10s', DeviceType::TABLET ], + 'ViewPad 70Q' => [ 'ViewSonic', 'ViewPad 70q', DeviceType::TABLET ], + 'ViewPad97A' => [ 'ViewSonic', 'ViewPad 97a', DeviceType::TABLET ], + 'ViewPad97a K1' => [ 'ViewSonic', 'ViewPad 97a K1', DeviceType::TABLET ], + 'ViewPad97a Pro' => [ 'ViewSonic', 'ViewPad 97a Pro', DeviceType::TABLET ], + 'ViewPad 97Q' => [ 'ViewSonic', 'ViewPad 97q', DeviceType::TABLET ], + 'ViewPad 100Q' => [ 'ViewSonic', 'ViewPad 100q', DeviceType::TABLET ], + 'ViewPad 100N Pro' => [ 'ViewSonic', 'ViewPad 100n Pro', DeviceType::TABLET ], + 'ViewPad 701N' => [ 'ViewSonic', 'ViewPad 701n', DeviceType::TABLET ], + 'ViewPad i7D' => [ 'ViewSonic', 'ViewPad i7D', DeviceType::TABLET ], + 'ViewPad E100' => [ 'ViewSonic', 'ViewPad E100', DeviceType::TABLET ], + 'ZiiLABS ViewBook 730' => [ 'ViewSonic', 'ViewBook VB730', DeviceType::TABLET ], + 'ViewSonic VB733' => [ 'ViewSonic', 'ViewPad VB733', DeviceType::TABLET ], + 'VSD220' => [ 'ViewSonic', 'VSD220 Smart Display', DeviceType::MONITOR ], + 'VSD221' => [ 'ViewSonic', 'VSD221 Smart Display', DeviceType::MONITOR ], + 'VSD224' => [ 'ViewSonic', 'VSD224 Smart Display', DeviceType::MONITOR ], + 'VSD231' => [ 'ViewSonic', 'VSD231 Smart Display', DeviceType::MONITOR ], + 'VSD241' => [ 'ViewSonic', 'VSD241 Smart Display', DeviceType::MONITOR ], + + 'VINUS!!' => [ + 'VINUS V6' => [ 'Vinus', 'V6' ], + 'VINUS-V6' => [ 'Vinus', 'V6' ], + 'VINUS V8' => [ 'Vinus', 'V8' ], + 'VINUS V9' => [ 'Vinus', 'V9' ], + 'VINUS V10' => [ 'Vinus', 'V10' ], + 'VINUS X2' => [ 'Vinus', 'X2' ], + ], + + 'VL-[0-9]{3,3}!!' => [ + 'VL-107!' => [ 'Visual Land', 'Prestige 7', DeviceType::TABLET ], + 'VL-109' => [ 'Visual Land', 'Connect 9', DeviceType::TABLET ], + 'VL-110' => [ 'Visual Land', 'Prestige 10', DeviceType::TABLET ], + 'VL-879' => [ 'Visual Land', 'Connect 7', DeviceType::TABLET ], + ], + + 'PRO7D' => [ 'Visual Land', 'Prestige 7D', DeviceType::TABLET ], + + 'ST-PAD' => [ 'Vitsmo', 'ST PAD', DeviceType::TABLET ], + 'ST-PAD2' => [ 'Vitsmo', 'ST PAD2', DeviceType::TABLET ], + + 'TPC-7151' => [ 'Vivax', 'TPC-7151', DeviceType::TABLET ], + + '(BBG-|VIV-)?vivo!!' => [ + 'vivo E1' => [ 'Vivo', 'E1' ], + 'vivo E1t' => [ 'Vivo', 'E1t' ], + 'vivo E3' => [ 'Vivo', 'E3' ], + 'vivo E5' => [ 'Vivo', 'E5' ], + 'vivo S1' => [ 'Vivo', 'S1' ], + 'vivo S3' => [ 'Vivo', 'S3' ], + 'vivo S3+' => [ 'Vivo', 'S3+' ], + 'vivo S6' => [ 'Vivo', 'S6' ], + 'vivo S6T' => [ 'Vivo', 'S6T' ], + 'vivo S7' => [ 'Vivo', 'S7' ], + 'vivo S7w' => [ 'Vivo', 'S7W' ], + 'vivo S9!' => [ 'Vivo', 'S9' ], + 'vivo S1' => [ 'Vivo', 'S1' ], + 'vivo S6' => [ 'Vivo', 'S6' ], + 'vivo S7i(t)' => [ 'Vivo', 'S7' ], + 'vivo S7t' => [ 'Vivo', 'S7' ], + 'vivo S9t' => [ 'Vivo', 'S9' ], + 'vivo S11' => [ 'Vivo', 'S11' ], + 'vivo S11t' => [ 'Vivo', 'S11' ], + 'vivo S12' => [ 'Vivo', 'S12' ], + 'vivo V1' => [ 'Vivo', 'V1' ], + 'vivo V1Max' => [ 'Vivo', 'V1 Max' ], + 'vivo V2' => [ 'Vivo', 'V2' ], + 'vivo V3' => [ 'Vivo', 'V3' ], + 'vivo V3L' => [ 'Vivo', 'V3L' ], + 'vivo V3Max' => [ 'Vivo', 'V3 Max' ], + 'vivo V3Max A' => [ 'Vivo', 'V3 Max A' ], + 'vivo V3Max L' => [ 'Vivo', 'V3 Max L' ], + 'vivo V3M A' => [ 'Vivo', 'V3 Max A' ], + 'vivo V3Max+ A' => [ 'Vivo', 'V3 Max+ A' ], + 'vivo 1601' => [ 'Vivo', 'V5' ], + 'vivo 1612' => [ 'Vivo', 'V5' ], + 'vivo 1713' => [ 'Vivo', 'V5S' ], + 'vivo 1611' => [ 'Vivo', 'V5 Plus' ], + 'vivo 1718' => [ 'Vivo', 'V7' ], + 'vivo 1716' => [ 'Vivo', 'V7 Plus' ], + 'vivo X1' => [ 'Vivo', 'X1' ], + 'vivo X1S' => [ 'Vivo', 'X1S' ], + 'vivo X1St' => [ 'Vivo', 'X1S' ], + 'vivo X1w' => [ 'Vivo', 'X1W' ], + 'VIVO X2' => [ 'Vivo', 'X2' ], + 'vivo X3F' => [ 'Vivo', 'X3F' ], + 'vivo X3L' => [ 'Vivo', 'X3L' ], + 'vivo X3S' => [ 'Vivo', 'X3S' ], + 'vivo X3S W' => [ 'Vivo', 'X3SW' ], + 'vivo X3SW' => [ 'Vivo', 'X3SW' ], + 'vivo X3t' => [ 'Vivo', 'X3T' ], + 'BBG-vivo X3V!' => [ 'Vivo', 'X3V' ], + 'vivo X3V' => [ 'Vivo', 'X3V' ], + 'vivo X5' => [ 'Vivo', 'X5' ], + 'vivo X5F' => [ 'Vivo', 'X5F' ], + 'vivo X5L' => [ 'Vivo', 'X5L' ], + 'vivo X5M' => [ 'Vivo', 'X5M' ], + 'vivo X5S L' => [ 'Vivo', 'X5S L' ], + 'vivo X5SL' => [ 'Vivo', 'X5S L' ], + 'BBG-vivo X5V!' => [ 'Vivo', 'X5V' ], + 'VIV-vivo X5V!' => [ 'Vivo', 'X5V' ], + 'vivo X5V' => [ 'Vivo', 'X5V' ], + 'vivo X5Max' => [ 'Vivo', 'X5 Max' ], + 'X5max' => [ 'Vivo', 'X5 Max' ], + 'vivo X5Max+' => [ 'Vivo', 'X5 Max+' ], + 'vivo X5Max F' => [ 'Vivo', 'X5 Max F' ], + 'vivo X5Max L' => [ 'Vivo', 'X5 Max L' ], + 'vivo X5MaxL' => [ 'Vivo', 'X5 Max L' ], + 'vivo X5Max S' => [ 'Vivo', 'X5 Max S' ], + 'VIV-vivo X5Max S!' => [ 'Vivo', 'X5 Max S' ], + 'VIV-vivo X5Max V' => [ 'Vivo', 'X5 Max V' ], + 'vivo X5MaxV' => [ 'Vivo', 'X5 Max V' ], + 'vivo X5Max V' => [ 'Vivo', 'X5 Max V' ], + 'vivo X5Pro' => [ 'Vivo', 'X5 Pro' ], + 'vivo X5Pro D' => [ 'Vivo', 'X5 Pro D' ], + 'vivo X5Pro L' => [ 'Vivo', 'X5 Pro L' ], + 'VIV-vivo X5Pro V' => [ 'Vivo', 'X5 Pro V' ], + 'vivo X5Pro V' => [ 'Vivo', 'X5 Pro V' ], + 'vivo PD1515A' => [ 'Vivo', 'X6 Plus A' ], + 'vivo X6Plus A' => [ 'Vivo', 'X6 Plus A' ], + 'vivo PD1501D' => [ 'Vivo', 'X6 Plus D' ], + 'vivo X6Plus D' => [ 'Vivo', 'X6 Plus D' ], + 'vivo X6Plus L' => [ 'Vivo', 'X6 Plus L' ], + 'vivo X6A' => [ 'Vivo', 'X6A' ], + 'vivo PD1415A' => [ 'Vivo', 'X6A' ], + 'vivo X6D' => [ 'Vivo', 'X6D' ], + 'vivo X6L' => [ 'Vivo', 'X6L' ], + 'vivo X6S' => [ 'Vivo', 'X6S' ], + 'vivo X6S A' => [ 'Vivo', 'X6S A' ], + 'vivo X6SPlus' => [ 'Vivo', 'X6S Plus' ], + 'vivo X6SPlus A' => [ 'Vivo', 'X6S Plus A' ], + 'vivo PD1515BA' => [ 'Vivo', 'X6S Plus A' ], + 'vivo X6SPlus D' => [ 'Vivo', 'X6S Plus D' ], + 'vivo X7' => [ 'Vivo', 'X7' ], + 'vivo X7L' => [ 'Vivo', 'X7L' ], + 'vivo X7Plus' => [ 'Vivo', 'X7 Plus' ], + 'vivo X7Plus L' => [ 'Vivo', 'X7 Plus L' ], + 'vivo X9' => [ 'Vivo', 'X9' ], + 'vivo X9i' => [ 'Vivo', 'X9i' ], + 'vivo X9L' => [ 'Vivo', 'X9L' ], + 'vivo X9Plus' => [ 'Vivo', 'X9 Plus' ], + 'vivo X9Plus L' => [ 'Vivo', 'X9 Plus L' ], + 'vivo X9s' => [ 'Vivo', 'X9s' ], + 'vivo X9s L' => [ 'Vivo', 'X9s L' ], + 'vivo X9s Plus' => [ 'Vivo', 'X9s Plus' ], + 'vivo X9s Plus L' => [ 'Vivo', 'X9s Plus L' ], + 'vivo X20' => [ 'Vivo', 'X20' ], + 'vivo X20Plus' => [ 'Vivo', 'X20 Plus' ], + 'vivo X20A' => [ 'Vivo', 'X20 A' ], + 'vivo X20Plus A' => [ 'Vivo', 'X20 Plus A' ], + 'vivo Xplay' => [ 'Vivo', 'Xplay' ], + 'vivo X510t' => [ 'Vivo', 'Xplay' ], + 'vivo Xplay2' => [ 'Vivo', 'Xplay 2' ], + 'vivo Xplay2S' => [ 'Vivo', 'Xplay 2S' ], + 'vivo X520L' => [ 'Vivo', 'Xplay 3S' ], + 'vivo Xplay3S' => [ 'Vivo', 'Xplay 3S' ], + 'vivo Xplay3S A' => [ 'Vivo', 'Xplay 3S' ], + 'vivo Xplay5A' => [ 'Vivo', 'Xplay 5A' ], + 'vivo Xplay5S' => [ 'Vivo', 'Xplay 5S' ], + 'vivo PD1516A' => [ 'Vivo', 'Xplay 5S' ], + 'vivo Xplay6' => [ 'Vivo', 'Xplay 6' ], + 'vivo Xplay6L' => [ 'Vivo', 'Xplay 6L' ], + 'vivo X710F' => [ 'Vivo', 'Xshot' ], + 'vivo X710L' => [ 'Vivo', 'Xshot' ], + 'vivo Xshot' => [ 'Vivo', 'Xshot' ], + 'vivo Xshoot' => [ 'Vivo', 'Xshot' ], + 'vivo Y1' => [ 'Vivo', 'Y1' ], + 'vivo Y3t' => [ 'Vivo', 'Y3T' ], + 'vivo Y11' => [ 'Vivo', 'Y11' ], + 'vivo Y11i T' => [ 'Vivo', 'Y11i T' ], + 'vivo Y11iW' => [ 'Vivo', 'Y11i W' ], + 'vivo Y11t' => [ 'Vivo', 'Y11T' ], + 'vivo Y13' => [ 'Vivo', 'Y13' ], + 'vivo Y13iL' => [ 'Vivo', 'Y13i L' ], + 'vivo Y13L' => [ 'Vivo', 'Y13L' ], + 'vivo Y13T' => [ 'Vivo', 'Y13T' ], + 'vivo Y15' => [ 'Vivo', 'Y15' ], + 'vivoY15' => [ 'Vivo', 'Y15' ], + 'vivo Y15S' => [ 'Vivo', 'Y15S' ], + 'vivo Y15T' => [ 'Vivo', 'Y15T' ], + 'VIVO-Y15T' => [ 'Vivo', 'Y15T' ], + 'vivo Y15W' => [ 'Vivo', 'Y15W' ], + 'vivo Y17T' => [ 'Vivo', 'Y17T' ], + 'vivo Y17W' => [ 'Vivo', 'Y17W' ], + 'vivo Y18L' => [ 'Vivo', 'Y18L' ], + 'vivo Y19t' => [ 'Vivo', 'Y19T' ], + 'vivo Y20T' => [ 'Vivo', 'Y20T' ], + 'vivo Y21' => [ 'Vivo', 'Y21' ], + 'vivo Y21L' => [ 'Vivo', 'Y21L' ], + 'vivo Y22' => [ 'Vivo', 'Y22' ], + 'vivo Y22iL' => [ 'Vivo', 'Y22i L' ], + 'vivo Y22L' => [ 'Vivo', 'Y22L' ], + 'vivo Y22T' => [ 'Vivo', 'Y22T' ], + 'vivo Y23L' => [ 'Vivo', 'Y23L' ], + 'vivo 1613' => [ 'Vivo', 'Y25' ], + 'vivo Y27' => [ 'Vivo', 'Y27' ], + 'vivo Y27L' => [ 'Vivo', 'Y27L' ], + 'vivo Y28' => [ 'Vivo', 'Y28' ], + 'vivo Y28L' => [ 'Vivo', 'Y28L' ], + 'vivo Y29L' => [ 'Vivo', 'Y29L' ], + 'vivo Y31' => [ 'Vivo', 'Y31' ], + 'vivo Y31A' => [ 'Vivo', 'Y31A' ], + 'vivo Y31L' => [ 'Vivo', 'Y31L' ], + 'vivo Y31i' => [ 'Vivo', 'Y31i' ], + 'vivo Y33' => [ 'Vivo', 'Y33' ], + 'vivo Y33L' => [ 'Vivo', 'Y33L' ], + 'vivo Y35' => [ 'Vivo', 'Y35' ], + 'vivo Y35A' => [ 'Vivo', 'Y35A' ], + 'vivo Y35L' => [ 'Vivo', 'Y35L' ], + 'vivo Y37' => [ 'Vivo', 'Y37' ], + 'vivo Y37A' => [ 'Vivo', 'Y37A' ], + 'vivo Y51' => [ 'Vivo', 'Y51' ], + 'vivo Y51A' => [ 'Vivo', 'Y51A' ], + 'vivo Y51L' => [ 'Vivo', 'Y51L' ], + 'vivo Y51n' => [ 'Vivo', 'Y51n' ], + 'vivo Y51t L' => [ 'Vivo', 'Y51t L' ], + 'vivo 1606' => [ 'Vivo', 'Y53' ], + 'vivo Y53' => [ 'Vivo', 'Y53' ], + 'vivo Y53L' => [ 'Vivo', 'Y53L' ], + 'vivo Y53n' => [ 'Vivo', 'Y53n' ], + 'vivo Y55' => [ 'Vivo', 'Y55' ], + 'vivo Y55A' => [ 'Vivo', 'Y55A' ], + 'vivo Y55L' => [ 'Vivo', 'Y55L' ], + 'vivo 1603' => [ 'Vivo', 'Y55L' ], + 'vivo 1610' => [ 'Vivo', 'Y55s' ], + 'vivo Y66' => [ 'Vivo', 'Y66' ], + 'vivo 1609' => [ 'Vivo', 'Y66' ], + 'vivo Y66L' => [ 'Vivo', 'Y66L' ], + 'vivo Y67' => [ 'Vivo', 'Y67' ], + 'vivo Y67A' => [ 'Vivo', 'Y67A' ], + 'vivo Y67L' => [ 'Vivo', 'Y67L' ], + 'vivo 1714' => [ 'Vivo', 'Y69' ], + 'vivo Y613' => [ 'Vivo', 'Y613' ], + 'vivo Y613F' => [ 'Vivo', 'Y613F' ], + 'vivo Y622' => [ 'Vivo', 'Y622' ], + 'vivo Y623' => [ 'Vivo', 'Y623' ], + 'vivo Y627' => [ 'Vivo', 'Y627' ], + 'vivo Y628' => [ 'Vivo', 'Y628' ], + 'vivo Y913' => [ 'Vivo', 'Y913' ], + 'VIV-vivo Y913' => [ 'Vivo', 'Y913' ], + 'VIV-vivo Y923' => [ 'Vivo', 'Y923' ], + 'vivo Y923' => [ 'Vivo', 'Y923' ], + 'vivo Y927' => [ 'Vivo', 'Y927' ], + 'vivo Y928' => [ 'Vivo', 'Y928' ], + 'VIV-vivo Y928' => [ 'Vivo', 'Y928' ], + 'VIV-vivo Y937' => [ 'Vivo', 'Y937' ], + 'vivo Y937' => [ 'Vivo', 'Y937' ], + ], + + 'VTAB1008' => [ 'Vizio', 'VTAB1008', DeviceType::TABLET ], + 'VTAB3010' => [ 'Vizio', 'VTAB3010', DeviceType::TABLET ], + 'VAP430' => [ 'Vizio', 'Co-Star', DeviceType::TELEVISION, Flag::GOOGLETV ], + 'Xtreme V10' => [ 'Voice', 'Xtreme V10' ], + 'Xtreme V10i' => [ 'Voice', 'Xtreme V10i' ], + 'Xtreme V12' => [ 'Voice', 'Xtreme V12' ], + 'Xtreme V15' => [ 'Voice', 'Xtreme V15' ], + 'Xtreme V20' => [ 'Voice', 'Xtreme V20' ], + 'Xtreme V21' => [ 'Voice', 'Xtreme V21' ], + 'Xtreme V22' => [ 'Voice', 'Xtreme V22' ], + 'Xtreme V25' => [ 'Voice', 'Xtreme V25' ], + 'Xtreme-V30' => [ 'Voice', 'Xtreme V30' ], + 'Xtreme V40i' => [ 'Voice', 'Xtreme V40i' ], + 'Xtreme V44' => [ 'Voice', 'Xtreme V44' ], + 'vollo Vi86' => [ 'VOLLO', 'Vi86' ], + + 'ACU Volvo' => [ 'Volvo', 'Sensus Connected Touch', DeviceType::CAR ], + + 'VOTO GT2++' => [ 'VOTO', 'GT2++' ], + 'VOTO GT7' => [ 'VOTO', 'GT7' ], + 'VOTO GT11' => [ 'VOTO', 'GT11' ], + 'VOTO GT11 Pro' => [ 'VOTO', 'GT11 Pro' ], + 'VOTO GT18' => [ 'VOTO', 'GT18' ], + 'VOTO V5' => [ 'VOTO', 'V5' ], + 'VOTO VT868' => [ 'VOTO', 'VT868' ], + 'VOTO VT888' => [ 'VOTO', 'VT888' ], + 'VOTO VT898' => [ 'VOTO', 'VT898' ], + 'VOTO VT898S' => [ 'VOTO', 'VT898S' ], + 'VOTO W5300' => [ 'VOTO', 'W5300' ], + 'VOTO X2' => [ 'VOTO', 'X2' ], + 'VOYO A15' => [ 'Voyo', 'A15', DeviceType::TABLET ], + 'voyo X6' => [ 'Voyo', 'X6', DeviceType::TABLET ], + 'Vsun HEXA' => [ 'Vsun', 'Hexa' ], + 'VSUN ILLUSION' => [ 'Vsun', 'Illusion' ], + 'VSUN RACE' => [ 'Vsun', 'Race' ], + 'Vsun SPARK' => [ 'Vsun', 'Spark' ], + 'VSUN TOUCH' => [ 'Vsun', 'Touch' ], + 'Vsun D3B' => [ 'Vsun', 'D3B' ], + 'Vsun H3' => [ 'Vsun', 'H3' ], + 'Vsun H9' => [ 'Vsun', 'H9' ], + 'Vsun i1' => [ 'Vsun', 'i1' ], + 'Vsun i5' => [ 'Vsun', 'i5' ], + 'Vsun i9' => [ 'Vsun', 'i9' ], + 'Vsun V9' => [ 'Vsun', 'V9' ], + 'WALSUN S1 Pro' => [ 'Walsun', 'S1 Pro' ], + 'WALSUN S2' => [ 'Walsun', 'S2' ], + 'Walton Primo' => [ 'Walton', 'Primo' ], + 'WALTON Primo C1' => [ 'Walton', 'Primo C1' ], + 'Primo C2' => [ 'Walton', 'Primo C2' ], + 'Primo C3 3G' => [ 'Walton', 'Primo C3' ], + 'Primo C3' => [ 'Walton', 'Primo C3' ], + 'PrimoC4' => [ 'Walton', 'Primo C4' ], + 'WALTON Primo-D1' => [ 'Walton', 'Primo D1' ], + 'Primo-D1' => [ 'Walton', 'Primo D1' ], + 'Primo D2' => [ 'Walton', 'Primo D2' ], + 'Primo D3' => [ 'Walton', 'Primo D3' ], + 'Primo D4' => [ 'Walton', 'Primo D4' ], + 'Primo D5' => [ 'Walton', 'Primo D5' ], + 'Primo D6' => [ 'Walton', 'Primo D6' ], + 'Primo D7' => [ 'Walton', 'Primo D7' ], + 'Primo E1' => [ 'Walton', 'Primo E1' ], + 'Primo E2' => [ 'Walton', 'Primo E2' ], + 'PRIMO E3' => [ 'Walton', 'Primo E3' ], + 'Primo E4' => [ 'Walton', 'Primo E4' ], + 'Primo E4+' => [ 'Walton', 'Primo E4+' ], + 'Primo E5' => [ 'Walton', 'Primo E5' ], + 'Primo E6' => [ 'Walton', 'Primo E6' ], + 'Primo E7' => [ 'Walton', 'Primo E7' ], + 'Primo E7 Plus' => [ 'Walton', 'Primo E7+' ], + 'WALTON Primo E8+' => [ 'Walton', 'Primo E8+' ], + 'Primo EF' => [ 'Walton', 'Primo EF' ], + 'Primo EF2' => [ 'Walton', 'Primo EF2' ], + 'Primo EF3' => [ 'Walton', 'Primo EF3' ], + 'Primo EF4' => [ 'Walton', 'Primo EF4' ], + 'Primo EF4+' => [ 'Walton', 'Primo EF4+' ], + 'Primo EM' => [ 'Walton', 'Primo EM' ], + 'Primo F1' => [ 'Walton', 'Primo F1' ], + 'Walton F2' => [ 'Walton', 'Primo F2' ], + 'Primo F2' => [ 'Walton', 'Primo F2' ], + 'Primo-F2' => [ 'Walton', 'Primo F2' ], + 'Walton Primo F2' => [ 'Walton', 'Primo F2' ], + 'Primo F3' => [ 'Walton', 'Primo F3' ], + 'Primo F3i' => [ 'Walton', 'Primo F3i' ], + 'Primo F4' => [ 'Walton', 'Primo F4' ], + 'Primo F5' => [ 'Walton', 'Primo F5' ], + 'Primo F6' => [ 'Walton', 'Primo F6' ], + 'Primo F7' => [ 'Walton', 'Primo F7' ], + 'WALTON Primo-G1' => [ 'Walton', 'Primo G1' ], + 'WALTON Primo G1' => [ 'Walton', 'Primo G1' ], + 'Primo-G1' => [ 'Walton', 'Primo G1' ], + 'Primo G1' => [ 'Walton', 'Primo G1' ], + 'Primo G2' => [ 'Walton', 'Primo G2' ], + 'Primo-G3' => [ 'Walton', 'Primo G3' ], + 'Primo G4' => [ 'Walton', 'Primo G4' ], + 'Primo G5' => [ 'Walton', 'Primo G5' ], + 'Primo G6' => [ 'Walton', 'Primo G6' ], + 'Primo-GF' => [ 'Walton', 'Primo GF' ], + 'Primo GF2' => [ 'Walton', 'Primo GF2' ], + 'Primo GF3' => [ 'Walton', 'Primo GF3' ], + 'Primo GF4' => [ 'Walton', 'Primo GF4' ], + 'Primo GH' => [ 'Walton', 'Primo GH' ], + 'Primo GH+' => [ 'Walton', 'Primo GH+' ], + 'Primo-GH2' => [ 'Walton', 'Primo GH2' ], + 'Walton-GH2' => [ 'Walton', 'Primo GH2' ], + 'Primo GH2' => [ 'Walton', 'Primo GH2' ], + 'Primo GH2 [AOSP]' => [ 'Walton', 'Primo GH2' ], + 'Primo-GH2 (AOSP KITKAT)' => [ 'Walton', 'Primo GH2' ], + 'Primo GH3' => [ 'Walton', 'Primo GH3' ], + 'Primo-GH3' => [ 'Walton', 'Primo GH3' ], + 'Primo GH4' => [ 'Walton', 'Primo GH4' ], + 'Primo GH5' => [ 'Walton', 'Primo GH5' ], + 'Primo GH5 Plus' => [ 'Walton', 'Primo GH5+' ], + 'Primo GH5 mini' => [ 'Walton', 'Primo GH5 mini' ], + 'Primo GH6' => [ 'Walton', 'Primo GH6' ], + 'Primo GH6+' => [ 'Walton', 'Primo GH6+' ], + 'Primo GM' => [ 'Walton', 'Primo GM' ], + 'Primo GM mini' => [ 'Walton', 'Primo GM mini' ], + 'Walton Primo H1' => [ 'Walton', 'Primo H1' ], + 'Primo H2' => [ 'Walton', 'Primo H2' ], + 'Primo-H3' => [ 'Walton', 'Primo H3' ], + 'Primo H3' => [ 'Walton', 'Primo H3' ], + 'Walton Primo H3' => [ 'Walton', 'Primo H3' ], + 'WALTON H3' => [ 'Walton', 'Primo H3' ], + 'Primo H4' => [ 'Walton', 'Primo H4' ], + 'Primo H5' => [ 'Walton', 'Primo H5' ], + 'Primo H6' => [ 'Walton', 'Primo H6' ], + 'Primo HM' => [ 'Walton', 'Primo HM' ], + 'WALTON Primo HMmini' => [ 'Walton', 'Primo HM mini' ], + 'Primo HM2' => [ 'Walton', 'Primo HM2' ], + 'Primo HM3' => [ 'Walton', 'Primo HM3' ], + 'Primo HM3+' => [ 'Walton', 'Primo HM3+' ], + 'Primo-N' => [ 'Walton', 'Primo N' ], + 'WALTON Primo-N1' => [ 'Walton', 'Primo N1' ], + 'Primo-N1' => [ 'Walton', 'Primo N1' ], + 'Primo N2' => [ 'Walton', 'Primo N2' ], + 'Primo NF' => [ 'Walton', 'Primo NF' ], + 'Primo NF+' => [ 'Walton', 'Primo NF+' ], + 'Primo NF2' => [ 'Walton', 'Primo NF2' ], + 'Primo NF2+' => [ 'Walton', 'Primo NF2+' ], + 'Primo NH' => [ 'Walton', 'Primo NH' ], + 'Primo NH Lite' => [ 'Walton', 'Primo NH Lite' ], + 'Primo NH2 Lite' => [ 'Walton', 'Primo NH2 Lite' ], + 'Primo NH3 Lite' => [ 'Walton', 'Primo NH3 Lite' ], + 'Primo NX' => [ 'Walton', 'Primo NX' ], + 'Primo NX2' => [ 'Walton', 'Primo NX2' ], + 'Primo NX3' => [ 'Walton', 'Primo NX3' ], + 'Primo NX3 Plus' => [ 'Walton', 'Primo NX3 Plus' ], + 'Primo NX4 mini' => [ 'Walton', 'Primo NX4 Mini' ], + 'Walton Primo R1' => [ 'Walton', 'Primo R1' ], + 'Primo R1' => [ 'Walton', 'Primo R1' ], + 'Primo R2' => [ 'Walton', 'Primo R2' ], + 'Primo R3' => [ 'Walton', 'Primo R3' ], + 'Primo R4' => [ 'Walton', 'Primo R4' ], + 'Primo R4 Plus' => [ 'Walton', 'Primo R4 Plus' ], + 'Primo R4s' => [ 'Walton', 'Primo R4s' ], + 'Primo RH' => [ 'Walton', 'Primo RH' ], + 'Primo RH2' => [ 'Walton', 'Primo RH2' ], + 'Primo RM' => [ 'Walton', 'Primo RM' ], + 'Walton RM2' => [ 'Walton', 'Primo RM2' ], + 'Primo RM2' => [ 'Walton', 'Primo RM2' ], + 'Primo RM2 mini' => [ 'Walton', 'Primo RM2 mini' ], + 'Primo RX' => [ 'Walton', 'Primo RX' ], + 'Primo RX2' => [ 'Walton', 'Primo RX2' ], + 'PrimoRX2' => [ 'Walton', 'Primo RX2' ], + 'Primo RX3' => [ 'Walton', 'Primo RX3' ], + 'Primo RX4' => [ 'Walton', 'Primo RX4' ], + 'Primo RX5' => [ 'Walton', 'Primo RX5' ], + 'Primo S1' => [ 'Walton', 'Primo S1' ], + 'PrimoS2' => [ 'Walton', 'Primo S2' ], + 'WALTON Primo S3' => [ 'Walton', 'Primo S3' ], + 'Primo S3' => [ 'Walton', 'Primo S3' ], + 'Primo S3 mini' => [ 'Walton', 'Primo S3 mini' ], + 'Primo S4' => [ 'Walton', 'Primo S4' ], + 'Primo V1' => [ 'Walton', 'Primo V1' ], + 'Primo V2' => [ 'Walton', 'Primo V2' ], + 'Primo VX' => [ 'Walton', 'Primo VX' ], + 'Primo VX+' => [ 'Walton', 'Primo VX+' ], + 'Walton Primo VX+' => [ 'Walton', 'Primo VX+' ], + '(WALTON )?Primo-X1!' => [ 'Walton', 'Primo X1' ], + 'Primo-X2' => [ 'Walton', 'Primo X2' ], + 'Primo X2mini' => [ 'Walton', 'Primo X2 mini' ], + 'Primo X3' => [ 'Walton', 'Primo X3' ], + 'Primo X3mini' => [ 'Walton', 'Primo X3 mini' ], + 'Primo X4' => [ 'Walton', 'Primo X4' ], + 'Primo Z' => [ 'Walton', 'Primo Z' ], + 'Primo-ZX' => [ 'Walton', 'Primo ZX' ], + 'Primo ZX2' => [ 'Walton', 'Primo ZX2' ], + 'Primo ZX2 Lite' => [ 'Walton', 'Primo ZX2 Lite' ], + 'Primo ZX2 mini' => [ 'Walton', 'Primo ZX2 mini' ], + 'Primo Walpad 1' => [ 'Walton', 'Primo Walpad 1', DeviceType::TABLET ], + 'Primo Walpad 7' => [ 'Walton', 'Primo Walpad 7', DeviceType::TABLET ], + 'Primo Walpad 8' => [ 'Walton', 'Primo Walpad 8', DeviceType::TABLET ], + 'Walpad 8b' => [ 'Walton', 'Primo Walpad 8b', DeviceType::TABLET ], + 'Primo Walpad 8W' => [ 'Walton', 'Primo Walpad 8W', DeviceType::TABLET ], + 'Walpad 8x' => [ 'Walton', 'Primo Walpad 8x', DeviceType::TABLET ], + 'Walpad 10b' => [ 'Walton', 'Primo Walpad 10b', DeviceType::TABLET ], + 'Walpad 10x' => [ 'Walton', 'Primo Walpad 10x', DeviceType::TABLET ], + 'Walpad C' => [ 'Walton', 'Primo Walpad C', DeviceType::TABLET ], + 'Walpad G' => [ 'Walton', 'Primo Walpad G', DeviceType::TABLET ], + 'Walpad G2' => [ 'Walton', 'Primo Walpad G2', DeviceType::TABLET ], + 'Walpad G2i' => [ 'Walton', 'Primo Walpad G2i', DeviceType::TABLET ], + 'Walpad M' => [ 'Walton', 'Primo Walpad M', DeviceType::TABLET ], + 'xPAD-70' => [ 'WayteQ', 'xPAD-70', DeviceType::TABLET ], + 'xTAB-7X' => [ 'WayteQ', 'xTAB-7X', DeviceType::TABLET ], + 'xTAB-9' => [ 'WayteQ', 'xTAB-9', DeviceType::TABLET ], + 'xTAB-70!' => [ 'WayteQ', 'xTAB-70', DeviceType::TABLET ], + 'xTAB-100!' => [ 'WayteQ', 'xTAB-100', DeviceType::TABLET ], + 'WellcoM-A86' => [ 'WellcoM', 'A86' ], + 'WellcoM-A88' => [ 'WellcoM', 'A88' ], + 'WellcoM-A89' => [ 'WellcoM', 'A89' ], + 'WellcoM-A89-Plus' => [ 'WellcoM', 'A89 Plus' ], + 'WellcoM-A99' => [ 'WellcoM', 'A99' ], + 'WellcoM-A800' => [ 'WellcoM', 'A800', DeviceType::TABLET ], + 'ZEN 4.5' => [ 'Wexler', 'Zen 4.5' ], + 'ZEN 4.7' => [ 'Wexler', 'Zen 4.7' ], + 'WEXLER. ZEN 5' => [ 'Wexler', 'Zen 5' ], + 'ZEN 5+' => [ 'Wexler', 'Zen 5+' ], + 'TAB 7i 3G' => [ 'Wexler', 'Tab 7I 3G', DeviceType::TABLET ], + 'WEXLER TAB7ID' => [ 'Wexler', 'Tab 7ID', DeviceType::TABLET ], + 'WEXLER-TAB-7iS' => [ 'Wexler', 'Tab 7IS', DeviceType::TABLET ], + 'WEXLER-TAB-7T' => [ 'Wexler', 'Tab 7T', DeviceType::TABLET ], + 'TAB 10Q' => [ 'Wexler', 'Tab 10Q', DeviceType::TABLET ], + 'WEXLER.BOOK T7008' => [ 'Wexler', 'Book T7008', DeviceType::TABLET ], + 'WHAM D5' => [ 'Wham', 'D5' ], + 'WHAM Q4' => [ 'Wham', 'Q4' ], + 'WHAM-WD38' => [ 'Wham', 'WD38' ], + 'WHAM WG40' => [ 'Wham', 'WG40' ], + 'WHAM WG50' => [ 'Wham', 'WG50' ], + 'WHAM WK41' => [ 'Wham', 'WK41' ], + 'Wham WK44' => [ 'Wham', 'WK44' ], + 'WHAM WS35' => [ 'Wham', 'WS35' ], + 'WHAM WS36' => [ 'Wham', 'WS36' ], + 'WHAM WS43' => [ 'Wham', 'WS43' ], + 'WHAMWHAM WS43 Maui' => [ 'Wham', 'WS43' ], + 'WHAM WT72' => [ 'Wham', 'WT72' ], + 'BARRY' => [ 'Wiko', 'Barry' ], + 'BIRDY' => [ 'Wiko', 'Birdy' ], + 'BLOOM' => [ 'Wiko', 'Bloom' ], + 'CINK' => [ 'Wiko', 'Cink' ], + 'CINK+' => [ 'Wiko', 'Cink+' ], + 'CINK FIVE' => [ 'Wiko', 'Cink Five' ], + 'Wiko Cink Five' => [ 'Wiko', 'Cink Five' ], + 'CINK KING' => [ 'Wiko', 'Cink King' ], + 'CINK PEAX' => [ 'Wiko', 'Cink Peax' ], + 'Wiko Cink Peax' => [ 'Wiko', 'Cink Peax' ], + 'WIKO-CINK PEAX' => [ 'Wiko', 'Cink Peax' ], + 'CINK PEAX+' => [ 'Wiko', 'Cink Peax+' ], + 'CINK PEAX 2' => [ 'Wiko', 'Cink Peax 2' ], + 'Wiko Cink Slim' => [ 'Wiko', 'Cink Slim' ], + 'WIKO-CINK SLIM' => [ 'Wiko', 'Cink Slim' ], + 'CINK SLIM' => [ 'Wiko', 'Cink Slim' ], + 'Cink Slim A' => [ 'Wiko', 'Cink Slim A' ], + 'Cink Slim B' => [ 'Wiko', 'Cink Slim B' ], + 'CINK SLIM 2' => [ 'Wiko', 'Cink Slim 2' ], + 'DARKFULL' => [ 'Wiko', 'Darkfull' ], + 'DARKMOON' => [ 'Wiko', 'Darkmoon' ], + 'DARKNIGHT' => [ 'Wiko', 'Darknight' ], + 'DARKSIDE' => [ 'Wiko', 'Darkside' ], + 'FEVER' => [ 'Wiko', 'Fever' ], + 'GETAWAY' => [ 'Wiko', 'Getaway' ], + 'GOA' => [ 'Wiko', 'Goa' ], + 'HIGHWAY' => [ 'Wiko', 'Highway' ], + 'HIGHWAY PURE' => [ 'Wiko', 'Highway Pure' ], + 'HIGHWAY SIGNS' => [ 'Wiko', 'Highway Signs' ], + 'IGGY' => [ 'Wiko', 'Iggy' ], + 'JIMMY' => [ 'Wiko', 'Jimmy' ], + 'KITE' => [ 'Wiko', 'Kite' ], + 'LENNY' => [ 'Wiko', 'Lenny' ], + 'LENNY2' => [ 'Wiko', 'Lenny 2' ], + 'LENNY3' => [ 'Wiko', 'Lenny 3' ], + 'OZZY' => [ 'Wiko', 'Ozzy' ], + 'PULP' => [ 'Wiko', 'Pulp' ], + 'PULP 4G' => [ 'Wiko', 'Pulp' ], + 'Wiko Rainbow' => [ 'Wiko', 'Rainbow' ], + 'RAINBOW' => [ 'Wiko', 'Rainbow' ], + 'RAINBOW 4G' => [ 'Wiko', 'Rainbow' ], + 'RAINBOW JAM' => [ 'Wiko', 'Rainbow Jam' ], + 'RIDGE' => [ 'Wiko', 'Ridge' ], + 'RIDGE 4G' => [ 'Wiko', 'Ridge' ], + 'RIDGE FAB 4G' => [ 'Wiko', 'Ridge Fab' ], + 'SLIDE' => [ 'Wiko', 'Slide' ], + 'STAIRWAY' => [ 'Wiko', 'Stairway' ], + 'Wiko Stairway' => [ 'Wiko', 'Stairway' ], + 'SUBLIM' => [ 'Wiko', 'Sublim' ], + 'SUNSET' => [ 'Wiko', 'Sunset' ], + 'SUNSET2' => [ 'Wiko', 'Sunset 2' ], + 'WAX' => [ 'Wiko', 'Wax' ], + 'Wileyfox Spark' => [ 'Wileyfox', 'Spark' ], + 'Wileyfox Spark +' => [ 'Wileyfox', 'Spark +' ], + 'Wileyfox Spark X' => [ 'Wileyfox', 'Spark X' ], + 'Wileyfox Storm' => [ 'Wileyfox', 'Storm' ], + 'Wileyfox Swift' => [ 'Wileyfox', 'Swift' ], + 'Swift 2 Plus' => [ 'Wileyfox', 'Swift 2 Plus' ], + 'Swift 2 X' => [ 'Wileyfox', 'Swift 2 X' ], + 'N5PRO2jingying' => [ 'Window', 'N5 Pro 2', DeviceType::MEDIA ], + 'N12' => [ 'Window', 'N12', DeviceType::TABLET ], + 'N12R' => [ 'Window', 'N12R', DeviceType::TABLET ], + 'N50' => [ 'Window', 'N50', DeviceType::TABLET ], + 'N50DT!' => [ 'Window', 'N50DT', DeviceType::TABLET ], + 'N50GT' => [ 'Window', 'N50GT', DeviceType::TABLET ], + 'N50GT A' => [ 'Window', 'N50GT-A', DeviceType::TABLET ], + 'N70' => [ 'Window', 'N70', DeviceType::TABLET ], + 'N70 3G' => [ 'Window', 'N70', DeviceType::TABLET ], + 'N70 C' => [ 'Window', 'N70C', DeviceType::TABLET ], + 'N70DC' => [ 'Window', 'N70DC', DeviceType::TABLET ], + 'N70-S' => [ 'Window', 'N70S', DeviceType::TABLET ], + 'N70HD' => [ 'Window', 'N70HD', DeviceType::TABLET ], + 'N70 DUAL CORE' => [ 'Window', 'N70 Dual Core', DeviceType::TABLET ], + 'N70DC-S' => [ 'Window', 'N70 Dual Core', DeviceType::TABLET ], + 'N70DC-T' => [ 'Window', 'N70 Dual Core', DeviceType::TABLET ], + 'N80($| from moage.com)!' => [ 'Window', 'N80', DeviceType::TABLET ], + 'N80DC' => [ 'Window', 'N80 Dual Core', DeviceType::TABLET ], + 'N80IPS' => [ 'Window', 'N80 IPS', DeviceType::TABLET ], + 'N90' => [ 'Window', 'N90', DeviceType::TABLET ], + 'N90 DUAL CORE!' => [ 'Window', 'N90 Dual Core', DeviceType::TABLET ], + 'N90FHDRK' => [ 'Window', 'N90 FHD', DeviceType::TABLET ], + 'N101 DUAL CORE!' => [ 'Window', 'N101 Dual Core', DeviceType::TABLET ], + 'Wink City S' => [ 'Wink', 'City S' ], + + 'N612' => [ 'Wishway', 'N612' ], + 'A81E' => [ 'Witstech', 'A81E', DeviceType::TABLET ], + + 'miTab!!' => [ + 'miTab BALTIMORE' => [ 'Wolder', 'miTab BALTIMORE', DeviceType::TABLET ], + 'miTab BERLIN' => [ 'Wolder', 'miTab BERLIN', DeviceType::TABLET ], + 'miTab Boston' => [ 'Wolder', 'miTab BOSTON', DeviceType::TABLET ], + 'miTab BROOKLYN' => [ 'Wolder', 'miTab BROOKLYN', DeviceType::TABLET ], + 'miTabCALIFORNIA' => [ 'Wolder', 'miTab CALIFORNIA', DeviceType::TABLET ], + 'miTab CHICAGO' => [ 'Wolder', 'miTab CHICAGO', DeviceType::TABLET ], + 'miTab EPSILON' => [ 'Wolder', 'miTab EPSILON', DeviceType::TABLET ], + 'miTab-EPSILON' => [ 'Wolder', 'miTab EPSILON', DeviceType::TABLET ], + 'miTab FEEL' => [ 'Wolder', 'miTab FEEL', DeviceType::TABLET ], + 'miTab FUNK' => [ 'Wolder', 'miTab FUNK', DeviceType::TABLET ], + 'miTab-GENIUS' => [ 'Wolder', 'miTab GENIUS', DeviceType::TABLET ], + 'miTab GENIUS' => [ 'Wolder', 'miTab GENIUS', DeviceType::TABLET ], + 'miTab HERO' => [ 'Wolder', 'miTab HERO', DeviceType::TABLET ], + 'miTab HOP!' => [ 'Wolder', 'miTab HOP!', DeviceType::TABLET ], + 'miTab IOWA' => [ 'Wolder', 'miTab IOWA', DeviceType::TABLET ], + 'miTab IRON' => [ 'Wolder', 'miTab IRON', DeviceType::TABLET ], + 'miTab JUMP' => [ 'Wolder', 'miTab JUMP', DeviceType::TABLET ], + 'miTab LION' => [ 'Wolder', 'miTab LION', DeviceType::TABLET ], + 'miTab LIVE' => [ 'Wolder', 'miTab LIVE', DeviceType::TABLET ], + 'miTab NEO' => [ 'Wolder', 'miTab NEO', DeviceType::TABLET ], + 'miTab THINK' => [ 'Wolder', 'miTab THINK', DeviceType::TABLET ], + 'miTab Seattle' => [ 'Wolder', 'miTab SEATTLE', DeviceType::TABLET ], + 'miTab URBAN' => [ 'Wolder', 'miTab URBAN', DeviceType::TABLET ], + ], + + 'AT-A[QS][0-9]{2,2}!!' => [ + 'AT-AQ28D' => [ 'Wolfgang', 'AT-AQ28D' ], + 'AT-AS35D' => [ 'Wolfgang', 'AT-AS35D' ], + 'AT-AS40D' => [ 'Wolfgang', 'AT-AS40D' ], + 'AT-AS40D2' => [ 'Wolfgang', 'AT-AS40D2' ], + 'AT-AS40D3' => [ 'Wolfgang', 'AT-AS40D3' ], + 'AT-AS40SE' => [ 'Wolfgang', 'AT-AS40SE' ], + 'AT-AS40W' => [ 'Wolfgang', 'AT-AS40W' ], + 'AT-AS43D' => [ 'Wolfgang', 'AT-AS43D' ], + 'AT-AS43D2' => [ 'Wolfgang', 'AT-AS43D2' ], + 'AT-AS43D3' => [ 'Wolfgang', 'AT-AS43D3' ], + 'AT-AS43D4' => [ 'Wolfgang', 'AT-AS43D4' ], + 'AT-AS45D1' => [ 'Wolfgang', 'AT-AS45D1' ], + 'AT-AS45FW' => [ 'Wolfgang', 'AT-AS45FW' ], + 'AT-AS45SE' => [ 'Wolfgang', 'AT-AS45SE' ], + 'AT-AS45IPS' => [ 'Wolfgang', 'AT-AS45IPS' ], + 'AT-AS45Q' => [ 'Wolfgang', 'AT-AS45Q' ], + 'AT-AS45Q1' => [ 'Wolfgang', 'AT-AS45Q1' ], + 'AT-AS45qHD' => [ 'Wolfgang', 'AT-AS45QHD' ], + 'AT-AS45q2' => [ 'Wolfgang', 'AT-AS45Q2' ], + 'AT-AS45WP' => [ 'Wolfgang', 'AT-AS45WP' ], + 'AT-AS45LTE' => [ 'Wolfgang', 'AT-AS45LTE' ], + 'AT-AS50HD' => [ 'Wolfgang', 'AT-AS50HD' ], + 'AT-AS50SE' => [ 'Wolfgang', 'AT-AS50SE' ], + 'AT-AS50Q' => [ 'Wolfgang', 'AT-AS50Q' ], + 'AT-AS53N' => [ 'Wolfgang', 'AT-AS53N' ], + 'AT-AS55HD' => [ 'Wolfgang', 'AT-AS55HD' ], + 'AT-AS55HD1' => [ 'Wolfgang', 'AT-AS55HD1' ], + ], + + 'M12' => [ 'Wopad', 'M12', DeviceType::TABLET ], + 'SK-Mtek GT7305' => [ 'WonderMedia', 'SK-Mtek GT7305' ], + 'WM8650' => [ 'WonderMedia', 'WM8650', DeviceType::TABLET ], + 'WM8650-mid' => [ 'WonderMedia', 'WM8650', DeviceType::TABLET ], + 'wm8710-tvbox' => [ 'WonderMedia', 'WM8710', DeviceType::TELEVISION ], + 'WM8850-mid' => [ 'WonderMedia', 'WM8850', DeviceType::TABLET ], + 'PAD1001' => [ 'Wortmann', 'TERRA MOBILE PAD 1001', DeviceType::TABLET ], + + 'Woxter!!' => [ + 'Woxter android box 500' => [ 'Woxter', 'Android TV 500', DeviceType::TELEVISION ], + 'Woxter Android TV BOX 600' => [ 'Woxter', 'Android TV 600', DeviceType::TELEVISION ], + 'Woxter Android TV 700' => [ 'Woxter', 'Android TV 700', DeviceType::TELEVISION ], + 'woxter TV800 hw' => [ 'Woxter', 'Android TV 800', DeviceType::TELEVISION ], + 'Woxter Funny Tab 80' => [ 'Woxter', 'Funny Tab 80' ], + 'Woxter Zielo D15' => [ 'Woxter', 'Zielo D15' ], + 'Woxter Zielo H10' => [ 'Woxter', 'Zielo H10' ], + 'Woxter Zielo Q20' => [ 'Woxter', 'Zielo Q20' ], + 'Woxter Zielo Q25' => [ 'Woxter', 'Zielo Q25' ], + 'Woxter Zielo Q26' => [ 'Woxter', 'Zielo Q26' ], + 'Woxter Q27' => [ 'Woxter', 'Zielo Q27' ], + 'Woxter Zielo Q30' => [ 'Woxter', 'Zielo Q30' ], + 'Woxter Zielo Q40' => [ 'Woxter', 'Zielo Q40' ], + 'Woxter Zielo Q50' => [ 'Woxter', 'Zielo Q50' ], + 'Woxter Zielo S10' => [ 'Woxter', 'Zielo S10' ], + 'Woxter Zielo S11' => [ 'Woxter', 'Zielo S11' ], + 'Woxter Zielo Z400' => [ 'Woxter', 'Zielo Z400' ], + 'Woxter Zielo Z420' => [ 'Woxter', 'Zielo Z420' ], + 'Woxter Zielo Z420Plus' => [ 'Woxter', 'Zielo Z420 Plus' ], + 'Woxter Zielo Z450' => [ 'Woxter', 'Zielo Z450' ], + 'Woxter Zielo Z500' => [ 'Woxter', 'Zielo Z500' ], + 'Woxter Zielo Z800' => [ 'Woxter', 'Zielo Z800' ], + 'Woxter Zielo Z820Plus' => [ 'Woxter', 'Zielo Z820 Plus' ], + 'Woxter Zielo ZX840HD' => [ 'Woxter', 'Zielo ZX840 HD' ], + 'Woxter Zielo ZX900' => [ 'Woxter', 'Zielo ZX900' ], + 'Woxter Tablet PC 50BL' => [ 'Woxter', 'Tablet PC 50 BL', DeviceType::TABLET ], + 'Woxter Tablet PC 50BL DUAL' => [ 'Woxter', 'Tablet PC 50 BL Dual', DeviceType::TABLET ], + 'Woxter 51BL' => [ 'Woxter', 'Tablet PC 51 BL', DeviceType::TABLET ], + 'Woxter51BL' => [ 'Woxter', 'Tablet PC 51 BL', DeviceType::TABLET ], + 'Woxter Tablet PC 75CXi' => [ 'Woxter', 'Tablet PC 75 CXi', DeviceType::TABLET ], + 'Woxter Tablet PC 76CXi' => [ 'Woxter', 'Tablet PC 76 CXi', DeviceType::TABLET ], + 'Woxter Tablet PC 85CXi' => [ 'Woxter', 'Tablet PC 85 CXi', DeviceType::TABLET ], + 'Woxter Tablet PC 85 HDS' => [ 'Woxter', 'Tablet PC 85 HDS', DeviceType::TABLET ], + 'Woxter Tablet PC 90BL' => [ 'Woxter', 'Tablet PC 90 BL', DeviceType::TABLET ], + 'Woxter Tablet PC 97IPS' => [ 'Woxter', 'Tablet PC 97 IPS', DeviceType::TABLET ], + 'Woxter Tablet PC 97IPS DUAL' => [ 'Woxter', 'Tablet PC 97 IPS Dual', DeviceType::TABLET ], + 'Woxter 97 IPS DUAL 3G' => [ 'Woxter', 'Tablet PC 97 IPS Dual 3G', DeviceType::TABLET ], + 'Woxter Tablet PC 100CX' => [ 'Woxter', 'Tablet PC 100 CX', DeviceType::TABLET ], + 'Woxter Tablet PC 101IPS DUAL' => [ 'Woxter', 'Tablet PC 101 IPS Dual', DeviceType::TABLET ], + 'Woxter Tablet PC 101 IPS DUAL' => [ 'Woxter', 'Tablet PC 101 IPS Dual', DeviceType::TABLET ], + 'Woxteri80' => [ 'Woxter', 'i-80', DeviceType::TABLET ], + 'WOXTER I-100' => [ 'Woxter', 'i-100', DeviceType::TABLET ], + 'WOXTER I-101' => [ 'Woxter', 'i-101', DeviceType::TABLET ], + 'Woxter SX100' => [ 'Woxter', 'SX 100', DeviceType::TABLET ], + 'Woxter SX110' => [ 'Woxter', 'SX 110', DeviceType::TABLET ], + 'Woxter QX 70' => [ 'Woxter', 'QX 70', DeviceType::TABLET ], + 'Woxter QX78' => [ 'Woxter', 'QX 78', DeviceType::TABLET ], + 'Woxter QX 80' => [ 'Woxter', 'QX 80', DeviceType::TABLET ], + 'Woxter QX82' => [ 'Woxter', 'QX 82', DeviceType::TABLET ], + 'Woxter QX 90' => [ 'Woxter', 'QX 90', DeviceType::TABLET ], + 'Woxter QX93' => [ 'Woxter', 'QX 93', DeviceType::TABLET ], + 'Woxter QX95' => [ 'Woxter', 'QX 95', DeviceType::TABLET ], + 'Woxter QX 100' => [ 'Woxter', 'QX 100', DeviceType::TABLET ], + 'Woxter QX103' => [ 'Woxter', 'QX 103', DeviceType::TABLET ], + 'Woxter QX105' => [ 'Woxter', 'QX 105', DeviceType::TABLET ], + 'Woxter QX115' => [ 'Woxter', 'QX 115', DeviceType::TABLET ], + 'Woxter QX120' => [ 'Woxter', 'QX 120', DeviceType::TABLET ], + 'Woxter Tablet PC nimbus 70D' => [ 'Woxter', 'Nimbus 70D', DeviceType::TABLET ], + 'Woxter Nimbus 97Q' => [ 'Woxter', 'Nimbus 97Q', DeviceType::TABLET ], + 'Woxter Nimbus 98Q' => [ 'Woxter', 'Nimbus 98Q', DeviceType::TABLET ], + 'Woxter Nimbus115' => [ 'Woxter', 'Nimbus 115', DeviceType::TABLET ], + 'Woxter Nimbus 102Q' => [ 'Woxter', 'Nimbus 102Q', DeviceType::TABLET ], + 'Woxter Nimbus1000' => [ 'Woxter', 'Nimbus 1000', DeviceType::TABLET ], + 'Woxter Nimbus1100RX' => [ 'Woxter', 'Nimbus 1100 RX', DeviceType::TABLET ], + 'Woxter Smart Tab 80' => [ 'Woxter', 'Smart Tab 80', DeviceType::TABLET ], + ], + + 'Wxt Tab PC 65CXi' => [ 'Woxter', 'Tablet PC 65 CXi', DeviceType::TABLET ], + 'Proton Lite' => [ 'X-View', 'Proton Lite', DeviceType::TABLET ], + 'XELIO P900A' => [ 'Xelio', 'P900A' ], + + 'Xiaomi' => [ 'Xiaomi', 'Mi 1' ], + + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)!!' => [ + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(1|ONE)($| ?Plus| ?C)!' => [ 'Xiaomi', 'Mi 1' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(1|ONE)S!' => [ 'Xiaomi', 'Mi 1S' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(2|TWO)($|\/|C|Plus)!' => [ 'Xiaomi', 'Mi 2' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(2|TWO)A!' => [ 'Xiaomi', 'Mi 2A' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(2|TWO)S!' => [ 'Xiaomi', 'Mi 2S' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(3|THREE)($|\/|C|W|Plus)!' => [ 'Xiaomi', 'Mi 3' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?4($|W| ?LTE)!' => [ 'Xiaomi', 'Mi 4' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?4c!' => [ 'Xiaomi', 'Mi 4c' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?4i!' => [ 'Xiaomi', 'Mi 4i' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?4s!' => [ 'Xiaomi', 'Mi 4s' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5$!' => [ 'Xiaomi', 'Mi 5' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5c$!' => [ 'Xiaomi', 'Mi 5c' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5s$!' => [ 'Xiaomi', 'Mi 5s' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5s Plus$!' => [ 'Xiaomi', 'Mi 5s Plus' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5x$!' => [ 'Xiaomi', 'Mi 5x' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?6$!' => [ 'Xiaomi', 'Mi 6' ], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?A1$!' => [ 'Xiaomi', 'Mi A1' ], + ], + + '(Xiaomi|Xiaomi Mi|MI) Note!!' => [ + '(Xiaomi|Xiaomi Mi|MI) Note (LTE|4G)$!' => [ 'Xiaomi', 'Mi Note' ], + '(Xiaomi|Xiaomi Mi|MI) Note ?2!' => [ 'Xiaomi', 'Mi Note 2' ], + '(Xiaomi|Xiaomi Mi|MI) Note ?3!' => [ 'Xiaomi', 'Mi Note 3' ], + '(Xiaomi|Xiaomi Mi|MI) Note ?Plus!' => [ 'Xiaomi', 'Mi Note Plus' ], + '(Xiaomi|Xiaomi Mi|MI) Note ?Pro!' => [ 'Xiaomi', 'Mi Note Pro' ], + ], + + '(Xiaomi )?(MI )?MAX$!' => [ 'Xiaomi', 'Mi Max' ], + '(Xiaomi )?(MI )?MAX 2$!' => [ 'Xiaomi', 'Mi Max 2' ], + '(Xiaomi )?(MI )?MIX$!' => [ 'Xiaomi', 'Mi MIX' ], + '(Xiaomi )?(MI )?MIX 2$!' => [ 'Xiaomi', 'Mi MIX 2' ], + '(Xiaomi )?(MI )?MIX 2S$!' => [ 'Xiaomi', 'Mi MIX 2S' ], + + '(Xiaomi )?20!!' => [ + '(Xiaomi )?20130(61)!' => [ 'Xiaomi', 'Mi 3' ], + '(Xiaomi )?20142(16)!' => [ 'Xiaomi', 'Mi 4' ], + '(Xiaomi )?20155(62)!' => [ 'Xiaomi', 'Mi 4c' ], + '(Xiaomi )?20131(22)!' => [ 'Xiaomi', 'Mi Note' ], + '(Xiaomi )?20146(18)!' => [ 'Xiaomi', 'Mi Note' ], + '(Xiaomi )?20155(01)!' => [ 'Xiaomi', 'Mi Note Pro' ], + '(Xiaomi )?20156(11)!' => [ 'Xiaomi', 'Mi Note 3' ], + ], + + '(Xiaomi )?(Redmi|RedRice|HM)!!' => [ + '(Xiaomi Redmi|Redmi|RedRice|HM 1)$!' => [ 'Xiaomi', 'Redmi 1' ], + '(Xiaomi )?(Redmi|HM) ?1[AS]!' => [ 'Xiaomi', 'Redmi 1S' ], + '(Xiaomi )?(Redmi|HM) ?2(LTE|$)!' => [ 'Xiaomi', 'Redmi 2' ], + '(Xiaomi )?(Redmi|HM) ?2A!' => [ 'Xiaomi', 'Redmi 2A' ], + '(Xiaomi )?(Redmi|HM) ?3$!' => [ 'Xiaomi', 'Redmi 3' ], + '(Xiaomi )?(Redmi|HM) ?3S!' => [ 'Xiaomi', 'Redmi 3S' ], + '(Xiaomi )?(Redmi|HM) ?3X!' => [ 'Xiaomi', 'Redmi 3X' ], + '(Xiaomi )?(Redmi|HM) ?Pro!' => [ 'Xiaomi', 'Redmi Pro' ], + '(Xiaomi )?(Redmi|HM) ?4$!' => [ 'Xiaomi', 'Redmi 4' ], + '(Xiaomi )?(Redmi|HM) ?4 ?Prime!' => [ 'Xiaomi', 'Redmi 4 Prime' ], + '(Xiaomi )?(Redmi|HM) ?4 ?Pro!' => [ 'Xiaomi', 'Redmi 4 Pro' ], + '(Xiaomi )?(Redmi|HM) ?4A!' => [ 'Xiaomi', 'Redmi 4A' ], + '(Xiaomi )?(Redmi|HM) ?4X!' => [ 'Xiaomi', 'Redmi 4X' ], + '(Xiaomi )?(Redmi|HM) ?5$!' => [ 'Xiaomi', 'Redmi 5' ], + '(Xiaomi )?(Redmi|HM) ?5 Plus!' => [ 'Xiaomi', 'Redmi 5 Plus' ], + '(Xiaomi )?(Redmi|HM) ?5A!' => [ 'Xiaomi', 'Redmi 5A' ], + '(Xiaomi )?Redmi[ \-]S2$!' => [ 'Xiaomi', 'Redmi S2' ], + '(Xiaomi )?Redmi[ \-]Y1$!' => [ 'Xiaomi', 'Redmi Y1' ], + '(Xiaomi )?Redmi[ \-]Y1 Lite!' => [ 'Xiaomi', 'Redmi Y1 Lite' ], + ], + + '(Xiaomi )?(Redmi|HM)[ \-]?Note!!' => [ + '(Xiaomi )?(Redmi|HM) ?Note([ \-]?1| LTE| 4G|$)!' => [ 'Xiaomi', 'Redmi Note' ], + '(Xiaomi )?(Redmi|HM)[ \-]Note 2$!' => [ 'Xiaomi', 'Redmi Note 2' ], + '(Xiaomi )?Redmi[ \-]Note 3$!' => [ 'Xiaomi', 'Redmi Note 3' ], + '(Xiaomi )?Redmi[ \-]Note 3 Pro!' => [ 'Xiaomi', 'Redmi Note 3 Pro' ], + '(Xiaomi )?Redmi[ \-]Note ?4$!' => [ 'Xiaomi', 'Redmi Note 4' ], + '(Xiaomi )?Redmi[ \-]Note ?4X!' => [ 'Xiaomi', 'Redmi Note 4X' ], + '(Xiaomi )?Redmi[ \-]Note ?5$!' => [ 'Xiaomi', 'Redmi Note 5' ], + '(Xiaomi )?Redmi[ \-]Note ?5A!' => [ 'Xiaomi', 'Redmi Note 5A' ], + '(Xiaomi )?Redmi[ \-]Note 5 Pro!' => [ 'Xiaomi', 'Redmi Note 5 Pro' ], + ], + + '(Xiaomi |HM)?20!!' => [ + '(Xiaomi |HM)?20130(22|23)!' => [ 'Xiaomi', 'Redmi 1' ], + '(Xiaomi |HM)?20140(11)!' => [ 'Xiaomi', 'Redmi 1' ], + '(Xiaomi |HM)?20145(01)!' => [ 'Xiaomi', 'Redmi 1' ], + '(Xiaomi |HM)?20140(11)!' => [ 'Xiaomi', 'Redmi 1S' ], + '(Xiaomi |HM)?20145(01)!' => [ 'Xiaomi', 'Redmi 1S' ], + '(Xiaomi |HM)?20141(12)!' => [ 'Xiaomi', 'Redmi 2' ], + '(Xiaomi |HM)?20148(11|12|13|17|18|19|21)!' => [ 'Xiaomi', 'Redmi 2' ], + '(Xiaomi |HM)?20145(02)!' => [ 'Xiaomi', 'Redmi 2' ], + '(Xiaomi |HM)?20160(35)!' => [ 'Xiaomi', 'Redmi 3X' ], + '(Xiaomi |HM)?20161(12)!' => [ 'Xiaomi', 'Redmi 4A' ], + '(Xiaomi |HM)?20161(30)!' => [ 'Xiaomi', 'Redmi 4X' ], + '(Xiaomi |HM)?20131(22)!' => [ 'Xiaomi', 'Redmi Note' ], + '(Xiaomi |HM)?20140(22)!' => [ 'Xiaomi', 'Redmi Note' ], + '(Xiaomi |HM)?20147(15)!' => [ 'Xiaomi', 'Redmi Note' ], + '(Xiaomi |HM)?20149(11)!' => [ 'Xiaomi', 'Redmi Note' ], + '(Xiaomi |HM)?20150(52)!' => [ 'Xiaomi', 'Redmi Note 2' ], + '(Xiaomi |HM)?20160(51)!' => [ 'Xiaomi', 'Redmi Note 4' ], + ], + + 'Xiaomi MDT2!' => [ 'Xiaomi', 'Mi 5x' ], + 'Xiaomi MCT1!' => [ 'Xiaomi', 'Mi 6' ], + 'Xiaomi MAT136!' => [ 'Xiaomi', 'Redmi 4X' ], + 'Xiaomi MBT6A5!' => [ 'Xiaomi', 'Redmi Note 4X' ], + + 'aqua' => [ 'Xiaomi', 'Mi 4s' ], + 'capricorn' => [ 'Xiaomi', 'Mi 5s' ], + 'chiron' => [ 'Xiaomi', 'Mi MIX 2' ], + 'ferrari' => [ 'Xiaomi', 'Mi 4i' ], + 'gemini' => [ 'Xiaomi', 'Mi 5' ], + 'gucci' => [ 'Xiaomi', 'Redmi Note' ], + 'kenzo' => [ 'Xiaomi', 'Redmi Note 3' ], + 'land' => [ 'Xiaomi', 'Redmi 3S' ], + 'libra' => [ 'Xiaomi', 'Mi 4c' ], + 'lithium' => [ 'Xiaomi', 'Mi MIX' ], + 'markf' => [ 'Xiaomi', 'Redmi 4 Pro' ], + 'markw' => [ 'Xiaomi', 'Redmi 4 Pro' ], + 'mido' => [ 'Xiaomi', 'Redmi Note 4X' ], + 'mocha' => [ 'Xiaomi', 'Mi Pad', DeviceType::TABLET ], + 'natrium' => [ 'Xiaomi', 'Mi 5s Plus' ], + 'nikeh' => [ 'Xiaomi', 'Redmi Note 4' ], + 'nikel' => [ 'Xiaomi', 'Redmi Note 4' ], + 'omega' => [ 'Xiaomi', 'Redmi Pro' ], + 'prada' => [ 'Xiaomi', 'Redmi 4' ], + 'rolex' => [ 'Xiaomi', 'Redmi 4A' ], + 'sagit' => [ 'Xiaomi', 'Mi 6' ], + 'santoni' => [ 'Xiaomi', 'Redmi 4X' ], + 'scorpio' => [ 'Xiaomi', 'Mi Note 2' ], + 'tiffany' => [ 'Xiaomi', 'Mi 5x' ], + 'ugglite' => [ 'Xiaomi', 'Redmi Note 5A' ], + + '(Xiaomi|Xiaomi Mi|MI) Pad!!' => [ + '(Xiaomi|Xiaomi Mi|MI) Pad$!' => [ 'Xiaomi', 'Mi Pad', DeviceType::TABLET ], + '(Xiaomi|Xiaomi Mi|MI) Pad 2!' => [ 'Xiaomi', 'Mi Pad 2', DeviceType::TABLET ], + '(Xiaomi|Xiaomi Mi|MI) Pad 3!' => [ 'Xiaomi', 'Mi Pad 3', DeviceType::TABLET ], + ], + + '(Xiaomi|Xiaomi Mi|MI)Box!!' => [ + 'MiBOX iCNTV' => [ 'Xiaomi', 'Mi Box 1', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)Box1S!' => [ 'Xiaomi', 'Mi Box 1S', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)Box2$!' => [ 'Xiaomi', 'Mi Box 2', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)Box3$!' => [ 'Xiaomi', 'Mi Box 3', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)Box3S!' => [ 'Xiaomi', 'Mi Box 3S', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)Box3 Pro!' => [ 'Xiaomi', 'Mi Box 3 Pro', DeviceType::TELEVISION ], + ], + + '(Xiaomi|Xiaomi Mi|MI)TV!!' => [ + '(Xiaomi|Xiaomi Mi|MI)TV$!' => [ 'Xiaomi', 'Mi TV 1', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)TV2($|-)!' => [ 'Xiaomi', 'Mi TV 2', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)TV2S!' => [ 'Xiaomi', 'Mi TV 2S', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)TV3($|-)!' => [ 'Xiaomi', 'Mi TV 3', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)TV4($|-)!' => [ 'Xiaomi', 'Mi TV 4', DeviceType::TELEVISION ], + '(Xiaomi|Xiaomi Mi|MI)TV4A!' => [ 'Xiaomi', 'Mi TV 4A', DeviceType::TELEVISION ], + ], + + 'XO Learning tablet' => [ 'XO', 'Tablet', DeviceType::TABLET ], + + '(XOLO )?[ABQX][0-9]{3,4}!!' => [ + 'A500L' => [ 'XOLO', 'A500L' ], + 'A500s' => [ 'XOLO', 'A500s' ], + 'A500S IPS' => [ 'XOLO', 'A500s' ], + 'XoLo A500S' => [ 'XOLO', 'A500s' ], + 'A500s Lite' => [ 'XOLO', 'A500s Lite' ], + 'XOLO A600' => [ 'XOLO', 'A600' ], + 'XOLO A700' => [ 'XOLO', 'A700' ], + 'XOLO A800' => [ 'XOLO', 'A800' ], + 'XOLO A1000' => [ 'XOLO', 'A1000' ], + 'A1010' => [ 'XOLO', 'A1010' ], + 'XOLO B700' => [ 'XOLO', 'B700' ], + 'Q500' => [ 'XOLO', 'Q500' ], + 'Q500s IPS' => [ 'XOLO', 'Q500s' ], + 'Q510s' => [ 'XOLO', 'Q510s' ], + 'Q520s' => [ 'XOLO', 'Q520s' ], + 'Q600' => [ 'XOLO', 'Q600' ], + 'Q600 Club' => [ 'XOLO', 'Q600 Club' ], + 'Q600s' => [ 'XOLO', 'Q600s' ], + 'Q610s' => [ 'XOLO', 'Q610s' ], + 'Q700' => [ 'XOLO', 'Q700' ], + 'XOLO Q700' => [ 'XOLO', 'Q700' ], + 'Q700 Club' => [ 'XOLO', 'Q700 Club' ], + 'XOLO Q700i' => [ 'XOLO', 'Q700i' ], + 'Q700i' => [ 'XOLO', 'Q700i' ], + 'Q700S' => [ 'XOLO', 'Q700s' ], + 'Q700S Plus' => [ 'XOLO', 'Q700s Plus' ], + 'Q710' => [ 'XOLO', 'Q710' ], + 'Q800' => [ 'XOLO', 'Q800' ], + 'XOLO Q800' => [ 'XOLO', 'Q800' ], + 'Q800X' => [ 'XOLO', 'Q800 X-Edition' ], + 'Q900' => [ 'XOLO', 'Q900' ], + 'Q900S' => [ 'XOLO', 'Q900s' ], + 'Q900S Plus' => [ 'XOLO', 'Q900s Plus' ], + 'Q900T' => [ 'XOLO', 'Q900T' ], + 'Q1000' => [ 'XOLO', 'Q1000' ], + 'Xolo Q1000' => [ 'XOLO', 'Q1000' ], + 'Q1000 Opus' => [ 'XOLO', 'Q1000 Opus' ], + 'XOLO Q1000 Opus2!' => [ 'XOLO', 'Q1000 Opus 2' ], + 'Q1000S' => [ 'XOLO', 'Q1000s' ], + 'XOLO Q1000S' => [ 'XOLO', 'Q1000s' ], + 'Q1000s Plus' => [ 'XOLO', 'Q1000s Plus' ], + 'Q1010' => [ 'XOLO', 'Q1010' ], + 'Q1010i' => [ 'XOLO', 'Q1010i' ], + 'Q1011' => [ 'XOLO', 'Q1011' ], + 'Q1020' => [ 'XOLO', 'Q1020' ], + 'Q1100' => [ 'XOLO', 'Q1100' ], + 'Xolo Q1100' => [ 'XOLO', 'Q1100' ], + 'Q1200' => [ 'XOLO', 'Q1200' ], + 'Q2000' => [ 'XOLO', 'Q2000' ], + 'Q2000L' => [ 'XOLO', 'Q2000L' ], + 'Q2100' => [ 'XOLO', 'Q2100' ], + 'Q2500' => [ 'XOLO', 'Q2500' ], + 'Q3000' => [ 'XOLO', 'Q3000' ], + 'XOLO Q3000' => [ 'XOLO', 'Q3000' ], + 'Xolo X500' => [ 'XOLO', 'X500' ], + 'X900' => [ 'XOLO', 'X900' ], + 'Xolo X900' => [ 'XOLO', 'X900' ], + 'XOLO X910' => [ 'XOLO', 'X910' ], + 'XOLO X1000' => [ 'XOLO', 'X1000' ], + ], + + 'BLACK' => [ 'XOLO', 'Black' ], + 'era 2' => [ 'XOLO', 'Era 2' ], + 'era X' => [ 'XOLO', 'Era X' ], + 'era1X' => [ 'XOLO', 'Era 1X' ], + 'Era 2X' => [ 'XOLO', 'Era 2X' ], + 'era HD' => [ 'XOLO', 'Era HD' ], + 'era 4G' => [ 'XOLO', 'Era 4G' ], + 'era 4K' => [ 'XOLO', 'Era 4K' ], + '8x-1000' => [ 'XOLO', 'Hive 8x 1000' ], + 'Omega 5.0' => [ 'XOLO', 'Omega 5.0' ], + 'Omega 5.5' => [ 'XOLO', 'Omega 5.5' ], + 'XOLO One' => [ 'XOLO', 'One' ], + 'XOLO One16' => [ 'XOLO', 'One' ], + 'XOLO One HD' => [ 'XOLO', 'One HD' ], + 'XOLO One LFC' => [ 'XOLO', 'One LFC Edition' ], + 'XOLO Play' => [ 'XOLO', 'Play' ], + 'XOLO PLAY T1000' => [ 'XOLO', 'Play' ], + 'XOLO T1000' => [ 'XOLO', 'Play' ], + 'Play 6X-1000' => [ 'XOLO', 'Play 6X 1000' ], + 'Play8X-1100' => [ 'XOLO', 'Play 8X 1100' ], + 'Xolo QC800' => [ 'XOLO', 'Tab', DeviceType::TABLET ], + + 'iX101T1' => [ 'Xplore', 'iX101T1', DeviceType::TABLET ], + 'iX101T1-2G' => [ 'Xplore', 'iX101T1', DeviceType::TABLET ], + 'iX101T1-XS' => [ 'Xplore', 'iX101T1', DeviceType::TABLET ], + 'X403' => [ 'Xtouch', 'X403' ], + 'Xtouch X405' => [ 'Xtouch', 'X405' ], + 'X505' => [ 'Xtouch', 'X505' ], + 'X506' => [ 'Xtouch', 'X506' ], + 'X506S' => [ 'Xtouch', 'X506S' ], + 'X507Q' => [ 'Xtouch', 'X507Q' ], + 'X708S' => [ 'Xtouch', 'X708S', DeviceType::TABLET ], + 'Xtreamer Mobile AiKi' => [ 'Xtreamer', 'Aiki' ], + 'Xtreamer Mobile AiKi a7*' => [ 'Xtreamer', 'Aiki' ], + 'Aiki-4S' => [ 'Xtreamer', 'Aiki 4S' ], + 'Aiki-5' => [ 'Xtreamer', 'Aiki 5' ], + 'Xtreamer Mobile Aiki5s' => [ 'Xtreamer', 'Aiki 5S' ], + 'Xtreamer Joyz' => [ 'Xtreamer', 'Joyz' ], + 'Xtreamer Wonder' => [ 'Xtreamer', 'Wonder', DeviceType::TELEVISION ], + 'Q07CL01' => [ 'XVision', 'Q07', DeviceType::TABLET ], + 'Luna TAB07-920N' => [ 'Yarvik', 'Luna 7', DeviceType::TABLET ], + 'Luna TAB07-100' => [ 'Yarvik', 'Luna 7c', DeviceType::TABLET ], + 'Luna TAB07-101' => [ 'Yarvik', 'Luna 7c', DeviceType::TABLET ], + 'Luna TAB274' => [ 'Yarvik', 'Luna 7c', DeviceType::TABLET ], + 'Luna TAB374' => [ 'Yarvik', 'Luna 8c', DeviceType::TABLET ], + 'Luna TAB474' => [ 'Yarvik', 'Luna 10', DeviceType::TABLET ], + 'Luna TAB10-150' => [ 'Yarvik', 'Luna 10c', DeviceType::TABLET ], + 'TAB09-410' => [ 'Yarvik', 'Noble 9.7', DeviceType::TABLET ], + 'TAB10-410' => [ 'Yarvik', 'Noble 10.1', DeviceType::TABLET ], + 'Noble TAB07-485' => [ 'Yarvik', 'Noble Mini', DeviceType::TABLET ], + 'TAB07-485' => [ 'Yarvik', 'Noble Mini', DeviceType::TABLET ], + 'Xenta-TAB07-210' => [ 'Yarvik', 'Xenta 7c', DeviceType::TABLET ], + 'Xenta-TAB07-211' => [ 'Yarvik', 'Xenta 7c', DeviceType::TABLET ], + 'TAB07-200' => [ 'Yarvik', 'Xenta 7ic', DeviceType::TABLET ], + 'Xenta TAB07-200' => [ 'Yarvik', 'Xenta 7ic', DeviceType::TABLET ], + 'Xenta TAB08-200' => [ 'Yarvik', 'Xenta 8ic', DeviceType::TABLET ], + 'Xenta TAB08-201-3G' => [ 'Yarvik', 'Xenta 8c', DeviceType::TABLET ], + 'TAB9-200' => [ 'Yarvik', 'Xenta 9.7ic', DeviceType::TABLET ], + 'Xenta TAB9-200' => [ 'Yarvik', 'Xenta 9.7ic', DeviceType::TABLET ], + 'Xenta TAB09-211' => [ 'Yarvik', 'Xenta 9.7ic+', DeviceType::TABLET ], + 'Xenta TAB10-211' => [ 'Yarvik', 'Xenta 10ic', DeviceType::TABLET ], + 'Xenta TAB10-201' => [ 'Yarvik', 'Xenta 10ic', DeviceType::TABLET ], + 'TAB10-201' => [ 'Yarvik', 'Xenta 10ic', DeviceType::TABLET ], + 'Xenta TAB13-201' => [ 'Yarvik', 'Xenta 13c', DeviceType::TABLET ], + 'N6' => [ 'Yarvik', 'TAB210 Tablet', DeviceType::TABLET ], + 'TAB210' => [ 'Yarvik', 'TAB210 Tablet', DeviceType::TABLET ], + 'TAB220' => [ 'Yarvik', 'GoTab Velocity', DeviceType::TABLET ], + 'TAB224' => [ 'Yarvik', 'GoTab Velocity', DeviceType::TABLET ], + 'TAB250' => [ 'Yarvik', 'TAB250 Tablet', DeviceType::TABLET ], + 'TAB275' => [ 'Yarvik', 'GoTab Ion', DeviceType::TABLET ], + 'TAB260' => [ 'Yarvik', 'GoTab Velocity', DeviceType::TABLET ], + 'TAB264' => [ 'Yarvik', 'GoTab Velocity', DeviceType::TABLET ], + 'TAB360' => [ 'Yarvik', 'GoTab Gravity', DeviceType::TABLET ], + 'TAB364' => [ 'Yarvik', 'GoTab Gravity', DeviceType::TABLET ], + 'TAB410' => [ 'Yarvik', 'TAB410 Tablet', DeviceType::TABLET ], + 'TAB411' => [ 'Yarvik', 'GoTab Slimline', DeviceType::TABLET ], + 'TAB420' => [ 'Yarvik', 'GoTab Xerios', DeviceType::TABLET ], + 'TAB424' => [ 'Yarvik', 'GoTab Xerios', DeviceType::TABLET ], + 'TAB450' => [ 'Yarvik', 'GoTab Slimline', DeviceType::TABLET ], + 'TAB460' => [ 'Yarvik', 'GoTab Xerios', DeviceType::TABLET ], + 'TAB461' => [ 'Yarvik', 'GoTab Xerios', DeviceType::TABLET ], + 'TAB464' => [ 'Yarvik', 'GoTab Xerios', DeviceType::TABLET ], + 'TAB465EUK' => [ 'Yarvik', 'GoTab Exxa', DeviceType::TABLET ], + 'TAB468' => [ 'Yarvik', 'GoTab Zetta', DeviceType::TABLET ], + 'TAB469' => [ 'Yarvik', 'GoTab Yotta', DeviceType::TABLET ], + 'TAB466EUK' => [ 'Yarvik', 'GoTab Zetta', DeviceType::TABLET ], + 'TAB467' => [ 'Yarvik', 'GoTab Zetta', DeviceType::TABLET ], + 'TAB462' => [ 'Yarvik', 'Zania 10ic', DeviceType::TABLET ], + 'YP712' => [ 'Yashi', 'YPAD 7" YP712', DeviceType::TABLET ], + + '(Andy|Yezz)!!' => [ + 'Andy 3.5EI' => [ 'Yezz', 'Andy A3.5EI' ], + 'Andy 3.5EI3' => [ 'Yezz', 'Andy A3.5EI3' ], + 'yezz Andy A3.5EP' => [ 'Yezz', 'Andy A3.5EP' ], + 'Andy 3.5EP' => [ 'Yezz', 'Andy A3.5EP' ], + 'ANDY A3.5EP' => [ 'Yezz', 'Andy A3.5EP' ], + 'Andy A4' => [ 'Yezz', 'Andy A4' ], + 'YEZZ-A4M' => [ 'Yezz', 'Andy A4M' ], + 'Andy A4M' => [ 'Yezz', 'Andy A4M' ], + 'YEZZ-A4.5' => [ 'Yezz', 'Andy A4.5' ], + 'Andy A4.5' => [ 'Yezz', 'Andy A4.5' ], + 'Andy A5' => [ 'Yezz', 'Andy A5' ], + 'YEZZ-A5' => [ 'Yezz', 'Andy A5' ], + 'YEZZ-A5EI' => [ 'Yezz', 'Andy A5EI' ], + 'YEZZ-A5QP' => [ 'Yezz', 'Andy A5QP' ], + 'ANDY A5QP' => [ 'Yezz', 'Andy A5QP' ], + 'YEZZ-A6M' => [ 'Yezz', 'Andy A6M' ], + 'ANDY A6M' => [ 'Yezz', 'Andy A6M' ], + 'Yezz Andy AC4E' => [ 'Yezz', 'Andy AC4E' ], + 'Yezz-AC4EI' => [ 'Yezz', 'Andy AC4EI' ], + 'Andy AC4.5' => [ 'Yezz', 'Andy AC4.5' ], + 'Andy AC5' => [ 'Yezz', 'Andy AC5' ], + 'YEZZ-AZ4.5' => [ 'Yezz', 'Andy AZ4.5' ], + 'ANDY AZ4.5' => [ 'Yezz', 'Andy AZ4.5' ], + 'Andy C3.5EI' => [ 'Yezz', 'Andy C3.5EI' ], + 'YEZZ-C3.5EI' => [ 'Yezz', 'Andy C3.5EI' ], + 'ANDY-C3.5EI' => [ 'Yezz', 'Andy C3.5EI' ], + 'YEZZ-C4E' => [ 'Yezz', 'Andy C4E' ], + 'Andy C4E' => [ 'Yezz', 'Andy C4E' ], + 'ANDY-C4E' => [ 'Yezz', 'Andy C4E' ], + 'Andy C4EI' => [ 'Yezz', 'Andy C4EI' ], + 'Andy C5EI' => [ 'Yezz', 'Andy C5EI' ], + 'Andy C5M' => [ 'Yezz', 'Andy C5M' ], + 'ANDY C5QL' => [ 'Yezz', 'Andy C5QL' ], + 'Andy C5V' => [ 'Yezz', 'Andy C5V' ], + 'YEZZ-Andy C5V' => [ 'Yezz', 'Andy C5V' ], + 'Andy C5VP' => [ 'Yezz', 'Andy C5VP' ], + 'ANDY 3G 3.5' => [ 'Yezz', 'Andy 3.5' ], + 'ANDY-3.5E2I' => [ 'Yezz', 'Andy 3.5E2I' ], + 'ANDY-3.5EH' => [ 'Yezz', 'Andy 3.5EH' ], + 'ANDY 35EI' => [ 'Yezz', 'Andy 3.5EI' ], + 'ANDY-3.5EI' => [ 'Yezz', 'Andy 3.5EI' ], + 'YEZZ-3.5EI' => [ 'Yezz', 'Andy 3.5EI' ], + 'ANDY 35EI2' => [ 'Yezz', 'Andy 3.5EI2' ], + 'YEZZ-4E' => [ 'Yezz', 'Andy 4E' ], + 'Andy 4E' => [ 'Yezz', 'Andy 4E' ], + 'ANDY-4E' => [ 'Yezz', 'Andy 4E' ], + 'ANDY-4E2I' => [ 'Yezz', 'Andy 4E2I' ], + 'ANDY 4E2I' => [ 'Yezz', 'Andy 4E2I' ], + 'ANDY 4E3I' => [ 'Yezz', 'Andy 4E3I' ], + 'Andy 4EI' => [ 'Yezz', 'Andy 4EI' ], + 'ANDY-4EI' => [ 'Yezz', 'Andy 4EI' ], + 'ANDY 4EI2' => [ 'Yezz', 'Andy 4EI2' ], + 'ANDY 4EL2 LTE' => [ 'Yezz', 'Andy 4EI2' ], + 'ANDY 45EL' => [ 'Yezz', 'Andy 4.5EL' ], + 'Andy 4.5M' => [ 'Yezz', 'Andy 4.5M' ], + 'Andy 4.7T' => [ 'Yezz', 'Andy 4.7T' ], + 'ANDY 5E2I' => [ 'Yezz', 'Andy 5E2I' ], + 'ANDY 5EI' => [ 'Yezz', 'Andy 5EI' ], + 'ANDY5EI' => [ 'Yezz', 'Andy 5EI' ], + 'Yezz-ANDY5EL' => [ 'Yezz', 'Andy 5EL' ], + 'ANDY 5EL' => [ 'Yezz', 'Andy 5EL' ], + 'ANDY-5T' => [ 'Yezz', 'Andy 5T' ], + 'Andy5T' => [ 'Yezz', 'Andy 5T' ], + 'ANDY 5T' => [ 'Yezz', 'Andy 5T' ], + 'Andy 5TL' => [ 'Yezz', 'Andy 5TL' ], + 'YEZZ-Andy 5.5EI' => [ 'Yezz', 'Andy 5.5EI' ], + 'Andy 5.5EI' => [ 'Yezz', 'Andy 5.5EI' ], + 'ANDY 55EI' => [ 'Yezz', 'Andy 5.5EI' ], + 'Andy 55ML VR' => [ 'Yezz', 'Andy 5.5ML VR' ], + 'ANDY 6EL LTE' => [ 'Yezz', 'Andy 6EL' ], + 'YEZZ-6Q' => [ 'Yezz', 'Andy 6Q' ], + 'Andy 6Q' => [ 'Yezz', 'Andy 6Q' ], + 'Yezz-T7FD' => [ 'Yezz', 'Epic T7FD', DeviceType::TABLET ], + ], + + 'C868' => [ 'Yicheer', 'C868' ], + 'DEM752NC' => [ 'Yifang', 'M752' ], + 'EMR1879' => [ 'Yidong', 'EMR1879', DeviceType::TABLET ], + 'YD201' => [ 'Yota', 'YotaPhone 2' ], + 'YD202' => [ 'Yota', 'YotaPhone 2' ], + 'YD203' => [ 'Yota', 'YotaPhone 2' ], + 'YD206' => [ 'Yota', 'YotaPhone 2' ], + + 'YU4711' => [ 'Yu', 'Yunique' ], + 'YU5010' => [ 'Yu', 'Yuphoria' ], + 'YU5010A' => [ 'Yu', 'Yuphoria' ], + 'YU5011' => [ 'Yu', 'Yuphoria 2' ], + 'YU5040' => [ 'Yu', 'Yureka Black' ], + 'YU5050' => [ 'Yu', 'Yutopia' ], + 'YUREKA' => [ 'Yu', 'Yureka' ], + 'AO5510' => [ 'Yu', 'Yureka' ], + 'A05510' => [ 'Yu', 'Yureka' ], + 'YU5200' => [ 'Yu', 'Yureka S' ], + 'YUreka+' => [ 'Yu', 'Yureka Plus' ], + 'YU5510' => [ 'Yu', 'Yureka Plus' ], + 'YU5510A' => [ 'Yu', 'Yureka Plus' ], + 'YU5530' => [ 'Yu', 'Yunicorn' ], + 'YU5551' => [ 'Yu', 'Yureka 2' ], + 'YU 6000' => [ 'Yu', 'Yureka Note' ], + + 'YUSUN A7' => [ 'Yusun', 'A7' ], + 'YUSUN A8' => [ 'Yusun', 'A8' ], + 'YX-YUSUN E80' => [ 'Yusun', 'E80' ], + 'YX-YUSUN E89' => [ 'Yusun', 'E89' ], + 'YX-YUSUN E96' => [ 'Yusun', 'E96' ], + 'YUSUN E98' => [ 'Yusun', 'E98' ], + 'YUSUN L29' => [ 'Yusun', 'L29' ], + 'YUSUN L63' => [ 'Yusun', 'L63' ], + 'YUSUN L71' => [ 'Yusun', 'L71' ], + 'YUSUN L88' => [ 'Yusun', 'L88' ], + 'LA-I Dual core' => [ 'Yusun', 'LA-I' ], + 'LA-M3' => [ 'Yusun', 'LA-M3' ], + 'LA1-L' => [ 'Yusun', 'LA1-L' ], + 'LA2-E' => [ 'Yusun', 'LA2-E' ], + 'LA2-E1' => [ 'Yusun', 'LA2-E1' ], + 'LA2-L' => [ 'Yusun', 'LA2-L' ], + 'LA2-T' => [ 'Yusun', 'LA2-T' ], + 'YUSUN LA2-T' => [ 'Yusun', 'LA2-T' ], + 'YUSUN LA2 T' => [ 'Yusun', 'LA2-T' ], + 'YUSUN LA2-T1' => [ 'Yusun', 'LA2-T1' ], + 'YUSUN LA2 T1' => [ 'Yusun', 'LA2-T1' ], + 'LA2-T1' => [ 'Yusun', 'LA2-T1' ], + 'LA2-S' => [ 'Yusun', 'LA2-S' ], + 'LA2-SN' => [ 'Yusun', 'LA2-SN' ], + 'YUSUN LA2-W' => [ 'Yusun', 'LA2-W' ], + 'LA2-W' => [ 'Yusun', 'LA2-W' ], + 'LA2-W1' => [ 'Yusun', 'LA2-W1' ], + 'YUSUN LA2 W1' => [ 'Yusun', 'LA2-W1' ], + 'LA3-W' => [ 'Yusun', 'LA3-W' ], + 'LA3S' => [ 'Yusun', 'LA3S' ], + 'LA5-W' => [ 'Yusun', 'LA5-W' ], + 'YUSUN LA5-W' => [ 'Yusun', 'LA5-W' ], + 'YUSUN T22' => [ 'Yusun', 'T22' ], + 'YUSUN-T22' => [ 'Yusun', 'T22' ], + 'YUSUN T29' => [ 'Yusun', 'T29' ], + 'YUSUN T30' => [ 'Yusun', 'T30' ], + 'YUSUN T31' => [ 'Yusun', 'T31' ], + 'YUSUN T35!' => [ 'Yusun', 'T35' ], + 'YUSUN T50' => [ 'Yusun', 'T50' ], + 'YUSUN T85' => [ 'Yusun', 'T85' ], + 'YUSUN T808' => [ 'Yusun', 'T808' ], + 'YUSUN W35' => [ 'Yusun', 'W35' ], + 'YUSUN W90' => [ 'Yusun', 'W90' ], + 'YUSUN W91' => [ 'Yusun', 'W91' ], + 'YUSUN W306' => [ 'Yusun', 'W306' ], + 'yusun W702' => [ 'Yusun', 'W702' ], + 'YUSUN W706' => [ 'Yusun', 'W706' ], + 'YUSUN W708' => [ 'Yusun', 'W708' ], + 'YUSUN - W 800' => [ 'Yusun', 'W800' ], + 'YUSUN--W 800' => [ 'Yusun', 'W800' ], + 'YUSUN W808' => [ 'Yusun', 'W808' ], + 'YUSUN -- W 900' => [ 'Yusun', 'W900' ], + 'TB782B' => [ 'Zeki', 'TB782B', DeviceType::TABLET ], + 'TBD753B' => [ 'Zeki', 'TBD753B', DeviceType::TABLET ], + 'TBDB763' => [ 'Zeki', 'TBDB763', DeviceType::TABLET ], + 'TBDB863' => [ 'Zeki', 'TBDB863', DeviceType::TABLET ], + 'TBDC1093' => [ 'Zeki', 'TBDC1093', DeviceType::TABLET ], + 'TBDG734' => [ 'Zeki', 'TBDG734', DeviceType::TABLET ], + 'TBDG874' => [ 'Zeki', 'TBDG874', DeviceType::TABLET ], + 'TBDG1073' => [ 'Zeki', 'TBDG1073', DeviceType::TABLET ], + 'TBQC1063' => [ 'Zeki', 'TBQC1063', DeviceType::TABLET ], + 'ZENITHINK C94!' => [ 'Zenithink', 'C94', DeviceType::TABLET ], + 'p7901a' => [ 'Zenithink', 'Epad P7901A', DeviceType::TABLET ], + 'zt180' => [ 'Zenithink', 'ZT-180', DeviceType::TABLET ], + 'Z282 C91' => [ 'Zenithink', 'ZT-282', DeviceType::TABLET ], + 'Admire Alpha' => [ 'Zen', 'Admire Alpha' ], + 'Admire Curve' => [ 'Zen', 'Admire Curve' ], + 'Zen PO neo' => [ 'Zen', 'Powermax Neo' ], + 'ZEN U1' => [ 'Zen', 'Ultrafone U1' ], + 'ZEN U4' => [ 'Zen', 'Ultrafone U4' ], + 'ZEN U5' => [ 'Zen', 'Ultrafone U5' ], + 'ZEN 303 3G' => [ 'Zen', 'Ultrafone 303' ], + + 'ultrafone!!' => [ + 'ultrafone 101' => [ 'Zen', 'Ultrafone 101' ], + 'ultrafone 102' => [ 'Zen', 'Ultrafone 102' ], + 'ultrafone 104' => [ 'Zen', 'Ultrafone 104' ], + 'ultrafone 105' => [ 'Zen', 'Ultrafone 105' ], + 'ultrafone 105 Pro' => [ 'Zen', 'Ultrafone 105 Pro' ], + 'ultrafone 105+' => [ 'Zen', 'Ultrafone 105+' ], + 'ultrafone 108' => [ 'Zen', 'Ultrafone 108' ], + 'ultrafone 109' => [ 'Zen', 'Ultrafone 109' ], + 'ultrafone 111' => [ 'Zen', 'Ultrafone 111' ], + 'ultrafone 302' => [ 'Zen', 'Ultrafone 302' ], + 'ultrafone 303' => [ 'Zen', 'Ultrafone 303' ], + 'Ultrafone 303 Elite' => [ 'Zen', 'Ultrafone 303 Elite' ], + 'ultrafone 303 Play' => [ 'Zen', 'Ultrafone 303 Play' ], + 'ultrafone 303P' => [ 'Zen', 'Ultrafone 303P' ], + 'ultrafone 304' => [ 'Zen', 'Ultrafone 304' ], + 'ultrafone 308' => [ 'Zen', 'Ultrafone 308' ], + 'ultrafone 312' => [ 'Zen', 'Ultrafone 312' ], + 'ultrafone 402' => [ 'Zen', 'Ultrafone 402' ], + 'ultrafone 501' => [ 'Zen', 'Ultrafone 501' ], + 'ultrafone 502' => [ 'Zen', 'Ultrafone 502' ], + 'ultrafone 503' => [ 'Zen', 'Ultrafone 503' ], + 'ultrafone 504' => [ 'Zen', 'Ultrafone 504' ], + 'ultrafone 506' => [ 'Zen', 'Ultrafone 506' ], + 'ultrafone 701HD' => [ 'Zen', 'Ultrafone 701HD' ], + 'ultrafone 701FHD' => [ 'Zen', 'Ultrafone 701FHD' ], + ], + + 'ZIGO EON5I' => [ 'Zigo', 'Eon 5i' ], + 'Zigo Eon6i' => [ 'Zigo', 'Eon 6i' ], + 'Zigo Eon7i' => [ 'Zigo', 'Eon 7i Advance' ], + 'Zigo Eon52i' => [ 'Zigo', 'Eon 52i PIEZO' ], + 'Zigo Eon 53' => [ 'Zigo', 'Eon 53i Inspire' ], + 'Zigo Nebula6 9' => [ 'Zigo', 'Nebula Tab 6.9', DeviceType::TABLET ], + 'NEBULA6.9' => [ 'Zigo', 'Nebula Tab 6.9', DeviceType::TABLET ], + 'Zigo Nebula Tab 7.1' => [ 'Zigo', 'Nebula Tab 7.1', DeviceType::TABLET ], + 'Zigo N81' => [ 'Zigo', 'Nebula Tab 8.1', DeviceType::TABLET ], + 'Jaguar3' => [ 'ZiiLabs', 'Jaguar 3', DeviceType::TABLET ], + 'Jaguar7' => [ 'ZiiLabs', 'Jaguar 7', DeviceType::TABLET ], + 'Ziss Ranger HD' => [ 'Ziss', 'Ranger HD' ], + 'ZBOX-ID18' => [ 'Zotac', 'ZBOX ID18', DeviceType::DESKTOP ], + 'ZBOX-ID81' => [ 'Zotac', 'ZBOX ID81', DeviceType::DESKTOP ], + + 'ZTE A[0-9]{3,3}!!' => [ + 'ZTE A880' => [ 'ZTE', 'Xiao Xian' ], + 'ZTE A905L' => [ 'ZTE', 'A905L' ], + ], + + 'ZTE B[0-9]{3,3}!!' => [ + 'ZTE B790' => [ 'ZTE', 'Boost Tango' ], + 'ZTE B792' => [ 'ZTE', 'Boost Kuta' ], + 'ZTE B795' => [ 'ZTE', 'Boost Icon Nero' ], + 'ZTE B816' => [ 'ZTE', 'Boost INDY' ], + 'ZTE B880' => [ 'ZTE', 'Xiao Xian 2' ], + ], + + 'ZTE BA[0-9]{3,3}!!' => [ + 'ZTE BA510' => [ 'ZTE', 'Blade A510' ], + 'ZTE BA520' => [ 'ZTE', 'Blade A520' ], + 'ZTE BA601' => [ 'ZTE', 'Blade A601' ], + 'ZTE BA601N' => [ 'ZTE', 'Blade A601' ], + 'ZTE BA603' => [ 'ZTE', 'BA603' ], + 'ZTE BA610C' => [ 'ZTE', 'Voyage 4' ], + 'ZTE BA610T' => [ 'ZTE', 'Voyage 4' ], + 'ZTE BA611C' => [ 'ZTE', 'BA611C' ], + 'ZTE BA611T' => [ 'ZTE', 'BA611T' ], + 'ZTE BA620' => [ 'ZTE', 'Blade X3' ], + 'ZTE BA910' => [ 'ZTE', 'Blade A910' ], + 'ZTE BA910T' => [ 'ZTE', 'Blade A910' ], + ], + + 'ZTE BV0[0-9]{3,3}!!' => [ + 'ZTE BV0701' => [ 'ZTE', 'Xiao Xian 4' ], + 'ZTE BV0710' => [ 'ZTE', 'Blade V7 Max' ], + 'ZTE BV0710T' => [ 'ZTE', 'Blade V7 Max' ], + 'ZTE BV0720' => [ 'ZTE', 'Blade A2' ], + 'ZTE BV0720T' => [ 'ZTE', 'Blade A2' ], + 'ZTE BV0730' => [ 'ZTE', 'Blade A2 Plus' ], + 'ZTE BV0800' => [ 'ZTE', 'Blade V8' ], + 'ZTE BV0870' => [ 'ZTE', 'BV0870' ], + ], + + 'ZTE C[0-9]{3,3}!!' => [ + 'ZTE C310' => [ 'ZTE', 'Blade C310' ], + 'ZTE C880' => [ 'ZTE', 'C880' ], + 'ZTE C880A' => [ 'ZTE', 'Blade A1' ], + 'ZTE C880D' => [ 'ZTE', 'C880D' ], + 'ZTE C880S' => [ 'ZTE', 'Xiao Xian 3' ], + 'ZTE C880U' => [ 'ZTE', 'Blade A1' ], + ], + + 'ZTE C N[0-9]{3,3}!!' => [ + 'ZTE C N600!' => [ 'ZTE', 'C N600' ], + 'ZTE C N606' => [ 'ZTE', 'C N606' ], + 'ZTE C N700' => [ 'ZTE', 'C N700' ], + 'ZTE C N760' => [ 'ZTE', 'C N760' ], + 'ZTE C N780' => [ 'ZTE', 'C N780' ], + 'ZTE C N880!' => [ 'ZTE', 'Blade' ], + ], + + 'ZTE C R[0-9]{3,3}!!' => [ + 'ZTE C R750' => [ 'ZTE', 'C R750' ], + 'ZTE C R750+' => [ 'ZTE', 'C R750' ], + ], + + 'ZTE C X[0-9]{3,3}!!' => [ + 'ZTE C X500' => [ 'ZTE', 'Score' ], + 'ZTE C X920' => [ 'ZTE', 'C X920' ], + ], + + 'ZTE ?G[0-9]{3,3}!!' => [ + 'ZTE ?G601U!' => [ 'ZTE', 'G601U' ], + 'ZTE G717C' => [ 'ZTE', 'G717C' ], + 'ZTE G718C' => [ 'ZTE', 'G718C' ], + 'ZTE G719C' => [ 'ZTE', 'G719C' ], + 'ZTE G720C' => [ 'ZTE', 'G720C' ], + 'ZTE ?G720T!' => [ 'ZTE', 'G720T' ], + 'ZTE G721C' => [ 'ZTE', 'G721C' ], + ], + + '(ZTE ?)?N[0-9]{3,3}!!' => [ + 'N762' => [ 'ZTE', 'N762' ], + 'ZTE N788' => [ 'ZTE', 'N788' ], + 'ZTE N789' => [ 'ZTE', 'N789' ], + 'ZTE N790!' => [ 'ZTE', 'N790' ], + 'ZTE N795' => [ 'ZTE', 'N795' ], + 'ZTE N798!' => [ 'ZTE', 'N798' ], + 'ZTE N799!' => [ 'ZTE', 'Blade Eg' ], + 'N799D' => [ 'ZTE', 'Blade Eg' ], + 'N800' => [ 'ZTE', 'Awe' ], + 'ZTE N807' => [ 'ZTE', 'N807' ], + 'N810' => [ 'ZTE', 'Reef' ], + 'N817' => [ 'ZTE', 'Quest' ], + 'ZTE N818' => [ 'ZTE', 'N818' ], + 'ZTE N818-YUNOS' => [ 'ZTE', 'N818' ], + 'N850L' => [ 'ZTE', 'Director' ], + 'ZTE N855D' => [ 'ZTE', 'N855D' ], + 'ZTE N855D+' => [ 'ZTE', 'N855D' ], + 'N860' => [ 'ZTE', 'Warp' ], + 'N880' => [ 'ZTE', 'Blade' ], + 'ZTE N880E!' => [ 'ZTE', 'N880E' ], + 'ZTE N880F' => [ 'ZTE', 'N880F' ], + 'ZTE N880G' => [ 'ZTE', 'N880G' ], + 'ZTE N880W' => [ 'ZTE', 'N880W' ], + 'ZTE N881E' => [ 'ZTE', 'N881E' ], + 'ZTE N881F' => [ 'ZTE', 'N881F' ], + 'ZTE N882E' => [ 'ZTE', 'N882E' ], + 'ZTE N900' => [ 'ZTE', 'N900' ], + 'ZTE N900D' => [ 'ZTE', 'N900' ], + 'ZTE N909' => [ 'ZTE', 'N909' ], + 'ZTE N909D' => [ 'ZTE', 'N909' ], + 'ZTE N909-YUNOS' => [ 'ZTE', 'N909' ], + 'ZTE N910' => [ 'ZTE', 'Anthem' ], + 'ZTEN918St' => [ 'ZTE', 'N918St' ], + 'ZTE N919' => [ 'ZTE', 'N919' ], + 'ZTE N919D' => [ 'ZTE', 'N919' ], + 'ZTE N928Dt' => [ 'ZTE', 'Weiwu 3C' ], + 'ZTE N939Sc' => [ 'ZTE', 'Weiwu 3' ], + 'ZTE N939St' => [ 'ZTE', 'Weiwu 3' ], + 'N958St' => [ 'ZTE', 'Nubia V5 Max' ], + 'ZTE N960' => [ 'ZTE', 'Skate' ], + 'ZTE N970' => [ 'ZTE', 'Grand X' ], + 'ZTE N980' => [ 'ZTE', 'N980' ], + 'ZTE N983' => [ 'ZTE', 'N983' ], + 'N986' => [ 'ZTE', 'N986' ], + 'ZTE N986' => [ 'ZTE', 'N986' ], + ], + + '(ZXY-)?(ZTE )?N[0-9]{4,4}!!' => [ + 'N8000' => [ 'ZTE', 'Engage LT' ], + 'N8000 USA Cricket' => [ 'ZTE', 'Engage LT' ], + 'N8000 USA RS' => [ 'ZTE', 'Engage LT' ], + 'N8000 WHTE CKT' => [ 'ZTE', 'Engage LT' ], + 'ZXY-ZTE N8010' => [ 'ZTE', 'N8010' ], + 'ZXY-ZTE N8300' => [ 'ZTE', 'N8300' ], + 'N9100' => [ 'ZTE', 'Force' ], + 'N9101' => [ 'ZTE', 'Imperial' ], + 'ZTE N9120' => [ 'ZTE', 'Avid' ], + 'N9130' => [ 'ZTE', 'Speed' ], + 'N9132' => [ 'ZTE', 'Prestige' ], + 'N9180' => [ 'ZTE', 'Red Bull V5' ], + 'N9500' => [ 'ZTE', 'Flash' ], + 'N9510' => [ 'ZTE', 'Warp' ], + 'ZTE N9511' => [ 'ZTE', 'Fury' ], + 'N9515' => [ 'ZTE', 'Warp Sync' ], + 'N9518' => [ 'ZTE', 'Warp Elite' ], + 'N9520' => [ 'ZTE', 'Stormer' ], + 'N9521' => [ 'ZTE', 'Boost Max+' ], + 'N9810' => [ 'ZTE', 'Vital' ], + 'N9835' => [ 'ZTE', 'Grand S Pro' ], + ], + + '(ZXY-)?NX[0-9]{2,3}!!' => [ + 'NX40X' => [ 'ZTE', 'Nubia Z5 mini' ], + 'NX40X APT' => [ 'ZTE', 'Nubia Z5 mini' ], + 'NX402' => [ 'ZTE', 'Nubia Z5 mini' ], + 'NX403A' => [ 'ZTE', 'Nubia Z5 mini' ], + 'NX404H' => [ 'ZTE', 'Nubia Z5s mini' ], + 'NX405H' => [ 'ZTE', 'Nubia Z5s mini' ], + 'NX406E' => [ 'ZTE', 'Nubia Z5s mini' ], + 'NX501' => [ 'ZTE', 'Nubia Z5' ], + 'NX50X' => [ 'ZTE', 'Nubia Z5' ], + 'NX503' => [ 'ZTE', 'Nubia Z5s' ], + 'NX503A' => [ 'ZTE', 'Nubia Z5s' ], + 'NX503J' => [ 'ZTE', 'Nubia Z5s' ], + 'NX505J' => [ 'ZTE', 'Nubia Z7 Max' ], + 'NX506J' => [ 'ZTE', 'Nubia Z7' ], + 'NX507H' => [ 'ZTE', 'Nubia Z7 mini' ], + 'NX507J' => [ 'ZTE', 'Nubia Z7 mini' ], + 'NX508J' => [ 'ZTE', 'Nubia Z9' ], + 'NX510J' => [ 'ZTE', 'Nubia Z9 Max' ], + 'NX511J' => [ 'ZTE', 'Nubia Z9 mini' ], + 'NX512J' => [ 'ZTE', 'Nubia Z9 Max' ], + 'ZXY-NX512J' => [ 'ZTE', 'Nubia Z9 Max' ], + 'NX518J' => [ 'ZTE', 'Nubia Z9 Max Elite' ], + 'NX531J' => [ 'ZTE', 'Nubia Z11' ], + 'NX523J V1' => [ 'ZTE', 'Nubia Z11 Max' ], + 'NX529J' => [ 'ZTE', 'Nubia Z11 Mini' ], + 'NX549J' => [ 'ZTE', 'Nubia Z11 Mini S' ], + 'NX563J' => [ 'ZTE', 'Nubia Z17' ], + 'NX569H' => [ 'ZTE', 'Nubia Z17 Mini' ], + 'NX513J' => [ 'ZTE', 'Nubia My Prague' ], + 'NX601J' => [ 'ZTE', 'Nubia X6' ], + ], + + 'ZTE K813' => [ 'ZTE', 'K813' ], + + 'ZTE M[0-9]{3,3}!!' => [ + 'ZTE M901C' => [ 'ZTE', 'Grand Memo 2' ], + ], + + 'ZTE P[0-9]{3,3}!!' => [ + 'ZTE P727A' => [ 'ZTE', 'P722A' ], + ], + + 'ZTE ?Q[0-9]{3,3}!!' => [ + 'ZTE Q101T' => [ 'ZTE', 'Q101T' ], + 'ZTE Q201T' => [ 'ZTE', 'Q201T' ], + 'ZTE Q301C' => [ 'ZTE', 'Q301C' ], + 'ZTE Q302C' => [ 'ZTE', 'Q302C' ], + 'ZTE Q501T' => [ 'ZTE', 'Q501T' ], + 'ZTE Q501U' => [ 'ZTE', 'Q501U' ], + 'ZTE Q503U' => [ 'ZTE', 'Q503U' ], + 'ZTE ?Q505T!' => [ 'ZTE', 'Q505T' ], + 'ZTE Q507T' => [ 'ZTE', 'Q507T' ], + 'ZTE Q508U' => [ 'ZTE', 'Q508U' ], + 'ZTE ?Q509T!' => [ 'ZTE', 'Q509T' ], + 'ZTE Q519T' => [ 'ZTE', 'Q519T' ], + 'ZTE Q529C' => [ 'ZTE', 'Q529C' ], + 'ZTE Q529E' => [ 'ZTE', 'Q529E' ], + 'ZTE Q529T' => [ 'ZTE', 'Q529T' ], + 'ZTE Q701C' => [ 'ZTE', 'Q701C' ], + 'ZTE ?Q705U!' => [ 'ZTE', 'Q705U' ], + 'ZTE Q801L' => [ 'ZTE', 'Q801L' ], + 'ZTE ?Q801U!' => [ 'ZTE', 'Q801U' ], + 'ZTE Q802C' => [ 'ZTE', 'Q802C' ], + 'ZTE Q802D' => [ 'ZTE', 'Q802D' ], + 'ZTE ?Q802T!' => [ 'ZTE', 'Q802T' ], + 'ZTE Q805T' => [ 'ZTE', 'Q805T' ], + 'ZTE Q806T' => [ 'ZTE', 'Q806T' ], + ], + + 'ZTE Q[0-9]!!' => [ + 'ZTE Q2S-C' => [ 'ZTE', 'Q2S-C' ], + 'ZTE Q2S-T' => [ 'ZTE', 'Q2S-T' ], + 'ZTE Q5-T' => [ 'ZTE', 'Q5-T' ], + 'ZTE Q7' => [ 'ZTE', 'Q7' ], + 'ZTE Q7-C' => [ 'ZTE', 'Q7-C' ], + ], + + 'ZTE R[0-9]{3,3}!!' => [ + 'ZTE R880H' => [ 'ZTE', 'Spark' ], + ], + + 'ZTE S[0-9]{3,3}!!' => [ + 'ZTE S118' => [ 'ZTE', 'Grand S Lite' ], + 'ZTE S158' => [ 'ZTE', 'S158' ], + 'ZTE S251' => [ 'ZTE', 'Grand S II' ], + 'ZTE S291' => [ 'ZTE', 'Grand S II' ], + ], + + 'ZTE T[0-9]!!' => [ + 'ZTE T12' => [ 'ZTE', 'Uno' ], // Telstra + 'ZTE T22' => [ 'ZTE', 'Urbane' ], // Telstra + 'ZTE T28' => [ 'ZTE', 'Active Touch' ], // Telstra + 'ZTE T28 Prepaid' => [ 'ZTE', 'Active Touch' ], // Telstra + 'ZTE T60' => [ 'ZTE', 'QWERTY Touch' ], // Telstra + 'ZTE T80' => [ 'ZTE', 'Evolution' ], // Telstra + 'ZTE T81' => [ 'ZTE', 'Grand X LTE' ], + 'ZTE T82' => [ 'ZTE', 'Grand X LTE' ], + 'ZTE T83' => [ 'ZTE', 'Dave' ], // Telstra + 'ZTE T84' => [ 'ZTE', 'Tough Max' ], // Telstra + 'ZTE T86' => [ 'ZTE', 'T86' ], + 'ZTE T220' => [ 'ZTE', 'Blade A3' ], + 'ZTE T221' => [ 'ZTE', 'Blade AF3' ], + 'ZTE T230' => [ 'ZTE', 'T230' ], + 'ZTE T311' => [ 'ZTE', 'Blade Q Lux' ], + 'ZTE T320' => [ 'ZTE', 'Blade GF3' ], + 'ZTE T520' => [ 'ZTE', 'Blade L5' ], + 'ZTE T610' => [ 'ZTE', 'Blade L4 Pro' ], + 'ZTE T617' => [ 'ZTE', 'Blade D Lux' ], + 'ZTE T620' => [ 'ZTE', 'Blade D2' ], + 'ZTE T630' => [ 'ZTE', 'Blade X5' ], + 'ZTE T660' => [ 'ZTE', 'Blade V6' ], + 'ZTE T663' => [ 'ZTE', 'Blade Z7' ], + 'ZTE T760' => [ 'ZTE', 'Smart Touch 2' ], // Telstra + 'ZTE T790' => [ 'ZTE', 'Pulse' ], // Telstra + 'ZTE T792' => [ 'ZTE', 'Rush' ], // Telstra + 'ZTE T809' => [ 'ZTE', 'Easy Smart' ], // Telstra + 'ZTE T815' => [ 'ZTE', 'Tempo' ], // Telstra + 'ZTE T816' => [ 'ZTE', 'Smart Plus' ], // Telstra + 'ZTE T912' => [ 'ZTE', 'Blade S6 Lite' ], + 'ZTE T920' => [ 'ZTE', 'Blade S7' ], + ], + + 'ZTE T ?U[0-9]{3,3}!!' => [ + 'ZTE T U802' => [ 'ZTE', 'T U802' ], + 'ZTE TU802' => [ 'ZTE', 'T U802' ], + 'ZTE T U805' => [ 'ZTE', 'T U805' ], + 'ZTE TU805' => [ 'ZTE', 'T U805' ], + 'ZTE T U806' => [ 'ZTE', 'T U806' ], + 'ZTE T U812' => [ 'ZTE', 'T U812' ], + 'ZTE TU812' => [ 'ZTE', 'T U812' ], + 'ZTE T U830' => [ 'ZTE', 'T U830' ], + 'ZTE T ?U880!' => [ 'ZTE', 'Blade' ], + 'ZTE T ?U900!' => [ 'ZTE', 'T U900' ], + 'ZTE T ?U960!' => [ 'ZTE', 'T U960' ], + ], + + '(ZTE ?)?U[0-9]{3,3}!!' => [ + 'ZTE ?U788!' => [ 'ZTE', 'U788' ], + 'ZTE U788+' => [ 'ZTE', 'U788+' ], + 'ZTE ?U790!' => [ 'ZTE', 'U790' ], + 'ZTE ?U791!' => [ 'ZTE', 'U791' ], + 'ZTE ?U793!' => [ 'ZTE', 'U793' ], + 'ZTE ?U795!' => [ 'ZTE', 'U795' ], + 'ZTE ?U795+!' => [ 'ZTE', 'U795+' ], + 'ZTE ?U807!' => [ 'ZTE', 'U807' ], + 'ZTE ?U807N!' => [ 'ZTE', 'U807N' ], + 'ZTE U808' => [ 'ZTE', 'U808' ], + 'ZTE U809' => [ 'ZTE', 'U809' ], + 'ZTE ?U817!' => [ 'ZTE', 'U817' ], + 'ZTE ?U818!' => [ 'ZTE', 'U818' ], + 'ZTE ?U819!' => [ 'ZTE', 'U819' ], + 'ZTE ?U879!' => [ 'ZTE', 'U879' ], + 'U880' => [ 'ZTE', 'Blade' ], + 'U880E' => [ 'ZTE', 'Blade' ], + 'U880s' => [ 'ZTE', 'Blade' ], + 'ZTE ?U880!' => [ 'ZTE', 'Blade' ], + 'ZTE ?U885!' => [ 'ZTE', 'U885' ], + 'ZTE ?U887!' => [ 'ZTE', 'U887' ], + 'ZTE ?U889!' => [ 'ZTE', 'U889' ], + 'ZTE U930 Ultimate' => [ 'ZTE', 'Grand X Ultimate' ], + 'ZTE ?U930HD!' => [ 'ZTE', 'U930HD' ], + 'ZTE U930!' => [ 'ZTE', 'Grand X' ], + 'ZTE ?U935!' => [ 'ZTE', 'U935' ], + 'ZTE U950' => [ 'ZTE', 'U950' ], + 'ZTE ?U956!' => [ 'ZTE', 'U956' ], + 'ZTE ?U960E!' => [ 'ZTE', 'U960E' ], + 'ZTE ?U960s2!' => [ 'ZTE', 'U960s2' ], + 'ZTE ?U960s3!' => [ 'ZTE', 'U960s3' ], + 'ZTE U968' => [ 'ZTE', 'U968' ], + 'ZTE U969' => [ 'ZTE', 'U969' ], + 'ZTE U970!' => [ 'ZTE', 'Grand X' ], + 'ZTE U985' => [ 'ZTE', 'Grand Era' ], + 'ZTE U988S' => [ 'ZTE', 'Geek' ], + ], + + 'ZTE U N[0-9]{3,3}!!' => [ + 'ZTE U N720' => [ 'ZTE', 'U N720' ], + 'ZTE U N721' => [ 'ZTE', 'U N721' ], + ], + + 'ZTE U[ \(\-]V[\)\-]?[0-9]{3,3}!!' => [ + 'ZTE U V760' => [ 'ZTE', 'U V760' ], + 'ZTE U V852' => [ 'ZTE', 'Dreamer' ], + 'ZTE U V856' => [ 'ZTE', 'Mimosa Mini' ], + 'ZTE U V857' => [ 'ZTE', 'U V857' ], + 'ZTE U V859' => [ 'ZTE', 'U V859' ], + 'ZTE U-V880' => [ 'ZTE', 'Blade' ], + 'ZTE U V880' => [ 'ZTE', 'Blade' ], + 'ZTE U V-880' => [ 'ZTE', 'Blade' ], + 'ZTE U(V)880+' => [ 'ZTE', 'Blade' ], + 'ZTE U V881' => [ 'ZTE', 'Blade II' ], + 'ZTE U V889D' => [ 'ZTE', 'U V889D' ], + 'ZTE U V960' => [ 'ZTE', 'Skate' ], + ], + + 'ZTE U X[0-9]{3,3}!!' => [ + 'ZTE U X850' => [ 'ZTE', 'Racer' ], + 'ZTE U X876' => [ 'ZTE', 'U X876' ], + ], + + '(ZTE ?)?V[0-9]{3,3}[A-Z]!!' => [ + 'ZTE V765M' => [ 'ZTE', 'LEO Q1' ], + 'ZTE V769M' => [ 'ZTE', 'LEO Q2' ], + 'V769M' => [ 'ZTE', 'LEO Q2' ], + 'ZTE V779M' => [ 'ZTE', 'V779M' ], + 'ZTEV779M' => [ 'ZTE', 'V779M' ], + 'ZTE V788D' => [ 'ZTE', 'Kis' ], + 'ZTE V788D B17' => [ 'ZTE', 'Kis' ], + 'ZTE V811W' => [ 'ZTE', 'Kis 3' ], + 'ZTE V813W' => [ 'ZTE', 'Blade C2 Plus' ], + 'ZTE V815W' => [ 'ZTE', 'Blade G' ], + 'ZTE V816W' => [ 'ZTE', 'V816W' ], + 'ZTE V830W' => [ 'ZTE', 'Blade G Lux' ], + 'ZTE V831W' => [ 'ZTE', 'V831W' ], + 'V865M' => [ 'ZTE', 'Telepatria' ], + 'ZTE V877b' => [ 'ZTE', 'V877B' ], + 'ZTE V880E' => [ 'ZTE', 'V880E' ], + 'ZTE V880G' => [ 'ZTE', 'Blade G' ], + 'ZTE V880H' => [ 'ZTE', 'Blade G2' ], + 'ZTE V889D' => [ 'ZTE', 'V889D' ], + 'ZTE V889F' => [ 'ZTE', 'Blade III Pro' ], + 'ZTE V889M' => [ 'ZTE', 'V889M' ], + 'ZTE V889S' => [ 'ZTE', 'Blade C' ], + 'ZTE V967S' => [ 'ZTE', 'V967S' ], + 'ZTEv967s' => [ 'ZTE', 'V967S' ], + 'ZTE V970M!' => [ 'ZTE', 'Grand X' ], + 'ZTE V970T' => [ 'ZTE', 'Grand X' ], + 'ZTE V993W' => [ 'ZTE', 'Nubia V5' ], + ], + + '(ZTE ?)?V ?[0-9]{3,3}!!' => [ + 'ZTE V768' => [ 'ZTE', 'Concord' ], + 'ZTE V790' => [ 'ZTE', 'Kis 3' ], + 'ZTE V791' => [ 'ZTE', 'V791' ], + 'ZTE V793' => [ 'ZTE', 'Kis Flex' ], + 'ZTE V795' => [ 'ZTE', 'Kis 2' ], + 'ZTE V797' => [ 'ZTE', 'V797' ], + 'ZTE V807' => [ 'ZTE', 'Blade C' ], + 'ZTE V808' => [ 'ZTE', 'V808' ], + 'ZTE V809' => [ 'ZTE', 'Blade C2' ], + 'ZTE V811' => [ 'ZTE', 'Hop Smart' ], + 'ZTE V812' => [ 'ZTE', 'Skinny' ], + 'ZTE V817' => [ 'ZTE', 'V817' ], + 'ZTE V818' => [ 'ZTE', 'V818' ], + 'ZTE V829' => [ 'ZTE', 'Blade G Plus' ], + 'ZTE V856' => [ 'ZTE', 'Movistar One' ], + 'ZTE V860' => [ 'ZTE', 'Roamer' ], + 'ZTE V875' => [ 'ZTE', 'V875' ], + 'V880' => [ 'ZTE', 'Blade' ], + 'ZTE V880' => [ 'ZTE', 'Blade' ], + 'ZTE V881' => [ 'ZTE', 'Blade II' ], + 'ZTE V882' => [ 'ZTE', 'Lord' ], + 'ZTE V887' => [ 'ZTE', 'Blade L' ], + 'ZTE V955' => [ 'ZTE', 'V955' ], + 'ZTE V956' => [ 'ZTE', 'Blade E' ], + 'ZTE V960' => [ 'ZTE', 'Skate' ], + 'ZTE V965' => [ 'ZTE', 'V965' ], + 'ZTE V968' => [ 'ZTE', 'Grand X Quad' ], + 'ZTE V969' => [ 'ZTE', 'Grand X2 L' ], + 'ZTE V970!' => [ 'ZTE', 'Grand X' ], + 'ZTE V975' => [ 'ZTE', 'Geek' ], + 'ZTE V983' => [ 'ZTE', 'Grand X Pro' ], + 'ZTE V985' => [ 'ZTE', 'Grand Era' ], + 'ZTE V985 Grand Era' => [ 'ZTE', 'Grand Era' ], + 'ZTE V ?987!' => [ 'ZTE', 'Grand X Quad' ], + 'ZTE V988' => [ 'ZTE', 'Grand S' ], + 'ZTE V998' => [ 'ZTE', 'Grand S' ], + ], + + '(ZTE ?)?X[0-9]{3,3}!!' => [ + 'X500' => [ 'ZTE', 'Score' ], + 'ZTE X500' => [ 'ZTE', 'Score' ], + 'X500 USA General' => [ 'ZTE', 'Score' ], + 'X501 USA Cricket' => [ 'ZTE', 'Groove' ], + 'X501 USA RS' => [ 'ZTE', 'Groove' ], + 'ZTE X850' => [ 'ZTE', 'Racer' ], + 'ZTE X876' => [ 'ZTE', 'Raise' ], + ], + + '(ZTE )?Z[0-9]!!' => [ + 'ZTE Z601' => [ 'ZTE', 'Z601' ], + 'Z660G' => [ 'ZTE', 'Wirl' ], + 'ZTE Z660G' => [ 'ZTE', 'Wirl' ], + 'Z665C' => [ 'ZTE', 'Valet' ], + 'Z667' => [ 'ZTE', 'Prelude 2' ], + 'ZTE Z667' => [ 'ZTE', 'Prelude 2' ], + 'ZTE Z667G' => [ 'ZTE', 'Wirl 2' ], + 'Z667G' => [ 'ZTE', 'Wirl 2' ], + 'Z667T' => [ 'ZTE', 'Zinger' ], + 'ZTE Z669' => [ 'ZTE', 'Prelude 2' ], + 'Z716BL' => [ 'ZTE', 'Citrine' ], + 'ZTE Z716BL' => [ 'ZTE', 'Citrine' ], + 'Z717VL' => [ 'ZTE', 'Citrine' ], + 'Z718TL' => [ 'ZTE', 'Jasper' ], + 'Z719DL' => [ 'ZTE', 'Zmax One' ], + 'Z730' => [ 'ZTE', 'Concord II' ], + 'Z740' => [ 'ZTE', 'Radiant' ], + 'ZTE Z740' => [ 'ZTE', 'Radiant' ], + 'Z740G' => [ 'ZTE', 'Sonata 4G' ], + 'ZTE Z740G' => [ 'ZTE', 'Sonata 4G' ], + 'Z750C' => [ 'ZTE', 'Savvy' ], + 'Z752C' => [ 'ZTE', 'Zephyr' ], + 'Z753G' => [ 'ZTE', 'Paragon' ], + 'ZTE Z753G' => [ 'ZTE', 'Paragon' ], + 'ZTE Z755' => [ 'ZTE', 'Sonata 2' ], + 'Z768G' => [ 'ZTE', 'Midnight' ], + 'Z777' => [ 'ZTE', 'Grand X' ], + 'ZTE Z777' => [ 'ZTE', 'Grand X' ], + 'Z787' => [ 'ZTE', 'Grand X Max' ], + 'ZTE Z787' => [ 'ZTE', 'Grand X Max' ], + 'Z788G' => [ 'ZTE', 'Illustra' ], + 'ZTE Z791G' => [ 'ZTE', 'Scend' ], + 'Z791G' => [ 'ZTE', 'Scend' ], + 'Z792' => [ 'ZTE', 'Fanfare' ], + 'ZTE Z792' => [ 'ZTE', 'Fanfare' ], + 'Z793C' => [ 'ZTE', 'Atrium' ], + 'Z795G' => [ 'ZTE', 'Solar' ], + 'Z796C' => [ 'ZTE', 'Majesty' ], + 'Z797C' => [ 'ZTE', 'Quartz' ], + 'Z798BL' => [ 'ZTE', 'Majesty Pro' ], + 'Z799VL' => [ 'ZTE', 'Majesty Pro' ], + 'Z799C' => [ 'ZTE', 'Quartz' ], + 'ZTE Z812' => [ 'ZTE', 'Maven' ], + 'ZTE Z813' => [ 'ZTE', 'Overture 2' ], + 'Z813' => [ 'ZTE', 'Overture 2' ], + 'ZTE Z815' => [ 'ZTE', 'Fanfare 2' ], + 'Z818L' => [ 'ZTE', 'Allstar' ], + 'ZTE Z818L' => [ 'ZTE', 'Allstar' ], + 'Z819L' => [ 'ZTE', 'Stratos' ], + 'Z820' => [ 'ZTE', 'Obsidian' ], + 'Z828' => [ 'ZTE', 'Avid Plus' ], + 'Z828TL' => [ 'ZTE', 'Midnight Pro' ], + 'ZTE Z830' => [ 'ZTE', 'Compel' ], + 'ZTE Z831' => [ 'ZTE', 'Maven 2' ], + 'ZTE Z832' => [ 'ZTE', 'Sonata 3' ], + 'Z832' => [ 'ZTE', 'Sonata 3' ], + 'ZTE Z835' => [ 'ZTE', 'Maven 3' ], + 'Z836BL' => [ 'ZTE', 'ZFive 2' ], + 'Z837VL' => [ 'ZTE', 'ZFive 2' ], + 'ZTE Z851M' => [ 'ZTE', 'Overture 3' ], + 'ZTE Z852' => [ 'ZTE', 'Fanfare 3' ], + 'ZTE Z861BL' => [ 'ZTE', 'ZFive-L' ], + 'Z861BL' => [ 'ZTE', 'ZFive-L' ], + 'Z862VL' => [ 'ZTE', 'ZFive-L' ], + 'Z863DL' => [ 'ZTE', 'Lannister weeper' ], + 'Z899VL' => [ 'ZTE', 'Majesty Pro' ], + 'ZTE Z901L' => [ 'ZTE', 'Merit' ], + 'ZTE Z916BL' => [ 'ZTE', 'Zmax Grand' ], + 'ZTE Z917VL' => [ 'ZTE', 'Zmax Champ' ], + 'Z917VL' => [ 'ZTE', 'Zmax Champ' ], + 'Z930L' => [ 'ZTE', 'Unico' ], + 'Z932L' => [ 'ZTE', 'Rapido' ], + 'Z936L' => [ 'ZTE', 'Lever' ], + 'ZTE Z955L' => [ 'ZTE', 'Zmax 2' ], + 'Z955L' => [ 'ZTE', 'Zmax 2' ], + 'ZTE Z956' => [ 'ZTE', 'Z956' ], + 'Z957' => [ 'ZTE', 'Grand X4' ], + 'ZTE Z958' => [ 'ZTE', 'Zmax 2' ], + 'Z958' => [ 'ZTE', 'Zmax 2' ], + 'Z959' => [ 'ZTE', 'Grand X 3' ], + 'ZTE Z962BL' => [ 'ZTE', 'Max Duo LTE' ], + 'Z962BL' => [ 'ZTE', 'Max Duo LTE' ], + 'Z963VL' => [ 'ZTE', 'Max Duo' ], + 'ZTE Z968' => [ 'ZTE', 'Zmax' ], + 'Z970' => [ 'ZTE', 'Zmax' ], + 'ZTE Z971' => [ 'ZTE', 'Blade Spark' ], + 'Z978' => [ 'ZTE', 'Blade V8 Pro' ], + 'Z981' => [ 'ZTE', 'Zmax Pro' ], + 'ZTE Z981' => [ 'ZTE', 'Zmax Pro' ], + 'ZTE Z983' => [ 'ZTE', 'Blade X Max' ], + 'Z986DL' => [ 'ZTE', 'Zmax Blue' ], + 'Z987' => [ 'ZTE', 'Grand X Max+' ], + 'ZTE Z987' => [ 'ZTE', 'Grand X Max+' ], + 'ZTE Z988' => [ 'ZTE', 'Grand X Max 2' ], + 'Z988' => [ 'ZTE', 'Grand X Max 2' ], + 'ZTE Z990!' => [ 'ZTE', 'Roamer' ], + 'ZTE Z992' => [ 'ZTE', 'Avail 2' ], + 'Z992' => [ 'ZTE', 'Avail 2' ], + 'ZTE Z993' => [ 'ZTE', 'Prelude' ], + 'ZTE Z995' => [ 'ZTE', 'Overture' ], + 'ZTE Z998' => [ 'ZTE', 'Unico' ], + ], + + '(ZTE )?Blade!!' => [ + 'ZTE Blade' => [ 'ZTE', 'Blade' ], + 'Blade(-V880|-opda)?$!' => [ 'ZTE', 'Blade' ], + 'ZTE Blade 2' => [ 'ZTE', 'Blade II' ], + 'BLADEII' => [ 'ZTE', 'Blade II' ], + 'Blade2' => [ 'ZTE', 'Blade II' ], + 'ZTE Blade III' => [ 'ZTE', 'Blade III' ], + 'Blade III' => [ 'ZTE', 'Blade III' ], + 'BLADE III IL' => [ 'ZTE', 'Blade III' ], + 'ZTE Blade III Pro' => [ 'ZTE', 'Blade III Pro' ], + 'ZTE Blade Apex' => [ 'ZTE', 'Blade Apex' ], + 'ZTE Blade Apex2' => [ 'ZTE', 'Blade Apex2' ], + 'ZTE Blade Apex3' => [ 'ZTE', 'Blade Apex3' ], + 'ZTE BLADE V0730' => [ 'ZTE', 'Blade A2 Plus' ], + 'ZTE Blade A2 plus' => [ 'ZTE', 'Blade A2 Plus' ], + 'ZTE Blade A5' => [ 'ZTE', 'Blade A5' ], + 'ZTE BLADE A5 PRO' => [ 'ZTE', 'Blade A5 Pro' ], + 'ZTE BLADE A6' => [ 'ZTE', 'Blade A6' ], + 'ZTE BLADE A6 MAX' => [ 'ZTE', 'Blade A6 Max' ], + 'ZTE BLADE A110' => [ 'ZTE', 'Blade A110' ], + 'ZTE BLADE A112' => [ 'ZTE', 'Blade A112' ], + 'ZTE BLADE A125' => [ 'ZTE', 'Blade A125' ], + 'ZTE BLADE A210' => [ 'ZTE', 'Blade A210' ], + 'ZTE BLADE A310' => [ 'ZTE', 'Blade A310' ], + 'ZTE Blade A315' => [ 'ZTE', 'Blade A315' ], + 'ZTE Blade A410' => [ 'ZTE', 'Blade A410' ], + 'ZTE Blade A430' => [ 'ZTE', 'Blade A430' ], + 'ZTE Blade A450' => [ 'ZTE', 'Blade A450' ], + 'ZTE Blade A452' => [ 'ZTE', 'Blade A452' ], + 'ZTE BLADE A460' => [ 'ZTE', 'Blade A460' ], + 'Blade A460' => [ 'ZTE', 'Blade A460' ], + 'ZTE Blade A462' => [ 'ZTE', 'Blade A462' ], + 'ZTE Blade A465' => [ 'ZTE', 'Blade A465' ], + 'ZTE Blade A470' => [ 'ZTE', 'Blade A470' ], + 'ZTE Blade A475' => [ 'ZTE', 'Blade A475' ], + 'ZTE Blade A476' => [ 'ZTE', 'Blade A476' ], + 'ZTE BLADE A506' => [ 'ZTE', 'Blade A506' ], + 'Blade A510' => [ 'ZTE', 'Blade A510' ], + 'ZTE BLADE A510' => [ 'ZTE', 'Blade A510' ], + 'ZTE Blade A511' => [ 'ZTE', 'Blade A511' ], + 'ZTE BLADE A512' => [ 'ZTE', 'Blade A512' ], + 'ZTE Blade A515' => [ 'ZTE', 'Blade A515' ], + 'ZTE BLADE A520' => [ 'ZTE', 'Blade A520' ], + 'ZTE BLADE A521' => [ 'ZTE', 'Blade A521' ], + 'ZTE Blade A570' => [ 'ZTE', 'Blade A570' ], + 'ZTE BLADE A601' => [ 'ZTE', 'Blade A601' ], + 'ZTE BLADE A602' => [ 'ZTE', 'Blade A602' ], + 'BLADE A602' => [ 'ZTE', 'Blade A602' ], + 'ZTE BLADE A610' => [ 'ZTE', 'Blade A610' ], + 'ZTE BLADE A610C' => [ 'ZTE', 'Blade A610C' ], + 'ZTE BLADE A612' => [ 'ZTE', 'Blade A612' ], + 'ZTE BLADE A0620' => [ 'ZTE', 'Blade A620' ], + 'ZTE BLADE A910' => [ 'ZTE', 'Blade A910' ], + 'ZTE Blade AF5' => [ 'ZTE', 'Blade AF5' ], + 'ZTE BLADE B112' => [ 'ZTE', 'Blade B112' ], + 'ZTE Blade Buzz' => [ 'ZTE', 'Blade Buzz' ], + 'ZTE BLADE C' => [ 'ZTE', 'Blade C' ], + 'ZTE Blade C2' => [ 'ZTE', 'Blade C2' ], + 'ZTE Blade C2 Plus' => [ 'ZTE', 'Blade C2 Plus' ], + 'ZTE Blade C310' => [ 'ZTE', 'Blade C310' ], + 'ZTE Blade C312' => [ 'ZTE', 'Blade C312' ], + 'ZTE Blade C320' => [ 'ZTE', 'Blade C320' ], + 'ZTE Blade C330' => [ 'ZTE', 'Blade C330' ], + 'ZTE Blade C340' => [ 'ZTE', 'Blade C340' ], + 'ZTE Blade C341' => [ 'ZTE', 'Blade C341' ], + 'ZTE Blade C342' => [ 'ZTE', 'Blade C342' ], + 'ZTE Blade C370' => [ 'ZTE', 'Blade C370' ], + 'ZTE Blade D6 Lite 3G' => [ 'ZTE', 'Blade D6 Lite' ], + 'ZTE Blade D6 Lite 4G' => [ 'ZTE', 'Blade D6 Lite' ], + 'ZTE Blade G' => [ 'ZTE', 'Blade G' ], + 'Blade G LTE' => [ 'ZTE', 'Blade G' ], + 'ZTE Blade G LTE' => [ 'ZTE', 'Blade G' ], + 'ZTE Blade G Lux' => [ 'ZTE', 'Blade G Lux' ], + 'Blade G Lux' => [ 'ZTE', 'Blade G Lux' ], + 'ZTE Blade G Plus!' => [ 'ZTE', 'Blade G Plus' ], + 'ZTE Blade G Pro' => [ 'ZTE', 'Blade G Pro' ], + 'ZTE Blade G2' => [ 'ZTE', 'Blade G2' ], + 'Blade G2' => [ 'ZTE', 'Blade G2' ], + 'ZTE Blade HN' => [ 'ZTE', 'Blade HN' ], + 'Blade Super' => [ 'ZTE', 'Blade Super' ], + 'Blade S' => [ 'ZTE', 'Blade S' ], + 'ZTE Blade S6' => [ 'ZTE', 'Blade S6' ], + 'Blade S6' => [ 'ZTE', 'Blade S6' ], + 'Blade S6 Plus' => [ 'ZTE', 'Blade S6 Plus' ], + 'ZTE Blade S6 Plus' => [ 'ZTE', 'Blade S6 Plus' ], + 'ZTE Blade L' => [ 'ZTE', 'Blade L' ], + 'ZTE Blade L2' => [ 'ZTE', 'Blade L2' ], + 'Blade L2' => [ 'ZTE', 'Blade L2' ], + 'Blade L2 Plus' => [ 'ZTE', 'Blade L2 Plus' ], + 'ZTE Blade L2 PLUS' => [ 'ZTE', 'Blade L2 Plus' ], + 'ZTE Blade L3' => [ 'ZTE', 'Blade L3' ], + 'Blade L3' => [ 'ZTE', 'Blade L3' ], + 'ZTE Blade L3 Apex' => [ 'ZTE', 'Blade L3 Apex' ], + 'ZTE Blade L3 Lite' => [ 'ZTE', 'Blade L3 Lite' ], + 'ZTE Blade L3 Plus' => [ 'ZTE', 'Blade L3 Plus' ], + 'ZTE Blade L4 Pro' => [ 'ZTE', 'Blade L4 Pro' ], + 'ZTE Blade L5' => [ 'ZTE', 'Blade L5' ], + 'Blade L5 Plus' => [ 'ZTE', 'Blade L5 Plus' ], + 'ZTE Blade L5 Plus' => [ 'ZTE', 'Blade L5 Plus' ], + 'ZTE BLADE L0510' => [ 'ZTE', 'Blade L5 Plus' ], + 'ZTE Blade L6' => [ 'ZTE', 'Blade L6' ], + 'ZTE BLADE L7' => [ 'ZTE', 'Blade L7' ], + 'ZTE BLADE L110' => [ 'ZTE', 'Blade L110' ], + 'ZTE BLADE L111' => [ 'ZTE', 'Blade L111' ], + 'ZTE Blade L370' => [ 'ZTE', 'Blade L370' ], + 'Blade Q' => [ 'ZTE', 'Blade Q' ], + 'ZTE Blade Q' => [ 'ZTE', 'Blade Q' ], + 'ZTE Blade Q Lux' => [ 'ZTE', 'Blade Q Lux' ], + 'Blade Q Lux' => [ 'ZTE', 'Blade Q Lux' ], + 'ZTE Blade Q Lux 3G' => [ 'ZTE', 'Blade Q Lux' ], + 'ZTE Blade Q Maxi' => [ 'ZTE', 'Blade Q Maxi' ], + 'Blade Q Maxi' => [ 'ZTE', 'Blade Q Maxi' ], + 'ZTE Blade Q Mini' => [ 'ZTE', 'Blade Q Mini' ], + 'ZTE Blade Q pro' => [ 'ZTE', 'Blade Q Pro' ], + 'ZTE Blade Q1' => [ 'ZTE', 'Blade Q1' ], + 'ZTE Blade Q3' => [ 'ZTE', 'Blade Q3' ], + 'Blade S Lite' => [ 'ZTE', 'Blade S Lite' ], + 'ZTE Blade S6 Flex' => [ 'ZTE', 'Blade S6 Flex' ], + 'Blade S6 Lite' => [ 'ZTE', 'Blade S6 Lite' ], + 'ZTE Blade V' => [ 'ZTE', 'Blade V' ], + 'ZTE Blade-V' => [ 'ZTE', 'Blade V' ], + 'ZTE Blade V2' => [ 'ZTE', 'Blade V2' ], + 'ZTE Blade V2 Lite' => [ 'ZTE', 'Blade V2 Lite' ], + 'ZTE Blade V6' => [ 'ZTE', 'Blade V6' ], + 'Blade V6' => [ 'ZTE', 'Blade V6' ], + 'ZTE Blade V6 Plus' => [ 'ZTE', 'Blade V6 Plus' ], + 'Blade V6 Plus' => [ 'ZTE', 'Blade V6 Plus' ], + 'ZTE BLADE V7' => [ 'ZTE', 'Blade V7' ], + 'ZTE BLADE V7 LITE' => [ 'ZTE', 'Blade V7 Lite' ], + 'ZTE BLADE V0720' => [ 'ZTE', 'Blade V7 Lite' ], + 'ZTE BLADE V0710' => [ 'ZTE', 'Blade V7 Max' ], + 'ZTE BLADE V7 PLUS' => [ 'ZTE', 'Blade V7 Plus' ], + 'ZTE BLADE V0800' => [ 'ZTE', 'Blade V8' ], + 'ZTE BLADE V0820' => [ 'ZTE', 'Blade V8 Lite' ], + 'ZTE BLADE V0850' => [ 'ZTE', 'Blade V8 Mini' ], + 'BLADE V8 SE' => [ 'ZTE', 'Blade V8 SE' ], + 'ZTE BLADE V0900' => [ 'ZTE', 'Blade V9' ], + 'ZTE BLADE V9' => [ 'ZTE', 'Blade V9' ], + 'ZTE Blade V220' => [ 'ZTE', 'Blade V220' ], + 'ZTE Blade V580' => [ 'ZTE', 'Blade V580' ], + 'ZTE Blade V770' => [ 'ZTE', 'Blade V770' ], + 'Blade V880' => [ 'ZTE', 'Blade V880' ], + 'ZTE Blade Vec' => [ 'ZTE', 'Blade Vec' ], + 'ZTE Blade Vec 4G' => [ 'ZTE', 'Blade Vec' ], + 'ZTE Blade Vec Pro' => [ 'ZTE', 'Blade Vec Pro' ], + 'ZTE Blade X3' => [ 'ZTE', 'Blade X3' ], + 'ZTE Blade X7' => [ 'ZTE', 'Blade X7' ], + 'ZTE Blade X9' => [ 'ZTE', 'Blade X9' ], + ], + + 'ZTE Geek!!' => [ + 'ZTE Geek' => [ 'ZTE', 'Geek' ], + 'ZTE Geek 2' => [ 'ZTE', 'Geek II' ], + 'ZTE Geek 2 LTE' => [ 'ZTE', 'Geek II' ], + 'ZTE GEEK II 4G' => [ 'ZTE', 'Geek II' ], + 'ZTE Geek 2 pro' => [ 'ZTE', 'Geek II Pro' ], + 'ZTE GEEK II Pro' => [ 'ZTE', 'Geek II Pro' ], + 'ZTE GEEK II Pro 4G' => [ 'ZTE', 'Geek II Pro' ], + ], + + '(ZTE )?(Grand|Mimosa)!!' => [ + 'ZTE Grand Era' => [ 'ZTE', 'Grand Era' ], + 'ZTE Grand Memo' => [ 'ZTE', 'Grand Memo' ], + 'ZTE Grand Memo lite' => [ 'ZTE', 'Grand Memo Lite' ], + 'Grand Memo lite' => [ 'ZTE', 'Grand Memo Lite' ], + 'ZTE Grand S' => [ 'ZTE', 'Grand S' ], + 'ZTE Grand S lite' => [ 'ZTE', 'Grand S Lite' ], + 'ZTE Grand S Flex' => [ 'ZTE', 'Grand S Flex' ], + 'Grand S Flex' => [ 'ZTE', 'Grand S Flex' ], + 'ZTE Grand S2' => [ 'ZTE', 'Grand S II' ], + 'ZTE Grand S II' => [ 'ZTE', 'Grand S II' ], + 'ZTE Grand S II LTE' => [ 'ZTE', 'Grand S II' ], + 'ZTE Grand X' => [ 'ZTE', 'Grand X' ], + 'Grand X' => [ 'ZTE', 'Grand X' ], + 'ZTE Mimosa X' => [ 'ZTE', 'Grand X' ], + 'ZTE Grand X Classic' => [ 'ZTE', 'Grand X Classic' ], + 'Grand X In' => [ 'ZTE', 'Grand X IN' ], + 'Grand X Intel' => [ 'ZTE', 'Grand X IN' ], + 'Grand X Pro' => [ 'ZTE', 'Grand X Pro' ], + 'ZTE Grand X Quad' => [ 'ZTE', 'Grand X Quad' ], + 'Grand X Quad Lite' => [ 'ZTE', 'Grand X Quad Lite' ], + 'ZTE Grand X Quad Lite' => [ 'ZTE', 'Grand X Quad Lite' ], + 'Grand X2' => [ 'ZTE', 'Grand X2' ], + 'ZTE Grand X2' => [ 'ZTE', 'Grand X2' ], + 'ZTE Grand X 2' => [ 'ZTE', 'Grand X2' ], + 'ZTE Grand X2 In' => [ 'ZTE', 'Grand X2' ], + ], + + '(ZTE )?Kis!!' => [ + 'KIS' => [ 'ZTE', 'Kis' ], + 'KIS PLUS' => [ 'ZTE', 'Kis Plus' ], + 'ZTE Kis Pro' => [ 'ZTE', 'Kis Pro' ], + 'ZTE Kis Q' => [ 'ZTE', 'Kis Q' ], + 'ZTE KIS Flex' => [ 'ZTE', 'Kis Flex' ], + 'ZTE Kis Lite' => [ 'ZTE', 'Kis Lite' ], + 'ZTE KIS II' => [ 'ZTE', 'Kis 2' ], + 'KIS II' => [ 'ZTE', 'Kis 2' ], + 'KIS II Max' => [ 'ZTE', 'Kis 2 Max' ], + 'ZTE KIS II Max' => [ 'ZTE', 'Kis 2 Max' ], + 'ZTE Kis II Max plus' => [ 'ZTE', 'Kis 2 Max Plus' ], + 'ZTE KIS II PRO' => [ 'ZTE', 'Kis 2 Pro' ], + 'ZTE Kis 3' => [ 'ZTE', 'Kis 3' ], + 'ZTE Kis3 max' => [ 'ZTE', 'Kis 3 Max' ], + 'KIS C341' => [ 'ZTE', 'Kis C341' ], + 'Kis T3' => [ 'ZTE', 'Kis T3' ], + ], + + '(ZTE )?Racer!!' => [ + 'ZTE Racer' => [ 'ZTE', 'Racer' ], + 'Racer' => [ 'ZTE', 'Racer' ], + 'RacerII' => [ 'ZTE', 'Racer II' ], + ], + + '(ZTE )?Skate!!' => [ + 'Skate' => [ 'ZTE', 'Skate' ], + 'ZTE Skate' => [ 'ZTE', 'Skate' ], + 'Skate Pro' => [ 'ZTE', 'Skate Pro' ], + 'ZTE Skate 2' => [ 'ZTE', 'Skate 2' ], + ], + + 'ZTE Libra' => [ 'ZTE', 'Libra' ], + 'ZTE LINK' => [ 'ZTE', 'Link' ], + 'ZTE T T9' => [ 'ZTE', 'Light Tab T9', DeviceType::TABLET ], + 'Light Tab' => [ 'ZTE', 'Light Tab V9', DeviceType::TABLET ], + 'ZTE V7073' => [ 'ZTE', 'Light Tab V9', DeviceType::TABLET ], + 'V9' => [ 'ZTE', 'Light Tab V9', DeviceType::TABLET ], + 'ZTE V9' => [ 'ZTE', 'Light Tab V9', DeviceType::TABLET ], + 'V9S' => [ 'ZTE', 'Light Tab V9S', DeviceType::TABLET ], + 'ZTE V9A' => [ 'ZTE', 'Light Tab 2', DeviceType::TABLET ], + 'ZTE C V9E' => [ 'ZTE', 'Light Tab 2', DeviceType::TABLET ], + 'V9e' => [ 'ZTE', 'Light Tab 2', DeviceType::TABLET ], + 'V9e+' => [ 'ZTE', 'Light Tab 2', DeviceType::TABLET ], + 'V9A' => [ 'ZTE', 'Light Tab 2', DeviceType::TABLET ], + 'Light Tab 2' => [ 'ZTE', 'Light Tab 2', DeviceType::TABLET ], + 'Light Tab 2W' => [ 'ZTE', 'Light Tab 2W', DeviceType::TABLET ], + 'ZTE V7273' => [ 'ZTE', 'Light Tab 2W', DeviceType::TABLET ], + 'V9C' => [ 'ZTE', 'Light Tab 3', DeviceType::TABLET ], + 'ZTE e-Learning PAD E8Q' => [ 'ZTE', 'e-Learning PAD E8Q', DeviceType::TABLET ], + 'ZTE E10T' => [ 'ZTE', 'e-Learning PAD E10T', DeviceType::TABLET ], + 'ZTE E10Q' => [ 'ZTE', 'e-Learning PAD E10Q', DeviceType::TABLET ], + 'A3' => [ 'ZTE', 'A3' ], + 'A4' => [ 'ZTE', 'A4' ], + 'ZTE R22' => [ 'ZTE', 'R22' ], + 'ZTE R83' => [ 'ZTE', 'R83' ], + 'ZTE R84' => [ 'ZTE', 'R84' ], + 'ZTE V10' => [ 'ZTE', 'V10', DeviceType::TABLET ], + 'ZTE V70' => [ 'ZTE', 'V70', DeviceType::TABLET ], + 'ZTE V72' => [ 'ZTE', 'V72', DeviceType::TABLET ], + 'ZTE V72A' => [ 'ZTE', 'V72A', DeviceType::TABLET ], + 'ZTE K88' => [ 'ZTE', 'K88', DeviceType::TABLET ], + 'ZTE K97' => [ 'ZTE', 'K97', DeviceType::TABLET ], + 'ZTE T T98' => [ 'ZTE', 'T98', DeviceType::TABLET ], + 'ZTE TT98' => [ 'ZTE', 'T98', DeviceType::TABLET ], + 'V55' => [ 'ZTE', 'Optik', DeviceType::TABLET ], + 'Acqua' => [ 'ZTE', 'Acqua' ], + 'a5' => [ 'ZTE', 'Blade' ], + 'Crescent' => [ 'ZTE', 'Blade S' ], + 'ZTE Crescent' => [ 'ZTE', 'Blade S' ], + 'ZTE JOE' => [ 'ZTE', 'U N700' ], + 'ZTE 975' => [ 'ZTE', 'Geek' ], + 'ZTE Tureis' => [ 'ZTE', 'Tureis' ], + 'ZTE CLARO Q1' => [ 'ZTE', 'CLARO Q1' ], + 'ZTE LEO M1' => [ 'ZTE', 'LEO M1' ], + 'ZTE LeoM1' => [ 'ZTE', 'LEO M1' ], + 'ZTE LEO S1' => [ 'ZTE', 'LEO S1' ], + 'ZTE LEO S2' => [ 'ZTE', 'LEO S2' ], + 'ZTE LEO Q1' => [ 'ZTE', 'LEO Q1' ], + 'ZTE LEO Q2' => [ 'ZTE', 'LEO Q2' ], + 'E810' => [ 'ZTE', 'E810' ], + 'ZTE GV821' => [ 'ZTE', 'V821' ], + 'ZTE-860U' => [ 'ZTE', 'Warp' ], + 'N861' => [ 'ZTE', 'Warp II' ], + 'MEM02' => [ 'ZTE', 'Grand Memo 2' ], + 'ZXY-ZTE-C X920' => [ 'ZTE', 'C X920' ], + 'ZTE Roamer' => [ 'ZTE', 'Roamer' ], + 'V8000 USA Cricket' => [ 'ZTE', 'Engage' ], + 'V8110' => [ 'ZTE', 'V8110' ], + 'ZXY-ZTE V6700' => [ 'ZTE', 'V6700' ], + 'X9180' => [ 'ZTE', 'X9180' ], + 'ZTE V9800' => [ 'ZTE', 'Grand Era LTE' ], + 'ZTE U9810' => [ 'ZTE', 'U9810' ], + 'ZTE U9815' => [ 'ZTE', 'Grand Memo' ], + 'ZTE V9815' => [ 'ZTE', 'Grand Memo' ], + 'ZTE Grand Memo LTE' => [ 'ZTE', 'Grand Memo' ], + 'ZTE V9820' => [ 'ZTE', 'Bold Powerphone' ], + 'nubia Z5' => [ 'ZTE', 'Nubia Z5' ], + 'ZTE Nubia Z7' => [ 'ZTE', 'Nubia Z7' ], + 'Nubia Z9 Max' => [ 'ZTE', 'Nubia Z9 Max' ], + 'ZTE Nubia X6' => [ 'ZTE', 'Nubia X6' ], + 'ZTE Switch X1' => [ 'ZTE', 'Switch X1' ], + 'ZTE Switch X2' => [ 'ZTE', 'Switch X2' ], + 'ZTE Maxx' => [ 'ZTE', 'Maxx' ], + 'ZTE Fit 4G Smart' => [ 'ZTE', 'Fit 4G Smart' ], + 'ATLAS W' => [ 'ZTE', 'Atlas W' ], + 'ZTE N5' => [ 'ZTE', 'Grand Memo' ], + 'ZTE N5L' => [ 'ZTE', 'Grand Memo' ], + 'ZTE N5S' => [ 'ZTE', 'Grand Memo' ], + 'ZTE U5' => [ 'ZTE', 'Grand Memo' ], + 'ZTE U5S' => [ 'ZTE', 'Grand Memo' ], + 'ZTEU5S' => [ 'ZTE', 'Grand Memo' ], + 'ZTE V5S' => [ 'ZTE', 'Grand Memo' ], + 'ZTEV5S' => [ 'ZTE', 'Grand Memo' ], + 'N918St' => [ 'ZTE', 'Grand Memo' ], + 'ZTE A2015' => [ 'ZTE', 'Axon Pro' ], + 'ZTE A2016' => [ 'ZTE', 'Axon Pro' ], + 'ZTE Axon 7' => [ 'ZTE', 'Axon 7' ], + 'ZTE A2017' => [ 'ZTE', 'Axon 7' ], + 'ZTE A2017G' => [ 'ZTE', 'Axon 7' ], + 'ZTE A2017U' => [ 'ZTE', 'Axon 7' ], + 'ZTE B2015' => [ 'ZTE', 'Axon Mini' ], + 'ZTE B2016' => [ 'ZTE', 'Axon Mini' ], + 'ZTE B2017' => [ 'ZTE', 'Axon Mini' ], + 'ZTE B2017G' => [ 'ZTE', 'Axon Mini' ], + 'ZTE B2019G' => [ 'ZTE', 'Axon 7' ], + 'ZTE C2016' => [ 'ZTE', 'Axon Max' ], + 'ZTE C2017' => [ 'ZTE', 'Axon Max' ], + 'ZTE STAR' => [ 'ZTE', 'Star 1' ], + 'ZTE Star 1' => [ 'ZTE', 'Star 1' ], + 'ZTE S2004' => [ 'ZTE', 'Tianji 3' ], + 'ZTE S2005' => [ 'ZTE', 'Star 2' ], + 'ZTE S2007' => [ 'ZTE', 'Star 2' ], + 'ZTE S2010' => [ 'ZTE', 'Star S2010' ], + 'ZTE S2014' => [ 'ZTE', 'Voyage Plus 4' ], + 'ZTE U9180' => [ 'ZTE', 'Red Bull V5' ], + 'ZTE U9370' => [ 'ZTE', 'U9370' ], + 'ZTE V6500' => [ 'ZTE', 'Nova' ], + 'ZTE V8110' => [ 'ZTE', 'V8110' ], + + 'MF97B' => [ 'ZTE', 'Spro 2', DeviceType::PROJECTOR ], + 'Spro2' => [ 'ZTE', 'Spro 2', DeviceType::PROJECTOR ], + + 'ZTE B860A' => [ 'ZTE', 'B860A', DeviceType::TELEVISION ], + 'ZTE B860AV1' => [ 'ZTE', 'B860A', DeviceType::TELEVISION ], + + 'ZTE W1010' => [ 'ZTE', 'Axon Watch', DeviceType::WATCH ], + + '003Z' => [ 'ZTE', 'Libero 003Z', 'carrier' => 'Softbank' ], + '008Z' => [ 'ZTE', 'シンプルスマートフォン 008Z', 'carrier' => 'Softbank' ], + '009Z' => [ 'ZTE', 'STAR7 009Z', 'carrier' => 'Softbank' ], + '402ZT' => [ 'ZTE', 'Blade Q+ 402ZT', 'carrier' => 'Softbank' ], + '502ZT' => [ 'ZTE', 'Spro 2 502ZT', DeviceType::PROJECTOR, 'carrier' => 'Softbank' ], + '602ZT' => [ 'ZTE', 'Libero 2 602ZT', 'carrier' => 'Softbank' ], + 'MO-01J' => [ 'ZTE', 'MONO MO-01J', 'carrier' => 'DoCoMo' ], + 'MO-01K' => [ 'ZTE', 'MONO MO-01K', 'carrier' => 'DoCoMo' ], + + 'ZA400' => [ 'Zonda', 'Mini Colors ZA400' ], + 'ZA402' => [ 'Zonda', 'Scratch ZA402' ], + 'ZA450' => [ 'Zonda', 'Mini Selfie ZA450' ], + 'ZA451' => [ 'Zonda', 'Speed ZA451' ], + 'ZA459' => [ 'Zonda', 'Dezign ZA459' ], + 'ZA500' => [ 'Zonda', 'Metallic ZA500' ], + 'ZA501' => [ 'Zonda', 'Colors ZA501' ], + 'ZA509' => [ 'Zonda', 'Platinum ZA509' ], + 'ZA705' => [ 'Zonda', 'ZA905' ], + 'ZA935' => [ 'Zonda', 'Runner ZA935' ], + 'ZA940' => [ 'Zonda', 'Joy ZA940' ], + 'ZA945' => [ 'Zonda', 'Fit ZA945' ], + 'ZA950' => [ 'Zonda', 'Mega 5.0 ZA950' ], + 'ZA955' => [ 'Zonda', 'ZA955' ], + 'ZA990' => [ 'Zonda', 'Life ZA990' ], + + '(Zopo )?ZP ?[0-9]{3,3}!!' => [ + '(Zopo )?ZP100!' => [ 'Zopo', 'ZP100 Pilot' ], + 'ZP200' => [ 'Zopo', 'ZP200 Shining' ], + 'ZP200+' => [ 'Zopo', 'ZP200+ Shining' ], + 'ZP300' => [ 'Zopo', 'ZP300 Field' ], + 'ZP300S' => [ 'Zopo', 'ZP300 Field' ], + 'Zopo zp300' => [ 'Zopo', 'ZP300 Field' ], + 'Zopo ZP300+' => [ 'Zopo', 'ZP300 Field Plus' ], + 'ZP300+' => [ 'Zopo', 'ZP300 Field Plus' ], + 'ZP320' => [ 'Zopo', 'ZP320' ], + 'ZP330' => [ 'Zopo', 'ZP330 Color C' ], + 'ZP331' => [ 'Zopo', 'ZP331 Color C1' ], + 'ZP350' => [ 'Zopo', 'ZP350 Color E' ], + 'ZP353' => [ 'Zopo', 'ZP353 Color E1' ], + 'ZP370' => [ 'Zopo', 'ZP370 Color S5.5' ], + 'ZP500' => [ 'Zopo', 'ZP500 Libero' ], + 'ZP500S' => [ 'Zopo', 'ZP500 Libero' ], + 'ZP500+' => [ 'Zopo', 'ZP500 Libero Plus' ], + 'ZP520' => [ 'Zopo', 'ZP520' ], + 'ZP530' => [ 'Zopo', 'ZP530 Touch' ], + 'ZP550' => [ 'Zopo', 'ZP550 Speed 7C' ], + 'ZP580' => [ 'Zopo', 'ZP580' ], + 'ZP590' => [ 'Zopo', 'ZP590' ], + 'ZP600 EX' => [ 'Zopo', 'ZP600 Libero EX' ], + 'ZP600+' => [ 'Zopo', 'ZP600 Libero Plus' ], + 'ZP700' => [ 'Zopo', 'ZP700 Cuppy' ], + 'ZP720' => [ 'Zopo', 'ZP720 Focus' ], + 'ZP780' => [ 'Zopo', 'ZP780' ], + 'ZP800' => [ 'Zopo', 'ZP800 Libero HD' ], + 'ZP800H' => [ 'Zopo', 'ZP800 Libero HD' ], + 'ZP810' => [ 'Zopo', 'ZP810' ], + 'ZP810H DUAL SIM' => [ 'Zopo', 'ZP810' ], + 'ZP820' => [ 'Zopo', 'ZP820 Raiden' ], + '(Zopo )?ZP900!' => [ 'Zopo', 'ZP900 Leader' ], + 'ZP 900H' => [ 'Zopo', 'ZP900 Leader' ], + 'ZOPO 900H' => [ 'Zopo', 'ZP900 Leader' ], + 'ZP908' => [ 'Zopo', 'ZP908 Leader' ], + 'ZP910' => [ 'Zopo', 'ZP910 Leader' ], + 'ZP920' => [ 'Zopo', 'ZP920 Magic' ], + 'ZP920+' => [ 'Zopo', 'ZP920+ Magic' ], + 'ZP950' => [ 'Zopo', 'ZP950 Leader Max' ], + 'ZP950H' => [ 'Zopo', 'ZP950 Leader Max' ], + 'ZP950H DUAL SIM' => [ 'Zopo', 'ZP950 Leader Max' ], + 'ZP950+' => [ 'Zopo', 'ZP950+ Leader Max' ], + 'ZP951' => [ 'Zopo', 'ZP951 Speed 7' ], + 'ZP951 HERO1' => [ 'Zopo', 'ZP951 Speed 7' ], + 'ZP952' => [ 'Zopo', 'ZP952 Speed 7 Plus' ], + 'ZP955' => [ 'Zopo', 'ZP955 Speed 8' ], + 'ZP958' => [ 'Zopo', 'ZP958 Leader Max' ], + 'ZOPO C2' => [ 'Zopo', 'ZP960 C2' ], + 'ZP980' => [ 'Zopo', 'ZP980' ], + 'Zopo 980' => [ 'Zopo', 'ZP980' ], + 'Zopo ZP980' => [ 'Zopo', 'ZP980' ], + 'ZP980+' => [ 'Zopo', 'ZP980+' ], + 'ZP980 PLUS' => [ 'Zopo', 'ZP980+' ], + 'ZOPO ZP980+' => [ 'Zopo', 'ZP980+' ], + 'ZP990' => [ 'Zopo', 'ZP990 Captain S' ], + 'ZP990+' => [ 'Zopo', 'ZP990+' ], + 'ZP998' => [ 'Zopo', 'ZP998 C2 II' ], + 'ZOPO ZP998' => [ 'Zopo', 'ZP998 C2 II' ], + 'ZP999' => [ 'Zopo', 'ZP999 Lion Heart' ], + ], + + 'C2' => [ 'Zopo', 'ZP960 C2' ], + 'ZA966' => [ 'Zyrex', 'OneScribe ZA966' ], + 'ZA977' => [ 'Zyrex', 'OneScribe ZA977' ], + 'ZA985' => [ 'Zyrex', 'OneScribe ZA985' ], + 'ZA987' => [ 'Zyrex', 'OneScribe ZA987' ], + 'ZA990' => [ 'Zyrex', 'OneScribe ZA990' ], + + /* Telecom provider branded devices */ + '9020[A]!' => [ 'AT&T', 'Trek HD', DeviceType::TABLET ], + + 'BASE!!' => [ + 'BASE lutea' => [ 'BASE', 'Lutea' ], + 'BASE Lutea 2' => [ 'BASE', 'Lutea 2' ], + 'BASE Lutea 3' => [ 'BASE', 'Lutea 3' ], + 'BASE Varia' => [ 'BASE', 'Varia' ], + 'BASE Tab' => [ 'BASE', 'TAB', DeviceType::TABLET ], + 'BASE Tab 7.1' => [ 'BASE', 'TAB 7-1', DeviceType::TABLET ], + ], + + 'Beeline!!' => [ + 'Beeline Fast' => [ 'Beeline', 'Fast' ], + 'Beeline Pro' => [ 'Beeline', 'Pro' ], + 'Beeline Pro 2' => [ 'Beeline', 'Pro 2' ], + 'Beeline Pro 3' => [ 'Beeline', 'Pro 3' ], + 'Beeline Pro 4' => [ 'Beeline', 'Pro 4' ], + 'Beeline Smart' => [ 'Beeline', 'Smart' ], + 'Beeline Smart2' => [ 'Beeline', 'Smart2' ], + 'Beeline Smart 2' => [ 'Beeline', 'Smart2' ], + 'Beeline Smart 3' => [ 'Beeline', 'Smart3' ], + 'Beeline Smart 4' => [ 'Beeline', 'Smart4' ], + 'Beeline Smart 5' => [ 'Beeline', 'Smart5' ], + 'Beeline Smart 6' => [ 'Beeline', 'Smart6' ], + 'Beeline Smart Dual' => [ 'Beeline', 'Smart Dual' ], + 'Beeline E300' => [ 'Beeline', 'E300' ], + 'Beeline E400' => [ 'Beeline', 'E400' ], + 'Beeline E600' => [ 'Beeline', 'E600' ], + 'Beeline M2' => [ 'Beeline', 'M2', DeviceType::TABLET ], + 'Beeline Tab' => [ 'Beeline', 'Tab', DeviceType::TABLET ], + 'Beeline Tab 2' => [ 'Beeline', 'Tab 2', DeviceType::TABLET ], + 'Beeline Tab IS' => [ 'Beeline', 'Tab IS', DeviceType::TABLET ], + 'Beeline Tab Fast' => [ 'Beeline', 'Tab Fast', DeviceType::TABLET ], + 'Beeline Tab Fast 2' => [ 'Beeline', 'Tab Fast 2', DeviceType::TABLET ], + 'Beeline Tab Pro' => [ 'Beeline', 'Tab Pro', DeviceType::TABLET ], + ], + + 'Bouygues Telecom Bs 351' => [ 'Bouygues', 'Bs 351' ], + 'Bouygues Telecom Bs 402' => [ 'Bouygues', 'Bs 402' ], + 'Bouygues Telecom Bs 403' => [ 'Bouygues', 'Bs 403' ], + 'Bouygues Telecom Bs 451' => [ 'Bouygues', 'Bs 451' ], + 'Bs 451' => [ 'Bouygues', 'Bs 451' ], + 'Bs 501' => [ 'Bouygues', 'Bs 501' ], + 'Bs541' => [ 'Bouygues', 'Bs 541' ], + 'Ultym 5' => [ 'Bouygues', 'Ultym 5' ], + 'Ultym 5L' => [ 'Bouygues', 'Ultym 5L' ], + 'Ultym 5.2' => [ 'Bouygues', 'Ultym 5.2' ], + 'Bbox Miami' => [ 'Bouygues', 'Bbox Miami', DeviceType::TELEVISION ], + + 'BQS-3510' => [ 'BQ Mobile', 'Aspen Mini' ], + 'BQS-3552' => [ 'BQ Mobile', 'Berkeley' ], + 'BQS-4001' => [ 'BQ Mobile', 'Oxford' ], + 'BQS-4004' => [ 'BQ Mobile', 'Dusseldorf' ], + 'BQS-4005' => [ 'BQ Mobile', 'Seoul' ], + 'BQS-4007' => [ 'BQ Mobile', 'Valencia' ], + 'BQS-4008' => [ 'BQ Mobile', 'Shanghai' ], + 'BQS-4009' => [ 'BQ Mobile', 'Orleans' ], + 'BQS-4010' => [ 'BQ Mobile', 'Aspen' ], + 'BQS-4501 Bristol' => [ 'BQ Mobile', 'Bristol' ], + 'BQS-4502' => [ 'BQ Mobile', 'Kingston' ], + 'BQS-4503' => [ 'BQ Mobile', 'Dubai' ], + 'BQS-4510' => [ 'BQ Mobile', 'Florence' ], + 'BQS-4515' => [ 'BQ Mobile', 'Moscow' ], + 'BQS-4516' => [ 'BQ Mobile', 'Singapore' ], + 'BQS-4525' => [ 'BQ Mobile', 'Vienna' ], + 'BQS-4552' => [ 'BQ Mobile', 'Melbourne' ], + 'BQS-4555' => [ 'BQ Mobile', 'Turbo' ], + 'BQS-4560' => [ 'BQ Mobile', 'Golf' ], + 'BQS-4700' => [ 'BQ Mobile', 'Harvard' ], + 'BQS-4701' => [ 'BQ Mobile', 'Venice' ], + 'BQS-4702' => [ 'BQ Mobile', 'Osaka' ], + 'BQS-4707' => [ 'BQ Mobile', 'Montreal' ], + 'BQS-4800' => [ 'BQ Mobile', 'Blade' ], + 'BQS-5000 Tokyo' => [ 'BQ Mobile', 'Tokyo' ], + 'BQS-5003' => [ 'BQ Mobile', 'Colombo' ], + 'BQS-5004' => [ 'BQ Mobile', 'Paris' ], + 'BQS-5005' => [ 'BQ Mobile', 'Sydney' ], + 'BQS-5009' => [ 'BQ Mobile', 'Sydney' ], + 'BQS-5001' => [ 'BQ Mobile', 'Milan' ], + 'BQS 5007' => [ 'BQ Mobile', 'Rimini' ], + 'BQS-5010' => [ 'BQ Mobile', 'Praque' ], + 'BQS-5011' => [ 'BQ Mobile', 'Monte Carlo' ], + 'BQS-5020' => [ 'BQ Mobile', 'Strike' ], + 'BQS-5025' => [ 'BQ Mobile', 'HighWay' ], + 'BQS-5040' => [ 'BQ Mobile', 'Force' ], + 'BQS-5045' => [ 'BQ Mobile', 'Fast' ], + 'BQS-5050' => [ 'BQ Mobile', 'Strike Selfie' ], + 'BQS-5065' => [ 'BQ Mobile', 'Choice' ], + 'BQS-5070' => [ 'BQ Mobile', 'Magic' ], + 'BQS-5200' => [ 'BQ Mobile', 'San Marino' ], + 'BQS-5500' => [ 'BQ Mobile', 'Vancouver' ], + 'BQS-5502' => [ 'BQ Mobile', 'Hammer' ], + 'BQS-5505' => [ 'BQ Mobile', 'Amsterdam' ], + 'BQS 5505' => [ 'BQ Mobile', 'Amsterdam' ], + + 'dtab01' => [ 'DoCoMo', 'dtab', DeviceType::TABLET ], + 'd-01G' => [ 'DoCoMo', 'dtab d-01G', DeviceType::TABLET ], + 'd-01H' => [ 'DoCoMo', 'dtab d-01H', DeviceType::TABLET ], + 'd-01J' => [ 'DoCoMo', 'dtab Compact d-01J', DeviceType::TABLET ], + 'd-02H' => [ 'DoCoMo', 'dtab Compact d-02H', DeviceType::TABLET ], + + 'Etisalat Smartphone' => [ 'Etisalat', 'Smartphone' ], + + 'General Mobile 4G' => [ 'General Mobile', '4G' ], + 'General Mobile 4G Dual' => [ 'General Mobile', '4G' ], + 'Gm Discovery' => [ 'General Mobile', 'Discovery' ], + 'Discovery' => [ 'General Mobile', 'Discovery' ], + 'Discovery Elite' => [ 'General Mobile', 'Discovery Elite' ], + 'GM Discovery II' => [ 'General Mobile', 'Discovery II' ], + 'GM Discovery II+' => [ 'General Mobile', 'Discovery II+' ], + 'Discovery II Mini' => [ 'General Mobile', 'Discovery II Mini' ], + 'GM FOX' => [ 'General Mobile', 'Fox' ], + 'GM Ultimate Slim' => [ 'General Mobile', 'Ultimate Slim' ], + 'GM 5' => [ 'General Mobile', 'GM5' ], + 'GM 5 d' => [ 'General Mobile', 'GM5' ], + 'GM 5 Plus' => [ 'General Mobile', 'GM5 Plus' ], + 'GM 5 Plus d' => [ 'General Mobile', 'GM5 Plus' ], + 'GM 6' => [ 'General Mobile', 'GM6' ], + 'GM 6 d' => [ 'General Mobile', 'GM6' ], + 'GM Discovery tab 8' => [ 'General Mobile', 'tab 8', DeviceType::TABLET ], + 'etab5' => [ 'General Mobile', 'Etab 5', DeviceType::TABLET ], + + '(i-mobile|i-style|IQ)!!' => [ + 'i-mobile i651' => [ 'i-Mobile', 'i651' ], + 'i-mobile 697' => [ 'i-Mobile', 'i679' ], + 'i-mobile i691' => [ 'i-Mobile', 'i691' ], + 'i-mobile i692' => [ 'i-Mobile', 'i692' ], + 'i-mobile i693' => [ 'i-Mobile', 'i693' ], + 'i-mobile i695' => [ 'i-Mobile', 'i695' ], + 'i-mobile i698' => [ 'i-Mobile', 'i698' ], + 'i-mobile i810' => [ 'i-Mobile', 'i810' ], + 'i-mobile i858' => [ 'i-Mobile', 'i858' ], + 'i-mobile i858 Plus' => [ 'i-Mobile', 'i858 Plus' ], + 'i-mobile 3G 8500' => [ 'i-Mobile', '3G 8500' ], + 'i-mobile IQ 1' => [ 'i-Mobile', 'iQ 1' ], + 'i-mobile IQ1-1' => [ 'i-Mobile', 'iQ 1.1' ], + 'I-mobile IQ1-1A' => [ 'i-Mobile', 'iQ 1.1A' ], + 'i-mobile IQ1.2' => [ 'i-Mobile', 'iQ 1.2' ], + 'i-mobile IQ 2' => [ 'i-Mobile', 'iQ 2' ], + 'i-mobile IQ II' => [ 'i-Mobile', 'iQ 2' ], + 'i-mobile IQ 2A' => [ 'i-Mobile', 'iQ 2A' ], + 'i-mobile IQ 3' => [ 'i-Mobile', 'iQ 3' ], + 'I-mobile IQ 4' => [ 'i-Mobile', 'iQ 4' ], + 'i-mobile IQ 5' => [ 'i-Mobile', 'iQ 5' ], + 'i-mobile IQ 5A' => [ 'i-Mobile', 'iQ 5A' ], + 'i-mobile IQ 5.1' => [ 'i-Mobile', 'iQ 5.1' ], + 'i-mobile IQ 5.1A' => [ 'i-Mobile', 'iQ 5.1A' ], + 'i-mobile IQ5.1 Pro' => [ 'i-Mobile', 'iQ 5.1 Pro' ], + 'i-mobile IQ5.1A Pro' => [ 'i-Mobile', 'iQ 5.1A Pro' ], + 'i-mobile IQ 5.3' => [ 'i-Mobile', 'iQ 5.3' ], + 'i-mobile IQ 5.5' => [ 'i-Mobile', 'iQ 5.5' ], + 'IQ 5.5' => [ 'i-Mobile', 'iQ 5.5' ], + 'IQ 5.6' => [ 'i-Mobile', 'iQ 5.6' ], + 'IQ 5.6A' => [ 'i-Mobile', 'iQ 5.6A' ], + 'i-mobile IQ 5.7' => [ 'i-Mobile', 'iQ 5.7' ], + 'i-mobile IQ 5.8 DTV' => [ 'i-Mobile', 'iQ 5.8 DTV' ], + 'i-mobile IQ 6' => [ 'i-Mobile', 'iQ 6' ], + 'i-mobile IQ 6A' => [ 'i-Mobile', 'iQ 6A' ], + 'i-mobile IQ 6.1' => [ 'i-Mobile', 'iQ 6.1' ], + 'i-mobile IQ 6.2' => [ 'i-Mobile', 'iQ 6.2' ], + 'i-mobile IQ6.3' => [ 'i-Mobile', 'iQ 6.3' ], + 'i-mobile IQ6.6' => [ 'i-Mobile', 'iQ 6.6' ], + 'i-mobile IQ 6.9 DTV' => [ 'i-Mobile', 'iQ 6.9 DTV' ], + 'i-mobile IQ 9' => [ 'i-Mobile', 'iQ 9' ], + 'i-mobile IQ 9A' => [ 'i-Mobile', 'iQ 9A' ], + 'IQ9.1' => [ 'i-Mobile', 'iQ 9.1' ], + 'i-mobile IQ 9.2' => [ 'i-Mobile', 'iQ 9.2' ], + 'i-mobile IQ 9.2A' => [ 'i-Mobile', 'iQ 9.2A' ], + 'i-mobile IQ X' => [ 'i-Mobile', 'iQ X' ], + 'i-mobile IQ X zeen' => [ 'i-Mobile', 'iQ X Zeen' ], + 'i-mobile IQ XA' => [ 'i-Mobile', 'iQ XA' ], + 'i-mobile IQ X2' => [ 'i-Mobile', 'iQ X2' ], + 'i-mobile IQ X2A' => [ 'i-Mobile', 'iQ X2A' ], + 'i-mobile IQ X3' => [ 'i-Mobile', 'iQ X3' ], + 'i-mobile IQ X3A' => [ 'i-Mobile', 'iQ X3A' ], + 'i-mobile IQ BIG' => [ 'i-Mobile', 'iQ Big' ], + 'i-mobile IQX BLIZ!' => [ 'i-Mobile', 'iQ X Bliz' ], + 'i-mobile IQX OKU!' => [ 'i-Mobile', 'iQ X Oku' ], + 'i-mobile IQ Z PRO' => [ 'i-Mobile', 'iQ Z Pro' ], + 'i-mobile IQ 1068' => [ 'i-Mobile', 'iQ 1068' ], + 'i-STYLE 1' => [ 'i-Mobile', 'i-Style 1' ], + 'i-mobile i-STYLE 1' => [ 'i-Mobile', 'i-Style 1' ], + 'I-STYLE 1 I' => [ 'i-Mobile', 'i-Style 1i' ], + 'i-mobile i-STYLE 1 i' => [ 'i-Mobile', 'i-Style 1i' ], + 'i-mobile i-STYLE 2' => [ 'i-Mobile', 'i-Style 2' ], + 'i-mobile i-STYLE 2i' => [ 'i-Mobile', 'i-Style 2i' ], + 'i-STYLE2.1' => [ 'i-Mobile', 'i-Style 2.1' ], + 'i-STYLE2.1A' => [ 'i-Mobile', 'i-Style 2.1A' ], + 'i-mobile i-STYLE 2.2' => [ 'i-Mobile', 'i-Style 2.2' ], + 'i-mobile i-style 2.3' => [ 'i-Mobile', 'i-Style 2.3' ], + 'i-mobile i-style 2.3A' => [ 'i-Mobile', 'i-Style 2.3A' ], + 'i-mobile i-STYLE 2.4' => [ 'i-Mobile', 'i-Style 2.4' ], + 'i-mobile i-STYLE 2.5' => [ 'i-Mobile', 'i-Style 2.5' ], + 'i-mobile i-style 2.6' => [ 'i-Mobile', 'i-Style 2.6' ], + 'i-mobile i-style 2.6A' => [ 'i-Mobile', 'i-Style 2.6A' ], + 'i-mobile i-style 2.8' => [ 'i-Mobile', 'i-Style 2.8' ], + 'i-mobile i-STYLE 2.9' => [ 'i-Mobile', 'i-Style 2.9' ], + 'i-mobile i-style 3' => [ 'i-Mobile', 'i-Style 3' ], + 'i-mobile i-style 3i' => [ 'i-Mobile', 'i-Style 3i' ], + 'i-mobile i-STYLE 4' => [ 'i-Mobile', 'i-Style 4' ], + 'i-style 4' => [ 'i-Mobile', 'i-Style 4' ], + 'i-mobile i-STYLE 4i' => [ 'i-Mobile', 'i-Style 4i' ], + 'i-MOBILE i-STYLE 5' => [ 'i-Mobile', 'i-Style 5' ], + 'i-MOBILE i-STYLE 5i' => [ 'i-Mobile', 'i-Style 5i' ], + 'i-mobile i-STYLE 6' => [ 'i-Mobile', 'i-Style 6' ], + 'i-mobile i-STYLE 6A' => [ 'i-Mobile', 'i-Style 6A' ], + 'i-mobile i-STYLE 7' => [ 'i-Mobile', 'i-Style 7' ], + 'i-mobile i-STYLE 7A' => [ 'i-Mobile', 'i-Style 7A' ], + 'i-mobile i-style 7.1' => [ 'i-Mobile', 'i-Style 7.1' ], + 'i-mobile i-STYLE 7.2' => [ 'i-Mobile', 'i-Style 7.2' ], + 'i-mobile i-STYLE 7.3' => [ 'i-Mobile', 'i-Style 7.3' ], + 'i-mobile i-STYLE 7.3A' => [ 'i-Mobile', 'i-Style 7.3A' ], + 'i-mobile i-STYLE 7.5' => [ 'i-Mobile', 'i-Style 7.5' ], + 'i-mobile i-STYLE 7.5A' => [ 'i-Mobile', 'i-Style 7.5A' ], + 'i-STYLE 7.6' => [ 'i-Mobile', 'i-Style 7.6' ], + 'i-mobile i-STYLE 7.7 DTV' => [ 'i-Mobile', 'i-Style 7.7 DTV' ], + 'i-mobile i-STYLE 7.8 DTV' => [ 'i-Mobile', 'i-Style 7.8 DTV' ], + 'i-mobile i-STYLE 7.9 DTV' => [ 'i-Mobile', 'i-Style 7.9 DTV' ], + 'i-mobile i-style 8' => [ 'i-Mobile', 'i-Style 8' ], + 'i-mobile i-STYLE 8.1' => [ 'i-Mobile', 'i-Style 8.1' ], + 'i-mobile i-STYLE 8.2' => [ 'i-Mobile', 'i-Style 8.2' ], + 'i-mobile i-STYLE 8.2A' => [ 'i-Mobile', 'i-Style 8.2A' ], + 'i-mobile i-STYLE 8.3 DTV' => [ 'i-Mobile', 'i-Style 8.3 DTV' ], + 'i-mobile i-STYLE 8.6 DTV' => [ 'i-Mobile', 'i-Style 8.6 DTV' ], + 'i-mobile i-STYLE 210' => [ 'i-Mobile', 'i-Style 210' ], + 'i-mobile i-STYLE 215' => [ 'i-Mobile', 'i-Style 215' ], + 'i-mobile I-STYLE 217' => [ 'i-Mobile', 'i-Style 217' ], + 'i-mobile i-STYLE 218' => [ 'i-Mobile', 'i-Style 218' ], + 'i-mobile i-STYLE 711' => [ 'i-Mobile', 'i-Style 711' ], + 'i-mobile i-STYLE 810' => [ 'i-Mobile', 'i-Style 810' ], + 'i-mobile i-style Q1' => [ 'i-Mobile', 'i-Style Q1' ], + 'I-mobile I-style Q1i' => [ 'i-Mobile', 'i-Style Q1i' ], + 'i-mobile i-STYLE Q2' => [ 'i-Mobile', 'i-Style Q2' ], + 'i-mobile i-STYLE Q2 DUO' => [ 'i-Mobile', 'i-Style Q2 Duo' ], + 'i-STYLE Q2 DUO!' => [ 'i-Mobile', 'i-Style Q2 Duo' ], + 'i-mobile i-style Q3' => [ 'i-Mobile', 'i-Style Q3' ], + 'i-mobile i-style Q3i' => [ 'i-Mobile', 'i-Style Q3i' ], + 'i-STYLE Q4' => [ 'i-Mobile', 'i-Style Q4' ], + 'i-STYLE Q4A' => [ 'i-Mobile', 'i-Style Q4A' ], + 'i-mobile i-STYLE Q 5' => [ 'i-Mobile', 'i-Style Q5' ], + 'i-mobile i-STYLE Q 5A' => [ 'i-Mobile', 'i-Style Q5A' ], + 'i-mobile i-STYLE Q6' => [ 'i-Mobile', 'i-Style Q6' ], + 'i-mobile i-STYLE Q6A' => [ 'i-Mobile', 'i-Style Q6A' ], + 'i-mobile I-Note' => [ 'i-Mobile', 'i-Note', DeviceType::TABLET ], + 'i-mobile i-note WiFi' => [ 'i-Mobile', 'i-Note', DeviceType::TABLET ], + 'I-mobile I-note S' => [ 'i-Mobile', 'i-Note S', DeviceType::TABLET ], + 'I-note WiFi 1.1' => [ 'i-Mobile', 'i-Note 1.1', DeviceType::TABLET ], + 'i-mobile M1703' => [ 'i-Mobile', 'i-Note 1.1', DeviceType::TABLET ], + 'i-mobile i-note 2' => [ 'i-Mobile', 'i-Note 2', DeviceType::TABLET ], + 'i-mobile i-NOTE WIFI 2' => [ 'i-Mobile', 'i-Note 2', DeviceType::TABLET ], + 'i-mobile i-note 3' => [ 'i-Mobile', 'i-Note 3', DeviceType::TABLET ], + 'i-mobile i-note WIFI3' => [ 'i-Mobile', 'i-Note 3', DeviceType::TABLET ], + 'i-mobile i-note WiFi 7' => [ 'i-Mobile', 'i-Note 7', DeviceType::TABLET ], + 'i-mobile i-note WiFi 9' => [ 'i-Mobile', 'i-Note 9', DeviceType::TABLET ], + ], + + 'KPN!!' => [ + 'KPN Smart 200' => [ 'KPN', 'Smart 200' ], + 'KPN Smart 300' => [ 'KPN', 'Smart 300' ], + 'KPN Smart 400' => [ 'KPN', 'Smart 400' ], + ], + + 'Kyivstar!!' => [ + 'Kyivstar Aqua' => [ 'Kyivstar', 'Aqua' ], + 'Kyivstar Shine' => [ 'Kyivstar', 'Shine' ], + 'Kyivstar Spark' => [ 'Kyivstar', 'Spark' ], + 'Kyivstar Aqua' => [ 'Kyivstar', 'Aqua' ], + 'Kyivstar Terra' => [ 'Kyivstar', 'Terra' ], + ], + + 'MegaFon SP-AI' => [ 'Мегафон', 'SP-A1' ], + 'MegaFon SP-A3' => [ 'Мегафон', 'SP-A3' ], + 'MegaFon SP-A5' => [ 'Мегафон', 'SP-A5' ], + 'MegaFon SP-A10' => [ 'Мегафон', 'SP-A10' ], + 'SP-A20i' => [ 'Мегафон', 'SP-A20i Mint' ], + 'MegaFon V9' => [ 'Мегафон', 'V9' ], + 'MegaFon V9+' => [ 'Мегафон', 'V9+' ], + 'MS3B' => [ 'Мегафон', 'Optima' ], + 'MS4A' => [ 'Мегафон', '4G Turbo' ], + 'MegaFon SIM+' => [ 'Мегафон', 'Sim+' ], + 'MT7A' => [ 'Мегафон', 'Login', DeviceType::TABLET ], + 'MS3A' => [ 'Мегафон', 'Login 2', DeviceType::TABLET ], + 'MegaFon Login 3' => [ 'Мегафон', 'Login 3', DeviceType::TABLET ], + + 'M9000' => [ 'MobiFone', 'M9000' ], + + 'GO504' => [ 'Movistar', 'Go Mobile 504' ], + 'G0775' => [ 'Movistar', 'Go Mobile 775' ], + 'GO778' => [ 'Movistar', 'Go Mobile 778' ], + 'B916C' => [ 'Movistar', 'Go Mobile 950' ], + 'GO960' => [ 'Movistar', 'Go Mobile 960' ], + 'GO963' => [ 'Movistar', 'Go Mobile 963' ], + 'GO980' => [ 'Movistar', 'Go Mobile 980' ], + 'GO984' => [ 'Movistar', 'Go Mobile 984' ], + 'Gomobile GO1001' => [ 'Movistar', 'Go Mobile 1001' ], + 'Movistar Express' => [ 'Movistar', 'Express' ], + 'Movistar Link' => [ 'Movistar', 'Link' ], + 'Movistar Motion' => [ 'Movistar', 'Motion' ], + 'Movistar Prime' => [ 'Movistar', 'Primee' ], + + 'MTC!!' => [ + 'MTC 916' => [ 'MTC', '916' ], + 'MTC 950' => [ 'MTC', '950' ], + 'MTC 955' => [ 'MTC', '955' ], + 'MTC 960' => [ 'MTC', '960' ], + 'MTC-962' => [ 'MTC', '962' ], + 'MTC 968' => [ 'MTC', '968' ], + 'MTC 970!' => [ 'MTC', '970' ], + 'MTC 972' => [ 'MTC', '972' ], + 'MTC975' => [ 'MTC', '975' ], + 'MTC 978' => [ 'MTC', '978' ], + 'MTC980' => [ 'MTC', '980' ], + 'MTC 982' => [ 'MTC', '982' ], + 'MTC 1055' => [ 'MTC', '1055' ], + 'MTC 1065' => [ 'MTC', '1065' ], + 'MTC 1078' => [ 'MTC', '1078' ], + 'MTC 982O' => [ 'MTC', '982O' ], + 'MTC Bravo' => [ 'MTC', 'Bravo' ], + 'MTC Evo' => [ 'MTC', 'Evo' ], + 'MTC Fit' => [ 'MTC', 'Fit' ], + 'MTC Neo' => [ 'MTC', 'Neo' ], + 'MTC Mini' => [ 'MTC', 'Mini' ], + 'MTC Pro' => [ 'MTC', 'Pro' ], + 'MTC SMART Run' => [ 'MTC', 'Smart Run' ], + 'MTC SMART Run 4G' => [ 'MTC', 'Smart Run' ], + 'MTC SMART Sprint 4G' => [ 'MTC', 'Smart Sprint' ], + 'MTC Viva' => [ 'MTC', 'Viva' ], + ], + + 'SMART Sprint' => [ 'MTC', 'Smart Sprint' ], + 'SMART Start' => [ 'MTC', 'Smart Start' ], + 'SMART Surf2 4G' => [ 'MTC', 'Smart Surf 2' ], + + 'NATCOM N8302' => [ 'Natcom', 'N8302' ], + + 'HB-1000' => [ 'NTT', 'Hikari Box Plus', DeviceType::TELEVISION ], + 'BSTB-200C' => [ 'NTT', 'Hikari Box 3', DeviceType::TELEVISION ], + + 'O2 Joggler' => [ 'O2', 'Joggler', DeviceType::TABLET ], + + 'Optimus Barcelona' => [ 'Optimus', 'Barcelona' ], /* Gigabyte GSmart G1305 */ + 'Optimus Boston' => [ 'Optimus', 'Boston' ], /* Gigabyte GSmart G1305 */ + 'Boston 4G' => [ 'Optimus', 'Boston 4G' ], + 'Optimus Madrid' => [ 'Optimus', 'Madrid' ], /* Gigabyte GSmart G1305 */ + 'Optimus Monte Carlo' => [ 'Optimus', 'Monte Carlo' ], /* ZTE Skate */ + 'Optimus San Francisco' => [ 'Optimus', 'San Francisco' ], /* ZTE Blade */ + 'Optimus San Remo' => [ 'Optimus', 'San Remo' ], + 'San Remo Mini' => [ 'Optimus', 'San Remo Mini' ], + 'Optimus Zali' => [ 'Optimus', 'Zali' ], + + 'Boston' => [ 'Orange', 'Boston' ], + 'Orange Boston' => [ 'Orange', 'Boston' ], + 'Orange Covo' => [ 'Orange', 'Covo' ], + 'Orange Daytona' => [ 'Orange', 'Daytona' ], + 'Orange Dublin' => [ 'Orange', 'Dublin' ], + 'Orange Fova' => [ 'Orange', 'Fova' ], + 'Orange Gova' => [ 'Orange', 'Gova' ], + 'Orange Hi 4G' => [ 'Orange', 'Hi' ], + 'Orange Hiro' => [ 'Orange', 'Hiro' ], + 'Orange infinity 996' => [ 'Orange', 'Infinity' ], + 'Orange Infinity 8008X' => [ 'Orange', 'Infinity' ], + 'Orange Kivo' => [ 'Orange', 'Kivo' ], + 'Luno' => [ 'Orange', 'Luno' ], + 'Orange Monte Carlo' => [ 'Orange', 'Monte Carlo' ], + 'Orange Neva 80' => [ 'Orange', 'Neva 80' ], + '6034R ORANGE Niva' => [ 'Orange', 'Nivo' ], + 'Orange Niva' => [ 'Orange', 'Nivo' ], + 'Orange Nura' => [ 'Orange', 'Nura' ], + 'Nura 2' => [ 'Orange', 'Nura 2' ], + 'Orange Novi' => [ 'Orange', 'Novi' ], + 'Orange Reyo' => [ 'Orange', 'Reyo' ], + 'Orange Rise 30' => [ 'Orange', 'Rise 30' ], + 'Orange Rono' => [ 'Orange', 'Rono' ], + 'Orange Roya' => [ 'Orange', 'Roya' ], + 'Orange Runo' => [ 'Orange', 'Runo' ], + 'San Francisco' => [ 'Orange', 'San Francisco' ], /* ZTE Blade */ + 'San Francisco for' => [ 'Orange', 'San Francisco' ], /* ZTE Blade */ + 'Orange San Francisco' => [ 'Orange', 'San Francisco' ], /* ZTE Blade */ + 'San Francisco II' => [ 'Orange', 'San Francisco II' ], + 'Orange Sego' => [ 'Orange', 'Sego' ], + 'Orange Tactile internet 2' => [ 'Orange', 'Tactile internet 2' ], + 'Orange Tado' => [ 'Orange', 'Tado' ], + 'Orange Yomi' => [ 'Orange', 'Yomi' ], + 'Orange Yumo' => [ 'Orange', 'Yumo' ], + 'Orange Zali' => [ 'Orange', 'Zali' ], + 'Zilo' => [ 'Orange', 'Zilo' ], + + '(QMobile|QTab|Q-Smart|Noir)!!' => [ + 'QMobile A1' => [ 'Q-Mobile', 'Noir A1' ], + 'QMobile A2 Lite' => [ 'Q-Mobile', 'Bolt A2 Lite' ], + 'QMobile A2 Classic' => [ 'Q-Mobile', 'Bolt A2 Classic' ], + 'QMobile A4' => [ 'Q-Mobile', 'Bolt A4' ], + 'QMobile A5' => [ 'Q-Mobile', 'Noir A5' ], + 'Noir A7' => [ 'Q-Mobile', 'Noir A7' ], + 'QMobile A7' => [ 'Q-Mobile', 'Noir A7' ], + 'Noir A8' => [ 'Q-Mobile', 'Noir A8' ], + 'QMobile A8' => [ 'Q-Mobile', 'Noir A8' ], + 'QMobile A10' => [ 'Q-Mobile', 'Noir A10' ], + 'QMobile A10 Noir' => [ 'Q-Mobile', 'Noir A10' ], + 'QMobile Noir A10' => [ 'Q-Mobile', 'Noir A10' ], + 'QMobile A10 Lite' => [ 'Q-Mobile', 'Noir A10 Lite' ], + 'QMobile A11Note' => [ 'Q-Mobile', 'Noir A11' ], + 'QMobile A12' => [ 'Q-Mobile', 'Noir A12' ], + 'QMobile A20' => [ 'Q-Mobile', 'Noir A20' ], + 'QMobile A30' => [ 'Q-Mobile', 'Noir A30' ], + 'QMobile A34' => [ 'Q-Mobile', 'Noir A34' ], + 'QMobile A35' => [ 'Q-Mobile', 'Noir A35' ], + 'QMobile A36' => [ 'Q-Mobile', 'Noir A36' ], + 'QMobile A51' => [ 'Q-Mobile', 'Noir A51' ], + 'QMobile A63' => [ 'Q-Mobile', 'Noir A63' ], + 'QMobile A65' => [ 'Q-Mobile', 'Noir A65' ], + 'QMobile A75' => [ 'Q-Mobile', 'Noir A75' ], + 'QMobile A80' => [ 'Q-Mobile', 'Noir A80' ], + 'QMobile A120' => [ 'Q-Mobile', 'Noir A120' ], + 'QMobile A170' => [ 'Q-Mobile', 'Noir A17 0' ], + 'QMobile A290' => [ 'Q-Mobile', 'Noir A290' ], + 'QMobile A300' => [ 'Q-Mobile', 'Noir A300' ], + 'Qmobile A500' => [ 'Q-Mobile', 'Noir A500' ], + 'QMobile A700' => [ 'Q-Mobile', 'Noir A700' ], + 'Qmobile A900' => [ 'Q-Mobile', 'Noir A900' ], + 'QMobile A910' => [ 'Q-Mobile', 'Noir A910' ], + 'QMobile i1' => [ 'Q-Mobile', 'Noir i1' ], + 'QMobile i2' => [ 'Q-Mobile', 'Noir i2' ], + 'QMobile i4' => [ 'Q-Mobile', 'Noir i4' ], + 'QMobile i5' => [ 'Q-Mobile', 'Noir i5' ], + 'QMobile i5i' => [ 'Q-Mobile', 'Noir i5i' ], + 'QMobile i5i Classic' => [ 'Q-Mobile', 'Noir i5i Classic' ], + 'QMobile i6i' => [ 'Q-Mobile', 'Noir i6i' ], + 'QMobile i6 Metal ONE' => [ 'Q-Mobile', 'i6 Metal One' ], + 'QMobile i7' => [ 'Q-Mobile', 'Noir i7' ], + 'QMobile i7i' => [ 'Q-Mobile', 'Noir i7i' ], + 'QMobile i8' => [ 'Q-Mobile', 'Noir i8' ], + 'QMobile i9' => [ 'Q-Mobile', 'Noir i9' ], + 'Qmobile Noir i9' => [ 'Q-Mobile', 'Noir i9' ], + 'QMobile i10' => [ 'Q-Mobile', 'Noir i10' ], + 'QMobile i12' => [ 'Q-Mobile', 'Noir i12' ], + 'Q-Smart FLY 01' => [ 'Q-Mobile', 'Q-Smart Fly 01' ], + 'QMobile L15' => [ 'Q-Mobile', 'Linq L15' ], + 'QMobile L20' => [ 'Q-Mobile', 'Linq L20' ], + 'QMobile M82' => [ 'Q-Mobile', 'Noir M82' ], + 'QMobile M88' => [ 'Q-Mobile', 'Noir M88' ], + 'QMobile M95' => [ 'Q-Mobile', 'Noir M95' ], + 'QMobile M350' => [ 'Q-Mobile', 'Noir M350' ], + 'QMobile T2' => [ 'Q-Mobile', 'Bolt T2' ], + 'QMobile T5' => [ 'Q-Mobile', 'Bolt T5' ], + 'QMobile T50' => [ 'Q-Mobile', 'Bolt T50' ], + 'QMobile T200' => [ 'Q-Mobile', 'Bolt T200' ], + 'QMobileT200i' => [ 'Q-Mobile', 'Bolt T200i' ], + 'QMobile T250' => [ 'Q-Mobile', 'Bolt T250' ], + 'QMobile T400' => [ 'Q-Mobile', 'Bolt T400' ], + 'QMobile T500' => [ 'Q-Mobile', 'Bolt T500' ], + 'Q-Smart S1' => [ 'Q-Mobile', 'Q-Smart S1' ], + 'QMobile S1' => [ 'Q-Mobile', 'Q-Smart S1' ], + 'QMobile S2' => [ 'Q-Mobile', 'Q-Smart S2' ], + 'QMobile S3' => [ 'Q-Mobile', 'Q-Smart S3' ], + 'QMobile S5' => [ 'Q-Mobile', 'Q-Smart S5' ], + 'Q-Smart model S6' => [ 'Q-Mobile', 'Q-Smart S6' ], + 'Q-mobile S10' => [ 'Q-Mobile', 'Q-Smart S10' ], + 'Qmobile-S11' => [ 'Q-Mobile', 'Q-Smart S11' ], + 'Q-mobile S11!' => [ 'Q-Mobile', 'Q-Smart S11' ], + 'Q-Smart S12' => [ 'Q-Mobile', 'Q-Smart S12' ], + 'Qmobile S13' => [ 'Q-Mobile', 'Q-Smart S13' ], + 'Q-Smart S16' => [ 'Q-Mobile', 'Q-Smart S16' ], + 'Q-Smart S18' => [ 'Q-Mobile', 'Q-Smart S18' ], + 'Q-Smart S19' => [ 'Q-Mobile', 'Q-Smart S19' ], + 'Q-Smart S20' => [ 'Q-Mobile', 'Q-Smart S20' ], + 'Q-Smart S21' => [ 'Q-Mobile', 'Q-Smart S21' ], + 'Q-Smart S29' => [ 'Q-Mobile', 'Q-Smart S29' ], + 'Q-Smart QS16' => [ 'Q-Mobile', 'Q-Smart QS16' ], + 'Q-Smart QS470' => [ 'Q-Mobile', 'Q-Smart QS470' ], + 'Q-Smart QS550' => [ 'Q-Mobile', 'Q-Smart QS550' ], + 'Q-Smart QS558' => [ 'Q-Mobile', 'Q-Smart QS558' ], + 'QTab Q100' => [ 'Q-Mobile', 'QTab Q100', DeviceType::TABLET ], + 'QTab Q300' => [ 'Q-Mobile', 'QTab Q300', DeviceType::TABLET ], + 'QTab Q850' => [ 'Q-Mobile', 'QTab Q850', DeviceType::TABLET ], + 'QMobile V2' => [ 'Q-Mobile', 'Noir V2' ], + 'QMobile V4' => [ 'Q-Mobile', 'Noir V4' ], + 'QMobile W7' => [ 'Q-Mobile', 'Noir W7' ], + 'QMobile W8' => [ 'Q-Mobile', 'Noir W8' ], + 'QMobile W10' => [ 'Q-Mobile', 'Noir W10' ], + 'QMobile W15' => [ 'Q-Mobile', 'Noir W15' ], + 'QMobile W35' => [ 'Q-Mobile', 'Noir W35' ], + 'QMobile W50' => [ 'Q-Mobile', 'Noir W50' ], + 'QMobile X1' => [ 'Q-Mobile', 'Noir X1' ], + 'QMobile X2' => [ 'Q-Mobile', 'Noir X2' ], + 'QMobile X2i' => [ 'Q-Mobile', 'Noir X2i' ], + 'QMobile X2 Music' => [ 'Q-Mobile', 'X2 Music' ], + 'QMobile X5' => [ 'Q-Mobile', 'Noir X5' ], + 'QMobile X6' => [ 'Q-Mobile', 'Noir X6' ], + 'QMobile X6i' => [ 'Q-Mobile', 'Noir X6i' ], + 'QMobile X10' => [ 'Q-Mobile', 'Noir X10' ], + 'QMobile X11' => [ 'Q-Mobile', 'Noir X11' ], + 'QMobile X14' => [ 'Q-Mobile', 'Noir X14' ], + 'QMobile X20' => [ 'Q-Mobile', 'Noir X20' ], + 'QMobile X25' => [ 'Q-Mobile', 'Noir X25' ], + 'QMobile X30' => [ 'Q-Mobile', 'Noir X30' ], + 'QMobile X32' => [ 'Q-Mobile', 'Noir X32' ], + 'QMobile X35' => [ 'Q-Mobile', 'Noir X35' ], + 'QMobile X40' => [ 'Q-Mobile', 'Noir X40' ], + 'QMobile X60' => [ 'Q-Mobile', 'Noir X60' ], + 'QMobile X70' => [ 'Q-Mobile', 'Noir X70' ], + 'QMobile X80' => [ 'Q-Mobile', 'Noir X80' ], + 'QMobile X90' => [ 'Q-Mobile', 'Noir X90' ], + 'QMobile X95' => [ 'Q-Mobile', 'Noir X95' ], + 'QMobile X100' => [ 'Q-Mobile', 'Linq X100' ], + 'QMobileX200' => [ 'Q-Mobile', 'Noir X200' ], + 'QMobile X250' => [ 'Q-Mobile', 'Noir X250' ], + 'QMobile X300' => [ 'Q-Mobile', 'Noir X300' ], + 'QMobile X500' => [ 'Q-Mobile', 'Noir X500' ], + 'QMobile X550' => [ 'Q-Mobile', 'Noir X550' ], + 'QMobile X600' => [ 'Q-Mobile', 'Noir X600' ], + 'QMobile X700i' => [ 'Q-Mobile', 'Titan X700' ], + 'QMobile X700 PRO' => [ 'Q-Mobile', 'Noir X700 Pro' ], + 'QMobile X800' => [ 'Q-Mobile', 'Noir X800' ], + 'QMobile X900' => [ 'Q-Mobile', 'Noir X900' ], + 'QMobile Z8' => [ 'Q-Mobile', 'Noir Z8' ], + 'QMobile Z8 Plus' => [ 'Q-Mobile', 'Noir Z8 Plus' ], + 'QMobile Z9' => [ 'Q-Mobile', 'Noir Z9' ], + 'QMobile Z10' => [ 'Q-Mobile', 'Noir Z10' ], + ], + + 'Z4 mini' => [ 'Q-Mobile', 'Noir Quatro Z4 mini' ], + 'Soshphone 4G' => [ 'SoshPhone', '4G' ], + + 'AQT80' => [ 'Sprint', 'Slate 8', DeviceType::TABLET ], + + 'MOVE' => [ 'T-Mobile', 'MOVE' ], /* Alcatel One Touch 908 */ + 'HTC Dream' => [ 'T-Mobile', 'G1' ], /* HTC Dream */ + 'HTC Dream G1' => [ 'T-Mobile', 'G1' ], /* HTC Dream */ + 'HTC Dream SparksMod ' => [ 'T-Mobile', 'G1' ], /* HTC Dream */ + 'T-Mobile G1' => [ 'T-Mobile', 'G1' ], /* HTC Dream */ + 'HTC Vision' => [ 'T-Mobile', 'G2' ], /* HTC Desire Z */ + 'T-Mobile G2' => [ 'T-Mobile', 'G2' ], /* HTC Desire Z */ + 'T-Mobile G2 Touch' => [ 'T-Mobile', 'G2' ], /* HTC Desire Z */ + 'T-Mobile HTC G2' => [ 'T-Mobile', 'G2' ], /* HTC Desire Z */ + 'LG-P999' => [ 'T-Mobile', 'G2x' ], /* LG Optimus 2X */ + 'LG-E739' => [ 'T-Mobile', 'myTouch' ], /* LG E739 */ + 'T-Mobile myTouch' => [ 'T-Mobile', 'myTouch' ], /* LG E739 */ + 'T-Mobile myTouch 3G' => [ 'T-Mobile', 'myTouch 3G'], /* HTC Magic */ + 'T-Mobile myTouch 3G Slide' => [ 'T-Mobile', 'myTouch 3G Slide' ], /* HTC Espresso */ + 'T-mobile my touch 3g slide' => [ 'T-Mobile', 'myTouch 3G Slide' ], /* HTC Espresso */ + 'HTC T-Mobile myTouch 3G Slide' => [ 'T-Mobile', 'myTouch 3G Slide' ], /* HTC Espresso */ + 'T-Mobile Espresso' => [ 'T-Mobile', 'myTouch 3G Slide' ], /* HTC Espresso */ + 'HTC my ?Touch 3G Slide!' => [ 'T-Mobile', 'myTouch 3G Slide' ], /* HTC Espresso */ + 'T-Mobile myTouch 4G' => [ 'T-Mobile', 'myTouch 4G' ], /* HTC Glacier */ + 'HTC Glacier' => [ 'T-Mobile', 'myTouch 4G' ], /* HTC Glacier */ + 'HTC Panache' => [ 'T-Mobile', 'myTouch 4G' ], /* HTC Glacier */ + 'My ?Touch ?4G$!' => [ 'T-Mobile', 'myTouch 4G' ], /* HTC Glacier */ + 'HTC My ?Touch ?4G$!' => [ 'T-Mobile', 'myTouch 4G' ], /* HTC Glacier */ + 'HTC S910m' => [ 'T-Mobile', 'myTouch 4G' ], /* HTC Glacier */ + 'HTC myTouch 4G Slide' => [ 'T-Mobile', 'myTouch 4G Slide' ], /* HTC Doubleshot */ + 'myTouch 4G Slide' => [ 'T-Mobile', 'myTouch 4G Slide' ], /* HTC Doubleshot */ + 'myTouch Slide 4G' => [ 'T-Mobile', 'myTouch 4G Slide' ], /* HTC Doubleshot */ + 'HTC Doubleshot' => [ 'T-Mobile', 'myTouch 4G Slide' ], /* HTC Doubleshot */ + 'T-Mobile myTouch Q' => [ 'T-Mobile', 'myTouch Q' ], /* Huawei U8730 */ + 'LG-C800' => [ 'T-Mobile', 'myTouch Q' ], + 'T-Mobile Opal' => [ 'T-Mobile', 'Opal' ], + 'HUAWEI U8686' => [ 'T-Mobile', 'Prism' ], + 'Prism' => [ 'T-Mobile', 'Prism' ], + 'Prism II' => [ 'T-Mobile', 'Prism II' ], + 'U8220' => [ 'T-Mobile', 'Pulse' ], + 'Pulse' => [ 'T-Mobile', 'Pulse' ], + 'Pulse Mini' => [ 'T-Mobile', 'Pulse Mini' ], /* Huawei U8110 */ + 'T-Mobile Vivacity' => [ 'T-Mobile', 'Vivacity' ], + 'REVVLPLUS C3701A' => [ 'T-Mobile', 'REVVL Plus' ], + 'SpringBoard' => [ 'T-Mobile', 'SpringBoard', DeviceType::TABLET ], + + 'Telenor!!' => [ + 'Telenor OneTouch' => [ 'Telenor', 'One Touch' ], + 'Telenor One Touch C' => [ 'Telenor', 'One Touch C' ], + 'Telenor One Touch S' => [ 'Telenor', 'One Touch S' ], + 'Telenor Touch Plus' => [ 'Telenor', 'Touch Plus' ], + 'Telenor K530' => [ 'Telenor', 'K530' ], + 'Telenor N940' => [ 'Telenor', 'N940' ], + 'Telenor S800' => [ 'Telenor', 'S800' ], + 'Telenor Smart' => [ 'Telenor', 'Smart' ], + 'Telenor Smart 2' => [ 'Telenor', 'Smart 2' ], + 'Telenor Smart HD' => [ 'Telenor', 'Smart HD' ], + 'Telenor Smart Mini' => [ 'Telenor', 'Smart Mini' ], + 'Telenor SmartPlus' => [ 'Telenor', 'Smart Plus' ], + 'Telenor Smart Pro' => [ 'Telenor', 'Smart Pro' ], + 'Telenor Smart Pro 2' => [ 'Telenor', 'Smart Pro 2' ], + 'TELENOR SMART TOUCH MINI' => [ 'Telenor', 'Smart Touch Mini' ], + 'Telenor Touch Mini' => [ 'Telenor', 'Smart Touch Mini' ], + 'Telenor Touch Pad' => [ 'Telenor', 'Touch Pad', DeviceType::TABLET ], + ], + + 'T-Hub2' => [ 'Telstra', 'T-Hub 2', DeviceType::TABLET ], + + 'tmn!!' => [ + 'tmn smart a6' => [ 'TMN', 'Smart A6' ], + 'tmn smart a7' => [ 'TMN', 'Smart A7' ], + 'tmn smart a8' => [ 'TMN', 'Smart A8' ], + 'tmn smart a15' => [ 'TMN', 'Smart A15' ], + 'tmn smart a18' => [ 'TMN', 'Smart A18' ], + 'tmn smart a20' => [ 'TMN', 'Smart A20' ], + 'tmn smart a60' => [ 'TMN', 'Smart A60' ], + ], + + 'soft stone' => [ 'TMN', 'Soft Stone' ], + + 'TRUE BEYOND 3G' => [ 'True', 'Beyond' ], + + 'StarTrail TT' => [ 'Tunisie Telecom', 'StarTrail' ], + + 'Turkcell!!' => [ + 'Turkcell Maxi Plus 5' => [ 'Turkcell', 'Maxi Plus 5' ], + 'TURKCELL MaxiPRO5' => [ 'Turkcell', 'Maxi Pro 5' ], + 'Turkcell T10' => [ 'Turkcell', 'T10' ], + 'Turkcell T11' => [ 'Turkcell', 'T11' ], + 'Turkcell T20' => [ 'Turkcell', 'T20' ], + 'TURKCELL T40' => [ 'Turkcell', 'T40' ], + 'TURKCELL T50' => [ 'Turkcell', 'T50' ], + 'TURKCELL TURBO T50' => [ 'Turkcell', 'Turbo T50' ], + 'TURKCELL T60' => [ 'Turkcell', 'T60' ], + 'TURKCELL T70' => [ 'Turkcell', 'T70' ], + 'TURKCELL T80' => [ 'Turkcell', 'T80' ], + ], + + 'Turk Telekom TT175' => [ 'Türk Telekom', 'TT175' ], + + 'RP-UDM01A' => [ 'Verico', 'Uni Pad' ], + + 'QMV7A' => [ 'Verizon', 'Ellipsis 7', DeviceType::TABLET ], + 'QMV7B' => [ 'Verizon', 'Ellipsis 7', DeviceType::TABLET ], + 'QTAQZ3' => [ 'Verizon', 'Ellipsis 8', DeviceType::TABLET ], + 'QTAQZ3KID' => [ 'Verizon', 'Ellipsis 8', DeviceType::TABLET ], + 'QTAIR7' => [ 'Verizon', 'Ellipsis 10', DeviceType::TABLET ], + + 'Viettel i5' => [ 'Viettel', 'i5' ], + 'Viettel I8' => [ 'Viettel', 'i8' ], + 'V8403' => [ 'Viettel', 'V8403' ], + 'VIETTEL V8404!' => [ 'Viettel', 'V8404' ], + 'V8405' => [ 'Viettel', 'V8405' ], + 'V8408' => [ 'Viettel', 'V8408' ], + 'V8409' => [ 'Viettel', 'V8409' ], + 'Viettel V8410' => [ 'Viettel', 'V8410' ], + 'VIETTEL V8411' => [ 'Viettel', 'V8411' ], + 'V8412' => [ 'Viettel', 'V8412' ], + 'V8413' => [ 'Viettel', 'V8413' ], + 'V8501' => [ 'Viettel', 'V8501' ], + 'Viettel V8502' => [ 'Viettel', 'V8502' ], + 'V8502' => [ 'Viettel', 'V8502' ], + 'V8503' => [ 'Viettel', 'V8503' ], + 'V8505' => [ 'Viettel', 'V8505' ], + 'VIETTEL V8506' => [ 'Viettel', 'V8506' ], + 'V8507' => [ 'Viettel', 'V8507' ], + 'V8508' => [ 'Viettel', 'V8508' ], + 'VIETTEL V8509' => [ 'Viettel', 'V8509' ], + 'V8510' => [ 'Viettel', 'V8510' ], + 'V8511' => [ 'Viettel', 'V8511' ], + 'V8602' => [ 'Viettel', 'V8602' ], + 'V8603' => [ 'Viettel', 'V8603' ], + + 'Vodafone!!' => [ + 'Vodafone 785' => [ 'Vodafone', 'Smart 4 Mini' ], + 'Vodafone 845' => [ 'Vodafone', '845 Nova' ], /* Huawei U8100 */ + 'Vodafone 858' => [ 'Vodafone', '858 Smart' ], /* Huawei U8160 */ + 'Vodafone 861' => [ 'Vodafone', '861 Smart' ], + 'Vodafone 875' => [ 'Vodafone', 'Smart Mini' ], + 'Vodafone 890N' => [ 'Vodafone', 'Smart 4 Turbo' ], + 'Vodafone 945' => [ 'Vodafone', '945' ], /* ZTE Joe */ + 'Vodafone 958' => [ 'Vodafone', '958' ], + 'Vodafone 975!' => [ 'Vodafone', '975' ], + 'Vodafone 980' => [ 'Vodafone', '980' ], + 'Vodafone 985N' => [ 'Vodafone', 'Smart 4 Power' ], + 'Vodafone Blade V' => [ 'Vodafone', 'Blade V' ], + 'Vodafone Smart ll' => [ 'Vodafone', 'Smart II' ], + 'Vodafone Smart II!' => [ 'Vodafone', 'Smart II' ], + 'Vodafone Smart 4' => [ 'Vodafone', 'Smart 4' ], + 'Vodafone Smart 4 max' => [ 'Vodafone', 'Smart 4 Max' ], + 'Vodafone Smart 4 turbo' => [ 'Vodafone', 'Smart 4 Turbo' ], + 'Vodafone Smart 4G' => [ 'Vodafone', 'Smart 4G' ], + 'VodafoneSmartChat!' => [ 'Vodafone', 'Smart Chat' ], + 'Vodafone Smart Chat' => [ 'Vodafone', 'Smart Chat' ], + 'Vodafone Smart ultra 6' => [ 'Vodafone', 'Smart Ultra 6' ], + 'Vodafone SU6' => [ 'Vodafone', 'Smart Ultra 6' ], + 'Vodafone SmartTab II 10' => [ 'Vodafone', 'Smart Tab II 10', DeviceType::TABLET ], + 'Vodafone Smart Tab III 7' => [ 'Vodafone', 'Smart Tab III 7', DeviceType::TABLET ], + 'Vodafone Smart Tab III 10' => [ 'Vodafone', 'Smart Tab III 10', DeviceType::TABLET ], + 'Vodafone Smart Tab 4' => [ 'Vodafone', 'Smart Tab 4', DeviceType::TABLET ], + 'Vodafone Smart Tab 3G!' => [ 'Vodafone', 'Smart Tab 3G', DeviceType::TABLET ], + 'Vodafone Smart Tab 4G!' => [ 'Vodafone', 'Smart Tab 4G', DeviceType::TABLET ], + 'Vodafone Tab grand 6' => [ 'Vodafone', 'Tab Grand 6', DeviceType::TABLET ], + ], + + 'SmartTab!!' => [ + 'SmartTab2' => [ 'Vodafone', 'Smart Tab 2', DeviceType::TABLET ], + 'SmartTab7' => [ 'Vodafone', 'Smart Tab 7', DeviceType::TABLET ], + 'SmartTabII7' => [ 'Vodafone', 'Smart Tab II 7', DeviceType::TABLET ], /* Lenovo */ + 'SmartTabII10' => [ 'Vodafone', 'Smart Tab II 10', DeviceType::TABLET ], + 'SmartTab10' => [ 'Vodafone', 'Smart Tab 10', DeviceType::TABLET ] /* ZTE Web Tab 10 */ + ], + + 'VF685' => [ 'Vodafone', 'Smart 4 Fun' ], + 'VF695' => [ 'Vodafone', 'Smart First 6' ], + 'VF696' => [ 'Vodafone', 'Smart Grand 6' ], + 'VF-696' => [ 'Vodafone', 'Smart Grand 6' ], + 'VF-795' => [ 'Vodafone', 'Smart Speed 6' ], + 'VF-895N' => [ 'Vodafone', 'Smart Prime 6' ], + 'VF945' => [ 'Vodafone', '945' ], + 'VFD 100' => [ 'Vodafone', 'Smart Mini' ], + 'VFD 200' => [ 'Vodafone', 'Smart First 7' ], + 'VFD 300' => [ 'Vodafone', 'Smart Mini 7' ], + 'VFD 301' => [ 'Vodafone', 'Smart Mini 7' ], + 'VFD 311' => [ 'Vodafone', 'Smart Mini 7 VE' ], + 'VFD 500' => [ 'Vodafone', 'Smart Turbo 7' ], + 'VFD 501' => [ 'Vodafone', 'Smart Turbo 7' ], + 'VFD 510' => [ 'Vodafone', 'Smart E8' ], + 'VFD 511' => [ 'Vodafone', 'Smart E8' ], + 'VFD 513' => [ 'Vodafone', 'Smart E8' ], + 'VFD 600' => [ 'Vodafone', 'Smart Prime 7' ], + 'VFD 610' => [ 'Vodafone', 'Smart N8' ], + 'VFD 700' => [ 'Vodafone', 'Smart Ultra 7' ], + 'VFD 710' => [ 'Vodafone', 'Smart V8' ], + 'VFD 900' => [ 'Vodafone', 'Smart Platinum 7' ], + 'Huawei 858' => [ 'Vodafone', '858 Smart' ], + '[a-z][a-z](?:-[a-z][a-z])?, SmartTabII7!' => [ 'Vodafone', 'Smart Tab II 7', DeviceType::TABLET ], /* Lenovo */ + 'VF-1397' => [ 'Vodafone', 'Tab Speed 6', DeviceType::TABLET ], + 'VF-1497' => [ 'Vodafone', 'Tab Prime', DeviceType::TABLET ], + 'VFD 1100' => [ 'Vodafone', 'Tab Mini 7', DeviceType::TABLET ], + 'VFD 1300' => [ 'Vodafone', 'Tab N8', DeviceType::TABLET ], + 'VFD 1400' => [ 'Vodafone', 'Tab Prime 7', DeviceType::TABLET ], + 'VFD1400' => [ 'Vodafone', 'Tab Prime 7', DeviceType::TABLET ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-asha.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-asha.php new file mode 100644 index 0000000..00c1fd5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-asha.php @@ -0,0 +1,18 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$ASHA_MODELS = [ + 'Asha230SingleSIM' => [ 'Nokia', 'Asha 230' ], + 'Asha230DualSIM' => [ 'Nokia', 'Asha 230' ], + '500' => [ 'Nokia', 'Asha 500' ], + 'Asha500SingleSIM' => [ 'Nokia', 'Asha 500' ], + 'Asha500DualSIM' => [ 'Nokia', 'Asha 500' ], + '501' => [ 'Nokia', 'Asha 501' ], + '501s' => [ 'Nokia', 'Asha 501' ], + '501.1' => [ 'Nokia', 'Asha 501' ], + '501.2' => [ 'Nokia', 'Asha 501' ], + '502' => [ 'Nokia', 'Asha 502' ], + '503' => [ 'Nokia', 'Asha 503' ], + '503s' => [ 'Nokia', 'Asha 503' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-bada.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-bada.php new file mode 100644 index 0000000..29fda46 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-bada.php @@ -0,0 +1,18 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$BADA_MODELS = [ + 'GT- ?S52(50|53)!' => [ 'Samsung', 'Wave 525' ], + 'GT-S53(30|33)!' => [ 'Samsung', 'Wave 533' ], + 'GT-S5380!' => [ 'Samsung', 'Wave Y' ], + 'GT-S57(50|53)!' => [ 'Samsung', 'Wave 575' ], + 'GT-S57(80)!' => [ 'Samsung', 'Wave 578' ], + 'GT-S72(30|33)!' => [ 'Samsung', 'Wave 723' ], + 'GT-S7250!' => [ 'Samsung', 'Wave M' ], + 'GT-S8500!' => [ 'Samsung', 'Wave' ], + 'SCH-F859!' => [ 'Samsung', 'Wave' ], + 'GT- ?S8530!' => [ 'Samsung', 'Wave II' ], + 'GT- ?S8600!' => [ 'Samsung', 'Wave 3' ], + 'SHW-M410' => [ 'Samsung', 'Wave 3' ] +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-blackberry.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-blackberry.php new file mode 100644 index 0000000..d9a6cad --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-blackberry.php @@ -0,0 +1,52 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$BLACKBERRY_MODELS = [ + '9000' => 'Bold', + '9600' => 'Bold', + '9650' => 'Bold', + '9700' => 'Bold', + '9780' => 'Bold', + '9788' => 'Bold', + '9790' => 'Bold', + '9900' => 'Bold', + '9930' => 'Bold', + '8300' => 'Curve', + '8310' => 'Curve', + '8320' => 'Curve', + '8330' => 'Curve', + '8350i' => 'Curve', + '8520' => 'Curve', + '8530' => 'Curve', + '8900' => 'Curve', + '9220' => 'Curve', + '9300' => 'Curve', + '9310' => 'Curve', + '9315' => 'Curve', + '9320' => 'Curve', + '9330' => 'Curve', + '9350' => 'Curve', + '9360' => 'Curve', + '9370' => 'Curve', + '9380' => 'Curve', + '8100' => 'Pearl', + '8110' => 'Pearl', + '8120' => 'Pearl', + '8130' => 'Pearl', + '8220' => 'Pearl', + '8230' => 'Pearl', + '9100' => 'Pearl', + '9105' => 'Pearl', + '9500' => 'Storm', + '9520' => 'Storm2', + '9530' => 'Storm', + '9550' => 'Storm', + '9670' => 'Style', + '9800' => 'Torch', + '9810' => 'Torch', + '9850' => 'Torch', + '9860' => 'Torch', + '9630' => 'Tour', + '9981' => 'Porsche P' +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-brew.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-brew.php new file mode 100644 index 0000000..2a4cd28 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-brew.php @@ -0,0 +1,96 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$BREW_MODELS = [ + 'Coolpad D508' => [ 'Coolpad', 'D508' ], + 'Coolpad D510' => [ 'Coolpad', 'D510' ], + 'Coolpad E600' => [ 'Coolpad', 'E600' ], + 'HUAWEI U526' => [ 'Huawei', 'U526' ], + 'HUAWEI U528' => [ 'Huawei', 'U528' ], + 'HUAWEI U2801!' => [ 'Huawei', 'U2801' ], + 'HUAWEI U5200!' => [ 'Huawei', 'U5200' ], + 'HUAWEI U5300!' => [ 'Huawei', 'U5300' ], + 'HUAWEI U5310!' => [ 'Huawei', 'U5310' ], + 'HUAWEI U6150!' => [ 'Huawei', 'U6150' ], + 'E4255' => [ 'Kyocera', 'DuraMax E4255' ], + 'S2151!' => [ 'Kyocera', 'Coast S2151' ], + 'EX200!' => [ 'Motorola', 'EX200' ], + 'NOKIA 7705' => [ 'Nokia', '7705 Twist' ], + 'M260!' => [ 'Samsung', 'Factor' ], + 'M350!' => [ 'Samsung', 'Seek' ], + 'M370!' => [ 'Samsung', 'M370' ], + 'M380!' => [ 'Samsung', 'Trender' ], + 'M390!' => [ 'Samsung', 'Array' ], + 'M550!' => [ 'Samsung', 'Exclaim' ], + 'M560!' => [ 'Samsung', 'Reclaim' ], + 'SGH-A937!' => [ 'Samsung', 'SCH-A937' ], + 'SGH-A947!' => [ 'Samsung', 'SCH-A947' ], + 'SCH-B309!' => [ 'Samsung', 'SCH-B309' ], + 'SCH-F839' => [ 'Samsung', 'SCH-F839' ], + 'SCH-M519!' => [ 'Samsung', 'Metro TV' ], + 'SCH-S559!' => [ 'Samsung', 'SCH-S559' ], + 'SCH-S579!' => [ 'Samsung', 'SCH-S579' ], + 'SCH-U380!' => [ 'Samsung', 'Brightside' ], + 'SCH-U485' => [ 'Samsung', 'Intensity III' ], + 'SCH-U640!' => [ 'Samsung', 'Convoy' ], + 'SCH-U660!' => [ 'Samsung', 'Convoy II' ], + 'SCH-U680!' => [ 'Samsung', 'Convoy 3' ], + 'SCH-U750!' => [ 'Samsung', 'Alias 2' ], + 'SCH-U820!' => [ 'Samsung', 'Reality' ], + 'SCH-U960!' => [ 'Samsung', 'Rogue' ], + 'SCH-W709!' => [ 'Samsung', 'SCH-W709' ], + 'SCH-W799!' => [ 'Samsung', 'SCH-W799' ], + 'sam-r631' => [ 'Samsung', 'Messenger Touch R631' ], + 'sam-r640' => [ 'Samsung', 'Character R640' ], + 'sam-r900' => [ 'Samsung', 'Craft R900' ], + 'SM-B690V' => [ 'Samsung', 'Convoy 4' ], + 'SPH M330' => [ 'Samsung', 'SPH-M330' ], + 'SPH-M570' => [ 'Samsung', 'Restore' ], + 'PLS M330' => [ 'Samsung', 'PLS-M330' ], + 'Sprint M850' => [ 'Samsung', 'Instinct HD' ], + 'SCP-3810' => [ 'Sanyo', 'SCP-3810' ], + 'SCP3810' => [ 'Sanyo', 'SCP-3810' ], + 'SCP-6750' => [ 'Sanyo', 'Katana Eclipse X' ], + 'SCP6760' => [ 'Sanyo', 'Incognito' ], + 'SCP-6760' => [ 'Sanyo', 'Incognito' ], + 'SCP6780' => [ 'Sanyo', 'Innuendo' ], + 'HS-E316!' => [ 'Hisense', 'E316' ], + 'VX5600!' => [ 'LG', 'Accolade' ], + 'VX9200!' => [ 'LG', 'Env3' ], + 'VX9600!' => [ 'LG', 'Versa' ], + 'VX11000!' => [ 'LG', 'Env Touch' ], + 'VN170!' => [ 'LG', 'Revere 3' ], + 'VN250!' => [ 'LG', 'Cosmos' ], + 'VN271!' => [ 'LG', 'Extravert' ], + 'VN280!' => [ 'LG', 'Extravert 2' ], + 'VN360!' => [ 'LG', 'Exalt' ], + 'VN370!' => [ 'LG', 'Exalt II' ], + 'VN530' => [ 'LG', 'Octane' ], + 'LG272' => [ 'LG', 'Rumor Reflex' ], + 'LG510' => [ 'LG', 'Rumor Touch' ], + 'LN240' => [ 'LG', 'Remarq' ], + 'LN510' => [ 'LG', 'Rumor Touch' ], + 'LX610' => [ 'LG', 'Lotus Elite' ], + 'AX8575' => [ 'LG', 'Chocolate Touch' ], + 'LGE AX840' => [ 'LG', 'Tritan' ], + 'LGE LG700' => [ 'LG', 'Bliss' ], + 'LGE LG840' => [ 'LG', 'Spyder II' ], + 'LGE UX700' => [ 'LG', 'Bliss' ], + 'LGE UX840' => [ 'LG', 'Tritan' ], + 'LGE VX11K' => [ 'LG', 'Env Touch' ], + 'LGE VX8575' => [ 'LG', 'Chocolate Touch' ], + 'LGE VX9700' => [ 'LG', 'Dare' ], + 'P5000' => [ 'Pantech', 'Link II' ], + 'P6020' => [ 'Pantech', 'Persuit II' ], + 'P6030' => [ 'Pantech', 'Reneu' ], + 'CDM8992' => [ 'Pantech', 'Hotshot' ], + 'CDM8999' => [ 'Pantech', 'Crux' ], + 'TXT8045' => [ 'Pantech', 'Jest 2' ], + 'Pantech CDM8992!' => [ 'Pantech', 'Hotshot' ], + 'Pantech CDM8999!' => [ 'Pantech', 'Crux' ], + 'Pantech TXT8045!' => [ 'Pantech', 'Jest 2' ], + 'ZTE F-450!' => [ 'ZTE', 'Adamant' ], + 'ZTE R516!' => [ 'ZTE', 'R516' ], + 'ZTE R518!' => [ 'ZTE', 'R518' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-feature.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-feature.php new file mode 100644 index 0000000..2b76e9c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-feature.php @@ -0,0 +1,116 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\DeviceType; + +DeviceModels::$FEATURE_MODELS = [ + 'Amstrad Gamma' => [ 'Amstrad', 'E-m@iler Plus', DeviceType::DESKTOP ], + 'Benefon Q' => [ 'Benefon', 'Q' ], + 'EF71' => [ 'BenQ-Siemens', 'EF71' ], + 'Lightpipe' => [ 'Kyocera', 'E1100 Neo' ], + 'K612' => [ 'Kyocera', 'K612 Strobe' ], + 'EX115' => [ 'Motorola', 'Starling EX115' ], + 'EX118' => [ 'Motorola', 'MOTOKEY XT EX118' ], + 'EX119' => [ 'Motorola', 'Brea EX119' ], + 'EX128' => [ 'Motorola', 'Kingfisher EX128' ], + 'EX225' => [ 'Motorola', 'MOTOKEY Social EX225' ], + 'EX226' => [ 'Motorola', 'MOTOKEY Social EX226' ], + 'EX430' => [ 'Motorola', 'MotoGo EX430' ], + 'MOTOQA1' => [ 'Motorola', 'Karma QA1' ], + 'KC910i' => [ 'LG', 'KC910i Renoir' ], + 'KP500!' => [ 'LG', 'KP500 Cookie' ], + 'KP570!' => [ 'LG', 'KP570 Cookie' ], + 'LG-KU380' => [ 'LG', 'KU380' ], + 'LG-KU580' => [ 'LG', 'KU580 Hero' ], + 'LG-KU990' => [ 'LG', 'KU990 Viewty' ], + 'KU990i' => [ 'LG', 'KU990 Viewty' ], + 'GM360' => [ 'LG', 'GM360 Viewty Snap' ], + 'GR700' => [ 'LG', 'GR700 Vu Plus' ], + 'GS290' => [ 'LG', 'GS290 Cookie Fresh' ], + 'GS500' => [ 'LG', 'GS500 Cookie Plus' ], + 'GT500!' => [ 'LG', 'GT500 Puccini' ], + 'GT550' => [ 'LG', 'GT550 Encore' ], + 'COCOON' => [ 'O2', 'Cocoon' ], + 'P7000' => [ 'Pantech', 'Impact' ], + 'P9020' => [ 'Pantech', 'Pursuit' ], + 'P9050' => [ 'Pantech', 'Laser' ], + 'PM-8200' => [ 'Sanyo', 'PM-8200' ], + 'SCP-5300' => [ 'Sanyo', 'SCP-5300' ], + 'SCP-5500' => [ 'Sanyo', 'VM4500' ], + 'SCP-6600' => [ 'Sanyo', 'Katana' ], + 'PLS6600KJ' => [ 'Sanyo', 'Katana' ], + 'GT-B2710' => [ 'Samsung', 'Xcover 271' ], + 'GT-B3210' => [ 'Samsung', 'Corby TXT' ], + 'GT-B3313' => [ 'Samsung', 'Corby Mate' ], + 'GT-C3200' => [ 'Samsung', 'Monte Bar' ], + 'GT-C3222' => [ 'Samsung', 'Ch@t 322' ], + 'GT-C3322' => [ 'Samsung', 'GT-C3322 Duos' ], + 'GT-C3500' => [ 'Samsung', 'Ch@t 350' ], + 'GT-C5010!' => [ 'Samsung', 'C5010 Squash' ], + 'GT-E1282!' => [ 'Samsung', 'Guru' ], + 'GT-E2152' => [ 'Samsung', 'GT-E2152 Duos' ], + 'GT-E2220' => [ 'Samsung', 'Ch@t 220' ], + 'GT-E2222' => [ 'Samsung', 'Ch@t 222' ], + 'GT-E2202' => [ 'Samsung', 'Metro' ], + 'GT-E2250' => [ 'Samsung', 'Utica' ], + 'GT-E2252' => [ 'Samsung', 'Metro 2252' ], + 'GT-E3213' => [ 'Samsung', 'E3213 Hero' ], + 'GT-E3309I' => [ 'Samsung', 'E3309 Manhattan' ], + 'm3510c' => [ 'Samsung', 'M3510' ], + 'GT-M8910' => [ 'Samsung', 'M8910 Pixon12' ], + 'GT-S3332' => [ 'Samsung', 'Ch@t 333' ], + 'GT-S33(50|53)!' => [ 'Samsung', 'Ch@t 335' ], + 'GT-S35(70|72)!' => [ 'Samsung', 'Ch@t 357' ], + 'GT-S5229' => [ 'Samsung', 'Tocco Lite 2' ], + 'GT-S5270!' => [ 'Samsung', 'Ch@t 527' ], + 'GT-S5610!' => [ 'Samsung', 'Primo' ], + 'SCH-W169' => [ 'Samsung', 'W169 Duos' ], + 'SCH-W279' => [ 'Samsung', 'Primo Duos' ], + 'SGH-A667' => [ 'Samsung', 'A667 Evergreen' ], + 'SGH-A697' => [ 'Samsung', 'A697 Sunburst' ], + 'SGH-A877' => [ 'Samsung', 'A877 Impression' ], + 'SGH-A927' => [ 'Samsung', 'A927 Flight II' ], + 'SGH-A997' => [ 'Samsung', 'Rugby III' ], + 'SGH-D880' => [ 'Samsung', 'D880 Duos' ], + 'SGH-E250i' => [ 'Samsung', 'E250' ], + 'SGH-E250V' => [ 'Samsung', 'E250' ], + 'SGH-G600' => [ 'Samsung', 'G600' ], + 'SGH-J700i' => [ 'Samsung', 'J700' ], + 'SGH-J700V' => [ 'Samsung', 'J700' ], + 'SGH-M200' => [ 'Samsung', 'M200' ], + 'SGH-S150G' => [ 'Samsung', 'S150 TracFone' ], + 'SGH-S390G' => [ 'Samsung', 'S390 TracFone' ], + 'SGH-T189N' => [ 'Samsung', 'Freeform M'], + 'SGHX660V' => [ 'Samsung', 'X660' ], + 'SGH-Z107!' => [ 'Samsung', 'Z107' ], + 'SGH-Z130!' => [ 'Samsung', 'Z130' ], + 'SGH-Z500!' => [ 'Samsung', 'Z500' ], + 'SM-B313E' => [ 'Samsung', 'Metro 313' ], + 'SM-B350E' => [ 'Samsung', 'Metro 350' ], + 'SM-B360E' => [ 'Samsung', 'Metro 360' ], + 'SM-B780(A|W)!' => [ 'Samsung', 'Rugby 4' ], + 'S7350' => [ 'Samsung', 'S7350 Ultra S' ], + 'sam-r560' => [ 'Samsung', 'Messenger II R560' ], + 'Sendo Wap' => [ 'Sendo', 'Z100' ], + 'CK13[ai]?$!' => [ 'Sony Ericsson', 'txt' ], + 'CK15[ai]?$!' => [ 'Sony Ericsson', 'txt Pro' ], + 'F100[ai]?$!' => [ 'Sony Ericsson', 'Jalou' ], + 'J105[ai]?$!' => [ 'Sony Ericsson', 'Naite' ], + 'J108[ai]?$!' => [ 'Sony Ericsson', 'Cedar' ], + 'J10(i2?)?$!' => [ 'Sony Ericsson', 'Elm' ], + 'J20[ai]?$!' => [ 'Sony Ericsson', 'Hazel' ], + 'U100[ai]?$!' => [ 'Sony Ericsson', 'Yari' ], + 'U10[ai]?$!' => [ 'Sony Ericsson', 'Aino' ], + 'W100i?$!' => [ 'Sony Ericsson', 'Spiro' ], + 'W150i?$!' => [ 'Sony Ericsson', 'Yendo' ], + 'W20i?$!' => [ 'Sony Ericsson', 'Zylo' ], + 'WT13i$!' => [ 'Sony Ericsson', 'Mix Walkman' ], + 'X5i$!' => [ 'Sony Ericsson', 'Xperia Pureness X5' ], + 'tecnot36' => [ 'Tecno', 'T36' ], + 'Vodafone 575' => [ 'Vodafone', '575' ], + 'GT-I6410!' => [ 'Vodafone', '360 M1' ], + 'GT-I8320!' => [ 'Vodafone', '360 H1' ], + 'GT-I8330!' => [ 'Vodafone', '360 H2' ], + 'WIDETEL WCX150' => [ 'Widetel', 'WCX150' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-firefoxos.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-firefoxos.php new file mode 100644 index 0000000..bef1ab7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-firefoxos.php @@ -0,0 +1,43 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$FIREFOXOS_MODELS = [ + 'ALCATEL ONE TOUCH FIRE' => [ 'Alcatel', 'One Touch Fire' ], + 'ALCATEL ONE TOUCH 4012A' => [ 'Alcatel', 'One Touch Fire' ], + 'ALCATEL ONE TOUCH 4012X' => [ 'Alcatel', 'One Touch Fire' ], + 'ALCATELOneTouch4012A!' => [ 'Alcatel', 'One Touch Fire' ], + 'ALCATELOneTouch4012X!' => [ 'Alcatel', 'One Touch Fire' ], + 'OneTouch4019A' => [ 'Alcatel', 'One Touch Fire C' ], + 'ALCATELOneTouch4019A!' => [ 'Alcatel', 'One Touch Fire C' ], + 'ALCATELOneTouch4019X!' => [ 'Alcatel', 'One Touch Fire C' ], + 'ALCATELOneTouch4020D!' => [ 'Alcatel', 'One Touch Fire C' ], + 'ALCATELOneTouch4022!' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)' ], + 'ALCATELOneTouch4023!' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)' ], + 'ALCATELOneTouch6015X!' => [ 'Alcatel', 'One Touch Fire E' ], + 'HUAWEI Ascend Y300-F1' => [ 'Huawei', 'Ascend Y300 F1' ], + 'HUAWEIY300-F1' => [ 'Huawei', 'Ascend Y300 F1' ], + 'LG-D3(00|01)!' => [ 'LG', 'Fireweb' ], + 'LGL25' => [ 'LG', 'Fx0' ], + 'madai' => [ 'LG', 'Fx0' ], + 'Orange KLIF' => [ 'Orange', 'Kilf' ], + 'Orange KLIFD' => [ 'Orange', 'Kilf' ], + 'OPEN' => [ 'ZTE', 'Open' ], + 'ZTEOPEN' => [ 'ZTE', 'Open' ], + 'OpenC' => [ 'ZTE', 'Open C' ], + 'Open C' => [ 'ZTE', 'Open C' ], + 'OPENC2' => [ 'ZTE', 'Open C2' ], + 'OPEN2' => [ 'ZTE', 'Open II' ], + + 'ALCATEL4044[MNOTVW]!' => [ 'Alcatel', 'Go Flip' ], + 'ALCATEL4044C!' => [ 'Alcatel', 'QUICKFLIP' ], + '.LYF\/.F30C!' => [ 'Jio', 'JioPhone F30C' ], + '.LYF\/.F101K!' => [ 'Jio', 'JioPhone F101K' ], + 'LYF\/F30C!' => [ 'Jio', 'JioPhone F30C' ], + 'LYF\/F41T!' => [ 'Jio', 'JioPhone F41T' ], + 'LYF\/F50Y!' => [ 'Jio', 'JioPhone F50Y' ], + 'LYF\/F61F!' => [ 'Jio', 'JioPhone F61F' ], + 'LYF\/F81E!' => [ 'Jio', 'JioPhone F81E' ], + 'LYF\/F90M!' => [ 'Jio', 'JioPhone F90M' ], + 'LYF\/F101K!' => [ 'Jio', 'JioPhone F101K' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-ios.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-ios.php new file mode 100644 index 0000000..80bc6d5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-ios.php @@ -0,0 +1,103 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\DeviceType; + +DeviceModels::$IOS_MODELS = [ + + /* Generic names */ + 'iPhone' => [ 'Apple', 'iPhone', DeviceType::MOBILE ], + 'iPhone 3G' => [ 'Apple', 'iPhone 3G', DeviceType::MOBILE ], + 'iPhone 3GS' => [ 'Apple', 'iPhone 3GS', DeviceType::MOBILE ], + 'iPhone 4' => [ 'Apple', 'iPhone 4', DeviceType::MOBILE ], + 'iPhone 4S' => [ 'Apple', 'iPhone 4S', DeviceType::MOBILE ], + 'iPhone 5' => [ 'Apple', 'iPhone 5', DeviceType::MOBILE ], + 'iPhone 5c' => [ 'Apple', 'iPhone 5c', DeviceType::MOBILE ], + 'iPhone 5s' => [ 'Apple', 'iPhone 5s', DeviceType::MOBILE ], + 'iPhone 6' => [ 'Apple', 'iPhone 6', DeviceType::MOBILE ], + 'iPhone 6 Plus' => [ 'Apple', 'iPhone 6 Plus', DeviceType::MOBILE ], + 'iPod' => [ 'Apple', 'iPod touch', DeviceType::MEDIA ], + 'iPod touch' => [ 'Apple', 'iPod touch', DeviceType::MEDIA ], + 'iPad' => [ 'Apple', 'iPad', DeviceType::TABLET ], + + /* Offical gestalt names */ + 'iPhone1,1' => [ 'Apple', 'iPhone', DeviceType::MOBILE ], + 'iPhone1,2' => [ 'Apple', 'iPhone 3G', DeviceType::MOBILE ], + 'iPhone2,1' => [ 'Apple', 'iPhone 3GS', DeviceType::MOBILE ], + 'iPhone3,1' => [ 'Apple', 'iPhone 4', DeviceType::MOBILE ], + 'iPhone3,2' => [ 'Apple', 'iPhone 4', DeviceType::MOBILE ], + 'iPhone3,3' => [ 'Apple', 'iPhone 4', DeviceType::MOBILE ], + 'iPhone4,1' => [ 'Apple', 'iPhone 4S', DeviceType::MOBILE ], + 'iPhone5,1' => [ 'Apple', 'iPhone 5', DeviceType::MOBILE ], + 'iPhone5,2' => [ 'Apple', 'iPhone 5', DeviceType::MOBILE ], + 'iPhone5,3' => [ 'Apple', 'iPhone 5c', DeviceType::MOBILE ], + 'iPhone5,4' => [ 'Apple', 'iPhone 5c', DeviceType::MOBILE ], + 'iPhone6,1' => [ 'Apple', 'iPhone 5s', DeviceType::MOBILE ], + 'iPhone6,2' => [ 'Apple', 'iPhone 5s', DeviceType::MOBILE ], + 'iPhone7,1' => [ 'Apple', 'iPhone 6 Plus', DeviceType::MOBILE ], + 'iPhone7,2' => [ 'Apple', 'iPhone 6', DeviceType::MOBILE ], + 'iPhone8,1' => [ 'Apple', 'iPhone 6s', DeviceType::MOBILE ], + 'iPhone8,2' => [ 'Apple', 'iPhone 6s Plus', DeviceType::MOBILE ], + 'iPhone8,4' => [ 'Apple', 'iPhone SE', DeviceType::MOBILE ], + 'iPhone9,1' => [ 'Apple', 'iPhone 7', DeviceType::MOBILE ], + 'iPhone9,2' => [ 'Apple', 'iPhone 7 Plus', DeviceType::MOBILE ], + 'iPhone9,3' => [ 'Apple', 'iPhone 7', DeviceType::MOBILE ], + 'iPhone9,4' => [ 'Apple', 'iPhone 7 Plus', DeviceType::MOBILE ], + 'iPhone10,1' => [ 'Apple', 'iPhone 8', DeviceType::MOBILE ], + 'iPhone10,2' => [ 'Apple', 'iPhone 8 Plus', DeviceType::MOBILE ], + 'iPhone10,3' => [ 'Apple', 'iPhone X', DeviceType::MOBILE ], + 'iPhone10,4' => [ 'Apple', 'iPhone 8', DeviceType::MOBILE ], + 'iPhone10,5' => [ 'Apple', 'iPhone 8 Plus', DeviceType::MOBILE ], + 'iPhone10,6' => [ 'Apple', 'iPhone X', DeviceType::MOBILE ], + 'iPhone11,2' => [ 'Apple', 'iPhone XS', DeviceType::MOBILE ], + 'iPhone11,4' => [ 'Apple', 'iPhone XS Max', DeviceType::MOBILE ], + 'iPhone11,6' => [ 'Apple', 'iPhone XS Max', DeviceType::MOBILE ], + 'iPhone11,8' => [ 'Apple', 'iPhone XR', DeviceType::MOBILE ], + 'iPod1,1' => [ 'Apple', 'iPod touch', DeviceType::MEDIA ], + 'iPod2,1' => [ 'Apple', 'iPod touch (2nd gen)', DeviceType::MEDIA ], + 'iPod3,1' => [ 'Apple', 'iPod touch (3rd gen)', DeviceType::MEDIA ], + 'iPod4,1' => [ 'Apple', 'iPod touch (4th gen)', DeviceType::MEDIA ], + 'iPod5,1' => [ 'Apple', 'iPod touch (5th gen)', DeviceType::MEDIA ], + 'iPod7,1' => [ 'Apple', 'iPod touch (6th gen)', DeviceType::MEDIA ], + 'iPad1,1' => [ 'Apple', 'iPad', DeviceType::TABLET ], + 'iPad1,2' => [ 'Apple', 'iPad 2', DeviceType::TABLET ], + 'iPad2,1' => [ 'Apple', 'iPad 2', DeviceType::TABLET ], + 'iPad2,2' => [ 'Apple', 'iPad 2', DeviceType::TABLET ], + 'iPad2,3' => [ 'Apple', 'iPad 2', DeviceType::TABLET ], + 'iPad2,4' => [ 'Apple', 'iPad 2', DeviceType::TABLET ], + 'iPad2,5' => [ 'Apple', 'iPad mini', DeviceType::TABLET ], + 'iPad2,6' => [ 'Apple', 'iPad mini', DeviceType::TABLET ], + 'iPad2,7' => [ 'Apple', 'iPad mini', DeviceType::TABLET ], + 'iPad3,1' => [ 'Apple', 'iPad (3rd gen)', DeviceType::TABLET ], + 'iPad3,2' => [ 'Apple', 'iPad (3rd gen)', DeviceType::TABLET ], + 'iPad3,3' => [ 'Apple', 'iPad (3rd gen)', DeviceType::TABLET ], + 'iPad3,4' => [ 'Apple', 'iPad (4th gen)', DeviceType::TABLET ], + 'iPad3,5' => [ 'Apple', 'iPad (4th gen)', DeviceType::TABLET ], + 'iPad3,6' => [ 'Apple', 'iPad (4th gen)', DeviceType::TABLET ], + 'iPad4,1' => [ 'Apple', 'iPad Air', DeviceType::TABLET ], + 'iPad4,2' => [ 'Apple', 'iPad Air', DeviceType::TABLET ], + 'iPad4,3' => [ 'Apple', 'iPad Air', DeviceType::TABLET ], + 'iPad4,4' => [ 'Apple', 'iPad mini 2', DeviceType::TABLET ], + 'iPad4,5' => [ 'Apple', 'iPad mini 2', DeviceType::TABLET ], + 'iPad4,6' => [ 'Apple', 'iPad mini 2', DeviceType::TABLET ], + 'iPad4,7' => [ 'Apple', 'iPad mini 3', DeviceType::TABLET ], + 'iPad4,8' => [ 'Apple', 'iPad mini 3', DeviceType::TABLET ], + 'iPad4,9' => [ 'Apple', 'iPad mini 3', DeviceType::TABLET ], + 'iPad5,1' => [ 'Apple', 'iPad mini 4', DeviceType::TABLET ], + 'iPad5,2' => [ 'Apple', 'iPad mini 4', DeviceType::TABLET ], + 'iPad5,3' => [ 'Apple', 'iPad Air 2', DeviceType::TABLET ], + 'iPad5,4' => [ 'Apple', 'iPad Air 2', DeviceType::TABLET ], + 'iPad6,3' => [ 'Apple', 'iPad Pro (9.7″)', DeviceType::TABLET ], + 'iPad6,4' => [ 'Apple', 'iPad Pro (9.7″)', DeviceType::TABLET ], + 'iPad6,7' => [ 'Apple', 'iPad Pro (12.9″)', DeviceType::TABLET ], + 'iPad6,8' => [ 'Apple', 'iPad Pro (12.9″)', DeviceType::TABLET ], + 'iPad6,11' => [ 'Apple', 'iPad (5th gen)', DeviceType::TABLET ], + 'iPad6,12' => [ 'Apple', 'iPad (5th gen)', DeviceType::TABLET ], + 'iPad7,1' => [ 'Apple', 'iPad Pro (12.9″, 2nd gen)', DeviceType::TABLET ], + 'iPad7,2' => [ 'Apple', 'iPad Pro (12.9″, 2nd gen)', DeviceType::TABLET ], + 'iPad7,3' => [ 'Apple', 'iPad Pro (10.5″)', DeviceType::TABLET ], + 'iPad7,4' => [ 'Apple', 'iPad Pro (10.5″)', DeviceType::TABLET ], + 'iPad7,5' => [ 'Apple', 'iPad (9.7″, 6th gen)', DeviceType::TABLET ], + 'iPad7,6' => [ 'Apple', 'iPad (9.7″, 6th gen)', DeviceType::TABLET ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-kddi.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-kddi.php new file mode 100644 index 0000000..36c1853 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-kddi.php @@ -0,0 +1,353 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$KDDI_MODELS = [ + 'KC3Q' => [ 'iida', 'misora' ], // KYX02 by Kyocera + 'KC3S' => [ 'iida', 'PRISMOID' ], // KYX03 by Kyocera + 'KC3V' => [ 'iida', 'lotta' ], // KYX04 by Kyocera + 'ST22' => [ 'iida', 'INFOBAR' ], // A5307ST by Sanyo + 'ST33' => [ 'iida', 'INFOBAR 2' ], // W55SA by Sanyo + 'SN3K' => [ 'iida', 'G9' ], // SOX01 by Sony Ericsson + 'SN3T' => [ 'iida', 'G11' ], // SOX02 by Sony Ericsson + 'TS3Q' => [ 'iida', 'PLY' ], // TSX04 by Toshiba + 'TS3U' => [ 'iida', 'LIGHT POOL' ], // by Toshiba + 'TS3W' => [ 'iida', 'X-RAY' ], // by Toshiba + + 'CA11' => [ 'Casio', 'C303CA' ], + 'CA12' => [ 'Casio', 'C311CA' ], + 'CA13' => [ 'Casio', 'C409CA' ], + 'CA14' => [ 'Casio', 'C452CA' ], + 'CA21' => [ 'Casio', 'A3012CA' ], + 'CA22' => [ 'Casio', 'A5302CA' ], + 'CA23' => [ 'Casio', 'A5401CA' ], + 'CA24' => [ 'Casio', 'A5403CA' ], + 'CA25' => [ 'Casio', 'A5406CA' ], + 'CA26' => [ 'Casio', 'A5407CA' ], + 'CA27' => [ 'Casio', 'A5512CA' ], + 'CA28' => [ 'Casio', 'GzOne Type-R A5513CA' ], + 'CA31' => [ 'Casio', 'W21CA' ], + 'CA32' => [ 'Casio', 'W31CA' ], + 'CA33' => [ 'Casio', 'W41CA' ], + 'CA34' => [ 'Casio', 'W42CA' ], + 'CA35' => [ 'Casio', 'W43CA' ], + 'CA36' => [ 'Casio', 'E03CA' ], + 'CA37' => [ 'Casio', 'W51CA' ], + 'CA38' => [ 'Casio', 'W52CA' ], + 'CA39' => [ 'Casio', 'W53CA' ], + 'CA3A' => [ 'Casio', 'W61CA' ], + 'CA3B' => [ 'Casio', 'W62CA' ], + 'CA3C' => [ 'Casio', 'W63CA' ], + 'CA3D' => [ 'Casio', 'CA001' ], + 'CA3E' => [ 'Casio', 'CA002' ], + 'CA3F' => [ 'Casio', 'CA003' ], + 'CA3G' => [ 'Casio', 'CA004' ], + 'CA3H' => [ 'Casio', 'CA005' ], + 'CA3I' => [ 'Casio', 'GzOne Type-X CAY01' ], + 'CA3J' => [ 'Casio', 'CA006' ], + 'CA3K' => [ 'Casio', 'CA007' ], + 'DN01' => [ 'Denso', 'C202DE' ], + 'DN11' => [ 'Denso', 'C402DE' ], + 'ERK0' => [ 'Ericsson', 'R280' ], + 'FJ31' => [ 'Fujitsu', 'F001' ], + 'HI01' => [ 'Hitachi', 'C201H' ], + 'HI02' => [ 'Hitachi', 'C201H' ], + 'HI11' => [ 'Hitachi', 'C302H' ], + 'HI12' => [ 'Hitachi', 'C309H' ], + 'HI13' => [ 'Hitachi', 'C407H' ], + 'HI14' => [ 'Hitachi', 'C451H' ], + 'HI21' => [ 'Hitachi', 'C3001H' ], + 'HI23' => [ 'Hitachi', 'A5303H' ], + 'HI24' => [ 'Hitachi', 'A5303H II' ], + 'HI31' => [ 'Hitachi', 'W11H' ], + 'HI32' => [ 'Hitachi', 'W21H' ], + 'HI33' => [ 'Hitachi', 'W22H' ], + 'HI34' => [ 'Hitachi', 'PENCK W31H' ], + 'HI35' => [ 'Hitachi', 'W32H' ], + 'HI36' => [ 'Hitachi', 'W41H' ], + 'HI37' => [ 'Hitachi', 'W42H' ], + 'HI38' => [ 'Hitachi', 'W43H' ], + 'HI39' => [ 'Hitachi', 'W51H' ], + 'HI3A' => [ 'Hitachi', 'W52H' ], + 'HI3B' => [ 'Hitachi', 'W53H' ], + 'HI3C' => [ 'Hitachi', 'W61H' ], + 'HI3D' => [ 'Hitachi', 'W62H' ], + 'HI3E' => [ 'Hitachi', 'W63H' ], + 'HI3F' => [ 'Hitachi', 'H001' ], // HI001 + 'HI3G' => [ 'Hitachi', 'Mobile Hi-Vision CAM Wooo HIY01' ], + 'HI3H' => [ 'Hitachi', 'beskey HIY02' ], + 'KC11' => [ 'Kyocera', 'C307K' ], + 'KC12' => [ 'Kyocera', 'C313K' ], + 'KC13' => [ 'Kyocera', 'C414K' ], + 'KC14' => [ 'Kyocera', 'A1012K' ], + 'KC15' => [ 'Kyocera', 'A1013K' ], + 'KC21' => [ 'Kyocera', 'C3002K' ], + 'KC22' => [ 'Kyocera', 'A5305K' ], + 'KC23' => [ 'Kyocera', 'A1401K' ], + 'KC24' => [ 'Kyocera', 'A5502K' ], + 'KC25' => [ 'Kyocera', 'A5502K' ], + 'KC26' => [ 'Kyocera', 'A1403K' ], + 'KC27' => [ 'Kyocera', 'A5515K' ], + 'KC28' => [ 'Kyocera', 'A5521K' ], + 'KC29' => [ 'Kyocera', 'A5526K' ], + 'KC2A' => [ 'Kyocera', 'A5528K' ], + 'KC31' => [ 'Kyocera', 'W11K' ], + 'KC32' => [ 'Kyocera', 'W21K' ], + 'KC33' => [ 'Kyocera', 'W31K' ], + 'KC34' => [ 'Kyocera', 'W32K' ], + 'KC35' => [ 'Kyocera', 'W41K' ], + 'KC36' => [ 'Kyocera', 'W42K' ], + 'KC37' => [ 'Kyocera', 'W43K' ], + 'KC38' => [ 'Kyocera', 'W44K' ], + 'KC39' => [ 'Kyocera', 'W51K' ], + 'KC3A' => [ 'Kyocera', 'MEDIA SKIN W52K' ], + 'KC3B' => [ 'Kyocera', 'W53K/W64K' ], + 'KC3D' => [ 'Kyocera', 'W61K' ], + 'KC3E' => [ 'Kyocera', 'W44K II' ], + 'KC3G' => [ 'Kyocera', 'W62K' ], + 'KC3H' => [ 'Kyocera', 'W63K' ], + 'KC3I' => [ 'Kyocera', 'W65K' ], + 'KC3K' => [ 'Kyocera', 'W63K' ], + 'KC3M' => [ 'Kyocera', 'K001' ], // KY001 + 'KC3N' => [ 'Kyocera', 'NS01' ], // KYX01 + 'KC3O' => [ 'Kyocera', 'K002' ], // KY002 + 'KC3P' => [ 'Kyocera', 'K003' ], // KY003 + 'KC3R' => [ 'Kyocera', 'SA001' ], + 'KC3T' => [ 'Kyocera', 'E07K' ], + 'KC3U' => [ 'Kyocera', 'K004' ], // KY004 + 'KC3W' => [ 'Kyocera', 'mamorino' ], // KYY01 + 'KC3X' => [ 'Kyocera', 'SA002' ], + 'KC3Y' => [ 'Kyocera', 'K005' ], // KY005 + 'KC3Z' => [ 'Kyocera', 'K006' ], // KY006 + 'KC41' => [ 'Kyocera', 'K006' ], + 'KC42' => [ 'Kyocera', 'K007' ], // KY007 + 'KC43' => [ 'Kyocera', 'K008' ], // KY008 + 'KC44' => [ 'Kyocera', 'mamorino 2' ], // KYY02 + 'KC45' => [ 'Kyocera', 'K010' ], // KY010 + 'KC46' => [ 'Kyocera', 'K009' ], // KY009 + 'KC47' => [ 'Kyocera', 'Mi-Look' ], + 'KC48' => [ 'Kyocera', 'E10K' ], + 'KC4A' => [ 'Kyocera', 'K011' ], + 'KCC1' => [ 'Kyocera', 'D303K' ], + 'KCC2' => [ 'Kyocera', 'D304K' ], + 'KCI1' => [ 'Kyocera', '703G' ], + 'KCI2' => [ 'Kyocera', '702G' ], + 'KCT1' => [ 'Kyocera', 'TK01' ], + 'KCT2' => [ 'Kyocera', 'TK02' ], + 'KCT3' => [ 'Kyocera', 'TK02' ], + 'KCT4' => [ 'Kyocera', 'TK03' ], + 'KCT5' => [ 'Kyocera', 'TK04' ], + 'KCT6' => [ 'Kyocera', 'TK05' ], + 'KCT7' => [ 'Kyocera', 'TK11' ], + 'KCT8' => [ 'Kyocera', 'TK12' ], + 'KCT9' => [ 'Kyocera', 'TK21' ], + 'KCTA' => [ 'Kyocera', 'TK22' ], + 'KCTB' => [ 'Kyocera', 'TK23' ], + 'KCTC' => [ 'Kyocera', 'TK31' ], + 'MA11' => [ 'Panasonic', 'C308P' ], + 'MA12' => [ 'Panasonic', 'C308P' ], + 'MA13' => [ 'Panasonic', 'C408P' ], + 'MA21' => [ 'Panasonic', 'C3003P' ], + 'MA31' => [ 'Panasonic', 'W51P' ], + 'MA32' => [ 'Panasonic', 'W52P' ], + 'MA33' => [ 'Panasonic', 'W61P' ], + 'MA34' => [ 'Panasonic', 'W62P' ], + 'MA35' => [ 'Panasonic', 'P001' ], + 'MAC1' => [ 'Panasonic', 'D305P' ], + 'MAC2' => [ 'Panasonic', 'D305P' ], + 'MAI1' => [ 'Panasonic', '704G' ], + 'MAI2' => [ 'Panasonic', '704G' ], + 'MAT1' => [ 'Panasonic', 'TP01' ], + 'MAT2' => [ 'Panasonic', 'TP01' ], + 'MAT3' => [ 'Panasonic', 'TP11' ], + 'MIT1' => [ 'Mitsubishi', 'TD11' ], + 'PT21' => [ 'Pantech', 'A1405PT' ], + 'PT23' => [ 'Pantech', 'A1407PT' ], + 'PT33' => [ 'Pantech', 'W61PT' ], + 'PT34' => [ 'Pantech', 'W62PT' ], + 'PT35' => [ 'Pantech', 'NS02' ], + 'PT36' => [ 'Pantech', 'PT002' ], + 'SA21' => [ 'Sanyo', 'A3011SA' ], + 'SA22' => [ 'Sanyo', 'A3015SA' ], + 'SA24' => [ 'Sanyo', 'A1302SA' ], + 'SA25' => [ 'Sanyo', 'A1303SA' ], + 'SA26' => [ 'Sanyo', 'A5503SA' ], + 'SA27' => [ 'Sanyo', 'A5505SA' ], + 'SA28' => [ 'Sanyo', 'A1305SA' ], + 'SA29' => [ 'Sanyo', 'A5522SA' ], + 'SA2A' => [ 'Sanyo', 'A5527SA' ], + 'SA31' => [ 'Sanyo', 'W21SA' ], + 'SA32' => [ 'Sanyo', 'W22SA' ], + 'SA33' => [ 'Sanyo', 'W31SA' ], + 'SA34' => [ 'Sanyo', 'W32SA' ], + 'SA35' => [ 'Sanyo', 'W33SA' ], + 'SA36' => [ 'Sanyo', 'W41SA' ], + 'SA37' => [ 'Sanyo', 'E02SA' ], + 'SA38' => [ 'Sanyo', 'W43SA' ], + 'SA39' => [ 'Sanyo', 'W51SA' ], + 'SA3A' => [ 'Sanyo', 'W52SA' ], + 'SA3B' => [ 'Sanyo', 'W54SA' ], + 'SA3C' => [ 'Sanyo', 'W61SA' ], + 'SA3D' => [ 'Sanyo', 'W63SA' ], + 'SA3E' => [ 'Sanyo', 'W64SA' ], + 'SY12' => [ 'Sanyo', 'C401SA' ], + 'SY13' => [ 'Sanyo', 'C405SA' ], + 'SY14' => [ 'Sanyo', 'C412SA' ], + 'SY15' => [ 'Sanyo', 'C1001SA' ], + 'SYC1' => [ 'Sanyo', 'D301SA' ], + 'SYT1' => [ 'Sanyo', 'TS01' ], + 'SYT2' => [ 'Sanyo', 'TS02' ], + 'SYT3' => [ 'Sanyo', 'TS11' ], + 'SYT4' => [ 'Sanyo', 'TS31' ], + 'SH31' => [ 'Sharp', 'W41SH' ], + 'SH32' => [ 'Sharp', 'W51SH' ], + 'SH33' => [ 'Sharp', 'W52SH' ], + 'SH34' => [ 'Sharp', 'W61SH' ], + 'SH35' => [ 'Sharp', 'W62SH' ], + 'SH36' => [ 'Sharp', 'URBANO W63SH' ], + 'SH37' => [ 'Sharp', 'W64SH' ], + 'SH38' => [ 'Sharp', 'SH001' ], + 'SH39' => [ 'Sharp', 'E05SH' ], + 'SH3A' => [ 'Sharp', 'E06SH' ], + 'SH3B' => [ 'Sharp', 'SH002' ], + 'SH3C' => [ 'Sharp', 'Sportio water beat SHY01' ], + 'SH3D' => [ 'Sharp', 'SH003' ], + 'SH3E' => [ 'Sharp', 'SH004' ], + 'SH3F' => [ 'Sharp', 'SH005' ], + 'SH3G' => [ 'Sharp', 'SH006' ], + 'SH3H' => [ 'Sharp', 'SH007' ], + 'SH3I' => [ 'Sharp', 'SH008' ], + 'SH3J' => [ 'Sharp', 'SH009' ], + 'SH3K' => [ 'Sharp', 'SH010' ], + 'SH3L' => [ 'Sharp', 'SH011' ], + 'SN11' => [ 'Sony', 'C305S' ], + 'SN13' => [ 'Sony', 'C406S' ], + 'SN14' => [ 'Sony', 'C404S' ], + 'SN15' => [ 'Sony', 'C413S' ], + 'SN16' => [ 'Sony', 'C413S' ], + 'SN17' => [ 'Sony Ericsson', 'C1002S' ], + 'SN21' => [ 'Sony Ericsson', 'A3014S' ], + 'SN22' => [ 'Sony Ericsson', 'A1101S' ], + 'SN23' => [ 'Sony Ericsson', 'A1301S' ], + 'SN24' => [ 'Sony Ericsson', 'A5402S' ], + 'SN25' => [ 'Sony Ericsson', 'A5404S' ], + 'SN26' => [ 'Sony Ericsson', 'A1402S' ], + 'SN27' => [ 'Sony Ericsson', 'A1402S II' ], + 'SN28' => [ 'Sony Ericsson', 'A1402S II' ], + 'SN29' => [ 'Sony Ericsson', 'A1404S' ], + 'SN31' => [ 'Sony Ericsson', 'W21S' ], + 'SN32' => [ 'Sony Ericsson', 'W31S' ], + 'SN33' => [ 'Sony Ericsson', 'W32S' ], + 'SN34' => [ 'Sony Ericsson', 'W41S' ], + 'SN35' => [ 'Sony Ericsson', 'EZ FeliCa W32S' ], + 'SN36' => [ 'Sony Ericsson', 'W42S' ], + 'SN37' => [ 'Sony Ericsson', 'W43S' ], + 'SN38' => [ 'Sony Ericsson', 'W44S' ], + 'SN39' => [ 'Sony Ericsson', 'W51S' ], + 'SN3A' => [ 'Sony Ericsson', 'W52S' ], + 'SN3B' => [ 'Sony Ericsson', 'W53S' ], + 'SN3C' => [ 'Sony Ericsson', 'W54S' ], + 'SN3D' => [ 'Sony Ericsson', 'W61S' ], + 'SN3E' => [ 'Sony Ericsson', 'W62S' ], + 'SN3F' => [ 'Sony Ericsson', 're W63S' ], + 'SN3G' => [ 'Sony Ericsson', 'W64S' ], + 'SN3H' => [ 'Sony Ericsson', 'Xmini W65S' ], + 'SN3I' => [ 'Sony Ericsson', 'Premier3 SOY01' ], + 'SN3J' => [ 'Sony Ericsson', 'S001' ], + 'SN3L' => [ 'Sony Ericsson', 'BRAVIA Phone U1 SOY02' ], + 'SN3M' => [ 'Sony Ericsson', 'S002' ], + 'SN3N' => [ 'Sony Ericsson', 'URBANO BARONE SOY03' ], + 'SN3O' => [ 'Sony Ericsson', 'S003' ], + 'SN3P' => [ 'Sony Ericsson', 'S004' ], + 'SN3Q' => [ 'Sony Ericsson', 'S005' ], + 'SN3R' => [ 'Sony Ericsson', 'URBANO MOND SOY04' ], + 'SN3S' => [ 'Sony Ericsson', 'S006' ], + 'SN3U' => [ 'Sony Ericsson', 'S007' ], + 'SN3V' => [ 'Sony Ericsson', 'URBANO AFFARE SOY05' ], + 'ST11' => [ 'Sanyo', 'C403ST' ], + 'ST12' => [ 'Sanyo', 'C411ST' ], + 'ST13' => [ 'Sanyo', 'A1011ST' ], + 'ST14' => [ 'Sanyo', 'A1014ST' ], + 'ST21' => [ 'Sanyo', 'A5306ST' ], + 'ST23' => [ 'Sanyo', 'A5405SA' ], + 'ST24' => [ 'Sanyo', 'A5507SA' ], + 'ST25' => [ 'Sanyo', 'talby A5508SA' ], + 'ST26' => [ 'Sanyo', 'Sweets A5510SA' ], + 'ST27' => [ 'Sanyo', 'A5514SA' ], + 'ST28' => [ 'Sanyo', 'A5518SA' ], + 'ST29' => [ 'Sanyo', 'Sweets pure A5519SA' ], + 'ST2A' => [ 'Sanyo', 'A5520SA' ], + 'ST2C' => [ 'Sanyo', 'Sweets cute A5524SA' ], + 'ST2D' => [ 'Sanyo', 'A5525SA' ], + 'ST31' => [ 'Sanyo', 'W42SA' ], + 'ST32' => [ 'Sanyo', 'W53SA' ], + 'ST34' => [ 'Sanyo', 'W62SA' ], + 'SY01' => [ 'Sanyo', 'SCP-4000' ], + 'SY02' => [ 'Sanyo', 'SCP-4500' ], + 'SY03' => [ 'Sanyo', 'SCP-5000' ], + 'SY11' => [ 'Sanyo', 'C304SA' ], + 'SY12' => [ 'Sanyo', 'C401SA' ], + 'SY13' => [ 'Sanyo', 'C405SA' ], + 'SY14' => [ 'Sanyo', 'C412SA' ], + 'SY15' => [ 'Sanyo', 'C1001SA' ], + 'TS01' => [ 'Toshiba', 'IS02' ], + 'TS11' => [ 'Toshiba', 'C301T' ], + 'TS12' => [ 'Toshiba', 'C310T' ], + 'TS13' => [ 'Toshiba', 'C410T' ], + 'TS14' => [ 'Toshiba', 'C415T' ], + 'TS21' => [ 'Toshiba', 'C5001T' ], + 'TS22' => [ 'Toshiba', 'A3013T' ], + 'TS23' => [ 'Toshiba', 'A5301T' ], + 'TS24' => [ 'Toshiba', 'A5304T' ], + 'TS25' => [ 'Toshiba', 'A1304T' ], + 'TS26' => [ 'Toshiba', 'A5501T' ], + 'TS27' => [ 'Toshiba', 'A5504T' ], + 'TS28' => [ 'Toshiba', 'A5506T' ], + 'TS29' => [ 'Toshiba', 'A5509T' ], + 'TS2A' => [ 'Toshiba', 'A5511T' ], + 'TS2B' => [ 'Toshiba', 'A5516T' ], + 'TS2C' => [ 'Toshiba', 'A5517T' ], + 'TS2D' => [ 'Toshiba', 'A5523T' ], + 'TS2E' => [ 'Toshiba', 'A5529T' ], + 'TS31' => [ 'Toshiba', 'W21T' ], + 'TS32' => [ 'Toshiba', 'W31T' ], + 'TS33' => [ 'Toshiba', 'W32T' ], + 'TS34' => [ 'Toshiba', 'W41T' ], + 'TS35' => [ 'Toshiba', 'neon W42T' ], + 'TS36' => [ 'Toshiba', 'W43T' ], + 'TS37' => [ 'Toshiba', 'W44T' ], + 'TS38' => [ 'Toshiba', 'W45T' ], + 'TS39' => [ 'Toshiba', 'DRAPE W46T' ], + 'TS3A' => [ 'Toshiba', 'W47T' ], + 'TS3B' => [ 'Toshiba', 'W51T' ], + 'TS3C' => [ 'Toshiba', 'W52T' ], + 'TS3D' => [ 'Toshiba', 'W53T' ], + 'TS3E' => [ 'Toshiba', 'W54T' ], + 'TS3G' => [ 'Toshiba', 'W55T' ], + 'TS3H' => [ 'Toshiba', 'W56T' ], + 'TS3I' => [ 'Toshiba', 'W61T' ], + 'TS3J' => [ 'Toshiba', 'W62T' ], + 'TS3K' => [ 'Toshiba', 'Sportio W63T' ], + 'TS3L' => [ 'Toshiba', 'W64T' ], + 'TS3M' => [ 'Toshiba', 'W65T' ], + 'TS3N' => [ 'Toshiba', 'T001' ], + 'TS3O' => [ 'Toshiba', 'biblio TSY01' ], + 'TS3P' => [ 'Toshiba', 'T002' ], + 'TS3R' => [ 'Toshiba', 'T003' ], + 'TS3S' => [ 'Toshiba', 'T004' ], + 'TS3T' => [ 'Toshiba', 'E08T' ], + 'TS3V' => [ 'Toshiba', 'T005' ], + 'TS3X' => [ 'Toshiba', 'T006' ], + 'TS3Y' => [ 'Toshiba', 'T008' ], + 'TS3Z' => [ 'Toshiba', 'T007' ], + 'TS41' => [ 'Toshiba', 'E09F' ], + 'TSC1' => [ 'Toshiba', 'D302T' ], + 'TSI1' => [ 'Toshiba', '701G' ], + 'TST1' => [ 'Toshiba', 'TT01' ], + 'TST2' => [ 'Toshiba', 'TT02' ], + 'TST3' => [ 'Toshiba', 'TT03' ], + 'TST4' => [ 'Toshiba', 'TT11' ], + 'TST5' => [ 'Toshiba', 'TT21' ], + 'TST6' => [ 'Toshiba', 'TT22' ], + 'TST7' => [ 'Toshiba', 'TT31' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-palmos.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-palmos.php new file mode 100644 index 0000000..83ae002 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-palmos.php @@ -0,0 +1,94 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\DeviceType; +use WhichBrowser\Constants\DeviceSubType; + +DeviceModels::$PALMOS_MODELS = [ + 'Palm-D061' => [ 'Palm', 'Centro 685', DeviceType::MOBILE ], + 'Palm-D062' => [ 'Palm', 'Centro 690', DeviceType::MOBILE ], + 'Palm-TunX' => [ 'Palm', 'LifeDrive', DeviceType::PDA ], + 'Palm-stuj' => [ 'Palm', 'm125', DeviceType::PDA ], + 'Palm-hbbs' => [ 'Palm', 'm130', DeviceType::PDA ], + 'Palm-trnd' => [ 'Palm', 'm500', DeviceType::PDA ], + 'Palm-ecty' => [ 'Palm', 'm505', DeviceType::PDA ], + 'Palm-lith' => [ 'Palm', 'm515', DeviceType::PDA ], + 'Palm-sky1' => [ 'Palm', 'i705', DeviceType::PDA ], + 'hspr-H101' => [ 'Palm', 'Treo 600', DeviceType::MOBILE ], + 'hspr-H102' => [ 'Palm', 'Treo 650', DeviceType::MOBILE ], + 'Palm-D053' => [ 'Palm', 'Treo 680', DeviceType::MOBILE ], + 'Palm-D052' => [ 'Palm', 'Treo 700', DeviceType::MOBILE ], + 'Palm-D060' => [ 'Palm', 'Treo 755', DeviceType::MOBILE ], + 'Palm-MT64' => [ 'Palm', 'Tungsten C', DeviceType::PDA ], + 'Palm-Cct1' => [ 'Palm', 'Tungsten E', DeviceType::PDA ], + 'Palm-Zir4' => [ 'Palm', 'Tungsten E2', DeviceType::PDA ], + 'Palm-Frg1' => [ 'Palm', 'Tungsten T', DeviceType::PDA ], + 'Palm-Frg2' => [ 'Palm', 'Tungsten T2', DeviceType::PDA ], + 'Palm-Arz1' => [ 'Palm', 'Tungsten T3', DeviceType::PDA ], + 'Palm-TnT5' => [ 'Palm', 'Tungsten T5', DeviceType::PDA ], + 'Palm-atc1' => [ 'Palm', 'Tungsten W', DeviceType::PDA ], + 'Palm-D050' => [ 'Palm', 'TX', DeviceType::PDA ], + 'Palm-Cubs' => [ 'Palm', 'Zire', DeviceType::PDA ], + 'Palm-Zi21' => [ 'Palm', 'Zire 21', DeviceType::PDA ], + 'Palm-D051' => [ 'Palm', 'Zire 22', DeviceType::PDA ], + 'Palm-Zi22' => [ 'Palm', 'Zire 31', DeviceType::PDA ], + 'Palm-Zpth' => [ 'Palm', 'Zire 71', DeviceType::PDA ], + 'Palm-Zi72' => [ 'Palm', 'Zire 72', DeviceType::PDA ], + + 'sony-ystn' => [ 'Sony', 'CLIÉ PEG-N600C', DeviceType::PDA ], + 'sony-ysmt' => [ 'Sony', 'CLIÉ PEG-N700C', DeviceType::PDA ], + 'sony-ysm2' => [ 'Sony', 'CLIÉ PEG-N750C', DeviceType::PDA ], + 'sony-nsca' => [ 'Sony', 'CLIÉ PEG-S320', DeviceType::PDA ], + 'sony-nsc2' => [ 'Sony', 'CLIÉ PEG-S360', DeviceType::PDA ], + 'sony-vnce' => [ 'Sony', 'CLIÉ PEG-T400', DeviceType::PDA ], + 'sony-mdna' => [ 'Sony', 'CLIÉ PEG-T600C', DeviceType::PDA ], + 'sony-npls' => [ 'Sony', 'CLIÉ PEG-T650C', DeviceType::PDA ], + 'sony-rdwd' => [ 'Sony', 'CLIÉ PEG-NR70', DeviceType::PDA ], + 'sony-crdb' => [ 'Sony', 'CLIÉ PEG-NX60', DeviceType::PDA ], + 'sony-tldo' => [ 'Sony', 'CLIÉ PEG-NX73V', DeviceType::PDA ], + 'sony-mdrd' => [ 'Sony', 'CLIÉ PEG-NX80V', DeviceType::PDA ], + 'sony-grnd' => [ 'Sony', 'CLIÉ PEG-NZ90', DeviceType::PDA ], + 'sony-frta' => [ 'Sony', 'CLIÉ PEG-SL10', DeviceType::PDA ], + 'sony-cocs' => [ 'Sony', 'CLIÉ PEG-SL20', DeviceType::PDA ], + 'sony-glps' => [ 'Sony', 'CLIÉ PEG-SJ22', DeviceType::PDA ], + 'sony-mcnd' => [ 'Sony', 'CLIÉ PEG-SJ33', DeviceType::PDA ], + 'sony-vrna' => [ 'Sony', 'CLIÉ PEG-TG50', DeviceType::PDA ], + 'sony-atom' => [ 'Sony', 'CLIÉ PEG-TH55', DeviceType::PDA ], + 'sony-goha' => [ 'Sony', 'CLIÉ PEG-TJ25', DeviceType::PDA ], + 'sony-leia' => [ 'Sony', 'CLIÉ PEG-TJ27', DeviceType::PDA ], + 'sony-hwai' => [ 'Sony', 'CLIÉ PEG-TJ30', DeviceType::PDA ], + 'sony-goku' => [ 'Sony', 'CLIÉ PEG-TJ35', DeviceType::PDA ], + 'sony-luke' => [ 'Sony', 'CLIÉ PEG-TJ37', DeviceType::PDA ], + 'sony-amno' => [ 'Sony', 'CLIÉ PEG-UX40', DeviceType::PDA ], + 'sony-prmr' => [ 'Sony', 'CLIÉ PEG-UX50', DeviceType::PDA ], + 'sony-ancy' => [ 'Sony', 'CLIÉ PEG-VZ90', DeviceType::PDA ], + + 'smsn-phix' => [ 'Samsung', 'SPH-i300', DeviceType::MOBILE ], + 'smsn-Phx2' => [ 'Samsung', 'SPH-i330', DeviceType::MOBILE ], + 'smsn-blch' => [ 'Samsung', 'SPH-i500', DeviceType::MOBILE ], + 'smsn-BLFM' => [ 'Samsung', 'SPH-i530', DeviceType::MOBILE ], + 'smsn-glxy' => [ 'Samsung', 'SPH-i550', DeviceType::MOBILE ], + + 'grmn-3200' => [ 'Garmin', 'iQue 3200', DeviceType::GPS ], + 'grmn-3600' => [ 'Garmin', 'iQue 3600', DeviceType::GPS ], + 'grmn-3700' => [ 'Garmin', 'iQue 3600a', DeviceType::GPS ], + + 'trgp-trg1' => [ 'HandEra', 'TRG Pro', DeviceType::PDA ], + 'trgp-trg2' => [ 'HandEra', '330', DeviceType::PDA ], + + 'qcom-qc20' => [ 'Kyocera', 'QCP-6035', DeviceType::MOBILE ], + 'kwc.-7135' => [ 'Kyocera', 'QCP-7135', DeviceType::MOBILE ], + + 'Tpwv-Rdog' => [ 'Tapwave', 'Zodiac', [ DeviceType::GAMING, DeviceSubType::PORTABLE ] ], + + 'gsRl-zicn' => [ 'Group Sense', 'Xplore G18', DeviceType::MOBILE ], + 'gsRl-zcn2' => [ 'Group Sense', 'Xplore M28', DeviceType::MOBILE ], + 'gsRl-zcn5' => [ 'Group Sense', 'Xplore M68', DeviceType::MOBILE ], + + 'acer-momo' => [ 'Acer', 's10', DeviceType::PDA ], + 'acer-coco' => [ 'Acer', 's50', DeviceType::PDA ], + + 'Acea-MZ01' => [ 'Aceeca', 'Meazura MEZ1000', DeviceType::PDA ], + 'Acea-PD01' => [ 'Aceeca', 'PDA32', DeviceType::PDA ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s30plus.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s30plus.php new file mode 100644 index 0000000..cf16f74 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s30plus.php @@ -0,0 +1,13 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\Flag; + +DeviceModels::$S30PLUS_MODELS = [ + '215' => [ 'Nokia', '215' ], + '220' => [ 'Nokia', '220' ], + '222' => [ 'Nokia', '222' ], + '225' => [ 'Nokia', '225' ], + '230' => [ 'Nokia', '230' ] +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s40.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s40.php new file mode 100644 index 0000000..b262981 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-s40.php @@ -0,0 +1,135 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$S40_MODELS = [ + 'C1-01!' => [ 'Nokia', 'C1-01' ], + 'C1-02!' => [ 'Nokia', 'C1-02' ], + 'C1-03!' => [ 'Nokia', 'C1-03' ], + 'C2-00!' => [ 'Nokia', 'C2-00' ], + 'C2-01!' => [ 'Nokia', 'C2-01' ], + 'C2-02!' => [ 'Nokia', 'C2-02' ], + 'C2-03!' => [ 'Nokia', 'C2-03' ], + 'C2-05!' => [ 'Nokia', 'C2-05' ], + 'C2-06!' => [ 'Nokia', 'C2-06' ], + 'C3-00!' => [ 'Nokia', 'C3-00' ], + 'C3-01!' => [ 'Nokia', 'C3-01' ], + 'X2-00!' => [ 'Nokia', 'X2-00' ], + 'X2-01!' => [ 'Nokia', 'X2-01' ], + 'X2-02!' => [ 'Nokia', 'X2-02' ], + 'X2-03!' => [ 'Nokia', 'X2-03' ], + 'X2-05!' => [ 'Nokia', 'X2-05' ], + 'X3-00!' => [ 'Nokia', 'X3-00' ], + 'X3-02!' => [ 'Nokia', 'X3-02' ], + '109' => [ 'Nokia', '109' ], + '110' => [ 'Nokia', '110' ], + '111' => [ 'Nokia', '111' ], + '111.1' => [ 'Nokia', '111' ], + '112' => [ 'Nokia', '112' ], + '114' => [ 'Nokia', '114' ], + '200' => [ 'Nokia', 'Asha 200' ], + '201' => [ 'Nokia', 'Asha 201' ], + '202' => [ 'Nokia', 'Asha 202' ], + '203' => [ 'Nokia', 'Asha 203' ], + '205' => [ 'Nokia', 'Asha 205' ], + '205.1' => [ 'Nokia', 'Asha 205' ], + '205.3' => [ 'Nokia', 'Asha 205' ], + '206' => [ 'Nokia', 'Asha 206' ], + '206.1' => [ 'Nokia', 'Asha 206' ], + '208' => [ 'Nokia', '208' ], + '208.1' => [ 'Nokia', '208' ], + '208.2' => [ 'Nokia', '208' ], + '208.3' => [ 'Nokia', '208' ], + '208.4' => [ 'Nokia', '208' ], + '210' => [ 'Nokia', 'Asha 210' ], + '210.2' => [ 'Nokia', 'Asha 210' ], + '210.3' => [ 'Nokia', 'Asha 210' ], + '210.4' => [ 'Nokia', 'Asha 210' ], + '210.5' => [ 'Nokia', 'Asha 210' ], + '300' => [ 'Nokia', 'Asha 300' ], + '301' => [ 'Nokia', '301' ], + '301.1' => [ 'Nokia', '301' ], + '302' => [ 'Nokia', 'Asha 302' ], + '303' => [ 'Nokia', 'Asha 303' ], + '305' => [ 'Nokia', 'Asha 305' ], + '306' => [ 'Nokia', 'Asha 306' ], + '308' => [ 'Nokia', 'Asha 308' ], + '309' => [ 'Nokia', 'Asha 309' ], + '310' => [ 'Nokia', 'Asha 310' ], + '311' => [ 'Nokia', 'Asha 311' ], + '515' => [ 'Nokia', '515' ], + '515.2' => [ 'Nokia', '515' ], + '1682c' => [ 'Nokia', '1682 classic' ], + '2055' => [ 'Nokia', 'Asha 2055' ], + '2060' => [ 'Nokia', '2060' ], // Same as Asha 206 + '2220s!' => [ 'Nokia', '2220 slide' ], + '2320c!' => [ 'Nokia', '2320 classic' ], + '2322c!' => [ 'Nokia', '2322 classic' ], + '2323c!' => [ 'Nokia', '2323 classic' ], + '2330c!' => [ 'Nokia', '2330 classic' ], + '2600c!' => [ 'Nokia', '2600 classic' ], + '2680s!' => [ 'Nokia', '2680 slide' ], + '2690' => [ 'Nokia', '2690' ], + '2692' => [ 'Nokia', '2692' ], + '2700c!' => [ 'Nokia', '2700 classic' ], + '2710c' => [ 'Nokia', '2710' ], + '2710c-2' => [ 'Nokia', '2710' ], + '2720a!' => [ 'Nokia', '2720 fold' ], + '2730c!' => [ 'Nokia', '2730 classic' ], + '3020' => [ 'Nokia', '3020' ], + '3109c' => [ 'Nokia', '3109 classic' ], + '3110c' => [ 'Nokia', '3110 Evolve' ], + '3120c' => [ 'Nokia', '3120 classic' ], + '3120classic' => [ 'Nokia', '3120 classic' ], + '3208c' => [ 'Nokia', '3208 classic' ], + '3500c' => [ 'Nokia', '3500 classic' ], + '3555b' => [ 'Nokia', '3555' ], + '3600s' => [ 'Nokia', '3600 slide' ], + '3610a' => [ 'Nokia', '3610 fold' ], + '3710fold' => [ 'Nokia', '3710 fold' ], + '3720c' => [ 'Nokia', '3720 classic' ], + '5000!' => [ 'Nokia', '5000' ], + '5130!' => [ 'Nokia', '5130 XpressMusic' ], + '5130c!' => [ 'Nokia', '5130 classic' ], + '5132' => [ 'Nokia', '5132 XpressMusic' ], + '5200!' => [ 'Nokia', '5200' ], + '5220!' => [ 'Nokia', '5220 XpressMusic' ], + '5300!' => [ 'Nokia', '5300 XpressMusic' ], + '5310!' => [ 'Nokia', '5310 XpressMusic' ], + '5330' => [ 'Nokia', '5330 Mobile TV Edition' ], + '5330-1d' => [ 'Nokia', '5330 Mobile TV Edition' ], + '5610d!' => [ 'Nokia', '5610 XpressMusic' ], + '6070!' => [ 'Nokia', '6070' ], + '6208c' => [ 'Nokia', '6208 classic' ], + '6212c' => [ 'Nokia', '6212 classic' ], + '6260s!' => [ 'Nokia', '6260 slide' ], + '6230i!' => [ 'Nokia', '6230i' ], + '6233' => [ 'Nokia', '6233' ], + '6234' => [ 'Nokia', '6234' ], + '6263!' => [ 'Nokia', '6263' ], + '6280' => [ 'Nokia', '6280' ], + '6300' => [ 'Nokia', '6300' ], + '6300i' => [ 'Nokia', '6300i' ], + '6301' => [ 'Nokia', '6301' ], + '6303c' => [ 'Nokia', '6303 classic' ], + '6303classic' => [ 'Nokia', '6303 classic' ], + '6303iclassic' => [ 'Nokia', '6303i classic' ], + '6303ci' => [ 'Nokia', '6303i classic' ], + '6350' => [ 'Nokia', '6350' ], + '6500s!' => [ 'Nokia', '6500 slide' ], + '6600f!' => [ 'Nokia', '6600 fold' ], + '6600s!' => [ 'Nokia', '6600 slide' ], + '6600i!' => [ 'Nokia', '6600i slide' ], + '6700c!' => [ 'Nokia', '6700 classic' ], + '6750c' => [ 'Nokia', '6750 Mural' ], + '7070!' => [ 'Nokia', '7070 Prism' ], + '7100s!' => [ 'Nokia', '7100 Supernova' ], + '7210s!' => [ 'Nokia', '7210 Supernova' ], + '7210Supernova!' => [ 'Nokia', '7210 Supernova' ], + '7230!' => [ 'Nokia', '7230' ], + '7310c!' => [ 'Nokia', '7310 Supernova' ], + '7500' => [ 'Nokia', '7500 Prism' ], + '7510Supernova!' => [ 'Nokia', '7510 Supernova' ], + '7610Supernova!' => [ 'Nokia', '7610 Supernova' ], + '8800!' => [ 'Nokia', '8800 Arte' ] +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-symbian.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-symbian.php new file mode 100644 index 0000000..a47c12a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-symbian.php @@ -0,0 +1,182 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\Flag; + +DeviceModels::$SYMBIAN_MODELS = [ + 'BenQ P30' => [ 'BenQ', 'P30', 'flag' => Flag::UIQ ], + 'BenQ P31' => [ 'BenQ', 'P31', 'flag' => Flag::UIQ ], + 'RIZR-Z8' => [ 'Motorola', 'RIZR Z8', 'flag' => Flag::UIQ ], + 'RIZR-Z10' => [ 'Motorola', 'RIZR Z10', 'flag' => Flag::UIQ ], + 'A920' => [ 'Motorola', 'A920', 'flag' => Flag::UIQ ], + 'A925' => [ 'Motorola', 'A925', 'flag' => Flag::UIQ ], + 'A1000' => [ 'Motorola', 'A1000', 'flag' => Flag::UIQ ], + 'M1000' => [ 'Motorola', 'M1000', 'flag' => Flag::UIQ, 'carrier' => 'DoCoMo' ], + 'G700' => [ 'Sony Ericsson', 'G700', 'flag' => Flag::UIQ ], + 'G900' => [ 'Sony Ericsson', 'G900', 'flag' => Flag::UIQ ], + 'M600i' => [ 'Sony Ericsson', 'M600', 'flag' => Flag::UIQ ], + 'P910i' => [ 'Sony Ericsson', 'P910', 'flag' => Flag::UIQ ], + 'P990i' => [ 'Sony Ericsson', 'P990', 'flag' => Flag::UIQ ], + 'P1i' => [ 'Sony Ericsson', 'P1', 'flag' => Flag::UIQ ], + 'W950i' => [ 'Sony Ericsson', 'W950', 'flag' => Flag::UIQ ], + 'W960i' => [ 'Sony Ericsson', 'W960', 'flag' => Flag::UIQ ], + + 'LG KS10' => [ 'LG', 'KS10 Joy', 'flag' => Flag::S60 ], + 'LGKT610' => [ 'LG', 'KT610', 'flag' => Flag::S60 ], + 'LGKT615' => [ 'LG', 'KT615', 'flag' => Flag::S60 ], + 'C5-00!' => [ 'Nokia', 'C5-00', 'flag' => Flag::S60 ], + 'C5-01' => [ 'Nokia', 'C5-01', 'flag' => Flag::S60 ], + 'C5-03!' => [ 'Nokia', 'C5-03', 'flag' => Flag::S60 ], + 'C5-04' => [ 'Nokia', 'C5-04', 'flag' => Flag::S60 ], + 'C5-05' => [ 'Nokia', 'C5-05', 'flag' => Flag::S60 ], + 'C5-06' => [ 'Nokia', 'C5-06', 'flag' => Flag::S60 ], + 'C6-00!' => [ 'Nokia', 'C6-00', 'flag' => Flag::S60 ], + 'C6-01!' => [ 'Nokia', 'C6-01', 'flag' => Flag::S60 ], + 'C7-00!' => [ 'Nokia', 'C7-00', 'flag' => Flag::S60 ], + 'E5-00!' => [ 'Nokia', 'E5-00', 'flag' => Flag::S60 ], + 'E6' => [ 'Nokia', 'E6-00', 'flag' => Flag::S60 ], + 'E6-00' => [ 'Nokia', 'E6-00', 'flag' => Flag::S60 ], + 'E7-00' => [ 'Nokia', 'E7-00', 'flag' => Flag::S60 ], + 'N8-00' => [ 'Nokia', 'N8-00', 'flag' => Flag::S60 ], + 'T7-00' => [ 'Nokia', 'T7-00', 'flag' => Flag::S60 ], + 'X5-00' => [ 'Nokia', 'X5-00', 'flag' => Flag::S60 ], + 'X5-01' => [ 'Nokia', 'X5-01', 'flag' => Flag::S60 ], + 'X6-00!' => [ 'Nokia', 'X6-00', 'flag' => Flag::S60 ], + 'X7-00!' => [ 'Nokia', 'X7-00', 'flag' => Flag::S60 ], + 'N-Gage' => [ 'Nokia', 'N-Gage', 'flag' => Flag::S60 ], + 'N-GageQD' => [ 'Nokia', 'N-Gage QD', 'flag' => Flag::S60 ], + 'E50(-[1-9])?$!' => [ 'Nokia', 'E50', 'flag' => Flag::S60 ], + 'E51(-[1-9])?$!' => [ 'Nokia', 'E51', 'flag' => Flag::S60 ], + 'E52(-[1-9])?$!' => [ 'Nokia', 'E52', 'flag' => Flag::S60 ], + 'E55(-[1-9])?$!' => [ 'Nokia', 'E55', 'flag' => Flag::S60 ], + 'E60(-[1-9])?$!' => [ 'Nokia', 'E60', 'flag' => Flag::S60 ], + 'E61i!' => [ 'Nokia', 'E61i', 'flag' => Flag::S60 ], + 'E61(-[1-9])?$!' => [ 'Nokia', 'E61', 'flag' => Flag::S60 ], + 'E62(-[1-9])?$!' => [ 'Nokia', 'E62', 'flag' => Flag::S60 ], + 'E63(-[1-9])?$!' => [ 'Nokia', 'E63', 'flag' => Flag::S60 ], + 'E65(-[1-9])?$!' => [ 'Nokia', 'E65', 'flag' => Flag::S60 ], + 'E66(-[1-9])?$!' => [ 'Nokia', 'E66', 'flag' => Flag::S60 ], + 'E70(-[1-9])?$!' => [ 'Nokia', 'E70', 'flag' => Flag::S60 ], + 'E71x' => [ 'Nokia', 'E71x', 'flag' => Flag::S60 ], + 'E71(-[1-9])?$!' => [ 'Nokia', 'E71', 'flag' => Flag::S60 ], + 'E72(-[1-9])?$!' => [ 'Nokia', 'E72', 'flag' => Flag::S60 ], + 'E73(-[1-9])?$!' => [ 'Nokia', 'E73 Mode', 'flag' => Flag::S60 ], + 'E75(-[1-9])?$!' => [ 'Nokia', 'E75', 'flag' => Flag::S60 ], + 'E90(-[1-9])?$!' => [ 'Nokia', 'E90 Communicator', 'flag' => Flag::S60 ], + 'E-90-1' => [ 'Nokia', 'E90 Communicator', 'flag' => Flag::S60 ], + 'N70(-[1-9])?$!' => [ 'Nokia', 'N70', 'flag' => Flag::S60 ], + 'N71(-[1-9])?$!' => [ 'Nokia', 'N71', 'flag' => Flag::S60 ], + 'N72(-[1-9])?$!' => [ 'Nokia', 'N72', 'flag' => Flag::S60 ], + 'N73(-[1-9])?$!' => [ 'Nokia', 'N73', 'flag' => Flag::S60 ], + 'N75(-[1-9])?$!' => [ 'Nokia', 'N75', 'flag' => Flag::S60 ], + 'N76(-[1-9])?$!' => [ 'Nokia', 'N76', 'flag' => Flag::S60 ], + 'N77(-[1-9])?$!' => [ 'Nokia', 'N77', 'flag' => Flag::S60 ], + 'N78(-[1-9])?$!' => [ 'Nokia', 'N78', 'flag' => Flag::S60 ], + 'N79(-[1-9])?$!' => [ 'Nokia', 'N79', 'flag' => Flag::S60 ], + 'N80(-[1-9])?$!' => [ 'Nokia', 'N80', 'flag' => Flag::S60 ], + 'N81(-[1-9])?$!' => [ 'Nokia', 'N81', 'flag' => Flag::S60 ], + 'Nokia N81' => [ 'Nokia', 'N81', 'flag' => Flag::S60 ], + 'Nokia N81 8GB' => [ 'Nokia', 'N81 8GB', 'flag' => Flag::S60 ], + 'N82(-[1-9])?$!' => [ 'Nokia', 'N82', 'flag' => Flag::S60 ], + 'N85(-[1-9])?$!' => [ 'Nokia', 'N85', 'flag' => Flag::S60 ], + 'N86(-[1-9])?$!' => [ 'Nokia', 'N86 8MP', 'flag' => Flag::S60 ], + 'N86 ?8MP$!' => [ 'Nokia', 'N86 8MP', 'flag' => Flag::S60 ], + 'N90(-[1-9])?$!' => [ 'Nokia', 'N90', 'flag' => Flag::S60 ], + 'N91(-[1-9])?$!' => [ 'Nokia', 'N91', 'flag' => Flag::S60 ], + 'N92(-[1-9])?$!' => [ 'Nokia', 'N92', 'flag' => Flag::S60 ], + 'N93(-[1-9])?$!' => [ 'Nokia', 'N93', 'flag' => Flag::S60 ], + 'N93i' => [ 'Nokia', 'N93i', 'flag' => Flag::S60 ], + 'N95(-[1-9])?$!' => [ 'Nokia', 'N95', 'flag' => Flag::S60 ], + 'N95[ -]8GB(-[1-9])?!' => [ 'Nokia', 'N95 8GB', 'flag' => Flag::S60 ], + 'N96(-[1-9])?$!' => [ 'Nokia', 'N96', 'flag' => Flag::S60 ], + 'N97(-[1-3])?$!' => [ 'Nokia', 'N97', 'flag' => Flag::S60 ], + 'N97i' => [ 'Nokia', 'N97', 'flag' => Flag::S60 ], + 'N97(-[4-5])?$!' => [ 'Nokia', 'N97 Mini', 'flag' => Flag::S60 ], + 'N97 ?mini!' => [ 'Nokia', 'N97 Mini', 'flag' => Flag::S60 ], + '500' => [ 'Nokia', '500', 'flag' => Flag::S60 ], + '600' => [ 'Nokia', '600', 'flag' => Flag::S60 ], + '603' => [ 'Nokia', '603', 'flag' => Flag::S60 ], + '700' => [ 'Nokia', '700', 'flag' => Flag::S60 ], + '701' => [ 'Nokia', '701', 'flag' => Flag::S60 ], + '702T' => [ 'Nokia', '702T', 'flag' => Flag::S60 ], + '801T' => [ 'Nokia', '801T', 'flag' => Flag::S60 ], + '808' => [ 'Nokia', '808 PureView', 'flag' => Flag::S60 ], + '808PureView' => [ 'Nokia', '808 PureView', 'flag' => Flag::S60 ], + '808 PureView' => [ 'Nokia', '808 PureView', 'flag' => Flag::S60 ], + '3230' => [ 'Nokia', '3230', 'flag' => Flag::S60 ], + '3250' => [ 'Nokia', '3250', 'flag' => Flag::S60 ], + '3650' => [ 'Nokia', '3650', 'flag' => Flag::S60 ], + '3660' => [ 'Nokia', '3660', 'flag' => Flag::S60 ], + '5228' => [ 'Nokia', '5228', 'flag' => Flag::S60 ], + '5233!' => [ 'Nokia', '5228', 'flag' => Flag::S60 ], // The 5233 is known as 5228 + 'N5233!' => [ 'Nokia', '5228', 'flag' => Flag::S60 ], // The 5233 is known as 5228 + '5230!' => [ 'Nokia', '5230', 'flag' => Flag::S60 ], + '5232' => [ 'Nokia', '5232', 'flag' => Flag::S60 ], + '5235!' => [ 'Nokia', '5235 Ovi Music Unlimited', 'flag' => Flag::S60 ], + '5236' => [ 'Nokia', '5236', 'flag' => Flag::S60 ], + '5238' => [ 'Nokia', '5238', 'flag' => Flag::S60 ], + '5250' => [ 'Nokia', '5250', 'flag' => Flag::S60 ], + '5320!' => [ 'Nokia', '5320 XpressMusic', 'flag' => Flag::S60 ], + '5500d!' => [ 'Nokia', '5500 Sport', 'flag' => Flag::S60 ], + '5530!' => [ 'Nokia', '5530 XpressMusic', 'flag' => Flag::S60 ], + '5630!' => [ 'Nokia', '5630 XpressMusic', 'flag' => Flag::S60 ], + '5700!' => [ 'Nokia', '5700 XpressMusic', 'flag' => Flag::S60 ], + '5730!' => [ 'Nokia', '5730 XpressMusic', 'flag' => Flag::S60 ], + '5800!' => [ 'Nokia', '5800 XpressMusic', 'flag' => Flag::S60 ], + '6110Navigator' => [ 'Nokia', '6110 Navigator', 'flag' => Flag::S60 ], + '6120c!' => [ 'Nokia', '6120 classic', 'flag' => Flag::S60 ], + '6121c!' => [ 'Nokia', '6121 classic', 'flag' => Flag::S60 ], + '6122c!' => [ 'Nokia', '6124 classic', 'flag' => Flag::S60 ], // The 6122 is known as 6124 + '6124c' => [ 'Nokia', '6124 classic', 'flag' => Flag::S60 ], + '6210 ?Navigator!' => [ 'Nokia', '6210 Navigator', 'flag' => Flag::S60 ], + '6220c!' => [ 'Nokia', '6220 classic', 'flag' => Flag::S60 ], + '6260' => [ 'Nokia', '6260', 'flag' => Flag::S60 ], + '6290!' => [ 'Nokia', '6290', 'flag' => Flag::S60 ], + '6600' => [ 'Nokia', '6600', 'flag' => Flag::S60 ], + '6630' => [ 'Nokia', '6630', 'flag' => Flag::S60 ], + '6650d!' => [ 'Nokia', '6650 fold', 'flag' => Flag::S60 ], + '6670' => [ 'Nokia', '6670', 'flag' => Flag::S60 ], + '6680' => [ 'Nokia', '6680', 'flag' => Flag::S60 ], + '6681' => [ 'Nokia', '6681', 'flag' => Flag::S60 ], + '6700s' => [ 'Nokia', '6700 slide', 'flag' => Flag::S60 ], + '6700s-1c' => [ 'Nokia', '6700 slide', 'flag' => Flag::S60 ], + '6708' => [ 'Nokia', '6708', 'flag' => Flag::UIQ ], + '6710s' => [ 'Nokia', '6710 Navigator', 'flag' => Flag::S60 ], + '6720c!' => [ 'Nokia', '6720 classic', 'flag' => Flag::S60 ], + '6730c!' => [ 'Nokia', '6730 classic', 'flag' => Flag::S60 ], + '6760s!' => [ 'Nokia', '6760 slide', 'flag' => Flag::S60 ], + '6788' => [ 'Nokia', '6788', 'flag' => Flag::S60 ], + '6788i' => [ 'Nokia', '6788i', 'flag' => Flag::S60 ], + '6790s-1b!' => [ 'Nokia', '6790 Surge', 'flag' => Flag::S60 ], + '6790s-1c!' => [ 'Nokia', '6790 slide', 'flag' => Flag::S60 ], + '7610' => [ 'Nokia', '7610', 'flag' => Flag::S60 ], + '7650' => [ 'Nokia', '7650', 'flag' => Flag::S60 ], + '7660' => [ 'Nokia', '7660', 'flag' => Flag::S60 ], + 'Oro' => [ 'Nokia', 'Oro', 'flag' => Flag::S60 ], + 'Panasonic-X700' => [ 'Panasonic', 'X700', 'flag' => Flag::S60 ], + 'Panasonic-X800' => [ 'Panasonic', 'X800', 'flag' => Flag::S60 ], + 'I7710' => [ 'Samsung', 'GT-I7710', 'flag' => Flag::S60 ], + 'I8510' => [ 'Samsung', 'INNOV8', 'flag' => Flag::S60 ], + 'I8910' => [ 'Samsung', 'Omnia HD', 'flag' => Flag::S60 ], + 'SGH-D720' => [ 'Samsung', 'D720', 'flag' => Flag::S60 ], + 'SGH-D728' => [ 'Samsung', 'D728', 'flag' => Flag::S60 ], + 'SGH-D730' => [ 'Samsung', 'D730', 'flag' => Flag::S60 ], + 'SGH-i400!' => [ 'Samsung', 'i400', 'flag' => Flag::S60 ], + 'SGH-i408!' => [ 'Samsung', 'i408', 'flag' => Flag::S60 ], + 'SGH-i450!' => [ 'Samsung', 'i450', 'flag' => Flag::S60 ], + 'SGH-i455!' => [ 'Samsung', 'i455', 'flag' => Flag::S60 ], + 'SGH-i458!' => [ 'Samsung', 'i458', 'flag' => Flag::S60 ], + 'SGH-i520!' => [ 'Samsung', 'i520', 'flag' => Flag::S60 ], + 'SGH-i550!' => [ 'Samsung', 'i550', 'flag' => Flag::S60 ], + 'SGH-i560!' => [ 'Samsung', 'i560', 'flag' => Flag::S60 ], + 'SGH-i568!' => [ 'Samsung', 'i568', 'flag' => Flag::S60 ], + 'SGH-i570!' => [ 'Samsung', 'i570', 'flag' => Flag::S60 ], + 'SGH-G810' => [ 'Samsung', 'G810', 'flag' => Flag::S60 ], + 'U' => [ 'Sony Ericsson', 'Satio', 'flag' => Flag::S60 ], + '(?i)U1(a|i|iv)?$!' => [ 'Sony Ericsson', 'Satio', 'flag' => Flag::S60 ], + '(?i)U5(a|i|iv)?$!' => [ 'Sony Ericsson', 'Vivaz', 'flag' => Flag::S60 ], + '(?i)U8(a|i)?$!' => [ 'Sony Ericsson', 'Vivaz Pro', 'flag' => Flag::S60 ], + 'ConstellationT' => [ 'Vertu', 'Constellation T', 'flag' => Flag::S60 ], + 'ConstellationQuest' => [ 'Vertu', 'Constellation Quest', 'flag' => Flag::S60 ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-tizen.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-tizen.php new file mode 100644 index 0000000..6a3f528 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-tizen.php @@ -0,0 +1,69 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\DeviceType; + +DeviceModels::$TIZEN_MODELS = [ + 'Baltic' => [ 'Samsung', '"Baltic"' ], + 'SM-HIGGS' => [ 'Samsung', '"Higgs"' ], + 'KIRAN' => [ 'Samsung', 'Z1' ], + 'GT-I8800!' => [ 'Samsung', '"Melius"' ], + 'GT-I8805!' => [ 'Samsung', '"Redwood"' ], + 'GT-I9500!' => [ 'Samsung', 'GT-I9500 prototype' ], + 'SGH-N099' => [ 'Samsung', 'SGH-N099 prototype' ], + '(ARMV7 )?SM-Z9005!' => [ 'Samsung', 'SM-Z9005 prototype' ], + 'Mobile-RD-PQ' => [ 'Samsung', 'RD-PQ prototype' ], + 'TM1' => [ 'Samsung', 'TM1 prototype' ], + 'SM-Z130!' => [ 'Samsung', 'Z1' ], + 'TIZEN SM-Z130!' => [ 'Samsung', 'Z1' ], + 'SM-Z200!' => [ 'Samsung', 'Z2' ], + 'SM-Z250!' => [ 'Samsung', '"Pride"' ], + 'SM-Z300!' => [ 'Samsung', 'Z3' ], + 'TIZEN SM-Z300!' => [ 'Samsung', 'Z3' ], + 'SM-Z400!' => [ 'Samsung', 'Z4' ], + 'SM-Z500!' => [ 'Samsung', 'SM-Z500' ], + 'SM-Z700!' => [ 'Samsung', 'SM-Z700' ], + 'SM-Z900!' => [ 'Samsung', 'Z' ], + 'SM-Z910!' => [ 'Samsung', 'Z' ], + 'Z3 Z910F' => [ 'Samsung', 'Z' ], + 'SEC SC-001' => [ 'Samsung', 'SC-001 prototype' ], + 'SEC SC-03F' => [ 'Samsung', 'ZeQ' ], // Unreleased version for DoCoMo + 'SC-03F' => [ 'Samsung', 'ZeQ' ], // Unreleased version for DoCoMo + + 'SM-G870F0' => [ 'Samsung', 'Galaxy S5 Active' ], + + 'SM-R360!' => [ 'Samsung', 'Gear Fit2', DeviceType::WATCH ], + 'SM-R600!' => [ 'Samsung', 'Gear Sport', DeviceType::WATCH ], + 'SM-R720!' => [ 'Samsung', 'Gear S2', DeviceType::WATCH ], + 'SM-R730!' => [ 'Samsung', 'Gear S2', DeviceType::WATCH ], + 'SM-R732!' => [ 'Samsung', 'Gear S2 Classic', DeviceType::WATCH ], + 'SM-R735!' => [ 'Samsung', 'Gear S2 Classic', DeviceType::WATCH ], + 'SM-R750!' => [ 'Samsung', 'Gear S', DeviceType::WATCH ], + 'SM-R760!' => [ 'Samsung', 'Gear S3', DeviceType::WATCH ], + 'SM-R765!' => [ 'Samsung', 'Gear S3', DeviceType::WATCH ], + 'SM-R770!' => [ 'Samsung', 'Gear S3 Classic', DeviceType::WATCH ], + 'SM-R805!' => [ 'Samsung', 'Gear S4', DeviceType::WATCH ], + + 'NX300' => [ 'Samsung', 'NX300', DeviceType::CAMERA ], + + 'FamilyHub' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + 'RF10M9995!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + 'RF23M8590!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + 'RF265BEAE!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + 'RF28M9580!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + 'RF56M9540!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + 'RF85K9993!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + 'RF85M95A2!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + 'RH81M8090!' => [ 'Samsung', 'Family Hub', DeviceType::APPLIANCE ], + + + 'hawkp' => [ 'Samsung', '"Hawkp"', DeviceType::TELEVISION ], + + 'xu3' => [ 'Hardkernel', 'ODROID-XU3 developer board' ], + + 'sdk' => [ null, null, DeviceType::EMULATOR ], + 'Emulator' => [ null, null, DeviceType::EMULATOR ], + 'Mobile-Emulator' => [ null, null, DeviceType::EMULATOR ], + 'TIZEN Emulator' => [ null, null, DeviceType::EMULATOR ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-touchwiz.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-touchwiz.php new file mode 100644 index 0000000..270912b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-touchwiz.php @@ -0,0 +1,46 @@ +<?php + +namespace WhichBrowser\Data; + +DeviceModels::$TOUCHWIZ_MODELS = [ + 'GT-B5310!' => [ 'Samsung', 'Corby Pro' ], + 'GT-B3410' => [ 'Samsung', 'Star Qwerty' ], + 'GT-B7722' => [ 'Samsung', 'Star Duos' ], + 'GT-C3262' => [ 'Samsung', 'Champ Neo Duos' ], + 'GT-C33(00|03)!' => [ 'Samsung', 'Champ' ], + 'GT-C3312R' => [ 'Samsung', 'Rex 60' ], + 'GT-C3312!' => [ 'Samsung', 'Champ Deluxe Duos' ], + 'GT-C3330' => [ 'Samsung', 'Champ 2' ], + 'GT-C6712' => [ 'Samsung', 'Star II Duos' ], + 'GT-E2652!' => [ 'Samsung', 'Champ Duos' ], + 'GT-I6230!' => [ 'Samsung', 'Star TV' ], + 'GT-I6712!' => [ 'Samsung', 'Duos TV' ], + 'GT-M3710' => [ 'Samsung', 'Corby Beat' ], + 'GT-M5650' => [ 'Samsung', 'Lindy' ], + 'GT-S3370!' => [ 'Samsung', 'Corby 3G' ], + 'GT-S36(50|53)!' => [ 'Samsung', 'Corby' ], + 'GT-S3770!' => [ 'Samsung', 'Champ 3G' ], + 'GT-S38(00|02)!' => [ 'Samsung', 'Rex 70' ], + 'GT-S3850' => [ 'Samsung', 'Corby II' ], + 'GT-S5220' => [ 'Samsung', 'Star 3' ], + 'GT-S5222R' => [ 'Samsung', 'Rex 80' ], + 'GT-S5222' => [ 'Samsung', 'Star 3 Duos' ], + 'GT-S52(30|33)!' => [ 'Samsung', 'Star' ], + 'GT-S5260P' => [ 'Samsung', 'Player City' ], + 'GT-S52(60|63)!' => [ 'Samsung', 'Star II' ], + 'GT-S5292R' => [ 'Samsung', 'Rex 90' ], + 'GT-S5292' => [ 'Samsung', 'Star Deluxe Duos' ], + 'GT-S5560!' => [ 'Samsung', 'Marvel' ], + 'GT-S5600' => [ 'Samsung', 'Preston' ], + 'GT-S5603' => [ 'Samsung', 'Star 3G' ], + 'GT-S5620!' => [ 'Samsung', 'Monte' ], + 'GT-S5680' => [ 'Samsung', 'GT-S5680' ], + 'GT-S7550' => [ 'Samsung', 'Blue Earth' ], + 'S80(00|03)!' => [ 'Samsung', 'Jet' ], + 'GT-S8000c' => [ 'Samsung', 'Jet' ], + 'GT-S8003' => [ 'Samsung', 'Jet' ], + 'SGH-A597' => [ 'Samsung', 'Eternity II' ], + 'SGH-F480' => [ 'Samsung', 'Tocco' ], + 'SGH-F480I' => [ 'Samsung', 'Tocco' ], + 'SGH-T528g' => [ 'Samsung', 'Straight Talk' ] +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wm.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wm.php new file mode 100644 index 0000000..8921358 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wm.php @@ -0,0 +1,323 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\DeviceType; + +DeviceModels::$WM_MODELS = [ + 'DX900' => [ 'Acer', 'Tempo DX900' ], + 'E100' => [ 'Acer', 'beTouch E100' ], + 'F900' => [ 'Acer', 'Tempo F900' ], + 'S200' => [ 'Acer', 'neoTouch S200' ], + 'P400' => [ 'Acer', 'neoTouch P400' ], + '-GalaxyII' => [ 'Asus', 'Galaxy II' ], + '-GalaxyMini' => [ 'Asus', 'Galaxy Mini' ], + 'M530w!' => [ 'Asus', 'M530w' ], + 'M930!' => [ 'Asus', 'M930' ], + '-P525!' => [ 'Asus', 'P525' ], + '-P526!' => [ 'Asus', 'P526' ], + '-P527!' => [ 'Asus', 'P527' ], + 'P550' => [ 'Asus', 'P550' ], + '-P552w!' => [ 'Asus', 'P552w' ], + '-P552!' => [ 'Asus', 'P552' ], + '-P565!' => [ 'Asus', 'P565' ], + '-P735!' => [ 'Asus', 'P735' ], + 'P750' => [ 'Asus', 'P750' ], + 'Bird T900' => [ 'Bird', 'T900' ], + 'Coolpad F800' => [ 'Coolpad', 'F800' ], + 'Datalogic Memor' => [ 'Datalogic', 'Memor' ], + 'Dopod838Pro' => [ 'Dopod', '838 Pro' ], + 'CHT 9100!' => [ 'Dopod', 'CHT 9100' ], + 'DopodD810' => [ 'Dopod', 'D810' ], + 'dopod-S900c' => [ 'Dopod', 'S900' ], + 'T5388' => [ 'Dopod', 'T5388' ], + 'dopodT5588' => [ 'Dopod', 'T5588' ], + 'dopodT8388' => [ 'Dopod', 'T8388' ], + 'dopodT8588' => [ 'Dopod', 'T8588' ], + 'garmin-asus-Nuvifone-M10' => [ 'Garmin-Asus', 'Nuvifone M10' ], + 'Nuvifone-M10' => [ 'Garmin-Asus', 'Nuvifone M10' ], + 'Nuvifone-M20' => [ 'Garmin-Asus', 'Nuvifone M20' ], + 'GIGABYTE-MS800' => [ 'Gigabyte', 'GSmart MS800' ], + 'HP iPAQ 510' => [ 'HP', 'iPAQ 510' ], + 'HPiPAQ510!' => [ 'HP', 'iPAQ 510' ], + 'HPiPAQ610' => [ 'HP', 'iPAQ 610' ], + 'HPiPAQ910!' => [ 'HP', 'iPAQ 910' ], + 'HP iPAQ h6300' => [ 'HP', 'iPAQ h6300' ], + 'HP iPAQ hw6500!' => [ 'HP', 'iPAQ hw6500' ], + 'HPiPAQhw6900!' => [ 'HP', 'iPAQ hw6900' ], + 'HPiPAQrw6800!' => [ 'HP', 'iPAQ rw6800' ], + 'HPiPAQrw6815!' => [ 'HP', 'iPAQ rw6815' ], + 'HPiPAQDataMessenger!' => [ 'HP', 'iPAQ Data Messenger' ], + 'HPiPAQVoiceMessenger!' => [ 'HP', 'iPAQ Voice Messenger' ], + 'HPiPAQGlisten' => [ 'HP', 'iPAQ Glisten' ], + 'HP KB1' => [ 'HP', 'iPAQ Glisten' ], + 'HTC8500' => [ 'HTC', '8500' ], + 'HTC P3300' => [ 'HTC', 'P3300' ], + 'HTC love' => [ 'HTC', 'P3350' ], + 'HTC P3350' => [ 'HTC', 'P3350' ], + 'HTC P3400!' => [ 'HTC', 'P3400' ], + 'HTC P3450!' => [ 'HTC', 'P3450' ], + 'P4350!' => [ 'HTC', 'P3450' ], + 'HTC HERALD' => [ 'HTC', 'P3450' ], + 'HTC P6300' => [ 'HTC', 'P6300' ], + 'HTC P6500' => [ 'HTC', 'P6500' ], + 'HTC X7500' => [ 'HTC', 'Advantage' ], + 'HTC X7510' => [ 'HTC', 'Advantage' ], + '(HTC )?HD mini!' => [ 'HTC', 'HD mini' ], + '.*T5555!' => [ 'HTC', 'HD mini' ], + '(HTC )?HD2!' => [ 'HTC', 'HD2' ], + '.*T8585!' => [ 'HTC', 'HD2' ], + 'HTC T8290' => [ 'HTC', 'MAX 4G' ], + 'HTC MAX 4G' => [ 'HTC', 'MAX 4G' ], + 'HTC MTeoR' => [ 'HTC', 'MTeoR' ], + 'P3470!' => [ 'HTC', 'Pharos' ], + 'HTC Prophet' => [ 'HTC', 'Prophet' ], + 'HTC Snap!' => [ 'HTC', 'S511 Snap' ], + '.*S521!' => [ 'HTC', 'S511 Snap' ], + 'HTC Maple S520' => [ 'HTC', 'S520 Maple' ], + 'HTC S620!' => [ 'HTC', 'S620 Excalibur' ], + 'HTC Excalibur' => [ 'HTC', 'S620 Excalibur' ], + 'HTC S630' => [ 'HTC', 'S630 Cavelier' ], + 'HTC S710' => [ 'HTC', 'S710 Vox' ], + 'HTC S730' => [ 'HTC', 'S730 Wings' ], + 'HTC S740' => [ 'HTC', 'S740 Rose' ], + 'HTC Touch' => [ 'HTC', 'Touch' ], + 'HTC Elf' => [ 'HTC', 'Touch' ], + 'HTC 6900' => [ 'HTC', 'Touch' ], + 'HTC6900' => [ 'HTC', 'Touch' ], + 'HTC6900-MR1' => [ 'HTC', 'Touch' ], + 'P3450' => [ 'HTC', 'Touch' ], + 'HTC TouchDual' => [ 'HTC', 'Touch' ], + 'HTC Touch 3G!' => [ 'HTC', 'Touch 3G' ], + 'HTC Jade' => [ 'HTC', 'Touch 3G' ], + 'HTC Mega!' => [ 'HTC', 'Touch 2' ], + 'HTC Touch2!' => [ 'HTC', 'Touch 2' ], + '.*T33(20|33|35)!' => [ 'HTC', 'Touch 2' ], + 'P3650' => [ 'HTC', 'Touch Cruise' ], + 'P3650t' => [ 'HTC', 'Touch Cruise' ], + 'HTC Touch Cruise!' => [ 'HTC', 'Touch Cruise' ], + 'HTC P3650' => [ 'HTC', 'Touch Cruise' ], + 'HTC P3651' => [ 'HTC', 'Touch Cruise' ], + 'HTC Polaris' => [ 'HTC', 'Touch Cruise' ], + 'HTC Touch Diamond2!' => [ 'HTC', 'Touch Diamond 2' ], + '.*T5353!' => [ 'HTC', 'Touch Diamond 2' ], + 'HTC Touch Diamond!' => [ 'HTC', 'Touch Diamond' ], + '.*P3700!' => [ 'HTC', 'Touch Diamond' ], + 'HTC Diamond' => [ 'HTC', 'Touch Diamond' ], + 'HTC P3701' => [ 'HTC', 'Touch Diamond' ], + 'HTC P5500' => [ 'HTC', 'Touch Dual' ], + 'HTC P5310!' => [ 'HTC', 'Touch Dual' ], + 'HTC Touch HD2!' => [ 'HTC', 'Touch HD2' ], + '.*T8585!' => [ 'HTC', 'Touch HD2' ], + 'HTC Touch HD!' => [ 'HTC', 'Touch HD' ], + '.*T82(82|83)!' => [ 'HTC', 'Touch HD' ], + 'HTC Touch Pro2!' => [ 'HTC', 'Touch Pro 2' ], + '.*T73(73|80)!' => [ 'HTC', 'Touch Pro 2' ], + 'HTC Touch Pro!' => [ 'HTC', 'Touch Pro' ], + '.*T7272!' => [ 'HTC', 'Touch Pro' ], + 'HTC P4600' => [ 'HTC', 'Touch Pro' ], + 'HTC Raphael' => [ 'HTC', 'Touch Pro' ], + 'HTC Touch Viva!' => [ 'HTC', 'Touch Viva' ], + '.*T2223!' => [ 'HTC', 'Touch Viva' ], + 'P3600!' => [ 'HTC', 'Trinity' ], + 'HTC Trinity' => [ 'HTC', 'Trinity' ], + 'HTC P3600' => [ 'HTC', 'Trinity' ], + 'HTC P3600i' => [ 'HTC', 'Trinity' ], + 'HTC v3600' => [ 'HTC', 'Trinity' ], + 'HTC TyTN II' => [ 'HTC', 'TyTN II' ], + 'P4550' => [ 'HTC', 'TyTN II' ], + 'HTC Kaiser' => [ 'HTC', 'TyTN II' ], + 'HTC TyTN!' => [ 'HTC', 'TyTN' ], + 'HTC Mercury' => [ 'HTC', 'TyTN' ], + 'T9188' => [ 'HTC', 'T9188' ], + 'T9199' => [ 'HTC', 'T9199' ], + 'HTC wizard' => [ 'HTC', 'Wizard' ], + 'i-mate JAMA' => [ 'i-mate', 'JAMA' ], + 'i-mate JAMAQ' => [ 'i-mate', 'JAMAQ' ], + 'i-mate JAMin' => [ 'i-mate', 'JAMin' ], + 'i-mate JASJAM' => [ 'i-mate', 'JASJAM' ], + 'i-mate JAQ' => [ 'i-mate', 'JAQ' ], + 'i-mate JAQ3' => [ 'i-mate', 'JAQ3' ], + 'i-mate K-JAM' => [ 'i-mate', 'K-JAM' ], + 'i-mate PDAL' => [ 'i-mate', 'PDAL' ], + 'i-mate 6150' => [ 'i-mate', 'Ultimate 6150' ], + 'i-mate 8150!' => [ 'i-mate', 'Ultimate 8150' ], + 'i-mate 8502' => [ 'i-mate', 'Ultimate 8502' ], + 'i-mate 9502!' => [ 'i-mate', 'Ultimate 9502' ], + 'W366' => [ 'K-Touch', 'W366' ], + 'K-Touch W366!' => [ 'K-Touch', 'W366' ], + 'Kyocera-E4000' => [ 'Kyocera', 'Solo E4000' ], + 'Lenovo ET860' => [ 'Lenovo', 'ET860' ], + 'LENOVO-ET980' => [ 'Lenovo', 'ET980' ], + 'LG-GM730!' => [ 'LG', 'Eigen GM730' ], + 'GM730' => [ 'LG', 'Eigen GM730' ], + 'LG-GM750!' => [ 'LG', 'Layla GM750' ], + 'GM750Q' => [ 'LG', 'Layla GM750' ], + 'LG-GW550!' => [ 'LG', 'GW550' ], + 'GW550' => [ 'LG', 'GW550' ], + 'GW825' => [ 'LG', 'IQ GW825' ], + 'LG-KS20' => [ 'LG', 'KS20' ], + 'LG-MS25' => [ 'LG', 'MS25' ], + 'LGE VS750' => [ 'LG', 'Fathom VS750' ], + 'A3100' => [ 'Motorola', 'A3100' ], + 'A3300c' => [ 'Motorola', 'A3300c' ], + 'A4500!' => [ 'Motorola', 'A4500' ], + 'ES405B!' => [ 'Motorola', 'ES405 Enterprise Smartphone' ], + 'MC45!' => [ 'Motorola', 'MC45 Mobile Computer' ], + 'MC659B!' => [ 'Motorola', 'MC65 Wireless Rugged Mobile Computer' ], + 'Q-UMTS' => [ 'Motorola', 'Q' ], + 'Q8' => [ 'Motorola', 'MOTO Q8' ], + 'Q9' => [ 'Motorola', 'MOTO Q9' ], + 'Sprint:MotoQ9c' => [ 'Motorola', 'MOTO Q9c' ], + 'Q9c!' => [ 'Motorola', 'MOTO Q9c' ], + 'Q9m!' => [ 'Motorola', 'MOTO Q9m' ], + 'VIP12!' => [ 'Motorola', 'VIP 1200', DeviceType::TELEVISION ], + 'H-21' => [ 'Opticom', 'H-21' ], + 'Palm500!' => [ 'Palm', 'Treo 500v' ], + 'Palm750' => [ 'Palm', 'Treo 750' ], + 'Treo800w' => [ 'Palm', 'Treo 800w' ], + 'Palm850!' => [ 'Palm', 'Treo Pro' ], + 'Palm Treo850e' => [ 'Palm', 'Treo Pro' ], + 'Sprint Treo850e' => [ 'Palm', 'Treo Pro' ], + 'PANTECH-C810' => [ 'Pantech', 'Duo C810' ], + 'GT-B5722' => [ 'Samsung', 'B5722' ], + 'GT-B6520' => [ 'Samsung', 'B6520 OmniaPRO 5' ], + 'GT-B7300' => [ 'Samsung', 'B7300 OmniaLITE' ], + 'GT-B7320!' => [ 'Samsung', 'B7320 OmniaPRO' ], + 'GT-B7330!' => [ 'Samsung', 'B7330 OmniaPRO' ], + 'GT-B7350' => [ 'Samsung', 'B7350 OmniaPRO 4' ], + 'GT-B7610' => [ 'Samsung', 'B7610 OmniaPRO' ], + 'GT-C6625' => [ 'Samsung', 'C6625 Valencia' ], + 'C6625' => [ 'Samsung', 'C6625 Valencia' ], + 'GT-I8000!' => [ 'Samsung', 'I8000 Omnia II' ], + 'SCH-M490' => [ 'Samsung', 'M490 T*OMNIA' ], + 'SCH-M710' => [ 'Samsung', 'M710 T*OMNIA II' ], + 'SCH-M715' => [ 'Samsung', 'M715 T*OMNIA II' ], + 'SPH-M7200' => [ 'Samsung', 'M7200 OMNIA POP' ], + 'SPH-M7350' => [ 'Samsung', 'M7350 OZ OMNIA' ], + 'SPH-M8400' => [ 'Samsung', 'M8400 Show OMNIA' ], + 'SCH-i220!' => [ 'Samsung', 'i220 Code' ], + 'SCH-i225!' => [ 'Samsung', 'i225 Exec' ], + 'SPHI325!' => [ 'Samsung', 'i325 Ace' ], + 'SGH-i600!' => [ 'Samsung', 'i600' ], + 'SGH-i601!' => [ 'Samsung', 'i601' ], + 'SGH-I607' => [ 'Samsung', 'i607 BlackJack' ], + 'SGH-i608!' => [ 'Samsung', 'i608' ], + 'SGH-I617' => [ 'Samsung', 'i617 BlackJack II' ], + 'SGH-I637' => [ 'Samsung', 'i637 Jack' ], + 'SGH-i640!' => [ 'Samsung', 'i640' ], + 'SGH-i718' => [ 'Samsung', 'i718' ], + 'SGH-i718plus' => [ 'Samsung', 'i718 Plus' ], + 'SGH-i728' => [ 'Samsung', 'i728' ], + 'SCH-i760!' => [ 'Samsung', 'i760' ], + 'SCH-i770!' => [ 'Samsung', 'i770 Saga' ], + 'SGH-i780!' => [ 'Samsung', 'i780 Mirage' ], + 'SGH-i900!' => [ 'Samsung', 'i900 Omnia' ], + 'SGH-i908E' => [ 'Samsung', 'i908' ], + 'SCHI910!' => [ 'Samsung', 'i910 Omnia' ], + 'SCH-i920' => [ 'Samsung', 'i920 Omnia II' ], + 'SIE-SX66' => [ 'Siemens', 'SX66' ], + 'M1i' => [ 'Sony Ericsson', 'Aspen' ], + 'X1' => [ 'Sony Ericsson', 'Xperia X1' ], + 'X1[ia]!' => [ 'Sony Ericsson', 'Xperia X1' ], + 'X2' => [ 'Sony Ericsson', 'Xperia X2' ], + 'X2[ia]!' => [ 'Sony Ericsson', 'Xperia X2' ], + 'Spice D1100' => [ 'Spice', 'D1100' ], + '(Toshiba[- ])?TG01!' => [ 'Toshiba', 'TG01' ], + 'Velocity' => [ 'Velocity', '111' ], + 'ZTE E N72' => [ 'ZTE', 'E N72' ], + 'ZTE E X70' => [ 'ZTE', 'E X70' ], + + + + 'sigmarion3' => [ 'NTT', 'sigmarionIII' ], + + 'o2 Xda comet' => [ 'O2', 'XDA Comet' ], + 'Xda diamond' => [ 'O2', 'XDA Diamond' ], + 'Xda neo' => [ 'O2', 'XDA Neo' ], + 'Xda nova' => [ 'O2', 'XDA Nova' ], + 'Xda orbit' => [ 'O2', 'XDA Orbit' ], + 'Xda terra' => [ 'O2', 'XDA Terra' ], + 'Xda trion' => [ 'O2', 'XDA Trion' ], + 'O2 Xda 2mini' => [ 'O2', 'XDA II mini' ], + 'O2 Xda 2s' => [ 'O2', 'XDA IIs' ], + + 'SPV E600' => [ 'Orange', 'SPV E600' ], + 'SPV E650' => [ 'Orange', 'SPV E650' ], + 'SPV M700' => [ 'Orange', 'SPV M700' ], + 'SPV M2000' => [ 'Orange', 'SPV M2000' ], + 'SPV M3100' => [ 'Orange', 'SPV M3100' ], + + 'Alltel HTC PPC6800' => [ 'Alltel', 'PPC6800' ], + 'Alltel HTC Touch' => [ 'HTC', 'Touch', 'carrier' => 'Alltel' ], + 'Alltel HTC Touch Diamond' => [ 'HTC', 'Touch Diamond', 'carrier' => 'Alltel' ], + + 'Sprint S511' => [ 'Sprint', 'Snap' ], + 'Sprint:SPH-ip830w' => [ 'Sprint', 'SPH-ip830w' ], + 'Sprint:PPC6600-1' => [ 'Sprint', 'PPC6600' ], + 'Sprint:PPC-6700' => [ 'Sprint', 'PPC6700' ], + 'Sprint:PPC6800' => [ 'Sprint', 'PPC6800' ], + 'Sprint PPC6850SP' => [ 'Sprint', 'PPC6850' ], + 'HTCPPC6850!' => [ 'Sprint', 'PPC6850' ], + 'PPC6850!' => [ 'Sprint', 'PPC6850' ], + 'Sprint MP6850SP' => [ 'Sprint', 'MP6850' ], + 'Sprint MP6900SP' => [ 'Sprint', 'MP6900' ], + 'Sprint MP6950SP' => [ 'Sprint', 'MP6950' ], + + 'Ameo!' => [ 'T-Mobile', 'Ameo' ], + 'T-Mobile Atlas' => [ 'T-Mobile', 'Atlas' ], + 'T-Mobile Dash' => [ 'T-Mobile', 'Dash' ], + 'T-Mobile LEO' => [ 'T-Mobile', 'Leo' ], + 'T-Mobile Cleopatra' => [ 'T-Mobile', 'Shadow II' ], + 'MDA III!' => [ 'T-Mobile', 'MDA III' ], + 'MDA compact II!' => [ 'T-Mobile', 'MDA Compact II' ], + 'MDA compact!' => [ 'T-Mobile', 'MDA Compact' ], + 'MDA Pro!' => [ 'T-Mobile', 'MDA Pro' ], + 'MDA Touch!' => [ 'T-Mobile', 'MDA Touch' ], + 'MDA Vario!' => [ 'T-Mobile', 'MDA Vario' ], + + 'XV6175!' => [ 'Verizon', 'Ozone XV6175' ], + 'XV6850!' => [ 'Verizon', 'Touch Pro XV6850' ], + 'XV6875!' => [ 'Verizon', 'Touch Pro2 XV6875' ], + 'XV6900' => [ 'Verizon', 'Touch XV6900' ], + 'XV6975' => [ 'Verizon', 'Imagio XV6975' ], + + 'SFR v3650!' => [ 'Vodafone', 'Polaris' ], + 'v1415' => [ 'Vodafone', 'Vox' ], + 'v1240' => [ 'Vodafone', 'VDA II' ], + '1210' => [ 'Vodafone', 'VDA IV' ], + 'v1210' => [ 'Vodafone', 'VDA IV' ], + 'HTC VDA V' => [ 'Vodafone', 'VDA V' ], + 'v1640' => [ 'Vodafone', 'VPA IV' ], + 'VPA Touch' => [ 'Vodafone', 'VPA Touch' ], + 'HTC v1510' => [ 'Vodafone', 'VPA Compact GPS' ], + 'HTC VPACompactIV' => [ 'Vodafone', 'VPA Compact IV' ], + + + + 'WS003SH' => [ 'Sharp', 'W-ZERO3 WS003SH', 'carrier' => 'Willcom' ], + 'WS004SH' => [ 'Sharp', 'W-ZERO3 WS004SH', 'carrier' => 'Willcom' ], + 'WS007SH' => [ 'Sharp', 'W-ZERO3 [es] WS007SH', 'carrier' => 'Willcom' ], + 'WS011SH' => [ 'Sharp', 'Advanced / W-ZERO3 [es] WS011SH', 'carrier' => 'Willcom' ], + 'WS020SH' => [ 'Sharp', 'WILLCOM 03 WS020SH', 'carrier' => 'Willcom' ], + 'WS027SH' => [ 'Sharp', 'HYBRID W-ZERO3 WS027SH', 'carrier' => 'Willcom' ], + 'S01SH' => [ 'Sharp', 'EM·ONE S01SH', 'carrier' => 'EMOBILE' ], + 'S01SH2' => [ 'Sharp', 'EM·ONE alpha S01SH2', 'carrier' => 'EMOBILE' ], + 'T-01A!' => [ 'Toshiba', 'T-01A', 'carrier' => 'DoCoMo' ], + 'T-01B!' => [ 'Toshiba', 'dynapocket T-01B', 'carrier' => 'DoCoMo' ], + 'X01T' => [ 'Toshiba', 'G900 X01T', 'carrier' => 'Softbank' ], + 'X02T!' => [ 'Toshiba', 'dynapocket X02T', 'carrier' => 'Softbank' ], + 'KDDI-HT01' => [ 'HTC', 'TOUCH PRO HT-01A', 'carrier' => 'au' ], + 'HT01A' => [ 'HTC', 'TOUCH PRO HT-01A', 'carrier' => 'au' ], + 'S11HT' => [ 'HTC', 'EMONSTER S11HT', 'carrier' => 'EMOBILE' ], + 'S12HT' => [ 'HTC', 'EMONSTER lite S12HT', 'carrier' => 'EMOBILE' ], + 'S21HT' => [ 'HTC', 'Touch Diamond S21HT', 'carrier' => 'EMOBILE' ], + 'S22HT' => [ 'HTC', 'Dual Diamond S22HT', 'carrier' => 'EMOBILE' ], + 'X01HT' => [ 'HTC', 'TyTN X01HT', 'carrier' => 'Softbank' ], + 'X02HT' => [ 'HTC', 'S630 X02HT', 'carrier' => 'Softbank' ], + 'X03HT' => [ 'HTC', 'S730 X03HT', 'carrier' => 'Softbank' ], + 'X04HT' => [ 'HTC', 'TOUCH DIAMOND X04HT', 'carrier' => 'Softbank' ], + 'X05HT' => [ 'HTC', 'TOUCH PRO X05HT', 'carrier' => 'Softbank' ], + 'SC-01B' => [ 'Samsung', 'SC-01B', 'carrier' => 'DoCoMo' ], + 'X01SC' => [ 'Samsung', 'OMNIA Pro X01SC', 'carrier' => 'Softbank' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wp.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wp.php new file mode 100644 index 0000000..a46a643 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/models-wp.php @@ -0,0 +1,333 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\DeviceType; + +DeviceModels::$WP_MODELS = [ + 'Allegro' => [ 'Acer', 'Allegro' ], + 'M310' => [ 'Acer', 'Allegro' ], + 'S58' => [ 'Acer', 'Jade Primo' ], + 'M220!' => [ 'Acer', 'Liquid' ], + 'FierceXL' => [ 'Alcatel', 'One Touch Fierce XL' ], + 'ONE TOUCH 5040X' => [ 'Alcatel', 'One Touch View' ], + 'IDOL 4 PRO' => [ 'Alcatel', 'Idol 4 Pro' ], + 'IDOL 4S with Windows 10' => [ 'Alcatel', 'Idol 4S' ], + 'Impera I' => [ 'Allview', 'Impera i' ], + 'Impera M' => [ 'Allview', 'Impera M' ], + 'Impera S' => [ 'Allview', 'Impera S' ], + 'W1i' => [ 'Allview', 'W1i' ], + '40 Cesium' => [ 'Archos', '40 Cesium' ], + 'AC50CE' => [ 'Archos', '50 Cesium' ], + '- BUSH Windows Phone' => [ 'Argos', 'BUSH Windows Phone' ], + 'Galaxy6' => [ 'Asus', 'Galaxy 6' ], + 'E600' => [ 'Asus', 'E600' ], + 'WIN HD LTE' => [ 'BLU', 'Win HD' ], + 'WIN HD W510l' => [ 'BLU', 'Win HD' ], + 'WIN HD W510u' => [ 'BLU', 'Win HD' ], + 'WIN JR LTE' => [ 'BLU', 'Win JR' ], + 'WIN JR W410a' => [ 'BLU', 'Win JR' ], + 'WIN JR W410i' => [ 'BLU', 'Win JR' ], + 'WIN JR W410l' => [ 'BLU', 'Win JR' ], + 'WIN JR W410u' => [ 'BLU', 'Win JR' ], + 'BP30.BM180' => [ 'Bluebird', 'Pidion' ], + 'WIN 400' => [ 'Celkon', 'Win 400' ], + 'Alpha Neon' => [ 'Cherry Mobile', 'Alpha Neon' ], + 'ALPHA PRIME 5' => [ 'Cherry Mobile', 'Alpha Prime 5' ], + 'MOBILE Alpha Luxe' => [ 'Cherry Mobile', 'Alpha Luxe' ], + 'CHERRY-MOBILE Alpha Luxe' => [ 'Cherry Mobile', 'Alpha Luxe' ], + 'MOBILE Alpha Style' => [ 'Cherry Mobile', 'Alpha Style' ], + 'MOBILE Alpha View' => [ 'Cherry Mobile', 'Alpha View' ], + 'PKT-407' => [ 'Condor', 'Griffe W1' ], + 'T698' => [ 'Cube', 'WP10', DeviceType::TABLET ], + 'Venue Pro' => [ 'Dell', 'Venue Pro' ], + 'Ixion W 5' => [ 'DEXP', 'Ixion W 5' ], + 'IQ400W' => [ 'Fly', 'IQ400W Era Windows' ], + 'IQ500W' => [ 'Fly', 'IQ500W Evo Windows' ], + 'FTJ152E' => [ 'Freetel', 'KATANA 01' ], + 'FTJ152F' => [ 'Freetel', 'KATANA 02' ], + 'IS12T' => [ 'Fujitsu Toshiba', 'IS12T' ], + 'W10' => [ 'GoMobile', 'W10' ], + 'WINJOY' => [ 'Highscreen', 'WinJoy' ], + 'WinWin' => [ 'Highscreen', 'WinWin' ], + 'E260T+' => [ 'Hisense', 'NANA' ], + 'SG 7' => [ 'HIWIKI', 'SG 7' ], + 'DolphinCT50' => [ 'Honeywell', 'Dolphin CT50' ], + '75eL0N' => [ 'Honeywell', 'Dolphin 75e' ], + 'HELSINKI' => [ 'Honeywell', '"Helsinki"' ], + 'HD2' => [ 'HTC', 'HD2' ], + ';HD2' => [ 'HTC', 'HD2' ], + 'LEO' => [ 'HTC', 'HD2' ], + 'HD2(Leo' => [ 'HTC', 'HD2' ], + 'HD2 LEO' => [ 'HTC', 'HD2' ], + 'HTC HD2' => [ 'HTC', 'HD2' ], + '(HD7|.*T92(92|95|96))!' => [ 'HTC', 'HD7' ], + 'Schubert!' => [ 'HTC', 'HD7' ], + 'Mondrian' => [ 'HTC', 'HD7' ], + 'Gold' => [ 'HTC', 'HD7' ], + 'Touch-IT HD7' => [ 'HTC', 'HD7' ], + '((7 )?Mozart|.*T86(97|98))!' => [ 'HTC', '7 Mozart' ], + 'PD67100' => [ 'HTC', '7 Mozart' ], + ';PD67100' => [ 'HTC', '7 Mozart' ], + 'HTC Mozart' => [ 'HTC', '7 Mozart' ], + '7 HTC MOZART' => [ 'HTC', '7 Mozart' ], + 'PC93100' => [ 'HTC', '7 Pro' ], + 'MWP6885' => [ 'HTC', '7 Pro' ], + '(7 Pro|.*T75(75|76))!' => [ 'HTC', '7 Pro' ], + 'USCCHTC-PC93100' => [ 'HTC', '7 Pro' ], + 'Surround' => [ 'HTC', '7 Surround' ], + '7 Surround' => [ 'HTC', '7 Surround' ], + '.*T8788!' => [ 'HTC', '7 Surround' ], + '((7 )?Trophy|.*T8686)!' => [ 'HTC', '7 Trophy' ], + 'mwp6985' => [ 'HTC', '7 Trophy' ], + 'htc mpw6958' => [ 'HTC', '7 Trophy' ], + 'htcmpw6958' => [ 'HTC', '7 Trophy' ], + 'PC40100' => [ 'HTC', '7 Trophy' ], + 'PC40200' => [ 'HTC', '7 Trophy' ], + 'Touch-IT Trophy' => [ 'HTC', '7 Trophy' ], + 'Spark' => [ 'HTC', '7 Trophy' ], + 'HTC 7 Trophy' => [ 'HTC', '7 Trophy' ], + 'HTC Trophy' => [ 'HTC', '7 Trophy' ], + '(Radar|.*C110e)!' => [ 'HTC', 'Radar' ], + 'Omega' => [ 'HTC', 'Radar' ], + 'Mazaa' => [ 'HTC', 'Mazaa' ], // Never released + 'Titan' => [ 'HTC', 'Titan' ], + '.*X310e!' => [ 'HTC', 'Titan' ], + 'PI39100' => [ 'HTC', 'Titan' ], + 'Eternity' => [ 'HTC', 'Titan' ], + 'Ultimate' => [ 'HTC', 'Titan' ], + 'PI86100' => [ 'HTC', 'Titan II' ], + '8X' => [ 'HTC', '8X' ], + 'HTC6690LVW' => [ 'HTC', '8X' ], + 'HTC6990LVW' => [ 'HTC', '8X' ], + 'HTC6990LVW 4G' => [ 'HTC', '8X' ], + '6990LVW' => [ 'HTC', '8X' ], + 'RIO U' => [ 'HTC', '8X' ], + 'ACD U' => [ 'HTC', '8X' ], + 'Accord' => [ 'HTC', '8X' ], + 'C620(d|e|t)!' => [ 'HTC', '8X' ], + 'C625(a|b)!' => [ 'HTC', '8X' ], + '8X by HTC' => [ 'HTC', '8X' ], + 'Windows Phone 8X by HTC!' => [ 'HTC', '8X' ], + 'WindowsPhone8Xby' => [ 'HTC', '8X' ], + 'PM23300' => [ 'HTC', '8X' ], + 'htc 8x' => [ 'HTC', '8X' ], + 'A620(b|d|e|m|t)!' => [ 'HTC', '8S' ], + '8S' => [ 'HTC', '8S' ], + '8S by HTC' => [ 'HTC', '8S' ], + 'Windows Phone 8S by HTC!' => [ 'HTC', '8S' ], + 'WindowsPhone8Sby' => [ 'HTC', '8S' ], + 'HTCPO881' => [ 'HTC', '8XT' ], + 'HTC6995LVW' => [ 'HTC', 'One (M8) for Windows' ], + '0P6B140' => [ 'HTC', 'One (M8) for Windows' ], + '0P6B180' => [ 'HTC', 'One (M8) for Windows' ], + 'HUAWEI Ascend W1!' => [ 'Huawei', 'Ascend W1' ], + 'HUAWEI ?W1-(C00|U00|U34)!' => [ 'Huawei', 'Ascend W1' ], + 'W1-(C00|U00|U34)!' => [ 'Huawei', 'Ascend W1' ], + 'H883G' => [ 'Huawei', 'Ascend W1' ], + 'HUAWEI ?W2-(T00|T01|U00|U051)!' => [ 'Huawei', 'Ascend W2' ], + 'W2-(T00|T01|U00|U051)!' => [ 'Huawei', 'Ascend W2' ], + '4Afrika' => [ 'Huawei', '4Afrika' ], + 'Andi4L' => [ 'iBall', 'Andi 4L Pulse' ], + 'M1010' => [ 'Ingram Micro', 'M1010' ], + 'Titanium Wind W4' => [ 'Karbonn', 'Titanium Wind W4' ], + 'W4' => [ 'Karbonn', 'Titanium Wind W4' ], + 'Thunder 340W' => [ 'KAZAM', 'Thunder 340W' ], + 'Thunder 450W' => [ 'KAZAM', 'Thunder 450W' ], + 'SOUL2' => [ 'Kruger&Matz', 'Soul 2' ], + 'iris Win 1' => [ 'Lava', 'Iris Win 1' ], + 'Win1' => [ 'Lava', 'Iris Win 1' ], + '- Lazer SMART WIND' => [ 'Lazer', 'Smart Wind' ], // By Archos + 'GW910' => [ 'LG', 'Optimus 7' ], + 'LG-E740!' => [ 'LG', 'Miracle' ], + 'LG-E-?900!' => [ 'LG', 'Optimus 7' ], + 'LG-E906' => [ 'LG', 'Jil Sander' ], + 'LG-C900!' => [ 'LG', 'Optimus 7Q' ], + 'VW820' => [ 'LG', 'Lancet' ], + 'Quantum' => [ 'LG', 'Quantum' ], + 'Harley Davidson' => [ 'NGM', 'Harley Davidson' ], + 'Harley-Davidson' => [ 'NGM', 'Harley Davidson' ], + 'NEO' => [ 'NuAns', 'Neo' ], + 'MegaFon SP-W1' => [ 'Мегафон', 'SP-W1' ], + 'MWP-47!' => [ 'Miia', 'Windows Phone 4.7" iimotion' ], + 'W121' => [ 'Micromax', 'Canvas Win W121' ], + 'MICROMAX-W121' => [ 'Micromax', 'Canvas Win W121' ], + 'M5w' => [ 'Mint', 'M5 Windows' ], + 'TC70' => [ 'Motorola', 'TC70' ], // Motorola Solutions + 'MouseComputer MADOSMA Q501' => [ 'MouseComputer', 'MADOSMA Q501' ], + + '(Lumia ?|Nokia ?)?[0-9]{3,4}!!' => [ + 'Lumia 430!' => [ 'Microsoft', 'Lumia 430' ], + 'Lumia 435!' => [ 'Microsoft', 'Lumia 435' ], + '(Lumia ?|Nokia ?)?505!' => [ 'Nokia', 'Lumia 505' ], + '(Lumia ?|Nokia ?)?510!' => [ 'Nokia', 'Lumia 510' ], + '(Lumia ?|Nokia ?)?520!' => [ 'Nokia', 'Lumia 520' ], + '(Lumia ?|Nokia ?)?521!' => [ 'Nokia', 'Lumia 521' ], + '(Lumia ?|Nokia ?)?525!' => [ 'Nokia', 'Lumia 525' ], + '(Lumia ?|Nokia ?)?526!' => [ 'Nokia', 'Lumia 526' ], + '(Lumia ?|Nokia ?)?530!' => [ 'Nokia', 'Lumia 530' ], + 'Lumia 532!' => [ 'Microsoft', 'Lumia 532' ], + 'Lumia 535!' => [ 'Microsoft', 'Lumia 535' ], + 'Lumia 540!' => [ 'Microsoft', 'Lumia 540' ], + 'Lumia 550!' => [ 'Microsoft', 'Lumia 550' ], + '(Lumia ?|Nokia ?)?610!' => [ 'Nokia', 'Lumia 610' ], + '(Lumia ?|Nokia ?)?620!' => [ 'Nokia', 'Lumia 620' ], + '(Lumia ?|Nokia ?)?625!' => [ 'Nokia', 'Lumia 625' ], + '(Lumia ?|Nokia ?)?630!' => [ 'Nokia', 'Lumia 630' ], + '(Lumia ?|Nokia ?)?635!' => [ 'Nokia', 'Lumia 635' ], + '(Lumia ?|Nokia ?)?636!' => [ 'Nokia', 'Lumia 636' ], + 'Lumia 638' => [ 'Nokia', 'Lumia 638' ], + '(Lumia ?|Nokia ?)?640 XL!' => [ 'Microsoft', 'Lumia 640 XL' ], + '(Lumia ?|Nokia ?)?640!' => [ 'Microsoft', 'Lumia 640' ], + 'Lumia 650!' => [ 'Microsoft', 'Lumia 650' ], + '(Lumia ?|Nokia ?)?710!' => [ 'Nokia', 'Lumia 710' ], + '(Lumia ?|Nokia ?)?719!' => [ 'Nokia', 'Lumia 719' ], + '(Lumia ?|Nokia ?)?720!' => [ 'Nokia', 'Lumia 720' ], + 'Lumia 730!' => [ 'Nokia', 'Lumia 730' ], + 'Lumia 735!' => [ 'Nokia', 'Lumia 735' ], + '(Lumia ?|Nokia ?)?800!' => [ 'Nokia', 'Lumia 800' ], + '(Lumia ?|Nokia ?)?810!' => [ 'Nokia', 'Lumia 810' ], + '(Lumia ?|Nokia ?)?820!' => [ 'Nokia', 'Lumia 820' ], + '(Lumia ?|Nokia ?)?822!' => [ 'Nokia', 'Lumia 822' ], + '(Lumia ?|Nokia ?)?830!' => [ 'Nokia', 'Lumia 830' ], + 'Lumia 850!' => [ 'Microsoft', 'Lumia 850' ], + '(Lumia ?|Nokia ?)?900!' => [ 'Nokia', 'Lumia 900' ], + '(Lumia ?|Nokia ?)?920!' => [ 'Nokia', 'Lumia 920' ], + '(Lumia ?|Nokia ?)?925!' => [ 'Nokia', 'Lumia 925' ], + '(Lumia ?|Nokia ?)?928!' => [ 'Nokia', 'Lumia 928' ], + '(Lumia ?|Nokia ?)?929!' => [ 'Nokia', 'Lumia 929 Icon' ], + '(Lumia ?|Nokia ?)?930!' => [ 'Nokia', 'Lumia 930' ], + 'Lumia 950 XL!' => [ 'Microsoft', 'Lumia 950 XL' ], + 'Lumia 950!' => [ 'Microsoft', 'Lumia 950' ], + '(Lumia ?|Nokia ?)?909!' => [ 'Nokia', 'Lumia 1020' ], // 909 was the original name of the 1020 + '(Lumia ?|Nokia ?)?1020!' => [ 'Nokia', 'Lumia 1020' ], + '(Lumia ?|Nokia ?)?1320!' => [ 'Nokia', 'Lumia 1320' ], + '(Lumia ?|Nokia ?)?1520!' => [ 'Nokia', 'Lumia 1520' ], + 'Lumia 1530' => [ 'Microsoft', 'Lumia 1530' ], + ], + + 'RM-[0-9]{3,4}!!' => [ + 'RM-1099!' => [ 'Microsoft', 'Lumia 430' ], + 'RM-10(68|69|70|71)!' => [ 'Microsoft', 'Lumia 435' ], + 'RM-1114!' => [ 'Microsoft', 'Lumia 435' ], + 'RM-9(13|14|15)!' => [ 'Nokia', 'Lumia 520' ], + 'RM-917!' => [ 'Nokia', 'Lumia 521' ], + 'RM-998!' => [ 'Nokia', 'Lumia 525' ], + 'RM-997!' => [ 'Nokia', 'Lumia 526' ], + 'RM-10(17|18|19|20)!' => [ 'Nokia', 'Lumia 530' ], + 'RM-10(31|32|34)!' => [ 'Microsoft', 'Lumia 532' ], + 'RM-1115!' => [ 'Microsoft', 'Lumia 532' ], + 'RM-10(89|90|91|92)!' => [ 'Microsoft', 'Lumia 535' ], + 'RM-1141!' => [ 'Microsoft', 'Lumia 540' ], + 'RM-1127!' => [ 'Microsoft', 'Lumia 550' ], + 'RM-846!' => [ 'Nokia', 'Lumia 620' ], + 'RM-9(41|42|43)!' => [ 'Nokia', 'Lumia 625' ], + 'RM-9(76|77|78|79)!' => [ 'Nokia', 'Lumia 630' ], + 'RM-9(74|75)!' => [ 'Nokia', 'Lumia 635' ], + 'RM-1078!' => [ 'Nokia', 'Lumia 635' ], + 'RM-1027!' => [ 'Nokia', 'Lumia 636' ], + 'RM-1010!' => [ 'Nokia', 'Lumia 638' ], + 'RM-10(72|74|75|77)!' => [ 'Microsoft', 'Lumia 640' ], + 'RM-11(09|13)!' => [ 'Microsoft', 'Lumia 640' ], + 'RM-10(63|64|65|66|67|73|96)!' => [ 'Microsoft', 'Lumia 640 XL' ], + 'RM-11(52|54)!' => [ 'Microsoft', 'Lumia 650' ], + 'RM-8(85|87)!' => [ 'Nokia', 'Lumia 720' ], + 'RM-1040!' => [ 'Nokia', 'Lumia 730' ], + 'RM-1038!' => [ 'Nokia', 'Lumia 735' ], + 'RM-878!' => [ 'Nokia', 'Lumia 810' ], + 'RM-8(24|25|26)!' => [ 'Nokia', 'Lumia 820' ], + 'RM-845!' => [ 'Nokia', 'Lumia 822' ], + 'RM-9(83|84|85)!' => [ 'Nokia', 'Lumia 830' ], + 'RM-8(20|21|22)!' => [ 'Nokia', 'Lumia 920' ], + 'RM-867!' => [ 'Nokia', 'Lumia 920' ], + 'RM-8(92|93)!' => [ 'Nokia', 'Lumia 925' ], + 'RM-910!' => [ 'Nokia', 'Lumia 925' ], + 'RM-955!' => [ 'Nokia', 'Lumia 925T' ], + 'RM-860!' => [ 'Nokia', 'Lumia 928' ], + 'RM-927!' => [ 'Nokia', 'Lumia 929 Icon' ], + 'RM-10(45|87)!' => [ 'Nokia', 'Lumia 930' ], + 'RM-11(04|18)!' => [ 'Microsoft', 'Lumia 950' ], + 'RM-1085!' => [ 'Microsoft', 'Lumia 950 XL' ], + 'RM-1116!' => [ 'Microsoft', 'Lumia 950 XL' ], + 'RM-8(75|76|77)!' => [ 'Nokia', 'Lumia 1020' ], + 'RM-9(94|95|96)!' => [ 'Nokia', 'Lumia 1320' ], + 'RM-9(37|38|39|40)!' => [ 'Nokia', 'Lumia 1520' ], + ], + + 'id[0-9]{3,3}!!' => [ + 'id102!' => [ 'Nokia', 'Lumia 822' ], + 'id308!' => [ 'Nokia', 'Lumia 1520' ], + 'id313!' => [ 'Nokia', 'Lumia 635' ], + 'id316!' => [ 'Nokia', 'Lumia 530' ], + ], + + 'SeaRay' => [ 'Nokia', 'Lumia 800' ], + 'Semaphore' => [ 'Nokia', '"Juggernaut Semaphore"' ], + 'Surface Phone' => [ 'Microsoft', 'Surface Phone' ], + 'ONIX AWP4-215' => [ 'ONYX', 'AWP4-215' ], + 'QSMART STORM W408' => [ 'Q-Mobile', 'Q-Smart Storm W408' ], + 'QSMART DREAM W473' => [ 'Q-Mobile', 'Q-Smart Dream W473' ], + 'QSMART STORM W510' => [ 'Q-Mobile', 'Q-Smart Storm W510' ], + 'FZ-E1' => [ 'Panasonic', 'Toughpad FZ-E1' ], + 'PSP8400DUO' => [ 'Prestigio', 'MultiPhone 8400 Duo' ], + 'PSP8500DUO' => [ 'Prestigio', 'MultiPhone 8500 Duo' ], + 'PRESTIGIO-PSP8500DUO' => [ 'Prestigio', 'MultiPhone 8500 Duo' ], + + 'GT-[IS][0-9]{4,4}!!' => [ + 'GT-I8350!' => [ 'Samsung', 'Omnia W' ], + 'GT-i8700' => [ 'Samsung', 'Omnia 7' ], + 'GT-I8710' => [ 'Samsung', 'Ativ S' ], + 'GT-I8750' => [ 'Samsung', 'Ativ S' ], + 'GT-S7530!' => [ 'Samsung', 'Omnia M' ], + ], + + 'SGH-[IT][0-9]{3,3}!!' => [ + 'SGH-I187' => [ 'Samsung', 'Ativ S Neo' ], + 'SGH-i667' => [ 'Samsung', 'Focus 2' ], + 'SGH-i677' => [ 'Samsung', 'Focus Flash' ], + 'SGH-i707' => [ 'Samsung', 'Taylor' ], // Developer phone - never released + 'SGH-i917!' => [ 'Samsung', 'Focus' ], + 'SGH-i937!' => [ 'Samsung', 'Focus S' ], + 'SGH-T899M' => [ 'Samsung', 'Ativ S' ], + ], + + 'SM-W750V' => [ 'Samsung', 'Ativ SE' ], + 'SPH-I800' => [ 'Samsung', 'Ativ S Neo' ], + 'SCH-R860U' => [ 'Samsung', 'Ativ Odyssey' ], + 'SCH-I930' => [ 'Samsung', 'Ativ Odyssey' ], + 'Ativ S' => [ 'Samsung', 'Ativ S' ], + 'ATIV S Neo' => [ 'Samsung', 'Ativ S Neo' ], + 'CETUS' => [ 'Samsung', 'Focus' ], + 'I917' => [ 'Samsung', 'Focus' ], + 'Focus i917!' => [ 'Samsung', 'Focus' ], + 'FOCUS S' => [ 'Samsung', 'Focus S' ], + 'OM(NI|IN)A ?7!' => [ 'Samsung', 'Omnia 7' ], + 'Omnia W' => [ 'Samsung', 'Omnia W' ], + 'Haden' => [ 'Samsung', 'Omnia W' ], + 'Taylor' => [ 'Samsung', 'Taylor' ], + 'S606' => [ 'TCL', 'Horizon S606' ], + 'TSUNAGI' => [ 'Toshiba', 'Tsunagi' ], + 'TG01' => [ 'Toshiba', 'TG01' ], + 'WP 4.7' => [ 'Trekstor', 'WP 4.7' ], + 'MI4' => [ 'Xiaomi', 'Mi 4' ], + 'Win-Q900S' => [ 'XOLO', 'Win Q900s' ], + 'Win Q1000' => [ 'XOLO', 'Win Q1000' ], + 'WinQ1000' => [ 'XOLO', 'Win Q1000' ], + 'Billy 4' => [ 'Yezz', 'Billy 4' ], + 'Billy 4.7' => [ 'Yezz', 'Billy 4.7' ], + '47' => [ 'Yezz', 'Monaco 47' ], + 'USCCN859' => [ 'ZTE', 'N859 Render' ], + 'N880e!' => [ 'ZTE', 'N880e' ], + 'V965W' => [ 'ZTE', 'V965W Tania' ], + 'Tania' => [ 'ZTE', 'V965W Tania' ], + + + 'Microsoft!' => [ null, null ], + 'Windows!' => [ null, null ], + 'Virtual!' => [ null, null ], + 'Android!' => [ null, null ], + 'Linux!' => [ null, null ], + '<model>!' => [ null, null ], + 'XXX!' => [ null, null ], + 'InfoPath!' => [ null, null ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-cfnetwork.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-cfnetwork.php new file mode 100644 index 0000000..0be7185 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-cfnetwork.php @@ -0,0 +1,97 @@ +<?php + +namespace WhichBrowser\Data; + +CFNetwork::$OSX = [ + '1.1' => [ 'value' => '10.2' ], + '1.2.1' => [ 'value' => '10.3.2' ], + '1.2.2' => [ 'value' => '10.3.9' ], + '1.2.6' => [ 'value' => '10.3.9' ], + '128' => [ 'value' => '10.4' ], + '128.2' => [ 'value' => '10.4.2' ], + '129.5' => [ 'value' => '10.4.3' ], + '129.9' => [ 'value' => '10.4.4' ], + '129.10' => [ 'value' => '10.4.4' ], + '129.13' => [ 'value' => '10.4.6' ], + '129.16' => [ 'value' => '10.4.7' ], + '129.18' => [ 'value' => '10.4.8' ], + '129.20' => [ 'value' => '10.4.9' ], + '129.21' => [ 'value' => '10.4.10' ], + '129.22' => [ 'value' => '10.4.11' ], + '217' => [ 'value' => '10.5' ], + '220' => [ 'value' => '10.5.1' ], + '221.5' => [ 'value' => '10.5.2' ], + '330' => [ 'value' => '10.5.3' ], + '330.4' => [ 'value' => '10.5.4' ], + '339.5' => [ 'value' => '10.5.5' ], + '422.11' => [ 'value' => '10.5.6' ], + '438.12' => [ 'value' => '10.5.7' ], + '438.14' => [ 'value' => '10.5.8' ], + '454.4' => [ 'value' => '10.6.0' ], + '454.5' => [ 'value' => '10.6.2' ], + '454.9.4' => [ 'value' => '10.6.3' ], + '454.9.7' => [ 'value' => '10.6.4' ], + '454.11.5' => [ 'value' => '10.6.5' ], + '454.11.12' => [ 'value' => '10.6.7' ], + '454.12.4' => [ 'value' => '10.6.8' ], + '520.0.13' => [ 'value' => '10.7.1' ], + '520.2.5' => [ 'value' => '10.7.2' ], + '520.3.2' => [ 'value' => '10.7.3' ], + '520.4.3' => [ 'value' => '10.7.4' ], + '520.5.1' => [ 'value' => '10.7.5' ], + '596.1' => [ 'value' => '10.8.1' ], + '596.2.3' => [ 'value' => '10.8.2' ], + '596.3.3' => [ 'value' => '10.8.3' ], + '596.4.3' => [ 'value' => '10.8.4' ], + '596.5' => [ 'value' => '10.8.5' ], + '673.0.3' => [ 'value' => '10.9' ], + '673.2.1' => [ 'value' => '10.9.2' ], + '673.4' => [ 'value' => '10.9.3' ], + '720.0.9' => [ 'value' => '10.10' ], + '720.1.1' => [ 'value' => '10.10.1' ], + '720.2.4' => [ 'value' => '10.10.2' ], + '720.3.13' => [ 'value' => '10.10.3' ], + '720.4.4' => [ 'value' => '10.10.4' ], + '720.5.7' => [ 'value' => '10.10.5' ], + '760.0.5' => [ 'value' => '10.11' ], + '760.1.2' => [ 'value' => '10.11.1' ], + '760.2.6' => [ 'value' => '10.11.2' ], + '760.4.2' => [ 'value' => '10.11.4' ], + '760.5' => [ 'value' => '10.11.4' ], + '760.5.1' => [ 'value' => '10.11.5' ], +]; + +CFNetwork::$IOS = [ + '459' => [ 'value' => '3.1.3' ], + '467.12' => [ 'value' => '3.2' ], + '485.2' => [ 'value' => '4.0' ], + '485.10.2' => [ 'value' => '4.1' ], + '485.12.7' => [ 'value' => '4.2.1' ], + '485.12.30' => [ 'value' => '4.2.8' ], + '485.13.9' => [ 'value' => '4.3' ], + '548.0.3' => [ 'value' => '5.0' ], + '548.0.4' => [ 'value' => '5.0.1' ], + '548.1.4' => [ 'value' => '5.1' ], + '602' => [ 'value' => '6.0' ], + '609' => [ 'value' => '6.0' ], + '609.1.4' => [ 'value' => '6.1.2' ], + '671' => [ 'value' => '7.0' ], + '672.0.2' => [ 'value' => '7.0' ], + '672.0.8' => [ 'value' => '7.0.3' ], + '672.1.13' => [ 'value' => '7.1' ], + '672.1.14' => [ 'value' => '7.1.1' ], + '672.1.15' => [ 'value' => '7.1.2' ], + '711.0.6' => [ 'value' => '8.0' ], + '711.1.12' => [ 'value' => '8.1' ], + '711.1.16' => [ 'value' => '8.1.1' ], + '711.2.23' => [ 'value' => '8.2' ], + '711.3.18' => [ 'value' => '8.3' ], + '711.4.6' => [ 'value' => '8.4' ], + '711.5.6' => [ 'value' => '8.4.1' ], + '758.0.2' => [ 'value' => '9.0' ], + '758.1.6' => [ 'value' => '9.1' ], + '758.2.7' => [ 'value' => '9.2' ], + '758.2.8' => [ 'value' => '9.2' ], + '758.3.15' => [ 'value' => '9.3' ], + '758.4.3' => [ 'value' => '9.3.2' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-darwin.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-darwin.php new file mode 100644 index 0000000..f504611 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/os-darwin.php @@ -0,0 +1,27 @@ +<?php + +namespace WhichBrowser\Data; + +Darwin::$OSX = [ + '1' => [ 'value' =>'10.0' ], + '5' => [ 'value' =>'10.1' ], + '6' => [ 'value' =>'10.2' ], + '7' => [ 'value' =>'10.3' ], + '8' => [ 'value' =>'10.4' ], + '9' => [ 'value' =>'10.5' ], + '10' => [ 'value' =>'10.6' ], + '11' => [ 'value' =>'10.7' ], + '12' => [ 'value' =>'10.8' ], + '13' => [ 'value' =>'10.9' ], + '14' => [ 'value' =>'10.10' ], + '15' => [ 'value' =>'10.11' ], +]; + +Darwin::$IOS = [ + '9' => [ 'value' =>'1' ], + '10' => [ 'value' =>'4' ], + '11' => [ 'value' =>'5' ], + '13' => [ 'value' =>'6' ], + '14' => [ 'value' =>'7' ], + '15' => [ 'value' =>'9' ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/profiles.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/profiles.php new file mode 100644 index 0000000..bdb4f9a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/profiles.php @@ -0,0 +1,10044 @@ +<?php + +/* This file is automatically generated, do not edit manually! */ + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants\DeviceType; + +DeviceProfiles::$PROFILES = [ + 'http://go.acer.com/?id=17884' => [ 'Acer', 'All-in-One DA223HQL', 'Android', ], + 'http://support.acer.com/uaprofile/Acer_E110_profile.xml' => [ 'Acer', 'beTouch E110', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_E130_profile_no_3rd_drm_no_java.xml' => [ 'Acer', 'beTouch E130', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_E400_Profile.xml' => [ 'Acer', 'beTouch E400', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_Acer_A9_Profile.xml' => [ 'Acer', 'CloudMobile', 'Aliyun OS', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S500_IML74K_Profile.xml' => [ 'Acer', 'CloudMobile', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S500_IMM76D_Profile.xml' => [ 'Acer', 'CloudMobile', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S500_IMM76I_Profile.xml' => [ 'Acer', 'CloudMobile', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S500_JRO03L_Profile.xml' => [ 'Acer', 'CloudMobile', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S500_JZO54K_Profile.xml' => [ 'Acer', 'CloudMobile', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_E100_Profile.XML' => [ 'Acer', 'E100', 'Windows Mobile', DeviceType::MOBILE ], + 'http://global-download.acer.com/SupportFiles/Files/UAProfile/XML/Acer_A1-810_JDQ39_Profile.xml' => [ 'Acer', 'Iconia A1-810', 'Android', DeviceType::TABLET ], + 'http://global-download.acer.com/SupportFiles/Files/UAProfile/XML/Acer_A1-811_JDQ39_Profile.xml' => [ 'Acer', 'Iconia A1-811', 'Android', DeviceType::MOBILE ], + 'http://global-download.acer.com/SupportFiles/Files/UAProfile/XML/Acer_A1-812_JDQ39_Profile.xml' => [ 'Acer', 'Iconia A1-812', 'Android', DeviceType::TABLET ], + 'http://go.acer.com/?id=5566' => [ 'Acer', 'Iconia A1-820', 'Android', DeviceType::TABLET ], + 'http://go.acer.com/?id=17979' => [ 'Acer', 'Iconia A1-830', 'Android', DeviceType::TABLET ], + 'http://go.acer.com/?id=17995' => [ 'Acer', 'Iconia One 7 B1-730 HD', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_S300_Profile.xml' => [ 'Acer', 'Iconia Smart', 'Android', DeviceType::MOBILE ], + 'http://global-download.acer.com/SupportFiles/Files/UAProfile/XML/Acer_A1-713_JDQ39_Profile.xml' => [ 'Acer', 'Iconia Tab 7 A1-713', 'Android', DeviceType::TABLET ], + 'http://global-download.acer.com/SupportFiles/Files/UAProfile/XML/Acer_A1-713_KOT49H_Profile.xml' => [ 'Acer', 'Iconia Tab 7 A1-713', 'Android', DeviceType::TABLET ], + 'http://global-download.acer.com/SupportFiles/Files/UAProfile/XML/Acer_A1-713HD_KOT49H_Profile.xml' => [ 'Acer', 'Iconia Tab 7 A1-713 HD', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A100_IML74K_Profile.xml' => [ 'Acer', 'Iconia Tab A100', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A100_Profile.xml' => [ 'Acer', 'Iconia Tab A100', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/A100.xml' => [ 'Acer', 'Iconia Tab A100', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A101_IML74K_Profile.xml' => [ 'Acer', 'Iconia Tab A101', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A101_Profile.xml' => [ 'Acer', 'Iconia Tab A101', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A200_Profile.xml' => [ 'Acer', 'Iconia Tab A200', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A210_IMM76D_Profile.xml' => [ 'Acer', 'Iconia Tab A210', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A210_JRO03H_Profile.xml' => [ 'Acer', 'Iconia Tab A210', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A210_JRO4HDb1_Profile.xml' => [ 'Acer', 'Iconia Tab A210', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A210_JRO4HDb3_Profile.xml' => [ 'Acer', 'Iconia Tab A210', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A210_JZO54K_Profile.xml' => [ 'Acer', 'Iconia Tab A210', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A211_IMM76D_Profile.xml' => [ 'Acer', 'Iconia Tab A211', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A211_JRO03H_Profile.xml' => [ 'Acer', 'Iconia Tab A211', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A500_IML74K_Profile.xml' => [ 'Acer', 'Iconia Tab A500', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A500_IMM76D_Profile.xml' => [ 'Acer', 'Iconia Tab A500', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A500_Profile.xml' => [ 'Acer', 'Iconia Tab A500', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A501_IML74K_Profile.xml' => [ 'Acer', 'Iconia Tab A501', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A501_Profile.xml' => [ 'Acer', 'Iconia Tab A501', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A510_JRO03H_Profile.xml' => [ 'Acer', 'Iconia Tab A510', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A510_JZO54K_Profile.xml' => [ 'Acer', 'Iconia Tab A510', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A510_Profile.xml' => [ 'Acer', 'Iconia Tab A510', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A511_IML74K_Profile.xml' => [ 'Acer', 'Iconia Tab A511', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A511_JZO54K_Profile.xml' => [ 'Acer', 'Iconia Tab A511', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A700_IMM76D_Profile.xml' => [ 'Acer', 'Iconia Tab A700', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A700_JRO03H_Profile.xml' => [ 'Acer', 'Iconia Tab A700', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A700_Profile.xml' => [ 'Acer', 'Iconia Tab A700', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A701_IMM76D_Profile.xml' => [ 'Acer', 'Iconia Tab A701', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_A701_JRO03H_Profile.xml' => [ 'Acer', 'Iconia Tab A701', 'Android', DeviceType::TABLET ], + 'http://support.acer.com/UAprofile/Acer_S100_Profile.xml' => [ 'Acer', 'Liquid', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com?id=17494' => [ 'Acer', 'Liquid E2', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=17895' => [ 'Acer', 'Liquid E3', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com?id=17895' => [ 'Acer', 'Liquid E3', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=17999' => [ 'Acer', 'Liquid E700', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_E210_Profile.xml' => [ 'Acer', 'Liquid Express', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_E320_Profile.xml' => [ 'Acer', 'Liquid Express', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=18008' => [ 'Acer', 'Liquid Jade', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=18009' => [ 'Acer', 'Liquid Jade S', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=83843' => [ 'Acer', 'Liquid Jade Z', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_E310_Profile.xml' => [ 'Acer', 'Liquid mini', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S120_Profile.xml' => [ 'Acer', 'Liquid mt', 'Android', DeviceType::MOBILE ], + 'http://global-download.acer.com/SupportFiles/Files/UAProfile/XML/Acer_S510_JDQ39_Profile.xml' => [ 'Acer', 'Liquid S', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=17873' => [ 'Acer', 'Liquid S', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=17891' => [ 'Acer', 'Liquid S2', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S520_JDQ39_Profile.xml' => [ 'Acer', 'Liquid S2', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_Z110_UAProfile.xml' => [ 'Acer', 'Liquid Z', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_Z120_UAProfile.xml' => [ 'Acer', 'Liquid Z2', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=18020' => [ 'Acer', 'Liquid Z200', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=83844' => [ 'Acer', 'Liquid Z205', 'Android', DeviceType::MOBILE ], + 'http://global-download.acer.com/SupportFiles/Files/UAProfile/XML/Acer_Z130_JDQ39_Profile.xml' => [ 'Acer', 'Liquid Z3', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=84411' => [ 'Acer', 'Liquid Z330', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=17980' => [ 'Acer', 'Liquid Z4', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=18083' => [ 'Acer', 'Liquid Z410', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=17940' => [ 'Acer', 'Liquid Z5', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=83841' => [ 'Acer', 'Liquid Z520', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAProfile/Acer_P400_Profile.xml' => [ 'Acer', 'neoTouch P400', 'Windows Mobile', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S200_Profile.xml' => [ 'Acer', 'neoTouch S200', 'Windows Mobile', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_S110_Profile.xml' => [ 'Acer', 'Stream', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_TD600_profile.xml' => [ 'Acer', 'TD600', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=17684' => [ 'Acer', 'Touch and 3D Monitor DA245HQL', 'Android', ], + 'http://www.fly-phone.ru/UAP/Flylife_Connect_3G_2.xml' => [ 'AG Mobile', 'Chrome Go-Tab 7.0', 'Android', DeviceType::TABLET ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_JR_TV_D140T.xml' => [ 'AG Mobile', 'Chrome Selfie', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO6_0HD.xml' => [ 'Ainovo', 'Novo7 Aurora', 'Android', DeviceType::TABLET ], + 'http://www.airnessmobile.com/uaprof/Airness-Air99.xml' => [ 'Airness', 'Air99', null, DeviceType::MOBILE ], + 'http://www.airnessmobile.com/uaprof/HT-1.xml' => [ 'Airness', 'HT-1', null, DeviceType::MOBILE ], + 'http://www.airnessmobile.com/uaprof/slide99.xml' => [ 'Airness', 'Slide99', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/9021A.xml' => [ 'Alcaltel', 'One Touch POP8', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Alcatel_A205G.rdf' => [ 'Alcatel', 'A205G', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Alcatel_A205G-B.rdf' => [ 'Alcatel', 'A205G-B', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A206G.rdf' => [ 'Alcatel', 'A206G', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Alcatel_A207BG.rdf' => [ 'Alcatel', 'A207BG', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A383G.rdf' => [ 'Alcatel', 'A383G', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A392G.rdf' => [ 'Alcatel', 'A392G', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A392T.rdf' => [ 'Alcatel', 'A392T', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/A480G.xml' => [ 'Alcatel', 'A480G', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/A621R.xml' => [ 'Alcatel', 'A621R', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp-mpd.alcatel.com/files/ALCATEL-BF4_2.0.rdf' => [ 'Alcatel', 'BF4', null, DeviceType::MOBILE ], + 'http://www-ccpp-mpd.alcatel.com/files/ALCATEL-BF5_1.0.rdf' => [ 'Alcatel', 'BF5', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/odm/ALCATEL_D6.rdf' => [ 'Alcatel', 'D6', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/TCL/Alcatel4044T-Chameleon/4044TV02.RDF' => [ 'Alcatel', 'Go Flip', 'KaiOS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4044M.xml' => [ 'Alcatel', 'Go Flip', 'KaiOS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4044N.xml' => [ 'Alcatel', 'Go Flip', 'KaiOS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4044O.xml' => [ 'Alcatel', 'Go Flip', 'KaiOS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4044V.XML' => [ 'Alcatel', 'Go Flip', 'KaiOS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4044W.xml' => [ 'Alcatel', 'Go Flip', 'KaiOS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4060A.xml' => [ 'Alcatel', 'IDEAL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/alcatel/wsa622gl/wsa622gl.xml' => [ 'Alcatel', 'Jitterbug Smart', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Mobile_Sosh.xml' => [ 'Alcatel', 'Le mobile Sosh', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-MD01.rdf' => [ 'Alcatel', 'MD01', null, DeviceType::MOBILE ], + 'http://www-ccpp-mpd.alcatel.com/odm/OH1C_UAProf.rdf' => [ 'Alcatel', 'OH1C', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_2067X.rdf' => [ 'Alcatel', 'One Touch 2067', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_385JA.rdf' => [ 'Alcatel', 'One Touch 385', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT510A.rdf' => [ 'Alcatel', 'One Touch 510A', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_585F.rdf' => [ 'Alcatel', 'One Touch 585', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_602A.rdf' => [ 'Alcatel', 'One Touch 602', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_720.rdf' => [ 'Alcatel', 'One Touch 720', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_768T.rdf' => [ 'Alcatel', 'One Touch 768T', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-802.rdf' => [ 'Alcatel', 'One Touch 802', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_803A.rdf' => [ 'Alcatel', 'One Touch 803', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-806.rdf' => [ 'Alcatel', 'One Touch 806', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-807D.rdf' => [ 'Alcatel', 'One Touch 807', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_810D.rdf' => [ 'Alcatel', 'One Touch 810D', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_813.rdf' => [ 'Alcatel', 'One Touch 813', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_813A.rdf' => [ 'Alcatel', 'One Touch 813', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_813D.rdf' => [ 'Alcatel', 'One Touch 813', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_813FA.rdf' => [ 'Alcatel', 'One Touch 813FA', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_815.rdf' => [ 'Alcatel', 'One Touch 815', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_818A.rdf' => [ 'Alcatel', 'One Touch 818', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_819.rdf' => [ 'Alcatel', 'One Touch 819', null, DeviceType::MOBILE ], + 'http://www-ccpp-mpd.alcatel.com/odm/OT835_UAProf.rdf' => [ 'Alcatel', 'One Touch 835', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_838.rdf' => [ 'Alcatel', 'One Touch 838', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT871A.rdf' => [ 'Alcatel', 'One Touch 871A', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_890.xml' => [ 'Alcatel', 'One Touch 890', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_890D.xml' => [ 'Alcatel', 'One Touch 890', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_900A.rdf' => [ 'Alcatel', 'One Touch 900', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_900M.rdf' => [ 'Alcatel', 'One Touch 900M', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_902A.rdf' => [ 'Alcatel', 'One Touch 902A', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_903.xml' => [ 'Alcatel', 'One Touch 903', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_903A.xml' => [ 'Alcatel', 'One Touch 903', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_903D.xml' => [ 'Alcatel', 'One Touch 903', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_905M.rdf' => [ 'Alcatel', 'One Touch 905', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_908.xml' => [ 'Alcatel', 'One Touch 908', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_908F.xml' => [ 'Alcatel', 'One Touch 908', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_908S.xml' => [ 'Alcatel', 'One Touch 908', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_909A.xml' => [ 'Alcatel', 'One Touch 909', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_916.xml' => [ 'Alcatel', 'One Touch 916', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_916A.xml' => [ 'Alcatel', 'One Touch 916', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_918.xml' => [ 'Alcatel', 'One Touch 918', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_918A.xml' => [ 'Alcatel', 'One Touch 918', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_918D.xml' => [ 'Alcatel', 'One Touch 918', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_918N.xml' => [ 'Alcatel', 'One Touch 918', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_918S.xml' => [ 'Alcatel', 'One Touch 918', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_918_Orange.xml' => [ 'Alcatel', 'One Touch 918', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-919.xml' => [ 'Alcatel', 'One Touch 919', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_922.xml' => [ 'Alcatel', 'One Touch 922', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_928D.xml' => [ 'Alcatel', 'One Touch 928', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-980.xml' => [ 'Alcatel', 'One Touch 980', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-980A.xml' => [ 'Alcatel', 'One Touch 980', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-981A.xml' => [ 'Alcatel', 'One Touch 981', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_One_touch_983.xml' => [ 'Alcatel', 'One Touch 983', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_One_touch_983A.xml' => [ 'Alcatel', 'One Touch 983', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_One_touch_983A_3G.xml' => [ 'Alcatel', 'One Touch 983', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_One_touch_983_3G.xml' => [ 'Alcatel', 'One Touch 983', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_985.xml' => [ 'Alcatel', 'One Touch 985', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_985A.xml' => [ 'Alcatel', 'One Touch 985', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_985D.xml' => [ 'Alcatel', 'One Touch 985', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_985N.xml' => [ 'Alcatel', 'One Touch 985', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ALCATEL-one_touch_990C+.xml' => [ 'Alcatel', 'One Touch 990', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/OT-990C.xml' => [ 'Alcatel', 'One Touch 990', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_990.xml' => [ 'Alcatel', 'One Touch 990', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_990A.xml' => [ 'Alcatel', 'One Touch 990', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_990S.xml' => [ 'Alcatel', 'One Touch 990', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_OT_990M.xml' => [ 'Alcatel', 'One Touch 990', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_991.xml' => [ 'Alcatel', 'One Touch 991', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_991A.xml' => [ 'Alcatel', 'One Touch 991', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_991D.xml' => [ 'Alcatel', 'One Touch 991', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_991T.xml' => [ 'Alcatel', 'One Touch 991', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_991_Orange.xml' => [ 'Alcatel', 'One Touch 991', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_992D.xml' => [ 'Alcatel', 'One Touch 992', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_993.xml' => [ 'Alcatel', 'One Touch 993', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_995.xml' => [ 'Alcatel', 'One Touch 995', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_995A.xml' => [ 'Alcatel', 'One Touch 995', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_996.xml' => [ 'Alcatel', 'One Touch 996', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_997.xml' => [ 'Alcatel', 'One Touch 997', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_one_touch_997D.xml' => [ 'Alcatel', 'One Touch 997', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A392CC_CC.rdf' => [ 'Alcatel', 'One Touch A392G', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A392CC_TELUS.rdf' => [ 'Alcatel', 'One Touch A392G', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5056O.xml' => [ 'Alcatel', 'One Touch Allura', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp-mpd.alcatel.com/files/ALCATEL-CTH3_MMS11_1.0.rdf' => [ 'Alcatel', 'One Touch C651', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-C700A.rdf' => [ 'Alcatel', 'One Touch C700', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-C701.rdf' => [ 'Alcatel', 'One Touch C701', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-C717.rdf' => [ 'Alcatel', 'One Touch C717', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-C825.rdf' => [ 'Alcatel', 'One Touch C825', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/onetouch_EVO7.xml' => [ 'Alcatel', 'One Touch Evo 7', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_EVO7HD.xml' => [ 'Alcatel', 'One Touch Evo 7 HD', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_EVO8HD.xml' => [ 'Alcatel', 'One Touch Evo 8 HD', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7024N.xml' => [ 'Alcatel', 'One Touch Fierce', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7024R.xml' => [ 'Alcatel', 'One Touch Fierce', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7024W.xml' => [ 'Alcatel', 'One Touch Fierce', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5054N.xml' => [ 'Alcatel', 'One Touch Fierce XL', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch4012X.xml' => [ 'Alcatel', 'One Touch Fire', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4012A.xml' => [ 'Alcatel', 'One Touch Fire', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4012X.xml' => [ 'Alcatel', 'One Touch Fire', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/fils/ONE_TOUCH_4012A.xml' => [ 'Alcatel', 'One Touch Fire', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch4019A.xml' => [ 'Alcatel', 'One Touch Fire C', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch4019X.xml' => [ 'Alcatel', 'One Touch Fire C', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch4019X_V2.0.xml' => [ 'Alcatel', 'One Touch Fire C', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4020D.xml' => [ 'Alcatel', 'One Touch Fire C', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch6015X.xml' => [ 'Alcatel', 'One Touch Fire E', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch6015X_v2.0.xml' => [ 'Alcatel', 'One Touch Fire E', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONETOUCH_Flash_Plus.xml' => [ 'Alcatel', 'One Touch Flash Plus', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7048A.xml' => [ 'Alcatel', 'One Touch Go Play', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7048X.xml' => [ 'Alcatel', 'One Touch Go Play', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_8020A.xml' => [ 'Alcatel', 'One Touch Hero', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_8020E.xml' => [ 'Alcatel', 'One Touch Hero', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7055A.xml' => [ 'Alcatel', 'One Touch Hero 2C', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6030A.xml' => [ 'Alcatel', 'One Touch Idol', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6030D.xml' => [ 'Alcatel', 'One Touch Idol', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6030N.xml' => [ 'Alcatel', 'One Touch Idol', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6030X.xml' => [ 'Alcatel', 'One Touch Idol', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6030X_Orange.xml' => [ 'Alcatel', 'One Touch Idol', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6037Y.xml' => [ 'Alcatel', 'One Touch Idol 2', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6037B.xml' => [ 'Alcatel', 'One Touch Idol 2 Dual', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6037K.xml' => [ 'Alcatel', 'One Touch Idol 2 Dual', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6016A.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6016D.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6016X.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6036A.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6036X.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6036Y.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6036Y_KK.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONETOUCH_6036X.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6036X.xml' => [ 'Alcatel', 'One Touch Idol 2 Mini S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6050A.xml' => [ 'Alcatel', 'One Touch Idol 2S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6050F.xml' => [ 'Alcatel', 'One Touch Idol 2S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6050Y.xml' => [ 'Alcatel', 'One Touch Idol 2S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6039A.xml' => [ 'Alcatel', 'One Touch Idol 3 (4.7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6039H.xml' => [ 'Alcatel', 'One Touch Idol 3 (4.7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6039J.xml' => [ 'Alcatel', 'One Touch Idol 3 (4.7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6039K.xml' => [ 'Alcatel', 'One Touch Idol 3 (4.7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6039S.xml' => [ 'Alcatel', 'One Touch Idol 3 (4.7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6039Y.xml' => [ 'Alcatel', 'One Touch Idol 3 (4.7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6039K.xml' => [ 'Alcatel', 'One Touch Idol 3 (4.7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6039S.xml' => [ 'Alcatel', 'One Touch Idol 3 (4.7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6045F.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6045B.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6045I.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6045I_M.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6045K.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6045K_M.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6045O.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6045Y.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH6045Y_M.xml' => [ 'Alcatel', 'One Touch Idol 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6055B.xml' => [ 'Alcatel', 'One Touch Idol 4', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6055I.xml' => [ 'Alcatel', 'One Touch Idol 4', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6055K.xml' => [ 'Alcatel', 'One Touch Idol 4', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6055P.xml' => [ 'Alcatel', 'One Touch Idol 4', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6055U.xml' => [ 'Alcatel', 'One Touch Idol 4', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6012D.xml' => [ 'Alcatel', 'One Touch Idol Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6014X.xml' => [ 'Alcatel', 'One Touch Idol Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_6012A.xml' => [ 'Alcatel', 'One Touch Idol Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_6012D.xml' => [ 'Alcatel', 'One Touch Idol Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_6012E.xml' => [ 'Alcatel', 'One Touch Idol Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_6012X.xml' => [ 'Alcatel', 'One Touch Idol Mini', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6034M.xml' => [ 'Alcatel', 'One Touch Idol S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6034R.xml' => [ 'Alcatel', 'One Touch Idol S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6034Y.xml' => [ 'Alcatel', 'One Touch Idol S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6035R.xml' => [ 'Alcatel', 'One Touch Idol S', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6031X.xml' => [ 'Alcatel', 'One Touch Idol Ultra', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6033A.xml' => [ 'Alcatel', 'One Touch Idol Ultra', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6033X.xml' => [ 'Alcatel', 'One Touch Idol Ultra', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6040A.xml' => [ 'Alcatel', 'One Touch Idol X', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6040D.xml' => [ 'Alcatel', 'One Touch Idol X', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6040X.xml' => [ 'Alcatel', 'One Touch Idol X', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6043D.xml' => [ 'Alcatel', 'One Touch Idol X+', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6032.xml' => [ 'Alcatel', 'One Touch Idol α', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6032A.xml' => [ 'Alcatel', 'One Touch Idol α', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5020A.xml' => [ 'Alcatel', 'One Touch M\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5020D.xml' => [ 'Alcatel', 'One Touch M\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5020E.xml' => [ 'Alcatel', 'One Touch M\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5020N.xml' => [ 'Alcatel', 'One Touch M\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5020T.xml' => [ 'Alcatel', 'One Touch M\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5020W.xml' => [ 'Alcatel', 'One Touch M\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5020X.xml' => [ 'Alcatel', 'One Touch M\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/9005X.xml' => [ 'Alcatel', 'One Touch One Touch Pixi 3 (8)', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4007A.xml' => [ 'Alcatel', 'One Touch Pixi', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4007D.xml' => [ 'Alcatel', 'One Touch Pixi', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4007X.xml' => [ 'Alcatel', 'One Touch Pixi', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch4022D.xml' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch4023A.xml' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATELOneTouch4023X.xml' => [ 'Alcatel', 'One Touch Pixi 3 (3.5)', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4014D.xml' => [ 'Alcatel', 'One Touch Pixi 3 (4)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5065A.xml' => [ 'Alcatel', 'One Touch Pixi 3 (5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5065D.xml' => [ 'Alcatel', 'One Touch Pixi 3 (5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5065X.xml' => [ 'Alcatel', 'One Touch Pixi 3 (5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5054D.xml' => [ 'Alcatel', 'One Touch Pixi 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5054O.xml' => [ 'Alcatel', 'One Touch Pixi 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5054S.xml' => [ 'Alcatel', 'One Touch Pixi 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5054T.xml' => [ 'Alcatel', 'One Touch Pixi 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5054X.xml' => [ 'Alcatel', 'One Touch Pixi 3 (5.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/9007A.xml' => [ 'Alcatel', 'One Touch Pixi 3 (7)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/9022X.xml' => [ 'Alcatel', 'One Touch Pixi 3 (8)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Alcatel_9022S.xml' => [ 'Alcatel', 'One Touch Pixi 3 (8)', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/Alcatel_4060O.xml' => [ 'Alcatel', 'One Touch Pixi 4 (6)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/alcatel_5098O.xml' => [ 'Alcatel', 'One Touch Pixi 4 (6)', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/alcatel/wsa571vl/wsa571vl.xml' => [ 'Alcatel', 'One Touch Pixi Avion', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/A570BL.xml' => [ 'Alcatel', 'One Touch Pixi Avion', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/alcatel/oda573vc/oda573vc.xml' => [ 'Alcatel', 'One Touch Pixi Bond', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONETOUCH_4024D.xml' => [ 'Alcatel', 'One Touch Pixi First', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONETOUCH_4024X.xml' => [ 'Alcatel', 'One Touch Pixi First', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4045A.xml' => [ 'Alcatel', 'One Touch Pop 2 (4)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4045D.xml' => [ 'Alcatel', 'One Touch Pop 2 (4)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4045L.xml' => [ 'Alcatel', 'One Touch Pop 2 (4)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5042A.xml' => [ 'Alcatel', 'One Touch Pop 2 (4.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5042D.xml' => [ 'Alcatel', 'One Touch Pop 2 (4.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5042W.xml' => [ 'Alcatel', 'One Touch Pop 2 (4.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5042X.xml' => [ 'Alcatel', 'One Touch Pop 2 (4.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5042Y.xml' => [ 'Alcatel', 'One Touch Pop 2 (4.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONETOUCH_5042G.xml' => [ 'Alcatel', 'One Touch Pop 2 (4.5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7043K.xml' => [ 'Alcatel', 'One Touch Pop 2 (5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7043Y.xml' => [ 'Alcatel', 'One Touch Pop 2 (5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7044A.xml' => [ 'Alcatel', 'One Touch Pop 2 (5) Premium', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7044X.xml' => [ 'Alcatel', 'One Touch Pop 2 (5) Premium', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7051X.xml' => [ 'Alcatel', 'One Touch Pop 3 (5)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5051J.xml' => [ 'Alcatel', 'One Touch Pop 4 (5.0)', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4016A.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4016X.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_4015T.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4015A.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4015D.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4015N.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4015T.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4015X.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/one_touch_4016X.xml' => [ 'Alcatel', 'One Touch Pop C1', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4032A.xml' => [ 'Alcatel', 'One Touch Pop C2', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4032D.xml' => [ 'Alcatel', 'One Touch Pop C2', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4032X.xml' => [ 'Alcatel', 'One Touch Pop C2', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4033A.xml' => [ 'Alcatel', 'One Touch Pop C3', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4033D.xml' => [ 'Alcatel', 'One Touch Pop C3', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4033E.xml' => [ 'Alcatel', 'One Touch Pop C3', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_4033X.xml' => [ 'Alcatel', 'One Touch Pop C3', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5036A.xml' => [ 'Alcatel', 'One Touch Pop C5', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5036D.xml' => [ 'Alcatel', 'One Touch Pop C5', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5036X.xml' => [ 'Alcatel', 'One Touch Pop C5', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5037A.xml' => [ 'Alcatel', 'One Touch Pop C5', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5037E.xml' => [ 'Alcatel', 'One Touch Pop C5', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5037X.xml' => [ 'Alcatel', 'One Touch Pop C5', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7040A.xml' => [ 'Alcatel', 'One Touch Pop C7', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7040D.xml' => [ 'Alcatel', 'One Touch Pop C7', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7040E.xml' => [ 'Alcatel', 'One Touch Pop C7', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7041D.xml' => [ 'Alcatel', 'One Touch Pop C7', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7041X.xml' => [ 'Alcatel', 'One Touch Pop C7', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7047A.xml' => [ 'Alcatel', 'One Touch Pop C9', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7047D.xml' => [ 'Alcatel', 'One Touch Pop C9', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7047E.xml' => [ 'Alcatel', 'One Touch Pop C9', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A995L.xml' => [ 'Alcatel', 'One Touch Pop Mega', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5050A.xml' => [ 'Alcatel', 'One Touch Pop S3', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5050X.xml' => [ 'Alcatel', 'One Touch Pop S3', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5050Y.xml' => [ 'Alcatel', 'One Touch Pop S3', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/7050Y.xml' => [ 'Alcatel', 'One Touch Pop S9', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7050Y.xml' => [ 'Alcatel', 'One Touch Pop S9', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A845L.xml' => [ 'Alcatel', 'One Touch Pop Star', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/6044D.xml' => [ 'Alcatel', 'One Touch Pop Up', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/P360X.xml' => [ 'Alcatel', 'One Touch POP10', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/9015B.xml' => [ 'Alcatel', 'One Touch POP7', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_P310A.xml' => [ 'Alcatel', 'One Touch POP7', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_P310X.xml' => [ 'Alcatel', 'One Touch POP7', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_P310X_KK.xml' => [ 'Alcatel', 'One Touch POP7', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/P330X.xml' => [ 'Alcatel', 'One Touch POP7S', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/P330X_orange.xml' => [ 'Alcatel', 'One Touch POP7S', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_P320A_TELUS.xml' => [ 'Alcatel', 'One Touch POP8', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_P320X.xml' => [ 'Alcatel', 'One Touch POP8', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_P321X.xml' => [ 'Alcatel', 'One Touch POP8', 'Android', DeviceType::TABLET ], + 'www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_P320A.xml' => [ 'Alcatel', 'One Touch POP8', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4030A.xml' => [ 'Alcatel', 'One Touch S\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4030D.xml' => [ 'Alcatel', 'One Touch S\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4030E.xml' => [ 'Alcatel', 'One Touch S\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4030X.xml' => [ 'Alcatel', 'One Touch S\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4030Y.xml' => [ 'Alcatel', 'One Touch S\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-S218.rdf' => [ 'Alcatel', 'One Touch S218', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-S319.rdf' => [ 'Alcatel', 'One Touch S319', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-S520.rdf' => [ 'Alcatel', 'One Touch S520', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_8000A.xml' => [ 'Alcatel', 'One Touch Scribe Easy', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_8000D.xml' => [ 'Alcatel', 'One Touch Scribe Easy', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_8008D.xml' => [ 'Alcatel', 'One Touch Scribe HD', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_8008W.xml' => [ 'Alcatel', 'One Touch Scribe HD', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_8008X.xml' => [ 'Alcatel', 'One Touch Scribe HD', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_8020D.xml' => [ 'Alcatel', 'One Touch Scribe Pro', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_8020D.xml' => [ 'Alcatel', 'One Touch Scribe Pro', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_8020X.xml' => [ 'Alcatel', 'One Touch Scribe Pro', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_7030L.xml' => [ 'Alcatel', 'One Touch Snap', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7025D.xml' => [ 'Alcatel', 'One Touch Snap', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7025X.xml' => [ 'Alcatel', 'One Touch Snap', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7042A.xml' => [ 'Alcatel', 'One Touch Snap', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_7042D.xml' => [ 'Alcatel', 'One Touch Snap', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5021E.xml' => [ 'Alcatel', 'One Touch Soleil', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_A851L.xml' => [ 'Alcatel', 'One Touch Sonic', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL ONE TOUCH 6010D.xml' => [ 'Alcatel', 'One Touch Star', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6010D.xml' => [ 'Alcatel', 'One Touch Star', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6010X.xml' => [ 'Alcatel', 'One Touch Star', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6010X_Orange.xml' => [ 'Alcatel', 'One Touch Star', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4010A.xml' => [ 'Alcatel', 'One Touch T\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4010D.xml' => [ 'Alcatel', 'One Touch T\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4010E.xml' => [ 'Alcatel', 'One Touch T\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4010X.xml' => [ 'Alcatel', 'One Touch T\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_4011X.xml' => [ 'Alcatel', 'One Touch T\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ONE_TOUCH_TAB_7.xml' => [ 'Alcatel', 'One Touch Tab 7', 'Android', DeviceType::TABLET ], + 'http://www-ccpp.tcl-ta.com/files/3075A.rdf' => [ 'Alcatel', 'One Touch Tribe 3075A', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL-OT-V670.rdf' => [ 'Alcatel', 'One Touch V670', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5035D.xml' => [ 'Alcatel', 'One Touch X\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5035E.xml' => [ 'Alcatel', 'One Touch X\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_5035X.xml' => [ 'Alcatel', 'One Touch X\'Pop', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/4044C.xml' => [ 'Alcatel', 'QUICKFLIP', 'KaiOS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_TRIBE_3075A.rdf' => [ 'Alcatel', 'Tribe 3075A', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/PCD/ADR2045-VMUB/1.0/UAProf.xml' => [ 'Alcatel', 'Venture', 'Android', DeviceType::MOBILE ], + 'http://pluto.alphacell.com/uaprof/m5p.xml' => [ 'AlphaCell', 'M5', null, DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/Amoi-8512.xml' => [ 'Amoi', '8512', null, DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/Amoi-8709.xml' => [ 'Amoi', '8709', null, DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/Amoi-8710.xml' => [ 'Amoi', '8710', null, DeviceType::MOBILE ], + 'http://www.amoi.com.cn/ua/AMOI_A726T_JB3_UAprofile.xml' => [ 'Amoi', 'A726T', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOAMOI A920W.xml' => [ 'Amoi', 'A920W', 'Android', DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/c200.xml' => [ 'Amoi', 'C200', null, DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/CA6.xml' => [ 'Amoi', 'CA6', null, DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/E610.xml' => [ 'Amoi', 'E610', null, DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/E72.xml' => [ 'Amoi', 'E72', null, DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/F8.xml' => [ 'Amoi', 'F8', null, DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/M636.xml' => [ 'Amoi', 'M636', null, DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOAMOI_N828.xml' => [ 'Amoi', 'N828', 'Android', DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/S6.xml' => [ 'Amoi', 'S6', null, DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/amoi/v810/v810v1.xml' => [ 'Amoi', 'V810', null, DeviceType::MOBILE ], + 'http://www.apanda.com.cn/apanda-A60-ua-profile.xml' => [ 'Apanda', 'A60', 'Android', DeviceType::MOBILE ], + 'http://asmobile.ehosting.com.tw/uaprof/castor.xml' => [ 'Asmobile', 'Castor', null, DeviceType::MOBILE ], + 'http://asmobile.ehosting.com.tw/uaprof/PAVO.xml' => [ 'Asmobile', 'PAVO', null, DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS1210-1.0.xml' => [ 'Asus', '1210', null, DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-NAPA-1.0.xml' => [ 'Asus', 'Eee Pc T10', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-NAPA-MINI-1.0.xml' => [ 'Asus', 'Eee Pc T20', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS-K00S.xml' => [ 'Asus', 'Fonepad', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ME371MG-1.0.xml' => [ 'Asus', 'Fonepad', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-K00E.xml' => [ 'Asus', 'Fonepad 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-K00Z.xml' => [ 'Asus', 'Fonepad 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ME175CG.xml' => [ 'Asus', 'Fonepad 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ME175CG_KK.xml' => [ 'Asus', 'Fonepad 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ME372CG.xml' => [ 'Asus', 'Fonepad 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ME372CL.xml' => [ 'Asus', 'Fonepad 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-FE170CG.xml' => [ 'Asus', 'Fonepad 7 2014', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-FE171CG.xml' => [ 'Asus', 'Fonepad 7 2015', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-FE375CL.xml' => [ 'Asus', 'Fonepad 7 2015', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-FE380CG.xml' => [ 'Asus', 'Fonepad 8 2014', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-K00G.xml' => [ 'Asus', 'Fonepad Note 6', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/K00G.xml' => [ 'Asus', 'Fonepad Note 6', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-J501_UAProf.xml' => [ 'Asus', 'J501', null, DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-M530w-1.0.xml' => [ 'Asus', 'M530w', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-M930-1.0.xml' => [ 'Asus', 'M930', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-K00F.xml' => [ 'Asus', 'MemoPad 10', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ME375CL.xml' => [ 'Asus', 'MemoPad 7', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ME572CL.xml' => [ 'Asus', 'MemoPad 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-K00L.xml' => [ 'Asus', 'MemoPad 8', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ME302C-1.0.xml' => [ 'Asus', 'MemoPad FHD 10', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-grouper.xml' => [ 'Asus', 'Nexus 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/grouper.xml' => [ 'Asus', 'Nexus 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-GalaxyMini-1.0.xml' => [ 'Asus', 'P320', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-Pegasus-1.0.xml' => [ 'Asus', 'P526', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-P527-1.0.xml' => [ 'Asus', 'P527', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-GalaxyII-1.0.xml' => [ 'Asus', 'P535', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-P550-1.0.xml' => [ 'Asus', 'P550', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-GalaxyMini2-1.0.xml' => [ 'Asus', 'P552', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-P750-1.0.xml' => [ 'Asus', 'P750', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-PadFone-1.0.xml' => [ 'Asus', 'Padfone', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-PadFone.xml' => [ 'Asus', 'Padfone', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-A68.xml' => [ 'Asus', 'Padfone 2', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-PadFone 2.xml' => [ 'Asus', 'Padfone 2', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS-T008.xml' => [ 'Asus', 'Padfone E', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-A80.xml' => [ 'Asus', 'Padfone Infinity', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-A86.xml' => [ 'Asus', 'Padfone Infinity', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS-A86.xml' => [ 'Asus', 'Padfone Infinity', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS-T00C.xml' => [ 'Asus', 'Padfone Mini', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS_T00E.xml' => [ 'Asus', 'Padfone Mini', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-PF451CL.xml' => [ 'Asus', 'Padfone Mini', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-A91.xml' => [ 'Asus', 'Padfone X', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-PF500KL.xml' => [ 'Asus', 'Padfone X', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS_T00N.xml' => [ 'Asus', 'Padfone X', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-PF450CL.xml' => [ 'Asus', 'Padfone X Mini', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-TX201LA.xml' => [ 'Asus', 'Transformer Book Trio', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-TF300TG.xml' => [ 'Asus', 'Transformer Pad 300', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-TF300TL.xml' => [ 'Asus', 'Transformer Pad 300', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-K00C.xml' => [ 'Asus', 'Transformer Pad Infinity', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-TF700KL-1.0.xml' => [ 'Asus', 'Transformer Pad Infinity 700', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-TF700KL.xml' => [ 'Asus', 'Transformer Pad Infinity 700', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-V75_UAProf.xml' => [ 'Asus', 'V75', null, DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZE500CL.xml' => [ 'Asus', 'ZenFone 2', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZE550ML.xml' => [ 'Asus', 'ZenFone 2', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZE551ML.xml' => [ 'Asus', 'ZenFone 2', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZE500KG.xml' => [ 'Asus', 'ZenFone 2 Laser', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZE500KL.xml' => [ 'Asus', 'ZenFone 2 Laser', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZE550KL.xml' => [ 'Asus', 'ZenFone 2 Laser', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS_T00I.xml' => [ 'Asus', 'ZenFone 4', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/AMAX-UAP.xml' => [ 'Asus', 'ZenFone 5', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-A500CG.xml' => [ 'Asus', 'ZenFone 5', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-A500KL.xml' => [ 'Asus', 'ZenFone 5', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS_T00F.xml' => [ 'Asus', 'ZenFone 5', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS_T00J.xml' => [ 'Asus', 'ZenFone 5', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-T00J.xml' => [ 'Asus', 'ZenFone 5', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-A600CG.xml' => [ 'Asus', 'ZenFone 6', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ASUS_T00G.xml' => [ 'Asus', 'ZenFone 6', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZB551KL.xml' => [ 'Asus', 'ZenFone Go (ZB551KL)', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZC500TG.xml' => [ 'Asus', 'ZenFone Go (ZC500TG)', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZC550KL.xml' => [ 'Asus', 'ZenFone Max', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-ZX551ML.xml' => [ 'Asus', 'ZenFone Zoom', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/ASUS-Z300CL.xml' => [ 'Asus', 'ZenPad 10', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-Z170C.xml' => [ 'Asus', 'ZenPad 7', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-Z370KL.xml' => [ 'Asus', 'ZenPad 7.0 (Z370KL)', 'Android', DeviceType::TABLET ], + 'http://uaprofile.asus.com/uaprof/ASUS-Z380KL.xml' => [ 'Asus', 'ZenPad 8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8652GPRS-ATT.xml' => [ 'AT&T', 'Fusion', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8652WCDMA-ATT.xml' => [ 'AT&T', 'Fusion', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/9020A.xml' => [ 'AT&T', 'Trek HD', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y536A1.xml' => [ 'AT&T', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Audiovox/CDM-8450SP/T060SP2T36.rdf' => [ 'Audiovox', 'CDM-8450', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Audiovox/CDM-8450SP/T060SP2T37.rdf' => [ 'Audiovox', 'CDM-8450', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Audiovox_CDM-8450_P08.rdf' => [ 'Audiovox', 'CDM-8450', null, DeviceType::MOBILE ], + 'http://www.pocket.com/phone_data/CDM8615.xml' => [ 'Audiovox', 'CDM-8615', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/audiovox/cdm-8900.rdf' => [ 'Audiovox', 'CDM-8900', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/audiovox/8910/8910.xml' => [ 'Audiovox', 'CDM-8910', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Audiovox/CDM8912SP/T115SP0T13.rdf' => [ 'Audiovox', 'CDM-8912', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/audiovox/cdm-8920.rdf' => [ 'Audiovox', 'CDM-8920', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Audiovox/CDM9950SP/132037.rdf' => [ 'Audiovox', 'CDM-9950', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Audiovox/PM8920KIT/T120SP0T19.rdf' => [ 'Audiovox', 'PM-8920', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Q_Maxi.xml' => [ 'Avea', 'inTouch 3 Large', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Avea_inTouch_4.xml' => [ 'Avea', 'inTouch 4', 'Android', DeviceType::TABLET ], + 'http://www.jeekomi.com/hw/Avvio489_WAP_BROWSER.xml' => [ 'Avvio', '489', 'Android', DeviceType::MOBILE ], + 'http://guardsys.museui.com/Avvio750_PEP_WAP_BROWSER.xml' => [ 'Avvio', '750', 'Android', DeviceType::MOBILE ], + 'http://guardsys.museui.com/Avvio750_WAP_BROWSER.xml' => [ 'Avvio', '750', 'Android', DeviceType::MOBILE ], + 'http://www.ilakia.com/uaprof/Avvio774.xml' => [ 'Avvio', '774', 'Android', DeviceType::MOBILE ], + 'http://www.kcmobile.net/UAProf/UAP_AVVIO_776.xml' => [ 'Avvio', '776', 'Android', DeviceType::MOBILE ], + 'http://config.51coolpad.com/UAProfile/Brightstar/Avvio_L500.xml' => [ 'Avvio', 'L500', 'Android', DeviceType::MOBILE ], + 'http://www.kcmobile.net/UAProf/WAP2_SEC_MMS_AvvioPAD10.1.xml' => [ 'Avvio', 'Pad', 'Android', DeviceType::MOBILE ], + 'http://www.jeekomi.com/hw/AvvioQ797_WAP_BROWSER.xml' => [ 'Avvio', 'Q797', 'Android', DeviceType::MOBILE ], + 'http://www.axiooworld.com' => [ 'Axioo', 'Picopad', 'Android', DeviceType::TABLET ], + 'http://www.axiooworld.com/uaprof/uaprof_picopad.xml' => [ 'Axioo', 'Picopad', 'Android', DeviceType::TABLET ], + 'http://www.axiooworld.com/uaprof/uaprof_VIGO350.xml' => [ 'Axioo', 'Vigo 350', 'Android', DeviceType::MOBILE ], + 'http://www.axiooworld.com/uaprof/uaprof_VIGO410.xml' => [ 'Axioo', 'Vigo 410', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A35C_Lite.xml' => [ 'Azumi', 'A35c Lite', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A35S.xml' => [ 'Azumi', 'A35s', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A35S_Lite.xml' => [ 'Azumi', 'A35s Lite', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A40Style_Lite.xml' => [ 'Azumi', 'A40 Style Lite', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A40C.xml' => [ 'Azumi', 'A40c', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A45T.xml' => [ 'Azumi', 'A45c', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A45S.xml' => [ 'Azumi', 'A45s', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A50c.xml' => [ 'Azumi', 'A50c', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A50c+.xml' => [ 'Azumi', 'A50c+', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_AT7.xml' => [ 'Azumi', 'AT7', 'Android', DeviceType::TABLET ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_IRO_A5_Q.xml' => [ 'Azumi', 'Iro A5Q', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_IRO_A5_QL.xml' => [ 'Azumi', 'Iro A5QL', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_KL32.xml' => [ 'Azumi', 'KL32', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_LT50.xml' => [ 'Azumi', 'LT50', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_LT50+.xml' => [ 'Azumi', 'LT50+', 'Android', DeviceType::MOBILE ], + 'http://343761.ctc-w228.dns.com.cn/UAProfile/EVE.xml' => [ 'b-mobile', 'EVE', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/BASE_Tab.xml' => [ 'BASE', 'Tab', 'Android', DeviceType::MOBILE ], + 'http://www.bbk.com/uaprof/BBKi710.xml' => [ 'BBK', 'i710', 'MRE', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Beeline_E400.xml' => [ 'Beeline', 'E400', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Beeline_E600.xml' => [ 'Beeline', 'E600', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/BeelineM2_22.xml' => [ 'Beeline', 'M2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Beeline_Pro.xml' => [ 'Beeline', 'Pro', 'Android', DeviceType::MOBILE ], + 'http://staticfiles.technoserv.com/uap/BG1_TS.xml' => [ 'Beeline', 'Pro 2', 'Android', DeviceType::MOBILE ], + 'http://staticfiles.technoserv.com/uap/BeelineSmartDual.xml' => [ 'Beeline', 'Smart Dual', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Beeline_Smart2.xml' => [ 'Beeline', 'Smart2', 'Android', DeviceType::MOBILE ], + 'http://staticfiles.technoserv.com/uap/Beeline_Smart_3.xml' => [ 'Beeline', 'Smart3', 'Android', DeviceType::MOBILE ], + 'http://tehnoligadevice.ru/uap/Beeline_Smart_4.xml' => [ 'Beeline', 'Smart4', 'Android', DeviceType::MOBILE ], + 'http://staticfiles.technoserv.com/uap/BEE703G02.xml' => [ 'Beeline', 'Tab', 'Android', DeviceType::TABLET ], + 'http://senseit.ru/UAProfile/beelinetab2.xml' => [ 'Beeline', 'Tab 2', 'Android', DeviceType::TABLET ], + 'http://www.bellwave.co.uk/uaprof/Neo100.xml' => [ 'Bellwave', 'Neo100', null, DeviceType::MOBILE ], + 'https://s3-eu-west-1.amazonaws.com/fotabucket/uaprof/uaprof_f4_benq.xml' => [ 'BenQ', 'A3s', 'Android', DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?device=C11C&v=11' => [ 'BenQ', 'C11C', null, DeviceType::MOBILE ], + 'http://uap.benq.com/mb_c30/benq_c30_v1.xml' => [ 'BenQ', 'C30', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?DeviceID=ELC1&v=36' => [ 'BenQ', 'ELC1', null, DeviceType::MOBILE ], + 'http://market.benqmobile.com/portal/UAProf/UAP.aspx?DeviceID=ELC1&v=36' => [ 'BenQ', 'ELC1', null, DeviceType::MOBILE ], + 'http://dpg.openwave.com/downloadfun/29756742/Vulcan.xml' => [ 'BenQ', 'Vulcan', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?DeviceID=EF81' => [ 'BenQ-Siemens', 'EF81', null, DeviceType::MOBILE ], + 'http://uap.benq.com/mb_ef91/benq_ef91_3g.xml' => [ 'BenQ-Siemens', 'EF91', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?device=S68' => [ 'BenQ-Siemens', 'S68', null, DeviceType::MOBILE ], + 'http://uap.benq.com/mb_s81/benq_s81_v1.xml' => [ 'BenQ-Siemens', 'S81', null, DeviceType::MOBILE ], + 'http://uap.benq.com/mb_s82/benq_S82_voda_2g.xml' => [ 'BenQ-Siemens', 'S82', null, DeviceType::MOBILE ], + 'http://uap.benq.com/mb_s88/benq_s88_v3_300k.xml' => [ 'BenQ-Siemens', 'S88', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/BGH_Joy_Smart_A7G.xml' => [ 'BGH', 'Joy Smart A7G', 'Android', DeviceType::MOBILE ], + 'http://www.bbk.com/uaprof/BBKV205.xml' => [ 'BKK', 'V205', null, DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/ADVANCE_3.5.XML' => [ 'BLU', 'Advance 3.5', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/ADVANCE4.0.xml' => [ 'BLU', 'Advance 4.0', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/ADVANCE_4.0.XML' => [ 'BLU', 'Advance 4.0', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Advance 4.0 L.xml' => [ 'BLU', 'Advance 4.0 L', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_U_V856_V3.xml' => [ 'BLU', 'Dash', 'Android', DeviceType::MOBILE ], + 'http://ctmexico.com.mx/UA_DASH.xml' => [ 'BLU', 'Dash 3.5', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_3.5.XML' => [ 'BLU', 'Dash 3.5', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_3.5_II.xml' => [ 'BLU', 'Dash 3.5 II', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_4.0.XML' => [ 'BLU', 'Dash 4.0', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Dash4.0Ce.xml' => [ 'BLU', 'Dash 4.0 CE', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/dash_4.5.XML' => [ 'BLU', 'Dash 4.5', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_5.0.XML' => [ 'BLU', 'Dash 5.0', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH5.5.xml' => [ 'BLU', 'Dash 5.5', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_C_MUSIC_D390u.xml' => [ 'BLU', 'Dash C Music', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_J_D070.xml' => [ 'BLU', 'Dash J', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/BLU_D140_UAP.xml' => [ 'BLU', 'Dash Jr', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_JR_3G_blu.xml' => [ 'BLU', 'Dash Jr', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/dashjr.4.0.xml' => [ 'BLU', 'Dash Jr 4.0', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_JR_K.XML' => [ 'BLU', 'Dash Jr K', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/BLU-D140S_UAP.xml' => [ 'BLU', 'Dash Jr Social', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_L_D050.xml' => [ 'BLU', 'Dash L', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_MUSIC_4.0.XML' => [ 'BLU', 'Dash Music 4.0', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Dash music 4.5.xml' => [ 'Blu', 'Dash Music 4.5', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASHMUSICII.xml' => [ 'BLU', 'Dash Music II', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/DASH_MUSIC_JR.xml' => [ 'BLU', 'Dash Music Jr', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/BLU_ENERGY_X_PLUS.xml' => [ 'BLU', 'Energy X Plus', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Studio_Energey_5.5.xml' => [ 'BLU', 'Energy X Plus', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/LIFE8.xml' => [ 'BLU', 'Life 8', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/LifeOne.xml' => [ 'BLU', 'Life One', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Life_One_M.xml' => [ 'BLU', 'Life One M', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/LIFE ONE X.XML' => [ 'BLU', 'Life One X', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/LIFE PLAY.XML' => [ 'BLU', 'Life Play', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/LIFE_PLAY_MINI.xml' => [ 'BLU', 'Life Play Mini', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/LIFE_PLAY_S.xml' => [ 'BLU', 'Life Play S', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/LifeView.xml' => [ 'BLU', 'Life View', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/ADVANCE_JR.xml' => [ 'Blu', 'Neo 3.5', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Neo_3.5.xml' => [ 'BLU', 'Neo 3.5', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO5.0.xml' => [ 'BLU', 'Studio 5.0', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO5.0_2.xml' => [ 'BLU', 'Studio 5.0 II', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Tank4.5.XML' => [ 'BLU', 'Studio 5.0c HD', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/LIFEPLAY.xml' => [ 'BLU', 'Studio 5.0ce', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/studio5.0e.xml' => [ 'BLU', 'Studio 5.0e', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO_5.0K.xml' => [ 'BLU', 'Studio 5.0k', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/ STUDIO5.0SII.XML' => [ 'BLU', 'Studio 5.0s II', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO5.5S.xml' => [ 'BLU', 'Studio 5.5s', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Studio_7.0_II.xml' => [ 'BLU', 'Studio 7.0 II', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO_C.XML' => [ 'BLU', 'Studio C', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO_G.xml' => [ 'BLU', 'Studio G', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO_G_PLUS.xml' => [ 'BLU', 'Studio G Plus', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO5.0S_HD.xml' => [ 'BLU', 'Studio X', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STUDIO_X.xml' => [ 'BLU', 'Studio X', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/BLU_STUDIO_X_PLUS.xml' => [ 'BLU', 'Studio X Plus', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Studio_X_Plus.xml' => [ 'BLU', 'Studio X Plus', 'Android', DeviceType::MOBILE ], + 'http://112.74.195.169/upload/xmlfiles/STUDIO_X8_HD.XML' => [ 'BLU', 'Studio X8 HD', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/Touchbook_7.0_3G.xml' => [ 'BLU', 'Touch Book 7.0', 'Android', DeviceType::TABLET ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX1020.xml' => [ 'Bmobile', 'AX1020', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX1030.xml' => [ 'Bmobile', 'AX1030', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/UAProfile_BmobileAX1035.xml' => [ 'Bmobile', 'AX1035', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX1060.xml' => [ 'Bmobile', 'AX1060', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX1065.xml' => [ 'Bmobile', 'AX1065', 'Android', DeviceType::MOBILE ], + 'http://bmobile.eu.com/uaprofile/UAProfile_BmobileAX512.xml' => [ 'Bmobile', 'AX512', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/UAProfile_BmobileAX512.xml' => [ 'Bmobile', 'AX512', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX570.xml' => [ 'Bmobile', 'AX570', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX600.xml' => [ 'Bmobile', 'AX600', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/UAProfile_BmobileAX600.xml' => [ 'Bmobile', 'AX600', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/BmobileAX605.xml' => [ 'Bmobile', 'AX605', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/UAProfile_BmobileAX620.xml' => [ 'Bmobile', 'AX620', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX670.xml' => [ 'Bmobile', 'AX670', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX675.xml' => [ 'Bmobile', 'AX675', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX680.xml' => [ 'Bmobile', 'AX680', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX710.xml' => [ 'Bmobile', 'AX710', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/BmobileAX745.xml' => [ 'Bmobile', 'AX745', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/Bmobile_AX810.xml' => [ 'Bmobile', 'AX810', 'Android', DeviceType::MOBILE ], + 'http://www.bmobile.eu.com/uaprofile/UAprofile_BmobileQW125.xml' => [ 'Bmobile', 'QW125', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Bouygues Telecom Bs 351.xml' => [ 'Bouygues', 'Bs 351', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Bouygues_Telecom_Bs_402.xml' => [ 'Bouygues', 'Bs 402', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/BS471.xml' => [ 'Bouygues', 'Bs 471', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Bouygues_Telecom_Ultym_5_2.xml' => [ 'Bouygues', 'Ultym 5.2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Bouygues_Telecom_Ultym_5L.xml' => [ 'Bouygues', 'Ultym 5L', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/bq_aquaris_45_JB.xml' => [ 'bq', 'Aquaris', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/bq_aquaris_E4_KK.xml' => [ 'bq', 'Aquaris E4', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/bq_aquaris_E45_KK.xml' => [ 'bq', 'Aquaris E4.5', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/bq_aquaris_5lte_KK.xml' => [ 'bq', 'Aquaris E5', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/bq_aquaris_E5_FHD_KK.xml' => [ 'bq', 'Aquaris E5 FHD', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/bq_aquaris_E5_HD_KK.xml' => [ 'bq', 'Aquaris E5 HD', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/fnac_aquaris_E5_HD_KK.xml' => [ 'bq', 'Aquaris E5 HD', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/bq_aquaris_E6_KK.xml' => [ 'bq', 'Aquaris E6', 'Android', DeviceType::MOBILE ], + 'http://files.bq.com/uaprof/bq_edison_3_KK.xml' => [ 'bq', 'Edison 3', 'Android', DeviceType::TABLET ], + 'http://uaprof.vtext.com/pcd/c771/c771.xml' => [ 'Casio', 'Gz\'One Commando', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/vzw/vzw.xml' => [ 'Casio', 'Gz\'One Commando 811', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/vietnam/vietnam.xml' => [ 'Casio', 'GzOne CA201', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/c811/c811.xml' => [ 'Casio', 'GzOne Commando 811', 'Android', DeviceType::MOBILE ], + 'http://www.catphones.com/uaprof/Cat_B10-2_UAprofile.xml' => [ 'Cat', 'B15', 'Android', DeviceType::MOBILE ], + 'http://www.catphones.com/uaprof/b15q.xml' => [ 'CAT', 'B15Q', 'Android', DeviceType::MOBILE ], + 'http://www.catphones.com/uaprof/s50.xml' => [ 'CAT', 'S50', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/celkon/A95Pro.xml' => [ 'Celkon', 'A95 Pro', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/M8050QM.xml' => [ 'Celkon', 'S1', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/C1038.xml' => [ 'Cellon', 'C1038', null, DeviceType::MOBILE ], + 'http://uap.cellon.com/C2573.xml' => [ 'Cellon', 'C2573', null, DeviceType::MOBILE ], + 'http://uap.cellon.com/C8660.xml' => [ 'Cellon', 'C8660', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/UAP/C8660.xml' => [ 'Cellon', 'C8660', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/M8047IU.xml' => [ 'Cellon', 'M8047IU', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/M8047QM.xml' => [ 'Cellon', 'M8047QM', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/M8140PT.xml' => [ 'Cellon', 'M8140PT', 'Android', DeviceType::MOBILE ], + 'http://www.fih.com/uaprof/FIH000/UAProf_FIH000_Froyo.xml' => [ 'ChangHong', 'Z-me', 'Android', DeviceType::MOBILE ], + 'http://221.176.65.117/uaprof/CMDC_M601.xml' => [ 'China Mobile', 'M601', 'Android', DeviceType::TABLET ], + 'http://phone.hisense.com/khfw/rjxz/201306/P020130627360412430072.xml' => [ 'China Mobile', 'M701', 'Android', DeviceType::TABLET ], + 'http://221.176.65.117/uaprof/CMCC-M812.xml' => [ 'China Mobile Device', 'and M812', 'Android', DeviceType::MOBILE ], + 'http://221.176.65.117/uaprof/M821.xml' => [ 'China Mobile Device', 'and M821', 'Android', DeviceType::MOBILE ], + 'http://221.176.65.117/uaprof/M823.xml' => [ 'China Mobile Device', 'and M823', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/CHL/CHL-S800_1_20101228.xml' => [ 'CHL', 'S800', 'Android', DeviceType::MOBILE ], + 'http://www.commtiva.com/uaprof/HD700/UAProf_HD700_Gingerbread.xml' => [ 'Commtiva', 'HD700', 'Android', DeviceType::MOBILE ], + 'http://www.commtiva.com/uaprof/UAProf_Froyo.xml' => [ 'Commtiva', 'N700', 'Android', DeviceType::MOBILE ], + 'http://mms.openmobilepr.com/uaprof/Coolpad-3700A.xml' => [ 'Coolpad', '3700', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Coolpad/5560S/Coolpad-5560S-SP004.rdf' => [ 'Coolpad', '5560S', 'Android', DeviceType::MOBILE ], + 'http://www.cgmobile.com.cn/8810G_UAProfile.xml' => [ 'Coolpad', '8010', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.YuLong.com/uaprof/CoolPad8026-1.0.xml' => [ 'Coolpad', '8026', 'Android', DeviceType::MOBILE ], + 'http://ota.ragentek.com:8002/RgkOTA/UAprofile/Coolpad8122_UAprofile.xml' => [ 'Coolpad', '8122', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOCoolpad 8730L.xml' => [ 'Coolpad', '8730L', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.YuLong.com/uaprof/YuLong-CoolPad8809-1.0.xml' => [ 'CoolPad', '8809', 'Android', DeviceType::MOBILE ], + 'http://nmsc.vnet.com.cn/uaprof/YL/COOLPAD-E600.xml' => [ 'Coolpad', 'D510', 'Brew', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/YL/YL_Coolpad_E230_2_20100520.xml' => [ 'Coolpad', 'E230', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Coolpad/801ES/Coolpad-801ES-CP021.rdf' => [ 'Coolpad', 'Quattro II 4G', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOCoolpad Y80D.xml' => [ 'Coolpad', 'Y80', 'Android', DeviceType::MOBILE ], + 'http://www.azumi-mobile.com/agenteprofile/equipos/Azumi_A50.xml' => [ 'Cozco', 'C1 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOCUBOT ONE.xml' => [ 'Cubot', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOMC002.xml' => [ 'Dakele', 'MC002', 'Android', DeviceType::MOBILE ], + 'http://ftp.us.dell.com/Factor_Software_Updates/Grappa_UA_Profile.xml' => [ 'Dell', 'Grappa', 'Android', DeviceType::MOBILE ], + 'http://122.200.68.229/docs/mini3ix.xml' => [ 'Dell', 'Mini 3ix', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/XCD35.xml' => [ 'Dell', 'XCD35', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5056A.xml' => [ 'Digicel', 'DL1 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/DL800.xml' => [ 'Digicel', 'DL800', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Juno-1.0.xml' => [ 'Dopod', 'C750', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Tachi-1.0.xml' => [ 'Dopod', 'T5399', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Qilin-1.0.xml' => [ 'Dopod', 'T8388', 'Windows Mobile', DeviceType::MOBILE ], + 'http://ua.doro.com/ua/Doro810_UAProfile.xml' => [ 'Doro', 'Liberto 810', 'Android', DeviceType::MOBILE ], + 'http://ua.doro.com/ua/Doro820_UAProfile.xml' => [ 'Doro', 'Liberto 820', 'Android', DeviceType::MOBILE ], + 'http://ua.doro.com/ua/Doro820Mini_UAProfile.xml' => [ 'Doro', 'Liberto 820 Mini', 'Android', DeviceType::MOBILE ], + 'http://ua.doro.com/ua/Doro740_UAProfile.xml' => [ 'Doro', 'PhoneEasy 745', 'Android', DeviceType::MOBILE ], + 'http://www.elitemodellookmobile.com/uaprof/eml2.xml' => [ 'Elite Model Look', 'EML2', null, DeviceType::MOBILE ], + 'http://mobileinternet.ericsson.com/UAprof/R380e.xml' => [ 'Ericsson', 'R380', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R520.xml' => [ 'Ericsson', 'R520', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R600.xml' => [ 'Ericsson', 'R600', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T39.xml' => [ 'Ericsson', 'T39', null, DeviceType::MOBILE ], + 'http://mobileinternet.ericsson.com/UAprof/T60d.xml' => [ 'Ericsson', 'T60', null, DeviceType::MOBILE ], + 'http://mobileinternet.ericsson.com/UAprof/T65.xml' => [ 'Ericsson', 'T65', null, DeviceType::MOBILE ], + 'http://mobileinternet.ericsson.com/UAprof/T68R1.xml' => [ 'Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T68R201.xml' => [ 'Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T68R301.xml' => [ 'Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T68R401.xml' => [ 'Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T68R402.xml' => [ 'Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T68R501.xml' => [ 'Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T68R502.xml' => [ 'Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T68R503.xml' => [ 'Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/V6500_Etisalat_EG.xml' => [ 'Etisalat', 'Smartphone', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/BenQ-A3c.xml' => [ 'Ezcast', 'Dongle', 'Android', ], + 'http://mobiwire.com/uaprofile/Telekom_Austria_Group_FP1.xml' => [ 'Fairphone', '1', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/Flair%20P2.xml' => [ 'Fairphone', '2', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/N26/FarEastone_Smart501.xml' => [ 'Fareastone', 'Smart 501', 'Android', DeviceType::MOBILE ], + 'http://www.wizdevice.com/support/rise/uaprof.xml' => [ 'Fareastone', 'Smart 701', 'Android', DeviceType::TABLET ], + 'http://211.42.201.70/ua_profile/FLY-2040i.xml' => [ 'Fly', '2040', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-2040L.xml' => [ 'Fly', '2040', null, DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_E154.xml' => [ 'Fly', 'E154', 'MTK', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_E190.xml' => [ 'Fly', 'E190', 'MTK', DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/Fly-E300.xml' => [ 'Fly', 'E300', null, DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Flylife_Connect_7_3G.xml' => [ 'Fly', 'Flylife Connect 7 3G', 'Android', DeviceType::TABLET ], + 'http://www.fly-phone.ru/UAP/Flylife_Connect_7.85_3G_2.xml' => [ 'Fly', 'Flylife Connect 7.85 3G 2', 'Android', DeviceType::TABLET ], + 'http://www.fly-phone.ru/UAP/Flylife_Connect_7.85_3G_Slim.xml' => [ 'Fly', 'Flylife Connect 7.85 3G Slim', 'Android', DeviceType::TABLET ], + 'http://www.fly-phone.ru/UAP/Fly_FS403.xml' => [ 'Fly', 'FS403 Cumulus 1', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_FS451.xml' => [ 'Fly', 'FS451 Nimbus 1', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ237.xml' => [ 'Fly', 'IQ237 Dynamic', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ238.xml' => [ 'Fly', 'IQ238 Jazz', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ239.xml' => [ 'Fly', 'IQ239 Era Nano 2', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ246.xml' => [ 'Fly', 'IQ246 Power', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ430.xml' => [ 'Fly', 'IQ430 Evoke', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ431.xml' => [ 'Fly', 'IQ431 Glory', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ432.xml' => [ 'Fly', 'IQ432 Era Nano 1', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ434.xml' => [ 'Fly', 'IQ434 Era Nano 5', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ436.xml' => [ 'Fly', 'IQ434 Era Nano 9', 'Android', DeviceType::MOBILE ], + 'http://www.bluhelp.com/upload/xmlfiles/STAR_4.5.xml' => [ 'Fly', 'IQ440 Energie', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_EVO_Chic_1.xml' => [ 'Fly', 'IQ440 Energie', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ440.xml' => [ 'Fly', 'IQ440 Energie', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4403.xml' => [ 'Fly', 'IQ440 Energie', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4404.xml' => [ 'Fly', 'IQ440 Energie', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4407.xml' => [ 'Fly', 'IQ440 Energie', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4409_Quad.xml' => [ 'Fly', 'IQ440 Energie', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4405_Quad.xml' => [ 'Fly', 'IQ4405 Evo Chic', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4410_Quad.xml' => [ 'Fly', 'IQ441 Radiance', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4411_Quad.xml' => [ 'Fly', 'IQ441 Radiance', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4412_Quad.xml' => [ 'Fly', 'IQ441 Radiance', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4414_Quad.xml' => [ 'Fly', 'IQ441 Radiance', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4415_Ouad.xml' => [ 'Fly', 'IQ441 Radiance', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4416.xml' => [ 'Fly', 'IQ441 Radiance', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4410i.xml' => [ 'Fly', 'IQ4410i Phoenix 2', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4413_Quad.xml' => [ 'Fly', 'IQ4413 Evo Chic 3', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ442.xml' => [ 'Fly', 'IQ442 Miracle', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ443.xml' => [ 'Fly', 'IQ443 Trend', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ444.xml' => [ 'Fly', 'IQ444 Diamond', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ444_Quattro.xml' => [ 'Fly', 'IQ444 Diamond', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ445.xml' => [ 'Fly', 'IQ445 Genius', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ446.xml' => [ 'Fly', 'IQ446 Magic', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ447.xml' => [ 'Fly', 'IQ447 Era Life 1', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ449.xml' => [ 'Fly', 'IQ449 Pronto', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4490.xml' => [ 'Fly', 'IQ449 Pronto', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4491_Quad.xml' => [ 'Fly', 'IQ449 Pronto', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4503_Quad.xml' => [ 'Fly', 'IQ450 Horizon', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ450_Quattro.xml' => [ 'Fly', 'IQ450 Horizon', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ451.xml' => [ 'Fly', 'IQ451 Vista', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4511_Octa.xml' => [ 'Fly', 'IQ451 Vista', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4514_Quad.xml' => [ 'Fly', 'IQ451 Vista', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4515_Quad.xml' => [ 'Fly', 'IQ451 Vista', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOIQ451.xml' => [ 'Fly', 'IQ451 Vista', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4512_Quad.xml' => [ 'Fly', 'IQ4512 Evo Chic 4', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4516_Octa.xml' => [ 'Fly', 'IQ4516 Tornado Slim', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ452_Quad.xml' => [ 'Fly', 'IQ452 Ego Vision 1', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ453_Quad.xml' => [ 'Fly', 'IQ453 Luminor', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ454.xml' => [ 'Fly', 'IQ454 Evo Tech 1', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ455_Octa.xml' => [ 'Fly', 'IQ455 Ego Art 1', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ456.xml' => [ 'Fly', 'IQ456 Era Life 2', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ458_Quad.xml' => [ 'Fly', 'IQ458 Quad', 'Android', DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/Fly-LX610.xml' => [ 'Fly', 'LX610', null, DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_MC100.xml' => [ 'Fly', 'MC100', null, DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_MC110.xml' => [ 'Fly', 'MC110', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-MX200i.xml' => [ 'Fly', 'MX200', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-MX230.xml' => [ 'Fly', 'MX230', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-MX300.xml' => [ 'Fly', 'MX300', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-MX330.xml' => [ 'Fly', 'MX330', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-SL300m.xml' => [ 'Fly', 'SL300', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/Fly-SL399E.xml' => [ 'Fly', 'SL399', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/SL500i.xml' => [ 'Fly', 'SL500i', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/SL500m.xml' => [ 'Fly', 'SL500m', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/SL600.xml' => [ 'Fly', 'SL600', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/Fly-SLT100.xml' => [ 'Fly', 'SLT100', null, DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_SX200.xml' => [ 'Fly', 'SX200', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-SX210.xml' => [ 'Fly', 'SX210', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-SX300.xml' => [ 'Fly', 'SX300', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-SX305.xml' => [ 'Fly', 'SX305', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-SX310.xml' => [ 'Fly', 'SX310', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/FLY-SX390.xml' => [ 'Fly', 'SX390', null, DeviceType::MOBILE ], + 'http://218.249.89.125/UAprof/FLY-V120.xml' => [ 'Fly', 'V120', null, DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_X3.xml' => [ 'Fly', 'X3', null, DeviceType::MOBILE ], + 'http://spf.fmworld.net/fujitsu/c/data/UAProf/STYLISTIC/S01.xml' => [ 'Fujitsu', 'STYLISTIC S01', 'Android', DeviceType::MOBILE ], + 'http://www.fujitsu-siemens.com/uaprof/PLT830.xml' => [ 'Fujitsu Siemens', 'Pocket LOOX T830', 'Windows Mobile', DeviceType::MOBILE ], + 'http://static.garmincdn.com/uaprof/A10_1_0.xml' => [ 'Garmin-Asus', 'Nuvifone A10', 'Android', DeviceType::MOBILE ], + 'http://static.garmincdn.com/uaprof/A50_1_0.xml' => [ 'Garmin-Asus', 'Nuvifone A50', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/garmin-asus-Nuvifone-M10-1.0.xml' => [ 'Garmin-Asus', 'Nuvifone M10', 'Windows Mobile', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_TPA60W_Profile.xml' => [ 'Gateway', 'TPA60W', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/GM-FOXv100WCDMA.xml' => [ 'General Mobile', 'Fox', 'Android', DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/GIGABYTE-g-smart.xml' => [ 'Gigabyte', 'GSmart', null, DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/GSMART-G1310.xml' => [ 'Gigabyte', 'GSmart G1310', 'Android', DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/GSMART-G1315.xml' => [ 'Gigabyte', 'GSmart G1315', 'Android', DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/GSMART-G1317.xml' => [ 'Gigabyte', 'GSmart G1317', 'Android', DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/GIGABYTE-MS800.xml' => [ 'Gigabyte', 'GSmart MS800', null, DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/GIGABYTE-g-smart-vga.xml' => [ 'Gigabyte', 'GSmart T600', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1GPRS-GM_Turkey.xml' => [ 'GM', 'Ultimate Slim', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Dsi6X_y8P_In4gbf/xel-M3-D1.xml' => [ 'Google', 'Pixel', 'Android', DeviceType::MOBILE ], + 'http://mobile.haier.com/UAProf/uapA62.xml' => [ 'Haier', 'A62', null, DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOHT-I860.xml' => [ 'Haier', 'I860', 'Android', DeviceType::MOBILE ], + 'http://www.yeezonetech.com/wap/SMDK4x12_UAProfile.xml' => [ 'Haier', 'I928', 'Android', DeviceType::MOBILE ], + 'http://mobile.haier.com/UAProf/uapM1610.xml' => [ 'Haier', 'M1610', null, DeviceType::MOBILE ], + 'http://www.ehaier.com/download/mobile/uapHaier-HW-N86W.xml' => [ 'Haier', 'N86W', 'Android', DeviceType::MOBILE ], + 'http://www.ehaier.com/download/mobile/uapHaier-HW-N88W.xml' => [ 'Haier', 'N88W', 'Android', DeviceType::MOBILE ], + 'http://www.ehaier.com/download/mobile/uapHaier-HW-W718.xml' => [ 'Haier', 'N88W', 'Android', DeviceType::MOBILE ], + 'http://uaprof.uni-wise.com/uaprof/Haier/Haier-T10C.xml' => [ 'Haier', 'T10C', null, DeviceType::MOBILE ], + 'http://mobile.haier.com/UAProf/uapV7000.xml' => [ 'Haier', 'V7000', null, DeviceType::MOBILE ], + 'http://www.ehaier.com/download/mobile/uapHW-W617.xml' => [ 'Haier', 'W617', 'Android', DeviceType::MOBILE ], + 'http://www.ehaier.com/download/mobile/uapHaier-HW-W716.xml' => [ 'Haier', 'W716', 'Android', DeviceType::MOBILE ], + 'http://cdn09.ehaier.com/download/mobile/uapHaier-W867.xml' => [ 'Haier', 'W867', 'Android', DeviceType::MOBILE ], + 'http://www.ehaier.com/download/mobile/uapHW-W910.xml' => [ 'Haier', 'W910', 'Android', DeviceType::MOBILE ], + 'http://mobile.haier.com/UAProf/uapZ3000.xml' => [ 'Haier', 'Z3000', null, DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOAlpha Ice.xml' => [ 'Highscreen', 'Alpha Ice', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Blade L370.xml' => [ 'Highscreen', 'Zera S', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOHIKe 868.xml' => [ 'HIKe', 'Z1 868', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201310/P020131012478952694173.xml' => [ 'Hisense', 'E360M', 'Android', DeviceType::MOBILE ], + 'http://www.hisensephone.com/Hisense_E51-M_ua_profile.xml' => [ 'Hisense', 'E51-M', 'Android', DeviceType::MOBILE ], + 'http://www.hisensephone.com/Hisense_F20T_ua_profile.xml' => [ 'Hisense', 'F20T', 'Android', DeviceType::MOBILE ], + 'http://www.hisensephone.com/Hisense_F21T_ua_profile.xml' => [ 'Hisense', 'F21T', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201303/P020130307299783065342.xml' => [ 'Hisense', 'T820', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201208/P020120809608224982262.xml' => [ 'Hisense', 'T830', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201205/P020120521576380789573.xml' => [ 'Hisense', 'T860', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201301/P020130130568107298317.xml' => [ 'Hisense', 'T912', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201306/P020130626391746806303.xml' => [ 'Hisense', 'T928', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201301/P020130121342541959752.xml' => [ 'Hisense', 'T958', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201306/P020130626392019424761.xml' => [ 'Hisense', 'T959', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201309/P020130909487904900221.xml' => [ 'Hisense', 'T959', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201307/P020130710551710631695.xml' => [ 'Hisense', 'T959S', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201306/P020130626585426555510.xml' => [ 'Hisense', 'T968', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201304/P020130425502003281721.xml' => [ 'Hisense', 'T970', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201308/P020130805555147328699.xml' => [ 'Hisense', 'T980', 'Android', DeviceType::MOBILE ], + 'http://phone.hisense.com/khfw/rjxz/201405/P020140505487949781524.xml' => [ 'Hisense', 'U939', 'Android', DeviceType::MOBILE ], + 'http://picture-us.hismarttv.com/txfile/Hisense_HS-U961_20150304.XML' => [ 'Hisense', 'U961', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Hitachi/SH-P300/S2A31.rdf' => [ 'Hitachi', 'SH-P300', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Hitachi/SH-P300/S2A33.rdf' => [ 'Hitachi', 'SH-P300', null, DeviceType::MOBILE ], + 'http://www.hp.com/ipaqcarrier/hpipaq510v10.xml' => [ 'HP', 'iPAQ 510', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.hp.com/ipaqcarrier/hpipaq610v10.xml' => [ 'HP', 'iPAQ 610', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.hp.com/ipaqcarrier/hpipaq910v10.xml' => [ 'HP', 'iPAQ 910', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.hp.com/ipaqcarrier/HPiPAQDataMessenger10.xml' => [ 'HP', 'iPAQ Data Messenger', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.hp.com/ipaqcarrier/hpipaqhw692xv10.xml' => [ 'HP', 'iPAQ hw6920', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.hp.com/ipaqcarrier/hpipaqrw6815v10.xml' => [ 'HP', 'iPAQ rw6815', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.hp.com/ipaqcarrier/HPiPAQVoiceMessenger10.xml' => [ 'HP', 'iPAQ Voice Messenger', 'Windows Mobile', DeviceType::MOBILE ], + 'http://js.redirect.hp.com/jumpstation?bd=all&c=none&locale=ww_ww&pf=all&s=hp_linkplus_uaprofile&tp=mobility'=> [ 'HP', 'Slate 10 Plus', 'Android', DeviceType::TABLET ], + 'http://js.redirect.hp.com/jumpstation?bd=all&c=none&locale=ww_ww&pf=all&s=hp_vogue_uaprofile&tp=mobility'=> [ 'HP', 'Slate 8 Plus', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/HTC/0PJA2-SPRINT/ViperOneM9 610.rdf' => [ 'HTC', '10', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/NxVAjJl9Mq/ua-profile.xml' => [ 'HTC', '10', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Strk-1.0.xml' => [ 'HTC', '3100', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/SongShan/ua-profile.xml' => [ 'HTC', 'A3360', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Tianshan/ua-profile.xml' => [ 'HTC', 'A3380', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Athena-1.0.xml' => [ 'HTC', 'Advantage X7500', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/HTC_Amaze_4G/ua-profile.xml' => [ 'HTC', 'Amaze 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PH85/ua-profile.xml' => [ 'HTC', 'Amaze 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PH851/ua-profile.xml' => [ 'HTC', 'Amaze 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/Ruby/ua-profile.xml' => [ 'HTC', 'Amaze 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Videotron/Ruby/ua-profile.xml' => [ 'HTC', 'Amaze 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/apache-2.0.xml' => [ 'HTC', 'Apache', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Aria/ua-profile.xml' => [ 'HTC', 'Aria', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Liberty/A6366-1.0.xml' => [ 'HTC', 'Aria', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/eMobile/Liberty/ua-profile.xml' => [ 'HTC', 'Aria', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM651/ua-profile.xml' => [ 'HTC', 'au Infobar A02', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/beacon-1.0.xml' => [ 'HTC', 'Beacon', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/RLyrImabWh/ua-profile.xml' => [ 'HTC', 'Butterfly 2', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_909d_1_20130601.XML' => [ 'HTC', 'Butterfly S', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_909d_2_20130801.XML' => [ 'HTC', 'Butterfly S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO68/ua-profile.xml' => [ 'HTC', 'Butterfly S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO681/ua-profile.xml' => [ 'HTC', 'Butterfly S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO682/ua-profile.xml' => [ 'HTC', 'Butterfly S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO684/ua-profile.xml' => [ 'HTC', 'Butterfly S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO685/ua-profile.xml' => [ 'HTC', 'Butterfly S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/ChaChaCha/ua-profile.xml' => [ 'HTC', 'ChaCha', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/HTC_ChaCha_A810e/ua-profile.xml' => [ 'HTC', 'ChaCha', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PH06/ua-profile.xml' => [ 'HTC', 'ChaCha', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/ChaChaCha/ua-profile.xml' => [ 'HTC', 'ChaCha', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/PH06/ua-profile.xml' => [ 'HTC', 'ChaCha', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PD11/ua-profile.xml' => [ 'HTC', 'Cullinan', 'Android', DeviceType::MOBILE ], + 'http://mms.cellcom.com/uaprofs/cellcom_htc_DLX.xml' => [ 'HTC', 'Deluxe', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ACG/PL832/ua-profile_500K.xml' => [ 'HTC', 'Deluxe', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Bravo/HTC_Desire.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Bravo/HTC_Desire_A8181.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Desire/ua-profile.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/eris/ua-profile.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Orange/Desire-profile.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/SBM/SBM_X06HT-1.0.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/Desire/ua-profile.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/Bravo/ua-profile.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/tmo/HTC_Desire-1.0.xml' => [ 'HTC', 'Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/cvA1671TDt/ua-profile.xml' => [ 'HTC', 'Desire 10 Pro', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO601/ua-profile.xml' => [ 'HTC', 'Desire 200', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/vHfmvk5H3n/ua-profile.xml' => [ 'HTC', 'Desire 210', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/4WaXiSSfCP/ua-profile.xml' => [ 'HTC', 'Desire 300', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/4WaXiSSfCP/ua-profile.xml' => [ 'HTC', 'Desire 300', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/AIO/nhYHJ3dbMv/ua-profile.xml' => [ 'HTC', 'Desire 310', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/l9kfHYvA01/ua-profile.xml' => [ 'HTC', 'Desire 310', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/nhYHJ3dbMv/ua-profile.xml' => [ 'HTC', 'Desire 310', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/vBSZ5hs37J/ua-profile.xml' => [ 'HTC', 'Desire 310', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/l9kfHYvA01/ua-profile.xml' => [ 'HTC', 'Desire 310', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/l9kfHYvA01/ua-profile.xml' => [ 'HTC', 'Desire 310', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/l9kfHYvA01/ua-profile.xml' => [ 'HTC', 'Desire 310', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/l9kfHYvA01/ua-profile.xml' => [ 'HTC', 'Desire 310', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telcel/nhYHJ3dbMv/ua-profile.xml' => [ 'HTC', 'Desire 320', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TELUS/nhYHJ3dbMv/ua-profile.xml' => [ 'HTC', 'Desire 320', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/nhYHJ3dbMv/ua-profile.xml' => [ 'HTC', 'Desire 320', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/nJwqkkNk4t/ua-profile.xml' => [ 'HTC', 'Desire 326G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/AMX/0P3Z11/ua-profile.xml' => [ 'HTC', 'Desire 500', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/0P3Z1/ua-profile.xml' => [ 'HTC', 'Desire 500', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/0P3Z11/ua-profile.xml' => [ 'HTC', 'Desire 500', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telcel/0P3Z1/ua-profile.xml' => [ 'HTC', 'Desire 500', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TIM/0P3Z11/ua-profile.xml' => [ 'HTC', 'Desire 500', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/0P3Z11/ua-profile.xml' => [ 'HTC', 'Desire 500', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/0P3Z11/ua-profile.xml' => [ 'HTC', 'Desire 500', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/jV8CnoJUaO/ua-profile.xml' => [ 'HTC', 'Desire 501', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/0P3Z2/ua-profile.xml' => [ 'HTC', 'Desire 5088', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-2012071301/1476521.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-2012071301/1486522.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-2012071301/1496523.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-BOOST/1426521.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-BOOST/1476521.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-BOOST/1486522.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-BOOST/1496523.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-Chameleon/1486522.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-SPRINT/1426521.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-SPRPRE/1486522.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-SPRPRE/1496523.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-VIRGIN/1426521.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-VIRGIN/1476521.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-VIRGIN/1486522.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PCV1-VIRGIN/1496523.rdf' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/7l3xFmWvDC/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/BM/7l3xFmWvDC/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/R183PSZ1oa/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Cricket/EwxIAccCJC/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telcel/7l3xFmWvDC/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/R183PSZ1oa/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/7l3xFmWvDC/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/R183PSZ1oa/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/R183PSZ1oa/ua-profile.xml' => [ 'HTC', 'Desire 510', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/VTy7Pu6T6N/ua-profile.xml' => [ 'HTC', 'Desire 520', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TELCEL/hkQ3fFqw1h/ua-profile.xml' => [ 'HTC', 'Desire 526G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/hkQ3fFqw1h/ua-profile.xml' => [ 'HTC', 'Desire 526G+', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/hwX6V8P1Mn/ua-profile.xml' => [ 'HTC', 'Desire 526G+', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO49120/ua-profile.xml' => [ 'HTC', 'Desire 600', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO471/ua-profile.xml' => [ 'HTC', 'Desire 600c', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P4E1-VIRGIN/1106526.rdf' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P4E1-VIRGIN/1106529.rdf' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P4E1-VIRGIN/2156523.rdf' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://mms.ntwls.net/uaprofs/ua-profile_1M.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://uaprof.cccomm.csky.us/ua/ua-profile_500k.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ACG/PqjMKRKt4Z/ua-profile_1M.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ACG/PqjMKRKt4Z/ua-profile_500K.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/BM/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CBW/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/SLl2AjRgr3/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TIM/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Videotron/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/WIND/CjnctPc6Sf/ua-profile.xml' => [ 'HTC', 'Desire 601', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO491/ua-profile.xml' => [ 'HTC', 'Desire 606w', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO481/ua-profile.xml' => [ 'HTC', 'Desire 608t', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_609d_1_20130501.XML' => [ 'HTC', 'Desire 609d', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/GcDNB3aMvX/ua-profile.xml' => [ 'HTC', 'Desire 610', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/GcDNB3aMvX/ua-profile.xml' => [ 'HTC', 'Desire 610', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/HQEJRedmsG/ua-profile.xml' => [ 'HTC', 'Desire 610', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/HQEJRedmsG/ua-profile.xml' => [ 'HTC', 'Desire 610', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/HQEJRedmsG/ua-profile.xml' => [ 'HTC', 'Desire 610', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/HQEJRedmsG/ua-profile.xml' => [ 'HTC', 'Desire 610', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/HQEJRedmsG/ua-profile.xml' => [ 'HTC', 'Desire 610', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/gwLkpXJlS0/ua-profile.xml' => [ 'HTC', 'Desire 616', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/LC7XQ0af2u/ua-profile.xml' => [ 'HTC', 'Desire 616', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_619d_1_20130815.XML' => [ 'HTC', 'Desire 619d', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/e1NGCirnFB/ua-profile.xml' => [ 'HTC', 'Desire 620', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/e1NGCirnFB/ua-profile.xml' => [ 'HTC', 'Desire 620', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/e1NGCirnFB/ua-profile.xml' => [ 'HTC', 'Desire 620', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/rdV77sS2Jt/ua-profile.xml' => [ 'HTC', 'Desire 620G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CMCC/RT7rIequXv/ua-profile.xml' => [ 'HTC', 'Desire 626', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/jpsQ9TJbx4/ua-profile.xml' => [ 'HTC', 'Desire 626', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/RT7rIequXv/ua-profile.xml' => [ 'HTC', 'Desire 626', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/vas6Y725FU/ua-profile.xml' => [ 'HTC', 'Desire 626', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Europe/EKgo2FnRlG/ua-profile.xml' => [ 'HTC', 'Desire 626G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/EKgo2FnRlG/ua-profile.xml' => [ 'HTC', 'Desire 626G+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PM92-BOOST/1246512.rdf' => [ 'HTC', 'Desire 626s', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PM92-VIRGIN/1246512.rdf' => [ 'HTC', 'Desire 626s', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PM92-VIRGIN/2276516.rdf' => [ 'HTC', 'Desire 626s', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/AMX/ASJJ0xGajy/ua-profile.xml' => [ 'HTC', 'Desire 626s', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/4GjJvIf3I5/ua-profile.xml' => [ 'HTC', 'Desire 626s', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/ASJJ0xGajy/ua-profile.xml' => [ 'HTC', 'Desire 626s', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Cricket/ASJJ0xGajy/ua-profile.xml' => [ 'HTC', 'Desire 626s', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/nn9cpSwLNa/ua-profile.xml' => [ 'HTC', 'Desire 7060', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/mmxr4Fc9EJ/ua-profile.xml' => [ 'HTC', 'Desire 7088', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/azxFLxeBCm/ua-profile.xml' => [ 'HTC', 'Desire 709d', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/710C-SPRPRE/2336525.rdf' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/710C-VIRGIN/1136521.rdf' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/710C-VIRGIN/1506523.rdf' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/710C-VIRGIN/2336522.rdf' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/710C-VIRGIN/2336525.rdf' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/710C-VIRGIN/InsertCoin 100.rdf' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/HTC_D816d.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ACG/weCs1tpPUG/ua-profile_500K.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/7QtMcMcyB2/ua-profile.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/geUXhkfboO/ua-profile.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/HRobRleNsO/ua-profile.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Khlg9cPNZP/ua-profile.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/miKNCjjDHJ/ua-profile.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/rLgUe79qmx/ua-profile.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/rYMdtoVVAt/ua-profile.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/yKVvh30qEM/ua-profile.xml' => [ 'HTC', 'Desire 816', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/j4yjajckun/ua-profile.xml' => [ 'HTC', 'Desire 816G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/pPB1MJUnqf/ua-profile.xml' => [ 'HTC', 'Desire 816G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/x7cG56PcBk/ua-profile.xml' => [ 'HTC', 'Desire 816G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bouygues/GC0znJc20B/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CMCC/B3BRtglhHJ/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CMCC/rTlnYuch0E/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/8y4niiluZ7/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/B3BRtglhHJ/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/EjHarhDDvK/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/GC0znJc20B/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/rTlnYuch0E/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/wLkc0BX3An/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/GC0znJc20B/ua-profile.xml' => [ 'HTC', 'Desire 820', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CMCC/EjHarhDDvK/ua-profile.xml' => [ 'HTC', 'Desire 820G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/mJQD40NuOR/ua-profile.xml' => [ 'HTC', 'Desire 820G+', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Europe/mJQD40NuOR/ua-profile.xml' => [ 'HTC', 'Desire 820G+', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/aXk2CNmBRo/ua-profile.xml' => [ 'HTC', 'Desire 826', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/c8HDMjoq7Q/ua-profile.xml' => [ 'HTC', 'Desire 826', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/L7YHOLHUJE/ua-profile.xml' => [ 'HTC', 'Desire 826', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/6G97EEWjge/ua-profile.xml' => [ 'HTC', 'Desire 828', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Liurl1pXZW/ua-profile.xml' => [ 'HTC', 'Desire 830', 'Android', DeviceType::MOBILE ], + 'http://mms.mycricket.com/htc_h1000c.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/A320a/ua-profile.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/L01/ua-profile.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/L01/ua-profile.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/A320a/ua-profile.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/L01/ua-profile.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TIM/L01/ua-profile.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/L01/ua-profile.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/L01/ua-profile.xml' => [ 'HTC', 'Desire C', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/60qf87NvHb/ua-profile.xml' => [ 'HTC', 'Desire Eye', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/kuAD9zppzP/ua-profile.xml' => [ 'HTC', 'Desire Eye', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/R6vdFCdZmJ/ua-profile.xml' => [ 'HTC', 'Desire Eye', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/R6vdFCdZmJ/ua-profile.xml' => [ 'HTC', 'Desire Eye', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/R6vdFCdZmJ/ua-profile.xml' => [ 'HTC', 'Desire Eye', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/Desire HDR402.xml' => [ 'HTC', 'Desire HD', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Ace/A9192-1.0.xml' => [ 'HTC', 'Desire HD', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/DesireHD/ua-profile.xml' => [ 'HTC', 'Desire HD', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/SBM/SBM_001HT-1.0.xml' => [ 'HTC', 'Desire HD', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/DesireHD/ua-profile.xml' => [ 'HTC', 'Desire HD', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/Ace/ua-profile.xml' => [ 'HTC', 'Desire HD', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM6014/ua-profile.xml' => [ 'HTC', 'Desire L', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM862/ua-profile.xml' => [ 'HTC', 'Desire P', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/DesireS/ua-profile.xml' => [ 'HTC', 'Desire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PG88/ua-profile.xml' => [ 'HTC', 'Desire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/S510b/ua-profile.xml' => [ 'HTC', 'Desire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TME/DesireS/ua-profile.xml' => [ 'HTC', 'Desire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/Saga/ua-profile.xml' => [ 'HTC', 'Desire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM861/ua-profile.xml' => [ 'HTC', 'Desire SV', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PL112DS/ua-profile.xml' => [ 'HTC', 'Desire U', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PL113/ua-profile.xml' => [ 'HTC', 'Desire U', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PL111/ua-profile.xml' => [ 'HTC', 'Desire V', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_T328d_1_20120301.XML' => [ 'HTC', 'Desire VC', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/HTC_Desire_VC_T328d.xml' => [ 'HTC', 'Desire VC', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PK781/ua-profile.xml' => [ 'HTC', 'Desire VC', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PK79/ua-profile.xml' => [ 'HTC', 'Desire VT', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bouygues/PO73/ua-profile.xml' => [ 'HTC', 'Desire X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM661/ua-profile.xml' => [ 'HTC', 'Desire X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM661U/ua-profile.xml' => [ 'HTC', 'Desire X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO73/ua-profile.xml' => [ 'HTC', 'Desire X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/PO73/ua-profile.xml' => [ 'HTC', 'Desire X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PO73/ua-profile.xml' => [ 'HTC', 'Desire X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/Vision/ua-profile.xml' => [ 'HTC', 'Desire Z', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/DesireZ/ua-profile.xml' => [ 'HTC', 'Desire Z', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/DreamX/ua-profile-htc-dream-Orange.xml' => [ 'HTC', 'Dream', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/htc/htc6435lvw/htc6435lvw.xml' => [ 'HTC', 'Droid DNA', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr6435/adr6435.xml' => [ 'HTC', 'Droid DNA', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PL832/ua-profile.xml' => [ 'HTC', 'Droid DNA', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/adr62k/adr62k.xml' => [ 'HTC', 'Droid Eris', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr63k/adr63k.xml' => [ 'HTC', 'Droid Incredible', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/IncredibleC/ua-profile.xml' => [ 'HTC', 'Droid Incredible', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr6350/adr6350.xml' => [ 'HTC', 'Droid Incredible 2', 'Android', DeviceType::MOBILE ], + 'http://mms.openmobilepr.com/uaprof/fireball_1M.xml' => [ 'HTC', 'Droid Incredible 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO091/ua-profile.xml' => [ 'HTC', 'E1', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/%CDMA_ROM_VERSION%.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/1106510.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/1136511.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/1226513.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/2136511.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/31565116.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/3166513.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/3176514.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/3176515.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/3176519.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/4036511.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX325CKT/4136513.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/4066514.rdf' => [ 'HTC', 'EVO', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/1116512.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/1116513.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/1136517.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/2086512.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/2086513.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/2176515.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/2896512.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/2956515.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APX515CKT/2956516.rdf' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_X515d_1_20110831.XML' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/HTC/X515C-VMUB/1.0/UAProf.xml' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PG863/ua-profile.xml' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/KDDI/ISW12HT/ua-profile.xml' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/PG863/ua-profile.xml' => [ 'HTC', 'EVO 3D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/1326511.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/3266516.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/3296515.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/3306512.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/3306513.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/3706511.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/4126511.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/4226512.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/4246511.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/4536511.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/4546511.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/4676513.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/5076511.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/5076512.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA9292KT/5076516.rdf' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/KDDI/ISW11HT/ua-profile.xml' => [ 'HTC', 'EVO 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/KT/HTC_X515E/ua-profile.xml' => [ 'HTC', 'EVO 4G+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APC715CKT/2126515.rdf' => [ 'HTC', 'EVO Design 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APC715CKT/2126518.rdf' => [ 'HTC', 'EVO Design 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APC715CKT/3146510.rdf' => [ 'HTC', 'EVO Design 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APC715CKT/4026512.rdf' => [ 'HTC', 'EVO Design 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC715ABB/1056533.rdf' => [ 'HTC', 'EVO Design 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC715ABB/1116530.rdf' => [ 'HTC', 'EVO Design 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC715ABB/1146530.rdf' => [ 'HTC', 'EVO Design 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PH441/ua-profile.xml' => [ 'HTC', 'EVO Design 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA7373KT/1176511.rdf' => [ 'HTC', 'EVO Shift 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA7373KT/2726512.rdf' => [ 'HTC', 'EVO Shift 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA7373KT/2766515.rdf' => [ 'HTC', 'EVO Shift 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA7373KT/2766516.rdf' => [ 'HTC', 'EVO Shift 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA7373KT/2776513.rdf' => [ 'HTC', 'EVO Shift 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA7373KT/2776518.rdf' => [ 'HTC', 'EVO Shift 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/ATP515CKIT/2236511.rdf' => [ 'HTC', 'EVO View 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PJ03/ua-profile.xml' => [ 'HTC', 'Explorer', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr6410/adr6410.xml' => [ 'HTC', 'Fireball', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/PM331/ua-profile.xml' => [ 'HTC', 'First', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PG411/ua-profile.xml' => [ 'HTC', 'Flyer', 'Android', DeviceType::TABLET ], + 'http://www.htcmms.com.tw/Brew/Aqua/F5151-1.0.xml' => [ 'HTC', 'Freestyle', 'Brew', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/att/P4600-1.0.xml' => [ 'HTC', 'Fuze', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Gratia/ua-profile.xml' => [ 'HTC', 'Gratia', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_HD_mini_T5555-1.0.xml' => [ 'HTC', 'HD mini', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_HD2_T8585-1.0.xml' => [ 'HTC', 'HD2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_HD2_T9193-1.0.xml' => [ 'HTC', 'HD2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Leo-1.5.xml' => [ 'HTC', 'HD2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/HTC_HD2-1.0.xml' => [ 'HTC', 'HD2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA6277KT/1566512.rdf' => [ 'HTC', 'Hero', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA6277KT/2276516.rdf' => [ 'HTC', 'Hero', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA6277KT/2316517.rdf' => [ 'HTC', 'Hero', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/APA6277KT/2326512.rdf' => [ 'HTC', 'Hero', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Hero/ua-profile.xml' => [ 'HTC', 'Hero', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/Hero/ua-profile.xml' => [ 'HTC', 'Hero', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/PH39100/ua-profile.xml' => [ 'HTC', 'Holiday', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Alltel/Desire/ua-profile.xml' => [ 'HTC', 'HTC Desire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/WhitestoneW-1.0.xml' => [ 'HTC', 'Imagio', 'Windows Mobile', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_S710d_2_20110301.XML' => [ 'HTC', 'Incredible S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/Vivo/ua-profile.xml' => [ 'HTC', 'Incredible S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PG32/ua-profile.xml' => [ 'HTC', 'Incredible S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/KT/HTC_S710E/ua-profile.xml' => [ 'HTC', 'Incredible S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PK071/ua-profile.xml' => [ 'HTC', 'J', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/KDDI/ISW13HT/ua-profile.xml' => [ 'HTC', 'J', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PL9911/ua-profile.xml' => [ 'HTC', 'J Butterfly', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PL993/ua-profile.xml' => [ 'HTC', 'J Butterfly', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/KDDI/HTL21/ua-profile.xml' => [ 'HTC', 'J Butterfly', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/2Q6jdXut9s/ua-profile.xml' => [ 'HTC', 'J Butterfly (HTL23)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/KDDI/HTL22/ua-profile.xml' => [ 'HTC', 'J One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/Legend/ua-profile.xml' => [ 'HTC', 'Legend', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Legend/ua-profile.xml' => [ 'HTC', 'Legend', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/nTelos/Merge/ua-profile.xml' => [ 'HTC', 'Lexikon', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/love-1.0.xml' => [ 'HTC', 'Love', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/HTC_Magic/ua-profile.xml' => [ 'HTC', 'Magic', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/HTC_Magic/ua-profile_mr.xml' => [ 'HTC', 'Magic', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/Mail-1.0.xml' => [ 'HTC', 'Mail', null, DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/quartz-1.0.xml' => [ 'HTC', 'Max 4G', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Merge/ua-profile.xml' => [ 'HTC', 'Merge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/PPC6800/3566510.rdf' => [ 'HTC', 'Mogul', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Breeze-2.0.xml' => [ 'HTC', 'MTeoR', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/common/NexusOne/ua-profile.xml' => [ 'HTC', 'Nexus One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P3P7-Chameleon/3026515.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-11/3056516.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-2011011301/3046512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-2011011301/62365110.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-2011011301/6236516.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/12965110.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/1296517.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/1316512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/3046512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/3056516.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/4066519.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/5036513.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/5056512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/6166512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/62365110.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-Chameleon/6236516.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/12965110.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/1296517.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/1316512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/3046512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/3056515.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/3056516.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/4066514.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/4066519.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/42ONE Inverted ROM v12.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/5036513.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/5056512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/6166512.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/62365110.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/6236516.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/6236517.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/Ava-OneV1//ALPHA1.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/Bad Boyz Sprint ONE M7 Lollipop v20.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/Bad Boyz Sprint ONE M7 Lollipop v30.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/Bad Boyz Sprint ONE Sense 6 v10.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/benny\'s 43.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/BSC Tranquil One RLS42.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/InsertCoin 711.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/RageOne CDMA v100.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/RageOne v151.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/Stock 12965110 Odex by -viperboy-.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/Stock w Goodies One 115.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/Stock w Goodies One 201.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/Stock.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/TrickDroid 551.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/ViperOne 350.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/ViperOne 701.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTCPN702-SPRINT/viperROM One v102.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/PN071/ua-SPRINT/ViperOne 800.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/PN071/ua-SPRINT/ViperOne 900.rdf' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://mms.cellcom.com/uaprofs/htc_M7_8M.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_802d_1_20130301.XML' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_One_1_20130301.XML' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://pix.cspire.com/UA/profile/htc/PN072/PN072.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/HTC_802d.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/htc/htc6500lvw/htc6500lvw.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ACG/PN072/ua-profile_1M.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/AMX/PN0711/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/BM/801a/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CBW/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/82ZtOKlRiO/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PN0711/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PN072/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PN07310/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PN077U/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PN078T/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PN078U/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PN078W/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/LRA/PN07310/ua-profile_500K.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Nextel/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/801a/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telcel/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/801a/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TIM/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMOUS/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TNZ/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/WIND/PN071/ua-profile.xml' => [ 'HTC', 'One', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/2PQ93-SPRINT/1106511.rdf' => [ 'HTC', 'One (A9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/2PQ93-SPRINT/1576511.rdf' => [ 'HTC', 'One (A9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/2PQ93-SPRINT/1606514.rdf' => [ 'HTC', 'One (A9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/fJ1ZSlse0F/ua-profile.xml' => [ 'HTC', 'One (A9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/rjXLBq21RC/ua-profile.xml' => [ 'HTC', 'One (A9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-Chameleon/1116512.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-Chameleon/1226511.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-Chameleon/23265111.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-MVNO/2326517.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-SPRINT/1076511.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-SPRINT/1226511.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-SPRINT/23265111.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-SPRINT/2326517.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PAJ5-SPRINT/3106516.rdf' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/3vpxk6Z5ZS/ua-profile.xml' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/q5lv3bcp7D/ua-profile.xml' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Uriwn0DyqH/ua-profile.xml' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/zlxtuCDKgt/ua-profile.xml' => [ 'HTC', 'One (E8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CMCC/mifaCnXW7o/ua-profile.xml' => [ 'HTC', 'One (E9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/mifaCnXW7o/ua-profile.xml' => [ 'HTC', 'One (E9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/mK8zhMmjOr/ua-profile.xml' => [ 'HTC', 'One (E9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CMCC/cIIxkEojnw/ua-profile.xml' => [ 'HTC', 'One (M8 Eye)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/cIIxkEojnw/ua-profile.xml' => [ 'HTC', 'One (M8 Eye)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/RIGWqFpTj2/ua-profile.xml' => [ 'HTC', 'One (M8 Eye)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/11265117.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/15465110.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/1546518.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/2166514.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/3306512.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/42065110.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/4209065110.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/42565114.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/42565118.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-Chameleon/6206513.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-MVNO/2166514.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-MVNO/42065110.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-MVNO/42565114.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/15465110.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/1546518.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/2166514.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/3306512.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/3316512.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/42065110.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/42565114.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/42565118.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/42565418.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/6206513.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/6206543.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/Bad Boyz Sprint ONE M8 Harman v21 ART.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/Bad Boyz Sprint ONE M8 L Sense 7 v10.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/Bad Boyz Sprint ONE M8 Lollipop v30.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/Bad Boyz Sprint ONE M8 Lollipop v32.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/InsertCoin 716.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/InsertCoin 719.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831C-SPRINT/ViperOneM8 430.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831CH-Chameleon/15465413.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831CH-Chameleon/42065410.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831CH-Chameleon/42565414.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/831CH-Chameleon/6206543.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/1546518.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/15465413.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/15465415.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/1546549.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/2166544.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/3306512.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/3306542.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/3316542.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/42065410.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/42565114.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/42565414.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/42565418.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/6206513.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/6206543.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/Bad Boyz Sprint ONE M8 L Sense 7 v10.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/Bad Boyz Sprint ONE M8 Lollipop v30.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/Bad Boyz Sprint ONE M8 Lollipop v32 HK.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/SkyDragon M8 v 100 Sprint Sense 7.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/SkyDragon M8 v 80 Sprint Sense 7.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/ViperOneM8 430.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/AP831CHK/ViperOneM8 502.rdf' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://mms.cellcom.com/uaprofs/htc_M8_8M.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/htc/htc6525lvw/htc6525lvw.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/AMX/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/BM/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/0YC9TSsPzu/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/3EdRGieOMj/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/3f2Kak1ivc/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/5iCu8aRdPo/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/ABUe39rODk/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/JLnzRx2IlE/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/MaGxKOfxPJ/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/LRA/82ZtOKlRiO/ua-profile_500K.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/SFR/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telcel/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TIM/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMOUS/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TNZ/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/WIND/fL0fd1AcEY/ua-profile.xml' => [ 'HTC', 'One (M8)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PPzlrbleWf/ua-profile.xml' => [ 'HTC', 'One (M8s)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PPzlrbleWf/ua-profile.xml' => [ 'HTC', 'One (M8s)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/PPzlrbleWf/ua-profile.xml' => [ 'HTC', 'One (M8s)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/RBuZib3xtL/ua-profile.xml' => [ 'HTC', 'One (M9 Plus)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PJA2-Chameleon/3416514.rdf' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PJA2-SPRINT/13265130.rdf' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PJA2-SPRINT/21165119.rdf' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PJA2-SPRINT/2665111.rdf' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PJA2-SPRINT/3416514.rdf' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/0PJA2-SPRINT/Bad Boyz Sprint ONE M9 v20.rdf' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/xbKGNh1DoH/ua-profile.xml' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CMCC/c8HDMjoq7Q/ua-profile.xml' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/15Y7tWDPNn/ua-profile.xml' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/uej4ao2E9J/ua-profile.xml' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/WDfCkeuHE6/ua-profile.xml' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/WOCIeZasGc/ua-profile.xml' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/xbKGNh1DoH/ua-profile.xml' => [ 'HTC', 'One (M9)', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/bDZc52YZeG/ua-profile.xml' => [ 'HTC', 'One (X9)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P3P7-Chameleon/%CDMA_ROM_VERSION%.rdf' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P3P7-Chameleon/0576512.rdf' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P3P7-Chameleon/3036513.rdf' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P3P7-SPRINT/1166514.rdf' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P3P7-SPRINT/2096511.rdf' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P3P7-SPRINT/3026515.rdf' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/HTC0P3P7-SPRINT/SkyDragon Max v 20 Sprint.rdf' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/0O5MHN0Mig/ua-profile.xml' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/arYPBWMPCx/ua-profile.xml' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/LDdI1qcVhL/ua-profile.xml' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/V79ccMv3KO/ua-profile.xml' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/w778dYholc/ua-profile.xml' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/w778dYholc/ua-profile.xml' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/w778dYholc/ua-profile.xml' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/w778dYholc/ua-profile.xml' => [ 'HTC', 'One Max', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CMCC/15Y7tWDPNn/ua-profile.xml' => [ 'HTC', 'One ME', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/PO582/ua-profile.xml' => [ 'HTC', 'One Mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO581/ua-profile.xml' => [ 'HTC', 'One Mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PO582/ua-profile.xml' => [ 'HTC', 'One Mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/PO582/ua-profile.xml' => [ 'HTC', 'One Mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/PO582/ua-profile.xml' => [ 'HTC', 'One Mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/PO582/ua-profile.xml' => [ 'HTC', 'One Mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/PO582//ua-profile.xml' => [ 'HTC', 'One Mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TIM/PO582/ua-profile.xml' => [ 'HTC', 'One Mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PO582/ua-profile.xml' => [ 'HTC', 'One mini', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/UlrIAz8JY9/ua-profile.xml' => [ 'HTC', 'One Mini 2', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/UlrIAz8JY9/ua-profile.xml' => [ 'HTC', 'One Mini 2', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/UlrIAz8JY9/ua-profile.xml' => [ 'HTC', 'One Mini 2', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/UlrIAz8JY9/ua-profile.xml' => [ 'HTC', 'One Mini 2', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/Z520m/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bouygues/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Canada/Z520m/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/CBW/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PJ402/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/TX408/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Mobilicity/Z520m/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Nextel/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/Z520m/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telcel/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/Z520m/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TIM/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMOUS/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Videotron/Z520m/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/PJ401/ua-profile.xml' => [ 'HTC', 'One S', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_T528d_1_20120801.XML' => [ 'HTC', 'One SC', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/HTC_One_SC_T528d.xml' => [ 'HTC', 'One SC', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM6010/ua-profile.xml' => [ 'HTC', 'One SC', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM6011/ua-profile.xml' => [ 'HTC', 'One ST', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM6012/ua-profile.xml' => [ 'HTC', 'One SU', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/C525c-BOOST/1116531.rdf' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/C525c-BOOST/2066535.rdf' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/C525c-BOOST/2066536.rdf' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/C525c-BOOST/3056533.rdf' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/C525c-BOOST/3056534.rdf' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://mms.mycricket.com/htc_h3000c.xml' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bouygues/PL801/ua-profile.xml' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PL801/ua-profile.xml' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PL8011/ua-profile.xml' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/PL801/ua-profile.xml' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TIM/PL8011/ua-profile.xml' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PL801/ua-profile.xml' => [ 'HTC', 'One SV', 'Android', DeviceType::MOBILE ], + 'http://mms.mycricket.com/htc_h2000c.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/HTC/T120C-VMUB/1.0/UAProf.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/T320a/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PJ835/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PK76/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PK7631/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telcel/PK76/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/PJ831/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/T320a/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PK76/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TNZ/PK76/ua-profile.xml' => [ 'HTC', 'One V', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/PM361/ua-profile.xml' => [ 'HTC', 'One VX', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/PJ831/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PJ461/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PJ831/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM3511/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/PJ461/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/PJ831/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/O2/PM3511/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/PJ461/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/X325a/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telcel/PJ461/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/X325a/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PJ461/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/PJ831/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TNZ/PJ461/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/PJ461/ua-profile.xml' => [ 'HTC', 'One X', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/PM631/ua-profile.xml' => [ 'HTC', 'One X+', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PM631/ua-profile.xml' => [ 'HTC', 'One X+', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telus/X525a/ua-profile.xml' => [ 'HTC', 'One X+', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_X720d_1_20120401.XML' => [ 'HTC', 'One XC', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Vodafone/PJ831/ua-profile.xml' => [ 'HTC', 'One XL', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PJ462/ua-profile.xml' => [ 'HTC', 'One XT', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Oxygen-1.0.xml' => [ 'HTC', 'Oxygen', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/CedarW-1.0.xml' => [ 'HTC', 'Ozone', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/wave-1.0.xml' => [ 'HTC', 'P3000', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/artemis-1.0.xml' => [ 'HTC', 'P3300', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/elf-1.0.xml' => [ 'HTC', 'P3450', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Trinity-1.0.xml' => [ 'HTC', 'P3600', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Herald-1.0.xml' => [ 'HTC', 'P4350', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/sedna-1.0.xml' => [ 'HTC', 'P6500', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Panda-1.0.xml' => [ 'HTC', 'Panda', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Pharos-1.0.xml' => [ 'HTC', 'Pharos', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Prophet-2.0.xml' => [ 'HTC', 'Prophet', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/pu10-2.0.xml' => [ 'HTC', 'PU10', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/Holiday/ua-profile.xml' => [ 'HTC', 'Raider', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/Holiday/ua-profile.xml' => [ 'HTC', 'Raider', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PH39/ua-profile.xml' => [ 'HTC', 'Raider 4G', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr6425/adr6425.xml' => [ 'HTC', 'Rezound', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr6330/adr6330.xml' => [ 'HTC', 'Rhyme', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PI4610/ua-profile.xml' => [ 'HTC', 'Rhyme', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PD421/ua-profile.xml' => [ 'HTC', 'S610d', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Cavalier-1.0.xml' => [ 'HTC', 'S630', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Vox-1.0.xml' => [ 'HTC', 'S710', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Volans-1.0.xml' => [ 'HTC', 'S730', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_S740-1.0.xml' => [ 'HTC', 'S740', null, DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PH11/ua-profile.xml' => [ 'HTC', 'Salsa', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/Pyramid/ua-profile.xml' => [ 'HTC', 'Sensation', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/HTC_Sensation_4G/ua-profile.xml' => [ 'HTC', 'Sensation', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PG58/ua-profile.xml' => [ 'HTC', 'Sensation', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PG5814/ua-profile.xml' => [ 'HTC', 'Sensation', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Orange/PG58/ua-profile.xml' => [ 'HTC', 'Sensation', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/Z710a/ua-profile.xml' => [ 'HTC', 'Sensation', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/Pyramid/ua-profile.xml' => [ 'HTC', 'Sensation', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PG5813/ua-profile.xml' => [ 'HTC', 'Sensation XE', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/SensationXE/ua-profile.xml' => [ 'HTC', 'Sensation XE', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PI39/ua-profile.xml' => [ 'HTC', 'Sensation XL', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/KT/HTC-X315E/ua-profile.xml' => [ 'HTC', 'Sensation XL', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/Runnymede/ua-profile.xml' => [ 'HTC', 'Sensation XL', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tme/HTC_Snap_S521-1.0.xml' => [ 'HTC', 'Snap', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/st20-1.0.xml' => [ 'HTC', 'ST20', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/ATT/PH06130/ua-profile.xml' => [ 'HTC', 'Status', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PK793/ua-profile.xml' => [ 'HTC', 'T327t', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_T329d_1_20120901.XML' => [ 'HTC', 'T329d', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_T9199_2_20100902.xml' => [ 'HTC', 'T9199', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/HTC_TATTOO_A3288/ua-profile.xml' => [ 'HTC', 'Tattoo', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Tattoo/ua-profile.xml' => [ 'HTC', 'Tattoo', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/UTSTARCOM/PG051/ua-profile.xml' => [ 'HTC', 'ThunderBolt', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr6325/adr6325.xml' => [ 'HTC', 'Thunderbolt 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Titan-1.0.xml' => [ 'HTC', 'Titan', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/tornado-2.0.xml' => [ 'HTC', 'Tornado', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/brightstar/ELFIN-1.0.xml' => [ 'HTC', 'Touch', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Elfin_Opera-1.0.xml' => [ 'HTC', 'Touch', 'Windows', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_Touch_Viva_T2223-1.0.xml' => [ 'HTC', 'Touch', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_Touch2_T3333-1.0.xml' => [ 'HTC', 'Touch 2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/mega-1.0.xml' => [ 'HTC', 'Touch 2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_Touch_3G_T3232-1.0.xml' => [ 'HTC', 'Touch 3G', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/Jade-1.0.xml' => [ 'HTC', 'Touch 3G', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Polaris-1.0.xml' => [ 'HTC', 'Touch Cruise', 'Windows Mobile', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/MP6950SP/1096515.rdf' => [ 'HTC', 'Touch Diamond', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/diamond-1.0.xml' => [ 'HTC', 'Touch Diamond', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/victor-1.0.xml' => [ 'HTC', 'Touch Diamond', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/VictorC-1.0.xml' => [ 'HTC', 'Touch Diamond', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/VictorCT-1.0.xml' => [ 'HTC', 'Touch Diamond', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/diamond-1.0.xml' => [ 'HTC', 'Touch Diamond', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_Touch_Diamond2_T5353-1.0.xml' => [ 'HTC', 'Touch Diamond 2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_Touch_Diamond2_T5360-1.0.xml' => [ 'HTC', 'Touch Diamond 2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/neon-1.0.xml' => [ 'HTC', 'Touch Dual', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/NeonC_BM-1.0.xml' => [ 'HTC', 'Touch Dual', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/nike-1.0.xml' => [ 'HTC', 'Touch Dual', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_Touch_HD_T8282-1.0.xml' => [ 'HTC', 'Touch HD', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/HTC_Touch_HD_T8282-1.0.xml' => [ 'HTC', 'Touch HD', 'Windows Mobile', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/PPC6850SP/1036513.rdf' => [ 'HTC', 'Touch Pro', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HermannC_BM-1.0.xml' => [ 'HTC', 'Touch Pro', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_Touch_Pro_T7272-1.0.xml' => [ 'HTC', 'Touch Pro', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Raphael-1.0.xml' => [ 'HTC', 'Touch Pro', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/swisscom/HTC_Touch_Pro-1.0.xml' => [ 'HTC', 'Touch Pro', 'Windows Mobile', ], + 'http://www.htcmms.com.tw/voda/HTC_Touch_Pro-1.0.xml' => [ 'HTC', 'Touch Pro', 'Windows Mobile', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/PPCT7380SP/1216514.rdf' => [ 'HTC', 'Touch Pro 2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HTC/PPCT7380SP/2046514.rdf' => [ 'HTC', 'Touch Pro 2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/HTC_Touch_Pro2_T7373-1.0.xml' => [ 'HTC', 'Touch Pro 2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/RhodiumW-1.0.xml' => [ 'HTC', 'Touch Pro 2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Hermes-1.0.xml' => [ 'HTC', 'TyTN', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Hermes-2.0.xml' => [ 'HTC', 'TyTN', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/kaiser-1.0.xml' => [ 'HTC', 'TyTN II', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/LaQXqvY3I3/ua-profile.xml' => [ 'HTC', 'U Ultra', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/rlIC3c716z/ua-profile.xml' => [ 'HTC', 'U11', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/KMKeMMeWHK/ua-profile.xml' => [ 'HTC', 'U11 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/Wildfire/ua-profile.xml' => [ 'HTC', 'Wildfire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/A3335/ua-profile.xml' => [ 'HTC', 'Wildfire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TME/Wildfire/ua-profile.xml' => [ 'HTC', 'Wildfire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/Buzz/ua-profile.xml' => [ 'HTC', 'Wildfire', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Alltel/Bee/ua-profile.xml' => [ 'HTC', 'Wildfire 6225', 'Android', DeviceType::MOBILE ], + 'http://mmsc1.uscc.net/mmsc/MMS' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_A510c_1_20110425.XML' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/HTC-PG762.xml' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/HTC/A510c-VMUB/1.0/UAProf.xml' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Bell/Marvel/ua-profile.xml' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PG76/ua-profile.xml' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/WildfireS/ua-profile.xml' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Telstra/A510b/ua-profile.xml' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/Marvel/ua-profile.xml' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/TME/WildfireS/ua-profile.xml' => [ 'HTC', 'Wildfire S', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Wizard-2.0.xml' => [ 'HTC', 'Wizard', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/X1i-1.0.xml' => [ 'HTC', 'X1i', 'Windows Mobile', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HTC/HTC_Z510d_1_20110831.XML' => [ 'HTC', 'Z510d', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_A199_1_20130121.xml' => [ 'Huawei', 'A199', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Huawei-M920.xml' => [ 'Huawei', 'Activa 4G', 'Android', DeviceType::MOBILE ], + 'http://mms.mycricket.com/Huawei-M860.xml' => [ 'Huawei', 'Ascend', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Huawei_M860_Normal.xml' => [ 'Huawei', 'Ascend', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiC8812CDMA-NORMAL.xml' => [ 'Huawei', 'Ascend C8812', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiC8812CDMA2000-NORMAL.xml' => [ 'Huawei', 'Ascend C8812', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiC8812WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend C8812', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8812E_1_20120713.xml' => [ 'Huawei', 'Ascend C8812', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8812E_1_20121018.xml' => [ 'Huawei', 'Ascend C8812', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8812_1_20120228.xml' => [ 'Huawei', 'Ascend C8812', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8813D_1_20121018.xml' => [ 'Huawei', 'Ascend C8813', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8813Q_1_20130108.xml' => [ 'Huawei', 'Ascend C8813', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8813Q_1_20130425.xml' => [ 'Huawei', 'Ascend C8813', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8813_1_20121018.xml' => [ 'Huawei', 'Ascend C8813', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8813Q_1_20121018.xml' => [ 'Huawei', 'Ascend C8815', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8816D_1_20131107.xml' => [ 'Huawei', 'Ascend C8816', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8816_1_20131106.xml' => [ 'Huawei', 'Ascend C8816', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9501L_UAProfile.xml' => [ 'Huawei', 'Ascend D LTE', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9510E_UAProfile.xml' => [ 'Huawei', 'Ascend D quad', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9510_UAProfile.xml' => [ 'Huawei', 'Ascend D quad', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9500_UAProfile.xml' => [ 'Huawei', 'Ascend D1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T9510E_UAProfile.xml' => [ 'Huawei', 'Ascend D1 Quad XL', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9500E_UAProfile.xml' => [ 'Huawei', 'Ascend D1 XL', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_D2-0082_Global_UAProfile.XML' => [ 'Huawei', 'Ascend D2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_D2_6114_UAProfile.xml' => [ 'Huawei', 'Ascend D2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_D2-0082_1_20121221_UAProfile.XML' => [ 'Huawei', 'Ascend D2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_D2-2010_1_20121026_UAProfile.XML' => [ 'Huawei', 'Ascend D2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_D2-2010_2_20130106_UAProfile.XML' => [ 'Huawei', 'Ascend D2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_D2-5000_2_20121218_UAProfile.XML' => [ 'Huawei', 'Ascend D2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8815GPRS-NORMAL-ICS.xml' => [ 'Huawei', 'Ascend G300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8815GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend G300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8815NWCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend G300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8815WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend G300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8818GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend G300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8818WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend G300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_c8800_2_20111116.xml' => [ 'Huawei', 'Ascend G300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8810_2_20111116.xml' => [ 'Huawei', 'Ascend G300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8816WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend G301', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.huawei.com/uaprof/HUAWEI_T8828-1.0.xml' => [ 'Huawei', 'Ascend G305T', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T8830_UAProfile.xml' => [ 'Huawei', 'Ascend G309T', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T8830Pro_UAProfile.xml' => [ 'Huawei', 'Ascend G309T Pro', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8681GPRS-VTR.xml' => [ 'Huawei', 'Ascend G312', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8681GPRS-WIND.xml' => [ 'Huawei', 'Ascend G312', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG330-0100GPRS.xml' => [ 'Huawei', 'Ascend G330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8825-1GPRS.xml' => [ 'Huawei', 'Ascend G330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8825DGPRS-Unicom.xml' => [ 'Huawei', 'Ascend G330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8825D_1_20120530.xml' => [ 'Huawei', 'Ascend G330C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_U8825D_1_20121018.xml' => [ 'Huawei', 'Ascend G330D', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8836Dv100CHNC00WCDMA.xml' => [ 'Huawei', 'Ascend G500', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8826D_1_20120926.xml' => [ 'Huawei', 'Ascend G500C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0010GPRS-Normal.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0010GPRS-Russia.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0010GPRS-UNICOM.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0010GPRS.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0100GPRS-FL.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0100GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0100GPRS-Vodafone.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0100GPRS.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0100WCDMA-FL.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0200GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0200GPRS-Yoigo.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0200GPRS.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0251GPRS-DRM.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0251GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T8951_UAProfile.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_U8951_1_20121018.xml' => [ 'Huawei', 'Ascend G510', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG520-0000GPRS-UNICOM.xml' => [ 'Huawei', 'Ascend G520', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G520-5000_UAProfile.xml' => [ 'Huawei', 'Ascend G520', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G520-T10_UAProfile.xml' => [ 'Huawei', 'Ascend G520', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G520-U00_1_20121018.xml' => [ 'Huawei', 'Ascend G520', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG525-U00GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend G525', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG525-U00GPRS-UNICOM.xml' => [ 'Huawei', 'Ascend G525', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG525-U00GPRS.xml' => [ 'Huawei', 'Ascend G525', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G525-UOO_1_20130425.xml' => [ 'Huawei', 'Ascend G525', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HUAWEI/PLTFH882KT/H882LV100R001C378B145.rdf' => [ 'Huawei', 'Ascend G526', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG526-L11LTE-Normal.xml' => [ 'Huawei', 'Ascend G526', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG526-L22LTE-Normal.xml' => [ 'Huawei', 'Ascend G526', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG526-L33LTE-Normal.xml' => [ 'Huawei', 'Ascend G526', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG527-U081-Normal.xml' => [ 'Huawei', 'Ascend G527', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG535.xml' => [ 'Huawei', 'Ascend G535', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG6L11-3G.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG6L11_KK_EU.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG6L22.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG6L33.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6-T00_EMUI3_UAProfile.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6-T00_UAProfile.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6-U10_KK_UAProfile.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6-U10_UAProfile-DRM.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6-U10_UAProfile.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6-U251_UAProfile.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6_C00_KK.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6_U00.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6_U00_KK.xml' => [ 'Huawei', 'Ascend G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8950-1GPRS-Normal.xml' => [ 'Huawei', 'Ascend G600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8950-51GPRS-Normal.xml' => [ 'Huawei', 'Ascend G600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8950DGPRS-UNICOM.xml' => [ 'Huawei', 'Ascend G600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8950N-1GPRS-Normal.xml' => [ 'Huawei', 'Ascend G600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8950N-51GPRS-Normal.xml' => [ 'Huawei', 'Ascend G600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8950N-51WCDMA-Normal.xml' => [ 'Huawei', 'Ascend G600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T8950_UAProfile.xml' => [ 'Huawei', 'Ascend G600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G610-T00_UAProfile.xml' => [ 'Huawei', 'Ascend G610', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G610-T11_UAProfile.xml' => [ 'Huawei', 'Ascend G610', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G610-U00_UAProfile.xml' => [ 'Huawei', 'Ascend G610', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G610-U15_UAProfile.xml' => [ 'Huawei', 'Ascend G610', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G610-U20_UAProfile.xml' => [ 'Huawei', 'Ascend G610', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G610-U30_UAProfile.xml' => [ 'Huawei', 'Ascend G610', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G610-C00_1_20130108.xml' => [ 'Huawei', 'Ascend G610', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G615_U10.xml' => [ 'Huawei', 'Ascend G615', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G616-T00_UAProfile.xml' => [ 'Huawei', 'Ascend G616', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620-A2.xml' => [ 'Huawei', 'Ascend G620', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620-A2_CC.xml' => [ 'Huawei', 'Ascend G620', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620-L72.xml' => [ 'Huawei', 'Ascend G620', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620-L75.xml' => [ 'Huawei', 'Ascend G620', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620S-L03.xml' => [ 'Huawei', 'Ascend G620', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620_1_20130917.xml' => [ 'Huawei', 'Ascend G620', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620S-L01.xml' => [ 'Huawei', 'Ascend G620S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620S-L02.xml' => [ 'Huawei', 'Ascend G620S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620S-L03_PERU.xml' => [ 'Huawei', 'Ascend G620S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/G621-TL00.xml' => [ 'Huawei', 'Ascend G621', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G621-TL00.xml' => [ 'Huawei', 'Ascend G621', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/G628-TL00_LTE_UAProfile.xml' => [ 'Huawei', 'Ascend G628', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/G629_LTE_UAProfile.xml' => [ 'Huawei', 'Ascend G629', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG630-U20-DRM.xml' => [ 'Huawei', 'Ascend G630', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG630-U20-Normal-WCDMA.xml' => [ 'Huawei', 'Ascend G630', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG630-U20-Normal.xml' => [ 'Huawei', 'Ascend G630', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG630-U251-Normal.xml' => [ 'Huawei', 'Ascend G630', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G630_U00.xml' => [ 'Huawei', 'Ascend G630', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G630_U10.xml' => [ 'Huawei', 'Ascend G630', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHC-U03_NLA_UAProfile.xml' => [ 'Huawei', 'Ascend G650', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHC-U03_UAProfile.xml' => [ 'Huawei', 'Ascend G650', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G660-L075.xml' => [ 'Huawei', 'Ascend G660', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_%s_lollipop_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_%s_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G7-L01_OrangeUAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G7-L01_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G7-L02_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G7-L03_DRMFL_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G7-L03_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G7-L11_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G7-TL00_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G7-UL20_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Rock-L01_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Rock-L01_UAProfile_DRM.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Rock-L03_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G760-L01-TME.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_Rock-L01_DT_UAProfile.xml' => [ 'Huawei', 'Ascend G7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G700-T00_UAProfile.xml' => [ 'Huawei', 'Ascend G700', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G700-U00_UAProfile.xml' => [ 'Huawei', 'Ascend G700', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G700-U10_UAProfile.xml' => [ 'Huawei', 'Ascend G700', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G700-U20_UAProfile.xml' => [ 'Huawei', 'Ascend G700', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOHuawei G700-U00.xml' => [ 'Huawei', 'Ascend G700', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG716-L070LTE.xml' => [ 'Huawei', 'Ascend G716', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G718_1_20130805.xml' => [ 'Huawei', 'Ascend G718', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G730-T00_UAProfile.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G730-U00_UAProfile.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G730-U10_UAProfile.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G730-U251_UAProfile.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G730-U27_UAProfile.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G730-U30_UAProfile.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G730-C00_20130826.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G730-C10_1_20130828.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G730-L075.xml' => [ 'Huawei', 'Ascend G730', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G735-L03_UAProfile.xml' => [ 'Huawei', 'Ascend G735', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G735-L03__NLA_UAProfile.xml' => [ 'Huawei', 'Ascend G735', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G735-L23_UAProfile.xml' => [ 'Huawei', 'Ascend G735', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG740-L00LTE-DRM.xml' => [ 'Huawei', 'Ascend G740', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG740-L00LTE-Normal.xml' => [ 'Huawei', 'Ascend G740', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G750-T01_UAProfile.xml' => [ 'Huawei', 'Ascend G750', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G750-T20_UAProfile.xml' => [ 'Huawei', 'Ascend G750', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G750-U10_UAProfile.xml' => [ 'Huawei', 'Ascend G750', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G760-TL00_UAProfile.xml' => [ 'Huawei', 'Ascend G760', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G620S-UL00.xml' => [ 'Huawei', 'Ascend G760', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G760-L01.xml' => [ 'Huawei', 'Ascend G760', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G760-L01_Europe_DRM-UAProfile.xml' => [ 'Huawei', 'Ascend G760', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_G760-L071.xml' => [ 'Huawei', 'Ascend G760', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-AL00_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-CL00_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Huawei_RIO-L01_DT_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L01_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L01_UAProfile_DRM.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L01_UAProfile_DRM_FL.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L01_UAProfile_Orange_DRM.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L02_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L02_UAProfile_DRM.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L03_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L03_UAProfile_DRM.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L03_UAProfile_DRMALL.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-L03_UAProfile_DRMALL_1MB.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-TL00_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIO-UL00_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_RIOL03_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Rock-CL00_UAProfile.xml' => [ 'Huawei', 'Ascend G8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/SC-UL10_LTE_UAProfile.xml' => [ 'Huawei', 'Ascend GX1', 'Android', DeviceType::MOBILE ], + 'http://mms.mycricket.com/Huawei-M865.xml' => [ 'Huawei', 'Ascend II', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/Huawei/ADR3310/ADR3310v1.xml' => [ 'Huawei', 'Ascend II', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/OEM/ADR3305/ADR3305v1.xml' => [ 'Huawei', 'Ascend II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Huawei-M865C.xml' => [ 'Huawei', 'Ascend II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MATE_T00_UAProfile.xml' => [ 'Huawei', 'Ascend Mate', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MATE_UAProfile.XML' => [ 'Huawei', 'Ascend Mate', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MATE_Wind_UAProfile.XML' => [ 'Huawei', 'Ascend Mate', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Huawei_MT2-L02_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Huawei_MT2-L05_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MT2_L05_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Mate2.xml' => [ 'Huawei', 'Ascend Mate 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_MT2-C00_1_20130425.xml' => [ 'Huawei', 'Ascend Mate 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_MT2-C00_1_20131227.xml' => [ 'Huawei', 'Ascend Mate 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MT7-TL00_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MT7-TL10_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MT7-UL00_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MT7_L09_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Z100-TL00_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Z100_L09_UAProfile.xml' => [ 'Huawei', 'Ascend Mate 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_MT7-CL00_2_20140903.xml' => [ 'Huawei', 'Ascend Mate 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Z100-CL00_1_20140709.xml' => [ 'Huawei', 'Ascend Mate 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_GS03_UAProfile.xml' => [ 'Huawei', 'Ascend P1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T9200_UAProfile.xml' => [ 'Huawei', 'Ascend P1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9200_UAProfile.xml' => [ 'Huawei', 'Ascend P1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9201L_UAProfile.xml' => [ 'Huawei', 'Ascend P1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9202L-1_UAProfile.xml' => [ 'Huawei', 'Ascend P1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9202L-3_UAProfile.xml' => [ 'Huawei', 'Ascend P1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_P2_NewZealand_UAProfile.xml' => [ 'Huawei', 'Ascend P2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_P2_UAProfile.xml' => [ 'Huawei', 'Ascend P2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9700L_UAProfile.xml' => [ 'Huawei', 'Ascend P2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_P6_S_U00_UAProfile.xml' => [ 'Huawei', 'Ascend P6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_P6_T00_UAProfile.xml' => [ 'Huawei', 'Ascend P6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_P6_U06_MTN_UAProfile.xml' => [ 'Huawei', 'Ascend P6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_P6_U06_UAProfile.xml' => [ 'Huawei', 'Ascend P6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_P6_U06_Wind_UAProfile.xml' => [ 'Huawei', 'Ascend P6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_P6-C00_1_20130425.xml' => [ 'Huawei', 'Ascend P6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MT2_T00_UAProfile.xml' => [ 'Huawei', 'Ascend P7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_MT2_U071_UAProfile.xml' => [ 'Huawei', 'Ascend P7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_SOPHIA_L07_UAProfile.xml' => [ 'Huawei', 'Ascend P7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_SOPHIA_L10_UAProfile.xml' => [ 'Huawei', 'Ascend P7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_SOPHIA_L10_UAProfile_3G.xml' => [ 'Huawei', 'Ascend P7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_SOPHIA_L11_UAProfile.xml' => [ 'Huawei', 'Ascend P7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_SOPHIA_L12_UAProfile.xml' => [ 'Huawei', 'Ascend P7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_P7-L09_1_20140327.xml' => [ 'Huawei', 'Ascend P7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_GRA-TL00_UAProfile.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_GRA-UL00_UAProfile.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_GRA-UL10_UAProfile.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_GRA_L09_DRM_UAProfile.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_GRA_L09_UAProfile.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_GRA_L09_VDF_UAProfile_3G.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_GRA_TL00_UAProfile.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_X100-UL00_UAProfile.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_GRA-CL00_1_20150105.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_GRA-CL00_1_20150317.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_GRA-CL10_1_20150317.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_M100-CL00_1_20150120.xml' => [ 'Huawei', 'Ascend P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L02_NLA_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L02_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L04_5.1_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L21_DRM_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L21_FT_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L21_PL_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L21_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L23_NLA_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L23_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-TL00_6.0_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-TL00_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-UL00_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALEL04_UAProfile.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_ALE-CL00_1_20141217.xml' => [ 'Huawei', 'Ascend P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/huawei/h881c/h881c.xml' => [ 'Huawei', 'Ascend Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiM660-Cricket.xml' => [ 'Huawei', 'Ascend Q', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU9000v100WCDMA.xml' => [ 'Huawei', 'Ascend X', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/huawei/h866c/h866c.xml' => [ 'Huawei', 'Ascend Y H866C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8185GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y100', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8185WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y100', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8186GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y101', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8186WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y101', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8655GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y200', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8655WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y200', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T8620_UAProfile.xml' => [ 'Huawei', 'Ascend Y200T', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8666E-1GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y201', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8666E-51GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y201', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8666EGPRS-NORMAL-ICS.xml' => [ 'Huawei', 'Ascend Y201', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8666EGPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y201', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8666GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y201', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8666N-1GPRS-2Degrees.xml' => [ 'Huawei', 'Ascend Y201', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8666N-1GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y201', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8666WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y201', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8655_20120206.xml' => [ 'Huawei', 'Ascend Y201C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY210-C10CDMA-Orinoquia.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y210-2010_1_20120206.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y210S_1_20121105.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0010GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0010WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0100GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0100WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0151GPRS-DRM.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0151GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0151WCDMA-DRM.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0151WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0151WCDMA-TELUS.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0200GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0200WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0251GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y210-0251WCDMA-NORMAL.xml' => [ 'Huawei', 'Ascend Y210', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY220-U00_UAProfile.xml' => [ 'Huawei', 'Ascend Y220', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY220-U05_UAProfile.xml' => [ 'Huawei', 'Ascend Y220', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY220-U10_UAProfile.xml' => [ 'Huawei', 'Ascend Y220', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY221-U03_UAProfile.xml' => [ 'Huawei', 'Ascend Y221', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY221-U12_UAProfile.xml' => [ 'Huawei', 'Ascend Y221', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY221-U22_UAProfile.xml' => [ 'Huawei', 'Ascend Y221', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY221-U53_UAProfile.xml' => [ 'Huawei', 'Ascend Y221', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/OrinoquiaAuyantepui+Y221-U03_UAProfile.xml' => [ 'Huawei', 'Ascend Y221', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0000GPRS-UNICOM.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0000GPRS.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0100GPRS-FL.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0100GPRS-MTN.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0100GPRS-NORMAL.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0100GPRS.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0100WCDMA-Yoigo.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0151GPRS-DRM.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0151GPRS-FL.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0151GPRS-Telefonica.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0151GPRS-Telstra.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0151GPRS.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0151WCDMA.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-0159GPRS.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T8833_UAProfile.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y300C_1_20121018.xml' => [ 'Huawei', 'Ascend Y300', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/HUAWEI/PLTFH882KT/H882LV100R001C378B170SP02.rdf' => [ 'Huawei', 'Ascend Y301', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY301-A1-Normal.xml' => [ 'Huawei', 'Ascend Y301', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY301-A2-Normal.xml' => [ 'Huawei', 'Ascend Y301', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Beeline_Smart-v100WCDMA.xml' => [ 'Huawei', 'Ascend Y320', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY320-U01v100WCDMA.xml' => [ 'Huawei', 'Ascend Y320', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY320-U10v100WCDMA.xml' => [ 'Huawei', 'Ascend Y320', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY320-U151v100WCDMA.xml' => [ 'Huawei', 'Ascend Y320', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY320-U30v100WCDMA.xml' => [ 'Huawei', 'Ascend Y320', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY320-U351v100WCDMA.xml' => [ 'Huawei', 'Ascend Y320', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY321-U051v100WCDMA.xml' => [ 'Huawei', 'Ascend Y321', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y330-U01_UAProfile.xml' => [ 'Huawei', 'Ascend Y330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y330-U05_UAProfile.xml' => [ 'Huawei', 'Ascend Y330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y330-U07_UAProfile.xml' => [ 'Huawei', 'Ascend Y330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y330-U11_Normal_UAProfile.xml' => [ 'Huawei', 'Ascend Y330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y330-U15_UAProfile.xml' => [ 'Huawei', 'Ascend Y330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y330-C00_1_20140418.xml' => [ 'Huawei', 'Ascend Y330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y336-U02_UAProfile.xml' => [ 'Huawei', 'Ascend Y336', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y336-A1.xml' => [ 'Huawei', 'Ascend Y336', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY340-U081-Normal.xml' => [ 'Huawei', 'Ascend Y340', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y360-U03_UAProfile.xml' => [ 'Huawei', 'Ascend Y360', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y360-U23_UAProfile.xml' => [ 'Huawei', 'Ascend Y360', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y360-U31_UAProfile.xml' => [ 'Huawei', 'Ascend Y360', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y360-U61_UAProfile.xml' => [ 'Huawei', 'Ascend Y360', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y360-U72_UAProfile.xml' => [ 'Huawei', 'Ascend Y360', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y360-U82_UAProfile.xml' => [ 'Huawei', 'Ascend Y360', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y360-U93_UAProfile.xml' => [ 'Huawei', 'Ascend Y360', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y511-U00.xml' => [ 'Huawei', 'Ascend Y511', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y511-U10.xml' => [ 'Huawei', 'Ascend Y511', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y511-U251.xml' => [ 'Huawei', 'Ascend Y511', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y511-U30.xml' => [ 'Huawei', 'Ascend Y511', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y511_TD_UAProfile.xml' => [ 'Huawei', 'Ascend Y516', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y516_TD_UAProfile.xml' => [ 'Huawei', 'Ascend Y516', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y518_TD_UAProfile.xml' => [ 'Huawei', 'Ascend Y518', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY520-U03v100WCDMA.xml' => [ 'Huawei', 'Ascend Y520', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY520-U12v100WCDMA.xml' => [ 'Huawei', 'Ascend Y520', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY520-U22v100WCDMA.xml' => [ 'Huawei', 'Ascend Y520', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY520-U33v100WCDMA.xml' => [ 'Huawei', 'Ascend Y520', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y523_LTE_UAProfile.xml' => [ 'Huawei', 'Ascend Y523', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY530-U00-DT.xml' => [ 'Huawei', 'Ascend Y530', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY530-U00-Normal.xml' => [ 'Huawei', 'Ascend Y530', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY530-U051-Normal-DRM.xml' => [ 'Huawei', 'Ascend Y530', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY530-U051-Normal-MMS.xml' => [ 'Huawei', 'Ascend Y530', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY530-U051-Normal.xml' => [ 'Huawei', 'Ascend Y530', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY530-U051-Telecom-NZ.xml' => [ 'Huawei', 'Ascend Y530', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY530-U051-Telstra-MMS.xml' => [ 'Huawei', 'Ascend Y530', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y536-A1.xml' => [ 'Huawei', 'Ascend Y536', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY540-U01v100WCDMA.xml' => [ 'Huawei', 'Ascend Y540', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y541-U02_UAProfile.xml' => [ 'Huawei', 'Ascend Y541', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Y541-U02_UAProfile.xml' => [ 'Huawei', 'Ascend Y541', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y550-L01.xml' => [ 'Huawei', 'Ascend Y550', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y550-L01_EE.xml' => [ 'Huawei', 'Ascend Y550', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y550-L02-VHA-AU.xml' => [ 'Huawei', 'Ascend Y550', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y550-L03.xml' => [ 'Huawei', 'Ascend Y550', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y550-L03_PERU.xml' => [ 'Huawei', 'Ascend Y550', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y560-L01_DT_GR_UAProfile.xml' => [ 'Huawei', 'Ascend Y560', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y560-U02_UAProfile.xml' => [ 'Huawei', 'Ascend Y560', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y560_L02_Telstra_UAProfile.xml' => [ 'Huawei', 'Ascend Y560', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y560_L_UAProfile.xml' => [ 'Huawei', 'Ascend Y560', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y560_U_UAProfile.xml' => [ 'Huawei', 'Ascend Y560', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY600-U00_UAProfile.xml' => [ 'Huawei', 'Ascend Y600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY600-U151_UAProfile.xml' => [ 'Huawei', 'Ascend Y600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY600-U20_UAProfile.xml' => [ 'Huawei', 'Ascend Y600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY600-U351_UAProfile.xml' => [ 'Huawei', 'Ascend Y600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY600-U40_UAProfile.xml' => [ 'Huawei', 'Ascend Y600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY610-U00_UAProfile.xml' => [ 'Huawei', 'Ascend Y610', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y625_U13_UAProfile.xml' => [ 'Huawei', 'Ascend Y625', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y625_U21_UAProfile.xml' => [ 'Huawei', 'Ascend Y625', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y625_U32_UAProfile.xml' => [ 'Huawei', 'Ascend Y625', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y625_U43_UAProfile.xml' => [ 'Huawei', 'Ascend Y625', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y625_U51_UAProfile.xml' => [ 'Huawei', 'Ascend Y625', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L01_UAProfile.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L01_UAProfile_EUROPE.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L01_UAProfile_TME.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L02_UAProfile.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L02_UAProfile_DRM.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L02_UAProfile_DRM_MMS.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L03_UAProfile.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L03_UAProfile_DRM.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L03_UAProfile_DRM_FL.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L03_UAProfile_MMS_FL_DRM.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L21_UAProfile.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-L21_UAProfile_EUROPE.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Y635-TL00_UAProfile.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Y635-CL00_1_20140930.xml' => [ 'Huawei', 'Ascend Y635', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_B199.xml' => [ 'Huawei', 'B199', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_B199_1_20130806.xml' => [ 'Huawei', 'B199', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_B199_1_20131113.xml' => [ 'Huawei', 'B199', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8350v100GPRS.xml' => [ 'Huawei', 'Boulder', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8350v100WCDMA.xml' => [ 'Huawei', 'Boulder', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C199.xml' => [ 'Huawei', 'C199', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_C199s_UAProfile.xml' => [ 'Huawei', 'C199s', 'Android', DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiC5720CDMA1X.xml' => [ 'Huawei', 'C5720', null, DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HW/HW_HUAWEI_C5735_1_20110406.xml' => [ 'Huawei', 'C5735', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_C8500_1_20100127.xml' => [ 'Huawei', 'C8500', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8500S_1_20110511.xml' => [ 'Huawei', 'C8500', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8511_1_20110511.xml' => [ 'Huawei', 'C8511', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8512_20110817.xml' => [ 'Huawei', 'C8512', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8550_1_20111103.xml' => [ 'Huawei', 'C8550', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_C8600_1_20100127.xml' => [ 'Huawei', 'C8600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8650PLUS_1_20111025.xml' => [ 'Huawei', 'C8650', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8650_1_20110512.xml' => [ 'Huawei', 'C8650', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_c8650_2_20111116.xml' => [ 'Huawei', 'C8650', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8815_1_20130425.xml' => [ 'Huawei', 'C8815', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8817D.xml' => [ 'Huawei', 'C8817', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8817E.xml' => [ 'Huawei', 'C8817', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8817L.xml' => [ 'Huawei', 'C8817', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8818_1_20141217.xml' => [ 'Huawei', 'C8818', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiC8850v100CDMA.xml' => [ 'Huawei', 'C8850', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8687-Normal.xml' => [ 'Huawei', 'Chronos', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TIT-AL00_Oversea_UAProfile.xml' => [ 'Huawei', 'Enjoy 5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TIT-AL00_UAProfile .xml' => [ 'Huawei', 'Enjoy 5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TIT-CL10_UAProfile.xml' => [ 'Huawei', 'Enjoy 5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TIT-L01_UAProfile .xml' => [ 'Huawei', 'Enjoy 5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TIT-L01_UAProfile.xml' => [ 'Huawei', 'Enjoy 5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TIT-TL00_UAProfile.xml' => [ 'Huawei', 'Enjoy 5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TIT-U02_UAProfile .xml' => [ 'Huawei', 'Enjoy 5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/TIT-AL00C583_UAProfile.xml' => [ 'Huawei', 'Enjoy 5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TANGO_UAProfile.xml' => [ 'Huawei', 'Enjoy 5S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_NCE-AL00_UAProfile.xml' => [ 'Huawei', 'Enjoy 6', 'Windows', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_NCE-TL10_UAProfile.xml' => [ 'Huawei', 'Enjoy 6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_SLA-TL10_UAProfile.xml' => [ 'Huawei', 'Enjoy 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TRT-TL10A_UAProfile.xml' => [ 'Huawei', 'Enjoy 7 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_TRT-TL10_UAProfile.xml' => [ 'Huawei', 'Enjoy 7 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_CM990_1_20130108.xml' => [ 'Huawei', 'Evolución 3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiUM840v100GPRS.xml' => [ 'Huawei', 'Evolution', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiUM840v100WCDMA.xml' => [ 'Huawei', 'Evolution', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_CM980.xml' => [ 'Huawei', 'Evolution II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8665GPRS-ATT.xml' => [ 'Huawei', 'Fusion 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8665WCDMA-ATT.xml' => [ 'Huawei', 'Fusion 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHC-U01_UAProfile.xml' => [ 'Huawei', 'G Play Mini', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHC-U23_UAProfile.xml' => [ 'Huawei', 'G Play Mini', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG6L11.xml' => [ 'Huawei', 'G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G6_C00.xml' => [ 'Huawei', 'G6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/G6609UAprofileV1.1.xml' => [ 'Huawei', 'G6609', 'MTK', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/G7300UAprofileV1.1.xml' => [ 'Huawei', 'G7300', 'MTK', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_G750-T00_UAProfile.xml' => [ 'Huawei', 'G750', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/G7500_UAProfile.xml' => [ 'Huawei', 'G7500', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/huawei/h868c/h868c.xml' => [ 'Huawei', 'Glory', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KII-L03_UAProfile.xml' => [ 'Huawei', 'GR5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KII-L05_UAProfile_1mb.xml' => [ 'Huawei', 'GR5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KII-L21_UAProfile.xml' => [ 'Huawei', 'GR5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KII-L22_UAProfile.xml' => [ 'Huawei', 'GR5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KII-L23_DRM_UAProfile.xml' => [ 'Huawei', 'GR5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KII-L23_UAProfile.xml' => [ 'Huawei', 'GR5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KII-L23_UAProfile_FL_Only.xml' => [ 'Huawei', 'GR5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KII-L23_UA_DRM_FL_Profile.xml' => [ 'Huawei', 'GR5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_H870C.xml' => [ 'Huawei', 'H870C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860-51GPRS-Normal.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860-51WCDMA-Normal.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860-92GPRS-EAccess.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860-92WCDMA-EAccess.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860GPRS-NORMAL-ICS.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860GPRS-NORMAL.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860WCDMA-NORMAL-ICS.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860WCDMA-NORMAL.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8860E_1_20111103.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8860_1_20110704.xml' => [ 'Huawei', 'Honor', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9508_U06_UAProfile.xml' => [ 'Huawei', 'Honor 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U9508_UAProfile.xml' => [ 'Huawei', 'Honor 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_HN3_U01_UAProfile.xml' => [ 'Huawei', 'Honor 3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Hol-U19_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Hol_T00_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Hol_U10_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_H30-L01M_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_H30-L01_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_H30-L02_Global_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_H30-L02_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H30-T00_Global_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H30-T00_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H30-T10_Global_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H30-T10_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H30-U00_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H30-U10_Global_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H30-U10_UAProfile.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HONOR_H30-C00_20140420.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_H30-C00_20140420.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Hol-T00.xml' => [ 'Huawei', 'Honor 3C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_SCL-U31_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-AL00_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-CL00_1_20150420.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L01_DT_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L01_Europe_DRM-UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L01_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L01_UAProfile_OrangeDive70.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L02_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L03_DRMFL_TIGO_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L03_DRMFL_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L03_UAProfile-DRM.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L03_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L03_UAProfile_DRM_FL_Only.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L04_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L04_UAProfile_1MB.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L21_Europe_DRM-UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-L21_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-TL00H_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-TL00_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-U23_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCL-U31_UAProfile.xml' => [ 'Huawei', 'Honor 4A', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHM-TL00H_UAProfile.xml' => [ 'Huawei', 'Honor 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHM-U01_UAProfile.xml' => [ 'Huawei', 'Honor 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHM-UL00_UAProfile.xml' => [ 'Huawei', 'Honor 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_CHM-CL00_1_20141217.xml' => [ 'Huawei', 'Honor 4C', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/huawei/wsh892l/wsh892l.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_CHE-TL00H_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_CHE-TL00_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che1-CL10_6_0_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che1-CL20_6_0_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che1-L04_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-L11_Russia_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-L11_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-L12_5.1_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-L12_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-L23_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-TL00H_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-TL00M_5.1_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-TL00M_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-TL00M_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-TL00_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-TL00_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-UL00_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_Che2-UL00_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHE-TL00H_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHE-TL00_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Che1-CL10_5.1_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Che1-CL20_5.1_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Che2-L23_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_Che2-UL00_UAProfile.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Che1-CL10_1_20140801.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_Che1-CL20.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOChe1-CL20.xml' => [ 'Huawei', 'Honor 4X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_UAProfile.xml' => [ 'Huawei', 'Honor 5C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-AL10_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-AL10_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-CL00_1_20150425.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-CL00_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-L21_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-L21_UAProfile_DRM.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-L22_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-TL00H_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-TL00H_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-TL00_6.0_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-TL00_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIW-UL00_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_KIWL24_UAProfile.xml' => [ 'Huawei', 'Honor 5X', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H60_J1_UAProfile.xml' => [ 'Huawei', 'Honor 6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H60_L01_UAProfile.xml' => [ 'Huawei', 'Honor 6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H60_L02_UAProfile.xml' => [ 'Huawei', 'Honor 6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H60_L03_UAProfile.xml' => [ 'Huawei', 'Honor 6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H60_L04_UAProfile.xml' => [ 'Huawei', 'Honor 6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H60_L11_UAProfile.xml' => [ 'Huawei', 'Honor 6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_H60_L12_UAProfile.xml' => [ 'Huawei', 'Honor 6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_E100-TL10_UAProfile.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_E100-TL20_UAProfile.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_E100-UL00_UAProfile.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_E100_TL00M_UAProfile.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PE-TL10_UAProfile.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PE-TL20_UAProfile.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PE-UL00_UAProfile.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PE_TL00M_UAProfile.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_E100-CL00_1_20141103.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_PE-CL00_1_20141225.xml' => [ 'Huawei', 'Honor 6 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PLK-AL10-Uaprofile.xml' => [ 'Huawei', 'Honor 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PLK-L01-Uaprofile.xml' => [ 'Huawei', 'Honor 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PLK-L01_UAProfile.xml' => [ 'Huawei', 'Honor 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PLK-TL00-Uaprofile.xml' => [ 'Huawei', 'Honor 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PLK-TL01H-Uaprofile.xml' => [ 'Huawei', 'Honor 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_PLK-UL00-Uaprofile.xml' => [ 'Huawei', 'Honor 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_C9746_1_20150319.xml' => [ 'Huawei', 'Honor 7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ATH-AL00_Uaprofile.xml' => [ 'Huawei', 'Honor 7i', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ATH-CL00_Uaprofile.xml' => [ 'Huawei', 'Honor 7i', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ATH-TL00H_Uaprofile.xml' => [ 'Huawei', 'Honor 7i', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ATH-TL00_Uaprofile.xml' => [ 'Huawei', 'Honor 7i', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ATH-UL00_Uaprofile.xml' => [ 'Huawei', 'Honor 7i', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_CHM-TL00H_6.0_UAProfile.xml' => [ 'Huawei', 'Honor Play 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_CHM-TL00_5.1_UAProfile.xml' => [ 'Huawei', 'Honor Play 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_CHM-TL00_6.0_UAProfile.xml' => [ 'Huawei', 'Honor Play 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_CHM-U01_UAProfile.xml' => [ 'Huawei', 'Honor Play 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HONOR_CHM-UL00_6.0_UAProfile.xml' => [ 'Huawei', 'Honor Play 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHM-TL00_UAProfile.xml' => [ 'Huawei', 'Honor Play 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CHM-U01_Russia_UAProfile.xml' => [ 'Huawei', 'Honor Play 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_CHM-CL00_6_0_UAProfile.xml' => [ 'Huawei', 'Honor Play 4C', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ATH-UL01_DRM_Uaprofile.xml' => [ 'Huawei', 'Honor ShotX', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ATH-UL01_Uaprofile.xml' => [ 'Huawei', 'Honor ShotX', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ATH-UL06_Uaprofile.xml' => [ 'Huawei', 'Honor ShotX', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_HDN-L09_UAProfile.xml' => [ 'Huawei', 'Honor WaterPlay', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8950D_1_20120704.xml' => [ 'Huawei', 'Honor+', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8150v100WCDMA.xml' => [ 'Huawei', 'IDEOS', 'Android', DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/Huawei-S7.xml' => [ 'Huawei', 'IDEOS S7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiS7v100EVDONormal.xml' => [ 'Huawei', 'IDEOS S7', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiS7v100GPRSNormal.xml' => [ 'Huawei', 'IDEOS S7', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiS7v100WCDMA.xml' => [ 'Huawei', 'IDEOS S7', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiS7v100WCDMANormal.xml' => [ 'Huawei', 'IDEOS S7', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiS7Slimv100WCDMA.xml' => [ 'Huawei', 'IDEOS S7 Slim', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8180GPRS.xml' => [ 'Huawei', 'IDEOS X1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8180WCDMA.xml' => [ 'Huawei', 'IDEOS X1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8500v100GPRSNormal.xml' => [ 'Huawei', 'IDEOS X2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8500v100WCDMANormal.xml' => [ 'Huawei', 'IDEOS X2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1GPRS-2degrees.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1GPRS-o2-Tchibo.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1GPRS-o2.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1GPRS-VDF_HU.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1GPRS-VDF_PT.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1GPRS-Wind_GR.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1WCDMA-2degrees.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1WCDMA-o2-Tchibo.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1WCDMA-o2.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1WCDMA-TAM_ID.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1WCDMA-VDF_HU.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-1WCDMA-VDF_PT.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-5WCDMA-Iusacell_MX.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-5WCDMA-Iusacell_MX236.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510-92WCDMA-EAccess.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510GPRS-NORMAL235.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510GPRS-NORMAL236.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510WCDMA-NORMAL.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8510WCDMA-NORMAL235.xml' => [ 'Huawei', 'IDEOS X3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800-51v100GPRS.xml' => [ 'Huawei', 'IDEOS X5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800-51v100WCDMA-ATT.xml' => [ 'Huawei', 'IDEOS X5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800-51v100WCDMA.xml' => [ 'Huawei', 'IDEOS X5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800iGPRS-NORMAL.xml' => [ 'Huawei', 'IDEOS X5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800v100C2WCDMA.xml' => [ 'Huawei', 'IDEOS X5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800v100GPRS.xml' => [ 'Huawei', 'IDEOS X5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800v100WCDMA.xml' => [ 'Huawei', 'IDEOS X5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_C8800_1_20110222.xml' => [ 'Huawei', 'IDEOS X5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800proGPRS-NORMAL.xml' => [ 'Huawei', 'IDEOS X5 Pro', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800PROiGPRS-NORMAL.xml' => [ 'Huawei', 'IDEOS X5 Pro', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800prov100GPRS.xml' => [ 'Huawei', 'IDEOS X5 Pro', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800prov100WCDMA.xml' => [ 'Huawei', 'IDEOS X5 Pro', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8800proWCDMA-NORMAL.xml' => [ 'Huawei', 'IDEOS X5 Pro', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiH867GGPRS-Normal.xml' => [ 'Huawei', 'Inspira', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Huawei-M328.xml' => [ 'Huawei', 'M328', null, DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/HUAWEI-M570.xml' => [ 'Huawei', 'M570', null, DeviceType::MOBILE ], + 'http://mms.mycricket.com/HUAWEI-M615.xml' => [ 'Huawei', 'M615', null, DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Huawei-M635.xml' => [ 'Huawei', 'M635', null, DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Huawei-M735.xml' => [ 'Huawei', 'M735', null, DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Huawei-M835.xml' => [ 'Huawei', 'M835', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_M835_1_20110720.xml' => [ 'Huawei', 'M835', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Huawei-M860.xml' => [ 'Huawei', 'M860', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Huawei-M860F.xml' => [ 'Huawei', 'M860', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_H871G.xml' => [ 'Huawei', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CRR_L09_UAProfile.xml' => [ 'Huawei', 'Mate 8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_M200_L09_UAProfile.xml' => [ 'Huawei', 'Mate 8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_NXT-AL10_UAProfile.xml' => [ 'Huawei', 'Mate 8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_NXT-TL00_UAProfile.xml' => [ 'Huawei', 'Mate 8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_NXT-UL00_UAProfile.xml' => [ 'Huawei', 'Mate 8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_NXT-CL00_1_20151102.xml' => [ 'Huawei', 'Mate 8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CRR-UL00_UAProfile.xml' => [ 'Huawei', 'Mate S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CRR-UL20_UAProfile.xml' => [ 'Huawei', 'Mate S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CRR_L09_UAProfile_3G.xml' => [ 'Huawei', 'Mate S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_CRR-CL00_1_20150310.xml' => [ 'Huawei', 'Mate S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_CRR-CL20_1_20150310.xml' => [ 'Huawei', 'Mate S', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPadEVDODataOnly.xml' => [ 'Huawei', 'MediaPad', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPadWCDMADataOnly.xml' => [ 'Huawei', 'MediaPad', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPadWCDMA_ICS.xml' => [ 'Huawei', 'MediaPad', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPadWIFIOnly.xml' => [ 'Huawei', 'MediaPad', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPadWIFIOnly_ICS.xml' => [ 'Huawei', 'MediaPad', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_201u.xml' => [ 'Huawei', 'MediaPad 10 Link', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_201wa.xml' => [ 'Huawei', 'MediaPad 10 Link', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S10-231L.xml' => [ 'Huawei', 'MediaPad 10 Link', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S10-231u.xml' => [ 'Huawei', 'MediaPad 10 Link', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S10-231w.xml' => [ 'Huawei', 'MediaPad 10 Link', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/MediaPad7LiteWCDMA_ICS.xml' => [ 'Huawei', 'MediaPad 7 Lite', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/MediaPad7LiteWIFIOnly_ICS.xml' => [ 'Huawei', 'MediaPad 7 Lite', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad71111WCDMA.xml' => [ 'Huawei', 'MediaPad 7 Vivid', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad7611WCDMA.xml' => [ 'Huawei', 'MediaPad 7 Vivid', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad7601WCDMA.xml' => [ 'Huawei', 'MediaPad 7 Vogue', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad7601WIFIOnly.xml' => [ 'Huawei', 'MediaPad 7 Vogue', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S7-601c.xml' => [ 'Huawei', 'MediaPad 7 Vogue', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad7701WIFIOnly.xml' => [ 'Huawei', 'MediaPad 7 Youth', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad770XWCDMA.xml' => [ 'Huawei', 'MediaPad 7 Youth', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad721XWCDMA.xml' => [ 'Huawei', 'MediaPad 7 Youth 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S7-721g.xml' => [ 'Huawei', 'MediaPad 7 Youth 2', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S7-721w.xml' => [ 'Huawei', 'MediaPad 7 Youth 2', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S7-72Xu.xml' => [ 'Huawei', 'MediaPad 7 Youth 2', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S8-301L.xml' => [ 'Huawei', 'MediaPad 8 Vogue', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S8-301u.xml' => [ 'Huawei', 'MediaPad M1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S8-301u_4_4.xml' => [ 'Huawei', 'MediaPad M1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S8-301w.xml' => [ 'Huawei', 'MediaPad M1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S8-301L_4_4.xml' => [ 'Huawei', 'MediaPad M1 403HW', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/LST.xml' => [ 'Huawei', 'MediaPad M2', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HUAWEI_BAH-AL00_UAProfile.xml' => [ 'Huawei', 'MediaPad M3 Lite', 'Windows', ], + 'http://wap1.huawei.com/uaprof/HUAWEI_BAH-W09_UAProfile.xml' => [ 'Huawei', 'MediaPad M3 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CPN-AL00_UAProfile.xml' => [ 'Huawei', 'MediaPad M3 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CPN-W09_UAProfile.xml' => [ 'Huawei', 'MediaPad M3 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/7D-501w.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad701XWCDMA.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_S8-701w.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediapad_S8-70Xu.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediapad_T1-701g.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediapad_T1-701u.xml' => [ 'Huawei', 'Mediapad T1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiMediapad_T1-701ua.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediapad_T1-701w.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediapad_T1-702u.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_T1-821L.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_T1-A21L.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/T1-701u.xml' => [ 'Huawei', 'MediaPad T1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_PLE-703L.xml' => [ 'Huawei', 'MediaPad T2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_T2-10.xml' => [ 'Huawei', 'MediaPad T2', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HUAWEI_KOB-L09_UAProfile.xml' => [ 'Huawei', 'MediaPad T3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_KOB-W09_UAProfile.xml' => [ 'Huawei', 'MediaPad T3', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/7D-501L.xml' => [ 'Huawei', 'MediaPad X1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/7D-501L_4_4.xml' => [ 'Huawei', 'MediaPad X1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/7D-501u.xml' => [ 'Huawei', 'MediaPad X1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/7D-501u_4_4.xml' => [ 'Huawei', 'MediaPad X1', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_7D-501L.xml' => [ 'Huawei', 'MediaPad X1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_7D-501u.xml' => [ 'Huawei', 'MediaPad X1', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/X1S-703L.xml' => [ 'Huawei', 'MediaPad X1 S', 'Android', DeviceType::MOBILE ], + 'http://mms.openmobilepr.com/uaprof/HuaweiM886.xml' => [ 'Huawei', 'Mercury', 'Android', DeviceType::MOBILE ], + 'http://provantage.cleartalk.csky.us/ua/huawei_M886.xml' => [ 'Huawei', 'Mercury', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiM886-Cricket.xml' => [ 'Huawei', 'Mercury', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CAZ-TL10_UAProfile.xml' => [ 'Huawei', 'Nova', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CAZ-TL20_UAProfile.xml' => [ 'Huawei', 'Nova', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_BAC-TL00_UAProfile.xml' => [ 'Huawei', 'Nova 2 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_VTR-TL00_UAProfile.xml' => [ 'Huawei', 'P10', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_WAS-TL10_UAProfile.xml' => [ 'Huawei', 'P10 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_VKY-TL00_UAProfile.xml' => [ 'Huawei', 'P10 Plus', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_GRA-CL10_1_20150105.xml' => [ 'Huawei', 'P8', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-L21_5.1_UAProfile.xml' => [ 'Huawei', 'P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_ALE-UL00_6.0_UAProfile.xml' => [ 'Huawei', 'P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_ALE-CL00_6_0_UAProfile.xml' => [ 'Huawei', 'P8 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_A168-AL10_UAProfile.xml' => [ 'Huawei', 'P9', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_EVA-AL00_UAProfile.xml' => [ 'Huawei', 'P9', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_EVA-AL10_UAProfile.xml' => [ 'Huawei', 'P9', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_EVA-DL00_UAProfile.xml' => [ 'Huawei', 'P9', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_EVA-TL00_UAProfile.xml' => [ 'Huawei', 'P9', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_EVA-CL00_3_20160226.xml' => [ 'Huawei', 'P9', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_VNS-TL00_UAProfile.xml' => [ 'Huawei', 'P9 Lite', 'Windows', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_VNS_AL00_UAProfile.xml' => [ 'Huawei', 'P9 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_VNS_DL00_UAProfile.xml' => [ 'Huawei', 'P9 Lite', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_VIE-AL10_UAProfile.xml' => [ 'Huawei', 'P9 Plus', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Huawei-M931.xml' => [ 'Huawei', 'Premia 4G', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_HUAWEI_H891L.xml' => [ 'Huawei', 'Pronto', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad_FDR-A04L.xml' => [ 'Huawei', 'Qua tab 02 HWT31', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HW/HW_HUAWEI_S8520_1_20110819.xml' => [ 'Huawei', 'S8520', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/HW/HW_HUAWEI_S8600_1_20110825.xml' => [ 'Huawei', 'S8600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650GPRS-Normal.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650GPRS-Normal236.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650GPRS-UNICOM.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650GPRS-Vodafone-It.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650GPRS-Yoigo.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Normal.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Normal236.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Taiwan.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Tele2-HR.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Tele2-LT.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Tele2-SE.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-UNICOM.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Vodafone-It.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Yoigo.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8660GPRS-Normal.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8660WCDMA-Normal.xml' => [ 'Huawei', 'Sonic', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8661GPRS.xml' => [ 'Huawei', 'Sonic+', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8661WCDMA.xml' => [ 'Huawei', 'Sonic+', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.huawei.com/uaprof/HUAWEI-T8300-1.0.xml' => [ 'Huawei', 'T8300', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.huawei.com/uaprof/HUAWEI-T8600-1.0.xml' => [ 'Huawei', 'T8600', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_T8950N_UAProfile.xml' => [ 'Huawei', 'T8950N', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8651WCDMA-VTR.xml' => [ 'Huawei', 'Talon', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8651WCDMA-WIND.xml' => [ 'Huawei', 'Talon', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8820GPRS-NII.xml' => [ 'Huawei', 'Titan', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8820WCDMA-NII.xml' => [ 'Huawei', 'Titan', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU120v100.xml' => [ 'Huawei', 'U120', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U2800A_UAProfile.xml' => [ 'Huawei', 'U2800', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U2801_UAProfile.xml' => [ 'Huawei', 'U2801', 'Brew', DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiU3100v100UNIWCDMA.xml' => [ 'Huawei', 'U3100', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiU3205v100WCDMA.xml' => [ 'Huawei', 'U3205', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiU3300v100GPRS.xml' => [ 'Huawei', 'U3300', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U3900_ATTNormal.xml' => [ 'Huawei', 'U3900', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U5120_UAProfile.xml' => [ 'Huawei', 'U5120', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U5200_UAProfile.xml' => [ 'Huawei', 'U5200', 'Brew', DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiU526v100.xml' => [ 'Huawei', 'U526', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiU528v100.xml' => [ 'Huawei', 'U528', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U5300_UAProfile.xml' => [ 'Huawei', 'U5300', 'Brew', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U5310_UAProfile.xml' => [ 'Huawei', 'U5310', 'Brew', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU535v100GPRS.xml' => [ 'Huawei', 'U535', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U6150_UAProfile.xml' => [ 'Huawei', 'U6150', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_U6150_WIND_UAProfile.xml' => [ 'Huawei', 'U6150', 'Brew', DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiU626v100.xml' => [ 'Huawei', 'U626', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV715v100WCDMA.xml' => [ 'Huawei', 'U715', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV716v100WCDMA.xml' => [ 'Huawei', 'U716', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV720v100WCDMA.xml' => [ 'Huawei', 'U720', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV725v100GPRS.xml' => [ 'Huawei', 'U725', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV725v100WCDMA.xml' => [ 'Huawei', 'U725', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiU7510v100WCDMA.xml' => [ 'Huawei', 'U7510', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV810v100GPRS.xml' => [ 'Huawei', 'U810', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV810v100WCDMA.xml' => [ 'Huawei', 'U810', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8100-9v100WCDMA.xml' => [ 'Huawei', 'U8100', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8100v100GPRSNormal.xml' => [ 'Huawei', 'U8100', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8100v100WCDMANormal.xml' => [ 'Huawei', 'U8100', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8109GPRS.xml' => [ 'Huawei', 'U8109', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8109v100WCDMA.xml' => [ 'Huawei', 'U8109', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8110v100GPRS.xml' => [ 'Huawei', 'U8110', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8110v100GPRSNormal.xml' => [ 'Huawei', 'U8110', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8110v100WCDMA.xml' => [ 'Huawei', 'U8110', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8110v100WCDMANormal.xml' => [ 'Huawei', 'U8110', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8160WCDMA-MTS.xml' => [ 'Huawei', 'U8160', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8230v100GPRS.xml' => [ 'Huawei', 'U8230', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8230v100WCDMAEclair.xml' => [ 'Huawei', 'U8230', 'Android', DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV830v100WCDMA.xml' => [ 'Huawei', 'U830', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8300v100GPRSNormal.xml' => [ 'Huawei', 'U8300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8300v100WCDMANormal.xml' => [ 'Huawei', 'U8300', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8652-51WCDMA-Normal236.xml' => [ 'Huawei', 'U8652', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8652WCDMA-Normal.xml' => [ 'Huawei', 'U8652', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8667GPRS-NII.xml' => [ 'Huawei', 'U8667', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8667WCDMA-NII.xml' => [ 'Huawei', 'U8667', 'Android', DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiU9130v100GPRS.xml' => [ 'Huawei', 'U9130', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Huawei/Y538-2012071301/Y538C237B128.rdf' => [ 'Huawei', 'Union', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Huawei/Y538-BOOST/Y538C237B128.rdf' => [ 'Huawei', 'Union', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Huawei/Y538-BOOST/Y538C237B138.rdf' => [ 'Huawei', 'Union', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Huawei/Y538-VIRGIN/Y538C237B150.rdf' => [ 'Huawei', 'Union', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8850v100WCDMA.xml' => [ 'Huawei', 'Vision', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_LUNA_UAProfile.xml' => [ 'Huawei', 'Y3 II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/LUA-U03_UAProfile.xml' => [ 'Huawei', 'Y3 II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/LUA-U22_UAProfile.xml' => [ 'Huawei', 'Y3 II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/LUA-U23_UAProfile.xml' => [ 'Huawei', 'Y3 II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CANCUN_UAProfile.xml,http://wap1.huawei.com/uaprof/HUAWEI_CUN_L_UAProfile.xml'=> [ 'Huawei', 'Y5 II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CUN_L_UAProfile.xml' => [ 'Huawei', 'Y5 II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CUN_U_UAProfile.xml' => [ 'Huawei', 'Y5 II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HW_SCC-U21_UAProfile.xml' => [ 'Huawei', 'Y6', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_CAM_TL00H_UAProfile.xml' => [ 'Huawei', 'Y6 II', 'Android', DeviceType::MOBILE ], + 'http://imatemms.imate.com/gen/UAProf_8502_v1.xml' => [ 'i-mate', '8502', null, DeviceType::MOBILE ], + 'http://imatemms.imate.com/gen/UAProf_9502_v1.xml' => [ 'i-mate', '9502', null, DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/i-mate K-JAM PPC-1.3.xml' => [ 'i-mate', 'K-JAM', 'Windows Mobile', DeviceType::MOBILE ], + 'http://imatemms.imate.com/gen/UAProf_Pebble_v1.xml' => [ 'i-mate', 'Pebble', null, DeviceType::MOBILE ], + 'http://asmobile.ehosting.com.tw/uaprof/i-mobile607.xml' => [ 'i-mobile', '607', null, DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/i-mobile/i-STYLE2.9.xml' => [ 'i-Mobile', 'i-Style 2.9', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/i-mobile/i-STYLE7.6.xml' => [ 'i-Mobile', 'i-Style 7.6', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/i-mobile IQ X.xml' => [ 'i-Mobile', 'iQ X', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/i-mobile IQ X2.xml' => [ 'i-Mobile', 'iQ X2', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/i-mobile IQ XA.xml' => [ 'i-mobile', 'iQ XA', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/BS/Brightstar_Avvio_760.xml' => [ 'Ilium', 'Avvio 760', 'Android', DeviceType::MOBILE ], + 'http://xmlsite3.webs.com/Brightstar_Avvio_760.xml' => [ 'Ilium', 'Avvio 760', 'Android', DeviceType::MOBILE ], + 'http://ua.tinno.com/profile/latinamerica/brightstar/Avvio765_UAProf.xml' => [ 'Ilium', 'AVVIO 765', 'Android', DeviceType::MOBILE ], + 'http://ua.tinno.com/profile/latinamerica/brightstar/Avvio785_UAProf.xml' => [ 'Ilium', 'AVVIO 785', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Brightstar/Avvio_790.xml' => [ 'Ilium', 'Avvio 790', 'Android', DeviceType::MOBILE ], + 'http://guardsys.museui.com/Avvio793_WAP_BROWSER.xml' => [ 'Ilium', 'AVVIO 793', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/N26/IN260.xml' => [ 'InFocus', 'IN260', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/IVM/IN330.xml' => [ 'InFocus', 'IN330', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/MG2/IN610.xml' => [ 'InFocus', 'IN610', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/VKY/IN810.xml' => [ 'InFocus', 'IN810', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/VKY/IN810.xml' => [ 'InFocus', 'IN810', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/LSO/M2.xml' => [ 'InFocus', 'M2', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/LSO/M2.xml' => [ 'InFocus', 'M2', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/H1M/M210.xml' => [ 'InFocus', 'M210', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/H1M/M210.xml' => [ 'InFocus', 'M210', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/H1W/M310.xml' => [ 'InFocus', 'M310', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/D70/M320m.xml' => [ 'InFocus', 'M320', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/D70/M320u.xml' => [ 'InFocus', 'M320', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/D70/M320u.xml' => [ 'InFocus', 'M320', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/TID/InFocus M510t.xml' => [ 'InFocus', 'M510', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/TID/PZ_InFocus_M510t.xml' => [ 'InFocus', 'M510', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/TID_CHT/M510.xml' => [ 'InFocus', 'M510', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/TID_TWN/InFocus M511.xml' => [ 'InFocus', 'M511', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/MC2_CN/M512.xml' => [ 'InFocus', 'M512', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/VNA/M810u.xml' => [ 'InFocus', 'M810', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/VNA/PZ_M810t.xml' => [ 'Infocus', 'M810', 'Android', DeviceType::MOBILE ], + 'http://wap.innostream.com/uaprof/INNO30.xml' => [ 'Innostream', 'INNO 30', null, DeviceType::MOBILE ], + 'http://wap.innostream.com/uaprof/INNO55.xml' => [ 'Innostream', 'INNO 55', null, DeviceType::MOBILE ], + 'http://wap.innostream.com/uaprof/INNO89.xml' => [ 'Innostream', 'INNO 89', null, DeviceType::MOBILE ], + 'http://wap.innostream.com/uaprof/INNO90.xml' => [ 'Innostream', 'INNO 90', null, DeviceType::MOBILE ], + 'http://wap.innostream.com/uaprof/INNO98.xml' => [ 'Innostream', 'INNO 98', null, DeviceType::MOBILE ], + 'http://wap.innostream.com/uaprof/INNOA10.xml' => [ 'Innostream', 'INNO A10', null, DeviceType::MOBILE ], + 'http://wap.innostream.com/uaprof/INNOA10_W2.xml' => [ 'Innostream', 'INNO A10', null, DeviceType::MOBILE ], + 'http://www.inqmobile.com/ua/inq1.xml' => [ 'INQ', 'INQ1', null, DeviceType::MOBILE ], + 'http://50.18.182.85/profile/AZ210_UA_Profile.xml' => [ 'Intel', 'AZ210', 'Android', DeviceType::MOBILE ], + 'http://50.18.182.85/profile/AZ210A_UA_Profile.xml' => [ 'Intel', 'AZ210A', 'Android', DeviceType::MOBILE ], + 'http://downloadmirror.intel.com/20932/eng/AZ210A_UA_Profile.xml' => [ 'Intel', 'AZ210A', 'Android', DeviceType::MOBILE ], + 'http://downloadmirror.intel.com/20932/eng/AZ210B_UA_Profile.xml' => [ 'Intel', 'AZ210B', 'Android', DeviceType::MOBILE ], + 'http://www.ibbprof.com/uaprof/AZ210B_UA_Profile.xml' => [ 'Intel', 'AZ210B', 'Android', DeviceType::MOBILE ], + 'http://50.18.182.85/profile/AZ510_UA_Profile.xml' => [ 'Intel', 'AZ510', 'Android', DeviceType::MOBILE ], + 'http://downloadmirror.intel.com/20932/eng/AZ510_UA_Profile.xml' => [ 'Intel', 'AZ510', 'Android', DeviceType::MOBILE ], + 'http://www.ibbprof.com/uaprof/AZ510_UA_Profile.xml' => [ 'Intel', 'AZ510', 'Android', DeviceType::MOBILE ], + 'http://downloadmirror.intel.com/20932/eng/BT210_UA_Profile.xml' => [ 'Intel', 'BT210', 'Android', DeviceType::MOBILE ], + 'http://downloadmirror.intel.com/20932/eng/BT230_UA_Profile.xml' => [ 'Intel', 'BT230', 'Android', DeviceType::MOBILE ], + 'http://downloadmirror.intel.com/20932/eng/BT510_UA_Profile.xml' => [ 'Intel', 'BT510', 'Android', DeviceType::MOBILE ], + 'http://intextechnologies.com/wap/intex_Cloud-X3.xml' => [ 'Intex', 'Cloud X3', 'Android', DeviceType::MOBILE ], + 'http://www.intextechnologies.com/wap/intex_Cloud-Y1.xml' => [ 'Intex', 'Cloud Y1', 'Android', DeviceType::MOBILE ], + 'http://intextechnologies.com/wap/intex_Cloud-y2.xml' => [ 'Intex', 'Cloud Y2', 'Android', DeviceType::MOBILE ], + 'http://mobile.itelcospa.it/useragent/ITELCO-IT2500.xml' => [ 'Itelco', 'IT2500', null, DeviceType::MOBILE ], + 'http://uaprofs.scm.ixi.com:8080/UAProfs/ct-25m-scm-q0108.xml' => [ 'IXI', 'CT 25m', null, DeviceType::MOBILE ], + 'http://www.nyxmobile.com/UAProfile/zeuzhd/NYX_ZEUZ_HD.xml' => [ 'Jiayu', 'G4C', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Jiayu_G4S.xml' => [ 'Jiayu', 'G4S', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOJY-G5.xml' => [ 'Jiayu', 'G5', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/TY/TY_E619+_1_20121123.xml' => [ 'K-Touch', 'E619', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/TY/TY_K-Touch_E619+_1_20121203.xml' => [ 'K-Touch', 'E619', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ktouch-e620.xml' => [ 'K-Touch', 'E620', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ktouch-e650.xml' => [ 'K-Touch', 'E650', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ktouch-e780.xml' => [ 'K-Touch', 'E780', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ktouch-e815.xml' => [ 'K-Touch', 'E815', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S898t+_KK_UAprofile.xml' => [ 'K-Touch', 'Niburu Mars One H1', 'Android', DeviceType::MOBILE ], + 'http://www.ontim.com.cn/ua/K-Touch_T580_uaprofile.xml' => [ 'K-Touch', 'T580', 'Android', DeviceType::MOBILE ], + 'http://114.251.81.153/t660/K-Touch_T660_profile_3G.xml' => [ 'K-Touch', 'T660', 'Android', DeviceType::MOBILE ], + 'http://114.251.81.153/UAProfile/U81t/K-Touch_U81t_UAProfile.xml' => [ 'K-Touch', 'U81t', 'Android', DeviceType::MOBILE ], + 'http://218.206.177.209:8080/waptest/browser15/TC3.html' => [ 'KATA', 'i3s', 'Android', DeviceType::MOBILE ], + 'http://tsprdev.com/kazam/ua/spain/movistar/KAZAM_Trooper_450_UAprofile.xml' => [ 'KAZAM', 'Trooper 450', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4505_Quad.xml' => [ 'KAZAM', 'Trooper 451', 'Android', DeviceType::MOBILE ], + 'http://asmobile.ehosting.com.tw/uaprof/KingcomInjoyMS02.xml' => [ 'Kingcom', 'Injoy MS02', null, DeviceType::MOBILE ], + 'http://guardsys.museui.com/KIOTO793_WAP_BROWSER.xml' => [ 'KIOTO', '793', 'Android', DeviceType::MOBILE ], + 'http://www.mobilesoft.com.cn/UAProfile/CMSMMS2003.xml' => [ 'Konka', 'C908', null, DeviceType::MOBILE ], + 'http://www.konkamobile.com/profile/konka_k3.xml' => [ 'Konka', 'K3', 'Android', DeviceType::MOBILE ], + 'http://www.konkamobile.com/uploadfile/KONKA_V926_UAProfile.xml' => [ 'Konka', 'V926', 'Android', DeviceType::MOBILE ], + 'http://www.kkcool.com/hw/KONKA_V936.xml' => [ 'Konka', 'V936', 'Android', DeviceType::MOBILE ], + 'http://www.kkcool.com/hw/KONKA_V980.xml' => [ 'Konka', 'V980', 'Android', DeviceType::MOBILE ], + 'http://www.konkamobile.com/Profile/KONKA_V985.xml' => [ 'Konka', 'V985', 'Android', DeviceType::MOBILE ], + 'http://www.konkamobile.com/profile/KONKA_V987.xml' => [ 'Konka', 'V987', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/KPN_Smart_300.xml' => [ 'KPN', 'Smart 300', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/KPN_Smart_400.xml' => [ 'KPN', 'Smart 400', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Kyivstar Spark.xml' => [ 'Kyivstar', 'Spark', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/S2151-BST/1.001BT.rdf' => [ 'Kyocera', 'Coast S2151', 'Brew MP', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/S2151-PLB/1.001VM.rdf' => [ 'Kyocera', 'Coast S2151', 'Brew', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/Kyocera/vmk325/VMU_Thunder_UAProf.xml' => [ 'Kyocera', 'Cyclops', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/E4233/1400SP.rdf' => [ 'Kyocera', 'E4233', 'Brew MP', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/E4277/1308SP.rdf' => [ 'Kyocera', 'E4277', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/M9300/1100SP.rdf' => [ 'Kyocera', 'Echo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/M9300/2002SP.rdf' => [ 'Kyocera', 'Echo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/M9300/2006SP.rdf' => [ 'Kyocera', 'Echo', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/JC/JC_KSP8000_3_20111228.xml' => [ 'Kyocera', 'Echo', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/JC/JC_KSP8000_3_20120209.xml' => [ 'Kyocera', 'Echo', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/JC/JC_KSP8000_4_20120308.xml' => [ 'Kyocera', 'Echo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5133-2012102201/1.020VM.rdf' => [ 'Kyocera', 'Event', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5133-823/1.020VM.rdf' => [ 'Kyocera', 'Event', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5133-Chameleon/latest' => [ 'Kyocera', 'Event', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5133-VIRGIN/1.005VM.rdf' => [ 'Kyocera', 'Event', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5133-VIRGIN/1.010VM.rdf' => [ 'Kyocera', 'Event', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5133-VIRGIN/1.020VM.rdf' => [ 'Kyocera', 'Event', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-2011050301/1.200BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-2012051001/1.001BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-2012102201/1.200BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-BOOST/1.000BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-BOOST/1.001BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-BOOST/1.006BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-BOOST/1.010BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-BOOST/1.200BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5170-BOOST/1.201BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/C5170-BST/0510BT.rdf' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://wapuaprof.mycricket.com/kyo_c5171.xml' => [ 'Kyocera', 'Hydro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5215-BOOST/1.001.rdf' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5215-BOOST/1.002.rdf' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5215-BOOST/1.010.rdf' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5215-BOOST/1.020.rdf' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5215-Chameleon/latest' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5215-SPRINT/1.020.rdf' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://uaprof.publicmobile.ca/Kyocera/Hydro_C5216_0.200NP.rdf' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://uaprof.publicmobile.ca/Kyocera/Hydro_C5216_0.300NP.rdf' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://uaprof.publicmobile.ca/Kyocera/Hydro_C5216_0.350NP.rdf' => [ 'Kyocera', 'Hydro Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C6730-BOOST/1.003.rdf' => [ 'Kyocera', 'Hydro Icon', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C6730-BOOST/1.010.rdf' => [ 'Kyocera', 'Hydro Icon', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C6730-Chameleon/latest' => [ 'Kyocera', 'Hydro Icon', 'Android', DeviceType::MOBILE ], + 'http://www.kyocera-wireless.com/UAProf/C6530/C6530N_TM002.xml' => [ 'Kyocera', 'Hydro Life', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C6725-SPRINT/1.003.rdf' => [ 'Kyocera', 'Hydro Vibe', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C6725-VIRGIN/1.003.rdf' => [ 'Kyocera', 'Hydro Vibe', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/kyocera-C6721.xml' => [ 'Kyocera', 'Hydro XTRM', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/KYOCERA/C6721/0.920US.xml' => [ 'Kyocera', 'Hydro XTRM', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/KYOCERA/C6721/0.990US.xml' => [ 'Kyocera', 'Hydro XTRM', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/KYOCERA/C6721/1.000US.xml' => [ 'Kyocera', 'Hydro XTRM', 'Android', DeviceType::MOBILE ], + 'http://www.kyocera-wireless.com/UAProf/C6522/C6522N_TM001.xml' => [ 'Kyocera', 'Hydro XTRM', 'Android', DeviceType::MOBILE ], + 'http://www.kyocera-wireless.com/UAProf/C6522/C6522N_TM002.xml' => [ 'Kyocera', 'Hydro XTRM', 'Android', DeviceType::MOBILE ], + 'http://www.kyocera-wireless.com/UAProf/C6522/C6522_TM001.xml' => [ 'Kyocera', 'Hydro XTRM', 'Android', DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/kyo/KX18.xml' => [ 'Kyocera', 'KX18', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/C5120-BST/1.100BT.rdf' => [ 'Kyocera', 'Milano', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/C5120/1007SP.rdf' => [ 'Kyocera', 'Milano', 'Android', DeviceType::MOBILE ], + 'http://mms.revol.us/uaprofs/Oblique_C5121.xml' => [ 'Kyocera', 'Milano', 'Android', DeviceType::MOBILE ], + 'http://www.kyoceramobile.com/UAProf/S1370/S1370_TB001.xml' => [ 'Kyocera', 'Rally', 'Brew MP', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5155-2011011301/1.011SP.rdf' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5155-SPRINT/1.003SP.rdf' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5155-SPRINT/1.005SP.rdf' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/C5155-SPRINT/1.011SP.rdf' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/C5155/0401SP.rdf' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://profile.kyocera-wireless.com/uaprof/Rise_C5156_1.002PM.rdf' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://profile.kyocera-wireless.com/uaprof/Rise_C5156_1.101PM.rdf' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://uaprof.publicmobile.ca/Kyocera/Rise_C5156_1.101PM.rdf' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/Kyocera/C5155-VMUB/1.0/UAProf.xml' => [ 'Kyocera', 'Rise', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/KYOCERA/K10-Royale/VMU_Royale_UAProf.xml' => [ 'Kyocera', 'Royale', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/kyocera/S2000i/VMU_S2000i_UAProf.xml' => [ 'Kyocera', 'S2000i', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/S3015-PLB/1.001VM.rdf' => [ 'Kyocera', 'S3015-PLB', 'Brew MP', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/KYOCERA/K612/VMU_Switch_Back_UAProf.xml' => [ 'Kyocera', 'Strobe', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/E6710-Chameleon/latest' => [ 'Kyocera', 'Torque', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/E6710-SPRINT/1.005SP.rdf' => [ 'Kyocera', 'Torque', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/E6710-SPRINT/1.006SP.rdf' => [ 'Kyocera', 'Torque', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/E6710-SPRINT/1.007SP.rdf' => [ 'Kyocera', 'Torque', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/E6710-SPRINT/2.002SP.rdf' => [ 'Kyocera', 'Torque', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/E6710-SPRINT/2.300SP.rdf' => [ 'Kyocera', 'Torque', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/E6710-SPRINT/2.602SP.rdf' => [ 'Kyocera', 'Torque', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/E6710-SPRINT/3.000SP.rdf' => [ 'Kyocera', 'Torque', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PL8600/1004PL.rdf' => [ 'Kyocera', 'Zio', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PL8600/2103PL.rdf' => [ 'Kyocera', 'Zio', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP8600/2200SP.rdf' => [ 'Kyocera', 'Zio', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_Ilium_L1100.xml' => [ 'Lanix', 'Ilium L1100', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/LANIX_IliumL1200_Chrome.xml' => [ 'Lanix', 'Ilium L1200', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumL400.xml' => [ 'Lanix', 'Ilium L400', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_ILIUM_L820.xml' => [ 'Lanix', 'Ilium L820', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumL950_LP.xml' => [ 'Lanix', 'Ilium L950', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumLT500.xml' => [ 'Lanix', 'Ilium LT500', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_ILIUM_S106.xml' => [ 'Lanix', 'Ilium S106', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_IliumS115.xml' => [ 'Lanix', 'Ilium S115', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_IliumS120.xml' => [ 'Lanix', 'Ilium S120', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_ILIUM_S130.xml' => [ 'Lanix', 'Ilium S130', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_iliumS200.xml' => [ 'Lanix', 'Ilium S200', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_IliumS210.xml' => [ 'Lanix', 'Ilium S210', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_iliumS400.xml' => [ 'Lanix', 'Ilium S400', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_IliumS410.xml' => [ 'Lanix', 'Ilium S410', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_iliumS420.xml' => [ 'Lanix', 'Ilium S420', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_iliumS50.xml' => [ 'Lanix', 'Ilium S50', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_IliumS500.xml' => [ 'Lanix', 'Ilium S500', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumS520.xml' => [ 'Lanix', 'Ilium S520', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_ILIUM_S520.xml' => [ 'Lanix', 'Ilium S520', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/Profiles/Lanix_IliumS700.xml' => [ 'Lanix', 'Ilium S700', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumX110.xml' => [ 'Lanix', 'Ilium X110', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumX200.xml' => [ 'Lanix', 'Ilium X200', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumX210.xml' => [ 'Lanix', 'Ilium X210', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumX400.xml' => [ 'Lanix', 'Ilium X400', 'Android', DeviceType::MOBILE ], + 'http://www.lanixmobile.com/profiles/Lanix_IliumX500B.xml' => [ 'Lanix', 'Ilium X500B', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/LAVA_IRIS349_UAP.xml' => [ 'Lava', 'Flair E3', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/Flair%20P8.xml' => [ 'Lava', 'Flair P8', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/lava/LAVA_IRIS_355.xml' => [ 'Lava', 'Iris 355', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/lava/LAVA_IRIS356.xml' => [ 'Lava', 'Iris 356', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/LAVA_IRIS_360m_style.xml' => [ 'Lava', 'Iris 360M', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/IRIS_400C.XML' => [ 'Lava', 'Iris 400 Colour', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/Lava%20Iris%20401.xml' => [ 'Lava', 'Iris 401', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/lava/LAVA_IRIS402.xml' => [ 'Lava', 'Iris 402', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/LAVA_IRIS412.xml' => [ 'Lava', 'Iris 412', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/LAVA_IRIS415.xml' => [ 'Lava', 'Iris 415', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/LAVA_iris_460.xml' => [ 'Lava', 'Iris 460', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/lava_iris500.xml' => [ 'Lava', 'Iris 500', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/lava/LAVA_IRIS_501.xml' => [ 'Lava', 'Iris 501', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/lava/LAVA_IRIS504Q.xml' => [ 'Lava', 'Iris 504Q', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/LAVA_IRIS504Q+.xml' => [ 'Lava', 'Iris 504QP', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/lava/LAVA_IRIS506Q.xml' => [ 'Lava', 'Iris 506Q', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/iris_alfa.xml' => [ 'Lava', 'Iris Alfa', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/Iris_Alfa_L.xml' => [ 'Lava', 'Iris Alfa L', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/iris_fuel_10.xml' => [ 'Lava', 'Iris fuel10', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/iris_Fuel20.xml' => [ 'Lava', 'Iris fuel20', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A107.xml' => [ 'Lava', 'Iris fuel50', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/Iris%20Fuel60.xml' => [ 'Lava', 'Iris fuel60', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/lava/LAVA_N320.xml' => [ 'Lava', 'Iris N320', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/M8047LAL.xml' => [ 'Lava', 'Iris Pro 20', 'Android', DeviceType::MOBILE ], + 'http://uap.cellon.com/M8047LA.xml' => [ 'Lava', 'Iris Pro 30', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/Lava_Iris_X1_Grand.xml' => [ 'Lava', 'Iris X1 Grand', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/iris_X1_Selfie.xml' => [ 'Lava', 'Iris X1 Selfie', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/Lava_Iris_X5.xml' => [ 'Lava', 'Iris X5', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/LAVA_IRISX8.xml' => [ 'Lava', 'Iris X8', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/Lava/X9.xml' => [ 'Lava', 'Iris X9', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/XOLO_A500L.xml' => [ 'Lava', 'XOLO A500L', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/XOLO_A500sLite.xml' => [ 'Lava', 'XOLO A500S Lite', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/BLACK.xml' => [ 'Lava', 'XOLO Black', 'Android', DeviceType::MOBILE ], + 'http://msai.in/uaprof/XOLO/Play%20100.xml' => [ 'Lava', 'XOLO Play 6X-1000', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/Play%208X-1100.xml' => [ 'Lava', 'XOLO Play 8X-1100', 'Android', DeviceType::MOBILE ], + 'http://wap.msaiuap.in/xolo/Q1000S.xml' => [ 'Lava', 'XOLO Q1000S', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/XOLO_Q1010i.xml' => [ 'Lava', 'XOLO Q1010i', 'Android', DeviceType::MOBILE ], + 'http://msai.in/uaprof/XOLO/Q1011.xml' => [ 'Lava', 'XOLO Q1011', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/Q2100.xml' => [ 'Lava', 'XOLO Q2100', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/Q3000.xml' => [ 'Lava', 'XOLO Q3000', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/XOLO_Q900T.xml' => [ 'Lava', 'XOLO Q900T', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/lava/Q700.xml' => [ 'Lava', 'XOLO X900', 'Android', DeviceType::MOBILE ], + 'http://www.lemonmobiles.com/UAP/LemonP105.xml' => [ 'Lemon', 'P105', 'Android', DeviceType::MOBILE ], + 'http://www.lemonmobiles.com/UAP/LemonP3.xml' => [ 'Lemon', 'P3', 'Android', DeviceType::MOBILE ], + 'http://www.lemonmobiles.com/UAP/LemonP5.xml' => [ 'Lemon', 'P5', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A300_UAProfile.xml' => [ 'Lenovo', 'A300', 'Android', DeviceType::MOBILE ], + 'http://10.125.33.169:8080/LNV_Lenovo_A305e_2_20130627.xml' => [ 'Lenovo', 'A305', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A319_AMX_UAProfile.xml' => [ 'Lenovo', 'A319', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A326_UAProfile.xml' => [ 'Lenovo', 'A326', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A360_UAProfile.xml' => [ 'Lenovo', 'A360', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/downfile/LNV_Lenovo_A360e_1_20130925.xml' => [ 'Lenovo', 'A360', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A366t_UAProfile.xml' => [ 'Lenovo', 'A366', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A378t_UAProfile.xml' => [ 'Lenovo', 'A378', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A500_UAProfile.xml' => [ 'Lenovo', 'A500', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A516_ROW_UAProfile.xml' => [ 'Lenovo', 'A516', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A516_UAProfile.xml' => [ 'Lenovo', 'A516', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A520_UAProfile.xml' => [ 'Lenovo', 'A520', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo%20A526_ROW_UAProfile_0120.xml' => [ 'Lenovo', 'A526', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S650_KK_ROW_UAprofile.xml' => [ 'Lenovo', 'A536', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/TYZ/LNV_Lenovo_A560e_1_20111220.xml' => [ 'Lenovo', 'A560', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A588t_UAProfile.xml' => [ 'Lenovo', 'A588', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A60_UAProfile.xml' => [ 'Lenovo', 'A60', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A630e_UAProfile.xml' => [ 'Lenovo', 'A630', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A630t_UAProfile.xml' => [ 'Lenovo', 'A630', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A65_UAProfile.xml' => [ 'Lenovo', 'A65', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A656_UAProfile.xml' => [ 'Lenovo', 'A656', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A66t_profile_3G.xml' => [ 'Lenovo', 'A66', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/A660_UAprofile.xml' => [ 'Lenovo', 'A660', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A678t_UAProfile.xml' => [ 'Lenovo', 'A678', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/LNV/LNV_Lenovo_A68e_1_20110715.xml' => [ 'Lenovo', 'A68', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A698t_UAProfile.xml' => [ 'Lenovo', 'A698', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A700e_UAProfile.xml' => [ 'Lenovo', 'A700', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A750_UAProfile.xml' => [ 'Lenovo', 'A750', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A7600-m_UAprofile.xml' => [ 'Lenovo', 'A760', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A7600_UAprofile.xml' => [ 'Lenovo', 'A7600', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A766_UAProfile.xml' => [ 'Lenovo', 'A766', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A789_UAProfile.xml' => [ 'Lenovo', 'A789', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/LNV/LNV_AE760_1_20111024.xml' => [ 'Lenovo', 'A790', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A798t_UAProfile.xml' => [ 'Lenovo', 'A798', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A800_UAProfile.xml' => [ 'Lenovo', 'A800', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A806_UAprofile.xml' => [ 'Lenovo', 'A806', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A808t-i_UAprofile.xml' => [ 'Lenovo', 'A808', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A808t_UAprofile.xml' => [ 'Lenovo', 'A808', 'Android', DeviceType::MOBILE ], + 'http://www.Lenovo.com.cn/mobile/uaprof/Lenovo_A820t.xml' => [ 'Lenovo', 'A820', 'Android', DeviceType::MOBILE ], + 'http://www.Lenovo.com.cn/mobile/uaprof/ZTE_V967S.xml' => [ 'Lenovo', 'A820', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A820t_UAProfile.xml' => [ 'Lenovo', 'A820', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A820_UAProfile.xml' => [ 'Lenovo', 'A820', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOLenovo A820.xml' => [ 'Lenovo', 'A820', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A830_UAProfile.xml' => [ 'Lenovo', 'A830', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A850+_UAprofile.xml' => [ 'Lenovo', 'A850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A850plus_UAprofile.xml' => [ 'Lenovo', 'A850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A850_ROW_UAProfile.xml' => [ 'Lenovo', 'A850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A850_UAProfile.xml' => [ 'Lenovo', 'A850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A859_ROW_UAprofile.xml' => [ 'Lenovo', 'A859', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A936_UAprofile.xml' => [ 'Lenovo', 'A936', 'Android', DeviceType::TABLET ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_A938t_UAprofile.xml' => [ 'Lenovo', 'A938', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_B6000-HV_UAProfile.xml' => [ 'Lenovo', 'B6000 Yoga Tablet 8', 'Android', DeviceType::TABLET ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_B6000-H_UAProfile.xml' => [ 'Lenovo', 'B6000 Yoga Tablet 8', 'Android', DeviceType::TABLET ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_20071165379380.xml' => [ 'Lenovo', 'E303', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/i325wg_Profile.xml' => [ 'Lenovo', 'i325wg', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_2006815893438.xml' => [ 'Lenovo', 'I720', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_2007736634847.xml' => [ 'Lenovo', 'I906', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_20075225142784.xml' => [ 'Lenovo', 'I908', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_B8000-H_UAProfile.xml' => [ 'Lenovo', 'IdeaTab B8000', 'Android', DeviceType::TABLET ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S5000-H_UAProfile.xml' => [ 'Lenovo', 'IdeaTab S5000', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOLenovo K31-t3.xml' => [ 'Lenovo', 'K3', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_K50-T5_UAprofile.xml' => [ 'Lenovo', 'K50', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_P70-A.xml' => [ 'Lenovo', 'P70', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_P70_UAProfile.xml' => [ 'Lenovo', 'P70', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_20071236069306.xml' => [ 'Lenovo', 'P768', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_P770_ROW_UAProfile.xml' => [ 'Lenovo', 'P770', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_P770_UAProfile.xml' => [ 'Lenovo', 'P770', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_20067105107369.xml' => [ 'Lenovo', 'P780', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_P780_KK_UAProfile.xml' => [ 'Lenovo', 'P780', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_P780_ROW_UAProfile.xml' => [ 'Lenovo', 'P780', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_P780_UAProfile.xml' => [ 'Lenovo', 'P780', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOLenovo P780.xml' => [ 'Lenovo', 'P780', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S650_KK_UAprofile.xml' => [ 'Lenovo', 'S650', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S650_ROW_UAprofile.xml' => [ 'Lenovo', 'S650', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S650_UAprofile.xml' => [ 'Lenovo', 'S650', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S658t_KK_UAprofile.xml' => [ 'Lenovo', 'S658', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S658t_UAprofile.xml' => [ 'Lenovo', 'S658', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_2008423595403.xml' => [ 'Lenovo', 'S707', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S720i_UAProfile.xml' => [ 'Lenovo', 'S720', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S720_ROW_UAProfile.xml' => [ 'Lenovo', 'S720', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S820_KK_UAprofile.xml' => [ 'Lenovo', 'S820', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S820_ROW_UAProfile.xml' => [ 'Lenovo', 'S820', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S820_UAProfile.xml' => [ 'Lenovo', 'S820', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HUAWEI_S850t_UAProfile.xml' => [ 'Lenovo', 'S850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S850T_UAprofile.xml' => [ 'Lenovo', 'S850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S850_KK_UAprofile.xml' => [ 'Lenovo', 'S850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S850_ROW_UAprofile.xml' => [ 'Lenovo', 'S850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S850_UAprofile.xml' => [ 'Lenovo', 'S850', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S860t_UAprofile.xml' => [ 'Lenovo', 'S860', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S860_KK_UAprofile.xml' => [ 'Lenovo', 'S860', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S860_ROW_UAprofile.xml' => [ 'Lenovo', 'S860', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S860_UAprofile.xml' => [ 'Lenovo', 'S860', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S890i_UAProfile.xml' => [ 'Lenovo', 'S890', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S890_ROW_UAProfile.xml' => [ 'Lenovo', 'S890', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S898t+_UAProfile.xml' => [ 'Lenovo', 'S898', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S898t_UAProfile.xml' => [ 'Lenovo', 'S898', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S968t_KK_UAprofile.xml' => [ 'Lenovo', 'S898', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_20075256251113.xml' => [ 'Lenovo', 'S9', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Lenovo S90-A.xml' => [ 'Lenovo', 'S90', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S920_KK_UAProfile.xml' => [ 'Lenovo', 'S920', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S920_ROW_UAProfile.xml' => [ 'Lenovo', 'S920', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S920_UAProfile.xml' => [ 'Lenovo', 'S920', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S930_KK_UAprofile.xml' => [ 'Lenovo', 'S930', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S930_ROW_UAprofile.xml' => [ 'Lenovo', 'S930', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S930_UAprofile.xml' => [ 'Lenovo', 'S930', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S938t_UAprofile.xml' => [ 'Lenovo', 'S938t', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S939_KK_UAprofile.xml' => [ 'Lenovo', 'S939', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S939_UAprofile.xml' => [ 'Lenovo', 'S939', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S960_KK_UAprofile.xml' => [ 'Lenovo', 'S960', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S960_ROW_UAProfile.xml' => [ 'Lenovo', 'S960', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S960_UAprofile.xml' => [ 'Lenovo', 'S960', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_S968t_UAProfile.xml' => [ 'Lenovo', 'S968t', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_20069185728203.xml' => [ 'Lenovo', 'V800', null, DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_X2-CU_UAprofile.xml' => [ 'Lenovo', 'Vibe X2', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_X2-TO_UAprofile.xml' => [ 'Lenovo', 'Vibe X2', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Lenovo_X2-TR_UAprofile.xml' => [ 'Lenovo', 'Vibe X2', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/download_200710186443397.xml' => [ 'Lenovo', 'X1', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-LG306G.xml' => [ 'LG', '306G', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-LG441G.xml' => [ 'LG', '441G', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-A165-M3-D1.xml' => [ 'LG', 'A165', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-A350-M3-D1.xml' => [ 'LG', 'A350', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-A380.xml' => [ 'LG', 'A380', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-A447.xml' => [ 'LG', 'A447', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/n0xwBQ5qwfIlsJPX/H788SG-M3-D1.xml' => [ 'LG', 'AKA', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/oOTiaX1x1bTXYvdu/H788-M3-D1.xml' => [ 'LG', 'AKA', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/oOTiaX1x1bTXYvdu/H788n-M3-D1.xml' => [ 'LG', 'AKA', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C710h-M6-D1-GB.xml' => [ 'LG', 'Aloha', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C710h-M6-D1.xml' => [ 'LG', 'Aloha', 'Android', DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/lg/ax245/ax245.xml' => [ 'LG', 'AX245', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/lg/ax260/ax260.xml' => [ 'LG', 'AX260 Scoop', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/lg/ax355/ax355.xml' => [ 'LG', 'AX355', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/lg/ax380/ax380.xml' => [ 'LG', 'AX380 Wave', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/lg/ax4750/ax4750.xml' => [ 'LG', 'AX4750', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/lg/ax490/ax490.xml' => [ 'LG', 'AX490', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/lg/ax830/ax830.xml' => [ 'LG', 'AX830 Glimmer', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/lg/ax8600/ax8600.xml' => [ 'LG', 'AX8600', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-B2070.xml' => [ 'LG', 'B2070', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-B450.xml' => [ 'LG', 'B450', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/4r8SiMuCXFiuV_W9/LG-B470.xml' => [ 'LG', 'B470', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/BL40-M6-D2CL.xml' => [ 'LG', 'BL40', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C130.xml' => [ 'LG', 'C130', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C1300.xml' => [ 'LG', 'C1300', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C1500.xml' => [ 'LG', 'C1500', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C195-M3-D1.xml' => [ 'LG', 'C195', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C195N-M3-D1.xml' => [ 'LG', 'C195N', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C199-M3-D1.xml' => [ 'LG', 'C199', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C2000.xml' => [ 'LG', 'C2000', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C205-M3-D1.xml' => [ 'LG', 'C205', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C207-M3-D1.xml' => [ 'LG', 'C207', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C2500.xml' => [ 'LG', 'C2500', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C330-M3-D1.xml' => [ 'LG', 'C330', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C360-M3-D1.xml' => [ 'LG', 'C360', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C365-M3-D1.xml' => [ 'LG', 'C365', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C395.xml' => [ 'LG', 'C395', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C397-M3-D1.xml' => [ 'LG', 'C397', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C410.xml' => [ 'LG', 'C410', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-CB630.xml' => [ 'LG', 'CB630 Invision', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-CE110.xml' => [ 'LG', 'CE110', null, DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/LG-MS840.xml' => [ 'LG', 'Connect 4G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T300-M3-D1-NS.xml' => [ 'LG', 'Cookie Light T300', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-CT810.xml' => [ 'LG', 'CT810 Incite', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-CU320.xml' => [ 'LG', 'CU320', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-CU920.xml' => [ 'LG', 'CU920 Vu', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/_ogUJjFY_IgTaMCN/LGL21G-M10-D1.xml' => [ 'LG', 'Destiny', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C729-M10-D1.xml' => [ 'LG', 'DoublePlay', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-E300-M3-D1.xml' => [ 'LG', 'E300', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C800G-M10-D1.xml' => [ 'LG', 'Eclypse', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS696/LS696ZVF.rdf' => [ 'LG', 'Elite', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lge/vs700/vs700.xml' => [ 'LG', 'Enlighten', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx11000/vx11000.xml' => [ 'LG', 'Env Touch', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx9200/vx9200.xml' => [ 'LG', 'Env3', 'Brew', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P870-M10-D1.xml' => [ 'LG', 'Escape', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P870-M6-D2.xml' => [ 'LG', 'Escape', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H445-M10-D1.xml' => [ 'LG', 'Escape2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/ojFJqSe94jShCXCN/H443-M3-D1.xml' => [ 'LG', 'Escape2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/LG-MS910.xml' => [ 'LG', 'Esteem', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-F2200.xml' => [ 'LG', 'F2200', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-F3000.xml' => [ 'LG', 'F3000', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/a_ygkA6q45TBK1IF/D393-M10-D1.xml' => [ 'LG', 'F60', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D392-M3-D1.xml' => [ 'LG', 'F60', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGMS395-M10-D0.xml' => [ 'LG', 'F60', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D315-M3-D1.xml' => [ 'LG', 'F70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D315-M6-D1.xml' => [ 'LG', 'F70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D315s-M6-D1.xml' => [ 'LG', 'F70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F370L-M3-D1.xml' => [ 'LG', 'F70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L31L-M10-D1.xml' => [ 'LG', 'F70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-F7250.xml' => [ 'LG', 'F7250', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LGLS740-Chameleon/latest' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-2012071301/LS740ZV5.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-BOOST/LS740ZV3.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-BOOST/LS740ZV4.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-BOOST/LS740ZV5.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-BOOST/LS740ZV6.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-Chameleon/latest' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-SPRPRE/LS740ZV5.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-VIRGIN/LS740ZV3.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-VIRGIN/LS740ZV4.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-VIRGIN/LS740ZV5.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-VIRGIN/LS740ZV6.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.comLS740.rdf' => [ 'LG', 'F90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-F9100.xml' => [ 'LG', 'F9100', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-F9200.xml' => [ 'LG', 'F9200', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-Chameleon/latest' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-SPRINT/LS995ZV3.rdf' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-SPRINT/LS995ZV6.rdf' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-SPRINT/LS995ZV7.rdf' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-SPRINT/LS995ZVA.rdf' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-SPRINT/LS995ZVB.rdf' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-SPRPRE/LS995ZVA.rdf' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-SPRPRE/LS995ZVB.rdf' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D950-M10-D1-KK.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D950-M10-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D950-M3-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D950G-M10-D1-KK.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D955-M10-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D955-M3-D1-KK.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D955-M3-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D955-M6-D1-KK.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D955-M6-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D956-M3-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D958-M10-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D958-M3-D1-KK.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D958-M3-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D959-M10-D1-KK.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D959-M10-D1.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F340L-M3-D1-KK.xml' => [ 'LG', 'G Flex', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS991-SPRINT/LS996ZV8.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-BOOST/LS996ZV9.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-Chameleon/latest' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-SPRINT/LS996ZV5.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-SPRINT/LS996ZV6.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-SPRINT/LS996ZV7.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-SPRINT/LS996ZV8.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-SPRINT/LS996ZV9.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-SPRINT/LS996ZVB.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS996-SPRINT/LS996ZVC.rdf' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/2D_2BD_BlBeXhXq5/H955-M3-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/2D_2BD_BlBeXhXq5/H955-M5-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/2D_2BD_BlBeXhXq5/H955-M6-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LS996-M10-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MbAHlRXTX34T2a8f/H950-M10-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MbAHlRXTX34T2a8f/H950-M3-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MbAHlRXTX34T2a8f/H955-M10-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MbAHlRXTX34T2a8f/H955-M20-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MbAHlRXTX34T2a8f/H955-M3-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MbAHlRXTX34T2a8f/H955-M5-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MbAHlRXTX34T2a8f/H955-M6-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MbAHlRXTX34T2a8f/H959-M3-D1.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://pix.cspire.com/UA/profile/lg/as995/as995.xml' => [ 'LG', 'G Flex 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/V410-D1.xml' => [ 'LG', 'G Pad 7.0', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/V410-M10-D1.xml' => [ 'LG', 'G Pad 7.0', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/V410-M3-D1.xml' => [ 'LG', 'G Pad 7.0', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/V410GO-D1.xml' => [ 'LG', 'G Pad 7.0', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/V490-M3-D1.xml' => [ 'LG', 'G Pad 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/LG/LK430-Chameleon/latest' => [ 'LG', 'G Pad F 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/LG/LK430-SPRINT/LK430ZV3.rdf' => [ 'LG', 'G Pad F 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/LG/LK430-SPRINT/LK430ZV4.rdf' => [ 'LG', 'G Pad F 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/LG/LK430-SPRINT/LK430ZV5.rdf' => [ 'LG', 'G Pad F 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/LG/LK430-SPRINT/LK430ZV6.rdf' => [ 'LG', 'G Pad F 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/LG/LK430-SPRINT/LK430ZV7.rdf' => [ 'LG', 'G Pad F 7.0', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/iBpgg_0u_ASxAV_F/V495-D1.xml' => [ 'LG', 'G Pad F 7.0', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/iBpgg_0u_ASxAV_F/V499-D1.xml' => [ 'LG', 'G Pad F 8.0', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/rGTs_Yxuw5wT0ZyW/V495-D1.xml' => [ 'LG', 'G Pad F 8.0', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/TksSP_-GkCHZ7K__/V930-D1.xml' => [ 'LG', 'G Pad X 10.1', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/_-0_bP_4P_s73ov-/V930-D1.xml' => [ 'LG', 'G Pad X 10.1', 'Android', DeviceType::TABLET ], + 'http://gsm.lge.com/html/gsm/D830-M3-D1.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D838-M3-D1-KK.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D838-M3-D1.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D838-M9-D1-KK.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F350K-M3-D1-KK.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F350K-M3-D1.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F350L-M3-D1.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F350L-M9-D1.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F350S-M10-D1.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F350S-M3-D1.xml' => [ 'LG', 'G Pro 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D680-M10-D1-KK.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D680-M10-D1.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D680-M3-D1-KK.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D680-M3-D1.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D681-M3-D1-KK.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D681-M3-D1.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D682-M3-D1.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D682TR-M3-D1.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D682TR-M5-D1.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://tool.xcdn.gdms.lge.com/html/uap/BZGZ3OH0HR/D682TR-M3-D1.xml' => [ 'LG', 'G Pro Lite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D685-M3-D1-KK.xml' => [ 'LG', 'G Pro Lite Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D685-M3-D1.xml' => [ 'LG', 'G Pro Lite Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D686-M3-D1-KK.xml' => [ 'LG', 'G Pro Lite Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D686-M3-D1.xml' => [ 'LG', 'G Pro Lite Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D686-M5-D1-KK.xml' => [ 'LG', 'G Pro Lite Dual', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZV3.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZV4.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZV5.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZV7.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZV8.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZV9.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZVA.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZVB.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-BOOST/LS770ZVE.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-Chameleon/latest' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-SPRINT/LS770ZV4.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-SPRINT/LS770ZV5.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-SPRINT/LS770ZV7.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-SPRINT/LS770ZVB.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-SPRPRE/LS770ZV3.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-SPRPRE/LS770ZV4.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-VIRGIN/LS770ZV7.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-VIRGIN/LS770ZV9.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-VIRGIN/LS770ZVA.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS770-VIRGIN/LS770ZVB.rdf' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/5uyruBAm__1ZuYMa/H631-M10-D1.xml' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H635-M10-D1.xml' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H635-M5-D1.xml' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H635-M6-D1.xml' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H636-M10-D1.xml' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H636-M3-D1.xml' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/uIJXil7N_tpYFHo7/LGMS631-M10-D1.xml' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/uIJXil7N_tpYFHo7/LGMS631-M3-D1.xml' => [ 'LG', 'G Stylo', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/m9a8_OJx_S_kt06K/H740-M10-D1.xml' => [ 'LG', 'G Vista 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-G1610.xml' => [ 'LG', 'G1610', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-BOOST/LS980ZVC.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-BOOST/LS980ZVD.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-BOOST/LS980ZVG.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-BOOST/LS980ZVH.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-Chameleon/latest' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZV6.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZV7.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZV8.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZVA.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZVC.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZVD.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZVE.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZVG.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZVH.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/LS980ZVI.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS980-SPRINT/OpTimuS.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.comLS980ZV8.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.comLS980ZVG.rdf' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/01F-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/01F-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/01F-M9-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/980 4G-M12-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D800-M10-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D800-M10-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D800-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D800-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D801-M10-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D801-M10-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D801-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D801-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M1-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M1-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M10-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M10-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M2-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M20-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M20-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M4-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M5-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M5-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M6-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M6-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802-M9-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802T-M20-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802T-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802T-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802T-M5-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802TR-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802TR-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802TR-M5-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D802TR-M5-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D803-M10-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D803-M10-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D803-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D803-M6-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D803-M6-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D805-M10-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D805-M10-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D805-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D805-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D805-M5-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D806-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D806-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320K-M10-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320K-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320K-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320K-M9-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320L-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320L-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320L-M9-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320L-M9-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320S-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320S-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F320S-M9-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/G2-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/l01f-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L01F-M9-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L22-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L22-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LS980-M10-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LS980-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LS980-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LS980-M9-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/M-PrVgyxvfGD20R_/D802-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/VS980-M3-D1-KK.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://tool.xcdn.gdms.lge.com/html/uap/C957NUJHUE/D802TR-M3-D1.xml' => [ 'LG', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/618-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/8-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D610-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D610AR-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D610TR-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D610TR-M5-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D618-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D618-M4-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D620-M10-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D620-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D620-M6-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D620r-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D625-M10-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D625-M3-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D625-M5-D1.xml' => [ 'LG', 'G2 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-G282.xml' => [ 'LG', 'G282', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-BOOST/LS990ZVC.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-BOOST/LS990ZVF.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-Chameleon/latest' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZV4.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZV6.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZV8.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZVA.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZVB.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZVC.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZVE.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZVF.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZVG.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS990-SPRINT/LS990ZVI.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS995-SPRINT/LS990ZVA.rdf' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/%H:%M:%S/D855-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/%s/%s/%s/D855-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/985 4G-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D850-M10-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D850-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D851-M10-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D851-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D852-M10-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D852-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D852-M6-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D852-parrot-M10-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D852G-M10-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D852G-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855-M1-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855-M10-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855-M20-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855-M4-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855-M5-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855-M6-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855A-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D855K-M20-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D856-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D858-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D858HK-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F400K-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F400L-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F400S-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/G3-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LS990-M10-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LS990-M3-D1.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/LG/LG_LG-D859_3_20140707.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://pix.cspire.com/UA/profile/lg/as990/as990.xml' => [ 'LG', 'G3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D727-M10-D1.xml' => [ 'LG', 'G3 Beat', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D728-M3-D1.xml' => [ 'LG', 'G3 Beat', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F470S-M3-D1.xml' => [ 'LG', 'G3 Beat', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/HD_8T0W9FihEqY5S/D727-M10-D1.xml' => [ 'LG', 'G3 Beat', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/LG/LG_LG-D729_2_20140627.xml' => [ 'LG', 'G3 Beat', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F460K-M10-D1.xml' => [ 'LG', 'G3 Cat.6', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F460L-M9-D1.xml' => [ 'LG', 'G3 Cat.6', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F460S-M10-D1.xml' => [ 'LG', 'G3 Cat.6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS885-Chameleon/latest' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS885-SPRINT/LS885ZV4.rdf' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS885-SPRINT/LS885ZV5.rdf' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D722-M3-D1.xml' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D722-M5-D1.xml' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D722-M6-D1.xml' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D722v-M3-D1.xml' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D723-M3-D1.xml' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D723-M5-D1.xml' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D724-M3-D1.xml' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D725-M10-D1.xml' => [ 'LG', 'G3 mini', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F460K-M3-D1.xml' => [ 'LG', 'G3 Prime', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F460L-M3-D1.xml' => [ 'LG', 'G3 Prime', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F460S-M3-D1.xml' => [ 'LG', 'G3 Prime', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D722-M10-D1.xml' => [ 'LG', 'G3 S', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D722AR-M3-D1.xml' => [ 'LG', 'G3 S', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D690-M3-D1.xml' => [ 'LG', 'G3 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D690n-M3-D1.xml' => [ 'LG', 'G3 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D693-M3-D1.xml' => [ 'LG', 'G3 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D693n-M10-D1.xml' => [ 'LG', 'G3 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D693n-M3-D1.xml' => [ 'LG', 'G3 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D693TR-M3-D1.xml' => [ 'LG', 'G3 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D693TR-M5-D1.xml' => [ 'LG', 'G3 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/D690-M3-D1.xml' => [ 'LG', 'G3 Stylus', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS885-SPRINT/LS885ZV6.rdf' => [ 'LG', 'G3 Vigor', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D631-M10-D1.xml' => [ 'LG', 'G3 Vista', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS991-Chameleon/latest' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H815-M3-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H818P-M3-D1-KK.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Qf23_I29ZbHl2AuA/H815-M5-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Qf23_I29ZbHl2AuA/H815-M6-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Qf23_I29ZbHl2AuA/H818-M3-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H810-M10-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H810-M3-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H811-M10-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H811-M3-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H812-M10-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H815-M10-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H815-M20-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H815-M3-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H815-M4-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H815-M5-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H815-M6-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H815K-M20-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H815P-M3-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H818-M3-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H818-M4-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H818-M5-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/H819-M3-D1.xml' => [ 'LG', 'G4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/eNsCGw_apwMhnXPM/H900-M10-D1.xml' => [ 'LG', 'G4 Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/_W4s8Utf_eec5qYV/H900-M10-D1.xml' => [ 'LG', 'G4 Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/-pBWguyi4C2qxxHn/H540-M3-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/-pBWguyi4C2qxxHn/H540-M4-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/-pBWguyi4C2qxxHn/H540-M5-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/-pBWguyi4C2qxxHn/H542-M10-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/-pBWguyi4C2qxxHn/H542-M3-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/-pBWguyi4C2qxxHn/H542-M5-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H630-M3-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H630D-M3-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H635-M3-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/b7_gceeg_u9fMBZq/H635A-M3-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H540-M3-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H542-M10-D1.xml' => [ 'LG', 'G4 Stylus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MX_LG_G4015.xml' => [ 'LG', 'G4015', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-G4020.xml' => [ 'LG', 'G4020', null, DeviceType::MOBILE ], + 'http://fr.lge.com/gsm/LG-G4050.xml' => [ 'LG', 'G4050', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H525n-M10-D1.xml' => [ 'LG', 'G4c', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H525n-M6-D1.xml' => [ 'LG', 'G4c', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/3p7OIw-_p_OSTTKo/H734-M3-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/3p7OIw-_p_OSTTKo/H735-M10-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/3p7OIw-_p_OSTTKo/H735-M20-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/3p7OIw-_p_OSTTKo/H735-M3-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/3p7OIw-_p_OSTTKo/H735-M5-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/3p7OIw-_p_OSTTKo/H735-M6-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/3p7OIw-_p_OSTTKo/H736-M3-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H735-M3-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H736-M3-D1.xml' => [ 'LG', 'G4s', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-G5400.xml' => [ 'LG', 'G5400', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-G650.xml' => [ 'LG', 'G650', null, DeviceType::MOBILE ], + 'http://fr.lge.com/gsm/LG-G7050.xml' => [ 'LG', 'G7050', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-G7200.xml' => [ 'LG', 'G7200', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-G912.xml' => [ 'LG', 'G912', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-UAP-GB270-v0.1.xml' => [ 'LG', 'GB270', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GD510.xml' => [ 'LG', 'GD510 Pop', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GD880-3G-M6-D2CL.xml' => [ 'LG', 'GD880', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GD880-M3-D1.xml' => [ 'LG', 'GD880', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GD880-M6-D1.xml' => [ 'LG', 'GD880', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GD880-M6-D2CL.xml' => [ 'LG', 'GD880', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GM200.xml' => [ 'LG', 'GM200 Brio', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GM360-NS.xml' => [ 'LG', 'GM360 Viewty Snap', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GM360.xml' => [ 'LG', 'GM360 Viewty Snap', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GM630.xml' => [ 'LG', 'GM630', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GM730.xml' => [ 'LG', 'GM730', 'Windows Mobile', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GM750Q.xml' => [ 'LG', 'GM750 Smart', 'Windows Mobile', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GR500.xml' => [ 'LG', 'GR500 Xenon', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GS290.xml' => [ 'LG', 'GS290 Cookie Fresh', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GS390.xml' => [ 'LG', 'GS390 Prime', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT400-M6-D2CL.xml' => [ 'LG', 'GT400', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GT500-TMO.xml' => [ 'LG', 'GT500 Puccini', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GT505-ORG.xml' => [ 'LG', 'GT505', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GT505.xml' => [ 'LG', 'GT505', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GW300.xml' => [ 'LG', 'GW300', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GW550.xml' => [ 'LG', 'GW550', 'Windows Mobile', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GW620-M6-D1.xml' => [ 'LG', 'GW620 Eve', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F310L-M3-D1-KK.xml' => [ 'LG', 'GX', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F310L-M3-D1.xml' => [ 'LG', 'GX', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F310L-M9-D1-KK.xml' => [ 'LG', 'GX', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F310LR-M3-D1-KK.xml' => [ 'LG', 'GX', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F310LR-M9-D1-KK.xml' => [ 'LG', 'GX', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-GX500.xml' => [ 'LG', 'GX500', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-HB620T.xml' => [ 'LG', 'HB620T', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lge/vs950/vs950.xml' => [ 'LG', 'Intuition', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGL22C-M12-D1.xml' => [ 'LG', 'isai', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L24-M3-D1.xml' => [ 'LG', 'isai FL', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/YSdHbanpHC5h2R_E/V32-M3-D1.xml' => [ 'LG', 'isai vivid LGV32', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H220-M5-D1.xml' => [ 'LG', 'Joy', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H221AR-M3-D1.xml' => [ 'LG', 'Joy', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/JMVnyLlmw2NR0pk1/H220-M3-D1.xml' => [ 'LG', 'Joy', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/JMVnyLlmw2NR0pk1/H220-M5-D1.xml' => [ 'LG', 'Joy', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/JMVnyLlmw2NR0pk1/H221-M10-D1.xml' => [ 'LG', 'Joy', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/JMVnyLlmw2NR0pk1/H221AR-M3-D1.xml' => [ 'LG', 'Joy', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/JMVnyLlmw2NR0pk1/H222-M3-D1.xml' => [ 'LG', 'Joy', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KB770-VDF3G.xml' => [ 'LG', 'KB770', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KC550.xml' => [ 'LG', 'KC550', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KC780.xml' => [ 'LG', 'KC780', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KC910-VDF.xml' => [ 'LG', 'KC910', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KC910-VDF3G.xml' => [ 'LG', 'KC910 Renoir', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KC910.xml' => [ 'LG', 'KC910 Renoir', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KC910i.xml' => [ 'LG', 'KC910i Renoir', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KE260-V08f.xml' => [ 'LG', 'KE260', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KE500.xml' => [ 'LG', 'KE500', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KE600E.xml' => [ 'LG', 'KE600', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KE770.xml' => [ 'LG', 'KE770 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KE820.xml' => [ 'LG', 'KE820', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KE850.xml' => [ 'LG', 'KE850 Prada', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KE970.xml' => [ 'LG', 'KE970 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KE990.xml' => [ 'LG', 'KE990 Viewty', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF240.xml' => [ 'LG', 'KF240', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF245.xml' => [ 'LG', 'KF245', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF300.xml' => [ 'LG', 'KF300', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF310-H3G.xml' => [ 'LG', 'KF310', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF310-VDF3G.xml' => [ 'LG', 'KF310', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF311-DRM-2.xml' => [ 'LG', 'KF311', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF390.xml' => [ 'LG', 'KF390', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF510.xml' => [ 'LG', 'KF510', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF600.xml' => [ 'LG', 'KF600', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF700.xml' => [ 'LG', 'KF700', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF750-OPEN1.xml' => [ 'LG', 'KF750 Secret', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF750-VDF3G.xml' => [ 'LG', 'KF750 Secret', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF755.xml' => [ 'LG', 'KF755', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KF900.xml' => [ 'LG', 'KF900 Prada II', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG119.xml' => [ 'LG', 'KG119', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG190.xml' => [ 'LG', 'KG190', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG200.xml' => [ 'LG', 'KG200', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG200j.xml' => [ 'LG', 'KG200', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG208.xml' => [ 'LG', 'KG208', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG280.xml' => [ 'LG', 'KG280', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG290UAE.xml' => [ 'LG', 'KG290', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG296.xml' => [ 'LG', 'KG296', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG300j.xml' => [ 'LG', 'KG300', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG70.xml' => [ 'LG', 'KG70 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG77.xml' => [ 'LG', 'KG77 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG90.xml' => [ 'LG', 'KG90', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG920.xml' => [ 'LG', 'KG920', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KG98.xml' => [ 'LG', 'KG98', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KM380.xml' => [ 'LG', 'KM380', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KM500.xml' => [ 'LG', 'KM500', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KM501.xml' => [ 'LG', 'KM501', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KM553.xml' => [ 'LG', 'KM553', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KM900N.xml' => [ 'LG', 'KM900', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KM900.xml' => [ 'LG', 'KM900 Arena', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP110.xml' => [ 'LG', 'KP110', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP130.xml' => [ 'LG', 'KP130', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP135.xml' => [ 'LG', 'KP135', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-UAP-KP199-v0.1.xml' => [ 'LG', 'KP199', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP202.xml' => [ 'LG', 'KP202', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP210.xml' => [ 'LG', 'KP210', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP215.xml' => [ 'LG', 'KP215', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-UAP-KP220-v0.1.xml' => [ 'LG', 'KP220', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP230.xml' => [ 'LG', 'KP230', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP233.xml' => [ 'LG', 'KP233', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP260.xml' => [ 'LG', 'KP260', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP265.xml' => [ 'LG', 'KP265', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP270-3G.xml' => [ 'LG', 'KP270', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP275.xml' => [ 'LG', 'KP275', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP320.xml' => [ 'LG', 'KP320', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP500.xml' => [ 'LG', 'KP500 Cookie', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP501.xml' => [ 'LG', 'KP500 Cookie', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KP570.xml' => [ 'LG', 'KP570 Cookie', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/KS10.xml' => [ 'LG', 'KS10 JOY', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KS20.xml' => [ 'LG', 'KS360', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KS360-V10d.xml' => [ 'LG', 'KS360', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KS360.xml' => [ 'LG', 'KS360', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KS500-VDF3G.xml' => [ 'LG', 'KS500', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KT520-OPEN1.xml' => [ 'LG', 'KT520', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU250.xml' => [ 'LG', 'KU250', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU380-v10a.xml' => [ 'LG', 'KU380', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU380-v10b.xml' => [ 'LG', 'KU380', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU580-CA.xml' => [ 'LG', 'KU580', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU970-CA.xml' => [ 'LG', 'KU970 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU970.xml' => [ 'LG', 'KU970 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU990-3G.xml' => [ 'LG', 'KU990', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU990-VDF3G.xml' => [ 'LG', 'KU990 Viewty', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU990.xml' => [ 'LG', 'KU990 Viewty', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-KU990i.xml' => [ 'LG', 'KU990 Viewty', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D331-M6-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D335-M3-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D337-M3-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/D335-M3-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/D335-M5-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/U_EOJw1JxwmQJceD/31-M10-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/U_EOJw1JxwmQJceD/D331-M5-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/U_EOJw1JxwmQJceD/D335-M3-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/U_EOJw1JxwmQJceD/D335E-M3-D1.xml' => [ 'LG', 'L Bello', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D290-M10-D1.xml' => [ 'LG', 'L Fino', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D290-M3-D1.xml' => [ 'LG', 'L Fino', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D290-M5-D1.xml' => [ 'LG', 'L Fino', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D295-M3-D1.xml' => [ 'LG', 'L Fino', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/U_EOJw1JxwmQJceD/D337-M3-D1.xml' => [ 'LG', 'L Prime', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-L1100.xml' => [ 'LG', 'L1100', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MX_LG_L1150.xml' => [ 'LG', 'L1150', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-L1200.xml' => [ 'LG', 'L1200', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG_L1400.xml' => [ 'LG', 'L1400', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D100-M10-D1.xml' => [ 'LG', 'L20', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D100-M3-D1.xml' => [ 'LG', 'L20', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D100AR-M3-D1.xml' => [ 'LG', 'L20', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D105-M3-D1.xml' => [ 'LG', 'L20', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D107-M3-D1.xml' => [ 'LG', 'L20', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D120-M10-D1.xml' => [ 'LG', 'L30', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D120-M3-D1.xml' => [ 'LG', 'L30', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D123-M3-D1.xml' => [ 'LG', 'L30', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D125-M3-D1.xml' => [ 'LG', 'L30', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D125f-M3-D1.xml' => [ 'LG', 'L30', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D127-M3-D1.xml' => [ 'LG', 'L30', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D120AR-M3-D1.xml' => [ 'LG', 'L30 Sporty', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D150-M5-D1.xml' => [ 'LG', 'L35', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D157f-M3-D1.xml' => [ 'LG', 'L35', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGL35G-M6-D1.xml' => [ 'LG', 'L35G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/34C-M11-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D160-M10-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D160-M20-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D160-M3-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D160-M6-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D170-M3-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D175f-M3-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L34C-M12-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/X130g-M10-D1.xml' => [ 'LG', 'L40', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D227-M3-D1.xml' => [ 'LG', 'L50', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D213-M10-D1.xml' => [ 'LG', 'L50 Sporty', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D213-M3-D1.xml' => [ 'LG', 'L50 Sporty', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-L5100.xml' => [ 'LG', 'L5100', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/X135-M10-D1.xml' => [ 'LG', 'L60', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/X140-M10-D1.xml' => [ 'LG', 'L60', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/X145-M10-D1.xml' => [ 'LG', 'L60', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/X147-M10-D1.xml' => [ 'LG', 'L60', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-L600V.xml' => [ 'LG', 'L600v', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/X137-M10-D1.xml' => [ 'LG', 'L60i', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D280-M10-D1.xml' => [ 'LG', 'L65', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D280-M3-D1.xml' => [ 'LG', 'L65', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D280-M5-D1.xml' => [ 'LG', 'L65', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D285-M3-D1.xml' => [ 'LG', 'L65', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/321-M10-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D320-M10-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D320-M2-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D320-M3-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D320-M5-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D320-M6-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D320AR-M3-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D320n-M3-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D321-M10-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D325-M3-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D325-M4-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D325f-M3-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGAS323-M10-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGL41C-M12-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGMS323-M10-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGMS323-M3-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MS323-M10-D1.xml' => [ 'LG', 'L70', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D340f8-M3-D1.xml' => [ 'LG', 'L70 Tri', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D373-M10-D1.xml' => [ 'LG', 'L80', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D373-M3-D1.xml' => [ 'LG', 'L80', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D380-M3-D1.xml' => [ 'LG', 'L80', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D385-M3-D1.xml' => [ 'LG', 'L80', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D331-M3-D1.xml' => [ 'LG', 'L80+', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/U_EOJw1JxwmQJceD/D331-M10-D1.xml' => [ 'LG', 'L80+', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/U_EOJw1JxwmQJceD/D331-M3-D1.xml' => [ 'LG', 'L80+', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D400-M10-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D400-M3-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D405-M10-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D405-M3-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D405-M5-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D405-M6-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D410-M3-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D415-M10-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D415-M3-D1.xml' => [ 'LG', 'L90', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGL996L-M10-D1.xml' => [ 'LG', 'L996L', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/0W_43_22MIQ_HNMe/H340-M10-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/0W_43_22MIQ_HNMe/H340-M3-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/0W_43_22MIQ_HNMe/H340AR-M3-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/0W_43_22MIQ_HNMe/H340n-M10-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/0W_43_22MIQ_HNMe/H340n-M3-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/0W_43_22MIQ_HNMe/H340n-M5-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/0W_43_22MIQ_HNMe/H340n-M6-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/0W_43_22MIQ_HNMe/H342-M3-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/H320-M10-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/H320-M3-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/H320-M5-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/H326-M3-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/yObOcsVFUyAgTj5W/H345-M10-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/yObOcsVFUyAgTj5W/LGMS345-M10-D1.xml' => [ 'LG', 'Leon', 'Android', DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/LGE_LG160P.rdf' => [ 'LG', 'LG160', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/LGE_LG160V.rdf' => [ 'LG', 'LG160', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG200.rdf' => [ 'LG', 'LG200', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG245-0.rdf' => [ 'LG', 'LG245', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/LGE_LG260.rdf' => [ 'LG', 'LG260', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/LGE_LG280.rdf' => [ 'LG', 'LG280', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG285-1.rdf' => [ 'LG', 'LG285', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/LGE_LG385.rdf' => [ 'LG', 'LG385', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-LG440G.xml' => [ 'LG', 'LG440G', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/lg4600.rdf' => [ 'LG', 'LG4600', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG490-0.rdf' => [ 'LG', 'LG490', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-LG530G.xml' => [ 'LG', 'LG530G', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_LG_LG5400_LG540V05.rdf' => [ 'LG', 'LG5400', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/lg5450.rdf' => [ 'LG', 'LG5450', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_LGE_LG550_CX55BL10.rdf' => [ 'LG', 'LG550', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/LGE_LG570V.rdf' => [ 'LG', 'LG570', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/LGE_LG600.rdf' => [ 'LG', 'LG600', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/lg6070.rdf' => [ 'LG', 'LG6070', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/lg6190.rdf' => [ 'LG', 'LG6190', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_LG_LG6200_CX62BE07.rdf' => [ 'LG', 'LG6200', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/LGE_LG830.rdf' => [ 'LG', 'LG830', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-LG840G.xml' => [ 'LG', 'LG840G', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG8500-0.rdf' => [ 'LG', 'LG8500 Chocolate', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG8600-1.rdf' => [ 'LG', 'LG8600 Chocolate Flip', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_LGE_LG8700_CX87BL04.rdf' => [ 'LG', 'LG8700', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG8800-0.rdf' => [ 'LG', 'LG8800 Venus', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG9100-0.rdf' => [ 'LG', 'LG9100 Keybo', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG9700-0.rdf' => [ 'LG', 'LG9700 Dare', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LN280-PLB/LN280ZV3.rdf' => [ 'LG', 'LN280', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LX600/LX600V07.rdf' => [ 'LG', 'Lotus LX600', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LX600/LX600V08.rdf' => [ 'LG', 'Lotus LX600', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lge/vs840/vs840.xml' => [ 'LG', 'Lucid', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Z9L2LsF6CK0ZCabE/LGL16C-M12-D1.xml' => [ 'LG', 'Lucky', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/LG/LX-140/VMU_lx140_UAProf.xml' => [ 'LG', 'LX140 Aloha', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/LG/lx165/VMU_lx165_UAProf.xml' => [ 'LG', 'LX165 Flare', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LX400/LX400V13.rdf' => [ 'LG', 'LX400', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/5350/LX5350_11.rdf' => [ 'LG', 'LX5350', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LX610/LX610V05.rdf' => [ 'LG', 'LX610', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS860-2011011301/LS860ZV7.rdf' => [ 'LG', 'Mach', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS860-BOOST/LS860ZV8.rdf' => [ 'LG', 'Mach', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS860-Chameleon/latest' => [ 'LG', 'Mach', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS860-SPRINT/LS860ZV7.rdf' => [ 'LG', 'Mach', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS860-SPRINT/LS860ZV8.rdf' => [ 'LG', 'Mach', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H520-M10-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H520-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H522-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H525-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H525-M5-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H525n-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/1XolXoCnSn7_dGTS/H525n-M5-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Dsi6X_y8P_In4gbf/H500-M10-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Dsi6X_y8P_In4gbf/H500-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Dsi6X_y8P_In4gbf/H500-M6-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Dsi6X_y8P_In4gbf/H502-M10-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Dsi6X_y8P_In4gbf/H502-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H500-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H522-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H522F-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/H502-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/RNTp_ElEPgL_QrBQ/H522-M3-D1.xml' => [ 'LG', 'Magna', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG855ABC/LG855ZV3.rdf' => [ 'LG', 'Marquee', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG855ABC/LG855ZV4.rdf' => [ 'LG', 'Marquee', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS855/LS855ZV1.rdf' => [ 'LG', 'Marquee', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS855/LS855ZV9.rdf' => [ 'LG', 'Marquee', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS855/LS855ZVC.rdf' => [ 'LG', 'Marquee', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-ME591D.xml' => [ 'LG', 'ME591', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-ME770.xml' => [ 'LG', 'ME770 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG101.xml' => [ 'LG', 'MG101', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG150.xml' => [ 'LG', 'MG150', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG170.xml' => [ 'LG', 'MG170', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG200.xml' => [ 'LG', 'MG200', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG220.xml' => [ 'LG', 'MG220', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG225d.xml' => [ 'LG', 'MG225', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG235.xml' => [ 'LG', 'MG235', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG280.xml' => [ 'LG', 'MG280', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-MG800c.xml' => [ 'LG', 'MG800 Chocolate', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/MM535/MM535V24.rdf' => [ 'LG', 'MM-535', null, DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/LG-MS770.xml' => [ 'LG', 'Motion 4G', 'Android', DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/lg/mx200v1.xml' => [ 'LG', 'MX200', null, DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/lg/MX210/MX210v1.xml' => [ 'LG', 'MX210', null, DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/lg/MX275/mx275v1.xml' => [ 'LG', 'MX275', null, DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/lg/mx500v1.xml' => [ 'LG', 'MX500', null, DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/lg/MX8500/mx8500v1.xml' => [ 'LG', 'MX8500', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P930-M6-D1-ICS.xml' => [ 'LG', 'Nitro HD', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P930-M6-D1.xml' => [ 'LG', 'Nitro HD', 'Android', DeviceType::MOBILE ], + 'http://mobileuaprof.xtra.co.nz/NX550.rdf' => [ 'LG', 'NX550', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_M6_D2_CL.xml' => [ 'LG', 'Optimus', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-P990h-M10-D1.xml' => [ 'LG', 'Optimus 2X Speed', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P990-M3-D2.xml' => [ 'LG', 'Optimus 2X Speed', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P990-M6-D1-ICS.xml' => [ 'LG', 'Optimus 2X Speed', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P990-M6-D2.xml' => [ 'LG', 'Optimus 2X Speed', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P990h-M10-D1.xml' => [ 'LG', 'Optimus 2X Speed', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P990hN-M6-D1-ICS.xml' => [ 'LG', 'Optimus 2X Speed', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P990hN-M6-D1.xml' => [ 'LG', 'Optimus 2X Speed', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P920-M3-D2-ICS.xml' => [ 'LG', 'Optimus 3D', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P920-M3-D2.xml' => [ 'LG', 'Optimus 3D', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P920-M6-D2.xml' => [ 'LG', 'Optimus 3D', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P920h-M3-D2.xml' => [ 'LG', 'Optimus 3D', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P725-M3-D2.xml' => [ 'LG', 'Optimus 3D Max', 'Android', DeviceType::MOBILE ], + 'http://device.telusmobility.com/lg/LG-CX670-0.rdf' => [ 'LG', 'Optimus 3G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P880-M10-D1.xml' => [ 'LG', 'Optimus 4X HD', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P880-M3-D1.xml' => [ 'LG', 'Optimus 4X HD', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P880-M3-D2.xml' => [ 'LG', 'Optimus 4X HD', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P880-M6-D2.xml' => [ 'LG', 'Optimus 4X HD', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P880g-M10-D1.xml' => [ 'LG', 'Optimus 4X HD', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P880g-M3-D1.xml' => [ 'LG', 'Optimus 4X HD', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/L85C/LGL85CV1.rdf' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-P970-M3-D2.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-P970-M6-D2.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-P970h-M10-D1.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-P970h-M3-D1.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-P970h-M6-D1.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P970-M10-D2.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P970-M3-D2.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P970-M6-D2.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P970g-M10-D1.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P970h-M3-D2.xml' => [ 'LG', 'Optimus Black', 'Android', DeviceType::MOBILE ], + 'http://mms.cleartalk.co/sam-r720.xml?source=web' => [ 'LG', 'Optimus C', 'Android', DeviceType::MOBILE ], + 'http://wapuaprof.wap.mycricket.com/lg/LW690.xml' => [ 'LG', 'Optimus C', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C550-M6-D2.xml' => [ 'LG', 'Optimus Chat', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C555-M10-D1.xml' => [ 'LG', 'Optimus Chat', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-E720-M6-D2.xml' => [ 'LG', 'Optimus Chic', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-E720b-M6-D1.xml' => [ 'LG', 'Optimus Chic', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P720-M3-D2.xml' => [ 'LG', 'Optimus Chic', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P720h-M3-D2.xml' => [ 'LG', 'Optimus Chic', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGL38C-M12-D1.xml' => [ 'LG', 'Optimus Dynamic', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L39C-M12-D1.xml' => [ 'LG', 'Optimus Dynamic II', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/LG/VM696-VMUB/1.0/UAProf.xml' => [ 'LG', 'Optimus Elite', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L40g-M6-D1.xml' => [ 'LG', 'Optimus Extreme', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-2011011301/LS720ZV8.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-2012083001/LS720ZV8.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-BOOST//LG/LS720-BOOST/LS720ZV8.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-BOOST/LS720ZV6.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-BOOST/LS720ZV8.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-Chameleon/latest' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-SPRINT/LS720Z06.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-SPRINT/LS720ZV7.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-SPRINT/LS720ZV8.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-VIRGIN//LG/LS720-VIRGIN/LS720ZV8.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-VIRGIN/LS720ZV5.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-VIRGIN/LS720ZV6.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-VIRGIN/LS720ZV7.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS720-VIRGIN/LS720ZV8.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MS659-M10-D1.xml' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P655H-M3-D1.xml' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P659-M10-D1.xml' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/LG/LS720-VIRGIN/LS720ZV6.rdf' => [ 'LG', 'Optimus F3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D520-M10-D1.xml' => [ 'LG', 'Optimus F3Q', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P875-M10-D1.xml' => [ 'LG', 'Optimus F5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P875-M3-D1.xml' => [ 'LG', 'Optimus F5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P875h-M3-D1.xml' => [ 'LG', 'Optimus F5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D500-M10-D1.xml' => [ 'LG', 'Optimus F6', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D500-M3-D1-KK.xml' => [ 'LG', 'Optimus F6', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D505-M3-D1-KK.xml' => [ 'LG', 'Optimus F6', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D505-M3-D1.xml' => [ 'LG', 'Optimus F6', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D505-M6-D1-KK.xml' => [ 'LG', 'Optimus F6', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MS500-M10-D1-KK.xml' => [ 'LG', 'Optimus F6', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MS500-M10-D1.xml' => [ 'LG', 'Optimus F6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG870-BOOST/LG870ZV1.rdf' => [ 'LG', 'Optimus F7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG870-BOOST/LG870ZV4.rdf' => [ 'LG', 'Optimus F7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG870-BOOST/LG870ZV5.rdf' => [ 'LG', 'Optimus F7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG870-Chameleon/latest' => [ 'LG', 'Optimus F7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG870-SPRINT/LG870ZV4.rdf' => [ 'LG', 'Optimus F7', 'Android', DeviceType::MOBILE ], + 'http://mms.ntwls.net/uaprofs/AS780.xml' => [ 'LG', 'Optimus F7', 'Android', DeviceType::MOBILE ], + 'http://pix.cspire.com/UA/profile/lg/as780/as780.xml' => [ 'LG', 'Optimus F7', 'Android', DeviceType::MOBILE ], + 'http://uaprof.ntelospcs.net/AS780.xml' => [ 'LG', 'Optimus F7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS970-2011011301/LS970ZVC.rdf' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS970-Chameleon/latest' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS970-SPRINT/LS970ZV7.rdf' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS970-SPRINT/LS970ZV9.rdf' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS970-SPRINT/LS970ZVA.rdf' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS970-SPRINT/LS970ZVB.rdf' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS970-SPRINT/LS970ZVC.rdf' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/ Optimus G-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E970-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E970-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E970-M6-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E971-M10-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E973-M10-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E973-M6-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E973-parrot-M10-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975-M10-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975-M5-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975-M6-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975K-M20-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975K-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975T-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E975w-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E976-M10-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E976-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E977-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E977-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E987-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E987-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180K-M10-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180K-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180K-M9-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180L-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180L-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180S-M3-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180S-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F180S-M9-D1-KK.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LS970-M3-D1.xml' => [ 'LG', 'Optimus G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/980 4G-M12-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/980 4G-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/980 4G-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E980-M10-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E980-M10-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E980-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E980-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E980-M9-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E980h-M10-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E980h-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E981h-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E981h-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E985-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E985T-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E986-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E986-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E986-M5-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E988-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E988-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E988-M5-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E988-M9-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E989-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E989-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F240K-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F240L-M10-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F240L-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F240L-M3-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F240L-M9-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F240S-M3-D1-KK.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/VS980-M10-D1.xml' => [ 'LG', 'Optimus G Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F220K-M3-D1-KK.xml' => [ 'LG', 'Optimus GK', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F220K-M9-D1-KK.xml' => [ 'LG', 'Optimus GK', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540f_M3_D1_J.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540f_MR_M3_D1_J.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_M3_D2_CL.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_M6_D1_J.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_M6_D2_CL_J.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_M6_D2_CL_J_Y.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_MR_M3_D2_CL.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_MR_M3_D2_CL_J.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_MR_M6_D1_J.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/GT540_MR_M6_D2_CL_J.xml' => [ 'LG', 'Optimus GT540', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E510-M6-D2.xml' => [ 'LG', 'Optimus Hub', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E510f-M6-D2.xml' => [ 'LG', 'Optimus Hub', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E510g-M6-D2.xml' => [ 'LG', 'Optimus Hub', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E410-M3-D1.xml' => [ 'LG', 'Optimus L1 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E410B-M6-D1.xml' => [ 'LG', 'Optimus L1 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E410f-M3-D1.xml' => [ 'LG', 'Optimus L1 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E410g-M10-D1.xml' => [ 'LG', 'Optimus L1 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E410g-M3-D1.xml' => [ 'LG', 'Optimus L1 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E410i-M3-D1.xml' => [ 'LG', 'Optimus L1 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E411g-M3-D1.xml' => [ 'LG', 'Optimus L1 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E415f-M3-D1.xml' => [ 'LG', 'Optimus L1 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E420-M3-D1.xml' => [ 'LG', 'Optimus L1 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E475f-M3-D1.xml' => [ 'LG', 'Optimus L1 II Tri', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E400-M6-D2.xml' => [ 'LG', 'Optimus L3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E400b-M10-D1.xml' => [ 'LG', 'Optimus L3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E400R-M6-D1.xml' => [ 'LG', 'Optimus L3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E405-M6-D2.xml' => [ 'LG', 'Optimus L3 Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E425-M3-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E425f-M10-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E425f-M20-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E425f-M3-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E425g-M3-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E430-M10-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E430-M3-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E430-M5-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E430-M6-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E431g-M3-D1.xml' => [ 'LG', 'Optimus L3 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E435-M3-D1.xml' => [ 'LG', 'Optimus L3 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E435f-M3-D1.xml' => [ 'LG', 'Optimus L3 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E435g-M3-D1.xml' => [ 'LG', 'Optimus L3 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E435k-M3-D1.xml' => [ 'LG', 'Optimus L3 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E440-M3-D1.xml' => [ 'LG', 'Optimus L4 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E440g-M10-D1.xml' => [ 'LG', 'Optimus L4 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E465f-M3-D1.xml' => [ 'LG', 'Optimus L4 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E465g-M3-D1.xml' => [ 'LG', 'Optimus L4 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E445-M3-D1.xml' => [ 'LG', 'Optimus L4 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E467f-M3-D1.xml' => [ 'LG', 'Optimus L4 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E470f-M3-D1.xml' => [ 'LG', 'Optimus L4 II Triple', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E610-M10-D1.xml' => [ 'LG', 'Optimus L5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E610-M3-D1.xml' => [ 'LG', 'Optimus L5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E610-M5-D1.xml' => [ 'LG', 'Optimus L5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E610v-M3-D1.xml' => [ 'LG', 'Optimus L5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E612f-M10-D1.xml' => [ 'LG', 'Optimus L5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E612f-M3-D1.xml' => [ 'LG', 'Optimus L5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E612g-M3-D1.xml' => [ 'LG', 'Optimus L5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E617G-M6-D1.xml' => [ 'LG', 'Optimus L5', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E615-M3-D1.xml' => [ 'LG', 'Optimus L5 Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E615f-M3-D1.xml' => [ 'LG', 'Optimus L5 Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E450-M3-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E450B-M6-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E450f-M10-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E450f-M3-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E460-M10-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E460-M3-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E460-M5-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E460-M6-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E460f-M3-D1.xml' => [ 'LG', 'Optimus L5 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E455-M3-D1-KK.xml' => [ 'LG', 'Optimus L5 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E455-M3-D1.xml' => [ 'LG', 'Optimus L5 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E455f-M3-D1.xml' => [ 'LG', 'Optimus L5 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P700-M3-D1.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P700-M6-D2.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P705-M3-D1.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P705-M6-D2.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P705f-M3-D1.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P705g-M10-D1.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P705g-M3-D1.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P705g-M6-D1.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P708g-M10-D1.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P708g-M3-D1.xml' => [ 'LG', 'Optimus L7', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P710-M10-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P710-M3-D1-KK.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P710-M3-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P710-M5-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P710-M6-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P712-M3-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P713-M3-D1-KK.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P713-M3-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P713GO-M3-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P713TR-M5-D1-KK.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P714-M10-D1-KK.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P714-M10-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P714-M3-D1-KK.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P714-M3-D1.xml' => [ 'LG', 'Optimus L7 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P715-M3-D1-KK.xml' => [ 'LG', 'Optimus L7 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P715-M3-D1.xml' => [ 'LG', 'Optimus L7 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P716-M3-D1-KK.xml' => [ 'LG', 'Optimus L7 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P716-M3-D1.xml' => [ 'LG', 'Optimus L7 II Dual', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D700-M6-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/MS769-M10-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P760-M6-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P765-M6-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P768-M10-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P768-M3-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P768-M6-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P769-M10-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P769-M3-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P778-M3-D1.xml' => [ 'LG', 'Optimus L9', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D605-M3-D1-KK.xml' => [ 'LG', 'Optimus L9 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D605-M3-D1.xml' => [ 'LG', 'Optimus L9 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D605-M5-D1-KK.xml' => [ 'LG', 'Optimus L9 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D605-M6-D1-KK.xml' => [ 'LG', 'Optimus L9 II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P935-M10-D1-ICS.xml' => [ 'LG', 'Optimus LTE', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P935-M10-D1.xml' => [ 'LG', 'Optimus LTE', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P936-M3-D1.xml' => [ 'LG', 'Optimus LTE', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F260S-M3-D1-KK.xml' => [ 'LG', 'Optimus LTE III', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F260S-M9-D1-KK.xml' => [ 'LG', 'Optimus LTE III', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/a_ygkA6q45TBK1IF/LGMS395-M10-D1.xml' => [ 'LG', 'Optimus M', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/LG-MS690.xml' => [ 'LG', 'Optimus M', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/LG-MS695.xml' => [ 'LG', 'Optimus M+', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P350-M6-D1.xml' => [ 'LG', 'Optimus Me', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P350-M6-D2.xml' => [ 'LG', 'Optimus Me', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P350f-M6-D1.xml' => [ 'LG', 'Optimus Me', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P350g-M6-D1.xml' => [ 'LG', 'Optimus Me', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/L45C/latest' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/L45C/LGL45CT1.rdf' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/L45C/LGL45CT2.rdf' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P690-M6-D2.xml' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P690b-M6-D1.xml' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P690f-M6-D1.xml' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P692-M6-D2.xml' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P698-M6-D2.xml' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P698f-M6-D2.xml' => [ 'LG', 'Optimus Net', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P500-M6-D1.xml' => [ 'LG', 'Optimus One', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P500h-M6-D1.xml' => [ 'LG', 'Optimus One', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P500h_iw-M6-D1.xml' => [ 'LG', 'Optimus One', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P500_iw-M6-D1.xml' => [ 'LG', 'Optimus One', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P503-M6-D1.xml' => [ 'LG', 'Optimus One', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P504-M10-D1.xml' => [ 'LG', 'Optimus One', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C660-M6-D1.xml' => [ 'LG', 'Optimus Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C660h-M6-D1-TCL.xml' => [ 'LG', 'Optimus Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C660h-M6-D1-USC.xml' => [ 'LG', 'Optimus Pro', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C660h-M6-D1.xml' => [ 'LG', 'Optimus Pro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/L55C/LGL55CV1.rdf' => [ 'LG', 'Optimus Q', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/L55C/LGL55CV3.rdf' => [ 'LG', 'Optimus Q', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS670/LS670ZV8.rdf' => [ 'LG', 'Optimus S', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS670/LS670ZV9.rdf' => [ 'LG', 'Optimus S', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS670/LS670ZVD.rdf' => [ 'LG', 'Optimus S', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS670/LS670ZVH.rdf' => [ 'LG', 'Optimus S', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS670/LS670ZVJ.rdf' => [ 'LG', 'Optimus S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/LGE/VM701-VMUB/1.0/UAProf.xml' => [ 'LG', 'Optimus Slider', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E730-M6-D2.xml' => [ 'LG', 'Optimus Sol', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E730f-M6-D2.xml' => [ 'LG', 'Optimus Sol', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P509-M10-D1.xml' => [ 'LG', 'Optimus T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/lg/vm670/1.0/VMU_VM670_UAProf.xml' => [ 'LG', 'Optimus V', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P895-M6-D2.xml' => [ 'LG', 'Optimus Vu', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P895qb-M10-D1.xml' => [ 'LG', 'Optimus Vu', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P895qb-M6-D2.xml' => [ 'LG', 'Optimus Vu', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F200L-M3-D1-KK.xml' => [ 'LG', 'Optimus Vu II', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P505-M6-D1.xml' => [ 'LG', 'Phoenix', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P505R-M6-D1.xml' => [ 'LG', 'Phoenix', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/PLS225/WL225V04.rdf' => [ 'LG', 'PLS225', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/PLS350/LX35VN02.rdf' => [ 'LG', 'PLS350', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/PM225/PM225V02.rdf' => [ 'LG', 'PM-225', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/PM325/PM325V16.rdf' => [ 'LG', 'PM-325', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P940-M6-D2.xml' => [ 'LG', 'PRADA 3.0', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P940h-M6-D2.xml' => [ 'LG', 'PRADA 3.0', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/qfss6rfI__J51f2o/LGL61AL-M10-D1.xml' => [ 'LG', 'Premier', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LGLS620-Chameleon/latest' => [ 'LG', 'Realm', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS620-BOOST/LS620ZV3.rdf' => [ 'LG', 'Realm', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS620-BOOST/LS620ZV4.rdf' => [ 'LG', 'Realm', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/xDR2-7TjP_4JVIDb/LGL43AL-M10-D1.xml' => [ 'LG', 'Rebel', 'Android', DeviceType::MOBILE ], + 'http://wapuaprof.wap.mycricket.com/lg/LG-LW770.xml' => [ 'LG', 'Regard', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LX260/LX260V09.rdf' => [ 'LG', 'Rumor LX260', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LX260/LX260V0a.rdf' => [ 'LG', 'Rumor LX260', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG272/LG272ZV8.rdf' => [ 'LG', 'Rumor Reflex', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LN272/LN272ZV4.rdf' => [ 'LG', 'Rumor Reflex', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LN272/LN272ZV7.rdf' => [ 'LG', 'Rumor Reflex', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LN272/LN272ZV8.rdf' => [ 'LG', 'Rumor Reflex', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LN272S/LN272SV2.rdf' => [ 'LG', 'Rumor Reflex S', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LN510/LN510ZVD.rdf' => [ 'LG', 'Rumor Touch', 'Brew', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/lg/vm510/1.0/VMU_VM510_UAProf.xml' => [ 'LG', 'Rumor Touch', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-S5300.xml' => [ 'LG', 'S5300', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lge/vs920/vs920.xml' => [ 'LG', 'Spectrum', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lge/vs930/vs930.xml' => [ 'LG', 'Spectrum 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H440-M3-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H440AR-M3-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H440n-M10-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H440n-M20-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H440n-M3-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H440n-M5-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H440n-M6-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/AK1bQ_G8_-S9ccPj/H442-M3-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/H440n-M3-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/ojFJqSe94jShCXCN/H443-M10-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/ojFJqSe94jShCXCN/H445-M3-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/yZxLjC9A3ey4GDAw/H420-M10-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/yZxLjC9A3ey4GDAw/H420-M3-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/yZxLjC9A3ey4GDAw/H420-M6-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/yZxLjC9A3ey4GDAw/H422-M3-D1.xml' => [ 'LG', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/LG-MS870.xml' => [ 'LG', 'Spirit 4G', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/_2YOMy__ZoqF7__g/LGL81AL-M10-D1.xml' => [ 'LG', 'Stylo 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/L15G-M10-D1.xml' => [ 'LG', 'Sunrise', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LGL15G-M10-D1.xml' => [ 'LG', 'Sunrise', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/Q9h6lw8rC-nijrc6/LGL15G-M10-D1.xml' => [ 'LG', 'Sunrise', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/yObOcsVFUyAgTj5W/LGL33L-M10-D1.xml' => [ 'LG', 'Sunset', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T310i-M3-D1-NS.xml' => [ 'LG', 'T310i', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T325-M3-D1.xml' => [ 'LG', 'T325', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T370-M3-D1.xml' => [ 'LG', 'T370', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T375-M3-D1.xml' => [ 'LG', 'T375', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T375.xml' => [ 'LG', 'T375', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T385.xml' => [ 'LG', 'T385', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T385b-M3-D1.xml' => [ 'LG', 'T385b', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T395.xml' => [ 'LG', 'T395', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T500-M3-D1.xml' => [ 'LG', 'T500', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T505-M3-D1.xml' => [ 'LG', 'T505', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T510-M3-D1.xml' => [ 'LG', 'T510', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T5100N.xml' => [ 'LG', 'T5100', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T5100V.xml' => [ 'LG', 'T5100', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T515-M3-D1.xml' => [ 'LG', 'T515', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T565-M3-D1.xml' => [ 'LG', 'T565', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T565b-M3-D1.xml' => [ 'LG', 'T565b', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T580-M3-D1.xml' => [ 'LG', 'T580', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T585-M3-D1.xml' => [ 'LG', 'T585', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-T595-M3-D1.xml' => [ 'LG', 'T595', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-TB200.xml' => [ 'LG', 'TB200', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P925-M6-D1-ICS.xml' => [ 'LG', 'Thrill', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P925-M6-D1.xml' => [ 'LG', 'Thrill', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P925g-M6-D1-ICS.xml' => [ 'LG', 'Thrill', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P925g-M6-D1.xml' => [ 'LG', 'Thrill', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/D857-M3-D1.xml' => [ 'LG', 'Titan', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/60XyU11_CW-MsU_c/LGL51AL-M10-D1.xml' => [ 'LG', 'Treasure', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-C333-M3-D1.xml' => [ 'LG', 'Tri Chip C333', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-2012071301/LS660ZV5.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-2012071301/LS660ZV6.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-BOOST/LS660ZV4.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-BOOST/LS660ZV5.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-BOOST/LS660ZV6.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-Chameleon/latest' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-SPRPRE/LS660ZV3.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-SPRPRE/LS660ZV4.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-SPRPRE/LS660ZV5.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-VIRGIN/LS660ZV3.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-VIRGIN/LS660ZV4.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-VIRGIN/LS660ZV5.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS660-VIRGIN/LS660ZV6.rdf' => [ 'LG', 'Tribute', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-TU575.xml' => [ 'LG', 'TU575', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-TU720.xml' => [ 'LG', 'TU720 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-TU915.xml' => [ 'LG', 'TU915 Vu', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-U300.xml' => [ 'LG', 'U300', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-U400.xml' => [ 'LG', 'U400', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-U830.xml' => [ 'LG', 'U830 Chocolate', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-U900.xml' => [ 'LG', 'U900', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-U970.xml' => [ 'LG', 'U970 Shine', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/eNsCGw_apwMhnXPM/H901-M3-D1.xml' => [ 'LG', 'V10', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/eNsCGw_apwMhnXPM/H960-M10-D1.xml' => [ 'LG', 'V10', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/eNsCGw_apwMhnXPM/H960-M3-D1.xml' => [ 'LG', 'V10', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/eNsCGw_apwMhnXPM/H961N-M3-D1.xml' => [ 'LG', 'V10', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/eNsCGw_apwMhnXPM/H968-M3-D1.xml' => [ 'LG', 'V10', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/_W4s8Utf_eec5qYV/H900-M3-D1.xml' => [ 'LG', 'V10', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG730-6100000231/LG730ZV5.rdf' => [ 'LG', 'Venice', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG730-BOOST/LG730ZV5.rdf' => [ 'LG', 'Venice', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG730-BOOST/LG730ZV6.rdf' => [ 'LG', 'Venice', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG730-BOOST/LG730ZV8.rdf' => [ 'LG', 'Venice', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LG730-Chameleon/latest' => [ 'LG', 'Venice', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/VI125/VI125V10.rdf' => [ 'LG', 'VI-125', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/VI5225/LX540V08.rdf' => [ 'LG', 'VI-5225', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS840/LS840ZVC.rdf' => [ 'LG', 'Viper', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS840/LS840ZVD.rdf' => [ 'LG', 'Viper', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS840/LS840ZVI.rdf' => [ 'LG', 'Viper', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS840/LS840ZVK.rdf' => [ 'LG', 'Viper', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-2012071301/LS740ZV6.rdf' => [ 'LG', 'Volt', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS740-SPRPRE/LS740ZV4.rdf' => [ 'LG', 'Volt', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/LG/LS751-Chameleon/latest' => [ 'LG', 'Volt 2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/F300L-M3-D1.xml' => [ 'LG', 'Vu 3', 'Android', DeviceType::MOBILE ], + 'http://mms.cellcom.com/uaprofs/lg-vx5000.xml' => [ 'LG', 'VX5000', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx8350/vx8350.xml' => [ 'LG', 'VX8350', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx8550/vx8550.xml' => [ 'LG', 'VX8550 Chocolate', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx8600/vx8600.xml' => [ 'LG', 'VX8600', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx8610/vx8610.xml' => [ 'LG', 'VX8610 Decoy', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx8700/vx8700.xml' => [ 'LG', 'VX8700', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx8800/vx8800.xml' => [ 'LG', 'VX8800 Venus', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx9100/vx9100.xml' => [ 'LG', 'VX9100 enV2', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx9400/vx9400.xml' => [ 'LG', 'VX9400', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx9700/vx9700.xml' => [ 'LG', 'VX9700 Dare', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/lg/vx9900/vx9900.xml' => [ 'LG', 'VX9900 enV', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/sMGZI_CVcpnY_oHi/H410-M10-D1.xml' => [ 'LG', 'Wine Smart', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/sMGZI_CVcpnY_oHi/H410-M3-D1.xml' => [ 'LG', 'Wine Smart', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/sMGZI_CVcpnY_oHi/H410-M6-D1.xml' => [ 'LG', 'Wine Smart', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/_aYtYmwT_LRbNYO_/LGL53BL-M10-D1.xml' => [ 'LG', 'X Style', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/31L-M10-D1.xml' => [ 'LG', 'X3', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-UAP-X330-v0.1.xml' => [ 'LG', 'X330T', null, DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-X350.xml' => [ 'LG', 'X350', 'MTK', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4TEL_SS990GPRS.xml' => [ 'M4Tel', 'E-Motion', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4TEL_SS550GPRS.xml' => [ 'M4Tel', 'Genius', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS1060GPRS.xml' => [ 'M4Tel', 'M4Live', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS1080GPRS.xml' => [ 'M4Tel', 'Max One', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS1090GPRS.xml' => [ 'M4Tel', 'Max Ultra', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4TEL_SS880GPRS.xml' => [ 'M4Tel', 'Mirage', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS1070GPRS.xml' => [ 'M4Tel', 'Sense', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS1050GPRS.xml' => [ 'M4Tel', 'SS1050', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS4040GPRS.xml' => [ 'M4Tel', 'SS4040', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS4041GPRS.xml' => [ 'M4Tel', 'SS4041', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS4045GPRS.xml' => [ 'M4Tel', 'SS4045', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS4350GPRS.xml' => [ 'M4Tel', 'SS4350', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS4450GPRS.xml' => [ 'M4Tel', 'SS4450', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS4451GPRS.xml' => [ 'M4Tel', 'SS4451', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS4452GPRS.xml' => [ 'M4Tel', 'SS4452', 'Android', DeviceType::MOBILE ], + 'http://www.m4tel.com/product/profiles/uaprof/M4_SS4456GPRS.xml' => [ 'M4Tel', 'SS4456', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-SKATE.xml, http://www.zte.com.cn/mobile/uaprof/ZTE-SKATE.xml'=> [ 'Medion', 'Life P4310', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MT7A.xml' => [ 'MegaFon', 'Login', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/MegaFon_V9+.xml' => [ 'MegaFon', 'V9+', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/smart_a17.xml' => [ 'MEO', 'Smart A17', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MEO Smart A40.xml' => [ 'MEO', 'Smart A40', 'Android', DeviceType::MOBILE ], + 'http://mobileupdate.sdt.pt/meo/WBW5518-UAProfile.xml' => [ 'MEO', 'Smart A66', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A104.xml' => [ 'Micromax', 'A104 Canvas Fire', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOA110Q.xml' => [ 'Micromax', 'A110 Canvas 2', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A177.xml' => [ 'Micromax', 'A177 Canvas Juice', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A190.xml' => [ 'Micromax', 'A190 Canvas HD Plus', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A315.xml' => [ 'Micromax', 'A315 Canvas 4 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A316.xml' => [ 'Micromax', 'A316 Canvas Hue 2', 'Android', DeviceType::MOBILE ], + 'http://ibu.joy3g.org/ibu/MCX_A54_20121119_ua.xml' => [ 'Micromax', 'A54 Ninja', 'Android', DeviceType::MOBILE ], + 'http://ibu.joy3g.org/ibu/MCX_A56_20120522_ua.xml' => [ 'Micromax', 'A56 Ninja 2', 'Android', DeviceType::MOBILE ], + 'http://ibu.joy3g.org/ibu/MCX_A57_20120725_ua.xml' => [ 'Micromax', 'A57 Ninja 3', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A064.xml' => [ 'Micromax', 'A64 Bolt', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A065.xml' => [ 'Micromax', 'A65 Smarty', 'Android', DeviceType::MOBILE ], + 'http://ibu.joy3g.org/ibu/MCX_A87_20120725_ua.xml' => [ 'Micromax', 'A87 Ninja 4', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_A093.xml' => [ 'Micromax', 'A93 Canvas Elanza', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_AQ5001.xml' => [ 'Micromax', 'AQ5001 Canvas Juice 2', 'Android', DeviceType::MOBILE ], + 'http://202.58.121.191/MTK_Phone_KK_UAprofile.xml' => [ 'Micromax', 'Canvas Tab P470', 'Android', DeviceType::TABLET ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_Q380.xml' => [ 'Micromax', 'Q380 Canvas Spark', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax Q391.xml' => [ 'Micromax', 'Q391 Canvas Doodle 4', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_Q394.xml' => [ 'Micromax', 'Q394 Canvas Juice 3+', 'Android', DeviceType::MOBILE ], + 'http://www.uniscope.com.cn/Micromax_Q415_UAprofile.xml' => [ 'Micromax', 'Q415 Spark Vdeo', 'Android', DeviceType::MOBILE ], + 'Micromax X450' => [ 'Micromax', 'X450', null, DeviceType::MOBILE ], + 'http://go.microsoft.com/fwlink/?LinkId=164226' => [ 'Microsoft', 'Kin ONE', 'Kin OS', DeviceType::MOBILE ], + 'http://zune.net/uaprof/ZuneHD.xml' => [ 'Microsoft', 'Zune HD', null, ], + 'http://www.mio-tech.com.tw/download/smartphone/Mio8390r101.xml' => [ 'Mio', '8390', null, DeviceType::MOBILE ], + 'http://www.mio-tech.com.tw/download/smartphone/MioA700.xml' => [ 'Mio', 'A700', null, DeviceType::MOBILE ], + 'http://www.mio-tech.com.tw/download/smartphone/MioA701.xml' => [ 'Mio', 'A701', null, DeviceType::MOBILE ], + 'http://www.mitsubishi-telecom.com/profiles/eclipse.ua' => [ 'Mitsubishi', 'Trium Eclipse', null, DeviceType::MOBILE ], + 'http://www.mitsubishi-telecom.com/profiles/eclipse_mserv.ua' => [ 'Mitsubishi', 'Trium Eclipse', null, DeviceType::MOBILE ], + 'http://www.mitsubishi-telecom.com/profiles/mt560.ua' => [ 'Mitsubishi', 'Trium M 320', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/M9000.xml' => [ 'MobiFone', 'M9000', 'Android', DeviceType::MOBILE ], + 'http://imatemms.imate.com/gen/UAProf_JAMA_v1.xml' => [ 'MobileXP', 'JAMA', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MOCHE SMART A16.xml' => [ 'Moche', 'Smart A16', 'Android', DeviceType::MOBILE ], + 'http://asmobile.ehosting.com.tw/uaprof/Virgin_1.xml' => [ 'Modelabs', 'Virgin', null, DeviceType::MOBILE ], + 'http://www.modumobile.com/ua/modu-t_1_browser.xml' => [ 'Modu', 'T', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/moii_E598.xml' => [ 'moii', 'E598', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Momodesign_MD_Droid.xml' => [ 'Momodesign', 'MD Droid', 'Android', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/a1000/Profile/a1000.rdf' => [ 'Motorola', 'A1000', 'UIQ', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/MOT/MOT_A3300c_4_20091029.xml' => [ 'Motorola', 'A3300', 'Windows Mobile', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/a780/Profile/a780.rdf' => [ 'Motorola', 'A780', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/a840/a840v1.xml' => [ 'Motorola', 'A840', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOT603KIT/551Q117PAX33.rdf' => [ 'Motorola', 'ADMIRAL', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOT603KIT/551Q117PAX63.rdf' => [ 'Motorola', 'ADMIRAL', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOT603KIT/551Q117PAX69.rdf' => [ 'Motorola', 'ADMIRAL', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOT603KIT/551Q117PAX79.rdf' => [ 'Motorola', 'ADMIRAL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb860/Profile/motomb860.rdf' => [ 'Motorola', 'ATRIX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb860/Profile/motomb860emara.rdf' => [ 'Motorola', 'ATRIX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb861/Profile/motomb861.rdf' => [ 'Motorola', 'ATRIX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoME860/profile/MotoME860.rdf' => [ 'Motorola', 'ATRIX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb865/Profile/motomb865.rdf' => [ 'Motorola', 'ATRIX 2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt687/Profile/xt687.rdf' => [ 'Motorola', 'ATRIX TV', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB300/profile/MotoMB300.rdf' => [ 'Motorola', 'BACKFLIP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb300/Profile/MotoMB300Eclair.rdf' => [ 'Motorola', 'BACKFLIP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb300/Profile/motomb300la.rdf' => [ 'Motorola', 'BACKFLIP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb520/Profile/MotoMB520.rdf' => [ 'Motorola', 'BRAVO', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb520/Profile/MotoMB520FroYo.rdf' => [ 'Motorola', 'BRAVO', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ex118/Profile/EX118.rdf' => [ 'Motorola', 'Brea EX119', 'MTK', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/C168/Profile/c168.rdf' => [ 'Motorola', 'C168', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/C168i/Profile/C168i-cingular.rdf' => [ 'Motorola', 'C168i', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/C290/2440.rdf' => [ 'Motorola', 'C290', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/c357/Profile/c357.rdf' => [ 'Motorola', 'C357', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb502/Profile/MotoMB502.rdf' => [ 'Motorola', 'CHARM', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB200/profile/MotoMB200.rdf' => [ 'Motorola', 'CLIQ', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB501/profile/MotoMB501.rdf' => [ 'Motorola', 'CLIQ XT', 'Android', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/cn620/profile/cn620.rdf' => [ 'Motorola', 'CN620', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB525+/profile/MotoMB525+.rdf' => [ 'Motorola', 'DEFY', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB525/profile/MotoMB525.rdf' => [ 'Motorola', 'DEFY', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB525/profile/MotoMB525Telstra.rdf' => [ 'Motorola', 'DEFY', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt535/Profile/XT535.rdf' => [ 'Motorola', 'DEFY', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt535/Profile/xt535I.rdf' => [ 'Motorola', 'DEFY', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt535/Profile/xt535_TNZ.rdf' => [ 'Motorola', 'DEFY', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt536/Profile/xt536.rdf' => [ 'Motorola', 'DEFY Diana', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt536/Profile/xt536I.rdf' => [ 'Motorola', 'DEFY Diana', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt320/Profile/xt320.rdf' => [ 'Motorola', 'DEFY Mini', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt321/Profile/xt321.rdf' => [ 'Motorola', 'DEFY Mini', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt560/Profile/xt560.rdf' => [ 'Motorola', 'DEFY Pro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt555c/Profile/xt555c.rdf' => [ 'Motorola', 'DEFY XT', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt556/Profile/xt556.rdf' => [ 'Motorola', 'DEFY XT', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt557/Profile/xt557.rdf' => [ 'Motorola', 'DEFY XT', 'Android', DeviceType::MOBILE ], + 'http://uaprof.ntelospcs.net/xt556.xml' => [ 'Motorola', 'DEFY XT', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB525/profile/MotoMB526.rdf' => [ 'Motorola', 'DEFY+', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb526/Profile/motomb526.rdf' => [ 'Motorola', 'DEFY+', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb886/Profile/motomb886.rdf' => [ 'Motorola', 'DINARA', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/a955/a955.xml' => [ 'Motorola', 'Droid 2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/a956/a956.xml' => [ 'Motorola', 'Droid 2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt682/Profile/xt682.rdf' => [ 'Motorola', 'Droid 3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/xt862/xt862.xml' => [ 'Motorola', 'Droid 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/XT897-2011011301/771Q6SPR125ASA14.rdf' => [ 'Motorola', 'Droid 4', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/xt894/xt894.xml' => [ 'Motorola', 'Droid 4', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/xt875/xt875.xml' => [ 'Motorola', 'Droid Bionic', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt610/Profile/motoxt610.rdf' => [ 'Motorola', 'Droid Pro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/xt610/xt610.xml' => [ 'Motorola', 'Droid Pro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt912/Profile/motoxt912.rdf' => [ 'Motorola', 'Droid RAZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/xt912/xt912.xml' => [ 'Motorola', 'Droid RAZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt925/Profile/motoxt925.rdf' => [ 'Motorola', 'Droid RAZR HD', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/xt926/xt926.xml' => [ 'Motorola', 'Droid RAZR HD', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/xt907/xt907.xml' => [ 'Motorola', 'Droid RAZR M', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/mb810/mb810.xml' => [ 'Motorola', 'Droid X', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/mb870/mb870.xml' => [ 'Motorola', 'Droid X2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/mz617/mz617.xml' => [ 'Motorola', 'Droid XYBOARD 10.1', 'Android', DeviceType::TABLET ], + 'http://uaprof.vtext.com/mot/mz609/mz609.xml' => [ 'Motorola', 'Droid XYBOARD 8.2', 'Android', DeviceType::TABLET ], + 'http://motorola.handango.com/phoneconfig/e365/Profile/e365.rdf' => [ 'Motorola', 'E365', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/e680i/Profile/e680i.rdf' => [ 'Motorola', 'E680i', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/E770v/Profile/E770v.rdf' => [ 'Motorola', 'E770v', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/e790/Profile/e790.rdf' => [ 'Motorola', 'E790', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/e815/Profile/e815.rdf' => [ 'Motorola', 'E815', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Motorola_E815_BMX171P.rdf' => [ 'Motorola', 'E815', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb853/Profile/motomb853.rdf' => [ 'Motorola', 'Electrify', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/em25/Profile/em25.rdf' => [ 'Motorola', 'EM25', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/em30/Profile/em30.rdf' => [ 'Motorola', 'EM30', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/em325/Profile/em325.rdf' => [ 'Motorola', 'EM325', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/es405b/Profile/es405b.rdf' => [ 'Motorola', 'ES405B', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ex116/Profile/ex116.rdf' => [ 'Motorola', 'EX116', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ex128/Profile/EX128_27390a3c7426da5686f20302b82926e1.rdf' => [ 'Motorola', 'EX128', null, DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/MOT/MOT_EX200_3_20100728.xml' => [ 'Motorola', 'EX200', 'Brew', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ex226/Profile/ex226.rdf' => [ 'Motorola', 'EX226', 'MTK', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt311/Profile/xt311.rdf' => [ 'Motorola', 'FIRE', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt530/Profile/xt530.rdf' => [ 'Motorola', 'FIRE XT', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/XT531/Profile/XT531.rdf' => [ 'Motorola', 'FIRE XT', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB511/profile/MotoMB511.rdf' => [ 'Motorola', 'FLIPOUT', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb508/Profile/MotoMB508FroYo.rdf' => [ 'Motorola', 'FLIPSIDE', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/wx308/Profile/wx308.rdf' => [ 'Motorola', 'GLEAM+ WX308', 'MTK', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/ic402/1280.rdf' => [ 'Motorola', 'ic402 Blend', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/ic502/1292.rdf' => [ 'Motorola', 'ic502 Buzz', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/ic602/1500.rdf' => [ 'Motorola', 'ic602 Buzz+', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/ic902/2610.rdf' => [ 'Motorola', 'ic902 Deluxe', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt627/Profile/Motoxt627.rdf' => [ 'Motorola', 'Kairos XT627', 'Android', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/k1/Profile/k1.rdf' => [ 'Motorola', 'KRZR K1', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/moto/k1c/k1c.xml' => [ 'Motorola', 'KRZR K1c', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/K3/Profile/K3.rdf' => [ 'Motorola', 'KRZR K3', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/l6/Profile/l6.rdf' => [ 'Motorola', 'L6', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/l6i/Profile/l6i.rdf' => [ 'Motorola', 'L6i', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOTOXT603/' => [ 'Motorola', 'Master XT605', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoXT605/profile/MotoXT605.rdf' => [ 'Motorola', 'Master XT605', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/mc65/Profile/mc65.rdf' => [ 'Motorola', 'MC65 Wireless Rugged Mobile Computer', 'Windows Mobile', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/milestonext720/Profile/milestonext720.rdf' => [ 'Motorola', 'Milestone', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoA953/profile/MotoA953.rdf' => [ 'Motorola', 'Milestone 2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoA953/profile/MotoA953GB.rdf' => [ 'Motorola', 'Milestone 2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt860/Profile/motoxt860.rdf' => [ 'Motorola', 'Milestone 3', 'Android', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/A1200e/profile/A1200e.rdf' => [ 'Motorola', 'Ming A1200e', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/A1200i/profile/A1200i.rdf' => [ 'Motorola', 'Ming A1200i', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/em330/Profile/em330.rdf' => [ 'Motorola', 'MOTO EM330', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motome525+/Profile/motome525+.rdf' => [ 'Motorola', 'MOTO ME525', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.motorola.com/uaprof/MOT_MT620-1.0.xml' => [ 'Motorola', 'MOTO MT620', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMt870/profile/MotoMt870.rdf' => [ 'Motorola', 'MOTO MT870', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/SLV-L7c/0350.rdf' => [ 'Motorola', 'MOTO SLVR L7c', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt316/Profile/motoxt316.rdf' => [ 'Motorola', 'MOTO XT316', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt316/Profile/xt316.rdf' => [ 'Motorola', 'MOTO XT316', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt615/Profile/motoxt615.rdf' => [ 'Motorola', 'MOTO XT615', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt615/Profile/xt615.rdf' => [ 'Motorola', 'MOTO XT615', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt626/Profile/Motoxt626.rdf' => [ 'Motorola', 'MOTO XT626', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/MOT/MOT_XT681_1_20110930.XML' => [ 'Motorola', 'MOTO XT681', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/MOT/MOT_XT681_1_20111012.XML' => [ 'Motorola', 'MOTO XT681', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/Motorola-XT681.xml' => [ 'Motorola', 'MOTO XT681', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt685/Profile/xt685.rdf' => [ 'Motorola', 'MOTO XT685', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb860/Profile/motoxt882.rdf' => [ 'Motorola', 'MOTO XT882', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/w450/profile/w450.rdf' => [ 'Motorola', 'MOTOACTV W450', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ex430/Profile/ex430.rdf' => [ 'Motorola', 'MotoGO EX430', 'MTK', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ex108/Profile/ex108.rdf' => [ 'Motorola', 'MOTOKEY Mini EX108', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ex225/Profile/ex225.rdf' => [ 'Motorola', 'MOTOKEY Social EX225', 'MTK', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/mt680/Profile/mt680.rdf' => [ 'Motorola', 'MOTOLUXE MT680', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt611/Profile/xt611.rdf' => [ 'Motorola', 'MOTOSMART Flip', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/MOT/MOT_XT553_1_20120309.XML' => [ 'Motorola', 'MOTOSMART MIX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt550/Profile/xt550.rdf' => [ 'Motorola', 'MOTOSMART MIX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt303/Profile/xt303.rdf' => [ 'Motorola', 'MOTOSMART XT303', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt305/Profile/xt305.rdf' => [ 'Motorola', 'MOTOSMART XT305', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt389/Profile/xt389.rdf' => [ 'Motorola', 'MOTOSMART XT389', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt389/Profile/xt389_we.rdf' => [ 'Motorola', 'MOTOSMART XT389', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt390/Profile/xt390.rdf' => [ 'Motorola', 'MOTOSMART XT390', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/q-gsm/Profile/mot-a3100.rdf' => [ 'Motorola', 'MOTOSURF A3100', 'Windows', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/zn5/Profile/zn5.rdf' => [ 'Motorola', 'MOTOZINE ZN5', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/mpx/Profile/mpx.rdf' => [ 'Motorola', 'MPx', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/mpx200/Profile/mpx200.rdf' => [ 'Motorola', 'MPx200', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/mpx220/Profile/mpx220.rdf' => [ 'Motorola', 'MPx220', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomt917/profile/motomt917.rdf' => [ 'Motorola', 'MT917', 'Android', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/u6/Profile/u6.rdf' => [ 'Motorola', 'PEBL U6', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB200/profile/MotoMB200.rdf451A1.rdf' => [ 'Motorola', 'PHOTON', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOTOMB855/' => [ 'Motorola', 'PHOTON 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOTOMB855/451A1.rdf' => [ 'Motorola', 'PHOTON 4G', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motomb855/Profile/motomb855.rdf' => [ 'Motorola', 'PHOTON 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/XT897-SPRINT/771Q6SPR125ASA10.rdf' => [ 'Motorola', 'PHOTON Q', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/XT897-SPRINT/771Q6SPR125ASA14.rdf' => [ 'Motorola', 'PHOTON Q', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/XT897-SPRINT/771Q6SPR89ASA36.rdf' => [ 'Motorola', 'PHOTON Q', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/XT897/latest' => [ 'Motorola', 'PHOTON Q', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoXT621/profile/MotoXT621.rdf' => [ 'Motorola', 'Primus XT621', 'Android', DeviceType::MOBILE ], + 'http://uaporf.motorola.com/phoneconfig/MotoME632/profile/MotoME632.rdf' => [ 'Motorola', 'PRO+', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMB632/profile/MotoMB632.rdf' => [ 'Motorola', 'PRO+', 'Android', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/q-umts/Profile/mot-q-umts.rdf' => [ 'Motorola', 'Q', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/q-gsm/Profile/mot-q-gsm.rdf' => [ 'Motorola', 'Q', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/q-umts/Profile/mot-q-umts.rdf' => [ 'Motorola', 'Q', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/q-umts/Profile/mot-q9h.rdf' => [ 'Motorola', 'Q9h', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt910/Profile/motoxt910.rdf' => [ 'Motorola', 'RAZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt910k/Profile/motoxt910k.rdf' => [ 'Motorola', 'RAZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt890/Profile/motoxt890.rdf' => [ 'Motorola', 'RAZR i', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt890/Profile/motoxt890_jb.rdf' => [ 'Motorola', 'RAZR i', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/mt781/Profile/mt781.rdf' => [ 'Motorola', 'RAZR i', 'Android', DeviceType::MOBILE ], + 'http://uaprof.ntelospcs.net/motoxt908.xml' => [ 'Motorola', 'RAZR MAXX', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/MOT/MOT_XT889_1_20120217.XML' => [ 'Motorola', 'RAZR V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/mt887/Profile/mt887.rdf' => [ 'Motorola', 'RAZR V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt885/Profile/xt885.rdf' => [ 'Motorola', 'RAZR V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt885/Profile/xt885_ca.rdf' => [ 'Motorola', 'RAZR V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt885/Profile/xt885_ird.rdf' => [ 'Motorola', 'RAZR V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt886/Profile/xt886.rdf' => [ 'Motorola', 'RAZR V', 'Android', DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/razrv3x/Profile/razrv3x.rdf' => [ 'Motorola', 'RAZR V3', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/razrv3xx/Profile/RAZRV3xx.rdf' => [ 'Motorola', 'RAZR V3', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v3/Profile/v3.rdf' => [ 'Motorola', 'RAZR V3', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Motorola_V3c_070301P.rdf' => [ 'Motorola', 'RAZR V3c', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v3i/Profile/v3i.rdf' => [ 'Motorola', 'RAZR V3i', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v3r/Profile/v3r.rdf' => [ 'Motorola', 'RAZR V3r', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/razrv6/Profile/RAZRv6.rdf' => [ 'Motorola', 'RAZR V6', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MOTORAZRv9x/profile/MOTORAZRv9x.rdf' => [ 'Motorola', 'RAZR V9', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/v9/profile/v9.rdf' => [ 'Motorola', 'RAZR V9', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/VE20/0570.rdf' => [ 'Motorola', 'RAZR VE20', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/motorazrV8/Profile/motorazrv8.rdf' => [ 'Motorola', 'RAZR2 V8', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/V9m/2680.rdf' => [ 'Motorola', 'RAZR2 V9m', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/motorola/V9m-1.rdf' => [ 'Motorola', 'RAZR2 V9m', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/V950/0591.rdf' => [ 'Motorola', 'Renegade V950', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motorizrz10/Profile/motorizrz10.xml' => [ 'Motorola', 'RIZR Z10', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motorizrz8/profile/motorizrz8.rdf' => [ 'Motorola', 'RIZR Z8', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/e1/Profile/e1.rdf' => [ 'Motorola', 'ROKR E1', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/motorokre6/Profile/motorokre6.rdf' => [ 'Motorola', 'ROKR E6', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motorokre6/Profile/motorokre6.rdf' => [ 'Motorola', 'ROKR E6', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/e8/Profile/e8.rdf' => [ 'Motorola', 'ROKR E8', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/W5/Profile/W5.rdf' => [ 'Motorola', 'ROKR W5', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/w6/Profile/w6.rdf' => [ 'Motorola', 'ROKR W6', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/motorokrz6/Profile/motorokrz6.rdf' => [ 'Motorola', 'ROKR Z6', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/moto/z6m/z6m.xml' => [ 'Motorola', 'ROKR Z6m', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/motoxt300/Profile/motoxt300.rdf' => [ 'Motorola', 'SPICE', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/VA76r/Profile/VA76r.rdf' => [ 'Motorola', 'Tundra VA76r', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/u9/Profile/u9.rdf' => [ 'Motorola', 'U9', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v175/Profile/v175.rdf' => [ 'Motorola', 'V175', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v177/profile/v177.rdf' => [ 'Motorola', 'V177', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v190/Profile/v190.rdf' => [ 'Motorola', 'V190', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v191/Profile/v191.rdf' => [ 'Motorola', 'V191', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v197/Profile/v197.rdf' => [ 'Motorola', 'V197', null, DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/Motorola-V323i.xml' => [ 'Motorola', 'V323i', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/v325/v325v1.xml' => [ 'Motorola', 'V325', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/v360i/Profile/v360i.rdf' => [ 'Motorola', 'V360', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/motorola/v710.rdf' => [ 'Motorola', 'V710', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/v860/v860.xml' => [ 'Motorola', 'V860', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/ve/vev1.xml' => [ 'Motorola', 'Ve', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ve538/Profile/ve538.rdf' => [ 'Motorola', 'VE538', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/W213/Profile/W213.rdf' => [ 'Motorola', 'W213', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/w230/Profile/w230.rdf' => [ 'Motorola', 'W230', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/W270/Profile/W270.rdf' => [ 'Motorola', 'W270', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/w360/Profile/w360.rdf' => [ 'Motorola', 'W360', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/w370/Profile/w370.rdf' => [ 'Motorola', 'W370', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/W375/Profile/W375.rdf' => [ 'Motorola', 'W375', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/w385m/Profile/w385m.rdf' => [ 'Motorola', 'W385', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/W396/Profile/W396.rdf' => [ 'Motorola', 'W396', null, DeviceType::MOBILE ], + 'http://motorola.handango.com/phoneconfig/w510/Profile/w510.rdf' => [ 'Motorola', 'W510', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/mot/w755/w755v1.xml' => [ 'Motorola', 'W755', null, DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/MotoMZ616/Profile/MotoMZ616.rdf' => [ 'Motorola', 'XOOM 2', 'Android', DeviceType::TABLET ], + 'http://uaprof.motorola.com/phoneconfig/Xoom2/Profile/xoom2.rdf' => [ 'Motorola', 'XOOM 2', 'Android', DeviceType::TABLET ], + 'http://uaprof.motorola.com/phoneconfig/Xoom2me/Profile/xoom2me.rdf' => [ 'Motorola', 'XOOM 2', 'Android', DeviceType::TABLET ], + 'http://uaprof.motorola.com/phoneconfig/motomz601/Profile/motomz601.rdf' => [ 'Motorola', 'XOOM 3G', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Motorola/MOTB612ABB/BST20.rdf' => [ 'Motorola', 'XPRT', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOTOMB612/451110KNS17.rdf' => [ 'Motorola', 'XPRT', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOTOMB612/451110KNS46.rdf' => [ 'Motorola', 'XPRT', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Motorola/MOTOMB612/KRNSX41110.rdf' => [ 'Motorola', 'XPRT', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/xt788/Profile/xt788.rdf' => [ 'Motorola', 'XT788', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/MOT/MOT_XT928_1_20110914.XML' => [ 'Motorola', 'XT928', 'Android', DeviceType::MOBILE ], + 'http://uaprof.motorola.com/phoneconfig/ZN200/Profile/ZN200.rdf' => [ 'Motorola', 'ZN200', null, DeviceType::MOBILE ], + 'http://wap.nexustelco.com/uaprofile/MovistarD5.xml' => [ 'Movistar', 'Dual D5', 'Android', DeviceType::MOBILE ], + 'http://wap.nexustelco.com/uaprofile/GO1001.xml' => [ 'Movistar', 'Go Mobile 1001', 'Android', DeviceType::MOBILE ], + 'wap.nexustelco.com/uaprofile/GO984.xml' => [ 'Movistar', 'Go Mobile 504', 'Android', DeviceType::MOBILE ], + 'http://wap.nexustelco.com/uaprofile/GO775.xml' => [ 'Movistar', 'Go Mobile 775', 'Android', DeviceType::MOBILE ], + 'http://wap.nexustelco.com/uaprofile/GO778.xml' => [ 'Movistar', 'Go Mobile 778', 'Android', DeviceType::MOBILE ], + 'http://wap.nexustelco.com/uaprofile/GO950.xml' => [ 'Movistar', 'Go Mobile 950', 'Android', DeviceType::MOBILE ], + 'http://wap.nexustelco.com/wap/uaprofile/GO963.xml' => [ 'Movistar', 'Go Mobile 963', 'Android', DeviceType::MOBILE ], + 'http://wap.nexustelco.com/uaprofile/GO980.xml' => [ 'Movistar', 'Go Mobile 980', 'Android', DeviceType::MOBILE ], + 'http://wap.nexustelco.com/uaprofile/GO984.xml' => [ 'Movistar', 'Go Mobile 984', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Movistar-Link.xml' => [ 'Movistar', 'Link', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Movistar-Motion.xml' => [ 'Movistar', 'Motion', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Movistar-One.xml' => [ 'Movistar', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MTC_1055.xml' => [ 'MTC', '1055', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC_1078.xml' => [ 'MTC', '1078', 'Android', DeviceType::TABLET ], + 'http://wap1.huawei.com/uaprof/MTC_752.xml' => [ 'MTC', '752', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MTC_916.xml' => [ 'MTC', '916', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650GPRS-MTS.xml' => [ 'MTC', '955', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-MTS.xml' => [ 'MTC', '955', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC_960.xml' => [ 'MTC', '960', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC-962.xml' => [ 'MTC', '962', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC-962_3G.xml' => [ 'MTC', '962', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC_968.xml' => [ 'MTC', '968', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC_970.xml' => [ 'MTC', '970', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC_970H.xml' => [ 'MTC', '970H', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC_972.xml' => [ 'MTC', '972', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC_975.xml' => [ 'MTC', '975', 'Android', DeviceType::MOBILE ], + 'http://tpsolution.ru/uaprof/MTC980.xml' => [ 'MTC', '980', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MTC_982T.xml' => [ 'MTC', '982', 'Android', DeviceType::MOBILE ], + 'http://tpsolution.ru/uaprof/MTC982O.xml' => [ 'MTC', '982O', 'Android', DeviceType::MOBILE ], + 'http://tpsolution.ru/uaprof/mtc982o442.xml' => [ 'MTC', '982O', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MTC_SMART_Run_4G.xml' => [ 'MTC', 'Smart Run', 'Android', DeviceType::MOBILE ], + 'http://tpsolution.ru/uaprof/SS.xml' => [ 'MTC', 'Smart Sprint', 'Android', DeviceType::MOBILE ], + 'http://www.jeekomi.com/hw/MTC_SMART_Sprint_4G.xml' => [ 'MTC', 'Smart Sprint', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/SMART_Start.xml' => [ 'MTC', 'Smart Start', 'Android', DeviceType::MOBILE ], + 'http://staticfiles.technoserv.com/uap/MTS_Smart_Surf2_4G.xml' => [ 'MTC', 'Smart Surf 2', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8160GPRS-MTS.xml' => [ 'MTS', 'Mini', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/NATCOM_N8302GPRS-NORMAL.xml' => [ 'NATCOM', 'N8302', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/NATCOM_N8302WCDMA-NORMAL.xml' => [ 'Natcom', 'N8302', 'Android', DeviceType::MOBILE ], + 'http://www.nechdm.com/profiles/232/a232.rdf' => [ 'NEC', 'A232', null, DeviceType::MOBILE ], + 'http://www.nechdm.com/profiles/525/a525.rdf' => [ 'NEC', 'A525', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/e121V01.xml' => [ 'NEC', 'e121', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/232V01.xml' => [ 'NEC', 'e232', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/e238V01.xml' => [ 'NEC', 'e238', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/e242V01.xml' => [ 'NEC', 'e242', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/e353V01.xml' => [ 'NEC', 'e353', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/530V01.xml' => [ 'NEC', 'e530', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/UAPMargay.xml' => [ 'NEC', 'N110', null, DeviceType::MOBILE ], + 'http://nechdm.com/profiles/535/a535.xml' => [ 'NEC', 'N535', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/N6206V01.xml' => [ 'NEC', 'N6206', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/N700V01.xml' => [ 'NEC', 'N700', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/N710V01.xml' => [ 'NEC', 'N710', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/N820V01.xml' => [ 'NEC', 'N820', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/N840HKV01.xml' => [ 'NEC', 'N840', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/N900V01.xml' => [ 'NEC', 'N900', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/N908V01.xml' => [ 'NEC', 'N908', null, DeviceType::MOBILE ], + 'http://www.ehaier.com/download/mobile/HaierN80Wv100WCDMA.xml' => [ 'NEC', 'RPSPG3501', 'Android', DeviceType::MOBILE ], + 'http://www.n-keitai.com/uap/NE-201A1A_UAProf_v1.2.xml' => [ 'NEC', 'Terrain', 'Android', DeviceType::MOBILE ], + 'http://vfwap.jn.neic.ne.jp/profile/V802N.xml' => [ 'NEC', 'V802N', null, DeviceType::MOBILE ], + 'http://www.nexian-apps.com/UAProf/NX-G869/G869UAProf.xml' => [ 'Nexian', 'NX-G869 Cappuccino', 'MTK', DeviceType::MOBILE ], + 'http://www.nexian-apps.com/UAProf/NX-G965/G965UAProf.xml' => [ 'Nexian', 'NX-G965 Champion', 'MTK', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmatlantis.xml' => [ 'NGM', 'Atlantis', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmfun.xml' => [ 'NGM', 'Dynamic Fun', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmjump.xml' => [ 'NGM', 'Dynamic Jump', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmracing3.xml' => [ 'NGM', 'Dynamic Jump', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmmilo.xml' => [ 'NGM', 'Dynamic Milo', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmstar.xml' => [ 'NGM', 'Dynamic Star', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmstylo.xml' => [ 'NGM', 'Dynamic Stylo', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngm5_5.xml' => [ 'NGM', 'Forward 5.5', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmendurance.xml' => [ 'NGM', 'Forward Endurance', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmprime.xml' => [ 'NGM', 'Forward Prime', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmruby.xml' => [ 'NGM', 'Forward Ruby', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmproductname.xml' => [ 'NGM', 'Forward Young', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmyoung.xml' => [ 'NGM', 'Forward Young', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmlegend2.xml' => [ 'NGM', 'Legend 2', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmmiracle.xml' => [ 'NGM', 'Miracle', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmpolaris.xml' => [ 'NGM', 'Polaris', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmjumpl.xml' => [ 'NGM', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmspirit.xml' => [ 'NGM', 'Spirit', 'Android', DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmwilco.xml' => [ 'NGM', 'WeMove Wilco', 'Android', DeviceType::MOBILE ], + 'http://www.ddmbrands.com/uaprof/niu/tek4D2.xml' => [ 'NIU', 'Tek 4D2', 'Android', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia109r100.xml' => [ 'Nokia', '109', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia110r100.xml' => [ 'Nokia', '110', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia1100r100.xml' => [ 'Nokia', '1100', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N1101r100.xml' => [ 'Nokia', '1101', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia111.1r100.xml' => [ 'Nokia', '111', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia111r100.xml' => [ 'Nokia', '111', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia112r100.xml' => [ 'Nokia', '112', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia1120r100.xml' => [ 'Nokia', '1120', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia113r100.xml' => [ 'Nokia', '113', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia114r100.xml' => [ 'Nokia', '114', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N1680c-2r100.xml' => [ 'Nokia', '1680 classic', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia2030r100.xml' => [ 'Nokia', '2030', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia2052r100.xml' => [ 'Nokia', '2052', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia2055r100.xml' => [ 'Nokia', '2055', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia2060r100.xml' => [ 'Nokia', '2060', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia208.1r100.xml' => [ 'Nokia', '208', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia208.2r100.xml' => [ 'Nokia', '208', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia208.3r100.xml' => [ 'Nokia', '208', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia208.4r100.xml' => [ 'Nokia', '208', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia208r100.xml' => [ 'Nokia', '208', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia210.2r100.xml' => [ 'Nokia', '210', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia220r100.xml' => [ 'Nokia', '220', 'Series30', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia225r100.xml' => [ 'Nokia', '225', 'Series30', DeviceType::MOBILE ], + 'http://useragentprofile.microsoft.com/uaprof/Nokia230r100.xml' => [ 'Nokia', '230', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2322cr100.xml' => [ 'Nokia', '2322 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2600c-2r100.xml' => [ 'Nokia', '2600 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2600cr100.xml' => [ 'Nokia', '2600 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N2610r100.xml' => [ 'Nokia', '2610', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2610r100.xml' => [ 'Nokia', '2610', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N2626r100.xml' => [ 'Nokia', '2626', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2626r100.xml' => [ 'Nokia', '2626', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N2630r100.xml' => [ 'Nokia', '2630', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2630r100.xml' => [ 'Nokia', '2630', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N2650r100.xml' => [ 'Nokia', '2650', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N2650r200.xml' => [ 'Nokia', '2650', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N2650r300.xml' => [ 'Nokia', '2650', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N2660r100.xml' => [ 'Nokia', '2660', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2680s-2r100.xml' => [ 'Nokia', '2680 slide', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2690r100.xml' => [ 'Nokia', '2690', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2692r100.xml' => [ 'Nokia', '2692', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2700c-2r100.xml' => [ 'Nokia', '2700 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2700cr100.xml' => [ 'Nokia', '2700 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2710c-2r100.xml' => [ 'Nokia', '2710', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2720ar100.xml' => [ 'Nokia', '2720 fold', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2730c-1br100.xml' => [ 'Nokia', '2730 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2730c-1r100.xml' => [ 'Nokia', '2730 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N2730cr100.xml' => [ 'Nokia', '2730 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N2760r100.xml' => [ 'Nokia', '2760', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/3000r100.xml' => [ 'Nokia', '3000', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia301.1r100.xml' => [ 'Nokia', '301', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia301r100.xml' => [ 'Nokia', '301', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia3020r100.xml' => [ 'Nokia', '3020', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia3030r100.xml' => [ 'Nokia', '3030', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia3050r200.xml' => [ 'Nokia', '3050', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia307r100.xml' => [ 'Nokia', '307', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia3090r100.xml' => [ 'Nokia', '3090', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3100br100.xml' => [ 'Nokia', '3100', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3100r100.xml' => [ 'Nokia', '3100', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3105tlsr100.xml' => [ 'Nokia', '3105', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3108r100.xml' => [ 'Nokia', '3108', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3109cr100.xml' => [ 'Nokia', '3109 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3109cr100.xml' => [ 'Nokia', '3109 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3110cr100.xml' => [ 'Nokia', '3110 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3110cr100.xml' => [ 'Nokia', '3110 Evolve', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3120br100.xml' => [ 'Nokia', '3120', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3120r100.xml' => [ 'Nokia', '3120', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3120cr100.xml' => [ 'Nokia', '3120 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3128r100.xml' => [ 'Nokia', '3128', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3129r100.xml' => [ 'Nokia', '3129', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3155x5Ar002.xml' => [ 'Nokia', '3155', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3155x5Cr002.xml' => [ 'Nokia', '3155', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3155x7Ar004.xml' => [ 'Nokia', '3155', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3155x7Cr004.xml' => [ 'Nokia', '3155', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3200r100.xml' => [ 'Nokia', '3200', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3200r200.xml' => [ 'Nokia', '3200', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3205tlsr100.xml' => [ 'Nokia', '3205', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3208cr100.xml' => [ 'Nokia', '3208 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3220r100.xml' => [ 'Nokia', '3220', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3220r200.xml' => [ 'Nokia', '3220', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3220r100.xml' => [ 'Nokia', '3220', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3220r200.xml' => [ 'Nokia', '3220', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3230r100.xml' => [ 'Nokia', '3230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3230r100.xml' => [ 'Nokia', '3230', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3250r100.xml' => [ 'Nokia', '3250', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3250r200.xml' => [ 'Nokia', '3250', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3250r100.xml' => [ 'Nokia', '3250', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3300r100.xml' => [ 'Nokia', '3300', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3300r200.xml' => [ 'Nokia', '3300', 'Series40', DeviceType::MOBILE ], + 'http://useragentprofile.hmdglobal.com/uaprof/Nokia3310r100.xml' => [ 'Nokia', '3310 (2017)', null, DeviceType::MOBILE ], + 'http://useragentprofile.hmdglobal.com/uaprof/Nokia33103Gr100.xml' => [ 'Nokia', '3310 3G', 'KaiOS', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3330r100.xml' => [ 'Nokia', '3330', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3350r100.xml' => [ 'Nokia', '3350', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3360r100.xml' => [ 'Nokia', '3360', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3410r100.xml' => [ 'Nokia', '3410', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3500cr100.xml' => [ 'Nokia', '3500 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3500cr100.xml' => [ 'Nokia', '3500 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3510ir100.xml' => [ 'Nokia', '3510i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3510r100.xml' => [ 'Nokia', '3510i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3520r100.xml' => [ 'Nokia', '3520', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3520_N3560r100.xml' => [ 'Nokia', '3520', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3555cr100_3G.xml' => [ 'Nokia', '3555', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3555cr100.xml' => [ 'Nokia', '3555 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3555cr100_3G.xml' => [ 'Nokia', '3555 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3560r100.xml' => [ 'Nokia', '3560', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3590r100.xml' => [ 'Nokia', '3590', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3595r100.xml' => [ 'Nokia', '3595', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3600r100.xml' => [ 'Nokia', '3600', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3600slider100.xml' => [ 'Nokia', '3600 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3610r100.xml' => [ 'Nokia', '3610', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3610ar100.xml' => [ 'Nokia', '3610 fold', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3620r100.xml' => [ 'Nokia', '3620', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3620r200.xml' => [ 'Nokia', '3620', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3650r100.xml' => [ 'Nokia', '3650', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3650r200.xml' => [ 'Nokia', '3650', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N3660r100.xml' => [ 'Nokia', '3660', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3710foldr100.xml' => [ 'Nokia', '3710 fold', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N3720cr100.xml' => [ 'Nokia', '3720 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N500r100-VF2G.xml' => [ 'Nokia', '500', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N500r100-VF3G.xml' => [ 'Nokia', '500', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N500r100.xml' => [ 'Nokia', '500', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N500r200.xml' => [ 'Nokia', '500', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N500r210.xml' => [ 'Nokia', '500', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5000d-2r100.xml' => [ 'Nokia', '5000', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5000r100.xml' => [ 'Nokia', '5000', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5070nmr100.xml' => [ 'Nokia', '5070', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5070r100.xml' => [ 'Nokia', '5070', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5070r100.xml' => [ 'Nokia', '5070b', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5100r100.xml' => [ 'Nokia', '5100', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5100r200.xml' => [ 'Nokia', '5100', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5130c-2r100.xml' => [ 'Nokia', '5130 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5130r100.xml' => [ 'Nokia', '5130 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5140r100.xml' => [ 'Nokia', '5140', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5140ir100.xml' => [ 'Nokia', '5140i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5140ir200.xml' => [ 'Nokia', '5140i', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia515.2r100.xml' => [ 'Nokia', '515', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia515r100.xml' => [ 'Nokia', '515', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5200r100.xml' => [ 'Nokia', '5200', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5200ir200.xml' => [ 'Nokia', '5200', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5200r100.xml' => [ 'Nokia', '5200', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5210r100.xml' => [ 'Nokia', '5210', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5220XpressMusicr100.xml' => [ 'Nokia', '5220 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5228r100-2G.xml' => [ 'Nokia', '5228', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5228r100-3G.xml' => [ 'Nokia', '5228', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5233r100-2G.xml' => [ 'Nokia', '5228', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5233r100-3G.xml' => [ 'Nokia', '5228', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/n-5230-vf3g.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230-1br100-3G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230-1cr100-2G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230-1cr100-3G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230-1dr100-3G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230-cr100-2G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230-cr100-3G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230r100-2G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230r100-3G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230r100-VF2G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5230r100-VF3G.xml' => [ 'Nokia', '5230', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5235-1br100-3G.xml' => [ 'Nokia', '5235 Ovi Music Unlimited', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5235-1dr100-3G.xml' => [ 'Nokia', '5235 Ovi Music Unlimited', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5235r100-2G.xml' => [ 'Nokia', '5235 Ovi Music Unlimited', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5235r100-3G.xml' => [ 'Nokia', '5235 Ovi Music Unlimited', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5236r100-2G.xml' => [ 'Nokia', '5236', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5238r100-3G.xml' => [ 'Nokia', '5238', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5250r100.xml' => [ 'Nokia', '5250', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5300r100.xml' => [ 'Nokia', '5300 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5300r100.xml' => [ 'Nokia', '5300 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5310r100.xml' => [ 'Nokia', '5310 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5310XpressMusicr100.xml' => [ 'Nokia', '5310 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5310r100.xml' => [ 'Nokia', '5310 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5310XpressMusicr100.xml' => [ 'Nokia', '5310 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5310XpressMusicVFr100.xml' => [ 'Nokia', '5310 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5320c-1r100-3G.xml' => [ 'Nokia', '5320 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5320d-1br100.xml' => [ 'Nokia', '5320 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5320d-1r100-2G.xml' => [ 'Nokia', '5320 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5320d-1r100-3G.xml' => [ 'Nokia', '5320 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5320r100-2G.xml' => [ 'Nokia', '5320 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5330-1dr100.xml' => [ 'Nokia', '5330 Mobile TV Edition', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5500dr100.xml' => [ 'Nokia', '5500 Sport', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5510r100.xml' => [ 'Nokia', '5510', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5530c-2r100-2G.xml' => [ 'Nokia', '5530 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5530r100.xml' => [ 'Nokia', '5530 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5610r100.xml' => [ 'Nokia', '5610 XpressMusic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5630d-1r100-2G.xml' => [ 'Nokia', '5630 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5630d-1r100-3G.xml' => [ 'Nokia', '5630 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5700r100-2G.xml' => [ 'Nokia', '5700 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5700r100-3G.xml' => [ 'Nokia', '5700 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N5700r100.xml' => [ 'Nokia', '5700 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5700r100-2G.xml' => [ 'Nokia', '5700 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5700r100-3G.xml' => [ 'Nokia', '5700 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5700r100.xml' => [ 'Nokia', '5700 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5730s-1r100.xml' => [ 'Nokia', '5730 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N5800XpressMusicr100-2G.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5800d-1r100-2G.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5800d-1r100-3G.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5800d-1r100.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5800i-1r100-2G.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5800i-1r100-3G.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5800r100-2G.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5800w-1r100-2G.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia5800w-1r100-3G.xml' => [ 'Nokia', '5800 XpressMusic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6020r100.xml' => [ 'Nokia', '6020', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6020r200.xml' => [ 'Nokia', '6020', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6020r200.xml' => [ 'Nokia', '6020', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6021r100.xml' => [ 'Nokia', '6021', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N603r100.xml' => [ 'Nokia', '603', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N603r200-3G.xml' => [ 'Nokia', '603', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N603r200.xml' => [ 'Nokia', '603', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N603r300.xml' => [ 'Nokia', '603', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6030r100.xml' => [ 'Nokia', '6030', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6030br100.xml' => [ 'Nokia', '6030', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6030r100.xml' => [ 'Nokia', '6030', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6030br100.xml' => [ 'Nokia', '6030b', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6060r100.xml' => [ 'Nokia', '6060', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6060vr100.xml' => [ 'Nokia', '6060v', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6061r100.xml' => [ 'Nokia', '6061', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6070r100.xml' => [ 'Nokia', '6070', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6070r100.xml' => [ 'Nokia', '6070', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6080r100.xml' => [ 'Nokia', '6080', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6085r100.xml' => [ 'Nokia', '6085', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6085r100.xml' => [ 'Nokia', '6085', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6086r100.xml' => [ 'Nokia', '6086', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6086r100.xml' => [ 'Nokia', '6086', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6100r100.xml' => [ 'Nokia', '6100', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6101r100.xml' => [ 'Nokia', '6101', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6101r100.xml' => [ 'Nokia', '6101', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6102r100.xml' => [ 'Nokia', '6102', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6102ir100.xml' => [ 'Nokia', '6102i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6103r100.xml' => [ 'Nokia', '6103', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6108r100.xml' => [ 'Nokia', '6108', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6110r100.xml' => [ 'Nokia', '6110', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6110cr100.xml' => [ 'Nokia', '6110 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6110Navigatorr100-2G.xml' => [ 'Nokia', '6110 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6110Navigatorr100-3G.xml' => [ 'Nokia', '6110 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6110Navigatorr100.xml' => [ 'Nokia', '6110 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6110Navigatorr100-2G.xml' => [ 'Nokia', '6110 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6110Navigatorr100-3G.xml' => [ 'Nokia', '6110 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6111r100.xml' => [ 'Nokia', '6111', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6111r200.xml' => [ 'Nokia', '6111', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6111r201.xml' => [ 'Nokia', '6111', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6111r300.xml' => [ 'Nokia', '6111', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6111r301.xml' => [ 'Nokia', '6111', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6111r200.xml' => [ 'Nokia', '6111', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6120c-1r100-2G.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6120c-1r100-3G.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6120c-1r100-CV2G.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6120c-1r100-CV3G.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6120cr100.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6120c-1r100-2G.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6120c-1r100-3G.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6120c-1r100-CV2G.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6120cr100.xml' => [ 'Nokia', '6120 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6122cr100.xml' => [ 'Nokia', '6122 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6124cr100-2G.xml' => [ 'Nokia', '6124 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6124cr100-3G.xml' => [ 'Nokia', '6124 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6125r100.xml' => [ 'Nokia', '6125', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6126r100.xml' => [ 'Nokia', '6126', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6126r101.xml' => [ 'Nokia', '6126', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6131r100.xml' => [ 'Nokia', '6131', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6131r101.xml' => [ 'Nokia', '6131', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6131r100.xml' => [ 'Nokia', '6131', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6133r100.xml' => [ 'Nokia', '6133', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6133r101.xml' => [ 'Nokia', '6133', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6136r100.xml' => [ 'Nokia', '6136', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r100.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r100_3G.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r101.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r101_3G.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r200.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r200_3G.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r201.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r201_3G.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r300.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r300_3G.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r301.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r301_3G.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r400.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r400_3G.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r401.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6151r401_3G.xml' => [ 'Nokia', '6151', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6170r100.xml' => [ 'Nokia', '6170', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6200r100.xml' => [ 'Nokia', '6200', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6210r100.xml' => [ 'Nokia', '6210 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6210s-1r100-2G.xml' => [ 'Nokia', '6210 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6210s-1r100-3G.xml' => [ 'Nokia', '6210 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/nokia/nokia6215i/nokia6215i.xml' => [ 'Nokia', '6215i', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6220r100.xml' => [ 'Nokia', '6220 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6220r200.xml' => [ 'Nokia', '6220 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6220r300.xml' => [ 'Nokia', '6220 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6220c-1r100-2G.xml' => [ 'Nokia', '6220 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6220c-1r100-3G.xml' => [ 'Nokia', '6220 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6225tlsr100.xml' => [ 'Nokia', '6225', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230r100.xml' => [ 'Nokia', '6230', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230r200.xml' => [ 'Nokia', '6230', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230r300.xml' => [ 'Nokia', '6230', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230r400.xml' => [ 'Nokia', '6230', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230ir100.xml' => [ 'Nokia', '6230i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230ir200.xml' => [ 'Nokia', '6230i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230ir201.xml' => [ 'Nokia', '6230i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230ir300.xml' => [ 'Nokia', '6230i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230ir301.xml' => [ 'Nokia', '6230i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230ir400.xml' => [ 'Nokia', '6230i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6230ir401.xml' => [ 'Nokia', '6230i', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6230ir401.xml' => [ 'Nokia', '6230i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r100.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r100_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r101.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r101_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r200.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r200_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r201.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r201_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r300.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r300_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r301.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r301_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r400.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r400_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r401.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r401_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r500.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r500_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r501.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6233r501_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6233r200.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6233r400.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6233r500.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6233r500_3G.xml' => [ 'Nokia', '6233', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r100.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r100_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r101.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r101_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r200.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r200_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r201.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r201_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r300.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r300_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r301.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r301_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r400.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r400_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r401.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r401_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r500.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r500_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r501.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6234r501_3G.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6234r500.xml' => [ 'Nokia', '6234', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6235x4Ar001.xml' => [ 'Nokia', '6235i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6250r100.xml' => [ 'Nokia', '6250', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6255x3Ar001.xml' => [ 'Nokia', '6255i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6260r100.xml' => [ 'Nokia', '6260', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6260s-1r100.xml' => [ 'Nokia', '6260 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6263r100.xml' => [ 'Nokia', '6263', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6263r100_3G.xml' => [ 'Nokia', '6263', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6263r101.xml' => [ 'Nokia', '6263', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6263r101_3G.xml' => [ 'Nokia', '6263', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6267r100.xml' => [ 'Nokia', '6267', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6267r100_3G.xml' => [ 'Nokia', '6267', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6267r101.xml' => [ 'Nokia', '6267', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6267r101_3G.xml' => [ 'Nokia', '6267', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6270r100.xml' => [ 'Nokia', '6270', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r100.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r1000.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r1000_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r1001.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r1001_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r1100.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r1100_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r1101.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r1101_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r200.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r201.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r300.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r301.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r400.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r400_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r401.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r401_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r500.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r500_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r501.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r501_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r600.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r600_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r601.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r601_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r700.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r700_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r701.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r701_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r800.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r800_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r801.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r801_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r900.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r900_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r901.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6280r901_3G.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6280r1100.xml' => [ 'Nokia', '6280', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6282r100.xml' => [ 'Nokia', '6282', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6282r100_3G.xml' => [ 'Nokia', '6282', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6282r200.xml' => [ 'Nokia', '6282', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6282r200_3G.xml' => [ 'Nokia', '6282', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6282r300.xml' => [ 'Nokia', '6282', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6282r300_3G.xml' => [ 'Nokia', '6282', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r100.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r100_3G.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r101.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r101_3G.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r200.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r200_3G.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r201.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r201_3G.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r300.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r300_3G.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r301.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6288r301_3G.xml' => [ 'Nokia', '6288', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6288r300.xml' => [ 'Nokia', '6288', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6290r100-2G.xml' => [ 'Nokia', '6290', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6290r100-3G.xml' => [ 'Nokia', '6290', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6290r100.xml' => [ 'Nokia', '6290', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NokiaMMS13r100.xml' => [ 'Nokia', '6290', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6300r100.xml' => [ 'Nokia', '6300', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6300r100.xml' => [ 'Nokia', '6300', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6300ir100.xml' => [ 'Nokia', '6300i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6301r100.xml' => [ 'Nokia', '6301', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6301r100.xml' => [ 'Nokia', '6301', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6303classicr100.xml' => [ 'Nokia', '6303 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6303cr100.xml' => [ 'Nokia', '6303 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6303cir100.xml' => [ 'Nokia', '6303i classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6303iclassicr100.xml' => [ 'Nokia', '6303i classic', 'Series40', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/nokia/6305/6305v1.xml' => [ 'Nokia', '6305i', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6310r100.xml' => [ 'Nokia', '6310', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/nokia/nokia6315i/nokia6315i.xml' => [ 'Nokia', '6315i', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6340r100.xml' => [ 'Nokia', '6340', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6500cr100.xml' => [ 'Nokia', '6500 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6500cr101.xml' => [ 'Nokia', '6500 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6500cVFr100.xml' => [ 'Nokia', '6500 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6500cVFr100_3G.xml' => [ 'Nokia', '6500 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6500sr100.xml' => [ 'Nokia', '6500 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6500sr101.xml' => [ 'Nokia', '6500 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6500sVFr100.xml' => [ 'Nokia', '6500 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6500sVFr100_3G.xml' => [ 'Nokia', '6500 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6500s2Gr100.xml' => [ 'Nokia', '6500 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6500sr100.xml' => [ 'Nokia', '6500 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6500cr100.xml' => [ 'Nokia', '6500c', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6510R100.xml' => [ 'Nokia', '6510', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6555r100.xml' => [ 'Nokia', '6555', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6555r100_3G.xml' => [ 'Nokia', '6555', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6555r100_3G.xml' => [ 'Nokia', '6555', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6555br100.xml' => [ 'Nokia', '6555b', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6555br100_3G.xml' => [ 'Nokia', '6555b', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6555cr100.xml' => [ 'Nokia', '6555c', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6555cr100_3G.xml' => [ 'Nokia', '6555c', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6560R100.xml' => [ 'Nokia', '6560', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6590R100.xml' => [ 'Nokia', '6590', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6590r200.xml' => [ 'Nokia', '6590', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6600r100.xml' => [ 'Nokia', '6600', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6600r100.xml' => [ 'Nokia', '6600', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6600fr100.xml' => [ 'Nokia', '6600 fold', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6600sr100.xml' => [ 'Nokia', '6600 slide', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6600ir100.xml' => [ 'Nokia', '6600i slide', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6610r100.xml' => [ 'Nokia', '6610', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6610r200.xml' => [ 'Nokia', '6610', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6610ir100.xml' => [ 'Nokia', '6610i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6620r100.xml' => [ 'Nokia', '6620', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6620r200.xml' => [ 'Nokia', '6620', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6620r200.xml' => [ 'Nokia', '6620', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6630r100-VF2G.xml' => [ 'Nokia', '6630', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6630r100-VF3G.xml' => [ 'Nokia', '6630', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6630r100-VFKK2G.xml' => [ 'Nokia', '6630', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6630r100-VFKK3G.xml' => [ 'Nokia', '6630', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6630r100.xml' => [ 'Nokia', '6630', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6650r100.xml' => [ 'Nokia', '6650', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6650r200.xml' => [ 'Nokia', '6650', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6650r300.xml' => [ 'Nokia', '6650', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6651r100.xml' => [ 'Nokia', '6651', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6670r100.xml' => [ 'Nokia', '6670', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6680r100-VF2G.xml' => [ 'Nokia', '6680', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6680r100-VF3G.xml' => [ 'Nokia', '6680', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6680r100-VFKK2G.xml' => [ 'Nokia', '6680', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6680r100-VFKK3G.xml' => [ 'Nokia', '6680', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6680r100.xml' => [ 'Nokia', '6680', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6681r100.xml' => [ 'Nokia', '6681', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6681r100.xml' => [ 'Nokia', '6681', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6682r100.xml' => [ 'Nokia', '6682', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6682r200.xml' => [ 'Nokia', '6682', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6700c-1r100.xml' => [ 'Nokia', '6700 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6700cr100.xml' => [ 'Nokia', '6700 classic', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6700s-1cr100.xml' => [ 'Nokia', '6700 slide', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6700sr100-VF3G.xml' => [ 'Nokia', '6700 slide', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6700sr100.xml' => [ 'Nokia', '6700 slide', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6708r100.xml' => [ 'Nokia', '6708', 'UIQ', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia6710sr100-2G.xml' => [ 'Nokia', '6710 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia6710sr100-3G.xml' => [ 'Nokia', '6710 Navigator', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia6720c-1br100.xml' => [ 'Nokia', '6720 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia6720cr100.xml' => [ 'Nokia', '6720 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6730cr100.xml' => [ 'Nokia', '6730 classic', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6760s-1r100-2G.xml' => [ 'Nokia', '6760 slide', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N6760s-1r100-3G.xml' => [ 'Nokia', '6760 slide', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6800r100.xml' => [ 'Nokia', '6800', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6800r200.xml' => [ 'Nokia', '6800', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6810r100.xml' => [ 'Nokia', '6810', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6820r100.xml' => [ 'Nokia', '6820', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N6822r100.xml' => [ 'Nokia', '6822', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N700r100-VF2G.xml' => [ 'Nokia', '700', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N700r100-VF3G.xml' => [ 'Nokia', '700', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N700r100.xml' => [ 'Nokia', '700', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N700r200.xml' => [ 'Nokia', '700', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N700r300.xml' => [ 'Nokia', '700', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N701r100.xml' => [ 'Nokia', '701', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N701r200.xml' => [ 'Nokia', '701', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N701r300.xml' => [ 'Nokia', '701', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N701r310-3G.xml' => [ 'Nokia', '701', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7020r100.xml' => [ 'Nokia', '7020', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N702Tr100.xml' => [ 'Nokia', '702T', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7070d-2r100.xml' => [ 'Nokia', '7070 Prism', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7110r100.xml' => [ 'Nokia', '7110', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7160r100.xml' => [ 'Nokia', '7160', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7190r100.xml' => [ 'Nokia', '7190', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7200r100.xml' => [ 'Nokia', '7200', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7210r100.xml' => [ 'Nokia', '7210 Supernova', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7210r200.xml' => [ 'Nokia', '7210 Supernova', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7210Supernovar100.xml' => [ 'Nokia', '7210 Supernova', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7230-1cr100.xml' => [ 'Nokia', '7230', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7230r100.xml' => [ 'Nokia', '7230', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7250r100.xml' => [ 'Nokia', '7250', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7250ir100.xml' => [ 'Nokia', '7250i', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7260r100.xml' => [ 'Nokia', '7260', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7260r200.xml' => [ 'Nokia', '7260', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7262r100.xml' => [ 'Nokia', '7262', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7270r100.xml' => [ 'Nokia', '7270', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7270r300.xml' => [ 'Nokia', '7270', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7280r100.xml' => [ 'Nokia', '7280', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7280r200.xml' => [ 'Nokia', '7280', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7280r300.xml' => [ 'Nokia', '7280', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7310r100.xml' => [ 'Nokia', '7310', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7310cr100.xml' => [ 'Nokia', '7310 Supernova', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7360r100.xml' => [ 'Nokia', '7360', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7370r100.xml' => [ 'Nokia', '7370', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7373r100.xml' => [ 'Nokia', '7373', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7380r100.xml' => [ 'Nokia', '7380', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7380r101.xml' => [ 'Nokia', '7380', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r100.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r100_3G.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r101.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r101_3G.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r200.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r200_3G.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r201.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r201_3G.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r300.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r300_3G.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r301.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7390r301_3G.xml' => [ 'Nokia', '7390', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7500r100.xml' => [ 'Nokia', '7500 Prism', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7500r100.xml' => [ 'Nokia', '7500 Prism', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7510ar100.xml' => [ 'Nokia', '7510', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7510Supernovar100.xml' => [ 'Nokia', '7510 Supernova', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7600r100.xml' => [ 'Nokia', '7600', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7600r200.xml' => [ 'Nokia', '7600', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7610r100.xml' => [ 'Nokia', '7610', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7610r100.xml' => [ 'Nokia', '7610 Supernova', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7610Supernovar100.xml' => [ 'Nokia', '7610 Supernova', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7650r100.xml' => [ 'Nokia', '7650', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7650r200.xml' => [ 'Nokia', '7650', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N7710r100.xml' => [ 'Nokia', '7710', 'Series90', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N7900r100.xml' => [ 'Nokia', '7900 Prism', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N801Tr100.xml' => [ 'Nokia', '801T', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N808PureViewr100.xml' => [ 'Nokia', '808 PureView', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N808PureViewr200.xml' => [ 'Nokia', '808 PureView', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N808r100.xml' => [ 'Nokia', '808 PureView', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N808r200.xml' => [ 'Nokia', '808 PureView', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8310r100.xml' => [ 'Nokia', '8310', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8600dr100.xml' => [ 'Nokia', '8600 Luna', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800r100.xml' => [ 'Nokia', '8800', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800r101.xml' => [ 'Nokia', '8800', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800r200.xml' => [ 'Nokia', '8800', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800r201.xml' => [ 'Nokia', '8800', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800r300.xml' => [ 'Nokia', '8800', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800r301.xml' => [ 'Nokia', '8800', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800SIr100.xml' => [ 'Nokia', '8800 Sirocco', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800SIr101.xml' => [ 'Nokia', '8800 Sirocco', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800SIr200.xml' => [ 'Nokia', '8800 Sirocco', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8800SIr201.xml' => [ 'Nokia', '8800 Sirocco', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8801r100.xml' => [ 'Nokia', '8801', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8801r101.xml' => [ 'Nokia', '8801', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8801r200.xml' => [ 'Nokia', '8801', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8801r201.xml' => [ 'Nokia', '8801', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8801r300.xml' => [ 'Nokia', '8801', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8801r301.xml' => [ 'Nokia', '8801', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8801r400.xml' => [ 'Nokia', '8801', 'Series40', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8801r401.xml' => [ 'Nokia', '8801', 'Series40', DeviceType::MOBILE ], + 'http://useragentprofile.hmdglobal.com/uaprof/Nokia88104Gr100.xml' => [ 'Nokia', '8810 4G', 'KaiOS', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8910r100.xml' => [ 'Nokia', '8910', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N8910ir100.xml' => [ 'Nokia', '8910i', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N9110r100.xml' => [ 'Nokia', '9110 Communicator', 'GOES', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N9210r100.xml' => [ 'Nokia', '9210 Communicator', 'Series80', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N9300r100.xml' => [ 'Nokia', '9300', 'Series80', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N9300r100.xml' => [ 'Nokia', '9300', 'Series80', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N9300ir100.xml' => [ 'Nokia', '9300i', 'Series80', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N93kir100.xml' => [ 'Nokia', '9300i', 'Series80', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N9300ir100.xml' => [ 'Nokia', '9300i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/N9500r100.xml' => [ 'Nokia', '9500 Communicator', 'Series90', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia200r100.xml' => [ 'Nokia', 'Asha 200', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia201r100.xml' => [ 'Nokia', 'Asha 201', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/202r100.xml' => [ 'Nokia', 'Asha 202', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/203r100.xml' => [ 'Nokia', 'Asha 203', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia205.1r100.xml' => [ 'Nokia', 'Asha 205', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia205.3r100.xml' => [ 'Nokia', 'Asha 205', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia205r100.xml' => [ 'Nokia', 'Asha 205', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia206.1r100.xml' => [ 'Nokia', 'Asha 206', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia206r100.xml' => [ 'Nokia', 'Asha 206', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia210.3r100.xml' => [ 'Nokia', 'Asha 210', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia210.4r100.xml' => [ 'Nokia', 'Asha 210', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia210.5r100.xml' => [ 'Nokia', 'Asha 210', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia210r100.xml' => [ 'Nokia', 'Asha 210', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaAsha230DSr100.xml' => [ 'Nokia', 'Asha 230', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaAsha230SSr100.xml' => [ 'Nokia', 'Asha 230', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/300r100.xml' => [ 'Nokia', 'Asha 300', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia302r100.xml' => [ 'Nokia', 'Asha 302', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia303r100.xml' => [ 'Nokia', 'Asha 303', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/305r100.xml' => [ 'Nokia', 'Asha 305', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/305r200.xml' => [ 'Nokia', 'Asha 305', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/306r100.xml' => [ 'Nokia', 'Asha 306', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/308r100.xml' => [ 'Nokia', 'Asha 308', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/309r100.xml' => [ 'Nokia', 'Asha 309', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia310r100.xml' => [ 'Nokia', 'Asha 310', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/311r100.xml' => [ 'Nokia', 'Asha 311', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaAsha500DSr100.xml' => [ 'Nokia', 'Asha 500', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia501.1r100.xml' => [ 'Nokia', 'Asha 501', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia501.2r100.xml' => [ 'Nokia', 'Asha 501', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia501r100.xml' => [ 'Nokia', 'Asha 501', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia501sr100.xml' => [ 'Nokia', 'Asha 501', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia502r100.xml' => [ 'Nokia', 'Asha 502', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia503r100.xml' => [ 'Nokia', 'Asha 503', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/Nokia503sr100.xml' => [ 'Nokia', 'Asha 503', 'Nokia Asha Platform', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC1-01.1r100.xml' => [ 'Nokia', 'C1-01', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC1-01r100.xml' => [ 'Nokia', 'C1-01', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC1-02ir100.xml' => [ 'Nokia', 'C1-02', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC1-02r100.xml' => [ 'Nokia', 'C1-02', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC1-03r100.xml' => [ 'Nokia', 'C1-03', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC2-00r100.xml' => [ 'Nokia', 'C2-00', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC2-01r100.xml' => [ 'Nokia', 'C2-01', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC2-02.1r100.xml' => [ 'Nokia', 'C2-02', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC2-02r100.xml' => [ 'Nokia', 'C2-02', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC2-03r100.xml' => [ 'Nokia', 'C2-03', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC2-05.1r100.xml' => [ 'Nokia', 'C2-05', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC2-05r100.xml' => [ 'Nokia', 'C2-05', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC2-06r100.xml' => [ 'Nokia', 'C2-06', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC3-00.1r100.xml' => [ 'Nokia', 'C3-00', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC3-00r100.xml' => [ 'Nokia', 'C3-00', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC3-01.5r100.xml' => [ 'Nokia', 'C3-01', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC3-01r100.xml' => [ 'Nokia', 'C3-01', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC5-00.2r100.xml' => [ 'Nokia', 'C5-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC5-00r100.xml' => [ 'Nokia', 'C5-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC5-03r100-3G.xml' => [ 'Nokia', 'C5-03', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC5-03r100-VF2G.xml' => [ 'Nokia', 'C5-03', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC5-03r100-VF3G.xml' => [ 'Nokia', 'C5-03', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC5-03r200-3G.xml' => [ 'Nokia', 'C5-03', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC5-05r100-2G.xml' => [ 'Nokia', 'C5-05', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC5-06r100-2G.xml' => [ 'Nokia', 'C5-06', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC6-00.1r100.xml' => [ 'Nokia', 'C6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC6-00r100-VF2G.xml' => [ 'Nokia', 'C6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC6-00r100-VF3G.xml' => [ 'Nokia', 'C6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaC6-00r100.xml' => [ 'Nokia', 'C6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC6-01.3r100.xml' => [ 'Nokia', 'C6-01', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC6-01.3r200.xml' => [ 'Nokia', 'C6-01', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC6-01.3r300.xml' => [ 'Nokia', 'C6-01', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC6-01r100.xml' => [ 'Nokia', 'C6-01', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC6-01r200.xml' => [ 'Nokia', 'C6-01', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC6-01r300.xml' => [ 'Nokia', 'C6-01', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC6-01r310.xml' => [ 'Nokia', 'C6-01', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00.1r100.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00r100-VF2G.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00r100-VF3G.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00r100.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00r200.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00r300-3G.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00r300.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00r310.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00sr100.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NC7-00sr210.xml' => [ 'Nokia', 'C7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE5-00.2r100.xml' => [ 'Nokia', 'E5-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE5-00r100-VF2G.xml' => [ 'Nokia', 'E5-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE5-00r100-VF3G.xml' => [ 'Nokia', 'E5-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE5-00r100.xml' => [ 'Nokia', 'E5-00', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE50-1r100.xml' => [ 'Nokia', 'E50', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE50-2r100-VF2G.xml' => [ 'Nokia', 'E50', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE50-2r100.xml' => [ 'Nokia', 'E50', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE51-1r100-VF3G.xml' => [ 'Nokia', 'E51', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE51-1r100.xml' => [ 'Nokia', 'E51', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE51-2r100.xml' => [ 'Nokia', 'E51', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE52-1r100-vf3g.xml' => [ 'Nokia', 'E52', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE52-1r100.xml' => [ 'Nokia', 'E52', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE55-1r100.xml' => [ 'Nokia', 'E55', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE6-00r100-VF2G.xml' => [ 'Nokia', 'E6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE6-00r100-VF3G.xml' => [ 'Nokia', 'E6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE6-00r100.xml' => [ 'Nokia', 'E6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE6-00r210.xml' => [ 'Nokia', 'E6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE60-1r100-VF2G.xml' => [ 'Nokia', 'E60', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE60-1r100-VF3G.xml' => [ 'Nokia', 'E60', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE60-1r100-VFKK2G.xml' => [ 'Nokia', 'E60', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE60-1r100-VFKK3G.xml' => [ 'Nokia', 'E60', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE60-1r100.xml' => [ 'Nokia', 'E60', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61-1r100-VF2G.xml' => [ 'Nokia', 'E61', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61-1r100-VF3G.xml' => [ 'Nokia', 'E61', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61-1r100-VFKK2G.xml' => [ 'Nokia', 'E61', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61-1r100-VFKK3G.xml' => [ 'Nokia', 'E61', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61-1r100.xml' => [ 'Nokia', 'E61', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61i-1r100-VF2G.xml' => [ 'Nokia', 'E61i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61i-1r100-VF2Gdrm10.xml' => [ 'Nokia', 'E61i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61i-1r100-VF3G.xml' => [ 'Nokia', 'E61i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61i-1r100-VF3Gdrm10.xml' => [ 'Nokia', 'E61i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61i-1r100.xml' => [ 'Nokia', 'E61i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61i-1r101.xml' => [ 'Nokia', 'E61i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE61i-2r100.xml' => [ 'Nokia', 'E61i', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE61i-1r100.xml' => [ 'Nokia', 'E61i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE62-1r100.xml' => [ 'Nokia', 'E62', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE63-1r100.xml' => [ 'Nokia', 'E63', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE63-2r100.xml' => [ 'Nokia', 'E63', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE63-3r100.xml' => [ 'Nokia', 'E63', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE63r100.xml' => [ 'Nokia', 'E63', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE65-1r100-VF2G.xml' => [ 'Nokia', 'E65', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE65-1r100-VF2Gdrm10.xml' => [ 'Nokia', 'E65', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE65-1r100-VF3G.xml' => [ 'Nokia', 'E65', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE65-1r100-VF3Gdrm10.xml' => [ 'Nokia', 'E65', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE65-1r100.xml' => [ 'Nokia', 'E65', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE65-1r101.xml' => [ 'Nokia', 'E65', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE65-2r100.xml' => [ 'Nokia', 'E65', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE66-1r100-vf3g.xml' => [ 'Nokia', 'E66', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE66-1r100.xml' => [ 'Nokia', 'E66', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE66-2r100.xml' => [ 'Nokia', 'E66', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE66r100.xml' => [ 'Nokia', 'E66', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE7-00r100-VF2G.xml' => [ 'Nokia', 'E7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE7-00r100-VF3G.xml' => [ 'Nokia', 'E7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE7-00r100.xml' => [ 'Nokia', 'E7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE7-00r200.xml' => [ 'Nokia', 'E7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE7-00r300.xml' => [ 'Nokia', 'E7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE7-00r310.xml' => [ 'Nokia', 'E7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE70-1r100-VF2G.xml' => [ 'Nokia', 'E70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE70-1r100-VF3G.xml' => [ 'Nokia', 'E70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE70-1r100-VFKK2G.xml' => [ 'Nokia', 'E70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE70-1r100-VFKK3G.xml' => [ 'Nokia', 'E70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE70-1r100.xml' => [ 'Nokia', 'E70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE70-2r100.xml' => [ 'Nokia', 'E70', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/ne71-1r100-vf2g.xml' => [ 'Nokia', 'E71', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/ne71-1r100-vf3g.xml' => [ 'Nokia', 'E71', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE71-1r100.xml' => [ 'Nokia', 'E71', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE71-2r100.xml' => [ 'Nokia', 'E71', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE71-3r100.xml' => [ 'Nokia', 'E71', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE71r100.xml' => [ 'Nokia', 'E71', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE71xr100-2G.xml' => [ 'Nokia', 'E71x', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE71xr100-3G.xml' => [ 'Nokia', 'E71x', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE72-1r100-vf2g.xml' => [ 'Nokia', 'E72', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE72-1r100-vf3g.xml' => [ 'Nokia', 'E72', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE72-1r100.xml' => [ 'Nokia', 'E72', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE72-2r100.xml' => [ 'Nokia', 'E72', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE72r100.xml' => [ 'Nokia', 'E72', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE73r100.xml' => [ 'Nokia', 'E73 Mode', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE75-1r100.xml' => [ 'Nokia', 'E75', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE90-1r100-VF2G.xml' => [ 'Nokia', 'E90', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE90-1r100-VF3G.xml' => [ 'Nokia', 'E90', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NE90-1r100.xml' => [ 'Nokia', 'E90', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NE90-1r100.xml' => [ 'Nokia', 'E90 Communicator', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NNGager100.xml' => [ 'Nokia', 'N-Gage', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NNGageQDr100.xml' => [ 'Nokia', 'N-Gage QD', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NNGageQDr200.xml' => [ 'Nokia', 'N-Gage QD', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NNGQDr100.xml' => [ 'Nokia', 'N-Gage QD', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NNGQDr200.xml' => [ 'Nokia', 'N-Gage QD', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN70-1r100-VF2G.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN70-1r100-VF2GMIP.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN70-1r100-VF3G.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN70-1r100-VF3GMIP.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN70-1r100-VFKK2G.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN70-1r100-VFKK3G.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN70-1r100.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN70-5r100.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN70-1r100.xml' => [ 'Nokia', 'N70', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN71-1r100-VFKK2G.xml' => [ 'Nokia', 'N71', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN71-1r100-VFKK3G.xml' => [ 'Nokia', 'N71', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN71-1r100.xml' => [ 'Nokia', 'N71', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN71-1r101.xml' => [ 'Nokia', 'N71', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN72r100.xml' => [ 'Nokia', 'N72', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN72r100.xml' => [ 'Nokia', 'N72', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-1r100-SB2G.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-1r100-SB3G.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-1r100-VF2G.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-1r100-VF2GMIP.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-1r100-VF3G.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-1r100-VF3GMIP.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-1r100.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-2r100.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-5r100.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73-6r100.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN73r100.xml' => [ 'Nokia', 'N73', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN75-3r100.xml' => [ 'Nokia', 'N75', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN75-3r200.xml' => [ 'Nokia', 'N75', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN75-3r300.xml' => [ 'Nokia', 'N75', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN76-1r100.xml' => [ 'Nokia', 'N76', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN76-1r100.xml' => [ 'Nokia', 'N76', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN77-1r100.xml' => [ 'Nokia', 'N77', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN77r100.xml' => [ 'Nokia', 'N77', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN78-1r100-VF2G.xml' => [ 'Nokia', 'N78', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN78-1r100-VF3G.xml' => [ 'Nokia', 'N78', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN78-1r100.xml' => [ 'Nokia', 'N78', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN79-1r100.xml' => [ 'Nokia', 'N79', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N8r200.xml' => [ 'Nokia', 'N8', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NC7-00r100.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00.1r100-3G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00.1r200-3G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00.1r300-3G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00r100-3G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00r100-VF2G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00r100-VF3G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00r200-3G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00r300-3G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN8-00r310-3G.xml' => [ 'Nokia', 'N8-00', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN80-1r100-VF2G.xml' => [ 'Nokia', 'N80', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN80-1r100-VF3G.xml' => [ 'Nokia', 'N80', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN80-1r100.xml' => [ 'Nokia', 'N80', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN80-3r100.xml' => [ 'Nokia', 'N80', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN81-1r100.xml' => [ 'Nokia', 'N81', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/N81r100.xml' => [ 'Nokia', 'N81', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN81-1r100-VF2G.xml' => [ 'Nokia', 'N81', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN81-1r100.xml' => [ 'Nokia', 'N81', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN81-3r100.xml' => [ 'Nokia', 'N81', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN82-1r100.xml' => [ 'Nokia', 'N82', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN85-1r100-VF2G.xml' => [ 'Nokia', 'N85', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN85-1r100-VF3G.xml' => [ 'Nokia', 'N85', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN85-1r100.xml' => [ 'Nokia', 'N85', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN85-3r100.xml' => [ 'Nokia', 'N85', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN85r100.xml' => [ 'Nokia', 'N85', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN86-1r100.xml' => [ 'Nokia', 'N86 8MP', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN86-3r100.xml' => [ 'Nokia', 'N86 8MP', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN90-1r100-VF2G.xml' => [ 'Nokia', 'N90', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN90-1r100-VF3G.xml' => [ 'Nokia', 'N90', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN90-1r100-VFKK2G.xml' => [ 'Nokia', 'N90', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN90-1r100-VFKK3G.xml' => [ 'Nokia', 'N90', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN90-1r100.xml' => [ 'Nokia', 'N90', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN91-1r100-VF2G.xml' => [ 'Nokia', 'N91', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN91-1r100-VF3G.xml' => [ 'Nokia', 'N91', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN91-1r100.xml' => [ 'Nokia', 'N91', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN91-2r100.xml' => [ 'Nokia', 'N91', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN91-5r100.xml' => [ 'Nokia', 'N91', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN91-6r100.xml' => [ 'Nokia', 'N91', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN91r100.xml' => [ 'Nokia', 'N91', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN92-1r100.xml' => [ 'Nokia', 'N92', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN92-2r100.xml' => [ 'Nokia', 'N92', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN93-1r100-VF2G.xml' => [ 'Nokia', 'N93', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN93-1r100-VF3G.xml' => [ 'Nokia', 'N93', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN93-1r100.xml' => [ 'Nokia', 'N93', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN93r100.xml' => [ 'Nokia', 'N93', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN93i-1r100-VF2G.xml' => [ 'Nokia', 'N93i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN93i-1r100-VF3G.xml' => [ 'Nokia', 'N93i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN93i-1r100.xml' => [ 'Nokia', 'N93i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN93ir100.xml' => [ 'Nokia', 'N93i', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN95-1r100-VF2G.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN95-1r100-VF2GMIP.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN95-1r100-VF3G.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN95-1r100-VF3GMIP.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN95-1r100.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN95-3r100.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN95-5r100.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NN95_8GB-1r100.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN95-1r100-VF2G.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN95-1r100.xml' => [ 'Nokia', 'N95', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN95_8GB-1r100-VF3G.xml' => [ 'Nokia', 'N95 8GB', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN95_8GB-1r100.xml' => [ 'Nokia', 'N95 8GB', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN95_8GB-3r100.xml' => [ 'Nokia', 'N95 8GB', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN95-3r100.xml' => [ 'Nokia', 'N95-3 NAM', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN96-1r100.xml' => [ 'Nokia', 'N96', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN96-3r100.xml' => [ 'Nokia', 'N96', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN96r100.xml' => [ 'Nokia', 'N96', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-1r100-2G.xml' => [ 'Nokia', 'N97', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-1r100-3G.xml' => [ 'Nokia', 'N97', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-3r100-2G.xml' => [ 'Nokia', 'N97', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-3r100-3G.xml' => [ 'Nokia', 'N97', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97ir100-2G.xml' => [ 'Nokia', 'N97', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97r100-2G.xml' => [ 'Nokia', 'N97', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaN97-1r100-3G.xml' => [ 'Nokia', 'N97', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaN97-4r100-3G.xml' => [ 'Nokia', 'N97', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN9-00r100-R.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-4r100-2G.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-4r100-3G-VF2G.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-4r100-3G-VF3G.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-4r100-3G.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-5r100-2G.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97-5r100-3G.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97minir100-2G.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NN97minir100-3G.xml' => [ 'Nokia', 'N97 Mini', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NSU7r100.xml' => [ 'Nokia', 'SU-7', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NT7-00r100.xml' => [ 'Nokia', 'T7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NTHR880ir100.xml' => [ 'Nokia', 'THR880i', null, DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX2-00r100.xml' => [ 'Nokia', 'X2-00', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX2-01.1r100.xml' => [ 'Nokia', 'X2-01', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX2-01r100.xml' => [ 'Nokia', 'X2-01', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX2-02r100.xml' => [ 'Nokia', 'X2-02', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX2-03r100.xml' => [ 'Nokia', 'X2-03', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX2-05r100.xml' => [ 'Nokia', 'X2-05', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX3-00r100.xml' => [ 'Nokia', 'X3-00', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX3-02.5r100.xml' => [ 'Nokia', 'X3-02', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX3-02r100.xml' => [ 'Nokia', 'X3-02', 'Series40', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX5-00r100.xml' => [ 'Nokia', 'X5-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX5-01r100.xml' => [ 'Nokia', 'X5-01', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX6-00.1r100-3G.xml' => [ 'Nokia', 'X6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX6-00mr100-2G.xml' => [ 'Nokia', 'X6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX6-00r100-2G.xml' => [ 'Nokia', 'X6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX6-00r100-3G.xml' => [ 'Nokia', 'X6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NokiaX6-00r100-VF2G.xml' => [ 'Nokia', 'X6-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX7-00.1r100-3G.xml' => [ 'Nokia', 'X7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX7-00r100-3G.xml' => [ 'Nokia', 'X7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX7-00r100-VF3G.xml' => [ 'Nokia', 'X7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX7-00r200-3G.xml' => [ 'Nokia', 'X7-00', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NX7-00r210-3G.xml' => [ 'Nokia', 'X7-00', 'Series60', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/nubia_NX501_Z54.xml' => [ 'Nubia', 'Z5', 'Android', DeviceType::MOBILE ], + 'http://nyxmobile.com/UAProfile/fly/NYX_FLY.xml' => [ 'Nyx', 'Fly', 'Android', DeviceType::MOBILE ], + 'http://www.nyxmobile.com/UAProfile/flyii/NYX_FLY_II.xml' => [ 'NYX Mobile', 'Fly II', 'Android', DeviceType::MOBILE ], + 'http://www.nyxmobile.com/UAProfile/join/NYX_JOIN.xml' => [ 'NYX Mobile', 'Join', 'Android', DeviceType::MOBILE ], + 'http://www.nyxmobile.com/UAProfile/nobaii/NYX_NOBA_II.xml' => [ 'NYX Mobile', 'Noba II', 'Android', DeviceType::MOBILE ], + 'http://www.nyxmobile.com/UAProfile/orbis/NYX_ORBIS_LL.xml' => [ 'NYX Mobile', 'Orbis', 'Android', DeviceType::MOBILE ], + 'http://www.seeo2.com/uaprofile/uaprof-atomlife.xml' => [ 'O2', 'Comet', null, DeviceType::MOBILE ], + 'http://www.seeo2.com/uaprofile/uaprof-atomexec.xml' => [ 'O2', 'Xda Exec', null, DeviceType::MOBILE ], + 'http://www.seeo2.com/uaprofile/uaprof-stealth.xml' => [ 'O2', 'XDA Stealth', null, DeviceType::MOBILE ], + 'http://www.obimobiles.com/UAP/S500.xml' => [ 'Obi', 'Yeti S500', 'Android', DeviceType::MOBILE ], + 'http://www.okwap.com.cn/uaprof/d88/d88profile.xml' => [ 'Okwap', 'D88', null, DeviceType::MOBILE ], + 'http://www.okwap.com.cn/uaprof/km63/km63profile.xml' => [ 'Okwap', 'KM63', null, DeviceType::MOBILE ], + 'http://www.okwap.com.cn/uaprof/km65/km65profile.xml' => [ 'Okwap', 'KM65', null, DeviceType::MOBILE ], + 'http://www.ondacommunication.com/ua/N1010.xml' => [ 'Onda', 'N1010', null, DeviceType::MOBILE ], + 'http://www.ondacommunication.com/ua/N5010.xml' => [ 'Onda', 'N5010', null, DeviceType::MOBILE ], + 'http://www.ondacommunication.com/ua/TT101.xml' => [ 'Onda', 'TT101', 'Android', DeviceType::TABLET ], + 'http://www.ondacommunication.com/ua/TT102.xml' => [ 'Onda', 'TT102', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOA0001.xml' => [ 'OnePlus', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/ONEPLUSA0001.xml' => [ 'OnePlus', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOA0001.xml' => [ 'OnePlus', 'One', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-ONIDA F970.xml' => [ 'Onida', 'F970', null, DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPO1100.xml' => [ 'Oppo', '1100', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPO1105.xml' => [ 'Oppo', '1105', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPO1107.xml' => [ 'Oppo', '1107', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPO3005.xml' => [ 'Oppo', '3005', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A30.xml' => [ 'Oppo', 'A30', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOA31.xml' => [ 'Oppo', 'A31', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOA31c.xml' => [ 'Oppo', 'A31c', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOA31t.xml' => [ 'Oppo', 'A31t', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A31t.xml' => [ 'Oppo', 'A31t', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOA31u.xml' => [ 'Oppo', 'A31u', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A33.xml' => [ 'Oppo', 'A33', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A33m.xml' => [ 'Oppo', 'A33m', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A37m.xml' => [ 'Oppo', 'A37m', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A53.xml' => [ 'Oppo', 'A53', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A53m.xml' => [ 'Oppo', 'A53m', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A57.xml' => [ 'Oppo', 'A57', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A57t.xml' => [ 'Oppo', 'A57t', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A59m.xml' => [ 'Oppo', 'A59m', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A59s.xml' => [ 'Oppo', 'A59s', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A59st.xml' => [ 'Oppo', 'A59st', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A77.xml' => [ 'Oppo', 'A77', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO A77t.xml' => [ 'Oppo', 'A77t', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR827.xml' => [ 'Oppo', 'Find 5 mini R827', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR2001.xml' => [ 'Oppo', 'Find 5 mini R827T', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR827T.xml' => [ 'Oppo', 'Find 5 mini R827T', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOX909T.xml' => [ 'Oppo', 'Find 5 X909', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOR6006.xml' => [ 'Oppo', 'Find 7 mini R6006', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOFIND7.xml' => [ 'Oppo', 'Find 7 X9070', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOX9070.xml' => [ 'Oppo', 'Find 7 X9070', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOX9076.xml' => [ 'Oppo', 'Find 7 X9076', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOX9077.xml' => [ 'Oppo', 'Find 7 X9077', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOX9000.xml' => [ 'Oppo', 'Find 7a X9000', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOX9006.xml' => [ 'Oppo', 'Find 7a X9006', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOX9007.xml' => [ 'Oppo', 'Find 7a X9007', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR815.xml' => [ 'Oppo', 'Find Clover R815', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR815T.xml' => [ 'Oppo', 'Find Clover R815', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR821T.xml' => [ 'Oppo', 'Find Muse R821T', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOU707.xml' => [ 'Oppo', 'Find Way S U707', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPON1.xml' => [ 'Oppo', 'N1', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPON5111.xml' => [ 'Oppo', 'N1 mini', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPON5116.xml' => [ 'Oppo', 'N1 mini', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPON5110.xml' => [ 'Oppo', 'N1 mini', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPON5117.xml' => [ 'Oppo', 'N1 mini', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPON5207.xml' => [ 'Oppo', 'N3', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPON5209.xml' => [ 'Oppo', 'N3', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPON828.xml' => [ 'Oppo', 'N828', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOR831L.xml' => [ 'Oppo', 'Neo 5 R831L', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOR831.xml' => [ 'Oppo', 'Neo R831', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR829.xml' => [ 'Oppo', 'R1 R829', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR829T.xml' => [ 'Oppo', 'R1 R829T', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R11.xml' => [ 'Oppo', 'R11', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R11 Plus.xml' => [ 'Oppo', 'R11 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R11 Plusk.xml' => [ 'Oppo', 'R11 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R11 Pluskt.xml' => [ 'Oppo', 'R11 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R11t.xml' => [ 'Oppo', 'R11t', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR8200.xml' => [ 'Oppo', 'R1c R8200', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR8207.xml' => [ 'Oppo', 'R1c R8207', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOR8006.xml' => [ 'Oppo', 'R1L R8006', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR8000.xml' => [ 'Oppo', 'R1S R8000', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR8007.xml' => [ 'Oppo', 'R1S R8007', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOR8201.xml' => [ 'Oppo', 'R1x R8201', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOR8206.xml' => [ 'Oppo', 'R1x R8206', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR2010.xml' => [ 'Oppo', 'R2010', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR2017.xml' => [ 'Oppo', 'R2017', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7007.xml' => [ 'Oppo', 'R3 R7007', 'Android', DeviceType::MOBILE ], + 'http://ua.prof.oppo.com/resource/ua-PROF/OPPOR8106.xml' => [ 'Oppo', 'R5 R8106', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR8107.xml' => [ 'Oppo', 'R5 R8107', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR6007.xml' => [ 'Oppo', 'R6007', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R7.xml' => [ 'Oppo', 'R7', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7.xml' => [ 'Oppo', 'R7', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7Plus.xml' => [ 'Oppo', 'R7 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7Plusm.xml' => [ 'Oppo', 'R7 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7005.xml' => [ 'Oppo', 'R7005', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7c.xml' => [ 'Oppo', 'R7c', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R7s.xml' => [ 'Oppo', 'R7s', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7s.xml' => [ 'Oppo', 'R7s', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R7sPlus.xml' => [ 'Oppo', 'R7s Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R7sm.xml' => [ 'Oppo', 'R7sm', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7st.xml' => [ 'Oppo', 'R7st', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R7t.xml' => [ 'Oppo', 'R7t', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR7t.xml' => [ 'Oppo', 'R7t', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR809T.xml' => [ 'Oppo', 'R809', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR813T.xml' => [ 'Oppo', 'R813', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR819.xml' => [ 'Oppo', 'R819', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR8205.xml' => [ 'Oppo', 'R8205', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR823T.xml' => [ 'Oppo', 'R823', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR831S.xml' => [ 'Oppo', 'R831S', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR833T.xml' => [ 'Oppo', 'R833T', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR850.xml' => [ 'Oppo', 'R850', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9 Plusm A.xml' => [ 'Oppo', 'R9 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9 Plustm A.xml' => [ 'Oppo', 'R9 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9km.xml' => [ 'Oppo', 'R9km', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9m.xml' => [ 'Oppo', 'R9m', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9s.xml' => [ 'Oppo', 'R9s', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9s Plus.xml' => [ 'Oppo', 'R9s Plus', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9sk.xml' => [ 'Oppo', 'R9sk', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9st.xml' => [ 'Oppo', 'R9st', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9t.xml' => [ 'Oppo', 'R9t', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOOPPO R9tm.xml' => [ 'Oppo', 'R9tm', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR811.xml' => [ 'Oppo', 'Real R811', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR817T.xml' => [ 'Oppo', 'Real R817', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOR819T.xml' => [ 'Oppo', 'Real R819T', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOU707T.xml' => [ 'Oppo', 'U2S U707T', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOU705T.xml' => [ 'Oppo', 'U705T', 'Android', DeviceType::MOBILE ], + 'http://www.gigabytecm.com/ua/Boston4G.xml' => [ 'Optimus', 'Boston 4G', 'Android', DeviceType::MOBILE ], + 'http://www.qisda.com/UserFiles/uaprof_boston_4g.xml' => [ 'Optimus', 'Boston 4G', 'Android', DeviceType::MOBILE ], + 'https://s3-eu-west-1.amazonaws.com/fotabucket/uaprof/uaprof_qisda_boston.xml' => [ 'Optimus', 'Boston 4G', 'Android', DeviceType::MOBILE ], + 'http://www.opto.co.jp/win_ht/uaprof/H-21-1.0.xml' => [ 'Opto', 'H-21', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/Amoi-Berlin.xml' => [ 'Orange', 'Berlin', null, DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/BOSTON-OPO.xml' => [ 'Orange', 'Boston', 'Android', DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/BOSTON-P2.xml' => [ 'Orange', 'Boston', 'Android', DeviceType::MOBILE ], + 'http://eip2.gigabytecm.com/Orange-BOSTON.xml' => [ 'Orange', 'Boston', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange Covo.xml' => [ 'Orange', 'Covo', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG510-0200GPRS-Orange.xml' => [ 'Orange', 'Daytona', 'Android', DeviceType::MOBILE ], + 'http://config.51coolpad.com/UAProfile/Orange/Orange-Fova.xml' => [ 'Orange', 'Fova', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG535-L11LTE-OrangeGova.xml' => [ 'Orange', 'Gova', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Orange_Hi_4G.xml' => [ 'Orange', 'Hi', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange_Hiro.xml' => [ 'Orange', 'Hiro', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange_infinity_996.xml' => [ 'Orange', 'Infinity 996', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Infinity_X.xml' => [ 'Orange', 'Infinity X', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange_KLIF.xml' => [ 'Orange', 'Kilf', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange_KLIFD.xml' => [ 'Orange', 'Kilf', 'Firefox OS', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange-Kivo.xml' => [ 'Orange', 'Kivo', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY330-U01-OrangeLuno.xml' => [ 'Orange', 'Luno', 'Android', DeviceType::MOBILE ], + 'http://www.amobile.com.cn/ua/Amoi-NewYork.xml' => [ 'Orange', 'New York', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange_Niva.xml' => [ 'Orange', 'Nivo', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange_Nura.xml' => [ 'Orange', 'Nura', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Nura 2.xml' => [ 'Orange', 'Nura 2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Orange_Reyo.xml' => [ 'Orange', 'Reyo', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Orange_Rono.xml' => [ 'Orange', 'Rono', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Orange_Roya.xml' => [ 'Orange', 'Roya', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Orange-San-Francisco.xml' => [ 'Orange', 'San Francisco', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/Excal-1.0.xml' => [ 'Orange', 'SPV E600', null, DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/ph10cd-1.0.xml' => [ 'Orange', 'SPV M1500', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/gen/st21-1.0.xml' => [ 'Orange', 'SPV V550', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Orange_Tado.xml' => [ 'Orange', 'Tado', 'Android', DeviceType::MOBILE ], + 'http://www.modelabs.com/uaprofs/Orange-Tokyo.xml' => [ 'Orange', 'Tokyo', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiG740-L00LTE-OrangeYumo.xml' => [ 'Orange', 'Yumo', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Orange-Zali.xml' => [ 'Orange', 'Zali', 'Android', DeviceType::MOBILE ], + 'http://www.huaqin.com/mobile/uaprof/Zilo.xml' => [ 'Orange', 'Zilo', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Bucare_Y330-U05_UAProfile.xml' => [ 'Orinoquia', 'Bucare Y330', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Kavak_Y625_U03_UAProfile.xml' => [ 'Orinoquia', 'Kavak Y625', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/5054A.xml' => [ 'Own', 'S4035 4G', 'Android', DeviceType::MOBILE ], + 'http://www.oysters.ru/UAProfile/Arctic450_UAProfile.xml' => [ 'Oysters', 'Arctic 450', 'Android', DeviceType::MOBILE ], + 'http://support.acer.com/UAprofile/Acer_G100W_Profile.xml' => [ 'Packard Bell', 'Liberty Tab G100W', 'Android', DeviceType::MOBILE ], + 'http://www.palm.com/permalinks/mmsuaprofs/ASUS_Crown_1.xml' => [ 'Palm', 'Treo 500', 'Palm OS', DeviceType::MOBILE ], + 'http://www.handspring.com/profilespecs/Blazer300_OR.rdf' => [ 'Palm', 'Treo 600', 'Palm OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/PALMONE/POTR650HK/Blazer400103.rdf' => [ 'Palm', 'Treo 650', 'Palm OS', DeviceType::MOBILE ], + 'http://downloads.palmone.com/profiles/Blazer400.rdf' => [ 'Palm', 'Treo 650', 'Palm OS', DeviceType::MOBILE ], + 'http://downloads.palm.com/profiles/Blazer453-ROW.rdf' => [ 'Palm', 'Treo 680', 'Palm OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/PALM/PTR700PHK/Blazer450108.rdf' => [ 'Palm', 'Treo 700', 'Palm OS', DeviceType::MOBILE ], + 'http://downloads.palm.com/profiles/Blazer450.rdf' => [ 'Palm', 'Treo 700p', 'Palm OS', DeviceType::MOBILE ], + 'http://downloads.palm.com/profiles/Treo750R1.rdf' => [ 'Palm', 'Treo 750', 'Palm OS', DeviceType::MOBILE ], + 'http://downloads.palm.com/profiles/Treo750R2.rdf' => [ 'Palm', 'Treo 750', 'Palm OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/PALM/PTR755PHK/Blazer450104.rdf' => [ 'Palm', 'Treo 755', 'Palm OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/PALM/PTR800HK/IEM101.rdf' => [ 'Palm', 'Treo 800', 'Palm OS', DeviceType::MOBILE ], + 'http://downloads.palm.com/profiles/Blazer400.rdf' => [ 'Palm', 'TX', 'Palm OS', DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/A200/R1.xml' => [ 'Panasonic', 'A200', null, DeviceType::MOBILE ], + 'http://dlcache.mobile.pfota.com/Panasonic/UAProf/DL1R1.xml' => [ 'Panasonic', 'Eluga dL1', 'Android', DeviceType::MOBILE ], + 'http://vodafone.51coolpad.com/UAProfile/vodafone/Q475.xml' => [ 'Panasonic', 'Eluga L', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Panasonic_ELUGA_Switch.xml' => [ 'Panasonic', 'Eluga Switch', 'Android', DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/G50/R1.xml' => [ 'Panasonic', 'G50', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/G60/R1.xml' => [ 'Panasonic', 'G60', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/G70/R1.xml' => [ 'Panasonic', 'G70', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GD67/04.xml' => [ 'Panasonic', 'GD67', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GD67/R1.xml' => [ 'Panasonic', 'GD67', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GD67/R2.xml' => [ 'Panasonic', 'GD67', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GD86A/R1.xml' => [ 'Panasonic', 'GD86', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GD87/01.xml' => [ 'Panasonic', 'GD87', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GD87/R1.xml' => [ 'Panasonic', 'GD87', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GD88/R1.xml' => [ 'Panasonic', 'GD88', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GD88D/R1.xml' => [ 'Panasonic', 'GD88', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/GU87/R1.xml' => [ 'Panasonic', 'GU87', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/PANASONIC_P31.xml' => [ 'Panasonic', 'P31', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Panasonic P51.xml' => [ 'Panasonic', 'P51', 'Android', DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/SA7/RP1.xml' => [ 'Panasonic', 'SA7', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Panasonic_T31.xml' => [ 'Panasonic', 'T31', 'Android', DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/vs2/RP1.xml' => [ 'Panasonic', 'VS2', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/VS7/RP1.xml' => [ 'Panasonic', 'VS7', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/VS7aI/RJ1_3G.xml' => [ 'Panasonic', 'VS7', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/VS7aII/RJ1_3G.xml' => [ 'Panasonic', 'VS7', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/VS7x/RJ1_3G.xml' => [ 'Panasonic', 'VS7', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/VS70/RJ1_3G.xml' => [ 'Panasonic', 'VS70', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/VS8x/RJ1_3G.xml' => [ 'Panasonic', 'VS8', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X200/R1.xml' => [ 'Panasonic', 'X200', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X200/RP1.xml' => [ 'Panasonic', 'X200', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X300/R1.xml' => [ 'Panasonic', 'X300', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X400/RP1.xml' => [ 'Panasonic', 'X400', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X410/R1.xml' => [ 'Panasonic', 'X410', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X500/R1.xml' => [ 'Panasonic', 'X500', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X60/R1-D2.xml' => [ 'Panasonic', 'X60', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X60/R1.xml' => [ 'Panasonic', 'X60', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X60/R1new.xml' => [ 'Panasonic', 'X60', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X66/R1.xml' => [ 'Panasonic', 'X66', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/x68/R1.xml' => [ 'Panasonic', 'X68', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X70/R1.xml' => [ 'Panasonic', 'X70', null, DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X700/X700R1.xml' => [ 'Panasonic', 'X700', 'Series60', DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X701/X701R1.xml' => [ 'Panasonic', 'X700', 'Series60', DeviceType::MOBILE ], + 'http://mobileinternet.panasonicbox.com/UAprof/X800/X800R1.xml' => [ 'Panasonic', 'X800', 'Series60', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr8995/adr8995.xml' => [ 'Pantech', 'Breakout', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/STARQ/adr8995.xml' => [ 'Pantech', 'Breakout', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/Gsm/C520.xml' => [ 'Pantech', 'Breeze', null, DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P9070.xml' => [ 'Pantech', 'Burst', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P9070R01.xml' => [ 'Pantech', 'Burst', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/UAPROF/GSM/PG-C150.XML' => [ 'Pantech', 'C150', null, DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/Gsm/PG-C300J.xml' => [ 'Pantech', 'C300', null, DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-C630.xml' => [ 'Pantech', 'C630', null, DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P8000.xml' => [ 'Pantech', 'Crossover', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P8000R01.xml' => [ 'Pantech', 'Crossover', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-C810.xml' => [ 'Pantech', 'Duo', null, DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P4100.xml' => [ 'Pantech', 'Element', 'Android', DeviceType::TABLET ], + 'http://www.pantech.com/Uaprof/umts/PU-P4100R01.xml' => [ 'Pantech', 'Element', 'Android', DeviceType::TABLET ], + 'http://www.pantech.com/Uaprof/umts/PU-P8010.xml' => [ 'Pantech', 'Flex', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P8010R01.xml' => [ 'Pantech', 'Flex', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P9090.xml' => [ 'Pantech', 'Magnus', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P9090R01.xml' => [ 'Pantech', 'Magnus', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr910l/adr910l.xml' => [ 'Pantech', 'Marauder', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-C740.xml' => [ 'Pantech', 'Matrix', null, DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P6020.xml' => [ 'Pantech', 'P6020', 'Brew', DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P6030.xml' => [ 'Pantech', 'P6030', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/pcd/adr930l/adr930l.xml' => [ 'Pantech', 'Perception', 'Android', DeviceType::MOBILE ], + 'http://device.telusmobility.com/pantech/PN3200-0.rdf' => [ 'Pantech', 'PN-3200', null, DeviceType::MOBILE ], + 'http://www.pantech.com/Uaprof/umts/PU-P9060.xml' => [ 'Pantech', 'Pocket', 'Android', DeviceType::MOBILE ], + 'http://www.pantech.co.kr/Uaprof/Gsm/S100J.xml' => [ 'Pantech', 'S100', null, DeviceType::MOBILE ], + 'http://mobileuaprof.xtra.co.nz/h_tx215c.rdf' => [ 'Pantech', 'TX215', null, DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/vega-ptl21.xml' => [ 'Pantech', 'Vega Nº6', 'Android', DeviceType::MOBILE ], + 'http://ota.phicomm.com.cn/MobileProfile/C630LwRU-UA-Profile.xml' => [ 'Phicomm', 'Clue L', 'Android', DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap289.xml' => [ 'Philips', '289', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap330.xml' => [ 'Philips', '330', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap350.xml' => [ 'Philips', '350', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap530.xml' => [ 'Philips', '530', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap568.xml' => [ 'Philips', '568', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap650.xml' => [ 'Philips', '650', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap755.xml' => [ 'Philips', '755', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap766.xml' => [ 'Philips', '766', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uap960.xml' => [ 'Philips', '960', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uapCT9A9G.xml' => [ 'Philips', '9A9G', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uapPHILIPS9A9W.xml' => [ 'Philips', '9A9W', null, DeviceType::MOBILE ], + 'www-ccpp.tcl-ta.com/files/PI3210G.xml' => [ 'Philips', 'Amio 7', 'Android', DeviceType::TABLET ], + 'http://www.consumer.philips.com/wbu/uapP199.xml' => [ 'Philips', 'P100', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uapP598.xml' => [ 'Philips', 'P598', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uapW3550.xml' => [ 'Philips', 'S309', 'Android', DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uapS890.XML' => [ 'Philips', 'S890', null, DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uapW3568.xml' => [ 'Philips', 'W3568', 'Android', DeviceType::MOBILE ], + 'http://www.consumer.philips.com/wbu/uapX525.xml' => [ 'Philips', 'X331', 'MTK', DeviceType::MOBILE ], + 'http://uriver.co.kr/UAprof/UAprof_M801.xml' => [ 'PhoneOne', 'M801', null, DeviceType::MOBILE ], + 'http://www.coobery.com/mobile/Suning_S90w_UAProfile.xml' => [ 'Pioneer', 'S90w', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiMediaPad7951WDWIFIOnly.xml' => [ 'PLDT', 'Telpad Dual S', 'Android', DeviceType::TABLET ], + 'http://www.diamond-electronics.com/xmlfiles/PSPC550.XML' => [ 'Polaroid', 'Cosmo 550', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/P5526A.xml' => [ 'Polaroid', 'Cosmo K Plus', 'Android', DeviceType::TABLET ], + 'http://www.diamond-electronics.com/xmlfiles/P5046A.xml' => [ 'Polaroid', 'Cosmo P5s Dorado', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/P5525A.xml' => [ 'Polaroid', 'Cosmo Q5s Gris', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/P4005A.xml' => [ 'Polaroid', 'P4005A', 'Android', DeviceType::MOBILE ], + 'http://www.gfivemobile.com/en/xml/PMID703GK.xml' => [ 'Polaroid', 'PMID 703gk', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/PMID704GK.XML' => [ 'Polaroid', 'PMID 704gk', 'Android', DeviceType::TABLET ], + 'http://www.diamond-electronics.com/xmlfiles/P4006A.XML' => [ 'Polaroid', 'Polaroid P4006A', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/PMID7102DC.xml' => [ 'Polaroid', 'Polaroid PMID7102DC', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/PSPC505.XML' => [ 'Polaroid', 'PSPC505', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/PSPT350_UAProfile.xml' => [ 'Polaroid', 'PSPT350', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/PSPT401.xml' => [ 'Polaroid', 'Turbo 401', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/P4525A.XML' => [ 'Polaroid', 'Turbo C4 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.diamond-electronics.com/xmlfiles/P5005A.XML' => [ 'Polaroid', 'Turbo C5', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PGPS7795_V1.xml' => [ 'Prestigio', 'Geovision Tour', 'Android', ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP7557_V1.xml' => [ 'Prestigio', 'Grace 7557', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP5670C_DUO_V1.xml' => [ 'Prestigio', 'Multipad 2 Pro Duo 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7380D3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 2 Pro Quad 8.0 3G', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7280C3G_DUO_PL_V1.xml' => [ 'Prestigio', 'Multipad 2 Ultra Duo 8.0 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7280C3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 2 Ultra Duo 8.0 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7110D3G_V1.xml' => [ 'Prestigio', 'Multipad 4 Diamond 10.1 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT7177_3G_V1.xml' => [ 'Prestigio', 'Multipad 4 Diamond 10.1 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7079D_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 4 Diamond 7.85', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7079D3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 4 Diamond 7.85 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7079E3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 4 Diamond 7.85 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT7077_3G_V1.xml' => [ 'Prestigio', 'Multipad 4 Diamond 7.85 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP5101C3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 4 Quantum 10.1 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP5101D3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 4 Quantum 10.1 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP5785C3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 4 Quantum 7.85 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT7287_3G_V1.xml' => [ 'Prestigio', 'Multipad 4 Ultra Quad 8.0 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7100D3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 7100', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7280D3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 7280', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP7480D3G_QUAD_V1.xml' => [ 'Prestigio', 'Multipad 7480', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT5777_3G_V1.xml' => [ 'Prestigio', 'Multipad Color 7.0 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT5887_3G_V1.xml' => [ 'Prestigio', 'Multipad Color 8.0 3G', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT5001_3G_V1.xml' => [ 'Prestigio', 'Multipad Muze 5001 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT5008_3G_V1.xml' => [ 'Prestigio', 'Multipad Muze 5008 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT5487_3G_V1.xml' => [ 'Prestigio', 'Multipad Quantum 8.0 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT3277_3G_V1.xml' => [ 'Prestigio', 'Multipad Ranger 7.0 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT3287_3G_V1.xml' => [ 'Prestigio', 'Multipad Ranger 8.0 3G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT5287_4G_V1.xml' => [ 'Prestigio', 'Multipad Ranger 8.0 4G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT7077_4G_V1.xml' => [ 'Prestigio', 'Multipad Ranger 8.0 4G', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP3007C_V1.xml' => [ 'Prestigio', 'Multipad Rider 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMP3007C3G_V1.xml' => [ 'Prestigio', 'Multipad Rider 7.0 3G', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT7787_3G_V1.xml' => [ 'Prestigio', 'Multipad Thunder 8.0i', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT3057_3G_V1.xml' => [ 'Prestigio', 'Multipad Wize 3057', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT3067_3G_V1.xml' => [ 'Prestigio', 'Multipad Wize 3067', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/tablets/PMT5002_Wi_V1.xml' => [ 'Prestigio', 'Multipad Wize 5002', 'Android', DeviceType::TABLET ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP3350DUO_V1.xml' => [ 'Prestigio', 'Multiphone 3350 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP3400DUO_V1.xml' => [ 'Prestigio', 'Multiphone 3400 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP3404DUO_V1.xml' => [ 'Prestigio', 'Multiphone 3404 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP3405DUO_V1.xml' => [ 'Prestigio', 'Multiphone 3405 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP3450DUO_V1.xml' => [ 'Prestigio', 'Multiphone 3450 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP3502DUO_V1.xml' => [ 'Prestigio', 'Multiphone 3502 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP3540DUO_Polcomtel_V1.xml' => [ 'Prestigio', 'Multiphone 3540 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP3540DUO_V1.xml' => [ 'Prestigio', 'Multiphone 3540 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP4044DUO_V1.xml' => [ 'Prestigio', 'Multiphone 4044 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP4055DUO_V1.xml' => [ 'Prestigio', 'Multiphone 4055 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP4322DUO_V1.xml' => [ 'Prestigio', 'Multiphone 4322 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP4500TDUO_V1.XML' => [ 'Prestigio', 'Multiphone 4500 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP5000DUO_V1.XML' => [ 'Prestigio', 'Multiphone 5000 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP5000TDUO_V1.XML' => [ 'Prestigio', 'Multiphone 5000 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP5044DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5044 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP5430_V1.xml' => [ 'Prestigio', 'Multiphone 5430', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP5450DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5450 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP5451DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5451 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5453DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5453 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5454DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5454 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5455_DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5455 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP5500DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5500 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP5501_V1.xml' => [ 'Prestigio', 'Multiphone 5501', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5504DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5504 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5505DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5505 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5507DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5507 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5508DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5508 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5517DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5517 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5550DUO_V1.xml' => [ 'Prestigio', 'Multiphone 5550 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP7500_V1.xml' => [ 'Prestigio', 'Multiphone 7500', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PAP7600DUO_V1.xml' => [ 'Prestigio', 'Multiphone 7600 Duo', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP3455DUO_V1.xml' => [ 'Prestigio', 'Multiphone Grace X3', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP5470DUO_V1.xml' => [ 'Prestigio', 'Multiphone Grace X5', 'Android', DeviceType::MOBILE ], + 'http://wap.dl.prestigio.com/uaprofile/smartphones/PSP3452DUO_V1.xml' => [ 'Prestigio', 'Muze A3', 'Android', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/Unknown_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/Unknown_evdo/7.1.0.rdf' => [ 'RIM', 'BlackBerry', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.2.1.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.3.0.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.3.1.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.6.0.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.6.1.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.7.0.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.7.1.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.7.2.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/5810/3.7.3.rdf' => [ 'RIM', 'BlackBerry 5810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.2.1.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.3.0.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.3.1.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.6.0.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.6.1.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.7.0.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.7.1.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.7.2.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6210/3.7.3.rdf' => [ 'RIM', 'BlackBerry 6210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.2.1.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.3.0.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.3.1.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.6.0.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.6.1.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.7.0.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.7.1.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.7.2.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6230/3.7.3.rdf' => [ 'RIM', 'BlackBerry 6230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.2.1.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.3.0.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.3.1.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.6.0.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.6.1.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.7.0.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.7.1.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.7.2.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6280/3.7.3.rdf' => [ 'RIM', 'BlackBerry 6280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.2.1.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.3.0.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.3.1.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.6.0.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.6.1.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.7.0.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.7.1.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.7.2.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6510/3.7.3.rdf' => [ 'RIM', 'BlackBerry 6510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.2.1.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.3.0.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.3.1.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.6.0.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.6.1.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.7.0.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.7.1.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.7.2.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6710/3.7.3.rdf' => [ 'RIM', 'BlackBerry 6710', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.2.1.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.3.0.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.3.1.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.6.0.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.6.1.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.7.0.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.7.1.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.7.2.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/6750/3.7.3.rdf' => [ 'RIM', 'BlackBerry 6750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.2.1.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.3.0.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.3.1.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.6.0.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.6.1.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.7.0.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.7.1.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.7.2.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7210/3.7.3.rdf' => [ 'RIM', 'BlackBerry 7210', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.2.1.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.3.0.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.3.1.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.6.0.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.6.1.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.7.0.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.7.1.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.7.2.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7230/3.7.3.rdf' => [ 'RIM', 'BlackBerry 7230', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.2.1.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.3.0.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.3.1.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.6.0.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.6.1.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.7.0.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.7.1.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.7.2.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7280/3.7.3.rdf' => [ 'RIM', 'BlackBerry 7280', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.2.1.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.3.0.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.3.1.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.6.0.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.6.1.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.7.0.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.7.1.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.7.2.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7510/3.7.3.rdf' => [ 'RIM', 'BlackBerry 7510', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.2.1.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.3.0.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.3.1.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.6.0.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.6.1.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.7.0.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.7.1.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.7.2.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7730/3.7.3.rdf' => [ 'RIM', 'BlackBerry 7730', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.2.1.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.3.0.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.3.1.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.6.0.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.6.1.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.7.0.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.7.1.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.7.2.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/7750/3.7.3.rdf' => [ 'RIM', 'BlackBerry 7750', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8500_edge/4.6.1.rdf' => [ 'RIM', 'BlackBerry 8500', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8707/4.2.2.rdf' => [ 'RIM', 'BlackBerry 8707', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8800/4.2.1.rdf' => [ 'RIM', 'BlackBerry 8800', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8820/4.2.2.rdf' => [ 'RIM', 'BlackBerry 8820', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8820/4.5.0.rdf' => [ 'RIM', 'BlackBerry 8820', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8830/4.2.2.rdf' => [ 'RIM', 'BlackBerry 8830', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9315_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9315', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9570_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry 9570', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9620_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9620', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9620_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9620', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9620_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9620', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9720/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9720', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9720_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9720', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9720_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9720', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9720_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9720', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9720_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry 9720', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000/4.6.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000_80211a/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000_80211b/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000_80211g/4.6.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000_edge/4.6.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000_umts/4.6.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9000_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9000', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9650/6.0.0.706.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9650/6.0.0.723.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_1x/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_edge/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_evdo/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_evdo/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9650_umts/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9650', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_80211b/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_edge/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_gprs/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_gprs/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9700_umts/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9700', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9780/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9780', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9780_80211b/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9780', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9780_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9780', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9780_edge/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9780', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9780_gprs/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9780', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9780_umts/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9780', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9780_usb/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9780', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9788_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9788', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9788_edge/6.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9788', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_80211a/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_gprs/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9790_usb/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9790', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_80211a/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_80211a/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_gprs/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9900_usb/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9930/7.1.0.1066.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_1x/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_1x/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_80211a/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_80211a/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_evdo/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_evdo/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9930_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Bold 9930', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8300/4.5.0.rdf' => [ 'RIM', 'BlackBerry Curve 8300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8310/4.2.2.rdf' => [ 'RIM', 'BlackBerry Curve 8310', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8330/4.3.0.rdf' => [ 'RIM', 'BlackBerry Curve 8330', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8350i_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520_80211b/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520_80211g/4.6.1.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520_edge/4.6.1.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520_gprs/4.6.1.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520_gprs/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8520_usb/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry8530/5.0.0.1000.rdf' => [ 'RIM', 'BlackBerry Curve 8530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry8530/5.0.0.1030.rdf' => [ 'RIM', 'BlackBerry Curve 8530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry8530/5.0.0.654.rdf' => [ 'RIM', 'BlackBerry Curve 8530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry8530/5.0.0.973.rdf' => [ 'RIM', 'BlackBerry Curve 8530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8530/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8530_1x/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8530_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8530_evdo/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8900/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8900_80211g/4.6.1.rdf' => [ 'RIM', 'BlackBerry Curve 8900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8900_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8900_edge/4.6.1.rdf' => [ 'RIM', 'BlackBerry Curve 8900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8900_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8900_gprs/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 8900', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9220/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9220', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9220_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9220', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9220_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9220', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9220_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9220', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300_80211b/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300_edge/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300_gprs/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9300_umts/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9300', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9310/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9310', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9310_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9310', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9310_evdo/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9310', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9315_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9315', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9315_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9315', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9320/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9320', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9320_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9320', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9320_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9320', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9320_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9320', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9320_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9320', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9320_usb/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9320', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9330/6.0.0.707.rdf' => [ 'RIM', 'BlackBerry Curve 9330', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9330/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9330', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9330/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9330', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9330_1x/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9330', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9330_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9330', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9330_evdo/5.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9330', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9330_evdo/6.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9330', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9350/7.1.0.580.rdf' => [ 'RIM', 'BlackBerry Curve 9350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9350/7.1.0.714.rdf' => [ 'RIM', 'BlackBerry Curve 9350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9350/7.1.0.861.rdf' => [ 'RIM', 'BlackBerry Curve 9350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9350_1x/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9350_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9350_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9350_evdo/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9350_evdo/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9350', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_gprs/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9360_usb/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9360', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9370_1x/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9370', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9370_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9370', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9370_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9370', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9370_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9370', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9370_evdo/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9370', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9370_evdo/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9370', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380_gprs/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9380_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Curve 9380', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8100/4.2.1.rdf' => [ 'RIM', 'BlackBerry Pearl 8100', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8120/4.3.0.rdf' => [ 'RIM', 'BlackBerry Pearl 8120', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8220_80211g/4.6.0.rdf' => [ 'RIM', 'BlackBerry Pearl 8220', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9100/4.6.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9100', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9100_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9100', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9100_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9100', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9100_edge/6.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9100', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9100_umts/6.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9100', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9105/5.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9105', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9105/6.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9105', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9105_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9105', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9105_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9105', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9105_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9105', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9105_edge/6.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9105', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9105_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9105', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9105_umts/6.0.0.rdf' => [ 'RIM', 'BlackBerry Pearl 9105', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/8220_edge/4.6.0.rdf' => [ 'RIM', 'BlackBerry Pearl Flip 8220', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9981_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Porsche P 9981', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9981_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Porsche P 9981', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9981_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Porsche P 9981', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9981_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Porsche P 9981', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9981_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Porsche P 9981', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9981_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Porsche P 9981', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9981_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Porsche P 9981', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9500/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9500', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9500_edge/4.7.0.rdf' => [ 'RIM', 'BlackBerry Storm 9500', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9500_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9500', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9500_umts/4.7.0.rdf' => [ 'RIM', 'BlackBerry Storm 9500', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9500_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9500', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9530_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9530_evdo/4.6.0.rdf' => [ 'RIM', 'BlackBerry Storm 9530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9530_evdo/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9530_gprs/4.7.0.rdf' => [ 'RIM', 'BlackBerry Storm 9530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9530_umts/4.7.0.rdf' => [ 'RIM', 'BlackBerry Storm 9530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9530_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9530', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9550/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9550', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9550_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9550', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9550_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9550', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9550_evdo/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9550', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9550_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm 9550', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9520/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm2 9520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9520_80211g/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm2 9520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9520_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm2 9520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9520_gprs/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm2 9520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9520_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Storm2 9520', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9670/6.0.0.706.rdf' => [ 'RIM', 'BlackBerry Style 9670', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9670/6.0.0.707.rdf' => [ 'RIM', 'BlackBerry Style 9670', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9670/6.0.0.rdf' => [ 'RIM', 'BlackBerry Style 9670', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9670_1x/6.0.0.rdf' => [ 'RIM', 'BlackBerry Style 9670', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9670_80211b/6.0.0.rdf' => [ 'RIM', 'BlackBerry Style 9670', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9670_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Style 9670', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9670_evdo/6.0.0.rdf' => [ 'RIM', 'BlackBerry Style 9670', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9800/6.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9800', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9800_80211b/6.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9800', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9800_80211g/6.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9800', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9800_edge/6.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9800', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9800_gprs/6.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9800', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9800_umts/6.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9800', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9800_usb/6.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9800', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_80211g/6.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_gprs/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9810_usb/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9810', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9850/7.1.0.580.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_1x/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_evdo/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_evdo/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9850_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9850', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_80211g/6.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_80211g/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_80211g/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_edge/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_edge/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_gprs/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_gprs/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_umts/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_umts/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_usb/7.0.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9860_usb/7.1.0.rdf' => [ 'RIM', 'BlackBerry Torch 9860', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/RIM/BlackBerry9630/5.0.0.624.rdf' => [ 'RIM', 'BlackBerry Tour 9630', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9630/5.0.0.rdf' => [ 'RIM', 'BlackBerry Tour 9630', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9630_edge/5.0.0.rdf' => [ 'RIM', 'BlackBerry Tour 9630', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9630_evdo/5.0.0.rdf' => [ 'RIM', 'BlackBerry Tour 9630', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/9630_umts/5.0.0.rdf' => [ 'RIM', 'BlackBerry Tour 9630', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/823044.xml' => [ 'Sagem', '3XXX', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/890054.xml' => [ 'Sagem', 'CO210', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/897807.xml' => [ 'Sagem', 'MC2007', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/896618.xml' => [ 'Sagem', 'my202C', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/897102.xml' => [ 'Sagem', 'my212X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/897133.xml' => [ 'Sagem', 'my214X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/897602.xml' => [ 'Sagem', 'my300C', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/892606.xml' => [ 'Sagem', 'my300X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/898309.xml' => [ 'Sagem', 'my312X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/894080.xml' => [ 'Sagem', 'my400X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/896937.xml' => [ 'Sagem', 'my411X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/899843.xml' => [ 'Sagem', 'my421Z', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/898544.xml' => [ 'Sagem', 'my511X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/896817.xml' => [ 'Sagem', 'my600V', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/895182.xml' => [ 'Sagem', 'my600X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/898885.xml' => [ 'Sagem', 'my721X', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/896288.xml' => [ 'Sagem', 'my750C', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/897313.xml' => [ 'Sagem', 'my850C', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/895961.xml' => [ 'Sagem', 'my901C', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/835113.xml' => [ 'Sagem', 'myC-2', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/890172.xml' => [ 'Sagem', 'myC-3b', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/890914.xml' => [ 'Sagem', 'myC-4', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/835402.xml' => [ 'Sagem', 'myC2-2', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/835618.xml' => [ 'Sagem', 'myC5-2', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/892993.xml' => [ 'Sagem', 'myMobileTV', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/893183.xml' => [ 'Sagem', 'myT-22', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/890453.xml' => [ 'Sagem', 'myV-55', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/892154.xml' => [ 'Sagem', 'myV-56', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/834495.xml' => [ 'Sagem', 'myV-65', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/834529.xml' => [ 'Sagem', 'myV-75', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/893401.xml' => [ 'Sagem', 'myV-85', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/893940.xml' => [ 'Sagem', 'myW-7', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/834525.xml' => [ 'Sagem', 'myX-1', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/834118.xml' => [ 'Sagem', 'myX-2', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/823252.xml' => [ 'Sagem', 'myX-3', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/835509.xml' => [ 'Sagem', 'myX-4', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/822962.xml' => [ 'Sagem', 'myX-5', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/823276.xml' => [ 'Sagem', 'myX-5', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/823404.xml' => [ 'Sagem', 'myX-5', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/823622.xml' => [ 'Sagem', 'myX-6', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/834530.xml' => [ 'Sagem', 'myX-7', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/891032.xml' => [ 'Sagem', 'myX-8', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/891863.xml' => [ 'Sagem', 'myX2-2', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/890118.xml' => [ 'Sagem', 'myX5-2', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/892081.xml' => [ 'Sagem', 'myX6-2', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/P9521.xml' => [ 'Sagem', 'Porsche Design P9521', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/898770.xml' => [ 'Sagem', 'VF526', null, DeviceType::MOBILE ], + 'http://extranet.sagem.com/UAProfile/899483.xml' => [ 'Sagem', 'VF533', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/740SCUAProf.xml' => [ 'Samsung', '740SC', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A157.xml' => [ 'Samsung', 'A157', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A697.xml' => [ 'Samsung', 'A697 Sunburst', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A927.xml' => [ 'Samsung', 'A927 Flight II', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A827.xml' => [ 'Samsung', 'Access', null, DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/SAMSUNG-SCH-I619_CHN_BRI.xml' => [ 'Samsung', 'Ace A+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B6520.xml' => [ 'Samsung', 'B6520 OmniaPRO 5', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7330.xml' => [ 'Samsung', 'B7330 OmniaPRO', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7610.xml' => [ 'Samsung', 'B7610 OmniaPRO', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7610_2G.xml' => [ 'Samsung', 'B7610 OmniaPRO', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7610_3G.xml' => [ 'Samsung', 'B7610 OmniaPRO', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T539.xml' => [ 'Samsung', 'Beat', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M3510C.xml' => [ 'Samsung', 'Beat b', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-M6710UAProf.xml' => [ 'Samsung', 'Beat Disc', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-M6710UAProf3G.xml' => [ 'Samsung', 'Beat Disc', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T919.xml' => [ 'Samsung', 'Behold', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i607_10.xml' => [ 'Samsung', 'BlackJack', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i617_10.xml' => [ 'Samsung', 'BlackJack II', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T729.xml' => [ 'Samsung', 'Blast', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c3010_10.xml' => [ 'Samsung', 'C3010', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c3050_10.xml' => [ 'Samsung', 'C3050', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c3110_10.xml' => [ 'Samsung', 'C3110', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3520I.xml' => [ 'Samsung', 'C3520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C5010_2G.rdf' => [ 'Samsung', 'C5010 Squash', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/C5212.xml' => [ 'Samsung', 'C5212', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/C5220.rdf' => [ 'Samsung', 'C5220', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/C6620UAProf.rdf' => [ 'Samsung', 'C6620', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/C6625UAProf.xml' => [ 'Samsung', 'C6625', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/C6625UAProf2G.xml' => [ 'Samsung', 'C6625', null, DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I879_1_20130130.xml' => [ 'Samsung', 'Captivate', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I896.xml' => [ 'Samsung', 'Captivate', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I897.xml' => [ 'Samsung', 'Captivate', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I927.xml' => [ 'Samsung', 'Captivate Glide', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I927R.xml' => [ 'Samsung', 'Captivate Glide', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2220.xml' => [ 'Samsung', 'Ch@t 220', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2220BR.xml' => [ 'Samsung', 'Ch@t 220', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2222.xml' => [ 'Samsung', 'Ch@t 222', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2262UAProf.xml' => [ 'Samsung', 'Ch@t 226', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3222.xml' => [ 'Samsung', 'Ch@t 322', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3222.xml.jar.jad' => [ 'Samsung', 'Ch@t 322', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3222BR.xml' => [ 'Samsung', 'Ch@t 322', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3332.xml' => [ 'Samsung', 'Ch@t 333', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3332BR.xml' => [ 'Samsung', 'Ch@t 333', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3350UAProf.xml' => [ 'Samsung', 'Ch@t 335', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3353UAProf.xml' => [ 'Samsung', 'Ch@t 335', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3500.xml' => [ 'Samsung', 'Ch@t 350', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3570.xml' => [ 'Samsung', 'Ch@t 357', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3572.xml' => [ 'Samsung', 'Ch@t 357', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5270LBR_3G.xml' => [ 'Samsung', 'Ch@t 527', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5270L_3G.xml' => [ 'Samsung', 'Ch@t 527', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5270Y_2G.xml' => [ 'Samsung', 'Ch@t 527', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5270Y_3G.xml' => [ 'Samsung', 'Ch@t 527', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5270_2G.rdf' => [ 'Samsung', 'Ch@t 527', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5270_3G.rdf' => [ 'Samsung', 'Ch@t 527', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3300i.xml' => [ 'Samsung', 'Champ', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3303.xml' => [ 'Samsung', 'Champ', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3303i.xml' => [ 'Samsung', 'Champ', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3330UAProf.xml' => [ 'Samsung', 'Champ 2', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3332UAProf.xml' => [ 'Samsung', 'Champ 2', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3770L_2G.xml' => [ 'Samsung', 'Champ 3G', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3770L_3G.xml' => [ 'Samsung', 'Champ 3G', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3770M_2G.xml' => [ 'Samsung', 'Champ 3G', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3770M_3G.xml' => [ 'Samsung', 'Champ 3G', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3770_2G.rdf' => [ 'Samsung', 'Champ 3G', 'TouchWiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3310RUAProf.xml' => [ 'Samsung', 'Champ Deluxe', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3310UAProf.xml' => [ 'Samsung', 'Champ Deluxe', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3312KUAProf.xml' => [ 'Samsung', 'Champ Deluxe Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3312RUAProf.xml' => [ 'Samsung', 'Champ Deluxe Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3312UAProf.xml' => [ 'Samsung', 'Champ Deluxe Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2652WUAProf.xml' => [ 'Samsung', 'Champ Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3262.xml' => [ 'Samsung', 'Champ Neo Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D600/FC17.rdf' => [ 'Samsung', 'Conquer 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D600/FE16.rdf' => [ 'Samsung', 'Conquer 4G', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B3310UAProf.xml' => [ 'Samsung', 'Corby', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3650.rdf' => [ 'Samsung', 'Corby', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3650.xml' => [ 'Samsung', 'Corby', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3650C.rdf' => [ 'Samsung', 'Corby', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3653.rdf' => [ 'Samsung', 'Corby', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3653W.rdf' => [ 'Samsung', 'Corby', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3370.rdf' => [ 'Samsung', 'Corby 3G', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3370_3G.rdf' => [ 'Samsung', 'Corby 3G', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-M3710.xml' => [ 'Samsung', 'Corby Beat', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-M3710TCE.xml' => [ 'Samsung', 'Corby Beat', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3850.rdf' => [ 'Samsung', 'Corby II', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3850.xml' => [ 'Samsung', 'Corby II', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3850BR.xml' => [ 'Samsung', 'Corby II', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3850_3G.rdf' => [ 'Samsung', 'Corby II', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B3313UAProf.xml' => [ 'Samsung', 'Corby Mate', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3510T.rdf' => [ 'Samsung', 'Corby Pop', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5310.rdf' => [ 'Samsung', 'Corby Pro', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5310_3G.rdf' => [ 'Samsung', 'Corby Pro', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B3210UAProf.xml' => [ 'Samsung', 'Corby TXT', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D980.xml' => [ 'Samsung', 'D980 DuoS', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T499.xml' => [ 'Samsung', 'Dart', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I857.xml' => [ 'Samsung', 'DoubleTime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I6712BR.xml' => [ 'Samsung', 'Duos TV', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/E1310B.xml' => [ 'Samsung', 'E1310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/E1310E.xml' => [ 'Samsung', 'E1310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/E1360B.xml' => [ 'Samsung', 'E1360', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e1410_10.xml' => [ 'Samsung', 'E1410', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/E2210B.xml' => [ 'Samsung', 'E2210', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E3210L_3G.xml' => [ 'Samsung', 'E3210', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E3213K_3G.rdf' => [ 'Samsung', 'E3213 Hero', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E3309I.xml' => [ 'Samsung', 'E3309 Manhattan', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D700/DG18.rdf' => [ 'Samsung', 'Epic 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D700/DK28.rdf' => [ 'Samsung', 'Epic 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D700/EC05.rdf' => [ 'Samsung', 'Epic 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D700/EH17.rdf' => [ 'Samsung', 'Epic 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D700/EI22.rdf' => [ 'Samsung', 'Epic 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D700/FC09.rdf' => [ 'Samsung', 'Epic 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D700/FC19.rdf' => [ 'Samsung', 'Epic 4G', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i907.xml' => [ 'Samsung', 'Epix', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A867.xml' => [ 'Samsung', 'Eternity', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A597.xml' => [ 'Samsung', 'Eternity II', 'TouchWiz', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M550/CL03.rdf' => [ 'Samsung', 'Exclaim', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T759.xml' => [ 'Samsung', 'Exhibit 4G', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_F839_3_20090707.xml' => [ 'Samsung', 'F839', 'Brew', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I500/SCH-I500.xml' => [ 'Samsung', 'Fascinate', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T189N.xml' => [ 'Samsung', 'Freeform M', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-G600.xml' => [ 'Samsung', 'G600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5500.xml' => [ 'Samsung', 'Galaxy 5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5500B.xml' => [ 'Samsung', 'Galaxy 5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5500L.xml' => [ 'Samsung', 'Galaxy 5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5503.xml' => [ 'Samsung', 'Galaxy 5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5503T_Froyo.rdf' => [ 'Samsung', 'Galaxy 5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5510.xml' => [ 'Samsung', 'Galaxy 551', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I5510BO.xml' => [ 'Samsung', 'Galaxy 551', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I5510BR.xml' => [ 'Samsung', 'Galaxy 551', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I5510L.xml' => [ 'Samsung', 'Galaxy 551', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-A3009_1_20140919.xml' => [ 'Samsung', 'Galaxy A3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A300F.xml' => [ 'Samsung', 'Galaxy A3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A300FU.xml' => [ 'Samsung', 'Galaxy A3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A300G.xml' => [ 'Samsung', 'Galaxy A3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A300H.xml' => [ 'Samsung', 'Galaxy A3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A300M.xml' => [ 'Samsung', 'Galaxy A3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A300Y.xml' => [ 'Samsung', 'Galaxy A3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A300YZ.xml' => [ 'Samsung', 'Galaxy A3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A310F.xml' => [ 'Samsung', 'Galaxy A3 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A320FL.xml' => [ 'Samsung', 'Galaxy A3 (2017)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A320Y.xml' => [ 'Samsung', 'Galaxy A3 (2017)', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-A5009_1_20140811.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A500F.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A500FU.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A500G.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A500H.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A500M.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A500MPET.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A500W.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A500Y.xml' => [ 'Samsung', 'Galaxy A5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A510F.xml' => [ 'Samsung', 'Galaxy A5 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A510Y.xml' => [ 'Samsung', 'Galaxy A5 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A520F.xml' => [ 'Samsung', 'Galaxy A5 (2017)', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-A7009_1_20141110.xml' => [ 'Samsung', 'Galaxy A7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A700F.xml' => [ 'Samsung', 'Galaxy A7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A700FD.xml' => [ 'Samsung', 'Galaxy A7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A700H.xml' => [ 'Samsung', 'Galaxy A7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A710F.xml' => [ 'Samsung', 'Galaxy A7 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A710Y.xml' => [ 'Samsung', 'Galaxy A7 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A720F.xml' => [ 'Samsung', 'Galaxy A7 (2017)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A800F.xml' => [ 'Samsung', 'Galaxy A8', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A800IZ.xml' => [ 'Samsung', 'Galaxy A8', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-A910F.xml' => [ 'Samsung', 'Galaxy A9 Pro', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I579_1_20101216.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/cooper.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830B.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830BO.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830C.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830D.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830G.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830i.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830iBO.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830L.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830M.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830T.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5830V.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5831i.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5839i.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5839iBO.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5839iBV.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6358.xml' => [ 'Samsung', 'Galaxy Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8160.xml' => [ 'Samsung', 'Galaxy Ace 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8160BO.xml' => [ 'Samsung', 'Galaxy Ace 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8160L.xml' => [ 'Samsung', 'Galaxy Ace 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8160P.xml' => [ 'Samsung', 'Galaxy Ace 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7270.xml' => [ 'Samsung', 'Galaxy Ace 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7270L.xml' => [ 'Samsung', 'Galaxy Ace 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7275B.xml' => [ 'Samsung', 'Galaxy Ace 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7275R.xml' => [ 'Samsung', 'Galaxy Ace 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7275RBO.xml' => [ 'Samsung', 'Galaxy Ace 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7275T.xml' => [ 'Samsung', 'Galaxy Ace 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7275Y.xml' => [ 'Samsung', 'Galaxy Ace 3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G3139D_1_20140829.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G313F.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G313H.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G313HU.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G313HZ.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G313M.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G313ML.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G313MU.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G313U.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G316M.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G316ML.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G316MLPET.xml' => [ 'Samsung', 'Galaxy Ace 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G318H.xml' => [ 'Samsung', 'Galaxy Ace 4 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G318HZ.xml' => [ 'Samsung', 'Galaxy Ace 4 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G318ML.xml' => [ 'Samsung', 'Galaxy Ace 4 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G318MZ.xml' => [ 'Samsung', 'Galaxy Ace 4 Neo', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I619_1_20120112.xml' => [ 'Samsung', 'Galaxy Ace A+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCH-I619.xml' => [ 'Samsung', 'Galaxy Ace A+', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_i589_1_20110504.xml' => [ 'Samsung', 'Galaxy Ace Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6352.xml' => [ 'Samsung', 'Galaxy Ace Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6802.xml' => [ 'Samsung', 'Galaxy Ace Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6802B.xml' => [ 'Samsung', 'Galaxy Ace Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7560.xml' => [ 'Samsung', 'Galaxy Ace II x', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7560BO.xml' => [ 'Samsung', 'Galaxy Ace II x', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7560M.xml' => [ 'Samsung', 'Galaxy Ace II x', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I659_1_20120627.xml' => [ 'Samsung', 'Galaxy Ace Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7500.xml' => [ 'Samsung', 'Galaxy Ace Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7500L.xml' => [ 'Samsung', 'Galaxy Ace Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7500T.xml' => [ 'Samsung', 'Galaxy Ace Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SHW-M460D.xml' => [ 'Samsung', 'Galaxy Ace Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G357FZ.xml' => [ 'Samsung', 'Galaxy Ace Style', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G357FZBO.xml' => [ 'Samsung', 'Galaxy Ace Style', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G357M.xml' => [ 'Samsung', 'Galaxy Ace Style', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G357MPET.xml' => [ 'Samsung', 'Galaxy Ace Style', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-S765C.xml' => [ 'Samsung', 'Galaxy Ace Style', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G850A.xml' => [ 'Samsung', 'Galaxy Alpha', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G850F.xml' => [ 'Samsung', 'Galaxy Alpha', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G850M.xml' => [ 'Samsung', 'Galaxy Alpha', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G850MPET.xml' => [ 'Samsung', 'Galaxy Alpha', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G850W.xml' => [ 'Samsung', 'Galaxy Alpha', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G850Y.xml' => [ 'Samsung', 'Galaxy Alpha', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I407.xml' => [ 'Samsung', 'Galaxy Amp', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5800.xml' => [ 'Samsung', 'Galaxy Apollo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5800L.xml' => [ 'Samsung', 'Galaxy Apollo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5801.xml' => [ 'Samsung', 'Galaxy Apollo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I827.xml' => [ 'Samsung', 'Galaxy Appeal', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I827D.xml' => [ 'Samsung', 'Galaxy Appeal', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8530.xml' => [ 'Samsung', 'Galaxy Beam', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C900F.xml' => [ 'Samsung', 'Galaxy C9', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/EK-GC100.xml' => [ 'Samsung', 'Galaxy Camera', 'Android', ], + 'http://wap.samsungmobile.com/uaprof/SCH-S738C.xml' => [ 'Samsung', 'Galaxy Centura', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5330.xml' => [ 'Samsung', 'Galaxy Chat', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5330B.xml' => [ 'Samsung', 'Galaxy Chat', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5330L.xml' => [ 'Samsung', 'Galaxy Chat', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8260.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8260L.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8262.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8262B.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G386F.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G386T.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G386T1.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G386U.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G386W.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G386WMTA.xml' => [ 'Samsung', 'Galaxy Core', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G3559_1_20140420.xml' => [ 'Samsung', 'Galaxy Core 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G355H.xml' => [ 'Samsung', 'Galaxy Core 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G355HN.xml' => [ 'Samsung', 'Galaxy Core 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G355HNBO.xml' => [ 'Samsung', 'Galaxy Core 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G355M.xml' => [ 'Samsung', 'Galaxy Core 2', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G3589W_1_20140219.xml' => [ 'Samsung', 'Galaxy Core Lite', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G5109_1_20141010.xml' => [ 'Samsung', 'Galaxy Core Max', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G350.xml' => [ 'Samsung', 'Galaxy Core Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G350BO.xml' => [ 'Samsung', 'Galaxy Core Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G350L.xml' => [ 'Samsung', 'Galaxy Core Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G350M.xml' => [ 'Samsung', 'Galaxy Core Plus', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-2012071301/NL8.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-2012071301/OH1.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-BOOST/NL8.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-BOOST/OF4.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-BOOST/OH1.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-BOOST/PE2.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-BOOST/QD1.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-Chameleon/latest' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-MVNO/PE2.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G360P-SPRPRE/OH1.rdf' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G3609_1_20140826.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360AZ.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360F.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360G.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360GY.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360H.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360HU.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360M.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360T.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360T1.xml' => [ 'Samsung', 'Galaxy Core Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G361F.xml' => [ 'Samsung', 'Galaxy Core Prime VE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G361H.xml' => [ 'Samsung', 'Galaxy Core Prime VE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G361HU.xml' => [ 'Samsung', 'Galaxy Core Prime VE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCH-S735C.xml' => [ 'Samsung', 'Galaxy Discover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S730G.xml' => [ 'Samsung', 'Galaxy Discover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S730M.xml' => [ 'Samsung', 'Galaxy Discover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-E500H.xml' => [ 'Samsung', 'Galaxy E5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-E500M.xml' => [ 'Samsung', 'Galaxy E5', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-E7009_1_20141208.xml' => [ 'Samsung', 'Galaxy E7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-E700F.xml' => [ 'Samsung', 'Galaxy E7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-E700H.xml' => [ 'Samsung', 'Galaxy E7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-E700M.xml' => [ 'Samsung', 'Galaxy E7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T599.xml' => [ 'Samsung', 'Galaxy Exhibit', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T599N.xml' => [ 'Samsung', 'Galaxy Exhibit', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T599V.xml' => [ 'Samsung', 'Galaxy Exhibit', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T679.xml' => [ 'Samsung', 'Galaxy Exhibit II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T679M.xml' => [ 'Samsung', 'Galaxy Exhibit II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I577.xml' => [ 'Samsung', 'Galaxy Exhilarate', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8730.xml' => [ 'Samsung', 'Galaxy Express', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8730BO.xml' => [ 'Samsung', 'Galaxy Express', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8730T.xml' => [ 'Samsung', 'Galaxy Express', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I437.xml' => [ 'Samsung', 'Galaxy Express', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I437P.xml' => [ 'Samsung', 'Galaxy Express', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I437Z.xml' => [ 'Samsung', 'Galaxy Express', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G3815.xml' => [ 'Samsung', 'Galaxy Express 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6810.xml' => [ 'Samsung', 'Galaxy Fame', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6810B.xml' => [ 'Samsung', 'Galaxy Fame', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6810E.xml' => [ 'Samsung', 'Galaxy Fame', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6810L.xml' => [ 'Samsung', 'Galaxy Fame', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6810M.xml' => [ 'Samsung', 'Galaxy Fame', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6810P.xml' => [ 'Samsung', 'Galaxy Fame', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6810PBO.xml' => [ 'Samsung', 'Galaxy Fame', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6812B.xml' => [ 'Samsung', 'Galaxy Fame', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6790L.xml' => [ 'Samsung', 'Galaxy Fame Lite', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6792L.xml' => [ 'Samsung', 'Galaxy Fame Lite Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5670.xml' => [ 'Samsung', 'Galaxy Fit', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5670B.xml' => [ 'Samsung', 'Galaxy Fit', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5670L.xml' => [ 'Samsung', 'Galaxy Fit', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I569_1_20101216.xml' => [ 'Samsung', 'Galaxy Gio', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/SAMSUNG-SCH-I569_CHN_BRI.xml' => [ 'Samsung', 'Galaxy Gio', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5660.xml' => [ 'Samsung', 'Galaxy Gio', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5660L.xml' => [ 'Samsung', 'Galaxy Gio', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5660M.xml' => [ 'Samsung', 'Galaxy Gio', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5660V.xml' => [ 'Samsung', 'Galaxy Gio', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-W2015_1_20140830.xml' => [ 'Samsung', 'Galaxy Golden 2', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-W2016_1_20151016.xml' => [ 'Samsung', 'Galaxy Golden 3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SCH-I879E_1_20131122.xml' => [ 'Samsung', 'Galaxy Grand', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9080E.xml' => [ 'Samsung', 'Galaxy Grand', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9080L.xml' => [ 'Samsung', 'Galaxy Grand', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G7109_1_20131108.xml' => [ 'Samsung', 'Galaxy Grand 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G710.xml' => [ 'Samsung', 'Galaxy Grand 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G7102T.xml' => [ 'Samsung', 'Galaxy Grand 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G7105.xml' => [ 'Samsung', 'Galaxy Grand 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G7105H.xml' => [ 'Samsung', 'Galaxy Grand 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G7105L.xml' => [ 'Samsung', 'Galaxy Grand 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G7105PCL.xml' => [ 'Samsung', 'Galaxy Grand 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G7105PTR.xml' => [ 'Samsung', 'Galaxy Grand 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G720AX.xml' => [ 'Samsung', 'Galaxy Grand 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9082.xml' => [ 'Samsung', 'Galaxy Grand Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9082L.xml' => [ 'Samsung', 'Galaxy Grand Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G7102.xml' => [ 'Samsung', 'Galaxy Grand II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9060.xml' => [ 'Samsung', 'Galaxy Grand Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9060C.xml' => [ 'Samsung', 'Galaxy Grand Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9060I.xml' => [ 'Samsung', 'Galaxy Grand Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9060L.xml' => [ 'Samsung', 'Galaxy Grand Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9060M.xml' => [ 'Samsung', 'Galaxy Grand Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9063T.xml' => [ 'Samsung', 'Galaxy Grand Neo Duos', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-MVNO/QF2.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/OF8.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/OG2.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/OI1.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/PC4.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/PF1.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/PI2.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/QA1.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/QD1.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G530P-SPRINT/QF2.rdf' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G5309W_1_20140909.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530AZ.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530BT.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530F.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530FZ.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530FZBO.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530H.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530M.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530MU.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530T.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530T1.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G530W.xml' => [ 'Samsung', 'Galaxy Grand Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G531BT.xml' => [ 'Samsung', 'Galaxy Grand Prime VE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G531FBO.xml' => [ 'Samsung', 'Galaxy Grand Prime VE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G531H.xml' => [ 'Samsung', 'Galaxy Grand Prime VE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G531M.xml' => [ 'Samsung', 'Galaxy Grand Prime VE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G532G.xml' => [ 'Samsung', 'Galaxy Grand Prime+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B9150.xml' => [ 'Samsung', 'Galaxy HomeSync', 'Android', ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I759_1_20130111.xml' => [ 'Samsung', 'Galaxy Infinite', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J100H.xml' => [ 'Samsung', 'Galaxy J1', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J100M.xml' => [ 'Samsung', 'Galaxy J1', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J100ML.xml' => [ 'Samsung', 'Galaxy J1', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J100MU.xml' => [ 'Samsung', 'Galaxy J1', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J100Y.xml' => [ 'Samsung', 'Galaxy J1', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J120F.xml' => [ 'Samsung', 'Galaxy J1 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J120G.xml' => [ 'Samsung', 'Galaxy J1 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J120H.xml' => [ 'Samsung', 'Galaxy J1 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J110F.xml' => [ 'Samsung', 'Galaxy J1 Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J110G.xml' => [ 'Samsung', 'Galaxy J1 Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J110L.xml' => [ 'Samsung', 'Galaxy J1 Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J110M.xml' => [ 'Samsung', 'Galaxy J1 Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J111F.xml' => [ 'Samsung', 'Galaxy J1 Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J111M.xml' => [ 'Samsung', 'Galaxy J1 Ace', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J105B.xml' => [ 'Samsung', 'Galaxy J1 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J105F.xml' => [ 'Samsung', 'Galaxy J1 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J106B.xml' => [ 'Samsung', 'Galaxy J1 Mini Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J106F.xml' => [ 'Samsung', 'Galaxy J1 Mini Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J200BT.xml' => [ 'Samsung', 'Galaxy J2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J200G.xml' => [ 'Samsung', 'Galaxy J2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J200GU.xml' => [ 'Samsung', 'Galaxy J2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J200Y.xml' => [ 'Samsung', 'Galaxy J2', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-BOOST/OL2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-BOOST/PE1.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-BOOST/PH2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-BOOST/PK2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-BOOST/QD2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-BOOST/QG3.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-BOOST/RA1.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-Chameleon/latest' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-SPRINT/OL2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-SPRINT/PE1.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-SPRINT/PH2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-SPRINT/PK2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-SPRINT/QD2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-SPRINT/QG3.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-SPRINT/RA1.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-VIRGIN/OL2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-VIRGIN/PK2.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J320P-VIRGIN/QG3.rdf' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J320F.xml' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J320FN.xml' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J320G.xml' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J320H.xml' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J320MPET.xml' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J320Y.xml' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J320ZN.xml' => [ 'Samsung', 'Galaxy J3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-J3119_1_20160426.xml' => [ 'Samsung', 'Galaxy J3 (2016)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-BOOST/PL1.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-BOOST/QB6.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-BOOST/QF4.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-BOOST/QJ3.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-BOOST/QL3.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-BOOST/RC1.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-Chameleon/latest' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-SPRINT/PL1.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-SPRINT/QB6.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-SPRINT/QF4.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-SPRINT/QI2.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-SPRINT/QJ3.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-SPRINT/QL3.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-SPRINT/RC1.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-VIRGIN/QB6.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J327P-VIRGIN/QF4.rdf' => [ 'Samsung', 'Galaxy J3 Emerge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J500F.xml' => [ 'Samsung', 'Galaxy J5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J500FN.xml' => [ 'Samsung', 'Galaxy J5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J500G.xml' => [ 'Samsung', 'Galaxy J5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J500H.xml' => [ 'Samsung', 'Galaxy J5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J500M.xml' => [ 'Samsung', 'Galaxy J5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J500MPET.xml' => [ 'Samsung', 'Galaxy J5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J500Y.xml' => [ 'Samsung', 'Galaxy J5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J510FN.xml' => [ 'Samsung', 'Galaxy J5 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J510FPTR.xml' => [ 'Samsung', 'Galaxy J5 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J510GN.xml' => [ 'Samsung', 'Galaxy J5 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G570Y.xml' => [ 'Samsung', 'Galaxy J5 Prime', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-BOOST/PB7.rdf' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-BOOST/PF3.rdf' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-BOOST/PH4.rdf' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-BOOST/QF3.rdf' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-Chameleon/latest' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-VIRGIN/PB7.rdf' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-VIRGIN/PF3.rdf' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-VIRGIN/PH4.rdf' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J700P-VIRGIN/QF3.rdf' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J700F.xml' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J700H.xml' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J700M.xml' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J700MPET.xml' => [ 'Samsung', 'Galaxy J7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J710FPTR.xml' => [ 'Samsung', 'Galaxy J7 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-J710GN.xml' => [ 'Samsung', 'Galaxy J7 (2016)', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J727P-BOOST/QF5.rdf' => [ 'Samsung', 'Galaxy J7 Perx', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-J727P-BOOST/RC2.rdf' => [ 'Samsung', 'Galaxy J7 Perx', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G610F.xml' => [ 'Samsung', 'Galaxy J7 Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G610Y.xml' => [ 'Samsung', 'Galaxy J7 Prime', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-N075T.xml' => [ 'Samsung', 'GALAXY J SC-02F', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C111.xml' => [ 'Samsung', 'Galaxy K Zoom', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C111M.xml' => [ 'Samsung', 'Galaxy K Zoom', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C115.xml' => [ 'Samsung', 'Galaxy K Zoom', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C115M.xml' => [ 'Samsung', 'Galaxy K Zoom', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C115W.xml' => [ 'Samsung', 'Galaxy K Zoom', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I200PP/SCH-I200PP.xml' => [ 'Samsung', 'Galaxy Legend', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T399.xml' => [ 'Samsung', 'Galaxy Light', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G7509_1_20141014.xml' => [ 'Samsung', 'Galaxy Mega 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G750A.xml' => [ 'Samsung', 'Galaxy Mega 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G750F.xml' => [ 'Samsung', 'Galaxy Mega 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G750H.xml' => [ 'Samsung', 'Galaxy Mega 2', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SCH-P709E_1_20140113.xml' => [ 'Samsung', 'Galaxy Mega 5.8', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9150.xml' => [ 'Samsung', 'Galaxy Mega 5.8', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9152.xml' => [ 'Samsung', 'Galaxy Mega 5.8 Duos', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-MVNO/QA1.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-SPRINT/MI6.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-SPRINT/MK1.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-SPRINT/NA7.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-SPRINT/ND4.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-SPRINT/NE4.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-SPRINT/NJ1.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L600-SPRINT/QA1.rdf' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_P729_1_20130510.xml' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9200.xml' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9205.xml' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9205BO.xml' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I527.xml' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I527M.xml' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I527MBMC.xml' => [ 'Samsung', 'Galaxy Mega 6.3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5570.xml' => [ 'Samsung', 'Galaxy Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5570B.xml' => [ 'Samsung', 'Galaxy Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5570I.xml' => [ 'Samsung', 'Galaxy Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5570L.xml' => [ 'Samsung', 'Galaxy Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T499V.xml' => [ 'Samsung', 'Galaxy Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T499Y.xml' => [ 'Samsung', 'Galaxy Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6500.xml' => [ 'Samsung', 'Galaxy Mini 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6500BO.xml' => [ 'Samsung', 'Galaxy Mini 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6500D.xml' => [ 'Samsung', 'Galaxy Mini 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6500DBO.xml' => [ 'Samsung', 'Galaxy Mini 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6500L.xml' => [ 'Samsung', 'Galaxy Mini 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6500T.xml' => [ 'Samsung', 'Galaxy Mini 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6010.xml' => [ 'Samsung', 'Galaxy Music', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6010L.xml' => [ 'Samsung', 'Galaxy Music', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6012B.xml' => [ 'Samsung', 'Galaxy Music Duos', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/Galaxy Nexus/Galaxy Nexus.xml' => [ 'Samsung', 'Galaxy Nexus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Galaxy Nexus.xml' => [ 'Samsung', 'Galaxy Nexus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i9250.xml' => [ 'Samsung', 'Galaxy Nexus', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_i889_1_20111028.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9220.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9228.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7000.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7000.xmlhttp://wap.samsungmobile.com/uaprof/.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7000B.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7000BO.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7005.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNG-SGH-I717.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I717.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I717D.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I717M.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I717R.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I9220.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T879.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SHV-E160K.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SHV-E160L.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SHV-E160S.xml' => [ 'Samsung', 'Galaxy Note', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I925/SCH-I925.xml' => [ 'Samsung', 'Galaxy Note 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-N8000.xml' => [ 'Samsung', 'Galaxy Note 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-N8010.xml' => [ 'Samsung', 'Galaxy Note 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-N8020.xml' => [ 'Samsung', 'Galaxy Note 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-N8020BO.xml' => [ 'Samsung', 'Galaxy Note 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-N8020T.xml' => [ 'Samsung', 'Galaxy Note 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P600.xml' => [ 'Samsung', 'Galaxy Note 10.1 (2014)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P601.xml' => [ 'Samsung', 'Galaxy Note 10.1 (2014)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P605.xml' => [ 'Samsung', 'Galaxy Note 10.1 (2014)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P605BO.xml' => [ 'Samsung', 'Galaxy Note 10.1 (2014)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P605M.xml' => [ 'Samsung', 'Galaxy Note 10.1 (2014)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P607T.xml' => [ 'Samsung', 'Galaxy Note 10.1 (2014)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-Chameleon/AAA.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-Chameleon/latest' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-Chameleon/ML9.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-Chameleon/NC5.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-MVNO/OC5.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-MVNO/OH1.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/C5D.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/MI3.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/MI5.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/MJ4.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/NAB.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/NC5.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/NH7.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/NK4.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/OC5.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/OK2.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/PH1.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N900P-SPRINT/PL1.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-BOOSTNC5.rdf' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-N9009_2_20130829.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNG-SM-N900A.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N9005.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N9005BO.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N9005T.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N9007.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N9009.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900A.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900K.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900L.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900PET.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900PTR.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900T.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900V.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N900W8.xml' => [ 'Samsung', 'Galaxy Note 3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-N7509V_1_20140204.xml' => [ 'Samsung', 'Galaxy Note 3 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N750.xml' => [ 'Samsung', 'Galaxy Note 3 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N7502.xml' => [ 'Samsung', 'Galaxy Note 3 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N7505.xml' => [ 'Samsung', 'Galaxy Note 3 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N7505L.xml' => [ 'Samsung', 'Galaxy Note 3 Neo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910F-Chameleon/latest' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-Chameleon/latest' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-MVNO/OB7.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/NIE.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/NK2.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/OB7.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/OE1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/OF5.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/OG5.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/OJ6.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/OK1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PC1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PD1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PE1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PE2.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PH4.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PJ1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PK1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/PL1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/QA1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/QB3.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N910P-SPRINT/QD1.rdf' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-N9109W_1_20140903.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N9106W.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910A.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910C.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910CPET.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910F.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910FPTR.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910G.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910H.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910T.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910T2.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910T3.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910U.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N910W8.xml' => [ 'Samsung', 'Galaxy Note 4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N9200-Chameleon/latest' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-Chameleon/latest' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-MVNO/PD1.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/OGD.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/OI6.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/OJ6.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/OK3.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/PC3.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/PD1.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/PD2.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/PH9.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/PJ2.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/PK1.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/PL1.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/QA1.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N920P-SPRINT/QB1.rdf' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N920G.xml' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N920T.xml' => [ 'Samsung', 'Galaxy Note 5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N930P-SPRINT/PGC.rdf' => [ 'Samsung', 'Galaxy Note 7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N930P-SPRINT/PH9.rdf' => [ 'Samsung', 'Galaxy Note 7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N930P-SPRINT/PHE.rdf' => [ 'Samsung', 'Galaxy Note 7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N930P-SPRINT/PK1.rdf' => [ 'Samsung', 'Galaxy Note 7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N930F.xml' => [ 'Samsung', 'Galaxy Note 7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N5100.xml' => [ 'Samsung', 'Galaxy Note 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-N5110.xml' => [ 'Samsung', 'Galaxy Note 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-N5120.xml' => [ 'Samsung', 'Galaxy Note 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I467.xml' => [ 'Samsung', 'Galaxy Note 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I467M.xml' => [ 'Samsung', 'Galaxy Note 8.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-Chameleon/latest' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/NJL.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/NK1.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/OC8.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/OF6.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/OFE.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/OG1.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/OJ5.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/OK2.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/PD1.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/PE2.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/PH2.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/PH3.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/PJ1.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-N915P-SPRINT/QB3.rdf' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N9150.xml' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N915A.xml' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N915F.xml' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N915FY.xml' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N915G.xml' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N915S.xml' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N915T.xml' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-N915W8.xml' => [ 'Samsung', 'Galaxy Note Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCL24.xml' => [ 'Samsung', 'GALAXY Note Edge SCL24', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-2011011301/MC2.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-2011011301/MK4.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-2011011301/OH3.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-BOOST/OH3.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-Chameleon/LJC.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-Chameleon/MA7.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-Chameleon/MC2.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-Chameleon/MK4D.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/LJ1.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/LJ8.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/LJC.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/MA5.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/MA7.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/MC2.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/MK4.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/NE2.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/NK2.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/OH3.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900-SPRINT/QA1.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L900/MC2.rdf' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_N719_1_20121012.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I605/SCH-I605.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7100.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7100BO.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7100PET.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7100T.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7105.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7105BO.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-N7105T.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/N7100T.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNG-SGH-I317.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I317.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I317M.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T889.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T889V.xml' => [ 'Samsung', 'Galaxy Note II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SC-05D.xml' => [ 'Samsung', 'Galaxy Note LTE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-P900.xml' => [ 'Samsung', 'Galaxy Note Pro', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P901.xml' => [ 'Samsung', 'Galaxy Note Pro', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P905.xml' => [ 'Samsung', 'Galaxy Note Pro', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P905M.xml' => [ 'Samsung', 'Galaxy Note Pro', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P907A.xml' => [ 'Samsung', 'Galaxy Note Pro', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/YP-GB70D.xml' => [ 'Samsung', 'Galaxy Player 70 Plus', 'Android', ], + 'http://wap.samsungmobile.com/uaprof/GT-S5300.xml' => [ 'Samsung', 'Galaxy Pocket', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5300B.xml' => [ 'Samsung', 'Galaxy Pocket', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5300L.xml' => [ 'Samsung', 'Galaxy Pocket', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5310.xml' => [ 'Samsung', 'Galaxy Pocket 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5310B.xml' => [ 'Samsung', 'Galaxy Pocket 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5310BO.xml' => [ 'Samsung', 'Galaxy Pocket 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5310L.xml' => [ 'Samsung', 'Galaxy Pocket 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5310T.xml' => [ 'Samsung', 'Galaxy Pocket 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5312.xml' => [ 'Samsung', 'Galaxy Pocket 2 Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5312B.xml' => [ 'Samsung', 'Galaxy Pocket 2 Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5302.xml' => [ 'Samsung', 'Galaxy Pocket Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5302B.xml' => [ 'Samsung', 'Galaxy Pocket Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5310G.xml' => [ 'Samsung', 'Galaxy Pocket Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5301.xml' => [ 'Samsung', 'Galaxy Pocket Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5301B.xml' => [ 'Samsung', 'Galaxy Pocket Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5301L.xml' => [ 'Samsung', 'Galaxy Pocket Plus', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I559_1_20101216.xml' => [ 'Samsung', 'Galaxy Pop', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/Galaxy Precedent/EJ06.rdf' => [ 'Samsung', 'Galaxy Precedent', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/Precedent/EJ06.rdf' => [ 'Samsung', 'Galaxy Precedent', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SCH-M828C/EH03.rdf' => [ 'Samsung', 'Galaxy Precedent', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SCH-M828C/EJ06.rdf' => [ 'Samsung', 'Galaxy Precedent', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SCH-M828C/FE16.rdf' => [ 'Samsung', 'Galaxy Precedent', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M820-BST/EE14.rdf' => [ 'Samsung', 'Galaxy Prevail', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M820-BST/EJ06.rdf' => [ 'Samsung', 'Galaxy Prevail', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M820-BST/FA19.rdf' => [ 'Samsung', 'Galaxy Prevail', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M820-BST/FF19.rdf' => [ 'Samsung', 'Galaxy Prevail', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SPH-M820-BST.xml' => [ 'Samsung', 'Galaxy Prevail', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7510.xml' => [ 'Samsung', 'Galaxy Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7510B.xml' => [ 'Samsung', 'Galaxy Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7510L.xml' => [ 'Samsung', 'Galaxy Pro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/i110/i110.xml' => [ 'Samsung', 'Galaxy Proclaim', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9103.xml' => [ 'Samsung', 'Galaxy R', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/Samsung/SPH-M950-VMUB/1.0/UAProf.xml' => [ 'Samsung', 'Galaxy Reverb', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-6100000231/OI1.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-6102952738/OI1.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-BOOST/MH5.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-BOOST/NK1.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-BOOST/OI1.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-Chameleon/MH5.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-VIRGIN/ME3.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-VIRGIN/MH5.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-VIRGIN/NK1.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M840-VIRGIN/OI1.rdf' => [ 'Samsung', 'Galaxy Ring', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I547.xml' => [ 'Samsung', 'Galaxy Rugby Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I547C.xml' => [ 'Samsung', 'Galaxy Rugby Pro', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M830-2012042701/MD5.rdf' => [ 'Samsung', 'Galaxy Rush', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M830-2012042701/OI1.rdf' => [ 'Samsung', 'Galaxy Rush', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M830-BOOST/LK7.rdf' => [ 'Samsung', 'Galaxy Rush', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M830-BOOST/MB3.rdf' => [ 'Samsung', 'Galaxy Rush', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M830-BOOST/MD5.rdf' => [ 'Samsung', 'Galaxy Rush', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M830-BOOST/OI1.rdf' => [ 'Samsung', 'Galaxy Rush', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M830-Chameleon/MD5.rdf' => [ 'Samsung', 'Galaxy Rush', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M830-Chameleon/OI1.rdf' => [ 'Samsung', 'Galaxy Rush', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_i809_1_20110307.xml' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_i909_1_20100527.xml' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/samsung-schi909.xml' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9000.xml' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i9000B.xml' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9000BO.xml' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9000M.xml' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i9000T.rdf' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9000T.xml' => [ 'Samsung', 'Galaxy S', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T959V.xml' => [ 'Samsung', 'Galaxy S 4G', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9070.xml' => [ 'Samsung', 'Galaxy S Advance', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9070BO.xml' => [ 'Samsung', 'Galaxy S Advance', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9070P.xml' => [ 'Samsung', 'Galaxy S Advance', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9070PBO.xml' => [ 'Samsung', 'Galaxy S Advance', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T769.xml' => [ 'Samsung', 'Galaxy S Blaze', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I919U_1_20120216.xml' => [ 'Samsung', 'Galaxy S Duos', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_i919_1_20110615.xml' => [ 'Samsung', 'Galaxy S Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7562.xml' => [ 'Samsung', 'Galaxy S Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7562L.xml' => [ 'Samsung', 'Galaxy S Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7582.xml' => [ 'Samsung', 'Galaxy S Duos 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7582L.xml' => [ 'Samsung', 'Galaxy S Duos 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7583T.xml' => [ 'Samsung', 'Galaxy S Duos 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G316HU.xml' => [ 'Samsung', 'Galaxy S Duos 3-VE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T959D.xml' => [ 'Samsung', 'Galaxy S Fascinate 3G+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T959P.xml' => [ 'Samsung', 'Galaxy S Fascinate 4G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/DPH-D710/L14.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/DPH-D710vmub/L14.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LIB.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LP7.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LPA.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LPB.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LPF.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LPS.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LPX.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LQ6.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9100/LS8.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SCH-R760X/B28.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/A10.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/B27.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/EG30.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/EK02.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/EL29.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/EL88.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FD19.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FD24.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FD26.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FE22.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FF18.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FH13.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FI03.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FI25.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FI27.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/FL24.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/GA10.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/I23.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/K09.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/K23.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/L24.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/SPH-D710.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710/ZZ99.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710BST/C01.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710BST/FH29.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710BST/FI22.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710BST/FL24.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710VMUB/.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710VMUB/FL26.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-D710VMUBVMUB/.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9100.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9100BO.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9100G.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9100M.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9100P.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9100T.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9100THZ.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SC-02C.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I727R.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I777.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S959G.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T989.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/soju.xml' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://­device.sprintpcs.com /­HTC/HTCPN702-SPRINT/­3046512.rdf' => [ 'Samsung', 'Galaxy S II', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_i929_1_20110901.xml' => [ 'Samsung', 'Galaxy S II Duos', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_i929_2_20120705.XML' => [ 'Samsung', 'Galaxy S II Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9210.xml' => [ 'Samsung', 'Galaxy S II LTE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9210T.xml' => [ 'Samsung', 'Galaxy S II LTE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SHV-E110S.xml' => [ 'Samsung', 'Galaxy S II LTE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9105P.xml' => [ 'Samsung', 'Galaxy S II Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9105PBO.xml' => [ 'Samsung', 'Galaxy S II Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNG-SGH-I727.xml' => [ 'Samsung', 'Galaxy S II Skyrocket', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I727.xml' => [ 'Samsung', 'Galaxy S II Skyrocket', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/soljus.xml' => [ 'Samsung', 'Galaxy S II Skyrocket', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I757.xml' => [ 'Samsung', 'Galaxy S II Skyrocket HD', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I757M.xml' => [ 'Samsung', 'Galaxy S II Skyrocket HD', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7273T.xml' => [ 'Samsung', 'Galaxy S II TV', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T989D.xml' => [ 'Samsung', 'Galaxy S II X', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LF5.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LH1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LI1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LI2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LIB.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LID.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LJ1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LK1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/LL4.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/MA1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/MB1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9300/MB5.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SAMSUNG-SGH-I747/LK3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SCH-S960L/MD6.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SHV-E210S/LH7.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-2012083001/MG2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-BOOST/MG2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-BOOST/MK5.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-BOOST/NDC.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-BOOST/NJ3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-BOOST/OJ1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-Chameleon/latest' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-VIRGIN/MD7.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-VIRGIN/MG2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-VIRGIN/MK5.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-VIRGIN/NDC.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-VIRGIN/NJ3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710-VIRGIN/OJ1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LE5.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LEN.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LF9.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LG2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LG8.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LI3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LIF.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LIH.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/LJ7.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/MA4.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/MA6.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/MB1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/MB3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/MC3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/MD4.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/MK3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/MK5.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/ND8.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/NJ2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710/OH1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-2012071301/OF2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-2012071301/OH1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-BOOST/NE5.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-BOOST/NF4.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-BOOST/OA3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-BOOST/OF2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-BOOST/OH1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-SPRINT/NE5.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-SPRINT/OA3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-SPRINT/OF2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-SPRPRE/NF4.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-SPRPRE/OA3.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-SPRPRE/OF2.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-SPRPRE/OH1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-VIRGIN/NF4.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L710T-VIRGIN/OH1.rdf' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I939D_1_20121031.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I939_1_20120309.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SCH-I939I_1_20140116.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/SCH-R530M.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/SAMSUNG-SCH-I939_CHN_BRI.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/GT-I9300/GT-I9300.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/r530/r530v1.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I535/SCH-I535.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I535PP/SCH-I535PP.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SPH-L710/SPH-L710.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Galaxy S III.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9300.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9300BO.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9300I.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9300MIRS.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9300PCL.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9300T.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9301IBO.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9305.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9305BO.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9305T.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNG-SGH-I747.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCH-S968C.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I747.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I747M.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I748.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T999.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T999N.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T999V.xml' => [ 'Samsung', 'Galaxy S III', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8190.xml' => [ 'Samsung', 'Galaxy S III Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8190BO.xml' => [ 'Samsung', 'Galaxy S III Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8190L.xml' => [ 'Samsung', 'Galaxy S III Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8190N.xml' => [ 'Samsung', 'Galaxy S III Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8190NBO.xml' => [ 'Samsung', 'Galaxy S III Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8190T.xml' => [ 'Samsung', 'Galaxy S III Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G730A.xml' => [ 'Samsung', 'Galaxy S III Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G730W8.xml' => [ 'Samsung', 'Galaxy S III Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8200.xml' => [ 'Samsung', 'Galaxy S III Mini Value Edition', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8200L.xml' => [ 'Samsung', 'Galaxy S III Mini Value Edition', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8200N.xml' => [ 'Samsung', 'Galaxy S III Mini Value Edition', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8200NAO.xml' => [ 'Samsung', 'Galaxy S III Mini Value Edition', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G3812B.xml' => [ 'Samsung', 'Galaxy S III Slim', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9001.xml' => [ 'Samsung', 'Galaxy S Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9001BO.xml' => [ 'Samsung', 'Galaxy S Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T699.xml' => [ 'Samsung', 'Galaxy S Relay', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/YP-GI1.xml' => [ 'Samsung', 'Galaxy S WiFi 4.2', 'Android', ], + 'http://wap.samsungmobile.com/uaprof/GT-I9301I.xml' => [ 'Samsung', 'Galaxy S3 Neo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9500-Chameleon/latest' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9500-Chameleon/NAE.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9500/GT-I9500.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/GT-I9505-Chameleon/NAE.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/L720-BOOST/PL1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/NB4.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-11/NAE.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-11/OK3.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-11/PL1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-2010122001/NAE.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-2011011301/OD2.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-2011011301/OH1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-2012083001/NG2.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-2012083001/PL1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-500002419/NAE.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-Chameleon/latest' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-Chameleon/MCI.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-Chameleon/MDC.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-Chameleon/MDL.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-Chameleon/MF9.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-Chameleon/NAE.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-Chameleon/NG2.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/MDC.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/MDL.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/MF9.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/MJA.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/MK2.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/NA7.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/NAE.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/NG2.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/OD2.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/OK3.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/PI2.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720-SPRINT/PL1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-BOOST/OK3.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-BOOST/PL1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-Chameleon/latest' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-Chameleon/NG5.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-MVNO/NC6.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-MVNO/NG5.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-MVNO/OA3.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-MVNO/OK3.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/MK5.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/NAF.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/NC6.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/NG5.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/OA3.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/OD2.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/OF1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/OK3.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L720T-SPRINT/PL1.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L72A-SPRINT/MF9.rdf' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/I9500-M3-D1-KK.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I959_1_20130319.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I959_2_20131021.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SCH-I959_1_20140317.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://pix.cspire.com/UA/profile/samsung/r970x/r970x.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://pix.cspire.com/UA/profile/samsung/SCH-L710/SCH-L710.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/GT-I9500/GT-I9500.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9500.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9500MIRS.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9500PCL.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9500PET.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9505.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9505BMC.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9505BO.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9505G.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9505T.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9507.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I217.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I337.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I337M.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I337MBMC.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I337MPET.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I337Z.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M919.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M919N.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M919V.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M919VLTN.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S970G.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-S975L.xml' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://www.cherrymobile.com.ph/Burst_2-0_UAprofile.XML' => [ 'Samsung', 'Galaxy S4', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9295.xml' => [ 'Samsung', 'Galaxy S4 Active', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9295BO.xml' => [ 'Samsung', 'Galaxy S4 Active', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNG-SGH-I537.xml' => [ 'Samsung', 'Galaxy S4 Active', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I537.xml' => [ 'Samsung', 'Galaxy S4 Active', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9506.xml' => [ 'Samsung', 'Galaxy S4 Advance', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9506BO.xml' => [ 'Samsung', 'Galaxy S4 Advance', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9506T.xml' => [ 'Samsung', 'Galaxy S4 Advance', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-Chameleon/latest' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-Chameleon/ME3.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-Chameleon/NA7.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-SPRINT/MI3.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-SPRINT/MK2.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-SPRINT/NA7.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-SPRINT/NE3.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-SPRINT/NJ1.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L520-SPRINT/QA1.rdf' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9190.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9190PET.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9195.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9195BO.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9195I.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9195L.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9195LPET.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9195T.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9197.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I257.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I257M.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-S890L.xml' => [ 'Samsung', 'Galaxy S4 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9192.xml' => [ 'Samsung', 'Galaxy S4 Mini Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9515.xml' => [ 'Samsung', 'Galaxy S4 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9515L.xml' => [ 'Samsung', 'Galaxy S4 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9515LPET.xml' => [ 'Samsung', 'Galaxy S4 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNG-SM-C105A.xml' => [ 'Samsung', 'Galaxy S4 Zoom', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C101.xml' => [ 'Samsung', 'Galaxy S4 Zoom', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C105.xml' => [ 'Samsung', 'Galaxy S4 Zoom', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-C105A.xml' => [ 'Samsung', 'Galaxy S4 Zoom', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/G900P-BOOST/PE2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900A/SM-G900A.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-2012071301/PCA.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/NE5.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/OA6.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/OD3.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/OF6.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/OG1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/OK4.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/PCA.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/PE1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/PE2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/PG1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/PH3.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/PJ2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-BOOST/QD1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-Chameleon/latest' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-Chameleon/NCB.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-MVNO/ND2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/NCB.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/ND2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/NE5.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/NK4.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/NKD.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/OA6.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/OD3.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/OF6.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/OG1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/OK4.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/PCA.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/PE1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/PE2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/PH3.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/PJ2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/PK1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/PL2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/QA2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/QB3.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/QC1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-SPRINT/QD1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-VIRGIN/NE5.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-VIRGIN/NK4.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-VIRGIN/OA6.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-VIRGIN/OD3.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-VIRGIN/OF6.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-VIRGIN/OG1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-VIRGIN/PL2.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P-VIRGIN/QD1.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G900P/SM-G900P.rdf' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G9009D_1_20140227.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G9009W_1_20140415.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SM-G900MR621.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNG-SM-G900A.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCL23.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G9008W.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900A.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900AZ.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900F.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900FBO.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900FPCL.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900FPTR.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900H.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900I.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900J.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900L.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900M.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900MD.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900MPET.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900T.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900T1.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900T3.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900V.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900W8.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G900W8MTA.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G901F.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G906L.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G906S.xml' => [ 'Samsung', 'Galaxy S5', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G870A.xml' => [ 'Samsung', 'Galaxy S5 Active', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G870W.xml' => [ 'Samsung', 'Galaxy S5 Active', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G800A.xml' => [ 'Samsung', 'Galaxy S5 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G800F.xml' => [ 'Samsung', 'Galaxy S5 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G800H.xml' => [ 'Samsung', 'Galaxy S5 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G800M.xml' => [ 'Samsung', 'Galaxy S5 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G800MPET.xml' => [ 'Samsung', 'Galaxy S5 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G800Y.xml' => [ 'Samsung', 'Galaxy S5 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G903F.xml' => [ 'Samsung', 'Galaxy S5 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G903M.xml' => [ 'Samsung', 'Galaxy S5 Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G903W.xml' => [ 'Samsung', 'Galaxy S5 Neo', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-Chameleon/latest' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/latest' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/NG2.rdf' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/NG3.rdf' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/NK2.rdf' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/OC5.rdf' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/OK1.rdf' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/PD1.rdf' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G860P-SPRINT/PH4.rdf' => [ 'Samsung', 'Galaxy S5 Sport', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-BOOST/OCF.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-BOOST/OE2.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-BOOST/OI1.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-BOOST/PD2.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-Chameleon/latest' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-MVNO/OE2.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/latest' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OC9.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OCF.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OE2.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OF7.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OFE.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OGA.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OI1.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OJ7.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/OL1.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PB6.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PD2.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PD3.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PF4.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PG3.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PI3.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PJ1.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PK1.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/PL3.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/QA2.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G920P-SPRINT/QB1.rdf' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G9209_1_20150302.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920A.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920AZ.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920F.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920FPCL.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920FPTR.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920I.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920IPET.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920T.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920T1.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G920W8.xml' => [ 'Samsung', 'Galaxy S6', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G890A.xml' => [ 'Samsung', 'Galaxy S6 Active', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-Chameleon/latest' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OC9.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OCF.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OE2.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OF7.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OFE.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OGA.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OI1.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OJ7.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/OL1.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PB6.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PD2.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PD3.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PF4.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PG3.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PI3.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PJ1.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PK1.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/PL3.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/QA2.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G925P-SPRINT/QB1.rdf' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925A.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925D.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925F.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925FPCL.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925FPTR.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925I.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925IPET.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925K.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925T.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G925W8.xml' => [ 'Samsung', 'Galaxy S6 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-Chameleon/latest' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/OGD.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/OI6.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/OJ6.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/OK3.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/PC3.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/PD1.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/PD2.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/PH9.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/PJ2.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G928P-SPRINT/QB1.rdf' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNGUAPROFA.xml' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G928F.xml' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G928G.xml' => [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-G928P Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/5.0 Chrome/51.0.2704.106 Mobile Safari/537.36'=> [ 'Samsung', 'Galaxy S6 Edge+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SC-05G.xml' => [ 'Samsung', 'GALAXY S6 SC-05G', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-BOOST/PH7.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-Chameleon/latest' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-MVNO/PG1.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PB5.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PC5.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PD3.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PE1.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PF2.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PH7.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PJ2.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PK1.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/PL6.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/QAA.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/QC1.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/QD2.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G930P-SPRINT/QE1.rdf' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G930F.xml' => [ 'Samsung', 'Galaxy S7', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-Chameleon/latest' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PB5.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PC5.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PD3.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PE1.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PF2.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PG1.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PH7.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PJ2.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PK1.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/PL6.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/QAA.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-G935P-SPRINT/QC1.rdf' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SAMSUNGUAPROFC.xml' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G935F.xml' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G935T.xml' => [ 'Samsung', 'Galaxy S7 Edge', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/odsamg955u/odsamg955u.xml' => [ 'Samsung', 'Galaxy S8+', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I9003.xml' => [ 'Samsung', 'Galaxy SL', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i9003L.xml' => [ 'Samsung', 'Galaxy SL', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5700L.xml' => [ 'Samsung', 'Galaxy Spica', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i5700R.xml' => [ 'Samsung', 'Galaxy Spica', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5280.xml' => [ 'Samsung', 'Galaxy Star', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5282.xml' => [ 'Samsung', 'Galaxy Star', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7262.xml' => [ 'Samsung', 'Galaxy Star Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5283B.xml' => [ 'Samsung', 'Galaxy Star Trios', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-S766C.xml' => [ 'Samsung', 'Galaxy Stardust', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I200/SCH-I200.xml' => [ 'Samsung', 'Galaxy Stellar', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-P100/EA24.rdf' => [ 'Samsung', 'Galaxy Tab', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SPH-P100/EF17.rdf' => [ 'Samsung', 'Galaxy Tab', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-p1000.xml' => [ 'Samsung', 'Galaxy Tab', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P1000L.xml' => [ 'Samsung', 'Galaxy Tab', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P1000M.xml' => [ 'Samsung', 'Galaxy Tab', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P1000N.xml' => [ 'Samsung', 'Galaxy Tab', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P1000R.xml' => [ 'Samsung', 'Galaxy Tab', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P1000T.xml' => [ 'Samsung', 'Galaxy Tab', 'Android', DeviceType::TABLET ], + 'http://uaprof.vtext.com/sam/i905/i905.xml' => [ 'Samsung', 'Galaxy Tab 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7500.xml' => [ 'Samsung', 'Galaxy Tab 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7500BO.xml' => [ 'Samsung', 'Galaxy Tab 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7500D.xml' => [ 'Samsung', 'Galaxy Tab 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7500M.xml' => [ 'Samsung', 'Galaxy Tab 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7500R.xml' => [ 'Samsung', 'Galaxy Tab 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7500V.xml' => [ 'Samsung', 'Galaxy Tab 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7510.xml' => [ 'Samsung', 'Galaxy Tab 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7501BO.xml' => [ 'Samsung', 'Galaxy Tab 10.1N', 'Android', DeviceType::TABLET ], + 'http://uaprof.vtext.com/sam/SCH-I915/SCH-I915.xml' => [ 'Samsung', 'Galaxy Tab 2 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P5100.xml' => [ 'Samsung', 'Galaxy Tab 2 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P5100BO.xml' => [ 'Samsung', 'Galaxy Tab 2 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P5110.xml' => [ 'Samsung', 'Galaxy Tab 2 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P5113.xml' => [ 'Samsung', 'Galaxy Tab 2 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I497.xml' => [ 'Samsung', 'Galaxy Tab 2 (10.1)', 'Android', DeviceType::TABLET ], + 'http://uaprof.vtext.com/sam/SCH-i705/SCH-i705.xml' => [ 'Samsung', 'Galaxy Tab 2 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P3100.xml' => [ 'Samsung', 'Galaxy Tab 2 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P3100B.xml' => [ 'Samsung', 'Galaxy Tab 2 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P3105.xml' => [ 'Samsung', 'Galaxy Tab 2 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P3110.xml' => [ 'Samsung', 'Galaxy Tab 2 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SPH-P500/LI6.rdf' => [ 'Samsung', 'Galaxy Tab 2 10.1', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SPH-P500/MB3.rdf' => [ 'Samsung', 'Galaxy Tab 2 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I497OYA.xml' => [ 'Samsung', 'Galaxy Tab 2 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P5200.xml' => [ 'Samsung', 'Galaxy Tab 3 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P5210.xml' => [ 'Samsung', 'Galaxy Tab 3 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P5220.xml' => [ 'Samsung', 'Galaxy Tab 3 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P5220BO.xml' => [ 'Samsung', 'Galaxy Tab 3 (10.1)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-Chameleon/latest' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-Chameleon/NB8.rdf' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-SPRINT/MH9.rdf' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-SPRINT/NB8.rdf' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-SPRINT/NE7.rdf' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-SPRINT/NH4.rdf' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-SPRINT/NK1.rdf' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T210.xml' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T211.xml' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T211M.xml' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T215.xml' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T217A.xml' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T217T.xml' => [ 'Samsung', 'Galaxy Tab 3 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T310.xml' => [ 'Samsung', 'Galaxy Tab 3 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T311.xml' => [ 'Samsung', 'Galaxy Tab 3 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T315.xml' => [ 'Samsung', 'Galaxy Tab 3 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T315BO.xml' => [ 'Samsung', 'Galaxy Tab 3 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T315T.xml' => [ 'Samsung', 'Galaxy Tab 3 (8.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T217S-SPRINT/QA1.rdf' => [ 'Samsung', 'Galaxy Tab 3 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T2105.xml' => [ 'Samsung', 'Galaxy Tab 3 Kids', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T110.xml' => [ 'Samsung', 'Galaxy Tab 3 Lite', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T111.xml' => [ 'Samsung', 'Galaxy Tab 3 Lite', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T111BO.xml' => [ 'Samsung', 'Galaxy Tab 3 Lite', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T111M.xml' => [ 'Samsung', 'Galaxy Tab 3 Lite', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-T535.xml' => [ 'Samsung', 'Galaxy Tab 4 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T530.xml' => [ 'Samsung', 'Galaxy Tab 4 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T531.xml' => [ 'Samsung', 'Galaxy Tab 4 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T535.xml' => [ 'Samsung', 'Galaxy Tab 4 (10.1)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T535BO.xml' => [ 'Samsung', 'Galaxy Tab 4 (10.1)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T237P-SPRINT/NG3.rdf' => [ 'Samsung', 'Galaxy Tab 4 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T237P-SPRINT/NL1.rdf' => [ 'Samsung', 'Galaxy Tab 4 (7.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T237P-SPRINT/OH7.rdf' => [ 'Samsung', 'Galaxy Tab 4 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T230.xml' => [ 'Samsung', 'Galaxy Tab 4 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T230NT.xml' => [ 'Samsung', 'Galaxy Tab 4 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T231.xml' => [ 'Samsung', 'Galaxy Tab 4 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T235.xml' => [ 'Samsung', 'Galaxy Tab 4 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T235BO.xml' => [ 'Samsung', 'Galaxy Tab 4 (7.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T330.xml' => [ 'Samsung', 'Galaxy Tab 4 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T331.xml' => [ 'Samsung', 'Galaxy Tab 4 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T335.xml' => [ 'Samsung', 'Galaxy Tab 4 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T335BO.xml' => [ 'Samsung', 'Galaxy Tab 4 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T337A.xml' => [ 'Samsung', 'Galaxy Tab 4 (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T337T.xml' => [ 'Samsung', 'Galaxy Tab 4 (8.0)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T237P-SPRINT/PF1.rdf' => [ 'Samsung', 'Galaxy Tab 4 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T237P-SPRINT/PH4.rdf' => [ 'Samsung', 'Galaxy Tab 4 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T237P-SPRINT/PL1.rdf' => [ 'Samsung', 'Galaxy Tab 4 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T239.xml' => [ 'Samsung', 'Galaxy Tab 4 Lite', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T239M.xml' => [ 'Samsung', 'Galaxy Tab 4 Lite', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SPH-P100/DJ30.rdf' => [ 'Samsung', 'Galaxy Tab 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I987.xml' => [ 'Samsung', 'Galaxy Tab 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-T849.xml' => [ 'Samsung', 'Galaxy Tab 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P6200.xml' => [ 'Samsung', 'Galaxy Tab 7.0 Plus', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P6200L.xml' => [ 'Samsung', 'Galaxy Tab 7.0 Plus', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P6210.xml' => [ 'Samsung', 'Galaxy Tab 7.0 Plus', 'Android', DeviceType::TABLET ], + 'http://uaprof.vtext.com/sam/i815/i815.xml' => [ 'Samsung', 'Galaxy Tab 7.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P6800.xml' => [ 'Samsung', 'Galaxy Tab 7.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P6810.xml' => [ 'Samsung', 'Galaxy Tab 7.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SHV-E150S.xml' => [ 'Samsung', 'Galaxy Tab 7.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7300.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7300B.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7300BO.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7310.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7320.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-P7320T.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I957.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I957D.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I957M.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SGH-I957R.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SHV-E140K.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SHV-E140L.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SHV-E140S.xml' => [ 'Samsung', 'Galaxy Tab 8.9', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T587P-Chameleon/latest' => [ 'Samsung', 'Galaxy Tab A 10.1 (2016)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T587P-SPRINT/QB1.rdf' => [ 'Samsung', 'Galaxy Tab A 10.1 (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-T580.xml' => [ 'Samsung', 'Galaxy Tab A 10.1 (2016)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T585.xml' => [ 'Samsung', 'Galaxy Tab A 10.1 (2016)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P585Y.xml' => [ 'Samsung', 'Galaxy Tab A 10.1 with S Pen (2016)', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-T280.xml' => [ 'Samsung', 'Galaxy Tab A 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T285YD.xml' => [ 'Samsung', 'Galaxy Tab A 7.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T350.xml' => [ 'Samsung', 'Galaxy Tab A 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T355Y.xml' => [ 'Samsung', 'Galaxy Tab A 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T357T.xml' => [ 'Samsung', 'Galaxy Tab A 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T357W.xml' => [ 'Samsung', 'Galaxy Tab A 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T365Y.xml' => [ 'Samsung', 'Galaxy Tab A 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T550.xml' => [ 'Samsung', 'Galaxy Tab A 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P350.xml' => [ 'Samsung', 'Galaxy Tab A Plus 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P355.xml' => [ 'Samsung', 'Galaxy Tab A Plus 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P550.xml' => [ 'Samsung', 'Galaxy Tab A Plus 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P555.xml' => [ 'Samsung', 'Galaxy Tab A Plus 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-P555M.xml' => [ 'Samsung', 'Galaxy Tab A Plus 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T365.xml' => [ 'Samsung', 'Galaxy Tab Active (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T365M.xml' => [ 'Samsung', 'Galaxy Tab Active (8.0)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T555.xml' => [ 'Samsung', 'Galaxy Tab AL', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T285.xml' => [ 'Samsung', 'Galaxy Tab E 7.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T377P-Chameleon/latest' => [ 'Samsung', 'Galaxy Tab E 8.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T377P-SPRINT/OJ5.rdf' => [ 'Samsung', 'Galaxy Tab E 8.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T377P-SPRINT/PE6.rdf' => [ 'Samsung', 'Galaxy Tab E 8.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T377P-SPRINT/PI3.rdf' => [ 'Samsung', 'Galaxy Tab E 8.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T377P-SPRINT/PJ1.rdf' => [ 'Samsung', 'Galaxy Tab E 8.0', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T377P-SPRINT/QH2.rdf' => [ 'Samsung', 'Galaxy Tab E 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T520.xml' => [ 'Samsung', 'Galaxy Tab Pro 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T525.xml' => [ 'Samsung', 'Galaxy Tab Pro 10.1', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T320.xml' => [ 'Samsung', 'Galaxy Tab Pro 8.4', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T325.xml' => [ 'Samsung', 'Galaxy Tab Pro 8.4', 'Android', DeviceType::TABLET ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-T2519_1_20140428.xml' => [ 'Samsung', 'Galaxy Tab Q', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SM-T807P-Chameleon/latest' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T807P-SPRINT/NH1.rdf' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T807P-SPRINT/NK1.rdf' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T807P-SPRINT/OH1.rdf' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T807P-SPRINT/OJ4.rdf' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T807P-SPRINT/OL3.rdf' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T807P-SPRINT/PI1.rdf' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T537A.xml' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T800.xml' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T805.xml' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T805M.xml' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T805W.xml' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T805Y.xml' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T807A.xml' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T807T.xml' => [ 'Samsung', 'Galaxy Tab S 10.5', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T700.xml' => [ 'Samsung', 'Galaxy Tab S 8.4', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T705.xml' => [ 'Samsung', 'Galaxy Tab S 8.4', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T705M.xml' => [ 'Samsung', 'Galaxy Tab S 8.4', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T705W.xml' => [ 'Samsung', 'Galaxy Tab S 8.4', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T705Y.xml' => [ 'Samsung', 'Galaxy Tab S 8.4', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T707A.xml' => [ 'Samsung', 'Galaxy Tab S 8.4', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T710.xml' => [ 'Samsung', 'Galaxy Tab S2 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T715.xml' => [ 'Samsung', 'Galaxy Tab S2 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T715Y.xml' => [ 'Samsung', 'Galaxy Tab S2 8.0', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T719.xml' => [ 'Samsung', 'Galaxy Tab S2 8.0 (2016)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T719Y.xml' => [ 'Samsung', 'Galaxy Tab S2 8.0 (2016)', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T817P-Chameleon/latest' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T817P-SPRINT/OH6.rdf' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T817P-SPRINT/OJ5.rdf' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T817P-SPRINT/OL1.rdf' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T817P-SPRINT/PE1.rdf' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/Samsung/SM-T817P-SPRINT/PL1.rdf' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T810.xml' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T815.xml' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T815Y.xml' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T817A.xml' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T817T.xml' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T817W.xml' => [ 'Samsung', 'Galaxy Tab S2 9.7', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T813.xml' => [ 'Samsung', 'Galaxy Tab S2 9.7 (2016)', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T819Y.xml' => [ 'Samsung', 'Galaxy Tab S3 9.7', 'Android', DeviceType::TABLET ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I719_1_20120413.xml' => [ 'Samsung', 'Galaxy Trend', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7392.xml' => [ 'Samsung', 'Galaxy Trend', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7392L.xml' => [ 'Samsung', 'Galaxy Trend', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCH-I699I.xml' => [ 'Samsung', 'Galaxy Trend', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCH-I699I_1_20130805.xml' => [ 'Samsung', 'Galaxy Trend', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G3509_1_20130816.xml' => [ 'Samsung', 'Galaxy Trend 3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G3509_2_20130816.xml' => [ 'Samsung', 'Galaxy Trend 3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SM-G3509I_1_20131030.xml' => [ 'Samsung', 'Galaxy Trend 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G3502L.xml' => [ 'Samsung', 'Galaxy Trend 3', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G3502T.xml' => [ 'Samsung', 'Galaxy Trend 3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I739_1_20130122.XML' => [ 'Samsung', 'Galaxy Trend II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7390L.xml' => [ 'Samsung', 'Galaxy Trend Lite', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7580.xml' => [ 'Samsung', 'Galaxy Trend Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7580BO.xml' => [ 'Samsung', 'Galaxy Trend Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7580E.xml' => [ 'Samsung', 'Galaxy Trend Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7580L.xml' => [ 'Samsung', 'Galaxy Trend Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7580LPET.xml' => [ 'Samsung', 'Galaxy Trend Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/`per`s.xml' => [ 'Samsung', 'Galaxy Trend Plus', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/Samsung/SPH-L300-VMUB/1.0/UAProf.xml' => [ 'Samsung', 'Galaxy Victory', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300-2012083001/MG5.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300-Chameleon/LK5.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300-Chameleon/MG5.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300-VIRGIN/MA8.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300-VIRGIN/MC1.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300-VIRGIN/MG5.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300-VIRGIN/ND4.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300/LH1.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300/LI3.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300/LJ9.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300/MC1.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-L300/ND4.rdf' => [ 'Samsung', 'Galaxy Victory 4G LTE', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-T670.xml' => [ 'Samsung', 'Galaxy View', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/SM-T677.xml' => [ 'Samsung', 'Galaxy View', 'Android', DeviceType::TABLET ], + 'http://wap.samsungmobile.com/uaprof/GT-I8150.xml' => [ 'Samsung', 'Galaxy W', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8150B.xml' => [ 'Samsung', 'Galaxy W', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8150T.xml' => [ 'Samsung', 'Galaxy W', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-W2014_1_20130916.xml' => [ 'Samsung', 'Galaxy W2014', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I869_1_20130415.xml' => [ 'Samsung', 'Galaxy Win', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8550L.xml' => [ 'Samsung', 'Galaxy Win', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8552.xml' => [ 'Samsung', 'Galaxy Win', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8552B.xml' => [ 'Samsung', 'Galaxy Win', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G360BT.xml' => [ 'Samsung', 'Galaxy Win 2 Duos TV', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SM-G3819D_1_20130821.xml' => [ 'Samsung', 'Galaxy Win Pro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/SAMSUNG-SM-G3819_CHN_BRI.xml' => [ 'Samsung', 'Galaxy Win Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5690.xml' => [ 'Samsung', 'Galaxy Xcover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5690BO.xml' => [ 'Samsung', 'Galaxy Xcover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5690L.xml' => [ 'Samsung', 'Galaxy Xcover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5690M.xml' => [ 'Samsung', 'Galaxy Xcover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5690R.xml' => [ 'Samsung', 'Galaxy Xcover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5698.xml' => [ 'Samsung', 'Galaxy Xcover', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7710.xml' => [ 'Samsung', 'Galaxy Xcover 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7710BO.xml' => [ 'Samsung', 'Galaxy Xcover 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7710L.xml' => [ 'Samsung', 'Galaxy Xcover 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G388F.xml' => [ 'Samsung', 'Galaxy Xcover 3', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I509_1_20101216.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/SAMSUNG-SCH-I509_CHN_BRI.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5360.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5360B.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5360BO.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5360L.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5360T.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5363.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5369.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Hamitsuka.xml' => [ 'Samsung', 'Galaxy Y', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6102.xml' => [ 'Samsung', 'Galaxy Y Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6102B.xml' => [ 'Samsung', 'Galaxy Y Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6102E.xml' => [ 'Samsung', 'Galaxy Y Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6313T.xml' => [ 'Samsung', 'Galaxy Y Duos TV', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5303B.xml' => [ 'Samsung', 'Galaxy Y Plus', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5510.xml' => [ 'Samsung', 'Galaxy Y Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5510B.xml' => [ 'Samsung', 'Galaxy Y Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5510BO.xml' => [ 'Samsung', 'Galaxy Y Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5510BV.xml' => [ 'Samsung', 'Galaxy Y Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5510L.xml' => [ 'Samsung', 'Galaxy Y Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5512.xml' => [ 'Samsung', 'Galaxy Y Pro Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5512B.xml' => [ 'Samsung', 'Galaxy Y Pro Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5367.xml' => [ 'Samsung', 'Galaxy Y TV', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6310.xml' => [ 'Samsung', 'Galaxy Young', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6310B.xml' => [ 'Samsung', 'Galaxy Young', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6310BO.xml' => [ 'Samsung', 'Galaxy Young', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6310L.xml' => [ 'Samsung', 'Galaxy Young', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6310N.xml' => [ 'Samsung', 'Galaxy Young', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6310NBO.xml' => [ 'Samsung', 'Galaxy Young', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6310T.xml' => [ 'Samsung', 'Galaxy Young', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G130BT.xml' => [ 'Samsung', 'Galaxy Young 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G130BU.xml' => [ 'Samsung', 'Galaxy Young 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G130H.xml' => [ 'Samsung', 'Galaxy Young 2', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G130HN.xml' => [ 'Samsung', 'Galaxy Young 2 Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G130HNBO.xml' => [ 'Samsung', 'Galaxy Young 2 Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-G130M.xml' => [ 'Samsung', 'Galaxy Young 2 Duos', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6293T.xml' => [ 'Samsung', 'Galaxy Young Plus', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/i100/i100v1.xml' => [ 'Samsung', 'Gem', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7620.xml' => [ 'Samsung', 'Giorgio Armani', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/U700VUAProf2G.rdf' => [ 'Samsung', 'Gleam', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T459.xml' => [ 'Samsung', 'Gravity', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T469.xml' => [ 'Samsung', 'Gravity 2', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T289.xml' => [ 'Samsung', 'Gravity Q', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T589.xml' => [ 'Samsung', 'Gravity Smart', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T589R.xml' => [ 'Samsung', 'Gravity Smart', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T589W.xml' => [ 'Samsung', 'Gravity Smart', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B2100i.xml' => [ 'Samsung', 'GT-B2100i', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5210U-3G_10.xml' => [ 'Samsung', 'GT-B5210', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B5210U_10.xml' => [ 'Samsung', 'GT-B5210', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3010UAProf.xml' => [ 'Samsung', 'GT-C3010', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3011.xml' => [ 'Samsung', 'GT-C3011', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3060UAProf.xml' => [ 'Samsung', 'GT-C3060', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3230_2G.rdf' => [ 'Samsung', 'GT-C3230', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3313TBR.xml' => [ 'Samsung', 'GT-C3313', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3322.xml' => [ 'Samsung', 'GT-C3322 Duos', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3322iUAProf.xml' => [ 'Samsung', 'GT-C3322 Duos', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3380UAProf.xml' => [ 'Samsung', 'GT-C3380', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3510.xml' => [ 'Samsung', 'GT-C3510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3520.xml' => [ 'Samsung', 'GT-C3520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3530UAProf.xml' => [ 'Samsung', 'GT-C3530', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3560UAProf.xml' => [ 'Samsung', 'GT-C3560', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3590UAProf.xml' => [ 'Samsung', 'GT-C3590', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3592UAProf.xml' => [ 'Samsung', 'GT-C3592', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3595_3G.rdf' => [ 'Samsung', 'GT-C3595', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3750UAProf.xml' => [ 'Samsung', 'GT-C3750', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3752UAProf.xml' => [ 'Samsung', 'GT-C3752', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C5130UAProf.xml' => [ 'Samsung', 'GT-C5130', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C5180.rdf' => [ 'Samsung', 'GT-C5180', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C5510UAProf.xml' => [ 'Samsung', 'GT-C5510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C5510UAProf3G.xml' => [ 'Samsung', 'GT-C5510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2152.xml' => [ 'Samsung', 'GT-E2152 Duos', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2152iUAProf.xml' => [ 'Samsung', 'GT-E2152i', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2200.xml' => [ 'Samsung', 'GT-E2200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2230UAProf.xml' => [ 'Samsung', 'GT-E2230', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2232UAProf.xml' => [ 'Samsung', 'GT-E2232', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2330BUAProf.xml' => [ 'Samsung', 'GT-E2330', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2330UAProf.xml' => [ 'Samsung', 'GT-E2330', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2350BUAProf.xml' => [ 'Samsung', 'GT-E2350', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2530UAProf.xml' => [ 'Samsung', 'GT-E2530', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2600UAProf.xml' => [ 'Samsung', 'GT-E2600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E3300L_3G.rdf' => [ 'Samsung', 'GT-E3300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I6410UAProf3G.rdf' => [ 'Samsung', 'GT-I6410 M1', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8240.xml' => [ 'Samsung', 'GT-I8240', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I8245.xml' => [ 'Samsung', 'GT-I8245', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3550UAProf.xml' => [ 'Samsung', 'GT-S3550', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3600i.xml' => [ 'Samsung', 'GT-S3600i', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3970C_3G.rdf' => [ 'Samsung', 'GT-S3970', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5500UAProf.xml' => [ 'Samsung', 'GT-S5500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5500UAProf3G.xml' => [ 'Samsung', 'GT-S5500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5503UAProf.xml' => [ 'Samsung', 'GT-S5503', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5503UAProf3G.xml' => [ 'Samsung', 'GT-S5503', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5510UAProf.xml' => [ 'Samsung', 'GT-S5510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5510UAProf3G.xml' => [ 'Samsung', 'GT-S5510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5611.xml' => [ 'Samsung', 'GT-S5611', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5680_3G.rdf' => [ 'Samsung', 'GT-S5680', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6700TUAProf.xml' => [ 'Samsung', 'GT-S6700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6700UAProf.xml' => [ 'Samsung', 'GT-S6700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S6700UAProf3G.xml' => [ 'Samsung', 'GT-S6700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E1282T.xml' => [ 'Samsung', 'Guru', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8320UAProf3G.rdf' => [ 'Samsung', 'H1', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M630/BI09.rdf' => [ 'Samsung', 'Highnote', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/samsung/r500/r500.xml' => [ 'Samsung', 'Hue', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i637.xml' => [ 'Samsung', 'i637 Jack', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I7110-3G.xml' => [ 'Samsung', 'i7110', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I7110.xml' => [ 'Samsung', 'i7110', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I7110C_10.xml' => [ 'Samsung', 'i7110', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I9100.xml' => [ 'Samsung', 'Infuse 4G', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I997.xml' => [ 'Samsung', 'Infuse 4G', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8510-3G.xml' => [ 'Samsung', 'INNOV8', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8510.xml' => [ 'Samsung', 'INNOV8', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8510C_10.xml' => [ 'Samsung', 'INNOV8', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8510H-3G_10.xml' => [ 'Samsung', 'INNOV8', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8510H_10.xml' => [ 'Samsung', 'INNOV8', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8510T-3G_10.xml' => [ 'Samsung', 'INNOV8', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8510T_10.xml' => [ 'Samsung', 'INNOV8', 'Series60', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M800/BE09.rdf' => [ 'Samsung', 'Instinct', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M800/BF30.rdf' => [ 'Samsung', 'Instinct', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/Samsung/SPH-M910-VMUB/VMU_M910_UAProf.xml' => [ 'Samsung', 'Intercept', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/Samsung/SPH-M910/DI06/VMU_M910_UAProf.xml' => [ 'Samsung', 'Intercept', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S8000.rdf' => [ 'Samsung', 'Jet', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S8000OP.rdf' => [ 'Samsung', 'Jet', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S8000_3G.rdf' => [ 'Samsung', 'Jet', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S8003.rdf' => [ 'Samsung', 'Jet', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S8003_3G.rdf' => [ 'Samsung', 'Jet', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8000C.rdf' => [ 'Samsung', 'Jet S8000', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T739.xml' => [ 'Samsung', 'Katalyst', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-M5650.rdf' => [ 'Samsung', 'Lindy', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-J800_3G.rdf' => [ 'Samsung', 'Luxe', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m2510_10.xml' => [ 'Samsung', 'M2510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M3200.xml' => [ 'Samsung', 'M3200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M3510.xml' => [ 'Samsung', 'M3510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M7500UAProf.xml' => [ 'Samsung', 'M7500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M7500UAProf3G.xml' => [ 'Samsung', 'M7500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M7600UAProf.xml' => [ 'Samsung', 'M7600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M7600UAProf3G.xml' => [ 'Samsung', 'M7600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M7603UAProf.xml' => [ 'Samsung', 'M7603', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M7603UAProf3G.xml' => [ 'Samsung', 'M7603', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M8000-3G.xml' => [ 'Samsung', 'M8000', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/M8000.xml' => [ 'Samsung', 'M8000', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5560.rdf' => [ 'Samsung', 'Marvel', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5560i.rdf' => [ 'Samsung', 'Marvel', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5560i.xml' => [ 'Samsung', 'Marvel', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5560LTCE.xml' => [ 'Samsung', 'Marvel', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5560_3G.rdf' => [ 'Samsung', 'Marvel', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T929.xml' => [ 'Samsung', 'Memoir', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2202.xml' => [ 'Samsung', 'Metro', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S3310.rdf' => [ 'Samsung', 'Metro', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-E2252.xml' => [ 'Samsung', 'Metro 2252', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-B312EUAProf.xml' => [ 'Samsung', 'Metro 312', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-B313E.xml' => [ 'Samsung', 'Metro 313', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-B350E.xml' => [ 'Samsung', 'Metro 350', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-B360E.xml' => [ 'Samsung', 'Metro 360', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i780.xml' => [ 'Samsung', 'Mirage', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i780ORANGE.xml' => [ 'Samsung', 'Mirage', 'Windows Mobile', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M900/CJ05.rdf' => [ 'Samsung', 'Moment', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M900/DE03.rdf' => [ 'Samsung', 'Moment', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M900/DI06.rdf' => [ 'Samsung', 'Moment', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M900/DJ07.rdf' => [ 'Samsung', 'Moment', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/Samsung/SPH-M390-PLB/1.0/UAProf.xml' => [ 'Samsung', 'Montage', 'Brew', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5620_2G.rdf' => [ 'Samsung', 'Monte', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5620_3G.rdf' => [ 'Samsung', 'Monte', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3200BR.xml' => [ 'Samsung', 'Monte Bar', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3200UAProf.xml' => [ 'Samsung', 'Monte Bar', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3310iUAProf.xml' => [ 'Samsung', 'Monte Bar', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/sch_s239.xml' => [ 'Samsung', 'mPower TV', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/samsung/u706/u706.xml' => [ 'Samsung', 'Muse', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/spha523-0.rdf' => [ 'Samsung', 'Mysto', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/sojua.xml' => [ 'Samsung', 'Nexus S', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5520_3G.rdf' => [ 'Samsung', 'NORi', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i900.xml' => [ 'Samsung', 'Omnia', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i900V.xml' => [ 'Samsung', 'Omnia', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i908_OPEN.XML' => [ 'Samsung', 'Omnia Deluxe', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8910-3G.xml' => [ 'Samsung', 'Omnia HD', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8910.xml' => [ 'Samsung', 'Omnia HD', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-i8000.xml' => [ 'Samsung', 'Omnia II', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I8315UAProf3G.rdf' => [ 'Samsung', 'Omnia W', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-M8800MR.rdf' => [ 'Samsung', 'Pixon', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-M8800MR_3G.rdf' => [ 'Samsung', 'Pixon', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-M8800_3G.rdf' => [ 'Samsung', 'Pixon', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M8800.rdf' => [ 'Samsung', 'Pixon', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M8800_3G.rdf' => [ 'Samsung', 'Pixon', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5600.rdf' => [ 'Samsung', 'Preston', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5600LUAProf.xml' => [ 'Samsung', 'Preston', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5600_3G.rdf' => [ 'Samsung', 'Preston', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5610_2G.rdf' => [ 'Samsung', 'Primo', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5610_3G.rdf' => [ 'Samsung', 'Primo', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCH_W279.xml' => [ 'Samsung', 'Primo Duos', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A767.xml' => [ 'Samsung', 'Propel', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M540/BI09.rdf' => [ 'Samsung', 'Rant', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/sphm540-0.rdf' => [ 'Samsung', 'Rant', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sch/u820/u820.xml' => [ 'Samsung', 'Reality', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M580/EF27.rdf' => [ 'Samsung', 'Replenish', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M580/FA19.rdf' => [ 'Samsung', 'Replenish', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M580BST/FB03.rdf' => [ 'Samsung', 'Replenish', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3800UAProf.xml' => [ 'Samsung', 'Rex 70', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3800WUAProf.xml' => [ 'Samsung', 'Rex 70', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S3802UAProf.xml' => [ 'Samsung', 'Rex 70 Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5220RUAProf.xml' => [ 'Samsung', 'Rex 80', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5222RUAProf.xml' => [ 'Samsung', 'Rex 80 Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-B780AUAProf.xml' => [ 'Samsung', 'Rugby 4', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-B780WUAProf.xml' => [ 'Samsung', 'Rugby 4', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A997.xml' => [ 'Samsung', 'Rugby III', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I847.xml' => [ 'Samsung', 'Rugby Smart', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S150G.xml' => [ 'Samsung', 'S150G TracFone', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/s3500_10.xml' => [ 'Samsung', 'S3500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S3600.xml' => [ 'Samsung', 'S3600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S425G.xml' => [ 'Samsung', 'S425G', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S7330UAProf.xml' => [ 'Samsung', 'S7330', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S7330UAProf3G.xml' => [ 'Samsung', 'S7330', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S7350UAProf3G.xml' => [ 'Samsung', 'S7350 Ultra S', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S9500UAProf.xml' => [ 'Samsung', 'S9500', null, DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I779_1_20110615.xml' => [ 'Samsung', 'Saga', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I779_1_20120220.xml' => [ 'Samsung', 'Saga', 'Android', DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/scha600.rdf' => [ 'Samsung', 'SCH-A600', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/samsung/a645/a645.xml' => [ 'Samsung', 'SCH-A645', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/scha650.rdf' => [ 'Samsung', 'SCH-A650', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/scha670.rdf' => [ 'Samsung', 'SCH-A670', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/scha870-0.rdf' => [ 'Samsung', 'SCH-A870', null, DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_I339_1_20120220.xml' => [ 'Samsung', 'SCH-I339', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SCH-I629_1_20131010.xml' => [ 'Samsung', 'SCH-I629', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I665/SCH-I665.xml' => [ 'Samsung', 'SCH-I665', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_SCH-I679_1_20131211.xml' => [ 'Samsung', 'SCH-I679', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sch/n330/n330v1.xml' => [ 'Samsung', 'SCH-N330', null, DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/sam-r450.xml' => [ 'Samsung', 'SCH-R450', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/Samsung_SCH-R610.rdf' => [ 'Samsung', 'SCH-R610', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCH-R740C.xml' => [ 'Samsung', 'SCH-R740', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_S559_1_20100515.xml' => [ 'Samsung', 'SCH-S559', 'Brew', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_S579_1_20100427.xml' => [ 'Samsung', 'SCH-S579', 'Brew', DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/samsung/u340/u340.xml' => [ 'Samsung', 'SCH-U340', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/schu410t-0.rdf' => [ 'Samsung', 'SCH-U410', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sch/u430/u430v1.xml' => [ 'Samsung', 'SCH-U430', null, DeviceType::MOBILE ], + 'http://www.alltel.net/uaprof/samsung/u520/u520.xml' => [ 'Samsung', 'SCH-U520', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sch/u540/u540v1.xml' => [ 'Samsung', 'SCH-U540', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sch/u550/u550v1.xml' => [ 'Samsung', 'SCH-U550', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sch/u740/u740v1.xml' => [ 'Samsung', 'SCH-U740', null, DeviceType::MOBILE ], + 'http://uaprof.uni-wise.com/uaprof/SAM/SAM-W109.xml' => [ 'Samsung', 'SCH-W109', null, DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_W2013_1_20120918.xml' => [ 'Samsung', 'SCH-W2013', 'Android', DeviceType::MOBILE ], + 'http://mobileuaprof.xtra.co.nz/sch_w531.rdf' => [ 'Samsung', 'SCH-W531', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SCH-W709_CTC.xml' => [ 'Samsung', 'SCH-W709', 'Brew', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_W789_1_20120309.xml' => [ 'Samsung', 'SCH-W789', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_W799_1_20091014.xml' => [ 'Samsung', 'SCH-W799', 'Brew', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_W899_1_2010816.xml' => [ 'Samsung', 'SCH-W899', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/SCH/SCH_W999_1_20110901.xml' => [ 'Samsung', 'SCH-W999', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A117.xml' => [ 'Samsung', 'SGH-A117', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/a127_10.xml' => [ 'Samsung', 'SGH-A127', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A137.xml' => [ 'Samsung', 'SGH-A137', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A157V.xml' => [ 'Samsung', 'SGH-A157V', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A237.xml' => [ 'Samsung', 'SGH-A237', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A436.xml' => [ 'Samsung', 'SGH-A436', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A437.xml' => [ 'Samsung', 'SGH-A437', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/A501.xml' => [ 'Samsung', 'SGH-A501', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A516.xml' => [ 'Samsung', 'SGH-A516', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A517.xml' => [ 'Samsung', 'SGH-A517', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/A561UAProf.rdf' => [ 'Samsung', 'SGH-A561', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/A706UAProf.xml' => [ 'Samsung', 'SGH-A706', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/A717UAProf.xml' => [ 'Samsung', 'SGH-A717', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/A727UAProf.xml' => [ 'Samsung', 'SGH-A727', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A736.xml' => [ 'Samsung', 'SGH-A736', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/A737UAProf.xml' => [ 'Samsung', 'SGH-A737', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A746.xml' => [ 'Samsung', 'SGH-A746', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/A747UAProf.xml' => [ 'Samsung', 'SGH-A747', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L170UAProf.xml' => [ 'Samsung', 'SGH-A767', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A800.xml' => [ 'Samsung', 'SGH-A800', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A811_3G.xml' => [ 'Samsung', 'SGH-A811', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b100_10.xml' => [ 'Samsung', 'SGH-B100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b120_10.xml' => [ 'Samsung', 'SGH-B120', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-B130.xml' => [ 'Samsung', 'SGH-B130', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-B130L.xml' => [ 'Samsung', 'SGH-B130', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b200_10.xml' => [ 'Samsung', 'SGH-B200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b220b_10.xml' => [ 'Samsung', 'SGH-B220', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b220_10.xml' => [ 'Samsung', 'SGH-B220', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b270_10.xml' => [ 'Samsung', 'SGH-B270', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b300_10.xml' => [ 'Samsung', 'SGH-B300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b310_10.xml' => [ 'Samsung', 'SGH-B310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b320_10.xml' => [ 'Samsung', 'SGH-B320', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b500_10.xml' => [ 'Samsung', 'SGH-B500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b510_10.xml' => [ 'Samsung', 'SGH-B510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b520b_10.xml' => [ 'Samsung', 'SGH-B520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b520v_10.xml' => [ 'Samsung', 'SGH-B520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b520_10.xml' => [ 'Samsung', 'SGH-B520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/b860_10.xml' => [ 'Samsung', 'SGH-B860', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c110_10.xml' => [ 'Samsung', 'SGH-C110', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c130b_10.xml' => [ 'Samsung', 'SGH-C130', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c130_10.xml' => [ 'Samsung', 'SGH-C130', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c130_11.xml' => [ 'Samsung', 'SGH-C130', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c137_10.xml' => [ 'Samsung', 'SGH-C137', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c140_10.xml' => [ 'Samsung', 'SGH-C140', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c158_10.xml' => [ 'Samsung', 'SGH-C158', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C160.xml' => [ 'Samsung', 'SGH-C160', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C165.xml' => [ 'Samsung', 'SGH-C165', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C166.xml' => [ 'Samsung', 'SGH-C166', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c170_10.xml' => [ 'Samsung', 'SGH-C170', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c178_10.xml' => [ 'Samsung', 'SGH-C178', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C180.xml' => [ 'Samsung', 'SGH-C180', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c188_10.xml' => [ 'Samsung', 'SGH-C188', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c200.xml' => [ 'Samsung', 'SGH-C200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c207_10.xml' => [ 'Samsung', 'SGH-C207', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c208_10.xml' => [ 'Samsung', 'SGH-C208', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c210_10.xml' => [ 'Samsung', 'SGH-C210', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c216_10.xml' => [ 'Samsung', 'SGH-C216', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c218_10.xml' => [ 'Samsung', 'SGH-C218', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c230C_10.xml' => [ 'Samsung', 'SGH-C230', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c230_10.xml' => [ 'Samsung', 'SGH-C230', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c238_10.xml' => [ 'Samsung', 'SGH-C238', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C240.xml' => [ 'Samsung', 'SGH-C240', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c250_10.xml' => [ 'Samsung', 'SGH-C250', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c258_10.xml' => [ 'Samsung', 'SGH-C258', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c260m_10.xml' => [ 'Samsung', 'SGH-C260', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c260_10.xml' => [ 'Samsung', 'SGH-C260', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c268_10.xml' => [ 'Samsung', 'SGH-C268', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c275_10.xml' => [ 'Samsung', 'SGH-C275', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c300_10.xml' => [ 'Samsung', 'SGH-C300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c308_10.xml' => [ 'Samsung', 'SGH-C308', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c320c_10.xml' => [ 'Samsung', 'SGH-C320', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C408.xml' => [ 'Samsung', 'SGH-C408', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C416.xml' => [ 'Samsung', 'SGH-C416', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C417.xml' => [ 'Samsung', 'SGH-C417', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-C425.xml' => [ 'Samsung', 'SGH-C425', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c500_10.xml' => [ 'Samsung', 'SGH-C500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c510_10.xml' => [ 'Samsung', 'SGH-C510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c516_10.xml' => [ 'Samsung', 'SGH-C516', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/c520_10.xml' => [ 'Samsung', 'SGH-C520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-CC03.xml' => [ 'Samsung', 'SGH-CC03', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d100.xml' => [ 'Samsung', 'SGH-D100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d100a.xml' => [ 'Samsung', 'SGH-D100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d108.xml' => [ 'Samsung', 'SGH-D108', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d300_10.xml' => [ 'Samsung', 'SGH-D300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d307_10.xml' => [ 'Samsung', 'SGH-D307', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d347t_10.xml' => [ 'Samsung', 'SGH-D347', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d347_10.xml' => [ 'Samsung', 'SGH-D347', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d357_10.xml' => [ 'Samsung', 'SGH-D357', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d406_10.xml' => [ 'Samsung', 'SGH-D406', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d407t_10.xml' => [ 'Samsung', 'SGH-D407', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d407_10.xml' => [ 'Samsung', 'SGH-D407', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/D410.xml' => [ 'Samsung', 'SGH-D410', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d410c.xml' => [ 'Samsung', 'SGH-D410', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d415.xml' => [ 'Samsung', 'SGH-D415', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d418.xml' => [ 'Samsung', 'SGH-D418', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d428_10.xml' => [ 'Samsung', 'SGH-D428', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D488.xml' => [ 'Samsung', 'SGH-D488', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D500.xml' => [ 'Samsung', 'SGH-D500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D500C.xml' => [ 'Samsung', 'SGH-D500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D500E.xml' => [ 'Samsung', 'SGH-D500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D508.xml' => [ 'Samsung', 'SGH-D508', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D510.xml' => [ 'Samsung', 'SGH-D510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d520_10.xml' => [ 'Samsung', 'SGH-D520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d528_10.xml' => [ 'Samsung', 'SGH-D528', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d567_10.xml' => [ 'Samsung', 'SGH-D567', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D600.xml' => [ 'Samsung', 'SGH-D600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D600E.xml' => [ 'Samsung', 'SGH-D600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D600E_FD.xml' => [ 'Samsung', 'SGH-D600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D600_FD.xml' => [ 'Samsung', 'SGH-D600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d710.xml' => [ 'Samsung', 'SGH-D710', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d720_10.xml' => [ 'Samsung', 'SGH-D720', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d728_10.xml' => [ 'Samsung', 'SGH-D728', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d730_10.xml' => [ 'Samsung', 'SGH-D730', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D780.xml' => [ 'Samsung', 'SGH-D780', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d800_10.xml' => [ 'Samsung', 'SGH-D800', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d806_10.xml' => [ 'Samsung', 'SGH-D806', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d807_10.xml' => [ 'Samsung', 'SGH-D807', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d807_11.xml' => [ 'Samsung', 'SGH-D807', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d808_10.xml' => [ 'Samsung', 'SGH-D808', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D820.xml' => [ 'Samsung', 'SGH-D820', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D828.xml' => [ 'Samsung', 'SGH-D828', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d830_10.xml' => [ 'Samsung', 'SGH-D830', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d830_11.xml' => [ 'Samsung', 'SGH-D830', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d838_10.xml' => [ 'Samsung', 'SGH-D838', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d840_10.xml' => [ 'Samsung', 'SGH-D840', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d840_11.xml' => [ 'Samsung', 'SGH-D840', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/d848_10.xml' => [ 'Samsung', 'SGH-D848', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D900-FD.xml' => [ 'Samsung', 'SGH-D900', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D900.xml' => [ 'Samsung', 'SGH-D900', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D908.xml' => [ 'Samsung', 'SGH-D908', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-D908i.xml' => [ 'Samsung', 'SGH-D908', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E100.xml' => [ 'Samsung', 'SGH-E100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E100A.xml' => [ 'Samsung', 'SGH-E100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e105.xml' => [ 'Samsung', 'SGH-E105', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E108.xml' => [ 'Samsung', 'SGH-E108', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e116.xml' => [ 'Samsung', 'SGH-E116', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E200.xml' => [ 'Samsung', 'SGH-E200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e210_10.xml' => [ 'Samsung', 'SGH-E210', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e215l_10.xml' => [ 'Samsung', 'SGH-E215', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e218_10.xml' => [ 'Samsung', 'SGH-E218', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e230_10.xml' => [ 'Samsung', 'SGH-E230', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E236.xml' => [ 'Samsung', 'SGH-E236', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E250-ORANGE.xml' => [ 'Samsung', 'SGH-E250', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E250.xml' => [ 'Samsung', 'SGH-E250', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E251L.xml' => [ 'Samsung', 'SGH-E251', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E258.xml' => [ 'Samsung', 'SGH-E258', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e300.xml' => [ 'Samsung', 'SGH-E300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e300_10.xml' => [ 'Samsung', 'SGH-E300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e310c_10.xml' => [ 'Samsung', 'SGH-E310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e310_00.xml' => [ 'Samsung', 'SGH-E310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e310_10.xml' => [ 'Samsung', 'SGH-E310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e315_10.xml' => [ 'Samsung', 'SGH-E315', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e316.xml' => [ 'Samsung', 'SGH-E316', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e317.xml' => [ 'Samsung', 'SGH-E317', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e318.xml' => [ 'Samsung', 'SGH-E318', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e320_10.xml' => [ 'Samsung', 'SGH-E320', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E330.xml' => [ 'Samsung', 'SGH-E330', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E330C.xml' => [ 'Samsung', 'SGH-E330', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E330N.xml' => [ 'Samsung', 'SGH-E330', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E335.xml' => [ 'Samsung', 'SGH-E335', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E338.xml' => [ 'Samsung', 'SGH-E338', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E340.xml' => [ 'Samsung', 'SGH-E340', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E350.xml' => [ 'Samsung', 'SGH-E350', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E350V.xml' => [ 'Samsung', 'SGH-E350', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E358.xml' => [ 'Samsung', 'SGH-E358', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E360.xml' => [ 'Samsung', 'SGH-E360', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E370.xml' => [ 'Samsung', 'SGH-E370', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E378.xml' => [ 'Samsung', 'SGH-E378', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E380.xml' => [ 'Samsung', 'SGH-E380', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e470_10.xml' => [ 'Samsung', 'SGH-E470', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E480.xml' => [ 'Samsung', 'SGH-E480', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e490_10.xml' => [ 'Samsung', 'SGH-E490', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e496_10.xml' => [ 'Samsung', 'SGH-E496', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e498_10.xml' => [ 'Samsung', 'SGH-E498', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e530c_10.xml' => [ 'Samsung', 'SGH-E530', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e530_10.xml' => [ 'Samsung', 'SGH-E530', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e530_11.xml' => [ 'Samsung', 'SGH-E530', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e568_10.xml' => [ 'Samsung', 'SGH-E568', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e570v_10.xml' => [ 'Samsung', 'SGH-E570', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e570_10.xml' => [ 'Samsung', 'SGH-E570', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e578_10.xml' => [ 'Samsung', 'SGH-E578', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E590.xml' => [ 'Samsung', 'SGH-E590', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e600.xml' => [ 'Samsung', 'SGH-E600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e600c.xml' => [ 'Samsung', 'SGH-E600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e608.xml' => [ 'Samsung', 'SGH-E608', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e610c_10.xml' => [ 'Samsung', 'SGH-E610', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e610_10.xml' => [ 'Samsung', 'SGH-E610', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e620_10.xml' => [ 'Samsung', 'SGH-E620', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E630.xml' => [ 'Samsung', 'SGH-E630', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E630C.xml' => [ 'Samsung', 'SGH-E630', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E638.xml' => [ 'Samsung', 'SGH-E638', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E640.xml' => [ 'Samsung', 'SGH-E640', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E700.xml' => [ 'Samsung', 'SGH-E700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E700A.xml' => [ 'Samsung', 'SGH-E700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E708.xml' => [ 'Samsung', 'SGH-E708', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e710_00.xml' => [ 'Samsung', 'SGH-E710', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e710_10.xml' => [ 'Samsung', 'SGH-E710', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e715.xml' => [ 'Samsung', 'SGH-E715', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e720c_10.xml' => [ 'Samsung', 'SGH-E720', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e720_00.xml' => [ 'Samsung', 'SGH-E720', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e720_10.xml' => [ 'Samsung', 'SGH-E720', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e728_10.xml' => [ 'Samsung', 'SGH-E728', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E730.xml' => [ 'Samsung', 'SGH-E730', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E736.xml' => [ 'Samsung', 'SGH-E736', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E740.xml' => [ 'Samsung', 'SGH-E740', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E747_FL.xml' => [ 'Samsung', 'SGH-E747', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E758.xml' => [ 'Samsung', 'SGH-E758', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e770_10.xml' => [ 'Samsung', 'SGH-E770', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e778_10.xml' => [ 'Samsung', 'SGH-E778', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e790_10.xml' => [ 'Samsung', 'SGH-E790', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E800.xml' => [ 'Samsung', 'SGH-E800', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E800C.xml' => [ 'Samsung', 'SGH-E800', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E808.xml' => [ 'Samsung', 'SGH-E808', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e810c_10.xml' => [ 'Samsung', 'SGH-E810', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e810_00.xml' => [ 'Samsung', 'SGH-E810', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e810_10.xml' => [ 'Samsung', 'SGH-E810', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e818.xml' => [ 'Samsung', 'SGH-E818', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E820.xml' => [ 'Samsung', 'SGH-E820', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E830.xml' => [ 'Samsung', 'SGH-E830', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e840_10.xml' => [ 'Samsung', 'SGH-E840', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e848_10.xml' => [ 'Samsung', 'SGH-E848', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e850_10.xml' => [ 'Samsung', 'SGH-E850', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e860v_10.xml' => [ 'Samsung', 'SGH-E860', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e865_10.xml' => [ 'Samsung', 'SGH-E865', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e870_10.xml' => [ 'Samsung', 'SGH-E870', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e878_10.xml' => [ 'Samsung', 'SGH-E878', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e880_10.xml' => [ 'Samsung', 'SGH-E880', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-E890.xml' => [ 'Samsung', 'SGH-E890', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e900_10.xml' => [ 'Samsung', 'SGH-E900', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e906_10.xml' => [ 'Samsung', 'SGH-E906', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e908_10.xml' => [ 'Samsung', 'SGH-E908', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e910_10.xml' => [ 'Samsung', 'SGH-E910', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e910_11.xml' => [ 'Samsung', 'SGH-E910', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e918_10.xml' => [ 'Samsung', 'SGH-E918', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e950_10.xml' => [ 'Samsung', 'SGH-E950', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/e958_10.xml' => [ 'Samsung', 'SGH-E958', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-F110.xml' => [ 'Samsung', 'SGH-F110', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/f200_10.xml' => [ 'Samsung', 'SGH-F200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/f210_10.xml' => [ 'Samsung', 'SGH-F210', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/f218_10.xml' => [ 'Samsung', 'SGH-F218', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-F250.xml' => [ 'Samsung', 'SGH-F250', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-F250L.xml' => [ 'Samsung', 'SGH-F250', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/f300_10.xml' => [ 'Samsung', 'SGH-F300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/f308_10.xml' => [ 'Samsung', 'SGH-F308', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/f310_00.xml' => [ 'Samsung', 'SGH-F310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/F330UAProf3G.rdf' => [ 'Samsung', 'SGH-F330', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/F338UAProf.xml' => [ 'Samsung', 'SGH-F338', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/F400UAProf.xml' => [ 'Samsung', 'SGH-F400', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-F480.rdf' => [ 'Samsung', 'SGH-F480', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-F480_3G.rdf' => [ 'Samsung', 'SGH-F480', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-F480I_3G.rdf' => [ 'Samsung', 'SGH-F480I', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-F488.rdf' => [ 'Samsung', 'SGH-F488', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/f500.xml' => [ 'Samsung', 'SGH-F500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/F700VUAProf3G.rdf' => [ 'Samsung', 'SGH-F700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/f900_10.xml' => [ 'Samsung', 'SGH-F900', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-G608.xml' => [ 'Samsung', 'SGH-G608', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/G800UAProf3G.rdf' => [ 'Samsung', 'SGH-G800', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/G810-3G.xml' => [ 'Samsung', 'SGH-G810', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/G810.xml' => [ 'Samsung', 'SGH-G810', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/G818E_10.xml' => [ 'Samsung', 'SGH-G818', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i200OrangeUAProf.rdf' => [ 'Samsung', 'SGH-I200', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i300_10.xml' => [ 'Samsung', 'SGH-I300', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i308_10.xml' => [ 'Samsung', 'SGH-I308', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i310_10.xml' => [ 'Samsung', 'SGH-I310', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i320_10.xml' => [ 'Samsung', 'SGH-I320', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i321n_10.xml' => [ 'Samsung', 'SGH-I321', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i400_10.xml' => [ 'Samsung', 'SGH-I400', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i408_10.xml' => [ 'Samsung', 'SGH-I408', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i450.xml' => [ 'Samsung', 'SGH-I450', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i455l_10.xml' => [ 'Samsung', 'SGH-I455', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i455_10.xml' => [ 'Samsung', 'SGH-I455', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i458B-3G.xml' => [ 'Samsung', 'SGH-I458', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i458_10.xml' => [ 'Samsung', 'SGH-I458', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i520.xml' => [ 'Samsung', 'SGH-I520', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i530.xml' => [ 'Samsung', 'SGH-i530', 'Palm OS', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i550.xml' => [ 'Samsung', 'SGH-I550', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i590_10.xml' => [ 'Samsung', 'SGH-I590', 'Series60', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i600.xml' => [ 'Samsung', 'SGH-I600', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i601_10.xml' => [ 'Samsung', 'SGH-I601', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i608_10.xml' => [ 'Samsung', 'SGH-I608', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i620v_10.xml' => [ 'Samsung', 'SGH-I620', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i640V_3G.xml' => [ 'Samsung', 'SGH-I640', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i688.xml' => [ 'Samsung', 'SGH-I688', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/i700_10.xml' => [ 'Samsung', 'SGH-I700', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-i728.xml' => [ 'Samsung', 'SGH-I728', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-I750.xml' => [ 'Samsung', 'SGH-I750', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-J150.xml' => [ 'Samsung', 'SGH-J150', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/J208UAProf3G.rdf' => [ 'Samsung', 'SGH-J208', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/j600e_10.xml' => [ 'Samsung', 'SGH-J600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/j600e_11.xml' => [ 'Samsung', 'SGH-J600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/j600v_10.xml' => [ 'Samsung', 'SGH-J600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/j600_10.xml' => [ 'Samsung', 'SGH-J600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/j608_10.xml' => [ 'Samsung', 'SGH-J608', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/j610_10.xml' => [ 'Samsung', 'SGH-J610', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/j618_10.xml' => [ 'Samsung', 'SGH-J618', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-J700L.xml' => [ 'Samsung', 'SGH-J700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-J706.xml' => [ 'Samsung', 'SGH-J706', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/J750UAProf3G.rdf' => [ 'Samsung', 'SGH-J750', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-J770.xml' => [ 'Samsung', 'SGH-J770', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L170UAProf3G.xml' => [ 'Samsung', 'SGH-L170', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/l320_10.xml' => [ 'Samsung', 'SGH-L320', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-L700_2G.rdf' => [ 'Samsung', 'SGH-L700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-L750_2G.rdf' => [ 'Samsung', 'SGH-L750', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L760UAProf.rdf' => [ 'Samsung', 'SGH-L760', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L760UAProf3G.rdf' => [ 'Samsung', 'SGH-L760', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L770UAProf3G.rdf' => [ 'Samsung', 'SGH-L770', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-L810V_3G.rdf' => [ 'Samsung', 'SGH-L810', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-L811_3G.rdf' => [ 'Samsung', 'SGH-L811', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L870_10.xml' => [ 'Samsung', 'SGH-L870', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L878-3G_10.xml' => [ 'Samsung', 'SGH-L878', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L878E_10.xml' => [ 'Samsung', 'SGH-L878', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/L878_10.xml' => [ 'Samsung', 'SGH-L878', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M110.xml' => [ 'Samsung', 'SGH-M110', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m120_10.xml' => [ 'Samsung', 'SGH-M120', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m128_10.xml' => [ 'Samsung', 'SGH-M128', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M140L.xml' => [ 'Samsung', 'SGH-M140', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M150.xml' => [ 'Samsung', 'SGH-M150', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m300v_10.xml' => [ 'Samsung', 'SGH-M300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m300_10.xml' => [ 'Samsung', 'SGH-M300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m310v_10.xml' => [ 'Samsung', 'SGH-M310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m310_10.xml' => [ 'Samsung', 'SGH-M310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m600_10.xml' => [ 'Samsung', 'SGH-M600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m608_10.xml' => [ 'Samsung', 'SGH-M608', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/m620_10.xml' => [ 'Samsung', 'SGH-M620', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-M628.xml' => [ 'Samsung', 'SGH-M628', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-N600.xml' => [ 'Samsung', 'SGH-N600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-N620.xml' => [ 'Samsung', 'SGH-N620', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/n700_10.xml' => [ 'Samsung', 'SGH-N700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/n707_10.xml' => [ 'Samsung', 'SGH-N707', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p100.xml' => [ 'Samsung', 'SGH-P100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p107.xml' => [ 'Samsung', 'SGH-P107', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p110v_10.xml' => [ 'Samsung', 'SGH-P110', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-P180-ORANGE.xml' => [ 'Samsung', 'SGH-P180', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p207_10.xml' => [ 'Samsung', 'SGH-P207', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-P220-ORANGE.xml' => [ 'Samsung', 'SGH-P220', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-P260-ORANGE.xml' => [ 'Samsung', 'SGH-P260', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p300_10.xml' => [ 'Samsung', 'SGH-P300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p308_10.xml' => [ 'Samsung', 'SGH-P308', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p310_10.xml' => [ 'Samsung', 'SGH-P310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p318plus_10.xml' => [ 'Samsung', 'SGH-P318', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p318_10.xml' => [ 'Samsung', 'SGH-P318', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p400_00.xml' => [ 'Samsung', 'SGH-P400', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/P510_UAProf.xml' => [ 'Samsung', 'SGH-P510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/resolutionP510_UAProf.xml' => [ 'Samsung', 'SGH-P510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p518.xml' => [ 'Samsung', 'SGH-P518', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p520_10.xml' => [ 'Samsung', 'SGH-P520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p700.xml' => [ 'Samsung', 'SGH-P700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p710.xml' => [ 'Samsung', 'SGH-P710', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p716_10.xml' => [ 'Samsung', 'SGH-P716', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p717_10.xml' => [ 'Samsung', 'SGH-P717', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p730.xml' => [ 'Samsung', 'SGH-P730', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p730c_10.xml' => [ 'Samsung', 'SGH-P730', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p730_10.xml' => [ 'Samsung', 'SGH-P730', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p735_10.xml' => [ 'Samsung', 'SGH-P735', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p738_10.xml' => [ 'Samsung', 'SGH-P738', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p777_10.xml' => [ 'Samsung', 'SGH-P777', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p777_12.xml' => [ 'Samsung', 'SGH-P777', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-P850.xml' => [ 'Samsung', 'SGH-P850', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p900_10.xml' => [ 'Samsung', 'SGH-P900', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/p908t_10.xml' => [ 'Samsung', 'SGH-P908', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/P910UAProf2G.rdf' => [ 'Samsung', 'SGH-P910', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-P960.rdf' => [ 'Samsung', 'SGH-P960', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-P960_3G.rdf' => [ 'Samsung', 'SGH-P960', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S275G.xml' => [ 'Samsung', 'SGH-S275G', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/s300m_00.xml' => [ 'Samsung', 'SGH-S300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S500.xml' => [ 'Samsung', 'SGH-S500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T100.xml' => [ 'Samsung', 'SGH-T100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T109.xml' => [ 'Samsung', 'SGH-T109', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T159.xml' => [ 'Samsung', 'SGH-T159', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T199.xml' => [ 'Samsung', 'SGH-T199', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T209.xml' => [ 'Samsung', 'SGH-T209', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T219S.xml' => [ 'Samsung', 'SGH-T219', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T229.xml' => [ 'Samsung', 'SGH-T229', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T259.xml' => [ 'Samsung', 'SGH-T259', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T329.xml' => [ 'Samsung', 'SGH-T329', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T336.xml' => [ 'Samsung', 'SGH-T336', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T339.xml' => [ 'Samsung', 'SGH-T339', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T409.xml' => [ 'Samsung', 'SGH-T409', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T419.xml' => [ 'Samsung', 'SGH-T419', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T429.xml' => [ 'Samsung', 'SGH-T429', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T439.xml' => [ 'Samsung', 'SGH-T439', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T479.xml' => [ 'Samsung', 'SGH-T479', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T500.xml' => [ 'Samsung', 'SGH-T500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T509.xml' => [ 'Samsung', 'SGH-T509', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/t519_10.xml' => [ 'Samsung', 'SGH-T519', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T528G.xml' => [ 'Samsung', 'SGH-T528', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/t609_10.xml' => [ 'Samsung', 'SGH-T609', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/t609_11.xml' => [ 'Samsung', 'SGH-T609', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T619.xml' => [ 'Samsung', 'SGH-T619', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/t629_10.xml' => [ 'Samsung', 'SGH-T629', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T639.xml' => [ 'Samsung', 'SGH-T639', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/t649_10.xml' => [ 'Samsung', 'SGH-T649', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/t719_10.xml' => [ 'Samsung', 'SGH-T719', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T819.xml' => [ 'Samsung', 'SGH-T819', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/u100_10.xml' => [ 'Samsung', 'SGH-U100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/u106_10.xml' => [ 'Samsung', 'SGH-U106', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/u108_10.xml' => [ 'Samsung', 'SGH-U108', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/U200UAProf3G.xml' => [ 'Samsung', 'SGH-U200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/u300_10.xml' => [ 'Samsung', 'SGH-U300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/u308_10.xml' => [ 'Samsung', 'SGH-U308', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/u600_10.xml' => [ 'Samsung', 'SGH-U600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/u608_10.xml' => [ 'Samsung', 'SGH-U608', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/U708UAProf.rdf' => [ 'Samsung', 'SGH-U708', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/V200_00.xml' => [ 'Samsung', 'SGH-V200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/V206_00.xml' => [ 'Samsung', 'SGH-V206', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X100.xml' => [ 'Samsung', 'SGH-X100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X100A.xml' => [ 'Samsung', 'SGH-X100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x105.xml' => [ 'Samsung', 'SGH-X105', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X108.xml' => [ 'Samsung', 'SGH-X108', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x120_10.xml' => [ 'Samsung', 'SGH-X120', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x140_10.xml' => [ 'Samsung', 'SGH-X140', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x140_11.xml' => [ 'Samsung', 'SGH-X140', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x160_10.xml' => [ 'Samsung', 'SGH-X160', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x168_10.xml' => [ 'Samsung', 'SGH-X168', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x200.xml' => [ 'Samsung', 'SGH-X200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x200_01.xml' => [ 'Samsung', 'SGH-X200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x200_02.xml' => [ 'Samsung', 'SGH-X200', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x208_00.xml' => [ 'Samsung', 'SGH-X208', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x210_10.xml' => [ 'Samsung', 'SGH-X210', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x218_10.xml' => [ 'Samsung', 'SGH-X218', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X300.xml' => [ 'Samsung', 'SGH-X300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x410.xml' => [ 'Samsung', 'SGH-X410', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x410_10.xml' => [ 'Samsung', 'SGH-X410', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x426.xml' => [ 'Samsung', 'SGH-X426', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x426m_10.xml' => [ 'Samsung', 'SGH-X426', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x426m_11.xml' => [ 'Samsung', 'SGH-X426', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x427m_10.xml' => [ 'Samsung', 'SGH-X427', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x430.xml' => [ 'Samsung', 'SGH-X430', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x450.xml' => [ 'Samsung', 'SGH-X450', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x458.xml' => [ 'Samsung', 'SGH-X458', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X460.xml' => [ 'Samsung', 'SGH-X460', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X460C.xml' => [ 'Samsung', 'SGH-X460', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X461.xml' => [ 'Samsung', 'SGH-X461', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x466_10.xml' => [ 'Samsung', 'SGH-X466', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X467.xml' => [ 'Samsung', 'SGH-X467', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X468.xml' => [ 'Samsung', 'SGH-X468', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x475_10.xml' => [ 'Samsung', 'SGH-X475', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x478_10.xml' => [ 'Samsung', 'SGH-X478', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X480.xml' => [ 'Samsung', 'SGH-X480', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X480C.xml' => [ 'Samsung', 'SGH-X480', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X481.xml' => [ 'Samsung', 'SGH-X481', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/X486_10.xml' => [ 'Samsung', 'SGH-X486', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x488_10.xml' => [ 'Samsung', 'SGH-X488', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X490.xml' => [ 'Samsung', 'SGH-X490', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X496.xml' => [ 'Samsung', 'SGH-X496', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X497.xml' => [ 'Samsung', 'SGH-X497', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x500_10.xml' => [ 'Samsung', 'SGH-X500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x506_10.xml' => [ 'Samsung', 'SGH-X506', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x507_10.xml' => [ 'Samsung', 'SGH-X507', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x507_11.xml' => [ 'Samsung', 'SGH-X507', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x508_10.xml' => [ 'Samsung', 'SGH-X508', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x508_11.xml' => [ 'Samsung', 'SGH-X508', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x510v_10.xml' => [ 'Samsung', 'SGH-X510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x510_10.xml' => [ 'Samsung', 'SGH-X510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x510_11.xml' => [ 'Samsung', 'SGH-X510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x518_10.xml' => [ 'Samsung', 'SGH-X518', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x520_10.xml' => [ 'Samsung', 'SGH-X520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x526_10.xml' => [ 'Samsung', 'SGH-X526', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x528_10.xml' => [ 'Samsung', 'SGH-X528', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x530_10.xml' => [ 'Samsung', 'SGH-X530', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X550.xml' => [ 'Samsung', 'SGH-X550', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X566.xml' => [ 'Samsung', 'SGH-X566', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x568_10.xml' => [ 'Samsung', 'SGH-X568', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X576.xml' => [ 'Samsung', 'SGH-X576', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X600.xml' => [ 'Samsung', 'SGH-X600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X600A.xml' => [ 'Samsung', 'SGH-X600', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com.cn/uaprof/SGH-X608.xml' => [ 'Samsung', 'SGH-X608', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X608.xml' => [ 'Samsung', 'SGH-X608', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x610.xml' => [ 'Samsung', 'SGH-X610', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X620.xml' => [ 'Samsung', 'SGH-X620', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x630_10.xml' => [ 'Samsung', 'SGH-X630', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X636.xml' => [ 'Samsung', 'SGH-X636', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com.cn/uaprof/SGH-X640.xml' => [ 'Samsung', 'SGH-X640', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X640.xml' => [ 'Samsung', 'SGH-X640', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X650.xml' => [ 'Samsung', 'SGH-X650', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X650C.xml' => [ 'Samsung', 'SGH-X650', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x660v_10.xml' => [ 'Samsung', 'SGH-X660', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x660_10.xml' => [ 'Samsung', 'SGH-X660', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x668_10.xml' => [ 'Samsung', 'SGH-X668', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X670.xml' => [ 'Samsung', 'SGH-X670', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x680v_10.xml' => [ 'Samsung', 'SGH-X680', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x680_10.xml' => [ 'Samsung', 'SGH-X680', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x686_10.xml' => [ 'Samsung', 'SGH-X686', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x688_10.xml' => [ 'Samsung', 'SGH-X688', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x688_11.xml' => [ 'Samsung', 'SGH-X688', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X700.xml' => [ 'Samsung', 'SGH-X700', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-X708.xml' => [ 'Samsung', 'SGH-X708', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x800_10.xml' => [ 'Samsung', 'SGH-X800', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x808_10.xml' => [ 'Samsung', 'SGH-X808', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x810_10.xml' => [ 'Samsung', 'SGH-X810', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x818_10.xml' => [ 'Samsung', 'SGH-X818', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x820_10.xml' => [ 'Samsung', 'SGH-X820', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x820_11.xml' => [ 'Samsung', 'SGH-X820', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x828_10.xml' => [ 'Samsung', 'SGH-X828', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x830_10.xml' => [ 'Samsung', 'SGH-X830', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x836_10.xml' => [ 'Samsung', 'SGH-X836', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x838_10.xml' => [ 'Samsung', 'SGH-X838', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/x910_10.xml' => [ 'Samsung', 'SGH-X910', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/ZV10UAProf3G.rdf' => [ 'Samsung', 'SGH-ZV10', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/ZV30UAProf.rdf' => [ 'Samsung', 'SGH-ZV30', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/ZV60UAProf3G.rdf' => [ 'Samsung', 'SGH-ZV60', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5350UAProf.xml' => [ 'Samsung', 'Shark', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T359.xml' => [ 'Samsung', 'Smiley :)', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-A817.xml' => [ 'Samsung', 'Solstice II', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-G400_3G.rdf' => [ 'Samsung', 'Soul', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/U900UAProf.xml' => [ 'Samsung', 'Soul', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/U800UAProf.xml' => [ 'Samsung', 'Soul b', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/U800UAProf3G.xml' => [ 'Samsung', 'Soul b', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A500/VE31.rdf' => [ 'Samsung', 'SPH-A500', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A640/ZE12.rdf' => [ 'Samsung', 'SPH-A640', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A660/XA28.rdf' => [ 'Samsung', 'SPH-A660', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A680/XC15.rdf' => [ 'Samsung', 'SPH-A680', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A700/XG23.rdf' => [ 'Samsung', 'SPH-A700', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/spha720-1.rdf' => [ 'Samsung', 'SPH-A720', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A740/XK12.rdf' => [ 'Samsung', 'SPH-A740', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A790/XK26.rdf' => [ 'Samsung', 'SPH-A790', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A800/YD11.rdf' => [ 'Samsung', 'SPH-A800', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A840/YH09.rdf' => [ 'Samsung', 'SPH-A840', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A880/YC24.rdf' => [ 'Samsung', 'SPH-A880', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A900P/ZH03.rdf' => [ 'Samsung', 'SPH-A900', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-A920/YK12.rdf' => [ 'Samsung', 'SPH-A920', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-i550/XE07.rdf' => [ 'Samsung', 'SPH-I550', 'Palm OS', DeviceType::MOBILE ], + 'http://device.telusmobility.com/samsung/sphm210-0.rdf' => [ 'Samsung', 'SPH-M210', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M220/BG24.rdf' => [ 'Samsung', 'SPH-M220', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/samsung/m310/VMU_m310_UAProf.xml' => [ 'Samsung', 'SPH-M310', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M320/BG24.rdf' => [ 'Samsung', 'SPH-M320', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M500/ZK03.rdf' => [ 'Samsung', 'SPH-M500', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M510/AE15.rdf' => [ 'Samsung', 'SPH-M510', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/PLS-M520/AD30.rdf' => [ 'Samsung', 'SPH-M520', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/Samsung_SPH-M530.rdf' => [ 'Samsung', 'SPH-M530', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/samsung/SPH-M575-VMUB/1.0/M575_VMUB_UAProf.xml' => [ 'Samsung', 'SPH-M575', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M610/ZJ29.rdf' => [ 'Samsung', 'SPH-M610', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-N400/VH27.rdf' => [ 'Samsung', 'SPH-N400', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-Z400/BE03.rdf' => [ 'Samsung', 'SPH-Z400', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5230.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5230C.rdf' => [ 'Samsung', 'Star', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5230G.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5230MR.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5230N.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5230W.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5230W_3G.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5233A.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5233S.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5233T.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5233T.xml' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5233TTCE.xml' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5233W.rdf' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5233W.xml' => [ 'Samsung', 'Star', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5220UAProf.xml' => [ 'Samsung', 'Star 3', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5222BR.xml' => [ 'Samsung', 'Star 3 Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5222UAProf.xml' => [ 'Samsung', 'Star 3 Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5603.rdf' => [ 'Samsung', 'Star 3G', 'TouchWiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5292UAProf.xml' => [ 'Samsung', 'Star Deluxe Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7722_2G.rdf' => [ 'Samsung', 'Star Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B7722_3G.rdf' => [ 'Samsung', 'Star Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5260.rdf' => [ 'Samsung', 'Star II', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5260.xml' => [ 'Samsung', 'Star II', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5260BR.xml' => [ 'Samsung', 'Star II', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5263.rdf' => [ 'Samsung', 'Star II', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C6712.rdf' => [ 'Samsung', 'Star II Duos', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/B3410.xml' => [ 'Samsung', 'Star Qwerty', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B3410.xml' => [ 'Samsung', 'Star Qwerty', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-I6230.xml' => [ 'Samsung', 'Star TV', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/i405/i405.xml' => [ 'Samsung', 'Stratosphere', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/sam/SCH-I415/SCH-I415.xml' => [ 'Samsung', 'Stratosphere II', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T839.xml' => [ 'Samsung', 'T-Mobile Sidekick', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/s3030_10.xml' => [ 'Samsung', 'Tobi', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-F480L.xml' => [ 'Samsung', 'Tocco', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5229UAProf.xml' => [ 'Samsung', 'Tocco Lite 2', 'Touchwiz', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-S390G.xml' => [ 'Samsung', 'TracFone', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M920/EB28.rdf' => [ 'Samsung', 'Transform', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M920/EF09.rdf' => [ 'Samsung', 'Transform', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M930-BST/EG29.rdf' => [ 'Samsung', 'Transform Ultra', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M930-BST/FF27.rdf' => [ 'Samsung', 'Transform Ultra', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M930-BST/FF28.rdf' => [ 'Samsung', 'Transform Ultra', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M930/FF27.rdf' => [ 'Samsung', 'Transform Ultra', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M930/FG11.rdf' => [ 'Samsung', 'Transform Ultra', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S8300UAProf.xml' => [ 'Samsung', 'UltraTOUCH', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/S8300UAProf3G.xml' => [ 'Samsung', 'UltraTOUCH', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Samsung/SPH-M620/AC08.rdf' => [ 'Samsung', 'UpStage', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/V804SSUAProf.rdf' => [ 'Samsung', 'V804', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SGH-T959.xml' => [ 'Samsung', 'Vibrant', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/sch_w259.xml' => [ 'Samsung', 'W169 Duos', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8500.rdf' => [ 'Samsung', 'Wave', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8500M.rdf' => [ 'Samsung', 'Wave', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8500R.rdf' => [ 'Samsung', 'Wave', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8500_2G.rdf' => [ 'Samsung', 'Wave', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8500_3G.rdf' => [ 'Samsung', 'Wave', 'Bada', DeviceType::MOBILE ], + 'wap.samsungmobile.com/uaprof/GT-S8600_3G.rdf' => [ 'Samsung', 'Wave', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8600.rdf' => [ 'Samsung', 'Wave 3', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8600_3G.rdf' => [ 'Samsung', 'Wave 3', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5250.rdf' => [ 'Samsung', 'Wave 525', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5253.rdf' => [ 'Samsung', 'Wave 525', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5253_3G.rdf' => [ 'Samsung', 'Wave 525', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5330BR.xml' => [ 'Samsung', 'Wave 533', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5333.rdf' => [ 'Samsung', 'Wave 533', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5333_3G.rdf' => [ 'Samsung', 'Wave 533', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5750E_2G.rdf' => [ 'Samsung', 'Wave 575', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5750E_3G.rdf' => [ 'Samsung', 'Wave 575', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5753E_2G.rdf' => [ 'Samsung', 'Wave 575', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5753E_3G.rdf' => [ 'Samsung', 'Wave 575', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5780.rdf' => [ 'Samsung', 'Wave 578', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7230E.rdf' => [ 'Samsung', 'Wave 723', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7230E_3G.rdf' => [ 'Samsung', 'Wave 723', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7233E_3G.rdf' => [ 'Samsung', 'Wave 723', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8530.rdf' => [ 'Samsung', 'Wave II', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S8530_3G.rdf' => [ 'Samsung', 'Wave II', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S7250_3G.rdf' => [ 'Samsung', 'Wave M', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5380.rdf' => [ 'Samsung', 'Wave Y', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-S5380_3G.rdf' => [ 'Samsung', 'Wave Y', 'Bada', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-C3350UAProf.xml' => [ 'Samsung', 'Xcover 2', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B2710.rdf' => [ 'Samsung', 'Xcover 271', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/GT-B2710_3G.rdf' => [ 'Samsung', 'Xcover 271', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-B550H.xml' => [ 'Samsung', 'Xcover 550', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/SM-Z130H.xml' => [ 'Samsung', 'Z1', 'Tizen', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z100UAProf.rdf' => [ 'Samsung', 'Z100', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/z130_00.xml' => [ 'Samsung', 'Z130', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z150UAProf2G.rdf' => [ 'Samsung', 'Z150', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/z160_10.xml' => [ 'Samsung', 'Z160', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z170UAProf3G.rdf' => [ 'Samsung', 'Z170', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z230UAProf3G.rdf' => [ 'Samsung', 'Z230', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z240UAProf.rdf' => [ 'Samsung', 'Z240', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z240UAProf3G.rdf' => [ 'Samsung', 'Z240', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z300UAProf.rdf' => [ 'Samsung', 'Z300', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z308UAProf.rdf' => [ 'Samsung', 'Z308', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z310UAProf3G.rdf' => [ 'Samsung', 'Z310', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z400UAProf3G.rdf' => [ 'Samsung', 'Z400', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z500UAProf.rbf' => [ 'Samsung', 'Z500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z500UAProf2G.rdf' => [ 'Samsung', 'Z500', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/z510_00.xml' => [ 'Samsung', 'Z510', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z520UAProf2G.rdf' => [ 'Samsung', 'Z520', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z540UAProf2G.rdf' => [ 'Samsung', 'Z540', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z540UAProf3G.rdf' => [ 'Samsung', 'Z540', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z548UAProf.rdf' => [ 'Samsung', 'Z548', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z560UAProf3G.rdf' => [ 'Samsung', 'Z560', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/z630_00.xml' => [ 'Samsung', 'Z630', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/Z720UAProf3G.rdf' => [ 'Samsung', 'Z720', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/6760Boost/1006Boost.rdf' => [ 'Sanyo', 'Incognito', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP6760/1002SP.rdf' => [ 'Sanyo', 'Incognito', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/6780Boost/1001Boost.rdf' => [ 'Sanyo', 'Innuendo', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/6780Boost/1101Boost.rdf' => [ 'Sanyo', 'Innuendo', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/2700Boost/1001Boost.rdf' => [ 'Sanyo', 'Juno', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP8500/1000SP.rdf' => [ 'Sanyo', 'Katana DLX', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCPM1/1001SP.rdf' => [ 'Sanyo', 'M1', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/MM5600/0702SP.rdf' => [ 'Sanyo', 'MM-5600', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/MM7400/1030SP.rdf' => [ 'Sanyo', 'MM-7400', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PL6650/1001PLS.rdf' => [ 'Sanyo', 'PL-6650', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PLS4920/1000QW.rdf' => [ 'Sanyo', 'PLS-4920', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PLS6600/1001QW.rdf' => [ 'Sanyo', 'PLS-6600', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PLS6650/1002QW.rdf' => [ 'Sanyo', 'PLS-6650', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PLS7400/1000QW.rdf' => [ 'Sanyo', 'PLS-7400', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PLS8100/1005QW.rdf' => [ 'Sanyo', 'PLS-8100', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PLS8200/1001QW.rdf' => [ 'Sanyo', 'PLS-8200', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/PM8200/1007SP.rdf' => [ 'Sanyo', 'PM-8200', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP-PRO700/1008SP.rdf' => [ 'Sanyo', 'PRO-700', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP2300/0501SP.rdf' => [ 'Sanyo', 'SCP-2300', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Sanyo_SCP2300CA_1004BM.rdf' => [ 'Sanyo', 'SCP-2300', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP2400/1004SP.rdf' => [ 'Sanyo', 'SCP-2400', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP2500/1001SP.rdf' => [ 'Sanyo', 'SCP-2500', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Sanyo_SCP2500CA_1002BM.rdf' => [ 'Sanyo', 'SCP-2500', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP3100/1005SP.rdf' => [ 'Sanyo', 'SCP-3100', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP3200/1000SP.rdf' => [ 'Sanyo', 'SCP-3200', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP3800/0700SP.rdf' => [ 'Sanyo', 'SCP-3800', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Sanyo_SCP3800CA_1003BM.rdf' => [ 'Sanyo', 'SCP-3800', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP4920/1006SP.rdf' => [ 'Sanyo', 'SCP-4920', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP4930/1004SP.rdf' => [ 'Sanyo', 'SCP-4930', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP5300/1036SP.rdf' => [ 'Sanyo', 'SCP-5300', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP6400/1032SP.rdf' => [ 'Sanyo', 'SCP-6400', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP6600/1001SP.rdf' => [ 'Sanyo', 'SCP-6600', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Sanyo_SCP6600CA_1001BM.rdf' => [ 'Sanyo', 'SCP-6600', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP6650/1004SP.rdf' => [ 'Sanyo', 'SCP-6650', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP6750/1002SP.rdf' => [ 'Sanyo', 'SCP-6750', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP7000/1000SP.rdf' => [ 'Sanyo', 'SCP-7000', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Sanyo_SCP7000CA_1008BM.rdf' => [ 'Sanyo', 'SCP-7000', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP7050/1002SP.rdf' => [ 'Sanyo', 'SCP-7050', null, DeviceType::MOBILE ], + 'http://uaprof.bellmobilite.ca/BMC_Sanyo_SCP7050CA_1004BM.rdf' => [ 'Sanyo', 'SCP-7050', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP7200/2046SP.rdf' => [ 'Sanyo', 'SCP-7200', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP7300/1004SP.rdf' => [ 'Sanyo', 'SCP-7300', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP7500/1022SP.rdf' => [ 'Sanyo', 'SCP-7500', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP8100/1115SP.rdf' => [ 'Sanyo', 'SCP-8100', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP9000/0103SP.rdf' => [ 'Sanyo', 'SCP-9000', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/SCP9000/1000SP.rdf' => [ 'Sanyo', 'SCP-9000', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Sanyo/E4100/1008SP.rdf' => [ 'Sanyo', 'Taho', 'Brew', DeviceType::MOBILE ], + 'http://wap.sendo.com/uaprof/sendo_S600_r1.0.xml' => [ 'Sendo', 'S600', null, DeviceType::MOBILE ], + 'http://senseit.ru/UAProfile/SENSEIT_R390.xml' => [ 'Senseit', 'R390', 'Android', DeviceType::MOBILE ], + 'http://www.senwamobile.com/UA/S970.xml' => [ 'Senwa', 'S970', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-STARADDICTII.xml' => [ 'SFR', 'STARADDICT II', 'Android', DeviceType::MOBILE ], + 'http://sfr.51coolpad.com/UAProfile/sfr/STARADDICT-3.xml' => [ 'SFR', 'STARADDICT III', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/ZTE-V6600_Style_Pro_Profile.xml' => [ 'sfr', 'STARNAUTE II', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/STARXTREM II.xml' => [ 'SFR', 'STARXTREM II', 'Android', DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/880SH_G001_3g.xml' => [ 'Sharp', '880SH', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/880SH_G001_base.xml' => [ 'Sharp', '880SH', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/SH80DE.XML' => [ 'Sharp', 'Aquos SH80F', 'Android', DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/SHARP-ADS1.xml' => [ 'Sharp', 'FX Plus', 'Android', DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GXi98.xml' => [ 'Sharp', 'GX-i98', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX1.xml' => [ 'Sharp', 'GX1', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX10.xml' => [ 'Sharp', 'GX10', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX10m.xml' => [ 'Sharp', 'GX10m', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX12.xml' => [ 'Sharp', 'GX12', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX13.xml' => [ 'Sharp', 'GX13', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX15.xml' => [ 'Sharp', 'GX15', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX17.xml' => [ 'Sharp', 'GX17', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX20.xml' => [ 'Sharp', 'GX20', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX23.xml' => [ 'Sharp', 'GX23', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX25.xml' => [ 'Sharp', 'GX25', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX29.xml' => [ 'Sharp', 'GX29', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX30.xml' => [ 'Sharp', 'GX30', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX32.xml' => [ 'Sharp', 'GX32', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GX33.xml' => [ 'Sharp', 'GX33', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GZ100.xml' => [ 'Sharp', 'GZ100', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GZ100S.xml' => [ 'Sharp', 'GZ100S', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GZ200.xml' => [ 'Sharp', 'GZ200', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/GZ200S.xml' => [ 'Sharp', 'GZ200S', null, DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/MK5/SH530U.xml' => [ 'Sharp', 'SH530U', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/MK5/SH530U.xml' => [ 'Sharp', 'SH530U', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/S2U/SH631W.xml' => [ 'Sharp', 'SH631W', 'Android', DeviceType::MOBILE ], + 'http://wap1.sharp.com/uaprof/SharpSH8188U.xml' => [ 'Sharp', 'SH8188U', 'Android', DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/SHP_SH831T_3_20120214.xml' => [ 'Sharp', 'SH831T', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/S1M/SH837M.xml' => [ 'Sharp', 'SH837M', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/S1U/SH837W.xml' => [ 'Sharp', 'SH837W', 'Android', DeviceType::MOBILE ], + 'http://cn.c2dms.com/UAProfile/VKY/SH931W.xml' => [ 'Sharp', 'SH931W', 'Android', DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAprofTM/tm100.xml' => [ 'Sharp', 'TM100', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAprofTM/tm150.xml' => [ 'Sharp', 'TM150', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAprofTM/tm200.xml' => [ 'Sharp', 'TM200', null, DeviceType::MOBILE ], + 'http://sharp-mobile.com/UAprof/V750.xml' => [ 'Sharp', 'V750', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?device=A21a&v=03' => [ 'Siemens', 'A21', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?device=A31C&v=02' => [ 'Siemens', 'A31', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/A60_14.xml' => [ 'Siemens', 'A60', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/A60_20.xml' => [ 'Siemens', 'A60', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?device=AF51' => [ 'Siemens', 'AF51', null, DeviceType::MOBILE ], + 'http://communicationmarket.siemens.de/portal/UAProf/UAP.aspx?device=AL21' => [ 'Siemens', 'AL21', null, DeviceType::MOBILE ], + 'http://uap.benq.com/mb_ap75/sie_ap75_v3.xml' => [ 'Siemens', 'AP75', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/C60_10.xml' => [ 'Siemens', 'C60', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/C60_14.xml' => [ 'Siemens', 'C60', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?device=C66' => [ 'Siemens', 'C66', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?device=C72' => [ 'Siemens', 'C72', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?CF62' => [ 'Siemens', 'CF62', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/M55_01.xml' => [ 'Siemens', 'M55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/M55_07.xml' => [ 'Siemens', 'M55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/M55_11.xml' => [ 'Siemens', 'M55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/MC60_10.xml' => [ 'Siemens', 'MC60', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/S55_00.xml' => [ 'Siemens', 'S55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/S55_04.xml' => [ 'Siemens', 'S55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/S55_05.xml' => [ 'Siemens', 'S55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/S55_06.xml' => [ 'Siemens', 'S55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/S55_20.xml' => [ 'Siemens', 'S55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?SF65' => [ 'Siemens', 'SF65', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?SK65' => [ 'Siemens', 'SK65', null, DeviceType::MOBILE ], + 'http://www.blackberry.net/go/mobile/profiles/uaprof/Siemens SK65/3.8.0.rdf' => [ 'Siemens', 'SK65', 'BlackBerry OS', DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/SL55_02.xml' => [ 'Siemens', 'SL55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/SL55_14.xml' => [ 'Siemens', 'SL55', null, DeviceType::MOBILE ], + 'http://communication-market.siemens.de/UAProf/ST55_01.xml' => [ 'Siemens', 'SL55', null, DeviceType::MOBILE ], + 'http://wap.annyway.com/UAProf/cgi-bin/UAProf?AnnyWap1.2' => [ 'Siemens', 'SX45', 'Windows Mobile', DeviceType::MOBILE ], + 'http://communication-market.siemens.de/portal/UAProf/UAP.aspx?DeviceID=SX66' => [ 'Siemens', 'SX66', null, DeviceType::MOBILE ], + 'http://skyspring.co.kr/UAprof/UAprof_Sp710_wap20.xml' => [ 'Skyspring', 'SP710', null, DeviceType::MOBILE ], + 'http://skyspring.co.kr/UAprof/UAprof_SP770.xml' => [ 'Skyspring', 'SP770', null, DeviceType::MOBILE ], + 'http://wap.my-fun.cn/tclPortal/ua/Smartfren_E781A_20110928.xml' => [ 'Smartfren', 'Xstre@m', 'Brew', DeviceType::MOBILE ], + 'http://uaprof.softbank.ne.jp/uaprof/3G_103P.xml' => [ 'Softbank', '103P', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiY300-J1-Normal.xml' => [ 'Softbank', '204HW', 'Android', DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/705SCUAProf.rdf' => [ 'Softbank', '705SC', null, DeviceType::MOBILE ], + 'http://nec-uap.com/prof/706N.xml' => [ 'Softbank', '706N', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/706SCUAProf.rdf' => [ 'Softbank', '706SC', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/707SCUAProf.rdf' => [ 'Softbank', '707SC', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/707SC2UAProf.rdf' => [ 'Softbank', '707SCII', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/708SCUAProf.rdf' => [ 'Softbank', '708SC', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/709SCUAProf.rdf' => [ 'Softbank', '709SC', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/805SCUAProf.rdf' => [ 'Softbank', '805SC', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/811SH_SHJ001_3g.xml' => [ 'Softbank', '811SH', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/SoftBank/810T_r100_3G.xml' => [ 'Softbank', '811T', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/SoftBank/811T_r100_3G.xml' => [ 'Softbank', '811T', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/SoftBank/814T_r100_3G.xml' => [ 'Softbank', '814T', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/SoftBank/815T_r100_3G.xml' => [ 'Softbank', '815T', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/820SCUAProf.xml' => [ 'Softbank', '820SC', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/821SCUAProf.xml' => [ 'Softbank', '821SC', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/910SH_SHJ001_3g.xml' => [ 'Softbank', '910SH', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/SoftBank/910T_r100_3G.xml' => [ 'Softbank', '910T', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/911SH_SHJ001_3g.xml' => [ 'Softbank', '911SH', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/SoftBank/911T_r100_3G.xml' => [ 'Softbank', '911T', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/920SCUAProf.xml' => [ 'Softbank', '920SC', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/SoftBank/920T_r100_3G.xml' => [ 'Softbank', '920T', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/SoftBank/921T_r100_3G.xml' => [ 'Softbank', '921T', null, DeviceType::MOBILE ], + 'http://omaptt.net/xp1/wap/uapM639.xml' => [ 'Sonim', 'XP1', null, DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-04ER1002.xml' => [ 'Sony', 'Xperia A', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-04ER1003.xml' => [ 'Sony', 'Xperia A', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-04FR1421.xml' => [ 'Sony', 'Xperia A2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT26wR621.xml' => [ 'Sony', 'Xperia Acro S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT26wR601.xml' => [ 'Sony', 'Xperia Acro S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT26wR611.xml' => [ 'Sony', 'Xperia Acro S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-01ER901.xml' => [ 'Sony', 'Xperia AX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-01ER911.xml' => [ 'Sony', 'Xperia AX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C2305R401.xml' => [ 'Sony', 'Xperia C', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/S39hR401.xml' => [ 'Sony', 'Xperia C', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2502R1901.xml' => [ 'Sony', 'Xperia C3 dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/S55tR1901.xml' => [ 'Sony', 'Xperia C3 dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/S55uR1901.xml' => [ 'Sony', 'Xperia C3 dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1504 UnavailableR402.xml' => [ 'Sony', 'Xperia E', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1504R402.xml' => [ 'Sony', 'Xperia E', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1505R402.xml' => [ 'Sony', 'Xperia E', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1604JBR402.xml' => [ 'Sony', 'Xperia E dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1604R402.xml' => [ 'Sony', 'Xperia E dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1605JBR402.xml' => [ 'Sony', 'Xperia E dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1605R402.xml' => [ 'Sony', 'Xperia E dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2004R2001.xml' => [ 'Sony', 'Xperia E1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2004R2011.xml' => [ 'Sony', 'Xperia E1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2005R2001.xml' => [ 'Sony', 'Xperia E1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2005R2011.xml' => [ 'Sony', 'Xperia E1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2104R2011.xml' => [ 'Sony', 'Xperia E1 dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2105R2001.xml' => [ 'Sony', 'Xperia E1 dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2114R2001.xml' => [ 'Sony', 'Xperia E1 dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2203R1801.xml' => [ 'Sony', 'Xperia E3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2206R1801.xml' => [ 'Sony', 'Xperia E3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2243R1801.xml' => [ 'Sony', 'Xperia E3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5103R1411.xml' => [ 'Sony', 'Xperia G', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LotusR620.xml' => [ 'Sony', 'Xperia Go', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST27aR620.xml' => [ 'Sony', 'Xperia Go', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST27iR620.xml' => [ 'Sony', 'Xperia Go', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST27aR601.xml' => [ 'Sony', 'Xperia Go', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST27aR611.xml' => [ 'Sony', 'Xperia Go', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST27iR601.xml' => [ 'Sony', 'Xperia Go', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST27iR611.xml' => [ 'Sony', 'Xperia Go', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-04DR701.xml' => [ 'Sony', 'Xperia GX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-04DR911.xml' => [ 'Sony', 'Xperia GX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT28hR621.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT28iR1002.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT28iR621.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT28atR601.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT28hR411.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT28hR601.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT28hR611.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT28iR601.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT28iR611.xml' => [ 'Sony', 'Xperia Ion', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST26aR402.xml' => [ 'Sony', 'Xperia J', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST26iR402.xml' => [ 'Sony', 'Xperia J', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST26R402.xml' => [ 'Sony', 'Xperia J', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C2104R401.xml' => [ 'Sony', 'Xperia L', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C2105R401.xml' => [ 'Sony', 'Xperia L', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/S36hR401.xml' => [ 'Sony', 'Xperia L', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1904R401.xml' => [ 'Sony', 'Xperia M', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C1905R401.xml' => [ 'Sony', 'Xperia M', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C19R401.xml' => [ 'Sony', 'Xperia M', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2302R1811.xml' => [ 'Sony', 'Xperia M2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2303R1811.xml' => [ 'Sony', 'Xperia M2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2305R1811.xml' => [ 'Sony', 'Xperia M2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2306R1811.xml' => [ 'Sony', 'Xperia M2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2403R1811.xml' => [ 'Sony', 'Xperia M2 Aqua', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D2406R1811.xml' => [ 'Sony', 'Xperia M2 Aqua', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST23aR402.xml' => [ 'Sony', 'Xperia Miro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST23iR402.xml' => [ 'Sony', 'Xperia Miro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT25iR411.xml' => [ 'Sony', 'Xperia Neo L', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT22iR620.xml' => [ 'Sony', 'Xperia P', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT22iR601.xml' => [ 'Sony', 'Xperia P', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT22iR611.xml' => [ 'Sony', 'Xperia P', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT26iiR621.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT26iR1002.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT26iR621.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Android on nozomiR601.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT26iiR601.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT26iiR611.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT26iR301.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT26iR411.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT26iR601.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT26iR611.xml' => [ 'Sony', 'Xperia S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/MT27iR620.xml' => [ 'Sony', 'Xperia Sola', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT27iR601.xml' => [ 'Sony', 'Xperia Sola', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT27iR611.xml' => [ 'Sony', 'Xperia Sola', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/pepperR611.xml' => [ 'Sony', 'Xperia Sola', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Xperia SolaR611.xml' => [ 'Sony', 'Xperia Sola', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5302R1211.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5302R1411.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5302R401.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5303R1211.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5303R1411.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5303R401.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5303R701.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5306R1211.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5306R1401.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5306R1411.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5306R401.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M35cR401.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M35hR1211.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M35hR1411.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M35hR401.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M35tR401.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/Xperiaâ„¢ SPR1211.xml' => [ 'Sony', 'Xperia SP', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-05DR701.xml' => [ 'Sony', 'Xperia SX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-05DR911.xml' => [ 'Sony', 'Xperia SX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30aR1401.xml' => [ 'Sony', 'Xperia T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30aR1411.xml' => [ 'Sony', 'Xperia T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30aR701.xml' => [ 'Sony', 'Xperia T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30aR911.xml' => [ 'Sony', 'Xperia T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30pR1411.xml' => [ 'Sony', 'Xperia T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30pR701.xml' => [ 'Sony', 'Xperia T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30pR911.xml' => [ 'Sony', 'Xperia T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30pR921.xml' => [ 'Sony', 'Xperia T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5303R1411.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5303R1903.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5306R1903.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5306R1912.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5316R1903.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5322R1903.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/XM50hR1911.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/XM50hR1912.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/XM50tR1903.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/XM50tR1912.xml' => [ 'Sony', 'Xperia T2 Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5322R1912.xml' => [ 'Sony', 'Xperia T2 Ultra dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/XM50hR1903.xml' => [ 'Sony', 'Xperia T2 Ultra dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5103R1801.xml' => [ 'Sony', 'Xperia T3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5106R1801.xml' => [ 'Sony', 'Xperia T3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M50wR1801.xml' => [ 'Sony', 'Xperia T3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/PolluxWindyR1002.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP311R1002.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP311R1003.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP311R1004.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP311R1005.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP312R1002.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP312R1003.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP312R1004.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SGP321R1002.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP321R1003.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP321R1004.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP321R1005.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP341R1002.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP341R1003.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP341R1004.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP341R1005.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP351R1002.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SO-03ER1002.xml' => [ 'Sony', 'Xperia Tablet Z', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP412R1401.xml' => [ 'Sony', 'Xperia Tablet Z Ultra', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP412R1421.xml' => [ 'Sony', 'Xperia Tablet Z Ultra', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP511R1701.xml' => [ 'Sony', 'Xperia Tablet Z2', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP512R1701.xml' => [ 'Sony', 'Xperia Tablet Z2', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SGP521R1701.xml' => [ 'Sony', 'Xperia Tablet Z2', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SO-05FR1701.xml' => [ 'Sony', 'Xperia Tablet Z2', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/SOT21R1701.xml' => [ 'Sony', 'Xperia Tablet Z2', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/ST21aR402.xml' => [ 'Sony', 'Xperia Tipo', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST21iR402.xml' => [ 'Sony', 'Xperia Tipo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST21iR402.xml' => [ 'Sony', 'Xperia Tipo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST21R402.xml' => [ 'Sony', 'Xperia Tipo', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST21a2R402.xml' => [ 'Sony', 'Xperia Tipo Dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST21i2R402.xml' => [ 'Sony', 'Xperia Tipo Dual', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30atR601.xml' => [ 'Sony', 'Xperia TL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30atR701.xml' => [ 'Sony', 'Xperia TL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT30atR911.xml' => [ 'Sony', 'Xperia TL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT29iR1002.xml' => [ 'Sony', 'Xperia TX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT29iR1411.xml' => [ 'Sony', 'Xperia TX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT29iR601.xml' => [ 'Sony', 'Xperia TX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT29iR701.xml' => [ 'Sony', 'Xperia TX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT29iR911.xml' => [ 'Sony', 'Xperia TX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT29iR921.xml' => [ 'Sony', 'Xperia TX', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/HayabusaR601.xml' => [ 'Sony', 'Xperia TX', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT29iR601.xml' => [ 'Sony', 'Xperia TX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST25iR620.xml' => [ 'Sony', 'Xperia U', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST25aR601.xml' => [ 'Sony', 'Xperia U', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST25aR611.xml' => [ 'Sony', 'Xperia U', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST25iR601.xml' => [ 'Sony', 'Xperia U', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST25iR611.xml' => [ 'Sony', 'Xperia U', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL22R1002.xml' => [ 'Sony', 'Xperia UL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL22R1003.xml' => [ 'Sony', 'Xperia UL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT25iR1411.xml' => [ 'Sony', 'Xperia V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT25iR701.xml' => [ 'Sony', 'Xperia V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT25iR901.xml' => [ 'Sony', 'Xperia V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT25iR911.xml' => [ 'Sony', 'Xperia V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT25iR921.xml' => [ 'Sony', 'Xperia V', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT25cR901.xml' => [ 'Sony', 'Xperia VC', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT25cR911.xml' => [ 'Sony', 'Xperia VC', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL21R901.xml' => [ 'Sony', 'Xperia VL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL21R911.xml' => [ 'Sony', 'Xperia VL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL21R921.xml' => [ 'Sony', 'Xperia VL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6602R1002.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6602R1003.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6602R1004.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6602R1005.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6602R402.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6603R1002.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6603R1003.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6603R1004.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6603R1005.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6606R1002.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6606R1003.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6606R1004.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6616R1002.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6616R1004.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6616R1005.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L36hR1002.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L36hR1003.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L36hR1004.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L36hR1005.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L36hR911.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-02ER1002.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-02ER1003.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-02ER1005.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-02ER1411.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C6603R611.xml' => [ 'Sony', 'Xperia Z', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6802R1002.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6802R1401.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6802R1411.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6802R1421.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6806R1401.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6806R1411.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6806R1421.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6833R1401.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6833R1411.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/C6833R1421.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL24R1401.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL24R1421.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/XL39hR1401.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::TABLET ], + 'http://uaprof.sonymobile.com/XL39hR1411.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/XL39hR1421.xml' => [ 'Sony', 'Xperia Z Ultra', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6902R1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6902R1411.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6902R1421.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6903R1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6903R1411.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6903R1421.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6906R1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6906R1411.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6906R1421.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6916R1411.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6943R1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6943R1411.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6943R1421.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L39hR1003.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L39hR1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L39hR1411.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L39hR1421.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L39hR911.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L39tR1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L39uR1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-01FR1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-01FR1411.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-01FR1421.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL23R1401.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL23R1421.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/Xperia Z1R620.xml' => [ 'Sony', 'Xperia Z1', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5503R1411.xml' => [ 'Sony', 'Xperia Z1 Compact', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D5503R1421.xml' => [ 'Sony', 'Xperia Z1 Compact', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M51wR1411.xml' => [ 'Sony', 'Xperia Z1 Compact', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M51wR1421.xml' => [ 'Sony', 'Xperia Z1 Compact', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-02FR1401.xml' => [ 'Sony', 'Xperia Z1f', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-02FR1421.xml' => [ 'Sony', 'Xperia Z1f', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D6502R1701.xml' => [ 'Sony', 'Xperia Z2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D6503R1701.xml' => [ 'Sony', 'Xperia Z2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D6543R1701.xml' => [ 'Sony', 'Xperia Z2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L50tR1701.xml' => [ 'Sony', 'Xperia Z2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L50uR1701.xml' => [ 'Sony', 'Xperia Z2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L50wR1701.xml' => [ 'Sony', 'Xperia Z2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L50wR911.xml' => [ 'Sony', 'Xperia Z2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-03FR1701.xml' => [ 'Sony', 'Xperia Z2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/D6563R1701.xml' => [ 'Sony', 'Xperia Z2a', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L55tR2301.xml' => [ 'Sony', 'Xperia Z3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L55uR2301.xml' => [ 'Sony', 'Xperia Z3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6502R1002.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6502R1003.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6502R1004.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6502R1005.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6503R1002.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6503R1003.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6503R1004.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6503R1005.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6503R1411.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6503R701.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6506R1002.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6506R1003.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6506R1004.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C6506R1005.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L35hR1002.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L35hR1003.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/L35hR1005.xml' => [ 'Sony', 'Xperia ZL', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SOL25R1701.xml' => [ 'Sony', 'Xperia ZL2', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5502R1002.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5502R1003.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5502R1004.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5502R1005.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5503R1002.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5503R1003.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5503R1004.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/C5503R1005.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M36hR1002.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M36hR1003.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M36hR1004.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/M36hR1005.xml' => [ 'Sony', 'Xperia ZR', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/A100iR201.xml' => [ 'Sony Ericsson', 'A100i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/A260R101.xml' => [ 'Sony Ericsson', 'A260', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/A270R101.xml' => [ 'Sony Ericsson', 'A270', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/A290iR101.xml' => [ 'Sony Ericsson', 'A290i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/A8iR101.xml' => [ 'Sony Ericsson', 'A8i', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U100iR101.xml' => [ 'Sony Ericsson', 'Aino', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U10iR101.xml' => [ 'Sony Ericsson', 'Aino', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ArcR402.xml' => [ 'Sony Ericsson', 'Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/M1iR101.xml' => [ 'Sony Ericsson', 'Aspen', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C123R101.xml' => [ 'Sony Ericsson', 'C123', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C510R101.xml' => [ 'Sony Ericsson', 'C510', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C510aR101.xml' => [ 'Sony Ericsson', 'C510a', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C702R101.xml' => [ 'Sony Ericsson', 'C702', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C901R101.xml' => [ 'Sony Ericsson', 'C901', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C902R101.xml' => [ 'Sony Ericsson', 'C902', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C905R101.xml' => [ 'Sony Ericsson', 'C905', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/C905R101-3G.xml' => [ 'Sony Ericsson', 'C905v', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/J108aR101.xml' => [ 'Sony Ericsson', 'Cedar', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/J108iR101.xml' => [ 'Sony Ericsson', 'Cedar', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/J10i2R101.xml' => [ 'Sony Ericsson', 'Elm', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/J10iR101.xml' => [ 'Sony Ericsson', 'Elm', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/uaprof/R300R101.xml' => [ 'Sony Ericsson', 'F300', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/uaprof/F305R101.xml' => [ 'Sony Ericsson', 'F305', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/G502R101.xml' => [ 'Sony Ericsson', 'G502', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/G700R100.xml' => [ 'Sony Ericsson', 'G700', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/G705R101.xml' => [ 'Sony Ericsson', 'G705', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/G900R100.xml' => [ 'Sony Ericsson', 'G900', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/J20iR101.xml' => [ 'Sony Ericsson', 'Hazel', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K310iR301.xml' => [ 'Sony Ericsson', 'K310i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K530iR201.xml' => [ 'Sony Ericsson', 'K530i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K550cR201.xml' => [ 'Sony Ericsson', 'K550c', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K550iR201.xml' => [ 'Sony Ericsson', 'K550i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K610iR201.xml' => [ 'Sony Ericsson', 'K610i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K630iR101.xml' => [ 'Sony Ericsson', 'K630i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K660iR101.xml' => [ 'Sony Ericsson', 'K660i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K770iR201-3G.xml' => [ 'Sony Ericsson', 'K770i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K770iR201.xml' => [ 'Sony Ericsson', 'K770i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K790aR201.xml' => [ 'Sony Ericsson', 'K790a', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K790iR201.xml' => [ 'Sony Ericsson', 'K790i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K800iR201.xml' => [ 'Sony Ericsson', 'K800i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K810iR201.xml' => [ 'Sony Ericsson', 'K810i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/K850iR101.xml' => [ 'Sony Ericsson', 'K850i', null, DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/WT19iR1002.xml' => [ 'Sony Ericsson', 'Live with Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Live with WalkmanR411.xml' => [ 'Sony Ericsson', 'Live with Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/WT19aR402.xml' => [ 'Sony Ericsson', 'Live with Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/WT19aR411.xml' => [ 'Sony Ericsson', 'Live with Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/WT19iR402.xml' => [ 'Sony Ericsson', 'Live with Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/WT19iR411.xml' => [ 'Sony Ericsson', 'Live with Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/M600iR100.xml' => [ 'Sony Ericsson', 'M600i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/M608cR100.xml' => [ 'Sony Ericsson', 'M608c', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/uaprof/WT13iR101.xml' => [ 'Sony Ericsson', 'Mix Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/J105aR101.xml' => [ 'Sony Ericsson', 'Naite', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/J105iR101.xml' => [ 'Sony Ericsson', 'Naite', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/P1iR100.xml' => [ 'Sony Ericsson', 'P1i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/P800R101.xml' => [ 'Sony Ericsson', 'P800', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/P800R102.xml' => [ 'Sony Ericsson', 'P800', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/P900R101.xml' => [ 'Sony Ericsson', 'P900', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/P908R101.xml' => [ 'Sony Ericsson', 'P908', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/P990iR100.xml' => [ 'Sony Ericsson', 'P990i', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/P200R100.xml' => [ 'Sony Ericsson', 'Paris', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/S500iR201.xml' => [ 'Sony Ericsson', 'S500i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U1aR000.xml' => [ 'Sony Ericsson', 'Satio', 'Series60', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U1iR000.xml' => [ 'Sony Ericsson', 'Satio', 'Series60', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U_1R000.xml' => [ 'Sony Ericsson', 'Satio', 'Series60', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T100R101.xml' => [ 'Sony Ericsson', 'T100', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T123iR101.xml' => [ 'Sony Ericsson', 'T123', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T200.xml' => [ 'Sony Ericsson', 'T200', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T226R101.xml' => [ 'Sony Ericsson', 'T226', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T230R101.xml' => [ 'Sony Ericsson', 'T230', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T238R101.xml' => [ 'Sony Ericsson', 'T238', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/uaprof/T250iR101.xml' => [ 'Sony Ericsson', 'T250i', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/uaprof/T280aR101.xml' => [ 'Sony Ericsson', 'T280a', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/uaprof/T280iR101.xml' => [ 'Sony Ericsson', 'T280i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T300R101.xml' => [ 'Sony Ericsson', 'T300', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T300R201.xml' => [ 'Sony Ericsson', 'T300', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T302R201.xml' => [ 'Sony Ericsson', 'T302', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/uaprof/T303R101.xml' => [ 'Sony Ericsson', 'T303', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T306R101.xml' => [ 'Sony Ericsson', 'T306', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T310R201.xml' => [ 'Sony Ericsson', 'T310', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T312R201.xml' => [ 'Sony Ericsson', 'T312', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T600R101.xml' => [ 'Sony Ericsson', 'T600', null, DeviceType::MOBILE ], + 'http://device.sprintpcs.com/SonyEricsson/SEMCT608/r1a.rdf' => [ 'Sony Ericsson', 'T608', null, DeviceType::MOBILE ], + 'http://wap.sonyericssonmobile.com/UAprof/T61.xml' => [ 'Sony Ericsson', 'T61', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T610R101.xml' => [ 'Sony Ericsson', 'T610', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T610R201.xml' => [ 'Sony Ericsson', 'T610', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T610R301.xml' => [ 'Sony Ericsson', 'T610', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T610R401.xml' => [ 'Sony Ericsson', 'T610', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T616R101.xml' => [ 'Sony Ericsson', 'T616', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T616R201.xml' => [ 'Sony Ericsson', 'T616', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T618R101.xml' => [ 'Sony Ericsson', 'T618', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T618R201.xml' => [ 'Sony Ericsson', 'T618', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T618R301.xml' => [ 'Sony Ericsson', 'T618', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T618R401.xml' => [ 'Sony Ericsson', 'T618', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T628R401.xml' => [ 'Sony Ericsson', 'T628', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T630R401.xml' => [ 'Sony Ericsson', 'T630', null, DeviceType::MOBILE ], + 'http://wap.sonyericssonmobile.com/UAprof/T65.xml' => [ 'Sony Ericsson', 'T65', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/T650iR201.xml' => [ 'Sony Ericsson', 'T650i', null, DeviceType::MOBILE ], + 'http://wap.sonyericssonmobile.com/UAprof/T68R1.xml' => [ 'Sony Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericssonmobile.com/UAprof/T68R201.xml' => [ 'Sony Ericsson', 'T68', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T700R101.xml' => [ 'Sony Ericsson', 'T700', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/T707R101.xml' => [ 'Sony Ericsson', 'T707', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/TM506R101.xml' => [ 'Sony Ericsson', 'TM506', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/uaprof/CK13iR101.xml' => [ 'Sony Ericsson', 'txt', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/uaprof/CK15aR101.xml' => [ 'Sony Ericsson', 'txt Pro', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/uaprof/CK15iR101.xml' => [ 'Sony Ericsson', 'txt Pro', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/V640iR101-3G.xml' => [ 'Sony Ericsson', 'V640i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/V640iR101.xml' => [ 'Sony Ericsson', 'V640i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U5aR000.xml' => [ 'Sony Ericsson', 'Vivaz', 'Series60', DeviceType::MOBILE ], + 'http://www.sonyericsson.com/downloads/U5iR000.xml' => [ 'Sony Ericsson', 'Vivaz', 'Series60', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U8aR000.xml' => [ 'Sony Ericsson', 'Vivaz Pro', 'Series60', DeviceType::MOBILE ], + 'http://www.sonyericsson.com/downloads/U8iR000.xml' => [ 'Sony Ericsson', 'Vivaz Pro', 'Series60', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W200iR301.xml' => [ 'Sony Ericsson', 'W200i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W20iR101.xml' => [ 'Sony Ericsson', 'W20i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W300iR301.xml' => [ 'Sony Ericsson', 'W300i', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/uaprof/W302R101.xml' => [ 'Sony Ericsson', 'W302', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/uaprof/W302R201.xml' => [ 'Sony Ericsson', 'W302', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W350iR201.xml' => [ 'Sony Ericsson', 'W350i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W380iR201.xml' => [ 'Sony Ericsson', 'W380i', null, DeviceType::MOBILE ], + 'http://www.sonyericsson.com/downloads/W395R101.xml' => [ 'Sony Ericsson', 'W395', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W508R101.xml' => [ 'Sony Ericsson', 'W508', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W595R101.xml' => [ 'Sony Ericsson', 'W595', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W610iR201.xml' => [ 'Sony Ericsson', 'W610i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W660iR201-3G.xml' => [ 'Sony Ericsson', 'W660i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W660iR201.xml' => [ 'Sony Ericsson', 'W660i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W705R101.xml' => [ 'Sony Ericsson', 'W705', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W715R101-HS.xml' => [ 'Sony Ericsson', 'W715', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W715R101.xml' => [ 'Sony Ericsson', 'W715', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W760iR101.xml' => [ 'Sony Ericsson', 'W760i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E16iR202.xml' => [ 'Sony Ericsson', 'W8 Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W890iR101.xml' => [ 'Sony Ericsson', 'W890i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W902R101.xml' => [ 'Sony Ericsson', 'W902', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W908cR101.xml' => [ 'Sony Ericsson', 'W908c', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W910iR101-3G.xml' => [ 'Sony Ericsson', 'W910i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W910iR101-HS.xml' => [ 'Sony Ericsson', 'W910i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W910iR101.xml' => [ 'Sony Ericsson', 'W910i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAProf/W950iR100.xml' => [ 'Sony Ericsson', 'W950i', 'UIQ', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W995R101.xml' => [ 'Sony Ericsson', 'W995', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/W995aR101.xml' => [ 'Sony Ericsson', 'W995a', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/WT18iR101.xml' => [ 'Sony Ericsson', 'Walkman', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/IS11SR301.xml' => [ 'Sony Ericsson', 'Xperia Acro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/IS11SR402.xml' => [ 'Sony Ericsson', 'Xperia Acro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-02CR301.xml' => [ 'Sony Ericsson', 'Xperia Acro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-02CR402.xml' => [ 'Sony Ericsson', 'Xperia Acro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/SO-03DR621.xml' => [ 'Sony Ericsson', 'Xperia Acro HD', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/IS12SR601.xml' => [ 'Sony Ericsson', 'Xperia Acro HD', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/IS12SR611.xml' => [ 'Sony Ericsson', 'Xperia Acro HD', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-03DR601.xml' => [ 'Sony Ericsson', 'Xperia Acro HD', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-03DR611.xml' => [ 'Sony Ericsson', 'Xperia Acro HD', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST17iR402.xml' => [ 'Sony Ericsson', 'Xperia Active', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST17aR402.xml' => [ 'Sony Ericsson', 'Xperia Active', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST17aR411.xml' => [ 'Sony Ericsson', 'Xperia Active', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST17iR402.xml' => [ 'Sony Ericsson', 'Xperia Active', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST17iR411.xml' => [ 'Sony Ericsson', 'Xperia Active', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT15iR1002.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT15iR1401.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15aR301.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15aR401.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15aR402.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15aR411.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15iR202.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15iR301.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15iR401.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15iR402.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15iR411.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15R301.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT15R411.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-01CR301.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-01CR402.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-01CR411.xml' => [ 'Sony Ericsson', 'Xperia Arc', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT18iR1002.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/LT18iR1401.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT18aR402.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT18aR411.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT18iR402.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT18iR411.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT18iR601.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT18R402.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/LT18R411.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Xperia Arc SR411.xml' => [ 'Sony Ericsson', 'Xperia Arc S', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/S51SER402.xml' => [ 'Sony Ericsson', 'Xperia Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST15aR401.xml' => [ 'Sony Ericsson', 'Xperia Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST15aR402.xml' => [ 'Sony Ericsson', 'Xperia Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST15aR411.xml' => [ 'Sony Ericsson', 'Xperia Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST15iR301.xml' => [ 'Sony Ericsson', 'Xperia Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST15iR401.xml' => [ 'Sony Ericsson', 'Xperia Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST15iR402.xml' => [ 'Sony Ericsson', 'Xperia Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST15iR411.xml' => [ 'Sony Ericsson', 'Xperia Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SK17aR401.xml' => [ 'Sony Ericsson', 'Xperia Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SK17aR402.xml' => [ 'Sony Ericsson', 'Xperia Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SK17aR411.xml' => [ 'Sony Ericsson', 'Xperia Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SK17iR401.xml' => [ 'Sony Ericsson', 'Xperia Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SK17iR402.xml' => [ 'Sony Ericsson', 'Xperia Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SK17iR411.xml' => [ 'Sony Ericsson', 'Xperia Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/MT15iR1002.xml' => [ 'Sony Ericsson', 'Xperia Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT15aR402.xml' => [ 'Sony Ericsson', 'Xperia Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT15aR411.xml' => [ 'Sony Ericsson', 'Xperia Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT15iR301.xml' => [ 'Sony Ericsson', 'Xperia Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT15iR401.xml' => [ 'Sony Ericsson', 'Xperia Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT15iR402.xml' => [ 'Sony Ericsson', 'Xperia Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT15iR411.xml' => [ 'Sony Ericsson', 'Xperia Neo', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/XPERIA NEOR402.xml' => [ 'Sony Ericsson', 'Xperia Neo', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/MT11iR1002.xml' => [ 'Sony Ericsson', 'Xperia Neo V', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT11aR402.xml' => [ 'Sony Ericsson', 'Xperia Neo V', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT11aR411.xml' => [ 'Sony Ericsson', 'Xperia Neo V', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT11iR402.xml' => [ 'Sony Ericsson', 'Xperia Neo V', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MT11iR411.xml' => [ 'Sony Ericsson', 'Xperia Neo V', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-02DR601.xml' => [ 'Sony Ericsson', 'Xperia NX', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-02DR611.xml' => [ 'Sony Ericsson', 'Xperia NX', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/R800iR1401.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R800aR301.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R800aR401.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R800aR402.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R800atR301.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R800iR301.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R800iR401.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R800iR402.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/R800iR411.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-01DR402.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z1iR301.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z1iR402.xml' => [ 'Sony Ericsson', 'Xperia Play', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MK16aR401.xml' => [ 'Sony Ericsson', 'Xperia Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MK16aR402.xml' => [ 'Sony Ericsson', 'Xperia Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MK16aR411.xml' => [ 'Sony Ericsson', 'Xperia Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MK16iR301.xml' => [ 'Sony Ericsson', 'Xperia Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MK16iR402.xml' => [ 'Sony Ericsson', 'Xperia Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/MK16iR411.xml' => [ 'Sony Ericsson', 'Xperia Pro', 'Android', DeviceType::MOBILE ], + 'http://uaprof.sonymobile.com/ST18iR1002.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-03CR401.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-03CR402.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST18aR401.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST18aR402.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST18aR411.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST18i PremiumR402.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST18iR401.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST18iR402.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST18iR411.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/ST18R411.xml' => [ 'Sony Ericsson', 'Xperia Ray', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X1iR101.xml' => [ 'Sony Ericsson', 'Xperia X1', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-01BR101.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/SO-01BR201.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10aR101.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10aR201.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10aR202.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10aR301.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10iR101.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10iR201.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10iR202.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10iR301.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10iR601.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10R301.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10R601.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10SR301.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X10SR601.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Xperia X10R301.xml' => [ 'Sony Ericsson', 'Xperia X10', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E10aR102.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E10aR201.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E10aR202.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E10iR102.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E10iR201.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E10iR202.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U20aR102.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U20aR201.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U20aR202.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U20iR102.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U20iR201.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/U20iR202.xml' => [ 'Sony Ericsson', 'Xperia X10 Mini Pro', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/X2R301.xml' => [ 'Sony Ericsson', 'Xperia X2', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E15aR102.xml' => [ 'Sony Ericsson', 'Xperia X8', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E15aR201.xml' => [ 'Sony Ericsson', 'Xperia X8', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E15aR202.xml' => [ 'Sony Ericsson', 'Xperia X8', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E15iR102.xml' => [ 'Sony Ericsson', 'Xperia X8', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E15iR201.xml' => [ 'Sony Ericsson', 'Xperia X8', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/E15iR202.xml' => [ 'Sony Ericsson', 'Xperia X8', 'Android', DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/uaprof/W150iR101.xml' => [ 'Sony Ericsson', 'Yendo', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z1010R101.xml' => [ 'Sony Ericsson', 'Z1010', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z200R101.xml' => [ 'Sony Ericsson', 'Z200', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z320iR101.xml' => [ 'Sony Ericsson', 'Z320i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z558cR301.xml' => [ 'Sony Ericsson', 'Z558c', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z600R301.xml' => [ 'Sony Ericsson', 'Z600', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z600R401.xml' => [ 'Sony Ericsson', 'Z600', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z608R301.xml' => [ 'Sony Ericsson', 'Z608', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z608R401.xml' => [ 'Sony Ericsson', 'Z608', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z750iR101.xml' => [ 'Sony Ericsson', 'Z750i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z770iR101.xml' => [ 'Sony Ericsson', 'Z770i', null, DeviceType::MOBILE ], + 'http://wap.sonyericsson.com/UAprof/Z780iR101.xml' => [ 'Sony Ericsson', 'Z780i', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Soshphone_4G.xml' => [ 'SoshPhone', '4G', 'Android', DeviceType::MOBILE ], + 'http://wap.spicegang.in/uaprofile/SPICE-C-810.xml' => [ 'Spice', 'C-810', null, DeviceType::MOBILE ], + 'http://msai.in/uaprof/spice/M5455.xml' => [ 'Spice', 'M-5455 Flo', null, DeviceType::MOBILE ], + 'http://msai.in/uaprof/spice/M5885.xml' => [ 'Spice', 'M-5885 Cappuccino II', 'MTK', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/spice/SPICE_M6700.xml' => [ 'Spice', 'M-6700', null, DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/spice/SPICE_M-6800.xml' => [ 'Spice', 'M-6800', 'MTK', DeviceType::MOBILE ], + 'http://msai.in/uaprof/spice/M6868n.xml' => [ 'Spice', 'M-6868 Flo', 'MTK', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Spice/Mi-315.xml' => [ 'Spice', 'Mi-315', 'Android', DeviceType::MOBILE ], + 'http://www.commtiva.com/uaprof/E500/UAProf_E500_Froyo.xml' => [ 'Spice', 'Mi-350', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/Spice_Mi350_UAProfile.xml' => [ 'Spice', 'Mi-350', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/Kyocera/KYE4255/1306SP.rdf' => [ 'Sprint', 'E4255', 'Brew', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/KYOCERA/S2151/1.000SP.rdf' => [ 'Sprint', 'S2151', 'Brew', DeviceType::MOBILE ], + 'http://uap.cellon.com/Starmobile_KNIGHT.xml' => [ 'Starmobile', 'Knight', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/starmobile/starmobile.xml' => [ 'Starmobile', 'Roar', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/ameo-1.0.xml' => [ 'T-Mobile', 'Ameo', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/ameo-1.1.xml' => [ 'T-Mobile', 'Ameo', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Rogers/DreamR/ua-profile-htc-dream-Rogers.xml' => [ 'T-Mobile', 'G1', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/G2/ua-profile.xml' => [ 'T-Mobile', 'G2', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/TMO/Hero/ua-profile.xml' => [ 'T-Mobile', 'G2', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/LG-L95G.xml' => [ 'T-Mobile', 'G2x', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/P999-M10-D1.xml' => [ 'T-Mobile', 'G2x', 'Android', DeviceType::MOBILE ], + 'http://static.garmincdn.com/uaprof/T-Mobile_Garminfone_1_0.xml' => [ 'T-Mobile', 'Garminfone', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/mdacp-1.0.xml' => [ 'T-Mobile', 'MDA Compact', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/mdacp-3.0.xml' => [ 'T-Mobile', 'MDA Compact III', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/mdapro-1.0.xml' => [ 'T-Mobile', 'MDA Pro', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/mdatouch-1.0.xml' => [ 'T-Mobile', 'MDA Touch', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/mdavario-2.0.xml' => [ 'T-Mobile', 'MDA Vario II', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/mdavario-3.0.xml' => [ 'T-Mobile', 'MDA Vario III', 'Windows Mobile', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8600WCDMA-T-Mobile.xml' => [ 'T-Mobile', 'Move Balance', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/E739-M10-D1.xml' => [ 'T-Mobile', 'myTouch', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8680GPRS-TMO.xml' => [ 'T-Mobile', 'myTouch', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8680WCDMA-TMO.xml' => [ 'T-Mobile', 'myTouch', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/myTouch3G/ua-profile.xml' => [ 'T-Mobile', 'myTouch 3G Slide', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/myTouch4G/ua-profile.xml' => [ 'T-Mobile', 'myTouch 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/PD15/ua-profile.xml' => [ 'T-Mobile', 'myTouch 4G', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/Android/Common/myTouch_4G_Slide/ua-profile.xml' => [ 'T-Mobile', 'myTouch 4G Slide', 'Android', DeviceType::MOBILE ], + 'http://gsm.lge.com/html/gsm/C800-M10-D1.xml' => [ 'T-Mobile', 'myTouch Q', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8730GPRS-TMO.xml' => [ 'T-Mobile', 'myTouch Q', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8730WCDMA-TMO.xml' => [ 'T-Mobile', 'myTouch Q', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8651GPRS-TMO.xml' => [ 'T-Mobile', 'Prism', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8651SWCDMA-TMO.xml' => [ 'T-Mobile', 'Prism', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8651WCDMA-TMO.xml' => [ 'T-Mobile', 'Prism', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8686GPRS-Normal.xml' => [ 'T-Mobile', 'Prism II', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8220v100GPRSEclair.xml' => [ 'T-Mobile', 'Pulse', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8220v100WCDMAEclair.xml' => [ 'T-Mobile', 'Pulse', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8220_6v100WCDMA.xml' => [ 'T-Mobile', 'Pulse', 'Android', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/tmo/sda-1.0.xml' => [ 'T-Mobile', 'SDA', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/T-Mobile_Vivacity.xml' => [ 'T-Mobile', 'Vivacity', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_TCL_309T.xml' => [ 'TCL', '309T', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_A890_2SIM.xml' => [ 'TCL', 'A890', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL-A909.xml' => [ 'TCL', 'A909', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_A919.xml' => [ 'TCL', 'A919', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_A980.xml' => [ 'TCL', 'A980', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL A986.xml' => [ 'TCL', 'A986', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_A990.xml' => [ 'TCL', 'A990', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL A998.xml' => [ 'TCL', 'A998', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_H900M.xml' => [ 'TCL', 'H900M', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_Y910T.xml' => [ 'TCL', 'Hero N3', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_i708U.xml' => [ 'TCL', 'i708U', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_i709M.xml' => [ 'TCL', 'i709M', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_i718M.xml' => [ 'TCL', 'i718M', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_i800.xml' => [ 'TCL', 'i800', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/i806.xml' => [ 'TCL', 'i806', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_i806.xml' => [ 'TCL', 'i806', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCT_J320T.xml' => [ 'TCL', 'J320', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCT_J600T.xml' => [ 'TCL', 'J600T', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCT_J630T.xml' => [ 'TCL', 'J630T', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_J720.xml' => [ 'TCL', 'J720', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_J726T.xml' => [ 'TCL', 'J726T', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL-J736L.xml' => [ 'TCL', 'J736', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_J738M.xml' => [ 'TCL', 'J738', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S838M.xml' => [ 'TCL', 'J738M', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_J926T.xml' => [ 'TCL', 'J926T', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_J928.xml' => [ 'TCL', 'J928', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_M2M.xml' => [ 'TCL', 'M2M', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_M2U.xml' => [ 'TCL', 'M2U', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_P301M.xml' => [ 'TCL', 'P301M', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_P331M.xml' => [ 'TCL', 'P331M', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_P600.xml' => [ 'TCL', 'P600', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_P606.xml' => [ 'TCL', 'P606', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_P606T.xml' => [ 'TCL', 'P606T', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_P620M_UA.xml' => [ 'TCL', 'P620M', 'Android', DeviceType::MOBILE ], + 'http://114.242.213.43:8080/ThundersoftMDMWeb/resources/mochagw01.xml' => [ 'TCL', 'P650', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL-P688L.xml' => [ 'TCL', 'P688L', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_P728M.xml' => [ 'TCL', 'P728', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL-S700T.xml' => [ 'TCL', 'S700', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S720.xml' => [ 'TCL', 'S720', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S720T.xml' => [ 'TCL', 'S720', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S725T.xml' => [ 'TCL', 'S725', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S820.xml' => [ 'TCL', 'S820', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S826L.xml' => [ 'TCL', 'S826', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S830U.xml' => [ 'TCL', 'S830U', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S850.xml' => [ 'TCL', 'S850', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S860.xml' => [ 'TCL', 'S860', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S950.xml' => [ 'TCL', 'S950', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S950T.xml' => [ 'TCL', 'S950', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOTCL S950.xml' => [ 'TCL', 'S950', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/ALCATEL_ONE_TOUCH_6043D.xml' => [ 'TCL', 'S960', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S960.xml' => [ 'TCL', 'S960', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_S960T.xml' => [ 'TCL', 'S960', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_W939.xml' => [ 'TCL', 'W939', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_W969.xml' => [ 'TCL', 'W969', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_Y710.xml' => [ 'TCL', 'Y710', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_Y900.xml' => [ 'TCL', 'Y900', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/TCL_Y910.xml' => [ 'TCL', 'Y910', 'Android', DeviceType::MOBILE ], + 'Mozilla/5.0 (Linux; U; Android 4.4; zh-cn;TECNO L7 Build/ AppleWebKit/534.30 (KHTML, like Gecko) Version/4.4 Mobile Safari/534.30'=> [ 'Tecno', 'L6', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Tecno/Tecno_N7.xml' => [ 'TECNO', 'N7', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/file/ALCATEL_one_touch_7018.xml' => [ 'Tecno', 'P3', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Preo_Teknosa_P1.xml' => [ 'Teknosa', 'Preo P1', 'Android', DeviceType::MOBILE ], + 'http://wap.purplelabs.com/UAprofile/UAprofileTelme_T919.xml' => [ 'Tel.Me', 'T919', null, DeviceType::MOBILE ], + 'http://www.teleepoch.com/PMI920.xml' => [ 'TeleEpoch', 'PMI920', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ Telenor Touch Plus.xml' => [ 'Telenor', 'Touch Plus', 'Android', DeviceType::MOBILE ], + 'http://download.telme.at/wap/UAprofileTelme_T919.xml' => [ 'TelMe', 'T919', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T20.xml' => [ 'Telstra', 'FLIP', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/T3020.xml' => [ 'Telstra', 'Smart Touch', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/tmn_smart_a18.xml' => [ 'TMN', 'Smart A18', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V9800.xml' => [ 'TMN', 'Smart A60', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/tmn_smart_a7.xml' => [ 'TMN', 'Smart A7', 'Android', DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/EUR1/G500-1.0.xml' => [ 'Toshiba', 'Portégé G500', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/EUR1/G810-1.0.xml' => [ 'Toshiba', 'Portégé G810', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/EUR1/G910_G920-1.0.xml' => [ 'Toshiba', 'Portégé G910', null, DeviceType::MOBILE ], + 'http://www.fmworld.net/product/phone/is04/uapro/IS04-1.0.xml' => [ 'Toshiba', 'Regza IS04', 'Android', DeviceType::MOBILE ], + 'http://www.fmworld.net/product/phone/t-01c/uapro/T-01C-1.0.xml' => [ 'Toshiba', 'Regza T-01C', 'Android', DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/GPRS/Toshiba_TS605.xml' => [ 'Toshiba', 'TS605', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/GPRS/Toshiba_GS20.xml' => [ 'Toshiba', 'TS608', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/EUR1/Toshiba_808_r100_3G.xml' => [ 'Toshiba', 'TS808', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/EUR1/Toshiba_808_r100_GPRS.xml' => [ 'Toshiba', 'TS808', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/EUR1/TS_921_r100.xml' => [ 'Toshiba', 'TS921', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8860-rGPRS-Turkcell.xml' => [ 'Turkcell', 'MaxiPRO5', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650GPRS-Turkcell.xml' => [ 'Turkcell', 'T20', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiU8650WCDMA-Turkcell.xml' => [ 'Turkcell', 'T20', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/TURKCELL T40.xml' => [ 'Turkcell', 'T40', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/TURKCELL_T50.xml' => [ 'Turkcell', 'T50', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Amazing_A5S.xml' => [ 'TWM', 'Amazing A5S', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/A6.xml' => [ 'TWM', 'Amazing A6', 'Android', DeviceType::MOBILE ], + 'http://www.c2dms.com/UAProfile/TWM/A6S.xml' => [ 'TWM', 'Amazing A6S', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T88.xml' => [ 'TWM', 'Amazing X2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Amazing_X5.xml' => [ 'TWM', 'Amazing X5', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/myPad_P3.xml' => [ 'TWM', 'myPad P3', 'Android', DeviceType::MOBILE ], + 'http://gsm.unc.com/html/gsm/GL8-M10-D1.xml' => [ 'Ucan', 'MJ Michael Jackson Reborn', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/UMI_eMAX_mini.xml' => [ 'UMI', 'eMAX mini', 'Android', DeviceType::MOBILE ], + 'http://pix.cspire.com/UA/profile/unimax/u680/u680.xml' => [ 'UMX', 'U680C', 'Android', DeviceType::MOBILE ], + 'http://www.uniscope.com.cn/wapup/unipu2.xml' => [ 'Uniscope', 'PU2', null, DeviceType::MOBILE ], + 'http://uriver.co.kr/UAprof/UAprof_SP770.xml' => [ 'Uriver', 'SP770', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/Utec_S800.xml' => [ 'Utec', 'S800', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/UTStarcom/TXT8010/TXT8010.xml' => [ 'UTStarcom', 'Blitz TXT8010', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/utstar/7075/7075v1.xml' => [ 'UTStarcom', 'CDM-7075', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/UTSTARCOM/cdma8074/VMU_cdma8074_UAProf.xml' => [ 'UTStarcom', 'CDM-8074', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/AUDIOVOX/CDM-8915/VMU_Audiovox-CDM-8915.xml' => [ 'UTStarcom', 'CDM-8915', null, DeviceType::MOBILE ], + 'http://user.chol.com/~budelgaji/uaprof/CDM8935.xml' => [ 'UTStarcom', 'CDM-8935', null, DeviceType::MOBILE ], + 'http://pix.cellularsouth.com/UA/profile/utstarcom/cdm8955/cdm8955.xml' => [ 'UTstarcom', 'CDM-8955', null, DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/uts/CDM8960_wap.xml' => [ 'UTStarcom', 'CDM-8960', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/utstarcom/cdma8964/VMU_utstarcom-CDM-8964VM_UAProf.xml' => [ 'UTStarcom', 'CDM-8964', null, DeviceType::MOBILE ], + 'http://uaprof.vtext.com/utstar/gz1s/gz1sv1.xml' => [ 'UTStarcom', 'G\'zOne Type-S', null, DeviceType::MOBILE ], + 'http://www.bellwave.co.uk/uaprof/UAProfile_GPRS778.xml' => [ 'UTStarcom', 'GPRS778', null, DeviceType::MOBILE ], + 'http://pcdgsmlab.com/gpt380/GPT380.xml' => [ 'UTstarcom', 'GPT380', null, DeviceType::MOBILE ], + 'http://uaprof.utstar.co.kr/uaprof/gsm/UTSTARCOM-GTX75.xml' => [ 'UTStarcom', 'GTX75', null, DeviceType::MOBILE ], + 'http://uaprof.vmobl.com/UTSTARCOM/pcs1450/VMU_SliceII_UAProf.xml' => [ 'UTStarcom', 'PCS-1450', null, DeviceType::MOBILE ], + 'https://servicios.iusacell.com.mx/vacom/vt820/vt820prof.rdf' => [ 'Vacom', 'VT820', null, DeviceType::MOBILE ], + 'http://www.velocitymobile.com/resource/UAProf-103.xml' => [ 'Velicity', '103 VGA', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NVAscentr200.xml' => [ 'Vertu', 'Ascent', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NVAscentTir100.xml' => [ 'Vertu', 'Ascent Ti', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NVAscentTir100_3G.xml' => [ 'Vertu', 'Ascent Ti', null, DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NVConstellationr100.xml' => [ 'Vertu', 'Constellation', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NVConstellationQuestr100.xml' => [ 'Vertu', 'Constellation Quest', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NVConstellationTr100.xml' => [ 'Vertu', 'Constellation T', 'Series60', DeviceType::MOBILE ], + 'http://nds1.nds.nokia.com/uaprof/NVConstellationTr200.xml' => [ 'Vertu', 'Constellation T', 'Series60', DeviceType::MOBILE ], + 'http://nds.nokia.com/uaprof/NVSignaturer100.xml' => [ 'Vertu', 'Signature', null, DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/s5017Q/s5017Q.xml' => [ 'verykool', 'Dorado s5017', 'Android', DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/s352/s352.xml' => [ 'verykool', 's352', 'Android', DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/s354/s354.xml' => [ 'verykool', 's354', 'Android', DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/s400T/s400T.xml' => [ 'verykool', 's400', 'Android', DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/s401/s401.xml' => [ 'verykool', 's401', 'Android', DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/S4510/S4510.xml' => [ 'verykool', 's4510u', 'Android', DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/s505/s505.xml' => [ 'verykool', 's505', 'Android', DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/S732/S732.xml' => [ 'verykool', 's732', 'Android', DeviceType::MOBILE ], + 'http://www.verykool.net/Profiles/S758/S758.xml' => [ 'Verykool', 'S758', 'Android', DeviceType::MOBILE ], + 'http://www.verzioworld.com/Duplii.xml' => [ 'Verzio', 'Duplii', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Viettel-N8303.xml' => [ 'Viettel', 'N8303', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Viettel-V8403.xml' => [ 'Viettel', 'V8403', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/VIETTEL_V8404GPRS-NORMAL.xml' => [ 'Viettel', 'V8404', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/VIETTEL_V8404WCDMA-NORMAL.xml' => [ 'Viettel', 'V8404', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V8501.xml' => [ 'Viettel', 'V8501', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/VIETTELV8506.xml' => [ 'Viettel', 'V8506', 'Android', DeviceType::MOBILE ], + 'http://ap.viewsonic.com/uaprofile/V350/UAProf_V350_Gingerbread.xml' => [ 'ViewSonic', 'V350', 'Android', DeviceType::MOBILE ], + 'http://ap.viewsonic.com/uaprofile/ViewPhone3/UAProf_ViewPhone3_Gingerbread.xml' => [ 'ViewSonic', 'ViewPhone 3', 'Android', DeviceType::MOBILE ], + 'http://uaprof.purplelabs.com/UAprofile/UAprofile_VitelcomTSM100.xml' => [ 'Vitelcom', 'TSM-100', null, DeviceType::MOBILE ], + 'http://uaprof.purplelabs.com/UAprofile/UAprofile_VitelcomTSM30.xml' => [ 'Vitelcom', 'TSM-30', null, DeviceType::MOBILE ], + 'http://www.vitelcom.es/uaprof/UAprofile_VitelcomTSM340_01.xml' => [ 'Vitelcom', 'TSM-340', null, DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_V1.xml' => [ 'Vivo', 'V1', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_V3.xml' => [ 'Vivo', 'V3', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_V3Max.xml' => [ 'Vivo', 'V3 Max', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_V3Max.xml' => [ 'Vivo', 'V3 Max', 'Linux', ], + 'http://www.msai.in/uaprof/vivo/vivo_V1Max.xml' => [ 'Vivo', 'vivo V1Max', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_X3S.xml' => [ 'Vivo', 'X3S', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo-X3S.xml' => [ 'Vivo', 'X3S', 'Android', DeviceType::MOBILE ], + 'http://download0.inner.bbk.com/pro/BBG_vivo_X3V_1_20140703.xml' => [ 'Vivo', 'X3V', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_X5.xml' => [ 'Vivo', 'X5', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_X5Max.xml' => [ 'Vivo', 'X5 Max', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_X5Max.xml' => [ 'Vivo', 'X5 Max', 'Android', DeviceType::MOBILE ], + 'http://download0.inner.bbk.com/pro/VIV_vivo_X5MaxV_1_20141118.xml' => [ 'Vivo', 'X5 Max V', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_X5Pro.xml' => [ 'Vivo', 'X5 Pro', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_X5Pro.xml' => [ 'Vivo', 'X5 Pro', 'Android', DeviceType::MOBILE ], + 'http://download0.vivo.com.cn/pro/browser/VIV_vivo_X5Pro_V_1_20150427.xml' => [ 'Vivo', 'X5 Pro V', 'Android', DeviceType::MOBILE ], + 'http://download0.inner.bbk.com/pro/BBG_vivo_X5V_1_20140922.xml' => [ 'Vivo', 'X5V', 'Android', DeviceType::MOBILE ], + 'http://download0.inner.bbk.com/pro/VIV_vivo_X5V_1_20140922.xml' => [ 'Vivo', 'X5V', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_UA.xml' => [ 'Vivo', 'Xshot', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_X710.xml' => [ 'Vivo', 'Xshot', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y11.xml' => [ 'Vivo', 'Y11', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y15.xml' => [ 'Vivo', 'Y15', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo-Y15.xml' => [ 'Vivo', 'Y15', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y15S.xml' => [ 'Vivo', 'Y15S', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y21.xml' => [ 'Vivo', 'Y21', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y21.xml' => [ 'Vivo', 'Y21', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y21L.xml' => [ 'Vivo', 'Y21L', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y22.xml' => [ 'Vivo', 'Y22', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo-Y22.xml' => [ 'Vivo', 'Y22', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y27.xml' => [ 'Vivo', 'Y27', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y27L.xml' => [ 'Vivo', 'Y27L', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y28.xml' => [ 'Vivo', 'Y28', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y28.xml' => [ 'Vivo', 'Y28', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y31.xml' => [ 'Vivo', 'Y31', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y31.xml' => [ 'Vivo', 'Y31', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y31L.xml' => [ 'Vivo', 'Y31L', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y31L.xml' => [ 'Vivo', 'Y31L', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y35.xml' => [ 'Vivo', 'Y35', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y37.xml' => [ 'Vivo', 'Y37', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y51.xml' => [ 'Vivo', 'Y51', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y51L.xml' => [ 'Vivo', 'Y51L', 'Android', DeviceType::MOBILE ], + 'http://download.api.vivoglobal.com/pro/UA/vivo_Y55L.xml' => [ 'Vivo', 'Y55L', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/vivo/vivo_Y55L.xml' => [ 'Vivo', 'Y55L', 'Android', DeviceType::MOBILE ], + 'http://wap1.mtk.com.tw/MTK_Phone_JB_UAprofile.xml' => [ 'Vivo', 'Y613', 'Android', DeviceType::MOBILE ], + 'http://download0.inner.bbk.com/pro/VIV_vivo_Y913_1_20140922.xml' => [ 'Vivo', 'Y913', 'Android', DeviceType::MOBILE ], + 'http://download0.vivo.com.cn/pro/browser/VIV_vivo_Y923_1_20150319.xml' => [ 'Vivo', 'Y923', 'Android', DeviceType::MOBILE ], + 'http://download0.inner.bbk.com/pro/VIV_vivo_Y928_1_20141008.xml' => [ 'Vivo', 'Y928', 'Android', DeviceType::MOBILE ], + 'http://download0.vivo.com.cn/pro/browser/VIV_vivo_Y937_1_20150701.xml' => [ 'Vivo', 'Y937', 'Android', DeviceType::MOBILE ], + 'http://wap.vkmobile.com/uaprof/vk5000.xml' => [ 'VK Mobile', 'VK5000', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Vodafone-1231.xml' => [ 'Vodafone', '1231', null, DeviceType::MOBILE ], + 'http://uaprofile.asus.com/uaprof/Vodafone1520-1.0.xml' => [ 'Vodafone', '1520', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com./files/Vodafone-331.rdf' => [ 'Vodafone', '331', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_355.rdf' => [ 'Vodafone', '355', null, DeviceType::MOBILE ], + 'http://wap.samsungmobile.com/uaprof/I6410UAProf2G.rdf' => [ 'Vodafone', '360 M1', 'LiMo', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/VODAFONE-455.rdf' => [ 'Vodafone', '455', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Vodafone550.xml' => [ 'Vodafone', '550', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_575.rdf' => [ 'Vodafone', '575', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_655.rdf' => [ 'Vodafone', '655', null, DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_655W.rdf' => [ 'Vodafone', '655W', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/703SH_G001_base.xml' => [ 'Vodafone', '703SH', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/V703SHf_SHJ001_3g.xml' => [ 'Vodafone', '703SH', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/V705SH_SHJ001_3g.xml' => [ 'Vodafone', '705SH', null, DeviceType::MOBILE ], + 'http://wap.huawei.com/uaprof/HuaweiV735v100WCDMA.xml' => [ 'Vodafone', '735', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/VFKK/Vodafone_803T_r100_3G.xml' => [ 'Vodafone', '803T', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/VFKK/Vodafone_803T_r100_GPRS.xml' => [ 'Vodafone', '803T', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/V804SH_SHJ001_3g.xml' => [ 'Vodafone', '804SH', null, DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Vodafone845v100GPRS.xml' => [ 'Vodafone', '845 Nova', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/Vodafone845v100WCDMA.xml' => [ 'Vodafone', '845 Nova', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiV858GPRS-Vodafone.xml' => [ 'Vodafone', '858 Smart', 'Android', DeviceType::MOBILE ], + 'http://wap1.huawei.com/uaprof/HuaweiV858WCDMA-Vodafone.xml' => [ 'Vodafone', '858 Smart', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_861.xml' => [ 'Vodafone', '861', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_875.xml' => [ 'Vodafone', '875', 'Android', DeviceType::MOBILE ], + 'http://config.51coolpad.com/UAProfile/vodafone/Vodafone-890N.xml' => [ 'Vodafone', '890', 'Android', DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/902SH_G001_base.xml' => [ 'Vodafone', '902SH', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/V902SH_J001_3g.xml' => [ 'Vodafone', '902SH', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/VFKK/Vodafone_902T_r100_3G.xml' => [ 'Vodafone', '902T', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/903SH_G001_base.xml' => [ 'Vodafone', '903SH', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/VFKK/Vodafone_903T_r100_3G.xml' => [ 'Vodafone', '903T', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/V904SH_SHJ001_3g.xml' => [ 'Vodafone', '904SH', null, DeviceType::MOBILE ], + 'http://gphone.toshiba.co.jp/tech/profiles/UAPROF/VFKK/Vodafone_904T_r100_3G.xml' => [ 'Vodafone', '904T', null, DeviceType::MOBILE ], + 'http://www.sharp-mobile.com/UAProf/V905SH_SHJ001_3g.xml' => [ 'Vodafone', '905SH', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/VF945.xml' => [ 'Vodafone', '945', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone 958.xml' => [ 'Vodafone', '958', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_975.xml' => [ 'Vodafone', '975', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_975N.xml' => [ 'Vodafone', '975', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_Chat_655W.rdf' => [ 'Vodafone', 'Chat 655', null, DeviceType::MOBILE ], + 'http://config.51coolpad.com/UAProfile/vodafone/Smart-4-baloo.xml' => [ 'Vodafone', 'Smart 4', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_785.xml' => [ 'Vodafone', 'Smart 4 Mini', 'Android', DeviceType::MOBILE ], + 'http://vodafone.51coolpad.com/UAProfile/vodafone/Smart-4G.xml' => [ 'Vodafone', 'Smart 4G', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-SmartQ-WCDMA.xml' => [ 'Vodafone', 'Smart Chat', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-SmartQ.xml' => [ 'Vodafone', 'Smart Chat', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_Smart_II.xml' => [ 'Vodafone', 'Smart II', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_Smart_II_3G.xml' => [ 'Vodafone', 'Smart II', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_Smart_Tab_3G.xml' => [ 'Vodafone', 'Smart Tab 3G', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/Vodafone_Smart_Tab_4.xml' => [ 'Vodafone', 'Smart Tab 4', 'Android', DeviceType::TABLET ], + 'http://s3.lenovomm.com/Obelix_Profile.xml' => [ 'Vodafone', 'Smart Tab III 10', 'Android', DeviceType::MOBILE ], + 'http://s3.lenovomm.com/Asterix_Profile.xml' => [ 'Vodafone', 'Smart Tab III 7', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/VodafoneSmartTab10.xml' => [ 'Vodafone', 'SmartTab 10', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/VodafoneSmartTab7.xml' => [ 'Vodafone', 'SmartTab 7', 'Android', DeviceType::TABLET ], + 'https://s3-us-west-1.amazonaws.com/lenovo-ota/Clara_Profile.xml' => [ 'Vodafone', 'SmartTab II 7', 'Android', DeviceType::TABLET ], + 'http://www.htcmms.com.tw/voda/v1415-1.0.xml' => [ 'Vodafone', 'v1415', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/v1510-1.0.xml' => [ 'Vodafone', 'v1510', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/v1640-2.0.xml' => [ 'Vodafone', 'v1640', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/V7505-1.0.xml' => [ 'Vodafone', 'v7505', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/VPACompactIV-1.0.xml' => [ 'Vodafone', 'VPA Compact IV', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.htcmms.com.tw/voda/VPA_Touch-1.0.xml' => [ 'Vodafone', 'VPA Touch', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/W1.xml' => [ 'Vodafone', 'W1', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_BD40.xml' => [ 'Voxtel', 'BD40', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_RX100_UAProf.xml' => [ 'Voxtel', 'RX100', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_RX200_UAProf.xml' => [ 'Voxtel', 'RX200', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_rx600.xml' => [ 'Voxtel', 'RX600', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_rx800.xml' => [ 'Voxtel', 'RX800', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_v100.xml' => [ 'Voxtel', 'V100', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_v300.xml' => [ 'Voxtel', 'V300', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_V310.xml' => [ 'Voxtel', 'V310', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_v350.xml' => [ 'Voxtel', 'V350', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_v50.xml' => [ 'Voxtel', 'V50', null, DeviceType::MOBILE ], + 'http://www.voxtel.ru/UAProf/Voxtel_vs400.xml' => [ 'Voxtel', 'VS400', null, DeviceType::MOBILE ], + 'http://www.ngm-mobile.com/UserAgentProfiles/ngmwilcojb.xml' => [ 'Walton', 'Primo G1', 'Android', DeviceType::MOBILE ], + 'http://go.acer.com/?id=84687' => [ 'Walton', 'Primo H5', 'Android', DeviceType::MOBILE ], + 'http://www.fly-phone.ru/UAP/Fly_IQ4501_Quad.xml' => [ 'Walton', 'Primo HM', 'Android', DeviceType::MOBILE ], + 'http://whaminfocom.com/profiles/WG40.xml' => [ 'Wham', 'WG40', 'Android', DeviceType::MOBILE ], + 'http://www.wonutel.co.kr/UAProfile/WonuS1.xml' => [ 'Wonu', 'S1', null, DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOMI 5s.xml' => [ 'Xiaomi', 'Mi 5S', 'Android', DeviceType::MOBILE ], + 'http://apkupdate.miui.com/other/HM2LTE-BR_H2X_2014819_UAProfile.xml' => [ 'Xiaomi', 'Redmi 2', 'Android', DeviceType::MOBILE ], + 'http://apkupdate.miui.com/other/HM2LTE-IN_H2X_2014818_UAProfile.xml' => [ 'Xiaomi', 'Redmi 2', 'Android', DeviceType::MOBILE ], + 'http://apkupdate.miui.com/other/HM2LTE-SA_H2X_2014817_UAProfile.xml' => [ 'Xiaomi', 'Redmi 2', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOHM Note 1S.xml' => [ 'Xiaomi', 'Redmi Note 1', 'Android', DeviceType::MOBILE ], + 'http://apkupdate.miui.com/other/HM2013023_UAprofile.xml' => [ 'Xiaomi', 'Redmi Red Rice', 'Android', DeviceType::MOBILE ], + 'http://apkupdate.miui.com/other/HM2014011_UAprofile.xml' => [ 'Xiaomi', 'Redmi Red Rice', 'Android', DeviceType::MOBILE ], + 'http://apkupdate.miui.com/other/HM2014501_UAprofile.xml' => [ 'Xiaomi', 'Redmi Red Rice', 'Android', DeviceType::MOBILE ], + 'http://www.msai.in/uaprof/XOLO/Q1020.xml' => [ 'XOLO', 'Q1020', 'Android', DeviceType::MOBILE ], + 'http://nmsc.ctvap.cn/uaprof/YCT/YCT_TE600_1_20101228.xml' => [ 'YCT', 'TE600', 'Android', DeviceType::MOBILE ], + 'http://www.ddmbrands.com/uaprof/yezz/andy_3.5EI2.xml' => [ 'Yezz', 'Andy 3.5EI2', 'Android', DeviceType::MOBILE ], + 'http://www.ddmbrands.com/uaprof/yezz/andy_5EI.xml' => [ 'Yezz', 'Andy 5EI', 'Android', DeviceType::MOBILE ], + 'http://www.ddmbrands.com/uaprof/yezz/andy_5EL.xml' => [ 'Yezz', 'Andy 5EL', 'Android', DeviceType::MOBILE ], + 'http://www.ddmbrands.com/uaprof/yezz/andy_AC5EL.xml' => [ 'Yezz', 'Andy 5EL', 'Android', DeviceType::MOBILE ], + 'http://www.ddmbrands.com/uaprof/yezz/andy_C5EL.xml' => [ 'Yezz', 'Andy 5EL', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_Q491.xml' => [ 'Yu', 'Yuphoria', 'Android', DeviceType::MOBILE ], + 'http://www.1066.cn/uaprof/prof/Micromax/Micromax_YU5200.xml' => [ 'Yu', 'Yureka S', 'Android', DeviceType::MOBILE ], + 'http://www.lenovomobile.com/admin/module/product/DownFile/YUSUN LA2-T_UAprofile.xml' => [ 'YUSUN', 'LA2-T', 'Android', DeviceType::MOBILE ], + 'http://uaprof.zebra.com/mc36.xml' => [ 'Zebra', 'MC36', 'Android', DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/ZMEM1070.xml' => [ 'Zonda', 'ZMEM1070', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/ZMEM1075.xml' => [ 'Zonda', 'ZMEM1075', null, DeviceType::MOBILE ], + 'http://211.42.201.70/ua_profile/ZMEM1085.xml' => [ 'Zonda', 'ZMEM1085', null, DeviceType::MOBILE ], + 'http://profile.aiko.com.br/aiko70w.xml' => [ 'ZTE', '70W', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE A2015.xml' => [ 'ZTE', 'A2015', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/A3.xml' => [ 'ZTE', 'A3', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTEA37.xml' => [ 'ZTE', 'A37', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/A4.xml' => [ 'ZTE', 'A4', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Acqua.xml' => [ 'ZTE', 'Acqua', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ARIZONA.xml' => [ 'ZTE', 'Arizona', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE%20A2017U.xml' => [ 'ZTE', 'Axon 7', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/Joy Smart AXS II.xml' => [ 'ZTE', 'BGH Joy Smart AXS II', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/ZTE Blade V320.xml' => [ 'ZTE', 'BGH Joy Smart AXS II D', 'Android', DeviceType::MOBILE ], + 'http://ua.musn-mobile.com/TWN/A5.xml' => [ 'ZTE', 'Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/a5.xml' => [ 'ZTE', 'Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_A430.xml' => [ 'ZTE', 'Blade A430', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_A450.xml' => [ 'ZTE', 'Blade A450', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_BLADE_A510.xml' => [ 'ZTE', 'Blade A510', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_BLADE_A612.xml' => [ 'ZTE', 'Blade A612', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Apex.xml' => [ 'ZTE', 'Blade Apex', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Apex2.xml' => [ 'ZTE', 'Blade Apex2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_C2_Plus.xml' => [ 'ZTE', 'Blade C2 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Blade C370.xml' => [ 'ZTE', 'Blade C370', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_G_Lux.xml' => [ 'ZTE', 'Blade G Lux', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V830W.xml' => [ 'ZTE', 'Blade G Lux', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_G2.xml' => [ 'ZTE', 'Blade G2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Blade III Pro.xml' => [ 'ZTE', 'Blade III Pro', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_L2.xml' => [ 'ZTE', 'Blade L2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_L2_4.4.xml' => [ 'ZTE', 'Blade L2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Blade L2 Plus.xml' => [ 'ZTE', 'Blade L2 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Blade_L3.xml' => [ 'ZTE', 'Blade L3', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_L3.xml' => [ 'ZTE', 'Blade L3', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Blade L3 Apex.xml' => [ 'ZTE', 'Blade L3 Apex', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Blade L3 PLUS.xml' => [ 'ZTE', 'Blade L3 Plus', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Q.xml' => [ 'ZTE', 'Blade Q', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Q_Lux.xml' => [ 'ZTE', 'Blade Q Lux', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Q_Mini.xml' => [ 'ZTE', 'Blade Q Mini', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Q1.xml' => [ 'ZTE', 'Blade Q1', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Blade S.xml' => [ 'ZTE', 'Blade S', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Blade_Super.xml' => [ 'ZTE', 'Blade Super', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_V2.xml' => [ 'ZTE', 'Blade V2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_V220.xml' => [ 'ZTE', 'Blade V220', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_V6.xml' => [ 'ZTE', 'Blade V6', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z978.xml' => [ 'ZTE', 'Blade V8 Pro', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Vec.xml' => [ 'ZTE', 'Blade Vec', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Vec_4G.xml' => [ 'ZTE', 'Blade Vec', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Blade_Vec_Pro.xml' => [ 'ZTE', 'Blade Vec Pro', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Crescent.xml' => [ 'ZTE', 'Crescent', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T126.xml' => [ 'ZTE', 'Cruise T126', null, DeviceType::MOBILE ], + 'http://device.telusmobility.com/zte/ZTED90-0.rdf' => [ 'ZTE', 'D90', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_N72_20090709.xml' => [ 'ZTE', 'E N72', 'Windows Mobile', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_E10T.xml' => [ 'ZTE', 'e-Learning PAD E10T', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-U-E850(Movilnet).xml' => [ 'ZTE', 'E850', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F101(RDS).xml' => [ 'ZTE', 'F101', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F107(3UK).xml' => [ 'ZTE', 'F107', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F150.xml' => [ 'ZTE', 'F150', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F151.xml' => [ 'ZTE', 'F151', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F152.xml' => [ 'ZTE', 'F152', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F153.xml' => [ 'ZTE', 'F153', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F156.xml' => [ 'ZTE', 'F156', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F158.xml' => [ 'ZTE', 'F158', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F159.xml' => [ 'ZTE', 'F159', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F160(Orange-RO).xml' => [ 'ZTE', 'F160', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F160-BH-Telecom.xml' => [ 'ZTE', 'F160', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F160-Free.xml' => [ 'ZTE', 'F160', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F165.xml' => [ 'ZTE', 'F165', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F230.xml' => [ 'ZTE', 'F230', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F256.xml' => [ 'ZTE', 'F256', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F260.xml' => [ 'ZTE', 'F260', null, DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/F310.xml' => [ 'ZTE', 'F310', 'MRE', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F852.xml' => [ 'ZTE', 'F852', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F858.xml' => [ 'ZTE', 'F858', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F880.xml' => [ 'ZTE', 'F880', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-F912.xml' => [ 'ZTE', 'F912', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Fit_4G_Smart.xml' => [ 'ZTE', 'Fit 4G Smart', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9100-2012083001/N9100V1.0.0B11.rdf' => [ 'ZTE', 'Force', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9100-Chameleon/latest' => [ 'ZTE', 'Force', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T81.xml' => [ 'ZTE', 'Fronteer 4G', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-G X760.xml' => [ 'ZTE', 'G X760', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/G717C.xml' => [ 'ZTE', 'G717', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/G718C.xml' => [ 'ZTE', 'G718', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/G719C.xml' => [ 'ZTE', 'G719', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/G720C.xml' => [ 'ZTE', 'G720', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE G720C.xml' => [ 'ZTE', 'G720', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE G721C.xml' => [ 'ZTE', 'G721 Star 3', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE S2003.xml' => [ 'ZTE', 'Geek II', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Grand Memo.xml' => [ 'ZTE', 'Grand Memo', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-V5S.xml' => [ 'ZTE', 'Grand Memo Lite', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Grand S Flex.xml' => [ 'ZTE', 'Grand S Flex', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Grand_S_Flex.xml' => [ 'ZTE', 'Grand S Flex', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ZTE-Grand S II.xml' => [ 'ZTE', 'Grand S II', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Grand S Lite.xml' => [ 'ZTE', 'Grand S Lite', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Grand_X_Quad_Lite.xml' => [ 'ZTE', 'Grand X Quad Lite', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Grand X2.xml' => [ 'ZTE', 'Grand X2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-A7.xml' => [ 'ZTE', 'Grand X2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Jack-3G(Orange).xml' => [ 'ZTE', 'Jack', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Kis II Max.xml' => [ 'ZTE', 'Kis 2 Max', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Kis_II_Max.xml' => [ 'ZTE', 'Kis 2 Max', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V815W.xml' => [ 'ZTE', 'Kis 2 Max', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Kis_II_Max_plus.xml' => [ 'ZTE', 'Kis 2 Max Plus', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Kis_3.xml' => [ 'ZTE', 'Kis 3', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Kis3_max.xml' => [ 'ZTE', 'Kis 3 Max', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE KIS LITE.xml' => [ 'ZTE', 'Kis Lite', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-KisPro.xml' => [ 'ZTE', 'Kis Pro', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Kis_Q.xml' => [ 'ZTE', 'Kis Q', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/ZTE_LEO_M1.xml' => [ 'ZTE', 'LEO M1', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V765M.xml' => [ 'ZTE', 'LEO Q1', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/V769M.xml' => [ 'ZTE', 'LEO Q2', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/ZTE V769M.xml' => [ 'ZTE', 'LEO Q2', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/ZTE_LEO_S1.xml' => [ 'ZTE', 'LEO S1', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Light.xml' => [ 'ZTE', 'Light Tab', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/V9.xml' => [ 'ZTE', 'Light Tab', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/V9_VIVO.xml' => [ 'ZTE', 'Light Tab', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/Light-Tab-2.xml' => [ 'ZTE', 'Light Tab 2', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/V9A.xml' => [ 'ZTE', 'Light Tab 2', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V9A.xml' => [ 'ZTE', 'Light Tab 2', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/V9S.xml' => [ 'ZTE', 'Light Tab 3', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/V9C.xml' => [ 'ZTE', 'Light Tab Pro', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/TNZ_V9.xml' => [ 'ZTE', 'Light Tab V9', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V9A(Telcel).xml' => [ 'ZTE', 'Light Tab V9', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/M901C.xml' => [ 'ZTE', 'M901', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MEM02.xml' => [ 'ZTE', 'M901 Grand Memo 2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z831.xml' => [ 'ZTE', 'Maven 2', 'Android', DeviceType::MOBILE ], + 'http://mms.mycricket.com/A415_Uaprof.xml' => [ 'ZTE', 'Memo', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/zte-N295.xml' => [ 'ZTE', 'N295', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N5.xml' => [ 'ZTE', 'N5 Grand Memo', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE N5.xml' => [ 'ZTE', 'N5 Grand Memo', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N5S.xml' => [ 'ZTE', 'N5S', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N606.xml' => [ 'ZTE', 'N600', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N700.xml' => [ 'ZTE', 'N700', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com.cn/mobile/uaprof/ZTE-U-N720-Froyo.xml' => [ 'ZTE', 'N720', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N760.xml' => [ 'ZTE', 'N760', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE N762.xml' => [ 'ZTE', 'N762', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-N780.xml' => [ 'ZTE', 'N780', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N788.xml' => [ 'ZTE', 'N788', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ZTE N789.xml' => [ 'ZTE', 'N789', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ZTE-N790.xml' => [ 'ZTE', 'N790', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N790.xml' => [ 'ZTE', 'N790', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N790S.xml' => [ 'ZTE', 'N790S', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N795.xml' => [ 'ZTE', 'N795', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N799D.xml' => [ 'ZTE', 'N799', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N800-Chameleon/latest' => [ 'ZTE', 'N800 Awe', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N800-Chameleon/N800V1.0.0B06.rdf' => [ 'ZTE', 'N800 Awe', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N800-VIRGIN/AWE_Inspired_Moonshine_White_V2.9.rdf' => [ 'ZTE', 'N800 Awe', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N800-VIRGIN/N800V1.0.0B04.rdf' => [ 'ZTE', 'N800 Awe', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N800-VIRGIN/N800V1.0.0B05.rdf' => [ 'ZTE', 'N800 Awe', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N800-VIRGIN/N800V1.0.0B06.rdf' => [ 'ZTE', 'N800 Awe', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N800-VIRGIN/N800V1.0.0B07.rdf' => [ 'ZTE', 'N800 Awe', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N810-VIRGIN/N810V1.0.0B06.rdf' => [ 'ZTE', 'N810 Reef', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ZTE-N818.xml' => [ 'ZTE', 'N818', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-N850PMI.xml' => [ 'ZTE', 'N850', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN850KT/N850V1.0.0B14.rdf' => [ 'ZTE', 'N850 Fury', 'Android', DeviceType::MOBILE ], + 'http://mms.revol.us/uaprofs/ZTE_N850.xml' => [ 'ZTE', 'N850 Fury', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N855D.xml' => [ 'ZTE', 'N855D', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N860/N860_MVNOV1.0.0B05.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/CTMod 3.68.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/CTMod 3.80.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/HaloBean 6.12 ROM.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/HaloBean Nine by Skinny.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/n00b VIII.II by MrBobo.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/N860V1.0.0B06.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/N860V1.0.0B08.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/N860V1.0.0B08c.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/N860V1.0.0B10.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTEN860ABC-BST/SimpleROM 0.2.0.rdf' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-N860PMI.xml' => [ 'ZTE', 'N860 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N861-BOOST/N861V1.0.0B07.rdf' => [ 'ZTE', 'N861 Warp II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N861-BOOST/N861V1.0.0B07.WARP2CCP.rdf' => [ 'ZTE', 'N861 Warp II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N861-BOOST/N861V1.0.0B09.rdf' => [ 'ZTE', 'N861 Warp II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N861-BOOST/N861V1.0.0B12.rdf' => [ 'ZTE', 'N861 Warp II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N861-BOOST/N861V1.0.0B13.rdf' => [ 'ZTE', 'N861 Warp II', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N861-Chameleon/latest' => [ 'ZTE', 'N861 Warp II', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-N861PMI.xml' => [ 'ZTE', 'N861 Warp II', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N880.xml' => [ 'ZTE', 'N880 Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_C_N600PLUS_1_20101223.xml' => [ 'ZTE', 'N880 Blade', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ZTE N880E.xml' => [ 'ZTE', 'N880E', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N880E.xml' => [ 'ZTE', 'N880E', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N900.xml' => [ 'ZTE', 'N900', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ZTE-N909.xml' => [ 'ZTE', 'N909', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N909.xml' => [ 'ZTE', 'N909', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/ZTE-N910.xml' => [ 'ZTE', 'N910 Anthem', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9100-2012083001/N9100V1.0.0B09.rdf' => [ 'ZTE', 'N9100 Force', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9100-BOOST/DroidSmith_Force_0.6_Beta.rdf' => [ 'ZTE', 'N9100 Force', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9100-BOOST/N9100V1.0.0B09.rdf' => [ 'ZTE', 'N9100 Force', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9100-BOOST/N9100V1.0.0B11.rdf' => [ 'ZTE', 'N9100 Force', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9100-BOOST/N9100V1.0.0B13.rdf' => [ 'ZTE', 'N9100 Force', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N9101.xml' => [ 'ZTE', 'N9101 Imperial', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-BOOST/N9130V1.0.0B05.rdf' => [ 'ZTE', 'N9130 Speed', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-BOOST/N9130V1.0.0B06.rdf' => [ 'ZTE', 'N9130 Speed', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-BOOST/N9130V1.0.0B08.rdf' => [ 'ZTE', 'N9130 Speed', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-BOOST/N9130V1.0.0B09.rdf' => [ 'ZTE', 'N9130 Speed', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-Chameleon/N9130V1.0.0B09.rdf' => [ 'ZTE', 'N9130 Speed', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9500-6105573748/N9500V1.0.0B18.rdf' => [ 'ZTE', 'N9500 Flash', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9500-BOOST/N9500V1.0.0B14.rdf' => [ 'ZTE', 'N9500 Flash', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9500-BOOST/N9500V1.0.0B18.rdf' => [ 'ZTE', 'N9500 Flash', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9500-BOOST/PV_ZTE_N9500V1.0.0B07.rdf' => [ 'ZTE', 'N9500 Flash', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9500-SPRINT/N9500V1.0.0B11.rdf' => [ 'ZTE', 'N9500 Flash', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9500-SPRINT/N9500V1.0.0B13.rdf' => [ 'ZTE', 'N9500 Flash', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9500-SPRINT/N9500V1.0.0B14.rdf' => [ 'ZTE', 'N9500 Flash', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9500-SPRINT/N9500V1.0.0B18.rdf' => [ 'ZTE', 'N9500 Flash', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/N9510V1.0.0B12.rdf' => [ 'ZTE', 'N9510 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9510-BOOST/N9510V1.0.0B07.rdf' => [ 'ZTE', 'N9510 Warp', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9510-Chameleon/latest' => [ 'ZTE', 'N9510 Warp', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_N9511.xml' => [ 'ZTE', 'N9511', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9515-BOOST/N9515V1.0.0B05.rdf' => [ 'ZTE', 'N9515', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9515-BOOST/N9515V1.0.0B06.rdf' => [ 'ZTE', 'N9515', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9515-BOOST/N9515V1.0.0B07.rdf' => [ 'ZTE', 'N9515', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9515-Chameleon/latest' => [ 'ZTE', 'N9515', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9515-Chameleon/N9515V1.0.0B05.rdf' => [ 'ZTE', 'N9515', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/N9520V1.0.0B05.rdf' => [ 'ZTE', 'N9520 Stormer', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9520-BOOST/latest' => [ 'ZTE', 'N9520 Stormer', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9520-BOOST/N9520V1.0.0B05.rdf' => [ 'ZTE', 'N9520 Stormer', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9520-BOOST/N9520V1.0.0B06.rdf' => [ 'ZTE', 'N9520 Stormer', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9520-BOOST/N9520V1.0.0B07.rdf' => [ 'ZTE', 'N9520 Stormer', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9520-Chameleon/latest' => [ 'ZTE', 'N9520 Stormer', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE N901.xml' => [ 'ZTE', 'N960', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE N970.xml' => [ 'ZTE', 'N970 Grand X', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9810-Chameleon/latest' => [ 'ZTE', 'N9810 Vital', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9810-SPRINT/N9810V1.0.0B02.rdf' => [ 'ZTE', 'N9810 Vital', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9810-SPRINT/N9810V1.0.0B06.rdf' => [ 'ZTE', 'N9810 Vital', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9810-SPRINT/N9810V1.0.0B09.rdf' => [ 'ZTE', 'N9810 Vital', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9810-VIRGIN/N9810V1.0.0B09.rdf' => [ 'ZTE', 'N9810 Vital', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N983.xml' => [ 'ZTE', 'N983', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N986.xml' => [ 'ZTE', 'N986', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com.cn/mobile/uaprof/nubia_NX501_Z72.xml' => [ 'ZTE', 'Nubia Z5', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/nubia-NX40X.xml' => [ 'ZTE', 'Nubia Z5 mini', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com.cn/mobile/uaprof/nubia_NX402_Z64.xml' => [ 'ZTE', 'Nubia Z5 mini', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/NX406E.xml' => [ 'ZTE', 'Nubia Z5s mini', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/NX512J_CT.xml' => [ 'ZTE', 'Nubia Z9 Max', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com.cn/mobile/uaprof/ZTE_NX501_VE.xml' => [ 'ZTE', 'NX501', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/OPEN.xml' => [ 'ZTE', 'Open', 'Firefox OS', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/OPENC.xml' => [ 'ZTE', 'Open C', 'Firefox OS', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/OPENC2.xml' => [ 'ZTE', 'Open C2', 'Firefox OS', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/OPEN2.xml' => [ 'ZTE', 'Open II', 'Firefox OS', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/ZTESV55TAB/B03.rdf' => [ 'ZTE', 'Optik', 'Android', DeviceType::TABLET ], + 'http://device.sprintpcs.com/ZTE/ZTESV55TAB/B12.rdf' => [ 'ZTE', 'Optik', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Q2S-C.xml' => [ 'ZTE', 'Q2S-C', 'Android', DeviceType::MOBILE ], + 'http://uaprof.qma.com.tw/ZTE-Q301C.xml' => [ 'ZTE', 'Q301C', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Q802C.xml' => [ 'ZTE', 'Q802C', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_C_R750_3_20100725.xml' => [ 'ZTE', 'R750', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/RacerII.xml' => [ 'ZTE', 'Racer II', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/SKATE-KIS.xml' => [ 'ZTE', 'Skate', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-SKATE.xml' => [ 'ZTE', 'Skate', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-SKATE.xml, http://www.zte.com.cn/mobile/uaprof/ ZTE-SKATE.xml'=> [ 'ZTE', 'Skate', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Skate4.3.xml' => [ 'ZTE', 'Skate', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Skate_TME.xml' => [ 'ZTE', 'Skate', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Skate-Pro.xml' => [ 'ZTE', 'Skate Pro', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T816.xml' => [ 'ZTE', 'Smart Plus', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z832.xml' => [ 'ZTE', 'Sonata 3', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-BOOST/N9130V1.0.0B11.rdf' => [ 'ZTE', 'Speed', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-BOOST/N9130V1.0.0B14.rdf' => [ 'ZTE', 'Speed', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-BOOST/N9130V1.0.0B15.rdf' => [ 'ZTE', 'Speed', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/ZTE/N9130-Chameleon/N9130V1.0.0B08.rdf' => [ 'ZTE', 'Speed', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE S2002.xml' => [ 'ZTE', 'Star 1', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Star_1.xml' => [ 'ZTE', 'Star 1', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE S2005.xml' => [ 'ZTE', 'Star 2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_Switch_X1.xml' => [ 'ZTE', 'Switch X1', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_T12.xml' => [ 'ZTE', 'T12', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T165i.xml' => [ 'ZTE', 'T165i', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_T760.xml' => [ 'ZTE', 'T760', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T82.xml' => [ 'ZTE', 'T82', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T83.xml' => [ 'ZTE', 'T83', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE T86.xml' => [ 'ZTE', 'T86', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_T815.xml' => [ 'ZTE', 'Tempo', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE S2004.xml' => [ 'ZTE', 'Tianji 3', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE S291.xml' => [ 'ZTE', 'Tianji 3', 'Android', DeviceType::MOBILE ], + 'http://uaprofile.zte.com/uaprof/ZTE-T-U830-1.0.xml' => [ 'ZTE', 'TU830', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-TUIRES.xml' => [ 'ZTE', 'Tuires', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T60.xml' => [ 'ZTE', 'Tureis', 'Android', DeviceType::MOBILE ], + 'http://www.access.co.jp/uaprof/NF3Prof.rdf' => [ 'ZTE', 'U236', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTEU790.xml' => [ 'ZTE', 'U790', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_U791.xml' => [ 'ZTE', 'U791', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T U802.xml' => [ 'ZTE', 'U802', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE U808.xml' => [ 'ZTE', 'U808', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE U879.xml' => [ 'ZTE', 'U879', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-T U880.xml' => [ 'ZTE', 'U880 Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_U887_UAProfile.xml' => [ 'ZTE', 'U887', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Grand X 4.2.xml' => [ 'ZTE', 'U930 Grand X', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Grand X In.xml' => [ 'ZTE', 'U930 Grand X IN', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOZTE U956.xml' => [ 'ZTE', 'U956', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/F1310.xml' => [ 'ZTE', 'Unite F1310', 'MTK', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V72.xml' => [ 'ZTE', 'V72', 'Android', DeviceType::TABLET ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-UV760.xml' => [ 'ZTE', 'V760', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-V768.xml' => [ 'ZTE', 'V768 Concord', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Kis.xml' => [ 'ZTE', 'V788 Kis', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V788D.xml' => [ 'ZTE', 'V788 Kis', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/V790.xml' => [ 'ZTE', 'V790', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V790.xml' => [ 'ZTE', 'V790', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V791.xml' => [ 'ZTE', 'V791', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V793.xml' => [ 'ZTE', 'V793', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V795_2.3.xml' => [ 'ZTE', 'V795', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V795_2.3_Skinny.xml' => [ 'ZTE', 'V795', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V795_4.2.xml' => [ 'ZTE', 'V795', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V797.xml' => [ 'ZTE', 'V797', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V807.xml' => [ 'ZTE', 'V807 Blade C', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V809.xml' => [ 'ZTE', 'V809 Blade C2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V811W.xml' => [ 'ZTE', 'V811', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/ZTE V8110.xml' => [ 'ZTE', 'V8110', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V816W.xml' => [ 'ZTE', 'V816W', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V818.xml' => [ 'ZTE', 'V818', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-GV821.xml' => [ 'ZTE', 'V821', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/V852.xml' => [ 'ZTE', 'V852', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_U_V856_V3_3.xml' => [ 'ZTE', 'V856 Mimosa Mini', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/zte_u_v857_v3.xml' => [ 'ZTE', 'V857', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-UV859.xml' => [ 'ZTE', 'V859', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/ZTE-V865M.xml' => [ 'ZTE', 'V865', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V880.xml' => [ 'ZTE', 'V880 Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V880E.xml' => [ 'ZTE', 'V880 Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V880H.xml' => [ 'ZTE', 'V880 Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-BLADE.xml' => [ 'ZTE', 'V880 Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-U V880E.xml' => [ 'ZTE', 'V880 Blade', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Blade G.xml' => [ 'ZTE', 'V880 Blade G', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/V881.xml' => [ 'ZTE', 'V881 Blade II', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-U V881.xml' => [ 'ZTE', 'V881 Blade II', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V887.xml' => [ 'ZTE', 'V887', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V889D.xml' => [ 'ZTE', 'V889', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V889M.xml' => [ 'ZTE', 'V889', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V889S.xml' => [ 'ZTE', 'V889', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/V9+.xml' => [ 'ZTE', 'V9+', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V965.xml' => [ 'ZTE', 'V965', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V967S.xml' => [ 'ZTE', 'V967', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V969.xml' => [ 'ZTE', 'V969', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-V96A.xml' => [ 'ZTE', 'V96A', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/ZTE V972M.xml' => [ 'ZTE', 'V972M', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V975.xml' => [ 'ZTE', 'V975 Geek', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Grand Memo LTE.xml' => [ 'ZTE', 'V9815 Grand Memo', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V9820.xml' => [ 'ZTE', 'V9820', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Grand X Pro.xml' => [ 'ZTE', 'V983 Grand X Pro', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V983.xml' => [ 'ZTE', 'V983 Grand X Pro', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V985.xml' => [ 'ZTE', 'V985 Grand Era', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOZTE V 987.xml' => [ 'ZTE', 'V987', 'Android', DeviceType::MOBILE ], + 'http://www.oppo.com/resource/UA-PROF/OPPOZTE V987.xml' => [ 'ZTE', 'V987', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V987.xml' => [ 'ZTE', 'V987', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V987_4.2.xml' => [ 'ZTE', 'V987', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE V988.xml' => [ 'ZTE', 'V988', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/N988.xml' => [ 'ZTE', 'V988 Grand S', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE Grand S.xml' => [ 'ZTE', 'V988 Grand S', 'Android', DeviceType::MOBILE ], + 'http://device.sprintpcs.com/N9510V1.0.0B13.rdf' => [ 'ZTE', 'Warp', 'Android', DeviceType::MOBILE ], + 'http://mmslab.mycricket.com/zte-x500.xml' => [ 'ZTE', 'X500 Score', 'Android', DeviceType::MOBILE ], + 'http://uaprof.metropcs.net/UAProf/ZTE-X500.xml' => [ 'ZTE', 'X500 Score', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE X850.xml' => [ 'ZTE', 'X850 Racer', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-RACER.xml' => [ 'ZTE', 'X850 Racer', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-U X850.xml' => [ 'ZTE', 'X850 Racer', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_U X850.xml' => [ 'ZTE', 'X850 Racer', 'Android', DeviceType::MOBILE ], + 'http://www.ztemt.com/mobile/uaprof/X990_V2_Z10.xml' => [ 'ZTE', 'X990', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE A880.xml' => [ 'ZTE', 'Xiaoxian', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z221.xml' => [ 'ZTE', 'Z221', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z222.xml' => [ 'ZTE', 'Z222', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z223.xml' => [ 'ZTE', 'Z223', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z431.xml' => [ 'ZTE', 'Z431', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z432.xml' => [ 'ZTE', 'Z432', null, DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z660G.xml' => [ 'ZTE', 'Z660', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/zte/wsz665c/wsz665c.xml' => [ 'ZTE', 'Z665 Valet', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z667.xml' => [ 'ZTE', 'Z667 Prelude 2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z740.xml' => [ 'ZTE', 'Z740 Radiant', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z740G.xml' => [ 'ZTE', 'Z740G Sonata 4G', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/zte/zte752c/zte752c.xml' => [ 'ZTE', 'Z752 Zephyr', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z753G.xml' => [ 'ZTE', 'Z753 Paragon', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z755.xml' => [ 'ZTE', 'Z755', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z768G.xml' => [ 'ZTE', 'Z768', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z787.xml' => [ 'ZTE', 'Z787', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z788G.xml' => [ 'ZTE', 'Z788', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z791G.xml' => [ 'ZTE', 'Z791G', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z792.xml' => [ 'ZTE', 'Z792', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/zte/wsz793c/wsz793c.xml' => [ 'ZTE', 'Z793C', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z795G.xml' => [ 'ZTE', 'Z795 Solar', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z812.xml' => [ 'ZTE', 'Z812 Maven', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z813.xml' => [ 'ZTE', 'Z813', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z818L.xml' => [ 'ZTE', 'Z818 Allstar', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/zte/wsz819l/wsz819l.xml' => [ 'ZTE', 'Z819L', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z830.xml' => [ 'ZTE', 'Z830', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z930L.xml' => [ 'ZTE', 'Z930 Unico', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/zte/wsz932l/wsz932l.xml' => [ 'ZTE', 'Z932', 'Android', DeviceType::MOBILE ], + 'http://uaprof.vtext.com/zte/wsz936l/wsz936l.xml' => [ 'ZTE', 'Z936 Lever', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z955L.xml' => [ 'ZTE', 'Z955L', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z958.xml' => [ 'ZTE', 'Z958 Zmax 2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z970.xml' => [ 'ZTE', 'Z970', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V970.xml' => [ 'ZTE', 'Z970 Grand X', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V970M.xml' => [ 'ZTE', 'Z970 Grand X', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE_V970M_JB.xml' => [ 'ZTE', 'Z970 Grand X', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z987.xml' => [ 'ZTE', 'Z987', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z990.xml' => [ 'ZTE', 'Z990 Roamer', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z990G.xml' => [ 'ZTE', 'Z990 Roamer', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/ZTE-Z992.xml' => [ 'ZTE', 'Z992 Avail 2', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z993.xml' => [ 'ZTE', 'Z993 Prelude', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z995.xml' => [ 'ZTE', 'Z995 Overture', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/Z998.xml' => [ 'ZTE', 'Z998', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MS4A.xml' => [ 'Мегафон', '4G Turbo', 'Android', DeviceType::MOBILE ], + 'http://www-ccpp.tcl-ta.com/files/MS3B.xml' => [ 'Мегафон', 'Optima', 'Android', DeviceType::MOBILE ], + 'http://downloadmirror.intel.com/20932/eng/SP-A20i_UA_Profile.xml' => [ 'Мегафон', 'SP-A20i Mint', 'Android', DeviceType::MOBILE ], + 'http://www.zte.com.cn/mobile/uaprof/MegaFon_SP-A5.xml' => [ 'Мегафон', 'SP-A5', 'Android', DeviceType::MOBILE ], +]; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-bots.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-bots.php new file mode 100644 index 0000000..9d155c5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-bots.php @@ -0,0 +1,5 @@ +<?php + +namespace WhichBrowser\Data; + +Applications::$BOTS_REGEX = '/(008|360|a6|abound|muncher|adaxas|addthis|admantx|ahrefsbot|archiver|altavista|curious|cloudfront|amorank|archive|jeeves|astra|backlink|baidu|bazqux|bingbot|msnbot|msmobot|bing|blogbridge|bloglines|bloglovin|blogpulse|blogram|blogtrot|blogshares|boardreader|browsershots|bubing|butterfly|heritrix|cliqz|cloudflare|comodo|commafeed|cbot|watchdog|datasearch|daumoa|digg|domain|exabot|exactseek|ezooms|facebook|fast|flamingo|fastladder|feed|wrangler|validator|fever|friendica|robot|genieo|fetchor|google|gomez|ichiro|gooblog|goorss|grammarly|grub|hatena|capture|heureka|htdig|httpmon|hubpages|spider|crawler|kouio|larbin|linkedin|linkdex|livedoor|ltx71|magpie|mapion|socialstreams|mixi|mnogo|monitor|yeti|netcraft|netvibes|newsblur|newsgator|orange|pages|psbot|pingdom|pinterest|postrank|comment|rssbar|hunter|quora|safesearch|scrapy|seznam|shopwiki|reader|simplepie|site24|sogou|sophora|soso|spdycheck|spinn|detector|summify|telegram|twisted|twitter|tiny|tlsprober|typhoeus|vagabondo|voila|vocus|mcrawler|w3bot|jigsaw|w3c|wayback|webindexer|wordpress|mechanize|xerka|sitemap|yacy|yandex|yahoo|y\!j|slurp|httpclient|nutch|synapse|indy|wget|curl|package|java|simple|libwww|lwp|urllib|php|pear|zend|ruby)/i'; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-browsers.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-browsers.php new file mode 100644 index 0000000..5cec15f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-browsers.php @@ -0,0 +1,5 @@ +<?php + +namespace WhichBrowser\Data; + +Applications::$BROWSERS_REGEX = '/(115|126|2345|qihu|7star|abrowse|acorn|acoo|aol|america|arachne|arora|aweb|avant|asw|aviator|flyflow|bdbrowser|bdspark|beamrise|blackwren|brave|byffox|camino|canure|charon|chromeplus|cometbird|comodo|dragon|conkeror|coolnovo|cunaguaro|cyberfox|daedalus|dillo|rhodonit|eudoraweb|flock|galeon|epiphany|ibrowse|icab|iceape|icecat|iceweasel|iridium|iron|kazehakase|kchrome|meleon|lbbrowser|lobo|lunascape|naenara|mxbrowser|mixshark|mlbrowser|netpositive|origyn|owb|orca|oregano|otter|palemoon|qtweb|qupzilla|rekonq|ryouko|saayaa|sleipnir|metasr|stainless|sunchrome|superbird|swing|tencent|tenfourfox|theworld|tungsten|vivaldi|voyager|waterfox|yabrowser|1password|3g explorer|4g explorer|atomiclite|au|awakening|baidu|bdmobile|bidu|baiduboxapp|browser|blazer|acheetahi|cornowser|coolmarket|cute|digia|doris|doroty|www browser|eui|go\.web|helium|huohoubrowser|surfboard|isurf|jig browser|jumanji|kiosk|lebrowser|liebao|macross|mammoth|mcent|mib|cmcs|motorola|netfrontlife|onebrowser|plink|polaris|openwave|up|km|quark|semc|stnc|sogou|symphony|ucpro|weblite|alti|aplix|awox|browserserver|isis|spyglass|oregan|viera|zetakey|bunjalloo|nwf|nuanti|wib|prince|demobrowser|dooble|dwb|evm|fireweb|hive|intermec|phantom|qt|roccat|raven|rockmelt|scope|slim|smbrowser|snowshoe|sputnik|surf|tao|taz|uzbl|villanova|vimb|wada|wavelink|webrender|webster|wyzo|yelang|yrcweb|linemode|lynx|links|w3m|nimbus|Webwasher|sankore|adapi|brightsign|coship)/i'; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-others.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-others.php new file mode 100644 index 0000000..382b3ab --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/data/regexes/applications-others.php @@ -0,0 +1,5 @@ +<?php + +namespace WhichBrowser\Data; + +Applications::$OTHERS_REGEX = '/(itunes|qt|bluefish|nightingale|songbird|stagefright|substream|vlc|windows-media|coreplayer|flycast|boxee|kodi|xbmc|lightning|thunderbird|outlook|lotus|postbox|bat|yahoo|daum|flipboard|akregator|blogos|cococ|feed|liferea|news|jetbrains|rss|reeder|reedkit|rome|ziepod|messenger|kik|wire|yammer|fbios|fb4a|googleplus|instagram|pinterest|weibo|tumblr|twitter|wp-android|office|bingweb|hao123|gsa|naver|sogousearch|yandex|atom|golive|brackets|iweb|frontpage|amaya|websphere|download|tansodl|origin|secondlife|valve|raptr|alipay|cooliris|google|leechcraft|expeditor)/i'; diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/phpunit.xml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/phpunit.xml new file mode 100644 index 0000000..21914d8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/phpunit.xml @@ -0,0 +1,32 @@ +<phpunit + bootstrap="./vendor/autoload.php" + colors="false" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + verbose="true" + stopOnFailure="false" + processIsolation="false" + backupGlobals="false" + syntaxCheck="true" +> + <testsuites> + <testsuite name="WhichBrowser tests"> + <directory suffix="Test.php">tests/unit</directory> + </testsuite> + </testsuites> + + <filter> + <whitelist addUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">src/Model</directory> + <file>src/Parser.php</file> + <file>src/Analyser.php</file> + <file>src/Cache.php</file> + </whitelist> + </filter> + + <logging> + <log type="coverage-html" target="./build" charset="UTF-8" highlight="false" lowUpperBound="35" highLowerBound="70"/> + </logging> + +</phpunit> diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser.php new file mode 100644 index 0000000..975d95e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser.php @@ -0,0 +1,48 @@ +<?php + +namespace WhichBrowser; + +use WhichBrowser\Constants; +use WhichBrowser\Model\Main; + +class Analyser +{ + use Analyser\Header, Analyser\Derive, Analyser\Corrections, Analyser\Camouflage; + + private $data; + + private $options; + + private $headers = []; + + public function __construct($headers, $options = []) + { + $this->headers = $headers; + $this->options = (object) $options; + } + + public function setData(&$data) + { + $this->data =& $data; + } + + public function &getData() + { + return $this->data; + } + + public function analyse() + { + if (!isset($this->data)) { + $this->data = new Main(); + } + + /* Start the actual analysing steps */ + + $this->analyseHeaders() + ->deriveInformation() + ->applyCorrections() + ->detectCamouflage() + ->deriveDeviceSubType(); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Camouflage.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Camouflage.php new file mode 100644 index 0000000..f109ac4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Camouflage.php @@ -0,0 +1,314 @@ +<?php + +namespace WhichBrowser\Analyser; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Version; + +trait Camouflage +{ + private function &detectCamouflage() + { + if ($ua = $this->getHeader('User-Agent')) { + + $this + ->detectCamouflagedAndroidBrowser($ua) + ->detectCamouflagedAndroidAsusBrowser($ua) + ->detectCamouflagedAsSafari($ua) + ->detectCamouflagedAsChrome($ua); + } + + if (!empty($this->options->useragent)) { + $this->detectCamouflagedUCBrowser($this->options->useragent); + } + + if (isset($this->options->engine)) { + $this->detectCamouflagedBasedOnEngines(); + } + + if (isset($this->options->features)) { + $this->detectCamouflagedBasedOnFeatures(); + } + + return $this; + } + + private function &detectCamouflagedAndroidBrowser($ua) + { + if (preg_match('/Mac OS X 10_6_3; ([^;]+); [a-z]{2}(?:-[a-z]{2})?\)/u', $ua, $match)) { + $this->data->browser->name = 'Android Browser'; + $this->data->browser->version = null; + $this->data->browser->mode = 'desktop'; + + $this->data->os->name = 'Android'; + $this->data->os->alias = null; + $this->data->os->version = null; + + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = null; + + $this->data->device->type = 'mobile'; + + $device = Data\DeviceModels::identify('android', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + + $this->data->features[] = 'foundDevice'; + } + + if (preg_match('/Mac OS X 10_5_7; [^\/\);]+\/([^\/\);]+)\//u', $ua, $match)) { + $this->data->browser->name = 'Android Browser'; + $this->data->browser->version = null; + $this->data->browser->mode = 'desktop'; + + $this->data->os->name = 'Android'; + $this->data->os->alias = null; + $this->data->os->version = null; + + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = null; + + $this->data->device->type = 'mobile'; + + $device = Data\DeviceModels::identify('android', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + + $this->data->features[] = 'foundDevice'; + } + + return $this; + } + + private function &detectCamouflagedAndroidAsusBrowser($ua) + { + if (preg_match('/Linux Ventana; [a-z]{2}(?:-[a-z]{2})?; (.+) Build/u', $ua, $match)) { + $this->data->browser->name = 'Android Browser'; + $this->data->browser->version = null; + $this->data->browser->channel = null; + $this->data->browser->mode = 'desktop'; + + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = null; + + $this->data->features[] = 'foundDevice'; + } + + return $this; + } + + private function &detectCamouflagedAsSafari($ua) + { + if ($this->data->isBrowser('Safari') && !preg_match('/Darwin/u', $ua)) { + if ($this->data->isOs('iOS') && !preg_match('/^Mozilla/u', $ua)) { + $this->data->features[] = 'noMozillaPrefix'; + $this->data->camouflage = true; + } + + if (!preg_match('/Version\/[0-9\.]+/u', $ua)) { + $this->data->features[] = 'noVersion'; + $this->data->camouflage = true; + } + } + + return $this; + } + + private function &detectCamouflagedAsChrome($ua) + { + if ($this->data->isBrowser('Chrome')) { + if (preg_match('/(?:Chrome|CrMo|CriOS)\//u', $ua) + && !preg_match('/(?:Chrome|CrMo|CriOS)\/([0-9]{1,2}\.[0-9]\.[0-9]{3,4}\.[0-9]+)/u', $ua) + ) { + + $this->data->features[] = 'wrongVersion'; + $this->data->camouflage = true; + } + } + + return $this; + } + + private function &detectCamouflagedUCBrowser($ua) + { + if ($ua == 'Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.2.3.4) Gecko/') { + + if (!$this->data->isBrowser('UC Browser')) { + $this->data->browser->name = 'UC Browser'; + $this->data->browser->version = null; + $this->data->browser->stock = false; + } + + if ($this->data->isOs('Windows')) { + $this->data->os->reset(); + } + + $this->data->engine->reset([ 'name' => 'Gecko' ]); + $this->data->device->type = 'mobile'; + } + + if ($this->data->isBrowser('Chrome')) { + if (preg_match('/UBrowser\/?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + unset($this->data->browser->channel); + } + } + + return $this; + } + + private function &detectCamouflagedBasedOnEngines() + { + if (isset($this->data->engine->name) && $this->data->browser->mode != 'proxy') { + + /* If it claims not to be Trident, but it is probably Trident running camouflage mode */ + if ($this->options->engine & Constants\EngineType::TRIDENT) { + $this->data->features[] = 'trident'; + + if ($this->data->engine->name && $this->data->engine->name != 'Trident') { + $this->data->camouflage = !isset($this->data->browser->name) || ($this->data->browser->name != 'Maxthon' && $this->data->browser->name != 'Motorola WebKit'); + } + } + + /* If it claims not to be Opera, but it is probably Opera running camouflage mode */ + if ($this->options->engine & Constants\EngineType::PRESTO) { + $this->data->features[] = 'presto'; + + if ($this->data->engine->name && $this->data->engine->name != 'Presto') { + $this->data->camouflage = true; + } + + if (isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer') { + $this->data->camouflage = true; + } + } + + /* If it claims not to be Gecko, but it is probably Gecko running camouflage mode */ + if ($this->options->engine & Constants\EngineType::GECKO) { + $this->data->features[] = 'gecko'; + + if ($this->data->engine->name && $this->data->engine->name != 'Gecko') { + $this->data->camouflage = true; + } + + if (isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer') { + $this->data->camouflage = true; + } + } + + /* If it claims not to be Webkit, but it is probably Webkit running camouflage mode */ + if ($this->options->engine & Constants\EngineType::WEBKIT) { + $this->data->features[] = 'webkit'; + + if ($this->data->engine->name && ($this->data->engine->name != 'Blink' && $this->data->engine->name != 'Webkit')) { + $this->data->camouflage = true; + } + + if (isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer') { + $this->data->camouflage = true; + } + + /* IE 11 on mobile now supports Webkit APIs */ + if (isset($this->data->browser->name) && $this->data->browser->name == 'Mobile Internet Explorer' + && isset($this->data->browser->version) && $this->data->browser->version->toFloat() >= 11 + && isset($this->data->os->name) && $this->data->os->name == 'Windows Phone' + ) { + $this->data->camouflage = false; + } + + /* IE 11 Developer Preview now supports Webkit APIs */ + if (isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer' + && isset($this->data->browser->version) && $this->data->browser->version->toFloat() >= 11 + && isset($this->data->os->name) && $this->data->os->name == 'Windows' + ) { + $this->data->camouflage = false; + } + + /* EdgeHTML rendering engine also appears to be WebKit */ + if (isset($this->data->engine->name) && $this->data->engine->name == 'EdgeHTML') { + $this->data->camouflage = false; + } + + /* Firefox 48+ support certain Webkit features */ + if ($this->options->engine & Constants\EngineType::GECKO) { + $this->data->camouflage = false; + } + } + + if ($this->options->engine & Constants\EngineType::CHROMIUM) { + $this->data->features[] = 'chrome'; + + if ($this->data->engine->name && ($this->data->engine->name != 'EdgeHTML' && $this->data->engine->name != 'Blink' && $this->data->engine->name != 'Webkit')) { + $this->data->camouflage = true; + } + } + + /* If it claims to be Safari and uses V8, it is probably an Android device running camouflage mode */ + if ($this->data->engine->name == 'Webkit' && $this->options->engine & Constants\EngineType::V8) { + $this->data->features[] = 'v8'; + + if (isset($this->data->browser->name) && $this->data->browser->name == 'Safari') { + $this->data->camouflage = true; + } + } + } + + return $this; + } + + private function &detectCamouflagedBasedOnFeatures() + { + if (isset($this->data->browser->name) && isset($this->data->os->name)) { + if ($this->data->os->name == 'iOS' && $this->data->browser->name != 'Opera Mini' && $this->data->browser->name != 'UC Browser' && isset($this->data->os->version)) { + + if ($this->data->os->version->toFloat() < 4.0 && $this->options->features & Constants\Feature::SANDBOX) { + $this->data->features[] = 'foundSandbox'; + $this->data->camouflage = true; + } + + if ($this->data->os->version->toFloat() < 4.2 && $this->options->features & Constants\Feature::WEBSOCKET) { + $this->data->features[] = 'foundSockets'; + $this->data->camouflage = true; + } + + if ($this->data->os->version->toFloat() < 5.0 && $this->options->features & Constants\Feature::WORKER) { + $this->data->features[] = 'foundWorker'; + $this->data->camouflage = true; + } + } + + if ($this->data->os->name != 'iOS' && $this->data->browser->name == 'Safari' && isset($this->data->browser->version)) { + + if ($this->data->browser->version->toFloat() < 4.0 && $this->options->features & Constants\Feature::APPCACHE) { + $this->data->features[] = 'foundAppCache'; + $this->data->camouflage = true; + } + + if ($this->data->browser->version->toFloat() < 4.1 && $this->options->features & Constants\Feature::HISTORY) { + $this->data->features[] = 'foundHistory'; + $this->data->camouflage = true; + } + + if ($this->data->browser->version->toFloat() < 5.1 && $this->options->features & Constants\Feature::FULLSCREEN) { + $this->data->features[] = 'foundFullscreen'; + $this->data->camouflage = true; + } + + if ($this->data->browser->version->toFloat() < 5.2 && $this->options->features & Constants\Feature::FILEREADER) { + $this->data->features[] = 'foundFileReader'; + $this->data->camouflage = true; + } + } + } + + return $this; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Corrections.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Corrections.php new file mode 100644 index 0000000..a51bbd5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Corrections.php @@ -0,0 +1,174 @@ +<?php + +namespace WhichBrowser\Analyser; + +use WhichBrowser\Constants; +use WhichBrowser\Model\Version; + +trait Corrections +{ + private function &applyCorrections() + { + if (isset($this->data->browser->name) && isset($this->data->browser->using)) { + $this->hideBrowserBasedOnUsing(); + } + + if (isset($this->data->browser->name) && isset($this->data->os->name)) { + $this->hideBrowserBasedOnOperatingSystem(); + } + + if (isset($this->data->browser->name) && $this->data->device->type == Constants\DeviceType::TELEVISION) { + $this->hideBrowserOnDeviceTypeTelevision(); + } + + if (isset($this->data->browser->name) && $this->data->device->type == Constants\DeviceType::GAMING) { + $this->hideBrowserOnDeviceTypeGaming(); + } + + if ($this->data->device->type == Constants\DeviceType::TELEVISION) { + $this->hideOsOnDeviceTypeTelevision(); + } + + if (isset($this->data->browser->name) && isset($this->data->engine->name)) { + $this->fixMidoriEngineName(); + } + + if (isset($this->data->browser->name) && isset($this->data->engine->name)) { + $this->fixNineSkyEngineName(); + } + + if (isset($this->data->browser->name) && isset($this->data->browser->family)) { + $this->hideFamilyIfEqualToBrowser(); + } + + return $this; + } + + + private function hideFamilyIfEqualToBrowser() + { + if ($this->data->browser->name == $this->data->browser->family->name) { + unset($this->data->browser->family); + } + } + + private function fixMidoriEngineName() + { + if ($this->data->browser->name == 'Midori' && $this->data->engine->name != 'Webkit') { + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = null; + } + } + + private function fixNineSkyEngineName() + { + if ($this->data->browser->name == 'NineSky' && $this->data->engine->name != 'Webkit') { + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = null; + } + } + + private function hideBrowserBasedOnUsing() + { + if ($this->data->browser->name == 'Chrome') { + if ($this->data->browser->isUsing('Electron') || $this->data->browser->isUsing('Qt')) { + unset($this->data->browser->name); + unset($this->data->browser->version); + } + } + } + + private function hideBrowserBasedOnOperatingSystem() + { + if ($this->data->os->name == 'Series60' && $this->data->browser->name == 'Internet Explorer') { + $this->data->browser->reset(); + $this->data->engine->reset(); + } + + if ($this->data->os->name == 'Series80' && $this->data->browser->name == 'Internet Explorer') { + $this->data->browser->reset(); + $this->data->engine->reset(); + } + + if ($this->data->os->name == 'Lindows' && $this->data->browser->name == 'Internet Explorer') { + $this->data->browser->reset(); + $this->data->engine->reset(); + } + + if ($this->data->os->name == 'Tizen' && $this->data->browser->name == 'Chrome') { + $this->data->browser->reset([ + 'family' => isset($this->data->browser->family) ? $this->data->browser->family : null + ]); + } + + if ($this->data->os->name == 'Ubuntu Touch' && $this->data->browser->name == 'Chromium') { + $this->data->browser->reset([ + 'family' => isset($this->data->browser->family) ? $this->data->browser->family : null + ]); + } + + if ($this->data->os->name == 'KaiOS' && $this->data->browser->name == 'Firefox Mobile') { + $this->data->browser->reset([ + 'family' => isset($this->data->browser->family) ? $this->data->browser->family : null + ]); + } + } + + private function hideBrowserOnDeviceTypeGaming() + { + if (isset($this->data->device->model) && $this->data->device->model == 'Playstation 2' && $this->data->browser->name == 'Internet Explorer') { + $this->data->browser->reset(); + } + } + + private function hideBrowserOnDeviceTypeTelevision() + { + switch ($this->data->browser->name) { + case 'Firefox': + if (!$this->data->isOs('Firefox OS')) { + unset($this->data->browser->name); + unset($this->data->browser->version); + } + break; + + case 'Internet Explorer': + $valid = false; + + if (isset($this->data->device->model) && in_array($this->data->device->model, [ 'WebTV' ])) { + $valid = true; + } + + if (!$valid) { + unset($this->data->browser->name); + unset($this->data->browser->version); + } + + break; + + case 'Chrome': + case 'Chromium': + $valid = false; + + if (isset($this->data->os->name) && in_array($this->data->os->name, [ 'Google TV', 'Android' ])) { + $valid = true; + } + if (isset($this->data->device->model) && in_array($this->data->device->model, [ 'Chromecast' ])) { + $valid = true; + } + + if (!$valid) { + unset($this->data->browser->name); + unset($this->data->browser->version); + } + + break; + } + } + + private function hideOsOnDeviceTypeTelevision() + { + if (isset($this->data->os->name) && !in_array($this->data->os->name, [ 'Aliyun OS', 'Tizen', 'Android', 'Android TV', 'FireOS', 'Google TV', 'Firefox OS', 'OpenTV', 'webOS' ])) { + $this->data->os->reset(); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Derive.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Derive.php new file mode 100644 index 0000000..d927218 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Derive.php @@ -0,0 +1,486 @@ +<?php + +namespace WhichBrowser\Analyser; + +use WhichBrowser\Constants; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Using; +use WhichBrowser\Model\Version; + +trait Derive +{ + private function &deriveInformation() + { + if (isset($this->data->device->flag)) { + $this->deriveBasedOnDeviceFlag(); + } + + if (isset($this->data->os->name)) { + $this->deriveBasedOnOperatingSystem(); + } + + if (isset($this->data->browser->name)) { + $this->deriveOperaDevices(); + } + + if (isset($this->data->browser->name)) { + $this->deriveFirefoxOS(); + } + + if (isset($this->data->browser->name)) { + $this->deriveTrident(); + $this->deriveOperaRenderingEngine(); + $this->deriveOmniWebRenderingEngine(); + $this->deriveNetFrontRenderingEngine(); + } + + return $this; + } + + + + + private function &deriveDeviceSubType() + { + if ($this->data->device->type == 'mobile' && empty($this->data->device->subtype)) { + $this->data->device->subtype = 'feature'; + + if (in_array($this->data->os->getName(), [ 'Android', 'Bada', 'BlackBerry', 'BlackBerry OS', 'Firefox OS', 'iOS', 'iPhone OS', 'Kin OS', 'Maemo', 'MeeGo', 'Palm OS', 'Sailfish', 'Series60', 'Series80', 'Tizen', 'Ubuntu Touch', 'Windows Mobile', 'Windows Phone', 'webOS' ])) { + $this->data->device->subtype = 'smart'; + } + + if (isset($this->data->os->name) && in_array($this->data->os->name, [ 'Windows Phone' ])) { + $this->data->device->subtype = 'smart'; + } + + if (isset($this->data->os->family) && in_array($this->data->os->family->getName(), [ 'Android' ])) { + $this->data->device->subtype = 'smart'; + } + } + + return $this; + } + + + private function deriveOmniWebRenderingEngine() + { + if ($this->data->isBrowser('OmniWeb')) { + $version = $this->data->browser->getVersion(); + + if ($version < 5) { + $this->data->engine->reset(); + } + + if ($version >= 5 && $version < 5.5 && !$this->data->isEngine('WebCore')) { + $this->data->engine->reset([ 'name' => 'WebCore' ]); + } + + if ($version >= 5.5 && !$this->data->isEngine('WebKit')) { + $this->data->engine->reset([ 'name' => 'WebKit' ]); + } + } + } + + + private function deriveOperaRenderingEngine() + { + if ($this->data->isBrowser('Opera') || $this->data->isBrowser('Opera Mobile')) { + $version = $this->data->browser->getVersion(); + + if ($version >= 3.5 && $version < 7 && !$this->data->isEngine('Electra')) { + $this->data->engine->reset([ 'name' => 'Electra' ]); + } + + if ($version >= 7 && $version < 13 && !$this->data->isEngine('Presto')) { + $this->data->engine->reset([ 'name' => 'Presto' ]); + } + } + + if ($this->data->isBrowser('Opera Mini') && !$this->data->isOs('iOS') && !$this->data->isEngine('Presto')) { + $this->data->engine->reset([ 'name' => 'Presto' ]); + } + } + + + private function deriveNetFrontRenderingEngine() + { + if ($this->data->isBrowser('NetFront') && !$this->data->isEngine('NetFront')) { + $this->data->engine->reset([ 'name' => 'NetFront' ]); + } + } + + private function deriveTrident() + { + if ($this->data->isType('desktop') && $this->data->isBrowser('Internet Explorer') && !$this->data->engine->getName()) { + if ($this->data->isBrowser('Internet Explorer', '>=', 4)) { + $this->data->engine->set([ 'name' => 'Trident' ]); + } + } + + if ($this->data->isMobile() && $this->data->isBrowser('Mobile Internet Explorer') && !$this->data->engine->getName()) { + if ($this->data->isBrowser('Mobile Internet Explorer', '=', 6)) { + $this->data->engine->set([ 'name' => 'Trident' ]); + } + + if ($this->data->isBrowser('Mobile Internet Explorer', '=', 7)) { + $this->data->engine->set([ 'name' => 'Trident', 'version' => new Version([ 'value' => '3.1' ]) ]); + } + } + } + + + private function deriveFirefoxOS() + { + if (in_array($this->data->browser->name, [ 'Firefox Mobile', 'Servo Nightly Build' ]) && !isset($this->data->os->name)) { + $this->data->os->name = 'Firefox OS'; + } + + if (isset($this->data->os->name) && $this->data->os->name == 'Firefox OS' && $this->data->engine->name == 'Gecko') { + switch ($this->data->engine->getVersion()) { + case '18.0': + $this->data->os->version = new Version([ 'value' => '1.0.1' ]); + break; + case '18.1': + $this->data->os->version = new Version([ 'value' => '1.1' ]); + break; + case '26.0': + $this->data->os->version = new Version([ 'value' => '1.2' ]); + break; + case '28.0': + $this->data->os->version = new Version([ 'value' => '1.3' ]); + break; + case '30.0': + $this->data->os->version = new Version([ 'value' => '1.4' ]); + break; + case '32.0': + $this->data->os->version = new Version([ 'value' => '2.0' ]); + break; + case '34.0': + $this->data->os->version = new Version([ 'value' => '2.1' ]); + break; + case '37.0': + $this->data->os->version = new Version([ 'value' => '2.2' ]); + break; + case '44.0': + $this->data->os->version = new Version([ 'value' => '2.5' ]); + break; + } + } + } + + + private function deriveOperaDevices() + { + if ($this->data->browser->name == 'Opera' && $this->data->device->type == Constants\DeviceType::TELEVISION) { + $this->data->browser->name = 'Opera Devices'; + $this->data->browser->version = null; + + if ($this->data->engine->getName() == 'Presto') { + $data = [ + '2.12' => '3.4', + '2.11' => '3.3', + '2.10' => '3.2', + '2.9' => '3.1', + '2.8' => '3.0', + '2.7' => '2.9', + '2.6' => '2.8', + '2.4' => '10.3', + '2.3' => '10', + '2.2' => '9.7', + '2.1' => '9.6' + ]; + + $key = implode('.', array_slice(explode('.', $this->data->engine->getVersion()), 0, 2)); + + if (isset($data[$key])) { + $this->data->browser->version = new Version([ 'value' => $data[$key] ]); + } else { + unset($this->data->browser->version); + } + } + + $this->data->os->reset(); + } + } + + + + private function deriveBasedOnDeviceFlag() + { + $flag = $this->data->device->flag; + + if ($flag == Constants\Flag::NOKIAX) { + $this->data->os->name = 'Nokia X Platform'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + + unset($this->data->os->version); + unset($this->data->device->flag); + } + + if ($flag == Constants\Flag::FIREOS) { + $this->data->os->name = 'FireOS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + + if (isset($this->data->os->version) && isset($this->data->os->version->value)) { + switch ($this->data->os->version->value) { + case '2.3.3': + case '2.3.4': + $this->data->os->version = new Version([ 'value' => '1' ]); + break; + case '4.0.3': + $this->data->os->version = new Version([ 'value' => '2' ]); + break; + case '4.2.2': + $this->data->os->version = new Version([ 'value' => '3' ]); + break; + case '4.4.2': + $this->data->os->version = new Version([ 'value' => '4' ]); + break; + case '4.4.3': + $this->data->os->version = new Version([ 'value' => '4.5' ]); + break; + case '5.1.1': + $this->data->os->version = new Version([ 'value' => '5' ]); + break; + default: + unset($this->data->os->version); + break; + } + } + + if ($this->data->isBrowser('Chrome')) { + $this->data->browser->reset(); + $this->data->browser->using = new Using([ 'name' => 'Amazon WebView' ]); + } + + if ($this->data->browser->isUsing('Chromium WebView')) { + $this->data->browser->using = new Using([ 'name' => 'Amazon WebView' ]); + } + + unset($this->data->device->flag); + } + + if ($flag == Constants\Flag::GOOGLETV) { + $this->data->os->name = 'Google TV'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + + unset($this->data->os->version); + unset($this->data->device->flag); + } + + if ($flag == Constants\Flag::ANDROIDTV) { + $this->data->os->name = 'Android TV'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + unset($this->data->device->flag); + unset($this->data->device->series); + } + + if ($flag == Constants\Flag::ANDROIDWEAR) { + $this->data->os->name = 'Android Wear'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + unset($this->data->os->version); + unset($this->data->device->flag); + + if ($this->data->browser->isUsing('Chrome Content Shell')) { + $this->data->browser->name = 'Wear Internet Browser'; + $this->data->browser->using = null; + } + } + + if ($flag == Constants\Flag::GOOGLEGLASS) { + $this->data->os->family = new Family([ 'name' => 'Android' ]); + unset($this->data->os->name); + unset($this->data->os->version); + unset($this->data->device->flag); + } + + if ($flag == Constants\Flag::UIQ) { + unset($this->data->device->flag); + + if (!$this->data->isOs('UIQ')) { + $this->data->os->name = 'UIQ'; + unset($this->data->os->version); + } + } + + if ($flag == Constants\Flag::S60) { + unset($this->data->device->flag); + + if (!$this->data->isOs('Series60')) { + $this->data->os->name = 'Series60'; + unset($this->data->os->version); + } + } + + if ($flag == Constants\Flag::MOAPS) { + unset($this->data->device->flag); + $this->data->os->name = 'MOAP(S)'; + unset($this->data->os->version); + } + } + + private function deriveBasedOnOperatingSystem() + { + /* Derive the default browser on Windows Mobile */ + + if ($this->data->os->name == 'Windows Mobile' && $this->data->isBrowser('Internet Explorer')) { + $this->data->browser->name = 'Mobile Internet Explorer'; + } + + /* Derive the default browser on Android */ + + if ($this->data->os->name == 'Android' && !isset($this->data->browser->using) && !isset($this->data->browser->name) && $this->data->browser->stock) { + $this->data->browser->name = 'Android Browser'; + } + + /* Derive the default browser on Google TV */ + + if ($this->data->os->name == 'Google TV' && !isset($this->data->browser->name) && $this->data->browser->stock) { + $this->data->browser->name = 'Chrome'; + } + + /* Derive the default browser on BlackBerry */ + + if ($this->data->os->name == 'BlackBerry' && !isset($this->data->browser->name) && $this->data->browser->stock) { + $this->data->browser->name = 'BlackBerry Browser'; + $this->data->browser->hidden = true; + } + + if ($this->data->os->name == 'BlackBerry OS' && !isset($this->data->browser->name) && $this->data->browser->stock) { + $this->data->browser->name = 'BlackBerry Browser'; + $this->data->browser->hidden = true; + } + + if ($this->data->os->name == 'BlackBerry Tablet OS' && !isset($this->data->browser->name) && $this->data->browser->stock) { + $this->data->browser->name = 'BlackBerry Browser'; + $this->data->browser->hidden = true; + } + + /* Derive the default browser on Tizen */ + + if ($this->data->os->name == 'Tizen' && !isset($this->data->browser->name) && $this->data->browser->stock && in_array($this->data->device->type, [ Constants\DeviceType::MOBILE, Constants\DeviceType::APPLIANCE ])) { + $this->data->browser->name = 'Samsung Browser'; + } + + /* Derive the default browser on Aliyun OS */ + + if ($this->data->os->name == 'Aliyun OS' && !isset($this->data->browser->using) && !isset($this->data->browser->name) && $this->data->browser->stock) { + $this->data->browser->name = 'Aliyun Browser'; + } + + if ($this->data->os->name == 'Aliyun OS' && $this->data->browser->isUsing('Chrome Content Shell')) { + $this->data->browser->name = 'Aliyun Browser'; + $this->data->browser->using = null; + $this->data->browser->stock = true; + } + + if ($this->data->os->name == 'Aliyun OS' && $this->data->browser->stock) { + $this->data->browser->hidden = true; + } + + /* Derive OS/2 nickname */ + + if ($this->data->os->name == 'OS/2') { + if (!empty($this->data->os->version)) { + if ($this->data->os->version->is('>', '2')) { + $this->data->os->version->nickname = 'Warp'; + } + } + } + + /* Derive HP TouchPad based on webOS and tablet */ + + if ($this->data->os->name == 'webOS' && $this->data->device->type == Constants\DeviceType::TABLET) { + $this->data->device->manufacturer = 'HP'; + $this->data->device->model = 'TouchPad'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + /* Derive Windows 10 Mobile edition */ + + if ($this->data->os->name == 'Windows Phone') { + if (!empty($this->data->os->version)) { + if ($this->data->os->version->is('=', '10')) { + $this->data->os->alias = 'Windows'; + $this->data->os->edition = 'Mobile'; + $this->data->os->version->alias = '10'; + } + } + } + + /* Derive manufacturer and model based on MacOS or OS X */ + + if ($this->data->os->name == 'OS X' || $this->data->os->name == 'Mac OS') { + if (empty($this->data->device->model)) { + $this->data->device->manufacturer = 'Apple'; + $this->data->device->model = 'Macintosh'; + $this->data->device->identified |= Constants\Id::INFER; + $this->data->device->hidden = true; + } + } + + /* Derive manufacturer and model based on MacOS or OS X */ + + if ($this->data->os->name == 'iOS') { + if (empty($this->data->device->model)) { + $this->data->device->manufacturer = 'Apple'; + $this->data->device->identified |= Constants\Id::INFER; + $this->data->device->hidden = true; + } + } + + /* Derive iOS and OS X aliases */ + + if ($this->data->os->name == 'iOS') { + if (!empty($this->data->os->version)) { + if ($this->data->os->version->is('<', '4')) { + $this->data->os->alias = 'iPhone OS'; + } + } + } + + if ($this->data->os->name == 'OS X') { + if (!empty($this->data->os->version)) { + if ($this->data->os->version->is('<', '10.7')) { + $this->data->os->alias = 'Mac OS X'; + } + + if ($this->data->os->version->is('>=', '10.12')) { + $this->data->os->alias = 'macOS'; + } + + if ($this->data->os->version->is('10.7')) { + $this->data->os->version->nickname = 'Lion'; + } + + if ($this->data->os->version->is('10.8')) { + $this->data->os->version->nickname = 'Mountain Lion'; + } + + if ($this->data->os->version->is('10.9')) { + $this->data->os->version->nickname = 'Mavericks'; + } + + if ($this->data->os->version->is('10.10')) { + $this->data->os->version->nickname = 'Yosemite'; + } + + if ($this->data->os->version->is('10.11')) { + $this->data->os->version->nickname = 'El Capitan'; + } + + if ($this->data->os->version->is('10.12')) { + $this->data->os->version->nickname = 'Sierra'; + } + + if ($this->data->os->version->is('10.13')) { + $this->data->os->version->nickname = 'High Sierra'; + } + + if ($this->data->os->version->is('10.14')) { + $this->data->os->version->nickname = 'Mojave'; + } + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header.php new file mode 100644 index 0000000..0655c62 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header.php @@ -0,0 +1,148 @@ +<?php + +namespace WhichBrowser\Analyser; + +use WhichBrowser\Constants; +use WhichBrowser\Parser; + +trait Header +{ + private function &analyseHeaders() + { + /* Analyse the main useragent header */ + + if ($header = $this->getHeader('User-Agent')) { + $this->analyseUserAgent($header); + } + + + /* Analyse secondary useragent headers */ + + if ($header = $this->getHeader('X-Original-User-Agent')) { + $this->additionalUserAgent($header); + } + + if ($header = $this->getHeader('X-Device-User-Agent')) { + $this->additionalUserAgent($header); + } + + if ($header = $this->getHeader('Device-Stock-UA')) { + $this->additionalUserAgent($header); + } + + if ($header = $this->getHeader('X-OperaMini-Phone-UA')) { + $this->additionalUserAgent($header); + } + + if ($header = $this->getHeader('X-UCBrowser-Device-UA')) { + $this->additionalUserAgent($header); + } + + + /* Analyse browser specific headers */ + + if ($header = $this->getHeader('X-OperaMini-Phone')) { + $this->analyseOperaMiniPhone($header); + } + + if ($header = $this->getHeader('X-UCBrowser-Phone-UA')) { + $this->analyseOldUCUserAgent($header); + } + + if ($header = $this->getHeader('X-UCBrowser-UA')) { + $this->analyseNewUCUserAgent($header); + } + + if ($header = $this->getHeader('X-Puffin-UA')) { + $this->analysePuffinUserAgent($header); + } + + if ($header = $this->getHeader('Baidu-FlyFlow')) { + $this->analyseBaiduHeader($header); + } + + + /* Analyse Android WebView browser ids */ + + if ($header = $this->getHeader('X-Requested-With')) { + $this->analyseBrowserId($header); + } + + + /* Analyse WAP profile header */ + + if ($header = $this->getHeader('X-Wap-Profile')) { + $this->analyseWapProfile($header); + } + + return $this; + } + + + + private function analyseUserAgent($header) + { + new Header\Useragent($header, $this->data, $this->options); + } + + private function analyseBaiduHeader($header) + { + new Header\Baidu($header, $this->data); + } + + private function analyseOperaMiniPhone($header) + { + new Header\OperaMini($header, $this->data); + } + + private function analyseBrowserId($header) + { + new Header\BrowserId($header, $this->data); + } + + private function analysePuffinUserAgent($header) + { + new Header\Puffin($header, $this->data); + } + + private function analyseNewUCUserAgent($header) + { + new Header\UCBrowserNew($header, $this->data); + } + + private function analyseOldUCUserAgent($header) + { + new Header\UCBrowserOld($header, $this->data); + } + + private function analyseWapProfile($header) + { + new Header\Wap($header, $this->data); + } + + + private function additionalUserAgent($ua) + { + $extra = new Parser($ua); + + if ($extra->device->type != Constants\DeviceType::DESKTOP) { + if (isset($extra->os->name)) { + $this->data->os = $extra->os; + } + + if ($extra->device->identified) { + $this->data->device = $extra->device; + } + } + } + + + private function getHeader($h) + { + foreach ($this->headers as $k => $v) { + if (strtolower($h) == strtolower($k)) { + return $v; + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Baidu.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Baidu.php new file mode 100644 index 0000000..09607f8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Baidu.php @@ -0,0 +1,17 @@ +<?php + +namespace WhichBrowser\Analyser\Header; + +class Baidu +{ + public function __construct($header, &$data) + { + $this->data =& $data; + + if (!isset($this->data->browser->name) || $this->data->browser->name != 'Baidu Browser') { + $this->data->browser->name = 'Baidu Browser'; + $this->data->browser->version = null; + $this->data->browser->stock = false; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/BrowserId.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/BrowserId.php new file mode 100644 index 0000000..6b57b76 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/BrowserId.php @@ -0,0 +1,69 @@ +<?php + +namespace WhichBrowser\Analyser\Header; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Using; +use WhichBrowser\Model\Version; + +class BrowserId +{ + public function __construct($header, &$data) + { + if ($header == 'XMLHttpRequest') { + return; + } + + $this->data =& $data; + + /* The X-Requested-With header is send by the WebView, so our browser name is Chrome it is probably the Chromium WebView which is sometimes misidentified. */ + + if (isset($this->data->browser->name) && $this->data->browser->name == 'Chrome') { + $version = $this->data->browser->getVersion(); + + $this->data->browser->reset(); + $this->data->browser->using = new Using([ 'name' => 'Chromium WebView', 'version' => new Version([ 'value' => explode('.', $version)[0] ]) ]); + } + + /* Detect the correct browser based on the header */ + + $browser = Data\BrowserIds::identify($header); + if ($browser) { + if (!isset($this->data->browser->name)) { + $this->data->browser->name = $browser; + } else { + if (substr($this->data->browser->name, 0, strlen($browser)) != $browser) { + $this->data->browser->name = $browser; + $this->data->browser->version = null; + $this->data->browser->stock = false; + } else { + $this->data->browser->name = $browser; + } + } + } + + /* The X-Requested-With header is only send from Android devices */ + + if (!isset($this->data->os->name) || ($this->data->os->name != 'Android' && (!isset($this->data->os->family) || $this->data->os->family->getName() != 'Android'))) { + $this->data->os->name = 'Android'; + $this->data->os->alias = null; + $this->data->os->version = null; + + $this->data->device->manufacturer = null; + $this->data->device->model = null; + $this->data->device->identified = Constants\Id::NONE; + + if ($this->data->device->type != Constants\DeviceType::MOBILE && $this->data->device->type != Constants\DeviceType::TABLET) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + } + + /* The X-Requested-With header is send by the WebKit or Chromium Webview */ + + if (!isset($this->data->engine->name) || ($this->data->engine->name != 'Webkit' && $this->data->engine->name != 'Blink')) { + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = null; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/OperaMini.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/OperaMini.php new file mode 100644 index 0000000..d8525bd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/OperaMini.php @@ -0,0 +1,72 @@ +<?php + +namespace WhichBrowser\Analyser\Header; + +use WhichBrowser\Data; +use WhichBrowser\Constants; + +class OperaMini +{ + public function __construct($header, &$data) + { + $this->data =& $data; + + $parts = explode(' # ', $header); + $manufacturer = isset($parts[0]) ? $parts[0] : ''; + $model = isset($parts[1]) ? $parts[1] : ''; + + if ($manufacturer != '?' && $model != '?') { + if ($this->data->device->identified < Constants\Id::PATTERN) { + if ($this->identifyBasedOnModel($model)) { + return; + } + + $this->data->device->manufacturer = $manufacturer; + $this->data->device->model = $model; + $this->data->device->identified = true; + } + } + } + + private function identifyBasedOnModel($model) + { + $device = Data\DeviceModels::identify('bada', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Bada') { + $this->data->os->name = 'Bada'; + $this->data->os->version = null; + } + + return true; + } + + $device = Data\DeviceModels::identify('blackberry', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'BlackBerry OS') { + $this->data->os->name = 'BlackBerry OS'; + $this->data->os->version = null; + } + + return true; + } + + $device = Data\DeviceModels::identify('wm', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Windows Mobile') { + $this->data->os->name = 'Windows Mobile'; + $this->data->os->version = null; + } + + return true; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Puffin.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Puffin.php new file mode 100644 index 0000000..fdd3489 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Puffin.php @@ -0,0 +1,50 @@ +<?php + +namespace WhichBrowser\Analyser\Header; + +use WhichBrowser\Data; + +class Puffin +{ + public function __construct($header, &$data) + { + $this->data =& $data; + + $parts = explode('/', $header); + + if ($this->data->browser->name != 'Puffin') { + $this->data->browser->name = 'Puffin'; + $this->data->browser->version = null; + $this->data->browser->stock = false; + } + + $this->data->device->type = 'mobile'; + + if (count($parts) > 1 && $parts[0] == 'Android') { + if (!isset($this->data->os->name) || $this->data->os->name != 'Android') { + $this->data->os->name = 'Android'; + $this->data->os->version = null; + } + + $device = Data\DeviceModels::identify('android', $parts[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (count($parts) > 1 && $parts[0] == 'iPhone OS') { + if (!isset($this->data->os->name) || $this->data->os->name != 'iOS') { + $this->data->os->name = 'iOS'; + $this->data->os->version = null; + } + + $device = Data\DeviceModels::identify('ios', $parts[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/UCBrowserNew.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/UCBrowserNew.php new file mode 100644 index 0000000..d3f20c7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/UCBrowserNew.php @@ -0,0 +1,182 @@ +<?php + +namespace WhichBrowser\Analyser\Header; + +use WhichBrowser\Data; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Version; + +class UCBrowserNew +{ + public function __construct($header, &$data) + { + $this->data =& $data; + + if (preg_match('/pr\(UCBrowser/u', $header)) { + if (!$this->data->isBrowser('UC Browser')) { + $this->data->browser->name = 'UC Browser'; + $this->data->browser->stock = false; + $this->data->browser->version = null; + + if (preg_match('/pr\(UCBrowser(?:\/([0-9\.]+))/u', $header, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + } + } + + /* Find os */ + if (preg_match('/pf\(Java\)/u', $header)) { + if (preg_match('/dv\(([^\)]*)\)/u', $header, $match)) { + if ($this->identifyBasedOnModel($match[1])) { + return; + } + } + } + + if (preg_match('/pf\(Linux\)/u', $header) && preg_match('/ov\((?:Android )?([0-9\.]+)/u', $header, $match)) { + $this->data->os->name = 'Android'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/pf\(Symbian\)/u', $header) && preg_match('/ov\(S60V([0-9])/u', $header, $match)) { + if (!$this->data->isOs('Series60')) { + $this->data->os->name = 'Series60'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + + if (preg_match('/pf\(Windows\)/u', $header) && preg_match('/ov\(wds ([0-9]+\.[0-9]+)/u', $header, $match)) { + if (!$this->data->isOs('Windows Phone')) { + $this->data->os->name = 'Windows Phone'; + + switch ($match[1]) { + case '7.1': + $this->data->os->version = new Version([ 'value' => '7.5' ]); + break; + case '8.0': + $this->data->os->version = new Version([ 'value' => '8.0' ]); + break; + case '8.1': + $this->data->os->version = new Version([ 'value' => '8.1' ]); + break; + case '10.0': + $this->data->os->version = new Version([ 'value' => '10.0' ]); + break; + } + } + } + + if (preg_match('/pf\((?:42|44)\)/u', $header) && preg_match('/ov\((?:iPh OS )?(?:iOS )?([0-9\_]+)/u', $header, $match)) { + if (!$this->data->isOs('iOS')) { + $this->data->os->name = 'iOS'; + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + } + + /* Find engine */ + if (preg_match('/re\(AppleWebKit\/([0-9\.]+)/u', $header, $match)) { + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + } + + /* Find device */ + if ($this->data->isOs('Android')) { + if (preg_match('/dv\((.*)\)/uU', $header, $match)) { + $match[1] = preg_replace("/\s+Build/u", '', $match[1]); + $device = Data\DeviceModels::identify('android', $match[1]); + + if ($device) { + $this->data->device = $device; + } + } + } + + if ($this->data->isOs('Series60')) { + if (preg_match('/dv\((?:Nokia)?([^\)]*)\)/iu', $header, $match)) { + $device = Data\DeviceModels::identify('symbian', $match[1]); + + if ($device) { + $this->data->device = $device; + } + } + } + + if ($this->data->isOs('Windows Phone')) { + if (preg_match('/dv\(([^\)]*)\)/u', $header, $match)) { + $device = Data\DeviceModels::identify('wp', substr(strstr($match[1], ' '), 1)); + + if ($device) { + $this->data->device = $device; + } + } + } + + if ($this->data->isOs('iOS')) { + if (preg_match('/dv\(([^\)]*)\)/u', $header, $match)) { + $device = Data\DeviceModels::identify('ios', $match[1]); + + if ($device) { + $this->data->device = $device; + } + } + } + } + + private function identifyBasedOnModel($model) + { + $model = preg_replace('/^Nokia/iu', '', $model); + + $device = Data\DeviceModels::identify('symbian', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Series60') { + $this->data->os->name = 'Series60'; + $this->data->os->version = null; + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + } + + return true; + } + + $device = Data\DeviceModels::identify('s40', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Series40') { + $this->data->os->name = 'Series40'; + $this->data->os->version = null; + } + + return true; + } + + $device = Data\DeviceModels::identify('bada', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Bada') { + $this->data->os->name = 'Bada'; + $this->data->os->version = null; + } + + return true; + } + + $device = Data\DeviceModels::identify('touchwiz', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Touchwiz') { + $this->data->os->name = 'Touchwiz'; + $this->data->os->version = null; + } + + return true; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/UCBrowserOld.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/UCBrowserOld.php new file mode 100644 index 0000000..12caa9a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/UCBrowserOld.php @@ -0,0 +1,39 @@ +<?php + +namespace WhichBrowser\Analyser\Header; + +use WhichBrowser\Parser; +use WhichBrowser\Constants; + +class UCBrowserOld +{ + public function __construct($header, &$data) + { + $this->data =& $data; + + if ($this->data->device->type == Constants\DeviceType::DESKTOP) { + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->os->reset(); + } + + if (!isset($this->data->browser->name) || $this->data->browser->name != 'UC Browser') { + $this->data->browser->name = 'UC Browser'; + $this->data->browser->version = null; + } + + $this->data->browser->mode = 'proxy'; + $this->data->engine->reset([ 'name' => 'Gecko' ]); + + $extra = new Parser([ 'headers' => [ 'User-Agent' => $header ]]); + + if ($extra->device->type != Constants\DeviceType::DESKTOP) { + if ($extra->os->getName() !== '' && ($this->data->os->getName() === '' || $extra->os->getVersion() !== '')) { + $this->data->os = $extra->os; + } + if ($extra->device->identified) { + $this->data->device = $extra->device; + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent.php new file mode 100644 index 0000000..ebfa200 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent.php @@ -0,0 +1,45 @@ +<?php + +namespace WhichBrowser\Analyser\Header; + +class Useragent +{ + use Useragent\Os, Useragent\Device, Useragent\Browser, Useragent\Application, Useragent\Using, Useragent\Engine, Useragent\Bot; + + public function __construct($header, &$data, &$options) + { + $this->data =& $data; + $this->options =& $options; + + /* Make sure we do not have a duplicate concatenated useragent string */ + + $header = preg_replace("/^(Mozilla\/[0-9]\.[0-9].{20,})\s+Mozilla\/[0-9]\.[0-9].*$/iu", '$1', $header); + + /* Detect the basic information */ + + $this->detectOperatingSystem($header) + ->detectDevice($header) + ->detectBrowser($header) + ->detectApplication($header) + ->detectUsing($header) + ->detectEngine($header); + + /* Detect bots */ + + if (!isset($this->options->detectBots) || $this->options->detectBots === true) { + $this->detectBot($header); + } + + /* Refine some of the information */ + + $this->refineBrowser($header) + ->refineOperatingSystem($header); + } + + private function removeKnownPrefixes($ua) + { + $ua = preg_replace('/^OneBrowser\/[0-9.]+\//', '', $ua); + $ua = preg_replace('/^MQQBrowser\/[0-9.]+\//', '', $ua); + return $ua; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Application.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Application.php new file mode 100644 index 0000000..ed5a2da --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Application.php @@ -0,0 +1,497 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Using; +use WhichBrowser\Model\Version; + +trait Application +{ + private function &detectApplication($ua) + { + /* Detect applications */ + $this->detectSpecificApplications($ua); + $this->detectRemainingApplications($ua); + + return $this; + } + + + + private function detectSpecificApplications($ua) + { + /* Sony Updatecenter */ + + if (preg_match('/^(.*) Build\/.* (?:com.sonyericsson.updatecenter|UpdateCenter)\/[A-Z0-9\.]+$/iu', $ua, $match)) { + $this->data->browser->name = 'Sony Update Center'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::APP; + + $this->data->os->reset([ + 'name' => 'Android' + ]); + + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Sony Select SDK */ + + if (preg_match('/Android [0-9\.]+; (.*) Sony\/.*SonySelectSDK\/([0-9\.]+)/iu', $ua, $match)) { + $this->data->browser->reset(); + $this->data->browser->type = Constants\BrowserType::APP; + $this->data->browser->using = new \WhichBrowser\Model\Using([ + 'name' => 'Sony Select SDK', + 'version' => new Version([ 'value' => $match[2], 'details' => 2 ]) + ]); + + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Samsung Mediahub */ + + if (preg_match('/^Stamhub [^\/]+\/([^;]+);.*:([0-9\.]+)\/[^\/]+\/[^:]+:user\/release-keys$/iu', $ua, $match)) { + $this->data->browser->name = 'Mediahub'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::APP_MEDIAPLAYER; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[2] ]) + ]); + + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* "Android Application" */ + + if (preg_match('/Android Application/iu', $ua)) { + if (preg_match('/^(.+) Android Application \([0-9]+, .+ v[0-9\.]+\) - [a-z-]+ (.*) [a-z_-]+ - [0-9A-F]{8,8}-[0-9A-F]{4,4}-[0-9A-F]{4,4}-[0-9A-F]{4,4}-[0-9A-F]{12,12}$/iu', $ua, $match)) { + $this->data->browser->name = $match[1]; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::APP; + + $this->data->os->reset([ + 'name' => 'Android' + ]); + + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/^(.+) Android Application - (.*) Build\/(.+) - [0-9A-F]{8,8}-[0-9A-F]{4,4}-[0-9A-F]{4,4}-[0-9A-F]{4,4}-[0-9A-F]{12,12}$/iu', $ua, $match)) { + $this->data->browser->name = $match[1]; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::APP; + + $this->data->os->reset([ + 'name' => 'Android' + ]); + + $version = Data\BuildIds::identify($match[3]); + if ($version) { + $this->data->os->version = $version; + } + + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/^(.+) Android Application - [a-z-]+ (.*) [a-z_-]+$/iu', $ua, $match)) { + $this->data->browser->name = $match[1]; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::APP; + + $this->data->os->reset([ + 'name' => 'Android' + ]); + + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + /* AiMeiTuan */ + + if (preg_match('/^AiMeiTuan \/[^\-]+\-([0-9\.]+)\-(.*)\-[0-9]+x[0-9]+\-/iu', $ua, $match)) { + $this->data->browser->name = 'AiMeiTuan'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::APP; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[1] ]) + ]); + + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Instagram */ + + if (preg_match('/^Instagram ([0-9\.]+) Android (?:IC )?\([0-9]+\/([0-9\.]+); [0-9]+dpi; [0-9]+x[0-9]+; [^;]+; ([^;]*);/iu', $ua, $match)) { + $this->data->browser->name = 'Instagram'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::APP_SOCIAL; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[2] ]) + ]); + + $this->data->device->model = $match[3]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[3]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Pinterest */ + + if (preg_match('/^Pinterest for Android( Tablet)?\/([0-9\.]+) \(([^;]+); ([0-9\.]+)\)/iu', $ua, $match)) { + $this->data->browser->name = 'Pinterest'; + $this->data->browser->version = new Version([ 'value' => $match[2] ]); + $this->data->browser->type = Constants\BrowserType::APP_SOCIAL; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[4] ]) + ]); + + $this->data->device->model = $match[3]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = $match[1] == ' Tablet' ? Constants\DeviceType::TABLET : Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[3]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Dr. Web Anti-Virus */ + + if (preg_match('/Dr\.Web anti\-virus Light Version: ([0-9\.]+) Device model: (.*) Firmware version: ([0-9\.]+)/u', $ua, $match)) { + $this->data->browser->name = 'Dr. Web Light'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::APP_ANTIVIRUS; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[3] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Google Earth */ + + if (preg_match('/GoogleEarth\/([0-9\.]+)\(Android;Android \((.+)\-[^\-]+\-user-([0-9\.]+)\);/u', $ua, $match)) { + $this->data->browser->name = 'Google Earth'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::APP; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[3] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Groupon */ + + if (preg_match('/Groupon\/([0-9\.]+) \(Android ([0-9\.]+); [^\/]+ \/ [A-Z][a-z]+ ([^;]*);/u', $ua, $match)) { + $this->data->browser->name = 'Groupon'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::APP_SHOPPING; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[2] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->model = $match[3]; + + $device = Data\DeviceModels::identify('android', $match[3]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Whatsapp */ + + if (preg_match('/WhatsApp\+?\/([0-9\.]+) (Android|S60Version|WP7)\/([0-9\.\_]+) Device\/([^\-]+)\-(.*)(?:-\([0-9]+\.[0-9]+\))?(?:\-H[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)?$/uU', $ua, $match)) { + $this->data->browser->name = 'WhatsApp'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::APP_CHAT; + + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->manufacturer = $match[4]; + $this->data->device->model = $match[5]; + $this->data->device->identified |= Constants\Id::PATTERN; + + if ($match[2] == 'Android') { + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => str_replace('_', '.', $match[3]) ]) + ]); + + $device = Data\DeviceModels::identify('android', $match[5]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if ($match[2] == 'WP7') { + $this->data->os->reset([ + 'name' => 'Windows Phone', + 'version' => new Version([ 'value' => $match[3], 'details' => 2 ]) + ]); + + $device = Data\DeviceModels::identify('wp', $match[5]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if ($match[2] == 'S60Version') { + $this->data->os->reset([ + 'name' => 'Series60', + 'version' => new Version([ 'value' => $match[3] ]), + 'family' => new Family([ 'name' => 'Symbian' ]) + ]); + + $device = Data\DeviceModels::identify('symbian', $match[5]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if ($match[2] == 'WP7') { + $this->data->os->reset([ + 'name' => 'Windows Phone', + 'version' => new Version([ 'value' => $match[3], 'details' => 2 ]) + ]); + + $device = Data\DeviceModels::identify('wp', $match[5]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + /* Yahoo */ + + if (preg_match('/YahooMobile(?:Messenger|Mail|Weather)\/1.0 \(Android (Messenger|Mail|Weather); ([0-9\.]+)\) \([^;]+; ?[^;]+; ?([^;]+); ?([0-9\.]+)\/[^\;\)\/]+\)/u', $ua, $match)) { + $this->data->browser->name = 'Yahoo ' . $match[1]; + $this->data->browser->version = new Version([ 'value' => $match[2], 'details' => 3 ]); + + switch ($match[1]) { + case 'Messenger': + $this->data->browser->type = Constants\BrowserType::APP_CHAT; + break; + case 'Mail': + $this->data->browser->type = Constants\BrowserType::APP_EMAIL; + break; + case 'Weather': + $this->data->browser->type = Constants\BrowserType::APP_NEWS; + break; + } + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[4] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[3]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Yahoo Mobile App */ + + if (preg_match('/YahooJMobileApp\/[0-9\.]+ \(Android [a-z]+; ([0-9\.]+)\) \([^;]+; ?[^;]+; ?[^;]+; ?([^;]+); ?([0-9\.]+)\/[^\;\)\/]+\)/u', $ua, $match)) { + $this->data->browser->name = 'Yahoo Mobile'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + $this->data->browser->type = Constants\BrowserType::APP_SEARCH; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[3] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* ICQ */ + + if (preg_match('/ICQ_Android\/([0-9\.]+) \(Android; [0-9]+; ([0-9\.]+); [^;]+; ([^;]+);/u', $ua, $match)) { + $this->data->browser->name = 'ICQ'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + $this->data->browser->type = Constants\BrowserType::APP_CHAT; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[2] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[3]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Facebook for Android */ + + if (preg_match('/^\[FBAN\/(FB4A|PAAA);.*FBDV\/([^;]+);.*FBSV\/([0-9\.]+);/u', $ua, $match)) { + if ($match[1] == 'FB4A') { + $this->data->browser->name = 'Facebook'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::APP_SOCIAL; + } + + if ($match[1] == 'PAAA') { + $this->data->browser->name = 'Facebook Pages'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::APP_SOCIAL; + } + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[3] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* VK */ + + if (preg_match('/^VKAndroidApp\/([0-9\.]+)-[0-9]+ \(Android ([^;]+); SDK [^;]+; [^;]+; [a-z]+ ([^;]+);/iu', $ua, $match)) { + $this->data->browser->name = 'VK'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::APP_SOCIAL; + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[2] ]) + ]); + + $this->data->device->model = $match[3]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::MOBILE; + + $device = Data\DeviceModels::identify('android', $match[3]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + private function detectRemainingApplications($ua) + { + if ($data = Data\Applications::identifyOther($ua)) { + $this->data->browser->set($data['browser']); + + if (!empty($data['device'])) { + $this->data->device->set($data['device']); + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Bot.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Bot.php new file mode 100644 index 0000000..e73aee1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Bot.php @@ -0,0 +1,47 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent; + +use WhichBrowser\Constants; +use WhichBrowser\Data; + +trait Bot +{ + private function &detectBot($ua) + { + /* Detect bots based on url in the UA string */ + + if (preg_match('/\+https?:\/\//iu', $ua)) { + $this->data->browser->reset(); + $this->data->os->reset(); + $this->data->engine->reset(); + $this->data->device->reset(); + + $this->data->device->type = Constants\DeviceType::BOT; + } + + /* Detect bots based on common markers */ + + if (preg_match('/(?:Bot|Robot|Spider|Crawler)([\/\);]|$)/iu', $ua) && !preg_match('/CUBOT/iu', $ua)) { + $this->data->browser->reset(); + $this->data->os->reset(); + $this->data->engine->reset(); + $this->data->device->reset(); + + $this->data->device->type = Constants\DeviceType::BOT; + } + + /* Detect based on a predefined list or markers */ + + if ($bot = Data\Applications::identifyBot($ua)) { + $this->data->browser = $bot; + $this->data->os->reset(); + $this->data->engine->reset(); + $this->data->device->reset(); + + $this->data->device->type = Constants\DeviceType::BOT; + } + + return $this; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Browser.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Browser.php new file mode 100644 index 0000000..7892559 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Browser.php @@ -0,0 +1,2431 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Using; +use WhichBrowser\Model\Version; + +trait Browser +{ + private function &detectBrowser($ua) + { + /* Detect major browsers */ + $this->detectSafari($ua); + $this->detectExplorer($ua); + $this->detectFirefox($ua); + $this->detectChrome($ua); + $this->detectEdge($ua); + $this->detectOpera($ua); + + /* Detect WAP browsers */ + $this->detectWapBrowsers($ua); + + /* Detect other various mobile browsers */ + $this->detectNokiaBrowser($ua); + $this->detectSilk($ua); + $this->detectSailfishBrowser($ua); + $this->detectWebOSBrowser($ua); + $this->detectDolfin($ua); + $this->detectIris($ua); + + /* Detect other browsers */ + $this->detectUC($ua); + $this->detectObigo($ua); + $this->detectNetfront($ua); + + /* Detect other specific desktop browsers */ + $this->detectSeamonkey($ua); + $this->detectModernNetscape($ua); + $this->detectMosaic($ua); + $this->detectKonqueror($ua); + $this->detectOmniWeb($ua); + + /* Detect other various television browsers */ + $this->detectEspial($ua); + $this->detectMachBlue($ua); + $this->detectAnt($ua); + $this->detectSraf($ua); + + /* Detect other browsers */ + $this->detectDesktopBrowsers($ua); + $this->detectMobileBrowsers($ua); + $this->detectTelevisionBrowsers($ua); + $this->detectRemainingBrowsers($ua); + + return $this; + } + + private function &refineBrowser($ua) + { + $this->detectUCEngine($ua); + $this->detectLegacyNetscape($ua); + + return $this; + } + + + + + /* Safari */ + + private function detectSafari($ua) + { + if (preg_match('/Safari/u', $ua)) { + $falsepositive = false; + + if (preg_match('/Qt/u', $ua)) { + $falsepositive = true; + } + + if (!$falsepositive) { + if (isset($this->data->os->name) && $this->data->os->name == 'iOS') { + $this->data->browser->name = 'Safari'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->version = null; + $this->data->browser->stock = true; + + if (preg_match('/Version\/([0-9\.]+)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'hidden' => true ]); + } + } + + if (isset($this->data->os->name) && ($this->data->os->name == 'OS X' || $this->data->os->name == 'Windows')) { + $this->data->browser->name = 'Safari'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = $this->data->os->name == 'OS X'; + + if (preg_match('/Version\/([0-9\.]+)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/AppleWebKit\/[0-9\.]+\+/u', $ua)) { + $this->data->browser->name = 'WebKit Nightly Build'; + $this->data->browser->version = null; + } + } + } + } + + if (preg_match('/(?:Apple-PubSub|AppleSyndication)\//u', $ua)) { + $this->data->browser->name = 'Safari RSS'; + $this->data->browser->type = Constants\BrowserType::APP_FEEDREADER; + $this->data->browser->version = null; + $this->data->browser->stock = true; + + $this->data->os->name = 'OS X'; + $this->data->os->version = null; + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + + /* Chrome */ + + private function detectChrome($ua) + { + if (preg_match('/(?:Chrome|CrMo|CriOS)\/[0-9]/u', $ua) || preg_match('/Browser\/Chrome[0-9]/u', $ua)) { + $this->data->browser->name = 'Chrome'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + + $version = ''; + if (preg_match('/(?:Chrome|CrMo|CriOS)\/([0-9.]*)/u', $ua, $match)) { + $version = $match[1]; + } + if (preg_match('/Browser\/Chrome([0-9.]*)/u', $ua, $match)) { + $version = $match[1]; + } + $this->data->browser->version = new Version([ 'value' => $version ]); + + if (isset($this->data->os->name) && $this->data->os->name == 'Android') { + $channel = Data\Chrome::getChannel('mobile', $this->data->browser->version->value); + + if ($channel == 'stable') { + $this->data->browser->version->details = 1; + } elseif ($channel == 'beta') { + $this->data->browser->channel = 'Beta'; + } else { + $this->data->browser->channel = 'Dev'; + } + + + /* Webview for Android 4.4 and higher */ + if (implode('.', array_slice(explode('.', $version), 1, 2)) == '0.0' && (preg_match('/Version\//u', $ua) || preg_match('/Release\//u', $ua))) { + $this->data->browser->using = new Using([ 'name' => 'Chromium WebView', 'version' => new Version([ 'value' => explode('.', $version)[0] ]) ]); + $this->data->browser->type = Constants\BrowserType::UNKNOWN; + $this->data->browser->stock = true; + $this->data->browser->name = null; + $this->data->browser->version = null; + $this->data->browser->channel = null; + } + + /* Webview for Android 5 */ + if (preg_match('/; wv\)/u', $ua)) { + $this->data->browser->using = new Using([ 'name' => 'Chromium WebView', 'version' => new Version([ 'value' => explode('.', $version)[0] ]) ]); + $this->data->browser->type = Constants\BrowserType::UNKNOWN; + $this->data->browser->stock = true; + $this->data->browser->name = null; + $this->data->browser->version = null; + $this->data->browser->channel = null; + } + + /* LG Chromium based browsers */ + if (isset($this->data->device->manufacturer) && $this->data->device->manufacturer == 'LG') { + if (in_array($version, [ '30.0.1599.103', '34.0.1847.118', '38.0.2125.0', '38.0.2125.102' ]) && preg_match('/Version\/4/u', $ua) && !preg_match('/; wv\)/u', $ua)) { + $this->data->browser->name = "LG Browser"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = null; + } + } + + /* Samsung Chromium based browsers */ + if (isset($this->data->device->manufacturer) && $this->data->device->manufacturer == 'Samsung') { + + /* Version 1.0 */ + if ($version == '18.0.1025.308' && preg_match('/Version\/1.0/u', $ua)) { + $this->data->browser->name = "Samsung Internet"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => '1.0' ]); + } + + /* Version 1.5 */ + if ($version == '28.0.1500.94' && preg_match('/Version\/1.5/u', $ua)) { + $this->data->browser->name = "Samsung Internet"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => '1.5' ]); + } + + /* Version 1.6 */ + if ($version == '28.0.1500.94' && preg_match('/Version\/1.6/u', $ua)) { + $this->data->browser->name = "Samsung Internet"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => '1.6' ]); + } + + /* Version 2.0 */ + if ($version == '34.0.1847.76' && preg_match('/Version\/2.0/u', $ua)) { + $this->data->browser->name = "Samsung Internet"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => '2.0' ]); + } + + /* Version 2.1 */ + if ($version == '34.0.1847.76' && preg_match('/Version\/2.1/u', $ua)) { + $this->data->browser->name = "Samsung Internet"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => '2.1' ]); + } + } + + /* Samsung Chromium based browsers */ + if (preg_match('/SamsungBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = "Samsung Internet"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + + if (preg_match('/Mobile VR/', $ua)) { + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->model = 'Gear VR'; + $this->data->device->type = Constants\DeviceType::HEADSET; + } + } + + /* Oculus Chromium based browsers */ + if (preg_match('/OculusBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = "Oculus Browser"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + + if (preg_match('/Mobile VR/', $ua)) { + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->model = 'Gear VR'; + $this->data->device->type = Constants\DeviceType::HEADSET; + } + + if (preg_match('/Pacific/', $ua)) { + $this->data->device->manufacturer = 'Oculus'; + $this->data->device->model = 'Go'; + $this->data->device->type = Constants\DeviceType::HEADSET; + } + } + } elseif (isset($this->data->os->name) && $this->data->os->name == 'Linux' && preg_match('/SamsungBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = "Samsung Internet"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + + $this->data->os->name = 'Android'; + $this->data->os->version = null; + + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->model = 'DeX'; + $this->data->device->identifier = ''; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->type = Constants\DeviceType::DESKTOP; + } else { + $channel = Data\Chrome::getChannel('desktop', $version); + + if ($channel == 'stable') { + if (explode('.', $version)[1] == '0') { + $this->data->browser->version->details = 1; + } else { + $this->data->browser->version->details = 2; + } + } elseif ($channel == 'beta') { + $this->data->browser->channel = 'Beta'; + } else { + $this->data->browser->channel = 'Dev'; + } + } + + if ($this->data->device->type == '') { + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + /* Google Chromium */ + + if (preg_match('/Chromium/u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->channel = ''; + $this->data->browser->name = 'Chromium'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Chromium\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + if ($this->data->device->type == '') { + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + /* Chrome Content Shell */ + + if (preg_match('/Chrome\/[0-9]+\.77\.34\.5/u', $ua)) { + $this->data->browser->using = new Using([ 'name' => 'Chrome Content Shell' ]); + + $this->data->browser->type = Constants\BrowserType::UNKNOWN; + $this->data->browser->stock = false; + $this->data->browser->name = null; + $this->data->browser->version = null; + $this->data->browser->channel = null; + } + + /* Chromium WebView by Amazon */ + + if (preg_match('/AmazonWebAppPlatform\//u', $ua)) { + $this->data->browser->using = new Using([ 'name' => 'Amazon WebView' ]); + + $this->data->browser->type = Constants\BrowserType::UNKNOWN; + $this->data->browser->stock = false; + $this->data->browser->name = null; + $this->data->browser->version = null; + $this->data->browser->channel = null; + } + + /* Chromium WebView by Crosswalk */ + + if (preg_match('/Crosswalk\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->using = new Using([ 'name' => 'Crosswalk WebView', 'version' => new Version([ 'value' => $match[1], 'details' => 1 ]) ]); + + $this->data->browser->type = Constants\BrowserType::UNKNOWN; + $this->data->browser->stock = false; + $this->data->browser->name = null; + $this->data->browser->version = null; + $this->data->browser->channel = null; + } + + /* Set the browser family */ + + if ($this->data->isBrowser('Chrome') || $this->data->isBrowser('Chromium')) { + $this->data->browser->family = new Family([ + 'name' => 'Chrome', + 'version' => !empty($this->data->browser->version) ? new Version([ 'value' => $this->data->browser->version->getMajor() ]) : null + ]); + } + } + + + /* Internet Explorer */ + + private function detectExplorer($ua) + { + if (preg_match('/\(IE ([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Internet Explorer'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/Browser\/IE([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Internet Explorer'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/MSIE/u', $ua)) { + $this->data->browser->name = 'Internet Explorer'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/IEMobile/u', $ua) || preg_match('/Windows CE/u', $ua) || preg_match('/Windows Phone/u', $ua) || preg_match('/WP7/u', $ua) || preg_match('/WPDesktop/u', $ua)) { + $this->data->browser->name = 'Mobile Internet Explorer'; + + if (isset($this->data->device->model) && ($this->data->device->model == 'Xbox 360' || $this->data->device->model == 'Xbox One')) { + $this->data->browser->name = 'Internet Explorer'; + } + } + + if (preg_match('/MSIE ([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => preg_replace("/\.([0-9])([0-9])/", '.$1.$2', $match[1]) ]); + } + + if (preg_match('/Mac_/u', $ua)) { + $this->data->os->name = 'Mac OS'; + $this->data->engine->name = 'Tasman'; + $this->data->device->type = Constants\DeviceType::DESKTOP; + + if (!empty($this->data->browser->version)) { + if ($this->data->browser->version->is('>=', '5.1.1') && $this->data->browser->version->is('<=', '5.1.3')) { + $this->data->os->name = 'OS X'; + } + + if ($this->data->browser->version->is('>=', '5.2')) { + $this->data->os->name = 'OS X'; + } + } + } + } + + if (preg_match('/Trident\/[789][^\)]+; rv:([0-9.]*)\)/u', $ua, $match)) { + $this->data->browser->name = 'Internet Explorer'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/Trident\/[789][^\)]+; Touch; rv:([0-9.]*);\s+IEMobile\//u', $ua, $match)) { + $this->data->browser->name = 'Mobile Internet Explorer'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/Trident\/[789][^\)]+; Touch; rv:([0-9.]*); WPDesktop/u', $ua, $match)) { + $this->data->browser->mode = 'desktop'; + $this->data->browser->name = 'Mobile Internet Explorer'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + /* Old versions of Pocket Internet Explorer */ + + if ($this->data->isBrowser('Mobile Internet Explorer', '<', 6)) { + $this->data->browser->name = 'Pocket Internet Explorer'; + } + + if (preg_match('/Microsoft Pocket Internet Explorer\//u', $ua)) { + $this->data->browser->name = 'Pocket Internet Explorer'; + $this->data->browser->version = new Version([ 'value' => '1.0' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/MSPIE ([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Pocket Internet Explorer2'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* Microsoft Mobile Explorer */ + + if (preg_match('/MMEF([0-9])([0-9])/u', $ua, $match)) { + $this->data->browser->name = 'Microsoft Mobile Explorer'; + $this->data->browser->version = new Version([ 'value' => $match[1] . '.' . $match[2] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/MMEF[0-9]+; ([^;]+); ([^\)\/]+)/u', $ua, $match)) { + $device = Data\DeviceModels::identify('feature', $match[1] == 'CellPhone' ? $match[2] : $match[1] . ' ' . $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + + /* Set the browser family */ + + if ($this->data->isBrowser('Internet Explorer') || $this->data->isBrowser('Mobile Internet Explorer') || $this->data->isBrowser('Pocket Internet Explorer')) { + unset($this->data->browser->family); + } + } + + + /* Edge */ + + private function detectEdge($ua) + { + if (preg_match('/Edge\/([0-9]+)/u', $ua, $match)) { + $this->data->browser->name = 'Edge'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->channel = ''; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 1 ]); + + unset($this->data->browser->family); + } + + if (preg_match('/Edg(iOS|A)\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Edge'; + $this->data->browser->version = new Version([ 'value' => $match[2], 'details' => 1, 'hidden' => true ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } + + + /* Opera */ + + private function detectOpera($ua) + { + if (!preg_match('/(OPR|OMI|Opera|OPiOS|Coast|Oupeng)/ui', $ua)) { + return; + } + + if (preg_match('/OPR\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->channel = ''; + $this->data->browser->name = 'Opera'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Edition Developer/iu', $ua)) { + $this->data->browser->channel = 'Developer'; + } + + if (preg_match('/Edition Next/iu', $ua)) { + $this->data->browser->channel = 'Next'; + } + + if (preg_match('/Edition Beta/iu', $ua)) { + $this->data->browser->channel = 'Beta'; + } + + if ($this->data->device->type == Constants\DeviceType::MOBILE) { + $this->data->browser->name = 'Opera Mobile'; + } + } + + if (preg_match('/OMI\/([0-9]+\.[0-9]+)/u', $ua, $match)) { + $this->data->browser->name = 'Opera Devices'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->type = Constants\DeviceType::TELEVISION; + + if (!$this->data->isOs('Android')) { + unset($this->data->os->name); + unset($this->data->os->version); + } + } + + if ((preg_match('/Opera[\/\-\s]/iu', $ua) || preg_match('/Browser\/Opera/iu', $ua)) && !preg_match('/Opera Software/iu', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Opera'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Opera[\/| ]?([0-9.]+)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/Version\/([0-9.]+)/u', $ua, $match)) { + if (floatval($match[1]) >= 10) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + } + + if (isset($this->data->browser->version) && preg_match('/Edition Labs/u', $ua)) { + $this->data->browser->channel = 'Labs'; + } + + if (isset($this->data->browser->version) && preg_match('/Edition Next/u', $ua)) { + $this->data->browser->channel = 'Next'; + } + + if (preg_match('/Opera Tablet/u', $ua)) { + $this->data->browser->name = 'Opera Mobile'; + $this->data->device->type = Constants\DeviceType::TABLET; + } + + if (preg_match('/Opera Mobi/u', $ua)) { + $this->data->browser->name = 'Opera Mobile'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/Opera Mini;/u', $ua)) { + $this->data->browser->name = 'Opera Mini'; + $this->data->browser->version = null; + $this->data->browser->mode = 'proxy'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/Opera Mini\/(?:att\/)?([0-9.]+)/u', $ua, $match)) { + $this->data->browser->name = 'Opera Mini'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => (intval(substr(strrchr($match[1], '.'), 1)) > 99 ? -1 : null) ]); + $this->data->browser->mode = 'proxy'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if ($this->data->browser->name == 'Opera' && $this->data->device->type == Constants\DeviceType::MOBILE) { + $this->data->browser->name = 'Opera Mobile'; + } + + if (preg_match('/InettvBrowser/u', $ua)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + if (preg_match('/Opera[ -]TV/u', $ua)) { + $this->data->browser->name = 'Opera'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + if (preg_match('/Linux zbov/u', $ua)) { + $this->data->browser->name = 'Opera Mobile'; + $this->data->browser->mode = 'desktop'; + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->os->name = null; + $this->data->os->version = null; + } + + if (preg_match('/Linux zvav/u', $ua)) { + $this->data->browser->name = 'Opera Mini'; + $this->data->browser->version = null; + $this->data->browser->mode = 'desktop'; + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->os->name = null; + $this->data->os->version = null; + } + + if ($this->data->device->type == '') { + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (isset($this->data->browser->family)) { + unset($this->data->browser->family); + } + } + + if (preg_match('/OPiOS\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Opera Mini'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/Coast\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Coast by Opera'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/Oupeng(?:HD)?[\/-]([0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Opera Oupeng'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } + + + /* Firefox */ + + private function detectFirefox($ua) + { + if (!preg_match('/(Firefox|GranParadiso|Namoroka|Shiretoko|Minefield|BonEcho|Fennec|Phoenix|Firebird|Minimo|FxiOS)/ui', $ua)) { + return; + } + + if (preg_match('/Firefox/u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Firefox'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Firefox\/([0-9ab.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + + if (preg_match('/a/u', $match[1])) { + $this->data->browser->channel = 'Aurora'; + } + + if (preg_match('/b/u', $match[1])) { + $this->data->browser->channel = 'Beta'; + } + } + + if (preg_match('/Aurora\/([0-9ab.]*)/u', $ua, $match)) { + $this->data->browser->channel = 'Aurora'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/Fennec/u', $ua)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/Mobile;(?: ([^;]+);)? rv/u', $ua, $match)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (isset($match[1])) { + $device = Data\DeviceModels::identify('firefoxos', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!$this->data->isOs('KaiOS')) { + $this->data->os->reset([ 'name' => 'Firefox OS' ]); + } + } + } + } + + if (preg_match('/Tablet;(?: ([^;]+);)? rv/u', $ua, $match)) { + $this->data->device->type = Constants\DeviceType::TABLET; + } + + if (preg_match('/Viera;(?: ([^;]+);)? rv/u', $ua, $match)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->os->reset([ 'name' => 'Firefox OS' ]); + } + + if ($this->data->device->type == Constants\DeviceType::MOBILE || $this->data->device->type == Constants\DeviceType::TABLET) { + $this->data->browser->name = 'Firefox Mobile'; + } + + if ($this->data->device->type == '') { + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + + if (preg_match('/(GranParadiso|Namoroka|Shiretoko|Minefield|BonEcho)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Firefox'; + $this->data->browser->channel = str_replace('GranParadiso', 'Gran Paradiso', $match[1]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/' . $match[1] . '\/([0-9ab.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + } + + if (preg_match('/Fennec/u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Firefox Mobile'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Fennec\/([0-9ab.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->browser->channel = 'Fennec'; + } + + if (preg_match('/(Phoenix|Firebird|Minimo)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = $match[1]; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/' . $match[1] . '\/([0-9ab.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + } + + if (preg_match('/FxiOS\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Firefox'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/Servo\/1.0 Firefox\//u', $ua)) { + $this->data->browser->name = 'Servo Nightly Build'; + $this->data->browser->version = null; + } + + + /* Set the browser family */ + + if ($this->data->isBrowser('Firefox') || $this->data->isBrowser('Firefox Mobile') || $this->data->isBrowser('Firebird')) { + $this->data->browser->family = new Family([ 'name' => 'Firefox', 'version' => $this->data->browser->version ]); + } + + if ($this->data->isBrowser('Minimo')) { + $this->data->browser->family = new Family([ 'name' => 'Firefox' ]); + } + } + + + /* Seamonkey */ + + private function detectSeamonkey($ua) + { + if (preg_match('/SeaMonkey/u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'SeaMonkey'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/SeaMonkey\/([0-9ab.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + } + + if (preg_match('/PmWFx\/([0-9ab.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'SeaMonkey'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } + + + /* Netscape */ + + private function detectLegacyNetscape($ua) + { + if ($this->data->device->type == Constants\DeviceType::DESKTOP && $this->data->browser->getName() == '') { + if (!preg_match('/compatible;/u', $ua)) { + if (preg_match('/Mozilla\/([123].[0-9]+)/u', $ua, $match)) { + $this->data->browser->name = 'Netscape Navigator'; + $this->data->browser->version = new Version([ 'value' => preg_replace("/([0-9])([0-9])/", '$1.$2', $match[1]) ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/Mozilla\/(4.[0-9]+)/u', $ua, $match)) { + $this->data->browser->name = 'Netscape Communicator'; + $this->data->browser->version = new Version([ 'value' => preg_replace("/([0-9])([0-9])/", '$1.$2', $match[1]) ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Nav\)/u', $ua)) { + $this->data->browser->name = 'Netscape Navigator'; + } + } + } + } + } + + private function detectModernNetscape($ua) + { + if (preg_match('/Netscape/u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Netscape'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Netscape[0-9]?\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + } + + if (preg_match('/ Navigator\/(9\.[0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'Netscape Navigator'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + } + + + /* Mosaic */ + + private function detectMosaic($ua) + { + if (!preg_match('/Mosaic/ui', $ua)) { + return; + } + + if (preg_match('/(?:NCSA[ _])?Mosaic(?:\(tm\))?(?: for the X Window System| for Windows)?\/(?:Version )?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'NCSA Mosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/AIR_Mosaic(?:\(16bit\))?\/v([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'AIR Mosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/(?:MosaicView|Spyglass[ _]Mosaic)\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Spyglass Mosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/SPRY_Mosaic(?:\(16bit\))?\/v([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'SPRY Mosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/DCL SuperMosaic\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'SuperMosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/VMS_Mosaic\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'VMS Mosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/mMosaic\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'mMosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/Quarterdeck Mosaic Version ([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Quarterdeck Mosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/WinMosaic\/Version ([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'WinMosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + } + + if (preg_match('/Device Mosaic ([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Device Mosaic'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->family = new Family([ 'name' => 'Mosaic' ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->stock = false; + + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + } + + + /* UC Browser */ + + private function detectUC($ua) + { + if (!preg_match('/(UC|UBrowser)/ui', $ua)) { + return; + } + + if (preg_match('/UCWEB/u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + unset($this->data->browser->channel); + + if (preg_match('/UCWEB\/?([0-9]*[.][0-9]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (!$this->data->device->type) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (isset($this->data->os->name) && $this->data->os->name == 'Linux') { + $this->data->os->reset(); + } + + if (preg_match('/^IUC ?\(U; ?iOS ([0-9\._]+);/u', $ua, $match)) { + $this->data->os->name = 'iOS'; + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + + if (preg_match('/^JUC ?\(Linux; ?U; ?(?:Android)? ?([0-9\.]+)[^;]*; ?[^;]+; ?([^;]*[^\s])\s*; ?[0-9]+\*[0-9]+;?\)/u', $ua, $match)) { + $this->data->os->name = 'Android'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + + $this->data->device = Data\DeviceModels::identify('android', $match[2]); + } + + if (preg_match('/\(MIDP-2.0; U; [^;]+; ([^;]*[^\s])\)/u', $ua, $match)) { + $this->data->os->name = 'Android'; + + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('android', $match[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/\((?:Linux|MIDP-2.0); U; Adr ([0-9\.]+)(?:-update[0-9])?; [^;]+; ([^;]*[^\s])\)/u', $ua, $match)) { + $this->data->os->name = 'Android'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('android', $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/\((?:iOS|iPhone);/u', $ua)) { + $this->data->os->name = 'iOS'; + $this->data->os->version = new Version([ 'value' => '1.0' ]); + + if (preg_match('/OS[_ ]([0-9_]*);/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + + if (preg_match('/; ([^;]+)\)/u', $ua, $match)) { + $device = Data\DeviceModels::identify('ios', $match[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + if (preg_match('/\(Symbian;/u', $ua)) { + $this->data->os->name = 'Series60'; + $this->data->os->version = null; + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + + if (preg_match('/S60 V([0-9])/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/; Nokia([^;]+)\)/iu', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('symbian', $match[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + if (preg_match('/\(Windows;/u', $ua)) { + $this->data->os->name = 'Windows Phone'; + $this->data->os->version = null; + + if (preg_match('/wds ([0-9]+\.[0-9])/u', $ua, $match)) { + switch ($match[1]) { + case '7.1': + $this->data->os->version = new Version([ 'value' => '7.5' ]); + break; + case '8.0': + $this->data->os->version = new Version([ 'value' => '8.0' ]); + break; + case '8.1': + $this->data->os->version = new Version([ 'value' => '8.1' ]); + break; + case '10.0': + $this->data->os->version = new Version([ 'value' => '10.0' ]); + break; + } + } + + if (preg_match('/; ([^;]+); ([^;]+)\)/u', $ua, $match)) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + } + + if (preg_match('/Ucweb\/([0-9]*[.][0-9]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/ucweb-squid/u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + unset($this->data->browser->channel); + } + + if (preg_match('/\) ?UC /u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + unset($this->data->browser->version); + unset($this->data->browser->channel); + unset($this->data->browser->mode); + + if ($this->data->device->type == Constants\DeviceType::DESKTOP) { + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->browser->mode = 'desktop'; + } + } + + if (preg_match('/UC ?Browser\/?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + unset($this->data->browser->channel); + + if (!$this->data->device->type) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + } + + if (preg_match('/UBrowser\/?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + unset($this->data->browser->channel); + } + + if (preg_match('/UCLite\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + unset($this->data->browser->channel); + } + + /* U2 is the Proxy service used by UC Browser on low-end phones */ + if (preg_match('/U2\//u', $ua)) { + $this->data->browser->stock = false; + $this->data->browser->name = 'UC Browser'; + $this->data->browser->mode = 'proxy'; + + $this->data->engine->name = 'Gecko'; + + /* UC Browser running on Windows 8 is identifing itself as U2, but instead its a Trident Webview */ + if (isset($this->data->os->name) && isset($this->data->os->version)) { + if ($this->data->os->name == 'Windows Phone' && $this->data->os->version->toFloat() >= 8) { + $this->data->engine->name = 'Trident'; + $this->data->browser->mode = ''; + } + } + + if ($this->data->device->identified < Constants\Id::MATCH_UA && preg_match('/; ([^;]*)\) U2\//u', $ua, $match)) { + $device = Data\DeviceModels::identify('android', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || ($this->data->os->name != 'Android' && (!isset($this->data->os->family) || $this->data->os->family->getName() != 'Android'))) { + $this->data->os->name = 'Android'; + } + } + } + } + + /* U3 is the Webkit based Webview used on Android phones */ + if (preg_match('/U3\//u', $ua)) { + $this->data->engine->name = 'Webkit'; + } + } + + private function detectUCEngine($ua) + { + if (isset($this->data->browser->name)) { + if ($this->data->browser->name == 'UC Browser') { + if (!preg_match("/UBrowser\//", $ua) && ($this->data->device->type == 'desktop' || (isset($this->data->os->name) && ($this->data->os->name == 'Windows' || $this->data->os->name == 'OS X')))) { + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->browser->mode = 'desktop'; + $this->data->engine->reset(); + $this->data->os->reset(); + } elseif (!isset($this->data->os->name) || ($this->data->os->name != 'iOS' && $this->data->os->name != 'Windows Phone' && $this->data->os->name != 'Windows' && $this->data->os->name != 'Android' && (!isset($this->data->os->family) || $this->data->os->family->getName() != 'Android'))) { + $this->data->engine->name = 'Gecko'; + unset($this->data->engine->version); + $this->data->browser->mode = 'proxy'; + } + + if (isset($this->data->engine->name) && $this->data->engine->name == 'Presto') { + $this->data->engine->name = 'Webkit'; + unset($this->data->engine->version); + } + } + } + } + + + /* Netfront */ + + private function detectNetfront($ua) + { + if (!preg_match('/(CNF|NF|NetFront|NX|Ave|COM2)/ui', $ua)) { + return; + } + + /* Compact NetFront */ + + if (preg_match('/CNF\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Compact NetFront'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* NetFront */ + + if (preg_match('/Net[fF]ront/u', $ua) && !preg_match('/NetFrontNX/u', $ua)) { + $this->data->browser->name = 'NetFront'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + unset($this->data->browser->channel); + + if (preg_match('/NetFront[ \/]?([0-9.]*)/ui', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + /* Detect device type based on NetFront identifier */ + + if (preg_match('/MobilePhone/u', $ua)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/DigitalMediaPlayer/u', $ua)) { + $this->data->device->type = Constants\DeviceType::MEDIA; + } + + if (preg_match('/PDA/u', $ua)) { + $this->data->device->type = Constants\DeviceType::PDA; + } + + if (preg_match('/MFP/u', $ua)) { + $this->data->device->type = Constants\DeviceType::PRINTER; + } + + if (preg_match('/(InettvBrowser|HbbTV|DTV|NetworkAVTV|BDPlayer)/u', $ua)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + if (preg_match('/VCC/u', $ua)) { + $this->data->device->type = Constants\DeviceType::CAR; + } + + if (preg_match('/Kindle/u', $ua)) { + $this->data->device->type = Constants\DeviceType::EREADER; + } + + if (empty($this->data->device->type)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* Detect OS based on NetFront identifier */ + + if (preg_match('/NF[0-9][0-9](?:WMPRO|PPC)\//ui', $ua, $match)) { + if (!$this->data->isOs('Windows Mobile')) { + $this->data->os->reset([ + 'name' => 'Windows Mobile' + ]); + } + } + } + + if (preg_match('/(?:Browser\/(?:NF|NetFr?ont-)|NF-Browser\/|ACS-NF\/|NetFront FullBrowser\/)([0-9.]*)/ui', $ua, $match)) { + $this->data->browser->name = 'NetFront'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + unset($this->data->browser->channel); + + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* AVE-Front */ + + if (preg_match('/(?:AVE-Front|AveFront)\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'NetFront'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Category=([^\);]+)[\);]/u', $ua, $match)) { + switch ($match[1]) { + case 'WebPhone': + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->subtype = Constants\DeviceSubType::DESKTOP; + break; + case 'WP': + case 'Home Mail Tool': + case 'PDA': + $this->data->device->type = Constants\DeviceType::PDA; + break; + case 'STB': + $this->data->device->type = Constants\DeviceType::TELEVISION; + break; + case 'GAME': + $this->data->device->type = Constants\DeviceType::GAMING; + $this->data->device->subtype = Constants\DeviceSubType::CONSOLE; + break; + } + } + + if (preg_match('/Product=([^\);]+)[\);]/u', $ua, $match)) { + if (in_array($match[1], [ 'ACCESS/NFPS', 'SUNSOFT/EnjoyMagic' ])) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation 2', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + } + } + + /* Netfront NX */ + + if (preg_match('/NX[\/ ]([0-9.]+)/u', $ua, $match)) { + $this->data->browser->name = 'NetFront NX'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + unset($this->data->browser->channel); + + if (empty($this->data->device->type) || $this->data->isType('desktop')) { + if (preg_match('/(DTV|HbbTV)/iu', $ua)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + } else { + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + $this->data->os->reset(); + } + + /* The Sony Mylo 2 identifies as Firefox 2, but is NetFront */ + + if (preg_match('/Sony\/COM2/u', $ua, $match)) { + $this->data->browser->reset([ + 'name' => 'NetFront', + 'type' => Constants\BrowserType::BROWSER + ]); + } + } + + + /* Obigo */ + + private function detectObigo($ua) + { + $processObigoVersion = function ($version) { + $result = [ + 'value' => $version + ]; + + if (preg_match('/[0-9.]+/', $version, $match)) { + $result['details'] = 2; + } + + if (preg_match('/([0-9])[A-Z]/', $version, $match)) { + $result['value'] = intval($match[1]); + $result['alias'] = $version; + } + + return $result; + }; + + if (preg_match('/(?:Obigo|Teleca|AU-MIC|MIC\/)/ui', $ua)) { + $this->data->browser->name = 'Obigo'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Obigo\/0?([0-9.]+)/iu', $ua, $match)) { + $this->data->browser->version = new Version($processObigoVersion($match[1])); + } elseif (preg_match('/(?:MIC|TelecaBrowser)\/(WAP|[A-Z])?0?([0-9.]+[A-Z]?)/iu', $ua, $match)) { + $this->data->browser->version = new Version($processObigoVersion($match[2])); + if (!empty($match[1])) { + $this->data->browser->name = 'Obigo ' . strtoupper($match[1]); + } + } elseif (preg_match('/(?:Obigo(?:InternetBrowser|[- ]Browser)?|Teleca)\/(WAP|[A-Z])?[0O]?([0-9.]+[A-Z]?)/ui', $ua, $match)) { + $this->data->browser->version = new Version($processObigoVersion($match[2])); + if (!empty($match[1])) { + $this->data->browser->name = 'Obigo ' . strtoupper($match[1]); + } + } elseif (preg_match('/(?:Obigo|Teleca)[- ]([WAP|[A-Z])?0?([0-9.]+[A-Z]?)(?:[0-9])?(?:[\/;]|$)/ui', $ua, $match)) { + $this->data->browser->version = new Version($processObigoVersion($match[2])); + if (!empty($match[1])) { + $this->data->browser->name = 'Obigo ' . strtoupper($match[1]); + } + } elseif (preg_match('/Browser\/(?:Obigo|Teleca)[_-]?(?:Browser\/)?(WAP|[A-Z])?0?([0-9.]+[A-Z]?)/ui', $ua, $match)) { + $this->data->browser->version = new Version($processObigoVersion($match[2])); + if (!empty($match[1])) { + $this->data->browser->name = 'Obigo ' . strtoupper($match[1]); + } + } elseif (preg_match('/Obigo Browser (WAP|[A-Z])?0?([0-9.]+[A-Z]?)/ui', $ua, $match)) { + $this->data->browser->version = new Version($processObigoVersion($match[2])); + if (!empty($match[1])) { + $this->data->browser->name = 'Obigo ' . strtoupper($match[1]); + } + } + } + + if (preg_match('/(Q)0?([0-9][A-Z])/u', $ua, $match)) { + $this->data->browser->name = 'Obigo ' . $match[1]; + $this->data->browser->version = new Version($processObigoVersion($match[2])); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } + + + /* ANT Galio and ANT Fresco */ + + private function detectAnt($ua) + { + if (preg_match('/ANTFresco\/([0-9.]+)/iu', $ua, $match)) { + $this->data->browser->name = 'ANT Fresco'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/ANTGalio\/([0-9.]+)/iu', $ua, $match)) { + $this->data->browser->name = 'ANT Galio'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } + + + /* Seraphic Sraf */ + + private function detectSraf($ua) + { + if (preg_match('/sraf_tv_browser/u', $ua)) { + $this->data->browser->name = 'Seraphic Sraf'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + if (preg_match('/SRAF\/([0-9.]+)/iu', $ua, $match)) { + $this->data->browser->name = 'Seraphic Sraf'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + } + + + /* MachBlue */ + + private function detectMachBlue($ua) + { + if (preg_match('/mbxtWebKit\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = ''; + $this->data->browser->name = 'MachBlue XT'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + if ($ua == 'MachBlue') { + $this->data->os->name = ''; + $this->data->browser->name = 'MachBlue XT'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } + + + /* Espial */ + + private function detectEspial($ua) + { + if (preg_match('/Espial/u', $ua)) { + $this->data->browser->name = 'Espial'; + $this->data->browser->channel = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->os->name = ''; + $this->data->os->version = null; + + if ($this->data->device->type != Constants\DeviceType::TELEVISION) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->manufacturer = null; + $this->data->device->model = null; + } + + if (preg_match('/Espial(?: Browser|TVBrowser)?\/(?:sig)?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/;(L6200|L7200)/u', $ua, $match)) { + $this->data->device->manufacturer = 'Toshiba'; + $this->data->device->model = 'Regza ' . $match[1]; + $this->data->device->series = 'Smart TV'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + } + } + + + /* Iris */ + + private function detectIris($ua) + { + if (preg_match('/Iris\//u', $ua)) { + $this->data->browser->name = 'Iris'; + $this->data->browser->hidden = false; + $this->data->browser->stock = false; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Iris\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/ WM([0-9]) /u', $ua, $match)) { + $this->data->device->reset(); + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->os->reset(); + $this->data->os->name = 'Windows Mobile'; + $this->data->os->version = new Version([ 'value' => $match[1] . '.0' ]); + } + + if (preg_match('/Windows NT/u', $ua, $match)) { + $this->data->browser->mode = 'desktop'; + + $this->data->device->reset(); + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->os->reset(); + $this->data->os->name = 'Windows Mobile'; + } + } + } + + + /* Dolfin */ + + private function detectDolfin($ua) + { + if (preg_match('/(Dolfin|Jasmine)/u', $ua)) { + $this->data->browser->name = 'Dolfin'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/(?:Dolfin|Jasmine)\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/Browser\/Dolfin([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + } + } + + + /* WebOS */ + + private function detectWebOSBrowser($ua) + { + if (preg_match('/wOSBrowser/u', $ua)) { + $this->data->browser->name = 'webOS Browser'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if ($this->data->os->name != 'webOS') { + $this->data->os->name = 'webOS'; + } + + if (isset($this->data->device->manufacturer) && $this->data->device->manufacturer == 'Apple') { + unset($this->data->device->manufacturer); + unset($this->data->device->model); + unset($this->data->device->identifier); + $this->data->device->identified = Constants\Id::NONE; + } + } + } + + + /* Sailfish */ + + private function detectSailfishBrowser($ua) + { + if (preg_match('/Sailfish ?Browser/u', $ua)) { + $this->data->browser->name = 'Sailfish Browser'; + $this->data->browser->stock = true; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Sailfish ?Browser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + } + } + + + /* Silk */ + + private function detectSilk($ua) + { + if (preg_match('/Silk/u', $ua)) { + if (preg_match('/Silk-Accelerated/u', $ua) || !preg_match('/PlayStation/u', $ua)) { + $this->data->browser->name = 'Silk'; + $this->data->browser->channel = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Silk\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + if (preg_match('/; ([^;]*[^;\s])\s+Build/u', $ua, $match)) { + $this->data->device = Data\DeviceModels::identify('android', $match[1]); + } + + if (!$this->data->device->identified) { + $this->data->device->manufacturer = 'Amazon'; + $this->data->device->model = 'Kindle Fire'; + $this->data->device->type = Constants\DeviceType::TABLET; + $this->data->device->identified |= Constants\Id::INFER; + + if (isset($this->data->os->name) && ($this->data->os->name != 'Android' || $this->data->os->name != 'FireOS')) { + $this->data->os->name = 'FireOS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->alias = null; + $this->data->os->version = null; + } + } + } + } + } + + + /* Nokia */ + + private function detectNokiaBrowser($ua) + { + if (!preg_match('/(BrowserNG|Nokia|OSRE|Ovi|Maemo)/ui', $ua)) { + return; + } + + /* Nokia Browser */ + + if (preg_match('/BrowserNG/u', $ua)) { + $this->data->browser->name = 'Nokia Browser'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/BrowserNG\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3, 'builds' => false ]); + } + } + + if (preg_match('/NokiaBrowser/u', $ua)) { + $this->data->browser->name = 'Nokia Browser'; + $this->data->browser->channel = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/NokiaBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + } + + if (preg_match('/Nokia-Communicator-WWW-Browser/u', $ua)) { + $this->data->browser->name = 'Nokia Browser'; + $this->data->browser->channel = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Nokia-Communicator-WWW-Browser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + } + + + /* Nokia Xpress for S30+, S40 and Windows Phone */ + + if (preg_match('/OSRE/u', $ua)) { + $this->data->browser->name = 'Nokia Xpress'; + $this->data->browser->mode = 'proxy'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->os->name = null; + $this->data->os->version = null; + } + + if (preg_match('/S40OviBrowser/u', $ua)) { + $this->data->browser->name = 'Nokia Xpress'; + $this->data->browser->mode = 'proxy'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/S40OviBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (preg_match('/Nokia([^\/]+)\//u', $ua, $match)) { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + if (isset($this->data->device->model)) { + $device = Data\DeviceModels::identify('s40', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (isset($this->data->device->model)) { + $device = Data\DeviceModels::identify('asha', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->os->name = 'Nokia Asha Platform'; + $this->data->os->version = new Version([ 'value' => '1.0' ]); + $this->data->device = $device; + + + if (preg_match('/java_runtime_version=Nokia_Asha_([0-9_]+);/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + } + } + } + + if (preg_match('/NOKIALumia([0-9]+)/u', $ua, $match)) { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + $this->data->os->name = 'Windows Phone'; + } + } + } + + + /* MicroB - the default browser for maemo */ + + if (preg_match('/Maemo[ |_]Browser/u', $ua)) { + $this->data->browser->name = 'MicroB'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Maemo[ |_]Browser[ |_]([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + } + } + + + /* Konqueror */ + + private function detectKonqueror($ua) + { + if (preg_match('/[k|K]onqueror\//u', $ua)) { + $this->data->browser->name = 'Konqueror'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/[k|K]onqueror\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + if ($this->data->device->type == '') { + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + } + + + /* OmniWeb */ + + private function detectOmniWeb($ua) + { + if (preg_match('/OmniWeb/u', $ua)) { + $this->data->browser->name = 'OmniWeb'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->version = null; + + if (preg_match('/OmniWeb\/v?([0-9])[0-9][0-9]/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 1 ]); + } + + if (preg_match('/OmniWeb\/([0-9]\.[0-9\.]+)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + $this->data->device->reset([ + 'type' => Constants\DeviceType::DESKTOP + ]); + + if (!empty($this->data->browser->version)) { + if ($this->data->browser->version->is('<', 3)) { + $this->data->os->name = 'NextStep'; + $this->data->os->version = null; + } + + if ($this->data->browser->version->is('>=', 4)) { + if (empty($this->data->os->name) || $this->data->os->name != 'OS X') { + $this->data->os->name = 'OS X'; + $this->data->os->version = null; + } + } + } + } + } + + + /* Other browsers */ + + private function detectDesktopBrowsers($ua) + { + if (!preg_match('/(WebPositive|WebExplorer|WorldWideweb|Midori|Maxthon|Browse)/ui', $ua)) { + return; + } + + /* WebPositive */ + + if (preg_match('/WebPositive/u', $ua, $match)) { + $this->data->browser->name = 'WebPositive'; + $this->data->browser->channel = ''; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/WebPositive\/([0-9]\.[0-9.]+)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + } + + /* IBM WebExplorer */ + + if (preg_match('/IBM[- ]WebExplorer[ -]?(DLL ?|Window API ?)?/u', $ua)) { + $this->data->browser->name = 'IBM WebExplorer'; + $this->data->browser->channel = ''; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/IBM[- ]WebExplorer[ -]?(?:DLL ?|Window API ?)?\/v([0-9]\.[0-9\.]+)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->os->name = 'OS/2'; + $this->data->device->type = 'desktop'; + } + + /* WorldWideweb */ + + if (preg_match('/WorldWideweb \(NEXT\)/u', $ua, $match)) { + $this->data->browser->name = 'WorldWideWeb'; + $this->data->browser->channel = ''; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->os->name = 'NextStep'; + $this->data->device->type = 'desktop'; + } + + /* Midori */ + + if (preg_match('/Midori\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Midori'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->manufacturer = null; + $this->data->device->model = null; + $this->data->device->type = Constants\DeviceType::DESKTOP; + + if (isset($this->data->os->name) && $this->data->os->name == 'OS X') { + $this->data->os->name = null; + $this->data->os->version = null; + } + } + + if (preg_match('/midori(?:\/[0-9.]*)?$/u', $ua)) { + $this->data->browser->name = 'Midori'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->type = Constants\DeviceType::DESKTOP; + + if (preg_match('/midori\/([0-9.]*)$/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + } + + /* Maxthon */ + + if (preg_match('/Maxthon/iu', $ua, $match)) { + $this->data->browser->name = 'Maxthon'; + $this->data->browser->channel = ''; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Maxthon[\/\' ]\(?([0-9.]*)\)?/iu', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (isset($this->data->os->name) && $this->data->browser->version && $this->data->os->name == 'Windows' && $this->data->browser->version->toFloat() < 4) { + $this->data->browser->version->details = 1; + } + } + + /* Browse for Remix OS */ + + if (preg_match('/^Browse\/([0-9.]+)/u', $ua, $match)) { + $this->data->browser->name = 'Browse'; + $this->data->browser->channel = ''; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } + + private function detectMobileBrowsers($ua) + { + if (!preg_match('/(Ninesky|Skyfire|Dolphin|QQ|360|QHBrowser|Mercury|iBrowser|Puffin|MiniB|MxNitro|Sogou|Xiino|Palmscape|WebPro|Vision|MiuiBrowser)/ui', $ua)) { + return; + } + + /* Xiaomi MIUI Browser */ + + if (preg_match('/MiuiBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'MIUI Browser'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (!$this->data->os->isFamily('Android')) { + $this->data->os->reset(); + $this->data->os->name = 'Android'; + + $this->data->device->manufacturer = 'Xiaomi'; + $this->data->device->model = null; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + } + + /* NineSky */ + + if (preg_match('/Ninesky(?:-android-mobile(?:-cn)?)?\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->reset(); + $this->data->browser->name = 'NineSky'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (isset($this->data->device->manufacturer) && $this->data->device->manufacturer == 'Apple') { + $this->data->device->reset(); + } + + if (!$this->data->os->isFamily('Android')) { + $this->data->os->reset(); + $this->data->os->name = 'Android'; + } + + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* Skyfire */ + + if (preg_match('/Skyfire\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Skyfire'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->os->name = 'Android'; + $this->data->os->version = null; + } + + /* Dolphin HD */ + + if (preg_match('/Dolphin(?:HD|Browser)?(?:INT|CN)?\/(?:INT|CN)?-?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Dolphin'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* QQ Browser */ + + if (preg_match('/(M?QQBrowser)\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'QQ Browser'; + + $version = $match[2]; + if (preg_match('/^[0-9][0-9]$/u', $version)) { + $version = $version[0] . '.' . $version[1]; + } + + $this->data->browser->version = new Version([ 'value' => $version, 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->channel = ''; + + if (!isset($this->data->os->name) && $match[1] == 'QQBrowser') { + $this->data->os->name = 'Windows'; + } + + if (preg_match('/MQQBrowser\/[0-9\.]+\/Adr \(Linux; U; ([0-9\.]+); [^;]+; (.+) Build/u', $ua, $match)) { + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $match[1] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/MQQBrowser\/[0-9\.]+\/WP7 \([^;]+;WPOS:([0-9]\.[0-9])[0-9\.]*;([^;]+); ([^\)]+)\)/u', $ua, $match)) { + $this->data->os->reset([ + 'name' => 'Windows Phone', + 'version' => new Version([ 'value' => $match[1] ]) + ]); + + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->manufacturer = $match[2]; + $this->data->device->model = $match[3]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[3]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + if (preg_match('/MQQBrowser\/Mini([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'QQ Browser Mini'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->channel = ''; + } + + if (preg_match('/QQ\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'QQ Browser'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->channel = ''; + } + + /* 360 Phone Browser */ + + if (preg_match('/360 (?:Aphone|Android Phone) Browser/u', $ua, $match)) { + $this->data->browser->name = 'Qihoo 360 Browser'; + $this->data->browser->family = null; + $this->data->browser->channel = ''; + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/360 (?:Aphone|Android Phone) Browser \((?:Version |V)?([0-9.]*)(?:beta)?\)/u', $ua, $match)) { + $this->data->browser->name = 'Qihoo 360 Browser'; + $this->data->browser->family = null; + $this->data->browser->channel = ''; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (!$this->data->os->isFamily('Android')) { + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->os->reset([ + 'name' => 'Android' + ]); + } + } + + if (preg_match('/360%20(?:Browser|Lite)\/([0-9\.]+)/u', $ua, $match)) { + $this->data->browser->name = 'Qihoo 360 Browser'; + $this->data->browser->family = null; + $this->data->browser->channel = ''; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/QHBrowser\/([0-9\.]+)/u', $ua, $match)) { + $version = $match[1]; + if (preg_match('/^[0-9][0-9][0-9]$/u', $version)) { + $version = $version[0] . '.' . $version[1] . '.' . $version[2]; + } + + $this->data->browser->name = 'Qihoo 360 Browser'; + $this->data->browser->channel = ''; + $this->data->browser->version = new Version([ 'value' => $version ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (!$this->data->isOs('iOS')) { + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->os->reset([ + 'name' => 'iOS' + ]); + } + } + + /* Mercury */ + + if (preg_match('/(?:^| )Mercury\/([0-9\.]+)/u', $ua, $match)) { + $version = $match[1]; + if (preg_match('/^[0-9][0-9][0-9]$/u', $version)) { + $version = $version[0] . '.' . $version[1] . '.' . $version[2]; + } + + $this->data->browser->name = 'Mercury Browser'; + $this->data->browser->channel = ''; + $this->data->browser->version = new Version([ 'value' => $version ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + /* iBrowser */ + + if (preg_match('/(?:^| )iBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'iBrowser'; + + $version = $match[1]; + if (preg_match('/^[0-9][0-9]$/u', $version)) { + $version = $version[0] . '.' . $version[1]; + } + + $this->data->browser->version = new Version([ 'value' => $version, 'details' => 2 ]); + $this->data->browser->channel = ''; + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + if (preg_match('/iBrowser\/Mini([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'iBrowser Mini'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->channel = ''; + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + /* Puffin */ + + if (preg_match('/Puffin\/([0-9.]+)([IA])?([PT])?/u', $ua, $match)) { + $this->data->browser->name = 'Puffin'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => (intval(substr(strrchr($match[1], '.'), 1)) > 99 ? -1 : null) ]); + $this->data->browser->mode = 'proxy'; + $this->data->browser->channel = ''; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (isset($match[2])) { + switch ($match[2]) { + case 'A': + if (!$this->data->isOs('Android')) { + $this->data->os->reset([ 'name' => 'Android' ]); + } + break; + + case 'I': + if (!$this->data->isOs('iOS')) { + $this->data->os->reset([ 'name' => 'iOS' ]); + } + break; + } + } + + if (isset($match[3])) { + switch ($match[3]) { + case 'P': + $this->data->device->type = Constants\DeviceType::MOBILE; + if ($this->data->os->name == 'iOS' && empty($this->data->device->model)) { + $this->data->device->manufacturer = 'Apple'; + $this->data->device->model = 'iPhone'; + $this->data->device->identified = Constants\Id::MATCH_UA; + } + break; + + case 'T': + $this->data->device->type = Constants\DeviceType::TABLET; + if ($this->data->os->name == 'iOS' && empty($this->data->device->model)) { + $this->data->device->manufacturer = 'Apple'; + $this->data->device->model = 'iPad'; + $this->data->device->identified = Constants\Id::MATCH_UA; + } + break; + } + } + } + + /* MiniBrowser Mobile */ + + if (preg_match('/MiniBr?owserM(?:obile)?\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'MiniBrowser'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (!$this->data->isOs('Series60')) { + $this->data->os->name = 'Series60'; + $this->data->os->version = null; + } + } + + /* Maxthon */ + + if (preg_match('/MxNitro/iu', $ua, $match)) { + $this->data->browser->name = 'Maxthon Nitro'; + $this->data->browser->channel = ''; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/MxNitro\/([0-9.]*)/iu', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + } + + /* Sogou Mobile */ + + if (preg_match('/SogouAndroidBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Sogou Mobile'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (isset($this->data->device->manufacturer) && $this->data->device->manufacturer == 'Apple') { + unset($this->data->device->manufacturer); + unset($this->data->device->model); + unset($this->data->device->identifier); + $this->data->device->identified = Constants\Id::NONE; + } + } + + /* Xiino */ + + if (preg_match('/Xiino\/([0-9.]+)/u', $ua, $match)) { + $this->data->browser->name = 'Xiino'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->type = Constants\DeviceType::PDA; + + $this->data->os->name = 'Palm OS'; + + if (preg_match('/\(v. ([0-9.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + + /* Palmscape */ + + if (preg_match('/Palmscape\/(?:PR)?([0-9.]+)/u', $ua, $match)) { + $this->data->browser->name = 'Palmscape'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->type = Constants\DeviceType::PDA; + + $this->data->os->name = 'Palm OS'; + + if (preg_match('/\(v. ([0-9.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + + /* Novarra WebPro */ + + if (preg_match('/WebPro/u', $ua) && preg_match('/PalmOS/u', $ua)) { + $this->data->browser->name = 'WebPro'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/WebPro\/?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + } + + /* Novarra Vision */ + + if (preg_match('/(?:Vision-Browser|Novarra-Vision)\/?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Novarra Vision'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->family = null; + $this->data->browser->mode = 'proxy'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if ($this->data->device->type != Constants\DeviceType::MOBILE) { + $this->data->os->reset(); + $this->data->device->type = Constants\DeviceType::MOBILE; + } + } + } + + private function detectTelevisionBrowsers($ua) + { + if (!preg_match('/(Roku|LG Browser|NetCast|SonyBrowserCore|Dream|Planetweb)/ui', $ua)) { + return; + } + + /* Web on Roku */ + + if (preg_match('/Roku/u', $ua) && preg_match('/Web\/([0-9.]+)/u', $ua, $match)) { + $this->data->browser->name = 'Web'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + + /* LG Browser */ + + if (preg_match('/LG Browser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'LG Browser'; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + if (preg_match('/NetCast/u', $ua) && preg_match('/SmartTV\//u', $ua)) { + unset($this->data->browser->name); + unset($this->data->browser->version); + } + + /* Sony Browser */ + + if (preg_match('/SonyBrowserCore\/([0-9.]*)/u', $ua, $match)) { + unset($this->data->browser->name); + unset($this->data->browser->version); + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + /* Dreamkey */ + + if (preg_match('/DreamKey\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Dreamkey'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->setIdentification([ + 'manufacturer' => 'Sega', + 'model' => 'Dreamcast', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* Dream Passport */ + + if (preg_match('/DreamPassport\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Dream Passport'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->device->setIdentification([ + 'manufacturer' => 'Sega', + 'model' => 'Dreamcast', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* Planetweb */ + + if (preg_match('/Planetweb\/v?([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = 'Planetweb'; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (preg_match('/Dreamcast/u', $ua, $match)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Sega', + 'model' => 'Dreamcast', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + if (preg_match('/SPS/u', $ua, $match)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation 2', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + } + } + + private function detectRemainingBrowsers($ua) + { + if ($data = Data\Applications::identifyBrowser($ua)) { + $this->data->browser->set($data['browser']); + + if (!empty($data['device'])) { + $this->data->device->set($data['device']); + } + } + } + + private function detectWapBrowsers($ua) + { + if (!preg_match('/(Dorado|MAUI)/ui', $ua, $match)) { + return; + } + + if (preg_match('/Browser\/Dorado([0-9.]*)/ui', $ua, $match)) { + $this->data->browser->name = 'Dorado WAP'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + if (preg_match('/Dorado WAP-Browser\/([0-9.]*)/ui', $ua, $match)) { + $this->data->browser->name = 'Dorado WAP'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + $this->data->browser->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + if (preg_match('/MAUI[ _]WAP[ _]Browser(?:\/([0-9.]*))?/ui', $ua, $match)) { + $this->data->browser->name = 'MAUI WAP'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + if (isset($match[1])) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + + } + + if (preg_match('/WAP Browser\/MAUI/ui', $ua, $match)) { + $this->data->browser->name = 'MAUI WAP'; + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device.php new file mode 100644 index 0000000..044651c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device.php @@ -0,0 +1,29 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent; + +trait Device +{ + use Device\Appliance, Device\Cars, Device\Gps, Device\Gaming, Device\Ereader, + Device\Mobile, Device\Media, Device\Television, Device\Signage, + Device\Printer, Device\Tablet, Device\Phone, Device\Pda; + + private function &detectDevice($ua) + { + $this->detectAppliance($ua); + $this->detectCars($ua); + $this->detectGps($ua); + $this->detectEreader($ua); + $this->detectGaming($ua); + $this->detectTelevision($ua); + $this->detectSignage($ua); + $this->detectMedia($ua); + $this->detectPda($ua); + $this->detectPrinter($ua); + $this->detectTablet($ua); + $this->detectPhone($ua); + $this->detectMobile($ua); + + return $this; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Appliance.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Appliance.php new file mode 100644 index 0000000..b4bb07c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Appliance.php @@ -0,0 +1,46 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; + +trait Appliance +{ + private function detectAppliance($ua) + { + $this->detectIOpener($ua); + $this->detectWebLight($ua); + } + + + + + + /* Netpliance i-Opener */ + + private function detectIOpener($ua) + { + if (preg_match('/I-Opener [0-9.]+; Netpliance/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Netpliance', + 'model' => 'i-Opener', + 'type' => Constants\DeviceType::DESKTOP + ]); + } + } + + /* KOMATSU WebLight */ + + private function detectWebLight($ua) + { + if (preg_match('/KOMATSU.*WL\//u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'KOMATSU', + 'model' => 'WebLight', + 'type' => Constants\DeviceType::DESKTOP + ]); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Cars.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Cars.php new file mode 100644 index 0000000..c329a3c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Cars.php @@ -0,0 +1,35 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; + +trait Cars +{ + private function detectCars($ua) + { + if (!preg_match('/Car/ui', $ua)) { + return; + } + + $this->detectTesla($ua); + } + + + + + + /* Tesla S */ + + private function detectTesla($ua) + { + if (preg_match('/QtCarBrowser/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Tesla', + 'model' => 'Model S', + 'type' => Constants\DeviceType::CAR + ]); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Ereader.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Ereader.php new file mode 100644 index 0000000..489fc7d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Ereader.php @@ -0,0 +1,218 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; + +trait Ereader +{ + private function detectEreader($ua) + { + if (!preg_match('/(Kindle|Nook|Bookeen|Kobo|EBRD|PocketBook|Iriver)/ui', $ua)) { + return; + } + + $this->detectKindle($ua); + $this->detectNook($ua); + $this->detectBookeen($ua); + $this->detectKobo($ua); + $this->detectSonyreader($ua); + $this->detectPocketbook($ua); + $this->detectIriver($ua); + } + + + + + /* Amazon Kindle */ + + private function detectKindle($ua) + { + if (preg_match('/Kindle/u', $ua) && !preg_match('/Fire/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Amazon', + 'series' => 'Kindle', + 'type' => Constants\DeviceType::EREADER + ]); + + if (preg_match('/Kindle SkipStone/u', $ua)) { + $this->data->device->model = 'Kindle Touch or later'; + } elseif (preg_match('/Kindle\/3.0\+/u', $ua)) { + $this->data->device->model = 'Kindle 3 or later'; + } elseif (preg_match('/Kindle\/3.0/u', $ua)) { + $this->data->device->model = 'Kindle 3'; + } elseif (preg_match('/Kindle\/2.5/u', $ua)) { + $this->data->device->model = 'Kindle 2'; + } elseif (preg_match('/Kindle\/2.0/u', $ua)) { + $this->data->device->model = 'Kindle 2'; + } elseif (preg_match('/Kindle\/1.0/u', $ua)) { + $this->data->device->model = 'Kindle 1'; + } + + if (!empty($this->data->device->model)) { + $this->data->device->generic = false; + $this->data->device->series = null; + } + } + } + + + /* Barnes & Noble Nook */ + + private function detectNook($ua) + { + if (preg_match('/nook browser/u', $ua)) { + $this->data->os->reset([ 'name' => 'Android' ]); + $this->data->device->setIdentification([ + 'manufacturer' => 'Barnes & Noble', + 'series' => 'NOOK', + 'type' => Constants\DeviceType::EREADER + ]); + } + } + + + /* Bookeen */ + + private function detectBookeen($ua) + { + if (preg_match('/bookeen\/cybook/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Bookeen', + 'series' => 'Cybook', + 'type' => Constants\DeviceType::EREADER + ]); + } + } + + + /* Kobo */ + + private function detectKobo($ua) + { + if (preg_match('/Kobo (eReader|Touch)/u', $ua, $match)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Kobo', + 'series' => 'eReader', + 'type' => Constants\DeviceType::EREADER + ]); + } + } + + + /* Sony Reader */ + + private function detectSonyreader($ua) + { + if (preg_match('/EBRD([0-9]+)/u', $ua, $match)) { + $model = null; + + switch ($match[1]) { + case '1101': + $model = 'PRS-T1'; + break; + case '1102': + $model = 'PRS-G1'; + break; + case '1201': + $model = 'PRS-T2'; + break; + case '1301': + $model = 'PRS-T3'; + break; + } + + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => $model, + 'series' => 'Reader', + 'type' => Constants\DeviceType::EREADER + ]); + + } + } + + + /* PocketBook */ + + private function detectPocketbook($ua) + { + if (preg_match('/PocketBook\/([0-9]+)/u', $ua, $match)) { + $model = null; + + switch ($match[1]) { + case '515': + $model = 'Mini'; + break; + case '614': + $model = 'Basic 2'; + break; + case '622': + $model = 'Touch'; + break; + case '623': + $model = 'Touch Lux'; + break; + case '624': + $model = 'Basic Touch'; + break; + case '626': + $model = 'Touch Lux 2'; + break; + case '630': + $model = 'Sense'; + break; + case '631': + $model = 'Touch HD'; + break; + case '640': + $model = 'Aqua'; + break; + case '641': + $model = 'Aqua 2'; + break; + case '650': + $model = 'Ultra'; + break; + case '801': + $model = 'Color Lux'; + break; + case '840': + $model = 'InkPad'; + break; + } + + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'PocketBook', + 'model' => $model, + 'type' => Constants\DeviceType::EREADER + ]); + } + } + + + /* iRiver */ + + private function detectIriver($ua) + { + if (preg_match('/Iriver ;/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'iRiver', + 'series' => 'Story', + 'type' => Constants\DeviceType::EREADER + ]); + + if (preg_match('/EB07/u', $ua)) { + $this->data->device->model = 'Story HD EB07'; + $this->data->device->series = null; + $this->data->device->generic = false; + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Gaming.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Gaming.php new file mode 100644 index 0000000..9a7b7d4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Gaming.php @@ -0,0 +1,279 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; +use WhichBrowser\Model\Version; + +trait Gaming +{ + private function detectGaming($ua) + { + if (!preg_match('/(Nintendo|Nitro|PlayStation|PS[0-9]|Sega|Dreamcast|Xbox)/ui', $ua)) { + return; + } + + $this->detectNintendo($ua); + $this->detectPlaystation($ua); + $this->detectXbox($ua); + $this->detectSega($ua); + } + + + + + + /* Nintendo Wii and DS */ + + private function detectNintendo($ua) + { + /* Switch */ + + if (preg_match('/Nintendo Switch/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'Switch', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* Wii */ + + if (preg_match('/Nintendo Wii/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'Wii', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* Wii U */ + + if (preg_match('/Nintendo Wii ?U/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'Wii U', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* DS */ + + if (preg_match('/Nintendo DS/u', $ua) || preg_match('/Nitro.*Opera/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'DS', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::PORTABLE + ]); + } + + /* DSi */ + + if (preg_match('/Nintendo DSi/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'DSi', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::PORTABLE + ]); + } + + /* 3DS */ + + if (preg_match('/Nintendo 3DS/u', $ua)) { + $this->data->os->reset(); + $this->data->os->identifyVersion('/Version\/([0-9.]*[0-9])/u', $ua); + + $this->data->engine->set([ + 'name' => 'WebKit' + ]); + + $this->data->device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => '3DS', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::PORTABLE + ]); + } + + /* New 3DS */ + + if (preg_match('/New Nintendo 3DS/u', $ua)) { + $this->data->os->reset(); + $this->data->os->identifyVersion('/Version\/([0-9.]*[0-9])/u', $ua); + + $this->data->device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'New 3DS', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::PORTABLE + ]); + } + } + + + /* Sony PlayStation */ + + private function detectPlaystation($ua) + { + /* PlayStation Portable */ + + if (preg_match('/PlayStation Portable/u', $ua)) { + $this->data->os->reset(); + + $this->data->engine->set([ + 'name' => 'NetFront' + ]); + + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation Portable', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::PORTABLE + ]); + } + + /* PlayStation Vita */ + + if (preg_match('/PlayStation Vita/iu', $ua)) { + $this->data->os->reset(); + $this->data->os->identifyVersion('/PlayStation Vita ([0-9.]*)/u', $ua); + + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation Vita', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::PORTABLE + ]); + + if (preg_match('/VTE\//u', $ua)) { + $this->data->device->model = 'Playstation TV'; + $this->data->device->subtype = Constants\DeviceSubType::CONSOLE; + } + } + + /* PlayStation 2 */ + + if (preg_match('/Playstation2/u', $ua) || preg_match('/\(PS2/u', $ua)) { + $this->data->os->reset(); + + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation 2', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* PlayStation 3 */ + + if (preg_match('/PlayStation 3/ui', $ua) || preg_match('/\(PS3/u', $ua)) { + $this->data->os->reset(); + $this->data->os->identifyVersion('/PLAYSTATION 3;? ([0-9.]*)/u', $ua); + + if (preg_match('/PLAYSTATION 3; [123]/', $ua)) { + $this->data->engine->set([ + 'name' => 'NetFront' + ]); + } + + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation 3', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* PlayStation 4 */ + + if (preg_match('/PlayStation 4/ui', $ua) || preg_match('/\(PS4/u', $ua)) { + $this->data->os->reset(); + $this->data->os->identifyVersion('/PlayStation 4 ([0-9.]*)/u', $ua); + + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation 4', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + } + + + /* Microsoft Xbox */ + + private function detectXbox($ua) + { + /* Xbox 360 */ + + if (preg_match('/Xbox\)$/u', $ua, $match)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Microsoft', + 'model' => 'Xbox 360', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* Xbox One */ + + if (preg_match('/Xbox One\)/u', $ua, $match)) { + if ($this->data->isOs('Windows Phone', '=', '10')) { + $this->data->os->name = 'Windows'; + $this->data->os->version->alias = '10'; + } + + if (!$this->data->isOs('Windows', '=', '10')) { + $this->data->os->reset(); + } + + $this->data->device->setIdentification([ + 'manufacturer' => 'Microsoft', + 'model' => 'Xbox One', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + } + + + /* Sega */ + + private function detectSega($ua) + { + /* Sega Saturn */ + + if (preg_match('/SEGASATURN/u', $ua, $match)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Sega', + 'model' => 'Saturn', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + + /* Sega Dreamcast */ + + if (preg_match('/Dreamcast/u', $ua, $match)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Sega', + 'model' => 'Dreamcast', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Gps.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Gps.php new file mode 100644 index 0000000..d776b27 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Gps.php @@ -0,0 +1,34 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; + +trait Gps +{ + private function detectGps($ua) + { + if (!preg_match('/Nuvi/ui', $ua)) { + return; + } + + $this->detectGarmin($ua); + } + + + + + + /* Garmin Nuvi */ + + private function detectGarmin($ua) + { + if (preg_match('/Nuvi/u', $ua) && preg_match('/Qtopia/u', $ua)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Garmin', + 'model' => 'Nuvi', + 'type' => Constants\DeviceType::GPS + ]); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Media.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Media.php new file mode 100644 index 0000000..37dcefc --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Media.php @@ -0,0 +1,119 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; +use WhichBrowser\Model\Version; + +trait Media +{ + private function detectMedia($ua) + { + if (!preg_match('/(Archos|Zune|Walkman)/ui', $ua)) { + return; + } + + $this->detectArchos($ua); + $this->detectZune($ua); + $this->detectWalkman($ua); + } + + + + + /* Archos Generation 4, 5 and 6 */ + + private function detectArchos($ua) + { + /* Generation 4 */ + + if (preg_match('/Archos A([67]04)WIFI\//u', $ua, $match)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Archos', + 'model' => $match[1] . ' WiFi', + 'type' => Constants\DeviceType::MEDIA + ]); + } + + /* Generation 5 */ + + if (preg_match('/ARCHOS; GOGI; a([67]05f?);/u', $ua, $match)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Archos', + 'model' => $match[1] . ' WiFi', + 'type' => Constants\DeviceType::MEDIA + ]); + } + + /* Generation 6 without Android */ + + if (preg_match('/ARCHOS; GOGI; G6-?(S|H|L|3GP);/u', $ua, $match)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Archos', + 'type' => Constants\DeviceType::MEDIA + ]); + + switch ($match[1]) { + case '3GP': + $this->data->device->model = '5 3G+'; + break; + case 'S': + case 'H': + $this->data->device->model = '5'; + break; + case 'L': + $this->data->device->model = '7'; + break; + } + } + + /* Generation 6 with Android */ + + if (preg_match('/ARCHOS; GOGI; A5[SH]; Version ([0-9]\.[0-9])/u', $ua, $match)) { + $version = new Version([ 'value' => $match[1] ]); + + $this->data->os->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => $version->is('<', '1.7') ? '1.5' : '1.6' ]) + ]); + + $this->data->device->setIdentification([ + 'manufacturer' => 'Archos', + 'model' => '5', + 'type' => Constants\DeviceType::MEDIA + ]); + } + } + + + /* Microsoft Zune */ + + private function detectZune($ua) + { + if (preg_match('/Microsoft ZuneHD/u', $ua)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'Microsoft', + 'model' => 'Zune HD', + 'type' => Constants\DeviceType::MEDIA + ]); + } + } + + + /* Sony Walkman */ + + private function detectWalkman($ua) + { + if (preg_match('/Walkman\/(NW-[A-Z0-9]+)/u', $ua, $match)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => $match[1] . ' Walkman', + 'type' => Constants\DeviceType::MEDIA + ]); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Mobile.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Mobile.php new file mode 100644 index 0000000..30771f0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Mobile.php @@ -0,0 +1,1303 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Version; + +trait Mobile +{ + private function detectMobile($ua) + { + /* Detect the type based on some common markers */ + $this->detectGenericMobile($ua); + + /* Look for specific manufacturers and models */ + $this->detectKin($ua); + $this->detectNokia($ua); + $this->detectSamsung($ua); + + /* Try to parse some generic methods to store device information */ + $this->detectGenericMobileModels($ua); + $this->detectJapaneseMobileModels($ua); + + /* Try to find the model names based on id */ + $this->detectGenericMobileLocations($ua); + } + + + + + + + /* Generic markers */ + + private function detectGenericMobile($ua) + { + if (preg_match('/(MIDP|CLDC|UNTRUSTED\/|3gpp-gba|[Ww][Aa][Pp]2.0|[Ww][Aa][Pp][ _-]?[Bb]rowser)/u', $ua)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + } + + + /* Microsoft KIN */ + + private function detectKin($ua) + { + if (preg_match('/KIN\.(One|Two) ([0-9.]*)/ui', $ua, $match)) { + $this->data->os->name = 'Kin OS'; + $this->data->os->version = new Version([ 'value' => $match[2], 'details' => 2 ]); + + switch ($match[1]) { + case 'One': + $this->data->device->manufacturer = 'Microsoft'; + $this->data->device->model = 'Kin ONE'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + break; + + case 'Two': + $this->data->device->manufacturer = 'Microsoft'; + $this->data->device->model = 'Kin TWO'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + break; + } + } + } + + + /* Nokia */ + + private function detectNokia($ua) + { + if (isset($this->data->device->manufacturer)) { + return; + } + + if (preg_match('/Nokia[- \/]?([^\/\);]+)/ui', $ua, $match)) { + + if ($match[1] == 'Browser') { + return; + } + + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identifier = $match[0]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->generic = false; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('asha', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Nokia Asha Platform') { + $this->data->os->name = 'Nokia Asha Platform'; + $this->data->os->version = new Version([ 'value' => '1.0' ]); + + if (preg_match('/java_runtime_version=Nokia_Asha_([0-9_]+)[;\)]/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + } + } + } + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('s40', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Series40') { + $this->data->os->name = 'Series40'; + $this->data->os->version = null; + } + } + } + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('symbian', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!isset($this->data->os->name) || $this->data->os->name != 'Series60') { + $this->data->os->name = 'Series60'; + $this->data->os->version = null; + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + } + } + } + + $this->identifyBasedOnIdentifier(); + } + } + + + /* Samsung */ + + private function detectSamsung($ua) + { + if (isset($this->data->device->manufacturer)) { + return; + } + + if (preg_match('/(?:SAMSUNG; )?SAMSUNG ?[-\/]?([^;\/\)_,]+)/ui', $ua, $match)) { + if ($match[1] === 'Browser') { + return; + } + + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identifier = $match[0]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->generic = false; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if ($this->data->isOS('Bada')) { + $device = Data\DeviceModels::identify('bada', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if ($this->data->isOS('Series60')) { + $device = Data\DeviceModels::identify('symbian', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (!$this->data->os->isDetected()) { + if (preg_match('/Jasmine\/([0-9.]*)/u', $ua, $match)) { + $version = $match[1]; + + $device = Data\DeviceModels::identify('touchwiz', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + $this->data->os->name = 'Touchwiz'; + + switch ($version) { + case '0.8': + $this->data->os->version = new Version([ 'value' => '1.0' ]); + break; + case '1.0': + $this->data->os->version = new Version([ 'value' => '2.0', 'alias' => '2.0 or earlier' ]); + break; + } + } + } + + if (preg_match('/(?:Dolfin\/([0-9.]*)|Browser\/Dolfin([0-9.]*))/u', $ua, $match)) { + $version = !empty($match[1]) ? $match[1] : $match[2]; + + $device = Data\DeviceModels::identify('bada', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + $this->data->os->name = 'Bada'; + + switch ($version) { + case '2.0': + $this->data->os->version = new Version([ 'value' => '1.0' ]); + break; + case '2.2': + $this->data->os->version = new Version([ 'value' => '1.2' ]); + break; + } + } else { + $device = Data\DeviceModels::identify('touchwiz', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + $this->data->os->name = 'Touchwiz'; + + switch ($version) { + case '1.0': + $this->data->os->version = new Version([ 'value' => '2.0', 'alias' => '2.0 or earlier' ]); + break; + case '1.5': + $this->data->os->version = new Version([ 'value' => '2.0' ]); + break; + case '2.0': + $this->data->os->version = new Version([ 'value' => '3.0' ]); + break; + } + } + } + } + } + + $this->identifyBasedOnIdentifier(); + } + } + + + /* Generic models */ + + private function detectGenericMobileModels($ua) + { + if ($this->data->device->identified & Constants\Id::PATTERN) { + return; + } + + if (isset($this->data->device->manufacturer)) { + return; + } + + if (!preg_match('/(T-Mobile|Danger|HPiPAQ|Acer|Amoi|AIRNESS|ASUS|BenQ|maui|ALCATEL|Bird|COOLPAD|CELKON|Coship|Cricket|DESAY|Diamond|dopod|Ericsson|FLY|GIONEE|GT-|Haier|HIKe|Hisense|HS|HTC|T[0-9]{4,4}|HUAWEI|Karbonn|KWC|KONKA|KTOUCH|K-Touch|Lenovo|Lephone|LG|Micromax|MOT|Nexian|NEC|NGM|OPPO|Panasonic|Pantech|Philips|Sagem|Sanyo|Sam|SEC|SGH|SCH|SIE|Sony|SE|SHARP|Spice|Tecno|T-smart|TCL|Tiphone|Toshiba|UTStar|Videocon|vk|Vodafone|VSUN|Wynncom|Xiaomi|YUANDA|Zen|Ziox|ZTE|WAP)/ui', $ua)) { + return; + } + + $this->data->device->identifyModel('/T-Mobile[_ ]([^\/;]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'T-Mobile' + ]); + + $this->data->device->identifyModel('/Danger hiptop ([0-9.]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Danger', + 'model' => 'Hiptop' + ]); + + $this->data->device->identifyModel('/HP(iPAQ[0-9A-Za-z]+)\//u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'HP' + ]); + + $this->data->device->identifyModel('/Acer[_-]?([^\s\/_]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Acer' + ]); + + $this->data->device->identifyModel('/Amoi[ -]([^\s\/_]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Amoi' + ]); + + $this->data->device->identifyModel('/AIRNESS-([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Airness' + ]); + + $this->data->device->identifyModel('/ASUS-([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Asus' + ]); + + $this->data->device->identifyModel('/BenQ[ -]([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'BenQ' + ]); + + $this->data->device->identifyModel('/ maui ([a-z0-9]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'BenQ', + 'model' => function ($model) { + return 'Maui ' . strtoupper($model); + } + ]); + + $this->data->device->identifyModel('/ALCATEL[_-]([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Alcatel', + 'model' => function ($model) { + if (preg_match('/^TRIBE ([^\s]+)/ui', $model, $match)) { + $model = 'One Touch Tribe ' . $match[1]; + } elseif (preg_match('/^ONE TOUCH ([^\s]*)/ui', $model, $match)) { + $model = 'One Touch ' . $match[1]; + } elseif (preg_match('/^OT[-\s]*([^\s]*)/ui', $model, $match)) { + $model = 'One Touch ' . $match[1]; + } + + return $model; + } + ]); + + $this->data->device->identifyModel('/Bird[ _\-\.]([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Bird' + ]); + + $this->data->device->identifyModel('/(?:YL-|YuLong-)?COOLPAD([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Coolpad' + ]); + + $this->data->device->identifyModel('/CELKON\.([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Celkon' + ]); + + $this->data->device->identifyModel('/Coship ([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Coship' + ]); + + $this->data->device->identifyModel('/Cricket-([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Cricket' + ]); + + $this->data->device->identifyModel('/DESAY[ _]([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'DESAY' + ]); + + $this->data->device->identifyModel('/Diamond_([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Diamond' + ]); + + $this->data->device->identifyModel('/dopod[-_]?([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Dopod' + ]); + + $this->data->device->identifyModel('/^Ericsson([^\/]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Ericsson' + ]); + + $this->data->device->identifyModel('/^(R[0-9]{3,3}) [0-9\.]+ WAP/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Ericsson' + ]); + + $this->data->device->identifyModel('/FLY_]?([^\s\/]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Fly' + ]); + + $this->data->device->identifyModel('/GIONEE[-_ ]([^\s\/;]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Gionee' + ]); + + $this->data->device->identifyModel('/GIONEE([A-Z0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Gionee' + ]); + + $this->data->device->identifyModel('/HIKe_([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'HIKe' + ]); + + $this->data->device->identifyModel('/HAIER-([A-Z][0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Haier' + ]); + + $this->data->device->identifyModel('/Hisense[ -](?:HS-)?([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Hisense' + ]); + + $this->data->device->identifyModel('/HS-([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Hisense' + ]); + + $this->data->device->identifyModel('/HTC[\s_-]?([^\s\/\(\);][^\/\(\);]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'HTC' + ]); + + $this->data->device->identifyModel('/(?:HTC_)?([A-Z0-9_]+_T[0-9]{4,4})/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'HTC' + ]); + + $this->data->device->identifyModel('/HUAWEI[\s_-]?([^\/\)\()]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Huawei' + ]); + + $this->data->device->identifyModel('/Karbonn ([a-z0-9]+(?: ?Star| ?Plus|\+)?)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Karbonn' + ]); + + $this->data->device->identifyModel('/KWC-([^\s\/]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Kyocera' + ]); + + $this->data->device->identifyModel('/KONKA[-_]?([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Konka' + ]); + + $this->data->device->identifyModel('/TIANYU-KTOUCH\/([^\/]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'K-Touch' + ]); + + $this->data->device->identifyModel('/K-Touch_?([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'K-Touch' + ]); + + $this->data->device->identifyModel('/Lenovo[_-]?([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Lenovo' + ]); + + $this->data->device->identifyModel('/Lephone_([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Lephone' + ]); + + $this->data->device->identifyModel('/LGE?([A-Z]{2,2}[0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'LG' + ]); + + $this->data->device->identifyModel('/LGE?(?:\/|-|_)([^\s\)\-\[\/]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'LG' + ]); + + $this->data->device->identifyModel('/LGE? ?([A-Z]*[0-9]+[A-Z]?)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'LG' + ]); + + $this->data->device->identifyModel('/Micromax([^\)]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Micromax' + ]); + + $this->data->device->identifyModel('/^MOTO-?([^\/_]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Motorola' + ]); + + $this->data->device->identifyModel('/MOT-([^\/_\.]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Motorola' + ]); + + $this->data->device->identifyModel('/Motorola-([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Motorola', + 'model' => function ($model) { + return strtoupper($model); + } + ]); + + $this->data->device->identifyModel('/Motorola[_ ]([^\/_;\)]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Motorola' + ]); + + $this->data->device->identifyModel('/Moto([^\/\s_;r][^\/\s_;]*)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Motorola' + ]); + + $this->data->device->identifyModel('/Nexian([^\/_]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Nexian' + ]); + + $this->data->device->identifyModel('/NEC-([^\/_]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'NEC' + ]); + + $this->data->device->identifyModel('/NGM_([^\/_]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'NGM' + ]); + + $this->data->device->identifyModel('/OPPO_([^\/_]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Oppo' + ]); + + $this->data->device->identifyModel('/Panasonic-([^\/_]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Panasonic' + ]); + + $this->data->device->identifyModel('/Pantech[-_]?([^\/_]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Pantech' + ]); + + $this->data->device->identifyModel('/Philips ?([A-Z]?[0-9@]+[a-z]?)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Philips' + ]); + + $this->data->device->identifyModel('/PHILIPS-([a-zA-Z0-9@]+(?: [0-9]+)?)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Philips', + 'model' => function ($model) { + if (preg_match('/Az@lis([0-9]{3,3})/ui', $model, $match)) { + return 'Az@lis ' . $match[1]; + } + + if (preg_match('/Fisio ?([0-9]{3,3})/ui', $model, $match)) { + return 'Fisio ' . $match[1]; + } + + return $model; + } + ]); + + $this->data->device->identifyModel('/SAGEM-([A-Z0-9\-]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Sagem' + ]); + + $this->data->device->identifyModel('/Sanyo-([A-Z0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Sanyo' + ]); + + $this->data->device->identifyModel('/sam-([A-Z][0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Samsung' + ]); + + $this->data->device->identifyModel('/SEC-(SGH[A-Z][0-9]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Samsung', + 'model' => function ($model) { + return str_replace('SGH', 'SGH-', $model); + } + ]); + + $this->data->device->identifyModel('/((?:SGH|SCH)-[A-Z][0-9]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Samsung' + ]); + + $this->data->device->identifyModel('/(GT-[A-Z][0-9]+[A-Z]?)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Samsung' + ]); + + $this->data->device->identifyModel('/(?:Siemens |SIE-)([A-Z]+[0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Siemens' + ]); + + $this->data->device->identifyModel('/SIE-([0-9]{4,4}|[A-Z]{4,4})/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Siemens' + ]); + + $this->data->device->identifyModel('/Sony ([A-Z0-9\-]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Sony' + ]); + + $this->data->device->identifyModel('/SE([A-Z][0-9]+[a-z])/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Sony Ericsson' + ]); + + $this->data->device->identifyModel('/sony-ericsson ([A-Z][0-9]+[a-z])/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Sony Ericsson' + ]); + + $this->data->device->identifyModel('/SonyE?ricsson ?([^\/\);]+)/iu', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Sony Ericsson', + 'model' => function ($model) { + if (preg_match('/^([A-Z]) ([0-9]+)$/u', $model, $match)) { + $model = $match[1] . $match[2]; + } + + if (preg_match('/^[a-z][0-9]+/u', $model)) { + $model[0] = strtoupper($model[0]); + } + + return $model; + } + ]); + + $this->data->device->identifyModel('/SHARP[-_\/]([^\/\;]*)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Sharp' + ]); + + $this->data->device->identifyModel('/Spice\s([^\s]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Spice' + ]); + + $this->data->device->identifyModel('/Spice\s?([A-Z][0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Spice' + ]); + + $this->data->device->identifyModel('/Tecno([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Tecno' + ]); + + $this->data->device->identifyModel('/T-smart_([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'T-smart' + ]); + + $this->data->device->identifyModel('/TCL[-_ ]([^\/\;\)]*)/ui', $ua, [ + 'manufacturer' => 'TCL' + ]); + + $this->data->device->identifyModel('/Tiphone ([^\/]*)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'TiPhone' + ]); + + $this->data->device->identifyModel('/Toshiba[-\/]([^\/-]*)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Toshiba' + ]); + + $this->data->device->identifyModel('/UTStar(?:com)?-([^\s\.\/;]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'UTStarcom' + ]); + + + $this->data->device->identifyModel('/vk-(vk[0-9]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'VK Mobile', + 'model' => function ($model) { + return strtoupper($model); + } + ]); + + $this->data->device->identifyModel('/Videocon[-_ \/]([A-Z0-9\.]+)/iu', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Videocon' + ]); + + $this->data->device->identifyModel('/Vodafone(?:[ _-]Chat)?[ _-]?([0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Vodafone' + ]); + + $this->data->device->identifyModel('/Vodafone\/[0-9.]+\/(v[0-9]+)[^\/]*\//u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Vodafone' + ]); + + $this->data->device->identifyModel('/^VSUN([0-9]+[A-Z]?)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Vsun' + ]); + + $this->data->device->identifyModel('/Wynncom[\-\s]([A-Z0-9\s]+\+?)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Wynncom' + ]); + + $this->data->device->identifyModel('/^YUANDA([0-9]+[A-Z]?)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Yuanda' + ]); + + $this->data->device->identifyModel('/^ZEN[_\s]([A-Z0-9\s\+]+)\*?[\s_]?($|\/|-|;|Dorado|MAUI|WAP|R2AE|Q03C)/uiU', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Zen' + ]); + + $this->data->device->identifyModel('/^(?:Ziox[_\s])?Ziox[_\s](ZX?[0-9]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'Ziox' + ]); + + $this->data->device->identifyModel('/ZTE[-_\s]?([^\s\/\(\);,]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'manufacturer' => 'ZTE', + 'model' => function ($model) { + return preg_match('/[A-Z]+[0-9]+/iu', $model) ? strtoupper($model) : $model; + } + ]); + + $this->identifyBasedOnIdentifier(); + } + + + /* Japanese models */ + + private function detectJapaneseMobileModels($ua) + { + if (isset($this->data->device->manufacturer)) { + return; + } + + if ($this->data->os->isFamily('Android')) { + return; + } + + /* Sometimes DoCoMo UA strings are (partially) encoded */ + + if (preg_match('/^DoCoMo/u', $ua)) { + $ua = preg_replace_callback( + "#\\\x([0-9A-Fa-f]{2})#", + function ($m) { + return chr(hexdec($m[1])); + }, + $ua + ); + } + + /* First identify it based on id */ + + $model = null; + $manufacturer = null; + $carrier = null; + $falsepositive = false; + + $ids = [ + 'CA' => 'Casio', + 'DL' => 'Dell', + 'ER' => 'Ericsson', + 'HT' => 'HTC', + 'HW' => 'Huawei', + 'IA' => 'Inventec', + 'JR' => 'JRC', + 'KO' => 'Kokusai', + 'LC' => 'Longcheer', + 'NK' => 'Nokia', + 'NM' => 'Nokia', + 'KE' => 'KES', + 'SA' => 'Sanyo', + 'SC' => 'Samsung', + 'SS' => 'Samsung', + 'SH' => 'Sharp', + 'SE' => 'Sony Ericsson', + 'SO' => 'Sony', + 'ZT' => 'ZTE', + 'F' => 'Fujitsu', + 'D' => 'Mitsubishi', + 'J' => 'JRC', + 'K' => 'Kyocera', + 'L' => 'LG', + 'M' => 'Motorola', + 'N' => 'NEC', + 'P' => 'Panasonic', + 'R' => 'JRC', + 'T' => 'Toshiba', + 'Z' => 'ZTE', + ]; + + if (preg_match('/(?:^|[\s\/\-\(;])((' . implode('|', array_keys($ids)) . ')[0-9]{3,3}[a-z]+[A-Z]*)/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'DoCoMo'; + } + + if (preg_match('/(?:; |\()((' . implode('|', array_keys($ids)) . ')[0-9]{2,2}[A-Z][0-9]?)[\);]/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'DoCoMo'; + } + + if (preg_match('/DoCoMo\/[0-9].0 ((' . implode('|', array_keys($ids)) . ')[0-9]{2,2}[A-Z][0-9]?)(?:\s?\(|$)/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'DoCoMo'; + } + + if (preg_match('/DoCoMo\/[0-9].0[\/\s](?:MST_v_)?((' . implode('|', array_keys($ids)) . ')[1-9][0-9]{3,3}[A-Z]?)/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'DoCoMo'; + } + + if (preg_match('/[\/\(]([SHW][0-9]{2,2}(' . implode('|', array_keys($ids)) . '))[\/;]/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'EMOBILE'; + } + + if (preg_match('/\) ([SHW][0-9]{2,2}(' . implode('|', array_keys($ids)) . '))$/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'EMOBILE'; + } + + if (preg_match('/[\s\/\-\(;](J-(' . implode('|', array_keys($ids)) . ')[0-9]{2,2})/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'Softbank'; + } + + if (preg_match('/(?:^|; |\/)([0-9]{3,3}(' . implode('|', array_keys($ids)) . '))[eps]?[\/\)]/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'Softbank'; + } + + if (preg_match('/\(([0-9]{3,3}(' . implode('|', array_keys($ids)) . ')[eps]?);SoftBank/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'Softbank'; + } + + if (preg_match('/(?:^|[\s\/\(;])((V|DM|W|WS|WX)[0-9]{2,3}(' . implode('|', array_keys($ids)) . '))/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[3]; + + switch ($match[2]) { + case 'V': + $carrier = 'Softbank'; + break; + case 'DM': + $carrier = 'Disney Mobile'; + break; + case 'W': + case 'WS': + case 'WX': + $carrier = 'Willcom'; + break; + } + } + + if (preg_match('/(AH-(' . implode('|', array_keys($ids)) . ')[1-9][0-9]{3,3}[A-Z]?)/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + $carrier = 'Willcom'; + } + + if (in_array($model, [ '360SE' ])) { + $falsepositive = true; + } + + if (!$falsepositive && !empty($model) && !empty($manufacturer)) { + $this->data->device->reset([ + 'type' => Constants\DeviceType::MOBILE, + 'model' => $model, + 'carrier' => $carrier + ]); + + if (array_key_exists($manufacturer, $ids)) { + $this->data->device->manufacturer = $ids[$manufacturer]; + } + + $this->data->device->identified |= Constants\Id::PATTERN; + + /* Set flags for MOAP */ + + switch ($model) { + case 'F06B': + case 'F07B': + case 'F08B': + case 'SH07B': + $this->data->os->reset([ 'family' => new Family([ 'name' => 'Symbian' ]) ]); + $this->data->device->flag = Constants\Flag::MOAPS; + break; + } + + return; + } + + /* Then KDDI model number */ + + $ids = [ + 'CA' => 'Casio', + 'DE' => 'Denso', + 'PT' => 'Pantech', + 'SA' => 'Sanyo', + 'ST' => 'Sanyo', + 'SH' => 'Sharp', + 'H' => 'Hitachi', + 'K' => 'Kyocera', + 'P' => 'Panasonic', + 'S' => 'Sony Ericsson', + 'T' => 'Toshiba' + ]; + + if (preg_match('/(?:^|KDDI-)(W[0-9]{2,2}(' . implode('|', array_keys($ids)) . '))[;\)\s\/]/u', $ua, $match)) { + $model = $match[1]; + $manufacturer = $match[2]; + + $this->data->device->reset([ + 'type' => Constants\DeviceType::MOBILE, + 'model' => $model, + 'carrier' => 'au' + ]); + + if (array_key_exists($manufacturer, $ids)) { + $this->data->device->manufacturer = $ids[$manufacturer]; + } + + $this->data->device->identified |= Constants\Id::PATTERN; + return; + } + + /* Then identify it based on KDDI id */ + + $ids = [ + 'CA' => 'Casio', + 'DN' => 'Denso', + 'ER' => 'Ericsson', + 'FJ' => 'Fujitsu', + 'HI' => 'Hitachi', + 'KC' => 'Kyocera', + 'MA' => 'Panasonic', + 'MI' => 'Mitsubishi', + 'PT' => 'Pantech', + 'SA' => 'Sanyo', + 'ST' => 'Sanyo', + 'SY' => 'Sanyo', + 'SH' => 'Sharp', + 'SN' => 'Sony Ericsson', + 'TS' => 'Toshiba' + ]; + + if (preg_match('/(?:^|KDDI-|UP\. ?Browser\/[0-9\.]+-|; )((' . implode('|', array_keys($ids)) . ')(?:[0-9][0-9]|[A-Z][0-9]|[0-9][A-Z]))($|[;\)\s])/ui', $ua, $match)) { + $model = strtoupper($match[1]); + $manufacturer = strtoupper($match[2]); + $falsepositive = false; + + if (in_array($model, [ 'MAM2', 'MAM3' ])) { + $falsepositive = true; + } + + if (!$falsepositive) { + $this->data->device->reset([ + 'type' => Constants\DeviceType::MOBILE, + 'model' => $model, + 'carrier' => 'au' + ]); + + if (array_key_exists($manufacturer, $ids)) { + $this->data->device->manufacturer = $ids[$manufacturer]; + + $device = Data\DeviceModels::identify('kddi', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $device->carrier = 'au'; + $this->data->device = $device; + } + } + + $this->data->device->identified |= Constants\Id::PATTERN; + return; + } + } + + + /* Finally identify it based on carrier */ + + $this->data->device->identifyModel('/\(([A-Z]+[0-9]+[A-Z])[^;]*; ?FOMA/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'carrier' => 'DoCoMo' + ]); + + $this->data->device->identifyModel('/\(FOMA ([^;]+)+;/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'carrier' => 'DoCoMo' + ]); + + $this->data->device->identifyModel('/DoCoMo\/[0-9].0[\/\s]([0-9A-Z]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'carrier' => 'DoCoMo' + ]); + + $this->data->device->identifyModel('/NTTDoCoMo ([0-9A-Z]+)/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'carrier' => 'DoCoMo' + ]); + + $this->data->device->identifyModel('/J-PHONE\/[^\/]+\/([^\/_]+)/u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'carrier' => 'Softbank' + ]); + + $this->data->device->identifyModel('/SoftBank\/[^\/]+\/([^\/]+)\//u', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'carrier' => 'Softbank' + ]); + + $this->data->device->identifyModel('/Vodafone\/[0-9.]+\/V([0-9]+[A-Z]+)[^\/]*\//ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'carrier' => 'Softbank' + ]); + + $this->data->device->identifyModel('/(KDDI-[^\s\)\.;]{4,})/ui', $ua, [ + 'type' => Constants\DeviceType::MOBILE, + 'carrier' => 'au' + ]); + + + if (!empty($this->data->device->model)) { + $this->identifyBasedOnId($this->data->device->model); + } + } + + + + /* Device models not identified by a prefix */ + + private function detectGenericMobileLocations($ua) + { + if ($this->data->device->identified & Constants\Id::PATTERN) { + return; + } + + $candidates = []; + + if (preg_match('/^([a-z0-9\.\_\+\/ ]+)_TD\//iu', $ua, $match)) { + array_push($candidates, $match[1]); + } + + if (preg_match('/^([a-z0-9\_]+)/iu', $ua, $match)) { + array_push($candidates, $match[1]); + } + + if (preg_match('/[; ]\(?([^\s\)\/;]+)[^\s;]*$/u', $ua, $match)) { + array_push($candidates, $match[1]); + } + + if (preg_match('/^([^\/\)]+)/u', $ua, $match)) { + array_push($candidates, $match[1]); + } + + if (preg_match('/MobilePhone ([^\/\)]+)/u', $ua, $match)) { + array_push($candidates, $match[1]); + } + + $candidates = array_diff($candidates, [ + 'Mobile', 'Safari', 'Version', 'GoogleTV', 'WebKit', 'NetFront', + 'Microsoft', 'ZuneWP7', 'Firefox', 'UCBrowser', 'IEMobile', 'Touch', + 'Fennec', 'Minimo', 'Gecko', 'TizenBrowser', 'Browser', 'sdk', + 'Mini', 'Fennec', 'Darwin', 'Puffin', 'Tanggula', 'Edge', + 'QHBrowser', 'BonEcho', 'Iceweasel', 'Midori', 'BeOS', 'UBrowser', + 'SeaMonkey', 'Model', 'Silk-Accelerated=true', 'Configuration', + 'UNTRUSTED', 'OSRE', 'Dolfin', 'Surf', 'Epiphany', 'Konqueror', + 'Presto', 'OWB', 'PmWFx', 'Netscape', 'Netscape6', 'Navigator', + 'Opera', 'Mozilla', 'BrightSign', 'Motorola', 'UCWEB', + 'NativeOperaMini', 'OperaMini', 'SogouMobileBrowser', 'iLunascape', + 'Sleipnir', 'MobileSafari', 'MQQBrowser', 'BREW', '?', + 'Maxthon', '360%20Browser', 'OPR', 'CFNetwork', 'JUC', 'Skyfire', + 'UP.Browser', 'DolphinHDCN', 'NintendoBrowser', 'NCSA', + 'NCSA Mosaic', 'NCSA_Mosaic', 'U', 'NetFrontNX', 'QtWebKit', + 'HtmlRenderer', 'HbbTV', 'WebAppManager', 'SmartTV', 'UPLUSTVBROWSER', + 'LG Browser', 'LG', 'LGSmartTV', 'OBIGO-T10', 'Linux', 'DLNADOC', + 'Aplix_SANYO_browser', 'Japanese', 'WebBrowser', 'Freetime', + 'OreganMediaBrowser', 'NETRANGEMMH', 'http:', 'bxapi', 'Kodi', + 'XBMC', 'KreaTVWebKit', 'MachBlue', 'Espial', 'TouchPad', + 'sharp', 'sharp wd browser', 'sharp pda browser', 'browser', + 'Palmscape', 'CorePlayer', 'Xiino', 'SONY', 'WorldTALK', 'TOPS', + 'Windows', 'Microsoft Pocket Internet Explorer', 'Explorer', + 'CE', 'Desktop', 'Maemo Browser', 'Maemo', 'baidubrowser', + 'Mercury', 'BREW-Applet', 'ucweb-squid', 'iSurf', '3gpp-gba', + 'InfoPath.2', 'UC', 'J2ME', 'IUC', 'AveFront', 'MMP', 'BaiduHD', + '360%20Lite', '360', 'AppleWebKit', 'Instagram', 'FBOP', + 'Nuanti', 'NuantiMeta', 'Silk', 'VTE', 'DreamKey', 'DreamPassport', + 'Aplix_SEGASATURN_browser', 'NWF', 'Bunjalloo', 'libwww', + 'Inferno', 'NEXT', 'I', 'Microsoft Internet Explorer', 'MAM3', + 'MAM2', '360SE', 'Ziepod', 'Vista', 'XP', 'Links', 'Syllable', + 'sun4m', 'sun4c', 'sun4u', 'i86pc', 'X11', 'NaenaraBrowser', + 'QuickTime', 'IBM', 'QQBrowser', 'x86_64', 'i686', 'i386', 'Chrome', + 'TenFourFox', 'Swing', 'NetFrontBrowserNX', 'Mac_PowerPC', + 'NetCast.TV-2012', 'NetCast.TV-2011', 'NetCast.Media-2011', + 'PaleMoon', 'Fedora', 'SUSE', 'iCab', 'Googlebot', 'Pixi', + 'Pre', 'ELinks', 'developer', 'beta', 'BingPreview', 'IBrowse', '+http:' + ]); + + $candidates = array_unique($candidates); + + foreach ($candidates as $i => $id) { + if (preg_match('/^[0-9\.]+$/u', $id)) { + unset($candidates[$i]); + continue; + } + + if (preg_match('/^[0-9]+[xX][0-9]+$/u', $id)) { + unset($candidates[$i]); + continue; + } + + if (preg_match('/^\[?[a-z]{2,2}(\-[a-z]{2,2})?\]?$/ui', $id)) { + unset($candidates[$i]); + continue; + } + + if (strlen($id) < 4) { + unset($candidates[$i]); + continue; + } + } + + foreach ($candidates as $i => $id) { + $this->identifyBasedOnIdUsingOs($id); + + if ($this->data->device->identified & Constants\Id::MATCH_UA) { + return; + } + } + } + + function identifyBasedOnIdentifier() + { + if ($this->data->device->identified & Constants\Id::MATCH_UA) { + return; + } + + $ids = []; + + if (!empty($this->data->device->identifier)) { + $ids[] = $this->data->device->identifier; + } + + if (!empty($this->data->device->model)) { + $ids[] = $this->data->device->model; + } + + foreach ($ids as $i => $id) { + $this->identifyBasedOnIdUsingOs($id); + + if ($this->data->device->identified & Constants\Id::MATCH_UA) { + return; + } + } + + foreach ($ids as $i => $id) { + $this->identifyBasedOnId($id); + + if ($this->data->device->identified & Constants\Id::MATCH_UA) { + return; + } + } + } + + function identifyBasedOnIdUsingOs($id) + { + switch ($this->data->os->getFamily()) { + + case 'Android': + $device = Data\DeviceModels::identify('android', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + break; + + case 'Brew': + $device = Data\DeviceModels::identify('brew', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + break; + + case 'Symbian': + $device = Data\DeviceModels::identify('symbian', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + break; + + case 'Windows': + case 'Windows CE': + case 'Windows Mobile': + $device = Data\DeviceModels::identify('wm', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!$this->data->isOs('Windows Mobile')) { + $this->data->os->reset([ + 'name' => 'Windows Mobile' + ]); + } + } + break; + + default: + $device = Data\DeviceModels::identify('feature', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + break; + } + } + + function identifyBasedOnId($id) + { + if ($this->data->device->type != 'mobile') { + return; + } + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('brew', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + + if (!in_array($this->data->os->name, [ 'Brew', 'Brew MP' ])) { + $this->data->os->name = 'Brew'; + } + } + } + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('bada', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + $this->data->os->name = 'Bada'; + } + } + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('touchwiz', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + $this->data->os->name = 'Touchwiz'; + } + } + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('symbian', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + $this->data->os->reset([ + 'family' => new Family([ 'name' => 'Symbian' ]) + ]); + } + } + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('wm', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + $this->data->os->name = 'Windows Mobile'; + } + } + + if (!($this->data->device->identified & Constants\Id::MATCH_UA)) { + $device = Data\DeviceModels::identify('feature', $id); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Pda.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Pda.php new file mode 100644 index 0000000..3f450b1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Pda.php @@ -0,0 +1,290 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Version; + +trait Pda +{ + private function detectPda($ua) + { + if (!preg_match('/(CASIO|Palm|Psion|pdQ|COM|airboard|sharp|pda|POCKET-E|OASYS|NTT\/PI)/ui', $ua)) { + return; + } + + $this->detectCasio($ua); + $this->detectPalm($ua); + $this->detectPsion($ua); + $this->detectSonyMylo($ua); + $this->detectSonyAirboard($ua); + $this->detectSharpZaurus($ua); + $this->detectSharpShoin($ua); + $this->detectPanasonicPocketE($ua); + $this->detectFujitsuOasys($ua); + $this->detectNttPetitWeb($ua); + } + + + + + + /* Casio */ + + private function detectCasio($ua) + { + if (preg_match('/Product\=CASIO\/([^\);]+)[\);]/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Casio'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->type = Constants\DeviceType::PDA; + + if ($match[1] == 'CASSIOPEIA BE') { + $this->data->device->model = 'Cassiopeia'; + } + + if ($match[1] == 'PPP101') { + $this->data->device->model = 'Pocket PostPet'; + $this->data->device->carrier = 'DoCoMo'; + } + } + } + + + /* Palm */ + + private function detectPalm($ua) + { + if (preg_match('/PalmOS/iu', $ua, $match)) { + $this->data->os->name = 'Palm OS'; + $this->data->device->type = Constants\DeviceType::PDA; + + if (preg_match('/PalmOS ([0-9.]*)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/; ([^;)]+)\)/u', $ua, $match)) { + $device = Data\DeviceModels::identify('palmos', $match[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/PalmOS\/([a-z]+)\/model ([^\/]+)\//iu', $ua, $match)) { + $device = Data\DeviceModels::identify('palmos', $match[1] . '-' . $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + if (preg_match('/Palm OS ([0-9.]*)/iu', $ua, $match)) { + $this->data->os->name = 'Palm OS'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->device->type = Constants\DeviceType::PDA; + } + + if (preg_match('/PalmSource/u', $ua, $match)) { + $this->data->os->name = 'Palm OS'; + $this->data->os->version = null; + $this->data->device->type = Constants\DeviceType::PDA; + + if (preg_match('/PalmSource\/([^;]+)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified = Constants\Id::PATTERN; + } + + if (isset($this->data->device->model) && $this->data->device->model) { + $device = Data\DeviceModels::identify('palmos', $this->data->device->model); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + /* Some model markers */ + + if (preg_match('/PalmPilot Pro/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Palm'; + $this->data->device->model = 'Pilot Professional'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + if (preg_match('/pdQbrowser/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Kyocera'; + $this->data->device->model = 'QCP-6035'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + + + /* PSION */ + + private function detectPsion($ua) + { + if (preg_match('/Psion Cpw\//iu', $ua, $match)) { + $this->data->browser->name = 'WAP Browser'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + + $this->data->os->name = 'EPOC'; + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + + $this->data->device->manufacturer = 'Psion'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->type = Constants\DeviceType::PDA; + + if (preg_match('/\(([A-Z0-9]+)\)/u', $ua, $match)) { + switch ($match[1]) { + case 'S5': + $this->data->device->model = 'Series 5mx'; + break; + case 'S7': + $this->data->device->model = 'Series 7'; + break; + case 'RV': + $this->data->device->model = 'Revo'; + break; + } + } + } + } + + + /* Sony Mylo */ + + private function detectSonyMylo($ua) + { + if (preg_match('/SONY\/COM([0-9])/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Sony'; + $this->data->device->model = 'Mylo ' . $match[1]; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->type = Constants\DeviceType::PDA; + + $this->data->os->reset(); + + if (preg_match('/Qt embedded/ui', $ua, $match)) { + $this->data->os->name = 'Qtopia'; + } + } + } + + + /* Sony Airboard */ + + private function detectSonyAirboard($ua) + { + if (preg_match('/SONY\/airboard\/IDT-([A-Z0-9]+)/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Sony'; + $this->data->device->model = 'Airboard ' . $match[1]; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->type = Constants\DeviceType::PDA; + } + + if (preg_match('/LocationFreeTV; Airboard\/(LF-[A-Z0-9]+)/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Sony'; + $this->data->device->model = 'Airboard ' . $match[1]; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->type = Constants\DeviceType::PDA; + } + } + + + /* Sharp Zaurus */ + + private function detectSharpZaurus($ua) + { + if (preg_match('/sharp pda browser\/([0-9\.]+)/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Sharp'; + $this->data->device->model = 'Zaurus'; + $this->data->device->type = Constants\DeviceType::PDA; + + if (preg_match('/\(([A-Z0-9\-]+)\/[0-9\.]+\)/ui', $ua, $match)) { + $this->data->device->model = 'Zaurus ' . $match[1]; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + } + + if (preg_match('/\(PDA; (SL-[A-Z][0-9]+)\/[0-9\.]/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Sharp'; + $this->data->device->model = 'Zaurus ' . $match[1]; + $this->data->device->type = Constants\DeviceType::PDA; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + } + + + /* Sharp Shoin (Word Processor) */ + + private function detectSharpShoin($ua) + { + if (preg_match('/sharp wd browser\/([0-9\.]+)/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Sharp'; + $this->data->device->model = 'Mobile Shoin'; + $this->data->device->type = Constants\DeviceType::PDA; + + if (preg_match('/\(([A-Z0-9\-]+)\/[0-9\.]+\)/ui', $ua, $match)) { + $this->data->device->model = 'Mobile Shoin ' . $match[1]; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + } + } + + + /* Panasonic POCKET・E */ + + private function detectPanasonicPocketE($ua) + { + if (preg_match('/Product\=Panasonic\/POCKET-E/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Panasonic'; + $this->data->device->model = 'POCKET・E'; + $this->data->device->type = Constants\DeviceType::PDA; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + } + + + /* Fujitsu OASYS */ + + private function detectFujitsuOasys($ua) + { + if (preg_match('/Fujitsu; OASYS/ui', $ua, $match)) { + $this->data->device->manufacturer = 'Fujitsu'; + $this->data->device->model = 'OASYS'; + $this->data->device->type = Constants\DeviceType::PDA; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + + if (preg_match('/eNavigator/ui', $ua, $match)) { + $this->data->browser->name = 'eNavigator'; + $this->data->browser->version = null; + $this->data->browser->type = Constants\BrowserType::BROWSER; + } + } + } + + + /* PetitWeb */ + + private function detectNttPetitWeb($ua) + { + if (preg_match('/Product\=NTT\/(PI-[0-9]+)/ui', $ua, $match)) { + $this->data->device->manufacturer = 'NTT'; + $this->data->device->model = 'PetitWeb ' . $match[1]; + $this->data->device->type = Constants\DeviceType::PDA; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Phone.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Phone.php new file mode 100644 index 0000000..c2c06d9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Phone.php @@ -0,0 +1,46 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Version; + +trait Phone +{ + private function detectPhone($ua) + { + $this->detectNttTeless($ua); + $this->detectSnom($ua); + } + + + + + + /* NTT Teless */ + + private function detectNttTeless($ua) + { + if (preg_match('/Product\=NTT\/Teless/ui', $ua, $match)) { + $this->data->device->manufacturer = 'NTT'; + $this->data->device->model = 'Teless'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->subtype = Constants\DeviceSubType::DESKTOP; + } + } + + /* SNOM */ + + private function detectSnom($ua) + { + if (preg_match('/snom(.+)-SIP/ui', $ua, $match)) { + $this->data->device->manufacturer = 'SNOM'; + $this->data->device->model = $match[1] . ' IP Telephone'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->subtype = Constants\DeviceSubType::DESKTOP; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Printer.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Printer.php new file mode 100644 index 0000000..3afb9e4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Printer.php @@ -0,0 +1,66 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; + +trait Printer +{ + private function detectPrinter($ua) + { + if (!preg_match('/(TASKalfa|CanonIJCL|IR-S|PrintSmart|EpsonHello)/ui', $ua)) { + return; + } + + /* TASKalfa */ + + if (preg_match('/TASKalfa ([0-9A-Z]+)/iu', $ua, $match)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Kyocera', + 'model' => 'TASKalfa ' . $match[1], + 'type' => Constants\DeviceType::PRINTER + ]); + } + + + /* Canon IJ */ + + if (preg_match('/CanonIJCL/iu', $ua, $match)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Canon', + 'model' => 'IJ Printer', + 'type' => Constants\DeviceType::PRINTER + ]); + } + + /* Canon iR S */ + + if (preg_match('/IR-S/iu', $ua, $match)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Canon', + 'model' => 'imageRUNNER', + 'type' => Constants\DeviceType::PRINTER + ]); + } + + /* HP Web PrintSmart */ + + if (preg_match('/HP Web PrintSmart/iu', $ua, $match)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'HP', + 'model' => 'Web PrintSmart', + 'type' => Constants\DeviceType::PRINTER + ]); + } + + /* Epson Hello */ + + if (preg_match('/EpsonHello\//iu', $ua, $match)) { + $this->data->device->setIdentification([ + 'manufacturer' => 'Epson', + 'model' => 'Hello', + 'type' => Constants\DeviceType::PRINTER + ]); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Signage.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Signage.php new file mode 100644 index 0000000..b36aee9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Signage.php @@ -0,0 +1,41 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; + +trait Signage +{ + private function detectSignage($ua) + { + if (!preg_match('/(BrightSign|ADAPI)/ui', $ua)) { + return; + } + + /* BrightSign */ + + if (preg_match('/BrightSign\/[0-9\.]+(?:-[a-z0-9\-]+)? \(([^\)]+)/u', $ua, $match)) { + $this->data->os->reset(); + $this->data->device->setIdentification([ + 'manufacturer' => 'BrightSign', + 'model' => $match[1], + 'type' => Constants\DeviceType::SIGNAGE + ]); + } + + + /* Iadea */ + + if (preg_match('/ADAPI/u', $ua) && preg_match('/\(MODEL:([^\)]+)\)/u', $ua, $match)) { + if (!$this->data->isOs('Android')) { + $this->data->os->reset(); + } + + $this->data->device->setIdentification([ + 'manufacturer' => 'IAdea', + 'model' => $match[1], + 'type' => Constants\DeviceType::SIGNAGE + ]); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Tablet.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Tablet.php new file mode 100644 index 0000000..c7f2122 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Tablet.php @@ -0,0 +1,37 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Version; + +trait Tablet +{ + private function detectTablet($ua) + { + $this->detectWebTab($ua); + } + + + + + + /* WeTab */ + + private function detectWebTab($ua) + { + if (preg_match('/WeTab-Browser /ui', $ua, $match)) { + $this->data->device->manufacturer = 'WeTab'; + $this->data->device->model = 'WeTab'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->type = Constants\DeviceType::TABLET; + + $this->data->browser->name = 'WebTab Browser'; + $this->data->browser->version = null; + + $this->data->os->name = 'MeeGo'; + $this->data->os->version = null; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Television.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Television.php new file mode 100644 index 0000000..dd1d27b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Device/Television.php @@ -0,0 +1,1192 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent\Device; + +use WhichBrowser\Constants; +use WhichBrowser\Data; + +trait Television +{ + private function detectTelevision($ua) + { + /* Detect the type based on some common markers */ + $this->detectGenericTelevision($ua); + + /* Try to parse some generic methods to store device information */ + $this->detectGenericTelevisionModels($ua); + $this->detectGenericInettvBrowser($ua); + $this->detectGenericHbbTV($ua); + + /* Look for specific manufacturers and models */ + $this->detectPanasonicTelevision($ua); + $this->detectSharpTelevision($ua); + $this->detectSamsungTelevision($ua); + $this->detectSonyTelevision($ua); + $this->detectPhilipsTelevision($ua); + $this->detectLgTelevision($ua); + $this->detectToshibaTelevision($ua); + $this->detectSanyoTelevision($ua); + + /* Try to detect set top boxes from various manufacturers */ + $this->detectSettopboxes($ua); + + /* Improve model names */ + $this->improveModelsOnDeviceTypeTelevision(); + } + + + + + + /* Generic markers */ + + private function detectGenericTelevision($ua) + { + if (preg_match('/CE-HTML/u', $ua)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + if (preg_match('/SmartTvA\//u', $ua)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + + if (preg_match('/NETRANGEMMH/u', $ua)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + } + } + + + /* Toshiba */ + + private function detectToshibaTelevision($ua) + { + if (preg_match('/Toshiba_?TP\//u', $ua) || preg_match('/TSBNetTV ?\//u', $ua)) { + $this->data->device->manufacturer = 'Toshiba'; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + if (preg_match('/TOSHIBA;[^;]+;([A-Z]+[0-9]+[A-Z]+);/u', $ua, $match)) { + $this->data->device->manufacturer = 'Toshiba'; + $this->data->device->model = $match[1]; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + + + /* LG */ + + private function detectLgTelevision($ua) + { + if (preg_match('/(LGSmartTV|LG smartTV)/u', $ua)) { + $this->data->device->manufacturer = 'LG'; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + if (preg_match('/UPLUSTVBROWSER/u', $ua)) { + $this->data->device->manufacturer = 'LG'; + $this->data->device->series = 'U+ tv'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + + /* NetCast */ + + if (preg_match('/LG NetCast\.(TV|Media)-([0-9]*)/u', $ua, $match)) { + $this->data->device->manufacturer = 'LG'; + $this->data->device->series = 'NetCast ' . $match[1] . ' ' . $match[2]; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/LG Browser\/[0-9.]+\([^;]+; LGE; ([^;]+);/u', $ua, $match)) { + if (substr($match[1], 0, 6) != 'GLOBAL' && substr($match[1], 0, 7) != 'NETCAST') { + $this->data->device->model = $match[1]; + } + } + } + + /* NetCast */ + + if ($ua == "Mozilla/5.0 (X11; Linux; ko-KR) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+" || + $ua == "Mozilla/5.0 (DirectFB; Linux; ko-KR) AppleWebKit/534.26 (KHTML, like Gecko) Version/5.0 Safari/534.26" || + $ua == "Mozilla/5.0 (DirectFB; Linux; ko-KR) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+") { + $this->data->device->manufacturer = 'LG'; + $this->data->device->series = 'NetCast TV 2012'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + + /* NetCast or WebOS */ + + if (preg_match('/NetCast/u', $ua) && preg_match('/SmartTV\/([0-9])/u', $ua, $match)) { + $this->data->device->manufacturer = 'LG'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (intval($match[1]) < 5) { + $this->data->device->series = 'NetCast TV'; + } else { + $this->data->device->series = 'webOS TV'; + + $this->data->os->reset([ + 'name' => 'webOS', + 'hidden' => true + ]); + } + } + + /* WebOS */ + + if (preg_match('/Web[O0]S/u', $ua) && preg_match('/Large Screen/u', $ua)) { + $this->data->device->manufacturer = 'LG'; + $this->data->device->series = 'webOS TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + $this->data->os->reset([ + 'name' => 'webOS', + 'hidden' => true + ]); + } + + if (preg_match('/Web[O0]S; Linux\/SmartTV/u', $ua)) { + $this->data->device->manufacturer = 'LG'; + $this->data->device->series = 'webOS TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + $this->data->os->reset([ + 'name' => 'webOS', + 'hidden' => true + ]); + } + + if (preg_match('/webOS\.TV-([0-9]+)/u', $ua, $match)) { + $this->data->device->manufacturer = 'LG'; + $this->data->device->series = 'webOS TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/LG Browser\/[0-9.]+\(LGE; ([^;]+);/u', $ua, $match)) { + if (strtoupper(substr($match[1], 0, 5)) != 'WEBOS') { + $this->data->device->model = $match[1]; + } + } + + $this->data->os->reset([ + 'name' => 'webOS', + 'hidden' => true + ]); + } + + if (preg_match('/PBRM\//u', $ua)) { + $this->data->browser->name = "Pro:Centric"; + $this->data->browser->version = null; + + $this->data->device->manufacturer = 'LG'; + $this->data->device->series = 'webOS TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/PBRM\/[0-9.]+ \( ;LGE ;([^;]+) ;/u', $ua, $match)) { + if (strtoupper(substr($match[1], 0, 5)) != 'WEBOS') { + $this->data->device->model = $match[1]; + } + } + + $this->data->os->reset([ + 'name' => 'webOS', + 'hidden' => true + ]); + } + } + + + /* Philips */ + + private function detectPhilipsTelevision($ua) + { + if (preg_match('/NETTV\//u', $ua)) { + $this->data->device->manufacturer = 'Philips'; + $this->data->device->series = 'Net TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/AquosTV/u', $ua)) { + $this->data->device->manufacturer = 'Sharp'; + $this->data->device->series = 'Aquos TV'; + } + + if (preg_match('/BANGOLUFSEN/u', $ua)) { + $this->data->device->manufacturer = 'Bang & Olufsen'; + $this->data->device->series = 'Smart TV'; + } + + if (preg_match('/PHILIPS-AVM/u', $ua)) { + $this->data->device->series = 'Blu-ray Player'; + } + } + + if (preg_match('/PHILIPS_OLS_20[0-9]+/u', $ua)) { + $this->data->device->manufacturer = 'Philips'; + $this->data->device->series = 'Net TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + + + /* Sony */ + + private function detectSonyTelevision($ua) + { + if (preg_match('/SonyCEBrowser/u', $ua)) { + $this->data->device->manufacturer = 'Sony'; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/SonyCEBrowser\/[0-9.]+ \((?:BDPlayer; |DTV[0-9]+\/)?([^;_]+)/u', $ua, $match)) { + if ($match[1] != 'ModelName') { + $this->data->device->model = $match[1]; + } + } + } + + if (preg_match('/SonyDTV/u', $ua)) { + $this->data->device->manufacturer = 'Sony'; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/(KDL-?[0-9]+[A-Z]+[0-9]+)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->generic = false; + } + + if (preg_match('/(XBR-?[0-9]+[A-Z]+[0-9]+)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->generic = false; + } + } + + if (preg_match('/SonyBDP/u', $ua)) { + $this->data->device->manufacturer = 'Sony'; + $this->data->device->series = "Blu-ray Player"; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + if (preg_match('/SmartBD/u', $ua) && preg_match('/(BDP-[A-Z][0-9]+)/u', $ua, $match)) { + $this->data->device->manufacturer = 'Sony'; + $this->data->device->model = $match[1]; + $this->data->device->series = 'Blu-ray Player'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + if (preg_match('/\s+([0-9]+)BRAVIA/u', $ua, $match)) { + $this->data->device->manufacturer = 'Sony'; + $this->data->device->model = 'Bravia'; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + + + /* Samsung */ + + private function detectSamsungTelevision($ua) + { + if (preg_match('/(SMART-TV;|SmartHub;)/u', $ua)) { + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/Linux\/SmartTV\+([0-9]*)/u', $ua, $match)) { + $this->data->device->series = 'Smart TV ' . $match[1]; + } elseif (preg_match('/Maple([0-9]*)/u', $ua, $match)) { + $this->data->device->series = 'Smart TV ' . $match[1]; + } + } + + if (preg_match('/Maple_?([0-9][0-9][0-9][0-9])/u', $ua, $match)) { + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->series = 'Smart TV ' . $match[1]; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/Linux\/(?:SmartTV)?\+([0-9]{4,4})/u', $ua, $match)) { + $this->data->device->series = 'Smart TV ' . $match[1]; + } + } + + if (preg_match('/Maple ([0-9]+\.[0-9]+)\.[0-9]+/u', $ua, $match)) { + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + switch ($match[1]) { + case '5.0': + $this->data->device->series = 'Smart TV 2009'; + break; + case '5.1': + $this->data->device->series = 'Smart TV 2010'; + break; + case '6.0': + $this->data->device->series = 'Smart TV 2011'; + break; + } + } + + if (preg_match('/Model\/Samsung-(BD-[A-Z][0-9]+)/u', $ua, $match)) { + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->model = $match[1]; + $this->data->device->series = 'Blu-ray Player'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + if (preg_match('/olleh tv;/u', $ua)) { + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->model = null; + $this->data->device->series = null; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/(SMT-[A-Z0-9]+)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identifier = $match[1]; + $this->data->device->generic = false; + } + + if ($this->data->device->model == "SMT-E5015") { + $this->data->device->model = 'Olleh SkyLife Smart Settopbox'; + } + } + } + + + /* Sanyo */ + + private function detectSanyoTelevision($ua) + { + if (preg_match('/Aplix_SANYO_browser/u', $ua)) { + $this->data->device->manufacturer = 'Sanyo'; + $this->data->device->series = 'Internet TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + + + /* Sharp */ + + private function detectSharpTelevision($ua) + { + if (preg_match('/(AQUOSBrowser|AQUOS-(AS|DMP))/u', $ua)) { + $this->data->device->manufacturer = 'Sharp'; + $this->data->device->series = 'Aquos TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/LC\-([0-9]+[A-Z]+[0-9]+[A-Z]+)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->generic = false; + } + } + } + + + /* Panasonic */ + + private function detectPanasonicTelevision($ua) + { + if (preg_match('/Viera/u', $ua)) { + $this->data->device->manufacturer = 'Panasonic'; + $this->data->device->series = 'Viera'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/Panasonic\.tv\.(?:mid\.|pro4\.)?([0-9]+)/u', $ua, $match)) { + $this->data->device->series = 'Viera ' . $match[1]; + } + + if (preg_match('/\(Panasonic, ([0-9]+),/u', $ua, $match)) { + $this->data->device->series = 'Viera ' . $match[1]; + } + + if (preg_match('/Viera\; rv\:34/u', $ua, $match)) { + $this->data->device->series = 'Viera 2015'; + } + } + + if (preg_match('/; Diga;/u', $ua)) { + $this->data->device->manufacturer = 'Panasonic'; + $this->data->device->series = 'Diga'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + + + /* Various set top boxes */ + + private function detectSettopboxes($ua) + { + if (!preg_match('/(lacleTV|LOEWE|KreaTV|ADB|Mstar|TechniSat|Technicolor|Highway|CiscoBrowser|Sunniwell|Enseo|LocationFreeTV|Winbox|DuneHD|Roku|AppleTV|Apple TV|WebTV|OpenTV|MediStream)/ui', $ua)) { + return; + } + + /* Orange La clé TV */ + + if (preg_match('/lacleTV\//u', $ua)) { + $this->data->device->manufacturer = 'Orange'; + $this->data->device->series = 'La clé TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + /* Loewe */ + + if (preg_match('/LOEWE\/TV/u', $ua)) { + $this->data->device->manufacturer = 'Loewe'; + $this->data->device->series = 'Smart TV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/((?:SL|ID)[0-9]+)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + } + } + + /* KreaTV */ + + if (preg_match('/KreaTV/u', $ua)) { + $this->data->os->reset(); + + $this->data->device->series = 'KreaTV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + + if (preg_match('/Motorola/u', $ua)) { + $this->data->device->manufacturer = 'Motorola'; + } + } + + /* ADB */ + + if (preg_match('/\(ADB; ([^\)]+)\)/u', $ua, $match)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'ADB'; + $this->data->device->model = ($match[1] != 'Unknown' ? str_replace('ADB', '', $match[1]) . ' ' : '') . 'IPTV receiver'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* MStar */ + + if (preg_match('/Mstar;/u', $ua)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'MStar'; + $this->data->device->model = 'PVR'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + /* TechniSat */ + + if (preg_match('/TechniSat ([^;]+);/u', $ua, $match)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'TechniSat'; + $this->data->device->model = $match[1]; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* Technicolor */ + + if (preg_match('/Technicolor_([^;]+);/u', $ua, $match)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Technicolor'; + $this->data->device->model = $match[1]; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* Cisco MediaHighway */ + + if (preg_match('/(Media-Highway Evolution|CiscoBrowser\/CI)/u', $ua, $match)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Cisco'; + $this->data->device->model = 'MediaHighway'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* Sunniwell */ + + if (preg_match('/Sunniwell/u', $ua) && preg_match('/Resolution/u', $ua)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Sunniwell'; + $this->data->device->series = 'STB'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* Enseo */ + + if (preg_match('/Enseo\/([A-Z0-9]+)/u', $ua, $match)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Enseo'; + $this->data->device->model = $match[1]; + $this->data->device->series = 'STB'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* Sony LocationFreeTV */ + + if (preg_match('/LocationFreeTV\/([A-Z0-9\-]+)/u', $ua, $match)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Sony'; + $this->data->device->model = 'LocationFreeTV ' . $match[1]; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* Winbox Evo2 */ + + if (preg_match('/Winbox Evo2/u', $ua)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Winbox'; + $this->data->device->model = 'Evo2'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* DuneHD */ + + if (preg_match('/DuneHD\//u', $ua)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Dune HD'; + $this->data->device->model = ''; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/DuneHD\/[0-9.]+ \(([^;]+);/u', $ua, $match)) { + $this->data->device->model = $match[1]; + } + } + + /* Roku */ + + if (preg_match('/^Roku\/DVP-(?:[0-9A-Z]+-)?[0-9\.]+ \(([0-9]{2,2})/u', $ua, $match)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Roku'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + + switch ($match[1]) { + case '02': + $this->data->device->model = '2 XS'; + $this->data->device->generic = false; + break; + case '04': + $this->data->device->model = '3'; + $this->data->device->generic = false; + break; + case '07': + $this->data->device->model = 'LT'; + $this->data->device->generic = false; + break; + case '09': + $this->data->device->model = 'Streaming Stick'; + $this->data->device->generic = false; + break; + } + + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + if (preg_match('/\(Roku/u', $ua)) { + $this->data->device->manufacturer = 'Roku'; + $this->data->device->model = ''; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + + /* AppleTV */ + + if (preg_match('/Apple ?TV/u', $ua)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Apple'; + $this->data->device->model = 'AppleTV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* WebTV */ + + if (preg_match('/WebTV\/[0-9.]/u', $ua)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Microsoft'; + $this->data->device->model = 'WebTV'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* MediStream */ + + if (preg_match('/MediStream/u', $ua)) { + $this->data->os->reset(); + + $this->data->device->manufacturer = 'Bewatec'; + $this->data->device->model = 'MediStream'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + } + + + /* Generic model information */ + + private function detectGenericTelevisionModels($ua) + { + if (preg_match('/\(([^,\(]+),\s*([^,\(]+),\s*(?:[Ww]ired|[Ww]ireless)\)/u', $ua, $match)) { + $vendorName = Data\Manufacturers::identify(Constants\DeviceType::TELEVISION, $match[1]); + $modelName = trim($match[2]); + + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::PATTERN; + + if (!isset($this->data->device->series)) { + $this->data->device->series = 'Smart TV'; + } + + switch ($vendorName) { + case 'ARRIS': + $this->data->device->manufacturer = 'Arris'; + $this->data->device->model = $modelName; + break; + + case 'LG': + $this->data->device->manufacturer = 'LG'; + + switch ($modelName) { + case 'WEBOS1': + case 'webOS.TV': + $this->data->device->series = 'webOS TV'; + break; + case 'NETCAST4': + case 'NetCast4.0': + case 'GLOBAL-PLAT4': + $this->data->device->series = 'NetCast TV 2013'; + break; + default: + $this->data->device->model = $modelName; + break; + } + + break; + + case 'Google Fiber': + $this->data->device->manufacturer = $vendorName; + $this->data->device->model = 'TV Box'; + break; + + case 'Sagemcom': + $this->data->device->manufacturer = $vendorName; + $this->data->device->series = 'Settopbox'; + + if (preg_match('/^([A-Z]+[0-9]+)/ui', $modelName, $match)) { + $this->data->device->model = $match[1]; + unset($this->data->device->series); + } + + break; + + case 'TiVo': + $this->data->device->manufacturer = 'TiVo'; + $this->data->device->series = 'DVR'; + break; + + default: + $this->data->device->manufacturer = $vendorName; + + if (!in_array($modelName, [ 'dvb' ])) { + $this->data->device->model = $modelName; + } + + break; + } + } + } + + + /* InettvBrowser model information */ + + private function detectGenericInettvBrowser($ua) + { + if (preg_match('/(?:DTVNetBrowser|InettvBrowser|Hybridcast)\/[0-9\.]+[A-Z]? ?\(/u', $ua, $match)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + + $vendorName = null; + $modelName = null; + $found = false; + + if (preg_match('/(?:DTVNetBrowser|InettvBrowser)\/[0-9\.]+[A-Z]? ?\(([^;]*)\s*;\s*([^;]*)\s*;/u', $ua, $match)) { + $vendorName = trim($match[1]); + $modelName = trim($match[2]); + $found = true; + } + + if (preg_match('/Hybridcast\/[0-9\.]+ ?\([^;]*;([^;]*)\s*;\s*([^;]*)\s*;/u', $ua, $match)) { + $vendorName = trim($match[1]); + $modelName = trim($match[2]); + $found = true; + } + + if ($found) { + $this->data->device->identified |= Constants\Id::PATTERN; + + $data = [ + '0003D5' => 'Advanced Communications', + '000024' => 'Connect AS', + '000087' => 'Hitachi', + '00A0B0' => 'I-O Data Device', + '00E091' => 'LG', + '0050C9' => 'Maspro Denkoh', + '002692' => 'Mitsubishi', + '38E08E' => 'Mitsubishi', + '008045' => 'Panasonic', + '00E036' => 'Pioneer', + '00E064' => 'Samsung', + '08001F' => 'Sharp', + '00014A' => 'Sony', + '000039' => 'Toshiba' + ]; + + if (isset($data[$vendorName])) { + $this->data->device->manufacturer = $data[$vendorName]; + + if ($this->data->device->manufacturer == 'LG') { + switch ($modelName) { + case 'LGE2D2012M': + $this->data->device->series = 'NetCast TV 2012'; + break; + case 'LGE3D2012M': + $this->data->device->series = 'NetCast TV 2012'; + break; + case 'LGwebOSTV': + case 'webOSTV3_0': + $this->data->device->series = 'webOS TV'; + break; + } + } + + if ($this->data->device->manufacturer == 'Panasonic') { + if (substr($modelName, 0, 6) != 'PANATV') { + $this->data->device->model = $modelName; + } + } + } + + if (!isset($this->data->device->series)) { + $this->data->device->series = 'Smart TV'; + } + } + } + } + + + /* HbbTV model information */ + + private function detectGenericHbbTV($ua) + { + if (preg_match('/((HbbTV|OHTV|SmartTV)\/[0-9\.]+|CE-HTML)/iu', $ua)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + + $vendorName = null; + $modelName = null; + $found = false; + + if (preg_match('/HbbTV\/[0-9\.]+;CE-HTML\/[0-9\.]+;([A-Z]+)\s([^;]+);/iu', $ua, $match)) { + $vendorName = Data\Manufacturers::identify(Constants\DeviceType::TELEVISION, $match[1]); + $modelName = trim($match[2]); + $found = true; + } + + if (preg_match('/UID\([a-f0-9:]+\/([^\/]+)\/([^\/]+)\/[0-9a-z\.]+\)\+CE-HTML/iu', $ua, $match)) { + $vendorName = Data\Manufacturers::identify(Constants\DeviceType::TELEVISION, $match[2]); + $modelName = trim($match[1]); + $found = true; + } + + if (preg_match('/(?:HbbTV|OHTV)\/[0-9\.]+ \(([^;]*);\s*([^;]*)\s*;\s*([^;]*)\s*;/u', $ua, $match)) { + if (trim($match[1]) == "" || in_array(strtok($match[1], ' '), [ 'PVR', 'DL' ]) || strpos($match[1], '+') !== false) { + $vendorName = Data\Manufacturers::identify(Constants\DeviceType::TELEVISION, $match[2]); + $modelName = trim($match[3]); + } else { + $vendorName = Data\Manufacturers::identify(Constants\DeviceType::TELEVISION, $match[1]); + $modelName = trim($match[2]); + } + + $found = true; + } + + if (preg_match('/(?:^|\s)SmartTV\/[0-9\.]+ \(([^;]*)\s*;\s*([^;]*)\s*;/u', $ua, $match)) { + $vendorName = Data\Manufacturers::identify(Constants\DeviceType::TELEVISION, $match[1]); + $modelName = trim($match[2]); + $found = true; + } + + if (in_array($vendorName, [ 'Access', 'ANT', 'EMSYS', 'Em-Sys', 'Ocean Blue Software', 'Opera', 'Opera Software', 'Seraphic', 'ST', 'Vendor' ])) { + $found = false; + } + + if ($found) { + $this->data->device->identified |= Constants\Id::PATTERN; + + switch ($vendorName) { + case 'LG': + $this->data->device->manufacturer = 'LG'; + + switch ($modelName) { + case 'NetCast 3.0': + case 'GLOBAL_PLAT3': + $this->data->device->series = 'NetCast TV 2012'; + break; + case 'NetCast 4.0': + case 'GLOBAL-PLAT4': + $this->data->device->series = 'NetCast TV 2013'; + break; + case 'WEBOS1': + case 'WEBOS2.0': + case 'WEBOS3': + $this->data->device->series = 'webOS TV'; + break; + } + + break; + + case 'Samsung': + $this->data->device->manufacturer = 'Samsung'; + + switch ($modelName) { + case 'SmartTV2012': + $this->data->device->series = 'Smart TV 2012'; + break; + case 'SmartTV2013': + $this->data->device->series = 'Smart TV 2013'; + break; + case 'SmartTV2014': + $this->data->device->series = 'Smart TV 2014'; + break; + case 'SmartTV2015': + $this->data->device->series = 'Smart TV 2015'; + break; + case 'SmartTV2016': + $this->data->device->series = 'Smart TV 2016'; + break; + case 'SmartTV2017': + $this->data->device->series = 'Smart TV 2017'; + break; + case 'OTV-SMT-E5015': + $this->data->device->model = 'Olleh SkyLife Smart Settopbox'; + unset($this->data->device->series); + break; + } + + break; + + case 'Panasonic': + $this->data->device->manufacturer = 'Panasonic'; + + switch ($modelName) { + case 'VIERA 2011': + $this->data->device->series = 'Viera 2011'; + break; + case 'VIERA 2012': + $this->data->device->series = 'Viera 2012'; + break; + case 'VIERA 2013': + $this->data->device->series = 'Viera 2013'; + break; + case 'VIERA 2014': + $this->data->device->series = 'Viera 2014'; + break; + case 'VIERA 2015': + case 'Viera2015.mid': + $this->data->device->series = 'Viera 2015'; + break; + case 'VIERA 2016': + $this->data->device->series = 'Viera 2016'; + break; + case 'VIERA 2017': + $this->data->device->series = 'Viera 2017'; + break; + case 'SmartTV2018mid': + $this->data->device->series = 'Viera 2018'; + break; + default: + $this->data->device->model = $modelName; + + if (substr($modelName, 0, 4) == 'DIGA') { + $this->data->device->series = 'Diga'; + $this->data->device->model = null; + } + + break; + } + + break; + + case 'TV2N': + $this->data->device->manufacturer = 'TV2N'; + + switch ($modelName) { + case 'videoweb': + $this->data->device->model = 'Videoweb'; + break; + } + + break; + + default: + if ($vendorName != '' && !in_array($vendorName, [ 'OEM', 'vendorName' ])) { + $this->data->device->manufacturer = $vendorName; + } + + if ($modelName != '' && !in_array($modelName, [ 'dvb', 'modelName', 'undefined-model-name', 'N/A' ])) { + $this->data->device->model = $modelName; + } + + break; + } + + switch ($modelName) { + case 'hdr1000s': + $this->data->device->manufacturer = 'Humax'; + $this->data->device->model = 'HDR-1000S'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + break; + + case 'hdr4000t': + $this->data->device->manufacturer = 'Humax'; + $this->data->device->model = 'HDR-4000T'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + break; + + case 'hgs1000s': + $this->data->device->manufacturer = 'Humax'; + $this->data->device->model = 'HGS-1000S'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + break; + + case 'hms1000s': + case 'hms1000sph2': + $this->data->device->manufacturer = 'Humax'; + $this->data->device->model = 'HMS-1000S'; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + break; + } + } + } + + if (preg_match('/HbbTV\/[0-9.]+;CE-HTML\/[0-9.]+;([^\s;]+)\s[^\s;]+;/u', $ua, $match)) { + $this->data->device->manufacturer = Data\Manufacturers::identify(Constants\DeviceType::TELEVISION, $match[1]); + if (!isset($this->data->device->series)) { + $this->data->device->series = 'Smart TV'; + } + } + + if (preg_match('/HbbTV\/[0-9.]+;CE-HTML\/[0-9.]+;Vendor\/([^\s;]+);/u', $ua, $match)) { + $this->data->device->manufacturer = Data\Manufacturers::identify(Constants\DeviceType::TELEVISION, $match[1]); + if (!isset($this->data->device->series)) { + $this->data->device->series = 'Smart TV'; + } + } + } + + + /* Try to reformat some of the detected generic models */ + + private function improveModelsOnDeviceTypeTelevision() + { + if ($this->data->device->type != Constants\DeviceType::TELEVISION) { + return; + } + + + if (isset($this->data->device->model) && isset($this->data->device->manufacturer)) { + + if ($this->data->device->manufacturer == 'Dune HD') { + if (preg_match('/tv([0-9]+[a-z]?)/u', $this->data->device->model, $match)) { + $this->data->device->model = 'TV-' . strtoupper($match[1]); + } + + if ($this->data->device->model == 'connect') { + $this->data->device->model = 'Connect'; + } + } + + if ($this->data->device->manufacturer == 'Humax') { + $this->data->device->series = "Digital Receiver"; + } + + if ($this->data->device->manufacturer == 'Inverto') { + if (preg_match('/IDL[ -]?([0-9]+.*)/u', $this->data->device->model, $match)) { + $this->data->device->model = 'IDL ' . $match[1]; + } + + if (preg_match('/MBN([0-9]+)/u', $this->data->device->model, $match)) { + $this->data->device->model = 'MBN ' . $match[1]; + } + } + + if ($this->data->device->manufacturer == 'HyperPanel') { + $this->data->device->model = strtok(strtoupper($this->data->device->model), ' '); + } + + if ($this->data->device->manufacturer == 'LG') { + if (preg_match('/(?:ATSC|DVB)-(.*)/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->generic = false; + } + + if (preg_match('/[0-9][0-9]([A-Z][A-Z][0-9][0-9][0-9][0-9A-Z])/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->generic = false; + } + + if (preg_match('/Media\/(.*)/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->generic = false; + } + } + + if ($this->data->device->manufacturer == 'Loewe') { + $this->data->device->series = 'Smart TV'; + + if (preg_match('/((?:ID|SL)[0-9]+)/u', $this->data->device->model, $match)) { + $this->data->device->model = 'Connect '. $match[1]; + $this->data->device->generic = false; + } + } + + if ($this->data->device->manufacturer == 'Philips') { + if (preg_match('/[0-9][0-9]([A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9])/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->generic = false; + } + + if (preg_match('/(MT[0-9]+)/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->series = "Digital Receiver"; + $this->data->device->generic = false; + } + + if (preg_match('/(BDP[0-9]+)/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->series = "Blu-ray Player"; + $this->data->device->generic = false; + } + } + + if ($this->data->device->manufacturer == 'Toshiba') { + if (preg_match('/DTV_(.*)/u', $this->data->device->model, $match)) { + $this->data->device->model = 'Regza ' . $match[1]; + $this->data->device->generic = false; + } + + if (preg_match('/[0-9][0-9]([A-Z][A-Z][0-9][0-9][0-9])/u', $this->data->device->model, $match)) { + $this->data->device->model = 'Regza ' . $match[1]; + $this->data->device->generic = false; + } + + if (preg_match('/[0-9][0-9](ZL[0-9])/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1] . ' Cevo'; + $this->data->device->generic = false; + } + + if (preg_match('/(BDX[0-9]+)/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->series = "Blu-ray Player"; + $this->data->device->generic = false; + } + } + + if ($this->data->device->manufacturer == 'Selevision') { + $this->data->device->model = str_replace('Selevision ', '', $this->data->device->model); + } + + if ($this->data->device->manufacturer == 'Sharp') { + if (preg_match('/[0-9][0-9]([A-Z]+[0-9]+[A-Z]+)/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->generic = false; + } + } + + if ($this->data->device->manufacturer == 'Sony') { + if (preg_match('/(BDP[0-9]+G)/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->series = "Blu-ray Player"; + $this->data->device->generic = false; + } + + if (preg_match('/KDL?-?[0-9]*([A-Z]+[0-9]+)[A-Z]*/u', $this->data->device->model, $match)) { + $this->data->device->model = 'Bravia ' . $match[1]; + $this->data->device->series = 'Smart TV'; + $this->data->device->generic = false; + } + } + + if ($this->data->device->manufacturer == 'Pioneer') { + if (preg_match('/(BDP-[0-9]+)/u', $this->data->device->model, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->series = "Blu-ray Player"; + $this->data->device->generic = false; + } + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Engine.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Engine.php new file mode 100644 index 0000000..3837c31 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Engine.php @@ -0,0 +1,174 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent; + +use WhichBrowser\Model\Version; + +trait Engine +{ + private function &detectEngine($ua) + { + $this->detectWebkit($ua); + $this->detectKHTML($ua); + $this->detectGecko($ua); + $this->detectServo($ua); + $this->detectGoanna($ua); + $this->detectPresto($ua); + $this->detectTrident($ua); + $this->detectEdgeHTMLUseragent($ua); + + return $this; + } + + + + + /* WebKit */ + + private function detectWebkit($ua) + { + if (preg_match('/WebKit\/([0-9.]*)/iu', $ua, $match)) { + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + + if (preg_match('/(?:Chrome|Chromium)\/([0-9]*)/u', $ua, $match)) { + if (intval($match[1]) >= 27) { + $this->data->engine->reset([ 'name' => 'Blink' ]); + } + } + } + + if (preg_match('/Browser\/AppleWebKit\/?([0-9.]*)/iu', $ua, $match)) { + $this->data->engine->name = 'Webkit'; + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/AppleWebkit\(like Gecko\)/iu', $ua, $match)) { + $this->data->engine->name = 'Webkit'; + } + + if (preg_match('/CoralWebkit/iu', $ua, $match)) { + $this->data->engine->version = null; + } + } + + + /* KHTML */ + + private function detectKHTML($ua) + { + if (preg_match('/KHTML\/([0-9.]*)/u', $ua, $match)) { + $this->data->engine->name = 'KHTML'; + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + } + } + + + /* Gecko */ + + private function detectGecko($ua) + { + if (preg_match('/Gecko/u', $ua) && !preg_match('/like Gecko/iu', $ua)) { + $this->data->engine->name = 'Gecko'; + + if (preg_match('/; rv:([^\);]+)[\);]/u', $ua, $match)) { + $this->data->engine->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + } + } + + + /* Servo */ + + private function detectServo($ua) + { + if (preg_match('/Servo\/([0-9.]*)/u', $ua, $match)) { + $this->data->engine->name = 'Servo'; + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + } + } + + + /* Goanna */ + + private function detectGoanna($ua) + { + if (preg_match('/Goanna/u', $ua)) { + $this->data->engine->name = 'Goanna'; + + if (preg_match('/Goanna\/([0-9]\.[0-9.]+)/u', $ua, $match)) { + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/Goanna\/20[0-9]{6,6}/u', $ua) && preg_match('/; rv:([^\);]+)[\);]/u', $ua, $match)) { + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + } + } + } + + + /* Presto */ + + private function detectPresto($ua) + { + if (preg_match('/Presto\/([0-9.]*)/u', $ua, $match)) { + $this->data->engine->name = 'Presto'; + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + } + } + + + /* Trident */ + + private function detectTrident($ua) + { + if (preg_match('/Trident\/([0-9.]*)/u', $ua, $match)) { + $this->data->engine->name = 'Trident'; + $this->data->engine->version = new Version([ 'value' => $match[1] ]); + + + if (isset($this->data->browser->version) && isset($this->data->browser->name) && $this->data->browser->name == 'Internet Explorer') { + if ($this->data->engine->version->toNumber() >= 7 && $this->data->browser->version->toFloat() < 11) { + $this->data->browser->version = new Version([ 'value' => '11.0' ]); + $this->data->browser->mode = 'compat'; + } + + if ($this->data->engine->version->toNumber() == 6 && $this->data->browser->version->toFloat() < 10) { + $this->data->browser->version = new Version([ 'value' => '10.0' ]); + $this->data->browser->mode = 'compat'; + } + + if ($this->data->engine->version->toNumber() == 5 && $this->data->browser->version->toFloat() < 9) { + $this->data->browser->version = new Version([ 'value' => '9.0' ]); + $this->data->browser->mode = 'compat'; + } + + if ($this->data->engine->version->toNumber() == 4 && $this->data->browser->version->toFloat() < 8) { + $this->data->browser->version = new Version([ 'value' => '8.0' ]); + $this->data->browser->mode = 'compat'; + } + } + + if (isset($this->data->os->version) && isset($this->data->os->name) && $this->data->os->name == 'Windows Phone' && isset($this->data->browser->name) && $this->data->browser->name == 'Mobile Internet Explorer') { + if ($this->data->engine->version->toNumber() == 7 && $this->data->os->version->toFloat() < 8.1) { + $this->data->os->version = new Version([ 'value' => '8.1', 'details' => 2 ]); + } + + if ($this->data->engine->version->toNumber() == 5 && $this->data->os->version->toFloat() < 7.5) { + $this->data->os->version = new Version([ 'value' => '7.5', 'details' => 2 ]); + } + } + } + } + + + /* EdgeHTML */ + + private function detectEdgeHTMLUseragent($ua) + { + if (preg_match('/Edge\/([0-9.]*)/u', $ua, $match)) { + $this->data->engine->name = 'EdgeHTML'; + $this->data->engine->version = new Version([ 'value' => $match[1], 'hidden' => true ]); + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Os.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Os.php new file mode 100644 index 0000000..343f9d1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Os.php @@ -0,0 +1,2439 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Version; + +trait Os +{ + private function &detectOperatingSystem($ua) + { + $this->detectUnix($ua); + $this->detectLinux($ua); + $this->detectBsd($ua); + $this->detectDarwin($ua); + $this->detectWindows($ua); + $this->detectAndroid($ua); + $this->detectChromeos($ua); + $this->detectBlackberry($ua); + $this->detectWebos($ua); + $this->detectKaiOS($ua); + $this->detectSymbian($ua); + $this->detectNokiaOs($ua); + $this->detectTizen($ua); + $this->detectSailfish($ua); + $this->detectBada($ua); + $this->detectBrew($ua); + $this->detectQtopia($ua); + $this->detectOpenTV($ua); + $this->detectRemainingOperatingSystems($ua); + + return $this; + } + + + private function &refineOperatingSystem($ua) + { + $this->determineAndroidVersionBasedOnBuild($ua); + + return $this; + } + + + + + + + + /* Darwin */ + + private function detectDarwin($ua) + { + /* iOS */ + + if (preg_match('/\(iOS;/u', $ua)) { + $this->data->os->name = 'iOS'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/(iPhone|iPad|iPod)/u', $ua) && !preg_match('/like iPhone/u', $ua)) { + $this->data->os->name = 'iOS'; + + if (preg_match('/CPU like Mac OS X/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => '1.0' ]); + } + + if (preg_match('/OS (.*) like Mac OS X/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + + if (preg_match('/iPhone OS ([0-9._]*);/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + + if (preg_match('/iPhone Simulator;/u', $ua)) { + $this->data->device->type = Constants\DeviceType::EMULATOR; + } else { + if (preg_match('/(iPad|iPhone( 3GS| 3G| 4S| 4| 5)?|iPod( touch)?)/u', $ua, $match)) { + $device = Data\DeviceModels::identify('ios', $match[0]); + + if ($device) { + $this->data->device = $device; + } + } + + if (preg_match('/(iPad|iPhone|iPod)1?[0-9],[0-9][0-9]?/u', $ua, $match)) { + $device = Data\DeviceModels::identify('ios', $match[0]); + + if ($device) { + $this->data->device = $device; + } + } + } + } /* OS X */ + + elseif (preg_match('/Mac OS X/u', $ua) || preg_match('/;os=Mac/u', $ua)) { + $this->data->os->name = 'OS X'; + + if (preg_match('/Mac OS X (10[0-9\._]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]), 'details' => 2 ]); + } + + if (preg_match('/;os=Mac (10[0-9[\.,]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace(',', '.', $match[1]), 'details' => 2 ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* Darwin */ + + if (preg_match('/Darwin(?:\/([0-9]+).[0-9]+)?/u', $ua, $match)) { + if (preg_match('/\(X11;/u', $ua)) { + + /* Darwin */ + $this->data->os->name = 'Darwin'; + $this->data->device->type = Constants\DeviceType::DESKTOP; + } elseif (preg_match('/\((?:x86_64|i386|Power%20Macintosh)\)/u', $ua)) { + + /* OS X */ + $this->data->os->name = 'OS X'; + $this->data->device->type = Constants\DeviceType::DESKTOP; + + if (isset($match[1])) { + $version = Data\Darwin::getVersion('osx', $match[1]); + if ($version) { + $this->data->os->version = new Version($version); + } + + if (preg_match('/CFNetwork\/([0-9\.]+)/u', $ua, $match)) { + $version = Data\CFNetwork::getVersion('osx', $match[1]); + if ($version) { + $this->data->os->version = new Version($version); + } + } + } + } else { + + /* iOS */ + $this->data->os->name = 'iOS'; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (isset($match[1])) { + $version = Data\Darwin::getVersion('ios', $match[1]); + if ($version) { + $this->data->os->version = new Version($version); + } + + if (preg_match('/CFNetwork\/([0-9\.]+)/u', $ua, $match)) { + $version = Data\CFNetwork::getVersion('ios', $match[1]); + if ($version) { + $this->data->os->version = new Version($version); + } + } + } + } + } + + /* Mac OS */ + + if (preg_match('/(; |\()Macintosh;/u', $ua) && !preg_match('/OS X/u', $ua)) { + $this->data->os->name = 'Mac OS'; + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + + /* Android */ + + private function detectAndroid($ua) + { + /* Android */ + + if (preg_match('/Andr[0o]id/ui', $ua)) { + $falsepositive = false; + + /* Prevent the Mobile IE 11 Franken-UA from matching Android */ + if (preg_match('/IEMobile\/1/u', $ua)) { + $falsepositive = true; + } + if (preg_match('/Windows Phone 10/u', $ua)) { + $falsepositive = true; + } + + /* Prevent Windows 10 IoT Core from matching Android */ + if (preg_match('/Windows IoT/u', $ua)) { + $falsepositive = true; + } + + /* Prevent from OSes that claim to be 'like' Android from matching */ + if (preg_match('/like Android/u', $ua)) { + $falsepositive = true; + } + if (preg_match('/COS like Android/u', $ua)) { + $falsepositive = false; + } + + if (!$falsepositive) { + $this->data->os->name = 'Android'; + $this->data->os->version = new Version(); + + if (preg_match('/Andr[0o]id(?: )?(?:AllPhone_|CyanogenMod_|OUYA )?(?:\/)?v?([0-9.]+)/ui', str_replace('-update', ',', $ua), $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (preg_match('/Android [0-9][0-9].[0-9][0-9].[0-9][0-9]\(([^)]+)\);/u', str_replace('-update', ',', $ua), $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (preg_match('/Android Eclair/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '2.0', 'details' => 3 ]); + } + + if (preg_match('/Android KeyLimePie/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '4.4', 'details' => 3 ]); + } + + if (preg_match('/Android (?:L|4.4.99);/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '5', 'details' => 3, 'alias' => 'L' ]); + } + + if (preg_match('/Android (?:M|5.[01].99);/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '6', 'details' => 3, 'alias' => 'M' ]); + } + + if (preg_match('/Android (?:N|6.0.99);/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '7', 'details' => 3, 'alias' => 'N' ]); + } + + $this->data->device->type = Constants\DeviceType::MOBILE; + + if ($this->data->os->version->toFloat() >= 3) { + $this->data->device->type = Constants\DeviceType::TABLET; + } + + if ($this->data->os->version->toFloat() >= 4 && preg_match('/Mobile/u', $ua)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + $candidates = []; + + if (preg_match('/Build/ui', $ua)) { + + /* Normal Android useragent strings */ + + if (preg_match('/; [a-z][a-zA-Z][-_][a-zA-Z][a-zA-Z] ([^;]*[^;\s])\s+(?:BUILD|Build|build)/u', $ua, $match)) { + $candidates[] = $match[1]; + } + + if (preg_match('/Android [A-Za-z]+; (?:[a-zA-Z][a-zA-Z](?:[-_][a-zA-Z][a-zA-Z])?) Build\/([^\/]*)\//u', $ua, $match)) { + $candidates[] = $match[1]; + } + + if (preg_match('/;\+? ?(?:\*\*)?([^;]*[^;\s]);?\s+(?:BUILD|Build|build)/u', $ua, $match)) { + $candidates[] = $match[1]; + } + } elseif (preg_match('/Release\//ui', $ua)) { + + /* WAP style useragent strings */ + + if (preg_match('/^(?U)([^\/]+)(?U)(?:(?:_CMCC_TD|_CMCC|_TD|_TDLTE|_LTE)?\/[^\/]*)? Linux\/[0-9.+]+ Android\/[0-9.]+/u', $this->removeKnownPrefixes($ua), $match)) { + $candidates[] = $match[1]; + } else if (preg_match('/^(?U)([^\/]+)(?U)(?:(?:_CMCC_TD|_CMCC|_TD|_TDLTE|_LTE)?\/[^\/]*)? Android(_OS)?\/[0-9.]+/u', $this->removeKnownPrefixes($ua), $match)) { + $candidates[] = $match[1]; + } else if (preg_match('/^(?U)([^\/]+)(?U)(?:(?:_CMCC_TD|_CMCC|_TD|_TDLTE|_LTE)?\/[^\/]*)? Release\/[0-9.]+/u', $this->removeKnownPrefixes($ua), $match)) { + $candidates[] = $match[1]; + } + } elseif (preg_match('/Mozilla\//ui', $ua)) { + + /* Old Android useragent strings */ + + if (preg_match('/Linux; (?:U; )?Android [^;]+; (?:[a-zA-Z][a-zA-Z](?:[-_][a-zA-Z][a-zA-Z])?; )?(?:[^;]+; ?)?([^)\/;]+)\)/u', $ua, $match)) { + $candidates[] = $match[1]; + } elseif (preg_match('/\(([^;]+);U;Android\/[^;]+;[0-9]+\*[0-9]+;CTC\/2.0\)/u', $ua, $match)) { + $candidates[] = $match[1]; + } + } else { + + /* Other applications */ + + if (preg_match('/[34]G Explorer\/[0-9.]+ \(Linux;Android [0-9.]+,([^\)]+)\)/u', $ua, $match)) { + $candidates[] = $match[1]; + } + + if (preg_match('/GetJarSDK\/.*android\/[0-9.]+ \([^;]+; [^;]+; ([^\)]+)\)$/u', $ua, $match)) { + $candidates[] = $match[1]; + } + } + + $candidates = array_unique($candidates); + + for ($c = 0; $c < count($candidates); $c++) { + if (preg_match('/^[a-zA-Z][a-zA-Z](?:[-_][a-zA-Z][a-zA-Z])?$/u', $candidates[$c])) { + unset($candidates[$c]); + continue; + } + + if (preg_match('/^Android [0-9\.]+$/u', $candidates[$c])) { + unset($candidates[$c]); + continue; + } + + $candidates[$c] = preg_replace('/^[a-zA-Z][a-zA-Z][-_][a-zA-Z][a-zA-Z]\s+/u', '', $candidates[$c]); + $candidates[$c] = preg_replace('/(.*) - [0-9\.]+ - (?:with Google Apps - )?API [0-9]+ - [0-9]+x[0-9]+/', '\\1', $candidates[$c]); + $candidates[$c] = preg_replace('/^sprd-/u', '', $candidates[$c]); + } + + $candidates = array_unique($candidates); + + if (count($candidates)) { + $this->data->device->model = $candidates[0]; + $this->data->device->identified |= Constants\Id::PATTERN; + + for ($c = 0; $c < count($candidates); $c++) { + $device = Data\DeviceModels::identify('android', $candidates[$c]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + break; + } + } + } + + if (preg_match('/HP eStation/u', $ua)) { + $this->data->device->manufacturer = 'HP'; + $this->data->device->model = 'eStation'; + $this->data->device->type = Constants\DeviceType::PRINTER; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + } + } + + if (preg_match('/\(Linux; (?:U; )?(?:([0-9.]+); )?(?:[a-zA-Z][a-zA-Z](?:[-_][a-zA-Z][a-zA-Z])?; )?([^;]+) Build/u', $ua, $match)) { + $falsepositive = false; + + if ($match[2] == 'OpenTV') { + $falsepositive = true; + } + + if (!$falsepositive) { + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->model = $match[2]; + + $this->data->os->name = 'Android'; + + if (!empty($match[1])) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + $device = Data\DeviceModels::identify('android', $match[2]); + if ($device->identified) { + $device->identified |= Constants\Id::PATTERN; + $device->identified |= $this->data->device->identified; + + $this->data->device = $device; + } + } + } + + if (preg_match('/Linux x86_64; ([^;\)]+)(?:; [a-zA-Z][a-zA-Z](?:[-_][a-zA-Z][a-zA-Z])?)?\) AppleWebKit\/534.24 \(KHTML, like Gecko\) Chrome\/11.0.696.34 Safari\/534.24/u', $ua, $match)) { + $device = Data\DeviceModels::identify('android', $match[1]); + if ($device->identified) { + $device->identified |= Constants\Id::PATTERN; + $device->identified |= $this->data->device->identified; + + $this->data->os->name = 'Android'; + $this->data->device = $device; + } + } + + if (preg_match('/\(Linux; U; Linux Ventana; [^;]+; ([^;]+) Build/u', $ua, $match)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->model = $match[1]; + + $device = Data\DeviceModels::identify('android', $match[1]); + if ($device->identified) { + $device->identified |= Constants\Id::PATTERN; + $device->identified |= $this->data->device->identified; + + $this->data->os->name = 'Android'; + $this->data->device = $device; + } + } + + /* Aliyun OS */ + + if (preg_match('/Aliyun/u', $ua) || preg_match('/YunOs/ui', $ua)) { + $this->data->os->name = 'Aliyun OS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = new Version(); + + if (preg_match('/YunOs[ \/]([0-9.]+)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (preg_match('/AliyunOS ([0-9.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/; ([^;]*[^;\s])\s+Build/u', $ua, $match)) { + $this->data->device->model = $match[1]; + } + + if (isset($this->data->device->model)) { + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('android', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + if (preg_match('/Android/u', $ua)) { + if (preg_match('/Android v(1.[0-9][0-9])_[0-9][0-9].[0-9][0-9]-/u', $ua, $match)) { + $this->data->os->name = 'Aliyun OS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (preg_match('/Android[ \/](1.[0-9].[0-9].[0-9]+)-R?T/u', $ua, $match)) { + $this->data->os->name = 'Aliyun OS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (preg_match('/Android ([12].[0-9].[0-9]+)-R-20[0-9]+/u', $ua, $match)) { + $this->data->os->name = 'Aliyun OS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 3 ]); + } + + if (preg_match('/Android 20[0-9]+\./u', $ua, $match)) { + $this->data->os->name = 'Aliyun OS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = null; + } + } + + /* Baidu Yi */ + + if (preg_match('/Baidu Yi/u', $ua)) { + $this->data->os->name = 'Baidu Yi'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = null; + } + + /* Google TV */ + + if (preg_match('/GoogleTV/u', $ua)) { + $this->data->os->name = 'Google TV'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + + $this->data->device->type = Constants\DeviceType::TELEVISION; + + if (preg_match('/GoogleTV [0-9\.]+; ?([^;]*[^;\s])\s+Build/u', $ua, $match)) { + $this->data->device->model = $match[1]; + } + + if (isset($this->data->device->model) && $this->data->device->model) { + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('android', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + /* LeOS */ + + if (preg_match('/LeOS/u', $ua)) { + $this->data->os->name = 'LeOS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + + if (preg_match('/LeOS([0-9\.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::TABLET; + + if (preg_match('/LeOS[0-9\.]+; [^;]+; (.*) Build/u', $ua, $match)) { + $this->data->device->model = $match[1]; + } + + if (isset($this->data->device->model) && $this->data->device->model) { + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('android', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + /* WoPhone */ + + if (preg_match('/WoPhone/u', $ua)) { + $this->data->os->name = 'WoPhone'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + + if (preg_match('/WoPhone\/([0-9\.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* COS */ + + if (preg_match('/(COS|(China|Chinese) Operating System)/ui', $ua)) { + if (preg_match('/COS[\/ ]?([0-9]\.[0-9.]+)/ui', $ua, $match)) { + $this->data->os->name = 'COS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } elseif (preg_match('/(?:\(|; )(?:China|Chinese) Operating System ([0-9]\.[0-9.]*);/ui', $ua, $match)) { + $this->data->os->name = 'COS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } elseif (preg_match('/COS like Android/ui', $ua, $match)) { + $this->data->os->name = 'COS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + $this->data->os->version = null; + $this->data->device->type = Constants\DeviceType::MOBILE; + } elseif (preg_match('/(COS like Android|COSBrowser\/|\(COS;|\(COS 998;)/ui', $ua, $match)) { + $this->data->os->name = 'COS'; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + } + } + + /* RemixOS */ + + if (preg_match('/RemixOS/u', $ua)) { + $this->data->os->name = 'Remix OS'; + $this->data->os->version = null; + $this->data->os->family = new Family([ 'name' => 'Android' ]); + + if (preg_match('/RemixOS ([0-9]\.[0-9])/u', $ua, $match)) { + switch ($match[1]) { + case '5.1': + $this->data->os->version = new Version([ 'value' => '1.0' ]); + break; + case '6.0': + $this->data->os->version = new Version([ 'value' => '2.0' ]); + break; + } + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + private function determineAndroidVersionBasedOnBuild($ua) + { + if ($this->data->isOs('Android')) { + if (preg_match('/Build\/([^\);]+)/u', $ua, $match)) { + $version = Data\BuildIds::identify($match[1]); + if ($version) { + if (!isset($this->data->os->version) || $this->data->os->version == null || $this->data->os->version->value == null || $version->toFloat() < $this->data->os->version->toFloat()) { + $this->data->os->version = $version; + } + + /* Special case for Android L */ + if ($version->toFloat() == 5) { + $this->data->os->version = $version; + } + } + + $this->data->os->build = $match[1]; + } + } + } + + + /* Windows */ + + private function detectWindows($ua) + { + if (preg_match('/(Windows|WinNT|WinCE|WinMobile|Win ?[9MX]|Win(16|32))/u', $ua)) { + $this->data->os->name = 'Windows'; + $this->data->device->type = Constants\DeviceType::DESKTOP; + + + /* Windows NT */ + + if (preg_match('/Windows 2000/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '5.0', 'alias' => '2000' ]); + } + + if (preg_match('/(Windows XP|WinXP)/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '5.1', 'alias' => 'XP' ]); + } + + if (preg_match('/Windows Vista/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '6.0', 'alias' => 'Vista' ]); + } + + if (preg_match('/(?:Windows NT |WinNT)([0-9][0-9]?\.[0-9])/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + + switch ($match[1]) { + case '10.1': + case '10.0': + case '6.4': + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => '10' ]); + break; + + case '6.3': + if (preg_match('/; ARM;/u', $ua)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => 'RT 8.1' ]); + } else { + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => '8.1' ]); + } + break; + + case '6.2': + if (preg_match('/; ARM;/u', $ua)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => 'RT' ]); + } else { + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => '8' ]); + } + break; + + case '6.1': + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => '7' ]); + break; + case '6.0': + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => 'Vista' ]); + break; + case '5.2': + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => 'Server 2003' ]); + break; + case '5.1': + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => 'XP' ]); + break; + case '5.0': + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => '2000' ]); + break; + default: + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => 'NT ' . $match[1] ]); + break; + } + + $this->detectWindowsOemManufacturer($ua); + } + + + /* Windows 10 IoT Core */ + + if (preg_match('/Windows IoT (1[0-9]\.[0-9]);/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'alias' => '10 IoT Core' ]); + } + + + /* Windows */ + + if (preg_match('/(Windows 95|Win95)/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '4.0', 'alias' => '95' ]); + } + + if (preg_match('/(Windows 98|Win98)/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '4.1', 'alias' => '98' ]); + } + + if (preg_match('/(Windows M[eE]|WinME)/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '4.9', 'alias' => 'ME' ]); + } + + if (preg_match('/(?:Windows|Win 9x) (([1234]\.[0-9])[0-9\.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + + switch ($match[2]) { + case '4.0': + $this->data->os->version = new Version([ 'value' => '4.0', 'alias' => '95' ]); + break; + case '4.1': + $this->data->os->version = new Version([ 'value' => '4.1', 'alias' => '98' ]); + break; + case '4.9': + $this->data->os->version = new Version([ 'value' => '4.9', 'alias' => 'ME' ]); + break; + } + } + + + /* Windows Mobile and Windows Phone */ + + if (preg_match('/WPDesktop/u', $ua)) { + $this->data->os->name = 'Windows Phone'; + $this->data->os->version = new Version([ 'value' => '8.0', 'details' => 2 ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->browser->mode = 'desktop'; + } + + if (preg_match('/WP7/u', $ua)) { + $this->data->os->name = 'Windows Phone'; + $this->data->os->version = new Version([ 'value' => '7', 'details' => 1 ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->browser->mode = 'desktop'; + } + + if (preg_match('/WinMobile/u', $ua)) { + $this->data->os->name = 'Windows Mobile'; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/WinMobile\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + } + + if (preg_match('/(Windows CE|WindowsCE|WinCE)/u', $ua)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/ IEMobile/u', $ua)) { + $this->data->os->name = 'Windows Mobile'; + + if (preg_match('/ IEMobile\/9/u', $ua)) { + $this->data->os->name = 'Windows Phone'; + $this->data->os->version = new Version([ 'value' => '7.5', 'details' => 2 ]); + } + + if (preg_match('/ IEMobile 8/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '6.5', 'details' => 2 ]); + } + + if (preg_match('/ IEMobile 7/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '6.1', 'details' => 2 ]); + } + + if (preg_match('/ IEMobile 6/u', $ua)) { + $this->data->os->version = new Version([ 'value' => '6.0', 'details' => 2 ]); + } + } else { + $this->data->os->name = 'Windows CE'; + + if (preg_match('/WindowsCEOS\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + if (preg_match('/Windows CE ([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + } + + + $model = null; + + if (empty($model) && preg_match('/IEMobile [0-9.]+\) ?(?:PPC; |SP; |Smartphone; )?(?:[0-9]+[Xx][0-9]+;? )?(?:VZW; )?([^;\(]+)/u', $ua, $match)) { + if (!preg_match('/(Profile\/MIDP|UNTRUSTED)/u', $match[1])) { + $model = $match[1]; + } + } + + if (empty($model) && preg_match('/IEMobile [0-9.]+\) (?:PPC|SP|Smartphone); (?:[0-9]+[Xx][0-9]+;? )([^;]+) Profile\/MIDP/u', $ua, $match)) { + $model = $match[1]; + } + + if (empty($model) && preg_match('/MSIE [0-9.]+; Windows CE; (?:PPC|SP|Smartphone); [0-9]+x[0-9]+; ([^;\)]+)\)$/u', $ua, $match)) { + $model = $match[1]; + } + + if (empty($model) && preg_match('/MSIE [0-9.]+; Windows CE; (?:PPC|SP|Smartphone); [0-9]+x[0-9]+; ([^;]+); (?:PPC|OpVer)/u', $ua, $match)) { + $model = $match[1]; + } + + if (empty($model) && preg_match('/MSIE [0-9.]+; Windows CE; (?:PPC|SP|Smartphone); ([^;]+) Profile\/MIDP/u', $ua, $match)) { + $model = $match[1]; + } + + if (empty($model) && preg_match('/MSIE [0-9.]+; Windows CE; (?:PPC|SP|Smartphone) ([^;\(]+)[;\/] [0-9]+x[0-9]+/u', $ua, $match)) { + $model = $match[1]; + } + + if (empty($model) && preg_match('/MSIE [0-9.]+; Windows CE; ([^;\(]+); [0-9]+x[0-9]+\)/u', $ua, $match)) { + if (!preg_match('/^(Smartphone|PPC$)/u', $match[1])) { + $model = $match[1]; + } + } + + if (empty($model) && preg_match('/MSIE [0-9.]+; Windows CE; ([^;\(]+);? ?(?:PPC|SP|Smartphone); ?[0-9]+x[0-9]+/u', $ua, $match)) { + if (!preg_match('/^(MIDP-2.0)/u', $match[1])) { + $model = $match[1]; + } + } + + if (empty($model) && preg_match('/MSIE [0-9.]+; Windows CE; ([^;\)]+)(?:; (?:PPC|SP|Smartphone); [0-9]+x[0-9]+)?\)( \[[a-zA-Z\-]+\])?$/u', $ua, $match)) { + if (!preg_match('/^(IEMobile|MIDP-2.0|Smartphone|PPC$)/u', $match[1])) { + $model = $match[1]; + } + } + + if (!empty($model)) { + $model = preg_replace('/(HTC\/|Toshiba\/)/', '', $model); + + $this->data->device->model = $model; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->os->name = 'Windows Mobile'; + + $device = Data\DeviceModels::identify('wm', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } else { + if (empty($model) && preg_match('/Windows CE [^;]+; Trident\/[^;]+; IEMobile[\/ ][^;]+[\);] ([A-Z\s]+); ?([^\/\),]+)/ui', $ua, $match)) { + $model = $match[2]; + } + + if (!empty($model)) { + $this->data->device->model = $model; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->os->name = 'Windows Phone'; + + $device = Data\DeviceModels::identify('wp', $model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + } + + if (preg_match('/Microsoft Windows; (PPC|Smartphone)/u', $ua)) { + $this->data->os->name = 'Windows Mobile'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/Windows CE; (PPC|Smartphone)/u', $ua)) { + $this->data->os->name = 'Windows Mobile'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + + /* Detect models in common places */ + + if (preg_match('/Windows ?Mobile/u', $ua)) { + $this->data->os->name = 'Windows Mobile'; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/Windows ?Mobile[\/ ]([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + if (preg_match('/Windows Mobile; (?:SHARP\/)?([^;]+); (?:PPC|Smartphone);/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wm', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/\(([^;]+); U; Windows Mobile/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wm', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + if (preg_match('/(Windows Phone|Windows NT 1[0-9]\.[0-9]; ARM|WPDesktop|ZuneWP7)/u', $ua)) { + $this->data->os->name = 'Windows Phone'; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/Windows Phone(?: OS)?[ \/]([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + + if (intval($match[1]) < 7) { + $this->data->os->name = 'Windows Mobile'; + } + } + + /* Windows Mobile 6.5 */ + if (preg_match('/Windows NT 5.1; ([^;]+); Windows Phone/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wm', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Windows Phone 7 (buggy) */ + if (preg_match('/Windows Phone OS [^;]+; Trident\/[^;]+; IEMobile[\/ ][^;]+[\);] ([A-Z\s]+); ?([^\/\),]+)/ui', $ua, $match)) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Windows Phone 7 and 8 */ + if (preg_match('/IEMobile\/[^;]+;(?: ARM; Touch; )?(?:rv:[0-9]+; )?(?: WpsLondonTest; )?\s*([^;\s][^;\)]*);\s*([^;\)\s][^;\)]*)[;|\)]/u', $ua, $match)) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Windows Phone 10 */ + if (preg_match('/Windows Phone 1[0-9]\.[0-9]; Android [0-9\.]+; (?:WebView\/[0-9\.]+; )?([^;\s][^;]*);\s*([^;\)\s][^;\)]*)[;|\)]/u', $ua, $match)) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Windows Phone 10 Continuum */ + if (preg_match('/Windows NT 1[0-9]\.[0-9]; ARM; ([^;\)\s][^;\)]*)\)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* Third party browsers */ + if (preg_match('/IEMobile\/[^;]+;(?: ARM; Touch; )?\s*(?:[^\/]+\/[^\/]+);\s*([^;\s][^;]*);\s*([^;\)\s][^;\)]*)[;|\)]/u', $ua, $match)) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/\(Windows Phone OS\/[0-9\.]+; ([^:]+):([^;]+); [a-z]+(?:\-[a-z]+)?\)/iu', $ua, $match)) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[2]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Desktop mode of WP 8.1 */ + if (preg_match('/WPDesktop;\s*([^;\)]*)(?:;\s*([^;\)]*))?(?:;\s*([^;\)]*))?\) like Gecko/u', $ua, $match)) { + if (preg_match("/^[A-Z]+$/", $match[1]) && isset($match[2])) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + } else { + $this->data->device->model = $match[1]; + } + + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Desktop mode of WP 7 */ + if (preg_match('/XBLWP7; ZuneWP7; ([^\)]+)\)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $match[1]); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + /* Desktop mode of WP 8.0 and 8.1 Update (buggy version) */ + if (preg_match('/Touch; WPDesktop;\s*([^;\)]*)(?:;\s*([^;\)]*))?(?:;\s*([^;\)]*))?\)/u', $ua, $match)) { + if (preg_match("/^[A-Z]+$/", $match[1]) && isset($match[2])) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + } else { + $this->data->device->model = $match[1]; + } + + $this->data->device->identified |= Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('wp', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (isset($this->data->device->manufacturer) && isset($this->data->device->model)) { + if ($this->data->device->manufacturer == 'ARM' && $this->data->device->model == 'Touch') { + $this->data->device->manufacturer = null; + $this->data->device->model = null; + $this->data->device->identified = Constants\Id::NONE; + } + + if ($this->data->device->model == 'XDeviceEmulator') { + $this->data->device->manufacturer = null; + $this->data->device->model = null; + $this->data->device->type = Constants\DeviceType::EMULATOR; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + } + } elseif (preg_match('/WMPRO/u', $ua)) { + $this->data->os->name = 'Windows Mobile'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + } + + private function detectWindowsOemManufacturer($ua) + { + $manufacturers = [ + 'MAAR' => 'Acer', + 'ASJB' => 'Asus', + 'ASU2' => 'Asus', + 'MAAU' => 'Asus', + 'NP06' => 'Asus', + 'NP07' => 'Asus', + 'NP08' => 'Asus', + 'NP09' => 'Asus', + 'CMNTDF' => 'Compaq', + 'CPDTDF' => 'Compaq', + 'CPNTDF' => 'Compaq', + 'MDDR' => 'Dell', + 'MDDC' => 'Dell', + 'MDDS' => 'Dell', + 'FSJB' => 'Fujitsu', + 'MAFS' => 'Fujitsu', + 'MAGW' => 'Gateway', + 'HPCMHP' => 'HP', + 'HPDTDF' => 'HP', + 'HPNTDF' => 'HP', + 'MANM' => 'Hyrican', + 'LCJB' => 'Lenovo', + 'LEN2' => 'Lenovo', + 'MALC' => 'Lenovo', + 'MALE' => 'Lenovo', + 'MALN' => 'Lenovo', + 'MAMD' => 'Medion', + 'MAMI' => 'MSI', + 'MAM3' => 'MSI', + 'MASM' => 'Samsung', + 'SMJB' => 'Samsung', + 'MASA' => 'Sony', + 'MASE' => 'Sony', + 'MASP' => 'Sony', + 'MATB' => 'Toshiba', + 'MATM' => 'Toshiba', + 'MATP' => 'Toshiba', + 'TAJB' => 'Toshiba', + 'TNJB' => 'Toshiba', + ]; + + $keys = array_keys($manufacturers); + + if (preg_match('/; (' . implode('|', $keys) . ')(?:JS)?[\);]/u', $ua, $match)) { + $this->data->device->manufacturer = $manufacturers[$match[1]]; + $this->data->device->hidden = true; + $this->data->device->identified |= Constants\Id::INFER; + } + } + + + /* Jolla Sailfish */ + + private function detectSailfish($ua) + { + if (preg_match('/Sailfish;/u', $ua)) { + $this->data->os->name = 'Sailfish'; + $this->data->os->version = null; + + if (preg_match('/Jolla;/u', $ua)) { + $this->data->device->manufacturer = 'Jolla'; + } + + if (preg_match('/Mobile/u', $ua)) { + $this->data->device->model = 'Phone'; + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->identified = Constants\Id::PATTERN; + } + + if (preg_match('/Tablet/u', $ua)) { + $this->data->device->model = 'Tablet'; + $this->data->device->type = Constants\DeviceType::TABLET; + $this->data->device->identified = Constants\Id::PATTERN; + } + } + } + + + /* Bada */ + + private function detectBada($ua) + { + if (preg_match('/[b|B]ada/u', $ua)) { + $this->data->os->name = 'Bada'; + + if (preg_match('/[b|B]ada[\/ ]([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/\(([^;]+); ([^\/]+)\//u', $ua, $match)) { + if ($match[1] != 'Bada') { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + $this->data->device->identified = Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('bada', $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + } + } + + + /* Tizen */ + + private function detectTizen($ua) + { + if (preg_match('/Tizen/u', $ua)) { + $this->data->os->name = 'Tizen'; + + if (preg_match('/Tizen[\/ ]?([0-9.]*[0-9])/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/\(([^;]+); ([^\/]+)\//u', $ua, $match)) { + $falsepositive = false; + if (strtoupper($match[1]) == 'SMART-TV') { + $falsepositive = true; + } + if ($match[1] == 'TV') { + $falsepositive = true; + } + if ($match[1] == 'Linux') { + $falsepositive = true; + } + if ($match[1] == 'Tizen') { + $falsepositive = true; + } + + if (!$falsepositive) { + $this->data->device->manufacturer = $match[1]; + $this->data->device->model = $match[2]; + $this->data->device->identified = Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('tizen', $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + if (preg_match('/\s*([^;]+);\s+([^;\)]+)\)/u', $ua, $match)) { + $falsepositive = false; + if ($match[1] == 'U') { + $falsepositive = true; + } + if (substr($match[2], 0, 5) == 'Tizen') { + $falsepositive = true; + } + if (substr($match[2], 0, 11) == 'AppleWebKit') { + $falsepositive = true; + } + if (preg_match("/^[a-z]{2,2}(?:\-[a-z]{2,2})?$/", $match[2])) { + $falsepositive = true; + } + + if (!$falsepositive) { + $this->data->device->model = $match[2]; + $this->data->device->identified = Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('tizen', $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + + if (!$this->data->device->type && preg_match('/Mobile/iu', $ua, $match)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + + if (preg_match('/\((SMART[ -])?TV;/iu', $ua, $match)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->series = 'Smart TV'; + $this->data->device->identified = Constants\Id::PATTERN; + } + + + if (preg_match('/(?:Samsung|Tizen ?)Browser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->name = "Samsung Browser"; + $this->data->browser->channel = null; + $this->data->browser->stock = true; + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + $this->data->browser->channel = null; + } + } + + if (preg_match('/Linux\; U\; Android [0-9.]+\; ko\-kr\; SAMSUNG\; (NX[0-9]+[^\)]]*)/u', $ua, $match)) { + $this->data->os->name = 'Tizen'; + $this->data->os->version = null; + + $this->data->device->type = Constants\DeviceType::CAMERA; + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->model = $match[1]; + $this->data->device->identified = Constants\Id::PATTERN; + } + } + + + /* Symbian */ + + private function detectSymbian($ua) + { + if (!preg_match('/(EPOC|Series|Symbian|S60|UIQ)/ui', $ua)) { + return; + } + + /* EPOC */ + + if (preg_match('/EPOC(?:32)?[;\-\)]/u', $ua, $match)) { + $this->data->os->name = 'EPOC'; + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + $this->data->device->type = Constants\DeviceType::PDA; + + if (preg_match('/Crystal\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = 'Series80'; + $this->data->os->version = new Version([ 'value' => '1.0' ]); + $this->data->os->family->version = new Version([ 'value' => $match[1] ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = '9210'; + $this->data->device->identified |= Constants\Id::PATTERN; + } + + if (preg_match('/Nokia\/Series-9200/u', $ua)) { + $this->data->os->name = 'Series80'; + $this->data->os->version = new Version([ 'value' => '1.0' ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = '9210i'; + $this->data->device->identified |= Constants\Id::PATTERN; + } + } + + /* Series 80 */ + + if (preg_match('/Series80\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = 'Series80'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* Series 60 */ + + if (preg_match('/Symbian\/3/u', $ua)) { + $this->data->os->name = 'Series60'; + $this->data->os->version = new Version([ 'value' => '5.2' ]); + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/Series[ ]?60/u', $ua) || preg_match('/S60[V\/;]/u', $ua) || preg_match('/S60 Symb/u', $ua)) { + $this->data->os->name = 'Series60'; + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/Series60\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/S60\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/S60V([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + + /* UIQ */ + + if (preg_match('/UIQ\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = 'UIQ'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* Symbian */ + + if (preg_match('/Symbian/u', $ua)) { + $this->data->os->family = new Family([ 'name' => 'Symbian' ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/SymbianOS\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->family->version = new Version([ 'value' => $match[1] ]); + } + } + + + if ($this->data->os->isFamily('Symbian')) { + if (preg_match('/Nokia-?([^\/;\)\s]+)[\s|\/|;|\)]/u', $ua, $match)) { + if ($match[1] != 'Browser') { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identified |= Constants\Id::PATTERN; + } + } + + if (preg_match('/Symbian(?:\/3)?; U; (?:Nokia)?([^;]+); [a-z][a-z](?:\-[a-z][a-z])?/u', $ua, $match)) { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identified |= Constants\Id::PATTERN; + } + + if (preg_match('/Vertu([^\/;]+)[\/|;]/u', $ua, $match)) { + $this->data->device->manufacturer = 'Vertu'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identified |= Constants\Id::PATTERN; + } + + if (preg_match('/Samsung\/([^;]*);/u', $ua, $match)) { + $this->data->device->manufacturer = 'Samsung'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identified |= Constants\Id::PATTERN; + } + + if (isset($this->data->device->model)) { + $device = Data\DeviceModels::identify('symbian', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + } + + private function detectNokiaOs($ua) + { + if (!preg_match('/(Series|MeeGo|Maemo|Geos)/ui', $ua)) { + return; + } + + /* Series 40 */ + + if (preg_match('/Series40/u', $ua)) { + $this->data->os->name = 'Series40'; + + if (preg_match('/Nokia([^\/]+)\//u', $ua, $match)) { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identified |= Constants\Id::PATTERN; + } + + if (isset($this->data->device->model)) { + $device = Data\DeviceModels::identify('s40', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (isset($this->data->device->model)) { + $device = Data\DeviceModels::identify('asha', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->os->name = 'Nokia Asha Platform'; + $this->data->os->version = new Version([ 'value' => '1.0' ]); + $this->data->device = $device; + } + + if (preg_match('/java_runtime_version=Nokia_Asha_([0-9_]+);/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + } + + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* Series 30+ */ + + if (preg_match('/Series30Plus/u', $ua)) { + $this->data->os->name = 'Series30+'; + + if (preg_match('/Nokia([^\/]+)\//u', $ua, $match)) { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identified |= Constants\Id::PATTERN; + } + + if (isset($this->data->device->model)) { + $device = Data\DeviceModels::identify('s30plus', $this->data->device->model); + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + /* Meego */ + + if (preg_match('/MeeGo/u', $ua)) { + $this->data->os->name = 'MeeGo'; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/Nokia([^\);]+)\)/u', $ua, $match)) { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = Data\DeviceModels::cleanup($match[1]); + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->generic = false; + } + } + + /* Maemo */ + + if (preg_match('/Maemo/u', $ua)) { + $this->data->os->name = 'Maemo'; + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/(N[0-9]+)/u', $ua, $match)) { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->generic = false; + } + } + + /* GEOS */ + + if (preg_match('/Geos ([0-9.]+)/u', $ua, $match)) { + $this->data->os->name = 'GEOS'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/Nokia-([0-9]{4,4}[a-z]?)/u', $ua, $match)) { + $this->data->device->manufacturer = 'Nokia'; + $this->data->device->model = $match[1]; + $this->data->device->identified |= Constants\Id::PATTERN; + $this->data->device->generic = false; + } + } + } + + + /* WebOS */ + + private function detectWebos($ua) + { + if (preg_match('/(?:web|hpw)OS\/(?:HP webOS )?([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = 'webOS'; + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + $this->data->device->type = preg_match('/Tablet/iu', $ua) ? Constants\DeviceType::TABLET : Constants\DeviceType::MOBILE; + $this->data->device->generic = false; + } + + if (preg_match('/(?:Spark|elite)\/fzz/u', $ua, $match) || preg_match('/webOSBrowser/u', $ua, $match)) { + $this->data->os->name = 'webOS'; + $this->data->device->type = preg_match('/Tablet/iu', $ua) ? Constants\DeviceType::TABLET : Constants\DeviceType::MOBILE; + $this->data->device->generic = false; + } + + if (preg_match('/ (Pre|Pixi|TouchPad|P160UN?A?)\/[0-9\.]+$/u', $ua, $match)) { + $this->data->os->name = 'webOS'; + $this->data->device->type = $match[1] == 'TouchPad' ? Constants\DeviceType::TABLET : Constants\DeviceType::MOBILE; + $this->data->device->generic = false; + } + + if ($this->data->isOs('webOS')) { + if (preg_match('/Pre\/1.0/u', $ua)) { + $this->data->device->manufacturer = 'Palm'; + $this->data->device->model = 'Pre'; + } + if (preg_match('/Pre\/1.1/u', $ua)) { + $this->data->device->manufacturer = 'Palm'; + $this->data->device->model = 'Pre Plus'; + } + if (preg_match('/Pre\/1.2/u', $ua)) { + $this->data->device->manufacturer = 'Palm'; + $this->data->device->model = 'Pre 2'; + } + if (preg_match('/Pre\/3.0/u', $ua)) { + $this->data->device->manufacturer = 'Palm'; + $this->data->device->model = 'Pre 3'; + } + if (preg_match('/Pixi\/1.0/u', $ua)) { + $this->data->device->manufacturer = 'Palm'; + $this->data->device->model = 'Pixi'; + } + if (preg_match('/Pixi\/1.1/u', $ua)) { + $this->data->device->manufacturer = 'Palm'; + $this->data->device->model = 'Pixi Plus'; + } + if (preg_match('/P160UN?A?\/1.0/u', $ua)) { + $this->data->device->manufacturer = 'HP'; + $this->data->device->model = 'Veer'; + } + if (preg_match('/TouchPad\/1.0/u', $ua)) { + $this->data->device->manufacturer = 'HP'; + $this->data->device->model = 'TouchPad'; + } + + if (preg_match('/Emulator\//u', $ua) || preg_match('/Desktop\//u', $ua)) { + $this->data->device->type = Constants\DeviceType::EMULATOR; + $this->data->device->manufacturer = null; + $this->data->device->model = null; + } + + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + + + /* Kai OS */ + + private function detectKaiOS($ua) + { + if (preg_match('/Kai(OS)?\/([0-9.]+)/i', $ua, $match)) { + $this->data->os->reset([ 'name' => 'KaiOS', 'version' => new Version([ 'value' => $match[2] ]) ]); + $this->data->os->family = new Family([ 'name' => 'Firefox OS' ]); + } + } + + + /* BlackBerry */ + + private function detectBlackberry($ua) + { + /* BlackBerry OS */ + + if (preg_match('/RIM([0-9]{3,3})/u', $ua, $match)) { + $this->data->os->name = 'BlackBerry OS'; + $this->data->device->manufacturer = 'RIM'; + $this->data->device->model = $match[1]; + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->identified = Constants\Id::INFER; + } + + if (preg_match('/BlackBerry/u', $ua) && !preg_match('/BlackBerry Runtime for Android Apps/u', $ua)) { + $this->data->os->name = 'BlackBerry OS'; + + $this->data->device->model = 'BlackBerry'; + $this->data->device->manufacturer = 'RIM'; + $this->data->device->type = Constants\DeviceType::MOBILE; + $this->data->device->identified = Constants\Id::INFER; + + if (!preg_match('/Opera/u', $ua)) { + if (preg_match('/BlackBerry([0-9]+[ei]?)\/([0-9.]*)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->os->version = new Version([ 'value' => $match[2], 'details' => 2 ]); + } + + if (preg_match('/; BlackBerry ([0-9]*);/u', $ua, $match)) { + $this->data->device->model = $match[1]; + } + + if (preg_match('/; ([0-9]+)[^;\)]+\)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + } + + if (preg_match('/Version\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + if (isset($this->data->os->version) && $this->data->os->version->toFloat() >= 10) { + $this->data->os->name = 'BlackBerry'; + } + + if ($this->data->device->model) { + $device = Data\DeviceModels::identify('blackberry', $this->data->device->model); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + } + + /* BlackBerry 10 */ + + if (preg_match('/\(BB(1[^;]+); ([^\)]+)\)/u', $ua, $match)) { + $this->data->os->name = 'BlackBerry'; + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + + $this->data->device->manufacturer = 'BlackBerry'; + $this->data->device->model = $match[2]; + + if ($this->data->device->model == 'Kbd') { + $this->data->device->model = 'Q series or Passport'; + } + + if ($this->data->device->model == 'Touch') { + $this->data->device->model = 'A or Z series'; + } + + if ($this->data->device->model == 'STL100-2') { + $this->data->device->model = 'Z10'; + } + + $this->data->device->type = preg_match('/Mobile/u', $ua) ? Constants\DeviceType::MOBILE : Constants\DeviceType::TABLET; + $this->data->device->identified |= Constants\Id::MATCH_UA; + + if (preg_match('/Version\/([0-9.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + } + + /* BlackBerry Tablet OS */ + + if (preg_match('/RIM Tablet OS ([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = 'BlackBerry Tablet OS'; + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + + $this->data->device->manufacturer = 'RIM'; + $this->data->device->model = 'BlackBerry PlayBook'; + $this->data->device->type = Constants\DeviceType::TABLET; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } elseif (preg_match('/\(PlayBook;/u', $ua) && preg_match('/PlayBook Build\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = 'BlackBerry Tablet OS'; + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + + $this->data->device->manufacturer = 'RIM'; + $this->data->device->model = 'BlackBerry PlayBook'; + $this->data->device->type = Constants\DeviceType::TABLET; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } elseif (preg_match('/PlayBook/u', $ua) && !preg_match('/Android/u', $ua)) { + if (preg_match('/Version\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = 'BlackBerry Tablet OS'; + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + + $this->data->device->manufacturer = 'RIM'; + $this->data->device->model = 'BlackBerry PlayBook'; + $this->data->device->type = Constants\DeviceType::TABLET; + $this->data->device->identified |= Constants\Id::MATCH_UA; + } + } + + /* Internal versions of BlackBerry 10 running on the Playbook */ + + if ($this->data->isOs('BlackBerry Tablet OS', '>=', 10)) { + $this->data->os->name = 'BlackBerry'; + } + } + + + /* Chrome OS */ + + private function detectChromeos($ua) + { + /* ChromeCast */ + + if (preg_match('/CrKey/u', $ua) && !preg_match('/Espial/u', $ua)) { + $this->data->device->manufacturer = 'Google'; + $this->data->device->model = 'Chromecast'; + $this->data->device->type = Constants\DeviceType::TELEVISION; + $this->data->device->identified |= Constants\Id::MATCH_UA; + $this->data->device->generic = false; + } + + /* Chrome OS */ + + if (preg_match('/CrOS/u', $ua)) { + $this->data->os->name = 'Chrome OS'; + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + + /* Open TV */ + + private function detectOpenTV($ua) + { + if (preg_match('/OpenTV/ui', $ua, $match)) { + $this->data->device->type = Constants\DeviceType::TELEVISION; + + $this->data->os->name = 'OpenTV'; + $this->data->os->version = null; + + if (preg_match('/OpenTV Build\/([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/OpenTV ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/Opentv([0-9]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/OTV([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + } + + + /* Qtopia */ + + private function detectQtopia($ua) + { + if (preg_match('/Qtopia/u', $ua)) { + $this->data->os->name = 'Qtopia'; + + if (preg_match('/Qtopia\/([0-9.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + } + + + /* Unix */ + + private function detectUnix($ua) + { + if (!preg_match('/(UNIX|OSF|ULTRIX|HP-UX|SunOS|Solaris|AIX|IRIX|NEWS-OS|GENIX)/ui', $ua)) { + return; + } + + /* Unix */ + + if (preg_match('/Unix/iu', $ua)) { + $this->data->os->name = 'Unix'; + } + + /* Unix System V */ + + if (preg_match('/(?:UNIX_System_V|UNIX_SV) ([0-9.]*)/u', $ua, $match)) { + $this->data->os->name = 'UNIX System V'; + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* Digital Unix */ + + if (preg_match('/OSF1?[ _]/u', $ua)) { + $this->data->os->name = 'Digital Unix'; + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + + if (preg_match('/OSF1?[ _]V?([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* Digital ULTRIX */ + + if (preg_match('/ULTRIX/u', $ua)) { + $this->data->os->name = 'ULTRIX'; + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + + if (preg_match('/ULTRIX ([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* HP-UX */ + + if (preg_match('/HP-UX/u', $ua)) { + $this->data->os->name = 'HP-UX'; + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + + if (preg_match('/HP-UX [A-Z].0?([1-9][0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* Solaris */ + + if (preg_match('/SunOS/u', $ua)) { + $this->data->os->name = 'Solaris'; + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + + if (preg_match('/SunOS ([1234]\.[0-9\.]+)/u', $ua, $match)) { + $this->data->os->name = 'SunOS'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + + if (preg_match('/SunOS 4\.1\.([1234])/u', $ua, $match)) { + $this->data->os->name = 'Solaris'; + + switch ($match[1]) { + case '1': + $this->data->os->version = new Version([ 'value' => '1.0' ]); + break; + case '2': + $this->data->os->version = new Version([ 'value' => '1.0.1' ]); + break; + case '3': + $this->data->os->version = new Version([ 'value' => '1.1' ]); + break; + case '4': + $this->data->os->version = new Version([ 'value' => '1.1.2' ]); + break; + } + } + } + + if (preg_match('/SunOS 5\.([123456](?:\.[0-9\.]*)?) /u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => '2.' . $match[1] ]); + } else if (preg_match('/SunOS 5\.([0-9\.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Solaris(?: ([0-9\.]+))?;/u', $ua, $match)) { + $this->data->os->name = 'Solaris'; + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + + if (preg_match('/Solaris ([0-9\.]+);/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* AIX */ + + if (preg_match('/AIX/u', $ua)) { + $this->data->os->name = 'AIX'; + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + + if (preg_match('/AIX ([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* IRIX */ + + if (preg_match('/IRIX/u', $ua)) { + $this->data->os->name = 'IRIX'; + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + + if (preg_match('/IRIX ([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/IRIX;?(?:64|32) ([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* Sony NEWS OS */ + + if (preg_match('/NEWS-OS ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->name = 'NEWS OS'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + + + if (preg_match('/NEWS-OS [56]/u', $ua)) { + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* NEC EWS-UX */ + + if (preg_match('/EWS-UNIX rev ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->name = 'EWS-UX'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->os->family = new Family([ 'name' => 'UNIX' ]); + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* National Semiconductors GENIX */ + + if (preg_match('/GENIX ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->name = 'GENIX'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + + /* BSD */ + + private function detectBsd($ua) + { + if (!preg_match('/(BSD|DragonFly)/ui', $ua)) { + return; + } + + if (preg_match('/X11/u', $ua)) { + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + /* BSD/OS */ + + if (preg_match('/BSD\/386/u', $ua)) { + $this->data->os->name = 'BSD/OS'; + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + } + + if (preg_match('/BSD\/OS/u', $ua)) { + $this->data->os->name = 'BSD/OS'; + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + + if (preg_match('/BSD\/OS ([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + + /* FreeBSD */ + + if (preg_match('/FreeBSD/iu', $ua)) { + $this->data->os->name = 'FreeBSD'; + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + + if (preg_match('/FreeBSD[ -\/]?([0-9.]*)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + + /* OpenBSD */ + + if (preg_match('/OpenBSD/iu', $ua)) { + $this->data->os->name = 'OpenBSD'; + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + + if (preg_match('/OpenBSD ?([0-9.]*)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + + /* NetBSD */ + + if (preg_match('/NetBSD/iu', $ua)) { + $this->data->os->name = 'NetBSD'; + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + + if (preg_match('/NetBSD ?([0-9.]*)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + } + + /* DragonFly */ + + if (preg_match('/DragonFly/iu', $ua)) { + $this->data->os->name = 'DragonFly BSD'; + $this->data->os->family = new Family([ 'name' => 'BSD' ]); + } + } + + + /* Linux */ + + private function detectLinux($ua) + { + if (preg_match('/Linux/u', $ua)) { + $this->data->os->name = 'Linux'; + + if (preg_match('/X11/u', $ua)) { + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Antergos Linux/u', $ua)) { + $this->data->os->name = 'Antergos Linux'; + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Arch ?Linux/u', $ua)) { + $this->data->os->name = 'Arch Linux'; + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Black Lab Linux/u', $ua)) { + $this->data->os->name = 'Black Lab Linux'; + if (preg_match('/Black Lab Linux ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/CentOS/u', $ua)) { + $this->data->os->name = 'CentOS'; + if (preg_match('/CentOS\/[0-9\.\-]+el([0-9_]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + + if (preg_match('/CentOS Linux release ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Debian/u', $ua)) { + $this->data->os->name = 'Debian'; + if (preg_match('/Debian\/([0-9.]*)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/Debian GNU\/Linux ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Fedora/u', $ua)) { + $this->data->os->name = 'Fedora'; + if (preg_match('/Fedora\/[0-9\.\-]+fc([0-9]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + + if (preg_match('/Fedora release ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Gentoo/u', $ua)) { + $this->data->os->name = 'Gentoo'; + if (preg_match('/Gentoo Base System release ([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/gNewSense/u', $ua)) { + $this->data->os->name = 'gNewSense'; + if (preg_match('/gNewSense\/[^\(]+\(([0-9\.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Kubuntu/u', $ua)) { + $this->data->os->name = 'Kubuntu'; + if (preg_match('/Kubuntu[ \/]([0-9.]*)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Linux Mint/u', $ua)) { + $this->data->os->name = 'Linux Mint'; + if (preg_match('/Linux Mint ([0-9\.]+)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Mandriva Linux/u', $ua)) { + $this->data->os->name = 'Mandriva'; + if (preg_match('/Mandriva Linux\/[0-9\.\-]+mdv([0-9]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Mageia/u', $ua)) { + $this->data->os->name = 'Mageia'; + if (preg_match('/Mageia\/[0-9\.\-]+mga([0-9]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/Mageia ([0-9\.]+)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Mandriva/u', $ua)) { + $this->data->os->name = 'Mandriva'; + if (preg_match('/Mandriva\/[0-9\.\-]+mdv([0-9]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/moonOS/u', $ua)) { + $this->data->os->name = 'moonOS'; + if (preg_match('/moonOS\/([0-9.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Red Hat/u', $ua)) { + $this->data->os->name = 'Red Hat'; + if (preg_match('/Red Hat[^\/]*\/[0-9\.\-]+el([0-9_]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Slackware/u', $ua)) { + $this->data->os->name = 'Slackware'; + if (preg_match('/Slackware[ \/](1[0-9.]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/SUSE/u', $ua)) { + $this->data->os->name = 'SUSE'; + if (preg_match('/SUSE\/([0-9]\.[0-9]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/openSUSE ([0-9\.]+)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Turbolinux/u', $ua)) { + $this->data->os->name = 'Turbolinux'; + if (preg_match('/Turbolinux\/([0-9]\.[0-9]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Ubuntu/u', $ua)) { + $this->data->os->name = 'Ubuntu'; + if (preg_match('/Ubuntu\/([0-9.]*)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + if (preg_match('/Ubuntu ([0-9\.]+)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => 2 ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/《붉ì€ë³„》\/([0-9.]*)/iu', $ua, $match)) { + $this->data->os->name = 'Red Star'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Fedora\/[0-9\.\-]+rs([0-9\.]+)/u', $ua, $match)) { + $this->data->os->name = 'Red Star'; + $this->data->os->version = new Version([ 'value' => str_replace('_', '.', $match[1]) ]); + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/Linux\/X2\/R1/u', $ua)) { + $this->data->os->name = 'LiMo'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + + if (preg_match('/Linux\/SLP\/([0-9.]+)/u', $ua, $match)) { + $this->data->os->name = 'Linux SLP'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + + if (preg_match('/LinuxOS\//u', $ua) && preg_match('/Software\/R5/u', $ua)) { + $this->data->os->name = 'EZX Linux'; + $this->data->device->type = Constants\DeviceType::MOBILE; + } + } + + if (preg_match('/elementary OS/u', $ua)) { + $this->data->os->name = 'elementary OS'; + if (preg_match('/elementary OS ([A-Za-z]+)/u', $ua, $match)) { + $this->data->os->version = new Version([ 'alias' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + + if (preg_match('/\(Ubuntu; (Mobile|Tablet)/u', $ua)) { + $this->data->os->name = 'Ubuntu Touch'; + + if (preg_match('/\(Ubuntu; Mobile/u', $ua)) { + $this->data->device->type = Constants\DeviceType::MOBILE; + } + if (preg_match('/\(Ubuntu; Tablet/u', $ua)) { + $this->data->device->type = Constants\DeviceType::TABLET; + } + } + + if (preg_match('/(?:\(|; )Ubuntu ([0-9.]+) like Android/u', $ua, $match)) { + $this->data->os->name = 'Ubuntu Touch'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->device->type = Constants\DeviceType::MOBILE; + } + + if (preg_match('/Lindows ([0-9.]+)/u', $ua, $match)) { + $this->data->os->name = 'Lindows'; + $this->data->os->version = new Version([ 'value' => $match[1] ]); + $this->data->device->type = Constants\DeviceType::DESKTOP; + } + } + + + /* Brew */ + + private function detectBrew($ua) + { + if (preg_match('/REX; U/ui', $ua) || preg_match('/REXL4/ui', $ua)) { + $this->data->os->name = 'REX'; + + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/REX; U; [^;]+; ([^;]+); ([^;\/]+)[^;]*; NetFront/u', $ua, $match)) { + $this->data->device->manufacturer = Data\Manufacturers::identify(Constants\DeviceType::MOBILE, $match[1]); + $this->data->device->model = $match[2]; + $this->data->device->identified = Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('brew', $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + + if (preg_match('/[\(\s\-;]BREW[\s\/\-;]/ui', $ua) || preg_match('/BMP( [0-9.]*)?; U/u', $ua) || preg_match('/B(?:rew)?MP\/([0-9.]*)/u', $ua)) { + $this->data->os->name = 'Brew'; + + if (preg_match('/BREW MP/iu', $ua) || preg_match('/B(rew)?MP/iu', $ua)) { + $this->data->os->name = 'Brew MP'; + } + + if (preg_match('/; Brew ([0-9.]+);/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } elseif (preg_match('/BREW; U; ([0-9.]+)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } elseif (preg_match('/[\(;]BREW[\/ ]([0-9.]+)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } elseif (preg_match('/BREW MP ([0-9.]*)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } elseif (preg_match('/BMP ([0-9.]*); U/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } elseif (preg_match('/B(?:rew)?MP\/([0-9.]*)/iu', $ua, $match)) { + $this->data->os->version = new Version([ 'value' => $match[1] ]); + } + + $this->data->device->type = Constants\DeviceType::MOBILE; + + if (preg_match('/(?:Brew MP|BREW|BMP) [^;]+; U; [^;]+; ([^;]+); NetFront[^\)]+\) [^\s]+ ([^\s]+)/u', $ua, $match)) { + $this->data->device->manufacturer = Data\Manufacturers::identify(Constants\DeviceType::MOBILE, $match[1]); + $this->data->device->model = $match[2]; + $this->data->device->identified = Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('brew', $match[2]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/\(([^;]+);U;REX\/[^;]+;BREW\/[^;]+;(?:.*;)?[0-9]+\*[0-9]+(?:;CTC\/2.0)?\)/u', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified = Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('brew', $match[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/\(BREW [^;]+; U; [^;]+; [^;]+; ([^;]+); (Polaris|Netfront)\/[0-9\.]+\/(WAP|AMB|INT)\)/ui', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified = Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('brew', $match[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + + if (preg_match('/\(BREW [^;]+; U; [^;]+; [^;]+; Opera Mobi; Presto\/[0-9\.]+\/(?:WAP|AMB|INT)\) ([^\/]+) [^\/]+\//ui', $ua, $match)) { + $this->data->device->model = $match[1]; + $this->data->device->identified = Constants\Id::PATTERN; + + $device = Data\DeviceModels::identify('brew', $match[1]); + + if ($device->identified) { + $device->identified |= $this->data->device->identified; + $this->data->device = $device; + } + } + } + } + + + /* Remaining operating systems */ + + private function detectRemainingOperatingSystems($ua) + { + if (!preg_match('/(BeOS|Haiku|AmigaOS|MorphOS|AROS|VMS|RISC|Joli|OS\/2|Inferno|Syllable|Grid|MTK|MRE|MAUI|Nucleus|QNX|VRE|SpreadTrum|ThreadX)/ui', $ua)) { + return; + } + + $patterns = [ + [ 'name' => 'BeOS', 'regexp' => [ '/BeOS/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Haiku', 'regexp' => [ '/Haiku/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'AmigaOS', 'regexp' => [ '/AmigaOS ?([0-9.]+)/iu', '/AmigaOS/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'MorphOS', 'regexp' => [ '/MorphOS(?: ([0-9.]*))?/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'AROS', 'regexp' => [ '/AROS/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'OpenVMS', 'regexp' => [ '/OpenVMS V([0-9.]+)/iu', '/OpenVMS/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'RISC OS', 'regexp' => [ '/RISC OS(?:-NC)? ([0-9.]*)/iu', '/RISC OS/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Joli OS', 'regexp' => [ '/Joli OS\/([0-9.]*)/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'OS/2', 'regexp' => [ '/OS\/2;(?: (?:U; )?Warp ([0-9.]*))?/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Inferno', 'regexp' => [ '/Inferno/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Syllable', 'regexp' => [ '/Syllable/iu' ], 'type' => Constants\DeviceType::DESKTOP ], + + [ 'name' => 'Grid OS', 'regexp' => [ '/Grid OS ([0-9.]*)/iu' ], 'type' => Constants\DeviceType::TABLET ], + + [ 'name' => 'MRE', 'regexp' => [ '/\(MTK;/iu', '/\/MTK /iu' ], 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'MRE', 'regexp' => [ '/MRE\\\\/iu' ], 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'MRE', 'regexp' => [ '/MAUI[-_ ](?:Browser|Runtime)/iu' ], 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'MRE', 'regexp' => [ '/Browser\/MAUI/iu' ], 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'MRE', 'regexp' => [ '/Nucleus RTOS\//iu' ], 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'MRE', 'regexp' => [ '/\/Nucleus/iu' ], 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'MRE', 'regexp' => [ '/Nucleus\//iu' ], 'type' => Constants\DeviceType::MOBILE ], + + [ 'name' => 'QNX', 'regexp' => [ '/QNX/iu' ], 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'VRE', 'regexp' => [ '/\(VRE;/iu' ], 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'SpreadTrum', 'regexp' => [ '/\(SpreadTrum;/iu' ], 'type' => Constants\DeviceType::MOBILE ], + + [ 'name' => 'ThreadX', 'regexp' => [ '/ThreadX(?:_OS)?\/([0-9.]*)/iu' ] ], + ]; + + $count = count($patterns); + for ($b = 0; $b < $count; $b++) { + for ($r = 0; $r < count($patterns[$b]['regexp']); $r++) { + + if (preg_match($patterns[$b]['regexp'][$r], $ua, $match)) { + $this->data->os->name = $patterns[$b]['name']; + + if (isset($match[1]) && $match[1]) { + $this->data->os->version = new Version([ 'value' => $match[1], 'details' => isset($patterns[$b]['details']) ? $patterns[$b]['details'] : null ]); + } else { + $this->data->os->version = null; + } + + if (isset($patterns[$b]['type'])) { + $this->data->device->type = $patterns[$b]['type']; + } + + break; + } + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Using.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Using.php new file mode 100644 index 0000000..059c54f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Useragent/Using.php @@ -0,0 +1,59 @@ +<?php + +namespace WhichBrowser\Analyser\Header\Useragent; + +use WhichBrowser\Model\Version; + +trait Using +{ + private function &detectUsing($ua) + { + if (!preg_match('/(AdobeAIR|Awesomium|Embedded|bsalsa|Canvace|Ekioh|AtomShell|Electron|JavaFX|GFXe|luakit|Titanium|OpenWebKitSharp|Prism|Qt|Reqwireless|RhoSimulator|UWebKit|nw-tests|WebKit2)/ui', $ua)) { + return $this; + } + + $items = [ + [ 'name' => 'AdobeAIR', 'regexp' => '/AdobeAIR\/([0-9.]*)/u' ], + [ 'name' => 'Awesomium', 'regexp' => '/Awesomium\/([0-9.]*)/u' ], + [ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/EmbeddedWB ([0-9.]*)/u' ], + [ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/bsalsa\.com/u' ], + [ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/Embedded Web Browser/u' ], + [ 'name' => 'Canvace', 'regexp' => '/Canvace Standalone\/([0-9.]*)/u' ], + [ 'name' => 'Ekioh', 'regexp' => '/Ekioh\/([0-9.]*)/u' ], + [ 'name' => 'Electron', 'regexp' => '/AtomShell\/([0-9.]*)/u' ], + [ 'name' => 'Electron', 'regexp' => '/Electron\/([0-9.]*)/u' ], + [ 'name' => 'JavaFX', 'regexp' => '/JavaFX\/([0-9.]*)/u' ], + [ 'name' => 'GFXe', 'regexp' => '/GFXe\/([0-9.]*)/u' ], + [ 'name' => 'LuaKit', 'regexp' => '/luakit/u' ], + [ 'name' => 'Titanium', 'regexp' => '/Titanium\/([0-9.]*)/u' ], + [ 'name' => 'OpenWebKitSharp', 'regexp' => '/OpenWebKitSharp/u' ], + [ 'name' => 'Prism', 'regexp' => '/Prism\/([0-9.]*)/u' ], + [ 'name' => 'Qt', 'regexp' => '/Qt\/([0-9.]*)/u' ], + [ 'name' => 'Qt', 'regexp' => '/QtWebEngine\/([4-9][0-9.]*)?/u' ], + [ 'name' => 'Qt', 'regexp' => '/QtEmbedded/u' ], + [ 'name' => 'Qt', 'regexp' => '/QtEmbedded.*Qt\/([0-9.]*)/u' ], + [ 'name' => 'ReqwirelessWeb', 'regexp' => '/ReqwirelessWeb\/([0-9.]*)/u' ], + [ 'name' => 'RhoSimulator', 'regexp' => '/RhoSimulator/u' ], + [ 'name' => 'UWebKit', 'regexp' => '/UWebKit\/([0-9.]*)/u' ], + [ 'name' => 'Node-WebKit', 'regexp' => '/nw-tests\/([0-9.]*)/u' ], + [ 'name' => 'WebKit2.NET', 'regexp' => '/WebKit2.NET/u' ], + ]; + + $count = count($items); + for ($i = 0; $i < $count; $i++) { + if (preg_match($items[$i]['regexp'], $ua, $match)) { + $this->data->browser->using = new \WhichBrowser\Model\Using([ + 'name' => $items[$i]['name'] + ]); + + if (isset($match[1]) && $match[1]) { + $this->data->browser->using->version = new Version([ 'value' => $match[1], 'details' => isset($items[$i]['details']) ? $items[$i]['details'] : null ]); + } + + break; + } + } + + return $this; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Wap.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Wap.php new file mode 100644 index 0000000..727feee --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Analyser/Header/Wap.php @@ -0,0 +1,41 @@ +<?php + +namespace WhichBrowser\Analyser\Header; + +use WhichBrowser\Constants; +use WhichBrowser\Data; + +class Wap +{ + public function __construct($header, &$data) + { + $this->data =& $data; + + $header = trim($header); + + if ($header[0] == '"') { + $header = explode(",", $header); + $header = trim($header[0], '"'); + } + + $result = Data\DeviceProfiles::identify($header); + + if ($result) { + $this->data->device->manufacturer = $result[0]; + $this->data->device->model = $result[1]; + $this->data->device->identified |= Constants\Id::MATCH_PROF; + + if (!empty($result[2]) && (!isset($this->data->os->name) || $this->data->os->name != $result[2])) { + $this->data->os->name = $result[2]; + $this->data->os->version = null; + + $this->data->engine->name = null; + $this->data->engine->version = null; + } + + if (isset($result[3])) { + $this->data->device->type = $result[3]; + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Cache.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Cache.php new file mode 100644 index 0000000..bc99283 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Cache.php @@ -0,0 +1,110 @@ +<?php + +namespace WhichBrowser; + +use Psr\Cache\CacheItemPoolInterface; + +trait Cache +{ + private $cache; + private $expires; + + /** + * @var boolean $cached Was this result retrieve from the cache? + */ + + public $cached = false; + + + /** + * Enable caching of results + * + * @param object $cache An PSR-6 cache pool (an object that implements Psr\Cache\CacheItemPoolInterface) + * @param int $expires Optional the number of seconds after which a cached item expires, default is 15 minutes + */ + + public function setCache($cache, $expires = 900) + { + $this->cache = $cache; + $this->expires = $expires; + } + + + /** + * Apply cached data to the main Parser object + * + * @internal + * + * @param array $data An array with a key for every property it needs to apply + */ + + private function applyCachedData($data) + { + foreach ($data as $key => $value) { + $this->$key = $value; + } + + $this->cached = true; + } + + + /** + * Retrieve the data that can be cached from the main Parser object + * + * @internal + * + * @return array An array with a key for every property that will be cached + */ + + private function retrieveCachedData() + { + return [ + 'browser' => $this->browser, + 'engine' => $this->engine, + 'os' => $this->os, + 'device' => $this->device, + 'camouflage' => $this->camouflage, + 'features' => $this->features + ]; + } + + + /** + * Retrieve the result from the cache, or analyse and store in the cache + * + * @internal + * + * @param array|string $headers An array with all of the headers or a string with just the User-Agent header + * + * @return boolean did we actually retrieve or analyse results + */ + + private function analyseWithCache($headers, $options = []) + { + if (isset($options['cache'])) { + if (isset($options['cacheExpires'])) { + $this->setCache($options['cache'], $options['cacheExpires']); + } else { + $this->setCache($options['cache']); + } + } + + if ($this->cache instanceof CacheItemPoolInterface) { + $item = $this->cache->getItem('whichbrowser_' . md5(serialize($headers))); + + if ($item->isHit()) { + $this->applyCachedData($item->get()); + } else { + $analyser = new Analyser($headers, $options); + $analyser->setdata($this); + $analyser->analyse(); + + $item->set($this->retrieveCachedData()); + $item->expiresAfter($this->expires); + $this->cache->save($item); + } + + return true; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/BrowserType.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/BrowserType.php new file mode 100644 index 0000000..987f00f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/BrowserType.php @@ -0,0 +1,28 @@ +<?php + + +namespace WhichBrowser\Constants; + +class BrowserType +{ + const UNKNOWN = ''; + + const BROWSER = 'browser'; + const BROWSER_TEXT = 'browser:text'; + + const APP = 'app'; + const APP_EMAIL = 'app:email'; + const APP_GAME = 'app:game'; + const APP_MEDIAPLAYER = 'app:mediaplayer'; + const APP_FEEDREADER = 'app:feedreader'; + const APP_PODCAST = 'app:podcast'; + const APP_SOCIAL = 'app:social'; + const APP_OFFICE = 'app:office'; + const APP_EDITOR = 'app:editor'; + const APP_DOWNLOAD = 'app:download'; + const APP_SEARCH = 'app:search'; + const APP_NEWS = 'app:news'; + const APP_ANTIVIRUS = 'app:antivirus'; + const APP_SHOPPING = 'app:shopping'; + const APP_CHAT = 'app:chat'; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/DeviceSubType.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/DeviceSubType.php new file mode 100644 index 0000000..18012fa --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/DeviceSubType.php @@ -0,0 +1,13 @@ +<?php + + +namespace WhichBrowser\Constants; + +class DeviceSubType +{ + const FEATURE = 'feature'; + const SMART = 'smart'; + const DESKTOP = 'desktop'; + const CONSOLE = 'console'; + const PORTABLE = 'portable'; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/DeviceType.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/DeviceType.php new file mode 100644 index 0000000..b410779 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/DeviceType.php @@ -0,0 +1,33 @@ +<?php + + +namespace WhichBrowser\Constants; + +class DeviceType +{ + const DESKTOP = 'desktop'; + const MOBILE = 'mobile'; + const PDA = 'pda'; + const DECT = 'dect'; + const TABLET = 'tablet'; + const GAMING = 'gaming'; + const EREADER = 'ereader'; + const MEDIA = 'media'; + const HEADSET = 'headset'; + const WATCH = 'watch'; + const EMULATOR = 'emulator'; + const TELEVISION = 'television'; + const MONITOR = 'monitor'; + const CAMERA = 'camera'; + const PRINTER = 'printer'; + const SIGNAGE = 'signage'; + const WHITEBOARD = 'whiteboard'; + const DEVBOARD = 'devboard'; + const INFLIGHT = 'inflight'; + const APPLIANCE = 'appliance'; + const GPS = 'gps'; + const CAR = 'car'; + const POS = 'pos'; + const BOT = 'bot'; + const PROJECTOR = 'projector'; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/EngineType.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/EngineType.php new file mode 100644 index 0000000..5759cba --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/EngineType.php @@ -0,0 +1,14 @@ +<?php + + +namespace WhichBrowser\Constants; + +class EngineType +{ + const TRIDENT = 1; + const PRESTO = 2; + const CHROMIUM = 4; + const GECKO = 8; + const WEBKIT = 16; + const V8 = 32; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Feature.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Feature.php new file mode 100644 index 0000000..e19398a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Feature.php @@ -0,0 +1,15 @@ +<?php + + +namespace WhichBrowser\Constants; + +class Feature +{ + const SANDBOX = 1; + const WEBSOCKET = 2; + const WORKER = 4; + const APPCACHE = 8; + const HISTORY = 16; + const FULLSCREEN = 32; + const FILEREADER = 64; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Flag.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Flag.php new file mode 100644 index 0000000..751eb7d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Flag.php @@ -0,0 +1,17 @@ +<?php + + +namespace WhichBrowser\Constants; + +class Flag +{ + const GOOGLETV = 1; + const GOOGLEGLASS = 2; + const ANDROIDWEAR = 4; + const ANDROIDTV = 8; + const NOKIAX = 16; + const FIREOS = 32; + const UIQ = 64; + const S60 = 128; + const MOAPS = 256; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Id.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Id.php new file mode 100644 index 0000000..b288315 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Constants/Id.php @@ -0,0 +1,13 @@ +<?php + + +namespace WhichBrowser\Constants; + +class Id +{ + const NONE = 0; + const INFER = 1; + const PATTERN = 2; + const MATCH_UA = 4; + const MATCH_PROF = 8; +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Applications.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Applications.php new file mode 100644 index 0000000..c4fde6e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Applications.php @@ -0,0 +1,99 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Model\Browser; +use WhichBrowser\Model\Version; + +class Applications +{ + public static $BOTS = []; + public static $BOTS_REGEX = ''; + + public static $BROWSERS = []; + public static $BROWSERS_REGEX = ''; + + public static $OTHERS = []; + public static $OTHERS_REGEX = ''; + + + public static function identifyBrowser($ua) + { + require_once __DIR__ . '/../../data/regexes/applications-browsers.php'; + + if (preg_match(self::$BROWSERS_REGEX, $ua)) { + require_once __DIR__ . '/../../data/applications-browsers.php'; + + foreach (self::$BROWSERS as $type => $list) { + foreach ($list as $i => $item) { + + if (preg_match($item['regexp'], $ua, $match)) { + return [ + 'browser' => [ + 'name' => $item['name'], + 'hidden' => isset($item['hidden']) ? $item['hidden'] : false, + 'stock' => false, + 'channel' => '', + 'type' => $type, + 'version' => isset($match[1]) && $match[1] ? new Version([ 'value' => $match[1], 'details' => isset($item['details']) ? $item['details'] : null ]) : null + ], + + 'device' => isset($item['type']) ? [ + 'type' => $item['type'] + ] : null + ]; + } + } + } + } + } + + public static function identifyOther($ua) + { + require_once __DIR__ . '/../../data/regexes/applications-others.php'; + + if (preg_match(self::$OTHERS_REGEX, $ua)) { + require_once __DIR__ . '/../../data/applications-others.php'; + + foreach (self::$OTHERS as $type => $list) { + foreach ($list as $i => $item) { + + if (preg_match($item['regexp'], $ua, $match)) { + return [ + 'browser' => [ + 'name' => $item['name'], + 'hidden' => isset($item['hidden']) ? $item['hidden'] : false, + 'stock' => false, + 'channel' => '', + 'type' => $type, + 'version' => isset($match[1]) && $match[1] ? new Version([ 'value' => $match[1], 'details' => isset($item['details']) ? $item['details'] : null ]) : null + ], + + 'device' => isset($item['type']) ? [ + 'type' => $item['type'] + ] : null + ]; + } + } + } + } + } + public static function identifyBot($ua) + { + require_once __DIR__ . '/../../data/regexes/applications-bots.php'; + + if (preg_match(self::$BOTS_REGEX, $ua)) { + require_once __DIR__ . '/../../data/applications-bots.php'; + + foreach (self::$BOTS as $i => $item) { + if (preg_match($item['regexp'], $ua, $match)) { + return new Browser([ + 'name' => $item['name'], + 'stock' => false, + 'version' => isset($match[1]) && $match[1] ? new Version([ 'value' => $match[1], 'details' => isset($item['details']) ? $item['details'] : null ]) : null + ]); + } + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/BrowserIds.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/BrowserIds.php new file mode 100644 index 0000000..d0d27e4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/BrowserIds.php @@ -0,0 +1,17 @@ +<?php + +namespace WhichBrowser\Data; + +class BrowserIds +{ + public static $ANDROID_BROWSERS = []; + + public static function identify($model) + { + require_once __DIR__ . '/../../data/id-android.php'; + + if (isset(BrowserIds::$ANDROID_BROWSERS[$model])) { + return BrowserIds::$ANDROID_BROWSERS[$model]; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/BuildIds.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/BuildIds.php new file mode 100644 index 0000000..7cc9bd6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/BuildIds.php @@ -0,0 +1,23 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Model\Version; + +class BuildIds +{ + public static $ANDROID_BUILDS = []; + + public static function identify($id) + { + require_once __DIR__ . '/../../data/build-android.php'; + + if (isset(BuildIds::$ANDROID_BUILDS[$id])) { + if (is_array(BuildIds::$ANDROID_BUILDS[$id])) { + return new Version(BuildIds::$ANDROID_BUILDS[$id]); + } else { + return new Version([ 'value' => BuildIds::$ANDROID_BUILDS[$id] ]); + } + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/CFNetwork.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/CFNetwork.php new file mode 100644 index 0000000..6f7ede7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/CFNetwork.php @@ -0,0 +1,27 @@ +<?php + +namespace WhichBrowser\Data; + +class CFNetwork +{ + public static $OSX = []; + public static $IOS = []; + + public static function getVersion($platform, $version) + { + require_once __DIR__ . '/../../data/os-cfnetwork.php'; + + switch ($platform) { + case 'osx': + if (isset(CFNetwork::$OSX[$version])) { + return CFNetwork::$OSX[$version]; + } + break; + case 'ios': + if (isset(CFNetwork::$IOS[$version])) { + return CFNetwork::$IOS[$version]; + } + break; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Chrome.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Chrome.php new file mode 100644 index 0000000..4ebac4c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Chrome.php @@ -0,0 +1,31 @@ +<?php + +namespace WhichBrowser\Data; + +class Chrome +{ + public static $DESKTOP = []; + public static $MOBILE = []; + + public static function getChannel($platform, $version) + { + require_once __DIR__ . '/../../data/browsers-chrome.php'; + + $version = implode('.', array_slice(explode('.', $version), 0, 3)); + + switch ($platform) { + case 'desktop': + if (isset(Chrome::$DESKTOP[$version])) { + return Chrome::$DESKTOP[$version]; + } + break; + case 'mobile': + if (isset(Chrome::$MOBILE[$version])) { + return Chrome::$MOBILE[$version]; + } + break; + } + + return 'canary'; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Darwin.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Darwin.php new file mode 100644 index 0000000..fe6c78e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Darwin.php @@ -0,0 +1,29 @@ +<?php + +namespace WhichBrowser\Data; + +class Darwin +{ + public static $OSX = []; + public static $IOS = []; + + public static function getVersion($platform, $version) + { + require_once __DIR__ . '/../../data/os-darwin.php'; + + $version = implode('.', array_slice(explode('.', $version), 0, 3)); + + switch ($platform) { + case 'osx': + if (isset(Darwin::$OSX[$version])) { + return Darwin::$OSX[$version]; + } + break; + case 'ios': + if (isset(Darwin::$IOS[$version])) { + return Darwin::$IOS[$version]; + } + break; + } + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/DeviceModels.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/DeviceModels.php new file mode 100644 index 0000000..fbe0262 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/DeviceModels.php @@ -0,0 +1,353 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants; +use WhichBrowser\Model\Device; + +class DeviceModels +{ + public static $ANDROID_MODELS = []; + public static $ASHA_MODELS = []; + public static $BADA_MODELS = []; + public static $BREW_MODELS = []; + public static $FIREFOXOS_MODELS = []; + public static $TIZEN_MODELS = []; + public static $TOUCHWIZ_MODELS = []; + public static $WM_MODELS = []; + public static $WP_MODELS = []; + public static $PALMOS_MODELS = []; + public static $S30PLUS_MODELS = []; + public static $S40_MODELS = []; + public static $SYMBIAN_MODELS = []; + public static $FEATURE_MODELS = []; + public static $BLACKBERRY_MODELS = []; + public static $IOS_MODELS = []; + public static $KDDI_MODELS = []; + + public static $ANDROID_INDEX = []; + public static $ASHA_INDEX = []; + public static $BADA_INDEX = []; + public static $BREW_INDEX = []; + public static $FIREFOXOS_INDEX = []; + public static $TIZEN_INDEX = []; + public static $TOUCHWIZ_INDEX = []; + public static $WM_INDEX = []; + public static $WP_INDEX = []; + public static $PALMOS_INDEX = []; + public static $S30PLUS_INDEX = []; + public static $S40_INDEX = []; + public static $SYMBIAN_INDEX = []; + public static $FEATURE_INDEX = []; + public static $KDDI_INDEX = []; + + + public static function identify($type, $model) + { + require_once __DIR__ . '/../../data/models-' . $type . '.php'; + + if ($type != 'blackberry' && $type != 'ios') { + require_once __DIR__ . '/../../data/indices/models-' . $type . '.php'; + } + + switch ($type) { + case 'android': + return self::identifyAndroid($model); + case 'asha': + return self::identifyList(self::$ASHA_INDEX, self::$ASHA_MODELS, $model); + case 'bada': + return self::identifyList(self::$BADA_INDEX, self::$BADA_MODELS, $model); + case 'blackberry': + return self::identifyBlackBerry($model); + case 'brew': + return self::identifyList(self::$BREW_INDEX, self::$BREW_MODELS, $model); + case 'firefoxos': + return self::identifyList(self::$FIREFOXOS_INDEX, self::$FIREFOXOS_MODELS, $model, false); + case 'ios': + return self::identifyIOS($model); + case 'tizen': + return self::identifyList(self::$TIZEN_INDEX, self::$TIZEN_MODELS, $model); + case 'touchwiz': + return self::identifyList(self::$TOUCHWIZ_INDEX, self::$TOUCHWIZ_MODELS, $model); + case 'wm': + return self::identifyWindowsMobile($model); + case 'wp': + return self::identifyList(self::$WP_INDEX, self::$WP_MODELS, $model); + case 's30plus': + return self::identifyList(self::$S30PLUS_INDEX, self::$S30PLUS_MODELS, $model); + case 's40': + return self::identifyList(self::$S40_INDEX, self::$S40_MODELS, $model); + case 'symbian': + return self::identifyList(self::$SYMBIAN_INDEX, self::$SYMBIAN_MODELS, $model); + case 'palmos': + return self::identifyList(self::$PALMOS_INDEX, self::$PALMOS_MODELS, $model); + case 'kddi': + return self::identifyList(self::$KDDI_INDEX, self::$KDDI_MODELS, $model); + } + + require_once __DIR__ . '/../../data/models-feature.php'; + require_once __DIR__ . '/../../data/indices/models-feature.php'; + return self::identifyList(self::$FEATURE_INDEX, self::$FEATURE_MODELS, $model); + } + + public static function identifyWindowsMobile($model) + { + $model = preg_replace('/^(HTC|SAMSUNG|SHARP|Toshiba)\//u', '', $model); + return self::identifyList(self::$WM_INDEX, self::$WM_MODELS, $model); + } + + public static function identifyIOS($model) + { + $original = $model; + + $model = str_replace('Unknown ', '', $model); + $model = preg_replace("/iPh([0-9],[0-9])/", 'iPhone\\1', $model); + $model = preg_replace("/iPd([0-9],[0-9])/", 'iPod\\1', $model); + + $device = new Device([ + 'type' => Constants\DeviceType::MOBILE, + 'identified' => Constants\Id::NONE, + 'manufacturer' => null, + 'model' => $model, + 'identifier' => $original, + 'generic' => false + ]); + + if (isset(self::$IOS_MODELS[$model])) { + $match = self::$IOS_MODELS[$model]; + + $device->manufacturer = $match[0]; + $device->model = $match[1]; + $device->identified = Constants\Id::MATCH_UA; + + if (isset($match[2]) || isset($match['type'])) { + $type = isset($match[2]) ? $match[2] : $match['type']; + $device->type = $type; + } + + return $device; + } + + return $device; + } + + public static function identifyBlackBerry($model) + { + $original = $model; + + if (preg_match("/BlackBerry ?([0-9]+)/ui", $model, $match)) { + $model = $match[1]; + } + + $device = new Device([ + 'type' => Constants\DeviceType::MOBILE, + 'identified' => Constants\Id::NONE, + 'manufacturer' => null, + 'model' => $model, + 'identifier' => $original, + 'generic' => false + ]); + + if (preg_match("/^[1-9][0-9][0-9][0-9][ei]?$/u", $model)) { + $device->manufacturer = 'RIM'; + $device->model = 'BlackBerry ' . $model; + $device->identified = Constants\Id::PATTERN; + + if (isset(self::$BLACKBERRY_MODELS[$model])) { + $device->model = 'BlackBerry ' . self::$BLACKBERRY_MODELS[$model] . ' ' . $model; + $device->identified |= Constants\Id::MATCH_UA; + } + } + + return $device; + } + + public static function identifyAndroid($model) + { + $result = self::identifyList(self::$ANDROID_INDEX, self::$ANDROID_MODELS, $model); + + if (!$result->identified) { + $model = self::cleanup($model); + if (preg_match('/AndroVM/iu', $model) || $model == 'Emulator' || $model == 'x86 Emulator' || $model == 'x86 VirtualBox' || $model == 'vm') { + return new Device([ + 'type' => Constants\DeviceType::EMULATOR, + 'identified' => Constants\Id::PATTERN, + 'manufacturer' => null, + 'model' => null, + 'generic' => false + ]); + } + } + + return $result; + } + + public static function identifyList(&$index, &$list, $model, $cleanup = true) + { + $original = $model; + + if ($cleanup) { + $model = self::cleanup($model); + } + + $device = new Device([ + 'type' => Constants\DeviceType::MOBILE, + 'identified' => Constants\Id::NONE, + 'manufacturer' => null, + 'model' => $model, + 'identifier' => $original, + 'generic' => false + ]); + + $keys = [ '@' . strtoupper(substr($model, 0, 2)), '@' ]; + + $pattern = null; + $match = null; + + foreach ($keys as $k => $key) { + if (isset($index[$key])) { + foreach ($index[$key] as $m => $v) { + if (self::hasMatch($v, $model)) { + if ($v) { + if (substr($v, -2) == "!!") { + foreach ($list[$v] as $m2 => $v2) { + if (self::hasMatch($m2, $model)) { + $match = $v2; + $pattern = $m2; + break; + } + } + } else { + $match = $list[$v]; + $pattern = $v; + } + } + + if ($match) { + $device->manufacturer = $match[0]; + $device->model = self::applyMatches($match[1], $model, $pattern); + $device->identified = Constants\Id::MATCH_UA; + + if (isset($match[2]) || isset($match['type'])) { + $type = isset($match[2]) ? $match[2] : $match['type']; + if (is_array($type)) { + $device->type = $type[0]; + $device->subtype = $type[1]; + } else { + $device->type = $type; + } + } + + if (isset($match[3]) || isset($match['flag'])) { + $device->flag = isset($match[3]) ? $match[3] : $match['flag']; + } + + if (isset($match['carrier'])) { + $device->carrier = $match['carrier']; + } + + if ($device->manufacturer == null && $device->model == null) { + $device->identified = Constants\Id::PATTERN; + } + + return $device; + } + } + } + } + } + + return $device; + } + + public static function applyMatches($model, $original, $pattern) + { + if (strpos($model, '$') !== false && substr($pattern, -1) == "!") { + if (preg_match('/^' . substr($pattern, 0, -1) . '/iu', $original, $matches)) { + foreach ($matches as $k => $v) { + $model = str_replace('$' . $k, $v, $model); + } + } + } + + return $model; + } + + public static function hasMatch($pattern, $model) + { + if (substr($pattern, -2) == "!!") { + return !! preg_match('/^' . substr($pattern, 0, -2) . '/iu', $model); + } elseif (substr($pattern, -1) == "!") { + return !! preg_match('/^' . substr($pattern, 0, -1) . '/iu', $model); + } else { + return strtolower($pattern) == strtolower($model); + } + } + + public static function cleanup($s = '') + { + // var_dump($s); + + $s = preg_replace('/^phone\//', '', $s); + $s = preg_replace('/^(\/|; |;)/u', '', $s); + $s = preg_replace('/\/[^\/]+$/u', '', $s); + $s = preg_replace('/\/[^\/]+ Android\/.*/u', '', $s); + + $s = preg_replace('/UCBrowser$/u', '', $s); + + $s = preg_replace('/(_TD-LTE|_TD|_LTE|_GPRS|_BLEU|_CMCC|_CMCC_TD|_CUCC)$/u', '', $s); + $s = preg_replace('/(-BREW| MIDP).+$/u', '', $s); + $s = preg_replace('/ AU-MIC.+$/u', '', $s); + $s = preg_replace('/ (AU|UP)\.Browser$/u', '', $s); + + $s = preg_replace('/_/u', ' ', $s); + $s = preg_replace('/^\*+/u', '', $s); + $s = preg_replace('/^\s+|\s+$/u', '', $s); + + $s = preg_replace('/^De-Sensed /u', '', $s); + $s = preg_replace('/^Full JellyBean( on )?/u', '', $s); + $s = preg_replace('/^(Android|Generic Android|Baidu Yi|Buildroid|Gingerbread|ICS AOSP|AOSPA?|tita) (on |for )/u', '', $s); + $s = preg_replace('/^Full (AOSP on |Android on |Base for |Cappuccino on |MIPS Android on |Webdroid on |JellyBean on |Android)/u', '', $s); + + $s = preg_replace('/^Acer( |-)?/iu', '', $s); + $s = preg_replace('/^Iconia( Tab)? /u', '', $s); + $s = preg_replace('/^ASUS ?/u', '', $s); + $s = preg_replace('/^Ainol /u', '', $s); + $s = preg_replace('/^Coolpad-?Coolpad/iu', 'Coolpad', $s); + $s = preg_replace('/^Coolpad ?/iu', 'Coolpad ', $s); + $s = preg_replace('/^Alcatel[_ ]OT[_-](.*)/iu', 'One Touch $1', $s); + $s = preg_replace('/^ALCATEL /u', '', $s); + $s = preg_replace('/^YL-/u', '', $s); + $s = preg_replace('/^TY-K[_\- ]Touch/iu', 'K-Touch', $s); + $s = preg_replace('/^K-Touch[_\-]/u', 'K-Touch ', $s); + $s = preg_replace('/^Novo7 ?/iu', 'Novo7 ', $s); + $s = preg_replace('/^HW-HUAWEI/u', 'HUAWEI', $s); + $s = preg_replace('/^Huawei[ -]/iu', 'Huawei ', $s); + $s = preg_replace('/^SAMSUNG SAMSUNG-/iu', '', $s); + $s = preg_replace('/^SAMSUNG[ -]/iu', '', $s); + $s = preg_replace('/^(Sony ?Ericsson|Sony)/u', '', $s); + $s = preg_replace('/^(Lenovo Lenovo|LNV-Lenovo|LENOVO-Lenovo)/u', 'Lenovo', $s); + $s = preg_replace('/^Lenovo-/u', 'Lenovo', $s); + $s = preg_replace('/^Lenovo/u', 'Lenovo ', $s); + $s = preg_replace('/^ZTE-/u', 'ZTE ', $s); + $s = preg_replace('/^(LG)[ _\/]/u', '$1-', $s); + $s = preg_replace('/^(HTC.+)\s[v|V][0-9.]+$/u', '$1', $s); + $s = preg_replace('/^(HTC)[-\/]/u', '$1 ', $s); + $s = preg_replace('/^(HTC)([A-Z][0-9][0-9][0-9])/u', '$1 $2', $s); + $s = preg_replace('/^(Motorola MOT-|MOT-|Motorola[\s|-])/u', '', $s); + $s = preg_replace('/^Moto([^\s])/u', '$1', $s); + $s = preg_replace('/^(UTStar-)/u', '', $s); + + $s = preg_replace('/^VZW:/iu', '', $s); + $s = preg_replace('/^(Swisscom|Vodafone)\/1.0\//iu', '', $s); + $s = preg_replace('/-?(orange(-ls)?|vodafone|bouygues|parrot|Kust)$/iu', '', $s); + $s = preg_replace('/[ -](Mozilla|Opera|Obigo|Java|PPC)$/iu', '', $s); + $s = preg_replace('/ ?Build$/iu', '', $s); + $s = preg_replace('/ \(compatible$/iu', '', $s); + $s = preg_replace('/http:\/\/.+$/iu', '', $s); + $s = preg_replace('/^\s+|\s+$/u', '', $s); + $s = preg_replace('/\s+/u', ' ', $s); + + return $s; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/DeviceProfiles.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/DeviceProfiles.php new file mode 100644 index 0000000..90cde6f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/DeviceProfiles.php @@ -0,0 +1,19 @@ +<?php + +namespace WhichBrowser\Data; + +class DeviceProfiles +{ + public static $PROFILES = []; + + public static function identify($url) + { + require_once __DIR__ . '/../../data/profiles.php'; + + if (isset(self::$PROFILES[$url])) { + return self::$PROFILES[$url]; + } + + return false; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Manufacturers.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Manufacturers.php new file mode 100644 index 0000000..8dbf289 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Data/Manufacturers.php @@ -0,0 +1,30 @@ +<?php + +namespace WhichBrowser\Data; + +use WhichBrowser\Constants; + +class Manufacturers +{ + public static $GENERIC = []; + public static $TELEVISION = []; + + public static function identify($type, $name) + { + $name = preg_replace('/^CUS\:/u', '', trim($name)); + + require_once __DIR__ . '/../../data/manufacturer-names.php'; + + if ($type == Constants\DeviceType::TELEVISION) { + if (isset(Manufacturers::$TELEVISION[$name])) { + return self::$TELEVISION[$name]; + } + } + + if (isset(Manufacturers::$GENERIC[$name])) { + return self::$GENERIC[$name]; + } + + return $name; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Browser.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Browser.php new file mode 100644 index 0000000..b02a4f0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Browser.php @@ -0,0 +1,181 @@ +<?php + +namespace WhichBrowser\Model; + +use WhichBrowser\Model\Primitive\NameVersion; + +class Browser extends NameVersion +{ + /** + * @var \WhichBrowser\Model\Using $using Information about web views the browser is using + * @var \WhichBrowser\Model\Family $family To which browser family does this browser belong + */ + public $using; + public $family; + + + /** @var string */ + public $channel; + + /** @var boolean */ + public $stock = true; + + /** @var boolean */ + public $hidden = false; + + /** @var string */ + public $mode = ''; + + /** @var string */ + public $type = ''; + + + /** + * Set the properties to the default values + * + * @param array|null $properties An optional array of properties to set after setting it to the default values + * + * @internal + */ + + public function reset($properties = null) + { + parent::reset(); + + unset($this->channel); + unset($this->using); + unset($this->family); + + $this->stock = true; + $this->hidden = false; + $this->mode = ''; + $this->type = ''; + + if (is_array($properties)) { + $this->set($properties); + } + } + + + /** + * Get the name in a human readable format + * + * @return string + */ + + public function getName() + { + $name = !empty($this->alias) ? $this->alias : (!empty($this->name) ? $this->name : ''); + return $name ? $name . (!empty($this->channel) ? ' ' . $this->channel : '') : ''; + } + + + /** + * Is the browser from the specified family + * + * @param string $name The name of the family + * + * @return boolean + */ + + public function isFamily($name) + { + if ($this->getName() == $name) { + return true; + } + + if (isset($this->family)) { + if ($this->family->getName() == $name) { + return true; + } + } + + return false; + } + + + /** + * Is the browser using the specified webview + * + * @param string $name The name of the webview + * + * @return boolean + */ + + public function isUsing($name) + { + if (isset($this->using)) { + if ($this->using->getName() == $name) { + return true; + } + } + + return false; + } + + + /** + * Get a combined name and version number in a human readable format + * + * @return string + */ + + public function toString() + { + if ($this->hidden) { + return ''; + } + + $result = trim($this->getName() . ' ' . (!empty($this->version) && !$this->version->hidden ? $this->getVersion() : '')); + + if (empty($result) && isset($this->using)) { + return $this->using->toString(); + } + + return $result; + } + + + /** + * Get an array of all defined properties + * + * @internal + * + * @return array + */ + + public function toArray() + { + $result = []; + + if (!empty($this->name)) { + $result['name'] = $this->name; + } + + if (!empty($this->alias)) { + $result['alias'] = $this->alias; + } + + if (!empty($this->using)) { + $result['using'] = $this->using->toArray(); + } + + if (!empty($this->family)) { + $result['family'] = $this->family->toArray(); + } + + if (!empty($this->version)) { + $result['version'] = $this->version->toArray(); + } + + if (!empty($this->type)) { + $result['type'] = $this->type; + } + + if (isset($result['version']) && empty($result['version'])) { + unset($result['version']); + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Device.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Device.php new file mode 100644 index 0000000..6428f4f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Device.php @@ -0,0 +1,251 @@ +<?php + +namespace WhichBrowser\Model; + +use WhichBrowser\Constants; +use WhichBrowser\Data; +use WhichBrowser\Model\Primitive\Base; + +class Device extends Base +{ + /** @var string */ + public $manufacturer; + + /** @var string */ + public $model; + + /** @var string */ + public $series; + + /** @var string */ + public $carrier; + + /** @var int */ + public $identifier; + + /** @var mixed */ + public $flag; + + + /** @var string */ + public $type = ''; + + /** @var string */ + public $subtype = ''; + + /** @var int */ + public $identified = Constants\Id::NONE; + + /** @var boolean */ + public $generic = true; + + /** @var boolean */ + public $hidden = false; + + + /** + * Set the properties to the default values + * + * @param array|null $properties An optional array of properties to set after setting it to the default values + * + * @internal + */ + + public function reset($properties = null) + { + unset($this->manufacturer); + unset($this->model); + unset($this->series); + unset($this->carrier); + unset($this->identifier); + + $this->type = ''; + $this->subtype = ''; + $this->identified = Constants\Id::NONE; + $this->generic = true; + $this->hidden = false; + + if (is_array($properties)) { + $this->set($properties); + } + } + + + /** + * Identify the manufacturer and model based on a pattern + * + * @param string $pattern The regular expression that defines the group that matches the model + * @param string $subject The string the regular expression is matched with + * @param array|null $defaults An optional array of properties to set together + * + * @return string + */ + + public function identifyModel($pattern, $subject, $defaults = []) + { + if (preg_match($pattern, $subject, $match)) { + $this->manufacturer = !empty($defaults['manufacturer']) ? $defaults['manufacturer'] : null; + $this->model = Data\DeviceModels::cleanup($match[1]); + $this->identifier = preg_replace('/ (Mozilla|Opera|Obigo|AU.Browser|UP.Browser|Build|Java|PPC|AU-MIC.*)$/iu', '', $match[0]); + $this->identifier = preg_replace('/_(TD|GPRS|LTE|BLEU|CMCC|CUCC)$/iu', '', $match[0]); + + if (isset($defaults['model'])) { + if (is_callable($defaults['model'])) { + $this->model = call_user_func($defaults['model'], $this->model); + } else { + $this->model = $defaults['model']; + } + } + + $this->generic = false; + $this->identified |= Constants\Id::PATTERN; + + if (!empty($defaults['carrier'])) { + $this->carrier = $defaults['carrier']; + } + + if (!empty($defaults['type'])) { + $this->type = $defaults['type']; + } + } + } + + + /** + * Declare an positive identification + * + * @param array $properties An array, the key of an element determines the name of the property + * + * @return string + */ + + public function setIdentification($properties) + { + $this->reset($properties); + + if (!empty($this->model)) { + $this->generic = false; + } + + $this->identified |= Constants\Id::MATCH_UA; + } + + + /** + * Get the name of the carrier in a human readable format + * + * @return string + */ + + public function getCarrier() + { + return $this->identified && !empty($this->carrier) ? $this->carrier : ''; + } + + + /** + * Get the name of the manufacturer in a human readable format + * + * @return string + */ + + public function getManufacturer() + { + return $this->identified && !empty($this->manufacturer) ? $this->manufacturer : ''; + } + + + /** + * Get the name of the model in a human readable format + * + * @return string + */ + + public function getModel() + { + if ($this->identified) { + return trim((!empty($this->model) ? $this->model . ' ' : '') . (!empty($this->series) ? $this->series : '')); + } + + return !empty($this->model) ? $this->model : ''; + } + + + /** + * Get the combined name of the manufacturer and model in a human readable format + * + * @return string + */ + + public function toString() + { + if ($this->hidden) { + return ''; + } + + if ($this->identified) { + $model = $this->getModel(); + $manufacturer = $this->getManufacturer(); + + if ($manufacturer != '' && strpos($model, $manufacturer) === 0) { + $manufacturer = ''; + } + + return trim($manufacturer . ' ' . $model); + } + + return !empty($this->model) ? 'unrecognized device (' . $this->model . ')' : ''; + } + + + /** + * Check if device information is detected + * + * @return boolean + */ + + public function isDetected() + { + return !empty($this->type) || !empty($this->model) || !empty($this->manufacturer); + } + + + /** + * Get an array of all defined properties + * + * @internal + * + * @return array + */ + + public function toArray() + { + $result = []; + + if (!empty($this->type)) { + $result['type'] = $this->type; + } + + if (!empty($this->subtype)) { + $result['subtype'] = $this->subtype; + } + + if (!empty($this->manufacturer)) { + $result['manufacturer'] = $this->manufacturer; + } + + if (!empty($this->model)) { + $result['model'] = $this->model; + } + + if (!empty($this->series)) { + $result['series'] = $this->series; + } + + if (!empty($this->carrier)) { + $result['carrier'] = $this->carrier; + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Engine.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Engine.php new file mode 100644 index 0000000..90d340d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Engine.php @@ -0,0 +1,35 @@ +<?php + +namespace WhichBrowser\Model; + +use WhichBrowser\Model\Primitive\NameVersion; + +class Engine extends NameVersion +{ + /** + * Get an array of all defined properties + * + * @internal + * + * @return array + */ + + public function toArray() + { + $result = []; + + if (!empty($this->name)) { + $result['name'] = $this->name; + } + + if (!empty($this->version)) { + $result['version'] = $this->version->toArray(); + } + + if (isset($result['version']) && empty($result['version'])) { + unset($result['version']); + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Family.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Family.php new file mode 100644 index 0000000..d6aad95 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Family.php @@ -0,0 +1,35 @@ +<?php + +namespace WhichBrowser\Model; + +use WhichBrowser\Model\Primitive\NameVersion; + +class Family extends NameVersion +{ + /** + * Get an array of all defined properties + * + * @internal + * + * @return array + */ + + public function toArray() + { + $result = []; + + if (!empty($this->name) && empty($this->version)) { + return $this->name; + } + + if (!empty($this->name)) { + $result['name'] = $this->name; + } + + if (!empty($this->version)) { + $result['version'] = $this->version->toArray(); + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Main.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Main.php new file mode 100644 index 0000000..d74e8d6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Main.php @@ -0,0 +1,373 @@ +<?php + +namespace WhichBrowser\Model; + +use WhichBrowser\Model\Browser; +use WhichBrowser\Model\Engine; +use WhichBrowser\Model\Os; +use WhichBrowser\Model\Device; + +class Main +{ + /** + * @var \WhichBrowser\Model\Browser $browser Information about the browser + */ + public $browser; + + /** + * @var \WhichBrowser\Model\Engine $engine Information about the rendering engine + */ + public $engine; + + /** + * @var \WhichBrowser\Model\Os $os Information about the operating system + */ + public $os; + + /** + * @var \WhichBrowser\Model\Device $device Information about the device + */ + public $device; + + /** + * @var boolean $camouflage Is the browser camouflaged as another browser + */ + public $camouflage = false; + + /** + * @var int[] $features + */ + public $features = []; + + + /** + * Create default objects + */ + + public function __construct() + { + $this->browser = new Browser(); + $this->engine = new Engine(); + $this->os = new Os(); + $this->device = new Device(); + } + + + /** + * Check the name of a property and optionally is a specific version + * + * @internal + * + * @param string The name of the property, such as 'browser', 'engine' or 'os' + * @param string The name of the browser that is checked + * @param string Optional, the operator, must be <, <=, =, >= or > + * @param mixed Optional, the value, can be an integer, float or string with a version number + * + * @return boolean + */ + + private function isX() + { + $arguments = func_get_args(); + $x = $arguments[0]; + + if (count($arguments) < 2) { + return false; + } + + if (empty($this->$x->name)) { + return false; + } + + if ($this->$x->name != $arguments[1]) { + return false; + } + + if (count($arguments) >= 4) { + if (empty($this->$x->version)) { + return false; + } + + if (!$this->$x->version->is($arguments[2], $arguments[3])) { + return false; + } + } + + return true; + } + + + /** + * Check the name of the browser and optionally is a specific version + * + * @param string The name of the browser that is checked + * @param string Optional, the operator, must be <, <=, =, >= or > + * @param mixed Optional, the value, can be an integer, float or string with a version number + * + * @return boolean + */ + + public function isBrowser() + { + $arguments = func_get_args(); + array_unshift($arguments, 'browser'); + return call_user_func_array([ $this, 'isX' ], $arguments); + } + + + /** + * Check the name of the rendering engine and optionally is a specific version + * + * @param string The name of the rendering engine that is checked + * @param string Optional, the operator, must be <, <=, =, >= or > + * @param mixed Optional, the value, can be an integer, float or string with a version number + * + * @return boolean + */ + + public function isEngine() + { + $arguments = func_get_args(); + array_unshift($arguments, 'engine'); + return call_user_func_array([ $this, 'isX' ], $arguments); + } + + + /** + * Check the name of the operating system and optionally is a specific version + * + * @param string The name of the operating system that is checked + * @param string Optional, the operator, must be <, <=, =, >= or > + * @param mixed Optional, the value, can be an integer, float or string with a version number + * + * @return boolean + */ + + public function isOs() + { + $arguments = func_get_args(); + array_unshift($arguments, 'os'); + return call_user_func_array([ $this, 'isX' ], $arguments); + } + + + /** + * Check if the detected browser is of the specified type + * + * @param string $model The type, or a combination of type and subtime joined with a semicolon. + * + * @return boolean + */ + + public function isDevice($model) + { + return (!empty($this->device->series) && $this->device->series == $model) || (!empty($this->device->model) && $this->device->model == $model); + } + + + /** + * Get the type and subtype, separated by a semicolon (if applicable) + * + * @return string + */ + + public function getType() + { + return $this->device->type . (!empty($this->device->subtype) ? ':' . $this->device->subtype : ''); + } + + + /** + * Check if the detected browser is of the specified type + * + * @param string The type, or a combination of type and subtype joined with a semicolon. + * @param string Unlimited optional types to check + * + * @return boolean + */ + + public function isType() + { + $arguments = func_get_args(); + + $count = count($arguments); + for ($a = 0; $a < $count; $a++) { + if (strpos($arguments[$a], ':') !== false) { + list($type, $subtype) = explode(':', $arguments[$a]); + if ($type == $this->device->type && $subtype == $this->device->subtype) { + return true; + } + } else { + if ($arguments[$a] == $this->device->type) { + return true; + } + } + } + + return false; + } + + + /** + * Check if the detected browser is a mobile device + * + * @return boolean + */ + + public function isMobile() + { + return $this->isType('mobile', 'tablet', 'ereader', 'media', 'watch', 'camera', 'gaming:portable'); + } + + + /** + * Check if a browser was detected + * + * @return boolean + */ + + public function isDetected() + { + return $this->browser->isDetected() || $this->os->isDetected() || $this->engine->isDetected() || $this->device->isDetected(); + } + + + /** + * Return the input string prefixed with 'a' or 'an' depending on the first letter of the string + * + * @internal + * + * @param string $s The string that will be prefixed + * + * @return string + */ + + private function a($s) + { + return (preg_match("/^[aeiou]/i", $s) ? 'an ' : 'a ') . $s; + } + + + /** + * Get a human readable string of the whole browser identification + * + * @return string + */ + + public function toString() + { + $prefix = $this->camouflage ? 'an unknown browser that imitates ' : ''; + $browser = $this->browser->toString(); + $os = $this->os->toString(); + $engine = $this->engine->toString(); + $device = $this->device->toString(); + + + if (empty($device) && empty($os) && $this->device->type == 'television') { + $device = 'television'; + } + + if (empty($device) && $this->device->type == 'emulator') { + $device = 'emulator'; + } + + + if (!empty($browser) && !empty($os) && !empty($device)) { + return $prefix . $browser . ' on ' . $this->a($device) . ' running ' . $os; + } + + if (!empty($browser) && empty($os) && !empty($device)) { + return $prefix . $browser . ' on ' . $this->a($device); + } + + if (!empty($browser) && !empty($os) && empty($device)) { + return $prefix . $browser . ' on ' . $os; + } + + if (empty($browser) && !empty($os) && !empty($device)) { + return $prefix . $this->a($device) . ' running ' . $os; + } + + if (!empty($browser) && empty($os) && empty($device)) { + return $prefix . $browser; + } + + if (empty($browser) && empty($os) && !empty($device)) { + return $prefix . $this->a($device); + } + + if ($this->device->type == 'desktop' && !empty($os) && !empty($engine) && empty($device)) { + return 'an unknown browser based on ' . $engine . ' running on ' . $os; + } + + if ($this->browser->stock && !empty($os) && empty($device)) { + return $os; + } + + if ($this->browser->stock && !empty($engine) && empty($device)) { + return 'an unknown browser based on ' . $engine; + } + + if ($this->device->type == 'bot') { + return 'an unknown bot'; + } + + return 'an unknown browser'; + } + + + /** + * Get a string containing a JavaScript representation of the object + * + * @return string + */ + + public function toJavaScript() + { + return "this.browser = new Browser({ " . $this->browser->toJavaScript() . " });\n" . + "this.engine = new Engine({ " . $this->engine->toJavaScript() . " });\n" . + "this.os = new Os({ " . $this->os->toJavaScript() . " });\n" . + "this.device = new Device({ " . $this->device->toJavaScript() . " });\n" . + "this.camouflage = " . ($this->camouflage ? 'true' : 'false') . ";\n" . + "this.features = " . json_encode($this->features) . ";\n"; + } + + + /** + * Get an array of all defined properties + * + * @return array + */ + + public function toArray() + { + $result = [ + 'browser' => $this->browser->toArray(), + 'engine' => $this->engine->toArray(), + 'os' => $this->os->toArray(), + 'device' => $this->device->toArray() + ]; + + if (empty($result['browser'])) { + unset($result['browser']); + } + + if (empty($result['engine'])) { + unset($result['engine']); + } + + if (empty($result['os'])) { + unset($result['os']); + } + + if (empty($result['device'])) { + unset($result['device']); + } + + if ($this->camouflage) { + $result['camouflage'] = true; + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Os.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Os.php new file mode 100644 index 0000000..ff527fd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Os.php @@ -0,0 +1,140 @@ +<?php + +namespace WhichBrowser\Model; + +use WhichBrowser\Model\Primitive\NameVersion; + +class Os extends NameVersion +{ + /** + * @var \WhichBrowser\Model\Family $family To which family does this operating system belong + */ + public $family; + + /** @var string */ + public $edition; + + /** @var boolean */ + public $hidden = false; + + + /** + * Set the properties to the default values + * + * @param array|null $properties An optional array of properties to set after setting it to the default values + * + * @internal + */ + + public function reset($properties = null) + { + parent::reset(); + + unset($this->family); + unset($this->edition); + + $this->hidden = false; + + if (is_array($properties)) { + $this->set($properties); + } + } + + + /** + * Return the name of the operating system family + * + * @return string + */ + + public function getFamily() + { + if (isset($this->family)) { + return $this->family->getName(); + } + + return $this->getName(); + } + + + /** + * Is the operating from the specified family + * + * @param string $name The name of the family + * + * @return boolean + */ + + public function isFamily($name) + { + if ($this->getName() == $name) { + return true; + } + + if (isset($this->family)) { + if ($this->family->getName() == $name) { + return true; + } + } + + return false; + } + + + /** + * Get the name and version in a human readable format + * + * @return string + */ + + public function toString() + { + if ($this->hidden) { + return ''; + } + + return trim($this->getName() . + (!empty($this->version) && !$this->version->hidden ? ' ' . $this->getVersion() : '')) . + (!empty($this->edition) ? ' ' . $this->edition : ''); + } + + + /** + * Get an array of all defined properties + * + * @internal + * + * @return array + */ + + public function toArray() + { + $result = []; + + if (!empty($this->name)) { + $result['name'] = $this->name; + } + + if (!empty($this->family)) { + $result['family'] = $this->family->toArray(); + } + + if (!empty($this->alias)) { + $result['alias'] = $this->alias; + } + + if (!empty($this->edition)) { + $result['edition'] = $this->edition; + } + + if (!empty($this->version)) { + $result['version'] = $this->version->toArray(); + } + + if (isset($result['version']) && empty($result['version'])) { + unset($result['version']); + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Primitive/Base.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Primitive/Base.php new file mode 100644 index 0000000..35247ed --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Primitive/Base.php @@ -0,0 +1,81 @@ +<?php + +namespace WhichBrowser\Model\Primitive; + +/** + * @internal + */ + +class Base +{ + /** + * Set the properties of the object the the values specified in the array + * + * @param array|null An array, the key of an element determines the name of the property + */ + public function __construct($defaults = null) + { + if (is_array($defaults)) { + $this->set($defaults); + } + } + + + /** + * Set the properties of the object the the values specified in the array + * + * @param array $properties An array, the key of an element determines the name of the property + * + * @internal + */ + public function set($properties) + { + foreach ($properties as $k => $v) { + $this->{$k} = $v; + } + } + + + /** + * Get a string containing a JavaScript representation of the object + * + * @internal + * + * @return string + */ + + public function toJavaScript() + { + $lines = []; + + foreach (get_object_vars($this) as $key => $value) { + if (!is_null($value)) { + $line = $key . ": "; + + if ($key == 'version') { + $line .= 'new Version({ ' . $value->toJavaScript() . ' })'; + } elseif ($key == 'family') { + $line .= 'new Family({ ' . $value->toJavaScript() . ' })'; + } elseif ($key == 'using') { + $line .= 'new Using({ ' . $value->toJavaScript() . ' })'; + } else { + switch (gettype($value)) { + case 'boolean': + $line .= $value ? 'true' : 'false'; + break; + case 'string': + $line .= '"' . addslashes($value) . '"'; + break; + case 'integer': + $line .= $value; + break; + } + } + + $lines[] = $line; + } + } + + return implode($lines, ", "); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Primitive/NameVersion.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Primitive/NameVersion.php new file mode 100644 index 0000000..832cee0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Primitive/NameVersion.php @@ -0,0 +1,121 @@ +<?php + +namespace WhichBrowser\Model\Primitive; + +use WhichBrowser\Model\Version; + +/** + * @internal + */ + +class NameVersion extends Base +{ + /** + * @var string $name The name + * @var string $alias An alternative name that is used for readable strings + * @var \WhichBrowser\Model\Version $version Version information + */ + public $name; + public $alias; + public $version; + + + /** + * Set the properties to the default values + * + * @param array|null $properties An optional array of properties to set after setting it to the default values + * + * @internal + */ + + public function reset($properties = null) + { + unset($this->name); + unset($this->alias); + unset($this->version); + + if (is_array($properties)) { + $this->set($properties); + } + } + + + /** + * Identify the version based on a pattern + * + * @param string $pattern The regular expression that defines the group that matches the version string + * @param string $subject The string the regular expression is matched with + * @param array|null $defaults An optional array of properties to set together with the value + * + * @return string + */ + + public function identifyVersion($pattern, $subject, $defaults = []) + { + if (preg_match($pattern, $subject, $match)) { + $version = $match[1]; + + if (isset($defaults['type'])) { + switch ($defaults['type']) { + case 'underscore': + $version = str_replace('_', '.', $version); + break; + case 'legacy': + $version = preg_replace("/([0-9])([0-9])/", '$1.$2', $version); + break; + } + } + + + $this->version = new Version(array_merge($defaults, [ 'value' => $version ])); + } + } + + + /** + * Get the name in a human readable format + * + * @return string + */ + + public function getName() + { + return !empty($this->alias) ? $this->alias : (!empty($this->name) ? $this->name : ''); + } + + + /** + * Get the version in a human readable format + * + * @return string + */ + + public function getVersion() + { + return !empty($this->version) ? $this->version->toString() : ''; + } + + + /** + * Is a name detected? + * + * @return boolean + */ + + public function isDetected() + { + return !empty($this->name); + } + + + /** + * Get the name and version in a human readable format + * + * @return string + */ + + public function toString() + { + return trim($this->getName() . ' ' . (!empty($this->version) && !$this->version->hidden ? $this->getVersion() : '')); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Using.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Using.php new file mode 100644 index 0000000..aae6469 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Using.php @@ -0,0 +1,35 @@ +<?php + +namespace WhichBrowser\Model; + +use WhichBrowser\Model\Primitive\NameVersion; + +class Using extends NameVersion +{ + /** + * Get an array of all defined properties + * + * @internal + * + * @return array + */ + + public function toArray() + { + $result = []; + + if (!empty($this->name) && empty($this->version)) { + return $this->name; + } + + if (!empty($this->name)) { + $result['name'] = $this->name; + } + + if (!empty($this->version)) { + $result['version'] = $this->version->toArray(); + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Version.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Version.php new file mode 100644 index 0000000..175edfe --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Model/Version.php @@ -0,0 +1,301 @@ +<?php + +namespace WhichBrowser\Model; + +use WhichBrowser\Model\Primitive\Base; + +class Version extends Base +{ + /** @var string|null */ + public $value = null; + + /** @var boolean */ + public $hidden = false; + + /** @var string */ + public $nickname; + + /** @var string */ + public $alias; + + /** @var int */ + public $details; + + /** @var boolean */ + public $builds; + + + + /** + * Determine if the version is lower, equal or higher than the specified value + * + * @param string The operator, must be <, <=, =, >= or > + * @param mixed The value, can be an integer, float or string with a version number + * + * @return boolean + */ + + public function is() + { + $valid = false; + + $arguments = func_get_args(); + if (count($arguments)) { + $operator = '='; + $compare = null; + + if (count($arguments) == 1) { + $compare = $arguments[0]; + } + + if (count($arguments) >= 2) { + $operator = $arguments[0]; + $compare = $arguments[1]; + } + + if (!is_null($compare)) { + $min = min(substr_count($this->value, '.'), substr_count($compare, '.')) + 1; + + $v1 = $this->toValue($this->value, $min); + $v2 = $this->toValue($compare, $min); + + switch ($operator) { + case '<': + $valid = $v1 < $v2; + break; + case '<=': + $valid = $v1 <= $v2; + break; + case '=': + $valid = $v1 == $v2; + break; + case '>': + $valid = $v1 > $v2; + break; + case '>=': + $valid = $v1 >= $v2; + break; + } + } + } + + return $valid; + } + + + /** + * Return an object with each part of the version number + * + * @return object + */ + + public function getParts() + { + $parts = explode('.', $this->value); + + return (object) [ + 'major' => !empty($parts[0]) ? intval($parts[0]) : 0, + 'minor' => !empty($parts[1]) ? intval($parts[1]) : 0, + 'patch' => !empty($parts[2]) ? intval($parts[2]) : 0, + ]; + } + + + /** + * Return the major version as an integer + * + * @return integer + */ + + public function getMajor() + { + return $this->getParts()->major; + } + + + /** + * Return the minor version as an integer + * + * @return integer + */ + + public function getMinor() + { + return $this->getParts()->minor; + } + + + /** + * Return the patch number as an integer + * + * @return integer + */ + + public function getPatch() + { + return $this->getParts()->patch; + } + + + /** + * Convert a version string seperated by dots into a float that can be compared + * + * @internal + * + * @param string Version string, with elements seperated by a dot + * @param int The maximum precision + * + * @return float + */ + + private function toValue($value = null, $count = null) + { + if (is_null($value)) { + $value = $this->value; + } + + $parts = explode('.', $value); + if (!is_null($count)) { + $parts = array_slice($parts, 0, $count); + } + + $result = $parts[0]; + + if (count($parts) > 1) { + $result .= '.'; + + $count = count($parts); + for ($p = 1; $p < $count; $p++) { + $result .= substr('0000' . $parts[$p], -4); + } + } + + return floatval($result); + } + + + /** + * Return the version as a float + * + * @return float + */ + + public function toFloat() + { + return floatval($this->value); + } + + + /** + * Return the version as an integer + * + * @return int + */ + + public function toNumber() + { + return intval($this->value); + } + + + /** + * Return the version as a human readable string + * + * @return string + */ + + public function toString() + { + if (!empty($this->alias)) { + return $this->alias; + } + + $version = ''; + + if (!empty($this->nickname)) { + $version .= $this->nickname . ' '; + } + + if (!empty($this->value)) { + if (preg_match("/([0-9]+)(?:\.([0-9]+))?(?:\.([0-9]+))?(?:\.([0-9]+))?(?:([ab])([0-9]+))?/", $this->value, $match)) { + $v = [ $match[1] ]; + + if (array_key_exists(2, $match) && strlen($match[2])) { + $v[] = $match[2]; + } + + if (array_key_exists(3, $match) && strlen($match[3])) { + $v[] = $match[3]; + } + + if (array_key_exists(4, $match) && strlen($match[4])) { + $v[] = $match[4]; + } + + if (!empty($this->details)) { + if ($this->details < 0) { + array_splice($v, $this->details, 0 - $this->details); + } + + if ($this->details > 0) { + array_splice($v, $this->details, count($v) - $this->details); + } + } + + if (isset($this->builds) && !$this->builds) { + $count = count($v); + for ($i = 0; $i < $count; $i++) { + if ($v[$i] > 999) { + array_splice($v, $i, 1); + } + } + } + + $version .= implode($v, '.'); + + if (array_key_exists(5, $match) && strlen($match[5])) { + $version .= $match[5] . (!empty($match[6]) ? $match[6] : ''); + } + } + } + + return $version; + } + + + /** + * Get an array of all defined properties + * + * @internal + * + * @return array + */ + + public function toArray() + { + $result = []; + + if (!empty($this->value)) { + if (!empty($this->details)) { + $parts = explode('.', $this->value); + $result['value'] = join('.', array_slice($parts, 0, $this->details)); + } else { + $result['value'] = $this->value; + } + } + + if (!empty($this->alias)) { + $result['alias'] = $this->alias; + } + + if (!empty($this->nickname)) { + $result['nickname'] = $this->nickname; + } + + if (isset($result['value']) && !isset($result['alias']) && !isset($result['nickname'])) { + return $result['value']; + } + + return $result; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Parser.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Parser.php new file mode 100644 index 0000000..b54c415 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/src/Parser.php @@ -0,0 +1,58 @@ +<?php + +namespace WhichBrowser; + +use WhichBrowser\Model\Main; + +class Parser extends Main +{ + use Cache; + + /** + * Create a new object that contains all the detected information + * + * @param array|string $headers Optional, an array with all of the headers or a string with just the User-Agent header + * @param array $options Optional, an array with configuration options + */ + + public function __construct($headers = null, $options = []) + { + parent::__construct(); + + if (!is_null($headers)) { + $this->analyse($headers, $options); + } + } + + /** + * Analyse the provided headers or User-Agent string + * + * @param array|string $headers An array with all of the headers or a string with just the User-Agent header + */ + + public function analyse($headers, $options = []) + { + $o = $options; + + if (is_string($headers)) { + $h = [ 'User-Agent' => $headers ]; + } else { + if (isset($headers['headers'])) { + $h = $headers['headers']; + + unset($headers['headers']); + $o = array_merge($headers, $options); + } else { + $h = $headers; + } + } + + if ($this->analyseWithCache($h, $o)) { + return; + } + + $analyser = new Analyser($h, $o); + $analyser->setdata($this); + $analyser->analyse(); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/amstrad.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/amstrad.yaml new file mode 100644 index 0000000..8af3b57 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/amstrad.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: MobileExplorer/3.00 (Mozilla/1.22; compatible; MMEF300; Amstrad; Gamma)' + readable: 'Microsoft Mobile Explorer 3.0 on an Amstrad E-m@iler Plus' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '3.0', type: browser }, device: { type: desktop, manufacturer: Amstrad, model: 'E-m@iler Plus' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/familyhub.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/familyhub.yaml new file mode 100644 index 0000000..beb62ad --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/familyhub.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.3; FamilyHub) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.3 Mobile Safari/537.3' + readable: 'Samsung Browser on a Samsung Family Hub running Tizen 2.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.3' }, device: { type: appliance, manufacturer: Samsung, model: 'Family Hub' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/i-opener.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/i-opener.yaml new file mode 100644 index 0000000..a8038df --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/i-opener.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/3.x (I-Opener 1.1; Netpliance)' + readable: 'a Netpliance i-Opener' + result: { device: { type: desktop, manufacturer: Netpliance, model: i-Opener } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/weblight.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/weblight.yaml new file mode 100644 index 0000000..56ef135 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/appliance/weblight.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/3.0 KOMATSU (AveFront/2.6 WebLight) WL/3.0 V2.45ohi M=11E2A2499945' + readable: 'NetFront 2.6 on a KOMATSU WebLight' + result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront }, device: { type: desktop, manufacturer: KOMATSU, model: WebLight } } +- + headers: 'User-Agent: Mozilla/3.0 KOMATSU WL/3.0' + readable: 'Netscape Navigator 3.0 on a KOMATSU WebLight' + result: { browser: { name: 'Netscape Navigator', version: '3.0', type: browser }, device: { type: desktop, manufacturer: KOMATSU, model: WebLight } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/disabled.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/disabled.yaml new file mode 100644 index 0000000..8c2a395 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/disabled.yaml @@ -0,0 +1,25 @@ +- + detectBots: false + headers: 'User-Agent: (Windows NT 10.0; Googlebot Googlebot-Image/1.0 msnbot-media/1.1 facebookexternalhit/1.1 Trident/7.0) Maxthon/4.4.5.3000 Firefox/38' + result: { browser: { name: "Maxthon", family: { name: "Firefox", version: "38" }, version: "4.4.5", type: "browser" }, engine: { name: "Trident", version: "7.0" }, os: { name: "Windows", version: { value: "10.0", alias: "10" } }, device: { type: "desktop" } } + readable: 'Maxthon 4.4.5 on Windows 10' +- + detectBots: false + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) MsnBot-Media /1.0b' + result: { engine: { name: "Webkit", version: "534" }, os: { name: "Windows", version: { value: "6.1", alias: "7" } }, device: { type: "desktop" } } + readable: 'an unknown browser based on Webkit 534 running on Windows 7' +- + detectBots: false + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: "Safari", version: "6.0", type: "browser" }, engine: { name: "Webkit", version: "536.26" }, os: { name: "iOS", version: "6.0" }, device: { type: "mobile", subtype: "smart", manufacturer: "Apple", model: "iPhone" }} + readable: 'Safari on an Apple iPhone running iOS 6.0' +- + detectBots: false + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)' + result: { browser: { name: "Safari", version: "7.0", type: "browser" }, engine: { name: "Webkit", version: "537.51.1" }, os: { name: "iOS", version: "7.0" }, device: { type: "mobile", subtype: "smart", manufacturer: "Apple", model: "iPhone" }} + readable: 'Safari on an Apple iPhone running iOS 7.0' +- + detectBots: false + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Page Speed Insights) Chrome/27.0.1453 Safari/537.36' + result: { browser: { name: "Chrome", version: "27", type: "browser" }, engine: { name: "Blink" }, os: { name: "Linux" }, device: { type: "desktop" }, camouflage: true } + readable: 'an unknown browser that imitates Chrome 27 on Linux' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/false-positive.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/false-positive.yaml new file mode 100644 index 0000000..5e74b3f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/false-positive.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; tr-tr; S308 Build/CUBOT) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/71.0.0.17.73;]' + readable: 'Facebook on a Cubot S308 running Android 4.2.2' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Cubot, model: S308 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; de-de; CUBOT S108 Build/CUBOT) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [FB_IAB/FB4A;FBAV/55.0.0.18.66;]' + readable: 'Facebook on a Cubot S108 running Android 4.2.2' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Cubot, model: S108 } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/generic.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/generic.yaml new file mode 100644 index 0000000..c3774ec --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/bots/generic.yaml @@ -0,0 +1,508 @@ +- + headers: 'User-Agent: (Windows NT 10.0; Googlebot Googlebot-Image/1.0 msnbot-media/1.1 facebookexternalhit/1.1 Trident/7.0) Maxthon/4.0' + result: { browser: { name: Bing, version: '1.1' }, device: { type: bot } } + readable: 'Bing 1.1' +- + headers: 'User-Agent: (Windows NT 10.0; Googlebot Googlebot-Image/1.0 msnbot-media/1.1 facebookexternalhit/1.1 Trident/7.0) Maxthon/4.4.5.3000 Firefox/38' + result: { browser: { name: Bing, version: '1.1' }, device: { type: bot } } + readable: 'Bing 1.1' +- + headers: 'User-Agent: 360spider-image' + result: { browser: { name: 360spider }, device: { type: bot } } + readable: 360spider +- + headers: 'User-Agent: 5acd734a-1ed3-4a17-ad9d-0b09ae7bc2d2/Nutch-1.7' + result: { browser: { name: 'Apache Nutch', version: '1.7' }, device: { type: bot } } + readable: 'Apache Nutch 1.7' +- + headers: 'User-Agent: ADmantX Platform Semantic Analyzer - ADmantX Inc. - www.admantx.com - support@admantx.com' + result: { browser: { name: ADmantX }, device: { type: bot } } + readable: ADmantX +- + headers: 'User-Agent: Aboundex/0.3 (http://www.aboundex.com/crawler/)' + result: { browser: { name: Aboundex, version: '0.3' }, device: { type: bot } } + readable: 'Aboundex 0.3' +- + headers: 'User-Agent: Ad Muncher v4.93.33707/4957' + result: { browser: { name: 'Ad Muncher', version: 4.93.33707 }, device: { type: bot } } + readable: 'Ad Muncher 4.93.33707' +- + headers: 'User-Agent: AddThis.com robot tech.support@clearspring.com' + result: { browser: { name: AddThis.com }, device: { type: bot } } + readable: AddThis.com +- + headers: 'User-Agent: AdsBot-Google ( http://www.google.com/adsbot.html)' + result: { browser: { name: 'Google Ads Bot' }, device: { type: bot } } + readable: 'Google Ads Bot' +- + headers: 'User-Agent: AdsBot-Google (+http://www.google.com/adsbot.html)' + result: { browser: { name: 'Google Ads Bot' }, device: { type: bot } } + readable: 'Google Ads Bot' +- + headers: 'User-Agent: AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari' + result: { browser: { name: 'Google Ads Bot' }, device: { type: bot } } + readable: 'Google Ads Bot' +- + headers: 'User-Agent: AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36' + result: { browser: { name: 'Google Ads Bot' }, device: { type: bot } } + readable: 'Google Ads Bot' +- + headers: 'User-Agent: AhrefsBot.Feeds v0.1; http://ahrefs.com/' + result: { browser: { name: AhrefsBot, version: '0.1' }, device: { type: bot } } + readable: 'AhrefsBot 0.1' +- + headers: 'User-Agent: AmorankSpider/0.1; +http://amorank.com/webcrawler.html' + result: { browser: { name: 'Amorank Spider', version: '0.1' }, device: { type: bot } } + readable: 'Amorank Spider 0.1' +- + headers: 'User-Agent: AppEngine-Google; (+http://code.google.com/appengine; appid: xbmacx)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: ArchiveTeam ArchiveBot/20140807.01 (wpull 0.37a1) and not Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36' + result: { browser: { name: ArchiveBot }, device: { type: bot } } + readable: ArchiveBot +- + headers: 'User-Agent: Backlink-Ceck.de (+http://www.backlink-check.de/bot.html)' + result: { browser: { name: Backlink-Check }, device: { type: bot } } + readable: Backlink-Check +- + headers: 'User-Agent: BacklinkCrawler (http://www.backlinktest.com/crawler.html)' + result: { browser: { name: BacklinkCrawler }, device: { type: bot } } + readable: BacklinkCrawler +- + headers: 'User-Agent: Baiduspider ( http://www.baidu.com/search/spider.htm)' + result: { browser: { name: Baiduspider }, device: { type: bot } } + readable: Baiduspider +- + headers: 'User-Agent: Baiduspider+(+http://www.baidu.com/search/spider_jp.html)' + result: { browser: { name: Baiduspider }, device: { type: bot } } + readable: Baiduspider +- + headers: 'User-Agent: Bloglovin/1.0 (http://www.bloglovin.com; 1 subscribers)' + result: { browser: { name: Bloglovin, version: '1.0' }, device: { type: bot } } + readable: 'Bloglovin 1.0' +- + headers: 'User-Agent: BlogramCrawler/1.0.1(+http://blogram.jp/)' + result: { browser: { name: Blogram, version: 1.0.1 }, device: { type: bot } } + readable: 'Blogram 1.0.1' +- + headers: 'User-Agent: Browsershots' + result: { browser: { name: Browsershots }, device: { type: bot } } + readable: Browsershots +- + headers: 'User-Agent: CCBot/2.0 (http://commoncrawl.org/faq/)' + result: { browser: { name: CommonCrawl, version: '2.0' }, device: { type: bot } } + readable: 'CommonCrawl 2.0' +- + headers: 'User-Agent: Cliqzbot/0.1 (+http://cliqz.com/company/cliqzbot)' + result: { browser: { name: Cliqzbot, version: '0.1' }, device: { type: bot } } + readable: 'Cliqzbot 0.1' +- + headers: 'User-Agent: CommaFeed/1.0 (http://www.commafeed.com)' + result: { browser: { name: CommaFeed, version: '1.0' }, device: { type: bot } } + readable: 'CommaFeed 1.0' +- + headers: 'User-Agent: CrawlerProcess (http://www.PowerMapper.com) /5.5.678.0' + result: { browser: { name: PowerMapper, version: 5.5.678.0 }, device: { type: bot } } + readable: 'PowerMapper 5.5.678.0' +- + headers: 'User-Agent: Curious George - www.analyticsseo.com/crawler' + result: { browser: { name: 'Analytics SEO' }, device: { type: bot } } + readable: 'Analytics SEO' +- + headers: 'User-Agent: Data-Hotel-Watchdog/1.1' + result: { browser: { name: 'Data Hotel Watchdog', version: '1.1' }, device: { type: bot } } + readable: 'Data Hotel Watchdog 1.1' +- + headers: 'User-Agent: DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: 'Googlebot Mobile', version: '2.1' }, device: { type: bot } } + readable: 'Googlebot Mobile 2.1' +- + headers: 'User-Agent: DoCoMo/2.0 P900i(c100;TB;W24H11) (compatible; ichiro/mobile goo; +http://help.goo.ne.jp/help/article/1142/)' + result: { browser: { name: Goo }, device: { type: bot } } + readable: Goo +- + headers: 'User-Agent: DoCoMo/2.0 SH905i(c100;TB;W24H16) (compatible; Mediapartners-Google/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: 'Google Mediapartners', version: '2.1' }, device: { type: bot } } + readable: 'Google Mediapartners 2.1' +- + headers: 'User-Agent: ExactSeek Crawler (nutch 1.4)/Nutch-1.4 (ExactSeek Crawler; http://www.exactseek.com)' + result: { browser: { name: ExactSeek }, device: { type: bot } } + readable: ExactSeek +- + headers: 'User-Agent: FAST Enterprise Crawler/5.3.4 (crawler@fast.no)' + result: { browser: { name: 'FAST Enterprise Crawler', version: 5.3.4 }, device: { type: bot } } + readable: 'FAST Enterprise Crawler 5.3.4' +- + headers: 'User-Agent: FAST-WebCrawler/3.8 (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)' + result: { browser: { name: 'FAST Web Crawler', version: '3.8' }, device: { type: bot } } + readable: 'FAST Web Crawler 3.8' +- + headers: 'User-Agent: FTRF: Friendly robot/1.3' + result: { browser: { name: 'FTRF: Friendly Robot', version: '1.3' }, device: { type: bot } } + readable: 'FTRF: Friendly Robot 1.3' +- + headers: 'User-Agent: FacebookSecurity/2.1 ([www.FacebookSecurity.com])' + result: { browser: { name: Facebook, version: '2.1' }, device: { type: bot } } + readable: 'Facebook 2.1' +- + headers: 'User-Agent: Fastladder FeedFetcher/0.01 (http://fastladder.com/; 27 subscribers)' + result: { browser: { name: Fastladder, version: '0.01' }, device: { type: bot } } + readable: 'Fastladder 0.01' +- + headers: 'User-Agent: Feed Wrangler/1.0 (3 subscribers; feed-id=248559; http://feedwrangler.net; Allow like Gecko)' + result: { browser: { name: FeedWrangler, version: '1.0' }, device: { type: bot } } + readable: 'FeedWrangler 1.0' +- + headers: 'User-Agent: FeedBurner/1.0 (http://www.FeedBurner.com)' + result: { browser: { name: 'Google FeedBurner', version: '1.0' }, device: { type: bot } } + readable: 'Google FeedBurner 1.0' +- + headers: 'User-Agent: FeedFetcher-Google; ( http://www.google.com/feedfetcher.html)' + result: { browser: { name: 'Google Feedfetcher' }, device: { type: bot } } + readable: 'Google Feedfetcher' +- + headers: 'User-Agent: Feedbin - 9 subscribers' + result: { browser: { name: Feedbin }, device: { type: bot } } + readable: Feedbin +- + headers: 'User-Agent: Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 19 subscribers; feed-id=13965549748850348809)' + result: { browser: { name: 'Google Feedfetcher' }, device: { type: bot } } + readable: 'Google Feedfetcher' +- + headers: 'User-Agent: FeedlyApp/1.0 (http://www.feedly.com)' + result: { browser: { name: Feedly, version: '1.0' }, device: { type: bot } } + readable: 'Feedly 1.0' +- + headers: 'User-Agent: FeedlyBot/1.0 (http://feedly.com)' + result: { browser: { name: Feedly, version: '1.0' }, device: { type: bot } } + readable: 'Feedly 1.0' +- + headers: 'User-Agent: Feedspot http://www.feedspot.com' + result: { browser: { name: Feedspot }, device: { type: bot } } + readable: Feedspot +- + headers: 'User-Agent: Fever/1.38 (Feed Parser; http://feedafever.com; Allow like Gecko)' + result: { browser: { name: Fever, version: '1.38' }, device: { type: bot } } + readable: 'Fever 1.38' +- + headers: 'User-Agent: Flamingo_SearchEngine (+http://www.flamingosearch.com/bot)' + result: { browser: { name: 'Flamingo Search' }, device: { type: bot } } + readable: 'Flamingo Search' +- + headers: 'User-Agent: Google-Sitemaps/1.0' + result: { browser: { name: 'Google Sitemaps', version: '1.0' }, device: { type: bot } } + readable: 'Google Sitemaps 1.0' +- + headers: 'User-Agent: GoogleProducer; (+http://goo.gl/7y4SX)' + result: { browser: { name: 'Google Play Newsstand' }, device: { type: bot } } + readable: 'Google Play Newsstand' +- + headers: 'User-Agent: Googlebot (gocrawl v0.4)' + result: { browser: { name: Gocrawl, version: '0.4' }, device: { type: bot } } + readable: 'Gocrawl 0.4' +- + headers: 'User-Agent: Googlebot-Image/1.0' + result: { browser: { name: 'Googlebot Image', version: '1.0' }, device: { type: bot } } + readable: 'Googlebot Image 1.0' +- + headers: 'User-Agent: Googlebot-News' + result: { browser: { name: 'Google News' }, device: { type: bot } } + readable: 'Google News' +- + headers: 'User-Agent: Googlebot-Video/1.0' + result: { browser: { name: 'Googlebot Video', version: '1.0' }, device: { type: bot } } + readable: 'Googlebot Video 1.0' +- + headers: 'User-Agent: Googlebot/2.1 ( http://www.googlebot.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Googlebot/2.1(+http://www.googlebot.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mediapartners-Google' + result: { browser: { name: 'Google Mediapartners' }, device: { type: bot } } + readable: 'Google Mediapartners' +- + headers: 'User-Agent: MetaFeedly/1.0 (http://www.feedly.com)' + result: { browser: { name: Feedly, version: '1.0' }, device: { type: bot } } + readable: 'Feedly 1.0' +- + headers: 'User-Agent: Mozilla/2.0 (compatible; Ask Jeeves/Teoma)' + result: { browser: { name: 'Ask Jeeves' }, device: { type: bot } } + readable: 'Ask Jeeves' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)' + result: { browser: { name: 'Google Wireless Transcoder' }, device: { type: bot } } + readable: 'Google Wireless Transcoder' +- + headers: 'User-Agent: Mozilla/5.0 (Android; Mobile; rv:29.0) Gecko/29.0 Firefox/29.0 AppEngine-Google; (+http://code.google.com/appengine; appid: s~oldecreator)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; generic) AppleWebKit/537.4 (KHTML, like Gecko; Google Web Preview) Version/4.0 Mobile Safari/537.4' + result: { browser: { name: 'Google Web Preview' }, device: { type: bot } } + readable: 'Google Web Preview' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.11067 BingPreview/1.0b' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1; 360Spider' + result: { browser: { name: 360spider }, device: { type: bot } } + readable: 360spider +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1626.1 Safari/537.36 AppEngine-Google; (+http://code.google.com/appengine; appid: s~hex-plus)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko AppEngine-Google; (+http://code.google.com/appengine; appid: s~oowsxs)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/538.14 (KHTML, like Gecko) BingPreview/1.0b' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 AppEngine-Google; (+http://code.google.com/appengine; appid: s~chengzhoukun)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Nokia; Lumia 520) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0 BingPreview/1.0b' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Page Speed Insights) Chrome/27.0.1453 Safari/537.36' + result: { browser: { name: 'Google Page Speed' }, device: { type: bot } } + readable: 'Google Page Speed' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Page Speed Insights) Chrome/27.0.1453 Safari/537.36 GoogleBot/2.1' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview) Chrome/27.0.1453 Safari/537.36' + result: { browser: { name: 'Google Web Preview' }, device: { type: bot } } + readable: 'Google Web Preview' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.2.18) Gecko/20110622 HeartRails_Capture/1.0.5 (+http://capture.heartrails.com/) Namoroka/3.6.18' + result: { browser: { name: 'HeartRails Capture', version: 1.0.5 }, device: { type: bot } } + readable: 'HeartRails Capture 1.0.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/webcrawler.html) Gecko/2008032620' + result: { browser: { name: 80legs, version: '0.83' }, device: { type: bot } } + readable: '80legs 0.83' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) ASProxy/5.5b5' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) BingPreview/1.0b' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; WOW64; Trident/6.0; BingPreview/1.0b)' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) CrawlerProcess (http://www.PowerMapper.com) /5.10.736.0' + result: { browser: { name: PowerMapper, version: 5.10.736.0 }, device: { type: bot } } + readable: 'PowerMapper 5.10.736.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider' + result: { browser: { name: 360spider }, device: { type: bot } } + readable: 360spider +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)' + result: { browser: { name: 'Yahoo! Slurp' }, device: { type: bot } } + readable: 'Yahoo! Slurp' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)' + result: { browser: { name: 'Yahoo! Slurp', version: '3.0' }, device: { type: bot } } + readable: 'Yahoo! Slurp 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp) NOT Firefox/3.5' + result: { browser: { name: 'Yahoo! Slurp', version: '3.0' }, device: { type: bot } } + readable: 'Yahoo! Slurp 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; bingbot/2.0 +http://www.bing.com/bingbot.htm)' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; bingbot/2.0; )"' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; bingbot/2.1; +http://www.bing.com/bingbot.htm)' + result: { browser: { name: Bing, version: '2.1' }, device: { type: bot } } + readable: 'Bing 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; heritrix/1.14.4 +http://netarkivet.dk/webcrawler/)' + result: { browser: { name: CiteSeerX, version: 1.14.4 }, device: { type: bot } } + readable: 'CiteSeerX 1.14.4' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; heritrix/3.1.2-SNAPSHOT-20131029-0036 +http://archive.org/details/archive.org_bot)' + result: { browser: { name: Archive.org }, device: { type: bot } } + readable: Archive.org +- + headers: 'User-Agent: Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.13' + result: { browser: { name: 'Google Web Preview' }, device: { type: bot } } + readable: 'Google Web Preview' +- + headers: 'User-Agent: Mozilla/5.0 (en-us) AppleWebKit/534.14 (KHTML, like Gecko; Google Wireless Transcoder) Chrome/9.0.597 Safari/534.14' + result: { browser: { name: 'Google Wireless Transcoder' }, device: { type: bot } } + readable: 'Google Wireless Transcoder' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview Analytics) Chrome/27.0.1453 Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0 AppleWebKit/537.4 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Safari/537.4' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)' + result: { browser: { name: Baiduspider, version: '2.0' }, device: { type: bot } } + readable: 'Baiduspider 2.0' +- + headers: 'User-Agent: Opera/30.0.1835.59 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/29.16 AppleWebKit/599.0+ (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 FAST-WebCrawler/3.8' + result: { browser: { name: 'FAST Web Crawler', version: '3.8' }, device: { type: bot } } + readable: 'FAST Web Crawler 3.8' +- + headers: 'User-Agent: Scrapy/0.24.6 (+http://scrapy.org)' + result: { browser: { name: Scrapy, version: 0.24.6 }, device: { type: bot } } + readable: 'Scrapy 0.24.6' +- + headers: 'User-Agent: Wget/1.11.4' + result: { browser: { name: Wget, version: 1.11.4 }, device: { type: bot } } + readable: 'Wget 1.11.4' +- + headers: 'User-Agent: Wget/1.15 (linux-gnu)' + result: { browser: { name: Wget, version: '1.15' }, device: { type: bot } } + readable: 'Wget 1.15' +- + headers: 'User-Agent: Wget/1.16.1 (darwin14.0.0)' + result: { browser: { name: Wget, version: 1.16.1 }, device: { type: bot } } + readable: 'Wget 1.16.1' +- + headers: 'User-Agent: Wget/1.6' + result: { browser: { name: Wget, version: '1.6' }, device: { type: bot } } + readable: 'Wget 1.6' +- + headers: 'User-Agent: facebookexternalhit/1.1' + result: { browser: { name: Facebook, version: '1.1' }, device: { type: bot } } + readable: 'Facebook 1.1' +- + headers: 'User-Agent: facebookexternalhit/1.1 (+http(s)://www.facebook.com/externalhit_uatext.php)' + result: { browser: { name: Facebook, version: '1.1' }, device: { type: bot } } + readable: 'Facebook 1.1' +- + headers: 'User-Agent: facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)' + result: { browser: { name: Facebook, version: '1.1' }, device: { type: bot } } + readable: 'Facebook 1.1' +- + headers: 'User-Agent: facebookscraper/1.0( http://www.facebook.com/sharescraper_help.php)' + result: { browser: { name: Facebook, version: '1.0' }, device: { type: bot } } + readable: 'Facebook 1.0' +- + headers: 'User-Agent: grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)' + result: { browser: { name: Grub, version: 1.5.3 }, device: { type: bot } } + readable: 'Grub 1.5.3' +- + headers: 'User-Agent: mapion-news-bot/1.0 (http://www.mapion.co.jp/news/)' + result: { browser: { name: 'Mapian News Bot', version: '1.0' }, device: { type: bot } } + readable: 'Mapian News Bot 1.0' +- + headers: 'User-Agent: msnbot-NewsBlogs/2.0b (+http://search.msn.com/msnbot.htm)' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: msnbot/1.1 ( http://search.msn.com/msnbot.htm)' + result: { browser: { name: Bing, version: '1.1' }, device: { type: bot } } + readable: 'Bing 1.1' +- + headers: 'User-Agent: msnbot/2.0b ( http://search.msn.com/msnbot.htm)' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: Mozilla/3.0 (compatible; Indy Library)' + result: { browser: { name: 'Borland Delphi' }, device: { type: bot } } + readable: 'Borland Delphi' +- + headers: 'User-Agent: 1NET/Crawler (compatible; 1NET; robot; http://www.1NET.gr)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: abot/0.1 (abot; http://www.abot.com; abot@abot.com)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: Amfibibot/0.07 (Amfibi Robot; http://www.amfibi.com; agent@amfibi.com)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: envolk/1.7 (+http://www.envolk.com/envolkspiderinfo.html)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: EnaBot/1.2 (http://www.enaball.com/crawler.html)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: EuripBot/0.5 (+http://www.eurip.com) PreCheck' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: FaviconArchiver/1.0 (+http://moblur.org/workshop/favicon_archive/)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: Feedfetcher-feedraider; (+http://feedraider.com/help/feedfetcher.html; X subscribers; Allow like Gecko)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; GomezAgent 2.0; Windows NT)' + result: { browser: { name: GomezAgent, version: '2.0' }, device: { type: bot } } + readable: 'GomezAgent 2.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M700; OpVer 19.123.2.733) OrangeBot-Mobile 2008.0 (mobilesearch.support@orange-ftgroup.com)' + result: { browser: { name: OrangeBot }, device: { type: bot } } + readable: OrangeBot +- + headers: 'User-Agent: Mozilla/5.0 (compatible; XML Sitemaps Generator; http://www.xml-sitemaps.com) Gecko XML-Sitemaps/1.0' + result: { browser: { name: 'XML Sitemaps Generator', version: '1.0' }, device: { type: bot } } + readable: 'XML Sitemaps Generator 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) MsnBot-Media /1.0b' + result: { browser: { name: Bing, version: '1.0' }, device: { type: bot } } + readable: 'Bing 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server;) Daumoa 4.0' + result: { browser: { name: Daumoa, version: '4.0' }, device: { type: bot } } + readable: 'Daumoa 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 - James BOT - WebCrawler http://cognitiveseo.com/bot.html' + result: { browser: { name: JamesBOT }, device: { type: bot } } + readable: JamesBOT +- + headers: 'User-Agent: Pinterest/0.1' + readable: 'Pinterest 0.1' + result: { browser: { name: Pinterest, version: '0.1' }, device: { type: bot } } +- + headers: 'User-Agent: Pinterest/0.2 (+http://www.pinterest.com/)' + readable: 'Pinterest 0.2' + result: { browser: { name: Pinterest, version: '0.2' }, device: { type: bot } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/camera/os-android.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/camera/os-android.yaml new file mode 100644 index 0000000..8f17e85 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/camera/os-android.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; COOLPIX S800c Build/CP01_WW) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.3 }, device: { type: camera, manufacturer: Nikon, model: 'Coolpix S800c' } } + readable: 'Android Browser on a Nikon Coolpix S800c running Android 2.3.3' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/camera/os-tizen.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/camera/os-tizen.yaml new file mode 100644 index 0000000..8d9c41f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/camera/os-tizen.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; ko-kr; SAMSUNG; NX30) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { family: { name: Chrome, version: 18 } }, engine: { name: Webkit, version: '535.19' }, os: { name: Tizen }, device: { type: camera, manufacturer: Samsung, model: NX30 } } + readable: 'a Samsung NX30 running Tizen' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Tizen 1.0; xx; Samsung NX300) AppleWebKit/534.16 (KHTML, like Gecko) Version/1.0 Mobile Android compatible' + result: { engine: { name: Webkit, version: '534.16' }, os: { name: Tizen, version: '1.0' }, device: { type: camera, manufacturer: Samsung, model: NX300 } } + readable: 'a Samsung NX300 running Tizen 1.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/car/tesla.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/car/tesla.yaml new file mode 100644 index 0000000..c34c79d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/car/tesla.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/534.34 (KHTML, like Gecko) QtCarBrowser Safari/534.34' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: car, manufacturer: Tesla, model: 'Model S' } } + readable: 'a Tesla Model S' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) QtCarBrowser Safari/533.3' + result: { engine: { name: Webkit, version: '533.3' }, device: { type: car, manufacturer: Tesla, model: 'Model S' } } + readable: 'a Tesla Model S' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/car/volvo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/car/volvo.yaml new file mode 100644 index 0000000..dbadcd4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/car/volvo.yaml @@ -0,0 +1,9 @@ +- + headers: 'User-Agent: Mozilla/5.0 (VCC; 1.0; like Gecko) NetFront/4.2' + readable: 'NetFront 4.2' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, device: { type: car } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.02 Bork-edition [en]' + useragent: 'Mozilla/5.0 (VCC; 1.0; like Gecko) NetFront/4.2' + readable: 'Opera 7.02 on Windows 2000' + result: { browser: { name: Opera, version: '7.02', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/app-editor.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/app-editor.yaml new file mode 100644 index 0000000..dd7d56d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/app-editor.yaml @@ -0,0 +1,28 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Brackets/1.1.0 Chrome/39.0.2171.36 Safari/537.36' + result: { browser: { name: Brackets, family: { name: Chrome, version: 39 }, version: 1.1.0, type: 'app:editor' }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Brackets 1.1.0 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Atom/1.0.19 Chrome/43.0.2357.65 Electron/0.30.7 Safari/537.36' + result: { browser: { name: Atom, using: { name: Electron, version: 0.30.7 }, family: { name: Chrome, version: 43 }, version: 1.0.19, type: 'app:editor' }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Atom 1.0.19 on Linux' +- + headers: 'User-Agent: Mozilla/3.0 (compatible; GoLive 6.0; Windows 2000)' + result: { browser: { name: 'Adobe GoLive', version: '6.0', type: 'app:editor' }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Adobe GoLive 6.0 on Windows 2000' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.25 (KHTML, like Gecko) iWeb/304' + result: { browser: { name: iWeb, version: '3', type: 'app:editor' }, engine: { name: Webkit, version: 600.1.25 }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iWeb 3 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/4.0 (IBM WebSphere Homepage Builder V12.0/Version 12.0.4.0)' + readable: 'IBM WebSphere Homepage Builder 12.0' + result: { browser: { name: 'IBM WebSphere Homepage Builder', version: '12.0', type: 'app:editor' } } +- + headers: 'User-Agent: Mozilla/4.0 (IBM WebSphere Homepage Builder V7.0/Version 7.0.1.0)' + readable: 'IBM WebSphere Homepage Builder 7.0' + result: { browser: { name: 'IBM WebSphere Homepage Builder', version: '7.0', type: 'app:editor' } } +- + headers: 'User-Agent: Mozilla/4.0 (IBM WebSphere Homepage Builder V10.0/Version 10.0.3.0)' + readable: 'IBM WebSphere Homepage Builder 10.0' + result: { browser: { name: 'IBM WebSphere Homepage Builder', version: '10.0', type: 'app:editor' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/app-mediaplayer.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/app-mediaplayer.yaml new file mode 100644 index 0000000..94d53f2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/app-mediaplayer.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.28) Gecko/20130316 Nightingale/1.12.2 (20140112193149)' + result: { browser: { name: Nightingale, version: 1.12.2, type: 'app:mediaplayer' }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Nightingale 1.12.2 on Linux' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-arachne.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-arachne.yaml new file mode 100644 index 0000000..8d29c15 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-arachne.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: xChaos_Arachne/4.1.71;UE01 (DOS x86;WATTCP/1.05; 640x480,16c; www.arachne.cz)' + result: { browser: { name: Arachne, version: '1.71', type: browser }, device: { type: desktop } } + readable: 'Arachne 1.71' +- + headers: 'User-Agent: xChaos_Arachne/5.1.89;GPL,386+' + result: { browser: { name: Arachne, version: '1.89', type: browser }, device: { type: desktop } } + readable: 'Arachne 1.89' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-brave.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-brave.yaml new file mode 100644 index 0000000..9b60ab2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-brave.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.0.2 Chrome/47.0.2526.73 Electron/0.36.1 Safari/537.36' + result: { browser: { name: Brave, using: { name: Electron, version: 0.36.1 }, family: { name: Chrome, version: 47 }, version: 0.0.2, type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Brave 0.0.2 on OS X El Capitan 10.11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.7.7 Chrome/47.0.2526.73 Electron/0.36.2 Safari/537.36' + result: { browser: { name: Brave, using: { name: Electron, version: 0.36.2 }, family: { name: Chrome, version: 47 }, version: 0.7.7, type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Brave 0.7.7 on OS X El Capitan 10.11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) brave/0.7.7 Chrome/47.0.2526.73 Electron/0.36.2 Safari/537.36' + result: { browser: { name: Brave, using: { name: Electron, version: 0.36.2 }, family: { name: Chrome, version: 47 }, version: 0.7.7, type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Brave 0.7.7 on OS X El Capitan 10.11' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-chrome.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-chrome.yaml new file mode 100644 index 0000000..71e1ad1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-chrome.yaml @@ -0,0 +1,64 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0' + result: { browser: { name: Chrome, version: 4.0.202.0, type: browser }, engine: { name: Webkit, version: '532.0' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Chrome Dev 4.0.202.0 on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4' + result: { browser: { name: Chrome, version: '5', type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Chrome 5 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2' + result: { browser: { name: Chrome, version: '15', type: browser }, engine: { name: Webkit, version: '535.2' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Chrome 15 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13' + result: { browser: { name: Chrome, version: 0.2.149.27, type: browser }, engine: { name: Webkit, version: '525.13' }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Chrome Beta 0.2.149.27 on Windows 2000' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19' + result: { browser: { name: Chrome, version: 0.2.153.0, type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Chrome Dev 0.2.153.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.18 Safari/525.19' + result: { browser: { name: Chrome, version: 0.4.154.18, type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Chrome Beta 0.4.154.18 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.39 Safari/525.19' + result: { browser: { name: Chrome, version: '1', type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Chrome 1 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13' + result: { browser: { name: Chrome, version: 0.2.149.6, type: browser }, engine: { name: Webkit, version: '525.13' }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Chrome Beta 0.2.149.6 on Windows Server 2003' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4' + result: { browser: { name: Chrome, version: '2', type: browser }, engine: { name: Webkit, version: '530.4' }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Chrome 2 on Windows Server 2003' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19' + result: { browser: { name: Chrome, version: '1', type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Chrome 1 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8' + result: { browser: { name: Chrome, version: 2.0.156.1, type: browser }, engine: { name: Webkit, version: '528.8' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Chrome Dev 2.0.156.1 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3' + result: { browser: { name: Chrome, version: 3.0.193.2, type: browser }, engine: { name: Webkit, version: '531.3' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Chrome Dev 3.0.193.2 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19' + result: { browser: { name: Chrome, version: 0.3.154.9, type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Chrome Beta 0.3.154.9 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1025 Safari/532.5' + result: { browser: { name: Chrome, version: '4.1', type: browser }, engine: { name: Webkit, version: '532.5' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Chrome 4.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; it-IT) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.25 Safari/532.5' + result: { browser: { name: Chrome, version: '4', type: browser }, engine: { name: Webkit, version: '532.5' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Chrome 4 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16' + result: { browser: { name: Chrome, version: '10', type: browser }, engine: { name: Webkit, version: '534.16' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Chrome 10 on Linux' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-chromium.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-chromium.yaml new file mode 100644 index 0000000..733cc5c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-chromium.yaml @@ -0,0 +1,52 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.6+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/537.6+' + result: { browser: { name: Chromium, family: { name: Chrome, version: 17 }, version: 17.0.963.56, type: browser }, engine: { name: Webkit, version: '537.6' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Chromium 17.0.963.56 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.6+ (KHTML, like Gecko) Chromium/23.0.1271.95 Chrome/23.0.1271.95 Safari/537.6+' + result: { browser: { name: Chromium, family: { name: Chrome, version: 23 }, version: 23.0.1271.95, type: browser }, engine: { name: Webkit, version: '537.6' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Chromium 23.0.1271.95 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/538.1 (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/538.1' + result: { browser: { name: Chromium, family: { name: Chrome, version: 25 }, version: 25.0.1349.2, type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Chromium 25.0.1349.2 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/535.22+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/535.22+' + result: { browser: { name: Chromium, family: { name: Chrome, version: 17 }, version: 17.0.963.56, type: browser }, engine: { name: Webkit, version: '535.22' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Chromium 17.0.963.56 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.42+ (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/537.42+' + result: { browser: { name: Chromium, family: { name: Chrome, version: 25 }, version: 25.0.1349.2, type: browser }, engine: { name: Webkit, version: '537.42' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Chromium 25.0.1349.2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/33.0.1750.152 Chrome/33.0.1750.152 Safari/537.36' + result: { browser: { name: Chromium, family: { name: Chrome, version: 33 }, version: 33.0.1750.152, type: browser }, engine: { name: Blink }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Chromium 33.0.1750.152 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/11.04 Chromium/11.0.696.68 Chrome/11.0.696.68 Safari/534.24' + result: { browser: { name: Chromium, family: { name: Chrome, version: 11 }, version: 11.0.696.68, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Ubuntu, version: '11.04' }, device: { type: desktop } } + readable: 'Chromium 11.0.696.68 on Ubuntu 11.04' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/29.0.1547.62 Chrome/29.0.1547.62 Safari/537.36' + result: { browser: { name: Chromium, family: { name: Chrome, version: 29 }, version: 29.0.1547.62, type: browser }, engine: { name: Blink }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Chromium 29.0.1547.62 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Fedora/16 (NRCBBXGu8kHISSSeydKmMptKvoa0gMvZ1htgTp2WpNQ=) Chromium/21.0.1180.81 Chrome/21.0.1180.81 Safari/535.2' + result: { browser: { name: Chromium, family: { name: Chrome, version: 21 }, version: 21.0.1180.81, type: browser }, engine: { name: Webkit, version: '535.2' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Chromium 21.0.1180.81 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/45.0.2454.7 Chrome/45.0.2454.7 Safari/537.36' + result: { browser: { name: Chromium, family: { name: Chrome, version: 45 }, version: 45.0.2454.7, type: browser }, engine: { name: Blink }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Chromium 45.0.2454.7 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/537.4' + result: { browser: { name: Chromium, family: { name: Chrome, version: 18 }, version: 18.0.1025.168, type: browser }, engine: { name: Webkit, version: '537.4' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Chromium 18.0.1025.168 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.597.107 Chrome/9.0.597.107 Safari/534.13' + result: { browser: { name: Chromium, family: { name: Chrome, version: 9 }, version: 9.0.597.107, type: browser }, engine: { name: Webkit, version: '534.13' }, os: { name: Ubuntu, version: '10.10' }, device: { type: desktop } } + readable: 'Chromium 9.0.597.107 on Ubuntu 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux mips) Chromium/25.0.1349.2' + result: { browser: { name: Chromium, family: { name: Chrome, version: 25 }, version: 25.0.1349.2, type: browser }, os: { name: Linux }, device: { type: desktop } } + readable: 'Chromium 25.0.1349.2 on Linux' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-edge.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-edge.yaml new file mode 100644 index 0000000..ff01652 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-edge.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10162' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10162' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 12 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10240' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 12 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10525' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10525' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 12 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10537' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10537' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 13 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.0' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 12 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10240' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 12 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10514' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10514' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 12 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/14.11111' + result: { browser: { name: Edge, version: '14', type: browser }, engine: { name: EdgeHTML, version: '14.11111' }, os: { name: Windows, version: { value: '10.1', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 14 on Windows 10' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-firefox.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-firefox.yaml new file mode 100644 index 0000000..1fc8aa8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-firefox.yaml @@ -0,0 +1,256 @@ +- + headers: 'User-Agent: Mozilla/5.0 (BeOS; U; Haiku BePC; xx; rv:1.8.1.25pre) Gecko/20120930 BonEcho/2.0.0.22pre' + result: { browser: { name: Firefox, version: 2.0.0.22, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Haiku }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.22 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (ChoX11; U; RISC OS; xx; rv:1.8.1.20) Gecko/20090803 BonEcho/2.0.0.20' + result: { browser: { name: Firefox, version: 2.0.0.20, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'RISC OS' }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.20 on RISC OS' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20121220 Firefox/19.0' + result: { browser: { name: Firefox, version: '19.0', type: browser }, engine: { name: Gecko, version: '19.0' }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 19.0 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:20.0) Gecko/20130102 Firefox/20.0' + result: { browser: { name: Firefox, version: '20.0', type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 20.0 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.8; xx; rv:1.9.0.19) Gecko/2010031218 Firefox/3.0.19' + result: { browser: { name: Firefox, version: 3.0.19, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 3.0.19 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; xx; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12' + result: { browser: { name: Firefox, version: 1.5.0.12, type: browser }, engine: { name: Gecko, version: 1.8.0 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 1.5.0.12 on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; xx; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15' + result: { browser: { name: Firefox, version: 2.0.0.15, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 2.0.0.15 on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 3; xx; rv:1.8.1.17) Gecko/20080925 Firefox/2.0.0.17' + result: { browser: { name: Firefox, version: 2.0.0.17, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: OS/2, version: { value: '3', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 2.0.0.17 on OS/2 Warp 3' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; xx; rv:1.7.12) Gecko/20050922 Firefox/1.0.7' + result: { browser: { name: Firefox, version: 1.0.7, type: browser }, engine: { name: Gecko, version: 1.7.12 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 1.0.7 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; xx; rv:1.8.1.11) Gecko/20071209 Firefox/2.0.0.11' + result: { browser: { name: Firefox, version: 2.0.0.11, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 2.0.0.11 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.9) Gecko/20100101 Firefox/10.0.9' + result: { browser: { name: Firefox, version: 10.0.9, type: browser }, engine: { name: Gecko, version: 10.0.9 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 10.0.9 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20100101 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 17.0 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0' + result: { browser: { name: Firefox, version: '31.0', type: browser }, engine: { name: Gecko, version: '31.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 31.0 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:6.0) Gecko/20100101 Firefox/6.0' + result: { browser: { name: Firefox, version: '6.0', type: browser }, engine: { name: Gecko, version: '6.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 6.0 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Photon; U; QNX x86pc; xx; rv:1.8.1.20) Gecko/-0000001 BonEcho/2.0.0.20' + result: { browser: { name: Firefox, version: 2.0.0.20, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: QNX }, device: { type: mobile, subtype: feature } } + readable: 'Firefox BonEcho 2.0.0.20 on QNX' +- + headers: 'User-Agent: Mozilla/5.0 (Photon; U; QNX x86pc; xx; rv:1.8.1.5pre) Gecko/20070709 BonEcho/2.0.0.5pre' + result: { browser: { name: Firefox, version: 2.0.0.5, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: QNX }, device: { type: mobile, subtype: feature } } + readable: 'Firefox BonEcho 2.0.0.5 on QNX' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 4.0; rv:35.0) Gecko/20100101 Firefox/35.0' + result: { browser: { name: Firefox, version: '35.0', type: browser }, engine: { name: Gecko, version: '35.0' }, os: { name: Windows, version: { value: '4.0', alias: 'NT 4.0' } }, device: { type: desktop } } + readable: 'Firefox 35.0 on Windows NT 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20120329 Firefox/13.0a2' + result: { browser: { name: Firefox, version: 13.0a2, type: browser }, engine: { name: Gecko, version: '13.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox Aurora 13.0a2 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/19.0 Firefox/19.0' + result: { browser: { name: Firefox, version: '19.0', type: browser }, engine: { name: Gecko, version: '19.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox 19.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0b6) Gecko/20100101 Firefox/4.0b6' + result: { browser: { name: Firefox, version: 4.0b6, type: browser }, engine: { name: Gecko, version: 2.0b6 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox Beta 4.0b6 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0' + result: { browser: { name: Firefox, version: '15.0', type: browser }, engine: { name: Gecko, version: '15.0' }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Firefox 15.0 on Windows Server 2003' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:21.0) Gecko/20130113 Firefox/21.0' + result: { browser: { name: Firefox, version: '21.0', type: browser }, engine: { name: Gecko, version: '21.0' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Firefox 21.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:3.0) Gecko/20100101 Firefox/3.0' + result: { browser: { name: Firefox, version: '3.0', type: browser }, engine: { name: Gecko, version: '3.0' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Firefox 3.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:5.0) Gecko/20100101 Firefox/5.0' + result: { browser: { name: Firefox, version: '5.0', type: browser }, engine: { name: Gecko, version: '5.0' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Firefox 5.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20130627 Firefox/25.0' + result: { browser: { name: Firefox, version: '25.0', type: browser }, engine: { name: Gecko, version: '25.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox 25.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/16.0 Firefox/16.0' + result: { browser: { name: Firefox, version: '16.0', type: browser }, engine: { name: Gecko, version: '16.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox 16.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:7.0) Gecko/20110814 Firefox/7.0' + result: { browser: { name: Firefox, version: '7.0', type: browser }, engine: { name: Gecko, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox 7.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; rv:20.0) Gecko/20130129 Firefox/20.0' + result: { browser: { name: Firefox, version: '20.0', type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Firefox 20.0 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Win95; xx; rv:1.7.13) Gecko/20060410 Firefox/1.0.8' + result: { browser: { name: Firefox, version: 1.0.8, type: browser }, engine: { name: Gecko, version: 1.7.13 }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Firefox 1.0.8 on Windows 95' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Win98; xx; rv:1.7.12) Gecko/20050915 Firefox/1.0.7' + result: { browser: { name: Firefox, version: 1.0.7, type: browser }, engine: { name: Gecko, version: 1.7.12 }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Firefox 1.0.7 on Windows 98' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; xx; rv:1.8.1) Gecko/20061010 Firefox/2.0' + result: { browser: { name: Firefox, version: '2.0', type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Windows, version: { value: '4.0', alias: 'NT 4.0' } }, device: { type: desktop } } + readable: 'Firefox 2.0 on Windows NT 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; xx; rv:1.9.1.5pre) Gecko/20091017 Shiretoko/3.5.5pre' + result: { browser: { name: Firefox, version: 3.5.5, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox Shiretoko 3.5.5 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12' + result: { browser: { name: Firefox, version: 3.0.12, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Firefox 3.0.12 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1' + result: { browser: { name: Firebird, family: { name: Firefox, version: 0.6.1 }, version: 0.6.1, type: browser }, engine: { name: Gecko, version: 1.5a }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firebird 0.6.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.8.1.22pre) Gecko/20090330 BonEcho/2.0.0.22pre' + result: { browser: { name: Firefox, version: 2.0.0.22, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.22 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.9.3a4pre) Gecko/20100405 Minefield/3.7a4pre' + result: { browser: { name: Firefox, version: 3.7a4, type: browser }, engine: { name: Gecko, version: 1.9.3a4pre }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox Minefield 3.7a4 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.2; xx; rv:1.5) Gecko/20031006 Firebird/0.7' + result: { browser: { name: Firebird, family: { name: Firefox, version: '0.7' }, version: '0.7', type: browser }, engine: { name: Gecko, version: '1.5' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Firebird 0.7 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0' + result: { browser: { name: Firefox, version: '41.0', type: browser }, engine: { name: Gecko, version: '41.0' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Firefox 41.0 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/201071 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 17.0 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:27.0) Gecko/20100101 Firefox/27.0' + result: { browser: { name: Firefox, version: '27.0', type: browser }, engine: { name: Gecko, version: '27.0' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 27.0 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) Gecko/20100101 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox 17.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20130117 Firefox/20.0 Aurora/20.0a2' + result: { browser: { name: Firefox, version: 20.0a2, type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Aurora 20.0a2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20130614 Firefox/24.0' + result: { browser: { name: Firefox, version: '24.0', type: browser }, engine: { name: Gecko, version: '24.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox 24.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20130717 Firefox/24.0 Aurora/24.0a2' + result: { browser: { name: Firefox, version: 24.0a2, type: browser }, engine: { name: Gecko, version: '24.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Aurora 24.0a2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0 Aurora/27.0a2' + result: { browser: { name: Firefox, version: 27.0a2, type: browser }, engine: { name: Gecko, version: '27.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Aurora 27.0a2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111218 Firefox/8.0' + result: { browser: { name: Firefox, version: '8.0', type: browser }, engine: { name: Gecko, version: '8.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox 8.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD amd64; rv:12.0) Gecko/20100101 Firefox/12.0' + result: { browser: { name: Firefox, version: '12.0', type: browser }, engine: { name: Gecko, version: '12.0' }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 12.0 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD i386; rv:25.0) Gecko/20100101 Firefox/25.0' + result: { browser: { name: Firefox, version: '25.0', type: browser }, engine: { name: Gecko, version: '25.0' }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 25.0 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD i386; rv:8.0.1) Gecko/20100101 Firefox/8.0.1' + result: { browser: { name: Firefox, version: 8.0.1, type: browser }, engine: { name: Gecko, version: 8.0.1 }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 8.0.1 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Scientific Linux x86_64; rv:17.0) Red Hat/6.4 Gecko/20130917 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: 'Red Hat' }, device: { type: desktop } } + readable: 'Firefox 17.0 on Red Hat' +- + headers: 'User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:2.0) Gecko/20100101 Firefox/4.0' + result: { browser: { name: Firefox, version: '4.0', type: browser }, engine: { name: Gecko, version: '2.0' }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'Firefox 4.0 on Solaris' +- + headers: 'User-Agent: Mozilla/5.0 (X11; SunOS sun4u; rv:17.0) Gecko/17.0 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'Firefox 17.0 on Solaris' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.8.1.18) Gecko/20110906 BonEcho/2.0.0.18' + result: { browser: { name: Firefox, version: 2.0.0.18, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.18 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.1.7) Gecko/20100303 Shiretoko/3.5.7' + result: { browser: { name: Firefox, version: 3.5.7, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Shiretoko 3.5.7 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-2.fc12 Firefox/3.5.9' + result: { browser: { name: Firefox, version: 3.5.9, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Fedora, version: '12' }, device: { type: desktop } } + readable: 'Firefox 3.5.9 on Fedora 12' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9b3pre) Gecko/2008020404 Minefield/3.0b3pre' + result: { browser: { name: Firefox, version: 3.0b3, type: browser }, engine: { name: Gecko, version: 1.9b3pre }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Minefield 3.0b3 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; OpenVMS HP_rx2660__(1.42GHz/6.0MB); xx; rv:1.8.1.18) Gecko/20081201 BonEcho/2.0.0.18' + result: { browser: { name: Firefox, version: 2.0.0.18, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: OpenVMS }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.18 on OpenVMS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; QNX x86pc; xx; rv:1.9.2.15) Gecko/20110316 Namoroka/3.6.15' + result: { browser: { name: Firefox, version: 3.6.15, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: QNX }, device: { type: mobile, subtype: feature } } + readable: 'Firefox Namoroka 3.6.15 on QNX' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20120426 Firefox/15.0a1' + result: { browser: { name: Firefox, version: 15.0a1, type: browser }, engine: { name: Gecko, version: '15.0' }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Firefox Aurora 15.0a1 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0' + result: { browser: { name: Firefox, version: '37.0', type: browser }, engine: { name: Gecko, version: '37.0' }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Firefox 37.0 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008100314 GranParadiso/3.0.3' + result: { browser: { name: Firefox, version: 3.0.3, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Gran Paradiso 3.0.3 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0 Slackware/14.1' + result: { browser: { name: Firefox, version: '33.0', type: browser }, engine: { name: Gecko, version: '33.0' }, os: { name: Slackware, version: '14.1' }, device: { type: desktop } } + readable: 'Firefox 33.0 on Slackware 14.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021029 Phoenix/0.4' + result: { browser: { name: Phoenix, version: '0.4', type: browser }, engine: { name: Gecko, version: 1.2b }, os: { name: Linux }, device: { type: desktop } } + readable: 'Phoenix 0.4 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Darwin i386; en-US; rv:1.9.1.4) Gecko/20100311 Shiretoko/3.5.5' + readable: 'Firefox Shiretoko 3.5.5 on Darwin' + result: { browser: { name: Firefox, version: 3.5.5, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Darwin }, device: { type: desktop } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-icab.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-icab.yaml new file mode 100644 index 0000000..69e47e2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-icab.yaml @@ -0,0 +1,40 @@ +- + headers: 'User-Agent: iCab J/2.8.2 (Macintosh; U; PPC)' + result: { browser: { name: iCab, version: 2.8.2, type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 2.8.2 on Mac OS' +- + headers: 'User-Agent: iCab J/2.9.8 (Macintosh; U; PPC; Mac OS X)' + result: { browser: { name: iCab, version: 2.9.8, type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 2.9.8 on OS X' +- + headers: 'User-Agent: iCab/2.9 (Macintosh; U; PPC)' + result: { browser: { name: iCab, version: '2.9', type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 2.9 on Mac OS' +- + headers: 'User-Agent: iCab/2.9 (Macintosh; U; PPC; Mac OS X)' + result: { browser: { name: iCab, version: '2.9', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 2.9 on OS X' +- + headers: 'User-Agent: iCab/5.0 (Macintosh; U; Intel Mac OS X)' + result: { browser: { name: iCab, version: '5.0', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 5.0 on OS X' +- + headers: 'User-Agent: iCab/5.0 (Macintosh; U; PPC Mac OS X)' + result: { browser: { name: iCab, version: '5.0', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 5.0 on OS X' +- + headers: 'User-Agent: iCab/5.0 CFNetwork/454.12.4 Darwin/10.8.0 (i386) (iMac7%2C1)' + result: { browser: { name: iCab, version: '5.0', type: browser }, os: { name: 'OS X', alias: 'Mac OS X', version: 10.6.8 }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 5.0 on Mac OS X 10.6.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.1.25 (KHTML, like Gecko) iCab/5.5 Safari/533.16' + result: { browser: { name: iCab, version: '5.5', type: browser }, engine: { name: Webkit, version: 600.1.25 }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 5.5 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.52.7 (KHTML, like Gecko) iCab/4.8 Safari/533.16' + result: { browser: { name: iCab, version: '4.8', type: browser }, engine: { name: Webkit, version: 534.52.7 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 4.8 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; xx) AppleWebKit/523.10.3 (KHTML, like Gecko) iCab/4.9 Safari/533.16' + result: { browser: { name: iCab, version: '4.9', type: browser }, engine: { name: Webkit, version: 523.10.3 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'iCab 4.9 on OS X' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-ie.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-ie.yaml new file mode 100644 index 0000000..63f76b2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-ie.yaml @@ -0,0 +1,104 @@ +- + headers: 'User-Agent: Mozilla/1.0 (compatible; MSIE 1.0; Windows 95)' + result: { browser: { name: 'Internet Explorer', version: '1.0', type: browser }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Internet Explorer 1.0 on Windows 95' +- + headers: 'User-Agent: Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)' + result: { browser: { name: 'Internet Explorer', version: '2.0', type: browser }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Internet Explorer 2.0 on Windows 95' +- + headers: 'User-Agent: Mozilla/2.0 (compatible; MSIE 2.1; Mac_PowerPC)' + result: { browser: { name: 'Internet Explorer', version: '2.1', type: browser }, engine: { name: Tasman }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Internet Explorer 2.1 on Mac OS' +- + headers: 'User-Agent: Mozilla/2.0 (compatible; MSIE 3.01; Windows 95)' + result: { browser: { name: 'Internet Explorer', version: 3.0.1, type: browser }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Internet Explorer 3.0.1 on Windows 95' +- + headers: 'User-Agent: Mozilla/2.0 (compatible; MSIE 3.02; Update a; AOL 3.0; Windows 95)' + result: { browser: { name: 'Internet Explorer', version: 3.0.2, type: browser }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Internet Explorer 3.0.2 on Windows 95' +- + headers: 'User-Agent: Mozilla/2.0 (compatible; MSIE 3.0; Windows 3.1)' + result: { browser: { name: 'Internet Explorer', version: '3.0', type: browser }, os: { name: Windows, version: '3.1' }, device: { type: desktop } } + readable: 'Internet Explorer 3.0 on Windows 3.1' +- + headers: 'User-Agent: Mozilla/2.0 (compatible; MSIE 4.0; Windows 98)' + result: { browser: { name: 'Internet Explorer', version: '4.0', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Internet Explorer 4.0 on Windows 98' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Mac_PowerPC)' + result: { browser: { name: 'Internet Explorer', version: 4.0.1, type: browser }, engine: { name: Tasman }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Internet Explorer 4.0.1 on Mac OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Mac_PowerPC)' + result: { browser: { name: 'Internet Explorer', version: 4.0.1, type: browser }, engine: { name: Tasman }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Internet Explorer 4.0.1 on Mac OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC)' + result: { browser: { name: 'Internet Explorer', version: '4.5', type: browser }, engine: { name: Tasman }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Internet Explorer 4.5 on Mac OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; SunOS 5.10 sun4u; X11)' + result: { browser: { name: 'Internet Explorer', version: '5.0', type: browser }, engine: { name: Trident }, os: { name: Solaris, family: UNIX, version: '10' }, device: { type: desktop } } + readable: 'Internet Explorer 5.0 on Solaris 10' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0b1; Mac_PowerPC)' + result: { browser: { name: 'Internet Explorer', version: '5.0', type: browser }, engine: { name: Tasman }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Internet Explorer 5.0 on Mac OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC)' + result: { browser: { name: 'Internet Explorer', version: 5.1.2, type: browser }, engine: { name: Tasman }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Internet Explorer 5.1.2 on OS X' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.22; Mac_PowerPC)' + result: { browser: { name: 'Internet Explorer', version: 5.2.2, type: browser }, engine: { name: Tasman }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Internet Explorer 5.2.2 on OS X' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)' + result: { browser: { name: 'Internet Explorer', version: '5.5', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '4.9', alias: ME } }, device: { type: desktop } } + readable: 'Internet Explorer 5.5 on Windows ME' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0 )' + result: { browser: { name: 'Internet Explorer', version: '5.5', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Internet Explorer 5.5 on Windows 2000' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.5b1; Mac_PowerPC)' + result: { browser: { name: 'Internet Explorer', version: '5.5', type: browser }, engine: { name: Tasman }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Internet Explorer 5.5 on OS X' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; .NET CLR 1.1.4322)' + result: { browser: { name: 'Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '4.9', alias: ME } }, device: { type: desktop } } + readable: 'Internet Explorer 6.0 on Windows ME' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)' + result: { browser: { name: 'Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Internet Explorer 6.0 on Windows 2000' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)' + result: { browser: { name: 'Internet Explorer', version: '8.0', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Internet Explorer 8.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (IE 11.0; Windows NT 6.2; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko' + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Internet Explorer 11.0 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (IE 11.0; Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Internet Explorer 11.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)' + result: { browser: { name: 'Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Internet Explorer 9.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; MALN)' + result: { browser: { name: 'Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop, manufacturer: Lenovo } } + readable: 'Internet Explorer 10.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0)' + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Internet Explorer 11.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; SLCC2)' + readable: 'Internet Explorer 11.0 on Windows 10' + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '8.0' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-konqueror.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-konqueror.yaml new file mode 100644 index 0000000..7d22f37 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-konqueror.yaml @@ -0,0 +1,80 @@ +- + headers: 'User-Agent: Mozilla/5.0 (X11) KHTML/4.14.3 (like Gecko) Konqueror/4.14' + result: { browser: { name: Konqueror, version: '4.14', type: browser }, engine: { name: KHTML, version: 4.14.3 }, device: { type: desktop } } + readable: 'Konqueror 4.14' +- + headers: 'User-Agent: Mozilla/5.0 (X11; BSD Four) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.10.5 Safari/534.34' + result: { browser: { name: Konqueror, version: 4.10.5, type: browser }, engine: { name: Webkit, version: '534.34' }, device: { type: desktop } } + readable: 'Konqueror 4.10.5' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Cygwin) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.13.3 Safari/534.34' + result: { browser: { name: Konqueror, version: 4.13.3, type: browser }, engine: { name: Webkit, version: '534.34' }, device: { type: desktop } } + readable: 'Konqueror 4.13.3' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64) KHTML/4.12.4 (like Gecko) Konqueror/4.12' + result: { browser: { name: Konqueror, version: '4.12', type: browser }, engine: { name: KHTML, version: 4.12.4 }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Konqueror 4.12 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD) KHTML/4.9.1 (like Gecko) Konqueror/4.9' + result: { browser: { name: Konqueror, version: '4.9', type: browser }, engine: { name: KHTML, version: 4.9.1 }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Konqueror 4.9 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux 3.13.0-30-generic) KHTML/4.13.2 (like Gecko) Konqueror/4.13' + result: { browser: { name: Konqueror, version: '4.13', type: browser }, engine: { name: KHTML, version: 4.13.2 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.13 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux 3.15.3-1-ARCH x86_64) KHTML/4.13.2 (like Gecko) Konqueror/4.13' + result: { browser: { name: Konqueror, version: '4.13', type: browser }, engine: { name: KHTML, version: 4.13.2 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.13 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux ; xx) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.11.5 Safari/534.34' + result: { browser: { name: Konqueror, version: 4.11.5, type: browser }, engine: { name: Webkit, version: '534.34' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.11.5 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux armv7l) KHTML/4.10.4 (like Gecko) Konqueror/4.10' + result: { browser: { name: Konqueror, version: '4.10', type: browser }, engine: { name: KHTML, version: 4.10.4 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.10 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.14.1 Safari/534.34' + result: { browser: { name: Konqueror, version: 4.14.1, type: browser }, engine: { name: Webkit, version: '534.34' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.14.1 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) KHTML/4.8.2 (like Gecko) Konqueror/4.8' + result: { browser: { name: Konqueror, version: '4.8', type: browser }, engine: { name: KHTML, version: 4.8.2 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.8 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) KHTML/4.10.4 (like Gecko) Konqueror/4.10 Fedora/4.10.4-1.fc18' + result: { browser: { name: Konqueror, version: '4.10', type: browser }, engine: { name: KHTML, version: 4.10.4 }, os: { name: Fedora, version: '18' }, device: { type: desktop } } + readable: 'Konqueror 4.10 on Fedora 18' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; en_US) KHTML/4.13.0 (like Gecko) Konqueror/4.13' + result: { browser: { name: Konqueror, version: '4.13', type: browser }, engine: { name: KHTML, version: 4.13.0 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.13 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; xx) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.14.2 Safari/534.34' + result: { browser: { name: Konqueror, version: 4.14.2, type: browser }, engine: { name: Webkit, version: '534.34' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.14.2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.10 (like Gecko) SUSE' + result: { browser: { name: Konqueror, version: '3.5', type: browser }, engine: { name: KHTML, version: 3.5.10 }, os: { name: SUSE }, device: { type: desktop } } + readable: 'Konqueror 3.5 on SUSE' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.7 (like Gecko)' + result: { browser: { name: Konqueror, version: '3.5', type: browser }, engine: { name: KHTML, version: 3.5.7 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 3.5 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.4 (like Gecko)' + result: { browser: { name: Konqueror, version: '4.2', type: browser }, engine: { name: KHTML, version: 4.2.4 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.5; Linux) KHTML/4.5.5 (like Gecko)' + result: { browser: { name: Konqueror, version: '4.5', type: browser }, engine: { name: KHTML, version: 4.5.5 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.5 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.6; Linux) KHTML/4.6.5 (like Gecko) Fedora/4.6.5-8.fc14' + result: { browser: { name: Konqueror, version: '4.6', type: browser }, engine: { name: KHTML, version: 4.6.5 }, os: { name: Fedora, version: '14' }, device: { type: desktop } } + readable: 'Konqueror 4.6 on Fedora 14' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.6; Linux; X11; x86_64; xx) KHTML/4.6.5 (like Gecko) Mageia/4.6.5-1.7.mga1' + result: { browser: { name: Konqueror, version: '4.6', type: browser }, engine: { name: KHTML, version: 4.6.5 }, os: { name: Mageia, version: '1' }, device: { type: desktop } } + readable: 'Konqueror 4.6 on Mageia 1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-maxthon.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-maxthon.yaml new file mode 100644 index 0000000..e4c3739 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-maxthon.yaml @@ -0,0 +1,136 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 691; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)' + result: { browser: { name: Maxthon, type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; MAXTHON 2.0)' + result: { browser: { name: Maxthon, version: '2', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon 2 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; WOW64; Trident/4.0; .NET4.0E; .NET4.0C; InfoPath.3; MAXTHON)' + result: { browser: { name: Maxthon, type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Maxthon/3.0)' + result: { browser: { name: Maxthon, version: '3', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon 3 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Maxthon 2.0)' + result: { browser: { name: Maxthon, version: '2', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon 2 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; Maxthon/3.0)' + result: { browser: { name: Maxthon, version: '3', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon 3 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)' + result: { browser: { name: Maxthon, type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Maxthon/3.0)' + result: { browser: { name: Maxthon, version: '3', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Maxthon 3 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.22 (KHTML, like Gecko) Maxthon/4.1.2.1000 Chrome/25.0.1364.99 Safari/537.22' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 25 }, version: 4.1.2, type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Maxthon 4.1.2 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.22 (KHTML, like Gecko) Maxthon/4.0.6.3000 Chrome/25.0.1364.99 Safari/537.22' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 25 }, version: 4.0.6, type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Maxthon 4.0.6 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.77.4 (KHTML, like Gecko) Maxthon/4.2.3' + result: { browser: { name: Maxthon, version: 4.2.3, type: browser }, engine: { name: Webkit, version: 537.77.4 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Maxthon 4.2.3 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.22 (KHTML, like Gecko) Maxthon/4.1.2.1000 Chrome/25.0.1364.99 Safari/537.22' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 25 }, version: 4.1.2, type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Maxthon 4.1.2 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.78.2 (KHTML, like Gecko) Maxthon/4.4.0' + result: { browser: { name: Maxthon, version: 4.4.0, type: browser }, engine: { name: Webkit, version: 537.78.2 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Maxthon 4.4.0 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.78.2 (KHTML, like Gecko) Maxthon/4.5.0' + result: { browser: { name: Maxthon, version: 4.5.0, type: browser }, engine: { name: Webkit, version: 537.78.2 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Maxthon 4.5.0 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.0 Chrome/30.0.1599.101 Safari/537.36' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 30 }, version: '4.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Maxthon 4.0 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.0 Chrome/44.0.2403.69 Safari/537.36' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 44 }, version: '4.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Maxthon 4.0 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/23.0.1229.79 Safari/535.12' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 23 }, version: '3', type: browser }, engine: { name: Webkit, version: '535.12' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon 3 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.0.0.1010 Chrome/39.0.2146.0 Safari/537.36' + result: { browser: { name: 'Maxthon Nitro', family: { name: Chrome, version: 39 }, version: 1.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon Nitro 1.0.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.0.0.500 Chrome/35.0.1849.0 Safari/537.36' + result: { browser: { name: 'Maxthon Nitro', family: { name: Chrome, version: 35 }, version: 1.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Maxthon Nitro 1.0.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.0.0.700 Chrome/35.0.1849.0 Safari/537.36' + result: { browser: { name: 'Maxthon Nitro', family: { name: Chrome, version: 35 }, version: 1.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Maxthon Nitro 1.0.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.0.0.900 Chrome/35.0.1849.0 Safari/537.36' + result: { browser: { name: 'Maxthon Nitro', family: { name: Chrome, version: 35 }, version: 1.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon Nitro 1.0.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.0.1.2000 Chrome/35.0.1849.0 Safari/537.36' + result: { browser: { name: 'Maxthon Nitro', family: { name: Chrome, version: 35 }, version: 1.0.1, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon Nitro 1.0.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.1.0.601 Chrome/39.0.2146.0 Safari/537.36' + result: { browser: { name: 'Maxthon Nitro', family: { name: Chrome, version: 39 }, version: 1.1.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon Nitro 1.1.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.1.0.2000 Chrome/39.0.2146.0 Safari/537.36' + result: { browser: { name: 'Maxthon Nitro', family: { name: Chrome, version: 39 }, version: 1.1.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Maxthon Nitro 1.1.0 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; Maxthon/3.0)' + result: { browser: { name: Maxthon, version: '3', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon 3 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; Maxthon/4.0.1.1000)' + result: { browser: { name: Maxthon, version: 4.0.1, type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon 4.0.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; Maxthon/4.0.3.5000)' + result: { browser: { name: Maxthon, version: 4.0.3, type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon 4.0.3 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; Maxthon/4.1.2.3000)' + result: { browser: { name: Maxthon, version: 4.1.2, type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon 4.1.2 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; Maxthon/4.2.2.600)' + result: { browser: { name: Maxthon, version: 4.2.2, type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon 4.2.2 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; Maxthon/4.2.0.3000)' + result: { browser: { name: Maxthon, version: 4.2.0, type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Maxthon 4.2.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.6.600 Chrome/43.0.2357.124 Safari/537.36' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 43 }, version: 4.4.6, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Maxthon 4.4.6 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Windows NT 6.3; U; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.5.3000 Chrome/43.0.2357.81 Safari/537.36' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 43 }, version: 4.4.5, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Maxthon 4.4.5 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Windows NT 6.3; U; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.7.1000 Chrome/44.0.2403.157 Safari/537.36' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 44 }, version: 4.4.7, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Maxthon 4.4.7 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Windows NT 6.3; U; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.8.1000 Chrome/46.0.2490.86 Safari/537.36' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 46 }, version: 4.4.8, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Maxthon 4.4.8 on Windows 8.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-midori.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-midori.yaml new file mode 100644 index 0000000..80c8ff4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-midori.yaml @@ -0,0 +1,60 @@ +- + headers: 'User-Agent: Midori/0.1.9 (X11; Linux i686; U; xx) WebKit/532+' + result: { browser: { name: Midori, version: 0.1.9, type: browser }, engine: { name: Webkit, version: '532' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Midori 0.1.9 on Linux' +- + headers: 'User-Agent: Midori/0.2 (X11; Linux; U; c) WebKit/534.7+' + result: { browser: { name: Midori, version: '0.2', type: browser }, engine: { name: Webkit, version: '534.7' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Midori 0.2 on Linux' +- + headers: 'User-Agent: Midori/0.2.2 (X11; Linux ppc; U; xx) WebKit/531.2' + result: { browser: { name: Midori, version: 0.2.2, type: browser }, engine: { name: Webkit, version: '531.2' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Midori 0.2.2 on Linux' +- + headers: 'User-Agent: Midori/0.3 (X11; Linux; U; xx) WebKit/534.21+' + result: { browser: { name: Midori, version: '0.3', type: browser }, engine: { name: Webkit, version: '534.21' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Midori 0.3 on Linux' +- + headers: 'User-Agent: Midori/0.4 (CentOS 6.5)' + result: { browser: { name: Midori, version: '0.4', type: browser }, device: { type: desktop } } + readable: 'Midori 0.4' +- + headers: 'User-Agent: Midori/0.5 (X11; FreeBSD/11) WebKit/2.4.7 Midori/0.5.9' + result: { browser: { name: Midori, version: '0.5', type: browser }, engine: { name: Webkit, version: 2.4.7 }, os: { name: FreeBSD, family: BSD, version: '11' }, device: { type: desktop } } + readable: 'Midori 0.5 on FreeBSD 11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; c) AppleWebKit/535+ (KHTML, like Gecko) Version/5.0 Safari/535.10+ Midori/0.4' + result: { browser: { name: Midori, version: '0.4', type: browser }, engine: { name: Webkit, version: '535' }, device: { type: desktop } } + readable: 'Midori 0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; xx) AppleWebKit/538+ (KHTML, like Gecko) Version/8.0 Safari/538.15+ Midori/0.5' + result: { browser: { name: Midori, version: '0.5', type: browser }, engine: { name: Webkit, version: '538' }, device: { type: desktop } } + readable: 'Midori 0.5' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.6 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/537.6 Midori/0.4' + result: { browser: { name: Midori, family: { name: Chrome, version: 18 }, version: '0.4', type: browser }, engine: { name: Webkit, version: '537.6' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Midori 0.4 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (X11; CYGWIN_NT-6.1) AppleWebKit/537.32 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/537.32 Midori/0.5' + result: { browser: { name: Midori, family: { name: Chrome, version: 18 }, version: '0.5', type: browser }, engine: { name: Webkit, version: '537.32' }, device: { type: desktop } } + readable: 'Midori 0.5' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD) AppleWebKit/535.22 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/535.22 Midori/0.5' + result: { browser: { name: Midori, family: { name: Chrome, version: 18 }, version: '0.5', type: browser }, engine: { name: Webkit, version: '535.22' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Midori 0.5 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/537.4 Midori/0.4' + result: { browser: { name: Midori, family: { name: Chrome, version: 18 }, version: '0.4', type: browser }, engine: { name: Webkit, version: '537.4' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Midori 0.4 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1+) midori' + result: { browser: { name: Midori, type: browser }, engine: { name: Webkit, version: '525.1' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Midori on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; xx) AppleWebKit/532 (KHTML, like Gecko) Version/3.0 Mobile/1A538b Safari/419.3 Midori/0.4' + result: { browser: { name: Midori, version: '0.4', type: browser }, engine: { name: Webkit, version: '532' }, os: { name: iOS, alias: 'iPhone OS', version: '1.0' }, device: { type: desktop, manufacturer: Apple } } + readable: 'Midori 0.4 on iPhone OS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/525.1 (KHTML, like Gecko, Safari/525.1 ) midori/1.19' + result: { browser: { name: Midori, version: '1.19', type: browser }, engine: { name: Webkit, version: '525.1' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Midori 1.19 on Linux' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-mosaic.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-mosaic.yaml new file mode 100644 index 0000000..cceebc0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-mosaic.yaml @@ -0,0 +1,96 @@ +- + headers: 'User-Agent: NCSA Mosaic/2.1 (Windows x86)' + result: { browser: { name: 'NCSA Mosaic', family: Mosaic, version: '2.1', type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'NCSA Mosaic 2.1 on Windows' +- + headers: 'User-Agent: NCSA Mosaic/2.6b1 (X11;UNIX_System_V 4.2 R4000) libwww/2.12 modified' + result: { browser: { name: 'NCSA Mosaic', family: Mosaic, version: '2.6', type: browser }, os: { name: 'UNIX System V', family: UNIX, version: '4.2' }, device: { type: desktop } } + readable: 'NCSA Mosaic 2.6 on UNIX System V 4.2' +- + headers: 'User-Agent: NCSA Mosaic/2.6b1 [en-gb] (X11;UNIX_System_V 4.2 R4000) libwww/2.12 modified' + result: { browser: { name: 'NCSA Mosaic', family: Mosaic, version: '2.6', type: browser }, os: { name: 'UNIX System V', family: UNIX, version: '4.2' }, device: { type: desktop } } + readable: 'NCSA Mosaic 2.6 on UNIX System V 4.2' +- + headers: 'User-Agent: NCSA Mosaic/3.0.0 (Windows x86)' + result: { browser: { name: 'NCSA Mosaic', family: Mosaic, version: 3.0.0, type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'NCSA Mosaic 3.0.0 on Windows' +- + headers: 'User-Agent: NCSA_Mosaic/2.6L10N+ (X11;SunOS 5.6 sun4u) libwww/2.12 modified' + result: { browser: { name: 'NCSA Mosaic', family: Mosaic, version: '2.6', type: browser }, os: { name: Solaris, family: UNIX, version: '2.6' }, device: { type: desktop } } + readable: 'NCSA Mosaic 2.6 on Solaris 2.6' +- + headers: 'User-Agent: NEC MosaicView/1.0 libwww/2.15_Spyglass' + result: { browser: { name: 'Spyglass Mosaic', family: Mosaic, version: '1.0', type: browser } } + readable: 'Spyglass Mosaic 1.0' +- + headers: 'User-Agent: mMosaic/3.6.6 (X11;SunOS 5.8 sun4m)' + result: { browser: { name: mMosaic, family: Mosaic, version: 3.6.6, type: browser }, os: { name: Solaris, family: UNIX, version: '8' }, device: { type: desktop } } + readable: 'mMosaic 3.6.6 on Solaris 8' +- + headers: 'User-Agent: AIR_Mosaic(16bit)/v1.00.198.07' + result: { browser: { name: 'AIR Mosaic', family: Mosaic, version: '1.00', type: browser } } + readable: 'AIR Mosaic 1.00' +- + headers: 'User-Agent: AIR_Mosaic(16bit)/v3.09.04.02' + result: { browser: { name: 'AIR Mosaic', family: Mosaic, version: '3.09', type: browser } } + readable: 'AIR Mosaic 3.09' +- + headers: 'User-Agent: AIR_Mosaic(16bit)/v3.10.06.07' + result: { browser: { name: 'AIR Mosaic', family: Mosaic, version: '3.10', type: browser } } + readable: 'AIR Mosaic 3.10' +- + headers: 'User-Agent: DCL SuperMosaic/1.0.2.9J_Win32' + result: { browser: { name: SuperMosaic, family: Mosaic, version: '1.0', type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'SuperMosaic 1.0 on Windows' +- + headers: 'User-Agent: SPRY_Mosaic(16bit)/v3.10.198.07' + result: { browser: { name: 'SPRY Mosaic', family: Mosaic, version: '3.10', type: browser } } + readable: 'SPRY Mosaic 3.10' +- + headers: 'User-Agent: SPRY_Mosaic/v8.01 (Windows 16-bit) SPRY_package/v4.00' + result: { browser: { name: 'SPRY Mosaic', family: Mosaic, version: '8.01', type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'SPRY Mosaic 8.01 on Windows' +- + headers: 'User-Agent: WinMosaic/Version 2.0 (ALPHA 2)' + result: { browser: { name: WinMosaic, family: Mosaic, version: '2.0', type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'WinMosaic 2.0 on Windows' +- + headers: 'User-Agent: Spyglass Mosaic/1.0' + result: { browser: { name: 'Spyglass Mosaic', family: Mosaic, version: '1.0', type: browser } } + readable: 'Spyglass Mosaic 1.0' +- + headers: 'User-Agent: Spyglass_Mosaic/2.10 Win32 TGV/2' + result: { browser: { name: 'Spyglass Mosaic', family: Mosaic, version: '2.10', type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'Spyglass Mosaic 2.10 on Windows' +- + headers: 'User-Agent: Spyglass_Mosaic/2.11 IRIX5.2 Spyglass/11' + result: { browser: { name: 'Spyglass Mosaic', family: Mosaic, version: '2.11', type: browser }, os: { name: IRIX, family: UNIX }, device: { type: desktop } } + readable: 'Spyglass Mosaic 2.11 on IRIX' +- + headers: 'User-Agent: Spyglass_Mosaic/2.11 Mac_68000 Spyglass/6' + result: { browser: { name: 'Spyglass Mosaic', family: Mosaic, version: '2.11', type: browser } } + readable: 'Spyglass Mosaic 2.11' +- + headers: 'User-Agent: Quarterdeck Mosaic Version 1.0' + result: { browser: { name: 'Quarterdeck Mosaic', family: Mosaic, version: '1.0', type: browser } } + readable: 'Quarterdeck Mosaic 1.0' +- + headers: 'User-Agent: Quarterdeck Mosaic Version 2.0/Final/Export' + result: { browser: { name: 'Quarterdeck Mosaic', family: Mosaic, version: '2.0', type: browser } } + readable: 'Quarterdeck Mosaic 2.0' +- + headers: 'User-Agent: Quarterdeck Mosaic Version 2.01/Release/Export' + result: { browser: { name: 'Quarterdeck Mosaic', family: Mosaic, version: '2.01', type: browser } } + readable: 'Quarterdeck Mosaic 2.01' +- + headers: 'User-Agent: NCSA Mosaic for the X Window System/2.5b5 (L10N-2.4.0)' + result: { browser: { name: 'NCSA Mosaic', family: Mosaic, version: '2.5', type: browser } } + readable: 'NCSA Mosaic 2.5' +- + headers: 'User-Agent: NCSA Mosaic(tm) for Windows/Version 2.0 (ALPHA 7)' + result: { browser: { name: 'NCSA Mosaic', family: Mosaic, version: '2.0', type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'NCSA Mosaic 2.0 on Windows' +- + headers: 'User-Agent: Mosaic/1.0r2 (Macintosh; I; 68040)' + result: { browser: { name: 'NCSA Mosaic', family: Mosaic, version: '1.0', type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'NCSA Mosaic 1.0 on Mac OS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-netfront.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-netfront.yaml new file mode 100644 index 0000000..3bee56b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-netfront.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WKC) AppleWebKit/536.5.1 (KHTML, like Gecko) NetFrontBrowserNX/3.0.0' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: 536.5.1 }, device: { type: desktop } } + readable: 'NetFront NX 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WKC) AppleWebKit/534.52.7 (KHTML, like Gecko) NetFrontBrowserNX/2.1.0' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, engine: { name: Webkit, version: 534.52.7 }, device: { type: desktop } } + readable: 'NetFront NX 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.15 (KHTML, like Gecko) NX/3.0 Chrome/24.0.1295.0 Safari/537.15' + result: { browser: { name: 'NetFront NX', family: { name: Chrome, version: 24 }, version: '3.0', type: browser }, engine: { name: Webkit, version: '537.15' }, device: { type: desktop } } + readable: 'NetFront NX 3.0' +- + headers: 'User-Agent: NX/2.1' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, device: { type: desktop } } + readable: 'NetFront NX 2.1' +- + headers: 'User-Agent: NX/3.0' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, device: { type: desktop } } + readable: 'NetFront NX 3.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-netscape.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-netscape.yaml new file mode 100644 index 0000000..e948830 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-netscape.yaml @@ -0,0 +1,76 @@ +- + headers: 'User-Agent: Mozilla/2.02E (Win95; U)' + result: { browser: { name: 'Netscape Navigator', version: 2.0.2, type: browser }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Netscape Navigator 2.0.2 on Windows 95' +- + headers: 'User-Agent: Mozilla/2.02Gold (Win95; I)' + result: { browser: { name: 'Netscape Navigator', version: 2.0.2, type: browser }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Netscape Navigator 2.0.2 on Windows 95' +- + headers: 'User-Agent: Mozilla/3.0 (Win95; N)' + result: { browser: { name: 'Netscape Navigator', version: '3.0', type: browser }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0 on Windows 95' +- + headers: 'User-Agent: Mozilla/3.0 (X11; I; OSF1 V4.0 alpha)' + result: { browser: { name: 'Netscape Navigator', version: '3.0', type: browser }, os: { name: 'Digital Unix', family: UNIX, version: '4.0' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0 on Digital Unix 4.0' +- + headers: 'User-Agent: Mozilla/3.01Gold (X11; I; Linux 2.0.32 i486)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.1, type: browser }, os: { name: Linux }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.1 on Linux' +- + headers: 'User-Agent: Mozilla/3.01Gold (X11; I; SunOS 5.5.1 sun4m)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.1, type: browser }, os: { name: Solaris, family: UNIX, version: 2.5.1 }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.1 on Solaris 2.5.1' +- + headers: 'User-Agent: Mozilla/3.04Gold (X11; U; IRIX 5.3 IP22)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.4, type: browser }, os: { name: IRIX, family: UNIX, version: '5.3' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.4 on IRIX 5.3' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.10pre) Gecko/20071127 Firefox/2.0.0.10 Navigator/9.0.0.4' + result: { browser: { name: 'Netscape Navigator', family: { name: Firefox, version: 2.0.0.10 }, version: 9.0.0, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Netscape Navigator 9.0.0 on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.8pre) Gecko/20071019 Firefox/2.0.0.8 Navigator/9.0.0.1' + result: { browser: { name: 'Netscape Navigator', family: { name: Firefox, version: 2.0.0.8 }, version: 9.0.0, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Netscape Navigator 9.0.0 on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC; xx; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3' + result: { browser: { name: Netscape, version: 6.2.3, type: browser }, engine: { name: Gecko, version: 0.9.4 }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Netscape 6.2.3 on Mac OS' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC; xx; rv:1.0.2) Gecko/20030208 Netscape/7.02' + result: { browser: { name: Netscape, version: '7.02', type: browser }, engine: { name: Gecko, version: 1.0.2 }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Netscape 7.02 on Mac OS' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6' + result: { browser: { name: 'Netscape Navigator', family: { name: Firefox, version: 2.0.0.12 }, version: 9.0.0, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Netscape Navigator 9.0.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; xx; rv:1.7.5) Gecko/20051012 Netscape/8.0.4' + result: { browser: { name: Netscape, version: 8.0.4, type: browser }, engine: { name: Gecko, version: 1.7.5 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Netscape 8.0.4 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Netscape/8.0.4' + result: { browser: { name: Netscape, version: 8.0.4, type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Netscape 8.0.4 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.5) Gecko/20070321 Netscape/8.1.3' + result: { browser: { name: Netscape, version: 8.1.3, type: browser }, engine: { name: Gecko, version: 1.7.5 }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Netscape 8.1.3 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.2; xx; rv:1.7.5) Gecko/20060127 Netscape/8.1' + result: { browser: { name: Netscape, version: '8.1', type: browser }, engine: { name: Gecko, version: 1.7.5 }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Netscape 8.1 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:0.9.4) Gecko/20011022 Netscape6/6.2' + result: { browser: { name: Netscape, version: '6.2', type: browser }, engine: { name: Gecko, version: 0.9.4 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Netscape 6.2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.4) Gecko/20030624 Netscape/7.1' + result: { browser: { name: Netscape, version: '7.1', type: browser }, engine: { name: Gecko, version: '1.4' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Netscape 7.1 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx; rv:1.7.2) Gecko/20040805 Netscape/7.2' + result: { browser: { name: Netscape, version: '7.2', type: browser }, engine: { name: Gecko, version: 1.7.2 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Netscape 7.2 on Linux' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-omniweb.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-omniweb.yaml new file mode 100644 index 0000000..837c82f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-omniweb.yaml @@ -0,0 +1,92 @@ +- + headers: 'User-Agent: DoCoMo/1.0/SH505i/c20/TC/W24H12 OmniWeb/4.1.1-v424.6' + readable: 'OmniWeb 4.1.1 on OS X' + result: { browser: { name: OmniWeb, version: 4.1.1, type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC) OmniWeb/4.1.1-v424.6' + readable: 'OmniWeb 4.1.1 on OS X' + result: { browser: { name: OmniWeb, version: 4.1.1, type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.2; Mac_PowerPC) OmniWeb/4.1.1-v424.6' + readable: 'OmniWeb 4.1.1 on OS X' + result: { browser: { name: OmniWeb, version: 4.1.1, type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98). OmniWeb/v528' + readable: 'OmniWeb 5 on OS X' + result: { browser: { name: OmniWeb, version: '5', type: browser }, engine: { name: WebCore }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98) OmniWeb/4.1.1-v424.6' + readable: 'OmniWeb 4.1.1 on OS X' + result: { browser: { name: OmniWeb, version: 4.1.1, type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98) OmniWeb/v496' + readable: 'OmniWeb 4 on OS X' + result: { browser: { name: OmniWeb, version: '4', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.5 (compatible; OmniWeb/4.0.5; Mac_PowerPC)' + readable: 'OmniWeb 4.0.5 on OS X' + result: { browser: { name: OmniWeb, version: 4.0.5, type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.5 (compatible; OmniWeb/4.1-v422; Mac_PowerPC)' + readable: 'OmniWeb 4.1 on OS X' + result: { browser: { name: OmniWeb, version: '4.1', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.5 (compatible; OmniWeb/4.2-v435.5; Mac_Intel )' + readable: 'OmniWeb 4.2 on OS X' + result: { browser: { name: OmniWeb, version: '4.2', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.5 (compatible; OmniWeb/4.2-v435.5; Mac_PowerPC)' + readable: 'OmniWeb 4.2 on OS X' + result: { browser: { name: OmniWeb, version: '4.2', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.5 (compatible; OmniWeb/5.1.1; Mac_PowerPC)' + readable: 'OmniWeb 5.1.1 on OS X' + result: { browser: { name: OmniWeb, version: 5.1.1, type: browser }, engine: { name: WebCore }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2; xx) AppleWebKit/10600.3.18 (KHTML, like Gecko) Version/7.0 Safari/537.71 OmniWeb/v625.0' + readable: 'OmniWeb 6 on OS X Yosemite 10.10' + result: { browser: { name: OmniWeb, version: '6', type: browser }, engine: { name: WebKit }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0; xx) AppleWebKit/11601.1.43 (KHTML, like Gecko) Version/7.0 Safari/537.71 OmniWeb/v626.0' + readable: 'OmniWeb 6 on OS X El Capitan 10.11' + result: { browser: { name: OmniWeb, version: '6', type: browser }, engine: { name: WebKit }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2; xx) AppleWebKit/9537.75.14 (KHTML, like Gecko) Version/7.0 Safari/537.71 OmniWeb/v624.0' + readable: 'OmniWeb 6 on OS X Mavericks 10.9' + result: { browser: { name: OmniWeb, version: '6', type: browser }, engine: { name: WebKit }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.74.8 (KHTML, like Gecko) OmniWeb' + readable: 'OmniWeb on OS X Mavericks 10.9' + result: { browser: { name: OmniWeb, type: browser }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; xx) AppleWebKit/533.21.1 (KHTML, like Gecko, Safari/533.19.4) Version/5.11.1 OmniWeb/622.18.0' + readable: 'OmniWeb 6 on Mac OS X 10.6' + result: { browser: { name: OmniWeb, version: '6', type: browser }, engine: { name: WebKit }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_9_3; xx) AppleWebKit/533.21.1+(KHTML, like Gecko, Safari/533.19.4) Version/5.11.2 OmniWeb/622.19.3.0' + readable: 'OmniWeb 6 on OS X Mavericks 10.9' + result: { browser: { name: OmniWeb, version: '6', type: browser }, engine: { name: WebKit }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; xx) AppleWebKit/528.16 (KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0.112941' + readable: 'OmniWeb 6 on OS X' + result: { browser: { name: OmniWeb, version: '6', type: browser }, engine: { name: WebKit }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/523 (KHTML, like Gecko, Safari/523.10) OmniWeb/v615.0.97558' + readable: 'OmniWeb 6 on OS X' + result: { browser: { name: OmniWeb, version: '6', type: browser }, engine: { name: WebKit }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.48' + readable: 'OmniWeb 5 on OS X' + result: { browser: { name: OmniWeb, version: '5', type: browser }, engine: { name: WebCore }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1 OmniWeb/4.1-v422' + readable: 'OmniWeb 4.1 on OS X' + result: { browser: { name: OmniWeb, version: '4.1', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2) Gecko/20010726 Netscape 6/6.1 OmniWeb/4.1-v422' + readable: 'OmniWeb 4.1 on OS X' + result: { browser: { name: OmniWeb, version: '4.1', type: browser }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: OmniWeb/2.5 OWF/1.0' + readable: 'OmniWeb 2.5 on NextStep' + result: { browser: { name: OmniWeb, version: '2.5', type: browser }, os: { name: NextStep }, device: { type: desktop } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-opera.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-opera.yaml new file mode 100644 index 0000000..11d27dc --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-opera.yaml @@ -0,0 +1,431 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0; xx) Opera 8.51' + result: { browser: { name: Opera, version: '8.51', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '4.0', alias: 'NT 4.0' } }, device: { type: desktop } } + readable: 'Opera 8.51 on Windows NT 4.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; xx) Opera 8.53' + result: { browser: { name: Opera, version: '8.53', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 8.53 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; xx) Opera 9.64' + result: { browser: { name: Opera, version: '9.64', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 9.64 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 6.1; xx) Opera 8.50' + result: { browser: { name: Opera, version: '8.50', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 8.50 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.44 Safari/537.36 OPR/24.0.1558.25 (Edition Next)' + result: { browser: { name: Opera, family: { name: Chrome, version: 37 }, version: '24.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Next 24.0 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2101.0 Safari/537.36 OPR/25.0.1592.0 (Edition Developer)' + result: { browser: { name: Opera, family: { name: Chrome, version: 38 }, version: '25.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Developer 25.0 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2159.4 Safari/537.36 OPR/26.0.1646.0 (Edition developer)' + result: { browser: { name: Opera, family: { name: Chrome, version: 39 }, version: '26.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Developer 26.0 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.53 Safari/537.36 OPR/28.0.1750.31 (Edition beta)' + result: { browser: { name: Opera, family: { name: Chrome, version: 41 }, version: '28.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Beta 28.0 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 OPR/32.0.1948.25' + result: { browser: { name: Opera, family: { name: Chrome, version: 45 }, version: '32.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 32.0 on OS X El Capitan 10.11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36 OPR/19.0.1326.47' + result: { browser: { name: Opera, family: { name: Chrome, version: 32 }, version: '19.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 19.0 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.49 Safari/537.36 OPR/16.0.1196.45 (Edition Next)' + result: { browser: { name: Opera, family: { name: Chrome, version: 29 }, version: '16.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Next 16.0 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1284.49' + result: { browser: { name: Opera, family: { name: Chrome, version: 31 }, version: '18.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 18.0 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 OPR/32.0.1948.25' + result: { browser: { name: Opera, family: { name: Chrome, version: 45 }, version: '32.0', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 32.0 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36 OPR/31.0.1889.180' + result: { browser: { name: Opera, family: { name: Chrome, version: 44 }, version: '31.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Opera 31.0 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36 OPR/15.0.1147.138' + result: { browser: { name: Opera, family: { name: Chrome, version: 28 }, version: '15.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 15.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 OPR/17.0.1241.53' + result: { browser: { name: Opera, family: { name: Chrome, version: 30 }, version: '17.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 17.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36 OPR/19.0.1300.0 (Edition Developer)' + result: { browser: { name: Opera, family: { name: Chrome, version: 32 }, version: '19.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera Developer 19.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36 OPR/19.0.1326.63' + result: { browser: { name: Opera, family: { name: Chrome, version: 32 }, version: '19.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 19.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.149 Safari/537.36 OPR/20.0.1387.77' + result: { browser: { name: Opera, family: { name: Chrome, version: 33 }, version: '20.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 20.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36 OPR/23.0.1522.75' + result: { browser: { name: Opera, family: { name: Chrome, version: 36 }, version: '23.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 23.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2305.3 Safari/537.36 OPR/29.0.1794.0 (Edition developer)' + result: { browser: { name: Opera, family: { name: Chrome, version: 42 }, version: '29.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Opera Developer 29.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.32 Safari/537.36 OPR/16.0.1196.29 (Edition Next)' + result: { browser: { name: Opera, family: { name: Chrome, version: 29 }, version: '16.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera Next 16.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 OPR/18.0.1284.49' + result: { browser: { name: Opera, family: { name: Chrome, version: 31 }, version: '18.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 18.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36 OPR/26.0.1656.32' + result: { browser: { name: Opera, family: { name: Chrome, version: 39 }, version: '26.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 26.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) Presto/2.12.388 Opera/12.16' + result: { browser: { name: Opera, version: '12.16', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 12.16 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36 OPR/25.0.1614.63' + result: { browser: { name: Opera, family: { name: Chrome, version: 38 }, version: '25.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Opera 25.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36 OPR/30.0.1835.140' + result: { browser: { name: Opera, family: { name: Chrome, version: 43 }, version: '30.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Opera 30.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.30 Safari/537.36 OPR/31.0.1889.16 (Edition beta)' + result: { browser: { name: Opera, family: { name: Chrome, version: 44 }, version: '31.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Opera Beta 31.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.29 Safari/537.36 OPR/20.0.1396.70617' + result: { browser: { name: Opera, family: { name: Chrome, version: 33 }, version: '20.0', type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 20.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.44 Safari/537.36 OPR/25.0.1614.11 (Edition beta)' + result: { browser: { name: Opera, family: { name: Chrome, version: 38 }, version: '25.0', type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera Beta 25.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Safari/537.36 OPR/26.0.1656.87215' + result: { browser: { name: Opera, family: { name: Chrome, version: 39 }, version: '26.0', type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 26.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Slackware Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2188.2 Safari/537.36 OPR/27.0.1683.0 (Edition developer)' + result: { browser: { name: Opera, family: { name: Chrome, version: 40 }, version: '27.0', type: browser }, engine: { name: Blink }, os: { name: Slackware }, device: { type: desktop } } + readable: 'Opera Developer 27.0 on Slackware' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 5.0) Opera 12.12' + result: { browser: { name: Opera, version: '12.12', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Opera 12.12 on Windows 2000' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 5.1) Opera 12.14' + result: { browser: { name: Opera, version: '12.14', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 12.14 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1) Opera 12.15' + result: { browser: { name: Opera, version: '12.15', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 12.15 on Windows 7' +- + headers: 'User-Agent: Opera/10.00 (Windows NT 5.1; U; xx)' + result: { browser: { name: Opera, version: '10.00', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 10.00 on Windows XP' +- + headers: 'User-Agent: Opera/10.00 (Windows NT 5.1; U; xx) Presto/2.2.0' + result: { browser: { name: Opera, version: '10.00', type: browser }, engine: { name: Presto, version: 2.2.0 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 10.00 on Windows XP' +- + headers: 'User-Agent: Opera/4.0 (Windows 98;US) [en]' + result: { browser: { name: Opera, version: '4.0', type: browser }, engine: { name: Electra }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Opera 4.0 on Windows 98' +- + headers: 'User-Agent: Opera/4.03 (Windows NT 4.0; U)' + result: { browser: { name: Opera, version: '4.03', type: browser }, engine: { name: Electra }, os: { name: Windows, version: { value: '4.0', alias: 'NT 4.0' } }, device: { type: desktop } } + readable: 'Opera 4.03 on Windows NT 4.0' +- + headers: 'User-Agent: Opera/6.03 (Windows 98; U) [en]' + result: { browser: { name: Opera, version: '6.03', type: browser }, engine: { name: Electra }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Opera 6.03 on Windows 98' +- + headers: 'User-Agent: Opera/8.01 (Windows 98; U; xx)' + result: { browser: { name: Opera, version: '8.01', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Opera 8.01 on Windows 98' +- + headers: 'User-Agent: Opera/8.52 (Windows NT 5.1; U; xx)' + result: { browser: { name: Opera, version: '8.52', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 8.52 on Windows XP' +- + headers: 'User-Agent: Opera/8.54 (Windows 95; U; xx)' + result: { browser: { name: Opera, version: '8.54', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Opera 8.54 on Windows 95' +- + headers: 'User-Agent: Opera/9.00 (Windows 95; U; xx)' + result: { browser: { name: Opera, version: '9.00', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Opera 9.00 on Windows 95' +- + headers: 'User-Agent: Opera/9.00 (Windows NT 4.0; U; xx)' + result: { browser: { name: Opera, version: '9.00', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '4.0', alias: 'NT 4.0' } }, device: { type: desktop } } + readable: 'Opera 9.00 on Windows NT 4.0' +- + headers: 'User-Agent: Opera/9.02 (Windows 98; U; xx)' + result: { browser: { name: Opera, version: '9.02', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Opera 9.02 on Windows 98' +- + headers: 'User-Agent: Opera/9.20 (Windows 98; U; xx)' + result: { browser: { name: Opera, version: '9.20', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Opera 9.20 on Windows 98' +- + headers: 'User-Agent: Opera/9.21 (X11; Linux i686; U; xx)' + result: { browser: { name: Opera, version: '9.21', type: browser }, engine: { name: Presto }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 9.21 on Linux' +- + headers: 'User-Agent: Opera/9.25 (X11; Linux i686; U; xx)' + result: { browser: { name: Opera, version: '9.25', type: browser }, engine: { name: Presto }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 9.25 on Linux' +- + headers: 'User-Agent: Opera/9.26 (Macintosh; Intel Mac OS X; U; xx)' + result: { browser: { name: Opera, version: '9.26', type: browser }, engine: { name: Presto }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 9.26 on OS X' +- + headers: 'User-Agent: Opera/9.26 (Windows 95; U; xx)' + result: { browser: { name: Opera, version: '9.26', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Opera 9.26 on Windows 95' +- + headers: 'User-Agent: Opera/9.27 (X11; Linux i686; U; xx)' + result: { browser: { name: Opera, version: '9.27', type: browser }, engine: { name: Presto }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 9.27 on Linux' +- + headers: 'User-Agent: Opera/9.52 (X11; Linux x86_64; U; xx)' + result: { browser: { name: Opera, version: '9.52', type: browser }, engine: { name: Presto }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 9.52 on Linux' +- + headers: 'User-Agent: Opera/9.63 (Windows NT 5.0; U; xx) Presto/2.1.1' + result: { browser: { name: Opera, version: '9.63', type: browser }, engine: { name: Presto, version: 2.1.1 }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Opera 9.63 on Windows 2000' +- + headers: 'User-Agent: Opera/9.64 (Macintosh; PPC Mac OS X; U; xx) Presto/2.1.1' + result: { browser: { name: Opera, version: '9.64', type: browser }, engine: { name: Presto, version: 2.1.1 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 9.64 on OS X' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; xx) Presto/2.9.219 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.9.219 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 12.00 on Linux' +- + headers: 'User-Agent: Opera/9.80 (Linux i686) Presto/2.12.407 Version/12.50' + result: { browser: { name: Opera, version: '12.50', type: browser }, engine: { name: Presto, version: 2.12.407 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 12.50 on Linux' +- + headers: 'User-Agent: Opera/9.80 (Linux; U) Version/12.17' + result: { browser: { name: Opera, version: '12.17', type: browser }, engine: { name: Presto }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 12.17 on Linux' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.10.5) Presto/2.12.388 Version/12.14' + result: { browser: { name: Opera, version: '12.14', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 12.14 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.5.8; U; Edition Next; xx) Presto/2.10.269 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.10.269 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Next 12.00 on Mac OS X 10.5' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; Edition Labs HTML5 Parser; xx) Presto/2.9.181 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.9.181 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Labs 12.00 on Mac OS X 10.6' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.7.3; U; Edition MacAppStore; xx) Presto/2.9.168 Version/11.51' + result: { browser: { name: Opera, version: '11.51', type: browser }, engine: { name: Presto, version: 2.9.168 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 11.51 on OS X Lion 10.7' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.8.2) Presto/2.12.388 Version/12.15' + result: { browser: { name: Opera, version: '12.15', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 12.15 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.8.2; Edition Next) Presto/2.12.388 Version/12.10' + result: { browser: { name: Opera, version: '12.10', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Next 12.10 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.8.2; Mac App Store Edition) Presto/2.12.388 Version/12.11' + result: { browser: { name: Opera, version: '12.11', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 12.11 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.8.4) Presto/2.12.388 Version/12.12' + result: { browser: { name: Opera, version: '12.12', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 12.12 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.9.2; U; Edition Next; xx) Presto/2.11.310 Version/12.50' + result: { browser: { name: Opera, version: '12.50', type: browser }, engine: { name: Presto, version: 2.11.310 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera Next 12.50 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Opera/9.80 (Macintosh; PPC Mac OS X; U; xx) Presto/2.6.30 Version/10.60' + result: { browser: { name: Opera, version: '10.60', type: browser }, engine: { name: Presto, version: 2.6.30 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 10.60 on OS X' +- + headers: 'User-Agent: Opera/9.80 (Windows 98; U; xx) Presto/2.10.229 Version/11.62' + result: { browser: { name: Opera, version: '11.62', type: browser }, engine: { name: Presto, version: 2.10.229 }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Opera 11.62 on Windows 98' +- + headers: 'User-Agent: Opera/9.80 (Windows ME; U; xx) Presto/2.10.229 Version/11.60' + result: { browser: { name: Opera, version: '11.60', type: browser }, engine: { name: Presto, version: 2.10.229 }, os: { name: Windows, version: { value: '4.9', alias: ME } }, device: { type: desktop } } + readable: 'Opera 11.60 on Windows ME' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.0; U; xx) Presto/2.2.15 Version/10.10' + result: { browser: { name: Opera, version: '10.10', type: browser }, engine: { name: Presto, version: 2.2.15 }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Opera 10.10 on Windows 2000' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.1; Edition IBIS) Presto/2.12.388 Version/12.11' + result: { browser: { name: Opera, version: '12.11', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 12.11 on Windows XP' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.1; Edition Labs ) Presto/2.12.388 Version/12.17' + result: { browser: { name: Opera, version: '12.17', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera Labs 12.17 on Windows XP' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.1; Edition Next) Presto/2.12.370 Version/12.50' + result: { browser: { name: Opera, version: '12.50', type: browser }, engine: { name: Presto, version: 2.12.370 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera Next 12.50 on Windows XP' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.1; U; Edition Next; Edition IBIS; xx) Presto/2.10.238 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.10.238 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera Next 12.00 on Windows XP' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.1; U; Edition Next; xx) Presto/2.11.310 Version/12.50' + result: { browser: { name: Opera, version: '12.50', type: browser }, engine: { name: Presto, version: 2.11.310 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera Next 12.50 on Windows XP' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.1; U; xx) Presto/2.7.62 Version/11.01' + result: { browser: { name: Opera, version: '11.01', type: browser }, engine: { name: Presto, version: 2.7.62 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 11.01 on Windows XP' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.2; U; Edition Labs HTML5 Parser; xx) Presto/2.9.181 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.9.181 }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Opera Labs 12.00 on Windows Server 2003' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.2; U; Edition Next; xx) Presto/2.10.289 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.10.289 }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Opera Next 12.00 on Windows Server 2003' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.2; WOW64; U; Edition Next; xx) Presto/2.10.282 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.10.282 }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Opera Next 12.00 on Windows Server 2003' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.2; WOW64; U; xx) Presto/2.10.289 Version/12.02' + result: { browser: { name: Opera, version: '12.02', type: browser }, engine: { name: Presto, version: 2.10.289 }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Opera 12.02 on Windows Server 2003' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.2; Win64; x64; Edition Next) Presto/2.12.388 Version/12.13' + result: { browser: { name: Opera, version: '12.13', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Opera Next 12.13 on Windows Server 2003' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 5.2; Win64; x64; U; Edition Next; xx) Presto/2.10.289 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.10.289 }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Opera Next 12.00 on Windows Server 2003' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.15' + result: { browser: { name: Opera, version: '12.15', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Opera 12.15 on Windows Vista' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.0; U; IBM EVV/3.0/EAK01AG9/LE; Edition NCSD0; xx) Presto/2.10.229 Version/11.62' + result: { browser: { name: Opera, version: '11.62', type: browser }, engine: { name: Presto, version: 2.10.229 }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Opera 11.62 on Windows Vista' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.0; U; xx) Presto/2.5.24 Version/10.53' + result: { browser: { name: Opera, version: '10.53', type: browser }, engine: { name: Presto, version: 2.5.24 }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Opera 10.53 on Windows Vista' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.0; WOW64; Edition Next) Presto/2.12.388 Version/12.12' + result: { browser: { name: Opera, version: '12.12', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Opera Next 12.12 on Windows Vista' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.0; Win64; x64; U; Edition Next; xx) Presto/2.11.310 Version/12.50' + result: { browser: { name: Opera, version: '12.50', type: browser }, engine: { name: Presto, version: 2.11.310 }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Opera Next 12.50 on Windows Vista' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.1; U; Edition Labs HTML5 Parser; xx) Presto/2.9.181 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.9.181 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera Labs 12.00 on Windows 7' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.1; U; xx) Presto/2.6.31 Version/10.70' + result: { browser: { name: Opera, version: '10.70', type: browser }, engine: { name: Presto, version: 2.6.31 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 10.70 on Windows 7' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.1; U;) Presto/2.10.229 Version/11.61' + result: { browser: { name: Opera, version: '11.61', type: browser }, engine: { name: Presto, version: 2.10.229 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 11.61 on Windows 7' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; Edition Labs ) Presto/2.12.388 Version/12.15' + result: { browser: { name: Opera, version: '12.15', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera Labs 12.15 on Windows 7' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.1; Win64; x64; U; xx)' + result: { browser: { name: Opera, version: '9.80', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 9.80 on Windows 7' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.2) Presto/2.12.388 Version/12.10' + result: { browser: { name: Opera, version: '12.10', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Opera 12.10 on Windows 8' +- + headers: 'User-Agent: Opera/9.80 (Windows) Version/12.02' + result: { browser: { name: Opera, version: '12.02', type: browser }, engine: { name: Presto }, os: { name: Windows }, device: { type: desktop } } + readable: 'Opera 12.02 on Windows' +- + headers: 'User-Agent: Opera/9.80 (Windows) Version/12.10' + result: { browser: { name: Opera, version: '12.10', type: browser }, engine: { name: Presto }, os: { name: Windows }, device: { type: desktop } } + readable: 'Opera 12.10 on Windows' +- + headers: 'User-Agent: Opera/9.80 (X11; FreeBSD 8.4-RELEASE-p1 i386) Presto/2.12.388 Version/12.16' + result: { browser: { name: Opera, version: '12.16', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: FreeBSD, family: BSD, version: '8.4' }, device: { type: desktop } } + readable: 'Opera 12.16 on FreeBSD 8.4' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux i686; U; Edition Labs Camera and Pages; xx) Presto/2.9.220 Version/12.00' + result: { browser: { name: Opera, version: '12.00', type: browser }, engine: { name: Presto, version: 2.9.220 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera Labs 12.00 on Linux' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux i686; U; xx) Presto/2.6.30 Version/10.60' + result: { browser: { name: Opera, version: '10.60', type: browser }, engine: { name: Presto, version: 2.6.30 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 10.60 on Linux' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16' + result: { browser: { name: Opera, version: '12.16', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 12.16 on Linux' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux x86_64; U; xx) Presto/2.6.30 Version/10.63' + result: { browser: { name: Opera, version: '10.63', type: browser }, engine: { name: Presto, version: 2.6.30 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 10.63 on Linux' +- + headers: 'User-Agent: Opera/9.80 (X11; SunOS i86pc; U; xx) Presto/2.2.15 Version/10.11' + result: { browser: { name: Opera, version: '10.11', type: browser }, engine: { name: Presto, version: 2.2.15 }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'Opera 10.11 on Solaris' +- + headers: 'User-Agent: Opera/9.0 (Macintosh; U; PPC Mac OS; de)' + result: { browser: { name: Opera, version: '9.0', type: browser }, engine: { name: Presto }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 9.0 on Mac OS' +- + headers: 'User-Agent: Opera/6.0 (Macintosh; PPC; U) [en]' + result: { browser: { name: Opera, version: '6.0', type: browser }, engine: { name: Electra }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 6.0 on Mac OS' +- + headers: 'User-Agent: Opera/5.0 (Macintosh;US;PPC) TP [en]' + result: { browser: { name: Opera, version: '5.0', type: browser }, engine: { name: Electra }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 5.0 on Mac OS' +- + headers: 'User-Agent: Opera/5.0 (Macintosh;US;PPC) [en]' + result: { browser: { name: Opera, version: '5.0', type: browser }, engine: { name: Electra }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Opera 5.0 on Mac OS' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.16' + useragent: 'Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.16' + engine: 2 + features: 94 + result: { browser: { name: Opera, version: '12.16', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Opera 12.16 on Windows 8' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-other.yaml new file mode 100644 index 0000000..16a3242 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-other.yaml @@ -0,0 +1,160 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; Avant Browser; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CPDTDF; Avant Browser)' + result: { browser: { name: 'Avant Browser', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop, manufacturer: Compaq } } + readable: 'Avant Browser on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; Avant Browser)' + result: { browser: { name: 'Avant Browser', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Avant Browser on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.2; Trident/5.0; SlimBrowser)' + result: { browser: { name: SlimBrowser, type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'SlimBrowser on Windows 8' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; SlimBrowser/7.00.061)' + result: { browser: { name: SlimBrowser, version: 7.00.061, type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'SlimBrowser 7.00.061 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; BTRS122335; 126BROWSER; .NET CLR 2.0.50727)' + result: { browser: { name: '126 Browser', type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: '126 Browser on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; TheWorld)' + result: { browser: { name: 'The World', type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'The World on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; Shuame; TheWorld 6)' + result: { browser: { name: 'The World', version: '6', type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'The World 6 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TheWorld)' + result: { browser: { name: 'The World', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'The World on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (N; Windows NT 5.1) AppleWebKit/534.34 (KHTML, like Gecko) Raptr Safari/534.34' + result: { browser: { name: Raptr, type: 'app:game' }, engine: { name: Webkit, version: '534.34' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Raptr on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (N; Windows NT 6.2; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) Raptr Safari/534.34' + result: { browser: { name: Raptr, type: 'app:game' }, engine: { name: Webkit, version: '534.34' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Raptr on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PPC Mac OS X 10.4; rv:10.0.10) Gecko/20121024 Firefox/10.0.10 TenFourFox/7450' + result: { browser: { name: TenFourFox, family: { name: Firefox, version: 10.0.10 }, type: browser }, engine: { name: Gecko, version: 10.0.10 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'TenFourFox on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PPC Mac OS X 10.5; rv:5.0) Gecko/20110616 Firefox/5.0 TenFourFox/G5' + result: { browser: { name: TenFourFox, family: { name: Firefox, version: '5.0' }, type: browser }, engine: { name: Gecko, version: '5.0' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'TenFourFox on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PPC Mac OS X 10.5; rv:38.0) Gecko/20100101 Firefox/38.0 TenFourFox/7400' + result: { browser: { name: TenFourFox, family: { name: Firefox, version: '38.0' }, type: browser }, engine: { name: Gecko, version: '38.0' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'TenFourFox on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 7Star/1.45.0.407 Safari/537.36' + result: { browser: { name: 7Star, family: { name: Chrome, version: 45 }, version: 1.45.0.407, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: '7Star 1.45.0.407 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Iridium/43.8 Safari/537.36 Chrome/43.0.2357.132' + result: { browser: { name: Iridium, family: { name: Chrome, version: 43 }, version: '43.8', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Iridium 43.8 on OS X El Capitan 10.11' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Iridium/41.2 Safari/537.36 Chrome/41.0.2272.118' + result: { browser: { name: Iridium, family: { name: Chrome, version: 41 }, version: '41.2', type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Iridium 41.2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 2345Explorer/6.1.0.8495' + result: { browser: { name: '2345 Explorer', family: { name: Chrome, version: 39 }, version: 6.1.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: '2345 Explorer 6.1.0 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.69 Safari/537.36 2345chrome v2.5.0.4435' + result: { browser: { name: '2345 Chrome', family: { name: Chrome, version: 31 }, version: 2.5.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: '2345 Chrome 2.5.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 2345Explorer v6.0.0.7505' + result: { browser: { name: '2345 Explorer', family: { name: Chrome, version: 39 }, version: 6.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: '2345 Explorer 6.0.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 2345chrome v3.0.0.6668' + result: { browser: { name: '2345 Chrome', family: { name: Chrome, version: 39 }, version: 3.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: '2345 Chrome 3.0.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 Swing/2.4.2.0' + result: { browser: { name: 'Swing Browser', family: { name: Chrome, version: 35 }, version: 2.4.2, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Swing Browser 2.4.2 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 Swing/2.5.0.3' + result: { browser: { name: 'Swing Browser', family: { name: Chrome, version: 35 }, version: 2.5.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Swing Browser 2.5.0 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22 Swing/1.0.0.40' + result: { browser: { name: 'Swing Browser', family: { name: Chrome, version: 25 }, version: 1.0.0, type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Swing Browser 1.0.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22 Swing/1.1.2.0' + result: { browser: { name: 'Swing Browser', family: { name: Chrome, version: 25 }, version: 1.1.2, type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Swing Browser 1.1.2 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22 Swing/1.3.2.0' + result: { browser: { name: 'Swing Browser', family: { name: Chrome, version: 25 }, version: 1.3.2, type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Swing Browser 1.3.2 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 Swing/2.4.2.0' + result: { browser: { name: 'Swing Browser', family: { name: Chrome, version: 35 }, version: 2.4.2, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Swing Browser 2.4.2 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24 Swing(And)/1.10.5.0' + result: { browser: { name: 'Swing Browser', family: { name: Chrome, version: 11 }, version: 1.10.5, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Swing Browser 1.10.5 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Otter/0.9.08' + result: { browser: { name: Otter, family: { name: Chrome, version: 40 }, version: 0.9.08, type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Otter 0.9.08 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Otter/0.9.07' + result: { browser: { name: Otter, family: { name: Chrome, version: 40 }, version: 0.9.07, type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Otter 0.9.07 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36 TungstenBrowser/2.0' + result: { browser: { name: 'Tungsten Browser', family: { name: Chrome, version: 44 }, version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Tungsten Browser 2.0 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Beamrise/29.3.0.6900 Safari/537.36' + result: { browser: { name: Beamrise, family: { name: Chrome, version: 29 }, version: 29.3.0.6900, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Beamrise 29.3.0.6900 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 115Browser/5.1.6' + result: { browser: { name: '115 Browser', family: { name: Chrome, version: 31 }, version: 5.1.6, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: '115 Browser 5.1.6 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 115Browser/5.2.2' + result: { browser: { name: '115 Browser', family: { name: Chrome, version: 31 }, version: 5.2.2, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: '115 Browser 5.2.2 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1 115Chrome/1.0.3' + result: { browser: { name: '115 Chrome', family: { name: Chrome, version: 21 }, version: 1.0.3, type: browser }, engine: { name: Webkit, version: '537.1' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: '115 Chrome 1.0.3 on Windows 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; Acoo Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727); Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)' + readable: 'Acoo Browser on Windows XP' + result: { browser: { name: 'Acoo Browser', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/4.5 (compatible; iCab 2.7.1; Macintosh; I; PPC)' + readable: 'iCab 2.7.1 on Mac OS' + result: { browser: { name: iCab, version: 2.7.1, type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.5 (compatible; iCab 2.9.8; Macintosh; U; PPC)' + readable: 'iCab 2.9.8 on Mac OS' + result: { browser: { name: iCab, version: 2.9.8, type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4.5 (compatible; iCab Pre2.3; Macintosh; I; PPC)' + readable: 'iCab 2.3 on Mac OS' + result: { browser: { name: iCab, version: '2.3', type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/4/5 (compatible; iCab 2.9.8; Macintosh; U; 68K)' + readable: 'iCab 2.9.8 on Mac OS' + result: { browser: { name: iCab, version: 2.9.8, type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; iCab 3.0.3; Macintosh; U; PPC Mac OS)' + readable: 'iCab 3.0.3 on Mac OS' + result: { browser: { name: iCab, version: 3.0.3, type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-qq.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-qq.yaml new file mode 100644 index 0000000..b775cd7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-qq.yaml @@ -0,0 +1,68 @@ +- + headers: 'User-Agent: AppleWebKit/532.7 (KHTML, like Gecko) Chrome/4.0.271.1 Safari/532.7 TencentTraveler/5.0 QQBrowser/5.0.6642.400 (webkit)' + result: { browser: { name: 'QQ Browser', family: { name: Chrome, version: 4 }, version: '5.0', type: browser }, engine: { name: Webkit, version: '532.7' }, os: { name: Windows }, device: { type: desktop } } + readable: 'QQ Browser 5.0 on Windows' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; ; QDesk 2.3.1183.202; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0) QQBrowser/6.11.11981.201' + result: { browser: { name: 'QQ Browser', version: '6.11', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'QQ Browser 6.11 on Windows 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QQDownload 691; SV1) QQBrowser/6.11.12388.201' + result: { browser: { name: 'QQ Browser', version: '6.11', type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'QQ Browser 6.11 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET4.0C; .NET4.0E; QQBrowser/7.7.25715.400)' + result: { browser: { name: 'QQ Browser', version: '7.7', type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'QQ Browser 7.7 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQBrowser/7.6.19177.400)' + result: { browser: { name: 'QQ Browser', version: '7.6', type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'QQ Browser 7.6 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Tablet PC 2.0; .NET CLR 1.1.4322; InfoPath.3; BOIE9;ZHCN) QQBrowser/6.13.13461.201' + result: { browser: { name: 'QQ Browser', version: '6.13', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'QQ Browser 6.13 on Windows 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) QQBrowser/6.11.12388.201' + result: { browser: { name: 'QQ Browser', version: '6.11', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'QQ Browser 6.11 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; QQBrowser/7.7.28658.400)' + result: { browser: { name: 'QQ Browser', version: '7.7', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'QQ Browser 7.7 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; QQBrowser/7.4.15649.400)' + result: { browser: { name: 'QQ Browser', version: '7.4', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'QQ Browser 7.4 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; QQBrowser/8.0.1374.400)' + result: { browser: { name: 'QQ Browser', version: '8.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'QQ Browser 8.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 QQBrowser/3.9.3952.400' + result: { browser: { name: 'QQ Browser', family: { name: Chrome, version: 45 }, version: '3.9', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'QQ Browser 3.9 on OS X El Capitan 10.11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 QQBrowser/1.4.0.2117 Safari/535.11' + result: { browser: { name: 'QQ Browser', family: { name: Chrome, version: 17 }, version: '1.4', type: browser }, engine: { name: Webkit, version: '535.11' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'QQ Browser 1.4 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.87 Safari/537.36 QQBrowser/9.2.5006.400' + result: { browser: { name: 'QQ Browser', family: { name: Chrome, version: 45 }, version: '9.2', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'QQ Browser 9.2 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 4.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.15 Safari/535.11 QQBrowser/6.12.12934.201' + result: { browser: { name: 'QQ Browser', family: { name: Chrome, version: 17 }, version: '6.12', type: browser }, engine: { name: Webkit, version: '535.11' }, os: { name: Windows, version: { value: '4.0', alias: 'NT 4.0' } }, device: { type: desktop } } + readable: 'QQ Browser 6.12 on Windows NT 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 4.10) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.15 Safari/535.11 QQBrowser/6.11.12135.201' + result: { browser: { name: 'QQ Browser', family: { name: Chrome, version: 17 }, version: '6.11', type: browser }, engine: { name: Webkit, version: '535.11' }, os: { name: Windows, version: { value: '4.1', alias: 'NT 4.1' } }, device: { type: desktop } } + readable: 'QQ Browser 6.11 on Windows NT 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1 QQBrowser/6.10.11509.201' + result: { browser: { name: 'QQ Browser', family: { name: Chrome, version: 13 }, version: '6.10', type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'QQ Browser 6.10 on Windows 2000' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 5.1; Trident/6.0; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET CLR 1.0.3705; .NET CLR 3.0.04320; .NET4.0E; QQBrowser/7.0.3698.400)' + result: { browser: { name: 'QQ Browser', version: '7.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'QQ Browser 7.0 on Windows XP' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-safari.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-safari.yaml new file mode 100644 index 0000000..f9fdff2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-safari.yaml @@ -0,0 +1,220 @@ +- + headers: 'User-Agent: Apple-PubSub/65.28' + result: { browser: { name: 'Safari RSS', type: 'app:feedreader' }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari RSS on OS X' +- + headers: 'User-Agent: AppleSyndication/56.1' + result: { browser: { name: 'Safari RSS', type: 'app:feedreader' }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari RSS on OS X' +- + headers: 'User-Agent: CFNetwork/0.0.0 Darwin/0.0.0 (x86_64)' + result: { os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'OS X' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/538.34.43 (KHTML, like Gecko) Version/8.0 Safari/538.35.3' + result: { browser: { name: Safari, version: '8.0', type: browser }, engine: { name: Webkit, version: 538.34.43 }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 8.0 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/601.1.11+ (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: 601.1.11 }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.13 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.13' + result: { browser: { name: Safari, version: 8.0.3, type: browser }, engine: { name: Webkit, version: 600.3.13 }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 8.0.3 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.7.9 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.9' + result: { browser: { name: Safari, version: 8.0.7, type: browser }, engine: { name: Webkit, version: 600.7.9 }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 8.0.7 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.34 (KHTML, like Gecko) Version/9.0 Safari/601.1.34' + result: { browser: { name: Safari, version: '9.0', type: browser }, engine: { name: Webkit, version: 601.1.34 }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 9.0 on OS X El Capitan 10.11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7' + result: { browser: { name: Safari, version: 9.0.1, type: browser }, engine: { name: Webkit, version: 601.2.7 }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 9.0.1 on OS X El Capitan 10.11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/602.1.12+ (KHTML, like Gecko) Version/9.0.2 Safari/601.3.6' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: 602.1.12 }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on OS X El Capitan 10.11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/524.26.2 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4' + result: { browser: { name: Safari, version: 5.0.3, type: browser }, engine: { name: Webkit, version: 524.26.2 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.0.3 on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/524.50.2 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: 524.50.2 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 4.0.5 on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.4+ (KHTML, like Gecko) Version/5.0.6 Safari/533.22.3' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: '535.4' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_2; xx) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0.3 Safari/533.16' + result: { browser: { name: Safari, version: 5.0.3, type: browser }, engine: { name: Webkit, version: '533.16' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.0.3 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_4) AppleWebKit/537.73.11 (KHTML, like Gecko) Version/6.1 Safari/537.73.11' + result: { browser: { name: Safari, version: '6.1', type: browser }, engine: { name: Webkit, version: 537.73.11 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 6.1 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.14 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1' + result: { browser: { name: Safari, version: 5.0.5, type: browser }, engine: { name: Webkit, version: '535.14' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.0.5 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.22+ (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: '535.22' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3' + result: { browser: { name: Safari, version: 5.1.5, type: browser }, engine: { name: Webkit, version: 534.55.3 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.1.5 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.3+ (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: '536.3' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.7' + result: { browser: { name: Safari, version: 5.1.7, type: browser }, engine: { name: Webkit, version: 534.48.3 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.1.7 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22' + result: { browser: { name: Safari, version: 5.1.1, type: browser }, engine: { name: Webkit, version: 534.52.7 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.1.1 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10' + result: { browser: { name: Safari, version: 5.1.3, type: browser }, engine: { name: Webkit, version: 534.53.11 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.1.3 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/534.57.7 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4' + result: { browser: { name: Safari, version: 5.0.3, type: browser }, engine: { name: Webkit, version: 534.57.7 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.0.3 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/538.2+ (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: '538.2' }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8) AppleWebKit/537.19+ (KHTML, like Gecko) Version/6.0 Safari/536.25' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: '537.19' }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8) AppleWebKit/537.19.1 (KHTML, like Gecko) Version/6.1 Safari/537.19.1' + result: { browser: { name: Safari, version: '6.1', type: browser }, engine: { name: Webkit, version: 537.19.1 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 6.1 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2' + result: { browser: { name: Safari, version: 5.1.7, type: browser }, engine: { name: Webkit, version: 536.26.14 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.1.7 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.47+ (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: '537.47' }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.6 (KHTML, like Gecko) Version/6.0.3 Safari/536.28.6' + result: { browser: { name: Safari, version: 6.0.3, type: browser }, engine: { name: Webkit, version: 536.28.6 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 6.0.3 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.26.4 (KHTML, like Gecko) Version/6.1 Safari/537.26.4' + result: { browser: { name: Safari, version: '6.1', type: browser }, engine: { name: Webkit, version: 537.26.4 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 6.1 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.46.5 (KHTML, like Gecko) Version/7.0 Safari/537.46.5' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.46.5 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 7.0 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10' + result: { browser: { name: Safari, version: '7.1', type: browser }, engine: { name: Webkit, version: 600.1.17 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 7.1 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/538.5+ (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: '538.5' }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.36' + result: { browser: { name: Safari, version: '7.1', type: browser }, engine: { name: Webkit, version: 600.1.17 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 7.1 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PPC Mac OS X 10_5_8) AppleWebKit/535.1 (KHTML, like Gecko) Version/5.0.6 Safari/533.22.2' + result: { browser: { name: Safari, version: 5.0.6, type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.0.6 on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PPC Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10' + result: { browser: { name: Safari, version: 5.1.3, type: browser }, engine: { name: Webkit, version: 534.55.3 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 5.1.3 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PPC Mac OS X 10_7_3) AppleWebKit/600.55.3 (KHTML, like Gecko) Version/6.1.3 Safari/600.53.10' + result: { browser: { name: Safari, version: 6.1.3, type: browser }, engine: { name: Webkit, version: 600.55.3 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 6.1.3 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PPC Mac OS X 10_7_5) AppleWebKit/536.29.13 (KHTML, like Gecko) Version/6.0.4 Safari/536.29.13' + result: { browser: { name: Safari, version: 6.0.4, type: browser }, engine: { name: Webkit, version: 536.29.13 }, os: { name: 'OS X', version: { value: '10.7', nickname: Lion } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 6.0.4 on OS X Lion 10.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; xx) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13' + result: { browser: { name: Safari, version: '3.1', type: browser }, engine: { name: Webkit, version: '525.13' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 3.1 on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; xx) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22' + result: { browser: { name: Safari, version: 3.1.2, type: browser }, engine: { name: Webkit, version: '525.18' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 3.1.2 on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; xx) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 4.0 on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; xx) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16' + result: { browser: { name: Safari, version: '4.1', type: browser }, engine: { name: Webkit, version: '533.16' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 4.1 on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; xx) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: '525.18' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 3.1.1 on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; xx) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.22' + result: { browser: { name: Safari, version: 3.1.2, type: browser }, engine: { name: Webkit, version: '525.18' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 3.1.2 on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; xx) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3' + result: { browser: { name: Safari, version: 3.2.3, type: browser }, engine: { name: Webkit, version: 525.27.1 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 3.2.3 on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; xx) AppleWebKit/533.21.1+ (KHTML, like Gecko) Version/4.1.3 Safari/533.21.1' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: 533.21.1 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; xx) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9' + result: { browser: { name: 'WebKit Nightly Build', type: browser }, engine: { name: Webkit, version: '532.0' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'WebKit Nightly Build on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WKC) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.50' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Safari 5.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WKC) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7' + result: { browser: { name: Safari, version: 5.1.2, type: browser }, engine: { name: Webkit, version: 534.52.7 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Safari 5.1.2 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.50' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Safari 5.1 on Windows 7' +- + headers: 'User-Agent: Safari/10600.2.5 CFNetwork/720.1.1 Darwin/14.0.0 (x86_64)' + result: { browser: { name: Safari, type: browser }, os: { name: 'OS X', version: { value: 10.10.1, nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari on OS X Yosemite 10.10.1' +- + headers: 'User-Agent: Safari/9537.73.11 CFNetwork/673.0.3 Darwin/13.0.0 (x86_64) (MacBookAir6%2C2)' + result: { browser: { name: Safari, type: browser }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari on OS X Mavericks 10.9' +- + headers: 'User-Agent: com.apple.WebKit.WebContent/10600.1.25 CFNetwork/720.0.9 Darwin/14.0.0 (x86_64)' + result: { os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12) AppleWebKit/602.1.32 (KHTML, like Gecko) Version/10.0 Safari/602.1.32' + readable: 'Safari 10.0 on macOS Sierra 10.12' + result: { browser: { name: Safari, version: '10.0', type: browser }, engine: { name: Webkit, version: 602.1.32 }, os: { name: 'OS X', alias: macOS, version: { value: '10.12', nickname: Sierra } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13) AppleWebKit/603.1.13 (KHTML, like Gecko) Version/10.1 Safari/603.1.13' + readable: 'Safari 10.1 on macOS High Sierra 10.13' + result: { browser: { name: Safari, version: '10.1', type: browser }, engine: { name: Webkit, version: 603.1.13 }, os: { name: 'OS X', alias: macOS, version: { value: '10.13', nickname: 'High Sierra' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-seamonkey.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-seamonkey.yaml new file mode 100644 index 0000000..b3f4732 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-seamonkey.yaml @@ -0,0 +1,88 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:18.0) Gecko/20100101 Firefox/18.0 SeaMonkey/2.15.2' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '18.0' }, version: 2.15.2, type: browser }, engine: { name: Gecko, version: '18.0' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'SeaMonkey 2.15.2 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:19.0) Gecko/19.0 SeaMonkey/2.16a1' + result: { browser: { name: SeaMonkey, version: 2.16a1, type: browser }, engine: { name: Gecko, version: '19.0' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'SeaMonkey 2.16a1 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20110608 Firefox/4.0.1 SeaMonkey/2.1' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: 4.0.1 }, version: '2.1', type: browser }, engine: { name: Gecko, version: 2.0.1 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'SeaMonkey 2.1 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PPC Mac OS X 10.5; rv:16.0) Gecko/20121012 SeaMonkey/2.13' + result: { browser: { name: SeaMonkey, version: '2.13', type: browser }, engine: { name: Gecko, version: '16.0' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'SeaMonkey 2.13 on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; xx; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12' + result: { browser: { name: SeaMonkey, version: 1.1.12, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'SeaMonkey 1.1.12 on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; de; rv:1.8.1.11) Gecko/20071129 PmWFx/2.0.0.11' + result: { browser: { name: SeaMonkey, version: 2.0.0.11, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'SeaMonkey 2.0.0.11 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.12) Gecko/20130108 Firefox/10.0.12 SeaMonkey/2.7.2' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: 10.0.12 }, version: 2.7.2, type: browser }, engine: { name: Gecko, version: 10.0.12 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'SeaMonkey 2.7.2 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20140621 Firefox/17.0 SeaMonkey/2.14' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '17.0' }, version: '2.14', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'SeaMonkey 2.14 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120422 SeaMonkey/2.9' + result: { browser: { name: SeaMonkey, version: '2.9', type: browser }, engine: { name: Gecko, version: '12.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'SeaMonkey 2.9 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0 SeaMonkey/2.16' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '19.0' }, version: '2.16', type: browser }, engine: { name: Gecko, version: '19.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'SeaMonkey 2.16 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20.0 SeaMonkey/2.17a1' + result: { browser: { name: SeaMonkey, version: 2.17a1, type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'SeaMonkey 2.17a1 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:28.0) Gecko/20100101 SeaMonkey/2.25' + result: { browser: { name: SeaMonkey, version: '2.25', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'SeaMonkey 2.25 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20120125 SeaMonkey/2.7' + result: { browser: { name: SeaMonkey, version: '2.7', type: browser }, engine: { name: Gecko, version: '10.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'SeaMonkey 2.7 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:26.0) Gecko/20100101 Firefox/26.0 SeaMonkey/2.23' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '26.0' }, version: '2.23', type: browser }, engine: { name: Gecko, version: '26.0' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'SeaMonkey 2.23 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20100101 SeaMonkey/2.14.1' + result: { browser: { name: SeaMonkey, version: 2.14.1, type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'SeaMonkey 2.14.1 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/19.0 Firefox/19.0 SeaMonkey/2.16a1' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '19.0' }, version: 2.16a1, type: browser }, engine: { name: Gecko, version: '19.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'SeaMonkey 2.16a1 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '7.0' }, version: '2.4', type: browser }, engine: { name: Gecko, version: '7.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'SeaMonkey 2.4 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD amd64; rv:33.0) Gecko/20100101 Firefox/33.0 SeaMonkey/2.30' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '33.0' }, version: '2.30', type: browser }, engine: { name: Gecko, version: '33.0' }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'SeaMonkey 2.30 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; IRIX64 IP35; xx; rv:1.8.1.25pre) Gecko/20121113 SeaMonkey/1.1.20pre' + result: { browser: { name: SeaMonkey, version: 1.1.20, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: IRIX, family: UNIX }, device: { type: desktop } } + readable: 'SeaMonkey 1.1.20 on IRIX' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.8.0.12) Gecko/20070531 CentOS/1.0.9-0.1.el3.centos3 SeaMonkey/1.0.9' + result: { browser: { name: SeaMonkey, version: 1.0.9, type: browser }, engine: { name: Gecko, version: 1.8.0 }, os: { name: CentOS, version: '3' }, device: { type: desktop } } + readable: 'SeaMonkey 1.0.9 on CentOS 3' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.8.1.21) Gecko/20090303 SeaMonkey/1.1.15 (Ubuntu-1.1.15+nobinonly-0ubuntu2)' + result: { browser: { name: SeaMonkey, version: 1.1.15, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'SeaMonkey 1.1.15 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC; ja-JP; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1' + result: { browser: { name: SeaMonkey, version: '1.1', type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'SeaMonkey 1.1 on Mac OS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-text.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-text.yaml new file mode 100644 index 0000000..ded7085 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-text.yaml @@ -0,0 +1,48 @@ +- + headers: 'User-Agent: ELinks (0.11.3; Linux 2.6.23-gentoo-r5 i686; 209x77)' + result: { browser: { name: ELinks, version: 0.11.3, type: 'browser:text' }, os: { name: Linux }, device: { type: desktop } } + readable: 'ELinks 0.11.3 on Linux' +- + headers: 'User-Agent: Elinks (0.3.2; Linux 2.4.21 i686)' + result: { browser: { name: ELinks, version: 0.3.2, type: 'browser:text' }, os: { name: Linux }, device: { type: desktop } } + readable: 'ELinks 0.3.2 on Linux' +- + headers: 'User-Agent: Elinks (0.3; FreeBSD 4.3-RELEASE i386)' + result: { browser: { name: ELinks, version: '0.3', type: 'browser:text' }, os: { name: FreeBSD, family: BSD, version: '4.3' }, device: { type: desktop } } + readable: 'ELinks 0.3 on FreeBSD 4.3' +- + headers: 'User-Agent: ELinks (0.4.3rc2; Linux 2.4.22 i686; 110x40)' + result: { browser: { name: ELinks, version: 0.4.3, type: 'browser:text' }, os: { name: Linux }, device: { type: desktop } } + readable: 'ELinks 0.4.3 on Linux' +- + headers: 'User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.14 i686; 110x48-2)' + result: { browser: { name: ELinks, version: 0.10.4, type: 'browser:text' }, os: { name: Linux }, device: { type: desktop } } + readable: 'ELinks 0.10.4 on Linux' +- + headers: 'User-Agent: ELinks/0.9.1 (textmode; Linux; 127x48)' + result: { browser: { name: ELinks, version: 0.9.1, type: 'browser:text' }, os: { name: Linux }, device: { type: desktop } } + readable: 'ELinks 0.9.1 on Linux' +- + headers: 'User-Agent: Emacs-w3m/1.3.3 w3m/0.3.1' + result: { browser: { name: w3m, version: 1.3.3, type: 'browser:text' } } + readable: 'w3m 1.3.3' +- + headers: 'User-Agent: Emacs-w3m/1.4.4 w3m/0.5.1' + result: { browser: { name: w3m, version: 1.4.4, type: 'browser:text' } } + readable: 'w3m 1.4.4' +- + headers: 'User-Agent: Emacs-w3m/1.4.77 w3m/0.5' + result: { browser: { name: w3m, version: 1.4.77, type: 'browser:text' } } + readable: 'w3m 1.4.77' +- + headers: 'User-Agent: CERN-LineMode/2.12' + result: { browser: { name: 'CERN LineMode', version: '2.12', type: 'browser:text' } } + readable: 'CERN LineMode 2.12' +- + headers: 'User-Agent: CERN-LineMode/2.14' + result: { browser: { name: 'CERN LineMode', version: '2.14', type: 'browser:text' } } + readable: 'CERN LineMode 2.14' +- + headers: 'User-Agent: CERN-LineMode/3.0' + result: { browser: { name: 'CERN LineMode', version: '3.0', type: 'browser:text' } } + readable: 'CERN LineMode 3.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-uc.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-uc.yaml new file mode 100644 index 0000000..5496f38 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/browser-uc.yaml @@ -0,0 +1,101 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36' + useragent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 UBrowser/5.5.9936.1231 Safari/537.36' + result: { browser: { name: 'UC Browser', version: '5.5', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'UC Browser 5.5 on Windows 10' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Sicent; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; UBrowser/3.0.1806.0)' + result: { browser: { name: 'UC Browser', version: '3.0', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'UC Browser 3.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3 UBrowser/1.0.226.1028)' + result: { browser: { name: 'UC Browser', version: '1.0', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 1.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 UBrowser/2.0.1144.0 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 35 }, version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'UC Browser 2.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 UBrowser/5.4.4237.1032 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 44 }, version: '5.4', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'UC Browser 5.4 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 UBrowser/5.5.7045.1004 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 44 }, version: '5.5', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'UC Browser 5.5 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.4627.3 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 38 }, version: '4.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'UC Browser 4.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 UBrowser/5.0.389.22 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 41 }, version: '5.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 5.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0 UBrowser/1.0.342.1224) like Gecko' + result: { browser: { name: 'UC Browser', version: '1.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 1.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0; UBrowser/2.0.754.0) like Gecko' + result: { browser: { name: 'UC Browser', version: '2.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 2.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0; UBrowser/3.0.947.1) like Gecko' + result: { browser: { name: 'UC Browser', version: '3.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 3.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0; UBrowser/5.1.2238.18) like Gecko' + result: { browser: { name: 'UC Browser', version: '5.1', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 5.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.898.0 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 32 }, version: '1.0', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 1.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.30 UBrowser/5.2.3129.0 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 44 }, version: '5.2', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 5.2 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 UBrowser/3.1.1644.34 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 35 }, version: '3.1', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'UC Browser 3.1 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.1.4627.19 Safari/537.36' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 38 }, version: '4.1', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'UC Browser 4.1 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0; UBrowser/5.0.966.1045) like Gecko' + result: { browser: { name: 'UC Browser', version: '5.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'UC Browser 5.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0; UBrowser/5.4.4799.303) like Gecko' + result: { browser: { name: 'UC Browser', version: '5.4', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'UC Browser 5.4 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; UBrowser/3.2.2937.4)' + result: { browser: { name: 'UC Browser', version: '3.2', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'UC Browser 3.2 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.3; WOW64; Trident/8.0; UBrowser/5.0.389.27)' + result: { browser: { name: 'UC Browser', version: '5.0', type: browser }, engine: { name: Trident, version: '8.0' }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'UC Browser 5.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0 UBrowser/1.0.370.1388)' + result: { browser: { name: 'UC Browser', version: '1.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 1.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) UBrowser/1.0.44.100' + result: { browser: { name: 'UC Browser', version: '1.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'UC Browser 1.0 on Windows 7' +- + headers: 'User-Agent: UCWEB/8.8 (iPhone; CPU OS_6; en-US)AppleWebKit/534.1 U3/3.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Webkit, version: '534.1' }, os: { name: iOS, version: '6' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'UC Browser 8.8 on an Apple iPhone running iOS 6' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 2.2.2; zh-CN; HTC HD7 LTE 4G+ For AT&T) U2/1.0.0 UCBrowser/9.5.1.381 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'UC Browser 9.5 on a HTC HD7 running Android 2.2.2' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 2.1-update1; xx; E15a) U2/1.0.0 UCBrowser/9.3.1.344 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Gecko }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X8' } } + readable: 'UC Browser 9.3 on a Sony Ericsson Xperia X8 running Android 2.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/engine-goanna.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/engine-goanna.yaml new file mode 100644 index 0000000..43e9188 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/engine-goanna.yaml @@ -0,0 +1,28 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:38.9) Gecko/20100101 Goanna/2.0 Firefox/38.9 PaleMoon/26.0.0b4' + result: { browser: { name: 'Pale Moon', family: { name: Firefox, version: '38.9' }, version: 26.0.0, type: browser }, engine: { name: Goanna, version: '2.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Pale Moon 26.0.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0) Gecko/20100101 Goanna/20151214 PaleMoon/26.0.0b4' + result: { browser: { name: 'Pale Moon', version: 26.0.0, type: browser }, engine: { name: Goanna, version: '2.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Pale Moon 26.0.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:1.0) Goanna/20150828 Gecko/20100101 PaleMoon/26.0.0b2' + result: { browser: { name: 'Pale Moon', version: 26.0.0, type: browser }, engine: { name: Goanna, version: '1.0' }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Pale Moon 26.0.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:1.0) Goanna/20150819 Gecko/20100101 Firefox/31.9 PaleMoon/26.0.0b1' + result: { browser: { name: 'Pale Moon', family: { name: Firefox, version: '31.9' }, version: 26.0.0, type: browser }, engine: { name: Goanna, version: '1.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Pale Moon 26.0.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:1.0) Goanna/20150804 Firefox/31.9 PaleMoon/26.0.0b1' + result: { browser: { name: 'Pale Moon', family: { name: Firefox, version: '31.9' }, version: 26.0.0, type: browser }, engine: { name: Goanna, version: '1.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Pale Moon 26.0.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:38.9) Gecko/20100101 Goanna/2.0 Firefox/38.9 PaleMoon/26.0.0' + result: { browser: { name: 'Pale Moon', family: { name: Firefox, version: '38.9' }, version: 26.0.0, type: browser }, engine: { name: Goanna, version: '2.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Pale Moon 26.0.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:2.0) Goanna/20160105 PaleMoon/26.0.0' + result: { browser: { name: 'Pale Moon', version: 26.0.0, type: browser }, engine: { name: Goanna, version: '2.0' }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Pale Moon 26.0.0 on Windows 8.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/engine-servo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/engine-servo.yaml new file mode 100644 index 0000000..a6999b5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/engine-servo.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:37.0) Servo/1.0 Firefox/37.0' + result: { browser: { name: 'Servo Nightly Build', type: browser }, engine: { name: Servo, version: '1.0' }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Servo Nightly Build on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:37.0) Servo/1.0 Firefox/37.0' + readable: 'Servo Nightly Build on Linux' + result: { browser: { name: 'Servo Nightly Build', type: browser }, engine: { name: Servo, version: '1.0' }, os: { name: Linux }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:55.0) Servo/1.0 Firefox/55.0' + readable: 'Servo Nightly Build on OS X Yosemite 10.10' + result: { browser: { name: 'Servo Nightly Build', type: browser }, engine: { name: Servo, version: '1.0' }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-amigaos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-amigaos.yaml new file mode 100644 index 0000000..7f91863 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-amigaos.yaml @@ -0,0 +1,56 @@ +- + headers: 'User-Agent: IBrowse/2.4 (AmigaOS 3.9; 68K)' + result: { browser: { name: IBrowse, version: '2.4', type: browser }, os: { name: AmigaOS, version: '3.9' }, device: { type: desktop } } + readable: 'IBrowse 2.4 on AmigaOS 3.9' +- + headers: 'User-Agent: IBrowse/2.4 (AmigaOS V53; PPC; 68K build)' + result: { browser: { name: IBrowse, version: '2.4', type: browser }, os: { name: AmigaOS }, device: { type: desktop } } + readable: 'IBrowse 2.4 on AmigaOS' +- + headers: 'User-Agent: IBrowse/2.4oem (AmigaOS V53; PPC; 68K build)' + result: { browser: { name: IBrowse, version: '2.4', type: browser }, os: { name: AmigaOS }, device: { type: desktop } } + readable: 'IBrowse 2.4 on AmigaOS' +- + headers: 'User-Agent: IBrowse/2.5beta (AmigaOS 4.1; PPC)' + result: { browser: { name: IBrowse, version: '2.5', type: browser }, os: { name: AmigaOS, version: '4.1' }, device: { type: desktop } } + readable: 'IBrowse 2.5 on AmigaOS 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (Amiga; PowerPC AmigaOS 4.1; Odyssey Web Browser; rv:1.23) AppleWebKit/538.1 (KHTML, like Gecko) OWB/1.23 Safari/538.1' + result: { browser: { name: Odyssey, version: '1.23', type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: AmigaOS, version: '4.1' }, device: { type: desktop } } + readable: 'Odyssey 1.23 on AmigaOS 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (AmigaOS 4; PPC; InternetSurfboard; U; xx) AppleWebKit/533.3 (KHTML, like Gecko) InternetSurfboard/0.002 Safari/533.3' + result: { browser: { name: InternetSurfboard, version: '0.002', type: browser }, engine: { name: Webkit, version: '533.3' }, os: { name: AmigaOS, version: '4' }, device: { type: desktop } } + readable: 'InternetSurfboard 0.002 on AmigaOS 4' +- + headers: 'User-Agent: Mozilla/5.0 (AmigaOS; AmigaOS 53.26 PowerPC; rv:2.0.1) Gecko/20120327 Firefox/4.0.1' + result: { browser: { name: Firefox, version: 4.0.1, type: browser }, engine: { name: Gecko, version: 2.0.1 }, os: { name: AmigaOS, version: '53.26' }, device: { type: desktop } } + readable: 'Firefox 4.0.1 on AmigaOS 53.26' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC AmigaOS 4.1; Odyssey Web Browser; rv:1.16) AppleWebKit/535.14 (KHTML, like Gecko) OWB/1.16 Safari/535.14' + result: { browser: { name: Odyssey, version: '1.16', type: browser }, engine: { name: Webkit, version: '535.14' }, os: { name: AmigaOS, version: '4.1' }, device: { type: desktop } } + readable: 'Odyssey 1.16 on AmigaOS 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Origyn Web Browser; AmigaOS 4; PPC; U) AppleWebKit/532.0+ (KHTML, like Gecko, Safari/532.0+)' + result: { browser: { name: Origyn, type: browser }, engine: { name: Webkit, version: '532.0' }, os: { name: AmigaOS, version: '4' }, device: { type: desktop } } + readable: 'Origyn on AmigaOS 4' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Origyn Web Browser; U; AmigaOS 4.0; xx) AppleWebKit/534.0 (KHTML, like Gecko, Safari/534.0) OWB/3.32' + result: { browser: { name: Origyn, type: browser }, engine: { name: Webkit, version: '534.0' }, os: { name: AmigaOS, version: '4.0' }, device: { type: desktop } } + readable: 'Origyn on AmigaOS 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Origyn Web Browser; U; AmigaOS 4.1; xx) AppleWebKit/534.0 (KHTML, like Gecko, Safari/534.0) OWB/3.32' + result: { browser: { name: Origyn, type: browser }, engine: { name: Webkit, version: '534.0' }, os: { name: AmigaOS, version: '4.1' }, device: { type: desktop } } + readable: 'Origyn on AmigaOS 4.1' +- + headers: 'User-Agent: OWB/3.12 (AmigaOS 4.1; ppc; U)' + result: { browser: { name: Odyssey, version: '3.12', type: browser }, os: { name: AmigaOS, version: '4.1' }, device: { type: desktop } } + readable: 'Odyssey 3.12 on AmigaOS 4.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; IBrowse 2.3; AmigaOS4.0)' + result: { browser: { name: IBrowse, version: '2.3', type: browser }, os: { name: AmigaOS, version: '4.0' }, device: { type: desktop } } + readable: 'IBrowse 2.3 on AmigaOS 4.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; AmigaOS4.0) IBrowse 2.3' + result: { browser: { name: IBrowse, version: '2.3', type: browser }, os: { name: AmigaOS, version: '4.0' }, device: { type: desktop } } + readable: 'IBrowse 2.3 on AmigaOS 4.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-aros.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-aros.yaml new file mode 100644 index 0000000..4e5b2a1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-aros.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Odyssey Web Browser; AROS; rv:1.16) AppleWebKit/535.14 (KHTML, like Gecko) OWB/1.16 Safari/535.14' + result: { browser: { name: Odyssey, version: '1.16', type: browser }, engine: { name: Webkit, version: '535.14' }, os: { name: AROS }, device: { type: desktop } } + readable: 'Odyssey 1.16 on AROS' +- + headers: 'User-Agent: Mozilla/5.0 (i386; AROS 0.0; Odyssey Web Browser; rv:1.23) AppleWebKit/538.1 (KHTML, like Gecko) OWB/1.23 Safari/538.1' + result: { browser: { name: Odyssey, version: '1.23', type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: AROS }, device: { type: desktop } } + readable: 'Odyssey 1.23 on AROS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-beos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-beos.yaml new file mode 100644 index 0000000..7fdb607 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-beos.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/3.0 (compatible; NetPositive/2.2.1; BeOS)' + result: { browser: { name: NetPositive, version: 2.2.1, type: browser }, os: { name: BeOS }, device: { type: desktop } } + readable: 'NetPositive 2.2.1 on BeOS' +- + headers: 'User-Agent: Mozilla/5.0 (BeOS; U; BeOS BePC; xx; rv:1.8.1) Gecko/20061108 BonEcho/2.0' + result: { browser: { name: Firefox, version: '2.0', type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: BeOS }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0 on BeOS' +- + headers: 'User-Agent: Mozilla/5.0 (BeOS; U; BeOS BePC; xx; rv:1.8.1.17) Gecko/20080831 BonEcho/2.0.0.17' + result: { browser: { name: Firefox, version: 2.0.0.17, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: BeOS }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.17 on BeOS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-bsd.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-bsd.yaml new file mode 100644 index 0000000..71dc09d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-bsd.yaml @@ -0,0 +1,148 @@ +- + headers: 'User-Agent: Midori/0.5 (X11; FreeBSD/11) WebKit/537.32+ Midori/0.5' + result: { browser: { name: Midori, version: '0.5', type: browser }, engine: { name: Webkit, version: '537.32' }, os: { name: FreeBSD, family: BSD, version: '11' }, device: { type: desktop } } + readable: 'Midori 0.5 on FreeBSD 11' +- + headers: 'User-Agent: Mozilla/5.0 (OpenBSD i386) AppleWebKit/538.1+ (KHTML, like Gecko) WebKitGTK+/2.2.3 luakit/0d5f4' + result: { browser: { using: LuaKit }, engine: { name: Webkit, version: '538.1' }, os: { name: OpenBSD, family: BSD } } + readable: 'LuaKit on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11' + result: { browser: { name: Chrome, version: '17', type: browser }, engine: { name: Webkit, version: '535.11' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Chrome 17 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Chrome 33 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:45.0) Gecko/20100101 Firefox/45.0' + result: { browser: { name: Firefox, version: '45.0', type: browser }, engine: { name: Gecko, version: '45.0' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 45.0 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD i386) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11' + result: { browser: { name: Chrome, version: '17', type: browser }, engine: { name: Webkit, version: '535.11' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Chrome 17 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.6.6 Safari/538.1' + result: { browser: { name: QupZilla, version: 1.6.6, type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'QupZilla 1.6.6 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; GNU/kFreeBSD x86_64; rv:30.0) Gecko/20100101 Firefox/30.0 Iceweasel/30.0' + result: { browser: { name: Iceweasel, family: { name: Firefox, version: '30.0' }, version: '30.0', type: browser }, engine: { name: Gecko, version: '30.0' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Iceweasel 30.0 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; NetBSD amd64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: NetBSD, family: BSD }, device: { type: desktop } } + readable: 'Chrome 43 on NetBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; NetBSD amd64; rv:17.0) Gecko/20121206 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: NetBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 17.0 on NetBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; NetBSD i386; rv:40.0) Gecko/20100101 Firefox/40.0' + result: { browser: { name: Firefox, version: '40.0', type: browser }, engine: { name: Gecko, version: '40.0' }, os: { name: NetBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 40.0 on NetBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; NetBSD) AppleWebKit/538.15+ Midori/0.5' + result: { browser: { name: Midori, version: '0.5', type: browser }, engine: { name: Webkit, version: '538.15' }, os: { name: NetBSD, family: BSD }, device: { type: desktop } } + readable: 'Midori 0.5 on NetBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; NetBSD; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Midori/0.4' + result: { browser: { name: Midori, family: { name: Firefox, version: 4.0.1 }, version: '0.4', type: browser }, engine: { name: Webkit }, os: { name: NetBSD, family: BSD }, device: { type: desktop } } + readable: 'Midori 0.4 on NetBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD amd64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Chrome 18 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD amd64; rv:42.0) Gecko/20100101 Firefox/42.0' + result: { browser: { name: Firefox, version: '42.0', type: browser }, engine: { name: Gecko, version: '42.0' }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 42.0 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Chrome 36 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; OpenBSD i386; xx; rv:1.9.1.16) Gecko/20110216 Firefox/3.5.16' + result: { browser: { name: Firefox, version: 3.5.16, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 3.5.16 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; NetBSD) KHTML/3.5.10 (like Gecko)' + result: { browser: { name: Konqueror, version: '3.5', type: browser }, engine: { name: KHTML, version: 3.5.10 }, os: { name: NetBSD, family: BSD }, device: { type: desktop } } + readable: 'Konqueror 3.5 on NetBSD' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.5; FreeBSD) KHTML/4.5.5 (like Gecko)' + result: { browser: { name: Konqueror, version: '4.5', type: browser }, engine: { name: KHTML, version: 4.5.5 }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Konqueror 4.5 on FreeBSD' +- + headers: 'User-Agent: Opera/9.80 (X11; FreeBSD 10.0-CURRENT amd64) Presto/2.12.388 Version/12.11' + result: { browser: { name: Opera, version: '12.11', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: FreeBSD, family: BSD, version: '10.0' }, device: { type: desktop } } + readable: 'Opera 12.11 on FreeBSD 10.0' +- + headers: 'User-Agent: Opera/9.80 (X11; FreeBSD 8.2-RELEASE amd64; U; xx) Presto/2.10.229 Version/11.61' + result: { browser: { name: Opera, version: '11.61', type: browser }, engine: { name: Presto, version: 2.10.229 }, os: { name: FreeBSD, family: BSD, version: '8.2' }, device: { type: desktop } } + readable: 'Opera 11.61 on FreeBSD 8.2' +- + headers: 'User-Agent: Opera/9.80 (X11; OpenBSD i386) Presto/2.12.388 Version/12.16' + result: { browser: { name: Opera, version: '12.16', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Opera 12.16 on OpenBSD' +- + headers: 'User-Agent: Mozilla/1.1N (X11; I; BSD/386 uname failed)' + result: { browser: { name: 'Netscape Navigator', version: '1.1', type: browser }, os: { name: BSD/OS, family: BSD }, device: { type: desktop } } + readable: 'Netscape Navigator 1.1 on BSD/OS' +- + headers: 'User-Agent: Mozilla/1.1N (X11; I; BSD/OS 2.0 i386)' + result: { browser: { name: 'Netscape Navigator', version: '1.1', type: browser }, os: { name: BSD/OS, family: BSD, version: '2.0' }, device: { type: desktop } } + readable: 'Netscape Navigator 1.1 on BSD/OS 2.0' +- + headers: 'User-Agent: Links (2.1pre22; NetBSD 2.0.2 i386; 80x48)' + result: { browser: { name: Links, version: '2.1', type: 'browser:text' }, os: { name: NetBSD, family: BSD, version: 2.0.2 } } + readable: 'Links 2.1 on NetBSD 2.0.2' +- + headers: 'User-Agent: Mozilla/4.04 [ja_euc] (X11; I; NetBSD 1.2.1 i386; Nav)' + result: { browser: { name: 'Netscape Navigator', version: 4.0.4, type: browser }, os: { name: NetBSD, family: BSD, version: 1.2.1 }, device: { type: desktop } } + readable: 'Netscape Navigator 4.0.4 on NetBSD 1.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.5; NetBSD 5.0.2; X11; amd64; en_US) KHTML/4.5.4 (like Gecko)' + result: { browser: { name: Konqueror, version: '4.5', type: browser }, engine: { name: KHTML, version: 4.5.4 }, os: { name: NetBSD, family: BSD, version: 5.0.2 }, device: { type: desktop } } + readable: 'Konqueror 4.5 on NetBSD 5.0.2' +- + headers: 'User-Agent: curl/7.16.0 (i386-unknown-openbsd4.1) libcurl/7.16.0 OpenSSL/0.9.7j zlib/1.2.3' + result: { browser: { name: Curl, version: 7.16.0 }, device: { type: bot } } + readable: 'Curl 7.16.0' +- + headers: 'User-Agent: Links (2.1pre30; OpenBSD 4.3 macppc; x)' + result: { browser: { name: Links, version: '2.1', type: 'browser:text' }, os: { name: OpenBSD, family: BSD, version: '4.3' } } + readable: 'Links 2.1 on OpenBSD 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/3.3; OpenBSD 3.6; X11; i386; ja) (KHTML, like Gecko)' + result: { browser: { name: Konqueror, version: '3.3', type: browser }, os: { name: OpenBSD, family: BSD, version: '3.6' }, device: { type: desktop } } + readable: 'Konqueror 3.3 on OpenBSD 3.6' +- + headers: 'User-Agent: Opera/6.12 (OpenBSD 3.7; U) [en]' + result: { browser: { name: Opera, version: '6.12', type: browser }, engine: { name: Electra }, os: { name: OpenBSD, family: BSD, version: '3.7' }, device: { type: desktop } } + readable: 'Opera 6.12 on OpenBSD 3.7' +- + headers: 'User-Agent: curl/7.14.1 (i386-portbld-freebsd4.7) libcurl/7.14.1 OpenSSL/0.9.8 zlib/1.1.3' + result: { browser: { name: Curl, version: 7.14.1 }, device: { type: bot } } + readable: 'Curl 7.14.1' +- + headers: 'User-Agent: ELinks/0.11.1 (textmode; FreeBSD 6.1-RELEASE i386; 127x77-2)' + result: { browser: { name: ELinks, version: 0.11.1, type: 'browser:text' }, os: { name: FreeBSD, family: BSD, version: '6.1' }, device: { type: desktop } } + readable: 'ELinks 0.11.1 on FreeBSD 6.1' +- + headers: 'User-Agent: Midori/0.5 (X11; FreeBSD/11) WebKit/537.32+ Midori/0.5' + result: { browser: { name: Midori, version: '0.5', type: browser }, engine: { name: Webkit, version: '537.32' }, os: { name: FreeBSD, family: BSD, version: '11' }, device: { type: desktop } } + readable: 'Midori 0.5 on FreeBSD 11' +- + headers: 'User-Agent: Mozilla/3.04Gold (X11; I; FreeBSD 2.2.1-RELEASE i386)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.4, type: browser }, os: { name: FreeBSD, family: BSD, version: 2.2.1 }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.4 on FreeBSD 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; DragonFly x86_64; rv:36.0) Gecko/20100101 Firefox/36.0 SeaMonkey/2.33.1' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '36.0' }, version: 2.33.1, type: browser }, engine: { name: Gecko, version: '36.0' }, os: { name: 'DragonFly BSD', family: BSD }, device: { type: desktop } } + readable: 'SeaMonkey 2.33.1 on DragonFly BSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; DragonFly x86_64; rv:34.0) Gecko/20100101 Firefox/34.0 SeaMonkey/2.31' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '34.0' }, version: '2.31', type: browser }, engine: { name: Gecko, version: '34.0' }, os: { name: 'DragonFly BSD', family: BSD }, device: { type: desktop } } + readable: 'SeaMonkey 2.31 on DragonFly BSD' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-chromeos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-chromeos.yaml new file mode 100644 index 0000000..f0e30e7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-chromeos.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/5.0 (X11; CrOS armv7l 3428.149.2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.87 Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: 'Chrome OS' }, device: { type: desktop } } + readable: 'Chrome 25 on Chrome OS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; CrOS armv7l 7520.42.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.59 Safari/537.36' + result: { browser: { name: Chrome, version: '47', type: browser }, engine: { name: Blink }, os: { name: 'Chrome OS' }, device: { type: desktop } } + readable: 'Chrome 47 on Chrome OS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; CrOS i686 1193.117.0) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.66 Safari/535.7' + result: { browser: { name: Chrome, version: '16', type: browser }, engine: { name: Webkit, version: '535.7' }, os: { name: 'Chrome OS' }, device: { type: desktop } } + readable: 'Chrome 16 on Chrome OS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; CrOS i686 1828.0.2012) AppleWebKit/535.22 (KHTML, like Gecko) Chrome/19.0.1051.0 Safari/535.22' + result: { browser: { name: Chrome, version: 19.0.1051.0, type: browser }, engine: { name: Webkit, version: '535.22' }, os: { name: 'Chrome OS' }, device: { type: desktop } } + readable: 'Chrome Dev 19.0.1051.0 on Chrome OS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; CrOS i686 3607.0.2013) AppleWebKit/537.27 (KHTML, like Gecko) Chrome/26.0.1393.2 Safari/537.27' + result: { browser: { name: Chrome, version: 26.0.1393.2, type: browser }, engine: { name: Webkit, version: '537.27' }, os: { name: 'Chrome OS' }, device: { type: desktop } } + readable: 'Chrome Dev 26.0.1393.2 on Chrome OS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; CrOS i686 6163.0.2014) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2126.0 Safari/537.36' + result: { browser: { name: Chrome, version: 39.0.2126.0, type: browser }, engine: { name: Blink }, os: { name: 'Chrome OS' }, device: { type: desktop } } + readable: 'Chrome Dev 39.0.2126.0 on Chrome OS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; CrOS x86_64 12.10.0) AppleWebKit/537.30 (KHTML, like Gecko) Chrome/26.0.1400.0 Safari/537.30' + result: { browser: { name: Chrome, version: 26.0.1400.0, type: browser }, engine: { name: Webkit, version: '537.30' }, os: { name: 'Chrome OS' }, device: { type: desktop } } + readable: 'Chrome Dev 26.0.1400.0 on Chrome OS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; CrOS x86_64 2913.193.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.91 Safari/537.11' + result: { browser: { name: Chrome, version: '23', type: browser }, engine: { name: Webkit, version: '537.11' }, os: { name: 'Chrome OS' }, device: { type: desktop } } + readable: 'Chrome 23 on Chrome OS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-haiku.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-haiku.yaml new file mode 100644 index 0000000..ca56df2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-haiku.yaml @@ -0,0 +1,44 @@ +- + headers: 'User-Agent: Mozilla/5.0 (BeOS; U; Haiku BePC; xx; rv:1.8.1.10pre) Gecko/20080112' + result: { engine: { name: Gecko, version: 1.8.1 }, os: { name: Haiku }, device: { type: desktop } } + readable: 'an unknown browser based on Gecko 1.8.1 running on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (BeOS; U; Haiku BePC; xx; rv:1.8.1.18) Gecko/20081114 BonEcho/2.0.0.18' + result: { browser: { name: Firefox, version: 2.0.0.18, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Haiku }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.18 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (BeOS; U; Haiku BePC; xx; rv:1.8.1.25pre) Gecko/20120921 BonEcho/2.0.0.22pre' + result: { browser: { name: Firefox, version: 2.0.0.22, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Haiku }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.22 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Haiku R1 x86) AppleWebKit/538.1 (KHTML, like Gecko) QupZilla/1.7.0 Safari/538.1' + result: { browser: { name: QupZilla, version: 1.7.0, type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: Haiku }, device: { type: desktop } } + readable: 'QupZilla 1.7.0 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Haiku R1 x86) AppleWebKit/538.26 (KHTML, like Gecko) WebPositive/1.2 Safari/538.26' + result: { browser: { name: WebPositive, version: '1.2', type: browser }, engine: { name: Webkit, version: '538.26' }, os: { name: Haiku }, device: { type: desktop } } + readable: 'WebPositive 1.2 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Haiku R1 x86; xx) AppleWebKit/536.10 (KHTML, like Gecko) WebPositive/1.1 Safari/536.10' + result: { browser: { name: WebPositive, version: '1.1', type: browser }, engine: { name: Webkit, version: '536.10' }, os: { name: Haiku }, device: { type: desktop } } + readable: 'WebPositive 1.1 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Haiku R1 x86; xx) AppleWebKit/538.18 (KHTML, like Gecko) WebPositive/1.2 Safari/538.18' + result: { browser: { name: WebPositive, version: '1.2', type: browser }, engine: { name: Webkit, version: '538.18' }, os: { name: Haiku }, device: { type: desktop } } + readable: 'WebPositive 1.2 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; U; Haiku x86; xx) AppleWebKit/536.10 (KHTML, like Gecko) Haiku/R1 WebPositive/1.1 Safari/536.10' + result: { browser: { name: WebPositive, version: '1.1', type: browser }, engine: { name: Webkit, version: '536.10' }, os: { name: Haiku }, device: { type: desktop } } + readable: 'WebPositive 1.1 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; U; InfiNet 0.1; Haiku) AppleWebKit/528+ (KHTML, like Gecko) WebPositive/528+ Safari/528+' + result: { browser: { name: WebPositive, type: browser }, engine: { name: Webkit, version: '528' }, os: { name: Haiku }, device: { type: desktop } } + readable: 'WebPositive on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; U; WebPositive/533.4; Haiku) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4' + result: { browser: { name: WebPositive, family: { name: Chrome, version: 5 }, type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: Haiku }, device: { type: desktop } } + readable: 'WebPositive on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; x86 Haiku R1; xx) AppleWebKit/537.1 (KHTML, like Gecko) WebPositive/1.2 Safari/537.1' + result: { browser: { name: WebPositive, version: '1.2', type: browser }, engine: { name: Webkit, version: '537.1' }, os: { name: Haiku }, device: { type: desktop } } + readable: 'WebPositive 1.2 on Haiku' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-irix.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-irix.yaml new file mode 100644 index 0000000..8f10d75 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-irix.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/3.04Gold (X11; U; IRIX 5.3 IP22)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.4, type: browser }, os: { name: IRIX, family: UNIX, version: '5.3' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.4 on IRIX 5.3' +- + headers: 'User-Agent: Mozilla/4.08 [en] (X11; U; IRIX 5.3 IP5; Nav)' + result: { browser: { name: 'Netscape Navigator', version: 4.0.8, type: browser }, os: { name: IRIX, family: UNIX, version: '5.3' }, device: { type: desktop } } + readable: 'Netscape Navigator 4.0.8 on IRIX 5.3' +- + headers: 'User-Agent: Mozilla/4.76C-SGI [ru] (X11; I; IRIX64 6.5 IP30)' + result: { browser: { name: 'Netscape Communicator', version: 4.7.6, type: browser }, os: { name: IRIX, family: UNIX, version: '6.5' }, device: { type: desktop } } + readable: 'Netscape Communicator 4.7.6 on IRIX 6.5' +- + headers: 'User-Agent: Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)' + result: { browser: { name: 'Netscape Communicator', version: 4.7.7, type: browser }, os: { name: IRIX, family: UNIX, version: '6.5' }, device: { type: desktop } } + readable: 'Netscape Communicator 4.7.7 on IRIX 6.5' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; IRIX IP32; xx; rv:1.9.0.19) Gecko/2013020113 Firefox/3.0.19' + result: { browser: { name: Firefox, version: 3.0.19, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: IRIX, family: UNIX }, device: { type: desktop } } + readable: 'Firefox 3.0.19 on IRIX' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-joli.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-joli.yaml new file mode 100644 index 0000000..e4bfad3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-joli.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (X11; Jolicloud Linux i686) AppleWebKit/537.6 (KHTML, like Gecko) Joli OS/1.2 Chromium/23.0.1240.0 Chrome/23.0.1240.0 Safari/537.6' + result: { browser: { name: Chromium, family: { name: Chrome, version: 23 }, version: 23.0.1240.0, type: browser }, engine: { name: Webkit, version: '537.6' }, os: { name: 'Joli OS', version: '1.2' }, device: { type: desktop } } + readable: 'Chromium 23.0.1240.0 on Joli OS 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Jolicloud Linux i686; xx) AppleWebKit/534.16 (KHTML, like Gecko) Joli OS/1.2 Chromium/10.0.648.82 Chrome/10.0.648.82 Safari/534.16' + result: { browser: { name: Chromium, family: { name: Chrome, version: 10 }, version: 10.0.648.82, type: browser }, engine: { name: Webkit, version: '534.16' }, os: { name: 'Joli OS', version: '1.2' }, device: { type: desktop } } + readable: 'Chromium 10.0.648.82 on Joli OS 1.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-linux.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-linux.yaml new file mode 100644 index 0000000..a325b9e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-linux.yaml @@ -0,0 +1,420 @@ +- + headers: 'User-Agent: Midori/0.4 (CentOS 6.5)' + result: { browser: { name: Midori, version: '0.4', type: browser }, device: { type: desktop } } + readable: 'Midori 0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Fedora; Linux i686) AppleWebKit/601.1 (KHTML, like Gecko) Version/8.0 Safari/601.1 Epiphany/3.16.3' + result: { browser: { name: 'GNOME Web', version: 3.16.3, type: browser }, engine: { name: Webkit, version: '601.1' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'GNOME Web 3.16.3 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (Fedora; Linux x86_64) AppleWebKit/601.1 (KHTML, like Gecko) Version/8.0 Safari/601.1 Epiphany/3.16.1' + result: { browser: { name: 'GNOME Web', version: 3.16.1, type: browser }, engine: { name: Webkit, version: '601.1' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'GNOME Web 3.16.1 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (Ubuntu; X11; Linux x86_64; rv:10.0a1) Gecko/20111108 Firefox/10.0a1' + result: { browser: { name: Firefox, version: 10.0a1, type: browser }, engine: { name: Gecko, version: 10.0a1 }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Firefox Aurora 10.0a1 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11) KHTML/4.11.2 (like Gecko) Konqueror/4.11 SUSE' + result: { browser: { name: Konqueror, version: '4.11', type: browser }, engine: { name: KHTML, version: 4.11.2 }, device: { type: desktop } } + readable: 'Konqueror 4.11' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux armv7l; rv:38.0) Gecko/20100101 Firefox/38.0' + result: { browser: { name: Firefox, version: '38.0', type: browser }, engine: { name: Gecko, version: '38.0' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Firefox 38.0 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Blink }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Chrome 45 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux i686; rv:39.0) Gecko/20100101 Firefox/39.0' + result: { browser: { name: Firefox, version: '39.0', type: browser }, engine: { name: Gecko, version: '39.0' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Firefox 39.0 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux mips64; rv:41.0) Gecko/20100101 Firefox/41.0' + result: { browser: { name: Firefox, version: '41.0', type: browser }, engine: { name: Gecko, version: '41.0' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Firefox 41.0 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux ppc64; rv:37.0) Gecko/20100101 Firefox/37.0' + result: { browser: { name: Firefox, version: '37.0', type: browser }, engine: { name: Gecko, version: '37.0' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Firefox 37.0 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36' + result: { browser: { name: Chrome, version: 46.0.2486.0, type: browser }, engine: { name: Blink }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Chrome Dev 46.0.2486.0 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; KDE; Debian GNU/Linux Jessie x86_64; rv:39.0) Gecko/39.0 Firefox/39.0' + result: { browser: { name: Firefox, version: '39.0', type: browser }, engine: { name: Gecko, version: '39.0' }, os: { name: Debian }, device: { type: desktop } } + readable: 'Firefox 39.0 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Kubuntu; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/11.0' + result: { browser: { name: Firefox, version: '11.0', type: browser }, engine: { name: Gecko, version: '10.0' }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Firefox 11.0 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux 2.6.32-358.23.2.el6.centos.plus.i686 i686) KHTML/4.10.2 (like Gecko) Konqueror/4.10 Fedora/4.10.2-1.el6.1' + result: { browser: { name: Konqueror, version: '4.10', type: browser }, engine: { name: KHTML, version: 4.10.2 }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Konqueror 4.10 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux 3.12.13-gentoo x86_64) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.13.1 Safari/534.34' + result: { browser: { name: Konqueror, version: 4.13.1, type: browser }, engine: { name: Webkit, version: '534.34' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.13.1 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux 3.8.13-gentoo x86_64; xx) KHTML/4.10.5 (like Gecko) Konqueror/4.10' + result: { browser: { name: Konqueror, version: '4.10', type: browser }, engine: { name: KHTML, version: 4.10.5 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Konqueror 4.10 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/601.1 (KHTML, like Gecko) Version/8.0 Safari/601.1 Ubuntu/15.04 (3.14.2-0ubuntu1) Epiphany/3.14.2' + result: { browser: { name: 'GNOME Web', version: 3.14.2, type: browser }, engine: { name: Webkit, version: '601.1' }, os: { name: Ubuntu, version: '15.04' }, device: { type: desktop } } + readable: 'GNOME Web 3.14.2 on Ubuntu 15.04' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux armv6l) AppleWebKit/535.4+ (KHTML, like Gecko) Version/5.0 Safari/535.4+ Debian/sid/experimental (3.2.1-2) Epiphany/3.2.1' + result: { browser: { name: 'GNOME Web', version: 3.2.1, type: browser }, engine: { name: Webkit, version: '535.4' }, os: { name: Debian }, device: { type: desktop } } + readable: 'GNOME Web 3.2.1 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux armv6l) AppleWebKit/538.1 (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/538.1 Debian/7.2 (3.8.2+rpi-2rpi1) Epiphany/3.8.2' + result: { browser: { name: 'GNOME Web', family: { name: Chrome, version: 25 }, version: 3.8.2, type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: Debian, version: '7.2' }, device: { type: desktop } } + readable: 'GNOME Web 3.8.2 on Debian 7.2' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/36.0.1985.125 Chrome/36.0.1985.125 Safari/537.36' + result: { browser: { name: Chromium, family: { name: Chrome, version: 36 }, version: 36.0.1985.125, type: browser }, engine: { name: Blink }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Chromium 36.0.1985.125 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686 (x86_64); CentOS Linux release 7.1.1503 (Core)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: CentOS, version: '7.1' }, device: { type: desktop } } + readable: 'Chrome 33 on CentOS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.121 Chrome/15.0.874.121 Safari/535.2' + result: { browser: { name: Chromium, family: { name: Chrome, version: 15 }, version: 15.0.874.121, type: browser }, engine: { name: Webkit, version: '535.2' }, os: { name: Ubuntu, version: '11.10' }, device: { type: desktop } } + readable: 'Chromium 15.0.874.121 on Ubuntu 11.10' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1031.0 Safari/535.20 SUSE/19.0.1031.0' + result: { browser: { name: Chrome, version: 19.0.1031.0, type: browser }, engine: { name: Webkit, version: '535.20' }, os: { name: SUSE }, device: { type: desktop } } + readable: 'Chrome Dev 19.0.1031.0 on SUSE' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.32 (KHTML, like Gecko) Chrome/27.0.1425.0 Safari/537.32 SUSE/27.0.1425.0' + result: { browser: { name: Chrome, version: 27.0.1425.0, type: browser }, engine: { name: Blink }, os: { name: SUSE }, device: { type: desktop } } + readable: 'Chrome Dev 27.0.1425.0 on SUSE' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/602.1 (KHTML, like Gecko) Version/8.0 Safari/602.1 SUSE/20150920 (3.18.0) Epiphany/3.18.0' + result: { browser: { name: 'GNOME Web', version: 3.18.0, type: browser }, engine: { name: Webkit, version: '602.1' }, os: { name: SUSE }, device: { type: desktop } } + readable: 'GNOME Web 3.18.0 on SUSE' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) KHTML/4.11.3 (like Gecko) Konqueror/4.11 Fedora/4.11.3-1.fc19' + result: { browser: { name: Konqueror, version: '4.11', type: browser }, engine: { name: KHTML, version: 4.11.3 }, os: { name: Fedora, version: '19' }, device: { type: desktop } } + readable: 'Konqueror 4.11 on Fedora 19' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) KHTML/4.11.4 (like Gecko) Mageia Konqueror/4.11' + result: { browser: { name: Konqueror, version: '4.11', type: browser }, engine: { name: KHTML, version: 4.11.4 }, os: { name: Mageia }, device: { type: desktop } } + readable: 'Konqueror 4.11 on Mageia' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) KHTML/4.9.3 (like Gecko) Konqueror/4.9 SUSE' + result: { browser: { name: Konqueror, version: '4.9', type: browser }, engine: { name: KHTML, version: 4.9.3 }, os: { name: SUSE }, device: { type: desktop } } + readable: 'Konqueror 4.9 on SUSE' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686; Fedora release 18 (Spherical Cow)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Fedora, version: '18' }, device: { type: desktop } } + readable: 'Chrome 33 on Fedora 18' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686; Fedora release 20 (Heisenbug)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.5.1 Safari/537.36' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 33 }, version: 1.0.5, type: browser }, engine: { name: Blink }, os: { name: Fedora, version: '20' }, device: { type: desktop } } + readable: 'Maxthon 1.0.5 on Fedora 20' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/10.10 Chromium/17.0.963.26 Chrome/17.0.963.26 Safari/535.11' + result: { browser: { name: Chromium, family: { name: Chrome, version: 17 }, version: 17.0.963.26, type: browser }, engine: { name: Webkit, version: '535.11' }, os: { name: Ubuntu, version: '10.10' }, device: { type: desktop } } + readable: 'Chromium 17.0.963.26 on Ubuntu 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.32 (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/537.32 Debian/unstable (3.8.2-4) Epiphany/3.8.2' + result: { browser: { name: 'GNOME Web', family: { name: Chrome, version: 25 }, version: 3.8.2, type: browser }, engine: { name: Webkit, version: '537.32' }, os: { name: Debian }, device: { type: desktop } } + readable: 'GNOME Web 3.8.2 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1587.0 Safari/537.36 SUSE/30.0.1587.0' + result: { browser: { name: Chrome, version: 30.0.1587.0, type: browser }, engine: { name: Blink }, os: { name: SUSE }, device: { type: desktop } } + readable: 'Chrome Dev 30.0.1587.0 on SUSE' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) OpenMandriva Chromium/34.0.1847.134 Chrome/34.0.1847.134 Safari/537.36' + result: { browser: { name: Chromium, family: { name: Chrome, version: 34 }, version: 34.0.1847.134, type: browser }, engine: { name: Blink }, os: { name: Mandriva }, device: { type: desktop } } + readable: 'Chromium 34.0.1847.134 on Mandriva' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/601.1 (KHTML, like Gecko) Version/8.0 Safari/601.1 Ubuntu/15.10 (3.16.3-1ubuntu1) Epiphany/3.16.3' + result: { browser: { name: 'GNOME Web', version: 3.16.3, type: browser }, engine: { name: Webkit, version: '601.1' }, os: { name: Ubuntu, version: '15.10' }, device: { type: desktop } } + readable: 'GNOME Web 3.16.3 on Ubuntu 15.10' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/602.1 (KHTML, like Gecko) Version/8.0 Safari/602.1 SUSE/20150920 (3.18.0) Epiphany/3.18.0' + result: { browser: { name: 'GNOME Web', version: 3.18.0, type: browser }, engine: { name: Webkit, version: '602.1' }, os: { name: SUSE }, device: { type: desktop } } + readable: 'GNOME Web 3.18.0 on SUSE' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) KHTML/4.11.4 (like Gecko) Konqueror/4.11 Fedora/4.11.4-1.fc20' + result: { browser: { name: Konqueror, version: '4.11', type: browser }, engine: { name: KHTML, version: 4.11.4 }, os: { name: Fedora, version: '20' }, device: { type: desktop } } + readable: 'Konqueror 4.11 on Fedora 20' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Gentoo Base System release 2.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Gentoo, version: '2.2' }, device: { type: desktop } } + readable: 'Chrome 33 on Gentoo 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/2012314 Firefox/17.0.1 Slackware Linux' + result: { browser: { name: Firefox, version: 17.0.1, type: browser }, engine: { name: Gecko, version: '11.0' }, os: { name: Slackware }, device: { type: desktop } } + readable: 'Firefox 17.0.1 on Slackware' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Debian Firefox/25.0 Iceweasel/25.0 Gnome' + result: { browser: { name: Iceweasel, family: { name: Firefox, version: '25.0' }, version: '25.0', type: browser }, engine: { name: Gecko, version: '25.0' }, os: { name: Debian }, device: { type: desktop } } + readable: 'Iceweasel 25.0 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 conkeror/1.0pre1 (Debian-1.0~~pre-1+git140812-1)' + result: { browser: { name: Conkeror, version: '1.0', type: browser }, engine: { name: Gecko, version: '31.0' }, os: { name: Debian }, device: { type: desktop } } + readable: 'Conkeror 1.0 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux) KHTML/4.7.3 (like Gecko) Konqueror/4.7 Fedora/4.7.3-5.fc16' + result: { browser: { name: Konqueror, version: '4.7', type: browser }, engine: { name: KHTML, version: 4.7.3 }, os: { name: Fedora, version: '16' }, device: { type: desktop } } + readable: 'Konqueror 4.7 on Fedora 16' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Mageia; Linux x86_64; rv:10.0.9) Gecko/20100101 Firefox/10.0.9' + result: { browser: { name: Firefox, version: 10.0.9, type: browser }, engine: { name: Gecko, version: 10.0.9 }, os: { name: Mageia }, device: { type: desktop } } + readable: 'Firefox 10.0.9 on Mageia' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Slackware Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.44 Safari/537.36 OPR/25.0.1614.31 (Edition beta)' + result: { browser: { name: Opera, family: { name: Chrome, version: 38 }, version: '25.0', type: browser }, engine: { name: Blink }, os: { name: Slackware }, device: { type: desktop } } + readable: 'Opera Beta 25.0 on Slackware' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Slackware Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2145.4 Safari/537.36 OPR/26.0.1632.0 (Edition developer)' + result: { browser: { name: Opera, family: { name: Chrome, version: 39 }, version: '26.0', type: browser }, engine: { name: Blink }, os: { name: Slackware }, device: { type: desktop } } + readable: 'Opera Developer 26.0 on Slackware' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Slackware Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0' + result: { browser: { name: Firefox, version: '42.0', type: browser }, engine: { name: Gecko, version: '42.0' }, os: { name: Slackware }, device: { type: desktop } } + readable: 'Firefox 42.0 on Slackware' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Slackware; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/21.0 SeaMonkey/2.19' + result: { browser: { name: SeaMonkey, family: { name: Firefox, version: '21.0' }, version: '2.19', type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: Slackware }, device: { type: desktop } } + readable: 'SeaMonkey 2.19 on Slackware' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Slackware; Linux x86_64; rv:25.0.1) Gecko/20100101 Firefox/25.0' + result: { browser: { name: Firefox, version: '25.0', type: browser }, engine: { name: Gecko, version: 25.0.1 }, os: { name: Slackware }, device: { type: desktop } } + readable: 'Firefox 25.0 on Slackware' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); xx; rv:1.9.2.13) Gecko/20101209 CentOS/3.6-2.el5.centos Firefox/3.6.13' + result: { browser: { name: Firefox, version: 3.6.13, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: CentOS, version: '5' }, device: { type: desktop } } + readable: 'Firefox 3.6.13 on CentOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); xx; rv:1.9.2.23) Gecko/20110927 Red Hat/3.6-2.el5_7 Firefox/3.6.23' + result: { browser: { name: Firefox, version: 3.6.23, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: 'Red Hat', version: '5.7' }, device: { type: desktop } } + readable: 'Firefox 3.6.23 on Red Hat 5.7' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+ Debian/squeeze (2.30.6-1) Epiphany/2.30.6' + result: { browser: { name: 'GNOME Web', version: 2.30.6, type: browser }, engine: { name: Webkit, version: '531.2' }, os: { name: Debian }, device: { type: desktop } } + readable: 'GNOME Web 2.30.6 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+ gNewSense/parkes (2.30.6-1gnewsense1) Epiphany/2.30.6' + result: { browser: { name: 'GNOME Web', version: 2.30.6, type: browser }, engine: { name: Webkit, version: '531.2' }, os: { name: gNewSense, version: 2.30.6 }, device: { type: desktop } } + readable: 'GNOME Web 2.30.6 on gNewSense 2.30.6' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.7.8) Gecko/20050610 Firefox/1.0.4 (Debian package 1.0.4-3)' + result: { browser: { name: Firefox, version: 1.0.4, type: browser }, engine: { name: Gecko, version: 1.7.8 }, os: { name: Debian }, device: { type: desktop } } + readable: 'Firefox 1.0.4 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.8.1.18) Gecko/20080703 Mandriva/2.0.0.18-1.1mdv2008.0 (2008.0) Firefox/2.0.0.18' + result: { browser: { name: Firefox, version: 2.0.0.18, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Mandriva, version: '2008' }, device: { type: desktop } } + readable: 'Firefox 2.0.0.18 on Mandriva 2008' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.0.1) Gecko/2008072503 CentOS/3.0.1-1.el4.centos Firefox/3.0.1' + result: { browser: { name: Firefox, version: 3.0.1, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: CentOS, version: '4' }, device: { type: desktop } } + readable: 'Firefox 3.0.1 on CentOS 4' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.0.12) Gecko/2009072221 Iceweasel/3.0.6 (Debian-3.0.6-1)' + result: { browser: { name: Iceweasel, version: 3.0.6, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: Debian }, device: { type: desktop } } + readable: 'Iceweasel 3.0.6 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.0.18) Gecko/2010020400 SUSE/3.0.18-0.1.1 Firefox/3.0.18' + result: { browser: { name: Firefox, version: 3.0.18, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: SUSE, version: '3.0' }, device: { type: desktop } } + readable: 'Firefox 3.0.18 on SUSE 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.0.19) Gecko/2010031705 Red Hat/3.0.19-1.el4 Firefox/3.0.19' + result: { browser: { name: Firefox, version: 3.0.19, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: 'Red Hat', version: '4' }, device: { type: desktop } } + readable: 'Firefox 3.0.19 on Red Hat 4' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.0.3) Gecko/2008092903 Mandriva/1.9.0.3-1mdv2009.0 (2009.0) Firefox/3.0.3' + result: { browser: { name: Firefox, version: 3.0.3, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: Mandriva, version: '2009' }, device: { type: desktop } } + readable: 'Firefox 3.0.3 on Mandriva 2009' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.1.11) Gecko/20100728 Turbolinux/3.5.11-1 Firefox/3.5.11' + result: { browser: { name: Firefox, version: 3.5.11, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Turbolinux, version: '3.5' }, device: { type: desktop } } + readable: 'Firefox 3.5.11 on Turbolinux 3.5' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.2.17) Gecko/20110429 Mandriva Linux/1.9.2.17-0.1mdv2010.0 (2010.0) Firefox/3.6.17' + result: { browser: { name: Firefox, version: 3.6.17, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Mandriva, version: '2010' }, device: { type: desktop } } + readable: 'Firefox 3.6.17 on Mandriva 2010' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.2.17) Gecko/20120322 Fedora/3.6.17-1.nk.2oem.1 Firefox/3.6.17' + result: { browser: { name: Firefox, version: 3.6.17, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Firefox 3.6.17 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.2.26) Gecko/20120215 Red Hat/3.6-1.el5_7 Firefox/3.6.26' + result: { browser: { name: Firefox, version: 3.6.26, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: 'Red Hat', version: '5.7' }, device: { type: desktop } } + readable: 'Firefox 3.6.26 on Red Hat 5.7' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.2.3) Gecko/20100602 Gentoo Firefox/3.6.3' + result: { browser: { name: Firefox, version: 3.6.3, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Gentoo }, device: { type: desktop } } + readable: 'Firefox 3.6.3 on Gentoo' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+ gNewSense/parkes (2.30.6-1gnewsense1) Epiphany/2.30.6' + result: { browser: { name: 'GNOME Web', version: 2.30.6, type: browser }, engine: { name: Webkit, version: '531.2' }, os: { name: gNewSense, version: 2.30.6 }, device: { type: desktop } } + readable: 'GNOME Web 2.30.6 on gNewSense 2.30.6' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx; rv:1.9.2.13) Gecko/20101209 Mandriva Linux/1.9.2.13-0.1mdv2010.1 (2010.1) Firefox/3.6.13' + result: { browser: { name: Firefox, version: 3.6.13, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Mandriva, version: '2010' }, device: { type: desktop } } + readable: 'Firefox 3.6.13 on Mandriva 2010' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx; rv:1.9.2.17) Gecko/20110429 Mandriva Linux/1.9.2.17-0.1mdv2010.0 (2010.0) Firefox/3.6.17' + result: { browser: { name: Firefox, version: 3.6.17, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Mandriva, version: '2010' }, device: { type: desktop } } + readable: 'Firefox 3.6.17 on Mandriva 2010' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx; rv:1.9.2.22) Gecko/20111121 Gentoo Firefox/3.6.22' + result: { browser: { name: Firefox, version: 3.6.22, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Gentoo }, device: { type: desktop } } + readable: 'Firefox 3.6.22 on Gentoo' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx; rv:1.9.2.24) Gecko/20111109 Red Hat/3.6-3.el5_7 Firefox/3.6.24' + result: { browser: { name: Firefox, version: 3.6.24, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: 'Red Hat', version: '5.7' }, device: { type: desktop } } + readable: 'Firefox 3.6.24 on Red Hat 5.7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/14.0; Linux) KHTML/TDEHTML/14.0.1 (like Gecko) (Debian)' + result: { browser: { name: Konqueror, version: '14.0', type: browser }, engine: { name: KHTML }, os: { name: Debian }, device: { type: desktop } } + readable: 'Konqueror 14.0 on Debian' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.9 (like Gecko) (Kubuntu)' + result: { browser: { name: Konqueror, version: '3.5', type: browser }, engine: { name: KHTML, version: 3.5.9 }, os: { name: Kubuntu }, device: { type: desktop } } + readable: 'Konqueror 3.5 on Kubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko) SUSE' + result: { browser: { name: Konqueror, version: '4.1', type: browser }, engine: { name: KHTML, version: 4.1.3 }, os: { name: SUSE }, device: { type: desktop } } + readable: 'Konqueror 4.1 on SUSE' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.4 (like Gecko) Red Hat Enterprise Linux/4.3.4-19.el6' + result: { browser: { name: Konqueror, version: '4.3', type: browser }, engine: { name: KHTML, version: 4.3.4 }, os: { name: 'Red Hat', version: '6' }, device: { type: desktop } } + readable: 'Konqueror 4.3 on Red Hat 6' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.4; Linux 2.6.32-39-generic; X11; i686; en_US) KHTML/4.4.5 (like Gecko) Kubuntu' + result: { browser: { name: Konqueror, version: '4.4', type: browser }, engine: { name: KHTML, version: 4.4.5 }, os: { name: Kubuntu }, device: { type: desktop } } + readable: 'Konqueror 4.4 on Kubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.4; Linux) KHTML/4.4.3 (like Gecko) Fedora/4.4.3-2.fc11' + result: { browser: { name: Konqueror, version: '4.4', type: browser }, engine: { name: KHTML, version: 4.4.3 }, os: { name: Fedora, version: '11' }, device: { type: desktop } } + readable: 'Konqueror 4.4 on Fedora 11' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.5; Linux) KHTML/4.5.5 (like Gecko) Kubuntu' + result: { browser: { name: Konqueror, version: '4.5', type: browser }, engine: { name: KHTML, version: 4.5.5 }, os: { name: Kubuntu }, device: { type: desktop } } + readable: 'Konqueror 4.5 on Kubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Konqueror/4.6; Linux) KHTML/4.6.5 (like Gecko) Mageia/4.6.5-1.7.mga1' + result: { browser: { name: Konqueror, version: '4.6', type: browser }, engine: { name: KHTML, version: 4.6.5 }, os: { name: Mageia, version: '1' }, device: { type: desktop } } + readable: 'Konqueror 4.6 on Mageia 1' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux i686; U; Gentoo Linux; xx) Presto/2.10.289 Version/12.02' + result: { browser: { name: Opera, version: '12.02', type: browser }, engine: { name: Presto, version: 2.10.289 }, os: { name: Gentoo }, device: { type: desktop } } + readable: 'Opera 12.02 on Gentoo' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux i686; U; OpenSUSE 12.1; xx) Presto/2.10.229 Version/11.62' + result: { browser: { name: Opera, version: '11.62', type: browser }, engine: { name: Presto, version: 2.10.229 }, os: { name: SUSE, version: '12.1' }, device: { type: desktop } } + readable: 'Opera 11.62 on SUSE 12.1' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux x86_64; Debian) Presto/2.12.388 Version/12.12' + result: { browser: { name: Opera, version: '12.12', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Debian }, device: { type: desktop } } + readable: 'Opera 12.12 on Debian' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux x86_64; Suse) Presto/2.12.388 Version/12.16' + result: { browser: { name: Opera, version: '12.16', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Opera 12.16 on Linux' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux x86_64; U; Kubuntu 12.04 LTS; xx) Presto/2.10.229 Version/11.62' + result: { browser: { name: Opera, version: '11.62', type: browser }, engine: { name: Presto, version: 2.10.229 }, os: { name: Kubuntu, version: '12.04' }, device: { type: desktop } } + readable: 'Opera 11.62 on Kubuntu 12.04' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 moonOS/2.0 (kachana) Firefox/3.0.8' + result: { browser: { name: Firefox, version: 3.0.8, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: moonOS, version: '2.0' }, device: { type: desktop } } + readable: 'Firefox 3.0.8 on moonOS 2.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.1; Lindows 3.01; DigExt)' + readable: 'Lindows 3.01' + result: { os: { name: Lindows, version: '3.01' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Antergos Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.5.3 Safari/537.36' + readable: 'Maxthon 1.0.5 on Antergos Linux' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 33 }, version: 1.0.5, type: browser }, engine: { name: Blink }, os: { name: 'Antergos Linux' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Arch Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.5.0 Safari/537.36' + readable: 'Maxthon 1.0.5 on Arch Linux' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 33 }, version: 1.0.5, type: browser }, engine: { name: Blink }, os: { name: 'Arch Linux' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; ArchLinux) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/33.0.1703.0 Chrome/33.0.1703.0 Safari/537.36' + readable: 'Chromium 33.0.1703.0 on Arch Linux' + result: { browser: { name: Chromium, family: { name: Chrome, version: 33 }, version: 33.0.1703.0, type: browser }, engine: { name: Blink }, os: { name: 'Arch Linux' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Black Lab Linux 6.0 SR1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.5.3 Safari/537.36' + readable: 'Maxthon 1.0.5 on Black Lab Linux 6.0' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 33 }, version: 1.0.5, type: browser }, engine: { name: Blink }, os: { name: 'Black Lab Linux', version: '6.0' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; CentOS Linux release 7.0.1406 (Core)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.5.3 Safari/537.36' + readable: 'Maxthon 1.0.5 on CentOS 7.0' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 33 }, version: 1.0.5, type: browser }, engine: { name: Blink }, os: { name: CentOS, version: '7.0' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Debian GNU/Linux 7.5 (wheezy)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on Debian 7.5' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Debian, version: '7.5' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; elementary OS Freya) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on elementary OS Freya' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: 'elementary OS', version: { alias: Freya } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; elementary OS Luna) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.5.3 Safari/537.36' + readable: 'Maxthon 1.0.5 on elementary OS Luna' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 33 }, version: 1.0.5, type: browser }, engine: { name: Blink }, os: { name: 'elementary OS', version: { alias: Luna } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Gentoo Base System release 2.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on Gentoo 2.2' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Gentoo, version: '2.2' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Linux Mint 13 Maya) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1793.0 Maxthon/0.9.2.0 beta Safari/537.36' + readable: 'Maxthon 0.9.2 on Linux Mint 13' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 34 }, version: 0.9.2, type: browser }, engine: { name: Blink }, os: { name: 'Linux Mint', version: '13' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Linux Mint 16 Petra) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.3.10 Safari/537.36' + readable: 'Maxthon 1.0.3 on Linux Mint 16' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 33 }, version: 1.0.3, type: browser }, engine: { name: Blink }, os: { name: 'Linux Mint', version: '16' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Linux Mint 16 Petra) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on Linux Mint 16' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: 'Linux Mint', version: '16' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Linux Mint 17.2 Rafaela) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on Linux Mint 17.2' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: 'Linux Mint', version: '17.2' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Mageia 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on Mageia 4' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Mageia, version: '4' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; openSUSE 12.3 (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on SUSE 12.3' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: SUSE, version: '12.3' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; openSUSE 13.1 (Bottle) (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on SUSE 13.1' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: SUSE, version: '13.1' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Ubuntu 14.04.1 LTS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on Ubuntu 14.04' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Ubuntu, version: '14.04' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Ubuntu 13.10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on Ubuntu 13.10' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Ubuntu, version: '13.10' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; Ubuntu 14.10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Safari/537.36' + readable: 'Chrome 33 on Ubuntu 14.10' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Ubuntu, version: '14.10' }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; elementary OS Luna i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1495.0 Maxthon/0.9.1.0 beta Safari/537.36' + readable: 'Maxthon 0.9.1 on elementary OS Luna' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 28 }, version: 0.9.1, type: browser }, engine: { name: Blink }, os: { name: 'elementary OS', version: { alias: Luna } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; elementary OS Luna x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1495.0 Maxthon/0.9.1.0 beta Safari/537.36' + readable: 'Maxthon 0.9.1 on elementary OS Luna' + result: { browser: { name: Maxthon, family: { name: Chrome, version: 28 }, version: 0.9.1, type: browser }, engine: { name: Blink }, os: { name: 'elementary OS', version: { alias: Luna } }, device: { type: desktop } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-morphos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-morphos.yaml new file mode 100644 index 0000000..e996d2d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-morphos.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC MorphOS 2.7; Odyssey Web Browser; rv:1.17) AppleWebKit/535.14 (KHTML, like Gecko) OWB/1.17 Safari/535.14' + result: { browser: { name: Odyssey, version: '1.17', type: browser }, engine: { name: Webkit, version: '535.14' }, os: { name: MorphOS, version: '2.7' }, device: { type: desktop } } + readable: 'Odyssey 1.17 on MorphOS 2.7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC MorphOS 3.1; Odyssey Web Browser; rv:1.24) AppleWebKit/538.10 (KHTML, like Gecko) OWB/1.24 Safari/538.10' + result: { browser: { name: Odyssey, version: '1.24', type: browser }, engine: { name: Webkit, version: '538.10' }, os: { name: MorphOS, version: '3.1' }, device: { type: desktop } } + readable: 'Odyssey 1.24 on MorphOS 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC MorphOS 3.2; Odyssey Web Browser; rv:1.21) AppleWebKit/537.33 (KHTML, like Gecko) OWB/1.21 Safari/537.33' + result: { browser: { name: Odyssey, version: '1.21', type: browser }, engine: { name: Webkit, version: '537.33' }, os: { name: MorphOS, version: '3.2' }, device: { type: desktop } } + readable: 'Odyssey 1.21 on MorphOS 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC MorphOS 3.3; Odyssey Web Browser; rv:1.21) AppleWebKit/538.1 (KHTML, like Gecko) OWB/1.21 Safari/538.1' + result: { browser: { name: Odyssey, version: '1.21', type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: MorphOS, version: '3.3' }, device: { type: desktop } } + readable: 'Odyssey 1.21 on MorphOS 3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC MorphOS 3.4; Odyssey Web Browser; rv:1.23) AppleWebKit/538.1 (KHTML, like Gecko) OWB/1.23 Safari/538.1' + result: { browser: { name: Odyssey, version: '1.23', type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: MorphOS, version: '3.4' }, device: { type: desktop } } + readable: 'Odyssey 1.23 on MorphOS 3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC MorphOS 3.5; Odyssey Web Browser; rv:1.24) AppleWebKit/538.10 (KHTML, like Gecko) OWB/1.24 Safari/538.10' + result: { browser: { name: Odyssey, version: '1.24', type: browser }, engine: { name: Webkit, version: '538.10' }, os: { name: MorphOS, version: '3.5' }, device: { type: desktop } } + readable: 'Odyssey 1.24 on MorphOS 3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC MorphOS 3.6; Odyssey Web Browser; rv:1.24) AppleWebKit/538.1 (KHTML, like Gecko) OWB/1.24 Safari/538.1' + result: { browser: { name: Odyssey, version: '1.24', type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: MorphOS, version: '3.6' }, device: { type: desktop } } + readable: 'Odyssey 1.24 on MorphOS 3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; PowerPC MorphOS 3.7; Odyssey Web Browser; rv:1.23) AppleWebKit/538.1 (KHTML, like Gecko) OWB/1.23 Safari/538.1' + result: { browser: { name: Odyssey, version: '1.23', type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: MorphOS, version: '3.7' }, device: { type: desktop } } + readable: 'Odyssey 1.23 on MorphOS 3.7' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-os2.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-os2.yaml new file mode 100644 index 0000000..e6bb3a2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-os2.yaml @@ -0,0 +1,64 @@ +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; xx; rv:1.3) Gecko/20030616' + result: { engine: { name: Gecko, version: '1.3' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'an unknown browser based on Gecko 1.3 running on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; xx; rv:1.8.1.6) Gecko/20070731 Firefox/2.0.0.6' + result: { browser: { name: Firefox, version: 2.0.0.6, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 2.0.0.6 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.11) Gecko/20100101 Firefox/10.0.11' + result: { browser: { name: Firefox, version: 10.0.11, type: browser }, engine: { name: Gecko, version: 10.0.11 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 10.0.11 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20100101 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 17.0 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1' + result: { browser: { name: Firefox, version: 4.0.1, type: browser }, engine: { name: Gecko, version: 2.0.1 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 4.0.1 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:24.0) Gecko/20140428 Firefox/24.0' + result: { browser: { name: Firefox, version: '24.0', type: browser }, engine: { name: Gecko, version: '24.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 24.0 on OS/2 Warp 4.5' +- + headers: 'User-Agent: IBM-WebExplorer-DLL/v1.1h' + result: { browser: { name: 'IBM WebExplorer', version: '1.1', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer 1.1 on OS/2' +- + headers: 'User-Agent: IBM WebExplorer /v0.94' + result: { browser: { name: 'IBM WebExplorer', version: '0.94', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer 0.94 on OS/2' +- + headers: 'User-Agent: IBM WebExplorer /v1.01' + result: { browser: { name: 'IBM WebExplorer', version: '1.01', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer 1.01 on OS/2' +- + headers: 'User-Agent: IBM WebExplorer DLL /v1.03' + result: { browser: { name: 'IBM WebExplorer', version: '1.03', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer 1.03 on OS/2' +- + headers: 'User-Agent: IBM WebExplorer DLL /v1.1' + result: { browser: { name: 'IBM WebExplorer', version: '1.1', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer 1.1 on OS/2' +- + headers: 'User-Agent: IBM WebExplorer/v0.8' + result: { browser: { name: 'IBM WebExplorer', version: '0.8', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer 0.8 on OS/2' +- + headers: 'User-Agent: IBM WebExplorer Window API' + result: { browser: { name: 'IBM WebExplorer', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer on OS/2' +- + headers: 'User-Agent: IBM WebExplorer DLL' + result: { browser: { name: 'IBM WebExplorer', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer on OS/2' +- + headers: 'User-Agent: IBM WebExplorer Window API /v950716 Demo' + result: { browser: { name: 'IBM WebExplorer', type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'IBM WebExplorer on OS/2' +- + headers: 'User-Agent: Mozilla/2.02 (OS/2; I)' + result: { browser: { name: 'Netscape Navigator', version: 2.0.2, type: browser }, os: { name: OS/2 }, device: { type: desktop } } + readable: 'Netscape Navigator 2.0.2 on OS/2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-osx.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-osx.yaml new file mode 100644 index 0000000..f7bad9c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-osx.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: QuickTime/7.6 (qtver=7.6;cpu=IA32;os=Mac 10,5,7)' + result: { browser: { name: QuickTime, version: '7.6', type: 'app:mediaplayer' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'QuickTime 7.6 on Mac OS X 10.5' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-redstar.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-redstar.yaml new file mode 100644 index 0000000..858f61e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-redstar.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.1b4) Gecko/20130508 Fedora/1.9.1-2.5.rs3.0 NaenaraBrowser/3.5b4' + result: { browser: { name: Naenara, version: '3.5', type: browser }, engine: { name: Gecko, version: 1.9.1b4 }, os: { name: 'Red Star', version: '3.0' }, device: { type: desktop } } + readable: 'Naenara 3.5 on Red Star 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; ko-KP, en; rv:1.8.1.8) Gecko/20090718 《붉ì€ë³„》/2.5 NaenaraBrowser/2.0.0.8' + result: { browser: { name: Naenara, version: '2.0', type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'Red Star', version: '2.5' }, device: { type: desktop } } + readable: 'Naenara 2.0 on Red Star 2.5' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-remix.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-remix.yaml new file mode 100644 index 0000000..573e5af --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-remix.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Browse/0.6 (Linux 3.10.0+; RemixOS 5.1.1; RemixOS SDK built for x86; en_us) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.0.0 Desktop (Opera Mini/Compression)' + readable: 'Browse 0.6 on Remix OS 1.0' + result: { browser: { name: Browse, version: '0.6', type: browser }, engine: { name: Blink }, os: { name: 'Remix OS', family: Android, version: '1.0' }, device: { type: desktop } } +- + headers: 'User-Agent: Browse/0.6 (Linux 3.10.0+; RemixOS 6.0; RemixOS SDK built for x86; en_us) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.119 Desktop' + readable: 'Browse 0.6 on Remix OS 2.0' + result: { browser: { name: Browse, family: { name: Chrome, version: 44 }, version: '0.6', type: browser }, engine: { name: Blink }, os: { name: 'Remix OS', family: Android, version: '2.0' }, device: { type: desktop } } +- + headers: 'User-Agent: Browse/0.6.mini (Linux 3.4.0+; RemixOS 6.0; Motorola Moto G 2014; en_us) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.119 Desktop' + readable: 'Browse 0.6 on a Motorola Moto G (Google Edition, 2014) running Remix OS 2.0' + result: { browser: { name: Browse, family: { name: Chrome, version: 44 }, version: 0.6., type: browser }, engine: { name: Blink }, os: { name: 'Remix OS', family: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G (Google Edition, 2014)' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-riscos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-riscos.yaml new file mode 100644 index 0000000..2d1d63d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-riscos.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/1.10 [en] (Compatible; RISC OS 3.70; Oregano 1.10)' + result: { browser: { name: Oregano, version: '1.10', type: browser }, os: { name: 'RISC OS', version: '3.70' }, device: { type: desktop } } + readable: 'Oregano 1.10 on RISC OS 3.70' +- + headers: 'User-Agent: Mozilla/3.04 (compatible; ANTFresco/2.13; RISC OS 4.02)' + result: { browser: { name: 'ANT Fresco', version: '2.13', type: browser }, os: { name: 'RISC OS', version: '4.02' }, device: { type: desktop } } + readable: 'ANT Fresco 2.13 on RISC OS 4.02' +- + headers: 'User-Agent: Mozilla/4.01 (Compatible; Acorn Browse 1.25 [23-Oct-97] AW 97; RISC OS 4.39) Acorn-HTTP/0.84' + result: { browser: { name: 'Acorn Browse', version: '1.25', type: browser }, os: { name: 'RISC OS', version: '4.39' }, device: { type: desktop } } + readable: 'Acorn Browse 1.25 on RISC OS 4.39' +- + headers: 'User-Agent: Mozilla/5.0 (ChoX11; U; RISC OS; xx; rv:1.8.1.12) Gecko/20080224 BonEcho/2.0.0.12' + result: { browser: { name: Firefox, version: 2.0.0.12, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'RISC OS' }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.12 on RISC OS' +- + headers: 'User-Agent: NetSurf/2.0 (RISC OS; armv5l)' + result: { browser: { name: Surf, version: '2.0', type: browser }, os: { name: 'RISC OS' }, device: { type: desktop } } + readable: 'Surf 2.0 on RISC OS' +- + headers: 'User-Agent: NetSurf/3.0 (RISC OS)' + result: { browser: { name: Surf, version: '3.0', type: browser }, os: { name: 'RISC OS' }, device: { type: desktop } } + readable: 'Surf 3.0 on RISC OS' +- + headers: 'User-Agent: Mozilla/4.01 (Compatible; Acorn Phoenix 2.08 [intermediate]; RISC OS 4.39) Acorn-HTTP/0.84' + result: { browser: { name: 'Acorn Browse', version: '2.08', type: browser }, os: { name: 'RISC OS', version: '4.39' }, device: { type: desktop } } + readable: 'Acorn Browse 2.08 on RISC OS 4.39' +- + headers: 'User-Agent: Mozilla/4.00 [en] (Compatible; RISC OS 4.39; MSIE 5.01; Windows 98; Oregano 1.10)' + result: { browser: { name: Oregano, version: '1.10', type: browser }, os: { name: 'RISC OS', version: '4.39' }, device: { type: desktop } } + readable: 'Oregano 1.10 on RISC OS 4.39' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-solaris.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-solaris.yaml new file mode 100644 index 0000000..10334dd --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-solaris.yaml @@ -0,0 +1,76 @@ +- + headers: 'User-Agent: Mozilla/3.0 (X11; I; SunOS 4.1.4 sun4m)' + result: { browser: { name: 'Netscape Navigator', version: '3.0', type: browser }, os: { name: Solaris, family: BSD, version: 1.1.2 }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0 on Solaris 1.1.2' +- + headers: 'User-Agent: Mozilla/3.0 (X11; I; SunOS 5.4 sun4m)' + result: { browser: { name: 'Netscape Navigator', version: '3.0', type: browser }, os: { name: Solaris, family: UNIX, version: '2.4' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0 on Solaris 2.4' +- + headers: 'User-Agent: Mozilla/3.0 (X11; I; SunOS 5.5 sun4m)' + result: { browser: { name: 'Netscape Navigator', version: '3.0', type: browser }, os: { name: Solaris, family: UNIX, version: '2.5' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0 on Solaris 2.5' +- + headers: 'User-Agent: Mozilla/3.01 (X11; I; SunOS 4.1.3 sun4c)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.1, type: browser }, os: { name: Solaris, family: BSD, version: '1.1' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.1 on Solaris 1.1' +- + headers: 'User-Agent: Mozilla/3.01 (X11; I; SunOS 4.1.3-JL sun4m)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.1, type: browser }, os: { name: Solaris, family: BSD, version: '1.1' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.1 on Solaris 1.1' +- + headers: 'User-Agent: Mozilla/3.01 (X11; I; SunOS 5.4 sun4m)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.1, type: browser }, os: { name: Solaris, family: UNIX, version: '2.4' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.1 on Solaris 2.4' +- + headers: 'User-Agent: Mozilla/3.01 (X11; I; SunOS 5.5.1 sun4u)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.1, type: browser }, os: { name: Solaris, family: UNIX, version: 2.5.1 }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.1 on Solaris 2.5.1' +- + headers: 'User-Agent: Mozilla/3.01Gold (X11; I; SunOS 5.5.1 i86pc)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.1, type: browser }, os: { name: Solaris, family: UNIX, version: 2.5.1 }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.1 on Solaris 2.5.1' +- + headers: 'User-Agent: Mozilla/3.04 [ja_euc] (X11; I; SunOS 5.9 sun4u)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.4, type: browser }, os: { name: Solaris, family: UNIX, version: '9' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.4 on Solaris 9' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; SunOS 5.9 sun4u; X11)' + result: { browser: { name: 'Internet Explorer', version: '5.0', type: browser }, engine: { name: Trident }, os: { name: Solaris, family: UNIX, version: '9' }, device: { type: desktop } } + readable: 'Internet Explorer 5.0 on Solaris 9' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; SunOS 5.5; FDM)' + result: { browser: { name: 'Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: Solaris, family: UNIX, version: '5' }, device: { type: desktop } } + readable: 'Internet Explorer 6.0 on Solaris 5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; SunOS 5.10 sun4u; X11)' + result: { browser: { name: 'Internet Explorer', version: '5.0', type: browser }, engine: { name: Trident }, os: { name: Solaris, family: UNIX, version: '10' }, device: { type: desktop } } + readable: 'Internet Explorer 5.0 on Solaris 10' +- + headers: 'User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:24.0) Gecko/20100101 Firefox/24.0' + result: { browser: { name: Firefox, version: '24.0', type: browser }, engine: { name: Gecko, version: '24.0' }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'Firefox 24.0 on Solaris' +- + headers: 'User-Agent: Opera/9.24 (X11; SunOS i86pc; U; en)' + result: { browser: { name: Opera, version: '9.24', type: browser }, engine: { name: Presto }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'Opera 9.24 on Solaris' +- + headers: 'User-Agent: Opera/9.80 (X11; SunOS sun4u; U; xx) Presto/2.2 Version/10.11' + result: { browser: { name: Opera, version: '10.11', type: browser }, engine: { name: Presto, version: '2.2' }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'Opera 10.11 on Solaris' +- + headers: 'User-Agent: User-Agent: Mozilla/1.0N (X11; SunOS 4.1.1 sun4c)' + result: { browser: { name: 'Netscape Navigator', version: '1.0', type: browser }, os: { name: Solaris, family: BSD, version: '1.0' }, device: { type: desktop } } + readable: 'Netscape Navigator 1.0 on Solaris 1.0' +- + headers: 'User-Agent: User-Agent: Mozilla/1.1N (X11; I; SunOS 4.1.2 sun4c)' + result: { browser: { name: 'Netscape Navigator', version: '1.1', type: browser }, os: { name: Solaris, family: BSD, version: 1.0.1 }, device: { type: desktop } } + readable: 'Netscape Navigator 1.1 on Solaris 1.0.1' +- + headers: 'User-Agent: Opera/6.12 (Solaris 9; U ) [en]' + result: { browser: { name: Opera, version: '6.12', type: browser }, engine: { name: Electra }, os: { name: Solaris, family: UNIX, version: '9' }, device: { type: desktop } } + readable: 'Opera 6.12 on Solaris 9' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Sun Solaris; xx) AppleWebKit/533.3 (KHTML, like Gecko) QupZilla/1.4.4 Safari/533.3' + result: { browser: { name: QupZilla, version: 1.4.4, type: browser }, engine: { name: Webkit, version: '533.3' }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'QupZilla 1.4.4 on Solaris' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-syllable.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-syllable.yaml new file mode 100644 index 0000000..1bb0486 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-syllable.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: Mozilla/5.0 (compatible; ABrowse 0.4; Syllable)' + result: { browser: { name: ABrowse, version: '0.4', type: browser }, os: { name: Syllable }, device: { type: desktop } } + readable: 'ABrowse 0.4 on Syllable' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)' + result: { browser: { name: ABrowse, version: '0.6', type: browser }, engine: { name: Webkit, version: '420' }, os: { name: Syllable }, device: { type: desktop } } + readable: 'ABrowse 0.6 on Syllable' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; U; ABrowse 0.7; Syllable) AppleWebKit/420+ (KHTML, like Gecko)' + result: { browser: { name: ABrowse, version: '0.7', type: browser }, engine: { name: Webkit, version: '420' }, os: { name: Syllable }, device: { type: desktop } } + readable: 'ABrowse 0.7 on Syllable' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; U; Webster 0.1; Syllable) AppleWebKit/420+ (KHTML, like Gecko)' + result: { browser: { name: Webster, version: '0.1', type: browser }, engine: { name: Webkit, version: '420' }, os: { name: Syllable }, device: { type: desktop } } + readable: 'Webster 0.1 on Syllable' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-unix.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-unix.yaml new file mode 100644 index 0000000..2290796 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-unix.yaml @@ -0,0 +1,72 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Unix) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7' + result: { browser: { name: Chrome, version: '16', type: browser }, engine: { name: Webkit, version: '535.7' }, os: { name: Unix }, device: { type: desktop } } + readable: 'Chrome 16 on Unix' +- + headers: 'User-Agent: Mozilla/5.0 (Unix; rv:9.0.1) Gecko/20100101 Firefox/9.0.1' + result: { browser: { name: Firefox, version: 9.0.1, type: browser }, engine: { name: Gecko, version: 9.0.1 }, os: { name: Unix }, device: { type: desktop } } + readable: 'Firefox 9.0.1 on Unix' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Unix; xx) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15 Surf/0.6.1' + result: { browser: { name: Surf, family: { name: Chrome, version: 24 }, version: 0.6.1, type: browser }, engine: { name: Webkit, version: '537.15' }, os: { name: Unix }, device: { type: desktop } } + readable: 'Surf 0.6.1 on Unix' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Unix; xx) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15 Surf/1.0' + result: { browser: { name: Surf, family: { name: Chrome, version: 24 }, version: '1.0', type: browser }, engine: { name: Webkit, version: '537.15' }, os: { name: Unix }, device: { type: desktop } } + readable: 'Surf 1.0 on Unix' +- + headers: 'User-Agent: Surf/0.4.1 (X11; U; Unix; xx) AppleWebKit/531.2+ Compatible (Safari)' + result: { browser: { name: Surf, version: 0.4.1, type: browser }, engine: { name: Webkit, version: '531.2' }, os: { name: Unix } } + readable: 'Surf 0.4.1 on Unix' +- + headers: 'User-Agent: Mozilla/4.04_(X11;_I;_OSF_3.2d)/1.0 libwww/4.0D' + result: { browser: { name: 'Netscape Communicator', version: 4.0.4, type: browser }, os: { name: 'Digital Unix', family: UNIX, version: '3.2' }, device: { type: desktop } } + readable: 'Netscape Communicator 4.0.4 on Digital Unix 3.2' +- + headers: 'User-Agent: Mozilla/4.04j2 [en] (X11; I; AIX 4.2)' + result: { browser: { name: 'Netscape Communicator', version: 4.0.4, type: browser }, os: { name: AIX, family: UNIX, version: '4.2' }, device: { type: desktop } } + readable: 'Netscape Communicator 4.0.4 on AIX 4.2' +- + headers: 'User-Agent: Mozilla/4.04 [en] (X11; I; HP-UX B.10.20 9000/712)' + result: { browser: { name: 'Netscape Communicator', version: 4.0.4, type: browser }, os: { name: HP-UX, family: UNIX, version: '10.20' }, device: { type: desktop } } + readable: 'Netscape Communicator 4.0.4 on HP-UX 10.20' +- + headers: 'User-Agent: Mozilla/4.03 [en] (X11; I; HP-UX A.09.04 9000/816)' + result: { browser: { name: 'Netscape Communicator', version: 4.0.3, type: browser }, os: { name: HP-UX, family: UNIX, version: '9.04' }, device: { type: desktop } } + readable: 'Netscape Communicator 4.0.3 on HP-UX 9.04' +- + headers: 'User-Agent: Mozilla/1.1I (X11; I; NEWS-OS 6.1.1 news5000)' + result: { browser: { name: 'Netscape Navigator', version: '1.1', type: browser }, os: { name: 'NEWS OS', family: UNIX, version: 6.1.1 }, device: { type: desktop } } + readable: 'Netscape Navigator 1.1 on NEWS OS 6.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; GENIX 4.1 MG-200/NS32332; en-US; rv:4.7.1.1) Gecko/20080815 SeaMonkey/1.2.3' + result: { browser: { name: SeaMonkey, version: 1.2.3, type: browser }, engine: { name: Gecko, version: 4.7.1 }, os: { name: GENIX, family: BSD, version: '4.1' }, device: { type: desktop } } + readable: 'SeaMonkey 1.2.3 on GENIX 4.1' +- + headers: 'User-Agent: Links (2.8; ULTRIX 4.5 VAX; GNU C 1; text)' + result: { browser: { name: Links, version: '2.8', type: 'browser:text' }, os: { name: ULTRIX, family: BSD, version: '4.5' }, device: { type: desktop } } + readable: 'Links 2.8 on ULTRIX 4.5' +- + headers: 'User-Agent: Opera/6.11 (UNIX; U) [en]' + result: { browser: { name: Opera, version: '6.11', type: browser }, engine: { name: Electra }, os: { name: Unix }, device: { type: desktop } } + readable: 'Opera 6.11 on Unix' +- + headers: 'User-Agent: Opera/7.10 (UNIX; U) [en]' + result: { browser: { name: Opera, version: '7.10', type: browser }, engine: { name: Presto }, os: { name: Unix }, device: { type: desktop } } + readable: 'Opera 7.10 on Unix' +- + headers: 'User-Agent: (Mozilla/7.2 (X11; U; EWS-UNIX rev 9.2/Solaris; en-US; rv:1.8.4) Gecko/20050314 Firefox/1.0-rc3)' + result: { browser: { name: Firefox, version: '1.0', type: browser }, engine: { name: Gecko, version: 1.8.4 }, os: { name: EWS-UX, family: UNIX, version: '9.2' }, device: { type: desktop } } + readable: 'Firefox 1.0 on EWS-UX 9.2' +- + headers: 'User-Agent: Mozilla/1.1I [en] (X11; I; UNIX_SV 4.2MP R4000)' + result: { browser: { name: 'Netscape Navigator', version: '1.1', type: browser }, os: { name: 'UNIX System V', family: UNIX, version: '4.2' }, device: { type: desktop } } + readable: 'Netscape Navigator 1.1 on UNIX System V 4.2' +- + headers: 'User-Agent: Mozilla/1.1I (X11; I; UNIX_SV 4.2MP R4000)' + result: { browser: { name: 'Netscape Navigator', version: '1.1', type: browser }, os: { name: 'UNIX System V', family: UNIX, version: '4.2' }, device: { type: desktop } } + readable: 'Netscape Navigator 1.1 on UNIX System V 4.2' +- + headers: 'User-Agent: Mozilla/3.01 [ja_euc] (X11; I; UNIX_SV 4.2MP R4000)' + result: { browser: { name: 'Netscape Navigator', version: 3.0.1, type: browser }, os: { name: 'UNIX System V', family: UNIX, version: '4.2' }, device: { type: desktop } } + readable: 'Netscape Navigator 3.0.1 on UNIX System V 4.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-windows.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-windows.yaml new file mode 100644 index 0000000..28f162e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/os-windows.yaml @@ -0,0 +1,88 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)' + result: { browser: { name: 'Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Internet Explorer 6.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; WinXP; x86) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36' + result: { browser: { name: Chrome, version: 37.0.2049.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Chrome Dev 37.0.2049.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; ARM; Trident/7.0; rv:11.0) like Gecko' + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.3', alias: 'RT 8.1' } }, device: { type: desktop } } + readable: 'Internet Explorer 11.0 on Windows RT 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows XP) AppleWebKit/537.40 (KHTML, like Gecko) Qt/4.8.0 Safari/537.40' + result: { browser: { using: { name: Qt, version: 4.8.0 } }, engine: { name: Webkit, version: '537.40' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Qt 4.8.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows XP; rv:9.0.1) Gecko/20100101 Firefox/9.0.1' + result: { browser: { name: Firefox, version: 9.0.1, type: browser }, engine: { name: Gecko, version: 9.0.1 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox 9.0.1 on Windows XP' +- + headers: 'User-Agent: Ziepod 1.0 (www.ziepod.com;PodcastReceiver&Player; Windows Vista)' + result: { browser: { name: Ziepod, version: '1.0', type: 'app:podcast' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Ziepod 1.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 360SE)' + result: { browser: { name: 'Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Internet Explorer 6.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; MAM2)' + result: { browser: { name: 'Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Internet Explorer 9.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; MAM3)' + result: { browser: { name: 'Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop, manufacturer: MSI } } + readable: 'Internet Explorer 10.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/3.0 (Windows 2000; U) Opera 5.12 [de]' + result: { browser: { name: Opera, version: '5.12', type: browser }, engine: { name: Electra }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Opera 5.12 on Windows 2000' +- + headers: 'User-Agent: Mozilla/3.0 (Windows 2000; U) Opera 6.03 [ja]' + result: { browser: { name: Opera, version: '6.03', type: browser }, engine: { name: Electra }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Opera 6.03 on Windows 2000' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.0; Windows 2000)' + result: { browser: { name: 'Internet Explorer', version: '4.0', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Internet Explorer 4.0 on Windows 2000' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000)' + result: { browser: { name: 'Internet Explorer', version: '5.0', type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Internet Explorer 5.0 on Windows 2000' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.0 [en]' + result: { browser: { name: Opera, version: '6.0', type: browser }, engine: { name: Electra }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Opera 6.0 on Windows 2000' +- + headers: 'User-Agent: Opera/7.0 (Windows 2000; U) [en]' + result: { browser: { name: Opera, version: '7.0', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Opera 7.0 on Windows 2000' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Opera/3.0; Windows 4.10) 3.51 [en]' + result: { browser: { name: Opera, version: '3.0', type: browser }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Opera 3.0 on Windows 98' +- + headers: 'User-Agent: Opera/6.03 (Windows Me; U) [en]' + result: { browser: { name: Opera, version: '6.03', type: browser }, engine: { name: Electra }, os: { name: Windows, version: { value: '4.9', alias: ME } }, device: { type: desktop } } + readable: 'Opera 6.03 on Windows ME' +- + headers: 'User-Agent: Microsoft Internet Explorer/5.2 (Windows 4.0; )' + result: { os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Windows 95' +- + headers: 'User-Agent: Mozilla/2.01 (Win16; I)' + result: { browser: { name: 'Netscape Navigator', version: 2.0.1, type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'Netscape Navigator 2.0.1 on Windows' +- + headers: 'User-Agent: Mozilla/4.01 [en] (Win16; I)' + result: { browser: { name: 'Netscape Communicator', version: 4.0.1, type: browser }, os: { name: Windows }, device: { type: desktop } } + readable: 'Netscape Communicator 4.0.1 on Windows' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32);' + result: { browser: { name: 'Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: Windows }, device: { type: desktop } } + readable: 'Internet Explorer 6.0 on Windows' +- + headers: 'User-Agent: Mozilla/5.0 (Windows IoT 10.0; Android 6.0.1; WebView/3.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Mobile Safari/537.36 Edge/16.17035' + readable: 'Edge 16 on Windows 10 IoT Core' + result: { browser: { name: Edge, version: '16', type: browser }, engine: { name: EdgeHTML, version: '16.17035' }, os: { name: Windows, version: { value: '10.0', alias: '10 IoT Core' } }, device: { type: desktop } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/other.yaml new file mode 100644 index 0000000..1d6171c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/other.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: WorldWideweb (NEXT)' + result: { browser: { name: WorldWideWeb, type: browser }, os: { name: NextStep }, device: { type: desktop } } + readable: 'WorldWideWeb on NextStep' +- + headers: 'User-Agent: Mozilla/4.08 (Charon; Inferno)' + result: { browser: { name: Charon, type: browser }, os: { name: Inferno }, device: { type: desktop } } + readable: 'Charon on Inferno' +- + headers: 'User-Agent: VMS_Mosaic/3.8-1 (Motif;OpenVMS V7.3-2 DEC 3000 - M700) libwww/2.12_Mosaic' + result: { browser: { name: 'VMS Mosaic', family: Mosaic, version: '3.8', type: browser }, os: { name: OpenVMS, version: '7.3' }, device: { type: desktop } } + readable: 'VMS Mosaic 3.8 on OpenVMS 7.3' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 ASW/1.51.2220.53' + readable: 'Avast SafeZone 1.51 on Windows 10' + result: { browser: { name: 'Avast SafeZone', family: { name: Chrome, version: 51 }, version: '1.51', type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/platform-electron.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/platform-electron.yaml new file mode 100644 index 0000000..661519d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/platform-electron.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Atom/0.136.0 Chrome/37.0.2062.102 AtomShell/0.17.1 Safari/537.36' + result: { browser: { name: Atom, using: { name: Electron, version: 0.17.1 }, family: { name: Chrome, version: 37 }, version: 0.136.0, type: 'app:editor' }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Atom 0.136.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Atom/1.2.4 Chrome/45.0.2454.85 Electron/0.34.0 Safari/537.36' + result: { browser: { name: Atom, using: { name: Electron, version: 0.34.0 }, family: { name: Chrome, version: 45 }, version: 1.2.4, type: 'app:editor' }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Atom 1.2.4 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Atom/0.136.0 Chrome/37.0.2062.102 AtomShell/0.17.1 Safari/537.36' + result: { browser: { name: Atom, using: { name: Electron, version: 0.17.1 }, family: { name: Chrome, version: 37 }, version: 0.136.0, type: 'app:editor' }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Atom 0.136.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) AtomShellDefaultApp/0.1.0 Chrome/37.0.2062.102 AtomShell/0.17.2 Safari/537.36' + result: { browser: { using: { name: Electron, version: 0.17.2 }, family: { name: Chrome, version: 37 }, type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Electron 0.17.2 on Linux' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/platform-qt.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/platform-qt.yaml new file mode 100644 index 0000000..8883712 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/desktop/platform-qt.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (N; Windows NT 6.1; WOW64) AppleWebKit/538.1 (KHTML, like Gecko) QtMiniBrowser/0.1 Safari/538.1' + result: { browser: { name: QtMiniBrowser, version: '0.1', type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'QtMiniBrowser 0.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/0.9.0 Chrome/33.0.1750.149 Safari/537.36' + result: { browser: { using: Qt, family: { name: Chrome, version: 33 }, type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Qt on Linux' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/amazon.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/amazon.yaml new file mode 100644 index 0000000..b0530b8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/amazon.yaml @@ -0,0 +1,24 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: ereader, manufacturer: Amazon, model: 'Kindle 1' } } + readable: 'NetFront 3.3 on an Amazon Kindle 1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 600x800)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: ereader, manufacturer: Amazon, model: 'Kindle 2' } } + readable: 'NetFront 3.4 on an Amazon Kindle 2' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.5 (screen 600x800; rotate)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: ereader, manufacturer: Amazon, model: 'Kindle 2' } } + readable: 'NetFront 3.4 on an Amazon Kindle 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600X800; rotate)' + result: { engine: { name: Webkit, version: '528.5' }, device: { type: ereader, manufacturer: Amazon, model: 'Kindle 3' } } + readable: 'an Amazon Kindle 3' +- + headers: 'User-Agent: Mozilla/5.0 (X11; ; U; Linux armv7l; zh-cn) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ Kindle SkipStone 1.0.1' + result: { engine: { name: Webkit, version: '534.26' }, device: { type: ereader, manufacturer: Amazon, model: 'Kindle Touch or later' } } + readable: 'an Amazon Kindle Touch or later' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+' + result: { engine: { name: Webkit, version: '531.2' }, device: { type: ereader, manufacturer: Amazon, model: 'Kindle 3 or later' } } + readable: 'an Amazon Kindle 3 or later' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/kobo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/kobo.yaml new file mode 100644 index 0000000..eddc475 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/kobo.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 (Kobo Touch)' + result: { engine: { name: Webkit, version: '533.1' }, device: { type: ereader, manufacturer: Kobo, series: eReader } } + readable: 'a Kobo eReader' +- + headers: 'User-Agent: Mozilla/5.0 (QtEmbedded; Linux) AppleWebKit/534.34 (KHTML, like Gecko) Kobo eReader Safari/534.34' + result: { browser: { using: Qt }, engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: Kobo, series: eReader } } + readable: 'Qt on a Kobo eReader' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/nook.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/nook.yaml new file mode 100644 index 0000000..0813821 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/nook.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; en-us; NOOK BNRV300 Build/ERD79) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: ereader, manufacturer: 'Barnes & Noble', model: 'NOOK Color' } } + readable: 'Android Browser on a Barnes & Noble NOOK Color running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; en-us; NOOK BNRV350 Build/ERD79) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: ereader, manufacturer: 'Barnes & Noble', model: 'NOOK Simple Touch' } } + readable: 'Android Browser on a Barnes & Noble NOOK Simple Touch running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; NOOK BNRV200 Build/ERD79 1.4.3) Apple WebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: ereader, manufacturer: 'Barnes & Noble', model: 'NOOK Color' } } + readable: 'Android Browser on a Barnes & Noble NOOK Color running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; NOOK BNTV250 Build/GINGERBREAD 1.4.3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: ereader, manufacturer: 'Barnes & Noble', model: 'NOOK Tablet' } } + readable: 'Android Browser on a Barnes & Noble NOOK Tablet running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; NOOK BNTV250A Build/GINGERBREAD 1.4.3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: ereader, manufacturer: 'Barnes & Noble', model: 'NOOK Tablet' } } + readable: 'Android Browser on a Barnes & Noble NOOK Tablet running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; BNTV400 Build/IMM76L) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '537.16' }, os: { name: Android, version: 4.0.4 }, device: { type: ereader, manufacturer: 'Barnes & Noble', model: 'NOOK HD Tablet' } } + readable: 'Android Browser on a Barnes & Noble NOOK HD Tablet running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; NOOK BNTV400 Build/ICS) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: ereader, manufacturer: 'Barnes & Noble', model: 'NOOK HD Tablet' } } + readable: 'Android Browser on a Barnes & Noble NOOK HD Tablet running Android 4.0.4' +- + headers: 'User-Agent: nook browser/1.0' + result: { browser: { name: 'Android Browser' }, os: { name: Android }, device: { type: ereader, manufacturer: 'Barnes & Noble', model: NOOK } } + readable: 'Android Browser on a Barnes & Noble NOOK running Android' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/other.yaml new file mode 100644 index 0000000..ab9951d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/other.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Iriver ; EB07 ) AppleWebKit/534.16 (KHTML, like Gecko) Version/5.0 Safari/534.16' + result: { engine: { name: Webkit, version: '534.16' }, device: { type: ereader, manufacturer: iRiver, model: 'Story HD EB07' } } + readable: 'an iRiver Story HD EB07' +- + headers: 'User-Agent: Mozilla/5.0 (mobile; CPU ARM Linux 2.6.21;en-us) AppleWebKit/525.1 (bookeen/cybook) Orizon/1.0 (screen 600x800)' + result: { engine: { name: Webkit, version: '525.1' }, device: { type: ereader, manufacturer: Bookeen, series: Cybook } } + readable: 'a Bookeen Cybook' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/pocketbook.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/pocketbook.yaml new file mode 100644 index 0000000..faa3c07 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/pocketbook.yaml @@ -0,0 +1,52 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; cs_CZ) AppleWebKit/534.34 PocketBook/840 (screen 1200x1600; FW W840.5.4.98) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: InkPad } } + readable: 'a PocketBook InkPad' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebKit/534.34 PocketBook/515 (screen 600x800; FW W515.4.4.540) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: Mini } } + readable: 'a PocketBook Mini' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebKit/534.34 PocketBook/614 (screen 600x800; FW W515.4.4.540) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: 'Basic 2' } } + readable: 'a PocketBook Basic 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebKit/534.34 PocketBook/623 (screen 758x1024; FW T623.4.4.616) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: 'Touch Lux' } } + readable: 'a PocketBook Touch Lux' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebKit/534.34 PocketBook/624 (screen 600x800; FW W624.4.4.468) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: 'Basic Touch' } } + readable: 'a PocketBook Basic Touch' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebKit/534.34 PocketBook/626 (screen 758x1024; FW W626.4.4.496) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: 'Touch Lux 2' } } + readable: 'a PocketBook Touch Lux 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebKit/534.34 PocketBook/640 (screen 600x800; FW W640.4.4.530) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: Aqua } } + readable: 'a PocketBook Aqua' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebKit/534.34 PocketBook/650 (screen 758x1024; FW E650.5.0.329) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: Ultra } } + readable: 'a PocketBook Ultra' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; ru_RU) AppleWebKit/534.34 PocketBook/622 (screen 600x800; FW E622.4.4.566) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: Touch } } + readable: 'a PocketBook Touch' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; ru_RU) AppleWebKit/534.34 PocketBook/630 (screen 758x1024; FW R630.5.2.375) Mobile' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: Sense } } + readable: 'a PocketBook Sense' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; en_US) AppleWebKit/534.34 PocketBook/801 (screen 600x800; FW W801.4.1.886)' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: 'Color Lux' } } + readable: 'a PocketBook Color Lux' +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebKit/534.34 PocketBook/631 (screen 1072x1448; FW U631.5.16.579) Mobile' + readable: 'a PocketBook Touch HD' + result: { engine: { name: Webkit, version: '534.34' }, device: { type: ereader, manufacturer: PocketBook, model: 'Touch HD' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux like Android; en_US) AppleWebkit/538.1 PocketBook/641 (screen 758x1024; FW U641.5.18.72) Mobile' + readable: 'a PocketBook Aqua 2' + result: { engine: { name: Webkit, version: '538.1' }, device: { type: ereader, manufacturer: PocketBook, model: 'Aqua 2' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/sony.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/sony.yaml new file mode 100644 index 0000000..97c26aa --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/ereader/sony.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; en-us; EBRD1101; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { engine: { name: Webkit, version: '533.1' }, device: { type: ereader, manufacturer: Sony, model: PRS-T1, series: Reader } } + readable: 'a Sony PRS-T1 Reader' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; en-us; EBRD1201; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { engine: { name: Webkit, version: '533.1' }, device: { type: ereader, manufacturer: Sony, model: PRS-T2, series: Reader } } + readable: 'a Sony PRS-T2 Reader' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; en-us; EBRD1301; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { engine: { name: Webkit, version: '533.1' }, device: { type: ereader, manufacturer: Sony, model: PRS-T3, series: Reader } } + readable: 'a Sony PRS-T3 Reader' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; ja-jp; EBRD1102; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { engine: { name: Webkit, version: '533.1' }, device: { type: ereader, manufacturer: Sony, model: PRS-G1, series: Reader } } + readable: 'a Sony PRS-G1 Reader' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/microsoft.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/microsoft.yaml new file mode 100644 index 0000000..c24212d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/microsoft.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox One) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10586' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox One' } } + readable: 'Edge 13 on a Microsoft Xbox One running Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Xbox; Xbox One) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10586' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox One' } } + readable: 'Edge 13 on a Microsoft Xbox One running Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Xbox; Xbox One)' + result: { browser: { name: 'Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox One' } } + readable: 'Internet Explorer 10.0 on a Microsoft Xbox One' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)' + result: { browser: { name: 'Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox 360' } } + readable: 'Internet Explorer 9.0 on a Microsoft Xbox 360' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)' + result: { browser: { name: 'Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox 360' } } + readable: 'Internet Explorer 9.0 on a Microsoft Xbox 360' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/nintendo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/nintendo.yaml new file mode 100644 index 0000000..19d1b73 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/nintendo.yaml @@ -0,0 +1,140 @@ +- + headers: 'User-Agent: Bunjalloo/0.7.6(Nintendo DS;U;en)' + result: { browser: { name: Bunjalloo, version: 0.7.6, type: browser }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: DS } } + readable: 'Bunjalloo 0.7.6 on a Nintendo DS' +- + headers: 'User-Agent: Mozilla/5.0 (New Nintendo 3DS like iPhone) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.0.5.10 Mobile NintendoBrowser/1.1.9996.EU' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536.30' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 'New 3DS' } } + readable: 'NetFront NX 3.0 on a Nintendo New 3DS' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo 3DS like iPhone) Version/1.7412.JP' + result: { engine: { name: WebKit }, os: { version: '1.7412' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 3DS } } + readable: 'a Nintendo 3DS running 1.7412' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo 3DS; U; ; de) Version/1.7552.EU' + result: { engine: { name: WebKit }, os: { version: '1.7552' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 3DS } } + readable: 'a Nintendo 3DS running 1.7552' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7455.EU' + result: { engine: { name: WebKit }, os: { version: '1.7455' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 3DS } } + readable: 'a Nintendo 3DS running 1.7455' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7455.US' + result: { engine: { name: WebKit }, os: { version: '1.7455' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 3DS } } + readable: 'a Nintendo 3DS running 1.7455' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7567.EU' + result: { engine: { name: WebKit }, os: { version: '1.7567' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 3DS } } + readable: 'a Nintendo 3DS running 1.7567' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo 3DS; U; ; ja) Version/1.7455.JP' + result: { engine: { name: WebKit }, os: { version: '1.7455' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 3DS } } + readable: 'a Nintendo 3DS running 1.7455' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo 3DS; U; ; ja) Version/1.7498.JP' + result: { engine: { name: WebKit }, os: { version: '1.7498' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 3DS } } + readable: 'a Nintendo 3DS running 1.7498' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo 3DS; U; Factory Media Production; en) Version/1.7498.US' + result: { engine: { name: WebKit }, os: { version: '1.7498' }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: 3DS } } + readable: 'a Nintendo 3DS running 1.7498' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.10.9 NintendoBrowser/1.5.0.8047.EU' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, engine: { name: Webkit, version: '534.52' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'NetFront NX 2.1 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.10.9 NintendoBrowser/1.5.0.8047.US' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, engine: { name: Webkit, version: '534.52' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'NetFront NX 2.1 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.21 NintendoBrowser/1.0.0.7494.US' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, engine: { name: Webkit, version: '534.52' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'NetFront NX 2.1 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.8 Version/1.0.0.6760.JP' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, engine: { name: Webkit, version: '534.52' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'NetFront NX 2.1 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.53 (KHTML, like Gecko) NWF/1.2.0.USA' + result: { browser: { name: 'Nintendo Web Framework', version: '1.2', type: browser }, engine: { name: Webkit, version: '534.53' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'Nintendo Web Framework 1.2 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.53 (KHTML, like Gecko) NWF/1.2.13993.USA' + result: { browser: { name: 'Nintendo Web Framework', version: '1.2', type: browser }, engine: { name: Webkit, version: '534.53' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'Nintendo Web Framework 1.2 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.53 (KHTML, like Gecko) NWF/1.3.0.USA' + result: { browser: { name: 'Nintendo Web Framework', version: '1.3', type: browser }, engine: { name: Webkit, version: '534.53' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'Nintendo Web Framework 1.3 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.28 (KHTML, like Gecko) NX/3.0.3.11.12 NintendoBrowser/2.0.0.9098.JP' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536.28' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'NetFront NX 3.0 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.28 (KHTML, like Gecko) NX/3.0.3.12.11 NintendoBrowser/2.1.0.9559.EU' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536.28' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'NetFront NX 3.0 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.28 (KHTML, like Gecko) NX/3.0.3.12.6 NintendoBrowser/2.0.0.9362.EU' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536.28' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'NetFront NX 3.0 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.28 (KHTML, like Gecko) NX/3.0.3.12.6 NintendoBrowser/2.0.0.9362.JP' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536.28' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'NetFront NX 3.0 on a Nintendo Wii U' +- + headers: 'User-Agent: Opera/9.30 (Nintendo Wii; U; ; 2047-7; en)' + result: { browser: { name: Opera, version: '9.30', type: browser }, engine: { name: Presto }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: Wii } } + readable: 'Opera 9.30 on a Nintendo Wii' +- + headers: 'User-Agent: Opera/9.30 (Nintendo Wii; U; ; 3642; en)' + result: { browser: { name: Opera, version: '9.30', type: browser }, engine: { name: Presto }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: Wii } } + readable: 'Opera 9.30 on a Nintendo Wii' +- + headers: 'User-Agent: Opera/9.30 (Nintendo Wii; U; ; 3642; ja)' + result: { browser: { name: Opera, version: '9.30', type: browser }, engine: { name: Presto }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: Wii } } + readable: 'Opera 9.30 on a Nintendo Wii' +- + headers: 'User-Agent: Opera/9.50 (Nintendo DSi; Opera/507; U; en-GB)' + result: { browser: { name: Opera, version: '9.50', type: browser }, engine: { name: Presto }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: DSi } } + readable: 'Opera 9.50 on a Nintendo DSi' +- + headers: 'User-Agent: Opera/9.50 (Nintendo DSi; Opera/507; U; en-US)' + result: { browser: { name: Opera, version: '9.50', type: browser }, engine: { name: Presto }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: DSi } } + readable: 'Opera 9.50 on a Nintendo DSi' +- + headers: 'User-Agent: Opera/9.50 (Nintendo DSi; Opera/507; U; ja)' + result: { browser: { name: Opera, version: '9.50', type: browser }, engine: { name: Presto }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: DSi } } + readable: 'Opera 9.50 on a Nintendo DSi' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Nitro) Opera 8.50 [ja]' + result: { browser: { name: Opera, version: '8.50', type: browser }, engine: { name: Presto }, device: { type: gaming, subtype: portable, manufacturer: Nintendo, model: DS } } + readable: 'Opera 8.50 on a Nintendo DS' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.53 (KHTML, like Gecko) NWF/2.0.0.0.USA' + result: { browser: { name: 'Nintendo Web Framework', version: '2.0', type: browser }, engine: { name: Webkit, version: '534.53' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'Nintendo Web Framework 2.0 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.53 (KHTML, like Gecko) NWF/2.0.0.38696.USA' + result: { browser: { name: 'Nintendo Web Framework', version: '2.0', type: browser }, engine: { name: Webkit, version: '534.53' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: 'Wii U' } } + readable: 'Nintendo Web Framework 2.0 on a Nintendo Wii U' +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo Switch; LoginApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.9 NintendoBrowser/5.1.0.13341' + readable: 'a Nintendo Switch' + result: { engine: { name: Webkit, version: '601.6' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: Switch } } +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo Switch; ShareApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.10 NintendoBrowser/5.1.0.13343' + readable: 'a Nintendo Switch' + result: { engine: { name: Webkit, version: '601.6' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: Switch } } +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo Switch; ShopN) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.10 NintendoBrowser/5.1.0.13343' + readable: 'a Nintendo Switch' + result: { engine: { name: Webkit, version: '601.6' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: Switch } } +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo Switch; WebApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.5.2 NintendoBrowser/5.1.0.12653' + readable: 'a Nintendo Switch' + result: { engine: { name: Webkit, version: '601.6' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: Switch } } +- + headers: 'User-Agent: Mozilla/5.0 (Nintendo Switch; WebApplet) AppleWebKit/601.6 (KHTML, like Gecko) NF/4.0.0.6.9 NintendoBrowser/5.1.0.14935' + readable: 'a Nintendo Switch' + result: { engine: { name: Webkit, version: '601.6' }, device: { type: gaming, subtype: console, manufacturer: Nintendo, model: Switch } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/other.yaml new file mode 100644 index 0000000..69e3380 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/other.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; SHIELD Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '32', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: gaming, subtype: console, manufacturer: Nvidia, model: SHIELD } } + readable: 'Chrome 32 on a Nvidia SHIELD running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; es-es; ARCHOS GAMEPAD Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.1 }, device: { type: gaming, subtype: portable, manufacturer: Archos, model: Gamepad } } + readable: 'Android Browser on an Archos Gamepad running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android OUYA 4.1.2; en-us; OUYA Build/JZO54L-OUYA) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: gaming, subtype: console, manufacturer: OUYA, model: OUYA } } + readable: 'Android Browser on an OUYA running Android 4.1.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/sega.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/sega.yaml new file mode 100644 index 0000000..f2ba3c3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/sega.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: Aplix_SEGASATURN_browser/2.0 (Japanese)' + result: { browser: { name: Aplix, version: '2.0', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Saturn } } + readable: 'Aplix 2.0 on a Sega Saturn' +- + headers: 'User-Agent: Aplix_SEGASATURN_browser/1.x (Japanese)' + result: { browser: { name: Aplix, version: '1', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Saturn } } + readable: 'Aplix 1 on a Sega Saturn' +- + headers: 'User-Agent: Mozilla/3.0 (DreamPassport/3.0; SEGA/SAKURA-DP3)' + result: { browser: { name: 'Dream Passport', version: '3.0', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Dreamcast } } + readable: 'Dream Passport 3.0 on a Sega Dreamcast' +- + headers: 'User-Agent: Mozilla/3.0 (DreamPassport/3.15; SEGA/VF.NET)' + result: { browser: { name: 'Dream Passport', version: '3.15', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Dreamcast } } + readable: 'Dream Passport 3.15 on a Sega Dreamcast' +- + headers: 'User-Agent: Mozilla/3.0 (DreamPassport/3.0; isao/MyDiGiRabi)' + result: { browser: { name: 'Dream Passport', version: '3.0', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Dreamcast } } + readable: 'Dream Passport 3.0 on a Sega Dreamcast' +- + headers: 'User-Agent: Mozilla/3.0 (DreamPassport/2.1)' + result: { browser: { name: 'Dream Passport', version: '2.1', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Dreamcast } } + readable: 'Dream Passport 2.1 on a Sega Dreamcast' +- + headers: 'User-Agent: Mozilla/3.0 (DreamPassport/1.01)' + result: { browser: { name: 'Dream Passport', version: '1.01', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Dreamcast } } + readable: 'Dream Passport 1.01 on a Sega Dreamcast' +- + headers: 'User-Agent: Mozilla/3.0 (Planetweb/2.100 JS SSL US; Dreamcast US)' + result: { browser: { name: Planetweb, version: '2.100', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Dreamcast } } + readable: 'Planetweb 2.100 on a Sega Dreamcast' +- + headers: 'User-Agent: Mozilla/3.0 (DreamKey/1.0)' + result: { browser: { name: Dreamkey, version: '1.0', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sega, model: Dreamcast } } + readable: 'Dreamkey 1.0 on a Sega Dreamcast' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/sony.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/sony.yaml new file mode 100644 index 0000000..3455288 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/gaming/sony.yaml @@ -0,0 +1,204 @@ +- + headers: 'User-Agent: Mozilla/4.0 (PSP (PlayStation Portable); 2.00)' + result: { engine: { name: NetFront }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Portable' } } + readable: 'a Sony Playstation Portable' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.10) AppleWebKit/531.22.8 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.10' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 4.10' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.11) AppleWebKit/531.22.8 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.11' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 4.11' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.31) AppleWebKit/531.22.8 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.31' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 4.31' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.41) AppleWebKit/531.22.8 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.41' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 4.41' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.50) AppleWebKit/531.22.8 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.50' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 4.50' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.53) AppleWebKit/531.22.8 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.53' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 4.53' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.55) AppleWebKit/531.22.8 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.55' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 4.55' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3; 1.00)' + result: { engine: { name: NetFront }, os: { version: '1.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 1.00' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3; 2.00)' + result: { engine: { name: NetFront }, os: { version: '2.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 2.00' +- + headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3; 3.55)' + result: { engine: { name: NetFront }, os: { version: '3.55' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony Playstation 3 running 3.55' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 3) SonyComputerEntertainmentEurope/531.3 (NCell) NuantiMeta/2.0' + result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'Nuanti Meta 2.0 on a Sony Playstation 3' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.000) AppleWebKit/536.26 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.000' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'a Sony Playstation 4 running 1.000' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.51) AppleWebKit/536.26 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.51' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'a Sony Playstation 4 running 1.51' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.52) AppleWebKit/536.26 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.52' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'a Sony Playstation 4 running 1.52' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.60) AppleWebKit/536.26 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.60' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'a Sony Playstation 4 running 1.60' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.61) AppleWebKit/536.26 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.61' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'a Sony Playstation 4 running 1.61' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.62) AppleWebKit/536.26 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.62' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'a Sony Playstation 4 running 1.62' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.70) AppleWebKit/536.26 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.70' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'a Sony Playstation 4 running 1.70' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 2.00) AppleWebKit/537.73 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '537.73' }, os: { version: '2.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'a Sony Playstation 4 running 2.00' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.00) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 1.00' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.50) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.50' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 1.50' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.51) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.51' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 1.51' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.52) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.52' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 1.52' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.60) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.60' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 1.60' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.61) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.61' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 1.61' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.80) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.80' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 1.80' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 2.60) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '2.60' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 2.60' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 2.61) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '2.61' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 2.61' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.00) AppleWebKit/536.26 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 3.00' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.00) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 3.00' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.01) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.01' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 3.01' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.01) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2 VTE/2.50' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.01' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation TV' } } + readable: 'a Sony Playstation TV running 3.01' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.10) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.10' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 3.10' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.10) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2 VTE/2.50' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.10' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation TV' } } + readable: 'a Sony Playstation TV running 3.10' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.12) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.12' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 3.12' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.20) AppleWebKit/537.73 (KHTML, like Gecko) Silk/3.2' + result: { engine: { name: Webkit, version: '537.73' }, os: { version: '3.20' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'a Sony Playstation Vita running 3.20' +- + headers: 'User-Agent: Sony Playstation2 (Utility Disc Ver.2.03c/for PS-modem)[jp]' + result: { device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } + readable: 'a Sony Playstation 2' +- + headers: 'User-Agent: Mozilla/5.0 [ja] (Playstation2; Linux 2.4.20 MIPS; ja-JP; rv:1.8a2) Gecko/20040630' + result: { engine: { name: Gecko, version: 1.8a2 }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } + readable: 'a Sony Playstation 2' +- + headers: 'User-Agent: Mozilla/5.0 [ja] (compatible; MSIE 6.0; Linux 2.6.11-1.1369_FC4; Playstation2)' + result: { device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } + readable: 'a Sony Playstation 2' +- + headers: 'User-Agent: Mozilla/4.0 (PS2; PlayStation BB Navigator 1.0) NetFront/3.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } + readable: 'NetFront 3.0 on a Sony Playstation 2' +- + headers: 'User-Agent: Mozilla/5.0 (PS3) AppleWebKit/535.11 (KHTML, like Gecko) NuantiMeta/2.0' + result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '535.11' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'Nuanti Meta 2.0 on a Sony Playstation 3' +- + headers: 'User-Agent: Mozilla/5.0 (PS3) AppleWebKit/535.1 (KHTML, like Gecko) NuantiMeta/2.0 Chrome/13.0.782.220 Safari/535.1' + result: { browser: { name: 'Nuanti Meta', family: { name: Chrome, version: 13 }, version: '2.0', type: browser }, engine: { name: Webkit, version: '535.1' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'Nuanti Meta 2.0 on a Sony Playstation 3' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 4) AppleWebKit/531.3 (KHTML, like Gecko) SCEE/1.0 Nuanti/2.0' + result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '531.3' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + readable: 'Nuanti Meta 2.0 on a Sony Playstation 4' +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation VITA) AppleWebKit/531.3 (KHTML, like Gecko) SCEE/1.0 Nuanti/2.0' + result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '531.3' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } + readable: 'Nuanti Meta 2.0 on a Sony Playstation Vita' +- + headers: 'User-Agent: Mozilla/3.0 (Planetweb/v1.16; SPS JP)' + result: { browser: { name: Planetweb, version: '1.16', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } + readable: 'Planetweb 1.16 on a Sony Playstation 2' +- + headers: 'User-Agent: Mozilla/3.0 AVE-Front/2.6 (BrowserInfo Screen=624x400x16M; InputMethod=CONTROLER, MOUSE, REMOCON; Page=10M; Category=GAME; Product=ACCESS/NFPS; HTML-Level=3.2; Strage=NO;)' + result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } + readable: 'NetFront 2.6 on a Sony Playstation 2' +- + headers: 'User-Agent: Mozilla/3.0 AVE-Front/2.6 (BrowserInfo Screen=640x448x16M; InputMethod=CONTROLER, MOUSE, REMOCON; Page=12M; Category=GAME; Product=SUNSOFT/EnjoyMagic; HTML-Level=3.2; Language=ja.SJIS; Storage=NO;)' + result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } + readable: 'NetFront 2.6 on a Sony Playstation 2' +- + headers: 'User-Agent: Mozilla/5.0 (PS3; Leanback Shell) AppleWebKit/535.22 (KHTML, like Gecko) Chrome/19.0.1048.0 LeanbackShell/01.00.01.73 QA Safari/535.22 Sony PS3/ (PS3, , no, CH)' + readable: 'Chrome Dev 19.0.1048.0 on a Sony Playstation 3' + result: { browser: { name: Chrome, version: 19.0.1048.0, type: browser }, engine: { name: Webkit, version: '535.22' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } +- + headers: 'User-Agent: Mozilla/5.0 (PS4; Leanback Shell) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.70 LeanbackShell/2.3D Gold build cf8a43c-2016329 Safari/537.22 Sony Playstation4/ (PS4,, en, US)' + readable: 'Chrome 25 on a Sony Playstation 4' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } +- + headers: 'User-Agent: Mozilla/5.0 (PS3; PPU 4.2.0) AppleWebKit/537.21+ (KHTML, like Gecko) AmazonSpark/0.1.0' + readable: 'a Sony Playstation 3' + result: { engine: { name: Webkit, version: '537.21' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-gear.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-gear.yaml new file mode 100644 index 0000000..903ec94 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-gear.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-G920F Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile VR Safari/537.36' + readable: 'Samsung Internet 4.0 on a Samsung Gear VR running Android 5.1.1' + result: { browser: { name: 'Samsung Internet', version: '4.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: headset, manufacturer: Samsung, model: 'Gear VR' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; SAMSUNG SM-N916K Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Mobile VR Safari/537.36' + readable: 'Samsung Internet 3.0 on a Samsung Gear VR running Android 5.0.1' + result: { browser: { name: 'Samsung Internet', version: '3.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: headset, manufacturer: Samsung, model: 'Gear VR' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-G935F Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile VR Safari/537.36' + readable: 'Samsung Internet 4.0 on a Samsung Gear VR running Android 6.0.1' + result: { browser: { name: 'Samsung Internet', version: '4.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: headset, manufacturer: Samsung, model: 'Gear VR' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; SM-G920F Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/3.1.0 SamsungBrowser/4.0 Chrome/57.0.2987.146 Mobile VR Safari/537.36' + readable: 'Oculus Browser 3.1 on a Samsung Gear VR running Android 6.0.1' + result: { browser: { name: 'Oculus Browser', version: '3.1', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: headset, manufacturer: Samsung, model: 'Gear VR' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-glass.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-glass.yaml new file mode 100644 index 0000000..f653024 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-glass.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Glass 1 Build/XRV49) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' + result: { browser: { using: { name: 'Chromium WebView', version: '30' } }, engine: { name: Blink }, os: { family: Android }, device: { type: headset, manufacturer: Google, model: Glass } } + readable: 'Chromium WebView 30 on a Google Glass' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Glass 1 Build/XRX13B; XE22; 1511057; user; release-keys; 48cad1880fd0f82644ef86f5a7f6535b) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' + result: { browser: { using: { name: 'Chromium WebView', version: '30' } }, engine: { name: Blink }, os: { family: Android }, device: { type: headset, manufacturer: Google, model: Glass } } + readable: 'Chromium WebView 30 on a Google Glass' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; Glass 1 Build/IMM76L; XE10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { engine: { name: Webkit, version: '534.30' }, os: { family: Android }, device: { type: headset, manufacturer: Google, model: Glass } } + readable: 'a Google Glass' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; Glass 1 Build/IMM76L; XE17) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { engine: { name: Webkit, version: '534.30' }, os: { family: Android }, device: { type: headset, manufacturer: Google, model: Glass } } + readable: 'a Google Glass' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; Glass 1 Build/XRT73B) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { engine: { name: Webkit, version: '534.30' }, os: { family: Android }, device: { type: headset, manufacturer: Google, model: Glass } } + readable: 'a Google Glass' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-oculus.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-oculus.yaml new file mode 100644 index 0000000..8f61cb0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/headset/device-oculus.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 7.1.2; Pacific Build/N2G48H) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/4.6.0.114370170 SamsungBrowser/4.0 Chrome/61.0.3163.141 Mobile VR Safari/537.36' + readable: 'Oculus Browser 4.6 on an Oculus Go running Android 7.1.2' + result: { browser: { name: 'Oculus Browser', version: '4.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 7.1.2 }, device: { type: headset, manufacturer: Oculus, model: Go } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-archos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-archos.yaml new file mode 100644 index 0000000..8bb008e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-archos.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: Opera/8.5 (GOGI; Linux armv5tejl; U) [DE] Archos A704WIFI/SW1.7.53' + result: { browser: { name: Opera, version: '8.5', type: browser }, engine: { name: Presto }, device: { type: media, manufacturer: Archos, model: '704 WiFi' } } + readable: 'Opera 8.5 on an Archos 704 WiFi' +- + headers: 'User-Agent: Opera/9.02 (Linux armv5tejl; U; ARCHOS; GOGI; a605; en)' + result: { browser: { name: Opera, version: '9.02', type: browser }, engine: { name: Presto }, device: { type: media, manufacturer: Archos, model: '605 WiFi' } } + readable: 'Opera 9.02 on an Archos 605 WiFi' +- + headers: 'User-Agent: Opera/9.02 (Linux armv5tejl; U; ARCHOS; GOGI; a705; en)' + result: { browser: { name: Opera, version: '9.02', type: browser }, engine: { name: Presto }, device: { type: media, manufacturer: Archos, model: '705 WiFi' } } + readable: 'Opera 9.02 on an Archos 705 WiFi' +- + headers: 'User-Agent: Opera/9.02 (Linux armv5tejl; U; ARCHOS; GOGI; a605f; de)' + result: { browser: { name: Opera, version: '9.02', type: browser }, engine: { name: Presto }, device: { type: media, manufacturer: Archos, model: '605f WiFi' } } + readable: 'Opera 9.02 on an Archos 605f WiFi' +- + headers: 'User-Agent: Opera/9.02 (Linux armv7l; U; ARCHOS; GOGI; G6S; Version 1.1.1 (WMDRMPD: 10.1); en)' + result: { browser: { name: Opera, version: '9.02', type: browser }, engine: { name: Presto }, device: { type: media, manufacturer: Archos, model: '5' } } + readable: 'Opera 9.02 on an Archos 5' +- + headers: 'User-Agent: Opera/9.02 (Linux armv7l; U; ARCHOS; GOGI; G6H; Version 1.7.11 (WMDRMPD: 10.1) ; de)' + result: { browser: { name: Opera, version: '9.02', type: browser }, engine: { name: Presto }, device: { type: media, manufacturer: Archos, model: '5' } } + readable: 'Opera 9.02 on an Archos 5' +- + headers: 'User-Agent: Opera/9.02 (Linux armv7l; U; ARCHOS; GOGI; G6L; Version 1.6.53 (WMDRMPD: 10.1) ; es)' + result: { browser: { name: Opera, version: '9.02', type: browser }, engine: { name: Presto }, device: { type: media, manufacturer: Archos, model: '7' } } + readable: 'Opera 9.02 on an Archos 7' +- + headers: 'User-Agent: ARCHOS; GOGI; A5S; Version 2.0.45 (WMDRMPD: 10.1)' + readable: 'Android Browser on an Archos 5 running Android 1.6' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: '1.6' }, device: { type: media, manufacturer: Archos, model: '5' } } +- + headers: 'User-Agent: Opera/9.02 (Linux armv7l; U; ARCHOS; GOGI; G6-3GP; Version 1.7.11 (WMDRMPD: 10.1); xx)' + readable: 'Opera 9.02 on an Archos 5 3G+' + result: { browser: { name: Opera, version: '9.02', type: browser }, engine: { name: Presto }, device: { type: media, manufacturer: Archos, model: '5 3G+' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-walkman.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-walkman.yaml new file mode 100644 index 0000000..e0ff757 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-walkman.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (DigitalMediaPlayer; Walkman/NW-X1000 Series/1.00; like Gecko; wireless) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: media, manufacturer: Sony, model: 'NW-X1000 Walkman' } } + readable: 'NetFront 3.4 on a Sony NW-X1000 Walkman' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-zune.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-zune.yaml new file mode 100644 index 0000000..c5951e4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/media/device-zune.yaml @@ -0,0 +1,4 @@ +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12; Microsoft ZuneHD 4.5)', UA-OS: 'Windows CE (Pocket PC) - Version 6' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, device: { type: media, manufacturer: Microsoft, model: 'Zune HD' } } + readable: 'Mobile Internet Explorer 6.0 on a Microsoft Zune HD' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-chat.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-chat.yaml new file mode 100644 index 0000000..7da0991 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-chat.yaml @@ -0,0 +1,84 @@ +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D14 Yammer/6.5.10.4304 (iPhone8,1; iPhone OS 9.2.1; fr_BE; xx; Scale/2.00)' + result: { browser: { name: Yammer, version: '6.5', type: 'app:chat' }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: 9.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 6s' } } + readable: 'Yammer 6.5 on an Apple iPhone 6s running iOS 9.2.1' +- + headers: 'User-Agent: YahooMobileMessenger/1.0 (Android Messenger; 1.5.1) (SCH-I500; Samsung; SCH-I500; 2.3.5/GINGERBREAD)' + result: { browser: { name: 'Yahoo Messenger', version: 1.5.1, type: 'app:chat' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Fascinate } } + readable: 'Yahoo Messenger 1.5.1 on a Samsung Fascinate running Android 2.3.5' +- + headers: 'User-Agent: YahooMobileMessenger/1.0 (Android Messenger; 1.8.3) (SHW-M340K; samsung; SHW-M340K; 2.3.6/GINGERBREAD)' + result: { browser: { name: 'Yahoo Messenger', version: 1.8.3, type: 'app:chat' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy M Style' } } + readable: 'Yahoo Messenger 1.8.3 on a Samsung Galaxy M Style running Android 2.3.6' +- + headers: 'User-Agent: YahooMobile/1.0 (im; 1.8.4.15957); (Linux; U; Android 2.3.6; ONE_TOUCH_991D_ALDE Build/GINGERBREAD_MR1);' + result: { browser: { name: 'Yahoo Messenger', version: 1.8.4, type: 'app:chat' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch 991' } } + readable: 'Yahoo Messenger 1.8.4 on an Alcatel One Touch 991 running Android 2.3.6' +- + headers: 'User-Agent: YahooMobile/1.0 (im; 1.8.4.15957); (Linux; U; Android 4.2.2; ARCHOS 79XE Build/Unknown);' + result: { browser: { name: 'Yahoo Messenger', version: 1.8.4, type: 'app:chat' }, os: { name: Android, version: 4.2.2 }, device: { type: media, manufacturer: Archos, model: 79XE } } + readable: 'Yahoo Messenger 1.8.4 on an Archos 79XE running Android 4.2.2' +- + headers: 'User-Agent: WhatsApp/2.11.164 Android/4_2_2 Device/samsung-GT-I9152' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mega 5.8 Plus' } } + readable: 'WhatsApp 2.11 on a Samsung Galaxy Mega 5.8 Plus running Android 4.2.2' +- + headers: 'User-Agent: WhatsApp/2.11.139 Android/4.0.4 Device/HTC-HTC_Incredible_S' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Incredible S' } } + readable: 'WhatsApp 2.11 on a HTC Incredible S running Android 4.0.4' +- + headers: 'User-Agent: WhatsApp+/2.11.83 Android/4.1.2 Device/samsung-GT-S5310' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Neo' } } + readable: 'WhatsApp 2.11 on a Samsung Galaxy Pocket Neo running Android 4.1.2' +- + headers: 'User-Agent: WhatsApp+/2.11.83 Android/4.0.4 Device/Motorola-MB526' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: DEFY+ } } + readable: 'WhatsApp 2.11 on a Motorola DEFY+ running Android 4.0.4' +- + headers: 'User-Agent: WhatsApp/2.11.107 S60Version/3.1 Device/Nokia-E51-(02.1)' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: Series60, family: Symbian, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E51 } } + readable: 'WhatsApp 2.11 on a Nokia E51 running Series60 3.1' +- + headers: 'User-Agent: WhatsApp/2.11.236 S60Version/3.2 Device/Nokia-6650-(02.01)' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: Series60, family: Symbian, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6650' } } + readable: 'WhatsApp 2.11 on a Nokia 6650 running Series60 3.2' +- + headers: 'User-Agent: WhatsApp/2.11.356 WP7/7.10.8107 Device/SAMSUNG-GT-I8350-H23.15.0.8' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: 'Windows Phone', version: '7.10' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia W' } } + readable: 'WhatsApp 2.11 on a Samsung Omnia W running Windows Phone 7.10' +- + headers: 'User-Agent: WhatsApp/2.11.282 WP7/8.0.10328.0 Device/NOKIA-RM-914_eu_euro2_341-H1.0.0.0' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'WhatsApp 2.11 on a Nokia Lumia 520 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B440 [FBAN/MessengerForiOS;FBAV/17.0.0.20.11;FBBV/5740516;FBDV/iPhone7,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.1.2;FBSS/3; FBCR/TelenorDK;FBID/phone;FBLC/da_DK;FBOP/5]' + result: { browser: { name: 'Facebook Messenger', type: 'app:chat' }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 6 Plus' } } + readable: 'Facebook Messenger on an Apple iPhone 6 Plus running iOS 8.1.2' +- + headers: 'User-Agent: ICQ_Android/4.0.8 (Android; 16; 4.1.1; N7105XXALIJ; GT-N7105; tr-TR)' + readable: 'ICQ 4.0.8 on a Samsung Galaxy Note II running Android 4.1.1' + result: { browser: { name: ICQ, version: 4.0.8, type: 'app:chat' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note II' } } +- + headers: 'User-Agent: Kik/8.2.1.326 (Android 4.1.2) Mozilla/5.0 (Linux; U; Android 4.1.2; en-za; GT-I8190 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + readable: 'Kik 8.2.1 on a Samsung Galaxy S III Mini running Android 4.1.2' + result: { browser: { name: Kik, version: 8.2.1, type: 'app:chat' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III Mini' } } +- + headers: 'User-Agent: Kik/8.7.0.1643 (Android 5.0.2) Mozilla/5.0 (Linux; Android 5.0.2; C6903 Build/14.5.A.0.270; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.117 Mobile Safari/537.36' + readable: 'Kik 8.7 on a Sony Xperia Z1 running Android 5.0.2' + result: { browser: { name: Kik, using: { name: 'Chromium WebView', version: '44' }, version: '8.7', type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1' } } +- + headers: 'User-Agent: Kik/9.1.0.3591 (Android 4.3) Mozilla/5.0 (Linux; U; Android 4.3; en-us; G630-U20 Build/HuaweiG630-U20) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + readable: 'Kik 9.1 on a Huawei Ascend G630 running Android 4.3' + result: { browser: { name: Kik, version: '9.1', type: 'app:chat' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend G630' } } +- + headers: 'User-Agent: Kik/9.10.0.5037 (Android 6.0.1) Mozilla/5.0 (Linux; Android 6.0.1; SM-G920F Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.106 Mobile Safari/537.36' + readable: 'Kik 9.10 on a Samsung Galaxy S6 running Android 6.0.1' + result: { browser: { name: Kik, using: { name: 'Chromium WebView', version: '48' }, version: '9.10', type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S6' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X509 Build/DHXOSOP5801911241S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 [FB_IAB/MESSENGER;FBAV/134.0.0.18.91;]' + readable: 'Facebook Messenger on a LeEco Le 1s X509 running Android 6.0' + result: { browser: { name: 'Facebook Messenger', using: { name: 'Chromium WebView', version: '49' }, type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 1s X509' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X526 Build/IIXOSOP5801910121S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36 Wire/0.564.2.20' + readable: 'Wire 0.564.2.20 on a LeEco Le 2 X526 running Android 6.0.1' + result: { browser: { name: Wire, family: { name: Chrome, version: 56 }, version: 0.564.2.20, type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X526' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-download.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-download.yaml new file mode 100644 index 0000000..432441e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-download.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X526 Build/IIXOSOP5801607082S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36/TansoDL' + readable: 'Tanso Download Manager on a LeEco Le 2 X526 running Android 6.0.1' + result: { browser: { name: 'Tanso Download Manager', using: { name: 'Chromium WebView', version: '49' }, type: 'app:download' }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X526' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-email.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-email.yaml new file mode 100644 index 0000000..f28645e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-email.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: YahooMobileMail/1.0 (Android Mail; 1.3.9) (inc;HTC;ADR6300;2.3.4/GRJ22)' + result: { browser: { name: 'Yahoo Mail', version: 1.3.9, type: 'app:email' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Droid Incredible' } } + readable: 'Yahoo Mail 1.3.9 on a HTC Droid Incredible running Android 2.3.4' +- + headers: 'User-Agent: YahooMobileMail/1.0 (Android Mail; 1.3.10) (supersonic;HTC;PC36100;2.3.5/GRJ90)' + result: { browser: { name: 'Yahoo Mail', version: 1.3.10, type: 'app:email' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EVO 4G' } } + readable: 'Yahoo Mail 1.3.10 on a HTC EVO 4G running Android 2.3.5' +- + headers: 'User-Agent: YahooMobileMail/1.0 (Android Mail; 3.0.5) (runnymede;HTC;Sensation XL with Beats Audio;4.0.3/IML74K)' + result: { browser: { name: 'Yahoo Mail', version: 3.0.5, type: 'app:email' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Sensation XL' } } + readable: 'Yahoo Mail 3.0.5 on a HTC Sensation XL running Android 4.0.3' +- + headers: 'User-Agent: YahooMobile/1.0 (mail; 1.3.8.9816); (Linux; U; Android 2.3.4; htc_glacier Build/GINGERBREAD_MR1);' + result: { browser: { name: 'Yahoo Mail', version: 1.3.8, type: 'app:email' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'myTouch 4G' } } + readable: 'Yahoo Mail 1.3.8 on a T-Mobile myTouch 4G running Android 2.3.4' +- + headers: 'User-Agent: YahooMobile/1.0 (mail; 2.6.6.1310803); (Linux; U; Android 4.0.3; htc_shooteru Build/ICE_CREAM_SANDWICH_MR1);' + result: { browser: { name: 'Yahoo Mail', version: 2.6.6, type: 'app:email' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EVO 3D' } } + readable: 'Yahoo Mail 2.6.6 on a HTC EVO 3D running Android 4.0.3' +- + headers: 'User-Agent: YahooMobile/1.0 (mail; 3.0.5.1311380); (Linux; U; Android 4.0.3; htc_runnymede Build/ICE_CREAM_SANDWICH_MR1);' + result: { browser: { name: 'Yahoo Mail', version: 3.0.5, type: 'app:email' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Sensation XL' } } + readable: 'Yahoo Mail 3.0.5 on a HTC Sensation XL running Android 4.0.3' +- + headers: 'User-Agent: YahooMobileMessenger/1.0 (Android Mail; 1.3.10) (SGH-T499; Samsung; SGH-T499; 2.2.2/FROYO)' + result: { browser: { name: 'Yahoo Mail', version: 1.3.10, type: 'app:email' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Dart } } + readable: 'Yahoo Mail 1.3.10 on a Samsung Dart running Android 2.2.2' +- + headers: 'User-Agent: YahooMobileMessenger/1.0 (Android Mail; 1.4.0) (vivow; HTC; ADR6350; 2.3.4/GRJ22)' + result: { browser: { name: 'Yahoo Mail', version: 1.4.0, type: 'app:email' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Droid Incredible 2' } } + readable: 'Yahoo Mail 1.4.0 on a HTC Droid Incredible 2 running Android 2.3.4' +- + headers: 'User-Agent: YahooMobileMessenger/1.0 (Android Mail; 1.4.5) (SCH-I510; samsung; SCH-I510; 2.3.6/GINGERBREAD)' + result: { browser: { name: 'Yahoo Mail', version: 1.4.5, type: 'app:email' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Stealth V' } } + readable: 'Yahoo Mail 1.4.5 on a Samsung Stealth V running Android 2.3.6' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-media.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-media.yaml new file mode 100644 index 0000000..47411b3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-media.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: stamhub 13082903.1.00.03/SM-N9005; 2013082903; 13082903.1.00.03; com.samsung.everglades.video; hlte; samsung/hltexx/hlte:4.3/JSS15J/N9005XXUBMJ1:user/release-keys' + readable: 'Mediahub on a Samsung Galaxy Note 3 running Android 4.3' + result: { browser: { name: Mediahub, type: 'app:mediaplayer' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3' } } +- + headers: 'User-Agent: stamhub 1.7.0(MD02, 1113513)/SGH-T999; 606; 1.7.0(MD02, 1113513); com.samsung.mediahub; d2tmo; samsung/d2tmo/d2tmo:4.1.2/JZO54K/T999UVDMD5:user/release-keys' + readable: 'Mediahub on a Samsung Galaxy S III running Android 4.1.2' + result: { browser: { name: Mediahub, type: 'app:mediaplayer' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-news.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-news.yaml new file mode 100644 index 0000000..2302898 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-news.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: YahooMobileWeather/1.0 (Android Weather; 1.2) (ME173X; asus; ME173X; 4.2.2/JDQ39)' + result: { browser: { name: 'Yahoo Weather', version: '1.2', type: 'app:news' }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Asus, model: 'MeMO Pad HD 7 (ME173X)' } } + readable: 'Yahoo Weather 1.2 on an Asus MeMO Pad HD 7 (ME173X) running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X820 Build/FEXCNFN5601304222S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 Flipboard/3.4.13/2947,3.4.13.2947' + readable: 'Flipboard 3.4.13 on a LeEco Le Max 2 X820 running Android 6.0.1' + result: { browser: { name: Flipboard, using: { name: 'Chromium WebView', version: '49' }, version: 3.4.13, type: 'app:news' }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X820' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-other.yaml new file mode 100644 index 0000000..dbb2ecb --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-other.yaml @@ -0,0 +1,76 @@ +- + headers: 'User-Agent: GoogleEarth/7.1.0002.2011(Android;Android (HTC One X-endeavoru-user-4.2.2);de-DE;kml:2.2;client:Free;type:default)' + result: { browser: { name: 'Google Earth', version: '7.1', type: app }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One X' } } + readable: 'Google Earth 7.1 on a HTC One X running Android 4.2.2' +- + headers: 'User-Agent: GoogleEarth/7.1.0003.1255(Android;Android (LG-E986-geefhd-user-4.1.2);de-DE;kml:2.2;client:Free;type:default)' + result: { browser: { name: 'Google Earth', version: '7.1', type: app }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus G Pro' } } + readable: 'Google Earth 7.1 on a LG Optimus G Pro running Android 4.1.2' +- + headers: 'User-Agent: GoogleEarth/7.1.0003.1255(Android;Android (HTC Sensation XE with Beats Audio Z715e-pyramid-user-4.0.3);de-DE;kml:2.2;client:Free;type:default)' + result: { browser: { name: 'Google Earth', version: '7.1', type: app }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Sensation XE' } } + readable: 'Google Earth 7.1 on a HTC Sensation XE running Android 4.0.3' +- + headers: 'User-Agent: XCON Android Application (16, xcon v2.2.2) - LGE LG-E460 lge - FFFFFFFF-CD6E-390A-B636-8CB346AAE71C' + result: { browser: { name: XCON, type: app }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L5 II' } } + readable: 'XCON on a LG Optimus L5 II running Android' +- + headers: 'User-Agent: XPOR Android Application (12, xpor v2.0) - motorola MB525 MOTO - FFFFFFFF-CC93-8438-FFFF-FFFFB4F77635' + result: { browser: { name: XPOR, type: app }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: DEFY } } + readable: 'XPOR on a Motorola DEFY running Android' +- + headers: 'User-Agent: ET1 Android Application (16, et1 v2.2.2) - samsung GT-S7390 samsung - 00000000-2D69-D71B-CE09-19FA5FA5A961' + result: { browser: { name: ET1, type: app }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend Lite' } } + readable: 'ET1 on a Samsung Galaxy Trend Lite running Android' +- + headers: 'User-Agent: ET1 Android Application - samsung GT-I9100 samsung' + readable: 'ET1 on a Samsung Galaxy S II running Android' + result: { browser: { name: ET1, type: app }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } +- + headers: 'User-Agent: ET1 Android Application - HTC HTC Wildfire S A510e orange_es' + readable: 'ET1 on a HTC Wildfire S running Android' + result: { browser: { name: ET1, type: app }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Wildfire S' } } +- + headers: 'User-Agent: ET1 Android Application - Desire_A8181 Build/FRF91 - FFFFFFFF-E289-5878-FFFF-FFFFFFEBBF74' + readable: 'ET1 on a HTC Desire running Android 2.2' + result: { browser: { name: ET1, type: app }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Desire } } +- + headers: 'User-Agent: PlacesDll Win32/SWchBvQ89wHhZhZGPH7ADQ:WVUjTbxpusEz-rl7htSN/3.2.315.8 (Windows Phone OS/8.0; NOKIA:Lumia 925; de-DE)' + result: { os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'a Nokia Lumia 925 running Windows Phone 8.0' +- + headers: 'User-Agent: PlacesDll Win32/x4dXIL4zf4fEINN8j7e8GA:c5f40ce19e9659484ed40cba84c12227/3.5.487.8 (Windows Phone OS/8.0; NOKIA:Nokia 920T; zh-CN)' + result: { os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'a Nokia Lumia 920 running Windows Phone 8.0' +- + headers: 'User-Agent: PlacesDll Win32/x4dXIL4zf4fEINN8j7e8GA:c5f40ce19e9659484ed40cba84c12227/3.5.481.8 (Windows Phone OS/8.0; NOKIA:Lumia 1320; de-DE)' + result: { os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1320' } } + readable: 'a Nokia Lumia 1320 running Windows Phone 8.0' +- + headers: 'User-Agent: SonySO-02F Build/14.1.H.1.281 UEP/0.1 com.sonyericsson.updatecenter/2.0.3.A.0.2' + readable: 'Sony Update Center on a Sony Xperia Z1 f SO-02F running Android' + result: { browser: { name: 'Sony Update Center', type: app }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1 f SO-02F', carrier: DoCoMo } } +- + headers: 'User-Agent: AiMeiTuan /samsung-4.0.4-SHV-E120S-1280x720-320-4.1.2-116-358362043662925-market' + readable: 'AiMeiTuan on a Samsung Galaxy S II HD LTE running Android 4.0.4' + result: { browser: { name: AiMeiTuan, type: app }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II HD LTE' } } +- + headers: 'User-Agent: SonyLT25i Build/9.1.A.0.490 UpdateCenter/1.2' + readable: 'Sony Update Center on a Sony Xperia V running Android' + result: { browser: { name: 'Sony Update Center', type: app }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia V' } } +- + headers: 'User-Agent: Dalvik/1.6.0(Linux; U; Android 4.2.2; C2105 Sony/15.3.A.0.26) SonySelectSDK/1.0.12 SonySelect/3.0.13' + readable: 'Sony Select SDK 1.0 on a Sony Xperia L running Android 4.2.2' + result: { browser: { using: { name: 'Sony Select SDK', version: '1.0' }, type: app }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia L' } } +- + headers: 'User-Agent: Dalvik/1.6.0(Linux; U; Android 4.3; C6903 Sony/14.2.A.1.142) SonySelectSDK/1.0.17 mashup/0.2' + readable: 'Sony Select SDK 1.0 on a Sony Xperia Z1 running Android 4.3' + result: { browser: { using: { name: 'Sony Select SDK', version: '1.0' }, type: app }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; MI 4LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 AlipayDefined(nt:WIFI,ws:360|640|3.0) AliApp(AP/8.6.0.042102) AlipayClient/8.6.0.042102' + readable: 'AliPay 8.6.0 on a Xiaomi Mi 4 running Android 4.4.4' + result: { browser: { name: AliPay, using: { name: 'Chromium WebView', version: '33' }, version: 8.6.0, type: app }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 4' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Mobile/14D27 ChannelId(11) Nebula PSDType(1) AlipayDefined(nt:WIFI,ws:375|647|2.0) AliApp(AP/10.0.3.020920) AlipayClient/10.0.3.020920 Alipay Language/zh-Hans' + readable: 'AliPay 10.0.3 on an Apple iPhone running iOS 10.2.1' + result: { browser: { name: AliPay, version: 10.0.3, type: app }, engine: { name: Webkit, version: 602.4.6 }, os: { name: iOS, version: 10.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-search.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-search.yaml new file mode 100644 index 0000000..7c1c954 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-search.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: YahooJMobileApp/1.1 (Android yjtop; 2.0.1) (samsung; SC-02C; samsung; SC-02C; 2.3.3/GINGERBREAD)' + result: { browser: { name: 'Yahoo Mobile', version: 2.0.1, type: 'app:search' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GALAXY S II SC-02C', carrier: DoCoMo } } + readable: 'Yahoo Mobile 2.0.1 on a Samsung GALAXY S II SC-02C running Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X527 Build/IMXOSOP5801910251S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 YandexSearch/7.15' + readable: 'Yandex Search 7.15 on a LeEco Le 2 X527 running Android 6.0.1' + result: { browser: { name: 'Yandex Search', using: { name: 'Chromium WebView', version: '49' }, version: '7.15', type: 'app:search' }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X527' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X526 Build/IIXOSOP5801910121S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 BingWeb/6.4.25182938' + readable: 'Bing Search 6.4.25182938 on a LeEco Le 2 X526 running Android 6.0.1' + result: { browser: { name: 'Bing Search', using: { name: 'Chromium WebView', version: '49' }, version: 6.4.25182938, type: 'app:search' }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X526' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5801708221S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 SogouSearch Android1.0 version3.0' + readable: 'Sogou Search 3.0 on a LeEco Le 2 Pro X620 running Android 6.0' + result: { browser: { name: 'Sogou Search', using: { name: 'Chromium WebView', version: '49' }, version: '3.0', type: 'app:search' }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 Pro X620' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-shopping.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-shopping.yaml new file mode 100644 index 0000000..cc17a77 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-shopping.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Groupon/2.10.3166 (Android 4.1.2; LGE Vee4ss / Lge LG-E440; )[preload=true;locale=de_DE;clientidbase=android-om-lge]' + result: { browser: { name: Groupon, version: '2.10', type: 'app:shopping' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L4 II' } } + readable: 'Groupon 2.10 on a LG Optimus L4 II running Android 4.1.2' +- + headers: 'User-Agent: Groupon/2.10.3156 (Android 4.2.2; HTC Endeavoru / Htc HTC One X; O2 - de)[preload=false;locale=en_DE;clientidbase=android-htc-rev]' + result: { browser: { name: Groupon, version: '2.10', type: 'app:shopping' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One X' } } + readable: 'Groupon 2.10 on a HTC One X running Android 4.2.2' +- + headers: 'User-Agent: Groupon/2.10.3156 (Android 4.2.2; Samsung Jflte / Samsung GT-I9505; Telekom.de)[preload=true;locale=de_DE;clientidbase=android-samsung]' + result: { browser: { name: Groupon, version: '2.10', type: 'app:shopping' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } + readable: 'Groupon 2.10 on a Samsung Galaxy S4 running Android 4.2.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-social.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-social.yaml new file mode 100644 index 0000000..a2950c9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/app-social.yaml @@ -0,0 +1,88 @@ +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B466 [FBAN/FBIOS;FBAV/46.0.0.54.156;FBBV/18972819;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.1.3;FBSS/2; FBCR/vfnl;FBID/phone;FBLC/nl_NL;FBOP/5' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 6' } } + readable: 'Facebook on an Apple iPhone 6 running iOS 8.1.3' +- + headers: 'User-Agent: Instagram 6.0.1 (iPhone3,3; iPhone OS 7_1; en_US; en) AppleWebKit/420+' + result: { browser: { name: Instagram, version: 6.0.1, type: 'app:social' }, engine: { name: Webkit, version: '420' }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'Instagram 6.0.1 on an Apple iPhone 4 running iOS 7.1' +- + headers: 'User-Agent: Instagram 5.0.7 Android (17/4.2.2; 240dpi; 480x800; samsung; SM-G350; cs02; hawaii_ss_cs02; de_DE)' + result: { browser: { name: Instagram, version: 5.0.7, type: 'app:social' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Plus' } } + readable: 'Instagram 5.0.7 on a Samsung Galaxy Core Plus running Android 4.2.2' +- + headers: 'User-Agent: Instagram 3.4.0 Android (10/2.3.6; 240dpi; 480x800; samsung; SCH-R760; SCH-R760; smdkc210; en_US)' + result: { browser: { name: Instagram, version: 3.4.0, type: 'app:social' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Instagram 3.4.0 on a Samsung Galaxy S II running Android 2.3.6' +- + headers: 'User-Agent: Instagram 1.1.3 Android (10/2.3.6; 240dpi; 480x800; samsung; SAMSUNG-SGH-I727; SGH-I727; qcom; en_US)' + result: { browser: { name: Instagram, version: 1.1.3, type: 'app:social' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Skyrocket' } } + readable: 'Instagram 1.1.3 on a Samsung Galaxy S II Skyrocket running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 [FBAN/FBIOS;FBAV/46.0.0.54.156;FBBV/18972819;FBDV/iPad6,7;FBMD/iPad;FBSN/iPhone OS;FBSV/9.1;FBSS/2; FBCR/;FBID/tablet;FBLC/nl_NL;FBOP/1]' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: '9.1' }, device: { type: tablet, manufacturer: Apple, model: 'iPad Pro (12.9″)' } } + readable: 'Facebook on an Apple iPad Pro (12.9″) running iOS 9.1' +- + headers: 'User-Agent: Pinterest for Android Tablet/1.8.4 (SGP321; 4.3)' + readable: 'Pinterest 1.8.4 on a Sony Xperia Tablet Z running Android 4.3' + result: { browser: { name: Pinterest, version: 1.8.4, type: 'app:social' }, os: { name: Android, version: '4.3' }, device: { type: tablet, manufacturer: Sony, model: 'Xperia Tablet Z' } } +- + headers: 'User-Agent: Pinterest for Android/1.1.1 (endeavoru; 4.1.1)' + readable: 'Pinterest 1.1.1 on a HTC One X running Android 4.1.1' + result: { browser: { name: Pinterest, version: 1.1.1, type: 'app:social' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One X' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; GT-I9190 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [Pinterest/Android]' + readable: 'Pinterest on a Samsung Galaxy S4 Mini running Android 4.2.2' + result: { browser: { name: Pinterest, version: Android, type: 'app:social' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Mini' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 [Pinterest/iOS]' + readable: 'Pinterest on an Apple iPhone running iOS 9.1' + result: { browser: { name: Pinterest, version: iOS, type: 'app:social' }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: '9.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; KFSAWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Safari/537.36 [Pinterest/Android]' + readable: 'Pinterest on an Amazon Fire HDX 8.9 (2014) running FireOS 4.5' + result: { browser: { name: Pinterest, using: 'Amazon WebView', version: Android, type: 'app:social' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HDX 8.9 (2014)' } } +- + headers: 'User-Agent: Pinterest/3.3.3 CFNetwork/609.1.4 Darwin/13.0.0' + readable: 'Pinterest on iOS 6.1.2' + result: { browser: { name: Pinterest, type: 'app:social' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } +- + headers: 'User-Agent: Pinterest/4.1.3 CFNetwork/672.1.14 Darwin/14.0.0' + readable: 'Pinterest on iOS 7.1.1' + result: { browser: { name: Pinterest, type: 'app:social' }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A4449d Twitter for iPhone' + readable: 'Twitter on an Apple iPhone running iOS 7.0' + result: { browser: { name: Twitter, type: 'app:social' }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + headers: 'User-Agent: [FBAN/FB4A;FBAV/10.0.0.28.27;FBBV/2802760;FBDM/{density=3.0,width=1080,height=1776};FBLC/fr_CA;FBCR/VIRGIN;FBPN/com.facebook.katana;FBDV/Nexus 5;FBSV/4.4.3;FBOP/1;FBCA/armeabi-v7a:armeabi;]' + readable: 'Facebook on a LG Nexus 5 running Android 4.4.3' + result: { browser: { name: Facebook, type: 'app:social' }, os: { name: Android, version: 4.4.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } +- + headers: 'User-Agent: [FBAN/PAAA;FBAV/1.7;FBDM/{density=2.0,width=720,height=1280};FBLC/es_ES;FB_FW/2;FBSN/Android;FBCR/FONIC;FBDV/GT-I9300;FBSV/4.1.2;]' + readable: 'Facebook Pages on a Samsung Galaxy S III running Android 4.1.2' + result: { browser: { name: 'Facebook Pages', type: 'app:social' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III' } } +- + headers: 'User-Agent: Instagram 1.0.0 Android IC (10/2.3.4; 240dpi; 540x960; HTC/sprint; PG86100; shooter; shooter)' + readable: 'Instagram 1.0.0 on a HTC EVO 3D running Android 2.3.4' + result: { browser: { name: Instagram, version: 1.0.0, type: 'app:social' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EVO 3D' } } +- + headers: 'User-Agent: VKAndroidApp/3.3.2-249 (Android 4.2.2; SDK 17; armeabi-v7a; asus K00F; ru)' + readable: 'VK 3.3 on an Asus MeMO Pad 10 (ME102A) running Android 4.2.2' + result: { browser: { name: VK, version: '3.3', type: 'app:social' }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Asus, model: 'MeMO Pad 10 (ME102A)' } } +- + headers: 'User-Agent: VKAndroidApp/3.2.1-196 (Android 4.2.2; SDK 17; armeabi-v7a; samsung GT-I9500; ru)' + readable: 'VK 3.2 on a Samsung Galaxy S4 running Android 4.2.2' + result: { browser: { name: VK, version: '3.2', type: 'app:social' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } +- + headers: 'User-Agent: VKAndroidApp/3.4-288 (Android 3.2; SDK 13; armeabi-v7a; samsung GT-P7300; ru)' + readable: 'VK 3.4 on a Samsung Galaxy Tab 8.9 running Android 3.2' + result: { browser: { name: VK, version: '3.4', type: 'app:social' }, os: { name: Android, version: '3.2' }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 8.9' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 11_0_3 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A432 [FBAN/FBIOS;FBAV/145.0.0.59.86;FBBV/74951375;FBDV/iPad6,11;FBMD/iPad;FBSN/iOS;FBSV/11.0.3;FBSS/2;FBCR/;FBID/tablet;FBLC/nl_NL;FBOP/5;FBRV/0]' + readable: 'Facebook on an Apple iPad (5th gen) running iOS 11.0.3' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 604.1.38 }, os: { name: iOS, version: 11.0.3 }, device: { type: tablet, manufacturer: Apple, model: 'iPad (5th gen)' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372 [FBAN/FBIOS;FBAV/147.0.0.46.81;FBBV/76961488;FBDV/iPhone10,4;FBMD/iPhone;FBSN/iOS;FBSV/11.0;FBSS/2;FBCR/KPNNL;FBID/phone;FBLC/nl_NL;FBOP/5;FBRV/' + readable: 'Facebook on an Apple iPhone 8 running iOS 11.0' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 604.1.38 }, os: { name: iOS, version: '11.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 8' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-2345.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-2345.yaml new file mode 100644 index 0000000..81efb2a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-2345.yaml @@ -0,0 +1,8 @@ +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; Galaxy Nexus Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/5.0 Mb2345Browser/4.0 Mobile Safari/534.30', X-Requested-With: com.browser2345 } + result: { browser: { name: '2345 Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Nexus' } } + readable: '2345 Browser 4.0 on a Samsung Galaxy Nexus running Android 4.2.2' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7', X-Requested-With: com.browser2345 } + result: { browser: { name: '2345 Browser', type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: '2345 Browser on Android' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-360.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-360.yaml new file mode 100644 index 0000000..7c2f739 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-360.yaml @@ -0,0 +1,204 @@ +- + headers: 'User-Agent: 360%20Browser/3.1 CFNetwork/459 Darwin/10.0.0d3' + result: { browser: { name: 'Qihoo 360 Browser', version: '3.1', type: browser }, os: { name: iOS, alias: 'iPhone OS', version: 3.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 3.1 on iPhone OS 3.1.3' +- + headers: 'User-Agent: 360%20Browser/4.0 CFNetwork/485.12.7 Darwin/10.4.0' + result: { browser: { name: 'Qihoo 360 Browser', version: '4.0', type: browser }, os: { name: iOS, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 4.0 on iOS 4.2.1' +- + headers: 'User-Agent: 360%20Browser/5.3.1 CFNetwork/548.0.4 Darwin/11.0.0' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.3.1, type: browser }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 5.3.1 on iOS 5.0.1' +- + headers: 'User-Agent: 360%20Browser/5.3.2 CFNetwork/609.1.4 Darwin/13.0.0' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.3.2, type: browser }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 5.3.2 on iOS 6.1.2' +- + headers: 'User-Agent: 360%20Browser/5.3.2 CFNetwork/672.0.8 Darwin/14.0.0' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.3.2, type: browser }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 5.3.2 on iOS 7.0.3' +- + headers: 'User-Agent: 360%20Browser/5.3.2 CFNetwork/672.1.14 Darwin/14.0.0' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.3.2, type: browser }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 5.3.2 on iOS 7.1.1' +- + headers: 'User-Agent: CoolPad8020+_CMCC_TD/1.08 Linux/2.6.35 Android/2.3.5 Release/03.29.2012 Mozilla/5.0 AppleWebKit/533.1 Version/4.0 Mobile Safari/533.1; 360 Aphone Browser (6.4.3)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.4.3, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Coolpad, model: '8020' } } + readable: 'Qihoo 360 Browser 6.4.3 on a Coolpad 8020 running Android 2.3.5' +- + headers: 'User-Agent: KONKA_V926_TD/1.0 Android/2.3.5 MocorDroid/SpreadTrum Release/3.22.2012 Browser/AppleWebKit/5333.1; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (5.0.3)' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.0.3, type: browser }, engine: { name: Webkit, version: '5333.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Konka, model: V926 } } + readable: 'Qihoo 360 Browser 5.0.3 on a Konka V926 running Android 2.3.5' +- + headers: 'User-Agent: Lenovo-A788t_TD/S100 Linux/3.4.39 Android/4.3 Release/08.15.2013 Browser/AppleWebkit534.30 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (1.0)' + result: { browser: { name: 'Qihoo 360 Browser', version: '1.0', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: A788 } } + readable: 'Qihoo 360 Browser 1.0 on a Lenovo A788 running Android 4.3' +- + headers: 'User-Agent: LenovoS899t_TD/1.0 Android/4.0 Release/02.01.2012 Browser/WAP2.0 appleWebkit/534.30; 360browser(securitypay,securityinstalled); 360 Aphone Browser (Version 3.0.2)' + result: { browser: { name: 'Qihoo 360 Browser', version: 3.0.2, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: S899 } } + readable: 'Qihoo 360 Browser 3.0.2 on a Lenovo S899 running Android 4.0' +- + headers: 'User-Agent: LenovoS899t_TD/1.0 Android/4.0 Release/02.01.2012 Browser/WAP2.0 appleWebkit/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (4.7.2)' + result: { browser: { name: 'Qihoo 360 Browser', version: 4.7.2, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: S899 } } + readable: 'Qihoo 360 Browser 4.7.2 on a Lenovo S899 running Android 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; R820 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Safari/537.36 360 Aphone Browser (6.9.9.67beta)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.9.9.67, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, model: R820 } } + readable: 'Qihoo 360 Browser 6.9.9.67 on a R820 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; SM-G7106 Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2427.6 Mobile Safari/537.36 360 Aphone Browser (6.9.9.64beta)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.9.9.64, type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand 2' } } + readable: 'Qihoo 360 Browser 6.9.9.64 on a Samsung Galaxy Grand 2 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; GT-N7100 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36; 360 Aphone Browser (6.9.9.25)' + result: { browser: { name: 'Qihoo 360 Browser', using: { name: 'Chromium WebView', version: '30' }, version: 6.9.9.25, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note II' } } + readable: 'Qihoo 360 Browser 6.9.9.25 on a Samsung Galaxy Note II running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; Che1-CL10 Build/Che1-CL10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36; 360 Aphone Browser (6.9.7)' + result: { browser: { name: 'Qihoo 360 Browser', using: { name: 'Chromium WebView', version: '33' }, version: 6.9.7, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Honor 4X' } } + readable: 'Qihoo 360 Browser 6.9.7 on a Huawei Honor 4X running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; MI 4W Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36; 360 Aphone Browser (6.8.7beta)' + result: { browser: { name: 'Qihoo 360 Browser', using: { name: 'Chromium WebView', version: '33' }, version: 6.8.7, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 4' } } + readable: 'Qihoo 360 Browser 6.8.7 on a Xiaomi Mi 4 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; MI NOTE LTE Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36; 360 Aphone Browser (6.9.7)' + result: { browser: { name: 'Qihoo 360 Browser', using: { name: 'Chromium WebView', version: '33' }, version: 6.9.7, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi Note' } } + readable: 'Qihoo 360 Browser 6.9.7 on a Xiaomi Mi Note running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; HTC 802w Build/LRX22G; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/42.0.2311.137 Mobile Safari/537.36; 360 Aphone Browser (6.9.7)' + result: { browser: { name: 'Qihoo 360 Browser', using: { name: 'Chromium WebView', version: '42' }, version: 6.9.7, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: 'Qihoo 360 Browser 6.9.7 on a HTC One running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; MI 2 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36; 360 Aphone Browser (6.9.8.3beta)' + result: { browser: { name: 'Qihoo 360 Browser', using: { name: 'Chromium WebView', version: '37' }, version: 6.9.8.3, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2' } } + readable: 'Qihoo 360 Browser 6.9.8.3 on a Xiaomi Mi 2 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; Redmi Note 2 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36; 360 Aphone Browser (6.9.9.22)' + result: { browser: { name: 'Qihoo 360 Browser', using: { name: 'Chromium WebView', version: '37' }, version: 6.9.9.22, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi Note 2' } } + readable: 'Qihoo 360 Browser 6.9.9.22 on a Xiaomi Redmi Note 2 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SM-G9209 Build/LRX22G; xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36; 360 Aphone Browser (6.9.9.14)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.9.9.14, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S6' } } + readable: 'Qihoo 360 Browser 6.9.9.14 on a Samsung Galaxy S6 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; H60-L01 Build/HDH60-L01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2427.6 Mobile Safari/537.36 360 Aphone Browser (6.9.9.66beta)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.9.9.66, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Honor 6' } } + readable: 'Qihoo 360 Browser 6.9.9.66 on a Huawei Honor 6 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; xx; HTC Desire S Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (4.8.0)' + result: { browser: { name: 'Qihoo 360 Browser', version: 4.8.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire S' } } + readable: 'Qihoo 360 Browser 4.8.0 on a HTC Desire S running Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; ADR6350 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1; 360 Aphone Browser (Version 2.7.1); 360browser(securitypay,securityinstalled)' + result: { browser: { name: 'Qihoo 360 Browser', version: 2.7.1, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Droid Incredible 2' } } + readable: 'Qihoo 360 Browser 2.7.1 on a HTC Droid Incredible 2 running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; MI-ONE Plus Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1; 360browser(securitypay,securityinstalled); 360 Aphone Browser (Version 3.0.2)' + result: { browser: { name: 'Qihoo 360 Browser', version: 3.0.2, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 1' } } + readable: 'Qihoo 360 Browser 3.0.2 on a Xiaomi Mi 1 running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-S5820 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (4.8.1)' + result: { browser: { name: 'Qihoo 360 Browser', version: 4.8.1, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace' } } + readable: 'Qihoo 360 Browser 4.8.1 on a Samsung Galaxy Ace running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; Lenovo A390t Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (4.8.1)' + result: { browser: { name: 'Qihoo 360 Browser', version: 4.8.1, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: A390 } } + readable: 'Qihoo 360 Browser 4.8.1 on a Lenovo A390 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; HTC Incredible S Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (5.0.0)' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.0.0, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Incredible S' } } + readable: 'Qihoo 360 Browser 5.0.0 on a HTC Incredible S running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; MI 2 Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360 Aphone Browser (3.2.1)' + result: { browser: { name: 'Qihoo 360 Browser', version: 3.2.1, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2' } } + readable: 'Qihoo 360 Browser 3.2.1 on a Xiaomi Mi 2 running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; xx; HUAWEI Y321-C00 Build/HuaweiY321-C00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (6.0.1)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.0.1, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend Y321' } } + readable: 'Qihoo 360 Browser 6.0.1 on a Huawei Ascend Y321 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; Galaxy Nexus Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (4.8.1)' + result: { browser: { name: 'Qihoo 360 Browser', version: 4.8.1, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Nexus' } } + readable: 'Qihoo 360 Browser 4.8.1 on a Samsung Galaxy Nexus running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; HM 1SC Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360 Aphone Browser (6.8.9beta)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.8.9, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi 1S' } } + readable: 'Qihoo 360 Browser 6.8.9 on a Xiaomi Redmi 1S running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Safari/536.25 QHBrowser/2.0.3' + result: { browser: { name: 'Qihoo 360 Browser', version: 2.0.3, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 2.0.3 on iOS' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; xx) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17; 360 Aphone Browser (6.4.3)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.4.3, type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Qihoo 360 Browser 6.4.3 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; xx) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17; 360 Aphone Browser (6.8.5)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.8.5, type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Qihoo 360 Browser 6.8.5 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; xx) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (4.8.0)' + result: { browser: { name: 'Qihoo 360 Browser', version: 4.8.0, type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Qihoo 360 Browser 4.8.0 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36; 360 Aphone Browser (2.0.1beta)' + result: { browser: { name: 'Qihoo 360 Browser', version: 2.0.1, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Qihoo 360 Browser 2.0.1 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36; 360 Aphone Browser (6.9.9.18beta)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.9.9.18, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Qihoo 360 Browser 6.9.9.18 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36; 360 Aphone Browser (6.9.9.30)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.9.9.30, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Qihoo 360 Browser 6.9.9.30 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8.1.2 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 QHBrowser/1.2.1' + result: { browser: { name: 'Qihoo 360 Browser', version: 1.2.1, type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 8.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Qihoo 360 Browser 1.2.1 on an Apple iPhone running iOS 8.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8.1.2 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 QHBrowser/2.1.2' + result: { browser: { name: 'Qihoo 360 Browser', version: 2.1.2, type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 8.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Qihoo 360 Browser 2.1.2 on an Apple iPhone running iOS 8.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8.3 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 QHBrowser/2.3.1' + result: { browser: { name: 'Qihoo 360 Browser', version: 2.3.1, type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '8.3' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Qihoo 360 Browser 2.3.1 on an Apple iPhone running iOS 8.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9.0.2 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 QHBrowser/2.4.0' + result: { browser: { name: 'Qihoo 360 Browser', version: 2.4.0, type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 9.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Qihoo 360 Browser 2.4.0 on an Apple iPhone running iOS 9.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9.0.2 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 QHBrowser/238' + result: { browser: { name: 'Qihoo 360 Browser', version: 2.3.8, type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 9.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Qihoo 360 Browser 2.3.8 on an Apple iPhone running iOS 9.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9.1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 QHBrowser/238' + result: { browser: { name: 'Qihoo 360 Browser', version: 2.3.8, type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '9.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Qihoo 360 Browser 2.3.8 on an Apple iPhone running iOS 9.1' +- + headers: 'User-Agent: ZTE U950_TD/1.0 Linux/3.1.10 Android/4.0 Release/8.1.2012 Browser/AppleWebKit/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (6.1.0)' + result: { browser: { name: 'Qihoo 360 Browser', version: 6.1.0, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: U950 } } + readable: 'Qihoo 360 Browser 6.1.0 on a ZTE U950 running Android 4.0' +- + headers: 'User-Agent: ZTE-TU880_TD/1.0 Linux/2.6.32 Android/2.2 Release/5.25.2011 Browser/AppleWebKit/533.1; 360browser(securitypay,securityinstalled); 360 Aphone Browser (3.2.2)' + result: { browser: { name: 'Qihoo 360 Browser', version: 3.2.2, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: Blade } } + readable: 'Qihoo 360 Browser 3.2.2 on a ZTE Blade running Android 2.2' +- + headers: 'User-Agent: 360%20Lite/5.3.2 CFNetwork/609.1.4 Darwin/13.0.0' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.3.2, type: browser }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 5.3.2 on iOS 6.1.2' +- + headers: 'User-Agent: 360%20Lite/5.3.2 CFNetwork/672.0.2 Darwin/14.0.0' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.3.2, type: browser }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 5.3.2 on iOS 7.0' +- + headers: 'User-Agent: 360%20Lite/5.3.2 CFNetwork/672.0.8 Darwin/14.0.0' + result: { browser: { name: 'Qihoo 360 Browser', version: 5.3.2, type: browser }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Qihoo 360 Browser 5.3.2 on iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X820 Build/FEXCNFN5902605092S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser' + readable: 'Qihoo 360 Browser on a LeEco Le Max 2 X820 running Android 6.0.1' + result: { browser: { name: 'Qihoo 360 Browser', using: { name: 'Chromium WebView', version: '49' }, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X820' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-au.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-au.yaml new file mode 100644 index 0000000..73654d6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-au.yaml @@ -0,0 +1,24 @@ +- + headers: 'User-Agent: BIRD.S580 AU.Browser/1.2' + result: { browser: { name: AU, version: '1.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Bird, model: S580 } } + readable: 'AU 1.2 on a Bird S580' +- + headers: 'User-Agent: LG-G3100 AU/4.10' + result: { browser: { name: AU, version: '4.10', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: G3100 } } + readable: 'AU 4.10 on a LG G3100' +- + headers: 'User-Agent: LG-G1500 AU/4.2' + result: { browser: { name: AU, version: '4.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: G1500 } } + readable: 'AU 4.2 on a LG G1500' +- + headers: 'User-Agent: LG-G4010 AU/4.12 UP.Link/1.1' + result: { browser: { name: AU, version: '4.12', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: G4010 } } + readable: 'AU 4.12 on a LG G4010' +- + headers: 'User-Agent: LG-G5300i/JM AU/4.10 Profile/MIDP-1.0 Configuration/CLDC-1.0' + result: { browser: { name: AU, version: '4.10', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: G5300i } } + readable: 'AU 4.10 on a LG G5300i' +- + headers: 'User-Agent: LG-G7070 AU/4.10 Profile/MIDP-1.0 Configuration/CLDC-1.0' + result: { browser: { name: AU, version: '4.10', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: G7070 } } + readable: 'AU 4.10 on a LG G7070' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-baidu.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-baidu.yaml new file mode 100644 index 0000000..6cb0d9f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-baidu.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: BaiduHD/2.1.0 CFNetwork/459 Darwin/10.0.0d3' + result: { browser: { name: 'Baidu Browser', version: '2.1', type: browser }, os: { name: iOS, alias: 'iPhone OS', version: 3.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Baidu Browser 2.1 on iPhone OS 3.1.3' +- + headers: 'User-Agent: BaiduHD/2.3.0 CFNetwork/609.1.4 Darwin/13.0.0' + result: { browser: { name: 'Baidu Browser', version: '2.3', type: browser }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Baidu Browser 2.3 on iOS 6.1.2' +- + headers: 'User-Agent: BaiduHD/2.3.1 CFNetwork/671 Darwin/14.0.0' + result: { browser: { name: 'Baidu Browser', version: '2.3', type: browser }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Baidu Browser 2.3 on iOS 7.0' +- + headers: 'User-Agent: BaiduHD/2.3.2 CFNetwork/548.0.3 Darwin/11.4.2' + result: { browser: { name: 'Baidu Browser', version: '2.3', type: browser }, os: { name: iOS, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Baidu Browser 2.3 on iOS 5.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HUAWEI; W2-U00)', Baidu-Flyflow: 'Microsoft Windows NT 8.10.14219.0;4.0.30508.0;HUAWEI;HUAWEI W2-U00;4a1b5d7105057f0c0208d83c699276ff92cedbff;2.5.0.12' } + result: { browser: { name: 'Baidu Browser', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W2' } } + readable: 'Baidu Browser on a Huawei Ascend W2 running Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 526)', Baidu-Flyflow: 'Microsoft Windows NT 8.10.14219.0;4.0.30508.0;NOKIA;RM-997_apac_prc_906;e7477c026c2d2dab09d667a0d502a19faf960316;2.5.0.12' } + result: { browser: { name: 'Baidu Browser', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 526' } } + readable: 'Baidu Browser on a Nokia Lumia 526 running Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7 T9292)', Baidu-Flyflow: 'Microsoft Windows CE 7.10.8862;3.7.11140.0;HTC;HTC;f96cbdcb5bb37bb7bea3fdf0443f9c24ccc92597;1.0.3.3' } + result: { browser: { name: 'Baidu Browser', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Baidu Browser on a HTC HD7 running Windows Phone 7.5' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 625)', Baidu-Flyflow: 'Microsoft Windows CE 8.10.14219.0;4.0.30508.0;NOKIA;RM-941_eu_belarus_russia_215;d0be80b1a6380df0429cef6d36f56a9b318115fe;1.0.3.3' } + result: { browser: { name: 'Baidu Browser', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 625' } } + readable: 'Baidu Browser on a Nokia Lumia 625 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5801607142S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.116 Mobile Safari/537.36 browser/7.8.12.0 (; P1 6.0)' + readable: 'Baidu Browser 7.8.12.0 on a LeEco Le 2 Pro X620 running Android 6.0' + result: { browser: { name: 'Baidu Browser', using: { name: 'Chromium WebView', version: '48' }, version: 7.8.12.0, type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 Pro X620' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-chrome.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-chrome.yaml new file mode 100644 index 0000000..5cad89b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-chrome.yaml @@ -0,0 +1,292 @@ +- + headers: 'User-Agent: Lenovo_A588t_TD/V1 Linux/3.4.67 Android/4.4.2 Release/08.13.2014 Browser/AppleWebKit537.36 Chrome/30.0.0.0 Mobile Safari/537.36 System/Android 4.4.2;' + result: { browser: { using: { name: 'Chromium WebView', version: '30' } }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: A588 } } + readable: 'Chromium WebView 30 on a Lenovo A588 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; Galaxy Nexus Build/ITL41F) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Nexus' } } + readable: 'Chrome 18 on a Samsung Galaxy Nexus running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; HTC Sensation XE with Beats Audio Z715e Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 ...' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Sensation XE' } } + readable: 'Chrome 18 on a HTC Sensation XE running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LT18i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Arc S' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Arc S running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; S2005A-H Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Lenovo, model: 'IdeaTab S2005' } } + readable: 'Chrome 18 on a Lenovo IdeaTab S2005 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SHW-M250S Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Chrome 18 on a Samsung Galaxy S II running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; A100 Build/IML74K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Acer, model: 'Iconia Tab A100' } } + readable: 'Chrome 25 on an Acer Iconia Tab A100 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ARCHOS 101G9 Build/MR1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Archos, model: '101 G9' } } + readable: 'Chrome 25 on an Archos 101 G9 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ASUS Transformer Pad TF300T Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.59 Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Asus, model: 'Transformer Pad 300' } } + readable: 'Chrome 29 on an Asus Transformer Pad 300 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ASUS Transformer Pad TF300T Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Asus, model: 'Transformer Pad 300' } } + readable: 'Chrome 30 on an Asus Transformer Pad 300 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; F-10D Build/V20R47F) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.33 Mobile Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Fujitsu, model: 'ARROWS X F-10D', carrier: DoCoMo } } + readable: 'Chrome 25 on a Fujitsu ARROWS X F-10D running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; F-11D Build/V21R36A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.74 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Fujitsu, model: 'ARROWS Me F-11D', carrier: DoCoMo } } + readable: 'Chrome 27 on a Fujitsu ARROWS Me F-11D running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; FZ-A1B Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Panasonic, model: 'Toughpad FZ-A1' } } + readable: 'Chrome 31 on a Panasonic Toughpad FZ-A1 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; GT-I9220 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note' } } + readable: 'Chrome 39 on a Samsung Galaxy Note running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; HTC Desire C Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.36 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire C' } } + readable: 'Chrome 36 on a HTC Desire C running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; HTC PH39100 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Raider 4G' } } + readable: 'Chrome 38 on a HTC Raider 4G running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ISW12HT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EVO 3D ISW12HT', carrier: au } } + readable: 'Chrome 42 on a HTC EVO 3D ISW12HT running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ISW13F Build/V77R60B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Fujitsu, model: 'ARROWS Z ISW13F', carrier: au } } + readable: 'Chrome 38 on a Fujitsu ARROWS Z ISW13F running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; Lenovo S880 Build/IML74K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.123 Mobile Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: S880 } } + readable: 'Chrome 25 on a Lenovo S880 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SC-02C Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GALAXY S II SC-02C', carrier: DoCoMo } } + readable: 'Chrome 33 on a Samsung GALAXY S II SC-02C running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; Sony Tablet S Build/TISU0143) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Sony, model: 'Tablet S' } } + readable: 'Chrome 38 on a Sony Tablet S running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; MB860 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: ATRIX } } + readable: 'Chrome 36 on a Motorola ATRIX running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; V370 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Acer, model: 'Liquid E2' } } + readable: 'Chrome 30 on an Acer Liquid E2 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; SCH-R970C Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } + readable: 'Chrome 34 on a Samsung Galaxy S4 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; LG-D801 Build/KOT49I.D80120a) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.76 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '37', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'Chrome 37 on a LG G2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; GT-I9300 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.34 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '41', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III' } } + readable: 'Chrome 41 on a Samsung Galaxy S III running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SM-T817T Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Safari/537.36' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab S2 9.7' } } + readable: 'Chrome 45 on a Samsung Galaxy Tab S2 9.7 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1; XT1060 Build/LPA23.12-39.7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2507.0 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 47.0.2507.0, type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto X' } } + readable: 'Chrome Dev 47.0.2507.0 on a Motorola Moto X running Android 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '46', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } + readable: 'Chrome 46 on a LG Nexus 5 running Android 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5X Build/MDB08I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.43 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '46', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5X' } } + readable: 'Chrome 46 on a LG Nexus 5X running Android 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 6 Build/MPA44G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '44', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Nexus 6' } } + readable: 'Chrome 44 on a Motorola Nexus 6 running Android 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 6P Build/MDB08L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.69 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '47', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Nexus 6P' } } + readable: 'Chrome 47 on a Huawei Nexus 6P running Android 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 7 Build/MDB08M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.8 Safari/537.36' + result: { browser: { name: Chrome, version: '48', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: tablet, manufacturer: Asus, model: 'Nexus 7' } } + readable: 'Chrome 48 on an Asus Nexus 7 running Android 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.1; xx; Coolpad8297_CMCC_TD/1.0 Android/4.2.1 Release/02.20.2014 Browser/Chrome30.0.0.0 Profile/MIDP-1.0 Configuration/CLDC-1.0) Chrome/30.0.0.0 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' + result: { browser: { using: { name: 'Chromium WebView', version: '30' } }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Coolpad, model: 'Dashen F1' } } + readable: 'Chromium WebView 30 on a Coolpad Dashen F1 running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/25.0.1364.124 Mobile/9A405 Safari/7534.48.3 (AD1EC959-762E-4E8B-A814-7A6BFF9274D6)' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.0.1 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 25 on an Apple iPad running iOS 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X; xx) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/9B176 Safari/7534.48.3 (AD5080E1-ED62-4654-A8AA-1C36DF3B6BFD)' + result: { browser: { name: Chrome, version: '23', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.1' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 23 on an Apple iPad running iOS 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X; xx) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.82 Mobile/10A403 Safari/7534.48.3 (643D5A48-4F57-4091-AC16-8BE7917326A6)' + result: { browser: { name: Chrome, version: '21', type: browser }, engine: { name: Webkit, version: 534.46.0 }, os: { name: iOS, version: '6.0' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 21 on an Apple iPad running iOS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 6_0_1 like Mac OS X; xx) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/10A523 Safari/8536.25 (166FE58F-9C03-4B66-AA74-40DEF4715127)' + result: { browser: { name: Chrome, version: '23', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.1 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 23 on an Apple iPad running iOS 6.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/30.0.1599.12 Mobile/11A501 Safari/8536.25 (C9905D08-5428-45A5-8FB6-F0362D8DC5BA)' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 30 on an Apple iPad running iOS 7.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_0_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) CriOS/37.0.2062.60 Mobile/12A405 Safari/9537.53 (000622)' + result: { browser: { name: Chrome, version: '37', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 8.0.2 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 37 on an Apple iPad running iOS 8.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/39.0.2171.50 Mobile/12B435 Safari/600.1.4 (000097)' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.1 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 39 on an Apple iPad running iOS 8.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/39.0.2171.50 Mobile/12B435 Safari/600.1.4 (000102)' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.1 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 39 on an Apple iPad running iOS 8.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/39.0.2171.50 Mobile/12B440 Safari/600.1.4 (000792)' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.2 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 39 on an Apple iPad running iOS 8.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/40.0.2214.61 Mobile/12B440 Safari/600.1.4' + result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.2 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 40 on an Apple iPad running iOS 8.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/41.0.2272.58 Mobile/12B466 Safari/600.1.4' + result: { browser: { name: Chrome, version: '41', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.3 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 41 on an Apple iPad running iOS 8.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/42.0.2311.47 Mobile/12D508 Safari/600.1.4' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.2' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 42 on an Apple iPad running iOS 8.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/35.0.1916.41 Mobile/12F69 Safari/9537.53' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '8.3' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 35 on an Apple iPad running iOS 8.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/41.0.2272.56 Mobile/12H143 Safari/600.1.4' + result: { browser: { name: Chrome, version: '41', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.4' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 41 on an Apple iPad running iOS 8.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/43.0.2357.56 Mobile/12H4125a Safari/600.1.4' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.4' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 43 on an Apple iPad running iOS 8.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/42.0.2311.47 Mobile/13A452 Safari/600.1.4' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 9.0.2 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 42 on an Apple iPad running iOS 9.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/46.0.2490.85 Mobile/13B143 Safari/600.1.4' + result: { browser: { name: Chrome, version: '46', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '9.1' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 46 on an Apple iPad running iOS 9.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; xx) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.82 Mobile/8J2 Safari/7534.48.3 (841B1A38-329C-4D7B-9F54-FB50CC35E37D)' + result: { browser: { name: Chrome, version: '21', type: browser }, engine: { name: Webkit, version: 534.46.0 }, os: { name: iOS, version: 4.3.3 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 21 on an Apple iPad running iOS 4.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; U; CPU OS 5_1_1 like Mac OS X; xx) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3 (3B62CF00-A197-4935-88AB-F56C103D3B5F)' + result: { browser: { name: Chrome, version: '19', type: browser }, engine: { name: Webkit, version: 534.46.0 }, os: { name: iOS, version: 5.1.1 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Chrome 19 on an Apple iPad running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X; xx) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/23.0.1271.96 Mobile/9A334 Safari/7534.48.3 (932DD630-9909-4631-99CF-773639792A4A)' + result: { browser: { name: Chrome, version: '23', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 23 on an Apple iPhone running iOS 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/28.0.1500.12 Mobile/9A405 Safari/7534.48.3 (EEDF4476-97FF-426A-9AFF-7F7FE176A5EC)' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 28 on an Apple iPhone running iOS 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X; xx) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/9A405 Safari/7534.48.3 (4775B5E1-6D71-45AE-BEA2-6CAE9E683F1E)' + result: { browser: { name: Chrome, version: '23', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 23 on an Apple iPhone running iOS 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X; xx) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.80 Mobile/9B208 Safari/7534.48.3 (72D75273-00EC-4E3B-91F9-C07363C6B72D)' + result: { browser: { name: Chrome, version: '21', type: browser }, engine: { name: Webkit, version: 534.46.0 }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 21 on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X; xx) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.82 Mobile/10A403 Safari/7534.48.3 (5FC24CF1-BC6D-408B-BA27-7AA33F074073)' + result: { browser: { name: Chrome, version: '21', type: browser }, engine: { name: Webkit, version: 534.46.0 }, os: { name: iOS, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 21 on an Apple iPhone running iOS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X; xx) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/21.0.1180.82 Mobile/10A525 Safari/7534.48.3 (AA07214F-1BDE-4B8A-8F7D-87B9721773C5)' + result: { browser: { name: Chrome, version: '21', type: browser }, engine: { name: Webkit, version: 534.46.0 }, os: { name: iOS, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 21 on an Apple iPhone running iOS 6.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/28.0.1500.16 Mobile/10B144 Safari/8536.25 (10555816-DD25-4211-B5AC-FE688CE3545B)' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 28 on an Apple iPhone running iOS 6.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X; xx) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/23.0.1271.100 Mobile/10B143 Safari/8536.25 (FA2694E8-BCB0-4ECA-BBD3-6E15B8EEB37C)' + result: { browser: { name: Chrome, version: '23', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 23 on an Apple iPhone running iOS 6.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/27.0.1453.10 Mobile/10B329 Safari/8536.25 (27A46047-DC2A-481C-A996-9DD3335D57E7)' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 27 on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/30.0.1599.12 Mobile/11A465 Safari/8536.25 (6C4719BC-2A6B-4473-91AC-E31A6135ADB1)' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 30 on an Apple iPhone running iOS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/32.0.1700.20 Mobile/11B511 Safari/9537.53 (3C9C5C07-1448-4304-A505-C0F304002E6A)' + result: { browser: { name: Chrome, version: '32', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 32 on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/32.0.1700.20 Mobile/11B554a Safari/9537.53 (8FD0799C-6F5D-48C3-8DD6-BE2D09939C4C)' + result: { browser: { name: Chrome, version: '32', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 32 on an Apple iPhone running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/33.0.1750.21 Mobile/11D201 Safari/9537.53 (008D48E6-1C70-444E-A74B-DC0A1199FCE3)' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 33 on an Apple iPhone running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) CriOS/38.0.2125.67 Mobile/11D257 Safari/9537.53 (000685)' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 38 on an Apple iPhone running iOS 7.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/39.0.2171.50 Mobile/12B435 Safari/600.1.4 (000657)' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 39 on an Apple iPhone running iOS 8.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/45.0.2454.89 Mobile/12F70 Safari/600.1.4' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.3' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 45 on an Apple iPhone running iOS 8.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/44.0.2403.67 Mobile/13A4254v Safari/600.1.4' + result: { browser: { name: Chrome, version: '44', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '9.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 44 on an Apple iPhone running iOS 9.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/43.0.2357.56 Mobile/13A404 Safari/600.1.4' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 9.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 43 on an Apple iPhone running iOS 9.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPod; CPU iPhone OS 6_0_1 like Mac OS X; xx) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/23.0.1271.96 Mobile/10A523 Safari/8536.25 (3189B71D-4F1C-4868-B46A-12A0C07CDBE9)' + result: { browser: { name: Chrome, version: '23', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.1 }, device: { type: media, manufacturer: Apple, model: 'iPod touch' } } + readable: 'Chrome 23 on an Apple iPod touch running iOS 6.0.1' +- + headers: 'User-Agent: m2 note/4.5 Linux/3.10.65 Android/5.1 Release/08.17.2015 Browser/Chrome40.0.2214.114 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: Chrome, version: '40', type: browser }, os: { name: Android, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: Meizu, model: 'M2 Note' } } + readable: 'Chrome 40 on a Meizu M2 Note running Android 5.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-dolfin.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-dolfin.yaml new file mode 100644 index 0000000..c806eef --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-dolfin.yaml @@ -0,0 +1,64 @@ +- + headers: 'User-Agent: SAMSUNG-GT-S3370/S3370DDJE1 SHP/VPP/R5 Dolfin/1.5 Qtv/5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-N' + result: { browser: { name: Dolfin, version: '1.5', type: browser }, os: { name: Touchwiz, version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Corby 3G' } } + readable: 'Dolfin 1.5 on a Samsung Corby 3G running Touchwiz 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-S3850/S3850JVKC5 SHP/VPP/R5 Dolfin/2.0 NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Touchwiz, version: '3.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Corby II' } } + readable: 'Dolfin 2.0 on a Samsung Corby II running Touchwiz 3.0' +- + headers: 'User-Agent: SAMSUNG-GT-S3970_TD/1.0 RTK-E/1.0 SHP/VPP-R5 Release/04.20.2011 Browser/Dolfin2.1 Profile/MIDP-2.1 Configuration/CLDC-1.1 SMM-MMS/1.2.0' + result: { browser: { name: Dolfin, version: '2.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-S3970 } } + readable: 'Dolfin 2.1 on a Samsung GT-S3970' +- + headers: 'User-Agent: SAMSUNG-GT-S5230W/S523WXIJH3 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '1.0', type: browser }, os: { name: Touchwiz, version: { value: '2.0', alias: '2.0 or earlier' } }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Star } } + readable: 'Dolfin 1.0 on a Samsung Star running Touchwiz 2.0 or earlier' +- + headers: 'User-Agent: SAMSUNG-GT-S5233S/S5233SDDKG1 SHP/VPP/R5 Jasmine/0.8 Qtv5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '0.8', type: browser }, os: { name: Touchwiz, version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Star } } + readable: 'Dolfin 0.8 on a Samsung Star running Touchwiz 1.0' +- + headers: 'User-Agent: SAMSUNG-GT-S5260/S5260XEKK1 SHP/VPP/R5 Dolfin/2.0 NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Touchwiz, version: '3.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Star II' } } + readable: 'Dolfin 2.0 on a Samsung Star II running Touchwiz 3.0' +- + headers: 'User-Agent: SAMSUNG-GT-S5263/S5263JPKB4 SHP/VPP/R5 Dolfin/2.0 NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Touchwiz, version: '3.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Star II' } } + readable: 'Dolfin 2.0 on a Samsung Star II running Touchwiz 3.0' +- + headers: 'User-Agent: SAMSUNG-GT-S5560/S5560XXJI1 SHP/VPP/R5 Dolfin/1.0 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '1.0', type: browser }, os: { name: Touchwiz, version: { value: '2.0', alias: '2.0 or earlier' } }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Marvel } } + readable: 'Dolfin 1.0 on a Samsung Marvel running Touchwiz 2.0 or earlier' +- + headers: 'User-Agent: SAMSUNG-GT-S5620-ORANGE/S5620BVJF2 SHP/VPP/R5 Dolfin/1.5 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '1.5', type: browser }, os: { name: Touchwiz, version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Monte } } + readable: 'Dolfin 1.5 on a Samsung Monte running Touchwiz 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-B5310/B5310DDIK5 SHP/VPP/R5 Dolfin/1.5 Nextreaming SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '1.5', type: browser }, os: { name: Touchwiz, version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Corby Pro' } } + readable: 'Dolfin 1.5 on a Samsung Corby Pro running Touchwiz 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-S8530/S8530XXLAV Bada/2.0 AppleWebKit/534.20 Dolfin/3.0 Mobile NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 3.0 on a Samsung Wave II running Bada 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-S8530/S8530XXKF1 Bada/1.2 AppleWebKit/533.1 Dolfin/2.2 Mobile NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 2.2 on a Samsung Wave II running Bada 1.2' +- + headers: 'User-Agent: SAMSUNG-GT-S8500/S8500XXJEE Bada/1.0 Dolfin/2.0 NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SCH-F859/F859DH02;U;NUCLEUS/2.1;Profile/MIDP-2.1 Configuration/CLDC-1.1;480*800;CTC/2.0) Dolfin/2.0' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada' +- + headers: 'User-Agent: SAMSUNG-GT-B2710/B2710POJK3 SHP/VPP/R5 Dolfin/2.0 QTV/5.3 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Xcover 271' } } + readable: 'Dolfin 2.0 on a Samsung Xcover 271' +- + headers: 'User-Agent: SAMSUNG-GT-S8530/1.0 SHP/VPP/R5 Dolfin/2.2 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '2.2', type: browser }, os: { name: Bada, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 2.2 on a Samsung Wave II running Bada 1.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-dolphin.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-dolphin.yaml new file mode 100644 index 0000000..2f6e42f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-dolphin.yaml @@ -0,0 +1,60 @@ +- + headers: 'User-Agent: Dolphin/10.0.0 (Linux; U; Android 4.1.2; xx; PlayBook Build/jelly bean) AppleWebKit/535.1+ (KHTML, like Gecko) Version/7.2.0.0 Safari/535.1+' + result: { browser: { name: Dolphin, version: 10.0.0, type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'Dolphin 10.0.0 on a RIM BlackBerry PlayBook running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Android 4.0.4; U; xx; SAMSUNG-SGH-I717 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/1.1.0' + result: { browser: { name: Dolphin, version: 1.1.0, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note' } } + readable: 'Dolphin 1.1.0 on a Samsung Galaxy Note running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Android 4.0.4; U; xx; SAMSUNG-SGH-I717 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/INT-1.1.0' + result: { browser: { name: Dolphin, version: 1.1.0, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note' } } + readable: 'Dolphin 1.1.0 on a Samsung Galaxy Note running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5.1.16-RT-20120808.143842; xx; K-Touch W619 Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/CN-1.0.8 Mobile Safari/534.30' + result: { browser: { name: Dolphin, version: 1.0.8, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: 1.5.1 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W619 } } + readable: 'a K-Touch W619 running Aliyun OS 1.5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; Coolpad 5820 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 DolphinHDCN/7.0.2' + result: { browser: { name: Dolphin, version: 7.0.2, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Coolpad, model: '5820' } } + readable: 'Dolphin 7.0.2 on a Coolpad 5820 running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; xx; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 DolphinHDCN/6.3.1' + result: { browser: { name: Dolphin, version: 6.3.1, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Desire } } + readable: 'Dolphin 6.3.1 on a HTC Desire running Android 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; xx; GT-I9100 Build/GINGERBREAD) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/INT-1.0.8 Mobile Safari/534.30' + result: { browser: { name: Dolphin, version: 1.0.8, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Dolphin 1.0.8 on a Samsung Galaxy S II running Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; xx; ST18i Build/4.0.A.2.368) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/CN-1.0.9 Mobile Safari/534.30' + result: { browser: { name: Dolphin, version: 1.0.9, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Ray' } } + readable: 'Dolphin 1.0.9 on a Sony Ericsson Xperia Ray running Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-E730 Build/GRJ22) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/INT-1.1.0 Mobile Safari/534.30' + result: { browser: { name: Dolphin, version: 1.1.0, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Sol' } } + readable: 'Dolphin 1.1.0 on a LG Optimus Sol running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; ME860 Build/4.5.2A-74_OLH-25) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/CN-1.0.9 Mobile Safari/534.30' + result: { browser: { name: Dolphin, version: 1.0.9, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: ATRIX } } + readable: 'Dolphin 1.0.9 on a Motorola ATRIX running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; HTC One X Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/INT-1.1.0 Mobile Safari/534.30' + result: { browser: { name: Dolphin, version: 1.1.0, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One X' } } + readable: 'Dolphin 1.1.0 on a HTC One X running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; xx; SAMSUNG-SGH-I727 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Dolphin/INT-9.0.3 Mobile Safari/534.30' + result: { browser: { name: Dolphin, version: 9.0.3, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Skyrocket' } } + readable: 'Dolphin 9.0.3 on a Samsung Galaxy S II Skyrocket running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7 DolphinHDCN/6.2.0' + result: { browser: { name: Dolphin, version: 6.2.0, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Dolphin 6.2.0 on an Apple iPhone running iOS 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7 DolphinHDCN/7.0.2' + result: { browser: { name: Dolphin, version: 7.0.2, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Dolphin 7.0.2 on an Apple iPhone running iOS 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5801507011S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 DolphinBrowserCN/11.2.8.1.176' + readable: 'Dolphin 11.2.8.1 on a LeEco Le 2 Pro X620 running Android 6.0' + result: { browser: { name: Dolphin, using: { name: 'Chromium WebView', version: '49' }, version: 11.2.8.1.176, type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 Pro X620' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-edge.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-edge.yaml new file mode 100644 index 0000000..3e896e3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-edge.yaml @@ -0,0 +1,40 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 920) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10166' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Edge 12 on a Nokia Lumia 920 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 920) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10536' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10536' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Edge 12 on a Nokia Lumia 920 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 925) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.0' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Edge 12 on a Nokia Lumia 925 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Nokia 920T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10536' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10536' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Edge 12 on a Nokia Lumia 920 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Nokia 925T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.0' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Edge 12 on a Nokia Lumia 925 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Nokia; Lumia 520) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10130' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10130' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Edge 13 on a Nokia Lumia 520 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; WebView/3.0; NOKIA; RM-1027) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10586' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 636' } } + readable: 'Edge 13 on a Nokia Lumia 636 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; WebView/3.0; SAMSUNG; GT-I8750) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10586' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S' } } + readable: 'Edge 13 on a Samsung Ativ S running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 8.0; Pixel XL Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.0 Mobile Safari/537.36 EdgA/41.1.35.1' + readable: 'Edge on a Google Pixel XL running Android 8.0' + result: { browser: { name: Edge, family: { name: Chrome, version: 58 }, version: '41', type: browser }, engine: { name: Blink }, os: { name: Android, version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Google, model: 'Pixel XL' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89 Safari/603.2.4 EdgiOS/41.1.35.1' + readable: 'Edge on an Apple iPhone running iOS 10.3.2' + result: { browser: { name: Edge, version: '41', type: browser }, engine: { name: Webkit, version: 603.2.4 }, os: { name: iOS, version: 10.3.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-eui.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-eui.yaml new file mode 100644 index 0000000..c0e3758 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-eui.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1;en_us; Le X829 Build/FEXCNFN5902811088S) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 EUI Browser/??????1.4.1.47' + readable: 'EUI Browser 1.4 on a LeEco Le Max 2 X829 running Android 6.0.1' + result: { browser: { name: 'EUI Browser', family: { name: Chrome, version: 49 }, version: '1.4', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X829' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1;zh_cn; Le X829 Build/FIXNAOP5801911101S) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/49.0.0.0 Mobile Safari/537.36 EUI Browser/5.8.019S' + readable: 'EUI Browser 5.8 on a LeEco Le Max 2 X829 running Android 6.0.1' + result: { browser: { name: 'EUI Browser', using: { name: 'Chromium WebView', version: '49' }, version: '5.8', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X829' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1;zh_cn; Le X820 Build/FEXCNFN5601405314S) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/49.0.0.0 Mobile Safari/537.36 EUI Browser/6.0' + readable: 'EUI Browser 6.0 on a LeEco Le Max 2 X820 running Android 6.0.1' + result: { browser: { name: 'EUI Browser', using: { name: 'Chromium WebView', version: '49' }, version: '6.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X820' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-firefox-ios.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-firefox-ios.yaml new file mode 100644 index 0000000..d6efe45 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-firefox-ios.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.0.1 Mobile/13C5055d Safari/601.1.46' + result: { browser: { name: Firefox, version: 1.0.1, type: browser }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: '9.2' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Firefox 1.0.1 on an Apple iPad running iOS 9.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13C5060d Safari/601.1.46' + result: { browser: { name: Firefox, version: '1.1', type: browser }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: '9.2' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Firefox 1.1 on an Apple iPad running iOS 9.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12H141 Safari/600.1.4' + result: { browser: { name: Firefox, version: '1.0', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.4' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Firefox 1.0 on an Apple iPhone running iOS 8.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13A404 Safari/601.1.46' + result: { browser: { name: Firefox, version: '1.1', type: browser }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: 9.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Firefox 1.1 on an Apple iPhone running iOS 9.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPod touch; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13A452 Safari/601.1.46' + result: { browser: { name: Firefox, version: '1.1', type: browser }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: 9.0.2 }, device: { type: media, manufacturer: Apple, model: 'iPod touch' } } + readable: 'Firefox 1.1 on an Apple iPod touch running iOS 9.0.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-ibrowser.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-ibrowser.yaml new file mode 100644 index 0000000..c2cd405 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-ibrowser.yaml @@ -0,0 +1,60 @@ +- + headers: 'User-Agent: iBrowser/2.5 (NokiaE5-00;SymbianOS/9.3 Series60/3.2)' + result: { browser: { name: iBrowser, version: '2.5', type: browser }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E5-00 } } + readable: 'iBrowser 2.5 on a Nokia E5-00 running Series60 3.2' +- + headers: 'User-Agent: iBrowser/2.6 (Nokia5250;SymbianOS/9.1 Series60/3.0)' + result: { browser: { name: iBrowser, version: '2.6', type: browser }, os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5250' } } + readable: 'iBrowser 2.6 on a Nokia 5250 running Series60 3.0' +- + headers: 'User-Agent: iBrowser/2.7 (NokiaN8-00;SymbianOS/9.1 Series60/3.0)' + result: { browser: { name: iBrowser, version: '2.7', type: browser }, os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N8-00 } } + readable: 'iBrowser 2.7 on a Nokia N8-00 running Series60 3.0' +- + headers: 'User-Agent: iBrowser/2.7 Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-I9100 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: iBrowser, version: '2.7', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'iBrowser 2.7 on a Samsung Galaxy S II running Android 2.3.6' +- + headers: 'User-Agent: iBrowser/2.8 Mozilla/5.0 (Linux; Android 4.4.2; Mi-516 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' + result: { browser: { name: iBrowser, using: { name: 'Chromium WebView', version: '30' }, version: '2.8', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Spice, model: 'Mi-516 Stellar' } } + readable: 'iBrowser 2.8 on a Spice Mi-516 Stellar running Android 4.4.2' +- + headers: 'User-Agent: iBrowser/26 Mozilla/5.0 (Linux; U; Android 2.2.1; xx; GT-S5670 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: iBrowser, version: '2.6', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fit' } } + readable: 'iBrowser 2.6 on a Samsung Galaxy Fit running Android 2.2.1' +- + headers: 'User-Agent: iBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.5; xx; LG-VM670 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: iBrowser, version: '2.6', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus V' } } + readable: 'iBrowser 2.6 on a LG Optimus V running Android 2.3.5' +- + headers: 'User-Agent: iBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-N7000 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: iBrowser, version: '2.6', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note' } } + readable: 'iBrowser 2.6 on a Samsung Galaxy Note running Android 2.3.6' +- + headers: 'User-Agent: iBrowser/26 Mozilla/5.0 (Linux; U; Android 4.1.2; xx; LG-LU6200 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: iBrowser, version: '2.6', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus LTE' } } + readable: 'iBrowser 2.6 on a LG Optimus LTE running Android 4.1.2' +- + headers: 'User-Agent: iBrowser/Mini2.5 (LG-T375)' + result: { browser: { name: 'iBrowser Mini', version: '2.5', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: T375 } } + readable: 'iBrowser Mini 2.5 on a LG T375' +- + headers: 'User-Agent: iBrowser/Mini2.5 (Nokia6303iclassic/10.80)' + result: { browser: { name: 'iBrowser Mini', version: '2.5', type: browser }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6303i classic' } } + readable: 'iBrowser Mini 2.5 on a Nokia 6303i classic running Series40' +- + headers: 'User-Agent: iBrowser/Mini2.8 (NokiaC2-01/11.00)' + result: { browser: { name: 'iBrowser Mini', version: '2.8', type: browser }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C2-01 } } + readable: 'iBrowser Mini 2.8 on a Nokia C2-01 running Series40' +- + headers: 'User-Agent: iBrowser/Mini2.8 (SAMSUNG GT-E2222)' + result: { browser: { name: 'iBrowser Mini', version: '2.8', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Ch@t 222' } } + readable: 'iBrowser Mini 2.8 on a Samsung Ch@t 222' +- + headers: 'User-Agent: iBrowser/Mini2.8 (SAMSUNG-GT-C6712/C6712DDKE1)' + result: { browser: { name: 'iBrowser Mini', version: '2.8', type: browser }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Star II Duos' } } + readable: 'iBrowser Mini 2.8 on a Samsung Star II Duos running Touchwiz' +- + headers: 'User-Agent: iBrowser/Mini2.8 (SAMSUNG-GT-S5260/S5260XXKC4)' + result: { browser: { name: 'iBrowser Mini', version: '2.8', type: browser }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Star II' } } + readable: 'iBrowser Mini 2.8 on a Samsung Star II running Touchwiz' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-iris.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-iris.yaml new file mode 100644 index 0000000..0d57f82 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-iris.yaml @@ -0,0 +1,24 @@ +- + headers: 'User-Agent: Mozilla/5.0 (U; Mobile; iPhone; PPC; xx; 320x320) AppleWebKit/525.18.1 (KHTML, like Gecko) WM5 Iris/1.1.9 Version/3.1.1 Mobile/5A345 Safari/525.20' + result: { browser: { name: Iris, version: 1.1.9, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: 'Windows Mobile', version: '5.0' }, device: { type: mobile, subtype: smart } } + readable: 'Iris 1.1.9 on Windows Mobile 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (U; Mobile; iPhone; Smartphone; xx; 320x240) AppleWebKit/525.18.1 (KHTML, like Gecko) WM5 Iris/1.1.7 Version/3.1.1 Mobile/5A345 Safari/525.20' + result: { browser: { name: Iris, version: 1.1.7, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: 'Windows Mobile', version: '5.0' }, device: { type: mobile, subtype: smart } } + readable: 'Iris 1.1.7 on Windows Mobile 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT; U; xx) AppleWebKit/522+ (KHTML, like Gecko) Iris/1.0.14 Safari/419.3' + result: { browser: { name: Iris, version: 1.0.14, type: browser }, engine: { name: Webkit, version: '522' }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Iris 1.0.14 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT; U; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Iris/1.1.8 Safari/525.20' + result: { browser: { name: Iris, version: 1.1.8, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Iris 1.1.8 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows CE; U; Mobile; iPhone; PPC; en) AppleWebKit/522+ (KHTML, like Gecko) WM5 Iris/1.0.14 Safari/419.3' + result: { browser: { name: Iris, version: 1.0.14, type: browser }, engine: { name: Webkit, version: '522' }, os: { name: 'Windows Mobile', version: '5.0' }, device: { type: mobile, subtype: smart } } + readable: 'Iris 1.0.14 on Windows Mobile 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; arm; en, Nuvi) AppleWebKit/523.13 (KHTML, like Gecko) Version/3.0 Mobile Safari/419.3 Qt Qtopia Iris/1.1.2' + result: { browser: { name: Iris, version: 1.1.2, type: browser }, engine: { name: Webkit, version: '523.13' }, os: { name: Qtopia }, device: { type: gps, manufacturer: Garmin, model: Nuvi } } + readable: 'Iris 1.1.2 on a Garmin Nuvi running Qtopia' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-jig.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-jig.yaml new file mode 100644 index 0000000..191d58d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-jig.yaml @@ -0,0 +1,156 @@ +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 5.0.5; N901iS)' + result: { browser: { name: 'Jig Browser', version: 5.0.5, type: browser }, device: { type: mobile, subtype: feature, manufacturer: NEC, model: N901iS, carrier: DoCoMo } } + readable: 'Jig Browser 5.0.5 on a NEC N901iS' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 5.4.5; F901iS)' + result: { browser: { name: 'Jig Browser', version: 5.4.5, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F901iS, carrier: DoCoMo } } + readable: 'Jig Browser 5.4.5 on a Fujitsu F901iS' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 7.0.9; D902i)' + result: { browser: { name: 'Jig Browser', version: 7.0.9, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Mitsubishi, model: D902i, carrier: DoCoMo } } + readable: 'Jig Browser 7.0.9 on a Mitsubishi D902i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 7.3.7; P902i)' + result: { browser: { name: 'Jig Browser', version: 7.3.7, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: P902i, carrier: DoCoMo } } + readable: 'Jig Browser 7.3.7 on a Panasonic P902i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 7.7.4; N905i)' + result: { browser: { name: 'Jig Browser', version: 7.7.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: NEC, model: N905i, carrier: DoCoMo } } + readable: 'Jig Browser 7.7.4 on a NEC N905i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 8.1.6; 934SH)' + result: { browser: { name: 'Jig Browser', version: 8.1.6, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 934SH, carrier: Softbank } } + readable: 'Jig Browser 8.1.6 on a Sharp 934SH' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.0; SN3F)' + result: { browser: { name: 'Jig Browser', version: 1.0.0, type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: re W63S, carrier: au } } + readable: 'Jig Browser 1.0.0 on a Sony Ericsson re W63S' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; 706P)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: 706P, carrier: Softbank } } + readable: 'Jig Browser 1.0.4 on a Panasonic 706P' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; 823P)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: 823P, carrier: Softbank } } + readable: 'Jig Browser 1.0.4 on a Panasonic 823P' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; F906i)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F906i, carrier: DoCoMo } } + readable: 'Jig Browser 1.0.4 on a Fujitsu F906i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; N905i)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: NEC, model: N905i, carrier: DoCoMo } } + readable: 'Jig Browser 1.0.4 on a NEC N905i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser9 1.4.9; D905i; 2043)' + result: { browser: { name: 'Jig Browser', version: 1.4.9, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Mitsubishi, model: D905i, carrier: DoCoMo } } + readable: 'Jig Browser 1.4.9 on a Mitsubishi D905i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser9 1.5.0; SH904i; 1023)' + result: { browser: { name: 'Jig Browser', version: 1.5.0, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH904i, carrier: DoCoMo } } + readable: 'Jig Browser 1.5.0 on a Sharp SH904i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser9i 1.4.8; F08A3; 1002)' + result: { browser: { name: 'Jig Browser', version: 1.4.8, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F08A3, carrier: DoCoMo } } + readable: 'Jig Browser 1.4.8 on a Fujitsu F08A3' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser9i 1.5.0; P03C; 2103)' + result: { browser: { name: 'Jig Browser', version: 1.5.0, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: P03C, carrier: DoCoMo } } + readable: 'Jig Browser 1.5.0 on a Panasonic P03C' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser; HI31)' + result: { browser: { name: 'Jig Browser', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Hitachi, model: W11H, carrier: au } } + readable: 'Jig Browser on a Hitachi W11H' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser9i 1.4.8; SH01B; 1007)' + result: { browser: { name: 'Jig Browser', version: 1.4.8, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH01B, carrier: DoCoMo } } + readable: 'Jig Browser 1.4.8 on a Sharp SH01B' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 4.0.4; P900i)' + result: { browser: { name: 'Jig Browser', version: 4.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: P900i, carrier: DoCoMo } } + readable: 'Jig Browser 4.0.4 on a Panasonic P900i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 5.0.1; F900iT)' + result: { browser: { name: 'Jig Browser', version: 5.0.1, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F900iT, carrier: DoCoMo } } + readable: 'Jig Browser 5.0.1 on a Fujitsu F900iT' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 5.4.5; V904SH)' + result: { browser: { name: 'Jig Browser', version: 5.4.5, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V904SH, carrier: Softbank } } + readable: 'Jig Browser 5.4.5 on a Sharp V904SH' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 7.0.5; HI31)' + result: { browser: { name: 'Jig Browser', version: 7.0.5, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Hitachi, model: W11H, carrier: au } } + readable: 'Jig Browser 7.0.5 on a Hitachi W11H' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 7.0.9; D902i)' + result: { browser: { name: 'Jig Browser', version: 7.0.9, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Mitsubishi, model: D902i, carrier: DoCoMo } } + readable: 'Jig Browser 7.0.9 on a Mitsubishi D902i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser 7.8.3; SO703i)' + result: { browser: { name: 'Jig Browser', version: 7.8.3, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sony, model: SO703i, carrier: DoCoMo } } + readable: 'Jig Browser 7.8.3 on a Sony SO703i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.0; 940N)' + result: { browser: { name: 'Jig Browser', version: 1.0.0, type: browser }, device: { type: mobile, subtype: feature, manufacturer: NEC, model: 940N, carrier: Softbank } } + readable: 'Jig Browser 1.0.0 on a NEC 940N' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; 001SC)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 001SC, carrier: Softbank } } + readable: 'Jig Browser 1.0.4 on a Samsung 001SC' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; 705NK)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 705NK, carrier: Softbank } } + readable: 'Jig Browser 1.0.4 on a Nokia 705NK' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; 810T)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: 810T, carrier: Softbank } } + readable: 'Jig Browser 1.0.4 on a Toshiba 810T' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; 830CA)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: 830CA, carrier: Softbank } } + readable: 'Jig Browser 1.0.4 on a Casio 830CA' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; CA3C)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: W63CA, carrier: au } } + readable: 'Jig Browser 1.0.4 on a Casio W63CA' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; DM003SH)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: DM003SH, carrier: 'Disney Mobile' } } + readable: 'Jig Browser 1.0.4 on a Sharp DM003SH' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; F02A)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F02A, carrier: DoCoMo } } + readable: 'Jig Browser 1.0.4 on a Fujitsu F02A' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; F903i)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F903i, carrier: DoCoMo } } + readable: 'Jig Browser 1.0.4 on a Fujitsu F903i' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; HI3E)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Hitachi, model: W63H, carrier: au } } + readable: 'Jig Browser 1.0.4 on a Hitachi W63H' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; KC38)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: W44K, carrier: au } } + readable: 'Jig Browser 1.0.4 on a Kyocera W44K' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; PT34)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: W62PT, carrier: au } } + readable: 'Jig Browser 1.0.4 on a Pantech W62PT' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; SA3C)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: W61SA, carrier: au } } + readable: 'Jig Browser 1.0.4 on a Sanyo W61SA' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser web; 1.0.4; V702NK)' + result: { browser: { name: 'Jig Browser', version: 1.0.4, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: V702NK, carrier: Softbank } } + readable: 'Jig Browser 1.0.4 on a Nokia V702NK' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser9 1.4.5; L03B; 2072)' + result: { browser: { name: 'Jig Browser', version: 1.4.5, type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: L03B, carrier: DoCoMo } } + readable: 'Jig Browser 1.4.5 on a LG L03B' +- + headers: 'User-Agent: Mozilla/4.0 (jig browser9)' + result: { browser: { name: 'Jig Browser', type: browser }, device: { type: mobile, subtype: feature } } + readable: 'Jig Browser' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-lg.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-lg.yaml new file mode 100644 index 0000000..b892b3d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-lg.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-D802/V114 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'LG Browser on a LG G2 running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LG-D800/D80020y Build/KOT49I.D80020y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.2 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'LG Browser on a LG G2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; in-id; LG-D325 Build/KOT49I.A1407941488) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L70 } } + readable: 'LG Browser on a LG L70 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; pl-pl; LG-D802 Build/KVT49L.A1412000029) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'LG Browser on a LG G2 running Android 4.4.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-maxthon.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-maxthon.yaml new file mode 100644 index 0000000..52f1311 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-maxthon.yaml @@ -0,0 +1,72 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; L36h Build/10.5.A.0.230) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MxBrowser/4.3.2.2000 Maxthon/4.3.2.2000' + result: { browser: { name: Maxthon, using: { name: 'Chromium WebView', version: '30' }, version: 4.3.2.2000, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z' } } + readable: 'Maxthon 4.3.2.2000 on a Sony Xperia Z running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; LG-D802 Build/KOT49I.D80220h) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MxBrowser/4.5.0.2000' + result: { browser: { name: Maxthon, using: { name: 'Chromium WebView', version: '30' }, version: 4.5.0.2000, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'Maxthon 4.5.0.2000 on a LG G2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; LG-F320L Build/KOT49I.F320L21p) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MxBrowser/4.4.0.2000 Maxthon/4.4.0.2000' + result: { browser: { name: Maxthon, using: { name: 'Chromium WebView', version: '30' }, version: 4.4.0.2000, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'Maxthon 4.4.0.2000 on a LG G2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Lenovo A3500-HV Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 MxBrowser/4.4.2.1000' + result: { browser: { name: Maxthon, using: { name: 'Chromium WebView', version: '30' }, version: 4.4.2.1000, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Lenovo, model: 'IdeaTab A3500' } } + readable: 'Maxthon 4.4.2.1000 on a Lenovo IdeaTab A3500 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; XT615 Build/V1.67A) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Maxthon' + result: { browser: { name: Maxthon, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT615' } } + readable: 'Maxthon on a Motorola MOTO XT615 running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.1; xx; NOVO7PALADIN Build/ICS_MR0) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 Maxthon/4.0.4.1000' + result: { browser: { name: Maxthon, version: 4.0.4, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.1 }, device: { type: tablet, manufacturer: Ainovo, model: 'Novo7 Paladin' } } + readable: 'Maxthon 4.0.4 on an Ainovo Novo7 Paladin running Android 4.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; GT-P5100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 Maxthon/4.0.3.3000' + result: { browser: { name: Maxthon, version: 4.0.3, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 2 10.1' } } + readable: 'Maxthon 4.0.3 on a Samsung Galaxy Tab 2 10.1 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; LG-P708g Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 Maxthon' + result: { browser: { name: Maxthon, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L7' } } + readable: 'Maxthon on a LG Optimus L7 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; C6603 Build/10.3.1.A.2.67) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 Maxthon/4.1.4.2000' + result: { browser: { name: Maxthon, version: 4.1.4, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z' } } + readable: 'Maxthon 4.1.4 on a Sony Xperia Z running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; Symphony Xplorer W22 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MxBrowser/4.3.0.2000 Maxthon/4.3.0.2000' + result: { browser: { name: Maxthon, version: 4.3.0.2000, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Symphony, model: 'Xplorer W22' } } + readable: 'Maxthon 4.3.0.2000 on a Symphony Xplorer W22 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/537.4 Maxthon/4.1.4.2000' + result: { browser: { name: Maxthon, version: 4.1.4, type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Maxthon 4.1.4 on an Apple iPhone running iOS 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/537.4 Maxthon/4.2.1.2000' + result: { browser: { name: Maxthon, version: 4.2.1, type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Maxthon 4.2.1 on an Apple iPhone running iOS 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53 MxBrowser/4.3.0.2000 Maxthon/4.3.0.2000' + result: { browser: { name: Maxthon, version: 4.3.0.2000, type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Maxthon 4.3.0.2000 on an Apple iPhone running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) MaxthoniOS/4.6.7.44 Mobile/12H143 Safari/600.1.4' + result: { browser: { name: Maxthon, type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.4' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Maxthon on an Apple iPhone running iOS 8.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20 Mobile Maxthon' + result: { browser: { name: Maxthon, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Maxthon on an Apple iPhone running iPhone OS 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; xx)Maxthon AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20' + result: { browser: { name: Maxthon, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, version: 4.3.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Maxthon on an Apple iPhone running iOS 4.3.2' +- + headers: 'User-Agent: MxBrowser-iPhone/40 CFNetwork/672.0.8 Darwin/14.0.0' + result: { browser: { name: Maxthon, version: '40', type: browser }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Maxthon 40 on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: ZTE U950_TD/1.0 Linux/3.1.10 Android/4.0 Release/8.1.2012 Browser/AppleWebKit534.30 Maxthon/4.1.1.1000' + result: { browser: { name: Maxthon, version: 4.1.1, type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: U950 } } + readable: 'Maxthon 4.1.1 on a ZTE U950 running Android 4.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-mib.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-mib.yaml new file mode 100644 index 0000000..7c90ca2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-mib.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: MOT-C168i/1.0 Release/13.07.2007 Browser/CMCS1.0 Software/2.350' + result: { browser: { name: 'Motorola Internet Browser', version: '1.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: C168i } } + readable: 'Motorola Internet Browser 1.0 on a Motorola C168i' +- + headers: 'User-Agent: MOT-V730/1.0 MIB1.2/v1.0' + result: { browser: { name: 'Motorola Internet Browser', version: '1.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V730 } } + readable: 'Motorola Internet Browser 1.2 on a Motorola V730' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-minibrowser.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-minibrowser.yaml new file mode 100644 index 0000000..03c305e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-minibrowser.yaml @@ -0,0 +1,28 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; U; 500; xx) AppleWebKit/534.3 (KHTML, like Gecko) MiniBrowserMobile/4.0 Mobile Safari/534.3' + result: { browser: { name: MiniBrowser, version: '4.0', type: browser }, engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '500' } } + readable: 'MiniBrowser 4.0 on a Nokia 500 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; U; C7-00; xx) AppleWebKit/534.3 (KHTML, like Gecko) MiniBrowserMobile/4.0 Mobile Safari/534.3' + result: { browser: { name: MiniBrowser, version: '4.0', type: browser }, engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C7-00 } } + readable: 'MiniBrowser 4.0 on a Nokia C7-00 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian; U; 603; xx) AppleWebKit/534.3 (KHTML, like Gecko) MiniBrowserMobile/4.0 Mobile Safari/534.3' + result: { browser: { name: MiniBrowser, version: '4.0', type: browser }, engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '603' } } + readable: 'MiniBrowser 4.0 on a Nokia 603 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian; U; N8-00; xx) AppleWebKit/534.3 (KHTML, like Gecko) MiniBrowserMobile/4.0 Mobile Safari/534.3' + result: { browser: { name: MiniBrowser, version: '4.0', type: browser }, engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N8-00 } } + readable: 'MiniBrowser 4.0 on a Nokia N8-00 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian; U; Nokia808 PureView; xx) AppleWebKit/534.3 (KHTML, like Gecko) MiniBrowserMobile/4.0 Mobile Safari/534.3' + result: { browser: { name: MiniBrowser, version: '4.0', type: browser }, engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '808 PureView' } } + readable: 'MiniBrowser 4.0 on a Nokia 808 PureView running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx) AppleWebKit/534.3 (KHTML, like Gecko) MiniBowserM/3.0 Safari/534.3' + result: { browser: { name: MiniBrowser, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.3' }, os: { name: Series60 }, device: { type: mobile, subtype: smart } } + readable: 'MiniBrowser 3.0 on Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx) AppleWebKit/534.3 (KHTML, like Gecko) MiniBowserM/4.0 Safari/534.3' + result: { browser: { name: MiniBrowser, version: '4.0', type: browser }, engine: { name: Webkit, version: '534.3' }, os: { name: Series60 }, device: { type: mobile, subtype: smart } } + readable: 'MiniBrowser 4.0 on Series60' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-mme.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-mme.yaml new file mode 100644 index 0000000..7b634a6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-mme.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: Mozilla/1.22 (compatible; MMEF20; Cellphone; Sony CMD-J5)' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sony, model: CMD-J5 } } + readable: 'Microsoft Mobile Explorer 2.0 on a Sony CMD-J5' +- + headers: 'User-Agent: Mozilla/1.22 (compatible; MMEF20; Cellphone; Sony CMD-J7/J70)' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sony, model: CMD-J7 } } + readable: 'Microsoft Mobile Explorer 2.0 on a Sony CMD-J7' +- + headers: 'User-Agent: Mozilla/1.22 (compatible; MMEF20; Cellphone; Sony CMD-Z5)' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sony, model: CMD-Z5 } } + readable: 'Microsoft Mobile Explorer 2.0 on a Sony CMD-Z5' +- + headers: 'User-Agent: Mozilla/1.22 (compatible; MMEF20; Cellphone; Sony CMD-Z7)' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sony, model: CMD-Z7 } } + readable: 'Microsoft Mobile Explorer 2.0 on a Sony CMD-Z7' +- + headers: 'User-Agent: Mozilla/1.22 (compatible; MMEF20; CellPhone; Benefon Q)' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Benefon, model: Q } } + readable: 'Microsoft Mobile Explorer 2.0 on a Benefon Q' +- + headers: 'User-Agent: MobileExplorer/3.00 (Mozilla/1.22; compatible; MMEF300; WIDETEL; WCX150)' + readable: 'Microsoft Mobile Explorer 3.0 on a Widetel WCX150' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '3.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Widetel, model: WCX150 } } +- + headers: 'User-Agent: MobileExplorer/3.00 (Mozilla/1.22; compatible; MMEF300; Amstrad; Gamma)' + readable: 'Microsoft Mobile Explorer 3.0 on an Amstrad E-m@iler Plus' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '3.0', type: browser }, device: { type: desktop, manufacturer: Amstrad, model: 'E-m@iler Plus' } } +- + headers: 'User-Agent: MobileExplorer/3.00 (MMEF300; Sendo; Wap)' + readable: 'Microsoft Mobile Explorer 3.0 on a Sendo Z100' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '3.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sendo, model: Z100 } } +- + headers: 'User-Agent: MobileExplorer/3.00 (MMEF300; WIDETEL; WCX150)' + readable: 'Microsoft Mobile Explorer 3.0 on a Widetel WCX150' + result: { browser: { name: 'Microsoft Mobile Explorer', version: '3.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Widetel, model: WCX150 } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-netfront.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-netfront.yaml new file mode 100644 index 0000000..d4d8122 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-netfront.yaml @@ -0,0 +1,132 @@ +- + headers: 'User-Agent: BIRD_T810_TD/T810_10A_V1.00 Threadx/4.0 Mocor/W11 Release/12.01.2011 Browser/NF4.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { browser: { name: NetFront, version: '4.0', type: browser }, engine: { name: NetFront }, os: { name: ThreadX, version: '4.0' }, device: { type: mobile, subtype: feature, manufacturer: Bird, model: T810 } } + readable: 'NetFront 4.0 on a Bird T810 running ThreadX 4.0' +- + headers: 'User-Agent: GiONEE_TD200_TD/00.00 ThreadX_OS/04.00 SC8800G/G2 Release/03.25.2011 Browser/NF3.5 Profile/MIDP-2.1 Config/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, os: { name: ThreadX, version: '04.00' }, device: { type: mobile, subtype: feature, manufacturer: Gionee, model: TD200 } } + readable: 'NetFront 3.5 on a Gionee TD200 running ThreadX 04.00' +- + headers: 'User-Agent: K-Touch_T566_CMCC_TD/TBT910514_7470_V0801/10.25.2009 Browser/NF3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: K-Touch, model: T566 } } + readable: 'NetFront 3.5 on a K-Touch T566' +- + headers: 'User-Agent: PantechP6020/JXUS04022012 BMP/1.0.4 DeviceId/141026 NetFront/4.1 OMC/1.5.3 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.4 }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: 'Persuit II' } } + readable: 'NetFront 4.1 on a Pantech Persuit II running Brew MP 1.0.4' +- + headers: 'User-Agent: SAMSUNG-GT-S3350/1.0 NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Ch@t 335' } } + readable: 'NetFront 3.5 on a Samsung Ch@t 335' +- + headers: 'User-Agent: SAMSUNG-GT-S5222R/1.0 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Rex 80' } } + readable: 'NetFront 4.2 on a Samsung Rex 80 running Touchwiz' +- + headers: 'User-Agent: SAMSUNG-SM-B780A/B780AUSNF5 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Rugby 4' } } + readable: 'NetFront 4.2 on a Samsung Rugby 4' +- + headers: 'User-Agent: SEC-SGHD840/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-D840 } } + readable: 'NetFront 3.2 on a Samsung SGH-D840' +- + headers: 'User-Agent: SonyEricssonW200i/R4JA Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: W200i } } + readable: 'NetFront 3.3 on a Sony Ericsson W200i' +- + headers: 'User-Agent: SonyEricssonZ770i/R1EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Z770i } } + readable: 'NetFront 3.4 on a Sony Ericsson Z770i' +- + headers: 'User-Agent: UNTRUSTED/1.0/HS-T39_TD/1.0 Release/03.03.2011 Threadx/4.0 Mocor/W10 Browser/NF4.0 Profile/MIDP-2.0 Config/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.0', type: browser }, engine: { name: NetFront }, os: { name: ThreadX, version: '4.0' }, device: { type: mobile, subtype: feature, manufacturer: Hisense, model: T39 } } + readable: 'NetFront 4.0 on a Hisense T39 running ThreadX 4.0' +- + headers: 'User-Agent: SAMSUNG-GT-S5260/1.0 SHP/VPP/R5 Dolfin/2.0 NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, os: { name: Touchwiz, version: '3.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Star II' } } + readable: 'NetFront 3.5 on a Samsung Star II running Touchwiz 3.0' +- + headers: 'User-Agent: HuaweiU9130/B047 Browser/NetFront/3.5 MMS/Obigo-MMS/Q05A SyncML/HW-SyncML/1.0 Java/HWJa/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Player/QTV-Player/5.3' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: U9130 } } + readable: 'NetFront 3.5 on a Huawei U9130' +- + headers: 'User-Agent: Mozilla/4.0 (MobilePhone SCP-6600/US/1.0) NetFront/3.1 MMP/2.0' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: Katana } } + readable: 'NetFront 3.1 on a Sanyo Katana' +- + headers: 'User-Agent: Mozilla/4.0 (MobilePhone SCP-5500/US/1.0) NetFront/3.0 MMP/2.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: VM4500 } } + readable: 'NetFront 3.0 on a Sanyo VM4500' +- + headers: 'User-Agent: Mozilla/4.0 (MobilePhone PM-8200/US/1.0) NetFront/3.x MMP/2.0' + result: { browser: { name: NetFront, version: '3.', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: PM-8200 } } + readable: 'NetFront 3 on a Sanyo PM-8200' +- + headers: 'User-Agent: Mozilla/4.0 (MobilePhone PLS6600KJ/US/1.0) NetFront/3.1 MMP/2.0' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: Katana } } + readable: 'NetFront 3.1 on a Sanyo Katana' +- + headers: 'User-Agent: Mozilla/4.0 (Standard; NF32SW/1.0) NetFront/3.2' + result: { browser: { name: NetFront, version: '3.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature } } + readable: 'NetFront 3.2' +- + headers: 'User-Agent: Mozilla/4.08 NetFront/3.2 (Standard; NF32SW/2.0) [en]' + result: { browser: { name: NetFront, version: '3.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature } } + readable: 'NetFront 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (Standard; NF41SW/1.1; like Gecko;) NetFront/4.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature } } + readable: 'NetFront 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux) AppleWebKit/533.3 (KHTML, like Gecko) WebkitBrowser/1.2 Safari/533.3 NetFront/3.4 (Custom3.00.1101.01201.)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, os: { name: Linux }, device: { type: mobile, subtype: feature } } + readable: 'NetFront 3.4 on Linux' +- + headers: 'User-Agent: Amoi 8512/R28.0 NF-Browser/3.3' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Amoi, model: '8512' } } + readable: 'NetFront 3.3 on an Amoi 8512' +- + headers: 'User-Agent: ZTE-F102 H3G/1.0 ACS-NF/3.4 QTV5.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: ZTE, model: F102 } } + readable: 'NetFront 3.4 on a ZTE F102' +- + headers: 'User-Agent: Mozilla/3.0 (AveFront/2.6)' + result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront } } + readable: 'NetFront 2.6' +- + headers: 'User-Agent: Mozilla/3.0 KOMATSU (AveFront/2.6 WebLight) WL/3.0 V2.45ohi M=11E2A2499945' + result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront }, device: { type: desktop, manufacturer: KOMATSU, model: WebLight } } + readable: 'NetFront 2.6 on a KOMATSU WebLight' +- + headers: 'User-Agent: Mozilla/3.0N AVE-Front/2.5 (BrowserInfo Screen=620x400x256; InputMethod=REMOCON, KEYBOARD; Page=3M; Product=Winbond/STB; HTML-Level=3.2; Category=STB; Language=en_US; CPU=PARISC; Storage=NO;)' + result: { browser: { name: NetFront, version: '2.5', type: browser }, engine: { name: NetFront }, device: { type: television } } + readable: 'NetFront 2.5 on a television' +- + headers: 'User-Agent: Mozilla/3.0N AVE-Front/2.0 Screen=320x240x256; InputMethod=MOUSE,KEYBOARD; Page=512K; Product=Panasonic/POCKET-E1.0C01; HTML-Level=3.2; Language=ja.SJIS; Category=PDA; CPU=M32R; Storage=NO; DDIP=LOCATION' + result: { browser: { name: NetFront, version: '2.0', type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: Panasonic, model: POCKET・E } } + readable: 'NetFront 2.0 on a Panasonic POCKET・E' +- + headers: 'User-Agent: Mozilla/3.0N AVE-Front/2.0 (BrowserInfo Screen=640x480x256; InputMethod=PEN,KEYBOARD; Page=2M; Product=NTT/Telesse1_1.0; HTML-Level=3.2; Language=ja.SJIS; Category=WebPhone; CPU=MPC823; Storage=NO;)' + result: { browser: { name: NetFront, version: '2.0', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: desktop, manufacturer: NTT, model: Teless } } + readable: 'NetFront 2.0 on a NTT Teless' +- + headers: 'User-Agent: MOT-WX450/0.1.26B NetFront FullBrowser/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: WX450 } } + readable: 'NetFront 3.5 on a Motorola WX450' +- + headers: 'User-Agent: SAMSUNG-SGH-E778/NetFront 3.2/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1/*MDA0NDAxMDUwMDY4OTEx' + result: { browser: { name: NetFront, version: '3.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-E778 } } + readable: 'NetFront 3.2 on a Samsung SGH-E778' +- + headers: 'User-Agent: Samsung -B5702/B5702BMIJ1 NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'NetFront 3.5 on a Samsung B5702' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: B5702 } } +- + headers: 'User-Agent: GT-E3210/E3213KDDKD2 NetFront/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'NetFront 4.1 on a Samsung GT-E3210' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-E3210 } } +- + headers: 'User-Agent: Mozilla/4.0 (MobilePhone SCP-5300/1.0) NetFront/3.0 MMP/2.0' + readable: 'NetFront 3.0 on a Sanyo SCP-5300' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: SCP-5300 } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-ninesky.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-ninesky.yaml new file mode 100644 index 0000000..24ce565 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-ninesky.yaml @@ -0,0 +1,40 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; en_in) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Ninesky-android-mobile/2.2.0 Safari/533.1' + result: { browser: { name: NineSky, version: 2.2.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 2.2.0 on Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; en_ca) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Ninesky-android-mobile/2.1.0 Safari/533.1' + result: { browser: { name: NineSky, version: 2.1.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 2.1.0 on Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 3.1; es_us) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Ninesky-android-mobile/2.0.0 Safari/533.1' + result: { browser: { name: NineSky, version: 2.0.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '3.1' }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 2.0.0 on Android 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; zh_cn) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Ninesky-android-mobile-cn/1.9.3 Safari/533.1' + result: { browser: { name: NineSky, version: 1.9.3, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 1.9.3 on Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; en_us) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Ninesky-android-mobile/2.0.1 Safari/535.1' + result: { browser: { name: NineSky, version: 2.0.1, type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 2.0.1 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; en_us) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Ninesky/1.8.0 Safari/535.1' + result: { browser: { name: NineSky, version: 1.8.0, type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 1.8.0 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; en_us) Gecko/20100101 Firefox/6.0 Ninesky-android-mobile/2.0.2 Safari/535.1' + result: { browser: { name: NineSky, version: 2.0.2, type: browser }, engine: { name: Webkit }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 2.0.2 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; en_us) Gecko/20100101 Firefox/6.0 Ninesky/1.8.0 Safari/535.1' + result: { browser: { name: NineSky, version: 1.8.0, type: browser }, engine: { name: Webkit }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 1.8.0 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; pl_pl) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Ninesky-android-mobile/2.1.0' + result: { browser: { name: NineSky, version: 2.1.0, type: browser }, engine: { name: Webkit, version: 531.21.10 }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 2.1.0 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; zh_cn) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Ninesky-android-mobile/2.0.0 Safari/6531.22.7' + result: { browser: { name: NineSky, version: 2.0.0, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'NineSky 2.0.0 on Android' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-nokiaxpress.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-nokiaxpress.yaml new file mode 100644 index 0000000..ababcc1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-nokiaxpress.yaml @@ -0,0 +1,64 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Series30Plus; Nokia220/14.00.11; Profile/Series30Plus Configuration/Series30Plus) Gecko/20100401 S40OviBrowser/3.8.1.0.5' + result: { browser: { name: 'Nokia Xpress', version: 3.8.1, type: browser }, engine: { name: Gecko }, os: { name: Series30+ }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '220' } } + readable: 'Nokia Xpress 3.8.1 on a Nokia 220 running Series30+' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NOKIALumia900; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/1.8.0.50.5' + result: { browser: { name: 'Nokia Xpress', version: 1.8.0, type: browser }, engine: { name: Gecko }, os: { name: 'Windows Phone' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 900' } } + readable: 'Nokia Xpress 1.8.0 on a Nokia Lumia 900 running Windows Phone' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia109/04.12; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11' + result: { browser: { name: 'Nokia Xpress', version: 3.7.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '109' } } + readable: 'Nokia Xpress 3.7.0 on a Nokia 109 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia311/03.81; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6' + result: { browser: { name: 'Nokia Xpress', version: 3.2.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 311' } } + readable: 'Nokia Xpress 3.2.0 on a Nokia Asha 311 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.16; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.75' + result: { browser: { name: 'Nokia Xpress', version: 3.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.0.0.45' + result: { browser: { name: 'Nokia Xpress', version: 4.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 4.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/5.5.0.0.20' + result: { browser: { name: 'Nokia Xpress', version: 5.5.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 5.5.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.9.0.0.22' + result: { browser: { name: 'Nokia Xpress', version: 3.9.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.9.0 on a Nokia Asha 501 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia6303iclassic/10.80; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.9.0.0.22' + result: { browser: { name: 'Nokia Xpress', version: 3.9.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6303i classic' } } + readable: 'Nokia Xpress 3.9.0 on a Nokia 6303i classic running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaC2-00/03.45; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/5.5.0.0.27' + result: { browser: { name: 'Nokia Xpress', version: 5.5.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C2-00 } } + readable: 'Nokia Xpress 5.5.0 on a Nokia C2-00 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaX2-05/08.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/5.0.0.0.31' + result: { browser: { name: 'Nokia Xpress', version: 5.0.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: X2-05 } } + readable: 'Nokia Xpress 5.0.0 on a Nokia X2-05 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20120315 OSRE/0.0b' + result: { browser: { name: 'Nokia Xpress', type: browser }, engine: { name: Gecko, version: 5.0.1 }, device: { type: mobile, subtype: feature } } + readable: 'Nokia Xpress' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20120802 OSRE/2.0.7' + result: { browser: { name: 'Nokia Xpress', type: browser }, engine: { name: Gecko, version: 5.0.1 }, device: { type: mobile, subtype: feature } } + readable: 'Nokia Xpress' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20120822 OSRE/1.0.7f' + result: { browser: { name: 'Nokia Xpress', type: browser }, engine: { name: Gecko, version: 5.0.1 }, device: { type: mobile, subtype: feature } } + readable: 'Nokia Xpress' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20130214 OSRE/2.2.14.1' + result: { browser: { name: 'Nokia Xpress', type: browser }, engine: { name: Gecko, version: 5.0.1 }, device: { type: mobile, subtype: feature } } + readable: 'Nokia Xpress' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20130402 OSRE/2.3.29' + result: { browser: { name: 'Nokia Xpress', type: browser }, engine: { name: Gecko, version: 5.0.1 }, device: { type: mobile, subtype: feature } } + readable: 'Nokia Xpress' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-novarra.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-novarra.yaml new file mode 100644 index 0000000..a0910b3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-novarra.yaml @@ -0,0 +1,16 @@ +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7 MG (Novarra-Vision/6.1)', X-Device-User-Agent: 'Nokia6288/2.0 (05.94) Profile/MIDP-2.0 Configuration/CLDC-1.1' } + result: { browser: { name: 'Novarra Vision', version: '6.1', type: browser }, engine: { name: Gecko, version: 1.8.0 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6288' } } + readable: 'Novarra Vision 6.1 on a Nokia 6288' +- + headers: 'User-Agent: NokiaC1-01/2.0 (03.35) Profile/MIDP-2.1 Configuration/CLDC-1.1 Novarra-Vision/8.0' + result: { browser: { name: 'Novarra Vision', version: '8.0', type: browser }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C1-01 } } + readable: 'Novarra Vision 8.0 on a Nokia C1-01 running Series40' +- + headers: 'User-Agent: Nokia6600/1.0 (5.53.0) SymbianOS/7.0s Series60/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0 Novarra-Vision/7.3' + result: { browser: { name: 'Novarra Vision', version: '7.3', type: browser }, os: { name: Series60, family: { name: Symbian, version: '7.0' }, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6600' } } + readable: 'Novarra Vision 7.3 on a Nokia 6600 running Series60 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686; U; en-US) Gecko/20081217 Vision-Browser/8.1 301x200 LG VN530' + result: { browser: { name: 'Novarra Vision', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: LG, model: Octane } } + readable: 'Novarra Vision 8.1 on a LG Octane running Brew' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-obigo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-obigo.yaml new file mode 100644 index 0000000..e46e2c0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-obigo.yaml @@ -0,0 +1,188 @@ +- + headers: 'User-Agent: AIRNESS-AIR99/REV 2.2.1/Teleca Q03B1' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3B }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Airness, model: AIR99 } } + readable: 'Obigo Q 3B on an Airness AIR99' +- + headers: 'User-Agent: ALCATEL-OT871A/985 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 871A' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 871A' +- + headers: 'User-Agent: ALCATEL_A383G/1.0 ObigoInternetBrowser/Q05A[TF013859000005250099949419492204383]' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: A383G } } + readable: 'Obigo Q 5A on an Alcatel A383G' +- + headers: 'User-Agent: ALCATEL_ONE_TOUCH_2067X/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 2067X' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 2067X' +- + headers: 'User-Agent: Alcatel-OT-802/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 802' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 802' +- + headers: 'User-Agent: HUAWEI-M570/001.00 WAP/OBIGO/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: M570 } } + readable: 'Obigo Q 5A on a Huawei M570' +- + headers: 'User-Agent: Huawei-U2800/U2800ACBXB119 Browser/Obigo-Browser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: U2800 } } + readable: 'Obigo Q 5A on a Huawei U2800' +- + headers: 'User-Agent: Huawei/1.0/0HuaweiM615/B100 Browser/Obigo_Browser/Q05A HUAWEI-M615' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: M615 } } + readable: 'Obigo Q 5A on a Huawei M615' +- + headers: 'User-Agent: Huawei/1.0/0MTC-752/B000 Browser/Obigo-Browser/Q05A MTC-752 HuaweiJava/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: Java } } + readable: 'Obigo Q 5A on a Huawei Java' +- + headers: 'User-Agent: Huawei/1.0/H12HW/B000 Browser/Obigo-Browser/Q04A' + result: { browser: { name: 'Obigo Q', version: { value: '4', alias: 4A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: H12HW, carrier: EMOBILE } } + readable: 'Obigo Q 4A on a Huawei H12HW' +- + headers: 'User-Agent: HuaweiU7510/B000 Browser/Obigo-Browser/Q05A MMS/Obigo-MMS/Q05A SyncML/HW-SyncML/1.0 Java/HWJa/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Player/QTV-Player/5.3' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: U7510 } } + readable: 'Obigo Q 5A on a Huawei U7510' +- + headers: 'User-Agent: LG-A380/A38009d Obigo/Q7.3 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.3', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: A380 } } + readable: 'Obigo Q 7.3 on a LG A380' +- + headers: 'User-Agent: LG-CU920/V1.0s Obigo/Q05A Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: CU920 } } + readable: 'Obigo Q 5A on a LG CU920' +- + headers: 'User-Agent: LG-GD510/V100 Teleca/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: GD510 } } + readable: 'Obigo WAP 2.0 on a LG GD510' +- + headers: 'User-Agent: LG-GM360/V100 Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'GM360 Viewty Snap' } } + readable: 'Obigo WAP 2.0 on a LG GM360 Viewty Snap' +- + headers: 'User-Agent: LG-GM630 Browser/Teleca-Q7.1 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: GM630 } } + readable: 'Obigo Q 7.1 on a LG GM630' +- + headers: 'User-Agent: LG-GS390/V10k Obigo/Q7.3 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.3', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: GS390 } } + readable: 'Obigo Q 7.3 on a LG GS390' +- + headers: 'User-Agent: LG-GT350/V100 Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: GT350 } } + readable: 'Obigo WAP 2.0 on a LG GT350' +- + headers: 'User-Agent: LG-GT500-v10f Browser/Teleca-Q7.1 MMS/LG-MMS-V1.0/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'GT500 Puccini' } } + readable: 'Obigo Q 7.1 on a LG GT500 Puccini' +- + headers: 'User-Agent: LG-GT505-Orange/V10e Browser/Teleca-Q7.1 MMS/LG-MMS-V1.0/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: GT505 } } + readable: 'Obigo Q 7.1 on a LG GT505' +- + headers: 'User-Agent: LG-LG840G/V100[TF013293002398424476222117575039107] Obigo/Q7.3 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.3', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 840G } } + readable: 'Obigo Q 7.3 on a LG 840G' +- + headers: 'User-Agent: LG/KC910i/V10a Browser/Obigo-Q7.1 MMS/LG-MMS-V1.0/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'KC910i Renoir' } } + readable: 'Obigo Q 7.1 on a LG KC910i Renoir' +- + headers: 'User-Agent: LG/KF750/v10a Browser/Obigo-Q05A/3.12 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: KF750 } } + readable: 'Obigo Q 5A on a LG KF750' +- + headers: 'User-Agent: LG_TB200_CMCC A2000pH/2.32.00 Release/9.14.2009 Browser/Teleca/Q7.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: TB200 } } + readable: 'Obigo Q 7.1 on a LG TB200' +- + headers: 'User-Agent: MOT-EX116 Obigo/WAP2.0 MIDP-2.0/CLDC-1.1' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: EX116 } } + readable: 'Obigo WAP 2.0 on a Motorola EX116' +- + headers: 'User-Agent: Mozilla/4.0 (Vodafone/1.0/LG-KC910/V08e Browser/Obigo-Q7.1 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)' + result: { browser: { name: 'Obigo Q', version: '7.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: KC910 } } + readable: 'Obigo Q 7.1 on a LG KC910' +- + headers: 'User-Agent: SonyEricssonWT13i/R3AF010 TelecaBrowser/Q07C1-1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '7', alias: 7C }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: 'Mix Walkman' } } + readable: 'Obigo Q 7C on a Sony Ericsson Mix Walkman' +- + headers: 'User-Agent: T-Mobile Vairy Touch II/5.0 Obigo/Q03C Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: T-Mobile, model: 'Vairy Touch II' } } + readable: 'Obigo Q 3C on a T-Mobile Vairy Touch II' +- + headers: 'User-Agent: GIONEE50_12864_11B_HW (MRE\\2.5.00(3072) resolution\\240320 chipset\\MT6250 touch\\1 tpannel\\0 camera\\1 gsensor\\0 keyboard\ ormal) 1307SY_0201_V1045 Release/2013.06.28 WAP Browser/MAUI (HTTP PGDL; HTTPS) Profile/Profile/MIDP-2.0 Configuration/CLDC-1.1 Q03C1-2.40 en-US' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Gionee, model: '50' } } + readable: 'Obigo Q 3C on a Gionee 50 running MRE' +- + headers: 'User-Agent: GIONEE S80/Q03C MAUI-browser/MIDP2.0/CLDC1.1/Screen-240X320' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Gionee, model: S80 } } + readable: 'Obigo Q 3C on a Gionee S80 running MRE' +- + headers: 'User-Agent: Fly_DS123/Q03C_MAUI_Browser/MIDP2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Fly, model: DS123 } } + readable: 'Obigo Q 3C on a Fly DS123 running MRE' +- + headers: 'User-Agent: Philips9@9k/R08 NXP5210/DV7 Release/9.12.2007 Mozilla/Obigo/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { browser: { name: Obigo, version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: 9@9k } } + readable: 'Obigo 2.0 on a Philips 9@9k' +- + headers: 'User-Agent: SonyEricssonT250a/R5CA005 TelecaBrowser/1.1.14.20' + result: { browser: { name: Obigo, version: '1.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: T250a } } + readable: 'Obigo 1.1 on a Sony Ericsson T250a' +- + headers: 'User-Agent: BIRD.F501/1.00 Nucleus RTOS/V1.11.19 MTK6227/05C_V24 Release/11.21.2006 Browser/Teleca Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { browser: { name: Obigo, type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Bird, model: F501 } } + readable: 'Obigo on a Bird F501 running MRE' +- + headers: 'User-Agent: Philips E210/Obigo Browser wap2.0' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: E210 } } + readable: 'Obigo WAP 2.0 on a Philips E210' +- + headers: 'User-Agent: Philips292 / Obigo Browser 2.0' + result: { browser: { name: Obigo, version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: '292' } } + readable: 'Obigo 2.0 on a Philips 292' +- + headers: 'User-Agent: Alcatel-OH2/1.0 ObigoInternetBrowser/2.0' + result: { browser: { name: Obigo, version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: OH2 } } + readable: 'Obigo 2.0 on an Alcatel OH2' +- + headers: 'User-Agent: PhilipsX830/1.0 MTK6239/08A Release/11.11.2008 Browser/Obigo2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { browser: { name: Obigo, version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: X830 } } + readable: 'Obigo 2.0 on a Philips X830' +- + headers: 'User-Agent: LENOVO-A210/S015 Nucleus/1.15 MTK/53 Release/09.01.2011 Browser/Obigo03C' + result: { browser: { name: Obigo, version: { value: '3', alias: 3C }, type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Lenovo, model: A210 } } + readable: 'Obigo 3C on a Lenovo A210 running MRE' +- + headers: 'User-Agent: BIRD S710_BLEU/1.00 Nucleus RTOS/V1.11.19 MTK6223/07A Release/07.28.2007 Browser/Teleca' + result: { browser: { name: Obigo, type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Bird, model: S710 } } + readable: 'Obigo on a Bird S710 running MRE' +- + headers: 'User-Agent: LG-MG800d MIC/WAP2.0 MIDP-2.0/CLDC-1.1' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: MG800d } } + readable: 'Obigo WAP 2.0 on a LG MG800d' +- + headers: 'User-Agent: SAMSUNG-SPHM610 AU-MIC-M610' + result: { browser: { name: Obigo, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SPHM610 } } + readable: 'Obigo on a Samsung SPHM610' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; 4.3; NITROGEN6X Build/4.3_1.0.0-ga) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36 Obigo/W20A.37' + readable: 'Obigo W 20A on a Boundary Devices Nitrogen6X running Android 4.3' + result: { browser: { name: 'Obigo W', family: { name: Chrome, version: 37 }, version: { alias: 20A }, type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: devboard, manufacturer: 'Boundary Devices', model: Nitrogen6X } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; 4.4.4; Nexus 7 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.107 Safari/537.36 Obigo/W20A.42' + readable: 'Obigo W 20A on an Asus Nexus 7 running Android 4.4.4' + result: { browser: { name: 'Obigo W', family: { name: Chrome, version: 42 }, version: { alias: 20A }, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: tablet, manufacturer: Asus, model: 'Nexus 7' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; 5.0.1; Nexus 5 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.107 Mobile Safari/537.36 Obigo/W20A.42' + readable: 'Obigo W 20A on a LG Nexus 5 running Android 5.0.1' + result: { browser: { name: 'Obigo W', family: { name: Chrome, version: 42 }, version: { alias: 20A }, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; 5.1.1; Nexus 5 Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.107 Mobile Safari/537.36 Obigo/W20A.42' + readable: 'Obigo W 20A on a LG Nexus 5 running Android 5.1.1' + result: { browser: { name: 'Obigo W', family: { name: Chrome, version: 42 }, version: { alias: 20A }, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } +- + headers: 'User-Agent: LG-ME850c MIC/1.1.14 MIDP-2.0/CLDC-1.1' + readable: 'Obigo 1.1 on a LG ME850c' + result: { browser: { name: Obigo, version: '1.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: ME850c } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-openwave.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-openwave.yaml new file mode 100644 index 0000000..a4aa87d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-openwave.yaml @@ -0,0 +1,124 @@ +- + headers: 'User-Agent: Amoi-F90/Plat-F/WAP2.0/MIDP1.0/CLDC1.0 UP.Browser/6.2.2.6.f.1.100 (GUI) MMP/1.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Amoi, model: F90 } } + readable: 'Openwave 6.2 on an Amoi F90' +- + headers: 'User-Agent: 802SH Vodafone/1.0/V802SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V802SH, carrier: Softbank } } + readable: 'Openwave 7.0 on a Sharp V802SH' +- + headers: 'User-Agent: Alcatel-BG3/1.0 UP.Browser/5.0.3.1.2' + result: { browser: { name: Openwave, version: '5.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: BG3 } } + readable: 'Openwave 5.0 on an Alcatel BG3' +- + headers: 'User-Agent: BlackBerry8100/4.2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/137 UP.Browser/5.0.3.3' + result: { browser: { name: Openwave, version: '5.0', type: browser }, os: { name: 'BlackBerry OS', version: '4.2' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Pearl 8100' } } + readable: 'Openwave 5.0 on a RIM BlackBerry Pearl 8100 running BlackBerry OS 4.2' +- + headers: 'User-Agent: KDDI-CA22 UP.Browser/6.0.8.1 (GUI) MMP/1.1' + result: { browser: { name: Openwave, version: '6.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: A5302CA, carrier: au } } + readable: 'Openwave 6.0 on a Casio A5302CA' +- + headers: 'User-Agent: KDDI-HI3E UP.Browser/6.2_7.2.7.1.K.2.232 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Hitachi, model: W63H, carrier: au } } + readable: 'Openwave 6.2 on a Hitachi W63H' +- + headers: 'User-Agent: LGE-VX5500/1.0 UP.Browser/6.2.3.2 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: VX5500 } } + readable: 'Openwave 6.2 on a LG VX5500' +- + headers: 'User-Agent: MOT-V860/00.72 UP.Browser/7.2.7.5.630 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '7.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V860 } } + readable: 'Openwave 7.2 on a Motorola V860' +- + headers: 'User-Agent: SAMSUNG-GT-E2222/E2222JVNC1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.102 (GUI) MMP/2.0 Untrusted/1.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Ch@t 222' } } + readable: 'Openwave 6.2 on a Samsung Ch@t 222' +- + headers: 'User-Agent: SAMSUNG-SGH-J700/J700XAHA6 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-J700 } } + readable: 'Openwave 6.2 on a Samsung SGH-J700' +- + headers: 'User-Agent: SAMSUNG-SGH-X640/1.0 UP.Browser/6.2.2.6 (GUI) MMP/1.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-X640 } } + readable: 'Openwave 6.2 on a Samsung SGH-X640' +- + headers: 'User-Agent: SIE-C55/24 UP.Browser/5.0.3.3 (GUI) UP.Link/1.1' + result: { browser: { name: Openwave, version: '5.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: C55 } } + readable: 'Openwave 5.0 on a Siemens C55' +- + headers: 'User-Agent: SIE-S65/12 UP.Browser/7.0.0.1.c.3 (GUI) MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: S65 } } + readable: 'Openwave 7.0 on a Siemens S65' +- + headers: 'User-Agent: UP.Browser/3.04-KC14 UP.Link/3.4.5.6' + result: { browser: { name: Openwave, version: '3.04', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: A1012K, carrier: au } } + readable: 'Openwave 3.04 on a Kyocera A1012K' +- + headers: 'User-Agent: UP.Browser/3.04-SN15 UP.Link/3.4.5.6' + result: { browser: { name: Openwave, version: '3.04', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sony, model: C413S, carrier: au } } + readable: 'Openwave 3.04 on a Sony C413S' +- + headers: 'User-Agent: Vodafone/1.0/V703SHf/SHJ001/SN354723000668748 Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V703SH, carrier: Softbank } } + readable: 'Openwave 7.0 on a Sharp V703SH' +- + headers: 'User-Agent: Vodafone/1.0/V903SH/SHJ001 Browser/UP.Browser/7.0.2.1' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V903SH, carrier: Softbank } } + readable: 'Openwave 7.0 on a Sharp V903SH' +- + headers: 'User-Agent: ACER-Pro80/1.02 UP/4.1.20i UP.Browser/4.1.20i-XXXX' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Acer, model: Pro80 } } + readable: 'Openwave 4.1 on an Acer Pro80' +- + headers: 'User-Agent: Alcatel-BE3/1.0 UP/4.1.8d' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: BE3 } } + readable: 'Openwave 4.1 on an Alcatel BE3' +- + headers: 'User-Agent: NEC-525/1.0 up.Browser/6.1.0.6.1 (GUI) MMP/1.0' + result: { browser: { name: Openwave, version: '6.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: NEC, model: '525' } } + readable: 'Openwave 6.1 on a NEC 525' +- + headers: 'User-Agent: NEC-DB7000/1.0 UP.Browser/4.1.23c' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: NEC, model: DB7000 } } + readable: 'Openwave 4.1 on a NEC DB7000' +- + headers: 'User-Agent: PHILIPS-Az@lis288 UP/4.1.19l' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: 'Az@lis 288' } } + readable: 'Openwave 4.1 on a Philips Az@lis 288' +- + headers: 'User-Agent: PHILIPS-FISIO 318 UP/4.1.19m' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: 'Fisio 318' } } + readable: 'Openwave 4.1 on a Philips Fisio 318' +- + headers: 'User-Agent: PHILIPS-Fisio311/2.1 UP/4.1.19m' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: 'Fisio 311' } } + readable: 'Openwave 4.1 on a Philips Fisio 311' +- + headers: 'User-Agent: PHILIPS-Fisio 121/2.1 UP/4.1.19m' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: 'Fisio 121' } } + readable: 'Openwave 4.1 on a Philips Fisio 121' +- + headers: 'User-Agent: PHILIPS-Ozeo UP/4.1.16r' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: Ozeo } } + readable: 'Openwave 4.1 on a Philips Ozeo' +- + headers: 'User-Agent: Sanyo-C304SA/2.0 UP/4.1.20e' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: C304SA } } + readable: 'Openwave 4.1 on a Sanyo C304SA' +- + headers: 'User-Agent: Sanyo-SCP5000/1.1b UP.Browser/4.1.23a' + result: { browser: { name: Openwave, version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: SCP5000 } } + readable: 'Openwave 4.1 on a Sanyo SCP5000' +- + headers: 'User-Agent: MOT-EF/06.12 KM.Browser/5.0.2.4' + result: { browser: { name: Openwave, version: '5.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: EF } } + readable: 'Openwave 5.0 on a Motorola EF' +- + headers: 'User-Agent: SonyEricssonS302c/R1BB Browser/OpenWave/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1, SonyEricssonS302c/R1BB Browser/OpenWave/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: Openwave, version: '1.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: S302c } } + readable: 'Openwave 1.0 on a Sony Ericsson S302c' +- + headers: 'User-Agent: MOT-W388_CMCC/1.0 Release/07.30.2008 Browser/OpenWave6.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/0.0.42' + result: { browser: { name: Openwave, version: '6.3', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: W388 } } + readable: 'Openwave 6.3 on a Motorola W388' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-opera.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-opera.yaml new file mode 100644 index 0000000..0353782 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-opera.yaml @@ -0,0 +1,124 @@ +- + headers: 'User-Agent: Opera/9.80 (J2ME/MIDP; Opera Mini; U; xx) Presto/2.12.423 Version/11.10' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.12.423 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux zbov; U; xx) Presto/2.9.201 Version/11.50' + result: { browser: { name: 'Opera Mobile', version: '11.50', type: browser }, engine: { name: Presto, version: 2.9.201 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mobile 11.50' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.12.423 Version/11.10' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.12.423 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/10.54' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini' +- + headers: 'User-Agent: SAMSUNG-GT-C3322i Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/11.10' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-C3322i } } + readable: 'Opera Mini on a Samsung GT-C3322i' +- + headers: 'User-Agent: SAMSUNG-GT-S5611 Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/11.10' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-S5611 } } + readable: 'Opera Mini on a Samsung GT-S5611' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8520' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Samsung # GT-S8500' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Opera Mini 8.0 on a Samsung Wave running Bada' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Samsung # GT-i8000' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Opera Mini 8.0 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8520' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8520', X-OperaMini-Phone-UA: 'BlackBerry8520/5.0.0.681 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/613' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS 5.0' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/8.0.35667/35.6680; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8900', X-OperaMini-Phone-UA: 'BlackBerry8900/5.0.0.1113 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8900' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8900 running BlackBerry OS 5.0' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Samsung # GT-i8000', X-OperaMini-Phone-UA: 'SAMSUNG-GT-i8000/1.0 (Windows CE; Opera Mobi; U; en) Opera 9.5 UNTRUSTED/1.0' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Opera Mini 8.0 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.7382; U; xx) Presto/2.8.119 Version/11.10', X-Operamini-Phone-Ua: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380DZHLB1; U; Bada/2.0; zh-cn) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B', Device-Stock-Ua: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380DZHLB1; U; Bada/2.0; zh-cn) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'Opera Mini 8.0 on a Samsung Wave Y running Bada 2.0' +- + headers: { User-Agent: 'Opera/9.80 (Windows Mobile; Opera Mini/5.1.21594/37.6116; U; xx) Presto/2.12.423 Version/12.16', X-OperaMini-Phone: 'HTC # Touch Pro/T7272/TyTn III', X-OperaMini-Phone-UA: HTC_Touch_Pro_T7272 } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.12.423 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Pro' } } + readable: 'Opera Mini 5.1 on a HTC Touch Pro running Windows Mobile' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Samsung # GT-S8500', Device-Stock-UA: SAMSUNG-GT-S8500, X-OperaMini-Phone-UA: SAMSUNG-GT-S8500 } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Opera Mini 8.0 on a Samsung Wave running Bada' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.7144/hifi/tmobile/at; Nokia 6085; de; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6085' } } + readable: 'Opera Mini 1.1 on a Nokia 6085' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.7231/hifi/tmobile/at; Motorola V3; de; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V3 } } + readable: 'Opera Mini 1.1 on a Motorola V3' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.4948/hifi/tmobile/at; SonyEricsson K550i; de; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: K550i } } + readable: 'Opera Mini 1.1 on a Sony Ericsson K550i' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.5005/hifi/tmobile/at; Nokia 5300; de; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '5300 XpressMusic' } } + readable: 'Opera Mini 1.1 on a Nokia 5300 XpressMusic running Series40' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.3314/hifi/tmobile/cz; Siemens ME75; cs; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: ME75 } } + readable: 'Opera Mini 1.1 on a Siemens ME75' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.3003/hifi/tmobile-motorola/at; Motorola V3i; en; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V3i } } + readable: 'Opera Mini 1.1 on a Motorola V3i' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.80 (KDDI-SN3U; BREW; Opera Mobi; U; ja) Presto/2.4.18 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.18 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: S007, carrier: au } } + readable: 'Opera Mobile 10.00 on a Sony Ericsson S007 running Brew' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-TS3V; BREW; Opera Mobi; U; ja) Presto/2.4.15 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.15 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: T005, carrier: au } } + readable: 'Opera Mobile 10.00 on a Toshiba T005 running Brew' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-TS3P; BREW; Opera Mobi; U; ja) Presto/2.2.1' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto, version: 2.2.1 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: T002, carrier: au } } + readable: 'Opera Mobile 9.5 on a Toshiba T002 running Brew' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-SN3O; BREW; Opera Mobi; U; ja) Presto/2.4.15 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.15 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: S003, carrier: au } } + readable: 'Opera Mobile 10.00 on a Sony Ericsson S003 running Brew' +- + headers: 'User-Agent: Opera/9.51 Beta (Microsoft Windows; PPC; Opera Mobi/1718; U; en)' + result: { browser: { name: 'Opera Mobile', version: '9.51', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 9.51 on Windows Mobile' +- + headers: 'User-Agent: Opera/9.51 Beta (Microsoft Windows; PPC; 240x320; Opera Mobi/1718; U; en)' + result: { browser: { name: 'Opera Mobile', version: '9.51', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 9.51 on Windows Mobile' +- + headers: 'User-Agent: GT-C3595 Opera/9.80 (J2ME/MIDP; Opera Mini/7.1.33398/34.2003; U; xx) Presto/2.8.119 Version/11.10' + readable: 'Opera Mini 7.1 on a Samsung GT-C3595' + result: { browser: { name: 'Opera Mini', version: '7.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-C3595 } } +- + headers: 'User-Agent: GT-E3300 Opera/9.80 (J2ME/MIDP; Opera Mini/4.4.29644/35.6822; U; xx) Presto/2.8.119 Version/11.10' + readable: 'Opera Mini 4.4 on a Samsung GT-E3300' + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-E3300 } } +- + headers: 'User-Agent: GT-E3309 Opera/9.80 (J2ME/MIDP; Opera Mini/4.4.29644/37.8773; U; es) Presto/2.12.423 Version/12.16' + readable: 'Opera Mini 4.4 on a Samsung GT-E3309' + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.12.423 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-E3309 } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-other.yaml new file mode 100644 index 0000000..6200822 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-other.yaml @@ -0,0 +1,48 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; OnePlus2) AppleWebKit/601.1.46 (KHTML, like Gecko) Cornowser/1.0.1.0 Chrome/49.0.2593.0 Mobile Safari/601.1' + result: { browser: { name: Cornowser, family: { name: Chrome, version: 49 }, version: 1.0.1.0, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: OnePlus, model: '2' } } + readable: 'Cornowser 1.0.1.0 on an OnePlus 2 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SHV-E250S Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 Swing(And)/2.2.6.0' + result: { browser: { name: 'Swing Browser', using: { name: 'Chromium WebView', version: '30' }, version: 2.2.6, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note II' } } + readable: 'Swing Browser 2.2.6 on a Samsung Galaxy Note II running Android 4.4.2' +- + headers: 'User-Agent: Prince/7.1 (http://www.princexml.com)' + readable: 'Prince 7.1' + result: { browser: { name: Prince, version: '7.1', type: browser } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; Le X507 Build/DHXOSOP5501405251S) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36 ACHEETAHI/2100502046' + readable: 'CM Browser on a LeEco Le 1s X507 running Android 5.0.2' + result: { browser: { name: 'CM Browser', using: { name: 'Chromium WebView', version: '37' }, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 1s X507' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X520 Build/IEXCNFN5801607282S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 +CoolMarket/6.10.4' + readable: 'Cool Market 6.10.4 on a LeEco Le 2 X520 running Android 6.0.1' + result: { browser: { name: 'Cool Market', using: { name: 'Chromium WebView', version: '49' }, version: 6.10.4, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X520' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5601405171S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.134 Mobile Safari/537.36 LeBrowser/7.3.0' + readable: 'LeBrowser 7.3 on a LeEco Le 2 Pro X620 running Android 6.0' + result: { browser: { name: LeBrowser, using: { name: 'Chromium WebView', version: '43' }, version: '7.3', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 Pro X620' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X526 Build/IIXOSOP5801607082S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 mCent/0.13.1032' + readable: 'mCent Browser 0.13.1032 on a LeEco Le 2 X526 running Android 6.0.1' + result: { browser: { name: 'mCent Browser', family: { name: Chrome, version: 59 }, version: 0.13.1032, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X526' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1; xx; Le X820 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 Quark/1.6.9.911 Mobile Safari/537.36' + readable: 'Quark Browser 1.6.9 on a LeEco Le Max 2 X820 running Android 6.0.1' + result: { browser: { name: 'Quark Browser', family: { name: Chrome, version: 40 }, version: 1.6.9, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X820' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5801809301S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 HuohouBrowser/4006' + readable: 'Huohou Browser 4006 on a LeEco Le 2 Pro X620 running Android 6.0' + result: { browser: { name: 'Huohou Browser', using: { name: 'Chromium WebView', version: '49' }, version: '4006', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 Pro X620' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X820 Build/FEXCNFN5601405314S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 HuohouBrowser/3062' + readable: 'Huohou Browser 3062 on a LeEco Le Max 2 X820 running Android 6.0.1' + result: { browser: { name: 'Huohou Browser', using: { name: 'Chromium WebView', version: '49' }, version: '3062', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X820' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; SM-N7509V Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 ucpro/1.0.0.861 Mobile Safari/537.36' + readable: 'TinY 1.0.0.861 on a Samsung Galaxy Note 3 Neo running Android 4.3' + result: { browser: { name: TinY, family: { name: Chrome, version: 40 }, version: 1.0.0.861, type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3 Neo' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1; xx; ONEPLUS A3000 Build/MXB48T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCPro/1.0.0.860 Mobile Safari/537.36' + readable: 'TinY 1.0.0.860 on an OnePlus 3 running Android 6.0.1' + result: { browser: { name: TinY, family: { name: Chrome, version: 40 }, version: 1.0.0.860, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: OnePlus, model: '3' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-polaris.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-polaris.yaml new file mode 100644 index 0000000..16c2801 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-polaris.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: SCH-S239/ POLARIS/6.15 (GUI; compatible; UP.Browser)' + result: { browser: { name: Polaris, version: '6.15', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SCH-S239 } } + readable: 'Polaris 6.15 on a Samsung SCH-S239' +- + headers: 'User-Agent: SCH-W279/ POLARIS/6.2 (GUI; compatible; UP.Browser)' + result: { browser: { name: Polaris, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Primo Duos' } } + readable: 'Polaris 6.2 on a Samsung Primo Duos' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-puffin.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-puffin.yaml new file mode 100644 index 0000000..1a8620d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-puffin.yaml @@ -0,0 +1,92 @@ +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36', X-Puffin-Ua: 'iPhone OS/iPad4,1/1536x2048' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: tablet, manufacturer: Apple, model: 'iPad Air' } } + readable: 'Puffin on an Apple iPad Air running iOS' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.0.4.931AP', X-Puffin-Ua: Android/D6503/1080x1776 } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.0.4, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z2' } } + readable: 'Puffin 4.0.4 on a Sony Xperia Z2 running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.0.4.931AP', X-Puffin-Ua: Android/SM-G900F/1080x1920 } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.0.4, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5' } } + readable: 'Puffin 4.0.4 on a Samsung Galaxy S5 running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.0.4.931AT', X-Puffin-Ua: 'Android/Nexus 10/1600x2464' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.0.4, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: tablet, manufacturer: Samsung, model: 'Nexus 10' } } + readable: 'Puffin 4.0.4 on a Samsung Nexus 10 running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.1.2.1212AP', X-Puffin-Ua: Android/SAMSUNG-SM-N910A/1440x2560 } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.1.2, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 4' } } + readable: 'Puffin 4.1.2 on a Samsung Galaxy Note 4 running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.1.4.1387AT', X-Puffin-Ua: 'Android/bq Edison/1280x752' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.1.4, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: tablet, manufacturer: bq, model: Edison } } + readable: 'Puffin 4.1.4 on a bq Edison running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.1.4IP', X-Puffin-Ua: 'iPhone OS/iPhone6,1/320x568' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.1.4, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5s' } } + readable: 'Puffin 4.1.4 on an Apple iPhone 5s running iOS' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.2.0.1824AT', X-Puffin-Ua: Android/LenovoA3300-HV/600x976 } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.2.0, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: tablet, manufacturer: Lenovo, model: 'IdeaTab A3300' } } + readable: 'Puffin 4.2.0 on a Lenovo IdeaTab A3300 running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.3.0.1852AT', X-Puffin-Ua: 'Android/Nexus 10/1600x2464' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.3.0, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: tablet, manufacturer: Samsung, model: 'Nexus 10' } } + readable: 'Puffin 4.3.0 on a Samsung Nexus 10 running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.3.0.1852AT', X-Puffin-Ua: Android/SM-T310/1280x800 } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.3.0, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3 8.0' } } + readable: 'Puffin 4.3.0 on a Samsung Galaxy Tab 3 8.0 running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.4.1IP', X-Puffin-Ua: 'iPhone OS/iPhone7,1/1242x2208' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.4.1, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 6 Plus' } } + readable: 'Puffin 4.4.1 on an Apple iPhone 6 Plus running iOS' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.5.0IT', X-Puffin-Ua: 'iPhone OS/iPad4,1/1024x768' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.5.0, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: tablet, manufacturer: Apple, model: 'iPad Air' } } + readable: 'Puffin 4.5.0 on an Apple iPad Air running iOS' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.6.1IT', X-Puffin-Ua: 'iPhone OS/iPad4,1/1536x2048' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.6.1, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: tablet, manufacturer: Apple, model: 'iPad Air' } } + readable: 'Puffin 4.6.1 on an Apple iPad Air running iOS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.0.4.931AP' + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.0.4, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Puffin 4.0.4 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.0.4.931AT' + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.0.4, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: tablet } } + readable: 'Puffin 4.0.4 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.4.1IP' + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.4.1, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Puffin 4.4.1 on an Apple iPhone running iOS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.5.0IT' + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.5.0, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Puffin 4.5.0 on an Apple iPad running iOS' +- + headers: 'X-Puffin-Ua: iPhone OS/iPad4,1/1536x2048' + result: { browser: { name: Puffin }, os: { name: iOS }, device: { type: tablet, manufacturer: Apple, model: 'iPad Air' } } + readable: 'Puffin on an Apple iPad Air running iOS' +- + headers: 'X-Puffin-Ua: Android/D6503/1080x1776' + result: { browser: { name: Puffin }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z2' } } + readable: 'Puffin on a Sony Xperia Z2 running Android' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; ar-SA@calendar=gregorian) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.4.0IP' + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.4.0, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Puffin 4.4.0 on an Apple iPhone running iOS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.10543IT' + result: { browser: { name: Puffin, family: { name: Chrome, version: 11 }, version: '3', type: browser }, engine: { name: Webkit, version: '534.35' }, os: { name: iOS }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Puffin 3 on an Apple iPad running iOS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/3.7.3IP' + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 3.7.3, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Puffin 3.7.3 on an Apple iPhone running iOS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; zh-Hant-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 Puffin/4.2.0IT' + result: { browser: { name: Puffin, family: { name: Chrome, version: 30 }, version: 4.2.0, type: browser }, engine: { name: Blink }, os: { name: iOS }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Puffin 4.2.0 on an Apple iPad running iOS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-qq.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-qq.yaml new file mode 100644 index 0000000..2d790f7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-qq.yaml @@ -0,0 +1,92 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; MX4 Pro Build/LMY48Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 V1_AND_SQ_6.2.0_320_YYB_D QQ/6.2.0.2655 NetType/WIFI WebP/0.4.1 Pixel/1536' + result: { browser: { name: 'QQ Browser', using: { name: 'Chromium WebView', version: '39' }, version: '6.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Meizu, model: 'MX4 Pro' } } + readable: 'QQ Browser 6.2 on a Meizu MX4 Pro running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.4; xx; m1 Build/KTU84P) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025483 Mobile Safari/533.1 V1_AND_SQ_6.2.0_320_YYB_D QQ/6.2.0.2655 NetType/WIFI WebP/0.3.0 Pixel/768' + result: { browser: { name: 'QQ Browser', version: '6.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Meizu, model: M1 } } + readable: 'QQ Browser 6.2 on a Meizu M1 running Android 4.4.4' +- + headers: 'User-Agent: MQQBrowser/2.0 (Nokia5730;SymbianOS/9.1 Series60/3.0)' + result: { browser: { name: 'QQ Browser', version: '2.0', type: browser }, os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5730 XpressMusic' } } + readable: 'QQ Browser 2.0 on a Nokia 5730 XpressMusic running Series60 3.0' +- + headers: 'User-Agent: MQQBrowser/2.0 (NokiaN868MP;SymbianOS/9.1 Series60/3.0)' + result: { browser: { name: 'QQ Browser', version: '2.0', type: browser }, os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'N86 8MP' } } + readable: 'QQ Browser 2.0 on a Nokia N86 8MP running Series60 3.0' +- + headers: 'User-Agent: MQQBrowser/2.4 (Nokia6720c-1;SymbianOS/9.1 Series60/3.0)' + result: { browser: { name: 'QQ Browser', version: '2.4', type: browser }, os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6720 classic' } } + readable: 'QQ Browser 2.4 on a Nokia 6720 classic running Series60 3.0' +- + headers: 'User-Agent: MQQBrowser/2.2(KQBP22_GA;SonyEricssonJ105i/R1HA035)' + result: { browser: { name: 'QQ Browser', version: '2.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Naite } } + readable: 'QQ Browser 2.2 on a Sony Ericsson Naite' +- + headers: 'User-Agent: MQQBrowser/20 Mozilla/5.0 (Linux; U; Android 1.6; zh-cn; HTC TOUCH DUAL Build/DRC83) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'QQ Browser', version: '2.0', type: browser }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.6' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Dual' } } + readable: 'QQ Browser 2.0 on a HTC Touch Dual running Android 1.6' +- + headers: 'User-Agent: MQQBrowser/3.5/Mozilla/5.0 (Linux; U; Android 2.3.4; zh-cn; HTC EVO 3D by xiaoleizi Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'QQ Browser', version: '3.5', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EVO 3D' } } + readable: 'QQ Browser 3.5 on a HTC EVO 3D running Android 2.3.4' +- + headers: 'User-Agent: MQQBrowser/3.5/Mozilla/5.0 (Linux; U; Android 4.0.8; zh-cn; HTC inspire 4G For at&t Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'QQ Browser', version: '3.5', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Inspire 4G' } } + readable: 'QQ Browser 3.5 on a HTC Inspire 4G running Android 2.3.5' +- + headers: 'User-Agent: MQQBrowser/4.0/Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; HTC EVO Design 4G Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1' + result: { browser: { name: 'QQ Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EVO Design 4G' } } + readable: 'QQ Browser 4.0 on a HTC EVO Design 4G running Android 2.3.4' +- + headers: 'User-Agent: MQQBrowser/3.0/Adr (Linux; U; 4.0.4; zh-cn; HUAWEI U8950D Build/U8950DV100R001C17B939;540*960)' + result: { browser: { name: 'QQ Browser', version: '3.0', type: browser }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend G600' } } + readable: 'QQ Browser 3.0 on a Huawei Ascend G600 running Android 4.0.4' +- + headers: 'User-Agent: MQQBrowser/3.6/Adr (Linux; U; 4.1.2; zh-cn; HUAWEI G610-C00 Build/G610-C00V100R001C92B120;540*960)' + result: { browser: { name: 'QQ Browser', version: '3.6', type: browser }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend G610' } } + readable: 'QQ Browser 3.6 on a Huawei Ascend G610 running Android 4.1.2' +- + headers: 'User-Agent: MQQBrowser/2.0/WP7 (zh-cn;WPOS:7.10.8107;HTC; HD7T9292)' + result: { browser: { name: 'QQ Browser', version: '2.0', type: browser }, os: { name: 'Windows Phone', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'QQ Browser 2.0 on a HTC HD7 running Windows Phone 7.1' +- + headers: 'User-Agent: MQQBrowser/2.7/Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; SurroundT8788)' + result: { browser: { name: 'QQ Browser', version: '2.7', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Surround' } } + readable: 'QQ Browser 2.7 on a HTC 7 Surround running Windows Phone 7.5' +- + headers: 'User-Agent: MQQBrowser/2.7/Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; HTC; WindowsPhone8Xby)' + result: { browser: { name: 'QQ Browser', version: '2.7', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'QQ Browser 2.7 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: MQQBrowser/Mini2.2 (SAMSUNG SGH-F250L)' + result: { browser: { name: 'QQ Browser Mini', version: '2.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-F250L } } + readable: 'QQ Browser Mini 2.2 on a Samsung SGH-F250L' +- + headers: 'User-Agent: MQQBrowser/Mini2.2 (SAMSUNG-GT-E2252)' + result: { browser: { name: 'QQ Browser Mini', version: '2.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Metro 2252' } } + readable: 'QQ Browser Mini 2.2 on a Samsung Metro 2252' +- + headers: 'User-Agent: MQQBrowser/Mini2.4 (PantechP7040/JLUS04042011)' + result: { browser: { name: 'QQ Browser Mini', version: '2.4', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: P7040 } } + readable: 'QQ Browser Mini 2.4 on a Pantech P7040' +- + headers: 'User-Agent: MQQBrowser/Mini2.5 (SonyEricssonK530i/R8BB001)' + result: { browser: { name: 'QQ Browser Mini', version: '2.5', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: K530i } } + readable: 'QQ Browser Mini 2.5 on a Sony Ericsson K530i' +- + headers: 'User-Agent: MQQBrowser/Mini2.8 (SAMSUNG-GT-S5380K/S5380KDDLC3)' + result: { browser: { name: 'QQ Browser Mini', version: '2.8', type: browser }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'QQ Browser Mini 2.8 on a Samsung Wave Y running Bada' +- + headers: 'User-Agent: MQQBrowser/Mini3.1 (Nokia7100s/06.32)' + result: { browser: { name: 'QQ Browser Mini', version: '3.1', type: browser }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '7100 Supernova' } } + readable: 'QQ Browser Mini 3.1 on a Nokia 7100 Supernova running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.3 Mobile Safari/537.36' + result: { browser: { name: 'QQ Browser', version: '5.3', type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart } } + readable: 'QQ Browser 5.3 on Android 4.4.2' +- + headers: 'User-Agent: MQQBrowser/4.0/Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn Build/S-2-20) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1' + result: { browser: { name: 'QQ Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart } } + readable: 'QQ Browser 4.0 on Android 4.0.3' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-samsung.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-samsung.yaml new file mode 100644 index 0000000..150fed5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-samsung.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; ru-ru; SAMSUNG GT-I9505 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S4 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; nl-nl; SAMSUNG GT-I9505 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy S4 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; tr-tr; SAMSUNG GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy S4 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SAMSUNG SM-J100H Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy J1' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy J1 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; en-gb; SAMSUNG SM-N910G Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 4' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Note 4 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; SAMSUNG SM-G900H Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5' } } + readable: 'Samsung Internet 3.0 on a Samsung Galaxy S5 running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; SAMSUNG SM-N9006 Build/LRX21V) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.1 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.1', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3' } } + readable: 'Samsung Internet 2.1 on a Samsung Galaxy Note 3 running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; de-at; SAMSUNG SM-G900F Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.1 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.1', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5' } } + readable: 'Samsung Internet 2.1 on a Samsung Galaxy S5 running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux86_64) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/5.2 Chrome/51.0.2704.106 Safari/537.36' + readable: 'Samsung Internet 5.2 on a Samsung DeX running Android' + result: { browser: { name: 'Samsung Internet', version: '5.2', type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: desktop, manufacturer: Samsung, model: DeX } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-skyfire.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-skyfire.yaml new file mode 100644 index 0000000..dee2f0e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-skyfire.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; xx) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 Skyfire/2.0' + result: { browser: { name: Skyfire, version: '2.0', type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Skyfire 2.0 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; xx) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 Skyfire/6DE' + result: { browser: { name: Skyfire, version: '6', type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Skyfire 6 on Android' +- + headers: 'User-Agent: Skyfire/5.0.1 (Linux; U; Android 4.1.2; xx; PlayBook Build/jelly bean) AppleWebKit/535.1+ (KHTML, like Gecko) Version/7.2.0.0 Safari/535.19' + result: { browser: { name: Skyfire, version: 5.0.1, type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'Skyfire 5.0.1 on a RIM BlackBerry PlayBook running Android' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-sogou.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-sogou.yaml new file mode 100644 index 0000000..9fecb09 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-sogou.yaml @@ -0,0 +1,72 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5.2.0-RT-20120926.155001; xx; K-Touch W619 Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/2.1.0' + result: { browser: { name: 'Sogou Mobile', version: '2.1', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: 1.5.2 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W619 } } + readable: 'Sogou Mobile 2.1 on a K-Touch W619 running Aliyun OS 1.5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; HTC Incredible S Build/GRJ90) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/3.1.2' + result: { browser: { name: 'Sogou Mobile', version: '3.1', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Incredible S' } } + readable: 'Sogou Mobile 3.1 on a HTC Incredible S running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; KFTT Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/2.6.3' + result: { browser: { name: 'Sogou Mobile', version: '2.6', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: FireOS, family: Android, version: '2' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HD (2012)' } } + readable: 'Sogou Mobile 2.6 on an Amazon Kindle Fire HD (2012) running FireOS 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; Lenovo A390t Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/3.5.1' + result: { browser: { name: 'Sogou Mobile', version: '3.5', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: A390 } } + readable: 'Sogou Mobile 3.5 on a Lenovo A390 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; MI 2C Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/2.2.1' + result: { browser: { name: 'Sogou Mobile', version: '2.2', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2' } } + readable: 'Sogou Mobile 2.2 on a Xiaomi Mi 2 running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; HUAWEI C8816 Build/HuaweiC8816) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/3.4.1' + result: { browser: { name: 'Sogou Mobile', version: '3.4', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend C8816' } } + readable: 'Sogou Mobile 3.4 on a Huawei Ascend C8816 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; SM-G3588V Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/3.8.2' + result: { browser: { name: 'Sogou Mobile', version: '3.8', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Lite' } } + readable: 'Sogou Mobile 3.8 on a Samsung Galaxy Core Lite running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.4; xx; SM-A5000 Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/4.1.0' + result: { browser: { name: 'Sogou Mobile', version: '4.1', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A5' } } + readable: 'Sogou Mobile 4.1 on a Samsung Galaxy A5 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 5.0.2; xx; MI NOTE Pro Build/LRX22G) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/3.8.0' + result: { browser: { name: 'Sogou Mobile', version: '3.8', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi Note Pro' } } + readable: 'Sogou Mobile 3.8 on a Xiaomi Mi Note Pro running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 5.1.1; xx; H60-L01 Build/HDH60-L01) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/3.8.4' + result: { browser: { name: 'Sogou Mobile', version: '3.8', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Honor 6' } } + readable: 'Sogou Mobile 3.8 on a Huawei Honor 6 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A403 SogouAndroidBrowser/2.6.1' + result: { browser: { name: 'Sogou Mobile', version: 2.6.1, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Sogou Mobile 2.6.1 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A403 SogouAndroidBrowser/2.6.3' + result: { browser: { name: 'Sogou Mobile', version: 2.6.3, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Sogou Mobile 2.6.3 on Android' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B350 SogouMobileBrowser/2.0.1' + result: { browser: { name: 'Sogou Mobile', version: '2.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 2.0 on an Apple iPhone running iOS 6.1.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a SogouMobileBrowser/3.1.2' + result: { browser: { name: 'Sogou Mobile', version: '3.1', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 3.1 on an Apple iPhone running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H143 SogouMobileBrowser/3.9.2' + result: { browser: { name: 'Sogou Mobile', version: '3.9', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.4' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 3.9 on an Apple iPhone running iOS 8.4' +- + headers: 'User-Agent: SogouMobileBrowser/1.0.110 Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A405' + result: { browser: { name: 'Sogou Mobile', version: '1.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 1.0 on an Apple iPhone running iOS 6.0' +- + headers: 'User-Agent: SogouMobileBrowser/1.0.164905 Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A403' + result: { browser: { name: 'Sogou Mobile', version: '1.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 1.0 on an Apple iPhone running iOS 6.0' +- + headers: 'User-Agent: SogouMobileBrowser/1.2.1 Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B141' + result: { browser: { name: 'Sogou Mobile', version: '1.2', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 1.2 on an Apple iPhone running iOS 6.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-uc.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-uc.yaml new file mode 100644 index 0000000..7685534 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-uc.yaml @@ -0,0 +1,560 @@ +- + headers: 'User-Agent: BREW-Applet/0x20068888 (BREW/3.1.5.20; DeviceId: 32056; Lang: zhcn) ucweb-squid' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Brew, version: 3.1.5.20 }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser on Brew 3.1.5.20' +- + headers: 'X-UCBrowser-UA: pf(44);la(en-US);dv(iPh4,1);pr(UCBrowser);ov(8_1_2);pi(640x960);ss(320x416);er(U);bt(GJ);up();re(AppleWebKit/600.1.4.12.4 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(1);' + result: { browser: { name: 'UC Browser' }, engine: { name: Webkit, version: 600.1.4.12.4 }, os: { name: iOS, version: 8.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'UC Browser on an Apple iPhone 4S running iOS 8.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (NOKIA6700s)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6700 slide' } } + readable: 'UC Browser on a Nokia 6700 slide running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Nokia500)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 500' } } + readable: 'UC Browser on a Nokia Asha 500 running Nokia Asha Platform 1.0' +- + headers: 'X-Ucbrowser-Ua: pf(Java);la(en-US);re(U2/1.0.0);dv(Nokia200);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(320*240);ss(320*240);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(1);' + result: { browser: { name: 'UC Browser', version: '9.4' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 200' } } + readable: 'UC Browser 9.4 on a Nokia Asha 200 running Series40' +- + headers: 'X-Ucbrowser-Ua: pf(Java);la(en-US);re(U2/1.0.0);dv(NokiaC7-00);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(360*640);ss(360*640);up(U2/1.0.0);er(U);bt(GJ);pm(0);bv(0);nm(1);im(0);sr(0);nt(99);' + result: { browser: { name: 'UC Browser', version: '9.5' }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C7-00 } } + readable: 'UC Browser 9.5 on a Nokia C7-00 running Series60' +- + headers: 'X-Ucbrowser-Ua: pf(Java);la(en-US);re(U2/1.0.0);dv(SAMSUNG-GT-S8600);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(1);sr(0);nt(99);' + result: { browser: { name: 'UC Browser', version: '9.5' }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 3' } } + readable: 'UC Browser 9.5 on a Samsung Wave 3 running Bada' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; xx; SAMSUNG-GT-S5260) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Star II' } } + readable: 'UC Browser 9.5 on a Samsung Star II running Touchwiz' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; xx; SAMSUNG-GT-S5333) U2/1.0.0 UCBrowser/9.4.0.343 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 533' } } + readable: 'UC Browser 9.4 on a Samsung Wave 533 running Bada' +- + headers: 'X-UCBrowser-UA: pf(Java);la(en-US);re(U2/1.0.0);dv(SAMSUNG-GT-S3850);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*260);ss(240*260);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);' + result: { browser: { name: 'UC Browser', version: '9.5' }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Corby II' } } + readable: 'UC Browser 9.5 on a Samsung Corby II running Touchwiz' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; xx; SonyEricssonK530i) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: K530i } } + readable: 'UC Browser 9.5 on a Sony Ericsson K530i' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; xx; nokiae5-00) U2/1.0.0 UCBrowser/9.2.0.311 U2/1.0.0 Mobile UNTRUSTED/1.0 3gpp-gba' + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E5-00 } } + readable: 'UC Browser 9.2 on a Nokia E5-00 running Series60' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 2.1-update1; xx; E15a) U2/1.0.0 UCBrowser/9.3.1.344 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Gecko }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X8' } } + readable: 'UC Browser 9.3 on a Sony Ericsson Xperia X8 running Android 2.1' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 2.2.2; xx; GT-I5700) U2/1.0.0 UCBrowser/9.3.2.349 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Spica' } } + readable: 'UC Browser 9.3 on a Samsung Galaxy Spica running Android 2.2.2' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 2.3.6; xx; ZTE U788) U2/1.0.0 UCBrowser/8.8.1.258 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: U788 } } + readable: 'UC Browser 8.8 on a ZTE U788 running Android 2.3.6' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 2.3.7; xx; HTC Desire) U2/1.0.0 UCBrowser/9.2.3.324 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Desire } } + readable: 'UC Browser 9.2 on a HTC Desire running Android 2.3.7' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 4.0.4; xx; JY-G2) U2/1.0.0 UCBrowser/8.8.0.212 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Jiayu, model: G2 } } + readable: 'UC Browser 8.8 on a Jiayu G2 running Android 4.0.4' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 4.1.1; xx; M040) U2/1.0.0 UCBrowser/9.2.3.327 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Meizu, model: 'MX2 M040' } } + readable: 'UC Browser 9.2 on a Meizu MX2 M040 running Android 4.1.1' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 4.1.2; xx; HUAWEI C8813Q) U2/1.0.0 UCBrowser/9.4.2.365 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend C8813' } } + readable: 'UC Browser 9.4 on a Huawei Ascend C8813 running Android 4.1.2' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 4.2.1; xx; JY-G4) U2/1.0.0 UCBrowser/9.3.2.349 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Jiayu, model: G4 } } + readable: 'UC Browser 9.3 on a Jiayu G4 running Android 4.2.1' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Adr 4.2.1; xx; Lenovo A830) U2/1.0.0 UCBrowser/9.4.2.365 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: A830 } } + readable: 'UC Browser 9.4 on a Lenovo A830 running Android 4.2.1' +- + headers: 'User-Agent: UCWEB/2.0 (Windows; U; wds 8.0; xx; NOKIA; RM-885_im_india_249) U2/1.0.0 UCBrowser/4.1.0.504 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '4.1', type: browser }, engine: { name: Trident }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'UC Browser 4.1 on a Nokia Lumia 720 running Windows Phone 8.0' +- + headers: 'User-Agent: UCWEB/2.0 (Windows; U; wds 8.10; xx; NOKIA; RM-821_im_india_443) U2/1.0.0 UCBrowser/4.2.0.524 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '4.2', type: browser }, engine: { name: Trident }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'UC Browser 4.2 on a Nokia Lumia 920 running Windows Phone 8.1' +- + headers: 'User-Agent: UCWEB/2.0 (Windows; U; wds 10.0; xx; NOKIA; RM-978_1012) U2/1.0.0 UCBrowser/4.2.1.541 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '4.2', type: browser }, engine: { name: Trident }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'UC Browser 4.2 on a Nokia Lumia 630 running Windows 10 Mobile' +- + headers: 'User-Agent: UCWEB/2.0 (Windows; U; wds 10.0; xx; NOKIA; RM-984_1043) U2/1.0.0 UCBrowser/4.2.0.524 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '4.2', type: browser }, engine: { name: Trident }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 830' } } + readable: 'UC Browser 4.2 on a Nokia Lumia 830 running Windows 10 Mobile' +- + headers: 'User-Agent: UCWEB/2.0 (iOS; U; iPad OS 6_1_2; xx; iPad2,4) U2/1.0.0 UCBrowser/9.2.0.312 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, os: { name: iOS, version: 6.1.2 }, device: { type: tablet, manufacturer: Apple, model: 'iPad 2' } } + readable: 'UC Browser 9.2 on an Apple iPad 2 running iOS 6.1.2' +- + headers: 'User-Agent: UCWEB/2.0 (iOS; U; iPh OS 5_1_1; xx; iPh4,1) U2/1.0.0 UCBrowser/9.0.1.284 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.0', type: browser }, engine: { name: Gecko }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'UC Browser 9.0 on an Apple iPhone 4S running iOS 5.1.1' +- + headers: 'User-Agent: UCWEB/2.0 (iOS; U; iPh OS 6_1; zh-CN; iPh5,2) U2/1.0.0 UCBrowser/9.5.1.408 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'UC Browser 9.5 on an Apple iPhone 5 running iOS 6.1' +- + headers: 'User-Agent: UCWEB/2.0 (iOS; U; iPh OS 6_1_3; xx; iPh3,1) U2/1.0.0 UCBrowser/9.0.1.284 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.0', type: browser }, engine: { name: Gecko }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'UC Browser 9.0 on an Apple iPhone 4 running iOS 6.1.3' +- + headers: 'User-Agent: UCWEB/2.0 (iOS; U; iPh OS 7_0_4; xx; iPh3,1) U2/1.0.0 UCBrowser/9.0.1.284 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.0', type: browser }, engine: { name: Gecko }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'UC Browser 9.0 on an Apple iPhone 4 running iOS 7.0.4' +- + headers: 'User-Agent: UCWEB/2.0(BlackBerry; U; 4.2.0.397; xx; 9330/4.2.0.397) U2/1.0.0 UCBrowser/8.1.0.216 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9330' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Curve 9330 running BlackBerry OS' +- + headers: 'User-Agent: UCWEB/2.0(BlackBerry; U; 5.2.0.104; xx; 8520/5.2.0.104) U2/1.0.0 UCBrowser/8.1.0.216 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Curve 8520 running BlackBerry OS' +- + headers: 'User-Agent: UCWEB/2.0(BlackBerry; U; 6.3.0.63; xx; 9300/6.3.0.63) U2/1.0.0 UCBrowser/8.1.0.216 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9300' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Curve 9300 running BlackBerry OS' +- + headers: 'User-Agent: UCWEB/2.0(BlackBerry; U; 6.6.0.207; xx; 9700/6.6.0.207) U2/1.0.0 UCBrowser/8.1.0.216 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9700' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Bold 9700 running BlackBerry OS' +- + headers: 'User-Agent: UCWEB/2.0(BlackBerry; U; 9.6.0.51; xx; 9360/9.6.0.51) U2/1.0.0 UCBrowser/8.1.0.216 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9360' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Curve 9360 running BlackBerry OS' +- + headers: 'User-Agent: UCWEB/9.5.1.408 CFNetwork/609 Darwin/13.0.0' + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, os: { name: iOS, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'UC Browser 9.5 on iOS 6.0' +- + headers: 'User-Agent: UCWEB/9.5.1.408 CFNetwork/672.0.8 Darwin/14.0.0' + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'UC Browser 9.5 on iOS 7.0.3' +- + headers: 'User-Agent: jbed-fastbcc/UCWEB8.2.0.116/70/4171 UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser 8.2' +- + headers: 'User-Agent: nokiae63-1/UC Browser7.9.0.102/69/352 UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '7.9', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E63 } } + readable: 'UC Browser 7.9 on a Nokia E63 running Series60' +- + headers: 'X-Ucbrowser-Ua: pf(Symbian);er(U);la(en-US);up(U2/1.0.0);re(U2/1.0.0);dv(NokiaE7-00);pr(UCBrowser/9.2.0.336);ov(S60V5);pi(360*640);ss(360*640);bt(GJ);pm(0);bv(0);nm(1);im(0);sr(2);nt(2)' + result: { browser: { name: 'UC Browser', version: '9.2' }, os: { name: Series60, version: '5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E7-00 } } + readable: 'UC Browser 9.2 on a Nokia E7-00 running Series60 5' +- + headers: 'User-Agent: HTC_HD2_T8585 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'UC Browser 7.8 on a HTC HD2 running Windows Mobile' +- + headers: 'User-Agent: IUC(U;iOS 6.1.3;Zh-cn;320*480;)/UCWEB8.9.0.238/44/997' + result: { browser: { name: 'UC Browser', version: '8.9', type: browser }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'UC Browser 8.9 on iOS 6.1.3' +- + headers: 'User-Agent: J2ME/UCWEB7.0.3.45/139/7684' + result: { browser: { name: 'UC Browser', version: '7.0', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser 7.0' +- + headers: 'User-Agent: JUC (Linux; U; 2.1-update1; xx; C8500; 240*320) UCWEB8.2.2.135/145/800' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: C8500 } } + readable: 'UC Browser 8.2 on a Huawei C8500 running Android 2.1' +- + headers: 'User-Agent: JUC (Linux; U; 2.1-update1; xx; C8600; 320*480) UCWEB8.3.1.151/145/800' + result: { browser: { name: 'UC Browser', version: '8.3', type: browser }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: C8600 } } + readable: 'UC Browser 8.3 on a Huawei C8600 running Android 2.1' +- + headers: 'User-Agent: JUC (Linux; U; 2.1-update1; xx; E16i; 320*480) UCWEB7.9.0.94/140/999' + result: { browser: { name: 'UC Browser', version: '7.9', type: browser }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'W8 Walkman' } } + readable: 'UC Browser 7.9 on a Sony Ericsson W8 Walkman running Android 2.1' +- + headers: 'User-Agent: JUC (Linux; U; 2.1-update1; xx; GT-I5700; 320*480) UCWEB8.2.2.135/145/999' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Spica' } } + readable: 'UC Browser 8.2 on a Samsung Galaxy Spica running Android 2.1' +- + headers: 'User-Agent: JUC (Linux; U; 2.2.1; xx; GT-I9088; 480*800) UCWEB8.2.2.135/145/999' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S' } } + readable: 'UC Browser 8.2 on a Samsung Galaxy S running Android 2.2.1' +- + headers: 'User-Agent: JUC (Linux; U; 2.3.3; xx; C8650; 320*480) UCWEB8.7.2.214/145/999' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: C8650 } } + readable: 'UC Browser 8.7 on a Huawei C8650 running Android 2.3.3' +- + headers: 'User-Agent: JUC (Linux; U; 2.3.7; xx; MB501; 320*480) UCWEB8.7.4.225/145/999' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'CLIQ XT' } } + readable: 'UC Browser 8.7 on a Motorola CLIQ XT running Android 2.3.7' +- + headers: 'User-Agent: JUC (Linux; U; 4.0.3; xx; HTC T328w; 480*800) UCWEB8.7.2.214/145/800' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire V' } } + readable: 'UC Browser 8.7 on a HTC Desire V running Android 4.0.3' +- + headers: 'User-Agent: JUC(Linux;U;4.2.2;Zh_cn;GT-I9300-JB2;720*1280;)UCWEB7.6.0.75/139/999' + result: { browser: { name: 'UC Browser', version: '7.6', type: browser }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III' } } + readable: 'UC Browser 7.6 on a Samsung Galaxy S III running Android 4.2.2' +- + headers: 'User-Agent: JUC(Linux;U;Android2.3.6;Zh_cn;Micromax A50;240*320;)UCWEB7.8.0.95/139/444' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Micromax, model: 'A50 Ninja' } } + readable: 'UC Browser 7.8 on a Micromax A50 Ninja running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'UC Browser 7.8 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; NokiaX2DS Build/JLS36C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/10.0.2.523 U3/0.8.0 Mobile Safari/533.1' + result: { browser: { name: 'UC Browser', version: '10.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X2 } } + readable: 'UC Browser 10.0 on a Nokia X2 running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.3; xx; KFTHWI Build/KTU84M) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.4.1.576 U3/0.8.0 Mobile Safari/534.30' + result: { browser: { name: 'UC Browser', version: '10.4', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HDX (2013)' } } + readable: 'UC Browser 10.4 on an Amazon Kindle Fire HDX (2013) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.4; xx; SD4930UR Build/KTU84P) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.7.0.636 U3/0.8.0 Mobile Safari/534.30' + result: { browser: { name: 'UC Browser', version: '10.7', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: FireOS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: Amazon, model: 'Fire Phone' } } + readable: 'UC Browser 10.7 on an Amazon Fire Phone running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537 UCBrowser/4.2.0.524 Mobile' + result: { browser: { name: 'UC Browser', version: '4.2', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'UC Browser 4.2 on a Nokia Lumia 520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 630 Dual SIM) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537 UCBrowser/4.2.1.541 Mobile' + result: { browser: { name: 'UC Browser', version: '4.2', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'UC Browser 4.2 on a Nokia Lumia 630 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 820) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537 UCBrowser/4.2.1.541 Mobile' + result: { browser: { name: 'UC Browser', version: '4.2', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 820' } } + readable: 'UC Browser 4.2 on a Nokia Lumia 820 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (NOKIAE90)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'E90 Communicator' } } + readable: 'UC Browser on a Nokia E90 Communicator running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Nokia5250)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5250' } } + readable: 'UC Browser on a Nokia 5250 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Nokia9999)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '9999' } } + readable: 'UC Browser on a Nokia 9999' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HUAWEI; W1-U00) UCBrowser/4.2.1.541 Mobile' + result: { browser: { name: 'UC Browser', version: '4.2', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W1' } } + readable: 'UC Browser 4.2 on a Huawei Ascend W1 running Windows Phone 8.0' +- + headers: 'User-Agent: SAMSUNG-GT-i8000/1.0 (compatible; MSIE 4.01; Windows CE; PPC)/8.2.0.116/31/351' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Pocket Internet Explorer 4.0.1 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: 'User-Agent: SAMSUNGSGH-i450/UCWEB8.7.0.187/28/10086' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: i450 } } + readable: 'UC Browser 8.7 on a Samsung i450 running Series60' +- + headers: 'User-Agent: SonyEricssonJ20i/R7CA Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; xx; SonyEricssonJ20i) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Hazel } } + readable: 'UC Browser 9.4 on a Sony Ericsson Hazel' +- + headers: 'User-Agent: SonyEricssonU1/UCWEB8.9.0.253/50/800' + result: { browser: { name: 'UC Browser', version: '8.9', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Satio } } + readable: 'UC Browser 8.9 on a Sony Ericsson Satio running Series60' +- + headers: 'User-Agent: SonyEricssonU5/UCWEB7.0.2.37/50/999' + result: { browser: { name: 'UC Browser', version: '7.0', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Vivaz } } + readable: 'UC Browser 7.0 on a Sony Ericsson Vivaz running Series60' +- + headers: 'User-Agent: SonyEricssonW910i/R1FA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0 UCWEB/2.0 (Java; U; MIDP-2.0; xx; SonyEricssonW910i) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: W910i } } + readable: 'UC Browser 9.4 on a Sony Ericsson W910i' +- + headers: 'User-Agent: UC Browser5.1.0.21/27/400' + result: { browser: { name: 'UC Browser', version: '5.1', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser 5.1' +- + headers: 'User-Agent: UC Browser7.7.1.88/28/400' + result: { browser: { name: 'UC Browser', version: '7.7', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser 7.7' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; xx; MicromaxQ5) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: Micromax, model: Q5 } } + readable: 'UC Browser 9.4 on a Micromax Q5' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; xx; Nokia6233) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6233' } } + readable: 'UC Browser 9.4 on a Nokia 6233 running Series40' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; xx; NokiaAsha230DualSIM) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 230' } } + readable: 'UC Browser 9.5 on a Nokia Asha 230 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; xx; NokiaN70-1) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N70 } } + readable: 'UC Browser 9.4 on a Nokia N70 running Series60' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2;.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)', X-Ucbrowser-Phone-Ua: 'maui browser' } + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser on MRE' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.2.2; xx; Lenovo A369i Build/JDQ39) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.1.0.297 U3/0.8.0 Mobile Safari/534.31', X-UCBrowser-UA: 'pf(Linux);la(en-US);re(AppleWebKit/534.31 (KHTML, like Gecko));dv(Lenovo A369i Build/JDQ39);pr(UCBrowser/9.1.0.297);ov(Android 4.2.2);pi(480*762);ss(480*762);up(U3/0.8.0);er(U);bt(GZ);pm(1);bv(1);nm(0);im(0);sr(0);nt(3);' } + result: { browser: { name: 'UC Browser', version: '9.1', type: browser }, engine: { name: Webkit, version: '534.31' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: A369 } } + readable: 'UC Browser 9.1 on a Lenovo A369 running Android 4.2.2' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X; xx) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11D257 UCBrowser/10.2.0.517 Mobile', X-UCBrowser-UA: 'dv(iPh4,1);pr(UCBrowser/10.2.0.517);ov(7_1_2);ss(320x416);bt(UC);pm(0);bv(0);nm(0);im(0);nt(1);' } + result: { browser: { name: 'UC Browser', version: '10.2', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'UC Browser 10.2 on an Apple iPhone 4S running iOS 7.1.2' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X; xx) AppleWebKit/600.1.4.12.4 (KHTML, like Gecko) Mobile/12B440 UCBrowser/9.3.0.326 Mobile', X-UCBrowser-UA: 'pf(44);la(en-US);dv(iPh4,1);pr(UCBrowser);ov(8_1_2);pi(640x960);ss(320x416);er(U);bt(GJ);up();re(AppleWebKit/600.1.4.12.4 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(1);' } + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Webkit, version: 600.1.4.12.4 }, os: { name: iOS, version: 8.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'UC Browser 9.3 on an Apple iPhone 4S running iOS 8.1.2' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X; xx) AppleWebKit/600.1.4.12.4 (KHTML, like Gecko) Mobile/12B440 UCBrowser/9.3.0.326 Mobile', X-UCBrowser-UA: 'pf(44);la(en-US);dv(iPh6,2);pr(UCBrowser);ov(8_1_2);pi(640x1136);ss(320x416);er(U);bt(GJ);up();re(AppleWebKit/600.1.4.12.4 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(2);' } + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Webkit, version: 600.1.4.12.4 }, os: { name: iOS, version: 8.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5s' } } + readable: 'UC Browser 9.3 on an Apple iPhone 5s running iOS 8.1.2' +- + headers: { User-Agent: NokiaE72-1/UCWEB8.9.0.253/28/999, X-Ucbrowser-Ua: 'pf(Symbian);er(U);la(zh-CN);up(U2/1.0.0);re(U2/1.0.0);dv(NokiaE72-1);pr(UCBrowser/8.9.0.253);ov(S60V3);pi(320*240);ss(320*240);bt(UC);pm(1);bv(0);nm(0);im(0);sr(2);nt(2)' } + result: { browser: { name: 'UC Browser', version: '8.9', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E72 } } + readable: 'UC Browser 8.9 on a Nokia E72 running Series60' +- + headers: { User-Agent: 'UCWEB/2.0 (MIDP-2.0; U; Adr 4.1.2; xx; GT-S7262) U2/1.0.0 UCBrowser/9.4.1.482 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Linux);la(en-US);re(U2/1.0.0);dv(GT-S7262);pr(UCBrowser/9.4.1.482);ov(4.1.2);pi(480*800);ss(480*800);up(U2/1.0.0);er(U);bt(GJ);pm(1);nm(0);im(0);sr(2);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Star Pro' } } + readable: 'UC Browser 9.4 on a Samsung Galaxy Star Pro running Android 4.1.2' +- + headers: { User-Agent: 'UCWEB/2.0 (Windows; U; wds 7.10; en-US; NOKIA; Lumia 710) U2/1.0.0 UCBrowser/3.2.0.340 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Windows);la(en-US);re(U2/1.0.0);dv(NOKIA Lumia 710);pr(UCBrowser/3.2.0.340);ov(wds 7.10);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(0);nt(2);up(U2/1.0.0);pm(1);' } + result: { browser: { name: 'UC Browser', version: '3.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 710' } } + readable: 'UC Browser 3.2 on a Nokia Lumia 710 running Windows Phone 7.5' +- + headers: { User-Agent: 'UCWEB/2.0 (Windows; U; wds 7.10; xx; NOKIA; Lumia 710) U2/1.0.0 UCBrowser/3.2.0.340 U2/1.0.0 Mobile', x-ucbrowser-ua: 'pf(Windows);la(en-US);re(U2/1.0.0);dv(NOKIA Lumia 710);pr(UCBrowser/3.2.0.340);ov(wds 7.10);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(2);nt(1);up(U2/1.0.0);pm(1);' } + result: { browser: { name: 'UC Browser', version: '3.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 710' } } + readable: 'UC Browser 3.2 on a Nokia Lumia 710 running Windows Phone 7.5' +- + headers: { User-Agent: 'UCWEB/2.0 (Windows; U; wds 7.10; xx; NOKIA; Lumia 800) U2/1.0.0 UCBrowser/3.2.0.340 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Windows);la(en-US);re(U2/1.0.0);dv(NOKIA Lumia 800);pr(UCBrowser/3.2.0.340);ov(wds 7.10);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(0);nt(2);up(U2/1.0.0);pm(1);' } + result: { browser: { name: 'UC Browser', version: '3.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } + readable: 'UC Browser 3.2 on a Nokia Lumia 800 running Windows Phone 7.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2;.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2) UCBrowser/8.6.0.199/84/352 UNTRUSTED/1.0 3gpp-gba', X-UCBrowser-Phone-UA: nokia701, X-UCBrowser-Phone: nokia701 } + result: { browser: { name: 'UC Browser', version: '8.6', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '701' } } + readable: 'UC Browser 8.6 on a Nokia 701 running Series60' +- + headers: { User-Agent: 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; xx) AppleWebKit/534.1+ (KHTML, Like Gecko) Version/6.0.0.141 Mobile Safari/534.1+', X-Ucbrowser-Phone: sunmicro, X-Ucbrowser-Phone-Ua: sunmicro } + result: { browser: { name: 'UC Browser' }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9800' } } + readable: 'UC Browser on a RIM BlackBerry Torch 9800 running BlackBerry OS 6.0' +- + headers: { User-Agent: 'NokiaC3-01/5.0 (06.05) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0(Java; U; MIDP-2.0; xx; nokiac3-01) U2/1.0.0 UCBrowser/8.8.0.227 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-Phone-UA: nokiac3-01, X-UCBrowser-Phone: nokiac3-01 } + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C3-01 } } + readable: 'UC Browser 8.8 on a Nokia C3-01 running Series40' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; Nokia203/20.37) U2/1.0.0 UCBrowser/8.7.0.218 U2/1.0.0 Mobile', x-ucbrowser-ua: 'pf(Linux);la(en-US);re(U2/1.0.0);dv(Micromax_A36);pr(UCBrowser/9.4.0.460);ov(2.3.5);pi(480*800);ss(480*800);up(U2/1.0.0);er(U);bt(GJ);pm(1);nm(0);im(0);sr(2);nt(99);', x-ucbrowser-device-ua: 'Mozilla/5.0 (Linux; U; Android 2.3.5; en-US; Micromax_A36 Build/MocorDroid2.3.5_Trout) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' } + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Micromax, model: 'A36 Bolt' } } + readable: 'UC Browser 8.7 on a Micromax A36 Bolt running Android 2.3.5' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; Nokia203/20.37) U2/1.0.0 UCBrowser/8.7.0.218 U2/1.0.0 Mobile', X-Ucbrowser-Phone: nokia305, X-Ucbrowser-Phone-Ua: nokia305 } + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 305' } } + readable: 'UC Browser 8.7 on a Nokia Asha 305 running Series40' +- + headers: { User-Agent: 'UCWEB/2.0 (MIDP-2.0; U; Adr 4.0.4; xx; GT-S7562) U2/1.0.0 UCBrowser/9.4.0.460 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Linux);la(en-US);re(U2/1.0.0);dv(GT-S7562);pr(UCBrowser/9.4.0.460);ov(4.0.4);pi(480*800);ss(480*800);up(U2/1.0.0);er(U);bt(GJ);pm(1);nm(0);im(0);sr(2);nt(99);', X-UCBrowser-Device-UA: 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-US; GT-S7562 Build/IMM76I) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Duos' } } + readable: 'UC Browser 9.4 on a Samsung Galaxy S Duos running Android 4.0.4' +- + headers: { User-Agent: 'UCWEB/2.0 (MIDP-2.0; U; Adr 4.1.2; xx; Nokia_X) U2/1.0.0 UCBrowser/9.4.0.460 U2/1.0.0 Mobile', X-Ucbrowser-Device-Ua: 'Mozilla/5.0 (Linux; U; Android 4.1.2; en-US; Nokia_X Build/JZO54K) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1', X-Ucbrowser-Ua: 'pf(Linux);la(en-US);re(U2/1.0.0);dv(Nokia_X);pr(UCBrowser/9.4.0.460);ov(4.1.2);pi(480*800);ss(480*800);up(U2/1.0.0);er(U);bt(GJ);pm(1);nm(0);im(0);sr(2);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X } } + readable: 'UC Browser 9.4 on a Nokia X running Nokia X Platform' +- + headers: { User-Agent: 'UCWEB/2.0 (MIDP-2.0; U; Adr 4.2.2; xx; KYY21) U2/1.0.0 UCBrowser/9.5.1.494 U2/1.0.0 Mobile', x-ucbrowser-ua: 'pf(Linux);la(en-US);re(U2/1.0.0);dv(KYY21);pr(UCBrowser/9.5.1.494);ov(4.2.2);pi(720*1280);ss(720*1280);up(U2/1.0.0);er(U);bt(GJ);pm(1);nm(0);im(0);sr(2);nt(99);', x-ucbrowser-device-ua: 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-US; KYY21 Build/209.0.1700) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Kyocera, model: 'URBANO L01', carrier: au } } + readable: 'UC Browser 9.5 on a Kyocera URBANO L01 running Android 4.2.2' +- + headers: { User-Agent: 'UCWEB/2.0 (MIDP-2.0; U; Adr 4.2.2; xx; TECNO_S3) U2/1.0.0 UCBrowser/8.8.1.359 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Linux);la(en-US);re(U2/1.0.0);dv(TECNO_S3);pr(UCBrowser/8.8.1.359);ov(4.2.2);pi(320*480);ss(320*480);up(U2/1.0.0);er(U);bt(GJ);pm(1);nm(0);im(0);sr(2);nt(99);', X-UCBrowser-Device-UA: 'Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; TECNO S3 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' } + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Gecko }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Tecno, model: S3 } } + readable: 'UC Browser 8.8 on a Tecno S3 running Android 4.2.2' +- + headers: { User-Agent: 'UCWEB/2.0(Java; U; MIDP-2.0; xx; gt-s5233s) U2/1.0.0 UCBrowser/8.7.1.234 U2/1.0.0 Mobile UNTRUSTED/1.0', X-Ucbrowser-Phone: gt-s5233s, X-Ucbrowser-Phone-Ua: gt-s5233s } + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Star } } + readable: 'UC Browser 8.7 on a Samsung Star running Touchwiz' +- + headers: { User-Agent: 'Nokia200/2.0 (11.95) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; xx; Nokia200) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile', X-Ucbrowser-Ua: 'pf(Java);la(en-US);re(U2/1.0.0);dv(Nokia200);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(320*240);ss(320*240);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(1);', X-Ucbrowser-Device-Ua: 'Mozilla/5.0 (Series40; Nokia200/11.81; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11', X-Ucbrowser-Device: 'nokia#200' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 200' } } + readable: 'UC Browser 9.4 on a Nokia Asha 200 running Series40' +- + headers: { User-Agent: 'NokiaC2-01/5.0 (11.40) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; xx; NokiaC2-01) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile UNTRUSTED/1.0', x-ucbrowser-device: 'nokia#C2-01', x-ucbrowser-device-ua: '?', x-ucbrowser-ua: 'pf(Java);la(pl-PL);re(U2/1.0.0);dv(NokiaC2-01);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(1);' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C2-01 } } + readable: 'UC Browser 9.5 on a Nokia C2-01 running Series40' +- + headers: { User-Agent: 'SAMSUNG-GT-C3312/1.0 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0', X-UCBrowser-Device: 'samsung#-GT-C3312', x-ucbrowser-device-ua: 'SAMSUNG-GT-C3312/1.0 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1', x-ucbrowser-ua: 'pf(Java);la(en-US);re(U2/1.0.0);dv(SAMSUNG-GT-C3312);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Champ Deluxe Duos' } } + readable: 'UC Browser 9.5 on a Samsung Champ Deluxe Duos running Touchwiz' +- + headers: { User-Agent: 'SAMSUNG-GT-S3770K/S3770KDDKH4 Profile/MIDP-2.0 Configuration/CLDC-1.1 Untrusted/1.0', x-ucbrowser-ua: 'pf(Java);la(en-US);re(U2/1.0.0);dv(j2me);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);', X-UCBrowser-Device-UA: 'SAMSUNG-GT-S3770K/S3770KDDKH4 NetFront/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1', X-UCBrowser-Device: j2me } + result: { browser: { name: 'UC Browser', version: '9.5' }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Champ 3G' } } + readable: 'UC Browser 9.5 on a Samsung Champ 3G running Touchwiz' +- + headers: { User-Agent: 'SAMSUNG-GT-S3770K/S3770KDDLH1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Untrusted/1.0', X-UCBrowser-Device: j2me, X-UCBrowser-Device-UA: 'MOT-A1200e/1.0 LinuxOS/2.4.20 Release/1.31.2007 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R541_G_11.56.11R', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(j2me);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.5' }, os: { name: 'EZX Linux' }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: A1200e } } + readable: 'UC Browser 9.5 on a Motorola A1200e running EZX Linux' +- + headers: { User-Agent: 'SonyEricssonJ108i/R7EA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0 UCWEB/2.0(Java; U; MIDP-2.0; xx; sonyericssonj108i) U2/1.0.0 UCBrowser/8.8.0.227 U2/1.0.0 Mobile', X-UCBrowser-Phone-UA: sonyericssonj108i, X-UCBrowser-Phone: sonyericssonj108i, x-ucbrowser-ua: 'pf(Java);la(en-US);re(U2/1.0.0);dv(sonyericssonj108i);pr(UCBrowser/8.8.0.227);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Cedar } } + readable: 'UC Browser 8.8 on a Sony Ericsson Cedar' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; Nokia501) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-Device: 'nokia#501', X-UCBrowser-Device-UA: '?', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(Nokia501);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(1);' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'UC Browser 9.5 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; NokiaC7-00) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile UNTRUSTED/1.0 3gpp-gba', X-Ucbrowser-Ua: 'pf(Java);la(en-US);re(U2/1.0.0);dv(NokiaC7-00);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(360*640);ss(360*640);up(U2/1.0.0);er(U);bt(GJ);pm(0);bv(0);nm(1);im(0);sr(0);nt(99);', X-Ucbrowser-Device-Ua: '?', X-Ucbrowser-Device: 'nokia#C7-00' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C7-00 } } + readable: 'UC Browser 9.5 on a Nokia C7-00 running Series60' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; SAMSUNG-GT-S3850) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(SAMSUNG-GT-S3850);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*260);ss(240*260);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);', X-UCBrowser-Device-UA: 'SAMSUNG-GT-S3850/1.0 SHP/VPP/R5 Dolfin/2.0 NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B', X-UCBrowser-Device: 'samsung#-GT-S3850' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Touchwiz, version: '3.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Corby II' } } + readable: 'UC Browser 9.5 on a Samsung Corby II running Touchwiz 3.0' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; SAMSUNG-GT-S5250) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile UNTRUSTED/1.0', X-Ucbrowser-Device: 'samsung#-GT-S5250', X-Ucbrowser-Device-Ua: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5250/S5250XEKC1; U; Bada/1.0; uk-ua) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B', X-Ucbrowser-Ua: 'pf(Java);la(ru);re(U2/1.0.0);dv(SAMSUNG-GT-S5250);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*400);ss(240*400);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(2);im(0);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 525' } } + readable: 'UC Browser 9.5 on a Samsung Wave 525 running Bada 1.0' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; SAMSUNG-GT-S8600) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile UNTRUSTED/1.0', X-Ucbrowser-Ua: 'pf(Java);la(en-US);re(U2/1.0.0);dv(SAMSUNG-GT-S8600);pr(UCBrowser/9.5.0.449);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(1);sr(0);nt(99);', X-Ucbrowser-Device-Ua: '?', X-Ucbrowser-Device: 'samsung#-GT-S8600' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 3' } } + readable: 'UC Browser 9.5 on a Samsung Wave 3 running Bada' +- + headers: { User-Agent: 'UCWEB/2.0 (Symbian; U; S60 V3; xx; NOKIA6120c) U2/1.0.0 UCBrowser/9.2.0.336 U2/1.0.0 Mobile', X-Ucbrowser-Device: 'NOKIA # 6120c', X-Ucbrowser-Device-Ua: 'Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NOKIA6120c/07.20; Profile/MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413', X-Ucbrowser-Ua: 'pf(Symbian);er(U);la(en-US);up(U2/1.0.0);re(U2/1.0.0);dv(NOKIA6120c);pr(UCBrowser/9.2.0.336);ov(S60V3);pi(240*320);ss(240*320);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(2);nt(1)' } + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6120 classic' } } + readable: 'UC Browser 9.2 on a Nokia 6120 classic running Series60 3.1' +- + headers: { User-Agent: 'UCWEB/2.0 (Symbian; U; S60 V5; xx; NokiaE7-00) U2/1.0.0 UCBrowser/9.2.0.336 U2/1.0.0 Mobile', X-Ucbrowser-Device: 'Nokia # E7-00', X-Ucbrowser-Device-Ua: 'Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaE7-00/1.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.4.1.14 Mobile Safari/533.4 3gpp-gba', X-Ucbrowser-Ua: 'pf(Symbian);er(U);la(en-US);up(U2/1.0.0);re(U2/1.0.0);dv(NokiaE7-00);pr(UCBrowser/9.2.0.336);ov(S60V5);pi(360*640);ss(360*640);bt(GJ);pm(0);bv(0);nm(1);im(0);sr(2);nt(2)' } + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian, version: '5.3' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E7-00 } } + readable: 'UC Browser 9.2 on a Nokia E7-00 running Series60 5.3' +- + headers: { User-Agent: 'UNTRUSTED/1.0/HS-T39_TD/1.0 Release/03.03.2011 Threadx/4.0 Mocor/W10 Browser/NF4.0 Profile/MIDP-2.0 Config/CLDC-1.1', X-Ucbrowser-Ua: 'pf(Java);la(en-US);re(U2/1.0.0);dv(Jblend);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);', X-Ucbrowser-Device-Ua: '?', X-Ucbrowser-Device: Jblend } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, os: { name: ThreadX, version: '4.0' }, device: { type: mobile, subtype: feature, manufacturer: Hisense, model: T39 } } + readable: 'UC Browser 9.4 on a Hisense T39 running ThreadX 4.0' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; Pt-BR; maui e800) U2/1.0.0 UCBrowser/9.2.0.311 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: BenQ, model: 'Maui E800' } } + readable: 'UC Browser 9.2 on a BenQ Maui E800' +- + headers: 'User-Agent: UCWEB/2.0 (Java; U; MIDP-2.0; fr-FR; ZTE NOVA) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: ZTE, model: NOVA } } + readable: 'UC Browser 9.4 on a ZTE NOVA' +- + headers: 'X-UCBrowser-UA: pf(Windows);la(en-US);re(U2/1.0.0);dv(NOKIA Lumia 800);pr(UCBrowser/3.2.0.340);ov(wds 7.10);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(0);nt(2);up(U2/1.0.0);pm(1);' + result: { browser: { name: 'UC Browser', version: '3.2' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } + readable: 'UC Browser 3.2 on a Nokia Lumia 800 running Windows Phone 7.5' +- + headers: 'X-UCBrowser-UA: pf(Windows);la(zh-CN);re(U2/1.0.0);dv(NOKIA RM-913_apac_prc_213);pr(UCBrowser/2.9.0.263);ov(wds 8.0);pi(480*800);ss(480*800);er(U);bt(YY);nm(0);im(0);sr(0);nt(2);pm(0);' + result: { browser: { name: 'UC Browser', version: '2.9' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'UC Browser 2.9 on a Nokia Lumia 520 running Windows Phone 8.0' +- + headers: 'X-UCBrowser-UA: pf(Windows);la(zh-CN);re(U2/1.0.0);dv(NOKIA RM-978_1007);pr(UCBrowser/3.3.0.358);ov(wds 8.10);pi(480*800);ss(480*800);er(U);bt(YZ);nm(0);im(0);sr(0);nt(2);pm(0);' + result: { browser: { name: 'UC Browser', version: '3.3' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'UC Browser 3.3 on a Nokia Lumia 630 running Windows Phone 8.1' +- + headers: 'X-UCBrowser-UA: pf(Windows);la(zh-CN);re(U2/1.0.0);dv(NOKIA RM-984_1043);pr(UCBrowser/3.3.0.358);ov(wds 10.0);pi(720*1280);ss(480*853);er(U);bt(YZ);nm(0);im(0);sr(0);nt(2);pm(0);' + result: { browser: { name: 'UC Browser', version: '3.3' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 830' } } + readable: 'UC Browser 3.3 on a Nokia Lumia 830 running Windows 10 Mobile' +- + headers: 'User-Agent: Opera/9.80 (Android; Opera Mini/7.28879/27.1662; U; xx) Presto/2.8.119 Version/11.10 UCBrowser/8.4.1.204/145/352/' + result: { browser: { name: 'UC Browser', version: '8.4', type: browser }, engine: { name: Webkit }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'UC Browser 8.4 on Android' +- + headers: 'User-Agent: UCWEB/2.0 (Linux; U; Opera Mini/7.1.32052/30.3697; xx; GT-I9082) U2/1.0.0 UCBrowser/8.9.2.373 Mobile' + result: { browser: { name: 'UC Browser', version: '8.9', type: browser }, engine: { name: Gecko }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand Duos' } } + readable: 'UC Browser 8.9 on a Samsung Galaxy Grand Duos running Android' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; xx) UC AppleWebKit/534.31 (KHTML, like Gecko) Chrome/17.0.558.0 Safari/534.31' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 17 }, type: browser }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser' +- + headers: 'User-Agent: Mozilla/5.0 (Nokia5230)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5230' } } + readable: 'UC Browser on a Nokia 5230 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (NokiaC5-01)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C5-01 } } + readable: 'UC Browser on a Nokia C5-01 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNGSGH-i450)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: i450 } } + readable: 'UC Browser on a Samsung i450 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (SonyEricssonU5i)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Vivaz } } + readable: 'UC Browser on a Sony Ericsson Vivaz running Series60' +- + headers: 'User-Agent: UCWEB/2.0 (MIDP-2.0; U; xx; XT875) U2/1.0.0 UCBrowser/10.2.0.535 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '10.2', type: browser }, engine: { name: Gecko }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid Bionic' } } + readable: 'UC Browser 10.2 on a Motorola Droid Bionic running Android' +- + headers: 'User-Agent: UCWEB/2.0 (MIDP-2.0; U; xx; XT897) U2/1.0.0 UCBrowser/9.9.2.467 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.9', type: browser }, engine: { name: Gecko }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'PHOTON Q' } } + readable: 'UC Browser 9.9 on a Motorola PHOTON Q running Android' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; zh-CN Build/JZO54K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.5.1.381 U3/0.8.0 Mobile Safari/533.1' + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart } } + readable: 'UC Browser 9.5 on Android 4.1.2' +- + headers: 'User-Agent: SonyEricssonJ10i2/R7CA Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/9.2.0.311' + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Elm } } + readable: 'UC Browser 9.2 on a Sony Ericsson Elm' +- + headers: 'User-Agent: UCWEB/2.0(Java; U; MIDP-2.0; xx; gt-s8000c) U2/1.0.0 UCBrowser/8.6.1.237 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '8.6', type: browser }, engine: { name: Gecko }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Jet } } + readable: 'UC Browser 8.6 on a Samsung Jet running Touchwiz' +- + headers: 'User-Agent: UCWEB/2.0(Java; U; MIDP-2.0; xx; samsung-gt-s8500) U2/1.0.0 UCBrowser/8.7.1.234 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'UC Browser 8.7 on a Samsung Wave running Bada' +- + headers: 'User-Agent: UCWEB/2.0(Java; U; MIDP-2.0; xx; samsung-gt-s3653) U2/1.0.0 UCBrowser/8.7.0.218 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Corby } } + readable: 'UC Browser 8.7 on a Samsung Corby running Touchwiz' +- + headers: 'User-Agent: UCWEB/2.0(Java; U; MIDP-2.0; xx; nokiac5-05) U2/1.0.0 UCBrowser/8.8.0.227 U2/1.0.0 Mobile UNTRUSTED/1.0 3gpp-gba' + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C5-05 } } + readable: 'UC Browser 8.8 on a Nokia C5-05 running Series60' +- + headers: 'User-Agent: UCWEB/2.0(Java; U; MIDP-2.0; xx; gt-s5233s) U2/1.0.0 UCBrowser/8.7.1.234 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, os: { name: Touchwiz }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Star } } + readable: 'UC Browser 8.7 on a Samsung Star running Touchwiz' +- + headers: 'User-Agent: UCWEB/2.0(Java; U; MIDP-2.0; Pt-BR; samsung-gt-s5380k) U2/1.0.0 UCBrowser/8.8.0.227 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Gecko }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'UC Browser 8.8 on a Samsung Wave Y running Bada' +- + headers: 'User-Agent: UCWEB/2.0(Java; U; MIDP-2.0; es-la; htc_touch_diamond) U2/1.0.0 UCBrowser/8.7.1.234 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond' } } + readable: 'UC Browser 8.7 on a HTC Touch Diamond running Windows Mobile' +- + headers: 'User-Agent: UCWEB/2.0(Java; U; MIDP-2.0; en-us; samsung sch-i910) U2/1.0.0 UCBrowser/8.7.1.234 U2/1.0.0 Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.7', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: sch-i910 } } + readable: 'UC Browser 8.7 on a Samsung sch-i910' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5 UCLite/11.6.3.5' + readable: 'UC Browser 11.6 on an Apple iPhone running iOS 4.3.2' + result: { browser: { name: 'UC Browser', version: '11.6', type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1; xx; Redmi 4A Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCLite/11.6.2.4 Mobile Safari/537.36' + readable: 'UC Browser 11.6 on a Xiaomi Redmi 4A running Android 6.0.1' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 40 }, version: '11.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi 4A' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 6.0; xx; Le X620 Build/HEXCNFN5902605181S) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCLite/11.6.0.2 Mobile Safari/537.36' + readable: 'UC Browser 11.6 on a LeEco Le 2 Pro X620 running Android 6.0' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 40 }, version: '11.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 Pro X620' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.4; xx; vivo X5V Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCLite/11.5.2.1 Mobile Safari/537.36' + readable: 'UC Browser 11.5 on a Vivo X5V running Android 4.4.4' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 40 }, version: '11.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Vivo, model: X5V } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 7.0; xx; SM-G9308 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCLite/11.6.4.6 Mobile Safari/537.36' + readable: 'UC Browser 11.6 on a Samsung Galaxy S7 running Android 7.0' + result: { browser: { name: 'UC Browser', family: { name: Chrome, version: 40 }, version: '11.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S7' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-webview.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-webview.yaml new file mode 100644 index 0000000..7cf09f9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/browser-webview.yaml @@ -0,0 +1,28 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SD4930UR Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.173 Mobile Safari/537.22' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Webkit, version: '537.22' }, os: { name: FireOS, family: Android, version: '3' }, device: { type: mobile, subtype: smart, manufacturer: Amazon, model: 'Fire Phone' } } + readable: 'Amazon WebView on an Amazon Fire Phone running FireOS 3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; ZTE 975 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.14 Mobile Crosswalk/3.32.53.0 Mobile Safari/537.36' + result: { browser: { using: { name: 'Crosswalk WebView', version: '3' } }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: Geek } } + readable: 'Crosswalk WebView 3 on a ZTE Geek running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; KFARWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Mobile Safari/537.36 cordova-amazon-fireos/3.4.0 AmazonWebAppPlatform/3;0' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 6 (2014)' } } + readable: 'Amazon WebView on an Amazon Fire HD 6 (2014) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SD4930UR Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Mobile Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: Amazon, model: 'Fire Phone' } } + readable: 'Amazon WebView on an Amazon Fire Phone running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4; Nexus 5 Build/_BuildID_) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' + result: { browser: { using: { name: 'Chromium WebView', version: '30' } }, engine: { name: Blink }, os: { name: Android, version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } + readable: 'Chromium WebView 30 on a LG Nexus 5 running Android 4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFTBWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.51020.2250.0238 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 10 (2015)' } } + readable: 'Amazon WebView on an Amazon Fire HD 10 (2015) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.65 Mobile Safari/537.36' + result: { browser: { using: { name: 'Chromium WebView', version: '43' } }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } + readable: 'Chromium WebView 43 on a LG Nexus 5 running Android 5.1.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-docomo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-docomo.yaml new file mode 100644 index 0000000..3cb0f71 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-docomo.yaml @@ -0,0 +1,140 @@ +- + headers: 'User-Agent: DoCoMo/1.0/D505i/c20/TB/W20H10' + result: { device: { type: mobile, subtype: feature, manufacturer: Mitsubishi, model: D505i, carrier: DoCoMo } } + readable: 'a Mitsubishi D505i' +- + headers: 'User-Agent: DoCoMo/1.0/F671is/c1' + result: { device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F671is, carrier: DoCoMo } } + readable: 'a Fujitsu F671is' +- + headers: 'User-Agent: DoCoMo/2.0 F03B(c500;TB;W24H16)' + result: { device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F03B, carrier: DoCoMo } } + readable: 'a Fujitsu F03B' +- + headers: 'User-Agent: DoCoMo/2.0 F04A(c100;TB;W24H17;ser353709020370762; icc8981100020732495171f)(c100;TB;W24H12)' + result: { device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F04A, carrier: DoCoMo } } + readable: 'a Fujitsu F04A' +- + headers: 'User-Agent: DoCoMo/2.0 F09C(c500;TB;W24H16)' + result: { device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F09C, carrier: DoCoMo } } + readable: 'a Fujitsu F09C' +- + headers: 'User-Agent: DoCoMo/2.0 N02C(c500;TB;W24H16)' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N02C, carrier: DoCoMo } } + readable: 'a NEC N02C' +- + headers: 'User-Agent: DoCoMo/2.0 N09A3(c500;TB;W30H20)' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N09A3, carrier: DoCoMo } } + readable: 'a NEC N09A3' +- + headers: 'User-Agent: DoCoMo/2.0 N905i(c100;TB;W24H16;ser28028f0a26884cc;icc123428028f0a26884cc1)' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N905i, carrier: DoCoMo } } + readable: 'a NEC N905i' +- + headers: 'User-Agent: DoCoMo/2.0 SH06B(c500;TB;W20H13)' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH06B, carrier: DoCoMo } } + readable: 'a Sharp SH06B' +- + headers: 'User-Agent: DoCoMo/2.0 SH07F(c500;TB;W24H16)' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH07F, carrier: DoCoMo } } + readable: 'a Sharp SH07F' +- + headers: 'User-Agent: DoCoMo/2.0 SH901iC(c100;TB;W24H12)' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH901iC, carrier: DoCoMo } } + readable: 'a Sharp SH901iC' +- + headers: 'User-Agent: DoCoMo/3.0/X503i/c10/serNMAIA000001' + result: { device: { type: mobile, subtype: feature, model: X503i, carrier: DoCoMo } } + readable: 'a X503i' +- + headers: 'User-Agent: DoCoMo/3.0 N903i' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N903i, carrier: DoCoMo } } + readable: 'a NEC N903i' +- + headers: 'User-Agent: DoCoMo/2.0/SO502i' + result: { device: { type: mobile, subtype: feature, manufacturer: Sony, model: SO502i, carrier: DoCoMo } } + readable: 'a Sony SO502i' +- + headers: 'User-Agent: DoCoMo/2.0 N2102V(c100;TB)' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N2102V, carrier: DoCoMo } } + readable: 'a NEC N2102V' +- + headers: 'User-Agent: DoCoMo/2.0 N2002(c100)' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N2002, carrier: DoCoMo } } + readable: 'a NEC N2002' +- + headers: 'User-Agent: DoCoMo/2.0 N2701(c100;TB)' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N2701, carrier: DoCoMo } } + readable: 'a NEC N2701' +- + headers: 'User-Agent: Docomo/2.0 P2002(c100)' + result: { device: { type: mobile, subtype: feature, model: P2002, carrier: DoCoMo } } + readable: 'a P2002' +- + headers: 'User-Agent: DoCoMo/2.0 P2101V(c100)' + result: { device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: P2101V, carrier: DoCoMo } } + readable: 'a Panasonic P2101V' +- + headers: 'User-Agent: DoCoMo/2.0 T2101V(c100)' + result: { device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: T2101V, carrier: DoCoMo } } + readable: 'a Toshiba T2101V' +- + headers: 'User-Agent: DoCoMo/2.0/N2002/' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N2002, carrier: DoCoMo } } + readable: 'a NEC N2002' +- + headers: 'User-Agent: DoCoMo/2.0\xe3\x80\x80MST_v_SH2101V(c100)' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH2101V, carrier: DoCoMo } } + readable: 'a Sharp SH2101V' +- + headers: 'User-Agent: DoCoMo/2.0\xe3\x80\x80P2101V\xef\xbc\x88c100\xef\xbc\x89' + result: { device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: P2101V, carrier: DoCoMo } } + readable: 'a Panasonic P2101V' +- + headers: 'User-Agent: DoCoMo\xe2\x81\x842.0 P901i(c100;TB;W30H15)' + result: { device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: P901i, carrier: DoCoMo } } + readable: 'a Panasonic P901i' +- + headers: 'User-Agent: F2051 DoCoMo/2.0 F2051(c100;TB)' + result: { device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F2051, carrier: DoCoMo } } + readable: 'a Fujitsu F2051' +- + headers: 'User-Agent: Mozilla/5.0 (NTTDoCoMo SH900i) Scope/3.0 Venus/0326.1' + result: { browser: { name: Scope, version: '3.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH900i, carrier: DoCoMo } } + readable: 'Scope 3.0 on a Sharp SH900i' +- + headers: 'User-Agent: Mozilla/5.0 (N04A;FOMA;like Gecko)' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N04A, carrier: DoCoMo } } + readable: 'a NEC N04A' +- + headers: 'User-Agent: Mozilla/4.08 (SH705i2;FOMA;c300;TB)' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH705i, carrier: DoCoMo } } + readable: 'a Sharp SH705i' +- + headers: 'User-Agent: Opera/3.1 (FOMA M1000; U; FOMA; ja-JP; rv:1.1.2) Opera/20050207 Opera/3.11' + result: { browser: { name: 'Opera Mobile', version: '3.1', type: browser }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: M1000, carrier: DoCoMo } } + readable: 'Opera Mobile 3.1 on a Motorola M1000 running UIQ' +- + headers: 'User-Agent: Mozilla/5.0 (SH06A3;FOMA;like Gecko)' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH06A3, carrier: DoCoMo } } + readable: 'a Sharp SH06A3' +- + headers: 'User-Agent: DoCoMo/1.0/R209i' + result: { device: { type: mobile, subtype: feature, manufacturer: JRC, model: R209i, carrier: DoCoMo } } + readable: 'a JRC R209i' +- + headers: 'User-Agent: DoCoMo/1.0/KO210i' + result: { device: { type: mobile, subtype: feature, manufacturer: Kokusai, model: KO210i, carrier: DoCoMo } } + readable: 'a Kokusai KO210i' +- + headers: 'User-Agent: DoCoMo/2.0 F04B' + result: { device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F04B, carrier: DoCoMo } } + readable: 'a Fujitsu F04B' +- + headers: 'User-Agent: DoCoMo/2.0 F02C (c500; TB; W24H16)' + result: { device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F02C, carrier: DoCoMo } } + readable: 'a Fujitsu F02C' +- + headers: 'User-Agent: DoCoMo/2.0 F09A3' + result: { device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F09A3, carrier: DoCoMo } } + readable: 'a Fujitsu F09A3' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-emobile.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-emobile.yaml new file mode 100644 index 0000000..6c0200c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-emobile.yaml @@ -0,0 +1,44 @@ +- + headers: 'User-Agent: Huawei/1.0/H12HW/B000 Browser/Obigo-Browser/Q04A' + result: { browser: { name: 'Obigo Q', version: { value: '4', alias: 4A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: H12HW, carrier: EMOBILE } } + readable: 'Obigo Q 4A on a Huawei H12HW' +- + headers: 'User-Agent: Huawei/1.0/H11HW/B000 Browser/Obigo-Browser/Q04A' + result: { browser: { name: 'Obigo Q', version: { value: '4', alias: 4A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: H11HW, carrier: EMOBILE } } + readable: 'Obigo Q 4A on a Huawei H11HW' +- + headers: 'User-Agent: IAC/1.0 (H31IA;like Gecko;OpenBrowser) WWW Browser/ver1.0' + result: { browser: { name: 'EMOBILE Browser', version: '1.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Inventec, model: H31IA, carrier: EMOBILE } } + readable: 'EMOBILE Browser 1.0 on an Inventec H31IA' +- + headers: 'User-Agent: Mozilla/5.0 (H11T; like Gecko; OpenBrowser) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: H11T, carrier: EMOBILE } } + readable: 'NetFront 3.4 on a Toshiba H11T' +- + headers: 'User-Agent: emobile/1.0.0 (H11T; like Gecko; Wireless) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: H11T, carrier: EMOBILE } } + readable: 'NetFront 3.4 on a Toshiba H11T' +- + headers: 'User-Agent: emobile/1.0.0 (H11T; Profile/MIDP-2.0 Configuration/CLDC-1.1 Local/ja UNTRUSTED/1.0)' + result: { device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: H11T, carrier: EMOBILE } } + readable: 'a Toshiba H11T' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7) S11HT' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: EMONSTER S11HT, carrier: EMOBILE } } + readable: 'Mobile Internet Explorer 6.0 on a HTC EMONSTER S11HT running Windows Mobile 6.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7) S12HT' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EMONSTER lite S12HT', carrier: EMOBILE } } + readable: 'Mobile Internet Explorer 6.0 on a HTC EMONSTER lite S12HT running Windows Mobile 6.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) S21HT' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond S21HT', carrier: EMOBILE } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Diamond S21HT running Windows Mobile 6.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) S22HT' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Dual Diamond S22HT', carrier: EMOBILE } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Dual Diamond S22HT running Windows Mobile 6.1' +- + headers: 'User-Agent: Opera/9.5 (Microsoft Windows; PPC; Opera Mobi; U; ja) S21HT' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: S21HT, carrier: EMOBILE } } + readable: 'Opera Mobile 9.5 on a HTC S21HT running Windows Mobile' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-kddi.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-kddi.yaml new file mode 100644 index 0000000..1a31d58 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-kddi.yaml @@ -0,0 +1,92 @@ +- + headers: 'User-Agent: KDDI-CA39 UP.Browser/6.2.0.13.1.5 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: W53CA, carrier: au } } + readable: 'Openwave 6.2 on a Casio W53CA' +- + headers: 'User-Agent: KDDI-SH3F UP.Browser/6.2_7.2.7.1.K.4.304 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH005, carrier: au } } + readable: 'Openwave 6.2 on a Sharp SH005' +- + headers: 'User-Agent: KDDI-SH3F UP.Browser/6.2_7.2.7.1.K.4.304 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: SH005, carrier: au } } + readable: 'Openwave 6.2 on a Sharp SH005' +- + headers: 'User-Agent: KDDI-SN3I UP.Browser/6.2_7.2.7.1.K.2.123 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Premier3 SOY01, carrier: au } } + readable: 'Openwave 6.2 on a Sony Ericsson Premier3 SOY01' +- + headers: 'User-Agent: KDDI-SN3K UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: iida, model: G9, carrier: au } } + readable: 'Openwave 6.2 on an iida G9' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; KDDI-TS3B) Opera 8.60 [ja]' + result: { browser: { name: 'Opera Mobile', version: '8.60', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: W51T, carrier: au } } + readable: 'Opera Mobile 8.60 on a Toshiba W51T' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; KDDI-TS3J) Opera 8.60 [ja]' + result: { browser: { name: 'Opera Mobile', version: '8.60', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: W62T, carrier: au } } + readable: 'Opera Mobile 8.60 on a Toshiba W62T' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; KDDI-SN3A) Opera 8.60 [ja]' + result: { browser: { name: 'Opera Mobile', version: '8.60', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: W52S, carrier: au } } + readable: 'Opera Mobile 8.60 on a Sony Ericsson W52S' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; KDDI-SH34) Opera 8.60 [ja]' + result: { browser: { name: 'Opera Mobile', version: '8.60', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: W61SH, carrier: au } } + readable: 'Opera Mobile 8.60 on a Sharp W61SH' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; KDDI-MA33) Opera 8.60 [en]' + result: { browser: { name: 'Opera Mobile', version: '8.60', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: W61P, carrier: au } } + readable: 'Opera Mobile 8.60 on a Panasonic W61P' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; KDDI-CA3B) Opera 8.60 [ja]' + result: { browser: { name: 'Opera Mobile', version: '8.60', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: W62CA, carrier: au } } + readable: 'Opera Mobile 8.60 on a Casio W62CA' +- + headers: 'User-Agent: KDDI-W41SA UP.Browser/6.2.0.7.3.129' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: W41SA, carrier: au } } + readable: 'Openwave 6.2 on a Sanyo W41SA' +- + headers: 'User-Agent: KDDI-W31K UP.Browser/6.2.0.5 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: W31K, carrier: au } } + readable: 'Openwave 6.2 on a Kyocera W31K' +- + headers: 'User-Agent: KDDI-TS3Y UP.Browser/6.2_7.2.7.1.K.7.113 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: T008, carrier: au } } + readable: 'Openwave 6.2 on a Toshiba T008' +- + headers: 'User-Agent: KDDI-CA26 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: A5407CA, carrier: au } } + readable: 'Openwave 6.2 on a Casio A5407CA' +- + headers: 'User-Agent: KDDI-CA23 UP.Browser/5.2.0.1.126 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '5.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: A5401CA, carrier: au } } + readable: 'Openwave 5.2 on a Casio A5401CA' +- + headers: 'User-Agent: KDDI-W61CA UP.Browser/6.2.0.5 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: W61CA, carrier: au } } + readable: 'Openwave 6.2 on a Casio W61CA' +- + headers: 'User-Agent: KDDI-W54T UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: W54T, carrier: au } } + readable: 'Openwave 6.2 on a Toshiba W54T' +- + headers: 'User-Agent: KDDI-W53S UP.Browser' + result: { browser: { name: Openwave, type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: W53S, carrier: au } } + readable: 'Openwave on a Sony Ericsson W53S' +- + headers: 'User-Agent: KDDI-W41SA UP.Browser/6.2.0.7.3.129' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: W41SA, carrier: au } } + readable: 'Openwave 6.2 on a Sanyo W41SA' +- + headers: 'User-Agent: KDDI-W32S UP.Browser/6.2.0.5(GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: W32S, carrier: au } } + readable: 'Openwave 6.2 on a Sony Ericsson W32S' +- + headers: 'User-Agent: KDDI-W11H UP.Browser/6.2.0.5 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Hitachi, model: W11H, carrier: au } } + readable: 'Openwave 6.2 on a Hitachi W11H' +- + headers: 'User-Agent: KDDI-SN39' + result: { device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: W51S, carrier: au } } + readable: 'a Sony Ericsson W51S' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-softbank.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-softbank.yaml new file mode 100644 index 0000000..f60b5bb --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-softbank.yaml @@ -0,0 +1,124 @@ +- + headers: 'User-Agent: J-PHONE/3.0/J-SH10' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: J-SH10, carrier: Softbank } } + readable: 'a Sharp J-SH10' +- + headers: 'User-Agent: J-PHONE/4.3/V604SH/SNJSHQ2099925 SH/0009aa Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.3.2' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V604SH, carrier: Softbank } } + readable: 'a Sharp V604SH' +- + headers: 'User-Agent: J-PHONE/4.3/V603SH/SNJSHM3102091 SH/0007aa Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.3.2' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V603SH, carrier: Softbank } } + readable: 'a Sharp V603SH' +- + headers: 'User-Agent: J-PHONE/5.0/V801SA/SN123456789012345 SA/0001JP Profile/MIDP-1.0 Configuration/CLDC-1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: V801SA, carrier: Softbank } } + readable: 'a Sanyo V801SA' +- + headers: 'User-Agent: J-PHONE/4.2/V601SH/SNJSHH1226872 SH/0004aa Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.2.1' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V601SH, carrier: Softbank } } + readable: 'a Sharp V601SH' +- + headers: 'User-Agent: J-PHONE/4.1/J-SA51_a/SNJSAA1000513 SA/0001JP Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.1' + result: { device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: J-SA51, carrier: Softbank } } + readable: 'a Sanyo J-SA51' +- + headers: 'User-Agent: J-PHONE/3.0/V301T' + result: { device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: V301T, carrier: Softbank } } + readable: 'a Toshiba V301T' +- + headers: 'User-Agent: J-PHONE/3.0/J-SH05' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: J-SH05, carrier: Softbank } } + readable: 'a Sharp J-SH05' +- + headers: 'User-Agent: J-PHONE/2.0/J-P03' + result: { device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: J-P03, carrier: Softbank } } + readable: 'a Panasonic J-P03' +- + headers: 'User-Agent: J-PHONE/5.0/V801SH/SN000000000 SH/0005aa Profile /MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V801SH, carrier: Softbank } } + readable: 'a Sharp V801SH' +- + headers: 'User-Agent: SoftBank/1.0/103P/PJP10/SN352788051966244 Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: 103P, carrier: Softbank } } + readable: 'NetFront 3.4 on a Panasonic 103P' +- + headers: 'User-Agent: SoftBank/1.0/708SC/SCJ001/SN543210987654321 Browser/NetFront/3.3' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 708SC, carrier: Softbank } } + readable: 'NetFront 3.3 on a Samsung 708SC' +- + headers: 'User-Agent: SoftBank/1.0/932SH/SHJ003/SN353700022260911 Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 932SH, carrier: Softbank } } + readable: 'NetFront 3.5 on a Sharp 932SH' +- + headers: 'User-Agent: SoftBank/1.0/910T/TJ001/SN Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: 910T, carrier: Softbank } } + readable: 'NetFront 3.3 on a Toshiba 910T' +- + headers: 'User-Agent: SoftBank/1.0/911SH/SHJ001/SN353678010678288 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 911SH, carrier: Softbank } } + readable: 'NetFront 3.3 on a Sharp 911SH' +- + headers: 'User-Agent: Vodafone/1.0/V804SH/SHJ001/SN0000000000000 Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.3.2 Ext-V-Profile/VSCL-2.0.0' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V804SH, carrier: Softbank } } + readable: 'Openwave 7.0 on a Sharp V804SH' +- + headers: 'User-Agent: Vodafone/1.0/V905SH/SHJ001 Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: V905SH, carrier: Softbank } } + readable: 'NetFront 3.3 on a Sharp V905SH' +- + headers: 'User-Agent: Mozilla/4.08 (811SH;SoftBank;SN359798003583289) NetFront/3.3' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 811SH, carrier: Softbank } } + readable: 'NetFront 3.3 on a Sharp 811SH' +- + headers: 'User-Agent: Mozilla/4.08 (815SH;SoftBank) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 815SH, carrier: Softbank } } + readable: 'NetFront 3.4 on a Sharp 815SH' +- + headers: 'User-Agent: Mozilla/4.08 (830CA;SoftBank;SN353718020756383) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: 830CA, carrier: Softbank } } + readable: 'NetFront 3.4 on a Casio 830CA' +- + headers: 'User-Agent: Mozilla/4.08 (840Pe;SoftBank;SN359013030797930) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: 840Pe, carrier: Softbank } } + readable: 'NetFront 3.4 on a Panasonic 840Pe' +- + headers: 'User-Agent: Mozilla/4.08 (940P;SoftBank;SN353165030880706) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: 940P, carrier: Softbank } } + readable: 'NetFront 3.4 on a Panasonic 940P' +- + headers: 'User-Agent: Mozilla/5.0 (202SHe;SoftBank;SN353468050706037) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 202SHe, carrier: Softbank } } + readable: 'NetFront 3.5 on a Sharp 202SHe' +- + headers: 'User-Agent: Mozilla/5.0 (004SH;SoftBank;SN353021044176351) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 004SH, carrier: Softbank } } + readable: 'NetFront 3.5 on a Sharp 004SH' +- + headers: 'User-Agent: Mozilla/5.0 (831SHs;SoftBank;SN359401026027380) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 831SHs, carrier: Softbank } } + readable: 'NetFront 3.5 on a Sharp 831SHs' +- + headers: 'User-Agent: Mozilla/5.0 (841SH;SoftBank;SN359305032972549) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 841SH, carrier: Softbank } } + readable: 'NetFront 3.5 on a Sharp 841SH' +- + headers: 'User-Agent: Mozilla/5.0 (945SH;SoftBank;SN359323030706330) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 945SH, carrier: Softbank } } + readable: 'NetFront 3.5 on a Sharp 945SH' +- + headers: 'User-Agent: SoftBank/1.0/813SHe/SHJ002 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 813SH, carrier: Softbank } } + readable: 'NetFront 3.3 on a Sharp 813SH' +- + headers: 'User-Agent: SoftBank/1.0/812SHs/SHJ001/SN353688015624831 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 812SH, carrier: Softbank } } + readable: 'NetFront 3.3 on a Sharp 812SH' +- + headers: 'User-Agent: SoftBank/1.0/830SHp/SHJ001/SN359424020396056 Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sharp, model: 830SH, carrier: Softbank } } + readable: 'NetFront 3.4 on a Sharp 830SH' +- + headers: 'User-Agent: Vodafone/1.0/0vodafone810/B626 Browser/Obigo-browser/Q05A MMS/Obigo-MMS/Q05A SyncML/HW-SyncML/1.0 Java/HWJA/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'Obigo Q 5A on a Vodafone 810' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: '810' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-willcom.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-willcom.yaml new file mode 100644 index 0000000..a2283c6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/carrier-willcom.yaml @@ -0,0 +1,72 @@ +- + headers: 'User-Agent: Mozilla/3.0(DDIPOCKET;KYOCERA/AH-K3001V/1.4.1.67.000000/0.1/C100) Opera 7.0' + result: { browser: { name: 'Opera Mobile', version: '7.0', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: AH-K3001V, carrier: Willcom } } + readable: 'Opera Mobile 7.0 on a Kyocera AH-K3001V' +- + headers: 'User-Agent: Mozilla/3.0(DDIPOCKET;KYOCERA/AH-K3001V/1.4.1.67.000000/0.1/C100) Opera 7.0' + result: { browser: { name: 'Opera Mobile', version: '7.0', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: AH-K3001V, carrier: Willcom } } + readable: 'Opera Mobile 7.0 on a Kyocera AH-K3001V' +- + headers: 'User-Agent: Mozilla/3.0 (DDIPOCKET;JRC/AH-J3001V,AH-J3002V/1.0/0100/c50) CNF/2.0' + result: { browser: { name: 'Compact NetFront', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: JRC, model: AH-J3001V, carrier: Willcom } } + readable: 'Compact NetFront 2.0 on a JRC AH-J3001V' +- + headers: 'User-Agent: Mozilla/5.0 (MobilePhone; NMCS/3.4; like Gecko/20060901;KYOCERA/WX340K/2;3.0.3.11.000000/1) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: WX340K, carrier: Willcom } } + readable: 'NetFront 3.4 on a Kyocera WX340K' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; KYOCERA/WX320K/2;1.0.7.14.000000/0.1) Opera 7.0 [ja]' + result: { browser: { name: 'Opera Mobile', version: '7.0', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: WX320K, carrier: Willcom } } + readable: 'Opera Mobile 7.0 on a Kyocera WX320K' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; KYOCERA/AH-K3001V/1.7.2.70.000000/0.1) Opera 7.0 [ja]' + result: { browser: { name: 'Opera Mobile', version: '7.0', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: AH-K3001V, carrier: Willcom } } + readable: 'Opera Mobile 7.0 on a Kyocera AH-K3001V' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;KYOCERA/WX331K/2;1.0.8.13.000000/0.1/C100) Opera 7.2 EX' + result: { browser: { name: 'Opera Mobile', version: '7.2', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: WX331K, carrier: Willcom } } + readable: 'Opera Mobile 7.2 on a Kyocera WX331K' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;KYOCERA/WX331K/2;1.0.8.13.000000/0.1/C100) Opera 7.2 EX' + result: { browser: { name: 'Opera Mobile', version: '7.2', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: WX331K, carrier: Willcom } } + readable: 'Opera Mobile 7.2 on a Kyocera WX331K' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;KYOCERA/WX331K/2;1.0.8.13.000000/0.1/C100) Opera 7.2 EX' + result: { browser: { name: 'Opera Mobile', version: '7.2', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: WX331K, carrier: Willcom } } + readable: 'Opera Mobile 7.2 on a Kyocera WX331K' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;SANYO/WX310SA/2;1/1/C128) NetFront/3.3' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: WX310SA, carrier: Willcom } } + readable: 'NetFront 3.3 on a Sanyo WX310SA' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;SANYO/WX310SA/2;1/1/C128) NetFront/3.3' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: WX310SA, carrier: Willcom } } + readable: 'NetFront 3.3 on a Sanyo WX310SA' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;TOSHIBA/WX320T/2;1/1/C128) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: WX320T, carrier: Willcom } } + readable: 'NetFront 3.4 on a Toshiba WX320T' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;KES/WS009KE/2;0001;6/1/C128) NetFront/3.3' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: KES, model: WS009KE, carrier: Willcom } } + readable: 'NetFront 3.3 on a KES WS009KE' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;KES/WS018KE/2;0001;2/1/C128) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: KES, model: WS018KE, carrier: Willcom } } + readable: 'NetFront 3.4 on a KES WS018KE' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;KYOCERA/WX01K/2;1.0.11.14.000000/1/C256) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: WX01K, carrier: Willcom } } + readable: 'NetFront 3.4 on a Kyocera WX01K' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;KYOCERA/WX02K/2;1.0.0.7.000000/1/C256) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: WX02K, carrier: Willcom } } + readable: 'NetFront 3.4 on a Kyocera WX02K' +- + headers: 'User-Agent: Mozilla/3.0(WILLCOM;TOSHIBA/WS023T/2;0001;4/1/C128) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: WS023T, carrier: Willcom } } + readable: 'NetFront 3.4 on a Toshiba WS023T' +- + headers: 'User-Agent: Mozilla/3.0 (WILLCOM;KYOCERA/W320K/2;1.0.7.14.000000/0.1/C100) Opera/7.0' + result: { browser: { name: 'Opera Mobile', version: '7.0', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: W320K, carrier: Willcom } } + readable: 'Opera Mobile 7.0 on a Kyocera W320K' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/device-kin.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/device-kin.yaml new file mode 100644 index 0000000..877934e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/device-kin.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12; en-US; KIN.One 1.0)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Kin OS', version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Kin ONE' } } + readable: 'Mobile Internet Explorer 6.0 on a Microsoft Kin ONE running Kin OS 1.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12; en-US; KIN.Two 1.0)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Kin OS', version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Kin TWO' } } + readable: 'Mobile Internet Explorer 6.0 on a Microsoft Kin TWO running Kin OS 1.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/device-nokiax.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/device-nokiax.yaml new file mode 100644 index 0000000..e73e778 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/device-nokiax.yaml @@ -0,0 +1,72 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_X Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.87.90 Mobile Safari/537.36 NokiaBrowser/1.0' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 27 }, version: '1.0', type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X } } + readable: 'Nokia Browser 1.0 on a Nokia X running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_X Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.1.0.941' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.1.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X } } + readable: 'Nokia Browser 1.1.0 on a Nokia X running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_X Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.2.0.11' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.2.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X } } + readable: 'Nokia Browser 1.2.0 on a Nokia X running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_X Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.2.0.12' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.2.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X } } + readable: 'Nokia Browser 1.2.0 on a Nokia X running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_X Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.3.0' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.3.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X } } + readable: 'Nokia Browser 1.3.0 on a Nokia X running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_X Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Mobile Safari/537.36 OPR/18.0.1290.68007' + result: { browser: { name: 'Opera Mobile', family: { name: Chrome, version: 31 }, version: '18.0', type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X } } + readable: 'Opera Mobile 18.0 on a Nokia X running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_XL Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.87.90 Mobile Safari/537.36 NokiaBrowser/1.0' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 27 }, version: '1.0', type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: XL } } + readable: 'Nokia Browser 1.0 on a Nokia XL running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_XL Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.0.1.45' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.0.1, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: XL } } + readable: 'Nokia Browser 1.0.1 on a Nokia XL running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_XL Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.0.1.54' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.0.1, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: XL } } + readable: 'Nokia Browser 1.0.1 on a Nokia XL running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_XL Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.0.1.56' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.0.1, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: XL } } + readable: 'Nokia Browser 1.0.1 on a Nokia XL running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_XL Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.1.0.941' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.1.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: XL } } + readable: 'Nokia Browser 1.1.0 on a Nokia XL running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_XL Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.2.0.11' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.2.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: XL } } + readable: 'Nokia Browser 1.2.0 on a Nokia XL running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_XL Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.2.0.12' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.2.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: XL } } + readable: 'Nokia Browser 1.2.0 on a Nokia XL running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_XL Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Mobile Safari/537.36 OPR/19.0.1340.71596' + result: { browser: { name: 'Opera Mobile', family: { name: Chrome, version: 32 }, version: '19.0', type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: XL } } + readable: 'Opera Mobile 19.0 on a Nokia XL running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_Xplus Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.2.0.11' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.2.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X+ } } + readable: 'Nokia Browser 1.2.0 on a Nokia X+ running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Nokia_Xplus Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36 OPR/22.0.1485.78487' + result: { browser: { name: 'Opera Mobile', family: { name: Chrome, version: 35 }, version: '22.0', type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X+ } } + readable: 'Opera Mobile 22.0 on a Nokia X+ running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; NokiaX2DS Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36 NokiaBrowser/1.2.0.11' + result: { browser: { name: 'Nokia Browser', family: { name: Chrome, version: 30 }, version: 1.2.0, type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X2 } } + readable: 'Nokia Browser 1.2.0 on a Nokia X2 running Nokia X Platform' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; NokiaX2DS Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Mobile Safari/537.36 OPR/21.0.1437.75439' + result: { browser: { name: 'Opera Mobile', family: { name: Chrome, version: 34 }, version: '21.0', type: browser }, engine: { name: Blink }, os: { name: 'Nokia X Platform', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X2 } } + readable: 'Opera Mobile 21.0 on a Nokia X2 running Nokia X Platform' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/engine-servo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/engine-servo.yaml new file mode 100644 index 0000000..405aac9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/engine-servo.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Android; Mobile; rv:37.0) Servo/1.0 Firefox/37.0' + result: { browser: { name: 'Servo Nightly Build', type: browser }, engine: { name: Servo, version: '1.0' }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Servo Nightly Build on Android' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:37.0) Servo/1.0 Firefox/37.0' + result: { browser: { name: 'Servo Nightly Build', type: browser }, engine: { name: Servo, version: '1.0' }, os: { name: 'Firefox OS' }, device: { type: mobile, subtype: smart } } + readable: 'Servo Nightly Build on Firefox OS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/header-requestedwith.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/header-requestedwith.yaml new file mode 100644 index 0000000..446debf --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/header-requestedwith.yaml @@ -0,0 +1,48 @@ +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; Android 4.1.2; LG-F160L Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.23 Mobile Safari/537.36', X-Requested-With: this.is.a.fake.id.to.test.unknown.ids } + result: { browser: { using: { name: 'Chromium WebView', version: '32' } }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus LTE II' } } + readable: 'Chromium WebView 32 on a LG Optimus LTE II running Android 4.1.2' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 5 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36', X-Requested-With: me.android.browser } + result: { browser: { using: { name: 'Chromium WebView', version: '30' } }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } + readable: 'Chromium WebView 30 on a LG Nexus 5 running Android 4.4.2' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36', X-Requested-With: com.android.browser } + result: { browser: { using: { name: 'Chromium WebView', version: '30' } }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5' } } + readable: 'Chromium WebView 30 on a Samsung Galaxy S5 running Android 4.4.2' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; Android 4.4.2; XT1021 Build/KXC20.82-13) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MxBrowser/4.3.0.2000 Maxthon/4.3.0.2000 Maxthon/4.3.0.2000', X-Requested-With: com.mx.browser } + result: { browser: { name: Maxthon, using: { name: 'Chromium WebView', version: '30' }, version: 4.3.0.2000, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto E' } } + readable: 'Maxthon 4.3.0.2000 on a Motorola Moto E running Android 4.4.2' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; Android 4.4.4; GT-I9100 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36', X-Requested-With: mobi.mgeek.TunnyBrowser } + result: { browser: { name: Dolphin, using: { name: 'Chromium WebView', version: '33' } }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Dolphin on a Samsung Galaxy S II running Android 4.4.4' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; Android 4.4.4; MI 2 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 MicroMessenger/5.4.0.51_r798589.480 NetType/WIFI', X-Requested-With: com.tencent.mm } + result: { browser: { name: WeChat, using: { name: 'Chromium WebView', version: '33' }, version: 5.4.0.51, type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2' } } + readable: 'WeChat 5.4.0.51 on a Xiaomi Mi 2 running Android 4.4.4' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; Android 5.0; ASUS_T00J Build/LRX21V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36', X-Requested-With: com.asus.browser } + result: { browser: { name: 'Asus Browser', using: { name: 'Chromium WebView', version: '37' } }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Asus, model: 'ZenFone 5 (A501CG)' } } + readable: 'Asus Browser on an Asus ZenFone 5 (A501CG) running Android 5.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-CN; MI 2S Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 UCBrowser/10.4.0.558 U3/0.8.0 Mobile Safari/537.36', X-Requested-With: com.UCMobile.lab } + result: { browser: { name: 'UC Browser', version: '10.4', type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2S' } } + readable: 'UC Browser 10.4 on a Xiaomi Mi 2S running Android 4.1.1' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.1.1; zh-CN; MI 2SC Build/JRO03L) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Oupeng/9.2.1.73039 Mobile Safari/534.30 (securitypay,securityinstalled)', X-Requested-With: com.oupeng.browser } + result: { browser: { name: 'Oupeng Browser', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2S' } } + readable: 'Oupeng Browser on a Xiaomi Mi 2S running Android 4.1.1' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; Lenovo TAB S8-50F/BMAIN) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.4.2 Mobile Safari/534.30', X-Requested-With: com.lenovo.browser } + result: { browser: { name: 'Lenovo Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Lenovo, model: 'Tab S8' } } + readable: 'Lenovo Browser on a Lenovo Tab S8 running Android 4.4.2' +- + headers: { User-Agent: 'iSurf version /v1.0', X-Requested-With: derek.iSurf } + result: { browser: { name: iSurf, version: '1.0', type: browser }, engine: { name: Webkit }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'iSurf 1.0 on Android' +- + headers: { User-Agent: no-ua, X-Requested-With: com.mx.browser } + result: { browser: { name: Maxthon }, engine: { name: Webkit }, os: { name: Android }, device: { type: mobile, subtype: smart } } + readable: 'Maxthon on Android' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/header-wap.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/header-wap.yaml new file mode 100644 index 0000000..04d1ab2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/header-wap.yaml @@ -0,0 +1,72 @@ +- + headers: 'X-Wap-Profile: http://wap.samsungmobile.com/uaprof/GT-I9100.xml' + result: { browser: { name: 'Android Browser' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Android Browser on a Samsung Galaxy S II running Android' +- + headers: 'X-Wap-Profile: http://whichbrowser.net/fake/wap/profile/to/test/unknowns.xml' + result: { } + readable: 'an unknown browser' +- + headers: { User-Agent: 'Alcatel_A205G-B/1.0 ObigoInternetBrowser/Q05A[TF014404009534395004115512532586563]', X-Wap-Profile: 'http://www-ccpp.tcl-ta.com/files/Alcatel_A205G-B.rdf' } + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: A205G-B } } + readable: 'Obigo Q 5A on an Alcatel A205G-B' +- + headers: { User-Agent: 'LG-KP500 Teleca/WAP2.0 MIDP-2.0/CLDC-1.1', X-Wap-Profile: 'http://gsm.lge.com/html/gsm/LG-KP500.xml' } + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'KP500 Cookie' } } + readable: 'Obigo WAP 2.0 on a LG KP500 Cookie' +- + headers: { User-Agent: 'MOT-EX116 Obigo/WAP2.0 MIDP-2.0/CLDC-1.1', X-Wap-Profile: 'http://uaprof.motorola.com/phoneconfig/ex116/Profile/ex116.rdf' } + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: EX116 } } + readable: 'Obigo WAP 2.0 on a Motorola EX116' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile6.0) Sprint T7380', X-Wap-Profile: 'http://device.sprintpcs.com/HTC/PPCT7380SP/2046514.rdf' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Pro 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Pro 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/5.0 (LG-C195 AppleWebkit/531 Browser/Phantom/V2.0 Widget/LGMW/3.0 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)', X-Wap-Profile: 'http://gsm.lge.com/html/gsm/LG-C195-M3-D1.xml' } + result: { browser: { name: Phantom, version: '2.0', type: browser }, engine: { name: Webkit, version: '531' }, device: { type: mobile, subtype: feature, manufacturer: LG, model: C195 } } + readable: 'Phantom 2.0 on a LG C195' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-N9005 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36', X-Wap-Profile: 'http://wap.samsungmobile.com/uaprof/SM-N9005.xml' } + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Note 3 running Android 4.4.2' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.0.3; xx; A500 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30', X-Wap-Profile: 'http://support.acer.com/UAprofile/Acer_A500_IML74K_Profile.xml' } + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Acer, model: 'Iconia Tab A500' } } + readable: 'Android Browser on an Acer Iconia Tab A500 running Android 4.0.3' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.0.4; xx; SonyST23i Build/11.0.A.5.8) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-Wap-Profile: 'http://uaprof.sonymobile.com/ST23iR402.xml' } + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Miro' } } + readable: 'Android Browser on a Sony Xperia Miro running Android 4.0.4' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.1.2; xx; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-Wap-Profile: '"http://wap.samsungmobile.com/uaprof/GT-I9100.xml"' } + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Android Browser on a Samsung Galaxy S II running Android 4.1.2' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; Android 4.1.2; xx; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-Wap-Profile: 'http://wap.samsungmobile.com/uaprof/GT-I9100.xml' } + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Android Browser on a Samsung Galaxy S II running Android 4.1.2' +- + headers: { User-Agent: 'Nokia208/2.0 (03.39) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; xx; Nokia208) U2/1.0.0 UCBrowser/9.5.0.449 U2/1.0.0 Mobile', X-Wap-Profile: 'http://nds1.nds.nokia.com/uaprof/Nokia208r100.xml' } + result: { browser: { name: 'UC Browser', version: '9.5', type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '208' } } + readable: 'UC Browser 9.5 on a Nokia 208 running Series40' +- + headers: { User-Agent: 'Opera/9.50 (J2ME/MIDP; Opera Mini/5.1.24702/29.3757; U; xx)', X-Wap-Profile: 'http://www.zte.com.cn/mobile/uaprof/Vodafone550.xml' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: '550' } } + readable: 'Opera Mini 5.1 on a Vodafone 550' +- + headers: { User-Agent: 'Opera/9.50 (J2ME/MIDP; Opera Mini/5.1.25137/29.3757; U; xx)', X-Wap-Profile: 'http://www.zte.com.cn/mobile/uaprof/W1.xml' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: W1 } } + readable: 'Opera Mini 5.1 on a Vodafone W1' +- + headers: { User-Agent: 'SAMSUNG-GT-S5610/S5610XXLI1 NetFront/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1', X-Wap-Profile: 'http://wap.samsungmobile.com/uaprof/GT-S5610_3G.rdf' } + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Primo } } + readable: 'NetFront 4.1 on a Samsung Primo' +- + headers: { User-Agent: 'SAMSUNG-SGH-i900/1.0 Opera 9.5', X-Wap-Profile: 'http://wap.samsungmobile.com/uaprof/SGH-i900.xml' } + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Omnia } } + readable: 'Opera Mobile 9.5 on a Samsung Omnia running Windows Mobile' +- + headers: { User-Agent: 'dopodT8588/1.0 WindowsMobile/6.5 CEOS/5.2 release/5.0 Opera/9.7 WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1', X-Wap-Profile: 'http://www.htcmms.com.tw/gen/HTC_HD2_T8585-1.0.xml' } + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Opera Mobile 9.7 on a HTC HD2 running Windows Mobile 6.5' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-lg.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-lg.yaml new file mode 100644 index 0000000..e0d011e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-lg.yaml @@ -0,0 +1,852 @@ +- + headers: 'User-Agent: LG-D150/Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D150 Build/KOT49I.A1399035027) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L35 } } + readable: 'LG Browser on a LG L35 running Android 4.4.2' +- + headers: 'User-Agent: LG-D160 Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D160 Build/KOT49I.A1396364437) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L40 } } + readable: 'LG Browser on a LG L40 running Android 4.4.2' +- + headers: 'User-Agent: LG-D280/Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D280 Build/KOT49I.A1398681613) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L65 } } + readable: 'LG Browser on a LG L65 running Android 4.4.2' +- + headers: 'User-Agent: LG-D290/Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D290 Build/KOT49I.A1408002078) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'L Fino' } } + readable: 'LG Browser on a LG L Fino running Android 4.4.2' +- + headers: 'User-Agent: LG-D690 Mozilla/5.0 (Linux; Android 5.0.2; LG-D690 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 Stylus' } } + readable: 'LG Browser on a LG G3 Stylus running Android 5.0.2' +- + headers: 'User-Agent: LG-D722 Mozilla/5.0 (Linux; Android 5.0.2; LG-D722 Build/LRX22G.A1428918170) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 S' } } + readable: 'LG Browser on a LG G3 S running Android 5.0.2' +- + headers: 'User-Agent: LG-D802 Mozilla/5.0 (Linux; Android 5.0.2; LG-D802 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'LG Browser on a LG G2 running Android 5.0.2' +- + headers: 'User-Agent: LG-D855 Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D855 Build/KVT49L.A1401987978) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G3 } } + readable: 'LG Browser on a LG G3 running Android 4.4.2' +- + headers: 'User-Agent: LG-E510/ Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-E510 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Hub' } } + readable: 'Android Browser on a LG Optimus Hub running Android 2.3.4' +- + headers: 'User-Agent: LG-GT540 Mozilla/5.0 (Linux; U; Android 1.6; xx; GT540; Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 Java/Jbed/7.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 MMS/LG-Android-MMS-V1.0/1.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.6' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Optimus } } + readable: 'Android Browser on a LG Optimus running Android 1.6' +- + headers: 'User-Agent: LG-H340n Mozilla/5.0 (Linux; Android 5.0.1; LG-H340n Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Leon } } + readable: 'LG Browser on a LG Leon running Android 5.0.1' +- + headers: 'User-Agent: LG-H815 Mozilla/5.0 (Linux; Android 5.1; LG-H815 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G4 } } + readable: 'LG Browser on a LG G4 running Android 5.1' +- + headers: 'User-Agent: LG-H955 Mozilla/5.0 (Linux; Android 5.0.1; LG-H955 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G Flex 2' } } + readable: 'LG Browser on a LG G Flex 2 running Android 5.0.1' +- + headers: 'User-Agent: LG-P500 Mozilla/5.0 (Linux; U; Android 2.2; xx; LG-P500 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus One' } } + readable: 'Android Browser on a LG Optimus One running Android 2.2' +- + headers: 'User-Agent: LG-P690f/V10c Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-P690f Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Net' } } + readable: 'Android Browser on a LG Optimus Net running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux U; Android 2.2.2; LG-P350 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Me' } } + readable: 'Android Browser on a LG Optimus Me running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LG-P880 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 4X HD' } } + readable: 'Chrome 18 on a LG Optimus 4X HD running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; VS930 4G Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Spectrum 2' } } + readable: 'Chrome 18 on a LG Spectrum 2 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LG-E610 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L5' } } + readable: 'Chrome 18 on a LG Optimus L5 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LG-F160 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus LTE II' } } + readable: 'Chrome 18 on a LG Optimus LTE II running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LG-P700 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L7' } } + readable: 'Chrome 18 on a LG Optimus L7 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LG-P920 Build/ICS) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 3D' } } + readable: 'Chrome 18 on a LG Optimus 3D running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LG-P930 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nitro HD' } } + readable: 'Chrome 18 on a LG Nitro HD running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LG-P990 Build/GRJ22) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 2X Speed' } } + readable: 'Chrome 18 on a LG Optimus 2X Speed running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; P940 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'PRADA 3.0' } } + readable: 'Chrome 18 on a LG PRADA 3.0 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-E730 Build/GRJ22) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Sol' } } + readable: 'Chrome 18 on a LG Optimus Sol running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; IS11LG Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus X IS11LG', carrier: au } } + readable: 'Chrome 18 on a LG Optimus X IS11LG running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; L-01D Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus LTE L-01D', carrier: DoCoMo } } + readable: 'Chrome 18 on a LG Optimus LTE L-01D running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; L-02E Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus LIFE L-02E', carrier: DoCoMo } } + readable: 'Chrome 18 on a LG Optimus LIFE L-02E running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; L-05D Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus it L-05D', carrier: DoCoMo } } + readable: 'Chrome 18 on a LG Optimus it L-05D running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; L-06D Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Vu L-06D', carrier: DoCoMo } } + readable: 'Chrome 33 on a LG Optimus Vu L-06D running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG E400 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.128 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L3' } } + readable: 'Chrome 36 on a LG Optimus L3 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG OPTIMUS HD LTE Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus HD' } } + readable: 'Chrome 18 on a LG Optimus HD running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-AS730 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Select' } } + readable: 'Chrome 18 on a LG Optimus Select running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-D700 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L9' } } + readable: 'Chrome 18 on a LG Optimus L9 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-E615 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L5 Dual' } } + readable: 'Chrome 18 on a LG Optimus L5 Dual running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-F120K Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus LTE Tag' } } + readable: 'Chrome 18 on a LG Optimus LTE Tag running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-KU5900 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Black' } } + readable: 'Chrome 18 on a LG Optimus Black running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-L160L Build/IML74K) AppleWebkit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus LTE2' } } + readable: 'Chrome 18 on a LG Optimus LTE2 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-LG730 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Venice } } + readable: 'Chrome 18 on a LG Venice running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-LS840 Build/ZVI.IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Viper } } + readable: 'Chrome 18 on a LG Viper running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-LS860 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Mach } } + readable: 'Chrome 18 on a LG Mach running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-LU6500 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Q2' } } + readable: 'Chrome 18 on a LG Optimus Q2 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-LU6800 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Big' } } + readable: 'Chrome 42 on a LG Optimus Big running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-MS770 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Motion 4G' } } + readable: 'Chrome 18 on a LG Motion 4G running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-MS870 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Spirit 4G' } } + readable: 'Chrome 18 on a LG Spirit 4G running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-P870 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Escape } } + readable: 'Chrome 18 on a LG Escape running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-P925 Build/ICS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.64, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Thrill } } + readable: 'Chrome Dev 28.0.1500.64 on a LG Thrill running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-SU660 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 2X' } } + readable: 'Chrome 18 on a LG Optimus 2X running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-SU870 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 3D Cube' } } + readable: 'Chrome 31 on a LG Optimus 3D Cube running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-US730 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Splendor } } + readable: 'Chrome 33 on a LG Splendor running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-VM696 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.24 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Elite' } } + readable: 'Chrome 30 on a LG Optimus Elite running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LGL86C Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Showtime' } } + readable: 'Chrome 18 on a LG Optimus Showtime running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; VORTEX Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Vortex } } + readable: 'Chrome 18 on a LG Vortex running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; VS840 4G Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Lucid } } + readable: 'Chrome 18 on a LG Lucid running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; VS840PP Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Exceed' } } + readable: 'Chrome 31 on a LG Optimus Exceed running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; VS920 4G Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Spectrum } } + readable: 'Chrome 18 on a LG Spectrum running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; VS950 4G Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Intuition } } + readable: 'Chrome 18 on a LG Intuition running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; LG-VS870 Build/JRO03R) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Lucid 2' } } + readable: 'Chrome 18 on a LG Lucid 2 running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; AS870 4G Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus F5' } } + readable: 'Chrome Dev 26.0.1410.58 on a LG Optimus F5 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-AS780 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '41', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus F7' } } + readable: 'Chrome 41 on a LG Optimus F7 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-D520 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus F3Q' } } + readable: 'Chrome 35 on a LG Optimus F3Q running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E410 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L1 II' } } + readable: 'Chrome Dev 28.0.1500.94 on a LG Optimus L1 II running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E415f Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L1 II Dual' } } + readable: 'Chrome Dev 28.0.1500.94 on a LG Optimus L1 II Dual running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E425 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L3 II' } } + readable: 'Chrome 18 on a LG Optimus L3 II running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E435 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L3 II Dual' } } + readable: 'Chrome 18 on a LG Optimus L3 II Dual running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E440 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L4 II' } } + readable: 'Chrome 18 on a LG Optimus L4 II running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E445 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L4 II Dual' } } + readable: 'Chrome 18 on a LG Optimus L4 II Dual running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E450 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L5 II' } } + readable: 'Chrome 18 on a LG Optimus L5 II running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E470f Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L4 II Triple' } } + readable: 'Chrome 30 on a LG Optimus L4 II Triple running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E475f Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L1 II Tri' } } + readable: 'Chrome 33 on a LG Optimus L1 II Tri running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-LS720 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus F3' } } + readable: 'Chrome 18 on a LG Optimus F3 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-Optimus Build/VDT-Rom) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Optimus } } + readable: 'Chrome 43 on a LG Optimus running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-P720 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Chic' } } + readable: 'Chrome 18 on a LG Optimus Chic running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LGL39C Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Dynamic II' } } + readable: 'Chrome 27 on a LG Optimus Dynamic II running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; MS840 4G Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Connect 4G' } } + readable: 'Chrome 29 on a LG Connect 4G running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; VS890 4G Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Enact } } + readable: 'Chrome Dev 26.0.1410.58 on a LG Enact running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; L-05E Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus it L-05E', carrier: DoCoMo } } + readable: 'Chrome 34 on a LG Optimus it L-05E running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; Optimusx4 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus X4' } } + readable: 'Chrome Dev 28.0.1500.94 on a LG Optimus X4 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; AOSP on Mako Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 4' } } + readable: 'LG Browser on a LG Nexus 4 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; LG-VS450PP Build/KOT49I.VS450PP1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Exceed 2' } } + readable: 'Chrome 31 on a LG Optimus Exceed 2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; LG-X135 Build/KOT49H.V10a) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L60 } } + readable: 'Chrome 38 on a LG L60 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; LG-X137 Build/KOT49H.V10a) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L60i } } + readable: 'Chrome 35 on a LG L60i running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; VS415PP Build/KOT49I.VS415PP1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Zone 2' } } + readable: 'Chrome 31 on a LG Optimus Zone 2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; VS810PP Build/KOT49I.VS810PP1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Transpyre } } + readable: 'Chrome 35 on a LG Transpyre running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; VS876 Build/KOT49I.VS87610A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Lucid 3' } } + readable: 'Chrome 35 on a LG Lucid 3 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; AOSP on HammerHead Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } + readable: 'LG Browser on a LG Nexus 5 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; LG-D405n Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L90 } } + readable: 'LG Browser on a LG L90 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-D725/D725 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 Vigor' } } + readable: 'LG Browser on a LG G3 Vigor running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-D838 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G Pro 2' } } + readable: 'LG Browser on a LG G Pro 2 running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-D857 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Titan } } + readable: 'LG Browser on a LG Titan running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-E980 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus G Pro' } } + readable: 'LG Browser on a LG Optimus G Pro running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-F460K Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 Cat.6' } } + readable: 'LG Browser on a LG G3 Cat.6 running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-F540L Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Volt } } + readable: 'LG Browser on a LG Volt running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-H420 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Spirit } } + readable: 'LG Browser on a LG Spirit running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-H443/H44301d Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Escape2 } } + readable: 'LG Browser on a LG Escape2 running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LG-H500 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Magna } } + readable: 'LG Browser on a LG Magna running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LGL21G/V100 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Destiny } } + readable: 'LG Browser on a LG Destiny running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LGL22C/V100 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Power } } + readable: 'LG Browser on a LG Power running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LGL33L/V100 Build/LRX21Y) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Sunset } } + readable: 'LG Browser on a LG Sunset running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; LGLS751 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Volt 2' } } + readable: 'LG Browser on a LG Volt 2 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-D331 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'L Bello' } } + readable: 'LG Browser on a LG L Bello running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-D337 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'L Prime' } } + readable: 'LG Browser on a LG L Prime running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-D610TR Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G2 mini' } } + readable: 'LG Browser on a LG G2 mini running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-D631/D63120d Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 Vista' } } + readable: 'LG Browser on a LG G3 Vista running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-D723 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 mini' } } + readable: 'LG Browser on a LG G3 mini running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-F220K Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus GK' } } + readable: 'LG Browser on a LG Optimus GK running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-F310L Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: GX } } + readable: 'LG Browser on a LG GX running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-F410S Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 A' } } + readable: 'LG Browser on a LG G3 A running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-F490L Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 Screen' } } + readable: 'LG Browser on a LG G3 Screen running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-F520L Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: AKA } } + readable: 'LG Browser on a LG AKA running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-H540 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G4 Stylus' } } + readable: 'LG Browser on a LG G4 Stylus running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-H631 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G Stylo' } } + readable: 'LG Browser on a LG G Stylo running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; LG-H736 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G4s } } + readable: 'LG Browser on a LG G4s running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; LG-X150 Build/LRX21M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Bello 2' } } + readable: 'Chrome 43 on a LG Bello 2 running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; LG-F500L Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G4 } } + readable: 'LG Browser on a LG G4 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; LG-F580L Build/LMY47S) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Gentle } } + readable: 'LG Browser on a LG Gentle running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; LG-F600L Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: V10 } } + readable: 'LG Browser on a LG V10 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; LG-H343 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Risio } } + readable: 'Chrome 42 on a LG Risio running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; LG-H410 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Wine Smart' } } + readable: 'LG Browser on a LG Wine Smart running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; LG-H650 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Zero } } + readable: 'Chrome 45 on a LG Zero running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; LG-H731 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G4 Vigor' } } + readable: 'Chrome 43 on a LG G4 Vigor running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; LG-H900/H90010d Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: V10 } } + readable: 'LG Browser on a LG V10 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; VS820 Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Lancet } } + readable: 'Chrome 43 on a LG Lancet running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1; LGV32 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'isai vivid LGV32', carrier: au } } + readable: 'LG Browser on a LG isai vivid LGV32 running Android 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5; en-; LG GW620 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'GW620 Eve' } } + readable: 'Android Browser on a LG GW620 Eve running Android 1.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; AS740 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Axis } } + readable: 'Android Browser on a LG Axis running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; LG-C710; Build/Eclair) AppleWebKit/530.17(KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Aloha } } + readable: 'Android Browser on a LG Aloha running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; LU2300 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Q' } } + readable: 'Android Browser on a LG Optimus Q running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; xx; LG-C660 Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Pro' } } + readable: 'Android Browser on a LG Optimus Pro running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1 Sense Rom Joneidy 7/18/2011; xx; LG-MS690 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus M' } } + readable: 'Android Browser on a LG Optimus M running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; Ally Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Ally } } + readable: 'Android Browser on a LG Ally running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; GW620 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Eve } } + readable: 'Android Browser on a LG Eve running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; LG-C550 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Chat' } } + readable: 'Android Browser on a LG Optimus Chat running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; LG-LW690 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus C' } } + readable: 'Android Browser on a LG Optimus C running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; LG-P505/V10e Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Phoenix } } + readable: 'Android Browser on a LG Phoenix running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; LG-P506 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Thrive } } + readable: 'Android Browser on a LG Thrive running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; VM670 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus V' } } + readable: 'Android Browser on a LG Optimus V running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; KU9500 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Z' } } + readable: 'Android Browser on a LG Optimus Z running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; LG-CX670 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus One' } } + readable: 'Android Browser on a LG Optimus One running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; LG-LU3000 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Mach' } } + readable: 'Android Browser on a LG Optimus Mach running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; LG-P355 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: P355 } } + readable: 'Android Browser on a LG P355 running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; LG-P509 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus T' } } + readable: 'Android Browser on a LG Optimus T running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; LG-US670 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus U' } } + readable: 'Android Browser on a LG Optimus U running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; LS670 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus S' } } + readable: 'Android Browser on a LG Optimus S running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; USCC-US760 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Genesis } } + readable: 'Android Browser on a LG Genesis running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; VS910 4G Build/VS910ZV6) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Revolution 4G' } } + readable: 'Android Browser on a LG Revolution 4G running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; xx; LG-KH5200 Build/Froyo) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Andro-1 } } + readable: 'Android Browser on a LG Andro-1 running Android 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; xx; L-07C Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus bright L-07C', carrier: DoCoMo } } + readable: 'Android Browser on a LG Optimus bright L-07C running Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; ru-; LG-LS855 Build/CTMod 3.80) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Marquee } } + readable: 'Android Browser on a LG Marquee running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LDK-ICK v1.4 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Esteem } } + readable: 'Android Browser on a LG Esteem running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-AS680 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 2' } } + readable: 'Android Browser on a LG Optimus 2 running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-AS855 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Ignite } } + readable: 'Android Browser on a LG Ignite running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-C729 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: DoublePlay } } + readable: 'Android Browser on a LG DoublePlay running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-C800G Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Eclypse } } + readable: 'Android Browser on a LG Eclypse running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-KU8800 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus EX' } } + readable: 'Android Browser on a LG Optimus EX running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-P693 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: P693 } } + readable: 'Android Browser on a LG P693 running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-P698 Build/alex@hawk-droid.rev3) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Net Dual' } } + readable: 'Android Browser on a LG Optimus Net Dual running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-VM701 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Slider' } } + readable: 'Android Browser on a LG Optimus Slider running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LG-VS700 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Enlighten } } + readable: 'Android Browser on a LG Enlighten running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; LGL75C Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Zip' } } + readable: 'Android Browser on a LG Optimus Zip running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; es-; LG-E405f Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L3 Dual' } } + readable: 'Android Browser on a LG Optimus L3 Dual running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; LG-AS695 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Plus' } } + readable: 'Android Browser on a LG Optimus Plus running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; LG-L38C Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Dynamic' } } + readable: 'Android Browser on a LG Optimus Dynamic running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; LG-MS695 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus M+' } } + readable: 'Android Browser on a LG Optimus M+ running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; LG-P725 Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 3D Max' } } + readable: 'Android Browser on a LG Optimus 3D Max running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; LG-VS410PP Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Zone' } } + readable: 'Android Browser on a LG Optimus Zone running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; LGL35G Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Logic' } } + readable: 'Android Browser on a LG Optimus Logic running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; L-02D Build/GWK74) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'PRADA phone L-02D', carrier: DoCoMo } } + readable: 'Android Browser on a LG PRADA phone L-02D running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; LG-LS696 Build/ZVF.GWK74) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Elite } } + readable: 'Android Browser on a LG Elite running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 3.2.1; xx; LG-LU8300 Build/HTK75D) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.13' }, os: { name: Android, version: 3.2.1 }, device: { type: tablet, manufacturer: LG, model: 'Optimus Pad LTE' } } + readable: 'Android Browser on a LG Optimus Pad LTE running Android 3.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; E900 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7' } } + readable: 'Android Browser on a LG Optimus 7 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; LG-L40G Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Extreme' } } + readable: 'Android Browser on a LG Optimus Extreme running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; LG-P860 Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7' + result: { browser: { name: Chrome, version: 16.0.912.75, type: browser }, engine: { name: Webkit, version: '535.7' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: P860 } } + readable: 'Chrome Beta 16.0.912.75 on a LG P860 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; LG-LW770 Build/IMM76I) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Regard } } + readable: 'Android Browser on a LG Regard running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; xx; LG-L25L/V100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Quest' } } + readable: 'Android Browser on a LG Optimus Quest running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; LG-E805 Build/JDQ39B) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus G2' } } + readable: 'Android Browser on a LG Optimus G2 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2 KitKat; xx; LG-E975 Build/KOT49I.E97520a) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus G' } } + readable: 'LG Browser on a LG Optimus G running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D100 Build/KOT49I.A1416475987) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L20 } } + readable: 'LG Browser on a LG L20 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D120 Build/KOT49I.V10a) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'L30 Sporty' } } + readable: 'LG Browser on a LG L30 Sporty running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D213 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'L50 Sporty' } } + readable: 'LG Browser on a LG L50 Sporty running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D227 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'L50 Sporty' } } + readable: 'LG Browser on a LG L50 Sporty running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D315 Build/KOT49I.A1392170855) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: F70 } } + readable: 'LG Browser on a LG F70 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D320 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L70 } } + readable: 'LG Browser on a LG L70 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D340f8 Build/KOT49I.A1398387929) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '537.16' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'L70 Tri' } } + readable: 'Android Browser on a LG L70 Tri running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D373 Build/KOT49I.A1406608409) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L80 } } + readable: 'LG Browser on a LG L80 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D505 Build/KOT49I.D50520b) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus F6' } } + readable: 'LG Browser on a LG Optimus F6 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D605 Build/KOT49I.D60520a) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L9 II' } } + readable: 'LG Browser on a LG Optimus L9 II running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D680 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G Pro Lite' } } + readable: 'LG Browser on a LG G Pro Lite running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D685 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G Pro Lite Dual' } } + readable: 'LG Browser on a LG G Pro Lite Dual running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D728 Build/KOT49I.D72810b) Release/08.18.2014 AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G3 Beat' } } + readable: 'LG Browser on a LG G3 Beat running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-D950/D950 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'G Flex' } } + readable: 'LG Browser on a LG G Flex running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-E455 Build/KOT49I.E45518c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L5 II Dual' } } + readable: 'LG Browser on a LG Optimus L5 II Dual running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-F200K/30d Build/KOT49I.F200K30d) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Vu II' } } + readable: 'LG Browser on a LG Optimus Vu II running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-F260S Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus LTE III' } } + readable: 'LG Browser on a LG Optimus LTE III running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-F300K/20f Build/KOT49I.F300K20f) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Vu 3' } } + readable: 'LG Browser on a LG Vu 3 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-F430L Build/KOT49I.F430L10e) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Gx2 } } + readable: 'LG Browser on a LG Gx2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-H220 Build/KOT49I.A1420032764) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Joy } } + readable: 'LG Browser on a LG Joy running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-P490L Build/KOT49I.P490L08k) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: P490 } } + readable: 'LG Browser on a LG P490 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-P710 Build/KOT49I.P71020a) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L7 II' } } + readable: 'LG Browser on a LG Optimus L7 II running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LG-P715 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L7 II Dual' } } + readable: 'LG Browser on a LG Optimus L7 II Dual running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGL15G/V100 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Sunrise } } + readable: 'LG Browser on a LG Sunrise running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGL16C/V100 Build/KOT49I.L16CV10a) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Lucky } } + readable: 'LG Browser on a LG Lucky running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGL24 Build/KVT49L.LGL2410a) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'isai FL LGL24', carrier: au } } + readable: 'LG Browser on a LG isai FL LGL24 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGL31L/V100 Build/KOT49I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.2 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Access } } + readable: 'LG Browser on a LG Access running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGL41C/V100 Build/KOT49I.L41CV07d) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Ultimate 2' } } + readable: 'LG Browser on a LG Ultimate 2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGLS620 Build/KOT49I.LS620ZV3) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Realm } } + readable: 'LG Browser on a LG Realm running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGLS660 Build/KOT49I.LS660ZV3) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Tribute } } + readable: 'LG Browser on a LG Tribute running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGLS740 Build/KOT49I.LS740ZV3) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Volt } } + readable: 'LG Browser on a LG Volt running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; LGMS395 Build/KOT49I.MS39510d) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: F60 } } + readable: 'LG Browser on a LG F60 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4; xx; LGL34C/V100 Build/KRT16M) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Chrome/30.0.1599.103 Mobile Safari/534.30' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus Fuel' } } + readable: 'LG Browser on a LG Optimus Fuel running Android 4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U;Android 4.4.2; 402LG Build/KOT49I.402LG07n) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Spray 402LG, carrier: 'Y! Mobile' } } + readable: 'LG Browser on a LG Spray 402LG running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U;Android 4.4.2; LG-F440L Build/KOT49I.F440L07a) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Mobile Safari/537.36' + result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'ice cream smart' } } + readable: 'LG Browser on a LG ice cream smart running Android 4.4.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-microsoft.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-microsoft.yaml new file mode 100644 index 0000000..f572fd1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-microsoft.yaml @@ -0,0 +1,48 @@ +- + headers: 'User-Agent: Mozilla/5.0 (MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; Lumia 850)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 850' } } + readable: 'Mobile Internet Explorer 9.0 on a Microsoft Lumia 850 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; MICROSOFT; Surface Phone) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10240' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10240' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Surface Phone' } } + readable: 'Edge 12 on a Microsoft Surface Phone running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 430 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10166' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 430' } } + readable: 'Edge 12 on a Microsoft Lumia 430 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 435 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10166' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 435' } } + readable: 'Edge 12 on a Microsoft Lumia 435 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 532 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10166' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 532' } } + readable: 'Edge 12 on a Microsoft Lumia 532 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 535 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10166' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 535' } } + readable: 'Edge 12 on a Microsoft Lumia 535 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 540 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10166' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 540' } } + readable: 'Edge 12 on a Microsoft Lumia 540 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10562' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10562' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 550' } } + readable: 'Edge 13 on a Microsoft Lumia 550 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10166' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 640' } } + readable: 'Edge 12 on a Microsoft Lumia 640 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10546' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10546' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 950' } } + readable: 'Edge 13 on a Microsoft Lumia 950 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; RM-1065) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10536' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10536' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 640 XL' } } + readable: 'Edge 12 on a Microsoft Lumia 640 XL running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; Lumia 1530)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Microsoft, model: 'Lumia 1530' } } + readable: 'Mobile Internet Explorer 10.0 on a Microsoft Lumia 1530 running Windows Phone 8.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-motorola.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-motorola.yaml new file mode 100644 index 0000000..478cb70 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-motorola.yaml @@ -0,0 +1,504 @@ +- + headers: 'User-Agent: Browse/0.5 (Linux; Android 5.1.1; Moto G (2014) Build/LMY47Z) WebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/42.0.2311.138 Mobile Mozilla/5.0' + result: { browser: { name: Browse, family: { name: Chrome, version: 42 }, version: '0.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G (Google Edition, 2014)' } } + readable: 'Browse 0.5 on a Motorola Moto G (Google Edition, 2014) running Android 5.1.1' +- + headers: 'User-Agent: MOT-MB200/Blur_Version.0.14.501.MB200.AmericaMovil.en.01 Mozilla/5.0 (Linux; U; Android 1.5; xx; MB200 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: CLIQ } } + readable: 'Android Browser on a Motorola CLIQ running Android 1.5' +- + headers: 'User-Agent: MOT-MB300/Blur_Version.0.12.7150.MB300.AmericaMovil.en.MX Mozilla/5.0 (Linux; U; Android 1.5; xx; MB300 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: BACKFLIP } } + readable: 'Android Browser on a Motorola BACKFLIP running Android 1.5' +- + headers: 'User-Agent: MOT-MB502/Blur_Version.0.30.1.MB502.AmericaMovil.en.BR Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; MB502 Build/BASLA_U3_00.30.0_R01) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: CHARM } } + readable: 'Android Browser on a Motorola CHARM running Android 2.1' +- + headers: 'User-Agent: MOT-MB511/Blur_Version.0.45.203.MB511.Brasil.en.BR Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; MB511 Build/RUTLA_U3_00.45.203) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: FLIPOUT } } + readable: 'Android Browser on a Motorola FLIPOUT running Android 2.1' +- + headers: 'User-Agent: MOT-XT300/ Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; XT300 Build/SESLA_U3_01.44.7) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: SPICE } } + readable: 'Android Browser on a Motorola SPICE running Android 2.1' +- + headers: 'User-Agent: MOT-XT311/Mozilla/5.0 (Linux; U; Android 2.3.4; xx; XT311 Build/V4.33B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: FIRE } } + readable: 'Android Browser on a Motorola FIRE running Android 2.3.4' +- + headers: 'User-Agent: MOT-XT316/1.0 Android/2.3.4 Release/9.15.2011 Browser/AppleWebKit533.1 Mozilla/5.0 (Linux; U; Android 2.3.5; xx; XT316 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT316' } } + readable: 'Android Browser on a Motorola MOTO XT316 running Android 2.3.4' +- + headers: 'User-Agent: MOT-XT390/1.0 Android/2.3.6 Mozilla/5.0 (Linux; U; Android 2.3.6; xx; MOT-XT390 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTOSMART XT390' } } + readable: 'Android Browser on a Motorola MOTOSMART XT390 running Android 2.3.6' +- + headers: 'User-Agent: MOT-XT530/Mozilla/5.0 (Linux; U; Android 2.3.5; xx; XT530 Build/V4.460) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'FIRE XT' } } + readable: 'Android Browser on a Motorola FIRE XT running Android 2.3.5' +- + headers: 'User-Agent: MOT-XT536/1.0 Android/2.3.7 Release/2.28.2012 Browser/AppleWebKit533.1 Mozilla/5.0 (Linux; U; Android 2.3.7; xx; MOT-XT536 Build/GWK74) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'DEFY Diana' } } + readable: 'Android Browser on a Motorola DEFY Diana running Android 2.3.7' +- + headers: 'User-Agent: MOT-XT610/Blur_Version.0.17.62.XT610.Latam.en.01 Mozilla/5.0 (Linux; U; Android 2.2.2; xx; XT610 Build/0.17.0_R062) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid Pro' } } + readable: 'Android Browser on a Motorola Droid Pro running Android 2.2.2' +- + headers: 'User-Agent: MOT-XT615/Mozilla/5.0 (Linux; U; Android 2.3.7; xx; XT615 Build/V1.62D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT615' } } + readable: 'Android Browser on a Motorola MOTO XT615 running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; DROID RAZR Build/6.7.1-68_DHD-15_M4-16) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid RAZR' } } + readable: 'Chrome 18 on a Motorola Droid RAZR running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; DROID4 Build/6.7.1-68_DR4-2_M2-6) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid 4' } } + readable: 'Chrome 18 on a Motorola Droid 4 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; XT875 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid Bionic' } } + readable: 'Chrome 18 on a Motorola Droid Bionic running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; XT910 Build/6.7.1_GC-96) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: RAZR } } + readable: 'Chrome 18 on a Motorola RAZR running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; XT928 Build/6.7.1_GC-90) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: XT928 } } + readable: 'Chrome 18 on a Motorola XT928 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; Droid2Global Build/MR1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid 2' } } + readable: 'Chrome Dev 26.0.1410.58 on a Motorola Droid 2 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; MB525 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: DEFY } } + readable: 'Chrome 18 on a Motorola DEFY running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ME525+ Build/IML74K) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.8 Mobile Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO ME525' } } + readable: 'Chrome 25 on a Motorola MOTO ME525 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ME722 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Milestone 2' } } + readable: 'Chrome 18 on a Motorola Milestone 2 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; Milestone Build/SHOLS_U2_05.26.3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: Milestone } } + readable: 'Chrome 18 on a Motorola Milestone running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; XT862 Build/5.5.1_84_D3G-55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid 3' } } + readable: 'Chrome Dev 28.0.1500.94 on a Motorola Droid 3 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MB526 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: DEFY+ } } + readable: 'Chrome 18 on a Motorola DEFY+ running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MB855 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'PHOTON 4G' } } + readable: 'Chrome 18 on a Motorola PHOTON 4G running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MB860 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: ATRIX } } + readable: 'Chrome 18 on a Motorola ATRIX running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MT917 Build/6.7.2_GC-120) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: MT917 } } + readable: 'Chrome 18 on a Motorola MT917 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; WX435 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'TRIUMPH WX435' } } + readable: 'Chrome 18 on a Motorola TRIUMPH WX435 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; 201M Build/7.7.1Q-164_SMJ-143) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'RAZR M 201M', carrier: Softbank } } + readable: 'Chrome 18 on a Motorola RAZR M 201M running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; Atrix_2_WeifanZ Build/6.7.2_GC-180-EDS-20 By Muyiafan) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.48 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'ATRIX 2' } } + readable: 'Chrome 33 on a Motorola ATRIX 2 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; DROID RAZR HD Build/7.7.1Q-144_VQW_S334-25) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid RAZR HD' } } + readable: 'Chrome 18 on a Motorola Droid RAZR HD running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; DROIDX Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid X' } } + readable: 'Chrome 18 on a Motorola Droid X running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MB611 Build/CyanogenMod9-Milestone2-CN-Kernel-IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'CLIQ 2' } } + readable: 'Chrome 18 on a Motorola CLIQ 2 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MB870 Build/4.5.1A-DTN-130) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.33 Mobile Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid X2' } } + readable: 'Chrome 25 on a Motorola Droid X2 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MB886 Build/7.7.1Q-115_MB886_BELL_FFW-11) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: DINARA } } + readable: 'Chrome 18 on a Motorola DINARA running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MOT-XT788 Build/IRPMCT_B_02.60.00RPD) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: XT788 } } + readable: 'Chrome 18 on a Motorola XT788 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MT788 Build/AZ510_ICS_02.19I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'RAZR i' } } + readable: 'Chrome 29 on a Motorola RAZR i running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MT887 Build/6.7.2_GC-125-YTZTD-19) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'RAZR V' } } + readable: 'Chrome 29 on a Motorola RAZR V running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; Motorola RAZR MAXX Build/6.7.2-180_DHD-16_NA-27) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'RAZR MAXX' } } + readable: 'Chrome 18 on a Motorola RAZR MAXX running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT1080 Build/HuaweiU8825D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '32', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid Ultra' } } + readable: 'Chrome 32 on a Motorola Droid Ultra running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT685 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT685' } } + readable: 'Chrome 18 on a Motorola MOTO XT685 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT687 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'ATRIX TV' } } + readable: 'Chrome 18 on a Motorola ATRIX TV running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT883 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.64, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Milestone 3' } } + readable: 'Chrome Dev 28.0.1500.64 on a Motorola Milestone 3 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT897 Build/7.7.1Q-6_SPR-125_ASA-10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'PHOTON Q' } } + readable: 'Chrome 18 on a Motorola PHOTON Q running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT901 Build/7.7.1Q-144_SLS_S240-58) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Electrify M' } } + readable: 'Chrome 18 on a Motorola Electrify M running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT905 Build/7.7.1Q-164_SKT-39) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'RAZR M' } } + readable: 'Chrome 18 on a Motorola RAZR M running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; i1 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: i1 } } + readable: 'Chrome 18 on a Motorola i1 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; MB520 Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: BRAVO } } + readable: 'Chrome 18 on a Motorola BRAVO running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Atrix 4G Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'ATRIX 4G' } } + readable: 'Chrome 35 on a Motorola ATRIX 4G running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; Atrix HD Build/HoloBlur-X v0.9 PurePerformance? Edition) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'ATRIX HD' } } + readable: 'Chrome 31 on a Motorola ATRIX HD running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; RAZR HD Build/9.8.2Q-8-XT925_VQL-6) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'RAZR HD' } } + readable: 'Chrome 18 on a Motorola RAZR HD running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; TC55 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'TC55 Touch Computer' } } + readable: 'Chrome Dev 28.0.1500.94 on a Motorola TC55 Touch Computer running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; XT881 Build/9.8.3O-118_USC-14) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Electrify 2' } } + readable: 'Chrome 18 on a Motorola Electrify 2 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; XT914 Build/2_28B_2005) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid RAZR D1' } } + readable: 'Chrome 18 on a Motorola Droid RAZR D1 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; XT919 Build/2_290_2004) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid RAZR D3' } } + readable: 'Chrome 18 on a Motorola Droid RAZR D3 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; Nexus 6 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Nexus 6' } } + readable: 'Chrome 42 on a Motorola Nexus 6 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; XT1030 Build/12.9.0Q2.X-160-OBK_TA-14-7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid Mini' } } + readable: 'Chrome 27 on a Motorola Droid Mini running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; XT1049 Build/13.9.0Q2.X-178-RW-11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto X' } } + readable: 'Chrome 30 on a Motorola Moto X running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; XT1028 Build/14.10.0Q3.X-84-14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G' } } + readable: 'Chrome 30 on a Motorola Moto G running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.1; TC70 Build/90-23241-K-02-02-00-E2-011714) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36' + result: { browser: { using: { name: 'Chromium WebView', version: '30' } }, engine: { name: Blink }, os: { name: Android, version: 4.4.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'TC70 Touch Computer' } } + readable: 'Chromium WebView 30 on a Motorola TC70 Touch Computer running Android 4.4.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Moto G Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '32', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G (Google Edition)' } } + readable: 'Chrome 32 on a Motorola Moto G (Google Edition) running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Moto X Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto X (Google Edition)' } } + readable: 'Chrome 33 on a Motorola Moto X (Google Edition) running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; XT1021 Build/KXC20.82-13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto E' } } + readable: 'Chrome 34 on a Motorola Moto E running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; TC75 Build/01-23257-K-05-01-00-D1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'TC75 Touch Computer' } } + readable: 'Chrome 38 on a Motorola TC75 Touch Computer running Android 4.4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; XT1003 Build/KXB21.14-L1.32) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G Ferrari' } } + readable: 'Chrome 40 on a Motorola Moto G Ferrari running Android 4.4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; Moto E Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto E (Google Edition)' } } + readable: 'Chrome 36 on a Motorola Moto E (Google Edition) running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; XT1063 Build/KXB21.85-12) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '41', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G (2014)' } } + readable: 'Chrome 41 on a Motorola Moto G (2014) running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; XT1092 Build/KXE21.187-42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto X (2014)' } } + readable: 'Chrome 34 on a Motorola Moto X (2014) running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; XT1225 Build/KXG21.50-11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '37', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto Maxx' } } + readable: 'Chrome 37 on a Motorola Moto Maxx running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; XT1250 Build/KXG21.50-11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '41', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid Turbo' } } + readable: 'Chrome 41 on a Motorola Droid Turbo running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; XT1526 Build/LXI22.50-14.6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '46', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto E (2015)' } } + readable: 'Chrome 46 on a Motorola Moto E (2015) running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; XT1562 Build/LPD23.118-10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto X Play' } } + readable: 'Chrome 42 on a Motorola Moto X Play running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; XT1565 Build/LCD23.118-4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid MAXX 2' } } + readable: 'Chrome 43 on a Motorola Droid MAXX 2 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; XT1570 Build/LPH23.145-7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto X Style' } } + readable: 'Chrome 45 on a Motorola Moto X Style running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; XT1575 Build/LPH23.116-18) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto X Pure Edition' } } + readable: 'Chrome 42 on a Motorola Moto X Pure Edition running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; XT1580 Build/LPK23.145-5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto X Force' } } + readable: 'Chrome 42 on a Motorola Moto X Force running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5; xx; MB501 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'CLIQ XT' } } + readable: 'Android Browser on a Motorola CLIQ XT running Android 1.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.6; xx; MOT-A1680 Build/DRD35) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.6' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO A1680' } } + readable: 'Android Browser on a Motorola MOTO A1680 running Android 1.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.6; xx; Motorola-XT502 Build/DONUT) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.6' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'QUENCH XT5' } } + readable: 'Android Browser on a Motorola QUENCH XT5 running Android 1.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.6; xx; calgary Build/DRC92) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.6' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid Devour' } } + readable: 'Android Browser on a Motorola Droid Devour running Android 1.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.0.1; xx; Droid Build/ESD56) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: Droid } } + readable: 'Android Browser on a Motorola Droid running Android 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; es-; XT701 Build/STCU_41.07.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: XT701 } } + readable: 'Android Browser on a Motorola XT701 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; Dext Build/ERD79) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: Dext } } + readable: 'Android Browser on a Motorola Dext running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; MOT-XT301/CNACT_X2_01.20.3; 240*320; CTC/2.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT301' } } + readable: 'Android Browser on a Motorola MOTO XT301 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; MOT-XT806/QLCG_M2_02.11.7; 480*854; CTC/2.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT806' } } + readable: 'Android Browser on a Motorola MOTO XT806 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; MT716 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO MT716' } } + readable: 'Android Browser on a Motorola MOTO MT716 running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; MT810 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO MT810' } } + readable: 'Android Browser on a Motorola MOTO MT810 running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; WX445 Build/VZW) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'CITRUS WX445' } } + readable: 'Android Browser on a Motorola CITRUS WX445 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; XT702 Build/SGC01260) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT702' } } + readable: 'Android Browser on a Motorola MOTO XT702 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; XT711 Build/RSTCU10150) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT711' } } + readable: 'Android Browser on a Motorola MOTO XT711 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; XT800 Build/TITA_M2_16.22.7) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT800' } } + readable: 'Android Browser on a Motorola MOTO XT800 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; XT800W Build/TTSKT_U_80.10.24R) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO Glam' } } + readable: 'Android Browser on a Motorola MOTO Glam running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; Milestone X Build/NTEL) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 480X854 motorola Milestone X' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Milestone X' } } + readable: 'Android Browser on a Motorola Milestone X running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; MB508 Build/3.4.2-159_SAG-17_SecATT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: FLIPSIDE } } + readable: 'Android Browser on a Motorola FLIPSIDE running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; MB612 Build/KRNS-X4-1.1.10) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: XPRT } } + readable: 'Android Browser on a Motorola XPRT running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; MOTWX435KT Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: TRIUMPH } } + readable: 'Android Browser on a Motorola TRIUMPH running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; MT620 Build/THTTD_N_01.01.27I) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO MT620' } } + readable: 'Android Browser on a Motorola MOTO MT620 running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; xx; MOT-XT882/SWDFS_M7_4.60.4; 540*960; CTC/2.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT882' } } + readable: 'Android Browser on a Motorola MOTO XT882 running Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; ISW11M Build/4.5.1A-1_KDI-92_LE-24) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: PHOTON ISW11M, carrier: au } } + readable: 'Android Browser on a Motorola PHOTON ISW11M running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; MT870 Build/04.30.51) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO MT870' } } + readable: 'Android Browser on a Motorola MOTO MT870 running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; XT319 Build/V4.37B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT319' } } + readable: 'Android Browser on a Motorola MOTO XT319 running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; ru-; Motorola Electrify Build/4.5.1A_SUN_USC_19.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: Electrify } } + readable: 'Android Browser on a Motorola Electrify running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; uk-; MB632 Build/5.5.1Q-110-L28_ELWUS-TA-1) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: PRO+ } } + readable: 'Android Browser on a Motorola PRO+ running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; Milestone X2 Build/45.0.25) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Milestone X2' } } + readable: 'Android Browser on a Motorola Milestone X2 running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; XT321 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'DEFY Mini' } } + readable: 'Android Browser on a Motorola DEFY Mini running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; XT603 Build/5.5.1Q-117_PAX-15) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: ADMIRAL } } + readable: 'Android Browser on a Motorola ADMIRAL running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; XT760 Build/02.3C.08RPS) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT760' } } + readable: 'Android Browser on a Motorola MOTO XT760 running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; MB626 Build/5.5.1Q-211) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: MB632 } } + readable: 'Android Browser on a Motorola MB632 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; MOT-XT303 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTOSMART XT303' } } + readable: 'Android Browser on a Motorola MOTOSMART XT303 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; MOT-XT305 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTOSMART XT305' } } + readable: 'Android Browser on a Motorola MOTOSMART XT305 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; MOT-XT389 Build/06.13.03R_S) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTOSMART XT389' } } + readable: 'Android Browser on a Motorola MOTOSMART XT389 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; MOT-XT553 Build/AGSPIN_B_02.01.38RPD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTOSMART MIX' } } + readable: 'Android Browser on a Motorola MOTOSMART MIX running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; Motorola MOT-XT681 Build/IRM90B) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT681' } } + readable: 'Android Browser on a Motorola MOTO XT681 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; XT605 Build/5.5.1Q-JORIAN-108-TA-261) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Master XT605' } } + readable: 'Android Browser on a Motorola Master XT605 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; XT621 Build/5.5.1Q_PRIMUS_MR-217) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Primus XT621' } } + readable: 'Android Browser on a Motorola Primus XT621 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; XT626 Build/5.5.1Q-364_IR_TA-23) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT626' } } + readable: 'Android Browser on a Motorola MOTO XT626 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; XT627 Build/5.5.1Q-478_JESSUP-84) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Kairos XT627' } } + readable: 'Android Browser on a Motorola Kairos XT627 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; MT680 Build/GWK74) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTOLUXE MT680' } } + readable: 'Android Browser on a Motorola MOTOLUXE MT680 running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; Motorola_XT500 Build/Modified by soda; Modified by soda) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT500' } } + readable: 'Android Browser on a Motorola MOTO XT500 running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; XT317 Build/V4.36A) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'SPICE Key' } } + readable: 'Android Browser on a Motorola SPICE Key running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; XT532 Build/V4.36A) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT532' } } + readable: 'Android Browser on a Motorola MOTO XT532 running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; XT555C Build/GWK74) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'DEFY XT' } } + readable: 'Android Browser on a Motorola DEFY XT running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; XT560 Build/V1.59C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'DEFY Pro' } } + readable: 'Android Browser on a Motorola DEFY Pro running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; XT611 Build/V4.570) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTOSMART Flip' } } + readable: 'Android Browser on a Motorola MOTOSMART Flip running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Motorola ROKR E2) MOT-ROKR E2/R564_G_12.00.20R Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 8.50 [zh-tw]' + readable: 'Opera Mobile 8.50 on a Motorola ROKR E2' + result: { browser: { name: 'Opera Mobile', version: '8.50', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: 'ROKR E2' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-asha.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-asha.yaml new file mode 100644 index 0000000..591cf56 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-asha.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501.1/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.0.0.45' + result: { browser: { name: 'Nokia Xpress', version: 4.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 4.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia502/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 502' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 502 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia503/0.1402.11/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.0.0.17' + result: { browser: { name: 'Nokia Xpress', version: 4.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 503' } } + readable: 'Nokia Xpress 4.0.0 on a Nokia Asha 503 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaAsha230DualSIM/13.5.2/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 230' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 230 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaAsha500DualSIM/13.0.6/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 500' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 500 running Nokia Asha Platform 1.1.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-series40.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-series40.yaml new file mode 100644 index 0000000..660fd06 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-series40.yaml @@ -0,0 +1,240 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Nokia6600s/2.0 (p) Profile/ MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, Like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6600 slide' } } + readable: 'a Nokia 6600 slide running Series40' +- + headers: 'User-Agent: Nokia110/2.0 (03.33) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '110' } } + readable: 'a Nokia 110 running Series40' +- + headers: 'User-Agent: Nokia114/2.0 (03.33) Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '114' } } + readable: 'a Nokia 114 running Series40' +- + headers: 'User-Agent: Nokia200/11.95' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 200' } } + readable: 'a Nokia Asha 200 running Series40' +- + headers: 'User-Agent: Nokia202/2.0 (20.37) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 202' } } + readable: 'a Nokia Asha 202 running Series40' +- + headers: 'User-Agent: Nokia205.1/2.0 (04.51) Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 205' } } + readable: 'a Nokia Asha 205 running Series40' +- + headers: 'User-Agent: Nokia206/04.52' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 206' } } + readable: 'a Nokia Asha 206 running Series40' +- + headers: 'User-Agent: Nokia208.1/2.0 (04.06) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '208' } } + readable: 'a Nokia 208 running Series40' +- + headers: 'User-Agent: Nokia210/2.0 (04.12) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 210' } } + readable: 'a Nokia Asha 210 running Series40' +- + headers: 'User-Agent: Nokia2322c/08.20' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2322 classic' } } + readable: 'a Nokia 2322 classic running Series40' +- + headers: 'User-Agent: Nokia2330c/09.55' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2330 classic' } } + readable: 'a Nokia 2330 classic running Series40' +- + headers: 'User-Agent: Nokia2600c-2/2.0 (05.61) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2600 classic' } } + readable: 'a Nokia 2600 classic running Series40' +- + headers: 'User-Agent: Nokia2680s-2/1.0 (04.56) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2680 slide' } } + readable: 'a Nokia 2680 slide running Series40' +- + headers: 'User-Agent: Nokia2690/2.0 (10.10) Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2690' } } + readable: 'a Nokia 2690 running Series40' +- + headers: 'User-Agent: Nokia2692_CMCC/2.0 (10.10) Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2692' } } + readable: 'a Nokia 2692 running Series40' +- + headers: 'User-Agent: Nokia2700c-2/2.0 (09.98) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2700 classic' } } + readable: 'a Nokia 2700 classic running Series40' +- + headers: 'User-Agent: Nokia2730c-1/2.0 (09.41) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2730 classic' } } + readable: 'a Nokia 2730 classic running Series40' +- + headers: 'User-Agent: Nokia300/5.0 (06.97) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 300' } } + readable: 'a Nokia Asha 300 running Series40' +- + headers: 'User-Agent: Nokia302/5.0 (14.26) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 302' } } + readable: 'a Nokia Asha 302 running Series40' +- + headers: 'User-Agent: Nokia3020/5.0 (14.53) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3020' } } + readable: 'a Nokia 3020 running Series40' +- + headers: 'User-Agent: Nokia303/5.0 (13.44) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 303' } } + readable: 'a Nokia Asha 303 running Series40' +- + headers: 'User-Agent: Nokia305/2.0 (03.60) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 305' } } + readable: 'a Nokia Asha 305 running Series40' +- + headers: 'User-Agent: Nokia306/2.0 (03.63) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 306' } } + readable: 'a Nokia Asha 306 running Series40' +- + headers: 'User-Agent: Nokia308/2.0 (05.85) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 308' } } + readable: 'a Nokia Asha 308 running Series40' +- + headers: 'User-Agent: Nokia309/2.0 (05.85) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 309' } } + readable: 'a Nokia Asha 309 running Series40' +- + headers: 'User-Agent: Nokia310/2.0 (07.35) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 310' } } + readable: 'a Nokia Asha 310 running Series40' +- + headers: 'User-Agent: Nokia311/5.0 (03.81) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 311' } } + readable: 'a Nokia Asha 311 running Series40' +- + headers: 'User-Agent: Nokia3110c/2.0 (07.21) Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3110 Evolve' } } + readable: 'a Nokia 3110 Evolve running Series40' +- + headers: 'User-Agent: Nokia3120classic/2.0 (10.00) Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3120 classic' } } + readable: 'a Nokia 3120 classic running Series40' +- + headers: 'User-Agent: Nokia3208c/10.50' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3208 classic' } } + readable: 'a Nokia 3208 classic running Series40' +- + headers: 'User-Agent: Nokia3710fold/5.0 (04.30) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3710 fold' } } + readable: 'a Nokia 3710 fold running Series40' +- + headers: 'User-Agent: Nokia3720c/2.0 (09.10) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3720 classic' } } + readable: 'a Nokia 3720 classic running Series40' +- + headers: 'User-Agent: Nokia5130/07.95' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '5130 XpressMusic' } } + readable: 'a Nokia 5130 XpressMusic running Series40' +- + headers: 'User-Agent: Nokia5220XpressMusic/2.0 (07.23) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '5220 XpressMusic' } } + readable: 'a Nokia 5220 XpressMusic running Series40' +- + headers: 'User-Agent: Nokia5300/2.0 (05.51) Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '5300 XpressMusic' } } + readable: 'a Nokia 5300 XpressMusic running Series40' +- + headers: 'User-Agent: Nokia5310XpressMusic/2.0 (09.42) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '5310 XpressMusic' } } + readable: 'a Nokia 5310 XpressMusic running Series40' +- + headers: 'User-Agent: Nokia6233/2.0 (05.60) Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6233' } } + readable: 'a Nokia 6233 running Series40' +- + headers: 'User-Agent: Nokia6234/2.0 (05.60) Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6234' } } + readable: 'a Nokia 6234 running Series40' +- + headers: 'User-Agent: Nokia6260s-1/2.0 (04.36) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6260 slide' } } + readable: 'a Nokia 6260 slide running Series40' +- + headers: 'User-Agent: Nokia6300/2.0 (07.21) Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6300' } } + readable: 'a Nokia 6300 running Series40' +- + headers: 'User-Agent: Nokia6301/2.0 (09.44) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6301' } } + readable: 'a Nokia 6301 running Series40' +- + headers: 'User-Agent: Nokia6303c/2.0 (10.12) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6303 classic' } } + readable: 'a Nokia 6303 classic running Series40' +- + headers: 'User-Agent: Nokia6303iclassic/5.0 (06.61) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420 (KHTML, like Gecko) Safari/420' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6303i classic' } } + readable: 'a Nokia 6303i classic running Series40' +- + headers: 'User-Agent: Nokia6350/2.0(ATT.12.40) Profile/MIDP-2.1 Configuration/CLDC-1.1 Nokia6350/12.40; Mozilla/5.0 (Profi' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6350' } } + readable: 'a Nokia 6350 running Series40' +- + headers: 'User-Agent: Nokia6500s/2.0 (10.00) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6500 slide' } } + readable: 'a Nokia 6500 slide running Series40' +- + headers: 'User-Agent: Nokia6700c-1/2.0 (07.60) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6700 classic' } } + readable: 'a Nokia 6700 classic running Series40' +- + headers: 'User-Agent: Nokia7230-1c/5.0 (09.83) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420 (KHTML, like Gecko) Safari/420' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '7230' } } + readable: 'a Nokia 7230 running Series40' +- + headers: 'User-Agent: NokiaC1-01.1/2.0 (06.07) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C1-01 } } + readable: 'a Nokia C1-01 running Series40' +- + headers: 'User-Agent: NokiaC1-02/2.0 (06.15) Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C1-02 } } + readable: 'a Nokia C1-02 running Series40' +- + headers: 'User-Agent: NokiaC2-00/2.0 (03.45) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C2-00 } } + readable: 'a Nokia C2-00 running Series40' +- + headers: 'User-Agent: NokiaC2-01/5.0 (10.50) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C2-01 } } + readable: 'a Nokia C2-01 running Series40' +- + headers: 'User-Agent: NokiaC2-03/2.0 (06.97) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C2-03 } } + readable: 'a Nokia C2-03 running Series40' +- + headers: 'User-Agent: NokiaC3-01.5/5.0 (06.50) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C3-01 } } + readable: 'a Nokia C3-01 running Series40' +- + headers: 'User-Agent: NokiaX2-00/5.0 (04.25) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: X2-00 } } + readable: 'a Nokia X2-00 running Series40' +- + headers: 'User-Agent: NokiaX2-01.1/5.0 (07.22) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420 (KHTML, like Gecko) Safari/420' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: X2-01 } } + readable: 'a Nokia X2-01 running Series40' +- + headers: 'User-Agent: NokiaX2-02/2.0 (11.79) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: X2-02 } } + readable: 'a Nokia X2-02 running Series40' +- + headers: 'User-Agent: NokiaX2-03/5.0 (08.65) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: X2-03 } } + readable: 'a Nokia X2-03 running Series40' +- + headers: 'User-Agent: NokiaX3-00/5.0 (03.60) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420 (KHTML, like Gecko) Safari/420' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: X3-00 } } + readable: 'a Nokia X3-00 running Series40' +- + headers: 'User-Agent: NokiaX3-02.5/5.0 (06.73) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/5.0 AppleWebKit/420+ (KHTML, like Gecko) Safari/420+' + result: { engine: { name: Webkit, version: '420' }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: X3-02 } } + readable: 'a Nokia X3-02 running Series40' +- + headers: 'User-Agent: nokiac3-00' + result: { os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C3-00 } } + readable: 'a Nokia C3-00 running Series40' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-series60.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-series60.yaml new file mode 100644 index 0000000..4eb95c0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-series60.yaml @@ -0,0 +1,284 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.7; xx; rv:1.9.2.26) Gecko/20120128 NokiaN95' + result: { engine: { name: Gecko, version: 1.9.2 }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N95 } } + readable: 'a Nokia N95 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; Series60/5.2 Nokia500/111.021.0028; Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '500' } } + readable: 'a Nokia 500 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaC7-00/012.004; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) A' + result: { os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C7-00 } } + readable: 'a Nokia C7-00 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.' + result: { os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N8-00 } } + readable: 'a Nokia N8-00 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; U; Nokia603; xx) AppleWebKit/534.3 (KHTML, like Gecko) NokiaWebview/1.0 Mobile Safari/534.3' + result: { engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '603' } } + readable: 'a Nokia 603 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; U; Nokia700; xx) AppleWebKit/534.3 (KHTML, like Gecko) NokiaWebview/1.0 Mobile Safari/534.3' + result: { engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '700' } } + readable: 'a Nokia 700 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; U; Nokia701; xx) AppleWebKit/534.3 (KHTML, like Gecko) NokiaWebview/1.0 Mobile Safari/534.3' + result: { engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '701' } } + readable: 'a Nokia 701 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; U; Nokia808 PureView; xx) AppleWebKit/534.3 (KHTML, like Gecko) NokiaWebview/1.0 Mobile Safari/534.3' + result: { engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '808 PureView' } } + readable: 'a Nokia 808 PureView running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; U; NokiaC6-01; xx) AppleWebKit/534.3 (KHTML, like Gecko) NokiaWebview/1.0 Mobile Safari/534.3' + result: { engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C6-01 } } + readable: 'a Nokia C6-01 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian; U; E6-00; es-419) AppleWebKit/534.3 (KHTML, like Gecko) Version/3.0 Mobile/1A543a Mobile Safari/534.3' + result: { engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E6-00 } } + readable: 'a Nokia E6-00 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian; U; E7-00; xx) AppleWebKit/534.3 (KHTML, like Gecko) Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53//1.40 Mobile Safari/534.3' + result: { engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E7-00 } } + readable: 'a Nokia E7-00 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian; U; X7-00; xx) AppleWebKit/534.3 (KHTML, like Gecko) Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)/1.60 Mobile Safari/534.3' + result: { engine: { name: Webkit, version: '534.3' }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X7-00 } } + readable: 'a Nokia X7-00 running Series60' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS 9.4; Series60/5.0 NokiaN97-1/10.0.012; Profile/MIDP-2.1 Configuration/CLDC-1.1; xx) AppleWebKit/525 (KHTML, like Gecko) WicKed/7.1.12344' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: Symbian, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N97 } } + readable: 'a Nokia N97 running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.1; U; [en]; Series60/3.0 NokiaE60/4.06.0) AppleWebKit/413 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E60 } } + readable: 'a Nokia E60 running Series60 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.1; U; [tr]; NokiaN73-1/3.0638.0.0.1 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N73 } } + readable: 'a Nokia N73 running Series60 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 Nokia5700/3.27; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) U; AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5700 XpressMusic' } } + readable: 'a Nokia 5700 XpressMusic running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 Nokia6120c/3.70; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) U; AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6120 classic' } } + readable: 'a Nokia 6120 classic running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaE51-1/100.34.20; Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E51 } } + readable: 'a Nokia E51 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaE63-1/100.21.110; Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E63 } } + readable: 'a Nokia E63 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaE66-1/102.07.81; Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E66 } } + readable: 'a Nokia E66 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaE71-1/100.07.76; Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E71 } } + readable: 'a Nokia E71 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaE90-1/200.34.73 Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'E90 Communicator' } } + readable: 'a Nokia E90 Communicator running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaN76-1/31.0.014 Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N76 } } + readable: 'a Nokia N76 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaN81-1/11.0.045 Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N81 } } + readable: 'a Nokia N81 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaN82/11.0.117; Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N82 } } + readable: 'a Nokia N82 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaN95-3/10.2.006; Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N95 } } + readable: 'a Nokia N95 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 NokiaN95_8GB/15.0.015; Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'N95 8GB' } } + readable: 'a Nokia N95 8GB running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia5250/10.0.021; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5250' } } + readable: 'a Nokia 5250 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 Nokia6124c/4.34; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6124 classic' } } + readable: 'a Nokia 6124 classic running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaC5-00.2/101.003; Profile/MIDP-2.1 Configuration/CLDC-1' + result: { os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C5-00 } } + readable: 'a Nokia C5-00 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E72 } } + readable: 'a Nokia E72 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaX5-01/043.016; Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X5-01 } } + readable: 'a Nokia X5-01 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia5320d-1/03.26; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5320 XpressMusic' } } + readable: 'a Nokia 5320 XpressMusic running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia5630d-1/012.008; Profile/MIDP-2.1 Configuration/CLD' + result: { os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5630 XpressMusic' } } + readable: 'a Nokia 5630 XpressMusic running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia5730s-1/100.48.122; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5730 XpressMusic' } } + readable: 'a Nokia 5730 XpressMusic running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6220c-1/03.23; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6220 classic' } } + readable: 'a Nokia 6220 classic running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6760s-1/03.38; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6760 slide' } } + readable: 'a Nokia 6760 slide running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Nokia6790s-1c/03.38; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6790 slide' } } + readable: 'a Nokia 6790 slide running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1/100.48.78 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E75 } } + readable: 'a Nokia E75 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN78-1/10.136; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N78 } } + readable: 'a Nokia N78 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN79-1/11.049; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N79 } } + readable: 'a Nokia N79 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN85-1/10.045; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N85 } } + readable: 'a Nokia N85 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN96-1/1.20; Profile/MIDP-2.1 Configuration/CLDC-1.1;) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N96 } } + readable: 'a Nokia N96 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN96-3/3.00; Profile/MIDP-2.1 Configuration/CLDC-1.1;) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N96 } } + readable: 'a Nokia N96 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaC5-03/23.0.015; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) PRO|MODv2.4/8.3.1.1 Mobile Safari/533.4 3gpp-gba' + result: { engine: { name: Webkit, version: '533.4' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C5-03 } } + readable: 'a Nokia C5-03 running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-5/30.2.004; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/533.4 (KHTML, like Gecko) Safari/525' + result: { engine: { name: Webkit, version: '533.4' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'N97 Mini' } } + readable: 'a Nokia N97 Mini running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5230-1b/10.2.071; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5230' } } + readable: 'a Nokia 5230 running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5233/21.1.004; Profile/MIDP-2.1 Configuration/CLDC-' + result: { os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5228' } } + readable: 'a Nokia 5228 running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5235/12.6.092; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5235 Ovi Music Unlimited' } } + readable: 'a Nokia 5235 Ovi Music Unlimited running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5530c-2/10.0.050; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5530 XpressMusic' } } + readable: 'a Nokia 5530 XpressMusic running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/52.50.2008.24; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5800 XpressMusic' } } + readable: 'a Nokia 5800 XpressMusic running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 NokiaX6-00/10.0.069; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X6-00 } } + readable: 'a Nokia X6-00 running Series60 5.0' +- + headers: 'User-Agent: NOKIAE5-00' + result: { os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E5-00 } } + readable: 'a Nokia E5-00 running Series60' +- + headers: 'User-Agent: NOKIAN86 8MP' + result: { os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'N86 8MP' } } + readable: 'a Nokia N86 8MP running Series60' +- + headers: 'User-Agent: Nokia5236/51.9.002 (SymbianOS/9.4; U; Series60/5.0; Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML,like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5236' } } + readable: 'a Nokia 5236 running Series60 5.0' +- + headers: 'User-Agent: Nokia6630/1.0 (2.3.129) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series60, family: { name: Symbian, version: '8.0' }, version: '2.6' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6630' } } + readable: 'a Nokia 6630 running Series60 2.6' +- + headers: 'User-Agent: Nokia6680/1.0 (4.04.07) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series60, family: { name: Symbian, version: '8.0' }, version: '2.6' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6680' } } + readable: 'a Nokia 6680 running Series60 2.6' +- + headers: 'User-Agent: Nokia6700s/062.001 (SymbianOS/9.3; U; Series60/3.2; Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML,like Gecko) Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6700 slide' } } + readable: 'a Nokia 6700 slide running Series60 3.2' +- + headers: 'User-Agent: Nokia6730c/031.023 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6730 classic' } } + readable: 'a Nokia 6730 classic running Series60 3.2' +- + headers: 'User-Agent: Nokia7610/2.0 (6.0522.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { os: { name: Series60, family: { name: Symbian, version: '7.0' }, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '7610' } } + readable: 'a Nokia 7610 running Series60 2.1' +- + headers: 'User-Agent: NokiaC5-05' + result: { os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C5-05 } } + readable: 'a Nokia C5-05 running Series60' +- + headers: 'User-Agent: NokiaC5-06/23.6.015 (SymbianOS/9.4; U; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C5-06 } } + readable: 'a Nokia C5-06 running Series60 5.0' +- + headers: 'User-Agent: NokiaE52/031.012 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E52 } } + readable: 'a Nokia E52 running Series60 3.2' +- + headers: 'User-Agent: NokiaE71x/ATT.03.28 Mozilla/5.0 SymbianOS/9.3; U; [en]; Series60/3.2; Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E71x } } + readable: 'a Nokia E71x running Series60 3.2' +- + headers: 'User-Agent: NokiaN-Gage/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0' + result: { os: { name: Series60, family: { name: Symbian, version: '6.1' }, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N-Gage } } + readable: 'a Nokia N-Gage running Series60 1.2' +- + headers: 'User-Agent: NokiaN-GageQD/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0' + result: { os: { name: Series60, family: { name: Symbian, version: '6.1' }, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'N-Gage QD' } } + readable: 'a Nokia N-Gage QD running Series60 1.2' +- + headers: 'User-Agent: NokiaN70-1/3.0546.2.3 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series60, family: Symbian, version: '2.8' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N70 } } + readable: 'a Nokia N70 running Series60 2.8' +- + headers: 'User-Agent: NokiaN72/ 5.0741.4.0.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: Series60, family: Symbian, version: '2.8' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N72 } } + readable: 'a Nokia N72 running Series60 2.8' +- + headers: 'User-Agent: NokiaN90-1/3.0545.5.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1 (en-US; rv:9.3.0) Clecko/20120116 Classilla/CFM' + result: { os: { name: Series60, family: Symbian, version: '2.8' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N90 } } + readable: 'a Nokia N90 running Series60 2.8' +- + headers: 'User-Agent: NokiaX5-00_TD/CMCC SymbianOS/9.3 Series60/3.2 Release/11.1026.019; Mozilla/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML,like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: X5-00 } } + readable: 'a Nokia X5-00 running Series60 3.2' +- + headers: 'User-Agent: nokia7660' + result: { os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '7660' } } + readable: 'a Nokia 7660 running Series60' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-windows.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-windows.yaml new file mode 100644 index 0000000..68734d2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-nokia-windows.yaml @@ -0,0 +1,132 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/3.1; XBLWP7; ZuneWP7; Nokia 1320)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1320' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 1320 running Windows Phone 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/3.1; XBLWP7; ZuneWP7; Nokia 820)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 820' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 820 running Windows Phone 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/3.1; XBLWP7; ZuneWP7; Nokia 920)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 920 running Windows Phone 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; 909)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1020' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 1020 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 1520)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1520' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 1520 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 520)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 520 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 525)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 525' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 525 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 530 Dual SIM)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 530' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 530 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 610)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 610' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 610 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 620)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 620' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 620 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 625)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 625' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 625 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 630 Dual SIM)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 630 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 635)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 635' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 635 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 710)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 710' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 710 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 720)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 720 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 730 Dual SIM)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 730' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 730 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 735)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 735' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 735 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 800)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 800 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 830)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 830' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 830 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 900)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 900' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 900 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 925)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 925 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 928)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 928' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 928 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 929)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 929 Icon' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 929 Icon running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 930)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 930' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 930 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; RM-1010)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 638' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 638 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; Lumia 521)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 521' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 521 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; Lumia 636)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 636' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 636 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; Lumia 810)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 810' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 810 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; Lumia 822)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 822' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 822 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; Nokia 526)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 526' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 526 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 505)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 505' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 505 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 510)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 510' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 510 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 719)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 719' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 719 running Windows Phone 7.5' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-samsung-android.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-samsung-android.yaml new file mode 100644 index 0000000..04b1f15 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-samsung-android.yaml @@ -0,0 +1,1100 @@ +- + headers: 'User-Agent: Android / Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy S5 running Android 4.4.2' +- + headers: 'User-Agent: Dalvik/1.2.0 (Linux; U; Android 2.2.1; GT-S5570 Build/FROYO)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mini' } } + readable: 'Android Browser on a Samsung Galaxy Mini running Android 2.2.1' +- + headers: 'User-Agent: Dalvik/1.2.0 (Linux; U; Android 2.2.1; SCH-R910 Build/FROYO)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Indulge 4G' } } + readable: 'Android Browser on a Samsung Galaxy Indulge 4G running Android 2.2.1' +- + headers: 'User-Agent: Dalvik/1.2.0 (Linux; U; Android 2.2; GT-I5500L Build/FROYO)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Europa' } } + readable: 'Android Browser on a Samsung Galaxy Europa running Android 2.2' +- + headers: 'User-Agent: Dalvik/1.4.0 (Linux; U; Android 2.3.6; GT-S5360 Build/GINGERBREAD)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y' } } + readable: 'Android Browser on a Samsung Galaxy Y running Android 2.3.6' +- + headers: 'User-Agent: Dalvik/1.4.0 (Linux; U; Android 2.3.6; GT-S6102 Build/GINGERBREAD)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y Duos' } } + readable: 'Android Browser on a Samsung Galaxy Y Duos running Android 2.3.6' +- + headers: 'User-Agent: Dalvik/1.4.0 (Linux; U; Android 2.3.6; GT-S6802 Build/GINGERBREAD)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace Duos' } } + readable: 'Android Browser on a Samsung Galaxy Ace Duos running Android 2.3.6' +- + headers: 'User-Agent: Dalvik/1.4.0 (Linux; U; Android 2.3.7; SCH-S720C Build/GINGERBREAD)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Proclaim' } } + readable: 'Android Browser on a Samsung Galaxy Proclaim running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 1.6; SCH-R830 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.97 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '44', type: browser }, engine: { name: Blink }, os: { name: Android, version: '1.6' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Axiom' } } + readable: 'Chrome 44 on a Samsung Galaxy Axiom running Android 1.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10.0; GT-S6310 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Young' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Young running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 17.0; GT-S7580 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend Plus' } } + readable: 'Chrome 43 on a Samsung Galaxy Trend Plus running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 2.2.1; GT-I9000 Build/FROYO) AppleWebKit/537.27 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.27' + result: { browser: { using: 'Chrome Content Shell' }, engine: { name: Webkit, version: '537.27' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S' } } + readable: 'Chrome Content Shell on a Samsung Galaxy S running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 2.3.6; Nexus S Build/GWK74) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Nexus S' } } + readable: 'Chrome 18 on a Samsung Nexus S running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.2; Galaxy X Build/ICL53F) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy X' } } + readable: 'Chrome 18 on a Samsung Galaxy X running Android 4.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; GT-I9003 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy SL' } } + readable: 'Chrome 18 on a Samsung Galaxy SL running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; GT-I9220 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note' } } + readable: 'Chrome 18 on a Samsung Galaxy Note running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SAMSUNG-SGH-I727 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Skyrocket' } } + readable: 'Chrome 18 on a Samsung Galaxy S II Skyrocket running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SGH-I897 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Captivate } } + readable: 'Chrome 18 on a Samsung Captivate running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SGH-T959 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Vibrant } } + readable: 'Chrome 18 on a Samsung Vibrant running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SGH-T989D Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II X' } } + readable: 'Chrome 18 on a Samsung Galaxy S II X running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SHV-E110S Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II LTE' } } + readable: 'Chrome 18 on a Samsung Galaxy S II LTE running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SHV-E120L Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II HD LTE' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy S II HD LTE running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-I8150 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy W' } } + readable: 'Chrome 18 on a Samsung Galaxy W running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-I9001 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Plus' } } + readable: 'Chrome 18 on a Samsung Galaxy S Plus running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-I500 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Fascinate } } + readable: 'Chrome 18 on a Samsung Fascinate running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SGH-I997 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Infuse 4G' } } + readable: 'Chrome 18 on a Samsung Infuse 4G running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SGH-T679 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Exhibit II' } } + readable: 'Chrome 18 on a Samsung Galaxy Exhibit II running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SHV-E170K Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy R' } } + readable: 'Chrome 18 on a Samsung Galaxy R running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SPH-D700 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Epic 4G' } } + readable: 'Chrome 18 on a Samsung Epic 4G running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-B5330 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Chat' } } + readable: 'Chrome 18 on a Samsung Galaxy Chat running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-I8258 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '32', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy M Style' } } + readable: 'Chrome 32 on a Samsung Galaxy M Style running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S5301 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.166 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Plus' } } + readable: 'Chrome 33 on a Samsung Galaxy Pocket Plus running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S5303 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y Plus' } } + readable: 'Chrome 30 on a Samsung Galaxy Y Plus running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S6010 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Music' } } + readable: 'Chrome 38 on a Samsung Galaxy Music running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S6012 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Music Duos' } } + readable: 'Chrome 18 on a Samsung Galaxy Music Duos running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S6500 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mini 2' } } + readable: 'Chrome 42 on a Samsung Galaxy Mini 2 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S7500 Build/IMM76I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace Plus' } } + readable: 'Chrome 27 on a Samsung Galaxy Ace Plus running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S7560 Build/IMM76I) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace II x' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Ace II x running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S7562 Build/452) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Duos' } } + readable: 'Chrome 31 on a Samsung Galaxy S Duos running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ISW11SC Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GALAXY S II WiMAX ISW11SC', carrier: au } } + readable: 'Chrome 18 on a Samsung GALAXY S II WiMAX ISW11SC running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I437 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Express' } } + readable: 'Chrome 18 on a Samsung Galaxy Express running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I547 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Rugby Pro' } } + readable: 'Chrome 18 on a Samsung Galaxy Rugby Pro running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-I577 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Exhilarate' } } + readable: 'Chrome 18 on a Samsung Galaxy Exhilarate running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SAMSUNG-SGH-T769 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Blaze' } } + readable: 'Chrome 18 on a Samsung Galaxy S Blaze running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SC-05D Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GALAXY Note SC-05D', carrier: DoCoMo } } + readable: 'Chrome 18 on a Samsung GALAXY Note SC-05D running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-I200 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Stellar' } } + readable: 'Chrome 18 on a Samsung Galaxy Stellar running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-R740C Build/IMM76D) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Discover' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Discover running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-S738C Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Centura' } } + readable: 'Chrome 18 on a Samsung Galaxy Centura running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-W2013 Build/HuaweiC8950D) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.47 Mobile Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-W2013 } } + readable: 'Chrome 25 on a Samsung SCH-W2013 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-i929 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.64, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Duos' } } + readable: 'Chrome Dev 28.0.1500.64 on a Samsung Galaxy S II Duos running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCL21 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GALAXY S III Progre SCL21', carrier: au } } + readable: 'Chrome 18 on a Samsung GALAXY S III Progre SCL21 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SGH-I757M Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Skyrocket HD' } } + readable: 'Chrome 18 on a Samsung Galaxy S II Skyrocket HD running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SGH-I927 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Captivate Glide' } } + readable: 'Chrome 18 on a Samsung Captivate Glide running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SGH-T699 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.92 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Relay' } } + readable: 'Chrome 30 on a Samsung Galaxy S Relay running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SGH-T959V Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S 4G' } } + readable: 'Chrome 18 on a Samsung Galaxy S 4G running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SPH-L300 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Victory' } } + readable: 'Chrome 18 on a Samsung Galaxy Victory running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SPH-M830 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Rush' } } + readable: 'Chrome 18 on a Samsung Galaxy Rush running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SPH-M950 Build/IMM76I) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Reverb' } } + readable: 'Chrome 18 on a Samsung Galaxy Reverb running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; Samsung GT-S9081 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-S9081 } } + readable: 'Chrome 18 on a Samsung GT-S9081 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; GT-I8190 Build/JRO03H) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III Mini' } } + readable: 'Chrome 18 on a Samsung Galaxy S III Mini running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; GT-I9260 Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Premier' } } + readable: 'Chrome 18 on a Samsung Galaxy Premier running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; SC-03E Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GALAXY S III α SC-03E', carrier: DoCoMo } } + readable: 'Chrome 18 on a Samsung GALAXY S III α SC-03E running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S5282 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Star' } } + readable: 'Chrome 18 on a Samsung Galaxy Star running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-I8160 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace 2' } } + readable: 'Chrome 18 on a Samsung Galaxy Ace 2 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-I8268 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-I8268 } } + readable: 'Chrome 18 on a Samsung GT-I8268 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-I8530 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Beam' } } + readable: 'Chrome 31 on a Samsung Galaxy Beam running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-I9070 Build/????V1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Advance' } } + readable: 'Chrome 33 on a Samsung Galaxy S Advance running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-I9105 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Plus' } } + readable: 'Chrome 18 on a Samsung Galaxy S II Plus running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S5283B Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Star Trios' } } + readable: 'Chrome 34 on a Samsung Galaxy Star Trios running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S5310 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Neo' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Pocket Neo running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S5312 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Neo Duos' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Pocket Neo Duos running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S5830 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace' } } + readable: 'Chrome 27 on a Samsung Galaxy Ace running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6293T Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Young Plus' } } + readable: 'Chrome 30 on a Samsung Galaxy Young Plus running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6312 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Young Duos' } } + readable: 'Chrome 18 on a Samsung Galaxy Young Duos running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6313T Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y Duos TV' } } + readable: 'Chrome 27 on a Samsung Galaxy Y Duos TV running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6790 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame Lite' } } + readable: 'Chrome Dev 28.0.1500.94 on a Samsung Galaxy Fame Lite running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6792L Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame Lite Duos' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Fame Lite Duos running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6810 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame' } } + readable: 'Chrome 18 on a Samsung Galaxy Fame running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7262 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Star Pro' } } + readable: 'Chrome Dev 28.0.1500.94 on a Samsung Galaxy Star Pro running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7390 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend Lite' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Trend Lite running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7392 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Trend running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7572 Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend II Duos' } } + readable: 'Chrome 35 on a Samsung Galaxy Trend II Duos running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7710 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Xcover 2' } } + readable: 'Chrome 18 on a Samsung Galaxy Xcover 2 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7898 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend 2' } } + readable: 'Chrome 31 on a Samsung Galaxy Trend 2 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SAMSUNG-SGH-I407 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Amp' } } + readable: 'Chrome 18 on a Samsung Galaxy Amp running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SCH-I200PP Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '32', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Legend' } } + readable: 'Chrome 32 on a Samsung Galaxy Legend running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SCH-I415 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Stratosphere II' } } + readable: 'Chrome 29 on a Samsung Stratosphere II running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SCH-I739 Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend 2' } } + readable: 'Chrome 40 on a Samsung Galaxy Trend 2 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SCH-I759 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Infinite' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Infinite running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SCH-I829 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Style Duos' } } + readable: 'Chrome 27 on a Samsung Galaxy Style Duos running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SGH-T599 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Exhibit' } } + readable: 'Chrome 18 on a Samsung Galaxy Exhibit running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SHV-E220S Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pop' } } + readable: 'Chrome 18 on a Samsung Galaxy Pop running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SM-G3819D Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Win Pro' } } + readable: 'Chrome 34 on a Samsung Galaxy Win Pro running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SPH-M840 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ring' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Ring running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; xx; GT-N7100 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0.130207 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note II' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Note II running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; GT-I9050 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-I9050 } } + readable: 'Chrome 18 on a Samsung GT-I9050 running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; xx; GT-I9300 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy S III running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; xx; SAMSUNG GT-I8240 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0.130221 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-I8240 } } + readable: 'Samsung Internet 1.0 on a Samsung GT-I8240 running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; xx; SAMSUNG GT-I8245 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0.130221 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-I8245 } } + readable: 'Samsung Internet 1.0 on a Samsung GT-I8245 running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; xx; Samsung GT-I9500 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0.yymmdd Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S4 running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-I8200 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III Mini Value Edition' } } + readable: 'Chrome 31 on a Samsung Galaxy S III Mini Value Edition running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-I9060 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36' + result: { browser: { using: 'Chrome Content Shell' }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand Neo' } } + readable: 'Chrome Content Shell on a Samsung Galaxy Grand Neo running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-I9063T Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.131 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand Neo Duos' } } + readable: 'Chrome 36 on a Samsung Galaxy Grand Neo Duos running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-I9168I Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36' + result: { browser: { using: 'Chrome Content Shell' }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand Neo+' } } + readable: 'Chrome Content Shell on a Samsung Galaxy Grand Neo+ running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505G Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 (Google Edition)' } } + readable: 'Chrome 27 on a Samsung Galaxy S4 (Google Edition) running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-I9600 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-I9600 } } + readable: 'Chrome 35 on a Samsung GT-I9600 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-S7582 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Duos 2' } } + readable: 'Chrome 30 on a Samsung Galaxy S Duos 2 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-S8530 Build/JDQ39E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Chrome 30 on a Samsung Wave II running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SGH-W2013 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.83 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SGH-W2013 } } + readable: 'Chrome 38 on a Samsung SGH-W2013 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SM-G3812B Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III Slim' } } + readable: 'Chrome 31 on a Samsung Galaxy S III Slim running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SM-G3858 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Beam 2' } } + readable: 'Chrome 38 on a Samsung Galaxy Beam 2 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; GT-I9200 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mega 6.3' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Mega 6.3 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; Galaxy Nexus Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Nexus' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Nexus running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I8580 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Advance' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Core Advance running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9082 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand Duos' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Grand Duos running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9100 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S II running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9128E Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Grand running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9150 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mega 5.8' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Mega 5.8 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9152 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mega 5.8 Plus' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Mega 5.8 Plus running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9190 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Mini' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S4 Mini running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9192 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Mini Duos' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S4 Mini Duos running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9230 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Golden' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Golden running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9295 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Active' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S4 Active running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9502 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Duos' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S4 Duos running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-I9506 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Advance' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S4 Advance running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-S7270 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace 3' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Ace 3 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG GT-S7272 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace 3 Duos' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Ace 3 Duos running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SCH-I665 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-I665 } } + readable: 'Samsung Internet 1.0 on a Samsung SCH-I665 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SCH-R890 USCC Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-R890 } } + readable: 'Samsung Internet 1.0 on a Samsung SCH-R890 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SGH-T399 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Light' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Light running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SHV-E500L Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Win' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Win running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SM-C101 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Zoom' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy S4 Zoom running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SM-G3502U Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend 3' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Trend 3 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SM-G3815/G3815XXEAMH3 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19' + result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Express 2' } } + readable: 'Samsung Internet 1.0 on a Samsung Galaxy Express 2 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SM-N900 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Note 3 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SC-02F Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GALAXY J SC-02F', carrier: DoCoMo } } + readable: 'Samsung Internet 1.5 on a Samsung GALAXY J SC-02F running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-G310R5 Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GreatCall Touch 3' } } + readable: 'Samsung Internet 1.5 on a Samsung GreatCall Touch 3 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-G3518 Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Core running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-G3586V Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Lite' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Core Lite running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-G710 Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand 2' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Grand 2 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-G910S Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Round' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Round running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-N750 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3 Neo' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Note 3 Neo running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-S765C Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace Style' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Ace Style running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-T255S Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Tab Q' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Tab Q running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG-SM-W2014 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy W2014' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy W2014 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; GT-T959 Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Vibrant' } } + readable: 'Chrome 35 on a Samsung Galaxy S Vibrant running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SM-G110B Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket 2' } } + readable: 'Chrome 35 on a Samsung Galaxy Pocket 2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SM-G130E Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Star 2' } } + readable: 'Chrome 33 on a Samsung Galaxy Star 2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SM-G130H Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Young 2' } } + readable: 'Chrome 33 on a Samsung Galaxy Young 2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SM-G130HN Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Young 2 Duos' } } + readable: 'Chrome 33 on a Samsung Galaxy Young 2 Duos running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG GT-I9301I Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S3 Neo' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy S3 Neo running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG GT-I9400 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-I9400 } } + readable: 'Samsung Internet 1.5 on a Samsung GT-I9400 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG GT-I9405I Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-I9405 } } + readable: 'Samsung Internet 1.6 on a Samsung GT-I9405 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG GT-I9406V Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-I9406 } } + readable: 'Samsung Internet 1.6 on a Samsung GT-I9406 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG GT-I9515 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Neo' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy S4 Neo running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-C111 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy K Zoom' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy K Zoom running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-G310H Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace 4' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Ace 4 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-G3556D Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core 2' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Core 2 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-G510F Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Max' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Core Max running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-G800F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5 Mini' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy S5 Mini running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-G860P Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5 Sport' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy S5 Sport running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-G870F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5 Active' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy S5 Active running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-N9100 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 4' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy Note 4 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; SM-G900FG Build/KTU84F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5 (Google Edition)' } } + readable: 'Chrome 34 on a Samsung Galaxy S5 (Google Edition) running Android 4.4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; xx; SAMSUNG SM-G750F Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mega 2 ' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy Mega 2 running Android 4.4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; xx; SAMSUNG SM-G850F Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Alpha' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy Alpha running Android 4.4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SAMSUNG SM-G318H Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace 4 Neo' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Ace 4 Neo running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SAMSUNG SM-G388F Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Xcover 3' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Xcover 3 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SAMSUNG SM-J100F Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy J1' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy J1 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SAMSUNG SM-J110G Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy J1 Ace' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy J1 Ace running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SM-G360BT Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Win 2 Duos TV' } } + readable: 'Chrome 36 on a Samsung Galaxy Win 2 Duos TV running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-A300FU Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A3' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy A3 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-A5000 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A5' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy A5 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-A7000 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A7' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy A7 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-E500F Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy E5' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy E5 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-E7000 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy E7' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy E7 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-N9150 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note Edge' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Note Edge running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG-SM-W2015 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.6', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Golden 2' } } + readable: 'Samsung Internet 1.6 on a Samsung Galaxy Golden 2 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; SAMSUNG SM-G430 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SM-G430 } } + readable: 'Samsung Internet 3.0 on a Samsung SM-G430 running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; SAMSUNG SM-G925F Build/LRX21V) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S6 Edge' } } + readable: 'Samsung Internet 3.0 on a Samsung Galaxy S6 Edge running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; SM-G920F Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S6' } } + readable: 'Samsung Internet 3.0 on a Samsung Galaxy S6 running Android 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SAMSUNG-SM-G890A Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.0 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '4.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S6 Active' } } + readable: 'Samsung Internet 4.0 on a Samsung Galaxy S6 Active running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-A800F Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A8' } } + readable: 'Samsung Internet 3.2 on a Samsung Galaxy A8 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-G360F Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Prime' } } + readable: 'Samsung Internet 3.2 on a Samsung Galaxy Core Prime running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-G361F Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Prime VE' } } + readable: 'Samsung Internet 3.2 on a Samsung Galaxy Core Prime VE running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-G420 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SM-G420 } } + readable: 'Samsung Internet 3.0 on a Samsung SM-G420 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-G530FZ Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.3 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.3', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand Prime' } } + readable: 'Samsung Internet 3.3 on a Samsung Galaxy Grand Prime running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-G531F Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand Prime VE' } } + readable: 'Samsung Internet 3.2 on a Samsung Galaxy Grand Prime VE running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-J500F Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy J5' } } + readable: 'Samsung Internet 3.2 on a Samsung Galaxy J5 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-N9200 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.4 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.4', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 5' } } + readable: 'Samsung Internet 3.4 on a Samsung Galaxy Note 5 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-A310F Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A3 (2016)' } } + readable: 'Samsung Internet 3.5 on a Samsung Galaxy A3 (2016) running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-A510F Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A5 (2016)' } } + readable: 'Samsung Internet 3.5 on a Samsung Galaxy A5 (2016) running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-G600FY Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy On7' } } + readable: 'Samsung Internet 3.5 on a Samsung Galaxy On7 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-G7202 Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.3 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.3', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Grand 3' } } + readable: 'Samsung Internet 3.3 on a Samsung Galaxy Grand 3 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-G903F Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.3 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.3', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S5 Neo' } } + readable: 'Samsung Internet 3.3 on a Samsung Galaxy S5 Neo running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-G9280 Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.4 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.4', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S6 Edge+' } } + readable: 'Samsung Internet 3.4 on a Samsung Galaxy S6 Edge+ running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-J200FN Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy J2' } } + readable: 'Samsung Internet 3.5 on a Samsung Galaxy J2 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-J320F Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy J3' } } + readable: 'Samsung Internet 3.5 on a Samsung Galaxy J3 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-J700F Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.3 Chrome/38.0.2125.102 Mobile Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.3', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy J7' } } + readable: 'Samsung Internet 3.3 on a Samsung Galaxy J7 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SM-G550FY Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '46', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy On5' } } + readable: 'Chrome 46 on a Samsung Galaxy On5 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5; xx; GT-I5700 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Spica' } } + readable: 'Android Browser on a Samsung Galaxy Spica running Android 1.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5; xx; Galaxy Build/CUPCAKE) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '525.10' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Galaxy } } + readable: 'Android Browser on a Samsung Galaxy running Android 1.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5; xx; SPH-M900 Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Moment } } + readable: 'Android Browser on a Samsung Moment running Android 1.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; GT-I5800 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Apollo' } } + readable: 'Android Browser on a Samsung Galaxy Apollo running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; GT-I6500U Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Saturn } } + readable: 'Android Browser on a Samsung Saturn running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; SCH-I100 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Gem } } + readable: 'Android Browser on a Samsung Gem running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; SCH-I400 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Continuum } } + readable: 'Android Browser on a Samsung Continuum running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; SCH-R880 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Acclaim } } + readable: 'Android Browser on a Samsung Acclaim running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; SHW-M100S Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A' } } + readable: 'Android Browser on a Samsung Galaxy A running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; SPH-M910 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Intercept } } + readable: 'Android Browser on a Samsung Intercept running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; GT-I5510L Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy 551' } } + readable: 'Android Browser on a Samsung Galaxy 551 running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; GT-S5660 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Gio' } } + readable: 'Android Browser on a Samsung Galaxy Gio running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; GT-S5670 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fit' } } + readable: 'Android Browser on a Samsung Galaxy Fit running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SCH-I510 4G Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Droid Charge' } } + readable: 'Android Browser on a Samsung Droid Charge running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SCH-R915 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Indulge' } } + readable: 'Android Browser on a Samsung Galaxy Indulge running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SCH-W899 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-W899 } } + readable: 'Android Browser on a Samsung SCH-W899 running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SGH-T839 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'T-Mobile Sidekick' } } + readable: 'Android Browser on a Samsung T-Mobile Sidekick running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SGH-T959P Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Fascinate 4G' } } + readable: 'Android Browser on a Samsung Galaxy S Fascinate 4G running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SHW-M130K Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy K' } } + readable: 'Android Browser on a Samsung Galaxy K running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SHW-M130L Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy U' } } + readable: 'Android Browser on a Samsung Galaxy U running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SHW-M190S Build/FROYO) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Hoppin' } } + readable: 'Android Browser on a Samsung Galaxy S Hoppin running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; xx; SHW-M220L Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Neo' } } + readable: 'Android Browser on a Samsung Galaxy Neo running Android 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; GT-B7510 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pro' } } + readable: 'Android Browser on a Samsung Galaxy Pro running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; GT-I8000 Build/FRG83G) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia 2' } } + readable: 'Android Browser on a Samsung Omnia 2 running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; SAMSUNG-SGH-I857 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: DoubleTime } } + readable: 'Android Browser on a Samsung DoubleTime running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; SCH-M828C Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Precedent' } } + readable: 'Android Browser on a Samsung Galaxy Precedent running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; SGH-T499 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Dart } } + readable: 'Android Browser on a Samsung Dart running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; SGH-T589 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Gravity Smart' } } + readable: 'Android Browser on a Samsung Gravity Smart running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; SPH-M580 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Replenish } } + readable: 'Android Browser on a Samsung Replenish running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; SPH-M920 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Transform } } + readable: 'Android Browser on a Samsung Transform running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; xx; GT-I9010 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Giorgio Armani' } } + readable: 'Android Browser on a Samsung Galaxy S Giorgio Armani running Android 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; xx; SGH-T959D Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Fascinate 3G+' } } + readable: 'Android Browser on a Samsung Galaxy S Fascinate 3G+ running Android 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; xx; SPH-M820 Build/Build_Ver) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Prevail' } } + readable: 'Android Browser on a Samsung Galaxy Prevail running Android 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; xx; SCH-R720 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Admire } } + readable: 'Android Browser on a Samsung Admire running Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.3; xx; SGH-T759 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Exhibit 4G' } } + readable: 'Android Browser on a Samsung Exhibit 4G running Android 2.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; SCH-I510 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Stealth V' } } + readable: 'Android Browser on a Samsung Stealth V running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; SCH-R680 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Repp } } + readable: 'Android Browser on a Samsung Repp running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; SCH-R730 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Transfix } } + readable: 'Android Browser on a Samsung Transfix running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; SPH-D600 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Conquer 4G' } } + readable: 'Android Browser on a Samsung Conquer 4G running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; SPH-M930 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Transform Ultra' } } + readable: 'Android Browser on a Samsung Transform Ultra running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; GT-B5510 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y Pro' } } + readable: 'Android Browser on a Samsung Galaxy Y Pro running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; SCH-I110 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Illusion } } + readable: 'Android Browser on a Samsung Illusion running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; xx; SCH-I405 4G Build/EI2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Stratosphere } } + readable: 'Android Browser on a Samsung Stratosphere running Android 2.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; en-; GT-S5300 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket' } } + readable: 'Android Browser on a Samsung Galaxy Pocket running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; en-; GT-S5302 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Duos' } } + readable: 'Android Browser on a Samsung Galaxy Pocket Duos running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-B5512 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y Pro Duos' } } + readable: 'Android Browser on a Samsung Galaxy Y Pro Duos running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-B9062 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-B9062 } } + readable: 'Android Browser on a Samsung GT-B9062 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-B9120 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-B9120 } } + readable: 'Android Browser on a Samsung GT-B9120 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-I8250 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Beam' } } + readable: 'Android Browser on a Samsung Galaxy Beam running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-S5367 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y TV' } } + readable: 'Android Browser on a Samsung Galaxy Y TV running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-S5368 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y' } } + readable: 'Android Browser on a Samsung Galaxy Y running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-S5690 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Xcover' } } + readable: 'Android Browser on a Samsung Galaxy Xcover running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; GT-S6800 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace Advance' } } + readable: 'Android Browser on a Samsung Galaxy Ace Advance running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; Galaxy Mini Plus 4G Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mini Plus' } } + readable: 'Android Browser on a Samsung Galaxy Mini Plus running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SAMSUNG-SCH-I629 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame' } } + readable: 'Android Browser on a Samsung Galaxy Fame running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SAMSUNG-SGH-I827 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Appeal' } } + readable: 'Android Browser on a Samsung Galaxy Appeal running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SAMSUNG-SGH-I847 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Rugby Smart' } } + readable: 'Android Browser on a Samsung Rugby Smart running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-I339 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-I339 } } + readable: 'Android Browser on a Samsung SCH-I339 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-I519 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-I519 } } + readable: 'Android Browser on a Samsung SCH-I519 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-I619 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace A+' } } + readable: 'Android Browser on a Samsung Galaxy Ace A+ running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-I779 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Saga } } + readable: 'Android Browser on a Samsung Saga running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-R920 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Attain 4G' } } + readable: 'Android Browser on a Samsung Galaxy Attain 4G running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-R930 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 USCC-R930' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Aviator' } } + readable: 'Android Browser on a Samsung Galaxy S Aviator running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-R940 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Lightray' } } + readable: 'Android Browser on a Samsung Galaxy S Lightray running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-S950C Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Showcase' } } + readable: 'Android Browser on a Samsung Galaxy S Showcase running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SCH-W999 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-W999 } } + readable: 'Android Browser on a Samsung SCH-W999 running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; xx; SHW-M340K Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy M Style' } } + readable: 'Android Browser on a Samsung Galaxy M Style running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.7; xx; GT-I8320 Build/GINGERBREAD; 480*800) AppleWebKit/528.5 (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, model: GT-I8320 } } + readable: 'Android Browser on a GT-I8320 running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; GT-I777 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Singa } } + readable: 'Android Browser on a Samsung Singa running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; SAMSUNG-GT-B9388_TD/1.0 Android/4.0.4 Release/09.15.2012 Browser/AppleWebKit534.30 Build/IMM76D) ApplelWebkit/534.30 (KHTML,like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: GT-B9388 } } + readable: 'Android Browser on a Samsung GT-B9388 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; xx; GT-S8500 Build/JZO54K; CyanogenMod-10) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Android Browser on a Samsung Wave running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.2; xx; SCH-W789 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-W789 } } + readable: 'Android Browser on a Samsung SCH-W789 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; SHV-E400S Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Folder' } } + readable: 'Android Browser on a Samsung Galaxy Folder running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; SAMSUNG-SCH-I679 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: SCH-I679 } } + readable: 'Android Browser on a Samsung SCH-I679 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; SM-G3568V Build/KOT49H) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 light/1.0 baiduboxapp/6.9 (Baidu; P1 4.4.2)' + result: { browser: { name: 'Baidu Browser', version: '6.9', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Mini' } } + readable: 'Baidu Browser 6.9 on a Samsung Galaxy Core Mini running Android 4.4.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-samsung-bada.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-samsung-bada.yaml new file mode 100644 index 0000000..cb95b5e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-samsung-bada.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: Mozilla/13.0 (SAMSUNG; SAMSUNG-GT-S8530/S8530XXLA1; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 3.0 on a Samsung Wave II running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT- S5250/ S5250VJKC1; U; Bada/1.0; pt- br) AppleWebKit/ 533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/ MIDP-2.1 configuration/ CLDC-1.1 OPN- B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 525' } } + readable: 'Dolfin 2.0 on a Samsung Wave 525 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT- S8600/1.0; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM- MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 3' } } + readable: 'Dolfin 3.0 on a Samsung Wave 3 running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5330/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 533' } } + readable: 'Dolfin 2.0 on a Samsung Wave 533 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380-BOUYGUES/S5380AGKK5; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'Dolfin 3.0 on a Samsung Wave Y running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5750E-BOUYGUES/S5750EAGKD1; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 575' } } + readable: 'Dolfin 2.0 on a Samsung Wave 575 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7230B/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 2.0 on a Samsung Wave 723 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7250-BOUYGUES/S7250AGLA3; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave M' } } + readable: 'Dolfin 3.0 on a Samsung Wave M running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500-BOUYGUES/S8500AGKG2; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-siemens.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-siemens.yaml new file mode 100644 index 0000000..5eb562b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-siemens.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: SIE-3118' + readable: 'a Siemens 3118' + result: { device: { type: mobile, subtype: feature, manufacturer: Siemens, model: '3118' } } +- + headers: 'User-Agent: SIE-6618' + readable: 'a Siemens 6618' + result: { device: { type: mobile, subtype: feature, manufacturer: Siemens, model: '6618' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-sony.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-sony.yaml new file mode 100644 index 0000000..928b597 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-sony.yaml @@ -0,0 +1,316 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 2.3.7; SOL25 Build/17.1.1.C.1.64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Blink }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia ZL2 SOL25', carrier: au } } + readable: 'Chrome 39 on a Sony Xperia ZL2 SOL25 running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LT22i Build/6.1.1.B.1.75) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia P' } } + readable: 'Chrome 18 on a Sony Xperia P running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LT26i Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia S' } } + readable: 'Chrome 18 on a Sony Xperia S running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; C1604 Build/11.1.A.0.53) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E dual' } } + readable: 'Chrome 27 on a Sony Xperia E dual running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; C6603 Build/4.1.B.1.13) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z' } } + readable: 'Chrome 18 on a Sony Xperia Z running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT25c Build/9.0.E.0.287) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia VC' } } + readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia VC running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT25i Build/9.0.1.D.0.10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia V' } } + readable: 'Chrome 18 on a Sony Xperia V running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT26ii Build/6.1.A.2.45) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia SL' } } + readable: 'Chrome 18 on a Sony Xperia SL running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT26w Build/6.1.A.1.58) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Acro S' } } + readable: 'Chrome 18 on a Sony Xperia Acro S running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT28at Build/6.1.C.0.357) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Ion' } } + readable: 'Chrome 18 on a Sony Xperia Ion running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT29i Build/7.0.A.1.303) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia TX' } } + readable: 'Chrome 18 on a Sony Xperia TX running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT30a Build/7.0.A.3.193) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia T' } } + readable: 'Chrome 18 on a Sony Xperia T running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MT25i Build/4.1.B.0.479) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Neo L' } } + readable: 'Chrome 18 on a Sony Xperia Neo L running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MT27i Build/6.1.1.B.1.10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Sola' } } + readable: 'Chrome 18 on a Sony Xperia Sola running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SO-01E Build/9.0.G.0.217) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia AX SO-01E', carrier: DoCoMo } } + readable: 'Chrome 18 on a Sony Xperia AX SO-01E running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SO-04D Build/7.0.D.1.117) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia GX SO-04D', carrier: DoCoMo } } + readable: 'Chrome 18 on a Sony Xperia GX SO-04D running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SO-05D Build/7.0.D.1.117) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia SX SO-05D', carrier: DoCoMo } } + readable: 'Chrome 18 on a Sony Xperia SX SO-05D running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SOL21 Build/9.0.F.0.195) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia VL SOL21', carrier: au } } + readable: 'Chrome 18 on a Sony Xperia VL SOL21 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ST21a Build/11.0.A.0.16) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Tipo' } } + readable: 'Chrome 18 on a Sony Xperia Tipo running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ST21a2 Build/11.0.A.1.12) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Tipo Dual' } } + readable: 'Chrome 27 on a Sony Xperia Tipo Dual running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ST23a Build/11.0.A.2.10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Miro' } } + readable: 'Chrome 18 on a Sony Xperia Miro running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ST25i Build/6.1.1.B.1.10;compatible iPhone) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia U' } } + readable: 'Chrome 18 on a Sony Xperia U running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ST26a Build/11.0.A.3.28) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia J' } } + readable: 'Chrome 18 on a Sony Xperia J running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ST27a Build/6.1.1.B.0.145) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Go' } } + readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia Go running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; C1504 Build/11.3.A.0.47) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E' } } + readable: 'Chrome 18 on a Sony Xperia E running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; C2105 Build/15.0.A.0.20) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia L' } } + readable: 'Chrome 18 on a Sony Xperia L running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; C1904 Build/15.1.A.1.3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M' } } + readable: 'Chrome 18 on a Sony Xperia M running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; C5302 Build/12.0.A.1.211) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia SP' } } + readable: 'Chrome 18 on a Sony Xperia SP running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; C5502 Build/10.1.1.A.1.310) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia ZR' } } + readable: 'Chrome 18 on a Sony Xperia ZR running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; C6502 Build/10.1.1.A.1.253) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia ZL' } } + readable: 'Chrome 18 on a Sony Xperia ZL running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SO-04E Build/10.1.1.D.0.179) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia A SO-04E', carrier: DoCoMo } } + readable: 'Chrome 18 on a Sony Xperia A SO-04E running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SOL22 Build/10.2.F.3.43) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia UL SOL22', carrier: au } } + readable: 'Chrome 18 on a Sony Xperia UL SOL22 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; C2305 Build/16.0.B.2.13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.38 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia C' } } + readable: 'Chrome 42 on a Sony Xperia C running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; e2006_v89_cxq_AHD Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E4g' } } + readable: 'Chrome 31 on a Sony Xperia E4g running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; C2004 Build/15.2.A.1.12) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M dual' } } + readable: 'Chrome Dev 26.0.1410.58 on a Sony Xperia M dual running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; C6802 Build/14.1.B.0.406) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z Ultra' } } + readable: 'Chrome 27 on a Sony Xperia Z Ultra running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; C6902 Build/14.1.G.1.493) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1' } } + readable: 'Chrome Dev 26.0.1410.58 on a Sony Xperia Z1 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SO-02F Build/14.1.H.1.230) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1 f SO-02F', carrier: DoCoMo } } + readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia Z1 f SO-02F running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3.1; D2303 Build/21.0.D.8.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.3.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M2' } } + readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia M2 running Android 4.3.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3.1; Xperia Z Ultra Build/JLS36I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.3.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z Ultra (Google Edition)' } } + readable: 'Chrome 31 on a Sony Xperia Z Ultra (Google Edition) running Android 4.3.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; 401SO Build/14.2.A.1.136) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z3 401SO', carrier: Softbank } } + readable: 'Chrome 39 on a Sony Xperia Z3 401SO running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; C6916 Build/14.2.C.0.159) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1s' } } + readable: 'Chrome 31 on a Sony Xperia Z1s running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; D2004 Build/20.0.A.1.12) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E1' } } + readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia E1 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; D2104 Build/20.0.B.0.84) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E1 dual' } } + readable: 'Chrome 40 on a Sony Xperia E1 dual running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; D5303 Build/19.0.1.A.0.169) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.138 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia T2 Ultra' } } + readable: 'Chrome 35 on a Sony Xperia T2 Ultra running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; D5322 Build/19.0.D.0.253) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia T2 Ultra dual' } } + readable: 'Chrome 31 on a Sony Xperia T2 Ultra dual running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; D5503 Build/14.2.A.1.114) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1 Compact' } } + readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia Z1 Compact running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; Xperia Z2 Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z2' } } + readable: 'Chrome 39 on a Sony Xperia Z2 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; D2202 Build/18.4.A.1.25) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E3' } } + readable: 'Chrome 35 on a Sony Xperia E3 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; D2212 Build/18.4.B.1.20) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E3 dual' } } + readable: 'Chrome 35 on a Sony Xperia E3 dual running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; D2403 Build/18.3.C.0.24) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M2 Aqua' } } + readable: 'Chrome 34 on a Sony Xperia M2 Aqua running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; D2502 Build/19.2.1.A.0.72) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia C3 dual' } } + readable: 'Chrome 35 on a Sony Xperia C3 dual running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; D2533 Build/19.2.1.A.0.72) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia C3' } } + readable: 'Chrome 35 on a Sony Xperia C3 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; D5102 Build/18.2.A.1.14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia T3' } } + readable: 'Chrome 34 on a Sony Xperia T3 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SO-04F Build/14.3.B.0.251) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.136 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia A2 SO-04F', carrier: DoCoMo } } + readable: 'Chrome 33 on a Sony Xperia A2 SO-04F running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; D5788 Build/14.4.C.0.114) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia J1 Compact' } } + readable: 'Chrome 36 on a Sony Xperia J1 Compact running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; D5803 Build/23.0.1.A.5.77) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z3 Compact' } } + readable: 'Chrome 35 on a Sony Xperia Z3 Compact running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; D6708 Build/23.0.E.0.307) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z3v' } } + readable: 'Chrome 35 on a Sony Xperia Z3v running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; E2033 Build/25.0.B.0.10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E4g dual' } } + readable: 'Chrome 35 on a Sony Xperia E4g dual running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; E2104 Build/24.0.A.1.34) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E4' } } + readable: 'Chrome 35 on a Sony Xperia E4 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; E2115 Build/24.0.B.1.34) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E4 dual' } } + readable: 'Chrome 42 on a Sony Xperia E4 dual running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; 402SO Build/28.0.C.0.413) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z4 402SO', carrier: Softbank } } + readable: 'Chrome 43 on a Sony Xperia Z4 402SO running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; D6683 Build/23.1.2.E.0.13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z3 dual' } } + readable: 'Chrome 39 on a Sony Xperia Z3 dual running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; E6533 Build/28.0.A.1.312) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z3+' } } + readable: 'Chrome 43 on a Sony Xperia Z3+ running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SO-04G Build/23.1.B.0.435) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia A4 SO-04G', carrier: DoCoMo } } + readable: 'Chrome 43 on a Sony Xperia A4 SO-04G running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; E2303 Build/26.1.A.0.114) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M4 Aqua' } } + readable: 'Chrome 40 on a Sony Xperia M4 Aqua running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; E2312 Build/26.1.B.1.85) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M4 Aqua dual' } } + readable: 'Chrome 39 on a Sony Xperia M4 Aqua dual running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; E5303 Build/27.1.A.1.106) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '44', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia C4' } } + readable: 'Chrome 44 on a Sony Xperia C4 running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; E5333 Build/27.1.B.1.106) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia C4 dual' } } + readable: 'Chrome 43 on a Sony Xperia C4 dual running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; E5506 Build/29.0.A.0.161) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia C5 Ultra' } } + readable: 'Chrome 43 on a Sony Xperia C5 Ultra running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; E5533 Build/29.0.B.0.161) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia C5 Ultra dual' } } + readable: 'Chrome 45 on a Sony Xperia C5 Ultra dual running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; E5603 Build/30.0.A.1.23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M5' } } + readable: 'Chrome 43 on a Sony Xperia M5 running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; E5643 Build/30.0.B.1.35) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M5 dual' } } + readable: 'Chrome 43 on a Sony Xperia M5 dual running Android 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; E5803 Build/32.0.A.4.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z5 Compact' } } + readable: 'Chrome 43 on a Sony Xperia Z5 Compact running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; E6603 Build/32.0.A.4.11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z5' } } + readable: 'Chrome 43 on a Sony Xperia Z5 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; E6683 Build/32.0.A.5.19) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z5 dual' } } + readable: 'Chrome 43 on a Sony Xperia Z5 dual running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; E6853 Build/32.0.A.6.115) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '44', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z5 Premium' } } + readable: 'Chrome 44 on a Sony Xperia Z5 Premium running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; Hayabusa Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia GX or TX' } } + readable: 'Android Browser on a Sony Xperia GX or TX running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; SonySO-04EM Build/10.3.1.B.2.13) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia feat. HATSUNE MIKU SO-04E', carrier: DoCoMo } } + readable: 'Android Browser on a Sony Xperia feat. HATSUNE MIKU SO-04E running Android 4.2.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-sonyericsson.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-sonyericsson.yaml new file mode 100644 index 0000000..1358bb0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-sonyericsson.yaml @@ -0,0 +1,88 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 2.3.7; SO-02D Build/6.1.A.2.55) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia NX SO-02D', carrier: DoCoMo } } + readable: 'Chrome 18 on a Sony Ericsson Xperia NX SO-02D running Android 2.3.7' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LT15i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Arc' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Arc running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; LT18i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Arc S' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Arc S running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; MT11i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Neo V' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Neo V running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; MT15i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Neo' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Neo running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; R800i Build/4.1.H.0.4) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Play' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Play running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SK17i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Mini Pro' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Mini Pro running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ST15i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Mini' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Mini running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; ST18i Build/4.1.A.0.562) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Ray' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Ray running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4 (Ice Cream Sandwich); WT19i (Live with Walkman) Build/4.1.B.0.587) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Live with Walkman' } } + readable: 'Chrome 18 on a Sony Ericsson Live with Walkman running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; IS12S Build/6.1.D.0.170) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia acro HD IS12S', carrier: au } } + readable: 'Chrome 18 on a Sony Ericsson Xperia acro HD IS12S running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MK16a Build/4.1.B.0.587) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Pro' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Pro running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SO-02C Build/IMM76D) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.8 Mobile Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia acro SO-02C', carrier: DoCoMo } } + readable: 'Chrome 25 on a Sony Ericsson Xperia acro SO-02C running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ST17a Build/4.1.B.0.587) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Active' } } + readable: 'Chrome 18 on a Sony Ericsson Xperia Active running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; Xperia X10 Build/IMM76L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X10' } } + readable: 'Chrome 31 on a Sony Ericsson Xperia X10 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; X8 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '37', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X8' } } + readable: 'Chrome 37 on a Sony Ericsson Xperia X8 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.6; xx; SonyEricssonE10a Build/1.1.A.0.8) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.6' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X10 Mini' } } + readable: 'Android Browser on a Sony Ericsson Xperia X10 Mini running Android 1.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.6; xx; SonyEricssonU20a Build/1.1.A.0.8) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: '1.6' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X10 Mini Pro' } } + readable: 'Android Browser on a Sony Ericsson Xperia X10 Mini Pro running Android 1.6' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; E16i Build/2.1.1.A.0.46) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'W8 Walkman' } } + readable: 'Android Browser on a Sony Ericsson W8 Walkman running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1-update1; xx; OMS1_6 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: A8i } } + readable: 'Android Browser on a Sony Ericsson A8i running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; WT18i Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Walkman } } + readable: 'Android Browser on a Sony Ericsson Walkman running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; Xperia X1 Build/ARCDroid V5) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Ydb/57' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X1' } } + readable: 'Android Browser on a Sony Ericsson Xperia X1 running Android 2.2.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-xiaomi.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-xiaomi.yaml new file mode 100644 index 0000000..d846e74 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/manufacturer-xiaomi.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; MI 5s Build/MXB48T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/51.0.2704.81 Mobile Safari/537.36 (#Build; Xiaomi; MI 5s; MXB48T; 6.0.1) +CoolMarket/7.1.3' + readable: 'Cool Market 7.1.3 on a Xiaomi Mi 5s running Android 6.0.1' + result: { browser: { name: 'Cool Market', using: { name: 'Chromium WebView', version: '51' }, version: 7.1.3, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 5s' } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/61.0.3163.128 Safari/534.24 XiaoMi/MiuiBrowser/9.4.1-Beta' + readable: 'MIUI Browser 9.4.1 on Android' + result: { browser: { name: 'MIUI Browser', family: { name: Chrome, version: 61 }, version: 9.4.1, type: browser }, engine: { name: Blink }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; MI 2 Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/1.0' + readable: 'MIUI Browser 1.0 on a Xiaomi Mi 2 running Android 4.1.1' + result: { browser: { name: 'MIUI Browser', version: '1.0', type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPad; U; CPU OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25 XiaoMi/MiuiBrowser/8.2.9' + readable: 'MIUI Browser 8.2.9 on a Xiaomi running Android' + result: { browser: { name: 'MIUI Browser', version: 8.2.9, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi } } +- + headers: 'User-Agent: Dalvik/2.1.0 (Linux; U; Android 6.0.1; Xiaomi MI Pad 3 Build/KC0J6G' + readable: 'Android Browser on a Xiaomi Mi Pad 3 running Android 6.0.1' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 6.0.1 }, device: { type: tablet, manufacturer: Xiaomi, model: 'Mi Pad 3' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; xx) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10 XiaoMi/Mi-Pad/MiuiBrowser/1.0' + readable: 'MIUI Browser 1.0 on a Xiaomi running Android' + result: { browser: { name: 'MIUI Browser', version: '1.0', type: browser }, engine: { name: Webkit, version: 531.21.10 }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi } } +- + headers: 'User-Agent: Xiaomi_2015052_TD-LTE/V1 Linux/3.10.61 Android/5.0 Release/7.7.2015 Browser/AppleWebKit537.36 Mobile Safari/537.36 System/Android 5.0 XiaoMi/MiuiBrowser/2.4.9' + readable: 'MIUI Browser 2.4.9 on a Xiaomi Redmi Note 2 running Android 5.0' + result: { browser: { name: 'MIUI Browser', version: 2.4.9, type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi Note 2' } } +- + headers: 'User-Agent: Xiaomi_2014011_TD/V1 Linux/3.4.5 Android/4.2.2 Release/02.18.2014 Browser/AppleWebKit534.30 Mobile Safari/534.30 XiaoMi/MiuiBrowser/1.0' + readable: 'MIUI Browser 1.0 on a Xiaomi Redmi 1S running Android 4.2.2' + result: { browser: { name: 'MIUI Browser', version: '1.0', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi 1S' } } +- + headers: 'User-Agent: Xiaomi/HM2 Linux/3.10.28 Android/4.4.4 Release/09.23.2014 Browser/AppleWebKit537.36 Mobile Safari/537.36' + readable: 'Android Browser on a Xiaomi Mi 1 running Android 4.4.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 1' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-aliyun.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-aliyun.yaml new file mode 100644 index 0000000..bad9655 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-aliyun.yaml @@ -0,0 +1,236 @@ +- + headers: 'User-Agent: HIKe_828A/1.0 Mozilla/5.0 (Linux; U; Android 4.2.2; xx; YunOS/2.0.1-R-20131122.0941) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart, manufacturer: HIKe, model: X1 } } + readable: 'a HIKe X1 running Aliyun OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux, U, Android 1.2.3.1-RT-20111115.194356; xx; W700 Build/Aliyun_TianyunVM_v0.2.3.0) AppleWebKit/533.1 (KHTML, like Gecko) BdMobile/2.3 Version/4.0 Mobile Safari/533.1 zhangbai/042_4.0.3.2_diordna_008_084/UYNAIT_8_653491.51111102-TR-1.3.2.1_007W/1084t/CCE5D7565644EE6079E8289A6C47590F%7C214674000160568/1' + result: { browser: { name: 'Baidu Browser', version: '2.3', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 1.2.3 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W700 } } + readable: 'Baidu Browser 2.3 on a K-Touch W700 running Aliyun OS 1.2.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; AMOI N850 Build/JOP40D YunOS/2.1.0-E-20130906.0730) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Amoi, model: N850 } } + readable: 'an Amoi N850 running Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; C2 Build/JOP40D YunOS/2.1.0-E20130710.1324) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Zopo, model: 'ZP960 C2' } } + readable: 'a Zopo ZP960 C2 running Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; VOTO V5 Build/JOP40D YunOS/2.1.0-E20130710.1324) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: VOTO, model: V5 } } + readable: 'a VOTO V5 running Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; AliyunOS 1.1; Android 4.0 Compatible; xx; A862W Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: '1.1' }, device: { type: mobile, subtype: smart, manufacturer: Amoi, model: A862W } } + readable: 'an Amoi A862W running Aliyun OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; AliyunOS 1.1; Android 4.0 Compatible; xx; V1 Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: '1.1' }, device: { type: mobile, subtype: smart, manufacturer: Konka, model: 'KOMI V1' } } + readable: 'a Konka KOMI V1 running Aliyun OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.3.0.14-RT-20120215.194046; xx; W700 Build/Aliyun_TianyunVM_v0.2.3.0) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.1 Mobile Safari/537.36' + result: { browser: { name: 'QQ Browser', version: '5.1', type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Aliyun OS', family: Android, version: 1.3.0 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W700 } } + readable: 'a K-Touch W700 running Aliyun OS 1.3.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5.0-R-20131231.1041; xx; MagicBox Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: 1.5.0 }, device: { type: television, manufacturer: Tmall, model: MagicBox } } + readable: 'a Tmall MagicBox running Aliyun OS 1.5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5.1.16-RT-20120531.214856; xx; K-Touch E619 Build/AliyunOs-2012) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.1.447 U3/0.8.0 Mobile Safari/533.1' + result: { browser: { name: 'UC Browser', version: '9.8', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 1.5.1 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: E619 } } + readable: 'UC Browser 9.8 on a K-Touch E619 running Aliyun OS 1.5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5.2.0-RT-20120926.155001; xx; K-Touch W619 Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/2.1.0' + result: { browser: { name: 'Sogou Mobile', version: '2.1', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: 1.5.2 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W619 } } + readable: 'Sogou Mobile 2.1 on a K-Touch W619 running Aliyun OS 1.5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5.2.1-RT-20120109.203024; xx; W700 Build/AliyunOs-2012) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 1.5.2 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W700 } } + readable: 'a K-Touch W700 running Aliyun OS 1.5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.6.0-R-20140228.1111; xx; MagicBox Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: 1.6.0 }, device: { type: television, manufacturer: Tmall, model: MagicBox } } + readable: 'a Tmall MagicBox running Aliyun OS 1.6.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.6.1-R-20140317.1520; xx; TCL_TK8263_T Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: 1.6.1 }, device: { type: mobile, subtype: smart, manufacturer: TCL, model: TK8263 } } + readable: 'a TCL TK8263 running Aliyun OS 1.6.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.7.0.0-T-20121001.042346; xx; HW-W718 Build/IML74K) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Webkit, version: '534.31' }, os: { name: 'Aliyun OS', family: Android, version: 1.7.0 }, device: { type: mobile, subtype: smart, manufacturer: Haier, model: W718 } } + readable: 'UC Browser on a Haier W718 running Aliyun OS 1.7.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3 YunOs 1.0.0.3; xx; K-Touch W619 Build/AliyunOs-2012) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 1.0.0 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W619 } } + readable: 'a K-Touch W619 running Aliyun OS 1.0.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2012.3-R-1103.0957; xx; LA-I2 Build/IMM76I) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Webkit, version: '534.31' }, os: { name: 'Aliyun OS', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Chili, model: I2 } } + readable: 'UC Browser on a Chili I2 running Aliyun OS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.0.1-R-20131023.1847) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.0.1-R-20131024.1019) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.1.0-E-20130905.1457) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.1.0-E1-20130910.1040) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.1.0-R-20130918.1106) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.1.0-R1-20130910.0853) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.3.0-E1-20131121.1608) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/1.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.3.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.3.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.5.0-R1-20131217.0928) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/1.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.5.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.5.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.7.0-E1-20140102.0529) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/1.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.7.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.7.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.7.1-E1-20140313.1303) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/3.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.7.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.7.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.7.1-R1-20140330.1752) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/3.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.7.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.7.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/2.7.2-R1-20140421.1520) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/3.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 2.7.2 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.7.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/3.0.0-E-20140312.1906) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/3.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 3.0.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 3.0.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/3.0.0-R-20140515.0715) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/3.0.0-20140515' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 3.0.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 3.0.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/3.0.0-X-20140312.0546) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/3.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 3.0.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 3.0.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/4.2.1) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/4.2.2) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; YunOS/4.4) AppleWebKit/536.28 (KHTML, like Gecko) Version/4.0 Mobile Safari/536.28 Tanggula/3.0.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '536.28' }, os: { name: 'Aliyun OS', family: Android, version: '4.4' }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.1; xx; YunOS/2.0.1-R-20130910.0255) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.1; xx; YunOS/2.0.1-R1-20131031.2032) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.1; xx; YunOS/2.0.1-R3-20130823.1808) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.1; xx; YunOS/2.1.0-E-20130910.1443) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.1; xx; YunOS/2.1.0-E1-20131107.1143) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0 YunOS Model/C2' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.1; xx; YunOS/2.1.0-R1-20130918.1109) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.1.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.1; xx; YunOS/2.3.0-R1-20131210.2313) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.3.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.3.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; YunOS/2.0.1-R-20131021.1053) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; YunOS/2.0.1-R6-20140123.2218) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.0.1 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; YunOS/2.3.0-E1-20131119.1122) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.3.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.3.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; YunOS/2.3.0-R-20131205.1527) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Tanggula/0.1.0' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 2.3.0 }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 2.3.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.5; xx; MI 2SC Build/YunOS) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2S' } } + readable: 'a Xiaomi Mi 2S running Aliyun OS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.5; xx; MI 2SC Build/YunOS) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.1 Mobile Safari/537.36' + result: { browser: { name: 'QQ Browser', version: '5.1', type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Aliyun OS', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2S' } } + readable: 'a Xiaomi Mi 2S running Aliyun OS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android v1.02_14.13-CH-2011.01.13; xx; ONDA_VI10 Build/ECLAIR) UC AppleWebKit/530 (KHTML, like Gecko) Mobile Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Webkit, version: '530' }, os: { name: 'Aliyun OS', family: Android, version: '1.02' }, device: { type: tablet, manufacturer: Onda, model: VI10 } } + readable: 'UC Browser on an Onda VI10 running Aliyun OS 1.02' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android v1.02_14.13-M_EN-2011.01.13; en_us) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Ninesky-android-mobile/2.1.0 Safari/533.1' + result: { browser: { name: NineSky, version: 2.1.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: '1.02' }, device: { type: mobile, subtype: smart } } + readable: 'Aliyun OS 1.02' +- + headers: 'User-Agent: Opera/9.80 (Android 1.5.2.0-RT-20120926.155001; Linux; Opera Mobi/ADR-1201041826; U; xx) Presto/2.9.201 Version/11.50' + result: { browser: { name: 'Opera Mobile', version: '11.50', type: browser }, engine: { name: Presto, version: 2.9.201 }, os: { name: 'Aliyun OS', family: Android, version: 1.5.2 }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 11.50 on Aliyun OS 1.5.2' +- + headers: 'User-Agent: Opera/9.80 (Android 1.6.1.16-RT-20120926.152630; Linux; Opera Mobi/ADR-1201041826; U; xx) Presto/2.9.201 Version/11.50' + result: { browser: { name: 'Opera Mobile', version: '11.50', type: browser }, engine: { name: Presto, version: 2.9.201 }, os: { name: 'Aliyun OS', family: Android, version: 1.6.1 }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 11.50 on Aliyun OS 1.6.1' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; AliyunOS 2.0; Android 4.0 Compatible; xx; C2 Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-Requested-With: com.aliyun.mobile.browser } + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Zopo, model: 'ZP960 C2' } } + readable: 'a Zopo ZP960 C2 running Aliyun OS 2.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; AliyunOS 2.0; Android 4.0 Compatible; xx; G9 Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-Requested-With: com.aliyun.mobile.browser } + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: GFive, model: G9 } } + readable: 'a GFive G9 running Aliyun OS 2.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; AliyunOS 2.0; Android 4.0 Compatible; xx; GO N1-Y Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-Requested-With: com.aliyun.mobile.browser } + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: GreenOrange, model: N1-Y } } + readable: 'a GreenOrange N1-Y running Aliyun OS 2.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Linux; U; AliyunOS 2.0; Android 4.0 Compatible; xx; R819T Build/AliyunOs-2012) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-Requested-With: com.aliyun.mobile.browser } + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: 'Aliyun OS', family: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Oppo, model: 'Real R819T' } } + readable: 'an Oppo Real R819T running Aliyun OS 2.0' +- + headers: { User-Agent: 'Opera/9.80 (Android; Opera Mini/7.8.35214/34.1571; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'Mozilla/5.0 (Linux; U; Android 4.2.5; zh-cn; MI 2SC Build/YunOS) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-OperaMini-Phone: 'Android #', X-OperaMini-Phone-UA: 'Mozilla/5.0 (Linux; U; Android 4.2.5; zh-cn; MI 2SC Build/YunOS) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30', X-OperaMini-Features: 'advanced, httpping, routing, camera, viewport, file_system, folding, touch, download' } + result: { browser: { name: 'Opera Mini', version: '7.8', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Aliyun OS', family: Android }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Mi 2S' } } + readable: 'Opera Mini 7.8 on a Xiaomi Mi 2S running Aliyun OS' +- + headers: 'User-Agent: K-Touch_W619/V01 Linux/2.6.38.6-perf Android/1.5.2.0-RT-20120926.155001 Release/06.16.2012 Browser/AppleWebKit533.1 Profile/Configuration/' + result: { browser: { name: 'Aliyun Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Aliyun OS', family: Android, version: 1.5.2 }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W619 } } + readable: 'a K-Touch W619 running Aliyun OS 1.5.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-android.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-android.yaml new file mode 100644 index 0000000..439943a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-android.yaml @@ -0,0 +1,336 @@ +- + headers: 'User-Agent: 3G Explorer/3.1.0.1085 (Linux;Android 4.3,SM-N9005) AppleWebKit/533.1 (357507050070039,01)' + result: { browser: { name: '3G Explorer', version: 3.1.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3' } } + readable: '3G Explorer 3.1.0 on a Samsung Galaxy Note 3 running Android 4.3' +- + headers: 'User-Agent: 3G Explorer/3.1.3.165 (Linux;Android 4.2.2,Lenovo K900) AppleWebKit/533.1 (860486024086613,00)' + result: { browser: { name: '3G Explorer', version: 3.1.3, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: K900 } } + readable: '3G Explorer 3.1.3 on a Lenovo K900 running Android 4.2.2' +- + headers: 'User-Agent: 4G Explorer/3.2.0 (Linux;Android 4.4.2,HTC 801e) AppleWebKit/533.1 (354439050552654,01)' + result: { browser: { name: '4G Explorer', version: 3.2.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: '4G Explorer 3.2.0 on a HTC One running Android 4.4.2' +- + headers: 'User-Agent: 4G Explorer/3.5.3 (Linux;Android 4.2.2,HM NOTE 1TD) AppleWebKit/533.1 (863990024967042,78)' + result: { browser: { name: '4G Explorer', version: 3.5.3, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi Note' } } + readable: '4G Explorer 3.5.3 on a Xiaomi Redmi Note running Android 4.2.2' +- + headers: 'User-Agent: AcerTD600_TD/1.0 Android/2.2 (Linux; Android 2.2) Release/12.20.2010 Browser/WAP 2.0 AppleWebKit/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Acer, model: 'beTouch TD600' } } + readable: 'Android Browser on an Acer beTouch TD600 running Android 2.2' +- + headers: 'User-Agent: COSHIP F2/1.0 Android/4.3 Release/JLS36C Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Coship, model: F2 } } + readable: 'Android Browser on a Coship F2 running Android 4.3' +- + headers: 'User-Agent: DESAY_TS808_TD/1.0 Android/2.3.5 (Linux; Android 2.3.5) Release/7.25.2012 Mozilla/5.0(Linux;U;Android 2.3.5) AppleWebKit/533.1(KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Desay, model: TS808 } } + readable: 'Android Browser on a Desay TS808 running Android 2.3.5' +- + headers: 'User-Agent: Diamond_S3/Diamond_S3 Linux/3.4.5+ Android/4.2.2 Release/Diamond_S3 Browser/AppleWebKit534.30 Profile/ Configuration/ Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Starmobile, model: 'Diamond S3' } } + readable: 'Android Browser on a Starmobile Diamond S3 running Android 4.2.2' +- + headers: 'User-Agent: GiONEE-GN705T_TD/V1 Linux/3.4.5 Android/4.2.1 Release/04.07.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 System/Android 4.2.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Gionee, model: GN705T } } + readable: 'Android Browser on a Gionee GN705T running Android 4.2.1' +- + headers: 'User-Agent: HS-T830_TD/1.0 Android/2.3 Release/09.27.2012 Browser/AppleWebKit533.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.3' }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: T830 } } + readable: 'Android Browser on a Hisense T830 running Android 2.3' +- + headers: 'User-Agent: Hisense I639M_LTE/1.0 Android/4.4 Release/15.12.2014 Browser/AppleWebKit537.36 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: I639M } } + readable: 'Android Browser on a Hisense I639M running Android 4.4' +- + headers: 'User-Agent: KONKA V980_TD/1.0 Android/4.0 Release/10.23.2012 Browser/AppleWebKit534.3 Profile/MIDP-2.0 Configuration/CLDC-1.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.3' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Konka, model: V980 } } + readable: 'Android Browser on a Konka V980 running Android 4.0' +- + headers: 'User-Agent: Karbonn A25 Linux/3.0.13 Android/4.0.4 Release/06.09.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Karbonn, model: A25 } } + readable: 'Android Browser on a Karbonn A25 running Android 4.0.4' +- + headers: 'User-Agent: Lenovo-A278t_TD/S100 Linux/2.6.35 Android/2.3.5 Release/09.03.2012 Browser/AppleWebkit533.1 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: A278 } } + readable: 'Android Browser on a Lenovo A278 running Android 2.3.5' +- + headers: 'User-Agent: Lephone_TD8208_TD/1.0 Android/2.3.5 MocorDroid/SpreadTrum Release/3.22.2012 Browser/AppleWebKit5333.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '5333.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Lephone, model: TD8208 } } + readable: 'Android Browser on a Lephone TD8208 running Android 2.3.5' +- + headers: 'User-Agent: MQQBrowser/3.0/Mozilla/5.0 (HW-HUAWEI_C8500/C8500V100R001C92B234;U;Android/2.1;240*320;CTC/2.0) AppleWebKit/530.17 Mobile Safari/530.17' + result: { browser: { name: 'QQ Browser', version: '3.0', type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: C8500 } } + readable: 'QQ Browser 3.0 on a Huawei C8500 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (HW-HUAWEI_C8500/C8500V100R001C92B234;U;Android/2.1;240*320;CTC/2.0) AppleWebKit/530.17 Mobile Safari/530.17 parameters/{scr=427_320,cm=1,ql=l,imei=a0000020ccd264,bm=1,eng=adrmini7,mdm=1,mdl=C8500,ps=1} tiantian(securitypay)' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: C8500 } } + readable: 'Android Browser on a Huawei C8500 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; Aspire V5-121 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Safari/537.36' + result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: desktop, manufacturer: Acer, model: 'Aspire V5-121' } } + readable: 'Chrome 40 on an Acer Aspire V5-121 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.99; Build/LPV81C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.69 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '5.0', alias: L } }, device: { type: mobile, subtype: smart } } + readable: 'Chrome 38 on Android L' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.63 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '44', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: mobile, subtype: smart } } + readable: 'Chrome 44 on Android M' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 02.00.06(2.1-update1); xx; i-station Buddy Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, model: 'i-station Buddy' } } + readable: 'Android Browser on an i-station Buddy running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; androVM for VirtualBox (''Tablet'' version with phone caps) Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.1 }, device: { type: emulator } } + readable: 'Android Browser on an emulator running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android Eclair; es-es Build/pandigitalopc1/sourceidDL00000009) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: tablet, manufacturer: Pandigital, model: OPC1 } } + readable: 'Android Browser on a Pandigital OPC1 running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android Eclair; xx; i-mobile i858 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: i-Mobile, model: i858 } } + readable: 'Android Browser on an i-Mobile i858 running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android KeyLimePie; xx; LG-D410 Build/KRS91B) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L90 } } + readable: 'Android Browser on a LG L90 running Android 4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android KeyLimePie; xx; LG-F320L Build/KRS92B) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'Android Browser on a LG G2 running Android 4.4' +- + headers: 'User-Agent: Mozilla/5.0 (MOT-XT800/TITA_M2_16.22.7;U;Android/2.1-update1;480*854;CTC/2.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT800' } } + readable: 'Android Browser on a Motorola MOTO XT800 running Android 2.1' +- + headers: 'User-Agent: NGM Dynamic Racing 2/V2 Linux/3.0.13 Android/4.2 Release/02.15.2012 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.2.2;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.2' }, device: { type: mobile, subtype: smart, manufacturer: NGM, model: 'Dynamic Racing 2' } } + readable: 'Android Browser on a NGM Dynamic Racing 2 running Android 4.2' +- + headers: 'User-Agent: OPPO_R811/1.0 Linux/3.0.13 Android/4.0 Release/10.15.2012 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Oppo, model: R811 } } + readable: 'Android Browser on an Oppo R811 running Android 4.0' +- + headers: 'User-Agent: T-smart_G18_TD/1.0 Linux/2.6.35 Android/2.3.5 Release/7.16.2012 Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/533.1 baidubrowser/061_6.5.4.2_diordna_084_023/trams-T_01_5.3.2_81G-trams-T/71' + result: { browser: { name: 'Baidu Browser', version: '2.4', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: T-smart, model: G18 } } + readable: 'Baidu Browser 2.4 on a T-smart G18 running Android 2.3.5' +- + headers: 'User-Agent: Xiaomi_2013022_TD/V1 Linux/3.4.5 Android/4.2.1 Release/03.11.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.2.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi 1' } } + readable: 'Android Browser on a Xiaomi Redmi 1 running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 (grouper) Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Safari/537.36 XiaoMi/MiPad/MiuiBrowser/1.0' + result: { browser: { name: 'MIUI Browser', version: '1.0', type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Asus, model: 'Nexus 7' } } + readable: 'MIUI Browser 1.0 on an Asus Nexus 7 running Android 4.4.2' +- + headers: 'User-Agent: MASTONE G3_TD/1.0 Android/2.3 Release/4.20.2012 Browser/AppleWebKit533.1 Profile/MIDP-2.0' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.3' }, device: { type: mobile, subtype: smart, manufacturer: Mastone, model: G3 } } + readable: 'Android Browser on a Mastone G3 running Android 2.3' +- + headers: 'User-Agent: MASTONE_G13_TD/V2 Linux/3.0.13 Android/4.0 Release/04.02.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.0.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Mastone, model: G13 } } + readable: 'Android Browser on a Mastone G13 running Android 4.0' +- + headers: 'User-Agent: Mastone_G9_TD/V2.00 Release/3.19.2012 Mozilla/5.0 (Linux; U; Android 2.3.5) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Mastone, model: G9 } } + readable: 'Android Browser on a Mastone G9 running Android 2.3.5' +- + headers: 'User-Agent: CoolPadCoolpad-8056_TD/1.0 Android/2.3.5(Linux; Android 2.3.5) Release/10.30.2012 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Coolpad, model: '8056' } } + readable: 'Android Browser on a Coolpad 8056 running Android 2.3.5' +- + headers: 'User-Agent: DESAY_TS908_CMCC_TD/1.0 Android/2.3.7 (LinuxOS 2.6.35.7) Release/04.13.2012 Browser/WAP2.0' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Desay, model: TS908 } } + readable: 'Android Browser on a Desay TS908 running Android 2.3.7' +- + headers: 'User-Agent: GiONEE_TD500_CMCC/1.0 Android/2.3.7 (LinuxOS 2.6.35.7) Release/11.28.2011 Browser/WAP2.0 (UCWEB/7.9.3)' + result: { browser: { name: 'UC Browser', version: '7.9', type: browser }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Gionee, model: TD500 } } + readable: 'UC Browser 7.9 on a Gionee TD500 running Android 2.3.7' +- + headers: 'User-Agent: HUAWEI Y325-T00_TD/V1 Linux/3.4.5 Android/2.3.6 Release/03.26.2013 Browser/AppleWebKit533.1 Mobile Safari/533.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend Y325' } } + readable: 'Android Browser on a Huawei Ascend Y325 running Android 2.3.6' +- + headers: 'User-Agent: Hisense_E602M_TDLTE/V3 Linux/3.4.67 Android/4.4.2 Release/04.01.2014 Browser/AppleWebKit537.36 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: E602M } } + readable: 'Android Browser on a Hisense E602M running Android 4.4.2' +- + headers: 'User-Agent: AMOI N820 Linux/3.0.13 Android/4.0.4 Release/08.24.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Amoi, model: N820 } } + readable: 'Android Browser on an Amoi N820 running Android 4.0.4' +- + headers: 'User-Agent: AT-AS40SE Linux/3.0.13 Android/4.0.4 Release/01.25.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Wolfgang, model: AT-AS40SE } } + readable: 'Android Browser on a Wolfgang AT-AS40SE running Android 4.0.4' +- + headers: 'User-Agent: E1-B Linux/3.0.13 Android/4.0.4 Release/06.05.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, model: E1-B } } + readable: 'Android Browser on an E1-B running Android 4.0.4' +- + headers: 'User-Agent: GT-I9300 Linux/3.0.13 Android/4.0.4 Release/09.25.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III' } } + readable: 'Android Browser on a Samsung Galaxy S III running Android 4.0.4' +- + headers: 'User-Agent: Mobiistar Touch Kem 452 Linux/3.0.13 Android/4.0.4 Release/09.21.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Mobiistar, model: 'Touch Kem 452' } } + readable: 'Android Browser on a Mobiistar Touch Kem 452 running Android 4.0.4' +- + headers: 'User-Agent: MI2-MI2/1.0 Linux/2.6.35.7 Android 2.3.5 Release/01.10.2013 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart } } + readable: 'Android Browser on Android 2.3.5' +- + headers: 'User-Agent: MF356ZP/A/V1 Linux/3.4.39 Android/4.4.4 Release/11.13.2014 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.4.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart } } + readable: 'Android Browser on Android 4.4.4' +- + headers: 'User-Agent: sprd-GT-N9300/1.0 Linux/2.6.35.7 Android/4.0.3 Release/11.29.2012 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Feiteng, model: GT-N9300 } } + readable: 'Android Browser on a Feiteng GT-N9300 running Android 4.0.3' +- + headers: 'User-Agent: OneBrowser/3.2/HS-T92_TD/1.0 Android/2.2 Release/12.10.2011 Browser/AppleWebKit533.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: OneBrowser, version: '3.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: T92 } } + readable: 'OneBrowser 3.2 on a Hisense T92 running Android 2.2' +- + headers: 'User-Agent: MQQBrowser/5.0/HS-T96_TD/1.0 Android/4.0 Release/5.10.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: T96 } } + readable: 'QQ Browser 5.0 on a Hisense T96 running Android 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; H30-T00) AppleWebKit/535.19 (KHTML, like Gecko) Version/4.0 LieBaoFast/2.9.0 Mobile Safari/535.19' + result: { browser: { name: LieBaoFast, version: 2.9.0, type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Honor 3C' } } + readable: 'LieBaoFast 2.9.0 on a Huawei Honor 3C running Android 4.2.2' +- + headers: 'User-Agent: Dr.Web anti-virus Light Version: 7.00.11.7032 Device model: HTC One Firmware version: 4.3' + result: { browser: { name: 'Dr. Web Light', version: '7.00', type: 'app:antivirus' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One (Google Edition)' } } + readable: 'Dr. Web Light 7.00 on a HTC One (Google Edition) running Android 4.3' +- + headers: 'User-Agent: Dr.Web anti-virus Light Version: 7.00.11.7032 Device model: Archos 50 Platinum Firmware version: 4.1.2' + result: { browser: { name: 'Dr. Web Light', version: '7.00', type: 'app:antivirus' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Archos, model: '50 Platinum' } } + readable: 'Dr. Web Light 7.00 on an Archos 50 Platinum running Android 4.1.2' +- + headers: 'User-Agent: Dr.Web anti-virus Light Version: 7.00.9.7030 Device model: HTC One mini Firmware version: 4.2.2' + result: { browser: { name: 'Dr. Web Light', version: '7.00', type: 'app:antivirus' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One Mini' } } + readable: 'Dr. Web Light 7.00 on a HTC One Mini running Android 4.2.2' +- + headers: 'User-Agent: GetJarSDK/20130503.06 (9) com.gau.go.launcherex.theme.superos7/1 android/4.0.3 (htc_europe; htc_golfu; HTC Desire C)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire C' } } + readable: 'Android Browser on a HTC Desire C running Android 4.0.3' +- + headers: 'User-Agent: GetJarSDK/20130814.07 (10) com.aceviral.agrr/13 android/2.3.5 (HUAWEI; U8850; HUAWEI-U8850)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: Vision } } + readable: 'Android Browser on a Huawei Vision running Android 2.3.5' +- + headers: 'User-Agent: GetJarSDK/20130302.04 (8) com.miniclip.railrush/24 android/4.3 (asus; WW_epad; K00E)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: '4.3' }, device: { type: tablet, manufacturer: Asus, model: 'Fonepad 7 (ME372CG)' } } + readable: 'Android Browser on an Asus Fonepad 7 (ME372CG) running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android, version: 3.2.1 }, device: { type: tablet, manufacturer: Asus, model: 'Eee Pad Transformer' } } + readable: 'Android Browser on an Asus Eee Pad Transformer running Android 3.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; Transformer TF101 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android, version: '3.2' }, device: { type: tablet, manufacturer: Asus, model: 'Eee Pad Transformer' } } + readable: 'Android Browser on an Asus Eee Pad Transformer running Android 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; ETBW11AA Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android, version: 3.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Asus, model: Tough } } + readable: 'Android Browser on an Asus Tough running Android 3.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3;+ HTC One S Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + readable: 'Chrome 18 on a HTC One S running Android 4.0.3' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One S' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; iw-il; **SonyST26i Build**/11.0.A.7.5) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + readable: 'Android Browser on a Sony Xperia J running Android 4.0.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia J' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; bg-bg SCH-I545 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + readable: 'Chrome 31 on a Samsung Galaxy S4 running Android 4.3' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; de-de; GT-I9100 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + readable: 'Android Browser on a Samsung Galaxy S II running Android 2.3' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5; GT-I7500) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' + readable: 'Android Browser on a Samsung Galaxy running Android 1.5' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '525.10' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Galaxy } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; fr-fr; Android Edition Starnaute Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + readable: 'Android Browser on a SFR STARNAUTE running Android 2.2.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: SFR, model: STARNAUTE } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; fr-fr; Android Edition StarText Build/V1.0.0B06) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + readable: 'Android Browser on a SFR STARTEXT running Android 2.2.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: SFR, model: STARTEXT } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; tr_TR; GT-S5360 BUILD/GINGERBREAD) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + readable: 'Android Browser on a Samsung Galaxy Y running Android 2.3.6' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; 2.3.5; en-us; SAMSUNG-SGH-I927 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + readable: 'Android Browser on a Samsung Captivate Glide running Android 2.3.5' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Captivate Glide' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; 2.3.4; en-us; X500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + readable: 'Android Browser on a ZTE Score running Android 2.3.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: Score } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android L; xx; Nexus 5 Build/LPV79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1' + readable: 'UC Browser 9.9 on a LG Nexus 5 running Android L' + result: { browser: { name: 'UC Browser', version: '9.9', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: { value: '5.0', alias: L } }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.99; Build/LPV79) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2094.0 Mobile Safari/537.36' + readable: 'Chrome Dev 38.0.2094.0 on Android L' + result: { browser: { name: Chrome, version: 38.0.2094.0, type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '5.0', alias: L } }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android M; xx; Nexus 5 Build/MPZ44Q) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.6.2.599 U3/0.8.0 Mobile Safari/534.30' + readable: 'UC Browser 10.6 on a LG Nexus 5 running Android M' + result: { browser: { name: 'UC Browser', version: '10.6', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } +- + headers: 'User-Agent: Mozilla/5.0 (Android M; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0' + readable: 'Firefox Mobile 41.0 on Android M' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '41.0' }, version: '41.0', type: browser }, engine: { name: Gecko, version: '41.0' }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36' + readable: 'Chrome 42 on Android M' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: tablet } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Safari/537.36' + readable: 'Chrome 43 on Android M' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: tablet } } +- + headers: 'User-Agent: Mozilla/5.0 (Android N; Mobile; rv:45.0) Gecko/45.0 Firefox/45.0' + readable: 'Firefox Mobile 45.0 on Android N' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '45.0' }, version: '45.0', type: browser }, engine: { name: Gecko, version: '45.0' }, os: { name: Android, version: { value: '7', alias: 'N' } }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.99; Build/NPC91K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36' + readable: 'Chrome 50 on Android N' + result: { browser: { name: Chrome, version: '50', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '7', alias: 'N' } }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; PadFone Infinity) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' + readable: 'Chrome Dev 11.0.696.34 on an Asus PadFone Infinity running Android' + result: { browser: { name: Chrome, version: 11.0.696.34, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android }, device: { type: tablet, manufacturer: Asus, model: 'PadFone Infinity' } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; HTC/Sensation/3.32.162.52; xx) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' + readable: 'Chrome Dev 11.0.696.34 on a HTC Sensation running Android' + result: { browser: { name: Chrome, version: 11.0.696.34, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Sensation } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; HTC_DesireHD_Beats_X315e; de-de) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' + readable: 'Chrome Dev 11.0.696.34 on a HTC Desire HD running Android' + result: { browser: { name: Chrome, version: 11.0.696.34, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire HD' } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; ST26i-o) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' + readable: 'Chrome Dev 11.0.696.34 on a Sony Xperia J running Android' + result: { browser: { name: Chrome, version: 11.0.696.34, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia J' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; fr-fr; Android edition by sfr STARADDICT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + readable: 'Android Browser on a SFR STARADDICT running Android 2.3.5' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: SFR, model: STARADDICT } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; de; TSB_CLOUD_COMPANION;TOSHIBA_AC_AND_AZ) AppleWebkit/533.1(KHTML, like Gecko) Version/4.0 Safari/533.1' + readable: 'Android Browser on a Toshiba Dynabook AZ running Android 2.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: desktop, manufacturer: Toshiba, model: 'Dynabook AZ' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-asha.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-asha.yaml new file mode 100644 index 0000000..54ae30e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-asha.yaml @@ -0,0 +1,148 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.14; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.73' + result: { browser: { name: 'Nokia Xpress', version: 3.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.14; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11' + result: { browser: { name: 'Nokia Xpress', version: 3.7.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.7.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.14; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.9.0.0.22' + result: { browser: { name: 'Nokia Xpress', version: 3.9.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.9.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.14; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.0.0.45' + result: { browser: { name: 'Nokia Xpress', version: 4.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 4.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.14; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.1.1.1' + result: { browser: { name: 'Nokia Xpress', version: 4.0.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 4.0.1 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.14; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/5.0.0.0.30' + result: { browser: { name: 'Nokia Xpress', version: 5.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 5.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.16; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11' + result: { browser: { name: 'Nokia Xpress', version: 3.7.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.7.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.20; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11' + result: { browser: { name: 'Nokia Xpress', version: 3.7.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.7.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/10.0.2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.73' + result: { browser: { name: 'Nokia Xpress', version: 3.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.73' + result: { browser: { name: 'Nokia Xpress', version: 3.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.1.1.1' + result: { browser: { name: 'Nokia Xpress', version: 4.0.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 4.0.1 on a Nokia Asha 501 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501s/10.0.15; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.75' + result: { browser: { name: 'Nokia Xpress', version: 3.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501s/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 501 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia501s/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.1.1.1' + result: { browser: { name: 'Nokia Xpress', version: 4.0.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Nokia Xpress 4.0.1 on a Nokia Asha 501 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia502/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 502' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 502 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia502/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.0.0.45' + result: { browser: { name: 'Nokia Xpress', version: 4.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 502' } } + readable: 'Nokia Xpress 4.0.0 on a Nokia Asha 502 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia502/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.1.1.1' + result: { browser: { name: 'Nokia Xpress', version: 4.0.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 502' } } + readable: 'Nokia Xpress 4.0.1 on a Nokia Asha 502 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia503/12.1.6/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.9.0.0.22' + result: { browser: { name: 'Nokia Xpress', version: 3.9.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 503' } } + readable: 'Nokia Xpress 3.9.0 on a Nokia Asha 503 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia503/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.3.0.1' + result: { browser: { name: 'Nokia Xpress', version: 4.0.3, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 503' } } + readable: 'Nokia Xpress 4.0.3 on a Nokia Asha 503 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia503s/12.0.23/java_runtime_version=Nokia_Asha_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.26' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.1' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 503' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 503 running Nokia Asha Platform 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia503s/12.1.6/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 503' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 503 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia503s/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 503' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 503 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia503s/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/5.5.0.0.20' + result: { browser: { name: 'Nokia Xpress', version: 5.5.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 503' } } + readable: 'Nokia Xpress 5.5.0 on a Nokia Asha 503 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaAsha230DualSIM/13.5.2/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 230' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 230 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaAsha230DualSIM/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27' + result: { browser: { name: 'Nokia Xpress', version: 3.1.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 230' } } + readable: 'Nokia Xpress 3.1.1 on a Nokia Asha 230 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaAsha230DualSIM/14.0.5/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.9.1.0.5' + result: { browser: { name: 'Nokia Xpress', version: 3.9.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 230' } } + readable: 'Nokia Xpress 3.9.1 on a Nokia Asha 230 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaAsha500DualSIM/13.0.6/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.0.0.45' + result: { browser: { name: 'Nokia Xpress', version: 4.0.0, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 500' } } + readable: 'Nokia Xpress 4.0.0 on a Nokia Asha 500 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaAsha500DualSIM/14.0.4/java_runtime_version=Nokia_Asha_1_2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/4.0.1.1.1' + result: { browser: { name: 'Nokia Xpress', version: 4.0.1, type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 500' } } + readable: 'Nokia Xpress 4.0.1 on a Nokia Asha 500 running Nokia Asha Platform 1.2' +- + headers: 'User-Agent: Nokia501/2.0 (10.0.2) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/9.4.1.377', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(Nokia501s);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(1);', X-UCBrowser-Device: 'nokia#501s', X-UCBrowser-Device-UA: 'Nokia501s/2.0 (10.0.12) Profile/MIDP-2.1 Configuration/CLDC-1.1' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'UC Browser 9.4 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/9.4.1.377', x-ucbrowser-ua: 'pf(Java);la(en-US);re(U2/1.0.0);dv(Nokia501);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(1);', X-UCBrowser-Device: 'nokia#501', X-UCBrowser-Device-UA: 'Nokia501/2.0 (14.0.4) Profile/MIDP-2.1 Configuration/CLDC-1.1' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'UC Browser 9.4 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; Nokia501) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Java);la(en);re(U2/1.0.0);dv(Nokia501);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(1);', X-UCBrowser-Device: 'nokia#501', X-UCBrowser-Device-UA: 'Nokia501/2.0 (10.0.14) Profile/MIDP-2.1 Configuration/CLDC-1.1' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'UC Browser 9.4 on a Nokia Asha 501 running Nokia Asha Platform 1.0' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; Nokia503s) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Java);la(fr-FR);re(U2/1.0.0);dv(Nokia503s);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(1);', X-UCBrowser-Device: 'nokia#503s', X-UCBrowser-Device-UA: 'Nokia503s/2.0 (14.0.4) Profile/MIDP-2.1 Configuration/CLDC-1.1' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 503' } } + readable: 'UC Browser 9.4 on a Nokia Asha 503 running Nokia Asha Platform 1.0' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; NokiaAsha230DualSIM) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-Device: 'nokia#Asha230DualSIM', X-UCBrowser-Device-UA: 'NokiaAsha230DualSIM/2.0 (14.0.4) Profile/MIDP-2.1 Configuration/CLDC-1.1', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(NokiaAsha230DualSIM);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(1);im(0);sr(0);nt(1);' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: 'Nokia Asha Platform', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 230' } } + readable: 'UC Browser 9.4 on a Nokia Asha 230 running Nokia Asha Platform 1.0' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/4.5.33867/35.3527; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'Mozilla/5.0 (Series40; Nokia501/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.9.0.0.22', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'Mozilla/5.0 (Series40; Nokia501/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.9.0.0.22', X-OperaMini-Features: 'httpping, advanced, routing, folding, touch, file_system' } + result: { browser: { name: 'Opera Mini', version: '4.5', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Opera Mini 4.5 on a Nokia Asha 501 running Nokia Asha Platform 1.1.1' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/7.1.32052/34.1394; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'Mozilla/5.0 (Series40; Nokia501/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'Mozilla/5.0 (Series40; Nokia501/11.1.1/java_runtime_version=Nokia_Asha_1_1_1; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.1.0.27', X-OperaMini-Features: 'httpping, advanced, routing, touch, camera, file_system, folding' } + result: { browser: { name: 'Opera Mini', version: '7.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Nokia Asha Platform', version: 1.1.1 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'Opera Mini 7.1 on a Nokia Asha 501 running Nokia Asha Platform 1.1.1' +- + headers: 'User-Agent: OneBrowser/3.1 (Nokia501.2/14.0.4/java_runtime_version=Nokia_Asha_1_2)' + result: { browser: { name: OneBrowser, version: '3.1', type: browser }, os: { name: 'Nokia Asha Platform', version: '1.2' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 501' } } + readable: 'OneBrowser 3.1 on a Nokia Asha 501 running Nokia Asha Platform 1.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-bada.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-bada.yaml new file mode 100644 index 0000000..a532901 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-bada.yaml @@ -0,0 +1,208 @@ +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5250/1.0; U; bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 525' } } + readable: 'Dolfin 2.0 on a Samsung Wave 525 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5250/S5250XXJK1; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 525' } } + readable: 'Dolfin 2.0 on a Samsung Wave 525 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5253/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 525' } } + readable: 'Dolfin 2.0 on a Samsung Wave 525 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5253/S5253JPJJ3; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 525' } } + readable: 'Dolfin 2.0 on a Samsung Wave 525 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5330/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 533' } } + readable: 'Dolfin 2.0 on a Samsung Wave 533 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5333/S5333DDKB1; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 533' } } + readable: 'Dolfin 2.0 on a Samsung Wave 533 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380/S5380GXXLC1; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'Dolfin 3.0 on a Samsung Wave Y running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380DNELA2; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'Dolfin 3.0 on a Samsung Wave Y running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380K/S5380KDDLD1; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'Dolfin 3.0 on a Samsung Wave Y running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5750E/S5750EXXKF2; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 575' } } + readable: 'Dolfin 2.0 on a Samsung Wave 575 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5753E/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 575' } } + readable: 'Dolfin 2.0 on a Samsung Wave 575 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5753E/S5753EDDKF1; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 575' } } + readable: 'Dolfin 2.0 on a Samsung Wave 575 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7230B/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 2.0 on a Samsung Wave 723 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7230E-VODAFONE/S723EBUJJ3; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 2.0 on a Samsung Wave 723 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7230E/S723EBRKB2; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 2.0 on a Samsung Wave 723 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7230E/S723EXXLB3; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 3.0 on a Samsung Wave 723 running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7233E/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 2.0 on a Samsung Wave 723 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7233E/S723EDDJJ3; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 2.0 on a Samsung Wave 723 running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7250-BOUYGUES/S7250AGLG2; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave M' } } + readable: 'Dolfin 3.0 on a Samsung Wave M running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7250/S7250XXKK1; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave M' } } + readable: 'Dolfin 3.0 on a Samsung Wave M running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S7250D/S7250DJVKK2; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave M' } } + readable: 'Dolfin 3.0 on a Samsung Wave M running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500-ORANGE/S8500BVJK1; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500-VODAFONE/S8500AEJF1; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500BBLB2; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 3.0 on a Samsung Wave running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500BOJE7; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500B/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500L/1.0; U; Bada/1.0; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530-ORANGE/S8530BVKA1; U; Bada/1.2; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 2.2 on a Samsung Wave II running Bada 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530-ORANGE/S8530BVLA1; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 3.0 on a Samsung Wave II running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530-VODAFONE/S8530AEJK5; U; Bada/1.2; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 2.2 on a Samsung Wave II running Bada 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530/1.0; U; Bada/1.2; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 2.2 on a Samsung Wave II running Bada 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530/1.0; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 3.0 on a Samsung Wave II running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530/S8530DDKA1; U; Bada/1.2; xx) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '2.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 2.2 on a Samsung Wave II running Bada 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8600-ORANGE/S8600BVKJ7; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 3' } } + readable: 'Dolfin 3.0 on a Samsung Wave 3 running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8600/1.0; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 3' } } + readable: 'Dolfin 3.0 on a Samsung Wave 3 running Bada 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8600/S8600BOKK6; U; Bada/2.0; xx) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 3' } } + readable: 'Dolfin 3.0 on a Samsung Wave 3 running Bada 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-S5380E/1.0 Bada/2.0 Dolfin/2.0 SMM-MMS/1.2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'Dolfin 2.0 on a Samsung Wave Y running Bada 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-S7230/1.0 Bada/2.0 Dolfin/3.0 SMM-MMS/1.2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 3.0 on a Samsung Wave 723 running Bada 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-S7230E/1.0 SHP/VPP/R5 Dolfin/2.0 SMM-MMS/1.2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 2.0 on a Samsung Wave 723 running Bada 1.0' +- + headers: 'User-Agent: SAMSUNG-GT-S7230E/S723EBGJJ3 Bada/1.0 AppleWebKit/533.1 Dolfin/2.0 Mobile NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 723' } } + readable: 'Dolfin 2.0 on a Samsung Wave 723 running Bada 1.0' +- + headers: 'User-Agent: SAMSUNG-GT-S7250/1.0 Bada/2.0 Dolfin/2.0 SMM-MMS/1.2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave M' } } + readable: 'Dolfin 2.0 on a Samsung Wave M running Bada 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-S8500C/1.0 SHP/VPP/R5 Dolfin/2.0 Nextreaming SMM-MMS/1.2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada 1.0' +- + headers: 'User-Agent: SAMSUNG-GT-S8530/S8530XXJKA Bada/1.2 AppleWebKit/533.1 Dolfin/2.2 Mobile NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '2.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Bada, version: '1.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 2.2 on a Samsung Wave II running Bada 1.2' +- + headers: 'User-Agent: SAMSUNG-GT-S8530/S8530XXLA1 Bada/2.0 AppleWebKit/534.20 Dolfin/3.0 Mobile NexPlayer/3.0 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, engine: { name: Webkit, version: '534.20' }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave II' } } + readable: 'Dolfin 3.0 on a Samsung Wave II running Bada 2.0' +- + headers: 'User-Agent: SAMSUNG-GT-S8600/1.0 Bada/2.0 Dolfin/3.0 SMM-MMS/1.2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: Dolfin, version: '3.0', type: browser }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 3' } } + readable: 'Dolfin 3.0 on a Samsung Wave 3 running Bada 2.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/9.2.0.311 UNTRUSTED/1.0', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(samsung-gt-s5380d);pr(UCBrowser/9.2.0.311);ov(MIDP-2.0);pi(320*480);ss(320*480);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);', X-UCBrowser-Device: 'samsung#-gt-s5380d', X-UCBrowser-Device-UA: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380DGTLE1; U; Bada/2.0; en-us) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' } + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'UC Browser 9.2 on a Samsung Wave Y running Bada 2.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/9.4.1.377 UNTRUSTED/1.0', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(SAMSUNG-GT-S5380K);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(320*480);ss(320*480);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);', X-UCBrowser-Device: 'samsung#-GT-S5380K', X-UCBrowser-Device-UA: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380K/S5380KDDLD1; U; Bada/2.0; en-us) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'UC Browser 9.4 on a Samsung Wave Y running Bada 2.0' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; SAMSUNG-GT-S5253) U2/1.0.0 UCBrowser/9.3.0.326 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(SAMSUNG-GT-S5253);pr(UCBrowser/9.3.0.326);ov(MIDP-2.0);pi(240*400);ss(240*400);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);', X-UCBrowser-Device: 'samsung#-GT-S5253', X-UCBrowser-Device-UA: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5253/S5253DDJI7; U; Bada/1.0; en-us) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WQVGA SMM-MMS/1.2.0 OPN-B' } + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Gecko }, os: { name: Bada, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave 525' } } + readable: 'UC Browser 9.3 on a Samsung Wave 525 running Bada 1.0' +- + headers: { User-Agent: 'Opera/9.80 (Bada; Opera Mini/6.5/31.1395; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'Mozilla/5.0 (Bada 2.0.0)', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'Mozilla/5.0 (Bada 2.0.0)', X-OperaMini-Features: 'advanced, routing, viewport, touch, file_system, download' } + result: { browser: { name: 'Opera Mini', version: '6.5', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mini 6.5 on Bada 2.0' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/7.1.32052/32.1151; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: SAMSUNG-GT-S8500, X-OperaMini-Phone: 'Samsung # GT-S8500', X-OperaMini-Phone-UA: SAMSUNG-GT-S8500, X-OperaMini-Features: 'httpping, advanced, routing, file_system, folding, camera, touch' } + result: { browser: { name: 'Opera Mini', version: '7.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Opera Mini 7.1 on a Samsung Wave running Bada' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35158/34.1624; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: SAMSUNG-GT-S8500, X-OperaMini-Phone: 'Samsung # GT-S8500', X-OperaMini-Phone-UA: SAMSUNG-GT-S8500, X-OperaMini-Features: 'httpping, advanced, folding, routing, camera, file_system, touch' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Opera Mini 8.0 on a Samsung Wave running Bada' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-baiduyi.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-baiduyi.yaml new file mode 100644 index 0000000..74c281a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-baiduyi.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: MQQBrowser/1.0 Mozilla/5.0 (Linux; U; Android 2.3.4; xx; Baidu Yi on Passion Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1 Aurora/10' + result: { browser: { name: 'QQ Browser', version: '1.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Baidu Yi', family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Nexus One' } } + readable: 'QQ Browser 1.0 on a HTC Nexus One running Baidu Yi' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; Baidu Yi on Passion Build/GRJ22) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/530.17 baidubrowser/042_9.0.4.2_diordna_008_084/CTH_01_4.3.2_noissaP-no-iY-udiaB/1200a/556D6BBE7792DA7' + result: { browser: { name: 'Baidu Browser', version: '2.4', type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: 'Baidu Yi', family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Nexus One' } } + readable: 'Baidu Browser 2.4 on a HTC Nexus One running Baidu Yi' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; Baidu Yi on Passion Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) FlyFlow/2.2 Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Baidu Browser', version: '2.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: 'Baidu Yi', family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Nexus One' } } + readable: 'Baidu Browser 2.2 on a HTC Nexus One running Baidu Yi' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; xx; Baidu Yi on Passion Build/GRJ22) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/8.8.1.258 U3/0.8.0 Mobile Safari/534.31' + result: { browser: { name: 'UC Browser', version: '8.8', type: browser }, engine: { name: Webkit, version: '534.31' }, os: { name: 'Baidu Yi', family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Nexus One' } } + readable: 'UC Browser 8.8 on a HTC Nexus One running Baidu Yi' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-blackberry-10.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-blackberry-10.yaml new file mode 100644 index 0000000..7392954 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-blackberry-10.yaml @@ -0,0 +1,112 @@ +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.1200 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.1' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.1' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.2009 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.1' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.1' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.4846 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.1' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.1' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.809 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.1' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.1' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.0.1157 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.0.1809 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.1.1055 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.1.1925 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.1.3247 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.1.641 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.0.1034 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.3' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.3' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.0.1337 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.3' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.3' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.0.242 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.3' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'Q series or Passport' } } + readable: 'a BlackBerry Q series or Passport running BlackBerry 10.3' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.0' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.0' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.10.684 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.0' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.0' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.1425 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.0' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.0' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.1483 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.1' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.1' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.2074 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.1' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.1' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.1.0.4780 Mobile Safari/537.10+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.10' }, os: { name: BlackBerry, version: '10.1' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.1' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.0.1221 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.0.1803 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.1.1037 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.1.2141 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.2' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.2' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.0.746 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.3' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.3' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.0.884 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.3' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.3' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; Touch) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.3.1.407 Mobile Safari/537.35+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '537.35' }, os: { name: BlackBerry, version: '10.3' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: 'A or Z series' } } + readable: 'a BlackBerry A or Z series running BlackBerry 10.3' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry) AppleWebKit/536.2+ (KHTML, like Gecko) Version/10.0.6.384 Mobile Safari/536.2+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '536.2' }, os: { name: BlackBerry, version: '10.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: BlackBerry } } + readable: 'a RIM BlackBerry running BlackBerry 10.0' +- + headers: 'User-Agent: Mozilla/5.0 (BB10; STL100-2) AppleWebKit/BB10 (KHTML, like Gecko) Version/BB10 Mobile Safari/BB10sdemobile-app' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit }, os: { name: BlackBerry, version: '10' }, device: { type: mobile, subtype: smart, manufacturer: BlackBerry, model: Z10 } } + readable: 'a BlackBerry Z10 running BlackBerry 10' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-blackberry.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-blackberry.yaml new file mode 100644 index 0000000..e14a055 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-blackberry.yaml @@ -0,0 +1,364 @@ +- + headers: 'User-Agent: BlackBerry7100/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry 7100' } } + readable: 'a RIM BlackBerry 7100 running BlackBerry OS 4.1' +- + headers: 'User-Agent: BlackBerry7520/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/5.0.3.3 UP.Link/5.1.2.12 (Google WAP Proxy/1.0)' + result: { browser: { name: Openwave, version: '5.0', type: browser }, os: { name: 'BlackBerry OS', version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry 7520' } } + readable: 'Openwave 5.0 on a RIM BlackBerry 7520 running BlackBerry OS 4.0' +- + headers: 'User-Agent: BlackBerry8220/4.6.0.293 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/107' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Pearl 8220' } } + readable: 'a RIM BlackBerry Pearl 8220 running BlackBerry OS 4.6' +- + headers: 'User-Agent: BlackBerry8300/4.5.0.108 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/136 UP.Browser/5.0.3.3' + result: { browser: { name: Openwave, version: '5.0', type: browser }, os: { name: 'BlackBerry OS', version: '4.5' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8300' } } + readable: 'Openwave 5.0 on a RIM BlackBerry Curve 8300 running BlackBerry OS 4.5' +- + headers: 'User-Agent: BlackBerry8310/4.5.0.37 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.5' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8310' } } + readable: 'a RIM BlackBerry Curve 8310 running BlackBerry OS 4.5' +- + headers: 'User-Agent: BlackBerry8330/4.5.0.175 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.5' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8330' } } + readable: 'a RIM BlackBerry Curve 8330 running BlackBerry OS 4.5' +- + headers: 'User-Agent: BlackBerry8520/4.6.1.259 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/100' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'a RIM BlackBerry Curve 8520 running BlackBerry OS 4.6' +- + headers: 'User-Agent: BlackBerry8520/4.6.1.314 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/600' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'a RIM BlackBerry Curve 8520 running BlackBerry OS 4.6' +- + headers: 'User-Agent: BlackBerry8520/5.0.0.1036 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/-1' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'a RIM BlackBerry Curve 8520 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry8530/5.0.0.1000 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/109' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8530' } } + readable: 'a RIM BlackBerry Curve 8530 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry8820/4.5.0.182 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.5' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry 8820' } } + readable: 'a RIM BlackBerry 8820 running BlackBerry OS 4.5' +- + headers: 'User-Agent: BlackBerry8900/4.6.1.199 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/302' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8900' } } + readable: 'a RIM BlackBerry Curve 8900 running BlackBerry OS 4.6' +- + headers: 'User-Agent: BlackBerry8900/5.0.0.1036 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/102' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8900' } } + readable: 'a RIM BlackBerry Curve 8900 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9000/4.6.0.216 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/245' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9000' } } + readable: 'a RIM BlackBerry Bold 9000 running BlackBerry OS 4.6' +- + headers: 'User-Agent: BlackBerry9000/5.0.0.1036 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/179' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9000' } } + readable: 'a RIM BlackBerry Bold 9000 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9000/5.2.0.89 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9000' } } + readable: 'a RIM BlackBerry Bold 9000 running BlackBerry OS 5.2' +- + headers: 'User-Agent: BlackBerry9000/5.2.0.89 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB8.1.0.104/159/999' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9000' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Bold 9000 running BlackBerry OS 5.2' +- + headers: 'User-Agent: BlackBerry9100/6.6.0.248 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB8.1.0.104/159/999' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '6.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Pearl 9100' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Pearl 9100 running BlackBerry OS 6.6' +- + headers: 'User-Agent: BlackBerry9105/5.0.0.689 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/613' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Pearl 9105' } } + readable: 'a RIM BlackBerry Pearl 9105 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9300/5.0.0.794 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9300' } } + readable: 'a RIM BlackBerry Curve 9300 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9330/5.0.0.886 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/104' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9330' } } + readable: 'a RIM BlackBerry Curve 9330 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9500/4.7.0.167 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.7' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Storm 9500' } } + readable: 'a RIM BlackBerry Storm 9500 running BlackBerry OS 4.7' +- + headers: 'User-Agent: BlackBerry9500/5.0.0.484 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/120' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Storm 9500' } } + readable: 'a RIM BlackBerry Storm 9500 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9520/4.2.0.423 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.2' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Storm2 9520' } } + readable: 'a RIM BlackBerry Storm2 9520 running BlackBerry OS 4.2' +- + headers: 'User-Agent: BlackBerry9520/5.0.0.1068 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/600' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Storm2 9520' } } + readable: 'a RIM BlackBerry Storm2 9520 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9530/4.7.0.167 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102 UP.Link/6.3.1.20.0' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.7' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Storm 9530' } } + readable: 'a RIM BlackBerry Storm 9530 running BlackBerry OS 4.7' +- + headers: 'User-Agent: BlackBerry9530/5.0.0.973 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Storm 9530' } } + readable: 'a RIM BlackBerry Storm 9530 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9550/5.0.0.1015 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Storm 9550' } } + readable: 'a RIM BlackBerry Storm 9550 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9630/5.0.0.1030 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Tour 9630' } } + readable: 'a RIM BlackBerry Tour 9630 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9650/4.2.0.494 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB8.1.0.104/159/800' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '4.2' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9650' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Bold 9650 running BlackBerry OS 4.2' +- + headers: 'User-Agent: BlackBerry9650/5.0.0.1078 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9650' } } + readable: 'a RIM BlackBerry Bold 9650 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9670/4.4.0.560 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Style 9670' } } + readable: 'a RIM BlackBerry Style 9670 running BlackBerry OS 4.4' +- + headers: 'User-Agent: BlackBerry9700/5.0.0.1014 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9700' } } + readable: 'a RIM BlackBerry Bold 9700 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry9700/6.6.0.124 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB8.1.0.104/159/800' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '6.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9700' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Bold 9700 running BlackBerry OS 6.6' +- + headers: 'User-Agent: BlackBerry9780/6.6.0.252 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB8.1.0.104/159/999' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '6.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9780' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Bold 9780 running BlackBerry OS 6.6' +- + headers: 'User-Agent: BlackBerry9800/6.0.0.600 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/102' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9800' } } + readable: 'a RIM BlackBerry Torch 9800 running BlackBerry OS 6.0' +- + headers: 'User-Agent: BlackBerry9800/6.4.0.210 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB8.1.0.104/161/800' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '6.4' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9800' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Torch 9800 running BlackBerry OS 6.4' +- + headers: 'User-Agent: BlackBerry9800/6.6.0.207 Profile/MIDP-2.0 Configuration/CLDC-1.1/UCWEB8.1.0.104/161/999' + result: { browser: { name: 'UC Browser', version: '8.1', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '6.6' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9800' } } + readable: 'UC Browser 8.1 on a RIM BlackBerry Torch 9800 running BlackBerry OS 6.6' +- + headers: 'User-Agent: BlackBerry9810/5.1.0.230 Profile/MIDP-2.0 Configuration/CLDC-1.1/UC Browser7.8.0.95/160/352' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'BlackBerry OS', version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9810' } } + readable: 'UC Browser 7.8 on a RIM BlackBerry Torch 9810 running BlackBerry OS 5.1' +- + headers: 'User-Agent: BlackBerry9810/7.0.0.261 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/102' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9810' } } + readable: 'a RIM BlackBerry Torch 9810 running BlackBerry OS 7.0' +- + headers: 'User-Agent: BlackBerry9810/7.1.0.694 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/102' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9810' } } + readable: 'a RIM BlackBerry Torch 9810 running BlackBerry OS 7.1' +- + headers: 'User-Agent: BlackBerry9860/5.1.0.276 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9860' } } + readable: 'a RIM BlackBerry Torch 9860 running BlackBerry OS 5.1' +- + headers: 'User-Agent: BlackBerry9900/5.1.0.692 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9900' } } + readable: 'a RIM BlackBerry Bold 9900 running BlackBerry OS 5.1' +- + headers: 'User-Agent: BlackBerry9930/5.1.0.678 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9930' } } + readable: 'a RIM BlackBerry Bold 9930 running BlackBerry OS 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9100; xx) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.534 Mobile Safari/534.8+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.8' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Pearl 9100' } } + readable: 'a RIM BlackBerry Pearl 9100 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9105; xx) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.481 Mobile Safari/534.8+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.8' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Pearl 9105' } } + readable: 'a RIM BlackBerry Pearl 9105 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9220; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1112 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9220' } } + readable: 'a RIM BlackBerry Curve 9220 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; xx) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.424 Mobile Safari/534.8+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.8' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9300' } } + readable: 'a RIM BlackBerry Curve 9300 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9310; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.539 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9310' } } + readable: 'a RIM BlackBerry Curve 9310 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9315; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1098 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9315' } } + readable: 'a RIM BlackBerry Curve 9315 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9320; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.398 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9320' } } + readable: 'a RIM BlackBerry Curve 9320 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9330; xx) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.524 Mobile Safari/534.8+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.8' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9330' } } + readable: 'a RIM BlackBerry Curve 9330 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9350; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.580 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9350' } } + readable: 'a RIM BlackBerry Curve 9350 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9360; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.319 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9360' } } + readable: 'a RIM BlackBerry Curve 9360 running BlackBerry OS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9360; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1098 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9360' } } + readable: 'a RIM BlackBerry Curve 9360 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9370; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.755 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9370' } } + readable: 'a RIM BlackBerry Curve 9370 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9380; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.514 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9380' } } + readable: 'a RIM BlackBerry Curve 9380 running BlackBerry OS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9380; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.247 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9380' } } + readable: 'a RIM BlackBerry Curve 9380 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9620; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1112 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry 9620' } } + readable: 'a RIM BlackBerry 9620 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9650; xx) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.280 Mobile Safari/534.1+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.1' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9650' } } + readable: 'a RIM BlackBerry Bold 9650 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9670; xx) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.407 Mobile Safari/534.1+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.1' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Style 9670' } } + readable: 'a RIM BlackBerry Style 9670 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9700; xx) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.8' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9700' } } + readable: 'a RIM BlackBerry Bold 9700 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9720; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1046 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry 9720' } } + readable: 'a RIM BlackBerry 9720 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9780; xx) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.285 Mobile Safari/534.1+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.1' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9780' } } + readable: 'a RIM BlackBerry Bold 9780 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9788; xx) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.595 Mobile Safari/534.8+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.8' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9788' } } + readable: 'a RIM BlackBerry Bold 9788 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9790; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.473 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9790' } } + readable: 'a RIM BlackBerry Bold 9790 running BlackBerry OS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9790; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1033 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9790' } } + readable: 'a RIM BlackBerry Bold 9790 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; xx) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.1+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.1' }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9800' } } + readable: 'a RIM BlackBerry Torch 9800 running BlackBerry OS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9810; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.261 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9810' } } + readable: 'a RIM BlackBerry Torch 9810 running BlackBerry OS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9810; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1070 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9810' } } + readable: 'a RIM BlackBerry Torch 9810 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9850; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.362 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9850' } } + readable: 'a RIM BlackBerry Torch 9850 running BlackBerry OS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9850; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1066 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9850' } } + readable: 'a RIM BlackBerry Torch 9850 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9860; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.296 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9860' } } + readable: 'a RIM BlackBerry Torch 9860 running BlackBerry OS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.250 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9900' } } + readable: 'a RIM BlackBerry Bold 9900 running BlackBerry OS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1041 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9900' } } + readable: 'a RIM BlackBerry Bold 9900 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9930; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.440 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9930' } } + readable: 'a RIM BlackBerry Bold 9930 running BlackBerry OS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9930; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.1083 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9930' } } + readable: 'a RIM BlackBerry Bold 9930 running BlackBerry OS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (BlackBerry; U; BlackBerry 9981; xx) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.714 Mobile Safari/534.11+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.11' }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Porsche P 9981' } } + readable: 'a RIM BlackBerry Porsche P 9981 running BlackBerry OS 7.1' +- + headers: { User-Agent: 'MQQBrowser/for Blackberry2.0.0 (BlackBerry9310/7.1.0.768)', Q-UA: 'BBQBM20_GA/200016&BBMMTT_3/200016&BB&201518&BlackBerry93107.1.0.&0&6347&V3' } + result: { browser: { name: 'QQ Browser', type: browser }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9310' } } + readable: 'QQ Browser on a RIM BlackBerry Curve 9310 running BlackBerry OS 7.1' +- + headers: { User-Agent: 'MQQBrowser/for Blackberry2.0.0 (BlackBerry9380/7.1.0.714)', Q-UA: 'BBQBM20_GA/200016&BBMMTT_3/200016&BB&223021&BlackBerry93807.1.0.&0&6347&V3' } + result: { browser: { name: 'QQ Browser', type: browser }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9380' } } + readable: 'QQ Browser on a RIM BlackBerry Curve 9380 running BlackBerry OS 7.1' +- + headers: { User-Agent: 'OneBrowser/for Blackberry3.0.0 (BlackBerry9320/7.1.0.398)', Q-UA: 'BBQBM30_ibibo/300001&BBMMTT_3/300001&BB&201518&BlackBerry93207.1.0.&6001&8976&V3' } + result: { browser: { name: OneBrowser, type: browser }, os: { name: 'BlackBerry OS', version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9320' } } + readable: 'OneBrowser on a RIM BlackBerry Curve 9320 running BlackBerry OS 7.1' +- + headers: { User-Agent: 'OneBrowser/for Blackberry3.0.0 (BlackBerry9800/6.0.0.747)', Q-UA: 'BBQBM30_ibibo/300001&BBMMTT_3/300001&BB&223021&BlackBerry98006.0.0.&0&8976&V3' } + result: { browser: { name: OneBrowser, type: browser }, os: { name: 'BlackBerry OS', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Torch 9800' } } + readable: 'OneBrowser on a RIM BlackBerry Torch 9800 running BlackBerry OS 6.0' +- + headers: { User-Agent: 'Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8520', X-OperaMini-Phone-UA: 'BlackBerry8520/5.0.0.1036 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/613', X-OperaMini-Features: 'httpping, advanced, routing, folding, touch, camera, file_system' } + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'Opera Mini on a RIM BlackBerry Curve 8520 running BlackBerry OS 5.0' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/4.4.26736/34.818; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'BlackBerry9700/5.0.0.235 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/1', X-OperaMini-Phone: 'BlackBerry # 9700', X-OperaMini-Phone-UA: 'BlackBerry9700/5.0.0.235 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/1', X-OperaMini-Features: 'httpping, advanced, routing, folding' } + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Bold 9700' } } + readable: 'Opera Mini 4.4 on a RIM BlackBerry Bold 9700 running BlackBerry OS 5.0' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/4.6.32744/32.1214; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: BlackBerry9300, X-OperaMini-Phone: 'Blackberry # 9300', X-OperaMini-Phone-UA: BlackBerry9300, X-OperaMini-Features: 'httpping, advanced, routing, file_system, folding' } + result: { browser: { name: 'Opera Mini', version: '4.6', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 9300' } } + readable: 'Opera Mini 4.6 on a RIM BlackBerry Curve 9300 running BlackBerry OS' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/8.0.35667/35.3781; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'BlackBerry8530/5.0.0.973 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'BlackBerry8530/5.0.0.973 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105', X-OperaMini-Features: 'advanced, httpping, folding, file_system, touch, camera, routing' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8530' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8530 running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry7130e/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/104 3gpp-gba' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry 7130e' } } + readable: 'a RIM BlackBerry 7130e running BlackBerry OS 4.1' +- + headers: 'User-Agent: BlackBerry8350i/5.0.0.1074 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/316' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8350i' } } + readable: 'a RIM BlackBerry Curve 8350i running BlackBerry OS 5.0' +- + headers: 'User-Agent: BlackBerry8703e/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/105' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '4.1' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry 8703e' } } + readable: 'a RIM BlackBerry 8703e running BlackBerry OS 4.1' +- + headers: 'User-Agent: Mozilla/2.0 (compatible; Go.Web/6.2; HandHTTP 1.1; Elaine/1.0; RIM957 )' + result: { browser: { name: Go.Web, version: '6.2', type: browser }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: '957' } } + readable: 'Go.Web 6.2 on a RIM 957 running BlackBerry OS' +- + headers: 'User-Agent: BlackBerry6510/3.0' + result: { browser: { name: 'BlackBerry Browser' }, os: { name: 'BlackBerry OS', version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry 6510' } } + readable: 'a RIM BlackBerry 6510 running BlackBerry OS 3.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-brew.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-brew.yaml new file mode 100644 index 0000000..7b90b7e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-brew.yaml @@ -0,0 +1,232 @@ +- + headers: 'User-Agent: BREW-Applet/0x20068888 (BREW/3.1.5.20; DeviceId: 32056; Lang: zhcn) ucweb-squid' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Brew, version: 3.1.5.20 }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser on Brew 3.1.5.20' +- + headers: 'User-Agent: BREW-Applet/0x20068888 (BREW/3.1.5.20; DeviceId: 90197; Lang: zhcn) ucweb-squid' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Brew, version: 3.1.5.20 }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser on Brew 3.1.5.20' +- + headers: 'User-Agent: MQQBrowser/Mini3.1 (ZTE-R516-BREW-B01)' + result: { browser: { name: 'QQ Browser Mini', version: '3.1', type: browser }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: ZTE, model: R516 } } + readable: 'QQ Browser Mini 3.1 on a ZTE R516 running Brew' +- + headers: 'User-Agent: Mozilla/4.0 (Brew MP 1.0.2; U; xx; Kyocera; NetFront/4.1/AMB) Sprint E4255' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.2 }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: 'DuraMax E4255' } } + readable: 'NetFront 4.1 on a Kyocera DuraMax E4255 running Brew MP 1.0.2' +- + headers: 'User-Agent: Mozilla/4.0 (Brew MP 1.0.2; U; xx; Sanyo; NetFront/3.5.1/AMB) Boost SCP6780' + result: { browser: { name: NetFront, version: 3.5.1, type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.2 }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: Innuendo } } + readable: 'NetFront 3.5.1 on a Sanyo Innuendo running Brew MP 1.0.2' +- + headers: 'User-Agent: Mozilla/4.0 (Brew MP 1.0.4; U; xx; Kyocera; NetFront/4.1/AMB) Sprint S2151-PLB' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.4 }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: 'Coast S2151' } } + readable: 'NetFront 4.1 on a Kyocera Coast S2151 running Brew MP 1.0.4' +- + headers: 'User-Agent: Mozilla/4.0 (MobilePhone; Brew MP 1.0.4; U; xx; Kyocera; NetFront/4.1/AMB) Sprint S2151' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.4 }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: 'Coast S2151' } } + readable: 'NetFront 4.1 on a Kyocera Coast S2151 running Brew MP 1.0.4' +- + headers: 'User-Agent: Mozilla/4.0(compatible;Polaris 6.2;Brew 3.1.5;U;xx)/400x240 Samsung SCH-U820' + result: { browser: { name: Polaris, version: '6.2', type: browser }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Reality } } + readable: 'Polaris 6.2 on a Samsung Reality running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (BREW; U; BREW 3.1.5; xx) AppleWebKit/525.26 (KHTML, like Gecko) Polaris/7.0 Safari/525.26 480X800 LGE VX11000' + result: { browser: { name: Polaris, version: '7.0', type: browser }, engine: { name: Webkit, version: '525.26' }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'Env Touch' } } + readable: 'Polaris 7.0 on a LG Env Touch running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (HS-E316/E464.6.01.03.00;U;REX/3.0;BREW/3.1.5;240*320;CTC/2.0) Ucweb/7.6' + result: { browser: { name: 'UC Browser', version: '7.6', type: browser }, engine: { name: Gecko }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Hisense, model: E316 } } + readable: 'UC Browser 7.6 on a Hisense E316 running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (HW-HUAWEI_U2801;U;REX/1.0;BREW/5.0.4.1;Profile/MIDP-2.0 Configuration/CLDC-1.1;128*160) Opera/9.70' + result: { browser: { name: 'Opera Mobile', version: '9.70', type: browser }, engine: { name: Presto }, os: { name: Brew, version: 5.0.4.1 }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: U2801 } } + readable: 'Opera Mobile 9.70 on a Huawei U2801 running Brew 5.0.4.1' +- + headers: 'User-Agent: Mozilla/5.0 (HW-HUAWEI_U5200/;U;REX/1.0;BREW/5.0.4.1;Profile/MIDP-2.0 Configuration/CLDC-1.1;240*320) Opera/9.70' + result: { browser: { name: 'Opera Mobile', version: '9.70', type: browser }, engine: { name: Presto }, os: { name: Brew, version: 5.0.4.1 }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: U5200 } } + readable: 'Opera Mobile 9.70 on a Huawei U5200 running Brew 5.0.4.1' +- + headers: 'User-Agent: Mozilla/5.0 (SCH-B309I/B309IGC14;U;REX/3.0;BREW/3.1.5;128*128) Ucweb/6.3' + result: { browser: { name: 'UC Browser', version: '6.3', type: browser }, engine: { name: Gecko }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SCH-B309 } } + readable: 'UC Browser 6.3 on a Samsung SCH-B309 running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (SCH-S559/S559DL12;U;REX/3.0;BREW/3.1.5;Profile/MIDP-2.1 Configuration/CLDC-1.1;240*320;CTC/2.0) POLARIS/6.15.WEB' + result: { browser: { name: Polaris, version: '6.15', type: browser }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SCH-S559 } } + readable: 'Polaris 6.15 on a Samsung SCH-S559 running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (SCH-S579/S579DJ19;U;REX/3.0;BREW/3.1.5;Profile/MIDP-2.1 Configuration/CLDC-1.1;240*320;CTC/2.0) POLARIS/6.2.WEB' + result: { browser: { name: Polaris, version: '6.2', type: browser }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SCH-S579 } } + readable: 'Polaris 6.2 on a Samsung SCH-S579 running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Teleca Q7; Brew 3.1.5; U; xx) 320X240 LGE VX9200' + result: { browser: { name: 'Obigo Q', version: '7', type: browser }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: LG, model: Env3 } } + readable: 'Obigo Q 7 on a LG Env3 running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.80 (KDDI-FJ31; BREW; Opera Mobi; U; xx) Presto/2.4.18 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.18 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F001, carrier: au } } + readable: 'Opera Mobile 10.00 on a Fujitsu F001 running Brew' +- + headers: 'User-Agent: Mozilla/5.0_(Smartfren-E781A/E2_SQID_V0.1.6; U; REX/4.3;BREW/3.1.5.189; Profile/MIDP-2.0_Configuration/CLDC-1.1; 240*320; CTC/2.0)_Obigo Browser/Q7' + result: { browser: { name: 'Obigo Q', version: '7', type: browser }, os: { name: Brew, version: 3.1.5.189 }, device: { type: mobile, subtype: feature } } + readable: 'Obigo Q 7 on Brew 3.1.5.189' +- + headers: 'User-Agent: NetFront/3.5.1 (BREW 5.0.1.2; U; xx; LG; NetFront/3.5.1/AMB) Sprint LN510 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: 3.5.1, type: browser }, engine: { name: NetFront }, os: { name: Brew, version: 5.0.1.2 }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'Rumor Touch' } } + readable: 'NetFront 3.5.1 on a LG Rumor Touch running Brew 5.0.1.2' +- + headers: 'User-Agent: NetFront/3.5.1(BREW 3.1.5; U; xx; SAMSUNG; NetFront/3.1.5/AMB) Sprint M550 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: 3.5.1, type: browser }, engine: { name: NetFront }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Exclaim } } + readable: 'NetFront 3.5.1 on a Samsung Exclaim running Brew 3.1.5' +- + headers: 'User-Agent: NetFront/3.5.1(BREW 5.0.2.1; U; xx; SAMSUNG; NetFront/3.5.1/WAP) PayLo M390-PLB' + result: { browser: { name: NetFront, version: 3.5.1, type: browser }, engine: { name: NetFront }, os: { name: Brew, version: 5.0.2.1 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Array } } + readable: 'NetFront 3.5.1 on a Samsung Array running Brew 5.0.2.1' +- + headers: 'User-Agent: NetFront/4.2 (BMP 1.0.4; U; xx; LG; NetFront/4.2/AMB) Boost LG272 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.4 }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'Rumor Reflex' } } + readable: 'NetFront 4.2 on a LG Rumor Reflex running Brew MP 1.0.4' +- + headers: 'User-Agent: NetFront/4.2 (BMP 1.0.4; U; xx; LG; NetFront/4.2/AMB) Sprint LN272 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.4 }, device: { type: mobile, subtype: feature, manufacturer: LG, model: LN272 } } + readable: 'NetFront 4.2 on a LG LN272 running Brew MP 1.0.4' +- + headers: 'User-Agent: PantechP6030/JZUS09022013 BMP/1.0.4 DeviceId/141030 NetFront/4.1 OMC/1.5.3 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.4 }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: Reneu } } + readable: 'NetFront 4.1 on a Pantech Reneu running Brew MP 1.0.4' +- + headers: 'User-Agent: PhilipsW715/Qualcomm Brew MP 1.0.3/WAP-2.0/MIDP-2.0/CLDC-1.1' + result: { os: { name: 'Brew MP', version: 1.0.3 }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: W715 } } + readable: 'a Philips W715 running Brew MP 1.0.3' +- + headers: { User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/9.4.1.377 UNTRUSTED/1.0', X-UCBrowser-Device-UA: 'Mozilla/4.0 (BREW 3.1.5; U; en-us; Sanyo; NetFront/3.5.1/AMB) Boost SCP6760', X-UCBrowser-Device: j2me, X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(j2me);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(320*240);ss(320*240);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: Incognito } } + readable: 'UC Browser 9.4 on a Sanyo Incognito running Brew 3.1.5' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/5.0/27.2354; U; xx) Presto/2.8.119 320X240 Samsung SCH-U380', X-OperaMini-Features: 'advanced, download, file_system, folding', X-OperaMini-Phone-UA: 'Samsung SCH-U380', X-OperaMini-Phone: 'Samsung # SCH-U380' } + result: { browser: { name: 'Opera Mini', version: '5.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Brightside } } + readable: 'Opera Mini 5.0 on a Samsung Brightside running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/5.1/27.2338; U; xx) Presto/2.8.119 320X240 Pantech TXT8045', X-OperaMini-Features: 'advanced, download', X-OperaMini-Phone-UA: 'Pantech TXT8045', X-OperaMini-Phone: 'Pantech # TXT8045' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: 'Jest 2' } } + readable: 'Opera Mini 5.1 on a Pantech Jest 2 running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/5.1/27.2338; U; xx) Presto/2.8.119 320X240 ZTE F-450', X-OperaMini-Features: 'advanced, download', X-OperaMini-Phone-UA: 'ZTE F-450', X-OperaMini-Phone: 'ZTE # F-450' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: ZTE, model: Adamant } } + readable: 'Opera Mini 5.1 on a ZTE Adamant running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/5.1/27.2338; U; xx) Presto/2.8.119 400X240 LG VN271', X-OperaMini-Features: 'advanced, download', X-OperaMini-Phone-UA: 'LG VN271', X-OperaMini-Phone: 'LG # VN271' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: LG, model: Extravert } } + readable: 'Opera Mini 5.1 on a LG Extravert running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/5.1/27.2354; U; xx) Presto/2.8.119 320X240 ZTE F-450', X-OperaMini-Features: 'advanced, download', X-OperaMini-Phone-UA: 'ZTE F-450', X-OperaMini-Phone: 'ZTE # F-450' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: ZTE, model: Adamant } } + readable: 'Opera Mini 5.1 on a ZTE Adamant running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.0/27.2354; U; xx) Presto/2.8.119 240X320 Casio C781', X-OperaMini-Features: 'advanced, download, file_system, folding', X-OperaMini-Phone-UA: 'Casio C781', X-OperaMini-Phone: 'Casio # C781' } + result: { browser: { name: 'Opera Mini', version: 6.0.0, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Casio, model: C781 } } + readable: 'Opera Mini 6.0.0 on a Casio C781 running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2338; U; xx) Presto/2.8.119 240X320 Samsung SCH-U380', X-OperaMini-Features: 'advanced, download, file_system, touch, folding', X-OperaMini-Phone: 'Samsung # SCH-U380', X-OperaMini-Phone-UA: 'Samsung SCH-U380' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Brightside } } + readable: 'Opera Mini 6.0.3 on a Samsung Brightside running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2338; U; xx) Presto/2.8.119 240X320 Samsung SCH-U485', X-OperaMini-Features: 'advanced, download, file_system', X-OperaMini-Phone: 'Samsung # SCH-U485', X-OperaMini-Phone-UA: 'Samsung SCH-U485' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Intensity III' } } + readable: 'Opera Mini 6.0.3 on a Samsung Intensity III running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2338; U; xx) Presto/2.8.119 240X400 Pantech CDM8992', X-OperaMini-Features: 'advanced, download, file_system, touch, folding', X-OperaMini-Phone: 'Pantech # CDM8992', X-OperaMini-Phone-UA: 'Pantech CDM8992' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: Hotshot } } + readable: 'Opera Mini 6.0.3 on a Pantech Hotshot running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2338; U; xx) Presto/2.8.119 320X240 Samsung SCH-U380', X-OperaMini-Phone-UA: 'Samsung SCH-U380', X-OperaMini-Phone: 'Samsung # SCH-U380', X-OperaMini-Features: 'advanced, download, file_system, touch, folding' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Brightside } } + readable: 'Opera Mini 6.0.3 on a Samsung Brightside running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2339; U; xx) Presto/2.8.119 320X240 LG VN530', X-OperaMini-Phone: 'LG # VN530', X-OperaMini-Phone-UA: 'LG VN530', X-OperaMini-Features: 'advanced, download, file_system, folding' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: LG, model: Octane } } + readable: 'Opera Mini 6.0.3 on a LG Octane running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2354; U; xx) Presto/2.8.119 240X320 Samsung SCH-U380', X-OperaMini-Features: 'advanced, download, file_system, touch, folding', X-OperaMini-Phone: 'Samsung # SCH-U380', X-OperaMini-Phone-UA: 'Samsung SCH-U380' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Brightside } } + readable: 'Opera Mini 6.0.3 on a Samsung Brightside running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2354; U; xx) Presto/2.8.119 240X320 Samsung SCH-U485', X-OperaMini-Features: 'advanced, download, file_system', X-OperaMini-Phone-UA: 'Samsung SCH-U485', X-OperaMini-Phone: 'Samsung # SCH-U485' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Intensity III' } } + readable: 'Opera Mini 6.0.3 on a Samsung Intensity III running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2354; U; xx) Presto/2.8.119 240X320 Samsung SCH-U680', X-OperaMini-Phone: 'Samsung # SCH-U680', X-OperaMini-Phone-UA: 'Samsung SCH-U680', X-OperaMini-Features: 'advanced, download, file_system, folding' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Convoy 3' } } + readable: 'Opera Mini 6.0.3 on a Samsung Convoy 3 running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2354; U; xx) Presto/2.8.119 240X400 Pantech CDM8999', X-OperaMini-Features: 'advanced, download, file_system, touch, folding', X-OperaMini-Phone: 'Pantech # CDM8999', X-OperaMini-Phone-UA: 'Pantech CDM8999' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: Crux } } + readable: 'Opera Mini 6.0.3 on a Pantech Crux running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2354; U; xx) Presto/2.8.119 320X240 LG VN530', X-OperaMini-Phone: 'LG # VN530', X-OperaMini-Features: 'advanced, download, file_system, folding', X-OperaMini-Phone-UA: 'LG VN530' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: LG, model: Octane } } + readable: 'Opera Mini 6.0.3 on a LG Octane running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2354; U; xx) Presto/2.8.119 320X240 Samsung SCH-U380', X-OperaMini-Phone-UA: 'Samsung SCH-U380', X-OperaMini-Phone: 'Samsung # SCH-U380', X-OperaMini-Features: 'advanced, download, file_system, touch, folding' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Brightside } } + readable: 'Opera Mini 6.0.3 on a Samsung Brightside running Brew' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/6.0.3/27.2354; U; xx) Presto/2.8.119 320X240 Samsung SCH-U485', X-OperaMini-Phone-UA: 'Samsung SCH-U485', X-OperaMini-Features: 'advanced, download, file_system, folding', X-OperaMini-Phone: 'Samsung # SCH-U485' } + result: { browser: { name: 'Opera Mini', version: 6.0.3, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Intensity III' } } + readable: 'Opera Mini 6.0.3 on a Samsung Intensity III running Brew' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; TCL-C616) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-Device: 'tcl#-C616', X-UCBrowser-Device-UA: 'Mozilla/5.0_(OneTouch-710C/710C_OMH_V1.6; U; REX/4.3;BREW/3.1.5.189; Profile/MIDP-2.0_Configuration/CLDC-1.1; 240*320; CTC/2.0)_Obigo Browser/1.14', X-UCBrowser-UA: 'pf(Java);la(id);re(U2/1.0.0);dv(TCL-C616);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(240*320);ss(240*320);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(2);im(0);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: Brew, version: 3.1.5.189 }, device: { type: mobile, subtype: feature, manufacturer: TCL, model: C616 } } + readable: 'UC Browser 9.4 on a TCL C616 running Brew 3.1.5.189' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; j2me) U2/1.0.0 UCBrowser/9.0.0.261 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-Device: j2me, X-UCBrowser-Device-UA: 'NetFront/3.5.1(BREW 5.0.2.1; U; en-us; Samsung ; NetFront/3.5.1/WAP) Boost M260 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1', X-UCBrowser-UA: 'pf(Java);la(zh-CN);re(U2/1.0.0);dv(j2me);pr(UCBrowser/9.0.0.261);ov(MIDP-2.0);pi(128*160);ss(128*160);up(U2/1.0.0);er(U);bt(UC);pm(1);bv(0);nm(2);im(1);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.0', type: browser }, engine: { name: Gecko }, os: { name: Brew, version: 5.0.2.1 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Factor } } + readable: 'UC Browser 9.0 on a Samsung Factor running Brew 5.0.2.1' +- + headers: { User-Agent: 'Opera/9.80 (BREW; Opera Mini/4.2.99/34.1244; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'NativeOperaMini(Haier;Native Opera Mini/4.2.99;id;BREW 3.1.5)', X-OperaMini-Features: 'httpping, advanced, download, file_system, folding', X-OperaMini-Phone-UA: 'NativeOperaMini(Haier;Native Opera Mini/4.2.99;id;BREW 3.1.5)', X-OperaMini-Phone: '? # ?' } + result: { browser: { name: 'Opera Mini', version: 4.2.99, type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 4.2.99 on Brew 3.1.5' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/4.4.31891/34.1526; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: '? # ?', Device-Stock-UA: 'Mozilla/5.0_(Smartfren-E781A/E2_SQID_V0.1.6; U; REX/4.3;BREW/3.1.5.189; Profile/MIDP-2.0_Configuration/CLDC-1.1; 240*320; CTC/2.0)_Obigo Browser/Q7', X-OperaMini-Features: 'httpping, advanced, routing, folding', X-OperaMini-Phone-UA: 'Mozilla/5.0_(Smartfren-E781A/E2_SQID_V0.1.6; U; REX/4.3;BREW/3.1.5.189; Profile/MIDP-2.0_Configuration/CLDC-1.1; 240*320; CTC/2.0)_Obigo Browser/Q7' } + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew, version: 3.1.5.189 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 4.4 on Brew 3.1.5.189' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/7.1.32052/34.1016; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'Mozilla/4.0 (Brew MP 1.0.2; U; en-us; Kyocera; NetFront/4.1/AMB) Sprint E4255', X-OperaMini-Phone-UA: 'Mozilla/4.0 (Brew MP 1.0.2; U; en-us; Kyocera; NetFront/4.1/AMB) Sprint E4255', X-OperaMini-Phone: '? # ?', X-OperaMini-Features: 'advanced, httpping, routing, folding, file_system, camera' } + result: { browser: { name: 'Opera Mini', version: '7.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Brew MP', version: 1.0.2 }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: 'DuraMax E4255' } } + readable: 'Opera Mini 7.1 on a Kyocera DuraMax E4255 running Brew MP 1.0.2' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/7.1.32052/34.1853; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone-UA: 'Mozilla/4.0 (BREW 3.1.5; U; en-us; Sanyo; NetFront/3.5.1/AMB) Sprint SCP-6760', Device-Stock-UA: 'Mozilla/4.0 (BREW 3.1.5; U; en-us; Sanyo; NetFront/3.5.1/AMB) Sprint SCP-6760', X-OperaMini-Features: 'advanced, httpping, routing, file_system, folding, camera', X-OperaMini-Phone: '? # ?' } + result: { browser: { name: 'Opera Mini', version: '7.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: Incognito } } + readable: 'Opera Mini 7.1 on a Sanyo Incognito running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/4.0 (REX; U; en-us; Sanyo; SCP-6750/US; NetFront/3.4/AMB)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, os: { name: REX }, device: { type: mobile, subtype: feature, manufacturer: Sanyo, model: 'Katana Eclipse X' } } + readable: 'NetFront 3.4 on a Sanyo Katana Eclipse X running REX' +- + headers: 'User-Agent: MOT-EX132/1.0 REXL4' + result: { os: { name: REX }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: EX132 } } + readable: 'a Motorola EX132 running REX' +- + headers: 'User-Agent: Mozilla/5.0 (BREW; U; 3.1.5; xx) AppleWebKit/525.26 (KHTML, like Gecko) Polaris/7.0 Safari/525.26 480X800 LGE VX11000' + result: { browser: { name: Polaris, version: '7.0', type: browser }, engine: { name: Webkit, version: '525.26' }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'Env Touch' } } + readable: 'Polaris 7.0 on a LG Env Touch running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (BREW; U; 3.1.5; xx) AppleWebKit/528.28 (KHTML, like Gecko) OBIGO/W10.1 Safari/528.5 480X800 LGE VX11000' + result: { browser: { name: 'Obigo W', version: '10.1', type: browser }, engine: { name: Webkit, version: '528.28' }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'Env Touch' } } + readable: 'Obigo W 10.1 on a LG Env Touch running Brew 3.1.5' +- + headers: 'User-Agent: MOT-EX132/1.0 REXL4/1.0 BrewMP/1.0.3 Release/6.15.2011 Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, os: { name: 'Brew MP', version: 1.0.3 }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: EX132 } } + readable: 'NetFront 3.5 on a Motorola EX132 running Brew MP 1.0.3' +- + headers: 'User-Agent: Mozilla/4.0 (BREW 3.1.5; U; en-us; Samsung; PLS_M330; POLARIS/6.1/WAP) MMP/2.0 Configuration/CLDC-1.1' + result: { browser: { name: Polaris, version: '6.1', type: browser }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: PLS-M330 } } + readable: 'Polaris 6.1 on a Samsung PLS-M330 running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/4.0 (BREW 3.1.5; U; en-us; Samsung; SPH_M330; POLARIS/6.1/WAP) MMP/2.0 Configuration/CLDC-1.1 Novarra-Vision/8.0' + result: { browser: { name: Polaris, version: '6.1', type: browser }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SPH-M330 } } + readable: 'Polaris 6.1 on a Samsung SPH-M330 running Brew 3.1.5' +- + headers: 'User-Agent: Opera/9.70 (BREW 4.0.3; U; en; Samsung; Opera Mobi; Presto/2.2.1/INT) Sprint M850 SprintTitan/OSGi-4.1 Profile/MIDP-2.1 Configuration/CDC-1.1' + result: { browser: { name: 'Opera Mobile', version: '9.70', type: browser }, engine: { name: Presto, version: 2.2.1 }, os: { name: Brew, version: 4.0.3 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Instinct HD' } } + readable: 'Opera Mobile 9.70 on a Samsung Instinct HD running Brew 4.0.3' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-cos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-cos.yaml new file mode 100644 index 0000000..85cf1ff --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-cos.yaml @@ -0,0 +1,72 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Android; COS2.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: COS, family: Android, version: '2.0' }, device: { type: mobile, subtype: smart } } + readable: 'Chrome 31 on COS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (COS 2.0; Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: COS, family: Android, version: '2.0' }, device: { type: desktop } } + readable: 'Chrome 31 on COS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (COS 998;COS 998; COS 998 Build/12345) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: COS, family: Android }, device: { type: desktop } } + readable: 'Chrome 18 on COS' +- + headers: 'User-Agent: Mozilla/5.0 (COS2.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: COS, family: Android, version: '2.0' }, device: { type: desktop } } + readable: 'Chrome 31 on COS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (COS; HTC 9089)' + result: { os: { name: COS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '9089' } } + readable: 'a HTC 9089 running COS' +- + headers: 'User-Agent: Mozilla/5.0 (Chinese Operating System 2.0; HTC 9089)' + result: { os: { name: COS, family: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '9089' } } + readable: 'a HTC 9089 running COS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS 1.0; COS like Android 4.1.2; zh_CN; HTC 802t Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) COSBrowser/2.2.4 Version/4.0 Mobile Safari/537.17' + result: { engine: { name: Webkit, version: '537.17' }, os: { name: COS, family: Android, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: 'a HTC One running COS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS like Android 4.0.3; EndeavorU Build/IML74K) AppleWebKit/534.30 (KHTML like Gecko) COSBrowser/2.1.12Version/4.0 Mobile Safari/534.30' + result: { engine: { name: Webkit, version: '534.30' }, os: { name: COS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One X' } } + readable: 'a HTC One X running COS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS like Android 4.1.2; en_US; 9088 Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) COSBrowser/1.0.0 Version/4.0 Mobile Safari/537.17' + result: { engine: { name: Webkit, version: '537.17' }, os: { name: COS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '9088' } } + readable: 'a HTC 9088 running COS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS like Android 4.1.2; en_US; 909d Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) COSBrowser/2.1.14 Version/4.0 Mobile Safari/537.17' + result: { engine: { name: Webkit, version: '537.17' }, os: { name: COS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 909d } } + readable: 'a HTC 909d running COS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS like Android 4.1.2; zh_CN; DLXU Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) COSBrowser/1.0.0 Version/4.0 Mobile Safari/534.30' + result: { engine: { name: Webkit, version: '534.30' }, os: { name: COS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Butterfly } } + readable: 'a HTC Butterfly running COS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS like Android 4.1.2; zh_CN; HTC 802t Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) COSBrowser/2.1 Version/4.0 Mobile Safari/534.30' + result: { engine: { name: Webkit, version: '534.30' }, os: { name: COS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: 'a HTC One running COS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS like Android 4.1.2; zh_CN; M7CDTU Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) COSBrowser/2.1.14 Version/4.0 Mobile Safari/537.17' + result: { engine: { name: Webkit, version: '537.17' }, os: { name: COS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: 'a HTC One running COS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS like Android 4.1.2; zh_TW; 909d Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) COSBrowser/1.0.0 Version/4.0 Mobile Safari/537.17' + result: { engine: { name: Webkit, version: '537.17' }, os: { name: COS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 909d } } + readable: 'a HTC 909d running COS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS/1.0; COS like Android 4.1.2; zh_CN; HTC 802t Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) COSBrowser/2.2.4 Version/4.0 Mobile Safari/537.17' + result: { engine: { name: Webkit, version: '537.17' }, os: { name: COS, family: Android, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: 'a HTC One running COS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS/1.0; COS like Android 4.1.2; zh_CN; HTC 802t Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) COSBrowser/2.2.4 Version/4.0 Mobile Safari/537.17' + result: { engine: { name: Webkit, version: '537.17' }, os: { name: COS, family: Android, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: 'a HTC One running COS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; COS1.0; zh_CN; HTC 802t Build/JRO03C) AppleWebKit/537.17 (KHTML, like Gecko) Browser/2.2.4 Version/4.0 Mobile Safari/537.17' + result: { engine: { name: Webkit, version: '537.17' }, os: { name: COS, family: Android, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: 'a HTC One running COS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; China Operating System 2.0; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + readable: 'a HTC Sensation running COS 2.0' + result: { engine: { name: Webkit, version: '534.30' }, os: { name: COS, family: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Sensation } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ezxlinux.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ezxlinux.yaml new file mode 100644 index 0000000..b4c8f0e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ezxlinux.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: MOT-A1200e/1.0 LinuxOS/2.4.20 Release/1.31.2007 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R541_G_11.56.11R' + result: { browser: { name: 'Opera Mobile', version: '8.00', type: browser }, engine: { name: Presto }, os: { name: 'EZX Linux' }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: A1200e } } + readable: 'Opera Mobile 8.00 on a Motorola A1200e running EZX Linux' +- + headers: 'User-Agent: MOT-A1200r/1.0 LinuxOS/2.4.20 Release/8.22.2006 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R541_G_11.52.08R' + result: { browser: { name: 'Opera Mobile', version: '8.00', type: browser }, engine: { name: Presto }, os: { name: 'EZX Linux' }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: A1200r } } + readable: 'Opera Mobile 8.00 on a Motorola A1200r running EZX Linux' +- + headers: 'User-Agent: MOT-A1200r/1.0 LinuxOS/2.4.20 Release/8.22.2006 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R541_G_11.52.13R' + result: { browser: { name: 'Opera Mobile', version: '8.00', type: browser }, engine: { name: Presto }, os: { name: 'EZX Linux' }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: A1200r } } + readable: 'Opera Mobile 8.00 on a Motorola A1200r running EZX Linux' +- + headers: 'User-Agent: MOT-A1600/1.0 LinuxOS/2.4.20 Release/8.22.2006 Browser/Opera8.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 Software/R542_G_11.61.33R' + result: { browser: { name: 'Opera Mobile', version: '8.00', type: browser }, engine: { name: Presto }, os: { name: 'EZX Linux' }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: A1600 } } + readable: 'Opera Mobile 8.00 on a Motorola A1600 running EZX Linux' +- + headers: 'User-Agent: MOTO-W760r/Mozilla/4.0 (compatible;MSIE 6.0;Linux W760r)/R63712_U_71.xx.yyI Profile/MIDP-2.0 Configuration/CLDC-1.1 Symphony 1.0' + readable: 'Symphony 1.0 on a Motorola W760r running Linux' + result: { browser: { name: Symphony, version: '1.0', type: browser }, os: { name: Linux }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: W760r } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-feature.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-feature.yaml new file mode 100644 index 0000000..ef9932a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-feature.yaml @@ -0,0 +1,640 @@ +- + headers: 'User-Agent: ALCATEL-OT871A/987 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 871A' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 871A' +- + headers: 'User-Agent: ALCATEL_A392G/1.0 ObigoInternetBrowser/Q05A[TF35868800000015804729021]' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: A392G } } + readable: 'Obigo Q 5A on an Alcatel A392G' +- + headers: 'User-Agent: ALCATEL_A392T/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: A392T } } + readable: 'Obigo Q 5A on an Alcatel A392T' +- + headers: 'User-Agent: ALCATEL_ONE_TOUCH_2067X/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 2067X' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 2067X' +- + headers: 'User-Agent: ALCATEL_ONE_TOUCH_768T/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 768T' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 768T' +- + headers: 'User-Agent: ALCATEL_ONE_TOUCH_838/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 838' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 838' +- + headers: 'User-Agent: ALCATEL_TRIBE_3075A/1.0 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch Tribe 3075A' } } + readable: 'Obigo Q 5A on an Alcatel One Touch Tribe 3075A' +- + headers: 'User-Agent: ALCATEL_TRIBE_3075A/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch Tribe 3075A' } } + readable: 'Obigo Q 5A on an Alcatel One Touch Tribe 3075A' +- + headers: 'User-Agent: ALCATEL_one_touch_813/1.0 model-orange Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 813' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 813' +- + headers: 'User-Agent: Alcatel-OT-807D/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'One Touch 807D' } } + readable: 'Obigo Q 5A on an Alcatel One Touch 807D' +- + headers: 'User-Agent: Alcatel_A205G-B/1.0 ObigoInternetBrowser/Q05A[TF014217003311291004903718147907548]' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: A205G-B } } + readable: 'Obigo Q 5A on an Alcatel A205G-B' +- + headers: 'User-Agent: BenQ-CF61/1.00/WAP2.0/MIDP2.0/CLDC1.0 UP.Browser/6.3.0.4.c.1.102 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.3', type: browser }, device: { type: mobile, subtype: feature, manufacturer: BenQ, model: CF61 } } + readable: 'Openwave 6.3 on a BenQ CF61' +- + headers: 'User-Agent: CELKON.C64/R2AE SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'SEMC Browser', version: 4.0.3, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Celkon, model: C64 } } + readable: 'SEMC Browser 4.0.3 on a Celkon C64' +- + headers: 'User-Agent: COCOON/R01 Browser/Obigo/Q05A Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: O2, model: Cocoon } } + readable: 'Obigo Q 5A on an O2 Cocoon' +- + headers: 'User-Agent: CTC/HUAWEIC5720 Java/HWJa/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: Huawei, model: C5720 } } + readable: 'a Huawei C5720' +- + headers: 'User-Agent: Cricket-A415/1.0 Polaris/v6.17' + result: { browser: { name: Polaris, version: '6.17', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Cricket, model: A415 } } + readable: 'Polaris 6.17 on a Cricket A415' +- + headers: 'User-Agent: Fly_E154 ASTRO36_TD/v3 MAUI/10A1032MP_ASTRO_W1052 Release/31.12.2010 Browser/Opera Profile/MIDP-2.0 Configuration/CLDC-1.1 Sync/SyncClient1.1 Opera/9.80 (MTK; Nucleus; Opera Mobi/4000; U; xx) Presto/2.5.28 Version/10.10' + result: { browser: { name: 'Opera Mobile', version: '10.10', type: browser }, engine: { name: Presto, version: 2.5.28 }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Fly, model: E154 } } + readable: 'Opera Mobile 10.10 on a Fly E154 running MRE' +- + headers: 'User-Agent: LG-LG840G/V100[TF013293005445552024363913344521363] Obigo/Q7.3 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.3', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 840G } } + readable: 'Obigo Q 7.3 on a LG 840G' +- + headers: 'User-Agent: LG-T300/V100 Obigo/Q7.3 MMS/LG-MMS-V1.1/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.3', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: T300 } } + readable: 'Obigo Q 7.3 on a LG T300' +- + headers: 'User-Agent: LG/KC910i/V10a Browser/Obigo-Q7.1 MMS/LG-MMS-V1.0/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'KC910i Renoir' } } + readable: 'Obigo Q 7.1 on a LG KC910i Renoir' +- + headers: 'User-Agent: LG/KU990i/v10a Browser/Obigo-Q05A/3.6 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'KU990 Viewty' } } + readable: 'Obigo Q 5A on a LG KU990 Viewty' +- + headers: 'User-Agent: LGE-PM225/1.0 UP.Browser/6.2.3.7.e.1.101 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: PM225 } } + readable: 'Openwave 6.2 on a LG PM225' +- + headers: 'User-Agent: LGE-VM510 NetFront/3.5.1 (GUI) MMP/2.0' + result: { browser: { name: NetFront, version: 3.5.1, type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: LG, model: VM510 } } + readable: 'NetFront 3.5.1 on a LG VM510' +- + headers: 'User-Agent: LG_TB200_CMCC A2000pH/2.32.00 Release/9.14.2009 Browser/Teleca/Q7.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: '7.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: TB200 } } + readable: 'Obigo Q 7.1 on a LG TB200' +- + headers: 'User-Agent: MOT-EX108 Obigo/WAP2.0 MIDP-2.0/CLDC-1.1' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: EX108 } } + readable: 'Obigo WAP 2.0 on a Motorola EX108' +- + headers: 'User-Agent: MOT-EX132/1.0 REXL4' + result: { os: { name: REX }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: EX132 } } + readable: 'a Motorola EX132 running REX' +- + headers: 'User-Agent: MOT-MOTOQA1/A2.01.11R Release/09.24.2008 OPERA/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Opera Mobile', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: 'Karma QA1' } } + readable: 'Opera Mobile on a Motorola Karma QA1' +- + headers: 'User-Agent: MOT-RAZRV3xx/96.B0.0FR BER2.2 Mozilla/4.0 (compatible; MSIE 6.0; 11073256) Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera 8.00 [en]' + result: { browser: { name: 'Opera Mobile', version: '8.00', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: RAZRV3xx } } + readable: 'Opera Mobile 8.00 on a Motorola RAZRV3xx' +- + headers: 'User-Agent: MOT-V3/0E.42.10R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { browser: { name: 'Motorola Internet Browser', version: 2.2.1, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V3 } } + readable: 'Motorola Internet Browser 2.2.1 on a Motorola V3' +- + headers: 'User-Agent: MOT-V300/0B.09.19R MIB/2.2 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { browser: { name: 'Motorola Internet Browser', version: '2.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V300 } } + readable: 'Motorola Internet Browser 2.2 on a Motorola V300' +- + headers: 'User-Agent: MOT-V3i/08.B4.34R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.3.0.0.0' + result: { browser: { name: 'Motorola Internet Browser', version: 2.2.1, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V3i } } + readable: 'Motorola Internet Browser 2.2.1 on a Motorola V3i' +- + headers: 'User-Agent: MOT-V860/00.72 UP.Browser/7.2.7.5.665 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '7.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V860 } } + readable: 'Openwave 7.2 on a Motorola V860' +- + headers: 'User-Agent: MOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V9mm } } + readable: 'Openwave 6.2 on a Motorola V9mm' +- + headers: 'User-Agent: MOT-Z3/08.00.10R MIB/BER2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1 EGE/1.0' + result: { browser: { name: 'Motorola Internet Browser', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: Z3 } } + readable: 'Motorola Internet Browser on a Motorola Z3' +- + headers: 'User-Agent: MQQBrowser/Mini2.2 (LG-T385)' + result: { browser: { name: 'QQ Browser Mini', version: '2.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: T385 } } + readable: 'QQ Browser Mini 2.2 on a LG T385' +- + headers: 'User-Agent: MQQBrowser/Mini2.4 (SAMSUNG GT-C6112)' + result: { browser: { name: 'QQ Browser Mini', version: '2.4', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-C6112 } } + readable: 'QQ Browser Mini 2.4 on a Samsung GT-C6112' +- + headers: 'User-Agent: MQQBrowser/Mini2.5 (SonyEricssonJ105i/R1HA035)' + result: { browser: { name: 'QQ Browser Mini', version: '2.5', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Naite } } + readable: 'QQ Browser Mini 2.5 on a Sony Ericsson Naite' +- + headers: 'User-Agent: MQQBrowser/Mini2.8 (SAMSUNG GT-C3520)' + result: { browser: { name: 'QQ Browser Mini', version: '2.8', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-C3520 } } + readable: 'QQ Browser Mini 2.8 on a Samsung GT-C3520' +- + headers: 'User-Agent: MQQBrowser/Mini3.1 (CoolpadT60/1.01.T60)' + result: { browser: { name: 'QQ Browser Mini', version: '3.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Coolpad, model: T60 } } + readable: 'QQ Browser Mini 3.1 on a Coolpad T60' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Polaris 6.2; Brew 3.1.5; en)/240X320 Samsung sam-r631' + result: { browser: { name: Polaris, version: '6.2', type: browser }, os: { name: Brew, version: 3.1.5 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Messenger Touch R631' } } + readable: 'Polaris 6.2 on a Samsung Messenger Touch R631 running Brew 3.1.5' +- + headers: 'User-Agent: Mozilla/4.08 (N905imyu_W;FOMA;c500;TB)' + result: { device: { type: mobile, subtype: feature, manufacturer: NEC, model: N905imyu, carrier: DoCoMo } } + readable: 'a NEC N905imyu' +- + headers: 'User-Agent: Mozilla/5.0 (Java; U; xx; samsung-gt-e2202) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.5.0.185/83/352/UCWEB Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.5', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Metro } } + readable: 'UC Browser 8.5 on a Samsung Metro' +- + headers: 'User-Agent: Mozilla/5.0 (Java; U; xx; sonyericssonw150i) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.6.0.199/84/352/UCWEB Mobile UNTRUSTED/1.0' + result: { browser: { name: 'UC Browser', version: '8.6', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Yendo } } + readable: 'UC Browser 8.6 on a Sony Ericsson Yendo' +- + headers: 'User-Agent: Mozilla/5.0 (LG-C207 AppleWebkit/531 Browser/Phantom/V2.0 Widget/LGMW/3.0 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)' + result: { browser: { name: Phantom, version: '2.0', type: browser }, engine: { name: Webkit, version: '531' }, device: { type: mobile, subtype: feature, manufacturer: LG, model: C207 } } + readable: 'Phantom 2.0 on a LG C207' +- + headers: 'User-Agent: Mozilla/5.0 (LG-T395 AppleWebkit/531 Browser/Phantom/V2.0 Widget/LGMW/3.0 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1) UNTRUSTED/1.0' + result: { browser: { name: Phantom, version: '2.0', type: browser }, engine: { name: Webkit, version: '531' }, device: { type: mobile, subtype: feature, manufacturer: LG, model: T395 } } + readable: 'Phantom 2.0 on a LG T395' +- + headers: 'User-Agent: Mozilla/5.0 (SCH-F859/F859DH02;U;NUCLEUS/2.1;Profile/MIDP-2.1 Configuration/CLDC-1.1;480*800;CTC/2.0) Dolfin/2.0' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Dolfin 2.0 on a Samsung Wave running Bada' +- + headers: 'User-Agent: Mozilla/5.0 (Vodafone/1.0/LG-GS290/V10c Browser/Obigo-Q7.3 MMS/LG-MMS-V1.0/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1) UNTRUSTED/1.0 UCWEB/2.0 (Java; U; MIDP-2.0; xx; Mozilla) U2/1.0.0 UCBrowser/9.4.0.342 U2/1.0.0' + result: { browser: { name: 'Obigo Q', version: '7.3', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'GS290 Cookie Fresh' } } + readable: 'Obigo Q 7.3 on a LG GS290 Cookie Fresh' +- + headers: 'User-Agent: Mozilla/5.0 (Vodafone/1.0/LG-T385b/V10i AppleWebkit/531 Browser/Phantom/V2.0 Widget/LGMW/3.0 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1)' + result: { browser: { name: Phantom, version: '2.0', type: browser }, engine: { name: Webkit, version: '531' }, device: { type: mobile, subtype: feature, manufacturer: LG, model: T385b } } + readable: 'Phantom 2.0 on a LG T385b' +- + headers: 'User-Agent: NGM_Coffee/ObigoInternetBrowser/QO3C Profile/MIDP2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: NGM, model: Coffee } } + readable: 'Obigo Q 3C on a NGM Coffee' +- + headers: 'User-Agent: NexianNX-G963/MTK Release/01.01.2011/MAUI Browser/Opera Profile/MIDP2.0 Configuration/CLDC-1 Opera/9.80 (MTK; U; xx) Presto/2.5.28 Version/10.10' + result: { browser: { name: 'Opera Mobile', version: '10.10', type: browser }, engine: { name: Presto, version: 2.5.28 }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Nexian, model: NX-G963 } } + readable: 'Opera Mobile 10.10 on a Nexian NX-G963 running MRE' +- + headers: 'User-Agent: Nokia1680c-2/2.0 (07.60) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 1680c-2 } } + readable: 'a Nokia 1680c-2' +- + headers: 'User-Agent: Nokia3030/5.0 (14.60) Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3030' } } + readable: 'a Nokia 3030' +- + headers: 'User-Agent: Nokia7020/2.0 (08.10) Profile/MIDP-2.1 Configuration/CLDC-1.1 UCWEB/2.0 (Java; U; MIDP-2.0; xx; Nokia7020) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '7020' } } + readable: 'UC Browser 9.4 on a Nokia 7020' +- + headers: 'User-Agent: OPPO A203/4.02/13 Release/2010.4.15 Browser/Obigo/Q03C Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, device: { type: mobile, subtype: feature } } + readable: 'Obigo Q 3C' +- + headers: 'User-Agent: OPPOA617/2.07/11 Release/2011.6.14 Browser/Opera Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Opera Mobile', type: browser }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mobile' +- + headers: 'User-Agent: OneBrowser/3.1 (LG-T375)' + result: { browser: { name: OneBrowser, version: '3.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: T375 } } + readable: 'OneBrowser 3.1 on a LG T375' +- + headers: 'User-Agent: OneBrowser/3.1 (PantechP7040/JLUS04042011)' + result: { browser: { name: OneBrowser, version: '3.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: P7040 } } + readable: 'OneBrowser 3.1 on a Pantech P7040' +- + headers: 'User-Agent: OneBrowser/3.1 (SAMSUNG-GT-E1282T)' + result: { browser: { name: OneBrowser, version: '3.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Guru } } + readable: 'OneBrowser 3.1 on a Samsung Guru' +- + headers: 'User-Agent: OneBrowser/3.1 (SonyEricssonJ10i2/R7CA061)' + result: { browser: { name: OneBrowser, version: '3.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Elm } } + readable: 'OneBrowser 3.1 on a Sony Ericsson Elm' +- + headers: 'User-Agent: PantechP7000/JDUS10052009; Mozilla/5.0 (Profile/MIDP-2.0 Configuration/CLDC-1.1; Opera Mini/att/4.2.' + result: { browser: { name: 'Opera Mini', version: 4.2., type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Pantech, model: Impact } } + readable: 'Opera Mini 4.2 on a Pantech Impact' +- + headers: 'User-Agent: SAMSUNG-GT-C3322/1.0 NetFront/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'GT-C3322 Duos' } } + readable: 'NetFront 4.1 on a Samsung GT-C3322 Duos' +- + headers: 'User-Agent: SAMSUNG-GT-C3322/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Untrusted/1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'GT-C3322 Duos' } } + readable: 'a Samsung GT-C3322 Duos' +- + headers: 'User-Agent: SAMSUNG-GT-S5611 Opera/9.80 (J2ME/MIDP; Opera Mini/7.1.34814/36.1370; U; xx) Presto/2.12.423 Version/12.16' + result: { browser: { name: 'Opera Mini', version: '7.1', type: browser }, engine: { name: Presto, version: 2.12.423 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-S5611 } } + readable: 'Opera Mini 7.1 on a Samsung GT-S5611' +- + headers: 'User-Agent: SAMSUNG-SGH-A667/A667UCLD4; Mozilla/5.0 (Profile/MIDP-2.0 Configuration/CLDC-1.1; Opera Mini/att/4.2' + result: { browser: { name: 'Opera Mini', version: '4.2', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'A667 Evergreen' } } + readable: 'Opera Mini 4.2 on a Samsung A667 Evergreen' +- + headers: 'User-Agent: SAMSUNG-SGH-G600/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Untrusted/1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: Samsung, model: G600 } } + readable: 'a Samsung G600' +- + headers: 'User-Agent: SAMSUNG-SGH-S390G/S390UD[TF359782046053567009990015123957215] NetFront/4.2 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'S390 TracFone' } } + readable: 'NetFront 4.2 on a Samsung S390 TracFone' +- + headers: 'User-Agent: SAMSUNG-SGH-T189N/T189NUVMG1 SHP/VPP/R5 NetFront/4.2 SMM-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Freeform M' } } + readable: 'NetFront 4.2 on a Samsung Freeform M' +- + headers: 'User-Agent: SAMSUNG-SM-B360E Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35840/35.7561; U; xx) Presto/2.8.119 Version/11.10' + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Metro 360' } } + readable: 'Opera Mini 8.0 on a Samsung Metro 360' +- + headers: 'User-Agent: SAMSUNG-SM-B780A/1.0 NetFront/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: 'Rugby 4' } } + readable: 'NetFront 4.2 on a Samsung Rugby 4' +- + headers: 'User-Agent: SonyEricssonC510/R1FA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1 JavaPlatform/JP-8.4.3' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: C510 } } + readable: 'NetFront 3.4 on a Sony Ericsson C510' +- + headers: 'User-Agent: SonyEricssonJ108i/R7EA Profile/MIDP-2.1 Configuration/CLDC-1.1 UNTRUSTED/1.0 UCWEB/2.0 (Java; U; MIDP-2.0; xx; SonyEricssonJ108i) U2/1.0.0 UCBrowser/9.4.0.342 U2/1.0.0 Mobile' + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: Cedar } } + readable: 'UC Browser 9.4 on a Sony Ericsson Cedar' +- + headers: 'User-Agent: SonyEricssonK790a/R1EG Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: K790a } } + readable: 'NetFront 3.3 on a Sony Ericsson K790a' +- + headers: 'User-Agent: SonyEricssonK850i/R1EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: K850i } } + readable: 'NetFront 3.4 on a Sony Ericsson K850i' +- + headers: 'User-Agent: TIANYU-KTOUCH/A930/Screen-240X320' + result: { device: { type: mobile, subtype: feature, manufacturer: K-Touch, model: A930 } } + readable: 'a K-Touch A930' +- + headers: 'User-Agent: Tiphone T67/1.0 Browser/wap2.0 Sync/SyncClient1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { device: { type: mobile, subtype: feature, manufacturer: TiPhone, model: T67 } } + readable: 'a TiPhone T67' +- + headers: 'User-Agent: vk-vk900/1.1 up.browser/6.2.3.4 (gui) mmp/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'VK Mobile', model: VK900 } } + readable: 'Openwave 6.2 on a VK Mobile VK900' +- + headers: 'User-Agent: Mozilla/5.0 (Danger hiptop 2.0)' + result: { device: { type: mobile, subtype: feature, manufacturer: Danger, model: Hiptop } } + readable: 'a Danger Hiptop' +- + headers: 'User-Agent: Mozilla/5.0 (Danger hiptop 2.0; U; AvantGo 3.2)' + result: { browser: { name: AvantGo, version: '3.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Danger, model: Hiptop } } + readable: 'AvantGo 3.2 on a Danger Hiptop' +- + headers: 'User-Agent: Mozilla/5.0 (Danger hiptop 4.6; U; rv:1.7.12) Gecko/20050920' + result: { engine: { name: Gecko, version: 1.7.12 }, device: { type: mobile, subtype: feature, manufacturer: Danger, model: Hiptop } } + readable: 'a Danger Hiptop' +- + headers: 'User-Agent: Mozilla/5.0 (Danger hiptop 5.0; U; rv:1.7.12) Gecko/20050920' + result: { engine: { name: Gecko, version: 1.7.12 }, device: { type: mobile, subtype: feature, manufacturer: Danger, model: Hiptop } } + readable: 'a Danger Hiptop' +- + headers: 'User-Agent: LGE-VX5500/1.0 UP.Browser/6.2.3.2 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: VX5500 } } + readable: 'Openwave 6.2 on a LG VX5500' +- + headers: 'User-Agent: LG/KU990i/v10a Browser/Obigo-Q05A/3.6 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'KU990 Viewty' } } + readable: 'Obigo Q 5A on a LG KU990 Viewty' +- + headers: 'User-Agent: LG-KP500 Teleca/WAP2.0 MIDP-2.0/CLDC-1.1' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 'KP500 Cookie' } } + readable: 'Obigo WAP 2.0 on a LG KP500 Cookie' +- + headers: 'User-Agent: LG-CU720/V1.0l Obigo/Q05A Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: CU720 } } + readable: 'Obigo Q 5A on a LG CU720' +- + headers: 'User-Agent: MOT-C980/80.2F.2E. MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Motorola Internet Browser', version: 2.2.1, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: C980 } } + readable: 'Motorola Internet Browser 2.2.1 on a Motorola C980' +- + headers: 'User-Agent: SIE-M65 (Openwave Mobile Browser 7.0.0.1.167a; U) [de]' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: M65 } } + readable: 'Openwave 7.0 on a Siemens M65' +- + headers: 'User-Agent: SIE-M65/12 UP.Browser/7.0.0.1.c.3 (GUI) MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: M65 } } + readable: 'Openwave 7.0 on a Siemens M65' +- + headers: 'User-Agent: SIE-MC60/10 Profile/MIDP-1.0 Configuration/CLDC-1.0 UP.Browser/6.1.0.7.3 (GUI) MMP/1.0 UP.Link/6.6.4.0.0' + result: { browser: { name: Openwave, version: '6.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: MC60 } } + readable: 'Openwave 6.1 on a Siemens MC60' +- + headers: 'User-Agent: Huawei/1.0/0MTC-752/B000 Browser/Obigo-Browser/Q05A MTC-752 HuaweiJava/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: Java } } + readable: 'Obigo Q 5A on a Huawei Java' +- + headers: 'User-Agent: Vodafone/SonyEricssonV800/R1S025 Browser/SEMC-Browser/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'SEMC Browser', version: '4.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: V800 } } + readable: 'SEMC Browser 4.1 on a Sony Ericsson V800' +- + headers: 'User-Agent: Vodafone/1.0/SamsungSGHX660V/X660AUFH1/Browser/TSS/2.5 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: Samsung, model: X660 } } + readable: 'a Samsung X660' +- + headers: 'User-Agent: Vodafone/1.0/SAMSUNG-SGH-J700V/AUHA3/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: J700 } } + readable: 'Openwave 6.2 on a Samsung J700' +- + headers: 'User-Agent: SIE-S65/12 UP.Browser/7.0.0.1.c.3 (GUI) MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: S65 } } + readable: 'Openwave 7.0 on a Siemens S65' +- + headers: 'User-Agent: SIE-EF81/32 UP.Browser/7.0.0.1.181 (GUI) MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Browser/UP.Browser/7.1.1.3.h (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '7.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: EF81 } } + readable: 'Openwave 7.0 on a Siemens EF81' +- + headers: 'User-Agent: SGH-Z500 SHP/VPP/R5 SMB3.1 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1' + result: { device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Z500 } } + readable: 'a Samsung Z500' +- + headers: 'User-Agent: SGH-Z107 SHP/VPP/R5 SMB3.1 SMM-MMS/1.1.0 profile/MIDP-2.0 configuration/CLDC-1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: Samsung, model: Z107 } } + readable: 'a Samsung Z107' +- + headers: 'User-Agent: SEC-SGHX660/1.0 TSS/2.5' + result: { device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-X660 } } + readable: 'a Samsung SGH-X660' +- + headers: 'User-Agent: SEC-SGHE900/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.2', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-E900 } } + readable: 'NetFront 3.2 on a Samsung SGH-E900' +- + headers: 'User-Agent: SCH-R410' + result: { device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SCH-R410 } } + readable: 'a Samsung SCH-R410' +- + headers: 'User-Agent: SCH-R210 UP.Browser/6.2.3.8 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SCH-R210 } } + readable: 'Openwave 6.2 on a Samsung SCH-R210' +- + headers: 'User-Agent: SAMSUNG-SGH-X640/1.0 UP.Browser/6.2.2.6 (GUI) MMP/1.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-X640 } } + readable: 'Openwave 6.2 on a Samsung SGH-X640' +- + headers: 'User-Agent: SAMSUNG-SGH-U700/1.0 SHP/VPP/R5 NetFront/3.4 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: SGH-U700 } } + readable: 'NetFront 3.4 on a Samsung SGH-U700' +- + headers: 'User-Agent: Motorola-w385 Obigo/Q04C1 MMP/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo Q', version: { value: '4', alias: 4C }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: W385 } } + readable: 'Obigo Q 4C on a Motorola W385' +- + headers: 'User-Agent: HTCP3600-Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Trinity } } + readable: 'Pocket Internet Explorer 4.0.1 on a HTC Trinity running Windows Mobile' +- + headers: 'User-Agent: EricssonT39/R202' + result: { device: { type: mobile, subtype: feature, manufacturer: Ericsson, model: T39 } } + readable: 'an Ericsson T39' +- + headers: 'User-Agent: SonyEricssonT250a/R5x TelecaBrowser/1.1.14.20' + result: { browser: { name: Obigo, version: '1.1', type: browser }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: T250a } } + readable: 'Obigo 1.1 on a Sony Ericsson T250a' +- + headers: 'User-Agent: LG-LG620G[TF012114009741104000000018032359160] Obigo/WAP2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1' + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: LG, model: 620G } } + readable: 'Obigo WAP 2.0 on a LG 620G' +- + headers: 'User-Agent: LG/U900/v1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: U900 } } + readable: 'a LG U900' +- + headers: 'User-Agent: KWC-Lightpipe/ UP.Browser/7.2.7.2.531 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '7.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: 'E1100 Neo' } } + readable: 'Openwave 7.2 on a Kyocera E1100 Neo' +- + headers: 'User-Agent: KWC-K612/1.0.04 UP.Browser/6.2.3.9.g.1.103 (GUI) MMP/2.0 UP.Link/6.3.0.0.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: 'K612 Strobe' } } + readable: 'Openwave 6.2 on a Kyocera K612 Strobe' +- + headers: 'User-Agent: KWC-Glide/ UP.Browser/7.2.7.2.541 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '7.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Kyocera, model: Glide } } + readable: 'Openwave 7.2 on a Kyocera Glide' +- + headers: 'User-Agent: Panasonic-X200P/RP1 Profile/MIDP-1.0 Configuration/CLDC-1.0' + result: { device: { type: mobile, subtype: feature, manufacturer: Panasonic, model: X200P } } + readable: 'a Panasonic X200P' +- + headers: 'User-Agent: BIRD S701_GPRS/1.0 OSE/V1.6.0 ULC/2.0 Release/04.21.2008 Browser/JB4.3' + result: { device: { type: mobile, subtype: feature, manufacturer: Bird, model: S701 } } + readable: 'a Bird S701' +- + headers: 'User-Agent: BIRD-S689' + result: { device: { type: mobile, subtype: feature, manufacturer: Bird, model: S689 } } + readable: 'a Bird S689' +- + headers: 'User-Agent: ASUS-J501/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { device: { type: mobile, subtype: feature, manufacturer: Asus, model: J501 } } + readable: 'an Asus J501' +- + headers: 'User-Agent: NOKIA-2605 UP.Browser/6.2.3.9.j.1.106 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2605' } } + readable: 'Openwave 6.2 on a Nokia 2605' +- + headers: 'User-Agent: Nokia-2228 UP.Browser/6.3.0.8.c.1.104 (GUI) MMP/2.0' + result: { browser: { name: Openwave, version: '6.3', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '2228' } } + readable: 'Openwave 6.3 on a Nokia 2228' +- + headers: 'User-Agent: LGECU320' + readable: 'a LG CU320' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: CU320 } } +- + headers: 'User-Agent: LGECU400 UPLINK' + readable: 'a LG CU400' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: CU400 } } +- + headers: 'User-Agent: LGE610/EAS-1.3' + readable: 'a LG 610' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: '610' } } +- + headers: 'User-Agent: LGU400' + readable: 'a LG U400' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: U400 } } +- + headers: 'User-Agent: LGU8120' + readable: 'a LG U8120' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: U8120 } } +- + headers: 'User-Agent: LG 245' + readable: 'a LG 245' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: '245' } } +- + headers: 'User-Agent: LG265' + readable: 'a LG 265' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: '265' } } +- + headers: 'User-Agent: LG 8600' + readable: 'a LG 8600' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: '8600' } } +- + headers: 'User-Agent: LG9100' + readable: 'a LG 9100' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: '9100' } } +- + headers: 'User-Agent: LGETU550' + readable: 'a LG TU550' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: TU550 } } +- + headers: 'User-Agent: LGL600V' + readable: 'a LG L600V' + result: { device: { type: mobile, subtype: feature, manufacturer: LG, model: L600V } } +- + headers: 'User-Agent: R380 2.0 WAP1.1' + readable: 'an Ericsson R380' + result: { device: { type: mobile, subtype: feature, manufacturer: Ericsson, model: R380 } } +- + headers: 'User-Agent: HAIER-N60' + readable: 'a Haier N60' + result: { device: { type: mobile, subtype: feature, manufacturer: Haier, model: N60 } } +- + headers: 'User-Agent: SAGEM-myV-55/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0 UP.Browser/6.2.2.6.d.3.100 (GUI) MMP/1.0' + readable: 'Openwave 6.2 on a Sagem myV-55' + result: { browser: { name: Openwave, version: '6.2', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Sagem, model: myV-55 } } +- + headers: 'User-Agent: UTSTARCOM-GTX75/UC1.88 POLARIS/6.00 Profile/MIDP-2.0 Configuration/CLDC-1.1 UNTRUSTED/1.0' + readable: 'Polaris 6.00 on an UTStarcom GTX75' + result: { browser: { name: Polaris, version: '6.00', type: browser }, device: { type: mobile, subtype: feature, manufacturer: UTStarcom, model: GTX75 } } +- + headers: 'User-Agent: PANTECH_GF500/(2005.04.26)Ver1.00/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'a Pantech GF500' + result: { device: { type: mobile, subtype: feature, manufacturer: Pantech, model: GF500 } } +- + headers: 'User-Agent: ZTE-T54(Brazil_VIVO)/1.0 NetFront/3.5 QTV5.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + readable: 'NetFront 3.5 on a ZTE T54' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: ZTE, model: T54 } } +- + headers: 'User-Agent: ZTE-R54(South_Africa_MTN)/1.0 NetFront/3.5 QTV5.1 Profile/MIDP-2.1 Configuration/CLDC-1.1' + readable: 'NetFront 3.5 on a ZTE R54' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: mobile, subtype: feature, manufacturer: ZTE, model: R54 } } +- + headers: 'User-Agent: Vodafone541/2.0 Profile V010 06/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q03C' + readable: 'Obigo Q 3C on a Vodafone 541' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: '541' } } +- + headers: 'User-Agent: Vodafone_555_Blue/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + readable: 'Obigo Q 5A on a Vodafone 555' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: '555' } } +- + headers: 'User-Agent: Vodafone_Chat_655W/010 06/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 ObigoInternetBrowser/Q05A' + readable: 'Obigo Q 5A on a Vodafone 655' + result: { browser: { name: 'Obigo Q', version: { value: '5', alias: 5A }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: '655' } } +- + headers: 'User-Agent: Vodafone-553/VF 553- MTK 6235- V02c- December 032010- Vodafone- ITGR Obigo/Q03C Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'Obigo Q 3C on a Vodafone 553' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: '553' } } +- + headers: 'User-Agent: ZEN M8/1.0; Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'a Zen M8' + result: { device: { type: mobile, subtype: feature, manufacturer: Zen, model: M8 } } +- + headers: 'User-Agent: ZEN P9 /Q03C MAUI-browser/MIDP-2.0Configuration/CLDC-1.1' + readable: 'Obigo Q 3C on a Zen P9 running MRE' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Zen, model: P9 } } +- + headers: 'User-Agent: ZEN M72* Wap Browser' + readable: 'a Zen M72' + result: { device: { type: mobile, subtype: feature, manufacturer: Zen, model: M72 } } +- + headers: 'User-Agent: ZEN M72_MAUI WAP Browser' + readable: 'MAUI WAP on a Zen M72' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Zen, model: M72 } } +- + headers: 'User-Agent: ZEN P46 Elite/MAUI WAP Browser' + readable: 'MAUI WAP on a Zen P46 Elite' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Zen, model: 'P46 Elite' } } +- + headers: 'User-Agent: ZEN X10-MAUI WAP Browser' + readable: 'MAUI WAP on a Zen X10' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Zen, model: X10 } } +- + headers: 'User-Agent: Ziox_ZX336_wap_browser' + readable: 'a Ziox ZX336' + result: { device: { type: mobile, subtype: feature, manufacturer: Ziox, model: ZX336 } } +- + headers: 'User-Agent: Ziox_ZX304 WAP-Browser/1.0.0' + readable: 'a Ziox ZX304' + result: { device: { type: mobile, subtype: feature, manufacturer: Ziox, model: ZX304 } } +- + headers: 'User-Agent: Ziox_Ziox_Z203_Wap Browser' + readable: 'a Ziox Z203' + result: { device: { type: mobile, subtype: feature, manufacturer: Ziox, model: Z203 } } +- + headers: 'User-Agent: Ziox_Z223_wap_browser/R2AE SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'SEMC Browser 4.0.3 on a Ziox Z223' + result: { browser: { name: 'SEMC Browser', version: 4.0.3, type: browser }, device: { type: mobile, subtype: feature, manufacturer: Ziox, model: Z223 } } +- + headers: "User-Agent: YUANDA60D_11B_HW (­\_) B1166AC_T91_BY2_L1_2014V1.0_02 Release/2014.07.04 WAP Browser/MAUI Profile/ Q03C1-2.40 en-US" + readable: 'Obigo Q 3C on a Yuanda 60D running MRE' + result: { browser: { name: 'Obigo Q', version: { value: '3', alias: 3C }, type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Yuanda, model: 60D } } +- + headers: 'User-Agent: YUANDA60A_COSMOS_11B_HW (MRE/3.1.00(2560);MAUI/11B.W13.08.MP.V3.F1;BDATE/2015/04/02 10:27;LCD/320480;CHIP/MT6260;KEY/Reduced;TOUCH/1;CAMERA/0;SENSOR/0;DEV/YUANDA60A_COSMOS_11B_HW;WAP Browser/MAUI (HTTP PGDL;HTTPS);GMOBI/001;MBOUNCE/002;MOMAGIC/003;IN' + readable: 'MAUI WAP on a Yuanda 60A running MRE' + result: { browser: { name: 'MAUI WAP', type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Yuanda, model: 60A } } +- + headers: 'User-Agent: YUANDA50_12864_COSMOS_11B_HW (MRE/3.1.00(2560);MAUI/TD_G4_V2_W6_APHONE.V1.0;BDATE/2014/10/28 14:31;LCD/272480;CHIP/MT6260;KEY/Reduced;TOUCH/1;CAMERA/0;SENSOR/0;DEV/YUANDA50_12864_COSMOS_11B_HW;WAP Browser/MAUI (HTTP PGDL;HTTPS);GMOBI/001;MBOUNCE/002;' + readable: 'MAUI WAP on a Yuanda 50 running MRE' + result: { browser: { name: 'MAUI WAP', type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Yuanda, model: '50' } } +- + headers: 'User-Agent: Wynncom W704/2.6 Profile/MIDP-2.0Configuration/CLDC-1.1' + readable: 'a Wynncom W704' + result: { device: { type: mobile, subtype: feature, manufacturer: Wynncom, model: W704 } } +- + headers: 'User-Agent: Wynncom W601; Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'a Wynncom W601' + result: { device: { type: mobile, subtype: feature, manufacturer: Wynncom, model: W601 } } +- + headers: 'User-Agent: Wynncom W550+/1.0; Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'a Wynncom W550+' + result: { device: { type: mobile, subtype: feature, manufacturer: Wynncom, model: W550+ } } +- + headers: 'User-Agent: Wynncom W106-Browser/1.0.0/powerplay/2' + readable: 'a Wynncom W106' + result: { device: { type: mobile, subtype: feature, manufacturer: Wynncom, model: W106 } } +- + headers: 'User-Agent: Wynncom JV S3 Slim-Browser/1.0.0/powerplay/2' + readable: 'a Wynncom JV S3 Slim' + result: { device: { type: mobile, subtype: feature, manufacturer: Wynncom, model: 'JV S3 Slim' } } +- + headers: 'User-Agent: WAP Browser Wynncom W541/1.0.0' + readable: 'a Wynncom W541' + result: { device: { type: mobile, subtype: feature, manufacturer: Wynncom, model: W541 } } +- + headers: 'User-Agent: VSUN60A_11B_HW (MRE/3.1.00(1536);MAUI/_Platinum_A6_v07_indian;BDATE/2014/03/12 15:22;LCD/240320;CHIP/MT6260;KEY/Normal;TOUCH/1;CAMERA/1;SENSOR/0;DEV/VSUN60A_11B_HW;WAP Browser/MAUI (HTTP PGDL;HTTPS);GMOBI/001;MBOUNCE/002;MOMAGIC/003;INDEX/004;SPICEI2' + readable: 'MAUI WAP on a Vsun 60A running MRE' + result: { browser: { name: 'MAUI WAP', type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Vsun, model: 60A } } +- + headers: 'User-Agent: VSUN50_FTE_11B_HW (MRE/3.0.00(512);MAUI/C11_S523_20130704;BDATE/2013/07/10 12:55;LCD/240320;CHIP/MT6250;KEY/Normal;TOUCH/1;CAMERA/1;SENSOR/0;DEV/VSUN50_FTE_11B_HW;WAP Browser/MAUI ();GMOBI/001;MBOUNCE/002;MOMAGIC/003;INDEX/004;SPICEI2I/005;GAMELOFT/0' + readable: 'MAUI WAP on a Vsun 50 running MRE' + result: { browser: { name: 'MAUI WAP', type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Vsun, model: '50' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-firefoxos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-firefoxos.yaml new file mode 100644 index 0000000..0cca198 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-firefoxos.yaml @@ -0,0 +1,84 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATEL ONE TOUCH 4012A; rv:18.1) Gecko/18.1 Firefox/18.1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '18.1' }, version: '18.1', type: browser }, engine: { name: Gecko, version: '18.1' }, os: { name: 'Firefox OS', version: '1.1' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch Fire' } } + readable: 'Firefox Mobile 18.1 on an Alcatel One Touch Fire running Firefox OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATELOneTouch4012A; rv:18.1) Gecko/18.1 Firefox/18.1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '18.1' }, version: '18.1', type: browser }, engine: { name: Gecko, version: '18.1' }, os: { name: 'Firefox OS', version: '1.1' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch Fire' } } + readable: 'Firefox Mobile 18.1 on an Alcatel One Touch Fire running Firefox OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATELOneTouch4012X/SVN 01010B; rv:18.1) Gecko/18.1 Firefox/18.1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '18.1' }, version: '18.1', type: browser }, engine: { name: Gecko, version: '18.1' }, os: { name: 'Firefox OS', version: '1.1' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch Fire' } } + readable: 'Firefox Mobile 18.1 on an Alcatel One Touch Fire running Firefox OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATELOneTouch4012X; rv:18.1) Gecko/18.1 Firefox/18.1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '18.1' }, version: '18.1', type: browser }, engine: { name: Gecko, version: '18.1' }, os: { name: 'Firefox OS', version: '1.1' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch Fire' } } + readable: 'Firefox Mobile 18.1 on an Alcatel One Touch Fire running Firefox OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATELOneTouch4019A; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch Fire C' } } + readable: 'Firefox Mobile 28.0 on an Alcatel One Touch Fire C running Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATELOneTouch4019X SVN:02005G MMS:1.1; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch Fire C' } } + readable: 'Firefox Mobile 28.0 on an Alcatel One Touch Fire C running Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATELOneTouch4019X/SVN 02003G; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch Fire C' } } + readable: 'Firefox Mobile 28.0 on an Alcatel One Touch Fire C running Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATELOneTouch6015X; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch Fire E' } } + readable: 'Firefox Mobile 28.0 on an Alcatel One Touch Fire E running Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; LG-D300; rv:18.1) Gecko/18.1 Firefox/18.1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '18.1' }, version: '18.1', type: browser }, engine: { name: Gecko, version: '18.1' }, os: { name: 'Firefox OS', version: '1.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Fireweb } } + readable: 'Firefox Mobile 18.1 on a LG Fireweb running Firefox OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; OPENC; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: 'Open C' } } + readable: 'Firefox Mobile 28.0 on a ZTE Open C running Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Open C; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: 'Open C' } } + readable: 'Firefox Mobile 28.0 on a ZTE Open C running Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; OpenC; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: 'Open C' } } + readable: 'Firefox Mobile 28.0 on a ZTE Open C running Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Orange KLIFD; rv:32.0) Gecko/32.0 Firefox/32.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '32.0' }, version: '32.0', type: browser }, engine: { name: Gecko, version: '32.0' }, os: { name: 'Firefox OS', version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Orange, model: Kilf } } + readable: 'Firefox Mobile 32.0 on an Orange Kilf running Firefox OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ZTEOPEN; rv:18.1) Gecko/18.1 Firefox/18.1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '18.1' }, version: '18.1', type: browser }, engine: { name: Gecko, version: '18.1' }, os: { name: 'Firefox OS', version: '1.1' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: Open } } + readable: 'Firefox Mobile 18.1 on a ZTE Open running Firefox OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '18.0' }, version: '18.0', type: browser }, engine: { name: Gecko, version: '18.0' }, os: { name: 'Firefox OS', version: 1.0.1 }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile 18.0 on Firefox OS 1.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:18.1) Gecko/18.1 Firefox/18.1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '18.1' }, version: '18.1', type: browser }, engine: { name: Gecko, version: '18.1' }, os: { name: 'Firefox OS', version: '1.1' }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile 18.1 on Firefox OS 1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '26.0' }, version: '26.0', type: browser }, engine: { name: Gecko, version: '26.0' }, os: { name: 'Firefox OS', version: '1.2' }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile 26.0 on Firefox OS 1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile 28.0 on Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:44.0) Gecko/44.0 Firefox/44.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '44.0' }, version: '44.0', type: browser }, engine: { name: Gecko, version: '44.0' }, os: { name: 'Firefox OS', version: '2.5' }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile 44.0 on Firefox OS 2.5' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '37.0' }, version: '37.0', type: browser }, engine: { name: Gecko, version: '37.0' }, os: { name: 'Firefox OS', version: '2.2' }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile 37.0 on Firefox OS 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '34.0' }, version: '34.0', type: browser }, engine: { name: Gecko, version: '34.0' }, os: { name: 'Firefox OS', version: '2.1' }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile 34.0 on Firefox OS 2.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-fireos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-fireos.yaml new file mode 100644 index 0000000..1544be1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-fireos.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SD4930UR Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Mobile Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android }, device: { type: mobile, subtype: smart, manufacturer: Amazon, model: 'Fire Phone' } } + readable: 'Amazon WebView on an Amazon Fire Phone running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.13.81_10003810) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=true' + result: { browser: { name: Silk, version: '1.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: FireOS, family: Android }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire' } } + readable: 'Silk 1.0 on an Amazon Kindle Fire running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; SD4930UR Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.29 like Chrome/34.0.1847.137 Mobile Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 34 }, version: '3.29', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '3' }, device: { type: mobile, subtype: smart, manufacturer: Amazon, model: 'Fire Phone' } } + readable: 'Silk 3.29 on an Amazon Fire Phone running FireOS 3' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-geos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-geos.yaml new file mode 100644 index 0000000..0156171 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-geos.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Nokia-Communicator-WWW-Browser/2.0 (Geos 3.0 Nokia-9000i)' + result: { browser: { name: 'Nokia Browser', version: '2.0', type: browser }, os: { name: GEOS, version: '3.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 9000i } } + readable: 'Nokia Browser 2.0 on a Nokia 9000i running GEOS 3.0' +- + headers: 'User-Agent: Nokia-Communicator-WWW-Browser/3.0 (Geos 3.0 Nokia-9110)' + result: { browser: { name: 'Nokia Browser', version: '3.0', type: browser }, os: { name: GEOS, version: '3.0' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '9110' } } + readable: 'Nokia Browser 3.0 on a Nokia 9110 running GEOS 3.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ios.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ios.yaml new file mode 100644 index 0000000..de72bec --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ios.yaml @@ -0,0 +1,468 @@ +- + headers: 'User-Agent: CFNetwork/0.0.0 Darwin/0.0.0' + result: { os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: iOS +- + headers: 'User-Agent: MQQBrowser/31 Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '3.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'QQ Browser 3.1 on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: MQQBrowser/35 Mozilla/5.0 (iPhone 3GS; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Mobile/8B117 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '3.5', type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 3GS' } } + readable: 'QQ Browser 3.5 on an Apple iPhone 3GS running iOS 4.1' +- + headers: 'User-Agent: MQQBrowser/40 Mozilla/5.0 (iPhone 4; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'QQ Browser 4.0 on an Apple iPhone 4 running iOS 6.1.2' +- + headers: 'User-Agent: MQQBrowser/40 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B142 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'QQ Browser 4.0 on an Apple iPhone 4S running iOS 6.1' +- + headers: 'User-Agent: MQQBrowser/43 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.3', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'QQ Browser 4.3 on an Apple iPhone 4S running iOS 7.0.4' +- + headers: 'User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 4Verizon; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A523 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.4', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'QQ Browser 4.4 on an Apple iPhone 4 running iOS 6.0.1' +- + headers: 'User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 5; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.4', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 4.4 on an Apple iPhone 5 running iOS 6.1.2' +- + headers: 'User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 5ATT; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A465 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.4', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 4.4 on an Apple iPhone 5 running iOS 7.0' +- + headers: 'User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5CGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '451', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5SGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '451', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5SGSM; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '451', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.2' +- + headers: 'User-Agent: Mercury/894 CFNetwork/711.1.16 Darwin/14.0.0' + result: { browser: { name: 'Mercury Browser', version: 8.9.4, type: browser }, os: { name: iOS, version: 8.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Mercury Browser 8.9.4 on iOS 8.1.1' +- + headers: 'User-Agent: MobileSafari/600.1.4 CFNetwork/711.1.12 Darwin/14.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 8.1' +- + headers: 'User-Agent: MobileSafari/600.1.4 CFNetwork/711.1.16 Darwin/14.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: 8.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 8.1.1' +- + headers: 'User-Agent: MobileSafari/7534.48.3 CFNetwork/548.0.4 Darwin/11.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 5.0.1' +- + headers: 'User-Agent: MobileSafari/9537.53 CFNetwork/672.1.13 Darwin/14.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 7.1' +- + headers: 'User-Agent: MobileSafari/9537.53 CFNetwork/672.1.15 Darwin/14.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: 7.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 7.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 3GS; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B146 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 3GS' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 3GS running iOS 6.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 4; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.2 Mobile/9B208 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 4 running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B142 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 4S running iOS 6.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 4Verizon; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B329 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 4 running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.5 Mobile/10B350 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 5 running iOS 6.1.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5ATT; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.1.1 Mobile/11B651 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.1', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.1 on an Apple iPhone 5 running iOS 7.0.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5CGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.1 Mobile/11B554a Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5CGSM; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.2.1 Mobile/11D201 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.2', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.2 on an Apple iPhone 5 running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5SGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0 Mobile/11B554a Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5SGSM; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/11B554a Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A5274d Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.0' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iOS 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_0 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A345 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.0' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iPhone OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F135 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.1' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iPhone OS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 3_0 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: '3.0' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iPhone OS 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.1' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iOS 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8F192' + result: { engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: '4.3' }, device: { type: emulator, manufacturer: Apple } } + readable: 'an emulator running iOS 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/25.0.1364.124 Mobile/9B206 Safari/7534.48.3' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 25 on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mercury/7.4 Mobile/9B206 Safari/7534.48.3' + result: { browser: { name: 'Mercury Browser', version: '7.4', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Mercury Browser 7.4 on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/30.0.1599.16 Mobile/10A403 Safari/8536.25' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 30 on an Apple iPhone running iOS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A405 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/33.0.1750.14 Mobile/10A525 Safari/8536.25' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 33 on an Apple iPhone running iOS 6.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A525 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) GSA/3.2.1.25875 Mobile/10A551 Safari/8536.25' + result: { browser: { name: 'Google Search', version: 3.2.1, type: 'app:search' }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Google Search 3.2.1 on an Apple iPhone running iOS 6.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B143 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B146 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 Safari/6531.22.7 iLunascape/3212' + result: { browser: { name: iLunascape, version: '3212', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'iLunascape 3212 on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 Safari/7534.48.3 Sleipnir/2.4.5m' + result: { browser: { name: Sleipnir, version: 2.4.5, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sleipnir 2.4.5 on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B350 SogouMobileBrowser/2.1.1' + result: { browser: { name: 'Sogou Mobile', version: '2.1', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 2.1 on an Apple iPhone running iOS 6.1.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_5 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.5 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_6 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_6 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko, M5WebKit/1.0.2, M5HybridSDK/1.0.0) Version/5.1.1 Mobile/6.1.6 Mammoth/5.1.1' + result: { browser: { name: Mammoth, version: 5.1.1, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Mammoth 5.1.1 on an Apple iPhone running iOS 6.1.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/7.0 Mobile/10A405 Safari/8536.25' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mercury/8.4.1 Mobile/11A465 Safari/9537.53' + result: { browser: { name: 'Mercury Browser', version: 8.4.1, type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Mercury Browser 8.4.1 on an Apple iPhone running iOS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B475 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 Safari/7534.48.3 Sleipnir/3.1.3m' + result: { browser: { name: Sleipnir, version: 3.1.3, type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sleipnir 3.1.3 on an Apple iPhone running iOS 7.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) OPiOS/8.0.0.78865 Mobile/11A501 Safari/9537.53' + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Opera Mini 8.0 on an Apple iPhone running iOS 7.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.51' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B511 Safari/6531.22.7 iLunascape/3212' + result: { browser: { name: iLunascape, version: '3212', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'iLunascape 3212 on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B511 SogouMobileBrowser/2.3.0' + result: { browser: { name: 'Sogou Mobile', version: '2.3', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 2.3 on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/5.1 YaBrowser/13.11.1500.0 Mobile/11B511 Safari/9537.53' + result: { browser: { name: 'Yandex Browser', version: '13.11', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Yandex Browser 13.11 on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B507 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Coast/3.0.0.74604 Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'Coast by Opera', version: 3.0.0, type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Coast by Opera 3.0.0 on an Apple iPhone running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Coast/3.1.1.80767 Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'Coast by Opera', version: 3.1.1, type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Coast by Opera 3.1.1 on an Apple iPhone running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_5 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B601 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.5 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.5' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B651 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11D124 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) YaBrowser/14.2.1700.0 Mobile/11D167 Safari/9537.53' + result: { browser: { name: 'Yandex Browser', version: '14.2', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Yandex Browser 14.2 on an Apple iPhone running iOS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.1 Mobile/11D169 Safari/9537.53 baidubrowser/2.0.1.0 (Baidu; P2 7.1)' + result: { browser: { name: 'Baidu Browser', version: 2.0.1.0, type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Baidu Browser 2.0.1.0 on an Apple iPhone running iOS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 SogouMobileBrowser/3.0.0' + result: { browser: { name: 'Sogou Mobile', version: '3.0', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 3.0 on an Apple iPhone running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) OPiOS/8.0.2.80660 Mobile/11D201 Safari/9537.53' + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Opera Mini 8.0 on an Apple iPhone running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A347 Safari/600.1.4' + result: { browser: { name: Safari, version: '8.0', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A347 Safari/525.200' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5B108 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: 2.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0_1 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A400 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: 3.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C97d Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: 3.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: 3.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: 4.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_2 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A400 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: 4.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C134 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: '4.2' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_10 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E600 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.10 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.10' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_5 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E128 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.5 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.5' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_6 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E200 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_8 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E401 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.8 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.8' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_9 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E501 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.9 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.9' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) FlyFlow/2.5 Version/5.0.2 Mobile/8H7 Safari/6533.18.5 baidubrowser/042_3.9.5.2_diordna_008_084/ESNESIH_51_3.0.4_69T-SH/1000256c/847AAB49ED14109F7BACD70DAED48491%7C696799010655468/1' + result: { browser: { name: 'Baidu Browser', version: '2.5', type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Baidu Browser 2.5 on an Apple iPhone running iOS 4.3.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_4 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8K2 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 6_1_3 like Mac OS X; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.10977IP Mobile' + result: { browser: { name: Puffin, family: { name: Chrome, version: 11 }, version: '3', type: browser }, engine: { name: Webkit, version: '534.35' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Puffin 3 on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 7_0_6 like Mac OS X; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558IP Mobile' + result: { browser: { name: Puffin, family: { name: Chrome, version: 11 }, version: '3', type: browser }, engine: { name: Webkit, version: '534.35' }, os: { name: iOS, version: 7.0.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Puffin 3 on an Apple iPhone running iOS 7.0.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; xx) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3' + result: { browser: { name: Safari, version: '3.0', type: browser }, engine: { name: Webkit, version: '420' }, os: { name: iOS, alias: 'iPhone OS', version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (iphone; U; CPU iPhone OS 4_3_5 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.5' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.0.7961', X-Puffin-UA: 'iPhone OS/iPhone 3GS/320x480' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 11 }, version: '2.0', type: browser }, engine: { name: Webkit, version: '534.35' }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 3GS' } } + readable: 'Puffin 2.0 on an Apple iPhone 3GS running iOS' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X; xx) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405 UCBrowser/9.1.0.287 Mobile', X-UCBrowser-UA: 'pf(42);la(zh-CN);dv(iPh3,1);pr(UCBrowser);ov(5_0_1);pi(640x960);ss(320x416);er(U);bt(UM);up();re(AppleWebKit/534.46 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(1);' } + result: { browser: { name: 'UC Browser', version: '9.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'UC Browser 9.1 on an Apple iPhone 4 running iOS 5.0.1' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X; xx) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 UCBrowser/9.3.2.356 Mobile', X-UCBrowser-UA: 'pf(44);la(zh-CN);dv(iPd5,1);pr(UCBrowser);ov(7_0_2);pi(640x1136);ss(320x416);er(U);bt(UM);up();re(AppleWebKit/537.51.1 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(2);' } + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: media, manufacturer: Apple, model: 'iPod touch (5th gen)' } } + readable: 'UC Browser 9.3 on an Apple iPod touch (5th gen) running iOS 7.0.2' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 MobileIron/1.3.0 Version/7.1.1 Safari/537.51.2', X-MobileIron-SecureBrowser-Managed-By: MobileIron } + result: { browser: { name: Iron, version: '1.3', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Iron 1.3 on an Apple iPhone running iOS 7.1.1' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)', X-Original-User-Agent: 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3', X-Device-User-Agent: 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3' } + result: { browser: { name: 'Google Wireless Transcoder' }, os: { name: iOS, alias: 'iPhone OS', version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Google Wireless Transcoder on an Apple iPhone running iPhone OS 1.0' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/34.818; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Apple # iPhone', X-OperaMini-Features: 'advanced, file_system, folding', X-OperaMini-Phone-UA: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5', Device-Stock-UA: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5' } + result: { browser: { name: 'Opera Mini', version: '4.2', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: iOS, version: 4.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Opera Mini 4.2 on an Apple iPhone running iOS 4.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3' + result: { browser: { name: Safari, version: '3.0', type: browser }, engine: { name: Webkit, version: '420' }, os: { name: iOS, alias: 'iPhone OS', version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 1.0' +- + headers: 'User-Agent: AtomicLite/7.0.1 CFNetwork/672.1.13 Darwin/14.0.0' + result: { browser: { name: Atomic, version: 7.0.1, type: browser }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Atomic 7.0.1 on iOS 7.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-kaios.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-kaios.yaml new file mode 100644 index 0000000..8a4b8a8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-kaios.yaml @@ -0,0 +1,52 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATEL4044M; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0' + readable: 'an Alcatel Go Flip running KaiOS 1.0' + result: { browser: { family: { name: Firefox, version: '37.0' } }, engine: { name: Gecko, version: '37.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'Go Flip' } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; ALCATEL4044N; rv:37.0) Gecko/37.0 Firefox/37.0 Kai/1.0' + readable: 'an Alcatel Go Flip running KaiOS 1.0' + result: { browser: { family: { name: Firefox, version: '37.0' } }, engine: { name: Gecko, version: '37.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: 'Go Flip' } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; LYF/F101K/LYF_F101K-000-01-26-181117; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.0' + readable: 'a JioPhone F101K running KaiOS 2.0' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Jio, model: 'JioPhone F101K' } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; LYF/F41T/LYF-F41T-000-01-0A-140917; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.0' + readable: 'a JioPhone F41T running KaiOS 2.0' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Jio, model: 'JioPhone F41T' } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; LYF/F61F/LYF-F61F-000-01-14-131117_i; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.0' + readable: 'a JioPhone F61F running KaiOS 2.0' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Jio, model: 'JioPhone F61F' } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; LYF/F90M/LYF-F90M-000-02-21-131117; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.0' + readable: 'a JioPhone F90M running KaiOS 2.0' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Jio, model: 'JioPhone F90M' } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; $LYF/$F30C/$LYF_F30C-000-09-00-270917; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.0' + readable: 'a JioPhone F30C running KaiOS 2.0' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Jio, model: 'JioPhone F30C' } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0' + readable: 'KaiOS 1.0' + result: { browser: { family: { name: Firefox, version: '37.0' } }, engine: { name: Gecko, version: '37.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '1.0' }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:48.0) Gecko/48.0 Firefox/48.0 KaiOS/2.0' + readable: 'KaiOS 2.0' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.0' }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5' + readable: 'KaiOS 2.5' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.5' }, device: { type: mobile, subtype: feature } } +- + headers: { User-Agent: 'Mozilla/5.0 (Mobile; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5', X-Wap-Profile: 'http://useragentprofile.hmdglobal.com/uaprof/Nokia33103Gr100.xml' } + readable: 'a Nokia 3310 3G running KaiOS 2.5' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.5' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3310 3G' } } +- + headers: { User-Agent: 'Mozilla/5.0 (Mobile; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5', X-Wap-Profile: 'http://useragentprofile.hmdglobal.com/uaprof/Nokia88104Gr100.xml' } + readable: 'a Nokia 8810 4G running KaiOS 2.5' + result: { browser: { family: { name: Firefox, version: '48.0' } }, engine: { name: Gecko, version: '48.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '2.5' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '8810 4G' } } +- + headers: { User-Agent: 'Mozilla/5.0 (Mobile; ALCATEL4044C; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0', X-Wap-Profile: 'http://www-ccpp.tcl-ta.com/files/4044C.xml' } + readable: 'an Alcatel QUICKFLIP running KaiOS 1.0' + result: { browser: { family: { name: Firefox, version: '37.0' } }, engine: { name: Gecko, version: '37.0' }, os: { name: KaiOS, family: 'Firefox OS', version: '1.0' }, device: { type: mobile, subtype: feature, manufacturer: Alcatel, model: QUICKFLIP } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-limo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-limo.yaml new file mode 100644 index 0000000..57da91b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-limo.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: SAMSUNG-GT-I6410-Vodafone/I6410BUJB7 Linux/X2/R1 Opera/9.6 SMS-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: 'Opera Mobile', version: '9.6', type: browser }, engine: { name: Presto }, os: { name: LiMo }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: '360 M1' } } + readable: 'Opera Mobile 9.6 on a Vodafone 360 M1 running LiMo' +- + headers: 'User-Agent: SAMSUNG-GT-I8320-Vodafone/I8320BUJC1 Linux/X2/R1 Opera/9.6 SMS-MMS/1.2.0 profile/MIDP-2.1 configuration/CLDC-1.1' + result: { browser: { name: 'Opera Mobile', version: '9.6', type: browser }, engine: { name: Presto }, os: { name: LiMo }, device: { type: mobile, subtype: feature, manufacturer: Vodafone, model: '360 H1' } } + readable: 'Opera Mobile 9.6 on a Vodafone 360 H1 running LiMo' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-I9200/1.0; U; Linux/SLP/2.0; xx) AppleWebKit/534.4 (KHTML, like Gecko) Dolfin/2.0 Mobile' + result: { browser: { name: Dolfin, version: '2.0', type: browser }, engine: { name: Webkit, version: '534.4' }, os: { name: 'Linux SLP', version: '2.0' }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-I9200 } } + readable: 'Dolfin 2.0 on a Samsung GT-I9200 running Linux SLP 2.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-maemo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-maemo.yaml new file mode 100644 index 0000000..9f7247f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-maemo.yaml @@ -0,0 +1,80 @@ +- + headers: 'User-Agent: Maemo Browser' + result: { browser: { name: MicroB, type: browser }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'MicroB on Maemo' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; ; Linux armv5tejl; U) Opera 8.02 [de_DE] Maemo browser 0.4.34 N770/SU-18' + result: { browser: { name: 'Opera Mobile', version: '8.02', type: browser }, engine: { name: Presto }, os: { name: Maemo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N770 } } + readable: 'Opera Mobile 8.02 on a Nokia N770 running Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv6l; Maemo; Opera Mobi/8; U; xx; rv:2.8.2.6) Gecko/20082202 Firefox/3.5.8 Opera 12.12' + result: { browser: { name: 'Opera Mobile', version: '12.12', type: browser }, engine: { name: Presto }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 12.12 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '10.0' }, version: '10.0', type: browser }, engine: { name: Gecko, version: '10.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 10.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:12.0) Gecko/20120425 Firefox/12.0 Fennec/12.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '12.0' }, version: '12.0', type: browser }, engine: { name: Gecko, version: '12.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 12.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:13.0) Gecko/20120607 Firefox/13.0 Fennec/13.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '13.0' }, version: '13.0', type: browser }, engine: { name: Gecko, version: '13.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 13.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:14.0) Gecko/20120723 Firefox/14.0.1 Fennec/14.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '14.0' }, version: '14.0', type: browser }, engine: { name: Gecko, version: '14.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 14.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:6.0) Gecko/20110811 Firefox/6.0 Fennec/6.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '6.0' }, version: '6.0', type: browser }, engine: { name: Gecko, version: '6.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 6.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:6.0a1) Gecko/20110526 Firefox/6.0a1 Fennec/6.0a1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: 6.0a1 }, version: 6.0a1, type: browser }, engine: { name: Gecko, version: 6.0a1 }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 6.0a1 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:7.0) Gecko/20110824 Firefox/7.0 Fennec/7.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '7.0' }, version: '7.0', type: browser }, engine: { name: Gecko, version: '7.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 7.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:7.0.1) Gecko/20110928 Firefox/7.0.1 Fennec/7.0.1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: 7.0.1 }, version: 7.0.1, type: browser }, engine: { name: Gecko, version: 7.0.1 }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 7.0.1 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux armv7l; rv:8.0.1) Gecko/20120117 Firefox/8.0.1 Fennec/8.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '8.0' }, version: '8.0', type: browser }, engine: { name: Gecko, version: 8.0.1 }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 8.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Mobile; rv:15.0) Gecko/20120829 Firefox/15.0 Fennec/15.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '15.0' }, version: '15.0', type: browser }, engine: { name: Gecko, version: '15.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 15.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Mobile; rv:17.0) Gecko/17.0 Firefox/17.0 Fennec/17.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '17.0' }, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 17.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Mobile; rv:17.0) Gecko/20130323 Firefox/17.0 Fennec/17.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '17.0' }, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: Maemo }, device: { type: mobile, subtype: smart } } + readable: 'Firefox Mobile Fennec 17.0 on Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux armv7l; xx; rv:1.9.2.3pre) Gecko/20100723 Firefox/3.5 Maemo Browser 1.7.4.8 RX-51 N900' + result: { browser: { name: MicroB, family: { name: Firefox, version: '3.5' }, version: 1.7.4, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Maemo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N900 } } + readable: 'MicroB 1.7.4 on a Nokia N900 running Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux armv7l; xx; rv:1.9.2a1pre) Gecko/20090928 Firefox/3.5 Maemo Browser 1.4.1.21 RX-51 N900' + result: { browser: { name: MicroB, family: { name: Firefox, version: '3.5' }, version: 1.4.1, type: browser }, engine: { name: Gecko, version: 1.9.2a1pre }, os: { name: Maemo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N900 } } + readable: 'MicroB 1.4.1 on a Nokia N900 running Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux armv7l; xx; rv:1.9.2a1pre) Gecko/20091127 Firefox/3.5 Maemo Browser 1.5.6 RX-51 N900' + result: { browser: { name: MicroB, family: { name: Firefox, version: '3.5' }, version: 1.5.6, type: browser }, engine: { name: Gecko, version: 1.9.2a1pre }, os: { name: Maemo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N900 } } + readable: 'MicroB 1.5.6 on a Nokia N900 running Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux armv7l; xx; rv:1.9.2b6pre) Gecko/20100318 Firefox/3.5 Maemo Browser 1.7.4.8 RX-51 N900' + result: { browser: { name: MicroB, family: { name: Firefox, version: '3.5' }, version: 1.7.4, type: browser }, engine: { name: Gecko, version: 1.9.2b6pre }, os: { name: Maemo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N900 } } + readable: 'MicroB 1.7.4 on a Nokia N900 running Maemo' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux armv7l; xx; rv:1.9.3pre) Gecko/20100723 Firefox/3.5 Maemo Browser 1.7.4.8 RX-51 N900' + result: { browser: { name: MicroB, family: { name: Firefox, version: '3.5' }, version: 1.7.4, type: browser }, engine: { name: Gecko, version: 1.9.3pre }, os: { name: Maemo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N900 } } + readable: 'MicroB 1.7.4 on a Nokia N900 running Maemo' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-meego.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-meego.yaml new file mode 100644 index 0000000..7fd86e9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-meego.yaml @@ -0,0 +1,40 @@ +- + headers: 'User-Agent: Mozilla/5.0 (MeeGo) AppleWebKit/534.34 (KHTML, like Gecko) HeliumMobileBrowser/1.0.0 Mobile Safari/534.34' + result: { browser: { name: Helium, version: 1.0.0, type: browser }, engine: { name: Webkit, version: '534.34' }, os: { name: MeeGo }, device: { type: mobile, subtype: smart } } + readable: 'Helium 1.0.0 on MeeGo' +- + headers: 'User-Agent: Mozilla/5.0 (MeeGo) AppleWebKit/534.34 (KHTML, like Gecko) Qt/4.7.4 Mobile Safari/534.34' + result: { browser: { using: { name: Qt, version: 4.7.4 } }, engine: { name: Webkit, version: '534.34' }, os: { name: MeeGo }, device: { type: mobile, subtype: smart } } + readable: 'Qt 4.7.4 on MeeGo' +- + headers: 'User-Agent: Mozilla/5.0 (MeeGo; NokiaN9)' + result: { os: { name: MeeGo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N9 } } + readable: 'a Nokia N9 running MeeGo' +- + headers: 'User-Agent: Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML) NokiaBrowser/8.5.0 Mobile Safari/534.13' + result: { browser: { name: 'Nokia Browser', version: 8.5.0, type: browser }, engine: { name: Webkit, version: '534.13' }, os: { name: MeeGo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N9 } } + readable: 'Nokia Browser 8.5.0 on a Nokia N9 running MeeGo' +- + headers: 'User-Agent: Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13' + result: { browser: { name: 'Nokia Browser', version: 8.5.0, type: browser }, engine: { name: Webkit, version: '534.13' }, os: { name: MeeGo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N9 } } + readable: 'Nokia Browser 8.5.0 on a Nokia N9 running MeeGo' +- + headers: 'User-Agent: Mozilla/5.0 (MeeGo; NokiaN950-00/00) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13' + result: { browser: { name: 'Nokia Browser', version: 8.5.0, type: browser }, engine: { name: Webkit, version: '534.13' }, os: { name: MeeGo }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N950-00 } } + readable: 'Nokia Browser 8.5.0 on a Nokia N950-00 running MeeGo' +- + headers: 'User-Agent: Mozilla/5.0 (Nokia; Qt; MeeGo)' + result: { os: { name: MeeGo }, device: { type: mobile, subtype: smart } } + readable: MeeGo +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; Opera Mobi/1; MeeGo) Presto/2.11.355 Version/12.10' + result: { browser: { name: 'Opera Mobile', version: '12.10', type: browser }, engine: { name: Presto, version: 2.11.355 }, os: { name: MeeGo }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 12.10 on MeeGo' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; Opera Mobi/2; MeeGo; U; xx) Presto/2.10.254 Version/12.00' + result: { browser: { name: 'Opera Mobile', version: '12.00', type: browser }, engine: { name: Presto, version: 2.10.254 }, os: { name: MeeGo }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 12.00 on MeeGo' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; Opera Mobi/46154; MeeGo) Presto/2.11.355 Version/12.10' + result: { browser: { name: 'Opera Mobile', version: '12.10', type: browser }, engine: { name: Presto, version: 2.11.355 }, os: { name: MeeGo }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 12.10 on MeeGo' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-mre.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-mre.yaml new file mode 100644 index 0000000..4f9cd9a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-mre.yaml @@ -0,0 +1,52 @@ +- + headers: { User-Agent: 'Opera/9.80 (MAUI Runtime; Opera Mini/4.4.31223/31.1448; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'OperaMini(MAUI_MRE;Opera Mini/4.4.31223;en)', X-OperaMini-Phone-UA: 'OperaMini(MAUI_MRE;Opera Mini/4.4.31223;en)', X-OperaMini-Phone: '? # ?', X-OperaMini-Features: 'advanced, routing, download, file_system, folding' } + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 4.4 on MRE' +- + headers: { User-Agent: 'Opera/9.80 (MAUI Runtime; Opera Mini/4.4.31223/34.1606; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone-UA: 'OperaMini(Fucus/Unknown;Opera Mini/4.4.31223;en)', X-OperaMini-Features: 'advanced, httpping, routing, file_system, folding, download', X-OperaMini-Phone: '? # ?', Device-Stock-UA: 'OperaMini(Fucus/Unknown;Opera Mini/4.4.31223;en)' } + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 4.4 on MRE' +- + headers: { User-Agent: 'Opera/9.80 (MAUI Runtime; Opera Mini/4.4.31762/35.3312; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone-UA: 'OperaMini(Lava-Discover135;Opera Mini/4.4.31762;en)', X-OperaMini-Phone: '? # ?', Device-Stock-UA: 'OperaMini(Lava-Discover135;Opera Mini/4.4.31762;en)', X-OperaMini-Features: 'httpping, advanced, routing, file_system, download, folding' } + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 4.4 on MRE' +- + headers: { User-Agent: 'Opera/9.80 (MAUI Runtime; Opera Mini/4.4.31989/30.3793; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone-UA: 'OperaMini(Gionee_1305;Opera Mini/4.4.31989;en)', X-OperaMini-Features: 'advanced, download, file_system, folding, routing', Device-Stock-UA: 'OperaMini(Gionee_1305;Opera Mini/4.4.31989;en)', X-OperaMini-Phone: '? # ?' } + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Gionee, model: '1305' } } + readable: 'Opera Mini 4.4 on a Gionee 1305 running MRE' +- + headers: { User-Agent: 'Opera/9.80 (MAUI Runtime; Opera Mini/6.1.27412/35.3781; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'NativeOperaMini(MRE_VER_3000;240X320;MT6256;V/;Opera Mini/6.1.27412;en)', X-OperaMini-Phone-UA: 'NativeOperaMini(MRE_VER_3000;240X320;MT6256;V/;Opera Mini/6.1.27412;en)', X-OperaMini-Phone: '? # ?', X-OperaMini-Features: 'advanced, httpping, routing, download, file_system, folding' } + result: { browser: { name: 'Opera Mini', version: '6.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 6.1 on MRE' +- + headers: 'User-Agent: PhilipsX331 MAUI/10A1032MP_ASTRO_W1052 Release/31.12.2010 Browser/Opera Sync/SyncClient1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera/9.80 (MTK; U; xx) Presto/2.5.28 Version/10.10' + result: { browser: { name: 'Opera Mobile', version: '10.10', type: browser }, engine: { name: Presto, version: 2.5.28 }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: X331 } } + readable: 'Opera Mobile 10.10 on a Philips X331 running MRE' +- + headers: 'User-Agent: Spice M6800 Opera/9.80 (MTK; Nucleus; U; xx) Presto/2.4.18 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.18 }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Spice, model: M6800 } } + readable: 'Opera Mobile 10.00 on a Spice M6800 running MRE' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; Pt-BR; maui e800) U2/1.0.0 UCBrowser/9.2.0.311 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-Device: 'maui e800', X-UCBrowser-Device-UA: 'MOT-EX226 MIDP-2.0/CLDC-1.1 Release/31.12.2010 Browser/Opera Sync/SyncClient1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera/9.80 (MTK; U; en-US) Presto/2.5.28 Version/10.10', X-UCBrowser-UA: 'pf(Java);la(Pt-BR);re(U2/1.0.0);dv(maui e800);pr(UCBrowser/9.2.0.311);ov(MIDP-2.0);pi(320*240);ss(320*240);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(2);im(0);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: 'MOTOKEY Social EX226' } } + readable: 'UC Browser 9.2 on a Motorola MOTOKEY Social EX226 running MRE' +- + headers: { User-Agent: 'UCWEB/2.0 (Java; U; MIDP-2.0; xx; Opera) U2/1.0.0 UCBrowser/9.4.1.377 U2/1.0.0 Mobile UNTRUSTED/1.0', X-UCBrowser-Device: Opera, X-UCBrowser-Device-UA: 'ASTRO36_TD/v3 (MRE\2.3.00(20480) resolution\320480 chipset\MT6255 touch\1 tpannel\1 camera\0 gsensor\0 keyboard\reduced) MAUI/10A1032MP_ASTRO_W1052 Release/31.12.2010 Browser/Opera Profile/MIDP-2.0 Configuration/CLDC-1.1 Sync/SyncClient1.1 Opera/9.80 (MTK; Nucleus; Opera Mobi/4000; U; en-US) Presto/2.5.28 Version/10.10', X-UCBrowser-UA: 'pf(Java);la(en-US);re(U2/1.0.0);dv(Opera);pr(UCBrowser/9.4.1.377);ov(MIDP-2.0);pi(320*480);ss(320*480);up(U2/1.0.0);er(U);bt(GJ);pm(1);bv(0);nm(0);im(0);sr(0);nt(99);' } + result: { browser: { name: 'UC Browser', version: '9.4', type: browser }, engine: { name: Gecko }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser 9.4 on MRE' +- + headers: { User-Agent: 'Opera/9.80 (MTK; Opera Mini/2.1198/34.1445; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Features: 'httpping, advanced, routing, folding, file_system, download', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'NativeOperaMini(MTK;Native Opera Mini/4.2.1198;fr)', Device-Stock-UA: 'NativeOperaMini(MTK;Native Opera Mini/4.2.1198;fr)' } + result: { browser: { name: 'Opera Mini', version: '2', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 2 on MRE' +- + headers: { User-Agent: 'Opera/9.80 (MTK; Opera Mini/5.1.3119/34.1153; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'NativeOperaMini(MTK;Opera Mini/5.1.3119;es)', X-OperaMini-Features: 'httpping, advanced, routing, file_system, download', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'NativeOperaMini(MTK;Opera Mini/5.1.3119;es)' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 5.1 on MRE' +- + headers: { User-Agent: 'Opera/9.80 (MTK; Opera Mini/7.0.32977/34.1576; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone-UA: 'NativeOperaMini(MTK/Unknown;Opera Mini/7.0.32977;en-US)', X-OperaMini-Features: 'httpping, advanced, routing, folding, file_system, download', X-OperaMini-Phone: '? # ?', Device-Stock-UA: 'NativeOperaMini(MTK/Unknown;Opera Mini/7.0.32977;en-US)' } + result: { browser: { name: 'Opera Mini', version: '7.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: MRE }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 7.0 on MRE' +- + headers: 'User-Agent: Mot-WX308/v3 BTSTLE_G_0A.22.11RPS Release/10.11.2011 Browser/Opera Profile/MIDP-2.0 Configuration/CLDC-1.1 Sync/SyncClient1.1 Opera/9.80 (MTK; Nucleus; Opera Mobi/4000; U; xx) Presto/2.5.28 Version/10.10' + result: { browser: { name: 'Opera Mobile', version: '10.10', type: browser }, engine: { name: Presto, version: 2.5.28 }, os: { name: MRE }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: WX308 } } + readable: 'Opera Mobile 10.10 on a Motorola WX308 running MRE' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s30.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s30.yaml new file mode 100644 index 0000000..9118b64 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s30.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Series30Plus; Nokia220/13.00.11; Profile/Series30Plus Configuration/Series30Plus) Gecko/20100401 S40OviBrowser/3.8.1.0.5' + result: { browser: { name: 'Nokia Xpress', version: 3.8.1, type: browser }, engine: { name: Gecko }, os: { name: Series30+ }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '220' } } + readable: 'Nokia Xpress 3.8.1 on a Nokia 220 running Series30+' +- + headers: 'User-Agent: Mozilla/5.0 (Series30Plus; Nokia225/20.06.17; Profile/Series30Plus Configuration/Series30Plus) Gecko/20100401 S40OviBrowser/3.8.1.2.3005' + result: { browser: { name: 'Nokia Xpress', version: 3.8.1, type: browser }, engine: { name: Gecko }, os: { name: Series30+ }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '225' } } + readable: 'Nokia Xpress 3.8.1 on a Nokia 225 running Series30+' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s40.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s40.yaml new file mode 100644 index 0000000..f245d72 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s40.yaml @@ -0,0 +1,28 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia110/03.04; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.3.0.0.49' + result: { browser: { name: 'Nokia Xpress', version: 2.3.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '110' } } + readable: 'Nokia Xpress 2.3.0 on a Nokia 110 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia110/03.04; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/5.5.0.0.27' + result: { browser: { name: 'Nokia Xpress', version: 5.5.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '110' } } + readable: 'Nokia Xpress 5.5.0 on a Nokia 110 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia112/03.32; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6' + result: { browser: { name: 'Nokia Xpress', version: 3.2.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '112' } } + readable: 'Nokia Xpress 3.2.0 on a Nokia 112 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia303/14.87; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/5.0.0.0.31' + result: { browser: { name: 'Nokia Xpress', version: 5.0.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: 'Asha 303' } } + readable: 'Nokia Xpress 5.0.0 on a Nokia Asha 303 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; Nokia3110c/06.02; Profile/MIDP-2.0 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.0.2.68.14' + result: { browser: { name: 'Nokia Xpress', version: 2.0.2, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '3110 Evolve' } } + readable: 'Nokia Xpress 2.0.2 on a Nokia 3110 Evolve running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaC2-02/07.57; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.1.0.0.62' + result: { browser: { name: 'Nokia Xpress', version: 3.1.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: C2-02 } } + readable: 'Nokia Xpress 3.1.0 on a Nokia C2-02 running Series40' +- + headers: 'User-Agent: Mozilla/5.0 (Series40; NokiaX2-05/08.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/2.3.0.0.48' + result: { browser: { name: 'Nokia Xpress', version: 2.3.0, type: browser }, engine: { name: Gecko }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: X2-05 } } + readable: 'Nokia Xpress 2.3.0 on a Nokia X2-05 running Series40' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s80.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s80.yaml new file mode 100644 index 0000000..0285d56 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-s80.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Series80/2.0 Nokia9300/05.22 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { os: { name: Series80, family: Symbian, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '9300' } } + readable: 'a Nokia 9300 running Series80 2.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Series80/2.0 Nokia9300i Profile/MIDP-2.0 Configuration/CLDC-1.1)' + readable: 'a Nokia 9300i running Series80 2.0' + result: { os: { name: Series80, family: Symbian, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 9300i } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible, MSIE 5.0; Series80/2.0 Nokia9500/4.51 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + readable: 'a Nokia 9500 running Series80 2.0' + result: { os: { name: Series80, family: Symbian, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '9500' } } +- + headers: 'User-Agent: EPOC32-WTL/2.2 Crystal/6.0 STNC-WTL/6.0(611)' + readable: 'STNC HitchHiker on a Nokia 9210 running Series80 1.0' + result: { browser: { name: 'STNC HitchHiker', type: browser }, os: { name: Series80, family: { name: Symbian, version: '6.0' }, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '9210' } } +- + headers: 'User-Agent: Mozilla/4.1 (compatible; MSIE 5.0; EPOC) Opera 6.0 [de]Nokia/Series-9200' + readable: 'Opera Mobile 6.0 on a Nokia 9210i running Series80 1.0' + result: { browser: { name: 'Opera Mobile', version: '6.0', type: browser }, engine: { name: Electra }, os: { name: Series80, family: Symbian, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 9210i } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-sailfish.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-sailfish.yaml new file mode 100644 index 0000000..e8a6dc1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-sailfish.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Jolla; Sailfish; Android 4.4; Mobile) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.23 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Blink }, os: { name: Sailfish }, device: { type: mobile, subtype: smart, manufacturer: Jolla, model: Phone } } + readable: 'Chrome 45 on a Jolla Phone running Sailfish' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Jolla; Sailfish; Android 4.4; Tablet) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.23 Safari/537.36' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Blink }, os: { name: Sailfish }, device: { type: tablet, manufacturer: Jolla, model: Tablet } } + readable: 'Chrome 45 on a Jolla Tablet running Sailfish' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Jolla; Sailfish; Mobile; rv:20.0) Gecko/20.0 Firefox/20.0 Sailfish Browser/1.0 Mobile' + result: { browser: { name: 'Sailfish Browser', family: { name: Firefox, version: '20.0' }, version: '1.0', type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: Sailfish }, device: { type: mobile, subtype: smart, manufacturer: Jolla, model: Phone } } + readable: 'Sailfish Browser 1.0 on a Jolla Phone running Sailfish' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Jolla; Sailfish; Mobile; rv:20.0) Gecko/20.0 Firefox/20.0 Sailfish Browser/1.0 like Safari/535.19' + result: { browser: { name: 'Sailfish Browser', family: { name: Firefox, version: '20.0' }, version: '1.0', type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: Sailfish }, device: { type: mobile, subtype: smart, manufacturer: Jolla, model: Phone } } + readable: 'Sailfish Browser 1.0 on a Jolla Phone running Sailfish' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.9 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '45', type: browser }, engine: { name: Blink }, os: { name: Sailfish }, device: { type: mobile, subtype: smart, manufacturer: Jolla, model: Phone } } + readable: 'Chrome 45 on a Jolla Phone running Sailfish' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:26.0) Gecko/26.0 Firefox/26.0 SailfishBrowser/1.0 like Safari/538.1' + result: { browser: { name: 'Sailfish Browser', family: { name: Firefox, version: '26.0' }, version: '1.0', type: browser }, engine: { name: Gecko, version: '26.0' }, os: { name: Sailfish }, device: { type: mobile, subtype: smart, manufacturer: Jolla, model: Phone } } + readable: 'Sailfish Browser 1.0 on a Jolla Phone running Sailfish' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:29.0) Gecko/29.0 Firefox/29.0 SailfishBrowser/1.0' + result: { browser: { name: 'Sailfish Browser', family: { name: Firefox, version: '29.0' }, version: '1.0', type: browser }, engine: { name: Gecko, version: '29.0' }, os: { name: Sailfish }, device: { type: mobile, subtype: smart, manufacturer: Jolla, model: Phone } } + readable: 'Sailfish Browser 1.0 on a Jolla Phone running Sailfish' +- + headers: 'User-Agent: Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0' + result: { browser: { name: 'Sailfish Browser', family: { name: Firefox, version: '31.0' }, version: '1.0', type: browser }, engine: { name: Gecko, version: '31.0' }, os: { name: Sailfish }, device: { type: mobile, subtype: smart, manufacturer: Jolla, model: Phone } } + readable: 'Sailfish Browser 1.0 on a Jolla Phone running Sailfish' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-spreadtrum.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-spreadtrum.yaml new file mode 100644 index 0000000..09eb633 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-spreadtrum.yaml @@ -0,0 +1,8 @@ +- + headers: { User-Agent: 'Opera/9.80 (SpreadTrum; Opera Mini/4.4.29625/34.1970; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'NativeOperaMini(Spreadtrum/Unknown;Native Opera Mini/4.4.29625;pt)', X-OperaMini-Features: 'httpping, advanced, routing, folding, file_system, download', Device-Stock-UA: 'NativeOperaMini(Spreadtrum/Unknown;Native Opera Mini/4.4.29625;pt)' } + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: SpreadTrum }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 4.4 on SpreadTrum' +- + headers: { User-Agent: 'Opera/9.80 (SpreadTrum; Opera Mini/4.4.31227/34.1088; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'NativeOperaMini(Spreadtrum/HW Version: SC6531_OPENPHONE;Native Opera Mini/4.4.31227;en)', X-OperaMini-Phone-UA: 'NativeOperaMini(Spreadtrum/HW Version: SC6531_OPENPHONE;Native Opera Mini/4.4.31227;en)', X-OperaMini-Phone: '? # ?', X-OperaMini-Features: 'advanced, httpping, routing, file_system, download, folding' } + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: SpreadTrum }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 4.4 on SpreadTrum' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-symbian.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-symbian.yaml new file mode 100644 index 0000000..156a203 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-symbian.yaml @@ -0,0 +1,224 @@ +- + headers: 'User-Agent: (Symbian/3; S60/5.2 Mozilla/5.0; NokiaN8-00/10.0.000; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.2' + result: { browser: { name: 'Nokia Browser', version: '7.2', type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N8-00 } } + readable: 'Nokia Browser 7.2 on a Nokia N8-00 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/2.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124' + result: { browser: { name: 'Nokia Browser', version: 7.1.18124, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N97 } } + readable: 'Nokia Browser 7.1 on a Nokia N97 running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (S60V3; U; xx; NokiaE63)/UC Browser8.5.0.183/28/354/UCWEB Mobile' + result: { browser: { name: 'UC Browser', version: '8.5', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian, version: '3' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E63 } } + readable: 'UC Browser 8.5 on a Nokia E63 running Series60 3' +- + headers: 'User-Agent: Mozilla/5.0 (S60V5; U; xx; NokiaC5-03) AppleWebKit/530.13 (KHTML, like Gecko) UCBrowser/8.6.0.199/50/444/UCWEB Mobile' + result: { browser: { name: 'UC Browser', version: '8.6', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian, version: '5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C5-03 } } + readable: 'UC Browser 8.6 on a Nokia C5-03 running Series60 5' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaC6-01/011.010; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.2 3gpp-gba' + result: { browser: { name: 'Nokia Browser', version: 7.2.7, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C6-01 } } + readable: 'Nokia Browser 7.2.7 on a Nokia C6-01 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaC7-00/012.004; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.3' + result: { browser: { name: 'Nokia Browser', version: 7.2.7, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: C7-00 } } + readable: 'Nokia Browser 7.2.7 on a Nokia C7-00 running Series60 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Symbian/3; Series60/5.3 VertuConstellationT/111.040.007; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1' + result: { browser: { name: 'Nokia Browser', version: 8.3.1, type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: Series60, family: Symbian, version: '5.3' }, device: { type: mobile, subtype: smart, manufacturer: Vertu, model: 'Constellation T' } } + readable: 'Nokia Browser 8.3.1 on a Vertu Constellation T running Series60 5.3' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.1; U; xx) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { family: { name: Symbian, version: '9.1' } }, device: { type: mobile, subtype: feature } } + readable: 'an unknown browser based on Webkit 413' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 Nokia6710s/031.020; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.3.1' + result: { browser: { name: 'Nokia Browser', version: 7.2.3, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6710 Navigator' } } + readable: 'Nokia Browser 7.2.3 on a Nokia 6710 Navigator running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE5-00/042.014; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.2 3gpp-gba' + result: { browser: { name: 'Nokia Browser', version: 7.2.6, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E5-00 } } + readable: 'Nokia Browser 7.2.6 on a Nokia E5-00 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 VertuConstellationQuest/051.844.1; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4' + result: { browser: { name: 'Nokia Browser', version: 7.3.1, type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Vertu, model: 'Constellation Quest' } } + readable: 'Nokia Browser 7.3.1 on a Vertu Constellation Quest running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5233/40.1.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.7.4' + result: { browser: { name: 'Nokia Browser', version: 7.2.7, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '5228' } } + readable: 'Nokia Browser 7.2.7 on a Nokia 5228 running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124' + result: { browser: { name: 'Nokia Browser', version: 7.1.18124, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N97 } } + readable: 'Nokia Browser 7.1 on a Nokia N97 running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Samsung/I8910;; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/ Mobile Safari/535.1' + result: { browser: { name: 'Nokia Browser', type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia HD' } } + readable: 'Nokia Browser on a Samsung Omnia HD running Series60 5.0' +- + headers: 'User-Agent: NokiaE72/071.004 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.3.1' + result: { browser: { name: 'Nokia Browser', version: 7.2.3, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E72 } } + readable: 'Nokia Browser 7.2.3 on a Nokia E72 running Series60 3.2' +- + headers: 'User-Agent: NokiaN97/22.1.112 (SymbianOS/9.4; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebkit/525 (KHTML, like Gecko) BrowserNG/7.1.4' + result: { browser: { name: 'Nokia Browser', version: 7.1.4, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N97 } } + readable: 'Nokia Browser 7.1.4 on a Nokia N97 running Series60 5.0' +- + headers: 'User-Agent: NokiaN97mini/12.0.110 (SymbianOS/9.4; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebkit/525 (KHTML, like Gecko) BrowserNG/7.1.4' + result: { browser: { name: 'Nokia Browser', version: 7.1.4, type: browser }, engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'N97 Mini' } } + readable: 'Nokia Browser 7.1.4 on a Nokia N97 Mini running Series60 5.0' +- + headers: 'User-Agent: SamsungI8910/SymbianOS/9.1 Series60/3.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)' + result: { os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia HD' } } + readable: 'a Samsung Omnia HD running Series60 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Samsung/I8910;; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/ Mobile Safari/535.1' + result: { browser: { name: 'Nokia Browser', type: browser }, engine: { name: Webkit, version: '535.1' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia HD' } } + readable: 'Nokia Browser on a Samsung Omnia HD running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 Samsung/I8510/XXHG5; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: INNOV8 } } + readable: 'a Samsung INNOV8 running Series60 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; Series60/3.1 Samsung/SGH-i550/XXHH1 Profile/MIDP-2.0 Configuration/CLDC-1.1 U; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: i550 } } + readable: 'a Samsung i550 running Series60 3.1' +- + headers: 'User-Agent: SamsungI8910/SymbianOS/9.1 Series60/3.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' + result: { os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia HD' } } + readable: 'a Samsung Omnia HD running Series60 3.0' +- + headers: 'User-Agent: SonyEricssonU5i/R2EA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 model-orange) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Vivaz } } + readable: 'a Sony Ericsson Vivaz running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 SonyEricssonU5i/R2AA;; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/ Mobile Safari/533.4' + result: { browser: { name: 'Nokia Browser', type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Vivaz } } + readable: 'Nokia Browser on a Sony Ericsson Vivaz running Series60 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.1; U; Series60/3.1 AppleWebKit/413 (KHTML, like Gecko) Safari/413 Digia @Web/2.1 SonyEricssonP990i/R100 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Digia @Web', version: '2.1', type: browser }, engine: { name: Webkit, version: '413' }, os: { name: UIQ, family: { name: Symbian, version: '9.1' } }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: P990 } } + readable: 'Digia @Web 2.1 on a Sony Ericsson P990 running UIQ' +- + headers: 'User-Agent: SonyEricssonU1iv/R2AA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Satio } } + readable: 'a Sony Ericsson Satio running Series60 5.0' +- + headers: 'User-Agent: SonyEricssonU1i/R2AA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Satio } } + readable: 'a Sony Ericsson Satio running Series60 5.0' +- + headers: 'User-Agent: MOTORIZR-Z8/46.00.00 Mozilla/4.0 (compatible MSIE 6.0 Symbian OS 342) Opera 8.65' + result: { browser: { name: 'Opera Mobile', version: '8.65', type: browser }, engine: { name: Presto }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: 'RIZR Z8' } } + readable: 'Opera Mobile 8.65 on a Motorola RIZR Z8 running UIQ' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 VertuConstellationQuest/051.844.1; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.26 Mobile Safari/533.4' + result: { browser: { name: 'Nokia Browser', version: 7.3.1, type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: Series60, family: { name: Symbian, version: '9.3' }, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Vertu, model: 'Constellation Quest' } } + readable: 'Nokia Browser 7.3.1 on a Vertu Constellation Quest running Series60 3.2' +- + headers: 'User-Agent: VertuConstellationT/025.605 (Symbian/3; Series60/5.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.37 Mobile Safari/533.4 3gpp-gba' + result: { browser: { name: 'Nokia Browser', version: 7.3.1, type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: Series60, family: Symbian, version: '5.2' }, device: { type: mobile, subtype: smart, manufacturer: Vertu, model: 'Constellation T' } } + readable: 'Nokia Browser 7.3.1 on a Vertu Constellation T running Series60 5.2' +- + headers: 'User-Agent: SonyEricssonP1i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 701) Opera 8.65 [ru]' + result: { browser: { name: 'Opera Mobile', version: '8.65', type: browser }, engine: { name: Presto }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: P1 } } + readable: 'Opera Mobile 8.65 on a Sony Ericsson P1 running UIQ' +- + headers: 'User-Agent: SonyEricssonG700/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 958) Opera 8.65 [en]' + result: { browser: { name: 'Opera Mobile', version: '8.65', type: browser }, engine: { name: Presto }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: G700 } } + readable: 'Opera Mobile 8.65 on a Sony Ericsson G700 running UIQ' +- + headers: 'User-Agent: SonyEricssonP990i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 598) Opera 8.65 [ru]' + result: { browser: { name: 'Opera Mobile', version: '8.65', type: browser }, engine: { name: Presto }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: P990 } } + readable: 'Opera Mobile 8.65 on a Sony Ericsson P990 running UIQ' +- + headers: 'User-Agent: SonyEricssonW950i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 598) Opera 8.65 [ru]' + result: { browser: { name: 'Opera Mobile', version: '8.65', type: browser }, engine: { name: Presto }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: W950 } } + readable: 'Opera Mobile 8.65 on a Sony Ericsson W950 running UIQ' +- + headers: 'User-Agent: SonyEricssonU_1/R1CA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Satio } } + readable: 'a Sony Ericsson Satio running Series60 5.0' +- + headers: 'User-Agent: SonyEricssonU1iv/R2AA; Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525' + result: { engine: { name: Webkit, version: '525' }, os: { name: Series60, family: { name: Symbian, version: '9.4' }, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Satio } } + readable: 'a Sony Ericsson Satio running Series60 5.0' +- + headers: 'User-Agent: SamsungI8910/SymbianOS/9.1 Series60/3.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' + result: { os: { name: Series60, family: { name: Symbian, version: '9.1' }, version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia HD' } } + readable: 'a Samsung Omnia HD running Series60 3.0' +- + headers: 'User-Agent: Mozilla/4.1 (compatible; MSIE 5.0; Symbian OS) Opera 6.0 [de]./MOT-A925./P243' + result: { browser: { name: 'Opera Mobile', version: '6.0', type: browser }, engine: { name: Electra }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: A925 } } + readable: 'Opera Mobile 6.0 on a Motorola A925 running UIQ' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Motorola A1000;735b) Opera 7.50 [en]./A1000./1.0 UP.Link/6.3.1.15.0' + result: { browser: { name: 'Opera Mobile', version: '7.50', type: browser }, engine: { name: Presto }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: A1000 } } + readable: 'Opera Mobile 7.50 on a Motorola A1000 running UIQ' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Motorola M1000;811) Opera 7.50 [ja]./M1000./1.0' + result: { browser: { name: 'Opera Mobile', version: '7.50', type: browser }, engine: { name: Presto }, os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: M1000, carrier: DoCoMo } } + readable: 'Opera Mobile 7.50 on a Motorola M1000 running UIQ' +- + headers: 'User-Agent: Nokia6708/2.0 (V1.0.0) SymbianOS/7.0 UIQ/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { os: { name: UIQ, family: { name: Symbian, version: '7.0' }, version: '2.1' }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6708' } } + readable: 'a Nokia 6708 running UIQ 2.1' +- + headers: 'User-Agent: BenQ P30/R101 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { os: { name: UIQ, family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: BenQ, model: P30 } } + readable: 'a BenQ P30 running UIQ' +- + headers: 'User-Agent: Mozilla/5.0 (SonyEricssonU5i)UC AppleWebkit(like Gecko) Safari/530' + result: { browser: { name: 'UC Browser', type: browser }, engine: { name: Gecko }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Vivaz } } + readable: 'UC Browser on a Sony Ericsson Vivaz running Series60' +- + headers: 'User-Agent: DoCoMo/2.0 F06B(c500;TB;W20H13)' + result: { os: { name: MOAP(S), family: Symbian }, device: { type: mobile, subtype: feature, manufacturer: Fujitsu, model: F06B, carrier: DoCoMo } } + readable: 'a Fujitsu F06B running MOAP(S)' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 LGKT610/v10A; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML; like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: KT610 } } + readable: 'a LG KT610 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 LGKT615/v10C; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: KT615 } } + readable: 'a LG KT615 running Series60 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 LG KS10/v10A; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413' + result: { engine: { name: Webkit, version: '413' }, os: { name: Series60, family: { name: Symbian, version: '9.2' }, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: KS10 } } + readable: 'a LG KS10 running Series60 3.1' +- + headers: 'User-Agent: Panasonic-X800/1.0 SymbianOS/7.0 Series60/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { os: { name: Series60, family: { name: Symbian, version: '7.0' }, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Panasonic, model: X800 } } + readable: 'a Panasonic X800 running Series60 2.0' +- + headers: 'User-Agent: Nokia/6600/1.0 (3.44.1) SymbianOS/7.0s Series60/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.0' + result: { os: { name: Series60, family: { name: Symbian, version: '7.0' }, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6600' } } + readable: 'a Nokia 6600 running Series60 2.0' +- + headers: 'User-Agent: Nokia-N8-00/Unknown_FVersion Encoding/UTF-8 Lang/ar Caps/223 Morange/6.1.1 CS60/6.11.58 S60/50 PI/bb8c926f183ad2d16ca6bf706c7c011f Domain/@voda_egypt' + readable: 'a Nokia N8-00 running Series60 6.11.58' + result: { os: { name: Series60, family: Symbian, version: 6.11.58 }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: N8-00 } } +- + headers: 'User-Agent: Doris/1.15 [en] (Symbian)' + readable: 'Doris 1.15' + result: { browser: { name: Doris, version: '1.15', type: browser }, os: { family: Symbian }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/4.1 (compatible; MSIE 5.0; Symbian OS) Opera 6.02 [en]' + readable: 'Opera Mobile 6.02' + result: { browser: { name: 'Opera Mobile', version: '6.02', type: browser }, engine: { name: Electra }, os: { family: Symbian }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/4.1 (compatible; MSIE 5.0; Symbian OS) Opera 6.20 [en]' + readable: 'Opera Mobile 6.20' + result: { browser: { name: 'Opera Mobile', version: '6.20', type: browser }, engine: { name: Electra }, os: { family: Symbian }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/4.1 (compatible; MSIE5.0; Symbian OS); Opera 6.02 [de]' + readable: 'Opera Mobile 6.02' + result: { browser: { name: 'Opera Mobile', version: '6.02', type: browser }, engine: { name: Electra }, os: { family: Symbian }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/5.0 (Opera/9.80; S60 SymbOS; Opera Mobi/SYB-1104061449 ) AppleWebKit/535.1 (KHTML, like Gecko) Firefox/6.0/7.4.1.8 Mobile Safari/535.1' + readable: 'Opera Mobile 9.80 on Series60' + result: { browser: { name: 'Opera Mobile', version: '9.80', type: browser }, engine: { name: Presto }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Opera/9.80; S60 SymbOS; Opera Mobi/SYB-1107071606 ) AppleWebKit/535.1 (KHTML, like Gecko) Version/11.10/.. Mobile Safari/535.1 3gpp-gba' + readable: 'Opera Mobile 11.10 on Series60' + result: { browser: { name: 'Opera Mobile', version: '11.10', type: browser }, engine: { name: Presto }, os: { name: Series60, family: Symbian }, device: { type: mobile, subtype: smart } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-threadx.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-threadx.yaml new file mode 100644 index 0000000..523a375 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-threadx.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: HUAWEI T1201_TD/1.0 ThreadX_OS/04.00 SC8800H/S4 Release/6.17.2010 Browser/NetFont-3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, os: { name: ThreadX, version: '04.00' }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: T1201 } } + readable: 'NetFront 3.5 on a Huawei T1201 running ThreadX 04.00' +- + headers: 'User-Agent: PhilipsX2300/W1245_V12 ThreadX_OS/4.0 MOCOR/W12 Release/11.08.2012 Browser/Dorado1.0' + result: { browser: { name: 'Dorado WAP', version: '1.0', type: browser }, os: { name: ThreadX, version: '4.0' }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: X2300 } } + readable: 'Dorado WAP 1.0 on a Philips X2300 running ThreadX 4.0' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/4.5.33867/35.3088; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'PhilipsX2300/W1245_V12 ThreadX_OS/4.0 MOCOR/W12 Release/11.08.2012 Browser/Dorado1.0', X-OperaMini-Features: 'advanced, httpping, routing, folding, file_system', Device-Stock-UA: 'PhilipsX2300/W1245_V12 ThreadX_OS/4.0 MOCOR/W12 Release/11.08.2012 Browser/Dorado1.0' } + result: { browser: { name: 'Opera Mini', version: '4.5', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: ThreadX, version: '4.0' }, device: { type: mobile, subtype: feature, manufacturer: Philips, model: X2300 } } + readable: 'Opera Mini 4.5 on a Philips X2300 running ThreadX 4.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-tizen.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-tizen.yaml new file mode 100644 index 0000000..7b83962 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-tizen.yaml @@ -0,0 +1,184 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.0; SAMSUNG SM-HIGGS) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.0 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Higgs"' } } + readable: 'Samsung Browser on a Samsung "Higgs" running Tizen 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.0; SAMSUNG SM-Z9005) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.0 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'Samsung Browser on a Samsung SM-Z9005 prototype running Tizen 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.1; SAMSUNG GT-I8800) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.1 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Melius"' } } + readable: 'Samsung Browser on a Samsung "Melius" running Tizen 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.1; SEC_SC-001) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.1 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SC-001 prototype' } } + readable: 'Samsung Browser on a Samsung SC-001 prototype running Tizen 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.1; sdk) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.1 Mobile Safari/537.3' + result: { engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.1' }, device: { type: emulator } } + readable: 'an emulator running Tizen 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart } } + readable: 'Samsung Browser on Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 like Android 4.1; Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart } } + readable: 'Samsung Browser on Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2.0; SC-03F) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.2 Chrome/34.0.1847.76 efl-webengine/0.1.1.1 Mobile Safari/537.36' + result: { browser: { family: { name: Chrome, version: 34 } }, engine: { name: Blink }, os: { name: Tizen, version: 2.2.0 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: ZeQ } } + readable: 'a Samsung ZeQ running Tizen 2.2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2.0; SC-03F) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.2 Chrome/34.0.1847.76 efl-webengine/0.1.1.1 Safari/537.36' + result: { browser: { family: { name: Chrome, version: 34 } }, engine: { name: Blink }, os: { name: Tizen, version: 2.2.0 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: ZeQ } } + readable: 'a Samsung ZeQ running Tizen 2.2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2.0; SM-Z9005) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.2 Chrome/34.0.1847.76 efl-webengine/0.1.1.1 Mobile Safari/537.36' + result: { browser: { family: { name: Chrome, version: 34 } }, engine: { name: Blink }, os: { name: Tizen, version: 2.2.0 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'a Samsung SM-Z9005 prototype running Tizen 2.2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2.0; SM-Z9005) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.2 Chrome/34.0.1847.76 efl-webengine/0.1.1.1 Safari/537.36' + result: { browser: { family: { name: Chrome, version: 34 } }, engine: { name: Blink }, os: { name: Tizen, version: 2.2.0 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'a Samsung SM-Z9005 prototype running Tizen 2.2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2.1; SM-Z9005) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.2 Chrome/34.0.1847.76 efl-webengine/0.1.1.1 Mobile Safari/537.36' + result: { browser: { family: { name: Chrome, version: 34 } }, engine: { name: Blink }, os: { name: Tizen, version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'a Samsung SM-Z9005 prototype running Tizen 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG GT-I8800) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Melius"' } } + readable: 'Samsung Browser on a Samsung "Melius" running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG GT-I8800) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 like Android 4.1; Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Melius"' } } + readable: 'Samsung Browser on a Samsung "Melius" running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG GT-I8805) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 like Android 4.1; Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Redwood"' } } + readable: 'Samsung Browser on a Samsung "Redwood" running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG GT-I8805-ORANGE/DailyRedwoodLTEEUROPEN_20131104.001) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Redwood"' } } + readable: 'Samsung Browser on a Samsung "Redwood" running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG GT-I8805-ORANGE/I8805BVEAMG1) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Redwood"' } } + readable: 'Samsung Browser on a Samsung "Redwood" running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG KIRAN) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Z1 } } + readable: 'Samsung Browser on a Samsung Z1 running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SGH-N099) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SGH-N099 prototype' } } + readable: 'Samsung Browser on a Samsung SGH-N099 prototype running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-HIGGS) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Higgs"' } } + readable: 'Samsung Browser on a Samsung "Higgs" running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z130E) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Z1 } } + readable: 'Samsung Browser on a Samsung Z1 running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z130H) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Z1 } } + readable: 'Samsung Browser on a Samsung Z1 running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z9005) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'Samsung Browser on a Samsung SM-Z9005 prototype running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z9005) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 like Android 4.1; Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'Samsung Browser on a Samsung SM-Z9005 prototype running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z9005-ORANGE/DBUILDWebcore_20131025.002) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'Samsung Browser on a Samsung SM-Z9005 prototype running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z9005-ORANGE/DailyRedwood8974EUROPEN_20130917.001) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'Samsung Browser on a Samsung SM-Z9005 prototype running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z9005-ORANGE/Z9005XXEAMH1) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SM-Z9005 prototype' } } + readable: 'Samsung Browser on a Samsung SM-Z9005 prototype running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z910F) AppleWebKit/537.3 (KHTML, like Gecko) SamsungBrowser/1.0 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser', version: '1.0' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Z } } + readable: 'Samsung Browser 1.0 on a Samsung Z running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z910F) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Z } } + readable: 'Samsung Browser on a Samsung Z running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SAMSUNG SM-Z910F) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Z } } + readable: 'Samsung Browser on a Samsung Z running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SEC_SC-001) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SC-001 prototype' } } + readable: 'Samsung Browser on a Samsung SC-001 prototype running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; SEC_SC-03F) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: ZeQ } } + readable: 'Samsung Browser on a Samsung ZeQ running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2; sdk) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 like Android 4.1; Mobile Safari/537.3' + result: { engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: emulator } } + readable: 'an emulator running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.3; sdk) AppleWebKit/538.1 (KHTML, like Gecko)Version/2.3 Mobile Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: '2.3' }, device: { type: emulator } } + readable: 'an emulator running Tizen 2.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 3.0 IVI; sdk) AppleWebKit/537.3 (KHTML, like Gecko) Version/3.0 Safari/537.3' + result: { engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '3.0' }, device: { type: emulator } } + readable: 'an emulator running Tizen 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Tizen 1.0; xx) AppleWebKit/534.46 (KHTML, like Gecko) Mobile Tizen Browser/1.0' + result: { browser: { name: 'Samsung Browser', version: '1.0' }, engine: { name: Webkit, version: '534.46' }, os: { name: Tizen, version: '1.0' }, device: { type: mobile, subtype: smart } } + readable: 'Samsung Browser 1.0 on Tizen 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Tizen 2.0; xx) AppleWebKit/537.1 (KHTML, like Gecko) Mobile TizenBrowser/2.0' + result: { browser: { name: 'Samsung Browser', version: '2.0' }, engine: { name: Webkit, version: '537.1' }, os: { name: Tizen, version: '2.0' }, device: { type: mobile, subtype: smart } } + readable: 'Samsung Browser 2.0 on Tizen 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Tizen 2.0; xx) AppleWebKit/537.1 (KHTML, like Gecko) Version/2.0 Mobile' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.1' }, os: { name: Tizen, version: '2.0' }, device: { type: mobile, subtype: smart } } + readable: 'Samsung Browser on Tizen 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Tizen 2.0; xx; GT-I8800) AppleWebKit/537.1 (KHTML, like Gecko) Mobile TizenBrowser/2.0' + result: { browser: { name: 'Samsung Browser', version: '2.0' }, engine: { name: Webkit, version: '537.1' }, os: { name: Tizen, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Melius"' } } + readable: 'Samsung Browser 2.0 on a Samsung "Melius" running Tizen 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Tizen 2.1; xx; SAMSUNG GT-I8805) AppleWebKit/537.1 (KHTML, like Gecko) Version/2.1.0 Mobile' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.1' }, os: { name: Tizen, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: '"Redwood"' } } + readable: 'Samsung Browser on a Samsung "Redwood" running Tizen 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Tizen 2.1; xx; SEC_SC-001) AppleWebKit/537.1 (KHTML, like Gecko) Version/2.1.0 Mobile' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.1' }, os: { name: Tizen, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'SC-001 prototype' } } + readable: 'Samsung Browser on a Samsung SC-001 prototype running Tizen 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-I9500/1.0; U; Tizen/1.0 like Android; xx) AppleWebKit/535.7 (KHTML, like Gecko) SLP Browser/1.0 Mobile' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '535.7' }, os: { name: Tizen, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GT-I9500 prototype' } } + readable: 'Samsung Browser on a Samsung GT-I9500 prototype running Tizen 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-i9500/2.0; U; Tizen/2.0 like Android; xx) AppleWebKit/534.46 (KHTML, like Gecko) SLP Browser/2.0 Mobile' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '534.46' }, os: { name: Tizen, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GT-I9500 prototype' } } + readable: 'Samsung Browser on a Samsung GT-I9500 prototype running Tizen 2.0' +- + headers: 'User-Agent: Mozilla/5.0(Linux; Tizen2.2;sdk) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3' + result: { browser: { name: 'Samsung Browser' }, engine: { name: Webkit, version: '537.3' }, os: { name: Tizen, version: '2.2' }, device: { type: mobile, subtype: smart } } + readable: 'Samsung Browser on Tizen 2.2' +- + headers: 'User-Agent: Opera/9.80 (Tizen; Opera Mini/7.5.35847/35.5691; U; xx) Presto/2.8.119 Version/11.10' + result: { browser: { name: 'Opera Mini', version: '7.5', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Tizen }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mini 7.5 on Tizen' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Tizen/1.0 like Android; xx; AppleWebKit/534.46 (KHTML, like Gecko) Tizen Browser/1.0 Mobile' + result: { browser: { name: 'Samsung Browser', version: '1.0' }, engine: { name: Webkit, version: '534.46' }, os: { name: Tizen, version: '1.0' }, device: { type: mobile, subtype: smart } } + readable: 'Samsung Browser 1.0 on Tizen 1.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ubuntu.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ubuntu.yaml new file mode 100644 index 0000000..697dec7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-ubuntu.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Ubuntu 14.04 like Android 4.4) AppleWebKit/537.36 Chromium/35.0.1870.2 Mobile Safari/537.36' + result: { browser: { family: { name: Chrome, version: 35 } }, engine: { name: Blink }, os: { name: 'Ubuntu Touch', version: '14.04' }, device: { type: mobile, subtype: smart } } + readable: 'Ubuntu Touch 14.04' +- + headers: 'User-Agent: Mozilla/5.0 (Ubuntu; Mobile) WebKit/537.36' + result: { engine: { name: Webkit, version: '537.36' }, os: { name: 'Ubuntu Touch' }, device: { type: mobile, subtype: smart } } + readable: 'Ubuntu Touch' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-vre.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-vre.yaml new file mode 100644 index 0000000..d9d36f9 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-vre.yaml @@ -0,0 +1,4 @@ +- + headers: { User-Agent: 'Opera/9.80 (VRE; Opera Mini/4.2/32.1312; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone-UA: ReksioVRE(196683), X-OperaMini-Phone: '? # ?', X-OperaMini-Features: 'httpping, advanced, folding, file_system, download', Device-Stock-UA: ReksioVRE(196683) } + result: { browser: { name: 'Opera Mini', version: '4.2', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: VRE }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini 4.2 on VRE' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-webos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-webos.yaml new file mode 100644 index 0000000..441298a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-webos.yaml @@ -0,0 +1,140 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.0 ; xx) AppleWebKit/533.1 Spark/fzz Safari/533.1 Version/4.0 Pre/1.0' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.0 ; xx) AppleWebKit/533.1 Spark/fzz Safari/533.1 Version/4.0 Pre/1.1; Mobile; AppleWebKit/533.1; Android2.3.7; Android; Version/4.0; Safari/533.1' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } + readable: 'a Palm Pre Plus running webOS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.0 ; xx) AppleWebKit/533.1 Spark/fzz Safari/533.1 Version/4.0 Pre/1.2' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.0 ; xx) AppleWebKit/533.1 elite/fzz Safari/533.1 Version/4.0 Pre/1.0' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.0 ; xx) AppleWebKit/533.1 elite/fzz Safari/533.1 Version/4.0 Pre/1.1' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } + readable: 'a Palm Pre Plus running webOS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.0 ; xx) AppleWebKit/533.1 elite/fzz Safari/533.1 Version/4.0 Pre/1.2' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.0 ; xx) AppleWebKit/533.1 elite/fzz Safari/533.1 Version/4.0 Pre/1.2' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.2 ; xx) AppleWebKit/533.1 elite/fzz Safari/533.1 Version/4.0 P160U/1.0' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.2 }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.2 ; xx) AppleWebKit/533.1 elite/fzz Safari/533.1 Version/4.0 P160UNA/1.0' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.2 }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android/2.1.2 ; xx) AppleWebKit/533.1 elite/fzz Safari/533.1 Version/4.0 Pre/1.2' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: webOS, version: 2.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U;Android/2.2.4 ; xx) AppleWebKit/534.6 xsdmz webOSBrowser/221.56 Safari/534.6 Version/4.0 Pre/1.2' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: 2.2.4 }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.2.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; webOS/2.2.0; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.54 Safari/534.6 Pre/3.0' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 3' } } + readable: 'a Palm Pre 3 running webOS 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; webOS/2.2.4; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.56 Safari/534.6 P160UNA/1.0' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; webOS/2.2.4; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.56 Safari/534.6 Pre/1.2' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; webOS/2.2.4; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.56 Safari/534.6 Pre/3.0' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 3' } } + readable: 'a Palm Pre 3 running webOS 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (hp-desktop; Linux; hpwOS/2.0; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 Desktop/1.0' + result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.0' }, device: { type: emulator } } + readable: 'webOS Browser on an emulator running webOS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; xx)(webOS/2.1.0; U; xx) AppleWebKit/532.2 Version/1.0 Safari/532.2 Pre/1.0 -CET' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/1.0; U; xx) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0' + result: { engine: { name: Webkit, version: 525.27.1 }, os: { name: webOS, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 1.4' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5.1; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + readable: 'a Palm Pixi Plus running webOS 1.4' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5.1; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } + readable: 'a Palm Pre Plus running webOS 1.4' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.0' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pixi } } + readable: 'a Palm Pixi running webOS 1.4' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + readable: 'a Palm Pixi Plus running webOS 1.4' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 1.4' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } + readable: 'a Palm Pre Plus running webOS 1.4' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/2.0.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.2' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } + readable: 'a Palm Pre Plus running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.2' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.1; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160U/1.0' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.2; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160U/1.0' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.2; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160UNA/1.0' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/HP webOS 2.1.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + readable: 'a Palm Pixi Plus running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (webOS/HP webOS 2.1.2; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + readable: 'a Palm Pixi Plus running webOS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; en-US) AppleWebKit/532.2 Version/1.0 Safari/532.2 Pixi/1.1' + readable: 'a Palm Pixi Plus running webOS' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsce.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsce.yaml new file mode 100644 index 0000000..4fee80e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsce.yaml @@ -0,0 +1,60 @@ +- + headers: 'User-Agent: Mozilla/5.0 (MotorolaWebKit; U; /Windows CE 5.0) AppleWebKit/534.51 (KHTML, like Gecko) Version/2.2.8.8 Mobile Safari/534.51' + result: { browser: { name: 'Motorola WebKit', type: browser }, engine: { name: Webkit, version: '534.51' }, os: { name: 'Windows CE', version: '5.0' }, device: { type: mobile, subtype: feature } } + readable: 'Motorola WebKit on Windows CE 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (MotorolaWebKit; U; /Windows CE 5.2) AppleWebKit/534.51 (KHTML, like Gecko) Version/2.2.8.8 Mobile Safari/534.51' + result: { browser: { name: 'Motorola WebKit', type: browser }, engine: { name: Webkit, version: '534.51' }, os: { name: 'Windows CE', version: '5.2' }, device: { type: mobile, subtype: feature } } + readable: 'Motorola WebKit on Windows CE 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (MotorolaWebKit; U; /Windows CE 6.0) AppleWebKit/534.51 (KHTML, like Gecko) Version/2.2.8.8 Mobile Safari/534.51' + result: { browser: { name: 'Motorola WebKit', type: browser }, engine: { name: Webkit, version: '534.51' }, os: { name: 'Windows CE', version: '6.0' }, device: { type: mobile, subtype: feature } } + readable: 'Motorola WebKit on Windows CE 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (MotorolaWebKit; U; /Windows CE 7.0) AppleWebKit/534.51 (KHTML, like Gecko) Version/2.3.0 Mobile Safari/534.51' + result: { browser: { name: 'Motorola WebKit', type: browser }, engine: { name: Webkit, version: '534.51' }, os: { name: 'Windows CE', version: '7.0' }, device: { type: mobile, subtype: feature } } + readable: 'Motorola WebKit on Windows CE 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows CE 5.2) AppleWebKit/534.51 (KHTML, like Gecko) Ekioh/2.2.1.3 Mobile Safari/534.51' + result: { browser: { using: { name: Ekioh, version: 2.2.1.3 } }, engine: { name: Webkit, version: '534.51' }, os: { name: 'Windows CE', version: '5.2' }, device: { type: mobile, subtype: feature } } + readable: 'Ekioh 2.2.1.3 on Windows CE 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Windows CE 5.2) AppleWebKit/534.51 (KHTML, like Gecko) MotorolaWebKit/2.1.8.7 Safari/534.51' + result: { browser: { name: 'Motorola WebKit', version: 2.1.8, type: browser }, engine: { name: Webkit, version: '534.51' }, os: { name: 'Windows CE', version: '5.2' }, device: { type: mobile, subtype: feature } } + readable: 'Motorola WebKit 2.1.8 on Windows CE 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Windows CE 5.2) AppleWebKit/534.51 (KHTML, like Gecko) MotorolaWebKit/2.2.2.13 Safari/534.51' + result: { browser: { name: 'Motorola WebKit', version: 2.2.2, type: browser }, engine: { name: Webkit, version: '534.51' }, os: { name: 'Windows CE', version: '5.2' }, device: { type: mobile, subtype: feature } } + readable: 'Motorola WebKit 2.2.2 on Windows CE 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Windows CE 6.0) AppleWebKit/534.51 (KHTML, like Gecko) MotorolaWebKit/2.2.3.10 Safari/534.51' + result: { browser: { name: 'Motorola WebKit', version: 2.2.3, type: browser }, engine: { name: Webkit, version: '534.51' }, os: { name: 'Windows CE', version: '6.0' }, device: { type: mobile, subtype: feature } } + readable: 'Motorola WebKit 2.2.3 on Windows CE 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows CE 7.0) AppleWebKit/537.13.0.1379224625+ (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: 537.13.0.1379224625 }, os: { name: 'Windows CE', version: '7.0' }, device: { type: mobile, subtype: feature } } + readable: 'Windows CE 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Windows CE 6.0; WOW64; Trident/7.0; rv:11.0) like Gecko' + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows CE', version: '6.0' }, device: { type: mobile, subtype: feature } } + readable: 'Internet Explorer 11.0 on Windows CE 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows CE 4.21; rv:1.8.1a3) Gecko/20060610 Minimo/0.016' + result: { browser: { name: Minimo, family: Firefox, version: '0.016', type: browser }, engine: { name: Gecko, version: 1.8.1a3 }, os: { name: 'Windows CE', version: '4.21' }, device: { type: mobile, subtype: feature } } + readable: 'Minimo 0.016 on Windows CE 4.21' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows CE 5.2; rv:1.8.1.4pre) Gecko/20070327 Minimo/0.020' + result: { browser: { name: Minimo, family: Firefox, version: '0.020', type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'Windows CE', version: '5.2' }, device: { type: mobile, subtype: feature } } + readable: 'Minimo 0.020 on Windows CE 5.2' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows CE 5.2; xx; rv:1.9.2a1pre) Gecko/20090513 Fennec/1.0a1' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: 1.0a1 }, version: 1.0a1, type: browser }, engine: { name: Gecko, version: 1.9.2a1pre }, os: { name: 'Windows CE', version: '5.2' }, device: { type: mobile, subtype: feature } } + readable: 'Firefox Mobile Fennec 1.0a1 on Windows CE 5.2' +- + headers: 'User-Agent: Mozilla/1.1 (compatible; MSPIE 2.0; Windows CE)' + result: { browser: { name: 'Pocket Internet Explorer2', version: '2.0', type: browser }, os: { name: 'Windows CE' }, device: { type: mobile, subtype: feature } } + readable: 'Pocket Internet Explorer2 2.0 on Windows CE' +- + headers: 'User-Agent: Microsoft Pocket Internet Explorer/0.6' + result: { browser: { name: 'Pocket Internet Explorer', version: '1.0', type: browser }, device: { type: mobile, subtype: feature } } + readable: 'Pocket Internet Explorer 1.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsmobile.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsmobile.yaml new file mode 100644 index 0000000..0e2785b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsmobile.yaml @@ -0,0 +1,732 @@ +- + headers: 'User-Agent: Bird_T900/1.0 WindowsMobile/6.5 Release/12.1.2010 Browser/IE6 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Mobile Internet Explorer', version: '6', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Bird, model: T900 } } + readable: 'Mobile Internet Explorer 6 on a Bird T900 running Windows Mobile 6.5' +- + headers: 'User-Agent: CoolPadF800/CMCC WindowsCEOS/6.0/(2009.10.30)10.01.F800/WAP2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Coolpad, model: F800 } } + readable: 'a Coolpad F800 running Windows Mobile' +- + headers: 'User-Agent: HD2_T8585 Opera/9.7 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Opera Mobile 9.7 on a HTC HD2 running Windows Mobile' +- + headers: 'User-Agent: HD_mini_T5555 Opera/9.7 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'HD mini' } } + readable: 'Opera Mobile 9.7 on a HTC HD mini running Windows Mobile' +- + headers: 'User-Agent: HTC_HD2_T8585 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'UC Browser 7.8 on a HTC HD2 running Windows Mobile' +- + headers: 'User-Agent: HTC_HD2_T8585 Opera/9.7 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Opera Mobile 9.7 on a HTC HD2 running Windows Mobile' +- + headers: 'User-Agent: HTC_HD2_T9193 Opera/9.7 (Windows NT 5.1; U; xx) V1.49.841.1 (71528)' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Opera Mobile 9.7 on a HTC HD2 running Windows Mobile' +- + headers: 'User-Agent: HTC_P3700 Opera/9.50 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.50', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond' } } + readable: 'Opera Mobile 9.50 on a HTC Touch Diamond running Windows Mobile' +- + headers: 'User-Agent: HTC_Touch2_T3333 Opera/9.50 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.50', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch 2' } } + readable: 'Opera Mobile 9.50 on a HTC Touch 2 running Windows Mobile' +- + headers: 'User-Agent: HTC_Touch_3G Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch 3G' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch 3G running Windows Mobile 6.1' +- + headers: 'User-Agent: HTC_Touch_Diamond2_T5353 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond 2' } } + readable: 'Pocket Internet Explorer 4.0.1 on a HTC Touch Diamond 2 running Windows Mobile' +- + headers: 'User-Agent: HTC_Touch_Diamond2_T5353 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.7.1.88' + result: { browser: { name: 'UC Browser', version: '7.7', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond 2' } } + readable: 'UC Browser 7.7 on a HTC Touch Diamond 2 running Windows Mobile' +- + headers: 'User-Agent: HTC_Touch_Diamond2_T5353 Opera/9.50 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.50', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond 2' } } + readable: 'Opera Mobile 9.50 on a HTC Touch Diamond 2 running Windows Mobile' +- + headers: 'User-Agent: HTC_Touch_Diamond2_T5353 Opera/9.7 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond 2' } } + readable: 'Opera Mobile 9.7 on a HTC Touch Diamond 2 running Windows Mobile' +- + headers: 'User-Agent: HTC_Touch_HD_T8282' + result: { os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch HD' } } + readable: 'a HTC Touch HD running Windows Mobile' +- + headers: 'User-Agent: HTC_Touch_HD_T8282 Opera/9.50 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.50', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch HD' } } + readable: 'Opera Mobile 9.50 on a HTC Touch HD running Windows Mobile' +- + headers: 'User-Agent: HTC_Touch_Pro2_T7373 Opera/9.7 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Pro 2' } } + readable: 'Opera Mobile 9.7 on a HTC Touch Pro 2 running Windows Mobile' +- + headers: 'User-Agent: HTC_TyTN_II Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/8.2.0.116/31/351' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'TyTN II' } } + readable: 'Pocket Internet Explorer 4.0.1 on a HTC TyTN II running Windows Mobile' +- + headers: 'User-Agent: HTC_TyTN_II Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'TyTN II' } } + readable: 'UC Browser 7.8 on a HTC TyTN II running Windows Mobile' +- + headers: 'User-Agent: LG-GW825/V10c IEMobile/8.12 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'IQ GW825' } } + readable: 'UC Browser 7.8 on a LG IQ GW825 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.0)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.0' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 6.0 on Windows Mobile 6.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.8) DopodD810' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Dopod, model: D810 } } + readable: 'Mobile Internet Explorer 6.0 on a Dopod D810 running Windows Mobile 6.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 6.0 on Windows Mobile 6.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) acer_E100' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Acer, model: 'beTouch E100' } } + readable: 'Mobile Internet Explorer 6.0 on an Acer beTouch E100 running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) acer_F900' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Acer, model: 'Tempo F900' } } + readable: 'Mobile Internet Explorer 6.0 on an Acer Tempo F900 running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; SHARP/WS020SH; PPC; 480x800) Opera Mobi; Opera 9.5 [ja]' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Sharp, model: 'WILLCOM 03 WS020SH', carrier: Willcom } } + readable: 'Opera Mobile 9.5 on a Sharp WILLCOM 03 WS020SH running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows Mobile; xx) Opera 10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 10.00 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; KDDI-TS01; Windows Phone 6.5.3.5)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Toshiba, model: IS02, carrier: au } } + readable: 'Mobile Internet Explorer 6.0 on a Toshiba IS02 running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Windows Mobile; WCE; Opera Mobi/WMD-50433; U; xx) Presto/2.4.13 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.13 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 10.00 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (MOT-A3300c/A3300c_03.08; U; Windows Mobile/6.1; Profile/MIDP-2.0 Configuration/CLDC-1.1; 240*400; CTC/2.0) IE/MSIE 6.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: A3300c } } + readable: 'Mobile Internet Explorer 6.0 on a Motorola A3300c running Windows Mobile 6.1' +- + headers: 'User-Agent: Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/1938; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 9.5 on Windows Mobile' +- + headers: 'User-Agent: Opera/9.5 (Windows NT 5.1; U; xx) SAMSUNG-GT-i8000' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Opera Mobile 9.5 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: 'User-Agent: Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; xx) Presto/2.2.1' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 9.7 on Windows Mobile' +- + headers: 'User-Agent: Opera/9.7 (Windows Mobile; SHARP/WS007SH; PPC; 480x640; Opera Mobi/35166; U; xx) Presto/2.2.1' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Sharp, model: 'W-ZERO3 [es] WS007SH', carrier: Willcom } } + readable: 'Opera Mobile 9.7 on a Sharp W-ZERO3 [es] WS007SH running Windows Mobile' +- + headers: 'User-Agent: Opera/9.7 (Windows Mobile; SHARP/WS007SH; PPC; 480x640; Opera Mobi/35166; U; xx) Presto/2.2.1' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Sharp, model: 'W-ZERO3 [es] WS007SH', carrier: Willcom } } + readable: 'Opera Mobile 9.7 on a Sharp W-ZERO3 [es] WS007SH running Windows Mobile' +- + headers: 'User-Agent: Opera/9.70 (Windows NT 5.1; U; xx) TMO-US_LEO' + result: { browser: { name: Opera, version: '9.70', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Opera 9.70 on Windows XP' +- + headers: 'User-Agent: Opera/9.80 (Windows Mobile; Opera Mini/5.1.21561/31.1386; U; xx) Presto/2.8.119 Version/11.10' + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mini 5.1 on Windows Mobile' +- + headers: 'User-Agent: Opera/9.80 (Windows Mobile; WCE; Opera Mobi/WMD-50255; U; xx) Presto/2.4.13 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.13 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 10.00 on Windows Mobile' +- + headers: 'User-Agent: Opera/9.80 (Windows Mobile; Windows CE; Opera Mobi/KEN-85228; U; xx) Presto/2.4.13 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.13 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 10.00 on Windows Mobile' +- + headers: 'User-Agent: PPC; 240x320; HTC_Mega-T3333-Orange; OpVer 113.128.2.733 Opera/9.50 (Microsoft Windows 6.5; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.50', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch 2' } } + readable: 'Opera Mobile 9.50 on a HTC Touch 2 running Windows Mobile' +- + headers: 'User-Agent: SAMSUNG-GT-B7350/1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB8.2.0.116/31/999' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'B7350 OmniaPRO 4' } } + readable: 'UC Browser 8.2 on a Samsung B7350 OmniaPRO 4 running Windows Mobile' +- + headers: 'User-Agent: SAMSUNG-GT-i8000/1.0 (Windows CE; Opera Mobi; U; xx) Opera 9.5' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Opera Mobile 9.5 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: 'User-Agent: SAMSUNG-GT-i8000/1.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'UC Browser 7.8 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: 'User-Agent: SAMSUNG-GT-i8000/1.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB8.2.0.116/31/999' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'UC Browser 8.2 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: 'User-Agent: SAMSUNG-SGH-i900/1.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i900 Omnia' } } + readable: 'UC Browser 7.8 on a Samsung i900 Omnia running Windows Mobile' +- + headers: 'User-Agent: SAMSUNG-SGH-i900/1.0 Opera 9.5' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i900 Omnia' } } + readable: 'Opera Mobile 9.5 on a Samsung i900 Omnia running Windows Mobile' +- + headers: 'User-Agent: SonyEricssonM1i/R1BA Browser/Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB8.2.0.116/31/999' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Aspen } } + readable: 'UC Browser 8.2 on a Sony Ericsson Aspen running Windows Mobile' +- + headers: 'User-Agent: Vodafone/1.0/HTC_HD2/3.14.162.5 (04666) Opera/9.7 (Windows NT 5.1; U; xx)' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Opera Mobile 9.7 on a HTC HD2 running Windows Mobile' +- + headers: 'User-Agent: Windows CE; CE; IEMobile 8.12' + result: { os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart } } + readable: 'Windows Mobile 6.5' +- + headers: 'User-Agent: dopodT5388/1.0 WindowsMobile/6.1 CEOS/5.2 release/1.6 Opera/9.5 WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB8.2.0.116/31/999' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Dopod, model: T5388 } } + readable: 'UC Browser 8.2 on a Dopod T5388 running Windows Mobile 6.1' +- + headers: 'User-Agent: dopodT8588/1.0 WindowsMobile/6.5 CEOS/5.2 release/5.0 Opera/9.7 WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UCWEB8.2.0.116/31/800' + result: { browser: { name: 'UC Browser', version: '8.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Dopod, model: T8588 } } + readable: 'UC Browser 8.2 on a Dopod T8588 running Windows Mobile 6.5' +- + headers: { User-Agent: 'HD_mini_T5555 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'HD mini' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC HD mini running Windows Mobile 6.5' +- + headers: { User-Agent: 'HTC_HD2_T8585 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Mobile Internet Explorer 6.0 on a HTC HD2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'HTC_HD2_T8585 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Mobile Internet Explorer 6.0 on a HTC HD2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'HTC_P3650 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.6)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Cruise' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Cruise running Windows Mobile 6.1' +- + headers: { User-Agent: 'HTC_P3700 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Diamond running Windows Mobile 6.1' +- + headers: { User-Agent: 'HTC_P4550/TYTN_II Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'TyTN II' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC TyTN II running Windows Mobile 6.1' +- + headers: { User-Agent: 'HTC_Touch_Diamond2_T5360 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Diamond 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'HTC_Touch_Pro2_T7373 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Pro 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Pro 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'K-Touch_W366_CUCC/1.0 WindowsMobileOS/6.5 Release/30.10.2009 Browser/MSIE-6.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: K-Touch, model: W366 } } + readable: 'Mobile Internet Explorer 6.0 on a K-Touch W366 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) PPC; 240x320; HTC_Touch_Viva_T2223; OpVer 86.157.15.753', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Viva' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Viva running Windows Mobile 6.1' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) Sprint:PPC6800', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Sprint, model: PPC6800 } } + readable: 'Mobile Internet Explorer 6.0 on a Sprint PPC6800 running Windows Mobile 6.1' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.6) HPiPAQ610/1.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: 'iPAQ 610' } } + readable: 'Mobile Internet Explorer 6.0 on a HP iPAQ 610 running Windows Mobile 6.1' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 6.0 on Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) 320x240; VZW; UTStar-XV6175.1; Windows Mobile 6.5 Standard;', UA-OS: 'Windows CE (Smartphone) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Verizon, model: 'Ozone XV6175' } } + readable: 'Mobile Internet Explorer 6.0 on a Verizon Ozone XV6175 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) 480x800 SAMSUNG SCH-i920 PPC', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i920 Omnia II' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung i920 Omnia II running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) H-21', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Opticom, model: H-21 } } + readable: 'Mobile Internet Explorer 6.0 on an Opticom H-21 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) HTC_Touch_Pro2_T7379', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Pro 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Pro 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) LG-GW550 Obigo/WAP2.0 MIDP-2.0/CLDC-1.1', UA-OS: 'Windows CE (Smartphone) - Version 5.2' } + result: { browser: { name: 'Obigo WAP', version: '2.0', type: browser }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: GW550 } } + readable: 'Obigo WAP 2.0 on a LG GW550 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) PPC; 240x320; HTC_Mega-T3333-Orange; OpVer 113.128.10.702', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) SAMSUNG-GT-i8000V/BUII1', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung I8000 Omnia II running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) T-Mobile_LEO', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: Leo } } + readable: 'Mobile Internet Explorer 6.0 on a T-Mobile Leo running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) acer_S200', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Acer, model: 'neoTouch S200' } } + readable: 'Mobile Internet Explorer 6.0 on an Acer neoTouch S200 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 6.0 on Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5) 480x800 LGE VS750', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Fathom VS750' } } + readable: 'Mobile Internet Explorer 6.0 on a LG Fathom VS750 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5) Motorola_ES405B_312', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'ES405 Enterprise Smartphone' } } + readable: 'Mobile Internet Explorer 6.0 on a Motorola ES405 Enterprise Smartphone running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5) Motorola_MC659B_44000', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MC65 Wireless Rugged Mobile Computer' } } + readable: 'Mobile Internet Explorer 6.0 on a Motorola MC65 Wireless Rugged Mobile Computer running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HD2_T8585; Windows Phone 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Mobile Internet Explorer 6.0 on a HTC HD2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_HD2_T8585; Windows Phone 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Mobile Internet Explorer 6.0 on a HTC HD2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_Touch2_T3333; Windows Phone 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_Touch_Diamond2_T5353; Windows Phone 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Diamond 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_Touch_Diamond2_T5353; Windows Phone 6.5.3.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Diamond 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_Touch_Pro2_T7373; Windows Phone 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Pro 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Pro 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Motorola_ES405B_312; Windows Phone 6.5.3.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'ES405 Enterprise Smartphone' } } + readable: 'Mobile Internet Explorer 6.0 on a Motorola ES405 Enterprise Smartphone running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Motorola_ES405B_44.000; Windows Phone 6.5.3.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'ES405 Enterprise Smartphone' } } + readable: 'Mobile Internet Explorer 6.0 on a Motorola ES405 Enterprise Smartphone running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Motorola_MC659B_21103; Windows Phone 6.5.3.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MC65 Wireless Rugged Mobile Computer' } } + readable: 'Mobile Internet Explorer 6.0 on a Motorola MC65 Wireless Rugged Mobile Computer running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Motorola_MC659B_40211; Windows Phone 6.5.3.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MC65 Wireless Rugged Mobile Computer' } } + readable: 'Mobile Internet Explorer 6.0 on a Motorola MC65 Wireless Rugged Mobile Computer running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SonyEricssonX2/R3AA; Profile/MIDP-2.1; Configuration/CLDC-1.1; Windows Phone 6.5.3.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X2' } } + readable: 'Mobile Internet Explorer 6.0 on a Sony Ericsson Xperia X2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; T-Mobile_LEO; Windows Phone 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: Leo } } + readable: 'Mobile Internet Explorer 6.0 on a T-Mobile Leo running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Toshiba/TG01/02; Windows Phone 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Toshiba, model: TG01 } } + readable: 'Mobile Internet Explorer 6.0 on a Toshiba TG01 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 6.0 on Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5.3.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 6.0 on Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; XV6975)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Verizon, model: 'Imagio XV6975' } } + readable: 'Mobile Internet Explorer 6.0 on a Verizon Imagio XV6975 running Windows Mobile' +- + headers: { User-Agent: 'Mozilla/4.0 LG-GM750Q Browser/IE8.12 MMS/LGMMSv1.0/1.2 Java/LGVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Layla GM750' } } + readable: 'Mobile Internet Explorer 6.0 on a LG Layla GM750 running Windows Mobile 6.5' +- + headers: { User-Agent: 'SAMSUNG-GT-i8000/1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung I8000 Omnia II running Windows Mobile 6.5' +- + headers: { User-Agent: 'SAMSUNG-GT-i8000/1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung I8000 Omnia II running Windows Mobile 6.5' +- + headers: { User-Agent: 'SAMSUNG-GT-i8000Orange/BVIJ1 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung I8000 Omnia II running Windows Mobile 6.5' +- + headers: { User-Agent: 'SAMSUNG-SCH-M715/1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'M715 T*OMNIA II' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung M715 T*OMNIA II running Windows Mobile 6.5' +- + headers: { User-Agent: 'SAMSUNG-SGH-I637/UCIG1 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5)', UA-OS: 'Windows CE (Smartphone) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i637 Jack' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung i637 Jack running Windows Mobile 6.5' +- + headers: { User-Agent: 'SAMSUNG-SGH-i780/1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i780 Mirage' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung i780 Mirage running Windows Mobile 6.1' +- + headers: { User-Agent: 'SAMSUNG-SGH-i780/1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i780 Mirage' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung i780 Mirage running Windows Mobile 6.1' +- + headers: { User-Agent: 'SAMSUNG-SGH-i900/1.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i900 Omnia' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung i900 Omnia running Windows Mobile 6.1' +- + headers: { User-Agent: 'SonyEricssonM1i/R1BA Browser/Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5) Profile/MIDP-2.1 Configuration/CLDC-1.1', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: Aspen } } + readable: 'Mobile Internet Explorer 6.0 on a Sony Ericsson Aspen running Windows Mobile 6.5' +- + headers: { User-Agent: 'SonyEricssonX2/R3AA Browser/Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5) Profile/MIDP-2.1 Configuration/CLDC-1.1', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X2' } } + readable: 'Mobile Internet Explorer 6.0 on a Sony Ericsson Xperia X2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Vodafone/1.0/SAMSUNG-GT-B7610/NBUIK3 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'B7610 OmniaPRO' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung B7610 OmniaPRO running Windows Mobile 6.5' +- + headers: { User-Agent: 'Vodafone/1.0/SEX1i/R2AA Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) UP.Link/6.3.1.20.0 Profile/MIDP-2.0 Configuration/CLDC-1.1', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia X1' } } + readable: 'Mobile Internet Explorer 6.0 on a Sony Ericsson Xperia X1 running Windows Mobile 6.1' +- + headers: { User-Agent: 'dopodT8388/1.0 WindowsMobile/6.5 CEOS/5.2 release/5.0 IE/6.0 WAP2.0 Profile/MIDP2.0 Configuration/CLDC1.1 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)', UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Dopod, model: T8388 } } + readable: 'Mobile Internet Explorer 6.0 on a Dopod T8388 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) Sprint T7380', UA-color: color16, UA-OS: 'Windows CE (Pocket PC) - Version 5.2' } + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Pro 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch Pro 2 running Windows Mobile 6.5' +- + headers: { User-Agent: 'Opera/9.80 (Windows Mobile; Opera Mini/5.1.21595/32.1214; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: Motorola, X-OperaMini-Phone: 'Motorola # A1000', X-OperaMini-Phone-UA: Motorola, X-OperaMini-Features: 'httpping, advanced, download, file_system' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: A1000 } } + readable: 'Opera Mini 5.1 on a Motorola A1000 running Windows Mobile' +- + headers: { User-Agent: 'Opera/9.80 (Windows Mobile; Opera Mini/5.1.21595/34.1606; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_HD2_T8585; Windows Phone 6.5)', X-OperaMini-Phone: 'HTC # HD2', X-OperaMini-Phone-UA: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_HD2_T8585; Windows Phone 6.5)', X-OperaMini-Features: 'httpping, advanced, routing, file_system, download' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Opera Mini 5.1 on a HTC HD2 running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Motorola_MC659B_41400; Windows Phone 6.5.3.5)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MC65 Wireless Rugged Mobile Computer' } } + readable: 'Mobile Internet Explorer 6.0 on a Motorola MC65 Wireless Rugged Mobile Computer running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_Touch2_T3333; Windows Phone 6.5)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch 2' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Touch 2 running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; KDDI-TS01; Windows Phone 6.5.3.5)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Toshiba, model: IS02, carrier: au } } + readable: 'Mobile Internet Explorer 6.0 on a Toshiba IS02 running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Toshiba-TG01-orange/ 02; Windows Phone 6.5)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Toshiba, model: TG01 } } + readable: 'Mobile Internet Explorer 6.0 on a Toshiba TG01 running Windows Mobile 6.5' +- + headers: 'User-Agent: Opera/9.7 (Windows Mobile; SHARP/WS007SH; PPC; 480x640; Opera Mobi/35166; U; xx) Presto/2.2.1' + result: { browser: { name: 'Opera Mobile', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Sharp, model: 'W-ZERO3 [es] WS007SH', carrier: Willcom } } + readable: 'Opera Mobile 9.7 on a Sharp W-ZERO3 [es] WS007SH running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7) S12HT' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EMONSTER lite S12HT', carrier: EMOBILE } } + readable: 'Mobile Internet Explorer 6.0 on a HTC EMONSTER lite S12HT running Windows Mobile 6.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12) Smartphone; 240x320; SPV E650; OpVer 22.114.2.733' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Orange, model: 'SPV E650' } } + readable: 'Mobile Internet Explorer 6.0 on an Orange SPV E650 running Windows Mobile 6.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.6) HTCS620;Smartphone;320x240' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'S620 Excalibur' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC S620 Excalibur running Windows Mobile 6.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) 320X320 Palm Treo850e' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Treo Pro' } } + readable: 'Mobile Internet Explorer 6.0 on a Palm Treo Pro running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) 320x240; VZW; UTStar-XV6175; Window Mobile 6.1 Standard;' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: Verizon, model: 'Ozone XV6175' } } + readable: 'Mobile Internet Explorer 6.0 on a Verizon Ozone XV6175 running Windows Mobile 6.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.5) 480x800 LGE VS750' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Fathom VS750' } } + readable: 'Mobile Internet Explorer 6.0 on a LG Fathom VS750 running Windows Mobile 6.5' +- + headers: 'User-Agent: Xda_diamond/480x640 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: O2, model: 'XDA Diamond' } } + readable: 'Mobile Internet Explorer 6.0 on an O2 XDA Diamond running Windows Mobile 6.1' +- + headers: 'User-Agent: Xda_diamond Opera/9.50 (Windows NT 5.1; U; de)' + result: { browser: { name: 'Opera Mobile', version: '9.50', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: O2, model: 'XDA Diamond' } } + readable: 'Opera Mobile 9.50 on an O2 XDA Diamond running Windows Mobile' +- + headers: 'User-Agent: Xda_nova; 240x320 (compatible; MSIE 6.0; Windows CE; IEMobile 7.6)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: O2, model: 'XDA Nova' } } + readable: 'Mobile Internet Explorer 6.0 on an O2 XDA Nova running Windows Mobile 6.1' +- + headers: 'User-Agent: Vodafone/1.0/v1640/1.13.180 GER/Mozilla/4.0 (compatible; MSIE 4.01; Windows CE)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Vodafone, model: 'VPA IV' } } + readable: 'Pocket Internet Explorer 4.0.1 on a Vodafone VPA IV running Windows Mobile' +- + headers: 'User-Agent: Vodafone/1.0/v1240/2.5.484.0/Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Vodafone, model: 'VDA II' } } + readable: 'Pocket Internet Explorer 4.0.1 on a Vodafone VDA II running Windows Mobile' +- + headers: 'User-Agent: Vodafone/1.0/HTC_wizard/2.21.3.102/Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Wizard } } + readable: 'Pocket Internet Explorer 4.0.1 on a HTC Wizard running Windows Mobile' +- + headers: 'User-Agent: Vodafone/1.0/HTC_VPACompactIV/1.9.162.1/Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; MIDP-2.0 Configuration/CLDC-1.1; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Vodafone, model: 'VPA Compact IV' } } + readable: 'Pocket Internet Explorer 4.0.1 on a Vodafone VPA Compact IV running Windows Mobile' +- + headers: 'User-Agent: Vodafone/1.0/HTC_Mercury/1.20.162.3/Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; MIDP-2.0 Configuration/CLDC-1.1; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: TyTN } } + readable: 'Pocket Internet Explorer 4.0.1 on a HTC TyTN running Windows Mobile' +- + headers: 'User-Agent: Vodafone/1.0/HTC_Diamond Opera/9.50 (Windows NT 5.1; U; de)' + result: { browser: { name: 'Opera Mobile', version: '9.50', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Diamond' } } + readable: 'Opera Mobile 9.50 on a HTC Touch Diamond running Windows Mobile' +- + headers: 'User-Agent: SAMSUNG-SGH-I617/1.0 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.6)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i617 BlackJack II' } } + readable: 'Mobile Internet Explorer 6.0 on a Samsung i617 BlackJack II running Windows Mobile 6.1' +- + headers: 'User-Agent: SAMSUNG-SGH-I607/I607FG1 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 320x240)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'i607 BlackJack' } } + readable: 'Pocket Internet Explorer 4.0.1 on a Samsung i607 BlackJack running Windows Mobile' +- + headers: 'User-Agent: Palm750/v0100 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Treo 750' } } + readable: 'Pocket Internet Explorer 4.0.1 on a Palm Treo 750 running Windows Mobile' +- + headers: 'User-Agent: Palm750/v0004 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Treo 750' } } + readable: 'Mobile Internet Explorer 6.0 on a Palm Treo 750 running Windows Mobile 6.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.7) HTC/X03HT' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: S730 X03HT, carrier: Softbank } } + readable: 'Mobile Internet Explorer 6.0 on a HTC S730 X03HT running Windows Mobile 6.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12) HTC/X02HT' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: S630 X02HT, carrier: Softbank } } + readable: 'Mobile Internet Explorer 6.0 on a HTC S630 X02HT running Windows Mobile 6.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; HTC/X01HT; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: TyTN X01HT, carrier: Softbank } } + readable: 'Pocket Internet Explorer 4.0.1 on a HTC TyTN X01HT running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; Toshiba/X01T)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Toshiba, model: G900 X01T, carrier: Softbank } } + readable: 'Mobile Internet Explorer 6.0 on a Toshiba G900 X01T running Windows Mobile' +- + headers: 'User-Agent: ASUS-GalaxyII/1.0 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; ASUS-GalaxyII)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Asus, model: 'Galaxy II' } } + readable: 'Pocket Internet Explorer 4.0.1 on an Asus Galaxy II running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; WMPRO1.0) NetFront/4.0' + result: { browser: { name: NetFront, version: '4.0', type: browser }, engine: { name: NetFront }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'NetFront 4.0 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; i-mate JAMin PPC; 240x320; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: JAMin } } + readable: 'Pocket Internet Explorer 4.0.1 on an i-mate JAMin running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; i-mate JASJAM PPC; 240x320)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: JASJAM } } + readable: 'UC Browser 7.8 on an i-mate JASJAM running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; i-mate K-JAM PPC; 240x320)/UC Browser7.2.2.51' + result: { browser: { name: 'UC Browser', version: '7.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: K-JAM } } + readable: 'UC Browser 7.2 on an i-mate K-JAM running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; O2 Xda 2s;PPC;240x320; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: O2, model: 'XDA IIs' } } + readable: 'Pocket Internet Explorer 4.0.1 on an O2 XDA IIs running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC i-mate 6150/ 480x640)/UCWEB7.0.0.41/31/352' + result: { browser: { name: 'UC Browser', version: '7.0', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: 'Ultimate 6150' } } + readable: 'UC Browser 7.0 on an i-mate Ultimate 6150 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC i-mate 8502; 240x320)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: 'Ultimate 8502' } } + readable: 'UC Browser 7.8 on an i-mate Ultimate 8502 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC i-mate JAMA; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: JAMA } } + readable: 'Pocket Internet Explorer 4.0.1 on an i-mate JAMA running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC i-mate JAMAQ; 240x320)/UC Browser7.8.0.95' + result: { browser: { name: 'UC Browser', version: '7.8', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: JAMAQ } } + readable: 'UC Browser 7.8 on an i-mate JAMAQ running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC i-mate JAQ3; 240x320; PPC)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: JAQ3 } } + readable: 'Pocket Internet Explorer 4.0.1 on an i-mate JAQ3 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC i-mate JAQ; 240x320)/UC Browser7.7.1.88' + result: { browser: { name: 'UC Browser', version: '7.7', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: JAQ } } + readable: 'UC Browser 7.7 on an i-mate JAQ running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC i-mate PDAL; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: i-mate, model: PDAL } } + readable: 'Pocket Internet Explorer 4.0.1 on an i-mate PDAL running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; HPiPAQrw6800/1.0; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: 'iPAQ rw6800' } } + readable: 'Pocket Internet Explorer 4.0.1 on a HP iPAQ rw6800 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; Sprint:PPC-6700; PPC; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Sprint, model: PPC6700 } } + readable: 'Pocket Internet Explorer 4.0.1 on a Sprint PPC6700 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M2000; OpVer 5.12.2.131)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Orange, model: 'SPV M2000' } } + readable: 'Pocket Internet Explorer 4.0.1 on an Orange SPV M2000 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M3100; OpVer 14.123.1.614)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Orange, model: 'SPV M3100' } } + readable: 'Pocket Internet Explorer 4.0.1 on an Orange SPV M3100 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M3100; OpVer 14.123.5.721)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Orange, model: 'SPV M3100' } } + readable: 'Pocket Internet Explorer 4.0.1 on an Orange SPV M3100 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M700; OpVer 19.123.2.733)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Orange, model: 'SPV M700' } } + readable: 'Pocket Internet Explorer 4.0.1 on an Orange SPV M700 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA compact II/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Compact II' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Compact II running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA Compact/1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Compact' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Compact running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA compact/2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Compact' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Compact running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA compact/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Compact' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Compact running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA III/1.1 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA III' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA III running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA Pro/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Pro' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Pro running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA Pro/1.2 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Pro' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Pro running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA Vario/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Vario' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Vario running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA Vario/1.2 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Vario' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Vario running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; MDA Vario/2.0 Profile/MIDP-2.0 Configuration/CLDC-1.1)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Vario' } } + readable: 'Pocket Internet Explorer 4.0.1 on a T-Mobile MDA Vario running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Xda neo; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: O2, model: 'XDA Neo' } } + readable: 'Pocket Internet Explorer 4.0.1 on an O2 XDA Neo running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Xda orbit; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: O2, model: 'XDA Orbit' } } + readable: 'Pocket Internet Explorer 4.0.1 on an O2 XDA Orbit running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Xda trion; 240x320)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: O2, model: 'XDA Trion' } } + readable: 'Pocket Internet Explorer 4.0.1 on an O2 XDA Trion running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; Datalogic Memor; 240x320)' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Datalogic, model: Memor } } + readable: 'Mobile Internet Explorer 6.0 on a Datalogic Memor running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; Sprint:PPC-6700) [en]' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Sprint, model: PPC6700 } } + readable: 'Mobile Internet Explorer 6.0 on a Sprint PPC6700 running Windows Mobile' +- + headers: 'User-Agent: HTCS621-Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 320x240)' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: S621 } } + readable: 'Pocket Internet Explorer 4.0.1 on a HTC S621 running Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.8) PPC; 240x320; HTC_P3600/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Trinity } } + readable: 'Mobile Internet Explorer 6.0 on a HTC Trinity running Windows Mobile 6.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.8) PPC; 240x320; MDA Vario/1.3 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: T-Mobile, model: 'MDA Vario' } } + readable: 'Mobile Internet Explorer 6.0 on a T-Mobile MDA Vario running Windows Mobile 6.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12) SP; 240x320; HTC_S710/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'S710 Vox' } } + readable: 'Mobile Internet Explorer 6.0 on a HTC S710 Vox running Windows Mobile 6.0' +- + headers: 'User-Agent: LG-GT500s_TD/1.0 WinMobile/6.5 Release/1.21.2010 Browser/Polaris6.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'GT500 Puccini' } } + readable: 'a LG GT500 Puccini running Windows Mobile 6.5' +- + headers: 'User-Agent: HTC (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0)' + readable: 'Mobile Internet Explorer 6.0 on Windows Mobile 6.5' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.5' }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: HPiPAQ910/1.0/Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) (PPC; 320x240)' + readable: 'Mobile Internet Explorer 6.0 on a HP iPAQ 910 running Windows Mobile 6.1' + result: { browser: { name: 'Mobile Internet Explorer', version: '6.0', type: browser }, engine: { name: Trident }, os: { name: 'Windows Mobile', version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: 'iPAQ 910' } } +- + headers: 'User-Agent: (Opera) Vodafone/1.0/HPiPAQDataMessenger/1.00.00 Browser/Opera/9.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 Opera/9.5 (Microsoft Windows; PPC; Opera Mobi/15142; U; en)' + readable: 'Opera Mobile 9.5 on a HP iPAQ Data Messenger running Windows Mobile' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: 'iPAQ Data Messenger' } } +- + headers: 'User-Agent: Palm850/V0100 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)/UC Browser7.7.1.88' + readable: 'UC Browser 7.7 on a Palm Treo Pro running Windows Mobile' + result: { browser: { name: 'UC Browser', version: '7.7', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Treo Pro' } } +- + headers: 'User-Agent: Mozilla/4.0 Sprint:MotoQ (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)' + readable: 'Pocket Internet Explorer 4.0.1 on a Motorola Q running Windows Mobile' + result: { browser: { name: 'Pocket Internet Explorer', version: 4.0.1, type: browser }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: Q } } +- + headers: 'User-Agent: XV6850 Opera/9.50 (Windows NT 5.1; U; en)' + readable: 'Opera Mobile 9.50 on a Verizon Touch Pro XV6850 running Windows Mobile' + result: { browser: { name: 'Opera Mobile', version: '9.50', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Verizon, model: 'Touch Pro XV6850' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsphone.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsphone.yaml new file mode 100644 index 0000000..6bd9744 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-windowsphone.yaml @@ -0,0 +1,1176 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; XBLWP7; ZuneWP7)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 7.0 on Windows Phone 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 7.0 on Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; 7 Mozart; Orange)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Mozart' } } + readable: 'Mobile Internet Explorer 7.0 on a HTC 7 Mozart running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; 7 Trophy)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 7.0 on a HTC 7 Trophy running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; HD7 T9292)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Mobile Internet Explorer 7.0 on a HTC HD7 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; HD7)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Mobile Internet Explorer 7.0 on a HTC HD7 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; T8788)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Surround' } } + readable: 'Mobile Internet Explorer 7.0 on a HTC 7 Surround running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; LG; GW910)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7' } } + readable: 'Mobile Internet Explorer 7.0 on a LG Optimus 7 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; LG; LG-C900)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7Q' } } + readable: 'Mobile Internet Explorer 7.0 on a LG Optimus 7Q running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; LG; LG-E900)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7' } } + readable: 'Mobile Internet Explorer 7.0 on a LG Optimus 7 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; Microsoft; XDeviceEmulator)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: emulator } } + readable: 'Mobile Internet Explorer 7.0 on an emulator running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 710)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 710' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 710 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; GT-I8350)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia W' } } + readable: 'Mobile Internet Explorer 7.0 on a Samsung Omnia W running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; OMNIA7)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia 7' } } + readable: 'Mobile Internet Explorer 7.0 on a Samsung Omnia 7 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i667)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Focus 2' } } + readable: 'Mobile Internet Explorer 7.0 on a Samsung Focus 2 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Focus } } + readable: 'Mobile Internet Explorer 7.0 on a Samsung Focus running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; SAMSUNG; SGH-i917R)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Focus } } + readable: 'Mobile Internet Explorer 7.0 on a Samsung Focus running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 720) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 720 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 920 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920; Vodafone) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 920 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; SAMSUNG; SPH-I800; Chameleon) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S Neo' } } + readable: 'Mobile Internet Explorer 11.0 on a Samsung Ativ S Neo running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; NOKIA; Lumia 928) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 928' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 928 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; NOKIA; Lumia 930) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 930' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 930 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; NOKIA; Nokia 1520) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1520' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 1520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; NOKIA; Nokia 520T; CMCC) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 630) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0' + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.0' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'Edge 12 on a Nokia Lumia 630 running Windows 10 Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; WebView/2.0; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like Gecko' + result: { engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'a Nokia Lumia 520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; WebView/2.0; rv:11.0; IEMobile/11.0; NOKIA; Lumia 630) like Gecko' + result: { engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'a Nokia Lumia 630 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; A620b) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8S running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; A620d; ChinaTelecom) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8S running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; A620e) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8S running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; A620m) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8S running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; C620d; ChinaTelecom) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; C620e) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; C620t; CMCC) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; C625a) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; C625b) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; HTC6990LVW) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; HTCPO881; SPRINT) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8XT } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8XT running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; PM23300) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; Windows Phone 8S by HTC) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8S running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; Windows Phone 8X by HTC) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HUAWEI; W1-C00) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W1' } } + readable: 'Mobile Internet Explorer 11.0 on a Huawei Ascend W1 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HUAWEI; W1-U00) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W1' } } + readable: 'Mobile Internet Explorer 11.0 on a Huawei Ascend W1 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HUAWEI; W2-U00) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W2' } } + readable: 'Mobile Internet Explorer 11.0 on a Huawei Ascend W2 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; Microsoft; Microsoft; XDeviceEmulator) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 11.0 on Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; Motorola Solutions; TC70) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: TC70 } } + readable: 'Mobile Internet Explorer 11.0 on a Motorola TC70 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NGM; Harley_Davidson) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: NGM, model: 'Harley Davidson' } } + readable: 'Mobile Internet Explorer 11.0 on a NGM Harley Davidson running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; 1520.1) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1520' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 1520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; 909) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1020' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 1020 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 1320) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1320' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 1320 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 1520) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1520' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 1520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 521) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 521' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 521 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 525) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 525' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 525 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 530 Dual SIM) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 530' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 530 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 530) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 530' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 530 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 620) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 620' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 620 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 625) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 625' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 625 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 625H) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 625' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 625 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 630; Vodafone) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 630 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 635) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 635' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 635 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 720) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 720 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 810) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 810' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 810 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 820) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 820' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 820 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 920) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 920 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 925) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 925 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 928) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 928' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 928 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 929) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 929 Icon' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 929 Icon running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 930) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 930' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 930 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 1320) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1320' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 1320 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 520) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 520T; CMCC) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 520 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 525) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 525' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 525 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 526; CMCC) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 526' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 526 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 620) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 620' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 620 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 625H) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 625' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 625 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 720) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 720 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 720T; CMCC) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 720 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 820) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 820' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 820 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 909) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1020' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 1020 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 920) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 920 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 920T) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 920 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 925) like 00977' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 925 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Nokia 925T) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 925 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; SAMSUNG; GT-I8750) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S' } } + readable: 'Mobile Internet Explorer 11.0 on a Samsung Ativ S running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; SAMSUNG; SCH-I930) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ Odyssey' } } + readable: 'Mobile Internet Explorer 11.0 on a Samsung Ativ Odyssey running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; SAMSUNG; SCH-R860U) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ Odyssey' } } + readable: 'Mobile Internet Explorer 11.0 on a Samsung Ativ Odyssey running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; SAMSUNG; SGH-T899M) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S' } } + readable: 'Mobile Internet Explorer 11.0 on a Samsung Ativ S running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; SAMSUNG; SM-W750V) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ SE' } } + readable: 'Mobile Internet Explorer 11.0 on a Samsung Ativ SE running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; SAMSUNG; SPH-I800; SPRINT) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S Neo' } } + readable: 'Mobile Internet Explorer 11.0 on a Samsung Ativ S Neo running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; WebBrowser/8.1; IEMobile/11.0; NOKIA; Lumia 630) like Gecko' + result: { engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'a Nokia Lumia 630 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; WebBrowser/8.1; IEMobile/11.0; NOKIA; Lumia 925) like Gecko' + result: { engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'a Nokia Lumia 925 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 10.0 on Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; A620d) UCBrowser/3.6.1.456 Mobile' + result: { browser: { name: 'UC Browser', version: '3.6', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'UC Browser 3.6 on a HTC 8S running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; A620d; ChinaTelecom)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8S running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; A620e)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8S running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; A620m)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8S running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; A620t)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8S running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; C620d)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; C620e)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; C620t)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; C625a)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; C625b)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; HTC6990LVW)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; HTCPO881; Chameleon)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8XT } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8XT running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; PM23300)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8S by HTC)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8S running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8X by HTC)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HUAWEI; W1-C00)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W1' } } + readable: 'Mobile Internet Explorer 10.0 on a Huawei Ascend W1 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HUAWEI; W1-U00)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W1' } } + readable: 'Mobile Internet Explorer 10.0 on a Huawei Ascend W1 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HUAWEI; W2-T01)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W2' } } + readable: 'Mobile Internet Explorer 10.0 on a Huawei Ascend W2 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HUAWEI; W2-U00)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W2' } } + readable: 'Mobile Internet Explorer 10.0 on a Huawei Ascend W2 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; Motorola Solutions; TC70)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: TC70 } } + readable: 'Mobile Internet Explorer 10.0 on a Motorola TC70 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; 1520.1)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1520' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 1520 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; 909)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1020' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 1020 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 1320)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1320' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 1320 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 1520)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1520' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 1520 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 520)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 520 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 521)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 521' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 521 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 525)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 525' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 525 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 620)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 620' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 620 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 625)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 625' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 625 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 625H)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 625' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 625 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 630)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 630' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 630 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 635)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 635' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 635 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 720)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 720 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 810)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 810' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 810 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 820)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 820' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 820 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 822)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 822' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 822 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 920 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 925)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 925 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 928)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 928' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 928 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 929)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 929 Icon' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 929 Icon running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 930)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 930' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 930 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 1320)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1320' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 1320 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 1520)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1520' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 1520 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 520)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 520 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 520T)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 520 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 525)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 525' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 525 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 526)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 526' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 526 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 620)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 620' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 620 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 625H)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 625' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 625 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 720)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 720 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 720T)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 720' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 720 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 820)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 820' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 820 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 909)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1020' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 1020 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 920)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 920 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 920T)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 920 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 925)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 925 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 925T)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 925 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; SAMSUNG; GT-I8750)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S' } } + readable: 'Mobile Internet Explorer 10.0 on a Samsung Ativ S running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; SAMSUNG; SCH-I930)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ Odyssey' } } + readable: 'Mobile Internet Explorer 10.0 on a Samsung Ativ Odyssey running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; SAMSUNG; SCH-R860U)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ Odyssey' } } + readable: 'Mobile Internet Explorer 10.0 on a Samsung Ativ Odyssey running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; SAMSUNG; SGH-T899M)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S' } } + readable: 'Mobile Internet Explorer 10.0 on a Samsung Ativ S running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; SAMSUNG; SM-W750V)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ SE' } } + readable: 'Mobile Internet Explorer 10.0 on a Samsung Ativ SE running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; SAMSUNG; SPH-I800)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S Neo' } } + readable: 'Mobile Internet Explorer 10.0 on a Samsung Ativ S Neo running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; Microsoft; XDeviceEmulator)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: emulator } } + readable: 'Mobile Internet Explorer 10.0 on an emulator running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 9.0 on Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart } } + readable: 'Mobile Internet Explorer 9.0 on Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ALCATEL; ONE TOUCH 5040X)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch View' } } + readable: 'Mobile Internet Explorer 9.0 on an Alcatel One Touch View running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Acer; Allegro)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Acer, model: Allegro } } + readable: 'Mobile Internet Explorer 9.0 on an Acer Allegro running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; DELL; Venue Pro)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Dell, model: 'Venue Pro' } } + readable: 'Mobile Internet Explorer 9.0 on a Dell Venue Pro running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; FujitsuToshibaMobileCommun; IS12T; KDDI)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: 'Fujitsu Toshiba', model: IS12T } } + readable: 'Mobile Internet Explorer 9.0 on a Fujitsu Toshiba IS12T running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mondrian T8788)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Surround' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Surround running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart T8698)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Mozart' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Mozart running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Mozart' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Mozart running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Mozart; Orange)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Mozart' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Mozart running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Pro T7576)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Pro' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Pro running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Schubert T9292)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Mobile Internet Explorer 9.0 on a HTC HD7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy T8686)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Trophy running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; 7 Trophy)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Trophy running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD2)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Mobile Internet Explorer 9.0 on a HTC HD2 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7 T9292)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Mobile Internet Explorer 9.0 on a HTC HD7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HD7)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Mobile Internet Explorer 9.0 on a HTC HD7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; HTC Trophy)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Trophy running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; MWP6885)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Pro' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Pro running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mazaa)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Mazaa } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Mazaa running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mondrian)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Mobile Internet Explorer 9.0 on a HTC HD7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Mozart)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Mozart' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Mozart running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Omega)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Radar } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Radar running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PC40100)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Trophy running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PD67100)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Mozart' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Mozart running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI39100)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Titan } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Titan running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; PI86100)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Titan II' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Titan II running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar 4G)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Radar } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Radar running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar C110e)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Radar } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Radar running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Radar; Orange)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Radar } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Radar running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Schubert)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Mobile Internet Explorer 9.0 on a HTC HD7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Spark)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Trophy running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Surround T8788)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Surround' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Surround running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Surround)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Surround' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Surround running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T7575)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Pro' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Pro running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8697)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Mozart' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Mozart running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T8788)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Surround' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Surround running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; T9296)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } + readable: 'Mobile Internet Explorer 9.0 on a HTC HD7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; TITAN X310e)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Titan } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Titan running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Titan } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Titan running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Trophy T8686)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Trophy running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Trophy)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Trophy running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; USCCHTC-PC93100; USC-US)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Pro' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Pro running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Ultimate)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Titan } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Titan running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; X310e)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Titan } } + readable: 'Mobile Internet Explorer 9.0 on a HTC Titan running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; htc mpw6958)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: '7 Trophy' } } + readable: 'Mobile Internet Explorer 9.0 on a HTC 7 Trophy running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HUAWEI; W1-C00)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W1' } } + readable: 'Mobile Internet Explorer 9.0 on a Huawei Ascend W1 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HUAWEI; W1-U00)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W1' } } + readable: 'Mobile Internet Explorer 9.0 on a Huawei Ascend W1 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7Q' } } + readable: 'Mobile Internet Explorer 9.0 on a LG Optimus 7Q running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900B)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7Q' } } + readable: 'Mobile Internet Explorer 9.0 on a LG Optimus 7Q running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-C900k)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7Q' } } + readable: 'Mobile Internet Explorer 9.0 on a LG Optimus 7Q running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7' } } + readable: 'Mobile Internet Explorer 9.0 on a LG Optimus 7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E900h)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7' } } + readable: 'Mobile Internet Explorer 9.0 on a LG Optimus 7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; LG; LG-E906)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Jil Sander' } } + readable: 'Mobile Internet Explorer 9.0 on a LG Jil Sander running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MAL; MSM7x27A; China Telecom)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: MAL, model: MSM7x27A } } + readable: 'Mobile Internet Explorer 9.0 on a MAL MSM7x27A running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MAL; N880e WP7.8 V2 8835; China Telecom)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: N880e } } + readable: 'Mobile Internet Explorer 9.0 on a ZTE N880e running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; MAL; N880e WP7.8 V5.0 8862; China Telecom)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: N880e } } + readable: 'Mobile Internet Explorer 9.0 on a ZTE N880e running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Microsoft; XDeviceEmulator)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: emulator } } + readable: 'Mobile Internet Explorer 9.0 on an emulator running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; 909)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 1020' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 1020 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 510)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 510' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 510 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 610 NFC)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 610' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 610 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 610)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 610' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 610 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 710' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 710 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 800 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800C)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 800 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 900)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 900' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 900 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 510)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 510' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 510 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 610)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 610' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 610 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 610C)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 610' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 610 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 710)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 710' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 710 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 800 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 800C)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 800 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Nokia 900)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 900' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 900 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Nokia; 800C)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } + readable: 'Mobile Internet Explorer 9.0 on a Nokia Lumia 800 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-I8350)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia W' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia W running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-I8350T)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia W' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia W running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-I8750)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Ativ S running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-S7530)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia M' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia M running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-S7530E)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia M' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia M running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-S7530L)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia M' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia M running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; GT-i8700)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia 7' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia 7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia 7' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia 7 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; Omnia W; Orange)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia W' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia W running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SCH-R860U)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ Odyssey' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Ativ Odyssey running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-I937)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Focus S' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Focus S running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-T899M)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Ativ S running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i667)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Focus 2' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Focus 2 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i677)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Focus Flash' } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Focus Flash running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Focus } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Focus running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917R)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Focus } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Focus running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; i917)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Focus } } + readable: 'Mobile Internet Explorer 9.0 on a Samsung Focus running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; Tania)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: 'V965W Tania' } } + readable: 'Mobile Internet Explorer 9.0 on a ZTE V965W Tania running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; ZTE; V965W)' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: 'V965W Tania' } } + readable: 'Mobile Internet Explorer 9.0 on a ZTE V965W Tania running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 8.0.10328.0; Trident/5.0; IEMobile/9.0; CuteBrowser/3.0.0; NOKIA; RM-822_apac_prc_204)' + result: { browser: { name: CuteBrowser, version: '3.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'CuteBrowser 3.0 on a Nokia Lumia 920 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 8.0.10501.0; Trident/5.0; IEMobile/9.0; CuteBrowser/3.0.0; HTC; Windows Phone 8X by HTC)' + result: { browser: { name: CuteBrowser, version: '3.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'CuteBrowser 3.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 8.10.14157.0; Trident/5.0; IEMobile/9.0; CuteBrowser/3.0.0; HUAWEI; HUAWEI W1-U00)' + result: { browser: { name: CuteBrowser, version: '3.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '8.10' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend W1' } } + readable: 'CuteBrowser 3.0 on a Huawei Ascend W1 running Windows Phone 8.10' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 8.10.14203.0; Trident/5.0; IEMobile/9.0; CuteBrowser/3.0.0; SAMSUNG; GT-I8750)' + result: { browser: { name: CuteBrowser, version: '3.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '8.10' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Ativ S' } } + readable: 'CuteBrowser 3.0 on a Samsung Ativ S running Windows Phone 8.10' +- + headers: { User-Agent: 'MQQBrowser/1.0/Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; NOKIA; RM-910apacprc200)', Q-UA: 'WPQB10_GA/100001&SMTT_3/020100&WP8&0014&RM-910apacprc200&0&9218&V3' } + result: { browser: { name: 'QQ Browser', version: '1.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'QQ Browser 1.0 on a Nokia Lumia 925 running Windows Phone 8.0' +- + headers: { User-Agent: 'MQQBrowser/3.6/Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; NOKIA; RM-892apachongko)', Q-UA: 'WPQB36_GA/360926&SMTT_3/020100&WP8&305014&RM-892apachongko&71100&9288&V3' } + result: { browser: { name: 'QQ Browser', version: '3.6', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'QQ Browser 3.6 on a Nokia Lumia 925 running Windows Phone 8.0' +- + headers: { User-Agent: 'MQQBrowser/3.7/Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; HTC; HTC6990LVW)', Q-UA: 'WPQB37_GA/370995&SMTT_3/020100&WP8&305014&HTC6990LVW&71100&9337&V3' } + result: { browser: { name: 'QQ Browser', version: '3.7', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'QQ Browser 3.7 on a HTC 8X running Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Windows; U; Windows NT 5.1; xx; rv:1.9.0.5) Gecko/200900101 Firefox/3.0.5', X-UCBrowser-UA: 'pf(Windows);la(en-US);re(U2/1.0.0);dv(NOKIA RM-914_im_mea3_380);pr(UCBrowser/3.4.1.407);ov(wds 8.0);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(0);nt(1);up(U2/1.0.0);pm(1);' } + result: { browser: { name: 'UC Browser', family: { name: Firefox, version: 3.0.5 }, version: '3.4', type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'UC Browser 3.4 on a Nokia Lumia 520 running Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop) UCBrowser/3.1.1.343', X-UCBrowser-UA: 'pf(Windows);la(en-US);re(U2/1.0.0);dv(HTC 8S by HTC);pr(UCBrowser/3.1.1.343);ov(wds 8.0);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(0);nt(1);pm(0);' } + result: { browser: { name: 'UC Browser', version: '3.1', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'UC Browser 3.1 on a HTC 8S running Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; IEMobile/10.0; WPDesktop) baidubrowser/2.5.0.12 (Baidu; P3 8.0.10512)', Baidu-FlyFlow: 'Microsoft Windows NT 8.0.10512.0;4.0.50829.0;NOKIA;RM-822_apac_prc_204;ca23bc5b9a1777612837b43014640b3cce62fc50;2.5.0.12' } + result: { browser: { name: 'Baidu Browser', version: 2.5.0.12, type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart } } + readable: 'Baidu Browser 2.5.0.12 on Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; IEMobile/10.0; WPDesktop) baidubrowser/2.5.0.12 (Baidu; P3 8.0.10521)', Baidu-FlyFlow: 'Microsoft Windows NT 8.0.10521.0;4.0.50829.0;NOKIA;RM-821_apac_hong_kong_234;03988de8b2eab0b1cadee6ec115612692262e40d;2.5.0.12' } + result: { browser: { name: 'Baidu Browser', version: 2.5.0.12, type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart } } + readable: 'Baidu Browser 2.5.0.12 on Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; A620e)', X-UCBrowser-UA: 'pf(Windows);la(zh-CN);re(U2/1.0.0);dv(HTC A620e);pr(UCBrowser/3.4.1.407);ov(wds 8.10);pi(480*800);ss(480*800);er(U);bt(UC);nm(0);im(0);sr(2);nt(2);pm(0);' } + result: { browser: { name: 'UC Browser', version: '3.4', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'UC Browser 3.4 on a HTC 8S running Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; A620e) baidubrowser/2.5.0.12 (Baidu; P3 8.0.10327)', Baidu-FlyFlow: 'Microsoft Windows NT 8.0.10327.0;4.0.50829.0;HTC;A620e;cadbcd6ff7d136b26075066cd7e9b382f0f6e896;2.5.0.12' } + result: { browser: { name: 'Baidu Browser', version: 2.5.0.12, type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8S } } + readable: 'Baidu Browser 2.5.0.12 on a HTC 8S running Windows Phone 8.0' +- + headers: { User-Agent: 'UCWEB/2.0 (Windows; U; wds 7.10; xx; HTC; Radar C110e) U2/1.0.0 UCBrowser/3.1.1.343 U2/1.0.0 Mobile', x-ucbrowser-ua: 'pf(Windows);la(en-US);re(U2/1.0.0);dv(HTC Radar C110e);pr(UCBrowser/3.1.1.343);ov(wds 7.10);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(0);nt(1);up(U2/1.0.0);pm(1);' } + result: { browser: { name: 'UC Browser', version: '3.1', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Radar } } + readable: 'UC Browser 3.1 on a HTC Radar running Windows Phone 7.5' +- + headers: { User-Agent: 'UCWEB/2.0 (Windows; U; wds 7.10; xx; NOKIA; Lumia 510) U2/1.0.0 UCBrowser/3.2.0.340 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Windows);la(en-US);re(U2/1.0.0);dv(NOKIA Lumia 510);pr(UCBrowser/3.2.0.340);ov(wds 7.10);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(0);nt(2);up(U2/1.0.0);pm(1);' } + result: { browser: { name: 'UC Browser', version: '3.2', type: browser }, engine: { name: Gecko }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 510' } } + readable: 'UC Browser 3.2 on a Nokia Lumia 510 running Windows Phone 7.5' +- + headers: { User-Agent: 'UCWEB/2.0 (Windows; U; wds 8.0; xx; HTC; C620e) U2/1.0.0 UCBrowser/3.1.1.343 U2/1.0.0 Mobile', X-UCBrowser-UA: 'pf(Windows);la(zh-CN);re(U2/1.0.0);dv(HTC C620e);pr(UCBrowser/3.1.1.343);ov(wds 8.0);pi(720*1280);ss(480*853);er(U);bt(UC);nm(0);im(0);sr(1);nt(2);up(U2/1.0.0);pm(1);' } + result: { browser: { name: 'UC Browser', version: '3.1', type: browser }, engine: { name: Trident }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'UC Browser 3.1 on a HTC 8X running Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop) UCBrowser/3.0.1.302', X-UCBrowser-UA: 'pf(Windows);la(en-US);re(U2/1.0.0);dv(NOKIA RM-914_eu_turkey_355);pr(UCBrowser/3.0.1.302);ov(wds 8.0);pi(480*800);ss(480*800);er(U);bt(GJ);nm(0);im(0);sr(0);nt(1);pm(0);', UA-CPU: ARM } + result: { browser: { name: 'UC Browser', version: '3.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'UC Browser 3.0 on a Nokia Lumia 520 running Windows Phone 8.0' +- + headers: { User-Agent: 'Mozilla/5.0 (Series40; NOKIALumia900; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/1.8.0.50.5', X-Nokia-Device-Type: '0', x-Mobile-Gateway: 'Novarra-Vision/8.1 (Default)', X-NB-CONTENT: xhtml } + result: { browser: { name: 'Nokia Xpress', version: 1.8.0, type: browser }, engine: { name: Gecko }, os: { name: 'Windows Phone' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 900' } } + readable: 'Nokia Xpress 1.8.0 on a Nokia Lumia 900 running Windows Phone' +- + headers: { User-Agent: 'Opera/9.80 (Windows Mobile; Opera Mini/5.1.21594/35.2989; U; xx) Presto/2.8.119 Version/11.10', Device-Stock-UA: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)', X-OperaMini-Phone: '? # ?', X-OperaMini-Phone-UA: 'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)', X-OperaMini-Features: 'httpping, advanced, routing, download, file_system' } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 710' } } + readable: 'Opera Mini 5.1 on a Nokia Lumia 710 running Windows Phone 7.5' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) Asus;Galaxy6' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Asus, model: 'Galaxy 6' } } + readable: 'Mobile Internet Explorer 7.0 on an Asus Galaxy 6 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) LG;LG-E900h)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 7' } } + readable: 'Mobile Internet Explorer 7.0 on a LG Optimus 7 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; rv:11; NOKIA; Lumia 920) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 920' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 920 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; HTC; HTC6990LVW)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; HTC; Windows Phone 8X by HTC)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; HTCPO881; SPRINT)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8XT } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8XT running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; HTC6990LVW)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 10.0 on a HTC 8X running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; Lumia 620)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 620' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 620 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop; Lumia 620; Vodafone)' + result: { browser: { name: 'Mobile Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 620' } } + readable: 'Mobile Internet Explorer 10.0 on a Nokia Lumia 620 running Windows Phone 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; ARM; Trident/7.0; Touch; rv:11.0; WPDesktop; HTC6990LVW) like Gecko' + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 8X } } + readable: 'Mobile Internet Explorer 11.0 on a HTC 8X running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) HTC; HD2' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD2 } } + readable: 'Mobile Internet Explorer 7.0 on a HTC HD2 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) NOKIA;Lumia 610' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 610' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 610 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) NOKIA;RM-914_eu_euro2_218' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 520 running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) SAMSUNG;SGH-i917/2221' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Focus } } + readable: 'Mobile Internet Explorer 7.0 on a Samsung Focus running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) SAMSUNG;Taylor,gzip(gfe),gzip(gfe)' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Taylor } } + readable: 'Mobile Internet Explorer 7.0 on a Samsung Taylor running Windows Phone 7.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) Microsoft Corporation;XDeviceEmulator' + readable: 'Mobile Internet Explorer 7.0 on an emulator running Windows Phone 7.0' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: emulator } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; ARM; Lumia 950 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' + readable: 'Edge 13 on a Microsoft Lumia 950 XL running Windows 10 Mobile' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10586' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: desktop, manufacturer: Microsoft, model: 'Lumia 950 XL' } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; ARM; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' + readable: 'Edge 13 on a Microsoft Lumia 950 running Windows 10 Mobile' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10586' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: desktop, manufacturer: Microsoft, model: 'Lumia 950' } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; ARM; Lumia 930) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' + readable: 'Edge 13 on a Nokia Lumia 930 running Windows 10 Mobile' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10586' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: desktop, manufacturer: Nokia, model: 'Lumia 930' } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; ARM; Lumia 730 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' + readable: 'Edge 13 on a Nokia Lumia 730 running Windows 10 Mobile' + result: { browser: { name: Edge, version: '13', type: browser }, engine: { name: EdgeHTML, version: '13.10586' }, os: { name: 'Windows Phone', alias: Windows, edition: Mobile, version: { value: '10.0', alias: '10' } }, device: { type: desktop, manufacturer: Nokia, model: 'Lumia 730' } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 710' + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 710 running Windows Phone 7.0' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 710' } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; NOKIA; Lumia 800' + readable: 'Mobile Internet Explorer 7.0 on a Nokia Lumia 800 running Windows Phone 7.0' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 800' } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile 7.0; HTC; HD7 T9292)' + readable: 'Mobile Internet Explorer 7.0 on a HTC HD7 running Windows Phone 7.0' + result: { browser: { name: 'Mobile Internet Explorer', version: '7.0', type: browser }, engine: { name: Trident, version: '3.1' }, os: { name: 'Windows Phone', version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: HD7 } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Microsoft Windows CE 7.10.7720; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)' + readable: 'Mobile Internet Explorer 9.0 on a Samsung Omnia 7 running Windows Phone 7.5' + result: { browser: { name: 'Mobile Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, os: { name: 'Windows Phone', version: '7.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia 7' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-wophone.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-wophone.yaml new file mode 100644 index 0000000..0a25a3a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/os-wophone.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: TCL_J720/1.0 WoPhone/1.0 UPhone/1.0 Browser/UPhoneWebBrowser1.0 Profile/MIDP-1.0 Configuration/CLDC-1.0 Mozilla/5.0+(Linux;+U;+UPhone+TOPS+1.0UPhone+TOPS+1.0;+zh-cn;+Android+9.8)+AppleWebKit/532.9++UPhoneWebKit/532.9++(KHTML, like Gecko)+Mobile+Safari/532.9+' + result: { engine: { name: Webkit, version: '532.9' }, os: { name: WoPhone, family: Android, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: TCL, model: J720 } } + readable: 'a TCL J720 running WoPhone 1.0' +- + headers: 'User-Agent: TOPS/1.0 WoPhone/1.0 UPhone/1.0 Browser/UPhoneWebBrowser1.0 Profile/MIDP-1.0 Configuration/CLDC-1.0 Mozilla/5.0+(Linux;+U;+UPhone+TOPS+1.0UPhone+TOPS+1.0;+zh-cn;+Android+9.8)+AppleWebKit/532.9++UPhoneWebKit/532.9++(KHTML, like Gecko)+Mobile+Safari/532.9+' + result: { engine: { name: Webkit, version: '532.9' }, os: { name: WoPhone, family: Android, version: '1.0' }, device: { type: mobile, subtype: smart } } + readable: 'WoPhone 1.0' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/platform-air.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/platform-air.yaml new file mode 100644 index 0000000..1ddf2bc --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/platform-air.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (iOS; U; en) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/13.0' + readable: 'AdobeAIR 13.0 on iOS' + result: { browser: { using: { name: AdobeAIR, version: '13.0' } }, engine: { name: Webkit, version: 533.19.4 }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple } } +- + headers: 'User-Agent: Mozilla/5.0 (iOS; U; en-GB) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/13.0' + readable: 'AdobeAIR 13.0 on iOS' + result: { browser: { using: { name: AdobeAIR, version: '13.0' } }, engine: { name: Webkit, version: 533.19.4 }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/wap.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/wap.yaml new file mode 100644 index 0000000..14c2de0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/mobile/wap.yaml @@ -0,0 +1,156 @@ +- + headers: 'User-Agent: Dorado P36_WAP-Browser/1.0.0' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Dorado WAP-Browser' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Dorado WAP-Browser/1.0.0' + readable: 'Dorado WAP 1.0' + result: { browser: { name: 'Dorado WAP', version: '1.0', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Dorado WAP-Browser/1.0.0/powerplay/2' + readable: 'Dorado WAP 1.0' + result: { browser: { name: 'Dorado WAP', version: '1.0', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: E-tel V50 WAP-Browser/1.0.0/powerplay/2' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: E-tel V85 Wap Browser' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Earth_A2_Maui Wap Browser' + readable: 'MAUI WAP' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Earth_Colors_Maui Wap Browser' + readable: 'MAUI WAP' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: FOX_Sly_Wap Browser/1.0.0' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Fly_DS107D/WAPBrowserProfile' + readable: 'a Fly DS107D' + result: { device: { type: mobile, subtype: feature, manufacturer: Fly, model: DS107D } } +- + headers: 'User-Agent: G4040_MAUI WAP Browser' + readable: 'MAUI WAP' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Karbonn K123 WAP Browser/1.0.0' + readable: 'a Karbonn K123' + result: { device: { type: mobile, subtype: feature, manufacturer: Karbonn, model: K123 } } +- + headers: 'User-Agent: Karbonn K180/WAP Browser' + readable: 'a Karbonn K180' + result: { device: { type: mobile, subtype: feature, manufacturer: Karbonn, model: K180 } } +- + headers: 'User-Agent: KarbonnK334Shine Dorado WAP-Browser/1.0.0' + readable: 'Dorado WAP 1.0' + result: { browser: { name: 'Dorado WAP', version: '1.0', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: LAVA.ARC28S. Dorado WAP-Browser/1.0.0' + readable: 'Dorado WAP 1.0' + result: { browser: { name: 'Dorado WAP', version: '1.0', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: LAVA.ARC28S.MAUI WAP Browser' + readable: 'MAUI WAP' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Lemon B479_Wap Browser' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Lemon B369_Maui Wap Browser' + readable: 'MAUI WAP' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MAUI WAP Browser; MT6228)' + readable: 'MAUI WAP' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; WAP Browser; MTK6225)' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; WAP Browser; PDA)' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Sansui_S45_Wap Browser' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Sansui_S46_Wap Browser' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: SANSUI_S55T_Maui Wap Browser/1.0; Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'MAUI WAP 1.0' + result: { browser: { name: 'MAUI WAP', version: '1.0', type: browser }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Spice_M-5900/WapBrowserProfile' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Spice_M-5400/WapBrowserProfile' + readable: 'an unknown browser' + result: { device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Videocon_V1388N_Wap Browser' + readable: 'a Videocon V1388N' + result: { device: { type: mobile, subtype: feature, manufacturer: Videocon, model: V1388N } } +- + headers: 'User-Agent: Videocon_V.styleCurve_Wap Browser' + readable: 'a Videocon V.styleCurve' + result: { device: { type: mobile, subtype: feature, manufacturer: Videocon, model: V.styleCurve } } +- + headers: 'User-Agent: Videocon_V1390W_Wap Browser' + readable: 'a Videocon V1390W' + result: { device: { type: mobile, subtype: feature, manufacturer: Videocon, model: V1390W } } +- + headers: 'User-Agent: Videocon_V1514_Wap Browser' + readable: 'a Videocon V1514' + result: { device: { type: mobile, subtype: feature, manufacturer: Videocon, model: V1514 } } +- + headers: 'User-Agent: WAP Browser Karbonn K58/1.0.0' + readable: 'a Karbonn K58' + result: { device: { type: mobile, subtype: feature, manufacturer: Karbonn, model: K58 } } +- + headers: 'User-Agent: WAP Browser Karbonn K80/1.0.0' + readable: 'a Karbonn K80' + result: { device: { type: mobile, subtype: feature, manufacturer: Karbonn, model: K80 } } +- + headers: 'User-Agent: WAP Browser Karbonn K75' + readable: 'a Karbonn K75' + result: { device: { type: mobile, subtype: feature, manufacturer: Karbonn, model: K75 } } +- + headers: 'User-Agent: WAP_Browser_Karbonn_K725 (MRE/3.1.00(1536);MAUI/nn_K725_V006;BDATE/2014/05/08 15:46;LCD/240320;CHIP/MT6260;KEY/Normal;TOUCH/1;CAMERA/1;SENSOR/0;DEV/WAP_Browser_Karbonn_K725;WAP Browser/MAUI (HTTP PGDL;HTTPS);GMOBI/001;MBOUNCE/002;MOMAGIC/003;INDEX/00' + readable: 'MAUI WAP on MRE' + result: { browser: { name: 'MAUI WAP', type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: WAP_Browser_Karbonn_Kphone1 (MRE/3.1.00(1536);MAUI/NN_KPHONE1_NWKPD_MT6260_V006_20130928_1729;BDATE/2013/11/20 16:28;LCD/240320;CHIP/MT6260;KEY/Normal;TOUCH/1;CAMERA/1;SENSOR/0;DEV/WAP_Browser_Karbonn_Kphone1;WAP Browser/MAUI (HTTP PGDL;HTTPS);GMOBI/' + readable: 'MAUI WAP on MRE' + result: { browser: { name: 'MAUI WAP', type: browser }, os: { name: MRE }, device: { type: mobile, subtype: feature } } +- + headers: 'User-Agent: Zen M39/MAUI WAP Browser' + readable: 'MAUI WAP on a Zen M39' + result: { browser: { name: 'MAUI WAP', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Zen, model: M39 } } +- + headers: 'User-Agent: ZEN M5 Metal Dorado WAP-Browser/1.0.0' + readable: 'Dorado WAP 1.0 on a Zen M5 Metal' + result: { browser: { name: 'Dorado WAP', version: '1.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Zen, model: 'M5 Metal' } } +- + headers: 'User-Agent: Ziox_ZX26_wap_browser' + readable: 'a Ziox ZX26' + result: { device: { type: mobile, subtype: feature, manufacturer: Ziox, model: ZX26 } } +- + headers: 'User-Agent: Videocon_V1570_Maui Wap Browser/1.0; Profile/MIDP-2.0 Configuration/CLDC-1.1' + readable: 'MAUI WAP 1.0 on a Videocon V1570' + result: { browser: { name: 'MAUI WAP', version: '1.0', type: browser }, device: { type: mobile, subtype: feature, manufacturer: Videocon, model: V1570 } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/camouflage.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/camouflage.yaml new file mode 100644 index 0000000..b059c2d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/camouflage.yaml @@ -0,0 +1,167 @@ +- + headers: 'User-Agent: MQBrowser/5.0 (iPhone; CPU iPhone OS 8.4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Safari/7534.48.3' + result: { browser: { name: Safari, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '8.4' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, camouflage: true } + readable: 'an unknown browser that imitates Safari on an Apple iPhone running iOS 8.4' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; MASBJS)' + engine: 19 + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '8.0' }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop } } + readable: 'Internet Explorer 11.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; Transformer TF101 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android, version: '3.2' }, device: { type: tablet, manufacturer: Asus, model: 'Eee Pad Transformer' } } + readable: 'Android Browser on an Asus Eee Pad Transformer running Android 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/1.0.0.39 Safari/535.19' + result: { browser: { name: Chrome, version: 1.0.0.39, type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh }, camouflage: true } + readable: 'an unknown browser that imitates Chrome Dev 1.0.0.39 on OS X Yosemite 10.10' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.78.2 (KHTML, like Gecko) Version/1.0 Safari/1' + engine: 16 + features: 56 + result: { browser: { name: Safari, version: '1.0', type: browser }, engine: { name: Webkit, version: 537.78.2 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh }, camouflage: true } + readable: 'an unknown browser that imitates Safari 1.0 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.4.10 (KHTML, like Gecko) Version/7.1.4 Safari/537.85.13' + result: { browser: { name: Safari, version: 7.1.4, type: browser }, engine: { name: Webkit, version: 600.4.10 }, os: { name: 'OS X', version: { value: '10.9', nickname: Mavericks } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Safari 7.1.4 on OS X Mavericks 10.9' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.15 (KHTML, like Gecko) Safari/538.15' + result: { browser: { name: Safari, type: browser }, engine: { name: Webkit, version: '538.15' }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh }, camouflage: true } + readable: 'an unknown browser that imitates Safari on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/ Safari/530.5' + result: { browser: { name: Safari, type: browser }, engine: { name: Webkit, version: '530.5' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh }, camouflage: true } + readable: 'an unknown browser that imitates Safari on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; HTC_DesireHD_A9191; xx) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire HD' } } + readable: 'Android Browser on a HTC Desire HD running Android' +- + headers: 'User-Agent: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 925) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537' + engine: 16 + result: { browser: { name: 'Mobile Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: 'Windows Phone', version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 925' } } + readable: 'Mobile Internet Explorer 11.0 on a Nokia Lumia 925 running Windows Phone 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.0.10338 Safari/537.36' + result: { browser: { name: Chrome, version: 42.0.0.10338, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Chrome Dev 42.0.0.10338 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240' + engine: 19 + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.10240' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 12 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0' + engine: 16 + result: { browser: { name: Edge, version: '12', type: browser }, engine: { name: EdgeHTML, version: '12.0' }, os: { name: Windows, version: { value: '6.4', alias: '10' } }, device: { type: desktop } } + readable: 'Edge 12 on Windows 10' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; Desktop) AppleWebKit/534.13 (KHTML, like Gecko)' + useragent: 'Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.2.3.4) Gecko/' + result: { browser: { name: 'UC Browser' }, engine: { name: Gecko }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; Desktop) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/9.2.0.336' + useragent: 'Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.2.3.4) Gecko/' + result: { browser: { name: 'UC Browser', version: '9.2', type: browser }, engine: { name: Gecko }, device: { type: mobile, subtype: feature } } + readable: 'UC Browser 9.2' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) Safari/538.1' + result: { browser: { name: Safari, type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh }, camouflage: true } + readable: 'an unknown browser that imitates Safari on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86; rv:35.0) Gecko/20100101 Firefox/40.0' + engine: 16 + result: { browser: { name: Firefox, version: '40.0', type: browser }, engine: { name: Gecko, version: '35.0' }, os: { name: Ubuntu }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Firefox 40.0 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20130331 Firefox/21.0' + engine: 19 + result: { browser: { name: Firefox, version: '21.0', type: browser }, engine: { name: Gecko, version: '21.0' }, os: { name: Ubuntu }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Firefox 21.0 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11;Unknown) AppleWebKit/525.20+ (KHTML,like Gecko) Chromium/24.0.1312.52 Chrome/24.0.1312.52 Safari/525.52+' + engine: 8 + result: { browser: { name: Chromium, family: { name: Chrome, version: 24 }, version: 24.0.1312.52, type: browser }, engine: { name: Webkit, version: '525.20' }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Chromium 24.0.1312.52' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B440 Safari/8536.25' + result: { browser: { name: Safari, type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, camouflage: true } + readable: 'an unknown browser that imitates Safari on an Apple iPhone running iOS 8.1.2' +- + headers: 'User-Agent: Mozilla/5.0 ;Windows NT 6.1; WOW64; Trident/7.0; rv:11.0; like Gecko' + engine: 16 + result: { engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser based on Trident 7.0 running on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10' + engine: 51 + features: 7 + result: { browser: { name: Safari, version: 4.0.4, type: browser }, engine: { name: Webkit, version: 531.21.10 }, os: { name: iOS, alias: 'iPhone OS', version: '3.2' }, device: { type: tablet, manufacturer: Apple, model: iPad }, camouflage: true } + readable: 'an unknown browser that imitates Safari on an Apple iPad running iPhone OS 3.2' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.7 Version/11.00' + engine: 19 + result: { browser: { name: Opera, version: '11.00', type: browser }, engine: { name: Presto, version: 2.6.7 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Opera 11.00 on Windows 7' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.17' + engine: 16 + result: { browser: { name: Opera, version: '12.17', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Opera 12.17 on Windows 7' +- + headers: 'User-Agent: Opera/9.80 (Windows NT 6.2; WOW64) Presto/2.12.388 Version/12.12' + engine: 8 + result: { browser: { name: Opera, version: '12.12', type: browser }, engine: { name: Presto, version: 2.12.388 }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Opera 12.12 on Windows 8' +- + headers: 'User-Agent: W3S/Ready (Windows NT 6.1; Presto/2.12.423; Opera/12.18) AppleWebkit/537.36 Edge/12.246' + engine: 2 + result: { browser: { name: Opera, version: '12.18', type: browser }, engine: { name: Presto }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Opera 12.18 on Windows 7' +- + headers: { User-Agent: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1', X-Wap-Profile: 'http://gsm.lge.com/html/gsm/E400-M6-D2.xml' } + features: 24 + result: { browser: { name: Safari, version: 3.1.2, type: browser }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L3' }, camouflage: true } + readable: 'an unknown browser that imitates Safari 3.1.2 on a LG Optimus L3 running Android' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20', X-Wap-Profile: 'http://wap.sonyericsson.com/UAprof/SK17iR411.xml' } + features: 88 + result: { browser: { name: Safari, version: 3.1.1, type: browser }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: 'Sony Ericsson', model: 'Xperia Mini Pro' }, camouflage: true } + readable: 'an unknown browser that imitates Safari on a Sony Ericsson Xperia Mini Pro running Android' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko ) Version/5.1 Mobile/9B176 Safari/7534.48.3' + engine: 52 + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.1' }, device: { type: tablet, manufacturer: Apple, model: iPad }, camouflage: true } + readable: 'an unknown browser that imitates Safari on an Apple iPad running iOS 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko' + engine: 16 + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Internet Explorer 11.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' + engine: 8 + result: { browser: { name: 'Internet Explorer', version: '10.0', type: browser }, engine: { name: Trident, version: '6.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Internet Explorer 10.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/8.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; InfoPath.3)' + engine: 20 + result: { browser: { name: 'Internet Explorer', version: '11.0', type: browser }, engine: { name: Trident, version: '8.0' }, os: { name: Windows, version: { value: '6.3', alias: '8.1' } }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Internet Explorer 11.0 on Windows 8.1' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1' + engine: 20 + result: { browser: { name: Firefox, version: 15.0a1, type: browser }, engine: { name: Gecko, version: '15.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop }, camouflage: true } + readable: 'an unknown browser that imitates Firefox Aurora 15.0a1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:48.0) Gecko/20100101 Firefox/48.0' + engine: 24 + features: 95 + readable: 'Firefox 48.0 on OS X El Capitan 10.11' + result: { browser: { name: Firefox, version: '48.0', type: browser }, engine: { name: Gecko, version: '48.0' }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; HTC/DesireHD/1.39.161.1) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17' + readable: 'Android Browser on a HTC Desire HD running Android' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire HD' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/reported.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/reported.yaml new file mode 100644 index 0000000..a813f67 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/reported.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; KENEKSI Build/JDQ39; ru-ru) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Puffin/6.1.4.16005AP' + readable: 'Puffin 6.1.4 on a KENEKSI running Android 4.2.2' + result: { browser: { name: Puffin, family: { name: Chrome, version: 42 }, version: 6.1.4, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, model: KENEKSI } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/xmlhttprequest.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/xmlhttprequest.yaml new file mode 100644 index 0000000..34bf32e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/other/xmlhttprequest.yaml @@ -0,0 +1,4 @@ +- + headers: { User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36', X-Requested-With: XMLHttpRequest } + readable: 'Chrome 52 on OS X El Capitan 10.11' + result: { browser: { name: Chrome, version: '52', type: browser }, engine: { name: Blink }, os: { name: 'OS X', version: { value: '10.11', nickname: 'El Capitan' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/airboard.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/airboard.yaml new file mode 100644 index 0000000..fb78675 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/airboard.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: Mozilla/4.0 (LocationFreeTV; Airboard/LF-X5) NetFront/3.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: Sony, model: 'Airboard LF-X5' } } + readable: 'NetFront 3.0 on a Sony Airboard LF-X5' +- + headers: 'User-Agent: Mozilla/3.0 airboard 1.0 (BrowserInfo Screen=800x600x64K;InputMethod=PEN;Page=1M;Category=Personal IT Television;CPU=R4000;Storage=8M;Product=SONY/airboard/IDT-LF1;HTML-Level=3.2;Language=ja.SJIS;)' + result: { device: { type: pda, manufacturer: Sony, model: 'Airboard LF1' } } + readable: 'a Sony Airboard LF1' +- + headers: 'User-Agent: Mozilla/3.0 airboard 1.0 (BrowserInfo Screen=800x600x64K;InputMethod=PEN;Page=1M;Category=Personal IT Television;CPU=R4000;Storage=8M;Product=SONY/airboard/IDT-LF3;HTML-Level=3.2;Language=ja.SJIS;)' + result: { device: { type: pda, manufacturer: Sony, model: 'Airboard LF3' } } + readable: 'a Sony Airboard LF3' +- + headers: 'User-Agent: Mozilla/3.0 airboard 1.0 (BrowserInfo Screen=800x600x64K;InputMethod=PEN;Page=1M;Category=Personal IT Television;CPU=R4000;Storage=8M;Product=SONY/airboard/IDT-NS1P;HTML-Level=3.2;Language=ja.SJIS;)' + result: { device: { type: pda, manufacturer: Sony, model: 'Airboard NS1P' } } + readable: 'a Sony Airboard NS1P' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/casio.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/casio.yaml new file mode 100644 index 0000000..d30037a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/casio.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/4.5 (Screen=240x320x64K; InputMethod=PEN; Page=1M; Product=CASIO/CASSIOPEIA BE; HTML-level=3.2; Category=PDA; JavaScript=yes) (WorldTALK/2.2.24)' + result: { device: { type: pda, manufacturer: Casio, model: Cassiopeia } } + readable: 'a Casio Cassiopeia' +- + headers: 'User-Agent: Mozilla/4.5 (Screen=320x240x64K; InputMethod=KEYBOARD; Page=1M; Product=CASIO/PPP101; HTML-level=3.2; Category=PDA)(WorldTALK/2.0.0),1' + result: { device: { type: pda, manufacturer: Casio, model: 'Pocket PostPet', carrier: DoCoMo } } + readable: 'a Casio Pocket PostPet' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/generic.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/generic.yaml new file mode 100644 index 0000000..3ec64af --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/generic.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/4.08 (PDA; NF32PPC3AR/1.01) NetFront/3.2' + result: { browser: { name: NetFront, version: '3.2', type: browser }, engine: { name: NetFront }, device: { type: pda } } + readable: 'NetFront 3.2' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; NF33PPC3AR/1.0) NetFront/3.3' + result: { browser: { name: NetFront, version: '3.3', type: browser }, engine: { name: NetFront }, device: { type: pda } } + readable: 'NetFront 3.3' +- + headers: 'User-Agent: Mozilla/5.0 (PDA; NF35WMPRO/1.0; like Gecko) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, os: { name: 'Windows Mobile' }, device: { type: pda } } + readable: 'NetFront 3.5 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, os: { name: 'Windows CE' }, device: { type: pda } } + readable: 'NetFront 3.0 on Windows CE' +- + headers: 'User-Agent: Mozilla/5.0 (PDA; NF34PPC/1.0; like Gecko) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, os: { name: 'Windows Mobile' }, device: { type: pda } } + readable: 'NetFront 3.4 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (PDA; NF41WMPRO/1.0; like Gecko) NetFront/4.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, os: { name: 'Windows Mobile' }, device: { type: pda } } + readable: 'NetFront 4.1 on Windows Mobile' +- + headers: 'User-Agent: Mozilla/5.0 (PDA; NF35WMPRO/3.2; like Gecko) NetFront/3.5 T-01A_6.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, os: { name: 'Windows Mobile' }, device: { type: pda, manufacturer: Toshiba, model: T-01A, carrier: DoCoMo } } + readable: 'NetFront 3.5 on a Toshiba T-01A running Windows Mobile' +- + headers: 'User-Agent: Mozilla/3.0N AVE-Front/2.5 (Screen=640x390x256;Product=NTT/PI-2000_1.20; )' + result: { browser: { name: NetFront, version: '2.5', type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: NTT, model: 'PetitWeb PI-2000' } } + readable: 'NetFront 2.5 on a NTT PetitWeb PI-2000' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/mylo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/mylo.yaml new file mode 100644 index 0000000..2d71041 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/mylo.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Opera/8.02 (Qt embedded; Linux armv4ll; U) [en] SONY/COM1' + result: { browser: { name: Opera, version: '8.02', type: browser }, engine: { name: Presto }, os: { name: Qtopia }, device: { type: pda, manufacturer: Sony, model: 'Mylo 1' } } + readable: 'Opera 8.02 on a Sony Mylo 1 running Qtopia' +- + headers: 'User-Agent: Mozilla/5.0 (Linux, Sony/COM2/1.01 [ja]; like Gecko/2007) Firefox/2' + result: { browser: { name: NetFront, type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: Sony, model: 'Mylo 2' } } + readable: 'NetFront on a Sony Mylo 2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/oasys.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/oasys.yaml new file mode 100644 index 0000000..695adba --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/oasys.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/3.0 eNavigator (7; 1; Fujitsu; OASYS; 1998.10; (null); 1.0)' + result: { browser: { name: eNavigator, type: browser }, device: { type: pda, manufacturer: Fujitsu, model: OASYS } } + readable: 'eNavigator on a Fujitsu OASYS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/palm.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/palm.yaml new file mode 100644 index 0000000..3be4de5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/palm.yaml @@ -0,0 +1,100 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D050; Blazer/4.3) 16;320x320)' + result: { browser: { name: Blazer, version: '4.3', type: browser }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Palm, model: TX } } + readable: 'Blazer 4.3 on a Palm TX running Palm OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D053; Blazer/4.5) 16;320x320 UP.Link/6.3.1.17.0' + result: { browser: { name: Blazer, version: '4.5', type: browser }, os: { name: 'Palm OS' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Treo 680' } } + readable: 'Blazer 4.5 on a Palm Treo 680 running Palm OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D062; Blazer/4.5) 16;320x320' + result: { browser: { name: Blazer, version: '4.5', type: browser }, os: { name: 'Palm OS' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Centro 690' } } + readable: 'Blazer 4.5 on a Palm Centro 690 running Palm OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-TunX; Blazer/4.3) 16;320x448' + result: { browser: { name: Blazer, version: '4.3', type: browser }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Palm, model: LifeDrive } } + readable: 'Blazer 4.3 on a Palm LifeDrive running Palm OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/hspr-H102; Blazer/4.0) 16;320x320' + result: { browser: { name: Blazer, version: '4.0', type: browser }, os: { name: 'Palm OS' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Treo 650' } } + readable: 'Blazer 4.0 on a Palm Treo 650 running Palm OS' +- + headers: 'User-Agent: Mozilla/4.76 (compatible; MSIE 6.0; U; Windows 95; PalmSource; PalmOS; WebPro; Tungsten Proxyless 1.1 320x320x16)' + result: { browser: { name: WebPro, type: browser }, os: { name: 'Palm OS' }, device: { type: pda } } + readable: 'WebPro on Palm OS' +- + headers: 'User-Agent: Palm680/RC1 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D053; Blazer/4.5) 16;320x320 UP.Link/6.3.1.17.06.3.1.17.0' + result: { browser: { name: Blazer, version: '4.5', type: browser }, os: { name: 'Palm OS' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Treo 680' } } + readable: 'Blazer 4.5 on a Palm Treo 680 running Palm OS' +- + headers: 'User-Agent: PalmCentro/v0001 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; PalmSource/Palm-D061; Blazer/4.5) 16;320x320' + result: { browser: { name: Blazer, version: '4.5', type: browser }, os: { name: 'Palm OS' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Centro 685' } } + readable: 'Blazer 4.5 on a Palm Centro 685 running Palm OS' +- + headers: 'User-Agent: Xiino/1.0.9E [en] (v. 4.1; 153x130; g4)' + result: { browser: { name: Xiino, version: 1.0.9, type: browser }, os: { name: 'Palm OS', version: '4.1' }, device: { type: pda } } + readable: 'Xiino 1.0.9 on Palm OS 4.1' +- + headers: 'User-Agent: Mozilla/4.76 [en] (PalmOS; U; WebPro/3.0.1b; palm-MT64)' + result: { browser: { name: WebPro, version: 3.0.1, type: browser }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Palm, model: 'Tungsten C' } } + readable: 'WebPro 3.0.1 on a Palm Tungsten C running Palm OS' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; PalmOS/palm/model MT64/Revision:2.0.34 (en)) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Palm, model: 'Tungsten C' } } + readable: 'NetFront 3.1 on a Palm Tungsten C running Palm OS' +- + headers: 'User-Agent: Mozilla/4.0 (PDA; PalmOS/sony/model prmr/Revision:1.1.54 (en)) NetFront/3.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Sony, model: 'CLIÉ PEG-UX50' } } + readable: 'NetFront 3.0 on a Sony CLIÉ PEG-UX50 running Palm OS' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; PalmOS/sony/model tldo/Revision:2.0.22 (en)) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Sony, model: 'CLIÉ PEG-NX73V' } } + readable: 'NetFront 3.1 on a Sony CLIÉ PEG-NX73V running Palm OS' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; PalmOS/sony/model prmr/Revision:2.0.22 (en)) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Sony, model: 'CLIÉ PEG-UX50' } } + readable: 'NetFront 3.1 on a Sony CLIÉ PEG-UX50 running Palm OS' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; PalmOS/sony/model atom/Revision:2.0.22) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Sony, model: 'CLIÉ PEG-TH55' } } + readable: 'NetFront 3.1 on a Sony CLIÉ PEG-TH55 running Palm OS' +- + headers: 'User-Agent: CorePlayer/1.0 (Palm OS 5.4.9; ARM Intel PXA27x; en) CorePlayer/1.3.2_6909' + result: { browser: { name: CorePlayer, version: '1.0', type: 'app:mediaplayer' }, os: { name: 'Palm OS', version: 5.4.9 }, device: { type: pda } } + readable: 'CorePlayer 1.0 on Palm OS 5.4.9' +- + headers: 'User-Agent: Mozilla/1.22 (compatible; MSIE 5.01; PalmOS 3.0) EudoraWeb 2' + result: { browser: { name: EudoraWeb, version: '2', type: browser }, os: { name: 'Palm OS', version: '3.0' }, device: { type: pda } } + readable: 'EudoraWeb 2 on Palm OS 3.0' +- + headers: 'User-Agent: Mozilla/4.76 [en] (PalmOS; U; WebPro3.0; Palm-Arz1)' + result: { browser: { name: WebPro, version: '3.0', type: browser }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Palm, model: 'Tungsten T3' } } + readable: 'WebPro 3.0 on a Palm Tungsten T3 running Palm OS' +- + headers: 'User-Agent: Mozilla/1.22 (compatible; EudoraWeb 2.0; pdQbrowser; PalmOS 2.0)' + result: { browser: { name: EudoraWeb, version: '2.0', type: browser }, os: { name: 'Palm OS', version: '2.0' }, device: { type: pda, manufacturer: Kyocera, model: QCP-6035 } } + readable: 'EudoraWeb 2.0 on a Kyocera QCP-6035 running Palm OS 2.0' +- + headers: 'User-Agent: Mozilla/1.22 (compatible; MSIE 5.01; PalmOS 3.0) EudoraWeb 2.1' + result: { browser: { name: EudoraWeb, version: '2.1', type: browser }, os: { name: 'Palm OS', version: '3.0' }, device: { type: pda } } + readable: 'EudoraWeb 2.1 on Palm OS 3.0' +- + headers: 'User-Agent: Palmscape/PR5 (PalmPilot Pro; I)' + result: { browser: { name: Palmscape, version: '5', type: browser }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Palm, model: 'Pilot Professional' } } + readable: 'Palmscape 5 on a Palm Pilot Professional running Palm OS' +- + headers: 'User-Agent: Palmscape/3.0J [ja] (v. 3.5.2H1.5; 153x130; c8)' + result: { browser: { name: Palmscape, version: '3.0', type: browser }, os: { name: 'Palm OS', version: 3.5.2 }, device: { type: pda } } + readable: 'Palmscape 3.0 on Palm OS 3.5.2' +- + headers: 'User-Agent: Mozilla/4.0 (PDA; PalmOS/sony/model grnd/Revision:1.1.30(en)) NetFront/3.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, os: { name: 'Palm OS' }, device: { type: pda, manufacturer: Sony, model: 'CLIÉ PEG-NZ90' } } + readable: 'NetFront 3.0 on a Sony CLIÉ PEG-NZ90 running Palm OS' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; PalmOS) PLink 2.0' + readable: 'PocketLink 2.0 on Palm OS' + result: { browser: { name: PocketLink, version: '2.0', type: browser }, os: { name: 'Palm OS' }, device: { type: pda } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; PalmOS) PLink 2.56b' + readable: 'PocketLink 2.56 on Palm OS' + result: { browser: { name: PocketLink, version: '2.56', type: browser }, os: { name: 'Palm OS' }, device: { type: pda } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/psion.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/psion.yaml new file mode 100644 index 0000000..ec3e09c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/psion.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/4.51 (compatible; Opera 3.62; EPOC; 640x240)' + result: { browser: { name: Opera, version: '3.62', type: browser }, engine: { name: Electra }, os: { name: EPOC, family: Symbian }, device: { type: pda } } + readable: 'Opera 3.62 on EPOC' +- + headers: 'User-Agent: Psion Cpw/1.00f(S5) War/1.00f' + readable: 'WAP Browser on a Psion Series 5mx running EPOC' + result: { browser: { name: 'WAP Browser', type: browser }, os: { name: EPOC, family: Symbian }, device: { type: pda, manufacturer: Psion, model: 'Series 5mx' } } +- + headers: 'User-Agent: Psion Cpw/1.00f(RV) War/1.00f' + readable: 'WAP Browser on a Psion Revo running EPOC' + result: { browser: { name: 'WAP Browser', type: browser }, os: { name: EPOC, family: Symbian }, device: { type: pda, manufacturer: Psion, model: Revo } } +- + headers: 'User-Agent: Psion Cpw/1.00f(S7) War/1.00f' + readable: 'WAP Browser on a Psion Series 7 running EPOC' + result: { browser: { name: 'WAP Browser', type: browser }, os: { name: EPOC, family: Symbian }, device: { type: pda, manufacturer: Psion, model: 'Series 7' } } +- + headers: 'User-Agent: EPOC32-WTL/1.1' + readable: EPOC + result: { os: { name: EPOC, family: Symbian }, device: { type: pda } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/zaurus.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/zaurus.yaml new file mode 100644 index 0000000..4e6682d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/pda/zaurus.yaml @@ -0,0 +1,72 @@ +- + headers: 'User-Agent: sharp pda browser/4.1[ja](MI-600/1.0)' + result: { device: { type: pda, manufacturer: Sharp, model: 'Zaurus MI-600' } } + readable: 'a Sharp Zaurus MI-600' +- + headers: 'User-Agent: sharp pda browser/5.0[ja](MI-EX1/1.0)' + result: { device: { type: pda, manufacturer: Sharp, model: 'Zaurus MI-EX1' } } + readable: 'a Sharp Zaurus MI-EX1' +- + headers: 'User-Agent: sharp pda browser/6.1[ja](MI-E1/1.0)' + result: { device: { type: pda, manufacturer: Sharp, model: 'Zaurus MI-E1' } } + readable: 'a Sharp Zaurus MI-E1' +- + headers: 'User-Agent: sharp pda browser/6.2[ja](MI-E21/1.0)' + result: { device: { type: pda, manufacturer: Sharp, model: 'Zaurus MI-E21' } } + readable: 'a Sharp Zaurus MI-E21' +- + headers: 'User-Agent: sharp wd browser/1.0[ja](MA10/1.0) AVE-Front/2.0(BrowserInfo Screen=640x480x256; InputMethod=MOUSE' + result: { browser: { name: NetFront, version: '2.0', type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: Sharp, model: 'Mobile Shoin MA10' } } + readable: 'NetFront 2.0 on a Sharp Mobile Shoin MA10' +- + headers: 'User-Agent: sharp wd browser/1.0[ja](MA10/1.0) AVE-Front/2.0(BrowserInfo Screen=640x480x256; InputMethod=MOUSE, KEYBOARD; Page=2.0M; Category=Home Mail Tool; CPU=sh3; Storage=NO; Product=SHARP/MA10;)' + result: { browser: { name: NetFront, version: '2.0', type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: Sharp, model: 'Mobile Shoin MA10' } } + readable: 'NetFront 2.0 on a Sharp Mobile Shoin MA10' +- + headers: 'User-Agent: sharp wd browser/1.0[ja](MR-1/1.0) AVE-Front/1.0 (BrowserInfo Screen=1024x768x16bit;)' + result: { browser: { name: NetFront, version: '1.0', type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: Sharp, model: 'Mobile Shoin MR-1' } } + readable: 'NetFront 1.0 on a Sharp Mobile Shoin MR-1' +- + headers: 'User-Agent: sharp wd browser/1.0[ja](VP2/1.0) AVE-Front/2.0(BrowserInfo Screen=800x600x256; InputMethod=PEN' + result: { browser: { name: NetFront, version: '2.0', type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: Sharp, model: 'Mobile Shoin VP2' } } + readable: 'NetFront 2.0 on a Sharp Mobile Shoin VP2' +- + headers: 'User-Agent: sharp wd browser/1.0[ja](WMC100/1.0) AVE-Front/2.0(BrowserInfo Screen=640x480x256; InputMethod=KEYBOARD; Page=1.8M; Category=WP; CPU=x86; Storage=3.8M; Product=SHARP/C100;)' + result: { browser: { name: NetFront, version: '2.0', type: browser }, engine: { name: NetFront }, device: { type: pda, manufacturer: Sharp, model: 'Mobile Shoin WMC100' } } + readable: 'NetFront 2.0 on a Sharp Mobile Shoin WMC100' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; SL-C1000/1.0,Qtopia/1.5.4) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.5.4 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C1000' } } + readable: 'NetFront 3.1 on a Sharp Zaurus SL-C1000 running Qtopia 1.5.4' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; SL-C3000/1.0,Qtopia/1.4.9) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.4.9 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C3000' } } + readable: 'NetFront 3.1 on a Sharp Zaurus SL-C3000 running Qtopia 1.4.9' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; SL-C3100/1.0,Qtopia/1.5.5) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.5.5 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C3100' } } + readable: 'NetFront 3.1 on a Sharp Zaurus SL-C3100 running Qtopia 1.5.5' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; SL-C3200/1.0,Qtopia/1.5.6) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.5.6 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C3200' } } + readable: 'NetFront 3.1 on a Sharp Zaurus SL-C3200 running Qtopia 1.5.6' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; SL-C860/1.0,Qtopia/1.5.4) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.5.4 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C860' } } + readable: 'NetFront 3.1 on a Sharp Zaurus SL-C860 running Qtopia 1.5.4' +- + headers: 'User-Agent: Mozilla/4.08 (PDA; SL-C860/1.40,Qtopia/1.5.4) NetFront/3.1 480x640' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.5.4 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C860' } } + readable: 'NetFront 3.1 on a Sharp Zaurus SL-C860 running Qtopia 1.5.4' +- + headers: 'User-Agent: Mozilla/4.0 (PDA; SL-C760/1.0,Embedix/Qtopia/1.3.0) NetFront/3.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.3.0 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C760' } } + readable: 'NetFront 3.0 on a Sharp Zaurus SL-C760 running Qtopia 1.3.0' +- + headers: 'User-Agent: Mozilla/4.0 (PDA; SL-C860/1.0,OpenPDA/Qtopia/1.3.2) NetFront/3.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.3.2 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C860' } } + readable: 'NetFront 3.0 on a Sharp Zaurus SL-C860 running Qtopia 1.3.2' +- + headers: 'User-Agent: Mozilla/5.0 (PDA; SL-C1000/1.0,Qtopia/1.5.4) NetFront/3.1' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, os: { name: Qtopia, version: 1.5.4 }, device: { type: pda, manufacturer: Sharp, model: 'Zaurus SL-C1000' } } + readable: 'NetFront 3.1 on a Sharp Zaurus SL-C1000 running Qtopia 1.5.4' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/phone/snom.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/phone/snom.yaml new file mode 100644 index 0000000..81d2e74 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/phone/snom.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; snom760-SIP 8.8.2.16 2010.06 OCS)' + readable: 'a SNOM 760 IP Telephone' + result: { device: { type: mobile, subtype: desktop, manufacturer: SNOM, model: '760 IP Telephone' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/canon.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/canon.yaml new file mode 100644 index 0000000..912dc8e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/canon.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Standard; Scheme:lsa CanonIJCL/1.1; like Gecko;) Mobile NetFront/4.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: printer, manufacturer: Canon, model: 'IJ Printer' } } + readable: 'NetFront 4.1 on a Canon IJ Printer' +- + headers: 'User-Agent: Mozilla/5.0 (MFP;IR-S/2.2; like Gecko) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: printer, manufacturer: Canon, model: imageRUNNER } } + readable: 'NetFront 3.4 on a Canon imageRUNNER' +- + headers: 'User-Agent: Mozilla/5.0 (MFP;IR-S/1.3.1; like Gecko) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: printer, manufacturer: Canon, model: imageRUNNER } } + readable: 'NetFront 3.4 on a Canon imageRUNNER' +- + headers: 'User-Agent: Mozilla/5.0 (MFP;IR-S/1.8; like Gecko) NetFront/3.4' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: printer, manufacturer: Canon, model: imageRUNNER } } + readable: 'NetFront 3.4 on a Canon imageRUNNER' +- + headers: 'User-Agent: Mozilla/5.0 (Canon Ewloe-S;IR-S/3.0.0) CoralWebkit/2.0.0(KHTML, like Gecko)' + readable: 'a Canon imageRUNNER' + result: { engine: { name: Webkit }, device: { type: printer, manufacturer: Canon, model: imageRUNNER } } +- + headers: 'User-Agent: Mozilla/5.0 (Canon Madriu-S;IR-S/3.0.0) CoralWebkit/2.0.0(KHTML, like Gecko)' + readable: 'a Canon imageRUNNER' + result: { engine: { name: Webkit }, device: { type: printer, manufacturer: Canon, model: imageRUNNER } } +- + headers: 'User-Agent: Mozilla/5.0 (558122f6ec4c4a7cb95fbee81d5c96e1-02-00;IR-S/3.3.0) CoralWebkit/2.24.0 (KHTML, like Gecko)' + readable: 'a Canon imageRUNNER' + result: { engine: { name: Webkit }, device: { type: printer, manufacturer: Canon, model: imageRUNNER } } +- + headers: 'User-Agent: Mozilla/5.0 (3d9f0c0ffffe40c198b18c7bde9e4b03-01-00;IR-S/3.0.0) CoralWebkit/2.9.2(KHTML, like Gecko)' + readable: 'a Canon imageRUNNER' + result: { engine: { name: Webkit }, device: { type: printer, manufacturer: Canon, model: imageRUNNER } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/hp.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/hp.yaml new file mode 100644 index 0000000..b170df0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/hp.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/3.0 (compatible; HP Web PrintSmart 04b0 1.0.1.34)' + result: { device: { type: printer, manufacturer: HP, model: 'Web PrintSmart' } } + readable: 'a HP Web PrintSmart' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; xx; HP eStation/1.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: printer, manufacturer: HP, model: eStation } } + readable: 'Android Browser on a HP eStation running Android 2.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/other.yaml new file mode 100644 index 0000000..8498290 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/other.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: Mozilla/5.0 (MFP; 98/0100R200; like Gecko) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: printer } } + readable: 'NetFront 3.5' +- + headers: 'User-Agent: Mozilla/5.0 (MFP; 99/0100o100; like Gecko) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: printer } } + readable: 'NetFront 3.5' +- + headers: 'User-Agent: Mozilla/5.0 AppleWebKit/537.21 (KHTML, like Gecko) Safari/537.21 EpsonHello/1.0(device_id:TFQY010390)' + readable: 'an Epson Hello' + result: { engine: { name: Webkit, version: '537.21' }, device: { type: printer, manufacturer: Epson, model: Hello } } +- + headers: 'User-Agent: Mozilla/5.0 AppleWebKit/537.21 (KHTML, like Gecko) Safari/537.21 EpsonHello/1.0(uuid:303030303030303000)' + readable: 'an Epson Hello' + result: { engine: { name: Webkit, version: '537.21' }, device: { type: printer, manufacturer: Epson, model: Hello } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/taskalfa.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/taskalfa.yaml new file mode 100644 index 0000000..423681e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/printer/taskalfa.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Standard; NF41SW/1.1; like Gecko; TASKalfa 306ci) NetFront/4.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: printer, manufacturer: Kyocera, model: 'TASKalfa 306ci' } } + readable: 'NetFront 4.1 on a Kyocera TASKalfa 306ci' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/signage/other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/signage/other.yaml new file mode 100644 index 0000000..ca86801 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/signage/other.yaml @@ -0,0 +1,48 @@ +- + headers: 'User-Agent: BrightSign/4.6.46 (XD230) Mozilla/5.0 (compatible; Linux mips) AppleWebKit/537.4 (KHTML, like Gecko) Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/537.4' + result: { browser: { name: BrightSign, family: { name: Chrome, version: 18 }, version: 4.6.46 }, engine: { name: Webkit, version: '537.4' }, device: { type: signage, manufacturer: BrightSign, model: XD230 } } + readable: 'BrightSign 4.6.46 on a BrightSign XD230' +- + headers: 'User-Agent: BrightSign/5.1.52 (SV-4K-ROW) Mozilla/5.0 (compatible; Linux mips) AppleWebKit/537.4 (KHTML, like Gecko) Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/537.4' + result: { browser: { name: BrightSign, family: { name: Chrome, version: 18 }, version: 5.1.52 }, engine: { name: Webkit, version: '537.4' }, device: { type: signage, manufacturer: BrightSign, model: SV-4K-ROW } } + readable: 'BrightSign 5.1.52 on a BrightSign SV-4K-ROW' +- + headers: 'User-Agent: BrightSign/6.0.13 (XD1132) Mozilla/5.0 (compatible; Linux mips) AppleWebKit/537.4 (KHTML, like Gecko) Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/537.4' + result: { browser: { name: BrightSign, family: { name: Chrome, version: 18 }, version: 6.0.13 }, engine: { name: Webkit, version: '537.4' }, device: { type: signage, manufacturer: BrightSign, model: XD1132 } } + readable: 'BrightSign 6.0.13 on a BrightSign XD1132' +- + headers: 'User-Agent: BrightSign/6.0.50 (4K1142) Mozilla/5.0 (Unknown; Linux arm) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.4.3 Chrome/37.0.2062.103 Safari/537.36' + result: { browser: { name: BrightSign, using: { name: Qt, version: 5.4.3 }, family: { name: Chrome, version: 37 }, version: 6.0.50 }, engine: { name: Blink }, device: { type: signage, manufacturer: BrightSign, model: 4K1142 } } + readable: 'BrightSign 6.0.50 on a BrightSign 4K1142' +- + headers: 'User-Agent: BrightSign/6.1.3-td (DM-RMC-100-STR) Mozilla/5.0 (Unknown; Linux mips) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.4.3 Chrome/37.0.2062.103 Safari/537.36' + result: { browser: { name: BrightSign, using: { name: Qt, version: 5.4.3 }, family: { name: Chrome, version: 37 }, version: 6.1.3 }, engine: { name: Blink }, device: { type: signage, manufacturer: BrightSign, model: DM-RMC-100-STR } } + readable: 'BrightSign 6.1.3 on a BrightSign DM-RMC-100-STR' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; NMP-302w Build/RK3188-ADAPI) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 ADAPI/2.0 (UUID:9e7df0ed-2a5c-4a19-bec7-ecf00e2c42ee) RK3188-ADAPI/1.2.2 (MODEL:MBR-1100)' + result: { browser: { name: Adapi, using: { name: 'Chromium WebView', version: '30' }, version: '2.0' }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: signage, manufacturer: IAdea, model: MBR-1100 } } + readable: 'an IAdea MBR-1100 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; XDS-2370 Build/HAWK) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 ADAPI/2.0 (UUID:9e7df0ed-2a5c-4a19-bec7-2cc548004e4c) RK3188-ADAPI/1.2.48.79 (MODEL:XDS-2370)' + result: { browser: { name: Adapi, using: { name: 'Chromium WebView', version: '30' }, version: '2.0' }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: signage, manufacturer: IAdea, model: XDS-2370 } } + readable: 'an IAdea XDS-2370 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; XMP-6200 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 ADAPI/2.0 (UUID:9e7df0ed-2a5c-4a19-bec7-ecf00e299981) RK3188-ADAPI/1.2.6 (MODEL:XMP-6200)' + result: { browser: { name: Adapi, using: { name: 'Chromium WebView', version: '30' }, version: '2.0' }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: signage, manufacturer: IAdea, model: XMP-6200 } } + readable: 'an IAdea XMP-6200 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; Build/ICS.MBX.20121130) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 ADAPI/2.0 (UUID:80db43f3-c323-41b5-914a-d0aeece2df83) AML8726M3-ADAPI/0.9 (MODEL:XMP-2200)' + result: { browser: { name: Adapi, version: '2.0' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: signage, manufacturer: IAdea, model: XMP-2200 } } + readable: 'an IAdea XMP-2200 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; Build/ICS.MBX.20130701) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 ADAPI/2.0 (UUID:80db43f3-c323-41b5-914a-d0aeece2e002) AML8726M3-ADAPI/4.2.114 (MODEL:XMP-2300)' + result: { browser: { name: Adapi, version: '2.0' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: signage, manufacturer: IAdea, model: XMP-2300 } } + readable: 'an IAdea XMP-2300 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) ADAPI/1.0 (UUID:f9d65c88-e4cd-43b4-89eb-5c338e8565c8; NAME:5c338e8565c8) SMP864X-ADAPI/3.0.13 (MODEL:XMP-3450) Safari/533.3' + result: { browser: { name: Adapi, using: Qt, version: '1.0' }, engine: { name: Webkit, version: '533.3' }, device: { type: signage, manufacturer: IAdea, model: XMP-3450 } } + readable: 'an IAdea XMP-3450' +- + headers: 'User-Agent: Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) ADAPI/1.0 (UUID:f9d65c88-e4cd-43b4-89eb-d0aeecbbbbbf; NAME:d0aeecbbbbbf) SMP864X-ADAPI/3.3.27 (MODEL:XMP-3250) Safari/533.3' + result: { browser: { name: Adapi, using: Qt, version: '1.0' }, engine: { name: Webkit, version: '533.3' }, device: { type: signage, manufacturer: IAdea, model: XMP-3250 } } + readable: 'an IAdea XMP-3250' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/browser-opera.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/browser-opera.yaml new file mode 100644 index 0000000..3b30b91 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/browser-opera.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Opera/9.80 (Android 1.6; Linux; Opera Tablet/ADR-1202011015; U; xx) Presto/2.9.201 Version/11.50' + result: { browser: { name: 'Opera Mobile', version: '11.50', type: browser }, engine: { name: Presto, version: 2.9.201 }, os: { name: Android, version: '1.6' }, device: { type: tablet } } + readable: 'Opera Mobile 11.50 on Android 1.6' +- + headers: 'User-Agent: Opera/9.80 (Android 2.2.1; Linux; Opera Tablet/ADR-1301080958) Presto/2.11.355 Version/12.10' + result: { browser: { name: 'Opera Mobile', version: '12.10', type: browser }, engine: { name: Presto, version: 2.11.355 }, os: { name: Android, version: 2.2.1 }, device: { type: tablet } } + readable: 'Opera Mobile 12.10 on Android 2.2.1' +- + headers: 'User-Agent: Opera/9.80 (Android 2.3.1; Linux; Opera Tablet/ADR-1203051651; U; xx) Presto/2.10.254 Version/12.00' + result: { browser: { name: 'Opera Mobile', version: '12.00', type: browser }, engine: { name: Presto, version: 2.10.254 }, os: { name: Android, version: 2.3.1 }, device: { type: tablet } } + readable: 'Opera Mobile 12.00 on Android 2.3.1' +- + headers: 'User-Agent: Opera/9.80 (Android 3.1; Linux; Opera Tablet/ADR-1205181138; U; xx) Presto/2.10.254 Version/12.00' + result: { browser: { name: 'Opera Mobile', version: '12.00', type: browser }, engine: { name: Presto, version: 2.10.254 }, os: { name: Android, version: '3.1' }, device: { type: tablet } } + readable: 'Opera Mobile 12.00 on Android 3.1' +- + headers: 'User-Agent: Opera/9.80 (Android 4.1.1; Linux; Opera Tablet/OupengHD-1.6/ADR-1301101023) Presto/2.11.355 Version/12.10' + result: { browser: { name: 'Opera Oupeng', version: '1.6', type: browser }, engine: { name: Presto, version: 2.11.355 }, os: { name: Android, version: 4.1.1 }, device: { type: tablet } } + readable: 'Opera Oupeng 1.6 on Android 4.1.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/manufacturer-samsung.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/manufacturer-samsung.yaml new file mode 100644 index 0000000..35ea948 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/manufacturer-samsung.yaml @@ -0,0 +1,192 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; GT-P3113 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 2 7.0' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 2 7.0 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; GT-P5100 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 2 10.1' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 2 10.1 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; GT-P7500 Build/HTJ85B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: '3.2' }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 10.1' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 10.1 running Android 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SHW-M305W Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 8.9' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 8.9 running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; GT-P6210 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.102 Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 7.0 Plus' } } + readable: 'Chrome 38 on a Samsung Galaxy Tab 7.0 Plus running Android 4.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-P1000 Build/GINGERBREAD) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: '2.3' }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 7.0' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 7.0 running Android 2.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-P6201 Build/IMM76D) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.87 Safari/537.22' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, os: { name: Android, version: 4.0.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 7.0 Plus N' } } + readable: 'Chrome 25 on a Samsung Galaxy Tab 7.0 Plus N running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-P6800 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 7.7' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 7.7 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-P7100 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 10.1V' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 10.1V running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-P7501 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 10.1N' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 10.1N running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SC-01D Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: tablet, manufacturer: Samsung, model: 'GALAXY Tab 10.1 LTE SC-01D', carrier: DoCoMo } } + readable: 'Chrome 18 on a Samsung GALAXY Tab 10.1 LTE SC-01D running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SC-01E Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: tablet, manufacturer: Samsung, model: 'GALAXY Tab 7.7 Plus SC-01E', carrier: DoCoMo } } + readable: 'Chrome 18 on a Samsung GALAXY Tab 7.7 Plus SC-01E running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-I800 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 7.0' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 7.0 running Android 4.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; Nexus 10 Build/JRO03C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Safari/537.36' + result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.1 }, device: { type: tablet, manufacturer: Samsung, model: 'Nexus 10' } } + readable: 'Chrome 34 on a Samsung Nexus 10 running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SM-T210 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3 7.0' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 3 7.0 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-N5100 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Note 8.0' } } + readable: 'Chrome 18 on a Samsung Galaxy Note 8.0 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SPH-P500 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Safari/537.36' + result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 2 10.1' } } + readable: 'Chrome 39 on a Samsung Galaxy Tab 2 10.1 running Android 4.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.1; GT-P8200 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.1 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3 Plus (10.1)' } } + readable: 'Chrome 18 on a Samsung Galaxy Tab 3 Plus (10.1) running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-P5200 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36' + result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3 10.1' } } + readable: 'Chrome 27 on a Samsung Galaxy Tab 3 10.1 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SM-T110 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Safari/537.36' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3 Lite' } } + readable: 'Chrome 30 on a Samsung Galaxy Tab 3 Lite running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SM-T310 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' + result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3 8.0' } } + readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Tab 3 8.0 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SM-P905 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Note Pro' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Note Pro running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-P600 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Note 10.1 (2014)' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Note 10.1 (2014) running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; xx; SAMSUNG SM-T900 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab Pro 12.2' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Tab Pro 12.2 running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; 403SC Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Samsung, model: 'GALAXY Tab 4 7.0 403SC', carrier: Softbank } } + readable: 'Samsung Internet 1.5 on a Samsung GALAXY Tab 4 7.0 403SC running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG GT-N8000 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Note 10.1' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Note 10.1 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SAMSUNG-SM-T537A Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 4 10.0' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Tab 4 10.0 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-T320 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab Pro 8.4' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Tab Pro 8.4 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-T330 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 4 8.0' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Tab 4 8.0 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-T520 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab Pro 10.1' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Tab Pro 10.1 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-T700 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab S 8.4' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Tab S 8.4 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; xx; SAMSUNG SM-T800 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab S 10.5' } } + readable: 'Samsung Internet 1.5 on a Samsung Galaxy Tab S 10.5 running Android 4.4.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SM-T113 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36' + result: { browser: { name: Chrome, version: '36', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3V 7.0' } } + readable: 'Chrome 36 on a Samsung Galaxy Tab 3V 7.0 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; SM-T560 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Safari/537.36' + result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab E 9.6' } } + readable: 'Chrome 40 on a Samsung Galaxy Tab E 9.6 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-T239M Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 4 7.0' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Tab 4 7.0 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-T360 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab Active 8.0' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Tab Active 8.0 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SAMSUNG SM-T533 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/2.0 Chrome/34.0.1847.76 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '2.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 4 10.1' } } + readable: 'Samsung Internet 2.0 on a Samsung Galaxy Tab 4 10.1 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; xx; SCT21 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: tablet, manufacturer: Samsung, model: 'GALAXY Tab S SCT21', carrier: au } } + readable: 'Samsung Internet 1.5 on a Samsung GALAXY Tab S SCT21 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-P350 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab A Plus 8.0' } } + readable: 'Samsung Internet 3.2 on a Samsung Galaxy Tab A Plus 8.0 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-P550 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab A Plus 9.7' } } + readable: 'Samsung Internet 3.0 on a Samsung Galaxy Tab A Plus 9.7 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T350 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab A 8.0' } } + readable: 'Samsung Internet 3.2 on a Samsung Galaxy Tab A 8.0 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T550 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.0 Chrome/38.0.2125.102 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab A 9.7' } } + readable: 'Samsung Internet 3.0 on a Samsung Galaxy Tab A 9.7 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T710 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.2 Chrome/38.0.2125.102 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.2', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab S2 8.0' } } + readable: 'Samsung Internet 3.2 on a Samsung Galaxy Tab S2 8.0 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T810 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.3 Chrome/38.0.2125.102 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.3', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab S2 9.7' } } + readable: 'Samsung Internet 3.3 on a Samsung Galaxy Tab S2 9.7 running Android 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; SAMSUNG SM-T670 Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.5 Chrome/38.0.2125.102 Safari/537.36' + result: { browser: { name: 'Samsung Internet', version: '3.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy View' } } + readable: 'Samsung Internet 3.5 on a Samsung Galaxy View running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; xx; SMT-i9100 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 7.0' } } + readable: 'Android Browser on a Samsung Galaxy Tab 7.0 running Android 2.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; Samsung Galaxy Tab3 - 4.2.2 - API 17 - 1024x600 Build/JDQ39E) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3' } } + readable: 'Android Browser on a Samsung Galaxy Tab 3 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; SM-N8000 Build/8089) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Note 800' } } + readable: 'Android Browser on a Samsung Galaxy Note 800 running Android 4.3' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/manufacturer-webtab.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/manufacturer-webtab.yaml new file mode 100644 index 0000000..f36777c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/manufacturer-webtab.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; nl-NL) AppleWebKit/534.3 (KHTML, like Gecko) WeTab-Browser Safari/534.3' + readable: 'WebTab Browser on a WeTab running MeeGo' + result: { browser: { name: 'WebTab Browser' }, engine: { name: Webkit, version: '534.3' }, os: { name: MeeGo }, device: { type: tablet, manufacturer: WeTab, model: WeTab } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-android.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-android.yaml new file mode 100644 index 0000000..cc0d501 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-android.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; xx; HP eStation/1.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: printer, manufacturer: HP, model: eStation } } + readable: 'Android Browser on a HP eStation running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; xx; HP eStation/1.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: printer, manufacturer: HP, model: eStation } } + readable: 'Android Browser on a HP eStation running Android 2.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-blackberry.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-blackberry.yaml new file mode 100644 index 0000000..4db4321 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-blackberry.yaml @@ -0,0 +1,36 @@ +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook) AppleWebKit/536.2+ (KHTML, like Gecko) Version/10.0.4.102 Safari/536.2+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '536.2' }, os: { name: BlackBerry, version: '10.0' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry 10.0' +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook; U; Android 2.3.3; xx; PlayBook Build/10.1.0.147) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: BlackBerry, version: '10.1' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry 10.1' +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook; U; Android 2.3.3; xx; PlayBook Build/2.0.0.51) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'BlackBerry Tablet OS', version: '2.0' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry Tablet OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook; U; Android 2.3.3; xx; PlayBook Build/2.0.1.29) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'BlackBerry Tablet OS', version: '2.0' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry Tablet OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook; U; Android 2.3.3; xx; PlayBook Build/2.1.0.147) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: 'BlackBerry Tablet OS', version: '2.1' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry Tablet OS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; xx) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '534.8' }, os: { name: 'BlackBerry Tablet OS', version: '1.0' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry Tablet OS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.0.0; xx) AppleWebKit/535.1+ (KHTML, like Gecko) Version/7.2.0.0 Safari/535.1+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '535.1' }, os: { name: 'BlackBerry Tablet OS', version: '2.0' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry Tablet OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.0.1; xx) AppleWebKit/535.8+ (KHTML, like Gecko) Version/7.2.0.1 Safari/535.8+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '535.8' }, os: { name: 'BlackBerry Tablet OS', version: '2.0' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry Tablet OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; xx) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+' + result: { browser: { name: 'BlackBerry Browser' }, engine: { name: Webkit, version: '536.2' }, os: { name: 'BlackBerry Tablet OS', version: '2.1' }, device: { type: tablet, manufacturer: RIM, model: 'BlackBerry PlayBook' } } + readable: 'a RIM BlackBerry PlayBook running BlackBerry Tablet OS 2.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-firefoxos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-firefoxos.yaml new file mode 100644 index 0000000..e05e9a0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-firefoxos.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Tablet; rv:28.0) Gecko/28.0 Firefox/28.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '28.0' }, version: '28.0', type: browser }, engine: { name: Gecko, version: '28.0' }, os: { name: 'Firefox OS', version: '1.3' }, device: { type: tablet } } + readable: 'Firefox Mobile 28.0 on Firefox OS 1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Tablet; rv:30.0) Gecko/30.0 Firefox/30.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '30.0' }, version: '30.0', type: browser }, engine: { name: Gecko, version: '30.0' }, os: { name: 'Firefox OS', version: '1.4' }, device: { type: tablet } } + readable: 'Firefox Mobile 30.0 on Firefox OS 1.4' +- + headers: 'User-Agent: Mozilla/5.0 (Tablet; rv:32.0) Gecko/32.0 Firefox/32.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '32.0' }, version: '32.0', type: browser }, engine: { name: Gecko, version: '32.0' }, os: { name: 'Firefox OS', version: '2.0' }, device: { type: tablet } } + readable: 'Firefox Mobile 32.0 on Firefox OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Tablet; rv:37.0) Gecko/37.0 Firefox/37.0' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '37.0' }, version: '37.0', type: browser }, engine: { name: Gecko, version: '37.0' }, os: { name: 'Firefox OS', version: '2.2' }, device: { type: tablet } } + readable: 'Firefox Mobile 37.0 on Firefox OS 2.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-fireos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-fireos.yaml new file mode 100644 index 0000000..3a70803 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-fireos.yaml @@ -0,0 +1,124 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; KFOT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.114 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '2' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire (2012)' } } + readable: 'Amazon WebView on an Amazon Kindle Fire (2012) running FireOS 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; KFARWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Mobile Safari/537.36 cordova-amazon-fireos/3.4.0 AmazonWebAppPlatform/3;0' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 6 (2014)' } } + readable: 'Amazon WebView on an Amazon Fire HD 6 (2014) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; KFSOWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Safari/537.36 OPR/26.0.1656.87080' + result: { browser: { name: Opera, family: { name: Chrome, version: 39 }, version: '26.0', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HD (2013)' } } + readable: 'Opera 26.0 on an Amazon Kindle Fire HD (2013) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; KFSOWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HD (2013)' } } + readable: 'Amazon WebView on an Amazon Kindle Fire HD (2013) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; KFARWI Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Mobile Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 6 (2014)' } } + readable: 'Amazon WebView on an Amazon Fire HD 6 (2014) running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; KFASWI Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Mobile Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 7 (2014)' } } + readable: 'Amazon WebView on an Amazon Fire HD 7 (2014) running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFARWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.51020.2250.0238 Mobile Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 6 (2014)' } } + readable: 'Amazon WebView on an Amazon Fire HD 6 (2014) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFASWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.51020.2250.0238 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 7 (2014)' } } + readable: 'Amazon WebView on an Amazon Fire HD 7 (2014) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFFOWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.51020.2250.0238 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire (2015)' } } + readable: 'Amazon WebView on an Amazon Fire (2015) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFFOWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.51020.2250.0238 Safari/537.36 DTCP/8.0.252.0_82520000,24' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire (2015)' } } + readable: 'Amazon WebView on an Amazon Fire (2015) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFFOWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.99900.2250.0239 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire (2015)' } } + readable: 'Amazon WebView on an Amazon Fire (2015) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFMEWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.51020.2250.0238 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 8 (2015)' } } + readable: 'Amazon WebView on an Amazon Fire HD 8 (2015) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFMEWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.99900.2250.0239 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 8 (2015)' } } + readable: 'Amazon WebView on an Amazon Fire HD 8 (2015) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; KFTBWI Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.51020.2250.0238 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 10 (2015)' } } + readable: 'Amazon WebView on an Amazon Fire HD 10 (2015) running FireOS 5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.22.153_10033210) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=true' + result: { browser: { name: Silk, version: '1.0', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: FireOS, family: Android }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire' } } + readable: 'Silk 1.0 on an Amazon Kindle Fire running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.41 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.41', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '2' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HD (2012)' } } + readable: 'Silk 3.41 on an Amazon Kindle Fire HD (2012) running FireOS 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; KFOT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.35 like Chrome/34.0.1847.137 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 34 }, version: '3.35', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '2' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire (2012)' } } + readable: 'Silk 3.35 on an Amazon Kindle Fire (2012) running FireOS 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; KFOT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.39 like Chrome/34.0.1847.137 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 34 }, version: '3.39', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '2' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire (2012)' } } + readable: 'Silk 3.39 on an Amazon Kindle Fire (2012) running FireOS 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; KFOT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.41 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.41', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '2' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire (2012)' } } + readable: 'Silk 3.41 on an Amazon Kindle Fire (2012) running FireOS 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; xx; KFTT Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.41 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.41', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '2' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HD (2012)' } } + readable: 'Silk 3.41 on an Amazon Kindle Fire HD (2012) running FireOS 2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; KFJWI Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.41 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.41', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HD 8.9 (2012)' } } + readable: 'Silk 3.41 on an Amazon Kindle Fire HD 8.9 (2012) running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; xx; KFJWI Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.41 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.41', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HD 8.9 (2012)' } } + readable: 'Silk 3.41 on an Amazon Kindle Fire HD 8.9 (2012) running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.3; xx; KFAPWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.41 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.41', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HDX 8.9 (2013)' } } + readable: 'Silk 3.41 on an Amazon Kindle Fire HDX 8.9 (2013) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.3; xx; KFARWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.41 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.41', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HD 6 (2014)' } } + readable: 'Silk 3.41 on an Amazon Fire HD 6 (2014) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.3; xx; KFTHWA Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.46 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.46', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HDX (2013)' } } + readable: 'Silk 3.46 on an Amazon Kindle Fire HDX (2013) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.3; xx; KFTHWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.38 like Chrome/37.0.2026.117 Safari/537.36' + result: { browser: { name: Silk, family: { name: Chrome, version: 37 }, version: '3.38', type: browser }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HDX (2013)' } } + readable: 'Silk 3.38 on an Amazon Kindle Fire HDX (2013) running FireOS 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; xx; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true' + result: { browser: { name: Silk, version: '3.13', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: FireOS, family: Android, version: '3' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HDX 8.9 (2013)' } } + readable: 'Silk 3.13 on an Amazon Kindle Fire HDX 8.9 (2013) running FireOS 3' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.22.153_10033210) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true' + result: { browser: { name: Silk, version: '1.0', type: browser }, engine: { name: Webkit, version: '533.16' }, os: { name: FireOS, family: Android }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire' } } + readable: 'Silk 1.0 on an Amazon Kindle Fire running FireOS' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; KFTHWI Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2203.0 Safari/537.36' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HDX (2013)' } } + readable: 'Amazon WebView on an Amazon Kindle Fire HDX (2013) running FireOS 4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.2; xx; KFSOWI Build/KOT49H) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Safari/537.16' + result: { engine: { name: Webkit, version: '537.16' }, os: { name: FireOS, family: Android, version: '4' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire HD (2013)' } } + readable: 'an Amazon Kindle Fire HD (2013) running FireOS 4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: FireOS, family: Android, version: '1' }, device: { type: tablet, manufacturer: Amazon, model: 'Kindle Fire' } } + readable: 'an Amazon Kindle Fire running FireOS 1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-ios.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-ios.yaml new file mode 100644 index 0000000..7574f4d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-ios.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: FeeddlerRSS 2.4 (iPad; iPhone OS 5.1.1; en_US)' + result: { browser: { name: Feeddler, version: '2.4', type: 'app:feedreader' }, os: { name: iOS, version: 5.1.1 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Feeddler 2.4 on an Apple iPad running iOS 5.1.1' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-leos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-leos.yaml new file mode 100644 index 0000000..4833624 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-leos.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; LeOS1.0; xx; lepad_001n Build/PQXU100.4.0073.021511) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0' + readable: 'Chrome 3 on a Lenovo LePad running LeOS 1.0' + result: { browser: { name: Chrome, version: '3', type: browser }, engine: { name: Webkit, version: '532.0' }, os: { name: LeOS, family: Android, version: '1.0' }, device: { type: tablet, manufacturer: Lenovo, model: LePad } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; LeOS1.0; xx; lepad_001b Build/PQXU100.4.0097.042211) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0' + readable: 'Chrome 3 on a Lenovo LePad running LeOS 1.0' + result: { browser: { name: Chrome, version: '3', type: browser }, engine: { name: Webkit, version: '532.0' }, os: { name: LeOS, family: Android, version: '1.0' }, device: { type: tablet, manufacturer: Lenovo, model: LePad } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-ubuntu.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-ubuntu.yaml new file mode 100644 index 0000000..ec44857 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-ubuntu.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Ubuntu; Tablet) WebKit/537.21' + result: { engine: { name: Webkit, version: '537.21' }, os: { name: 'Ubuntu Touch' }, device: { type: tablet } } + readable: 'Ubuntu Touch' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-webos.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-webos.yaml new file mode 100644 index 0000000..f5b8c6a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/tablet/os-webos.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.4; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.68 Safari/534.6 TouchPad/1.0' + result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '3.0' }, device: { type: tablet, manufacturer: HP, model: TouchPad } } + readable: 'webOS Browser on a HP TouchPad running webOS 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0' + result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '3.0' }, device: { type: tablet, manufacturer: HP, model: TouchPad } } + readable: 'webOS Browser on a HP TouchPad running webOS 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 011/07' + result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS }, device: { type: tablet, manufacturer: HP, model: TouchPad } } + readable: 'webOS Browser on a HP TouchPad running webOS' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/appletv.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/appletv.yaml new file mode 100644 index 0000000..8d82e4c --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/appletv.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: iTunes-AppleTV/4.1' + result: { browser: { name: iTunes, type: 'app:mediaplayer' }, device: { type: television, manufacturer: Apple, model: AppleTV } } + readable: 'iTunes on an AppleTV' +- + headers: 'User-Agent: AppleCoreMedia/1.0.0.12F69 (Apple TV; U; CPU OS 8_3 like Mac OS X; en_us)' + readable: 'an AppleTV' + result: { device: { type: television, manufacturer: Apple, model: AppleTV } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-espial.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-espial.yaml new file mode 100644 index 0000000..f153e8a --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-espial.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux mips; xx) AppleWebKit/525.1+ (KHTML, like Gecko, Safari/525.1); Espial Browser/sig3.11.0 (Tesco; Technika Media Streamer; TCMSAW11)' + result: { browser: { name: Espial, version: 3.11.0, type: browser }, engine: { name: Webkit, version: '525.1' }, device: { type: television } } + readable: 'Espial 3.11.0 on a television' +- + headers: 'User-Agent: lacleTV/0.1.0 Espial/6.5.2' + result: { browser: { name: Espial, version: 6.5.2, type: browser }, device: { type: television, manufacturer: Orange, series: 'La clé TV' } } + readable: 'Espial 6.5.2 on an Orange La clé TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.1 AQUOSBrowser/1.0 (US00DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.1, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.1 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Hybridcast/1.0 (;00014A;KDLxxxx;0;001;); InettvBrowser/2.2 (00014A;SonyDTV150;0001;0001); KDLxxxx) Espial/6.1.23 WebKit-r124753+' + result: { browser: { name: Espial, version: 6.1.23, type: browser }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Espial 6.1.23 on a Sony Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux armv6l; xx) AppleWebKit/537.1+ (KHTML, like Gecko) Espial/6.1.12 Version/4.0 Safari/537.1+' + result: { browser: { name: Espial, version: 6.1.12, type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television } } + readable: 'Espial 6.1.12 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux i686; xx) AppleWebKit/531.2 (KHTML, like Gecko) EspialTVBrowser/1.1.15 Safari/531.2 (avui/dtp; avrt/html4; avvp/flash; avkb/pc)' + result: { browser: { name: Espial, version: 1.1.15, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television } } + readable: 'Espial 1.1.15 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.2 Version/4.0 Safari/531.2+ InettvBrowser/2.2B (0003D5;SSTV-PROTO;01;00)' + result: { browser: { name: Espial, version: 6.1.2, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: 'Advanced Communications', series: 'Smart TV' } } + readable: 'Espial 6.1.2 on an Advanced Communications Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (CrKey - 0.9.3) AppleWebKit/537.36 (KHTML, like Gecko) Espial/6.1.11 Chrome/30.0.1573.2 Safari/537.36' + result: { browser: { name: Espial, family: { name: Chrome, version: 30 }, version: 6.1.11, type: browser }, engine: { name: Blink }, device: { type: television } } + readable: 'Espial 6.1.11 on a television' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-machblue.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-machblue.yaml new file mode 100644 index 0000000..28f854e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-machblue.yaml @@ -0,0 +1,16 @@ +- + headers: 'User-Agent: MachBlue' + result: { browser: { name: 'MachBlue XT', type: browser }, device: { type: television } } + readable: 'MachBlue XT on a television' +- + headers: 'User-Agent: Mozilla/5.0 (U; Linux ICE4200; C) AppleWebKit/534.26 mbxtWebKit/1.0.0_pre-alpha (intelce)' + result: { browser: { name: 'MachBlue XT', version: '1.0', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television } } + readable: 'MachBlue XT 1.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (U; Linux x86_64; en_CA.UTF-8) AppleWebKit/534.26+ (KHTML, like Gecko) mbxtWebKit/1.0.0 (gtk)' + result: { browser: { name: 'MachBlue XT', version: '1.0', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television } } + readable: 'MachBlue XT 1.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (U; Linux x86_64; en_CA.UTF-8) AppleWebKit/534.26+ mbxtWebKit/1.0.0_pre-alpha (gtk)' + result: { browser: { name: 'MachBlue XT', version: '1.0', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television } } + readable: 'MachBlue XT 1.0 on a television' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-nx.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-nx.yaml new file mode 100644 index 0000000..7d74f5d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-nx.yaml @@ -0,0 +1,44 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; xx;) AppleWebKit/534 (MFP; 100/01010101; KHTML, like Gecko) NetFrontNX/2.0 (DTV; HTML; R1.0;)' + result: { browser: { name: 'NetFront NX', version: '2.0', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television } } + readable: 'NetFront NX 2.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; xx;) AppleWebKit/534 (MFP; 113/0043K100; KHTML, like Gecko) NetFrontNX/2.0 (DTV; HTML; R1.0;)' + result: { browser: { name: 'NetFront NX', version: '2.0', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television } } + readable: 'NetFront NX 2.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; xx;) AppleWebKit/534 (MFP; 112/0033ZZ0a; KHTML, like Gecko) NetFrontNX/2.0 (DTV; HTML; R1.0;)' + result: { browser: { name: 'NetFront NX', version: '2.0', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television } } + readable: 'NetFront NX 2.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux; xx; DTV; TSBNetTV/T3701B6.0203.6DD) AppleWebKit/536(KHTML, like Gecko) NX/3.0' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536' }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront NX 3.0 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux; xx; DTV; TSBNetTV/T3501B0.0203.0DD) AppleWebKit/536(KHTML, like Gecko) NX/3.0 (DTV; HTML; R1.0;) DTVNetBrowser/2.2 (000039;T3501B0;0203;0DD) InettvBrowser/2.2 (000039;T3501B0;0203;0DD)' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536' }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront NX 3.0 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; xx;) AppleWebKit/536(KHTML, like Gecko) NX/3.0 (DTV; HTML; R1.0;) Hybridcast/1.0 (;08001F;DTV12VSFC3;0001;0001;)' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536' }, device: { type: television, manufacturer: Sharp, series: 'Smart TV' } } + readable: 'NetFront NX 3.0 on a Sharp Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536(KHTML, like Gecko) NX/3.0 (DTV; HTML; R1.0;)' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '536' }, device: { type: television } } + readable: 'NetFront NX 3.0 on a television' +- + headers: 'User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr77 00-00-00-00-00-00;9.wr.28;2502-B234A;;) LOH; Opera; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, device: { type: television, manufacturer: HyperPanel, model: DTR77 } } + readable: 'NetFront NX 2.1 on a HyperPanel DTR77' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; xx;) AppleWebKit/534(KHTML, like Gecko) NX/2.0 (DTV; HTML; R1.0;) InettvBrowser/2.2 (00E064;UA46FS7000;0001;0001) TvpsExtInfo/A31002 (6A31AA40155FBC8EDC1468E7309DB736;22;T)' + result: { browser: { name: 'NetFront NX', version: '2.0', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'NetFront NX 2.0 on a Samsung Smart TV' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Access;NetFront NX 3;;;) Netfont webkit' + readable: 'NetFront NX 3 on a television' + result: { browser: { name: 'NetFront NX', version: '3', type: browser }, device: { type: television } } +- + headers: 'User-Agent: HbbTV/1.1.1 (;Access;NetFront NX 3;;;)' + readable: 'NetFront NX 3 on a television' + result: { browser: { name: 'NetFront NX', version: '3', type: browser }, device: { type: television } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-opera.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-opera.yaml new file mode 100644 index 0000000..66bc145 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/browser-opera.yaml @@ -0,0 +1,144 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36 OPR/19.0.1325.0 OMI/4.1.4.56.ALSAN3.7 SonyCEBrowser/1.0 (BDPlayer; BDP10G_AX; BDP2015/M24.D.0104; XAE;)' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 32 }, version: '4.1', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Sony, model: BDP10G, series: 'Blu-ray Player' } } + readable: 'Opera Devices 4.1 on a Sony BDP10G Blu-ray Player' +- + headers: 'User-Agent: OPR/17.0.1251.0 OMI/4.0.2.23, KreaTV/0.0.0.0 (ARRIS, VMS1100, wired)' + result: { browser: { name: 'Opera Devices', version: '4.0', type: browser }, device: { type: television, manufacturer: Arris, model: VMS1100, series: KreaTV } } + readable: 'Opera Devices 4.0 on an Arris VMS1100 KreaTV' +- + headers: 'User-Agent: OPR/19.0.1325.0 OMI/4.1.4.54, KreaTV/0.19090.0.0 (ARRIS, VMS1100, wired)' + result: { browser: { name: 'Opera Devices', version: '4.1', type: browser }, device: { type: television, manufacturer: Arris, model: VMS1100, series: KreaTV } } + readable: 'Opera Devices 4.1 on an Arris VMS1100 KreaTV' +- + headers: 'User-Agent: OPR/22.0.1481.0 OMI/4.2.12.29, KreaTV/0.0.0.0 (ARRIS, IPC1100, wired)CM[00.01]' + result: { browser: { name: 'Opera Devices', version: '4.2', type: browser }, device: { type: television, manufacturer: Arris, model: IPC1100, series: KreaTV } } + readable: 'Opera Devices 4.2 on an Arris IPC1100 KreaTV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5450; TOSHIBA;E8E0B7047FEF;BDX3400KB; 0.64) Presto/2.12.362 Version/12.10' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Toshiba, model: BDX3400, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Toshiba BDX3400 Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5581) Presto/2.12.362 Version/12.11 Blu-ray Player/v00.17 (Pioneer, BDP-160, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Pioneer, model: BDP-160, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Pioneer BDP-160 Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 55PUS780912; ; PHILIPSTV; CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/014.002.026.129 (PhilipsTV, 3.1.1,)en) ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, model: PUS7809, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips PUS7809 Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/010.001.072.040 (PhilipsTV, 3.1.1,)en) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) ; CC/ARG) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KD55X9005A; CC/DEU) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KDL-50R556A; CC/CHN) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia R556', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia R556 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; xx) Presto/2.10.287 Version/12.00 SonyCEBrowser/1.0 (KDL-42W805A; CTV/PKG3.009EUA; GBR)' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Sony, model: 'Bravia W805', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia W805 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; U; HbbTV/1.1.1 (; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/1.0; xx) Presto/2.10.287 Version/12.00 A3/1.0.1.28219 (BANGOLUFSEN, A3, wired)' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: 'Bang & Olufsen', model: A3, series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Bang & Olufsen A3 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips) Presto/2.12.407 Version/12.50 , KreaTV/12.36.2.2 (ARRIS, VMS1100, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Arris, model: VMS1100, series: KreaTV } } + readable: 'Opera Devices 3.4 on an Arris VMS1100 KreaTV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips) Presto/2.12.407 Version/12.50 , Vizio Co-Star LT/1.0.3T4 (Vizio, ISV-B11, wireless)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Vizio, model: ISV-B11, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Vizio ISV-B11 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips) Presto/2.12.407 Version/12.51 , TiVo-Device/b-tcdclient-harmony/2013.12.17-2041 (TiVo, TCD8F6000, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: TiVo, series: DVR } } + readable: 'Opera Devices 3.4 on a TiVo DVR' +- + headers: 'User-Agent: Opera/9.80 (Linux mips) Presto/2.12.407 Version/12.51 , TiVo-Device/ml4-th.2014.03.20-1412-VMC-2 (TiVo, OnDemand_TCDC00000, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: TiVo, series: DVR } } + readable: 'Opera Devices 3.4 on a TiVo DVR' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; ) Presto/2.12.407 Version/12.51 MB95/3.3.6.X (TOSHIBA, Si2156LG32, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Toshiba, model: Si2156LG32, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Toshiba Si2156LG32 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; HbbTV/1.2.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/4.3.0 PHILIPSTV/1.1.1 Firmware/173.44.0 (PhilipsTV, 1.1.1,) en) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; Opera TV Store/6162; HbbTV/1.2.1 (; Altech UEC; PVR9600; ; ; )) Presto/2.12.407 Version/12.51 Model/AltechMultimedia-TestingDevice' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: 'Altech UEC', model: PVR9600 } } + readable: 'Opera Devices 3.4 on an Altech UEC PVR9600' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Sony; KDL40HX750; PKG2.222GAA; 2012;);; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, model: 'Bravia HX750', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia HX750 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:SHARP; MB95; 2.1.9.o; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Sharp, model: MB95 } } + readable: 'Opera Devices 3.2 on a Sharp MB95' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Humax; HDR-5100S; 1.0.0; 1.0.0; ); ce-html/1.0; xx) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Humax, model: HDR-5100S, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.1 on a Humax HDR-5100S Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) AZ2CVT2; CC/CAN; en) Presto/2.7.61 Version/11.00' + result: { browser: { name: 'Opera Devices', version: '2.9', type: browser }, engine: { name: Presto, version: 2.7.61 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 2.9 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL55HX925; CC/XGA; xx) Presto/2.7.61 Version/11.00' + result: { browser: { name: 'Opera Devices', version: '2.9', type: browser }, engine: { name: Presto, version: 2.7.61 }, device: { type: television, manufacturer: Sony, model: 'Bravia HX925', series: 'Smart TV' } } + readable: 'Opera Devices 2.9 on a Sony Bravia HX925 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.250 Version/11.60 , VMS/12.23.4.1 (MMI, VMS1100, wired)' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: MMI, model: VMS1100, series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a MMI VMS1100 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (tv102; 130515_2104_b6) CE-HTML/1.0 NETRANGEMMH' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: 'Dune HD', model: TV-102 } } + readable: 'Opera Devices 3.2 on a Dune HD TV-102' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4 ; U; HBBTV/1.0 (; LOH/1.00; -----;;;) CE-HTML/1.0 Config(L:de,CC:AT); en) Presto/2.5.21 Version/10.30' + result: { browser: { name: 'Opera Devices', type: browser }, engine: { name: Presto, version: 2.5.21 }, device: { type: television } } + readable: 'Opera Devices on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; HbbTV/1.2.1 (+PVR; Loewe; SL210; LOH/10.2.3.25;;) CE-HTML/1.0 Config(L:spa,CC:ESP) NETRANGEMMH) Presto/2.12.362 Version/12.10' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Loewe, model: 'Connect SL210', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Loewe Connect SL210 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; HbbTV/1.2.1 (;Sharp;LE750;v0.100;;) CE-HTML/1.0 Config(L:eng,CC:DEU) NETRANGEMMH) Presto/2.12.362 Version/12.10' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sharp, model: LE750 } } + readable: 'Opera Devices 3.4 on a Sharp LE750' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (; INTEK; VT-100 HD+;;;) hdplusSmartTV/1.0 (NETRANGEMMH;) Bee/3.2 CE-HTML/1.0; en) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: INTEK, model: 'VT-100 HD+' } } + readable: 'Opera Devices 3.2 on an INTEK VT-100 HD+' +- + headers: 'User-Agent: Opera/9.80(Linux armv6I; Opera TV Store/5530; Smart-BD; M; Linux/SmartBD; B-HM5160; Mediatek) Presto/2.12.362 Version/12.11 (3c:07:71:e7:5a:2c BDP-S1200_EUR M19.D.0046 M19.R.0035 M)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: BDP-S1200, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony BDP-S1200 Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80(Linux armv7l; U; CE-HTML/1.0 NETTV/3.0.1; PHILIPS-AVM-2012; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Philips, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.2 on a Philips Blu-ray Player' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.84 Safari/537.36 OPR/31.0.1890.0 OMI/4.6.1.0.Gangnam.62 HbbTV/1.3.1 (+DL+PVR;Opera Software;HbbTV add-on;;;)' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 44 }, version: '4.6', type: browser }, engine: { name: Blink }, device: { type: television } } + readable: 'Opera Devices 4.6 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 OPR/25.0.1620.0 OMI/4.3.18.7.Dominik.0 VSTVB MB100 HbbTV/1.2.1 (; HHW HAIER; MB100; 0.1.33.5; ;) SmartTvA/3.0.0 UID(00:09:DF:C2:EA:02/MB100/HHW HAIER/0.1' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 38 }, version: '4.3', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Haier, model: MB100 } } + readable: 'Opera Devices 4.3 on a Haier MB100' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 OPR/25.0.1620.0 OMI/4.3.18.7.Dominik.0 VSTVB MB100 HbbTV/1.2.1 (; PANASONIC; MB100; 0.1.19.8; ;) SmartTvA/3.0.0 UID(00:09:DF:A9:CF:EC/MB100/PANASONIC/0.1' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 38 }, version: '4.3', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Panasonic, model: MB100 } } + readable: 'Opera Devices 4.3 on a Panasonic MB100' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/firetv.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/firetv.yaml new file mode 100644 index 0000000..d5301f2 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/firetv.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; AFTM Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Mobile Safari/537.36 cordova-amazon-fireos/3.4.0 AmazonWebAppPlatform/3.4.0;2.0' + result: { browser: { using: 'Amazon WebView' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '3' }, device: { type: television, manufacturer: Amazon, model: 'Fire TV Stick' } } + readable: 'Amazon WebView on an Amazon Fire TV Stick running FireOS 3' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/google.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/google.yaml new file mode 100644 index 0000000..9e3ca27 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/google.yaml @@ -0,0 +1,156 @@ +- + headers: 'User-Agent: Mozilla/5.0 (CrKey - 0.9.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1573.2 Safari/537.36' + result: { browser: { name: Chrome, version: 30.0.1573.2, type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Google, model: Chromecast } } + readable: 'Chrome Dev 30.0.1573.2 on a Google Chromecast' +- + headers: 'User-Agent: Mozilla/5.0 (CrKey - 1.1.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1702.0 Safari/537.36' + result: { browser: { name: Chrome, version: 33.0.1702.0, type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Google, model: Chromecast } } + readable: 'Chrome Dev 33.0.1702.0 on a Google Chromecast' +- + headers: 'User-Agent: Mozilla/5.0 (CrKey armv7l 1.2.13300) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.0 Safari/537.31' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, device: { type: television, manufacturer: Google, model: Chromecast } } + readable: 'Chrome 26 on a Google Chromecast' +- + headers: 'User-Agent: Mozilla/5.0 (CrKey armv7l 1.5.16041) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.0 Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Google, model: Chromecast } } + readable: 'Chrome 31 on a Google Chromecast' +- + headers: 'User-Agent: Mozilla/5.0 (CrKey armv7l 1.6.16664) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.0 Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Google, model: Chromecast } } + readable: 'Chrome 31 on a Google Chromecast' +- + headers: 'User-Agent: Mozilla/5.0 (CrKey armv7l 1.7.17250) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.0 Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Google, model: Chromecast } } + readable: 'Chrome 31 on a Google Chromecast' +- + headers: 'User-Agent: Mozilla/5.0 (CrKey armv7l 1.8.17977) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.0 Safari/537.36' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Google, model: Chromecast } } + readable: 'Chrome 31 on a Google Chromecast' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GX1210V TV Build/MASTER) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.19 Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: television, manufacturer: Hisense, model: GX1210 } } + readable: 'Chrome 29 on a Hisense GX1210 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; Hisense Google TV TV Build/3.0.0-105-gb209657) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: Hisense, model: Pulse } } + readable: 'Chrome 29 on a Hisense Pulse running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; LG Google TV G3 TV Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: LG, model: 'Android TV' } } + readable: 'Chrome 29 on a LG Android TV running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; LG Google TV TV Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.80 Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: LG, model: 'Android TV' } } + readable: 'Chrome 29 on a LG Android TV running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; TCL Google TV TV Build/JDQ39E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: TCL, model: 'MoVo UD TV' } } + readable: 'Chrome 29 on a TCL MoVo UD TV running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; TI320-DU TV Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.80 Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: LG, model: 'U+ tv G' } } + readable: 'Chrome 29 on a LG U+ tv G running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; GoogleTV 3.2; GTV100 Build/MASTER) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: NETGEAR, model: 'NeoTV Prime' } } + readable: 'Chrome 11 on a NETGEAR NeoTV Prime running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; GoogleTV 3.2; LG Google TV Build/MASTER) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: LG, model: 'Android TV' } } + readable: 'Chrome 11 on a LG Android TV running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; GoogleTV 3.2; NSZ-GS7/GX70 Build/MASTER) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: Sony, model: NSZ-GS7 } } + readable: 'Chrome 11 on a Sony NSZ-GS7 running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; GoogleTV 3.2; TI320-DU Build/MASTER) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: LG, model: 'U+ tv G' } } + readable: 'Chrome 11 on a LG U+ tv G running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; GoogleTV 3.2; VAP430 Build/MASTER) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: Vizio, model: Co-Star } } + readable: 'Chrome 11 on a Vizio Co-Star running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; GoogleTV 3.2; asus_google_cube Build/MASTER) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: Asus, model: 'Cube with Google TV' } } + readable: 'Chrome 11 on an Asus Cube with Google TV running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; GoogleTV 3.2; hisense_gx1200v Build/MASTER) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: Hisense, model: Pulse } } + readable: 'Chrome 11 on a Hisense Pulse running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; GoogleTV 4.0.4; <Build Tag>) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 11 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 3.2; xx; GTV100 Build/MASTER) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' + result: { browser: { name: Chrome }, engine: { name: Webkit, version: '534.13' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: NETGEAR, model: 'NeoTV Prime' } } + readable: 'Chrome on a NETGEAR NeoTV Prime running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 3.2; xx; NSZ-GS7/GX70 Build/MASTER) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' + result: { browser: { name: Chrome }, engine: { name: Webkit, version: '534.13' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: Sony, model: NSZ-GS7 } } + readable: 'Chrome on a Sony NSZ-GS7 running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 3.2; xx; VAP430 Build/MASTER) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13' + result: { browser: { name: Chrome }, engine: { name: Webkit, version: '534.13' }, os: { name: 'Google TV', family: Android }, device: { type: television, manufacturer: Vizio, model: Co-Star } } + readable: 'Chrome on a Vizio Co-Star running Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/000000' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 11 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/092754' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 11 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/092811' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 11 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/101419' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 11 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/b61925' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 11 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/b70199' + result: { browser: { name: Chrome, version: '11', type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 11 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U: Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Large Screen Safari/533.4 GoogleTV/b39389' + result: { browser: { name: Chrome, version: '5', type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 5 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Large Screen Safari/533.4 GoogleTV/162671' + result: { browser: { name: Chrome, version: '5', type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 5 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Large Screen Safari/533.4 GoogleTV/b51795' + result: { browser: { name: Chrome, version: '5', type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 5 on Google TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Large Screen Safari/533.4 GoogleTV/ 162671' + result: { browser: { name: Chrome, version: '5', type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: 'Google TV', family: Android }, device: { type: television } } + readable: 'Chrome 5 on Google TV' +- + headers: 'User-Agent: Cinnamon/1.0.0.0, GFHD100/gfibertv-42-pre0-140-gf65a138-sm (Google Fiber, GFHD100, wired)' + result: { device: { type: television, manufacturer: 'Google Fiber', model: 'TV Box', series: 'Smart TV' } } + readable: 'a Google Fiber TV Box Smart TV' +- + headers: 'User-Agent: Cinnamon/1.0.0.0, GFHD100/gfibertv-42-pre0-64-g663c97d-sm (Google Fiber, GFHD100, wired)' + result: { device: { type: television, manufacturer: 'Google Fiber', model: 'TV Box', series: 'Smart TV' } } + readable: 'a Google Fiber TV Box Smart TV' +- + headers: 'User-Agent: Cinnamon/1.0.0.0, GFHD200/gftv200-42-pre0-140-gf65a138-sm (Google Fiber, GFHD200, wired)' + result: { device: { type: television, manufacturer: 'Google Fiber', model: 'TV Box', series: 'Smart TV' } } + readable: 'a Google Fiber TV Box Smart TV' +- + headers: 'User-Agent: Cinnamon/1.0.0.0, GFHD200/gftv200-44-pre1-88-gd3004e5-sm (Google Fiber, GFHD200, wired)' + result: { device: { type: television, manufacturer: 'Google Fiber', model: 'TV Box', series: 'Smart TV' } } + readable: 'a Google Fiber TV Box Smart TV' +- + headers: 'User-Agent: Cinnamon/1.0.0.1, GFHD100/gfibertv-43-pre0-499238-g2b2e445 (Google Fiber, GFHD100, wired) CrKey/1.13.20150302.125330' + result: { device: { type: television, manufacturer: 'Google Fiber', model: 'TV Box', series: 'Smart TV' } } + readable: 'a Google Fiber TV Box Smart TV' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/hitachi.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/hitachi.yaml new file mode 100644 index 0000000..204006e --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/hitachi.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Standard; NF34SW/1.1; like Gecko) NetFront/3.4 InettvBrowser/2.2C (000087;IP03-01;0100;0000)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Hitachi, series: 'Smart TV' } } + readable: 'NetFront 3.4 on a Hitachi Smart TV' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/kreatv.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/kreatv.yaml new file mode 100644 index 0000000..691fdc7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/kreatv.yaml @@ -0,0 +1,28 @@ +- + headers: 'User-Agent: KreaTVWebKit/531 (Motorola STB; Linux)' + result: { engine: { name: Webkit, version: '531' }, device: { type: television, manufacturer: Motorola, series: KreaTV } } + readable: 'a Motorola KreaTV' +- + headers: 'User-Agent: Motorola KreaTV STB (Linux)/WebKit' + result: { device: { type: television, manufacturer: Motorola, series: KreaTV } } + readable: 'a Motorola KreaTV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux) AppleWebKit/534.51 (KHTML, like Gecko) Ekioh/2.2.4.7-moto-mob Safari/534.51:534 Motorola KreaTV STB VIP1003' + result: { browser: { using: { name: Ekioh, version: 2.2.4.7 } }, engine: { name: Webkit, version: '534.51' }, device: { type: television, manufacturer: Motorola, series: KreaTV } } + readable: 'Ekioh 2.2.4.7 on a Motorola KreaTV' +- + headers: 'User-Agent: OPR/19.0.1325.0 OMI/4.1.4.54, KreaTV/0.16197.0.0 (ARRIS, VMS1100, wired)' + result: { browser: { name: 'Opera Devices', version: '4.1', type: browser }, device: { type: television, manufacturer: Arris, model: VMS1100, series: KreaTV } } + readable: 'Opera Devices 4.1 on an Arris VMS1100 KreaTV' +- + headers: 'User-Agent: OPR/19.0.1325.0 OMI/4.1.4.54, KreaTV/0.923.0.0 (ARRIS, VMS1100, wired)' + result: { browser: { name: 'Opera Devices', version: '4.1', type: browser }, device: { type: television, manufacturer: Arris, model: VMS1100, series: KreaTV } } + readable: 'Opera Devices 4.1 on an Arris VMS1100 KreaTV' +- + headers: 'User-Agent: OPR/19.0.1325.0 OMI/4.1.4.54, KreaTV/15.99.2.1 (ARRIS, IPC1100P2, wired)' + result: { browser: { name: 'Opera Devices', version: '4.1', type: browser }, device: { type: television, manufacturer: Arris, model: IPC1100P2, series: KreaTV } } + readable: 'Opera Devices 4.1 on an Arris IPC1100P2 KreaTV' +- + headers: 'User-Agent: OPR/19.0.1325.0 OMI/4.1.4.54, KreaTV/15.99.2.1 (ARRIS, IPC1100P2, wired)' + result: { browser: { name: 'Opera Devices', version: '4.1', type: browser }, device: { type: television, manufacturer: Arris, model: IPC1100P2, series: KreaTV } } + readable: 'Opera Devices 4.1 on an Arris IPC1100P2 KreaTV' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/lg.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/lg.yaml new file mode 100644 index 0000000..0105f79 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/lg.yaml @@ -0,0 +1,324 @@ +- + headers: 'User-Agent: (LGSmartTV/1.0) AppleWebKit/534.23 OBIGO-T10/2.0' + result: { browser: { name: 'Obigo T', version: '10', type: browser }, engine: { name: Webkit, version: '534.23' }, device: { type: television, manufacturer: LG, series: 'Smart TV' } } + readable: 'Obigo T 10 on a LG Smart TV' +- + headers: 'User-Agent: LG Browser/5.0.0 InettvBrowser/2.2 (00E091;LGE2D2012M;01;00)' + result: { browser: { name: 'LG Browser', version: '5.0', type: browser }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.0 on a LG NetCast TV 2012' +- + headers: 'User-Agent: LG Browser/5.0.0 InettvBrowser/2.2 (00E091;LGE3D2012M;01;00)' + result: { browser: { name: 'LG Browser', version: '5.0', type: browser }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.0 on a LG NetCast TV 2012' +- + headers: 'User-Agent: LG Browser/7.00.00(LGE; WEBOS1; 00.00.00) webOS.TV-2015)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: LG Browser/7.00.00, webOS.TV-2014/00.00.00 (LG, WEBOS1, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: LG Browser/7.00.00, webOS.TV-2014/02.00.14 (LG, WEBOS1, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; STB Linux; POLARIS6; UPLUSTVBROWSER)' + result: { browser: { name: Polaris, version: '6', type: browser }, device: { type: television, manufacturer: LG, series: 'U+ tv' } } + readable: 'Polaris 6 on a LG U+ tv' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ HbbTV/1.1.1 ( ;LGE ;NetCast 3.0 ;1.0 ;1.0M ;)' + result: { engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+SCREEN+TUNER; LGE; GLOBAL-PLAT4; 01.00.00; 0x00000001;); LG NetCast.TV-2012' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+mouse+3D+SCREEN+TUNER; LGE; 47LM640S-ZA; 04.10.37; 0x00000001;); LG NetCast.TV-2012' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, model: LM640S, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG LM640S NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+mouse+3D+SCREEN+TUNER; LGE; 47LM9600-NA; 06.00.00; 0x00000001;); LG NetCast.TV-2012 0' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, model: LM9600, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG LM9600 NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+mouse+3D+SCREEN+TUNER; LGE; 55LM860V-ZB; 04.10.26; 0x00000001;); LG NetCast.TV-2012' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, model: LM860V, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG LM860V NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+mouse+3D+SCREEN+TUNER; LGE; GLOBAL-PLAT4; 03.09.22; 0x00000001;); LG NetCast.TV-2012' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+mouse+3D+SCREEN+TUNER; LGE; GLOBAL-PLAT4; 09.00.00; 0x00000001;); LG NetCast.TV-2012' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+mouse+SCREEN+TUNER; LGE; 42LP860H-ZA; 03.03.02; 0x00000001;); LG NetCast.TV-2012' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, model: LP860H, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG LP860H NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+mouse+SCREEN+TUNER; LGE; GLOBAL-PLAT4; 03.40.00; 0x00000001;); LG NetCast.TV-2012' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+3D; LGE; Media/BP740; 5037; abc;); LG NetCast.Media-2013 /5037 (LG, Media/BP740, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, model: BP740, series: 'NetCast Media 2013' } } + readable: 'LG Browser 6.00 on a LG BP740 NetCast Media 2013' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(; LGE; Media/BP740; 5037; abc;); LG NetCast.Media-2013 /5037 (LG, Media/BP740, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, model: BP740, series: 'NetCast Media 2013' } } + readable: 'LG Browser 6.00 on a LG BP740 NetCast Media 2013' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux i686) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+ TV set capa; (+ TV set capa; sw version, model name ; sw version; hw version); LG NetCast.TV-2013' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2013' } } + readable: 'LG Browser 5.00 on a LG NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux i686) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+ LG Browser/5.00.00(+mouse+3D+PORTAL_KEY+SCREEN+TUNER; LGE; 47LM9600-NC; 09.00.00; 0x00000001;); LG NetCast.TV-2012' + result: { browser: { name: 'LG Browser', version: '5.00', type: browser }, engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, model: LM9600, series: 'NetCast TV 2012' } } + readable: 'LG Browser 5.00 on a LG LM9600 NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux; ko-KR) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+' + result: { engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 35230; en) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ HbbTV/1.1.1 ( ;LGE ;GLOBAL_PLAT3 ;1.0 ;1.0 ;)' + result: { engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 35230; en) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ LG Browser/4.1.2(+mouse+SCREEN+TUNER; LGE; GLOBAL-PLAT3; 10.01.03; 0x00000081;); LG NetCast.TV-2011' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2011' } } + readable: 'LG Browser 4.1 on a LG NetCast TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 35230; en) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ LG Browser/4.1.4(+mouse+3D+PORTAL_KEY+SCREEN+TUNER; LGE; 47LW579S-ZD; 06.01.04; 0x00000001;); LG NetCast.TV-2011' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: LW579S, series: 'NetCast TV 2011' } } + readable: 'LG Browser 4.1 on a LG LW579S NetCast TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 35230; en) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ LG Browser/4.1.4(+mouse+PORTAL_KEY+SCREEN+TUNER; LGE; 42LV470S-ZC; 06.01.04; 0x00000001;); LG NetCast.TV-2011' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: LV470S, series: 'NetCast TV 2011' } } + readable: 'LG Browser 4.1 on a LG LV470S NetCast TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 35230; xx) AppleWebKit/531.2 (KHTML, like Gecko) Safari/531.2 LG Browser/4.1.4( SCREEN TUNER; LGE; GLOBAL-PLAT3; 11.00.14; 0x00000081;); LG NetCast.TV-2011 0' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2011' } } + readable: 'LG Browser 4.1 on a LG NetCast TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 35230; xx) AppleWebKit/531.2 (KHTML, like Gecko) Safari/531.2 LG Browser/4.1.4( SCREEN TUNER; LGE; GLOBAL-PLAT3; 11.00.14; 0x00000081;); LG NetCast.TV-2011 0' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2011' } } + readable: 'LG Browser 4.1 on a LG NetCast TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 35230; xx) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ LG Browser/4.1.4(+mouse+SCREEN+TUNER; LGE; GLOBAL-PLAT3; 03.04.40; 0x00000001;); LG NetCast.TV-2011 0' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2011' } } + readable: 'LG Browser 4.1 on a LG NetCast TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 7630; en) AppleWebKit/531.2 (KHTML, like Gecko) Safari/531.2 LG Browser/4.1.4( 3D BDP NO_NUM; LGE; Media/ST600; LG NetCast.Media-2011' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: ST600, series: 'NetCast Media 2011' } } + readable: 'LG Browser 4.1 on a LG ST600 NetCast Media 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 7630; en) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ LG Browser/4.1.4(+3D+BDP; LGE; Media/BD670; BD.8.97.413.E; 0x00000001;); LG NetCast.Media-2011' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: BD670, series: 'NetCast Media 2011' } } + readable: 'LG Browser 4.1 on a LG BD670 NetCast Media 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux 7631; en) AppleWebKit/531.2 (KHTML, like Gecko) Safari/531.2 LG Browser/4.1.4( NO_NUM; LGE; Media/SP520; ST.3.97.409.F; 0x00000001;); LG NetCast.Media-2011' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: SP520, series: 'NetCast Media 2011' } } + readable: 'LG Browser 4.1 on a LG SP520 NetCast Media 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux armv6l; en) AppleWebKit/531.2 (KHTML, like Gecko) Safari/531.2 LG Browser/4.1.4( BDP; LGE; Media/BD660; 6970; abc;); LG NetCast.Media-2011' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: BD660, series: 'NetCast Media 2011' } } + readable: 'LG Browser 4.1 on a LG BD660 NetCast Media 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux armv6l; en) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ LG Browser/4.1.4(+3D+PORTAL_KEY+BDP; LGE; Media/BH6520; 7574; abc;); LG NetCast.Media-2011' + result: { browser: { name: 'LG Browser', version: '4.1', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: BH6520, series: 'NetCast Media 2011' } } + readable: 'LG Browser 4.1 on a LG BH6520 NetCast Media 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux i686; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+; CNS_UA; LG Browser/4.05; AD_LOGON=4C47452E4E4554; HbbTV/1.1.1 (; LGE; GLOBAL_PLAT3; 1.0; 1.0;)' + result: { browser: { name: 'LG Browser', version: '4.05', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'LG Browser 4.05 on a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux mips; en) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ LG Browser/4.0.10(+SCREEN+TUNER; LGE; 42LE5500-SA; 04.02.02; 0x00000001;); LG NetCast.TV-2010' + result: { browser: { name: 'LG Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: LE5500, series: 'NetCast TV 2010' } } + readable: 'LG Browser 4.0 on a LG LE5500 NetCast TV 2010' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux mips; en) AppleWebKit/531.2+ (KHTML, like Gecko, Safari/531.2+); LG Browser/4.0.9(+mouse+3D+SCREEN+TUNER; LGE; 42LE7500-ZA; 03.05.04; 0x00000001;); LG NetCast.TV-2011' + result: { browser: { name: 'LG Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, model: LE7500, series: 'NetCast TV 2011' } } + readable: 'LG Browser 4.0 on a LG LE7500 NetCast TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux mips; xx) AppleWebKit/531.2+ (KHTML, like Gecko, Safari/531.2+); LG Browser/4.0.9(+mouse+3D+SCREEN+TUNER; LGE;42LE7500-ZA; 03.05.04; 0x00000001;); LG NetCast.TV-2011' + result: { browser: { name: 'LG Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2011' } } + readable: 'LG Browser 4.0 on a LG NetCast TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv7l), Safari/537.1+, LG NetCast.TV-2013/01.15.01 (LG, 47LM760T-ZB, wired)' + result: { device: { type: television, manufacturer: LG, model: LM760T, series: 'NetCast TV 2013' } } + readable: 'a LG LM760T NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.33 Safari/537.31 SmartTV/5.0' + result: { browser: { family: { name: Chrome, version: 26 }, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.31 SmartTV/6.0' + result: { browser: { family: { name: Chrome, version: 34 }, type: browser }, engine: { name: Blink }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.33 Safari/537.31 LGSmartTV/5.0' + result: { browser: { family: { name: Chrome, version: 26 }, type: browser }, engine: { name: Webkit, version: '537.31' }, device: { type: television, manufacturer: LG, series: 'Smart TV' } } + readable: 'a LG Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ HbbTV/1.1.1 ( ;LGE ;NetCast 4.0 ;04.22.07 ;1.0M ;)' + result: { engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2013' } } + readable: 'a LG NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+3D+SCREEN+TUNER; LGE; 42LA660V-ZA; 04.22.07; 0x00000001;); LG NetCast.TV-2013 /04.22.07 (LG, 42LA660V-ZA, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, model: LA660V, series: 'NetCast TV 2013' } } + readable: 'LG Browser 6.00 on a LG LA660V NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+3D+SCREEN+TUNER; LGE; 47LA6900-NA; 04.00.33; 0x00000001;); LG NetCast.TV-2013 /04.00.33 (LG, 47LA6900-NA, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, model: LA6900, series: 'NetCast TV 2013' } } + readable: 'LG Browser 6.00 on a LG LA6900 NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+3D+SCREEN+TUNER; LGE; GLOBAL-PLAT5; 03.07.01; 0x00000001;); LG NetCast.TV-2013/03.17.01 (LG, GLOBAL-PLAT4, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2013' } } + readable: 'LG Browser 6.00 on a LG NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+3D+SCREEN+TUNER; LGE; GLOBAL-PLAT5; 03.07.01; 0x00000001;); LG NetCast.TV-2013/03.17.01 (LG, GLOBAL-PLAT4, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2013' } } + readable: 'LG Browser 6.00 on a LG NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+SCREEN+TUNER; LGE; 47LA790W-ZA; 01.04.00; 0x00000001;); LG NetCast.TV-2013 /01.04.00 (LG, , wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, model: LA790W, series: 'NetCast TV 2013' } } + readable: 'LG Browser 6.00 on a LG LA790W NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux) AppleWebKit/537.41 (KHTML, like Gecko) Safari/537.41 LG Browser/7.00.00(LGE; WEBOS1; 257; 1); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, WEBOS1, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux i686) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen ISIS/0.2.1-64-r13 Safari/537.41' + result: { browser: { name: Isis, version: '0.2', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'Isis 0.2 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux i686) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen Safari/537.41 LG Browser/7.00.00(LGE; DVB-LG115X; 02.00.09; 1); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, DVB-LG115X, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, model: LG115X, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG115X webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux i686) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen Safari/537.41 LG Browser/7.00.00(LGE; webOS.TV; 00.00.01; 0x00000001); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, webOS.TV, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux i686) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen WebAppManager Safari/537.41' + result: { engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen ISIS/0.2.1-2-r13 Safari/537.41' + result: { browser: { name: Isis, version: '0.2', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'Isis 0.2 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen Safari/537.41 LG Browser/7.00.00(LGE; ATSC-LG115X; 196865; 1); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, ATSC-LG115X, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, model: LG115X, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG115X webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen Safari/537.41 LG Browser/7.00.00(LGE; WEBOS1; 00.00.00; 1); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, WEBOS1, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen Safari/537.41 LG Browser/7.00.00(LGE; WEBOS1; 03.00.00; 1); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, WEBOS1, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen Safari/537.41 LG Browser/7.00.00(LGE; WEBOS1; 257; 1); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, WEBOS1, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen Safari/537.41 LG Browser/7.00.00(LGE; webOS.TV; 00.00.01; 0x00000001); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, webOS.TV, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen WebAppManager Safari/537.41' + result: { engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/538.2 (KHTML, like Gecko) Large Screen Safari/538.2 LG Browser/7.00.00(LGE; WEBOS1; 00.00.00; 1); webOS.TV-2014; LG NetCast.TV-2013 Compatible (LGE, WEBOS1, wired)' + result: { browser: { name: 'LG Browser', version: '7.00', type: browser }, engine: { name: Webkit, version: '538.2' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'LG Browser 7.00 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/538.2 (KHTML, like Gecko) Large Screen WebAppManager Safari/538.2' + result: { engine: { name: Webkit, version: '538.2' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (WebOS; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen ISIS/0.2.1-50-r7 Safari/537.41' + result: { browser: { name: Isis, version: '0.2', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'Isis 0.2 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (WebOS; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen ISIS/0.2.1-53-r8 Safari/537.41' + result: { browser: { name: Isis, version: '0.2', type: browser }, engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'Isis 0.2 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux; ko-KR) AppleWebKit/534.26+ (KHTML, like Gecko) Version/5.0 Safari/534.26+' + result: { engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } + readable: 'a LG NetCast TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4 SmartTV/4.6' + result: { browser: { family: { name: Chrome, version: 22 }, type: browser }, engine: { name: Webkit, version: '537.4' }, device: { type: television, manufacturer: LG, series: 'NetCast TV' } } + readable: 'a LG NetCast TV' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+3D+SCREEN+TUNER; LGE; NETCAST4; 04.00.15; 0x00000001;); LG NetCast.TV-2013 /04.00.15 (LG, NETCAST4, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2013' } } + readable: 'LG Browser 6.00 on a LG NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+3D+SCREEN+TUNER; LGE; NetCast4.0; 01.11.01; 0x00000001;); LG NetCast.TV-2013 /01.11.01 (LG, NetCast4.0, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, model: NetCast4.0, series: 'NetCast TV 2013' } } + readable: 'LG Browser 6.00 on a LG NetCast4.0 NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ OHTV/1.0 ( ;LGE ;GLOBAL-PLAT4 ;02.22.01 ;0x00000001)' + result: { engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2013' } } + readable: 'a LG NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.2.1 Chrome/38.0.2125.122 Safari/537.36 HbbTV/1.2.1 (+DRM; LGE; WEBOS3; WEBOS3.0 02.01.32; W3_M16;)' + result: { browser: { using: { name: Qt, version: 5.2.1 }, family: { name: Chrome, version: 38 }, type: browser }, engine: { name: Blink }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'Qt 5.2.1 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/537.1+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/537.1+; Hybridcast/1.0(;00E091;LGwebOSTV;1;0;)0' + result: { browser: { family: { name: Chrome, version: 17 }, type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ Hybridcast/1.0(;00E091;LGwebOSTV;1;0;)0' + result: { engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux armv7l) AppleWebKit/537.1+ (KHTML, like Gecko) Safari/537.1+ LG Browser/6.00.00(+mouse+SCREEN+TUNER; LGE; NETCAST4; 03.00.00; 0x00000001;); LG NetCast.TV-2013 /03.00.00 (LG, NETCAST4, wired)' + result: { browser: { name: 'LG Browser', version: '6.00', type: browser }, engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2013' } } + readable: 'LG Browser 6.00 on a LG NetCast TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.2.1 Chrome/38.0.2125.122 Safari/537.36 WebAppManager' + result: { browser: { using: { name: Qt, version: 5.2.1 }, family: { name: Chrome, version: 38 }, type: browser }, engine: { name: Blink }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } + readable: 'Qt 5.2.1 on a LG webOS TV' +- + headers: 'User-Agent: Mozilla/5.0 (LG smartTV)' + readable: 'a LG Smart TV' + result: { device: { type: television, manufacturer: LG, series: 'Smart TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ PBRM/1.0 ( ;LGE ;STB-3000 ;00.00.00 ;0x00000001)' + readable: 'Pro:Centric on a LG STB-3000 webOS TV' + result: { browser: { name: 'Pro:Centric' }, engine: { name: Webkit, version: '537.1' }, os: { name: webOS }, device: { type: television, manufacturer: LG, model: STB-3000, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ PBRM/1.0 ( ;LGE ;32LY760H-ZA ;03.03.03 ;0x00000001)' + readable: 'Pro:Centric on a LG LY760H webOS TV' + result: { browser: { name: 'Pro:Centric' }, engine: { name: Webkit, version: '537.1' }, os: { name: webOS }, device: { type: television, manufacturer: LG, model: LY760H, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ PBRM/1.0 ( ;LGE ;WEBOS2 ;00.00.00 ;0x00000001)' + readable: 'Pro:Centric on a LG webOS TV' + result: { browser: { name: 'Pro:Centric' }, engine: { name: Webkit, version: '537.1' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux; ko-KR) AppleWebKit/534.26 (KHTML, like Gecko) Version/5.0 Safari/534.26' + readable: 'a LG NetCast TV 2012' + result: { engine: { name: Webkit, version: '534.26' }, device: { type: television, manufacturer: LG, series: 'NetCast TV 2012' } } +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ HbbTV/1.2.1 (+DRM; LGE; WEBOS1; 05.05.35; 1M14;)' + readable: 'a LG webOS TV' + result: { engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ HbbTV/1.2.1 (+DRM; LGE; WEBOS2.0; 04.00.90; HE_DTV_W15M;)' + readable: 'a LG webOS TV' + result: { engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ Hybridcast/1.0(;00E091;webOSTV3_0;2;2;)0' + readable: 'a LG webOS TV' + result: { engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/mitsubishi.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/mitsubishi.yaml new file mode 100644 index 0000000..52bb9f5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/mitsubishi.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux 2.6.32; xx;) AppleWebKit/534(KHTML, like Gecko) NX/2.1 (DTV; HTML; R1.0;) InettvBrowser/2.2 (38E08E;0014GAIAV3;001;000) Hybridcast/1.0 (;38E08E;0014GAIAV3;001;000;)' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television, manufacturer: Mitsubishi, series: 'Smart TV' } } + readable: 'NetFront NX 2.1 on a Mitsubishi Smart TV' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/nvidia.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/nvidia.yaml new file mode 100644 index 0000000..00a02d6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/nvidia.yaml @@ -0,0 +1,4 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Andr0id 6.0; SHIELD Andr0id TV Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.23 Safari/537.36 OPR/32.0.2128.0 OMI/4.8.0.17.release' + readable: 'Opera Devices 4.8 on a Nvidia SHIELD Android TV running Android TV 6.0' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 49 }, version: '4.8', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: '6.0' }, device: { type: television, manufacturer: Nvidia, model: 'SHIELD Android TV' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/opentv.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/opentv.yaml new file mode 100644 index 0000000..e8d8ab4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/opentv.yaml @@ -0,0 +1,68 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0 compatible; Device Mosaic 5.0; OpenTV) InettvBrowser/1.0 (008045;DCH505;3.15;00000)' + readable: 'Device Mosaic 5.0 on a Panasonic DCH505 Smart TV running OpenTV' + result: { browser: { name: 'Device Mosaic', family: Mosaic, version: '5.0', type: browser }, os: { name: OpenTV }, device: { type: television, manufacturer: Panasonic, model: DCH505, series: 'Smart TV' } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.0 compatible; Device Mosaic 5.0; OpenTV) InettvBrowser/1.0 (008045;MHD500;1.09;00000)' + readable: 'Device Mosaic 5.0 on a Panasonic MHD500 Smart TV running OpenTV' + result: { browser: { name: 'Device Mosaic', family: Mosaic, version: '5.0', type: browser }, os: { name: OpenTV }, device: { type: television, manufacturer: Panasonic, model: MHD500, series: 'Smart TV' } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0 compatible; Device Mosaic 5.2.2; OpenTV) InettvBrowser/2.2 (008045;PANATV1115;2.21;10000) TvpsExtInfo/A05B15 (7A050002020000BDF19E;22;F)' + readable: 'Device Mosaic 5.2.2 on a Panasonic Smart TV running OpenTV' + result: { browser: { name: 'Device Mosaic', family: Mosaic, version: 5.2.2, type: browser }, os: { name: OpenTV }, device: { type: television, manufacturer: Panasonic, series: 'Smart TV' } } +- + headers: 'User-Agent: Mozilla/5.0 ( en-us; OpenTV Build/5.1.2) AppleWebKit/537.32 (KHTML, like Gecko)' + readable: 'OpenTV 5.1.2' + result: { engine: { name: Webkit, version: '537.32' }, os: { name: OpenTV, version: 5.1.2 }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 ( en-us; OpenTV Build/5.1.2) OTVWEBKIT-AppleWebKit/537.32 (KHTML, like Gecko)' + readable: 'OpenTV 5.1.2' + result: { engine: { name: Webkit, version: '537.32' }, os: { name: OpenTV, version: 5.1.2 }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 ( Linux-OTV en-us; OpenTV Build/5.1.2) AppleWebKit/537.32 (KHTML, like Gecko)' + readable: 'OpenTV 5.1.2' + result: { engine: { name: Webkit, version: '537.32' }, os: { name: OpenTV, version: 5.1.2 }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 ( Linux; xx; OpenTV Build/5.1.2) AppleWebKit/533.1 (KHTML, like Gecko)' + readable: 'OpenTV 5.1.2' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: OpenTV, version: 5.1.2 }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 ( otvwebkit; xx; OpenTV Build/5.1.2) otvwebkit/533.1 (KHTML, like Gecko)' + readable: 'OpenTV 5.1.2' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: OpenTV, version: 5.1.2 }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux i686) AppleWebKit/534.51 (KHTML, like Gecko) Ekioh/2.2.2.6-opentv_r8986 Safari/534.51' + readable: 'Ekioh 2.2.2.6 on OpenTV' + result: { browser: { using: { name: Ekioh, version: 2.2.2.6 } }, engine: { name: Webkit, version: '534.51' }, os: { name: OpenTV }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux) AppleWebKit/534.51 (KHTML, like Gecko) Ekioh/2.2.2.6-opentv_r9086 Safari/534.51' + readable: 'Ekioh 2.2.2.6 on OpenTV' + result: { browser: { using: { name: Ekioh, version: 2.2.2.6 } }, engine: { name: Webkit, version: '534.51' }, os: { name: OpenTV }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; xx; OpenTV Build/5.1.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + readable: 'OpenTV 5.1.2' + result: { engine: { name: Webkit, version: '533.1' }, os: { name: OpenTV, version: 5.1.2 }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Opentv5; Linux mips) AppleWebKit/537.32 (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/537.32 OTVWebKit/1.0' + readable: 'an unknown browser' + result: { browser: { family: { name: Chrome, version: 25 }, type: browser }, engine: { name: Webkit, version: '537.32' }, os: { name: OpenTV, version: '5' }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Opentv5; Linux mips) AppleWebKit/538.15 (KHTML, like Gecko) Version/8.0 Safari/538.15 OTVWebKit/1.1' + readable: 'OpenTV 5' + result: { engine: { name: Webkit, version: '538.15' }, os: { name: OpenTV, version: '5' }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Spyglass 3.0; OpenTV) Gecko/20081010 InettvBrowser/1.0 (F00001;OTV-IB24L;2.4;00000),gzip(gfe),gzip(gfe),gzip(gfe)' + readable: 'Spyglass 3.0 on a Smart TV running OpenTV' + result: { browser: { name: Spyglass, version: '3.0', type: browser }, engine: { name: Gecko }, os: { name: OpenTV }, device: { type: television, series: 'Smart TV' } } +- + headers: 'User-Agent: OpenTV otvwebkit 537' + readable: OpenTV + result: { os: { name: OpenTV }, device: { type: television } } +- + headers: 'User-Agent: Otvwebkit/1.0 (Linux BMIPS5000), BCM97356B2/OTV5.1.3 (Nagra OpenTV, DS1810TEL2-500, Wired)' + readable: 'a NAGRA DS1810TEL2-500 Smart TV running OpenTV 5.1.3' + result: { engine: { name: Webkit, version: '1.0' }, os: { name: OpenTV, version: 5.1.3 }, device: { type: television, manufacturer: NAGRA, model: DS1810TEL2-500, series: 'Smart TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (OpenTV 5.1.2; xx; Galaxy Nexus Build/ICL53F) AppleWebKit/537.32 (KHTML, like Gecko) Version/4.0' + readable: 'OpenTV 5.1.2' + result: { engine: { name: Webkit, version: '537.32' }, os: { name: OpenTV, version: 5.1.2 }, device: { type: television } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/other.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/other.yaml new file mode 100644 index 0000000..f56dae8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/other.yaml @@ -0,0 +1,616 @@ +- + headers: 'User-Agent: HbbTV/1.1.1 (+DL;TechnoTrend Goerler;S-855;3.1.8.24.04.20.devel;;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)' + result: { device: { type: television, manufacturer: TechnoTrend, model: S-855 } } + readable: 'a TechnoTrend S-855' +- + headers: 'User-Agent: HbbTV/1.1.1 (+PVR;Humax;HD FOX+;1.00.12;1.0)CE-HTML/1.0 ANTGalio/3.1.1.23.04.09' + result: { browser: { name: 'ANT Galio', version: 3.1.1, type: browser }, device: { type: television, manufacturer: Humax, model: 'HD FOX+', series: 'Digital Receiver' } } + readable: 'ANT Galio 3.1.1 on a Humax HD FOX+ Digital Receiver' +- + headers: 'User-Agent: HbbTV/1.1.1 (+PVR;Humax;iCord Cable;1.01.09;1.0)CE-HTML/1.0 ANTGalio/3.1.1.23.04.09' + result: { browser: { name: 'ANT Galio', version: 3.1.1, type: browser }, device: { type: television, manufacturer: Humax, model: 'iCord Cable', series: 'Digital Receiver' } } + readable: 'ANT Galio 3.1.1 on a Humax iCord Cable Digital Receiver' +- + headers: 'User-Agent: HbbTV/1.1.1 (+PVR;Humax;iCord HD+;1.01.17;1.0)CE-HTML/1.0 ANTGalio/3.1.1.23.04' + result: { browser: { name: 'ANT Galio', version: 3.1.1, type: browser }, device: { type: television, manufacturer: Humax, model: 'iCord HD+', series: 'Digital Receiver' } } + readable: 'ANT Galio 3.1.1 on a Humax iCord HD+ Digital Receiver' +- + headers: 'User-Agent: HbbTV/1.1.1 (+PVR;Sky_worth;HC7620;2.07.12;1.0;)CE-HTML/1.0 Skykid/5.1.6.2.04' + result: { device: { type: television, manufacturer: Skyworth, model: HC7620 } } + readable: 'a Skyworth HC7620' +- + headers: 'User-Agent: HbbTV/1.1.1 (; CUS:; MB70; 1.0; 1.0;) LOH; Opera; CE-HTML/1.0 NetFront/4.1 NETRANGEMMH' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: television, model: MB70 } } + readable: 'NetFront 4.1 on a MB70' +- + headers: 'User-Agent: HbbTV/1.1.1 (; Vestel; MB70; 1.0; 1.0;) NetFront/4.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Vestel, model: MB70 } } + readable: 'NetFront 4.1 on a Vestel MB70' +- + headers: 'User-Agent: HbbTV/1.1.1 (;;;;;) NETRANGEMMH sraf_tv_browser webkitMozilla/5.0 (Unknown; Linux mips) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.36' + result: { browser: { name: 'Seraphic Sraf', using: 'Chrome Content Shell', type: browser }, engine: { name: Webkit, version: '537.36' }, device: { type: television } } + readable: 'Seraphic Sraf on a television' +- + headers: 'User-Agent: HbbTV/1.1.1 (;HyperPanel;EN2000 ;9.wk.92;4.4.2; ) LOH; Opera; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, device: { type: television, manufacturer: HyperPanel, model: EN2000 } } + readable: 'NetFront NX 2.1 on a HyperPanel EN2000' +- + headers: 'User-Agent: HbbTV/1.1.1 (;HyperPanel;dsi1076 02-AA-55-AA-56-26;9.wr.28;4.4.7;;) LOH; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, device: { type: television, manufacturer: HyperPanel, model: DSI1076 } } + readable: 'NetFront NX 2.1 on a HyperPanel DSI1076' +- + headers: 'User-Agent: HbbTV/1.1.1 (;HyperPanel;dsi1076 02-AA-55-AA-56-26;9.wr.28;4.4.7;;) LOH; Opera; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, device: { type: television, manufacturer: HyperPanel, model: DSI1076 } } + readable: 'NetFront NX 2.1 on a HyperPanel DSI1076' +- + headers: 'User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr7105 00-00-00-00-00-00;9.26.01;2502-B234A;) LOH; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, device: { type: television, manufacturer: HyperPanel, model: DTR7105 } } + readable: 'NetFront NX 2.1 on a HyperPanel DTR7105' +- + headers: 'User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr7105 02-AA-55-AA-58-3B;9.23.04;4.4.6;;) NetFront/4.1 CE-HTML Opera' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: HyperPanel, model: DTR7105 } } + readable: 'NetFront 4.1 on a HyperPanel DTR7105' +- + headers: 'User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr7105 02-AA-55-AA-58-3B;9.wr.33;4.5.2;) LOH; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, device: { type: television, manufacturer: HyperPanel, model: DTR7105 } } + readable: 'NetFront NX 2.1 on a HyperPanel DTR7105' +- + headers: 'User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr77 00-00-00-00-00-00;9.wr.28;2502-B234A;;) LOH; Opera; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, device: { type: television, manufacturer: HyperPanel, model: DTR77 } } + readable: 'NetFront NX 2.1 on a HyperPanel DTR77' +- + headers: 'User-Agent: HbbTV/1.1.1 (;IP4TV;DXD5505;1.0;1.0;)' + result: { device: { type: television, manufacturer: IP4TV, model: DXD5505 } } + readable: 'an IP4TV DXD5505' +- + headers: 'User-Agent: HbbTV/1.1.1 (NETRANGEMMH sraf_tv_browser webkitMozilla/5.0 (Unknown; Linux mips) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.36) FXM-U2FsdGVkX1/tdIdmThx556OcX2OvLYJ7xZ4szfWJhVJaKuyMPSh2dCfn+cBdncw9-END' + result: { browser: { name: 'Seraphic Sraf', using: 'Chrome Content Shell', type: browser }, engine: { name: Webkit, version: '537.36' }, device: { type: television } } + readable: 'Seraphic Sraf on a television' +- + headers: 'User-Agent: HbbTV/1.2.1 (+DL+PVR+DRM;Sky_worth;HC7620;2.07.12;1.0;)CE-HTML/1.0 Skykid/5.1.6.2.04' + result: { device: { type: television, manufacturer: Skyworth, model: HC7620 } } + readable: 'a Skyworth HC7620' +- + headers: 'User-Agent: HbbTV/1.2.1 (+DL; SmarD TV; TCL; 1.32.455; 2.002; WOTV/0.1; SmartTvA/3.0.0.0;)' + result: { device: { type: television, manufacturer: 'SmarD TV', model: TCL } } + readable: 'a SmarD TV TCL' +- + headers: 'User-Agent: HbbTV/1.2.1 (OITF_HD_UIPROF+PVR+DL; UEC; PVR9600; 1.0.6053; 1.0)' + result: { device: { type: television, manufacturer: UEC, model: PVR9600 } } + readable: 'an UEC PVR9600' +- + headers: 'User-Agent: HtmlRenderer/x.y (Technicolor_DXI807FT; U; Linux i686; xx) QtWebKit/2.2.z' + result: { engine: { name: Webkit, version: 2.2. }, device: { type: television, manufacturer: Technicolor, model: DXI807FT } } + readable: 'a Technicolor DXI807FT' +- + headers: 'User-Agent: Kodi/14.0 (Macintosh; Intel Mac OS X 10_10_3) App_Bitness/64 Version/14.0-Git:2014-12-23-ad747d9-dirty' + result: { browser: { name: Kodi, version: '14.0', type: 'app:mediaplayer' }, os: { name: 'OS X', version: { value: '10.10', nickname: Yosemite } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Kodi 14.0 on OS X Yosemite 10.10' +- + headers: 'User-Agent: LOEWE/TV HBBTV/1.0 CE-HTML/1.0 SL150/14.16.0' + result: { device: { type: television, manufacturer: Loewe, model: 'Connect SL150', series: 'Smart TV' } } + readable: 'a Loewe Connect SL150 Smart TV' +- + headers: 'User-Agent: LOEWE/TV HbbTV/1.1.1 (+PVR; Loewe; SL121; LOH;;) CE-HTML/1.0 SL121/16.16.0' + result: { device: { type: television, manufacturer: Loewe, model: 'Connect SL121', series: 'Smart TV' } } + readable: 'a Loewe Connect SL121 Smart TV' +- + headers: 'User-Agent: LOEWE/TV HbbTV/1.1.1 CE-HTML/1.0 SL121/16.16.0' + result: { device: { type: television, manufacturer: Loewe, model: 'Connect SL121', series: 'Smart TV' } } + readable: 'a Loewe Connect SL121 Smart TV' +- + headers: 'User-Agent: Mozilla/3.0 WebTV/1.2 (compatible; MSIE 2.0)' + result: { browser: { name: 'Internet Explorer', version: '2.0', type: browser }, device: { type: television, manufacturer: Microsoft, model: WebTV } } + readable: 'Internet Explorer 2.0 on a Microsoft WebTV' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; inverto; IDL 6654N Volksbox Web Edition +; 1.0; 1.0;) hdplusinteraktiv/1.0 (NETRANGEMMH;) CE-HTML/1.0' + result: { engine: { name: Webkit, version: '534.6' }, device: { type: television, manufacturer: Inverto, model: 'IDL 6654N Volksbox Web Edition +' } } + readable: 'an Inverto IDL 6654N Volksbox Web Edition +' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; inverto; IDL-6651N Volksbox Web Edition; 1.0; 1.0;) hdplusinteraktiv/1.0 (NETRANGEMMH;) CE-HTML/1.0' + result: { engine: { name: Webkit, version: '534.6' }, device: { type: television, manufacturer: Inverto, model: 'IDL 6651N Volksbox Web Edition' } } + readable: 'an Inverto IDL 6651N Volksbox Web Edition' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; selevision; Selevision EMC1000i; 1.0; 1.0;) CE-HTML/1.0' + result: { engine: { name: Webkit, version: '534.6' }, device: { type: television, manufacturer: Selevision, model: EMC1000i } } + readable: 'a Selevision EMC1000i' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; smart; CX10; 1.0; 1.0;) CE-HTML/1.0' + result: { engine: { name: Webkit, version: '534.6' }, device: { type: television, manufacturer: Smart, model: CX10 } } + readable: 'a Smart CX10' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; smart; ZAPPIX HD+; 1.0; 1.0;) CE-HTML/1.0' + result: { engine: { name: Webkit, version: '534.6' }, device: { type: television, manufacturer: Smart, model: 'ZAPPIX HD+' } } + readable: 'a Smart ZAPPIX HD+' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.6 HbbTV/1.1.1 (+DL+PVR; inverto; QUANTUM - IDL9000; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)' + result: { engine: { name: Webkit, version: '538.6' }, device: { type: television, manufacturer: Inverto, model: 'IDL 9000' } } + readable: 'an Inverto IDL 9000' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; Inverto; Volksbox; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH)' + result: { engine: { name: Webkit, version: '538.8' }, device: { type: television, manufacturer: Inverto, model: Volksbox } } + readable: 'an Inverto Volksbox' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; inverto; IDL-6651N Volksbox Web Edition; 1.0; 1.0;) CE-HTML/1.0' + result: { engine: { name: Webkit, version: '538.8' }, device: { type: television, manufacturer: Inverto, model: 'IDL 6651N Volksbox Web Edition' } } + readable: 'an Inverto IDL 6651N Volksbox Web Edition' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; inverto; QUANTUM - IDL9000; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)' + result: { engine: { name: Webkit, version: '538.8' }, device: { type: television, manufacturer: Inverto, model: 'IDL 9000' } } + readable: 'an Inverto IDL 9000' +- + headers: 'User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; selevision; Selevision EMC1000i; 1.0; 1.0;) CE-HTML/1.0' + result: { engine: { name: Webkit, version: '538.8' }, device: { type: television, manufacturer: Selevision, model: EMC1000i } } + readable: 'a Selevision EMC1000i' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux sh4) AppleWebKit/537.6+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/537.6+HbbTV/1.1.1 (;iWedia;Teatro;3.0;;)' + result: { browser: { family: { name: Chrome, version: 17 }, type: browser }, engine: { name: Webkit, version: '537.6' }, device: { type: television, manufacturer: iWedia, model: Teatro } } + readable: 'an iWedia Teatro' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; Linux sh4) AppleWebKit/537.6+ (KHTML, like Gecko) Safari/537.6+HbbTV/1.1.1 (;iWedia;Teatro;3.0;;)' + result: { engine: { name: Webkit, version: '537.6' }, device: { type: television, manufacturer: iWedia, model: Teatro } } + readable: 'an iWedia Teatro' +- + headers: 'User-Agent: Mozilla/5.0 (DirectFB; U; Linux mips; c) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ (Winbox Evo2) CE-HTML/1.0 HbbTV/1.1.1 (;;;;)' + result: { engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Winbox, model: Evo2 } } + readable: 'a Winbox Evo2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv9; U; xx) AppleWebKit/537.17 (KHTML, like Gecko) HbbTV/1.1.1 (;Mstar;MWB;Arcelik;KY;)' + result: { engine: { name: Webkit, version: '537.17' }, device: { type: television, manufacturer: MStar, model: PVR } } + readable: 'a MStar PVR' +- + headers: 'User-Agent: Mozilla/5.0 (Linux i686; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 SRAF/3.0 HbbTV/1.1.1 (+DRM+TRICKMODE; SERAPHIC; TV101; sw-v1.0; hw-v1.0) CE-HTML/1.0 FXM-U2FsdGVkX1+tH+IvjK4AyJIfuJUAyORg8ptl86EQiyLy7LytAiEgU3mKjwgF90uz-END' + result: { browser: { name: 'Seraphic Sraf', family: { name: Chrome, version: 30 }, version: '3.0', type: browser }, engine: { name: Blink }, device: { type: television } } + readable: 'Seraphic Sraf 3.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Linux i686; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 SRAF/3.0 HbbTV/1.1.1 (CHANGHONG; TV55; sw-v1.0;) CE-HTML/1.0 NETRANGEMMH' + result: { browser: { name: 'Seraphic Sraf', family: { name: Chrome, version: 30 }, version: '3.0', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Changhong, model: TV55 } } + readable: 'Seraphic Sraf 3.0 on a Changhong TV55' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mips; U;HbbTV/1.1.1 (+RTSP;DMM;Dreambox;0.1a;1.0;) CE-HTML/1.0; xx) AppleWebKit/535.19 no/Volksbox QtWebkit/2.2' + result: { engine: { name: Webkit, version: '535.19' }, device: { type: television, manufacturer: DMM, model: Dreambox } } + readable: 'a DMM Dreambox' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; fr-fr; STOREX LinkBox Build/20120103) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: television, manufacturer: Storex, model: LinkBox } } + readable: 'Android Browser on a Storex LinkBox running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (MediStream; U; KHTML, like Gecko; Mobile) NetFrontNX/3.0.2' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, device: { type: television, manufacturer: Bewatec, model: MediStream } } + readable: 'NetFront NX 3.0 on a Bewatec MediStream' +- + headers: 'User-Agent: Mozilla/5.0 (QtEmbedded; Linux) AppleWebKit/534.34 (KHTML, like Gecko) kazoku/0.2 Safari/534.34 (ADB; L28YTNRA)' + result: { browser: { using: Qt }, engine: { name: Webkit, version: '534.34' }, device: { type: television, manufacturer: ADB, model: 'L28YTNRA IPTV receiver' } } + readable: 'Qt on an ADB L28YTNRA IPTV receiver' +- + headers: 'User-Agent: Mozilla/5.0 (QtEmbedded; Linux) AppleWebKit/534.34 (KHTML, like Gecko) kazoku/0.2 Safari/534.34 (ADB; TNR-5720CDX)' + result: { browser: { using: Qt }, engine: { name: Webkit, version: '534.34' }, device: { type: television, manufacturer: ADB, model: 'TNR-5720CDX IPTV receiver' } } + readable: 'Qt on an ADB TNR-5720CDX IPTV receiver' +- + headers: 'User-Agent: Mozilla/5.0 (QtEmbedded; Linux) AppleWebKit/537.4 (KHTML, like Gecko) MWB/1.0 Safari/537.4 HbbTV/1.2.1 (+PVR+DRM; Mstar; MWB;;;)' + result: { browser: { using: Qt }, engine: { name: Webkit, version: '537.4' }, device: { type: television, manufacturer: MStar, model: PVR } } + readable: 'Qt on a MStar PVR' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux mips) AppleWebKit/534.16+ (KHTML, like Gecko) Version/5.0 Safari/534.16+ IrisBrowser/4.0.17.1 HbbTV/1.2.1 (;Digisoft.tv;Iris;4.0.17.1;;)' + result: { engine: { name: Webkit, version: '534.16' }, device: { type: television, manufacturer: Digisoft.tv, model: Iris } } + readable: 'a Digisoft.tv Iris' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.11 HbbTV/1.1.1 (+DL+PVR; inverto; AIRSCREEN-MBN108; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)' + result: { engine: { name: Webkit, version: '538.11' }, device: { type: television, manufacturer: Inverto, model: 'MBN 108' } } + readable: 'an Inverto MBN 108' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.11 HbbTV/1.1.1 (+DL+PVR; inverto; QUANTUM-MBN106; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)' + result: { engine: { name: Webkit, version: '538.11' }, device: { type: television, manufacturer: Inverto, model: 'MBN 106' } } + readable: 'an Inverto MBN 106' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; Inverto; Volksbox; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH)' + result: { engine: { name: Webkit, version: '538.8' }, device: { type: television, manufacturer: Inverto, model: Volksbox } } + readable: 'an Inverto Volksbox' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; inverto; QUANTUM - IDL9000; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)' + result: { engine: { name: Webkit, version: '538.8' }, device: { type: television, manufacturer: Inverto, model: 'IDL 9000' } } + readable: 'an Inverto IDL 9000' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; selevision; Selevision EMC1000i; 1.0; 1.0;) CE-HTML/1.0' + result: { engine: { name: Webkit, version: '538.8' }, device: { type: television, manufacturer: Selevision, model: EMC1000i } } + readable: 'a Selevision EMC1000i' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Boxee/1.0.1 bxapi/7.1' + result: { browser: { name: Boxee, version: 1.0.1, type: 'app:mediaplayer' }, engine: { name: Webkit, version: '533.4' }, device: { type: television } } + readable: 'Boxee 1.0.1 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/533.4 (KHTML, like Gecko) Boxee/1.0.1 bxapi/7.1' + result: { browser: { name: Boxee, version: 1.0.1, type: 'app:mediaplayer' }, engine: { name: Webkit, version: '533.4' }, device: { type: television } } + readable: 'Boxee 1.0.1 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/534.1 (KHTML, like Gecko) HbbTV/1.1.1 (;Mstar;OWB;Arcelik;J5;)' + result: { engine: { name: Webkit, version: '534.1' }, device: { type: television, manufacturer: MStar, model: PVR } } + readable: 'a MStar PVR' +- + headers: 'User-Agent: Opera/10.60 (Linux i686 ; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat MultyVision ISIO; de) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: TechniSat, model: 'MultyVision ISIO' } } + readable: 'Opera Devices 2.8 on a TechniSat MultyVision ISIO' +- + headers: 'User-Agent: Opera/10.60 (Linux sh4 ; U; HbbTV/1.1.1 (+PVR; Loewe; SL121; LOH/3.10;;) CE-HTML/1.0 Config(L:deu,CC:DEU); xx) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Loewe, model: 'Connect SL121', series: 'Smart TV' } } + readable: 'Opera Devices 2.8 on a Loewe Connect SL121 Smart TV' +- + headers: 'User-Agent: Opera/10.60 (Linux sh4 ; U; HbbTV/1.1.1 (+PVR; Loewe; SL150; LOH/3.10;;) CE-HTML/1.0 Config(L:deu,CC:DEU); en) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Loewe, model: 'Connect SL150', series: 'Smart TV' } } + readable: 'Opera Devices 2.8 on a Loewe Connect SL150 Smart TV' +- + headers: 'User-Agent: Opera/10.60 (Linux sh4 ; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat DIGIT ISIO S; en) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: TechniSat, model: 'DIGIT ISIO S' } } + readable: 'Opera Devices 2.8 on a TechniSat DIGIT ISIO S' +- + headers: 'User-Agent: Opera/9.80 (Linux 7325b0; U; HbbTV/1.1.1 (; Humax; HD NANO; 1.00.16; 1.0; ); ce-html/1.0; en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Humax, model: 'HD NANO', series: 'Digital Receiver' } } + readable: 'Opera Devices 3.1 on a Humax HD NANO Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux 7325b0; U; HbbTV/1.1.1 (; Humax; IR2000HD; 1.01.06; 1.0; ); ce-html/1.0; xx) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Humax, model: IR2000HD, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.1 on a Humax IR2000HD Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux 7325b0; U; HbbTV/1.1.1 (; Humax; IRHD-5100S; 1.01.26; 1.0; ); ce-html/1.0; en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Humax, model: IRHD-5100S, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.1 on a Humax IRHD-5100S Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux 7335b0-smp; U; HbbTV/1.1.1 (; Humax; iCord MINI; 0.90.02; 1.0; ); ce-html/1.0; en) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Humax, model: 'iCord MINI', series: 'Digital Receiver' } } + readable: 'Opera Devices 3.2 on a Humax iCord MINI Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux 7335b0-smp; U; HbbTV/1.1.1 (; Humax; iCord MINI; 1.00.33; 1.0; hdplusSmartTV/1.0 (NETRANGEMMH; )); ce-html/1.0; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Humax, model: 'iCord MINI', series: 'Digital Receiver' } } + readable: 'Opera Devices 3.2 on a Humax iCord MINI Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux 7405b0-smp; U; HbbTV/1.1.1 (; Humax; HD 7000i; 1.00.36; 1.0; ); ce-html/1.0; xx) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Humax, model: 'HD 7000i', series: 'Digital Receiver' } } + readable: 'Opera Devices 3.1 on a Humax HD 7000i Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux 7405b0-smp; U; HbbTV/1.1.1 (; Humax; HD-FOX-C/DELTA; 1.00.01; 1.0; ); ce-html/1.0; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Humax, model: HD-FOX-C/DELTA, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.2 on a Humax HD-FOX-C/DELTA Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;IKEA LF1V358; en) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: IKEA, model: LF1V358, series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on an IKEA LF1V358 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;PEAQ LF1V350; en) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: PEAQ, model: LF1V350, series: 'Smart TV' } } + readable: 'Opera Devices 3.0 on a PEAQ LF1V350 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;TCL LF1V349; en) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: TCL, model: LF1V349, series: 'Smart TV' } } + readable: 'Opera Devices 3.0 on a TCL LF1V349 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;THOM LF1V375; en) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Thomson, model: LF1V375, series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Thomson LF1V375 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;THOMSON LF1V017; en) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Thomson, model: LF1V017, series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Thomson LF1V017 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; LOEWE; SL32x; LOH/0.3.5.0;;) CE-HTML/1.0 Config(L:ger,CC:DE) NETRANGEMMH) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Loewe, model: 'Connect SL32', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Loewe Connect SL32 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; HbbTV/1.1.1 (; INTEK; VANTAGE-ibox; 1.0; 1.0;) CE-HTML/1.0; FXM-U2FsdGVkX1+SeQgKwMxDHwbkH5VtZb8Wpivfvs2Rqd0yf/FVDeLDABtbH9UngCaD-END; xx) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: INTEK, model: VANTAGE-ibox } } + readable: 'Opera Devices 3.1 on an INTEK VANTAGE-ibox' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; HbbTV/1.1.1 (;tv2n;videoweb;1.0.0;1.0;); xx) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: TV2N, model: Videoweb } } + readable: 'Opera Devices 3.0 on a TV2N Videoweb' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;Vendor/JVC;SW-Version/V8-MT51F07-LF1V309;Cnt/DNK;Lan/dan) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: JVC, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;Vendor/JVC;SW-Version/V8-MT51F07-LF1V309;Cnt/DNK;Lan/dan) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: JVC, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;Vendor/THOMSON;SW-Version/V8-MT51F01-LF1V419;Cnt/GBR;Lan/eng) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Thomson, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;Vendor/THOMSON;SW-Version/V8-MT51F01-LF1V419;Cnt/GBR;Lan/eng) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Thomson, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; HbbTV/1.1.1 (+PVR+DRM; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/4.3.9) Presto/2.12.407 Version/12.50 A3/1.0.3.30552 (BANGOLUFSEN, A3, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: 'Bang & Olufsen', model: A3, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Bang & Olufsen A3 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; HbbTV/1.1.1 (+PVR+DRM; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/4.3.9) Presto/2.12.407 Version/12.50 A3/1.0.5.32855 (BANGOLUFSEN, A3, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: 'Bang & Olufsen', model: A3, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Bang & Olufsen A3 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; HbbTV/1.1.1 (+PVR; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/4.3.9) Presto/2.12.407 Version/12.50 A3/1.0.5.33043 (BANGOLUFSEN, A3, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: 'Bang & Olufsen', model: A3, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Bang & Olufsen A3 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; HbbTV/1.1.1 (+PVR; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/4.3.9) Presto/2.12.407 Version/12.50 A3/1.0.5.33981 (BANGOLUFSEN, A3, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: 'Bang & Olufsen', model: A3, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Bang & Olufsen A3 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; ) Presto/2.12.407 Version/12.51 HbbTV/1.1.1 (; Vestel; S7720; 1.0; 1.0;)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Vestel, model: S7720 } } + readable: 'Opera Devices 3.4 on a Vestel S7720' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; ) Presto/2.12.407 Version/12.51 MB95/3.3.6.k (MEDION, Si2157LG32, wired) HbbTV/1.1.1 (; MEDION; MB90; 3.3.6.k; 1.0;) CE-HTML/1.0 FXM-U2FsdGVkX1+oZew0140/QGladdDUZDDIO4+B71P3Onne0Z4OH8l/qzolGsZMPYPk-END' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Medion, model: MB90, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Medion MB90 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; HbbTV/1.2.1 (; Freesat/1.0; hdr1000s; 1.0.0; 1.0.0; wired); ce-html/1.0) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Humax, model: HDR-1000S, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.4 on a Humax HDR-1000S Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; HbbTV/1.2.1 (PVR; jcom; WA-7000; 1.0.0; 1.0.0; ); ce-html/1.0) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: jcom, model: WA-7000 } } + readable: 'Opera Devices 3.4 on a jcom WA-7000' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; Opera TV Store/5477) Presto/2.12.362 Version/12.10 Model/Changhong-MST6328' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television } } + readable: 'Opera Devices 3.4 on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; Opera TV Store/5547; HbbTV/1.1.1 (PVR; Humax; hms1000s; 1.0.0; 1.0.0; UX-PRISM--OP-NONE); ce-html/1.0) Presto/2.12.362 Version/12.10' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Humax, model: HMS-1000S, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.4 on a Humax HMS-1000S Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; Opera TV Store/5896; HbbTV/1.2.1 (PVR; freesat/1.0; hms1000sph2; 1.0.0; 1.0.0; UX-PRISM--OP-NONE); ce-html/1.0) Presto/2.12.407 Version/12.50 Model/Humax-TestingDevice' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Humax, model: HMS-1000S, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.4 on a Humax HMS-1000S Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; Opera TV Store/5921; HbbTV/1.2.1 (PVR; Humax; hms1000sph2; DESFAB 1.01.01; 1.0.0; wired; UX-PRISM--OP-NONE); ce-html/1.0) Presto/2.12.407 Version/12.50 Model/Humax-TestingDevice' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Humax, model: HMS-1000S, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.4 on a Humax HMS-1000S Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (+PVR; Humax; hgs1000s; DESNAG 0.90.10; 1.0.0; wired; UX-PRISM--OP-SES; hdplusSmartTV/1.0 (NETRANGEMMH; )); ce-html/1.0) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Humax, model: HGS-1000S, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.4 on a Humax HGS-1000S Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; Opera TV Store/6162; HbbTV/1.2.1 (; Altech UEC; PVR9600; ; ; )) Presto/2.12.407 Version/12.51 Model/AltechMultimedia-TestingDevice' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: 'Altech UEC', model: PVR9600 } } + readable: 'Opera Devices 3.4 on an Altech UEC PVR9600' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:EUROFIX; S7700; 1.0; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: EUROFIX, model: S7700 } } + readable: 'Opera Devices 3.2 on an EUROFIX S7700' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:OEM; MB90; 0.6.8; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, model: MB90 } } + readable: 'Opera Devices 3.2 on a MB90' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:TELEFUNKEN; MB95; 1.0; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Telefunken, model: MB95 } } + readable: 'Opera Devices 3.2 on a Telefunken MB95' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:VESTEL; MB95; 3.1.8; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Vestel, model: MB95 } } + readable: 'Opera Devices 3.2 on a Vestel MB95' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; VESTEL; MB90; 1.0; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Vestel, model: MB90 } } + readable: 'Opera Devices 3.2 on a Vestel MB90' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; Vestel; MB95; 1.0; 1.0;)' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Vestel, model: MB95 } } + readable: 'Opera Devices 3.2 on a Vestel MB95' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (+PVR+RTSP;Airties;Air7210;16999168;;); xx) Presto/2.10.287 Version/12.00' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Airties, model: Air7210 } } + readable: 'Opera Devices 3.2 on an Airties Air7210' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Humax; HM-9504HD; 0.01.06; 1.0; scrlgnnew; ); ce-html/1.0; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Humax, model: HM-9504HD, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.2 on a Humax HM-9504HD Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Humax; hdr1000s; 1.0.0; 1.0.0; ); ce-html/1.0; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Humax, model: HDR-1000S, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.2 on a Humax HDR-1000S Digital Receiver' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;TCL LF1V042; en) Presto/2.10.287 Version/12.00' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: TCL, model: LF1V042, series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a TCL LF1V042 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (connect; 140223_0132_b6) CE-HTML/1.0 NETRANGEMMH' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: 'Dune HD', model: Connect } } + readable: 'Opera Devices 3.2 on a Dune HD Connect' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (polskytv__tv102; 130527_1328_b5) CE-HTML/1.0 NETRANGEMMH' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: 'Dune HD', model: TV-102 } } + readable: 'Opera Devices 3.2 on a Dune HD TV-102' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (tv102; 130515_2104_b6) CE-HTML/1.0 NETRANGEMMH' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: 'Dune HD', model: TV-102 } } + readable: 'Opera Devices 3.2 on a Dune HD TV-102' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (tv303d; 130515_2104_b6) CE-HTML/1.0 NETRANGEMMH' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: 'Dune HD', model: TV-303D } } + readable: 'Opera Devices 3.2 on a Dune HD TV-303D' +- + headers: 'User-Agent: Opera/9.80 (Linux mn10300; U; HbbTV/1.1.1 (+PVR; Panasonic; DIGA M9031; 3.030; ; ); en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Panasonic, series: Diga } } + readable: 'Opera Devices 3.1 on a Panasonic Diga' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (+PVR; Loewe; SL150; LOH/3.10;;) CE-HTML/1.0 Config(L:slv,CC:DEU); en) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Loewe, model: 'Connect SL150', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Loewe Connect SL150 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (; INTEK; VT-100 HD+;;;) hdplusSmartTV/1.0 (NETRANGEMMH;) Bee/3.2 CE-HTML/1.0; en) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: INTEK, model: 'VT-100 HD+' } } + readable: 'Opera Devices 3.2 on an INTEK VT-100 HD+' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat DigiCorder ISIO C; xx) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: TechniSat, model: 'DigiCorder ISIO C' } } + readable: 'Opera Devices 3.1 on a TechniSat DigiCorder ISIO C' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat Digit ISIO C; xx) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: TechniSat, model: 'Digit ISIO C' } } + readable: 'Opera Devices 3.1 on a TechniSat Digit ISIO C' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat Digit ISIO S; xx) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: TechniSat, model: 'Digit ISIO S' } } + readable: 'Opera Devices 3.1 on a TechniSat Digit ISIO S' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1(;;;;;); CE-HTML; TechniSat DIGIT ISIO S; xx) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: TechniSat, model: 'DIGIT ISIO S' } } + readable: 'Opera Devices 3.0 on a TechniSat DIGIT ISIO S' +- + headers: 'User-Agent: Sraf/3.0 (Linux i686 ; U; HbbTV/1.1.1 (+PVR+DL;NEXUS; TV44; sw1.0) CE-HTML/1.0 Config(L:eng,CC:DEU); en/de)' + result: { browser: { name: 'Seraphic Sraf', version: '3.0', type: browser }, device: { type: television, manufacturer: NEXUS, model: TV44 } } + readable: 'Seraphic Sraf 3.0 on a NEXUS TV44' +- + headers: 'User-Agent: XBMC/PRE-11.0 Git:20110623-62171b3 (iOS; 11.0.0 AppleTV2,1; http://www.xbmc.org)' + result: { browser: { name: XBMC, version: '11.0', type: 'app:mediaplayer' }, device: { type: television, manufacturer: Apple, model: AppleTV } } + readable: 'XBMC 11.0 on an AppleTV' +- + headers: 'User-Agent: Mozilla/4.0 WebTV/2.8 (compatible; MSIE 4.0)' + result: { browser: { name: 'Internet Explorer', version: '4.0', type: browser }, device: { type: television, manufacturer: Microsoft, model: WebTV } } + readable: 'Internet Explorer 4.0 on a Microsoft WebTV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; Media-Highway Evolution/CI.0220(08.02.03); like Gecko; TV) NetFront/4.2' + result: { browser: { name: NetFront, version: '4.2', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Cisco, model: MediaHighway } } + readable: 'NetFront 4.2 on a Cisco MediaHighway' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; Media-Highway Evolution/CI.0244(05.01.05); like Gecko; TV) NetFront/3.5' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Cisco, model: MediaHighway } } + readable: 'NetFront 3.5 on a Cisco MediaHighway' +- + headers: 'User-Agent: opera/9.80, DI384 TKC/0.5.20(Sagemcom_Broadband_SAS,DI384_UHD_TKC,Wired)' + result: { browser: { name: 'Opera Devices', type: browser }, device: { type: television, manufacturer: Sagemcom, model: DI384 } } + readable: 'Opera Devices on a Sagemcom DI384' +- + headers: 'User-Agent: opera/9.80, M350/0.1.46_flash (Sagemcom_Broadband_SAS,DIW350_TP,Wired)' + result: { browser: { name: 'Opera Devices', type: browser }, device: { type: television, manufacturer: Sagemcom, model: DIW350 } } + readable: 'Opera Devices on a Sagemcom DIW350' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; changhong TV) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19,STB/01.00.00.01(changhong,dvb,wired)' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: television, manufacturer: Changhong, series: 'Smart TV' } } + readable: 'Chrome 18 on a Changhong Smart TV running Android 4.1.1' +- + headers: 'User-Agent: HbbTV/1.1.1 (+PVR; ADB; undefined-model-name; undefined-software-version; undefined-hardware-version; )' + result: { device: { type: television, manufacturer: ADB } } + readable: 'an ADB' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; HbbTV/1.3.1 (PVR; Humax; hdr4000t; UKTFAE 0.99.23; 1.0.0; wired;); ce-html/1.0) Presto/2.12.407 Version/12.50 FVC/1.0 (Humax; hdr4000t;) (Core 2.12.407)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Humax, model: HDR-4000T, series: 'Digital Receiver' } } + readable: 'Opera Devices 3.4 on a Humax HDR-4000T Digital Receiver' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 OPR/22.0.1481.0 OMI/4.2.12.31.Vespa2.0 MB100/0.0.20.0 (OEM, Si2158LG32, wired) HbbTV/1.2.1 (; CUS:OEM; MB100; 0.0.20.0; 1.0;) CE-HTML/1.0 NETRANGEMMH ipl' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 35 }, version: '4.2', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: OEM, model: MB100, series: 'Smart TV' } } + readable: 'Opera Devices 4.2 on an OEM MB100 Smart TV' +- + headers: 'User-Agent: HbbTV/1.1.1 ( PVR RTSP;vendorName;modelName;3.2.0.25.05.devel;hw_v_1_1_1;) ANTGalio/3.2.0.25.05.devel.50029' + result: { browser: { name: 'ANT Galio', version: 3.2.0, type: browser }, device: { type: television } } + readable: 'ANT Galio 3.2.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (avdn/onyx.stb.2010; avui/tv; avvp/ssl; avrt/cehtml; avkb/pc,B:1572866; avst/off; Onyx Windows; U; Windows NT 5.1; xx; rv:1.8.1.13) CE-HTML/1.0 OreganMediaBrowser/4.25.2' + result: { browser: { name: 'Oregan Browser', version: '4.25', type: browser }, device: { type: television } } + readable: 'Oregan Browser 4.25 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux mips) AppleWebkit/536.7 (KHTML, like Gecko) WebShell/1.0.0.0 Safari/536.7 (avvp/ssl; avui/tv; avkb/pc; avrt/html5; avst/off) CE-HTML/1.0 OreganMediaBrowser' + result: { browser: { name: 'Oregan Browser', type: browser }, engine: { name: Webkit, version: '536.7' }, device: { type: television } } + readable: 'Oregan Browser on a television' +- + headers: 'User-Agent: Mozilla/5.0 (N; Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) AwoX Browser CE-HTML/1.0 ()/AwoX-Software:W37-2011 Safari/534.34' + result: { browser: { name: AwoX, type: browser }, engine: { name: Webkit, version: '534.34' }, device: { type: television } } + readable: 'AwoX on a television' +- + headers: 'User-Agent: Mozilla/5.0 (N; Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) AwoX/1.0 Browser CE-HTML (HD_UIPROF MP3 MPEG_TS_SD_NA_T) - FLA Safari/534.34' + result: { browser: { name: AwoX, version: '1.0', type: browser }, engine: { name: Webkit, version: '534.34' }, device: { type: television } } + readable: 'AwoX 1.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; N; Windows NT 6.1; xx) AppleWebKit/533.3 (KHTML, like Gecko) AwoX Browser CE-HTML/1.0 ()/AwoX-Software:W37-2011 Safari/533.3' + result: { browser: { name: AwoX, type: browser }, engine: { name: Webkit, version: '533.3' }, device: { type: television } } + readable: 'AwoX on a television' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; N; Windows NT 6.1; xx) AppleWebKit/533.3 (KHTML, like Gecko) AwoX/1.0 Browser CE-HTML (HD_UIPROF MP3 MPEG_TS_SD_NA_T) - FLA Safari/533.3' + result: { browser: { name: AwoX, version: '1.0', type: browser }, engine: { name: Webkit, version: '533.3' }, device: { type: television } } + readable: 'AwoX 1.0 on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 UID(00:1C:A8:A0:2D:46/IP7600/OEM/3)+CE-HTML;MEM:LOW' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, model: IP7600 } } + readable: 'Opera Devices 3.2 on an IP7600' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 UID(00:0a:2d:71:5b:b6/T7670/VESTEL/1.0)+CE-HTML' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Vestel, model: T7670 } } + readable: 'Opera Devices 3.2 on a Vestel T7670' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 UID(00:09:DF:2B:67:C2/MB95/HOTEL/8.1.9.b)+CE-HTML;MEM:HIGH' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: HOTEL, model: MB95 } } + readable: 'Opera Devices 3.2 on a HOTEL MB95' +- + headers: 'User-Agent: Opera/9.80 Presto/2.12.407 Version/12.51 UID(00:09:df:33:55:78/S7830/VESTEL/332.8)+CE-HTML;MEM:HIGH' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Vestel, model: S7830 } } + readable: 'Opera Devices 3.4 on a Vestel S7830' +- + headers: 'User-Agent: UID(00:09:df:01:c0:c1/MB70/TECHWOOD/0.11.14)+CE-HTML' + result: { device: { type: television, manufacturer: TECHWOOD, model: MB70 } } + readable: 'a TECHWOOD MB70' +- + headers: 'User-Agent: HbbTV/1.1.1 (;TechnoTrend Goerler/Kathrein;S-855/S-955/UFS-925;3.2.0.25.08;;) CE-HTML/1.0 (<profilelist><ui_profile name="HYBRID_UIPROF_0.1"><ext><hscroll>true</hscroll></ext></ui_profile><audio_profile type="audio/mpeg" name="MP3"/><audio_profile type="' + result: { device: { type: television, manufacturer: TechnoTrend, model: S-855/S-955/UFS-925 } } + readable: 'a TechnoTrend S-855/S-955/UFS-925' +- + headers: 'User-Agent: InettvBrowser/1.0 (00A0B0;VIP1200J;001;000) TvpsExtInfo/A07F91 (6A07000000000001;10) (compatible; MSIE 6.0; Win32)' + result: { browser: { type: browser }, device: { type: television, manufacturer: 'I-O Data Device', series: 'Smart TV' } } + readable: 'an I-O Data Device Smart TV' +- + headers: 'User-Agent: Mozilla/4.08(DTV;NetTV/1.0) NetFront/3.1 InettvBrowser/1.0(000024;JC-4000;000;000)' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: 'Connect AS', series: 'Smart TV' } } + readable: 'NetFront 3.1 on a Connect AS Smart TV' +- + headers: 'User-Agent: Mozilla/4.08 (DTV;NetTV/1.0) NetFront/3.1 InettvBrowser/1.0(0050C9;010;001;000)' + result: { browser: { name: NetFront, version: '3.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: 'Maspro Denkoh', series: 'Smart TV' } } + readable: 'NetFront 3.1 on a Maspro Denkoh Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Spyglass 3.0; OpenTV) Gecko/20081010 InettvBrowser/1.0 (F00001;OTV-IB24L;2.4;00000),gzip(gfe),gzip(gfe),gzip(gfe)' + result: { browser: { name: Spyglass, version: '3.0', type: browser }, engine: { name: Gecko }, os: { name: OpenTV }, device: { type: television, series: 'Smart TV' } } + readable: 'Spyglass 3.0 on a Smart TV running OpenTV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; ARM) AppleWebKit/533.21.1 (KHTML, like Gecko) Zetakey/3.3.1' + readable: 'Zetakey 3.3.1 on a television' + result: { browser: { name: Zetakey, version: 3.3.1, type: browser }, engine: { name: Webkit, version: 533.21.1 }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; ARM) AppleWebKit/533.21.1 (KHTML, like Gecko) Zetakey/3.3' + readable: 'Zetakey 3.3 on a television' + result: { browser: { name: Zetakey, version: '3.3', type: browser }, engine: { name: Webkit, version: 533.21.1 }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux) AppleWebKit (KHTML, like Gecko) CISCO Webkit Browser CiscoBrowser/CI.0221 Qt48WebKit/0.38.1' + readable: 'a Cisco MediaHighway' + result: { engine: { name: Webkit, version: 0.38.1 }, device: { type: television, manufacturer: Cisco, model: MediaHighway } } +- + headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux) AppleWebKit (KHTML, like Gecko) Evolution CiscoBrowser/CI.28.12.01.dev2 Chrome' + readable: 'a Cisco MediaHighway' + result: { device: { type: television, manufacturer: Cisco, model: MediaHighway } } +- + headers: 'User-Agent: Mozilla/5.0 (STB; Linux) AppleWebKit (KHTML, like Gecko) CISCO Webkit Browser CiscoBrowser/CI.0220 Qt48WebKit/0.38.1' + readable: 'a Cisco MediaHighway' + result: { engine: { name: Webkit, version: 0.38.1 }, device: { type: television, manufacturer: Cisco, model: MediaHighway } } +- + headers: 'User-Agent: Mozilla/5.0 AppleWebKit/KHTML, like Gecko Ranger/4.0.0.198M EC6108V9 Sunniwell; Resolution(PAL,720P,1080i)' + readable: 'a Sunniwell STB' + result: { engine: { name: Webkit }, device: { type: television, manufacturer: Sunniwell, series: STB } } +- + headers: 'User-Agent: Mozilla/5.0 AppleWebKit/KHTML, like Gecko Ranger/4.0.0.198M EC6108V8 Sunniwell; Resolution(PAL,720P,1080i)' + readable: 'a Sunniwell STB' + result: { engine: { name: Webkit }, device: { type: television, manufacturer: Sunniwell, series: STB } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Linux mips; Enseo/HD3300) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36' + readable: 'an Enseo HD3300 STB' + result: { engine: { name: Webkit, version: '537.36' }, device: { type: television, manufacturer: Enseo, model: HD3300, series: STB } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Andr0id 4.4.2; BHX-UH200 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 OPR/32.0.2070.0 OMI/4.7.0.34.release' + readable: 'Opera Devices 4.7 on a B box B tv UHD BHX-UH200 running Android 4.4.2' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 48 }, version: '4.7', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: television, manufacturer: 'B box', model: 'B tv UHD BHX-UH200' } } +- + headers: 'User-Agent: HbbTV/1.1.1 (+PVR; Ocean Blue Software; ; 0.1; ;)' + readable: 'a television' + result: { device: { type: television } } +- + headers: 'User-Agent: HbbTV/1.1.1 (; ST; FLTk3D; 1.0; 1.0;) NetFront/3.5' + readable: 'NetFront 3.5 on a television' + result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: television } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/panasonic.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/panasonic.yaml new file mode 100644 index 0000000..8100865 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/panasonic.yaml @@ -0,0 +1,176 @@ +- + headers: 'User-Agent: Freetime/1.0 (freetime); (Panasonic, 2014, idtv, medium, wired); (PRO4, 16306); Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.7.0 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.7.0, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: 'Viera 2014' } } + readable: 'Viera Browser 3.7.0 on a Panasonic Viera 2014' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Panasonic;VIERA 2011;f.533;0071-0802 2000-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2011' } } + readable: 'a Panasonic Viera 2011' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.261;0071-3103 0400-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2012' } } + readable: 'a Panasonic Viera 2012' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Panasonic;VIERA 2012;1.266;0071-3103 2000-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2012' } } + readable: 'a Panasonic Viera 2012' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Panasonic;VIERA 2013;3.720;4101-0003 0002-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2013' } } + readable: 'a Panasonic Viera 2013' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Panasonic;VIERA 2013;3.720;4101-0003 0002-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2013' } } + readable: 'a Panasonic Viera 2013' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Panasonic;VIERA 2013;3.720;6101-0003 4000-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2013' } } + readable: 'a Panasonic Viera 2013' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Panasonic;VIERA 2014;0.001;ba01-0003 4000-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2014' } } + readable: 'a Panasonic Viera 2014' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Panasonic;VIERA 2014;0.001;ba01-0003 4000-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2014' } } + readable: 'a Panasonic Viera 2014' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Panasonic;VIERA 2015;3.003;4401-0003 0002-0000;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2015' } } + readable: 'a Panasonic Viera 2015' +- + headers: 'User-Agent: Hybridcast/1.0 (;008045;PANATV1308;2;2;)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Smart TV' } } + readable: 'a Panasonic Smart TV' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0 compatible; Device Mosaic 5.2.1;OpenTV) InettvBrowser/2.3 (008045;V750;1.01;10000) TvpsExtInfo/A05001 (7A050002020100004D1B;23;FP)' + result: { browser: { name: 'Device Mosaic', family: Mosaic, version: 5.2.1, type: browser }, os: { name: OpenTV }, device: { type: television, manufacturer: Panasonic, model: V750, series: 'Smart TV' } } + readable: 'Device Mosaic 5.2.1 on a Panasonic V750 Smart TV running OpenTV' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0 compatible; Device Mosaic 5.2.2; OpenTV) InettvBrowser/2.3 (008045;PANATV0934;1.32;10000)' + result: { browser: { name: 'Device Mosaic', family: Mosaic, version: 5.2.2, type: browser }, os: { name: OpenTV }, device: { type: television, manufacturer: Panasonic, series: 'Smart TV' } } + readable: 'Device Mosaic 5.2.2 on a Panasonic Smart TV running OpenTV' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Panasonic; en-00) AppleWebKit/535.1 (KHTML, like Gecko) Viera DTV/2.225 (Panasonic, TH-L--E5M, ) Chrome/14.0.835.202 Safari/535.1' + result: { browser: { family: { name: Chrome, version: 14 }, type: browser }, engine: { name: Webkit, version: '535.1' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; ja-JP) AppleWebKit/535.1 (KHTML, like Gecko) Viera/1.2.4 Chrome/14.0.835.202 Safari/535.1' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 14 }, version: 1.2.4, type: browser }, engine: { name: Webkit, version: '535.1' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 1.2.4 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; like Android 4.0.2; xx; ja-jp) AppleWebKit/534.30 (KHTML, like Gecko) Viera/2.0.0 DIGAPlus/1.0.0 Mobile/534.30' + result: { browser: { name: 'Viera Browser', version: 2.0.0, type: browser }, engine: { name: Webkit, version: '534.30' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 2.0.0 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/535.1 (KHTML, like Gecko) Viera/1.5.2 Chrome/14.0.835.202 Safari/535.1/CE-HTML' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 14 }, version: 1.5.2, type: browser }, engine: { name: Webkit, version: '535.1' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 1.5.2 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.1.8 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.1.8, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.1.8 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.10.0 Chrome/23.0.1271.97 Safari/537.11; Freetime/1.0 (freetime); (Panasonic, 2014, idtv, low, wired); (sLD8A, 15430);' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.10.0, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: 'Viera 2014' } } + readable: 'Viera Browser 3.10.0 on a Panasonic Viera 2014' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.10.3 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.10.3, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.10.3 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.11.0 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.11.0, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.11.0 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.2.0 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.2.0, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.2.0 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.3.2 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.3.2, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.3.2 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.5.0 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.5.0, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.5.0 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.5.1 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.5.1, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.5.1 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.5.2 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.5.2, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.5.2 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.7.0 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.7.0, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.7.0 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (FreeBSD; Viera; rv:34.0) Gecko/20100101 Firefox/34.0' + result: { browser: { name: Firefox, version: '34.0', type: browser }, engine: { name: Gecko, version: '34.0' }, os: { name: 'Firefox OS', version: '2.1' }, device: { type: television, manufacturer: Panasonic, series: 'Viera 2015' } } + readable: 'Firefox 34.0 on a Panasonic Viera 2015 running Firefox OS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD; U; Viera; xx) AppleWebKit/535.1 (KHTML, like Gecko) Viera/1.5.1 Chrome/14.0.835.202 Safari/535.1' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 14 }, version: 1.5.1, type: browser }, engine: { name: Webkit, version: '535.1' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 1.5.1 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.1.8 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.1.8, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.1.8 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.10.0 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.10.0, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.10.0 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.10.9 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.10.9, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.10.9 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD; U; Viera; xx) AppleWebKit/537.11 (KHTML, like Gecko) Viera/3.3.2 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { name: 'Viera Browser', family: { name: Chrome, version: 23 }, version: 3.3.2, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 3.3.2 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD; U; Viera; xx; ja-jp) AppleWebKit/534.30 (KHTML, like Gecko) Viera/2.0.0 DIGAPlus/1.0.0 Safari/534.30' + result: { browser: { name: 'Viera Browser', version: 2.0.0, type: browser }, engine: { name: Webkit, version: '534.30' }, device: { type: television, manufacturer: Panasonic, series: Viera } } + readable: 'Viera Browser 2.0.0 on a Panasonic Viera' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux; U; Diga; de-DE) AppleWebKit/537.11 (KHTML, like Gecko) Diga/3.7.0 Chrome/23.0.1271.97 Safari/537.11' + result: { browser: { family: { name: Chrome, version: 23 }, type: browser }, engine: { name: Webkit, version: '537.11' }, device: { type: television, manufacturer: Panasonic, series: Diga } } + readable: 'a Panasonic Diga' +- + headers: 'User-Agent: Mozilla/5.0(compatible; U; InfiNet 0.1; Viera) AppleWebKit/420+ (KHTML, like Gecko)(avdn/Panasonic.tv.2011;avvp/ssl;avui/tv;avrt/html5;avkb/mcr,P:113,PU:114,S:115,SF:116,SB:117,ST:112;avst/on)' + result: { engine: { name: Webkit, version: '420' }, device: { type: television, manufacturer: Panasonic, series: 'Viera 2011' } } + readable: 'a Panasonic Viera 2011' +- + headers: 'User-Agent: Mozilla/5.0(compatible; U; InfiNet 0.1; Viera) AppleWebKit/420+ (KHTML, like Gecko)(avdn/Panasonic.tv.2012)' + result: { engine: { name: Webkit, version: '420' }, device: { type: television, manufacturer: Panasonic, series: 'Viera 2012' } } + readable: 'a Panasonic Viera 2012' +- + headers: 'User-Agent: HbbTV/1.3.1 (;Panasonic;Viera2015.mid;36.3605;4501-0003 0002-0000;) FVC/1.0 (Panasonic;Viera2015;) (avdn/Panasonic.tv.mid.2015)' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2015' } } + readable: 'a Panasonic Viera 2015' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Panasonic;VIERA 2016;3.232;5101-0003 0002-0000;)' + readable: 'a Panasonic Viera 2016' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2016' } } +- + headers: 'User-Agent: HbbTV/1.2.1 (;Panasonic;VIERA 2017;3.142;2b01-0003 0002-0000;)' + readable: 'a Panasonic Viera 2017' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2017' } } +- + headers: 'User-Agent: HbbTV/1.4.1 (;Panasonic;VIERA 2017;3.142;3501-0003 0002-0000;) PanasonicSDK/2017' + readable: 'a Panasonic Viera 2017' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2017' } } +- + headers: 'User-Agent: HbbTV/1.4.1 (+DRM;Panasonic;SmartTV2018mid;0.002;2401-0003 0008-0000;SmartTV2018;)' + readable: 'a Panasonic Viera 2018' + result: { device: { type: television, manufacturer: Panasonic, series: 'Viera 2018' } } +- + headers: 'User-Agent: HbbTV/1.1.1 (+PVR;Panasonic;DIGA WebKit M8158;3.300;;)' + readable: 'a Panasonic Diga' + result: { device: { type: television, manufacturer: Panasonic, series: Diga } } +- + headers: 'User-Agent: Mozilla/5.0(compatible; U; InfiNet 0.1; Viera) AppleWebKit/420+ (KHTML, like Gecko)(avdn/Panasonic.tv.pro4.2013)' + readable: 'a Panasonic Viera 2013' + result: { engine: { name: Webkit, version: '420' }, device: { type: television, manufacturer: Panasonic, series: 'Viera 2013' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/philips.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/philips.yaml new file mode 100644 index 0000000..021a8b7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/philips.yaml @@ -0,0 +1,240 @@ +- + headers: 'User-Agent: CE-HTML/1.0 NETTV/6.0.0 SmartTvA/3.0.0 (PhilipsTV, 6.1.1,) enMozilla/5.0 (Linux; QM152E Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.61 Safari/537.36 OPR/31.0.1890.0 OMI/4.6.1.13.Sprinter.4' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 44 }, version: '4.6', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: '5.1' }, device: { type: television, manufacturer: Philips, model: 'Android TV (2015)' } } + readable: 'Opera Devices 4.6 on a Philips Android TV (2015) running Android TV 5.1' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Philips;MT5580;;;) ANTGalio/3.3.0.26.04' + result: { browser: { name: 'ANT Galio', version: 3.3.0, type: browser }, device: { type: television, manufacturer: Philips, model: MT5580, series: 'Digital Receiver' } } + readable: 'ANT Galio 3.3.0 on a Philips MT5580 Digital Receiver' +- + headers: 'User-Agent: HbbTV/1.2.1 (;Philips;MT5580;PhilipsTV, 4.1.1;;) ANTGalio/3.4.0.27.00.devel' + result: { browser: { name: 'ANT Galio', version: 3.4.0, type: browser }, device: { type: television, manufacturer: Philips, model: MT5580, series: 'Digital Receiver' } } + readable: 'ANT Galio 3.4.0 on a Philips MT5580 Digital Receiver' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; AND1E Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '37', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: television, manufacturer: Philips, model: 'Android TV (2014)' } } + readable: 'Chrome 37 on a Philips Android TV (2014) running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; AND1E TV Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.80 Safari/537.36' + result: { browser: { name: Chrome, version: '29', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: television, manufacturer: Philips, model: 'Android TV (2014)' } } + readable: 'Chrome 29 on a Philips Android TV (2014) running Android 4.2.2' +- + headers: 'User-Agent: Opera/9.70 (Linux armv6l ; U; CE-HTML/1.0 NETTV/2.0.2; en) Presto/2.2.1' + result: { browser: { name: 'Opera Devices', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 9.7 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.70 (Linux armv6l ; U; CE-HTML/1.0 NETTV/2.0.2; xx) Presto/2.2.1' + result: { browser: { name: 'Opera Devices', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 9.7 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l ; U; CE-HTML/1.0 NETTV/3.0.1;; en) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 2.8 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l ; U; CE-HTML/1.0 NETTV/3.0.1;; xx) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 2.8 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l ; U; HbbTV/1.1.1 (; ; ; ; ; ) CE-HTML/1.0 NETTV/3.2.3; xx) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 2.8 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l ; U; CE-HTML/1.0 NETTV/3.2.2; xx) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 2.8 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l ; U; CE-HTML/1.0 NETTV/4.1.1; xx) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 2.8 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.3.1 PHILIPSTV/2.1.1 Firmware/001.229.052.000 (PhilipsTV, 2.1.1,) en) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.3.1 PHILIPSTV/2.1.1 Firmware/002.016.000.001 (PhilipsTV, 2.1.1,) en) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.3.1 PHILIPSTV/2.1.1 Firmware/003.001.000.001 (PhilipsTV, 2.1.1,) en) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.3.1 PHILIPSTV/2.1.1 Firmware/003.009.000.001 (PhilipsTV, 2.1.1,) en) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.3.1 PHILIPSTV/2.1.2 Firmware/002.028.000.001 (PhilipsTV, 2.1.2,) en) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 CE-HTML/1.0 NETTV/4.3.1 PHILIPSTV/2.1.2 Firmware/002.026.000.001 (PhilipsTV, 2.1.2,)) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; ; ; ; ; ) HbbTV/1.1.1 CE-HTML/1.0 NETTV/4.1.1 PHILIPSTV/2.1.1 Firmware/012.000.092.001 (PhilipsTV, 2.1.1,)) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; ; ; ; ; ) HbbTV/1.1.1 CE-HTML/1.0 NETTV/4.1.1 PHILIPSTV/2.1.1 Firmware/014.000.006.000 (PhilipsTV, 2.1.1,)) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 28HFL5009D12; ; PHILIPSTV; CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/004.001.163.001 (PhilipsTV, 3.1.1,)en) ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, model: HFL5009, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips HFL5009 Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 28HFL5009D12; ; PHILIPSTV; CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/004.001.163.001 (PhilipsTV, 3.1.1,)en) ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, model: HFL5009, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips HFL5009 Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 32PFG550978' + result: { browser: { name: 'Opera Devices', type: browser }, device: { type: television } } + readable: 'Opera Devices on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 40PFS671912; ; PHILIPSTV; CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/012.002.016.128 (PhilipsTV, 3.1.1,)en) ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, model: PFS6719, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips PFS6719 Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 42PFK710912; ; PHILIPSTV; CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/012.002.016.128 (PhilipsTV, 3.1.1,)en) ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, model: PFK7109, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips PFK7109 Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 42PFK750912; ; PHILIPSTV; CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/012.003.002.128 (PhilipsTV, 3.1.1,)en) ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, model: PFK7509, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips PFK7509 Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 47PFS710912; ; PHILIPSTV; CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/012.002.016.128 (PhilipsTV, 3.1.1,)en) ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, model: PFS7109, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips PFS7109 Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; 55PFS710912; ; PHILIPSTV; CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/012.002.016.128 (PhilipsTV, 3.1.1,)en) ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, model: PFS7109, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips PFS7109 Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/5.0.0 PHILIPSTV/1.1.1150.14.20 (PhilipsTV, 1.1.1,) en) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.1.1 SmartTvA/3.0.0 Firmware/026.001.020.003 (PhilipsTV, 4.1.1,)en) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/010.001.062.019 (PhilipsTV, 3.1.1,)en) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Philips; ; ; PHILIPSTV; ) CE-HTML/1.0 NETTV/4.4.1 SmartTvA/3.0.0 Firmware/012.001.062.019 (PhilipsTV, 3.1.1,)en) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (NETTV/4.2.0 PHILIPSTV/1.1.1; ; ; ; ; ) CE-HTML/1.0) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; CE-HTML/1.0 NETTV/4.1.1 PHILIPSTV/2.1.1; xx) Presto/2.10.287 Version/12.00' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.2 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; CE-HTML/1.0 NETTV/4.1.1; xx) Presto/2.10.287 Version/12.00' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.2 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; CE-HTML/1.0 NETTV/3.3.0; PHILIPS-AVM-2012; en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Philips, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.1 on a Philips Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; CE-HTML/1.0 NETTV/3.3.0; PHILIPS-AVM-2012; xx) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Philips, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.1 on a Philips Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; HbbTV/1.2.1 (NETTV/4.2.0 PHILIPSTV/1.1.1; ; ; ; ; ) CE-HTML/1.0) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux i686; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.1 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; en) Presto/2.6.33 Version/10.70' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 2.8 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.1.0; xx) Presto/2.6.33 Version/10.70' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 2.8 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips ; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/3.2.4; xx) Presto/2.6.33 Version/10.70' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 2.8 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; HbbTV/1.2.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/4.2.0 PHILIPSTV/1.1.1 Firmware/171.56.0 (PhilipsTV, 1.1.1,) en) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.4 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; CE-HTML/1.0 NETTV/3.0.1; PHILIPS-AVM-2012; en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Philips, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.1 on a Philips Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/4.0.2; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.2 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Philips; ; ; ; ) CE-HTML/1.0 NETTV/4.1.3 PHILIPSTV/1.1.1; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 3.2 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.80(Linux armv7l; U; CE-HTML/1.0 NETTV/3.0.1; PHILIPS-AVM-2012; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Philips, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.2 on a Philips Blu-ray Player' +- + headers: 'User-Agent: WebKit/3.7.6, (CE-HTML/1.0 NETTV/3.3.0 NewB) PHILIPS-AVM-2013/2.19 (Philips, BDP5600, wired)' + result: { engine: { name: Webkit, version: 3.7.6 }, device: { type: television, manufacturer: Philips, model: BDP5600, series: 'Blu-ray Player' } } + readable: 'a Philips BDP5600 Blu-ray Player' +- + headers: 'User-Agent: WebKit/3.7.6, (CE-HTML/1.0 NETTV/3.3.0 NewB) PHILIPS-AVM-2013/2.19 (Philips, BDP5600, wireless)' + result: { engine: { name: Webkit, version: 3.7.6 }, device: { type: television, manufacturer: Philips, model: BDP5600, series: 'Blu-ray Player' } } + readable: 'a Philips BDP5600 Blu-ray Player' +- + headers: 'User-Agent: WebKit/3.8.2, (CE-HTML/1.0 NETTV/3.3.0 NewB) PHILIPS-AVM-2013/4.19 (Philips, BDP9700, wired)' + result: { engine: { name: Webkit, version: 3.8.2 }, device: { type: television, manufacturer: Philips, model: BDP9700, series: 'Blu-ray Player' } } + readable: 'a Philips BDP9700 Blu-ray Player' +- + headers: 'User-Agent: Opera/9.50 (Linux mips ; U; CE-HTML/1.0 (<profilelist><ui_profile name="PHILIPS_OLS_2008"/></profilelist>); xx)' + result: { browser: { name: 'Opera Devices', type: browser }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.70 ( Linux mips;U;CE-HTML/1.0 (<profilelist><ui_profile name="PHILIPS_OLS_2010"/></profilelist>);xx) Presto/2.2.1' + result: { browser: { name: 'Opera Devices', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 9.7 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.70 (Linux armv6l ; U; CE-HTML/1.0 (<profilelist><ui_profile name="PHILIPS_OLS_2010"/></profilelist>); xx) Presto/2.2.1' + result: { browser: { name: 'Opera Devices', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 9.7 on a Philips Net TV' +- + headers: 'User-Agent: Opera/9.70 (Linux x86_64 ; U; CE-HTML/1.0 (<profilelist><ui_profile name="PHILIPS_OLS_2008"/></profilelist>); xx) Presto/2.2.1' + result: { browser: { name: 'Opera Devices', version: '9.7', type: browser }, engine: { name: Presto, version: 2.2.1 }, device: { type: television, manufacturer: Philips, series: 'Net TV' } } + readable: 'Opera Devices 9.7 on a Philips Net TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1; QV151E Build/LMY47D; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36' + result: { browser: { using: { name: 'Chromium WebView', version: '46' } }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: '5.1' }, device: { type: television, manufacturer: Philips, model: 'Android TV (2015)' } } + readable: 'Chromium WebView 46 on a Philips Android TV (2015) running Android TV 5.1' +- + headers: 'User-Agent: CE-HTML/1.0 NETTV/6.0.2 SmartTvA/3.0.0 (PhilipsTV, 6.1.1,) enMozilla/5.0 (Linux; QM151E Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36 OPR/31.0.1890.0 OMI/4.6.1.13.Sprinter.13' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 44 }, version: '4.6', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: '5.1' }, device: { type: television, manufacturer: Philips, model: 'Android TV (2015)' } } + readable: 'Opera Devices 4.6 on a Philips Android TV (2015) running Android TV 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1; QM152E Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36' + result: { browser: { family: { name: Chrome, version: 47 }, type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: '5.1' }, device: { type: television, manufacturer: Philips, model: 'Android TV (2015)' } } + readable: 'a Philips Android TV (2015) running Android TV 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; QM152E Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36 OPR/31.0.1890.0 OMI/4.6.1.13.Sprinter.13' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 44 }, version: '4.6', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: '5.1' }, device: { type: television, manufacturer: Philips, model: 'Android TV (2015)' } } + readable: 'Opera Devices 4.6 on a Philips Android TV (2015) running Android TV 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Andr0id 5.1; QM163E Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 OPR/32.0.2128.0 OMI/4.8.0.35.Sprinter.7' + readable: 'Opera Devices 4.8 on a Philips Android TV (2016) running Android TV 5.1' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 49 }, version: '4.8', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: '5.1' }, device: { type: television, manufacturer: Philips, model: 'Android TV (2016)' } } +- + headers: 'User-Agent: CE-HTML/1.0 NETTV/6.0.2 SmartTvA/3.0.0 (PhilipsTV, 6.1.1,) enMozilla/5.0 (Linux; Andr0id 6.0.1; PH7M_EU_5596 Build/MASTER) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 OPR/32.0.2128.0 OMI/4.8.0.35.Sprinter.10' + readable: 'Opera Devices 4.8 on a Philips Android TV (2016) running Android TV 6.0.1' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 49 }, version: '4.8', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: 6.0.1 }, device: { type: television, manufacturer: Philips, model: 'Android TV (2016)' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/pioneer.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/pioneer.yaml new file mode 100644 index 0000000..df0525b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/pioneer.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5581) Presto/2.12.362 Version/12.11 Blu-ray Player/v00.17 (Pioneer, BDP-160, wired)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Pioneer, model: BDP-160, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Pioneer BDP-160 Blu-ray Player' +- + headers: 'User-Agent: Mozilla/4.08 (Standard; NF32SW/2.0) NetFront/3.2 InettvBrowser/1.0(00E036;BD-V3;02;00)' + result: { browser: { name: NetFront, version: '3.2', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Pioneer, series: 'Smart TV' } } + readable: 'NetFront 3.2 on a Pioneer Smart TV' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/roku.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/roku.yaml new file mode 100644 index 0000000..f71f4d8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/roku.yaml @@ -0,0 +1,20 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Roku) AppleWebKit/537.36 (KHTML, like Gecko) Web/1.1 Safari/537.36' + result: { browser: { name: Web, version: '1.1', type: browser }, engine: { name: Webkit, version: '537.36' }, device: { type: television, manufacturer: Roku } } + readable: 'Web 1.1 on a Roku' +- + headers: 'User-Agent: Roku/DVP-3100EU-4.3 (024.03E10000A)' + result: { device: { type: television, manufacturer: Roku, model: '2 XS' } } + readable: 'a Roku 2 XS' +- + headers: 'User-Agent: Roku/DVP-5.4 (045.04E03198A)' + result: { device: { type: television, manufacturer: Roku, model: '3' } } + readable: 'a Roku 3' +- + headers: 'User-Agent: Roku/DVP-4.9 (074.09E08022A)' + result: { device: { type: television, manufacturer: Roku, model: LT } } + readable: 'a Roku LT' +- + headers: 'User-Agent: Roku/DVP-5.5 (095.05E02025A)' + result: { device: { type: television, manufacturer: Roku, model: 'Streaming Stick' } } + readable: 'a Roku Streaming Stick' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/samsung.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/samsung.yaml new file mode 100644 index 0000000..41df637 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/samsung.yaml @@ -0,0 +1,168 @@ +- + headers: 'User-Agent: HbbTV/1.1.1 (;;;;) Maple_2011' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2011' } } + readable: 'a Samsung Smart TV 2011' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Samsung;SmartTV2012;;;) WebKit' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2012' } } + readable: 'a Samsung Smart TV 2012' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Samsung;SmartTV2013;BPH-F8509EUB-1003.2;;) WebKit' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2013' } } + readable: 'a Samsung Smart TV 2013' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Samsung;SmartTV2013;T-FXPDEUC-1102.2;;) WebKit' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2013' } } + readable: 'a Samsung Smart TV 2013' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Samsung;SmartTV2013;T-FXPDEUC-1116.1;;) WebKit' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2013' } } + readable: 'a Samsung Smart TV 2013' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Samsung;SmartTV2013;T-MST12DEUC-1118.2;;) WebKit' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2013' } } + readable: 'a Samsung Smart TV 2013' +- + headers: 'User-Agent: HbbTV/1.1.1 (;Samsung;SmartTV2014;T-MST14DEUC-1106.1;;) WebKit' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2014' } } + readable: 'a Samsung Smart TV 2014' +- + headers: 'User-Agent: HbbTV/1.2.1 (+DRM;Samsung;SmartTV2015;T-HKMDEUC-1213.4;;) WebKit' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2015' } } + readable: 'a Samsung Smart TV 2015' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Gecko/20041115) Maple 5.0.0 Navi' + result: { engine: { name: Gecko }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2009' } } + readable: 'a Samsung Smart TV 2009' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; GT-B9150 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.55 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '37', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: television, manufacturer: Samsung, model: 'Galaxy HomeSync' } } + readable: 'Chrome 37 on a Samsung Galaxy HomeSync running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; olleh tv; U; xx; SMT-E5015) AppleWebKit/536.25 (KHTML, like Gecko) AltiBrowser/3.0.4 (olleh tv; Large Screen) Safari/536.25' + result: { browser: { name: AltiBrowser, version: 3.0.4, type: browser }, engine: { name: Webkit, version: '536.25' }, device: { type: television, manufacturer: Samsung, model: 'Olleh SkyLife Smart Settopbox' } } + readable: 'AltiBrowser 3.0.4 on a Samsung Olleh SkyLife Smart Settopbox' +- + headers: 'User-Agent: Mozilla/5.0 (SMART-TV; Linux; Tizen 2.2) AppleWebKit/538.1 (KHTML, like Gecko) Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: '2.2' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (SMART-TV; Linux; Tizen 2.2) AppleWebKit/538.1 (KHTML, like Gecko)Version/2.2 Mobile Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: '2.2' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (SMART-TV; Tizen 2.2) AppleWebKit/538.1 (KHTML, like Gecko)Version/2.2 Mobile Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: '2.2' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (SMART-TV; X11; Linux armv7l) AppleWebkit/537.42 (KHTML, like Gecko) Chromium/25.0.1349.2 Chrome/25.0.1349.2 Safari/537.42' + result: { browser: { family: { name: Chrome, version: 25 }, type: browser }, engine: { name: Webkit, version: '537.42' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (SMART-TV; X11; Linux i686) AppleWebKit/534.7 (KHTML, like Gecko) Version/5.0 Safari/534.7' + result: { engine: { name: Webkit, version: '534.7' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (SMART-TV; X11; Linux i686) AppleWebKit/535.20+ (KHTML, like Gecko) Version/5.0 Safari/535.20+' + result: { engine: { name: Webkit, version: '535.20' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Smart-Tv; Linux; Tizen 2.2.x) AppleWebkit/538.1 (KHTML, like Gecko) Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: '2.2' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV running Tizen 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV) AppleWebKit/531.2+ (KHTML, like Gecko) WebBrowser/1.0' + result: { engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV) AppleWebKit/531.2+ (KHTML, like Gecko) WebBrowser/1.0 SmartTV Safari/531.2+' + result: { engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV+2013; Maple2012) AppleWebKit/535.20+ (KHTML, like Gecko) SmartTV Safari/535.20+' + result: { engine: { name: Webkit, version: '535.20' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2013' } } + readable: 'a Samsung Smart TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV+2013; Maple2012) AppleWebKit/535.20+ (KHTML, like Gecko) SmartTV Safari/535.20+ SamsungTV/T-MST14AKUC-0407.0 (Samsung, UN40H6400, Wired)' + result: { engine: { name: Webkit, version: '535.20' }, device: { type: television, manufacturer: Samsung, model: UN40H6400, series: 'Smart TV 2013' } } + readable: 'a Samsung UN40H6400 Smart TV 2013' +- + headers: 'User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV+2014; Maple2012) AppleWebKit/537.42+ (KHTML, like Gecko) SmartTV Safari/537.42+' + result: { engine: { name: Webkit, version: '537.42' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2014' } } + readable: 'a Samsung Smart TV 2014' +- + headers: 'User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV; Maple2012)' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2012' } } + readable: 'a Samsung Smart TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV; Maple2012) AppleWebKit/534.7 (KHTML, like Gecko) SmartTV Safari/534.7' + result: { engine: { name: Webkit, version: '534.7' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2012' } } + readable: 'a Samsung Smart TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; xx;) AppleWebKit/534(KHTML, like Gecko) NX/2.0 (DTV; HTML; R1.0;) InettvBrowser/2.2 (00E064;UA46FS7000;0001;0001) TvpsExtInfo/A31002 (6A31AA40155FBC8EDC1468E7309DB736;22;T)' + result: { browser: { name: 'NetFront NX', version: '2.0', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'NetFront NX 2.0 on a Samsung Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; en-US; rv:1.8.1.11; Gecko/20071129; Firefox/2.5.0) Maple 5.1.00277 Navi' + result: { browser: { family: { name: Firefox, version: 2.5.0 }, type: browser }, engine: { name: Gecko, version: 1.8.1 }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2010' } } + readable: 'a Samsung Smart TV 2010' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; en-US; rv:1.8.1.11; Gecko/20071129; Firefox/2.5.0) Maple 6.0.00067 Navi' + result: { browser: { family: { name: Firefox, version: 2.5.0 }, type: browser }, engine: { name: Gecko, version: 1.8.1 }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2011' } } + readable: 'a Samsung Smart TV 2011' +- + headers: 'User-Agent: Mozilla/5.0 (X11; SMART-TV; Linux) AppleWebkit/538.1 (KHTML, like Gecko) Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (X11; SMART-TV; Linux) AppleWebkit/538.1 (KHTML, like Gecko) like Chrome ; Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'a Samsung Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5580;) Presto/2.10.250 Version/11.60 Model/Samsung-BD-F5500' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Samsung, model: BD-F5500, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.2 on a Samsung BD-F5500 Blu-ray Player' +- + headers: 'User-Agent: SmartTV/1.0.0 (SAMSUNG;OTV-SMT-E5015;0x01;BAC.2012.05.12)' + result: { device: { type: television, manufacturer: Samsung, model: 'Olleh SkyLife Smart Settopbox' } } + readable: 'a Samsung Olleh SkyLife Smart Settopbox' +- + headers: 'User-Agent: Mozilla/5.0 (SmartHub; U; Maple2012) AppleWebKit/535.20+ (KHTML, like Gecko) Safari/535.20+' + result: { engine: { name: Webkit, version: '535.20' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2012' } } + readable: 'a Samsung Smart TV 2012' +- + headers: 'User-Agent: Mozilla/5.0 (BDPlayer; BDP5G/1.0; like Gecko; NetFront/4.0) (avui/tv,960:540;avrt/html4;avvp/ssl;avvl/800;avmb/4000;avvm/f;avmt/all;avst/off;avkb/mc)' + result: { browser: { name: NetFront, version: '4.0', type: browser }, engine: { name: NetFront }, device: { type: television } } + readable: 'NetFront 4.0 on a television' +- + headers: 'User-Agent: Mozilla/5.0 (U; Linux; Maple2012) AppleWebKit/535.20+ (KHTML, like Gecko) Safari/535.20+' + readable: 'a Samsung Smart TV 2012' + result: { engine: { name: Webkit, version: '535.20' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2012' } } +- + headers: 'User-Agent: Mozilla/5.0 ( U; Linux/+2013; Maple2012) AppleWebKit/535.20+ (KHTML, like Gecko) Safari/535.20+' + readable: 'a Samsung Smart TV 2013' + result: { engine: { name: Webkit, version: '535.20' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV 2013' } } +- + headers: 'User-Agent: Mozilla/5.0 (TV; Linux; Tizen2.3) AppleWebkit/538.1 (KHTML, like Gecko) SamsungBrowser/1.0 TV Safari/538.1' + readable: 'Samsung Browser 1.0 on a Samsung Smart TV running Tizen 2.3' + result: { browser: { name: 'Samsung Browser', version: '1.0' }, engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: '2.3' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } +- + headers: 'User-Agent: HbbTV/1.2.1 (+DRM;Samsung;SmartTV2016;T-JZMDEUC-1201.6;;) WebKit' + readable: 'a Samsung Smart TV 2016' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2016' } } +- + headers: 'User-Agent: HbbTV/1.2.1 (+DRM;Samsung;SmartTV2017;T-KTMDEUC-1147.1;;)+TVPLUS+SmartHubLink Chrome' + readable: 'a Samsung Smart TV 2017' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2017' } } +- + headers: 'User-Agent: HbbTV/1.2.1 (;Samsung;SmartTV2014;T-GFPDEUC-1210.3;;) WebKit' + readable: 'a Samsung Smart TV 2014' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2014' } } +- + headers: 'User-Agent: HbbTV/1.4.1 (+DRM+TVPLUS;Samsung;SmartTV2017;T-KTMDEUC-0318.24;;) Chrome' + readable: 'a Samsung Smart TV 2017' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2017' } } +- + headers: 'User-Agent: HbbTV/1.4.1 (+DRM+MEDIA360;Samsung;SmartTV2017;T-KTMDEUC-0902.31;;)+SmartHubLink Chrome' + readable: 'a Samsung Smart TV 2017' + result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2017' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sanyo.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sanyo.yaml new file mode 100644 index 0000000..9d132c5 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sanyo.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Aplix_SANYO_browser/1.x (Japanese)' + result: { browser: { name: Aplix, version: '1', type: browser }, device: { type: television, manufacturer: Sanyo, series: 'Internet TV' } } + readable: 'Aplix 1 on a Sanyo Internet TV' +- + headers: 'User-Agent: Aplix_SANYO_browser/1.03 (Japanese)' + result: { browser: { name: Aplix, version: '1.03', type: browser }, device: { type: television, manufacturer: Sanyo, series: 'Internet TV' } } + readable: 'Aplix 1.03 on a Sanyo Internet TV' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sharp.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sharp.yaml new file mode 100644 index 0000000..9694c5b --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sharp.yaml @@ -0,0 +1,156 @@ +- + headers: 'User-Agent: DLNADOC/1.50 SHARP-AQUOS-DMP/2.0W' + result: { device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2 (KHTML, like Gecko) AQUOSBrowser/1.0 (US00DTV;V;0001;0001)' + result: { engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.0.4 AQUOSBrowser/1.0 (CH00DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.0.4, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.0.4 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.0.4 AQUOSBrowser/1.0 (JP00DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV10VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.0.4, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.0.4 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.0.4 AQUOSBrowser/1.0 (US00DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.0.4, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.0.4 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.0.5 AQUOSBrowser/1.0 (AS00DTV;V;0001;0001) AQUOS-AS/2.0 LC-46LX840H' + result: { browser: { name: Espial, version: 6.0.5, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, model: LX840H, series: 'Aquos TV' } } + readable: 'Espial 6.0.5 on a Sharp LX840H Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.1 AQUOSBrowser/1.1 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.1, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.1 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.10 AQUOSBrowser/2.0 (JP12DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV12VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.10, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.10 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.10 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.10, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.10 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.11 AQUOSBrowser/2.0 (JP12DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV12VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.11, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.11 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.12 AQUOSBrowser/1.0 (AS00DTV;V;0001;0001)AQUOS-AS/2.0 LC-60LX959H' + result: { browser: { name: Espial, version: 6.1.12, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, model: LX959H, series: 'Aquos TV' } } + readable: 'Espial 6.1.12 on a Sharp LX959H Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.12 AQUOSBrowser/1.0 (AS00DTV;V;0001;0001)AQUOS-AS/2.0 LC-60UQ10E' + result: { browser: { name: Espial, version: 6.1.12, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, model: UQ10E, series: 'Aquos TV' } } + readable: 'Espial 6.1.12 on a Sharp UQ10E Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.12 AQUOSBrowser/1.0 (AS00DTV;V;0001;0001)AQUOS-AS/2.0 LC-70UQ10E' + result: { browser: { name: Espial, version: 6.1.12, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, model: UQ10E, series: 'Aquos TV' } } + readable: 'Espial 6.1.12 on a Sharp UQ10E Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.12 AQUOSBrowser/2.0 (JP12DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV12VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.12, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.12 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.12 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.12, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.12 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.13 AQUOSBrowser/2.0 (JP12DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV12VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.13, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.13 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.13 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.13, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.13 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.14 AQUOSBrowser/2.0 (JP12DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV12VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.14, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.14 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.14 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.14, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.14 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.15 AQUOSBrowser/1.0 (AS00DTV;V;0001;0001)AQUOS-AS/2.0 LC-60UQ10E' + result: { browser: { name: Espial, version: 6.1.15, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, model: UQ10E, series: 'Aquos TV' } } + readable: 'Espial 6.1.15 on a Sharp UQ10E Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.15 AQUOSBrowser/2.0 (JP12DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV12VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.15, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.15 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.15 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.15, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.15 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.16 AQUOSBrowser/2.0 (JP12DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV12VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.16, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.16 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.16 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.16, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.16 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.17 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.17, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.17 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.18 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.1.18, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.18 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.3 AQUOSBrowser/1.0 (JP00DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV10VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.3, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.3 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.4 AQUOSBrowser/2.0 (JP10DTV;B;0001;0001) InettvBrowser/2.2 (08001F;DTV11VSFC3;0001;0001)' + result: { browser: { name: Espial, version: 6.1.4, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.1.4 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.5 AQUOSBrowser/1.0 (AS00DTV;V;0001;0001)AQUOS-AS/2.0 LC-60LE950X' + result: { browser: { name: Espial, version: 6.1.5, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, model: LE950X, series: 'Aquos TV' } } + readable: 'Espial 6.1.5 on a Sharp LE950X Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.6 AQUOSBrowser/1.0 (AS00DTV;V;0001;0001)AQUOS-AS/2.0 LC-60LX850H' + result: { browser: { name: Espial, version: 6.1.6, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, model: LX850H, series: 'Aquos TV' } } + readable: 'Espial 6.1.6 on a Sharp LX850H Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.9 Hybridcast/1.0 (;08001F;DTV12VSFC3;0001;0001;)' + result: { browser: { name: Espial, version: 6.1.9, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Smart TV' } } + readable: 'Espial 6.1.9 on a Sharp Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.2.0 AQUOSBrowser/2.0 (US01DTV;V;0001;0001)' + result: { browser: { name: Espial, version: 6.2.0, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Espial 6.2.0 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TVwithVideoPlayer) NetFront/4.1 AQUOSBrowser/1.0 InettvBrowser/2.2 (08001F;DTV06VSFC;0009;0001)' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'NetFront 4.1 on a Sharp Aquos TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TVwithVideoPlayer) NetFront/4.1 InettvBrowser/2.2 (08001F;DTV04VSFC3;0001;0001)' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Sharp, series: 'Smart TV' } } + readable: 'NetFront 4.1 on a Sharp Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; U; en) Presto/2.8.115 Version/11.10 AQUOS-AS/1.0 LC-40LE835X' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: Sharp, model: LE835X, series: 'Aquos TV' } } + readable: 'Opera Devices 3.0 on a Sharp LE835X Aquos TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; HbbTV/1.1.1 (; ; ; ; ; ) CE-HTML/1.0 NETTV/3.2.3 AquosTV/1.1.1; xx) Presto/2.10.287 Version/12.00' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Sharp, series: 'Aquos TV' } } + readable: 'Opera Devices 3.2 on a Sharp Aquos TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; ) Presto/2.12.407 Version/12.51 MB90/3.3.8.e (SHARP, Si2156LG32, wired) HbbTV/1.1.1 (; CUS:SHARP; MB90; 3.3.8.e; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sharp, model: MB90, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sharp MB90 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 ( ; Sharp; LE737; 690.1; 1.32;); en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Sharp, model: LE737 } } + readable: 'Opera Devices 3.1 on a Sharp LE737' +- + headers: 'User-Agent: Opera/9.80 (Linux sh4; HbbTV/1.2.1 (;Sharp;LE652;v0.1.43.5;;) CE-HTML/1.0 Config(L:deu,CC:DEU) NETRANGEMMH) Presto/2.12.362 Version/12.10' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sharp, model: LE652 } } + readable: 'Opera Devices 3.4 on a Sharp LE652' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sony.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sony.yaml new file mode 100644 index 0000000..c3e8e16 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/sony.yaml @@ -0,0 +1,308 @@ +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) SonyBrowserCore/2.30.7.0.0.3 (Silk) InettvBrowser/2.2 (00014A;SonyDTV095;0001;0500) 2010BRAVIA' + result: { browser: { type: browser }, device: { type: television, manufacturer: Sony, model: Bravia, series: 'Smart TV' } } + readable: 'a Sony Bravia Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36 OPR/19.0.1325.0 OMI/4.1.4.56.ALSAN3.7 SonyCEBrowser/1.0 (BDPlayer; BDP10G_AX; BDP2015/M24.D.0104; XAE;)' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 32 }, version: '4.1', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Sony, model: BDP10G, series: 'Blu-ray Player' } } + readable: 'Opera Devices 4.1 on a Sony BDP10G Blu-ray Player' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; BRAVIA 2015 Build/LGY75.S91; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/42.0.2311.138 Mobile Safari/537.36' + result: { browser: { using: { name: 'Chromium WebView', version: '42' } }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: 5.0.2 }, device: { type: television, manufacturer: Sony, model: 'Bravia Android TV (2015)' } } + readable: 'Chromium WebView 42 on a Sony Bravia Android TV (2015) running Android TV 5.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; BRAVIA 2015 Build/LGZ23.S49) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36 OPR/28.0.1754.0 OMI/4.4.22.20.E102586-1.98' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 41 }, version: '4.4', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android, version: 5.0.2 }, device: { type: television, manufacturer: Sony, model: 'Bravia Android TV (2015)' } } + readable: 'Opera Devices 4.4 on a Sony Bravia Android TV (2015) running Android TV 5.0.2' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l ; U; (SonyBDP/BDV11); en) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 2.8 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/4207; U; (SonyBDP/BDV11); en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.1 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/4563; U; (SonyBDP/BDV12); xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.2 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/4563; U; xx) Presto/2.10.250 Version/11.60 Model/Sony-BDP7G_B SonyCEBrowser/1.0 (BDP7G_B; BDP/M12.R.0497; XXX; )' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, model: BDP7G, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.2 on a Sony BDP7G Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5572) Presto/2.12.362 Version/12.11 Model/Sony-BDP8G_AX SonyCEBrowser/1.0 (BDP8G_AX; M14.D.0152; USA; )' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: BDP8G, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony BDP8G Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5581) Presto/2.12.362 Version/12.11 Model/Sony-BDP9G_AXD SonyCEBrowser/1.0 (BDP9G_AXD; BDP/M20.D.0043; XAE; )' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: BDP9G, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony BDP9G Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5581) Presto/2.12.362 Version/12.11 SonyCEBrowser/1.0 (BDP8G_BX; BDP/M15.D.0163; USA; )' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: BDP8G, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony BDP8G Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5581; (DTV; DTV12/1.0; like Gecko;Opera/10.30)(avdn/sony.tv.2012;avui/tv;avvp/ssl;avst/on;avkb/mc,B:27)) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television } } + readable: 'Opera Devices 3.4 on a television' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5581; (SonyBDP/BDV13)) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5599; (SonyBDP/BDV13)) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5606; (SonyBDP/BDV14)) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; U; (SonyBDP/BDV11); en) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.0 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; U; (SonyBDP/BDV11); xx) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.0 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l) Presto/2.12.362 Version/12.11 SonyCEBrowser/1.0 (DTV14/KDL-32W653A; CTV/PKG0.020EUA; GBR; xx;)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W653', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W653 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l) Presto/2.12.362 Version/12.11 SonyCEBrowser/1.0 (KDL-55W905A; CTV/PKG4.201EUA; EST)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W905', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W905 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l) Presto/2.12.362 Version/12.11 SonyCEBrowser/1.0 (KDL-RB1; CTV/PKG0.001JPA; JPN;)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia RB1', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia RB1 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l) Presto/2.12.407 Version/12.50 Model/Sony-KDL-RB2 SonyCEBrowser/1.0 (KDL-RB2; ; JPN; xx)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia RB2', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia RB2 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l) Presto/2.12.407 Version/12.50 SonyCEBrowser/1.0 (DTV13/KDL-RB2; CTV/PKG1.000AAA; USA; xx;)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia RB2', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia RB2 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l) Presto/2.12.407 Version/12.50 SonyCEBrowser/1.0 (KD-55X8505B; CTV/PKG2.193EUA; NLD)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia X8505', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia X8505 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l) Presto/2.12.407 Version/12.50 SonyCEBrowser/1.0 (KDL-RB2; CTV/PKG0.001JPA; JPN;)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia RB2', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia RB2 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W670A; PKG0.002GAA; 2013;); ) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W670', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W670 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL42W650A; PKG3.504EUA; 2013;); ) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W650', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W650 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Sony; KDL32W650A; PKG4.410EUA; 2013;); ) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W650', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W650 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Sony; KDL32W705B; PKG2.112EUA; 2014;); ) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia W705', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W705 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Sony; KDL47W807A; PKG4.401EUA; 2013;); ) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W807', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W807 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Sony; KDL47W807A; PKG4.410EUA; 2013;); ) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W807', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W807 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (; Sony; KDLRB1; PKG0.004EUA; 2013;); ) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia RB1', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia RB1 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; SONY; KDL32; PKG3010EUA; 2013;); sony.hbbtv.tv.2013; xx; ; CC/XAE) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia L32', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia L32 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) ; CC/ARG) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) ; CC/XAE) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KD55X9005A; CC/DEU) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL32W600A; CC/JPN) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W600', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W600 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL32W605A; CC/BRA) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W605', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W605 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL32W670A; CC/IND) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W670', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W670 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL32W670A; CC/SAU) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia W670', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W670 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL32W700B; CC/IND) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia W700', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W700 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL32W706B; CC/HRV) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia W706', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W706 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL42W705B; CC/HUN) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia W705', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W705 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100)) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV140;0001;0001) ; CC/JPN) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV140;0001;0001) KDL32W705B; CC/XAE) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia W705', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W705 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV140;0001;0001) KDL50W800B; CC/USA) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: 'Bravia W800', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia W800 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV140;0001;0001) KDLRB2; CC/CHN) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV140;0001;0001) KDLRB2T; CC/USA) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2 (00014A;SonyDTV140;0001;0001) XBR55X900B; CC/USA) Presto/2.12.407 Version/12.50' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.407 }, device: { type: television, manufacturer: Sony, model: XBR55X900, series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony XBR55X900 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KDL-50R550A; CC/USA) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia R550', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia R550 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KDL-60R520A; CC/AUS) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia R520', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia R520 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KDL-60R550A; CC/THA) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: 'Bravia R550', series: 'Smart TV' } } + readable: 'Opera Devices 3.4 on a Sony Bravia R550 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; Opera TV Store/4563; U; (SonyBDP/BDV12); xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.2 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; Opera TV Store/5581; (SonyBDP/BDV13)) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; Opera TV Store/5599; (SonyBDP/BDV14)) Presto/2.12.362 Version/12.11' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL32W600A; CC/CHN; xx) Presto/2.10.287 Version/12.00' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Sony, model: 'Bravia W600', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia W600 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KDL-40EX640; CC/USA; en) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, model: 'Bravia EX640', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia EX640 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KDL-46EX640; CC/USA; en) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: Sony, model: 'Bravia EX640', series: 'Smart TV' } } + readable: 'Opera Devices 3.0 on a Sony Bravia EX640 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KDL-46EX645; CC/USA; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, model: 'Bravia EX645', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia EX645 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KDL-55EX640; CC/USA; xx) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: Sony, model: 'Bravia EX640', series: 'Smart TV' } } + readable: 'Opera Devices 3.0 on a Sony Bravia EX640 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) KLV-55EX630; CC/ZAF; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; InettvBrowser/2.2(00014A;SonyDTV115;0002;0100) N/A; CC/USA; en) Presto/2.8.115 Version/11.10' + result: { browser: { name: 'Opera Devices', version: '3.0', type: browser }, engine: { name: Presto, version: 2.8.115 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.0 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; xx) Presto/2.10.287 Version/12.00 SonyCEBrowser/1.0 (KDL-42W805A; CTV/PKG3.009EUA; GBR)' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Sony, model: 'Bravia W805', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia W805 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; xx) Presto/2.10.287 Version/12.00 SonyCEBrowser/1.0 (KDL-47W802A; CTV/PKG3.208AAA; USA)' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Sony, model: 'Bravia W802', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia W802 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l; U; xx) Presto/2.10.287 Version/12.00 SonyCEBrowser/1.0 (ModelName; CTV/PKG0.002EUA; DEU)' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.287 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Sony; KDL22EX320; PKG4.022EUA; 2011;);; xx) Presto/2.7.61 Version/11.00' + result: { browser: { name: 'Opera Devices', version: '2.9', type: browser }, engine: { name: Presto, version: 2.7.61 }, device: { type: television, manufacturer: Sony, model: 'Bravia EX320', series: 'Smart TV' } } + readable: 'Opera Devices 2.9 on a Sony Bravia EX320 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Sony; KDL40HX751; PKG1.920EUA; 2012;);; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, model: 'Bravia HX751', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia HX751 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) ; CC/JPN; en) Presto/2.9.167 Version/11.50' + result: { browser: { name: 'Opera Devices', version: '3.1', type: browser }, engine: { name: Presto, version: 2.9.167 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 3.1 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) AZ2CVT2; CC/CAN; en) Presto/2.7.61 Version/11.00' + result: { browser: { name: 'Opera Devices', version: '2.9', type: browser }, engine: { name: Presto, version: 2.7.61 }, device: { type: television, manufacturer: Sony, series: 'Smart TV' } } + readable: 'Opera Devices 2.9 on a Sony Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL22EX540; CC/JPN; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, model: 'Bravia EX540', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia EX540 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL40NX655; CC/BRA; xx) Presto/2.10.250 Version/11.60' + result: { browser: { name: 'Opera Devices', version: '3.2', type: browser }, engine: { name: Presto, version: 2.10.250 }, device: { type: television, manufacturer: Sony, model: 'Bravia NX655', series: 'Smart TV' } } + readable: 'Opera Devices 3.2 on a Sony Bravia NX655 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux mips; U; InettvBrowser/2.2 (00014A;SonyDTV115;0002;0100) KDL46EX720; CC/POL; xx) Presto/2.7.61 Version/11.00' + result: { browser: { name: 'Opera Devices', version: '2.9', type: browser }, engine: { name: Presto, version: 2.7.61 }, device: { type: television, manufacturer: Sony, model: 'Bravia EX720', series: 'Smart TV' } } + readable: 'Opera Devices 2.9 on a Sony Bravia EX720 Smart TV' +- + headers: 'User-Agent: Opera/9.80(Linux armv6I; Opera TV Store/5530; Smart-BD; M; Linux/SmartBD; B-HM5160; Mediatek) Presto/2.12.362 Version/12.11 (3c:07:71:e7:5a:2c BDP-S1200_EUR M19.D.0046 M19.R.0035 M)' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Sony, model: BDP-S1200, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Sony BDP-S1200 Blu-ray Player' +- + headers: 'User-Agent: Mozilla/4.0 (NetworkAVTV; LocationFreeTV/LF-X5) NetFront/3.0' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Sony, model: 'LocationFreeTV LF-X5' } } + readable: 'NetFront 3.0 on a Sony LocationFreeTV LF-X5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 OPR/22.0.1481.0 OMI/4.2.12.34.ALSAN3.3 HbbTV/1.1.1 (; Sony; N/A; v1.000; 2015;) sony.hbbtv.tv.2015HE' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 35 }, version: '4.2', type: browser }, engine: { name: Blink }, device: { type: television, manufacturer: Sony } } + readable: 'Opera Devices 4.2 on a Sony' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; SVP-DTV15 Build/LMP) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 OPR/22.0.1481.0 OMI/4.2.13.63.Diamond.128' + readable: 'Opera Devices 4.2 on a Sony Bravia Android TV (2015) running Android TV' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 35 }, version: '4.2', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android }, device: { type: television, manufacturer: Sony, model: 'Bravia Android TV (2015)' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; SVP-DTV15 Build/LMP) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.57 Safari/537.36 OPR/28.0.1754.0 OMI/4.4.22.4.E102586-1.45' + readable: 'Opera Devices 4.4 on a Sony Bravia Android TV (2015) running Android TV' + result: { browser: { name: 'Opera Devices', family: { name: Chrome, version: 41 }, version: '4.4', type: browser }, engine: { name: Blink }, os: { name: 'Android TV', family: Android }, device: { type: television, manufacturer: Sony, model: 'Bravia Android TV (2015)' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/toshiba.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/toshiba.yaml new file mode 100644 index 0000000..7fb9d56 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/television/toshiba.yaml @@ -0,0 +1,116 @@ +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TSBNetTV/T32013713.0203.7DD; TVwithVideoPlayer; like Gecko) NetFront/4.1 DTVNetBrowser/2.2 (000039;T32013713;0203;7DD) InettvBrowser/2.2 (000039;T32013713;0203;7DD)' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront 4.1 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TSBNetTV/T33010302.0203.3DD; like Gecko) NetFront/3.4 DTVNetBrowser/2.2 (000039;T33010302;0203;3DD) InettvBrowser/2.2 (000039;T33010302;0203;3DD)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront 3.4 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TSBNetTV/T38014006.0203.0DD; TVwithVideoPlayer; like Gecko) NetFront/4.1 DTVNetBrowser/2.2 (000039;T38014006;0203;0DD) InettvBrowser/2.2 (000039;T38014006;0203;0DD) YahooDTV/2.0 (Video=0x03;Audio=0x01;Screen=0x01;Device=0x00;Remote=0x10)' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront 4.1 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TSBNetTV/T43011A02.0203.ADD; like Gecko) NetFront/3.4 DTVNetBrowser/2.2 (000039;T43011A02;0203;ADD) InettvBrowser/2.2 (000039;T43011A02;0203;ADD)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront 3.4 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TSBNetTV/T45000006.0203.CDD; like Gecko) NetFront/3.4 DTVNetBrowser/2.2 (000039;T45011C06;0203;CDD) InettvBrowser/2.2 (000039;T45011C06;0203;CDD)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront 3.4 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TSBNetTV/TXXXXXXXXX.0203.ADD; like Gecko) NetFront/3.4 DTVNetBrowser/2.2 (000039;TXXXXXXXXX;0203;ADD) InettvBrowser/2.2 (000039;TXXXXXXXXX;0203;ADD) YahooDTV/1.1 (Video=0x03;Audio=0x01;Screen=0x01;Device=0x00;Remote=0x10)' + result: { browser: { name: NetFront, version: '3.4', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront 3.4 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; 40PX200; 0.7.3.0.; t12; ) ; Toshiba_TP/1.3.0 (+VIDEO_MP4+AUDIO_MPEG+AUDIO_MP4+VIDEO_X_MS_ASF+OFFLINEAPP) ; en) AppleWebKit/534.1 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '534.1' }, device: { type: television, manufacturer: Toshiba, model: 'Regza PX200', series: 'Smart TV' } } + readable: 'a Toshiba Regza PX200 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; DTV_L4300; 7.2.67.18.01.1; a5; ) ; ToshibaTP/2.0.0 (+DRM) ; xx) AppleWebKit/537.4 (KHTML, like Gecko) TOSHIBA-DTV (DTV_L4300; 7.2.67.18.01.1; 2013A; NA)' + result: { engine: { name: Webkit, version: '537.4' }, device: { type: television, manufacturer: Toshiba, model: 'Regza L4300', series: 'Smart TV' } } + readable: 'a Toshiba Regza L4300 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; DTV_L4333; 7.1.90.34.01.1; a5; ) ; ToshibaTP/2.0.0 (+DRM) ; xx) AppleWebKit/537.4 (KHTML, like Gecko) TOSHIBA-DTV (DTV_L4333; 7.1.90.34.01.1; 2013A; EU)' + result: { engine: { name: Webkit, version: '537.4' }, device: { type: television, manufacturer: Toshiba, model: 'Regza L4333', series: 'Smart TV' } } + readable: 'a Toshiba Regza L4333 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; DTV_L4363; 7.1.90.30.01.1; a5; ) ; ToshibaTP/2.0.0 (+DRM) ; xx) AppleWebKit/537.4 (KHTML, like Gecko) TOSHIBA-DTV (DTV_L4363; 7.1.90.30.01.1; 2013A; EU)' + result: { engine: { name: Webkit, version: '537.4' }, device: { type: television, manufacturer: Toshiba, model: 'Regza L4363', series: 'Smart TV' } } + readable: 'a Toshiba Regza L4363 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; DTV_L7300; 7.2.67.14.01.1; a5; ) ; ToshibaTP/2.0.0 (+DRM) ; xx) AppleWebKit/537.4 (KHTML, like Gecko) TOSHIBA-DTV (DTV_L7300; 7.2.67.14.01.1; 2013A; NA)' + result: { engine: { name: Webkit, version: '537.4' }, device: { type: television, manufacturer: Toshiba, model: 'Regza L7300', series: 'Smart TV' } } + readable: 'a Toshiba Regza L7300 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; DTV_L7363; 7.1.68.00.01.1; a5; ) ; ToshibaTP/2.0.0 (+DRM+3D) ; xx) AppleWebKit/537.4 (KHTML, like Gecko) TOSHIBA-DTV (DTV_L7363; 7.1.68.00.01.1; 2013A; EU)' + result: { engine: { name: Webkit, version: '537.4' }, device: { type: television, manufacturer: Toshiba, model: 'Regza L7363', series: 'Smart TV' } } + readable: 'a Toshiba Regza L7363 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; DTV_RL933; 64.4.08.7; t12; ) ; ToshibaTP/1.3.0 (+VIDEO_MP4+VIDEO_X_MS_ASF+AUDIO_MPEG+AUDIO_MP4+DRM+NATIVELAUNCH+OFFLINEAPP+WEBSTORAGE) ; pl) AppleWebKit/534.1 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '534.1' }, device: { type: television, manufacturer: Toshiba, model: 'Regza RL933', series: 'Smart TV' } } + readable: 'a Toshiba Regza RL933 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; DTV_RL953; 56.7.66.7; t12; ) ; ToshibaTP/1.3.0 (+VIDEO_MP4+VIDEO_X_MS_ASF+AUDIO_MPEG+AUDIO_MP4+DRM+NATIVELAUNCH) ; en) AppleWebKit/534.1 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '534.1' }, device: { type: television, manufacturer: Toshiba, model: 'Regza RL953', series: 'Smart TV' } } + readable: 'a Toshiba Regza RL953 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux mipsel; U; HbbTV/1.1.1 (; TOSHIBA; DTV_TL838; 55.4.02.0; t12; ) ; ToshibaTP/1.3.0 (+VIDEO_MP4+VIDEO_X_MS_ASF+AUDIO_MPEG+AUDIO_MP4+DRM+3D) ; pl) AppleWebKit/534.1 (KHTML, like Gecko)' + result: { engine: { name: Webkit, version: '534.1' }, device: { type: television, manufacturer: Toshiba, model: 'Regza TL838', series: 'Smart TV' } } + readable: 'a Toshiba Regza TL838 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux ; xx) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.0.4 en-US;L7200 Version/4.0 Safari/531.2+' + result: { browser: { name: Espial, version: 6.0.4, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Toshiba, model: 'Regza L7200', series: 'Smart TV' } } + readable: 'Espial 6.0.4 on a Toshiba Regza L7200 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux ; xx) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.1.1 en-US;L7200 Version/4.0 Safari/531.2+' + result: { browser: { name: Espial, version: 6.1.1, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Toshiba, model: 'Regza L7200', series: 'Smart TV' } } + readable: 'Espial 6.1.1 on a Toshiba Regza L7200 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux; xx; DTV; TSBNetTV/T2F019608.0203.6DD) AppleWebKit/534(KHTML, like Gecko) NX/3.0 (DTV; HTML; R1.0;) DTVNetBrowser/2.2 (000039;T2F019608;0203;6DD) InettvBrowser/2.2 (000039;T2F019608;0203;6DD)' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront NX 3.0 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux; xx; DTV; TSBNetTV/T47016F08.0203.FDD) AppleWebKit/534(KHTML, like Gecko) NX/2.1 (DTV; HTML; R1.0;) DTVNetBrowser/2.2 (000039;T47016F08;0203;FDD) InettvBrowser/2.2 (000039;T47016F08;0203;FDD)' + result: { browser: { name: 'NetFront NX', version: '2.1', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront NX 2.1 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux; xx; DTV; TSBNetTV/T4D018C01.0203.CDD) AppleWebKit/534(KHTML, like Gecko) NX/3.0 (DTV; HTML; R1.0;) DTVNetBrowser/2.2 (000039;T4D018C01;0203;CDD) InettvBrowser/2.2 (000039;T4D018C01;0203;CDD)' + result: { browser: { name: 'NetFront NX', version: '3.0', type: browser }, engine: { name: Webkit, version: '534' }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront NX 3.0 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (QtEmbedded; Linux) AppleWebKit/537.4 (KHTML, like Gecko) MWB/1.0 Safari/537.4 HbbTV/1.1.1 (; TOSHIBA; MWB;;;)' + result: { browser: { using: Qt }, engine: { name: Webkit, version: '537.4' }, device: { type: television, manufacturer: Toshiba, model: MWB } } + readable: 'Qt on a Toshiba MWB' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5450; TOSHIBA;E8E0B7047FEF;BDX3400KB; 0.64) Presto/2.12.362 Version/12.10' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Toshiba, model: BDX3400, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Toshiba BDX3400 Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv6l; Opera TV Store/5450; TOSHIBA;E8E0B7F82B9B;BDX5400KB; 0.33) Presto/2.12.362 Version/12.10' + result: { browser: { name: 'Opera Devices', version: '3.4', type: browser }, engine: { name: Presto, version: 2.12.362 }, device: { type: television, manufacturer: Toshiba, model: BDX5400, series: 'Blu-ray Player' } } + readable: 'Opera Devices 3.4 on a Toshiba BDX5400 Blu-ray Player' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l ; U; HbbTV/1.1.1 (; TOSHIBA; 37SL863; 19.2.36.0; 3; ) ; ToshibaTP/1.1.0 () ; en) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Toshiba, model: 'Regza SL863', series: 'Smart TV' } } + readable: 'Opera Devices 2.8 on a Toshiba Regza SL863 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l ; U; HbbTV/1.1.1 (; TOSHIBA; 55WL863; 19.5.61.15; 3; ) ; ToshibaTP/1.3.0 (+VIDEO_X_MS_ASF+VIDEO_MP4+AUDIO_MPEG+AUDIO_MP4+DRM+3D) ; de) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Toshiba, model: 'Regza WL863', series: 'Smart TV' } } + readable: 'Opera Devices 2.8 on a Toshiba Regza WL863 Smart TV' +- + headers: 'User-Agent: Opera/9.80 (Linux armv7l ; U; HbbTV/1.1.1 (; TOSHIBA; 55ZL1; 19.7.61.14; 3; ) ; ToshibaTP/1.3.0 (+VIDEO_MP4+AUDIO_MPEG+AUDIO_MP4) ; de) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Toshiba, model: 'ZL1 Cevo', series: 'Smart TV' } } + readable: 'Opera Devices 2.8 on a Toshiba ZL1 Cevo Smart TV' +- + headers: 'User-Agent: mwb-db-client Opera/9.80 (Linux armv7l ; U; HbbTV/1.1.1 (; TOSHIBA; 32SL863; 19.2.39.208; 3; ) ; ToshibaTP/1.1.1 () ; xx) Presto/2.6.33 Version/10.60' + result: { browser: { name: 'Opera Devices', version: '2.8', type: browser }, engine: { name: Presto, version: 2.6.33 }, device: { type: television, manufacturer: Toshiba, model: 'Regza SL863', series: 'Smart TV' } } + readable: 'Opera Devices 2.8 on a Toshiba Regza SL863 Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (DTV; TSBNetTV /T33010307.0203.399; TvwithVideoPlayer; SWReleaseVer=22.1.46.0; AVP=1; DT=br; like Gecko) NetFront/4.1' + result: { browser: { name: NetFront, version: '4.1', type: browser }, engine: { name: NetFront }, device: { type: television, manufacturer: Toshiba, series: 'Smart TV' } } + readable: 'NetFront 4.1 on a Toshiba Smart TV' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux ; xx) AppleWebKit/531.2+ (KHTML, like Gecko) Espial/6.0.4 en-CA;L6200 Version/4.0 Safari/531.2+' + readable: 'Espial 6.0.4 on a Toshiba Regza L6200 Smart TV' + result: { browser: { name: Espial, version: 6.0.4, type: browser }, engine: { name: Webkit, version: '531.2' }, device: { type: television, manufacturer: Toshiba, model: 'Regza L6200', series: 'Smart TV' } } diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-android-wear.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-android-wear.yaml new file mode 100644 index 0000000..c035e38 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-android-wear.yaml @@ -0,0 +1,32 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4; G Watch Build/KMV78Y) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36' + result: { browser: { name: 'Wear Internet Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Android Wear', family: Android }, device: { type: watch, manufacturer: LG, model: 'G Watch' } } + readable: 'Wear Internet Browser on a LG G Watch running Android Wear' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4; G Watch Build/KNX01Q) AppleWebKit/537.36 (KHTML, like Gecko) WIB/0.9.8 Mobile Safari/537.36' + result: { browser: { name: 'Wear Internet Browser', version: 0.9.8, type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Android Wear', family: Android }, device: { type: watch, manufacturer: LG, model: 'G Watch' } } + readable: 'Wear Internet Browser 0.9.8 on a LG G Watch running Android Wear' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4; G Watch R Build/KNX01R) AppleWebKit/537.36 (KHTML, like Gecko) WIB/0.9.8 Mobile Safari/537.36' + result: { browser: { name: 'Wear Internet Browser', version: 0.9.8, type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Android Wear', family: Android }, device: { type: watch, manufacturer: LG, model: 'G Watch R' } } + readable: 'Wear Internet Browser 0.9.8 on a LG G Watch R running Android Wear' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4; Gear Live Build/KMV78X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36' + result: { browser: { name: 'Wear Internet Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Android Wear', family: Android }, device: { type: watch, manufacturer: Samsung, model: 'Gear Live' } } + readable: 'Wear Internet Browser on a Samsung Gear Live running Android Wear' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4; Moto 360 Build/KNX01S) AppleWebKit/537.36 (KHTML, like Gecko) WIB/0.9.8 Mobile Safari/537.36' + result: { browser: { name: 'Wear Internet Browser', version: 0.9.8, type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Android Wear', family: Android }, device: { type: watch, manufacturer: Motorola, model: 'Moto 360' } } + readable: 'Wear Internet Browser 0.9.8 on a Motorola Moto 360 running Android Wear' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.1; ASUS ZenWatch Build/LWX48S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36' + result: { browser: { name: 'Wear Internet Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Android Wear', family: Android }, device: { type: watch, manufacturer: Asus, model: ZenWatch } } + readable: 'Wear Internet Browser on an Asus ZenWatch running Android Wear' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; SmartWatch 3 Build/LWX49K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Mobile Safari/537.36' + result: { browser: { name: 'Wear Internet Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: 'Android Wear', family: Android }, device: { type: watch, manufacturer: Sony, model: 'SmartWatch 3' } } + readable: 'Wear Internet Browser on a Sony SmartWatch 3 running Android Wear' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; G Watch R Build/LCA44B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Crosswalk/15.44.384.12 Mobile Safari/537.36' + result: { browser: { using: { name: 'Crosswalk WebView', version: '15' } }, engine: { name: Blink }, os: { name: 'Android Wear', family: Android }, device: { type: watch, manufacturer: LG, model: 'G Watch R' } } + readable: 'Crosswalk WebView 15 on a LG G Watch R running Android Wear' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-android.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-android.yaml new file mode 100644 index 0000000..afa9597 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-android.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 2.3.4; Motorola-F100 Build/4.5.1-26_G2-436_US-MR7-24) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.45 Mobile Safari/537.36 OPR/15.0.1162.59192' + result: { browser: { name: Opera, family: { name: Chrome, version: 28 }, version: '15.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: 2.3.4 }, device: { type: watch, manufacturer: Motorola, model: MOTOACTV } } + readable: 'Opera 15.0 on a Motorola MOTOACTV running Android 2.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; NT-1501C Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: watch, manufacturer: IconBit, model: 'NetTab Callisto 100' } } + readable: 'Android Browser on an IconBit NetTab Callisto 100 running Android 4.2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; xx; SM-V700 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: watch, manufacturer: Samsung, model: 'Galaxy Gear' } } + readable: 'Android Browser on a Samsung Galaxy Gear running Android 4.2.2' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-tizen.yaml b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-tizen.yaml new file mode 100644 index 0000000..2539606 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/data/watch/os-tizen.yaml @@ -0,0 +1,12 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2.1.3; SAMSUNG SM-R750) AppleWebKit/538.1 (KHTML, like Gecko) Version/2.2.1.3 Mobile Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: 2.2.1.3 }, device: { type: watch, manufacturer: Samsung, model: 'Gear S' } } + readable: 'a Samsung Gear S running Tizen 2.2.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2.1.3; SAMSUNG SM-R750A) AppleWebKit/538.1 (KHTML, like Gecko) Version/2.2.1.3 Mobile Safari/538.1' + result: { engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: 2.2.1.3 }, device: { type: watch, manufacturer: Samsung, model: 'Gear S' } } + readable: 'a Samsung Gear S running Tizen 2.2.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Tizen 2.2.1.3; SM-R750) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.76 efl-webengine/0.1.1.1 Mobile Safari/537.36' + result: { browser: { family: { name: Chrome, version: 34 } }, engine: { name: Blink }, os: { name: Tizen, version: 2.2.1.3 }, device: { type: watch, manufacturer: Samsung, model: 'Gear S' } } + readable: 'a Samsung Gear S running Tizen 2.2.1.3' diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/Testrunner.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/Testrunner.php new file mode 100644 index 0000000..21c08e7 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/Testrunner.php @@ -0,0 +1,244 @@ +<?php + +namespace WhichBrowser; + +use Symfony\Component\Yaml\Yaml; + +class Testrunner +{ + public static function compare($files, $skipManufacturers = false) + { + @unlink('runner.log'); + + $result = true; + + foreach ($files as $file) { + if ($skipManufacturers && substr(basename($file), 0, 13) == 'manufacturer-') { + continue; + } + $result = self::compareFile($file, $skipManufacturers) && $result; + } + + return $result; + } + + private static function compareFile($file) + { + $fp = fopen('runner.log', 'a+'); + + $name = basename(dirname($file)) . DIRECTORY_SEPARATOR . basename($file); + + $success = 0; + $failed = 0; + $total = 0; + $rebase = false; + $found = false; + + if (file_exists($file)) { + $found = true; + + $rules = Yaml::parse(file_get_contents($file)); + + foreach ($rules as $rule) { + $options = $rule; + + if (isset($options['headers']) && is_string($options['headers'])) { + $options['headers'] = http_parse_headers($options['headers']); + } + + if (isset($options['result'])) { + unset($options['result']); + } + + $detected = new Parser($options); + + if (isset($rule['result'])) { + if ($detected->toArray() != $rule['result'] || $detected->toString() != $rule['readable']) { + fwrite($fp, "\n{$name}\n--------------\n\n"); + + if ($detected->toString() != $rule['readable']) { + fwrite($fp, $rule['readable'] . "\n"); + fwrite($fp, $detected->toString() . "\n\n"); + } else { + fwrite($fp, $detected->toString() . "\n\n"); + } + + if (isset($options['headers'])) { + foreach ($options['headers'] as $k => $v) { + fwrite($fp, $k . ': ' . $v . "\n"); + } + } + + fwrite($fp, "\n"); + fwrite($fp, "Base:\n"); + fwrite($fp, Yaml::dump($rule['result']) . "\n"); + fwrite($fp, "Calculated:\n"); + fwrite($fp, Yaml::dump($detected->toArray()) . "\n"); + + $failed++; + } else { + $success++; + } + } else { + fwrite($fp, "\n{$name}\n--------------\n\n"); + fwrite($fp, $detected->toString() . "\n\n"); + + if (isset($options['headers'])) { + foreach ($options['headers'] as $k => $v) { + fwrite($fp, $k . ': ' . $v . "\n"); + } + } + + fwrite($fp, "\n"); + fwrite($fp, "New result:\n"); + + try { + fwrite($fp, Yaml::dump($detected->toArray()) . "\n"); + } catch (Exception $e) { + echo $rule['headers'] . "\n"; + var_dump($detected); + } + $rebase = true; + } + + $total++; + } + } + + fclose($fp); + + $counter = "[{$success}/{$total}]"; + + echo $success == $total && $found ? "\033[0;32m" : "\033[0;31m"; + echo $counter; + echo "\033[0m"; + echo str_repeat(' ', 16 - strlen($counter)); + echo $name; + echo (!$found ? "\t\t\033[0;31m => file not found!\033[0m" : ""); + echo ($rebase ? "\t\t\033[0;31m => rebase required!\033[0m" : ""); + echo "\n"; + + return $success == $total && !$rebase; + } + + public static function search($files, $query = '') + { + foreach ($files as $file) { + self::searchFile($file, $query); + } + } + + private static function searchFile($file, $query) + { + $rules = self::sortRules(Yaml::parse(file_get_contents($file))); + + foreach ($rules as $rule) { + if (is_string($rule['headers'])) { + $rule['headers'] = http_parse_headers($rule['headers']); + } + + if (isset($rule['headers']['User-Agent'])) { + echo $rule['headers']['User-Agent'] . "\n"; + } + } + } + + public static function rebase($files, $sort) + { + foreach ($files as $file) { + self::rebaseFile($file, $sort); + } + } + + private static function rebaseFile($file, $sort) + { + $result = []; + + if (file_exists($file)) { + $rules = Yaml::parse(file_get_contents($file)); + + if (is_array($rules)) { + echo "Rebasing {$file}\n"; + + foreach ($rules as $k => $v) { + if (is_string($rules[$k]['headers'])) { + $rules[$k]['headers'] = http_parse_headers($rules[$k]['headers']); + } + } + + if ($sort) { + $rules = self::sortRules($rules); + } + + foreach ($rules as $rule) { + if (count($rule['headers']) > 1) { + $headers = $rule['headers']; + } else { + $key = array_keys($rule['headers'])[0]; + $headers = $key . ': ' . $rule['headers'][$key]; + } + + $options = $rule; + + if (isset($options['result'])) { + unset($options['result']); + } + + $detected = new Parser($options); + + $rule['headers'] = $headers; + $rule['readable'] = $detected->toString(); + $rule['result'] = $detected->toArray(); + + $result[] = $rule; + } + + if (count($result)) { + if (count($result) == count($rules)) { + if ($string = Yaml::dump($result)) { + file_put_contents($file . '.tmp', $string); + + rename($file, $file . '.old'); + rename($file . '.tmp', $file); + unlink($file . '.old'); + } + } else { + echo "Rebasing {$file}\t\t\033[0;31m => output does not match input\033[0m\n"; + } + } else { + echo "Rebasing {$file}\t\t\033[0;31m => no results found\033[0m\n"; + } + } else { + echo "Rebasing {$file}\t\t\033[0;31m => error reading file\033[0m\n"; + } + } else { + echo "Rebasing {$file}\t\t\033[0;31m => file not found\033[0m\n"; + } + } + + private static function sortRules($rules) + { + usort($rules, function ($a, $b) { + $ah = $a['headers']; + $bh = $b['headers']; + + $as = ''; + $bs = ''; + + if (isset($ah['User-Agent'])) { + $as = $ah['User-Agent']; + } + if (isset($bh['User-Agent'])) { + $bs = $bh['User-Agent']; + } + + if ($ah == $bh) { + return 0; + } + + return ($ah > $bh) ? +1 : -1; + }); + + return $rules; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/Tests.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/Tests.php new file mode 100644 index 0000000..5dac495 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/Tests.php @@ -0,0 +1,16 @@ +<?php + +namespace WhichBrowser; + +class Tests +{ + public static function getAll() + { + return glob(__DIR__ . '/../data/*/*.yaml'); + } + + public static function getFromCategory($category) + { + return glob(__DIR__ . '/../data/' . $category . '/*.yaml'); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/polyfills.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/polyfills.php new file mode 100644 index 0000000..5591551 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/src/polyfills.php @@ -0,0 +1,35 @@ +<?php + +if (!function_exists('http_parse_headers')) { + function http_parse_headers($raw_headers) + { + $headers = array(); + $key = ''; + + foreach (explode("\n", $raw_headers) as $i => $h) { + $h = explode(':', $h, 2); + + if (isset($h[1])) { + if (!isset($headers[$h[0]])) { + $headers[$h[0]] = trim($h[1]); + } elseif (is_array($headers[$h[0]])) { + $headers[$h[0]] = array_merge($headers[$h[0]], array(trim($h[1]))); + } else { + $headers[$h[0]] = array_merge(array($headers[$h[0]]), array(trim($h[1]))); + } + + $key = $h[0]; + } else { + if (substr($h[0], 0, 1) == "\t") { + $headers[$key] .= "\r\n\t".trim($h[0]); + } elseif (!$key) { + $headers[0] = trim($h[0]); + } + + trim($h[0]); + } + } + + return $headers; + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/AnalyserTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/AnalyserTest.php new file mode 100644 index 0000000..6014cb3 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/AnalyserTest.php @@ -0,0 +1,44 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Analyser; +use WhichBrowser\Model\Main; + +/** + * @covers WhichBrowser\Analyser + */ +class AnalyserTest extends PHPUnit_Framework_TestCase +{ + public function testCreatingAnalyserGetData() + { + $analyser = new Analyser([ "User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)" ]); + + $this->assertTrue($analyser instanceof \WhichBrowser\Analyser); + + $analyser->analyse(); + + $data = $analyser->getData(); + + $this->assertTrue($data instanceof \WhichBrowser\Model\Main); + } + + public function testCreatingAnalyserSetData() + { + $analyser = new Analyser([ "User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)" ]); + + $this->assertTrue($analyser instanceof \WhichBrowser\Analyser); + + $input = new Main(); + + $this->assertTrue($input instanceof \WhichBrowser\Model\Main); + + $analyser->setData($input); + + $analyser->analyse(); + + $output = $analyser->getData(); + + $this->assertTrue($output instanceof \WhichBrowser\Model\Main); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/CacheTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/CacheTest.php new file mode 100644 index 0000000..4a750eb --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/CacheTest.php @@ -0,0 +1,62 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Parser; +use Cache\Adapter\PHPArray\ArrayCachePool; + +/** + * @covers WhichBrowser\Cache + * @covers WhichBrowser\Parser::analyse + */ +class CacheTest extends PHPUnit_Framework_TestCase +{ + public function testCreatingParserWithoutArgumentsAndCallAnalyse() + { + if (!class_exists('Cache\Adapter\PHPArray\ArrayCachePool')) { + return; + } + + function countCachedItems($pool) { + $items = 0; + + $reflector = new \ReflectionClass($pool); + if ($reflector->hasProperty('cache')) { + $property = $reflector->getProperty('cache'); + $property->setAccessible(true); + $items = count($property->getValue($pool)); + } + + return $items; + } + + $pool = new ArrayCachePool(); + + $this->assertEquals(0, countCachedItems($pool)); + + $parser = new Parser(); + $parser->setCache($pool); + $parser->analyse("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)"); + $result = $parser->toArray(); + + $this->assertEquals(1, countCachedItems($pool)); + $this->assertEquals(false, $parser->cached); + + $parser = new Parser(); + $parser->setCache($pool); + $parser->analyse("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)"); + + $this->assertEquals($result, $parser->toArray()); + $this->assertEquals(true, $parser->cached); + + $parser = new Parser("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)", [ 'cache' => $pool ]); + + $this->assertEquals($result, $parser->toArray()); + $this->assertEquals(true, $parser->cached); + + $parser = new Parser("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)", [ 'cache' => $pool, 'cacheExpires' => 0 ]); + + $this->assertEquals($result, $parser->toArray()); + $this->assertEquals(true, $parser->cached); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/BrowserTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/BrowserTest.php new file mode 100644 index 0000000..f3313fa --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/BrowserTest.php @@ -0,0 +1,237 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Constants; +use WhichBrowser\Model\Browser; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Using; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Browser + */ +class BrowserTest extends PHPUnit_Framework_TestCase +{ + public function testDefaults() + { + $browser = new Browser(); + + $this->assertEquals(true, $browser->stock); + $this->assertEquals(false, $browser->hidden); + $this->assertEquals('', $browser->mode); + $this->assertEquals('', $browser->type); + } + + public function testReset() + { + $browser = new Browser([ + 'stock' => false, + 'hidden' => true, + 'mode' => 'xxxx', + 'type' => 'xxxx' + ]); + + $browser->reset(); + + $this->assertEquals(true, $browser->stock); + $this->assertEquals(false, $browser->hidden); + $this->assertEquals('', $browser->mode); + $this->assertEquals('', $browser->type); + } + + public function testGetName() + { + $browser = new Browser(); + + $this->assertEquals('', $browser->getName()); + + $browser->reset([ + 'name' => 'Chrome', + 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) + ]); + + $this->assertEquals('Chrome', $browser->getName()); + } + + public function testGetVersion() + { + $browser = new Browser(); + + $this->assertEquals('', $browser->getVersion()); + + $browser->reset([ + 'name' => 'Chrome', + 'version' => new Version([ 'value' => '47.0.2524.23' ]) + ]); + + $this->assertEquals('47.0.2524.23', $browser->getVersion()); + + $browser->reset([ + 'name' => 'Chrome', + 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) + ]); + + $this->assertEquals('47', $browser->getVersion()); + } + + public function testIsDetected() + { + $browser = new Browser(); + + $this->assertFalse($browser->isDetected()); + + $browser->reset([ + 'name' => 'Chrome', + 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) + ]); + + $this->assertTrue($browser->isDetected()); + } + + public function testIsFamily() + { + $browser = new Browser(); + + $this->assertFalse($browser->isFamily('Chrome')); + + $browser->reset([ + 'name' => 'Chrome' + ]); + + $this->assertTrue($browser->isFamily('Chrome')); + + $browser->reset([ + 'name' => 'Opera', + 'family' => new Family([ 'name' => 'Chrome' ]) + ]); + + $this->assertTrue($browser->isFamily('Chrome')); + + $browser->reset([ + 'name' => 'Opera', + 'family' => new Family([ 'name' => 'Chrome' ]) + ]); + + $this->assertFalse($browser->isFamily('Firefox')); + } + + public function testIsToString() + { + $browser = new Browser(); + + $this->assertEquals('', $browser->toString()); + + $browser->reset([ + 'name' => 'Chrome', + 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) + ]); + + $this->assertEquals('Chrome 47', $browser->toString()); + + $browser->reset([ + 'name' => 'Safari', + 'version' => new Version([ 'value' => '8.0' ]), + 'hidden' => true + ]); + + $this->assertEquals('', $browser->toString()); + + $browser->reset([ + 'name' => 'TestBrowser', + 'using' => new Using([ 'name' => 'Crosswalk Webview' ]) + ]); + + $this->assertEquals('TestBrowser', $browser->toString()); + + $browser->reset([ + 'using' => new Using([ 'name' => 'Crosswalk Webview' ]) + ]); + + $this->assertEquals('Crosswalk Webview', $browser->toString()); + + $browser->reset([ + 'name' => 'BlackBerry Browser', + 'hidden' => true + ]); + + $this->assertEquals('', $browser->toString()); + + } + + public function testIdentifyVersion() + { + $browser = new Browser(); + + $browser->identifyVersion('/Chrome\/([0-9\.]+)/u', 'Chrome/47.0.2526.73', [ 'details' => 1 ]); + + $this->assertEquals('47', $browser->getVersion()); + + + $browser->reset(); + + $browser->identifyVersion('/Mozilla\/([0-9\.]+)/u', 'Mozilla/2.03', [ 'type' => 'legacy' ]); + + $this->assertEquals('2.0.3', $browser->getVersion()); + + + $browser->reset(); + + $browser->identifyVersion('/Safari\/([0-9\.]+)/u', 'Chrome\/47.0.2526.73'); + + $this->assertEquals('', $browser->getVersion()); + } + + public function testToArray() + { + $browser = new Browser(); + + $this->assertEquals([], $browser->toArray()); + + $browser->set([ + 'name' => '' + ]); + + $this->assertEquals([], $browser->toArray()); + + $browser->reset([ + 'name' => 'Chrome', + 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) + ]); + + $this->assertEquals([ + 'name' => 'Chrome', + 'version' => '47' + ], $browser->toArray()); + + $browser->reset([ + 'name' => 'TestBrowser', + 'alias' => 'Alias' + ]); + + $this->assertEquals([ + 'name' => 'TestBrowser', + 'alias' => 'Alias' + ], $browser->toArray()); + + $browser->reset([ + 'name' => 'Opera', + 'family' => new Family([ 'name' => 'Chrome' ]) + ]); + + $this->assertEquals([ + 'name' => 'Opera', + 'family' => 'Chrome' + ], $browser->toArray()); + + $browser->reset([ + 'name' => 'TestBrowser', + 'using' => new Using([ 'name' => 'Crosswalk WebView' ]) + ]); + + $this->assertEquals([ + 'name' => 'TestBrowser', + 'using' => 'Crosswalk WebView' + ], $browser->toArray()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/DeviceTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/DeviceTest.php new file mode 100644 index 0000000..2ffc45f --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/DeviceTest.php @@ -0,0 +1,298 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Constants; +use WhichBrowser\Model\Device; + +/** + * @covers WhichBrowser\Model\Device + */ +class DeviceTest extends PHPUnit_Framework_TestCase +{ + public function testDefaults() + { + $device = new Device(); + + $this->assertEquals(true, $device->generic); + $this->assertEquals(Constants\Id::NONE, $device->identified); + $this->assertEquals('', $device->type); + $this->assertEquals('', $device->subtype); + } + + public function testEmpty() + { + $device = new Device(); + + $this->assertEquals('', $device->getManufacturer()); + $this->assertEquals('', $device->getModel()); + $this->assertEquals('', $device->getCarrier()); + } + + public function testWithDefaults() + { + $device = new Device([ 'model' => 'Wii' ]); + + $this->assertEquals('Wii', $device->getModel()); + } + + public function testSet() + { + $device = new Device(); + + $device->set([ 'model' => 'Wii' ]); + + $this->assertEquals('Wii', $device->getModel()); + } + + public function testSetIdenfication() + { + $device = new Device(); + + $device->setIdentification([ + 'manufacturer' => 'Microsoft', + 'model' => 'Xbox One' + ]); + + $this->assertEquals('Microsoft', $device->getManufacturer()); + $this->assertEquals('Xbox One', $device->getModel()); + $this->assertEquals(false, $device->generic); + } + + public function testReset() + { + $device = new Device(); + + $device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'Wii' + ]); + + $this->assertEquals('Nintendo', $device->getManufacturer()); + $this->assertEquals('Wii', $device->getModel()); + $this->assertEquals(false, $device->generic); + + $device->reset(); + + $this->assertEquals('', $device->getManufacturer()); + $this->assertEquals('', $device->getModel()); + + $this->assertEquals(true, $device->generic); + $this->assertEquals(Constants\Id::NONE, $device->identified); + $this->assertEquals('', $device->type); + $this->assertEquals('', $device->subtype); + } + + public function testResetWithDefaults() + { + $device = new Device(); + + $device->setIdentification([ 'model' => 'Wii' ]); + + $this->assertEquals('Wii', $device->getModel()); + $this->assertEquals(false, $device->generic); + + $device->reset([ 'model' => 'Xbox One' ]); + + $this->assertEquals('Xbox One', $device->getModel()); + $this->assertEquals(true, $device->generic); + } + + public function testModelNoSeries() + { + $device = new Device(); + + $device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'Wii' + ]); + + $this->assertEquals('Nintendo', $device->getManufacturer()); + $this->assertEquals('Wii', $device->getModel()); + + $this->assertEquals('Nintendo', $device->manufacturer); + $this->assertEquals('Wii', $device->model); + $this->assertEquals(false, $device->generic); + } + + public function testSeriesNoModel() + { + $device = new Device(); + + $device->setIdentification([ + 'manufacturer' => 'Kobo', + 'series' => 'eReader' + ]); + + $this->assertEquals('Kobo', $device->getManufacturer()); + $this->assertEquals('eReader', $device->getModel()); + + $this->assertEquals('Kobo', $device->manufacturer); + $this->assertEquals('eReader', $device->series); + $this->assertEquals(true, $device->generic); + } + + public function testModelAndSeries() + { + $device = new Device(); + + $device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'PRS-T2', + 'series' => 'Reader' + ]); + + $this->assertEquals('Sony', $device->getManufacturer()); + $this->assertEquals('PRS-T2 Reader', $device->getModel()); + + $this->assertEquals('Sony', $device->manufacturer); + $this->assertEquals('PRS-T2', $device->model); + $this->assertEquals('Reader', $device->series); + $this->assertEquals(false, $device->generic); + } + + public function testCarrier() + { + $device = new Device(); + + $device->setIdentification([ + 'manufacturer' => 'NEC', + 'model' => 'N2002', + 'carrier' => 'DoCoMo', + ]); + + $this->assertEquals('DoCoMo', $device->getCarrier()); + $this->assertEquals('DoCoMo', $device->carrier); + $this->assertEquals(false, $device->generic); + } + + + public function testSetWithoutIdentified() + { + $device = new Device(); + + $device->set([ + 'manufacturer' => 'Microsoft', + 'model' => 'Xbox One', + ]); + + $this->assertEquals('', $device->getManufacturer()); + $this->assertEquals('Xbox One', $device->getModel()); + $this->assertEquals(true, $device->generic); + } + + public function testToString() + { + $device = new Device(); + + $this->assertEquals('', $device->toString()); + + $device->setIdentification([ + 'manufacturer' => 'Kobo', + 'series' => 'eReader' + ]); + + $this->assertEquals('Kobo eReader', $device->toString()); + + $device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'Wii' + ]); + + $this->assertEquals('Nintendo Wii', $device->toString()); + + $device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'PRS-T2', + 'series' => 'Reader' + ]); + + $this->assertEquals('Sony PRS-T2 Reader', $device->toString()); + + $device->setIdentification([ + 'manufacturer' => 'Apple', + 'model' => 'AppleTV' + ]); + + $this->assertEquals('AppleTV', $device->toString()); + + $device->setIdentification([ + 'manufacturer' => 'OUYA', + 'model' => 'OUYA' + ]); + + $this->assertEquals('OUYA', $device->toString()); + + $device->setIdentification([ + 'manufacturer' => 'Apple', + 'model' => 'Macintosh', + 'hidden' => true + ]); + + $this->assertEquals('', $device->toString()); + } + + public function testDetected() + { + $device = new Device(); + + $this->assertFalse($device->isDetected()); + + $device->set([ + 'manufacturer' => 'Microsoft', + 'model' => 'Xbox One', + ]); + + $this->assertTrue($device->isDetected()); + + $device->reset(); + + $this->assertFalse($device->isDetected()); + + $device->set([ 'model' => 'Xbox One' ]); + + $this->assertTrue($device->isDetected()); + + $device->set([ 'manufacturer' => 'Microsoft' ]); + + $this->assertTrue($device->isDetected()); + } + + public function testToArray() + { + $device = new Device(); + + $this->assertEquals([], $device->toArray()); + + $device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation 4', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + + $this->assertEquals([ + 'manufacturer' => 'Sony', + 'model' => 'Playstation 4', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ], $device->toArray()); + + + $device->setIdentification([ + 'manufacturer' => 'NEC', + 'model' => 'N2002', + 'carrier' => 'DoCoMo', + 'type' => Constants\DeviceType::MOBILE, + 'subtype' => Constants\DeviceSubType::FEATURE + ]); + + $this->assertEquals([ + 'manufacturer' => 'NEC', + 'model' => 'N2002', + 'carrier' => 'DoCoMo', + 'type' => Constants\DeviceType::MOBILE, + 'subtype' => Constants\DeviceSubType::FEATURE + ], $device->toArray()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/EngineTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/EngineTest.php new file mode 100644 index 0000000..b98e3e1 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/EngineTest.php @@ -0,0 +1,138 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Constants; +use WhichBrowser\Model\Engine; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Engine + */ +class EngineTest extends PHPUnit_Framework_TestCase +{ + public function testGetName() + { + $engine = new Engine(); + + $this->assertEquals('', $engine->getName()); + + $engine->reset([ + 'name' => 'WebKit', + 'version' => new Version([ 'value' => '601.3.9' ]) + ]); + + $this->assertEquals('WebKit', $engine->getName()); + + $engine->reset([ + 'name' => 'WebKit', + 'alias' => 'Blink', + 'version' => new Version([ 'value' => '601.3.9' ]) + ]); + + $this->assertEquals('Blink', $engine->getName()); + } + + public function testGetVersion() + { + $engine = new Engine(); + + $this->assertEquals('', $engine->getVersion()); + + $engine->reset([ + 'name' => 'WebKit', + 'version' => new Version([ 'value' => '601.3.9' ]) + ]); + + $this->assertEquals('601.3.9', $engine->getVersion()); + + $engine->reset([ + 'name' => 'WebKit', + 'version' => new Version([ 'value' => '601.3.9', 'details' => 1 ]) + ]); + + $this->assertEquals('601', $engine->getVersion()); + } + + public function testIsDetected() + { + $engine = new Engine(); + + $this->assertFalse($engine->isDetected()); + + $engine->reset([ + 'name' => 'WebKit', + 'version' => new Version([ 'value' => '601.3.9' ]) + ]); + + $this->assertTrue($engine->isDetected()); + } + + public function testIsToString() + { + $engine = new Engine(); + + $this->assertEquals('', $engine->toString()); + + $engine->reset([ + 'name' => 'WebKit', + 'version' => new Version([ 'value' => '601.3.9' ]) + ]); + + $this->assertEquals('WebKit 601.3.9', $engine->toString()); + + $engine->reset([ + 'name' => 'WebKit', + 'alias' => 'Blink', + 'version' => new Version([ 'value' => '601.3.9' ]) + ]); + + $this->assertEquals('Blink 601.3.9', $engine->toString()); + } + + public function testIdentifyVersion() + { + $engine = new Engine(); + + $engine->identifyVersion('/AppleWebKit\/([0-9\.]+)/u', 'AppleWebKit/601.3.9'); + + $this->assertEquals('601.3.9', $engine->getVersion()); + + + $engine->reset(); + + $engine->identifyVersion('/AppleWebKit\/([0-9\.]+)/u', 'Gecko/19.0'); + + $this->assertEquals('', $engine->getVersion()); + + + $engine->reset(); + + $engine->identifyVersion('/AppleWebKit\/([0-9\.]+)/u', 'AppleWebKit/601.3.9', [ 'details' => 1]); + + $this->assertEquals('601', $engine->getVersion()); + } + + public function testToArray() + { + $engine = new Engine(); + + $this->assertEquals([], $engine->toArray()); + + $engine->set([ + 'name' => null + ]); + + $this->assertEquals([], $engine->toArray()); + + $engine->reset([ + 'name' => 'WebKit', + 'version' => new Version([ 'value' => '601.3.9' ]) + ]); + + $this->assertEquals([ + 'name' => 'WebKit', + 'version' => '601.3.9' + ], $engine->toArray()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/FamilyTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/FamilyTest.php new file mode 100644 index 0000000..8251a57 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/FamilyTest.php @@ -0,0 +1,72 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Constants; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Family + */ +class FamilyTest extends PHPUnit_Framework_TestCase +{ + public function testGetName() + { + $family = new Family(); + + $this->assertEquals('', $family->getName()); + + $family->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => '4.1.1' ]) + ]); + + $this->assertEquals('Android', $family->getName()); + } + + public function testGetVersion() + { + $family = new Family(); + + $this->assertEquals('', $family->getVersion()); + + $family->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => '4.1.1' ]) + ]); + + $this->assertEquals('4.1.1', $family->getVersion()); + } + + public function testIsToString() + { + $family = new Family(); + + $this->assertEquals('', $family->toString()); + + $family->reset([ + 'name' => 'Android', + 'version' => new Version([ 'value' => '4.1.1' ]) + ]); + + $this->assertEquals('Android 4.1.1', $family->toString()); + } + + public function testToArray() + { + $family = new Family(); + + $this->assertEquals([], $family->toArray()); + + $family->set([ + 'name' => 'Android', + 'version' => new Version([ 'value' => '4.1.1' ]) + ]); + + $this->assertEquals([ + 'name' => 'Android', + 'version' => '4.1.1' + ], $family->toArray()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/MainTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/MainTest.php new file mode 100644 index 0000000..a3bed82 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/MainTest.php @@ -0,0 +1,356 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Constants; +use WhichBrowser\Model\Main; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Main + */ +class MainTest extends PHPUnit_Framework_TestCase +{ + public function testEmpty() + { + $main = new Main(); + + $this->assertTrue($main->browser instanceof \WhichBrowser\Model\Browser); + $this->assertTrue($main->engine instanceof \WhichBrowser\Model\Engine); + $this->assertTrue($main->os instanceof \WhichBrowser\Model\Os); + $this->assertTrue($main->device instanceof \WhichBrowser\Model\Device); + } + + public function testIs() + { + $main = new Main(); + + $this->assertFalse($main->isBrowser('Chrome')); + $this->assertFalse($main->isBrowser('Chrome', '=', '40')); + $this->assertFalse($main->isOs('OS X')); + $this->assertFalse($main->isEngine('WebKit')); + + + $main->browser->set([ + 'name' => 'Chrome', + 'version' => new Version([ 'value' => '40.0.2214', 'details' => 1 ]) + ]); + + $this->assertTrue($main->isBrowser('Chrome')); + + $this->assertFalse($main->isBrowser()); + $this->assertFalse($main->isBrowser('Safari')); + + $this->assertTrue($main->isBrowser('Chrome', '=', '40')); + $this->assertTrue($main->isBrowser('Chrome', '>=', '40')); + $this->assertTrue($main->isBrowser('Chrome', '<=', '40')); + $this->assertTrue($main->isBrowser('Chrome', '>', '39')); + $this->assertTrue($main->isBrowser('Chrome', '<', '41')); + + $this->assertFalse($main->isBrowser('Chrome', '=', '39')); + $this->assertFalse($main->isBrowser('Chrome', '>=', '41')); + $this->assertFalse($main->isBrowser('Chrome', '<=', '39')); + $this->assertFalse($main->isBrowser('Chrome', '>', '40')); + $this->assertFalse($main->isBrowser('Chrome', '<', '40')); + + + $main->os->set([ + 'name' => 'OS X', + 'version' => new Version([ 'value' => '10.11.1', 'details' => 2 ]) + ]); + + $this->assertTrue($main->isOs('OS X')); + + $this->assertTrue($main->isOs('OS X', '=', '10')); + $this->assertTrue($main->isOs('OS X', '=', '10.11')); + $this->assertTrue($main->isOs('OS X', '=', '10.11.1')); + $this->assertTrue($main->isOs('OS X', '=', '10.11.01')); + + $this->assertTrue($main->isOs('OS X', '=', 10)); + $this->assertTrue($main->isOs('OS X', '=', 10.11)); + + $this->assertTrue($main->isOs('OS X', '>', '10.1')); + $this->assertTrue($main->isOs('OS X', '>', '10.01')); + $this->assertTrue($main->isOs('OS X', '>', '10.10')); + + $this->assertFalse($main->isOs('OS X', '>', '10')); + $this->assertFalse($main->isOs('OS X', '>', '10.11')); + + + $main->engine->set([ + 'name' => 'WebKit' + ]); + + $this->assertTrue($main->isEngine('WebKit')); + $this->assertFalse($main->isEngine('WebKit', '=', '523')); + } + + public function testIsDevice() + { + $main = new Main(); + + $main->device->setIdentification([ + 'manufacturer' => 'Sony', + 'model' => 'PRS-T2', + 'series' => 'Reader' + ]); + + $this->assertTrue($main->isDevice('Reader')); + $this->assertTrue($main->isDevice('PRS-T2')); + } + + public function testIsDetected() + { + $main = new Main(); + + $this->assertFalse($main->isDetected()); + + $main->browser->set([ 'name' => 'Chrome', 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) ]); + + $this->assertTrue($main->isDetected()); + } + + public function testIsMobile() + { + $main = new Main(); + + $main->device->setIdentification([ + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + + $this->assertFalse($main->isMobile()); + + $main->device->reset([ + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::PORTABLE + ]); + + $this->assertTrue($main->isMobile()); + + $main->device->reset([ + 'type' => Constants\DeviceType::MOBILE, + 'subtype' => Constants\DeviceSubType::SMART + ]); + + $this->assertTrue($main->isMobile()); + + $main->device->reset([ + 'type' => Constants\DeviceType::MOBILE, + 'subtype' => Constants\DeviceSubType::FEATURE + ]); + + $this->assertTrue($main->isMobile()); + + $main->device->reset([ + 'type' => Constants\DeviceType::DESKTOP, + ]); + + $this->assertFalse($main->isMobile()); + } + + public function testIsType() + { + $main = new Main(); + + $main->device->setIdentification([ + 'manufacturer' => 'Nintendo', + 'model' => 'Wii', + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + + $this->assertTrue($main->isType('gaming')); + $this->assertTrue($main->isType('gaming:console')); + + $this->assertFalse($main->isType('mobile')); + $this->assertFalse($main->isType('mobile:portable')); + $this->assertFalse($main->isType('gaming:portable')); + + $this->assertTrue($main->isType('television', 'gaming')); + $this->assertTrue($main->isType('gaming', 'television', 'gaming')); + $this->assertTrue($main->isType('gaming:portable', 'gaming:console')); + } + + public function testGetType() + { + $main = new Main(); + + $main->device->reset([ + 'type' => Constants\DeviceType::GAMING + ]); + + $this->assertEquals('gaming', $main->getType()); + + $main->device->reset([ + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::CONSOLE + ]); + + $this->assertEquals('gaming:console', $main->getType()); + + $main->device->reset([ + 'type' => Constants\DeviceType::GAMING, + 'subtype' => Constants\DeviceSubType::PORTABLE + ]); + + $this->assertEquals('gaming:portable', $main->getType()); + + $main->device->reset([ + 'type' => Constants\DeviceType::MOBILE + ]); + + $this->assertEquals('mobile', $main->getType()); + + $main->device->reset([ + 'type' => Constants\DeviceType::MOBILE, + 'subtype' => Constants\DeviceSubType::SMART + ]); + + $this->assertEquals('mobile:smart', $main->getType()); + + $main->device->reset([ + 'type' => Constants\DeviceType::MOBILE, + 'subtype' => Constants\DeviceSubType::FEATURE + ]); + + $this->assertEquals('mobile:feature', $main->getType()); + } + + public function testToString() + { + $main = new Main(); + $this->assertEquals('an unknown browser', $main->toString()); + + $main = new Main(); + $main->device->set([ 'type' => Constants\DeviceType::BOT ]); + $this->assertEquals('an unknown bot', $main->toString()); + + $main = new Main(); + $main->browser->set([ 'name' => 'Chrome', 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) ]); + $main->engine->set([ 'name' => 'Blink' ]); + $main->os->set([ 'name' => 'OS X', 'version' => new Version([ 'value' => '10.11', 'nickname' => 'El Capitan' ]) ]); + + $this->assertEquals('Chrome 47 on OS X El Capitan 10.11', $main->toString()); + + + $main = new Main(); + $main->engine->set([ 'name' => 'WebKit' ]); + $main->os->set([ 'name' => 'Tizen', 'version' => new Version([ 'value' => '2.0' ]) ]); + + $this->assertEquals('Tizen 2.0', $main->toString()); + + + $main = new Main(); + $main->browser->set([ 'name' => 'Chrome', 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) ]); + + $this->assertEquals('Chrome 47', $main->toString()); + + + $main->browser->set([ 'name' => 'Safari', 'version' => new Version([ 'value' => '8.0' ]) ]); + $main->engine->set([ 'name' => 'WebKit' ]); + $main->os->set([ 'name' => 'iOS', 'version' => new Version([ 'value' => '8.0' ]) ]); + $main->device->setIdentification([ 'manufacturer' => 'Apple', 'model' => 'iPhone 6', 'type' => Constants\DeviceType::MOBILE ]); + + $this->assertEquals('Safari 8.0 on an Apple iPhone 6 running iOS 8.0', $main->toString()); + + + $main = new Main(); + $main->browser->set([ 'name' => 'Chrome', 'version' => new Version([ 'value' => '47.0.2526.73', 'details' => 1 ]) ]); + $main->os->set([ 'name' => 'Android', 'version' => new Version([ 'value' => '4.4' ]) ]); + $main->device->set([ 'model' => 'SM-A300', 'type' => Constants\DeviceType::MOBILE ]); + $this->assertEquals('Chrome 47 on an unrecognized device (SM-A300) running Android 4.4', $main->toString()); + + + $main = new Main(); + $main->browser->set([ 'stock' => true ]); + $main->engine->set([ 'name' => 'Blink' ]); + + $this->assertEquals('an unknown browser based on Blink', $main->toString()); + + + $main = new Main(); + $main->engine->set([ 'name' => 'Blink' ]); + $main->os->set([ 'name' => 'OS X', 'version' => new Version([ 'value' => '10.11', 'nickname' => 'El Capitan' ]) ]); + $main->device->set([ 'type' => Constants\DeviceType::DESKTOP ]); + + $this->assertEquals('an unknown browser based on Blink running on OS X El Capitan 10.11', $main->toString()); + + + $main = new Main(); + $main->browser->set([ 'name' => 'Safari', 'version' => new Version([ 'value' => '8.0' ]) ]); + $main->device->setIdentification([ 'manufacturer' => 'Apple', 'model' => 'iPhone 6', 'type' => Constants\DeviceType::MOBILE ]); + + $this->assertEquals('Safari 8.0 on an Apple iPhone 6', $main->toString()); + + + $main = new Main(); + $main->os->set([ 'name' => 'iOS', 'version' => new Version([ 'value' => '8.0' ]) ]); + $main->device->setIdentification([ 'manufacturer' => 'Apple', 'model' => 'iPhone 6', 'type' => Constants\DeviceType::MOBILE ]); + + $this->assertEquals('an Apple iPhone 6 running iOS 8.0', $main->toString()); + + + $main = new Main(); + $main->device->setIdentification([ 'manufacturer' => 'Apple', 'model' => 'iPhone 6', 'type' => Constants\DeviceType::MOBILE ]); + + $this->assertEquals('an Apple iPhone 6', $main->toString()); + + + $main = new Main(); + $main->device->setIdentification([ 'type' => Constants\DeviceType::TELEVISION ]); + + $this->assertEquals('a television', $main->toString()); + + + $main = new Main(); + $main->device->setIdentification([ 'type' => Constants\DeviceType::EMULATOR ]); + + $this->assertEquals('an emulator', $main->toString()); + } + + public function testToJavaScript() + { + $main = new Main(); + $expected = <<<'EOD' +this.browser = new Browser({ stock: true, hidden: false, mode: "", type: "" }); +this.engine = new Engine({ }); +this.os = new Os({ hidden: false }); +this.device = new Device({ type: "", subtype: "", identified: 0, generic: true, hidden: false }); +this.camouflage = false; +this.features = []; + +EOD; + + $this->assertEquals($expected, $main->toJavaScript()); + } + + public function testToArray() + { + $main = new Main(); + $this->assertEquals([], $main->toArray()); + + $main->browser->set([ 'name' => 'Safari', 'version' => new Version([ 'value' => '8.0' ]) ]); + $main->engine->set([ 'name' => 'WebKit' ]); + $main->os->set([ 'name' => 'iOS', 'version' => new Version([ 'value' => '8.0' ]) ]); + $main->device->setIdentification([ 'manufacturer' => 'Apple', 'model' => 'iPhone 6', 'type' => Constants\DeviceType::MOBILE ]); + $this->assertEquals([ + 'browser' => [ + 'name' => 'Safari', + 'version' => '8.0' + ], + 'engine' => [ + 'name' => 'WebKit' + ], + 'os' => [ + 'name' => 'iOS', + 'version' => '8.0' + ], + 'device' => [ + 'type' => 'mobile', + 'manufacturer' => 'Apple', + 'model' => 'iPhone 6' + ] + ], $main->toArray()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/OsTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/OsTest.php new file mode 100644 index 0000000..32c50af --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/OsTest.php @@ -0,0 +1,272 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Constants; +use WhichBrowser\Model\Os; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Os + */ +class OsTest extends PHPUnit_Framework_TestCase +{ + public function testGetName() + { + $os = new Os(); + + $this->assertEquals('', $os->getName()); + + $os->reset([ + 'name' => 'iOS', + 'version' => new Version([ 'value' => '8.0' ]) + ]); + + $this->assertEquals('iOS', $os->getName()); + + $os->reset([ + 'name' => 'iOS', + 'alias' => 'iPhone OS', + 'version' => new Version([ 'value' => '3.0' ]) + ]); + + $this->assertEquals('iPhone OS', $os->getName()); + } + + public function testGetVersion() + { + $os = new Os(); + + $this->assertEquals('', $os->getVersion()); + + $os->reset([ + 'name' => 'iOS', + 'version' => new Version([ 'value' => '8.0' ]) + ]); + + $this->assertEquals('8.0', $os->getVersion()); + + $os->reset([ + 'name' => 'OS X', + 'version' => new Version([ 'value' => '10.11', 'nickname' => 'El Capitan' ]) + ]); + + $this->assertEquals('El Capitan 10.11', $os->getVersion()); + + $os->reset([ + 'name' => 'Windows', + 'version' => new Version([ 'value' => '5.1', 'alias' => 'XP' ]) + ]); + + $this->assertEquals('XP', $os->getVersion()); + } + + public function testIsDetected() + { + $os = new Os(); + + $this->assertFalse($os->isDetected()); + + $os->reset([ + 'name' => 'iOS', + 'version' => new Version([ 'value' => '8.0' ]) + ]); + + $this->assertTrue($os->isDetected()); + } + + public function testIsFamily() + { + $os = new Os(); + + $this->assertFalse($os->isFamily('Android')); + + $os->reset([ + 'name' => 'Android' + ]); + + $this->assertTrue($os->isFamily('Android')); + + $os->reset([ + 'name' => 'FireOS', + 'family' => new Family([ 'name' => 'Android' ]) + ]); + + $this->assertTrue($os->isFamily('Android')); + + $os->reset([ + 'name' => 'FireOS', + 'family' => new Family([ 'name' => 'Android' ]) + ]); + + $this->assertFalse($os->isFamily('iOS')); + } + + public function testToString() + { + $os = new Os(); + + $this->assertEquals('', $os->toString()); + + $os->reset([ + 'name' => 'iOS', + 'version' => new Version([ 'value' => '8.0' ]) + ]); + + $this->assertEquals('iOS 8.0', $os->toString()); + + $os->reset([ + 'name' => 'iOS', + 'alias' => 'iPhone OS', + 'version' => new Version([ 'value' => '3.0' ]) + ]); + + $this->assertEquals('iPhone OS 3.0', $os->toString()); + + + $os->reset([ + 'name' => 'OS X', + 'version' => new Version([ 'value' => '10.11', 'nickname' => 'El Capitan' ]) + ]); + + $this->assertEquals('OS X El Capitan 10.11', $os->toString()); + + + $os->reset([ + 'name' => 'Windows', + 'version' => new Version([ 'value' => '5.1', 'alias' => 'XP' ]) + ]); + + $this->assertEquals('Windows XP', $os->toString()); + + + $os->reset([ + 'name' => 'Windows Phone', + 'alias' => 'Windows', + 'edition' => 'Mobile', + 'version' => new Version([ 'value' => '10.0', 'alias' => '10' ]) + ]); + + $this->assertEquals('Windows 10 Mobile', $os->toString()); + + + $os->reset([ + 'name' => 'webOS', + 'hidden' => true + ]); + + $this->assertEquals('', $os->toString()); + } + + public function testIdentifyVersion() + { + $os = new Os(); + + $os->identifyVersion('/OS ([0-9_]+)/u', 'iPhone OS 9_0_2', [ 'type' => 'underscore' ]); + + $this->assertEquals('9.0.2', $os->getVersion()); + + + $os->reset(); + + $os->identifyVersion('/Android\/([0-9\.]+)/u', 'Android/6.0'); + + $this->assertEquals('6.0', $os->getVersion()); + + + $os->reset(); + + $os->identifyVersion('/Tizen\/([0-9\.]+)/u', 'Android/6.0'); + + $this->assertEquals('', $os->getVersion()); + } + + public function testToArray() + { + $os = new Os(); + + $this->assertEquals([], $os->toArray()); + + $os->set([ + 'name' => '' + ]); + + $this->assertEquals([], $os->toArray()); + + $os->reset([ + 'name' => 'iOS', + 'version' => new Version([ 'value' => '8.0' ]) + ]); + + $this->assertEquals([ + 'name' => 'iOS', + 'version' => '8.0' + ], $os->toArray()); + + $os->reset([ + 'name' => 'iOS', + 'alias' => 'iPhone OS', + 'version' => new Version([ 'value' => '3.0' ]) + ]); + + $this->assertEquals([ + 'name' => 'iOS', + 'alias' => 'iPhone OS', + 'version' => '3.0' + ], $os->toArray()); + + $os->reset([ + 'name' => 'OS X', + 'version' => new Version([ 'value' => '10.11', 'nickname' => 'El Capitan' ]) + ]); + + $this->assertEquals([ + 'name' => 'OS X', + 'version' => [ + 'value' => '10.11', + 'nickname' => 'El Capitan' + ] + ], $os->toArray()); + + $os->reset([ + 'name' => 'Windows', + 'version' => new Version([ 'value' => '5.1', 'alias' => 'XP' ]) + ]); + + $this->assertEquals([ + 'name' => 'Windows', + 'version' => [ + 'value' => '5.1', + 'alias' => 'XP' + ] + ], $os->toArray()); + + $os->reset([ + 'name' => 'Windows Phone', + 'alias' => 'Windows', + 'edition' => 'Mobile', + 'version' => new Version([ 'value' => '10.0', 'alias' => '10' ]) + ]); + + $this->assertEquals([ + 'name' => 'Windows Phone', + 'alias' => 'Windows', + 'edition' => 'Mobile', + 'version' => [ + 'value' => '10.0', + 'alias' => '10' + ] + ], $os->toArray()); + + $os->reset([ + 'name' => 'FireOS', + 'family' => new Family([ 'name' => 'Android' ]) + ]); + + $this->assertEquals([ + 'name' => 'FireOS', + 'family' => 'Android' + ], $os->toArray()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/Primitive/BaseTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/Primitive/BaseTest.php new file mode 100644 index 0000000..1aa2bd6 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/Primitive/BaseTest.php @@ -0,0 +1,48 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Model\Primitive\Base; +use WhichBrowser\Model\Family; +use WhichBrowser\Model\Using; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Primitive\Base + */ +class BaseTest extends PHPUnit_Framework_TestCase +{ + public function testConstructor() + { + $base = new Base([ + 'name' => 'Generic', + ]); + + $this->assertEquals('Generic', $base->name); + } + + public function testSet() + { + $base = new Base(); + $base->set([ + 'name' => 'Generic', + ]); + + $this->assertEquals('Generic', $base->name); + } + + public function testToJavaScript() + { + $base = new Base(); + $base->set([ + 'name' => 'Generic', + 'hidden' => true, + 'count' => 10, + 'version' => new Version([ 'value' => '1.0' ]), + 'family' => new Family([ 'name' => 'Generic' ]), + 'using' => new Using([ 'name' => 'Generic' ]) + ]); + + $this->assertEquals('name: "Generic", hidden: true, count: 10, version: new Version({ value: "1.0", hidden: false }), family: new Family({ name: "Generic" }), using: new Using({ name: "Generic" })', $base->toJavaScript()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/Primitive/NameVersionTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/Primitive/NameVersionTest.php new file mode 100644 index 0000000..9f00118 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/Primitive/NameVersionTest.php @@ -0,0 +1,128 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Model\Primitive\NameVersion; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Primitive\NameVersion + */ +class NameVersionTest extends PHPUnit_Framework_TestCase +{ + public function testGetName() + { + $nameversion = new NameVersion(); + + $this->assertEquals('', $nameversion->getName()); + + $nameversion->reset([ + 'name' => 'Generic', + 'version' => new Version([ 'value' => '1.0' ]) + ]); + + $this->assertEquals('Generic', $nameversion->getName()); + + $nameversion->reset([ + 'name' => 'Generic', + 'alias' => 'Alias', + 'version' => new Version([ 'value' => '1.0' ]) + ]); + + $this->assertEquals('Alias', $nameversion->getName()); + } + + public function testGetVersion() + { + $nameversion = new NameVersion(); + + $this->assertEquals('', $nameversion->getVersion()); + + $nameversion->reset([ + 'name' => 'Generic', + 'version' => new Version([ 'value' => '1.0' ]) + ]); + + $this->assertEquals('1.0', $nameversion->getVersion()); + + $nameversion->reset([ + 'name' => 'Generic', + 'version' => new Version([ 'value' => '1.0', 'details' => 1 ]) + ]); + + $this->assertEquals('1', $nameversion->getVersion()); + } + + public function testIsDetected() + { + $nameversion = new NameVersion(); + + $this->assertFalse($nameversion->isDetected()); + + $nameversion->reset([ + 'name' => 'Generic', + 'version' => new Version([ 'value' => '1.0' ]) + ]); + + $this->assertTrue($nameversion->isDetected()); + } + + public function testIsToString() + { + $nameversion = new NameVersion(); + + $this->assertEquals('', $nameversion->toString()); + + $nameversion->reset([ + 'name' => 'Generic', + 'version' => new Version([ 'value' => '1.0' ]) + ]); + + $this->assertEquals('Generic 1.0', $nameversion->toString()); + + $nameversion->reset([ + 'name' => 'Generic', + 'alias' => 'Alias', + 'version' => new Version([ 'value' => '1.0' ]) + ]); + + $this->assertEquals('Alias 1.0', $nameversion->toString()); + } + + public function testIdentifyVersion() + { + $nameversion = new NameVersion(); + + $nameversion->identifyVersion('/Version\/([0-9\.]+)/u', 'Version/1.0'); + + $this->assertEquals('1.0', $nameversion->getVersion()); + + + $nameversion->reset(); + + $nameversion->identifyVersion('/Version\/([0-9\.]+)/u', 'Other/1.0'); + + $this->assertEquals('', $nameversion->getVersion()); + + + $nameversion->reset(); + + $nameversion->identifyVersion('/Version\/([0-9\.]+)/u', 'Version/1.0', [ 'details' => 1 ]); + + $this->assertEquals('1', $nameversion->getVersion()); + + + $nameversion->reset(); + + $nameversion->identifyVersion('/Version\/([0-9_]+)/u', 'Version/1_0_2', [ 'type' => 'underscore' ]); + + $this->assertEquals('1.0.2', $nameversion->getVersion()); + + + $nameversion->reset(); + + $nameversion->identifyVersion('/Version\/([0-9\.]+)/u', 'Version/1.02', [ 'type' => 'legacy' ]); + + $this->assertEquals('1.0.2', $nameversion->getVersion()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/UsingTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/UsingTest.php new file mode 100644 index 0000000..918be5d --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/UsingTest.php @@ -0,0 +1,72 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Constants; +use WhichBrowser\Model\Using; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Using + */ +class UsingTest extends PHPUnit_Framework_TestCase +{ + public function testGetName() + { + $using = new Using(); + + $this->assertEquals('', $using->getName()); + + $using->reset([ + 'name' => 'Crosswalk WebView', + 'version' => new Version([ 'value' => '11' ]) + ]); + + $this->assertEquals('Crosswalk WebView', $using->getName()); + } + + public function testGetVersion() + { + $using = new Using(); + + $this->assertEquals('', $using->getVersion()); + + $using->reset([ + 'name' => 'Crosswalk WebView', + 'version' => new Version([ 'value' => '11' ]) + ]); + + $this->assertEquals('11', $using->getVersion()); + } + + public function testIsToString() + { + $using = new Using(); + + $this->assertEquals('', $using->toString()); + + $using->reset([ + 'name' => 'Crosswalk WebView', + 'version' => new Version([ 'value' => '11' ]) + ]); + + $this->assertEquals('Crosswalk WebView 11', $using->toString()); + } + + public function testToArray() + { + $using = new Using(); + + $this->assertEquals([], $using->toArray()); + + $using->set([ + 'name' => 'Crosswalk WebView', + 'version' => new Version([ 'value' => '11' ]) + ]); + + $this->assertEquals([ + 'name' => 'Crosswalk WebView', + 'version' => '11' + ], $using->toArray()); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/VersionTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/VersionTest.php new file mode 100644 index 0000000..d8fe6db --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/Model/VersionTest.php @@ -0,0 +1,292 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Constants; +use WhichBrowser\Model\Version; + +/** + * @covers WhichBrowser\Model\Version + */ +class VersionTest extends PHPUnit_Framework_TestCase +{ + public function testIs() + { + $version = new Version([ 'value' => '40.0.2214' ]); + + $this->assertFalse($version->is()); + $this->assertFalse($version->is('39')); + $this->assertTrue($version->is('40')); + + $version = new Version([ 'value' => '40.0.2214' ]); + + $this->assertTrue($version->is('=', '40')); + $this->assertTrue($version->is('>=', '40')); + $this->assertTrue($version->is('<=', '40')); + $this->assertTrue($version->is('>', '39')); + $this->assertTrue($version->is('<', '41')); + + $this->assertFalse($version->is('=', '39')); + $this->assertFalse($version->is('>=', '41')); + $this->assertFalse($version->is('<=', '39')); + $this->assertFalse($version->is('>', '40')); + $this->assertFalse($version->is('<', '40')); + + + $version = new Version([ 'value' => '10.11.1' ]); + + $this->assertTrue($version->is('=', '10')); + $this->assertTrue($version->is('=', '10.11')); + $this->assertTrue($version->is('=', '10.11.1')); + $this->assertTrue($version->is('=', '10.11.01')); + + $this->assertTrue($version->is('=', 10)); + $this->assertTrue($version->is('=', 10.11)); + + $this->assertTrue($version->is('>', '10.1')); + $this->assertTrue($version->is('>', '10.01')); + $this->assertTrue($version->is('>', '10.10')); + + $this->assertFalse($version->is('>', '10')); + $this->assertFalse($version->is('>', '10.11')); + } + + public function testGetParts() + { + $version = new Version(); + + $version->value = ''; + $this->assertEquals((object) [ 'major' => 0, 'minor' => 0, 'patch' => 0 ], $version->getParts()); + + $version->value = '4'; + $this->assertEquals((object) [ 'major' => 4, 'minor' => 0, 'patch' => 0 ], $version->getParts()); + + $version->value = '4.1'; + $this->assertEquals((object) [ 'major' => 4, 'minor' => 1, 'patch' => 0 ], $version->getParts()); + + $version->value = '4.1.2'; + $this->assertEquals((object) [ 'major' => 4, 'minor' => 1, 'patch' => 2 ], $version->getParts()); + + $version->value = '5'; + $this->assertEquals((object) [ 'major' => 5, 'minor' => 0, 'patch' => 0 ], $version->getParts()); + + $version->value = '5.6'; + $this->assertEquals((object) [ 'major' => 5, 'minor' => 6, 'patch' => 0 ], $version->getParts()); + + $version->value = '5.6.7'; + $this->assertEquals((object) [ 'major' => 5, 'minor' => 6, 'patch' => 7 ], $version->getParts()); + } + + public function testGetMajor() + { + $version = new Version(); + + $version->value = '4'; + $this->assertEquals(4, $version->getMajor()); + + $version->value = '4.1'; + $this->assertEquals(4, $version->getMajor()); + + $version->value = '4.1.1'; + $this->assertEquals(4, $version->getMajor()); + } + + public function testGetMinor() + { + $version = new Version(); + + $version->value = '4'; + $this->assertEquals(0, $version->getMinor()); + + $version->value = '4.1'; + $this->assertEquals(1, $version->getMinor()); + + $version->value = '4.1.1'; + $this->assertEquals(1, $version->getMinor()); + } + + public function testGetPatch() + { + $version = new Version(); + + $version->value = '4'; + $this->assertEquals(0, $version->getPatch()); + + $version->value = '4.1'; + $this->assertEquals(0, $version->getPatch()); + + $version->value = '4.1.1'; + $this->assertEquals(1, $version->getPatch()); + } + + public function testToValue() { + $version = new Version(); + + $version->value = '4'; + $this->assertEquals(4, $this->invokeMethod($version, 'toValue')); + + $version->value = '4.1'; + $this->assertEquals(4.0001, $this->invokeMethod($version, 'toValue')); + + $version->value = '4.1.1'; + $this->assertEquals(4.00010001, $this->invokeMethod($version, 'toValue')); + + $version->value = '10.10.3'; + $this->assertEquals(10.00100003, $this->invokeMethod($version, 'toValue')); + } + + public function testToFloat() { + $version = new Version(); + + $version->value = '4.1.1'; + $this->assertEquals(4.1, $version->toFloat()); + + $version->value = '10.10.3'; + $this->assertEquals(10.1, $version->toFloat()); + } + + public function testToNumber() { + $version = new Version(); + + $version->value = '4.1.1'; + $this->assertEquals(4, $version->toNumber()); + + $version->value = '10.10.3'; + $this->assertEquals(10, $version->toNumber()); + } + + public function testToString() { + $version = new Version(); + + $version->set([ 'value' => '4.1.1' ]); + $this->assertEquals('4.1.1', $version->toString()); + + $version->set([ 'value' => '4.1' ]); + $this->assertEquals('4.1', $version->toString()); + + $version->set([ 'value' => '4.0a4' ]); + $this->assertEquals('4.0a4', $version->toString()); + + $version->set([ 'value' => '4.0b2' ]); + $this->assertEquals('4.0b2', $version->toString()); + + + $version = new Version(); + + $version->set([ 'value' => '4.1.1', 'details' => 0 ]); + $this->assertEquals('4.1.1', $version->toString()); + + $version->set([ 'value' => '4.1.1', 'details' => 1 ]); + $this->assertEquals('4', $version->toString()); + + $version->set([ 'value' => '4.1.1', 'details' => 2 ]); + $this->assertEquals('4.1', $version->toString()); + + $version->set([ 'value' => '4.1.1', 'details' => 3 ]); + $this->assertEquals('4.1.1', $version->toString()); + + $version->set([ 'value' => '4.1.1', 'details' => 4 ]); + $this->assertEquals('4.1.1', $version->toString()); + + $version->set([ 'value' => '4.1', 'details' => 3 ]); + $this->assertEquals('4.1', $version->toString()); + + $version->set([ 'value' => '4.1.1', 'details' => -1 ]); + $this->assertEquals('4.1', $version->toString()); + + $version->set([ 'value' => '4.1.1', 'details' => -2 ]); + $this->assertEquals('4', $version->toString()); + + $version->set([ 'value' => '4.1.1', 'details' => -3 ]); + $this->assertEquals('', $version->toString()); + + $version->set([ 'value' => '4.1.1', 'details' => -4 ]); + $this->assertEquals('', $version->toString()); + + + $version = new Version(); + + $version->set([ 'value' => '5.0.2.999', 'builds' => false ]); + $this->assertEquals('5.0.2.999', $version->toString()); + + $version->set([ 'value' => '5.0.2.1000', 'builds' => false ]); + $this->assertEquals('5.0.2', $version->toString()); + + $version->set([ 'value' => '5.0.2.4428', 'builds' => false ]); + $this->assertEquals('5.0.2', $version->toString()); + + $version->set([ 'value' => '5.0.4428', 'builds' => false ]); + $this->assertEquals('5.0', $version->toString()); + + $version->set([ 'value' => '5.4428', 'builds' => false ]); + $this->assertEquals('5', $version->toString()); + + $version->set([ 'value' => '4428', 'builds' => false ]); + $this->assertEquals('', $version->toString()); + + + $version = new Version(); + + $version->set([ 'value' => '5.1', 'alias' => 'XP' ]); + $this->assertEquals('XP', $version->toString()); + + + $version = new Version(); + + $version->set([ 'value' => '10.11', 'nickname' => 'El Capitan' ]); + $this->assertEquals('El Capitan 10.11', $version->toString()); + + $version->set([ 'value' => '10.11.2', 'nickname' => 'El Capitan', 'details' => 2 ]); + $this->assertEquals('El Capitan 10.11', $version->toString()); + } + + + + public function testToArray() + { + $version = new Version(); + + $this->assertEquals([], $version->toArray()); + + $version->set([ 'value' => '4.1.1' ]); + $this->assertEquals('4.1.1', $version->toArray()); + + $version->set([ 'value' => '4.1.1', 'details' => 2 ]); + $this->assertEquals('4.1', $version->toArray()); + + $version = new Version(); + + $version->set([ 'value' => '5.1', 'alias' => 'XP' ]); + $this->assertEquals([ + 'value' => '5.1', + 'alias' => 'XP' + ], $version->toArray()); + + $version = new Version(); + + $version->set([ 'value' => '10.11', 'nickname' => 'El Capitan' ]); + $this->assertEquals([ + 'value' => '10.11', + 'nickname' => 'El Capitan' + ], $version->toArray()); + } + + + /** + * Call protected/private method of a class. + * + * @param object &$object Instantiated object that we will run method on. + * @param string $methodName Method name to call + * @param array $parameters Array of parameters to pass into method. + * + * @return mixed Method return. + */ + public function invokeMethod(&$object, $methodName, array $parameters = array()) + { + $reflection = new \ReflectionClass(get_class($object)); + $method = $reflection->getMethod($methodName); + $method->setAccessible(true); + + return $method->invokeArgs($object, $parameters); + } +} diff --git a/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/ParserTest.php b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/ParserTest.php new file mode 100644 index 0000000..fcd7767 --- /dev/null +++ b/wp-content/plugins/wp-statistics/includes/vendor/whichbrowser/parser/tests/unit/ParserTest.php @@ -0,0 +1,55 @@ +<?php +namespace WhichBrowserTest; + +use PHPUnit_Framework_TestCase; +use WhichBrowser\Parser; + +/** + * @covers WhichBrowser\Parser + */ +class ParserTest extends PHPUnit_Framework_TestCase +{ + public function testCreatingParserWithString() + { + $parser = new Parser("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)"); + + $this->assertTrue($parser instanceof \WhichBrowser\Parser); + + $this->assertTrue($parser->isBrowser('Internet Explorer', '=', '6.0')); + } + + public function testCreatingParserWithHeaders() + { + $parser = new Parser([ + 'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)' + ]); + + $this->assertTrue($parser instanceof \WhichBrowser\Parser); + + $this->assertTrue($parser->isBrowser('Internet Explorer', '=', '6.0')); + } + + public function testCreatingParserWithOptions() + { + $parser = new Parser([ + 'headers' => [ + 'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)' + ] + ]); + + $this->assertTrue($parser instanceof \WhichBrowser\Parser); + + $this->assertTrue($parser->isBrowser('Internet Explorer', '=', '6.0')); + } + + public function testCreatingParserWithoutArgumentsAndCallAnalyse() + { + $parser = new Parser(); + $parser->analyse("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; InfoPath.1)"); + + $this->assertTrue($parser instanceof \WhichBrowser\Parser); + + $this->assertTrue($parser->isBrowser('Internet Explorer', '=', '6.0')); + } + +} diff --git a/wp-content/plugins/wp-statistics/index.php b/wp-content/plugins/wp-statistics/index.php new file mode 100644 index 0000000..a6ce9c8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/index.php @@ -0,0 +1,2 @@ +<?php +# Silence is golden. diff --git a/wp-content/plugins/wp-statistics/languages/index.php b/wp-content/plugins/wp-statistics/languages/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/wp-content/plugins/wp-statistics/languages/index.php @@ -0,0 +1,2 @@ +<?php +// Silence is golden. diff --git a/wp-content/plugins/wp-statistics/languages/readme.txt b/wp-content/plugins/wp-statistics/languages/readme.txt new file mode 100644 index 0000000..318b43a --- /dev/null +++ b/wp-content/plugins/wp-statistics/languages/readme.txt @@ -0,0 +1,5 @@ +Translations have moved to +https://translate.wordpress.org/projects/wp-plugins/wp-statistics +Please visit https://wp-statistics.com/translations/ to help translation. + +Thank you for your contribution. \ No newline at end of file diff --git a/wp-content/plugins/wp-statistics/license.txt b/wp-content/plugins/wp-statistics/license.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/wp-content/plugins/wp-statistics/license.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/wp-content/plugins/wp-statistics/readme.txt b/wp-content/plugins/wp-statistics/readme.txt new file mode 100644 index 0000000..e42e4d4 --- /dev/null +++ b/wp-content/plugins/wp-statistics/readme.txt @@ -0,0 +1,570 @@ + +=== WP Statistics === +Contributors: mostafa.s1990, mehrshaddarzi, ghasemi71ir, GregRoss, dedidata +Donate link: https://wp-statistics.com/donate/ +Tags: analytics, wordpress analytics, stats, statistics, visit, visitors, hits, chart, browser, today, yesterday, week, month, year, total, post, page, sidebar, google, live visit, search word, agent, google analytics, webmasters, google webmasters, geoip, location +Requires at least: 3.0 +Tested up to: 5.2.1 +Requires PHP: 5.6 +Stable tag: 12.6.9 +License: GPLv3 +License URI: http://www.gnu.org/licenses/gpl-3.0.html + +Complete WordPress Analytics and Statistics for your site! + +== Description == += WP statistics: THE #1 WORDPRESS STATISTICS PLUGIN = +Do you need a simple tool to know your website statistics? Do you need to represent these statistics? Are you caring about your users’ privacy while analyzing who are interested in your business or website? With WP Statistics you can know your website statistics without any need to send your users’ data anywhere. You can know how many people visit your personal or business website, where they’re coming from, what browsers and search engines they use, and which of your contents, categories, tags and users get more visits. + +All these data are recorded in your server, and YES! WP Statistics is [GDPR compliant](http://bit.ly/2x0AFgT). + += ACT BETTER BY KNOWING WHAT YOUR USERS ARE LOOKING FOR = +* Visitor Data Records including IP, Referring Site, Browser, Search Engine, OS, Country and City +* Stunning Graphs and Visual Statistics +* Visitor’s Country Recognition +* Visitor’s City Recognition +* The number of Visitors coming from each Search Engine +* The number of Referrals from each Referring Site +* Top 10 common browsers; Top 10 countries with most visitors; Top 10 most-visited pages; Top 10 referring sites +* Hits Time-Based Filtering +* Statistics on Contents based on Categories, Tags, and Writers +* Widget Support for showing Statistics +* Data Export in TSV, XML, and CSV formats +* Statistical Reporting Emails +* [Premium] [Real-time stats](http://bit.ly/2Mj4Nss) +* [Premium] [More Advanced reporting](http://bit.ly/2MjZE3l) +* And much more information represented in graphs & charts along with data filtering + += NOTE = +Some advanced features are Premium, which means you need to buy extra add-ons to unlock those features. You can get [Premium add-ons](http://bit.ly/2x6tGly) here! + += REPORT BUGS = +If you encounter any bug, please create an issue on [Github](https://github.com/wp-statistics/wp-statistics/issues/new) where we can act upon them more efficiently. Since [Github](https://github.com/wp-statistics/wp-statistics) is not a support forum, just bugs are welcomed, and any other request will be closed. + +== Installation == +1. Upload `wp-statistics` to the `/wp-content/plugins/` directory. +2. Activate the plugin through the 'Plugins' menu in WordPress. +3. Make sure the Date and Time are set correctly in WordPress. +4. Go to the plugin settings page and configure as required (note this will also include downloading the GeoIP database for the first time). + +== Frequently Asked Questions == += GDPR Compliant? = +The greatest advantage of WP Statistics is that all the data is saved locally in WordPress. +This helps a lot while implementing the new GDPR restrictions; because it’s not necessary to create a data processing contract with an external company! [Read more about WP Statistics compliance with GDPR](http://bit.ly/2x0AFgT). + += Does WP Statistics support Multisite? = +WP Statistics doesn’t officially support the multisite feature; however, it does have limited functionally associated with it and should function without any issue. However, no support is provided at this time. +Version 8.8 is the first release that can be installed, upgraded and removed correctly on multi-site. It also has some basic support for the network admin menu. This should not be taken as an indication that WP Statistics fully supports the multisite, but only should be considered as a very first step. + += Does WP Statistics work with caching plugins? = +Yes, the cache support added in v12.5.1 + +If you're using a plugin cache: +* Don't forget to clear your enabled plugin cache. +* You should enable the plugin cache option in the Settings page. +* Making sure the below endpoint registered in your WordPress. +http://yourwebsite.com/wp-json/wpstatistics/v1 + +To register, go to the Permalink page and update the permalink with press Save Changes. + += What’s the difference between Visits and Visitors? = +Visits is the number of page hits your site has received. +Visitors is the number of unique users which have visited your site. +Visits should always be greater than Visitors (though, there are a few cases when this won’t be true due to having low visits). +The average number of pages a visitor views on your site is Visits/Visitors. + += Are All visitors’ locations set to ‘unknown’? = +Make sure you’ve downloaded the GeoIP database and the GeoIP code is enabled. +Also, if you are running an internal test site with non-routable IP addresses (like 192.168.x.x or 172.28.x.x or 10.x.x.x), these addresses will be always shown as ‘unknown’. You can define a location IP for these IP addresses in the “Country code for private IP addresses†setting. + += I’m using another statistics plugin/service and get different numbers from them, why? = +Probably, each plugin/service is going to give you different statistics on visits and visitors; there are several reasons for this: + +* Web crawler detections +* Detection methods (Javascript vs. Server Side PHP) +* Centralized exclusions + +Services that use centralized databases for spam and robot detections , such as Google Analytics, have better detection than WP Statistics. + += Not all referrals are showing up in the search words list, why? = +Search Engine Referrals and Words are highly dependent on the search engines providing the information to us. Unfortunately, we can’t do anything about it; we report everything we receive. + += PHP 7 Support? = +WP Statistics is PHP 7 compliant; however, some versions of PHP 7 have bugs that can cause issues. One known issue is that PHP 7.0.4 cause memory exhaustion errors. Newer versions of PHP 7 do not have this issue. +At this time (September, 2018) WP Statistics seems to run fine with PHP 7.2.6. But you may experience issues that we haven’t found yet. If you do, feel free to report it after you make sure it is not a problem with PHP. + += IPv6 Support? = +WP Statistics supports IPv6 as of version 11.0; however, PHP must be compiled with IPv6 support enabled; otherwise you may see warnings when a visitor from an IPv6 address hits your site. + +You can check if IPv6 support is enabled in PHP by visiting the Optimization > Resources/Information->Version Info > PHP IPv6 Enabled section. + +If IPv6 is not enabled, you may see an warning like: + + Warning: inet_pton() [function.inet-pton]: Unrecognized address 2003:0006:1507:5d71:6114:d8bd:80c2:1090 + +== Screenshots == +1. Overview +2. Browsers Statistics +3. Top Countries +4. Hit Statistics +5. Top pages +6. Category Statistics +7. Search Engine Referral Statistics +8. Last Search Words +9. Dashboard widgets +10. Theme widget + +== Upgrade Notice == += 12.5.4 = +If you have a problem in getting visitor's IP, just go to Statistics > Settings > Visitor IP. + += 12.5.3 = +Please consider that after updating, you will probably see some changes in Hits. The reason is that we have better-recognized crawlers and robots to get more accurate statistics for you. + +If the cache option is enabled in your WordPress, you should make sure the below endpoint registered in your WordPress. +http://yourwebsite.com/wp-json/wpstatistics/v1 + +To register, go to the Permalink page and update the permalink with press Save Changes. + +== Changelog == += 12.6.9 = +* Fixed: Hit counter issue in some servers that blocking some `XMLHttpRequest` request. +* Improvement REST API. + += 12.6.8 = +* Fixed: Coefficient per visitors. +* Improvement www domain in Top Referring. +* Improvement REST API. + += 12.6.7 = +* Improvement and sanitize visitor's IP address. +* Improvement and sanitize parameters in `WP_Statistics_Rest::hit()`, Thanks Thomas Chauchefoin for the report. +* Improved: Minor issues. + += 12.6.6.1 = +* Fixed: issue to showing Hit column for custom post type. +* Improvement: Sanitize page's title and Escaping that in overview page. +* Added: postbox Ads in overview page. Don't worry! Not very annoying. + += 12.6.5 = +* WordPress 5.2 compatibility. + += 12.6.4 = +* Added: The Visitor IP configuration in the setting page for choosing method that gets visitor's IP addresses. +* Improved: Minor issues in datepicker. +* Improved: Minor issues in search referrer. + += 12.6.3 = +* Fixed date picker issue in Top Visitors page. +* Improved: Minor issues. + += 12.6.2 = +* Fixed issue to get IP in some servers that stored 127.0.0.1 + += 12.6.1 = +* Added Whip Package for getting visitor's IP address. +* Fixed get the country code when the Hash or Anonymize IP Addresses is enabled. +* Added database upgrade class for update page type. +* Fixed duplicate page list in report pages. +* Fixed bug to get home page title. +* Improvement Sanitize subject for sending email reporting. +* Improvement jQuery Datepicker UI. +* Improvement visitor's hit when there was a broken file in that request. + += 12.6 = +# Added +* Post/Page Select in statistics page reporting according to post Type. +* Online Users widget, A cool widget to show current online users! +* A new table `visitor_relationship` for saving visitors logs. +* `user_id`, `page_id`, `type` columns to `statistics_useronline` table. +* Visitor count column in Top Country widget. + +# Improvement +* Improvement MySQL time query in all functions. +* Improvement online users page UI. +* Improvement Top referrals UI. +* Improvement CSV exporter. +* Improvement pagination in admin pages that used the WordPress `paginate_links`. +* Improvement time filter in admin pages stats. +* Improvement `admin_url` link in all admin pages. +* Improvement text wrap in all meta boxes. +* Fixed reset number online users list in period time. +* Schedule list in statistical reporting. +* Refer Param in Top Referring Sites page. +* Fix method to get IP addresses. +* Fix Page CSS. +* Fix the error of No page title found in the meta box. +* Fix show number refer link from custom URL. +* Fix update option for Piwik blacklist. + +# Deprecated +* Remove `WP_Statistics_Pagination` class. +* Deprecate Top Search Words (30 Days) widget. + += 12.5.7 = +* Added: The Edge To Browser List. +* Added: `date_i18n` function in dates for retrieving localized date. +* Improved: The Browsers charts. +* Improved: Minor issues in GeoIP update function. +* Optimized: All png files. (60% Save). + += 12.5.6 = +* Fixed: Counting stats issue in Cache mode. + += 12.5.5 = +* Improved: The WP-Statistics Metaboxes for Gutenberg! +* Improved: The `params()` method. +* Improved: Referrers URL to be valid. + += 12.5.4 = +* Disabled: Notice cache in all admin pages just enabled in the summary and setting of WP-Statistics pages. +* Improved: Some methods. `params()` and `get_hash_string()`. + += 12.5.3 = +* Added: Option for enabling/disabling the hits meta box chart in the edit of all post types page and that option is disabled by default. +* Improved: The responsive problem of Recent Visitors and Latest Search Words widgets in WP Dashboard. +* Improved: Avoid using jQuery in the inline script to for send request when the cache is enabled. +* Improved: The GeoIP updater. +* Improved: The cache process in the plugin. +* Improved: Get location for Anonymize IP Addresses. +* Improved: The query in the Author Statistics page. + += 12.5.2 = +* Improved: Some issues in php v5.4 + += 12.5.1 = +* Added: Cache option for support when the cache enabled in the WordPress. +* Added: Visitor's city name with GeoIP, you can enable the city name in Settings > Externals > GeoIP City +* Added: WP-Statistics shortcode in the TinyMCE editor. you can use the shortcode easily in the posts and pages. +* Added: Qwant search engine in the Search Engine Referrals. +* Added: Referrers to WP-Statistics shortcode attributes. e.g. `[wpstatistics stat=referrer time=today top=10]` +* Added: [WhichBrowser](https://whichbrowser.net/) and [CrawlerDetect](https://crawlerdetect.io/). These libraries give us more help in identifying user agents. the Browscap library removed. +* Improved: The Datepicker in the WP-Statistics pages, supported WordPress custom date format. +* Improved: The pagination class. +* Improved: The assets and fixed conflict ChartJS issue, when the Hit Statistics Meta box was enabled in posts/pages. +* Improved: The responsive summary page. +* Improved: Exclude Ajax requests, now compatible with [Related Post by Jetpack](https://jetpack.com/support/related-posts/). +* Improved: Some issues. +* Updated: Chart.js library to v2.7.3 +* Enabled: Hit Statistics in posts/pages. the conflict problem solved. +* Disabled: The setting menu when the current user doesn't access. +* Disabled: Baidu search engine by default after installing. + += 12.4.3 = +* Disabled: The welcome page and Travod widget. + += 12.4.1 = +* Implemented: The `do_welcome()` function. +* Updated: Libraries to latest version. +* Added: `delete_transient()` for deleting transients when uninstalling the plugin. + += 12.4.0 = +* Removed: The Opt-Out removed. +* Added: Anonymize IP addresses option in the Setting > Privacy. + += 12.3.6.4 = +* Updated: Libraries to latest version. +* Enabled: The suggestion notice in the log pages. +* Improvement: Counting non-changing collections with `count()`. Thanks [Daniel Ruf](https://github.com/DanielRuf) + += 12.3.6.3 = +* Disabled: The suggestion notice. + += 12.3.6.2 = +* Tested: With PHP v7.2.4 +* Added: Suggestion notice in the log pages. +* Added: New option for enable/disable notices. + += 12.3.6.1 = +* Improvement: I18n strings. +* Improvement: GDPR, Supported for DNT-Header. +* Improvement: GDPR, Added new option for delete visitor data with IP addresses. + += 12.3.6 = +* Note: GDPR, We Updated Our [Privacy Policy](https://wp-statistics.com/privacy-and-policy/). +* Added Privacy tab in the setting page and moved Hash IP Addresses and Store entire user agent in this tab. +* Added Opt-out option in the Setting page -> Privacy for GDPR compliance. +* Updated: Chart.js library to v2.7.2 +* Fixed: Issue to build search engine queries. + += 12.3.5 = +* Improvement: Isolation Browscap cache processes to reduce memory usage. +* Improvement: Include `file.php` and `pluggable.php` in GeoIP downloader when is not exists. +* Fixed: GeoIP database update problem. Added an alternative server for download database when impossible access to maxmind.com + += 12.3.4 = +* Updated: Browscap to v3.1.0 and fixed some issues. +* Improvement: Memory usage in the plugin when the Browscap is enabled. +* Improvement: Cache system and update Browscap database. + += 12.3.2 = +* Added: New feature! Show Hits on the single posts/pages. +* Added: Pages Dropdown in the page stats. +* Fixed: Menu bar for both frontend & backend. +* Fixed: Issue to create the object of the main class. +* Fixed: Issue to get page title in empty search words option. +* Fixed: Issue to show date range in the charts. + += 12.3.1 = +* We're sorry about last issues. Now you can update to new version to resolve the problems. +* Updated: Composer libraries. +* Fixed: A minor bug in `get_referrer_link`. +* Improvement: `wp_doing_cron` function, Check before call if is not exist. +* Fixed: Issue to get IP in Hits class. +* Fixed: Issue to get prefix table in searched phrases postbox. +* Fixed: Issue in Browscap, Used the original Browscap library in the plugin. +* If you have any problem, don't forget to send the report to our web site's [contact form](https://wp-statistics.com/contact/). + += 12.3 = +* The new version proves itself more than twice as faster because we had a lot of changes in the plugin. +* Improvement: Management processes and front-end have been separated for more speed. +* Improvement: MySQL Queries and used multi-index for `wp_statistics_pages`. +* Improvement: Top Referring widget in Big data. Used Transient cache to build this widget data. +* Fixed: Issue in checking the Cron request. +* Fixed: Issue in i18n strings. The `load_plugin_textdomain` missed. +* Fixed: issue in generating query string in some state pages. +* Fixed: issue in admin widget. The `id` in label missed and used `get_field_id` method to get a correct id. +* Fixed: Admin bar menu icon. +* Updated: Chart.js library to v2.7.1 + += 12.2.1 = +* Fixed: Issue to `add_column` callback. + += 12.2 = +* The new version proves itself more than twice as faster because we had a lot of changes in the plugin. +* Improvement: Many functions converted to classes. +* Improvement: Export data on the optimization page. +* Improvement: Constants, Include files. +* Improvement: Setting/Optimization page stylesheet and removed jQuery UI to generate tabs. +* Added: Top Search Words in the plugin. +* Fixed: Some notices error. +* Removed: Some unused variables. +* Removed: Force English option feature in the plugin. +* Thanks [Farhad Sakhaei](https://dedidata.com/) To help us with these changes. + += 12.1.3 = +* We're sorry about last issues. Now you can update to new version to resolve conflict issues. +* Fixed: Chart conflict issues with other libraries. +* Fixed: Chart height issue in css. +* Fixed: Correct numbering for pages > 1 in Top Referring page. [#22](https://github.com/wp-statistics/wp-statistics/pull/22/files) +* Fixed: Don't run the SQL if `$reffer` is not set. [#21](https://github.com/wp-statistics/wp-statistics/pull/21) +* Fixed: Refferer url scheme. [#24](https://github.com/wp-statistics/wp-statistics/pull/24) Thanks [Farhad Sakhaei](https://github.com/Dedi-Data) +* Fixed: Network menu icon. + += 12.1.0 = +* Added: Awesome charts! The Chartjs library used in the plugin for show charts. +* Updated: Missed flags icons. (Curaçao, Saint Lucia, Turkmenistan, Kosovo, Saint Martin, Saint Barthélemy and Mayotte) +* Updated: Countries code. +* Updated: Settings and Optimization page styles. +* Fixed: Showing data on the Browsers, Platforms and browsers version charts. +* Fixed: Postbox container width in Logs page. +* Removed: `WP_STATISTICS_MIN_EXT` define for load `.min` version in css/js. +* Removed: Additional assets and the assets cleaned up. + += 12.0.12.1 = +* Fixed: PHP syntax error for array brackets when the PHP < 5.4 + += 12.0.12 = +* Added: Add-ons page! The Add-ons add functionality to your WP-Statistics. [Click here](https://wp-statistics.com/add-ons/) to see current Add-ons. +* Fixed: Translations issue. +* Updated: GeoIP library to v2.6.0 +* Updated: admin.min.css + += 12.0.11 = +* Release Date: August 17, 2017 +* Fixed: links issue in the last visitors page. +* Fixed: i18n issues (hardcoded strings, missing or incorrect textdomains). +* Updated: admin CSS style. set `with` for Hits column in posts/pages list. +* Updated: Improve consistency, best practices and correct typos in translation strings. +* Updated: More, Reload and Toggle arrow buttons in metaboxes are consistent with WP core widget metaboxes, with screen-reader-text and key navigation. by [Pedro Mendonça](https://profiles.wordpress.org/pedromendonca/). + += 12.0.10 = +* Release Date: July 24, 2017 +* Added: UptimeRobot to the default robots list. +* Fixed: Uses `esc_attr()` for cleaning `$_GET` in referrers page. +* Removed: `screen_icon()` function from the plugin. (This function has been deprecated). + += 12.0.9 = +* Release Date: July 3, 2017 +* Fixed: XSS issue with agent and ip in visitors page, Thanks Ryan Dewhurst from Dewhurst Security Team. +* Updated: GeoIP library to v2.5.0 +* Updated: Maxmind-db reader library to v1.1.3 + += 12.0.8.1 = +* Release Date: July 2, 2017 +* Fixed: load languages file. please visit [translations page](https://wp-statistics.com/translations/) to help translation. + += 12.0.8 = +* Release Date: June 29, 2017 +* Fixed: SQL Injection vulnerability, thanks John Castro for reporting issue from sucuri.net Team. +* Added: new hook (`wp_statistics_final_text_report_email`) in email reporting. +* Removed: all language files from the language folder. Translations have moved to [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/wp-statistics). + += 12.0.7 = +* Release Date: June 8, 2017 +* WordPress 4.8 compatibility +* Updated: WP-Statistics logo! Thanks [Arin Hacopian](http://aringrafix.com/) for design the logo. +* Removed: manual file and moved to [wp-statistics.com/category/documentation](http://wp-statistics.com/category/documentation) +* Fixed: items show issue in referring page. +* Fixed: recent visitor link in dashboard widget. + += 12.0.6 = +* Release Date: April 27, 2017 +* Fixed: Additional XSS fixes, thanks Plugin Vulnerabilities Team. + += 12.0.5 = +* Release Date: April 6, 2017 +* Fixed: Referrers, that are not search engines, are missing from the referrers widget/page. +* Fixed: Additional XSS fixes, thanks Gen Sato who submitted to JPCERT/CC Vulnerability Handling Team. +* Fixed: Updated CSS definition for widgets to avoid overflow only for WP Statistics widgets instead of all active widgets to avoid conflicts with other plugins. + += 12.0.4 = +* Release Date: April 1, 2017 +* Fixed: Additional XSS issue with referrers, thanks Gen Sato who submitted to JPCERT/CC Vulnerability Handling Team. +* Updated: Optimizations for referrers encoding. +* Updated: Logic for detecting invalid referrer types to capture more types. + += 12.0.3 = +* Release Date: March 31, 2017 +* Fixed: Additional XSS issue with referrers, thanks Gen Sato who submitted to JPCERT/CC Vulnerability Handling Team. + += 12.0.2 = +* Release Date: March 30, 2017 +* Fixed: Top referrer widget was not using the new search table. +* Fixed: On the referrers page, selecting a host would reset the date range. +* Fixed: XSS issue with date range picker, thanks Anon submitter to JPCERT/CC Vulnerability Handling Team. +* Fixed: XSS issue with referrers, thanks Gen Sato who submitted to JPCERT/CC Vulnerability Handling Team. + += 12.0.1 = +* Release Date: March 24, 2017 +* Added: Check for BCMath or GMP Math extensions to support newer GeoIP database files. +* Fixed: Robots list not being updated on upgrades properly in some cases. +* Fixed: wp_statistics_get_uri() to handle cases where site and home URI's are different. +* Fixed: wp_statistics_get_uri() to validate what is being removed to make sure we don't remove the wrong things. +* Fixed: Display of individual referring site stats. + += 12.0.0 = +* Release Date: February 18, 2017 +* Added: Categories, tags and authors stats pages. +* Added: Option to exclude AJAX calls from the statistics collection. +* Fixed: Removal of settings now uses the defaults and handles a conner case that could cause corrupt settings to be saved during the reset. +* Fixed: URI retrieval of the current page could return an incorrect result in some cases. +* Fixed: Images in the HTML version of the admin manual did not display correctly in Microsoft IE/Edge. +* Fixed: Incorrect variable name on the exclusions page for the robots list. +* Updated: After "removal" the notice on the plugins page is now at the top of the page as an admin notice instead of being embedded in the plugin list. +* Updated: Split change log, form this point forward only the changes for the last two major versions will be included, older entries can be found in the changes.txt file in the plugin root. + += 11.0.3 = +* Release Date: January 13, 2017 +* Added: Option to reset plugin options without deleting the data. +* Fixed: If IP hashing as enabled a PHP would be generated during the hashing. +* Fixed: Typo in JavaScript code that would cause some errors not to be displayed. +* Fixed: Make sure the historical table exists before checking the keys on it which would cause extra output to be generated on first install. +* Updated: RTL CSS styles for left/right div's in the admin dashboard, thanks sszdh. + += 11.0.2 = +* Release Date: December 1, 2016 +* Fixed: Top visitors page css for date picker. +* Fixed: Incorrect url for link on recent visitors widget. +* Fixed: Make sure the tick intervals are always whole numbers, otherwise the axis ticks won't match up with the data on line charts. +* Fixed: Make sure when looking up a page/post ID for a URL to take the latest visited id instead of the first in case the URI has been reused. +* Fixed: Duplicate display of hit statistics on hits page in some corner cases. + += 11.0.1 = +* Release Date: November 7, 2016 +* Fixed: Don't refresh a widget if it's not visible, fixes the widget being replaced by a spinner that never goes away. +* Updated: Minimum PHP version is now 5.4. +* Updated: Additional error checks for new IP code. +* Updated: jqPlot library to version development version and added DST fix. + += 11.0 = +* Release Date: October 28, 2016 +* Added: IPv6 Support. +* Added: Time attribute to searches shortcode. +* Added: Basic print styles for the overview and log pages. +* Fixed: Default provider for searches shortcode. +* Fixed: Display of top sites list when the display port is very small would . +* Fixed: CSS for date picker not loading. +* Fixed: Incorrect stats on some pages for date ranges that end in the past. +* Fixed: Date range selector on stats now properly displays a custom range after it has been set. +* Fixed: "Empty" log widget columns could not have widgets added to them. +* Updated: GeoIP library to version 1.1.1. +* Updated: phpUserAgent library to 0.5.2. +* Updated: Language on the front end widget to match the summary widget in the admin. +* Removed: Check for bc math. +* Removed: Last bits of google maps code. + += 10.3 = +* Release Date: August 19, 2016 +* Added: Support for minified css/js files and the SCRIPT_DEBUG WordPress define. +* Added: <label> spans around the text for widget fields for easier styling. +* Added: 'AdsBot-Google' to the robots list +* Fixed: Pop up country information on the map dashboard widget will now stay on top of the WordPress dashboard menus. +* Fixed: WP_DEBUG errors in front end widget. +* Updated: JQVMap library to version 1.5.1. +* Updated: jqPlot library to version 1.0.9. +* Updated: GeoIP library to version 2.4.1. + += 10.2 = +* Release Date: August 2, 2016 +* Added: Support for use page id in Get_Historical_Data function. +* Updated: jQuery CSS references. +* Fixed: Various WP_DEBUG warnings. +* Fixed: Incorrect URL in quick access widget for some of the totals. +* Fixed: Make sure to escape the post title in the widget otherwise the graph may not be displayed correctly. +* Removed: Google Maps support as Google no longer supports keyless access to the API (http://googlegeodevelopers.blogspot.com.es/2016/06/building-for-scale-updates-to-google.html). + += 10.1 = +* Release Date: April 3, 2016 +* Updated: Top pages page to list the stats for the selected date range in the page list. +* Updated: Added check for gzopen() function to the Optimization page as some builds of PHP are broken and do not include it which causes the GeoIP download to fail causing a white screen of death in some cases. +* Updated: Added check to make sure we can write to the upload directory before doing so. +* Updated: User Agent Parser library updated to V0.5.1. +* Updated: MaxMind Reader Library updated to V1.1. +* Fixed: Only display the widgets on the overview page that have their features enabled. +* Fixed: Top pages list failed when there were less than 5 pages to display. +* Fixed: Manual download links did not function. +* Fixed: Typo in function name for purging the database. +* Fixed: Renamed the Czech and Danish translation file names to function correctly. +* Fixed: Ensure we have a valid page id before record the stat to the database to avoid an error being recorded in the PHP error log. + += 10.0.5 = +* Release Date: February 5, 2016 +* Fixed: Date range selector display after entering a custom date range. +* Fixed: Date ranges that ended in the past displaying the wrong visit/visitors data. + += 10.0.4 = +* Release Date: January 21, 2016 +* Fixed: Recent Visitors widget in the dashboard did not work. +* Fixed: Top Visitors in Overview page would not reload. +* Fixed: Links for yesterday and older visitors count went to wrong page. +* Fixed: Typo in purge code that caused a fatal error. + += 10.0.3 = +* Release Date: January 19, 2016 +* Updated: Google map API now always uses https. +* Fixed: Google map error that broken the overview page display of charts and the map. + += 10.0.2 = +* Release Date: January 19, 2016 +* Added: Additional error checking on widget load so they will retry if there is a failure. +* Fixed: Added code to flush out invalid widget order user meta. +* Fixed: Include Fatal Error if corrupt data was passed to the ajax widget code. + += 10.0.1 = +* Release Date: January 18, 2016 +* Fixed: If you re-ordered the widgets on the overview screen and then reloaded the page, all the widgets would disappear. + += 10.0 = +* Release Date: January 15, 2016 +* Added: Widgets now support reloading on overview and dashboard screen. +* Updated: Overview screen now loads widgets dynamically to reduce memory usage. +* Updated: Dashboard widgets now load dynamically. +* Updated: Enabling dashboard widgets now no longer require a page load to display the contents. +* Updated: Replaced the old eye icon and "more..." link on the right of the title on the overview widgets with a new icon on the right beside the open/close icon. +* Fixed: Removed extraneous single quote in SQL statement on referrers page, thanks jhertel. +* Fixed: Order of parameters in referrers page when viewing individual referrers was incorrect and resulted in a blank list. +* Fixed: UpdatedSQL for last post date detection to order by post_date instead of ID as someone could enter a date in the past for their publish date. Thanks PC1271 for the fix. +* Fixed: The referrers widget would only select the first 100k records due to a limit in PHP/MySQL, it will now select all records. +* Removed: Widget selection and ordering from the settings page, the "Screen Options" tab can now be used on the enabled/disable widgets and drag and drop will remember their location. +* Removed: Overview page memory usage in the optimization page as it is no longer relevant. diff --git a/wp-content/plugins/wp-statistics/uninstall.php b/wp-content/plugins/wp-statistics/uninstall.php new file mode 100644 index 0000000..b1a609d --- /dev/null +++ b/wp-content/plugins/wp-statistics/uninstall.php @@ -0,0 +1,10 @@ +<?php +// if not called from WordPress exit +if ( ! defined('WP_UNINSTALL_PLUGIN') ) { + exit(); +} + +// By default, WP Statistics leaves all data in the database, however a user can select to +// remove it, in which case the wp_statistics_removal option is set and we should remove that +// here in case the user wants to re-install the plugin at some point. +delete_option('wp_statistics_removal'); diff --git a/wp-content/plugins/wp-statistics/wp-statistics.php b/wp-content/plugins/wp-statistics/wp-statistics.php new file mode 100644 index 0000000..42253e8 --- /dev/null +++ b/wp-content/plugins/wp-statistics/wp-statistics.php @@ -0,0 +1,17 @@ +<?php +/** + * Plugin Name: WP Statistics + * Plugin URI: https://wp-statistics.com/ + * Description: Complete WordPress Analytics and Statistics for your site! + * Version: 12.6.9 + * Author: VeronaLabs + * Author URI: http://veronalabs.com/ + * Text Domain: wp-statistics + * Domain Path: /languages/ + */ + +define( 'WP_STATISTICS_MAIN_FILE', __FILE__ ); +require_once plugin_dir_path( __FILE__ ) . 'includes/classes/class-wp-statistics.php'; + +$WP_Statistics = new WP_Statistics; +$WP_Statistics->run(); diff --git a/wp-content/plugins/wp-youtube-lyte/external/do_not_donate_smallest.png b/wp-content/plugins/wp-youtube-lyte/external/do_not_donate_smallest.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c977ef504ddfed873234388a6d5380e9f7acca GIT binary patch literal 9585 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 boPzuxf96k4@`(3z00000NkvXXu0mjfwa9U* literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/external/index.html b/wp-content/plugins/wp-youtube-lyte/external/index.html new file mode 100644 index 0000000..513bfac --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/external/index.html @@ -0,0 +1 @@ +<html><body><p><a href="http://wordpress.org/extend/plugins/wp-youtube-lyte/">WP-YouTube-Lyte</a> is a WordPress plugin that inserts "Lite YouTube Embeds" in your blog. These look and feel like normal embedded YouTube, but don't use Flash unless clicked on, thereby <a href="http://blog.futtta.be/2010/04/23/high-performance-youtube-embeds/" title="performance tests comparing youtube embeds with lyte embeds">reducing download size & rendering time substantially</a>. The plugin can optionally use <a href="http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html">YouTube's new experimental HTML5 embed code</a>, meaning you can have an entirely flash-less YouTube experience on your blog.</p><p>Up to date info on WP-YouTube-Lyte <a href="http://blog.futtta.be/tag/lyte/" title="more about Lyte on my blog">can be found on blog.futtta.be</a>, where you can also find <a href="http://blog.futtta.be/tag/wordpress" title="blog.futtta.be about WordPress">posts about WordPress</a> and <a href="http://blog.futtta.be/category/internet/" title="about browsers, development and mobile web on blog.futtta.be">Web Technology in general</a>.</p></body></html> diff --git a/wp-content/plugins/wp-youtube-lyte/external/jquery.cookie.js b/wp-content/plugins/wp-youtube-lyte/external/jquery.cookie.js new file mode 100644 index 0000000..7b3e701 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/external/jquery.cookie.js @@ -0,0 +1,89 @@ +/*jslint browser: true */ /*global jQuery: true */ + +/** + * jQuery Cookie plugin + * + * Copyright (c) 2010 Klaus Hartl (stilbuero.de) + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + */ + +// TODO JsDoc + +/** + * Create a cookie with the given key and value and other optional parameters. + * + * @example $.cookie('the_cookie', 'the_value'); + * @desc Set the value of a cookie. + * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); + * @desc Create a cookie with all available options. + * @example $.cookie('the_cookie', 'the_value'); + * @desc Create a session cookie. + * @example $.cookie('the_cookie', null); + * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain + * used when the cookie was set. + * + * @param String key The key of the cookie. + * @param String value The value of the cookie. + * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. + * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. + * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. + * If set to null or omitted, the cookie will be a session cookie and will not be retained + * when the the browser exits. + * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). + * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). + * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will + * require a secure protocol (like HTTPS). + * @type undefined + * + * @name $.cookie + * @cat Plugins/Cookie + * @author Klaus Hartl/klaus.hartl@stilbuero.de + */ + +/** + * Get the value of a cookie with the given key. + * + * @example $.cookie('the_cookie'); + * @desc Get the value of a cookie. + * + * @param String key The key of the cookie. + * @return The value of the cookie. + * @type String + * + * @name $.cookie + * @cat Plugins/Cookie + * @author Klaus Hartl/klaus.hartl@stilbuero.de + */ +jQuery.cookie = function (key, value, options) { + + // key and value given, set cookie... + if (arguments.length > 1 && (value === null || typeof value !== "object")) { + options = jQuery.extend({}, options); + + if (value === null) { + options.expires = -1; + } + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setDate(t.getDate() + days); + } + + return (document.cookie = [ + encodeURIComponent(key), '=', + options.raw ? String(value) : encodeURIComponent(String(value)), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } + + // key and possibly options given, get cookie... + options = value || {}; + var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent; + return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null; +}; diff --git a/wp-content/plugins/wp-youtube-lyte/external/jquery.cookie.min.js b/wp-content/plugins/wp-youtube-lyte/external/jquery.cookie.min.js new file mode 100644 index 0000000..927fc7c --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/external/jquery.cookie.min.js @@ -0,0 +1 @@ +jQuery.cookie=function(key,value,options){if(arguments.length>1&&(value===null||typeof value!=="object")){options=jQuery.extend({},options);if(value===null){options.expires=-1;}if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);}return(document.cookie=[encodeURIComponent(key),'=',options.raw?String(value):encodeURIComponent(String(value)),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));}options=value||{};var result,decode=options.raw?function(s){return s;}:decodeURIComponent;return(result=new RegExp('(?:^|; )'+encodeURIComponent(key)+'=([^;]*)').exec(document.cookie))?decode(result[1]):null;}; diff --git a/wp-content/plugins/wp-youtube-lyte/external/unslider-dots.css b/wp-content/plugins/wp-youtube-lyte/external/unslider-dots.css new file mode 100644 index 0000000..65327c0 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/external/unslider-dots.css @@ -0,0 +1,33 @@ +/** + * Here's where everything gets included. You don't need + * to change anything here, and doing so might break + * stuff. Here be dragons and all that. + */ +/** + * Default variables + * + * While these can be set with JavaScript, it's probably + * better and faster to just set them here, compile to + * CSS and include that instead to use some of that + * hardware-accelerated goodness. + */ +.unslider-nav ol { + list-style: none; + text-align: center; +} +.unslider-nav ol li { + display: inline-block; + width: 6px; + height: 6px; + margin: 0 4px; + background: transparent; + border-radius: 5px; + overflow: hidden; + text-indent: -999em; + border: 2px solid #fff; + cursor: pointer; +} +.unslider-nav ol li.unslider-active { + background: #fff; + cursor: default; +} diff --git a/wp-content/plugins/wp-youtube-lyte/external/unslider-min.js b/wp-content/plugins/wp-youtube-lyte/external/unslider-min.js new file mode 100644 index 0000000..600c9d1 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/external/unslider-min.js @@ -0,0 +1 @@ +!function($){return $?($.Unslider=function(t,n){var e=this;return e._="unslider",e.defaults={autoplay:!1,delay:3e3,speed:750,easing:"swing",keys:{prev:37,next:39},nav:!0,arrows:{prev:'<a class="'+e._+'-arrow prev">Prev</a>',next:'<a class="'+e._+'-arrow next">Next</a>'},animation:"horizontal",selectors:{container:"ul:first",slides:"li"},animateHeight:!1,activeClass:e._+"-active",swipe:!0,swipeThreshold:.2},e.$context=t,e.options={},e.$parent=null,e.$container=null,e.$slides=null,e.$nav=null,e.$arrows=[],e.total=0,e.current=0,e.prefix=e._+"-",e.eventSuffix="."+e.prefix+~~(2e3*Math.random()),e.interval=null,e.init=function(t){return e.options=$.extend({},e.defaults,t),e.$container=e.$context.find(e.options.selectors.container).addClass(e.prefix+"wrap"),e.$slides=e.$container.children(e.options.selectors.slides),e.setup(),$.each(["nav","arrows","keys","infinite"],function(t,n){e.options[n]&&e["init"+$._ucfirst(n)]()}),jQuery.event.special.swipe&&e.options.swipe&&e.initSwipe(),e.options.autoplay&&e.start(),e.calculateSlides(),e.$context.trigger(e._+".ready"),e.animate(e.options.index||e.current,"init")},e.setup=function(){e.$context.addClass(e.prefix+e.options.animation).wrap('<div class="'+e._+'" />'),e.$parent=e.$context.parent("."+e._);var t=e.$context.css("position");"static"===t&&e.$context.css("position","relative"),e.$context.css("overflow","hidden")},e.calculateSlides=function(){if(e.total=e.$slides.length,"fade"!==e.options.animation){var t="width";"vertical"===e.options.animation&&(t="height"),e.$container.css(t,100*e.total+"%").addClass(e.prefix+"carousel"),e.$slides.css(t,100/e.total+"%")}},e.start=function(){return e.interval=setTimeout(function(){e.next()},e.options.delay),e},e.stop=function(){return clearTimeout(e.interval),e},e.initNav=function(){var t=$('<nav class="'+e.prefix+'nav"><ol /></nav>');e.$slides.each(function(n){var i=this.getAttribute("data-nav")||n+1;$.isFunction(e.options.nav)&&(i=e.options.nav.call(e.$slides.eq(n),n,i)),t.children("ol").append('<li data-slide="'+n+'">'+i+"</li>")}),e.$nav=t.insertAfter(e.$context),e.$nav.find("li").on("click"+e.eventSuffix,function(){var t=$(this).addClass(e.options.activeClass);t.siblings().removeClass(e.options.activeClass),e.animate(t.attr("data-slide"))})},e.initArrows=function(){e.options.arrows===!0&&(e.options.arrows=e.defaults.arrows),$.each(e.options.arrows,function(t,n){e.$arrows.push($(n).insertAfter(e.$context).on("click"+e.eventSuffix,e[t]))})},e.initKeys=function(){e.options.keys===!0&&(e.options.keys=e.defaults.keys),$(document).on("keyup"+e.eventSuffix,function(t){$.each(e.options.keys,function(n,i){t.which===i&&$.isFunction(e[n])&&e[n].call(e)})})},e.initSwipe=function(){var t=e.$slides.width();"fade"!==e.options.animation&&e.$container.on({movestart:function(t){return t.distX>t.distY&&t.distX<-t.distY||t.distX<t.distY&&t.distX>-t.distY?!!t.preventDefault():void e.$container.css("position","relative")},move:function(n){e.$container.css("left",-(100*e.current)+100*n.distX/t+"%")},moveend:function(n){Math.abs(n.distX)/t>e.options.swipeThreshold?e[n.distX<0?"next":"prev"]():e.$container.animate({left:-(100*e.current)+"%"},e.options.speed/2)}})},e.initInfinite=function(){var t=["first","last"];$.each(t,function(n,i){e.$slides.push.apply(e.$slides,e.$slides.filter(':not(".'+e._+'-clone")')[i]().clone().addClass(e._+"-clone")["insert"+(0===n?"After":"Before")](e.$slides[t[~~!n]]()))})},e.destroyArrows=function(){$.each(e.$arrows,function(t,n){n.remove()})},e.destroySwipe=function(){e.$container.off("movestart move moveend")},e.destroyKeys=function(){$(document).off("keyup"+e.eventSuffix)},e.setIndex=function(t){return 0>t&&(t=e.total-1),e.current=Math.min(Math.max(0,t),e.total-1),e.options.nav&&e.$nav.find('[data-slide="'+e.current+'"]')._active(e.options.activeClass),e.$slides.eq(e.current)._active(e.options.activeClass),e},e.animate=function(t,n){if("first"===t&&(t=0),"last"===t&&(t=e.total),isNaN(t))return e;e.options.autoplay&&e.stop().start(),e.setIndex(t),e.$context.trigger(e._+".change",[t,e.$slides.eq(t)]);var i="animate"+$._ucfirst(e.options.animation);return $.isFunction(e[i])&&e[i](e.current,n),e},e.next=function(){var t=e.current+1;return t>=e.total&&(t=0),e.animate(t,"next")},e.prev=function(){return e.animate(e.current-1,"prev")},e.animateHorizontal=function(t){var n="left";return"rtl"===e.$context.attr("dir")&&(n="right"),e.options.infinite&&e.$container.css("margin-"+n,"-100%"),e.slide(n,t)},e.animateVertical=function(t){return e.options.animateHeight=!0,e.options.infinite&&e.$container.css("margin-top",-e.$slides.outerHeight()),e.slide("top",t)},e.slide=function(t,n){if(e.options.animateHeight&&e._move(e.$context,{height:e.$slides.eq(n).outerHeight()},!1),e.options.infinite){var i;n===e.total-1&&(i=e.total-3,n=-1),n===e.total-2&&(i=0,n=e.total-2),"number"==typeof i&&(e.setIndex(i),e.$context.on(e._+".moved",function(){e.current===i&&e.$container.css(t,-(100*i)+"%").off(e._+".moved")}))}var o={};return o[t]=-(100*n)+"%",e._move(e.$container,o)},e.animateFade=function(t){var n=e.$slides.eq(t).addClass(e.options.activeClass);e._move(n.siblings().removeClass(e.options.activeClass),{opacity:0}),e._move(n,{opacity:1},!1)},e._move=function(t,n,i,o){return i!==!1&&(i=function(){e.$context.trigger(e._+".moved")}),t._move(n,o||e.options.speed,e.options.easing,i)},e.init(n)},$.fn._active=function(t){return this.addClass(t).siblings().removeClass(t)},$._ucfirst=function(t){return(t+"").toLowerCase().replace(/^./,function(t){return t.toUpperCase()})},$.fn._move=function(){return this.stop(!0,!0),$.fn[$.fn.velocity?"velocity":"animate"].apply(this,arguments)},void($.fn.unslider=function(t){return this.each(function(){var n=$(this);if("string"==typeof t&&n.data("unslider")){t=t.split(":");var e=n.data("unslider")[t[0]];if($.isFunction(e))return e.apply(n,t[1]?t[1].split(","):null)}return n.data("unslider",new $.Unslider(n,t))})})):console.warn("Unslider needs jQuery")}(window.jQuery); diff --git a/wp-content/plugins/wp-youtube-lyte/external/unslider.css b/wp-content/plugins/wp-youtube-lyte/external/unslider.css new file mode 100644 index 0000000..249b9b8 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/external/unslider.css @@ -0,0 +1 @@ +.unslider{overflow:auto;margin:0;padding:0}.unslider-wrap{position:relative}.unslider-wrap.unslider-carousel>li{float:left}.unslider-vertical>ul{height:100%}.unslider-vertical li{float:none;width:100%}.unslider-fade{position:relative}.unslider-fade .unslider-wrap li{position:absolute;left:0;top:0;right:0;z-index:8}.unslider-fade .unslider-wrap li.unslider-active{z-index:10}.unslider li,.unslider ol,.unslider ul{list-style:none;margin:0;padding:0;border:none}.unslider-arrow{position:absolute;left:20px;z-index:2;cursor:pointer}.unslider-arrow.next{left:auto;right:20px} diff --git a/wp-content/plugins/wp-youtube-lyte/index.html b/wp-content/plugins/wp-youtube-lyte/index.html new file mode 100644 index 0000000..513bfac --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/index.html @@ -0,0 +1 @@ +<html><body><p><a href="http://wordpress.org/extend/plugins/wp-youtube-lyte/">WP-YouTube-Lyte</a> is a WordPress plugin that inserts "Lite YouTube Embeds" in your blog. These look and feel like normal embedded YouTube, but don't use Flash unless clicked on, thereby <a href="http://blog.futtta.be/2010/04/23/high-performance-youtube-embeds/" title="performance tests comparing youtube embeds with lyte embeds">reducing download size & rendering time substantially</a>. The plugin can optionally use <a href="http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html">YouTube's new experimental HTML5 embed code</a>, meaning you can have an entirely flash-less YouTube experience on your blog.</p><p>Up to date info on WP-YouTube-Lyte <a href="http://blog.futtta.be/tag/lyte/" title="more about Lyte on my blog">can be found on blog.futtta.be</a>, where you can also find <a href="http://blog.futtta.be/tag/wordpress" title="blog.futtta.be about WordPress">posts about WordPress</a> and <a href="http://blog.futtta.be/category/internet/" title="about browsers, development and mobile web on blog.futtta.be">Web Technology in general</a>.</p></body></html> diff --git a/wp-content/plugins/wp-youtube-lyte/languages/index.html b/wp-content/plugins/wp-youtube-lyte/languages/index.html new file mode 100644 index 0000000..513bfac --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/index.html @@ -0,0 +1 @@ +<html><body><p><a href="http://wordpress.org/extend/plugins/wp-youtube-lyte/">WP-YouTube-Lyte</a> is a WordPress plugin that inserts "Lite YouTube Embeds" in your blog. These look and feel like normal embedded YouTube, but don't use Flash unless clicked on, thereby <a href="http://blog.futtta.be/2010/04/23/high-performance-youtube-embeds/" title="performance tests comparing youtube embeds with lyte embeds">reducing download size & rendering time substantially</a>. The plugin can optionally use <a href="http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html">YouTube's new experimental HTML5 embed code</a>, meaning you can have an entirely flash-less YouTube experience on your blog.</p><p>Up to date info on WP-YouTube-Lyte <a href="http://blog.futtta.be/tag/lyte/" title="more about Lyte on my blog">can be found on blog.futtta.be</a>, where you can also find <a href="http://blog.futtta.be/tag/wordpress" title="blog.futtta.be about WordPress">posts about WordPress</a> and <a href="http://blog.futtta.be/category/internet/" title="about browsers, development and mobile web on blog.futtta.be">Web Technology in general</a>.</p></body></html> diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ca_ES.mo b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ca_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..92af34b647b51fd3ccf3f90c06e808e80727196a GIT binary patch literal 1504 zcma)*&1)1f7{=qbuGWtViugeeqAex6GxY-*KM>a{N*7DJwt5k=GwEz}cCsd!>U#1| z@S=F|;7tSzihsg_Ac%Mq4|)-A9zA*T$?Uef+7%6Cew#PR`#wpY{W84vAwe5P--rGJ zeLwoCRrsL21b2h4z~kUsaEqH*O~^W6sLP$;dW`pU#}wR#@gZ<0cpN+cUIw>=65I>k z19yRsy7P-*0poX|%m1;<&)^f({t7xh_tz3~415f31>b`kz|Wx5@vS@l4!S%)K&R&? zcn~ZgSOiO;({}@O=hmRp^8j>upMjgeH{eF_1L*R90wE`lK~f$A^5*n7Ej!TNSx_>+ z-~8V2+ckFwE-%vj)||%8=xh3-Lw&!=1<li2^rBM6h}6)L`OI3&N6DnLg7P$?JPd^~ zvX%&XU1im*hHw^1l}|3nNGK{AH4#NJjf-T4F9=$$^E4KQ%*cBpAXRbK;wx?92CXK( zb5qN?CR<jJIc~!`wRLG|GvTd78apUPRl2mVe>xYjBGA9MZf!Ftm1>EKi=6`&YobI3 zhb@mwiBr{AO=+YfokCMu-4vl^mm)SRw2>+e=pP3vOpB({mQ_qFBX%x}4XdhvcI(|y zI%;ZMYEkL9<jUP?vX;s$?v}aAg{do5R@Q=BBxmQj6#*Uhe4qIq^T(-wBsk^=N4+u6 z3p@{t*|b=YPRJi?$9?LL2S<;Lc|O)na${K)&utQJl@929{`B$E)1T_x%-OiXWl{`P z;|#W>amHi8s)9FGY#2G**>QN34%l0{RGH{qkYDr)WtCcyLWA=FwXj7AuPxJ)G^}%N zggt$=dV!tjt#exEg=Q0JsGPk5dZH$6;ToG#B9fLZ$qQ(iTb}T=@K-y}wilgKW!Jk= z&&)|8vRG(LAvoWD8p_0ZzWv-3$;FK8h-;)zalxd@8$4}w9PPZ^UbHH4)^28Ig{Lc0 zV<*3z31c};oTs@fp+!@xC<{Z`eog*o5#`IKpB0(L-!IQe7xE*K0kOUvgDw6q=l3cq M8u3P!TGFld3#fvSVgLXD literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ca_ES.po b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ca_ES.po new file mode 100644 index 0000000..c7be155 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ca_ES.po @@ -0,0 +1,203 @@ +msgid "" +msgstr "" +"Project-Id-Version: WP YouTube Lyte\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-youtube-lyte\n" +"POT-Creation-Date: 2011-10-12 13:51:40+00:00\n" +"PO-Revision-Date: 2011-10-21 12:43+0100\n" +"Last-Translator: frank goossens <futtta@gmail.com>\n" +"Language-Team: frank goossens ('futtta') <futtta@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Catalan\n" + +#: widget.php:74 +msgid "Title:" +msgstr "Títol:" + +#: widget.php:75 +msgid "Size:" +msgstr "Tamany:" + +#: widget.php:91 +msgid "Type:" +msgstr "Tipus" + +#: widget.php:99 +msgid "audio" +msgstr "" + +#: widget.php:100 +msgid "video" +msgstr "vídeo" + +#: widget.php:104 +msgid "Youtube-URL:" +msgstr "" + +#: widget.php:105 +msgid "Text:" +msgstr "Texte:" + +#: player_sizes.inc.php:11 +msgid "Smaller 4:3 player" +msgstr "" + +#: player_sizes.inc.php:16 +msgid "Smaller 16:9 player" +msgstr "" + +#: player_sizes.inc.php:21 +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "" + +#: player_sizes.inc.php:26 +msgid "YouTube default for 16:9-ratio video" +msgstr "" + +#: player_sizes.inc.php:31 +msgid "Larger 4:3 player" +msgstr "" + +#: player_sizes.inc.php:36 +msgid "Larger 16:9 player" +msgstr "" + +#: player_sizes.inc.php:41 +msgid "Maxi 4:3 player" +msgstr "" + +#: player_sizes.inc.php:46 +msgid "Maxi 16:9 player" +msgstr "" + +#: wp-youtube-lyte.php:60 +#: wp-youtube-lyte.php:64 +msgid "Watch this playlist on YouTube" +msgstr "Mirar aquesta llista de reproducció a YouTube" + +#: wp-youtube-lyte.php:65 +msgid "Watch this playlist" +msgstr "Mirar aquesta llista de reproducció" + +#: wp-youtube-lyte.php:65 +#: wp-youtube-lyte.php:78 +#: wp-youtube-lyte.php:82 +msgid "on YouTube" +msgstr "a YouTube" + +#: wp-youtube-lyte.php:73 +msgid "Watch this video on YouTube" +msgstr "Veure aquest vídeo a YouTube" + +#: wp-youtube-lyte.php:78 +#: wp-youtube-lyte.php:82 +msgid "Watch this video" +msgstr "Veure aquest vídeo" + +#: wp-youtube-lyte.php:78 +msgid "or on" +msgstr "o damunt" + +#: options.php:37 +msgid "WP YouTube Lyte Settings" +msgstr "" + +#: options.php:39 +msgid "WP YouTube Lyte inserts \"Lite YouTube Embeds\" in your blog. These look and feel like normal embedded YouTube, but don't use Flash unless clicked on, thereby <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-lyte/\" target=\"_blank\">reducing download size & rendering time substantially</a>. When a video is played, WP-YouTube-Lyte can either activate <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html\" target=\"_blank\">YouTube's embedded html5-player</a> or the older Flash-version, depending on the settings below." +msgstr "" + +#: options.php:40 +msgid "You can place video and audio in your posts and pages by adding one or more http<strong>v</strong> or http<strong>a</strong> YouTube-links to your post. These will automatically be replaced by WP YouTube Lyte with the correct (flash-less) code. To add a video for example, you type a URL like <em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> or <em>http<strong>v</strong>://www.youtube.com/playlist?list=PLA486E741B25F8E00</em> for a playlist. If you want an audio-only player, you enter <em>http<strong>a</strong>://www.youtube.com/watch?v=BIQIGR-kWtc</em>. There's more info on the <a href=\"http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP YouTube Lyte FAQ page</a>." +msgstr "" + +#: options.php:41 +msgid "You can modify WP-YouTube-Lyte's behaviour by changing the following settings:" +msgstr "" + +#: options.php:48 +msgid "Player size" +msgstr "" + +#: options.php:65 +msgid "Add links below the embedded videos?" +msgstr "" + +#: options.php:67 +msgid "Show links?" +msgstr "" + +#: options.php:68 +msgid " Add YouTube-link." +msgstr "" + +#: options.php:69 +msgid " Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr "" + +#: options.php:70 +msgid " Don't add any links." +msgstr "" + +#: options.php:75 +msgid "Play video in HD if possible?" +msgstr "" + +#: options.php:79 +msgid "Enable HD" +msgstr "" + +#: options.php:80 +msgid "No HD, we're smallband!" +msgstr "" + +#: options.php:85 +msgid "Bonus feature: " +msgstr "" + +#: options.php:89 +msgid "Disable 3rd party tracking." +msgstr "" + +#: options.php:90 +msgid "I don't mind 3rd party tracking (default)" +msgstr "" + +#: options.php:97 +msgid "Save Changes" +msgstr "Guardar Canvis" + +#: options.php:105 +msgid "futtta about" +msgstr "" + +#. #-#-#-#-# plugin.pot (WP YouTube Lyte 0.8.0) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: options.php:107 +msgid "WP YouTube Lyte" +msgstr "WP YouTube Lyte" + +#: options.php:108 +msgid "WordPress" +msgstr "" + +#: options.php:109 +msgid "Web Technology" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://blog.futtta.be/tag/lyte" +msgstr "http://blog.futtta.be/tag/lyte" + +#. Description of the plugin/theme +msgid "Lite and accessible YouTube audio and video embedding." +msgstr "Vídeo i audio de YouTube lleuger i de fàcil accés." + +#. Author of the plugin/theme +msgid "Frank Goossens (futtta)" +msgstr "Frank Goossens (futtta)" + +#. Author URI of the plugin/theme +msgid "http://blog.futtta.be/" +msgstr "http://blog.futtta.be/" + diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-de_DE.mo b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-de_DE.mo new file mode 100644 index 0000000000000000000000000000000000000000..a3747f37bd7fe6ea49e60b066a3d15a8e9233c8e GIT binary patch literal 7416 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 IR<)}C0zsj}iU0rr literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-de_DE.po b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-de_DE.po new file mode 100644 index 0000000..3121add --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-de_DE.po @@ -0,0 +1,304 @@ +# Copyright (C) 2014 WP YouTube Lyte +# This file is distributed under the same license as the WP YouTube Lyte package. +msgid "" +msgstr "" +"Project-Id-Version: WP YouTube Lyte 1.4.2\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-youtube-lyte\n" +"POT-Creation-Date: 2014-12-07 12:21:25+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2014-12-08 15:12+0100\n" +"Last-Translator: frank goossens (futtta) <futtta@gmail.com>\n" +"Language-Team: \n" +"X-Generator: Poedit 1.5.4\n" +"Language: German\n" + +#: options.php:21 +msgid "Your WP YouTube Lyte cache has been succesfully cleared." +msgstr "Ihr WP-YouTube-Lyte-Zwischenspeicher wurde erfolgreich geleert." + +#: options.php:27 +msgid "There was a problem, the WP YouTube Lyte cache could not be cleared." +msgstr "" +"Es gab ein Problem, der WP-YouTube-Lyte-Zwischenspeicher konnte nichtgeleert " +"werden." + +#: options.php:71 +msgid "WP YouTube Lyte Settings" +msgstr "WP-YouTube-Lyte-Einstellungen" + +#: options.php:73 +msgid "" +"WP YouTube Lyte inserts \"Lite YouTube Embeds\" in your blog. These look and " +"feel like normal embedded YouTube, but don't use Flash unless clicked on, " +"thereby <a href=\"http://blog.futtta.be/2012/04/03/speed-matters-re-" +"evaluating-wp-youtube-lytes-performance/\" target=\"_blank\">reducing " +"download size & rendering time substantially</a>. When a video is played, WP-" +"YouTube-Lyte can either activate <a href=\"http://apiblog.youtube." +"com/2010/07/new-way-to-embed-youtube-videos.html\" target=\"_blank" +"\">YouTube's embedded html5-player</a> or the older Flash-version, depending " +"on the settings below." +msgstr "" +"WP YouTube Lyte fügt \"Leichtes eingebettetes YouTube\" Ihrem Blog hinzu. " +"Dieses verhält sich wie normales eingebettetes YouTube, verwendet jedoch " +"kein Flash, bis es angeklickt wird, wodurch <a href=\"http://blog.futtta." +"be/2012/04/03/speed-matters-re-evaluating-wp-youtube-lytes-performance/\" " +"target=\"_blank\">Downloadgröße und Ladedauer wesentlich verringert werden</" +"a>. Wenn ein Video abgespielt wird, kann WP YouTube Lyte entweder <a href=" +"\"http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html\" " +"target=\"_blank\">YouTubes eingebetteten HTML5-Player</a> oder die ältere " +"Flashversion aktivieren - je nach Einstellungen." + +#: options.php:74 +msgid "" +"You can place video and audio in your posts and pages by adding one or more " +"http<strong>v</strong> or http<strong>a</strong> YouTube-links to your post. " +"These will automatically be replaced by WP YouTube Lyte with the correct " +"(flash-less) code. To add a video for example, you type a URL like " +"<em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> or " +"<em>http<strong>v</strong>://www.youtube.com/playlist?" +"list=PLA486E741B25F8E00</em> for a playlist. If you want an audio-only " +"player, you enter <em>http<strong>a</strong>://www.youtube.com/watch?" +"v=BIQIGR-kWtc</em>. There's more info on the <a href=\"http://wordpress.org/" +"extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP " +"YouTube Lyte FAQ page</a>." +msgstr "" +"Sie können Video und Audio in Ihre Artikel und Seiten einfügen, indem Sie " +"einen oder mehr http<strong>v</strong>- oder http<strong>a</strong>-YouTube-" +"Links im Text verwenden. Diese werden von WP YouTube Lyte automatisch mit " +"dem korrekten (flashlosen) Code ersetzt. Um zum Beispiel ein Video " +"hinzuzufügen, geben Sie einen URL wie <em>http<strong>v</strong>://www." +"youtube.com/watch?v=QQPSMRQnNlU</em> oder <em>http<strong>v</strong>://www." +"youtube.com/playlist?list=PLA486E741B25F8E00</em> für eine Wiedergabeliste " +"ein. Wenn Sie eine Wiedergabe ohne Bild bevorzugen, geben Sie " +"<em>http<strong>a</strong>://www.youtube.com/watch?v=BIQIGR-kWtc</em> ein. " +"Weitere Informationen erhalten Sie in den <a href=\"http://wordpress.org/" +"extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">FAQ auf wordpress." +"org</a>." + +#: options.php:75 +msgid "" +"You can modify WP-YouTube-Lyte's behaviour by changing the following " +"settings:" +msgstr "" +"Sie können das Verhalten von WP YouTube Lyte mittels folgender Einstellungen " +"anpassen:" + +#: options.php:84 +msgid "Player size" +msgstr "Wiedergabegröße" + +#: options.php:103 +msgid "Add links below the embedded videos?" +msgstr "Links unter den eingebetteten Videos hinzufügen?" + +#: options.php:106 +msgid "Show links?" +msgstr "Links zeigen?" + +#: options.php:107 +msgid " Add YouTube-link." +msgstr " YouTube-Link hinzufügen." + +#: options.php:108 +msgid "" +" Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/" +"index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr "" +" Sowohl einen YouTube- als auch einen <a href=\"http://icant.co.uk/easy-" +"youtube/docs/index.html\" target=\"_blank\">Easy-YouTube</a>-Link hinzufügen." + +#: options.php:109 +msgid " Don't add any links." +msgstr " Keine Links hinzufügen." + +#: options.php:114 +msgid "Player position:" +msgstr "Wiedergabeposition:" + +#: options.php:117 +msgid "Left, center or right?" +msgstr "Links, mittig oder rechts?" + +#: options.php:118 +msgid "Left" +msgstr "Links" + +#: options.php:119 +msgid "Center" +msgstr "Mittig" + +#: options.php:124 +msgid "Try to force HD (experimental)?" +msgstr "Versuchen HD zu erzwingen (experimentell)?" + +#: options.php:127 +msgid "HD or not?" +msgstr "HD oder nicht?" + +#: options.php:128 +msgid "Enable HD" +msgstr "HD aktivieren" + +#: options.php:129 +msgid "No HD (default)" +msgstr "Kein HD (Standard)" + +#: options.php:134 +msgid "Add microdata?" +msgstr "Mikrodaten hinzufügen?" + +#: options.php:137 +msgid "Add video microdata to the HTML?" +msgstr "Video-Mikrodaten zu HTML hinzufügen?" + +#: options.php:138 options.php:148 +msgid "Yes (default)" +msgstr "Ja (Standard)" + +#: options.php:139 +msgid "No microdata, thanks." +msgstr "Keine Mikrodaten, danke." + +#: options.php:144 options.php:147 +msgid "Also act on normal YouTube links?" +msgstr "Auch auf normale YouTube-Links reagieren?" + +#: options.php:149 +msgid "No thanks." +msgstr "Nein danke." + +#: options.php:154 +msgid "Empty WP YouTube Lyte's cache" +msgstr "Den Zwischenspeicher von WP YouTube Lyte leeren" + +#: options.php:165 +msgid "Save Changes" +msgstr "Änderungen speichern" + +#: options.php:173 +msgid "futtta about" +msgstr "futtta über" + +#. #-#-#-#-# plugin.pot (WP YouTube Lyte 1.4.2) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: options.php:175 +msgid "WP YouTube Lyte" +msgstr "WP YouTube Lyte" + +#: options.php:176 +msgid "WordPress" +msgstr "WordPress" + +#: options.php:177 +msgid "Web Technology" +msgstr "Webtechnik" + +#: options.php:181 +msgid "Do not donate for this plugin!" +msgstr "Nicht für dieses Plugin spenden!" + +#: player_sizes.inc.php:11 +msgid "Mini 16:9 player" +msgstr "Mini-16:9-Format" + +#: player_sizes.inc.php:17 +msgid "Smaller 4:3 player" +msgstr "Kleineres 4:3-Format" + +#: player_sizes.inc.php:23 +msgid "Smaller 16:9 player" +msgstr "Kleineres 16:9-Format" + +#: player_sizes.inc.php:29 +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "Standardwert, YouTube-Standard für 4:3-Video" + +#: player_sizes.inc.php:35 +msgid "YouTube default for 16:9-ratio video" +msgstr "YouTube-Standard für 16:9-Video" + +#: player_sizes.inc.php:41 +msgid "Larger 4:3 player" +msgstr "Größeres 4:3-Format" + +#: player_sizes.inc.php:47 +msgid "Larger 16:9 player" +msgstr "Größeres 16:9-Format" + +#: player_sizes.inc.php:53 +msgid "Maxi 4:3 player" +msgstr "Maxi-4:3-Format" + +#: player_sizes.inc.php:59 +msgid "Maxi 16:9 player" +msgstr "Maxi-16:9-Format" + +#: widget.php:130 +msgid "Title:" +msgstr "Titel:" + +#: widget.php:131 +msgid "Size:" +msgstr "Größe:" + +#: widget.php:150 +msgid "Type:" +msgstr "Typ:" + +#: widget.php:158 +msgid "audio" +msgstr "Audio" + +#: widget.php:159 +msgid "video" +msgstr "Video" + +#: widget.php:163 +msgid "Youtube-URL:" +msgstr "YouTube-URL:" + +#: widget.php:164 +msgid "Text:" +msgstr "Text:" + +#: wp-youtube-lyte.php:181 +msgid "Watch this playlist on YouTube" +msgstr "Diese Wiedergabeliste auf YouTube ansehen" + +#: wp-youtube-lyte.php:187 +msgid "Watch this playlist" +msgstr "Diese Wiedergabeliste ansehen" + +#: wp-youtube-lyte.php:187 wp-youtube-lyte.php:199 wp-youtube-lyte.php:203 +msgid "on YouTube" +msgstr "auf YouTube" + +#: wp-youtube-lyte.php:194 +msgid "Watch this video on YouTube" +msgstr "Dieses Video auf YouTube ansehen" + +#: wp-youtube-lyte.php:199 wp-youtube-lyte.php:203 +msgid "Watch this video" +msgstr "Dieses Video ansehen" + +#: wp-youtube-lyte.php:199 +msgid "or on" +msgstr "oder auf" + +#. Plugin URI of the plugin/theme +msgid "http://blog.futtta.be/wp-youtube-lyte/" +msgstr "http://blog.futtta.be/wp-youtube-lyte/" + +#. Description of the plugin/theme +msgid "Lite and accessible YouTube audio and video embedding." +msgstr "Einfaches und zugängliches Einbinden von YouTube-Video und -Audio." + +#. Author of the plugin/theme +msgid "Frank Goossens (futtta)" +msgstr "Frank Goossens (futtta)" + +#. Author URI of the plugin/theme +msgid "http://blog.futtta.be/" +msgstr "http://blog.futtta.be/" diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-es_ES.mo b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..34e6bd1000901f5f04585ac8a867000b6f2e5f21 GIT binary patch literal 6537 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-es_ES.po b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-es_ES.po new file mode 100644 index 0000000..99f9099 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-es_ES.po @@ -0,0 +1,205 @@ +# Copyright (C) 2010 WP YouTube Lyte +# This file is distributed under the same license as the WP YouTube Lyte package. +msgid "" +msgstr "" +"Project-Id-Version: WP YouTube Lyte 0.8.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-youtube-lyte\n" +"POT-Creation-Date: 2011-10-12 13:51:40+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2011-11-08 07:09+0100\n" +"Last-Translator: frank goossens <futtta@gmail.com>\n" +"Language-Team: \n" +"X-Poedit-Language: Spanish\n" + +#: widget.php:74 +msgid "Title:" +msgstr "Título:" + +#: widget.php:75 +msgid "Size:" +msgstr "Tamaño:" + +#: widget.php:91 +msgid "Type:" +msgstr "Tipo:" + +#: widget.php:99 +msgid "audio" +msgstr "audio" + +#: widget.php:100 +msgid "video" +msgstr "video" + +#: widget.php:104 +msgid "Youtube-URL:" +msgstr "URL-de-YouTube:" + +#: widget.php:105 +msgid "Text:" +msgstr "Texto:" + +#: player_sizes.inc.php:11 +msgid "Smaller 4:3 player" +msgstr "Reproductor pequeño 4:3" + +#: player_sizes.inc.php:16 +msgid "Smaller 16:9 player" +msgstr "Reproductor pequeño 16:9" + +#: player_sizes.inc.php:21 +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "Valor standard, por defecto video de YouTube son 4:3" + +#: player_sizes.inc.php:26 +msgid "YouTube default for 16:9-ratio video" +msgstr "Video de YouTube por defecto 16:9" + +#: player_sizes.inc.php:31 +msgid "Larger 4:3 player" +msgstr "Reproductor Grande 4:3" + +#: player_sizes.inc.php:36 +msgid "Larger 16:9 player" +msgstr "Reproductor Grande 16:9" + +#: player_sizes.inc.php:41 +msgid "Maxi 4:3 player" +msgstr "Reproductor Maxi 4:3" + +#: player_sizes.inc.php:46 +msgid "Maxi 16:9 player" +msgstr "Reproductor Maxi 16:9" + +#: wp-youtube-lyte.php:60 +#: wp-youtube-lyte.php:64 +msgid "Watch this playlist on YouTube" +msgstr "Mire esta lista de reproducción en Youtube" + +#: wp-youtube-lyte.php:65 +msgid "Watch this playlist" +msgstr "Mire esta lista de reproducción" + +#: wp-youtube-lyte.php:65 +#: wp-youtube-lyte.php:78 +#: wp-youtube-lyte.php:82 +msgid "on YouTube" +msgstr "en Youtube" + +#: wp-youtube-lyte.php:73 +msgid "Watch this video on YouTube" +msgstr "Mire este video en YouTube" + +#: wp-youtube-lyte.php:78 +#: wp-youtube-lyte.php:82 +msgid "Watch this video" +msgstr "Mire este video" + +#: wp-youtube-lyte.php:78 +msgid "or on" +msgstr "o en" + +#: options.php:37 +msgid "WP YouTube Lyte Settings" +msgstr "Configuración de WP YouTube Lyte" + +#: options.php:39 +msgid "WP YouTube Lyte inserts \"Lite YouTube Embeds\" in your blog. These look and feel like normal embedded YouTube, but don't use Flash unless clicked on, thereby <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-lyte/\" target=\"_blank\">reducing download size & rendering time substantially</a>. When a video is played, WP-YouTube-Lyte can either activate <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html\" target=\"_blank\">YouTube's embedded html5-player</a> or the older Flash-version, depending on the settings below." +msgstr "WP YouTube Lyte inserta \"Lite YouTube Embeds\" en tu blog. Se ven y se sienten como video normales de YouTube insertados, pero no utilizan flash a menos que se haga clic, por lo tanto <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-lyte/\" target=\"_blank\"> achica el tamaño de la descarga y el tiempo de renderizado sustancialmente</ a>. Cuando se reproduce un video, WP-YouTube-Lyte puede activar <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html\" target=\"_blank\">El reproductor html5 de YouTube insertado</a> o la versión de Flash más antigua, dependiendo de las opciones escogidas abajo." + +#: options.php:40 +msgid "You can place video and audio in your posts and pages by adding one or more http<strong>v</strong> or http<strong>a</strong> YouTube-links to your post. These will automatically be replaced by WP YouTube Lyte with the correct (flash-less) code. To add a video for example, you type a URL like <em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> or <em>http<strong>v</strong>://www.youtube.com/playlist?list=PLA486E741B25F8E00</em> for a playlist. If you want an audio-only player, you enter <em>http<strong>a</strong>://www.youtube.com/watch?v=BIQIGR-kWtc</em>. There's more info on the <a href=\"http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP YouTube Lyte FAQ page</a>." +msgstr "Usted puede poner audio y video en sus entradas de blog y páginas agregando uno o más http<strong>v</strong> o http<strong>a</strong> enlaces de YouTube en su entrada de blog. Estos serán reemplazados automáticamente por WP YouTube Lyte con el código correcto (sin flash). Para añadir un vídeo, por ejemplo, escriba una dirección URL como <em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> o <em>http<strong>v</strong>://www.youtube.com/playlist?list=PLA486E741B25F8E00</em> para una lista de reproducción. Si quiere un reproductor sólo de audio, introduzca <em>http<strong>a</strong>://www.youtube.com/watch?v=BIQIGR-kWtc</em>. Hay más información sobre la <a href=\"http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\"> página wordpress.org de WP YouTube Lyte FAQ </a >." + +#: options.php:41 +msgid "You can modify WP-YouTube-Lyte's behaviour by changing the following settings:" +msgstr "Usted puede modificar el comportamiento de WP-YouTube-Lyte cambiando las siguientes configuraciones:" + +#: options.php:48 +msgid "Player size" +msgstr "Tamaño del reproductor:" + +#: options.php:65 +msgid "Add links below the embedded videos?" +msgstr "¿Agregar enlaces abajo de los videos insertados?" + +#: options.php:67 +msgid "Show links?" +msgstr "¿Mostrar los enlaces?" + +#: options.php:68 +msgid " Add YouTube-link." +msgstr "Agregue enlace de YouTube" + +#: options.php:69 +msgid " Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr "Agregue ambos, enlace YouTube y un enlace de <a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>." + +#: options.php:70 +msgid " Don't add any links." +msgstr "No agregue ningún enlace." + +#: options.php:75 +msgid "Play video in HD if possible?" +msgstr "Reproducir el video en calidad HD si es posible?" + +#: options.php:79 +msgid "Enable HD" +msgstr "Habilitar HD" + +#: options.php:80 +msgid "No HD, we're smallband!" +msgstr "No HD 'banda pequeña)!" + +#: options.php:85 +msgid "Bonus feature: " +msgstr "Funcionalidad extra:" + +#: options.php:89 +msgid "Disable 3rd party tracking." +msgstr "Deshabilitar el seguimiento (tracking) de otras aplicaciones." + +#: options.php:90 +msgid "I don't mind 3rd party tracking (default)" +msgstr "No me molesta seguimiento (tracking) de otras aplicaciones (por defecto)" + +#: options.php:97 +msgid "Save Changes" +msgstr "Guarde los cambios" + +#: options.php:105 +msgid "futtta about" +msgstr "futtta sobre" + +#. #-#-#-#-# plugin.pot (WP YouTube Lyte 0.8.0) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: options.php:107 +msgid "WP YouTube Lyte" +msgstr "WP YouTube Lyte" + +#: options.php:108 +msgid "WordPress" +msgstr "WordPress" + +#: options.php:109 +msgid "Web Technology" +msgstr "Tecnología de la Web" + +#. Plugin URI of the plugin/theme +msgid "http://blog.futtta.be/tag/lyte" +msgstr "http://blog.futtta.be/tag/lyte" + +#. Description of the plugin/theme +msgid "Lite and accessible YouTube audio and video embedding." +msgstr "Video y audio de Youtube en su blog con rápido y fácil acceso." + +#. Author of the plugin/theme +msgid "Frank Goossens (futtta)" +msgstr "Frank Goossens (futtta)" + +#. Author URI of the plugin/theme +msgid "http://blog.futtta.be/" +msgstr "http://blog.futtta.be/" + diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-he_IL.mo b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-he_IL.mo new file mode 100644 index 0000000000000000000000000000000000000000..edb426d12e9d74499eed5461260c95376647d190 GIT binary patch literal 6907 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-he_IL.po b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-he_IL.po new file mode 100644 index 0000000..e35b4c4 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-he_IL.po @@ -0,0 +1,207 @@ +# Copyright (C) 2010 WP YouTube Lyte +# This file is distributed under the same license as the WP YouTube Lyte package. +msgid "" +msgstr "" +"Project-Id-Version: WP YouTube Lyte 0.8.0 In Hebrew\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-youtube-lyte\n" +"POT-Creation-Date: 2011-10-12 13:51:40+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2011-10-20 23:58+0200\n" +"Last-Translator: שגיב SEO <info@sagive.co.il>\n" +"Language-Team: Sagive SEO <info@sagive.co.il>\n" +"X-Poedit-Language: Hebrew\n" +"X-Poedit-Country: ISRAEL\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: widget.php:74 +msgid "Title:" +msgstr "כותרת:" + +#: widget.php:75 +msgid "Size:" +msgstr "גודל:" + +#: widget.php:91 +msgid "Type:" +msgstr "סוג:" + +#: widget.php:99 +msgid "audio" +msgstr "×ודיו" + +#: widget.php:100 +msgid "video" +msgstr "ויד×ו" + +#: widget.php:104 +msgid "Youtube-URL:" +msgstr "יוטיוב-URL:" + +#: widget.php:105 +msgid "Text:" +msgstr "טקסט\"" + +#: player_sizes.inc.php:11 +msgid "Smaller 4:3 player" +msgstr "נגן 4:3 קטן" + +#: player_sizes.inc.php:16 +msgid "Smaller 16:9 player" +msgstr "נגן 16:9 קטן" + +#: player_sizes.inc.php:21 +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "ערך סטנדרטי, נגן יוטיוב ברירת מחדל 4:3 יחס צפייה" + +#: player_sizes.inc.php:26 +msgid "YouTube default for 16:9-ratio video" +msgstr "נגן יוטיוב ברירת מחדל 16:9 יחס צפייה" + +#: player_sizes.inc.php:31 +msgid "Larger 4:3 player" +msgstr "נגן גדול 4:3" + +#: player_sizes.inc.php:36 +msgid "Larger 16:9 player" +msgstr "נגן גדול 16:9" + +#: player_sizes.inc.php:41 +msgid "Maxi 4:3 player" +msgstr "נגן מקסי 4:3" + +#: player_sizes.inc.php:46 +msgid "Maxi 16:9 player" +msgstr "נגן מקסי 16:9" + +#: wp-youtube-lyte.php:60 +#: wp-youtube-lyte.php:64 +msgid "Watch this playlist on YouTube" +msgstr "צפה ברשימת השמעה ×–×ת ביוטיוב" + +#: wp-youtube-lyte.php:65 +msgid "Watch this playlist" +msgstr "צפה ברשימת השמעה ×–×ת" + +#: wp-youtube-lyte.php:65 +#: wp-youtube-lyte.php:78 +#: wp-youtube-lyte.php:82 +msgid "on YouTube" +msgstr "ביוטיוב" + +#: wp-youtube-lyte.php:73 +msgid "Watch this video on YouTube" +msgstr "צפה בסרטון ×–×” ביוטיוב" + +#: wp-youtube-lyte.php:78 +#: wp-youtube-lyte.php:82 +msgid "Watch this video" +msgstr "צפה בסרטון ×–×”" + +#: wp-youtube-lyte.php:78 +msgid "or on" +msgstr "×ו ב-" + +#: options.php:37 +msgid "WP YouTube Lyte Settings" +msgstr "הגדרות WP YouTube Lyte" + +#: options.php:39 +msgid "WP YouTube Lyte inserts \"Lite YouTube Embeds\" in your blog. These look and feel like normal embedded YouTube, but don't use Flash unless clicked on, thereby <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-lyte/\" target=\"_blank\">reducing download size & rendering time substantially</a>. When a video is played, WP-YouTube-Lyte can either activate <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html\" target=\"_blank\">YouTube's embedded html5-player</a> or the older Flash-version, depending on the settings below." +msgstr "התוסף WP YouTube Lyte מכניס \"Lite YouTube Embeds\" בבלוג שלך. ×לו ×ž×¨×’×™×©×™× ×•×ž×ª× ×”×’×™× ×›×ž×• סרטוני יוטיוב ×¨×’×™×œ×™× ×ך ×œ× ×ž×©×ª×ž×©×™× ×‘×¤×œ×ש ××œ× ×× ×œ×—×¦×ª× ×¢×œ ×”×פשרות, בצורה ×›×–×ת <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-lyte/\" target=\"_blank\">×ž×§×˜×™× ×™× ×ת זמן ההורדה בצורה משמעותית</a>. ×›×שר הסרטון מתנגן, WP-YouTube-Lyte תפעיל ×ת <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html\" target=\"_blank\">הנגן HTML5 של יוטיוב</a> ×ו ×ת גרסת הפל×ש הישנה בהת×× ×œ×”×’×“×¨×•×ª למטה." + +#: options.php:40 +msgid "You can place video and audio in your posts and pages by adding one or more http<strong>v</strong> or http<strong>a</strong> YouTube-links to your post. These will automatically be replaced by WP YouTube Lyte with the correct (flash-less) code. To add a video for example, you type a URL like <em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> or <em>http<strong>v</strong>://www.youtube.com/playlist?list=PLA486E741B25F8E00</em> for a playlist. If you want an audio-only player, you enter <em>http<strong>a</strong>://www.youtube.com/watch?v=BIQIGR-kWtc</em>. There's more info on the <a href=\"http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP YouTube Lyte FAQ page</a>." +msgstr "×תה יכול להטמיע ס×ונד ×•×¡×¨×˜×•× ×™× ×¢×œ ידי הוספה בתוך הכתובת של הסרטון של http<strong>v</strong> ×ו http<strong>a</strong> ×‘×¤×•×¡×˜×™× ×ו ×‘×“×¤×™× ×©×œ×š. ×לה יוחלפו ב×ופן ×וטומטי על ידי WP YouTube Lyte ×¢× ×”×§×•×“ הנכון. לדוגמה, כדי להוסיף סרטון ×תה מדביק ×ת הכתובת <em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> ×ו <em>http<strong>v</strong>://www.youtube.com/playlist?list=PLA486E741B25F8E00</em> for a playlist. If you want an audio-only player, you enter <em>http<strong>a</strong>://www.youtube.com/watch?v=BIQIGR-kWtc</em>. There's more info on the <a href=\"http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP YouTube Lyte FAQ page</a>. שימו לב לתוספת של ×”×ות V." + +#: options.php:41 +msgid "You can modify WP-YouTube-Lyte's behaviour by changing the following settings:" +msgstr "×תה יכול לשנות ×ת ההתנהגות של WP-YouTube-Lyte בעזרת ההגדרות הב×ות:" + +#: options.php:48 +msgid "Player size" +msgstr "גודל נגן" + +#: options.php:65 +msgid "Add links below the embedded videos?" +msgstr "להוסיף ×§×™×©×•×¨×™× ×ž×ª×—×ª לסרטון המוטמע?" + +#: options.php:67 +msgid "Show links?" +msgstr "להציג קישורי×?" + +#: options.php:68 +msgid " Add YouTube-link." +msgstr "הוספת קישור יוטיוב" + +#: options.php:69 +msgid " Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr "הוסף קישור ×’× ×œ×™×•×˜×™×•×‘ ×•×’× ×œ<a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>." + +#: options.php:70 +msgid " Don't add any links." +msgstr "×ל תוסיף ××£ קישור." + +#: options.php:75 +msgid "Play video in HD if possible?" +msgstr "לנגן ×ת הסרטון ב×יכות HD ×× ×פשר?" + +#: options.php:79 +msgid "Enable HD" +msgstr "הפעל HD" + +#: options.php:80 +msgid "No HD, we're smallband!" +msgstr "בלי HD, ×ין לנו רוחב פס!" + +#: options.php:85 +msgid "Bonus feature: " +msgstr "תכונת בונוס:" + +#: options.php:89 +msgid "Disable 3rd party tracking." +msgstr "כבה מעקב צד שלישי" + +#: options.php:90 +msgid "I don't mind 3rd party tracking (default)" +msgstr "×œ× ×ž×¤×¨×™×¢ לי מעקב צד שלישי (ברירת מחדל)" + +#: options.php:97 +msgid "Save Changes" +msgstr "שמור שינויי×" + +#: options.php:105 +msgid "futtta about" +msgstr "×ודות futta" + +#. #-#-#-#-# plugin.pot (WP YouTube Lyte 0.8.0) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: options.php:107 +msgid "WP YouTube Lyte" +msgstr "WP YouTube Lyte" + +#: options.php:108 +msgid "WordPress" +msgstr "וורדפרס" + +#: options.php:109 +msgid "Web Technology" +msgstr "טכנולוגיית רשת" + +#. Plugin URI of the plugin/theme +msgid "http://blog.futtta.be/tag/lyte" +msgstr "http://blog.futtta.be/tag/lyte" + +#. Description of the plugin/theme +msgid "Lite and accessible YouTube audio and video embedding." +msgstr "טכנולוגייה קלה משקל להטמעה של סרטוני יוטיוב" + +#. Author of the plugin/theme +msgid "Frank Goossens (futtta)" +msgstr "Frank Goossens (futtta)" + +#. Author URI of the plugin/theme +msgid "http://blog.futtta.be/" +msgstr "http://blog.futtta.be/" + diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ro_RO.mo b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ro_RO.mo new file mode 100644 index 0000000000000000000000000000000000000000..c092194fab5f157166fc12d58d8b42a569f208d5 GIT binary patch literal 6130 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ro_RO.po b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ro_RO.po new file mode 100644 index 0000000..cb8d76f --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-ro_RO.po @@ -0,0 +1,202 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +# This file is distributed under the same license as the WP YouTube Lyte package. +#: widget.php:74 +msgid "Title:" +msgstr "Titlu:" + +#: widget.php:75 +msgid "Size:" +msgstr "Dimensiune:" + +#: widget.php:91 +msgid "Type:" +msgstr "Tip:" + +#: widget.php:99 +msgid "audio" +msgstr "audio" + +#: widget.php:100 +msgid "video" +msgstr "video" + +#: widget.php:104 +msgid "Youtube-URL:" +msgstr "YouTube-URL:" + +#: widget.php:105 +msgid "Text:" +msgstr "Text:" + +#: player_sizes.inc.php:11 +msgid "Smaller 4:3 player" +msgstr "Mai mic player de 4: 3" + +#: player_sizes.inc.php:16 +msgid "Smaller 16:9 player" +msgstr "Mai mic 16:9 jucător" + +#: player_sizes.inc.php:21 +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "Valoarea standard, YouTube implicit pentru 4: 3-raportul video" + +#: player_sizes.inc.php:26 +msgid "YouTube default for 16:9-ratio video" +msgstr "YouTube implicit pentru 16: 9-raportul video" + +#: player_sizes.inc.php:31 +msgid "Larger 4:3 player" +msgstr "Mai mare jucator 04:03" + +#: player_sizes.inc.php:36 +msgid "Larger 16:9 player" +msgstr "Mai mare jucător 16:9" + +#: player_sizes.inc.php:41 +msgid "Maxi 4:3 player" +msgstr "Player maxi 4: 3" + +#: player_sizes.inc.php:46 +msgid "Maxi 16:9 player" +msgstr "Player maxi 16: 9" + +#: wp-youtube-lyte.php:60 +#: wp-youtube-lyte.php:64 +msgid "Watch this playlist on YouTube" +msgstr "Uita-te la acest playlist pe YouTube" + +#: wp-youtube-lyte.php:65 +msgid "Watch this playlist" +msgstr "Uita-te la această listă de redare" + +#: wp-youtube-lyte.php:65 +#: wp-youtube-lyte.php:78 +#: wp-youtube-lyte.php:82 +msgid "on YouTube" +msgstr "pe YouTube" + +#: wp-youtube-lyte.php:73 +msgid "Watch this video on YouTube" +msgstr "Uita-te la acest video de pe YouTube" + +#: wp-youtube-lyte.php:78 +#: wp-youtube-lyte.php:82 +msgid "Watch this video" +msgstr "Uita-te la acest video" + +#: wp-youtube-lyte.php:78 +msgid "or on" +msgstr "sau pe" + +#: options.php:37 +msgid "WP YouTube Lyte Settings" +msgstr "WP YouTube Lyte Setări" + +#: options.php:39 +msgid "WP YouTube Lyte inserts \"Lite YouTube Embeds\" in your blog. These look and feel like normal embedded YouTube, but don't use Flash unless clicked on, thereby <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-lyte/\" target=\"_blank\">reducing download size & rendering time substantially</a>. When a video is played, WP-YouTube-Lyte can either activate <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html\" target=\"_blank\">YouTube's embedded html5-player</a> or the older Flash-version, depending on the settings below." +msgstr "WP YouTube introduce Lyte \"Lite YouTube ÃŽncorporează\" în blog. Aceste aspect si simt ca normală Embedded YouTube, dar nu folosi Flash excepÅ£ia cazului în care a făcut clic pe, astfel <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-lyte/\" target=\"_blank\"> reducerea dimensiunii de descărcare ÅŸi redare de timp în mod substanÅ£ial </a>. Când un film este jucat, WP-YouTube-Lyte poate activa fie <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html\" target=\"_blank\"> YouTube încorporat HTML5-player-ul </a> sau mai vechi Flash-versiune, în funcÅ£ie de setările de mai jos." + +#: options.php:40 +msgid "You can place video and audio in your posts and pages by adding one or more http<strong>v</strong> or http<strong>a</strong> YouTube-links to your post. These will automatically be replaced by WP YouTube Lyte with the correct (flash-less) code. To add a video for example, you type a URL like <em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> or <em>http<strong>v</strong>://www.youtube.com/playlist?list=PLA486E741B25F8E00</em> for a playlist. If you want an audio-only player, you enter <em>http<strong>a</strong>://www.youtube.com/watch?v=BIQIGR-kWtc</em>. There's more info on the <a href=\"http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP YouTube Lyte FAQ page</a>." +msgstr "PuteÅ£i pune video ÅŸi audio in mesajele dumneavoastră ÅŸi pagini prin adăugarea uneia sau mai multor http </strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> or <em>http<strong>v</strong>://www.youtube.com/playlist?list=PLA486E741B25F8E00</em> YouTube-link-uri pentru a posta dvs.. Acestea vor fi înlocuite automat cu WP . YouTube Lyte cu corectă (flash-mai puÅ£in) cod pentru a adauga un film de exemplu, tastaÅ£i un URL ca <em>http<strong>a</strong>://www.youtube.com/watch?v=BIQIGR-kWtc</em> wordpress.org <a href=\"http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP YouTube Lyte FAQ page</a>.\"WP YouTube lyte ÃŽntrebări frecvente pagina </ a>." + +#: options.php:41 +msgid "You can modify WP-YouTube-Lyte's behaviour by changing the following settings:" +msgstr "PuteÅ£i modifica comportamentul WP-YouTube-Lyte prin schimbarea următoarele setări:" + +#: options.php:48 +msgid "Player size" +msgstr "Player size" + +#: options.php:65 +msgid "Add links below the embedded videos?" +msgstr "Adauga linkurile de mai jos clipurile video încorporate?" + +#: options.php:67 +msgid "Show links?" +msgstr "AfiÅŸare link-uri?" + +#: options.php:68 +msgid " Add YouTube-link." +msgstr "AdăugaÅ£i YouTube-link." + +#: options.php:69 +msgid " Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr "AdăugaÅ£i atât o pe YouTube ÅŸi un <a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>-link." + +#: options.php:70 +msgid " Don't add any links." +msgstr "Nu adăuga orice link-uri." + +#: options.php:75 +msgid "Play video in HD if possible?" +msgstr "Redare video în format HD, dacă este posibil?" + +#: options.php:79 +msgid "Enable HD" +msgstr "Permite HD" + +#: options.php:80 +msgid "No HD, we're smallband!" +msgstr "Nu HD, suntem smallband!" + +#: options.php:85 +msgid "Bonus feature: " +msgstr "Caracteristica bonus: " + +#: options.php:89 +msgid "Disable 3rd party tracking." +msgstr "DezactivaÅ£i urmărirea 3rd party." + +#: options.php:90 +msgid "I don't mind 3rd party tracking (default)" +msgstr "Nu ma deranjeaza de urmărire 3rd party (implicit)" + +#: options.php:97 +msgid "Save Changes" +msgstr "SalvaÅ£i Modificările" + +#: options.php:105 +msgid "futtta about" +msgstr "futtta despre" + +#. #-#-#-#-# plugin.pot (WP YouTube Lyte 0.8.0) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: options.php:107 +msgid "WP YouTube Lyte" +msgstr "WP YouTube Lyte" + +#: options.php:108 +msgid "WordPress" +msgstr "WordPress" + +#: options.php:109 +msgid "Web Technology" +msgstr "Web Tehnologie" + +#. Plugin URI of the plugin/theme +msgid "http://blog.futtta.be/tag/lyte" +msgstr "http://blog.futtta.be/Tag/lyte" + +#. Description of the plugin/theme +msgid "Lite and accessible YouTube audio and video embedding." +msgstr "Lite ÅŸi accesibile pe YouTube audio ÅŸi video de încorporare." + +#. Author of the plugin/theme +msgid "Frank Goossens (futtta)" +msgstr "Frank Goossens (futtta)" + +#. Author URI of the plugin/theme +msgid "http://blog.futtta.be/" +msgstr "http://blog.futtta.be/" + diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sl_SI.mo b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sl_SI.mo new file mode 100644 index 0000000000000000000000000000000000000000..54b9d939cb1bf3eda60b959a2a56cee40454defe GIT binary patch literal 7467 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sl_SI.po b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sl_SI.po new file mode 100644 index 0000000..d0ec7ea --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sl_SI.po @@ -0,0 +1,485 @@ +msgid "" +msgstr "" +"Project-Id-Version: WP YouTube Lyte v1.5.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-youtube-lyte\n" +"POT-Creation-Date: 2011-10-12 13:51:40+00:00\n" +"PO-Revision-Date: 2015-03-30 11:17:25+0200\n" +"Last-Translator: Mitja Mihelic <mitja@arnes.si>\n" +"Language-Team: ARNES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" +"X-Generator: CSL v1.x\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: \n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: widget.php:130 +#@ wp-youtube-lyte +msgid "Title:" +msgstr "Naslov:" + +#: widget.php:131 +#@ wp-youtube-lyte +msgid "Size:" +msgstr "Velikost:" + +#: widget.php:150 +#@ wp-youtube-lyte +msgid "Type:" +msgstr "Tip:" + +#: widget.php:158 +#@ wp-youtube-lyte +msgid "audio" +msgstr "zvok" + +#: widget.php:159 +#@ wp-youtube-lyte +msgid "video" +msgstr "video" + +#: widget.php:163 +#@ wp-youtube-lyte +msgid "Youtube-URL:" +msgstr "YouTube URL:" + +#: widget.php:164 +#@ wp-youtube-lyte +msgid "Text:" +msgstr "Besedilo:" + +#: player_sizes.inc.php:17 +#@ wp-youtube-lyte +msgid "Smaller 4:3 player" +msgstr "ManjÅ¡i predvajalnik: razmerje 4:3" + +#: player_sizes.inc.php:23 +#@ wp-youtube-lyte +msgid "Smaller 16:9 player" +msgstr "ManjÅ¡i predvajalnik: razmerje 16:9" + +#: player_sizes.inc.php:29 +#@ wp-youtube-lyte +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "Standardna velikost: YouTubova privzeta velikost za video v razmerju 4:3" + +#: player_sizes.inc.php:35 +#@ wp-youtube-lyte +msgid "YouTube default for 16:9-ratio video" +msgstr "YouTubova privzeta velikost za video v razmerju 16:9" + +#: player_sizes.inc.php:41 +#@ wp-youtube-lyte +msgid "Larger 4:3 player" +msgstr "VeÄji predvajalnik: razmerje 4:3" + +#: player_sizes.inc.php:47 +#@ wp-youtube-lyte +msgid "Larger 16:9 player" +msgstr "VeÄji predvajalnik: razmerje 16:9" + +#: player_sizes.inc.php:53 +#@ wp-youtube-lyte +msgid "Maxi 4:3 player" +msgstr "Maksi predvajalnik: razmerje 4:3" + +#: player_sizes.inc.php:59 +#@ wp-youtube-lyte +msgid "Maxi 16:9 player" +msgstr "Maksi predvajalnik: razmerje 16:9" + +#: wp-youtube-lyte.php:186 +#@ wp-youtube-lyte +msgid "Watch this playlist on YouTube" +msgstr "Oglej si seznam predvajanja na YouTube" + +#: wp-youtube-lyte.php:192 +#@ wp-youtube-lyte +msgid "Watch this playlist" +msgstr "Oglej si seznam predvajanja" + +#: wp-youtube-lyte.php:192 +#: wp-youtube-lyte.php:204 +#: wp-youtube-lyte.php:208 +#@ wp-youtube-lyte +msgid "on YouTube" +msgstr "na Youtube" + +#: wp-youtube-lyte.php:199 +#@ wp-youtube-lyte +msgid "Watch this video on YouTube" +msgstr "Oglej si posnetek na YouTube" + +#: wp-youtube-lyte.php:204 +#: wp-youtube-lyte.php:208 +#@ wp-youtube-lyte +msgid "Watch this video" +msgstr "Oglej si posnetek" + +#: wp-youtube-lyte.php:204 +#@ wp-youtube-lyte +msgid "or on" +msgstr "ali na" + +#: options.php:91 +#@ wp-youtube-lyte +msgid "WP YouTube Lyte Settings" +msgstr "Nastavitve za WP YouTube Lyte" + +#: options.php:136 +#@ wp-youtube-lyte +msgid "Add links below the embedded videos?" +msgstr "Dodaj povezave pod vdelan video" + +#: options.php:139 +#@ wp-youtube-lyte +msgid "Show links?" +msgstr "Prikaži povezave?" + +#: options.php:140 +#@ wp-youtube-lyte +msgid " Add YouTube-link." +msgstr " Dodaj povezavo na YouTube" + +#: options.php:141 +#@ wp-youtube-lyte +msgid " Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr " Dodaj povezavo na YouTube in na <a href=\"http://icant.co.uk/easy-youtube/docs/index.html\" target=\"_blank\">Easy YouTube</a>" + +#: options.php:142 +#@ wp-youtube-lyte +msgid " Don't add any links." +msgstr " Ne dodaj povezav" + +#: options.php:161 +#@ wp-youtube-lyte +msgid "Enable HD" +msgstr "OmogoÄi HD (Å¡irokopasovna povezava)" + +#: options.php:198 +#@ wp-youtube-lyte +msgid "Save Changes" +msgstr "Shrani spremembe" + +#: options.php:207 +#@ wp-youtube-lyte +msgid "futtta about" +msgstr "futtta o" + +#. translators: plugin header field 'Name' +#: options.php:209 +#: wp-youtube-lyte.php:0 +#@ wp-youtube-lyte +msgid "WP YouTube Lyte" +msgstr "WP Youtube Lyte" + +#: options.php:210 +#@ wp-youtube-lyte +msgid "WordPress" +msgstr "WordPress" + +#: options.php:211 +#@ wp-youtube-lyte +msgid "Web Technology" +msgstr "spletnih tehnologijah" + +#. translators: plugin header field 'Description' +#: wp-youtube-lyte.php:0 +#@ wp-youtube-lyte +msgid "Lite and accessible YouTube audio and video embedding." +msgstr "Preprosto vstavljanje posnetkov YouTube." + +#. translators: plugin header field 'Author' +#: wp-youtube-lyte.php:0 +#@ wp-youtube-lyte +msgid "Frank Goossens (futtta)" +msgstr "Frank Goossens (futtta)" + +#. translators: plugin header field 'AuthorURI' +#: wp-youtube-lyte.php:0 +#@ wp-youtube-lyte +msgid "http://blog.futtta.be/" +msgstr "http://blog.futta.be/" + +#: options.php:21 +#@ wp-youtube-lyte +msgid "Your WP YouTube Lyte cache has been succesfully cleared." +msgstr "Predpomnilnik YouTube Lyte je bil uspeÅ¡no izpraznjen." + +#: options.php:27 +#@ wp-youtube-lyte +msgid "There was a problem, the WP YouTube Lyte cache could not be cleared." +msgstr "Napaka, predpomnilnika YouTube Lyte ni bilo mogoÄe izprazniti." + +#: options.php:115 +#: options.php:117 +#@ wp-youtube-lyte +msgid "Player size" +msgstr "Velikost predvajalnika" + +#: options.php:147 +#@ wp-youtube-lyte +msgid "Player position:" +msgstr "Položaj predvajalnika" + +#: options.php:151 +#@ wp-youtube-lyte +msgid "Left" +msgstr "Levo" + +#: options.php:152 +#@ wp-youtube-lyte +msgid "Center" +msgstr "Sredinsko" + +#: options.php:157 +#@ wp-youtube-lyte +msgid "Try to force HD (experimental)?" +msgstr "SkuÅ¡aj vsiliti HD (poskusno)" + +#: options.php:162 +#@ wp-youtube-lyte +msgid "No HD (default)" +msgstr "Brez HD (privzeto)" + +#: options.php:167 +#@ wp-youtube-lyte +msgid "Add microdata?" +msgstr "Dodaj mikropodatke" + +#: options.php:171 +#: options.php:181 +#@ wp-youtube-lyte +msgid "Yes (default)" +msgstr "Da (privzeto)" + +#: options.php:172 +#@ wp-youtube-lyte +msgid "No microdata, thanks." +msgstr "Brez mikropodatkov" + +#: options.php:187 +#@ wp-youtube-lyte +msgid "Empty WP YouTube Lyte's cache" +msgstr "Izprazni predpomnilnik YouTube Lyte" + +#: options.php:215 +#@ wp-youtube-lyte +msgid "Do not donate for this plugin!" +msgstr "Brez donacij, prosim!" + +#: player_sizes.inc.php:11 +#@ wp-youtube-lyte +msgid "Mini 16:9 player" +msgstr "Mini predvajalnik: razmerje 16:9" + +#. translators: plugin header field 'PluginURI' +#: wp-youtube-lyte.php:0 +#@ wp-youtube-lyte +msgid "http://blog.futtta.be/wp-youtube-lyte/" +msgstr "http://blog.futtta.be/wp-youtube-lyte/" + +#: options.php:150 +#@ wp-youtube-lyte +msgid "Left, center or right?" +msgstr "Levo, sredinsko ali desno?" + +#: options.php:160 +#@ wp-youtube-lyte +msgid "HD or not?" +msgstr "HD ali ne?" + +#: options.php:170 +#@ wp-youtube-lyte +msgid "Add video microdata to the HTML?" +msgstr "Dodaj mikropodatke v HTML?" + +#: options.php:177 +#: options.php:180 +#@ wp-youtube-lyte +msgid "Also act on normal YouTube links?" +msgstr "Deluj tudi za obiÄajne YouTube povezave" + +#: options.php:182 +#@ wp-youtube-lyte +msgid "No thanks." +msgstr "Ne" + +#. translators: plugin header field 'Version' +#: wp-youtube-lyte.php:0 +#@ wp-youtube-lyte +msgid "1.5.0" +msgstr "" + +#: options.php:140 +#@ wp-youtube-lyte +msgid "Show YouTube-link" +msgstr "Prikaži YouTube povezavo" + +#: options.php:142 +#@ wp-youtube-lyte +msgid "Don't include links." +msgstr "Ne prikaži YouTube povezave" + +#: options.php:161 +#@ wp-youtube-lyte +msgid "Enable HD?" +msgstr "OmogoÄi predvajanje v HD" + +#: options.php:162 +#@ wp-youtube-lyte +msgid "Don't enable HD playback" +msgstr "OnemogoÄi predvajanje v HD" + +#: options.php:171 +#@ wp-youtube-lyte +msgid "Sure, add microdata!" +msgstr "Da, dodaj mikropodatke" + +#: options.php:172 +#@ wp-youtube-lyte +msgid "No microdata in my HTML please." +msgstr "Na spletiÅ¡Äu ne želim mikropodatkov" + +#: options.php:181 +#@ wp-youtube-lyte +msgid "That would be great!" +msgstr "Da, deluj tudi za obiÄajne YouTube povezave" + +#: options.php:61 +#@ wp-youtube-lyte +msgid "For WP YouTube Lyte to function optimally, you should enter an YouTube API key " +msgstr "Za najboljÅ¡e delovanje vtiÄnika je priroÄljivo, da vpiÅ¡ete kljuÄ za YoutTube API. " + +#: options.php:63 +#@ wp-youtube-lyte +msgid "in the settings screen." +msgstr " v nastavitvah." + +#: options.php:76 +#@ wp-youtube-lyte +msgid "WP YouTube Lyte got the following error back from the YouTube API: " +msgstr "YouTube API je vrnil naslednjo napako: " + +#: options.php:104 +#@ wp-youtube-lyte +msgid "Please enter your YouTube API key." +msgstr "VpiÅ¡ete vaÅ¡ kljuÄ za YouTube API." + +#: options.php:105 +#@ wp-youtube-lyte +msgid "API key" +msgstr "API kljuÄ" + +#: options.php:105 +#@ wp-youtube-lyte +msgid "Test Key" +msgstr "Preveri kljuÄ" + +#: options.php:107 +#@ wp-youtube-lyte +msgid "WP YouTube Lyte uses YouTube's API to fetch information on each video. For your site to use that API, you will have to <a href=\"https://console.developers.google.com/project/\" target=\"_blank\">register your site as a new application</a>, enable the YouTube API for it and get a server key and fill it out here." +msgstr "VtiÄnik prek YouTube APIja pridobi informacijo za vsak posnetek. Da bi na vaÅ¡em spletiÅ¡Äu lahko uporabili YouTube API, <a href=\"https://console.developers.google.com/project/\" target=\"_blank\">registrirajte vaÅ¡ spletiÅ¡Äe kot novo aplikacijo</a>, zanjo omogoÄite YouTube API, pridobite kljuÄ in ga vpiÅ¡ite v zgornje polje." + +#: options.php:110 +#@ wp-youtube-lyte +msgid "Great, your YouTube API key has been taken care of!" +msgstr "OdliÄno! VaÅ¡ kljuÄ za YouTube API je bil uspeÅ¡no vpisan." + +#: options.php:182 +#@ wp-youtube-lyte +msgid "No, I'll stick to httpv or shortcodes." +msgstr "Ne, deluj le za httpv, httpa in kratke kode." + +#: options.php:204 +#@ wp-youtube-lyte +msgid "Happy with WP YouTube Lyte? Try my other plugins!" +msgstr "Vam je vtiÄnik WP YouTube Lyte vÅ¡eÄ? Preizkusite Å¡e ostale moje vtiÄnike." + +#: options.php:229 +#@ wp-youtube-lyte +msgid "Checking your key ..." +msgstr "Preverjanje kljuÄa ..." + +#: options.php:243 +#@ wp-youtube-lyte +msgid "That does not seem to be a correct API key!" +msgstr "Vnesli ste napaÄen API kljuÄ!" + +#: options.php:284 +#@ wp-youtube-lyte +msgid "API seems OK, you can Save Changes below now." +msgstr "API kljuÄ je veljaven. Zdaj lahko shranite nastavitve." + +#: options.php:286 +#@ wp-youtube-lyte +msgid "API key not OK, your key seems to " +msgstr "Napaka pri API kljuÄu. " + +#: options.php:289 +#@ wp-youtube-lyte +msgid "be invalid." +msgstr "Vpisani kljuÄ ni veljaven." + +#: options.php:292 +#@ wp-youtube-lyte +msgid "be valid, but restricted to an IP-address which is not your server's." +msgstr "KljuÄ je veljaven, a je omejen na naslov IP, ki pa ni vaÅ¡ strežnik." + +#: options.php:293 +#@ wp-youtube-lyte +msgid "Try changing the allowed IP for your API key to include this one: " +msgstr "Poskusite spremeniti dovoljene naslove IP na naslednjega: " + +#: options.php:297 +#@ wp-youtube-lyte +msgid "have expired, please check in the Google Developer Console." +msgstr "KljuÄ je potekel. Preverite ga na Google Developer Console." + +#: options.php:303 +#@ wp-youtube-lyte +msgid "be correct, but seems to have exceeded the number of requests that can be made with it." +msgstr "KljuÄ je pravilen, a videti je, da je Å¡tevilo zahtevkov, ki jih sme opraviti, preseženo." + +#: options.php:306 +#@ wp-youtube-lyte +msgid "probably work, but as the video with id " +msgstr "KljuÄ verjetno deluje. Žal posnetek z IDjem " + +#: options.php:308 +#@ wp-youtube-lyte +msgid " was not found we cannot be sure, please try again." +msgstr "ni bil najden, zato ga ni bilo mogoÄe preveriti. Poskusite ponovno." + +#: options.php:311 +#@ wp-youtube-lyte +msgid "be faulty, with YouTube API returning reason: " +msgstr "KljuÄ je napaÄen. YouTube API je vrnil napako: " + +#: options.php:316 +#@ wp-youtube-lyte +msgid "Something went wrong, WP YouTube Lyte might not have been able to retrieve information from the YouTube API, got error: " +msgstr "PriÅ¡lo je do napake. VtiÄnik ni mogel pridobiti podatkov prek YouTube APIja. " + +#: wp-youtube-lyte.php:586 +#@ wp-youtube-lyte +msgid "Settings" +msgstr "Nastavitve" + +#: options.php:98 +#@ wp-youtube-lyte +msgid "Your YouTube API key:" +msgstr "VaÅ¡ kljuÄ za YouTube API:" + +#: options.php:141 +#@ wp-youtube-lyte +msgid "Show YouTube and Easy YouTube link" +msgstr "Dodaj povezavo na YouTube in na Easy YouTube" + diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sr_RS.mo b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sr_RS.mo new file mode 100644 index 0000000000000000000000000000000000000000..1c9aeb98482ac1a730cf44124ba433ce0fce3d97 GIT binary patch literal 6194 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 HmaG2(b|+oO literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sr_RS.po b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sr_RS.po new file mode 100644 index 0000000..c7f3ebf --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-sr_RS.po @@ -0,0 +1,242 @@ +# Copyright (C) 2010 WP YouTube Lyte +# This file is distributed under the same license as the WP YouTube Lyte package. +msgid "" +msgstr "" +"Project-Id-Version: WP YouTube Lyte 0.8.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-youtube-lyte\n" +"POT-Creation-Date: 2011-10-12 13:51:40+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2014-11-26 09:17+0100\n" +"Last-Translator: Borisa Djuraskovic <borisad@webhostinghub.com>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"X-Generator: Poedit 1.5.7\n" + +#: widget.php:74 +msgid "Title:" +msgstr "Naslov:" + +#: widget.php:75 +msgid "Size:" +msgstr "VeliÄina:" + +#: widget.php:91 +msgid "Type:" +msgstr "Vrsta:" + +#: widget.php:99 +msgid "audio" +msgstr "audio" + +#: widget.php:100 +msgid "video" +msgstr "video" + +#: widget.php:104 +msgid "Youtube-URL:" +msgstr "Youtube-URL:" + +#: widget.php:105 +msgid "Text:" +msgstr "Tekst:" + +#: player_sizes.inc.php:11 +msgid "Smaller 4:3 player" +msgstr "Manji 4:3 player" + +#: player_sizes.inc.php:16 +msgid "Smaller 16:9 player" +msgstr "Manji 16:9 player" + +#: player_sizes.inc.php:21 +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "Standardna vrednost, podrazumevana za YouTube video-odnos 4:3 " + +#: player_sizes.inc.php:26 +msgid "YouTube default for 16:9-ratio video" +msgstr "YouTube podrazumevana vrednost za video-odnos 16:9" + +#: player_sizes.inc.php:31 +msgid "Larger 4:3 player" +msgstr "Veći 4:3 player" + +#: player_sizes.inc.php:36 +msgid "Larger 16:9 player" +msgstr "Veći 16:9 player" + +#: player_sizes.inc.php:41 +msgid "Maxi 4:3 player" +msgstr "Najveći 4:3 player" + +#: player_sizes.inc.php:46 +msgid "Maxi 16:9 player" +msgstr "Najveći 16:9 player" + +#: wp-youtube-lyte.php:60 wp-youtube-lyte.php:64 +msgid "Watch this playlist on YouTube" +msgstr "Gledajte ovu listu pesama na YouTube-u" + +#: wp-youtube-lyte.php:65 +msgid "Watch this playlist" +msgstr "Gledajte ovu listu pesama" + +#: wp-youtube-lyte.php:65 wp-youtube-lyte.php:78 wp-youtube-lyte.php:82 +msgid "on YouTube" +msgstr "na YouTube-u" + +#: wp-youtube-lyte.php:73 +msgid "Watch this video on YouTube" +msgstr "Gledajte ovaj video na YouTube-u" + +#: wp-youtube-lyte.php:78 wp-youtube-lyte.php:82 +msgid "Watch this video" +msgstr "Gledajte ovaj video" + +#: wp-youtube-lyte.php:78 +msgid "or on" +msgstr "ili na" + +#: options.php:37 +msgid "WP YouTube Lyte Settings" +msgstr "WP YouTube Lyte podeÅ¡avanja" + +#: options.php:39 +msgid "" +"WP YouTube Lyte inserts \"Lite YouTube Embeds\" in your blog. These look and " +"feel like normal embedded YouTube, but don't use Flash unless clicked on, " +"thereby <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-" +"lyte/\" target=\"_blank\">reducing download size & rendering time " +"substantially</a>. When a video is played, WP-YouTube-Lyte can either " +"activate <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-" +"youtube-videos.html\" target=\"_blank\">YouTube's embedded html5-player</a> " +"or the older Flash-version, depending on the settings below." +msgstr "" +"WP YouTube Lyte ubacuje \"Lite YouTube Embeds\" u vaÅ¡ blog. Izgleda i " +"funkcioniÅ¡e kao uobiÄajeni ubaÄeni YouTube, ali nemojte koristiti Flash, " +"osim ako niste kliknuli na <a href=\"http://blog.futtta.be/2010/08/30/the-" +"state-of-wp-youtube-lyte/\" target=\"_blank\">smanjenje veliÄine preuzimanja " +"i vremena prikazivanja </a>. Kad se prikazuje video, WP-YouTube-Lyte može " +"aktivirati <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-" +"youtube-videos.html\" target=\"_blank\">ugraÄ‘eni YouTube html5-player</a> " +"ili stariju Flash verziju u zavisnosti od podeÅ¡avanja koja slede." + +#: options.php:40 +msgid "" +"You can place video and audio in your posts and pages by adding one or more " +"http<strong>v</strong> or http<strong>a</strong> YouTube-links to your post. " +"These will automatically be replaced by WP YouTube Lyte with the correct " +"(flash-less) code. To add a video for example, you type a URL like " +"<em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> or " +"<em>http<strong>v</strong>://www.youtube.com/playlist?" +"list=PLA486E741B25F8E00</em> for a playlist. If you want an audio-only " +"player, you enter <em>http<strong>a</strong>://www.youtube.com/watch?" +"v=BIQIGR-kWtc</em>. There's more info on the <a href=\"http://wordpress.org/" +"extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP " +"YouTube Lyte FAQ page</a>." +msgstr "" +"Možete ubaciti video ili audio sadržaj u svoje postove i stranice tako Å¡to " +"ćete dodati jedan ili viÅ¡e http<strong>v</strong> ili http<strong>a</strong> " +"YouTube linkova svom postu. Njih će WP YouTube Lyte automatski zameniti " +"ispravnim kodom (bez flash-a). Da biste dodali video, na primer, unesite URL " +"kao Å¡to je <em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</" +"em> ili <em>http<strong>v</strong>://www.youtube.com/playlist?" +"list=PLA486E741B25F8E00</em> za listu pesama. ViÅ¡e informacija naći ćete na " +"<a href=\"http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/\" target=" +"\"_blank\">wordpress.org WP YouTube Lyte FAQ page</a>." + +#: options.php:41 +msgid "" +"You can modify WP-YouTube-Lyte's behaviour by changing the following " +"settings:" +msgstr "WP-YouTube-Lyte možete modifikovati izmenom sledećih podeÅ¡avanja:" + +#: options.php:48 +msgid "Player size" +msgstr "VeliÄina player-a" + +#: options.php:65 +msgid "Add links below the embedded videos?" +msgstr "Dodati linkove ispod ugraÄ‘enih video sadržaja?" + +#: options.php:67 +msgid "Show links?" +msgstr "Prikaži linkove?" + +#: options.php:68 +msgid " Add YouTube-link." +msgstr "Dodaj YouTube link." + +#: options.php:69 +msgid "" +" Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/" +"index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr "" +"Dodaj i YouTube i <a href=\"http://icant.co.uk/easy-youtube/docs/index.html" +"\" target=\"_blank\">Easy YouTube</a> link." + +#: options.php:70 +msgid " Don't add any links." +msgstr "Nemoj da dodajeÅ¡ nikakve linkove." + +#: options.php:75 +msgid "Play video in HD if possible?" +msgstr "Prikaži video u HD-u ako je moguće?" + +#: options.php:79 +msgid "Enable HD" +msgstr "Aktiviraj HD" + +#: options.php:80 +msgid "No HD, we're smallband!" +msgstr "Nema HD-a, mi smo smallband!" + +#: options.php:85 +msgid "Bonus feature: " +msgstr "Dodatna karakteristika:" + +#: options.php:89 +msgid "Disable 3rd party tracking." +msgstr "Deaktiviraj praćenje 3. strane." + +#: options.php:90 +msgid "I don't mind 3rd party tracking (default)" +msgstr "Ne smeta mi praćenje 3. strane (podrazumevano)" + +#: options.php:97 +msgid "Save Changes" +msgstr "SaÄuvaj izmene" + +#: options.php:105 +msgid "futtta about" +msgstr "futtta o" + +#. #-#-#-#-# plugin.pot (WP YouTube Lyte 0.8.0) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: options.php:107 +msgid "WP YouTube Lyte" +msgstr "WP YouTube Lyte" + +#: options.php:108 +msgid "WordPress" +msgstr "WordPress" + +#: options.php:109 +msgid "Web Technology" +msgstr "Web tehnologija" + +#. Plugin URI of the plugin/theme +msgid "http://blog.futtta.be/tag/lyte" +msgstr "http://blog.futtta.be/tag/lyte" + +#. Description of the plugin/theme +msgid "Lite and accessible YouTube audio and video embedding." +msgstr "Lite i pristupaÄno ugraÄ‘ivanje YouTube audio i video sadržaja." + +#. Author of the plugin/theme +msgid "Frank Goossens (futtta)" +msgstr "Frank Goossens (futtta)" + +#. Author URI of the plugin/theme +msgid "http://blog.futtta.be/" +msgstr "http://blog.futtta.be/" diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-uk_UA.mo b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-uk_UA.mo new file mode 100644 index 0000000000000000000000000000000000000000..9e28b6d41962abb8b9d431deee511247cf4611e3 GIT binary patch literal 7168 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 V(36XUWvFRZ?X*rnm(^Oq`Y*a!2|WM+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-uk_UA.po b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-uk_UA.po new file mode 100644 index 0000000..71fa483 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte-uk_UA.po @@ -0,0 +1,228 @@ +# Copyright (C) 2010 WP YouTube Lyte +# This file is distributed under the same license as the WP YouTube Lyte package. +msgid "" +msgstr "" +"Project-Id-Version: WP YouTube Lyte 0.8.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-youtube-lyte\n" +"POT-Creation-Date: 2011-10-12 13:51:40+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2014-05-22 23:31+0200\n" +"Last-Translator: Michael Yunat <Michael.Yunat@gmail.com>\n" +"Language-Team: http://getvoip.com/\n" +"Language: uk\n" +"X-Generator: Poedit 1.6.5\n" + +#: widget.php:74 +msgid "Title:" +msgstr "Ðазва:" + +#: widget.php:75 +msgid "Size:" +msgstr "Розмір:" + +#: widget.php:91 +msgid "Type:" +msgstr "Тип:" + +#: widget.php:99 +msgid "audio" +msgstr "аудіо" + +#: widget.php:100 +msgid "video" +msgstr "відео" + +#: widget.php:104 +msgid "Youtube-URL:" +msgstr "Youtube-URL:" + +#: widget.php:105 +msgid "Text:" +msgstr "ТекÑÑ‚:" + +#: player_sizes.inc.php:11 +msgid "Smaller 4:3 player" +msgstr "Менше 4:03 гравець" + +#: player_sizes.inc.php:16 +msgid "Smaller 16:9 player" +msgstr "Менше 16:9 гравець" + +#: player_sizes.inc.php:21 +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "Стандартне значеннÑ, YouTube замовчуваннÑм Ð´Ð»Ñ 4:3 відео з пропорцією" + +#: player_sizes.inc.php:26 +msgid "YouTube default for 16:9-ratio video" +msgstr "YouTube за замовчуваннÑм Ð´Ð»Ñ 16:09-відео з пропорцією" + +#: player_sizes.inc.php:31 +msgid "Larger 4:3 player" +msgstr "Великі 4:03 гравець" + +#: player_sizes.inc.php:36 +msgid "Larger 16:9 player" +msgstr "Великі 16:9 гравець" + +#: player_sizes.inc.php:41 +msgid "Maxi 4:3 player" +msgstr "МакÑÑ– 4:03 гравець" + +#: player_sizes.inc.php:46 +msgid "Maxi 16:9 player" +msgstr "МакÑÑ– 16:9 гравець" + +#: wp-youtube-lyte.php:60 wp-youtube-lyte.php:64 +msgid "Watch this playlist on YouTube" +msgstr "ДивитиÑÑ Ñ†ÐµÐ¹ плейлиÑÑ‚ на YouTube" + +#: wp-youtube-lyte.php:65 +msgid "Watch this playlist" +msgstr "ДивитиÑÑ Ñ†ÐµÐ¹ плейлиÑÑ‚" + +#: wp-youtube-lyte.php:65 wp-youtube-lyte.php:78 wp-youtube-lyte.php:82 +msgid "on YouTube" +msgstr "на YouTube" + +#: wp-youtube-lyte.php:73 +msgid "Watch this video on YouTube" +msgstr "ДивитиÑÑ Ñ†Ðµ відео на YouTube" + +#: wp-youtube-lyte.php:78 wp-youtube-lyte.php:82 +msgid "Watch this video" +msgstr "ДивитиÑÑ Ñ†Ðµ відео" + +#: wp-youtube-lyte.php:78 +msgid "or on" +msgstr "або на" + +#: options.php:37 +msgid "WP YouTube Lyte Settings" +msgstr "WP YouTube ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Lyte" + +#: options.php:39 +msgid "" +"WP YouTube Lyte inserts \"Lite YouTube Embeds\" in your blog. These look and " +"feel like normal embedded YouTube, but don't use Flash unless clicked on, " +"thereby <a href=\"http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-" +"lyte/\" target=\"_blank\">reducing download size & rendering time " +"substantially</a>. When a video is played, WP-YouTube-Lyte can either " +"activate <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-embed-" +"youtube-videos.html\" target=\"_blank\">YouTube's embedded html5-player</a> " +"or the older Flash-version, depending on the settings below." +msgstr "" +"WP YouTube Лайт вÑтавки \"Lite YouTube Вріже\" в Ñвій блог. Ці виглÑдати Ñ– " +"відчувати Ñебе Ñк звичайні вбудовані YouTube, але не викориÑтовувати Flash, " +"Ñкщо натиÑнути на них, тим Ñамим <a href=\"http://blog.futtta.be/2010/08/30/-" +"state-of-wp-youtube-Лайт/\" target=\"_blank\">ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ " +"Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ– Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‡Ð°Ñ Ñ–Ñтотно</a>. При відтворенні відео WP-YouTube-" +"Лайт може активувати <a href=\"http://apiblog.youtube.com/2010/07/new-way-to-" +"embed-youtube-videos.html\" target=\"_blank\">YouTube embedded html5-плеєр</" +"a> або Ñтаршого Flash-верÑÑ–Ñ—, в залежноÑті від налаштувань нижче." + +#: options.php:40 +msgid "" +"You can place video and audio in your posts and pages by adding one or more " +"http<strong>v</strong> or http<strong>a</strong> YouTube-links to your post. " +"These will automatically be replaced by WP YouTube Lyte with the correct " +"(flash-less) code. To add a video for example, you type a URL like " +"<em>http<strong>v</strong>://www.youtube.com/watch?v=QQPSMRQnNlU</em> or " +"<em>http<strong>v</strong>://www.youtube.com/playlist?" +"list=PLA486E741B25F8E00</em> for a playlist. If you want an audio-only " +"player, you enter <em>http<strong>a</strong>://www.youtube.com/watch?" +"v=BIQIGR-kWtc</em>. There's more info on the <a href=\"http://wordpress.org/" +"extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP " +"YouTube Lyte FAQ page</a>." +msgstr "" +"Ви можете розміÑтити відео Ñ– аудіо в ваших повідомленнÑÑ… Ñ– Ñторінках, " +"додавши один або декілька HTTP <strong>V</strong> або HTTP <strong>через</" +"strong> YouTube поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° ваш поÑÑ‚. Вони будуть автоматично замінені WP " +"YouTube Lyte з правильним (Flash- менше) код. Щоб додати відео приміром, ви " +"набираєте URL кшталт <em>HTTP <strong>V</strong> ://www.youtube.com/watch?" +"v=QQPSMRQnNlU</em> або <em>HTTP <strong>V</strong> ://www.youtube.com/" +"плейлиÑÑ‚? СпиÑок = PLA486E741B25F8E00</em> Ð´Ð»Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ. Якщо ви хочете " +"аудіо-тільки гравцÑ, ви входите <em>HTTP ://www.youtube.com/дивитиÑÑ? V = " +"BIQIGR-kWtc.</em> Там більше інформації на <a href=\"http://wordpress.org/" +"extend/plugins/wp-youtube-lyte/faq/\" target=\"_blank\">wordpress.org WP " +"YouTube Lyte Довідка Ñторінку</a> ." + +#: options.php:41 +msgid "" +"You can modify WP-YouTube-Lyte's behaviour by changing the following " +"settings:" +msgstr "" +"Ви можете змінити поведінку WP-YouTube-Lyte, змінюючи наÑтупне налаштуваннÑ:" + +#: options.php:48 +msgid "Player size" +msgstr "Розмір гравцÑ" + +#: options.php:65 +msgid "Add links below the embedded videos?" +msgstr "Додати поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð¸Ð¶Ñ‡Ðµ вбудованих відео?" + +#: options.php:67 +msgid "Show links?" +msgstr "Показати поÑиланнÑ?" + +#: options.php:68 +msgid " Add YouTube-link." +msgstr "Додати YouTube-поÑиланнÑ." + +#: options.php:69 +msgid "" +" Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/" +"index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr "" +"Додати Ñк на YouTube Ñ– <a href=\"http://icant.co.uk/easy-youtube/docs/index." +"html\" target=\"_blank\">Easy YouTube</a> -поÑиланнÑ. " + +#: options.php:70 +msgid " Don't add any links." +msgstr "Ðе додавайте поÑиланнÑ." + +#: options.php:75 +msgid "Play video in HD if possible?" +msgstr "Ð’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾ в HD, Ñкщо це можливо?" + +#: options.php:79 +msgid "Enable HD" +msgstr "Включити HD" + +#: options.php:80 +msgid "No HD, we're smallband!" +msgstr "ÐÑ– HD, ми не будемо ліній з низькою пропуÑкною!" + +#: options.php:85 +msgid "Bonus feature: " +msgstr "Ð‘Ð¾Ð½ÑƒÑ Ð¾ÑобливіÑть:" + +#: options.php:89 +msgid "Disable 3rd party tracking." +msgstr "Вимкніть відÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ 3 учаÑника." + +#: options.php:90 +msgid "I don't mind 3rd party tracking (default)" +msgstr "Я не проти третьої партії відÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ (за замовчуваннÑм)" + +#: options.php:97 +msgid "Save Changes" +msgstr "Зберегти зміни" + +#: options.php:105 +msgid "futtta about" +msgstr "futtta про" + +#: options.php:107 +msgid "WP YouTube Lyte" +msgstr "WP YouTube Lyte" + +#: options.php:108 +msgid "WordPress" +msgstr "WordPress" + +#: options.php:109 +msgid "Web Technology" +msgstr "Веб-технології" diff --git a/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte.pot b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte.pot new file mode 100644 index 0000000..127e1d7 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/languages/wp-youtube-lyte.pot @@ -0,0 +1,380 @@ +# Copyright (C) 2015 WP YouTube Lyte +# This file is distributed under the same license as the WP YouTube Lyte package. +msgid "" +msgstr "" +"Project-Id-Version: WP YouTube Lyte 1.5.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/wp-youtube-lyte\n" +"POT-Creation-Date: 2015-03-06 17:49:26+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" + +#: options.php:21 +msgid "Your WP YouTube Lyte cache has been succesfully cleared." +msgstr "" + +#: options.php:27 +msgid "There was a problem, the WP YouTube Lyte cache could not be cleared." +msgstr "" + +#: options.php:61 +msgid "" +"For WP YouTube Lyte to function optimally, you should enter an YouTube API " +"key " +msgstr "" + +#: options.php:63 +msgid "in the settings screen." +msgstr "" + +#: options.php:76 +msgid "WP YouTube Lyte got the following error back from the YouTube API: " +msgstr "" + +#: options.php:91 +msgid "WP YouTube Lyte Settings" +msgstr "" + +#: options.php:98 +msgid "Your YouTube API key." +msgstr "" + +#: options.php:104 +msgid "Please enter your YouTube API key." +msgstr "" + +#: options.php:105 +msgid "API key" +msgstr "" + +#: options.php:105 +msgid "Test Key" +msgstr "" + +#: options.php:107 +msgid "" +"WP YouTube Lyte uses YouTube's API to fetch information on each video. For " +"your site to use that API, you will have to <a href=\"https://console." +"developers.google.com/project/\" target=\"_blank\">register your site as a " +"new application</a>, enable the YouTube API for it and get a server key and " +"fill it out here." +msgstr "" + +#: options.php:110 +msgid "Great, your YouTube API key has been taken care of!" +msgstr "" + +#: options.php:115 options.php:117 +msgid "Player size" +msgstr "" + +#: options.php:136 +msgid "Add links below the embedded videos?" +msgstr "" + +#: options.php:139 +msgid "Show links?" +msgstr "" + +#: options.php:140 +msgid "Show YouTube-link" +msgstr "" + +#: options.php:140 +msgid " Add YouTube-link." +msgstr "" + +#: options.php:141 +msgid "Show YouTube and Ease YouTube link" +msgstr "" + +#: options.php:141 +msgid "" +" Add both a YouTube and an <a href=\"http://icant.co.uk/easy-youtube/docs/" +"index.html\" target=\"_blank\">Easy YouTube</a>-link." +msgstr "" + +#: options.php:142 +msgid "Don't include links." +msgstr "" + +#: options.php:142 +msgid " Don't add any links." +msgstr "" + +#: options.php:147 +msgid "Player position:" +msgstr "" + +#: options.php:150 +msgid "Left, center or right?" +msgstr "" + +#: options.php:151 +msgid "Left" +msgstr "" + +#: options.php:152 +msgid "Center" +msgstr "" + +#: options.php:157 +msgid "Try to force HD (experimental)?" +msgstr "" + +#: options.php:160 +msgid "HD or not?" +msgstr "" + +#: options.php:161 +msgid "Enable HD?" +msgstr "" + +#: options.php:161 +msgid "Enable HD" +msgstr "" + +#: options.php:162 +msgid "Don't enable HD playback" +msgstr "" + +#: options.php:162 +msgid "No HD (default)" +msgstr "" + +#: options.php:167 +msgid "Add microdata?" +msgstr "" + +#: options.php:170 +msgid "Add video microdata to the HTML?" +msgstr "" + +#: options.php:171 +msgid "Sure, add microdata!" +msgstr "" + +#: options.php:171 options.php:181 +msgid "Yes (default)" +msgstr "" + +#: options.php:172 +msgid "No microdata in my HTML please." +msgstr "" + +#: options.php:172 +msgid "No microdata, thanks." +msgstr "" + +#: options.php:177 options.php:180 +msgid "Also act on normal YouTube links?" +msgstr "" + +#: options.php:181 +msgid "That would be great!" +msgstr "" + +#: options.php:182 +msgid "No, I'll stick to httpv or shortcodes." +msgstr "" + +#: options.php:182 +msgid "No thanks." +msgstr "" + +#: options.php:187 +msgid "Empty WP YouTube Lyte's cache" +msgstr "" + +#: options.php:198 +msgid "Save Changes" +msgstr "" + +#: options.php:206 +msgid "futtta about" +msgstr "" + +#. #-#-#-#-# plugin.pot (WP YouTube Lyte 1.5.0) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: options.php:208 +msgid "WP YouTube Lyte" +msgstr "" + +#: options.php:209 +msgid "WordPress" +msgstr "" + +#: options.php:210 +msgid "Web Technology" +msgstr "" + +#: options.php:214 +msgid "Do not donate for this plugin!" +msgstr "" + +#: options.php:228 +msgid "Checking your key ..." +msgstr "" + +#: options.php:242 +msgid "That does not seem to be a correct API key!" +msgstr "" + +#: options.php:283 +msgid "API seems OK, you can Save Changes below now." +msgstr "" + +#: options.php:285 +msgid "API key not OK, your key seems to " +msgstr "" + +#: options.php:288 +msgid "be invalid." +msgstr "" + +#: options.php:291 +msgid "be valid, but restricted to an IP-address which is not your server's." +msgstr "" + +#: options.php:292 +msgid "Try changing the allowed IP for your API key to include this one: " +msgstr "" + +#: options.php:296 +msgid "have expired, please check in the Google Developer Console." +msgstr "" + +#: options.php:302 +msgid "" +"be correct, but seems to have exceeded the number of requests that can be " +"made with it." +msgstr "" + +#: options.php:305 +msgid "probably work, but as the video with id " +msgstr "" + +#: options.php:307 +msgid " was not found we cannot be sure, please try again." +msgstr "" + +#: options.php:310 +msgid "be faulty, with YouTube API returning reason: " +msgstr "" + +#: options.php:315 +msgid "" +"Something went wrong, WP YouTube Lyte might not have been able to retrieve " +"information from the YouTube API, got error: " +msgstr "" + +#: player_sizes.inc.php:11 +msgid "Mini 16:9 player" +msgstr "" + +#: player_sizes.inc.php:17 +msgid "Smaller 4:3 player" +msgstr "" + +#: player_sizes.inc.php:23 +msgid "Smaller 16:9 player" +msgstr "" + +#: player_sizes.inc.php:29 +msgid "Standard value, YouTube default for 4:3-ratio video" +msgstr "" + +#: player_sizes.inc.php:35 +msgid "YouTube default for 16:9-ratio video" +msgstr "" + +#: player_sizes.inc.php:41 +msgid "Larger 4:3 player" +msgstr "" + +#: player_sizes.inc.php:47 +msgid "Larger 16:9 player" +msgstr "" + +#: player_sizes.inc.php:53 +msgid "Maxi 4:3 player" +msgstr "" + +#: player_sizes.inc.php:59 +msgid "Maxi 16:9 player" +msgstr "" + +#: widget.php:130 +msgid "Title:" +msgstr "" + +#: widget.php:131 +msgid "Size:" +msgstr "" + +#: widget.php:150 +msgid "Type:" +msgstr "" + +#: widget.php:158 +msgid "audio" +msgstr "" + +#: widget.php:159 +msgid "video" +msgstr "" + +#: widget.php:163 +msgid "Youtube-URL:" +msgstr "" + +#: widget.php:164 +msgid "Text:" +msgstr "" + +#: wp-youtube-lyte.php:186 +msgid "Watch this playlist on YouTube" +msgstr "" + +#: wp-youtube-lyte.php:192 +msgid "Watch this playlist" +msgstr "" + +#: wp-youtube-lyte.php:192 wp-youtube-lyte.php:204 wp-youtube-lyte.php:208 +msgid "on YouTube" +msgstr "" + +#: wp-youtube-lyte.php:199 +msgid "Watch this video on YouTube" +msgstr "" + +#: wp-youtube-lyte.php:204 wp-youtube-lyte.php:208 +msgid "Watch this video" +msgstr "" + +#: wp-youtube-lyte.php:204 +msgid "or on" +msgstr "" + +#: wp-youtube-lyte.php:586 +msgid "Settings" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://blog.futtta.be/wp-youtube-lyte/" +msgstr "" + +#. Description of the plugin/theme +msgid "Lite and accessible YouTube audio and video embedding." +msgstr "" + +#. Author of the plugin/theme +msgid "Frank Goossens (futtta)" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://blog.futtta.be/" +msgstr "" diff --git a/wp-content/plugins/wp-youtube-lyte/lyte/index.html b/wp-content/plugins/wp-youtube-lyte/lyte/index.html new file mode 100644 index 0000000..513bfac --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/lyte/index.html @@ -0,0 +1 @@ +<html><body><p><a href="http://wordpress.org/extend/plugins/wp-youtube-lyte/">WP-YouTube-Lyte</a> is a WordPress plugin that inserts "Lite YouTube Embeds" in your blog. These look and feel like normal embedded YouTube, but don't use Flash unless clicked on, thereby <a href="http://blog.futtta.be/2010/04/23/high-performance-youtube-embeds/" title="performance tests comparing youtube embeds with lyte embeds">reducing download size & rendering time substantially</a>. The plugin can optionally use <a href="http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html">YouTube's new experimental HTML5 embed code</a>, meaning you can have an entirely flash-less YouTube experience on your blog.</p><p>Up to date info on WP-YouTube-Lyte <a href="http://blog.futtta.be/tag/lyte/" title="more about Lyte on my blog">can be found on blog.futtta.be</a>, where you can also find <a href="http://blog.futtta.be/tag/wordpress" title="blog.futtta.be about WordPress">posts about WordPress</a> and <a href="http://blog.futtta.be/category/internet/" title="about browsers, development and mobile web on blog.futtta.be">Web Technology in general</a>.</p></body></html> diff --git a/wp-content/plugins/wp-youtube-lyte/lyte/lyte-min.js b/wp-content/plugins/wp-youtube-lyte/lyte/lyte-min.js new file mode 100644 index 0000000..1049fbf --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/lyte/lyte-min.js @@ -0,0 +1 @@ +(function(e){var t=document;var n="https";e.te=function(){if(!r){var r=1;lts=e.getElementsByClassName("lyMe","div");for(var s=0,o=lts.length;s<o;s+=1){p=lts[s];vid=p.id.substring(4);if(mOs===null){cN=p.className.replace(/lyMe/,"lyte")+" lP";p.className=cN;sprite=bU+"lytesprite.png";e.addCss(".lyte .ctrl, .lyte .Rctrl, .lyte .Lctrl, .lyte .play { background-image: url("+sprite+"); }");if(cN.indexOf("audio")===-1){bgId="lyte_"+vid;thumb=t.getElementById(bgId).getAttribute("data-src");if(thumb!==""){bgCss="#"+bgId+" { background-image: url("+thumb+"); }";e.addCss(bgCss)}else{scr=t.createElement("script");scr.src=n+"://gdata.youtube.com/feeds/api/playlists/"+vid+"?v=2&alt=json-in-script&callback=ly.parsePL&fields=id,entry";scr.type="text/javascript";t.getElementsByTagName("head")[0].appendChild(scr)}}p.onclick=e.play}else{e.play(p.id)}}}var r=""};e.parsePL=function(t){thumb=t.feed.entry[0].media$group.media$thumbnail[1].url;if(n=="https"&&thumb.indexOf("https"==-1)){thumb=thumb.replace("http://","https://")}t_id=t.feed.id.$t.match(/:playlist:(PL[a-zA-Z0-9_]+)/);id="lyte_"+t_id[1];bgCss="#"+id+" { background-image: url("+thumb+"); }";e.addCss(bgCss)};e.getQ=function(e){qsa="";if(rqs=e.className.match(/qsa_(.*)\s/,"$1"))qsa=rqs[1].replace(/\\([\&\=\?])/g,"$1");return qsa};e.play=function(r){if(typeof r==="string"){tH=t.getElementById(r);aP=0}else{tH=this;tH.onclick="";aP=1}vid=tH.id.substring(4);hidef=0;if(tH.className.indexOf("hidef")!==-1){hidef="1&vq=hd720"}if(tH.className.indexOf("playlist")===-1){eU=n+"://www.youtube-nocookie.com/embed/"+vid+"?"}else{eU=n+"://www.youtube-nocookie.com/embed/videoseries?list="+vid+"&"}qsa=e.getQ(tH);if(tH.className.indexOf("audio")!==-1&&aP==1){qsa+="&autohide=0";aHgh="438";aSt="position:relative;top:-400px;"}else if(tH.className.indexOf("audio")!==-1&&aP==0){tH.parentNode.style.height="";tH.style.height="";aHgh=tH.clientHeight;aSt="height:"+aHgh+"px !important;"}else{aHgh=tH.clientHeight;aSt=""}tH.innerHTML='<iframe id="iF_'+vid+'" width="'+tH.clientWidth*2+'" height="'+aHgh+'" src="'+eU+"autoplay="+aP+"&controls=1&wmode=opaque&rel=0&egm=0&iv_load_policy=3&hd="+hidef+qsa+'" frameborder="0" style="'+aSt+'" allowfullscreen allow="autoplay"></iframe>';if(typeof tH.firstChild.getAttribute("kabl")=="string")tH.innerHTML="Please check Karma Blocker's config.";if(aP==0){window.addEventListener("orientationchange",function(){t.getElementById(r).width=t.getElementById(r).parentNode.clientWidth},false)}};e.getElementsByClassName=function(e,n,r){if(t.getElementsByClassName){getElementsByClassName=function(e,n,r){r=r||t;var i=r.getElementsByClassName(e),s=n?new RegExp("\\b"+n+"\\b","i"):null,o=[],u;for(var a=0,f=i.length;a<f;a+=1){u=i[a];if(!s||s.test(u.nodeName)){o.push(u)}}return o}}else if(t.evaluate){getElementsByClassName=function(e,n,r){n=n||"*";r=r||t;var i=e.split(" "),s="",o="http://www.w3.org/1999/xhtml",u=t.documentElement.namespaceURI===o?o:null,a=[],f,l;for(var c=0,h=i.length;c<h;c+=1){s+="[contains(concat(' ', @class, ' '), ' "+i[c]+" ')]"}try{f=t.evaluate(".//"+n+s,r,u,0,null)}catch(p){f=t.evaluate(".//"+n+s,r,null,0,null)}while(l=f.iterateNext()){a.push(l)}return a}}else{getElementsByClassName=function(e,n,r){n=n||"*";r=r||t;var i=e.split(" "),s=[],o=n==="*"&&r.all?r.all:r.getElementsByTagName(n),u,a=[],f;for(var l=0,c=i.length;l<c;l+=1){s.push(new RegExp("(^|\\s)"+i[l]+"(\\s|$)"))}for(var h=0,p=o.length;h<p;h+=1){u=o[h];f=false;for(var v=0,m=s.length;v<m;v+=1){f=s[v].test(u.className);if(!f){break}}if(f){a.push(u)}}return a}}return getElementsByClassName(e,n,r)};e.addCss=function(e){var n=t.createElement("style");n.type="text/css";if(n.styleSheet){n.styleSheet.cssText=e}else{n.appendChild(document.createTextNode(e))}t.getElementsByTagName("head")[0].appendChild(n)}})(window.ly=window.ly||{});(function(){var e=window;var t=document;if(e.addEventListener){e.addEventListener("load",ly.te,false);t.addEventListener("DomContentLoaded",function(){setTimeout("ly.te()",750)},false)}else{e.onload=ly.te;setTimeout("ly.te()",1e3)}})() diff --git a/wp-content/plugins/wp-youtube-lyte/lyte/lyte.js b/wp-content/plugins/wp-youtube-lyte/lyte/lyte.js new file mode 100644 index 0000000..c14e1a2 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/lyte/lyte.js @@ -0,0 +1,191 @@ +(function( ly ) { +var d = document; + +var sch="https"; + +ly.te = function() { + if (!rn) { + var rn=1; + lts = ly.getElementsByClassName("lyMe", "div"); + + for (var i = 0, lln = lts.length; i < lln; i += 1) { + p = lts[i]; + vid = p.id.substring(4); + if (mOs === null) { + cN = p.className.replace(/lyMe/, "lyte")+ " lP"; + p.className = cN; + sprite=(bU+"lytesprite.png"); + ly.addCss(".lyte .ctrl, .lyte .Rctrl, .lyte .Lctrl, .lyte .play { background-image: url("+sprite+"); }"); + if (cN.indexOf('audio') === -1) { + bgId="lyte_"+vid; + thumb=d.getElementById(bgId).getAttribute("data-src"); + if (thumb !== "") { + bgCss="#"+bgId+" { background-image: url("+thumb+"); }"; + ly.addCss(bgCss); + } else { + scr = d.createElement('script'); + scr.src = sch+"://gdata.youtube.com/feeds/api/playlists/"+ vid +"?v=2&alt=json-in-script&callback=ly.parsePL&fields=id,entry"; + scr.type = "text/javascript"; + d.getElementsByTagName('head')[0].appendChild(scr); + } + } + p.onclick = ly.play; + } else { + ly.play(p.id); + } + } + } + var rn=""; +} + +ly.parsePL = function(r) { + thumb=r.feed.entry[0].media$group.media$thumbnail[1].url; + if ((sch=="https")&&(thumb.indexOf('https'==-1))) {thumb=thumb.replace("http://","https://");} + t_id=r.feed.id.$t.match(/:playlist:(PL[a-zA-Z0-9_]+)/); + id="lyte_"+t_id[1]; + bgCss="#"+id+" { background-image: url("+thumb+"); }"; + ly.addCss(bgCss); +} + +ly.getQ = function(nD) { + qsa=""; + if (rqs=nD.className.match(/qsa_(.*)\s/,"$1")) qsa=rqs[1].replace(/\\([\&\=\?])/g, "$1"); + return qsa; +} + +ly.play = function(id) { + if (typeof id === 'string') { + tH=d.getElementById(id); + aP=0; + } else { + tH=this; + tH.onclick=""; + aP=1; + } + + vid=tH.id.substring(4); + + hidef=0; + if (tH.className.indexOf("hidef") !== -1) { hidef="1&vq=hd720" } + + if (tH.className.indexOf("playlist") === -1) { + eU=sch+"://www.youtube-nocookie.com/embed/" + vid + "?" + } else { + eU=sch+"://www.youtube-nocookie.com/embed/videoseries?list=" + vid + "&" + } + + qsa=ly.getQ(tH); + + if ((tH.className.indexOf("audio") !== -1) && (aP == 1)) { + qsa+="&autohide=0";aHgh="438";aSt="position:relative;top:-400px;" + } else if ((tH.className.indexOf("audio") !== -1) && (aP == 0)) { + tH.parentNode.style.height=""; + tH.style.height=""; + aHgh=tH.clientHeight; + aSt="height:"+aHgh+"px !important;"; + } else { + aHgh=tH.clientHeight; + aSt=""; + } + + tH.innerHTML="<iframe id=\"iF_" + vid + "\" width=\"" + tH.clientWidth*2 + "\" height=\"" + aHgh + "\" src=\""+eU+"autoplay="+aP+"&controls=1&wmode=opaque&rel=0&egm=0&iv_load_policy=3&hd="+hidef+qsa+"\" frameborder=\"0\" style=\"" + aSt + "\" allow="autoplay" allowfullscreen></iframe>" + + if(typeof tH.firstChild.getAttribute('kabl')=="string") tH.innerHTML="Please check Karma Blocker's config."; + + if (aP==0){window.addEventListener("orientationchange", function() {d.getElementById(id).width=d.getElementById(id).parentNode.clientWidth;}, false);} +} + +ly.getElementsByClassName = function(className, tag, elm) { + if (d.getElementsByClassName) { + getElementsByClassName = function (className, tag, elm) { + elm = elm || d; + var elements = elm.getElementsByClassName(className), + nodeName = (tag) ? new RegExp("\\b" + tag + "\\b", "i") : null, + returnElements = [], + current; + for (var i = 0, il = elements.length; i < il; i += 1) { + current = elements[i]; + if (!nodeName || nodeName.test(current.nodeName)) { + returnElements.push(current) + } + } + return returnElements + } + } else if (d.evaluate) { + getElementsByClassName = function (className, tag, elm) { + tag = tag || "*"; + elm = elm || d; + var classes = className.split(" "), + classesToCheck = "", + xhtmlNamespace = "http://www.w3.org/1999/xhtml", + namespaceResolver = (d.documentElement.namespaceURI === xhtmlNamespace) ? xhtmlNamespace : null, + returnElements = [], + elements, node; + for (var j = 0, jl = classes.length; j < jl; j += 1) { + classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]" + } + try { + elements = d.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null) + } catch (e) { + elements = d.evaluate(".//" + tag + classesToCheck, elm, null, 0, null) + } + while ((node = elements.iterateNext())) { + returnElements.push(node) + } + return returnElements + } + } else { + getElementsByClassName = function (className, tag, elm) { + tag = tag || "*"; + elm = elm || d; + var classes = className.split(" "), + classesToCheck = [], + elements = (tag === "*" && elm.all) ? elm.all : elm.getElementsByTagName(tag), + current, returnElements = [], + match; + for (var k = 0, kl = classes.length; k < kl; k += 1) { + classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)")) + } + for (var l = 0, ll = elements.length; l < ll; l += 1) { + current = elements[l]; + match = false; + for (var m = 0, ml = classesToCheck.length; m < ml; m += 1) { + match = classesToCheck[m].test(current.className); + if (!match) { + break + } + } + if (match) { + returnElements.push(current) + } + } + return returnElements + } + } + return getElementsByClassName(className, tag, elm) +}; + +ly.addCss = function(cssCode) { + var stEl = d.createElement("style"); + stEl.type = "text/css"; + if (stEl.styleSheet) { + stEl.styleSheet.cssText = cssCode; + } else { + stEl.appendChild(document.createTextNode(cssCode)); + } + d.getElementsByTagName("head")[0].appendChild(stEl); +} +} +( window.ly = window.ly || {} )); + +(function(){ +var w = window; +var d = document; + +if(w.addEventListener) { + w.addEventListener('load', ly.te, false); + d.addEventListener('DomContentLoaded', function(){setTimeout("ly.te()",750)}, false); +} else { + w.onload=ly.te; + setTimeout("ly.te()",1000); +}}()) diff --git a/wp-content/plugins/wp-youtube-lyte/lyte/lytesprite.png b/wp-content/plugins/wp-youtube-lyte/lyte/lytesprite.png new file mode 100644 index 0000000000000000000000000000000000000000..758465544af0aec3d1c6f4d2187e6e9516ac4655 GIT binary patch literal 4839 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/lyte/lytesprite_2014.png b/wp-content/plugins/wp-youtube-lyte/lyte/lytesprite_2014.png new file mode 100644 index 0000000000000000000000000000000000000000..88143d05b402b1421cfe77c2918edd5b3620cb31 GIT binary patch literal 3873 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/lyte/lytesprite_claes.png b/wp-content/plugins/wp-youtube-lyte/lyte/lytesprite_claes.png new file mode 100644 index 0000000000000000000000000000000000000000..49a29a28b40a905105fdfa0ed73bb0e6327caee1 GIT binary patch literal 10072 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/lytePartners.php b/wp-content/plugins/wp-youtube-lyte/lytePartners.php new file mode 100644 index 0000000..6d98d7e --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/lytePartners.php @@ -0,0 +1,122 @@ +<?php +/* +Classlessly add a "more tools" tab to promote (future) AO addons and/ or affiliate services +*/ + +if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly + +add_action('admin_init', 'lyte_partner_tabs_preinit'); +function lyte_partner_tabs_preinit() { + if (apply_filters('wp-youtube-lyte_filter_show_partner_tabs',true)) { + add_filter('wp-youtube-lyte_filter_settingsscreen_tabs','lyte_add_partner_tabs'); + } +} + +function lyte_add_partner_tabs($in) { + $in=array_merge($in,array('lyte_partners' => __('More Performance!','wp-youtube-lyte'))); + return $in; +} + +add_action('admin_menu','lyte_partners_init'); +function lyte_partners_init() { + if (apply_filters('wp-youtube-lyte_filter_show_partner_tabs',true)) { + $hook=add_submenu_page(NULL,'Lyte partner','Lyte partner','manage_options','lyte_partners','lyte_partners'); + // register_settings here as well if needed + } +} + +function lyte_partners() { + ?> + <style> + .itemDetail { + background: #fff; + width: 250px; + min-height: 290px; + border: 1px solid #ccc; + float: left; + padding: 15px; + position: relative; + margin: 0 10px 10px 0; + } + .itemTitle { + margin-top:0px; + margin-bottom:10px; + } + .itemImage { + text-align: center; + } + .itemImage img { + max-width: 95%; + max-height: 150px; + } + .itemDescription { + margin-bottom:30px; + } + .itemButtonRow { + position: absolute; + bottom: 10px; + right: 10px; + width:100%; + } + .itemButton { + float:right; + } + .itemButton a { + text-decoration: none; + color: #555; + } + .itemButton a:hover { + text-decoration: none; + color: #23282d; + } + </style> + <div class="wrap"> + <h1><?php _e('WP YouTube Lyte Settings','wp-youtube-lyte'); ?></h1> + <?php echo lyte_admin_tabs(); ?> + <?php + echo '<h2>'. __("These related services will improve your site's performance even more!",'wp-youtube-lyte') . '</h2>'; + ?> + <div> + <?php getLytePartnerFeed(); ?> + </div> + </div> + <?php +} + +function getLytePartnerFeed() { + $noFeedText=__( 'Have a look at <a href="http://optimizingmatters.com/">optimizingmatters.com</a> for wp-youtube-lyte power-ups!', 'wp-youtube-lyte' ); + + if (apply_filters('wp-youtube-lyte_settingsscreen_remotehttp',true)) { + $rss = fetch_feed( "http://feeds.feedburner.com/OptimizingMattersDownloads" ); + $maxitems = 0; + + if ( ! is_wp_error( $rss ) ) { + $maxitems = $rss->get_item_quantity( 20 ); + $rss_items = $rss->get_items( 0, $maxitems ); + } ?> + <ul> + <?php + if ( $maxitems == 0 ) { + echo $noFeedText; + } else { + foreach ( $rss_items as $item ) : + $itemURL = esc_url( $item->get_permalink() ); ?> + <li class="itemDetail"> + <h3 class="itemTitle"><a href="<?php echo $itemURL; ?>" target="_blank"><?php echo esc_html( $item->get_title() ); ?></a></h3> + <?php + if (($enclosure = $item->get_enclosure()) && (strpos($enclosure->get_type(),"image")!==false) ) { + $itemImgURL=esc_url($enclosure->get_link()); + echo "<div class=\"itemImage\"><a href=\"".$itemURL."\" target=\"_blank\"><img src=\"".$itemImgURL."\"/></a></div>"; + } + ?> + <div class="itemDescription"><?php echo wp_kses_post($item -> get_description() ); ?></div> + <div class="itemButtonRow"><div class="itemButton button-secondary"><a href="<?php echo $itemURL; ?>" target="_blank">More info</a></div></div> + </li> + <?php endforeach; ?> + <?php } ?> + </ul> + <?php + } else { + echo $noFeedText; + } +} diff --git a/wp-content/plugins/wp-youtube-lyte/lyteThumbs.php b/wp-content/plugins/wp-youtube-lyte/lyteThumbs.php new file mode 100644 index 0000000..be3210a --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/lyteThumbs.php @@ -0,0 +1,203 @@ +<?php +/* + * simple proxy for YouTube images + * + * @param string origThumbUrl + * @return image + * + * assumption 1: thumbnails are served from known domain ("ytimg.com","youtube.com","youtu.be") + * assumption 2: thumbnails are always jpg + * + */ + +// no error reporting, those break header() output +error_reporting(0); + +/* + * step 0: set constant for dir where thumbs are stored + declaring some variables + */ + +if ( ! defined( 'LYTE_CACHE_DIR' ) ) { + define( 'WP_CONTENT_DIR', dirname( dirname( __DIR__ ) ) ); + define( 'LYTE_CACHE_CHILD_DIR', 'cache/lyteThumbs' ); + define( 'LYTE_CACHE_DIR', WP_CONTENT_DIR .'/'. LYTE_CACHE_CHILD_DIR ); +} + +$lyte_thumb_error = ""; +$lyte_thumb_dontsave = ""; +$thumbContents = ""; +$lyte_thumb_report_err = false; + +/* + * step 1: get vid ID (or full thumbnail URL) from request and validate + */ + +// should we output debug info in a header? +if ( array_key_exists("reportErr", $_GET) ) { + $lyte_thumb_report_err = true; +} + +// get thumbnail-url from request +if ( array_key_exists("origThumbUrl", $_GET) && $_GET["origThumbUrl"] !== "" ) { + $origThumbURL = urldecode($_GET["origThumbUrl"]); +} else { + // faulty request, force a grey background + $origThumbURL = "https://i.ytimg.com/vi/thisisnotavalidvid/hqdefault.jpg"; +} + +// make sure the thumbnail-url is for youtube +$origThumbDomain = parse_url($origThumbURL, PHP_URL_HOST); +if ( str_replace( array("ytimg.com","youtube.com","youtu.be"), "", $origThumbDomain ) === $origThumbDomain ) { + // faulty request, force a grey background + $origThumbURL = "https://i.ytimg.com/vi/thisisnotavalidvid/hqdefault.jpg"; +} + +// make sure the thumbnail-url is for an image (.jpg) +$origThumbPath = parse_url($origThumbURL, PHP_URL_PATH); +if ( lyte_str_ends_in( $origThumbPath, ".jpg" ) !== true ) { + // faulty request, force a grey background + $origThumbURL = "https://i.ytimg.com/vi/thisisnotavalidvid/hqdefault.jpg"; +} + +// TODO: extra checks to prevent automated hotlinking abuse? + +/* + * step 2: check for and if need be create wp-content/cache/lyte_thumbs + */ + +if ( lyte_check_cache_dir(LYTE_CACHE_DIR) === false ) { + $lyte_thumb_dontsave = true; + $lyte_thumb_error .= "checkcache fail/ "; +} + +/* + * step 3: if not in cache: fetch from YT and store in cache + */ + +if ( strpos($origThumbURL,'http') !== 0 && strpos($origThumbURL,'//') === 0 ) { + $origThumbURL = 'https:'.$origThumbURL; +} + +$localThumb = LYTE_CACHE_DIR . '/' . md5($origThumbURL) . ".jpg"; + +if ( !file_exists($localThumb) || $lyte_thumb_dontsave ) { + $thumbContents = lyte_get_thumb($origThumbURL); + + if ( $thumbContents != "" && !$lyte_thumb_dontsave ) { + file_put_contents($localThumb, $thumbContents); + } +} + +/* + * step 4: serve img + */ + +if ( $thumbContents == "" && !$lyte_thumb_dontsave && file_exists($localThumb) && mime_content_type($localThumb) === "image/jpeg" ) { + $thumbContents = file_get_contents( $localThumb ); +} else { + $lyte_thumb_error .= "not from cache/ "; +} + +if ( $thumbContents != "") { + if ( $lyte_thumb_error !== "" && $lyte_thumb_report_err ) { + header('X-lyte-error: '.$lyte_thumb_error); + } + + $modTime=filemtime($localThumb); + + date_default_timezone_set("UTC"); + $modTimeMatch = (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) === $modTime); + + if ( $modTimeMatch ) { + header('HTTP/1.1 304 Not Modified'); + header('Connection: close'); + } else { + // send all sorts of headers + $expireTime=60*60*24*7; // 1w + header('Content-Length: '.strlen($thumbContents)); + header('Cache-Control: max-age='.$expireTime.', public, immutable'); + header('Expires: '.gmdate('D, d M Y H:i:s', time() + $expireTime).' GMT'); + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $modTime).' GMT'); + header('Content-type:image/jpeg'); + echo $thumbContents; + } +} else { + $lyte_thumb_error .= "no thumbContent/ "; + lyte_thumb_fallback(); +} + +/* + * helper functions + */ + +function lyte_check_cache_dir( $dir ) { + // Try creating the dir if it doesn't exist. + if ( ! file_exists( $dir ) ) { + @mkdir( $dir, 0775, true ); + if ( ! file_exists( $dir ) ) { + return false; + } + } + + // If we still cannot write, bail. + if ( ! is_writable( $dir ) ) { + return false; + } + + // Create an index.html in there to avoid prying eyes! + $idx_file = rtrim( $dir, '/\\' ) . '/index.html'; + if ( ! is_file( $idx_file ) ) { + @file_put_contents( $idx_file, '<html><head><meta name="robots" content="noindex, nofollow"></head><body>Generated by <a href="http://wordpress.org/extend/plugins/wp-youtube-lyte/" rel="nofollow">WP YouTube Lyte</a></body></html>' ); + } + + return true; +} + +function lyte_str_ends_in($haystack,$needle) { + $needleLength = strlen($needle); + $haystackLength = strlen($haystack); + $lastPos=strrpos($haystack,$needle); + if ($lastPos === $haystackLength - $needleLength) { + return true; + } else { + return false; + } +} + +function lyte_get_thumb($thumbUrl) { + global $lyte_thumb_error; + if (function_exists("curl_init")) { + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $thumbUrl); + curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); + $str = curl_exec($curl); + $err = curl_error($curl); + curl_close($curl); + if ( !$err && $str != "" ) { + return $str; + } else { + $lyte_thumb_error .= "curl err: ".$err."/ "; + } + } else { + $lyte_thumb_error .= "no curl/ "; + } + + // if no curl or if curl error + $resp = file_get_contents($thumbUrl); + return $resp; +} + +function lyte_thumb_fallback() { + global $origThumbURL, $lyte_thumb_error, $lyte_thumb_report_err; + // if for any reason we can't show a local thumbnail, we redirect to the original one + if ( strpos( $origThumbURL, "http" ) !== 0) { + $origThumbURL = "https:".$origThumbURL; + } + if ( $lyte_thumb_report_err ) { + header('X-lyte-error: '.$lyte_thumb_error); + } + header('HTTP/1.1 301 Moved Permanently'); + header('Location: '. $origThumbURL ); +} diff --git a/wp-content/plugins/wp-youtube-lyte/lyte_helper.php_example b/wp-content/plugins/wp-youtube-lyte/lyte_helper.php_example new file mode 100644 index 0000000..c1830c5 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/lyte_helper.php_example @@ -0,0 +1,113 @@ +<?php +/* +Plugin Name: Lyte Helper +Plugin URI: http://blog.futtta.be/category/wp-youtube-lyte/ +Description: Lyte Helper contains some helper functions to make WP YouTube Lyte even more flexible +Author: Frank Goossens (futtta) +Version: 0.2 +Author URI: http://blog.futtta.be/ +*/ + +/** +available filter hooks: lyte_settings, lyte_content_preparse, lyte_match_preparse_fragment, lyte_match_postparse_template, lyte_content_postparse, lyte_css, lyte_docaptions, lyte_match_thumburl +available action hooks; lyte_actionsfilters +*/ + +/** force widget text to be parsed as well using lyte_actionsfilters action */ +// add_action('lyte_actionsfilters','lyte_force_widgets',10,0); +function lyte_force_widgets() { + add_filter('widget_text', 'lyte_parse', 4); +} + +/** force wp youtube lyte to act on normal youtube url's as well using lyte_content_preparse filter */ +// add_filter('lyte_content_preparse','lyte_force_nonhttpv',10,1); +function lyte_force_nonhttpv($content) { + $content=preg_replace('/^https?:\/\/(www.)?youtu(be.com|.be)\/(watch\?v=)?/m','httpv://www.youtube.com/watch?v=',$content); + return $content; + } + +/** force hqThumb for all lytes using lyte_match_preparse_fragment */ +// add_filter('lyte_match_preparse_fragment','lyte_force_hqthumb',10,1); +function lyte_force_hqthumb($httpv) { + if (strpos($httpv,"hqThumb")===FALSE) { + if (strpos($httpv,"#")===FALSE) { + $httpv.="#hqThumb=1"; + } else { + $httpv.="&hqThumb=1"; + } + } + return $httpv; +} + +/** force showinfo=0 for all lytes using lyte_match_preparse_fragment filter */ +// add_filter('lyte_match_preparse_fragment','lyte_force_noinfo',10,1); +function lyte_force_noinfo($httpv) { + if (strpos($httpv,"showinfo")===FALSE) { + if (strpos($httpv,"#")===FALSE) { + $httpv.="#showinfo=0"; + } else { + $httpv.="&showinfo=0"; + } + } + return $httpv; +} + +/** add clickable video thumbnail to excerpt.*/ +// add_filter('lyte_match_postparse_template','lyte_override_excerpt_template',10,2); +function lyte_override_excerpt_template($content,$type) { + global $lyteSettings, $vid, $postID; + if ($type==="excerpt") { + $content = "<a href=\"".get_permalink( $postID )."\"><img src=\"".$lyteSettings['scheme']."://i.ytimg.com/vi/".$vid."/0.jpg\" alt=\"YouTube Video\"></a>"; + } + return $content; +} + +/** change setting from within code using lyte_settings filter */ +// add_filter('lyte_settings','lyte_change_settings',10,1); +function lyte_change_settings($settingsArray) { + $settingsArray['links']="0"; + return $settingsArray; +} + +/** disable captions lookup */ +// add_filter('lyte_docaptions','lyte_nocaptions',10,0); +function lyte_nocaptions() { + return false; +} + +/** force lyte javascript (which includes css) to be loaded in head instead of footer */ +// lyte_force_jshead(); +function lyte_force_jshead() { + add_filter('wp_head', lyte_init); + global $lynited; + $lynited=true; + } + +/** function to filter out httpv/a links from description tag as generated by all in one seo pack */ +// add_filter('aioseop_description','lyte_filter_aioseop_description'); +function lyte_filter_aioseop_description($description) { + return preg_replace('/\shttp(v|a):\/\/([^\s<]*)/','',$description); +} + +/** function to override thumbnail used for a video */ +// add_filter('lyte_match_thumburl','lyte_my_own_thumburl'); +function lyte_my_own_thumburl($thumb) { + return "http://images.vrt.be/mobile320/2014/08/05/8570f3aa-1c9e-11e4-b923-00163edf75b7.jpg"; +} + +/** change lyte css, for example to load Robota fond and force bottom control visible */ +// add_filter('lyte_css','fgo_lyte_change_css',10,1); +function fgo_lyte_change_css($lyte_css) { + // import robota + $lyte_css="@import url(https://fonts.googleapis.com/css?family=Roboto&subset=latin,latin-ext);".$lyte_css; + // show bottom control + $lyte_css.=" .ctrl{display:block !important;}"; + return $lyte_css; + } + +/** don't do lyte on mobile to avoid users having to press play twice */ +// add_filter('lyte_do_mobile','no_lyte_on_mobile',10,0); +function no_lyte_on_mobile(){ + return false; + } +?> diff --git a/wp-content/plugins/wp-youtube-lyte/options.php b/wp-content/plugins/wp-youtube-lyte/options.php new file mode 100644 index 0000000..d8a5ceb --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/options.php @@ -0,0 +1,512 @@ +<?php +if ( ! defined( 'ABSPATH' ) ) exit; + +require("lytePartners.php"); + +$plugin_dir = basename(dirname(__FILE__)).'/languages'; +load_plugin_textdomain( 'wp-youtube-lyte', false, $plugin_dir ); + +add_action('admin_menu', 'lyte_create_menu'); + +if (get_option('lyte_emptycache','0')==="1") { + $emptycache=lyte_rm_cache(); + update_option('lyte_emptycache','0'); + if ($emptycache==="OK") { + add_action('admin_notices', 'lyte_cacheclear_ok_notice'); + } elseif ($emptycache==="PART") { + add_action('admin_notices', 'lyte_cacheclear_part_notice'); + update_option('lyte_emptycache','1'); // to ensure cache-purging continues + } else { + add_action('admin_notices', 'lyte_cacheclear_fail_notice'); + } +} + +function lyte_cacheclear_ok_notice() { + echo '<div class="updated"><p>'; + _e('Your WP YouTube Lyte cache has been succesfully cleared.', 'wp-youtube-lyte' ); + echo '</p></div>'; +} + +function lyte_cacheclear_part_notice() { + echo '<div class="error"><p>'; + _e('WP YouTube Lyte cache was partially cleared, refresh this page to continue purging.', 'wp-youtube-lyte' ); + echo '</p></div>'; +} + +function lyte_cacheclear_fail_notice() { + echo '<div class="error"><p>'; + _e('There was a problem, the WP YouTube Lyte cache could not be cleared.', 'wp-youtube-lyte' ); + echo '</p></div>'; +} + +function lyte_create_menu() { + $hook=add_options_page( 'WP YouTube Lyte settings', 'WP YouTube Lyte', 'manage_options', 'lyte_settings_page', 'lyte_settings_page'); + add_action( 'admin_init', 'register_lyte_settings' ); + add_action( 'admin_print_scripts-'.$hook, 'lyte_admin_scripts' ); + add_action( 'admin_print_styles-'.$hook, 'lyte_admin_styles' ); +} + +function register_lyte_settings() { + register_setting( 'lyte-settings-group', 'lyte_show_links' ); + register_setting( 'lyte-settings-group', 'lyte_size' ); + register_setting( 'lyte-settings-group', 'lyte_hidef' ); + register_setting( 'lyte-settings-group', 'lyte_position' ); + register_setting( 'lyte-settings-group', 'lyte_notification' ); + register_setting( 'lyte-settings-group', 'lyte_microdata' ); + register_setting( 'lyte-settings-group', 'lyte_emptycache' ); + register_setting( 'lyte-settings-group', 'lyte_greedy' ); + register_setting( 'lyte-settings-group', 'lyte_yt_api_key' ); + register_setting( 'lyte-settings-group', 'lyte_local_thumb' ); + register_setting( 'lyte-settings-group', 'lyte_disclaimer' ); +} + +function lyte_admin_scripts() { + wp_enqueue_script('jqcookie', plugins_url('/external/jquery.cookie.min.js', __FILE__), array('jquery'),null,true); + wp_enqueue_script('unslider', plugins_url('/external/unslider-min.js', __FILE__), array('jquery'),null,true); + } + +function lyte_admin_styles() { + wp_enqueue_style('unslider', plugins_url('/external/unslider.css', __FILE__)); + wp_enqueue_style('unslider-dots', plugins_url('/external/unslider-dots.css', __FILE__)); +} + +function lyte_admin_nag_apikey() { + echo "<div class=\"update-nag\">"; + _e('For WP YouTube Lyte to function optimally, you should enter an YouTube API key ', 'wp-youtube-lyte'); + echo " <a href=\"options-general.php?page=lyte_settings_page\">"; + _e('in the settings screen.','wp-youtube-lyte'); + echo "</a>.</div>"; +} + +$lyte_yt_api_key=get_option('lyte_yt_api_key',''); +$lyte_yt_api_key=apply_filters('lyte_filter_yt_api_key', $lyte_yt_api_key); +if (empty($lyte_yt_api_key)) { + add_action('admin_notices', 'lyte_admin_nag_apikey'); + } + +function lyte_admin_api_error(){ + $yt_error=json_decode(get_option('lyte_api_error'),1); + echo '<div class="error"><p>'; + _e('WP YouTube Lyte got the following error back from the YouTube API: ','wp-youtube-lyte'); + echo "<strong>".$yt_error["reason"]."</strong>"; + echo " (".date("r",$yt_error["timestamp"]).")."; + echo '</a>.</p></div>'; + update_option('lyte_api_error',''); +} + +if (get_option('lyte_api_error','')!=='') { + add_action('admin_notices', 'lyte_admin_api_error'); + } + +function lyte_settings_page() { + global $pSize, $pSizeOrder; +?> +<style> +/* rss block */ +#futtta_feed ul{list-style:outside;} +#futtta_feed {font-size:medium; margin:0px 20px;} + +/* banner + unslider */ +.lyte_banner { + margin: 0 38px; + padding-bottom: 5px; +} +.lyte_banner ul li { + font-size:medium; + text-align:center; +} +.unslider { + position:relative; +} +.unslider-arrow { + display: block; + left: unset; + margin-top: -35px; + margin-left: 7px; + margin-right: 7px; + border-radius: 32px; + background: rgba(0, 0, 0, 0.10) no-repeat 50% 50%; + color: rgba(255, 255, 255, 0.8); + font: normal 20px/1 dashicons; + speak: none; + padding: 3px 2px 3px 4px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.unslider-arrow:hover { + background-color: rgba(0, 0, 0, 0.20); + color: #FFF; +} +.unslider-arrow.prev { + padding: 3px 4px 3px 2px; +} +.unslider-arrow.next { + right: 0px; +} +.unslider-arrow.prev::before { + content: "\f341"; +} +.unslider-arrow.next::before { + content: "\f345"; +} +/* responsive stuff: hide admin-feed on smaller screens */ +@media (min-width: 961px) { + #lyte_main {float:left;width:69%;} + #lyte_admin_feed{float:right;width:30%;display:block !important;} + } +@media (max-width: 960px) { + #lyte_main {width:100%;} + #lyte_admin_feed {width:0%;display:none !important;} +} +@media (max-width: 782px) { + #lyte_hide_adv span, #lyte_show_adv span {display: none;} + #lyte_hide_adv,#lyte_show_adv {height: 34px;padding: 4px 12px 8px 8px;} + #lyte_hide_adv:before,#lyte_show_adv:before {font-size: 25px;} + #lyte_main input[type="checkbox"] {margin-left: 10px;} + #lyte_main .cb_label {display: block; padding-left: 45px; text-indent: -45px;} +} +</style> +<div class="wrap"> +<h2><?php _e("WP YouTube Lyte Settings","wp-youtube-lyte") ?></h2> +<div style="float:left;width:70%;"> +<?php echo lyte_admin_tabs(); ?> +<form method="post" action="options.php"> + <?php settings_fields( 'lyte-settings-group' ); ?> + <table class="form-table"> + <input type="hidden" name="lyte_notification" value="<?php echo get_option('lyte_notification','0'); ?>" /> + <tr valign="top"> + <th scope="row"><?php _e("Your YouTube API key.","wp-youtube-lyte") ?></th> + <td> + <?php // only show api key input field if there's no result from filter + $filter_key=apply_filters('lyte_filter_yt_api_key',''); + if (empty($filter_key)) { ?> + <fieldset> + <legend class="screen-reader-text"><span><?php _e("Please enter your YouTube API key.","wp-youtube-lyte") ?></span></legend> + <label title="<?php _e('API key','wp-youtube-lyte'); ?>"><input type="text" size="28" name="lyte_yt_api_key" id="lyte_yt_api_key" value="<?php echo get_option('lyte_yt_api_key',''); ?>"><span id="check_api_key" class="submit button-secondary" style="margin:0px 5px;"><?php _e("Test Key"); ?></span></label><br /> + <div id="lyte_key_check_output" style="display:none;margin-bottom:5px;background-color:white;border-left:solid;border-width:4px;border-color:#2ea2cc;padding:5px 5px 5px 15px;"></div> + <?php _e("WP YouTube Lyte uses YouTube's API to fetch information on each video. For your site to use that API, you will have to <a href=\"https://console.developers.google.com/project/\" target=\"_blank\">register your site as a new application</a>, enable the YouTube API for it and get a server key and fill it out here.","wp-youtube-lyte"); ?> + </fieldset> + <?php } else { ?> + <?php _e("Great, your YouTube API key has been taken care of!","wp-youtube-lyte"); ?> + <?php } ?> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Player size","wp-youtube-lyte") ?>:</th> + <td> + <fieldset><legend class="screen-reader-text"><span><?php _e("Player size","wp-youtube-lyte") ?></span></legend> + <?php + $sel = !is_bool(get_option('lyte_size')) ? (int) get_option('lyte_size') : 0; + foreach (array("169","43") as $f) { + foreach ($pSizeOrder[$f] as $i) { + $pS=$pSize[$i]; + if ($pS['a']===true) { + ?> + <label title="<?php echo $pS['w']."X".$pS['h']; ?>"><input type="radio" name="lyte_size" class="l_size" value="<?php echo $i."\"";if($i===$sel) echo " checked";echo " /> ".$pS['w']."X".$pS['h']." (".$pS['t'];?>)</label><br /> + <?php + } + } + ?><br /><?php + } + ?> + </fieldset> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Add links below the embedded videos?","wp-youtube-lyte") ?></th> + <td> + <fieldset> + <legend class="screen-reader-text"><span><?php _e("Show links?","wp-youtube-lyte") ?></span></legend> + <label title="<?php _e('Show YouTube-link','wp-youtube-lyte');?>"><input type="radio" name="lyte_show_links" value="1" <?php if (get_option('lyte_show_links')==="1" || get_option('lyte_show_links')==="2") echo "checked" ?> /><?php _e(" Add YouTube-link.","wp-youtube-lyte") ?></label><br /> + <label title="<?php _e('Don\'t include links.','wp-youtube-lyte');?>"><input type="radio" name="lyte_show_links" value="0" <?php if ((get_option('lyte_show_links')!=="1") && (get_option('lyte_show_links')!=="2")) echo "checked" ?> /><?php _e(" Don't add any links.","wp-youtube-lyte") ?></label> + </fieldset> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Player position:","wp-youtube-lyte") ?></th> + <td> + <fieldset> + <legend class="screen-reader-text"><span><?php _e("Left, center or right?","wp-youtube-lyte"); ?></span></legend> + <label title="<?php _e('Left','wp-youtube-lyte');?>"><input type="radio" name="lyte_position" value="0" <?php if (get_option('lyte_position','0')==="0") echo "checked" ?> /><?php _e("Left","wp-youtube-lyte") ?></label><br /> + <label title="<?php _e('Center','wp-youtube-lyte');?>"><input type="radio" name="lyte_position" value="1" <?php if (get_option('lyte_position','0')==="1") echo "checked" ?> /><?php _e("Center","wp-youtube-lyte") ?></label> + </fieldset> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Try to force HD?","wp-youtube-lyte") ?></th> + <td> + <fieldset> + <legend class="screen-reader-text"><span><?php _e("HD or not?","wp-youtube-lyte"); ?></span></legend> + <label title="<?php _e('Enable HD?','wp-youtube-lyte');?>"><input type="radio" name="lyte_hidef" value="1" <?php if (get_option('lyte_hidef','0')==="1") echo "checked" ?> /><?php _e("Enable HD","wp-youtube-lyte") ?></label><br /> + <label title="<?php _e('Don\'t enable HD playback','wp-youtube-lyte');?>"><input type="radio" name="lyte_hidef" value="0" <?php if (get_option('lyte_hidef','0')!=="1") echo "checked" ?> /><?php _e("No HD (default)","wp-youtube-lyte") ?></label> + </fieldset> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Add microdata?","wp-youtube-lyte") ?></th> + <td> + <fieldset> + <legend class="screen-reader-text"><span><?php _e("Add video microdata to the HTML?","wp-youtube-lyte"); ?></span></legend> + <label title="<?php _e('Sure, add microdata!','wp-youtube-lyte');?>"><input type="radio" name="lyte_microdata" value="1" <?php if (get_option('lyte_microdata','1')==="1") echo "checked" ?> /><?php _e("Yes (default)","wp-youtube-lyte") ?></label><br /> + <label title="<?php _e('No microdata in my HTML please.','wp-youtube-lyte');?>"><input type="radio" name="lyte_microdata" value="0" <?php if (get_option('lyte_microdata','1')!=="1") echo "checked" ?> /><?php _e("No microdata, thanks.","wp-youtube-lyte") ?></label> + </fieldset> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Also act on normal YouTube links and iframes?","wp-youtube-lyte") ?></th> + <td> + <fieldset> + <legend class="screen-reader-text"><span><?php _e("Also act on normal YouTube links?","wp-youtube-lyte") ?></span></legend> + <label title="<?php _e('That would be great!','wp-youtube-lyte');?>"><input type="radio" name="lyte_greedy" value="1" <?php if (get_option('lyte_greedy','1')==="1") echo "checked" ?> /><?php _e("Yes (default)","wp-youtube-lyte") ?></label><br /> + <label title="<?php _e('No, I\'ll stick to httpv or shortcodes.','wp-youtube-lyte');?>"><input type="radio" name="lyte_greedy" value="0" <?php if (get_option('lyte_greedy','1')!=="1") echo "checked" ?> /><?php _e("No thanks.","wp-youtube-lyte") ?></label> + </fieldset> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Cache thumbnails locally?","wp-youtube-lyte"); ?></th> + <td> + <fieldset> + <legend class="screen-reader-text"><span><?php _e("Cache thumbnails locally?","wp-youtube-lyte") ?></span></legend> + <label title="<?php _e('That would be great!','wp-youtube-lyte');?>"><input type="radio" name="lyte_local_thumb" value="1" <?php if (get_option('lyte_local_thumb','0')==="1") echo "checked" ?> /><?php _e("Yes.","wp-youtube-lyte") ?></label><br /> + <label title="<?php _e('No, keep on using YouTube hosted thumbnails.','wp-youtube-lyte');?>"><input type="radio" name="lyte_local_thumb" value="0" <?php if (get_option('lyte_local_thumb','0')!=="1") echo "checked" ?> /><?php _e("No (default).","wp-youtube-lyte") ?></label> + <br /> + <?php _e("Having the thumbnails cached locally can improve performance and will enhance visitor privacy as by default no requests will be sent to YouTube unless the video is played.","wp-youtube-lyte"); ?> + </fieldset> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Text to be added under every LYTE video.","wp-youtube-lyte"); ?></th> + <td> + <fieldset> + <legend class="screen-reader-text"><span><?php _e("Text (e.g. for disclaimer) to be added under every LYTE video.","wp-youtube-lyte") ?></span></legend> + <input type="text" style="width:100%;" name="lyte_disclaimer" placeholder="" value="<?php echo esc_textarea(get_option('lyte_disclaimer','')); ?>" /><br /> + <br /> + <?php _e("If you want to add e.g. a privacy disclaimer under every LYTE embedded video, you can do so here. Some HTML is allowed. Simply leave empty not to show anything.","wp-youtube-lyte"); ?> + </fieldset> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Empty WP YouTube Lyte's cache","wp-youtube-lyte") ?></th> + <td> + <fieldset> + <legend class="screen-reader-text"><span>Remove WP YouTube Lyte's cache</span></legend> + <input type="checkbox" name="lyte_emptycache" value="1" /> + </fieldset> + </td> + </tr> + </table> + + <p class="submit"> + <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /> + </p> + +</form> +</div> +<div id="lyte_admin_feed" class=""> + <div class="lyte_banner "> + <ul> + <?php + if (apply_filters('wp-youtube-lyte_settingsscreen_remotehttp',true)) { + $lyte_banner=get_transient("wp-youtube-lyte_banner"); + if (empty($lyte_banner)) { + $banner_resp = wp_remote_get("http://misc.optimizingmatters.com/wp-youtube-lyte_news.html"); + if (!is_wp_error($banner_resp)) { + if (wp_remote_retrieve_response_code($banner_resp)=="200") { + $lyte_banner = wp_kses_post(wp_remote_retrieve_body($banner_resp)); + set_transient("wp-youtube-lyte_banner",$lyte_banner,DAY_IN_SECONDS); + } + } + } + echo $lyte_banner; + } + ?> + <li><?php _e("Need help? <a href='https://wordpress.org/plugins/wp-youtube-lyte/faq/'>Check out the FAQ here</a>.","wp-youtube-lyte"); ?></li> + <li><?php _e("Happy with wp-youtube-lyte?","wp-youtube-lyte"); ?><br /><a href="<?php echo network_admin_url(); ?>plugin-install.php?tab=search&type=author&s=optimizingmatters"><?php _e("Try my other plugins!","wp-youtube-lyte"); ?></a></li> + </ul> + </div> + <div style="margin-left:10px;margin-top:-5px;"> + <h2> + <?php _e("futtta about","wp-youtube-lyte") ?> + <select id="feed_dropdown" > + <option value="1"><?php _e("WP YouTube Lyte","wp-youtube-lyte") ?></option> + <option value="2"><?php _e("WordPress","wp-youtube-lyte") ?></option> + <option value="3"><?php _e("Web Technology","wp-youtube-lyte") ?></option> + </select> + </h2> + <div id="futtta_feed"> + <div id="wp-youtube-lytefeed"> + <?php getFutttaFeeds("http://feeds.feedburner.com/futtta_wp-youtube-lyte"); ?> + </div> + <div id="wordpressfeed"> + <?php getFutttaFeeds("http://feeds.feedburner.com/futtta_wordpress"); ?> + </div> + <div id="webtechfeed"> + <?php getFutttaFeeds("http://feeds.feedburner.com/futtta_webtech"); ?> + </div> + </div> + </div> + <div style="float:right;margin:50px 15px;"><a href="http://blog.futtta.be/2013/10/21/do-not-donate-to-me/" target="_blank"><img width="100px" height="85px" src="<?php echo plugins_url().'/'.plugin_basename(dirname(__FILE__)).'/external/do_not_donate_smallest.png'; ?>" title="<?php _e("Do not donate for this plugin!","wp-youtube-lyte"); ?>"></a></div> +</div> + +<script type="text/javascript"> + var feed = new Array; + feed[1]="wp-youtube-lytefeed"; + feed[2]="wordpressfeed"; + feed[3]="webtechfeed"; + cookiename="wp-youtube-lyte_feed"; + + jQuery(document).ready(function() { + jQuery( "#check_api_key" ).click(function() { + jQuery("#lyte_key_check_output").show(); + jQuery("#lyte_key_check_output").append('<p><?php _e("Checking your key ..."); ?></p>'); + lyte_yt_api_key=jQuery("input#lyte_yt_api_key").val(); + if ((lyte_yt_api_key.length>9) &&(lyte_yt_api_key.length<99)) { + var data = { + 'action': 'lyte_check_yt_api_key', + 'lyte_nonce': '<?php echo wp_create_nonce( "lyte_check_api_key" );?>', + 'lyte_yt_api_key': jQuery("input#lyte_yt_api_key").val() + }; + jQuery.post(ajaxurl, data, function(response) { + jQuery("#lyte_key_check_output").append('<p>'+response+'</p>'); + }); + } else { + jQuery("#lyte_key_check_output").append('<p><?php _e("That does not seem to be a correct API key!"); ?></p>'); + } + }) + jQuery('#lyte_admin_feed').fadeTo("slow",1).show(); + jQuery('.lyte_banner').unslider({autoplay:true, delay:3500, infinite: false, arrows:{prev:'<a class="unslider-arrow prev"></a>', next:'<a class="unslider-arrow next"></a>'}}).fadeTo("slow",1).show(); + + jQuery( "#feed_dropdown" ).change(function() { + jQuery("#futtta_feed").fadeTo(0,0); + jQuery("#futtta_feed").fadeTo("slow",1); + }); + + jQuery("#feed_dropdown").change(function() { show_feed(jQuery("#feed_dropdown").val()) }); + feedid=jQuery.cookie(cookiename); + if(typeof(feedid) !== "string") feedid=1; + show_feed(feedid); + }) + + function show_feed(id) { + jQuery('#futtta_feed').children().hide(); + jQuery('#'+feed[id]).show(); + jQuery("#feed_dropdown").val(id); + jQuery.cookie(cookiename,id,{ expires: 365 }); + } +</script> +</div> + +<?php } + +// ajax receiver for YT API key check +add_action( 'wp_ajax_lyte_check_yt_api_key', 'lyte_check_yt_api_key_callback' ); +function lyte_check_yt_api_key_callback() { + check_ajax_referer( "lyte_check_api_key", 'lyte_nonce' ); + $api_key = strip_tags($_POST['lyte_yt_api_key']); + + // use random video to make sure a cache is not spoiling things + $vidToCheck=array("ZmnZHudtzXg","2_7oQcAkyl8","nOvv80wkSgI","pBCt5nfsZ30","KHw7gdJ14uQ","qJ_PMvjmC6M","DVwHCGAr_OE","LtOGa5M8AuU","VHO9uZX9FNU"); + $randVidIndex=array_rand($vidToCheck); + + $api_response = lyte_get_YT_resp($vidToCheck[$randVidIndex],false,"",$api_key); + + if (is_array($api_response)) { + if (!empty($api_response["title"])) { + _e("API seems OK, you can Save Changes below now."); + } else if (!empty($api_response["reason"])) { + $all_but_one = __("API key not OK, your key seems to "); + switch ($api_response["reason"]) { + case "keyInvalid": + echo $all_but_one; + _e("be invalid.",'wp-youtube-lyte'); + break; + case "ipRefererBlocked": + echo $all_but_one; + _e("be valid, but restricted to an IP-address which is not your server's.",'wp-youtube-lyte'); + _e("Try changing the allowed IP for your API key to include this one: ",'wp-youtube-lyte'); + echo $_SERVER["SERVER_ADDR"]; + break; + case "keyExpired": + echo $all_but_one; + _e("have expired, please check in the Google Developer Console.",'wp-youtube-lyte'); + break; + case "limitExceeded": + case "quotaExceeded": + case "rateLimitExceeded": + case "userRateLimitExceeded": + echo $all_but_one; + _e("be correct, but seems to have exceeded the number of requests that can be made with it.",'wp-youtube-lyte'); + break; + case "videoNotFound": + echo $all_but_one; + _e("probably work, but as the video with id ",'wp-youtube-lyte'); + echo $vidToCheck[$randVidIndex]; + _e(" was not found we cannot be sure, please try again.",'wp-youtube-lyte'); + break; + default: + _e("Your API key might be OK, but the API call did not succeed or the response was not entirely expected. Technical error: ",'wp-youtube-lyte'); + echo $api_response["reason"]; + } + } + } else { + _e("Something went wrong, WP YouTube Lyte might not have been able to retrieve information from the YouTube API, got error: ",'wp-youtube-lyte'); + print_r($api_response); + } + wp_die(); +} + +function getFutttaFeeds($url) { +if (apply_filters('lyte_settingsscreen_remotehttp',true)) { + $rss = fetch_feed( $url ); + $maxitems = 0; + + if ( ! is_wp_error( $rss ) ) { + $maxitems = $rss->get_item_quantity( 7 ); + $rss_items = $rss->get_items( 0, $maxitems ); + } + ?> + <ul> + <?php if ( $maxitems == 0 ) : ?> + <li><?php _e( 'No items', 'autoptimize' ); ?></li> + <?php else : ?> + <?php foreach ( $rss_items as $item ) : ?> + <li> + <a href="<?php echo esc_url( $item->get_permalink() ); ?>" + title="<?php printf( __( 'Posted %s', 'autoptimize' ), $item->get_date('j F Y | g:i a') ); ?>"> + <?php echo esc_html( $item->get_title() ); ?> + </a> + </li> + <?php endforeach; ?> + <?php endif; ?> + </ul> + <?php +} +} + +// based on http://wordpress.stackexchange.com/a/58826 +function lyte_admin_tabs(){ + $tabs = apply_filters('wp-youtube-lyte_filter_settingsscreen_tabs',array('lyte_settings_page' => __('Main','wp-youtube-lyte'))); + $tabContent=""; + if (count($tabs) >= 1) { + if(isset($_GET['page'])){ + $currentId = $_GET['page']; + } else { + $currentId = "wp-youtube-lyte"; + } + $tabContent .= "<h2 class=\"nav-tab-wrapper\">"; + foreach($tabs as $tabId => $tabName){ + if($currentId == $tabId){ + $class = " nav-tab-active"; + } else{ + $class = ""; + } + $tabContent .= '<a class="nav-tab'.$class.'" href="?page='.$tabId.'">'.$tabName.'</a>'; + } + $tabContent .= "</h2>"; + } else { + $tabContent = "<hr/>"; + } + + return $tabContent; +} +?> diff --git a/wp-content/plugins/wp-youtube-lyte/player_sizes.inc.php b/wp-content/plugins/wp-youtube-lyte/player_sizes.inc.php new file mode 100644 index 0000000..d508568 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/player_sizes.inc.php @@ -0,0 +1,99 @@ +<?php + +$plugin_dir = basename(dirname(__FILE__)).'/languages'; +load_plugin_textdomain( 'wp-youtube-lyte', false, $plugin_dir ); + +$pDefault=2; + +$pSize[8]['a']=true; +$pSize[8]['w']=420; +$pSize[8]['h']=236; +$pSize[8]['t']=__("Mini 16:9 player","wp-youtube-lyte"); +$pSize[8]['f']="169"; + +$pSize[0]['a']=true; +$pSize[0]['w']=420; +$pSize[0]['h']=315; +$pSize[0]['t']=__("Smaller 4:3 player","wp-youtube-lyte"); +$pSize[0]['f']="43"; + +$pSize[1]['a']=true; +$pSize[1]['w']=560; +$pSize[1]['h']=315; +$pSize[1]['t']=__("Smaller 16:9 player","wp-youtube-lyte"); +$pSize[1]['f']="169"; + +$pSize[2]['a']=true; +$pSize[2]['w']=480; +$pSize[2]['h']=360; +$pSize[2]['t']=__("Standard value, YouTube default for 4:3-ratio video","wp-youtube-lyte"); +$pSize[2]['f']="43"; + +$pSize[3]['a']=true; +$pSize[3]['w']=640; +$pSize[3]['h']=360; +$pSize[3]['t']=__("YouTube default for 16:9-ratio video","wp-youtube-lyte"); +$pSize[3]['f']="169"; + +$pSize[4]['a']=true; +$pSize[4]['w']=640; +$pSize[4]['h']=480; +$pSize[4]['t']=__("Larger 4:3 player","wp-youtube-lyte"); +$pSize[4]['f']="43"; + +$pSize[5]['a']=true; +$pSize[5]['w']=853; +$pSize[5]['h']=480; +$pSize[5]['t']=__("Larger 16:9 player","wp-youtube-lyte"); +$pSize[5]['f']="169"; + +$pSize[6]['a']=true; +$pSize[6]['w']=960; +$pSize[6]['h']=720; +$pSize[6]['t']=__("Maxi 4:3 player","wp-youtube-lyte"); +$pSize[6]['f']="43"; + +$pSize[7]['a']=true; +$pSize[7]['w']=1280; +$pSize[7]['h']=720; +$pSize[7]['t']=__("Maxi 16:9 player","wp-youtube-lyte"); +$pSize[7]['f']="169"; + +$pSizeOrder['169']=array(8,1,3,5,7); +$pSizeOrder['43']=array(0,2,4,6); + +// widget sizes +$wDefault=4; +$wSize[1]['h']=125; +$wSize[1]['w']=150; +$wSize[1]['depr']=true; +$wSize[2]['h']=133; +$wSize[2]['w']=160; +$wSize[2]['depr']=true; +$wSize[3]['h']=150; +$wSize[3]['w']=180; +$wSize[3]['depr']=true; +$wSize[4]['h']=200; +$wSize[4]['w']=200; +$wSize[4]['depr']=false; +$wSize[5]['h']=200; +$wSize[5]['w']=250; +$wSize[5]['depr']=false; +$wSize[6]['h']=225; +$wSize[6]['w']=300; +$wSize[6]['depr']=false; +$wSize[7]['h']=300; +$wSize[7]['w']=400; +$wSize[7]['depr']=false; + +// bigger widgets, for use in pagebuilders rather then sidebars +$wSize[8]['h']=400; +$wSize[8]['w']=711; +$wSize[8]['depr']=false; +$wSize[9]['h']=500; +$wSize[9]['w']=889; +$wSize[9]['depr']=false; +$wSize[10]['h']=600; +$wSize[10]['w']=1066; +$wSize[10]['depr']=false; +?> diff --git a/wp-content/plugins/wp-youtube-lyte/readme.txt b/wp-content/plugins/wp-youtube-lyte/readme.txt new file mode 100644 index 0000000..a2ea61a --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/readme.txt @@ -0,0 +1,519 @@ +=== WP YouTube Lyte === +Contributors: futtta, optimizingmatters +Tags: youtube, video, performance, gdpr, lazy load +Donate link: http://blog.futtta.be/2013/10/21/do-not-donate-to-me/ +Requires at least: 4.0 +Tested up to: 5.2 +Stable tag: 1.7.7 + +High performance YouTube video, playlist and audio-only embeds which don't slow down your blog and offer optimal accessibility. + +== Description == + +WP YouTube Lyte allows you to "lazy load" your video's, by inserting responsive "Lite YouTube Embeds". These look and feel like normal embedded YouTube, but only call the "fat" YouTube-player when clicked on, thereby [reducing download size & rendering time substantially](http://blog.futtta.be/2012/04/03/speed-matters-re-evaluating-wp-youtube-lytes-performance/) when embedding YouTube occasionally and improving page performance dramatically when you've got multiple YouTube video's on one and the same page. The plugin can be configured to cache YouTube thumbnails locally, improving both performance and privacy. As such LYTE embedded YouTube videos do not require requests to the YouTube servers, probably (I am not a lawyer) allowing for better GDPR-compliance. + +The plugin picks up on normal YouTube links, taking over from WordPress core's oEmbed. Alternatively you can add a YouTube-link for a video or [an entire playlist](http://blog.futtta.be/2011/10/11/wp-youtube-lyte-support-for-playlists-almost-included/) with "httpv" instead of "http(s)" or add a Lyte widget to your sidebar and WP YouTube Lyte replaces that link with the correct performance-optimized code. Some examples: + +* httpv://www.youtube.com/watch?v=_SQkWbRublY (normal video embed) +* httpv://youtu.be/_SQkWbRublY (video embed with youtube-shortlink) +* httpa://www.youtube.com/watch?v=_SQkWbRublY (audio only embed) +* httpv://www.youtube.com/playlist?list=PLA486E741B25F8E00 (playlist embed) +* httpv://www.youtube.com/watch?v=_SQkWbRublY#stepSize=-1 (video player, one size smaller than what's configured as default) +* httpv://www.youtube.com/watch?v=_SQkWbRublY?start=20&showinfo=0 (video player, start playing at 20 seconds and don't show title) + +Or using shortcodes: +`[lyte id="_SQkWbRublY" /]` +`[lyte id="_SQkWbRublY" audio="true" /]` +`[lyte id="A486E741B25F8E00" playlist="true" /]` + +WP YouTube Lyte has been written with optimal performance as primary goal, but has been tested for maximum browser-compatibility (iPad included) while keeping an eye on accessibility. Starting with version 1.2.0 lyte embeds are fully responsive and can automatically embed [videoObject microdata](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=2413309) as well. The plugin is fully multi-language, with support for Catalan, Dutch, English, French, German, Hebrew, Romanian, Spanish and Slovene. + +Feedback is welcome; see [info in the faq](http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/) for bug reports/ feature requests and feel free to [rate and/or report on compatibility on wordpress.org](http://wordpress.org/extend/plugins/wp-youtube-lyte/). + +== Installation == + +Just install form your Wordpress "Plugins|Add New" screen and all will be well. Manual installation is very straightforward as well: + +1. Upload the zip-file and unzip it in the `/wp-content/plugins/` directory +2. Activate the plugin through the 'Plugins' menu in WordPress +3. Place a link to a YouTube clip like this; httpv://www.youtube.com/watch?v=_SQkWbRublY + +== Frequently Asked Questions == + += Why does WP YouTube Lyte need to access the YouTube API? What is an API anyway? = +An API is a way to have two pieces of software talk to each other to exchange information. In this case WP YouTube Lyte contacts YouTube to ask it for the thumbnail, the title and the description of the video you added. The thumbnail and title are visible on the webpage (in the Lyte player) while the description is in the HTML as microdata for search engines optimization reasons (see below). + += OK, now how can get that API key? = + +1. Go to [Google Developer Console](https://console.developers.google.com/projectselector/apis/library) and log in with your Google account. + +2. Click on 'Create Project' and: + * Fill in a Project Name + * Fill in a Project ID + * Click on 'Create' + +3. On the next page (or when there is no next page, click on your Project's name): + * Click on 'Enable an API' + * Scroll down to YouTube Data API v3 and click on it + * Click on 'OFF' at the top to enable the API + * Optionally disable other API's + +4. In the sidebar on the left: + * Click on 'Credentials' + * Click on 'Create Credential' + * Click on 'API key' + * Set as little restrictions as possible, most problems with getting this working are caused by these settings. + * Click on 'Create' + +5. Copy your API key to WP YouTube Lyte settings page. + += Will WP YouTube Lyte work if I don't provide an API key? = +Yes, with some exceptions; WP YouTube Lyte will continue to work, rendering Lyte players, but without the title and microdata (description, time, ...) and without thumbnails for playlists. + += I don't want an API key, how can I get rid of the "API key"-notice? = +Just enter "none" (without the quotes) in the API key field and Lyte will stop nagging you. + += Does WP YouTube Lyte protect my visitor's privacy? = +As opposed to some of the [most important](http://blog.futtta.be/2010/12/15/wordpress-com-stats-trojan-horse-for-quantcast-tracking/) [plugins](http://blog.futtta.be/2010/01/22/add-to-any-removed-from-here/) there is no 3rd party tracking code in WP YouTube Lyte, but YouTube off course does see visitor requests coming in for the thumbnails unless the option to cache thumbnails locally is enabled. If thumbnails are cached locally, no request will be sent to YouTube by your visitor's browser until/ unless the video is played. + += I use a page builder and LYTE does not seem active on the YouTube video's I add there? = +LYTE by default uses WordPress' "the_content"-filter. Page builders don't apply that filter to their content and thus LYTE does not get triggered on those. As a workaround you can either add the LYTE widget or add the LYTE video using the shortcode in your page-builder Text-block, this works in most page-builders. + += Can I use WP YouTube Lyte for a custom field? = +Just pass the httpv url of such a field to lyte_preparse like this: +`if(function_exists('lyte_preparse')) { echo lyte_preparse($video); }` +and you're good to go! + += Does WP YouTube Lyte work with Infinite Scroll? = +Starting from version 1.1.0 it does; in [Infinite Scroll](http://wordpress.org/extend/plugins/infinite-scroll/)'s configuration you just have to add "ly.te()" in the "Javascript to be called after the next posts are fetched"-box. + += How does WP YouTube Lyte support microdata? = +* There is a [specific microdata scheme for "videoObject"](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=2413309) which WP YouTube Lyte can add to your page, which Google can use to display the video thumbnail next to the search-result +* This is optional and can be disabled in the options page +* The videoobject microdata is NOT added for audio-only embeds, playlists or widgets +* Google will not always display the thumbnail, this presumably depends of the relevance of the video to the rest of the page. + += How does captions-support get added to the microdata? = +In January 2014 [Benetech](http://benetech.org/), a U.S. nonprofit that develops and uses technology to create positive social change, offered a patch that adds the [accessibilityFeature property](http://schema.org/accessibilityFeature) to the microdata for videos that have captions. If you have microdata enabled, WP YouTube Lyte will automatically try to check (in a seperate, asynchronous call via a proxy-webservice, as YouTube only offers captions in their API v3 which requires authentication) if captions are available and if so, adds the accessibilityFeature property with value captions to the microdata. This can be disabled by either disabling microdata or, if you want microdata but not the accessibilityFeature-property by using the "lyte_docaptions"-filter to set captions to false (example-code is in lyte_helper.php_example). + += Responsive LYTE embeds = +* The video width in posts and pages will adapt to the width of the container (the div) in which your blogposts/ pages are shown. This means that if your theme is responsive, WP YouTube Lyte will follow. +* Widgets are not responsive. +* if the content div width gets to around 200 pixels, the LYTE UI will become garbled (YouTube requires the minimum embed width to be 200px as well). + += Can I use WP YouTube Lyte on normal YouTube links or iframes? = +Yes, starting with version 1.5.0 normal YouTube links are automatically transferred in Lyte embeds as well. You will automagically also get a (non-Lyte) preview of the video in your visual post edit screen. Starting from LYTE 1.7.5 YouTube iframes can be automatically converted as well. + += What can I do with the API? = +A whole lot; there are filters to pre-parse the_content, to change settings, to change the CSS, to change the HTML of the LYTE-div, ... There are examples for all filters (and one action) in lyte_helper.php_example + += Problem with All In One Seo Pack = +All in One SEO Pack be default generates a description which still has httpv-links in it. To remove those, you'll have to use (example code in) lyte_helper.php (see above) and add lyte_filter_aioseop_description to the aioseop-filter in there. + += When I click on a LYTE video, a link to YouTube opens, what's up with that? = +You probably added a link around the httpv-url. No link is needed, just the httpv-url. + += My video's seem to load slower on mobile devices? = +By default (unless "cache thumbnail locally" is active) WP YouTube Lyte will indeed load slower normal YouTube video's instead of Lyte ones, as Lyte video's require would require two clicks from the user to play a video (once to load the YouTube video and once to start it) because there is no autoplay-support on mobile. If you want to, you can force WP YouTube Lyte to make video's Lyte on mobile with this code (add it in your child theme's functions.php, in a seperate helper plugin or using the [code snippets plugin](https://wordpress.org/plugins/code-snippets/); + +` +add_filter('lyte_do_mobile','lyte_on_mobile',10,0); +function lyte_on_mobile(){ + return true; +} +` + += Any other issues should I know about? = +* Having the same YouTube-video on one page can cause WP YouTube Lyte to malfunction (as the YouTube id is used as the div's id in the DOM, and DOM id's are supposed to be unique) + += I found a bug/ I would like a feature to be added! = +Just tell me, I like the feedback! Use the [Contact-page on my blog](http://blog.futtta.be/contact/), [leave a comment in a post about wp-youtube-lyte](http://blog.futtta.be/tag/wp-youtube-lyte/) or [create a new topic on the wordpress.org forum](http://wordpress.org/tags/wp-youtube-lyte?forum_id=10#postform). + += How you can help = +* Tell me about bugs you think you've found and if you can't find any, [confirm it works with your version of WP on wordpress.org](http://wordpress.org/extend/plugins/wp-youtube-lyte/) +* Ask me for a feature you would like to see added +* [Rate my plugin on wordpress.org](http://wordpress.org/extend/plugins/wp-youtube-lyte/) + +== Changelog == + += 1.7.7 = +* bugfix: avoid having to click play twice in Chrome (due to autoplay not working) + += 1.7.6 = +* improvement: extra parameters for shortcode (start, showinfo, stepsize and hqthumb). +* improvement: also turn youtube-nocookie.com iframes into LYTE's as proposed by Maxim. +* improvement: also remove cached thumbnails when clearing cache. +* improvement: also set image in noscript tag to local hosted thumbnail if that option is active. +* bugfix: when multiple iframes were on one page, the ones after the LYTE got lost (reported by Daniel Pardella, thanks). + += 1.7.5 = +* improvement: also act on YouTube iframe code if "also act on YouTube links" is on. +* improvement: if extracted from Gutenburg YouTube embed blocks keep the figure-tag with all relevant CSS classes and keep the caption (if set). + += 1.7.4 = +* improvement: make sure locally cached thumbnails are served with good HTTP response headers (allowing HTTP 304 responses and allowing images to be cached in browser). +* improvemnet: bigger widget sizes for use in pagebuilders. + += 1.7.3 = +* switched YouTube to youtube-nocookie.com. +* added span around description to ensure it can be styled separately. + += 1.7.2 = +* new: you can add a text underneath each video (e.g. for privacy disclaimer purposes, think GDPR) by adding it on the settings-page +* fix: thumbnails from LYTE without API key can now also be cached locally + += 1.7.1 = +* Finally fixed a nasty bug that caused API key validation to fail on PHP 7.1 and higher. A big thank you to @emilyatal, @mkalina, @nicolaottomano, @aminech, @partounian, @nicksws who all provided valuable input in [the WordPress LYTE support forum](https://wordpress.org/support/topic/youtube-api-got-error-1-2/) and tested multiple debug-versions to help fix this. + += 1.7.0 = +* new: option to have thumbnail hosted locally to improve performance and privacy (I am not a lawyer, but this could make embedded YouTube GDPR compliant as not requests are sent to YouTube unless/ until the video is played). +* removed option to add "easy youtube"-links (defunct) +* make widgets not break HTTPS (thanks R33D3M33R) + += 1.6.8 = +* new: support for Gutenberg blocks with embedded YouTube (tested with Gutenberg plugin version 2.3.0) +* updated admin screen +* misc bugfixes (see GitHub commit log for details) +* confirmed working with WordPress 4.9.4 + += 1.6.7 = +* fix for AMP-trouble as [reported by winderttal](https://wordpress.org/support/topic/error-in-amp-pages/) + += 1.6.6 = +* emergency bugfix; else was lost but now got found. sorry for that! + += 1.6.5 = +* bug: PHP warning/ notices when title is empty, fix by [kReEsTaL](http://marieguillaumet.com/), thanks! +* bug: YouTube player controls not visible in all browsers when loaded over HTTP, switching to HTTPS for all, as [reported by georg6840tb](https://wordpress.org/support/topic/bottom-control-buttons-not-displayed) + += 1.6.4 = +* updated to latest YouTube UI, again thanks to Draikin. the bottom control is now hidden by defaults, see FAQ +* added filter `lyte_do_mobile` to display lyte video instead of normal youtube on mobile as well, see FAQ +* if WP YouTube Lyte is configured to load HD video, it will also show the maxresdefault.jpg thumbnail. +* bugfix: on some mobile browsers WP YouTybe Lyte [made the page too wide](https://wordpress.org/support/topic/mobil-page-view-only-covering-14-size?replies=11#post-7328487) + += 1.6.3 = +* changed Lyte widget constructor to PHP5-style object contructor +* tested & confirmed working with WordPress 4.3 + += 1.6.2 = +* improvement: youtube playlist URL will now be recognized automatically and rendered LYTE as well (hat tip to [markothaler for proposing this](https://wordpress.org/support/topic/playlist-recognition-possible)) +* improvement: enter "none" in API key not to be bothered by the missing key notice any more (as [requested by TheGiantRedFox1986](https://wordpress.org/support/topic/remove-notice-in-backend)) +* improvement: if no API key (or "none" for key) is provided, don't try to contact YouTube any more, instead just setting a thumbnail (does not work for playlists). +* cleanup: removed code that catered to YouTube API v2. +* updated French translations (merci Serge!) + += 1.6.1 = +* fix for WP YouTube Lyte widgets not loading + += 1.6.0 = +* New: support for YouTube API v3, requiring a server API key to be provided (due to [YouTube closing down the anonymous v2 API](http://blog.futtta.be/2015/01/27/wp-youtube-lyte-and-youtube-api-v2-end-of-life/)) +* New: updated player UI by Draikin, great job! +* Improvement: better support for renamed wp-content directories (kudos to [Wendihihihi](https://wordpress.org/support/topic/plugin-doesnt-work-in-custom-plugins-dir)) +* Added Slovenian translation by [Mitja MiheliÄ or arnes.si](http://arnes.si) +* Updated Dutch & French translations, [others are more then welcome](http://blog.futtta.be/contact/) + += 1.5.0 = +* New: WP YouTube Lyte can now also act on normal YouTube URL's. This behavior is by default active on new installations and is by default off for upgrades (from 1.4.x) to avoid unexpected behavior. +* Improvement (API): apply lyte_settings filter after after_setup_theme actoin as [proposed by Yun](http://blog.futtta.be/wp-youtube-lyte/#comment-61923) +* Improvement (API): added lyte_match_thumburl filter to set thumbnail as [requested by Simon Barnett](https://wordpress.org/support/topic/hqthumb1-not-reflecting-on-playlists-in-custom-fields?replies=6#post-5861751) +* Bugfix: for audio-only player make title visible to improve accessibility (for screenreaders) as [requested](http://blog.futtta.be/wp-youtube-lyte/#comment-61928) by [Octocorn](http://www.nemoviz.org/) +* Bugfix: some playlists were not working, as [reported by jpress](https://wordpress.org/support/topic/individual-playlist-not-working) +* Updated most translations, added Ukranian (by [Michael Yunat of getvoip.com](http://getvoip.com/blog) and Serbian [by Ogi Djuraskovic of firstsiteguide.com](http://firstsiteguide.com/), kudo's to all who helped! + += 1.4.2 = +* Bugfix: Playlists in rss-feeds were broken +* Bugfix: YouTube-link under a playlist was wrong +* Improvement: example code in lyte_helper.php to also parse http-youtube-links now only triggers if the link is on a new line +* Tested with WordPress 3.9 + += 1.4.1 = +* set interval for captionscheck to 30 days + += 1.4.0 = +* new: if microdata is enabled, check if captions are available and if so add the accessibilityFeature=captions markup. Gracefully contributed [by Benetech](http://benetech.org/) +* bugfix: widgets with youtu.be short URL's were broken (as observed by [Robert of audio-times.com](http://www.audio-times.com/). +* bugfix: in some cases iframe size on mobile was not correct (reported by [David of webquarry.com](http://www.webquarry.com/). +* bugfix: mobile rotation handled more efficiently (based on [feedback from Skyfield](http://wordpress.org/support/topic/rotation-bug-on-iphoneipad#post-5102835) + += 1.3.3 = +* fix for playlist shortcode as [reported by pete777](http://wordpress.org/support/topic/playlist-via-shortcode-broken) +* fix for mobile orientation-change bug [described by Kevinlikes](http://wordpress.org/support/topic/rotation-bug-on-iphoneipad) +* fix for better html-validation as [requested by Kevinlikes](http://wordpress.org/support/topic/validatorw3-error) +* tested and confirmed working with WordPress 3.7 +* added "Do not Donate"-link + += 1.3.2 = +* Added playlist support in the WP YouTube Lyte widget (forget to add it really, thanks to [Ed Dingwall](http://www.sinthomedia.com/) to remind me) +* Added an alternative lytesprite version, created by [Claes from PCPLAY.se](http://pcplay.se/). To switch, rename lyte/lytesprite.png to lyte/lytesprite_orig.png and then rename lyte/lytesprite_claes.png to lyte/lytesprite.png. +* Fixed some PHP notices in widget.php + += 1.3.1 = +* Workaround for broken audio-only on mobile (due to YouTube not showing bottom controls when iOS or Android is detected) as reported by [stevygee1987](http://wordpress.org/support/topic/audio-embed-is-a-black-bar-on-iphone). Result; audio-only YouTube becomes a normal YouTube video on mobile [until a better solution can be found](http://stackoverflow.com/questions/18273658/embedded-yt-on-mobile-autohide-0controls-1-but-controls-invisible). +* Added extra check to prevent plugin-files being called outside of WordPress [as suggested in this good article on security](http://mikejolley.com/2013/08/keeping-your-shit-secure-whilst-developing-for-wordpress/). + += 1.3.0 = +* WP YouTube Lyte now has an API to allow its behavior to be changed, with extensive examples in lyte_helper.php_example +* Support for higher quality thumbnails by adding #hqThumb=1 to httpv-link +* You can disable microdata on a per-video level by adding #noMicrodata=1 to the httpv-link when microdata is enabled. +* Checkbox on admin-page to flush WP YouTube Lyte cache (which holds title, description, ... from YouTube) +* added a lyte_preparse function to be used by themes/ plugins (input is the YouTube ID) +* improvement: added opacity to the play-button when not hovered over +* bugfix: suppress error messages if yt_resp does not contain all data +* bugfix: solve PHP notice for pS-array in options.php + += 1.2.2 = +* bugfix: apply sanitize_text_field to microdata description- and title-fields to escape e.g. quotes +* bugfix: added CSS resets to better avoid CSS-conflicts with themes (as reported by longtime user [FruityOaty](http://fruityoaty.com/)) +* bugfix: fallback for missing wp_trim_words function in wordpress < 3.3 (as reported by [Armude](http://www.armudepictures.es/)) +* bugfix: check if the data from cache/ youtube is valid before trying to extract info from it [as reported by Collin](http://blog.futtta.be/2013/03/01/the-best-wp-youtube-lyte-to-date/#li-comment-39222) +* improvement: better support for RSS/ ATOM feeds [as requested by drreen](http://wordpress.org/support/topic/textlinks-around-embedded-video-in-rss-feed) +* added item in FAQ on how to force normal YouTube links to be parsed by WP YouTube Lyte as well +* tested with WordPress 3.6 beta 1 + += 1.2.1 = +* bugfix: if e.g. modernizr added "audio" as class to the html element, wp youtube lyte got confused. reported by [Peco of dubtechnoblog.com](http://www.dubtechnoblog.com/) and [Delphuk](http://delphuk.ru/) +* tested succesfully with WordPress 3.6 (development-version) + += 1.2.0 = +* LYTE embeds are now fully responsive +* automatic inclusion of [scheme.org microdata (VideoObject)](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=2413309) +* even better performance (less requests; was 5, now 3) +* updated to current YouTube look & feel +* less JavaScript, more CSS +* bugfix: all lyte-output is now removed from excerpts + += 1.1.9 = +* privacy enhancement: load thumbnails from the cookie-less i.ytimg.com instead of from the cookie-riddled youtube.com (but there are some caveats, [see FAQ](http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/)) +* bugfix: the fullscreen-button did not always appear when playing a video, added the "allowfullscreen" attribute to the iframe (as in the most recent youtube embed code) +* still [waiting for the big leap forwards (responsive LYTE and custom sizes) I'm afraid](http://blog.futtta.be/2012/10/16/wp-youtube-lyte-waiting-for-the-big-leap-forwards/) + += 1.1.8 = +* bugfix: [playlists API changed: playlists can now have ID's of more than 16 chars and always should be prepended with PL](http://apiblog.youtube.com/2012/08/playlists-now-with-more-pl.html), which broke playlist rendering. Hat tip for the guys over at [dubtechnoblog.com](http://www.dubtechnoblog.com) for reporting! +* bugfix: further work on excerpts to make sure http(v|a) links in manual excerpts get replaced by a lyte player. + += 1.1.7 = +* bugfix: 1.1.6 broke excerpts, as reported by Franz of [noobtech.at](http://www.noobtech.at) + += 1.1.6 = +* bugfix: remove noscript-stuff from the_excerpt [as requested by wordpressvoxbox13](http://wordpress.org/support/topic/plugin-wp-youtube-lyte-wp-youtube-lyte-adds-text-to-my-posts?replies=8#post-2977006) +* bugfix: switch HTTPS detection to is_ssl() WordPress function to avoid breakage on MS IIS +* removed the "DoNotTrack" bonus feature due to added complexity, [at least one bug](http://wordpress.org/support/topic/wp-youtube-lyte-conflicts-with-wysija-newsletter) and the fact that [WP DoNotTrack](http://wordpress.org/extend/plugins/wp-donottrack/) does a better job at this + += 1.1.5 = +* bugfix: added missing lyte/controls-400.png, which was needed for the new widget-size in 1.1.4 +* bugfix: force margin for widget to 0 for themes that think they know better (as reported by long-time user [FruityOaty](http://fruityoaty.com/)) +* bugfix: workaround for iOS quirk that caused the video to only start after 2nd click (as reported by Robert of [audio-times.com](http://audio-times.com) and [Collin Maessen](http://www.realsceptic.com/)) +* bugfix: add sizes to images as [suggested by elmll on the wordpress.org forum](http://wordpress.org/support/topic/plugin-wp-youtube-lyte-specify-img-dimensions) +* beta: shortcode (see [Description](http://wordpress.org/extend/plugins/wp-youtube-lyte/) for examples) as [suggested by ben4d85 on the wordpress.org forum](http://wordpress.org/support/topic/plugin-wp-youtube-lyte-shortcode-custom-class) + += 1.1.4 = +* bugfix: audio-only youtube was broken due to changes at YouTube (thanks for reporting [Adrian](http://www.yeahlabs.ca/)!) +* bugfix: playlist embedding was somewhat broken (again due to changes at YouTube) +* bugfix: httpv- or httpa- links were only found if the v-parameter was at the beginning of the querystring (as discovered by [Mye](http://virtualassistanttipsthatmatters.com/)) +* added 2 new widget sizes (250X200px and 400X333px) + += 1.1.3 = +* new: Player position can now be set to "left" (default) or "center". +* YouTube bugfix: playlist player should now [also work on iphone/ipad](http://apiblog.youtube.com/2012/03/new-player-options-for-lists-of-videos.html) +* YouTube TOS change: official [minimal embed size is now 200X200](http://apiblog.youtube.com/2012/03/minimum-embeds-200px-x-200px.html), created new widget size for that and marked others as deprecated +* bugfix: recent version of [AddThis caused problems with getElementsByClassName](http://support.addthis.com/customer/portal/questions/216309-getelementsbyclassname-error-appearing), which impacted WP YouTube Lyte as reported by [nocotytato](http://nocotytato.org.pl/). +* bugfix for mixed HTTP/HTTPS resources while in HTTPS admin (as reported for [WP DoNotTrack](http://wordpress.org/extend/plugins/wp-donottrack/) by Paul Martinus) +* tested and confirmed to work with WordPress 3.4 (beta 2). + += 1.1.2 = +* bugfix: during development of 1.1.0 the javascript to lazy load the lyte player got lost somehow, readded (now in lyte(-min).js) +* performance: replaced the external stylesheet (lyte.css) with inline javascript that adds an internal stylesheet to the head of the document (thanks for pushing me [Collin](http://www.realsceptic.com/)! + += 1.1.1 = +* bugfix: lyte css wasn't applied as class was already removed (regression caused by "Infinite Scroll" support), lyMe now is the name of the unprocessed div and becomes lyte after processing +* performance: [minimizing reflows caused by amongst others how styles are applied](http://blog.futtta.be/2012/03/20/going-against-the-reflow/) (kudo's to ["der Tuxman"](http://tuxproject.de/blog) again, buy that man a beer!) + += 1.1.0 = +* updated LYTE-player UI: larger display of preview image, changed look of title placeholder, updated controls image +* new: added support for "Infinite Scroll" as proposed by ["der Tuxman"](http://tuxproject.de/blog) and [Olivier](http://www.wwebsolution.com/hemisphere) +* new: added beta-support for YouTube's JS API as requested by Yun +* performance: remove double DOM-lookups in javascript, hat tip Yun +* annoyance-avoidance: check for "Karma Blocker" addon and warn, based on feedback from [Leona](http://www.tinuum.net/) +* translation: added Romanian, thanks to Alexander and [Web Hosting Geeks](http://webhostinggeeks.com/) +* bugfix: 2nd video with start or showinfo parameters inherited the ones from the 1st one as well as reported by Josh D +* bugfix: marked lyte img border css as !important +* bugfix: moved inline javascript (for each lyte-div) to the footer of the page to solve conflict with some jQuery plugins in MSIE as reported by Yun +* bugfix: set autohide to false for audio-only embeds + += 1.0.0 = +* new: also works on (manual) excerpts; just add a httpv link to the "excerpt" field on the post/page admin (based on feedback from [Ruben@tuttingegneri](http://www.tuttingegneri.com)) +* new: if youtube-url contains "start" or "showinfo" parameters, these are used when playing the actual video. This means that you can now jump to a specific time in the YouTube video or stop the title/ author from being displayed (based on feedback from a.o. Miguel and Josh D) +* update: javascript now initiates either after full page load or after 1 second (whatever comes first), thus avoiding video not showing due to other requests taking too long +* update: bonus feature stops lockerz.com tracking by addtoany (you'll still want to [hide the "earn pointz" tab though](http://share.lockerz.com/buttons/customize/hide_lockerz_earn_ptz_tab)) +* bugfix: prevent the playing video to be in front of e.g. a dropdown-menu or lightbox (thanks to Matt Whittingham) +* bugfix: solve overlap between player and text when option was set not to show links (reported by Josh D) + += 0.9.4 = +* security: WP YouTube Lyte now works entirely in https if your blog is running in https +* performance (js/ page rendering): initiate the javascript a little later (at "load" instead of "DOMContentLoaded") to speed up page load (might need further optimizations) +* performance (php): have the plugin [only include/ execute php when needed](http://w-shadow.com/blog/2009/02/22/make-your-plugin-faster-with-conditional-tags/) +* updated donottrack.js to match the version used in my [WP DoNotTrack-plugin](http://wordpress.org/extend/plugins/wp-donottrack/). if want to tweak the way donottrack.js functions, you migth want to [check that plugin out](http://wordpress.org/extend/plugins/wp-donottrack/) (and disable the option in WP YouTube Lyte) +* bugfix: small tweak in css to force transparency of play-button + += 0.9.3 = +* Bugfix: donottrack.js incorrectly handled document.write, causing javascript that depends on it to malfunction (reported by [S.K.](http://aimwa.in), thanks for helping out!) +* Bugfix: moved inline javascript into a function expression to protect values (d=document) from other javascript that might use global variables (thanks to Eric McNiece of [emc2innovation.com](http://emc2innovation.com) for reporting & investigating) +* Bugfix: made changes to widgets to allow a video to appear both in a blog post and in the widget bar and to allow httpv-links in there (although httpv is not needed in widgets) based on feedback from [Nick Tann](http://nicktann.co.uk/) +* Bugfix: changed priority of add_filter to ensure wp-youtube-lyte can work alongside of the new Smart Youtube Pro v4 (although this might become a problem again if/when a new version of Smart Youtube arrives) +* Languages: added a full French translation (thanks Serge of [blogaf.org](http://www.blogaf.org)) + += 0.9.2 = +* solved bug with W3 Total Cache where the URL for lyte-min.js got broken (thanks to Serge of [blogaf.org](http://www.blogaf.org) for reporting and helping figure this out) +* some [work on the bonus feature](http://blog.futtta.be/2011/11/16/applying-javascript-aop-magic-to-stop-3rd-party-tracking-in-wordpress/) + += 0.9.1 = +* even better xhtml-compliancy +* fixed readme.txt problems + += 0.9.0 = +* you can now change player size from the default one (as proposed by [Edward Owen](http://www.edwardlowen.com/)); httpv://www.youtube.com/watch?v=_SQkWbRublY#stepSize=-2 or httpv://youtu.be/_SQkWbRublY#stepSize=+1 will change player size to one of the other available sizes in your choosen format (4:3 or 16:9) +* added a smaller 16:9 size and re-arranged player sizes on the options-screen +* Bugfix: changed lyte-div ID to force it to be xhtml-compliant (ID's can't start with a digit, hat tip: Ruben of [ytuquelees.net](http://ytuquelees.net) +* Bugfix: added version in js-call to avoid caching issues (lyte-min.js?ver=0.8.1) as experienced by some users and reported by [Ryan of givemeshred.com](http://www.givemeshred.com) +* Upgrade to the "bonus feature" to [fix things](http://blog.futtta.be/2011/11/07/wp-privacy-quantcast-sneaks-back-in/) (consider this beta) +* Languages: added Hebrew (by [Sagive SEO](http://www.sagive.co.il/)) and Catalan (by Ruben of [ytuquelees.net](http://ytuquelees.net)) translations and added completed Spanish version (thanks to [Paulino Brener from Social Media Travelers](http://socialmediatravelers.com/ "Paulino Brener from Social Media Travelers, Your guide to your Social Media journey. We help businesses start or improve their Social Media presence.")) +* tested succesfully on WordPress 3.3 (beta 2) + += 0.8.0 = +* added support for playlists +* added support for HD +* dropped support for the legacy YouTube embed-code +* updated UI elements to match new, dark YouTube player style +* updated player sizes to match YouTube's +* added new translations: Spanish (front-end strings, thanks to [Paulino Brener @Social Media Travelers](http://socialmediatravelers.com/)) and German (complete, by ["der Tuxman"](http://tuxproject.de/blog)) + += 0.7.3 = +* sdded support for youtu.be links +* added sl_SI translation (thanks [Mitja MiheliČ @arnes.si](http://www.arnes.si/)) +* load donottrack js in https if needed (thanks [Chris @campino2k.de](http://campino2k.de/)) +* tested & confirmed to work perfectly with wordpress 3.2.1 + += 0.7.2 = +* fixed a bug introduced in 0.7.1 which caused httpv-links that were not on newline, not to be turned into a lyte-player +* added audio as option for widgets as well (consider this beta, not thoroughly tested yet) + += 0.7.1 = +* re-minized lyte-min.js (there's lyte.js for your reading pleasure though) +* thumbnail image in noscript-tags now inherits size of div (to keep it from messing up the layout when JS is not available, e.g. in a feedburner-feed) +* the html5 version of the audio-player now is a bit higher (was 27px, now 33px) to allow scrolling through the clip +* the html-output of the plugin now validates against xhtml 1.0 transitional (thanks for the heads-up Carolin) +* text in frontend (i.e. what your visitors see) is translated into Dutch & French, [corrections and other translations are welcome](http://blog.futtta.be/contact/) + += 0.7.0 = +* new feature (as seen [on Pitchfork](http://pitchfork.com/ "great site for music lovers")): [audio-only YouTube embeds](http://blog.futtta.be/2011/04/19/audio-only-youtube-embedding-with-wp-youtube-lyte-0-7/) (use "httpa://" instead of "httpv://") +* merged lyte-min.js and lyte-newtube-min.js into one file +* added wmode=transparant when video is played in flash-mode + += 0.6.5 = +* updated images for html5-version to new look&feel +* disabled "watch later" by adding variable "probably_logged_in=false" to youtube embed +* changed lyte/lyte.css (move margin from .lt to .lyte) to allow changes to positioning of player +* changed name of js-variable in options.php to solve small bug in rss display +* added an (experimental) bonus feature + += 0.6.4 = +* happy New Year & thanks for the 10.000 downloads so far! +* solved an [issue with pre-5.2.1 versions of PHP which caused errors in widget.php](http://wordpress.org/support/topic/plugin-wp-youtube-lyte-parse_url-error-in-widget-version) +* tested on iPad, the HTML5-version works +* tested succesfully on WordPress 3.0.4 and 3.1 (release candidate) + += 0.6.3 = +* only load jquery plugins on this plugin's options page +* change thumbnail positiong slightly (5 pixels up) +* tested on WordPress 3.0.3 + += 0.6.2 = +* bugfix: the javascript in widgets.php caused a wp youtube lyte widget not to be shown in the sidebar if no wp youtube lyte was present in the main content +* load jquery plugins in admin screen using wp_enqueue_script rather then adding them "manually" +* store the selected feed on the admin-page in a cookie to show the same feed next time + += 0.6.1 = +* widget size can now be set (3 sizes available, to be specified for each widget individually) +* admin-page now contains links to most recent info (blogposts) on WP YouTube Lyte (and optionally WordPress and Web Technology in general) using [the excellent jQuery-plugin zrssfeed](http://www.zazar.net/developers/zrssfeed/) +* bugfix: removed CDATA-wrapper from javascript as WordPress turned ]]> into ]]&gt; which broke the html (which in turn broke syndication in e.g. planets) + += 0.6.0 = +* There now is a WP-YouTube-Lyte widget which you can add to your sidebar (see under "Appearance"->"Widgets"), as requested by the fabulous [fruityoaty](http://fruityoaty.com/) +* The thumbnail is now stretched to use as much of the player as possible (thanks to css3's background-size:contain directive, which works in [all bleeding edge browsers](https://developer.mozilla.org/en/CSS/background-size#Browser_compatibility)) +* Updated the "play"-button to fit the new YouTube style + += 0.5.3 = +* we now wait for the DOM to be fully loaded (except for MS IE, where we have to wait for window.load) before kicking in, which means wp-youtube-lyte now functions correctly in Opera +* fixed a bug where lyte's javascript would overwrite the main div's class-name (causing css-issues in some themes) +* there's [new test-data on my blog](http://blog.futtta.be/2010/08/30/the-state-of-wp-youtube-lyte/) that shows how fast wp-youtube-lyte really is. + += 0.5.2 = +* fixed a bug where WordPress' the_excerpt function showed wp-youtube-lyte javascript as text in excerpts +* fixed problem where google tried to index e.g. options.php (which produced ugly php errors) +* fixed some css-related bugs, do contact me (see FAQ) if LYTE-player isn't rendered correctly in your wordpress-theme! +* moved more css out of javascript to the static css-file + += 0.5.1 = +* added new versions of images, fitting the player width (no more ugly rescaling) +* moved a lot of css from javascript to a css-file which gets loaded on-the-fly + += 0.5.0 = +* implemented the new [HTML5 YouTube embed code](http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html) and removed my [newTube.js-hack](http://blog.futtta.be/2010/06/16/embedding-html5-youtube-video-with-wp-youtube-lyte/) for html5-embedding +* player size now applies to Flash- and the new HTML5-embeds + += 0.4.1 = +* add fullscreen-button to player +* disable size in options if html5 is selected +* move player_sizes.inc to player_sizes.inc.php + += 0.4.0 = +* add options to change player size (does not apply to html5-version) +* noscript optimizations: show image (typically useful in rss-feeds), no text if config is to show links beneath lyte-player + += 0.3.5 = +* changed function-name in options.php to avoid errors like "Fatal error: Cannot redeclare register_mysettings()" + += 0.3.4 = +* tested succesfully on the brand new wordpress 3.0 release +* css changes to avoid themes messing up lyte-player layout +* minor text tweaks + += 0.3.3 = +* the "sorry for the linebreak-release"; a linebreak at the very end of options.php caused some configurations [to produce "headers already sent" errors on all wp-admin pages](http://codex.wordpress.org/FAQ_Troubleshooting#How_do_I_solve_the_Headers_already_sent_warning_problem.3F). +* some further readme.txt optimizations + += 0.3.2 = +* fixed misc. readme.txt markdown issues (again) + += 0.3.0 = +* added very experimental support for embedded html5 video (see [faq](http://wordpress.org/extend/plugins/wp-youtube-lyte/faq/)) + += 0.2.2 = +* improved the html of the form in options.php for better accessibility + += 0.2.1 = +* 0.2.0 was broken (options.php M.I.A.), 0.2.1 fixes this + += 0.2.0 = +* Added a simple admin-page to allow administrators to choose if links to YouTube and Easy YouTube are added or not +* Added some bottom-margin to the lytelinks div + += 0.1.4 = +* forgot to update version in the php-file for 0.1.3, causing the update not being fully propageted + += 0.1.3 = +* small bugfix release (opacity of the play-button in Chrome/Safari) + += 0.1.2 = +Accessibility enhancements (hat tip: Ricky Buchanan): + +* added alt attributes to images +* moved youtube link from noscript to div +* added link to easy youtube + += 0.1.1 = +* Changed meta-info in readme and php-file + += 0.1 = +* Initial version diff --git a/wp-content/plugins/wp-youtube-lyte/screenshot-1.png b/wp-content/plugins/wp-youtube-lyte/screenshot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3d79a582dd5ac28b8232be1e787832291be9ef96 GIT binary patch literal 26171 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 KMNUMnLSTYF0*@L1 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-youtube-lyte/widget.php b/wp-content/plugins/wp-youtube-lyte/widget.php new file mode 100644 index 0000000..8c7c6c3 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/widget.php @@ -0,0 +1,178 @@ +<?php +class WYLWidget extends WP_Widget { + public function __construct() { + parent::__construct(false, $name = 'WP YouTube Lyte'); + } + + function widget($args, $instance) { + extract( $args ); + global $wSize, $wyl_version, $wp_lyte_plugin_url, $lyteSettings; + $lyteSettings['path']= plugins_url() . "/" . dirname(plugin_basename(__FILE__)) . '/lyte/'; + $qsa=""; + + $WYLtitle = apply_filters('widget_title', $instance['WYLtitle']); + $WYLtext = apply_filters( 'widget_text', $instance['WYLtext'], $instance ); + $WYLsize = apply_filters( 'widget_text', $instance['WYLsize'], $instance ); + if ($WYLsize=="") $WYLsize=$wDefault; + $WYLaudio = apply_filters( 'widget_text', $instance['WYLaudio'], $instance ); + if ($WYLaudio!=="audio") { + $wrapperClass = " lidget"; + $audioClass = ""; + $wHeight = $wSize[$WYLsize]['h']; + } else { + $wrapperClass = "-audio lidget"; + $audioClass = " lyte-audio"; + $wHeight = "38"; + } + $WYLurl=str_replace("httpv://","https://",trim($instance['WYLurl'])); + $WYLqs=substr(strstr($WYLurl,'?'),1); + parse_str($WYLqs,$WYLarr); + + if (strpos($WYLurl,'youtu.be')) { + $WYLid=substr(parse_url($WYLurl,PHP_URL_PATH),1,11); + $PLClass=""; + $WYLthumb="https://img.youtube.com/vi/".$WYLid."/hqdefault.jpg"; + } else { + if (isset($WYLarr['v'])) { + $WYLid=$WYLarr['v']; + $PLClass=""; + $WYLthumb="https://img.youtube.com/vi/".$WYLid."/hqdefault.jpg"; + } else if (isset($WYLarr['list'])) { + $WYLid=$WYLarr['list']; + $yt_resp=lyte_get_YT_resp($WYLid,true,"","",true); + $WYLthumb=$yt_resp["thumbUrl"]; + $PLClass=" playlist"; + } + } + + // do we have to serve the thumbnail from local cache? + if (get_option('lyte_local_thumb','0') === '1') { + $WYLthumb = plugins_url( 'lyteThumbs.php?origThumbUrl=' . urlencode($WYLthumb) , __FILE__ ); + } + + // filter to alter the thumbnail + $WYLthumb = apply_filters( "lyte_filter_widget_thumb", $WYLthumb, $WYLid ); + + if (isset($WYLarr['start'])) $qsa="&start=".$WYLarr['start']; + if (isset($WYLarr['enablejsapi'])) { + $urlArr=parse_url($lyteSettings['path']); + $origin=$urlArr[scheme]."://".$urlArr[host]."/"; + $qsa.="&enablejsapi=".$WYLarr['enablejsapi']."&origin=".$origin; + } + + if (!empty($qsa)) { + $esc_arr=array("&" => "\&", "?" => "\?", "=" => "\="); + $qsaClass=" qsa_".strtr($qsa,$esc_arr); + } else { + $qsaClass=""; + } + + $WYL_dom_id="YLW_".$WYLid; + + ?> + <?php echo $before_widget; ?> + <?php if ( $WYLtitle ) echo $before_title . $WYLtitle . $after_title; ?> + <div class="lyte-wrapper<?php echo $wrapperClass; ?>" style="width:<?php echo $wSize[$WYLsize]['w']; ?>px; height:<?php echo $wHeight; ?>px; min-width:200px; max-width:100%;"><div class="lyMe<?php echo $PLClass; echo $audioClass; echo $qsaClass; ?>" id="<?php echo $WYL_dom_id; ?>"><div id="lyte_<?php echo $WYLid; ?>" data-src="<?php echo $WYLthumb;?>" class="pL"><div class="play"></div><div class="ctrl"><div class="Lctrl"></div></div></div></div><noscript><a href="https://youtu.be/<?php echo $WYLid;?>"><img src="<?php echo $WYLthumb; ?>" alt="" /></a></noscript></div> + <div><?php echo $WYLtext ?></div> + <?php echo $after_widget; ?> + <?php + lyte_initer(); + } + + function update($new_instance, $old_instance) { + $instance = $old_instance; + $instance['WYLtitle'] = strip_tags($new_instance['WYLtitle']); + $instance['WYLurl'] = strip_tags($new_instance['WYLurl']); + $instance['WYLsize'] = strip_tags($new_instance['WYLsize']); + $instance['WYLaudio'] = strip_tags($new_instance['WYLaudio']); + + if ( current_user_can('unfiltered_html') ) { + $instance['WYLtext'] = $new_instance['WYLtext']; + } else { + $instance['WYLtext'] = stripslashes( wp_filter_post_kses( addslashes($new_instance['WYLtext']) ) ); + } + + return $instance; + } + + function form($instance) { + global $wSize, $wDefault; + + if (isset($instance['WYLtitle'])) { + $WYLtitle = esc_attr($instance['WYLtitle']); + } else { + $WYLtitle = ""; + } + + if (isset($instance['WYLurl'])) { + $WYLurl = esc_attr($instance['WYLurl']); + } else { + $WYLurl = ""; + } + + if (isset($instance['WYLtext'])) { + $WYLtext = format_to_edit($instance['WYLtext']); + } else { + $WYLtext = ""; + } + + if (isset($instance['WYLaudio'])) { + $WYLaudio = esc_attr($instance['WYLaudio']); + } else { + $WYLaudio = ""; + } + if ($WYLaudio!=="audio") $WYLaudio=""; + + if (isset($instance['WYLsize'])) { + $WYLsize = esc_attr($instance['WYLsize']); + } else { + $WYLsize = ""; + } + + if ($WYLsize=="") $WYLsize=$wDefault; + ?> + <p><label for="<?php echo $this->get_field_id('WYLtitle'); ?>"><?php _e("Title:","wp-youtube-lyte") ?> <input class="widefat" id="<?php echo $this->get_field_id('WYLtitle'); ?>" name="<?php echo $this->get_field_name('WYLtitle'); ?>" type="text" value="<?php echo $WYLtitle; ?>" /></label></p> + <p><label for="<?php echo $this->get_field_id('WYLsize'); ?>"><?php _e("Size:","wp-youtube-lyte") ?> + <select class="widefat" id="<?php echo $this->get_field_id('WYLsize'); ?>" name="<?php echo $this->get_field_name('WYLsize'); ?>"> + <?php + foreach ($wSize as $x => $size) { + if ($x==$WYLsize) { + $selected=" selected=\"true\""; + } else { + $selected=""; + } + + if ($wSize[$x]['depr']!==true) { + echo "<option value=\"".$x."\"".$selected.">".$wSize[$x]['w']."X".$wSize[$x]['h']."</option>"; + } + $x++; + } + ?> + </select> + </label></p> + <p><label for="<?php echo $this->get_field_id('WYLaudio'); ?>"><?php _e("Type:","wp-youtube-lyte") ?> + <select class="widefat" id="<?php echo $this->get_field_id('WYLaudio'); ?>" name="<?php echo $this->get_field_name('WYLaudio'); ?>"> + <?php + if($WYLaudio==="audio") { + $aselected=" selected=\"true\""; + $vselected=""; + } else { + $vselected=" selected=\"true\""; + $aselected=""; + } + echo "<option value=\"audio\"".$aselected.">".__("audio","wp-youtube-lyte")."</option>"; + echo "<option value=\"video\"".$vselected.">".__("video","wp-youtube-lyte")."</option>"; + ?> + </select> + </label></p> + <p><label for="<?php echo $this->get_field_id('WYLurl'); ?>"><?php _e("Youtube-URL:","wp-youtube-lyte") ?> <input class="widefat" id="<?php echo $this->get_field_id('WYLurl'); ?>" name="<?php echo $this->get_field_name('WYLurl'); ?>" type="text" value="<?php echo $WYLurl; ?>" /></label></p> + <p><label for="<?php echo $this->get_field_id('WYLtext'); ?>"><?php _e("Text:","wp-youtube-lyte") ?> <textarea class="widefat" id="<?php echo $this->get_field_id('WYLtext'); ?>" name="<?php echo $this->get_field_name('WYLtext'); ?>" rows="16" cols="20"><?php echo $WYLtext; ?></textarea></label></p> + <?php + } +} + +function lyte_register_widget() { + register_widget('WYLWidget'); +} + +add_action('widgets_init', 'lyte_register_widget'); diff --git a/wp-content/plugins/wp-youtube-lyte/wp-youtube-lyte.php b/wp-content/plugins/wp-youtube-lyte/wp-youtube-lyte.php new file mode 100644 index 0000000..fa35a34 --- /dev/null +++ b/wp-content/plugins/wp-youtube-lyte/wp-youtube-lyte.php @@ -0,0 +1,729 @@ +<?php +/* +Plugin Name: WP YouTube Lyte +Plugin URI: http://blog.futtta.be/wp-youtube-lyte/ +Description: Lite and accessible YouTube audio and video embedding. +Author: Frank Goossens (futtta) +Version: 1.7.7 +Author URI: http://blog.futtta.be/ +Text Domain: wp-youtube-lyte +Domain Path: /languages +*/ + +if ( ! defined( 'ABSPATH' ) ) exit; + +$debug=false; +$lyte_version="1.7.7"; +$lyte_db_version=get_option('lyte_version','none'); + +/** have we updated? */ +if ($lyte_db_version !== $lyte_version) { + switch($lyte_db_version) { + case "1.5.0": + lyte_rm_cache(); + break; + case "1.4.2": + case "1.4.1": + case "1.4.0": + lyte_rm_cache(); + lyte_not_greedy(); + break; + } + update_option('lyte_version',$lyte_version); + $lyte_db_version=$lyte_version; +} + +/** are we in debug-mode */ +if (!$debug) { + $wyl_version=$lyte_version; + $wyl_file="lyte-min.js"; +} else { + $wyl_version=rand()/1000; + $wyl_file="lyte.js"; + lyte_rm_cache(); +} + +/** get paths, language and includes */ +$plugin_dir = basename(dirname(__FILE__)).'/languages'; +load_plugin_textdomain( 'wp-youtube-lyte', null, $plugin_dir ); +require_once(dirname(__FILE__).'/player_sizes.inc.php'); +require_once(dirname(__FILE__).'/widget.php'); + +/** get default embed size and build array to change size later if requested */ +$oSize = (int) get_option('lyte_size'); +if ((is_bool($oSize)) || ($pSize[$oSize]['a']===false)) { $sel = (int) $pDefault; } else { $sel=$oSize; } + +$pSizeFormat=$pSize[$sel]['f']; +$j=0; +foreach ($pSizeOrder[$pSizeFormat] as $sizeId) { + $sArray[$j]['w']=(int) $pSize[$sizeId]['w']; + $sArray[$j]['h']=(int) $pSize[$sizeId]['h']; + if ($sizeId===$sel) $selSize=$j; + $j++; +} + +/** get other options and push in array*/ +$lyteSettings['sizeArray']=$sArray; +$lyteSettings['selSize']=$selSize; +$lyteSettings['links']=get_option('lyte_show_links'); +$lyteSettings['file']=$wyl_file."?wyl_version=".$wyl_version; +$lyteSettings['ratioClass']= ( $pSizeFormat==="43" ) ? " fourthree" : ""; +$lyteSettings['pos']= ( get_option('lyte_position','0')==="1" ) ? "margin:5px auto;" : "margin:5px;"; +$lyteSettings['microdata']=get_option('lyte_microdata','1'); +$lyteSettings['hidef']=get_option('lyte_hidef',0); +$lyteSettings['scheme'] = ( is_ssl() ) ? "https" : "http"; + +/** API: filter hook to alter $lyteSettings */ +function lyte_settings_enforcer() { + global $lyteSettings; + $lyteSettings = apply_filters( 'lyte_settings', $lyteSettings ); + } +add_action('after_setup_theme','lyte_settings_enforcer'); + +function lyte_parse($the_content,$doExcerpt=false) { + /** bail if amp */ + if ( is_amp()) { return str_replace( 'httpv://', 'https://', $the_content ); } + + /** main function to parse the content, searching and replacing httpv-links */ + global $lyteSettings, $toCache_index, $postID, $cachekey; + $lyteSettings['path']=plugins_url() . "/" . dirname(plugin_basename(__FILE__)) . '/lyte/'; + $urlArr=parse_url($lyteSettings['path']); + $origin=$urlArr['scheme']."://".$urlArr['host']."/"; + + /** API: filter hook to preparse the_content, e.g. to force normal youtube links to be parsed */ + $the_content = apply_filters( 'lyte_content_preparse',$the_content ); + + if ( get_option('lyte_greedy','1')==="1" && strpos($the_content,"youtu") !== false ){ + // only preg_replace if "youtu" (as part of youtube.com or youtu.be) if found + if (strpos($the_content,'/playlist?list=') !== false ) { + // only preg_replace for playlists if there are playlists to be parsed + $the_content=preg_replace('/^https?:\/\/(www.)?youtu(be.com|.be)\/playlist\?list=/m','httpv://www.youtube.com/playlist?list=',$the_content); + } + $the_content=preg_replace('/^https?:\/\/(www.)?youtu(be.com|.be)\/(watch\?v=)?/m','httpv://www.youtube.com/watch?v=',$the_content); + + // new: also replace original YT embed code (iframes) + if ( apply_filters( 'lyte_eats_yframes', true ) && preg_match_all('#<iframe(?:[^<]*)?\ssrc=["|\']https:\/\/www\.youtube(?:-nocookie)?\.com\/embed\/(.*)["|\'](?:.*)><\/iframe>#Usm', $the_content, $matches, PREG_SET_ORDER)) { + foreach ($matches as $match) { + $the_content = str_replace($match[0], 'httpv://youtu.be/'.$match[1], $the_content); + } + } + } + + if ( strpos($the_content,"<!-- wp:") !== false && strpos($the_content,"youtu") !== false ) { + /* + * do Gutenberg stuff here, playlists if needed first and then single videos + * + * having Gutenberg markup in HTML comments is ugly as hell + * esp. for 3rd parties such as Lyte who have to parse info out of that + * + * Luke Cavanagh; thanks for the Gutenbeard reference and for the funny animated gif :) + * https://media1.giphy.com/media/l2QZTNMFTQ2Z00zHG/giphy.gif + */ + if (strpos($the_content,'/playlist?list=') !== false ) { + $gutenbeard_playlist_regex = '%<\!--\s?wp:(?:core[-|/])?embed(?:/youtube)?\s?{"url":"https://www.youtube.com/playlist\?list=(.*)"}\s?-->.*<figcaption>(.*)</figcaption><\!--\s?/wp:(?:core[-|/])?embed(?:/youtube)?\s?-->%Us'; + $the_content = preg_replace($gutenbeard_playlist_regex, '<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube">httpv://www.youtube.com/playlist?list=\1<figcaption>\2</figcaption></figure>',$the_content); + } + $gutenbeard_single_regex = '%<\!--\s?wp:(?:core[-|/])?embed(?:/youtube)?\s?{"url":"https?://(?:www\.)?youtu(?:be\.com|.be)/(?:watch\?v=)?(.*)"}\s?-->.*<figcaption>(.*)</figcaption><\!--\s?/wp:(?:core[-|/])?embed(?:/youtube)?\s?-->%Us'; + $the_content = preg_replace($gutenbeard_single_regex, '<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube">httpv://www.youtube.com/watch?v=\1<figcaption>\2</figcaption></figure>',$the_content); + } + + if((strpos($the_content, "httpv")!==FALSE)||(strpos($the_content, "httpa")!==FALSE)) { + if (apply_filters('lyte_remove_wpautop',false)) { + remove_filter('the_content','wpautop'); + } + $char_codes = array('×','–'); + $replacements = array("x", "--"); + $the_content=str_replace($char_codes, $replacements, $the_content); + $lyte_feed=is_feed(); + + $hidefClass = ($lyteSettings['hidef']==="1") ? " hidef" : ""; + + $postID = get_the_ID(); + $toCache_index=array(); + + $lytes_regexp="/(?:<p>)?http(v|a):\/\/([a-zA-Z0-9\-\_]+\.|)(youtube|youtu)(\.com|\.be)\/(((watch(\?v\=|\/v\/)|.+?v\=|)([a-zA-Z0-9\-\_]{11}))|(playlist\?list\=([a-zA-Z0-9\-\_]*)))([^\s<]*)(<?:\/p>)?/"; + + preg_match_all($lytes_regexp, $the_content, $matches, PREG_SET_ORDER); + + foreach($matches as $match) { + /** API: filter hook to preparse fragment in a httpv-url, e.g. to force hqThumb=1 or showinfo=0 */ + $match[12] = apply_filters( 'lyte_match_preparse_fragment',$match[12] ); + + preg_match("/stepSize\=([\+\-0-9]{2})/",$match[12],$sMatch); + preg_match("/showinfo\=([0-1]{1})/",$match[12],$showinfo); + preg_match("/start\=([0-9]*)/",$match[12],$start); + preg_match("/enablejsapi\=([0-1]{1})/",$match[12],$jsapi); + preg_match("/hqThumb\=([0-1]{1})/",$match[12],$hqThumb); + preg_match("/noMicroData\=([0-1]{1})/",$match[12],$microData); + + $thumb="normal"; + if ($lyteSettings['hidef']==="1") { + $thumb="highres"; + } else if (!empty($hqThumb)) { + if ($hqThumb[0]==="hqThumb=1") { + $thumb="highres"; + } + } + + $noMicroData="0"; + if (!empty($microData)) { + if ($microData[0]==="noMicroData=1") { + $noMicroData="1"; + } + } + + $qsa=""; + if (!empty($showinfo[0])) { + $qsa="&".$showinfo[0]; + $titleClass=" hidden"; + } else { + $titleClass=""; + } + if (!empty($start[0])) $qsa.="&".$start[0]; + if (!empty($jsapi[0])) $qsa.="&".$jsapi[0]."&origin=".$origin; + + if (!empty($qsa)) { + $esc_arr=array("&" => "\&", "?" => "\?", "=" => "\="); + $qsaClass=" qsa_".strtr($qsa,$esc_arr); + } else { + $qsaClass=""; + } + + if (!empty($sMatch)) { + $newSize=(int) $sMatch[1]; + $newPos=(int) $lyteSettings['selSize']+$newSize; + if ($newPos<0) { + $newPos=0; + } else if ($newPos > count($lyteSettings['sizeArray'])-1) { + $newPos=count($lyteSettings['sizeArray'])-1; + } + $lyteSettings[2]=$lyteSettings['sizeArray'][$newPos]['w']; + $lyteSettings[3]=$lyteSettings['sizeArray'][$newPos]['h']; + } else { + $lyteSettings[2]=$lyteSettings['sizeArray'][$lyteSettings['selSize']]['w']; + $lyteSettings[3]=$lyteSettings['sizeArray'][$lyteSettings['selSize']]['h']; + } + + if ($match[1]!=="a") { + $divHeight=$lyteSettings[3]; + $audioClass=""; + $audio=false; + } else { + $audio=true; + $audioClass=" lyte-audio"; + $divHeight=38; + } + + $NSimgHeight=$divHeight-20; + + if ($match[11]!="") { + $plClass=" playlist"; + $vid=$match[11]; + switch ($lyteSettings['links']) { + case "0": + $noscript_post="<br />".__("Watch this playlist on YouTube","wp-youtube-lyte"); + $noscript="<noscript><a href=\"".$lyteSettings['scheme']."://youtube.com/playlist?list=".$vid."\">".$noscript_post."</a></noscript>"; + $lytelinks_txt=""; + break; + default: + $noscript=""; + $lytelinks_txt="<div class=\"lL\" style=\"max-width:100%;width:".$lyteSettings[2]."px;".$lyteSettings['pos']."\">".__("Watch this playlist","wp-youtube-lyte")." <a href=\"".$lyteSettings['scheme']."://www.youtube.com/playlist?list=".$vid."\">".__("on YouTube","wp-youtube-lyte")."</a></div>"; + } + } else if ($match[9]!="") { + $plClass=""; + $vid=$match[9]; + switch ($lyteSettings['links']) { + case "0": + $noscript_post="<br />".__("Watch this video on YouTube","wp-youtube-lyte"); + $lytelinks_txt="<div class=\"lL\" style=\"max-width:100%;width:".$lyteSettings[2]."px;".$lyteSettings['pos']."\"></div>"; + break; + default: + $noscript_post=""; + $lytelinks_txt="<div class=\"lL\" style=\"max-width:100%;width:".$lyteSettings[2]."px;".$lyteSettings['pos']."\">".__("Watch this video","wp-youtube-lyte")." <a href=\"".$lyteSettings['scheme']."://youtu.be/".$vid."\">".__("on YouTube","wp-youtube-lyte")."</a>.</div>"; + } + $thumbUrl = $lyteSettings['scheme']."://i.ytimg.com/vi/".$vid."/0.jpg"; + if (get_option('lyte_local_thumb','0') === '1') { + $thumbUrl = plugins_url( 'lyteThumbs.php?origThumbUrl=' . urlencode($thumbUrl) , __FILE__ ); + } + $noscript="<noscript><a href=\"".$lyteSettings['scheme']."://youtu.be/".$vid."\"><img src=\"" . $thumbUrl . "\" alt=\"\" width=\"".$lyteSettings[2]."\" height=\"".$NSimgHeight."\" />".$noscript_post."</a></noscript>"; + } + + // add disclaimer to lytelinks + $disclaimer = wp_kses_data( get_option( 'lyte_disclaimer', '') ); + if ( !empty( $disclaimer ) ) { + $disclaimer = '<span class="lyte_disclaimer">' . $disclaimer . '</span>'; + } + + if ( $disclaimer && empty( $lytelinks_txt ) ) { + $lytelinks_txt = "<div class=\"lL\" style=\"max-width:100%;width:".$lyteSettings[2]."px;".$lyteSettings['pos']."\">".$diclaimer."</div>"; + } else if ( $disclaimer ) { + $lytelinks_txt = str_replace('</div>','<br/>'.$disclaimer.'</div>',$lytelinks_txt); + } + + // fetch data from YT api (v2 or v3) + $isPlaylist=false; + if ($plClass===" playlist") { + $isPlaylist=true; + } + $cachekey = '_lyte_' . $vid; + $yt_resp_array=lyte_get_YT_resp($vid,$isPlaylist,$cachekey); + + // If there was a result from youtube or from cache, use it + if ( $yt_resp_array ) { + if (is_array($yt_resp_array)) { + if ($isPlaylist!==true) { + // captions, thanks to Benetech + $captionsMeta=""; + $doCaptions=true; + + /** API: filter hook to disable captions */ + $doCaptions = apply_filters( 'lyte_docaptions', $doCaptions ); + + if(($lyteSettings['microdata'] === "1")&&($noMicroData !== "1" )&&($doCaptions === true)) { + if (array_key_exists('captions_data',$yt_resp_array)) { + if ($yt_resp_array["captions_data"]=="true") { + $captionsMeta="<meta itemprop=\"accessibilityFeature\" content=\"captions\" />"; + $forceCaptionsUpdate=false; + } else { + $forceCaptionsUpdate=true; + } + } else { + $forceCaptionsUpdate=true; + $yt_resp_array["captions_data"]=false; + } + + if ($forceCaptionsUpdate===true) { + $captionsMeta=""; + $threshold = 30; + if (array_key_exists('captions_timestamp',$yt_resp_array)) { + $cache_timestamp = $yt_resp_array["captions_timestamp"]; + $interval = (strtotime("now") - $cache_timestamp)/60/60/24; + } else { + $cache_timestamp = false; + $interval = $threshold+1; + } + + if(!is_int($cache_timestamp) || ($interval > $threshold && !is_null( $yt_resp_array["captions_data"]))) { + $yt_resp_array['captions_timestamp'] = strtotime("now"); + wp_schedule_single_event(strtotime("now") + 60*60, 'schedule_captions_lookup', array($postID, $cachekey, $vid)); + $yt_resp_precache=json_encode($yt_resp_array); + $toCache=base64_encode(gzcompress($yt_resp_precache)); + update_post_meta($postID, $cachekey, $toCache); + } + } + } + } + $thumbUrl=""; + if (($thumb==="highres") && (!empty($yt_resp_array["HQthumbUrl"]))){ + $thumbUrl=$yt_resp_array["HQthumbUrl"]; + } else { + if (!empty($yt_resp_array["thumbUrl"])) { + $thumbUrl=$yt_resp_array["thumbUrl"]; + } else { + $thumbUrl="//i.ytimg.com/vi/".$vid."/hqdefault.jpg"; + } + } + } else { + // no useable result from youtube, fallback on video thumbnail (doesn't work on playlist) + $thumbUrl = "//i.ytimg.com/vi/".$vid."/hqdefault.jpg"; + } + } else { + // same fallback + $thumbUrl = "//i.ytimg.com/vi/".$vid."/hqdefault.jpg"; + } + + // do we have to serve the thumbnail from local cache? + if (get_option('lyte_local_thumb','0') === '1') { + $thumbUrl = plugins_url( 'lyteThumbs.php?origThumbUrl=' . urlencode($thumbUrl) , __FILE__ ); + } + + /** API: filter hook to override thumbnail URL */ + $thumbUrl = apply_filters( 'lyte_match_thumburl', $thumbUrl, $vid ); + + if ($audio===true) { + $wrapper="<div class=\"lyte-wrapper-audio\" style=\"width:".$lyteSettings[2]."px;max-width:100%;overflow:hidden;height:38px;".$lyteSettings['pos']."\">"; + } else { + $wrapper="<div class=\"lyte-wrapper".$lyteSettings['ratioClass']."\" style=\"width:".$lyteSettings[2]."px;max-width: 100%;".$lyteSettings['pos']."\">"; + } + + if ($doExcerpt) { + $lytetemplate=""; + $templateType="excerpt"; + } elseif ($lyte_feed) { + $postURL = get_permalink( $postID ); + $textLink = ($lyteSettings['links']===0)? "" : "<br />".strip_tags($lytelinks_txt, '<a>')."<br />"; + $lytetemplate = "<a href=\"".$postURL."\"><img src=\"".$thumbUrl."\" alt=\"YouTube Video\"></a>".$textLink; + $templateType="feed"; + } elseif (($audio !== true) && ( $plClass !== " playlist") && (($lyteSettings['microdata'] === "1")&&($noMicroData !== "1" ))) { + $lytetemplate = $wrapper."<div class=\"lyMe".$audioClass.$hidefClass.$plClass.$qsaClass."\" id=\"WYL_".$vid."\" itemprop=\"video\" itemscope itemtype=\"https://schema.org/VideoObject\"><meta itemprop=\"thumbnailUrl\" content=\"".$thumbUrl."\" /><meta itemprop=\"embedURL\" content=\"https://www.youtube.com/embed/".$vid."\" /><meta itemprop=\"uploadDate\" content=\"".$yt_resp_array["dateField"]."\" />".$captionsMeta."<div id=\"lyte_".$vid."\" data-src=\"".$thumbUrl."\" class=\"pL\"><div class=\"tC".$titleClass."\"><div class=\"tT\" itemprop=\"name\">".$yt_resp_array["title"]."</div></div><div class=\"play\"></div><div class=\"ctrl\"><div class=\"Lctrl\"></div><div class=\"Rctrl\"></div></div></div>".$noscript."<meta itemprop=\"description\" content=\"".$yt_resp_array["description"]."\"></div></div>".$lytelinks_txt; + $templateType="postMicrodata"; + } else { + $lytetemplate = $wrapper."<div class=\"lyMe".$audioClass.$hidefClass.$plClass.$qsaClass."\" id=\"WYL_".$vid."\"><div id=\"lyte_".$vid."\" data-src=\"".$thumbUrl."\" class=\"pL\">"; + + if (isset($yt_resp_array) && !empty($yt_resp_array) && !empty($yt_resp_array["title"])) { + $lytetemplate .= "<div class=\"tC".$titleClass."\"><div class=\"tT\">".$yt_resp_array['title']."</div></div>"; + } + + $lytetemplate .= "<div class=\"play\"></div><div class=\"ctrl\"><div class=\"Lctrl\"></div><div class=\"Rctrl\"></div></div></div>".$noscript."</div></div>".$lytelinks_txt; + $templateType="post"; + } + + /** API: filter hook to parse template before being applied */ + $lytetemplate = str_replace('$','$',$lytetemplate); + $lytetemplate = apply_filters( 'lyte_match_postparse_template',$lytetemplate,$templateType ); + $the_content = preg_replace($lytes_regexp, $lytetemplate, $the_content, 1); + } + + // update lyte_cache_index + if ((is_array($toCache_index))&&(!empty($toCache_index))) { + $lyte_cache=json_decode(get_option('lyte_cache_index'),true); + $lyte_cache[$postID]=$toCache_index; + update_option('lyte_cache_index',json_encode($lyte_cache)); + } + + if (!$lyte_feed) { + lyte_initer(); + } + } + + /** API: filter hook to postparse the_content before returning */ + $the_content = apply_filters( 'lyte_content_postparse',$the_content ); + + return $the_content; +} + +function captions_lookup($postID, $cachekey, $vid) { + // captions lookup at YouTube via a11ymetadata.org + $response = wp_remote_request("http://api.a11ymetadata.org/captions/youtubeid=".$vid."/youtube"); + + if(!is_wp_error($response)) { + $rawJson = wp_remote_retrieve_body($response); + $decodeJson = json_decode($rawJson, true); + + $yt_resp = get_post_meta($postID, $cachekey, true); + + if (!empty($yt_resp)) { + $yt_resp = gzuncompress(base64_decode($yt_resp)); + if($yt_resp) { + $yt_resp_array=json_decode($yt_resp,true); + + if ($decodeJson['status'] == 'success' && $decodeJson['data']['captions'] == '1') { + $yt_resp_array['captions_data'] = true; + } else { + $yt_resp_array['captions_data'] = false; + } + + $yt_resp_array['captions_timestamp'] = strtotime("now"); + $yt_resp_precache=json_encode($yt_resp_array); + $toCache=base64_encode(gzcompress($yt_resp_precache)); + update_post_meta($postID, $cachekey, $toCache); + } + } + } +} + +function lyte_get_YT_resp($vid,$playlist=false,$cachekey,$apiTestKey="",$isWidget=false) { + /** logic to get video info from cache or get it from YouTube and set it */ + global $postID, $cachekey, $toCache_index; + + $_thisLyte = array(); + $yt_error = array(); + + if ( $postID && empty($apiTestKey) && !$isWidget ) { + $cache_resp = get_post_meta( $postID, $cachekey, true ); + if (!empty($cache_resp)) { + $_thisLyte = json_decode(gzuncompress(base64_decode($cache_resp)),1); + // make sure there are not old APIv2 full responses in cache + if (array_key_exists('entry', $_thisLyte)) { + if ($_thisLyte['entry']['xmlns$yt']==="http://gdata.youtube.com/schemas/2007") { + $_thisLyte = array(); + } + } + } + } else if ($isWidget) { + $cache_resp = get_option("lyte_widget_cache"); + if (!empty($cache_resp)) { + $widget_cache = json_decode(gzuncompress(base64_decode($cache_resp)),1); + $_thisLyte = $widget_cache[$vid]; + } + } + + if ( empty( $_thisLyte ) ) { + // get info from youtube + // first get yt api key + $lyte_yt_api_key = get_option('lyte_yt_api_key',''); + $lyte_yt_api_key = apply_filters('lyte_filter_yt_api_key', $lyte_yt_api_key); + if (!empty($apiTestKey)) { + $lyte_yt_api_key=$apiTestKey; + } + + if (($lyte_yt_api_key==="none") || (empty($lyte_yt_api_key))) { + $_thisLyte['title']=""; + if ($playlist) { + $_thisLyte['thumbUrl']=""; + $_thisLyte['HQthumbUrl']=""; + } else { + $_thisLyte['thumbUrl']="//i.ytimg.com/vi/".$vid."/hqdefault.jpg"; + $_thisLyte['HQthumbUrl']="//i.ytimg.com/vi/".$vid."/maxresdefault.jpg"; + } + $_thisLyte['dateField']=""; + $_thisLyte['duration']=""; + $_thisLyte['description']=""; + $_thisLyte['captions_data']="false"; + $_thisLyte['captions_timestamp']=strtotime("now"); + return $_thisLyte; + } else { + // v3, feeling somewhat lonely now v2 has gently been put to sleep + $yt_api_base = "https://www.googleapis.com/youtube/v3/"; + + if ($playlist) { + $yt_api_target = "playlists?part=snippet%2C+id&id=".$vid."&key=".$lyte_yt_api_key; + } else { + $yt_api_target = "videos?part=id%2C+snippet%2C+contentDetails&id=".$vid."&key=".$lyte_yt_api_key; + } + } + + $yt_api_url = $yt_api_base.$yt_api_target; + $yt_resp = wp_remote_get($yt_api_url); + + // check if we got through + if ( is_wp_error($yt_resp) ) { + $yt_error['code']=408; + $yt_error['reason']=$yt_resp->get_error_message(); + $yt_error['timestamp']=strtotime("now"); + if (!empty($apiTestKey)) { + return $yt_error; + } + } else { + $yt_resp_array = (array) json_decode(wp_remote_retrieve_body($yt_resp),true); + if(is_array($yt_resp_array)) { + // extract relevant data + // v3 + if (in_array(wp_remote_retrieve_response_code($yt_resp),array(400,403,404))) { + $yt_error['code']=wp_remote_retrieve_response_code($yt_resp); + $yt_error['reason']=$yt_resp_array['error']['errors'][0]['reason']; + $yt_error['timestamp']=strtotime("now"); + if (empty($apiTestKey)) { + update_option("lyte_api_error",json_encode($yt_error)); + } else { + return $yt_error; + } + } else { + if ($playlist) { + $_thisLyte['title']="Playlist: ".esc_attr(sanitize_text_field(@$yt_resp_array['items'][0]['snippet']['title'])); + $_thisLyte['thumbUrl']=esc_url(@$yt_resp_array['items'][0]['snippet']['thumbnails']['high']['url']); + $_thisLyte['HQthumbUrl']=esc_url(@$yt_resp_array['items'][0]['snippet']['thumbnails']['maxres']['url']); + $_thisLyte['dateField']=sanitize_text_field(@$yt_resp_array['items'][0]['snippet']['publishedAt']); + $_thisLyte['duration']=""; + $_thisLyte['description']=esc_attr(sanitize_text_field(@$yt_resp_array['items'][0]['snippet']['description'])); + $_thisLyte['captions_data']="false"; + $_thisLyte['captions_timestamp'] = ""; + } else { + $_thisLyte['title']=esc_attr(sanitize_text_field(@$yt_resp_array['items'][0]['snippet']['title'])); + $_thisLyte['thumbUrl']=esc_url(@$yt_resp_array['items'][0]['snippet']['thumbnails']['high']['url']); + $_thisLyte['HQthumbUrl']=esc_url(@$yt_resp_array['items'][0]['snippet']['thumbnails']['maxres']['url']); + $_thisLyte['dateField']=sanitize_text_field(@$yt_resp_array['items'][0]['snippet']['publishedAt']); + $_thisLyte['duration']=sanitize_text_field(@$yt_resp_array['items'][0]['contentDetails']['duration']); + $_thisLyte['description']=esc_attr(sanitize_text_field(@$yt_resp_array['items'][0]['snippet']['description'])); + $_thisLyte['captions_data']=sanitize_text_field(@$yt_resp_array['items'][0]['contentDetails']['caption']); + $_thisLyte['captions_timestamp'] = strtotime("now"); + } + } + + // try to cache the result + if ( (($postID) || ($isWidget)) && !empty($_thisLyte) && empty($apiTestKey) ) { + $_thisLyte['lyte_date_added']=time(); + + if ( $postID && !$isWidget ) { + $yt_resp_precache=json_encode($_thisLyte); + + // then gzip + base64 (to limit amount of data + solve problems with wordpress removing slashes) + $yt_resp_precache=base64_encode(gzcompress($yt_resp_precache)); + + // and do the actual caching + $toCache = ( $yt_resp_precache ) ? $yt_resp_precache : '{{unknown}}'; + + update_post_meta( $postID, $cachekey, $toCache ); + // and finally add new cache-entry to toCache_index which will be added to lyte_cache_index pref + $toCache_index[]=$cachekey; + } else if ($isWidget) { + $widget_cache[$vid]=$_thisLyte; + update_option("lyte_widget_cache",base64_encode(gzcompress(json_encode($widget_cache)))); + } + } + } + } + } + foreach (array("title","thumbUrl","HQthumbUrl","dateField","duration","description","captions_data","captions_timestamp") as $key) { + if (!array_key_exists($key,$_thisLyte)) { + $_thisLyte[$key]=""; + } + } + return $_thisLyte; +} + +/* only add js/css once and only if needed */ +function lyte_initer() { + global $lynited; + if (!$lynited) { + $lynited=true; + add_action('wp_footer', 'lyte_init'); + } +} + +/* actual initialization */ +function lyte_init() { + global $lyteSettings; + $lyte_css = ".lyte-wrapper-audio div, .lyte-wrapper div {margin:0px; overflow:hidden;} .lyte,.lyMe{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;background-color:#777;} .fourthree .lyMe, .fourthree .lyte {padding-bottom:75%;} .lidget{margin-bottom:5px;} .lidget .lyte, .widget .lyMe {padding-bottom:0!important;height:100%!important;} .lyte-wrapper-audio .lyte{height:38px!important;overflow:hidden;padding:0!important} .lyMe iframe, .lyte iframe,.lyte .pL{position:absolute !important;top:0;left:0;width:100%;height:100%!important;background:no-repeat scroll center #000;background-size:cover;cursor:pointer} .tC{left:0;position:absolute;top:0;width:100%} .tC{background-image:linear-gradient(to bottom,rgba(0,0,0,0.6),rgba(0,0,0,0))} .tT{color:#FFF;font-family:Roboto,sans-serif;font-size:16px;height:auto;text-align:left;padding:5px 10px 50px 10px} .play{background:no-repeat scroll 0 0 transparent;width:88px;height:63px;position:absolute;left:43%;left:calc(50% - 44px);left:-webkit-calc(50% - 44px);top:38%;top:calc(50% - 31px);top:-webkit-calc(50% - 31px);} .widget .play {top:30%;top:calc(45% - 31px);top:-webkit-calc(45% - 31px);transform:scale(0.6);-webkit-transform:scale(0.6);-ms-transform:scale(0.6);} .lyte:hover .play{background-position:0 -65px;} .lyte-audio .pL{max-height:38px!important} .lyte-audio iframe{height:438px!important} .ctrl{background:repeat scroll 0 -220px rgba(0,0,0,0.3);width:100%;height:40px;bottom:0px;left:0;position:absolute;} .lyte-wrapper .ctrl{display:none}.Lctrl{background:no-repeat scroll 0 -137px transparent;width:158px;height:40px;bottom:0;left:0;position:absolute} .Rctrl{background:no-repeat scroll -42px -179px transparent;width:117px;height:40px;bottom:0;right:0;position:absolute;padding-right:10px;}.lyte-audio .play{display:none}.lyte-audio .ctrl{background-color:rgba(0,0,0,1)}.hidden{display:none}"; + + // by default show lyte vid on mobile (requiring user clicking play two times) + // but can be overruled by this filter + // also "do lyte mobile" when option to cache thumbnails is on to ensure privacy (gdpr) + $mobLyte = apply_filters( 'lyte_do_mobile', false ); + if ( $mobLyte || get_option( 'lyte_local_thumb', 0 ) ) { + $mobJS = "var mOs=null;"; + } else { + $mobJS = "var mOs=navigator.userAgent.match(/(iphone|ipad|ipod|android)/i);"; + } + + /** API: filter hook to change css */ + $lyte_css = apply_filters( 'lyte_css', $lyte_css); + + echo "<script type=\"text/javascript\">var bU='".$lyteSettings['path']."';".$mobJS."style = document.createElement('style');style.type = 'text/css';rules = document.createTextNode(\"".$lyte_css."\" );if(style.styleSheet) { style.styleSheet.cssText = rules.nodeValue;} else {style.appendChild(rules);}document.getElementsByTagName('head')[0].appendChild(style);</script>"; + echo "<script type=\"text/javascript\" async src=\"".$lyteSettings['path'].$lyteSettings['file']."\"></script>"; +} + +/** override default wp_trim_excerpt to have lyte_parse remove the httpv-links */ +function lyte_trim_excerpt($text) { + global $post; + $raw_excerpt = $text; + if ( '' == $text ) { + $text = get_the_content(''); + $text = lyte_parse($text, true); + $text = strip_shortcodes( $text ); + $text = apply_filters('the_content', $text); + $text = str_replace(']]>', ']]>', $text); + $excerpt_length = apply_filters('excerpt_length', 55); + $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]'); + if (function_exists('wp_trim_words')) { + $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); + } else { + $length = $excerpt_length*6; + $text = substr( strip_tags(trim(preg_replace('/\s+/', ' ', $text))), 0, $length ); + $text .= $excerpt_more; + } + } + return apply_filters('wp_trim_excerpt', $text, $raw_excerpt); +} + +/** Lyte shortcode */ +function shortcode_lyte($atts) { + extract(shortcode_atts(array( + "id" => '', + "audio" => '', + "playlist" => '', + "start" => '', + "showinfo" => '', + "stepsize" => '', + "hqthumb" => '', + ), $atts)); + + $qs = ''; + + if ($audio) {$proto="httpa";} else {$proto="httpv";} + if ($start !== '') { $qs .= "&start=".$start; } + if ($showinfo === "false") { $qs .= "&showinfo=0"; } + if ($hqthumb) { $qs .= "&hqThumb=1"; } + if ($stepsize) { $qs .= "#stepSize=".$stepsize; } + if ($playlist) {$action="playlist?list=";} else {$action="watch?v=";} + + return lyte_parse($proto.'://www.youtube.com/'.$action.$id.$qs); +} + +/** update functions */ +/** upgrade, so lyte should not be greedy */ +function lyte_not_greedy() { + update_option( "lyte_greedy", "0" ); +} + +/** function to flush YT responses from cache */ +function lyte_rm_cache() { + // remove thumbnail cache + if (get_option('lyte_local_thumb','0') === '1') { + if ( ! defined( 'LYTE_CACHE_DIR' ) ) { + define( 'LYTE_CACHE_CHILD_DIR', 'cache/lyteThumbs' ); + define( 'LYTE_CACHE_DIR', WP_CONTENT_DIR .'/'. LYTE_CACHE_CHILD_DIR ); + } + array_map('unlink', glob(LYTE_CACHE_DIR . "/*")); + } + + // and remove cached YT data from postmeta + try { + ini_set('max_execution_time',90); // give PHP some more time for this, post-meta can be sloooooow + + // cache in post_meta, for posts + $lyte_posts = json_decode(get_option("lyte_cache_index"),true); + $lyteCacheIterator = 0; + $lytePurgeThreshold = 500; + $returnCode = "OK"; + if (is_array($lyte_posts)){ + foreach ($lyte_posts as $postID => $lyte_post) { + foreach ($lyte_post as $cachekey) { + delete_post_meta($postID, $cachekey); + } + unset ($lyte_posts[$postID]); + $lyteCacheIterator++; + if ($lyteCacheIterator > ($lytePurgeThreshold-1)) { + $returnCode = "PART"; + break; + } + } + update_option("lyte_cache_index",json_encode($lyte_posts)); + } + + // and the widget cache which isn't in post_meta + update_option('lyte_widget_cache',''); + + return $returnCode; + } catch(Exception $e) { + return $e->getMessage(); + } +} + +/** function to call from within themes */ +/* use with e.g. : <?php if(function_exists('lyte_preparse')) { echo lyte_preparse($videoId); } ?> */ +function lyte_preparse($videoId) { + return lyte_parse('httpv://www.youtube.com/watch?v='.$videoId); +} + +function lyte_add_action_link($links) { + $links[]='<a href="' . admin_url( 'options-general.php?page=lyte_settings_page' ) . '">' . __('Settings') . '</a>'; + return $links; +} + +/** is_amp, but I shouldn't have to do this, should I? */ +if (!function_exists("is_amp")) { + function is_amp() { + if ((strpos($_SERVER['REQUEST_URI'],'?amp')!==false) || (strpos($_SERVER['REQUEST_URI'],'/amp/')!==false)) { + return true; + } else { + return false; + } + } +} + +/** hooking it all up to wordpress */ +if ( is_admin() ) { + require_once(dirname(__FILE__).'/options.php'); + add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'lyte_add_action_link' ); +} else { + add_filter('the_content', 'lyte_parse', 4); + add_shortcode("lyte", "shortcode_lyte"); + remove_filter('get_the_excerpt', 'wp_trim_excerpt'); + add_filter('get_the_excerpt', 'lyte_trim_excerpt'); + add_action('schedule_captions_lookup', 'captions_lookup', 1, 3); + + /** API: action hook to allow extra actions or filters to be added */ + do_action("lyte_actionsfilters"); +} +?>